From 381897d28ab2bb2c35caf11bff7f805765564246 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 8 Oct 2024 11:58:39 +0000 Subject: [PATCH] Update to comunica/comunica#02bde397d206f1f5a523643a6a604c89e792e2f9. --- .../engines/query-sparql-rdfjs-lite/comunica-browser.js.map | 2 +- .../latest/engines/query-sparql-rdfjs/comunica-browser.js.map | 2 +- versions/latest/engines/query-sparql/comunica-browser.js | 2 +- versions/latest/engines/query-sparql/comunica-browser.js.map | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/versions/latest/engines/query-sparql-rdfjs-lite/comunica-browser.js.map b/versions/latest/engines/query-sparql-rdfjs-lite/comunica-browser.js.map index 489b4b7..9a37813 100644 --- a/versions/latest/engines/query-sparql-rdfjs-lite/comunica-browser.js.map +++ b/versions/latest/engines/query-sparql-rdfjs-lite/comunica-browser.js.map @@ -1 +1 @@ -{"version":3,"file":"comunica-browser.js","mappings":"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,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,IAAI,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,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,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG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Ef,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IA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","sources":["webpack://Comunica/../../node_modules/asyncjoin/index.js","webpack://Comunica/../../node_modules/asyncjoin/join/DynamicNestedLoopJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/HashJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/NestedLoopJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/SymmetricHashJoin.js","webpack://Comunica/../../node_modules/asyncjoin/util/MergeIterator.js","webpack://Comunica/./engine-default.js","webpack://Comunica/QueryEngine.ts","webpack://Comunica/index-browser.ts","webpack://Comunica/ActorAbstractPath.ts","webpack://Comunica/PathVariableObjectIterator.ts","webpack://Comunica/index.ts","webpack://Comunica/ActorContextPreprocessConvertShortcuts.ts","webpack://Comunica/ActorContextPreprocessQuerySourceIdentify.ts","webpack://Comunica/ActorContextPreprocessQuerySourceSkolemize.ts","webpack://Comunica/QuerySourceSkolemized.ts","webpack://Comunica/utils.ts","webpack://Comunica/ActorContextPreprocessSetDefaults.ts","webpack://Comunica/ActorContextPreprocessSourceToDestination.ts","webpack://Comunica/ActorHashBindingsSha1.ts","webpack://Comunica/ActorHashQuadsSha1.ts","webpack://Comunica/ActorInitQuery-browser.ts","webpack://Comunica/ActorInitQueryBase.ts","webpack://Comunica/QueryEngineBase.ts","webpack://Comunica/ActorOptimizeQueryOperationAssignSourcesExhaustive.ts","webpack://Comunica/ActorOptimizeQueryOperationBgpToJoin.ts","webpack://Comunica/ActorOptimizeQueryOperationConstructDistinct.ts","webpack://Comunica/ActorOptimizeQueryOperationDescribeToConstructsSubject.ts","webpack://Comunica/ActorOptimizeQueryOperationFilterPushdown.ts","webpack://Comunica/ActorOptimizeQueryOperationGroupSources.ts","webpack://Comunica/ActorOptimizeQueryOperationJoinBgp.ts","webpack://Comunica/ActorOptimizeQueryOperationJoinConnected.ts","webpack://Comunica/ActorOptimizeQueryOperationPruneEmptySourceOperations.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteAdd.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteCopy.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteMove.ts","webpack://Comunica/ActorQueryOperationAsk.ts","webpack://Comunica/ActorQueryOperationBgpJoin.ts","webpack://Comunica/ActorQueryOperationConstruct.ts","webpack://Comunica/BindingsToQuadsIterator.ts","webpack://Comunica/ActorQueryOperationDistinctHash.ts","webpack://Comunica/ActorQueryOperationExtend.ts","webpack://Comunica/ActorQueryOperationFilter.ts","webpack://Comunica/ActorQueryOperationFromQuad.ts","webpack://Comunica/ActorQueryOperationGroup.ts","webpack://Comunica/GroupsState.ts","webpack://Comunica/ActorQueryOperationJoin.ts","webpack://Comunica/ActorQueryOperationLeftJoin.ts","webpack://Comunica/ActorQueryOperationMinus.ts","webpack://Comunica/ActorQueryOperationNop.ts","webpack://Comunica/ActorQueryOperationOrderBy.ts","webpack://Comunica/SortIterator.ts","webpack://Comunica/ActorQueryOperationPathAlt.ts","webpack://Comunica/ActorQueryOperationPathInv.ts","webpack://Comunica/ActorQueryOperationPathLink.ts","webpack://Comunica/ActorQueryOperationPathNps.ts","webpack://Comunica/ActorQueryOperationPathOneOrMore.ts","webpack://Comunica/ActorQueryOperationPathSeq.ts","webpack://Comunica/ActorQueryOperationPathZeroOrMore.ts","webpack://Comunica/ActorQueryOperationPathZeroOrOne.ts","webpack://Comunica/ActorQueryOperationProject.ts","webpack://Comunica/ActorQueryOperationReducedHash.ts","webpack://Comunica/ActorQueryOperationService.ts","webpack://Comunica/ActorQueryOperationSlice.ts","webpack://Comunica/ActorQueryOperationSource.ts","webpack://Comunica/ActorQueryOperationUnion.ts","webpack://Comunica/ActorQueryOperationClear.ts","webpack://Comunica/ActorQueryOperationUpdateCompositeUpdate.ts","webpack://Comunica/ActorQueryOperationCreate.ts","webpack://Comunica/ActorQueryOperationUpdateDeleteInsert.ts","webpack://Comunica/ActorQueryOperationDrop.ts","webpack://Comunica/ActorQueryOperationLoad.ts","webpack://Comunica/ActorQueryOperationValues.ts","webpack://Comunica/ActorQueryParseSparql.ts","webpack://Comunica/ActorQueryProcessSequential.ts","webpack://Comunica/ActorQuerySourceIdentifyRdfJs.ts","webpack://Comunica/QuerySourceRdfJs.ts","webpack://Comunica/ActorRdfJoinEntriesSortCardinality.ts","webpack://Comunica/ActorRdfJoinHash.ts","webpack://Comunica/ActorRdfJoinMultiBindSource.ts","webpack://Comunica/ActorRdfJoinMultiBind.ts","webpack://Comunica/ActorRdfJoinMultiEmpty.ts","webpack://Comunica/ActorRdfJoinMultiSmallestFilterBindings.ts","webpack://Comunica/ActorRdfJoinMultiSmallest.ts","webpack://Comunica/ActorRdfJoinNestedLoop.ts","webpack://Comunica/ActorRdfJoinNone.ts","webpack://Comunica/ActorRdfJoinSingle.ts","webpack://Comunica/ActorRdfJoinSymmetricHash.ts","webpack://Comunica/ActorRdfJoinMinusHashUndef.ts","webpack://Comunica/BindingsIndex.ts","webpack://Comunica/ActorRdfJoinMinusHash.ts","webpack://Comunica/ActorRdfJoinOptionalBind.ts","webpack://Comunica/ActorRdfJoinOptionalHash.ts","webpack://Comunica/BindingsIndexDef.ts","webpack://Comunica/BindingsIndexUndef.ts","webpack://Comunica/ActorRdfJoinOptionalNestedLoop.ts","webpack://Comunica/ActorRdfJoinSelectivityVariableCounting.ts","webpack://Comunica/ActorRdfMetadataAccumulateCanContainUndefs.ts","webpack://Comunica/ActorRdfMetadataAccumulateCardinality.ts","webpack://Comunica/ActorRdfMetadataAccumulatePageSize.ts","webpack://Comunica/ActorRdfMetadataAccumulateRequestTime.ts","webpack://Comunica/ActorRdfUpdateQuadsRdfJsStore.ts","webpack://Comunica/RdfJsQuadDestination.ts","webpack://Comunica/Bindings.ts","webpack://Comunica/BindingsFactory.ts","webpack://Comunica/bindingsToString.ts","webpack://Comunica/ActorContextPreprocess.ts","webpack://Comunica/ActorHashBindings.ts","webpack://Comunica/ActorHashQuads.ts","webpack://Comunica/ActorHttpInvalidate.ts","webpack://Comunica/ActorHttpInvalidateListenable.ts","webpack://Comunica/ActorInit.ts","webpack://Comunica/ActorOptimizeQueryOperation.ts","webpack://Comunica/ActorQueryOperation.ts","webpack://Comunica/ActorQueryOperationTyped.ts","webpack://Comunica/ActorQueryOperationTypedMediated.ts","webpack://Comunica/BusQueryOperation.ts","webpack://Comunica/ClosableIterator.ts","webpack://Comunica/ClosableTransformIterator.ts","webpack://Comunica/ActorQueryParse.ts","webpack://Comunica/ActorQueryProcess.ts","webpack://Comunica/ActorQuerySourceIdentify.ts","webpack://Comunica/Utils.ts","webpack://Comunica/ActorRdfJoinEntriesSort.ts","webpack://Comunica/ActorRdfJoinSelectivity.ts","webpack://Comunica/ActorRdfJoin.ts","webpack://Comunica/ChunkedIterator.ts","webpack://Comunica/instrumentIterator.ts","webpack://Comunica/ActorRdfMetadataAccumulate.ts","webpack://Comunica/ActorRdfUpdateQuads.ts","webpack://Comunica/ActorRdfUpdateQuadsDestination.ts","webpack://Comunica/Keys.ts","webpack://Comunica/ActionContext.ts","webpack://Comunica/ActionObserver.ts","webpack://Comunica/Actor.ts","webpack://Comunica/Bus.ts","webpack://Comunica/BusIndexed.ts","webpack://Comunica/ContextEntries.ts","webpack://Comunica/Mediator.ts","webpack://Comunica/BlankNodeBindingsScoped.ts","webpack://Comunica/BlankNodeScoped.ts","webpack://Comunica/Aggregator.ts","webpack://Comunica/Average.ts","webpack://Comunica/Count.ts","webpack://Comunica/GroupConcat.ts","webpack://Comunica/Max.ts","webpack://Comunica/Min.ts","webpack://Comunica/Sample.ts","webpack://Comunica/Sum.ts","webpack://Comunica/WildcardCountAggregator.ts","webpack://Comunica/AggregateEvaluator.ts","webpack://Comunica/AsyncAggregateEvaluator.ts","webpack://Comunica/AsyncEvaluator.ts","webpack://Comunica/SyncEvaluator.ts","webpack://Comunica/AsyncRecursiveEvaluator.ts","webpack://Comunica/BaseAggregateEvaluator.ts","webpack://Comunica/BaseExpressionEvaluator.ts","webpack://Comunica/SyncRecursiveEvaluator.ts","webpack://Comunica/Aggregate.ts","webpack://Comunica/AsyncExtension.ts","webpack://Comunica/Existence.ts","webpack://Comunica/Expressions.ts","webpack://Comunica/Named.ts","webpack://Comunica/Operator.ts","webpack://Comunica/SpecialOperator.ts","webpack://Comunica/SyncExtension.ts","webpack://Comunica/Term.ts","webpack://Comunica/Variable.ts","webpack://Comunica/Core.ts","webpack://Comunica/Helpers.ts","webpack://Comunica/NamedFunctions.ts","webpack://Comunica/OverloadTree.ts","webpack://Comunica/RegularFunctions.ts","webpack://Comunica/SpecialFunctions.ts","webpack://Comunica/XPathFunctions.ts","webpack://Comunica/AlgebraTransformer.ts","webpack://Comunica/TermTransformer.ts","webpack://Comunica/Consts.ts","webpack://Comunica/DateTimeHelpers.ts","webpack://Comunica/Errors.ts","webpack://Comunica/Ordering.ts","webpack://Comunica/Parsing.ts","webpack://Comunica/Serialization.ts","webpack://Comunica/SpecAlgos.ts","webpack://Comunica/TypeHandling.ts","webpack://Comunica/LoggerVoid.ts","webpack://Comunica/MediatorAll.ts","webpack://Comunica/MediatorCombinePipeline.ts","webpack://Comunica/MediatorCombineUnion.ts","webpack://Comunica/MediatorJoinCoefficientsFixed.ts","webpack://Comunica/MediatorNumber.ts","webpack://Comunica/MediatorRace.ts","webpack://Comunica/MetadataValidationState.ts","webpack://Comunica/Logger.ts","webpack://Comunica/../../node_modules/bignumber.js/bignumber.js","webpack://Comunica/../../node_modules/canonicalize/lib/canonicalize.js","webpack://Comunica/../../node_modules/event-emitter-promisify/dist/index.js","webpack://Comunica/../../node_modules/events/events.js","webpack://Comunica/../../node_modules/fast-deep-equal/es6/index.js","webpack://Comunica/../../node_modules/hash.js/lib/hash.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/common.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/hmac.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/ripemd.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/1.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/224.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/256.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/384.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/512.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/common.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/utils.js","webpack://Comunica/../../node_modules/immutable/dist/immutable.es.js","webpack://Comunica/../../node_modules/inherits/inherits_browser.js","webpack://Comunica/../../node_modules/minimalistic-assert/index.js","webpack://Comunica/../../node_modules/process/browser.js","webpack://Comunica/../../node_modules/rdf-data-factory/index.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/BlankNode.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/DataFactory.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/DefaultGraph.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Literal.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/NamedNode.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Quad.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Variable.js","webpack://Comunica/../../node_modules/rdf-isomorphic/index.js","webpack://Comunica/../../node_modules/rdf-isomorphic/lib/RdfIsomorphic.js","webpack://Comunica/../../node_modules/rdf-string/index.js","webpack://Comunica/../../node_modules/rdf-string/lib/TermUtil.js","webpack://Comunica/../../node_modules/rdf-terms/index.js","webpack://Comunica/../../node_modules/rdf-terms/lib/QuadTermUtil.js","webpack://Comunica/../../node_modules/rdf-terms/lib/TermUtil.js","webpack://Comunica/../../node_modules/relative-to-absolute-iri/index.js","webpack://Comunica/../../node_modules/relative-to-absolute-iri/lib/Resolve.js","webpack://Comunica/../../node_modules/spark-md5/spark-md5.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/sparqljs/lib/SparqlGenerator.js","webpack://Comunica/../../node_modules/sparqljs/lib/SparqlParser.js","webpack://Comunica/../../node_modules/sparqljs/lib/Wildcard.js","webpack://Comunica/../../node_modules/sparqljs/sparql.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/index.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/md5.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/native.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/nil.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/parse.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/regex.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/rng.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/sha1.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/stringify.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v1.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v3.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v35.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v4.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v5.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/validate.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/version.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/asynciterator/dist/asynciterator.js","webpack://Comunica/../../node_modules/asynciterator/dist/linkedlist.js","webpack://Comunica/../../node_modules/asynciterator/dist/taskscheduler.js","webpack://Comunica/../../node_modules/lru-cache/dist/commonjs/index.js","webpack://Comunica/webpack/bootstrap","webpack://Comunica/webpack/runtime/define property getters","webpack://Comunica/webpack/runtime/hasOwnProperty shorthand","webpack://Comunica/webpack/runtime/make namespace object","webpack://Comunica/webpack/startup"],"sourcesContent":["\nconst DynamicNestedLoopJoin = require('./join/DynamicNestedLoopJoin');\nconst HashJoin = require('./join/HashJoin');\nconst NestedLoopJoin = require('./join/NestedLoopJoin');\nconst SymmetricHashJoin = require('./join/SymmetricHashJoin');\n\nconst MergeStream = require('./util/MergeIterator');\n\nmodule.exports = {\n DynamicNestedLoopJoin,\n HashJoin,\n NestedLoopJoin,\n SymmetricHashJoin,\n\n MergeStream\n};","\nlet AsyncIterator = require('asynciterator');\nlet MultiTransformIterator = AsyncIterator.MultiTransformIterator;\nlet SimpleTransformIterator = AsyncIterator.SimpleTransformIterator;\n\n// Nested Loop Join, but the values of the inner loop are determined by each value of the outer loop, possibly reducing the number of necessary checks\nclass DynamicNestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, funRight, funJoin, options)\n {\n super(left, options);\n\n this.funRight = funRight;\n this.funJoin = funJoin;\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.funRight(leftItem), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = DynamicNestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Hash_join\nclass HashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.addedDataListener = false;\n this.left = left;\n this.right = right;\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.leftMap = new Map();\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.readable = false;\n\n this.left.on('end', allowJoining.bind(this));\n\n function allowJoining ()\n {\n this.readable = true;\n this.right.on('readable', () => this.readable = true);\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n this.on('newListener', (eventName) =>\n {\n if (eventName === 'data')\n {\n this._addDataListenerIfNeeded();\n }\n });\n if (this.left.readable)\n this._addDataListenerIfNeeded();\n this.left.on('readable', () => this._addDataListenerIfNeeded());\n }\n\n hasResults ()\n {\n return !this.right.ended || this.matchIdx < this.matches.length;\n }\n\n _end ()\n {\n super._end();\n this.left.destroy();\n this.right.destroy();\n }\n\n read ()\n {\n this._addDataListenerIfNeeded();\n\n while(true) {\n if (this.ended || !this.readable)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n this.match = this.right.read();\n\n if (this.match === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(this.match);\n this.matches = this.leftMap.get(hash) || [];\n this.matchIdx = 0;\n }\n }\n\n _addDataListenerIfNeeded() {\n if (!this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n }\n\n _addDataListener()\n {\n this.left.on('data', addItem.bind(this));\n\n function addItem(item)\n {\n let hash = this.funHash(item);\n if (!this.leftMap.has(hash))\n this.leftMap.set(hash, []);\n let arr = this.leftMap.get(hash);\n arr.push(item);\n }\n }\n}\n\nmodule.exports = HashJoin;\n","\nconst { MultiTransformIterator, SimpleTransformIterator, scheduleTask } = require('asynciterator');\n\n// https://en.wikipedia.org/wiki/Nested_loop_join\nclass NestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, right, funJoin, options)\n {\n super(left, options);\n\n this.right = right;\n this.funJoin = funJoin; // function that joins 2 elements or returns null if join is not possible\n this.on('end', () => this.right.close());\n }\n\n _end ()\n {\n super._end();\n scheduleTask(() => this.right.destroy());\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.right.clone(), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = NestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Symmetric_Hash_Join\nclass SymmetricHashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.left = left;\n this.right = right;\n\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.usedLeft = false;\n this.leftMap = new Map();\n this.rightMap = new Map();\n\n this.on('end', () => this._cleanup() );\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n if (this.left.readable || this.right.readable)\n {\n this.readable = true;\n }\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.left.on('readable', () => this.readable = true);\n this.right.on('readable', () => this.readable = true);\n\n // this needs to be here since it's possible the left/right streams only get ended after there are no more results left\n this.left.on ('end', () => { if (!this.hasResults()) this._end(); });\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n hasResults()\n {\n // The \"!!this.match\" condition was added as a workaround to race\n // conditions and/or duplicate \"end\" events that may lead to premature\n // cleanups of the \"this.matches\" array.\n // See https://github.com/joachimvh/asyncjoin/issues/7\n return !this.left.ended || !this.right.ended || (!!this.matches && this.matchIdx < this.matches.length);\n }\n\n _cleanup ()\n {\n // motivate garbage collector to remove these\n this.leftMap = null;\n this.rightMap = null;\n this.matches = null;\n }\n\n _end ()\n {\n super._end();\n this.left.destroy();\n this.right.destroy();\n }\n\n read ()\n {\n while(true){\n if (this.ended)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.usedLeft ? this.funJoin(this.match, item) : this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n let item = null;\n // try both streams if the first one has no value\n for (let i = 0; i < 2; ++i)\n {\n item = this.usedLeft ? this.right.read() : this.left.read();\n this.usedLeft = !this.usedLeft; // try other stream next time\n\n // found a result, no need to check the other stream this run\n if (item !== null)\n break;\n }\n\n if (this.done || item === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(item);\n\n if (this.usedLeft && this.right.done) {\n this.leftMap = null;\n } else if (this.left.done) {\n this.rightMap = null;\n } else {\n let map = this.usedLeft ? this.leftMap : this.rightMap;\n if (!map.has(hash))\n map.set(hash, []);\n let arr = map.get(hash);\n arr.push(item);\n }\n\n this.match = item;\n this.matches = (this.usedLeft ? this.rightMap : this.leftMap).get(hash) || [];\n this.matchIdx = 0;\n }\n }\n}\n\nmodule.exports = SymmetricHashJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// merges the contents of multiple streams\nclass MergeIterator extends AsyncIterator\n{\n constructor (streams)\n {\n super();\n \n if (!Array.isArray(streams))\n streams = Array.prototype.slice.call(arguments);\n \n this.streams = streams;\n \n for (let stream of streams)\n {\n stream.on('readable', () => this.emit('readable'));\n stream.on('end', () => this._removeStream(stream));\n }\n \n if (this.streams.length === 0)\n this.close();\n \n this.idx = this.streams.length-1;\n }\n \n _removeStream (stream)\n {\n let idx = this.streams.indexOf(stream);\n if (idx < 0)\n return;\n \n this.streams.splice(idx, 1);\n if (this.idx >= this.streams.length)\n --this.idx;\n \n if (this.streams.length === 0)\n this._end();\n }\n \n close ()\n {\n super.close();\n for (let stream of this.streams)\n stream.close();\n }\n \n read ()\n {\n for (let attempts = 0; attempts < this.streams.length; ++attempts)\n {\n this.idx = (this.idx + 1) % this.streams.length;\n let item = this.streams[this.idx].read();\n if (item !== null)\n return item;\n }\n \n return null;\n }\n}\n\nmodule.exports = MergeIterator;","module.exports = function(variables) {\nfunction getVariableValue(name) {\n if (!variables || !(name in variables)) {\n throw new Error('Undefined variable: ' + name);\n }\n return variables[name];\n}\nconst df_471_1 = new (require('@comunica/logger-void').LoggerVoid)();\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-init/^3.0.0/components/ActorInit.jsonld#ActorInit_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-context-preprocess/^3.0.0/components/ActorContextPreprocess.jsonld#ActorContextPreprocess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-bindings/^3.0.0/components/ActorHashBindings.jsonld#ActorHashBindings_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-quads/^3.0.0/components/ActorHashQuads.jsonld#ActorHashQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-query-operation/^3.0.0/components/ActorOptimizeQueryOperation.jsonld#ActorOptimizeQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-parse/^3.0.0/components/ActorQueryParse.jsonld#ActorQueryParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-entries-sort/^3.0.0/components/ActorRdfJoinEntriesSort.jsonld#ActorRdfJoinEntriesSort_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-selectivity/^3.0.0/components/ActorRdfJoinSelectivity.jsonld#ActorRdfJoinSelectivity_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-accumulate/^3.0.0/components/ActorRdfMetadataAccumulate.jsonld#ActorRdfMetadataAccumulate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads/^3.0.0/components/ActorRdfUpdateQuads.jsonld#ActorRdfUpdateQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus = new (require('@comunica/bus-query-operation').BusQueryOperation)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^3.0.0/components/ActorQueryOperation.jsonld#ActorQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-process/^3.0.0/components/ActorQueryProcess.jsonld#ActorQueryProcess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify/^3.0.0/components/ActorQuerySourceIdentify.jsonld#ActorQuerySourceIdentify_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^3.0.0/components/ActorRdfJoin.jsonld#ActorRdfJoin_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http-invalidate/^3.0.0/components/ActorHttpInvalidate.jsonld#ActorHttpInvalidate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-result-serialize/^3.0.0/components/ActorQueryResultSerialize.jsonld#ActorQueryResultSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-merge-bindings-context/^3.0.0/components/ActorMergeBindingsContext.jsonld#ActorMergeBindingsContext_default_bus'\n});\nconst urn_comunica_default_context_preprocess_actors_convert_shortcuts = new (require('@comunica/actor-context-preprocess-convert-shortcuts').ActorContextPreprocessConvertShortcuts)({\n 'contextKeyShortcuts': {\"baseIRI\":\"@comunica/actor-init-query:baseIRI\",\"datetime\":\"@comunica/actor-http-memento:datetime\",\"destination\":\"@comunica/bus-rdf-update-quads:destination\",\"distinctConstruct\":\"@comunica/actor-init-query:distinctConstruct\",\"explain\":\"@comunica/actor-init-query:explain\",\"extensionFunctionCreator\":\"@comunica/actor-init-query:extensionFunctionCreator\",\"extensionFunctions\":\"@comunica/actor-init-query:extensionFunctions\",\"fetch\":\"@comunica/bus-http:fetch\",\"functionArgumentsCache\":\"@comunica/actor-init-query:functionArgumentsCache\",\"httpAuth\":\"@comunica/bus-http:auth\",\"httpBodyTimeout\":\"@comunica/bus-http:http-body-timeout\",\"httpIncludeCredentials\":\"@comunica/bus-http:include-credentials\",\"httpProxyHandler\":\"@comunica/actor-http-proxy:httpProxyHandler\",\"httpRetryCount\":\"@comunica/bus-http:http-retry-count\",\"httpRetryDelay\":\"@comunica/bus-http:http-retry-delay\",\"httpRetryOnServerError\":\"@comunica/bus-http:http-retry-on-server-error\",\"httpTimeout\":\"@comunica/bus-http:http-timeout\",\"initialBindings\":\"@comunica/actor-init-query:initialBindings\",\"lenient\":\"@comunica/actor-init-query:lenient\",\"log\":\"@comunica/core:log\",\"noCache\":\"@comunica/actor-init-query:noCache\",\"queryFormat\":\"@comunica/actor-init-query:queryFormat\",\"queryTimestamp\":\"@comunica/actor-init-query:queryTimestamp\",\"readOnly\":\"@comunica/bus-query-operation:readOnly\",\"recoverBrokenLinks\":\"@comunica/bus-http-wayback:recover-broken-links\",\"sources\":\"@comunica/actor-init-query:querySourcesUnidentified\",\"traverse\":\"@comunica/bus-query-source-identify:traverse\",\"unionDefaultGraph\":\"@comunica/bus-query-operation:unionDefaultGraph\"},\n 'name': 'urn:comunica:default:context-preprocess/actors#convert-shortcuts',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_set_defaults = new (require('@comunica/actor-context-preprocess-set-defaults').ActorContextPreprocessSetDefaults)({\n 'logger': df_471_1,\n 'name': 'urn:comunica:default:context-preprocess/actors#set-defaults',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_source_to_destination = new (require('@comunica/actor-context-preprocess-source-to-destination').ActorContextPreprocessSourceToDestination)({\n 'name': 'urn:comunica:default:context-preprocess/actors#source-to-destination',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_query_source_skolemize = new (require('@comunica/actor-context-preprocess-query-source-skolemize').ActorContextPreprocessQuerySourceSkolemize)({\n 'name': 'urn:comunica:default:context-preprocess/actors#query-source-skolemize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:context-preprocess/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_hash_bindings_actors_sha1 = new (require('@comunica/actor-hash-bindings-sha1').ActorHashBindingsSha1)({\n 'name': 'urn:comunica:default:hash-bindings/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_bindings_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-bindings/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_quads_actors_sha1 = new (require('@comunica/actor-hash-quads-sha1').ActorHashQuadsSha1)({\n 'name': 'urn:comunica:default:hash-quads/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus\n});\nconst urn_comunica_default_hash_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_copy = new (require('@comunica/actor-optimize-query-operation-rewrite-copy').ActorOptimizeQueryOperationRewriteCopy)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-copy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_move = new (require('@comunica/actor-optimize-query-operation-rewrite-move').ActorOptimizeQueryOperationRewriteMove)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-move',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_add = new (require('@comunica/actor-optimize-query-operation-rewrite-add').ActorOptimizeQueryOperationRewriteAdd)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-add',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_group_sources = new (require('@comunica/actor-optimize-query-operation-group-sources').ActorOptimizeQueryOperationGroupSources)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#group-sources',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_construct_distinct = new (require('@comunica/actor-optimize-query-operation-construct-distinct').ActorOptimizeQueryOperationConstructDistinct)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#construct-distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'filterErrors': true,\n 'name': 'urn:comunica:default:optimize-query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_query_parse_actors_sparql = new (require('@comunica/actor-query-parse-sparql').ActorQueryParseSparql)({\n 'prefixes': {\"dbpedia\":\"http://dbpedia.org/resource/\",\"dbpedia-owl\":\"http://dbpedia.org/ontology/\",\"dbpprop\":\"http://dbpedia.org/property/\",\"dc\":\"http://purl.org/dc/terms/\",\"dc11\":\"http://purl.org/dc/elements/1.1/\",\"dcterms\":\"http://purl.org/dc/terms/\",\"foaf\":\"http://xmlns.com/foaf/0.1/\",\"geo\":\"http://www.w3.org/2003/01/geo/wgs84_pos#\",\"owl\":\"http://www.w3.org/2002/07/owl#\",\"rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"rdfs\":\"http://www.w3.org/2000/01/rdf-schema#\",\"schema\":\"http://schema.org/\",\"skos\":\"http://www.w3.org/2008/05/skos#\",\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"},\n 'name': 'urn:comunica:default:query-parse/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-parse/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_actors_cardinality = new (require('@comunica/actor-rdf-join-entries-sort-cardinality').ActorRdfJoinEntriesSortCardinality)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_actors_variable_counting = new (require('@comunica/actor-rdf-join-selectivity-variable-counting').ActorRdfJoinSelectivityVariableCounting)({\n 'name': 'urn:comunica:default:rdf-join-selectivity/actors#variable-counting',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'accuracy',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-join-selectivity/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_cancontainundefs = new (require('@comunica/actor-rdf-metadata-accumulate-cancontainundefs').ActorRdfMetadataAccumulateCanContainUndefs)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#cancontainundefs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_cardinality = new (require('@comunica/actor-rdf-metadata-accumulate-cardinality').ActorRdfMetadataAccumulateCardinality)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_pagesize = new (require('@comunica/actor-rdf-metadata-accumulate-pagesize').ActorRdfMetadataAccumulatePageSize)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#pagesize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_requesttime = new (require('@comunica/actor-rdf-metadata-accumulate-requesttime').ActorRdfMetadataAccumulateRequestTime)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#requesttime',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_rdfjs_store = new (require('@comunica/actor-rdf-update-quads-rdfjs-store').ActorRdfUpdateQuadsRdfJsStore)({\n 'name': 'urn:comunica:default:rdf-update-quads/actors#rdfjs-store',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_query_operation_actors_source = new (require('@comunica/actor-query-operation-source').ActorQueryOperationSource)({\n 'name': 'urn:comunica:default:query-operation/actors#source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'httpRequests',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_process_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-process/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_source_identify_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-source-identify/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus\n});\nconst urn_comunica_default_rdf_join_mediators_main = new (require('@comunica/mediator-join-coefficients-fixed').MediatorJoinCoefficientsFixed)({\n 'cpuWeight': 10,\n 'memoryWeight': 1,\n 'timeWeight': 2,\n 'ioWeight': 10,\n 'name': 'urn:comunica:default:rdf-join/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-context-preprocess-query-source-identify/^3.0.0/components/ActorContextPreprocessQuerySourceIdentify.jsonld#IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_http_invalidate_mediators_main = new (require('@comunica/mediator-all').MediatorAll)({\n 'name': 'urn:comunica:default:http-invalidate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-result-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_merge_bindings_context_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mergeHandlers',\n 'name': 'urn:comunica:default:merge-bindings-context/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_single = new (require('@comunica/actor-rdf-join-inner-single').ActorRdfJoinSingle)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-single',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_empty = new (require('@comunica/actor-rdf-join-inner-multi-empty').ActorRdfJoinMultiEmpty)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-empty',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_hash = new (require('@comunica/actor-rdf-join-inner-hash').ActorRdfJoinHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_symmetric_hash = new (require('@comunica/actor-rdf-join-inner-symmetrichash').ActorRdfJoinSymmetricHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-symmetric-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_nested_loop = new (require('@comunica/actor-rdf-join-inner-nestedloop').ActorRdfJoinNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash = new (require('@comunica/actor-rdf-join-minus-hash').ActorRdfJoinMinusHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash_undef = new (require('@comunica/actor-rdf-join-minus-hash-undef').ActorRdfJoinMinusHashUndef)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash-undef',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_def_nonblocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': false,\n 'blocking': false,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-def-nonblocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_def_blocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': false,\n 'blocking': true,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-def-blocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_undef_nonblocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': true,\n 'blocking': false,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-undef-nonblocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_undef_blocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': true,\n 'blocking': true,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-undef-blocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_nested_loop = new (require('@comunica/actor-rdf-join-optional-nestedloop').ActorRdfJoinOptionalNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_query_operation_actors_ask = new (require('@comunica/actor-query-operation-ask').ActorQueryOperationAsk)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#ask',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_bgp = new (require('@comunica/actor-query-operation-bgp-join').ActorQueryOperationBgpJoin)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_construct = new (require('@comunica/actor-query-operation-construct').ActorQueryOperationConstruct)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#construct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_distinct = new (require('@comunica/actor-query-operation-distinct-hash').ActorQueryOperationDistinctHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorHashQuads': urn_comunica_default_hash_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_from = new (require('@comunica/actor-query-operation-from-quad').ActorQueryOperationFromQuad)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#from',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_project = new (require('@comunica/actor-query-operation-project').ActorQueryOperationProject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#project',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_reduced = new (require('@comunica/actor-query-operation-reduced-hash').ActorQueryOperationReducedHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'cacheSize': 100,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#reduced',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_slice = new (require('@comunica/actor-query-operation-slice').ActorQueryOperationSlice)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#slice',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_union = new (require('@comunica/actor-query-operation-union').ActorQueryOperationUnion)({\n 'mediatorRdfMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#union',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_alt = new (require('@comunica/actor-query-operation-path-alt').ActorQueryOperationPathAlt)({\n 'mediatorRdfMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-alt',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_inv = new (require('@comunica/actor-query-operation-path-inv').ActorQueryOperationPathInv)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-inv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_link = new (require('@comunica/actor-query-operation-path-link').ActorQueryOperationPathLink)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-link',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_nps = new (require('@comunica/actor-query-operation-path-nps').ActorQueryOperationPathNps)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-nps',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_clear = new (require('@comunica/actor-query-operation-update-clear').ActorQueryOperationClear)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-clear',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_composite = new (require('@comunica/actor-query-operation-update-compositeupdate').ActorQueryOperationUpdateCompositeUpdate)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-composite',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_create = new (require('@comunica/actor-query-operation-update-create').ActorQueryOperationCreate)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-create',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_drop = new (require('@comunica/actor-query-operation-update-drop').ActorQueryOperationDrop)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-drop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_load = new (require('@comunica/actor-query-operation-update-load').ActorQueryOperationLoad)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-load',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_join = new (require('@comunica/actor-query-operation-join').ActorQueryOperationJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_minus = new (require('@comunica/actor-query-operation-minus').ActorQueryOperationMinus)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#minus',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_seq = new (require('@comunica/actor-query-operation-path-seq').ActorQueryOperationPathSeq)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-seq',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest = new (require('@comunica/actor-rdf-join-inner-multi-smallest').ActorRdfJoinMultiSmallest)({\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_filter_pushdown = new (require('@comunica/actor-optimize-query-operation-filter-pushdown').ActorOptimizeQueryOperationFilterPushdown)({\n 'aggressivePushdown': false,\n 'maxIterations': 10,\n 'splitConjunctive': true,\n 'mergeConjunctive': true,\n 'pushIntoLeftJoins': true,\n 'pushEqualityIntoPatterns': true,\n 'name': 'urn:comunica:default:optimize-query-operation/actors#filter-pushdown',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_group_sources\n]\n});\nconst urn_comunica_default_context_preprocess_actors_query_source_identify = new (require('@comunica/actor-context-preprocess-query-source-identify').ActorContextPreprocessQuerySourceIdentify)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'name': 'urn:comunica:default:context-preprocess/actors#query-source-identify',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus,\n 'beforeActors': [\n urn_comunica_default_context_preprocess_actors_query_source_skolemize\n]\n});\nconst urn_comunica_default_init_actors_query = new (require('@comunica/actor-init-query').ActorInitQuery)({\n 'mediatorQueryProcess': urn_comunica_default_query_process_mediators_main,\n 'mediatorQueryResultSerialize': urn_comunica_default_query_result_serialize_mediators_serialize,\n 'mediatorQueryResultSerializeMediaTypeCombiner': urn_comunica_default_query_result_serialize_mediators_mediaType,\n 'mediatorQueryResultSerializeMediaTypeFormatCombiner': urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat,\n 'mediatorHttpInvalidate': urn_comunica_default_http_invalidate_mediators_main,\n 'defaultQueryInputFormat': 'sparql',\n 'allowNoSources': false,\n 'name': 'urn:comunica:default:init/actors#query',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus\n});\nconst urn_comunica_default_query_operation_actors_extend = new (require('@comunica/actor-query-operation-extend').ActorQueryOperationExtend)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#extend',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_filter = new (require('@comunica/actor-query-operation-filter').ActorQueryOperationFilter)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#filter',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_group = new (require('@comunica/actor-query-operation-group').ActorQueryOperationGroup)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#group',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_leftjoin = new (require('@comunica/actor-query-operation-leftjoin').ActorQueryOperationLeftJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#leftjoin',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_nop = new (require('@comunica/actor-query-operation-nop').ActorQueryOperationNop)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#nop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_orderby = new (require('@comunica/actor-query-operation-orderby').ActorQueryOperationOrderBy)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#orderby',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_service = new (require('@comunica/actor-query-operation-service').ActorQueryOperationService)({\n 'forceSparqlEndpoint': false,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_values = new (require('@comunica/actor-query-operation-values').ActorQueryOperationValues)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#values',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_one_or_more = new (require('@comunica/actor-query-operation-path-one-or-more').ActorQueryOperationPathOneOrMore)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-one-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_more = new (require('@comunica/actor-query-operation-path-zero-or-more').ActorQueryOperationPathZeroOrMore)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_one = new (require('@comunica/actor-query-operation-path-zero-or-one').ActorQueryOperationPathZeroOrOne)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-one',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_delete_insert = new (require('@comunica/actor-query-operation-update-deleteinsert').ActorQueryOperationUpdateDeleteInsert)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-delete-insert',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_process_actors_sequential = new (require('@comunica/actor-query-process-sequential').ActorQueryProcessSequential)({\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'mediatorQueryParse': urn_comunica_default_query_parse_mediators_main,\n 'mediatorOptimizeQueryOperation': urn_comunica_default_optimize_query_operation_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-process/actors#sequential',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_source_identify_actors_rdfjs = new (require('@comunica/actor-query-source-identify-rdfjs').ActorQuerySourceIdentifyRdfJs)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-source-identify/actors#rdfjs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_none = new (require('@comunica/actor-rdf-join-inner-none').ActorRdfJoinNone)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_bind = new (require('@comunica/actor-rdf-join-optional-bind').ActorRdfJoinOptionalBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.000001,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind = new (require('@comunica/actor-rdf-join-inner-multi-bind').ActorRdfJoinMultiBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'minMaxCardinalityRatio': 60,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest_filter_bindings = new (require('@comunica/actor-rdf-join-inner-multi-smallest-filter-bindings').ActorRdfJoinMultiSmallestFilterBindings)({\n 'selectivityModifier': 0.0001,\n 'blockSize': 64,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest-filter-bindings',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations = new (require('@comunica/actor-optimize-query-operation-prune-empty-source-operations').ActorOptimizeQueryOperationPruneEmptySourceOperations)({\n 'useAskIfSupported': false,\n 'name': 'urn:comunica:default:optimize-query-operation/actors#prune-empty-source-operations',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_filter_pushdown\n]\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind_source = new (require('@comunica/actor-rdf-join-inner-multi-bind-source').ActorRdfJoinMultiBindSource)({\n 'selectivityModifier': 0.0001,\n 'blockSize': 16,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind-source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_connected = new (require('@comunica/actor-optimize-query-operation-join-connected').ActorOptimizeQueryOperationJoinConnected)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-connected',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_bgp_to_join = new (require('@comunica/actor-optimize-query-operation-bgp-to-join').ActorOptimizeQueryOperationBgpToJoin)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#bgp-to-join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_join_connected\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_bgp = new (require('@comunica/actor-optimize-query-operation-join-bgp').ActorOptimizeQueryOperationJoinBgp)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive = new (require('@comunica/actor-optimize-query-operation-assign-sources-exhaustive').ActorOptimizeQueryOperationAssignSourcesExhaustive)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#assign-sources-exhaustive',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_join_bgp\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_describe_to_constructs_subject = new (require('@comunica/actor-optimize-query-operation-describe-to-constructs-subject').ActorOptimizeQueryOperationDescribeToConstructsSubject)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#describe-to-constructs-subject',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive\n]\n});\nconst urn_comunica_default_Runner = (https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus, [\n urn_comunica_default_context_preprocess_actors_convert_shortcuts,\n urn_comunica_default_context_preprocess_actors_set_defaults,\n urn_comunica_default_context_preprocess_actors_source_to_destination,\n urn_comunica_default_context_preprocess_actors_query_source_identify,\n urn_comunica_default_context_preprocess_actors_query_source_skolemize,\n urn_comunica_default_hash_bindings_actors_sha1,\n urn_comunica_default_hash_quads_actors_sha1,\n urn_comunica_default_init_actors_query,\n urn_comunica_default_optimize_query_operation_actors_rewrite_copy,\n urn_comunica_default_optimize_query_operation_actors_rewrite_move,\n urn_comunica_default_optimize_query_operation_actors_rewrite_add,\n urn_comunica_default_optimize_query_operation_actors_describe_to_constructs_subject,\n urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive,\n urn_comunica_default_optimize_query_operation_actors_join_bgp,\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join,\n urn_comunica_default_optimize_query_operation_actors_join_connected,\n urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations,\n urn_comunica_default_optimize_query_operation_actors_filter_pushdown,\n urn_comunica_default_optimize_query_operation_actors_group_sources,\n urn_comunica_default_optimize_query_operation_actors_construct_distinct,\n urn_comunica_default_query_parse_actors_sparql,\n urn_comunica_default_rdf_join_entries_sort_actors_cardinality,\n urn_comunica_default_rdf_join_selectivity_actors_variable_counting,\n urn_comunica_default_rdf_metadata_accumulate_actors_cancontainundefs,\n urn_comunica_default_rdf_metadata_accumulate_actors_cardinality,\n urn_comunica_default_rdf_metadata_accumulate_actors_pagesize,\n urn_comunica_default_rdf_metadata_accumulate_actors_requesttime,\n urn_comunica_default_rdf_update_quads_actors_rdfjs_store,\n urn_comunica_default_query_operation_actors_ask,\n urn_comunica_default_query_operation_actors_bgp,\n urn_comunica_default_query_operation_actors_construct,\n urn_comunica_default_query_operation_actors_distinct,\n urn_comunica_default_query_operation_actors_extend,\n urn_comunica_default_query_operation_actors_filter,\n urn_comunica_default_query_operation_actors_from,\n urn_comunica_default_query_operation_actors_group,\n urn_comunica_default_query_operation_actors_join,\n urn_comunica_default_query_operation_actors_leftjoin,\n urn_comunica_default_query_operation_actors_minus,\n urn_comunica_default_query_operation_actors_nop,\n urn_comunica_default_query_operation_actors_orderby,\n urn_comunica_default_query_operation_actors_project,\n urn_comunica_default_query_operation_actors_reduced,\n urn_comunica_default_query_operation_actors_service,\n urn_comunica_default_query_operation_actors_slice,\n urn_comunica_default_query_operation_actors_source,\n urn_comunica_default_query_operation_actors_union,\n urn_comunica_default_query_operation_actors_values,\n urn_comunica_default_query_operation_actors_path_alt,\n urn_comunica_default_query_operation_actors_path_inv,\n urn_comunica_default_query_operation_actors_path_link,\n urn_comunica_default_query_operation_actors_path_nps,\n urn_comunica_default_query_operation_actors_path_one_or_more,\n urn_comunica_default_query_operation_actors_path_seq,\n urn_comunica_default_query_operation_actors_path_zero_or_more,\n urn_comunica_default_query_operation_actors_path_zero_or_one,\n urn_comunica_default_query_operation_actors_update_clear,\n urn_comunica_default_query_operation_actors_update_composite,\n urn_comunica_default_query_operation_actors_update_create,\n urn_comunica_default_query_operation_actors_update_delete_insert,\n urn_comunica_default_query_operation_actors_update_drop,\n urn_comunica_default_query_operation_actors_update_load,\n urn_comunica_default_query_process_actors_sequential,\n urn_comunica_default_query_source_identify_actors_rdfjs,\n urn_comunica_default_rdf_join_actors_inner_none,\n urn_comunica_default_rdf_join_actors_inner_single,\n urn_comunica_default_rdf_join_actors_inner_multi_empty,\n urn_comunica_default_rdf_join_actors_inner_multi_bind_source,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest_filter_bindings,\n urn_comunica_default_rdf_join_actors_minus_hash,\n urn_comunica_default_rdf_join_actors_minus_hash_undef,\n urn_comunica_default_rdf_join_actors_optional_bind,\n urn_comunica_default_rdf_join_actors_optional_hash_def_nonblocking,\n urn_comunica_default_rdf_join_actors_optional_hash_def_blocking,\n urn_comunica_default_rdf_join_actors_optional_hash_undef_nonblocking,\n urn_comunica_default_rdf_join_actors_optional_hash_undef_blocking,\n urn_comunica_default_rdf_join_actors_optional_nested_loop\n]);\nreturn urn_comunica_default_init_actors_query;\n}\n\n","import { QueryEngineBase } from '@comunica/actor-init-query';\nimport type { ActorInitQueryBase } from '@comunica/actor-init-query';\nimport type { IQueryContextCommon } from '@comunica/types';\n\n// eslint-disable-next-line import/extensions,ts/no-require-imports,ts/no-var-requires\nconst engineDefault = require('../engine-default.js');\n\n/**\n * A Comunica SPARQL query engine.\n */\nexport class QueryEngine\n extends QueryEngineBase {\n public constructor(engine: ActorInitQueryBase = engineDefault()) {\n super(engine);\n }\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nexport * from './QueryEngine';\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResultBindings,\n Bindings,\n IActionContext,\n MetadataBindings,\n IQuerySourceWrapper,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport {\n BufferedIterator,\n MultiTransformIterator,\n TransformIterator,\n EmptyIterator,\n} from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\nimport { PathVariableObjectIterator } from './PathVariableObjectIterator';\n\nconst DF = new DataFactory();\n\n/**\n * An abstract actor that handles Path operations.\n *\n * Provides multiple helper functions used by the Path operation actors.\n */\nexport abstract class ActorAbstractPath extends ActorQueryOperationTypedMediated {\n protected static readonly FACTORY: Factory = new Factory();\n\n protected readonly predicateType: string;\n\n protected constructor(args: IActorQueryOperationTypedMediatedArgs, predicateType: string) {\n super(args, 'path');\n this.predicateType = predicateType;\n }\n\n public async testOperation(operation: Algebra.Path, _context: IActionContext): Promise {\n if (operation.predicate.type !== this.predicateType) {\n throw new Error(`This Actor only supports ${this.predicateType} Path operations.`);\n }\n\n return true;\n }\n\n // Generates a variable that does not yet occur in the path\n public generateVariable(path?: Algebra.Path, name?: string): RDF.Variable {\n if (!name) {\n return this.generateVariable(path, 'b');\n }\n\n // Path predicates can't contain variables\n if (path && (path.subject.value === name || path.object.value === name)) {\n return this.generateVariable(path, `${name}b`);\n }\n\n return DF.variable(name);\n }\n\n // Such connectivity matching does not introduce duplicates (it does not incorporate any count of the number\n // of ways the connection can be made) even if the repeated path itself would otherwise result in duplicates.\n // https://www.w3.org/TR/sparql11-query/#propertypaths\n public async isPathArbitraryLengthDistinct(context: IActionContext, path: Algebra.Path):\n Promise<{ context: IActionContext; operation: IQueryOperationResultBindings | undefined }> {\n if (!context.get(KeysQueryOperation.isPathArbitraryLengthDistinctKey)) {\n context = context.set(KeysQueryOperation.isPathArbitraryLengthDistinctKey, true);\n return { context, operation: ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n operation: ActorAbstractPath.FACTORY.createDistinct(path),\n context,\n })) };\n }\n\n context = context.set(KeysQueryOperation.isPathArbitraryLengthDistinctKey, false);\n return { context, operation: undefined };\n }\n\n private async predicateStarGraphVariable(\n subject: RDF.Term,\n object: RDF.Variable,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Variable,\n context: IActionContext,\n bindingsFactory: BindingsFactory,\n ): Promise {\n const sources = this.getPathSources(predicate);\n // TODO: refactor this with an iterator just like PathVariableObjectIterator so we handle backpressure correctly\n // Construct path to obtain all graphs where subject exists\n const predVar = this.generateVariable(ActorAbstractPath.FACTORY\n .createPath(subject, predicate, object, graph));\n const findGraphs = ActorAbstractPath.FACTORY.createUnion([\n this.assignPatternSources(ActorAbstractPath.FACTORY.createPattern(subject, predVar, object, graph), sources),\n this.assignPatternSources(ActorAbstractPath.FACTORY.createPattern(object, predVar, subject, graph), sources),\n ]);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: findGraphs }),\n );\n\n const passedGraphs: Set = new Set();\n\n const bindingsStream = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n // Extract the graph and start a predicate* search starting from subject in each graph\n const graphValue: RDF.Term = bindings.get(graph)!;\n if (passedGraphs.has(graphValue.value)) {\n return new EmptyIterator();\n }\n passedGraphs.add(graphValue.value);\n return new TransformIterator(\n async() => {\n const it = new BufferedIterator();\n await this.getObjectsPredicateStar(subject, predicate, graphValue, context, {}, it, { count: 0 });\n return it.transform({\n transform(item, next, push) {\n push(bindingsFactory.bindings([\n [ object, item ],\n [ graph, graphValue ],\n ]));\n next();\n },\n });\n },\n { maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n\n return {\n bindingsStream,\n metadata: results.metadata,\n };\n }\n\n /**\n * Returns an iterator with Bindings of the query subject predicate* ?o or subject predicate+ ?o\n * If graph is a variable, it will also be in those bindings\n * @param {Term} subject Term of where we start the predicate* search.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Variable} object Variable of the zeroOrMore-query.\n * @param {Term} graph The graph in which we search for the pattern. (Possibly a variable)\n * @param {ActionContext} context The context to pass to sub-opertations\n * @param emitFirstSubject If the path operation is predicate*, otherwise it is predicate+.\n * @return {Promise} Iterator to where all bindings of query should have been pushed.\n */\n public async getObjectsPredicateStarEval(\n subject: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n object: RDF.Variable,\n graph: RDF.Term,\n context: IActionContext,\n emitFirstSubject: boolean,\n bindingsFactory: BindingsFactory,\n ): Promise {\n if (graph.termType === 'Variable') {\n return this.predicateStarGraphVariable(subject, object, predicate, graph, context, bindingsFactory);\n }\n\n const it = new PathVariableObjectIterator(\n subject,\n predicate,\n graph,\n context,\n this.mediatorQueryOperation,\n emitFirstSubject,\n );\n\n const bindingsStream = it.transform({\n autoStart: false,\n transform(item, next, push) {\n push(bindingsFactory.bindings([[ object, item ]]));\n next();\n },\n });\n\n return {\n bindingsStream,\n async metadata() {\n const metadata: MetadataBindings = await new Promise((resolve) => {\n it.getProperty('metadata', (metadataInner: any) => resolve(metadataInner()));\n });\n // Increment cardinality by one, because we always have at least one result once we reach this stage.\n // See the transformation above where we push a single binding.\n metadata.cardinality.value++;\n return metadata;\n },\n };\n }\n\n /**\n * Pushes all terms to iterator `it` that are a solution of object predicate* ?o.\n * @param {Term} object Term of where we start the predicate* search.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {Record} termHashes Remembers the objects we've already searched for.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} The results metadata.\n */\n public async getObjectsPredicateStar(\n object: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Term,\n context: IActionContext,\n termHashes: Record,\n it: BufferedIterator,\n counter: any,\n ): Promise {\n const termString = termToString(object);\n if (termHashes[termString]) {\n return;\n }\n\n ( it)._push(object);\n termHashes[termString] = object;\n counter.count++;\n\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(object, predicate, thisVariable, graph);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: path, context }),\n );\n // TODO: fixme\n // eslint-disable-next-line ts/no-misused-promises\n results.bindingsStream.on('data', async(bindings: Bindings) => {\n const result = bindings.get(thisVariable);\n await this.getObjectsPredicateStar(result!, predicate, graph, context, termHashes, it, counter);\n });\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n });\n\n return results.metadata;\n }\n\n /**\n * Pushes all terms to iterator `it` that are a solution of ?s predicate* ?o.\n * @param {string} subjectVar String representation of subjectVariable\n * @param {string} objectVar String representation of objectVariable\n * @param {Term} subjectVal Term of where we start the predicate* search.\n * @param {Term} objectVal Found solution for an object, start for the new step.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {{[id: string]: Promise}} termHashesGlobal\n * Remembers solutions for when objectVal is already been calculated, can be reused when same objectVal occurs\n * @param {{[id: string]: Term}} termHashesCurrentSubject\n * Remembers the pairs we've already searched for, can stop searching if so.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} All solutions of query should have been pushed to it by then.\n */\n // Let the iterator `it` emit all bindings of size 2, with subjectStringVariable as value subjectVal\n // and objectStringVariable as value all nodes reachable through predicate* beginning at objectVal\n public async getSubjectAndObjectBindingsPredicateStar(\n subjectVar: RDF.Variable,\n objectVar: RDF.Variable,\n subjectVal: RDF.Term,\n objectVal: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Term,\n context: IActionContext,\n termHashesGlobal: Record>,\n termHashesCurrentSubject: Record,\n it: BufferedIterator,\n counter: any,\n bindingsFactory: BindingsFactory,\n ): Promise {\n const termString = termToString(objectVal) + termToString(graph);\n\n // If this combination of subject and object already done, return nothing\n if (termHashesCurrentSubject[termString]) {\n return;\n }\n\n counter.count++;\n termHashesCurrentSubject[termString] = true;\n ( it)._push(bindingsFactory.bindings([\n [ subjectVar, subjectVal ],\n [ objectVar, objectVal ],\n ]));\n\n // If every reachable node from object has already been calculated, use these for current subject too\n if (termString in termHashesGlobal) {\n const objects = await termHashesGlobal[termString];\n for (const object of objects) {\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subjectVal,\n object,\n predicate,\n graph,\n context,\n termHashesGlobal,\n termHashesCurrentSubject,\n it,\n counter,\n bindingsFactory,\n );\n }\n if (--counter.count === 0) {\n it.close();\n }\n\n return;\n }\n\n // Construct promise to calculate all reachable nodes from this object\n // TODO: fixme\n // eslint-disable-next-line no-async-promise-executor,ts/no-misused-promises\n const promise = new Promise(async(resolve, reject) => {\n const objectsArray: RDF.Term[] = [];\n\n // Construct path that leads us one step through predicate\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(objectVal, predicate, thisVariable, graph);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: path, context }),\n );\n\n // Recursive call on all neighbours\n // TODO: fixme\n // eslint-disable-next-line ts/no-misused-promises\n results.bindingsStream.on('data', async(bindings: RDF.Bindings) => {\n const result: RDF.Term = bindings.get(thisVariable)!;\n objectsArray.push(result);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subjectVal,\n result,\n predicate,\n graph,\n context,\n termHashesGlobal,\n termHashesCurrentSubject,\n it,\n counter,\n bindingsFactory,\n );\n });\n results.bindingsStream.on('error', reject);\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n resolve(objectsArray);\n });\n });\n\n // Set it in the termHashesGlobal when this object occurs again they can wait for this promise\n termHashesGlobal[termString] = promise;\n }\n\n /**\n * Find all sources recursively contained in the given path operation.\n * @param operation\n */\n public getPathSources(operation: Algebra.PropertyPathSymbol): IQuerySourceWrapper[] {\n switch (operation.type) {\n case Algebra.types.ALT:\n case Algebra.types.SEQ:\n return operation.input\n .flatMap((subOp: Algebra.PropertyPathSymbol) => this.getPathSources(subOp));\n case Algebra.types.INV:\n case Algebra.types.ONE_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_ONE_PATH:\n return this.getPathSources(operation.path);\n case Algebra.types.LINK:\n case Algebra.types.NPS: {\n const source = ActorQueryOperation.getOperationSource(operation);\n if (!source) {\n throw new Error(`Could not find a required source on a link path operation`);\n }\n return [ source ];\n }\n }\n }\n\n public assignPatternSources(pattern: Algebra.Pattern, sources: IQuerySourceWrapper[]): Algebra.Operation {\n if (sources.length === 0) {\n throw new Error(`Attempted to assign zero sources to a pattern during property path handling`);\n }\n if (sources.length === 1) {\n return ActorQueryOperation.assignOperationSource(pattern, sources[0]);\n }\n return ActorAbstractPath.FACTORY.createUnion(sources\n .map(source => ActorQueryOperation.assignOperationSource(pattern, source)), true);\n }\n}\n\nexport interface IPathResultStream {\n bindingsStream: AsyncIterator;\n metadata: () => Promise;\n}\n","import type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { BufferedIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\nconst FACTORY = new Factory();\n\n/**\n * An iterator that implements the multi-length property path operation (* and +)\n * for a fixed subject and predicate, and a variable object.\n */\nexport class PathVariableObjectIterator extends BufferedIterator {\n private readonly termHashes: Map = new Map();\n private readonly runningOperations: AsyncIterator[] = [];\n private readonly pendingOperations: { variable: RDF.Variable; operation: Algebra.Path }[] = [];\n\n public constructor(\n private readonly subject: RDF.Term,\n private readonly predicate: Algebra.PropertyPathSymbol,\n private readonly graph: RDF.Term,\n private readonly context: IActionContext,\n private readonly mediatorQueryOperation: MediatorQueryOperation,\n emitFirstSubject: boolean,\n private readonly maxRunningOperations = 16,\n ) {\n // The autoStart flag must be true to kickstart metadata collection\n super({ autoStart: true });\n\n // Push the subject as starting point\n this._push(this.subject, emitFirstSubject);\n }\n\n protected override _end(destroy?: boolean): void {\n // Close all running iterators\n for (const it of this.runningOperations) {\n it.destroy();\n }\n\n super._end(destroy);\n }\n\n protected override _push(item: RDF.Term, pushAsResult = true): void {\n let termString;\n if (pushAsResult) {\n // Don't push if this subject was already found\n termString = termToString(item);\n if (this.termHashes.has(termString)) {\n return;\n }\n }\n\n // Add a pending path operation for this item\n const variable = DF.variable('b');\n this.pendingOperations.push({\n variable,\n operation: FACTORY.createPath(item, this.predicate, variable, this.graph),\n });\n\n // Otherwise, push the subject\n if (termString) {\n this.termHashes.set(termString, item);\n super._push(item);\n }\n }\n\n protected override _read(count: number, done: () => void): void {\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n (async function() {\n // Open as many operations as possible\n while (self.runningOperations.length < self.maxRunningOperations) {\n if (self.pendingOperations.length === 0) {\n break;\n }\n\n const pendingOperation = self.pendingOperations.pop()!;\n const results = ActorQueryOperation.getSafeBindings(\n await self.mediatorQueryOperation.mediate({ operation: pendingOperation.operation, context: self.context }),\n );\n const runningOperation = results.bindingsStream.transform({\n autoStart: false,\n transform(bindings, next, push) {\n const newTerm: RDF.Term = bindings.get(pendingOperation.variable)!;\n push(newTerm);\n next();\n },\n });\n if (!runningOperation.done) {\n self.runningOperations.push(runningOperation);\n runningOperation.on('error', error => self.destroy(error));\n runningOperation.on('readable', () => {\n self.readable = true;\n self._fillBufferAsync();\n });\n runningOperation.on('end', () => {\n self.runningOperations.splice(self.runningOperations.indexOf(runningOperation), 1);\n self.readable = true;\n self._fillBufferAsync();\n });\n }\n\n self.setProperty('metadata', results.metadata);\n }\n\n // Try to read `count` items (based on UnionIterator)\n let lastCount = 0;\n let item: RDF.Term | null;\n // eslint-disable-next-line no-cond-assign\n while (lastCount !== (lastCount = count)) {\n // Prioritize the operations that have been added first\n for (let i = 0; i < self.runningOperations.length && count > 0; i++) {\n // eslint-disable-next-line no-cond-assign\n if ((item = self.runningOperations[i].read()) !== null) {\n count--;\n self._push(item);\n }\n }\n }\n\n // Close if everything has been read\n if (self.runningOperations.length === 0 && self.pendingOperations.length === 0) {\n self.close();\n }\n })().then(() => {\n done();\n }, error => this.destroy(error));\n }\n}\n","export * from './ActorAbstractPath';\nexport * from './PathVariableObjectIterator';\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica Convert Shortcuts Context Preprocess Actor.\n */\nexport class ActorContextPreprocessConvertShortcuts extends ActorContextPreprocess {\n public readonly contextKeyShortcuts: Record;\n\n public constructor(args: IActorContextPreprocessConvertShortcutsArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n return {\n context: ActorContextPreprocessConvertShortcuts.expandShortcuts(action.context, this.contextKeyShortcuts),\n };\n }\n\n public static expandShortcuts(context: IActionContext, contextKeyShortcuts: Record): IActionContext {\n for (const key of context.keys()) {\n if (contextKeyShortcuts[key.name]) {\n context = context\n .set(new ActionContextKey(contextKeyShortcuts[key.name]), context.get(key))\n .delete(key);\n }\n }\n return context;\n }\n}\n\nexport interface IActorContextPreprocessConvertShortcutsArgs extends IActorContextPreprocessArgs {\n /**\n * A record of context shortcuts to full context keys (as defined in @comunica/context-entries).\n * @range {json}\n * @default {{\n * \"sources\": \"@comunica/actor-init-query:querySourcesUnidentified\",\n * \"destination\": \"@comunica/bus-rdf-update-quads:destination\",\n * \"initialBindings\": \"@comunica/actor-init-query:initialBindings\",\n * \"queryFormat\": \"@comunica/actor-init-query:queryFormat\",\n * \"baseIRI\": \"@comunica/actor-init-query:baseIRI\",\n * \"log\": \"@comunica/core:log\",\n * \"datetime\": \"@comunica/actor-http-memento:datetime\",\n * \"queryTimestamp\": \"@comunica/actor-init-query:queryTimestamp\",\n * \"httpProxyHandler\": \"@comunica/actor-http-proxy:httpProxyHandler\",\n * \"lenient\": \"@comunica/actor-init-query:lenient\",\n * \"httpIncludeCredentials\": \"@comunica/bus-http:include-credentials\",\n * \"httpAuth\": \"@comunica/bus-http:auth\",\n * \"httpTimeout\": \"@comunica/bus-http:http-timeout\",\n * \"httpBodyTimeout\": \"@comunica/bus-http:http-body-timeout\",\n * \"httpRetryCount\": \"@comunica/bus-http:http-retry-count\",\n * \"httpRetryDelay\": \"@comunica/bus-http:http-retry-delay\",\n * \"httpRetryOnServerError\": \"@comunica/bus-http:http-retry-on-server-error\",\n * \"fetch\": \"@comunica/bus-http:fetch\",\n * \"recoverBrokenLinks\": \"@comunica/bus-http-wayback:recover-broken-links\",\n * \"readOnly\": \"@comunica/bus-query-operation:readOnly\",\n * \"extensionFunctions\": \"@comunica/actor-init-query:extensionFunctions\",\n * \"extensionFunctionCreator\": \"@comunica/actor-init-query:extensionFunctionCreator\",\n * \"functionArgumentsCache\": \"@comunica/actor-init-query:functionArgumentsCache\",\n * \"explain\": \"@comunica/actor-init-query:explain\",\n * \"unionDefaultGraph\": \"@comunica/bus-query-operation:unionDefaultGraph\",\n * \"traverse\": \"@comunica/bus-query-source-identify:traverse\",\n * \"noCache\": \"@comunica/actor-init-query:noCache\",\n * \"distinctConstruct\": \"@comunica/actor-init-query:distinctConstruct\"\n * }}\n */\n contextKeyShortcuts: Record;\n}\n","import type {\n IActorContextPreprocessOutput,\n IActorContextPreprocessArgs,\n MediatorContextPreprocess,\n} from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { ActorHttpInvalidateListenable, IActionHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport { KeysInitQuery, KeysQueryOperation, KeysStatistics }\n from '@comunica/context-entries';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport { ActionContext } from '@comunica/core';\nimport type {\n ILink,\n IQuerySourceWrapper,\n QuerySourceUnidentified,\n QuerySourceUnidentifiedExpanded,\n IActionContext,\n IQuerySourceUnidentifiedExpanded,\n IStatisticBase,\n} from '@comunica/types';\nimport { LRUCache } from 'lru-cache';\n\n/**\n * A comunica Query Source Identify Context Preprocess Actor.\n */\nexport class ActorContextPreprocessQuerySourceIdentify extends ActorContextPreprocess {\n public readonly cacheSize: number;\n public readonly httpInvalidator: ActorHttpInvalidateListenable;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly cache?: LRUCache>;\n\n public constructor(args: IActorContextPreprocessQuerySourceIdentifyArgs) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(\n ({ url }: IActionHttpInvalidate) => url ? cache.delete(url) : cache.clear(),\n );\n }\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n let context = action.context;\n\n // Rewrite sources\n if (context.has(KeysInitQuery.querySourcesUnidentified)) {\n const querySourcesUnidentified: QuerySourceUnidentified[] = action.context\n .get(KeysInitQuery.querySourcesUnidentified)!;\n const querySourcesUnidentifiedExpanded = await Promise.all(querySourcesUnidentified\n .map(querySource => this.expandSource(querySource)));\n const querySources: IQuerySourceWrapper[] = await Promise.all(querySourcesUnidentifiedExpanded\n .map(async querySourceUnidentified => this.identifySource(querySourceUnidentified, action.context)));\n\n // When identifying sources in preprocess actor, we record this as a dereference seed document event\n const statisticDereferenceLinks: IStatisticBase | undefined = action.context\n .get(KeysStatistics.dereferencedLinks);\n if (statisticDereferenceLinks) {\n for (const querySource of querySources) {\n statisticDereferenceLinks.updateStatistic({\n url: querySource.source.referenceValue,\n metadata: {\n seed: true,\n },\n }, querySource.source);\n }\n }\n\n context = action.context\n .delete(KeysInitQuery.querySourcesUnidentified)\n .set(KeysQueryOperation.querySources, querySources);\n }\n\n return { context };\n }\n\n public async expandSource(querySource: QuerySourceUnidentified): Promise {\n if (typeof querySource === 'string' || 'match' in querySource) {\n return { value: querySource };\n }\n return {\n ...>querySource,\n context: (await this.mediatorContextPreprocess.mediate({\n context: ActionContext.ensureActionContext(querySource.context ?? {}),\n })).context,\n };\n }\n\n public identifySource(\n querySourceUnidentified: QuerySourceUnidentifiedExpanded,\n context: IActionContext,\n ): Promise {\n let sourcePromise: Promise | undefined;\n\n // Try to read from cache\n // Only sources based on string values (e.g. URLs) are supported!\n if (typeof querySourceUnidentified.value === 'string' && this.cache) {\n sourcePromise = this.cache.get(querySourceUnidentified.value)!;\n }\n\n // If not in cache, identify the source\n if (!sourcePromise) {\n sourcePromise = this.mediatorQuerySourceIdentify.mediate({ querySourceUnidentified, context })\n .then(({ querySource }) => querySource);\n\n // Set in cache\n if (typeof querySourceUnidentified.value === 'string' && this.cache) {\n this.cache.set(querySourceUnidentified.value, sourcePromise);\n }\n }\n\n return sourcePromise;\n }\n}\n\nexport interface IActorContextPreprocessQuerySourceIdentifyArgs extends IActorContextPreprocessArgs {\n /**\n * The maximum number of entries in the LRU cache, set to 0 to disable.\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n /* eslint-disable max-len */\n /**\n * An actor that listens to HTTP invalidation events\n * @default { a }\n */\n httpInvalidator: ActorHttpInvalidateListenable;\n /* eslint-enable max-len */\n /**\n * Mediator for identifying query sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysQueryOperation, KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IActorTest, IAction } from '@comunica/core';\nimport type { IQuerySourceWrapper, QuerySourceReference } from '@comunica/types';\nimport { QuerySourceSkolemized } from './QuerySourceSkolemized';\nimport { getSourceId } from './utils';\n\n/**\n * A comunica Query Source Skolemize Context Preprocess Actor.\n */\nexport class ActorContextPreprocessQuerySourceSkolemize extends ActorContextPreprocess {\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n let context = action.context;\n\n // Wrap sources in skolemized sources\n if (context.has(KeysQueryOperation.querySources)) {\n // Determine map of source id's\n if (!context.has(KeysQuerySourceIdentify.sourceIds)) {\n context = context.set(KeysQuerySourceIdentify.sourceIds, new Map());\n }\n const sourceIds: Map = context.getSafe(KeysQuerySourceIdentify.sourceIds);\n\n let sources: IQuerySourceWrapper[] = context.getSafe(KeysQueryOperation.querySources);\n sources = sources.map(sourceWrapper => ({\n source: new QuerySourceSkolemized(sourceWrapper.source, getSourceId(sourceIds, sourceWrapper.source)),\n context: sourceWrapper.context,\n }));\n context = context.set(KeysQueryOperation.querySources, sources);\n }\n\n return { context };\n }\n}\n","import { MetadataValidationState } from '@comunica/metadata';\nimport type {\n BindingsStream,\n FragmentSelectorShape,\n IActionContext,\n IQueryBindingsOptions,\n IQuerySource,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { deskolemizeOperation, skolemizeBindingsStream, skolemizeQuadStream } from './utils';\n\n/**\n * A IQuerySource wrapper that skolemizes outgoing quads and bindings.\n */\nexport class QuerySourceSkolemized implements IQuerySource {\n /**\n * The query source to wrap over.\n */\n public readonly innerSource: IQuerySource;\n /**\n * ID of the inner source, see KeysQuerySourceIdentify.sourceIds.\n */\n public readonly sourceId: string;\n\n public constructor(innerSource: IQuerySource, sourceId: string) {\n this.innerSource = innerSource;\n this.sourceId = sourceId;\n }\n\n public async getSelectorShape(context: IActionContext): Promise {\n return this.innerSource.getSelectorShape(context);\n }\n\n public queryBindings(\n operation: Algebra.Operation,\n context: IActionContext,\n options: IQueryBindingsOptions | undefined,\n ): BindingsStream {\n const operationMapped = deskolemizeOperation(operation, this.sourceId);\n if (!operationMapped) {\n const it: BindingsStream = new ArrayIterator([], { autoStart: false });\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: [],\n });\n return it;\n }\n return skolemizeBindingsStream(this.innerSource.queryBindings(operationMapped, context, options), this.sourceId);\n }\n\n public queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise {\n return this.innerSource.queryBoolean(operation, context);\n }\n\n public queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator {\n const operationMapped = deskolemizeOperation(operation, this.sourceId);\n if (!operationMapped) {\n const it: AsyncIterator = new ArrayIterator([], { autoStart: false });\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n });\n return it;\n }\n return skolemizeQuadStream(this.innerSource.queryQuads(operationMapped, context), this.sourceId);\n }\n\n public queryVoid(operation: Algebra.Update, context: IActionContext): Promise {\n return this.innerSource.queryVoid(operation, context);\n }\n\n public get referenceValue(): string | RDF.Source {\n return this.innerSource.referenceValue;\n }\n\n public toString(): string {\n return `${this.innerSource.toString()}(SkolemID:${this.sourceId})`;\n }\n}\n","import { BlankNodeScoped } from '@comunica/data-factory';\nimport type {\n BindingsStream,\n IQuerySource,\n MetadataBindings,\n MetadataQuads,\n QuerySourceReference,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { mapTermsNested } from 'rdf-terms';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\nexport const SKOLEM_PREFIX = 'urn:comunica_skolem:source_';\n\n/**\n * Get the unique, deterministic id for the given source.\n * @param sourceIds ID's of datasources, see KeysRdfResolveQuadPattern.sourceIds.\n * @param source A data source.\n * @return The id of the given source.\n */\nexport function getSourceId(sourceIds: Map, source: IQuerySource): string {\n let sourceId = sourceIds.get(source.referenceValue);\n if (sourceId === undefined) {\n sourceId = `${sourceIds.size}`;\n sourceIds.set(source.referenceValue, sourceId);\n }\n return sourceId;\n}\n\n/**\n * If the given term is a blank node, return a deterministic named node for it\n * based on the source id and the blank node value.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n * @return If the given term was a blank node, this will return a skolemized named node, otherwise the original term.\n */\nexport function skolemizeTerm(term: RDF.Term, sourceId: string): RDF.Term | BlankNodeScoped {\n if (term.termType === 'BlankNode') {\n return new BlankNodeScoped(`bc_${sourceId}_${term.value}`, DF.namedNode(`${SKOLEM_PREFIX}${sourceId}:${term.value}`));\n }\n return term;\n}\n\n/**\n * Skolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The skolemized quad.\n */\nexport function skolemizeQuad(quad: Q, sourceId: string): Q {\n return mapTermsNested(quad, term => skolemizeTerm(term, sourceId));\n}\n\n/**\n * Skolemize all terms in the given bindings.\n * @param bindings An RDF bindings object.\n * @param sourceId A source identifier.\n * @return The skolemized bindings.\n */\nexport function skolemizeBindings(bindings: RDF.Bindings, sourceId: string): RDF.Bindings {\n return bindings.map((term) => {\n if (term.termType === 'Quad') {\n return skolemizeQuad(term, sourceId);\n }\n return skolemizeTerm(term, sourceId);\n });\n}\n\n/**\n * Skolemize all terms in the given quad stream.\n * @param iterator An RDF quad stream.\n * @param sourceId A source identifier.\n * @return The skolemized quad stream.\n */\nexport function skolemizeQuadStream(iterator: AsyncIterator, sourceId: string): AsyncIterator {\n const ret = iterator.map(quad => skolemizeQuad(quad, sourceId));\n function inheritMetadata(): void {\n iterator.getProperty('metadata', (metadata: MetadataQuads) => {\n ret.setProperty('metadata', metadata);\n metadata.state.addInvalidateListener(inheritMetadata);\n });\n }\n inheritMetadata();\n return ret;\n}\n\n/**\n * Skolemize all terms in the given bindings stream.\n * @param iterator An RDF bindings stream.\n * @param sourceId A source identifier.\n * @return The skolemized bindings stream.\n */\nexport function skolemizeBindingsStream(iterator: BindingsStream, sourceId: string): BindingsStream {\n const ret = iterator.map(bindings => skolemizeBindings(bindings, sourceId));\n function inheritMetadata(): void {\n iterator.getProperty('metadata', (metadata: MetadataBindings) => {\n ret.setProperty('metadata', metadata);\n metadata.state.addInvalidateListener(inheritMetadata);\n });\n }\n inheritMetadata();\n return ret;\n}\n\n/**\n * If a given term was a skolemized named node for the given source id,\n * deskolemize it again to a blank node.\n * If the given term was a skolemized named node for another source, return false.\n * If the given term was not a skolemized named node, return the original term.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n */\nexport function deskolemizeTerm(term: RDF.Term, sourceId: string): RDF.Term | null {\n if (term.termType === 'BlankNode' && 'skolemized' in term) {\n term = ( term).skolemized;\n }\n if (term.termType === 'NamedNode' && term.value.startsWith(SKOLEM_PREFIX)) {\n const colonSeparator = term.value.indexOf(':', SKOLEM_PREFIX.length);\n const termSourceId = term.value.slice(SKOLEM_PREFIX.length, colonSeparator);\n // We had a skolemized term\n if (termSourceId === sourceId) {\n // It came from the correct source\n const termLabel = term.value.slice(colonSeparator + 1, term.value.length);\n return DF.blankNode(termLabel);\n }\n // It came from a different source\n return null;\n }\n return term;\n}\n\nexport function deskolemizeTermNestedThrowing(term: RDF.Term, sourceId: string): RDF.Term {\n if (term.termType === 'Quad') {\n return mapTermsNested(term, (subTerm) => {\n const deskolemized = deskolemizeTerm(subTerm, sourceId);\n if (!deskolemized) {\n throw new Error(`Skolemized term is not in scope for this source`);\n }\n return deskolemized;\n });\n }\n const ret = deskolemizeTerm(term, sourceId);\n if (ret === null) {\n throw new Error(`Skolemized term is not in scope for this source`);\n }\n return ret;\n}\n\n/**\n * Deskolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The deskolemized quad.\n */\nexport function deskolemizeQuad(quad: Q, sourceId: string): Q {\n return mapTermsNested(quad, (term: RDF.Term): RDF.Term => {\n const newTerm = deskolemizeTerm(term, sourceId);\n // If the term was skolemized in a different source then don't deskolemize it\n return newTerm ?? term;\n });\n}\n\n/**\n * Deskolemize all terms in the given quad.\n * Will return undefined if there is at least one blank node not in scope for this sourceId.\n * @param operation An algebra operation.\n * @param sourceId A source identifier.\n */\nexport function deskolemizeOperation(operation: O, sourceId: string): O | undefined {\n try {\n return Util.mapOperation(operation, {\n [Algebra.types.PATTERN](op, factory) {\n return {\n result: Object.assign(factory.createPattern(\n deskolemizeTermNestedThrowing(op.subject, sourceId),\n deskolemizeTermNestedThrowing(op.predicate, sourceId),\n deskolemizeTermNestedThrowing(op.object, sourceId),\n deskolemizeTermNestedThrowing(op.graph, sourceId),\n ), { metadata: op.metadata }),\n recurse: false,\n };\n },\n [Algebra.types.PATH](op, factory) {\n return {\n result: Object.assign(factory.createPath(\n deskolemizeTermNestedThrowing(op.subject, sourceId),\n op.predicate,\n deskolemizeTermNestedThrowing(op.object, sourceId),\n deskolemizeTermNestedThrowing(op.graph, sourceId),\n ), { metadata: op.metadata }),\n recurse: false,\n };\n },\n });\n } catch {\n // Return undefined for skolemized terms not in scope for this source\n }\n}\n","import type {\n IActorContextPreprocessOutput,\n IActorContextPreprocessArgs,\n IActionContextPreprocess,\n} from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysCore, KeysInitQuery, KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport type { FunctionArgumentsCache, Logger } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica Set Defaults Context Preprocess Actor.\n */\nexport class ActorContextPreprocessSetDefaults extends ActorContextPreprocess {\n private readonly defaultFunctionArgumentsCache: FunctionArgumentsCache;\n public readonly logger: Logger;\n\n public constructor(args: IActorContextPreprocessSetDefaultsArgs) {\n super(args);\n this.defaultFunctionArgumentsCache = {};\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IActionContextPreprocess): Promise {\n let context = action.context;\n\n if (action.initialize) {\n // Set default values\n context = context\n .setDefault(KeysInitQuery.queryTimestamp, new Date())\n .setDefault(KeysQuerySourceIdentify.sourceIds, new Map())\n .setDefault(KeysCore.log, this.logger)\n .setDefault(KeysInitQuery.functionArgumentsCache, this.defaultFunctionArgumentsCache)\n .setDefault(KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores, new Map());\n\n // Handle default query format\n let queryFormat: RDF.QueryFormat = { language: 'sparql', version: '1.1' };\n if (context.has(KeysInitQuery.queryFormat)) {\n queryFormat = context.get(KeysInitQuery.queryFormat)!;\n if (queryFormat.language === 'graphql') {\n context = context.setDefault(KeysInitQuery.graphqlSingularizeVariables, {});\n }\n } else {\n context = context.set(KeysInitQuery.queryFormat, queryFormat);\n }\n }\n\n return { context };\n }\n}\n\nexport interface IActorContextPreprocessSetDefaultsArgs extends IActorContextPreprocessArgs {\n /**\n * The logger of this actor\n * @default {a }\n */\n logger: Logger;\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysInitQuery, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest, IAction } from '@comunica/core';\nimport type { QuerySourceUnidentified } from '@comunica/types';\n\n/**\n * A comunica Source To Destination Context Preprocess Actor.\n */\nexport class ActorContextPreprocessSourceToDestination extends ActorContextPreprocess {\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n if (action.context.get(KeysInitQuery.querySourcesUnidentified) &&\n !action.context.get(KeysRdfUpdateQuads.destination)) {\n const sources: QuerySourceUnidentified[] = action.context.get(KeysInitQuery.querySourcesUnidentified)!;\n if (sources.length === 1) {\n return { context: action.context.set(KeysRdfUpdateQuads.destination, sources[0]) };\n }\n }\n return action;\n }\n}\n","import type { IActionHashBindings, IActorHashBindingsOutput } from '@comunica/bus-hash-bindings';\nimport { ActorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { IActorTest } from '@comunica/core';\nimport { sha1 } from 'hash.js';\nimport { termToString } from 'rdf-string';\n\n// eslint-disable-next-line ts/no-require-imports,ts/no-var-requires\nconst canonicalize = require('canonicalize');\n\n/**\n * A comunica Memento Http Actor.\n */\nexport class ActorHashBindingsSha1 extends ActorHashBindings {\n public async test(action: IActionHashBindings): Promise {\n if (!action.allowHashCollisions) {\n throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);\n }\n return true;\n }\n\n public async run(_action: IActionHashBindings): Promise {\n return {\n hashFunction: bindings => sha1()\n .update(canonicalize(Object.fromEntries([ ...bindings ]\n .map(([ key, value ]) => [ termToString(key), termToString(value) ]))))\n .digest('hex'),\n hashCollisions: true,\n };\n }\n}\n","import type { IActionHashQuads, IActorHashQuadsOutput } from '@comunica/bus-hash-quads';\nimport { ActorHashQuads } from '@comunica/bus-hash-quads';\nimport type { IActorTest } from '@comunica/core';\nimport { sha1 } from 'hash.js';\nimport { quadToStringQuad } from 'rdf-string';\n\n/**\n * A comunica Memento Http Actor.\n */\nexport class ActorHashQuadsSha1 extends ActorHashQuads {\n public async test(action: IActionHashQuads): Promise {\n if (!action.allowHashCollisions) {\n throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);\n }\n return true;\n }\n\n public async run(_action: IActionHashQuads): Promise {\n return {\n hashFunction: quad => sha1()\n .update(JSON.stringify(quadToStringQuad(quad)))\n .digest('hex'),\n hashCollisions: true,\n };\n }\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nimport { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/* istanbul ignore next */\nif (typeof process === 'undefined') {\n // Polyfills process.nextTick for readable-stream\n globalThis.process = require('process/');\n}\n\nexport class ActorInitQuery extends ActorInitQueryBase {}\n","import type { MediatorHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { IActionInit, IActorInitArgs, IActorOutputInit } from '@comunica/bus-init';\nimport { ActorInit } from '@comunica/bus-init';\nimport type { MediatorQueryProcess } from '@comunica/bus-query-process';\nimport type {\n MediatorQueryResultSerializeHandle,\n MediatorQueryResultSerializeMediaTypes,\n MediatorQueryResultSerializeMediaTypeFormats,\n} from '@comunica/bus-query-result-serialize';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A browser-safe comunica Query Init Actor.\n */\nexport class ActorInitQueryBase extends ActorInit implements IActorInitQueryBaseArgs {\n public readonly mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n public readonly mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n public readonly mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n public readonly mediatorHttpInvalidate: MediatorHttpInvalidate;\n public readonly mediatorQueryProcess: MediatorQueryProcess;\n\n public readonly queryString?: string;\n public readonly defaultQueryInputFormat?: string;\n public readonly allowNoSources?: boolean;\n public readonly context?: string;\n\n public async test(_action: IActionInit): Promise {\n return true;\n }\n\n public async run(_action: IActionInit): Promise {\n throw new Error('ActorInitSparql#run is not supported in the browser.');\n }\n}\n\nexport interface IActorInitQueryBaseArgs extends IActorInitArgs {\n /**\n * The query process mediator\n */\n mediatorQueryProcess: MediatorQueryProcess;\n /**\n * The query serialize mediator\n */\n mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n /**\n * The query serialize media type combinator\n */\n mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n /**\n * The query serialize media type format combinator\n */\n mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n /**\n * The HTTP cache invalidation mediator\n */\n mediatorHttpInvalidate: MediatorHttpInvalidate;\n\n /**\n * A SPARQL query string\n */\n queryString?: string;\n /**\n * The default query input format\n * @default {sparql}\n */\n defaultQueryInputFormat?: string;\n /**\n * If it should be allowed that the user passes no sources.\n * @default {false}\n */\n allowNoSources?: boolean;\n /**\n * A JSON string of a query operation context\n */\n context?: string;\n}\n","import type { IActionSparqlSerialize, IActorQueryResultSerializeOutput } from '@comunica/bus-query-result-serialize';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryEngine,\n IQueryExplained,\n QueryFormatType,\n QueryType,\n QueryExplainMode,\n BindingsStream,\n QueryAlgebraContext,\n QueryStringContext,\n IQueryBindingsEnhanced,\n IQueryQuadsEnhanced,\n QueryEnhanced,\n IQueryContextCommon,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/**\n * Base implementation of a Comunica query engine.\n */\nexport class QueryEngineBase<\n // eslint-disable-next-line unused-imports/no-unused-vars\n QueryContext extends IQueryContextCommon = IQueryContextCommon,\n QueryStringContextInner extends RDF.QueryStringContext = QueryStringContext,\n QueryAlgebraContextInner extends RDF.QueryAlgebraContext = QueryAlgebraContext,\n>\nimplements IQueryEngine {\n private readonly actorInitQuery: ActorInitQueryBase;\n\n public constructor(actorInitQuery: ActorInitQueryBase) {\n this.actorInitQuery = actorInitQuery;\n }\n\n public async queryBindings(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'bindings');\n }\n\n public async queryQuads(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise & RDF.ResultStream> {\n return this.queryOfType(query, context, 'quads');\n }\n\n public async queryBoolean(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'boolean');\n }\n\n public async queryVoid(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'void');\n }\n\n protected async queryOfType(\n query: QueryFormatTypeInner,\n context: undefined | (QueryFormatTypeInner extends string ?\n QueryStringContextInner : QueryAlgebraContextInner),\n expectedType: QueryTypeOut['resultType'],\n ): Promise> {\n const result = await this.query(query, context);\n if (result.resultType === expectedType) {\n return > await result.execute();\n }\n throw new Error(`Query result type '${expectedType}' was expected, while '${result.resultType}' was found.`);\n }\n\n /**\n * Evaluate the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to the query output.\n */\n public async query(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n const output = await this.queryOrExplain(query, context);\n if ('explain' in output) {\n throw new Error(`Tried to explain a query when in query-only mode`);\n }\n return output;\n }\n\n /**\n * Explain the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @param explainMode The explain mode.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n public async explain(\n query: QueryFormatTypeInner,\n context: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n explainMode: QueryExplainMode,\n ): Promise {\n context.explain = explainMode;\n const output = await this.queryOrExplain(query, context);\n return output;\n }\n\n /**\n * Evaluate or explain the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n public async queryOrExplain(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n const actionContext: IActionContext = ActionContext.ensureActionContext(context);\n\n // Invalidate caches if cache argument is set to false\n if (actionContext.get(KeysInitQuery.noCache)) {\n await this.invalidateHttpCache();\n }\n\n // Invoke query process\n const { result } = await this.actorInitQuery.mediatorQueryProcess.mediate({ query, context: actionContext });\n if ('explain' in result) {\n return result;\n }\n return QueryEngineBase.internalToFinalResult(result);\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL (weighted) result media types.\n */\n public async getResultMediaTypes(context?: any): Promise> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeCombiner\n .mediate({ context, mediaTypes: true })).mediaTypes;\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL result media type formats.\n */\n public async getResultMediaTypeFormats(context?: any): Promise> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeFormatCombiner\n .mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n\n /**\n * Convert a query result to a string stream based on a certain media type.\n * @param {IQueryOperationResult} queryResult A query result.\n * @param {string} mediaType A media type.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A text stream.\n */\n public async resultToString(queryResult: RDF.Query, mediaType?: string, context?: any):\n Promise {\n context = ActionContext.ensureActionContext(context);\n if (!mediaType) {\n switch (queryResult.resultType) {\n case 'bindings':\n mediaType = 'application/json';\n break;\n case 'quads':\n mediaType = 'application/trig';\n break;\n default:\n mediaType = 'simple';\n break;\n }\n }\n const handle: IActionSparqlSerialize = { ...await QueryEngineBase.finalToInternalResult(queryResult), context };\n return (await this.actorInitQuery.mediatorQueryResultSerialize\n .mediate({ context, handle, handleMediaType: mediaType })).handle;\n }\n\n /**\n * Invalidate all internal caches related to the given page URL.\n * If no page URL is given, then all pages will be invalidated.\n * @param {string} url The page URL to invalidate.\n * @param context An optional ActionContext to pass to the actors.\n * @return {Promise} A promise resolving when the caches have been invalidated.\n */\n public invalidateHttpCache(url?: string, context?: any): Promise {\n context = ActionContext.ensureActionContext(context);\n return this.actorInitQuery.mediatorHttpInvalidate.mediate({ url, context });\n }\n\n /**\n * Convert an internal query result to a final one.\n * @param internalResult An intermediary query result.\n */\n public static internalToFinalResult(internalResult: IQueryOperationResult): QueryType {\n switch (internalResult.type) {\n case 'bindings':\n return {\n resultType: 'bindings',\n execute: async() => internalResult.bindingsStream,\n metadata: async() => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'quads':\n return {\n resultType: 'quads',\n execute: async() => internalResult.quadStream,\n metadata: async() => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'boolean':\n return {\n resultType: 'boolean',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n case 'void':\n return {\n resultType: 'void',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n }\n }\n\n /**\n * Convert a final query result to an internal one.\n * @param finalResult A final query result.\n */\n public static async finalToInternalResult(finalResult: RDF.Query): Promise {\n switch (finalResult.resultType) {\n case 'bindings':\n return {\n type: 'bindings',\n bindingsStream: await finalResult.execute(),\n metadata: async() => await finalResult.metadata(),\n };\n case 'quads':\n return {\n type: 'quads',\n quadStream: > await finalResult.execute(),\n metadata: async() => await finalResult.metadata(),\n };\n case 'boolean':\n return {\n type: 'boolean',\n execute: () => finalResult.execute(),\n };\n case 'void':\n return {\n type: 'void',\n execute: () => finalResult.execute(),\n };\n }\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { getDataDestinationValue } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery, KeysQueryOperation, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IDataDestination, IQuerySourceWrapper } from '@comunica/types';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Assign Sources Exhaustive Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationAssignSourcesExhaustive extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const sources: IQuerySourceWrapper[] = action.context.get(KeysQueryOperation.querySources) ?? [];\n if (sources.length === 0) {\n return { operation: action.operation, context: action.context };\n }\n if (sources.length === 1) {\n const sourceWrapper = sources[0];\n const destination: IDataDestination | undefined = action.context.get(KeysRdfUpdateQuads.destination);\n if (!destination || sourceWrapper.source.referenceValue === getDataDestinationValue(destination)) {\n try {\n const shape = await sourceWrapper.source.getSelectorShape(action.context);\n if (ActorQueryOperation.doesShapeAcceptOperation(shape, action.operation)) {\n return {\n operation: ActorQueryOperation.assignOperationSource(action.operation, sourceWrapper),\n context: action.context,\n };\n }\n } catch {\n // Fallback to the default case when the selector shape does not exist,\n // which can occur for a non-existent destination.\n }\n }\n }\n return {\n operation: this.assignExhaustive(action.operation, sources),\n // We only keep queryString in the context if we only have a single source that accepts the full operation.\n // In that case, the queryString can be sent to the source as-is.\n context: action.context\n .delete(KeysInitQuery.queryString),\n };\n }\n\n /**\n * Assign the given sources to the leaves in the given query operation.\n * Leaves will be wrapped in a union operation and duplicated for every source.\n * The input operation will not be modified.\n * @param operation The input operation.\n * @param sources The sources to assign.\n */\n public assignExhaustive(operation: Algebra.Operation, sources: IQuerySourceWrapper[]): Algebra.Operation {\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n return Util.mapOperation(operation, {\n [Algebra.types.PATTERN](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createUnion(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.LINK](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.NPS](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.SERVICE](subOperation) {\n return {\n result: subOperation,\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT](subOperation, factory) {\n return {\n result: factory.createConstruct(\n self.assignExhaustive(subOperation.input, sources),\n subOperation.template,\n ),\n recurse: false,\n };\n },\n [Algebra.types.DELETE_INSERT](subOperation, factory) {\n return {\n result: factory.createDeleteInsert(\n subOperation.delete,\n subOperation.insert,\n subOperation.where ? self.assignExhaustive(subOperation.where, sources) : undefined,\n ),\n recurse: false,\n };\n },\n });\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica BGP to Join Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationBgpToJoin extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n bgp(op: Algebra.Bgp, factory: Factory) {\n return {\n recurse: false,\n result: factory.createJoin(op.patterns),\n };\n },\n });\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries/lib/Keys';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Construct Distinct Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationConstructDistinct extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (!action.context.has(KeysInitQuery.distinctConstruct)) {\n throw new Error(`${this.name} was not enabled by the query.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n construct(op: Algebra.Construct, factory: Factory) {\n return {\n recurse: false,\n result: factory.createDistinct(factory.createConstruct(op.input, op.template)),\n };\n },\n });\n return { operation, context: action.context.delete(KeysInitQuery.distinctConstruct) };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\nconst AF = new Factory();\n\n/**\n * A comunica Describe To Constructs Subject Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationDescribeToConstructsSubject extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (action.operation.type !== Algebra.types.DESCRIBE) {\n throw new Error(`Actor ${this.name} only supports describe operations, but got ${action.operation.type}`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operationOriginal: Algebra.Describe = action.operation;\n\n // Create separate construct queries for all non-variable terms\n const operations: Algebra.Construct[] = operationOriginal.terms\n .filter(term => term.termType !== 'Variable')\n .map((term: RDF.Term) => {\n // Transform each term to a separate construct operation with S ?p ?o patterns (BGP) for all terms\n const patterns: RDF.BaseQuad[] = [\n DF.quad(term, DF.variable('__predicate'), DF.variable('__object')),\n ];\n\n // eslint-disable-next-line unicorn/no-array-for-each\n patterns.forEach((templatePattern: any) => templatePattern.type = 'pattern');\n const templateOperation: Algebra.Operation = {\n type: Algebra.types.BGP,\n patterns: patterns,\n };\n\n // Create a construct query\n return {\n input: templateOperation,\n template: patterns,\n type: 'construct',\n };\n });\n\n // If we have variables in the term list,\n // create one separate construct operation to determine these variables using the input pattern.\n if (operations.length !== operationOriginal.terms.length) {\n let variablePatterns: Algebra.Pattern[] = [];\n operationOriginal.terms\n .filter(term => term.termType === 'Variable')\n // eslint-disable-next-line unicorn/no-array-for-each\n .forEach((term: RDF.Term, i: number) => {\n // Transform each term to an S ?p ?o pattern in a non-conflicting way\n const patterns: RDF.BaseQuad[] = [\n DF.quad(term, DF.variable(`__predicate${i}`), DF.variable(`__object${i}`)),\n ];\n\n // eslint-disable-next-line unicorn/no-array-for-each\n patterns.forEach((templatePattern: any) => templatePattern.type = 'pattern');\n variablePatterns = [ ...variablePatterns, ... patterns ];\n });\n\n // Add a single construct for the variables\n // This requires a join between the input pattern and our variable patterns that form a simple BGP\n operations.push({\n input: {\n type: Algebra.types.JOIN,\n input: [\n operationOriginal.input,\n { type: Algebra.types.BGP, patterns: variablePatterns },\n ],\n },\n template: variablePatterns,\n type: Algebra.types.CONSTRUCT,\n });\n }\n\n // Union the construct operations\n const operation = AF.createUnion(operations, false);\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationArgs,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { FragmentSelectorShape, IActionContext, IQuerySourceWrapper } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { mapTermsNested, uniqTerms } from 'rdf-terms';\nimport type { Factory } from 'sparqlalgebrajs';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Filter Pushdown Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationFilterPushdown extends ActorOptimizeQueryOperation {\n private readonly aggressivePushdown: boolean;\n private readonly maxIterations: number;\n private readonly splitConjunctive: boolean;\n private readonly mergeConjunctive: boolean;\n private readonly pushIntoLeftJoins: boolean;\n private readonly pushEqualityIntoPatterns: boolean;\n\n public constructor(args: IActorOptimizeQueryOperationFilterPushdownArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n let operation: Algebra.Operation = action.operation;\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n\n // Split conjunctive filters into nested filters\n if (this.splitConjunctive) {\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n // Split conjunctive filters into separate filters\n if (op.expression.expressionType === Algebra.expressionTypes.OPERATOR && op.expression.operator === '&&') {\n self.logDebug(action.context, `Split conjunctive filter into ${op.expression.args.length} nested filters`);\n return {\n recurse: true,\n result: op.expression.args\n .reduce((operation, expression) => factory.createFilter(operation, expression), op.input),\n };\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n }\n\n // Collect selector shapes of all operations\n const sources = this.getSources(operation);\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n const sourceShapes = new Map(<[IQuerySourceWrapper, FragmentSelectorShape][]> await Promise.all(sources\n .map(async source => [ source, await source.source.getSelectorShape(action.context) ])));\n\n // Push down all filters\n // We loop until no more filters can be pushed down.\n let repeat = true;\n let iterations = 0;\n while (repeat && iterations < this.maxIterations) {\n repeat = false;\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n // Check if the filter must be pushed down\n if (!self.shouldAttemptPushDown(op, sources, sourceShapes)) {\n return {\n recurse: true,\n result: op,\n };\n }\n\n // For all filter expressions in the operation,\n // we attempt to push them down as deep as possible into the algebra.\n const variables = self.getExpressionVariables(op.expression);\n const [ isModified, result ] = self\n .filterPushdown(op.expression, variables, op.input, factory, action.context);\n if (isModified) {\n repeat = true;\n }\n return {\n recurse: true,\n result,\n };\n },\n });\n iterations++;\n }\n\n if (iterations > 1) {\n self.logDebug(action.context, `Pushed down filters in ${iterations} iterations`);\n }\n\n // Merge nested filters into conjunctive filters\n if (this.mergeConjunctive) {\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n if (op.input.type === Algebra.types.FILTER) {\n const { nestedExpressions, input } = self.getNestedFilterExpressions(op);\n self.logDebug(action.context, `Merge ${nestedExpressions.length} nested filters into conjunctive filter`);\n return {\n recurse: true,\n result: factory.createFilter(\n input,\n nestedExpressions.slice(1).reduce((previous, current) =>\n factory.createOperatorExpression('&&', [ previous, current ]), nestedExpressions[0]),\n ),\n };\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n }\n\n return { operation, context: action.context };\n }\n\n /**\n * Check if the given filter operation must be attempted to push down, based on the following criteria:\n * - Always push down if aggressive mode is enabled\n * - Push down if the filter is extremely selective\n * - Push down if federated and at least one accepts the filter\n * @param operation The filter operation\n * @param sources The query sources in the operation\n * @param sourceShapes A mapping of sources to selector shapes.\n */\n public shouldAttemptPushDown(\n operation: Algebra.Filter,\n sources: IQuerySourceWrapper[],\n sourceShapes: Map,\n ): boolean {\n // Always push down if aggressive mode is enabled\n if (this.aggressivePushdown) {\n return true;\n }\n\n // Push down if the filter is extremely selective\n const expression = operation.expression;\n if (expression.expressionType === Algebra.expressionTypes.OPERATOR &&\n expression.operator === '=' &&\n ((expression.args[0].expressionType === 'term' && expression.args[0].term.termType !== 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType === 'Variable') ||\n (expression.args[0].expressionType === 'term' && expression.args[0].term.termType === 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType !== 'Variable'))) {\n return true;\n }\n\n // Push down if federated and at least one accepts the filter\n if (sources.some(source => ActorQueryOperation.doesShapeAcceptOperation(sourceShapes.get(source)!, operation))) {\n return true;\n }\n\n // Don't push down in all other cases\n return false;\n }\n\n /**\n * Collected all sources that are defined within the given operation of children recursively.\n * @param operation An operation.\n */\n public getSources(operation: Algebra.Operation): IQuerySourceWrapper[] {\n const sources = new Set();\n const sourceAdder = (subOperation: Algebra.Operation): boolean => {\n const src = ActorQueryOperation.getOperationSource(subOperation);\n if (src) {\n sources.add(src);\n }\n return false;\n };\n Util.recurseOperation(operation, {\n [Algebra.types.PATTERN]: sourceAdder,\n [Algebra.types.LINK]: sourceAdder,\n [Algebra.types.NPS]: sourceAdder,\n [Algebra.types.SERVICE]: sourceAdder,\n });\n return [ ...sources ];\n }\n\n /**\n * Get all variables inside the given expression.\n * @param expression An expression.\n * @return An array of variables, or undefined if the expression is unsupported for pushdown.\n */\n public getExpressionVariables(expression: Algebra.Expression): RDF.Variable[] {\n switch (expression.expressionType) {\n case Algebra.expressionTypes.AGGREGATE:\n case Algebra.expressionTypes.WILDCARD:\n throw new Error(`Getting expression variables is not supported for ${expression.expressionType}`);\n case Algebra.expressionTypes.EXISTENCE:\n return Util.inScopeVariables(expression.input);\n case Algebra.expressionTypes.NAMED:\n return [];\n case Algebra.expressionTypes.OPERATOR:\n return uniqTerms(expression.args.flatMap(arg => this.getExpressionVariables(arg)));\n case Algebra.expressionTypes.TERM:\n if (expression.term.termType === 'Variable') {\n return [ expression.term ];\n }\n return [];\n }\n }\n\n protected getOverlappingOperations(\n operation: Algebra.Operation,\n expressionVariables: RDF.Variable[],\n ): {\n fullyOverlapping: Algebra.Operation[];\n partiallyOverlapping: Algebra.Operation[];\n notOverlapping: Algebra.Operation[];\n } {\n const fullyOverlapping: Algebra.Operation[] = [];\n const partiallyOverlapping: Algebra.Operation[] = [];\n const notOverlapping: Algebra.Operation[] = [];\n for (const input of operation.input) {\n const inputVariables = Util.inScopeVariables(input);\n if (this.variablesSubSetOf(expressionVariables, inputVariables)) {\n fullyOverlapping.push(input);\n } else if (this.variablesIntersect(expressionVariables, inputVariables)) {\n partiallyOverlapping.push(input);\n } else {\n notOverlapping.push(input);\n }\n }\n\n return {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n };\n }\n\n /**\n * Recursively push down the given expression into the given operation if possible.\n * Different operators have different semantics for choosing whether or not to push down,\n * and how this pushdown is done.\n * For every passed operator, it is checked whether or not the filter will have any effect on the operation.\n * If not, the filter is voided.\n * @param expression An expression to push down.\n * @param expressionVariables The variables inside the given expression.\n * @param operation The operation to push down into.\n * @param factory An algebra factory.\n * @param context The action context.\n * @return A tuple indicating if the operation was modified and the modified operation.\n */\n public filterPushdown(\n expression: Algebra.Expression,\n expressionVariables: RDF.Variable[],\n operation: Algebra.Operation,\n factory: Factory,\n context: IActionContext,\n ): [ boolean, Algebra.Operation ] {\n // Void false expressions\n if (this.isExpressionFalse(expression)) {\n return [ true, factory.createUnion([]) ];\n }\n\n // Don't push down (NOT) EXISTS\n if (expression.type === Algebra.types.EXPRESSION &&\n expression.expressionType === Algebra.expressionTypes.EXISTENCE) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n\n switch (operation.type) {\n case Algebra.types.EXTEND:\n // Pass if the variable is not part of the expression\n if (!this.variablesIntersect([ operation.variable ], expressionVariables)) {\n return [ true, factory.createExtend(\n this.filterPushdown(expression, expressionVariables, operation.input, factory, context)[1],\n operation.variable,\n operation.expression,\n ) ];\n }\n return [ false, factory.createFilter(operation, expression) ];\n case Algebra.types.FILTER: {\n // Always pass\n const [ isModified, result ] = this\n .filterPushdown(expression, expressionVariables, operation.input, factory, context);\n return [ isModified, factory.createFilter(result, operation.expression) ];\n }\n case Algebra.types.JOIN: {\n // Don't push down for empty join\n if (operation.input.length === 0) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n\n // Determine overlapping operations\n const {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n } = this.getOverlappingOperations(operation, expressionVariables);\n\n const joins: Algebra.Operation[] = [];\n let isModified = false;\n if (fullyOverlapping.length > 0) {\n isModified = true;\n joins.push(factory.createJoin(fullyOverlapping\n .map(input => this.filterPushdown(expression, expressionVariables, input, factory, context)[1])));\n }\n if (partiallyOverlapping.length > 0) {\n joins.push(factory.createFilter(factory.createJoin(partiallyOverlapping, false), expression));\n }\n if (notOverlapping.length > 0) {\n joins.push(...notOverlapping);\n }\n\n if (joins.length > 1) {\n isModified = true;\n }\n\n if (isModified) {\n this.logDebug(context, `Push down filter across join entries with ${fullyOverlapping.length} fully overlapping, ${partiallyOverlapping.length} partially overlapping, and ${notOverlapping.length} not overlapping`);\n }\n\n return [ isModified, joins.length === 1 ? joins[0] : factory.createJoin(joins) ];\n }\n case Algebra.types.NOP:\n return [ true, operation ];\n case Algebra.types.PROJECT:\n // Push down if variables overlap\n if (this.variablesIntersect(operation.variables, expressionVariables)) {\n return [ true, factory.createProject(\n this.filterPushdown(expression, expressionVariables, operation.input, factory, context)[1],\n operation.variables,\n ) ];\n }\n // Void expression otherwise\n return [ true, operation ];\n case Algebra.types.UNION: {\n // Determine overlapping operations\n const {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n } = this.getOverlappingOperations(operation, expressionVariables);\n\n const unions: Algebra.Operation[] = [];\n let isModified = false;\n if (fullyOverlapping.length > 0) {\n isModified = true;\n unions.push(factory.createUnion(fullyOverlapping\n .map(input => this.filterPushdown(expression, expressionVariables, input, factory, context)[1])));\n }\n if (partiallyOverlapping.length > 0) {\n unions.push(factory.createFilter(factory.createUnion(partiallyOverlapping, false), expression));\n }\n if (notOverlapping.length > 0) {\n unions.push(...notOverlapping);\n }\n\n if (unions.length > 1) {\n isModified = true;\n }\n\n if (isModified) {\n this.logDebug(context, `Push down filter across union entries with ${fullyOverlapping.length} fully overlapping, ${partiallyOverlapping.length} partially overlapping, and ${notOverlapping.length} not overlapping`);\n }\n\n return [ isModified, unions.length === 1 ? unions[0] : factory.createUnion(unions) ];\n }\n case Algebra.types.VALUES:\n // Only keep filter if it overlaps with the variables\n if (this.variablesIntersect(operation.variables, expressionVariables)) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n return [ true, operation ];\n case Algebra.types.LEFT_JOIN: {\n if (this.pushIntoLeftJoins) {\n const rightVariables = Util.inScopeVariables(operation.input[1]);\n if (!this.variablesIntersect(expressionVariables, rightVariables)) {\n // If filter *only* applies to left entry of optional, push it down into that.\n this.logDebug(context, `Push down filter into left join`);\n return [ true, factory.createLeftJoin(\n this.filterPushdown(expression, expressionVariables, operation.input[0], factory, context)[1],\n operation.input[1],\n operation.expression,\n ) ];\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.PATTERN: {\n if (this.pushEqualityIntoPatterns) {\n // Try to push simple FILTER(?s = ) expressions into the pattern\n const pushableResult = this.getEqualityExpressionPushableIntoPattern(expression);\n if (pushableResult) {\n let isModified = false;\n const originalMetadata = operation.metadata;\n operation = mapTermsNested(operation, (value) => {\n if (value.equals(pushableResult.variable)) {\n isModified = true;\n return pushableResult.term;\n }\n return value;\n });\n operation.type = Algebra.types.PATTERN;\n operation.metadata = originalMetadata;\n if (isModified) {\n this.logDebug(context, `Push down filter into pattern for ?${pushableResult.variable.value}`);\n return [ true, factory.createJoin([\n operation,\n factory.createValues(\n [ pushableResult.variable ],\n [{ [`?${pushableResult.variable.value}`]: pushableResult.term }],\n ),\n ]) ];\n }\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.PATH: {\n if (this.pushEqualityIntoPatterns) {\n // Try to push simple FILTER(?s = ) expressions into the path\n const pushableResult = this.getEqualityExpressionPushableIntoPattern(expression);\n if (pushableResult &&\n (operation.subject.equals(pushableResult.variable) || operation.object.equals(pushableResult.variable))) {\n this.logDebug(context, `Push down filter into path for ?${pushableResult.variable.value}`);\n const originalMetadata = operation.metadata;\n operation = factory.createPath(\n operation.subject.equals(pushableResult.variable) ? pushableResult.term : operation.subject,\n operation.predicate,\n operation.object.equals(pushableResult.variable) ? pushableResult.term : operation.object,\n );\n operation.metadata = originalMetadata;\n return [ true, factory.createJoin([\n operation,\n factory.createValues(\n [ pushableResult.variable ],\n [{ [`?${pushableResult.variable.value}`]: pushableResult.term }],\n ),\n ]) ];\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.MINUS:\n case Algebra.types.ALT:\n case Algebra.types.ASK:\n case Algebra.types.BGP:\n case Algebra.types.CONSTRUCT:\n case Algebra.types.DESCRIBE:\n case Algebra.types.DISTINCT:\n case Algebra.types.EXPRESSION:\n case Algebra.types.FROM:\n case Algebra.types.GRAPH:\n case Algebra.types.GROUP:\n case Algebra.types.INV:\n case Algebra.types.LINK:\n case Algebra.types.NPS:\n case Algebra.types.ONE_OR_MORE_PATH:\n case Algebra.types.ORDER_BY:\n case Algebra.types.REDUCED:\n case Algebra.types.SEQ:\n case Algebra.types.SERVICE:\n case Algebra.types.SLICE:\n case Algebra.types.ZERO_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_ONE_PATH:\n case Algebra.types.COMPOSITE_UPDATE:\n case Algebra.types.DELETE_INSERT:\n case Algebra.types.LOAD:\n case Algebra.types.CLEAR:\n case Algebra.types.CREATE:\n case Algebra.types.DROP:\n case Algebra.types.ADD:\n case Algebra.types.MOVE:\n case Algebra.types.COPY:\n // Operations that do not support pushing down\n // Left-join and minus might be possible to support in the future.\n return [ false, factory.createFilter(operation, expression) ];\n }\n }\n\n /**\n * Check if the given expression is a simple equals operation with one variable and one non-literal\n * (or literal with canonical lexical form) term that can be pushed into a pattern.\n * @param expression The current expression.\n * @return The variable and term to fill into the pattern, or undefined.\n */\n public getEqualityExpressionPushableIntoPattern(\n expression: Algebra.Expression,\n ): { variable: RDF.Variable; term: RDF.Term } | undefined {\n if (expression.expressionType === Algebra.expressionTypes.OPERATOR && expression.operator === '=') {\n if (expression.args[0].expressionType === 'term' && expression.args[0].term.termType !== 'Variable' &&\n (expression.args[0].term.termType !== 'Literal' ||\n this.isLiteralWithCanonicalLexicalForm(expression.args[0].term)) &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType === 'Variable') {\n return {\n variable: expression.args[1].term,\n term: expression.args[0].term,\n };\n }\n if (expression.args[0].expressionType === 'term' && expression.args[0].term.termType === 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType !== 'Variable' &&\n (expression.args[1].term.termType !== 'Literal' ||\n this.isLiteralWithCanonicalLexicalForm(expression.args[1].term))) {\n return {\n variable: expression.args[0].term,\n term: expression.args[1].term,\n };\n }\n }\n }\n\n /**\n * Check if the given term is a literal with datatype that where all values\n * can only have one possible lexical representation.\n * In other words, no variants of values exist that should be considered equal.\n * For example: \"01\"^xsd:number and \"1\"^xsd:number will return false.\n * @param term An RDF term.\n * @protected\n */\n protected isLiteralWithCanonicalLexicalForm(term: RDF.Term): boolean {\n if (term.termType === 'Literal') {\n switch (term.datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#string':\n case 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString':\n case 'http://www.w3.org/2001/XMLSchema#normalizedString':\n case 'http://www.w3.org/2001/XMLSchema#anyURI':\n case 'http://www.w3.org/2001/XMLSchema#base64Binary':\n case 'http://www.w3.org/2001/XMLSchema#language':\n case 'http://www.w3.org/2001/XMLSchema#Name':\n case 'http://www.w3.org/2001/XMLSchema#NCName':\n case 'http://www.w3.org/2001/XMLSchema#NMTOKEN':\n case 'http://www.w3.org/2001/XMLSchema#token':\n case 'http://www.w3.org/2001/XMLSchema#hexBinary':\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check if there is an overlap between the two given lists of variables.\n * @param varsA A list of variables.\n * @param varsB A list of variables.\n */\n public variablesIntersect(varsA: RDF.Variable[], varsB: RDF.Variable[]): boolean {\n return varsA.some(varA => varsB.some(varB => varA.equals(varB)));\n }\n\n /**\n * Check if all variables from the first list are included in the second list.\n * The second list may contain other variables as well.\n * @param varsNeedles A list of variables to search for.\n * @param varsHaystack A list of variables to search in.\n */\n public variablesSubSetOf(varsNeedles: RDF.Variable[], varsHaystack: RDF.Variable[]): boolean {\n return varsNeedles.length <= varsHaystack.length &&\n varsNeedles.every(varA => varsHaystack.some(varB => varA.equals(varB)));\n }\n\n /**\n * Check if an expression is simply 'false'.\n * @param expression An expression.\n */\n public isExpressionFalse(expression: Algebra.Expression): boolean {\n return (expression.term && expression.term.termType === 'Literal' && expression.term.value === 'false');\n }\n\n /**\n * Get all directly nested filter expressions.\n * As soon as a non-filter is found, it is returned as the input field.\n * @param op A filter expression.\n */\n public getNestedFilterExpressions(\n op: Algebra.Filter,\n ): { nestedExpressions: Algebra.Expression[]; input: Algebra.Operation } {\n if (op.input.type === Algebra.types.FILTER) {\n const childData = this.getNestedFilterExpressions(op.input);\n return { nestedExpressions: [ op.expression, ...childData.nestedExpressions ], input: childData.input };\n }\n return { nestedExpressions: [ op.expression ], input: op.input };\n }\n}\n\nexport interface IActorOptimizeQueryOperationFilterPushdownArgs extends IActorOptimizeQueryOperationArgs {\n /**\n * If filters should be pushed down as deep as possible.\n * If false, filters will only be pushed down if the source(s) accept them,\n * or if the filter is very selective.\n * @range {boolean}\n * @default {false}\n */\n aggressivePushdown: boolean;\n /**\n * The maximum number of full iterations across the query can be done for attempting to push down filters.\n * @default {10}\n */\n maxIterations: number;\n /**\n * If conjunctive filters should be split into nested filters before applying filter pushdown.\n * This can enable pushing down deeper.\n * @range {boolean}\n * @default {true}\n */\n splitConjunctive: boolean;\n /**\n * If nested filters should be merged into conjunctive filters after applying filter pushdown.\n * @range {boolean}\n * @default {true}\n */\n mergeConjunctive: boolean;\n /**\n * If filters should be pushed into left-joins.\n * @range {boolean}\n * @default {true}\n */\n pushIntoLeftJoins: boolean;\n /**\n * If simple equality filters should be pushed into patterns and paths.\n * This only applies to equality filters with terms that are not literals that have no canonical lexical form.\n * @range {boolean}\n * @default {true}\n */\n pushEqualityIntoPatterns: boolean;\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQuerySourceWrapper } from '@comunica/types';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\n\n/**\n * A comunica Group Sources Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationGroupSources extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n return { operation: await this.groupOperation(action.operation, action.context), context: action.context };\n }\n\n /**\n * Group operations belonging to the same source together, only if that source accepts the grouped operations.\n * This grouping will be done recursively for the whole operation tree.\n * Operations annotated with sources are considered leaves in the tree.\n * @param operation An operation to group.\n * @param context The action context.\n */\n public async groupOperation(operation: Algebra.Operation, context: IActionContext): Promise {\n // Return operation as-is if the operation already has a single source, or if the operation has no children.\n if (ActorQueryOperation.getOperationSource(operation) ?? !('input' in operation)) {\n return operation;\n }\n\n // If operation has a single input, move source annotation upwards if the source can handle it.\n if (!Array.isArray(operation.input)) {\n const groupedInput = await this.groupOperation(operation.input, context);\n if (groupedInput.metadata?.scopedSource) {\n const source: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(groupedInput)!;\n if (ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), operation)) {\n this.logDebug(context, `Hoist 1 source-specific operation into a single ${operation.type} operation for ${source.source.toString()}`);\n ActorQueryOperation.removeOperationSource(groupedInput);\n operation = ActorQueryOperation.assignOperationSource(operation, source);\n }\n }\n return { ...operation, input: groupedInput };\n }\n\n // If operation has multiple inputs, cluster source annotations.\n const inputs: Algebra.Operation[] = await Promise.all(operation.input\n .map(subInput => this.groupOperation(subInput, context)));\n const clusters = this.clusterOperationsWithEqualSources(inputs);\n\n // If we just have a single cluster, move the source annotation upwards\n if (clusters.length === 1) {\n const newInputs = clusters[0];\n const source = ActorQueryOperation.getOperationSource(clusters[0][0])!;\n return {\n ...await this.moveSourceAnnotationUpwardsIfPossible(operation, newInputs, source, context),\n input: newInputs,\n };\n }\n\n // If the number of clusters is equal to the number of original inputs, do nothing.\n if (clusters.length === inputs.length) {\n return { ...operation, input: inputs };\n }\n\n // If we have multiple clusters, created nested multi-operations\n let multiFactoryMethod: (children: Algebra.Operation[], flatten: boolean) => Algebra.Operation;\n switch (operation.type) {\n case Algebra.types.JOIN:\n multiFactoryMethod = AF.createJoin.bind(AF);\n break;\n case Algebra.types.UNION:\n multiFactoryMethod = AF.createUnion.bind(AF);\n break;\n case Algebra.types.ALT:\n multiFactoryMethod = AF.createAlt.bind(AF);\n break;\n case Algebra.types.SEQ:\n multiFactoryMethod = AF.createSeq.bind(AF);\n break;\n default:\n // While LeftJoin and Minus are also multi-operations,\n // these can never occur because they only have 2 inputs,\n // so these cases will always be captured by one of the 2 if-cases above\n // (clusters.length === 1 or clusters.length === input.length)\n\n // In all other cases, error\n throw new Error(`Unsupported operation '${operation.type}' detected while grouping sources`);\n }\n return await this.groupOperationMulti(clusters, multiFactoryMethod, context);\n }\n\n protected async groupOperationMulti(\n clusters: Algebra.Operation[][],\n factoryMethod: (children: Algebra.Operation[], flatten: boolean) => Algebra.Operation,\n context: IActionContext,\n ): Promise {\n let flatten = true;\n const nestedMerges = await Promise.all(clusters.map(async(cluster) => {\n const source = ActorQueryOperation.getOperationSource(cluster[0])!;\n const merged = await this\n .moveSourceAnnotationUpwardsIfPossible(factoryMethod(cluster, true), cluster, source, context);\n if (ActorQueryOperation.getOperationSource(merged)) {\n flatten = false;\n }\n return merged;\n }));\n return factoryMethod(nestedMerges, flatten);\n }\n\n /**\n * Cluster the given operations by equal source annotations.\n * @param operationsIn An array of operations to cluster.\n */\n public clusterOperationsWithEqualSources(operationsIn: Algebra.Operation[]): Algebra.Operation[][] {\n // Operations can have a source, or no source at all\n const sourceOperations: Map = new Map();\n const sourcelessOperations: Algebra.Operation[] = [];\n\n // Cluster by source\n for (const operation of operationsIn) {\n const source: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(operation)!;\n if (source) {\n if (!sourceOperations.has(source)) {\n sourceOperations.set(source, []);\n }\n sourceOperations.get(source)!.push(operation);\n } else {\n sourcelessOperations.push(operation);\n }\n }\n\n // Return clusters\n const clusters: Algebra.Operation[][] = [];\n if (sourcelessOperations.length > 0) {\n clusters.push(sourcelessOperations);\n }\n for (const [ source, operations ] of sourceOperations.entries()) {\n clusters.push(operations\n .map(operation => ActorQueryOperation.assignOperationSource(operation, source)));\n }\n return clusters;\n }\n\n /**\n * If the given source accepts the grouped operation, annotate the grouped operation with the source,\n * and remove the source annotation from the seperate input operations.\n * Otherwise, return the grouped operation unchanged.\n * @param operation A grouped operation consisting of all given input operations.\n * @param inputs An array of operations that share the same source annotation.\n * @param source The common source.\n * @param context The action context.\n */\n public async moveSourceAnnotationUpwardsIfPossible(\n operation: O,\n inputs: Algebra.Operation[],\n source: IQuerySourceWrapper | undefined,\n context: IActionContext,\n ): Promise {\n if (source && ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), operation)) {\n this.logDebug(context, `Hoist ${inputs.length} source-specific operations into a single ${operation.type} operation for ${source.source.toString()}`);\n operation = ActorQueryOperation.assignOperationSource(operation, source);\n for (const input of inputs) {\n ActorQueryOperation.removeOperationSource(input);\n }\n }\n return operation;\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join BGP Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationJoinBgp extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n join(op: Algebra.Join, factory: Factory) {\n if (op.input.every(subInput => subInput.type === 'bgp')) {\n return {\n recurse: false,\n result: factory.createBgp(op.input.flatMap(subInput => subInput.patterns)),\n };\n }\n return {\n recurse: false,\n result: op,\n };\n },\n });\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join Connected Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationJoinConnected extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n join(op: Algebra.Join, factory: Factory) {\n return {\n recurse: false,\n result: ActorOptimizeQueryOperationJoinConnected.cluster(op, factory),\n };\n },\n });\n return { operation, context: action.context };\n }\n\n /**\n * Iteratively cluster join entries based on their overlapping variables.\n * @param op A join operation.\n * @param factory An algebra factory.\n */\n public static cluster(op: Algebra.Join, factory: Factory): Algebra.Operation {\n // Initialize each entry to be in a separate cluster\n const initialClusters: IJoinCluster[] = op.input.map(subOp => ({\n inScopeVariables: Object.fromEntries(Util.inScopeVariables(subOp).map(variable => [ variable.value, true ])),\n entries: [ subOp ],\n }));\n\n // Iteratively merge clusters until they don't change anymore\n let oldClusters: IJoinCluster[];\n let newClusters: IJoinCluster[] = initialClusters;\n do {\n oldClusters = newClusters;\n newClusters = ActorOptimizeQueryOperationJoinConnected.clusterIteration(oldClusters);\n } while (oldClusters.length !== newClusters.length);\n\n // Create new join operation of latest clusters\n const subJoins = newClusters\n .map(cluster => cluster.entries.length === 1 ? cluster.entries[0] : factory.createJoin(cluster.entries));\n return subJoins.length === 1 ? subJoins[0] : factory.createJoin(subJoins, false);\n }\n\n /**\n * Perform a single clustering iteration.\n * Clusters will be joined if they have overlapping variables.\n * @param oldCluster\n */\n public static clusterIteration(oldCluster: IJoinCluster[]): IJoinCluster[] {\n const newClusters: IJoinCluster[] = [];\n\n for (const entry of oldCluster) {\n // Try to add entry to a join cluster\n let joined = false;\n for (const newEntry of newClusters) {\n if (ActorOptimizeQueryOperationJoinConnected\n .haveOverlappingVariables(entry.inScopeVariables, newEntry.inScopeVariables)) {\n newEntry.entries = [ ...newEntry.entries, ...entry.entries ];\n newEntry.inScopeVariables = { ...newEntry.inScopeVariables, ...entry.inScopeVariables };\n joined = true;\n break;\n }\n }\n\n // If none was found, create new cluster\n if (!joined) {\n newClusters.push({\n inScopeVariables: entry.inScopeVariables,\n entries: entry.entries,\n });\n }\n }\n\n return newClusters;\n }\n\n /**\n * Check if the two given variable objects are overlapping.\n * @param variablesA A variables objects.\n * @param variablesB A variables objects.\n */\n public static haveOverlappingVariables(\n variablesA: Record,\n variablesB: Record,\n ): boolean {\n for (const variableA of Object.keys(variablesA)) {\n if (variablesB[variableA]) {\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * A cluster of join entries.\n */\nexport interface IJoinCluster {\n /**\n * Union of all variables in scope within the join entries.\n */\n inScopeVariables: Record;\n /**\n * Join entries\n */\n entries: Algebra.Operation[];\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQuerySourceWrapper, MetadataBindings } from '@comunica/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory, Util } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\n\n/**\n * A comunica Prune Empty Source Operations Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationPruneEmptySourceOperations extends ActorOptimizeQueryOperation {\n private readonly useAskIfSupported: boolean;\n\n public constructor(args: IActorOptimizeQueryOperationPruneEmptySourceOperationsArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n let operation = action.operation;\n\n // Collect all operations with source types\n // Only consider unions of patterns or alts of links, since these are created during exhaustive source assignment.\n const collectedOperations: (Algebra.Pattern | Algebra.Link)[] = [];\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n Util.recurseOperation(operation, {\n [Algebra.types.UNION](subOperation) {\n self.collectMultiOperationInputs(subOperation.input, collectedOperations, Algebra.types.PATTERN);\n return true;\n },\n [Algebra.types.ALT](subOperation) {\n self.collectMultiOperationInputs(subOperation.input, collectedOperations, Algebra.types.LINK);\n return false;\n },\n [Algebra.types.SERVICE]() {\n return false;\n },\n });\n\n // Determine in an async manner whether or not these sources return non-empty results\n const emptyOperations: Set = new Set();\n await Promise.all(collectedOperations.map(async(collectedOperation) => {\n const checkOperation = collectedOperation.type === 'link' ?\n AF.createPattern(DF.variable('?s'), collectedOperation.iri, DF.variable('?o')) :\n collectedOperation;\n if (!await this.hasSourceResults(\n ActorQueryOperation.getOperationSource(collectedOperation)!,\n checkOperation,\n action.context,\n )) {\n emptyOperations.add(collectedOperation);\n }\n }));\n\n // Only perform next mapping if we have at least one empty operation\n if (emptyOperations.size > 0) {\n this.logDebug(action.context, `Pruning ${emptyOperations.size} source-specific operations`);\n // Rewrite operations by removing the empty children\n operation = Util.mapOperation(operation, {\n [Algebra.types.UNION](subOperation, factory) {\n return self.mapMultiOperation(subOperation, emptyOperations, children => factory.createUnion(children));\n },\n [Algebra.types.ALT](subOperation, factory) {\n return self.mapMultiOperation(subOperation, emptyOperations, children => factory.createAlt(children));\n },\n });\n\n // Identify and remove operations that have become empty now due to missing variables\n operation = Util.mapOperation(operation, {\n [Algebra.types.PROJECT](subOperation, factory) {\n // Remove projections that have become empty now due to missing variables\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation)) {\n return {\n recurse: false,\n result: factory.createUnion([]),\n };\n }\n return {\n recurse: true,\n result: subOperation,\n };\n },\n [Algebra.types.LEFT_JOIN](subOperation) {\n // Remove left joins with empty right operation\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation.input[1])) {\n return {\n recurse: true,\n result: subOperation.input[0],\n };\n }\n return {\n recurse: true,\n result: subOperation,\n };\n },\n });\n }\n\n return { operation, context: action.context };\n }\n\n protected static hasEmptyOperation(operation: Algebra.Operation): boolean {\n // If union (or alt) is empty, consider it empty (`Array.every` on an empty array always returns true)\n // But if we find a union with multiple children,\n // *all* of the children must be empty before the full operation is considered empty.\n let emptyOperation = false;\n Util.recurseOperation(operation, {\n [Algebra.types.UNION](subOperation) {\n if (subOperation.input.every(subSubOperation => ActorOptimizeQueryOperationPruneEmptySourceOperations\n .hasEmptyOperation(subSubOperation))) {\n emptyOperation = true;\n }\n return false;\n },\n [Algebra.types.ALT](subOperation) {\n if (subOperation.input.length === 0) {\n emptyOperation = true;\n }\n return false;\n },\n [Algebra.types.LEFT_JOIN](subOperation) {\n // Only recurse into left part of left-join\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation.input[0])) {\n emptyOperation = true;\n }\n return false;\n },\n });\n return emptyOperation;\n }\n\n protected collectMultiOperationInputs(\n inputs: Algebra.Operation[],\n collectedOperations: (Algebra.Pattern | Algebra.Link)[],\n inputType: (Algebra.Pattern | Algebra.Link)['type'],\n ): void {\n for (const input of inputs) {\n if (ActorQueryOperation.getOperationSource(input) && input.type === inputType) {\n collectedOperations.push(input);\n }\n }\n }\n\n protected mapMultiOperation(\n operation: O,\n emptyOperations: Set,\n multiOperationFactory: (input: O['input']) => Algebra.Operation,\n ): {\n result: Algebra.Operation;\n recurse: boolean;\n } {\n // Determine which operations return non-empty results\n const nonEmptyInputs = operation.input.filter(input => !emptyOperations.has(input));\n\n // Remove empty operations\n if (nonEmptyInputs.length === operation.input.length) {\n return { result: operation, recurse: true };\n }\n if (nonEmptyInputs.length === 0) {\n return { result: multiOperationFactory([]), recurse: false };\n }\n if (nonEmptyInputs.length === 1) {\n return { result: nonEmptyInputs[0], recurse: true };\n }\n return { result: multiOperationFactory(nonEmptyInputs), recurse: true };\n }\n\n /**\n * Check if the given query operation will produce at least one result in the given source.\n * @param source A query source.\n * @param input A query operation.\n * @param context The query context.\n */\n public async hasSourceResults(\n source: IQuerySourceWrapper,\n input: Algebra.Operation,\n context: IActionContext,\n ): Promise {\n // Traversal sources should never be considered empty at optimization time.\n if (source.context?.get(KeysQuerySourceIdentify.traverse)) {\n return true;\n }\n\n // Send an ASK query\n if (this.useAskIfSupported) {\n const askOperation = AF.createAsk(input);\n if (ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), askOperation)) {\n return source.source.queryBoolean(askOperation, context);\n }\n }\n\n // Send the operation as-is and check the response cardinality\n const bindingsStream = source.source.queryBindings(input, context);\n return new Promise((resolve, reject) => {\n bindingsStream.on('error', reject);\n bindingsStream.getProperty('metadata', (metadata: MetadataBindings) => {\n bindingsStream.destroy();\n resolve(metadata.cardinality.value > 0);\n });\n });\n }\n}\n\nexport interface IActorOptimizeQueryOperationPruneEmptySourceOperationsArgs extends IActorOptimizeQueryOperationArgs {\n /**\n * If true, ASK queries will be sent to the source instead of COUNT queries to check emptiness for patterns.\n * This will only be done for sources that accept ASK queries.\n * @default {false}\n */\n useAskIfSupported: boolean;\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Rewrite Add Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteAdd extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.ADD](operationOriginal, factory) {\n // CONSTRUCT all quads from the source, and INSERT them into the destination\n const destination = operationOriginal.destination === 'DEFAULT' ?\n DF.defaultGraph() :\n operationOriginal.destination;\n const source = operationOriginal.source === 'DEFAULT' ? DF.defaultGraph() : operationOriginal.source;\n\n const result = factory.createDeleteInsert(undefined, [\n factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), destination),\n ], factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), source));\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Rewrite Copy Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteCopy extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.COPY](operationOriginal, factory) {\n // No-op if source === destination\n let result: Algebra.CompositeUpdate;\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n result = factory.createCompositeUpdate([]);\n } else {\n // COPY is equivalent to drop destination, and add\n result = factory.createCompositeUpdate([\n factory.createDrop(operationOriginal.destination, true),\n factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n ]);\n }\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Rewrite Move Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteMove extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.MOVE](operationOriginal, factory) {\n // No-op if source === destination\n let result: Algebra.CompositeUpdate;\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n result = factory.createCompositeUpdate([]);\n } else {\n // MOVE is equivalent to drop destination, add, and drop source\n const updates = [\n factory.createDrop(operationOriginal.destination, true),\n factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n factory.createDrop(operationOriginal.source),\n ];\n result = factory.createCompositeUpdate(updates);\n }\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Ask Query Operation Actor.\n */\nexport class ActorQueryOperationAsk extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'ask');\n }\n\n public async testOperation(_operation: Algebra.Ask, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Ask, context: IActionContext): Promise {\n // Call other query operations like this:\n const output: IQueryOperationResult = await this.mediatorQueryOperation.mediate(\n { operation: operation.input, context },\n );\n const { bindingsStream }: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(output);\n return { type: 'boolean', execute: async() => (await bindingsStream.take(1).toArray()).length === 1 };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL BGP operations by rewriting it as a join operator.\n */\nexport class ActorQueryOperationBgpJoin extends ActorQueryOperationTypedMediated {\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'bgp');\n }\n\n public async testOperation(_operation: Algebra.Bgp, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Bgp, context: IActionContext):\n Promise {\n return this.mediatorQueryOperation.mediate({\n operation: ActorQueryOperationBgpJoin.FACTORY.createJoin(operation.patterns),\n context,\n });\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { getTermsNested, getVariables, uniqTerms } from 'rdf-terms';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { BindingsToQuadsIterator } from './BindingsToQuadsIterator';\n\n/**\n * A comunica Construct Query Operation Actor.\n */\nexport class ActorQueryOperationConstruct extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'construct');\n }\n\n /**\n * Find all variables in a list of triple patterns.\n * @param {Algebra.Pattern[]} patterns An array of triple patterns.\n * @return {RDF.Variable[]} The variables in the triple patterns.\n */\n public static getVariables(patterns: RDF.BaseQuad[]): RDF.Variable[] {\n return uniqTerms(( []).concat\n .apply([], patterns.map(pattern => getVariables(getTermsNested(pattern)))));\n }\n\n public async testOperation(_operation: Algebra.Construct, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.Construct, context: IActionContext):\n Promise {\n // Apply a projection on our CONSTRUCT variables first, as the query may contain other variables as well.\n const variables: RDF.Variable[] = ActorQueryOperationConstruct.getVariables(operationOriginal.template);\n const operation: Algebra.Operation = { type: Algebra.types.PROJECT, input: operationOriginal.input, variables };\n\n // Evaluate the input query\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation, context }),\n );\n\n // Construct triples using the result based on the pattern.\n // If it's a DESCRIBE query don't apply the blank node localisation.\n const quadStream: AsyncIterator = new BindingsToQuadsIterator(\n operationOriginal.template,\n output.bindingsStream,\n );\n\n // Let the final metadata contain the estimated number of triples\n const metadata: (() => Promise) = () => output.metadata().then(meta => ({\n ...meta,\n order: undefined,\n cardinality: {\n type: meta.cardinality.type,\n value: meta.cardinality.value * operationOriginal.template.length,\n },\n canContainUndefs: false,\n availableOrders: undefined,\n }));\n\n return {\n metadata,\n quadStream,\n type: 'quads',\n };\n }\n}\n","import type { Bindings, BindingsStream } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator, MultiTransformIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { mapTermsNested } from 'rdf-terms';\n\nconst DF = new DataFactory();\n\n/**\n * Transforms a bindings stream into a quad stream given a quad template.\n *\n * This conforms to the SPARQL 1.1 spec on constructing triples:\n * https://www.w3.org/TR/sparql11-query/#rConstructTriples\n */\nexport class BindingsToQuadsIterator extends MultiTransformIterator {\n protected readonly template: RDF.BaseQuad[];\n protected blankNodeCounter: number;\n\n public constructor(template: RDF.BaseQuad[], bindingsStream: BindingsStream) {\n super(bindingsStream, { autoStart: false });\n this.template = template;\n this.blankNodeCounter = 0;\n }\n\n /**\n * Bind the given term.\n * If the term is a variable and the variable is bound in the bindings object,\n * return the bindings value.\n * If the term is a variable and the variable is not bound in the bindings object,\n * a falsy value is returned..\n * Otherwise, the term itself is returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Term} term An RDF term.\n * @return {RDF.Term} If the given term is not a variable, the term itself is returned.\n * If the given term is a variable, then the bound term is returned,\n * or a falsy value if it did not exist in the bindings.\n */\n public static bindTerm(bindings: Bindings, term: RDF.Term): RDF.Term | undefined {\n if (term.termType === 'Variable') {\n return bindings.get(term);\n }\n return term;\n }\n\n /**\n * Bind the given quad pattern.\n * If one of the terms was a variable AND is not bound in the bindings,\n * a falsy value will be returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad} pattern An RDF quad.\n * @return {RDF.Quad} A bound RDF quad or undefined.\n */\n public static bindQuad(bindings: Bindings, pattern: RDF.BaseQuad): RDF.Quad | undefined {\n try {\n return mapTermsNested( pattern, (term) => {\n const boundTerm = BindingsToQuadsIterator.bindTerm(bindings, term);\n if (!boundTerm) {\n throw new Error('Unbound term');\n }\n return boundTerm;\n });\n } catch {\n // Do nothing\n }\n }\n\n /**\n * Convert a blank node to a unique blank node in the given context.\n * If the given term is not a blank node, the term itself will be returned.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.Term} term The term that should be localized.\n * @return {RDF.Term} A term.\n */\n public static localizeBlankNode(blankNodeCounter: number, term: RDF.Term): RDF.Term {\n if (term.termType === 'BlankNode') {\n return DF.blankNode(`${term.value}${blankNodeCounter}`);\n }\n return term;\n }\n\n /**\n * Convert the given quad to a quad that only contains unique blank nodes.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.BaseQuad} pattern The pattern that should be localized.\n * @return {RDF.BaseQuad} A quad.\n */\n public static localizeQuad(blankNodeCounter: number, pattern: RDF.BaseQuad): RDF.BaseQuad {\n return mapTermsNested(pattern, term => BindingsToQuadsIterator.localizeBlankNode(blankNodeCounter, term));\n }\n\n /**\n * Convert the given template to a list of quads based on the given bindings.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad[]} template A list of quad patterns.\n * @param blankNodeCounter A counter value for the blank node.\n * @return {RDF.Quad[]} A list of quads.\n */\n public bindTemplate(bindings: Bindings, template: RDF.BaseQuad[], blankNodeCounter: number): RDF.Quad[] {\n const quads: RDF.BaseQuad[] = template\n // Make sure the multiple instantiations of the template contain different blank nodes, as required by SPARQL 1.1.\n .map(BindingsToQuadsIterator.localizeQuad.bind(null, blankNodeCounter))\n // Bind variables to bound terms\n .map(x => BindingsToQuadsIterator.bindQuad.bind(null, bindings)(x))\n // Remove quads that contained unbound terms, i.e., variables.\n .filter(Boolean);\n return quads;\n }\n\n public override _createTransformer(bindings: Bindings): AsyncIterator {\n return new ArrayIterator(this.bindTemplate(\n bindings,\n this.template,\n this.blankNodeCounter++,\n ), { autoStart: false });\n }\n}\n","import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { MediatorHashQuads } from '@comunica/bus-hash-quads';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Distinct Hash Query Operation Actor.\n */\nexport class ActorQueryOperationDistinctHash extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly mediatorHashQuads: MediatorHashQuads;\n\n public constructor(args: IActorQueryOperationDistinctHashArgs) {\n super(args, 'distinct');\n }\n\n public async testOperation(_operation: Algebra.Distinct, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Distinct, context: IActionContext): Promise {\n const output = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n\n // TODO: In next/major, remove undefined check when mediatorHashQuads is made required\n if (output.type === 'quads' && this.mediatorHashQuads !== undefined) {\n const outputQuads: IQueryOperationResultQuads = ActorQueryOperation.getSafeQuads(\n output,\n );\n\n const quadStream: AsyncIterator = outputQuads.quadStream.filter(await this.newHashFilterQuads(context));\n return {\n type: 'quads',\n quadStream,\n metadata: outputQuads.metadata,\n };\n }\n\n const outputBindings: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n output,\n );\n\n const bindingsStream: BindingsStream = outputBindings.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: outputBindings.metadata,\n };\n }\n\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n public async newHashFilter(context: IActionContext): Promise<(bindings: Bindings) => boolean> {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes: Record = {};\n return (bindings: Bindings) => {\n const hash: string = hashFunction(bindings);\n\n return !(hash in hashes) && (hashes[hash] = true);\n };\n }\n\n /**\n * Create a new distinct filter function to hash quads.\n * This will maintain an internal hash datastructure so that every quad object only returns true once.\n * @param context The action context.\n * @return {(quad: RDF.Quad) => boolean} A distinct filter for quads.\n */\n public async newHashFilterQuads(context: IActionContext): Promise<(quad: RDF.Quad) => boolean> {\n // TODO: In next/major, this check can be removed when mediatorHashQuads is made required\n if (this.mediatorHashQuads === undefined) {\n return _quad => true;\n }\n const { hashFunction } = await this.mediatorHashQuads.mediate({ allowHashCollisions: true, context });\n const hashes: Record = {};\n return (quad: RDF.Quad) => {\n const hash: string = hashFunction(quad);\n\n return !(hash in hashes) && (hashes[hash] = true);\n };\n }\n}\n\nexport interface IActorQueryOperationDistinctHashArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n // TODO: In next/major, this field should be made required in the next major update\n mediatorHashQuads?: MediatorHashQuads;\n}\n","import { BindingsFactory, bindingsToString } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { ExpressionError } from '@comunica/expression-evaluator';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult, IQueryOperationResultBindings } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Extend Query Operation Actor.\n *\n * See https://www.w3.org/TR/sparql11-query/#sparqlAlgebra;\n */\nexport class ActorQueryOperationExtend extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationExtendArgs) {\n super(args, 'extend');\n }\n\n public async testOperation(operation: Algebra.Extend, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Will throw error for unsupported opperations\n const _ = Boolean(new AsyncEvaluator(\n operation.expression,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n ));\n return true;\n }\n\n public async runOperation(operation: Algebra.Extend, context: IActionContext):\n Promise {\n const { expression, input, variable } = operation;\n\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: input, context }),\n );\n\n // Throw if the variable has already been bound\n if ((await output.metadata()).variables.some(innerVariable => innerVariable.equals(variable))) {\n throw new Error(`Illegal binding to variable '${variable.value}' that has already been bound`);\n }\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(expression, config);\n\n // Transform the stream by extending each Bindings with the expression result\n const transform = async(bindings: Bindings, next: any, push: (pusbBindings: Bindings) => void): Promise => {\n try {\n const result = await evaluator.evaluate(bindings);\n // Extend operation is undefined when the key already exists\n // We just override it here.\n const extended = bindings.set(variable, result);\n push(extended);\n } catch (error: unknown) {\n if (isExpressionError( error)) {\n // Errors silently don't actually extend according to the spec\n push(bindings);\n // But let's warn anyway\n this.logWarn(context, `Expression error for extend operation (${( error).message})` +\n `with bindings '${bindingsToString(bindings)}'`);\n } else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n\n // eslint-disable-next-line ts/no-misused-promises\n const bindingsStream = output.bindingsStream.transform({ autoStart: false, transform });\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const outputMetadata = await output.metadata();\n return { ...outputMetadata, variables: [ ...outputMetadata.variables, variable ]};\n },\n };\n }\n}\n\nexport interface IActorQueryOperationExtendArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory, bindingsToString } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Filter Sparqlee Query Operation Actor.\n */\nexport class ActorQueryOperationFilter extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationFilterSparqleeArgs) {\n super(args, 'filter');\n }\n\n public async testOperation(operation: Algebra.Filter, context: IActionContext): Promise {\n // Will throw error for unsupported operators\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const _ = new AsyncEvaluator(operation.expression, config);\n return true;\n }\n\n public async runOperation(operation: Algebra.Filter, context: IActionContext):\n Promise {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(operation.expression, config);\n\n const transform = async(item: Bindings, next: any, push: (bindings: Bindings) => void): Promise => {\n try {\n const result = await evaluator.evaluateAsEBV(item);\n if (result) {\n push(item);\n }\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n //\n // > Specifically, FILTERs eliminate any solutions that,\n // > when substituted into the expression, either result in\n // > an effective boolean value of false or produce an error.\n // > ...\n // > These errors have no effect outside of FILTER evaluation.\n // https://www.w3.org/TR/sparql11-query/#expressions\n if (isExpressionError( error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings: bindingsToString(item) }));\n } else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n\n // eslint-disable-next-line ts/no-misused-promises\n const bindingsStream = output.bindingsStream.transform({ transform, autoStart: false });\n return { type: 'bindings', bindingsStream, metadata: output.metadata };\n }\n}\n\nexport interface IActorQueryOperationFilterSparqleeArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica From Query Operation Actor.\n */\nexport class ActorQueryOperationFromQuad extends ActorQueryOperationTypedMediated {\n private static readonly FACTORY: Factory = new Factory();\n private static readonly ALGEBRA_TYPES: string[] = Object.keys(Algebra.types).map(key => ( Algebra.types)[key]);\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'from');\n }\n\n /**\n * Create a deep copy of the given operation.\n * @param {Operation} operation An operation.\n * @param {(subOperation: Operation) => Operation} recursiveCb A callback for recursive operation calls.\n * @return {Operation} The copied operation.\n */\n public static copyOperation(\n operation: Algebra.Operation,\n recursiveCb: (subOperation: Algebra.Operation) => Algebra.Operation,\n ): Algebra.Operation {\n const copiedOperation: Algebra.Operation = {};\n for (const key of Object.keys(operation)) {\n if (Array.isArray(operation[key]) && key !== 'template') {\n // We exclude the 'template' entry, as we don't want to modify the template value of construct operations\n if (key === 'variables') {\n copiedOperation[key] = operation[key];\n } else {\n copiedOperation[key] = operation[key].map(recursiveCb);\n }\n } else if (ActorQueryOperationFromQuad.ALGEBRA_TYPES.includes(operation[key].type)) {\n copiedOperation[key] = recursiveCb(operation[key]);\n } else {\n copiedOperation[key] = operation[key];\n }\n }\n return copiedOperation;\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as default graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} defaultGraphs Graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationDefaultGraph(operation: Algebra.Operation, defaultGraphs: RDF.Term[]): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n if (operation.type === 'bgp') {\n return ActorQueryOperationFromQuad.joinOperations(operation.patterns.map((pattern: Algebra.Pattern) => {\n if (pattern.graph.termType !== 'DefaultGraph') {\n return ActorQueryOperationFromQuad.FACTORY.createBgp([ pattern ]);\n }\n const bgps = defaultGraphs.map((graph: RDF.Term) =>\n ActorQueryOperationFromQuad.FACTORY.createBgp([ Object.assign(\n ActorQueryOperationFromQuad.FACTORY\n .createPattern(pattern.subject, pattern.predicate, pattern.object, graph),\n { metadata: pattern.metadata },\n ) ]));\n return ActorQueryOperationFromQuad.unionOperations(bgps);\n }));\n }\n if (operation.graph.termType !== 'DefaultGraph') {\n return operation;\n }\n const paths = defaultGraphs.map(\n (graph: RDF.Term) => {\n if (operation.type === 'path') {\n return ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n }\n return Object.assign(ActorQueryOperationFromQuad.FACTORY\n .createPattern(\n operation.subject,\n operation.predicate,\n operation.object,\n graph,\n ), { metadata: operation.metadata });\n },\n );\n return ActorQueryOperationFromQuad.unionOperations(paths);\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this.applyOperationDefaultGraph(subOperation, defaultGraphs),\n );\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as named graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} namedGraphs Graph terms.\n * @param {RDF.Term[]} defaultGraphs Default graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationNamedGraph(\n operation: Algebra.Operation,\n namedGraphs: RDF.NamedNode[],\n defaultGraphs: RDF.Term[],\n ): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n const patternGraph: RDF.Term = operation.type === 'bgp' ? operation.patterns[0].graph : operation.graph;\n if (patternGraph.termType === 'DefaultGraph') {\n // SPARQL spec (8.2) describes that when FROM NAMED's are used without a FROM, the default graph must be empty.\n // The FROMs are transformed before this step to a named node, so this will not apply to this case anymore.\n return { type: Algebra.types.BGP, patterns: []};\n }\n if (patternGraph.termType === 'Variable') {\n if (namedGraphs.length === 1) {\n const graph: RDF.NamedNode = namedGraphs[0];\n // If the pattern graph is a variable, replace the graph and bind the variable using VALUES\n const bindings: Record = {};\n bindings[`?${patternGraph.value}`] = graph;\n const values: Algebra.Values = ActorQueryOperationFromQuad.FACTORY\n .createValues([ patternGraph ], [ bindings ]);\n\n let pattern: Algebra.Operation;\n if (operation.type === 'bgp') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createBgp(operation.patterns.map((pat: Algebra.Pattern) => ActorQueryOperationFromQuad.FACTORY\n .createPattern(pat.subject, pat.predicate, pat.object, graph)));\n } else if (operation.type === 'path') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n } else {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPattern(operation.subject, operation.predicate, operation.object, graph);\n }\n\n return ActorQueryOperationFromQuad.FACTORY.createJoin([ values, pattern ]);\n }\n // If the pattern graph is a variable, take the union of the pattern applied to each available named graph\n return ActorQueryOperationFromQuad.unionOperations(namedGraphs.map(\n (graph: RDF.NamedNode) => ActorQueryOperationFromQuad.applyOperationNamedGraph(\n operation,\n [ graph ],\n defaultGraphs,\n ),\n ));\n }\n // The pattern's graph is defined (including the default graphs)\n const isNamedGraphAvailable: boolean = [ ...namedGraphs, ...defaultGraphs ].some(\n (namedGraph: RDF.Term) => namedGraph.equals(patternGraph),\n );\n if (isNamedGraphAvailable) {\n // Return the pattern as-is if the pattern's graph was selected in a FROM NAMED\n return operation;\n }\n // No-op if the pattern's graph was not selected in a FROM NAMED.\n return { type: Algebra.types.BGP, patterns: []};\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this.applyOperationNamedGraph(subOperation, namedGraphs, defaultGraphs),\n );\n }\n\n /**\n * Transform the given array of operations into a join operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Join} A join operation.\n */\n public static joinOperations(operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createJoin(operations);\n }\n throw new Error('A join can only be applied on at least one operation');\n }\n\n /**\n * Transform the given array of operations into a union operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Union} A union operation.\n */\n public static unionOperations(operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createUnion(operations);\n }\n throw new Error('A union can only be applied on at least one operation');\n }\n\n /**\n * Transform an operation based on the default and named graphs in the pattern.\n *\n * FROM sets the default graph.\n * If multiple are available, take the union of the operation for all of them at quad-pattern level.\n *\n * FROM NAMED indicates which named graphs are available.\n * This will rewrite the query so that only triples from the given named graphs can be selected.\n *\n * @param {From} pattern A from operation.\n * @return {Operation} The transformed operation.\n */\n public static createOperation(pattern: Algebra.From): Algebra.Operation {\n let operation: Algebra.Operation = pattern.input;\n if (pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationDefaultGraph(operation, pattern.default);\n }\n if (pattern.named.length > 0 || pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationNamedGraph(operation, pattern.named, pattern.default);\n }\n return operation;\n }\n\n public async testOperation(_operation: Algebra.From, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.From,\n context: IActionContext,\n ): Promise {\n const operation: Algebra.Operation = ActorQueryOperationFromQuad.createOperation(operationOriginal);\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator } from '@comunica/expression-evaluator';\nimport type { BindingsStream, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { ArrayIterator, TransformIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { GroupsState } from './GroupsState';\n\n/**\n * A comunica Group Query Operation Actor.\n */\nexport class ActorQueryOperationGroup extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationGroupArgs) {\n super(args, 'group');\n }\n\n public async testOperation(operation: Algebra.Group, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n for (const aggregate of operation.aggregates) {\n // Will throw for unsupported expressions\n const _ = new AsyncEvaluator(\n aggregate.expression,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n );\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.Group, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Create a hash function\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n\n // Get result stream for the input query\n const { input, aggregates } = operation;\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n\n // The variables in scope are the variables on which we group, i.e. pattern.variables.\n // For 'GROUP BY ?x, ?z', this is [?x, ?z], for 'GROUP by expr(?x) as ?e' this is [?e].\n // But also in scope are the variables defined by the aggregations, since GROUP has to handle this.\n const variables = [\n ...operation.variables,\n ...aggregates.map(agg => agg.variable),\n ];\n\n const sparqleeConfig = ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n );\n\n // Wrap a new promise inside an iterator that completes when the stream has ended or when an error occurs\n const bindingsStream = new TransformIterator(() => new Promise((resolve, reject) => {\n const groups = new GroupsState(hashFunction, operation, sparqleeConfig, bindingsFactory);\n\n // Phase 2: Collect aggregator results\n // We can only return when the binding stream ends, when that happens\n // we return the identified groups. Which are nothing more than Bindings\n // of the grouping variables merged with the aggregate variables\n // eslint-disable-next-line ts/no-misused-promises\n output.bindingsStream.on('end', async() => {\n try {\n const bindingsStreamInner = new ArrayIterator(await groups.collectResults(), { autoStart: false });\n resolve(bindingsStreamInner);\n } catch (error: unknown) {\n reject(error);\n }\n });\n\n // Make sure to propagate any errors in the binding stream\n output.bindingsStream.on('error', reject);\n\n // Phase 1: Consume the stream, identify the groups and populate the aggregators.\n // We need to bind this after the 'error' and 'end' listeners to avoid the\n // stream having ended before those listeners are bound.\n output.bindingsStream.on('data', (bindings) => {\n groups.consumeBindings(bindings).catch(reject);\n });\n }), { autoStart: false });\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await output.metadata(), variables }),\n };\n }\n}\n\nexport interface IActorQueryOperationGroupArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { HashFunction } from '@comunica/bus-hash-bindings';\nimport type { IAsyncEvaluatorContext } from '@comunica/expression-evaluator';\nimport { AsyncAggregateEvaluator } from '@comunica/expression-evaluator';\nimport type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A simple type alias for strings that should be hashes of Bindings\n */\nexport type BindingsHash = string;\n\n/**\n * A state container for a single group\n *\n * @property {Bindings} bindings - The binding entries on which we group\n */\nexport interface IGroup {\n bindings: Bindings;\n aggregators: Record;\n}\n\n/**\n * A state manager for the groups constructed by consuming the bindings-stream.\n */\nexport class GroupsState {\n private readonly groups: Map;\n // We need to the promises of a group so we can await the initialisation/ creation of them.\n // Without this we could have duplicate work/ override precious work.\n private readonly groupsInitializer: Map>;\n private readonly groupVariables: Set;\n private readonly distinctHashes: null | Map>;\n private waitCounter: number;\n // Function that resolves the promise given by collectResults\n private waitResolver: (bindings: Bindings[]) => void;\n private resultHasBeenCalled: boolean;\n\n public constructor(\n private readonly hashFunction: HashFunction,\n private readonly pattern: Algebra.Group,\n private readonly sparqleeConfig: IAsyncEvaluatorContext,\n private readonly bindingsFactory: BindingsFactory,\n ) {\n this.groups = new Map();\n this.groupsInitializer = new Map();\n this.groupVariables = new Set(this.pattern.variables.map(x => x.value));\n this.waitCounter = 1;\n this.resultHasBeenCalled = false;\n }\n\n /**\n * - Consumes a stream binding\n * - Find the corresponding group and create one if need be\n * - Feeds the binding to the group's aggregators\n *\n * @param {Bindings} bindings - The Bindings to consume\n */\n public consumeBindings(bindings: Bindings): Promise {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n // We increment the counter and decrement him when put action is performed.\n this.waitCounter++;\n\n // Select the bindings on which we group\n const grouper = bindings\n .filter((_, variable) => this.groupVariables.has(variable.value));\n const groupHash = this.hashBindings(grouper);\n\n // First member of group -> create new group\n let groupInitializer: Promise | undefined = this.groupsInitializer.get(groupHash);\n\n let res: Promise;\n if (groupInitializer) {\n const groupInitializerDefined = groupInitializer;\n res = (async() => {\n const group = await groupInitializerDefined;\n await Promise.all(this.pattern.aggregates.map(async(aggregate) => {\n // Distinct handling is done in the aggregator.\n const variable = aggregate.variable.value;\n await group.aggregators[variable].put(bindings);\n }));\n })().then(async() => {\n this.subtractWaitCounterAndCollect();\n });\n } else {\n // Initialize state for all aggregators for new group\n groupInitializer = (async() => {\n const aggregators: Record = {};\n await Promise.all(this.pattern.aggregates.map(async(aggregate) => {\n const key = aggregate.variable.value;\n aggregators[key] = new AsyncAggregateEvaluator(aggregate, this.sparqleeConfig);\n await aggregators[key].put(bindings);\n }));\n\n const group = { aggregators, bindings: grouper };\n this.groups.set(groupHash, group);\n this.subtractWaitCounterAndCollect();\n return group;\n })();\n this.groupsInitializer.set(groupHash, groupInitializer);\n res = groupInitializer;\n }\n return res;\n }\n\n private subtractWaitCounterAndCollect(): void {\n if (--this.waitCounter === 0) {\n this.handleResultCollection();\n }\n }\n\n private handleResultCollection(): void {\n // Collect groups\n let rows: Bindings[] = [ ...this.groups ].map(([ _, group ]) => {\n const { bindings: groupBindings, aggregators } = group;\n\n // Collect aggregator bindings\n // If the aggregate errorred, the result will be undefined\n let returnBindings = groupBindings;\n for (const variable in aggregators) {\n const value = aggregators[variable].result();\n if (value) {\n // Filter undefined\n returnBindings = returnBindings.set(DF.variable(variable), value);\n }\n }\n\n // Merge grouping bindings and aggregator bindings\n return returnBindings;\n });\n\n // Case: No Input\n // Some aggregators still define an output on the empty input\n // Result is a single Bindings\n if (rows.length === 0 && this.groupVariables.size === 0) {\n const single: [RDF.Variable, RDF.Term][] = [];\n for (const aggregate of this.pattern.aggregates) {\n const key = aggregate.variable;\n const value = AsyncAggregateEvaluator.emptyValue(aggregate);\n if (value !== undefined) {\n single.push([ key, value ]);\n }\n }\n rows = [ this.bindingsFactory.bindings(single) ];\n }\n this.waitResolver(rows);\n }\n\n private resultCheck(): Promise | undefined {\n if (this.resultHasBeenCalled) {\n return Promise.reject(new Error('Calling any function after calling collectResult is invalid.'));\n }\n }\n\n /**\n * Collect the result of the final state. This returns a Bindings per group,\n * and a (possibly empty) Bindings in case no Bindings have been consumed yet.\n * You can only call this method once, after calling this method,\n * calling any function on this will result in an error being thrown.\n */\n public collectResults(): Promise {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n this.resultHasBeenCalled = true;\n const res = new Promise((resolve) => {\n this.waitResolver = resolve;\n });\n this.subtractWaitCounterAndCollect();\n return res;\n }\n\n /**\n * @param {Bindings} bindings - Bindings to hash\n */\n private hashBindings(bindings: Bindings): BindingsHash {\n return this.hashFunction(bindings);\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryOperationResult, IActionContext, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join Query Operation Actor.\n */\nexport class ActorQueryOperationJoin extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationJoinArgs) {\n super(args, 'join');\n }\n\n public async testOperation(_operation: Algebra.Join, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.Join,\n context: IActionContext,\n ): Promise {\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n\n return this.mediatorJoin.mediate({ type: 'inner', entries, context });\n }\n}\n\nexport interface IActorQueryOperationJoinArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { IQueryOperationResult, Bindings, IActionContext, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica LeftJoin Query Operation Actor.\n */\nexport class ActorQueryOperationLeftJoin extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationLeftJoinArgs) {\n super(args, 'leftjoin');\n }\n\n public async testOperation(_operation: Algebra.LeftJoin, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.LeftJoin, context: IActionContext):\n Promise {\n // Delegate to join bus\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n const joined = await this.mediatorJoin.mediate({ type: 'optional', entries, context });\n\n // If the pattern contains an expression, filter the resulting stream\n if (operationOriginal.expression) {\n const rightMetadata = await entries[1].output.metadata();\n const expressionVariables = rightMetadata.variables;\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(operationOriginal.expression, config);\n const bindingsStream = joined.bindingsStream\n .transform({\n autoStart: false,\n // eslint-disable-next-line ts/no-misused-promises\n transform: async(bindings: Bindings, done: () => void, push: (item: Bindings) => void) => {\n // If variables of the right-hand entry are missing, we skip expression evaluation\n if (!expressionVariables.every(variable => bindings.has(variable.value))) {\n push(bindings);\n return done();\n }\n\n try {\n const result = await evaluator.evaluateAsEBV(bindings);\n if (result) {\n push(bindings);\n }\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // Left Join is defined in terms of Filter (https://www.w3.org/TR/sparql11-query/#defn_algJoin),\n // and Filter requires this (https://www.w3.org/TR/sparql11-query/#expressions).\n if (isExpressionError(error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings }));\n } else {\n bindingsStream.emit('error', error);\n }\n }\n done();\n },\n });\n joined.bindingsStream = bindingsStream;\n }\n\n return joined;\n }\n}\n\nexport interface IActorQueryOperationLeftJoinArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Minus Query Operation Actor.\n */\nexport class ActorQueryOperationMinus extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationMinusArgs) {\n super(args, 'minus');\n }\n\n public async testOperation(_operation: Algebra.Minus, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.Minus,\n context: IActionContext,\n ): Promise {\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n\n return this.mediatorJoin.mediate({ type: 'minus', entries, context });\n }\n}\n\nexport interface IActorQueryOperationMinusArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { SingletonIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation)\n * actor that handles SPARQL nop operations.\n */\nexport class ActorQueryOperationNop extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationNopArgs) {\n super(args, 'nop');\n }\n\n public async testOperation(_operation: Algebra.Nop, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Nop, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n return {\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n };\n }\n}\n\nexport interface IActorQueryOperationNopArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError, orderTypes } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Term } from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { SortIterator } from './SortIterator';\n\n/**\n * A comunica OrderBy Sparqlee Query Operation Actor.\n */\nexport class ActorQueryOperationOrderBy extends ActorQueryOperationTypedMediated {\n private readonly window: number;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationOrderBySparqleeArgs) {\n super(args, 'orderby');\n this.window = args.window ?? Number.POSITIVE_INFINITY;\n }\n\n public async testOperation(operation: Algebra.OrderBy, context: IActionContext): Promise {\n // Will throw error for unsupported operators\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n for (let expr of operation.expressions) {\n expr = this.extractSortExpression(expr);\n const _ = new AsyncEvaluator(\n expr,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n );\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.OrderBy, context: IActionContext):\n Promise {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n\n const options = { window: this.window };\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const sparqleeConfig = {\n ...ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n };\n let { bindingsStream } = output;\n\n // Sorting backwards since the first one is the most important therefore should be ordered last.\n for (let i = operation.expressions.length - 1; i >= 0; i--) {\n let expr = operation.expressions[i];\n const isAscending = this.isAscending(expr);\n expr = this.extractSortExpression(expr);\n // Transform the stream by annotating it with the expr result\n const evaluator = new AsyncEvaluator(expr, sparqleeConfig);\n interface IAnnotatedBinding {\n bindings: Bindings;\n result: Term | undefined;\n }\n\n const transform = async(bindings: Bindings, next: any, push: (result: IAnnotatedBinding) => void):\n Promise => {\n try {\n const result = await evaluator.evaluate(bindings);\n push({ bindings, result });\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // I can't recall where this is defined in the spec.\n if (!isExpressionError( error)) {\n bindingsStream.emit('error', error);\n }\n push({ bindings, result: undefined });\n }\n next();\n };\n // eslint-disable-next-line ts/no-misused-promises\n const transformedStream = bindingsStream.transform({ transform });\n\n // Sort the annoted stream\n const sortedStream = new SortIterator(transformedStream, (left, right) => {\n let compare = orderTypes(left.result, right.result);\n if (!isAscending) {\n compare *= -1;\n }\n return compare;\n }, options);\n\n // Remove the annotation\n bindingsStream = sortedStream.map(({ bindings }) => bindings);\n }\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n\n // Remove descending operator if necessary\n private extractSortExpression(expr: Algebra.Expression): Algebra.Expression {\n const { expressionType, operator } = expr;\n if (expressionType !== Algebra.expressionTypes.OPERATOR) {\n return expr;\n }\n return operator === 'desc' ?\n expr.args[0] :\n expr;\n }\n\n private isAscending(expr: Algebra.Expression): boolean {\n const { expressionType, operator } = expr;\n if (expressionType !== Algebra.expressionTypes.OPERATOR) {\n return true;\n }\n return operator !== 'desc';\n }\n}\n\n/**\n * The window parameter determines how many of the elements to consider when sorting.\n */\nexport interface IActorQueryOperationOrderBySparqleeArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The size of the window for the sort iterator.\n * @range {integer}\n */\n window?: number;\n}\n","import type { AsyncIterator } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\n\n// Based on https://github.com/LinkedDataFragments/Client.js/blob/master/lib/sparql/SortIterator.js\nexport class SortIterator extends TransformIterator {\n private readonly windowLength: number;\n private readonly sort: (left: T, right: T) => number;\n private readonly sorted: T[];\n\n public constructor(source: AsyncIterator, sort: (left: T, right: T) => number, options?: any) {\n super(source, options);\n\n // The `window` parameter indicates the length of the sliding window to apply sorting\n const window: number = options && options.window;\n this.windowLength = Number.isFinite(window) && window > 0 ? window : Number.POSITIVE_INFINITY;\n this.sort = sort;\n this.sorted = [];\n }\n\n // Reads the smallest item in the current sorting window\n public override _read(count: number, done: () => void): void {\n let item;\n let { length } = this.sorted;\n // Try to read items until we reach the desired window length\n while (length !== this.windowLength) {\n item = this.source!.read();\n if (item === null) {\n break;\n }\n // Insert the item in the sorted window (smallest last)\n let left = 0;\n let right = length - 1;\n let mid;\n let order;\n while (left <= right) {\n mid = Math.trunc((left + right) / 2);\n order = this.sort(item, this.sorted[mid]);\n if (order < 0) {\n left = mid + 1;\n } else if (order > 0) {\n right = mid - 1;\n } else {\n left = mid;\n right = -1;\n }\n }\n this.sorted.splice(left, 0, item);\n length++;\n }\n // Push the smallest item in the window\n if (length === this.windowLength) {\n this._push(this.sorted.pop()!);\n }\n done();\n }\n\n // Flushes remaining data after the source has ended\n public override _flush(done: () => void): void {\n let { length } = this.sorted;\n while (length--) {\n this._push(this.sorted.pop()!);\n }\n done();\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { ActorQueryOperationUnion } from '@comunica/actor-query-operation-union';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type {\n IQueryOperationResultBindings,\n IQueryOperationResult,\n IActionContext,\n MetadataBindings,\n} from '@comunica/types';\nimport { UnionIterator } from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Alt Query Operation Actor.\n */\nexport class ActorQueryOperationPathAlt extends ActorAbstractPath {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationPathAltArgs) {\n super(args, Algebra.types.ALT);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n\n const subOperations: IQueryOperationResultBindings[] = (await Promise.all(predicate.input\n .map(subPredicate => this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY\n .createPath(operation.subject, subPredicate, operation.object, operation.graph),\n }))))\n .map(ActorQueryOperation.getSafeBindings);\n\n const bindingsStream = new UnionIterator(subOperations.map(op => op.bindingsStream), { autoStart: false });\n const metadata: (() => Promise) = () =>\n Promise.all(subOperations.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\n\nexport interface IActorQueryOperationPathAltArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Inv Query Operation Actor.\n */\nexport class ActorQueryOperationPathInv extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.INV);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n const invPath = ActorAbstractPath.FACTORY\n .createPath(operation.object, predicate.path, operation.subject, operation.graph);\n return this.mediatorQueryOperation.mediate({ operation: invPath, context });\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Link Query Operation Actor.\n */\nexport class ActorQueryOperationPathLink extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.LINK);\n }\n\n public async runOperation(\n operationOriginal: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const predicate = operationOriginal.predicate;\n const operation = Object.assign(ActorAbstractPath.FACTORY.createPattern(\n operationOriginal.subject,\n predicate.iri,\n operationOriginal.object,\n operationOriginal.graph,\n ), { metadata: predicate.metadata });\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Nps Query Operation Actor.\n */\nexport class ActorQueryOperationPathNps extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.NPS);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n const blank = this.generateVariable(operation);\n\n const pattern = Object.assign(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, blank, operation.object, operation.graph), { metadata: predicate.metadata });\n const output = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: pattern, context }),\n );\n\n // Remove the generated blank nodes from the bindings\n const bindingsStream = output.bindingsStream\n .map(bindings => predicate.iris.some(iri => iri.equals(bindings.get(blank))) ? null : bindings.delete(blank));\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IQueryOperationResultBindings, Bindings, IQueryOperationResult, IActionContext } from '@comunica/types';\nimport { BufferedIterator, MultiTransformIterator, TransformIterator } from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path OneOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathOneOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathOneOrMoreArgs) {\n super(args, Algebra.types.ONE_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = operation.predicate;\n\n if (operation.subject.termType !== 'Variable' && operation.object.termType === 'Variable') {\n const objectVar = operation.object;\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n objectVar,\n operation.graph,\n context,\n false,\n bindingsFactory,\n );\n const variables = operation.graph.termType === 'Variable' ? [ objectVar, operation.graph ] : [ objectVar ];\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Get all the results of subjects with same predicate, but once, then fill in first variable for those\n const single = ActorAbstractPath.FACTORY.createDistinct(\n ActorAbstractPath.FACTORY\n .createPath(operation.subject, operation.predicate.path, operation.object, operation.graph),\n );\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n const subject = bindings.get(subjectVar);\n const object = bindings.get(objectVar);\n const graph = operation.graph.termType === 'Variable' ? bindings.get(operation.graph) : operation.graph;\n return new TransformIterator(\n async() => {\n const it = new BufferedIterator();\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject!,\n object!,\n predicate.path,\n graph!,\n context,\n termHashes,\n {},\n it,\n { count: 0 },\n bindingsFactory,\n );\n return it.transform({\n transform(item, next, push) {\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph!);\n }\n push(item);\n next();\n },\n });\n },\n { maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n const variables = operation.graph.termType === 'Variable' ?\n [ subjectVar, objectVar, operation.graph ] :\n [ subjectVar, objectVar ];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType !== 'Variable') {\n return > this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createPath(\n operation.object,\n ActorAbstractPath.FACTORY.createOneOrMorePath(\n ActorAbstractPath.FACTORY.createInv(predicate.path),\n ),\n operation.subject,\n operation.graph,\n ),\n });\n }\n // If (!sVar && !oVar)\n const variable = this.generateVariable();\n const results = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createPath(operation.subject, predicate, variable, operation.graph),\n }));\n const bindingsStream = results.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n const binding = operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await results.metadata(),\n variables: operation.graph.termType === 'Variable' ? [ operation.graph ] : [],\n }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathOneOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { Bindings, IActionContext, IQueryOperationResult, IJoinEntry } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Seq Query Operation Actor.\n */\nexport class ActorQueryOperationPathSeq extends ActorAbstractPath {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationPathSeq) {\n super(args, Algebra.types.SEQ);\n }\n\n public async runOperation(\n operationOriginal: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const predicate = operationOriginal.predicate;\n\n let joiner: RDF.Term = operationOriginal.subject;\n const generatedVariableNames: RDF.Variable[] = [];\n const entries: IJoinEntry[] = await Promise.all(predicate.input\n .map((subPredicate, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? operationOriginal.object : this.generateVariable(operationOriginal, `b${i}`);\n const operation = ActorAbstractPath.FACTORY\n .createPath(joiner, subPredicate, nextJoiner, operationOriginal.graph);\n const output = this.mediatorQueryOperation.mediate({\n context,\n operation,\n });\n\n joiner = nextJoiner;\n if (i < predicate.input.length - 1) {\n generatedVariableNames.push(nextJoiner);\n }\n\n return { output, operation };\n })\n .map(async({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(await output),\n operation,\n })));\n\n const join = ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: 'inner', entries, context }));\n // Remove the generated variable from the bindings\n const bindingsStream = join.bindingsStream.transform({\n transform(item, next, push) {\n for (const generatedVariableName of generatedVariableNames) {\n item = item.delete(generatedVariableName);\n }\n push(item);\n next();\n },\n });\n\n // Remove the generated variable from the list of variables\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const joinMetadata = await join.metadata();\n const variables = joinMetadata.variables.filter(variable => !generatedVariableNames\n .some(generatedVariableName => generatedVariableName.value === variable.value));\n return { ...joinMetadata, variables };\n },\n };\n }\n}\n\nexport interface IActorQueryOperationPathSeq extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { Bindings, IQueryOperationResult, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { MultiTransformIterator, TransformIterator, EmptyIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path ZeroOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathZeroOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathZeroOrMoreArgs) {\n super(args, Algebra.types.ZERO_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = operation.predicate;\n const sources = this.getPathSources(predicate);\n\n const sVar = operation.subject.termType === 'Variable';\n const oVar = operation.object.termType === 'Variable';\n\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Query ?s ?p ?o, to get all possible namedNodes in de the db\n const predVar = this.generateVariable(operation);\n const single = this.assignPatternSources(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, predVar, operation.object, operation.graph), sources);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n // Set with all namedNodes we have already started a predicate* search from\n const entities: Set = new Set();\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n // Get the subject and object of the triples (?s ?p ?o) and extract graph if it was a variable\n const subject: RDF.Term = bindings.get(subjectVar)!;\n const object: RDF.Term = bindings.get(objectVar)!;\n const graph: RDF.Term = operation.graph.termType === 'Variable' ?\n bindings.get(operation.graph)! :\n operation.graph;\n // Make a hash of namedNode + graph to remember from where we already started a search\n const subjectGraphHash = termToString(subject) + termToString(graph);\n const objectGraphHash = termToString(object) + termToString(graph);\n return new TransformIterator(\n async() => {\n // If no new namedNodes in this triple, return nothing\n if (entities.has(subjectGraphHash) && entities.has(objectGraphHash)) {\n return new EmptyIterator();\n }\n // Set up an iterator to which getSubjectAndObjectBindingsPredicateStar will push solutions\n const it = new BufferedIterator();\n const counter = { count: 0 };\n // If not started from this namedNode (subject in triple) in this graph, start a search\n if (!entities.has(subjectGraphHash)) {\n entities.add(subjectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject,\n subject,\n predicate.path,\n graph,\n context,\n termHashes,\n {},\n it,\n counter,\n bindingsFactory,\n );\n }\n // If not started from this namedNode (object in triple) in this graph, start a search\n if (!entities.has(objectGraphHash)) {\n entities.add(objectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n object,\n object,\n predicate.path,\n graph,\n context,\n termHashes,\n {},\n it,\n counter,\n bindingsFactory,\n );\n }\n return it.transform({\n transform(item, next, push) {\n // If the graph was a variable, fill in it's binding (we got it from the ?s ?p ?o binding)\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph);\n }\n push(item);\n next();\n },\n });\n },\n );\n },\n },\n );\n const variables: RDF.Variable[] = operation.graph.termType === 'Variable' ?\n [ subjectVar, operation.object, operation.graph ] :\n [ subjectVar, operation.object ];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (!sVar && !oVar) {\n const variable = this.generateVariable();\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n variable,\n operation.graph,\n context,\n true,\n bindingsFactory,\n );\n // Check this\n const bindingsStream = starEval.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n // Return graph binding if graph was a variable, otherwise empty binding\n const binding = operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await starEval.metadata(),\n variables: operation.graph.termType === 'Variable' ? [ operation.graph ] : [],\n }),\n };\n }\n // If (sVar || oVar)\n const subject = sVar ? operation.object : operation.subject;\n const value: RDF.Variable = (sVar ? operation.subject : operation.object);\n const pred = sVar ? ActorAbstractPath.FACTORY.createInv(predicate.path) : predicate.path;\n const starEval = await this.getObjectsPredicateStarEval(\n subject,\n pred,\n value,\n operation.graph,\n context,\n true,\n bindingsFactory,\n );\n const variables: RDF.Variable[] = operation.graph.termType === 'Variable' ? [ value, operation.graph ] : [ value ];\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathZeroOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { Bindings, IQueryOperationResult, IActionContext, BindingsStream } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport {\n SingletonIterator,\n UnionIterator,\n} from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path ZeroOrOne Query Operation Actor.\n */\nexport class ActorQueryOperationPathZeroOrOne extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathZeroOrOneArgs) {\n super(args, Algebra.types.ZERO_OR_ONE_PATH);\n }\n\n public async runOperation(\n operation: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const predicate = operation.predicate;\n const sources = this.getPathSources(predicate);\n\n const extra: Bindings[] = [];\n\n // Both subject and object non-variables\n if (operation.subject.termType !== 'Variable' &&\n operation.object.termType !== 'Variable' &&\n operation.subject.equals(operation.object)) {\n return {\n type: 'bindings',\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n };\n }\n\n // Check if we require a distinct path operation\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n context = distinct.context;\n\n // Create an operator that resolve to the \"One\" part\n const bindingsOne = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY\n .createPath(operation.subject, predicate.path, operation.object, operation.graph),\n }));\n\n // Determine the bindings stream based on the variable-ness of subject and object\n let bindingsStream: BindingsStream;\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Both subject and object are variables\n // To determine the \"Zero\" part, we\n // query ?s ?p ?o. FILTER ?s = ?0, to get all possible namedNodes in de the db\n const varP = this.generateVariable(operation);\n const bindingsZero = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createFilter(\n this.assignPatternSources(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, varP, operation.object, operation.graph), sources),\n ActorAbstractPath.FACTORY.createOperatorExpression('=', [\n ActorAbstractPath.FACTORY.createTermExpression(operation.subject),\n ActorAbstractPath.FACTORY.createTermExpression(operation.object),\n ]),\n ),\n }),\n ).bindingsStream.map(bindings => bindings.delete(varP));\n bindingsStream = new UnionIterator([\n bindingsZero,\n bindingsOne.bindingsStream,\n ], { autoStart: false });\n } else {\n // If subject or object is not a variable, then determining the \"Zero\" part is simple.\n if (operation.subject.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.subject, operation.object ]]));\n }\n if (operation.object.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.object, operation.subject ]]));\n }\n\n bindingsStream = bindingsOne.bindingsStream.prepend(extra);\n }\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: bindingsOne.metadata,\n };\n }\n}\nexport interface IActorQueryOperationPathZeroOrOneArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { BlankNodeBindingsScoped } from '@comunica/data-factory';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Project Query Operation Actor.\n */\nexport class ActorQueryOperationProject extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'project');\n }\n\n public async testOperation(_operation: Algebra.Project, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Project, context: IActionContext):\n Promise {\n // Resolve the input\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: operation.input, context }),\n );\n\n // Find all variables that should be deleted from the input stream.\n const outputMetadata = await output.metadata();\n const variables = operation.variables;\n const deleteVariables = outputMetadata.variables\n .filter(variable => !variables.some(subVariable => variable.value === subVariable.value));\n\n // Error if there are variables that are not bound in the input stream.\n const missingVariables = variables\n .filter(variable => !outputMetadata.variables.some(subVariable => variable.value === subVariable.value));\n if (missingVariables.length > 0) {\n outputMetadata.canContainUndefs = true;\n }\n\n // Make sure the project variables are the only variables that are present in the bindings.\n let bindingsStream: BindingsStream = deleteVariables.length === 0 ?\n output.bindingsStream :\n output.bindingsStream.map((bindings: Bindings) => {\n for (const deleteVariable of deleteVariables) {\n bindings = bindings.delete(deleteVariable);\n }\n return bindings;\n });\n\n // Make sure that blank nodes with same labels are not reused over different bindings, as required by SPARQL 1.1.\n // Required for the BNODE() function: https://www.w3.org/TR/sparql11-query/#func-bnode\n // When we have a scoped blank node, make sure the skolemized value is maintained.\n let blankNodeCounter = 0;\n bindingsStream = bindingsStream.map((bindings: Bindings) => {\n blankNodeCounter++;\n const scopedBlankNodesCache = new Map();\n return bindings.map((term) => {\n if (term instanceof BlankNodeBindingsScoped) {\n let scopedBlankNode = scopedBlankNodesCache.get(term.value);\n if (!scopedBlankNode) {\n scopedBlankNode = DF.blankNode(`${term.value}${blankNodeCounter}`);\n scopedBlankNodesCache.set(term.value, scopedBlankNode);\n }\n return scopedBlankNode;\n }\n return term;\n });\n });\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...outputMetadata, variables }),\n };\n }\n}\n","import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Reduced Hash Query Operation Actor.\n */\nexport class ActorQueryOperationReducedHash extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly cacheSize: number;\n\n public constructor(args: IActorQueryOperationReducedHashArgs) {\n super(args, 'reduced');\n }\n\n public async testOperation(_operation: Algebra.Reduced, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Reduced, context: IActionContext): Promise {\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: operation.input, context }),\n );\n const bindingsStream: BindingsStream = output.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n public async newHashFilter(context: IActionContext): Promise<(bindings: Bindings) => boolean> {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes = new LRUCache({ max: this.cacheSize });\n return (bindings: Bindings) => {\n const hash: string = hashFunction(bindings);\n if (hashes.has(hash)) {\n return false;\n }\n hashes.set(hash, true);\n return true;\n };\n }\n}\n\nexport interface IActorQueryOperationReducedHashArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n /**\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IActionContext, IQueryOperationResult, IQueryOperationResultBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { SingletonIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Service Query Operation Actor.\n * It unwraps the SERVICE operation and executes it on the given source.\n */\nexport class ActorQueryOperationService extends ActorQueryOperationTypedMediated {\n public readonly forceSparqlEndpoint: boolean;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n\n public constructor(args: IActorQueryOperationServiceArgs) {\n super(args, 'service');\n }\n\n public async testOperation(operation: Algebra.Service, _context: IActionContext): Promise {\n if (operation.name.termType !== 'NamedNode') {\n throw new Error(`${this.name} can only query services by IRI, while a ${operation.name.termType} was given.`);\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.Service, context: IActionContext):\n Promise {\n // Identify the SERVICE target as query source\n const { querySource } = await this.mediatorQuerySourceIdentify.mediate({\n querySourceUnidentified: {\n value: operation.name.value,\n type: this.forceSparqlEndpoint ? 'sparql' : undefined,\n },\n context,\n });\n\n // Attach the source to the operation, and execute\n let output: IQueryOperationResultBindings;\n try {\n output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n operation: ActorQueryOperation.assignOperationSource(operation.input, querySource),\n context,\n }));\n } catch (error: unknown) {\n if (operation.silent) {\n // Emit a single empty binding\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n output = {\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n type: 'bindings',\n metadata: async() => ({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n };\n this.logWarn(context, `An error occurred when executing a SERVICE clause: ${( error).message}`);\n } else {\n throw error;\n }\n }\n\n return output;\n }\n}\n\nexport interface IActorQueryOperationServiceArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * If the SERVICE target should be assumed to be a SPARQL endpoint.\n * @default {false}\n */\n forceSparqlEndpoint: boolean;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The mediator for identifying query sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n IQueryOperationResultStream,\n IMetadata,\n IActionContext,\n} from '@comunica/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Slice Query Operation Actor.\n */\nexport class ActorQueryOperationSlice extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'slice');\n }\n\n public async testOperation(_operation: Algebra.Slice, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Slice, context: IActionContext):\n Promise {\n // Add limit indicator to the context, which can be used for query planning\n // eslint-disable-next-line unicorn/explicit-length-check\n if (operation.length) {\n context = context.set(KeysQueryOperation.limitIndicator, operation.length);\n }\n\n // Resolve the input\n const output: IQueryOperationResult = await this.mediatorQueryOperation\n .mediate({ operation: operation.input, context });\n\n if (output.type === 'bindings') {\n const bindingsStream = this.sliceStream(output.bindingsStream, operation);\n return {\n type: 'bindings',\n bindingsStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n\n if (output.type === 'quads') {\n const quadStream = this.sliceStream(output.quadStream, operation);\n return {\n type: 'quads',\n quadStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n\n // In all other cases, return the result as-is.\n return output;\n }\n\n // Slice the stream based on the pattern values\n private sliceStream(stream: AsyncIterator, pattern: Algebra.Slice): AsyncIterator {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength: boolean = Boolean(pattern.length) || pattern.length === 0;\n const { start } = pattern;\n const end = hasLength ? pattern.start + pattern.length! - 1 : Number.POSITIVE_INFINITY;\n return stream.transform({ offset: start, limit: Math.max(end - start + 1, 0), autoStart: false });\n }\n\n // If we find metadata, apply slicing on the total number of items\n private sliceMetadata(\n output: IQueryOperationResultStream,\n pattern: Algebra.Slice,\n ): () => Promise> {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength: boolean = Boolean(pattern.length) || pattern.length === 0;\n return () => (<() => Promise>>output.metadata)()\n .then((subMetadata) => {\n const cardinality = { ...subMetadata.cardinality };\n if (Number.isFinite(cardinality.value)) {\n cardinality.value = Math.max(0, cardinality.value - pattern.start);\n if (hasLength) {\n cardinality.value = Math.min(cardinality.value, pattern.length!);\n }\n }\n return { ...subMetadata, cardinality };\n });\n }\n}\n","import type { IActionQueryOperation, IActorQueryOperationArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { getMetadataBindings, getMetadataQuads } from '@comunica/metadata';\nimport type {\n IPhysicalQueryPlanLogger,\n IQueryOperationResult,\n IQuerySourceWrapper,\n} from '@comunica/types';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Source Query Operation Actor.\n */\nexport class ActorQueryOperationSource extends ActorQueryOperation {\n public constructor(args: IActorQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryOperation): Promise {\n if (!ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} requires an operation with source annotation.`);\n }\n return { httpRequests: 1 };\n }\n\n public async run(action: IActionQueryOperation): Promise {\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context\n .get(KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(\n action.operation.type,\n undefined,\n action.operation,\n action.context.get(KeysInitQuery.physicalQueryPlanNode),\n this.name,\n {},\n );\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(action.operation)!;\n const mergedContext = sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context;\n\n // Check if the operation is a CONSTRUCT query\n // We recurse because it may be wrapped in other operations such as SLICE and FROM\n let construct = false;\n Util.recurseOperation(action.operation, {\n construct(): boolean {\n construct = true;\n return false;\n },\n });\n // If so, delegate to queryQuads\n if (construct) {\n const quadStream = sourceWrapper.source.queryQuads(action.operation, mergedContext);\n const metadata = getMetadataQuads(quadStream);\n return {\n type: 'quads',\n quadStream,\n metadata,\n };\n }\n\n // eslint-disable-next-line ts/switch-exhaustiveness-check\n switch (action.operation.type) {\n case Algebra.types.ASK:\n return {\n type: 'boolean',\n execute: () => sourceWrapper.source.queryBoolean(action.operation, mergedContext),\n };\n case Algebra.types.COMPOSITE_UPDATE:\n case Algebra.types.DELETE_INSERT:\n case Algebra.types.LOAD:\n case Algebra.types.CLEAR:\n case Algebra.types.CREATE:\n case Algebra.types.DROP:\n case Algebra.types.ADD:\n case Algebra.types.MOVE:\n case Algebra.types.COPY:\n return {\n type: 'void',\n execute: () => sourceWrapper.source.queryVoid(action.operation, mergedContext),\n };\n }\n\n const bindingsStream = sourceWrapper.source.queryBindings(action.operation, mergedContext);\n const metadata = getMetadataBindings(bindingsStream);\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n BindingsStream,\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataBindings,\n MetadataQuads,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { UnionIterator } from 'asynciterator';\nimport { uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Union Query Operation Actor.\n */\nexport class ActorQueryOperationUnion extends ActorQueryOperationTypedMediated {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationUnionArgs) {\n super(args, 'union');\n }\n\n /**\n * Takes the union of the given double array variables.\n * Uniqueness is guaranteed.\n * @param {string[][]} variables Double array of variables to take the union of.\n * @return {string[]} The union of the given variables.\n */\n public static unionVariables(variables: RDF.Variable[][]): RDF.Variable[] {\n return uniqTerms(variables.flat());\n }\n\n /**\n * Takes the union of the given metadata array.\n * It will ensure that the cardinality metadata value is properly calculated.\n * @param {{[p: string]: any}[]} metadatas Array of metadata.\n * @param bindings If the union of the variables field should also be taken.\n * @param context The action context\n * @param mediatorRdfMetadataAccumulate Mediator for metadata accumulation\n * @return {{[p: string]: any}} Union of the metadata.\n */\n public static async unionMetadata<\n Bindings extends boolean,\n M extends (Bindings extends true ? MetadataBindings : MetadataQuads),\n >(\n metadatas: M[],\n bindings: Bindings,\n context: IActionContext,\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate,\n // eslint-disable-next-line function-paren-newline\n ): Promise {\n let accumulatedMetadata: M = (await mediatorRdfMetadataAccumulate\n .mediate({ mode: 'initialize', context })).metadata;\n\n // Accumulate cardinality\n for (const appendingMetadata of metadatas) {\n accumulatedMetadata = {\n ...appendingMetadata,\n ...(await mediatorRdfMetadataAccumulate\n .mediate({\n mode: 'append',\n accumulatedMetadata: accumulatedMetadata,\n appendingMetadata: appendingMetadata,\n context,\n })).metadata,\n };\n }\n\n // Create new metadata state\n accumulatedMetadata.state = new MetadataValidationState();\n\n // Propagate metadata invalidations\n const invalidateListener = (): void => accumulatedMetadata.state.invalidate();\n for (const metadata of metadatas) {\n metadata.state.addInvalidateListener(invalidateListener);\n }\n\n // Union variables\n if (bindings) {\n accumulatedMetadata.variables = ActorQueryOperationUnion\n .unionVariables(metadatas.map(metadata => metadata.variables));\n }\n\n return accumulatedMetadata;\n }\n\n public async testOperation(_operation: Algebra.Union, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Union, context: IActionContext):\n Promise {\n // Determine the type over which we are taking a union\n const outputsRaw = await Promise.all(operation.input\n .map(subOperation => this.mediatorQueryOperation.mediate({ operation: subOperation, context })));\n let outputType: string | undefined;\n for (const output of outputsRaw) {\n if (outputType === undefined) {\n outputType = output.type;\n } else if (outputType !== output.type) {\n throw new Error(`Unable to union ${outputType} and ${output.type}`);\n }\n }\n\n // Handle bindings\n if (outputType === 'bindings' || operation.input.length === 0) {\n const outputs: IQueryOperationResultBindings[] = outputsRaw.map(ActorQueryOperation.getSafeBindings);\n\n const bindingsStream: BindingsStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultBindings) => output.bindingsStream,\n ), { autoStart: false });\n\n const metadata: () => Promise = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'bindings', bindingsStream, metadata };\n }\n\n // Handle quads\n if (outputType === 'quads') {\n const outputs: IQueryOperationResultQuads[] = outputsRaw.map(ActorQueryOperation.getSafeQuads);\n\n const quadStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultQuads) => output.quadStream,\n ), { autoStart: false });\n\n const metadata: () => Promise = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, false, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'quads', quadStream, metadata };\n }\n\n // Throw otherwise\n throw new Error(`Unable to union ${outputType}`);\n }\n}\n\nexport interface IActorQueryOperationUnionArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type {\n MediatorRdfUpdateQuads,\n} from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL clear operations.\n */\nexport class ActorQueryOperationClear extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationClearArgs) {\n super(args, 'clear');\n }\n\n public async testOperation(operation: Algebra.Clear, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Clear, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n let graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n } else if (typeof operation.source === 'string') {\n graphs = operation.source;\n } else {\n graphs = [ operation.source ];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: false,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationClearArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Update CompositeUpdate Query Operation Actor.\n */\nexport class ActorQueryOperationUpdateCompositeUpdate\n extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'compositeupdate');\n }\n\n public async testOperation(\n operation: Algebra.CompositeUpdate,\n context: IActionContext,\n ): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.CompositeUpdate, context: IActionContext):\n Promise {\n const execute = (): Promise => (async(): Promise => {\n // Execute update operations in sequence\n for (const operation of operationOriginal.updates) {\n const subResult = ActorQueryOperation\n .getSafeVoid(await this.mediatorQueryOperation.mediate({ operation, context }));\n await subResult.execute();\n }\n })();\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor that\n * handles SPARQL create operations.\n */\nexport class ActorQueryOperationCreate extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationCreateArgs) {\n super(args, 'create');\n }\n\n public async testOperation(operation: Algebra.Create, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Create, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n const { execute } = await this.mediatorUpdateQuads.mediate({\n createGraphs: {\n graphs: [ operation.source ],\n requireNonExistence: !operation.silent,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationCreateArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import { BindingsToQuadsIterator } from '@comunica/actor-query-operation-construct';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryOperationResult, BindingsStream, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Update DeleteInsert Query Operation Actor.\n */\nexport class ActorQueryOperationUpdateDeleteInsert extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n protected blankNodeCounter = 0;\n\n public constructor(args: IActorQueryOperationUpdateDeleteInsertArgs) {\n super(args, 'deleteinsert');\n }\n\n public async testOperation(\n operation: Algebra.DeleteInsert,\n context: IActionContext,\n ): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.DeleteInsert, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Evaluate the where clause\n const whereBindings: BindingsStream = operation.where ?\n ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation\n .mediate({ operation: operation.where, context })).bindingsStream :\n new ArrayIterator([ bindingsFactory.bindings() ], { autoStart: false });\n\n // Construct triples using the result based on the pattern.\n let quadStreamInsert: AsyncIterator | undefined;\n let quadStreamDelete: AsyncIterator | undefined;\n if (operation.insert) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamInsert = new BindingsToQuadsIterator(\n operation.insert.map(BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)),\n whereBindings.clone(),\n );\n this.blankNodeCounter++;\n }\n if (operation.delete) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamDelete = new BindingsToQuadsIterator(\n operation.delete.map(BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)),\n whereBindings.clone(),\n );\n this.blankNodeCounter++;\n }\n\n // Evaluate the required modifications\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert,\n quadStreamDelete,\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationUpdateDeleteInsertArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL drop operations.\n */\nexport class ActorQueryOperationDrop extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationDropArgs) {\n super(args, 'drop');\n }\n\n public async testOperation(operation: Algebra.Drop, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Drop, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n let graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n } else if (typeof operation.source === 'string') {\n graphs = operation.source;\n } else {\n graphs = [ operation.source ];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: true,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationDropArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL load operations.\n */\nexport class ActorQueryOperationLoad extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n\n private readonly factory: Factory;\n private readonly constructOperation: Algebra.Construct;\n\n public constructor(args: IActorQueryOperationLoadArgs) {\n super(args, 'load');\n this.factory = new Factory();\n }\n\n public async testOperation(operation: Algebra.Load, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Load, context: IActionContext):\n Promise {\n // Determine query source\n let subContext = context;\n if (operation.silent) {\n subContext = subContext.set(KeysInitQuery.lenient, true);\n }\n const { querySource } = await this.mediatorQuerySourceIdentify.mediate({\n querySourceUnidentified: { value: operation.source.value },\n context: subContext,\n });\n\n // Create CONSTRUCT query on the given source\n const output = ActorQueryOperationLoad.getSafeQuads(await this.mediatorQueryOperation.mediate({\n operation: this.factory.createConstruct(\n ActorQueryOperation.assignOperationSource(\n this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')),\n querySource,\n ),\n [ this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')) ],\n ),\n context: subContext,\n }));\n\n // Determine quad stream to insert\n let quadStream = output.quadStream;\n if (operation.destination) {\n quadStream = quadStream.map(quad => DF.quad(quad.subject, quad.predicate, quad.object, operation.destination));\n }\n\n // Insert quad stream\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert: quadStream,\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationLoadArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n /**\n * Mediator for identifying load sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTyped } from '@comunica/bus-query-operation';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQueryOperationResult,\n BindingsStream,\n Bindings,\n IActionContext,\n MetadataBindings,\n} from '@comunica/types';\nimport { ArrayIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Values Query Operation Actor.\n */\nexport class ActorQueryOperationValues extends ActorQueryOperationTyped {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationUpdateDeleteInsertArgs) {\n super(args, 'values');\n }\n\n public async testOperation(_operation: Algebra.Values, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Values, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const bindingsStream: BindingsStream = new ArrayIterator(operation.bindings\n .map(x => bindingsFactory.bindings(Object.entries(x)\n .map(([ key, value ]) => [ DF.variable(key.slice(1)), value ]))));\n const variables = operation.variables;\n const metadata = (): Promise => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: operation.bindings.length },\n canContainUndefs: operation.bindings.some(bindings => variables.some(variable => !(`?${variable.value}` in bindings))),\n variables,\n });\n return { type: 'bindings', bindingsStream, metadata };\n }\n}\n\nexport interface IActorQueryOperationUpdateDeleteInsertArgs extends\n IActorArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActionQueryParse, IActorQueryParseArgs, IActorQueryParseOutput } from '@comunica/bus-query-parse';\nimport { ActorQueryParse } from '@comunica/bus-query-parse';\nimport type { IActorTest } from '@comunica/core';\nimport { translate } from 'sparqlalgebrajs';\nimport { Parser as SparqlParser } from 'sparqljs';\n\n/**\n * A comunica Algebra SPARQL Parse Actor.\n */\nexport class ActorQueryParseSparql extends ActorQueryParse {\n public readonly prefixes: Record;\n\n public constructor(args: IActorQueryParseSparqlArgs) {\n super(args);\n this.prefixes = Object.freeze(this.prefixes);\n }\n\n public async test(action: IActionQueryParse): Promise {\n if (action.queryFormat && action.queryFormat.language !== 'sparql') {\n throw new Error('This actor can only parse SPARQL queries');\n }\n return true;\n }\n\n public async run(action: IActionQueryParse): Promise {\n const parser = new SparqlParser({ prefixes: this.prefixes, baseIRI: action.baseIRI, sparqlStar: true });\n const parsedSyntax = parser.parse(action.query);\n const baseIRI = parsedSyntax.type === 'query' ? parsedSyntax.base : undefined;\n return {\n baseIRI,\n operation: translate(parsedSyntax, {\n quads: true,\n prefixes: this.prefixes,\n blankToVariable: true,\n baseIRI: action.baseIRI,\n }),\n };\n }\n}\n\nexport interface IActorQueryParseSparqlArgs extends IActorQueryParseArgs {\n /**\n * Default prefixes to use\n * @range {json}\n * @default {{\n * \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\n * \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\",\n * \"owl\": \"http://www.w3.org/2002/07/owl#\",\n * \"xsd\": \"http://www.w3.org/2001/XMLSchema#\",\n * \"dc\": \"http://purl.org/dc/terms/\",\n * \"dcterms\": \"http://purl.org/dc/terms/\",\n * \"dc11\": \"http://purl.org/dc/elements/1.1/\",\n * \"foaf\": \"http://xmlns.com/foaf/0.1/\",\n * \"geo\": \"http://www.w3.org/2003/01/geo/wgs84_pos#\",\n * \"dbpedia\": \"http://dbpedia.org/resource/\",\n * \"dbpedia-owl\": \"http://dbpedia.org/ontology/\",\n * \"dbpprop\": \"http://dbpedia.org/property/\",\n * \"schema\": \"http://schema.org/\",\n * \"skos\": \"http://www.w3.org/2008/05/skos#\"\n * }}\n */\n prefixes?: Record;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { materializeOperation } from '@comunica/bus-query-operation';\nimport type { MediatorQueryParse } from '@comunica/bus-query-parse';\nimport type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n IQueryProcessSequentialOutput,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n QueryFormatType,\n} from '@comunica/types';\n\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Sequential Query Process Actor.\n */\nexport class ActorQueryProcessSequential extends ActorQueryProcess implements IQueryProcessSequential {\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly mediatorQueryParse: MediatorQueryParse;\n public readonly mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryProcessSequentialArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n if (action.context.get(KeysInitQuery.explain) || action.context.get(new ActionContextKey('explain'))) {\n throw new Error(`${this.name} is not able to explain queries.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Run all query processing steps in sequence\n let { operation, context } = await this.parse(action.query, action.context);\n ({ operation, context } = await this.optimize(operation, context));\n const output = await this.evaluate(operation, context);\n\n return { result: output };\n }\n\n public async parse(query: QueryFormatType, context: IActionContext): Promise {\n // Pre-processing the context\n context = (await this.mediatorContextPreprocess.mediate({ context, initialize: true })).context;\n\n // Parse query\n let operation: Algebra.Operation;\n if (typeof query === 'string') {\n // Save the original query string in the context\n context = context.set(KeysInitQuery.queryString, query);\n\n const baseIRI: string | undefined = context.get(KeysInitQuery.baseIRI);\n const queryFormat: RDF.QueryFormat = context.get(KeysInitQuery.queryFormat)!;\n const queryParseOutput = await this.mediatorQueryParse.mediate({ context, query, queryFormat, baseIRI });\n operation = queryParseOutput.operation;\n // Update the baseIRI in the context if the query modified it.\n if (queryParseOutput.baseIRI) {\n context = context.set(KeysInitQuery.baseIRI, queryParseOutput.baseIRI);\n }\n } else {\n operation = query;\n }\n\n // Apply initial bindings in context\n if (context.has(KeysInitQuery.initialBindings)) {\n const bindingsFactory = await BindingsFactory\n .create(this.mediatorMergeBindingsContext, context);\n operation = materializeOperation(operation, context.get(KeysInitQuery.initialBindings)!, bindingsFactory);\n\n // Delete the query string from the context, since our initial query might have changed\n context = context.delete(KeysInitQuery.queryString);\n }\n\n return { operation, context };\n }\n\n public async optimize(operation: Algebra.Operation, context: IActionContext): Promise {\n // Save initial query in context\n context = context.set(KeysInitQuery.query, operation);\n\n ({ operation, context } = await this.mediatorOptimizeQueryOperation.mediate({ context, operation }));\n\n // Save original query in context\n context = context.set(KeysInitQuery.query, operation);\n\n return { operation, context };\n }\n\n public async evaluate(operation: Algebra.Operation, context: IActionContext): Promise {\n const output = await this.mediatorQueryOperation.mediate({ context, operation });\n output.context = context;\n return output;\n }\n}\n\nexport interface IActorQueryProcessSequentialArgs extends IActorQueryProcessArgs {\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n /**\n * The query parse mediator\n */\n mediatorQueryParse: MediatorQueryParse;\n /**\n * The query operation optimize mediator\n */\n mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentify,\n IActorQuerySourceIdentifyOutput,\n IActorQuerySourceIdentifyArgs,\n} from '@comunica/bus-query-source-identify';\nimport { ActorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContext } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { QuerySourceRdfJs } from './QuerySourceRdfJs';\n\n/**\n * A comunica RDFJS Query Source Identify Actor.\n */\nexport class ActorQuerySourceIdentifyRdfJs extends ActorQuerySourceIdentify {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQuerySourceIdentifyRdfJsArgs) {\n super(args);\n }\n\n public async test(action: IActionQuerySourceIdentify): Promise {\n const source = action.querySourceUnidentified;\n if (source.type !== undefined && source.type !== 'rdfjs') {\n throw new Error(`${this.name} requires a single query source with rdfjs type to be present in the context.`);\n }\n if (typeof source.value === 'string' || !('match' in source.value)) {\n throw new Error(`${this.name} received an invalid rdfjs query source.`);\n }\n return true;\n }\n\n public async run(action: IActionQuerySourceIdentify): Promise {\n return {\n querySource: {\n source: new QuerySourceRdfJs(\n action.querySourceUnidentified.value,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n ),\n context: action.querySourceUnidentified.context ?? new ActionContext(),\n },\n };\n }\n}\n\nexport interface IActorQuerySourceIdentifyRdfJsArgs extends IActorQuerySourceIdentifyArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { filterMatchingQuotedQuads, quadsToBindings } from '@comunica/bus-query-source-identify';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IQuerySource, BindingsStream, IActionContext, FragmentSelectorShape } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { AsyncIterator, wrap as wrapAsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { someTermsNested, filterTermsNested, someTerms, uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { IRdfJsSourceExtended } from './IRdfJsSourceExtended';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\n\nexport class QuerySourceRdfJs implements IQuerySource {\n protected static readonly SELECTOR_SHAPE: FragmentSelectorShape = {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: AF.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')),\n },\n variablesOptional: [\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n ],\n };\n\n public referenceValue: string | RDF.Source;\n protected readonly source: IRdfJsSourceExtended;\n private readonly bindingsFactory: BindingsFactory;\n\n public constructor(source: RDF.Source, bindingsFactory: BindingsFactory) {\n this.source = source;\n this.referenceValue = source;\n this.bindingsFactory = bindingsFactory;\n }\n\n public static nullifyVariables(term: RDF.Term | undefined, quotedTripleFiltering: boolean): RDF.Term | undefined {\n return !term || term.termType === 'Variable' || (!quotedTripleFiltering &&\n term.termType === 'Quad' && someTermsNested(term, value => value.termType === 'Variable')) ?\n undefined :\n term;\n }\n\n public static hasDuplicateVariables(pattern: RDF.BaseQuad): boolean {\n const variables = filterTermsNested(pattern, term => term.termType === 'Variable');\n return variables.length > 1 && uniqTerms(variables).length < variables.length;\n }\n\n public async getSelectorShape(): Promise {\n return QuerySourceRdfJs.SELECTOR_SHAPE;\n }\n\n public queryBindings(operation: Algebra.Operation, context: IActionContext): BindingsStream {\n if (operation.type !== 'pattern') {\n throw new Error(`Attempted to pass non-pattern operation '${operation.type}' to QuerySourceRdfJs`);\n }\n\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n // Create an async iterator from the matched quad stream\n const rawStream = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n let it: AsyncIterator = rawStream instanceof AsyncIterator ?\n rawStream :\n wrapAsyncIterator(rawStream, { autoStart: false });\n\n // Perform post-match-filtering if the source does not support quoted triple filtering.\n if (!quotedTripleFiltering) {\n it = filterMatchingQuotedQuads(operation, it);\n }\n\n // Determine metadata\n if (!it.getProperty('metadata')) {\n this.setMetadata(it, operation)\n .catch(error => it.destroy(error));\n }\n\n return quadsToBindings(\n it,\n operation,\n this.bindingsFactory,\n Boolean(context.get(KeysQueryOperation.unionDefaultGraph)),\n );\n }\n\n protected async setMetadata(\n it: AsyncIterator,\n operation: Algebra.Pattern,\n ): Promise {\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n let cardinality: number;\n if (this.source.countQuads) {\n // If the source provides a dedicated method for determining cardinality, use that.\n cardinality = await this.source.countQuads(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n } else {\n // Otherwise, fallback to a sub-optimal alternative where we just call match again to count the quads.\n // WARNING: we can NOT reuse the original data stream here,\n // because we may lose data elements due to things happening async.\n let i = 0;\n cardinality = await new Promise((resolve, reject) => {\n const matches = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n matches.on('error', reject);\n matches.on('end', () => resolve(i));\n matches.on('data', () => i++);\n });\n }\n\n // If `match` would require filtering afterwards, our count will be an over-estimate.\n const wouldRequirePostFiltering = (!quotedTripleFiltering &&\n someTerms(operation, term => term.termType === 'Quad')) ||\n QuerySourceRdfJs.hasDuplicateVariables(operation);\n\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: wouldRequirePostFiltering ? 'estimate' : 'exact', value: cardinality },\n canContainUndefs: false,\n });\n }\n\n public queryQuads(\n _operation: Algebra.Operation,\n _context: IActionContext,\n ): AsyncIterator {\n throw new Error('queryQuads is not implemented in QuerySourceRdfJs');\n }\n\n public queryBoolean(\n _operation: Algebra.Ask,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryBoolean is not implemented in QuerySourceRdfJs');\n }\n\n public queryVoid(\n _operation: Algebra.Update,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryVoid is not implemented in QuerySourceRdfJs');\n }\n\n public toString(): string {\n return `QuerySourceRdfJs(${this.source.constructor.name})`;\n }\n}\n","import type { IActionRdfJoinEntriesSort, IActorRdfJoinEntriesSortOutput } from '@comunica/bus-rdf-join-entries-sort';\nimport { ActorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\n\n/**\n * An actor that sorts join entries by increasing cardinality.\n */\nexport class ActorRdfJoinEntriesSortCardinality extends ActorRdfJoinEntriesSort {\n public constructor(\n args: IActorArgs,\n ) {\n super(args);\n }\n\n public async test(_action: IActionRdfJoinEntriesSort): Promise {\n return true;\n }\n\n public async run(action: IActionRdfJoinEntriesSort): Promise {\n const entries = [ ...action.entries ]\n .sort((entryLeft, entryRight) => entryLeft.metadata.cardinality.value - entryRight.metadata.cardinality.value);\n return { entries };\n }\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { HashJoin } from 'asyncjoin';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'hash',\n limitEntries: 2,\n requiresVariableOverlap: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n let metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Ensure the left build stream is the smallest\n // TODO: in the next major version, use ActorRdfJoin.sortJoinEntries, which requires mediatorJoinEntriesSort\n if (metadatas[1].cardinality.value < metadatas[0].cardinality.value) {\n metadatas = [ metadatas[1], metadatas[0] ];\n action = { ...action, entries: [ action.entries[1], action.entries[0] ]};\n }\n\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n const join = new HashJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n entry => ActorRdfJoin.hash(entry, variables),\n ActorRdfJoin.joinBindings,\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Ensure the left build stream is the smallest\n if (metadatas[1].cardinality.value < metadatas[0].cardinality.value) {\n metadatas = [ metadatas[1], metadatas[0] ];\n }\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinArgs, IActorRdfJoinOutputInner } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin, ChunkedIterator } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type {\n IJoinEntryWithMetadata,\n IQueryOperationResultBindings,\n IQuerySourceWrapper,\n MetadataBindings,\n IActionContext,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\n\n/**\n * A comunica Inner Multi Bind Source RDF Join Actor.\n */\nexport class ActorRdfJoinMultiBindSource extends ActorRdfJoin {\n public readonly selectivityModifier: number;\n public readonly blockSize: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n\n public constructor(args: IActorRdfJoinInnerMultiBindSourceArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'bind-source',\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas(action.entries);\n const entries = await this.sortJoinEntries(entriesUnsorted, action.context);\n\n this.logDebug(\n action.context,\n 'First entry for Bind Join Source: ',\n () => ({ entry: entries[0].operation, metadata: entries[0].metadata }),\n );\n\n // Close the non-smallest streams\n for (const [ i, element ] of entries.entries()) {\n if (i !== 0) {\n element.output.bindingsStream.close();\n }\n }\n\n // Take the stream with the lowest cardinality\n const smallestStream: IQueryOperationResultBindings = entries[0].output;\n const smallestMetadata = entries[0].metadata;\n const remainingEntries = [ ...entries ];\n remainingEntries.splice(0, 1);\n\n // Get source for remaining entries (guaranteed thanks to prior check in getJoinCoefficients())\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(remainingEntries[0].operation)!;\n\n // Determine the operation to pass\n const operation = this.createOperationFromEntries(remainingEntries);\n\n // Slice the smallest stream into chunks according to the block size, so we avoid blocking too long.\n const chunkedStreams: AsyncIterator> = new ChunkedIterator(\n smallestStream.bindingsStream,\n this.blockSize,\n { autoStart: false },\n );\n\n // For each chunk, pass the query and the bindings to the source for execution\n const bindingsStream = new UnionIterator(chunkedStreams.map(chunk => sourceWrapper.source.queryBindings(\n operation,\n sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context,\n { joinBindings: { bindings: chunk, metadata: smallestMetadata }},\n )));\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: () => this.constructResultMetadata(entries, entries.map(entry => entry.metadata), action.context),\n },\n physicalPlanMetadata: {\n bindIndex: entriesUnsorted.indexOf(entries[0]),\n },\n };\n }\n\n protected async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, entries, context);\n\n // Prioritize entries with modified operations, so these are not re-executed\n entries = entries.sort((entryLeft, entryRight) => {\n if (entryLeft.operationModified && !entryRight.operationModified) {\n return -1;\n }\n return 0;\n });\n\n return entries;\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entries = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entries.map(entry => entry.metadata);\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Determine first stream and remaining ones\n const remainingEntries = [ ...entries ];\n const remainingRequestInitialTimes = [ ...requestInitialTimes ];\n const remainingRequestItemTimes = [ ...requestItemTimes ];\n remainingEntries.splice(0, 1);\n remainingRequestInitialTimes.splice(0, 1);\n remainingRequestItemTimes.splice(0, 1);\n\n // Reject binding on operations without sources\n const sources = remainingEntries.map(entry => ActorQueryOperation.getOperationSource(entry.operation));\n if (sources.some(source => !source)) {\n throw new Error(`Actor ${this.name} can not bind on remaining operations without source annotation`);\n }\n\n // Reject binding on operations with un-equal sources\n if (sources.some(source => source !== sources[0])) {\n throw new Error(`Actor ${this.name} can not bind on remaining operations with non-equal source annotation`);\n }\n\n // Reject if the source can not handle bindings\n const sourceWrapper: IQuerySourceWrapper = sources[0]!;\n const testingOperation = this.createOperationFromEntries(remainingEntries);\n const selectorShape = await sourceWrapper.source.getSelectorShape(action.context);\n if (!ActorQueryOperation\n .doesShapeAcceptOperation(selectorShape, testingOperation, { joinBindings: true })) {\n throw new Error(`Actor ${this.name} detected a source that can not handle passing down join bindings`);\n }\n\n // Determine selectivities of smallest entry with all other entries\n const selectivities = await Promise.all(remainingEntries\n .map(async entry => (await this.mediatorJoinSelectivity.mediate({\n entries: [ entries[0], entry ],\n context: action.context,\n })).selectivity * this.selectivityModifier));\n\n // Determine coefficients for remaining entries\n const cardinalityRemaining = remainingEntries\n .map((entry, i) => entry.metadata.cardinality.value * selectivities[i])\n .reduce((sum, element) => sum + element, 0);\n\n return {\n iterations: 1,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + cardinalityRemaining * requestItemTimes[1],\n };\n }\n\n public createOperationFromEntries(remainingEntries: IJoinEntryWithMetadata[]): Algebra.Operation {\n if (remainingEntries.length === 1) {\n return remainingEntries[0].operation;\n }\n return AF.createJoin(remainingEntries.map(entry => entry.operation), true);\n }\n}\n\nexport interface IActorRdfJoinInnerMultiBindSourceArgs extends IActorRdfJoinArgs {\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The maximum amount of bindings to send to the source per block.\n * @default {16}\n */\n blockSize: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, materializeOperation } from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, BindingsStream, IQueryOperationResultBindings, MetadataBindings } from '@comunica/types';\nimport { MultiTransformIterator, TransformIterator, UnionIterator } from 'asynciterator';\nimport { Factory, Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Multi-way Bind RDF Join Actor.\n */\nexport class ActorRdfJoinMultiBind extends ActorRdfJoin {\n public readonly bindOrder: BindOrder;\n public readonly selectivityModifier: number;\n public readonly minMaxCardinalityRatio: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorRdfJoinMultiBindArgs) {\n // TODO: remove this fallback in the next major update\n if (args.minMaxCardinalityRatio === undefined) {\n args.minMaxCardinalityRatio = 60;\n }\n super(args, {\n logicalType: 'inner',\n physicalName: 'bind',\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n /**\n * Create a new bindings stream that takes every binding of the base stream\n * and binds it to the remaining patterns, evaluates those patterns, and emits all their bindings.\n *\n * @param bindOrder The order in which elements should be bound.\n * @param baseStream The base stream.\n * @param operations The operations to bind with each binding of the base stream.\n * @param operationBinder A callback to retrieve the bindings stream of bound operations.\n * @param optional If the original bindings should be emitted when the resulting bindings stream is empty.\n * @return {BindingsStream}\n */\n public static createBindStream(\n bindOrder: BindOrder,\n baseStream: BindingsStream,\n operations: Algebra.Operation[],\n operationBinder: (boundOperations: Algebra.Operation[], operationBindings: Bindings)\n => Promise,\n optional: boolean,\n bindingsFactory: BindingsFactory,\n ): BindingsStream {\n // Enable auto-start on sub-bindings during depth-first binding for best performance.\n const autoStartSubBindings = bindOrder === 'depth-first';\n\n // Create bindings function\n const binder = (bindings: Bindings): BindingsStream => {\n // We don't bind the filter because filters are always handled last,\n // and we need to avoid binding filters of sub-queries, which are to be handled first. (see spec test bind10)\n const subOperations = operations\n .map(operation => materializeOperation(operation, bindings, bindingsFactory, { bindFilter: true }));\n const bindingsMerger = (subBindings: Bindings): Bindings | undefined => subBindings.merge(bindings);\n return new TransformIterator(async() => (await operationBinder(subOperations, bindings))\n .transform({ map: bindingsMerger }), { maxBufferSize: 128, autoStart: autoStartSubBindings });\n };\n\n // Create an iterator that binds elements from the base stream in different orders\n switch (bindOrder) {\n case 'depth-first':\n return new MultiTransformIterator(baseStream, { autoStart: false, multiTransform: binder, optional });\n case 'breadth-first':\n return new UnionIterator(baseStream.transform({\n map: binder,\n optional,\n }), { autoStart: false });\n default:\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`Received request for unknown bind order: ${bindOrder}`);\n }\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas(action.entries);\n const entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, entriesUnsorted, action.context);\n\n this.logDebug(\n action.context,\n 'First entry for Bind Join: ',\n () => ({ entry: entries[0].operation, metadata: entries[0].metadata }),\n );\n\n // Close the non-smallest streams\n for (const [ i, element ] of entries.entries()) {\n if (i !== 0) {\n element.output.bindingsStream.close();\n }\n }\n\n // Take the stream with the lowest cardinality\n const smallestStream: IQueryOperationResultBindings = entries[0].output;\n const remainingEntries = [ ...entries ];\n remainingEntries.splice(0, 1);\n\n // Bind the remaining patterns for each binding in the stream\n const subContext = action.context\n .set(KeysQueryOperation.joinLeftMetadata, entries[0].metadata)\n .set(KeysQueryOperation.joinRightMetadatas, remainingEntries.map(entry => entry.metadata));\n const bindingsStream: BindingsStream = ActorRdfJoinMultiBind.createBindStream(\n this.bindOrder,\n smallestStream.bindingsStream,\n remainingEntries.map(entry => entry.operation),\n async(operations: Algebra.Operation[], operationBindings: Bindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n const operation = operations.length === 1 ?\n operations[0] :\n ActorRdfJoinMultiBind.FACTORY.createJoin(operations);\n const output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate(\n { operation, context: subContext?.set(KeysQueryOperation.joinBindings, operationBindings) },\n ));\n return output.bindingsStream;\n },\n false,\n bindingsFactory,\n );\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: () => this.constructResultMetadata(entries, entries.map(entry => entry.metadata), action.context),\n },\n physicalPlanMetadata: {\n bindIndex: entriesUnsorted.indexOf(entries[0]),\n bindOperation: entries[0].operation,\n bindOperationCardinality: entries[0].metadata.cardinality,\n bindOrder: this.bindOrder,\n },\n };\n }\n\n public canBindWithOperation(operation: Algebra.Operation): boolean {\n let valid = true;\n Util.recurseOperation(operation, {\n [Algebra.types.EXTEND](): boolean {\n valid = false;\n return false;\n },\n [Algebra.types.GROUP](): boolean {\n valid = false;\n return false;\n },\n });\n\n return valid;\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entries.map(entry => entry.metadata);\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Determine first stream and remaining ones\n const remainingEntries = [ ...entries ];\n const remainingRequestInitialTimes = [ ...requestInitialTimes ];\n const remainingRequestItemTimes = [ ...requestItemTimes ];\n remainingEntries.splice(0, 1);\n remainingRequestInitialTimes.splice(0, 1);\n remainingRequestItemTimes.splice(0, 1);\n\n // Reject binding on some operation types\n if (remainingEntries\n .some(entry => !this.canBindWithOperation(entry.operation))) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n\n // Reject binding on modified operations, since using the output directly would be significantly more efficient.\n if (remainingEntries.some(entry => entry.operationModified)) {\n throw new Error(`Actor ${this.name} can not be used over remaining entries with modified operations`);\n }\n\n // Only run this actor if the smallest stream is significantly smaller than the largest stream.\n // We must use Math.max, because the last metadata is not necessarily the biggest, but it's the least preferred.\n if (metadatas[0].cardinality.value * this.minMaxCardinalityRatio >\n Math.max(...metadatas.map(metadata => metadata.cardinality.value))) {\n throw new Error(`Actor ${this.name} can only run if the smallest stream is much smaller than largest stream`);\n }\n\n // Determine selectivities of smallest entry with all other entries\n const selectivities = await Promise.all(remainingEntries\n .map(async entry => (await this.mediatorJoinSelectivity.mediate({\n entries: [ entries[0], entry ],\n context: action.context,\n })).selectivity * this.selectivityModifier));\n\n // Determine coefficients for remaining entries\n const cardinalityRemaining = remainingEntries\n .map((entry, i) => entry.metadata.cardinality.value * selectivities[i])\n .reduce((sum, element) => sum + element, 0);\n const receiveInitialCostRemaining = remainingRequestInitialTimes\n .reduce((sum, element) => sum + element, 0);\n const receiveItemCostRemaining = remainingRequestItemTimes\n .reduce((sum, element) => sum + element, 0);\n\n return {\n iterations: metadatas[0].cardinality.value * cardinalityRemaining,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * (\n requestItemTimes[0] +\n receiveInitialCostRemaining +\n cardinalityRemaining * receiveItemCostRemaining\n ),\n };\n }\n}\n\nexport interface IActorRdfJoinMultiBindArgs extends IActorRdfJoinArgs {\n /**\n * The order in which elements should be bound\n * @default {depth-first}\n */\n bindOrder: BindOrder;\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The number of times the smallest cardinality should fit in the maximum cardinality.\n * @range {double}\n * @default {60}\n */\n minMaxCardinalityRatio?: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n\nexport type BindOrder = 'depth-first' | 'breadth-first';\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator } from 'asynciterator';\n\n/**\n * A comunica Multi Empty RDF Join Actor.\n */\nexport class ActorRdfJoinMultiEmpty extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-empty',\n canHandleUndefs: true,\n });\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n if ((await ActorRdfJoin.getMetadatas(action.entries))\n .every(metadata => ActorRdfJoin.getCardinality(metadata).value > 0)) {\n throw new Error(`Actor ${this.name} can only join entries where at least one is empty`);\n }\n return super.test(action);\n }\n\n protected override async getOutput(action: IActionRdfJoin): Promise {\n // Close all entries\n for (const entry of action.entries) {\n entry.output.bindingsStream.close();\n }\n\n return {\n result: {\n bindingsStream: new ArrayIterator([], { autoStart: false }),\n metadata: async() => ({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: ActorRdfJoin.joinVariables(await ActorRdfJoin.getMetadatas(action.entries)),\n }),\n type: 'bindings',\n },\n };\n }\n\n protected async getJoinCoefficients(\n _action: IActionRdfJoin,\n _metadatas: MetadataBindings[],\n ): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n","import { bindingsToString } from '@comunica/bindings-factory';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n MediatorRdfJoin,\n IActorRdfJoinOutputInner,\n} from '@comunica/bus-rdf-join';\nimport { ChunkedIterator, ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport { KeysRdfJoin } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type {\n BindingsStream,\n IActionContext,\n IJoinEntry,\n IJoinEntryWithMetadata,\n IQuerySourceWrapper,\n MetadataBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport { Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica Inner Multi Smallest Filter Bindings RDF Join Actor.\n */\nexport class ActorRdfJoinMultiSmallestFilterBindings extends ActorRdfJoin {\n public readonly selectivityModifier: number;\n public readonly blockSize: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public static readonly FACTORY = new Factory();\n public constructor(args: IActorRdfJoinMultiSmallestFilterBindingsArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-smallest-filter-bindings',\n limitEntries: 2,\n limitEntriesMin: true,\n isLeaf: false,\n });\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise<{ first: IJoinEntryWithMetadata; second: IJoinEntryWithMetadata; remaining: IJoinEntryWithMetadata[] }> {\n let { entries: entriesSorted } = await this.mediatorJoinEntriesSort.mediate({ entries, context });\n\n // Prioritize entries with modified operations, so these are not re-executed\n entriesSorted = entriesSorted.sort((entryLeft, entryRight) => {\n if (entryLeft.operationModified && !entryRight.operationModified) {\n return -1;\n }\n return 0;\n });\n\n const first = entriesSorted.splice(0, 1)[0];\n\n // Let second entry first be prioritized for sharing as many variables with first as possible,\n // then having the fewest variables,\n // and then having the lowest cardinality.\n let second: IJoinEntryWithMetadata | undefined;\n let secondIndex = -1;\n let secondSharedVariables = 0;\n for (const [ i, entry ] of entriesSorted.entries()) {\n const sharedVariables = first.metadata.variables\n .filter(variableFirst => entry.metadata.variables\n .some(variableSecond => variableFirst.equals(variableSecond))).length;\n if (!second || (sharedVariables > secondSharedVariables ||\n (sharedVariables === secondSharedVariables &&\n (entry.metadata.variables.length < second.metadata.variables.length ||\n (entry.metadata.variables.length === second.metadata.variables.length &&\n entry.metadata.cardinality.value < second.metadata.cardinality.value))))) {\n second = entry;\n secondIndex = i;\n secondSharedVariables = sharedVariables;\n }\n }\n\n if (secondSharedVariables === 0) {\n throw new Error(`Actor ${this.name} can only join with common variables`);\n }\n\n const remaining = entriesSorted;\n remaining.splice(secondIndex, 1);\n return { first, second: second!, remaining };\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas([ ...action.entries ]);\n const { first, second: secondIn, remaining: remainingIn } = await this.sortJoinEntries(\n entriesUnsorted,\n action.context,\n );\n\n // Clone first stream, because we will use it twice\n const smallestStream1 = first.output.bindingsStream;\n first.output.bindingsStream = smallestStream1.clone();\n\n // Project the first stream on common variables, and filter out duplicates\n // The common variables array is guaranteed to be non-empty, due to the way the test of this actor is implemented.\n const commonVariables = first.metadata.variables\n .filter(variableFirst => secondIn.metadata.variables\n .some(variableSecond => variableFirst.equals(variableSecond)));\n const hashes: Record = {};\n const smallestStream1Projected: BindingsStream = smallestStream1.clone()\n .map(binding => binding.filter((value, key) =>\n commonVariables.some(commonVariable => commonVariable.equals(key))))\n .filter((binding) => {\n const hash: string = bindingsToString(binding);\n return !(hash in hashes) && (hashes[hash] = true);\n });\n\n // Slice the first stream into chunks according to the block size, so we avoid blocking too long.\n const chunkedStreams: AsyncIterator> = new ChunkedIterator(\n smallestStream1Projected,\n this.blockSize,\n { autoStart: false },\n );\n\n // Push down bindings of first stream when querying for second stream\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(secondIn.operation)!;\n const secondStream = new UnionIterator(chunkedStreams.map(chunk => sourceWrapper.source.queryBindings(\n secondIn.operation,\n sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context,\n { filterBindings: { bindings: chunk, metadata: first.metadata }},\n )));\n const second: IJoinEntry = {\n output: {\n type: 'bindings',\n bindingsStream: secondStream,\n metadata: secondIn.output.metadata,\n },\n operation: secondIn.operation,\n operationModified: true,\n };\n\n // Destroy the unused original second stream\n secondIn.output.bindingsStream.destroy();\n\n // Join the two selected streams\n const joinedEntry: IJoinEntry = {\n output: ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({\n type: action.type,\n entries: [ first, second ],\n context: action.context.set(KeysRdfJoin.lastPhysicalJoin, this.physicalName),\n })),\n operation: ActorRdfJoinMultiSmallestFilterBindings.FACTORY\n .createJoin([ first.operation, second.operation ], false),\n operationModified: true,\n };\n\n // And then join the result with the remaining streams\n const remaining: IJoinEntry[] = remainingIn;\n remaining.unshift(joinedEntry);\n\n return {\n result: await this.mediatorJoin.mediate({\n type: action.type,\n entries: remaining,\n context: action.context,\n }),\n physicalPlanMetadata: {\n firstIndex: entriesUnsorted.indexOf(first),\n secondIndex: entriesUnsorted.indexOf(secondIn),\n },\n };\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Avoid infinite recursion\n if (action.context.get(KeysRdfJoin.lastPhysicalJoin) === this.physicalName) {\n throw new Error(`Actor ${this.name} can not be called recursively`);\n }\n\n metadatas = [ ...metadatas ];\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const { first, second, remaining } = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n\n // Only pass if the second entry accepts filterBindings\n const sourceWrapper: IQuerySourceWrapper | undefined = ActorQueryOperation.getOperationSource(second.operation);\n if (!sourceWrapper) {\n throw new Error(`Actor ${this.name} can only process if entries[1] has a source`);\n }\n const testingOperation = second.operation;\n const selectorShape = await sourceWrapper.source.getSelectorShape(action.context);\n if (!ActorQueryOperation\n .doesShapeAcceptOperation(selectorShape, testingOperation, { filterBindings: true })) {\n throw new Error(`Actor ${this.name} can only process if entries[1] accept filterBindings`);\n }\n\n // Determine cost coefficients\n metadatas = [ first.metadata, second.metadata, ...remaining.map(remain => remain.metadata) ];\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n const { selectivity } = await this.mediatorJoinSelectivity.mediate({\n entries: [ first, second ],\n context: action.context,\n });\n const cardinalityRemaining = remaining\n .reduce((mul, remain) => mul * remain.metadata.cardinality.value * this.selectivityModifier, 1);\n\n return {\n iterations: selectivity * this.selectivityModifier *\n second.metadata.cardinality.value * cardinalityRemaining,\n persistedItems: first.metadata.cardinality.value,\n blockingItems: first.metadata.cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + cardinalityRemaining * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinMultiSmallestFilterBindingsArgs extends IActorRdfJoinArgs {\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The maximum amount of bindings to send to the source per block.\n * @default {64}\n */\n blockSize: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n MediatorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings, IJoinEntry, IActionContext, IJoinEntryWithMetadata } from '@comunica/types';\nimport { Factory } from 'sparqlalgebrajs';\n\n/**\n * A Multi Smallest RDF Join Actor.\n * It accepts 3 or more streams, joins the smallest two, and joins the result with the remaining streams.\n */\nexport class ActorRdfJoinMultiSmallest extends ActorRdfJoin {\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorRdfJoinMultiSmallestArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-smallest',\n limitEntries: 3,\n limitEntriesMin: true,\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n return (await this.mediatorJoinEntriesSort.mediate({ entries, context })).entries;\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entries: IJoinEntry[] = await this.sortJoinEntries(\n await ActorRdfJoin.getEntriesWithMetadatas([ ...action.entries ]),\n action.context,\n );\n const smallestEntry1 = entries[0];\n const smallestEntry2 = entries[1];\n entries.splice(0, 2);\n\n // Join the two selected streams, and then join the result with the remaining streams\n const firstEntry: IJoinEntry = {\n output: ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: action.type, entries: [ smallestEntry1, smallestEntry2 ], context: action.context })),\n operation: ActorRdfJoinMultiSmallest.FACTORY\n .createJoin([ smallestEntry1.operation, smallestEntry2.operation ], false),\n };\n entries.push(firstEntry);\n return {\n result: await this.mediatorJoin.mediate({\n type: action.type,\n entries,\n context: action.context,\n }),\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n metadatas = [ ...metadatas ];\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entriesWithMetadata = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entriesWithMetadata.map(entry => entry.metadata);\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value *\n metadatas.slice(2).reduce((acc, metadata) => acc * metadata.cardinality.value, 1),\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1] +\n metadatas.slice(2).reduce((sum, metadata, i) => sum + requestInitialTimes.slice(2)[i] +\n metadata.cardinality.value * requestItemTimes.slice(2)[i], 0),\n };\n }\n}\n\nexport interface IActorRdfJoinMultiSmallestArgs extends IActorRdfJoinArgs {\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { NestedLoopJoin } from 'asyncjoin';\n\n/**\n * A comunica NestedLoop RDF Join Actor.\n */\nexport class ActorRdfJoinNestedLoop extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const join = new NestedLoopJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n ActorRdfJoin.joinBindings,\n { autoStart: false },\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator } from 'asynciterator';\n\n/**\n * A comunica None RDF Join Actor.\n */\nexport class ActorRdfJoinNone extends ActorRdfJoin {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorRdfJoinNoneArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'none',\n limitEntries: 0,\n });\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n // Allow joining of one or zero streams\n if (action.entries.length > 0) {\n throw new Error(`Actor ${this.name} can only join zero entries`);\n }\n return await this.getJoinCoefficients();\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n return {\n result: {\n bindingsStream: new ArrayIterator([ bindingsFactory.bindings() ], { autoStart: false }),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n },\n };\n }\n\n protected async getJoinCoefficients(): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n\nexport interface IActorRdfJoinNoneArgs extends IActorRdfJoinArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\n\n/**\n * A comunica Single RDF Join Actor.\n */\nexport class ActorRdfJoinSingle extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'single',\n limitEntries: 1,\n });\n this.includeInLogs = false;\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n // Allow joining of one or zero streams\n if (action.entries.length !== 1) {\n throw new Error(`Actor ${this.name} can only join a single entry`);\n }\n return await this.getJoinCoefficients();\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n return {\n result: action.entries[0].output,\n };\n }\n\n protected async getJoinCoefficients(): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { SymmetricHashJoin } from 'asyncjoin';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinSymmetricHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinSymmetricHashArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'symmetric-hash',\n limitEntries: 2,\n requiresVariableOverlap: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n const join = new SymmetricHashJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n entry => ActorRdfJoinSymmetricHash.hash(entry, variables),\n ActorRdfJoin.joinBindings,\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinSymmetricHashArgs extends IActorRdfJoinArgs {\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { BindingsIndex } from './BindingsIndex';\n\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nexport class ActorRdfJoinMinusHashUndef extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash-undef',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index: BindingsIndex = new BindingsIndex(commonVariables);\n const bindingsStream = new ClosableTransformIterator(async() => {\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', data => index.add(data));\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n return output.bindingsStream.filter(data => !index.contains(data));\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const bufferMetadata = await output.metadata();\n const outputMetadata = await output.metadata();\n return {\n ...outputMetadata,\n canContainUndefs: bufferMetadata.canContainUndefs || outputMetadata.canContainUndefs,\n };\n },\n },\n };\n }\n // Destroy the buffer stream since it is not needed when\n // there are no common variables.\n buffer.bindingsStream.destroy();\n return {\n result: output,\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n // Slightly increase iteration cost, as operations in our BindingsIndex do not happen in constant time\n // This enables the mediator to favor other minus actors,\n // while this one will only be selected when streams contain undefs.\n iterations: (metadatas[0].cardinality.value + metadatas[1].cardinality.value) * 1.01,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\n\n/**\n * A simple efficient tree-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This will consider bindings with a variable term or a missing term\n * as a 'match-all' with other terms.\n */\nexport class BindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly data: IDataIndex = {};\n\n public constructor(keys: RDF.Variable[]) {\n this.keys = keys;\n }\n\n protected static hashTerm(term: RDF.Term | undefined): string {\n return term && term.termType !== 'Variable' ? termToString(term) : '';\n }\n\n /**\n * Add the given bindings to the index.\n * @param {Bindings} bindings A bindings.\n */\n public add(bindings: Bindings): void {\n if (this.isBindingsValid(bindings)) {\n let dataIt = this.data;\n for (const key of this.keys) {\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n let subDataIt = dataIt[dataKey];\n if (!subDataIt) {\n subDataIt = dataIt[dataKey] = {};\n }\n dataIt = subDataIt;\n }\n }\n }\n\n /**\n * Check if the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {boolean} If it exists in the index.\n */\n public contains(bindings: Bindings): boolean {\n // Always return false if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return false;\n }\n\n return this.containsRecursive(bindings, this.keys, [ this.data ]);\n }\n\n protected isBindingsValid(bindings: Bindings): boolean {\n let validKeys = false;\n for (const key of this.keys) {\n if (bindings.get(key)) {\n validKeys = true;\n break;\n }\n }\n return validKeys;\n }\n\n protected containsRecursive(bindings: Bindings, keys: RDF.Variable[], dataIndexes: IDataIndex[]): boolean {\n if (keys.length === 0) {\n return true;\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n } else {\n // Iterate over all entries\n let subDatas = Object.keys(data).map(subKey => data[subKey]);\n if (subDatas.length === 0) {\n subDatas = [{}];\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n }\n }\n return false;\n }\n}\n\nexport interface IDataIndex {\n [key: string]: IDataIndex;\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nexport class ActorRdfJoinMinusHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash',\n limitEntries: 2,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index: Record = {};\n const bindingsStream = new ClosableTransformIterator(async() => {\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (data) => {\n index[ActorRdfJoin.hashNonClashing(data, commonVariables)] = true;\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n return output.bindingsStream.filter(data => !index[ActorRdfJoin.hashNonClashing(data, commonVariables)]);\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n },\n };\n }\n // Destroy the buffer stream since it is not needed when\n // there are no common variables.\n buffer.bindingsStream.destroy();\n return {\n result: output,\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { BindOrder } from '@comunica/actor-rdf-join-inner-multi-bind';\nimport { ActorRdfJoinMultiBind } from '@comunica/actor-rdf-join-inner-multi-bind';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, BindingsStream, MetadataBindings } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Optional Bind RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalBind extends ActorRdfJoin {\n public readonly bindOrder: BindOrder;\n public readonly selectivityModifier: number;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorRdfJoinOptionalBindArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'bind',\n limitEntries: 2,\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n // Close the right stream, since we don't need that one\n action.entries[1].output.bindingsStream.close();\n\n // Bind the right pattern for each binding in the stream\n const subContext = action.context\n .set(KeysQueryOperation.joinLeftMetadata, await action.entries[0].output.metadata())\n .set(KeysQueryOperation.joinRightMetadatas, [ await action.entries[1].output.metadata() ]);\n const bindingsStream: BindingsStream = ActorRdfJoinMultiBind.createBindStream(\n this.bindOrder,\n action.entries[0].output.bindingsStream,\n [ action.entries[1].operation ],\n async(operations: Algebra.Operation[], operationBindings: Bindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n // Length of operations will always be 1\n const operation = operations[0];\n const output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate(\n { operation, context: subContext?.set(KeysQueryOperation.joinBindings, operationBindings) },\n ));\n return output.bindingsStream;\n },\n true,\n bindingsFactory,\n );\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // This actor only works well with common variables\n if (ActorRdfJoin.overlappingVariables(metadatas).length === 0) {\n throw new Error(`Actor ${this.name} only join entries with at least one common variable`);\n }\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Reject binding on some operation types\n if (action.entries[1].operation.type === Algebra.types.EXTEND ||\n action.entries[1].operation.type === Algebra.types.GROUP) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n\n // Determine selectivity of join\n const selectivity = (await this.mediatorJoinSelectivity.mediate({\n entries: action.entries,\n context: action.context,\n })).selectivity * this.selectivityModifier;\n\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value * selectivity,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * (\n requestItemTimes[0] +\n requestInitialTimes[1] +\n selectivity * metadatas[1].cardinality.value * requestItemTimes[1]\n ),\n };\n }\n}\n\nexport interface IActorRdfJoinOptionalBindArgs extends IActorRdfJoinArgs {\n /**\n * The order in which elements should be bound\n * @default {depth-first}\n */\n bindOrder: BindOrder;\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.000001}\n */\n selectivityModifier: number;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n IActorRdfJoinOutputInner,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { BindingsStream, MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator, ArrayIterator, MultiTransformIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { BindingsIndexDef } from './BindingsIndexDef';\nimport { BindingsIndexUndef } from './BindingsIndexUndef';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A comunica Optional Hash RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalHash extends ActorRdfJoin {\n private readonly blocking: boolean;\n\n public constructor(args: IActorRdfJoinOptionalHashArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: `hash-${args.canHandleUndefs ? 'undef' : 'def'}-${args.blocking ? 'blocking' : 'nonblocking'}`,\n limitEntries: 2,\n canHandleUndefs: args.canHandleUndefs,\n requiresVariableOverlap: true,\n });\n }\n\n public static constructIndex(undef: boolean, commonVariables: RDF.Variable[]): IBindingsIndex {\n return undef ?\n new BindingsIndexUndef(\n commonVariables,\n (term: RDF.Term | undefined) => term && term.termType !== 'Variable' ? termToString(term) : '',\n ) :\n new BindingsIndexDef(commonVariables, ActorRdfJoin.hashNonClashing);\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n\n let bindingsStream: BindingsStream;\n if (this.blocking) {\n // -- Blocking optional ---\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator first in a blocking manner.\n const index: IBindingsIndex = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings) ?? index.put(bindings, []);\n iterator.push(bindings);\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator => new ArrayIterator(\n (index.get(bindings).flat())\n .map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings))\n .filter(b => b !== null),\n { autoStart: false },\n ),\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n } else {\n // -- Non-blocking optional ---\n // This can be slightly slower than the blocking one above, due to the streaming overhead.\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator.\n // They are indexed with iterator values, so our main stream can already get started.\n const index: IBindingsIndex> = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n let indexActive = true;\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings) ??\n index.put(bindings, new BufferedIterator({ autoStart: false }));\n ( iterator)._push(bindings);\n });\n buffer.bindingsStream.on('end', () => {\n for (const iterator of index.values()) {\n iterator.close();\n }\n indexActive = false;\n });\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator => {\n // Find iterators from the index\n let iterators: AsyncIterator[] = index.get(bindings);\n\n // If no index entry was found, set an empty iterator.\n // If we index has been closed already, don't modify the index, but just use an empty dummy iterator.\n if (iterators.length === 0) {\n if (indexActive) {\n iterators = [ index.put(bindings, new BufferedIterator({ autoStart: false })) ];\n } else {\n iterators = [];\n }\n }\n\n // Merge all iterators in a single one,\n // and clone each one to make sure we can still use them in the future.\n const iterator = new UnionIterator(iterators.map(it => it.clone()), { autoStart: false });\n return iterator.map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings));\n },\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n }\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n let iterations = metadatas[0].cardinality.value + metadatas[1].cardinality.value;\n if (!this.canHandleUndefs) {\n // Our non-undef implementation is slightly more performant.\n iterations *= 0.8;\n }\n if (this.blocking) {\n // Our blocking implementation is slightly more performant.\n iterations *= 0.9;\n }\n return {\n iterations,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: this.blocking ? metadatas[0].cardinality.value : 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinOptionalHashArgs extends IActorRdfJoinArgs {\n /**\n * If this actor can handle undefined values.\n * If false, performance will be slightly better.\n */\n canHandleUndefs: boolean;\n /**\n * If the join will block when collecting the optional stream.\n * If true, performance will be better.\n */\n blocking: boolean;\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A simple efficient hash-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This can not handle bindings with undefined values.\n */\nexport class BindingsIndexDef implements IBindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly hashFn: (term: RDF.Bindings, keys: RDF.Variable[]) => string;\n private readonly index: Record;\n\n public constructor(keys: RDF.Variable[], hashFn: (term: RDF.Bindings, keys: RDF.Variable[]) => string) {\n this.keys = keys;\n this.hashFn = hashFn;\n this.index = {};\n }\n\n public put(bindings: RDF.Bindings, value: V): V {\n return this.index[this.hashFn(bindings, this.keys)] = value;\n }\n\n public get(bindings: RDF.Bindings): V[] {\n const v = this.getFirst(bindings);\n return v ? [ v ] : [];\n }\n\n public getFirst(bindings: RDF.Bindings): V | undefined {\n return this.index[this.hashFn(bindings, this.keys)];\n }\n\n public values(): V[] {\n return Object.values(this.index);\n }\n}\n","import type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A simple efficient tree-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This will consider bindings with a variable term or an undefined term\n * as a 'match-all' with other terms.\n */\nexport class BindingsIndexUndef implements IBindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly data: IDataIndex = {};\n private readonly hashFn: (term: RDF.Term | undefined) => string;\n\n public constructor(keys: RDF.Variable[], hashFn: (term: RDF.Term | undefined) => string) {\n this.keys = keys;\n this.hashFn = hashFn;\n }\n\n /**\n * Add the given bindings to the index.\n * @param {Bindings} bindings A bindings.\n * @param {V} value The value to put.\n */\n public put(bindings: Bindings, value: V): V {\n if (this.isBindingsValid(bindings)) {\n let dataIt: IDataIndex | V = this.data;\n for (let i = 0; i < this.keys.length; i++) {\n const key = this.keys[i];\n const dataKey = this.hashFn(bindings.get(key));\n let subDataIt: IDataIndex | V | undefined = (> dataIt)[dataKey];\n if (!subDataIt) {\n subDataIt = ((> dataIt))[dataKey] = i === this.keys.length - 1 ? value : {};\n }\n dataIt = subDataIt;\n }\n }\n return value;\n }\n\n protected isBindingsValid(bindings: Bindings): boolean {\n let validKeys = false;\n for (const key of this.keys) {\n if (bindings.has(key)) {\n validKeys = true;\n break;\n }\n }\n return validKeys;\n }\n\n /**\n * Get the value of the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {V[]} The values.\n */\n public get(bindings: Bindings): V[] {\n // Always return undefined if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return [];\n }\n\n return this.getRecursive(bindings, this.keys, [ this.data ]);\n }\n\n protected getRecursive(bindings: Bindings | undefined, keys: RDF.Variable[], dataIndexes: IDataIndex[]): V[] {\n if (keys.length === 0) {\n return dataIndexes;\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n const matchingRecursive: V[][] = [];\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = this.hashFn(bindings?.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = []> [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n matchingRecursive.push(this.getRecursive(bindings, keys, subDatas));\n } else {\n // Iterate over all entries\n const subDatas = []> Object.values(data);\n if (subDatas.length === 0) {\n continue;\n }\n matchingRecursive.push(this.getRecursive(bindings, keys, subDatas));\n }\n }\n return matchingRecursive.flat();\n }\n\n /**\n * Get the first value of the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {V | undefined} The value.\n */\n public getFirst(bindings: Bindings): V | undefined {\n // Always return undefined if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return undefined;\n }\n\n return this.getRecursiveFirst(bindings, this.keys, [ this.data ]);\n }\n\n protected getRecursiveFirst(bindings: Bindings, keys: RDF.Variable[], dataIndexes: IDataIndex[]): V | undefined {\n if (keys.length === 0) {\n return dataIndexes[0];\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = this.hashFn(bindings.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = []> [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n const ret = this.getRecursiveFirst(bindings, keys, subDatas);\n if (ret) {\n return ret;\n }\n } else {\n // Iterate over all entries\n const subDatas = []> Object.values(data);\n if (subDatas.length === 0) {\n continue;\n }\n const ret = this.getRecursiveFirst(bindings, keys, subDatas);\n if (ret) {\n return ret;\n }\n }\n }\n return undefined;\n }\n\n public values(): V[] {\n return this.keys.length === 0 ? [] : this.getRecursive(undefined, this.keys, [ this.data ]);\n }\n}\n\nexport interface IDataIndex {\n [key: string]: IDataIndex | V;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { NestedLoopJoin } from 'asyncjoin';\n\n/**\n * A comunica Optional Nested Loop RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalNestedLoop extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const join = new NestedLoopJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n ActorRdfJoin.joinBindings,\n { optional: true, autoStart: false },\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { IActionRdfJoinSelectivity, IActorRdfJoinSelectivityOutput } from '@comunica/bus-rdf-join-selectivity';\nimport { ActorRdfJoinSelectivity } from '@comunica/bus-rdf-join-selectivity';\nimport type { IActorArgs } from '@comunica/core';\nimport type { IMediatorTypeAccuracy } from '@comunica/mediatortype-accuracy';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Variable Counting RDF Join Selectivity Actor.\n * Based on the \"variable counting predicates\" heuristic from\n * \"SPARQL basic graph pattern optimization using selectivity estimation.\"\n */\nexport class ActorRdfJoinSelectivityVariableCounting extends ActorRdfJoinSelectivity {\n // Calculated as sum of unbound join type costs times 2 (best-case)\n public static MAX_PAIRWISE_COST = 41 * 2;\n\n public constructor(\n args: IActorArgs,\n ) {\n super(args);\n }\n\n public async test(_action: IActionRdfJoinSelectivity): Promise {\n return { accuracy: 0.5 };\n }\n\n public static getPatternCost(pattern: Algebra.Pattern | Algebra.Path): number {\n let cost = 1;\n if (pattern.subject.termType === 'Variable') {\n cost += 4;\n }\n if (pattern.predicate.termType === 'Variable' || pattern.type === Algebra.types.PATH) {\n cost += 1;\n }\n if (pattern.object.termType === 'Variable') {\n cost += 2;\n }\n if (pattern.graph.termType === 'Variable') {\n cost += 1;\n }\n return cost / 9;\n }\n\n public static getJoinTypes(\n operation1: Algebra.Pattern | Algebra.Path,\n operation2: Algebra.Pattern | Algebra.Path,\n ): JoinTypes[] {\n const joinTypes: JoinTypes[] = [];\n\n // Check operation1.subject\n if (operation1.subject.termType === 'Variable') {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundSG);\n }\n } else {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundSG);\n }\n }\n\n // Check operation1.predicate\n if (operation1.type === 'pattern') {\n if (operation1.predicate.termType === 'Variable') {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundPG);\n }\n } else {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundPG);\n }\n }\n }\n\n // Check operation1.object\n if (operation1.object.termType === 'Variable') {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundOG);\n }\n } else {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundOG);\n }\n }\n\n // Check operation1.graph\n if (operation1.graph.termType === 'Variable') {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundGG);\n }\n } else {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundGG);\n }\n }\n\n return joinTypes;\n }\n\n public static getOperationsPairwiseJoinCost(\n operation1: Algebra.Pattern | Algebra.Path,\n operation2: Algebra.Pattern | Algebra.Path,\n ): number {\n let cost = ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n\n for (const joinType of ActorRdfJoinSelectivityVariableCounting.getJoinTypes(operation1, operation2)) {\n switch (joinType) {\n case JoinTypes.boundSS:\n cost -= 2 * 2;\n break;\n case JoinTypes.boundSP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundSO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundSG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPP:\n // Special case: patterns with equal (bound) predicates have the highest cost\n return 1;\n case JoinTypes.boundPO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOS:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGG:\n cost -= 3 * 2;\n break;\n case JoinTypes.unboundSS:\n cost -= 2;\n break;\n case JoinTypes.unboundSP:\n cost -= 3;\n break;\n case JoinTypes.unboundSO:\n cost -= 1;\n break;\n case JoinTypes.unboundSG:\n cost -= 3;\n break;\n case JoinTypes.unboundPS:\n cost -= 3;\n break;\n case JoinTypes.unboundPP:\n cost -= 3;\n break;\n case JoinTypes.unboundPO:\n cost -= 3;\n break;\n case JoinTypes.unboundPG:\n cost -= 3;\n break;\n case JoinTypes.unboundOS:\n cost -= 1;\n break;\n case JoinTypes.unboundOP:\n cost -= 3;\n break;\n case JoinTypes.unboundOO:\n cost -= 1;\n break;\n case JoinTypes.unboundOG:\n cost -= 3;\n break;\n case JoinTypes.unboundGS:\n cost -= 3;\n break;\n case JoinTypes.unboundGP:\n cost -= 3;\n break;\n case JoinTypes.unboundGO:\n cost -= 3;\n break;\n case JoinTypes.unboundGG:\n cost -= 3;\n break;\n }\n }\n\n return cost / ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n }\n\n public static getOperationsJoinCost(operations: Algebra.Operation[]): number {\n // Determine all operations that select values (patterns and paths)\n const patterns: (Algebra.Pattern | Algebra.Path)[] = [];\n for (const operation of operations) {\n Util.recurseOperation(operation, {\n [Algebra.types.PATTERN](pattern: Algebra.Pattern): boolean {\n patterns.push(pattern);\n return false;\n },\n [Algebra.types.PATH](path: Algebra.Path): boolean {\n patterns.push(path);\n return false;\n },\n });\n }\n\n // Determine pairwise costs\n let totalCost = 0;\n let costEntries = 0;\n for (const pattern1 of patterns) {\n for (const pattern2 of patterns) {\n if (pattern1 !== pattern2) {\n totalCost += ActorRdfJoinSelectivityVariableCounting.getOperationsPairwiseJoinCost(pattern1, pattern2);\n costEntries++;\n }\n }\n }\n\n // If there are no overlapping patterns, the cost is 1\n if (costEntries === 0) {\n return 1;\n }\n\n // Combine all pairwise costs, and multiply with costs of each pattern separately\n return totalCost / costEntries * patterns\n .reduce((factor, pattern) => factor * ActorRdfJoinSelectivityVariableCounting.getPatternCost(pattern), 1);\n }\n\n public async run(action: IActionRdfJoinSelectivity): Promise {\n if (action.entries.length <= 1) {\n return { selectivity: 1 };\n }\n return {\n selectivity: ActorRdfJoinSelectivityVariableCounting\n .getOperationsJoinCost(action.entries.map(entry => entry.operation)),\n };\n }\n}\n\nexport enum JoinTypes {\n boundSS,\n boundSP,\n boundSO,\n boundSG,\n boundPS,\n boundPP,\n boundPO,\n boundPG,\n boundOS,\n boundOP,\n boundOO,\n boundOG,\n boundGS,\n boundGP,\n boundGO,\n boundGG,\n\n unboundSS,\n unboundSP,\n unboundSO,\n unboundSG,\n unboundPS,\n unboundPP,\n unboundPO,\n unboundPG,\n unboundOS,\n unboundOP,\n unboundOO,\n unboundOG,\n unboundGS,\n unboundGP,\n unboundGO,\n unboundGG,\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica CanContainUndefs RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateCanContainUndefs extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return default value on initialize\n if (action.mode === 'initialize') {\n return { metadata: { canContainUndefs: false }};\n }\n\n // Otherwise, attempt to increment existing value\n let canContainUndefs = action.accumulatedMetadata.canContainUndefs;\n if (action.appendingMetadata.canContainUndefs) {\n canContainUndefs = true;\n }\n return { metadata: { canContainUndefs }};\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\nimport type { QueryResultCardinality } from '@comunica/types';\n\n/**\n * A comunica Cardinality RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateCardinality extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return default value on initialize\n if (action.mode === 'initialize') {\n return { metadata: { cardinality: { type: 'exact', value: 0 }}};\n }\n\n // Otherwise, attempt to update existing value\n const cardinality: QueryResultCardinality = { ...action.accumulatedMetadata.cardinality };\n\n if (cardinality.dataset) {\n // If the accumulated cardinality refers to that of the full default graph (applicable for SPARQL endpoints)\n if (action.accumulatedMetadata.defaultGraph === cardinality.dataset &&\n cardinality.dataset !== action.appendingMetadata.cardinality.dataset) {\n // Use the cardinality of the appending metadata.\n return { metadata: { cardinality: action.appendingMetadata.cardinality }};\n }\n\n if (action.appendingMetadata.cardinality.dataset) {\n // If the accumulated cardinality is dataset-wide\n if (cardinality.dataset !== action.appendingMetadata.cardinality.dataset &&\n action.appendingMetadata.subsetOf === cardinality.dataset) {\n // If the appending cardinality refers to the subset of a dataset,\n // use the cardinality of the subset.\n return { metadata: { cardinality: action.appendingMetadata.cardinality }};\n }\n if (cardinality.dataset === action.appendingMetadata.cardinality.dataset) {\n // If the appending cardinality is for the same dataset,\n // keep the accumulated cardinality unchanged.\n return { metadata: { cardinality }};\n }\n // If the appending cardinality refers to another dataset,\n // remove the dataset scopes.\n delete cardinality.dataset;\n } else {\n // If the appending cardinality refers to a dataset subset,\n // keep the accumulated cardinality unchanged.\n return { metadata: { cardinality }};\n }\n }\n\n if (!action.appendingMetadata.cardinality || !Number.isFinite(action.appendingMetadata.cardinality.value)) {\n // We're already at infinite, so ignore any later metadata\n cardinality.type = 'estimate';\n cardinality.value = Number.POSITIVE_INFINITY;\n } else {\n if (action.appendingMetadata.cardinality.type === 'estimate') {\n cardinality.type = 'estimate';\n }\n cardinality.value += action.appendingMetadata.cardinality.value;\n }\n\n return { metadata: { cardinality }};\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica PageSize RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulatePageSize extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return nothing on initialize\n if (action.mode === 'initialize') {\n return { metadata: {}};\n }\n\n // Otherwise, attempt to increment existing value\n return {\n metadata: {\n ...('pageSize' in action.accumulatedMetadata) || ('pageSize' in action.appendingMetadata) ?\n {\n pageSize: (action.accumulatedMetadata.pageSize ?? 0) + (action.appendingMetadata.pageSize ?? 0),\n } :\n {},\n },\n };\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica RequestTime RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateRequestTime extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return nothing on initialize\n if (action.mode === 'initialize') {\n return { metadata: {}};\n }\n\n // Otherwise, attempt to increment existing value\n return {\n metadata: {\n ...('requestTime' in action.accumulatedMetadata) || ('requestTime' in action.appendingMetadata) ?\n {\n requestTime: (action.accumulatedMetadata.requestTime ?? 0) + (action.appendingMetadata.requestTime ?? 0),\n } :\n {},\n },\n };\n }\n}\n","import type {\n IActionRdfUpdateQuads,\n IActorRdfUpdateQuadsArgs,\n IQuadDestination,\n} from '@comunica/bus-rdf-update-quads';\nimport { ActorRdfUpdateQuadsDestination, getContextDestination } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { RdfJsQuadDestination } from './RdfJsQuadDestination';\n\n/**\n * A comunica RDFJS Store RDF Update Quads Actor.\n */\nexport class ActorRdfUpdateQuadsRdfJsStore extends ActorRdfUpdateQuadsDestination {\n public constructor(args: IActorRdfUpdateQuadsArgs) {\n super(args);\n }\n\n public override async test(action: IActionRdfUpdateQuads): Promise {\n const destination = getContextDestination(action.context);\n if (!destination || typeof destination === 'string' ||\n (!('remove' in destination) && 'value' in destination && !( destination.value).remove)) {\n throw new Error(`${this.name} received an invalid rdfjsStore.`);\n }\n return true;\n }\n\n protected async getDestination(context: IActionContext): Promise {\n const destination: any = getContextDestination(context);\n return new RdfJsQuadDestination('remove' in destination ? destination : destination.value);\n }\n}\n","import type { IQuadDestination } from '@comunica/bus-rdf-update-quads';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { promisifyEventEmitter } from 'event-emitter-promisify';\nimport { DataFactory } from 'rdf-data-factory';\nimport { stringToTerm, termToString } from 'rdf-string';\n\nconst DF = new DataFactory();\n\n/**\n * A quad destination that wraps around an {@link RDF.Store}.\n */\nexport class RdfJsQuadDestination implements IQuadDestination {\n private readonly store: RDF.Store;\n\n public constructor(store: RDF.Store) {\n this.store = store;\n }\n\n public delete(quads: AsyncIterator): Promise {\n return promisifyEventEmitter(this.store.remove(quads));\n }\n\n public insert(quads: AsyncIterator): Promise {\n return promisifyEventEmitter(this.store.import(quads));\n }\n\n public async deleteGraphs(\n graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[],\n _requireExistence: boolean,\n _dropGraphs: boolean,\n ): Promise {\n switch (graphs) {\n case 'ALL':\n /* eslint-disable no-fallthrough */\n // Remove the default graph\n await promisifyEventEmitter(this.store.deleteGraph(DF.defaultGraph()));\n // Drop through to remove all named graphs\n case 'NAMED':\n /* eslint-enable no-fallthrough */\n // Warning: this is sub-optimal!\n // Query ALL quads to determine all named graphs\n // eslint-disable-next-line no-case-declarations\n const allQuads = this.store.match();\n // eslint-disable-next-line no-case-declarations\n const namedGraphs: Record = {};\n allQuads.on('data', (quad: RDF.Quad) => {\n if (quad.graph.termType !== 'DefaultGraph') {\n namedGraphs[termToString(quad.graph)] = true;\n }\n });\n await promisifyEventEmitter(allQuads);\n\n // Delete all named graphs\n await Promise.all(Object.keys(namedGraphs)\n .map(namedGraph => promisifyEventEmitter(this.store\n .deleteGraph( stringToTerm(namedGraph)))));\n break;\n default:\n // Delete the default graph or a named graph\n for (const graph of Array.isArray(graphs) ? graphs : [ graphs ]) {\n await promisifyEventEmitter(this.store.deleteGraph(graph));\n }\n }\n }\n\n public async createGraphs(graphs: RDF.NamedNode[], requireNonExistence: boolean): Promise {\n // We don't have to create anything, since RDF/JS stores don't record empty graphs.\n\n // The only check we have to do is error on existence\n if (requireNonExistence) {\n for (const graph of graphs) {\n const eventEmitter = this.store.match(undefined, undefined, undefined, graph);\n await new Promise((resolve, reject) => {\n eventEmitter.once('data', () => {\n reject(new Error(`Unable to create graph ${graph.value} as it already exists`));\n });\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n }\n }\n}\n","import type { IBindingsContextMergeHandler } from '@comunica/bus-merge-bindings-context';\nimport { ActionContext } from '@comunica/core';\nimport type { IActionContext, IActionContextKey } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Map } from 'immutable';\nimport { bindingsToString } from './bindingsToString';\n\n/**\n * An immutable.js-based Bindings object.\n */\nexport class Bindings implements RDF.Bindings {\n public readonly type = 'bindings';\n\n private readonly dataFactory: RDF.DataFactory;\n private readonly entries: Map;\n private readonly contextHolder: IContextHolder | undefined;\n\n public constructor(dataFactory: RDF.DataFactory, entries: Map, contextHolder?: IContextHolder) {\n this.dataFactory = dataFactory;\n this.entries = entries;\n this.contextHolder = contextHolder;\n }\n\n public has(key: RDF.Variable | string): boolean {\n return this.entries.has(typeof key === 'string' ? key : key.value);\n }\n\n public get(key: RDF.Variable | string): RDF.Term | undefined {\n return this.entries.get(typeof key === 'string' ? key : key.value);\n }\n\n public set(key: RDF.Variable | string, value: RDF.Term): Bindings {\n return new Bindings(\n this.dataFactory,\n this.entries.set(typeof key === 'string' ? key : key.value, value),\n this.contextHolder,\n );\n }\n\n public delete(key: RDF.Variable | string): Bindings {\n return new Bindings(\n this.dataFactory,\n this.entries.delete(typeof key === 'string' ? key : key.value),\n this.contextHolder,\n );\n }\n\n public keys(): Iterable {\n return this.mapIterable(\n this.iteratorToIterable(this.entries.keys()),\n key => this.dataFactory.variable!(key),\n );\n }\n\n public values(): Iterable {\n return this.iteratorToIterable(this.entries.values());\n }\n\n public forEach(fn: (value: RDF.Term, key: RDF.Variable) => any): void {\n for (const [ key, value ] of this.entries.entries()) {\n fn(value, this.dataFactory.variable!(key));\n }\n }\n\n public get size(): number {\n return this.entries.size;\n }\n\n public [Symbol.iterator](): Iterator<[RDF.Variable, RDF.Term]> {\n return this.mapIterable<[string, RDF.Term], [RDF.Variable, RDF.Term]>(\n this.iteratorToIterable(> this.entries.entries()),\n ([ key, value ]) => [ this.dataFactory.variable!(key), value ],\n )[Symbol.iterator]();\n }\n\n public equals(other: RDF.Bindings | null | undefined): boolean {\n if (!other) {\n return false;\n }\n if (this === other) {\n return true;\n }\n\n // First check if size is equal\n if (this.size !== other.size) {\n return false;\n }\n\n // Then check if keys and values are equal\n for (const key of this.keys()) {\n if (!this.get(key)?.equals(other.get(key))) {\n return false;\n }\n }\n\n return true;\n }\n\n public filter(fn: (value: RDF.Term, key: RDF.Variable) => boolean): Bindings {\n return new Bindings(this.dataFactory, Map( this.entries\n .filter((value, key) => fn(value, this.dataFactory.variable!(key)))), this.contextHolder);\n }\n\n public map(fn: (value: RDF.Term, key: RDF.Variable) => RDF.Term): Bindings {\n return new Bindings(this.dataFactory, Map( this.entries\n .map((value, key) => fn(value, this.dataFactory.variable!(key)))), this.contextHolder);\n }\n\n public merge(other: RDF.Bindings | Bindings): Bindings | undefined {\n if (this.size < other.size && other instanceof Bindings) {\n return other.merge(this);\n }\n let entries = this.entries;\n\n // Check if other is of type Bindings, in that case we can access entries immediately.\n // This skips the unnecessary conversion from string to variable.\n if (other instanceof Bindings) {\n for (const [ variable, right ] of other.entries) {\n const left = this.entries.get(variable);\n if (left && !left.equals(right)) {\n return;\n }\n entries = entries.set(variable, right);\n }\n } else {\n for (const [ variable, right ] of other) {\n const left = this.entries.get(variable.value);\n if (left && !left.equals(right)) {\n return;\n }\n entries = entries.set(variable.value, right);\n }\n }\n\n return this.createBindingsWithContexts(entries, other);\n }\n\n public mergeWith(\n merger: (self: RDF.Term, other: RDF.Term, key: RDF.Variable) => RDF.Term,\n other: RDF.Bindings | Bindings,\n ): Bindings {\n if (this.size < other.size && other instanceof Bindings) {\n return other.mergeWith(merger, this);\n }\n let entries = this.entries;\n\n // For code comments see Bindings.merge function\n if (other instanceof Bindings) {\n for (const [ variable, right ] of other.entries) {\n const left = this.entries.get(variable);\n let value: RDF.Term;\n if (left && !left.equals(right)) {\n value = merger(left, right, this.dataFactory.variable!(variable));\n } else {\n value = right;\n }\n entries = entries.set(variable, value);\n }\n } else {\n for (const [ variable, right ] of other) {\n const left = this.entries.get(variable.value);\n let value: RDF.Term;\n if (left && !left.equals(right)) {\n value = merger(left, right, variable);\n } else {\n value = right;\n }\n entries = entries.set(variable.value, value);\n }\n }\n\n return this.createBindingsWithContexts(entries, other);\n }\n\n protected createBindingsWithContexts(entries: Map, other: RDF.Bindings | Bindings): Bindings {\n // If any context is empty, we skip merging contexts\n if (this.contextHolder && this.contextHolder.context) {\n let mergedContext = this.contextHolder.context;\n // Only merge if the other has a context\n if ('contextHolder' in other && other.contextHolder && other.contextHolder.context) {\n mergedContext = Bindings\n .mergeContext(this.contextHolder.contextMergeHandlers, mergedContext, other.contextHolder.context);\n }\n return new Bindings(\n this.dataFactory,\n entries,\n { contextMergeHandlers: this.contextHolder.contextMergeHandlers, context: mergedContext },\n );\n }\n\n // Otherwise, use optional context from other\n return new Bindings(this.dataFactory, entries, ( other).contextHolder);\n }\n\n private static mergeContext(\n contextMergeHandlers: Record>,\n context: IActionContext,\n otherContext: IActionContext,\n ): IActionContext {\n // All keys can contain duplicates, we prevent this by checking our built datamap for duplicates\n const allKeys = [ ...context.keys(), ...otherContext.keys() ];\n // Map we build up with merged context values\n const newContextData: Record = {};\n const handledKeys: Record = {};\n\n // Set of names of keys in other context to allow for constant time lookup\n const keysSetOtherContext = new Set(\n otherContext.keys().map(key => key.name),\n );\n const keysBothContext = context.keys().filter(\n key => keysSetOtherContext.has(key.name),\n );\n\n for (const key of allKeys) {\n // If duplicate key, we continue iterating\n if (handledKeys[key.name] === 1) {\n continue;\n }\n\n // We've processed this key and shouldn't repeat it\n handledKeys[key.name] = 1;\n\n // Determine whether this key occurs in both contexts\n const occursInBoth = keysBothContext.some(x => x.name === key.name);\n\n // If we execute this function, we already check for existence of context merge handlers\n // This if statement is first as the most likely case for non-empty contexts is that we have mergehandlers\n // and both contexts have an entry\n if (contextMergeHandlers[key.name] && occursInBoth) {\n newContextData[key.name] = contextMergeHandlers[key.name]\n .run(context.get(key), otherContext.get(key));\n continue;\n }\n // If we have no merge handler, but both contexts have entries for key, we don't add it to new context\n if (!contextMergeHandlers[key.name] && occursInBoth) {\n continue;\n }\n\n // If key doesn't occur in own context, it must be in other context\n // (if we get to this point, the key doesn't occur in both)\n if (!context.get(key)) {\n newContextData[key.name] = otherContext.get(key);\n continue;\n }\n // This could likely be else statement, but don't want to risk it\n if (!otherContext.get(key)) {\n newContextData[key.name] = context.get(key);\n }\n }\n return new ActionContext(newContextData);\n }\n\n public setContextEntry(key: IActionContextKey, value: any): Bindings {\n return this.setContextEntryRaw(key, value);\n }\n\n public setContextEntryRaw(key: IActionContextKey, value: any): Bindings {\n if (this.contextHolder && this.contextHolder.context) {\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder.contextMergeHandlers,\n context: this.contextHolder.context.set(key, value),\n },\n );\n }\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder?.contextMergeHandlers ?? {},\n context: new ActionContext().set(key, value),\n },\n );\n }\n\n public deleteContextEntry(key: IActionContextKey): Bindings {\n return this.deleteContextEntryRaw(key);\n }\n\n public deleteContextEntryRaw(key: IActionContextKey): Bindings {\n if (this.contextHolder) {\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder.contextMergeHandlers,\n context: this.contextHolder.context?.delete(key),\n },\n );\n }\n return new Bindings(this.dataFactory, this.entries);\n }\n\n public getContext(): IActionContext | undefined {\n return this.contextHolder?.context;\n }\n\n public getContextEntry(key: IActionContextKey): V | undefined {\n return this.getContext()?.get(key);\n }\n\n public toString(): string {\n return bindingsToString(this);\n }\n\n protected* mapIterable(iterable: Iterable, callback: (value: T) => U): Iterable {\n for (const x of iterable) {\n yield callback(x);\n }\n }\n\n protected iteratorToIterable(iterator: Iterator): Iterable {\n return {\n [Symbol.iterator]: () => iterator,\n };\n }\n}\n\nexport interface IContextHolder {\n contextMergeHandlers: Record>;\n context?: IActionContext;\n}\n","import type { IBindingsContextMergeHandler, MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Map } from 'immutable';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Bindings } from './Bindings';\n\n/**\n * A Bindings factory that provides Bindings backed by immutable.js.\n */\nexport class BindingsFactory implements RDF.BindingsFactory {\n private readonly dataFactory: RDF.DataFactory;\n private readonly contextMergeHandlers: Record> | undefined;\n\n public constructor(\n dataFactory: DataFactory = new DataFactory(),\n contextMergeHandlers?: Record>,\n ) {\n this.dataFactory = dataFactory;\n this.contextMergeHandlers = contextMergeHandlers;\n }\n\n public static async create(\n mediatorMergeBindingsContext: MediatorMergeBindingsContext,\n context: IActionContext,\n ): Promise {\n return new BindingsFactory(\n new DataFactory(),\n (await mediatorMergeBindingsContext.mediate({ context })).mergeHandlers,\n );\n }\n\n public bindings(entries: [RDF.Variable, RDF.Term][] = []): Bindings {\n return new Bindings(\n this.dataFactory,\n Map(entries.map(([ key, value ]) => [ key.value, value ])),\n this.contextMergeHandlers ? { contextMergeHandlers: this.contextMergeHandlers } : undefined,\n );\n }\n\n public fromBindings(bindings: RDF.Bindings): Bindings {\n return this.bindings([ ...bindings ]);\n }\n\n public fromRecord(record: Record): Bindings {\n return this.bindings(Object.entries(record).map(([ key, value ]) => [ this.dataFactory.variable!(key), value ]));\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\n\n/**\n * Stringify a bindings object.\n * @param bindings A bindings object.\n */\nexport function bindingsToString(bindings: RDF.Bindings): string {\n const raw: Record = {};\n for (const key of bindings.keys()) {\n raw[key.value] = termToString(bindings.get(key))!;\n }\n return JSON.stringify(raw, null, ' ');\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica actor for context-preprocess events.\n *\n * Actor types:\n * * Input: IAction: A context that will be processed.\n * * Test: \n * * Output: IActorContextPreprocessOutput: The resulting context.\n *\n * @see IActionContextPreprocess\n * @see IActorContextPreprocessOutput\n */\nexport abstract class ActorContextPreprocess\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n}\n\nexport interface IActionContextPreprocess extends IAction {\n /**\n * If the query processing is being initialized.\n * This is typically used for setting query-wide defaults.\n * This will be false for initializing source-specific contexts.\n */\n initialize?: boolean;\n}\n\nexport interface IActorContextPreprocessOutput extends IActorOutput {\n /**\n * A context object.\n * Can be null.\n */\n context: IActionContext;\n}\n\nexport type IActorContextPreprocessArgs = IActorArgs<\nIActionContextPreprocess,\nIActorTest,\nIActorContextPreprocessOutput\n>;\n\nexport type MediatorContextPreprocess = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediator } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { Bindings } from '@comunica/types';\n\n/**\n * A comunica actor for hash-bindings events.\n *\n * Actor types:\n * * Input: IActionHashBindings: Metadata for selecting a hash function.\n * * Test: IActorTest:\n * * Output: IActorHashBindingsOutput: The resulting hash function.\n *\n * @see IActionHashBindings\n * @see IActorHashBindingsTest\n * @see IActorHashBindingsOutput\n */\nexport abstract class ActorHashBindings\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHashBindingsArgs) {\n super(args);\n }\n}\n\nexport interface IActionHashBindings extends IAction {\n /**\n * If hash collisions are allowed.\n */\n allowHashCollisions: boolean;\n}\n\nexport interface IActorHashBindingsOutput extends IActorOutput {\n /**\n * A string-based hash of the given object.\n * @param {Bindings} bindings The bindings to hash.\n * @return {string} The object's hash.\n */\n hashFunction: HashFunction;\n\n /**\n * If hash collisions are possible with the given hash function.\n */\n hashCollisions: boolean;\n}\n\nexport type HashFunction = (bindings: Bindings) => string;\n\nexport type IActorHashBindingsArgs = IActorArgs;\n\nexport type MediatorHashBindings = Mediator<\nActor,\nIActionHashBindings,\nIActorTest,\nIActorHashBindingsOutput\n>;\n","import { Actor } from '@comunica/core';\nimport type { IAction, IActorArgs, IActorOutput, IActorTest, Mediator } from '@comunica/core';\nimport type { Quad } from 'rdf-data-factory';\n\n/**\n * A comunica actor for hash-quads events.\n *\n * Actor types:\n * * Input: IActionHashQuads: Metadata for selecting a hash function.\n * * Test: \n * * Output: IActorHashQuadsOutput: The resulting hash function.\n *\n * @see IActionHashQuads\n * @see IActorHashQuadsOutput\n */\nexport abstract class ActorHashQuads extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHashQuadsArgs) {\n super(args);\n }\n}\n\nexport interface IActionHashQuads extends IAction {\n /**\n * If hash collisions are allowed.\n */\n allowHashCollisions: boolean;\n}\n\nexport interface IActorHashQuadsOutput extends IActorOutput {\n /**\n * A string-based hash of the given object.\n * @param {Quads} quads The quads to hash.\n * @return {string} The object's hash.\n */\n hashFunction: HashFunction;\n\n /**\n * If hash collisions are possible with the given hash function.\n */\n hashCollisions: boolean;\n}\n\nexport type HashFunction = (quad: Quad) => string;\n\nexport type IActorHashQuadsArgs = IActorArgs<\nIActionHashQuads,\nIActorTest,\nIActorHashQuadsOutput\n>;\n\nexport type MediatorHashQuads = Mediator<\nActor,\nIActionHashQuads,\nIActorTest,\nIActorHashQuadsOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\n\n/**\n * A comunica actor for http-invalidate events.\n *\n * Actor types:\n * * Input: IActionHttpInvalidate: An action for invalidating the cached contents of given URL.\n * * Test: \n * * Output: IActorHttpInvalidateOutput: An empty response.\n *\n * @see IActionHttpInvalidate\n * @see IActorHttpInvalidateOutput\n */\nexport abstract class ActorHttpInvalidate extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHttpInvalidateArgs) {\n super(args);\n }\n}\n\nexport interface IActionHttpInvalidate extends IAction {\n /**\n * The URL that requires invalidation.\n * If not provided, then _all_ URLs need to be invalidated.\n */\n url?: string;\n}\n\nexport interface IActorHttpInvalidateOutput extends IActorOutput {\n\n}\n\nexport type IActorHttpInvalidateArgs = IActorArgs;\n\nexport type MediatorHttpInvalidate = Mediate;\n","import type { IActorTest } from '@comunica/core';\nimport type {\n IActionHttpInvalidate,\n IActorHttpInvalidateOutput,\n IActorHttpInvalidateArgs,\n} from './ActorHttpInvalidate';\nimport { ActorHttpInvalidate } from './ActorHttpInvalidate';\n\n/**\n * An ActorHttpInvalidate actor that allows listeners to be attached.\n *\n * @see ActorHttpInvalidate\n */\nexport class ActorHttpInvalidateListenable extends ActorHttpInvalidate {\n private readonly invalidateListeners: IInvalidateListener[] = [];\n\n public constructor(args: IActorHttpInvalidateArgs) {\n super(args);\n this.invalidateListeners = [];\n }\n\n public addInvalidateListener(listener: IInvalidateListener): void {\n this.invalidateListeners.push(listener);\n }\n\n public async test(_action: IActionHttpInvalidate): Promise {\n return true;\n }\n\n public async run(action: IActionHttpInvalidate): Promise {\n for (const listener of this.invalidateListeners) {\n listener(action);\n }\n return {};\n }\n}\n\n/**\n * Called when a {@link IActionHttpInvalidate} is received.\n */\nexport type IInvalidateListener = (action: IActionHttpInvalidate) => void;\n","import type { IAction, IActorOutput, IActorTest, IActorArgs, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { Readable } from 'readable-stream';\n\n/**\n * A base actor for listening to init events.\n *\n * Actor types:\n * * Input: IActionInit: Contains process information\n * such as the list of arguments,\n * environment variables and input stream.\n * * Test: \n * * Output: IActorOutputInit: Contains process output streams.\n *\n * @see IActionInit\n */\nexport abstract class ActorInit extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorInitArgs) {\n super(args);\n }\n}\n\n/**\n * The init input, which contains the program arguments.\n */\nexport interface IActionInit extends IAction {\n /**\n * The list of program arguments.\n */\n argv: string[];\n /**\n * The mapping of environment variables.\n */\n env: Record;\n /**\n * A standard input stream.\n */\n stdin: Readable;\n}\n\nexport interface IActorOutputInit extends IActorOutput {\n /**\n * A standard error output stream.\n */\n stderr?: Readable;\n /**\n * A standard output stream.\n */\n stdout?: Readable;\n}\n\nexport type IActorInitArgs = IActorArgs;\n\nexport type MediatorInit = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for optimize-query-operation events.\n *\n * Actor types:\n * * Input: IActionOptimizeQueryOperation: An incoming SPARQL operation.\n * * Test: \n * * Output: IActorOptimizeQueryOperationOutput: A (possibly optimized) outgoing SPARQL operation.\n *\n * @see IActionOptimizeQueryOperation\n * @see IActorOptimizeQueryOperationOutput\n */\nexport abstract class ActorOptimizeQueryOperation\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n}\n\nexport interface IActionOptimizeQueryOperation extends IAction {\n operation: Algebra.Operation;\n}\n\nexport interface IActorOptimizeQueryOperationOutput extends IActorOutput {\n operation: Algebra.Operation;\n context: IActionContext;\n}\n\nexport type IActorOptimizeQueryOperationArgs = IActorArgs<\nIActionOptimizeQueryOperation,\nIActorTest,\nIActorOptimizeQueryOperationOutput\n>;\n\nexport type MediatorOptimizeQueryOperation = Mediate<\nIActionOptimizeQueryOperation,\nIActorOptimizeQueryOperationOutput\n>;\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { KeysInitQuery, KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorArgs, IActorTest, IAction, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport { BlankNodeBindingsScoped } from '@comunica/data-factory';\nimport type {\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n IQueryOperationResultQuads,\n IQueryOperationResultVoid,\n Bindings,\n IActionContext,\n FunctionArgumentsCache,\n IQuerySourceWrapper,\n FragmentSelectorShape,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { materializeOperation } from './Bindings';\n\n/**\n * A counter that keeps track blank node generated through BNODE() SPARQL\n * expressions.\n *\n * @type {number}\n */\nlet bnodeCounter = 0;\n\n/**\n * A comunica actor for query-operation events.\n *\n * Actor types:\n * * Input: IActionQueryOperation: A SPARQL Algebra operation.\n * * Test: \n * * Output: IActorQueryOperationOutput: A bindings stream.\n *\n * @see IActionQueryOperation\n * @see IQueryOperationResult\n */\nexport abstract class ActorQueryOperation extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n protected constructor(args: IActorQueryOperationArgs) {\n super(args);\n }\n\n /**\n * Safely cast a query operation output to a bindings output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBindings} A bindings query operation output.\n */\n public static getSafeBindings(output: IQueryOperationResult): IQueryOperationResultBindings {\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a quads output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultQuads} A quads query operation output.\n */\n public static getSafeQuads(output: IQueryOperationResult): IQueryOperationResultQuads {\n ActorQueryOperation.validateQueryOutput(output, 'quads');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a boolean output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBoolean} A boolean query operation output.\n */\n public static getSafeBoolean(output: IQueryOperationResult): IQueryOperationResultBoolean {\n ActorQueryOperation.validateQueryOutput(output, 'boolean');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a void output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultVoid} A void query operation output.\n */\n public static getSafeVoid(output: IQueryOperationResult): IQueryOperationResultVoid {\n ActorQueryOperation.validateQueryOutput(output, 'void');\n return output;\n }\n\n /**\n * Throw an error if the output type does not match the expected type.\n * @param {IQueryOperationResult} output A query operation output.\n * @param {string} expectedType The expected output type.\n */\n public static validateQueryOutput(output: IQueryOperationResult, expectedType: IQueryOperationResult['type']): void {\n if (output.type !== expectedType) {\n throw new Error(`Invalid query output type: Expected '${expectedType}' but got '${output.type}'`);\n }\n }\n\n protected static getBaseExpressionContext(context: IActionContext): IBaseExpressionContext {\n const now: Date | undefined = context.get(KeysInitQuery.queryTimestamp);\n const baseIRI: string | undefined = context.get(KeysInitQuery.baseIRI);\n const functionArgumentsCache: FunctionArgumentsCache = context.get(KeysInitQuery.functionArgumentsCache) ?? {};\n\n // Handle two variants of providing extension functions\n if (context.has(KeysInitQuery.extensionFunctionCreator) && context.has(KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n let extensionFunctionCreator: ((functionNamedNode: RDF.NamedNode) =>\n ((args: RDF.Term[]) => Promise) | undefined) | undefined = context\n .get(KeysInitQuery.extensionFunctionCreator);\n // Convert dictionary-based variant to callback\n const extensionFunctions: (Record Promise>) | undefined = context\n .get(KeysInitQuery.extensionFunctions);\n if (extensionFunctions) {\n extensionFunctionCreator = functionNamedNode => extensionFunctions[functionNamedNode.value];\n }\n\n return { now, baseIRI, extensionFunctionCreator, functionArgumentsCache };\n }\n\n /**\n * Create an options object that can be used to construct a expression-evaluator synchronous evaluator.\n * @param context An action context.\n * @param _mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n public static getExpressionContext(context: IActionContext, _mediatorQueryOperation?: MediatorQueryOperation):\n ISyncExpressionContext {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input?: string) => new BlankNodeBindingsScoped(input ?? `BNODE_${bnodeCounter++}`),\n };\n }\n\n /**\n * Create an options object that can be used to construct a expression-evaluator asynchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation A query query operation mediator for resolving `exists`.\n * @param bindingsFactory The bindings factory.\n */\n public static getAsyncExpressionContext(\n context: IActionContext,\n mediatorQueryOperation: MediatorQueryOperation,\n bindingsFactory: BindingsFactory,\n ):\n IAsyncExpressionContext {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input?: string) => Promise.resolve(new BlankNodeBindingsScoped(input ?? `BNODE_${bnodeCounter++}`)),\n exists: ActorQueryOperation.createExistenceResolver(context, mediatorQueryOperation, bindingsFactory),\n };\n }\n\n /**\n * Create an existence resolver for usage within an expression context.\n * @param context An action context.\n * @param mediatorQueryOperation A query operation mediator.\n * @param bindingsFactory The bindings factory.\n */\n public static createExistenceResolver(\n context: IActionContext,\n mediatorQueryOperation: MediatorQueryOperation,\n bindingsFactory: BindingsFactory,\n ):\n (expr: Algebra.ExistenceExpression, bindings: Bindings) => Promise {\n return async(expr, bindings) => {\n const operation = materializeOperation(expr.input, bindings, bindingsFactory);\n\n const outputRaw = await mediatorQueryOperation.mediate({ operation, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n return expr.not !== ((await output.bindingsStream.take(1).toArray()).length === 1);\n };\n }\n\n /**\n * Throw an error if the context contains the readOnly flag.\n * @param context An action context.\n */\n public static throwOnReadOnly(context: IActionContext): void {\n if (context.get(KeysQueryOperation.readOnly)) {\n throw new Error(`Attempted a write operation in read-only mode`);\n }\n }\n\n /**\n * Obtain the query source attached to the given operation.\n * @param operation An algebra operation.\n */\n public static getOperationSource(operation: Algebra.Operation): IQuerySourceWrapper | undefined {\n return operation.metadata?.scopedSource;\n }\n\n /**\n * Assign a source wrapper to the given operation.\n * The operation is copied and returned.\n * @param operation An operation.\n * @param source A source wrapper.\n */\n public static assignOperationSource(operation: O, source: IQuerySourceWrapper): O {\n operation = { ...operation };\n operation.metadata = operation.metadata ? { ...operation.metadata } : {};\n operation.metadata.scopedSource = source;\n return operation;\n }\n\n /**\n * Remove the source wrapper from the given operation.\n * The operation is mutated.\n * @param operation An operation.\n */\n public static removeOperationSource(operation: Algebra.Operation): void {\n delete operation.metadata?.scopedSource;\n if (operation.metadata && Object.keys(operation.metadata).length === 0) {\n delete operation.metadata;\n }\n }\n\n /**\n * Check if the given shape accepts the given query operation.\n * @param shape A shape to test the query operation against.\n * @param operation A query operation to test.\n * @param options Additional options to consider.\n * @param options.joinBindings If additional bindings will be pushed down to the source for joining.\n * @param options.filterBindings If additional bindings will be pushed down to the source for filtering.\n */\n public static doesShapeAcceptOperation(\n shape: FragmentSelectorShape,\n operation: Algebra.Operation,\n options?: {\n joinBindings?: boolean;\n filterBindings?: boolean;\n },\n ): boolean {\n if (shape.type === 'conjunction') {\n return shape.children.every(child => ActorQueryOperation.doesShapeAcceptOperation(child, operation, options));\n }\n if (shape.type === 'disjunction') {\n return shape.children.some(child => ActorQueryOperation.doesShapeAcceptOperation(child, operation, options));\n }\n if (shape.type === 'arity') {\n return ActorQueryOperation.doesShapeAcceptOperation(shape.child, operation, options);\n }\n\n if ((options?.joinBindings && !shape.joinBindings) ?? (options?.filterBindings && !shape.filterBindings)) {\n return false;\n }\n\n if (shape.operation.operationType === 'type') {\n return shape.operation.type === 'project' || shape.operation.type === operation.type;\n }\n return shape.operation.pattern.type === operation.type;\n }\n}\n\nexport interface IActionQueryOperation extends IAction {\n /**\n * The query operation to handle.\n */\n operation: Algebra.Operation;\n}\n\nexport type IActorQueryOperationArgs = IActorArgs;\n\nexport type MediatorQueryOperation = Mediate;\n\nexport interface IBaseExpressionContext {\n now?: Date;\n baseIRI?: string;\n extensionFunctionCreator?: (functionNamedNode: RDF.NamedNode) =>\n ((args: RDF.Term[]) => Promise) | undefined;\n functionArgumentsCache?: FunctionArgumentsCache;\n}\n\nexport interface ISyncExpressionContext extends IBaseExpressionContext {\n bnode: (input?: string | undefined) => RDF.BlankNode;\n}\n\nexport interface IAsyncExpressionContext extends IBaseExpressionContext {\n bnode: (input?: string | undefined) => Promise;\n exists?: (expr: Algebra.ExistenceExpression, bindings: Bindings) => Promise;\n}\n","import { KeysInitQuery, KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { cachifyMetadata } from '@comunica/metadata';\nimport type {\n IQueryOperationResult,\n IPhysicalQueryPlanLogger,\n IActionContext,\n IMetadata,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { IActionQueryOperation, IActorQueryOperationArgs } from './ActorQueryOperation';\nimport { ActorQueryOperation } from './ActorQueryOperation';\n\n/**\n * A base implementation for query operation actors for a specific operation type.\n */\nexport abstract class ActorQueryOperationTyped extends ActorQueryOperation {\n public readonly operationName: string;\n\n protected constructor(args: IActorQueryOperationArgs, operationName: string) {\n super( { ...args, operationName });\n if (!this.operationName) {\n throw new Error('A valid \"operationName\" argument must be provided.');\n }\n }\n\n public async test(action: IActionQueryOperation): Promise {\n if (!action.operation) {\n throw new Error('Missing field \\'operation\\' in a query operation action.');\n }\n if (action.operation.type !== this.operationName) {\n throw new Error(`Actor ${this.name} only supports ${this.operationName} operations, but got ${\n action.operation.type}`);\n }\n const operation: O = action.operation;\n return this.testOperation(operation, action.context);\n }\n\n public async run(action: IActionQueryOperation): Promise {\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context\n .get(KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(\n action.operation.type,\n undefined,\n action.operation,\n action.context.get(KeysInitQuery.physicalQueryPlanNode),\n this.name,\n {},\n );\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n\n const operation: O = action.operation;\n const subContext = action.context.set(KeysQueryOperation.operation, operation);\n const output: IQueryOperationResult = await this.runOperation(operation, subContext);\n if ('metadata' in output) {\n output.metadata = \n cachifyMetadata, RDF.QuadTermName | RDF.Variable>(output.metadata);\n }\n return output;\n }\n\n protected abstract testOperation(operation: O, context: IActionContext): Promise;\n\n protected abstract runOperation(operation: O, context: IActionContext):\n Promise;\n}\n","import type { Algebra } from 'sparqlalgebrajs';\nimport type { IActorQueryOperationArgs, MediatorQueryOperation } from './ActorQueryOperation';\nimport { ActorQueryOperationTyped } from './ActorQueryOperationTyped';\n\n/**\n * A base implementation for query operation actors for a specific operation type that have a query operation mediator.\n */\nexport abstract class ActorQueryOperationTypedMediated extends ActorQueryOperationTyped\n implements IActorQueryOperationTypedMediatedArgs {\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs, operationName: string) {\n super(args, operationName);\n }\n}\n\nexport interface IActorQueryOperationTypedMediatedArgs extends IActorQueryOperationArgs {\n mediatorQueryOperation: MediatorQueryOperation;\n}\n","import type { IActorTest, IBusArgs } from '@comunica/core';\nimport { BusIndexed } from '@comunica/core';\nimport type { IQueryOperationResult } from '@comunica/types';\nimport type { ActorQueryOperation, IActionQueryOperation } from './ActorQueryOperation';\n\n/**\n * Indexed bus for query operations.\n */\nexport class BusQueryOperation\n extends BusIndexed {\n public constructor(args: IBusArgs) {\n super({\n ...args,\n actorIdentifierFields: [ 'operationName' ],\n actionIdentifierFields: [ 'operation', 'type' ],\n });\n }\n}\n","import { AsyncIterator, DESTINATION } from 'asynciterator';\n\ntype InternalSource =\n AsyncIterator & { [DESTINATION]?: AsyncIterator };\n\n/**\n * An AsyncIterator with a callback for when this iterator is closed in any way.\n * In contrast to ClosableTransformIterator, this does not add the overhead of a TransformIterator.\n */\nexport class ClosableIterator extends AsyncIterator {\n protected readonly _source: InternalSource;\n private readonly onClose: () => void;\n\n public constructor(source: AsyncIterator, options: { onClose: () => void }) {\n super();\n this.onClose = options.onClose;\n this._source = > source;\n\n // Wire up the source for reading\n this._source[DESTINATION] = this;\n this._source.on('end', destinationClose);\n this._source.on('error', destinationEmitError);\n this._source.on('readable', destinationSetReadable);\n this.readable = this._source.readable;\n }\n\n public override read(): S | null {\n const ret = this._source.read();\n if (!ret) {\n // Mark as non-readable if ret was null\n this.readable = false;\n\n // Close this iterator if the source is empty\n if (this._source.done) {\n this.close();\n }\n }\n return ret;\n }\n\n protected override _end(destroy: boolean): void {\n this.onClose();\n\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[DESTINATION];\n this._source.destroy();\n super._end(destroy);\n }\n}\n\n// Helpers below are copied from AsyncIterator, as they are not exported from there.\n\nfunction destinationSetReadable(this: InternalSource): void {\n this[DESTINATION]!.readable = true;\n}\nfunction destinationEmitError(this: InternalSource, error: Error): void {\n this[DESTINATION]!.emit('error', error);\n}\nfunction destinationClose(this: InternalSource): void {\n this[DESTINATION]!.close();\n}\n","import type { AsyncIterator, TransformIteratorOptions } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\n\ndeclare type MaybePromise = T | Promise;\ndeclare type SourceExpression = MaybePromise> | (() => MaybePromise>);\n\n/**\n * A TransformIterator with a callback for when this iterator is closed in any way.\n */\nexport class ClosableTransformIterator extends TransformIterator {\n private readonly onClose: () => void;\n\n public constructor(source: SourceExpression, options: TransformIteratorOptions & { onClose: () => void }) {\n super(source, options);\n this.onClose = options.onClose;\n }\n\n protected override _end(destroy: boolean): void {\n this.onClose();\n super._end(destroy);\n }\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for query-parse events.\n *\n * Actor types:\n * * Input: IActionSparqlParse: A SPARQL query string.\n * * Test: \n * * Output: IActorSparqlParseOutput: A parsed query in SPARQL query algebra.\n *\n * @see IActionQueryParse\n * @see IActorQueryParseOutput\n */\nexport abstract class ActorQueryParse extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryParseArgs) {\n super(args);\n }\n}\n\nexport interface IActionQueryParse extends IAction {\n /**\n * A query.\n */\n query: string;\n /**\n * The query format.\n */\n queryFormat?: RDF.QueryFormat;\n /**\n * The query's default base IRI.\n */\n baseIRI?: string;\n}\n\nexport interface IActorQueryParseOutput extends IActorOutput {\n /**\n * A parsed query in SPARQL algebra.\n */\n operation: Algebra.Operation;\n /**\n * An optionally overridden base IRI.\n */\n baseIRI?: string;\n}\n\nexport type IActorQueryParseArgs = IActorArgs;\n\nexport type MediatorQueryParse = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { QueryFormatType, IQueryExplained, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for query-process events.\n *\n * Actor types:\n * * Input: IActionQueryProcess: The input query to process.\n * * Test: \n * * Output: IActorQueryProcessOutput: Output of the query processing.\n *\n * @see IActionQueryProcess\n * @see IActorQueryProcessOutput\n */\nexport abstract class ActorQueryProcess extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryProcessArgs) {\n super(args);\n }\n}\n\nexport interface IActionQueryProcess extends IAction {\n /**\n * The query to process.\n */\n query: QueryFormatType;\n}\n\nexport interface IActorQueryProcessOutput extends IActorOutput {\n /**\n * Result of the query processing.\n */\n result: IQueryOperationResult | IQueryExplained;\n}\n\nexport type IActorQueryProcessArgs = IActorArgs<\nIActionQueryProcess,\nIActorTest,\nIActorQueryProcessOutput\n>;\n\nexport type MediatorQueryProcess = Mediate<\nIActionQueryProcess,\nIActorQueryProcessOutput\n>;\n\nexport interface IQueryProcessSequential {\n parse: (query: QueryFormatType, context: IActionContext) => Promise;\n optimize: (operation: Algebra.Operation, context: IActionContext) => Promise;\n evaluate: (operation: Algebra.Operation, context: IActionContext) => Promise;\n}\n\nexport interface IQueryProcessSequentialOutput {\n operation: Algebra.Operation;\n context: IActionContext;\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IQuerySourceWrapper, QuerySourceUnidentifiedExpanded } from '@comunica/types';\n\n/**\n * A comunica actor for query-source-identify events.\n *\n * Actor types:\n * * Input: IActionQuerySourceIdentify: An unidentified query source.\n * * Test: \n * * Output: IActorQuerySourceIdentifyOutput: An identified query source.\n *\n * @see IActionQuerySourceIdentify\n * @see IActorQuerySourceIdentifyOutput\n */\nexport abstract class ActorQuerySourceIdentify\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQuerySourceIdentifyArgs) {\n super(args);\n }\n}\n\nexport interface IActionQuerySourceIdentify extends IAction {\n /**\n * An unidentified query source.\n */\n querySourceUnidentified: QuerySourceUnidentifiedExpanded;\n}\n\nexport interface IActorQuerySourceIdentifyOutput extends IActorOutput {\n /**\n * An identified query source.\n */\n querySource: IQuerySourceWrapper;\n}\n\nexport type IActorQuerySourceIdentifyArgs = IActorArgs<\nIActionQuerySourceIdentify,\nIActorTest,\nIActorQuerySourceIdentifyOutput\n>;\n\nexport type MediatorQuerySourceIdentify = Mediate<\nIActionQuerySourceIdentify,\nIActorQuerySourceIdentifyOutput\n>;\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { ClosableIterator } from '@comunica/bus-query-operation';\nimport { validateMetadataQuads } from '@comunica/metadata';\nimport type { BindingsStream, MetadataBindings, MetadataQuads, TermsOrder } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport type { QuadTermName } from 'rdf-terms';\nimport {\n forEachTermsNested,\n getTermsNested,\n getValueNestedPath,\n reduceTermsNested,\n someTerms,\n uniqTerms,\n} from 'rdf-terms';\nimport { matchPatternMappings } from 'rdf-terms/lib/QuadTermUtil';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * Convert an iterator of quads to an iterator of bindings.\n * @param quads The quads to convert.\n * @param pattern The pattern to get variables from to determine bindings.\n * All quads are also assumed to match the pattern.\n * @param bindingsFactory The factory for creating bindings.\n * @param unionDefaultGraph If union default graph mode is enabled.\n * If true, variable graphs will match all graphs, including the default graph.\n * If false, variable graphs will only match named graphs, and not the default graph.\n */\nexport function quadsToBindings(\n quads: AsyncIterator,\n pattern: Algebra.Pattern,\n bindingsFactory: BindingsFactory,\n unionDefaultGraph: boolean,\n): BindingsStream {\n const variables = getVariables(pattern);\n\n // If non-default-graph triples need to be filtered out\n const filterNonDefaultQuads = pattern.graph.termType === 'Variable' && !unionDefaultGraph;\n\n // Detect duplicate variables in the pattern\n const duplicateElementLinks: Record | undefined = getDuplicateElementLinks(pattern);\n\n // Convenience datastructure for mapping quad elements to variables\n const elementVariables: Record = reduceTermsNested(\n pattern,\n (acc: Record, term: RDF.Term, keys: QuadTermName[]) => {\n if (term.termType === 'Variable') {\n acc[keys.join('_')] = term.value;\n }\n return acc;\n },\n {},\n );\n\n // Optionally filter, and construct bindings\n let filteredOutput = quads;\n\n // SPARQL query semantics allow graph variables to only match with named graphs, excluding the default graph\n // But this is not the case when using union default graph semantics\n if (filterNonDefaultQuads) {\n filteredOutput = filteredOutput.filter(quad => quad.graph.termType !== 'DefaultGraph');\n }\n\n // If there are duplicate variables in the search pattern,\n // make sure that we filter out the triples that don't have equal values for those triple elements,\n // as the rdf-resolve-quad-pattern bus ignores variable names.\n if (duplicateElementLinks) {\n filteredOutput = filteredOutput.filter((quad) => {\n for (const keyLeft in duplicateElementLinks) {\n const keysLeft: QuadTermName[] = keyLeft.split('_');\n const valueLeft = getValueNestedPath(quad, keysLeft);\n for (const keysRight of duplicateElementLinks[keyLeft]) {\n if (!valueLeft.equals(getValueNestedPath(quad, keysRight))) {\n return false;\n }\n }\n }\n return true;\n });\n }\n\n // Wrap it in a ClosableIterator, so we can propagate destroy calls\n const it = new ClosableIterator(filteredOutput.map(quad => bindingsFactory\n .bindings(Object.keys(elementVariables).map((key) => {\n const keys: QuadTermName[] = key.split('_');\n const variable = elementVariables[key];\n const term = getValueNestedPath(quad, keys);\n return [ DF.variable(variable), term ];\n }))), {\n onClose: () => quads.destroy(),\n });\n\n // Set the metadata property\n setMetadata(it, quads, elementVariables, variables, filterNonDefaultQuads || Boolean(duplicateElementLinks));\n\n return it;\n}\n\n/**\n * Check if a term is a variable.\n * @param {RDF.Term} term An RDF term.\n * @return {any} If the term is a variable or blank node.\n */\nexport function isTermVariable(term: RDF.Term): term is RDF.Variable {\n return term.termType === 'Variable';\n}\n\n/**\n * Get all variables in the given pattern.\n * No duplicates are returned.\n * @param {RDF.BaseQuad} pattern A quad pattern.\n */\nexport function getVariables(pattern: RDF.BaseQuad): RDF.Variable[] {\n return uniqTerms(getTermsNested(pattern).filter(isTermVariable));\n}\n\n/**\n * A helper function to find a hash with quad elements that have duplicate variables.\n *\n * @param {RDF.Quad} pattern A quad pattern.\n *\n * @return {{[p: string]: string[]}} If no equal variable names are present in the four terms, this returns undefined.\n * Otherwise, this maps quad elements paths (['subject'], ['predicate'], ['object'],\n * ['graph'])\n * to the list of quad elements it shares a variable name with.\n * For quoted triples, paths such as ['subject', 'object'] may occur.\n * If no links for a certain element exist, this element will\n * not be included in the hash.\n * Note 1: Quad elements will never have a link to themselves.\n * So this can never occur: { subject: [[ 'subject']] },\n * instead 'null' would be returned.\n * Note 2: Links only exist in one direction,\n * this means that { subject: [[ 'predicate']], predicate: [[ 'subject' ]] }\n * will not occur, instead only { subject: [[ 'predicate']] }\n * will be returned.\n * Note 3: Keys can also be paths, but they are delimited by '_', such as:\n * { subject_object_subject: [[ 'predicate']] }\n */\nexport function getDuplicateElementLinks(pattern: RDF.BaseQuad): Record | undefined {\n // Collect a variable to quad elements mapping.\n const variableElements: Record = {};\n let duplicateVariables = false;\n forEachTermsNested(pattern, (value, keys) => {\n if (value.termType === 'Variable') {\n const val = termToString(value);\n const length = (variableElements[val] || (variableElements[val] = [])).push(keys);\n duplicateVariables = duplicateVariables || length > 1;\n }\n });\n\n if (!duplicateVariables) {\n return;\n }\n\n // Collect quad element to elements with equal variables mapping.\n const duplicateElementLinks: Record = {};\n for (const variable in variableElements) {\n const elements = variableElements[variable];\n const remainingElements = elements.slice(1);\n // Only store the elements that have at least one equal element.\n if (remainingElements.length > 0) {\n duplicateElementLinks[elements[0].join('_')] = remainingElements;\n }\n }\n\n return duplicateElementLinks;\n}\n\n/**\n * Set the metadata of the bindings stream derived from the metadata of the quads stream.\n *\n * @param {BindingsStream} bindings The bindings stream that will receive the metadata property.\n * @param {AsyncIterator} quads The quads stream that is guaranteed to emit the metadata property.\n * @param elementVariables Mapping of quad term name to variable name.\n * @param variables Variables to include in the metadata\n * @param forceEstimateCardinality Set the cardinality to estimate\n * @return {() => Promise<{[p: string]: any}>} A lazy promise behind a callback resolving to a metadata object.\n */\nexport function setMetadata(\n bindings: BindingsStream,\n quads: AsyncIterator,\n elementVariables: Record,\n variables: RDF.Variable[],\n forceEstimateCardinality: boolean,\n): void {\n const getMetadataCb = (metadataRaw: Record): void => {\n if (!('canContainUndefs' in metadataRaw)) {\n metadataRaw.canContainUndefs = false;\n }\n if (forceEstimateCardinality) {\n metadataRaw.cardinality.type = 'estimate';\n }\n bindings.setProperty(\n 'metadata',\n quadsMetadataToBindingsMetadata(validateMetadataQuads(metadataRaw), elementVariables, variables),\n );\n\n // Propagate metadata invalidations\n if (metadataRaw.state) {\n metadataRaw.state.addInvalidateListener(() => {\n setMetadata(bindings, quads, elementVariables, variables, forceEstimateCardinality);\n });\n }\n };\n\n const metadata = quads.getProperty('metadata');\n if (metadata) {\n // This is to enforce sync metadata setting, because AsyncIterator will always call it async,\n // even if the property was already defined.\n getMetadataCb(metadata);\n } else {\n quads.getProperty('metadata', getMetadataCb);\n }\n}\n\n/**\n * Convert the metadata of quads to the metadata of bindings.\n * @param metadataQuads Quads metadata.\n * @param elementVariables A mapping from quad elements to variables.\n * @param variables The variables in the bindings.\n */\nexport function quadsMetadataToBindingsMetadata(\n metadataQuads: MetadataQuads,\n elementVariables: Record,\n variables: RDF.Variable[],\n): MetadataBindings {\n return {\n ...metadataQuads,\n canContainUndefs: false,\n order: metadataQuads.order ?\n quadsOrderToBindingsOrder(metadataQuads.order, elementVariables) :\n undefined,\n availableOrders: metadataQuads.availableOrders ?\n metadataQuads.availableOrders.map(orderDef => ({\n cost: orderDef.cost,\n terms: quadsOrderToBindingsOrder(orderDef.terms, elementVariables),\n })) :\n undefined,\n variables,\n };\n}\n\n/**\n * Convert the quads order metadata element to a bindings order metadata element.\n * @param quadsOrder Quads order.\n * @param elementVariables A mapping from quad elements to variables.\n */\nexport function quadsOrderToBindingsOrder(\n quadsOrder: TermsOrder,\n elementVariables: Record,\n): TermsOrder {\n const mappedVariables: Record = {};\n return > quadsOrder.map((entry) => {\n // Omit entries that do not map to a variable\n const variableName = elementVariables[entry.term];\n if (!variableName) {\n // eslint-disable-next-line array-callback-return\n return;\n }\n\n // Omit entries that have been mapped already\n if (mappedVariables[variableName]) {\n // eslint-disable-next-line array-callback-return\n return;\n }\n\n mappedVariables[variableName] = true;\n return {\n term: DF.variable(variableName),\n direction: entry.direction,\n };\n }).filter(Boolean);\n}\n\n/**\n * Perform post-match-filtering if the source does not support quoted triple filtering,\n * but we have a variable inside a quoted triple.\n * @param pattern The current quad pattern operation.\n * @param it The iterator to filter.\n */\nexport function filterMatchingQuotedQuads(pattern: RDF.BaseQuad, it: AsyncIterator): AsyncIterator {\n if (someTerms(pattern, term => term.termType === 'Quad')) {\n it = it.filter(quad => matchPatternMappings(quad, pattern));\n }\n return it;\n}\n","import type { IAction, IActorArgs, IActorOutput, Mediate, IActorTest } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IJoinEntryWithMetadata } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-join-entries-sort events.\n *\n * Actor types:\n * * Input: IActionRdfJoinEntriesSort: Join entries.\n * * Test: IActorTest: Test result.\n * * Output: IActorRdfJoinEntriesSortOutput: The sorted join entries.\n *\n * @see IActionRdfJoinEntriesSort\n * @see IActorTest\n * @see IActorRdfJoinEntriesSortOutput\n */\nexport abstract class ActorRdfJoinEntriesSort\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfJoinEntriesSortArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfJoinEntriesSort extends IAction {\n /**\n * The array of streams to join.\n */\n entries: IJoinEntryWithMetadata[];\n}\n\nexport interface IActorRdfJoinEntriesSortOutput extends IActorOutput {\n /**\n * The array of sorted streams.\n */\n entries: IJoinEntryWithMetadata[];\n}\n\nexport type IActorRdfJoinEntriesSortArgs = IActorArgs<\nIActionRdfJoinEntriesSort,\nIActorTest,\nIActorRdfJoinEntriesSortOutput\n>;\n\nexport type MediatorRdfJoinEntriesSort = Mediate<\nIActionRdfJoinEntriesSort,\nIActorRdfJoinEntriesSortOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IMediatorTypeAccuracy } from '@comunica/mediatortype-accuracy';\nimport type { IJoinEntry } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-join-selectivity events.\n *\n * Actor types:\n * * Input: IActionRdfJoinSelectivity: Join entries.\n * * Test: IMediatorTypeAccuracy: The accuracy of the selectivity calculator.\n * * Output: IActorRdfJoinSelectivityOutput: The calculated join selectivity.\n *\n * @see IActionRdfJoinSelectivity\n * @see IActorRdfJoinSelectivityTest\n * @see IActorRdfJoinSelectivityOutput\n */\nexport abstract class ActorRdfJoinSelectivity\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfJoinSelectivityArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfJoinSelectivity extends IAction {\n /**\n * The array of streams to join.\n */\n entries: IJoinEntry[];\n}\n\nexport interface IActorRdfJoinSelectivityOutput extends IActorOutput {\n /**\n * A selectivity factor in the range [0, 1].\n * A value close to 1 indicates a low selectivity,\n * which means that the operations in the join entries are highly unrelated.\n * A value close to 0 indicates a high selectivity,\n * which means that the operations in the join entries are highly related, and have a high chance of reducing .\n */\n selectivity: number;\n}\n\nexport type IActorRdfJoinSelectivityArgs = IActorArgs<\nIActionRdfJoinSelectivity,\nIMediatorTypeAccuracy,\nIActorRdfJoinSelectivityOutput\n>;\n\nexport type MediatorRdfJoinSelectivity = Mediate<\nIActionRdfJoinSelectivity,\nIActorRdfJoinSelectivityOutput,\nIMediatorTypeAccuracy\n>;\n","import type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type {\n MediatorRdfJoinSelectivity,\n} from '@comunica/bus-rdf-join-selectivity';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IAction, IActorArgs, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { cachifyMetadata, MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQueryOperationResultBindings,\n MetadataBindings,\n IPhysicalQueryPlanLogger,\n Bindings,\n IActionContext,\n IJoinEntry,\n IJoinEntryWithMetadata,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { instrumentIterator } from './instrumentIterator';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica actor for joining 2 binding streams.\n *\n * Actor types:\n * * Input: IActionRdfJoin: The streams that need to be joined.\n * * Test: IMediatorTypeJoinCoefficients: Join coefficients.\n * * Output: IActorRdfJoinOutput: The resulting joined stream.\n *\n * @see IActionRdfJoin\n * @see IActorQueryOperationOutput\n */\nexport abstract class ActorRdfJoin\n extends Actor {\n public readonly mediatorJoinSelectivity: MediatorRdfJoinSelectivity;\n\n /**\n * If this actor will be logged in the debugger and physical query plan logger\n */\n public includeInLogs = true;\n public readonly logicalType: LogicalJoinType;\n public readonly physicalName: string;\n /**\n * Can be used by subclasses to indicate the max or min number of streams that can be joined.\n * 0 for infinity.\n * By default, this indicates the max number, but can be inverted by setting limitEntriesMin to true.\n */\n protected readonly limitEntries: number;\n /**\n * If true, the limitEntries field is a lower limit,\n * otherwise, it is an upper limit.\n */\n protected readonly limitEntriesMin: boolean;\n /**\n * If this actor can handle undefs in the bindings.\n */\n protected readonly canHandleUndefs: boolean;\n /**\n * If this join operator will not invoke any other join or query operations below,\n * and can therefore be considered a leaf of the join plan.\n */\n protected readonly isLeaf: boolean;\n /**\n * If this join operator must only be used for join entries with (at least partially) common variables.\n */\n protected readonly requiresVariableOverlap?: boolean;\n\n /**\n * @param args - @defaultNested { a } bus\n * @param options - Actor-specific join options.\n */\n public constructor(args: IActorRdfJoinArgs, options: IActorRdfJoinInternalOptions) {\n super(args);\n this.logicalType = options.logicalType;\n this.physicalName = options.physicalName;\n this.limitEntries = options.limitEntries ?? Number.POSITIVE_INFINITY;\n this.limitEntriesMin = options.limitEntriesMin ?? false;\n this.canHandleUndefs = options.canHandleUndefs ?? false;\n this.isLeaf = options.isLeaf ?? true;\n this.requiresVariableOverlap = options.requiresVariableOverlap ?? false;\n }\n\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This can cause clashes for equal terms.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string} A hash string.\n */\n public static hash(bindings: Bindings, variables: RDF.Variable[]): string {\n return variables\n .map((variable) => {\n const term = bindings.get(variable);\n if (term) {\n return term.value;\n }\n return '';\n })\n .join('');\n }\n\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This is guaranteed to not produce clashing bindings for unequal terms.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string} A hash string.\n */\n public static hashNonClashing(bindings: RDF.Bindings, variables: RDF.Variable[]): string {\n return variables\n .map((variable) => {\n const term = bindings.get(variable);\n if (term) {\n return termToString(term);\n }\n return '';\n })\n .join('');\n }\n\n /**\n * Returns an array containing all the variable names that occur in all bindings streams.\n * @param {MetadataBindings[]} metadatas An array of optional metadata objects for the entries.\n * @returns {RDF.Variable[]} An array of variables.\n */\n public static overlappingVariables(metadatas: MetadataBindings[]): RDF.Variable[] {\n const variables = metadatas.map(metadata => metadata.variables);\n let baseArray = variables[0];\n for (const array of variables.slice(1)) {\n baseArray = baseArray.filter(el => array.some(value => value.value === el.value));\n }\n return baseArray;\n }\n\n /**\n * Returns the variables that will occur in the joined bindings.\n * @param {MetadataBindings[]} metadatas An array of metadata objects for the entries.\n * @returns {RDF.Variable[]} An array of joined variables.\n */\n public static joinVariables(metadatas: MetadataBindings[]): RDF.Variable[] {\n return [ ...new Set(metadatas.flatMap(metadata => metadata.variables.map(variable => variable.value))) ]\n .map(variable => DF.variable(variable));\n }\n\n /**\n * Returns the result of joining bindings, or `null` if no join is possible.\n * @param {Bindings[]} bindings\n * @returns {Bindings}\n */\n\n public static joinBindings(...bindings: Bindings[]): Bindings | null {\n if (bindings.length === 0) {\n return null;\n }\n if (bindings.length === 1) {\n return bindings[0];\n }\n\n let acc: Bindings = bindings[0];\n for (const binding of bindings.slice(1)) {\n const merged = acc.merge(binding);\n if (!merged) {\n return null;\n }\n acc = merged;\n }\n return acc;\n }\n\n /**\n * Get the estimated number of items from the given metadata.\n * @param {Record} metadata A metadata object.\n * @return {number} The estimated number of items, or `Infinity` if cardinality is falsy.\n */\n public static getCardinality(metadata: MetadataBindings): RDF.QueryResultCardinality {\n return metadata.cardinality;\n }\n\n /**\n * Obtain the metadata from all given join entries.\n * @param entries Join entries.\n */\n public static async getMetadatas(entries: IJoinEntry[]): Promise {\n return await Promise.all(entries.map(entry => entry.output.metadata()));\n }\n\n /**\n * Obtain the join entries witt metadata from all given join entries.\n * @param entries Join entries.\n */\n public static async getEntriesWithMetadatas(entries: IJoinEntry[]): Promise {\n const metadatas = await ActorRdfJoin.getMetadatas(entries);\n return entries.map((entry, i) => ({ ...entry, metadata: metadatas[i] }));\n }\n\n /**\n * Calculate the time to initiate a request for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public static getRequestInitialTimes(metadatas: MetadataBindings[]): number[] {\n return metadatas.map(metadata => metadata.pageSize ? 0 : metadata.requestTime ?? 0);\n }\n\n /**\n * Calculate the time to receive a single item for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public static getRequestItemTimes(metadatas: MetadataBindings[]): number[] {\n return metadatas\n .map(metadata => metadata.pageSize ? (metadata.requestTime ?? 0) / metadata.pageSize : 0);\n }\n\n /**\n * Construct a metadata validation state for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public constructState(metadatas: MetadataBindings[]): MetadataValidationState {\n // Propagate metadata invalidations\n const state = new MetadataValidationState();\n const invalidateListener = (): void => state.invalidate();\n for (const metadata of metadatas) {\n metadata.state.addInvalidateListener(invalidateListener);\n }\n return state;\n }\n\n /**\n * Helper function to create a new metadata object for the join result.\n * For required metadata entries that are not provided, sane defaults are calculated.\n * @param entries Join entries.\n * @param metadatas Metadata of the join entries.\n * @param context The action context.\n * @param partialMetadata Partial metadata entries.\n * @param optional If metadata for an optional operation must be calculated.\n */\n public async constructResultMetadata(\n entries: IJoinEntry[],\n metadatas: MetadataBindings[],\n context: IActionContext,\n partialMetadata: Partial = {},\n optional = false,\n ): Promise {\n let cardinalityJoined: RDF.QueryResultCardinality;\n if (partialMetadata.cardinality) {\n cardinalityJoined = partialMetadata.cardinality;\n } else {\n cardinalityJoined = metadatas\n .reduce((acc: RDF.QueryResultCardinality, metadata) => {\n const cardinalityThis = ActorRdfJoin.getCardinality(metadata);\n return {\n type: cardinalityThis.type === 'estimate' ? 'estimate' : acc.type,\n value: acc.value * (optional ? Math.max(1, cardinalityThis.value) : cardinalityThis.value),\n };\n }, { type: 'exact', value: 1 });\n cardinalityJoined.value *= (await this.mediatorJoinSelectivity.mediate({ entries, context })).selectivity;\n }\n\n return {\n state: this.constructState(metadatas),\n ...partialMetadata,\n cardinality: {\n type: cardinalityJoined.type,\n value: cardinalityJoined.value,\n },\n canContainUndefs: partialMetadata.canContainUndefs ?? metadatas.some(metadata => metadata.canContainUndefs),\n variables: ActorRdfJoin.joinVariables(metadatas),\n };\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {MediatorRdfJoinEntriesSort} mediatorJoinEntriesSort A mediator for sorting join entries.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public static async sortJoinEntries(\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort,\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n // If there is a stream that can contain undefs, we don't modify the join order.\n const canContainUndefs = entries.some(entry => entry.metadata.canContainUndefs);\n if (canContainUndefs) {\n return entries;\n }\n\n // Calculate number of occurrences of each variable\n const variableOccurrences: Record = {};\n for (const entry of entries) {\n for (const variable of entry.metadata.variables) {\n let counter = variableOccurrences[variable.value];\n if (!counter) {\n counter = 0;\n }\n variableOccurrences[variable.value] = ++counter;\n }\n }\n\n // Determine variables that occur in at least two join entries\n const multiOccurrenceVariables: string[] = [];\n for (const [ variable, count ] of Object.entries(variableOccurrences)) {\n if (count >= 2) {\n multiOccurrenceVariables.push(variable);\n }\n }\n\n // Reject if no entries have common variables\n if (multiOccurrenceVariables.length === 0) {\n throw new Error(`Bind join can only join entries with at least one common variable`);\n }\n\n // Determine entries without common variables\n // These will be placed in the back of the sorted array\n const entriesWithoutCommonVariables: IJoinEntryWithMetadata[] = [];\n for (const entry of entries) {\n let hasCommon = false;\n for (const variable of entry.metadata.variables) {\n if (multiOccurrenceVariables.includes(variable.value)) {\n hasCommon = true;\n break;\n }\n }\n if (!hasCommon) {\n entriesWithoutCommonVariables.push(entry);\n }\n }\n\n return (await mediatorJoinEntriesSort.mediate({ entries, context })).entries\n .sort((entryLeft, entryRight) => {\n // Sort to make sure that entries without common variables come last in the array.\n // For all other entries, the original order is kept.\n const leftWithoutCommonVariables = entriesWithoutCommonVariables.includes(entryLeft);\n const rightWithoutCommonVariables = entriesWithoutCommonVariables.includes(entryRight);\n if (leftWithoutCommonVariables === rightWithoutCommonVariables) {\n return 0;\n }\n return leftWithoutCommonVariables ?\n 1 :\n -1;\n });\n }\n\n /**\n * Default test function for join actors.\n * Checks whether all iterators have metadata.\n * If yes: call the abstract getIterations method, if not: return Infinity.\n * @param {IActionRdfJoin} action The input action containing the relevant iterators\n * @returns {Promise} The join coefficients.\n */\n public async test(action: IActionRdfJoin): Promise {\n // Validate logical join type\n if (action.type !== this.logicalType) {\n throw new Error(`${this.name} can only handle logical joins of type '${this.logicalType}', while '${action.type}' was given.`);\n }\n\n // Don't allow joining of one or zero streams\n if (action.entries.length <= 1) {\n throw new Error(`${this.name} requires at least two join entries.`);\n }\n\n // Check if this actor can handle the given number of streams\n if (this.limitEntriesMin ? action.entries.length < this.limitEntries : action.entries.length > this.limitEntries) {\n throw new Error(`${this.name} requires ${this.limitEntries\n } join entries at ${this.limitEntriesMin ? 'least' : 'most'\n }. The input contained ${action.entries.length}.`);\n }\n\n // Check if all streams are bindings streams\n for (const entry of action.entries) {\n if (entry.output.type !== 'bindings') {\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`Invalid type of a join entry: Expected 'bindings' but got '${entry.output.type}'`);\n }\n }\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Check if this actor can handle undefs\n if (!this.canHandleUndefs) {\n for (const metadata of metadatas) {\n if (metadata.canContainUndefs) {\n throw new Error(`Actor ${this.name} can not join streams containing undefs`);\n }\n }\n }\n\n // This actor only works with common variables\n if (this.requiresVariableOverlap && ActorRdfJoin.overlappingVariables(metadatas).length === 0) {\n throw new Error(`Actor ${this.name} can only join entries with at least one common variable`);\n }\n\n return await this.getJoinCoefficients(action, metadatas);\n }\n\n /**\n * Returns default input for 0 or 1 entries. Calls the getOutput function otherwise\n * @param {IActionRdfJoin} action\n * @returns {Promise} A bindings result.\n */\n public async run(action: IActionRdfJoin): Promise {\n // Prepare logging to physical plan\n // This must be called before getOutput, because we need to override the plan node in the context\n let parentPhysicalQueryPlanNode;\n if (action.context.has(KeysInitQuery.physicalQueryPlanLogger)) {\n parentPhysicalQueryPlanNode = action.context.get(KeysInitQuery.physicalQueryPlanNode);\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action);\n }\n\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context.get(KeysInitQuery\n .physicalQueryPlanLogger);\n let planMetadata: any;\n if (this.includeInLogs && physicalQueryPlanLogger) {\n planMetadata = {};\n // Stash non-join children, as they will be unstashed later in sub-joins.\n physicalQueryPlanLogger.stashChildren(\n parentPhysicalQueryPlanNode,\n node => node.logicalOperator.startsWith('join'),\n );\n physicalQueryPlanLogger.logOperation(\n `join-${this.logicalType}`,\n this.physicalName,\n action,\n parentPhysicalQueryPlanNode,\n this.name,\n planMetadata,\n );\n }\n\n // Get action output\n const { result, physicalPlanMetadata } = await this.getOutput(action);\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Fill in the physical plan metadata after determining action output\n if (planMetadata) {\n // eslint-disable-next-line ts/no-floating-promises\n instrumentIterator(result.bindingsStream)\n .then((counters) => {\n physicalQueryPlanLogger!.appendMetadata(action, {\n cardinalityReal: counters.count,\n timeSelf: counters.timeSelf,\n timeLife: counters.timeLife,\n });\n });\n\n Object.assign(planMetadata, physicalPlanMetadata);\n const cardinalities = metadatas.map(ActorRdfJoin.getCardinality);\n planMetadata.cardinalities = cardinalities;\n planMetadata.joinCoefficients = await this.getJoinCoefficients(action, metadatas);\n\n // If this is a leaf operation, include join entries in plan metadata.\n if (this.isLeaf) {\n for (let i = 0; i < action.entries.length; i++) {\n const entry = action.entries[i];\n physicalQueryPlanLogger!.unstashChild(\n entry.operation,\n action,\n );\n physicalQueryPlanLogger!.appendMetadata(entry.operation, { cardinality: cardinalities[i] });\n }\n }\n }\n\n // Cache metadata\n result.metadata = cachifyMetadata(result.metadata);\n\n return result;\n }\n\n /**\n * Returns the resulting output for joining the given entries.\n * This is called after removing the trivial cases in run.\n * @param {IActionRdfJoin} action\n * @returns {Promise}\n */\n protected abstract getOutput(action: IActionRdfJoin): Promise;\n\n /**\n * Calculate the join coefficients.\n * @param {IActionRdfJoin} action Join action\n * @param metadatas Array of resolved metadata objects.\n * @returns {IMediatorTypeJoinCoefficients} The join coefficient estimates.\n */\n protected abstract getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise;\n}\n\nexport interface IActorRdfJoinArgs\n extends IActorArgs {\n mediatorJoinSelectivity: MediatorRdfJoinSelectivity;\n}\n\nexport interface IActorRdfJoinInternalOptions {\n /**\n * The logical join type this actor can handle.\n */\n logicalType: LogicalJoinType;\n /**\n * The physical name of join operation this actor implements.\n * This is used for debug and query plan logs.\n */\n physicalName: string;\n /**\n * Can be used by subclasses to indicate the max or min number of streams that can be joined.\n * 0 for infinity.\n * By default, this indicates the max number, but can be inverted by setting limitEntriesMin to true.\n */\n limitEntries?: number;\n /**\n * If true, the limitEntries field is a lower limit,\n * otherwise, it is an upper limit.\n * Defaults to false.\n */\n limitEntriesMin?: boolean;\n /**\n * If this actor can handle undefs in the bindings.\n * Defaults to false.\n */\n canHandleUndefs?: boolean;\n /**\n * If this join operator will not invoke any other join or query operations below,\n * and can therefore be considered a leaf of the join plan.\n * Defaults to true.\n */\n isLeaf?: boolean;\n /**\n * If this join operator must only be used for join entries with (at least partially) common variables.\n */\n requiresVariableOverlap?: boolean;\n}\n\n/**\n * Represents a logical join type.\n */\nexport type LogicalJoinType = 'inner' | 'optional' | 'minus';\n\nexport interface IActionRdfJoin extends IAction {\n /**\n * The logical join type.\n */\n type: LogicalJoinType;\n /**\n * The array of streams to join.\n */\n entries: IJoinEntry[];\n}\n\nexport interface IActorRdfJoinOutputInner {\n /**\n * The join result.\n */\n result: IQueryOperationResultBindings;\n /**\n * Optional metadata that will be included as metadata within the physical query plan output.\n */\n physicalPlanMetadata?: any;\n}\n\nexport type MediatorRdfJoin = Mediate;\n","import type { AsyncIterator, TransformIteratorOptions } from 'asynciterator';\nimport { ArrayIterator, TransformIterator } from 'asynciterator';\n\n/**\n * Splits an iterator into chunks based on a given block size.\n */\nexport class ChunkedIterator extends TransformIterator> {\n protected readonly blockSize: number;\n protected chunk: T[] = [];\n\n public constructor(source: AsyncIterator, blockSize: number, options?: TransformIteratorOptions) {\n super(source, options);\n this.blockSize = blockSize;\n }\n\n protected consumeChunkAsIterator(): AsyncIterator {\n const it = new ArrayIterator(this.chunk, { autoStart: false });\n this.chunk = [];\n return it;\n }\n\n protected override _transform(item: T, done: () => void, push: (i: AsyncIterator) => void): void {\n this.chunk.push(item);\n if (this.chunk.length >= this.blockSize) {\n push(this.consumeChunkAsIterator());\n }\n done();\n }\n\n protected override _flush(done: () => void): void {\n if (this.chunk.length > 0) {\n this._push(this.consumeChunkAsIterator());\n }\n super._flush(done);\n }\n}\n","import type { AsyncIterator } from 'asynciterator';\n\nexport type IteratorCounters = {\n /**\n * The total time spent within `_read` and `read`.\n */\n timeSelf: number;\n /**\n * The time between creation and ending.\n */\n timeLife: number;\n /**\n * The number of elements produced.\n */\n count: number;\n};\n\n/**\n * Profile an iterator by monkey-patching its `_read` and `read` methods.\n * @param iterator\n */\nexport function instrumentIterator(iterator: AsyncIterator): Promise {\n const counters: IteratorCounters = {\n count: 0,\n timeSelf: 0,\n timeLife: 0,\n };\n instrumentIteratorInner(iterator, counters, true);\n return new Promise((resolve) => {\n iterator.on('end', () => {\n resolve(counters);\n });\n });\n}\n\nfunction instrumentIteratorInner(\n iterator: AsyncIterator,\n counter: { timeSelf: number; timeLife: number; count: number },\n top: boolean,\n): void {\n if (!('_profileInstrumented' in iterator)) {\n // Only patch an iterator once.\n (iterator)._profileInstrumented = true;\n\n // Patch _read\n if ('_read' in iterator) {\n const readOld: any = iterator._read;\n iterator._read = (count: number, done: () => void) => {\n const startTime = performance.now();\n readOld.call(iterator, count, () => {\n counter.timeSelf += performance.now() - startTime;\n done();\n });\n };\n }\n\n // Patch read\n if ('read' in iterator) {\n // eslint-disable-next-line ts/unbound-method\n const readOld: any = iterator.read;\n iterator.read = () => {\n const startTime = performance.now();\n const ret = readOld.call(iterator);\n if (top && ret) {\n counter.count++;\n }\n counter.timeSelf += performance.now() - startTime;\n return ret;\n };\n }\n\n // Measure total time\n if (top) {\n const startTime = performance.now();\n iterator.on('end', () => {\n counter.timeLife = performance.now() - startTime;\n });\n }\n\n // Also patch children\n if ('_source' in iterator) {\n instrumentIteratorInner(iterator._source, counter, false);\n }\n }\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { MetadataBindings } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-metadata-accumulate events.\n *\n * Actor types:\n * * Input: IActionRdfMetadataAccumulate: The metadata objects to accumulate,\n * or a trigger for initializing a new value.\n * * Test: \n * * Output: IActorRdfMetadataAccumulateOutput: The accumulated metadata object.\n *\n * @see IActionRdfMetadataAccumulate\n * @see IActorRdfMetadataAccumulateOutput\n */\nexport abstract class ActorRdfMetadataAccumulate\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n}\n\nexport type IActionRdfMetadataAccumulate = IActionRdfMetadataAccumulateInitialize | IActionRdfMetadataAccumulateAppend;\n\nexport interface IActionRdfMetadataAccumulateInitialize extends IAction {\n /**\n * Indicates that metadata fields should be initialized to default values.\n */\n mode: 'initialize';\n}\n\nexport interface IActionRdfMetadataAccumulateAppend extends IAction {\n /**\n * Indicates that metadata fields should be accumulated.\n * The initialize step is guaranteed to have been called before this on the `accumulatedMetadata` object.\n */\n mode: 'append';\n /**\n * The metadata object that already has some accumulated fields.\n * This object should not be mutated.\n */\n accumulatedMetadata: MetadataBindings;\n /**\n * The metadata object with fields to append.\n * This object should not be mutated.\n */\n appendingMetadata: MetadataBindings;\n}\n\nexport interface IActorRdfMetadataAccumulateOutput extends IActorOutput {\n /**\n * The initialized or accumulated metadata object.\n * This should only contain those fields that are applicable to this actor.\n */\n metadata: Partial;\n}\n\nexport type IActorRdfMetadataAccumulateArgs = IActorArgs<\nIActionRdfMetadataAccumulate,\nIActorTest,\nIActorRdfMetadataAccumulateOutput\n>;\n\nexport type MediatorRdfMetadataAccumulate = Mediate<\nIActionRdfMetadataAccumulate,\nIActorRdfMetadataAccumulateOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\n\n/**\n * A comunica actor for rdf-update-quads events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateQuads: Quad insertion and deletion streams.\n * * Test: \n * * Output: IActorRdfUpdateQuadsOutput: A promise resolving when the update operation is done.\n *\n * @see IActionRdfUpdateQuads\n * @see IActorRdfUpdateQuadsOutput\n */\nexport abstract class ActorRdfUpdateQuads extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfUpdateQuadsArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfUpdateQuads extends IAction {\n /**\n * An optional stream of quads to insert.\n */\n quadStreamInsert?: AsyncIterator;\n /**\n * An optional stream of quads to delete.\n */\n quadStreamDelete?: AsyncIterator;\n /**\n * An optional deletion of graphs.\n */\n deleteGraphs?: {\n /**\n * The graph(s) in which all triples must be removed.\n */\n graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n /**\n * If true, and the graph does not exist, an error must be emitted.\n *\n * Should only be considered on destinations that record empty graphs.\n */\n requireExistence: boolean;\n /**\n * If the graph itself should also be dropped.\n * Should not happen on the 'DEFAULT' graph.\n *\n * Should only be considered on destinations that record empty graphs.\n */\n dropGraphs: boolean;\n };\n /**\n * An optional creation of (empty) graphs.\n */\n createGraphs?: {\n /**\n * The graph names to create.\n */\n graphs: RDF.NamedNode[];\n /**\n * If true, an error MUST be thrown when the graph already exists.\n *\n * For destinations that do not record empty graphs,\n * this should only throw if at least one quad with the given quad already exists.\n */\n requireNonExistence: boolean;\n };\n}\n\nexport interface IActorRdfUpdateQuadsOutput extends IActorOutput {\n /**\n * Async function that resolves when the update operation is done.\n */\n execute: () => Promise;\n}\n\nexport type IActorRdfUpdateQuadsArgs = IActorArgs;\n\nexport type MediatorRdfUpdateQuads = Mediate;\n","import { deskolemizeQuad } from '@comunica/actor-context-preprocess-query-source-skolemize';\nimport { KeysQuerySourceIdentify, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { IActionRdfUpdateQuads, IActorRdfUpdateQuadsOutput } from './ActorRdfUpdateQuads';\nimport { ActorRdfUpdateQuads } from './ActorRdfUpdateQuads';\nimport type { IQuadDestination } from './IQuadDestination';\n\nexport function deskolemizeStream(stream: AsyncIterator | undefined, id: string):\nAsyncIterator | undefined {\n return stream?.map(quad => deskolemizeQuad(quad, id));\n}\n\nexport function deskolemize(action: IActionRdfUpdateQuads): IActionRdfUpdateQuads {\n const destination = action.context.get(KeysRdfUpdateQuads.destination);\n const id = action.context.get>(KeysQuerySourceIdentify.sourceIds)?.get(destination);\n if (!id) {\n return action;\n }\n return {\n ...action,\n quadStreamInsert: deskolemizeStream(action.quadStreamInsert, id),\n quadStreamDelete: deskolemizeStream(action.quadStreamDelete, id),\n };\n}\n\n/**\n * A base implementation for rdf-update-quads events\n * that wraps around an {@link IQuadDestination}.\n *\n * @see IQuadDestination\n */\nexport abstract class ActorRdfUpdateQuadsDestination extends ActorRdfUpdateQuads {\n public async test(_action: IActionRdfUpdateQuads): Promise {\n return true;\n }\n\n public async run(action: IActionRdfUpdateQuads): Promise {\n const destination = await this.getDestination(action.context);\n return await this.getOutput(destination, deskolemize(action));\n }\n\n /**\n * Get the output of the given action on a destination.\n * @param {IQuadDestination} destination A quad destination, possibly lazy.\n * @param {IActionRdfUpdateQuads} action The action.\n */\n protected async getOutput(\n destination: IQuadDestination,\n action: IActionRdfUpdateQuads,\n ): Promise {\n const execute = async(): Promise => {\n await (action.quadStreamDelete ? destination.delete(action.quadStreamDelete) : Promise.resolve());\n await (action.deleteGraphs ?\n destination.deleteGraphs(\n action.deleteGraphs.graphs,\n action.deleteGraphs.requireExistence,\n action.deleteGraphs.dropGraphs,\n ) :\n Promise.resolve());\n await (action.createGraphs ?\n destination.createGraphs(action.createGraphs.graphs, action.createGraphs.requireNonExistence) :\n Promise.resolve());\n await (action.quadStreamInsert ? destination.insert(action.quadStreamInsert) : Promise.resolve());\n };\n return { execute };\n }\n\n /**\n * Get a destination instance for the given context.\n * @param {ActionContext} context Optional context data.\n * @return {Promise} A promise that resolves to a destination.\n */\n protected abstract getDestination(context: IActionContext): Promise;\n}\n","import { ActionContextKey, CONTEXT_KEY_LOGGER } from '@comunica/core';\nimport type {\n Bindings,\n IPhysicalQueryPlanLogger,\n QueryExplainMode,\n IProxyHandler,\n ICliArgsHandler,\n IDataDestination,\n MetadataBindings,\n FunctionArgumentsCache,\n IAggregatedStore,\n QuerySourceUnidentified,\n IQuerySourceWrapper,\n QuerySourceReference,\n IStatisticBase,\n IDiscoverEventData,\n ILink,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { IDocumentLoader } from 'jsonld-context-parser';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * When adding entries to this file, also add a shortcut for them in the contextKeyShortcuts TSDoc comment in\n * ActorInitQueryBase in @comunica/actor-init-query if it makes sense to use this entry externally.\n * Also, add this shortcut to IQueryContextCommon in @comunica/types.\n */\n\nexport const KeysCore = {\n // We create the core context keys in @comunica/core to avoid a cyclic dependency\n /**\n * A logger instance.\n */\n log: CONTEXT_KEY_LOGGER,\n};\n\nexport const KeysHttp = {\n /**\n * Include credentials flags.\n */\n includeCredentials: new ActionContextKey('@comunica/bus-http:include-credentials'),\n /**\n * Authentication for a source as a \"username:password\"-pair.\n */\n auth: new ActionContextKey('@comunica/bus-http:auth'),\n /**\n * Fetch function implementation.\n */\n fetch: new ActionContextKey('@comunica/bus-http:fetch'),\n /**\n * HTTP request timeout in milliseconds.\n */\n httpTimeout: new ActionContextKey('@comunica/bus-http:http-timeout'),\n /**\n * Makes the HTTP timeout not only apply until the response starts streaming in\n * but until the response is fully consumed.\n */\n httpBodyTimeout: new ActionContextKey('@comunica/bus-http:http-body-timeout'),\n /**\n * Number of retries to make on failed network calls. This only takes effect\n * on errors thrown during the initial fetch() call and not while streaming the body.\n */\n httpRetryCount: new ActionContextKey('@comunica/bus-http:http-retry-count'),\n /**\n * Delay in milliseconds to wait between fetch retries. Requires httpRetryCount to be set.\n */\n httpRetryDelay: new ActionContextKey('@comunica/bus-http:http-retry-delay'),\n /**\n * Retry fetch, if server replies with a 5xx error response. Requires httpRetryCount to be set.\n */\n httpRetryOnServerError: new ActionContextKey('@comunica/bus-http:http-retry-on-server-error'),\n};\n\nexport const KeysHttpWayback = {\n /**\n * Use the WayBack machine to get the most recent representation of a file if a link is broken.\n * @default false\n */\n recoverBrokenLinks: new ActionContextKey('@comunica/bus-http:recover-broken-links'),\n};\n\nexport const KeysHttpMemento = {\n /**\n * The desired datetime for Memento datetime-negotiation.\n */\n datetime: new ActionContextKey('@comunica/actor-http-memento:datetime'),\n};\n\nexport const KeysHttpProxy = {\n /**\n * Interface.\n */\n httpProxyHandler: new ActionContextKey('@comunica/actor-http-proxy:httpProxyHandler'),\n};\n\nexport const KeysInitQuery = {\n /**\n * The unidentified sources to query over.\n */\n querySourcesUnidentified: new ActionContextKey(\n '@comunica/actor-init-query:querySourcesUnidentified',\n ),\n /**\n * Variables that have to be pre-bound to values in the query.\n */\n initialBindings: new ActionContextKey('@comunica/actor-init-query:initialBindings'),\n /**\n * The provided query's format.\n * Defaults to { language: 'sparql', version: '1.1' }\n */\n queryFormat: new ActionContextKey('@comunica/actor-init-query:queryFormat'),\n /**\n * Which GraphQL bindings should be singularized.\n */\n graphqlSingularizeVariables: new ActionContextKey('@comunica/actor-init-query:singularizeVariables'),\n /**\n * If HTTP and parsing failures are ignored.\n */\n lenient: new ActionContextKey('@comunica/actor-init-query:lenient'),\n /**\n * The original query string.\n */\n queryString: new ActionContextKey('@comunica/actor-init-query:queryString'),\n /**\n * The original parsed query.\n */\n query: new ActionContextKey('@comunica/actor-init-query:query'),\n /**\n * The query's base IRI.\n */\n baseIRI: new ActionContextKey('@comunica/actor-init-query:baseIRI'),\n /**\n * Object to cache function argument overload resolutions.\n * Defaults to an object that is reused across query executions.\n */\n functionArgumentsCache: new ActionContextKey(\n '@comunica/actor-init-query:functionArgumentsCache',\n ),\n /**\n * A timestamp representing the current time.\n * This is required for certain SPARQL operations such as NOW().\n */\n queryTimestamp: new ActionContextKey('@comunica/actor-init-query:queryTimestamp'),\n /**\n * @range {functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined}\n * Extension function creator for a given function IRI.\n * Returned value should be an async function implementation.\n * Undefined may be returned if no implementation exists for the given function IRI.\n *\n * The dictionary-based extensionFunctions context entry may be used instead, but not simultaneously.\n */\n extensionFunctionCreator: new ActionContextKey<\n (functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined\n >('@comunica/actor-init-query:extensionFunctionCreator'),\n /**\n * Dictionary of extension functions.\n * Key is the IRI of the function, and value is the async function implementation.\n *\n * The callback-based extensionFunctionCreator context entry may be used instead, but not simultaneously.\n */\n extensionFunctions: new ActionContextKey<\n Record Promise>\n >('@comunica/actor-init-query:extensionFunctions'),\n /**\n * Enables manipulation of the CLI arguments and their processing.\n */\n cliArgsHandlers: new ActionContextKey('@comunica/actor-init-query:cliArgsHandlers'),\n /**\n * Explain mode of the query. Can be 'parsed', 'logical', 'physical', or 'physical-json'.\n */\n explain: new ActionContextKey('@comunica/actor-init-query:explain'),\n /**\n * Logs the used physical operators\n */\n physicalQueryPlanLogger: new ActionContextKey(\n '@comunica/actor-init-query:physicalQueryPlanLogger',\n ),\n /**\n * The current physical operator within the query plan.\n * This is used to pass parent-child relationships for invoking the query plan logger.\n */\n physicalQueryPlanNode: new ActionContextKey('@comunica/actor-init-query:physicalQueryPlanNode'),\n /**\n * A JSON-LD context\n */\n jsonLdContext: new ActionContextKey('@context'),\n /**\n * A boolean value denoting whether caching is disabled or not.\n */\n noCache: new ActionContextKey('@comunica/actor-init-query:noCache'),\n /**\n * A boolean value denoting whether results should be deduplicated or not.\n */\n distinctConstruct: new ActionContextKey('@comunica/actor-init-query:distinctConstruct'),\n};\n\nexport const KeysQueryOperation = {\n /**\n * Context entry for the current query operation.\n */\n operation: new ActionContextKey('@comunica/bus-query-operation:operation'),\n /**\n * @type {any} The metadata from the left streams within a join operation.\n */\n joinLeftMetadata: new ActionContextKey('@comunica/bus-query-operation:joinLeftMetadata'),\n /**\n * An array of metadata from the right streams within a join operation.\n */\n joinRightMetadatas: new ActionContextKey('@comunica/bus-query-operation:joinRightMetadatas'),\n /**\n * Indicates the bindings that were used to bind the operation.\n */\n joinBindings: new ActionContextKey('@comunica/bus-query-operation:joinBindings'),\n /**\n * Flag for indicating that only read operations are allowed, defaults to false.\n */\n readOnly: new ActionContextKey('@comunica/bus-query-operation:readOnly'),\n /**\n * An internal context entry to mark that a property path with arbitrary length and a distinct key is being processed.\n */\n isPathArbitraryLengthDistinctKey: new ActionContextKey(\n '@comunica/bus-query-operation:isPathArbitraryLengthDistinct',\n ),\n /**\n * An indicator that the stream will be limited to the given number of elements afterwards.\n */\n limitIndicator: new ActionContextKey('@comunica/bus-query-operation:limitIndicator'),\n /**\n * If the default graph should also contain the union of all named graphs.\n */\n unionDefaultGraph: new ActionContextKey('@comunica/bus-query-operation:unionDefaultGraph'),\n /**\n * The sources to query over.\n */\n querySources: new ActionContextKey('@comunica/bus-query-operation:querySources'),\n};\n\nexport const KeysRdfParseJsonLd = {\n /**\n * @range {IDocumentLoader}\n */\n documentLoader: new ActionContextKey('@comunica/actor-rdf-parse-jsonld:documentLoader'),\n /**\n * @range {boolean}\n */\n strictValues: new ActionContextKey('@comunica/actor-rdf-parse-jsonld:strictValues'),\n /**\n * @range {Record}\n */\n parserOptions: new ActionContextKey>('@comunica/actor-rdf-parse-jsonld:parserOptions'),\n};\n\nexport const KeysRdfParseHtmlScript = {\n /**\n * An internal context flag to determine if the engine is already processing an HTML script tag.\n */\n processingHtmlScript: new ActionContextKey('@comunica/actor-rdf-parse-html-script:processingHtmlScript'),\n /**\n * If all HTML script tags must be considered.\n */\n extractAllScripts: new ActionContextKey('extractAllScripts'),\n};\n\nexport const KeysQuerySourceIdentify = {\n /**\n * A map containing unique IDs for each source\n */\n sourceIds: new ActionContextKey>(\n '@comunica/bus-query-source-identify:sourceIds',\n ),\n /**\n * Hypermedia sources mapping to their aggregated store.\n */\n hypermediaSourcesAggregatedStores: new ActionContextKey>(\n '@comunica/bus-query-source-identify:hypermediaSourcesAggregatedStores',\n ),\n /**\n * If links may be traversed from this source.\n * This means that sources annotated with this flag are considered incomplete until all links have been traversed.\n */\n traverse: new ActionContextKey('@comunica/bus-query-source-identify:traverse'),\n};\n\nexport const KeysRdfUpdateQuads = {\n /**\n * A data destination.\n */\n destination: new ActionContextKey('@comunica/bus-rdf-update-quads:destination'),\n};\n\nexport const KeysMergeBindingsContext = {\n /**\n * The data sources required to produce the binding\n */\n sourcesBinding: new ActionContextKey('@comunica/bus-merge-bindings-context:sourcesBinding'),\n};\n\nexport const KeysRdfJoin = {\n /**\n * The last physical join actor that was executed.\n */\n lastPhysicalJoin: new ActionContextKey('@comunica/bus-rdf-join:lastPhysicalJoin'),\n};\n\nexport const KeysStatistics = {\n /**\n * All discovered links during query execution. Not all of them will necessarily be dereferenced.\n */\n discoveredLinks: new ActionContextKey>(\n '@comunica/bus-context-preprocess:discoveredLinks',\n ),\n /**\n * Information about what links are dereferenced and when\n */\n dereferencedLinks: new ActionContextKey>(\n '@comunica/bus-context-preprocess:dereferencedLinks',\n ),\n};\n","import type { IActionContext, IActionContextKey } from '@comunica/types';\nimport { Map } from 'immutable';\n\n/**\n * Implementation of {@link IActionContext} using Immutable.js.\n */\nexport class ActionContext implements IActionContext {\n private readonly map: Map;\n\n public constructor(data: Record = {}) {\n this.map = Map(data);\n }\n\n /**\n * Will only set the value if the key is not already set.\n */\n public setDefault(key: IActionContextKey, value: V): IActionContext {\n return this.has(key) ? this : this.set(key, value);\n }\n\n public set(key: IActionContextKey, value: V): IActionContext {\n return this.setRaw(key.name, value);\n }\n\n public setRaw(key: string, value: any): IActionContext {\n return new ActionContext(this.map.set(key, value));\n }\n\n public delete(key: IActionContextKey): IActionContext {\n return new ActionContext(this.map.delete(key.name));\n }\n\n public get(key: IActionContextKey): V | undefined {\n return this.getRaw(key.name);\n }\n\n public getRaw(key: string): any | undefined {\n return this.map.get(key);\n }\n\n public getSafe(key: IActionContextKey): V {\n if (!this.has(key)) {\n throw new Error(`Context entry ${key.name} is required but not available`);\n }\n return this.get(key);\n }\n\n public has(key: IActionContextKey): boolean {\n return this.hasRaw(key.name);\n }\n\n public hasRaw(key: string): boolean {\n return this.map.has(key);\n }\n\n public merge(...contexts: IActionContext[]): IActionContext {\n // eslint-disable-next-line ts/no-this-alias\n let context: IActionContext = this;\n for (const source of contexts) {\n for (const key of source.keys()) {\n context = context.set(key, source.get(key));\n }\n }\n return context;\n }\n\n public keys(): IActionContextKey[] {\n return [ ... this.map.keys() ]\n .map(keyName => new ActionContextKey(keyName));\n }\n\n public toJS(): any {\n return this.map.toJS();\n }\n\n public toString(): string {\n return `ActionContext(${JSON.stringify(this.map.toJS())})`;\n }\n\n public [Symbol.for('nodejs.util.inspect.custom')](): string {\n return `ActionContext(${JSON.stringify(this.map.toJS(), null, ' ')})`;\n }\n\n /**\n * Convert the given object to an action context object if it is not an action context object yet.\n * If it already is an action context object, return the object as-is.\n * @param maybeActionContext An action context or record.\n * @return {ActionContext} An action context object.\n */\n public static ensureActionContext(maybeActionContext?: IActionContext | Record): IActionContext {\n return maybeActionContext instanceof ActionContext ?\n maybeActionContext :\n new ActionContext(Map(maybeActionContext ?? {}));\n }\n}\n\n/**\n * Simple implementation of {@link IActionContextKey}.\n */\nexport class ActionContextKey implements IActionContextKey {\n /**\n * A unique context key name.\n */\n public readonly name: string;\n\n public constructor(name: string) {\n this.name = name;\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { Bus } from './Bus';\n\n/**\n * An ActionObserver can passively listen to {@link Actor#run} inputs and outputs for all actors on a certain bus.\n *\n * ActionObserver should not edit inputs and outputs,\n * they should be considered immutable.\n *\n * @see Actor\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class ActionObserver {\n public readonly name: string;\n public readonly bus: Bus, I, IActorTest, O>;\n\n /**\n * All enumerable properties from the `args` object are inherited to this observer.\n *\n * The observer will NOT automatically subscribe to the given bus when this constructor is called.\n *\n * @param {IActionObserverArgs} args Arguments object\n * @throws When required arguments are missing.\n */\n protected constructor(args: IActionObserverArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n public abstract onRun(actor: Actor, action: I, output: Promise): void;\n}\n\nexport interface IActionObserverArgs {\n\n /**\n * The name for this observer.\n * @default {}\n */\n name: string;\n\n /**\n * The bus this observer can subscribe to.\n */\n bus: Bus, I, IActorTest, O>;\n}\n","import type { IActionContext, Logger } from '@comunica/types';\nimport type { Bus } from './Bus';\nimport { CONTEXT_KEY_LOGGER } from './ContextEntries';\n\n/**\n * An actor can act on messages of certain types and provide output of a certain type.\n *\n * The flow of an actor is as follows:\n * 1. Send a message to {@link Actor#test} to test if an actor can run that action.\n * 2. If the actor can reply to the message, let the actor run the action using {@link Actor#run}.\n *\n * An actor is typically subscribed to a bus,\n * using which the applicability to an action can be tested.\n *\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class Actor implements\n IActorArgs {\n public readonly name: string;\n public readonly bus: Bus, I, T, O>;\n public readonly beforeActors: Actor[] = [];\n\n /**\n * All enumerable properties from the `args` object are inherited to this actor.\n *\n * The actor will subscribe to the given bus when this constructor is called.\n *\n * @param {IActorArgs} args Arguments object\n * @param {string} args.name The name for this actor.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this actor subscribes to.\n * @throws When required arguments are missing.\n */\n protected constructor(args: IActorArgs) {\n Object.assign(this, args);\n this.bus.subscribe(this);\n if (this.beforeActors.length > 0) {\n this.bus.addDependencies(this, this.beforeActors);\n }\n }\n\n /**\n * Get the logger from the given context.\n * @param {ActionContext} context An optional context.\n * @return {Logger} The logger or undefined.\n */\n public static getContextLogger(context: IActionContext): Logger | undefined {\n return context.get(CONTEXT_KEY_LOGGER);\n }\n\n /**\n * Check if this actor can run the given action,\n * without actually running it.\n *\n * @param {I} action The action to test.\n * @return {Promise} A promise that resolves to the test result.\n */\n public abstract test(action: I): Promise;\n\n /**\n * Run the given action on this actor.\n *\n * In most cases, this method should not be called directly.\n * Instead, {@link #runObservable} should be called.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n public abstract run(action: I): Promise;\n\n /**\n * Run the given action on this actor\n * AND invokes the {@link Bus#onRun} method.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n public runObservable(action: I): Promise {\n const output: Promise = this.run(action);\n this.bus.onRun(this, action, output);\n return output;\n }\n\n /**\n * Initialize this actor.\n * This should be used for doing things that take a while,\n * such as opening files.\n *\n * @return {Promise} A promise that resolves when the actor has been initialized.\n */\n public async initialize(): Promise {\n return true;\n }\n\n /**\n * Deinitialize this actor.\n * This should be used for cleaning up things when the application is shut down,\n * such as closing files and removing temporary files.\n *\n * @return {Promise} A promise that resolves when the actor has been deinitialized.\n */\n public async deinitialize(): Promise {\n return true;\n }\n\n /* Proxy methods for the (optional) logger that is defined in the context */\n\n protected getDefaultLogData(context: IActionContext, data?: (() => any)): any {\n const dataActual = data ? data() : {};\n dataActual.actor = this.name;\n return dataActual;\n }\n\n protected logTrace(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.trace(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logDebug(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.debug(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logInfo(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.info(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logWarn(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.warn(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logError(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.error(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logFatal(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.fatal(message, this.getDefaultLogData(context, data));\n }\n }\n}\n\nexport interface IActorArgs {\n /**\n * The name for this actor.\n * @default {}\n */\n name: string;\n /**\n * The bus this actor subscribes to.\n */\n bus: Bus, I, T, O>;\n /**\n * Actor that must be registered in the bus before this actor.\n */\n beforeActors?: Actor[];\n}\n\n/**\n * Data interface for the type of action.\n */\nexport interface IAction {\n /**\n * The input context that is passed through by actors.\n */\n context: IActionContext;\n}\n\n/**\n * Data interface for the type of an actor test result.\n */\nexport interface IActorTest {\n\n}\n\n/**\n * Data interface for the type of an actor run result.\n */\nexport interface IActorOutput {\n\n}\n","import type { ActionObserver } from './ActionObserver';\nimport type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\n\n/**\n * A publish-subscribe bus for sending actions to actors\n * to test whether or not they can run an action.\n *\n * This bus does not run the action itself,\n * for that a {@link Mediator} can be used.\n *\n * @see Actor\n * @see Mediator\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport class Bus, I extends IAction, T extends IActorTest, O extends IActorOutput> implements\n IBusArgs {\n public readonly name: string;\n protected readonly actors: A[] = [];\n protected readonly observers: ActionObserver[] = [];\n // Mapping from dependency (after) to dependents (before)\n protected readonly dependencyLinks: Map = new Map();\n\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n public constructor(args: IBusArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Subscribe the given actor to the bus.\n * After this, the given actor can be unsubscribed from the bus by calling {@link Bus#unsubscribe}.\n *\n * An actor that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {A} actor The actor to subscribe.\n */\n public subscribe(actor: A): void {\n this.actors.push(actor);\n this.reorderForDependencies();\n }\n\n /**\n * Subscribe the given observer to the bus.\n * After this, the given observer can be unsubscribed from the bus by calling {@link Bus#unsubscribeObserver}.\n *\n * An observer that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {ActionObserver} observer The observer to subscribe.\n */\n public subscribeObserver(observer: ActionObserver): void {\n this.observers.push(observer);\n }\n\n /**\n * Unsubscribe the given actor from the bus.\n *\n * An actor that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {A} actor The actor to unsubscribe\n * @return {boolean} If the given actor was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n public unsubscribe(actor: A): boolean {\n const index: number = this.actors.indexOf(actor);\n if (index >= 0) {\n this.actors.splice(index, 1);\n return true;\n }\n return false;\n }\n\n /**\n * Unsubscribe the given observer from the bus.\n *\n * An observer that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {ActionObserver} observer The observer to unsubscribe.\n * @return {boolean} If the given observer was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n public unsubscribeObserver(observer: ActionObserver): boolean {\n const index: number = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n return true;\n }\n return false;\n }\n\n /**\n * Publish an action to all actors in the bus to test if they can run the action.\n *\n * @param {I} action An action to publish\n * @return {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]}\n * An array of reply objects. Each object contains a reference to the actor,\n * and a promise to its {@link Actor#test} result.\n */\n public publish(action: I): IActorReply[] {\n return this.actors.map((actor: A): IActorReply => ({ actor, reply: actor.test(action) }));\n }\n\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n public onRun(actor: Actor, action: I, output: Promise): void {\n for (const observer of this.observers) {\n observer.onRun(actor, action, output);\n }\n }\n\n /**\n * Indicate that the given actor has the given actor dependencies.\n *\n * This will ensure that the given actor will be present in the bus *before* the given dependencies.\n *\n * @param {A} dependent A dependent actor that will be placed before the given actors.\n * @param {A[]} dependencies Actor dependencies that will be placed after the given actor.\n */\n public addDependencies(dependent: A, dependencies: A[]): void {\n for (const dependency of dependencies) {\n let existingDependencies = this.dependencyLinks.get(dependency);\n if (!existingDependencies) {\n existingDependencies = [];\n this.dependencyLinks.set(dependency, existingDependencies);\n }\n existingDependencies.push(dependent);\n }\n this.reorderForDependencies();\n }\n\n /**\n * Reorder the bus based on all present dependencies.\n */\n public reorderForDependencies(): void {\n if (this.dependencyLinks.size > 0) {\n const actorsAfter = [];\n\n // Temporarily remove all actors that have dependencies\n for (const actorAfter of this.dependencyLinks.keys()) {\n const dependentPos = this.actors.indexOf(actorAfter);\n if (dependentPos >= 0) {\n this.actors.splice(dependentPos, 1);\n actorsAfter.push(actorAfter);\n }\n }\n\n // Iteratively append actors based on the first dependency link\n // that has all of its dependencies available in the array\n while (actorsAfter.length > 0) {\n // Find the first actor that has all of its dependencies available.\n let activeActorAfterId = -1;\n for (let i = 0; i < actorsAfter.length; i++) {\n let validLink = true;\n for (const dependency of this.dependencyLinks.get(actorsAfter[i])!) {\n if (!this.actors.includes(dependency) && actorsAfter.includes(dependency)) {\n validLink = false;\n break;\n }\n }\n if (validLink) {\n activeActorAfterId = i;\n break;\n }\n }\n\n // If none of the pending links are possible, there must be a cyclic dependency\n if (activeActorAfterId < 0) {\n throw new Error(`Cyclic dependency links detected in bus ${this.name}`);\n }\n\n // The dependent may not be available (yet), so we don't add it to the array (yet).\n const activeActorAfter = actorsAfter.splice(activeActorAfterId, 1)[0];\n this.actors.push(activeActorAfter);\n }\n }\n }\n}\n\nexport interface IBusArgs {\n /**\n * The name for this bus.\n * @default {}\n */\n name: string;\n}\n\n/**\n * Data interface for holding an actor and a promise to a reply from that actor.\n */\nexport interface IActorReply<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> {\n actor: A;\n reply: Promise;\n}\n\nexport type IReply<\n I extends IAction = IAction,\n O extends IActorOutput = IActorOutput,\n T extends IActorTest = IActorTest,\n> = IActorReply, I, T, O>;\n\nexport type IBus\n= Bus, I, T, O>;\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { IActorReply, IBusArgs } from './Bus';\nimport { Bus } from './Bus';\n\n/**\n * A bus that indexes identified actors,\n * so that actions with a corresponding identifier can be published more efficiently.\n *\n * Multiple actors with the same identifier can be subscribed.\n *\n * If actors or actions do not have a valid identifier,\n * then this will fallback to the normal bus behaviour.\n *\n * @see Bus\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport class BusIndexed, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Bus {\n protected readonly actorsIndex: Record = {};\n protected readonly actorIdentifierFields: string[];\n protected readonly actionIdentifierFields: string[];\n\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusIndexedArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n public constructor(args: IBusIndexedArgs) {\n super(args);\n }\n\n public override subscribe(actor: A): void {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n let actors = this.actorsIndex[actorId];\n if (!actors) {\n actors = this.actorsIndex[actorId] = [];\n }\n actors.push(actor);\n super.subscribe(actor);\n }\n\n public override unsubscribe(actor: A): boolean {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n const actors = this.actorsIndex[actorId];\n if (actors) {\n const i = actors.indexOf(actor);\n if (i >= 0) {\n actors.splice(i, 1);\n }\n if (actors.length === 0) {\n delete this.actorsIndex[actorId];\n }\n }\n return super.unsubscribe(actor);\n }\n\n public override publish(action: I): IActorReply[] {\n const actionId = this.getActionIdentifier(action);\n if (actionId) {\n const actors = [ ...this.actorsIndex[actionId] || [], ...this.actorsIndex._undefined_ || [] ];\n return actors.map((actor: A): IActorReply => ({ actor, reply: actor.test(action) }));\n }\n return super.publish(action);\n }\n\n protected getActorIdentifier(actor: A): string {\n return this.actorIdentifierFields.reduce((object: any, field): A => object[field], actor);\n }\n\n protected getActionIdentifier(action: I): string {\n return this.actionIdentifierFields.reduce((object: any, field): A => object[field], action);\n }\n}\n\nexport interface IBusIndexedArgs extends IBusArgs {\n actorIdentifierFields: string[];\n actionIdentifierFields: string[];\n}\n","import type { Logger } from '@comunica/types';\nimport { ActionContextKey } from './ActionContext';\n\nexport const CONTEXT_KEY_LOGGER = new ActionContextKey('@comunica/core:log');\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { Bus, IActorReply } from './Bus';\n\n/**\n * A mediator can mediate an action over a bus of actors.\n *\n * It does the following:\n * 1. Accepts an action in {@link Mediator#mediate}.\n * 2. Sends the action to the bus to test its applicability on all actors.\n * 3. It _mediates_ over these test results.\n * 4. It selects the _best_ actor.\n * 5. The action is run by the _best_ actor, and the result if returned.\n *\n * The _mediates_ and _best_ parts are filled in by subclasses of this abstract Mediator class.\n *\n * @template A The type of actor to mediator over.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class Mediator<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> implements IMediatorArgs {\n public readonly name: string;\n public readonly bus: Bus;\n\n /**\n * All enumerable properties from the `args` object are inherited to this mediator.\n *\n * @param {IMediatorArgs, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>} args Arguments object\n * @param {string} args.name The name for this mediator.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this mediator will mediate over.\n * @throws When required arguments are missing.\n */\n protected constructor(args: IMediatorArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Publish the given action in the bus.\n *\n * This will send the test action on all actors in the bus.\n * All actor replies will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {IActorReply, I extends IAction, T extends IActorTest, O extends IActorOutput>[]}\n * The list of actor replies.\n */\n public publish(action: I): IActorReply[] {\n // Test all actors in the bus\n const actors: IActorReply[] = this.bus.publish(action);\n if (actors.length === 0) {\n throw new Error(`No actors are able to reply to a message in the bus ${this.bus.name}`);\n }\n return actors;\n }\n\n /**\n * Mediate for the given action to get an actor.\n *\n * This will send the test action on all actors in the bus.\n * The actor that tests _best_ will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the _best_ actor.\n */\n public async mediateActor(action: I): Promise {\n // Mediate to one actor and run that actor.\n return await this.mediateWith(action, this.publish(action));\n }\n\n /**\n * Mediate for the given action.\n *\n * This will send the test action on all actors in the bus.\n * The action will be run on the actor that tests _best_,\n * of which the result will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the mediation result.\n */\n public async mediate(action: I): Promise {\n // Mediate to one actor and run the action on it\n const actor: A = await this.mediateActor(action);\n return actor.runObservable(action);\n }\n\n /**\n * Mediate for the given action with the given actor test results for the action.\n *\n * One actor must be returned that provided the _best_ test result.\n * How '_best_' is interpreted, depends on the implementation of the Mediator.\n *\n * @param {I} action The action to mediate for.\n * @param {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]} testResults The actor test results for the action.\n * @return {Promise>} A promise that resolves to the _best_ actor.\n */\n protected abstract mediateWith(action: I, testResults: IActorReply[]): Promise;\n}\n\nexport interface IMediatorArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> {\n /**\n * The name for this mediator.\n * @default {}\n */\n name: string;\n /**\n * The bus this mediator will mediate over.\n */\n bus: Bus;\n}\n\nexport type Mediate =\nMediator, I, T, O>;\n","import type * as RDF from '@rdfjs/types';\n\n/**\n * A blank node that is scoped to a set of bindings.\n */\nexport class BlankNodeBindingsScoped implements RDF.BlankNode {\n public readonly termType = 'BlankNode';\n public readonly singleBindingsScope = true;\n public readonly value: string;\n\n public constructor(value: string) {\n this.value = value;\n }\n\n public equals(other: RDF.Term | null | undefined): boolean {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\n","import type * as RDF from '@rdfjs/types';\n\n/**\n * A blank node that is scoped to a certain source.\n */\nexport class BlankNodeScoped implements RDF.BlankNode {\n public readonly termType = 'BlankNode';\n public readonly value: string;\n /**\n * This value can be obtained by consumers in query results,\n * so that this can be passed into another query as an IRI,\n * in order to obtain more results relating to this (blank) node.\n */\n public readonly skolemized: RDF.NamedNode;\n\n public constructor(value: string, skolemized: RDF.NamedNode) {\n this.value = value;\n this.skolemized = skolemized;\n }\n\n public equals(other: RDF.Term | null | undefined): boolean {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RdfString from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport type { ITermTransformer } from '../transformers/TermTransformer';\nimport { TypeAlias } from '../util/Consts';\nimport { isSubTypeOf } from '../util/TypeHandling';\nimport type { IAggregatorComponentClass } from '.';\n\nexport abstract class AggregatorComponent {\n public abstract put(bindings: RDF.Term | undefined): void;\n public abstract result(): RDF.Term | undefined;\n\n protected separator: string;\n protected termTransformer: ITermTransformer;\n\n public static emptyValue(): RDF.Term | undefined {\n return undefined;\n }\n\n public constructor(expr: Algebra.AggregateExpression, protected sharedContext: ICompleteSharedContext) {\n this.separator = expr.separator || ' ';\n this.termTransformer = new TermTransformer(sharedContext.superTypeProvider);\n }\n\n protected termToNumericOrError(term: RDF.Term): E.NumericLiteral {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a numeric literal`);\n } else if (\n !isSubTypeOf(term.datatype.value, TypeAlias.SPARQL_NUMERIC, this.sharedContext.superTypeProvider)\n ) {\n throw new Error(`Term datatype ${term.datatype.value} with value ${term.value} has type ${term.termType} and is not a numeric literal`);\n }\n return this.termTransformer.transformLiteral(term);\n }\n}\n\n/**\n * A base aggregator that can handle distinct and possibly wildcards.\n */\nexport class Aggregator {\n protected distinct: boolean;\n protected variableValues: Map> = new Map();\n\n public constructor(expr: Algebra.AggregateExpression, protected aggregatorComponent: AggregatorComponent) {\n this.distinct = expr.distinct;\n }\n\n public static emptyValue(component: IAggregatorComponentClass): RDF.Term | undefined {\n return component.emptyValue();\n }\n\n public result(): RDF.Term | undefined {\n return this.aggregatorComponent.result();\n }\n\n public put(bindings: RDF.Term, variable = ''): void {\n if (!this.canSkip(bindings, variable)) {\n this.aggregatorComponent.put(bindings);\n this.addSeen(bindings, variable);\n }\n }\n\n private canSkip(term: RDF.Term, variable: string): boolean {\n const set = this.variableValues.get(variable);\n return this.distinct && set !== undefined && set.has(RdfString.termToString(term));\n }\n\n private addSeen(term: RDF.Term, variable: string): void {\n if (this.distinct) {\n if (!this.variableValues.has(variable)) {\n this.variableValues.set(variable, new Set());\n }\n this.variableValues.get(variable)!.add(RdfString.termToString(term));\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { integer } from '../functions/Helpers';\nimport * as C from '../util/Consts';\nimport { AggregatorComponent } from './Aggregator';\n\ninterface IAverageState {\n sum: E.NumericLiteral;\n count: number;\n}\n\nexport class Average extends AggregatorComponent {\n private readonly summer = regularFunctions[C.RegularOperator.ADDITION];\n private readonly divider = regularFunctions[C.RegularOperator.DIVISION];\n private state: IAverageState | undefined = undefined;\n\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n const sum = this.termToNumericOrError(term);\n this.state = { sum, count: 1 };\n } else {\n const internalTerm = this.termToNumericOrError(term);\n this.state.sum = this.summer.apply([ this.state.sum, internalTerm ], this.sharedContext);\n this.state.count++;\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Average.emptyValue();\n }\n const count = new E.IntegerLiteral(this.state.count);\n const result = this.divider.apply([ this.state.sum, count ], this.sharedContext);\n return result.toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { integer } from '../functions/Helpers';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Count extends AggregatorComponent {\n private state: number | undefined = undefined;\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(): void {\n if (this.state === undefined) {\n this.state = 0;\n }\n this.state++;\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Count.emptyValue();\n }\n return integer(this.state).toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { langString, string } from '../functions/Helpers';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class GroupConcat extends AggregatorComponent {\n private state: string | undefined = undefined;\n private lastLanguageValid = true;\n private lastLanguage: string | undefined = undefined;\n\n public static override emptyValue(): RDF.Term {\n return string('').toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n this.state = term.value;\n if (term.termType === 'Literal') {\n this.lastLanguage = term.language;\n }\n } else {\n this.state += this.separator + term.value;\n if (this.lastLanguageValid && term.termType === 'Literal' && this.lastLanguage !== term.language) {\n this.lastLanguageValid = false;\n this.lastLanguage = undefined;\n }\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return GroupConcat.emptyValue();\n }\n if (this.lastLanguageValid && this.lastLanguage) {\n return langString(this.state, this.lastLanguage).toRDF();\n }\n return string(this.state).toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { orderTypes } from '../util/Ordering';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Max extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a literal`);\n }\n if (this.state === undefined) {\n this.state = term;\n } else if (orderTypes(this.state, term) === -1) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Max.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { orderTypes } from '../util/Ordering';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Min extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a literal`);\n }\n if (this.state === undefined) {\n this.state = term;\n } else if (orderTypes(this.state, term) === 1) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Min.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Sample extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n // First value is our sample\n if (this.state === undefined) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Sample.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { integer } from '../functions/Helpers';\nimport * as C from '../util/Consts';\nimport { AggregatorComponent } from './Aggregator';\n\ntype SumState = E.NumericLiteral;\n\nexport class Sum extends AggregatorComponent {\n private state: SumState | undefined = undefined;\n private readonly summer = regularFunctions[C.RegularOperator.ADDITION];\n\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n this.state = this.termToNumericOrError(term);\n } else {\n const internalTerm = this.termToNumericOrError(term);\n this.state = this.summer.apply([ this.state, internalTerm ], this.sharedContext);\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Sum.emptyValue();\n }\n return this.state.toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RdfString from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { integer } from '../functions/Helpers';\n\n/**\n * Implementation of the COUNT aggregator on a wildcard.\n * We choose to make this is separate class, because it would pollute the code of the other aggregators.\n */\nexport class WildcardCountAggregator {\n private readonly distinct: boolean;\n\n // Key: string representation of a ',' separated list of terms.\n // Value: string representation of a ',' separated list of variables sorted by name.\n private readonly bindingValues: Map> = new Map();\n private counter = 0;\n\n public constructor(expr: Algebra.AggregateExpression) {\n this.distinct = expr.distinct;\n }\n\n public putBindings(bindings: RDF.Bindings): void {\n if (!this.handleDistinct(bindings)) {\n this.counter += 1;\n }\n }\n\n public static emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public result(): RDF.Term {\n return integer(this.counter).toRDF();\n }\n\n /**\n * Returns true if the given bindings should be skipped.\n * @param bindings\n * @private\n */\n private handleDistinct(bindings: RDF.Bindings): boolean {\n if (this.distinct) {\n const bindingList: [RDF.Variable, RDF.Term][] = [ ...bindings ];\n bindingList.sort((first, snd) => first[0].value.localeCompare(snd[0].value));\n const variables = bindingList.map(([ variable ]) => variable.value).join(',');\n const terms = bindingList.map(([ , term ]) => RdfString.termToString(term)).join(',');\n\n const set = this.bindingValues.get(variables);\n const result = set !== undefined && set.has(terms);\n\n // Add to the set:\n if (!set) {\n this.bindingValues.set(variables, new Set());\n }\n this.bindingValues.get(variables)!.add(terms);\n\n return result;\n }\n return false;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { BaseAggregateEvaluator } from './evaluatorHelpers/BaseAggregateEvaluator';\nimport type { ISyncEvaluatorContext } from './SyncEvaluator';\nimport { SyncEvaluator } from './SyncEvaluator';\n\n// TODO: Support hooks & change name to SyncAggregateEvaluator\nexport class AggregateEvaluator extends BaseAggregateEvaluator {\n private readonly evaluator: SyncEvaluator;\n\n public constructor(expr: Algebra.AggregateExpression, context?: ISyncEvaluatorContext, throwError?: boolean) {\n super(expr, SyncEvaluator.completeContext(context ?? {}), throwError);\n this.evaluator = new SyncEvaluator(expr.expression, context);\n }\n\n public put(bindings: RDF.Bindings): void {\n if (this.errorOccurred) {\n return;\n }\n if (this.isWildcard) {\n this.wildcardAggregator!.putBindings(bindings);\n } else {\n try {\n const startTerm = this.evaluator.evaluate(bindings);\n this.aggregator.put(startTerm);\n } catch (error: unknown) {\n this.safeThrow(error);\n }\n }\n }\n\n protected safeThrow(err: unknown): void {\n if (this.throwError) {\n throw err;\n } else {\n this.errorOccurred = true;\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { IAsyncEvaluatorContext } from './AsyncEvaluator';\nimport { AsyncEvaluator } from './AsyncEvaluator';\nimport { BaseAggregateEvaluator } from './evaluatorHelpers/BaseAggregateEvaluator';\n\nexport class AsyncAggregateEvaluator extends BaseAggregateEvaluator {\n private readonly evaluator: AsyncEvaluator;\n\n public constructor(expr: Algebra.AggregateExpression, context?: IAsyncEvaluatorContext, throwError?: boolean) {\n super(expr, AsyncEvaluator.completeContext(context ?? {}), throwError);\n this.evaluator = new AsyncEvaluator(expr.expression, context);\n this.errorOccurred = false;\n }\n\n public async put(bindings: RDF.Bindings): Promise {\n if (this.errorOccurred) {\n return;\n }\n if (this.isWildcard) {\n this.wildcardAggregator!.putBindings(bindings);\n } else {\n try {\n const startTerm = await this.evaluator.evaluate(bindings);\n if (!startTerm || this.errorOccurred) {\n return;\n }\n this.aggregator.put(startTerm);\n } catch (error: unknown) {\n this.safeThrow(error);\n }\n }\n }\n\n protected safeThrow(err: unknown): void {\n if (this.throwError) {\n throw err;\n } else {\n this.errorOccurred = true;\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport type * as E from '../expressions/Expressions';\nimport { AlgebraTransformer } from '../transformers/AlgebraTransformer';\nimport type { IExpressionEvaluator } from '../Types';\nimport { extractTimeZone } from '../util/DateTimeHelpers';\nimport type { ICompleteAsyncEvaluatorContext } from './evaluatorHelpers/AsyncRecursiveEvaluator';\nimport { AsyncRecursiveEvaluator } from './evaluatorHelpers/AsyncRecursiveEvaluator';\nimport type { ISharedContext } from './evaluatorHelpers/BaseExpressionEvaluator';\n\nexport type AsyncExtensionFunction = (args: RDF.Term[]) => Promise;\nexport type AsyncExtensionFunctionCreator = (functionNamedNode: RDF.NamedNode) => AsyncExtensionFunction | undefined;\n\nexport interface IAsyncEvaluatorContext extends ISharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => Promise;\n aggregate?: (expression: Alg.AggregateExpression) => Promise;\n bnode?: (input?: string) => Promise;\n extensionFunctionCreator?: AsyncExtensionFunctionCreator;\n}\n\nexport class AsyncEvaluator {\n private readonly expr: E.Expression;\n private readonly evaluator: IExpressionEvaluator>;\n\n public static completeContext(context: IAsyncEvaluatorContext): ICompleteAsyncEvaluatorContext {\n const now = context.now ?? new Date(Date.now());\n return {\n now,\n baseIRI: context.baseIRI ?? undefined,\n functionArgumentsCache: context.functionArgumentsCache ?? {},\n superTypeProvider: {\n cache: context.typeCache ?? new LRUCache({ max: 1_000 }),\n discoverer: context.getSuperType ?? (() => 'term'),\n },\n extensionFunctionCreator: context.extensionFunctionCreator,\n exists: context.exists,\n aggregate: context.aggregate,\n bnode: context.bnode,\n defaultTimeZone: context.defaultTimeZone ?? extractTimeZone(now),\n };\n }\n\n public constructor(public algExpr: Alg.Expression, context: IAsyncEvaluatorContext = {}) {\n // eslint-disable-next-line unicorn/no-useless-undefined\n const creator = context.extensionFunctionCreator ?? (() => undefined);\n const baseContext = AsyncEvaluator.completeContext(context);\n\n const transformer = new AlgebraTransformer({\n type: 'async',\n creator,\n ...baseContext,\n });\n this.expr = transformer.transformAlgebra(algExpr);\n\n this.evaluator = new AsyncRecursiveEvaluator(baseContext, transformer);\n }\n\n public async evaluate(mapping: RDF.Bindings): Promise {\n const result = await this.evaluator.evaluate(this.expr, mapping);\n return result.toRDF();\n }\n\n public async evaluateAsEBV(mapping: RDF.Bindings): Promise {\n const result = await this.evaluator.evaluate(this.expr, mapping);\n return result.coerceEBV();\n }\n\n public async evaluateAsInternal(mapping: RDF.Bindings): Promise {\n return await this.evaluator.evaluate(this.expr, mapping);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport type * as E from '../expressions/Expressions';\nimport { AlgebraTransformer } from '../transformers/AlgebraTransformer';\nimport type { IExpressionEvaluator } from '../Types';\nimport { extractTimeZone } from '../util/DateTimeHelpers';\nimport type { ISharedContext } from './evaluatorHelpers/BaseExpressionEvaluator';\nimport type { ICompleteSyncEvaluatorContext } from './evaluatorHelpers/SyncRecursiveEvaluator';\nimport { SyncRecursiveEvaluator } from './evaluatorHelpers/SyncRecursiveEvaluator';\n\nexport interface ISyncEvaluatorContext extends ISharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => boolean;\n aggregate?: (expression: Alg.AggregateExpression) => RDF.Term;\n bnode?: (input?: string) => RDF.BlankNode;\n extensionFunctionCreator?: SyncExtensionFunctionCreator;\n}\n\nexport type SyncExtensionFunction = (args: RDF.Term[]) => RDF.Term;\nexport type SyncExtensionFunctionCreator = (functionNamedNode: RDF.NamedNode) => SyncExtensionFunction | undefined;\n\nexport class SyncEvaluator {\n private readonly expr: E.Expression;\n private readonly evaluator: IExpressionEvaluator;\n\n public static completeContext(context: ISyncEvaluatorContext): ICompleteSyncEvaluatorContext {\n const now = context.now ?? new Date(Date.now());\n return {\n now,\n baseIRI: context.baseIRI ?? undefined,\n functionArgumentsCache: context.functionArgumentsCache ?? {},\n superTypeProvider: {\n cache: context.typeCache ?? new LRUCache({ max: 1_000 }),\n discoverer: context.getSuperType ?? (() => 'term'),\n },\n extensionFunctionCreator: context.extensionFunctionCreator,\n exists: context.exists,\n aggregate: context.aggregate,\n bnode: context.bnode,\n defaultTimeZone: context.defaultTimeZone ?? extractTimeZone(now),\n };\n }\n\n public constructor(public algExpr: Alg.Expression, public context: ISyncEvaluatorContext = {}) {\n // eslint-disable-next-line unicorn/no-useless-undefined\n const creator = context.extensionFunctionCreator ?? (() => undefined);\n const baseContext = SyncEvaluator.completeContext(context);\n\n const transformer = new AlgebraTransformer({\n type: 'sync',\n creator,\n ...baseContext,\n });\n this.expr = transformer.transformAlgebra(algExpr);\n\n this.evaluator = new SyncRecursiveEvaluator(baseContext, transformer);\n }\n\n public evaluate(mapping: RDF.Bindings): RDF.Term {\n const result = this.evaluator.evaluate(this.expr, mapping);\n return result.toRDF();\n }\n\n public evaluateAsEBV(mapping: RDF.Bindings): boolean {\n const result = this.evaluator.evaluate(this.expr, mapping);\n return result.coerceEBV();\n }\n\n public evaluateAsInternal(mapping: RDF.Bindings): E.TermExpression {\n return this.evaluator.evaluate(this.expr, mapping);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport * as E from '../../expressions';\nimport type { AsyncExtension } from '../../expressions';\nimport type { EvalContextAsync } from '../../functions';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport { TermTransformer } from '../../transformers/TermTransformer';\nimport type { IExpressionEvaluator } from '../../Types';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider } from '../../util/TypeHandling';\nimport type { AsyncExtensionFunctionCreator } from '../AsyncEvaluator';\nimport { BaseExpressionEvaluator } from './BaseExpressionEvaluator';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\n\nexport interface ICompleteAsyncEvaluatorContext extends ICompleteSharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => Promise;\n aggregate?: (expression: Alg.AggregateExpression) => Promise;\n bnode?: (input?: string) => Promise;\n extensionFunctionCreator?: AsyncExtensionFunctionCreator;\n}\n\nexport class AsyncRecursiveEvaluator extends BaseExpressionEvaluator\n implements IExpressionEvaluator> {\n protected openWorldType: ISuperTypeProvider;\n private readonly subEvaluators: Record\n Promise | E.Term> = {\n // Shared\n [E.ExpressionType.Term]: (expr, _mapping) => this.term( expr),\n [E.ExpressionType.Variable]: (expr, mapping) => this.variable( expr, mapping),\n\n // Sync\n [E.ExpressionType.Operator]: (expr, mapping) => this.evalOperator( expr, mapping),\n [E.ExpressionType.SpecialOperator]: (expr, mapping) => this\n .evalSpecialOperator( expr, mapping),\n [E.ExpressionType.Named]: (expr, mapping) => this.evalNamed( expr, mapping),\n [E.ExpressionType.Existence]: (expr, mapping) => this.evalExistence( expr, mapping),\n [E.ExpressionType.Aggregate]: (expr, _mapping) => this.evalAggregate( expr),\n [E.ExpressionType.AsyncExtension]: (expr, mapping) => this.evalAsyncExtension( expr, mapping),\n };\n\n public constructor(private readonly context: ICompleteAsyncEvaluatorContext, termTransformer?: ITermTransformer) {\n super(termTransformer ?? new TermTransformer(context.superTypeProvider));\n }\n\n public async evaluate(expr: E.Expression, mapping: RDF.Bindings): Promise {\n const evaluator = this.subEvaluators[expr.expressionType];\n if (!evaluator) {\n throw new Err.InvalidExpressionType(expr);\n }\n return evaluator.bind(this)(expr, mapping);\n }\n\n private async evalOperator(expr: E.Operator, mapping: RDF.Bindings): Promise {\n const argPromises = expr.args.map(arg => this.evaluate(arg, mapping));\n const argResults = await Promise.all(argPromises);\n return expr.apply(argResults);\n }\n\n private async evalSpecialOperator(expr: E.SpecialOperator, mapping: RDF.Bindings): Promise {\n const evaluate = this.evaluate.bind(this);\n const context: EvalContextAsync = {\n args: expr.args,\n mapping,\n\n superTypeProvider: this.context.superTypeProvider,\n now: this.context.now,\n baseIRI: this.context.baseIRI,\n functionArgumentsCache: this.context.functionArgumentsCache,\n\n evaluate,\n bnode: this.context.bnode,\n defaultTimeZone: this.context.defaultTimeZone,\n };\n return expr.applyAsync(context);\n }\n\n private async _evalAsyncArgs(args: E.Expression[], mapping: RDF.Bindings): Promise {\n const argPromises = args.map(arg => this.evaluate(arg, mapping));\n return await Promise.all(argPromises);\n }\n\n private async evalNamed(expr: E.Named, mapping: RDF.Bindings): Promise {\n return expr.apply(await this._evalAsyncArgs(expr.args, mapping));\n }\n\n private async evalAsyncExtension(expr: AsyncExtension, mapping: RDF.Bindings): Promise {\n return await expr.apply(await this._evalAsyncArgs(expr.args, mapping));\n }\n\n private async evalExistence(expr: E.Existence, mapping: RDF.Bindings): Promise {\n if (!this.context.exists) {\n throw new Err.NoExistenceHook();\n }\n\n return new E.BooleanLiteral(await this.context.exists(expr.expression, mapping));\n }\n\n // TODO: Remove?\n private async evalAggregate(expr: E.Aggregate): Promise {\n if (!this.context.aggregate) {\n throw new Err.NoAggregator();\n }\n\n return this.termTransformer.transformRDFTermUnsafe(await this.context.aggregate(expr.expression));\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { aggregators } from '../../aggregators';\nimport { Aggregator } from '../../aggregators/Aggregator';\nimport { WildcardCountAggregator } from '../../aggregators/WildcardCountAggregator';\nimport type { SetFunction } from '../../util/Consts';\nimport * as Err from '../../util/Errors';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\n\nexport abstract class BaseAggregateEvaluator {\n protected expression: Algebra.AggregateExpression;\n protected aggregator: Aggregator;\n protected throwError = false;\n protected isWildcard = false;\n protected wildcardAggregator: WildcardCountAggregator | undefined;\n protected errorOccurred = false;\n\n protected constructor(\n expr: Algebra.AggregateExpression,\n sharedContext: ICompleteSharedContext,\n throwError?: boolean,\n ) {\n this.expression = expr;\n this.aggregator = new Aggregator(expr, new aggregators[ expr.aggregator](expr, sharedContext));\n this.throwError = throwError ?? false;\n this.isWildcard = expr.expression.expressionType === Algebra.expressionTypes.WILDCARD;\n if (this.isWildcard) {\n this.wildcardAggregator = new WildcardCountAggregator(expr);\n }\n }\n\n /**\n * The spec says to throw an error when a set function is called on an empty\n * set (unless explicitly mentioned otherwise like COUNT).\n * However, aggregate error handling says to not bind the result in case of an\n * error. So to simplify logic in the caller, we return undefined by default.\n *\n * @param expr the aggregate expression\n * @param throwError whether this function should respect the spec and throw an error if no empty value is defined\n */\n public static emptyValue(expr: Algebra.AggregateExpression, throwError = false): RDF.Term | undefined {\n let val: RDF.Term | undefined;\n if (expr.expression.expressionType === Algebra.expressionTypes.WILDCARD) {\n val = WildcardCountAggregator.emptyValue();\n } else {\n val = Aggregator.emptyValue(aggregators[ expr.aggregator]);\n }\n if (val === undefined && throwError) {\n throw new Err.EmptyAggregateError();\n }\n return val;\n }\n\n public result(): RDF.Term | undefined {\n if (this.errorOccurred) {\n return undefined;\n }\n if (this.isWildcard) {\n return this.wildcardAggregator!.result();\n }\n return this.aggregator.result();\n }\n\n /**\n * Put a binding from the result stream in the aggregate state.\n *\n * If any binding evaluation errors, the corresponding aggregate variable should be unbound.\n * If this happens, calling @see result() will return @constant undefined\n *\n * @param bindings the bindings to pass to the expression\n */\n public abstract put(bindings: RDF.Bindings): void | Promise;\n\n protected abstract safeThrow(err: unknown): void;\n}\n","import type * as RDF from '@rdfjs/types';\nimport type * as E from '../../expressions';\nimport { expressionToVar } from '../../functions/Helpers';\nimport type { FunctionArgumentsCache } from '../../functions/OverloadTree';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport type { ITimeZoneRepresentation } from '../../util/DateTimeHelpers';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider, SuperTypeCallback, TypeCache } from '../../util/TypeHandling';\n\nexport interface ISharedContext {\n now?: Date;\n baseIRI?: string;\n typeCache?: TypeCache;\n getSuperType?: SuperTypeCallback;\n functionArgumentsCache?: FunctionArgumentsCache;\n defaultTimeZone?: ITimeZoneRepresentation;\n}\n\nexport interface ICompleteSharedContext {\n now: Date;\n baseIRI?: string;\n functionArgumentsCache: FunctionArgumentsCache;\n superTypeProvider: ISuperTypeProvider;\n defaultTimeZone: ITimeZoneRepresentation;\n}\n\nexport class BaseExpressionEvaluator {\n public constructor(protected readonly termTransformer: ITermTransformer) {}\n\n protected term(expr: E.Term): E.Term {\n return expr;\n }\n\n protected variable(expr: E.Variable, mapping: RDF.Bindings): E.Term {\n const term = mapping.get(expressionToVar(expr));\n if (!term) {\n throw new Err.UnboundVariableError(expr.name, mapping);\n }\n return this.termTransformer.transformRDFTermUnsafe(term);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport * as E from '../../expressions';\nimport type { SyncExtension } from '../../expressions';\nimport type { EvalContextSync } from '../../functions';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport { TermTransformer } from '../../transformers/TermTransformer';\nimport type { IExpressionEvaluator } from '../../Types';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider } from '../../util/TypeHandling';\nimport type { SyncExtensionFunctionCreator } from '../SyncEvaluator';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\nimport { BaseExpressionEvaluator } from './BaseExpressionEvaluator';\n\nexport interface ICompleteSyncEvaluatorContext extends ICompleteSharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => boolean;\n aggregate?: (expression: Alg.AggregateExpression) => RDF.Term;\n bnode?: (input?: string) => RDF.BlankNode;\n extensionFunctionCreator?: SyncExtensionFunctionCreator;\n}\n\nexport class SyncRecursiveEvaluator extends BaseExpressionEvaluator\n implements IExpressionEvaluator {\n protected openWorldType: ISuperTypeProvider;\n private readonly subEvaluators: Record E.Term> = {\n // Shared\n [E.ExpressionType.Term]: (expr, _mapping) => this.term( expr),\n [E.ExpressionType.Variable]: (expr, mapping) => this.variable( expr, mapping),\n\n // Sync\n [E.ExpressionType.Operator]: (expr, mapping) => this.evalOperator( expr, mapping),\n [E.ExpressionType.SpecialOperator]: (expr, mapping) => this.evalSpecialOperator( expr, mapping),\n [E.ExpressionType.Named]: (expr, mapping) => this.evalNamed( expr, mapping),\n [E.ExpressionType.Existence]: (expr, mapping) => this.evalExistence( expr, mapping),\n [E.ExpressionType.Aggregate]: (expr, _mapping) => this.evalAggregate( expr),\n [E.ExpressionType.SyncExtension]: (expr, mapping) => this.evalSyncExtension( expr, mapping),\n };\n\n public constructor(private readonly context: ICompleteSyncEvaluatorContext, termTransformer?: ITermTransformer) {\n super(termTransformer ?? new TermTransformer(context.superTypeProvider));\n }\n\n public evaluate(expr: E.Expression, mapping: RDF.Bindings): E.Term {\n const evaluator = this.subEvaluators[expr.expressionType];\n if (!evaluator) {\n throw new Err.InvalidExpressionType(expr);\n }\n return evaluator.bind(this)(expr, mapping);\n }\n\n private evalOperator(expr: E.Operator, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalSpecialOperator(expr: E.SpecialOperator, mapping: RDF.Bindings): E.Term {\n const evaluate = this.evaluate.bind(this);\n const context: EvalContextSync = {\n args: expr.args,\n mapping,\n\n superTypeProvider: this.context.superTypeProvider,\n now: this.context.now,\n baseIRI: this.context.baseIRI,\n functionArgumentsCache: this.context.functionArgumentsCache,\n\n evaluate,\n bnode: this.context.bnode,\n defaultTimeZone: this.context.defaultTimeZone,\n };\n return expr.applySynchronously(context);\n }\n\n private evalNamed(expr: E.Named, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalSyncExtension(expr: SyncExtension, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalExistence(expr: E.Existence, mapping: RDF.Bindings): E.Term {\n if (!this.context.exists) {\n throw new Err.NoExistenceHook();\n }\n\n return new E.BooleanLiteral(this.context.exists(expr.expression, mapping));\n }\n\n private evalAggregate(expr: E.Aggregate): E.Term {\n if (!this.context.aggregate) {\n throw new Err.NoAggregator();\n }\n\n return this.termTransformer.transformRDFTermUnsafe(this.context.aggregate(expr.expression));\n }\n}\n","import type { Algebra as Alg } from 'sparqlalgebrajs';\n\nimport type { AggregateExpression } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Aggregate implements AggregateExpression {\n public expressionType: ExpressionType.Aggregate = ExpressionType.Aggregate;\n\n public constructor(\n public name: string,\n public expression: Alg.AggregateExpression,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { AsyncExtensionApplication, AsyncExtensionExpression, Expression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class AsyncExtension implements AsyncExtensionExpression {\n public expressionType: ExpressionType.AsyncExtension = ExpressionType.AsyncExtension;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: AsyncExtensionApplication,\n ) {}\n}\n","import type { Algebra as Alg } from 'sparqlalgebrajs';\n\nimport type { ExistenceExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class Existence implements ExistenceExpression {\n public expressionType: ExpressionType.Existence = ExpressionType.Existence;\n public constructor(public expression: Alg.ExistenceExpression) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { EvalContextAsync, EvalContextSync } from '../functions';\n\nexport enum ExpressionType {\n Aggregate = 'aggregate',\n Existence = 'existence',\n Named = 'named',\n Operator = 'operator',\n SpecialOperator = 'specialOperator',\n Term = 'term',\n Variable = 'variable',\n AsyncExtension = 'asyncExtension',\n SyncExtension = 'syncExtension',\n}\n\nexport type Expression =\n AggregateExpression |\n ExistenceExpression |\n NamedExpression |\n OperatorExpression |\n SpecialOperatorExpression |\n TermExpression |\n VariableExpression |\n AsyncExtensionExpression |\n SyncExtensionExpression;\n\nexport interface IExpressionProps {\n expressionType: ExpressionType;\n}\n\nexport type AggregateExpression = IExpressionProps & {\n expressionType: ExpressionType.Aggregate;\n name: string;\n expression: Algebra.AggregateExpression;\n};\n\nexport type ExistenceExpression = IExpressionProps & {\n expressionType: ExpressionType.Existence;\n expression: Algebra.ExistenceExpression;\n};\n\nexport type NamedExpression = IExpressionProps & {\n expressionType: ExpressionType.Named;\n name: RDF.NamedNode;\n apply: SimpleApplication;\n args: Expression[];\n};\n\nexport type AsyncExtensionExpression = IExpressionProps & {\n expressionType: ExpressionType.AsyncExtension;\n name: RDF.NamedNode;\n apply: AsyncExtensionApplication;\n args: Expression[];\n};\n\nexport type SyncExtensionExpression = IExpressionProps & {\n expressionType: ExpressionType.SyncExtension;\n name: RDF.NamedNode;\n apply: SimpleApplication;\n args: Expression[];\n};\n\nexport type OperatorExpression = IExpressionProps & {\n expressionType: ExpressionType.Operator;\n args: Expression[];\n apply: SimpleApplication;\n};\n\nexport type SpecialOperatorExpression = IExpressionProps & {\n expressionType: ExpressionType.SpecialOperator;\n args: Expression[];\n applyAsync: SpecialApplicationAsync;\n applySynchronously: SpecialApplicationSync;\n};\n\n// TODO: Create alias Term = TermExpression\nexport function asTermType(type: string): TermType | undefined {\n if (type === 'namedNode' || type === 'literal' || type === 'blankNode' || type === 'quad') {\n return type;\n }\n return undefined;\n}\nexport type TermType = 'namedNode' | 'literal' | 'blankNode' | 'quad';\nexport type TermExpression = IExpressionProps & {\n expressionType: ExpressionType.Term;\n termType: TermType;\n str: () => string;\n coerceEBV: () => boolean;\n toRDF: () => RDF.Term;\n};\n\nexport type VariableExpression = IExpressionProps & {\n expressionType: ExpressionType.Variable;\n name: string;\n};\n\n// Export type Application = SimpleApplication | SpecialApplication;\nexport type SimpleApplication = (args: TermExpression[]) => TermExpression;\nexport type SimpleApplicationTuple = (args: T) => TermExpression;\nexport type AsyncExtensionApplication = (args: TermExpression[]) => Promise;\n\nexport type SpecialApplicationAsync = (context: EvalContextAsync) => Promise;\n\nexport type SpecialApplicationSync = (context: EvalContextSync) => TermExpression;\n","import type * as RDF from '@rdfjs/types';\n\nimport type { Expression, NamedExpression, SimpleApplication } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Named implements NamedExpression {\n public expressionType: ExpressionType.Named = ExpressionType.Named;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: SimpleApplication,\n ) {}\n}\n","import type { Expression, OperatorExpression, SimpleApplication } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Operator implements OperatorExpression {\n public expressionType: ExpressionType.Operator = ExpressionType.Operator;\n\n public constructor(public args: Expression[], public apply: SimpleApplication) {}\n}\n","import type {\n Expression,\n SpecialApplicationAsync,\n SpecialApplicationSync,\n SpecialOperatorExpression,\n} from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class SpecialOperator implements SpecialOperatorExpression {\n public expressionType: ExpressionType.SpecialOperator = ExpressionType.SpecialOperator;\n\n public constructor(\n public args: Expression[],\n public applyAsync: SpecialApplicationAsync,\n public applySynchronously: SpecialApplicationSync,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Expression, SimpleApplication, SyncExtensionExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class SyncExtension implements SyncExtensionExpression {\n public expressionType: ExpressionType.SyncExtension = ExpressionType.SyncExtension;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: SimpleApplication,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from '../util/Consts';\nimport { TypeAlias, TypeURL } from '../util/Consts';\n\nimport type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n IYearMonthDurationRepresentation,\n} from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport { serializeDateTime, serializeDuration, serializeTime, serializeDate } from '../util/Serialization';\nimport type { ISuperTypeProvider } from '../util/TypeHandling';\nimport { isSubTypeOf } from '../util/TypeHandling';\nimport type { TermExpression, TermType } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nconst DF = new DataFactory();\n\nexport abstract class Term implements TermExpression {\n public expressionType: ExpressionType.Term = ExpressionType.Term;\n public abstract termType: TermType;\n\n public abstract toRDF(): RDF.Term;\n\n public str(): string {\n throw new Err.InvalidArgumentTypes([ this ], C.RegularOperator.STR);\n }\n\n public coerceEBV(): boolean {\n throw new Err.EBVCoercionError(this);\n }\n}\n\n// NamedNodes -----------------------------------------------------------------\nexport class NamedNode extends Term {\n public termType: TermType = 'namedNode';\n public constructor(public value: string) {\n super();\n }\n\n public toRDF(): RDF.Term {\n return DF.namedNode(this.value);\n }\n\n public override str(): string {\n return this.value;\n }\n}\n\n// BlankNodes -----------------------------------------------------------------\n\nexport class BlankNode extends Term {\n public value: RDF.BlankNode;\n public termType: TermType = 'blankNode';\n\n public constructor(value: RDF.BlankNode | string) {\n super();\n this.value = typeof value === 'string' ? DF.blankNode(value) : value;\n }\n\n public toRDF(): RDF.Term {\n return this.value;\n }\n}\n\n// Quads -----------------------------------------------------------------\nexport class Quad extends Term {\n public termType: TermType = 'quad';\n private readonly transformer: TermTransformer;\n private readonly valueTerm: RDF.BaseQuad;\n\n public constructor(input: RDF.BaseQuad, superTypeProvider: ISuperTypeProvider) {\n super();\n this.transformer = new TermTransformer(superTypeProvider);\n this.valueTerm = input;\n }\n\n public toRDF(): RDF.BaseQuad {\n return this.valueTerm;\n }\n\n public get subject(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFsubject);\n }\n\n public get predicate(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFpredicate);\n }\n\n public get object(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFobject);\n }\n\n public get RDFsubject(): RDF.Term {\n return this.toRDF().subject;\n }\n\n public get RDFpredicate(): RDF.Term {\n return this.toRDF().predicate;\n }\n\n public get RDFobject(): RDF.Term {\n return this.toRDF().object;\n }\n}\n\n// Literals-- -----------------------------------------------------------------\nexport function isLiteralTermExpression(expr: TermExpression): Literal | undefined {\n if (expr.termType === 'literal') {\n return > expr;\n }\n return undefined;\n}\n\nexport interface ISerializable {\n toString: () => string;\n}\n\nexport class Literal extends Term {\n public termType = 'literal';\n /**\n * @param typedValue internal representation of this literal's value\n * @param dataType a string representing the datatype. Can be of type @see LiteralTypes or any URI\n * @param strValue the string value of this literal. In other words, the string representing the RDF.literal value.\n * @param language the language, mainly for language enabled strings like RDF_LANG_STRING\n */\n public constructor(\n public typedValue: T,\n public dataType: string,\n public strValue?: string,\n public language?: string,\n ) {\n super();\n }\n\n public toRDF(): RDF.Literal {\n return DF.literal(\n this.strValue ?? this.str(),\n this.language ?? DF.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? this.typedValue.toString();\n }\n}\n\nexport abstract class NumericLiteral extends Literal {\n protected constructor(\n public override typedValue: number,\n dataType: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType, strValue, language);\n }\n\n protected abstract specificFormatter(val: number): string;\n\n public override coerceEBV(): boolean {\n return Boolean(this.typedValue);\n }\n\n public override toRDF(): RDF.Literal {\n const term = super.toRDF();\n if (!Number.isFinite(this.typedValue)) {\n term.value = term.value.replace('Infinity', 'INF');\n }\n return term;\n }\n\n public override str(): string {\n return this.strValue ??\n this.specificFormatter(this.typedValue);\n }\n}\n\nexport class IntegerLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_INTEGER, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toFixed(0);\n }\n}\n\nexport class DecimalLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DECIMAL, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class FloatLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_FLOAT, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class DoubleLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DOUBLE, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n if (!Number.isFinite(val)) {\n if (val > 0) {\n return 'INF';\n }\n if (val < 0) {\n return '-INF';\n }\n return 'NaN';\n }\n\n const jsExponential = val.toExponential();\n const [ jsMantisse, jsExponent ] = jsExponential.split('e');\n\n // Leading + must be removed for integer\n // https://www.w3.org/TR/xmlschema-2/#integer\n const exponent = jsExponent.replace(/\\+/u, '');\n\n // SPARQL test suite prefers trailing zero's\n const mantisse = jsMantisse.includes('.') ?\n jsMantisse :\n `${jsMantisse}.0`;\n\n return `${mantisse}E${exponent}`;\n }\n}\n\nexport class BooleanLiteral extends Literal {\n public constructor(public override typedValue: boolean, public override strValue?: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_BOOLEAN, strValue);\n }\n\n public override coerceEBV(): boolean {\n return this.typedValue;\n }\n}\n\nexport class LangStringLiteral extends Literal {\n public constructor(public override typedValue: string, public override language: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.RDF_LANG_STRING, typedValue, language);\n }\n\n public override coerceEBV(): boolean {\n return this.str().length > 0;\n }\n}\n\n// https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal\n// https://www.w3.org/TR/sparql11-query/#defn_SimpleLiteral\n// https://www.w3.org/TR/sparql11-query/#func-strings\n// This does not include language tagged literals\nexport class StringLiteral extends Literal {\n /**\n * @param typedValue\n * @param dataType Should be type that implements XSD_STRING\n */\n public constructor(public override typedValue: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_STRING, typedValue);\n }\n\n public override coerceEBV(): boolean {\n return this.str().length > 0;\n }\n}\n\nexport class DateTimeLiteral extends Literal {\n public constructor(\n public override typedValue: IDateTimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE_TIME, strValue);\n }\n\n public override str(): string {\n return serializeDateTime(this.typedValue);\n }\n}\n\nexport class TimeLiteral extends Literal {\n public constructor(\n public override typedValue: ITimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_TIME, strValue);\n }\n\n public override str(): string {\n return serializeTime(this.typedValue);\n }\n}\n\nexport class DateLiteral extends Literal {\n public constructor(\n public override typedValue: IDateRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE, strValue);\n }\n\n public override str(): string {\n return serializeDate(this.typedValue);\n }\n}\n\nexport class DurationLiteral extends Literal> {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue);\n }\n}\n\nexport class DayTimeDurationLiteral extends DurationLiteral {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, strValue, dataType ?? TypeURL.XSD_DAY_TIME_DURATION);\n }\n}\n\nexport class YearMonthDurationLiteral extends Literal> {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_YEAR_MONTH_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue, 'P0M');\n }\n}\n\n/**\n * This class is used when a literal is parsed, and it's value is\n * an invalid lexical form for it's datatype. The spec defines value with\n * invalid lexical form are still valid terms, and as such we can not error\n * immediately. This class makes sure that the typedValue will remain undefined,\n * and the category 'nonlexical'. This way, only when operators apply to the\n * 'nonlexical' category, they will keep working, otherwise they will throw a\n * type error.\n * This seems to match the spec, except maybe for functions that accept\n * non-lexical values for their datatype.\n *\n * See:\n * - https://www.w3.org/TR/xquery/#dt-type-error\n * - https://www.w3.org/TR/rdf-concepts/#section-Literal-Value\n * - https://www.w3.org/TR/xquery/#dt-ebv\n * - ... some other more precise thing i can't find...\n */\nexport class NonLexicalLiteral extends Literal<{ toString: () => 'undefined' }> {\n public constructor(\n typedValue: undefined,\n dataType: string,\n private readonly openWorldType: ISuperTypeProvider,\n strValue?: string,\n language?: string,\n ) {\n super({ toString: () => 'undefined' }, dataType, strValue, language);\n }\n\n public override coerceEBV(): boolean {\n const isNumericOrBool =\n isSubTypeOf(this.dataType, TypeURL.XSD_BOOLEAN, this.openWorldType) ||\n isSubTypeOf(this.dataType, TypeAlias.SPARQL_NUMERIC, this.openWorldType);\n if (isNumericOrBool) {\n return false;\n }\n throw new Err.EBVCoercionError(this);\n }\n\n public override toRDF(): RDF.Literal {\n return DF.literal(\n this.str(),\n this.language ?? DF.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? '';\n }\n}\n\nexport function isNonLexicalLiteral(lit: Literal): NonLexicalLiteral | undefined {\n if (lit instanceof NonLexicalLiteral) {\n return lit;\n }\n return undefined;\n}\n","import type { VariableExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class Variable implements VariableExpression {\n public expressionType: ExpressionType.Variable = ExpressionType.Variable;\n public name: string;\n public constructor(name: string) {\n this.name = name;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport type * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport type { ISuperTypeProvider } from '../util/TypeHandling';\nimport type { ImplementationFunction, OverloadTree, FunctionArgumentsCache } from './OverloadTree';\n\nexport interface IEvalSharedContext extends ICompleteSharedContext {\n args: E.Expression[];\n mapping: RDF.Bindings;\n}\nexport interface IEvalContext extends IEvalSharedContext {\n bnode?: (input?: string) => BNode;\n evaluate: (expr: E.Expression, mapping: RDF.Bindings) => Term;\n}\n\nexport type EvalContextAsync = IEvalContext, Promise>;\nexport type EvalContextSync = IEvalContext;\n\n// ----------------------------------------------------------------------------\n// Overloaded Functions\n// ----------------------------------------------------------------------------\n\n// Function and operator arguments are 'flattened' in the SPARQL spec.\n// If the argument is a literal, the datatype often also matters.\nexport type ArgumentType = 'term' | E.TermType | C.TypeURL | C.TypeAlias;\n\nexport interface IOverloadedDefinition {\n arity: number | number[];\n overloads: OverloadTree;\n}\n\nexport abstract class BaseFunction {\n public arity: number | number[];\n private readonly overloads: OverloadTree;\n\n protected constructor(public operator: Operator, definition: IOverloadedDefinition) {\n this.arity = definition.arity;\n this.overloads = definition.overloads;\n }\n\n /**\n * A function application works by monomorphing the function to a specific\n * instance depending on the runtime types. We then just apply this function\n * to the args.\n */\n public apply = (args: E.TermExpression[], context: ICompleteSharedContext):\n E.TermExpression => {\n const concreteFunction =\n this.monomorph(args, context.superTypeProvider, context.functionArgumentsCache) ??\n this.handleInvalidTypes(args);\n return concreteFunction(context)(args);\n };\n\n protected abstract handleInvalidTypes(args: E.TermExpression[]): never;\n\n /**\n * We monomorph by checking the map of overloads for keys corresponding\n * to the runtime types. We start by checking for an implementation for the\n * most concrete types (integer, string, date, IRI), if we find none,\n * we consider their term types (literal, blank, IRI), and lastly we consider\n * all arguments as generic terms.\n *\n * Another option would be to populate the overloads with an implementation\n * for every concrete type when the function is generic over termtypes or\n * terms.\n */\n private monomorph(\n args: E.TermExpression[],\n superTypeProvider: ISuperTypeProvider,\n functionArgumentsCache: FunctionArgumentsCache,\n ): ImplementationFunction | undefined {\n return this.overloads.search(args, superTypeProvider, functionArgumentsCache);\n }\n}\n\n// Regular Functions ----------------------------------------------------------\n\n/**\n * Varying kinds of functions take arguments of different types on which the\n * specific behaviour is dependant. Although their behaviour is often varying,\n * it is always relatively simple, and better suited for synced behaviour.\n * The types of their arguments are always terms, but might differ in\n * their term-type (eg: iri, literal),\n * their specific literal type (eg: string, integer),\n * their arity (see BNODE),\n * or even their specific numeric type (eg: integer, float).\n *\n * Examples include:\n * - Arithmetic operations such as: *, -, /, +\n * - Bool operators such as: =, !=, <=, <, ...\n * - Functions such as: str, IRI\n *\n * See also: https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n * and https://www.w3.org/TR/sparql11-query/#OperatorMapping\n */\nexport class RegularFunction extends BaseFunction {\n protected functionClass = 'regular';\n\n public constructor(op: C.RegularOperator, definition: IOverloadedDefinition) {\n super(op, definition);\n }\n\n protected handleInvalidTypes(args: E.TermExpression[]): never {\n throw new Err.InvalidArgumentTypes(args, this.operator);\n }\n}\n\n// Named Functions ------------------------------------------------------------\nexport class NamedFunction extends BaseFunction {\n protected functionClass = 'named';\n\n public constructor(op: C.NamedOperator, definition: IOverloadedDefinition) {\n super(op, definition);\n }\n\n protected handleInvalidTypes(args: E.TermExpression[]): never {\n throw new Err.InvalidArgumentTypes(args, this.operator);\n }\n}\n\n// Special Functions ----------------------------------------------------------\n/**\n * Special Functions are those that don't really fit in sensible categories and\n * have extremely heterogeneous signatures that make them impossible to abstract\n * over. They are small in number, and their behaviour is often complex and open\n * for multiple correct implementations with different trade-offs.\n *\n * Due to their varying nature, they need all available information present\n * during evaluation. This reflects in the signature of the apply() method.\n *\n * They need access to an evaluator to be able to even implement their logic.\n * Especially relevant for IF, and the logical connectives.\n *\n * They can have both sync and async implementations, and both would make sense\n * in some contexts.\n */\nexport class SpecialFunction {\n public functionClass = 'special';\n public arity: number;\n public applySynchronously: E.SpecialApplicationSync;\n public applyAsync: E.SpecialApplicationAsync;\n public checkArity: (args: E.Expression[]) => boolean;\n\n public constructor(public operator: C.SpecialOperator, definition: ISpecialDefinition) {\n this.arity = definition.arity;\n this.applySynchronously = definition.applySynchronously;\n this.applyAsync = definition.applyAsync;\n this.checkArity = definition.checkArity ?? defaultArityCheck(this.arity);\n }\n}\n\nfunction defaultArityCheck(arity: number): (args: E.Expression[]) => boolean {\n return (args: E.Expression[]): boolean => {\n // Infinity is used to represent var-args, so it's always correct.\n if (arity === Number.POSITIVE_INFINITY) {\n return true;\n }\n\n return args.length === arity;\n };\n}\n\nexport interface ISpecialDefinition {\n arity: number;\n applyAsync: E.SpecialApplicationAsync;\n applySynchronously: E.SpecialApplicationSync;\n checkArity?: (args: E.Expression[]) => boolean;\n}\n","/**\n * These helpers provide a (albeit inflexible) DSL for writing function\n * definitions for the SPARQL functions.\n */\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type { Literal, TermExpression, Quad, ISerializable } from '../expressions';\nimport * as E from '../expressions';\nimport { NonLexicalLiteral } from '../expressions';\nimport * as C from '../util/Consts';\nimport { TypeURL } from '../util/Consts';\nimport type { IDateTimeRepresentation } from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport type { ArgumentType } from './Core';\nimport type { ImplementationFunction, ImplementationFunctionTuple } from './OverloadTree';\nimport { OverloadTree } from './OverloadTree';\n\ntype Term = E.TermExpression;\n\nconst DF = new DataFactory();\n\nexport function declare(identifier: string): Builder {\n return new Builder(identifier);\n}\n\nexport class Builder {\n private readonly overloadTree: OverloadTree;\n private collected: boolean;\n\n public constructor(identifier: string) {\n this.overloadTree = new OverloadTree(identifier);\n this.collected = false;\n }\n\n public collect(): OverloadTree {\n if (this.collected) {\n // Only 1 time allowed because we can't copy a tree. (And we don't need this).\n throw new Error('Builders can only be collected once!');\n }\n this.collected = true;\n return this.overloadTree;\n }\n\n private static wrapInvalidLexicalProtected(func: ImplementationFunction): ImplementationFunction {\n return (context: ICompleteSharedContext) => (args: TermExpression[]) => {\n for (const [ index, arg ] of args.entries()) {\n if (arg instanceof NonLexicalLiteral) {\n throw new Err.InvalidLexicalForm(args[index].toRDF());\n }\n }\n return func(context)(args);\n };\n }\n\n public set(\n argTypes: [],\n func: ImplementationFunctionTuple<[]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType],\n func: ImplementationFunctionTuple<[T1]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<\n T1 extends TermExpression,\n T2 extends TermExpression,\n T3 extends TermExpression,\n T4 extends TermExpression,\n >(\n argTypes: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3, T4]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling?: boolean): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling = true): Builder {\n this.overloadTree.addOverload(argTypes, addInvalidHandling ? Builder.wrapInvalidLexicalProtected(func) : func);\n return this;\n }\n\n public copy({ from, to }: { from: ArgumentType[]; to: ArgumentType[] }): Builder {\n const impl = this.overloadTree.getImplementationExact(from);\n if (!impl) {\n throw new Err.UnexpectedError(\n 'Tried to copy implementation, but types not found',\n { from, to },\n );\n }\n return this.set(to, impl);\n }\n\n public onUnary(type: ArgumentType, op: (context: ICompleteSharedContext) =>\n (val: T) => Term, addInvalidHandling = true): Builder {\n return this.set([ type ], context => ([ val ]: [T]) => op(context)(val), addInvalidHandling);\n }\n\n public onUnaryTyped(\n type: ArgumentType,\n op: (context: ICompleteSharedContext) => (val: T) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set([ type ], context => ([ val ]: [E.Literal]) => op(context)(val.typedValue), addInvalidHandling);\n }\n\n public onBinary(\n types: [ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ left, right ]: [L, R]) => op(context)(left, right), addInvalidHandling);\n }\n\n public onBinaryTyped(\n types: [ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n types,\n context => ([ left, right ]: [E.Literal, E.Literal]) => op(context)(left.typedValue, right.typedValue),\n addInvalidHandling,\n );\n }\n\n public onTernaryTyped(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext)\n => (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ a1, a2, a3 ]: [E.Literal, E.Literal, E.Literal]) =>\n op(context)(a1.typedValue, a2.typedValue, a3.typedValue), addInvalidHandling);\n }\n\n public onTernary(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ a1, a2, a3 ]: [A1, A2, A3]) => op(context)(a1, a2, a3), addInvalidHandling);\n }\n\n public onQuaternaryTyped<\n A1 extends ISerializable,\nA2 extends ISerializable,\nA3 extends ISerializable,\nA4 extends ISerializable,\n>(\n types: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (a1: A1, a2: A2, a3: A3, a4: A4) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context =>\n ([ a1, a2, a3, a4 ]: [E.Literal, E.Literal, E.Literal, E.Literal]) =>\n op(context)(a1.typedValue, a2.typedValue, a3.typedValue, a4.typedValue), addInvalidHandling);\n }\n\n public onTerm1(\n op: (context: ICompleteSharedContext) => (term: T) => Term,\naddInvalidHandling = false,\n ): Builder {\n return this.set(\n [ 'term' ],\n context => ([ term ]: [T]) => op(context)(term),\n addInvalidHandling,\n );\n }\n\n public onTerm3(op: (context: ICompleteSharedContext) => (t1: Term, t2: Term, t3: Term) => Term): Builder {\n return this.set(\n [ 'term', 'term', 'term' ],\n context => ([ t1, t2, t3 ]: [Term, Term, Term]) => op(context)(t1, t2, t3),\n );\n }\n\n public onQuad1(op: (context: ICompleteSharedContext) => (term: Term & Quad) => Term): Builder {\n return this.set([ 'quad' ], context => ([ term ]: [Term & Quad]) => op(context)(term));\n }\n\n public onLiteral1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ 'literal' ],\n context => ([ term ]: [E.Literal]) => op(context)(term),\n addInvalidHandling,\n );\n }\n\n public onBoolean1(\n op: (context: ICompleteSharedContext) => (lit: E.BooleanLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n context => ([ lit ]: [E.BooleanLiteral]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onBoolean1Typed(\n op: (context: ICompleteSharedContext) => (lit: boolean) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n context => ([ lit ]: [E.BooleanLiteral]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onString1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onString1Typed(\n op: (context: ICompleteSharedContext) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onLangString1(\n op: (context: ICompleteSharedContext) => (lit: E.LangStringLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.RDF_LANG_STRING ],\n context => ([ lit ]: [E.LangStringLiteral]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1Typed(\n op: (context: ICompleteSharedContext) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onNumeric1(\n op: (context: ICompleteSharedContext) => (val: E.NumericLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_NUMERIC ],\n context => ([ val ]: [E.NumericLiteral]) => op(context)(val),\n addInvalidHandling,\n );\n }\n\n public onDateTime1(\n op: (context: ICompleteSharedContext) => (date: E.DateTimeLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME ],\n context => ([ val ]: [E.DateTimeLiteral]) => op(context)(val),\n addInvalidHandling,\n );\n }\n\n /**\n * We return the base types and not the provided types because we don't want to create invalid terms.\n * Providing negative number to a function unary - for example should not\n * return a term of type negative number having a positive value.\n * @param op the numeric operator performed\n * @param addInvalidHandling whether to add invalid handling,\n * whether to add @param op in @see wrapInvalidLexicalProtected\n */\n public numericConverter(\n op: (context: ICompleteSharedContext) => (val: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (context: ICompleteSharedContext) => (arg: Term): number =>\n op(context)((>arg).typedValue);\n return this.onUnary(TypeURL.XSD_INTEGER, context => arg =>\n integer(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DECIMAL, context => arg =>\n decimal(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_FLOAT, context => arg =>\n float(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DOUBLE, context => arg =>\n double(evalHelper(context)(arg)), addInvalidHandling);\n }\n\n /**\n * !!! Be aware when using this function, it will create different overloads with different return types !!!\n * Arithmetic operators take 2 numeric arguments, and return a single numerical\n * value. The type of the return value is heavily dependent on the types of the\n * input arguments. In JS everything is a double, but in SPARQL it is not.\n *\n * The different arguments are handled by type promotion and subtype substitution.\n * The way numeric function arguments work is described here:\n * https://www.w3.org/TR/xpath20/#mapping\n * Above url is referenced in the sparql spec: https://www.w3.org/TR/sparql11-query/#OperatorMapping\n */\n public arithmetic(\n op: (context: ICompleteSharedContext) => (left: number, right: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (context: ICompleteSharedContext) => (left: Term, right: Term): number =>\n op(context)((>left).typedValue, (>right).typedValue);\n return this.onBinary([ TypeURL.XSD_INTEGER, TypeURL.XSD_INTEGER ], context => (left, right) =>\n integer(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DECIMAL, TypeURL.XSD_DECIMAL ], context => (left, right) =>\n decimal(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_FLOAT, TypeURL.XSD_FLOAT ], context => (left, right) =>\n float(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DOUBLE, TypeURL.XSD_DOUBLE ], context => (left, right) =>\n double(evalHelper(context)(left, right)), addInvalidHandling);\n }\n\n public numberTest(test: (context: ICompleteSharedContext) => (left: number, right: number) => boolean): Builder {\n return this.numeric(context => ([ left, right ]: E.NumericLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n });\n }\n\n public stringTest(\n test: (context: ICompleteSharedContext) => (left: string, right: string) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_STRING, C.TypeURL.XSD_STRING ],\n context => ([ left, right ]: E.StringLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public booleanTest(\n test: (context: ICompleteSharedContext) => (left: boolean, right: boolean) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_BOOLEAN, C.TypeURL.XSD_BOOLEAN ],\n context => ([ left, right ]: E.BooleanLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public dateTimeTest(test: (context: ICompleteSharedContext)\n => (left: IDateTimeRepresentation, right: IDateTimeRepresentation) => boolean, addInvalidHandling = true): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME, C.TypeURL.XSD_DATE_TIME ],\n context => ([ left, right ]: E.DateTimeLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public numeric(op: ImplementationFunctionTuple<[T, T]>): Builder {\n return this.set([ C.TypeAlias.SPARQL_NUMERIC, C.TypeAlias.SPARQL_NUMERIC ], op);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Literal Construction helpers\n// ----------------------------------------------------------------------------\n\nexport function bool(val: boolean): E.BooleanLiteral {\n return new E.BooleanLiteral(val);\n}\n\nexport function integer(num: number): E.IntegerLiteral {\n return new E.IntegerLiteral(num);\n}\n\nexport function decimal(num: number): E.DecimalLiteral {\n return new E.DecimalLiteral(num);\n}\n\nexport function float(num: number): E.FloatLiteral {\n return new E.FloatLiteral(num);\n}\n\nexport function double(num: number): E.DoubleLiteral {\n return new E.DoubleLiteral(num);\n}\n\nexport function string(str: string): E.StringLiteral {\n return new E.StringLiteral(str);\n}\n\nexport function langString(str: string, lang: string): E.LangStringLiteral {\n return new E.LangStringLiteral(str, lang);\n}\n\nexport function dateTime(date: IDateTimeRepresentation, str: string): E.DateTimeLiteral {\n return new E.DateTimeLiteral(date, str);\n}\n\nexport function expressionToVar(variableExpression: E.VariableExpression): RDF.Variable {\n return DF.variable(variableExpression.name.slice(1));\n}\n","import type { DateLiteral, DateTimeLiteral, TimeLiteral } from '../expressions';\nimport * as E from '../expressions';\nimport { DurationLiteral } from '../expressions';\nimport type * as C from '../util/Consts';\nimport { TypeURL } from '../util/Consts';\nimport { trimToDayTimeDuration, trimToYearMonthDuration } from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport {\n parseDate,\n parseDateTime,\n parseDayTimeDuration,\n parseDuration,\n parseTime,\n parseYearMonthDuration,\n parseXSDDecimal,\n parseXSDFloat,\n parseXSDInteger,\n} from '../util/Parsing';\n\nimport type { IOverloadedDefinition } from './Core';\nimport { bool, dateTime, decimal, declare, double, float, integer, string } from './Helpers';\n\ntype Term = E.TermExpression;\n\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// Begin definitions.\n\n// ----------------------------------------------------------------------------\n// XPath Constructor functions\n// https://www.w3.org/TR/sparql11-query/#\n// https://www.w3.org/TR/xpath-functions/#casting-from-primitive-to-primitive\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/xpath-functions/#casting-to-string\n */\nconst xsdToString = {\n arity: 1,\n overloads: declare(TypeURL.XSD_STRING)\n .onNumeric1(() => (val: E.NumericLiteral) => string(float(val.typedValue).str()))\n .onBoolean1Typed(() => val => string(bool(val).str()))\n .onTerm1(() => (val: E.StringLiteral) => string(val.str()))\n .collect(),\n};\n\nconst xsdToFloat = {\n arity: 1,\n overloads: declare(TypeURL.XSD_FLOAT)\n .onNumeric1(() => (val: E.NumericLiteral) => float(val.typedValue))\n .onBoolean1Typed(() => val => float(val ? 1 : 0))\n .onUnary(TypeURL.XSD_STRING, () => (val: E.StringLiteral) => {\n const result = parseXSDFloat(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_FLOAT);\n }\n return float(result);\n }, false)\n .collect(),\n};\n\nconst xsdToDouble = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DOUBLE)\n .onNumeric1(() => (val: E.NumericLiteral) => double(val.typedValue))\n .onBoolean1Typed(() => val => double(val ? 1 : 0))\n .onUnary(TypeURL.XSD_STRING, () => (val: E.Term) => {\n const result = parseXSDFloat(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DOUBLE);\n }\n return double(result);\n }, false)\n .collect(),\n};\n\nconst xsdToDecimal = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DECIMAL)\n .onNumeric1(() => (val: E.Term) => {\n const result = parseXSDDecimal(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DECIMAL);\n }\n return decimal(result);\n })\n .onString1(() => (val: E.Term) => {\n const str = val.str();\n const result = /^([+-])?(\\d+(\\.\\d+)?)$/u.test(str) ? parseXSDDecimal(str) : undefined;\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DECIMAL);\n }\n return decimal(result);\n }, false)\n .onBoolean1Typed(() => val => decimal(val ? 1 : 0))\n .collect(),\n};\n\nconst xsdToInteger = {\n arity: 1,\n overloads: declare(TypeURL.XSD_INTEGER)\n .onBoolean1Typed(() => val => integer(val ? 1 : 0))\n .onNumeric1(() => (val: E.Term) => {\n const result = parseXSDInteger(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_INTEGER);\n }\n return integer(result);\n }, false)\n .onString1(() => (val: E.Term) => {\n const str = val.str();\n const result = /^\\d+$/u.test(str) ? parseXSDInteger(str) : undefined;\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_INTEGER);\n }\n return integer(result);\n })\n .collect(),\n};\n\nconst xsdToDatetime = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DATE_TIME)\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: E.DateTimeLiteral) => val)\n .onUnary(TypeURL.XSD_STRING, () => (val: Term) =>\n dateTime(parseDateTime(val.str()), val.str()), false)\n .onUnary(TypeURL.XSD_DATE, () => (val: E.DateLiteral) =>\n new E.DateTimeLiteral({ ...val.typedValue, hours: 0, minutes: 0, seconds: 0 }))\n .collect(),\n};\n\nconst xsdToBoolean = {\n arity: 1,\n overloads: declare(TypeURL.XSD_BOOLEAN)\n .onNumeric1(() => (val: E.NumericLiteral) => bool(val.coerceEBV()), true)\n .onUnary(TypeURL.XSD_BOOLEAN, () => (val: Term) => bool(val.coerceEBV()), true)\n .onUnary(TypeURL.XSD_STRING, () => (val: Term) => {\n switch (val.str()) {\n case 'true':\n return bool(true);\n case 'false':\n return bool(false);\n case '1':\n return bool(true);\n case '0':\n return bool(false);\n default:\n throw new Err.CastError(val, TypeURL.XSD_BOOLEAN);\n }\n }, false)\n .collect(),\n};\n\n// End definitions.\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n\n// Additional definitions to implement https://github.com/w3c/sparql-12/blob/main/SEP/SEP-0002/sep-0002.md\n// The additional casts are listed in https://www.w3.org/TR/xpath-functions/#casting-from-primitive-to-primitive\nconst xsdToTime = {\n arity: 1,\n overloads: declare(TypeURL.XSD_TIME)\n .onUnary(TypeURL.XSD_TIME, () => (val: TimeLiteral) => new E.TimeLiteral(val.typedValue, val.strValue))\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: DateTimeLiteral) =>\n new E.TimeLiteral(val.typedValue))\n .onStringly1(() => (val: Term) => new E.TimeLiteral(parseTime(val.str())))\n .collect(),\n};\n\nconst xsdToDate = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DATE)\n .onUnary(TypeURL.XSD_DATE, () => (val: DateLiteral) => new E.DateLiteral(val.typedValue, val.strValue))\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: DateTimeLiteral) =>\n new E.DateLiteral(val.typedValue))\n .onStringly1(() => (val: E.Term) => new E.DateLiteral(parseDate(val.str())))\n .collect(),\n};\n\nconst xsdToDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.DurationLiteral(val.typedValue, val.strValue))\n .onStringly1(() => (val: Term) =>\n new DurationLiteral(parseDuration(val.str())))\n .collect(),\n};\n\nconst xsdToDayTimeDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DAY_TIME_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.DayTimeDurationLiteral(trimToDayTimeDuration(val.typedValue)))\n .onStringly1(() => (val: Term) =>\n new E.DayTimeDurationLiteral(parseDayTimeDuration(val.str())))\n .collect(),\n};\n\nconst xsdToYearMonthDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_YEAR_MONTH_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.YearMonthDurationLiteral(trimToYearMonthDuration(val.typedValue)))\n .onStringly1(() => (val: Term) =>\n new E.YearMonthDurationLiteral(parseYearMonthDuration(val.str())))\n .collect(),\n};\n\nexport const namedDefinitions: Record = {\n // --------------------------------------------------------------------------\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // --------------------------------------------------------------------------\n [TypeURL.XSD_STRING]: xsdToString,\n [TypeURL.XSD_FLOAT]: xsdToFloat,\n [TypeURL.XSD_DOUBLE]: xsdToDouble,\n [TypeURL.XSD_DECIMAL]: xsdToDecimal,\n [TypeURL.XSD_INTEGER]: xsdToInteger,\n [TypeURL.XSD_DATE_TIME]: xsdToDatetime,\n [TypeURL.XSD_DATE]: xsdToDate,\n [TypeURL.XSD_BOOLEAN]: xsdToBoolean,\n [TypeURL.XSD_TIME]: xsdToTime,\n [TypeURL.XSD_DURATION]: xsdToDuration,\n [TypeURL.XSD_DAY_TIME_DURATION]: xsdToDayTimeDuration,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: xsdToYearMonthDuration,\n};\n","import type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport { isLiteralTermExpression, TermExpression } from '../expressions';\nimport type { KnownLiteralTypes } from '../util/Consts';\nimport type { GeneralSuperTypeDict, ISuperTypeProvider, OverrideType } from '../util/TypeHandling';\nimport {\n asGeneralType,\n asKnownLiteralType,\n asOverrideType,\n getSuperTypes,\n superTypeDictTable,\n typePromotion,\n} from '../util/TypeHandling';\nimport type { ArgumentType } from './Core';\n\nexport type SearchStack = OverloadTree[];\nexport type ImplementationFunction = (sharedContext: ICompleteSharedContext) => E.SimpleApplication;\nexport type ImplementationFunctionTuple = (sharedContext: ICompleteSharedContext) => E.SimpleApplicationTuple;\ninterface IFunctionArgumentsCacheObj {\n func?: ImplementationFunction;\n cache?: FunctionArgumentsCache;\n}\nexport type FunctionArgumentsCache = Record;\n/**\n * Maps argument types on their specific implementation in a tree like structure.\n * When adding any functionality to this class, make sure you add it to SpecialFunctions as well.\n */\nexport class OverloadTree {\n private implementation?: ImplementationFunction | undefined;\n // We need this field. e.g. decimal decimal should be kept even when double double is added.\n // We use promotion count to check priority.\n private promotionCount?: number | undefined;\n private readonly generalOverloads: Record<'term' | E.TermType, OverloadTree>;\n private readonly literalOverLoads: [OverrideType, OverloadTree][];\n private readonly depth: number;\n\n public constructor(private readonly identifier: string, depth?: number) {\n this.implementation = undefined;\n this.generalOverloads = Object.create(null);\n this.literalOverLoads = [];\n this.depth = depth ?? 0;\n this.promotionCount = undefined;\n }\n\n private getSubtree(overrideType: ArgumentType): OverloadTree | undefined {\n const generalType = asGeneralType(overrideType);\n if (generalType) {\n return this.generalOverloads[generalType];\n }\n for (const [ type, overloadTree ] of this.literalOverLoads) {\n if (overrideType === type) {\n return overloadTree;\n }\n }\n return undefined;\n }\n\n /**\n * Get the implementation for the types that exactly match @param args .\n */\n public getImplementationExact(args: ArgumentType[]): ImplementationFunction | undefined {\n // eslint-disable-next-line ts/no-this-alias\n let node: OverloadTree | undefined = this;\n for (const expression of args) {\n node = node.getSubtree(expression);\n if (!node) {\n return undefined;\n }\n }\n return node.implementation;\n }\n\n /**\n * Searches in a depth first way for the best matching overload. considering this a the tree's root.\n * @param args the arguments to the function.\n * @param superTypeProvider\n * @param functionArgumentsCache\n */\n public search(\n args: E.TermExpression[],\n superTypeProvider: ISuperTypeProvider,\n functionArgumentsCache: FunctionArgumentsCache,\n ):\n ImplementationFunction | undefined {\n let cacheIter: IFunctionArgumentsCacheObj | undefined = functionArgumentsCache[this.identifier];\n let searchIndex = 0;\n while (searchIndex < args.length && cacheIter?.cache) {\n const term = args[searchIndex];\n const literalExpression = isLiteralTermExpression(term);\n cacheIter = cacheIter.cache[literalExpression ? literalExpression.dataType : term.termType];\n searchIndex++;\n }\n if (searchIndex === args.length && cacheIter?.func) {\n return cacheIter.func;\n }\n\n // SearchStack is a stack of all node's that need to be checked for implementation.\n // It provides an easy way to keep order in our search.\n const searchStack: { node: OverloadTree; index: number }[] = [];\n const startIndex = 0;\n if (args.length === 0) {\n return this.implementation;\n }\n // GetSubTreeWithArg return a SearchStack containing the node's that should be contacted next.\n // We also log the index since there is no other way to remember this index.\n // the provided stack should be pushed on top of our search stack since it also has it's order.\n searchStack.push(...this.getSubTreeWithArg(args[startIndex], superTypeProvider).map(node =>\n ({ node, index: startIndex + 1 })));\n while (searchStack.length > 0) {\n const { index, node } = <{ node: OverloadTree; index: number }>searchStack.pop();\n // We check the implementation because it would be possible a path is created but not implemented.\n // ex: f(double, double, double) and f(term, term). and calling f(double, double).\n if (index === args.length && node.implementation) {\n this.addToCache(functionArgumentsCache, args, node.implementation);\n return node.implementation;\n }\n searchStack.push(...node.getSubTreeWithArg(args[index], superTypeProvider).map(item =>\n ({ node: item, index: index + 1 })));\n }\n // Calling a function with one argument but finding no implementation should return no implementation.\n // Not even the one with no arguments.\n return undefined;\n }\n\n private addToCache(\n functionArgumentsCache: FunctionArgumentsCache,\n args: E.TermExpression[],\n func?: ImplementationFunction | undefined,\n ): void {\n function getDefault(lruCache: FunctionArgumentsCache, key: string): IFunctionArgumentsCacheObj {\n if (!(key in lruCache)) {\n lruCache[key] = {};\n }\n return lruCache[key];\n }\n let cache = getDefault(functionArgumentsCache, this.identifier);\n for (const term of args) {\n const literalExpression = isLiteralTermExpression(term);\n const key = literalExpression ? literalExpression.dataType : term.termType;\n cache.cache = cache.cache ?? {};\n cache = getDefault(cache.cache, key);\n }\n cache.func = func;\n }\n\n /**\n * Adds an overload to the tree structure considering this as the tree's root.\n * @param argumentTypes a list of argumentTypes that would need to be provided in\n * the same order to get the implementation.\n * @param func the implementation for this overload.\n */\n public addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction): void {\n this._addOverload([ ...argumentTypes ], func, 0);\n }\n\n private _addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction, promotionCount: number): void {\n const [ argumentType, ..._argumentTypes ] = argumentTypes;\n if (!argumentType) {\n if (this.promotionCount === undefined || promotionCount <= this.promotionCount) {\n this.promotionCount = promotionCount;\n this.implementation = func;\n }\n return;\n }\n let nextTree = this.getSubtree(argumentType);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n const generalType = asGeneralType(argumentType);\n if (generalType) {\n this.generalOverloads[generalType] = newNode;\n }\n const overrideType = asOverrideType(argumentType);\n if (overrideType) {\n this.literalOverLoads.push([ overrideType, newNode ]);\n }\n nextTree = newNode;\n }\n nextTree._addOverload(_argumentTypes, func, promotionCount);\n\n if (typePromotion[argumentType]) {\n for (const ret of typePromotion[argumentType]!) {\n this.addPromotedOverload(\n ret.typeToPromote,\n func,\n ret.conversionFunction,\n _argumentTypes,\n promotionCount,\n );\n }\n }\n }\n\n private addPromotedOverload(\n typeToPromote: OverrideType,\n func: ImplementationFunction,\n conversionFunction: (arg: E.TermExpression) => E.TermExpression,\n argumentTypes: ArgumentType[],\n promotionCount: number,\n ): void {\n let nextTree = this.getSubtree(typeToPromote);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n this.literalOverLoads.push([ typeToPromote, newNode ]);\n nextTree = newNode;\n }\n nextTree._addOverload(argumentTypes, funcConf => args => func(funcConf)([\n ...args.slice(0, this.depth),\n conversionFunction(args[this.depth]),\n ...args.slice(this.depth + 1, args.length),\n ]), promotionCount + 1);\n }\n\n /**\n * @param arg term to try and match to possible overloads of this node.\n * @param openWorldType interface allowing to discover relations between types.\n * @returns SearchStack a stack with top element the next node that should be asked for implementation or overload.\n */\n private getSubTreeWithArg(arg: E.TermExpression, openWorldType: ISuperTypeProvider): SearchStack {\n const res: SearchStack = [];\n const literalExpression = isLiteralTermExpression(arg);\n // These types refer to Type exported by lib/util/Consts.ts\n if (this.generalOverloads.term) {\n res.push(this.generalOverloads.term);\n }\n // TermTypes are defined in E.TermType.\n if (this.generalOverloads[arg.termType]) {\n res.push(this.generalOverloads[arg.termType]);\n }\n if (literalExpression) {\n // Defending implementation. Mainly the scary sort.\n // This function has cost O(n) + O(m * log(m)) with n = amount of overloads and m = amount of matched overloads\n // We map over each of the overloads, filter only the once that can be used (this is normally 1 or 2).\n // The sort function on an array with 1 or 2 arguments will be negligible.\n const concreteType = asKnownLiteralType(literalExpression.dataType);\n let subExtensionTable: GeneralSuperTypeDict;\n if (concreteType) {\n // Concrete dataType is known by expression-evaluator.\n subExtensionTable = superTypeDictTable[concreteType];\n } else {\n // Datatype is a custom datatype\n subExtensionTable = getSuperTypes(literalExpression.dataType, openWorldType);\n }\n const matches: [number, OverloadTree][] = this.literalOverLoads.filter(([ matchType, _ ]) =>\n matchType in subExtensionTable)\n .map(([ matchType, tree ]) => [ subExtensionTable[ matchType], tree ]);\n // eslint-disable-next-line unused-imports/no-unused-vars\n matches.sort(([ prioA, matchTypeA ], [ prioB, matchTypeB ]) => prioA - prioB);\n res.push(...matches.map(([ _, sortedType ]) => sortedType));\n }\n return res;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { BigNumber } from 'bignumber.js';\nimport { sha1, sha256, sha384, sha512 } from 'hash.js';\nimport { DataFactory } from 'rdf-data-factory';\nimport { resolve as resolveRelativeIri } from 'relative-to-absolute-iri';\nimport { hash as md5 } from 'spark-md5';\nimport * as uuid from 'uuid';\n\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport * as E from '../expressions';\nimport type { Quad } from '../expressions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from '../util/Consts';\nimport { RegularOperator, TypeAlias, TypeURL } from '../util/Consts';\nimport type { IDayTimeDurationRepresentation } from '../util/DateTimeHelpers';\nimport {\n dayTimeDurationsToSeconds,\n defaultedDateTimeRepresentation,\n defaultedDayTimeDurationRepresentation,\n defaultedDurationRepresentation,\n defaultedYearMonthDurationRepresentation,\n extractRawTimeZone,\n negateDuration,\n toDateTimeRepresentation,\n toUTCDate,\n yearMonthDurationsToMonths,\n} from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport { orderTypes } from '../util/Ordering';\nimport { addDurationToDateTime, elapsedDuration } from '../util/SpecAlgos';\nimport type { IOverloadedDefinition } from './Core';\nimport { RegularFunction } from './Core';\nimport { bool, decimal, declare, double, integer, langString, string } from './Helpers';\nimport * as X from './XPathFunctions';\nimport { regularFunctions } from '.';\n\nconst DF = new DataFactory();\n\ntype Term = E.TermExpression;\n\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// Begin definitions\n\n// ----------------------------------------------------------------------------\n// Operator Mapping\n// https://www.w3.org/TR/sparql11-query/#OperatorMapping\n// ----------------------------------------------------------------------------\n\nconst not = {\n arity: 1,\n overloads: declare(C.RegularOperator.NOT)\n .onTerm1(() => val => bool(!val.coerceEBV()))\n .collect(),\n};\n\nconst unaryPlus = {\n arity: 1,\n overloads: declare(C.RegularOperator.UPLUS)\n .numericConverter(() => val => val)\n .collect(),\n};\n\nconst unaryMinus = {\n arity: 1,\n overloads: declare(C.RegularOperator.UMINUS)\n .numericConverter(() => val => -val)\n .collect(),\n};\n\nconst multiplication = {\n arity: 2,\n overloads: declare(C.RegularOperator.MULTIPLICATION)\n .arithmetic(() => (left, right) => new BigNumber(left).times(right).toNumber())\n .collect(),\n};\n\nconst division = {\n arity: 2,\n overloads: declare(C.RegularOperator.DIVISION)\n .arithmetic(() => (left, right) => new BigNumber(left).div(right).toNumber())\n .onBinaryTyped(\n [ TypeURL.XSD_INTEGER, TypeURL.XSD_INTEGER ],\n () => (left: number, right: number) => {\n if (right === 0) {\n throw new Err.ExpressionError('Integer division by 0');\n }\n return decimal(new BigNumber(left).div(right).toNumber());\n },\n )\n .collect(),\n};\n\nconst addition = {\n arity: 2,\n overloads: declare(C.RegularOperator.ADDITION)\n .arithmetic(() => (left, right) => new BigNumber(left).plus(right).toNumber())\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateTimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-dateTime\n new E.DateTimeLiteral(addDurationToDateTime(date.typedValue, defaultedDurationRepresentation(dur.typedValue))))\n .copy({\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [E.DateLiteral, E.DurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-date\n new E.DateLiteral(\n addDurationToDateTime(\n defaultedDateTimeRepresentation(date.typedValue),\n defaultedDurationRepresentation(dur.typedValue),\n ),\n ))\n .copy({\n from: [ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ time, dur ]: [E.TimeLiteral, E.DurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-time\n new E.TimeLiteral(\n addDurationToDateTime(\n defaultedDateTimeRepresentation(time.typedValue),\n defaultedDurationRepresentation(dur.typedValue),\n ),\n ))\n .copy({\n from: [ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .collect(),\n};\n\nconst subtraction = {\n arity: 2,\n overloads: declare(C.RegularOperator.SUBTRACTION)\n .arithmetic(() => (left, right) => new BigNumber(left).minus(right).toNumber())\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], ({ defaultTimeZone }) =>\n ([ date1, date2 ]: [ E.DateTimeLiteral, E.DateTimeLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dateTimes;\n new E.DayTimeDurationLiteral(elapsedDuration(date1.typedValue, date2.typedValue, defaultTimeZone)))\n .copy({ from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME, TypeURL.XSD_TIME ]})\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateTimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-dateTime\n new E.DateTimeLiteral(addDurationToDateTime(\n date.typedValue,\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .copy({\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-date\n new E.DateLiteral(addDurationToDateTime(\n defaultedDateTimeRepresentation(date.typedValue),\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .copy({\n from: [ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ time, dur ]: [ E.TimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-date\n new E.TimeLiteral(addDurationToDateTime(\n defaultedDateTimeRepresentation(time.typedValue),\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .collect(),\n};\n\n// https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal\nconst equality = {\n arity: 2,\n overloads: declare(C.RegularOperator.EQUAL)\n .numberTest(() => (left, right) => left === right)\n .stringTest(() => (left, right) => left.localeCompare(right) === 0)\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => ([ left, right ]: E.LangStringLiteral[]) => bool(left.str() === right.str() &&\n left.language === right.language),\n )\n // Fall through: a TypeURL.XSD_STRING is never equal to a TypeURL.RDF_LANG_STRING.\n .set([ TypeAlias.SPARQL_STRINGLY, TypeAlias.SPARQL_STRINGLY ], () => () => bool(false))\n .booleanTest(() => (left, right) => left === right)\n .dateTimeTest(({ defaultTimeZone }) => (left, right) =>\n toUTCDate(left, defaultTimeZone).getTime() === toUTCDate(right, defaultTimeZone).getTime())\n .copy({\n // https://www.w3.org/TR/xpath-functions/#func-date-equal\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ],\n })\n .set(\n [ 'quad', 'quad' ],\n context => ([ left, right ]) => {\n const op: RegularFunction = new RegularFunction(RegularOperator.EQUAL, equality);\n return bool(\n ( op.apply([ ( left).subject, ( right).subject ], context)).coerceEBV() &&\n ( op.apply([ ( left).predicate, ( right).predicate ], context)).coerceEBV() &&\n ( op.apply([ ( left).object, ( right).object ], context)).coerceEBV(),\n );\n },\n false,\n )\n .set(\n [ 'term', 'term' ],\n () => ([ left, right ]) => bool(RDFTermEqual(left, right)),\n false,\n )\n .set([ TypeURL.XSD_DURATION, TypeURL.XSD_DURATION ], () =>\n ([ dur1, dur2 ]: [ E.DurationLiteral, E.DurationLiteral ]) =>\n bool(yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur1.typedValue)) ===\n yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur2.typedValue)) &&\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur1.typedValue)) ===\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur2.typedValue))))\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_TIME ], ({ defaultTimeZone }) =>\n ([ time1, time2 ]: [E.TimeLiteral, E.TimeLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-time-equal\n bool(toUTCDate(defaultedDateTimeRepresentation(time1.typedValue), defaultTimeZone).getTime() ===\n toUTCDate(defaultedDateTimeRepresentation(time2.typedValue), defaultTimeZone).getTime()))\n .collect(),\n};\n\nfunction RDFTermEqual(_left: Term, _right: Term): boolean {\n const left = _left.toRDF();\n const right = _right.toRDF();\n const val = left.equals(right);\n if (!val && (left.termType === 'Literal') && (right.termType === 'Literal')) {\n throw new Err.RDFEqualTypeError([ _left, _right ]);\n }\n return val;\n}\n\nconst inequality = {\n arity: 2,\n overloads: declare(C.RegularOperator.NOT_EQUAL)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n bool(!( regularFunctions[C.RegularOperator.EQUAL]\n .apply([ first, second ], context)).typedValue))\n .collect(),\n};\n\nconst lesserThan = {\n arity: 2,\n overloads: declare(C.RegularOperator.LT)\n .numberTest(() => (left, right) => left < right)\n .stringTest(() => (left, right) => left.localeCompare(right) === -1)\n .booleanTest(() => (left, right) => left < right)\n .set(\n [ 'quad', 'quad' ],\n () => ([ left, right ]) => bool(orderTypes(left.toRDF(), right.toRDF(), true) === -1),\n false,\n )\n .dateTimeTest(({ defaultTimeZone }) => (left, right) =>\n toUTCDate(left, defaultTimeZone).getTime() < toUTCDate(right, defaultTimeZone).getTime())\n .copy({\n // https://www.w3.org/TR/xpath-functions/#func-date-less-than\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ],\n })\n .set([ TypeURL.XSD_YEAR_MONTH_DURATION, TypeURL.XSD_YEAR_MONTH_DURATION ], () =>\n ([ dur1L, dur2L ]: [E.YearMonthDurationLiteral, E.YearMonthDurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-yearMonthDuration-less-than\n bool(yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur1L.typedValue)) <\n yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur2L.typedValue))))\n .set([ TypeURL.XSD_DAY_TIME_DURATION, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ dur1, dur2 ]: [E.DayTimeDurationLiteral, E.DayTimeDurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-dayTimeDuration-greater-than\n bool(dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur1.typedValue)) <\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur2.typedValue))))\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_TIME ], ({ defaultTimeZone }) =>\n ([ time1, time2 ]: [E.TimeLiteral, E.TimeLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-time-less-than\n bool(toUTCDate(defaultedDateTimeRepresentation(time1.typedValue), defaultTimeZone).getTime() <\n toUTCDate(defaultedDateTimeRepresentation(time2.typedValue), defaultTimeZone).getTime()))\n .collect(),\n};\n\nconst greaterThan = {\n arity: 2,\n overloads: declare(C.RegularOperator.GT)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X < Y -> Y > X\n regularFunctions[C.RegularOperator.LT].apply([ second, first ], context))\n .collect(),\n};\n\nconst lesserThanEqual = {\n arity: 2,\n overloads: declare(C.RegularOperator.LTE)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X <= Y -> X < Y || X = Y\n // First check if the first is lesser than the second, then check if they are equal.\n // Doing this, the correct error will be thrown, each type that has a lesserThanEqual has a matching lesserThan.\n bool(\n ( regularFunctions[C.RegularOperator.LT].apply([ first, second ], context)).typedValue ||\n ( regularFunctions[C.RegularOperator.EQUAL].apply([ first, second ], context)).typedValue,\n ))\n .collect(),\n};\n\nconst greaterThanEqual = {\n arity: 2,\n overloads: declare(C.RegularOperator.GTE)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X >= Y -> Y <= X\n regularFunctions[C.RegularOperator.LTE].apply([ second, first ], context))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on RDF Terms\n// https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isIRI\n */\nconst isIRI = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_IRI)\n .onTerm1(() => term => bool(term.termType === 'namedNode'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isBlank\n */\nconst isBlank = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_BLANK)\n .onTerm1(() => term => bool(term.termType === 'blankNode'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isLiteral\n */\nconst isLiteral = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_LITERAL)\n .onTerm1(() => term => bool(term.termType === 'literal'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isNumeric\n */\nconst isNumeric = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_NUMERIC)\n .onNumeric1(() => () => bool(true))\n .onTerm1(() => () => bool(false))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-str\n */\nconst STR = {\n arity: 1,\n overloads: declare(C.RegularOperator.STR)\n .onTerm1(() => term => string(term.str()))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-lang\n */\nconst lang = {\n arity: 1,\n overloads: declare(C.RegularOperator.LANG)\n .onLiteral1(() => lit => string(lit.language ?? ''))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-datatype\n */\nconst datatype = {\n arity: 1,\n overloads: declare(C.RegularOperator.DATATYPE)\n .onLiteral1(() => lit => new E.NamedNode(lit.dataType))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-iri\n */\nconst IRI = {\n arity: 1,\n overloads: declare(C.RegularOperator.IRI)\n .set([ 'namedNode' ], context => (args) => {\n const lit = args[0];\n const iri = resolveRelativeIri(lit.str(), context.baseIRI ?? '');\n return new E.NamedNode(iri);\n })\n .onString1(context => (lit) => {\n const iri = resolveRelativeIri(lit.str(), context.baseIRI ?? '');\n return new E.NamedNode(iri);\n })\n .collect(),\n};\n\n// See special functions\n// const BNODE = {};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strdt\n */\nconst STRDT = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRDT).set(\n [ TypeURL.XSD_STRING, 'namedNode' ],\n ({ superTypeProvider }) => ([ str, iri ]: [E.StringLiteral, E.NamedNode]) => {\n const lit = DF.literal(str.typedValue, DF.namedNode(iri.value));\n return new TermTransformer(superTypeProvider).transformLiteral(lit);\n },\n ).collect(),\n};\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strlang\n */\nconst STRLANG = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRLANG)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (val: string, language: string) => new E.LangStringLiteral(val, language.toLowerCase()),\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-uuid\n */\nconst UUID = {\n arity: 0,\n overloads: declare(C.RegularOperator.UUID)\n .set([], () => () => new E.NamedNode(`urn:uuid:${uuid.v4()}`))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-struuid\n */\nconst STRUUID = {\n arity: 0,\n overloads: declare(C.RegularOperator.STRUUID)\n .set([], () => () => string(uuid.v4()))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on strings\n// https://www.w3.org/TR/sparql11-query/#func-forms\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strlen\n */\nconst STRLEN = {\n arity: 1,\n overloads: declare(C.RegularOperator.STRLEN)\n .onStringly1(() => str => integer([ ...str.typedValue ].length))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-substr\n */\nconst SUBSTR = {\n arity: [ 2, 3 ],\n overloads: declare(C.RegularOperator.SUBSTR)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_INTEGER ],\n () => (source: string, startingLoc: number) => string([ ...source ].slice(startingLoc - 1).join('')),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_INTEGER ],\n () => (source: E.LangStringLiteral, startingLoc: E.NumericLiteral) => {\n const sub = [ ...source.typedValue ].slice(startingLoc.typedValue - 1).join('');\n return langString(sub, source.language);\n },\n )\n .onTernaryTyped([\n TypeURL.XSD_STRING,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_INTEGER,\n ], () => (source: string, startingLoc: number, length: number) =>\n string([ ...source ].slice(startingLoc - 1, length + startingLoc - 1).join('')))\n .onTernary([\n TypeURL.RDF_LANG_STRING,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_INTEGER,\n ], () => (source: E.LangStringLiteral, startingLoc: E.NumericLiteral, length: E.NumericLiteral) => {\n const sub = [ ...source.typedValue ]\n .slice(startingLoc.typedValue - 1, length.typedValue + startingLoc.typedValue - 1).join('');\n return langString(sub, source.language);\n })\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-ucase\n */\nconst UCASE = {\n arity: 1,\n overloads: declare(C.RegularOperator.UCASE)\n .onString1Typed(() => lit => string(lit.toUpperCase()))\n .onLangString1(() => lit => langString(lit.typedValue.toUpperCase(), lit.language))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-lcase\n */\nconst LCASE = {\n arity: 1,\n overloads: declare(C.RegularOperator.LCASE)\n .onString1Typed(() => lit => string(lit.toLowerCase()))\n .onLangString1(() => lit => langString(lit.typedValue.toLowerCase(), lit.language))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strstarts\n * for this and the following functions you'll see (string, langstring) is not allowed. This behaviour is defined in:\n * https://www.w3.org/TR/sparql11-query/#func-arg-compatibility\n */\nconst STRSTARTS = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRSTARTS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.startsWith(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.startsWith(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strends\n */\nconst STRENDS = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRENDS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.endsWith(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.endsWith(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-contains\n */\nconst CONTAINS = {\n arity: 2,\n overloads: declare(C.RegularOperator.CONTAINS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.includes(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.includes(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strbefore\n */\nconst STRBEFORE = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRBEFORE)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => string(arg1.slice(0, Math.max(0, arg1.indexOf(arg2)))),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.StringLiteral) => {\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = arg1.typedValue.slice(0, Math.max(0, a1.indexOf(a2)));\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = arg1.typedValue.slice(0, Math.max(0, a1.indexOf(a2)));\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strafter\n */\nconst STRAFTER = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRAFTER)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => string(arg1.slice(arg1.indexOf(arg2)).slice(arg2.length)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.StringLiteral) => {\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = a1.slice(a1.indexOf(a2)).slice(a2.length);\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = a1.slice(a1.indexOf(a2)).slice(a2.length);\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-encode\n */\nconst ENCODE_FOR_URI = {\n arity: 1,\n overloads: declare(C.RegularOperator.ENCODE_FOR_URI)\n .onStringly1Typed(() => val => string(encodeURI(val))).collect(),\n};\n\n// See special operators\n// const CONCAT = {}\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-langMatches\n */\nconst langmatches = {\n arity: 2,\n overloads: declare(C.RegularOperator.LANG_MATCHES)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (tag: string, range: string) => bool(X.langMatches(tag, range)),\n ).collect(),\n};\n\nfunction regex2(): (text: string, pattern: string) => E.BooleanLiteral {\n return (text: string, pattern: string) => bool(X.matches(text, pattern));\n}\nfunction regex3(): (text: string, pattern: string, flags: string) => E.BooleanLiteral {\n return (text: string, pattern: string, flags: string) => bool(X.matches(text, pattern, flags));\n}\n/**\n * https://www.w3.org/TR/sparql11-query/#func-regex\n */\nconst REGEX = {\n arity: [ 2, 3 ],\n overloads: declare(C.RegularOperator.REGEX)\n .onBinaryTyped([ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ], regex2)\n .onTernaryTyped([ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING, TypeURL.XSD_STRING ], regex3)\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-replace\n */\nconst REPLACE = {\n arity: [ 3, 4 ],\n overloads: declare(C.RegularOperator.REPLACE)\n .onTernaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg: string, pattern: string, replacement: string) =>\n string(X.replace(arg, pattern, replacement)),\n )\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => ([ arg, pattern, replacement ]: [E.LangStringLiteral, E.StringLiteral, E.StringLiteral]) => {\n const result = X.replace(arg.typedValue, pattern.typedValue, replacement.typedValue);\n return langString(result, arg.language);\n },\n )\n .onQuaternaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg: string, pattern: string, replacement: string, flags: string) =>\n string(X.replace(arg, pattern, replacement, flags)),\n )\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => ([ arg, pattern, replacement, flags ]:\n [E.LangStringLiteral, E.StringLiteral, E.StringLiteral, E.StringLiteral]) => {\n const result = X.replace(arg.typedValue, pattern.typedValue, replacement.typedValue, flags.typedValue);\n return langString(result, arg.language);\n },\n )\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on numerics\n// https://www.w3.org/TR/sparql11-query/#func-numerics\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-abs\n */\nconst abs = {\n arity: 1,\n overloads: declare(C.RegularOperator.ABS)\n .numericConverter(() => num => Math.abs(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-round\n */\nconst round = {\n arity: 1,\n overloads: declare(C.RegularOperator.ROUND)\n .numericConverter(() => num => Math.round(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-ceil\n */\nconst ceil = {\n arity: 1,\n overloads: declare(C.RegularOperator.CEIL)\n .numericConverter(() => num => Math.ceil(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-floor\n */\nconst floor = {\n arity: 1,\n overloads: declare(C.RegularOperator.FLOOR)\n .numericConverter(() => num => Math.floor(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#idp2130040\n */\nconst rand = {\n arity: 0,\n overloads: declare(C.RegularOperator.RAND)\n .set([], () => () => double(Math.random()))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on Dates and Times\n// https://www.w3.org/TR/sparql11-query/#func-date-time\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-now\n */\nconst now = {\n arity: 0,\n overloads: declare(C.RegularOperator.NOW).set([], (sharedContext: ICompleteSharedContext) => () =>\n new E.DateTimeLiteral(toDateTimeRepresentation(\n { date: sharedContext.now, timeZone: sharedContext.defaultTimeZone },\n ))).collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-year\n */\nconst year = {\n arity: 1,\n overloads: declare(C.RegularOperator.YEAR)\n .onDateTime1(\n () => date => integer(date.typedValue.year),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [E.DateLiteral ]) => integer(date.typedValue.year))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-month\n */\nconst month = {\n arity: 1,\n overloads: declare(C.RegularOperator.MONTH)\n .onDateTime1(\n () => date => integer(date.typedValue.month),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [ E.DateLiteral]) => integer(date.typedValue.month))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-day\n */\nconst day = {\n arity: 1,\n overloads: declare(C.RegularOperator.DAY)\n .onDateTime1(\n () => date => integer(date.typedValue.day),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [ E.DateLiteral]) => integer(date.typedValue.day))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-hours\n */\nconst hours = {\n arity: 1,\n overloads: declare(C.RegularOperator.HOURS)\n .onDateTime1(\n () => date => integer(date.typedValue.hours),\n )\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.hours))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-minutes\n */\nconst minutes = {\n arity: 1,\n overloads: declare(C.RegularOperator.MINUTES)\n .onDateTime1(() => date => integer(date.typedValue.minutes))\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.minutes))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-seconds\n */\nconst seconds = {\n arity: 1,\n overloads: declare(C.RegularOperator.SECONDS)\n .onDateTime1(() => date => decimal(date.typedValue.seconds))\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.seconds))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-timezone\n */\nconst timezone = {\n arity: 1,\n overloads: declare(C.RegularOperator.TIMEZONE)\n .onDateTime1(\n () => (date) => {\n const duration: Partial = {\n hours: date.typedValue.zoneHours,\n minutes: date.typedValue.zoneMinutes,\n };\n if (duration.hours === undefined && duration.minutes === undefined) {\n throw new Err.InvalidTimezoneCall(date.str());\n }\n return new E.DayTimeDurationLiteral(duration);\n },\n )\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME ]})\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-tz\n */\nconst tz = {\n arity: 1,\n overloads: declare(C.RegularOperator.TZ)\n .onDateTime1(\n () => date => string(extractRawTimeZone(date.str())),\n )\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME ]})\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Hash functions\n// https://www.w3.org/TR/sparql11-query/#func-hash\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-md5\n */\nconst MD5 = {\n arity: 1,\n overloads: declare(C.RegularOperator.MD5)\n .onString1Typed(() => str => string(md5(str)))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha1\n */\nconst SHA1 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA1)\n .onString1Typed(() => str => string(sha1().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha256\n */\nconst SHA256 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA256)\n .onString1Typed(() => str => string(sha256().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha384\n */\nconst SHA384 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA384)\n .onString1Typed(() => str => string(sha384().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha512\n */\nconst SHA512 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA512)\n .onString1Typed(() => str => string(sha512().update(str).digest('hex')))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions for quoted triples\n// https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n// ----------------------------------------------------------------------------\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n */\nconst triple = {\n arity: 3,\n overloads: declare(C.RegularOperator.TRIPLE)\n .onTerm3(\n context => (...args) => new E.Quad(\n DF.quad(args[0].toRDF(), args[1].toRDF(), args[2].toRDF()),\n context.superTypeProvider,\n ),\n )\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#subject\n */\nconst subject = {\n arity: 1,\n overloads: declare(C.RegularOperator.SUBJECT)\n .onQuad1(() => quad => quad.subject)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#predicate\n */\nconst predicate = {\n arity: 1,\n overloads: declare(C.RegularOperator.PREDICATE)\n .onQuad1(() => quad => quad.predicate)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#object\n */\nconst object = {\n arity: 1,\n overloads: declare(C.RegularOperator.OBJECT)\n .onQuad1(() => quad => quad.object)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#istriple\n */\nconst istriple = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_TRIPLE)\n .onTerm1(() => term => bool(term.termType === 'quad'))\n .collect(),\n};\n\n// End definitions.\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n\n/**\n * Collect all the definitions from above into an object\n */\nexport const definitions: Record = {\n // --------------------------------------------------------------------------\n // Operator Mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n // --------------------------------------------------------------------------\n '!': not,\n uplus: unaryPlus,\n uminus: unaryMinus,\n '*': multiplication,\n '/': division,\n '+': addition,\n '-': subtraction,\n '=': equality,\n '!=': inequality,\n '<': lesserThan,\n '>': greaterThan,\n '<=': lesserThanEqual,\n '>=': greaterThanEqual,\n\n // --------------------------------------------------------------------------\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n // --------------------------------------------------------------------------\n isiri: isIRI,\n isuri: isIRI,\n isblank: isBlank,\n isliteral: isLiteral,\n isnumeric: isNumeric,\n str: STR,\n lang,\n datatype,\n iri: IRI,\n uri: IRI,\n // 'BNODE': BNODE (see special operators),\n strdt: STRDT,\n strlang: STRLANG,\n uuid: UUID,\n struuid: STRUUID,\n\n // --------------------------------------------------------------------------\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // --------------------------------------------------------------------------\n strlen: STRLEN,\n substr: SUBSTR,\n ucase: UCASE,\n lcase: LCASE,\n strstarts: STRSTARTS,\n strends: STRENDS,\n contains: CONTAINS,\n strbefore: STRBEFORE,\n strafter: STRAFTER,\n encode_for_uri: ENCODE_FOR_URI,\n // 'concat': CONCAT (see special operators)\n langmatches,\n regex: REGEX,\n replace: REPLACE,\n\n // --------------------------------------------------------------------------\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n // --------------------------------------------------------------------------\n abs,\n round,\n ceil,\n floor,\n rand,\n\n // --------------------------------------------------------------------------\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n // --------------------------------------------------------------------------\n now,\n year,\n month,\n day,\n hours,\n minutes,\n seconds,\n timezone,\n tz,\n\n // --------------------------------------------------------------------------\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n // --------------------------------------------------------------------------\n md5: MD5,\n sha1: SHA1,\n sha256: SHA256,\n sha384: SHA384,\n sha512: SHA512,\n\n // --------------------------------------------------------------------------\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n // --------------------------------------------------------------------------\n triple,\n subject,\n predicate,\n object,\n istriple,\n};\n","import type * as RDF from '@rdfjs/types';\nimport * as uuid from 'uuid';\nimport * as E from '../expressions';\nimport * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { bool, declare, expressionToVar, langString, string } from './Helpers';\nimport type { EvalContextAsync, EvalContextSync, OverloadTree } from '.';\nimport { regularFunctions, specialFunctions } from '.';\n\ntype Term = E.TermExpression;\ntype PTerm = Promise;\n\n// ----------------------------------------------------------------------------\n// Functional forms\n// ----------------------------------------------------------------------------\n\n// BOUND ----------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-bound\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst bound: ISpecialDefinition = {\n arity: 1,\n async applyAsync({ args, mapping }: EvalContextAsync): PTerm {\n return bound_({ args, mapping });\n },\n applySynchronously({ args, mapping }: EvalContextSync): Term {\n return bound_({ args, mapping });\n },\n};\n\nfunction bound_({ args, mapping }: { args: E.Expression[]; mapping: RDF.Bindings }): E.BooleanLiteral {\n const variable = args[0];\n if (variable.expressionType !== E.ExpressionType.Variable) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BOUND);\n }\n const val = mapping.has(expressionToVar(variable));\n return bool(val);\n}\n\n// IF -------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-if\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst ifSPARQL: ISpecialDefinition = {\n arity: 3,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const valFirst = await evaluate(args[0], mapping);\n const ebv = valFirst.coerceEBV();\n return ebv ?\n evaluate(args[1], mapping) :\n evaluate(args[2], mapping);\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const valFirst = evaluate(args[0], mapping);\n const ebv = valFirst.coerceEBV();\n return ebv ?\n evaluate(args[1], mapping) :\n evaluate(args[2], mapping);\n },\n};\n\n// COALESCE -------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-coalesce\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst coalesce: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const errors: Error[] = [];\n for (const expr of args) {\n try {\n return await evaluate(expr, mapping);\n } catch (error: unknown) {\n errors.push( error);\n }\n }\n throw new Err.CoalesceError(errors);\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const errors: Error[] = [];\n for (const expr of args) {\n try {\n return evaluate(expr, mapping);\n } catch (error: unknown) {\n errors.push( error);\n }\n }\n throw new Err.CoalesceError(errors);\n },\n};\n\n// Logical-or (||) ------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-logical-or\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst logicalOr: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = await evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (left) {\n return bool(true);\n }\n const rightTerm = await evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = await evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (!rightError) {\n throw error;\n }\n return bool(true);\n }\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (left) {\n return bool(true);\n }\n const rightTerm = evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (!rightError) {\n throw error;\n }\n return bool(true);\n }\n },\n};\n\n// Logical-and (&&) -----------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-logical-and\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst logicalAnd: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = await evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (!left) {\n return bool(false);\n }\n const rightTerm = await evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = await evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (rightError) {\n throw error;\n }\n return bool(false);\n }\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (!left) {\n return bool(false);\n }\n const rightTerm = evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (rightError) {\n throw error;\n }\n return bool(false);\n }\n },\n};\n\n// SameTerm -------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sameTerm\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst sameTerm: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args.map(arg => evaluate(arg, mapping));\n const [ left, right ] = await Promise.all([ leftExpr, rightExpr ]);\n return bool(left.toRDF().equals(right.toRDF()));\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ left, right ] = args.map(arg => evaluate(arg, mapping));\n return bool(left.toRDF().equals(right.toRDF()));\n },\n};\n\n// IN -------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-in\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst inSPARQL: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length > 0;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate } = context;\n const [ leftExpr, ...remaining ] = args;\n const left = await evaluate(leftExpr, mapping);\n return inRecursiveAsync(left, { ...context, args: remaining }, []);\n },\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate } = context;\n const [ leftExpr, ...remaining ] = args;\n const left = evaluate(leftExpr, mapping);\n return inRecursiveSync(left, { ...context, args: remaining }, []);\n },\n};\n\nasync function inRecursiveAsync(\n needle: Term,\n context: EvalContextAsync,\n results: (Error | false)[],\n): PTerm {\n const { args, mapping, evaluate } = context;\n if (args.length === 0) {\n const noErrors = results.every(val => !val);\n return noErrors ? bool(false) : Promise.reject(new Err.InError(results));\n }\n\n try {\n const nextExpression = args.shift();\n // We know this will not be undefined because we check args.length === 0\n const next = await evaluate(nextExpression!, mapping);\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n if (( isEqual.apply([ needle, next ], context)).typedValue) {\n return bool(true);\n }\n return inRecursiveAsync(needle, context, [ ...results, false ]);\n } catch (error: unknown) {\n return inRecursiveAsync(needle, context, [ ...results, error ]);\n }\n}\n\nfunction inRecursiveSync(\n needle: Term,\n context: EvalContextSync,\n results: (Error | false)[],\n): Term {\n const { args, mapping, evaluate } = context;\n if (args.length === 0) {\n const noErrors = results.every(val => !val);\n if (noErrors) {\n return bool(false);\n }\n throw new Err.InError(results);\n }\n\n try {\n const nextExpression = args.shift();\n // We know this will not be undefined because we check args.length === 0\n const next = evaluate(nextExpression!, mapping);\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n if (( isEqual.apply([ needle, next ], context)).typedValue) {\n return bool(true);\n }\n return inRecursiveSync(needle, context, [ ...results, false ]);\n } catch (error: unknown) {\n return inRecursiveSync(needle, context, [ ...results, error ]);\n }\n}\n\n// NOT IN ---------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-not-in\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst notInSPARQL: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length > 0;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const _in = specialFunctions[C.SpecialOperator.IN];\n const isIn = await _in.applyAsync(context);\n return bool(!( isIn).typedValue);\n },\n applySynchronously(context: EvalContextSync): Term {\n const _in = specialFunctions[C.SpecialOperator.IN];\n const isIn = _in.applySynchronously(context);\n return bool(!( isIn).typedValue);\n },\n};\n\n// ----------------------------------------------------------------------------\n// Annoying functions\n// ----------------------------------------------------------------------------\n\n// CONCAT ---------------------------------------------------------------------\n\n/**\n * This OverloadTree with the constant function will handle both type promotion and subtype-substitution\n */\nconst concatTree: OverloadTree = declare(C.SpecialOperator.CONCAT).onStringly1(() => expr => expr)\n .collect();\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-concat\n */\nconst concat: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate, functionArgumentsCache, superTypeProvider } = context;\n const pLits: Promise>[] = args\n .map(async expr => evaluate(expr, mapping))\n .map(async(pTerm) => {\n const operation = concatTree.search([ await pTerm ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.CONCAT);\n }\n return > operation(context)([ await pTerm ]);\n });\n const lits = await Promise.all(pLits);\n const strings = lits.map(lit => lit.typedValue);\n const joined = strings.join('');\n const lang = langAllEqual(lits) ? lits[0].language : undefined;\n return lang ? langString(joined, lang) : string(joined);\n },\n\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const lits = args\n .map(expr => evaluate(expr, mapping))\n .map((pTerm) => {\n const operation = concatTree.search([ pTerm ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.CONCAT);\n }\n return > operation(context)([ pTerm ]);\n });\n const strings = lits.map(lit => lit.typedValue);\n const joined = strings.join('');\n const lang = langAllEqual(lits) ? lits[0].language : undefined;\n return lang ? langString(joined, lang) : string(joined);\n },\n};\n\nfunction langAllEqual(lits: E.Literal[]): boolean {\n return lits.length > 0 && lits.every(lit => lit.language === lits[0].language);\n}\n\n// ----------------------------------------------------------------------------\n// Context dependant functions\n// ----------------------------------------------------------------------------\n\n// BNODE ---------------------------------------------------------------------\n\n/**\n * This OverloadTree with the constant function will handle both type promotion and subtype-substitution\n */\nconst bnodeTree = declare(C.SpecialOperator.BNODE).onString1(() => arg => arg).collect();\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-bnode\n * id has to be distinct over all id's in dataset\n */\nconst BNODE: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length === 0 || args.length === 1;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const input = args.length === 1 ?\n await evaluate(args[0], mapping) :\n undefined;\n\n let strInput: string | undefined;\n if (input) {\n const operation = bnodeTree.search([ input ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BNODE);\n }\n strInput = operation(context)([ input ]).str();\n }\n\n if (context.bnode) {\n const bnode = await context.bnode(strInput);\n return new E.BlankNode(bnode);\n }\n\n return BNODE_(strInput);\n },\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const input = args.length === 1 ?\n evaluate(args[0], mapping) :\n undefined;\n\n let strInput: string | undefined;\n if (input) {\n const operation = bnodeTree.search([ input ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BNODE);\n }\n strInput = operation(context)([ input ]).str();\n }\n\n if (context.bnode) {\n const bnode = context.bnode(strInput);\n return new E.BlankNode(bnode);\n }\n\n return BNODE_(strInput);\n },\n};\n\nfunction BNODE_(input?: string): E.BlankNode {\n return new E.BlankNode(input ?? uuid.v4());\n}\n\n// ----------------------------------------------------------------------------\n// Wrap these declarations into functions\n// ----------------------------------------------------------------------------\n\nexport interface ISpecialDefinition {\n arity: number;\n applyAsync: E.SpecialApplicationAsync;\n applySynchronously: E.SpecialApplicationSync;\n checkArity?: (args: E.Expression[]) => boolean;\n}\n\nexport const specialDefinitions: Record = {\n // --------------------------------------------------------------------------\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // --------------------------------------------------------------------------\n bound,\n if: ifSPARQL,\n coalesce,\n '&&': logicalAnd,\n '||': logicalOr,\n sameterm: sameTerm,\n in: inSPARQL,\n notin: notInSPARQL,\n\n // Annoying functions\n concat,\n\n // Context dependent functions\n bnode: BNODE,\n};\n","// https://www.w3.org/TR/xpath-functions/#func-matches\n// https://www.w3.org/TR/xpath-functions/#flags\nexport function matches(text: string, pattern: string, flags?: string): boolean {\n // TODO: Only flags 'i' and 'm' match between XPath and JS.\n // 's', 'x', 'q', would need proper implementation.\n const reg = new RegExp(pattern, flags);\n return reg.test(text);\n}\n\n// TODO: Fix flags\n// https://www.w3.org/TR/xpath-functions/#func-replace\nexport function replace(arg: string, pattern: string, replacement: string, flags?: string): string {\n let reg = new RegExp(pattern, flags);\n if (!reg.global) {\n const flags_ = flags ?? '';\n reg = new RegExp(pattern, `${flags_}g`);\n }\n return arg.replace(reg, replacement);\n}\n\n// TODO: Not an XPath function\n// TODO: Publish as package\n// https://www.ietf.org/rfc/rfc4647.txt\n// https://www.w3.org/TR/sparql11-query/#func-langMatches\nexport function langMatches(tag: string, range: string): boolean {\n const langTags = tag.split('-');\n const rangeTags = range.split('-');\n\n if (!_matchLangTag(rangeTags[0], langTags[0]) &&\n !_isWildCard(langTags[0])) {\n return false;\n }\n\n let lI = 1;\n let rI = 1;\n while (rI < rangeTags.length) {\n if (_isWildCard(rangeTags[rI])) {\n rI++;\n continue;\n }\n if (lI === langTags.length) {\n return false;\n }\n if (_matchLangTag(rangeTags[rI], langTags[lI])) {\n lI++;\n rI++;\n continue;\n }\n if (langTags[lI].length === 1) {\n return false;\n }\n lI++;\n }\n return true;\n}\n\nfunction _isWildCard(tag: string): boolean {\n return tag === '*';\n}\n\nfunction _matchLangTag(left: string, right: string): boolean {\n const matchInitial = new RegExp(`/${left}/`, 'iu');\n return matchInitial.test(`/${right}/`);\n}\n","import { Algebra as Alg } from 'sparqlalgebrajs';\nimport type { AsyncExtensionFunction, AsyncExtensionFunctionCreator } from '../evaluators/AsyncEvaluator';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type { SyncExtensionFunction, SyncExtensionFunctionCreator } from '../evaluators/SyncEvaluator';\nimport * as E from '../expressions';\nimport type { AsyncExtensionApplication, SimpleApplication } from '../expressions';\nimport { namedFunctions, regularFunctions, specialFunctions } from '../functions';\nimport * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { ExtensionFunctionError } from '../util/Errors';\nimport type { ITermTransformer } from './TermTransformer';\nimport { TermTransformer } from './TermTransformer';\n\ntype FunctionCreatorConfig = { type: 'sync'; creator: SyncExtensionFunctionCreator } |\n{ type: 'async'; creator: AsyncExtensionFunctionCreator };\n\ntype AlgebraTransformConfig = ICompleteSharedContext & FunctionCreatorConfig;\n\nexport interface IAlgebraTransformer extends ITermTransformer {\n transformAlgebra: (expr: Alg.Expression) => E.Expression;\n}\n\nexport class AlgebraTransformer extends TermTransformer implements IAlgebraTransformer {\n private readonly creatorConfig: FunctionCreatorConfig;\n public constructor(protected readonly algebraConfig: AlgebraTransformConfig) {\n super(algebraConfig.superTypeProvider);\n this.creatorConfig = { type: algebraConfig.type, creator: algebraConfig.creator };\n }\n\n public transformAlgebra(expr: Alg.Expression): E.Expression {\n const types = Alg.expressionTypes;\n\n switch (expr.expressionType) {\n case types.TERM:\n return this.transformTerm(expr);\n case types.OPERATOR:\n return this.transformOperator(expr);\n case types.NAMED:\n return this.transformNamed(expr);\n case types.EXISTENCE:\n return AlgebraTransformer.transformExistence(expr);\n case types.AGGREGATE:\n return AlgebraTransformer.transformAggregate(expr);\n case types.WILDCARD:\n return AlgebraTransformer.transformWildcard(expr);\n }\n }\n\n private static transformWildcard(term: Alg.WildcardExpression): E.Expression {\n return new E.NamedNode(term.wildcard.value);\n }\n\n private transformOperator(expr: Alg.OperatorExpression): E.OperatorExpression | E.SpecialOperatorExpression {\n const operator = expr.operator.toLowerCase();\n if (C.SpecialOperators.has(operator)) {\n const specialOp = operator;\n const specialArgs = expr.args.map(arg => this.transformAlgebra(arg));\n const specialFunc = specialFunctions[specialOp];\n if (!specialFunc.checkArity(specialArgs)) {\n throw new Err.InvalidArity(specialArgs, specialOp);\n }\n return new E.SpecialOperator(specialArgs, specialFunc.applyAsync, specialFunc.applySynchronously);\n }\n if (!C.Operators.has(operator)) {\n throw new Err.UnknownOperator(expr.operator);\n }\n const regularOp = operator;\n const regularArgs = expr.args.map(arg => this.transformAlgebra(arg));\n const regularFunc = regularFunctions[regularOp];\n if (!AlgebraTransformer.hasCorrectArity(regularArgs, regularFunc.arity)) {\n throw new Err.InvalidArity(regularArgs, regularOp);\n }\n return new E.Operator(regularArgs, args => regularFunc.apply(args, this.algebraConfig));\n }\n\n private wrapSyncFunction(func: SyncExtensionFunction, name: string): SimpleApplication {\n return (args) => {\n try {\n const res = func(args.map(arg => arg.toRDF()));\n return this.transformRDFTermUnsafe(res);\n } catch (error: unknown) {\n throw new ExtensionFunctionError(name, error);\n }\n };\n }\n\n private wrapAsyncFunction(func: AsyncExtensionFunction, name: string): AsyncExtensionApplication {\n return async(args) => {\n try {\n const res = await func(args.map(arg => arg.toRDF()));\n return this.transformRDFTermUnsafe(res);\n } catch (error: unknown) {\n throw new ExtensionFunctionError(name, error);\n }\n };\n }\n\n // TODO: Support passing functions to override default behaviour;\n private transformNamed(expr: Alg.NamedExpression):\n E.NamedExpression | E.AsyncExtensionExpression | E.SyncExtensionExpression {\n const funcName = expr.name.value;\n const namedArgs = expr.args.map(arg => this.transformAlgebra(arg));\n if (C.NamedOperators.has(funcName)) {\n // Return a basic named expression\n const op = expr.name.value;\n const namedFunc = namedFunctions[op];\n return new E.Named(expr.name, namedArgs, args => namedFunc.apply(args, this.algebraConfig));\n }\n if (this.creatorConfig.type === 'sync') {\n // Expression might be extension function, check this for the sync\n const syncExtensionFunc = this.creatorConfig.creator(expr.name);\n if (syncExtensionFunc) {\n const simpleAppl = this.wrapSyncFunction(syncExtensionFunc, expr.name.value);\n return new E.SyncExtension(expr.name, namedArgs, simpleAppl);\n }\n } else {\n // The expression might be an extension function, check this for the async case\n const asyncExtensionFunc = this.creatorConfig.creator(expr.name);\n if (asyncExtensionFunc) {\n const asyncAppl = this.wrapAsyncFunction(asyncExtensionFunc, expr.name.value);\n return new E.AsyncExtension(expr.name, namedArgs, asyncAppl);\n }\n }\n throw new Err.UnknownNamedOperator(expr.name.value);\n }\n\n private static hasCorrectArity(args: E.Expression[], arity: number | number[]): boolean {\n // If the function has overloaded arity, the actual arity needs to be present.\n if (Array.isArray(arity)) {\n return arity.includes(args.length);\n }\n\n return args.length === arity;\n }\n\n public static transformAggregate(expr: Alg.AggregateExpression): E.Aggregate {\n const name = expr.aggregator;\n return new E.Aggregate(name, expr);\n }\n\n public static transformExistence(expr: Alg.ExistenceExpression): E.Existence {\n return new E.Existence(expr);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RDFString from 'rdf-string';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport { Algebra } from 'sparqlalgebrajs';\nimport * as E from '../expressions';\nimport { TypeURL } from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { isExpressionError } from '../util/Errors';\nimport {\n parseDate,\n parseDateTime,\n parseDayTimeDuration,\n parseDuration,\n parseTime,\n parseYearMonthDuration,\n} from '../util/Parsing';\nimport * as P from '../util/Parsing';\nimport { getSuperTypeDict } from '../util/TypeHandling';\nimport type { ISuperTypeProvider, GeneralSuperTypeDict } from '../util/TypeHandling';\n\nexport interface ITermTransformer {\n transformRDFTermUnsafe: (term: RDF.Term) => E.Term;\n transformLiteral: (lit: RDF.Literal) => E.Literal;\n}\n\nexport class TermTransformer implements ITermTransformer {\n public constructor(protected readonly superTypeProvider: ISuperTypeProvider) {}\n\n /**\n * Transforms an RDF term to the internal representation of a term,\n * assuming it is not a variable, which would be an expression (internally).\n *\n * @param term RDF term to transform into internal representation of a term\n */\n public transformRDFTermUnsafe(term: RDF.Term): E.Term {\n return this.transformTerm({\n term,\n type: Algebra.types.EXPRESSION,\n expressionType: Algebra.expressionTypes.TERM,\n });\n }\n\n protected transformTerm(term: Alg.TermExpression): E.Expression {\n if (!term.term) {\n throw new Err.InvalidExpression(term);\n }\n\n switch (term.term.termType) {\n case 'Variable':\n return new E.Variable(RDFString.termToString(term.term));\n case 'Literal':\n return this.transformLiteral(term.term);\n case 'NamedNode':\n return new E.NamedNode(term.term.value);\n case 'BlankNode':\n return new E.BlankNode(term.term.value);\n case 'Quad':\n return new E.Quad(term.term, this.superTypeProvider);\n default:\n throw new Err.InvalidTermType(term);\n }\n }\n\n /**\n * @param lit the rdf literal we want to transform to an internal Literal expression.\n */\n public transformLiteral(lit: RDF.Literal): E.Literal {\n // Both here and within the switch we transform to LangStringLiteral or StringLiteral.\n // We do this when we detect a simple literal being used.\n // Original issue regarding this behaviour: https://github.com/w3c/sparql-12/issues/112\n if (!lit.datatype || [ null, undefined, '' ].includes(lit.datatype.value)) {\n return lit.language ?\n new E.LangStringLiteral(lit.value, lit.language) :\n new E.StringLiteral(lit.value);\n }\n\n const dataType = lit.datatype.value;\n const superTypeDict: GeneralSuperTypeDict = getSuperTypeDict(dataType, this.superTypeProvider);\n\n // The order of checking matters! Check most specific types first!\n try {\n if (TypeURL.XSD_STRING in superTypeDict) {\n return new E.StringLiteral(lit.value, dataType);\n }\n if (TypeURL.RDF_LANG_STRING in superTypeDict) {\n return new E.LangStringLiteral(lit.value, lit.language);\n }\n if (TypeURL.XSD_YEAR_MONTH_DURATION in superTypeDict) {\n return new E.YearMonthDurationLiteral(parseYearMonthDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DAY_TIME_DURATION in superTypeDict) {\n return new E.DayTimeDurationLiteral(parseDayTimeDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DURATION in superTypeDict) {\n return new E.DurationLiteral(parseDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE_TIME in superTypeDict) {\n const dateVal: Date = new Date(lit.value);\n if (Number.isNaN(dateVal.getTime())) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.DateTimeLiteral(parseDateTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE in superTypeDict) {\n return new E.DateLiteral(parseDate(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_TIME in superTypeDict) {\n return new E.TimeLiteral(parseTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_BOOLEAN in superTypeDict) {\n if (lit.value !== 'true' && lit.value !== 'false' && lit.value !== '1' && lit.value !== '0') {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.BooleanLiteral(lit.value === 'true' || lit.value === '1', lit.value);\n }\n if (TypeURL.XSD_DECIMAL in superTypeDict) {\n const intVal: number | undefined = P.parseXSDDecimal(lit.value);\n if (intVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (TypeURL.XSD_INTEGER in superTypeDict) {\n return new E.IntegerLiteral(intVal, dataType, lit.value);\n }\n // If type is not an integer it's just a decimal.\n return new E.DecimalLiteral(intVal, dataType, lit.value);\n }\n const isFloat = TypeURL.XSD_FLOAT in superTypeDict;\n const isDouble = TypeURL.XSD_DOUBLE in superTypeDict;\n if (isFloat || isDouble) {\n const doubleVal: number | undefined = P.parseXSDFloat(lit.value);\n if (doubleVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (isFloat) {\n return new E.FloatLiteral(doubleVal, dataType, lit.value);\n }\n return new E.DoubleLiteral(doubleVal, dataType, lit.value);\n }\n return new E.Literal(lit.value, dataType, lit.value);\n } catch (error: unknown) {\n if (error instanceof Error && isExpressionError(error)) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n throw error;\n }\n }\n}\n","export type KnownLiteralTypes = TypeAlias | TypeURL;\n\nexport enum TypeAlias {\n // Numeric is everything defined in https://www.w3.org/TR/sparql11-query/#operandDataTypes\n SPARQL_NUMERIC = 'SPARQL_NUMERIC',\n /**\n * Stringly is everything defined in https://www.w3.org/TR/sparql11-query/#func-strings\n * In other words it is a simple literal, a plain literal with language tag, or a literal with datatype xsd:string\n * In other words, since expression-evaluator transforms a simple literal to xsd_string.\n * It is RDF_LANG_STRING or XSD_STRING.\n * Reasons for this are mentioned here: w3c/sparql-12#112\n */\n SPARQL_STRINGLY = 'SPARQL_STRINGLY',\n}\n\nexport enum TypeURL {\n XSD_ANY_URI = 'http://www.w3.org/2001/XMLSchema#anyURI',\n XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string',\n RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n\n XSD_BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n\n XSD_DATE_TIME = 'http://www.w3.org/2001/XMLSchema#dateTime',\n XSD_DATE_TIME_STAMP = 'http://www.w3.org/2001/XMLSchema#dateTimeStamp',\n XSD_DATE = 'http://www.w3.org/2001/XMLSchema#date',\n\n XSD_G_MONTH = 'http://www.w3.org/2001/XMLSchema#gMonth',\n XSD_G_MONTHDAY = 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n XSD_G_YEAR = 'http://www.w3.org/2001/XMLSchema#gYear',\n XSD_G_YEAR_MONTH = 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n XSD_TIME = 'http://www.w3.org/2001/XMLSchema#time',\n XSD_G_DAY = 'http://www.w3.org/2001/XMLSchema#gDay',\n\n // Numeric types\n XSD_DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n XSD_FLOAT = 'http://www.w3.org/2001/XMLSchema#float',\n XSD_DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n\n // Derived numeric types\n XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n\n XSD_NON_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n XSD_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n\n XSD_LONG = 'http://www.w3.org/2001/XMLSchema#long',\n XSD_INT = 'http://www.w3.org/2001/XMLSchema#int',\n XSD_SHORT = 'http://www.w3.org/2001/XMLSchema#short',\n XSD_BYTE = 'http://www.w3.org/2001/XMLSchema#byte',\n\n XSD_NON_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n XSD_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n XSD_UNSIGNED_LONG = 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n XSD_UNSIGNED_INT = 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n XSD_UNSIGNED_SHORT = 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n XSD_UNSIGNED_BYTE = 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n\n // Derived String Type\n XSD_NORMALIZED_STRING = 'http://www.w3.org/2001/XMLSchema#normalizedString',\n XSD_TOKEN = 'http://www.w3.org/2001/XMLSchema#token',\n XSD_LANGUAGE = 'http://www.w3.org/2001/XMLSchema#language',\n XSD_NM_TOKEN = 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n\n XSD_NAME = 'http://www.w3.org/2001/XMLSchema#name',\n XSD_NC_NAME = 'http://www.w3.org/2001/XMLSchema#NCName',\n XSD_ENTITY = 'http://www.w3.org/2001/XMLSchema#ENTITY',\n XSD_ID = 'http://www.w3.org/2001/XMLSchema#ID',\n XSD_ID_REF = 'http://www.w3.org/2001/XMLSchema#IDREF',\n\n // Other types\n XSD_DURATION = 'http://www.w3.org/2001/XMLSchema#duration',\n XSD_YEAR_MONTH_DURATION = 'http://www.w3.org/2001/XMLSchema#yearMonthDuration',\n XSD_DAY_TIME_DURATION = 'http://www.w3.org/2001/XMLSchema#dayTimeDuration',\n}\n\n// ----------------------------------------------------------------------------\n// Operators\n// ----------------------------------------------------------------------------\n\nexport type Operator = RegularOperator | SpecialOperator;\n\n// TODO: Remove unneeded double typing\nexport enum RegularOperator {\n // Operator mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n NOT = '!',\n UMINUS = 'uminus',\n UPLUS = 'uplus',\n // LOGICAL_AND // See SpecialOperators\n // LOGICAL_OR // See SpecialOperators\n\n EQUAL = '=',\n NOT_EQUAL = '!=',\n LT = '<',\n GT = '>',\n LTE = '<=',\n GTE = '>=',\n\n MULTIPLICATION = '*',\n DIVISION = '/',\n ADDITION = '+',\n SUBTRACTION = '-',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // See SpecialOperators\n\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n IS_IRI = 'isiri',\n IS_URI = 'isuri',\n IS_BLANK = 'isblank',\n IS_LITERAL = 'isliteral',\n IS_NUMERIC = 'isnumeric',\n STR = 'str',\n LANG = 'lang',\n DATATYPE = 'datatype',\n IRI = 'iri',\n URI = 'uri',\n // BNODE = 'BNODE', (see special operators)\n STRDT = 'strdt',\n STRLANG = 'strlang',\n UUID = 'uuid',\n STRUUID = 'struuid',\n\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-strings\n STRLEN = 'strlen',\n SUBSTR = 'substr',\n UCASE = 'ucase',\n LCASE = 'lcase',\n STRSTARTS = 'strstarts',\n STRENDS = 'strends',\n CONTAINS = 'contains',\n STRBEFORE = 'strbefore',\n STRAFTER = 'strafter',\n ENCODE_FOR_URI = 'encode_for_uri',\n // CONCAT = 'concat' (see special operators)\n LANG_MATCHES = 'langmatches',\n REGEX = 'regex',\n REPLACE = 'replace',\n\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n ABS = 'abs',\n ROUND = 'round',\n CEIL = 'ceil',\n FLOOR = 'floor',\n RAND = 'rand',\n\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n NOW = 'now',\n YEAR = 'year',\n MONTH = 'month',\n DAY = 'day',\n HOURS = 'hours',\n MINUTES = 'minutes',\n SECONDS = 'seconds',\n TIMEZONE = 'timezone',\n TZ = 'tz',\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n MD5 = 'md5',\n SHA1 = 'sha1',\n SHA256 = 'sha256',\n SHA384 = 'sha384',\n SHA512 = 'sha512',\n\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // See Named Operators\n\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n TRIPLE = 'triple',\n SUBJECT = 'subject',\n PREDICATE = 'predicate',\n OBJECT = 'object',\n IS_TRIPLE = 'istriple',\n}\n\nexport enum SpecialOperator {\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n BOUND = 'bound',\n IF = 'if',\n COALESCE = 'coalesce',\n // EXISTENCE = 'existence',\n LOGICAL_OR = '||',\n LOGICAL_AND = '&&',\n // EQUAL = '=', // See RegularOperators\n SAME_TERM = 'sameterm',\n IN = 'in',\n NOT_IN = 'notin',\n\n // Annoying functions - Has variable arity\n CONCAT = 'concat',\n\n // Context dependant functions\n BNODE = 'bnode',\n}\n\nexport const RegularOperators: Set = new Set(Object.values(RegularOperator));\nexport const SpecialOperators: Set = new Set(Object.values(SpecialOperator));\nexport const Operators = new Set([ ...RegularOperators, ...SpecialOperators ]);\n\nexport enum SetFunction {\n COUNT = 'count',\n SUM = 'sum',\n MIN = 'min',\n MAX = 'max',\n AVG = 'avg',\n GROUP_CONCAT = 'group_concat',\n SAMPLE = 'sample',\n}\nexport const SetFunctions = new Set(Object.values(SetFunction));\n\nexport type NamedOperator =\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n TypeURL.XSD_STRING\n | TypeURL.XSD_FLOAT\n | TypeURL.XSD_DOUBLE\n | TypeURL.XSD_DECIMAL\n | TypeURL.XSD_INTEGER\n | TypeURL.XSD_DATE_TIME\n | TypeURL.XSD_DATE\n | TypeURL.XSD_BOOLEAN\n | TypeURL.XSD_TIME\n | TypeURL.XSD_DURATION\n | TypeURL.XSD_DAY_TIME_DURATION\n | TypeURL.XSD_YEAR_MONTH_DURATION;\n\nexport const NamedOperators = new Set([\n TypeURL.XSD_STRING,\n TypeURL.XSD_FLOAT,\n TypeURL.XSD_DOUBLE,\n TypeURL.XSD_DECIMAL,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_DATE_TIME,\n TypeURL.XSD_DATE,\n TypeURL.XSD_BOOLEAN,\n TypeURL.XSD_TIME,\n TypeURL.XSD_DURATION,\n TypeURL.XSD_DAY_TIME_DURATION,\n TypeURL.XSD_YEAR_MONTH_DURATION,\n]);\n","export interface ITimeZoneRepresentation {\n // https://www.w3.org/TR/xpath-functions/#func-implicit-timezone\n // Type is a dayTimeDuration.\n // We use a separate dataType since it makes TS type modifications and JS object copying easier.\n zoneHours: number;\n zoneMinutes: number;\n}\n\nexport interface IDateRepresentation extends Partial {\n year: number;\n month: number;\n day: number;\n}\n\nexport interface ITimeRepresentation extends Partial {\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nexport interface IDayTimeDurationRepresentation {\n hours: number;\n minutes: number;\n seconds: number;\n day: number;\n}\n\nexport interface IYearMonthDurationRepresentation {\n year: number;\n month: number;\n}\n\nexport type IDurationRepresentation = IYearMonthDurationRepresentation & IDayTimeDurationRepresentation;\nexport type IDateTimeRepresentation = IDateRepresentation & ITimeRepresentation;\n\n// Important is to notice JS and XSD datatypes have different defaulted values\n// | Field | Default in JS | Default in XSD_DayTime | Default in XSD_Duration |\n// | Month | 0 | 1 | 0 |\n// | Day | 1 | 1 | 0 |\n\nexport function defaultedDayTimeDurationRepresentation(rep: Partial):\nIDayTimeDurationRepresentation {\n return {\n day: rep.day ?? 0,\n hours: rep.hours ?? 0,\n minutes: rep.minutes ?? 0,\n seconds: rep.seconds ?? 0,\n };\n}\n\nexport function defaultedYearMonthDurationRepresentation(rep: Partial):\nIYearMonthDurationRepresentation {\n return {\n year: rep.year ?? 0,\n month: rep.month ?? 0,\n };\n}\n\nexport function defaultedDurationRepresentation(\n rep: Partial,\n): IDurationRepresentation {\n return {\n ...defaultedDayTimeDurationRepresentation(rep),\n ...defaultedYearMonthDurationRepresentation(rep),\n };\n}\n\nexport function simplifyDurationRepresentation(rep: Partial):\nPartial {\n const temp = defaultedDurationRepresentation(rep);\n const res: Partial = {};\n\n // Simplify year part\n const years = temp.year + Math.trunc(temp.month / 12);\n if (years) {\n res.year = years;\n temp.month %= 12;\n }\n if (temp.month) {\n res.month = temp.month;\n }\n\n // Simplify day part\n const days = temp.day + Math.trunc(temp.hours / 24) +\n Math.trunc(temp.minutes / (24 * 60)) + Math.trunc(temp.seconds / (24 * 60 * 60));\n if (days) {\n res.day = days;\n temp.hours %= 24;\n temp.minutes %= 24 * 60;\n temp.seconds %= 24 * 60 * 60;\n }\n const hours = temp.hours + Math.trunc(temp.minutes / 60) +\n Math.trunc(temp.seconds / (60 * 60));\n if (hours) {\n res.hours = hours;\n temp.minutes %= 60;\n temp.seconds %= 60 * 60;\n }\n const minutes = temp.minutes + Math.trunc(temp.seconds / 60);\n if (minutes) {\n res.minutes = minutes;\n temp.seconds %= 60;\n }\n if (temp.seconds) {\n res.seconds = temp.seconds;\n }\n return res;\n}\n\nexport function defaultedDateTimeRepresentation(rep: Partial): IDateTimeRepresentation {\n return {\n ...rep,\n day: rep.day ?? 1,\n hours: rep.hours ?? 0,\n month: rep.month ?? 1,\n year: rep.year ?? 0,\n seconds: rep.seconds ?? 0,\n minutes: rep.minutes ?? 0,\n };\n}\n\nexport function toDateTimeRepresentation({ date, timeZone }:\n{ date: Date; timeZone: ITimeZoneRepresentation }): IDateTimeRepresentation {\n return {\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n zoneHours: timeZone.zoneHours,\n zoneMinutes: timeZone.zoneMinutes,\n };\n}\n\nexport function negateDuration(dur: Partial): Partial {\n return {\n year: dur.year === undefined ? undefined : -1 * dur.year,\n month: dur.month === undefined ? undefined : -1 * dur.month,\n day: dur.day === undefined ? undefined : -1 * dur.day,\n hours: dur.hours === undefined ? undefined : -1 * dur.hours,\n minutes: dur.minutes === undefined ? undefined : -1 * dur.minutes,\n seconds: dur.seconds === undefined ? undefined : -1 * dur.seconds,\n };\n}\n\nexport function toJSDate(date: IDateTimeRepresentation): Date {\n // The given hours will be assumed to be local time.\n const res = new Date(\n date.year,\n date.month - 1,\n date.day,\n date.hours,\n date.minutes,\n Math.trunc(date.seconds),\n (date.seconds % 1) * 1_000,\n );\n if (date.year >= 0 && date.year < 100) {\n // Special rule of date has gone int action:\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date#individual_date_and_time_component_values\n\n const jumpDeltaOfDate = 1_900;\n res.setFullYear(res.getFullYear() - jumpDeltaOfDate);\n }\n return res;\n}\n\nexport function toUTCDate(date: Partial, defaultTimezone: ITimeZoneRepresentation): Date {\n const localTime = toJSDate(defaultedDateTimeRepresentation(date));\n // This date has been constructed in machine local time, now we alter it to become UTC and convert to correct timezone\n\n // Correction needed from local machine timezone to UTC\n const minutesCorrectionLocal = localTime.getTimezoneOffset();\n // Correction needed from UTC to provided timeZone\n const hourCorrectionUTC = date.zoneHours ?? defaultTimezone.zoneHours;\n const minutesCorrectionUTC = date.zoneMinutes ?? defaultTimezone.zoneMinutes;\n return new Date(\n localTime.getTime() - (minutesCorrectionLocal + hourCorrectionUTC * 60 + minutesCorrectionUTC) * 60 * 1_000,\n );\n}\n\nexport function trimToYearMonthDuration(dur: Partial):\nPartial {\n return {\n year: dur.year,\n month: dur.month,\n };\n}\n\nexport function trimToDayTimeDuration(dur: Partial): Partial {\n return {\n day: dur.day,\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n };\n}\n\nexport function yearMonthDurationsToMonths(dur: IYearMonthDurationRepresentation): number {\n return dur.year * 12 + dur.month;\n}\n\nexport function dayTimeDurationsToSeconds(dur: IDayTimeDurationRepresentation): number {\n return (((dur.day * 24) + dur.hours) * 60 + dur.minutes) * 60 + dur.seconds;\n}\n\nexport function extractRawTimeZone(zoneContained: string): string {\n const extraction = /(Z|([+-]\\d\\d:\\d\\d))?$/u.exec(zoneContained);\n // It is safe to cast here because the empty string can always match.\n return extraction![0];\n}\n\nexport function extractTimeZone(date: Date): ITimeZoneRepresentation {\n return {\n zoneHours: date.getTimezoneOffset() / 60,\n zoneMinutes: date.getTimezoneOffset() % 60,\n };\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type * as E from '../expressions';\nimport type * as C from './Consts';\n\n/**\n * This class of error will be thrown when an expression errors.\n * Various reasons this could happen are:\n * - invalid types for the given operator\n * - unbound variables\n * - invalid lexical forms\n * - ...\n *\n * The distinction is made so that one can catch this specific type\n * and handle it accordingly to the SPARQL spec (relevant for e.g. FILTER, EXTEND),\n * while others (programming errors) can be re-thrown.\n *\n * @see isExpressionError\n */\nexport class ExpressionError extends Error {}\n\n/**\n * Checks whether a given error is an {@link ExpressionError}.\n * Also useful for mocking in tests for covering all branches.\n *\n * @see ExpressionError\n */\nexport function isExpressionError(error: Error): boolean {\n return error instanceof ExpressionError;\n}\n\n/**\n * A literal has an invalid lexical form for the datatype it is accompanied by.\n * This error is only thrown when the term is as function argument that requires\n * a valid lexical form.\n */\nexport class InvalidLexicalForm extends ExpressionError {\n public constructor(public arg: RDF.Term) {\n super(`Invalid lexical form '${pp(arg)}'`);\n }\n}\n\n/**\n * A variable in the expression was not bound.\n */\nexport class UnboundVariableError extends ExpressionError {\n public constructor(public variable: string, public bindings: RDF.Bindings) {\n super(`Unbound variable '${pp(variable)}'`);\n }\n}\n\n/**\n * An invalid term was being coerced to an Effective Boolean Value.\n *\n * See the {@link https://www.w3.org/TR/sparql11-query/#ebv | SPARQL docs}\n * on EBVs.\n */\nexport class EBVCoercionError extends ExpressionError {\n public constructor(public arg: E.Term) {\n super(`Cannot coerce term to EBV '${pp(arg)}'`);\n }\n}\n\n/**\n * An equality test was done on literals with unsupported datatypes.\n *\n * See {@link https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal | term equality spec}.\n */\nexport class RDFEqualTypeError extends ExpressionError {\n public constructor(public args: E.Expression[]) {\n super('Equality test for literals with unsupported datatypes');\n }\n}\n\n/**\n * All the expressions in a COALESCE call threw errors.\n */\nexport class CoalesceError extends ExpressionError {\n public constructor(public errors: Error[]) {\n super('All COALESCE arguments threw errors');\n }\n}\n\n/**\n * No arguments to an IN call where equal, and at least one threw an error.\n */\nexport class InError extends ExpressionError {\n public constructor(public errors: (Error | false)[]) {\n super(\n `Some argument to IN errorred and none where equal. ${\n\n errors.map(err => `(${err.toString()}) `).join('and ')}`,\n );\n }\n}\n\n/**\n * Literals were passed to an operator that doesn't support their datatypes.\n */\nexport class InvalidArgumentTypes extends ExpressionError {\n public constructor(public args: E.Expression[], public op: C.Operator | C.NamedOperator) {\n super(`Argument types not valid for operator: '${pp(op)}' with '${pp(args)}`);\n }\n}\n\n/**\n * Terms were being compared that are not supported.\n */\nexport class InvalidCompareArgumentTypes extends ExpressionError {\n public constructor(public arg0: RDF.Term, public arg1: RDF.Term) {\n super(`Compared argument types are supported: '${arg0.termType}' and '${arg1.termType}'`);\n }\n}\n\n/**\n * An invalid typecast happened.\n */\nexport class CastError extends ExpressionError {\n public constructor(public arg: T, cast: C.TypeURL) {\n super(`Invalid cast: '${pp(arg)}' to '${pp(cast)}'`);\n }\n}\n\nexport class InvalidTimezoneCall extends ExpressionError {\n public constructor(public dateString: string) {\n super(`TIMEZONE call on ${dateString} which has no timezone`);\n }\n}\n\nexport class IncompatibleLanguageOperation extends ExpressionError {\n public constructor(public arg1: E.LangStringLiteral, public arg2: E.LangStringLiteral) {\n super(`Operation on incompatible language literals '${pp(arg1)}' and '${pp(arg2)}'`);\n }\n}\n\nexport class EmptyAggregateError extends ExpressionError {\n public constructor() {\n super('Empty aggregate expression');\n }\n}\n\nexport class ParseError extends ExpressionError {\n public constructor(str: string, type: string) {\n super(`Failed to parse ${str} as ${type}.`);\n }\n}\n\n// Non Expression Errors ------------------------------------------------------\n\n/**\n * An error that arises when we detect a 'should-be-impossible' state.\n * Given that this error is thrown, it clearly wasn't impossible, and some\n * mistake has been made.\n */\nexport class UnexpectedError extends Error {\n public constructor(message: string, public payload?: T) {\n super(`Programmer Error '${message}'`);\n }\n}\n\nexport class InvalidArity extends Error {\n public constructor(public args: E.Expression[], public op: C.Operator) {\n super(`The number of args does not match the arity of the operator '${pp(op)}'.`);\n }\n}\n\nexport class InvalidExpression extends Error {\n public constructor(expr: T) {\n super(`Invalid SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class InvalidExpressionType extends Error {\n public constructor(public expr: T) {\n super(`Invalid expression type for SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class InvalidTermType extends Error {\n public constructor(public term: Algebra.TermExpression) {\n super(`Invalid term type for term '${pp(term)}'`);\n }\n}\n\nexport class UnknownOperator extends Error {\n public constructor(name: string) {\n super(`Unknown operator: '${pp(name)}`);\n }\n}\n\nexport class UnknownNamedOperator extends Error {\n public constructor(name: string) {\n super(`Unknown named operator: '${pp(name)}'`);\n }\n}\n\nexport class ExtensionFunctionError extends Error {\n public constructor(name: string, functionError: unknown) {\n if (functionError instanceof Error) {\n super(`Error thrown in ${name}: ${functionError.message}${functionError.stack ? `\\n${functionError.stack}` : ''}`);\n } else {\n super(`Error thrown in ${name}`);\n }\n }\n}\n\nexport class NoAggregator extends Error {\n public constructor(name?: string) {\n super(`Aggregate expression ${pp(name)} found, but no aggregate hook provided.`);\n }\n}\n\nexport class NoExistenceHook extends Error {\n public constructor() {\n super('EXISTS found, but no existence hook provided.');\n }\n}\n\nfunction pp(object: T): string {\n return JSON.stringify(object);\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from './Consts';\nimport * as Err from './Errors';\nimport type { SuperTypeCallback, TypeCache } from './TypeHandling';\n\n// Determine the relative numerical order of the two given terms.\n// In accordance with https://www.w3.org/TR/sparql11-query/#modOrderBy\nexport function orderTypes(\n termA: RDF.Term | undefined,\n termB: RDF.Term | undefined,\n strict = false,\n typeDiscoveryCallback?: SuperTypeCallback,\n typeCache?: TypeCache,\n): -1 | 0 | 1 {\n // Check if terms are the same by reference\n if (termA === termB) {\n return 0;\n }\n\n // We handle undefined that is lower than everything else.\n if (termA === undefined) {\n return -1;\n }\n if (termB === undefined) {\n return 1;\n }\n\n //\n if (termA.termType !== termB.termType) {\n return _TERM_ORDERING_PRIORITY[termA.termType] < _TERM_ORDERING_PRIORITY[termB.termType] ? -1 : 1;\n }\n\n // Check exact term equality\n if (termA.equals(termB)) {\n return 0;\n }\n\n // Handle quoted triples\n if (termA.termType === 'Quad' && termB.termType === 'Quad') {\n const orderSubject = orderTypes(\n termA.subject,\n termB.subject,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderSubject !== 0) {\n return orderSubject;\n }\n const orderPredicate = orderTypes(\n termA.predicate,\n termB.predicate,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderPredicate !== 0) {\n return orderPredicate;\n }\n const orderObject = orderTypes(\n termA.object,\n termB.object,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderObject !== 0) {\n return orderObject;\n }\n return orderTypes(\n termA.graph,\n termB.graph,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n }\n\n // Handle literals\n if (termA.termType === 'Literal') {\n return orderLiteralTypes(termA, termB, typeDiscoveryCallback, typeCache);\n }\n\n // Handle all other types\n if (strict) {\n throw new Err.InvalidCompareArgumentTypes(termA, termB);\n }\n return comparePrimitives(termA.value, termB.value);\n}\n\nfunction orderLiteralTypes(\n litA: RDF.Literal,\n litB: RDF.Literal,\n typeDiscoveryCallback?: SuperTypeCallback,\n typeCache?: TypeCache,\n): -1 | 0 | 1 {\n const isGreater = regularFunctions[C.RegularOperator.GT];\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n const context = {\n now: new Date(),\n functionArgumentsCache: {},\n superTypeProvider: {\n discoverer: typeDiscoveryCallback ?? (() => 'term'),\n cache: typeCache ?? new LRUCache({ max: 1_000 }),\n },\n defaultTimeZone: { zoneHours: 0, zoneMinutes: 0 },\n };\n\n const termTransformer = new TermTransformer(context.superTypeProvider);\n const myLitA = termTransformer.transformLiteral(litA);\n const myLitB = termTransformer.transformLiteral(litB);\n\n try {\n if (( isEqual.apply([ myLitA, myLitB ], context)).typedValue) {\n return 0;\n }\n if (( isGreater.apply([ myLitA, myLitB ], context)).typedValue) {\n return 1;\n }\n return -1;\n } catch {\n // Fallback to string-based comparison\n const compareType = comparePrimitives(myLitA.dataType, myLitB.dataType);\n if (compareType !== 0) {\n return compareType;\n }\n return comparePrimitives(myLitA.str(), myLitB.str());\n }\n}\n\nfunction comparePrimitives(valueA: any, valueB: any): -1 | 0 | 1 {\n return valueA === valueB ? 0 : (valueA < valueB ? -1 : 1);\n}\n\n// SPARQL specifies that blankNode < namedNode < literal.\nconst _TERM_ORDERING_PRIORITY = {\n Variable: 0,\n BlankNode: 1,\n NamedNode: 2,\n Literal: 3,\n Quad: 4,\n DefaultGraph: 5,\n};\n","// TODO: Find a library for this, because this is basically an xsd datatypes parser\n\nimport type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDayTimeDurationRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n IYearMonthDurationRepresentation,\n} from './DateTimeHelpers';\n\nimport { simplifyDurationRepresentation } from './DateTimeHelpers';\nimport { ParseError } from './Errors';\nimport { maximumDayInMonthFor } from './SpecAlgos';\n\n/**\n * TODO: Fix decently\n * Parses float datatypes (double, float).\n *\n * All invalid lexical values return undefined.\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDFloat(value: string): number | undefined {\n const numb = Number(value);\n if (Number.isNaN(numb)) {\n if (value === 'NaN') {\n return Number.NaN;\n }\n if (value === 'INF' || value === '+INF') {\n return Number.POSITIVE_INFINITY;\n }\n if (value === '-INF') {\n return Number.NEGATIVE_INFINITY;\n }\n return undefined;\n }\n return numb;\n}\n\n/**\n * Parses decimal datatypes (decimal, int, byte, nonPositiveInteger, etc...).\n *\n * All other values, including NaN, INF, and floating point numbers all\n * return undefined;\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDDecimal(value: string): number | undefined {\n const numb = Number(value);\n return Number.isNaN(numb) ? undefined : numb;\n}\n\n/**\n * Parses integer datatypes (decimal, int, byte, nonPositiveInteger, etc...).\n *\n * All other values, including NaN, INF, and floating point numbers all\n * return undefined;\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDInteger(value: string): number | undefined {\n const numb: number = Number.parseInt(value, 10);\n return Number.isNaN(numb) ? undefined : numb;\n}\n\nexport function parseDateTime(dateTimeStr: string): IDateTimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n const [ date, time ] = dateTimeStr.split('T');\n return { ...parseDate(date), ...__parseTime(time) };\n}\n\nfunction parseTimeZone(timeZoneStr: string): Partial {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (timeZoneStr === '') {\n return { zoneHours: undefined, zoneMinutes: undefined };\n }\n if (timeZoneStr === 'Z') {\n return { zoneHours: 0, zoneMinutes: 0 };\n }\n const timeZoneStrings = timeZoneStr.replaceAll(/^([+|-])(\\d\\d):(\\d\\d)$/gu, '$11!$2!$3').split('!');\n const timeZone = timeZoneStrings.map(Number);\n return {\n zoneHours: timeZone[0] * timeZone[1],\n zoneMinutes: timeZone[0] * timeZone[2],\n };\n}\n\nexport function parseDate(dateStr: string): IDateRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n const formatted = dateStr.replaceAll(\n /^(-)?([123456789]*\\d{4})-(\\d\\d)-(\\d\\d)(Z|([+-]\\d\\d:\\d\\d))?$/gu,\n '$11!$2!$3!$4!$5',\n );\n if (formatted === dateStr) {\n throw new ParseError(dateStr, 'date');\n }\n const dateStrings = formatted.split('!');\n const date = dateStrings.slice(0, -1).map(Number);\n\n const res = {\n year: date[0] * date[1],\n month: date[2],\n day: date[3],\n ...parseTimeZone(dateStrings[4]),\n };\n if (!(res.month >= 1 && res.month <= 12) || !(res.day >= 1 && res.day <= maximumDayInMonthFor(res.year, res.month))) {\n throw new ParseError(dateStr, 'date');\n }\n return res;\n}\n\nfunction __parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const formatted = timeStr.replaceAll(/^(\\d\\d):(\\d\\d):(\\d\\d(\\.\\d+)?)(Z|([+-]\\d\\d:\\d\\d))?$/gu, '$1!$2!$3!$5');\n if (formatted === timeStr) {\n throw new ParseError(timeStr, 'time');\n }\n const timeStrings = formatted.split('!');\n const time = timeStrings.slice(0, -1).map(Number);\n\n const res = {\n hours: time[0],\n minutes: time[1],\n seconds: time[2],\n ...parseTimeZone(timeStrings[3]),\n };\n\n if (res.seconds >= 60 || res.minutes >= 60 || res.hours > 24 ||\n (res.hours === 24 && (res.minutes !== 0 || res.seconds !== 0))) {\n throw new ParseError(timeStr, 'time');\n }\n return res;\n}\n\n// We make a separation in internal and external since dateTime will have hour-date rollover,\n// but time just does modulo the time.\nexport function parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const res = __parseTime(timeStr);\n res.hours %= 24;\n return res;\n}\n\nexport function parseDuration(durationStr: string): Partial {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n const [ dayNotation, timeNotation ] = durationStr.split('T');\n\n // Handle date part\n const formattedDayDur = dayNotation.replaceAll(/^(-)?P(\\d+Y)?(\\d+M)?(\\d+D)?$/gu, '$11S!$2!$3!$4');\n if (formattedDayDur === dayNotation) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const durationStrings = formattedDayDur.split('!');\n if (timeNotation !== undefined) {\n const formattedTimeDur = timeNotation.replaceAll(/^(\\d+H)?(\\d+M)?(\\d+(\\.\\d+)?S)?$/gu, '$1!$2!$3');\n\n if (timeNotation === '' || timeNotation === formattedTimeDur) {\n throw new ParseError(durationStr, 'duration');\n }\n durationStrings.push(...formattedTimeDur.split('!'));\n }\n const duration = durationStrings.map(str => str.slice(0, -1));\n if (!duration.slice(1).some(Boolean)) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const sign = <-1 | 1> Number(duration[0]);\n return simplifyDurationRepresentation({\n year: duration[1] ? sign * Number(duration[1]) : undefined,\n month: duration[2] ? sign * Number(duration[2]) : undefined,\n day: duration[3] ? sign * Number(duration[3]) : undefined,\n hours: duration[4] ? sign * Number(duration[4]) : undefined,\n minutes: duration[5] ? sign * Number(duration[5]) : undefined,\n seconds: duration[6] ? sign * Number(duration[6]) : undefined,\n });\n}\n\nexport function parseYearMonthDuration(durationStr: string): Partial {\n const res = parseDuration(durationStr);\n if ([ 'hours', 'minutes', 'seconds', 'day' ].some(key => Boolean(( res)[key]))) {\n throw new ParseError(durationStr, 'yearMonthDuration');\n }\n return res;\n}\n\nexport function parseDayTimeDuration(durationStr: string): Partial {\n const res = parseDuration(durationStr);\n if ([ 'year', 'month' ].some(key => Boolean(( res)[key]))) {\n throw new ParseError(durationStr, 'dayTimeDuration');\n }\n return res;\n}\n","import type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n} from './DateTimeHelpers';\n\nfunction numSerializer(num: number, min = 2): string {\n return num.toLocaleString(undefined, { minimumIntegerDigits: min, useGrouping: false });\n}\n\nexport function serializeDateTime(date: IDateTimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n // Extraction is needed because the date serializer can not add timezone y\n return `${serializeDate({ year: date.year, month: date.month, day: date.day })}T${serializeTime(date)}`;\n}\n\nfunction serializeTimeZone(tz: Partial): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (tz.zoneHours === undefined || tz.zoneMinutes === undefined) {\n return '';\n }\n if (tz.zoneHours === 0 && tz.zoneMinutes === 0) {\n return 'Z';\n }\n // SerializeTimeZone({ zoneHours: 5, zoneMinutes: 4 }) returns +05:04\n return `${tz.zoneHours >= 0 ? `+${numSerializer(tz.zoneHours)}` : numSerializer(tz.zoneHours)}:${numSerializer(Math.abs(tz.zoneMinutes))}`;\n}\n\nexport function serializeDate(date: IDateRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n return `${numSerializer(date.year, 4)}-${numSerializer(date.month)}-${numSerializer(date.day)}${serializeTimeZone(date)}`;\n}\n\nexport function serializeTime(time: ITimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n return `${numSerializer(time.hours)}:${numSerializer(time.minutes)}:${numSerializer(time.seconds)}${serializeTimeZone(time)}`;\n}\n\nexport function serializeDuration(dur: Partial, zeroString: 'PT0S' | 'P0M' = 'PT0S'): string {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n if (!Object.values(dur).some(val => (val || 0) !== 0)) {\n return zeroString;\n }\n\n const sign = Object.values(dur).some(val => (val || 0) < 0) ? '-' : '';\n const year = dur.year ? `${Math.abs(dur.year)}Y` : '';\n const month = dur.month ? `${Math.abs(dur.month)}M` : '';\n const day = dur.day ? `${Math.abs(dur.day)}D` : '';\n\n const dayNotation = `${sign}P${year}${month}${day}`;\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n if (!(dur.hours || dur.minutes || dur.seconds)) {\n return dayNotation;\n }\n\n const hour = dur.hours ? `${Math.abs(dur.hours)}H` : '';\n const minute = dur.minutes ? `${Math.abs(dur.minutes)}M` : '';\n const second = dur.seconds ? `${Math.abs(dur.seconds)}S` : '';\n\n return `${dayNotation}T${hour}${minute}${second}`;\n}\n","import type {\n IDurationRepresentation,\n IDateTimeRepresentation,\n ITimeZoneRepresentation,\n} from './DateTimeHelpers';\nimport { toUTCDate } from './DateTimeHelpers';\n\nfunction fDiv(arg: number, high: number, low = 0): { intDiv: number; remainder: number } {\n // Adds the 4 spec functions into one since they are highly related,\n // and fQuotient and modulo are almost always called in pairs.\n const first = arg - low;\n const second = high - low;\n const intDiv = Math.floor(first / second);\n return { intDiv, remainder: arg - intDiv * second };\n}\n\nexport function maximumDayInMonthFor(yearValue: number, monthValue: number): number {\n const { intDiv: additionalYears, remainder: month } = fDiv(monthValue, 13, 1);\n const year = yearValue + additionalYears;\n\n if ([ 1, 3, 5, 7, 8, 10, 12 ].includes(month)) {\n return 31;\n }\n if ([ 4, 6, 9, 11 ].includes(month)) {\n return 30;\n }\n if (month === 2 && (\n fDiv(year, 400).remainder === 0 ||\n (fDiv(year, 100).remainder !== 0 && fDiv(year, 4).remainder === 0))) {\n return 29;\n }\n return 28;\n}\n\n// https://www.w3.org/TR/xmlschema-2/#adding-durations-to-dateTimes\nexport function addDurationToDateTime(date: IDateTimeRepresentation, duration: IDurationRepresentation):\nIDateTimeRepresentation {\n // Used to cary over optional fields like timezone\n const newDate: IDateTimeRepresentation = { ...date };\n\n // Month\n let tempDiv = fDiv(date.month + duration.month, 13, 1);\n newDate.month = tempDiv.remainder;\n // Year\n newDate.year = date.year + duration.year + tempDiv.intDiv;\n // Seconds\n tempDiv = fDiv(date.seconds + duration.seconds, 60);\n newDate.seconds = tempDiv.remainder;\n // Minutes\n tempDiv = fDiv(date.minutes + duration.minutes + tempDiv.intDiv, 60);\n newDate.minutes = tempDiv.remainder;\n // Hours\n tempDiv = fDiv(date.hours + duration.hours + tempDiv.intDiv, 24);\n newDate.hours = tempDiv.remainder;\n\n // We skip a part of the spec code since: Defined spec code can not happen since it would be an invalid literal\n\n newDate.day = date.day + duration.day + tempDiv.intDiv;\n\n while (true) {\n let carry;\n if (newDate.day < 1) {\n newDate.day += maximumDayInMonthFor(newDate.year, newDate.month - 1);\n carry = -1;\n } else if (newDate.day > maximumDayInMonthFor(newDate.year, newDate.month)) {\n newDate.day -= maximumDayInMonthFor(newDate.year, newDate.month);\n carry = 1;\n } else {\n break;\n }\n tempDiv = fDiv(newDate.month + carry, 13, 1);\n newDate.month = tempDiv.remainder;\n newDate.year += tempDiv.intDiv;\n }\n return newDate;\n}\n\nexport function elapsedDuration(\n first: IDateTimeRepresentation,\n second: IDateTimeRepresentation,\n defaultTimeZone: ITimeZoneRepresentation,\n): Partial {\n const d1 = toUTCDate(first, defaultTimeZone);\n const d2 = toUTCDate(second, defaultTimeZone);\n const diff = d1.getTime() - d2.getTime();\n return {\n day: Math.floor(diff / (1_000 * 60 * 60 * 24)),\n hours: Math.floor((diff % (1_000 * 60 * 60 * 24)) / (1_000 * 60 * 60)),\n minutes: Math.floor(diff % (1_000 * 60 * 60) / (1_000 * 60)),\n seconds: diff % (1_000 * 60),\n };\n}\n","import type { LRUCache } from 'lru-cache';\nimport type * as E from '../expressions';\nimport { asTermType } from '../expressions';\nimport type { ArgumentType } from '../functions';\nimport { double, float, string } from '../functions/Helpers';\nimport type { KnownLiteralTypes } from './Consts';\nimport { TypeAlias, TypeURL } from './Consts';\n\nexport type OverrideType = KnownLiteralTypes | 'term';\n\n/**\n * Types that are not mentioned just map to 'term'.\n * When editing this, make sure type promotion and substitution don't start interfering.\n * e.g. when saying something like string -> stringly -> anyUri -> term.\n * This would make substitution on types that promote to each other possible. We and the specs don't want that!\n * A DAG will be created based on this. Make sure it doesn't have any cycles!\n */\nexport const extensionTableInput: Record = {\n // Datetime types\n [TypeURL.XSD_DATE_TIME_STAMP]: TypeURL.XSD_DATE_TIME,\n\n // Duration types\n [TypeURL.XSD_DAY_TIME_DURATION]: TypeURL.XSD_DURATION,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: TypeURL.XSD_DURATION,\n\n // Stringly types\n [TypeURL.RDF_LANG_STRING]: TypeAlias.SPARQL_STRINGLY,\n [TypeURL.XSD_STRING]: TypeAlias.SPARQL_STRINGLY,\n\n // String types\n [TypeURL.XSD_NORMALIZED_STRING]: TypeURL.XSD_STRING,\n [TypeURL.XSD_TOKEN]: TypeURL.XSD_NORMALIZED_STRING,\n [TypeURL.XSD_LANGUAGE]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NM_TOKEN]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NAME]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NC_NAME]: TypeURL.XSD_NAME,\n [TypeURL.XSD_ENTITY]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID_REF]: TypeURL.XSD_NC_NAME,\n\n // Numeric types\n // https://www.w3.org/TR/sparql11-query/#operandDataTypes\n // > numeric denotes typed literals with datatypes xsd:integer, xsd:decimal, xsd:float, and xsd:double\n [TypeURL.XSD_DOUBLE]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_FLOAT]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_DECIMAL]: TypeAlias.SPARQL_NUMERIC,\n\n // Decimal types\n [TypeURL.XSD_INTEGER]: TypeURL.XSD_DECIMAL,\n\n [TypeURL.XSD_NON_POSITIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_NEGATIVE_INTEGER]: TypeURL.XSD_NON_POSITIVE_INTEGER,\n\n [TypeURL.XSD_LONG]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_INT]: TypeURL.XSD_LONG,\n [TypeURL.XSD_SHORT]: TypeURL.XSD_INT,\n [TypeURL.XSD_BYTE]: TypeURL.XSD_SHORT,\n\n [TypeURL.XSD_NON_NEGATIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_POSITIVE_INTEGER]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_LONG]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_INT]: TypeURL.XSD_UNSIGNED_LONG,\n [TypeURL.XSD_UNSIGNED_SHORT]: TypeURL.XSD_UNSIGNED_INT,\n [TypeURL.XSD_UNSIGNED_BYTE]: TypeURL.XSD_UNSIGNED_SHORT,\n\n [TypeURL.XSD_DATE_TIME]: 'term',\n [TypeURL.XSD_BOOLEAN]: 'term',\n [TypeURL.XSD_DATE]: 'term',\n [TypeURL.XSD_G_MONTH]: 'term',\n [TypeURL.XSD_G_MONTHDAY]: 'term',\n [TypeURL.XSD_G_YEAR]: 'term',\n [TypeURL.XSD_G_YEAR_MONTH]: 'term',\n [TypeURL.XSD_TIME]: 'term',\n [TypeURL.XSD_G_DAY]: 'term',\n [TypeURL.XSD_DURATION]: 'term',\n [TypeAlias.SPARQL_NUMERIC]: 'term',\n [TypeAlias.SPARQL_STRINGLY]: 'term',\n [TypeURL.XSD_ANY_URI]: 'term',\n};\ntype SuperTypeDict = Record & { __depth: number };\ntype SuperTypeDictTable = Record;\n// The key 'term' is not included in these keys. Something that is just a term will map to number 0.\nexport type GeneralSuperTypeDict = Record & { __depth: number };\nexport const superTypeDictTable: SuperTypeDictTable = Object.create(null);\n\n/**\n * This will return the super types of a type and cache them.\n * @param type IRI we will decide the super types of.\n * @param openWorldType the enabler that provides a way to find super types.\n */\nexport function getSuperTypes(type: string, openWorldType: ISuperTypeProvider): GeneralSuperTypeDict {\n const cached = openWorldType.cache.get(type);\n if (cached) {\n return cached;\n }\n const value = openWorldType.discoverer(type);\n if (value === 'term') {\n const res: GeneralSuperTypeDict = Object.create(null);\n res.__depth = 0;\n res[type] = 0;\n openWorldType.cache.set(type, res);\n return res;\n }\n let subExtension: GeneralSuperTypeDict;\n const knownValue = asKnownLiteralType(value);\n if (knownValue) {\n subExtension = { ...superTypeDictTable[knownValue] };\n } else {\n subExtension = { ...getSuperTypes(value, openWorldType) };\n }\n subExtension.__depth++;\n subExtension[type] = subExtension.__depth;\n openWorldType.cache.set(type, subExtension);\n return subExtension;\n}\n\n// No circular structure allowed! & No other keys allowed!\nexport function extensionTableInit(): void {\n for (const [ _key, value ] of Object.entries(extensionTableInput)) {\n const key = _key;\n if (superTypeDictTable[key]) {\n continue;\n }\n extensionTableBuilderInitKey(key, value, superTypeDictTable);\n }\n}\nextensionTableInit();\n\nfunction extensionTableBuilderInitKey(key: KnownLiteralTypes, value: OverrideType, res: SuperTypeDictTable): void {\n if (value === 'term' || value === undefined) {\n const baseRes: SuperTypeDict = Object.create(null);\n baseRes.__depth = 0;\n baseRes[key] = 0;\n res[key] = baseRes;\n return;\n }\n if (!res[value]) {\n extensionTableBuilderInitKey(value, extensionTableInput[value], res);\n }\n res[key] = { ...res[value], [key]: res[value].__depth + 1, __depth: res[value].__depth + 1 };\n}\n\nexport const typeAliasCheck: Record = Object.create(null);\nfunction initTypeAliasCheck(): void {\n for (const val of Object.values(TypeAlias)) {\n typeAliasCheck[val] = true;\n }\n}\ninitTypeAliasCheck();\n\nexport function asTypeAlias(type: string): TypeAlias | undefined {\n if (type in typeAliasCheck) {\n return type;\n }\n return undefined;\n}\n\nexport function asKnownLiteralType(type: string): KnownLiteralTypes | undefined {\n if (type in superTypeDictTable) {\n return type;\n }\n return undefined;\n}\n\nexport function asOverrideType(type: string): OverrideType | undefined {\n if (asKnownLiteralType(type) ?? type === 'term') {\n return type;\n }\n return undefined;\n}\n\nexport function asGeneralType(type: string): 'term' | E.TermType | undefined {\n if (type === 'term' || asTermType(type)) {\n return <'term' | E.TermType> type;\n }\n return undefined;\n}\n\nexport type TypeCache = LRUCache;\nexport type SuperTypeCallback = (unknownType: string) => string;\nexport interface ISuperTypeProvider {\n cache: TypeCache;\n discoverer: SuperTypeCallback;\n}\n\n/**\n * Internal type of @see isSubTypeOf This only takes knownTypes but doesn't need an enabler\n */\nexport function isInternalSubType(baseType: OverrideType, argumentType: KnownLiteralTypes): boolean {\n return baseType !== 'term' &&\n (superTypeDictTable[baseType] && superTypeDictTable[baseType][argumentType] !== undefined);\n}\n\n/**\n * This function can be used to check the base type is a restriction on a type in the dict.\n * If we want to check if type x is a restriction on string we do this by calling:\n * 'http://www.w3.org/2001/XMLSchema#string' in getSuperTypeDict(X, superTypeProvider)\n * @param baseType\n * @param superTypeProvider\n */\nexport function getSuperTypeDict(baseType: string, superTypeProvider: ISuperTypeProvider): GeneralSuperTypeDict {\n const concreteType: KnownLiteralTypes | undefined = asKnownLiteralType(baseType);\n if (concreteType) {\n // Concrete dataType is known by expression-evaluator.\n return superTypeDictTable[concreteType];\n }\n // Datatype is a custom datatype\n return getSuperTypes(baseType, superTypeProvider);\n}\n\n/**\n * This function needs to be O(1)! The execution time of this function is vital!\n * We define typeA isSubtypeOf typeA as true.\n * If you find yourself using this function a lot (e.g. in a case) please use getSuperTypeDict instead.\n * @param baseType type you want to provide.\n * @param argumentType type you want to provide @param baseType to.\n * @param superTypeProvider the enabler to discover super types of unknown types.\n */\nexport function isSubTypeOf(\n baseType: string,\n argumentType: KnownLiteralTypes,\n superTypeProvider: ISuperTypeProvider,\n): boolean {\n if (baseType === 'term') {\n return false;\n }\n return getSuperTypeDict(baseType, superTypeProvider)[argumentType] !== undefined;\n}\n\n// Defined by https://www.w3.org/TR/xpath-31/#promotion .\n// e.g. When a function takes a string, it can also accept a XSD_ANY_URI if it's cast first.\nexport const typePromotion: Partial E.TermExpression;\n}[]>> = {\n [TypeURL.XSD_STRING]: [\n { typeToPromote: TypeURL.XSD_ANY_URI, conversionFunction: arg => string(arg.str()) },\n ],\n [TypeURL.XSD_DOUBLE]: [\n { typeToPromote: TypeURL.XSD_FLOAT, conversionFunction: arg => double((arg).typedValue) },\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => double((arg).typedValue) },\n ],\n [TypeURL.XSD_FLOAT]: [\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => float((arg).typedValue) },\n ],\n};\n","import { Logger } from '@comunica/types';\n\n/**\n * A logger that voids everything.\n */\nexport class LoggerVoid extends Logger {\n public debug(): void {\n // Void\n }\n\n public error(): void {\n // Void\n }\n\n public fatal(): void {\n // Void\n }\n\n public info(): void {\n // Void\n }\n\n public trace(): void {\n // Void\n }\n\n public warn(): void {\n // Void\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A comunica mediator that runs all actors that resolve their test.\n * This mediator will always resolve to the first actor's output.\n */\nexport class MediatorAll, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator {\n public constructor(args: IMediatorArgs) {\n super(args);\n }\n\n public override async mediate(action: I): Promise {\n // Collect all actors that resolve their test\n const validActors: A[] = [];\n let testResults: IActorReply[];\n try {\n testResults = this.publish(action);\n } catch {\n testResults = [];\n }\n for (const testResult of testResults) {\n try {\n await testResult.reply;\n validActors.push(testResult.actor);\n } catch {\n // Ignore errors\n }\n }\n\n // Send action to all valid actors\n const outputs = await Promise.all(validActors.map(actor => actor.runObservable(action)));\n\n return outputs[0];\n }\n\n protected async mediateWith(): Promise {\n throw new Error('Unsupported operation: MediatorAll#mediateWith');\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica mediator that goes over all actors in sequence and forwards I/O.\n * This required the action input and the actor output to be of the same type.\n */\nexport class MediatorCombinePipeline<\n A extends Actor,\nH extends IAction | (IActorOutput & { context: IActionContext }),\nT extends IActorTest,\n>\n extends Mediator {\n public readonly filterErrors: boolean | undefined;\n public readonly order: 'increasing' | 'decreasing' | undefined;\n public readonly field: string | undefined;\n\n public constructor(args: IMediatorCombinePipelineArgs) {\n super(args);\n }\n\n public override async mediate(action: H): Promise {\n let testResults: IActorReply[] | { actor: A; reply: T }[];\n try {\n testResults = this.publish(action);\n } catch {\n // If no actors are available, just return the input as output\n return action;\n }\n\n if (this.filterErrors) {\n const _testResults: IActorReply[] = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n } catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n\n // Delegate test errors.\n testResults = await Promise.all(testResults.map(async({ actor, reply }) => ({ actor, reply: await reply })));\n\n // Order the test results if ordering is enabled\n if (this.order) {\n // A function used to extract an ordering value from a test result\n const getOrder = (elem: T): number => {\n // If there is a field key use it, otherwise use the input\n // element for ordering\n const value = this.field ? ( elem)[this.field] : elem;\n\n // Check the ordering value is a number\n if (typeof value !== 'number') {\n throw new TypeError('Cannot order elements that are not numbers.');\n }\n return value;\n };\n\n testResults = testResults.sort((actor1, actor2) =>\n (this.order === 'increasing' ? 1 : -1) *\n (getOrder(actor1.reply) - getOrder(actor2.reply)));\n }\n\n // Pass action to first actor,\n // and each actor output as input to the following actor.\n let handle: H = action;\n for (const { actor } of testResults) {\n handle = { ...handle, ...await actor.runObservable(handle) };\n }\n\n // Return the final actor output\n return handle;\n }\n\n protected mediateWith(): Promise {\n throw new Error('Method not supported.');\n }\n}\n\nexport interface IMediatorCombinePipelineArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * If actors that throw test errors should be ignored\n */\n filterErrors?: boolean;\n /**\n * The field to use for ordering (if the ordering strategy is chosen).\n * Leave undefined if the test output is a number rather than an object.\n */\n field?: string;\n /**\n * The strategy of ordering the pipeline (increasing or decreasing).\n * For choosing to leave the order of the pipeline unchanged, leave this undefined.\n * For choosing to order by increasing values: 'increasing'.\n * For choosing to order by decreasing values: 'decreasing'.\n */\n order?: 'increasing' | 'decreasing' | undefined;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A comunica mediator that takes the union of all actor results.\n *\n * The actors that are registered first will have priority on setting overlapping fields.\n */\nexport class MediatorCombineUnion<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends Mediator\n implements IMediatorCombineUnionArgs {\n public readonly filterErrors: boolean | undefined;\n public readonly field: string;\n public readonly combiner: (results: O[]) => O;\n\n public constructor(args: IMediatorCombineUnionArgs) {\n super(args);\n this.combiner = this.createCombiner();\n }\n\n public override async mediate(action: I): Promise {\n let testResults: IActorReply[];\n try {\n testResults = this.publish(action);\n } catch {\n testResults = [];\n }\n\n if (this.filterErrors) {\n const _testResults: IActorReply[] = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n } catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n\n // Delegate test errors.\n await Promise.all(testResults.map(({ reply }) => reply));\n\n // Run action on all actors.\n const results: O[] = await Promise.all(testResults.map(result => result.actor.runObservable(action)));\n\n // Return the combined results.\n return this.combiner(results);\n }\n\n protected mediateWith(): Promise {\n throw new Error('Method not supported.');\n }\n\n protected createCombiner(): (results: O[]) => O {\n return (results: O[]) => {\n const data: any = {};\n data[this.field] = {};\n // eslint-disable-next-line unicorn/prefer-spread\n [{}].concat(results.map((result: any) => result[this.field]))\n // eslint-disable-next-line unicorn/no-array-for-each\n .forEach((value) => {\n data[this.field] = { ...value, ...data[this.field] };\n });\n return data;\n };\n }\n}\n\nexport interface IMediatorCombineUnionArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * If actors that throw test errors should be ignored\n */\n filterErrors?: boolean;\n /**\n * The field name of the test result field over which must be mediated.\n */\n field: string;\n}\n","import type { ActorRdfJoin, IActionRdfJoin } from '@comunica/bus-rdf-join';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorReply, IMediatorArgs } from '@comunica/core';\nimport { Actor, Mediator } from '@comunica/core';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { IQueryOperationResult } from '@comunica/types';\n\n/**\n * A mediator that mediates over actors implementing the Join Coefficients mediator type and assigns fixed weights\n * to calculate an overall score and pick the actor with the lowest score.\n */\nexport class MediatorJoinCoefficientsFixed\n extends Mediator {\n public readonly cpuWeight: number;\n public readonly memoryWeight: number;\n public readonly timeWeight: number;\n public readonly ioWeight: number;\n\n public constructor(args: IMediatorJoinCoefficientsFixedArgs) {\n super(args);\n }\n\n protected async mediateWith(\n action: IActionRdfJoin,\n testResults: IActorReply[],\n ): Promise {\n // Obtain test results\n const errors: Error[] = [];\n const promises = testResults\n .map(({ reply }) => reply)\n .map(promise => promise.catch((error) => {\n errors.push(error);\n }));\n const coefficients = await Promise.all(promises);\n\n // Calculate costs\n let costs: (number | undefined)[] = coefficients\n // eslint-disable-next-line array-callback-return\n .map((coeff) => {\n if (coeff) {\n return coeff.iterations * this.cpuWeight +\n coeff.persistedItems * this.memoryWeight +\n coeff.blockingItems * this.timeWeight +\n coeff.requestTime * this.ioWeight;\n }\n });\n const maxCost = Math.max(...( costs.filter(cost => cost !== undefined)));\n\n // If we have a limit indicator in the context,\n // increase cost of entries that have a number of iterations that is higher than the limit AND block items.\n // In these cases, join operators that produce results early on will be preferred.\n const limitIndicator: number | undefined = action.context.get(KeysQueryOperation.limitIndicator);\n if (limitIndicator) {\n costs = costs.map((cost, i) => {\n if (cost !== undefined && ( coefficients[i]).blockingItems > 0 &&\n\n ( coefficients[i]).iterations > limitIndicator) {\n return cost + maxCost;\n }\n return cost;\n });\n }\n\n // Determine index with lowest cost\n let minIndex = -1;\n let minValue = Number.POSITIVE_INFINITY;\n for (const [ i, cost ] of costs.entries()) {\n if (cost !== undefined && (minIndex === -1 || cost < minValue)) {\n minIndex = i;\n minValue = cost;\n }\n }\n\n // Reject if all actors rejected\n if (minIndex < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${\n errors.map(error => error.message).join('\\n')}`);\n }\n\n // Return actor with lowest cost\n const bestActor = testResults[minIndex].actor;\n\n // Emit calculations in logger\n if (bestActor.includeInLogs) {\n Actor.getContextLogger(action.context)?.debug(`Determined physical join operator '${bestActor.logicalType}-${bestActor.physicalName}'`, {\n entries: action.entries.length,\n variables: await Promise.all(action.entries\n .map(async entry => (await entry.output.metadata()).variables.map(variable => variable.value))),\n costs: Object.fromEntries(costs.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ]).filter(entry => entry[1] !== undefined)),\n coefficients: Object.fromEntries(coefficients.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ]).filter(entry => entry[1] !== undefined)),\n });\n }\n\n return bestActor;\n }\n}\n\nexport interface IMediatorJoinCoefficientsFixedArgs\n extends IMediatorArgs {\n /**\n * Weight for the CPU cost\n */\n cpuWeight: number;\n /**\n * Weight for the memory cost\n */\n memoryWeight: number;\n /**\n * Weight for the execution time cost\n */\n timeWeight: number;\n /**\n * Weight for the I/O cost\n */\n ioWeight: number;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A mediator that can mediate over a single number field.\n *\n * It takes the required 'field' and 'type' parameters.\n * The 'field' parameter represents the field name of the test result field over which must be mediated.\n * The 'type' parameter\n */\nexport class MediatorNumber, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator implements IMediatorNumberArgs {\n public readonly field: string;\n public readonly type: 'min' | 'max';\n public readonly ignoreErrors: boolean;\n public readonly indexPicker: (tests: T[]) => number;\n\n public constructor(args: IMediatorNumberArgs) {\n super(args);\n this.indexPicker = this.createIndexPicker();\n }\n\n /**\n * @return {(tests: T[]) => number} A function that returns the index of the test result\n * that has been chosen by this mediator.\n */\n protected createIndexPicker(): (tests: (T | undefined)[]) => number {\n switch (this.type) {\n case 'min':\n return (tests: (T | undefined)[]): number => tests.reduce((prev, curr, i) => {\n const val: number = this.getOrDefault(( curr)[this.field], Number.POSITIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] > val) ? [ val, i ] : prev;\n }, [ Number.NaN, -1 ])[1];\n case 'max':\n return (tests: (T | undefined)[]): number => tests.reduce((prev, curr, i) => {\n const val: number = this.getOrDefault(( curr)[this.field], Number.NEGATIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] < val) ? [ val, i ] : prev;\n }, [ Number.NaN, -1 ])[1];\n default:\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`No valid \"type\" value was given, must be either 'min' or 'max', but got: ${this.type}`);\n }\n }\n\n protected getOrDefault(value: number | undefined, defaultValue: number): number {\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n return value === undefined ? defaultValue : value;\n }\n\n protected async mediateWith(action: I, testResults: IActorReply[]): Promise {\n let promises = testResults.map(({ reply }) => reply);\n const errors: Error[] = [];\n if (this.ignoreErrors) {\n const dummy: any = {};\n dummy[this.field] = null;\n // eslint-disable-next-line ts/no-floating-promises\n promises = promises.map(promise => promise.catch((error) => {\n errors.push(error);\n return dummy;\n }));\n }\n const results = await Promise.all(promises);\n const index = this.indexPicker(results);\n if (index < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${\n errors.map(error => error.message).join('\\n')}`);\n }\n return testResults[index].actor;\n }\n}\n\nexport interface IMediatorNumberArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * The field name of the test result field over which must be mediated.\n */\n field: string;\n /**\n * The way how the index should be selected.\n * For choosing the minimum value: 'min'.\n * For choosing the maximum value: 'max'.\n */\n type: 'min' | 'max';\n\n /**\n * If actors that throw test errors should be ignored\n */\n ignoreErrors?: boolean;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A mediator that picks the first actor that resolves its test.\n */\nexport class MediatorRace, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator {\n public constructor(args: IMediatorArgs) {\n super(args);\n }\n\n protected mediateWith(action: I, testResults: IActorReply[]): Promise {\n return new Promise((resolve, reject) => {\n const errors: Error[] = [];\n for (const testResult of testResults) {\n testResult.reply.then(() => {\n resolve(testResult.actor);\n }).catch((error) => {\n // Reject if all replies were rejected\n errors.push(error);\n if (errors.length === testResults.length) {\n reject(new Error(`${this.name} mediated over all rejecting actors:\\n${\n errors.map(subError => subError.message).join('\\n')}`));\n }\n });\n }\n });\n }\n}\n","import type { IMetadataValidationState } from '@comunica/types';\n\n/**\n * Reusable implementation for metadata validation states.\n */\nexport class MetadataValidationState implements IMetadataValidationState {\n private readonly invalidateListeners: (() => void)[] = [];\n public valid = true;\n\n public addInvalidateListener(listener: () => void): void {\n this.invalidateListeners.push(listener);\n }\n\n public invalidate(): void {\n if (this.valid) {\n this.valid = false;\n for (const invalidateListener of this.invalidateListeners) {\n invalidateListener();\n }\n }\n }\n}\n","/**\n * A logger accepts messages from different levels\n * and emits them in a certain way.\n */\nexport abstract class Logger {\n /**\n * All available logging levels.\n * @type {{trace: number; debug: number; info: number; warn: number; error: number; fatal: number}}\n */\n\n public static readonly LEVELS: Record = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n };\n\n /**\n * Convert a string-based logging level to a numerical logging level.\n * @param level A string-based logging level\n * @return The numerical logging level, or undefined.\n */\n public static getLevelOrdinal(level: string): number {\n return Logger.LEVELS[level];\n }\n\n public abstract trace(message: string, data?: any): void;\n public abstract debug(message: string, data?: any): void;\n public abstract info(message: string, data?: any): void;\n public abstract warn(message: string, data?: any): void;\n public abstract error(message: string, data?: any): void;\n public abstract fatal(message: string, data?: any): void;\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (typeof object === 'number' && isNaN(object)) {\n throw new Error('NaN is not allowed');\n }\n\n if (typeof object === 'number' && !isFinite(object)) {\n throw new Error('Infinity is not allowed');\n }\n\n if (object === null || typeof object !== 'object') {\n return JSON.stringify(object);\n }\n\n if (object.toJSON instanceof Function) {\n return serialize(object.toJSON());\n }\n\n if (Array.isArray(object)) {\n const values = object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return `${t}${comma}${serialize(value)}`;\n }, '');\n return `[${values}]`;\n }\n\n const values = Object.keys(object).sort().reduce((t, cv) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return `${t}${comma}${serialize(cv)}:${serialize(object[cv])}`;\n }, '');\n return `{${values}}`;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.promisifyEventEmitter = void 0;\nfunction promisifyEventEmitter(event, result) {\n return new Promise((resolve, reject) => {\n event.on('end', () => resolve(result));\n event.on('error', reject);\n });\n}\nexports.promisifyEventEmitter = promisifyEventEmitter;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n if ((a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n for (i of a.entries())\n if (!equal(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if ((a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","/**\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n return { value: false };\n}\n\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n}\n\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\n\nIterator.prototype.toString = function toString () {\n return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n}\n\nfunction iteratorDone() {\n return { value: undefined, done: true };\n}\n\nfunction hasIterator(maybeIterable) {\n if (Array.isArray(maybeIterable)) {\n // IE11 trick as it does not support `Symbol.iterator`\n return true;\n }\n\n return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nfunction isEntriesIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.entries;\n}\n\nfunction isKeysIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.keys;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n}\n\nvar Seq = /*@__PURE__*/(function (Collection) {\n function Seq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection ) Seq.__proto__ = Collection;\n Seq.prototype = Object.create( Collection && Collection.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === undefined || value === null\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (\n isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object).concat(\n Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []\n );\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n}\n\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n}\n\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return isEntriesIterable(value)\n ? seq.fromEntrySeq()\n : isKeysIterable(value)\n ? seq.toSetSeq()\n : seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n}\n\nvar imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n if (o == null) {\n return hashNullish(o);\n }\n\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n\n var v = valueOf(o);\n\n if (v == null) {\n return hashNullish(v);\n }\n\n switch (typeof v) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return v ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(v);\n case 'string':\n return v.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(v)\n : hashString(v);\n case 'object':\n case 'function':\n return hashJSObj(v);\n case 'symbol':\n return hashSymbol(v);\n default:\n if (typeof v.toString === 'function') {\n return hashString(v.toString());\n }\n throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n }\n}\n\nfunction hashNullish(nullish) {\n return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n}\n\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n}\n\nfunction hashSymbol(sym) {\n var hashed = symbolMap[sym];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = nextHash();\n\n symbolMap[sym] = hashed;\n\n return hashed;\n}\n\nfunction hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = nextHash();\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function () {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = (function () {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n}\n\nfunction valueOf(obj) {\n return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'\n ? obj.valueOf(obj)\n : obj;\n}\n\nfunction nextHash() {\n var nextHash = ++_objHashUID;\n if (_objHashUID & 0x40000000) {\n _objHashUID = 0;\n }\n return nextHash;\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\n\nvar symbolMap = Object.create(null);\n\nvar _objHashUID = 0;\n\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;\n ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;\n ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;\n ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;\n FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function () {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function (type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n var this$1$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction partitionFactory(collection, predicate, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = [[], []];\n collection.__iterate(function (v, k) {\n groups[predicate.call(context, v, k, collection) ? 1 : 0].push(\n isKeyedIter ? [k, v] : v\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); });\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function (type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&\n fn(v, iterations++, this$1$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries\n .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })\n .forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function (fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function (type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(\n null,\n steps.map(function (s) { return s.value; })\n )\n );\n });\n };\n return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\n\nfunction collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n}\n\nfunction makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n}\n\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n}\n\nfunction invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n}\n\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isPlainObject(value) {\n // The base prototype's toString deals with Argument objects and native namespaces like Math\n if (\n !value ||\n typeof value !== 'object' ||\n toString.call(value) !== '[object Object]'\n ) {\n return false;\n }\n\n var proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n\n // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n var parentProto = proto;\n var nextProto = Object.getPrototypeOf(proto);\n while (nextProto !== null) {\n parentProto = nextProto;\n nextProto = Object.getPrototypeOf(parentProto);\n }\n return parentProto === proto;\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObject(value))\n );\n}\n\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\n\nfunction has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n}\n\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n}\n\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\n\nfunction updateIn$1(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n}\n\nfunction setIn$1(collection, keyPath, value) {\n return updateIn$1(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn(keyPath, v) {\n return setIn$1(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n return updateIn$1(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\n\nfunction update$1(collection, key, notSetValue, updater) {\n return updateIn$1(collection, [key], notSetValue, updater);\n}\n\nfunction update(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update$1(this, key, notSetValue, updater);\n}\n\nfunction updateIn(keyPath, notSetValue, updater) {\n return updateIn$1(this, keyPath, notSetValue, updater);\n}\n\nfunction merge$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\n\nfunction merge(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection(sources[i]).forEach(mergeItem);\n }\n return merged;\n}\n\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) &&\n isDataStructure(newValue) &&\n areMergeable(oldValue, newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n}\n\n/**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\nfunction areMergeable(oldDataStructure, newDataStructure) {\n var oldSeq = Seq(oldDataStructure);\n var newSeq = Seq(newDataStructure);\n // This logic assumes that a sequence can only fall into one of the three\n // categories mentioned above (since there's no `isSetLike()` method).\n return (\n isIndexed(oldSeq) === isIndexed(newSeq) &&\n isKeyed(oldSeq) === isKeyed(newSeq)\n );\n}\n\nfunction mergeDeep() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\nfunction mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n}\n\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n return this.__altered;\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection) {\n function Map(value) {\n return value === undefined || value === null\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection ) Map.__proto__ = KeyedCollection;\n Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, this$1$1));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update;\nMapPrototype.updateIn = updateIn;\nMapPrototype.merge = MapPrototype.concat = merge$1;\nMapPrototype.mergeWith = mergeWith$1;\nMapPrototype.mergeDeep = mergeDeep;\nMapPrototype.mergeDeepWith = mergeDeepWith;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function (result, arr) {\n return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =\n function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n };\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =\n function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n };\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator ) MapIterator.__proto__ = Iterator;\n MapIterator.prototype = Object.create( Iterator && Iterator.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n}\n\nfunction makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n}\n\nfunction isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection) {\n function List(value) {\n var empty = emptyList();\n if (value === undefined || value === null) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection ) List.__proto__ = IndexedCollection;\n List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update;\nListPrototype.updateIn = updateIn;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function (result, arr) {\n return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\n\nvar EMPTY_LIST;\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n}\n\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map) {\n function OrderedMap(value) {\n return value === undefined || value === null\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map ) OrderedMap.__proto__ = Map;\n OrderedMap.prototype = Object.create( Map && Map.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n this.__altered = true;\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n omap.__altered = false;\n return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n omap.__altered = true;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection) {\n function Stack(value) {\n return value === undefined || value === null\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;\n Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function (result, arr) {\n return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n}\n\nfunction mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\n\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection) {\n function Set(value) {\n return value === undefined || value === null\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection ) Set.__proto__ = SetCollection;\n Set.prototype = Object.create( SetCollection && SetCollection.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n // keep track if the set is altered by the map function\n var didChanges = false;\n\n var newMap = updateSet(\n this,\n this._map.mapEntries(function (ref) {\n var v = ref[1];\n\n var mapped = mapper.call(context, v, v, this$1$1);\n\n if (mapped !== v) {\n didChanges = true;\n }\n\n return [mapped, mapped];\n }, context)\n );\n\n return didChanges ? newMap : this;\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n if (typeof iters[ii] === 'string') {\n set.add(iters[ii]);\n } else {\n SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function (result, arr) {\n return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq ) Range.__proto__ = IndexedSeq;\n Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nfunction getIn$1(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n}\n\nfunction getIn(searchKeyPath, notSetValue) {\n return getIn$1(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn$1(collection, keyPath) {\n return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn(searchKeyPath) {\n return hasIn$1(this, searchKeyPath);\n}\n\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq().map(this.__toStringMapper).join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n partition: function partition(predicate, context) {\n return partitionFactory(this, predicate, context);\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = false;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n returnValue = true;\n return false;\n }\n });\n return returnValue;\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq().reverse().first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })\n .flip()\n );\n },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n this.size === Infinity ||\n (this.size !== undefined && index > this.size)\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n});\n\nvar SetCollectionPrototype = SetCollection.prototype;\nSetCollectionPrototype.has = CollectionPrototype.includes;\nSetCollectionPrototype.contains = SetCollectionPrototype.includes;\nSetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollectionPrototype);\nmixin(IndexedSeq, IndexedCollectionPrototype);\nmixin(SetSeq, SetCollectionPrototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n}\n\nfunction keyMapper(v, k) {\n return k;\n}\n\nfunction entryMapper(v, k) {\n return [k, v];\n}\n\nfunction not(predicate) {\n return function () {\n return !predicate.apply(this, arguments);\n };\n}\n\nfunction neg(predicate) {\n return function () {\n return -predicate.apply(this, arguments);\n };\n}\n\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n}\n\nfunction hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set) {\n function OrderedSet(value) {\n return value === undefined || value === null\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set ) OrderedSet.__proto__ = Set;\n OrderedSet.prototype = Object.create( Set && Set.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n}\n\nvar PairSorting = {\n LeftThenRight: -1,\n RightThenLeft: +1,\n};\n\nfunction throwOnInvalidDefaultValues(defaultValues) {\n if (isRecord(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'\n );\n }\n\n if (isImmutable(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'\n );\n }\n\n if (defaultValues === null || typeof defaultValues !== 'object') {\n throw new Error(\n 'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'\n );\n }\n}\n\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n throwOnInvalidDefaultValues(defaultValues);\n\n var RecordType = function Record(values) {\n var this$1$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n });\n });\n return this;\n };\n\n var RecordTypePrototype = (RecordType.prototype =\n Object.create(RecordPrototype));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n return (\n this === other ||\n (isRecord(other) && recordSeq(this).equals(recordSeq(other)))\n );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge$1;\nRecordPrototype.mergeWith = mergeWith$1;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep;\nRecordPrototype.mergeDeepWith = mergeDeepWith;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn;\nRecordPrototype.update = update;\nRecordPrototype.updateIn = updateIn;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\n\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function () {\n return this.get(name);\n },\n set: function (value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;\n Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n if (\n typeof value !== 'string' &&\n !isImmutable(value) &&\n (isArrayLike(value) || hasIterator(value) || isPlainObject(value))\n ) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n}\n\nfunction defaultConverter(k, v) {\n // Effectively the opposite of \"Collection.toSeq()\"\n return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n}\n\nvar version = \"4.3.5\";\n\nvar Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n PairSorting: PairSorting,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isPlainObject: isPlainObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn$1,\n has: has,\n hasIn: hasIn$1,\n merge: merge,\n mergeDeep: mergeDeep$1,\n mergeWith: mergeWith,\n mergeDeepWith: mergeDeepWith$1,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn$1,\n update: update$1,\n updateIn: updateIn$1,\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport default Immutable;\nexport { Collection, Iterable, List, Map, OrderedMap, OrderedSet, PairSorting, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn$1 as getIn, has, hasIn$1 as hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep$1 as mergeDeep, mergeDeepWith$1 as mergeDeepWith, mergeWith, remove, removeIn, set, setIn$1 as setIn, update$1 as update, updateIn$1 as updateIn, version };\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/BlankNode\"), exports);\n__exportStar(require(\"./lib/DataFactory\"), exports);\n__exportStar(require(\"./lib/DefaultGraph\"), exports);\n__exportStar(require(\"./lib/Literal\"), exports);\n__exportStar(require(\"./lib/NamedNode\"), exports);\n__exportStar(require(\"./lib/Quad\"), exports);\n__exportStar(require(\"./lib/Variable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNode = void 0;\n/**\n * A term that represents an RDF blank node with a label.\n */\nclass BlankNode {\n constructor(value) {\n this.termType = 'BlankNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNode = BlankNode;\n//# sourceMappingURL=BlankNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataFactory = void 0;\nconst BlankNode_1 = require(\"./BlankNode\");\nconst DefaultGraph_1 = require(\"./DefaultGraph\");\nconst Literal_1 = require(\"./Literal\");\nconst NamedNode_1 = require(\"./NamedNode\");\nconst Quad_1 = require(\"./Quad\");\nconst Variable_1 = require(\"./Variable\");\nlet dataFactoryCounter = 0;\n/**\n * A factory for instantiating RDF terms and quads.\n */\nclass DataFactory {\n constructor(options) {\n this.blankNodeCounter = 0;\n options = options || {};\n this.blankNodePrefix = options.blankNodePrefix || `df_${dataFactoryCounter++}_`;\n }\n /**\n * @param value The IRI for the named node.\n * @return A new instance of NamedNode.\n * @see NamedNode\n */\n namedNode(value) {\n return new NamedNode_1.NamedNode(value);\n }\n /**\n * @param value The optional blank node identifier.\n * @return A new instance of BlankNode.\n * If the `value` parameter is undefined a new identifier\n * for the blank node is generated for each call.\n * @see BlankNode\n */\n blankNode(value) {\n return new BlankNode_1.BlankNode(value || `${this.blankNodePrefix}${this.blankNodeCounter++}`);\n }\n /**\n * @param value The literal value.\n * @param languageOrDatatype The optional language or datatype.\n * If `languageOrDatatype` is a NamedNode,\n * then it is used for the value of `NamedNode.datatype`.\n * Otherwise `languageOrDatatype` is used for the value\n * of `NamedNode.language`.\n * @return A new instance of Literal.\n * @see Literal\n */\n literal(value, languageOrDatatype) {\n return new Literal_1.Literal(value, languageOrDatatype);\n }\n /**\n * This method is optional.\n * @param value The variable name\n * @return A new instance of Variable.\n * @see Variable\n */\n variable(value) {\n return new Variable_1.Variable(value);\n }\n /**\n * @return An instance of DefaultGraph.\n */\n defaultGraph() {\n return DefaultGraph_1.DefaultGraph.INSTANCE;\n }\n /**\n * @param subject The quad subject term.\n * @param predicate The quad predicate term.\n * @param object The quad object term.\n * @param graph The quad graph term.\n * @return A new instance of Quad.\n * @see Quad\n */\n quad(subject, predicate, object, graph) {\n return new Quad_1.Quad(subject, predicate, object, graph || this.defaultGraph());\n }\n /**\n * Create a deep copy of the given term using this data factory.\n * @param original An RDF term.\n * @return A deep copy of the given term.\n */\n fromTerm(original) {\n // TODO: remove nasty any casts when this TS bug has been fixed:\n // https://github.com/microsoft/TypeScript/issues/26933\n switch (original.termType) {\n case 'NamedNode':\n return this.namedNode(original.value);\n case 'BlankNode':\n return this.blankNode(original.value);\n case 'Literal':\n if (original.language) {\n return this.literal(original.value, original.language);\n }\n if (!original.datatype.equals(Literal_1.Literal.XSD_STRING)) {\n return this.literal(original.value, this.fromTerm(original.datatype));\n }\n return this.literal(original.value);\n case 'Variable':\n return this.variable(original.value);\n case 'DefaultGraph':\n return this.defaultGraph();\n case 'Quad':\n return this.quad(this.fromTerm(original.subject), this.fromTerm(original.predicate), this.fromTerm(original.object), this.fromTerm(original.graph));\n }\n }\n /**\n * Create a deep copy of the given quad using this data factory.\n * @param original An RDF quad.\n * @return A deep copy of the given quad.\n */\n fromQuad(original) {\n return this.fromTerm(original);\n }\n /**\n * Reset the internal blank node counter.\n */\n resetBlankNodeCounter() {\n this.blankNodeCounter = 0;\n }\n}\nexports.DataFactory = DataFactory;\n//# sourceMappingURL=DataFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultGraph = void 0;\n/**\n * A singleton term instance that represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass DefaultGraph {\n constructor() {\n this.termType = 'DefaultGraph';\n this.value = '';\n // Private constructor\n }\n equals(other) {\n return !!other && other.termType === 'DefaultGraph';\n }\n}\nexports.DefaultGraph = DefaultGraph;\nDefaultGraph.INSTANCE = new DefaultGraph();\n//# sourceMappingURL=DefaultGraph.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Literal = void 0;\nconst NamedNode_1 = require(\"./NamedNode\");\n/**\n * A term that represents an RDF literal, containing a string with an optional language tag or datatype.\n */\nclass Literal {\n constructor(value, languageOrDatatype) {\n this.termType = 'Literal';\n this.value = value;\n if (typeof languageOrDatatype === 'string') {\n this.language = languageOrDatatype;\n this.datatype = Literal.RDF_LANGUAGE_STRING;\n }\n else if (languageOrDatatype) {\n this.language = '';\n this.datatype = languageOrDatatype;\n }\n else {\n this.language = '';\n this.datatype = Literal.XSD_STRING;\n }\n }\n equals(other) {\n return !!other && other.termType === 'Literal' && other.value === this.value &&\n other.language === this.language && this.datatype.equals(other.datatype);\n }\n}\nexports.Literal = Literal;\nLiteral.RDF_LANGUAGE_STRING = new NamedNode_1.NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');\nLiteral.XSD_STRING = new NamedNode_1.NamedNode('http://www.w3.org/2001/XMLSchema#string');\n//# sourceMappingURL=Literal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NamedNode = void 0;\n/**\n * A term that contains an IRI.\n */\nclass NamedNode {\n constructor(value) {\n this.termType = 'NamedNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'NamedNode' && other.value === this.value;\n }\n}\nexports.NamedNode = NamedNode;\n//# sourceMappingURL=NamedNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Quad = void 0;\n/**\n * An instance of DefaultGraph represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass Quad {\n constructor(subject, predicate, object, graph) {\n this.termType = 'Quad';\n this.value = '';\n this.subject = subject;\n this.predicate = predicate;\n this.object = object;\n this.graph = graph;\n }\n equals(other) {\n // `|| !other.termType` is for backwards-compatibility with old factories without RDF* support.\n return !!other && (other.termType === 'Quad' || !other.termType) &&\n this.subject.equals(other.subject) &&\n this.predicate.equals(other.predicate) &&\n this.object.equals(other.object) &&\n this.graph.equals(other.graph);\n }\n}\nexports.Quad = Quad;\n//# sourceMappingURL=Quad.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Variable = void 0;\n/**\n * A term that represents a variable.\n */\nclass Variable {\n constructor(value) {\n this.termType = 'Variable';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'Variable' && other.value === this.value;\n }\n}\nexports.Variable = Variable;\n//# sourceMappingURL=Variable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/RdfIsomorphic\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTermGrounded = exports.termToSignature = exports.quadToSignature = exports.sha1hex = exports.hashTerm = exports.hashTerms = exports.getGraphBlankNodes = exports.uniqGraph = exports.deindexGraph = exports.indexGraph = exports.getQuadsWithoutBlankNodes = exports.getQuadsWithBlankNodes = exports.hasValue = exports.hashValues = exports.getBijectionInner = exports.getBijection = exports.isomorphic = void 0;\nconst hash_js_1 = require(\"hash.js\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\n/**\n * Determines if the two given graphs are isomorphic.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {boolean} If the two given graphs are isomorphic.\n */\nfunction isomorphic(graphA, graphB) {\n return !!getBijection(graphA, graphB);\n}\nexports.isomorphic = isomorphic;\n/**\n * Calculate a hash of graphA blank nodes to graphB blank nodes.\n * This represents a bijection from graphA's blank nodes to graphB's blank nodes.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {IBijection} A hash representing a bijection, or null if none could be found.\n */\nfunction getBijection(graphA, graphB) {\n // Check if all (non-blanknode-containing) quads in the two graphs are equal.\n // We do this by creating a hash-based index for both graphs.\n const nonBlankIndexA = indexGraph(getQuadsWithoutBlankNodes(graphA));\n const nonBlankIndexB = indexGraph(getQuadsWithoutBlankNodes(graphB));\n if (Object.keys(nonBlankIndexA).length !== Object.keys(nonBlankIndexB).length) {\n return null;\n }\n for (const key in nonBlankIndexA) {\n if (nonBlankIndexA[key] !== nonBlankIndexB[key]) {\n return null;\n }\n }\n // Pre-process data that needs to be present in each iteration of getBijectionInner.\n const blankQuadsA = uniqGraph(getQuadsWithBlankNodes(graphA));\n const blankQuadsB = uniqGraph(getQuadsWithBlankNodes(graphB));\n const blankNodesA = getGraphBlankNodes(graphA);\n const blankNodesB = getGraphBlankNodes(graphB);\n return getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB);\n}\nexports.getBijection = getBijection;\nfunction getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, groundedHashesA, groundedHashesB) {\n if (!groundedHashesA) {\n groundedHashesA = {};\n }\n if (!groundedHashesB) {\n groundedHashesB = {};\n }\n // Hash every term based on the signature of the quads if appears in.\n const [hashesA, ungroundedHashesA] = hashTerms(blankQuadsA, blankNodesA, groundedHashesA);\n const [hashesB, ungroundedHashesB] = hashTerms(blankQuadsB, blankNodesB, groundedHashesB);\n // Break quickly if a graph contains a grounded node that is not contained in the other graph.\n if (Object.keys(hashesA).length !== Object.keys(hashesB).length) {\n return null;\n }\n for (const hashKeyA in hashesA) {\n if (!hasValue(hashesB, hashesA[hashKeyA])) {\n return null;\n }\n }\n // Map the blank nodes from graph A to the blank nodes of graph B using the created hashes.\n // Grounded hashes will also be equal, but not needed here, we will need them in the next recursion\n // (as we only recurse on grounded nodes).\n let bijection = {};\n for (const blankNodeA of blankNodesA) {\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n const blankNodeAHash = ungroundedHashesA[blankNodeAString];\n for (const blankNodeBString in ungroundedHashesB) {\n if (ungroundedHashesB[blankNodeBString] === blankNodeAHash) {\n bijection[blankNodeAString] = blankNodeBString;\n delete ungroundedHashesB[blankNodeBString];\n break;\n }\n }\n }\n // Check if all nodes from graph A and B are present in the bijection,\n // if not, speculatively mark pairs with matching ungrounded hashes as bijected, and recurse.\n if (!arraysEqual(Object.keys(bijection).sort(), blankNodesA.map(rdf_string_1.termToString).sort())\n || !arraysEqual(hashValues(bijection).sort(), blankNodesB.map(rdf_string_1.termToString).sort())) {\n // I have not yet been able to find any pathological cases where this code is reached.\n // This may be removable, but let's wait until someone proves that.\n bijection = null;\n for (const blankNodeA of blankNodesA) {\n // Only replace ungrounded node hashes\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n if (!hashesA[blankNodeAString]) {\n for (const blankNodeB of blankNodesB) {\n // Only replace ungrounded node hashes\n const blankNodeBString = rdf_string_1.termToString(blankNodeB);\n if (!hashesB[blankNodeBString]) {\n if (ungroundedHashesA[blankNodeAString] === ungroundedHashesB[blankNodeBString]) {\n const hash = sha1hex(blankNodeAString);\n bijection = getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, Object.assign(Object.assign({}, hashesA), { [blankNodeAString]: hash }), Object.assign(Object.assign({}, hashesB), { [blankNodeBString]: hash }));\n }\n }\n }\n }\n }\n }\n return bijection;\n}\nexports.getBijectionInner = getBijectionInner;\nfunction arraysEqual(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = array1.length; i--;) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Get all values from the given hash\n * @param hash A hash.\n * @return {any[]} The array of values.\n */\nfunction hashValues(hash) {\n const arr = [];\n for (const e in hash) {\n arr.push(hash[e]);\n }\n return arr;\n}\nexports.hashValues = hashValues;\n/**\n * Check if the given hash contains the given value.\n * @param hash A hash.\n * @param {string} value A value.\n * @return {boolean} If it contains the value.\n */\nfunction hasValue(hash, value) {\n for (const hashValue in hash) {\n if (hash[hashValue] === value) {\n return true;\n }\n }\n return false;\n}\nexports.hasValue = hasValue;\n/**\n * Get all quads with blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads with blank nodes\n */\nfunction getQuadsWithBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.someTerms(quad, (value) => {\n return value.termType === 'BlankNode'\n || (value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithBlankNodes = getQuadsWithBlankNodes;\n/**\n * Get all quads without blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads without blank nodes\n */\nfunction getQuadsWithoutBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.everyTerms(quad, (value) => {\n return value.termType !== 'BlankNode'\n && !(value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithoutBlankNodes = getQuadsWithoutBlankNodes;\n/**\n * Create a hash-based index of the given graph.\n * @param {Quad[]} graph An array of quads, the order does not matter.\n * @return {{[p: string]: boolean}} A hash-based datastructure representing the graph.\n */\nfunction indexGraph(graph) {\n const index = {};\n for (const quad of graph) {\n index[JSON.stringify(rdf_string_1.quadToStringQuad(quad))] = true;\n }\n return index;\n}\nexports.indexGraph = indexGraph;\n/**\n * Create a graph from the given hash-based index.\n * @param {{[p: string]: boolean}} indexedGraph A hash-based datastructure representing the graph.\n * @return {Quad[]} An array of quads, the order does not matter.\n */\nfunction deindexGraph(indexedGraph) {\n return Object.keys(indexedGraph).map((str) => rdf_string_1.stringQuadToQuad(JSON.parse(str)));\n}\nexports.deindexGraph = deindexGraph;\n/**\n * Unique-ify the given RDF graph based on strict equality.\n * The output graph will consist of new quad and term instances.\n * @param {Quad[]} graph An input graph.\n * @return {Quad[]} The input graph without duplicates.\n */\nfunction uniqGraph(graph) {\n return deindexGraph(indexGraph(graph));\n}\nexports.uniqGraph = uniqGraph;\n/**\n * Find all blank nodes in the given graph.\n * @param {Quad[]} graph An array of quads.\n * @return {BlankNode[]} A list of (unique) blank nodes.\n */\nfunction getGraphBlankNodes(graph) {\n return rdf_terms_1.uniqTerms(graph.map((quad) => rdf_terms_1.getBlankNodes(rdf_terms_1.getTermsNested(quad)))\n .reduce((acc, val) => acc.concat(val), []));\n}\nexports.getGraphBlankNodes = getGraphBlankNodes;\n/**\n * Create term hashes for the given set of quads and blank node terms.\n *\n * @param {Quad[]} quads A set of quads.\n * @param {Term[]} terms Blank node terms.\n * @param {ITermHash} groundedHashes Grounded term hashes that are used to create more specific signatures\n * of other terms, because they are based on non-blank nodes and grounded blank nodes.\n * @return {[ITermHash]} A tuple of grounded and ungrounded hashes.\n */\nfunction hashTerms(quads, terms, groundedHashes) {\n const hashes = Object.assign({}, groundedHashes);\n const ungroundedHashes = {};\n let hashNeeded = true;\n // Iteratively mark nodes as grounded.\n // If a node is marked as grounded, then the next iteration can lead to new grounded states\n while (hashNeeded) {\n const initialGroundedNodesCount = Object.keys(hashes).length;\n for (const term of terms) {\n const termString = rdf_string_1.termToString(term);\n if (!hashes[termString]) {\n const [grounded, hash] = hashTerm(term, quads, hashes);\n if (grounded) {\n hashes[termString] = hash;\n }\n ungroundedHashes[termString] = hash;\n }\n }\n // All terms that have a unique hash at this point can be marked as grounded\n const uniques = {};\n for (const termKey in ungroundedHashes) {\n const hash = ungroundedHashes[termKey];\n if (uniques[hash] === undefined) {\n uniques[hash] = termKey;\n }\n else {\n uniques[hash] = false;\n }\n }\n for (const hash in uniques) {\n const value = uniques[hash];\n if (value) {\n hashes[value] = hash;\n }\n }\n // Check if the loop needs to terminate\n hashNeeded = initialGroundedNodesCount !== Object.keys(hashes).length;\n }\n return [hashes, ungroundedHashes];\n}\nexports.hashTerms = hashTerms;\n/**\n * Generate a hash for the given term based on the signature of the quads it appears in.\n *\n * Signatures are made up of grounded terms in quads that are associated with a term,\n * i.e., everything except for ungrounded blank nodes.\n * The hash is created by hashing a sorted list of each quad's signature,\n * where each quad signature is a concatenation of the signature of all grounded terms.\n *\n * Terms are considered grounded if they are a member in the given hash AND if they are not the given term.\n *\n * @param {Term} term The term to get the hash around.\n * @param {Quad[]} quads The quads to include in the hashing.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {[boolean , string]} A tuple indicating if the given term is grounded in all the given quads, and the hash.\n */\nfunction hashTerm(term, quads, hashes) {\n const quadSignatures = [];\n let grounded = true;\n for (const quad of quads) {\n const terms = rdf_terms_1.getTermsNested(quad);\n if (terms.some((quadTerm) => quadTerm.equals(term))) {\n quadSignatures.push(quadToSignature(quad, hashes, term));\n for (const quadTerm of terms) {\n if (!isTermGrounded(quadTerm, hashes) && !quadTerm.equals(term)) {\n grounded = false;\n }\n }\n }\n }\n const hash = sha1hex(quadSignatures.sort().join(''));\n return [grounded, hash];\n}\nexports.hashTerm = hashTerm;\n/**\n * Create a hash using sha1 as a hex digest.\n * @param {string | Buffer | NodeJS.TypedArray | DataView} data Something to hash.\n * @return {string} A hash string.\n */\nfunction sha1hex(data) {\n return hash_js_1.sha1().update(data).digest('hex');\n}\nexports.sha1hex = sha1hex;\n/**\n * Convert the given quad to a string signature so that it can be used in the hash structure.\n * @param {Quad} quad A quad.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} term A target term to compare with.\n * @return {string} A string signature.\n */\nfunction quadToSignature(quad, hashes, term) {\n return rdf_terms_1.getTerms(quad).map((quadTerm) => termToSignature(quadTerm, hashes, term)).join('|');\n}\nexports.quadToSignature = quadToSignature;\n/**\n * Convert the given term to a string signature so that it can be used in the hash structure.\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} target A target term to compare with.\n * @return {string} A string signature.\n */\nfunction termToSignature(term, hashes, target) {\n if (term.equals(target)) {\n return '@self';\n }\n else if (term.termType === 'BlankNode') {\n return hashes[rdf_string_1.termToString(term)] || '@blank';\n }\n else if (term.termType === 'Quad') {\n return `<${quadToSignature(term, hashes, target)}>`;\n }\n else {\n return rdf_string_1.termToString(term);\n }\n}\nexports.termToSignature = termToSignature;\n/**\n * Check if a term is grounded.\n *\n * A term is grounded if it is not a blank node\n * or if it included in the given hash of grounded nodes.\n *\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {boolean} If the given term is grounded.\n */\nfunction isTermGrounded(term, hashes) {\n return (term.termType !== 'BlankNode'\n && !(term.termType === 'Quad' && rdf_terms_1.getTermsNested(term).some(subTerm => !isTermGrounded(subTerm, hashes)))) || !!hashes[rdf_string_1.termToString(term)];\n}\nexports.isTermGrounded = isTermGrounded;\n//# sourceMappingURL=RdfIsomorphic.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.termToString = exports.stringToTerm = exports.stringQuadToQuad = exports.quadToStringQuad = exports.getLiteralValue = exports.getLiteralType = exports.getLiteralLanguage = void 0;\nconst TermUtil_1 = require(\"./lib/TermUtil\");\nObject.defineProperty(exports, \"getLiteralLanguage\", { enumerable: true, get: function () { return TermUtil_1.getLiteralLanguage; } });\nObject.defineProperty(exports, \"getLiteralType\", { enumerable: true, get: function () { return TermUtil_1.getLiteralType; } });\nObject.defineProperty(exports, \"getLiteralValue\", { enumerable: true, get: function () { return TermUtil_1.getLiteralValue; } });\nObject.defineProperty(exports, \"quadToStringQuad\", { enumerable: true, get: function () { return TermUtil_1.quadToStringQuad; } });\nObject.defineProperty(exports, \"stringQuadToQuad\", { enumerable: true, get: function () { return TermUtil_1.stringQuadToQuad; } });\nObject.defineProperty(exports, \"stringToTerm\", { enumerable: true, get: function () { return TermUtil_1.stringToTerm; } });\nObject.defineProperty(exports, \"termToString\", { enumerable: true, get: function () { return TermUtil_1.termToString; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringQuadToQuad = exports.quadToStringQuad = exports.stringToTerm = exports.getLiteralLanguage = exports.getLiteralType = exports.getLiteralValue = exports.termToString = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst FACTORY = new rdf_data_factory_1.DataFactory();\n/**\n * Utility methods for converting between string-based RDF representations and RDFJS objects.\n *\n * RDF Terms are represented as follows:\n * * Blank nodes: '_:myBlankNode'\n * * Variables: '?myVariable'\n * * Literals: '\"myString\"', '\"myLanguageString\"@en-us', '\"3\"^^xsd:number'\n * * URIs: 'http://example.org'\n *\n * Quads/triples are represented as hashes with 'subject', 'predicate', 'object' and 'graph' (optional)\n * as keys, and string-based RDF terms as values.\n */\n/**\n * Convert an RDFJS term to a string-based representation.\n * @param {RDF.Term} term An RDFJS term.\n * @return {string} A string-based term representation.\n */\nfunction termToString(term) {\n // TODO: remove nasty any casts when this TS bug has been fixed: https://github.com/microsoft/TypeScript/issues/26933\n if (!term) {\n return undefined;\n }\n switch (term.termType) {\n case 'NamedNode': return term.value;\n case 'BlankNode': return ('_:' + term.value);\n case 'Literal':\n const literalValue = term;\n return ('\"' + literalValue.value + '\"' +\n (literalValue.datatype &&\n literalValue.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string' &&\n literalValue.datatype.value !== 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' ?\n '^^' + literalValue.datatype.value : '') +\n (literalValue.language ? '@' + literalValue.language : ''));\n case 'Quad': return `<<${termToString(term.subject)} ${termToString(term.predicate)} ${termToString(term.object)}${term.graph.termType === 'DefaultGraph' ? '' : ' ' + termToString(term.graph)}>>`;\n case 'Variable': return ('?' + term.value);\n case 'DefaultGraph': return term.value;\n }\n}\nexports.termToString = termToString;\n/**\n * Get the string value of a literal.\n * @param {string} literalValue An RDF literal enclosed by '\"'.\n * @return {string} The literal value inside the '\"'.\n */\nfunction getLiteralValue(literalValue) {\n const match = /^\"([^]*)\"/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1];\n}\nexports.getLiteralValue = getLiteralValue;\n/**\n * Get the datatype of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The datatype of the literal.\n */\nfunction getLiteralType(literalValue) {\n const match = /^\"[^]*\"(?:\\^\\^([^\"]+)|(@)[^@\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] || (match[2]\n ? 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' : 'http://www.w3.org/2001/XMLSchema#string');\n}\nexports.getLiteralType = getLiteralType;\n/**\n * Get the language of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The language of the literal.\n */\nfunction getLiteralLanguage(literalValue) {\n const match = /^\"[^]*\"(?:@([^@\"]+)|\\^\\^[^\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] ? match[1].toLowerCase() : '';\n}\nexports.getLiteralLanguage = getLiteralLanguage;\n/**\n * Transform a string-based RDF term to an RDFJS term.\n * @param {string} value A string-based RDF-term.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {RDF.Term} An RDF-JS term.\n */\nfunction stringToTerm(value, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n if (!value || !value.length) {\n return dataFactory.defaultGraph();\n }\n switch (value[0]) {\n case '_': return dataFactory.blankNode(value.substr(2));\n case '?':\n if (!dataFactory.variable) {\n throw new Error(`Missing 'variable()' method on the given DataFactory`);\n }\n return dataFactory.variable(value.substr(1));\n case '\"':\n const language = getLiteralLanguage(value);\n const type = dataFactory.namedNode(getLiteralType(value));\n return dataFactory.literal(getLiteralValue(value), language || type);\n case '<':\n default:\n if (value[0] === '<' && value.length > 4 && value[1] === '<' && value[value.length - 1] === '>' && value[value.length - 2] === '>') {\n // Iterate character-by-character to detect spaces that are *not* wrapped in <<>>\n const terms = value.slice(2, -2).trim();\n let stringTerms = [];\n let ignoreTags = 0;\n let lastIndex = 0;\n let inQuote = false;\n for (let i = 0; i < terms.length; i++) {\n const char = terms[i];\n if (char === '<')\n ignoreTags++;\n if (char === '>') {\n if (ignoreTags === 0) {\n throw new Error('Found closing tag without opening tag in ' + value);\n }\n else {\n ignoreTags--;\n }\n }\n if (char === '\"') {\n let escaped = false;\n let j = i;\n while (j-- > 0 && terms[j] === '\\\\') {\n escaped = !escaped;\n }\n if (!escaped) {\n // We have reached an unescaped quote\n inQuote = !inQuote;\n }\n }\n if (char === ' ' && !inQuote && ignoreTags === 0) {\n stringTerms.push(terms.slice(lastIndex, i));\n while (terms[i + 1] === ' ') {\n i += 1;\n }\n lastIndex = i + 1;\n }\n }\n if (ignoreTags !== 0) {\n throw new Error('Found opening tag without closing tag in ' + value);\n }\n stringTerms.push(terms.slice(lastIndex, terms.length));\n // We require 3 or 4 components\n if (stringTerms.length !== 3 && stringTerms.length !== 4) {\n throw new Error('Nested quad syntax error ' + value);\n }\n stringTerms = stringTerms.map(term => term.startsWith('<') && !term.includes(' ') ? term.slice(1, -1) : term);\n return dataFactory.quad(stringToTerm(stringTerms[0]), stringToTerm(stringTerms[1]), stringToTerm(stringTerms[2]), stringTerms[3] ? stringToTerm(stringTerms[3]) : undefined);\n }\n return dataFactory.namedNode(value);\n }\n}\nexports.stringToTerm = stringToTerm;\n/**\n * Convert an RDFJS quad to a string-based quad representation.\n * @param {Quad} q An RDFJS quad.\n * @return {IStringQuad} A hash with string-based quad terms.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction quadToStringQuad(q) {\n // tslint:disable:object-literal-sort-keys\n return {\n subject: termToString(q.subject),\n predicate: termToString(q.predicate),\n object: termToString(q.object),\n graph: termToString(q.graph),\n };\n // tslint:enable:object-literal-sort-keys\n}\nexports.quadToStringQuad = quadToStringQuad;\n/**\n * Convert a string-based quad representation to an RDFJS quad.\n * @param {IStringQuad} stringQuad A hash with string-based quad terms.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {Q} An RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction stringQuadToQuad(stringQuad, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n return dataFactory.quad(stringToTerm(stringQuad.subject, dataFactory), stringToTerm(stringQuad.predicate, dataFactory), stringToTerm(stringQuad.object, dataFactory), stringToTerm(stringQuad.graph, dataFactory));\n}\nexports.stringQuadToQuad = stringQuadToQuad;\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/QuadTermUtil\"), exports);\n__exportStar(require(\"./lib/TermUtil\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchPatternMappings = exports.matchPatternComplete = exports.matchPattern = exports.matchTerm = exports.getValueNestedPath = exports.someTermsNested = exports.someTerms = exports.everyTermsNested = exports.everyTerms = exports.reduceTermsNested = exports.reduceTerms = exports.mapTermsNested = exports.mapTerms = exports.filterQuadTermNamesNested = exports.filterQuadTermNames = exports.filterTermsNested = exports.filterTerms = exports.forEachTermsNested = exports.forEachTerms = exports.collectNamedTerms = exports.getNamedTerms = exports.getTermsNested = exports.getTerms = exports.TRIPLE_TERM_NAMES = exports.QUAD_TERM_NAMES = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * All available quad term names.\n * @type {[string , string , string , string]}\n */\nexports.QUAD_TERM_NAMES = ['subject', 'predicate', 'object', 'graph'];\n/**\n * All available triple term names.\n * @type {[string , string , string]}\n */\nexports.TRIPLE_TERM_NAMES = ['subject', 'predicate', 'object'];\n/**\n * Get all terms in the given quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the quad.\n */\nfunction getTerms(quad, ignoreDefaultGraph) {\n if (ignoreDefaultGraph && quad.graph.termType === 'DefaultGraph') {\n return [quad.subject, quad.predicate, quad.object];\n }\n return [quad.subject, quad.predicate, quad.object, quad.graph];\n}\nexports.getTerms = getTerms;\n/**\n * Get all terms in the given quad, including nested quads.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the nested quad, excluding quad terms.\n */\nfunction getTermsNested(quad, ignoreDefaultGraph) {\n const terms = [];\n for (const term of getTerms(quad, ignoreDefaultGraph)) {\n if (term.termType === 'Quad') {\n getTermsNested(term, ignoreDefaultGraph).forEach(subTerm => terms.push(subTerm));\n }\n else {\n terms.push(term);\n }\n }\n return terms;\n}\nexports.getTermsNested = getTermsNested;\n/**\n * Convert the given quad to an array of named terms.\n * This is the reverse operation of {@link collectNamedTerms}.\n * @param {BaseQuad} quad An RDFJS quad.\n * @return {INamedTerm[]} An array of named terms.\n */\nfunction getNamedTerms(quad) {\n return [\n { key: 'subject', value: quad.subject },\n { key: 'predicate', value: quad.predicate },\n { key: 'object', value: quad.object },\n { key: 'graph', value: quad.graph },\n ];\n}\nexports.getNamedTerms = getNamedTerms;\n/**\n * Convert an array of named terms to an RDFJS quad.\n * This is the reverse operation of {@link getNamedTerms}.\n * @param {INamedTerm[]} namedTerms An array of named terms.\n * @param {(termName: QuadTermName) => Term} defaultCb An optional callback for when\n * certain terms are not available in the array.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Q} The resulting RDFJS quad.\n * @template Q The type of quad to output, defaults to RDF.Quad.\n */\nfunction collectNamedTerms(namedTerms, defaultCb, dataFactory) {\n const elements = {};\n namedTerms.forEach((namedTerm) => elements[namedTerm.key] = namedTerm.value);\n if (defaultCb) {\n elements.subject = elements.subject || defaultCb('subject');\n elements.predicate = elements.predicate || defaultCb('predicate');\n elements.object = elements.object || defaultCb('object');\n elements.graph = elements.graph || defaultCb('graph');\n }\n return (dataFactory || DF).quad(elements.subject, elements.predicate, elements.object, elements.graph);\n}\nexports.collectNamedTerms = collectNamedTerms;\n/**\n * Iterates over each term.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} cb A callback function.\n */\nfunction forEachTerms(quad, cb) {\n cb(quad.subject, 'subject');\n cb(quad.predicate, 'predicate');\n cb(quad.object, 'object');\n cb(quad.graph, 'graph');\n}\nexports.forEachTerms = forEachTerms;\n/**\n * Iterates over each leaf term, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} cb A callback function.\n * @param QuadTermName[] keys The current key path.\n */\nfunction forEachTermsNested(quad, cb, keys = []) {\n if (quad.subject.termType === 'Quad') {\n forEachTermsNested(quad.subject, cb, [...keys, 'subject']);\n }\n else {\n cb(quad.subject, [...keys, 'subject']);\n }\n if (quad.predicate.termType === 'Quad') {\n forEachTermsNested(quad.predicate, cb, [...keys, 'predicate']);\n }\n else {\n cb(quad.predicate, [...keys, 'predicate']);\n }\n if (quad.object.termType === 'Quad') {\n forEachTermsNested(quad.object, cb, [...keys, 'object']);\n }\n else {\n cb(quad.object, [...keys, 'object']);\n }\n if (quad.graph.termType === 'Quad') {\n forEachTermsNested(quad.graph, cb, [...keys, 'graph']);\n }\n else {\n cb(quad.graph, [...keys, 'graph']);\n }\n}\nexports.forEachTermsNested = forEachTermsNested;\n/**\n * Get all terms in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName) => boolean} filter A filter callback.\n * @return {Term[]} The list of matching terms.\n */\nfunction filterTerms(quad, filter) {\n const terms = [];\n if (filter(quad.subject, 'subject')) {\n terms.push(quad.subject);\n }\n if (filter(quad.predicate, 'predicate')) {\n terms.push(quad.predicate);\n }\n if (filter(quad.object, 'object')) {\n terms.push(quad.object);\n }\n if (filter(quad.graph, 'graph')) {\n terms.push(quad.graph);\n }\n return terms;\n}\nexports.filterTerms = filterTerms;\n/**\n * Get all terms in the given quad that return true on the given filter function, while recursing into quoted triples.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName) => boolean} filter A filter callback.\n * @param QuadTermName[] keys The current key path.\n * @return {Term[]} The list of matching terms.\n */\nfunction filterTermsNested(quad, filter, keys = []) {\n let terms = [];\n if (quad.subject.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.subject, filter, [...keys, 'subject'])];\n }\n else {\n if (filter(quad.subject, [...keys, 'subject'])) {\n terms.push(quad.subject);\n }\n }\n if (quad.predicate.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.predicate, filter, [...keys, 'predicate'])];\n }\n else {\n if (filter(quad.predicate, [...keys, 'predicate'])) {\n terms.push(quad.predicate);\n }\n }\n if (quad.object.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.object, filter, [...keys, 'object'])];\n }\n else {\n if (filter(quad.object, [...keys, 'object'])) {\n terms.push(quad.object);\n }\n }\n if (quad.graph.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.graph, filter, [...keys, 'graph'])];\n }\n else {\n if (filter(quad.graph, [...keys, 'graph'])) {\n terms.push(quad.graph);\n }\n }\n return terms;\n}\nexports.filterTermsNested = filterTermsNested;\n/**\n * Get all quad term names in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName, all: INamedTerm[]) => boolean} filter A filter callback.\n * @return {QuadTermName[]} The list of matching quad term names.\n */\nfunction filterQuadTermNames(quad, filter) {\n const names = [];\n if (filter(quad.subject, 'subject')) {\n names.push('subject');\n }\n if (filter(quad.predicate, 'predicate')) {\n names.push('predicate');\n }\n if (filter(quad.object, 'object')) {\n names.push('object');\n }\n if (filter(quad.graph, 'graph')) {\n names.push('graph');\n }\n return names;\n}\nexports.filterQuadTermNames = filterQuadTermNames;\n/**\n * Get all quad term names in the given quad that return true on the given filter function, while recursing into quoted triples.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName, all: INamedTerm[]) => boolean} filter A filter callback.\n * @param QuadTermName[] keys The current key path.\n * @return {QuadTermName[]} The list of matching quad term names.\n */\nfunction filterQuadTermNamesNested(quad, filter, keys = []) {\n let names = [];\n const keysS = [...keys, 'subject'];\n if (quad.subject.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.subject, filter, keysS)];\n }\n else {\n if (filter(quad.subject, keysS)) {\n names.push(keysS);\n }\n }\n const keysP = [...keys, 'predicate'];\n if (quad.predicate.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.predicate, filter, keysP)];\n }\n else {\n if (filter(quad.predicate, keysP)) {\n names.push(keysP);\n }\n }\n const keysO = [...keys, 'object'];\n if (quad.object.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.object, filter, keysO)];\n }\n else {\n if (filter(quad.object, keysO)) {\n names.push(keysO);\n }\n }\n const keysG = [...keys, 'graph'];\n if (quad.graph.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.graph, filter, keysG)];\n }\n else {\n if (filter(quad.graph, keysG)) {\n names.push(keysG);\n }\n }\n return names;\n}\nexports.filterQuadTermNamesNested = filterQuadTermNamesNested;\n/**\n * Map all terms of a quad.\n * @param {Quad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName) => Term} mapper A mapper function.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Quad} A new RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction mapTerms(quad, mapper, dataFactory) {\n return (dataFactory || DF).quad(mapper(quad.subject, 'subject'), mapper(quad.predicate, 'predicate'), mapper(quad.object, 'object'), mapper(quad.graph, 'graph'));\n}\nexports.mapTerms = mapTerms;\n/**\n * Map all terms of a quad, while recursing into quoted triples.\n * @param {Quad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName) => Term} mapper A mapper function.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @param QuadTermName[] keys The current key path.\n * @return {Quad} A new RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction mapTermsNested(quad, mapper, dataFactory, keys = []) {\n return (dataFactory || DF).quad(quad.subject.termType === 'Quad' ?\n mapTermsNested(quad.subject, mapper, dataFactory, [...keys, 'subject']) :\n mapper(quad.subject, [...keys, 'subject']), quad.predicate.termType === 'Quad' ?\n mapTermsNested(quad.predicate, mapper, dataFactory, [...keys, 'predicate']) :\n mapper(quad.predicate, [...keys, 'predicate']), quad.object.termType === 'Quad' ?\n mapTermsNested(quad.object, mapper, dataFactory, [...keys, 'object']) :\n mapper(quad.object, [...keys, 'object']), quad.graph.termType === 'Quad' ?\n mapTermsNested(quad.graph, mapper, dataFactory, [...keys, 'graph']) :\n mapper(quad.graph, [...keys, 'graph']));\n}\nexports.mapTermsNested = mapTermsNested;\n/**\n * Reduce all terms of a quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(previousValue: U, currentValue: Term, key: QuadTermName) => U} reducer A reduce function.\n * @param {U} initialValue The initial value.\n * @return {U} The final value.\n */\nfunction reduceTerms(quad, reducer, initialValue) {\n let value = initialValue;\n value = reducer(value, quad.subject, 'subject');\n value = reducer(value, quad.predicate, 'predicate');\n value = reducer(value, quad.object, 'object');\n return reducer(value, quad.graph, 'graph');\n}\nexports.reduceTerms = reduceTerms;\n/**\n * Reduce all terms of a quad, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(previousValue: U, currentValue: Term, key: QuadTermName) => U} reducer A reduce function.\n * @param {U} initialValue The initial value.\n * @param QuadTermName[] keys The current key path.\n * @return {U} The final value.\n */\nfunction reduceTermsNested(quad, reducer, initialValue, keys = []) {\n let value = initialValue;\n if (quad.subject.termType === 'Quad') {\n value = reduceTermsNested(quad.subject, reducer, value, [...keys, 'subject']);\n }\n else {\n value = reducer(value, quad.subject, [...keys, 'subject']);\n }\n if (quad.predicate.termType === 'Quad') {\n value = reduceTermsNested(quad.predicate, reducer, value, [...keys, 'predicate']);\n }\n else {\n value = reducer(value, quad.predicate, [...keys, 'predicate']);\n }\n if (quad.object.termType === 'Quad') {\n value = reduceTermsNested(quad.object, reducer, value, [...keys, 'object']);\n }\n else {\n value = reducer(value, quad.object, [...keys, 'object']);\n }\n if (quad.graph.termType === 'Quad') {\n value = reduceTermsNested(quad.graph, reducer, value, [...keys, 'graph']);\n }\n else {\n value = reducer(value, quad.graph, [...keys, 'graph']);\n }\n return value;\n}\nexports.reduceTermsNested = reduceTermsNested;\n/**\n * Determines whether all terms satisfy the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If all terms satisfy the specified test.\n */\nfunction everyTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n && checker(quad.predicate, 'predicate')\n && checker(quad.object, 'object')\n && checker(quad.graph, 'graph');\n}\nexports.everyTerms = everyTerms;\n/**\n * Determines whether all terms satisfy the specified test, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @param QuadTermName[] keys The current key path.\n * @return {boolean} If all terms satisfy the specified test.\n */\nfunction everyTermsNested(quad, checker, keys = []) {\n return (quad.subject.termType === 'Quad' ?\n everyTermsNested(quad.subject, checker, [...keys, 'subject']) :\n checker(quad.subject, [...keys, 'subject']))\n && (quad.predicate.termType === 'Quad' ?\n everyTermsNested(quad.predicate, checker, [...keys, 'predicate']) :\n checker(quad.predicate, [...keys, 'predicate']))\n && (quad.object.termType === 'Quad' ?\n everyTermsNested(quad.object, checker, [...keys, 'object']) :\n checker(quad.object, [...keys, 'object']))\n && (quad.graph.termType === 'Quad' ?\n everyTermsNested(quad.graph, checker, [...keys, 'graph']) :\n checker(quad.graph, [...keys, 'graph']));\n}\nexports.everyTermsNested = everyTermsNested;\n/**\n * Determines whether at least one term satisfies the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If at least one term satisfies the specified test.\n */\nfunction someTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n || checker(quad.predicate, 'predicate')\n || checker(quad.object, 'object')\n || checker(quad.graph, 'graph');\n}\nexports.someTerms = someTerms;\n/**\n * Determines whether at least one term satisfies the specified test, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @param QuadTermName[] keys The current key path.\n * @return {boolean} If at least one term satisfies the specified test.\n */\nfunction someTermsNested(quad, checker, keys = []) {\n return (quad.subject.termType === 'Quad' ?\n someTermsNested(quad.subject, checker, [...keys, 'subject']) :\n checker(quad.subject, [...keys, 'subject']))\n || (quad.predicate.termType === 'Quad' ?\n someTermsNested(quad.predicate, checker, [...keys, 'predicate']) :\n checker(quad.predicate, [...keys, 'predicate']))\n || (quad.object.termType === 'Quad' ?\n someTermsNested(quad.object, checker, [...keys, 'object']) :\n checker(quad.object, [...keys, 'object']))\n || (quad.graph.termType === 'Quad' ?\n someTermsNested(quad.graph, checker, [...keys, 'graph']) :\n checker(quad.graph, [...keys, 'graph']));\n}\nexports.someTermsNested = someTermsNested;\n/**\n * Get the nested value inside a quoted triple by the given path of quad keys.\n * @param term A term, that can be a quoted triple.\n * @param keys A path of quad term names.\n */\nfunction getValueNestedPath(term, keys) {\n if (keys.length === 0) {\n return term;\n }\n if (term.termType === 'Quad') {\n return getValueNestedPath(term[keys[0]], keys.slice(1));\n }\n throw new Error(`Tried to get ${keys[0]} from term of type ${term.termType}`);\n}\nexports.getValueNestedPath = getValueNestedPath;\n/**\n * Check if the given terms match.\n *\n * At least one of the following must be true:\n * * Term B is undefined.\n * * Term B is a variable.\n * * Term A and B are quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`termB.equals(termA)` return true)\n *\n * @param termA A term.\n * @param termB An optional term.\n */\nfunction matchTerm(termA, termB) {\n return !termB\n || termB.termType === 'Variable'\n || (termB.termType === 'Quad' && termA.termType === 'Quad' && matchPatternComplete(termA, termB))\n || termB.equals(termA);\n}\nexports.matchTerm = matchTerm;\n/**\n * Check if the given quad matches with the given quad terms.\n *\n * Each term must match at least one of the following:\n * * Term is undefined.\n * * Term is a variable.\n * * Quad term and term are both quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`quadTerm.equals(term)` return true)\n *\n * @param {BaseQuad} quad A quad to match with (can not contain variables).\n * @param {Term} subject An optional subject.\n * @param {Term} predicate An optional predicate.\n * @param {Term} object An optional object.\n * @param {Term} graph An optional graph.\n * @return {boolean} If the quad matches with the quad terms.\n */\nfunction matchPattern(quad, subject, predicate, object, graph) {\n return matchTerm(quad.subject, subject)\n && matchTerm(quad.predicate, predicate)\n && matchTerm(quad.object, object)\n && matchTerm(quad.graph, graph);\n}\nexports.matchPattern = matchPattern;\n/**\n * Check if the first quad matches with all terms from the second quad.\n *\n * Each term must match at least one of the following:\n * * Quad2 term is a variable.\n * * Quad1 term and Quad2 term are equal (`term1.equals(term2)` return true)\n *\n * @param {BaseQuad} quad A quad (can not contain variables).\n * @param {BaseQuad} pattern A quad pattern (can contain variables).\n * @return {boolean} If the quad terms match.\n */\nfunction matchPatternComplete(quad, pattern) {\n return matchPattern(quad, pattern.subject, pattern.predicate, pattern.object, pattern.graph);\n}\nexports.matchPatternComplete = matchPatternComplete;\nfunction matchPatternMappings(quad, pattern, opt = {}) {\n const map = {};\n function match(_pattern, _quad) {\n return everyTerms(_pattern, (t1, key) => {\n var _a, _b;\n const t2 = _quad[key];\n switch (t1.termType) {\n case 'Variable':\n return (opt.skipVarMapping && t2.termType === 'Variable')\n || ((_b = (_a = map[t1.value]) === null || _a === void 0 ? void 0 : _a.equals(t2)) !== null && _b !== void 0 ? _b : (map[t1.value] = t2, true));\n case 'Quad':\n return t2.termType === 'Quad' && match(t1, t2);\n default:\n return t1.equals(t2);\n }\n });\n }\n return match(pattern, quad) && (opt.returnMappings ? map : true);\n}\nexports.matchPatternMappings = matchPatternMappings;\n//# sourceMappingURL=QuadTermUtil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getQuads = exports.getDefaultGraphs = exports.getVariables = exports.getLiterals = exports.getBlankNodes = exports.getNamedNodes = exports.getTermsOfType = exports.uniqTerms = exports.TERM_TYPES = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * All known term types.\n * @see RDF.Term\n * @type {[string , string , string , string , string, string]}\n */\nexports.TERM_TYPES = ['NamedNode', 'BlankNode', 'Literal', 'Variable', 'DefaultGraph', 'Quad'];\n/*\n * Utility methods for handling RDFJS terms.\n */\n/**\n * Create an array of unique terms from the given array.\n * @param {T[]} terms An array of RDFJS terms.\n * @return {T[]} A new array of unique RDFJS terms.\n */\nfunction uniqTerms(terms) {\n const hash = {};\n return terms.filter(term => {\n const termString = (0, rdf_string_1.termToString)(term);\n return !(termString in hash) && (hash[termString] = true);\n });\n}\nexports.uniqTerms = uniqTerms;\n/**\n * Find all terms of the given type in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @param {\"NamedNode\" | \"BlankNode\" | \"Literal\" | \"Variable\" | \"DefaultGraph\" | \"Quad\"} termType A term type.\n * @return {Term[]} A new array with elements from the given array only containing elements of the given type.\n */\nfunction getTermsOfType(terms, termType) {\n return terms.filter((term) => term.termType === termType);\n}\nexports.getTermsOfType = getTermsOfType;\n/**\n * Find all named nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {NamedNode[]} A new array with elements from the given array only containing named nodes.\n */\nfunction getNamedNodes(terms) {\n return getTermsOfType(terms, 'NamedNode');\n}\nexports.getNamedNodes = getNamedNodes;\n/**\n * Find all blank nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BlankNode[]} A new array with elements from the given array only containing blank nodes.\n */\nfunction getBlankNodes(terms) {\n return getTermsOfType(terms, 'BlankNode');\n}\nexports.getBlankNodes = getBlankNodes;\n/**\n * Find all literals in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Literal[]} A new array with elements from the given array only containing literals.\n */\nfunction getLiterals(terms) {\n return getTermsOfType(terms, 'Literal');\n}\nexports.getLiterals = getLiterals;\n/**\n * Find all variables in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Variable[]} A new array with elements from the given array only containing variables.\n */\nfunction getVariables(terms) {\n return getTermsOfType(terms, 'Variable');\n}\nexports.getVariables = getVariables;\n/**\n * Find all default graphs in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {DefaultGraph[]} A new array with elements from the given array only containing default graphs.\n */\nfunction getDefaultGraphs(terms) {\n return getTermsOfType(terms, 'DefaultGraph');\n}\nexports.getDefaultGraphs = getDefaultGraphs;\n/**\n * Find all quads in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BaseQuad[]} A new array with elements from the given array only containing quads.\n */\nfunction getQuads(terms) {\n return getTermsOfType(terms, 'Quad');\n}\nexports.getQuads = getQuads;\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/Resolve\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.removeDotSegmentsOfPath = exports.removeDotSegments = exports.resolve = void 0;\n/**\n * Convert the given relative IRI to an absolute IRI\n * by taking into account the given optional baseIRI.\n *\n * @param {string} relativeIRI The relative IRI to convert to an absolute IRI.\n * @param {string} baseIRI The optional base IRI.\n * @return {string} an absolute IRI.\n */\nfunction resolve(relativeIRI, baseIRI) {\n baseIRI = baseIRI || '';\n const baseFragmentPos = baseIRI.indexOf('#');\n // Ignore any fragments in the base IRI\n if (baseFragmentPos > 0) {\n baseIRI = baseIRI.substr(0, baseFragmentPos);\n }\n // Convert empty value directly to base IRI\n if (!relativeIRI.length) {\n // At this point, the baseIRI MUST be absolute, otherwise we error\n if (baseIRI.indexOf(':') < 0) {\n throw new Error(`Found invalid baseIRI '${baseIRI}' for value '${relativeIRI}'`);\n }\n return baseIRI;\n }\n // If the value starts with a query character, concat directly (but strip the existing query)\n if (relativeIRI.startsWith('?')) {\n const baseQueryPos = baseIRI.indexOf('?');\n if (baseQueryPos > 0) {\n baseIRI = baseIRI.substr(0, baseQueryPos);\n }\n return baseIRI + relativeIRI;\n }\n // If the value starts with a fragment character, concat directly\n if (relativeIRI.startsWith('#')) {\n return baseIRI + relativeIRI;\n }\n // Ignore baseIRI if it is empty\n if (!baseIRI.length) {\n const relativeColonPos = relativeIRI.indexOf(':');\n if (relativeColonPos < 0) {\n throw new Error(`Found invalid relative IRI '${relativeIRI}' for a missing baseIRI`);\n }\n return removeDotSegmentsOfPath(relativeIRI, relativeColonPos);\n }\n // Ignore baseIRI if the value is absolute\n const valueColonPos = relativeIRI.indexOf(':');\n if (valueColonPos >= 0) {\n return removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n // At this point, the baseIRI MUST be absolute, otherwise we error\n const baseColonPos = baseIRI.indexOf(':');\n if (baseColonPos < 0) {\n throw new Error(`Found invalid baseIRI '${baseIRI}' for value '${relativeIRI}'`);\n }\n const baseIRIScheme = baseIRI.substr(0, baseColonPos + 1);\n // Inherit the baseIRI scheme if the value starts with '//'\n if (relativeIRI.indexOf('//') === 0) {\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n // Check cases where '://' occurs in the baseIRI, and where there is no '/' after a ':' anymore.\n let baseSlashAfterColonPos;\n if (baseIRI.indexOf('//', baseColonPos) === baseColonPos + 1) {\n // If there is no additional '/' after the '//'.\n baseSlashAfterColonPos = baseIRI.indexOf('/', baseColonPos + 3);\n if (baseSlashAfterColonPos < 0) {\n // If something other than a '/' follows the '://', append the value after a '/',\n // otherwise, prefix the value with only the baseIRI scheme.\n if (baseIRI.length > baseColonPos + 3) {\n return baseIRI + '/' + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n else {\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n }\n }\n else {\n // If there is not even a single '/' after the ':'\n baseSlashAfterColonPos = baseIRI.indexOf('/', baseColonPos + 1);\n if (baseSlashAfterColonPos < 0) {\n // If we don't have a '/' after the ':',\n // prefix the value with only the baseIRI scheme.\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n }\n // If the value starts with a '/', then prefix it with everything before the first effective slash of the base IRI.\n if (relativeIRI.indexOf('/') === 0) {\n return baseIRI.substr(0, baseSlashAfterColonPos) + removeDotSegments(relativeIRI);\n }\n let baseIRIPath = baseIRI.substr(baseSlashAfterColonPos);\n const baseIRILastSlashPos = baseIRIPath.lastIndexOf('/');\n // Ignore everything after the last '/' in the baseIRI path\n if (baseIRILastSlashPos >= 0 && baseIRILastSlashPos < baseIRIPath.length - 1) {\n baseIRIPath = baseIRIPath.substr(0, baseIRILastSlashPos + 1);\n // Also remove the first character of the relative path if it starts with '.' (and not '..' or './')\n // This change is only allowed if there is something else following the path\n if (relativeIRI[0] === '.' && relativeIRI[1] !== '.' && relativeIRI[1] !== '/' && relativeIRI[2]) {\n relativeIRI = relativeIRI.substr(1);\n }\n }\n // Prefix the value with the baseIRI path where\n relativeIRI = baseIRIPath + relativeIRI;\n // Remove dot segment from the IRI\n relativeIRI = removeDotSegments(relativeIRI);\n // Prefix our transformed value with the part of the baseIRI until the first '/' after the first ':'.\n return baseIRI.substr(0, baseSlashAfterColonPos) + relativeIRI;\n}\nexports.resolve = resolve;\n/**\n * Remove dot segments from the given path,\n * as described in https://www.ietf.org/rfc/rfc3986.txt (page 32).\n * @param {string} path An IRI path.\n * @return {string} A path, will always start with a '/'.\n */\nfunction removeDotSegments(path) {\n // Prepare a buffer with segments between each '/.\n // Each segment represents an array of characters.\n const segmentBuffers = [];\n let i = 0;\n while (i < path.length) {\n // Remove '/.' or '/..'\n switch (path[i]) {\n case '/':\n if (path[i + 1] === '.') {\n if (path[i + 2] === '.') {\n // Start a new segment if we find an invalid character after the '.'\n if (!isCharacterAllowedAfterRelativePathSegment(path[i + 3])) {\n segmentBuffers.push([]);\n i++;\n break;\n }\n // Go to parent directory,\n // so we remove a parent segment\n segmentBuffers.pop();\n // Ensure that we end with a slash if there is a trailing '/..'\n if (!path[i + 3]) {\n segmentBuffers.push([]);\n }\n i += 3;\n }\n else {\n // Start a new segment if we find an invalid character after the '.'\n if (!isCharacterAllowedAfterRelativePathSegment(path[i + 2])) {\n segmentBuffers.push([]);\n i++;\n break;\n }\n // Ensure that we end with a slash if there is a trailing '/.'\n if (!path[i + 2]) {\n segmentBuffers.push([]);\n }\n // Go to the current directory,\n // so we do nothing\n i += 2;\n }\n }\n else {\n // Start a new segment\n segmentBuffers.push([]);\n i++;\n }\n break;\n case '#':\n case '?':\n // Query and fragment string should be appended unchanged\n if (!segmentBuffers.length) {\n segmentBuffers.push([]);\n }\n segmentBuffers[segmentBuffers.length - 1].push(path.substr(i));\n // Break the while loop\n i = path.length;\n break;\n default:\n // Not a special character, just append it to our buffer\n if (!segmentBuffers.length) {\n segmentBuffers.push([]);\n }\n segmentBuffers[segmentBuffers.length - 1].push(path[i]);\n i++;\n break;\n }\n }\n return '/' + segmentBuffers.map((buffer) => buffer.join('')).join('/');\n}\nexports.removeDotSegments = removeDotSegments;\n/**\n * Removes dot segments of the given IRI.\n * @param {string} iri An IRI (or part of IRI).\n * @param {number} colonPosition The position of the first ':' in the IRI.\n * @return {string} The IRI where dot segments were removed.\n */\nfunction removeDotSegmentsOfPath(iri, colonPosition) {\n // Determine where we should start looking for the first '/' that indicates the start of the path\n let searchOffset = colonPosition + 1;\n if (colonPosition >= 0) {\n if (iri[colonPosition + 1] === '/' && iri[colonPosition + 2] === '/') {\n searchOffset = colonPosition + 3;\n }\n }\n else {\n if (iri[0] === '/' && iri[1] === '/') {\n searchOffset = 2;\n }\n }\n // Determine the path\n const pathSeparator = iri.indexOf('/', searchOffset);\n if (pathSeparator < 0) {\n return iri;\n }\n const base = iri.substr(0, pathSeparator);\n const path = iri.substr(pathSeparator);\n // Remove dot segments from the path\n return base + removeDotSegments(path);\n}\nexports.removeDotSegmentsOfPath = removeDotSegmentsOfPath;\nfunction isCharacterAllowedAfterRelativePathSegment(character) {\n return !character || character === '#' || character === '?' || character === '/';\n}\n//# sourceMappingURL=Resolve.js.map","(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} [raw] True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.toSparqlJs = exports.toSparql = exports.Factory = exports.Algebra = exports.translate = void 0;\nconst sparqlAlgebra_1 = __importDefault(require(\"./lib/sparqlAlgebra\"));\nexports.translate = sparqlAlgebra_1.default;\nconst Algebra = __importStar(require(\"./lib/algebra\"));\nexports.Algebra = Algebra;\nconst factory_1 = __importDefault(require(\"./lib/factory\"));\nexports.Factory = factory_1.default;\nconst sparql_1 = require(\"./lib/sparql\");\nObject.defineProperty(exports, \"toSparql\", { enumerable: true, get: function () { return sparql_1.toSparql; } });\nObject.defineProperty(exports, \"toSparqlJs\", { enumerable: true, get: function () { return sparql_1.toSparqlJs; } });\nconst util_1 = __importDefault(require(\"./lib/util\"));\nexports.Util = util_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expressionTypes = exports.types = void 0;\nvar types;\n(function (types) {\n types[\"ALT\"] = \"alt\";\n types[\"ASK\"] = \"ask\";\n types[\"BGP\"] = \"bgp\";\n types[\"CONSTRUCT\"] = \"construct\";\n types[\"DESCRIBE\"] = \"describe\";\n types[\"DISTINCT\"] = \"distinct\";\n types[\"EXPRESSION\"] = \"expression\";\n types[\"EXTEND\"] = \"extend\";\n types[\"FILTER\"] = \"filter\";\n types[\"FROM\"] = \"from\";\n types[\"GRAPH\"] = \"graph\";\n types[\"GROUP\"] = \"group\";\n types[\"INV\"] = \"inv\";\n types[\"JOIN\"] = \"join\";\n types[\"LEFT_JOIN\"] = \"leftjoin\";\n types[\"LINK\"] = \"link\";\n types[\"MINUS\"] = \"minus\";\n types[\"NOP\"] = \"nop\";\n types[\"NPS\"] = \"nps\";\n types[\"ONE_OR_MORE_PATH\"] = \"OneOrMorePath\";\n types[\"ORDER_BY\"] = \"orderby\";\n types[\"PATH\"] = \"path\";\n types[\"PATTERN\"] = \"pattern\";\n types[\"PROJECT\"] = \"project\";\n types[\"REDUCED\"] = \"reduced\";\n types[\"SEQ\"] = \"seq\";\n types[\"SERVICE\"] = \"service\";\n types[\"SLICE\"] = \"slice\";\n types[\"UNION\"] = \"union\";\n types[\"VALUES\"] = \"values\";\n types[\"ZERO_OR_MORE_PATH\"] = \"ZeroOrMorePath\";\n types[\"ZERO_OR_ONE_PATH\"] = \"ZeroOrOnePath\";\n types[\"COMPOSITE_UPDATE\"] = \"compositeupdate\";\n types[\"DELETE_INSERT\"] = \"deleteinsert\";\n types[\"LOAD\"] = \"load\";\n types[\"CLEAR\"] = \"clear\";\n types[\"CREATE\"] = \"create\";\n types[\"DROP\"] = \"drop\";\n types[\"ADD\"] = \"add\";\n types[\"MOVE\"] = \"move\";\n types[\"COPY\"] = \"copy\";\n})(types = exports.types || (exports.types = {}));\nvar expressionTypes;\n(function (expressionTypes) {\n expressionTypes[\"AGGREGATE\"] = \"aggregate\";\n expressionTypes[\"EXISTENCE\"] = \"existence\";\n expressionTypes[\"NAMED\"] = \"named\";\n expressionTypes[\"OPERATOR\"] = \"operator\";\n expressionTypes[\"TERM\"] = \"term\";\n expressionTypes[\"WILDCARD\"] = \"wildcard\";\n})(expressionTypes = exports.expressionTypes || (exports.expressionTypes = {}));\n//# sourceMappingURL=algebra.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst A = __importStar(require(\"./algebra\"));\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nclass Factory {\n constructor(dataFactory) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.stringType = this.createTerm('http://www.w3.org/2001/XMLSchema#string');\n }\n createAlt(input, flatten = true) { return this.flattenMulti({ type: A.types.ALT, input }, flatten); }\n createAsk(input) { return { type: A.types.ASK, input }; }\n createBoundAggregate(variable, aggregate, expression, distinct, separator) {\n const result = this.createAggregateExpression(aggregate, expression, distinct, separator);\n result.variable = variable;\n return result;\n }\n createBgp(patterns) { return { type: A.types.BGP, patterns }; }\n createConstruct(input, template) { return { type: A.types.CONSTRUCT, input, template }; }\n createDescribe(input, terms) { return { type: A.types.DESCRIBE, input, terms }; }\n createDistinct(input) { return { type: A.types.DISTINCT, input }; }\n createExtend(input, variable, expression) { return { type: A.types.EXTEND, input, variable, expression }; }\n createFrom(input, def, named) { return { type: A.types.FROM, input, default: def, named }; }\n createFilter(input, expression) { return { type: A.types.FILTER, input, expression }; }\n createGraph(input, name) { return { type: A.types.GRAPH, input, name }; }\n createGroup(input, variables, aggregates) { return { type: A.types.GROUP, input, variables, aggregates }; }\n createInv(path) { return { type: A.types.INV, path }; }\n createJoin(input, flatten = true) { return this.flattenMulti({ type: A.types.JOIN, input }, flatten); }\n createLeftJoin(left, right, expression) {\n if (expression)\n return { type: A.types.LEFT_JOIN, input: [left, right], expression };\n return { type: A.types.LEFT_JOIN, input: [left, right] };\n }\n createLink(iri) { return { type: A.types.LINK, iri }; }\n createMinus(left, right) { return { type: A.types.MINUS, input: [left, right] }; }\n createNop() { return { type: A.types.NOP }; }\n createNps(iris) { return { type: A.types.NPS, iris }; }\n createOneOrMorePath(path) { return { type: A.types.ONE_OR_MORE_PATH, path }; }\n createOrderBy(input, expressions) { return { type: A.types.ORDER_BY, input, expressions }; }\n createPath(subject, predicate, object, graph) {\n if (graph)\n return { type: A.types.PATH, subject, predicate, object, graph };\n return { type: A.types.PATH, subject, predicate, object, graph: this.dataFactory.defaultGraph() };\n }\n createPattern(subject, predicate, object, graph) {\n const pattern = this.dataFactory.quad(subject, predicate, object, graph);\n pattern.type = A.types.PATTERN;\n return pattern;\n }\n createProject(input, variables) { return { type: A.types.PROJECT, input, variables }; }\n createReduced(input) { return { type: A.types.REDUCED, input }; }\n createSeq(input, flatten = true) { return this.flattenMulti({ type: A.types.SEQ, input }, flatten); }\n createService(input, name, silent) { return { type: A.types.SERVICE, input, name, silent: Boolean(silent) }; }\n createSlice(input, start, length) {\n start = start || 0;\n if (length !== undefined)\n return { type: A.types.SLICE, input, start, length };\n return { type: A.types.SLICE, input, start };\n }\n createUnion(input, flatten = true) { return this.flattenMulti({ type: A.types.UNION, input }, flatten); }\n createValues(variables, bindings) { return { type: A.types.VALUES, variables, bindings }; }\n createZeroOrMorePath(path) { return { type: A.types.ZERO_OR_MORE_PATH, path }; }\n createZeroOrOnePath(path) { return { type: A.types.ZERO_OR_ONE_PATH, path }; }\n createAggregateExpression(aggregator, expression, distinct, separator) {\n if (separator)\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, separator, distinct };\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, distinct };\n }\n createExistenceExpression(not, input) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.EXISTENCE, not, input }; }\n createNamedExpression(name, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.NAMED, name, args }; }\n createOperatorExpression(operator, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.OPERATOR, operator, args }; }\n createTermExpression(term) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.TERM, term }; }\n createWildcardExpression() { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.WILDCARD, wildcard: new sparqljs_1.Wildcard() }; }\n createTerm(str) {\n if (str[0] === '$') {\n str = str.replace('$', '?');\n }\n return (0, rdf_string_1.stringToTerm)(str, this.dataFactory);\n }\n // Update functions\n createCompositeUpdate(updates) { return { type: A.types.COMPOSITE_UPDATE, updates }; }\n createDeleteInsert(deleteQuads, insertQuads, where) {\n const result = { type: A.types.DELETE_INSERT };\n if (deleteQuads)\n result.delete = deleteQuads;\n if (insertQuads)\n result.insert = insertQuads;\n if (where)\n result.where = where;\n return result;\n }\n createLoad(source, destination, silent) {\n const result = { type: A.types.LOAD, source };\n if (destination)\n result.destination = destination;\n return this.addSilent(result, Boolean(silent));\n }\n createClear(source, silent) {\n return this.addSilent({ type: A.types.CLEAR, source }, Boolean(silent));\n }\n createCreate(source, silent) {\n return this.addSilent({ type: A.types.CREATE, source }, Boolean(silent));\n }\n createDrop(source, silent) {\n return this.addSilent({ type: A.types.DROP, source }, Boolean(silent));\n }\n createAdd(source, destination, silent) {\n return this.addSilent({ type: A.types.ADD, source, destination }, Boolean(silent));\n }\n createMove(source, destination, silent) {\n return this.addSilent({ type: A.types.MOVE, source, destination }, Boolean(silent));\n }\n createCopy(source, destination, silent) {\n return this.addSilent({ type: A.types.COPY, source, destination }, Boolean(silent));\n }\n addSilent(input, silent) {\n if (silent)\n input.silent = silent;\n return input;\n }\n flattenMulti(input, flatten) {\n if (!flatten) {\n return input;\n }\n const type = input.type;\n const children = input.input;\n let newChildren = [];\n for (const child of children) {\n if (child.type === type) {\n newChildren.push(...child.input);\n }\n else {\n newChildren.push(child);\n }\n }\n input.input = newChildren;\n return input;\n }\n}\nexports.default = Factory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toSparqlJs = exports.toSparql = void 0;\nconst rdf_isomorphic_1 = require(\"rdf-isomorphic\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst types = Algebra.types;\nconst eTypes = Algebra.expressionTypes;\nlet context;\nconst factory = new factory_1.default();\nfunction toSparql(op, options = {}) {\n let generator = new sparqljs_1.Generator(options);\n return generator.stringify(toSparqlJs(op));\n}\nexports.toSparql = toSparql;\nfunction toSparqlJs(op) {\n resetContext();\n op = removeQuads(op);\n let result = translateOperation(op);\n if (result.type === 'group')\n return result.patterns[0];\n return result;\n}\nexports.toSparqlJs = toSparqlJs;\nfunction resetContext() {\n context = { project: false, extend: [], group: [], aggregates: [], order: [] };\n}\nfunction translateOperation(op) {\n // this allows us to differentiate between BIND and SELECT when translating EXTEND\n // GRAPH was added because the way graphs get added back here is not the same as how they get added in the future\n // ^ seems fine but might have to be changed if problems get detected in the future\n if (op.type !== types.EXTEND && op.type !== types.ORDER_BY && op.type !== types.GRAPH)\n context.project = false;\n switch (op.type) {\n case types.EXPRESSION: return translateExpression(op);\n case types.ASK: return translateProject(op, types.ASK);\n case types.BGP: return translateBgp(op);\n case types.CONSTRUCT: return translateConstruct(op);\n case types.DESCRIBE: return translateProject(op, types.DESCRIBE);\n case types.DISTINCT: return translateDistinct(op);\n case types.EXTEND: return translateExtend(op);\n case types.FROM: return translateFrom(op);\n case types.FILTER: return translateFilter(op);\n case types.GRAPH: return translateGraph(op);\n case types.GROUP: return translateGroup(op);\n case types.JOIN: return translateJoin(op);\n case types.LEFT_JOIN: return translateLeftJoin(op);\n case types.MINUS: return translateMinus(op);\n case types.NOP: return {};\n case types.ORDER_BY: return translateOrderBy(op);\n case types.PATH: return translatePath(op);\n case types.PATTERN: return translatePattern(op);\n case types.PROJECT: return translateProject(op, types.PROJECT);\n case types.REDUCED: return translateReduced(op);\n case types.SERVICE: return translateService(op);\n case types.SLICE: return translateSlice(op);\n case types.UNION: return translateUnion(op);\n case types.VALUES: return translateValues(op);\n // UPDATE operations\n case types.COMPOSITE_UPDATE: return translateCompositeUpdate(op);\n case types.DELETE_INSERT: return translateDeleteInsert(op);\n case types.LOAD: return translateLoad(op);\n case types.CLEAR: return translateClear(op);\n case types.CREATE: return translateCreate(op);\n case types.DROP: return translateDrop(op);\n case types.ADD: return translateAdd(op);\n case types.MOVE: return translateMove(op);\n case types.COPY: return translateCopy(op);\n }\n throw new Error(`Unknown Operation type ${op.type}`);\n}\nfunction translateExpression(expr) {\n switch (expr.expressionType) {\n case eTypes.AGGREGATE: return translateAggregateExpression(expr);\n case eTypes.EXISTENCE: return translateExistenceExpression(expr);\n case eTypes.NAMED: return translateNamedExpression(expr);\n case eTypes.OPERATOR: return translateOperatorExpression(expr);\n case eTypes.TERM: return translateTermExpression(expr);\n case eTypes.WILDCARD: return translateWildcardExpression(expr);\n }\n throw new Error(`Unknown Expression Operation type ${expr.expressionType}`);\n}\nfunction translatePathComponent(path) {\n switch (path.type) {\n case types.ALT: return translateAlt(path);\n case types.INV: return translateInv(path);\n case types.LINK: return translateLink(path);\n case types.NPS: return translateNps(path);\n case types.ONE_OR_MORE_PATH: return translateOneOrMorePath(path);\n case types.SEQ: return translateSeq(path);\n case types.ZERO_OR_MORE_PATH: return translateZeroOrMorePath(path);\n case types.ZERO_OR_ONE_PATH: return translateZeroOrOnePath(path);\n }\n throw new Error(`Unknown Path type ${path.type}`);\n}\nfunction translateTerm(term) {\n return (0, rdf_string_1.termToString)(term);\n}\n// ------------------------- EXPRESSIONS -------------------------\nfunction translateAggregateExpression(expr) {\n const result = {\n expression: translateExpression(expr.expression),\n type: 'aggregate',\n aggregation: expr.aggregator,\n distinct: expr.distinct\n };\n if (expr.separator)\n result.separator = expr.separator;\n return result;\n}\nfunction translateExistenceExpression(expr) {\n return {\n type: 'operation',\n operator: expr.not ? 'notexists' : 'exists',\n args: [{\n type: 'group',\n patterns: util_1.default.flatten([translateOperation(expr.input)])\n }]\n };\n}\nfunction translateNamedExpression(expr) {\n return {\n type: 'functionCall',\n // Wrong typings\n function: expr.name,\n args: expr.args.map(translateExpression)\n };\n}\nfunction translateOperatorExpression(expr) {\n if (expr.operator === 'desc') {\n const result = { expression: translateExpression(expr.args[0]) };\n result.descending = true;\n return result;\n }\n const result = {\n type: 'operation',\n operator: expr.operator,\n args: expr.args.map(translateExpression)\n };\n if (result.operator === 'in' || result.operator === 'notin')\n result.args = [result.args[0]].concat([result.args.slice(1)]);\n return result;\n}\nfunction translateTermExpression(expr) {\n return expr.term;\n}\nfunction translateWildcardExpression(expr) {\n return expr.wildcard;\n}\nfunction arrayToPattern(input) {\n if (!Array.isArray(input))\n return input;\n if (input.length === 1)\n return input[0];\n return {\n type: 'group',\n patterns: input,\n };\n}\n// ------------------------- OPERATIONS -------------------------\n// these get translated in the project function\nfunction translateBoundAggregate(op) {\n return op;\n}\nfunction translateBgp(op) {\n let patterns = op.patterns.map(translatePattern);\n if (patterns.length === 0)\n return null;\n return {\n type: 'bgp',\n triples: patterns\n };\n}\nfunction translateConstruct(op) {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: op.template.map(translatePattern),\n where: util_1.default.flatten([\n translateOperation(op.input)\n ])\n };\n}\nfunction translateDistinct(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].distinct = true;\n return result;\n}\nfunction translateExtend(op) {\n if (context.project) {\n context.extend.push(op);\n return translateOperation(op.input);\n }\n return util_1.default.flatten([\n translateOperation(op.input),\n {\n type: 'bind',\n variable: op.variable,\n expression: translateExpression(op.expression)\n }\n ]);\n}\nfunction translateFrom(op) {\n const result = translateOperation(op.input);\n // Can't type as CONSTRUCT queries do not have `from` field in their type\n let obj = result;\n // project is nested in group object\n if (result.type === 'group') {\n obj = result.patterns[0];\n }\n obj.from = {\n default: op.default,\n named: op.named\n };\n return result;\n}\nfunction translateFilter(op) {\n return {\n type: 'group',\n patterns: util_1.default.flatten([\n translateOperation(op.input),\n { type: 'filter', expression: translateExpression(op.expression) }\n ])\n };\n}\nfunction translateGraph(op) {\n return {\n type: 'graph',\n patterns: util_1.default.flatten([translateOperation(op.input)]),\n name: op.name\n };\n}\nfunction translateGroup(op) {\n const input = translateOperation(op.input);\n const aggs = op.aggregates.map(translateBoundAggregate);\n context.aggregates.push(...aggs);\n // TODO: apply possible extends\n context.group.push(...op.variables);\n return input;\n}\nfunction translateJoin(op) {\n const arr = util_1.default.flatten(op.input.map(translateOperation));\n // Merge bgps\n // This is possible if one side was a path and the other a bgp for example\n return arr.reduce((result, val) => {\n if (val.type !== 'bgp' || result.length == 0 || result[result.length - 1].type !== 'bgp') {\n result.push(val);\n }\n else {\n result[result.length - 1].triples.push(...val.triples);\n }\n return result;\n }, []);\n}\nfunction translateLeftJoin(op) {\n const leftjoin = {\n type: 'optional',\n patterns: [\n translateOperation(op.input[1])\n ]\n };\n if (op.expression) {\n leftjoin.patterns.push({\n type: 'filter',\n expression: translateExpression(op.expression)\n });\n }\n leftjoin.patterns = util_1.default.flatten(leftjoin.patterns);\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n leftjoin\n ]);\n}\nfunction translateMinus(op) {\n let patterns = translateOperation(op.input[1]);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n {\n type: 'minus',\n patterns: patterns\n }\n ]);\n}\nfunction translateOrderBy(op) {\n context.order.push(...op.expressions);\n return translateOperation(op.input);\n}\nfunction translatePath(op) {\n return {\n type: 'bgp',\n triples: [{\n subject: op.subject,\n predicate: translatePathComponent(op.predicate),\n object: op.object\n }]\n };\n}\nfunction translatePattern(op) {\n return {\n subject: op.subject,\n predicate: op.predicate,\n object: op.object\n };\n}\nfunction replaceAggregatorVariables(s, map) {\n let st = util_1.default.isSimpleTerm(s) ? translateTerm(s) : s;\n if (typeof st === 'string') {\n if (map[st])\n return map[st];\n }\n else if (Array.isArray(s)) {\n s = s.map(e => replaceAggregatorVariables(e, map));\n }\n else {\n for (let key of Object.keys(s))\n s[key] = replaceAggregatorVariables(s[key], map);\n }\n return s;\n}\nfunction translateProject(op, type) {\n const result = {\n type: 'query',\n prefixes: {}\n };\n // Makes typing easier in some places\n const select = result;\n let variables;\n if (type === types.PROJECT) {\n result.queryType = 'SELECT';\n variables = op.variables;\n }\n else if (type === types.ASK) {\n result.queryType = 'ASK';\n }\n else if (type === types.DESCRIBE) {\n result.queryType = 'DESCRIBE';\n variables = op.terms;\n }\n // backup values in case of nested queries\n // everything in extend, group, etc. is irrelevant for this project call\n const extend = context.extend;\n const group = context.group;\n const aggregates = context.aggregates;\n const order = context.order;\n resetContext();\n context.project = true;\n let input = util_1.default.flatten([translateOperation(op.input)]);\n if (input.length === 1 && input[0].type === 'group')\n input = input[0].patterns;\n result.where = input;\n let aggregators = {};\n // these can not reference each other\n for (let agg of context.aggregates)\n aggregators[translateTerm(agg.variable)] = translateExpression(agg);\n // do these in reverse order since variables in one extend might apply to an expression in an other extend\n let extensions = {};\n for (let i = context.extend.length - 1; i >= 0; --i) {\n let e = context.extend[i];\n extensions[translateTerm(e.variable)] = replaceAggregatorVariables(translateExpression(e.expression), aggregators);\n }\n if (context.group.length > 0)\n select.group = context.group.map(variable => {\n let v = translateTerm(variable);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // make sure there is only 1 'AS' statement\n return {\n variable,\n expression: result\n };\n }\n return { expression: variable };\n });\n // descending expressions will already be in the correct format due to the structure of those\n if (context.order.length > 0)\n select.order = context.order.map(translateOperation).map(o => o.descending ? o : ({ expression: o }));\n // this needs to happen after the group because it might depend on variables generated there\n if (variables) {\n select.variables = variables.map((term) => {\n let v = translateTerm(term);\n if (extensions[v])\n return {\n variable: term,\n expression: extensions[v]\n };\n return term;\n });\n // if the * didn't match any variables this would be empty\n if (select.variables.length === 0)\n select.variables = [new sparqljs_1.Wildcard()];\n }\n // convert filter to 'having' if it contains an aggregator variable\n // could always convert, but is nicer to use filter when possible\n if (result.where.length > 0 && result.where[result.where.length - 1].type === 'filter') {\n const filter = result.where[result.where.length - 1];\n if (objectContainsValues(filter, Object.keys(aggregators))) {\n select.having = util_1.default.flatten([replaceAggregatorVariables(filter.expression, aggregators)]);\n result.where.splice(-1);\n }\n }\n context.extend = extend;\n context.group = group;\n context.aggregates = aggregates;\n context.order = order;\n // subqueries need to be in a group, this will be removed again later for the root query\n return { type: 'group', patterns: [select] };\n}\nfunction objectContainsValues(o, vals) {\n if (util_1.default.isSimpleTerm(o))\n return vals.indexOf(translateTerm(o)) >= 0;\n if (Array.isArray(o))\n return o.some(e => objectContainsValues(e, vals));\n if (o === Object(o))\n return Object.keys(o).some(key => objectContainsValues(o[key], vals));\n return vals.indexOf(o) >= 0;\n}\nfunction translateReduced(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].reduced = true;\n return result;\n}\nfunction translateService(op) {\n let patterns = translateOperation(op.input);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return {\n type: 'service',\n // Typings are wrong, name can also be a variable\n name: op.name,\n silent: op.silent,\n patterns\n };\n}\nfunction translateSlice(op) {\n let result = translateOperation(op.input);\n // results can be nested in a group object\n let obj = result;\n if (result.type && result.type === 'group')\n obj = result.patterns[0];\n if (op.start !== 0)\n obj.offset = op.start;\n if (op.length !== undefined)\n obj.limit = op.length;\n return result;\n}\nfunction translateUnion(op) {\n return {\n type: 'union',\n patterns: op.input.map(translateOperation).map(arrayToPattern),\n };\n}\nfunction translateValues(op) {\n // TODO: check if handled correctly when outside of select block\n return {\n type: 'values',\n values: op.bindings.map(binding => {\n let result = {};\n for (let v of op.variables) {\n let s = `?${v.value}`;\n if (binding[s])\n result[s] = binding[s];\n else\n result[s] = undefined;\n }\n return result;\n })\n };\n}\n// PATH COMPONENTS\nfunction translateAlt(path) {\n const mapped = path.input.map(translatePathComponent);\n if (mapped.every(entry => 'pathType' in entry && entry.pathType === '!')) {\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: util_1.default.flatten(mapped.map(entry => entry.items))\n }]\n };\n }\n return {\n type: 'path',\n pathType: '|',\n items: mapped\n };\n}\nfunction translateInv(path) {\n if (path.path.type === types.NPS) {\n const inv = path.path.iris.map((iri) => {\n return {\n type: 'path',\n pathType: '^',\n items: [iri]\n };\n });\n if (inv.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: inv\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: inv\n }]\n };\n }\n return {\n type: 'path',\n pathType: '^',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateLink(path) {\n return path.iri;\n}\nfunction translateNps(path) {\n if (path.iris.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: path.iris\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: path.iris\n }]\n };\n}\nfunction translateOneOrMorePath(path) {\n return {\n type: 'path',\n pathType: '+',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateSeq(path) {\n return {\n type: 'path',\n pathType: '/',\n items: path.input.map(translatePathComponent)\n };\n}\nfunction translateZeroOrMorePath(path) {\n return {\n type: 'path',\n pathType: '*',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateZeroOrOnePath(path) {\n // Typings are missing '?' operator\n return {\n type: 'path',\n // Typings are missing this path\n pathType: '?',\n items: [translatePathComponent(path.path)]\n };\n}\n// UPDATE OPERATIONS\nfunction translateCompositeUpdate(op) {\n const updates = op.updates.map(update => {\n const result = translateOperation(update);\n return result.updates[0];\n });\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateDeleteInsert(op) {\n var _a;\n let where = op.where;\n let use = undefined;\n if (where && where.type === types.FROM) {\n let from = where;\n where = from.input;\n use = { default: from.default, named: from.named };\n }\n const updates = [{\n updateType: 'insertdelete',\n delete: convertUpdatePatterns(op.delete || []),\n insert: convertUpdatePatterns(op.insert || []),\n }];\n // Typings don't support 'using' yet\n if (use)\n updates[0].using = use;\n // corresponds to empty array in SPARQL.js\n if (!where || (where.type === types.BGP && where.patterns.length === 0))\n updates[0].where = [];\n else {\n const graphs = [];\n let result = translateOperation(removeQuadsRecursive(where, graphs));\n if (result.type === 'group')\n updates[0].where = result.patterns;\n else\n updates[0].where = [result];\n // graph might not be applied yet since there was no project\n // this can only happen if there was a single graph\n if (graphs.length > 0) {\n if (graphs.length !== 1)\n throw new Error('This is unexpected and might indicate an error in graph handling for updates.');\n // ignore if default graph\n if (((_a = graphs[0]) === null || _a === void 0 ? void 0 : _a.value) !== '')\n updates[0].where = [{ type: 'graph', patterns: updates[0].where, name: graphs[0] }];\n }\n }\n // not really necessary but can give cleaner looking queries\n if (!op.delete && !op.where) {\n updates[0].updateType = 'insert';\n delete updates[0].delete;\n delete updates[0].where;\n }\n else if (!op.insert && !op.where) {\n delete updates[0].insert;\n delete updates[0].where;\n if (op.delete.some(pattern => pattern.subject.termType === 'Variable' ||\n pattern.predicate.termType === 'Variable' ||\n pattern.object.termType === 'Variable'))\n updates[0].updateType = 'deletewhere';\n else\n updates[0].updateType = 'delete';\n }\n else if (!op.insert && op.where && op.where.type === 'bgp') {\n if ((0, rdf_isomorphic_1.isomorphic)(op.delete, op.where.patterns)) {\n delete updates[0].where;\n updates[0].updateType = 'deletewhere';\n }\n }\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateLoad(op) {\n // Typings are wrong, destiniation is optional\n const updates = [{ type: 'load', silent: Boolean(op.silent), source: op.source }];\n if (op.destination)\n updates[0].destination = op.destination;\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateClear(op) {\n return translateClearCreateDrop(op, 'clear');\n}\nfunction translateCreate(op) {\n return translateClearCreateDrop(op, 'create');\n}\nfunction translateDrop(op) {\n return translateClearCreateDrop(op, 'drop');\n}\nfunction translateClearCreateDrop(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n // Typings are wrong, type is not required, see for example \"clear-drop\" test\n if (op.source === 'DEFAULT')\n updates[0].graph = { default: true };\n else if (op.source === 'NAMED')\n updates[0].graph = { named: true };\n else if (op.source === 'ALL')\n updates[0].graph = { all: true };\n else\n updates[0].graph = { type: 'graph', name: op.source };\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateAdd(op) {\n return translateUpdateGraphShortcut(op, 'add');\n}\nfunction translateMove(op) {\n return translateUpdateGraphShortcut(op, 'move');\n}\nfunction translateCopy(op) {\n return translateUpdateGraphShortcut(op, 'copy');\n}\nfunction translateUpdateGraphShortcut(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n updates[0].source = op.source === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.source };\n updates[0].destination = op.destination === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.destination };\n return { prefixes: {}, type: 'update', updates };\n}\n// similar to removeQuads but more simplified for UPDATEs\nfunction convertUpdatePatterns(patterns) {\n if (!patterns)\n return [];\n const graphs = {};\n patterns.forEach(pattern => {\n const graph = pattern.graph.value;\n if (!graphs[graph])\n graphs[graph] = [];\n graphs[graph].push(pattern);\n });\n return Object.keys(graphs).map(graph => {\n if (graph === '')\n return { type: 'bgp', triples: graphs[graph].map(translatePattern) };\n return { type: 'graph', triples: graphs[graph].map(translatePattern), name: graphs[graph][0].graph };\n });\n}\nfunction removeQuads(op) {\n return removeQuadsRecursive(op, []);\n}\n// remove quads\nfunction removeQuadsRecursive(op, graphs) {\n if (Array.isArray(op))\n return op.map(sub => removeQuadsRecursive(sub, graphs));\n if (!op.type)\n return op;\n // UPDATE operations with Patterns handle graphs a bit differently\n if (op.type === types.DELETE_INSERT)\n return op;\n if ((op.type === types.PATTERN || op.type === types.PATH) && op.graph) {\n graphs.push(op.graph);\n // Remove non-default graphs\n if (op.graph.name !== '')\n return op.type === types.PATTERN ?\n factory.createPattern(op.subject, op.predicate, op.object) :\n factory.createPath(op.subject, op.predicate, op.object);\n return op;\n }\n const result = {};\n const keyGraphs = {}; // unique graph per key\n const globalNames = {}; // track all the unique graph names for the entire Operation\n for (let key of Object.keys(op)) {\n const newGraphs = [];\n result[key] = removeQuadsRecursive(op[key], newGraphs);\n if (newGraphs.length > 0) {\n keyGraphs[key] = newGraphs;\n for (const graph of newGraphs) {\n globalNames[graph.value] = graph;\n }\n }\n }\n const graphNameSet = Object.keys(globalNames);\n if (graphNameSet.length > 0) {\n // We also need to create graph statement if we are at the edge of certain operations\n if (graphNameSet.length === 1 && ![types.PROJECT, types.SERVICE].includes(op.type))\n graphs.push(globalNames[graphNameSet[0]]);\n else if (op.type === types.BGP) {\n // This is the specific case that got changed because of using quads.\n return splitBgpToGraphs(op, keyGraphs.patterns);\n }\n else {\n // multiple graphs (or project), need to create graph objects for them\n for (let key of Object.keys(keyGraphs)) {\n const value = result[key];\n if (Array.isArray(value))\n result[key] = value.map((child, idx) => keyGraphs[key][0].value === '' ? child : factory.createGraph(child, keyGraphs[key][idx]));\n else if (keyGraphs[key][0].value !== '')\n result[key] = factory.createGraph(value, keyGraphs[key][0]);\n }\n }\n }\n return result;\n}\n// `graphs` should be an array of length identical to `op.patterns`, containing the corresponding graph for each triple.\nfunction splitBgpToGraphs(op, graphs) {\n var _a;\n // Split patterns per graph\n const graphPatterns = {};\n for (let i = 0; i < op.patterns.length; ++i) {\n const pattern = op.patterns[i];\n const graphName = graphs[i].value;\n graphPatterns[graphName] = (_a = graphPatterns[graphName]) !== null && _a !== void 0 ? _a : { patterns: [], graph: graphs[i] };\n graphPatterns[graphName].patterns.push(pattern);\n }\n // Create graph objects for every cluster\n let children = [];\n for (const [graphName, { patterns, graph }] of Object.entries(graphPatterns)) {\n const bgp = factory.createBgp(patterns);\n children.push(graphName === '' ? bgp : factory.createGraph(bgp, graph));\n }\n // Join the graph objects\n let join = children[0];\n for (let i = 1; i < children.length; ++i)\n join = factory.createJoin([join, children[i]]);\n return join;\n}\n//# sourceMappingURL=sparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst equal = require(\"fast-deep-equal/es6\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst Parser = require('sparqljs').Parser;\nconst types = Algebra.types;\nlet variables = new Set();\nlet varCount = 0;\nlet useQuads = false;\nlet factory;\n/**\n * Translates the given SPARQL query to SPARQL Algebra.\n * @param sparql - Either a SPARQL string or an object generated by sparql.js\n * @param options - Optional options object. Current options:\n * * dataFactory: The Datafactory used to generate terms. Default @rdfjs/data-model.\n * * quads: Boolean indicating whether triples should be converted to Quads (consumes GRAPH statements). Default false.\n * * prefixes: Pre-defined prefixes for the given query. Default empty.\n * * baseIRI: Base IRI that should be used for the query. Default undefined (throws error if required).\n * @returns {Operation}\n */\nfunction translate(sparql, options) {\n options = options || {};\n factory = new factory_1.default(options.dataFactory);\n let query;\n if (isString(sparql)) {\n let parser = new Parser(options);\n // resets the identifier counter used for blank nodes\n // provides nicer and more consistent output if there are multiple calls\n parser._resetBlanks();\n query = parser.parse(sparql);\n }\n else {\n query = sparql;\n }\n return translateQuery(query, options.quads, options.blankToVariable);\n}\nexports.default = translate;\nfunction translateQuery(sparql, quads, blankToVariable) {\n // this set is filled in during the inScopeVariables call\n variables = new Set();\n varCount = 0;\n useQuads = Boolean(quads);\n // Assume this is an empty query\n if (!sparql.type)\n return factory.createNop();\n if (sparql.type !== 'query' && sparql.type !== 'update')\n throw new Error('Translate only works on complete query or update objects.');\n let res;\n // find ALL variables here to fill `variables` array\n findAllVariables(sparql);\n if (sparql.type === 'query') {\n // group and where are identical, having only 1 makes parsing easier, can be undefined in DESCRIBE\n const group = { type: 'group', patterns: sparql.where || [] };\n res = translateGraphPattern(group);\n res = translateAggregates(sparql, res);\n }\n else if (sparql.type === 'update') {\n res = translateUpdate(sparql);\n }\n if (blankToVariable) {\n res = translateBlankNodesToVariables(res);\n }\n return res;\n}\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isTerm(term) {\n return Boolean(term === null || term === void 0 ? void 0 : term.termType);\n}\n// This is not completely correct but this way we also catch SPARQL.js triples\nfunction isTriple(triple) {\n return triple.subject && triple.predicate && triple.object;\n}\nfunction isVariable(term) {\n return (term === null || term === void 0 ? void 0 : term.termType) === 'Variable';\n}\n// Will be used to make sure new variables don't overlap\nfunction findAllVariables(thingy) {\n if (isTerm(thingy)) {\n if (isVariable(thingy)) {\n // Variables don't store the `?`\n variables.add(`?${thingy.value}`);\n }\n }\n else if (Array.isArray(thingy)) {\n for (const entry of thingy)\n findAllVariables(entry);\n }\n else if (thingy && typeof thingy === 'object') {\n for (let key of Object.keys(thingy)) {\n // Some variables are hidden in keys (specifically for VALUES)\n if (key.startsWith('?')) {\n variables.add(key);\n }\n else if (key.startsWith('$')) {\n variables.add(`?${key.slice(1)}`);\n }\n findAllVariables(thingy[key]);\n }\n }\n}\n// 18.2.1\nfunction inScopeVariables(thingy) {\n let inScope = {};\n if (isTriple(thingy)) {\n // Note that this could both be an actual Quad or a SPARQL.js triple (without graph)\n const result = [\n inScopeVariables(thingy.subject),\n inScopeVariables(thingy.predicate),\n inScopeVariables(thingy.object),\n thingy.graph ? inScopeVariables(thingy.graph) : {}\n ];\n Object.assign(inScope, ...result);\n }\n else if (isTerm(thingy)) {\n if (isVariable(thingy))\n inScope[thingy.value] = thingy;\n }\n else if (thingy.type === 'bgp') {\n // Slightly cheating but this is a subset of what we support so is fine\n const quads = thingy.triples;\n Object.assign(inScope, ...quads.map(inScopeVariables));\n }\n else if (thingy.type === 'path') {\n // A path predicate should not have variables but just iterating so we could theoretically support this\n Object.assign(inScope, ...thingy.items.map(inScopeVariables));\n }\n else if (thingy.type === 'group' || thingy.type === 'union' || thingy.type === 'optional') {\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'service' || thingy.type === 'graph') {\n Object.assign(inScope, inScopeVariables(thingy.name));\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'bind') {\n Object.assign(inScope, inScopeVariables(thingy.variable));\n }\n else if (thingy.type === 'values') {\n if (thingy.values.length > 0) {\n const vars = Object.keys(thingy.values[0]).map(v => factory.createTerm(v));\n Object.assign(inScope, ...vars.map(inScopeVariables));\n }\n }\n else if (thingy.type === 'query') {\n if (thingy.queryType === 'SELECT' || thingy.queryType === 'DESCRIBE') {\n if (thingy.where && thingy.variables.some(util_1.default.isWildcard))\n Object.assign(inScope, ...thingy.where.map(inScopeVariables));\n for (const v of thingy.variables) {\n if (isVariable(v))\n Object.assign(inScope, inScopeVariables(v));\n else if (v.variable)\n Object.assign(inScope, inScopeVariables(v.variable));\n }\n if (thingy.queryType === 'SELECT') {\n if (thingy.group) {\n // Grouping can be a VariableExpression, typings are wrong\n for (const g of thingy.group) {\n if (g.variable)\n Object.assign(inScope, inScopeVariables(g.variable));\n }\n }\n if (thingy.values) {\n const values = { type: 'values', values: thingy.values };\n Object.assign(inScope, inScopeVariables(values));\n }\n }\n }\n }\n return inScope;\n}\nfunction translateGraphPattern(thingy) {\n // 18.2.2.1\n // already done by sparql parser\n // 18.2.2.3\n // 18.2.2.4\n // 18.2.2.5\n // In Sparql.js, a group with a single BGP in it is a single object.\n if (thingy.type === 'bgp') {\n return translateBgp(thingy);\n }\n // 18.2.2.6 - GroupOrUnionGraphPattern\n if (thingy.type === 'union')\n return factory.createUnion(thingy.patterns.map((p) => {\n // sparqljs doesn't always indicate the children are groups\n if (p.type !== 'group')\n p = { type: 'group', patterns: [p] };\n return translateGraphPattern(p);\n }));\n // 18.2.2.6 - GraphGraphPattern\n if (thingy.type === 'graph') {\n // Sparql.js combines the group graph pattern and the graph itself in the same object.\n // We split here so the group graph pattern can be interpreted correctly.\n const group = { type: 'group', patterns: thingy.patterns };\n let result = translateGraphPattern(group);\n // Output depends on if we use quads or not\n if (useQuads)\n result = recurseGraph(result, thingy.name);\n else\n result = factory.createGraph(result, thingy.name);\n return result;\n }\n // 18.2.2.6 - InlineData\n if (thingy.type === 'values')\n return translateInlineData(thingy);\n // 18.2.2.6 - SubSelect\n if (thingy.type === 'query')\n return translateQuery(thingy, useQuads, false);\n if (thingy.type === 'group') {\n // 18.2.2.2\n let filters = [];\n let nonfilters = [];\n for (let pattern of thingy.patterns)\n (pattern.type === 'filter' ? filters : nonfilters).push(pattern);\n // 18.2.2.6 - GroupGraphPattern\n let result = nonfilters.reduce(accumulateGroupGraphPattern, factory.createBgp([]));\n // 18.2.2.7\n let expressions = filters.map(filter => translateExpression(filter.expression));\n if (expressions.length > 0)\n result = factory.createFilter(result, expressions.reduce((acc, exp) => factory.createOperatorExpression('&&', [acc, exp])));\n return result;\n }\n throw new Error(`Unexpected type: ${thingy.type}`);\n}\nfunction translateExpression(exp) {\n if (util_1.default.isSimpleTerm(exp))\n return factory.createTermExpression(exp);\n if (util_1.default.isQuad(exp)) {\n if (util_1.default.hasQuadVariables(exp))\n return factory.createOperatorExpression('triple', [\n translateExpression(exp.subject),\n translateExpression(exp.predicate),\n translateExpression(exp.object),\n ]);\n else\n return factory.createTermExpression(exp);\n }\n if (util_1.default.isWildcard(exp))\n return factory.createWildcardExpression();\n if ('aggregation' in exp)\n return factory.createAggregateExpression(exp.aggregation, translateExpression(exp.expression), Boolean(exp.distinct), exp.separator);\n if ('function' in exp)\n // Outdated typings\n return factory.createNamedExpression(exp.function, exp.args.map(translateExpression));\n if ('operator' in exp) {\n if (exp.operator === 'exists' || exp.operator === 'notexists')\n return factory.createExistenceExpression(exp.operator === 'notexists', translateGraphPattern(exp.args[0]));\n if (exp.operator === 'in' || exp.operator === 'notin')\n exp.args = [exp.args[0]].concat(exp.args[1]); // sparql.js uses 2 arguments with the second one being a list\n return factory.createOperatorExpression(exp.operator, exp.args.map(translateExpression));\n }\n throw new Error(`Unknown expression: ${JSON.stringify(exp)}`);\n}\nfunction translateBgp(thingy) {\n let patterns = [];\n let joins = [];\n for (let t of thingy.triples) {\n if ('pathType' in t.predicate) {\n // translatePath returns a mix of Quads and Paths\n let path = translatePath(t);\n for (let p of path) {\n if (p.type === types.PATH) {\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n patterns = [];\n joins.push(p);\n }\n else\n patterns.push(p);\n }\n }\n else\n patterns.push(translateQuad(t));\n }\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n if (joins.length === 1)\n return joins[0];\n return factory.createJoin(joins);\n}\nfunction translatePath(triple) {\n let sub = triple.subject;\n let pred = translatePathPredicate(triple.predicate);\n let obj = triple.object;\n return simplifyPath(sub, pred, obj);\n}\nfunction translatePathPredicate(predicate) {\n if (util_1.default.isSimpleTerm(predicate)) {\n if (predicate.termType === 'NamedNode')\n return factory.createLink(predicate);\n else\n throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(predicate)}`);\n }\n if (predicate.pathType === '^')\n return factory.createInv(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '!') {\n // negation is either over a single predicate or a list of disjuncted properties\n let normals = [];\n let inverted = [];\n let items;\n if ('pathType' in predicate.items[0] && predicate.items[0].pathType === '|')\n items = predicate.items[0].items; // the | element\n else\n items = predicate.items;\n for (let item of items) {\n if (util_1.default.isSimpleTerm(item))\n normals.push(item);\n else if (item.pathType === '^')\n inverted.push(item.items[0]);\n else\n throw new Error(`Unexpected item: ${JSON.stringify(item)}`);\n }\n // NPS elements do not have the LINK function\n let normalElement = factory.createNps(normals);\n let invertedElement = factory.createInv(factory.createNps(inverted));\n if (inverted.length === 0)\n return normalElement;\n if (normals.length === 0)\n return invertedElement;\n return factory.createAlt([normalElement, invertedElement,]);\n }\n if (predicate.pathType === '/')\n return factory.createSeq(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '|')\n return factory.createAlt(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '*')\n return factory.createZeroOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '+')\n return factory.createOneOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '?')\n return factory.createZeroOrOnePath(translatePathPredicate(predicate.items[0]));\n throw new Error(`Unable to translate path expression ${JSON.stringify(predicate)}`);\n}\nfunction simplifyPath(subject, predicate, object) {\n if (predicate.type === types.LINK)\n return [factory.createPattern(subject, predicate.iri, object)];\n if (predicate.type === types.INV)\n return simplifyPath(object, predicate.path, subject);\n if (predicate.type === types.SEQ) {\n let joiner = subject;\n return util_1.default.flatten(predicate.input.map((subOp, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? object : generateFreshVar();\n const simplifiedPath = simplifyPath(joiner, subOp, nextJoiner);\n if (nextJoiner.termType === 'Variable') {\n joiner = nextJoiner;\n }\n return simplifiedPath;\n }));\n }\n return [factory.createPath(subject, predicate, object)];\n}\nfunction generateFreshVar() {\n let v = `?var${varCount++}`;\n if (variables.has(v))\n return generateFreshVar();\n variables.add(v);\n return factory.createTerm(v);\n}\nfunction translateQuad(quad) {\n if ('pathType' in quad.predicate) {\n throw new Error('Trying to translate property path to quad.');\n }\n // Graphs are needed here\n // TODO: investigate if typings are wrong or if we internally add graphs to these\n return factory.createPattern(quad.subject, quad.predicate, quad.object, quad.graph);\n}\nlet typeVals = Object.values(types);\nfunction recurseGraph(thingy, graph, replacement) {\n if (thingy.type === types.GRAPH) {\n if (replacement) {\n // At this point we would lose track of the replacement which would result in incorrect results\n // This would indicate the library is not being used as intended though\n throw new Error('Recursing through nested GRAPH statements with a replacement is impossible.');\n }\n // In case there were nested GRAPH statements that were not recursed yet for some reason\n thingy = recurseGraph(thingy.input, thingy.name);\n }\n else if (thingy.type === types.SERVICE) {\n // Service blocks are not affected by enclosing GRAPH statements, so nothing is modified in this block.\n // See https://github.com/joachimvh/SPARQLAlgebra.js/pull/104#issuecomment-1838016303\n }\n else if (thingy.type === types.BGP)\n thingy.patterns = thingy.patterns.map(quad => {\n if (replacement) {\n if (quad.subject.equals(graph))\n quad.subject = replacement;\n if (quad.predicate.equals(graph))\n quad.predicate = replacement;\n if (quad.object.equals(graph))\n quad.object = replacement;\n }\n if (quad.graph.termType === 'DefaultGraph')\n quad.graph = graph;\n return quad;\n });\n else if (thingy.type === types.PATH) {\n if (replacement) {\n if (thingy.subject.equals(graph))\n thingy.subject = replacement;\n if (thingy.object.equals(graph))\n thingy.object = replacement;\n }\n if (thingy.graph.termType === 'DefaultGraph')\n thingy.graph = graph;\n }\n // need to replace variables in subqueries should the graph also be a variable of the same name\n // unless the subquery projects that variable\n else if (thingy.type === types.PROJECT && !replacement) {\n if (!thingy.variables.some(v => v.equals(graph)))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n // this can happen if the query extends an expression to the name of the graph\n // since the extend happens here there should be no further occurrences of this name\n // if there are it's the same situation as above\n else if (thingy.type === types.EXTEND && !replacement) {\n if (thingy.variable.equals(graph))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n else {\n for (let key of Object.keys(thingy)) {\n if (Array.isArray(thingy[key]))\n thingy[key] = thingy[key].map((x) => recurseGraph(x, graph, replacement));\n else if (typeVals.indexOf(thingy[key].type) >= 0) // can't do instanceof on an interface\n thingy[key] = recurseGraph(thingy[key], graph, replacement);\n else if (replacement && isVariable(thingy[key]) && thingy[key].equals(graph))\n thingy[key] = replacement;\n }\n }\n return thingy;\n}\nfunction accumulateGroupGraphPattern(G, E) {\n if (E.type === 'optional') {\n // optional input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n if (A.type === types.FILTER) {\n G = factory.createLeftJoin(G, A.input, A.expression);\n }\n else\n G = factory.createLeftJoin(G, A);\n }\n else if (E.type === 'minus') {\n // minus input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n G = factory.createMinus(G, A);\n }\n else if (E.type === 'bind')\n G = factory.createExtend(G, E.variable, translateExpression(E.expression));\n else if (E.type === 'service') {\n // transform to group so childnodes get parsed correctly\n const group = { type: 'group', patterns: E.patterns };\n const A = factory.createService(translateGraphPattern(group), E.name, E.silent);\n G = simplifiedJoin(G, A);\n }\n else {\n const A = translateGraphPattern(E);\n G = simplifiedJoin(G, A);\n }\n return G;\n}\nfunction simplifiedJoin(G, A) {\n // Note: this is more simplification than requested in 18.2.2.8, but no reason not to do it.\n if (G.type === types.BGP && A.type === types.BGP)\n G = factory.createBgp([...G.patterns, ...A.patterns]);\n // 18.2.2.8 (simplification)\n else if (G.type === types.BGP && G.patterns.length === 0)\n G = A;\n else if (A.type === types.BGP && A.patterns.length === 0) { } // do nothing\n else\n G = factory.createJoin([G, A]);\n return G;\n}\nfunction translateInlineData(values) {\n let variables = (values.values.length === 0 ? [] : Object.keys(values.values[0])).map(factory.createTerm.bind(factory));\n let bindings = values.values.map((binding) => {\n let keys = Object.keys(binding);\n keys = keys.filter(k => binding[k] !== undefined);\n let map = {};\n for (let key of keys)\n map[key] = binding[key];\n return map;\n });\n return factory.createValues(variables, bindings);\n}\n// --------------------------------------- AGGREGATES\nfunction translateAggregates(query, res) {\n // Typings for ConstructQuery are wrong and missing several fields so we will cast quite often to SelectQuery to have partial typings\n const select = query;\n // 18.2.4.1\n const E = [];\n const A = {};\n select.variables = select.variables && select.variables.map(val => mapAggregate(val, A));\n select.having = select.having && select.having.map(val => mapAggregate(val, A));\n select.order = select.order && select.order.map(val => mapAggregate(val, A));\n // if there are any aggregates or if we have a groupBy (both result in a GROUP)\n if (select.group || Object.keys(A).length > 0) {\n const aggregates = Object.keys(A).map(v => translateBoundAggregate(A[v], factory.createTerm(v)));\n const vars = [];\n if (select.group) {\n for (const e of select.group) {\n if (util_1.default.isSimpleTerm(e.expression)) {\n vars.push(e.expression); // this will always be a var, otherwise sparql would be invalid\n }\n else {\n // Incorrect typings, e can have a variable, see for example group-variable test in sparql.js\n const v = 'variable' in e ? e.variable : generateFreshVar();\n res = factory.createExtend(res, v, translateExpression(e.expression));\n vars.push(v);\n }\n }\n }\n res = factory.createGroup(res, vars, aggregates);\n }\n // 18.2.4.2\n if (select.having)\n for (let filter of select.having)\n res = factory.createFilter(res, translateExpression(filter));\n // 18.2.4.3\n if (query.values)\n res = factory.createJoin([res, translateInlineData(query)]);\n // 18.2.4.4\n let PV = [];\n if (query.queryType === 'SELECT' || query.queryType === 'DESCRIBE') {\n // Sort variables for consistent output\n if (query.variables.some((e) => e && util_1.default.isWildcard(e)))\n PV = Object.values(inScopeVariables(query))\n .sort((left, right) => left.value.localeCompare(right.value));\n else {\n // Wildcard has been filtered out above\n for (let v of query.variables) {\n // can have non-variables with DESCRIBE\n if (isVariable(v) || !('variable' in v))\n PV.push(v);\n else if (v.variable) // ... AS ?x\n {\n PV.push(v.variable);\n E.push(v);\n }\n }\n }\n }\n // TODO: Jena simplifies by having a list of extends\n for (let v of E)\n res = factory.createExtend(res, v.variable, translateExpression(v.expression));\n // 18.2.5\n // not using toList and toMultiset\n // 18.2.5.1\n if (select.order)\n res = factory.createOrderBy(res, select.order.map((exp) => {\n let result = translateExpression(exp.expression);\n if (exp.descending)\n result = factory.createOperatorExpression('desc', [result]);\n return result;\n }));\n // 18.2.5.2\n // construct does not need a project (select, ask and describe do)\n if (query.queryType === 'SELECT')\n // Named nodes are only possible in a DESCRIBE so this cast is safe\n res = factory.createProject(res, PV);\n // 18.2.5.3\n if (select.distinct)\n res = factory.createDistinct(res);\n // 18.2.5.4\n if (select.reduced)\n res = factory.createReduced(res);\n // NEW: support for ask/construct/describe queries\n if (query.queryType === 'CONSTRUCT')\n res = factory.createConstruct(res, (query.template || []).map(translateQuad));\n else if (query.queryType === 'ASK')\n res = factory.createAsk(res);\n else if (query.queryType === 'DESCRIBE')\n res = factory.createDescribe(res, PV);\n // Slicing needs to happen after construct/describe\n // 18.2.5.5\n if (select.offset || select.limit)\n res = factory.createSlice(res, select.offset || 0, select.limit);\n if (select.from)\n res = factory.createFrom(res, select.from.default, select.from.named);\n return res;\n}\n// rewrites some of the input sparql object to make use of aggregate variables\nfunction mapAggregate(thingy, aggregates) {\n if ('type' in thingy && thingy.type === 'aggregate') {\n let found = false;\n let v;\n for (let key of Object.keys(aggregates)) {\n if (equal(aggregates[key], thingy)) {\n v = factory.createTerm(key);\n found = true;\n break;\n }\n }\n if (!found) {\n v = generateFreshVar();\n aggregates[(0, rdf_string_1.termToString)(v)] = thingy;\n }\n return v;\n }\n // non-aggregate expression\n if ('expression' in thingy && thingy.expression)\n return { ...thingy, expression: mapAggregate(thingy.expression, aggregates) };\n if ('args' in thingy && thingy.args)\n return { ...thingy, args: thingy.args.map(subthingy => mapAggregate(subthingy, aggregates)) };\n // Normal variable/wildcard\n return thingy;\n}\nfunction translateBoundAggregate(thingy, v) {\n if (thingy.type !== 'aggregate' || !thingy.aggregation)\n throw new Error(`Unexpected input: ${JSON.stringify(thingy)}`);\n const A = translateExpression(thingy);\n A.variable = v;\n return A;\n}\nfunction translateUpdate(thingy) {\n if (thingy.updates.length === 1)\n return translateSingleUpdate(thingy.updates[0]);\n return factory.createCompositeUpdate(thingy.updates.map(translateSingleUpdate));\n}\nfunction translateSingleUpdate(thingy) {\n if ('type' in thingy) {\n if (thingy.type === 'load')\n return translateUpdateGraphLoad(thingy);\n if (thingy.type === 'clear' || thingy.type === 'create' || thingy.type === 'drop')\n return translateUpdateGraph(thingy);\n if (thingy.type === 'add' || thingy.type === 'copy' || thingy.type === 'move')\n return translateUpdateGraphShortcut(thingy);\n }\n else if (thingy.updateType === 'insertdelete' || thingy.updateType === 'deletewhere' || thingy.updateType === 'delete' || thingy.updateType === 'insert')\n return translateInsertDelete(thingy);\n throw new Error(`Unknown update type ${JSON.stringify(thingy)}`);\n}\nfunction translateInsertDelete(thingy) {\n if (!useQuads)\n throw new Error('INSERT/DELETE operations are only supported with quads option enabled');\n let deleteTriples = [];\n let insertTriples = [];\n let where;\n if (thingy.delete)\n deleteTriples = util_1.default.flatten(thingy.delete.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.insert)\n insertTriples = util_1.default.flatten(thingy.insert.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.where && thingy.where.length > 0) {\n where = translateGraphPattern({ type: 'group', patterns: thingy.where });\n // Wrong typings, see test \"using\" in Sparql.js\n const use = thingy.using;\n if (use)\n where = factory.createFrom(where, use.default, use.named);\n else if (thingy.graph)\n // This is equivalent\n where = recurseGraph(where, thingy.graph);\n }\n else if (thingy.updateType === 'deletewhere' && deleteTriples.length > 0) {\n where = factory.createBgp(deleteTriples);\n }\n return factory.createDeleteInsert(deleteTriples.length > 0 ? deleteTriples : undefined, insertTriples.length > 0 ? insertTriples : undefined, where);\n}\n// UPDATE parsing will always return quads and have no GRAPH elements\nfunction translateUpdateTriplesBlock(thingy, graph) {\n let currentGraph = graph;\n if (thingy.type === 'graph')\n currentGraph = thingy.name;\n let currentTriples = thingy.triples;\n if (currentGraph)\n currentTriples = currentTriples.map(triple => Object.assign(triple, { graph: currentGraph }));\n return currentTriples.map(translateQuad);\n}\nfunction translateUpdateGraph(thingy) {\n let source;\n if (util_1.default.isSimpleTerm(thingy.graph))\n source = thingy.graph;\n else if (thingy.graph.all)\n source = 'ALL';\n else if (thingy.graph.default)\n source = 'DEFAULT';\n else if (thingy.graph.named)\n source = 'NAMED';\n else\n source = thingy.graph.name;\n switch (thingy.type) {\n case 'clear': return factory.createClear(source, thingy.silent);\n case 'create': return factory.createCreate(source, thingy.silent);\n case 'drop': return factory.createDrop(source, thingy.silent);\n }\n}\nfunction translateUpdateGraphLoad(thingy) {\n return factory.createLoad(thingy.source, thingy.destination, thingy.silent);\n}\nfunction translateUpdateGraphShortcut(thingy) {\n const source = thingy.source.default ? 'DEFAULT' : thingy.source.name;\n const destination = thingy.destination.default ? 'DEFAULT' : thingy.destination.name;\n switch (thingy.type) {\n case 'copy': return factory.createCopy(source, destination, thingy.silent);\n case 'move': return factory.createMove(source, destination, thingy.silent);\n case 'add': return factory.createAdd(source, destination, thingy.silent);\n }\n}\nfunction translateBlankNodesToVariables(res) {\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(variables).reduce((acc, variable) => {\n acc[variable] = true;\n return acc;\n }, {});\n return util_1.default.mapOperation(res, {\n [Algebra.types.DELETE_INSERT]: (op) => {\n // Make sure blank nodes remain in the INSERT block, but do update the WHERE block\n return {\n result: factory.createDeleteInsert(op.delete, op.insert, op.where && translateBlankNodesToVariables(op.where)),\n recurse: false,\n };\n },\n [Algebra.types.PATH]: (op, factory) => {\n return {\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.PATTERN]: (op, factory) => {\n return {\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT]: (op) => {\n // Blank nodes in CONSTRUCT templates must be maintained\n return {\n result: factory.createConstruct(translateBlankNodesToVariables(op.input), op.template),\n recurse: false,\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = util_1.default.createUniqueVariable(term.value, variablesRaw, factory.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n}\n//# sourceMappingURL=sparqlAlgebra.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst algebra_1 = require(\"./algebra\");\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst rdf_terms_1 = require(\"rdf-terms\");\nclass Util {\n /**\n * Flattens an array of arrays to an array.\n * @param arr - Array of arrays\n */\n static flatten(arr) {\n return Array.prototype.concat(...arr).filter(x => x);\n }\n /**\n * Outputs a JSON object corresponding to the input algebra-like.\n */\n static objectify(algebra) {\n if (algebra.termType) {\n if (algebra.termType === 'Quad') {\n return {\n type: 'pattern',\n termType: 'Quad',\n subject: Util.objectify(algebra.subject),\n predicate: Util.objectify(algebra.predicate),\n object: Util.objectify(algebra.object),\n graph: Util.objectify(algebra.graph),\n };\n }\n else {\n let result = { termType: algebra.termType, value: algebra.value };\n if (algebra.language)\n result.language = algebra.language;\n if (algebra.datatype)\n result.datatype = Util.objectify(algebra.datatype);\n return result;\n }\n }\n if (Array.isArray(algebra))\n return algebra.map(e => Util.objectify(e));\n if (algebra === Object(algebra)) {\n let result = {};\n for (let key of Object.keys(algebra))\n result[key] = Util.objectify(algebra[key]);\n return result;\n }\n return algebra;\n }\n /**\n * Detects all in-scope variables.\n * In practice this means iterating through the entire algebra tree, finding all variables,\n * and stopping when a project function is found.\n * @param {Operation} op - Input algebra tree.\n * @returns {Variable[]} - List of unique in-scope variables.\n */\n static inScopeVariables(op) {\n const variables = [];\n function addVariable(v) {\n if (!variables.find(v2 => v.value === v2.value))\n variables.push(v);\n }\n function recurseTerm(quad) {\n if (quad.subject.termType === 'Variable')\n addVariable(quad.subject);\n if (quad.predicate.termType === 'Variable')\n addVariable(quad.predicate);\n if (quad.object.termType === 'Variable')\n addVariable(quad.object);\n if (quad.graph.termType === 'Variable')\n addVariable(quad.graph);\n if (quad.subject.termType === 'Quad')\n recurseTerm(quad.subject);\n if (quad.predicate.termType === 'Quad')\n recurseTerm(quad.predicate);\n if (quad.object.termType === 'Quad')\n recurseTerm(quad.object);\n if (quad.graph.termType === 'Quad')\n recurseTerm(quad.graph);\n }\n // https://www.w3.org/TR/sparql11-query/#variableScope\n Util.recurseOperation(op, {\n [algebra_1.types.EXPRESSION]: (op) => {\n if (op.expressionType === algebra_1.expressionTypes.AGGREGATE && op.variable) {\n addVariable(op.variable);\n }\n return true;\n },\n [algebra_1.types.EXTEND]: (op) => {\n addVariable(op.variable);\n return true;\n },\n [algebra_1.types.GRAPH]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.GROUP]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n [algebra_1.types.PATH]: (op) => {\n if (op.subject.termType === 'Variable')\n addVariable(op.subject);\n if (op.object.termType === 'Variable')\n addVariable(op.object);\n if (op.graph.termType === 'Variable')\n addVariable(op.graph);\n if (op.subject.termType === 'Quad')\n recurseTerm(op.subject);\n if (op.object.termType === 'Quad')\n recurseTerm(op.object);\n if (op.graph.termType === 'Quad')\n recurseTerm(op.graph);\n return true;\n },\n [algebra_1.types.PATTERN]: (op) => {\n recurseTerm(op);\n return true;\n },\n [algebra_1.types.PROJECT]: (op) => {\n op.variables.forEach(addVariable);\n return false;\n },\n [algebra_1.types.SERVICE]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.VALUES]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n });\n return variables;\n }\n /**\n * Recurses through the given algebra tree\n * A map of callback functions can be provided for individual Operation types to gather data.\n * The return value of those callbacks should indicate whether recursion should be applied or not.\n * Making modifications will change the original input object.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation) => boolean } callbacks - A map of required callback Operations.\n */\n static recurseOperation(op, callbacks) {\n let result = op;\n let doRecursion = true;\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n doRecursion = callback(op);\n if (!doRecursion)\n return;\n let recurseOp = (op) => Util.recurseOperation(op, callbacks);\n switch (result.type) {\n case algebra_1.types.ALT:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.ASK:\n recurseOp(result.input);\n break;\n case algebra_1.types.BGP:\n result.patterns.forEach(recurseOp);\n break;\n case algebra_1.types.CONSTRUCT:\n recurseOp(result.input);\n result.template.map(recurseOp);\n break;\n case algebra_1.types.DESCRIBE:\n recurseOp(result.input);\n break;\n case algebra_1.types.DISTINCT:\n recurseOp(result.input);\n break;\n case algebra_1.types.EXPRESSION:\n if (result.expressionType === algebra_1.expressionTypes.EXISTENCE) {\n recurseOp(result.input);\n }\n break;\n case algebra_1.types.EXTEND:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FILTER:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FROM:\n recurseOp(result.input);\n break;\n case algebra_1.types.GRAPH:\n recurseOp(result.input);\n break;\n case algebra_1.types.GROUP:\n recurseOp(result.input);\n result.aggregates.forEach(recurseOp);\n break;\n case algebra_1.types.INV:\n recurseOp(result.path);\n break;\n case algebra_1.types.JOIN:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.LEFT_JOIN:\n result.input.map(recurseOp);\n if (result.expression)\n recurseOp(result.expression);\n break;\n case algebra_1.types.LINK:\n break;\n case algebra_1.types.MINUS:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.NOP:\n break;\n case algebra_1.types.NPS:\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ORDER_BY:\n recurseOp(result.input);\n result.expressions.forEach(recurseOp);\n break;\n case algebra_1.types.PATH:\n recurseOp(result.predicate);\n break;\n case algebra_1.types.PATTERN:\n break;\n case algebra_1.types.PROJECT:\n recurseOp(result.input);\n break;\n case algebra_1.types.REDUCED:\n recurseOp(result.input);\n break;\n case algebra_1.types.SEQ:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.SERVICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.SLICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.UNION:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.VALUES:\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n recurseOp(result.path);\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result.updates.forEach(update => recurseOp(update));\n break;\n case algebra_1.types.DELETE_INSERT:\n if (result.delete)\n result.delete.forEach(pattern => recurseOp(pattern));\n if (result.insert)\n result.insert.forEach(pattern => recurseOp(pattern));\n if (result.where)\n recurseOp(result.where);\n break;\n // all of these only have graph IDs as values\n case algebra_1.types.LOAD: break;\n case algebra_1.types.CLEAR: break;\n case algebra_1.types.CREATE: break;\n case algebra_1.types.DROP: break;\n case algebra_1.types.ADD: break;\n case algebra_1.types.MOVE: break;\n case algebra_1.types.COPY: break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Creates a deep copy of the given Operation.\n * Creates shallow copies of the non-Operation values.\n * A map of callback functions can be provided for individual Operation types\n * to specifically modify the given objects before triggering recursion.\n * The return value of those callbacks should indicate whether recursion should be applied to this returned object or not.\n * @param {Operation} op - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapOperation(op, callbacks, factory) {\n let result = op;\n let doRecursion = true;\n let copyMetadata = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[op.type];\n if (callback) {\n // Not sure how to get typing correct for op here\n const recurseResult = callback(op, factory);\n result = recurseResult.result;\n doRecursion = recurseResult.recurse;\n copyMetadata = recurseResult.copyMetadata !== false;\n }\n let toCopyMetadata;\n if (copyMetadata && (result.metadata || op.metadata)) {\n toCopyMetadata = { ...result.metadata, ...op.metadata };\n }\n if (!doRecursion) {\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n // Several casts here might be wrong though depending on the callbacks output\n switch (result.type) {\n case algebra_1.types.ALT:\n result = factory.createAlt(result.input.map(mapOp));\n break;\n case algebra_1.types.ASK:\n result = factory.createAsk(mapOp(result.input));\n break;\n case algebra_1.types.BGP:\n result = factory.createBgp(result.patterns.map(mapOp));\n break;\n case algebra_1.types.CONSTRUCT:\n result = factory.createConstruct(mapOp(result.input), result.template.map(mapOp));\n break;\n case algebra_1.types.DESCRIBE:\n result = factory.createDescribe(mapOp(result.input), result.terms);\n break;\n case algebra_1.types.DISTINCT:\n result = factory.createDistinct(mapOp(result.input));\n break;\n case algebra_1.types.EXPRESSION:\n result = Util.mapExpression(result, callbacks, factory);\n break;\n case algebra_1.types.EXTEND:\n result = factory.createExtend(mapOp(result.input), result.variable, mapOp(result.expression));\n break;\n case algebra_1.types.FILTER:\n result = factory.createFilter(mapOp(result.input), mapOp(result.expression));\n break;\n case algebra_1.types.FROM:\n result = factory.createFrom(mapOp(result.input), [...result.default], [...result.named]);\n break;\n case algebra_1.types.GRAPH:\n result = factory.createGraph(mapOp(result.input), result.name);\n break;\n case algebra_1.types.GROUP:\n result = factory.createGroup(mapOp(result.input), [].concat(result.variables), result.aggregates.map(mapOp));\n break;\n case algebra_1.types.INV:\n result = factory.createInv(mapOp(result.path));\n break;\n case algebra_1.types.JOIN:\n result = factory.createJoin(result.input.map(mapOp));\n break;\n case algebra_1.types.LEFT_JOIN:\n result = factory.createLeftJoin(mapOp(result.input[0]), mapOp(result.input[1]), result.expression ? mapOp(result.expression) : undefined);\n break;\n case algebra_1.types.LINK:\n result = factory.createLink(result.iri);\n break;\n case algebra_1.types.MINUS:\n result = factory.createMinus(mapOp(result.input[0]), mapOp(result.input[1]));\n break;\n case algebra_1.types.NOP:\n result = factory.createNop();\n break;\n case algebra_1.types.NPS:\n result = factory.createNps([].concat(result.iris));\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n result = factory.createOneOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ORDER_BY:\n result = factory.createOrderBy(mapOp(result.input), result.expressions.map(mapOp));\n break;\n case algebra_1.types.PATH:\n result = factory.createPath(result.subject, mapOp(result.predicate), result.object, result.graph);\n break;\n case algebra_1.types.PATTERN:\n result = factory.createPattern(result.subject, result.predicate, result.object, result.graph);\n break;\n case algebra_1.types.PROJECT:\n result = factory.createProject(mapOp(result.input), [...result.variables]);\n break;\n case algebra_1.types.REDUCED:\n result = factory.createReduced(mapOp(result.input));\n break;\n case algebra_1.types.SEQ:\n result = factory.createSeq(result.input.map(mapOp));\n break;\n case algebra_1.types.SERVICE:\n result = factory.createService(mapOp(result.input), result.name, result.silent);\n break;\n case algebra_1.types.SLICE:\n result = factory.createSlice(mapOp(result.input), result.start, result.length);\n break;\n case algebra_1.types.UNION:\n result = factory.createUnion(result.input.map(mapOp));\n break;\n case algebra_1.types.VALUES:\n result = factory.createValues([].concat(result.variables), result.bindings.map(b => Object.assign({}, b)));\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n result = factory.createZeroOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n result = factory.createZeroOrOnePath(mapOp(result.path));\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result = factory.createCompositeUpdate(result.updates.map(mapOp));\n break;\n case algebra_1.types.DELETE_INSERT:\n result = factory.createDeleteInsert(result.delete ? result.delete.map(mapOp) : undefined, result.insert ? result.insert.map(mapOp) : undefined, result.where ? mapOp(result.where) : undefined);\n break;\n case algebra_1.types.LOAD:\n result = factory.createLoad(result.source, result.destination, result.silent);\n break;\n case algebra_1.types.CLEAR:\n result = factory.createClear(result.source, result.silent);\n break;\n case algebra_1.types.CREATE:\n result = factory.createCreate(result.source, result.silent);\n break;\n case algebra_1.types.DROP:\n result = factory.createDrop(result.source, result.silent);\n break;\n case algebra_1.types.ADD:\n result = factory.createAdd(result.source, result.destination);\n break;\n case algebra_1.types.MOVE:\n result = factory.createMove(result.source, result.destination);\n break;\n case algebra_1.types.COPY:\n result = factory.createCopy(result.source, result.destination);\n break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n /**\n * Similar to the {@link mapOperation} function but specifically for expressions.\n * Both functions call each other while copying.\n * Should not be called directly since it does not execute the callbacks, these happen in {@link mapOperation}.\n * @param {Expression} expr - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapExpression(expr, callbacks, factory) {\n let result = expr;\n let doRecursion = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[expr.expressionType];\n if (callback)\n ({ result, recurse: doRecursion } = callback(expr, factory));\n if (!doRecursion)\n return result;\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n switch (expr.expressionType) {\n case algebra_1.expressionTypes.AGGREGATE:\n if (expr.variable) {\n return factory.createBoundAggregate(expr.variable, expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n }\n return factory.createAggregateExpression(expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n case algebra_1.expressionTypes.EXISTENCE:\n return factory.createExistenceExpression(expr.not, mapOp(expr.input));\n case algebra_1.expressionTypes.NAMED:\n return factory.createNamedExpression(expr.name, expr.args.map(mapOp));\n case algebra_1.expressionTypes.OPERATOR:\n return factory.createOperatorExpression(expr.operator, expr.args.map(mapOp));\n case algebra_1.expressionTypes.TERM:\n return factory.createTermExpression(expr.term);\n case algebra_1.expressionTypes.WILDCARD:\n return factory.createWildcardExpression();\n default: throw new Error(`Unknown Expression type ${expr.expressionType}`);\n }\n }\n /**\n * Creates a deep clone of the operation.\n * This is syntactic sugar for calling {@link mapOperation} without callbacks.\n * @param {Operation} op - The operation to copy.\n * @returns {Operation} - The deep copy.\n */\n static cloneOperation(op) {\n return Util.mapOperation(op, {});\n }\n /**\n * Creates a deep clone of the expression.\n * This is syntactic sugar for calling {@link mapExpression} without callbacks.\n * @param {Expression} expr - The operation to copy.\n * @returns {Expression} - The deep copy.\n */\n static cloneExpression(expr) {\n return Util.mapExpression(expr, {});\n }\n static createUniqueVariable(label, variables, dataFactory) {\n let counter = 0;\n let labelLoop = label;\n while (variables[labelLoop]) {\n labelLoop = `${label}${counter++}`;\n }\n return dataFactory.variable(labelLoop);\n }\n // separate terms from wildcard since we handle them differently\n static isSimpleTerm(term) {\n return term.termType !== undefined && term.termType !== 'Quad' && term.termType !== 'Wildcard';\n }\n static isQuad(term) {\n return term.termType === 'Quad';\n }\n static hasQuadVariables(quad) {\n return (0, rdf_terms_1.someTermsNested)(quad, term => term.termType === 'Variable');\n }\n static isWildcard(term) {\n return term.termType === 'Wildcard';\n }\n}\nexports.default = Util;\n//# sourceMappingURL=util.js.map","var XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer';\nvar XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';\n\nfunction Generator(options) {\n this._options = options = options || {};\n\n var prefixes = options.prefixes || {};\n this._prefixByIri = {};\n var prefixIris = [];\n for (var prefix in prefixes) {\n var iri = prefixes[prefix];\n if (isString(iri)) {\n this._prefixByIri[iri] = prefix;\n prefixIris.push(iri);\n }\n }\n var iriList = prefixIris.join('|').replace(/[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n this._prefixRegex = new RegExp('^(' + iriList + ')([a-zA-Z][\\\\-_a-zA-Z0-9]*)$');\n this._usedPrefixes = {};\n this._sparqlStar = options.sparqlStar;\n this._indent = isString(options.indent) ? options.indent : ' ';\n this._newline = isString(options.newline) ? options.newline : '\\n';\n this._explicitDatatype = Boolean(options.explicitDatatype);\n}\n\n// Converts the parsed query object into a SPARQL query\nGenerator.prototype.toQuery = function (q) {\n var query = '';\n\n if (q.queryType)\n query += q.queryType.toUpperCase() + ' ';\n if (q.reduced)\n query += 'REDUCED ';\n if (q.distinct)\n query += 'DISTINCT ';\n\n if (q.variables){\n query += mapJoin(q.variables, undefined, function (variable) {\n return isTerm(variable) ? this.toEntity(variable) :\n '(' + this.toExpression(variable.expression) + ' AS ' + variableToString(variable.variable) + ')';\n }, this) + ' ';\n }\n else if (q.template)\n query += this.group(q.template, true) + this._newline;\n\n if (q.from)\n query += this.graphs('FROM ', q.from.default) + this.graphs('FROM NAMED ', q.from.named);\n if (q.where)\n query += 'WHERE ' + this.group(q.where, true) + this._newline;\n\n if (q.updates)\n query += mapJoin(q.updates, ';' + this._newline, this.toUpdate, this);\n\n if (q.group)\n query += 'GROUP BY ' + mapJoin(q.group, undefined, function (it) {\n var result = isTerm(it.expression)\n ? this.toEntity(it.expression)\n : '(' + this.toExpression(it.expression) + ')';\n return it.variable ? '(' + result + ' AS ' + variableToString(it.variable) + ')' : result;\n }, this) + this._newline;\n if (q.having)\n query += 'HAVING (' + mapJoin(q.having, undefined, this.toExpression, this) + ')' + this._newline;\n if (q.order)\n query += 'ORDER BY ' + mapJoin(q.order, undefined, function (it) {\n var expr = '(' + this.toExpression(it.expression) + ')';\n return !it.descending ? expr : 'DESC ' + expr;\n }, this) + this._newline;\n\n if (q.offset)\n query += 'OFFSET ' + q.offset + this._newline;\n if (q.limit)\n query += 'LIMIT ' + q.limit + this._newline;\n\n if (q.values)\n query += this.values(q);\n\n // stringify prefixes at the end to mark used ones\n query = this.baseAndPrefixes(q) + query;\n return query.trim();\n};\n\nGenerator.prototype.baseAndPrefixes = function (q) {\n var base = q.base ? ('BASE <' + q.base + '>' + this._newline) : '';\n var prefixes = '';\n for (var key in q.prefixes) {\n if (this._options.allPrefixes || this._usedPrefixes[key])\n prefixes += 'PREFIX ' + key + ': <' + q.prefixes[key] + '>' + this._newline;\n }\n return base + prefixes;\n};\n\n// Converts the parsed SPARQL pattern into a SPARQL pattern\nGenerator.prototype.toPattern = function (pattern) {\n var type = pattern.type || (pattern instanceof Array) && 'array' ||\n (pattern.subject && pattern.predicate && pattern.object ? 'triple' : '');\n if (!(type in this))\n throw new Error('Unknown entry type: ' + type);\n return this[type](pattern);\n};\n\nGenerator.prototype.triple = function (t) {\n return this.toEntity(t.subject) + ' ' + this.toEntity(t.predicate) + ' ' + this.toEntity(t.object) + '.';\n};\n\nGenerator.prototype.array = function (items) {\n return mapJoin(items, this._newline, this.toPattern, this);\n};\n\nGenerator.prototype.bgp = function (bgp) {\n return this.encodeTriples(bgp.triples);\n};\n\nGenerator.prototype.encodeTriples = function (triples) {\n if (!triples.length)\n return '';\n\n var parts = [], subject = undefined, predicate = undefined;\n for (var i = 0; i < triples.length; i++) {\n var triple = triples[i];\n // Triple with different subject\n if (!equalTerms(triple.subject, subject)) {\n // Terminate previous triple\n if (subject)\n parts.push('.' + this._newline);\n subject = triple.subject;\n predicate = triple.predicate;\n parts.push(this.toEntity(subject), ' ', this.toEntity(predicate));\n }\n // Triple with same subject but different predicate\n else if (!equalTerms(triple.predicate, predicate)) {\n predicate = triple.predicate;\n parts.push(';' + this._newline, this._indent, this.toEntity(predicate));\n }\n // Triple with same subject and predicate\n else {\n parts.push(',');\n }\n parts.push(' ', this.toEntity(triple.object));\n }\n parts.push('.');\n\n return parts.join('');\n}\n\nGenerator.prototype.graph = function (graph) {\n return 'GRAPH ' + this.toEntity(graph.name) + ' ' + this.group(graph);\n};\n\nGenerator.prototype.graphs = function (keyword, graphs) {\n return !graphs || graphs.length === 0 ? '' :\n mapJoin(graphs, '', function (g) { return keyword + this.toEntity(g) + this._newline; }, this)\n}\n\nGenerator.prototype.group = function (group, inline) {\n group = inline !== true ? this.array(group.patterns || group.triples)\n : this.toPattern(group.type !== 'group' ? group : group.patterns);\n return group.indexOf(this._newline) === -1 ? '{ ' + group + ' }' : '{' + this._newline + this.indent(group) + this._newline + '}';\n};\n\nGenerator.prototype.query = function (query) {\n return this.toQuery(query);\n};\n\nGenerator.prototype.filter = function (filter) {\n return 'FILTER(' + this.toExpression(filter.expression) + ')';\n};\n\nGenerator.prototype.bind = function (bind) {\n return 'BIND(' + this.toExpression(bind.expression) + ' AS ' + variableToString(bind.variable) + ')';\n};\n\nGenerator.prototype.optional = function (optional) {\n return 'OPTIONAL ' + this.group(optional);\n};\n\nGenerator.prototype.union = function (union) {\n return mapJoin(union.patterns, this._newline + 'UNION' + this._newline, function (p) { return this.group(p, true); }, this);\n};\n\nGenerator.prototype.minus = function (minus) {\n return 'MINUS ' + this.group(minus);\n};\n\nGenerator.prototype.values = function (valuesList) {\n // Gather unique keys\n var keys = Object.keys(valuesList.values.reduce(function (keyHash, values) {\n for (var key in values) keyHash[key] = true;\n return keyHash;\n }, {}));\n // Check whether simple syntax can be used\n var lparen, rparen;\n if (keys.length === 1) {\n lparen = rparen = '';\n } else {\n lparen = '(';\n rparen = ')';\n }\n // Create value rows\n return 'VALUES ' + lparen + keys.join(' ') + rparen + ' {' + this._newline +\n mapJoin(valuesList.values, this._newline, function (values) {\n return ' ' + lparen + mapJoin(keys, undefined, function (key) {\n return values[key] ? this.toEntity(values[key]) : 'UNDEF';\n }, this) + rparen;\n }, this) + this._newline + '}';\n};\n\nGenerator.prototype.service = function (service) {\n return 'SERVICE ' + (service.silent ? 'SILENT ' : '') + this.toEntity(service.name) + ' ' +\n this.group(service);\n};\n\n// Converts the parsed expression object into a SPARQL expression\nGenerator.prototype.toExpression = function (expr) {\n if (isTerm(expr)) {\n return this.toEntity(expr);\n }\n switch (expr.type.toLowerCase()) {\n case 'aggregate':\n return expr.aggregation.toUpperCase() +\n '(' + (expr.distinct ? 'DISTINCT ' : '') + this.toExpression(expr.expression) +\n (typeof expr.separator === 'string' ? '; SEPARATOR = ' + '\"' + expr.separator.replace(escape, escapeReplacer) + '\"' : '') + ')';\n case 'functioncall':\n return this.toEntity(expr.function) + '(' + mapJoin(expr.args, ', ', this.toExpression, this) + ')';\n case 'operation':\n var operator = expr.operator.toUpperCase(), args = expr.args || [];\n switch (expr.operator.toLowerCase()) {\n // Infix operators\n case '<':\n case '>':\n case '>=':\n case '<=':\n case '&&':\n case '||':\n case '=':\n case '!=':\n case '+':\n case '-':\n case '*':\n case '/':\n return (isTerm(args[0]) ? this.toEntity(args[0]) : '(' + this.toExpression(args[0]) + ')') +\n ' ' + operator + ' ' +\n (isTerm(args[1]) ? this.toEntity(args[1]) : '(' + this.toExpression(args[1]) + ')');\n // Unary operators\n case '!':\n return '!(' + this.toExpression(args[0]) + ')';\n case 'uplus':\n return '+(' + this.toExpression(args[0]) + ')';\n case 'uminus':\n return '-(' + this.toExpression(args[0]) + ')';\n // IN and NOT IN\n case 'notin':\n operator = 'NOT IN';\n case 'in':\n return this.toExpression(args[0]) + ' ' + operator +\n '(' + (isString(args[1]) ? args[1] : mapJoin(args[1], ', ', this.toExpression, this)) + ')';\n // EXISTS and NOT EXISTS\n case 'notexists':\n operator = 'NOT EXISTS';\n case 'exists':\n return operator + ' ' + this.group(args[0], true);\n // Other expressions\n default:\n return operator + '(' + mapJoin(args, ', ', this.toExpression, this) + ')';\n }\n default:\n throw new Error('Unknown expression type: ' + expr.type);\n }\n};\n\n// Converts the parsed entity (or property path) into a SPARQL entity\nGenerator.prototype.toEntity = function (value) {\n if (isTerm(value)) {\n switch (value.termType) {\n // variable, * selector, or blank node\n case 'Wildcard':\n return '*';\n case 'Variable':\n return variableToString(value);\n case 'BlankNode':\n return '_:' + value.value;\n // literal\n case 'Literal':\n var lexical = value.value || '', language = value.language || '', datatype = value.datatype;\n value = '\"' + lexical.replace(escape, escapeReplacer) + '\"';\n if (language){\n value += '@' + language;\n } else if (datatype) {\n // Abbreviate literals when possible\n if (!this._explicitDatatype) {\n switch (datatype.value) {\n case XSD_STRING:\n return value;\n case XSD_INTEGER:\n if (/^\\d+$/.test(lexical))\n // Add space to avoid confusion with decimals in broken parsers\n return lexical + ' ';\n }\n }\n value += '^^' + this.encodeIRI(datatype.value);\n }\n return value;\n case 'Quad':\n if (!this._sparqlStar)\n throw new Error('SPARQL* support is not enabled');\n\n if (value.graph && value.graph.termType !== \"DefaultGraph\") {\n return '<< GRAPH ' +\n this.toEntity(value.graph) +\n ' { ' +\n this.toEntity(value.subject) + ' ' +\n this.toEntity(value.predicate) + ' ' +\n this.toEntity(value.object) +\n ' } ' +\n ' >>'\n }\n else {\n return (\n '<< ' +\n this.toEntity(value.subject) + ' ' +\n this.toEntity(value.predicate) + ' ' +\n this.toEntity(value.object) +\n ' >>'\n );\n }\n // IRI\n default:\n return this.encodeIRI(value.value);\n }\n }\n // property path\n else {\n var items = value.items.map(this.toEntity, this), path = value.pathType;\n switch (path) {\n // prefix operator\n case '^':\n case '!':\n return path + items[0];\n // postfix operator\n case '*':\n case '+':\n case '?':\n return '(' + items[0] + path + ')';\n // infix operator\n default:\n return '(' + items.join(path) + ')';\n }\n }\n};\nvar escape = /[\"\\\\\\t\\n\\r\\b\\f]/g,\n escapeReplacer = function (c) { return escapeReplacements[c]; },\n escapeReplacements = { '\\\\': '\\\\\\\\', '\"': '\\\\\"', '\\t': '\\\\t',\n '\\n': '\\\\n', '\\r': '\\\\r', '\\b': '\\\\b', '\\f': '\\\\f' };\n\n// Represent the IRI, as a prefixed name when possible\nGenerator.prototype.encodeIRI = function (iri) {\n var prefixMatch = this._prefixRegex.exec(iri);\n if (prefixMatch) {\n var prefix = this._prefixByIri[prefixMatch[1]];\n this._usedPrefixes[prefix] = true;\n return prefix + ':' + prefixMatch[2];\n }\n return '<' + iri + '>';\n};\n\n// Converts the parsed update object into a SPARQL update clause\nGenerator.prototype.toUpdate = function (update) {\n switch (update.type || update.updateType) {\n case 'load':\n return 'LOAD' + (update.source ? ' ' + this.toEntity(update.source) : '') +\n (update.destination ? ' INTO GRAPH ' + this.toEntity(update.destination) : '');\n case 'insert':\n return 'INSERT DATA ' + this.group(update.insert, true);\n case 'delete':\n return 'DELETE DATA ' + this.group(update.delete, true);\n case 'deletewhere':\n return 'DELETE WHERE ' + this.group(update.delete, true);\n case 'insertdelete':\n return (update.graph ? 'WITH ' + this.toEntity(update.graph) + this._newline : '') +\n (update.delete.length ? 'DELETE ' + this.group(update.delete, true) + this._newline : '') +\n (update.insert.length ? 'INSERT ' + this.group(update.insert, true) + this._newline : '') +\n (update.using ? this.graphs('USING ', update.using.default) : '') +\n (update.using ? this.graphs('USING NAMED ', update.using.named) : '') +\n 'WHERE ' + this.group(update.where, true);\n case 'add':\n case 'copy':\n case 'move':\n return update.type.toUpperCase()+ ' ' + (update.silent ? 'SILENT ' : '') + (update.source.default ? 'DEFAULT' : this.toEntity(update.source.name)) +\n ' TO ' + this.toEntity(update.destination.name);\n case 'create':\n case 'clear':\n case 'drop':\n return update.type.toUpperCase() + (update.silent ? ' SILENT ' : ' ') + (\n update.graph.default ? 'DEFAULT' :\n update.graph.named ? 'NAMED' :\n update.graph.all ? 'ALL' :\n ('GRAPH ' + this.toEntity(update.graph.name))\n );\n default:\n throw new Error('Unknown update query type: ' + update.type);\n }\n};\n\n// Indents each line of the string\nGenerator.prototype.indent = function(text) { return text.replace(/^/gm, this._indent); }\n\nfunction variableToString(variable){\n return '?' + variable.value;\n}\n\n// Checks whether the object is a string\nfunction isString(object) { return typeof object === 'string'; }\n\n// Checks whether the object is a Term\nfunction isTerm(object) {\n return typeof object.termType === 'string';\n}\n\n// Checks whether term1 and term2 are equivalent without `.equals()` prototype method\nfunction equalTerms(term1, term2) {\n if (!term1 || !isTerm(term1)) { return false; }\n if (!term2 || !isTerm(term2)) { return false; }\n if (term1.termType !== term2.termType) { return false; }\n switch (term1.termType) {\n case 'Literal':\n return term1.value === term2.value\n && term1.language === term2.language\n && equalTerms(term1.datatype, term2.datatype);\n case 'Quad':\n return equalTerms(term1.subject, term2.subject)\n && equalTerms(term1.predicate, term2.predicate)\n && equalTerms(term1.object, term2.object)\n && equalTerms(term1.graph, term2.graph);\n default:\n return term1.value === term2.value;\n }\n}\n\n// Maps the array with the given function, and joins the results using the separator\nfunction mapJoin(array, sep, func, self) {\n return array.map(func, self).join(isString(sep) ? sep : ' ');\n}\n\n/**\n * @param options {\n * allPrefixes: boolean,\n * indentation: string,\n * newline: string\n * }\n */\nmodule.exports = function SparqlGenerator(options = {}) {\n return {\n stringify: function (query) {\n var currentOptions = Object.create(options);\n currentOptions.prefixes = query.prefixes;\n return new Generator(currentOptions).toQuery(query);\n },\n createGenerator: function() { return new Generator(options); }\n };\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar SparqlParser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,12,13,15,16,24,32,36,41,45,100,110,113,115,116,123,126,131,197,224,229,308,329,330,331,332,333],$V1=[2,247],$V2=[100,110,113,115,116,123,126,131,329,330,331,332,333],$V3=[2,409],$V4=[1,18],$V5=[1,27],$V6=[13,16,45,197,224,229,308],$V7=[28,29,53],$V8=[28,53],$V9=[1,42],$Va=[1,45],$Vb=[1,41],$Vc=[1,44],$Vd=[123,126],$Ve=[1,67],$Vf=[39,45,87],$Vg=[13,16,45,197,224,308],$Vh=[1,87],$Vi=[2,281],$Vj=[1,86],$Vk=[13,16,45,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vl=[6,28,29,53,63,70,73,81,83,85],$Vm=[6,13,16,28,29,53,63,70,73,81,83,85,87,308],$Vn=[6,13,16,28,29,45,53,63,70,73,81,82,83,85,87,89,197,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314],$Vo=[6,13,16,28,29,31,39,45,47,48,53,63,70,73,81,82,83,85,87,89,109,112,121,123,126,128,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,337,338,340,341,342,343,344,345,346],$Vp=[13,16,308],$Vq=[112,132,327,334],$Vr=[13,16,112,132,308],$Vs=[1,111],$Vt=[1,117],$Vu=[112,132,327,328,334],$Vv=[13,16,112,132,308,328],$Vw=[28,29,45,53,87],$Vx=[1,138],$Vy=[1,151],$Vz=[1,128],$VA=[1,127],$VB=[1,129],$VC=[1,140],$VD=[1,141],$VE=[1,142],$VF=[1,143],$VG=[1,144],$VH=[1,145],$VI=[1,147],$VJ=[1,148],$VK=[2,457],$VL=[1,158],$VM=[1,159],$VN=[1,160],$VO=[1,152],$VP=[1,153],$VQ=[1,156],$VR=[1,171],$VS=[1,172],$VT=[1,173],$VU=[1,174],$VV=[1,175],$VW=[1,176],$VX=[1,167],$VY=[1,168],$VZ=[1,169],$V_=[1,170],$V$=[1,157],$V01=[1,166],$V11=[1,161],$V21=[1,162],$V31=[1,163],$V41=[1,164],$V51=[1,165],$V61=[6,13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],$V71=[1,195],$V81=[6,31,73,81,83,85],$V91=[2,285],$Va1=[1,199],$Vb1=[1,201],$Vc1=[6,31,70,73,81,83,85],$Vd1=[2,283],$Ve1=[1,207],$Vf1=[1,218],$Vg1=[1,223],$Vh1=[1,219],$Vi1=[1,225],$Vj1=[1,226],$Vk1=[1,224],$Vl1=[6,63,70,73,81,83,85],$Vm1=[1,236],$Vn1=[2,334],$Vo1=[1,243],$Vp1=[1,241],$Vq1=[6,193],$Vr1=[2,349],$Vs1=[2,339],$Vt1=[28,128],$Vu1=[47,48,193,272],$Vv1=[47,48,193,242,272],$Vw1=[47,48,193,242,246,272],$Vx1=[47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,341,342,343,344,345,346],$Vy1=[39,47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,338,341,342,343,344,345,346],$Vz1=[1,271],$VA1=[1,270],$VB1=[6,13,16,29,31,39,45,47,48,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,338,341,342,343,344,345,346,347,348,349,350,351],$VC1=[1,281],$VD1=[1,280],$VE1=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],$VF1=[45,89],$VG1=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],$VH1=[13,16,31,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$VI1=[31,89],$VJ1=[48,87],$VK1=[6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338],$VL1=[6,13,16,39,45,48,82,87,89,231,263,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338,340],$VM1=[1,313],$VN1=[6,85],$VO1=[6,31,81,83,85],$VP1=[2,361],$VQ1=[2,353],$VR1=[1,343],$VS1=[31,112,335],$VT1=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$VU1=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335],$VV1=[6,109,193],$VW1=[31,112],$VX1=[13,16,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],$VY1=[1,390],$VZ1=[1,391],$V_1=[13,16,87,197,308,314],$V$1=[13,16,39,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],$V02=[1,417],$V12=[1,418],$V22=[13,16,48,197,229,308],$V32=[6,31,85],$V42=[6,13,16,31,45,73,81,83,85,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$V52=[6,13,16,29,31,45,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,231,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,346,347,348,349,350,351],$V62=[29,31,85,112,159,160,161,163,164],$V72=[1,443],$V82=[1,444],$V92=[1,449],$Va2=[31,112,193,232,318,335],$Vb2=[13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vc2=[13,16,31,45,48,82,87,89,112,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Vd2=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Ve2=[13,16,31,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$Vf2=[31,45],$Vg2=[1,507],$Vh2=[1,508],$Vi2=[6,13,16,29,31,39,45,47,48,63,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,336,338,341,342,343,344,345,346,347,348,349,350,351],$Vj2=[29,31,85,112,159,160,161,163,164,335],$Vk2=[6,13,16,31,45,70,73,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$Vl2=[13,16,31,45,48,82,87,89,112,193,197,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Vm2=[2,352],$Vn2=[13,16,197,308,314],$Vo2=[1,565],$Vp2=[6,13,16,31,45,76,78,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$Vq2=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vr2=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],$Vs2=[13,16,87,308],$Vt2=[2,364],$Vu2=[29,31,85,112,159,160,161,163,164,193,232,318,335],$Vv2=[31,112,193,232,272,318,335],$Vw2=[2,359],$Vx2=[13,16,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$Vy2=[29,31,85,112,159,160,161,163,164,193,232,272,318,335],$Vz2=[13,16,31,45,82,87,89,112,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$VA2=[2,347];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"QueryOrUpdate\":3,\"Prologue\":4,\"QueryOrUpdate_group0\":5,\"EOF\":6,\"Query\":7,\"Qry\":8,\"Query_option0\":9,\"Prologue_repetition0\":10,\"BaseDecl\":11,\"BASE\":12,\"IRIREF\":13,\"PrefixDecl\":14,\"PREFIX\":15,\"PNAME_NS\":16,\"SelectClauseWildcard\":17,\"Qry_repetition0\":18,\"WhereClause\":19,\"SolutionModifierNoGroup\":20,\"SelectClauseVars\":21,\"Qry_repetition1\":22,\"SolutionModifier\":23,\"CONSTRUCT\":24,\"ConstructTemplate\":25,\"Qry_repetition2\":26,\"Qry_repetition3\":27,\"WHERE\":28,\"{\":29,\"Qry_option0\":30,\"}\":31,\"DESCRIBE\":32,\"Qry_group0\":33,\"Qry_repetition4\":34,\"Qry_option1\":35,\"ASK\":36,\"Qry_repetition5\":37,\"SelectClauseBase\":38,\"*\":39,\"SelectClauseVars_repetition_plus0\":40,\"SELECT\":41,\"SelectClauseBase_option0\":42,\"SelectClauseItem\":43,\"Var\":44,\"(\":45,\"Expression\":46,\"AS\":47,\")\":48,\"SubSelect\":49,\"SubSelect_option0\":50,\"SubSelect_option1\":51,\"DatasetClause\":52,\"FROM\":53,\"DatasetClause_option0\":54,\"iri\":55,\"WhereClause_option0\":56,\"GroupGraphPattern\":57,\"SolutionModifier_option0\":58,\"SolutionModifierNoGroup_option0\":59,\"SolutionModifierNoGroup_option1\":60,\"SolutionModifierNoGroup_option2\":61,\"GroupClause\":62,\"GROUP\":63,\"BY\":64,\"GroupClause_repetition_plus0\":65,\"GroupCondition\":66,\"BuiltInCall\":67,\"FunctionCall\":68,\"HavingClause\":69,\"HAVING\":70,\"HavingClause_repetition_plus0\":71,\"OrderClause\":72,\"ORDER\":73,\"OrderClause_repetition_plus0\":74,\"OrderCondition\":75,\"ASC\":76,\"BrackettedExpression\":77,\"DESC\":78,\"Constraint\":79,\"LimitOffsetClauses\":80,\"LIMIT\":81,\"INTEGER\":82,\"OFFSET\":83,\"ValuesClause\":84,\"VALUES\":85,\"InlineData\":86,\"VAR\":87,\"InlineData_repetition0\":88,\"NIL\":89,\"InlineData_repetition1\":90,\"InlineData_repetition_plus2\":91,\"InlineData_repetition3\":92,\"DataBlock\":93,\"DataBlockValueList\":94,\"DataBlockValueList_repetition_plus0\":95,\"Update\":96,\"Update_repetition0\":97,\"Update1\":98,\"Update_option0\":99,\"LOAD\":100,\"Update1_option0\":101,\"Update1_option1\":102,\"Update1_group0\":103,\"Update1_option2\":104,\"GraphRefAll\":105,\"Update1_group1\":106,\"Update1_option3\":107,\"GraphOrDefault\":108,\"TO\":109,\"CREATE\":110,\"Update1_option4\":111,\"GRAPH\":112,\"INSERTDATA\":113,\"QuadPattern\":114,\"DELETEDATA\":115,\"DELETEWHERE\":116,\"Update1_option5\":117,\"InsertDeleteClause\":118,\"Update1_repetition0\":119,\"IntoGraphClause\":120,\"INTO\":121,\"GraphRef\":122,\"DELETE\":123,\"InsertDeleteClause_option0\":124,\"InsertClause\":125,\"INSERT\":126,\"UsingClause\":127,\"USING\":128,\"UsingClause_option0\":129,\"WithClause\":130,\"WITH\":131,\"DEFAULT\":132,\"GraphOrDefault_option0\":133,\"GraphRefAll_group0\":134,\"Quads\":135,\"Quads_option0\":136,\"Quads_repetition0\":137,\"QuadsNotTriples\":138,\"VarOrIri\":139,\"QuadsNotTriples_option0\":140,\"QuadsNotTriples_option1\":141,\"QuadsNotTriples_option2\":142,\"TriplesTemplate\":143,\"TriplesTemplate_repetition0\":144,\"TriplesSameSubject\":145,\"TriplesTemplate_option0\":146,\"GroupGraphPatternSub\":147,\"GroupGraphPatternSub_option0\":148,\"GroupGraphPatternSub_repetition0\":149,\"GroupGraphPatternSubTail\":150,\"GraphPatternNotTriples\":151,\"GroupGraphPatternSubTail_option0\":152,\"GroupGraphPatternSubTail_option1\":153,\"TriplesBlock\":154,\"TriplesBlock_repetition0\":155,\"TriplesSameSubjectPath\":156,\"TriplesBlock_option0\":157,\"GroupOrUnionGraphPattern\":158,\"OPTIONAL\":159,\"MINUS\":160,\"SERVICE\":161,\"GraphPatternNotTriples_option0\":162,\"FILTER\":163,\"BIND\":164,\"InlineDataOneVar\":165,\"InlineDataFull\":166,\"InlineDataOneVar_repetition0\":167,\"InlineDataFull_repetition0\":168,\"InlineDataFull_repetition_plus1\":169,\"InlineDataFull_repetition2\":170,\"DataBlockValue\":171,\"Literal\":172,\"QuotedTriple\":173,\"UNDEF\":174,\"GroupOrUnionGraphPattern_repetition0\":175,\"ArgList\":176,\"ArgList_option0\":177,\"ArgList_repetition0\":178,\"ExpressionList\":179,\"ExpressionList_repetition0\":180,\"ConstructTemplate_option0\":181,\"ConstructTriples\":182,\"ConstructTriples_repetition0\":183,\"ConstructTriples_option0\":184,\"VarOrTermOrQuotedTP\":185,\"PropertyListNotEmpty\":186,\"TriplesNode\":187,\"PropertyList\":188,\"PropertyList_option0\":189,\"VerbObjectList\":190,\"PropertyListNotEmpty_repetition0\":191,\"SemiOptionalVerbObjectList\":192,\";\":193,\"SemiOptionalVerbObjectList_option0\":194,\"Verb\":195,\"ObjectList\":196,\"a\":197,\"ObjectList_repetition0\":198,\"Object\":199,\"GraphNode\":200,\"Object_option0\":201,\"PropertyListPathNotEmpty\":202,\"TriplesNodePath\":203,\"TriplesSameSubjectPath_option0\":204,\"O\":205,\"PropertyListPathNotEmpty_repetition0\":206,\"PropertyListPathNotEmptyTail\":207,\"O_group0\":208,\"ObjectListPath\":209,\"ObjectListPath_repetition0\":210,\"ObjectPath\":211,\"GraphNodePath\":212,\"ObjectPath_option0\":213,\"Path\":214,\"Path_repetition0\":215,\"PathSequence\":216,\"PathSequence_repetition0\":217,\"PathEltOrInverse\":218,\"PathElt\":219,\"PathPrimary\":220,\"PathElt_option0\":221,\"PathEltOrInverse_option0\":222,\"IriOrA\":223,\"!\":224,\"PathNegatedPropertySet\":225,\"PathOneInPropertySet\":226,\"PathNegatedPropertySet_repetition0\":227,\"PathNegatedPropertySet_option0\":228,\"^\":229,\"TriplesNode_repetition_plus0\":230,\"[\":231,\"]\":232,\"TriplesNodePath_repetition_plus0\":233,\"VarOrTermOrQuotedTPExpr\":234,\"VarOrTerm\":235,\"GraphTerm\":236,\"BlankNode\":237,\"ConditionalOrExpression\":238,\"ConditionalAndExpression\":239,\"ConditionalOrExpression_repetition0\":240,\"ConditionalOrExpressionTail\":241,\"||\":242,\"RelationalExpression\":243,\"ConditionalAndExpression_repetition0\":244,\"ConditionalAndExpressionTail\":245,\"&&\":246,\"NumericExpression\":247,\"RelationalExpression_group0\":248,\"RelationalExpression_option0\":249,\"IN\":250,\"MultiplicativeExpression\":251,\"NumericExpression_repetition0\":252,\"AdditiveExpressionTail\":253,\"AdditiveExpressionTail_group0\":254,\"NumericLiteralPositive\":255,\"AdditiveExpressionTail_repetition0\":256,\"NumericLiteralNegative\":257,\"AdditiveExpressionTail_repetition1\":258,\"UnaryExpression\":259,\"MultiplicativeExpression_repetition0\":260,\"MultiplicativeExpressionTail\":261,\"MultiplicativeExpressionTail_group0\":262,\"+\":263,\"PrimaryExpression\":264,\"-\":265,\"ExprQuotedTP\":266,\"Aggregate\":267,\"FUNC_ARITY0\":268,\"FUNC_ARITY1\":269,\"FUNC_ARITY1_SPARQL_STAR\":270,\"FUNC_ARITY2\":271,\",\":272,\"FUNC_ARITY3\":273,\"FUNC_ARITY3_SPARQL_STAR\":274,\"BuiltInCall_group0\":275,\"BOUND\":276,\"BNODE\":277,\"BuiltInCall_option0\":278,\"EXISTS\":279,\"COUNT\":280,\"Aggregate_option0\":281,\"Aggregate_group0\":282,\"FUNC_AGGREGATE\":283,\"Aggregate_option1\":284,\"GROUP_CONCAT\":285,\"Aggregate_option2\":286,\"Aggregate_option3\":287,\"GroupConcatSeparator\":288,\"SEPARATOR\":289,\"=\":290,\"String\":291,\"LANGTAG\":292,\"^^\":293,\"DECIMAL\":294,\"DOUBLE\":295,\"BOOLEAN\":296,\"INTEGER_POSITIVE\":297,\"DECIMAL_POSITIVE\":298,\"DOUBLE_POSITIVE\":299,\"INTEGER_NEGATIVE\":300,\"DECIMAL_NEGATIVE\":301,\"DOUBLE_NEGATIVE\":302,\"STRING_LITERAL1\":303,\"STRING_LITERAL2\":304,\"STRING_LITERAL_LONG1\":305,\"STRING_LITERAL_LONG2\":306,\"PrefixedName\":307,\"PNAME_LN\":308,\"BLANK_NODE_LABEL\":309,\"ANON\":310,\"QuotedTP\":311,\"<<\":312,\"qtSubjectOrObject\":313,\">>\":314,\"DataValueTerm\":315,\"AnnotationPattern\":316,\"{|\":317,\"|}\":318,\"AnnotationPatternPath\":319,\"ExprVarOrTerm\":320,\"QueryOrUpdate_group0_option0\":321,\"Prologue_repetition0_group0\":322,\"Qry_group0_repetition_plus0\":323,\"SelectClauseBase_option0_group0\":324,\"DISTINCT\":325,\"REDUCED\":326,\"NAMED\":327,\"SILENT\":328,\"CLEAR\":329,\"DROP\":330,\"ADD\":331,\"MOVE\":332,\"COPY\":333,\"ALL\":334,\".\":335,\"UNION\":336,\"|\":337,\"/\":338,\"PathElt_option0_group0\":339,\"?\":340,\"!=\":341,\"<\":342,\">\":343,\"<=\":344,\">=\":345,\"NOT\":346,\"CONCAT\":347,\"COALESCE\":348,\"SUBSTR\":349,\"REGEX\":350,\"REPLACE\":351,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"EOF\",12:\"BASE\",13:\"IRIREF\",15:\"PREFIX\",16:\"PNAME_NS\",24:\"CONSTRUCT\",28:\"WHERE\",29:\"{\",31:\"}\",32:\"DESCRIBE\",36:\"ASK\",39:\"*\",41:\"SELECT\",45:\"(\",47:\"AS\",48:\")\",53:\"FROM\",63:\"GROUP\",64:\"BY\",70:\"HAVING\",73:\"ORDER\",76:\"ASC\",78:\"DESC\",81:\"LIMIT\",82:\"INTEGER\",83:\"OFFSET\",85:\"VALUES\",87:\"VAR\",89:\"NIL\",100:\"LOAD\",109:\"TO\",110:\"CREATE\",112:\"GRAPH\",113:\"INSERTDATA\",115:\"DELETEDATA\",116:\"DELETEWHERE\",121:\"INTO\",123:\"DELETE\",126:\"INSERT\",128:\"USING\",131:\"WITH\",132:\"DEFAULT\",159:\"OPTIONAL\",160:\"MINUS\",161:\"SERVICE\",163:\"FILTER\",164:\"BIND\",174:\"UNDEF\",193:\";\",197:\"a\",224:\"!\",229:\"^\",231:\"[\",232:\"]\",242:\"||\",246:\"&&\",250:\"IN\",263:\"+\",265:\"-\",268:\"FUNC_ARITY0\",269:\"FUNC_ARITY1\",270:\"FUNC_ARITY1_SPARQL_STAR\",271:\"FUNC_ARITY2\",272:\",\",273:\"FUNC_ARITY3\",274:\"FUNC_ARITY3_SPARQL_STAR\",276:\"BOUND\",277:\"BNODE\",279:\"EXISTS\",280:\"COUNT\",283:\"FUNC_AGGREGATE\",285:\"GROUP_CONCAT\",289:\"SEPARATOR\",290:\"=\",292:\"LANGTAG\",293:\"^^\",294:\"DECIMAL\",295:\"DOUBLE\",296:\"BOOLEAN\",297:\"INTEGER_POSITIVE\",298:\"DECIMAL_POSITIVE\",299:\"DOUBLE_POSITIVE\",300:\"INTEGER_NEGATIVE\",301:\"DECIMAL_NEGATIVE\",302:\"DOUBLE_NEGATIVE\",303:\"STRING_LITERAL1\",304:\"STRING_LITERAL2\",305:\"STRING_LITERAL_LONG1\",306:\"STRING_LITERAL_LONG2\",308:\"PNAME_LN\",309:\"BLANK_NODE_LABEL\",310:\"ANON\",312:\"<<\",314:\">>\",317:\"{|\",318:\"|}\",325:\"DISTINCT\",326:\"REDUCED\",327:\"NAMED\",328:\"SILENT\",329:\"CLEAR\",330:\"DROP\",331:\"ADD\",332:\"MOVE\",333:\"COPY\",334:\"ALL\",335:\".\",336:\"UNION\",337:\"|\",338:\"/\",340:\"?\",341:\"!=\",342:\"<\",343:\">\",344:\"<=\",345:\">=\",346:\"NOT\",347:\"CONCAT\",348:\"COALESCE\",349:\"SUBSTR\",350:\"REGEX\",351:\"REPLACE\"},\nproductions_: [0,[3,3],[7,2],[4,1],[11,2],[14,3],[8,4],[8,4],[8,5],[8,7],[8,5],[8,4],[17,2],[21,2],[38,2],[43,1],[43,5],[49,4],[49,4],[52,3],[19,2],[23,2],[20,3],[62,3],[66,1],[66,1],[66,3],[66,5],[66,1],[69,2],[72,3],[75,2],[75,2],[75,1],[75,1],[80,2],[80,2],[80,4],[80,4],[84,2],[86,4],[86,4],[86,6],[86,2],[94,3],[96,3],[98,4],[98,3],[98,5],[98,4],[98,2],[98,2],[98,2],[98,5],[120,2],[118,3],[118,1],[125,2],[127,3],[130,2],[108,1],[108,2],[122,2],[105,1],[105,1],[114,3],[135,2],[138,7],[143,3],[57,3],[57,3],[147,2],[150,3],[154,3],[151,1],[151,2],[151,2],[151,3],[151,4],[151,2],[151,6],[151,1],[93,1],[93,1],[165,4],[166,4],[166,6],[171,1],[171,1],[171,1],[171,1],[158,2],[79,1],[79,1],[79,1],[68,2],[176,1],[176,5],[179,1],[179,4],[25,3],[182,3],[145,2],[145,2],[188,1],[186,2],[192,2],[190,2],[195,1],[195,1],[196,2],[199,2],[156,2],[156,2],[202,2],[207,1],[207,2],[205,2],[209,2],[211,2],[214,2],[216,2],[219,2],[218,2],[220,1],[220,2],[220,3],[225,1],[225,1],[225,4],[226,1],[226,2],[187,3],[187,3],[203,3],[203,3],[200,1],[200,1],[212,1],[212,1],[234,1],[235,1],[235,1],[139,1],[139,1],[44,1],[236,1],[236,1],[236,1],[236,1],[46,1],[238,2],[241,2],[239,2],[245,2],[243,1],[243,3],[243,4],[247,2],[253,2],[253,2],[253,2],[251,2],[261,2],[259,2],[259,2],[259,2],[259,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[77,3],[67,1],[67,2],[67,4],[67,4],[67,6],[67,8],[67,8],[67,2],[67,4],[67,2],[67,4],[67,3],[267,5],[267,5],[267,6],[288,4],[172,1],[172,2],[172,3],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[255,1],[255,1],[255,1],[257,1],[257,1],[257,1],[291,1],[291,1],[291,1],[291,1],[55,1],[55,1],[307,1],[307,1],[237,1],[237,1],[311,5],[173,5],[313,1],[313,1],[313,1],[313,1],[313,1],[315,1],[315,1],[315,1],[185,1],[185,1],[185,1],[316,3],[319,3],[266,5],[320,1],[320,1],[320,1],[223,1],[223,1],[321,0],[321,1],[5,1],[5,1],[5,1],[9,0],[9,1],[322,1],[322,1],[10,0],[10,2],[18,0],[18,2],[22,0],[22,2],[26,0],[26,2],[27,0],[27,2],[30,0],[30,1],[323,1],[323,2],[33,1],[33,1],[34,0],[34,2],[35,0],[35,1],[37,0],[37,2],[40,1],[40,2],[324,1],[324,1],[42,0],[42,1],[50,0],[50,1],[51,0],[51,1],[54,0],[54,1],[56,0],[56,1],[58,0],[58,1],[59,0],[59,1],[60,0],[60,1],[61,0],[61,1],[65,1],[65,2],[71,1],[71,2],[74,1],[74,2],[88,0],[88,2],[90,0],[90,2],[91,1],[91,2],[92,0],[92,2],[95,1],[95,2],[97,0],[97,4],[99,0],[99,2],[101,0],[101,1],[102,0],[102,1],[103,1],[103,1],[104,0],[104,1],[106,1],[106,1],[106,1],[107,0],[107,1],[111,0],[111,1],[117,0],[117,1],[119,0],[119,2],[124,0],[124,1],[129,0],[129,1],[133,0],[133,1],[134,1],[134,1],[134,1],[136,0],[136,1],[137,0],[137,2],[140,0],[140,1],[141,0],[141,1],[142,0],[142,1],[144,0],[144,3],[146,0],[146,1],[148,0],[148,1],[149,0],[149,2],[152,0],[152,1],[153,0],[153,1],[155,0],[155,3],[157,0],[157,1],[162,0],[162,1],[167,0],[167,2],[168,0],[168,2],[169,1],[169,2],[170,0],[170,2],[175,0],[175,3],[177,0],[177,1],[178,0],[178,3],[180,0],[180,3],[181,0],[181,1],[183,0],[183,3],[184,0],[184,1],[189,0],[189,1],[191,0],[191,2],[194,0],[194,1],[198,0],[198,3],[201,0],[201,1],[204,0],[204,1],[206,0],[206,2],[208,1],[208,1],[210,0],[210,3],[213,0],[213,1],[215,0],[215,3],[217,0],[217,3],[339,1],[339,1],[339,1],[221,0],[221,1],[222,0],[222,1],[227,0],[227,3],[228,0],[228,1],[230,1],[230,2],[233,1],[233,2],[240,0],[240,2],[244,0],[244,2],[248,1],[248,1],[248,1],[248,1],[248,1],[248,1],[249,0],[249,1],[252,0],[252,2],[254,1],[254,1],[256,0],[256,2],[258,0],[258,2],[260,0],[260,2],[262,1],[262,1],[275,1],[275,1],[275,1],[275,1],[275,1],[278,0],[278,1],[281,0],[281,1],[282,1],[282,1],[284,0],[284,1],[286,0],[286,1],[287,0],[287,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n\n // Set parser options\n $$[$0-1] = $$[$0-1] || {};\n if (Parser.base)\n $$[$0-1].base = Parser.base;\n Parser.base = '';\n $$[$0-1].prefixes = Parser.prefixes;\n Parser.prefixes = null;\n\n if (Parser.pathOnly) {\n if ($$[$0-1].type === 'path' || 'termType' in $$[$0-1]) {\n return $$[$0-1]\n }\n throw new Error('Received full SPARQL query in path only mode');\n } else if ($$[$0-1].type === 'path' || 'termType' in $$[$0-1]) {\n throw new Error('Received only path in full SPARQL mode');\n }\n\n // Ensure that blank nodes are not used across INSERT DATA clauses\n if ($$[$0-1].type === 'update') {\n const insertBnodesAll = {};\n for (const update of $$[$0-1].updates) {\n if (update.updateType === 'insert') {\n // Collect bnodes for current insert clause\n const insertBnodes = {};\n for (const operation of update.insert) {\n if (operation.type === 'bgp' || operation.type === 'graph') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'BlankNode')\n insertBnodes[triple.subject.value] = true;\n if (triple.predicate.termType === 'BlankNode')\n insertBnodes[triple.predicate.value] = true;\n if (triple.object.termType === 'BlankNode')\n insertBnodes[triple.object.value] = true;\n }\n }\n }\n\n // Check if the inserting bnodes don't clash with bnodes from a previous insert clause\n for (const bnode of Object.keys(insertBnodes)) {\n if (insertBnodesAll[bnode]) {\n throw new Error('Detected reuse blank node across different INSERT DATA clauses');\n }\n insertBnodesAll[bnode] = true;\n }\n }\n }\n }\n return $$[$0-1];\n \nbreak;\ncase 2:\nthis.$ = { ...$$[$0-1], ...$$[$0], type: 'query' };\nbreak;\ncase 4:\n\n Parser.base = resolveIRI($$[$0])\n \nbreak;\ncase 5:\n\n if (!Parser.prefixes) Parser.prefixes = {};\n $$[$0-1] = $$[$0-1].substr(0, $$[$0-1].length - 1);\n $$[$0] = resolveIRI($$[$0]);\n Parser.prefixes[$$[$0-1]] = $$[$0];\n \nbreak;\ncase 6:\nthis.$ = { ...$$[$0-3], ...groupDatasets($$[$0-2]), ...$$[$0-1], ...$$[$0] };\nbreak;\ncase 7:\n\n // Check for projection of ungrouped variable\n if (!Parser.skipValidation) {\n const counts = flatten($$[$0-3].variables.map(vars => getAggregatesOfExpression(vars.expression)))\n .some(agg => agg.aggregation === \"count\" && !(agg.expression instanceof Wildcard));\n if (counts || $$[$0].group) {\n for (const selectVar of $$[$0-3].variables) {\n if (selectVar.termType === \"Variable\") {\n if (!$$[$0].group || !$$[$0].group.map(groupVar => getExpressionId(groupVar)).includes(getExpressionId(selectVar))) {\n throw Error(\"Projection of ungrouped variable (?\" + getExpressionId(selectVar) + \")\");\n }\n } else if (getAggregatesOfExpression(selectVar.expression).length === 0) {\n const usedVars = getVariablesFromExpression(selectVar.expression);\n for (const usedVar of usedVars) {\n if (!$$[$0].group || !$$[$0].group.map || !$$[$0].group.map(groupVar => getExpressionId(groupVar)).includes(getExpressionId(usedVar))) {\n throw Error(\"Use of ungrouped variable in projection of operation (?\" + getExpressionId(usedVar) + \")\");\n }\n }\n }\n }\n }\n }\n // Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = $$[$0-1].where.filter(w => w.type === \"query\");\n if (subqueries.length > 0) {\n const selectedVarIds = $$[$0-3].variables.filter(v => v.variable && v.variable.value).map(v => v.variable.value);\n const subqueryIds = flatten(subqueries.map(sub => sub.variables)).map(v => v.value || v.variable.value);\n for (const selectedVarId of selectedVarIds) {\n if (subqueryIds.indexOf(selectedVarId) >= 0) {\n throw Error(\"Target id of 'AS' (?\" + selectedVarId + \") already used in subquery\");\n }\n }\n }\n this.$ = extend($$[$0-3], groupDatasets($$[$0-2]), $$[$0-1], $$[$0])\n \nbreak;\ncase 8:\nthis.$ = extend({ queryType: 'CONSTRUCT', template: $$[$0-3] }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 9:\nthis.$ = extend({ queryType: 'CONSTRUCT', template: $$[$0-2] = ($$[$0-2] ? $$[$0-2].triples : []) }, groupDatasets($$[$0-5]), { where: [ { type: 'bgp', triples: appendAllTo([], $$[$0-2]) } ] }, $$[$0]);\nbreak;\ncase 10:\nthis.$ = extend({ queryType: 'DESCRIBE', variables: $$[$0-3] === '*' ? [new Wildcard()] : $$[$0-3] }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 11:\nthis.$ = extend({ queryType: 'ASK' }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 12:\nthis.$ = extend($$[$0-1], {variables: [new Wildcard()]});\nbreak;\ncase 13:\n\n // Check if id of each selected column is different\n const selectedVarIds = $$[$0].map(v => v.value || v.variable.value);\n const duplicates = getDuplicatesInArray(selectedVarIds);\n if (duplicates.length > 0) {\n throw Error(\"Two or more of the resulting columns have the same name (?\" + duplicates[0] + \")\");\n }\n\n this.$ = extend($$[$0-1], { variables: $$[$0] })\n \nbreak;\ncase 14:\nthis.$ = extend({ queryType: 'SELECT'}, $$[$0] && ($$[$0-1] = lowercase($$[$0]), $$[$0] = {}, $$[$0][$$[$0-1]] = true, $$[$0]));\nbreak;\ncase 16: case 27:\nthis.$ = expression($$[$0-3], { variable: $$[$0-1] });\nbreak;\ncase 17: case 18:\nthis.$ = extend($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], { type: 'query' });\nbreak;\ncase 19: case 58:\nthis.$ = { iri: $$[$0], named: !!$$[$0-1] };\nbreak;\ncase 20:\nthis.$ = { where: $$[$0].patterns };\nbreak;\ncase 21:\nthis.$ = extend($$[$0-1], $$[$0]);\nbreak;\ncase 22:\nthis.$ = extend($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 23:\nthis.$ = { group: $$[$0] };\nbreak;\ncase 24: case 25: case 28: case 31: case 33: case 34:\nthis.$ = expression($$[$0]);\nbreak;\ncase 26:\nthis.$ = expression($$[$0-1]);\nbreak;\ncase 29:\nthis.$ = { having: $$[$0] };\nbreak;\ncase 30:\nthis.$ = { order: $$[$0] };\nbreak;\ncase 32:\nthis.$ = expression($$[$0], { descending: true });\nbreak;\ncase 35:\nthis.$ = { limit: toInt($$[$0]) };\nbreak;\ncase 36:\nthis.$ = { offset: toInt($$[$0]) };\nbreak;\ncase 37:\nthis.$ = { limit: toInt($$[$0-2]), offset: toInt($$[$0]) };\nbreak;\ncase 38:\nthis.$ = { limit: toInt($$[$0]), offset: toInt($$[$0-2]) };\nbreak;\ncase 39: case 43:\nthis.$ = { type: 'values', values: $$[$0] };\nbreak;\ncase 40: case 84:\nthis.$ = $$[$0-1].map(v => ({ [$$[$0-3]]: v }));\nbreak;\ncase 41: case 85:\nthis.$ = $$[$0-1].map(() => ({}));\nbreak;\ncase 42: case 86:\n\n var length = $$[$0-4].length;\n $$[$0-4] = $$[$0-4].map(toVar);\n this.$ = $$[$0-1].map(function (values) {\n if (values.length !== length)\n throw Error('Inconsistent VALUES length');\n var valuesObject = {};\n for(var i = 0; i el.type === \"bind\")) {\n const index = $$[$0-1].indexOf(binding);\n const boundVars = new Set();\n //Collect all bounded variables before the binding\n for (const el of $$[$0-1].slice(0, index)) {\n if (el.type === \"group\" || el.type === \"bgp\") {\n getBoundVarsFromGroupGraphPattern(el).forEach(boundVar => boundVars.add(boundVar));\n }\n }\n // If binding with a non-free variable, throw error\n if (boundVars.has(binding.variable.value)) {\n throw Error(\"Variable used to bind is already bound (?\" + binding.variable.value + \")\");\n }\n }\n this.$ = { type: 'group', patterns: $$[$0-1] }\n \nbreak;\ncase 71:\nthis.$ = $$[$0-1] ? unionAll([$$[$0-1]], $$[$0]) : unionAll($$[$0]);\nbreak;\ncase 72:\nthis.$ = $$[$0] ? [$$[$0-2], $$[$0]] : $$[$0-2];\nbreak;\ncase 75:\nthis.$ = extend($$[$0], { type: 'optional' });\nbreak;\ncase 76:\nthis.$ = extend($$[$0], { type: 'minus' });\nbreak;\ncase 77:\nthis.$ = extend($$[$0], { type: 'graph', name: $$[$0-1] });\nbreak;\ncase 78:\nthis.$ = extend($$[$0], { type: 'service', name: $$[$0-1], silent: !!$$[$0-2] });\nbreak;\ncase 79:\nthis.$ = { type: 'filter', expression: $$[$0] };\nbreak;\ncase 80:\nthis.$ = { type: 'bind', variable: $$[$0-1], expression: $$[$0-3] };\nbreak;\ncase 89:\nthis.$ = ensureSparqlStar($$[$0]);\nbreak;\ncase 90:\nthis.$ = undefined;\nbreak;\ncase 91:\nthis.$ = $$[$0-1].length ? { type: 'union', patterns: unionAll($$[$0-1].map(degroupSingle), [degroupSingle($$[$0])]) } : $$[$0];\nbreak;\ncase 95:\nthis.$ = { ...$$[$0], function: $$[$0-1] };\nbreak;\ncase 96:\nthis.$ = { type: 'functionCall', args: [] };\nbreak;\ncase 97:\nthis.$ = { type: 'functionCall', args: appendTo($$[$0-2], $$[$0-1]), distinct: !!$$[$0-3] };\nbreak;\ncase 98: case 115: case 128: case 247: case 249: case 251: case 253: case 255: case 263: case 267: case 297: case 299: case 303: case 307: case 328: case 341: case 349: case 355: case 361: case 367: case 369: case 373: case 375: case 379: case 381: case 385: case 391: case 395: case 401: case 405: case 409: case 411: case 420: case 428: case 430: case 440: case 444: case 446: case 448:\nthis.$ = [];\nbreak;\ncase 99:\nthis.$ = appendTo($$[$0-2], $$[$0-1]);\nbreak;\ncase 101:\nthis.$ = unionAll($$[$0-2], [$$[$0-1]]);\nbreak;\ncase 102: case 112:\nthis.$ = applyAnnotations($$[$0].map(t => extend(triple($$[$0-1]), t)));\nbreak;\ncase 103:\nthis.$ = applyAnnotations(appendAllTo($$[$0].map(t => extend(triple($$[$0-1].entity), t)), $$[$0-1].triples)) /* the subject is a blank node, possibly with more triples */;\nbreak;\ncase 105:\nthis.$ = unionAll([$$[$0-1]], $$[$0]);\nbreak;\ncase 106:\nthis.$ = unionAll($$[$0]);\nbreak;\ncase 107:\nthis.$ = objectListToTriples($$[$0-1], $$[$0]);\nbreak;\ncase 109: case 237:\nthis.$ = Parser.factory.namedNode(RDF_TYPE);\nbreak;\ncase 110: case 118:\nthis.$ = appendTo($$[$0-1], $$[$0]);\nbreak;\ncase 111:\nthis.$ = $$[$0] ? { annotation: $$[$0], object: $$[$0-1] } : $$[$0-1];\nbreak;\ncase 113:\nthis.$ = !$$[$0] ? $$[$0-1].triples : applyAnnotations(appendAllTo($$[$0].map(t => extend(triple($$[$0-1].entity), t)), $$[$0-1].triples)) /* the subject is a blank node, possibly with more triples */;\nbreak;\ncase 114:\nthis.$ = objectListToTriples(...$$[$0-1], $$[$0]);\nbreak;\ncase 116:\nthis.$ = objectListToTriples(...$$[$0]);\nbreak;\ncase 117: case 159: case 163:\nthis.$ = [$$[$0-1], $$[$0]];\nbreak;\ncase 119:\nthis.$ = $$[$0] ? { object: $$[$0-1], annotation: $$[$0] } : $$[$0-1];;\nbreak;\ncase 120:\nthis.$ = $$[$0-1].length ? path('|',appendTo($$[$0-1], $$[$0])) : $$[$0];\nbreak;\ncase 121:\nthis.$ = $$[$0-1].length ? path('/', appendTo($$[$0-1], $$[$0])) : $$[$0];\nbreak;\ncase 122:\nthis.$ = $$[$0] ? path($$[$0], [$$[$0-1]]) : $$[$0-1];\nbreak;\ncase 123:\nthis.$ = $$[$0-1] ? path($$[$0-1], [$$[$0]]) : $$[$0];;\nbreak;\ncase 125: case 131:\nthis.$ = path($$[$0-1], [$$[$0]]);\nbreak;\ncase 129:\nthis.$ = path('|', appendTo($$[$0-2], $$[$0-1]));\nbreak;\ncase 132: case 134:\nthis.$ = createList($$[$0-1]);\nbreak;\ncase 133: case 135:\nthis.$ = createAnonymousObject($$[$0-1]);\nbreak;\ncase 140:\nthis.$ = { entity: $$[$0], triples: [] };\nbreak;\ncase 145:\nthis.$ = toVar($$[$0]);\nbreak;\ncase 149:\nthis.$ = Parser.factory.namedNode(RDF_NIL);\nbreak;\ncase 151: case 153: case 158: case 162:\nthis.$ = createOperationTree($$[$0-1], $$[$0]);\nbreak;\ncase 152:\nthis.$ = ['||', $$[$0]];\nbreak;\ncase 154:\nthis.$ = ['&&', $$[$0]];\nbreak;\ncase 156:\nthis.$ = operation($$[$0-1], [$$[$0-2], $$[$0]]);\nbreak;\ncase 157:\nthis.$ = operation($$[$0-2] ? 'notin' : 'in', [$$[$0-3], $$[$0]]);\nbreak;\ncase 160:\nthis.$ = ['+', createOperationTree($$[$0-1], $$[$0])];\nbreak;\ncase 161:\n\n var negatedLiteral = createTypedLiteral($$[$0-1].value.replace('-', ''), $$[$0-1].datatype);\n this.$ = ['-', createOperationTree(negatedLiteral, $$[$0])];\n \nbreak;\ncase 164:\nthis.$ = operation('UPLUS', [$$[$0]]);\nbreak;\ncase 165:\nthis.$ = operation($$[$0-1], [$$[$0]]);\nbreak;\ncase 166:\nthis.$ = operation('UMINUS', [$$[$0]]);\nbreak;\ncase 177:\nthis.$ = operation(lowercase($$[$0-1]));\nbreak;\ncase 178:\nthis.$ = operation(lowercase($$[$0-3]), [$$[$0-1]]);\nbreak;\ncase 179:\nthis.$ = ensureSparqlStar(operation(lowercase($$[$0-3]), [$$[$0-1]]));\nbreak;\ncase 180:\nthis.$ = operation(lowercase($$[$0-5]), [$$[$0-3], $$[$0-1]]);\nbreak;\ncase 181:\nthis.$ = operation(lowercase($$[$0-7]), [$$[$0-5], $$[$0-3], $$[$0-1]]);\nbreak;\ncase 182:\nthis.$ = ensureSparqlStar(operation(lowercase($$[$0-7]), [$$[$0-5], $$[$0-3], $$[$0-1]]));\nbreak;\ncase 183:\nthis.$ = operation(lowercase($$[$0-1]), $$[$0]);\nbreak;\ncase 184:\nthis.$ = operation('bound', [toVar($$[$0-1])]);\nbreak;\ncase 185:\nthis.$ = operation($$[$0-1], []);\nbreak;\ncase 186:\nthis.$ = operation($$[$0-3], [$$[$0-1]]);\nbreak;\ncase 187:\nthis.$ = operation($$[$0-2] ? 'notexists' :'exists', [degroupSingle($$[$0])]);\nbreak;\ncase 188: case 189:\nthis.$ = expression($$[$0-1], { type: 'aggregate', aggregation: lowercase($$[$0-4]), distinct: !!$$[$0-2] });\nbreak;\ncase 190:\nthis.$ = expression($$[$0-2], { type: 'aggregate', aggregation: lowercase($$[$0-5]), distinct: !!$$[$0-3], separator: typeof $$[$0-1] === 'string' ? $$[$0-1] : ' ' });\nbreak;\ncase 192:\nthis.$ = createTypedLiteral($$[$0]);\nbreak;\ncase 193:\nthis.$ = createLangLiteral($$[$0-1], lowercase($$[$0].substr(1)));\nbreak;\ncase 194:\nthis.$ = createTypedLiteral($$[$0-2], $$[$0]);\nbreak;\ncase 195: case 204:\nthis.$ = createTypedLiteral($$[$0], XSD_INTEGER);\nbreak;\ncase 196: case 205:\nthis.$ = createTypedLiteral($$[$0], XSD_DECIMAL);\nbreak;\ncase 197: case 206:\nthis.$ = createTypedLiteral(lowercase($$[$0]), XSD_DOUBLE);\nbreak;\ncase 200:\nthis.$ = createTypedLiteral($$[$0].toLowerCase(), XSD_BOOLEAN);\nbreak;\ncase 201:\nthis.$ = createTypedLiteral($$[$0].substr(1), XSD_INTEGER);\nbreak;\ncase 202:\nthis.$ = createTypedLiteral($$[$0].substr(1), XSD_DECIMAL);\nbreak;\ncase 203:\nthis.$ = createTypedLiteral($$[$0].substr(1).toLowerCase(), XSD_DOUBLE);\nbreak;\ncase 207: case 208:\nthis.$ = unescapeString($$[$0], 1);\nbreak;\ncase 209: case 210:\nthis.$ = unescapeString($$[$0], 3);\nbreak;\ncase 211:\nthis.$ = Parser.factory.namedNode(resolveIRI($$[$0]));\nbreak;\ncase 213:\n\n var namePos = $$[$0].indexOf(':'),\n prefix = $$[$0].substr(0, namePos),\n expansion = Parser.prefixes[prefix];\n if (!expansion) throw new Error('Unknown prefix: ' + prefix);\n var uriString = resolveIRI(expansion + $$[$0].substr(namePos + 1));\n this.$ = Parser.factory.namedNode(uriString);\n \nbreak;\ncase 214:\n\n $$[$0] = $$[$0].substr(0, $$[$0].length - 1);\n if (!($$[$0] in Parser.prefixes)) throw new Error('Unknown prefix: ' + $$[$0]);\n var uriString = resolveIRI(Parser.prefixes[$$[$0]]);\n this.$ = Parser.factory.namedNode(uriString);\n \nbreak;\ncase 215:\nthis.$ = blank($$[$0].replace(/^(_:)/,''));;\nbreak;\ncase 216:\nthis.$ = blank();\nbreak;\ncase 217: case 218: case 232:\nthis.$ = ensureSparqlStar(nestedTriple($$[$0-3], $$[$0-2], $$[$0-1]));\nbreak;\ncase 230: case 231:\nthis.$ = ensureSparqlStar($$[$0-1]);\nbreak;\ncase 248: case 250: case 252: case 254: case 256: case 260: case 264: case 268: case 270: case 292: case 294: case 296: case 298: case 300: case 302: case 304: case 306: case 329: case 342: case 356: case 368: case 370: case 372: case 374: case 392: case 402: case 425: case 427: case 429: case 431: case 441: case 445: case 447: case 449:\n$$[$0-1].push($$[$0]);\nbreak;\ncase 259: case 269: case 291: case 293: case 295: case 301: case 305: case 371: case 424: case 426:\nthis.$ = [$$[$0]];\nbreak;\ncase 308:\n$$[$0-3].push($$[$0-2]);\nbreak;\ncase 350: case 362: case 376: case 380: case 382: case 386: case 396: case 406: case 410: case 412: case 421:\n$$[$0-2].push($$[$0-1]);\nbreak;\n}\n},\ntable: [o($V0,$V1,{3:1,4:2,10:3}),{1:[3]},o($V2,[2,307],{5:4,7:5,321:6,214:7,8:8,96:9,215:10,17:11,21:12,97:16,38:17,6:[2,238],13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,24:[1,13],32:[1,14],36:[1,15],41:$V4}),o([6,13,16,24,32,36,41,45,100,110,113,115,116,123,126,131,197,224,229,308,329,330,331,332,333],[2,3],{322:19,11:20,14:21,12:[1,22],15:[1,23]}),{6:[1,24]},{6:[2,240]},{6:[2,241]},{6:[2,242]},{6:[2,243],9:25,84:26,85:$V5},{6:[2,239]},o($V6,[2,411],{216:28,217:29}),o($V7,[2,249],{18:30}),o($V7,[2,251],{22:31}),o($V8,[2,255],{25:32,27:33,29:[1,34]}),{13:$V9,16:$Va,33:35,39:[1,37],44:39,55:40,87:$Vb,139:38,307:43,308:$Vc,323:36},o($V7,[2,267],{37:46}),o($Vd,[2,326],{98:47,103:49,106:50,117:55,130:61,100:[1,48],110:[1,51],113:[1,52],115:[1,53],116:[1,54],131:[1,62],329:[1,56],330:[1,57],331:[1,58],332:[1,59],333:[1,60]}),{39:[1,63],40:64,43:65,44:66,45:$Ve,87:$Vb},o($Vf,[2,273],{42:68,324:69,325:[1,70],326:[1,71]}),o($V0,[2,248]),o($V0,[2,245]),o($V0,[2,246]),{13:[1,72]},{16:[1,73]},{1:[2,1]},{6:[2,2]},{6:[2,244]},{45:[1,77],85:[1,78],86:74,87:[1,75],89:[1,76]},o([6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],[2,120],{337:[1,79]}),o($Vg,[2,418],{218:80,222:81,229:[1,82]}),{19:83,28:$Vh,29:$Vi,52:84,53:$Vj,56:85},{19:88,28:$Vh,29:$Vi,52:89,53:$Vj,56:85},o($V7,[2,253],{26:90}),{28:[1,91],52:92,53:$Vj},o($Vk,[2,385],{181:93,182:94,183:95,31:[2,383]}),o($Vl,[2,263],{34:96}),o($Vl,[2,261],{44:39,55:40,307:43,139:97,13:$V9,16:$Va,87:$Vb,308:$Vc}),o($Vl,[2,262]),o($Vm,[2,259]),o($Vn,[2,143]),o($Vn,[2,144]),o([6,13,16,28,29,31,39,45,47,48,53,63,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346,347,348,349,350,351],[2,145]),o($Vo,[2,211]),o($Vo,[2,212]),o($Vo,[2,213]),o($Vo,[2,214]),{19:98,28:$Vh,29:$Vi,52:99,53:$Vj,56:85},{6:[2,309],99:100,193:[1,101]},o($Vp,[2,311],{101:102,328:[1,103]}),o($Vq,[2,317],{104:104,328:[1,105]}),o($Vr,[2,322],{107:106,328:[1,107]}),{111:108,112:[2,324],328:[1,109]},{29:$Vs,114:110},{29:$Vs,114:112},{29:$Vs,114:113},{118:114,123:[1,115],125:116,126:$Vt},o($Vu,[2,315]),o($Vu,[2,316]),o($Vv,[2,319]),o($Vv,[2,320]),o($Vv,[2,321]),o($Vd,[2,327]),{13:$V9,16:$Va,55:118,307:43,308:$Vc},o($V7,[2,12]),o($V7,[2,13],{44:66,43:119,45:$Ve,87:$Vb}),o($Vw,[2,269]),o($Vw,[2,15]),{13:$V9,16:$Va,44:136,45:$Vx,46:120,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vf,[2,14]),o($Vf,[2,274]),o($Vf,[2,271]),o($Vf,[2,272]),o($V0,[2,4]),{13:[1,177]},o($V61,[2,39]),{29:[1,178]},{29:[1,179]},{87:[1,181],91:180},{45:[1,187],87:[1,185],89:[1,186],93:182,165:183,166:184},o($V6,[2,410]),o([6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337],[2,121],{338:[1,188]}),{13:$V9,16:$Va,45:[1,193],55:194,197:$V71,219:189,220:190,223:191,224:[1,192],307:43,308:$Vc},o($Vg,[2,419]),o($V81,$V91,{20:196,59:197,69:198,70:$Va1}),o($V7,[2,250]),{29:$Vb1,57:200},o($Vp,[2,279],{54:202,327:[1,203]}),{29:[2,282]},o($Vc1,$Vd1,{23:204,58:205,62:206,63:$Ve1}),o($V7,[2,252]),{19:208,28:$Vh,29:$Vi,52:209,53:$Vj,56:85},{29:[1,210]},o($V8,[2,256]),{31:[1,211]},{31:[2,384]},{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,145:212,172:221,185:213,187:214,231:$Vh1,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl1,[2,265],{56:85,35:227,52:228,19:229,28:$Vh,29:$Vi,53:$Vj}),o($Vm,[2,260]),o($Vc1,$Vd1,{58:205,62:206,23:230,63:$Ve1}),o($V7,[2,268]),{6:[2,45]},o($V0,$V1,{10:3,4:231}),{13:$V9,16:$Va,55:232,307:43,308:$Vc},o($Vp,[2,312]),{105:233,112:$Vm1,122:234,132:[1,237],134:235,327:[1,238],334:[1,239]},o($Vq,[2,318]),o($Vp,$Vn1,{108:240,133:242,112:$Vo1,132:$Vp1}),o($Vr,[2,323]),{112:[1,244]},{112:[2,325]},o($Vq1,[2,50]),o($Vk,$Vr1,{135:245,136:246,143:247,144:248,31:$Vs1,112:$Vs1}),o($Vq1,[2,51]),o($Vq1,[2,52]),o($Vt1,[2,328],{119:249}),{29:$Vs,114:250},o($Vt1,[2,56]),{29:$Vs,114:251},o($Vd,[2,59]),o($Vw,[2,270]),{47:[1,252]},o($Vu1,[2,150]),o($Vv1,[2,428],{240:253}),o($Vw1,[2,430],{244:254}),o($Vw1,[2,155],{248:255,249:256,250:[2,438],290:[1,257],341:[1,258],342:[1,259],343:[1,260],344:[1,261],345:[1,262],346:[1,263]}),o($Vx1,[2,440],{252:264}),o($Vy1,[2,448],{260:265}),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:266,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:267,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:268,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vy1,[2,167]),o($Vy1,[2,168]),o($Vy1,[2,169]),o($Vy1,[2,170],{176:269,45:$Vz1,89:$VA1}),o($Vy1,[2,171]),o($Vy1,[2,172]),o($Vy1,[2,173]),o($Vy1,[2,174]),{13:$V9,16:$Va,44:136,45:$Vx,46:272,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,176]),{89:[1,273]},{45:[1,274]},{45:[1,275]},{45:[1,276]},{45:[1,277]},{45:[1,278]},{45:$VC1,89:$VD1,179:279},{45:[1,282]},{45:[1,284],89:[1,283]},{279:[1,285]},o($VE1,[2,192],{292:[1,286],293:[1,287]}),o($VE1,[2,195]),o($VE1,[2,196]),o($VE1,[2,197]),o($VE1,[2,198]),o($VE1,[2,199]),o($VE1,[2,200]),{13:$V9,16:$Va,44:39,55:40,82:$Vy,87:$Vb,139:289,172:291,255:154,257:155,266:290,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,320:288},{45:[1,292]},{45:[1,293]},{45:[1,294]},o($VF1,[2,452]),o($VF1,[2,453]),o($VF1,[2,454]),o($VF1,[2,455]),o($VF1,[2,456]),{279:[2,458]},o($VG1,[2,207]),o($VG1,[2,208]),o($VG1,[2,209]),o($VG1,[2,210]),o($VE1,[2,201]),o($VE1,[2,202]),o($VE1,[2,203]),o($VE1,[2,204]),o($VE1,[2,205]),o($VE1,[2,206]),o($V0,[2,5]),o($VH1,[2,297],{88:295}),o($VI1,[2,299],{90:296}),{48:[1,297],87:[1,298]},o($VJ1,[2,301]),o($V61,[2,43]),o($V61,[2,82]),o($V61,[2,83]),{29:[1,299]},{29:[1,300]},{87:[1,302],169:301},o($V6,[2,412]),o($VK1,[2,123]),o($VK1,[2,416],{221:303,339:304,39:[1,306],263:[1,307],340:[1,305]}),o($VL1,[2,124]),{13:$V9,16:$Va,45:[1,311],55:194,89:[1,310],197:$V71,223:312,225:308,226:309,229:$VM1,307:43,308:$Vc},o($V6,$V3,{215:10,214:314}),o($VL1,[2,236]),o($VL1,[2,237]),o($VN1,[2,6]),o($VO1,[2,287],{60:315,72:316,73:[1,317]}),o($V81,[2,286]),{13:$V9,16:$Va,45:$Vx,55:323,67:321,68:322,71:318,77:320,79:319,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o([6,31,63,70,73,81,83,85],[2,20]),o($Vk,$VP1,{38:17,49:324,147:325,17:326,21:327,148:328,154:329,155:330,29:$VQ1,31:$VQ1,85:$VQ1,112:$VQ1,159:$VQ1,160:$VQ1,161:$VQ1,163:$VQ1,164:$VQ1,41:$V4}),{13:$V9,16:$Va,55:331,307:43,308:$Vc},o($Vp,[2,280]),o($VN1,[2,7]),o($V81,$V91,{59:197,69:198,20:332,70:$Va1}),o($Vc1,[2,284]),{64:[1,333]},o($Vc1,$Vd1,{58:205,62:206,23:334,63:$Ve1}),o($V7,[2,254]),o($Vk,$Vr1,{144:248,30:335,143:336,31:[2,257]}),o($V7,[2,100]),{31:[2,387],184:337,335:[1,338]},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:339,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VS1,[2,389],{44:39,55:40,307:43,190:340,195:341,139:342,188:344,189:345,186:346,13:$V9,16:$Va,87:$Vb,197:$VR1,308:$Vc}),o($VT1,[2,227]),o($VT1,[2,228]),o($VT1,[2,229]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,200:348,230:347,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:352,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VT1,[2,146]),o($VT1,[2,147]),o($VT1,[2,148]),o($VT1,[2,149]),{13:$V9,16:$Va,44:354,55:355,82:$Vy,87:$Vb,172:357,237:356,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:358,312:$Vk1,313:353},o($VU1,[2,215]),o($VU1,[2,216]),o($Vc1,$Vd1,{58:205,62:206,23:359,63:$Ve1}),o($Vl,[2,264]),o($Vl1,[2,266]),o($VN1,[2,11]),o($V2,[2,308],{6:[2,310]}),o($Vq1,[2,313],{102:360,120:361,121:[1,362]}),o($Vq1,[2,47]),o($Vq1,[2,63]),o($Vq1,[2,64]),{13:$V9,16:$Va,55:363,307:43,308:$Vc},o($Vq1,[2,336]),o($Vq1,[2,337]),o($Vq1,[2,338]),{109:[1,364]},o($VV1,[2,60]),{13:$V9,16:$Va,55:365,307:43,308:$Vc},o($Vp,[2,335]),{13:$V9,16:$Va,55:366,307:43,308:$Vc},{31:[1,367]},o($VW1,[2,341],{137:368}),o($VW1,[2,340]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,145:369,172:221,185:213,187:214,231:$Vh1,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},{28:[1,370],127:371,128:[1,372]},o($Vt1,[2,330],{124:373,125:374,126:$Vt}),o($Vt1,[2,57]),{44:375,87:$Vb},o($Vu1,[2,151],{241:376,242:[1,377]}),o($Vv1,[2,153],{245:378,246:[1,379]}),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,247:380,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{250:[1,381]},o($VX1,[2,432]),o($VX1,[2,433]),o($VX1,[2,434]),o($VX1,[2,435]),o($VX1,[2,436]),o($VX1,[2,437]),{250:[2,439]},o([47,48,193,242,246,250,272,290,341,342,343,344,345,346],[2,158],{253:382,254:383,255:384,257:385,263:[1,386],265:[1,387],297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW}),o($Vx1,[2,162],{261:388,262:389,39:$VY1,338:$VZ1}),o($Vy1,[2,164]),o($Vy1,[2,165]),o($Vy1,[2,166]),o($VB1,[2,95]),o($VB1,[2,96]),o($VX1,[2,377],{177:392,325:[1,393]}),{48:[1,394]},o($VB1,[2,177]),{13:$V9,16:$Va,44:136,45:$Vx,46:395,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:396,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:397,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:398,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:399,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,183]),o($VB1,[2,98]),o($VX1,[2,381],{180:400}),{87:[1,401]},o($VB1,[2,185]),{13:$V9,16:$Va,44:136,45:$Vx,46:402,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{29:$Vb1,57:403},o($VE1,[2,193]),{13:$V9,16:$Va,55:404,307:43,308:$Vc},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,195:405,197:$VR1,307:43,308:$Vc},o($V_1,[2,233]),o($V_1,[2,234]),o($V_1,[2,235]),o($V$1,[2,459],{281:406,325:[1,407]}),o($VX1,[2,463],{284:408,325:[1,409]}),o($VX1,[2,465],{286:410,325:[1,411]}),{13:$V9,16:$Va,31:[1,412],55:414,82:$Vy,171:413,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,419],89:[1,420]},{29:[1,421]},o($VJ1,[2,302]),o($VH1,[2,367],{167:422}),o($VI1,[2,369],{168:423}),{48:[1,424],87:[1,425]},o($VJ1,[2,371]),o($VK1,[2,122]),o($VK1,[2,417]),o($VK1,[2,413]),o($VK1,[2,414]),o($VK1,[2,415]),o($VL1,[2,125]),o($VL1,[2,127]),o($VL1,[2,128]),o($V22,[2,420],{227:426}),o($VL1,[2,130]),{13:$V9,16:$Va,55:194,197:$V71,223:427,307:43,308:$Vc},{48:[1,428]},o($V32,[2,289],{61:429,80:430,81:[1,431],83:[1,432]}),o($VO1,[2,288]),{64:[1,433]},o($V81,[2,29],{307:43,267:139,275:146,278:149,77:320,67:321,68:322,55:323,79:434,13:$V9,16:$Va,45:$Vx,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($V42,[2,293]),o($V52,[2,92]),o($V52,[2,93]),o($V52,[2,94]),{45:$Vz1,89:$VA1,176:269},{31:[1,435]},{31:[1,436]},{19:437,28:$Vh,29:$Vi,56:85},{19:438,28:$Vh,29:$Vi,56:85},o($V62,[2,355],{149:439}),o($V62,[2,354]),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,156:440,172:221,185:441,203:442,231:$V82,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl,[2,19]),o($V32,[2,21]),{13:$V9,16:$Va,44:450,45:$V92,55:323,65:445,66:446,67:447,68:448,87:$Vb,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VN1,[2,8]),{31:[1,451]},{31:[2,258]},{31:[2,101]},o($Vk,[2,386],{31:[2,388]}),o($VS1,[2,102]),o($Va2,[2,391],{191:452}),o($Vk,[2,395],{196:453,198:454}),o($Vk,[2,108]),o($Vk,[2,109]),o($VS1,[2,103]),o($VS1,[2,104]),o($VS1,[2,390]),{13:$V9,16:$Va,44:215,45:$Vf1,48:[1,455],55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,200:456,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vb2,[2,424]),o($Vc2,[2,136]),o($Vc2,[2,137]),o($Vd2,[2,140]),{232:[1,457]},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,195:458,197:$VR1,307:43,308:$Vc},o($V_1,[2,219]),o($V_1,[2,220]),o($V_1,[2,221]),o($V_1,[2,222]),o($V_1,[2,223]),o($VN1,[2,10]),o($Vq1,[2,46]),o($Vq1,[2,314]),{112:$Vm1,122:459},o($Vq1,[2,62]),o($Vp,$Vn1,{133:242,108:460,112:$Vo1,132:$Vp1}),o($VV1,[2,61]),o($Vq1,[2,49]),o([6,28,126,128,193],[2,65]),{31:[2,66],112:[1,462],138:461},o($VW1,[2,351],{146:463,335:[1,464]}),{29:$Vb1,57:465},o($Vt1,[2,329]),o($Vp,[2,332],{129:466,327:[1,467]}),o($Vt1,[2,55]),o($Vt1,[2,331]),{48:[1,468]},o($Vv1,[2,429]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,239:469,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vw1,[2,431]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,243:470,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vw1,[2,156]),{45:$VC1,89:$VD1,179:471},o($Vx1,[2,441]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,251:472,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vy1,[2,444],{256:473}),o($Vy1,[2,446],{258:474}),o($VX1,[2,442]),o($VX1,[2,443]),o($Vy1,[2,449]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,255:154,257:155,259:475,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,450]),o($VX1,[2,451]),o($VX1,[2,379],{178:476}),o($VX1,[2,378]),o([6,13,16,29,31,39,45,47,48,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,338,341,342,343,344,345,346,347,348,349,350,351],[2,175]),{48:[1,477]},{48:[1,478]},{272:[1,479]},{272:[1,480]},{272:[1,481]},{13:$V9,16:$Va,44:136,45:$Vx,46:482,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{48:[1,483]},{48:[1,484]},o($VB1,[2,187]),o($VE1,[2,194]),{13:$V9,16:$Va,44:39,55:40,82:$Vy,87:$Vb,139:289,172:291,255:154,257:155,266:290,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,320:485},{13:$V9,16:$Va,39:[1,487],44:136,45:$Vx,46:488,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,282:486,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($V$1,[2,460]),{13:$V9,16:$Va,44:136,45:$Vx,46:489,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,464]),{13:$V9,16:$Va,44:136,45:$Vx,46:490,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,466]),o($V61,[2,40]),o($VH1,[2,298]),o($Ve2,[2,87]),o($Ve2,[2,88]),o($Ve2,[2,89]),o($Ve2,[2,90]),{13:$V9,16:$Va,55:492,82:$Vy,172:493,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,311:494,312:$Vk1,315:491},o($V61,[2,41]),o($VI1,[2,300]),o($Vf2,[2,303],{92:495}),{13:$V9,16:$Va,31:[1,496],55:414,82:$Vy,171:497,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,498],89:[1,499]},{29:[1,500]},o($VJ1,[2,372]),{13:$V9,16:$Va,48:[2,422],55:194,197:$V71,223:312,226:502,228:501,229:$VM1,307:43,308:$Vc},o($VL1,[2,131]),o($VL1,[2,126]),o($V32,[2,22]),o($V32,[2,290]),{82:[1,503]},{82:[1,504]},{13:$V9,16:$Va,44:510,45:$Vx,55:323,67:321,68:322,74:505,75:506,76:$Vg2,77:320,78:$Vh2,79:509,87:$Vb,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($V42,[2,294]),o($Vi2,[2,69]),o($Vi2,[2,70]),o($V81,$V91,{59:197,69:198,20:511,70:$Va1}),o($Vc1,$Vd1,{58:205,62:206,23:512,63:$Ve1}),{29:[2,375],31:[2,71],84:522,85:$V5,112:[1,518],150:513,151:514,158:515,159:[1,516],160:[1,517],161:[1,519],163:[1,520],164:[1,521],175:523},o($V62,[2,363],{157:524,335:[1,525]}),o($V6,$V3,{215:10,202:526,205:527,208:528,214:529,44:530,87:$Vb}),o($Vj2,[2,399],{215:10,205:527,208:528,214:529,44:530,204:531,202:532,13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,87:$Vb}),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,212:534,231:$V82,233:533,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($V6,$V3,{215:10,205:527,208:528,214:529,44:530,202:537,87:$Vb}),o($Vc1,[2,23],{307:43,267:139,275:146,278:149,55:323,67:447,68:448,44:450,66:538,13:$V9,16:$Va,45:$V92,87:$Vb,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($Vk2,[2,291]),o($Vk2,[2,24]),o($Vk2,[2,25]),{13:$V9,16:$Va,44:136,45:$Vx,46:539,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vk2,[2,28]),o($Vc1,$Vd1,{58:205,62:206,23:540,63:$Ve1}),o([31,112,232,318,335],[2,105],{192:541,193:[1,542]}),o($Va2,[2,107]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,199:543,200:544,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl2,[2,132]),o($Vb2,[2,425]),o($Vl2,[2,133]),{13:$V9,16:$Va,44:354,55:355,82:$Vy,87:$Vb,172:357,237:356,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:358,312:$Vk1,313:545},o($Vq1,[2,54]),o($Vq1,[2,48]),o($VW1,[2,342]),{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:546,307:43,308:$Vc},o($VW1,[2,68]),o($Vk,[2,350],{31:$Vm2,112:$Vm2}),o($Vq1,[2,53]),{13:$V9,16:$Va,55:547,307:43,308:$Vc},o($Vp,[2,333]),o($Vw,[2,16]),o($Vv1,[2,152]),o($Vw1,[2,154]),o($Vw1,[2,157]),o($Vx1,[2,159]),o($Vx1,[2,160],{262:389,261:548,39:$VY1,338:$VZ1}),o($Vx1,[2,161],{262:389,261:549,39:$VY1,338:$VZ1}),o($Vy1,[2,163]),{13:$V9,16:$Va,44:136,45:$Vx,46:550,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,178]),o($VB1,[2,179]),{13:$V9,16:$Va,44:136,45:$Vx,46:551,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:552,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:553,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{48:[1,554],272:[1,555]},o($VB1,[2,184]),o($VB1,[2,186]),{314:[1,556]},{48:[1,557]},{48:[2,461]},{48:[2,462]},{48:[1,558]},{48:[2,467],193:[1,561],287:559,288:560},{13:$V9,16:$Va,55:194,197:$V71,223:562,307:43,308:$Vc},o($Vn2,[2,224]),o($Vn2,[2,225]),o($Vn2,[2,226]),{31:[1,563],45:$Vo2,94:564},o($V61,[2,84]),o($VH1,[2,368]),o($V61,[2,85]),o($VI1,[2,370]),o($Vf2,[2,373],{170:566}),{48:[1,567]},{48:[2,423],337:[1,568]},o($V32,[2,35],{83:[1,569]}),o($V32,[2,36],{81:[1,570]}),o($VO1,[2,30],{307:43,267:139,275:146,278:149,77:320,67:321,68:322,55:323,79:509,44:510,75:571,13:$V9,16:$Va,45:$Vx,76:$Vg2,78:$Vh2,87:$Vb,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($Vp2,[2,295]),{45:$Vx,77:572},{45:$Vx,77:573},o($Vp2,[2,33]),o($Vp2,[2,34]),{31:[2,275],50:574,84:575,85:$V5},{31:[2,277],51:576,84:577,85:$V5},o($V62,[2,356]),o($Vq2,[2,357],{152:578,335:[1,579]}),o($Vr2,[2,74]),{29:$Vb1,57:580},{29:$Vb1,57:581},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:582,307:43,308:$Vc},o($Vs2,[2,365],{162:583,328:[1,584]}),{13:$V9,16:$Va,45:$Vx,55:323,67:321,68:322,77:320,79:585,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{45:[1,586]},o($Vr2,[2,81]),{29:$Vb1,57:587},o($V62,[2,73]),o($Vk,[2,362],{29:$Vt2,31:$Vt2,85:$Vt2,112:$Vt2,159:$Vt2,160:$Vt2,161:$Vt2,163:$Vt2,164:$Vt2}),o($Vj2,[2,112]),o($Vu2,[2,401],{206:588}),o($Vk,[2,405],{209:589,210:590}),o($Vk,[2,403]),o($Vk,[2,404]),o($Vj2,[2,113]),o($Vj2,[2,400]),{13:$V9,16:$Va,44:215,45:$V72,48:[1,591],55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,212:592,231:$V82,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vb2,[2,426]),o($Vd2,[2,138]),o($Vd2,[2,139]),{232:[1,593]},o($Vk2,[2,292]),{47:[1,595],48:[1,594]},o($VN1,[2,9]),o($Va2,[2,392]),o($Va2,[2,393],{44:39,55:40,307:43,195:341,139:342,194:596,190:597,13:$V9,16:$Va,87:$Vb,197:$VR1,308:$Vc}),o($Va2,[2,110],{272:[1,598]}),o($Vv2,[2,397],{201:599,316:600,317:[1,601]}),{314:[1,602]},{29:[1,603]},o($Vt1,[2,58]),o($Vy1,[2,445]),o($Vy1,[2,447]),{48:[1,604],272:[1,605]},{48:[1,606]},{272:[1,607]},{272:[1,608]},o($VB1,[2,99]),o($VX1,[2,382]),o([13,16,39,47,48,87,193,197,242,246,250,263,265,272,290,297,298,299,300,301,302,308,314,338,341,342,343,344,345,346],[2,232]),o($VB1,[2,188]),o($VB1,[2,189]),{48:[1,609]},{48:[2,468]},{289:[1,610]},{13:$V9,16:$Va,55:492,82:$Vy,172:493,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,311:494,312:$Vk1,315:611},o($V61,[2,42]),o($Vf2,[2,304]),{13:$V9,16:$Va,55:414,82:$Vy,95:612,171:613,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,614],45:$Vo2,94:615},o($VL1,[2,129]),o($V22,[2,421]),{82:[1,616]},{82:[1,617]},o($Vp2,[2,296]),o($Vp2,[2,31]),o($Vp2,[2,32]),{31:[2,17]},{31:[2,276]},{31:[2,18]},{31:[2,278]},o($Vk,$VP1,{155:330,153:618,154:619,29:$Vw2,31:$Vw2,85:$Vw2,112:$Vw2,159:$Vw2,160:$Vw2,161:$Vw2,163:$Vw2,164:$Vw2}),o($Vq2,[2,358]),o($Vr2,[2,75]),o($Vr2,[2,76]),{29:$Vb1,57:620},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:621,307:43,308:$Vc},o($Vs2,[2,366]),o($Vr2,[2,79]),{13:$V9,16:$Va,44:136,45:$Vx,46:622,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vr2,[2,91],{336:[1,623]}),o([29,31,85,112,159,160,161,163,164,232,318,335],[2,114],{207:624,193:[1,625]}),o($Vu2,[2,117]),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,211:626,212:627,231:$V82,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($VT1,[2,134]),o($Vb2,[2,427]),o($VT1,[2,135]),o($Vk2,[2,26]),{44:628,87:$Vb},o($Va2,[2,106]),o($Va2,[2,394]),o($Vk,[2,396]),o($Vv2,[2,111]),o($Vv2,[2,398]),{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:629,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VU1,[2,217]),o($Vk,$Vr1,{144:248,140:630,143:631,31:[2,343]}),o($VB1,[2,97]),o($VX1,[2,380]),o($VB1,[2,180]),{13:$V9,16:$Va,44:136,45:$Vx,46:632,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:633,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,190]),{290:[1,634]},{314:[1,635]},{13:$V9,16:$Va,48:[1,636],55:414,82:$Vy,171:637,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},o($Vx2,[2,305]),o($V61,[2,86]),o($Vf2,[2,374]),o($V32,[2,37]),o($V32,[2,38]),o($V62,[2,72]),o($V62,[2,360]),o($Vr2,[2,77]),{29:$Vb1,57:638},{47:[1,639]},{29:[2,376]},o($Vu2,[2,402]),o($Vu2,[2,115],{215:10,208:528,214:529,44:530,205:640,13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,87:$Vb}),o($Vu2,[2,118],{272:[1,641]}),o($Vy2,[2,407],{213:642,319:643,317:[1,644]}),{48:[1,645]},{318:[1,646]},{31:[1,647]},{31:[2,344]},{48:[1,648]},{48:[1,649]},{291:650,303:$VX,304:$VY,305:$VZ,306:$V_},o($Ve2,[2,218]),o($Vf2,[2,44]),o($Vx2,[2,306]),o($Vr2,[2,78]),{44:651,87:$Vb},o($Vu2,[2,116]),o($Vk,[2,406]),o($Vy2,[2,119]),o($Vy2,[2,408]),o($V6,$V3,{215:10,205:527,208:528,214:529,44:530,202:652,87:$Vb}),o($Vk2,[2,27]),o($Vv2,[2,230]),o($Vz2,[2,345],{141:653,335:[1,654]}),o($VB1,[2,181]),o($VB1,[2,182]),{48:[2,191]},{48:[1,655]},{318:[1,656]},o($Vk,$Vr1,{144:248,142:657,143:658,31:$VA2,112:$VA2}),o($Vz2,[2,346]),o($Vr2,[2,80]),o($Vy2,[2,231]),o($VW1,[2,67]),o($VW1,[2,348])],\ndefaultActions: {5:[2,240],6:[2,241],7:[2,242],9:[2,239],24:[2,1],25:[2,2],26:[2,244],87:[2,282],94:[2,384],100:[2,45],109:[2,325],166:[2,458],263:[2,439],336:[2,258],337:[2,101],487:[2,461],488:[2,462],560:[2,468],574:[2,17],575:[2,276],576:[2,18],577:[2,278],623:[2,376],631:[2,344],650:[2,191]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n /*\n SPARQL parser in the Jison parser generator format.\n */\n\n var Wildcard = require('./Wildcard').Wildcard;\n\n // Common namespaces and entities\n var RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n RDF_TYPE = RDF + 'type',\n RDF_FIRST = RDF + 'first',\n RDF_REST = RDF + 'rest',\n RDF_NIL = RDF + 'nil',\n XSD = 'http://www.w3.org/2001/XMLSchema#',\n XSD_INTEGER = XSD + 'integer',\n XSD_DECIMAL = XSD + 'decimal',\n XSD_DOUBLE = XSD + 'double',\n XSD_BOOLEAN = XSD + 'boolean';\n\n var base = '', basePath = '', baseRoot = '';\n\n // Returns a lowercase version of the given string\n function lowercase(string) {\n return string.toLowerCase();\n }\n\n // Appends the item to the array and returns the array\n function appendTo(array, item) {\n return array.push(item), array;\n }\n\n // Appends the items to the array and returns the array\n function appendAllTo(array, items) {\n return array.push.apply(array, items), array;\n }\n\n // Extends a base object with properties of other objects\n function extend(base) {\n if (!base) base = {};\n for (var i = 1, l = arguments.length, arg; i < l && (arg = arguments[i] || {}); i++)\n for (var name in arg)\n base[name] = arg[name];\n return base;\n }\n\n // Creates an array that contains all items of the given arrays\n function unionAll() {\n var union = [];\n for (var i = 0, l = arguments.length; i < l; i++)\n union = union.concat.apply(union, arguments[i]);\n return union;\n }\n\n // Resolves an IRI against a base path\n function resolveIRI(iri) {\n // Strip off possible angular brackets\n if (iri[0] === '<')\n iri = iri.substring(1, iri.length - 1);\n // Return absolute IRIs unmodified\n if (/^[a-z]+:/i.test(iri))\n return iri;\n if (!Parser.base)\n throw new Error('Cannot resolve relative IRI ' + iri + ' because no base IRI was set.');\n if (base !== Parser.base) {\n base = Parser.base;\n basePath = base.replace(/[^\\/:]*$/, '');\n baseRoot = base.match(/^(?:[a-z]+:\\/*)?[^\\/]*/)[0];\n }\n switch (iri[0]) {\n // An empty relative IRI indicates the base IRI\n case undefined:\n return base;\n // Resolve relative fragment IRIs against the base IRI\n case '#':\n return base + iri;\n // Resolve relative query string IRIs by replacing the query string\n case '?':\n return base.replace(/(?:\\?.*)?$/, iri);\n // Resolve root relative IRIs at the root of the base IRI\n case '/':\n return baseRoot + iri;\n // Resolve all other IRIs at the base IRI's path\n default:\n return basePath + iri;\n }\n }\n\n // If the item is a variable, ensures it starts with a question mark\n function toVar(variable) {\n if (variable) {\n var first = variable[0];\n if (first === '?' || first === '$') return Parser.factory.variable(variable.substr(1));\n }\n return variable;\n }\n\n // Creates an operation with the given name and arguments\n function operation(operatorName, args) {\n return { type: 'operation', operator: operatorName, args: args || [] };\n }\n\n // Creates an expression with the given type and attributes\n function expression(expr, attr) {\n var expression = { expression: expr === '*'? new Wildcard() : expr };\n if (attr)\n for (var a in attr)\n expression[a] = attr[a];\n return expression;\n }\n\n // Creates a path with the given type and items\n function path(type, items) {\n return { type: 'path', pathType: type, items: items };\n }\n\n // Transforms a list of operations types and arguments into a tree of operations\n function createOperationTree(initialExpression, operationList) {\n for (var i = 0, l = operationList.length, item; i < l && (item = operationList[i]); i++)\n initialExpression = operation(item[0], [initialExpression, item[1]]);\n return initialExpression;\n }\n\n // Group datasets by default and named\n function groupDatasets(fromClauses, groupName) {\n var defaults = [], named = [], l = fromClauses.length, fromClause, group = {};\n if (!l)\n return null;\n for (var i = 0; i < l && (fromClause = fromClauses[i]); i++)\n (fromClause.named ? named : defaults).push(fromClause.iri);\n group[groupName || 'from'] = { default: defaults, named: named };\n return group;\n }\n\n // Converts the string to a number\n function toInt(string) {\n return parseInt(string, 10);\n }\n\n // Transforms a possibly single group into its patterns\n function degroupSingle(group) {\n return group.type === 'group' && group.patterns.length === 1 ? group.patterns[0] : group;\n }\n\n // Creates a literal with the given value and type\n function createTypedLiteral(value, type) {\n if (type && type.termType !== 'NamedNode'){\n type = Parser.factory.namedNode(type);\n }\n return Parser.factory.literal(value, type);\n }\n\n // Creates a literal with the given value and language\n function createLangLiteral(value, lang) {\n return Parser.factory.literal(value, lang);\n }\n\n function nestedTriple(subject, predicate, object) {\n\n // TODO: Remove this when it is caught by the grammar\n if (!('termType' in predicate)) {\n throw new Error('Nested triples cannot contain paths');\n }\n\n return Parser.factory.quad(subject, predicate, object);\n }\n\n // Creates a triple with the given subject, predicate, and object\n function triple(subject, predicate, object, annotations) {\n var triple = {};\n if (subject != null) triple.subject = subject;\n if (predicate != null) triple.predicate = predicate;\n if (object != null) triple.object = object;\n if (annotations != null) triple.annotations = annotations;\n return triple;\n }\n\n // Creates a new blank node\n function blank(name) {\n if (typeof name === 'string') { // Only use name if a name is given\n if (name.startsWith('e_')) return Parser.factory.blankNode(name);\n return Parser.factory.blankNode('e_' + name);\n }\n return Parser.factory.blankNode('g_' + blankId++);\n };\n var blankId = 0;\n Parser._resetBlanks = function () { blankId = 0; }\n\n // Regular expression and replacement strings to escape strings\n var escapeSequence = /\\\\u([a-fA-F0-9]{4})|\\\\U([a-fA-F0-9]{8})|\\\\(.)/g,\n escapeReplacements = { '\\\\': '\\\\', \"'\": \"'\", '\"': '\"',\n 't': '\\t', 'b': '\\b', 'n': '\\n', 'r': '\\r', 'f': '\\f' },\n partialSurrogatesWithoutEndpoint = /[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/,\n fromCharCode = String.fromCharCode;\n\n // Translates escape codes in the string into their textual equivalent\n function unescapeString(string, trimLength) {\n string = string.substring(trimLength, string.length - trimLength);\n try {\n string = string.replace(escapeSequence, function (sequence, unicode4, unicode8, escapedChar) {\n var charCode;\n if (unicode4) {\n charCode = parseInt(unicode4, 16);\n if (isNaN(charCode)) throw new Error(); // can never happen (regex), but helps performance\n return fromCharCode(charCode);\n }\n else if (unicode8) {\n charCode = parseInt(unicode8, 16);\n if (isNaN(charCode)) throw new Error(); // can never happen (regex), but helps performance\n if (charCode < 0xFFFF) return fromCharCode(charCode);\n return fromCharCode(0xD800 + ((charCode -= 0x10000) >> 10), 0xDC00 + (charCode & 0x3FF));\n }\n else {\n var replacement = escapeReplacements[escapedChar];\n if (!replacement) throw new Error();\n return replacement;\n }\n });\n }\n catch (error) { return ''; }\n\n // Test for invalid unicode surrogate pairs\n if (partialSurrogatesWithoutEndpoint.exec(string)) {\n throw new Error('Invalid unicode codepoint of surrogate pair without corresponding codepoint in ' + string);\n }\n\n return string;\n }\n\n // Creates a list, collecting its (possibly blank) items and triples associated with those items\n function createList(objects) {\n var list = blank(), head = list, listItems = [], listTriples, triples = [];\n objects.forEach(function (o) { listItems.push(o.entity); appendAllTo(triples, o.triples); });\n\n // Build an RDF list out of the items\n for (var i = 0, j = 0, l = listItems.length, listTriples = Array(l * 2); i < l;)\n listTriples[j++] = triple(head, Parser.factory.namedNode(RDF_FIRST), listItems[i]),\n listTriples[j++] = triple(head, Parser.factory.namedNode(RDF_REST), head = ++i < l ? blank() : Parser.factory.namedNode(RDF_NIL));\n\n // Return the list's identifier, its triples, and the triples associated with its items\n return { entity: list, triples: appendAllTo(listTriples, triples) };\n }\n\n // Creates a blank node identifier, collecting triples with that blank node as subject\n function createAnonymousObject(propertyList) {\n var entity = blank();\n return {\n entity: entity,\n triples: propertyList.map(function (t) { return extend(triple(entity), t); })\n };\n }\n\n // Collects all (possibly blank) objects, and triples that have them as subject\n function objectListToTriples(predicate, objectList, otherTriples) {\n var objects = [], triples = [];\n objectList.forEach(function (l) {\n let annotation = null;\n if (l.annotation) {\n annotation = l.annotation\n l = l.object;\n }\n objects.push(triple(null, predicate, l.entity, annotation));\n appendAllTo(triples, l.triples);\n });\n return unionAll(objects, otherTriples || [], triples);\n }\n\n // Simplifies groups by merging adjacent BGPs\n function mergeAdjacentBGPs(groups) {\n var merged = [], currentBgp;\n for (var i = 0, group; group = groups[i]; i++) {\n switch (group.type) {\n // Add a BGP's triples to the current BGP\n case 'bgp':\n if (group.triples.length) {\n if (!currentBgp)\n appendTo(merged, currentBgp = group);\n else\n appendAllTo(currentBgp.triples, group.triples);\n }\n break;\n // All other groups break up a BGP\n default:\n // Only add the group if its pattern is non-empty\n if (!group.patterns || group.patterns.length > 0) {\n appendTo(merged, group);\n currentBgp = null;\n }\n }\n }\n return merged;\n }\n\n // Return the id of an expression\n function getExpressionId(expression) {\n return expression.variable ? expression.variable.value : expression.value || expression.expression.value;\n }\n\n // Get all \"aggregate\"'s from an expression\n function getAggregatesOfExpression(expression) {\n if (!expression) {\n return [];\n }\n if (expression.type === 'aggregate') {\n return [expression];\n } else if (expression.type === \"operation\") {\n const aggregates = [];\n for (const arg of expression.args) {\n aggregates.push(...getAggregatesOfExpression(arg));\n }\n return aggregates;\n }\n return [];\n }\n\n // Get all variables used in an expression\n function getVariablesFromExpression(expression) {\n const variables = new Set();\n const visitExpression = function (expr) {\n if (!expr) { return; }\n if (expr.termType === \"Variable\") {\n variables.add(expr);\n } else if (expr.type === \"operation\") {\n expr.args.forEach(visitExpression);\n }\n };\n visitExpression(expression);\n return variables;\n }\n\n // Helper function to flatten arrays\n function flatten(input, depth = 1, stack = []) {\n for (const item of input) {\n if (depth > 0 && item instanceof Array) {\n flatten(item, depth - 1, stack);\n } else {\n stack.push(item);\n }\n }\n return stack;\n }\n\n function isVariable(term) {\n return term.termType === 'Variable';\n }\n\n function getBoundVarsFromGroupGraphPattern(pattern) {\n if (pattern.triples) {\n const boundVars = [];\n for (const triple of pattern.triples) {\n if (isVariable(triple.subject)) boundVars.push(triple.subject.value);\n if (isVariable(triple.predicate)) boundVars.push(triple.predicate.value);\n if (isVariable(triple.object)) boundVars.push(triple.object.value);\n }\n return boundVars;\n } else if (pattern.patterns) {\n const boundVars = [];\n for (const pat of pattern.patterns) {\n boundVars.push(...getBoundVarsFromGroupGraphPattern(pat));\n }\n return boundVars;\n }\n return [];\n }\n\n // Helper function to find duplicates in array\n function getDuplicatesInArray(array) {\n const sortedArray = array.slice().sort();\n const duplicates = [];\n for (let i = 0; i < sortedArray.length - 1; i++) {\n if (sortedArray[i + 1] == sortedArray[i]) {\n duplicates.push(sortedArray[i]);\n }\n }\n return duplicates;\n }\n\n function ensureSparqlStar(value) {\n if (!Parser.sparqlStar) {\n throw new Error('SPARQL-star support is not enabled');\n }\n return value;\n }\n\n function _applyAnnotations(subject, annotations, arr) {\n for (const annotation of annotations) {\n const t = triple(\n // If the annotation already has a subject then just push the\n // annotation to the upper scope as it is a blank node introduced\n // from a pattern like :s :p :o {| :p1 [ :p2 :o2; :p3 :o3 ] |}\n 'subject' in annotation ? annotation.subject : subject,\n annotation.predicate,\n annotation.object\n )\n\n arr.push(t);\n\n if (annotation.annotations) {\n _applyAnnotations(nestedTriple(\n subject,\n annotation.predicate,\n annotation.object\n ), annotation.annotations, arr)\n }\n }\n }\n\n function applyAnnotations(triples) {\n if (Parser.sparqlStar) {\n const newTriples = [];\n\n triples.forEach(t => {\n const s = triple(t.subject, t.predicate, t.object);\n\n newTriples.push(s);\n\n if (t.annotations) {\n _applyAnnotations(nestedTriple(t.subject, t.predicate, t.object), t.annotations, newTriples);\n }\n });\n\n return newTriples;\n }\n return triples;\n }\n\n function ensureSparqlStarNestedQuads(value) {\n if (!Parser.sparqlStarNestedQuads) {\n throw new Error('Lenient SPARQL-star support with nested quads is not enabled');\n }\n return value;\n }\n\n function ensureNoVariables(operations) {\n for (const operation of operations) {\n if (operation.type === 'graph' && operation.name.termType === 'Variable') {\n throw new Error('Detected illegal variable in GRAPH');\n }\n if (operation.type === 'bgp' || operation.type === 'graph') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'Variable' ||\n triple.predicate.termType === 'Variable' ||\n triple.object.termType === 'Variable') {\n throw new Error('Detected illegal variable in BGP');\n }\n }\n }\n }\n return operations;\n }\n\n function ensureNoBnodes(operations) {\n for (const operation of operations) {\n if (operation.type === 'bgp') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'BlankNode' ||\n triple.predicate.termType === 'BlankNode' ||\n triple.object.termType === 'BlankNode') {\n throw new Error('Detected illegal blank node in BGP');\n }\n }\n }\n }\n return operations;\n }\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"flex\":true,\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* ignore */\nbreak;\ncase 1:return 12\nbreak;\ncase 2:return 15\nbreak;\ncase 3:return 41\nbreak;\ncase 4:return 325\nbreak;\ncase 5:return 326\nbreak;\ncase 6:return 45\nbreak;\ncase 7:return 47\nbreak;\ncase 8:return 48\nbreak;\ncase 9:return 39\nbreak;\ncase 10:return 24\nbreak;\ncase 11:return 28\nbreak;\ncase 12:return 29\nbreak;\ncase 13:return 31\nbreak;\ncase 14:return 32\nbreak;\ncase 15:return 36\nbreak;\ncase 16:return 53\nbreak;\ncase 17:return 327\nbreak;\ncase 18:return 63\nbreak;\ncase 19:return 64\nbreak;\ncase 20:return 70\nbreak;\ncase 21:return 73\nbreak;\ncase 22:return 76\nbreak;\ncase 23:return 78\nbreak;\ncase 24:return 81\nbreak;\ncase 25:return 83\nbreak;\ncase 26:return 85\nbreak;\ncase 27:return 193\nbreak;\ncase 28:return 100\nbreak;\ncase 29:return 328\nbreak;\ncase 30:return 121\nbreak;\ncase 31:return 329\nbreak;\ncase 32:return 330\nbreak;\ncase 33:return 110\nbreak;\ncase 34:return 331\nbreak;\ncase 35:return 109\nbreak;\ncase 36:return 332\nbreak;\ncase 37:return 333\nbreak;\ncase 38:return 113\nbreak;\ncase 39:return 115\nbreak;\ncase 40:return 116\nbreak;\ncase 41:return 131\nbreak;\ncase 42:return 123\nbreak;\ncase 43:return 126\nbreak;\ncase 44:return 128\nbreak;\ncase 45:return 132\nbreak;\ncase 46:return 112\nbreak;\ncase 47:return 334\nbreak;\ncase 48:return 335\nbreak;\ncase 49:return 159\nbreak;\ncase 50:return 161\nbreak;\ncase 51:return 164\nbreak;\ncase 52:return 174\nbreak;\ncase 53:return 160\nbreak;\ncase 54:return 336\nbreak;\ncase 55:return 163\nbreak;\ncase 56:return 312\nbreak;\ncase 57:return 314\nbreak;\ncase 58:return 317\nbreak;\ncase 59:return 318\nbreak;\ncase 60:return 272\nbreak;\ncase 61:return 197\nbreak;\ncase 62:return 337\nbreak;\ncase 63:return 338\nbreak;\ncase 64:return 229\nbreak;\ncase 65:return 340\nbreak;\ncase 66:return 263\nbreak;\ncase 67:return 224\nbreak;\ncase 68:return 231\nbreak;\ncase 69:return 232\nbreak;\ncase 70:return 242\nbreak;\ncase 71:return 246\nbreak;\ncase 72:return 290\nbreak;\ncase 73:return 341\nbreak;\ncase 74:return 342\nbreak;\ncase 75:return 343\nbreak;\ncase 76:return 344\nbreak;\ncase 77:return 345\nbreak;\ncase 78:return 250\nbreak;\ncase 79:return 346\nbreak;\ncase 80:return 265\nbreak;\ncase 81:return 276\nbreak;\ncase 82:return 277\nbreak;\ncase 83:return 268\nbreak;\ncase 84:return 269\nbreak;\ncase 85:return 270\nbreak;\ncase 86:return 271\nbreak;\ncase 87:return 347\nbreak;\ncase 88:return 348\nbreak;\ncase 89:return 273\nbreak;\ncase 90:return 274\nbreak;\ncase 91:return 350\nbreak;\ncase 92:return 349\nbreak;\ncase 93:return 351\nbreak;\ncase 94:return 279\nbreak;\ncase 95:return 280\nbreak;\ncase 96:return 283\nbreak;\ncase 97:return 285\nbreak;\ncase 98:return 289\nbreak;\ncase 99:return 293\nbreak;\ncase 100:return 296\nbreak;\ncase 101:return 13\nbreak;\ncase 102:return 16\nbreak;\ncase 103:return 308\nbreak;\ncase 104:return 309\nbreak;\ncase 105:return 87\nbreak;\ncase 106:return 292\nbreak;\ncase 107:return 82\nbreak;\ncase 108:return 294\nbreak;\ncase 109:return 295\nbreak;\ncase 110:return 297\nbreak;\ncase 111:return 298\nbreak;\ncase 112:return 299\nbreak;\ncase 113:return 300\nbreak;\ncase 114:return 301\nbreak;\ncase 115:return 302\nbreak;\ncase 116:return 'EXPONENT'\nbreak;\ncase 117:return 303\nbreak;\ncase 118:return 304\nbreak;\ncase 119:return 305\nbreak;\ncase 120:return 306\nbreak;\ncase 121:return 89\nbreak;\ncase 122:return 310\nbreak;\ncase 123:return 6\nbreak;\ncase 124:return 'INVALID'\nbreak;\ncase 125:console.log(yy_.yytext);\nbreak;\n}\n},\nrules: [/^(?:\\s+|(#[^\\n\\r]*))/i,/^(?:BASE)/i,/^(?:PREFIX)/i,/^(?:SELECT)/i,/^(?:DISTINCT)/i,/^(?:REDUCED)/i,/^(?:\\()/i,/^(?:AS)/i,/^(?:\\))/i,/^(?:\\*)/i,/^(?:CONSTRUCT)/i,/^(?:WHERE)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:DESCRIBE)/i,/^(?:ASK)/i,/^(?:FROM)/i,/^(?:NAMED)/i,/^(?:GROUP)/i,/^(?:BY)/i,/^(?:HAVING)/i,/^(?:ORDER)/i,/^(?:ASC)/i,/^(?:DESC)/i,/^(?:LIMIT)/i,/^(?:OFFSET)/i,/^(?:VALUES)/i,/^(?:;)/i,/^(?:LOAD)/i,/^(?:SILENT)/i,/^(?:INTO)/i,/^(?:CLEAR)/i,/^(?:DROP)/i,/^(?:CREATE)/i,/^(?:ADD)/i,/^(?:TO)/i,/^(?:MOVE)/i,/^(?:COPY)/i,/^(?:INSERT((\\s+|(#[^\\n\\r]*)\\n\\r?)+)DATA)/i,/^(?:DELETE((\\s+|(#[^\\n\\r]*)\\n\\r?)+)DATA)/i,/^(?:DELETE((\\s+|(#[^\\n\\r]*)\\n\\r?)+)WHERE)/i,/^(?:WITH)/i,/^(?:DELETE)/i,/^(?:INSERT)/i,/^(?:USING)/i,/^(?:DEFAULT)/i,/^(?:GRAPH)/i,/^(?:ALL)/i,/^(?:\\.)/i,/^(?:OPTIONAL)/i,/^(?:SERVICE)/i,/^(?:BIND)/i,/^(?:UNDEF)/i,/^(?:MINUS)/i,/^(?:UNION)/i,/^(?:FILTER)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:\\{\\|)/i,/^(?:\\|\\})/i,/^(?:,)/i,/^(?:a)/i,/^(?:\\|)/i,/^(?:\\/)/i,/^(?:\\^)/i,/^(?:\\?)/i,/^(?:\\+)/i,/^(?:!)/i,/^(?:\\[)/i,/^(?:\\])/i,/^(?:\\|\\|)/i,/^(?:&&)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:<)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:>=)/i,/^(?:IN)/i,/^(?:NOT)/i,/^(?:-)/i,/^(?:BOUND)/i,/^(?:BNODE)/i,/^(?:(RAND|NOW|UUID|STRUUID))/i,/^(?:(LANG|DATATYPE|IRI|URI|ABS|CEIL|FLOOR|ROUND|STRLEN|STR|UCASE|LCASE|ENCODE_FOR_URI|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|MD5|SHA1|SHA256|SHA384|SHA512|isIRI|isURI|isBLANK|isLITERAL|isNUMERIC))/i,/^(?:(SUBJECT|PREDICATE|OBJECT|isTRIPLE))/i,/^(?:(LANGMATCHES|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|STRLANG|STRDT|sameTerm))/i,/^(?:CONCAT)/i,/^(?:COALESCE)/i,/^(?:IF)/i,/^(?:TRIPLE)/i,/^(?:REGEX)/i,/^(?:SUBSTR)/i,/^(?:REPLACE)/i,/^(?:EXISTS)/i,/^(?:COUNT)/i,/^(?:SUM|MIN|MAX|AVG|SAMPLE)/i,/^(?:GROUP_CONCAT)/i,/^(?:SEPARATOR)/i,/^(?:\\^\\^)/i,/^(?:true|false)/i,/^(?:(<(?:[^<>\\\"\\{\\}\\|\\^`\\\\\\u0000-\\u0020])*>))/i,/^(?:((([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?)?:))/i,/^(?:(((([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?)?:)((?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|:|[0-9]|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%))))(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%))))*(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%)))))?)))/i,/^(?:(_:(?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?))/i,/^(?:([\\?\\$]((?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9])(?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])*)))/i,/^(?:(@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*))/i,/^(?:([0-9]+))/i,/^(?:([0-9]*\\.[0-9]+))/i,/^(?:([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+)))/i,/^(?:(\\+([0-9]+)))/i,/^(?:(\\+([0-9]*\\.[0-9]+)))/i,/^(?:(\\+([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:(-([0-9]+)))/i,/^(?:(-([0-9]*\\.[0-9]+)))/i,/^(?:(-([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:([eE][+-]?[0-9]+))/i,/^(?:('(?:(?:[^\\u0027\\u005C\\u000A\\u000D])|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*'))/i,/^(?:(\"(?:(?:[^\\u0022\\u005C\\u000A\\u000D])|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*\"))/i,/^(?:('''(?:(?:'|'')?(?:[^'\\\\]|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*'''))/i,/^(?:(\"\"\"(?:(?:\"|\"\")?(?:[^\\\"\\\\]|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*\"\"\"))/i,/^(?:(\\((\\u0020|\\u0009|\\u000D|\\u000A)*\\)))/i,/^(?:(\\[(\\u0020|\\u0009|\\u000D|\\u000A)*\\]))/i,/^(?:$)/i,/^(?:.)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();module.exports=SparqlParser\n","\n// Wildcard constructor\nclass Wildcard {\n constructor() {\n return WILDCARD || this;\n }\n\n equals(other) {\n return other && (this.termType === other.termType);\n }\n}\n\nObject.defineProperty(Wildcard.prototype, 'value', {\n enumerable: true,\n value: '*',\n});\n\nObject.defineProperty(Wildcard.prototype, 'termType', {\n enumerable: true,\n value: 'Wildcard',\n});\n\n\n// Wildcard singleton\nvar WILDCARD = new Wildcard();\n\nmodule.exports.Wildcard = Wildcard;\n","var Parser = require('./lib/SparqlParser').Parser;\nvar Generator = require('./lib/SparqlGenerator');\nvar Wildcard = require(\"./lib/Wildcard\").Wildcard;\nvar { DataFactory } = require('rdf-data-factory');\n\nmodule.exports = {\n /**\n * Creates a SPARQL parser with the given pre-defined prefixes and base IRI\n * @param options {\n * prefixes?: { [prefix: string]: string },\n * baseIRI?: string,\n * factory?: import('rdf-js').DataFactory,\n * sparqlStar?: boolean,\n * skipValidation?: boolean,\n * skipUngroupedVariableCheck?: boolean\n * }\n */\n Parser: function ({ prefixes, baseIRI, factory, sparqlStar, skipValidation, skipUngroupedVariableCheck, pathOnly } = {}) {\n\n // Create a copy of the prefixes\n var prefixesCopy = {};\n for (var prefix in prefixes || {})\n prefixesCopy[prefix] = prefixes[prefix];\n\n // Create a new parser with the given prefixes\n // (Workaround for https://github.com/zaach/jison/issues/241)\n var parser = new Parser();\n parser.parse = function () {\n Parser.base = baseIRI || '';\n Parser.prefixes = Object.create(prefixesCopy);\n Parser.factory = factory || new DataFactory();\n Parser.sparqlStar = Boolean(sparqlStar);\n Parser.pathOnly = Boolean(pathOnly);\n // We keep skipUngroupedVariableCheck for compatibility reasons.\n Parser.skipValidation = Boolean(skipValidation) || Boolean(skipUngroupedVariableCheck)\n return Parser.prototype.parse.apply(parser, arguments);\n };\n parser._resetBlanks = Parser._resetBlanks;\n return parser;\n },\n Generator: Generator,\n Wildcard: Wildcard,\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.toSparqlJs = exports.toSparql = exports.Factory = exports.Algebra = exports.translate = void 0;\nconst sparqlAlgebra_1 = __importDefault(require(\"./lib/sparqlAlgebra\"));\nexports.translate = sparqlAlgebra_1.default;\nconst Algebra = __importStar(require(\"./lib/algebra\"));\nexports.Algebra = Algebra;\nconst factory_1 = __importDefault(require(\"./lib/factory\"));\nexports.Factory = factory_1.default;\nconst sparql_1 = require(\"./lib/sparql\");\nObject.defineProperty(exports, \"toSparql\", { enumerable: true, get: function () { return sparql_1.toSparql; } });\nObject.defineProperty(exports, \"toSparqlJs\", { enumerable: true, get: function () { return sparql_1.toSparqlJs; } });\nconst util_1 = __importDefault(require(\"./lib/util\"));\nexports.Util = util_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expressionTypes = exports.types = void 0;\nvar types;\n(function (types) {\n types[\"ALT\"] = \"alt\";\n types[\"ASK\"] = \"ask\";\n types[\"BGP\"] = \"bgp\";\n types[\"CONSTRUCT\"] = \"construct\";\n types[\"DESCRIBE\"] = \"describe\";\n types[\"DISTINCT\"] = \"distinct\";\n types[\"EXPRESSION\"] = \"expression\";\n types[\"EXTEND\"] = \"extend\";\n types[\"FILTER\"] = \"filter\";\n types[\"FROM\"] = \"from\";\n types[\"GRAPH\"] = \"graph\";\n types[\"GROUP\"] = \"group\";\n types[\"INV\"] = \"inv\";\n types[\"JOIN\"] = \"join\";\n types[\"LEFT_JOIN\"] = \"leftjoin\";\n types[\"LINK\"] = \"link\";\n types[\"MINUS\"] = \"minus\";\n types[\"NOP\"] = \"nop\";\n types[\"NPS\"] = \"nps\";\n types[\"ONE_OR_MORE_PATH\"] = \"OneOrMorePath\";\n types[\"ORDER_BY\"] = \"orderby\";\n types[\"PATH\"] = \"path\";\n types[\"PATTERN\"] = \"pattern\";\n types[\"PROJECT\"] = \"project\";\n types[\"REDUCED\"] = \"reduced\";\n types[\"SEQ\"] = \"seq\";\n types[\"SERVICE\"] = \"service\";\n types[\"SLICE\"] = \"slice\";\n types[\"UNION\"] = \"union\";\n types[\"VALUES\"] = \"values\";\n types[\"ZERO_OR_MORE_PATH\"] = \"ZeroOrMorePath\";\n types[\"ZERO_OR_ONE_PATH\"] = \"ZeroOrOnePath\";\n types[\"COMPOSITE_UPDATE\"] = \"compositeupdate\";\n types[\"DELETE_INSERT\"] = \"deleteinsert\";\n types[\"LOAD\"] = \"load\";\n types[\"CLEAR\"] = \"clear\";\n types[\"CREATE\"] = \"create\";\n types[\"DROP\"] = \"drop\";\n types[\"ADD\"] = \"add\";\n types[\"MOVE\"] = \"move\";\n types[\"COPY\"] = \"copy\";\n})(types = exports.types || (exports.types = {}));\nvar expressionTypes;\n(function (expressionTypes) {\n expressionTypes[\"AGGREGATE\"] = \"aggregate\";\n expressionTypes[\"EXISTENCE\"] = \"existence\";\n expressionTypes[\"NAMED\"] = \"named\";\n expressionTypes[\"OPERATOR\"] = \"operator\";\n expressionTypes[\"TERM\"] = \"term\";\n expressionTypes[\"WILDCARD\"] = \"wildcard\";\n})(expressionTypes = exports.expressionTypes || (exports.expressionTypes = {}));\n//# sourceMappingURL=algebra.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst A = __importStar(require(\"./algebra\"));\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nclass Factory {\n constructor(dataFactory) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.stringType = this.createTerm('http://www.w3.org/2001/XMLSchema#string');\n }\n createAlt(input, flatten = true) { return this.flattenMulti({ type: A.types.ALT, input }, flatten); }\n createAsk(input) { return { type: A.types.ASK, input }; }\n createBoundAggregate(variable, aggregate, expression, distinct, separator) {\n const result = this.createAggregateExpression(aggregate, expression, distinct, separator);\n result.variable = variable;\n return result;\n }\n createBgp(patterns) { return { type: A.types.BGP, patterns }; }\n createConstruct(input, template) { return { type: A.types.CONSTRUCT, input, template }; }\n createDescribe(input, terms) { return { type: A.types.DESCRIBE, input, terms }; }\n createDistinct(input) { return { type: A.types.DISTINCT, input }; }\n createExtend(input, variable, expression) { return { type: A.types.EXTEND, input, variable, expression }; }\n createFrom(input, def, named) { return { type: A.types.FROM, input, default: def, named }; }\n createFilter(input, expression) { return { type: A.types.FILTER, input, expression }; }\n createGraph(input, name) { return { type: A.types.GRAPH, input, name }; }\n createGroup(input, variables, aggregates) { return { type: A.types.GROUP, input, variables, aggregates }; }\n createInv(path) { return { type: A.types.INV, path }; }\n createJoin(input, flatten = true) { return this.flattenMulti({ type: A.types.JOIN, input }, flatten); }\n createLeftJoin(left, right, expression) {\n if (expression)\n return { type: A.types.LEFT_JOIN, input: [left, right], expression };\n return { type: A.types.LEFT_JOIN, input: [left, right] };\n }\n createLink(iri) { return { type: A.types.LINK, iri }; }\n createMinus(left, right) { return { type: A.types.MINUS, input: [left, right] }; }\n createNop() { return { type: A.types.NOP }; }\n createNps(iris) { return { type: A.types.NPS, iris }; }\n createOneOrMorePath(path) { return { type: A.types.ONE_OR_MORE_PATH, path }; }\n createOrderBy(input, expressions) { return { type: A.types.ORDER_BY, input, expressions }; }\n createPath(subject, predicate, object, graph) {\n if (graph)\n return { type: A.types.PATH, subject, predicate, object, graph };\n return { type: A.types.PATH, subject, predicate, object, graph: this.dataFactory.defaultGraph() };\n }\n createPattern(subject, predicate, object, graph) {\n const pattern = this.dataFactory.quad(subject, predicate, object, graph);\n pattern.type = A.types.PATTERN;\n return pattern;\n }\n createProject(input, variables) { return { type: A.types.PROJECT, input, variables }; }\n createReduced(input) { return { type: A.types.REDUCED, input }; }\n createSeq(input, flatten = true) { return this.flattenMulti({ type: A.types.SEQ, input }, flatten); }\n createService(input, name, silent) { return { type: A.types.SERVICE, input, name, silent: Boolean(silent) }; }\n createSlice(input, start, length) {\n start = start || 0;\n if (length !== undefined)\n return { type: A.types.SLICE, input, start, length };\n return { type: A.types.SLICE, input, start };\n }\n createUnion(input, flatten = true) { return this.flattenMulti({ type: A.types.UNION, input }, flatten); }\n createValues(variables, bindings) { return { type: A.types.VALUES, variables, bindings }; }\n createZeroOrMorePath(path) { return { type: A.types.ZERO_OR_MORE_PATH, path }; }\n createZeroOrOnePath(path) { return { type: A.types.ZERO_OR_ONE_PATH, path }; }\n createAggregateExpression(aggregator, expression, distinct, separator) {\n if (separator)\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, separator, distinct };\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, distinct };\n }\n createExistenceExpression(not, input) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.EXISTENCE, not, input }; }\n createNamedExpression(name, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.NAMED, name, args }; }\n createOperatorExpression(operator, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.OPERATOR, operator, args }; }\n createTermExpression(term) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.TERM, term }; }\n createWildcardExpression() { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.WILDCARD, wildcard: new sparqljs_1.Wildcard() }; }\n createTerm(str) {\n if (str[0] === '$') {\n str = str.replace('$', '?');\n }\n return (0, rdf_string_1.stringToTerm)(str, this.dataFactory);\n }\n // Update functions\n createCompositeUpdate(updates) { return { type: A.types.COMPOSITE_UPDATE, updates }; }\n createDeleteInsert(deleteQuads, insertQuads, where) {\n const result = { type: A.types.DELETE_INSERT };\n if (deleteQuads)\n result.delete = deleteQuads;\n if (insertQuads)\n result.insert = insertQuads;\n if (where)\n result.where = where;\n return result;\n }\n createLoad(source, destination, silent) {\n const result = { type: A.types.LOAD, source };\n if (destination)\n result.destination = destination;\n return this.addSilent(result, Boolean(silent));\n }\n createClear(source, silent) {\n return this.addSilent({ type: A.types.CLEAR, source }, Boolean(silent));\n }\n createCreate(source, silent) {\n return this.addSilent({ type: A.types.CREATE, source }, Boolean(silent));\n }\n createDrop(source, silent) {\n return this.addSilent({ type: A.types.DROP, source }, Boolean(silent));\n }\n createAdd(source, destination, silent) {\n return this.addSilent({ type: A.types.ADD, source, destination }, Boolean(silent));\n }\n createMove(source, destination, silent) {\n return this.addSilent({ type: A.types.MOVE, source, destination }, Boolean(silent));\n }\n createCopy(source, destination, silent) {\n return this.addSilent({ type: A.types.COPY, source, destination }, Boolean(silent));\n }\n addSilent(input, silent) {\n if (silent)\n input.silent = silent;\n return input;\n }\n flattenMulti(input, flatten) {\n if (!flatten) {\n return input;\n }\n const type = input.type;\n const children = input.input;\n let newChildren = [];\n for (const child of children) {\n if (child.type === type) {\n newChildren.push(...child.input);\n }\n else {\n newChildren.push(child);\n }\n }\n input.input = newChildren;\n return input;\n }\n}\nexports.default = Factory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toSparqlJs = exports.toSparql = void 0;\nconst rdf_isomorphic_1 = require(\"rdf-isomorphic\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst types = Algebra.types;\nconst eTypes = Algebra.expressionTypes;\nlet context;\nconst factory = new factory_1.default();\nfunction toSparql(op, options = {}) {\n let generator = new sparqljs_1.Generator(options);\n return generator.stringify(toSparqlJs(op));\n}\nexports.toSparql = toSparql;\nfunction toSparqlJs(op) {\n resetContext();\n op = removeQuads(op);\n let result = translateOperation(op);\n if (result.type === 'group')\n return result.patterns[0];\n return result;\n}\nexports.toSparqlJs = toSparqlJs;\nfunction resetContext() {\n context = { project: false, extend: [], group: [], aggregates: [], order: [] };\n}\nfunction translateOperation(op) {\n // this allows us to differentiate between BIND and SELECT when translating EXTEND\n // GRAPH was added because the way graphs get added back here is not the same as how they get added in the future\n // ^ seems fine but might have to be changed if problems get detected in the future\n if (op.type !== types.EXTEND && op.type !== types.ORDER_BY && op.type !== types.GRAPH)\n context.project = false;\n switch (op.type) {\n case types.EXPRESSION: return translateExpression(op);\n case types.ASK: return translateProject(op, types.ASK);\n case types.BGP: return translateBgp(op);\n case types.CONSTRUCT: return translateConstruct(op);\n case types.DESCRIBE: return translateProject(op, types.DESCRIBE);\n case types.DISTINCT: return translateDistinct(op);\n case types.EXTEND: return translateExtend(op);\n case types.FROM: return translateFrom(op);\n case types.FILTER: return translateFilter(op);\n case types.GRAPH: return translateGraph(op);\n case types.GROUP: return translateGroup(op);\n case types.JOIN: return translateJoin(op);\n case types.LEFT_JOIN: return translateLeftJoin(op);\n case types.MINUS: return translateMinus(op);\n case types.NOP: return {};\n case types.ORDER_BY: return translateOrderBy(op);\n case types.PATH: return translatePath(op);\n case types.PATTERN: return translatePattern(op);\n case types.PROJECT: return translateProject(op, types.PROJECT);\n case types.REDUCED: return translateReduced(op);\n case types.SERVICE: return translateService(op);\n case types.SLICE: return translateSlice(op);\n case types.UNION: return translateUnion(op);\n case types.VALUES: return translateValues(op);\n // UPDATE operations\n case types.COMPOSITE_UPDATE: return translateCompositeUpdate(op);\n case types.DELETE_INSERT: return translateDeleteInsert(op);\n case types.LOAD: return translateLoad(op);\n case types.CLEAR: return translateClear(op);\n case types.CREATE: return translateCreate(op);\n case types.DROP: return translateDrop(op);\n case types.ADD: return translateAdd(op);\n case types.MOVE: return translateMove(op);\n case types.COPY: return translateCopy(op);\n }\n throw new Error(`Unknown Operation type ${op.type}`);\n}\nfunction translateExpression(expr) {\n switch (expr.expressionType) {\n case eTypes.AGGREGATE: return translateAggregateExpression(expr);\n case eTypes.EXISTENCE: return translateExistenceExpression(expr);\n case eTypes.NAMED: return translateNamedExpression(expr);\n case eTypes.OPERATOR: return translateOperatorExpression(expr);\n case eTypes.TERM: return translateTermExpression(expr);\n case eTypes.WILDCARD: return translateWildcardExpression(expr);\n }\n throw new Error(`Unknown Expression Operation type ${expr.expressionType}`);\n}\nfunction translatePathComponent(path) {\n switch (path.type) {\n case types.ALT: return translateAlt(path);\n case types.INV: return translateInv(path);\n case types.LINK: return translateLink(path);\n case types.NPS: return translateNps(path);\n case types.ONE_OR_MORE_PATH: return translateOneOrMorePath(path);\n case types.SEQ: return translateSeq(path);\n case types.ZERO_OR_MORE_PATH: return translateZeroOrMorePath(path);\n case types.ZERO_OR_ONE_PATH: return translateZeroOrOnePath(path);\n }\n throw new Error(`Unknown Path type ${path.type}`);\n}\nfunction translateTerm(term) {\n return (0, rdf_string_1.termToString)(term);\n}\n// ------------------------- EXPRESSIONS -------------------------\nfunction translateAggregateExpression(expr) {\n const result = {\n expression: translateExpression(expr.expression),\n type: 'aggregate',\n aggregation: expr.aggregator,\n distinct: expr.distinct\n };\n if (expr.separator)\n result.separator = expr.separator;\n return result;\n}\nfunction translateExistenceExpression(expr) {\n return {\n type: 'operation',\n operator: expr.not ? 'notexists' : 'exists',\n args: [{\n type: 'group',\n patterns: util_1.default.flatten([translateOperation(expr.input)])\n }]\n };\n}\nfunction translateNamedExpression(expr) {\n return {\n type: 'functionCall',\n // Wrong typings\n function: expr.name,\n args: expr.args.map(translateExpression)\n };\n}\nfunction translateOperatorExpression(expr) {\n if (expr.operator === 'desc') {\n const result = { expression: translateExpression(expr.args[0]) };\n result.descending = true;\n return result;\n }\n const result = {\n type: 'operation',\n operator: expr.operator,\n args: expr.args.map(translateExpression)\n };\n if (result.operator === 'in' || result.operator === 'notin')\n result.args = [result.args[0]].concat([result.args.slice(1)]);\n return result;\n}\nfunction translateTermExpression(expr) {\n return expr.term;\n}\nfunction translateWildcardExpression(expr) {\n return expr.wildcard;\n}\nfunction arrayToPattern(input) {\n if (!Array.isArray(input))\n return input;\n if (input.length === 1)\n return input[0];\n return {\n type: 'group',\n patterns: input,\n };\n}\n// ------------------------- OPERATIONS -------------------------\n// these get translated in the project function\nfunction translateBoundAggregate(op) {\n return op;\n}\nfunction translateBgp(op) {\n let patterns = op.patterns.map(translatePattern);\n if (patterns.length === 0)\n return null;\n return {\n type: 'bgp',\n triples: patterns\n };\n}\nfunction translateConstruct(op) {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: op.template.map(translatePattern),\n where: util_1.default.flatten([\n translateOperation(op.input)\n ])\n };\n}\nfunction translateDistinct(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].distinct = true;\n return result;\n}\nfunction translateExtend(op) {\n if (context.project) {\n context.extend.push(op);\n return translateOperation(op.input);\n }\n return util_1.default.flatten([\n translateOperation(op.input),\n {\n type: 'bind',\n variable: op.variable,\n expression: translateExpression(op.expression)\n }\n ]);\n}\nfunction translateFrom(op) {\n const result = translateOperation(op.input);\n // Can't type as CONSTRUCT queries do not have `from` field in their type\n let obj = result;\n // project is nested in group object\n if (result.type === 'group') {\n obj = result.patterns[0];\n }\n obj.from = {\n default: op.default,\n named: op.named\n };\n return result;\n}\nfunction translateFilter(op) {\n return {\n type: 'group',\n patterns: util_1.default.flatten([\n translateOperation(op.input),\n { type: 'filter', expression: translateExpression(op.expression) }\n ])\n };\n}\nfunction translateGraph(op) {\n return {\n type: 'graph',\n patterns: util_1.default.flatten([translateOperation(op.input)]),\n name: op.name\n };\n}\nfunction translateGroup(op) {\n const input = translateOperation(op.input);\n const aggs = op.aggregates.map(translateBoundAggregate);\n context.aggregates.push(...aggs);\n // TODO: apply possible extends\n context.group.push(...op.variables);\n return input;\n}\nfunction translateJoin(op) {\n const arr = util_1.default.flatten(op.input.map(translateOperation));\n // Merge bgps\n // This is possible if one side was a path and the other a bgp for example\n return arr.reduce((result, val) => {\n if (val.type !== 'bgp' || result.length == 0 || result[result.length - 1].type !== 'bgp') {\n result.push(val);\n }\n else {\n result[result.length - 1].triples.push(...val.triples);\n }\n return result;\n }, []);\n}\nfunction translateLeftJoin(op) {\n const leftjoin = {\n type: 'optional',\n patterns: [\n translateOperation(op.input[1])\n ]\n };\n if (op.expression) {\n leftjoin.patterns.push({\n type: 'filter',\n expression: translateExpression(op.expression)\n });\n }\n leftjoin.patterns = util_1.default.flatten(leftjoin.patterns);\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n leftjoin\n ]);\n}\nfunction translateMinus(op) {\n let patterns = translateOperation(op.input[1]);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n {\n type: 'minus',\n patterns: patterns\n }\n ]);\n}\nfunction translateOrderBy(op) {\n context.order.push(...op.expressions);\n return translateOperation(op.input);\n}\nfunction translatePath(op) {\n return {\n type: 'bgp',\n triples: [{\n subject: op.subject,\n predicate: translatePathComponent(op.predicate),\n object: op.object\n }]\n };\n}\nfunction translatePattern(op) {\n return {\n subject: op.subject,\n predicate: op.predicate,\n object: op.object\n };\n}\nfunction replaceAggregatorVariables(s, map) {\n let st = util_1.default.isSimpleTerm(s) ? translateTerm(s) : s;\n if (typeof st === 'string') {\n if (map[st])\n return map[st];\n }\n else if (Array.isArray(s)) {\n s = s.map(e => replaceAggregatorVariables(e, map));\n }\n else {\n for (let key of Object.keys(s))\n s[key] = replaceAggregatorVariables(s[key], map);\n }\n return s;\n}\nfunction translateProject(op, type) {\n const result = {\n type: 'query',\n prefixes: {}\n };\n // Makes typing easier in some places\n const select = result;\n let variables;\n if (type === types.PROJECT) {\n result.queryType = 'SELECT';\n variables = op.variables;\n }\n else if (type === types.ASK) {\n result.queryType = 'ASK';\n }\n else if (type === types.DESCRIBE) {\n result.queryType = 'DESCRIBE';\n variables = op.terms;\n }\n // backup values in case of nested queries\n // everything in extend, group, etc. is irrelevant for this project call\n const extend = context.extend;\n const group = context.group;\n const aggregates = context.aggregates;\n const order = context.order;\n resetContext();\n context.project = true;\n let input = util_1.default.flatten([translateOperation(op.input)]);\n if (input.length === 1 && input[0].type === 'group')\n input = input[0].patterns;\n result.where = input;\n let aggregators = {};\n // these can not reference each other\n for (let agg of context.aggregates)\n aggregators[translateTerm(agg.variable)] = translateExpression(agg);\n // do these in reverse order since variables in one extend might apply to an expression in an other extend\n let extensions = {};\n for (let i = context.extend.length - 1; i >= 0; --i) {\n let e = context.extend[i];\n extensions[translateTerm(e.variable)] = replaceAggregatorVariables(translateExpression(e.expression), aggregators);\n }\n if (context.group.length > 0)\n select.group = context.group.map(variable => {\n let v = translateTerm(variable);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // make sure there is only 1 'AS' statement\n return {\n variable,\n expression: result\n };\n }\n return { expression: variable };\n });\n // descending expressions will already be in the correct format due to the structure of those\n if (context.order.length > 0)\n select.order = context.order.map(translateOperation).map(o => o.descending ? o : ({ expression: o }));\n // this needs to happen after the group because it might depend on variables generated there\n if (variables) {\n select.variables = variables.map((term) => {\n let v = translateTerm(term);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // remove used extensions so only unused ones remain\n return {\n variable: term,\n expression: result,\n };\n }\n return term;\n });\n // if the * didn't match any variables this would be empty\n if (select.variables.length === 0)\n select.variables = [new sparqljs_1.Wildcard()];\n }\n // It is possible that at this point some extensions have not yet been resolved.\n // These would be bind operations that are not used in a GROUP BY or SELECT body.\n // We still need to add them though, as they could be relevant to the other extensions.\n const extensionEntries = Object.entries(extensions);\n if (extensionEntries.length > 0) {\n select.where = select.where || [];\n for (const [key, value] of extensionEntries) {\n select.where.push({\n type: 'bind',\n variable: (0, rdf_string_1.stringToTerm)(key),\n expression: value\n });\n }\n }\n // convert filter to 'having' if it contains an aggregator variable\n // could always convert, but is nicer to use filter when possible\n if (result.where.length > 0 && result.where[result.where.length - 1].type === 'filter') {\n const filter = result.where[result.where.length - 1];\n if (objectContainsValues(filter, Object.keys(aggregators))) {\n select.having = util_1.default.flatten([replaceAggregatorVariables(filter.expression, aggregators)]);\n result.where.splice(-1);\n }\n }\n context.extend = extend;\n context.group = group;\n context.aggregates = aggregates;\n context.order = order;\n // subqueries need to be in a group, this will be removed again later for the root query\n return { type: 'group', patterns: [select] };\n}\nfunction objectContainsValues(o, vals) {\n if (util_1.default.isSimpleTerm(o))\n return vals.indexOf(translateTerm(o)) >= 0;\n if (Array.isArray(o))\n return o.some(e => objectContainsValues(e, vals));\n if (o === Object(o))\n return Object.keys(o).some(key => objectContainsValues(o[key], vals));\n return vals.indexOf(o) >= 0;\n}\nfunction translateReduced(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].reduced = true;\n return result;\n}\nfunction translateService(op) {\n let patterns = translateOperation(op.input);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return {\n type: 'service',\n // Typings are wrong, name can also be a variable\n name: op.name,\n silent: op.silent,\n patterns\n };\n}\nfunction translateSlice(op) {\n let result = translateOperation(op.input);\n // results can be nested in a group object\n let obj = result;\n if (result.type && result.type === 'group')\n obj = result.patterns[0];\n if (op.start !== 0)\n obj.offset = op.start;\n if (op.length !== undefined)\n obj.limit = op.length;\n return result;\n}\nfunction translateUnion(op) {\n return {\n type: 'union',\n patterns: op.input.map(translateOperation).map(arrayToPattern),\n };\n}\nfunction translateValues(op) {\n // TODO: check if handled correctly when outside of select block\n return {\n type: 'values',\n values: op.bindings.map(binding => {\n let result = {};\n for (let v of op.variables) {\n let s = `?${v.value}`;\n if (binding[s])\n result[s] = binding[s];\n else\n result[s] = undefined;\n }\n return result;\n })\n };\n}\n// PATH COMPONENTS\nfunction translateAlt(path) {\n const mapped = path.input.map(translatePathComponent);\n if (mapped.every(entry => 'pathType' in entry && entry.pathType === '!')) {\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: util_1.default.flatten(mapped.map(entry => entry.items))\n }]\n };\n }\n return {\n type: 'path',\n pathType: '|',\n items: mapped\n };\n}\nfunction translateInv(path) {\n if (path.path.type === types.NPS) {\n const inv = path.path.iris.map((iri) => {\n return {\n type: 'path',\n pathType: '^',\n items: [iri]\n };\n });\n if (inv.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: inv\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: inv\n }]\n };\n }\n return {\n type: 'path',\n pathType: '^',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateLink(path) {\n return path.iri;\n}\nfunction translateNps(path) {\n if (path.iris.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: path.iris\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: path.iris\n }]\n };\n}\nfunction translateOneOrMorePath(path) {\n return {\n type: 'path',\n pathType: '+',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateSeq(path) {\n return {\n type: 'path',\n pathType: '/',\n items: path.input.map(translatePathComponent)\n };\n}\nfunction translateZeroOrMorePath(path) {\n return {\n type: 'path',\n pathType: '*',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateZeroOrOnePath(path) {\n // Typings are missing '?' operator\n return {\n type: 'path',\n // Typings are missing this path\n pathType: '?',\n items: [translatePathComponent(path.path)]\n };\n}\n// UPDATE OPERATIONS\nfunction translateCompositeUpdate(op) {\n const updates = op.updates.map(update => {\n const result = translateOperation(update);\n return result.updates[0];\n });\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateDeleteInsert(op) {\n var _a;\n let where = op.where;\n let use = undefined;\n if (where && where.type === types.FROM) {\n let from = where;\n where = from.input;\n use = { default: from.default, named: from.named };\n }\n const updates = [{\n updateType: 'insertdelete',\n delete: convertUpdatePatterns(op.delete || []),\n insert: convertUpdatePatterns(op.insert || []),\n }];\n // Typings don't support 'using' yet\n if (use)\n updates[0].using = use;\n // corresponds to empty array in SPARQL.js\n if (!where || (where.type === types.BGP && where.patterns.length === 0))\n updates[0].where = [];\n else {\n const graphs = [];\n let result = translateOperation(removeQuadsRecursive(where, graphs));\n if (result.type === 'group')\n updates[0].where = result.patterns;\n else\n updates[0].where = [result];\n // graph might not be applied yet since there was no project\n // this can only happen if there was a single graph\n if (graphs.length > 0) {\n if (graphs.length !== 1)\n throw new Error('This is unexpected and might indicate an error in graph handling for updates.');\n // ignore if default graph\n if (((_a = graphs[0]) === null || _a === void 0 ? void 0 : _a.value) !== '')\n updates[0].where = [{ type: 'graph', patterns: updates[0].where, name: graphs[0] }];\n }\n }\n // not really necessary but can give cleaner looking queries\n if (!op.delete && !op.where) {\n updates[0].updateType = 'insert';\n delete updates[0].delete;\n delete updates[0].where;\n }\n else if (!op.insert && !op.where) {\n delete updates[0].insert;\n delete updates[0].where;\n if (op.delete.some(pattern => pattern.subject.termType === 'Variable' ||\n pattern.predicate.termType === 'Variable' ||\n pattern.object.termType === 'Variable'))\n updates[0].updateType = 'deletewhere';\n else\n updates[0].updateType = 'delete';\n }\n else if (!op.insert && op.where && op.where.type === 'bgp') {\n if ((0, rdf_isomorphic_1.isomorphic)(op.delete, op.where.patterns)) {\n delete updates[0].where;\n updates[0].updateType = 'deletewhere';\n }\n }\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateLoad(op) {\n // Typings are wrong, destiniation is optional\n const updates = [{ type: 'load', silent: Boolean(op.silent), source: op.source }];\n if (op.destination)\n updates[0].destination = op.destination;\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateClear(op) {\n return translateClearCreateDrop(op, 'clear');\n}\nfunction translateCreate(op) {\n return translateClearCreateDrop(op, 'create');\n}\nfunction translateDrop(op) {\n return translateClearCreateDrop(op, 'drop');\n}\nfunction translateClearCreateDrop(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n // Typings are wrong, type is not required, see for example \"clear-drop\" test\n if (op.source === 'DEFAULT')\n updates[0].graph = { default: true };\n else if (op.source === 'NAMED')\n updates[0].graph = { named: true };\n else if (op.source === 'ALL')\n updates[0].graph = { all: true };\n else\n updates[0].graph = { type: 'graph', name: op.source };\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateAdd(op) {\n return translateUpdateGraphShortcut(op, 'add');\n}\nfunction translateMove(op) {\n return translateUpdateGraphShortcut(op, 'move');\n}\nfunction translateCopy(op) {\n return translateUpdateGraphShortcut(op, 'copy');\n}\nfunction translateUpdateGraphShortcut(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n updates[0].source = op.source === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.source };\n updates[0].destination = op.destination === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.destination };\n return { prefixes: {}, type: 'update', updates };\n}\n// similar to removeQuads but more simplified for UPDATEs\nfunction convertUpdatePatterns(patterns) {\n if (!patterns)\n return [];\n const graphs = {};\n patterns.forEach(pattern => {\n const graph = pattern.graph.value;\n if (!graphs[graph])\n graphs[graph] = [];\n graphs[graph].push(pattern);\n });\n return Object.keys(graphs).map(graph => {\n if (graph === '')\n return { type: 'bgp', triples: graphs[graph].map(translatePattern) };\n return { type: 'graph', triples: graphs[graph].map(translatePattern), name: graphs[graph][0].graph };\n });\n}\nfunction removeQuads(op) {\n return removeQuadsRecursive(op, []);\n}\n// remove quads\nfunction removeQuadsRecursive(op, graphs) {\n if (Array.isArray(op))\n return op.map(sub => removeQuadsRecursive(sub, graphs));\n if (!op.type)\n return op;\n // UPDATE operations with Patterns handle graphs a bit differently\n if (op.type === types.DELETE_INSERT)\n return op;\n if ((op.type === types.PATTERN || op.type === types.PATH) && op.graph) {\n graphs.push(op.graph);\n // Remove non-default graphs\n if (op.graph.name !== '')\n return op.type === types.PATTERN ?\n factory.createPattern(op.subject, op.predicate, op.object) :\n factory.createPath(op.subject, op.predicate, op.object);\n return op;\n }\n const result = {};\n const keyGraphs = {}; // unique graph per key\n const globalNames = {}; // track all the unique graph names for the entire Operation\n for (let key of Object.keys(op)) {\n const newGraphs = [];\n result[key] = removeQuadsRecursive(op[key], newGraphs);\n if (newGraphs.length > 0) {\n keyGraphs[key] = newGraphs;\n for (const graph of newGraphs) {\n globalNames[graph.value] = graph;\n }\n }\n }\n const graphNameSet = Object.keys(globalNames);\n if (graphNameSet.length > 0) {\n // We also need to create graph statement if we are at the edge of certain operations\n if (graphNameSet.length === 1 && ![types.PROJECT, types.SERVICE].includes(op.type))\n graphs.push(globalNames[graphNameSet[0]]);\n else if (op.type === types.BGP) {\n // This is the specific case that got changed because of using quads.\n return splitBgpToGraphs(op, keyGraphs.patterns);\n }\n else {\n // multiple graphs (or project), need to create graph objects for them\n for (let key of Object.keys(keyGraphs)) {\n const value = result[key];\n if (Array.isArray(value))\n result[key] = value.map((child, idx) => keyGraphs[key][0].value === '' ? child : factory.createGraph(child, keyGraphs[key][idx]));\n else if (keyGraphs[key][0].value !== '')\n result[key] = factory.createGraph(value, keyGraphs[key][0]);\n }\n }\n }\n return result;\n}\n// `graphs` should be an array of length identical to `op.patterns`, containing the corresponding graph for each triple.\nfunction splitBgpToGraphs(op, graphs) {\n var _a;\n // Split patterns per graph\n const graphPatterns = {};\n for (let i = 0; i < op.patterns.length; ++i) {\n const pattern = op.patterns[i];\n const graphName = graphs[i].value;\n graphPatterns[graphName] = (_a = graphPatterns[graphName]) !== null && _a !== void 0 ? _a : { patterns: [], graph: graphs[i] };\n graphPatterns[graphName].patterns.push(pattern);\n }\n // Create graph objects for every cluster\n let children = [];\n for (const [graphName, { patterns, graph }] of Object.entries(graphPatterns)) {\n const bgp = factory.createBgp(patterns);\n children.push(graphName === '' ? bgp : factory.createGraph(bgp, graph));\n }\n // Join the graph objects\n let join = children[0];\n for (let i = 1; i < children.length; ++i)\n join = factory.createJoin([join, children[i]]);\n return join;\n}\n//# sourceMappingURL=sparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst equal = require(\"fast-deep-equal/es6\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst Parser = require('sparqljs').Parser;\nconst types = Algebra.types;\nlet variables = new Set();\nlet varCount = 0;\nlet useQuads = false;\nlet factory;\n/**\n * Translates the given SPARQL query to SPARQL Algebra.\n * @param sparql - Either a SPARQL string or an object generated by sparql.js\n * @param options - Optional options object. Current options:\n * * dataFactory: The Datafactory used to generate terms. Default @rdfjs/data-model.\n * * quads: Boolean indicating whether triples should be converted to Quads (consumes GRAPH statements). Default false.\n * * prefixes: Pre-defined prefixes for the given query. Default empty.\n * * baseIRI: Base IRI that should be used for the query. Default undefined (throws error if required).\n * @returns {Operation}\n */\nfunction translate(sparql, options) {\n options = options || {};\n factory = new factory_1.default(options.dataFactory);\n let query;\n if (isString(sparql)) {\n let parser = new Parser(options);\n // resets the identifier counter used for blank nodes\n // provides nicer and more consistent output if there are multiple calls\n parser._resetBlanks();\n query = parser.parse(sparql);\n }\n else {\n query = sparql;\n }\n return translateQuery(query, options.quads, options.blankToVariable);\n}\nexports.default = translate;\nfunction translateQuery(sparql, quads, blankToVariable) {\n // this set is filled in during the inScopeVariables call\n variables = new Set();\n varCount = 0;\n useQuads = Boolean(quads);\n // Assume this is an empty query\n if (!sparql.type)\n return factory.createNop();\n if (sparql.type !== 'query' && sparql.type !== 'update')\n throw new Error('Translate only works on complete query or update objects.');\n let res;\n // find ALL variables here to fill `variables` array\n findAllVariables(sparql);\n if (sparql.type === 'query') {\n // group and where are identical, having only 1 makes parsing easier, can be undefined in DESCRIBE\n const group = { type: 'group', patterns: sparql.where || [] };\n res = translateGraphPattern(group);\n res = translateAggregates(sparql, res);\n }\n else if (sparql.type === 'update') {\n res = translateUpdate(sparql);\n }\n if (blankToVariable) {\n res = translateBlankNodesToVariables(res);\n }\n return res;\n}\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isTerm(term) {\n return Boolean(term === null || term === void 0 ? void 0 : term.termType);\n}\n// This is not completely correct but this way we also catch SPARQL.js triples\nfunction isTriple(triple) {\n return triple.subject && triple.predicate && triple.object;\n}\nfunction isVariable(term) {\n return (term === null || term === void 0 ? void 0 : term.termType) === 'Variable';\n}\n// Will be used to make sure new variables don't overlap\nfunction findAllVariables(thingy) {\n if (isTerm(thingy)) {\n if (isVariable(thingy)) {\n // Variables don't store the `?`\n variables.add(`?${thingy.value}`);\n }\n }\n else if (Array.isArray(thingy)) {\n for (const entry of thingy)\n findAllVariables(entry);\n }\n else if (thingy && typeof thingy === 'object') {\n for (let key of Object.keys(thingy)) {\n // Some variables are hidden in keys (specifically for VALUES)\n if (key.startsWith('?')) {\n variables.add(key);\n }\n else if (key.startsWith('$')) {\n variables.add(`?${key.slice(1)}`);\n }\n findAllVariables(thingy[key]);\n }\n }\n}\n// 18.2.1\nfunction inScopeVariables(thingy) {\n let inScope = {};\n if (isTriple(thingy)) {\n // Note that this could both be an actual Quad or a SPARQL.js triple (without graph)\n const result = [\n inScopeVariables(thingy.subject),\n inScopeVariables(thingy.predicate),\n inScopeVariables(thingy.object),\n thingy.graph ? inScopeVariables(thingy.graph) : {}\n ];\n Object.assign(inScope, ...result);\n }\n else if (isTerm(thingy)) {\n if (isVariable(thingy))\n inScope[thingy.value] = thingy;\n }\n else if (thingy.type === 'bgp') {\n // Slightly cheating but this is a subset of what we support so is fine\n const quads = thingy.triples;\n Object.assign(inScope, ...quads.map(inScopeVariables));\n }\n else if (thingy.type === 'path') {\n // A path predicate should not have variables but just iterating so we could theoretically support this\n Object.assign(inScope, ...thingy.items.map(inScopeVariables));\n }\n else if (thingy.type === 'group' || thingy.type === 'union' || thingy.type === 'optional') {\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'service' || thingy.type === 'graph') {\n Object.assign(inScope, inScopeVariables(thingy.name));\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'bind') {\n Object.assign(inScope, inScopeVariables(thingy.variable));\n }\n else if (thingy.type === 'values') {\n if (thingy.values.length > 0) {\n const vars = Object.keys(thingy.values[0]).map(v => factory.createTerm(v));\n Object.assign(inScope, ...vars.map(inScopeVariables));\n }\n }\n else if (thingy.type === 'query') {\n if (thingy.queryType === 'SELECT' || thingy.queryType === 'DESCRIBE') {\n if (thingy.where && thingy.variables.some(util_1.default.isWildcard))\n Object.assign(inScope, ...thingy.where.map(inScopeVariables));\n for (const v of thingy.variables) {\n if (isVariable(v))\n Object.assign(inScope, inScopeVariables(v));\n else if (v.variable)\n Object.assign(inScope, inScopeVariables(v.variable));\n }\n if (thingy.queryType === 'SELECT') {\n if (thingy.group) {\n // Grouping can be a VariableExpression, typings are wrong\n for (const g of thingy.group) {\n if (g.variable)\n Object.assign(inScope, inScopeVariables(g.variable));\n }\n }\n if (thingy.values) {\n const values = { type: 'values', values: thingy.values };\n Object.assign(inScope, inScopeVariables(values));\n }\n }\n }\n }\n return inScope;\n}\nfunction translateGraphPattern(thingy) {\n // 18.2.2.1\n // already done by sparql parser\n // 18.2.2.3\n // 18.2.2.4\n // 18.2.2.5\n // In Sparql.js, a group with a single BGP in it is a single object.\n if (thingy.type === 'bgp') {\n return translateBgp(thingy);\n }\n // 18.2.2.6 - GroupOrUnionGraphPattern\n if (thingy.type === 'union')\n return factory.createUnion(thingy.patterns.map((p) => {\n // sparqljs doesn't always indicate the children are groups\n if (p.type !== 'group')\n p = { type: 'group', patterns: [p] };\n return translateGraphPattern(p);\n }));\n // 18.2.2.6 - GraphGraphPattern\n if (thingy.type === 'graph') {\n // Sparql.js combines the group graph pattern and the graph itself in the same object.\n // We split here so the group graph pattern can be interpreted correctly.\n const group = { type: 'group', patterns: thingy.patterns };\n let result = translateGraphPattern(group);\n // Output depends on if we use quads or not\n if (useQuads)\n result = recurseGraph(result, thingy.name);\n else\n result = factory.createGraph(result, thingy.name);\n return result;\n }\n // 18.2.2.6 - InlineData\n if (thingy.type === 'values')\n return translateInlineData(thingy);\n // 18.2.2.6 - SubSelect\n if (thingy.type === 'query')\n return translateQuery(thingy, useQuads, false);\n if (thingy.type === 'group') {\n // 18.2.2.2\n let filters = [];\n let nonfilters = [];\n for (let pattern of thingy.patterns)\n (pattern.type === 'filter' ? filters : nonfilters).push(pattern);\n // 18.2.2.6 - GroupGraphPattern\n let result = nonfilters.reduce(accumulateGroupGraphPattern, factory.createBgp([]));\n // 18.2.2.7\n let expressions = filters.map(filter => translateExpression(filter.expression));\n if (expressions.length > 0)\n result = factory.createFilter(result, expressions.reduce((acc, exp) => factory.createOperatorExpression('&&', [acc, exp])));\n return result;\n }\n throw new Error(`Unexpected type: ${thingy.type}`);\n}\nfunction translateExpression(exp) {\n if (util_1.default.isSimpleTerm(exp))\n return factory.createTermExpression(exp);\n if (util_1.default.isQuad(exp)) {\n if (util_1.default.hasQuadVariables(exp))\n return factory.createOperatorExpression('triple', [\n translateExpression(exp.subject),\n translateExpression(exp.predicate),\n translateExpression(exp.object),\n ]);\n else\n return factory.createTermExpression(exp);\n }\n if (util_1.default.isWildcard(exp))\n return factory.createWildcardExpression();\n if ('aggregation' in exp)\n return factory.createAggregateExpression(exp.aggregation, translateExpression(exp.expression), Boolean(exp.distinct), exp.separator);\n if ('function' in exp)\n // Outdated typings\n return factory.createNamedExpression(exp.function, exp.args.map(translateExpression));\n if ('operator' in exp) {\n if (exp.operator === 'exists' || exp.operator === 'notexists')\n return factory.createExistenceExpression(exp.operator === 'notexists', translateGraphPattern(exp.args[0]));\n if (exp.operator === 'in' || exp.operator === 'notin')\n exp.args = [exp.args[0]].concat(exp.args[1]); // sparql.js uses 2 arguments with the second one being a list\n return factory.createOperatorExpression(exp.operator, exp.args.map(translateExpression));\n }\n throw new Error(`Unknown expression: ${JSON.stringify(exp)}`);\n}\nfunction translateBgp(thingy) {\n let patterns = [];\n let joins = [];\n for (let t of thingy.triples) {\n if ('pathType' in t.predicate) {\n // translatePath returns a mix of Quads and Paths\n let path = translatePath(t);\n for (let p of path) {\n if (p.type === types.PATH) {\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n patterns = [];\n joins.push(p);\n }\n else\n patterns.push(p);\n }\n }\n else\n patterns.push(translateQuad(t));\n }\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n if (joins.length === 1)\n return joins[0];\n return factory.createJoin(joins);\n}\nfunction translatePath(triple) {\n let sub = triple.subject;\n let pred = translatePathPredicate(triple.predicate);\n let obj = triple.object;\n return simplifyPath(sub, pred, obj);\n}\nfunction translatePathPredicate(predicate) {\n if (util_1.default.isSimpleTerm(predicate)) {\n if (predicate.termType === 'NamedNode')\n return factory.createLink(predicate);\n else\n throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(predicate)}`);\n }\n if (predicate.pathType === '^')\n return factory.createInv(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '!') {\n // negation is either over a single predicate or a list of disjuncted properties\n let normals = [];\n let inverted = [];\n let items;\n if ('pathType' in predicate.items[0] && predicate.items[0].pathType === '|')\n items = predicate.items[0].items; // the | element\n else\n items = predicate.items;\n for (let item of items) {\n if (util_1.default.isSimpleTerm(item))\n normals.push(item);\n else if (item.pathType === '^')\n inverted.push(item.items[0]);\n else\n throw new Error(`Unexpected item: ${JSON.stringify(item)}`);\n }\n // NPS elements do not have the LINK function\n let normalElement = factory.createNps(normals);\n let invertedElement = factory.createInv(factory.createNps(inverted));\n if (inverted.length === 0)\n return normalElement;\n if (normals.length === 0)\n return invertedElement;\n return factory.createAlt([normalElement, invertedElement,]);\n }\n if (predicate.pathType === '/')\n return factory.createSeq(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '|')\n return factory.createAlt(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '*')\n return factory.createZeroOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '+')\n return factory.createOneOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '?')\n return factory.createZeroOrOnePath(translatePathPredicate(predicate.items[0]));\n throw new Error(`Unable to translate path expression ${JSON.stringify(predicate)}`);\n}\nfunction simplifyPath(subject, predicate, object) {\n if (predicate.type === types.LINK)\n return [factory.createPattern(subject, predicate.iri, object)];\n if (predicate.type === types.INV)\n return simplifyPath(object, predicate.path, subject);\n if (predicate.type === types.SEQ) {\n let joiner = subject;\n return util_1.default.flatten(predicate.input.map((subOp, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? object : generateFreshVar();\n const simplifiedPath = simplifyPath(joiner, subOp, nextJoiner);\n if (nextJoiner.termType === 'Variable') {\n joiner = nextJoiner;\n }\n return simplifiedPath;\n }));\n }\n return [factory.createPath(subject, predicate, object)];\n}\nfunction generateFreshVar() {\n let v = `?var${varCount++}`;\n if (variables.has(v))\n return generateFreshVar();\n variables.add(v);\n return factory.createTerm(v);\n}\nfunction translateQuad(quad) {\n if ('pathType' in quad.predicate) {\n throw new Error('Trying to translate property path to quad.');\n }\n // Graphs are needed here\n // TODO: investigate if typings are wrong or if we internally add graphs to these\n return factory.createPattern(quad.subject, quad.predicate, quad.object, quad.graph);\n}\nlet typeVals = Object.values(types);\nfunction recurseGraph(thingy, graph, replacement) {\n if (thingy.type === types.GRAPH) {\n if (replacement) {\n // At this point we would lose track of the replacement which would result in incorrect results\n // This would indicate the library is not being used as intended though\n throw new Error('Recursing through nested GRAPH statements with a replacement is impossible.');\n }\n // In case there were nested GRAPH statements that were not recursed yet for some reason\n thingy = recurseGraph(thingy.input, thingy.name);\n }\n else if (thingy.type === types.SERVICE) {\n // Service blocks are not affected by enclosing GRAPH statements, so nothing is modified in this block.\n // See https://github.com/joachimvh/SPARQLAlgebra.js/pull/104#issuecomment-1838016303\n }\n else if (thingy.type === types.BGP)\n thingy.patterns = thingy.patterns.map(quad => {\n if (replacement) {\n if (quad.subject.equals(graph))\n quad.subject = replacement;\n if (quad.predicate.equals(graph))\n quad.predicate = replacement;\n if (quad.object.equals(graph))\n quad.object = replacement;\n }\n if (quad.graph.termType === 'DefaultGraph')\n quad.graph = graph;\n return quad;\n });\n else if (thingy.type === types.PATH) {\n if (replacement) {\n if (thingy.subject.equals(graph))\n thingy.subject = replacement;\n if (thingy.object.equals(graph))\n thingy.object = replacement;\n }\n if (thingy.graph.termType === 'DefaultGraph')\n thingy.graph = graph;\n }\n // need to replace variables in subqueries should the graph also be a variable of the same name\n // unless the subquery projects that variable\n else if (thingy.type === types.PROJECT && !replacement) {\n if (!thingy.variables.some(v => v.equals(graph)))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n // this can happen if the query extends an expression to the name of the graph\n // since the extend happens here there should be no further occurrences of this name\n // if there are it's the same situation as above\n else if (thingy.type === types.EXTEND && !replacement) {\n if (thingy.variable.equals(graph))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n else {\n for (let key of Object.keys(thingy)) {\n if (Array.isArray(thingy[key]))\n thingy[key] = thingy[key].map((x) => recurseGraph(x, graph, replacement));\n else if (typeVals.indexOf(thingy[key].type) >= 0) // can't do instanceof on an interface\n thingy[key] = recurseGraph(thingy[key], graph, replacement);\n else if (replacement && isVariable(thingy[key]) && thingy[key].equals(graph))\n thingy[key] = replacement;\n }\n }\n return thingy;\n}\nfunction accumulateGroupGraphPattern(G, E) {\n if (E.type === 'optional') {\n // optional input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n if (A.type === types.FILTER) {\n G = factory.createLeftJoin(G, A.input, A.expression);\n }\n else\n G = factory.createLeftJoin(G, A);\n }\n else if (E.type === 'minus') {\n // minus input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n G = factory.createMinus(G, A);\n }\n else if (E.type === 'bind')\n G = factory.createExtend(G, E.variable, translateExpression(E.expression));\n else if (E.type === 'service') {\n // transform to group so childnodes get parsed correctly\n const group = { type: 'group', patterns: E.patterns };\n const A = factory.createService(translateGraphPattern(group), E.name, E.silent);\n G = simplifiedJoin(G, A);\n }\n else {\n const A = translateGraphPattern(E);\n G = simplifiedJoin(G, A);\n }\n return G;\n}\nfunction simplifiedJoin(G, A) {\n // Note: this is more simplification than requested in 18.2.2.8, but no reason not to do it.\n if (G.type === types.BGP && A.type === types.BGP)\n G = factory.createBgp([...G.patterns, ...A.patterns]);\n // 18.2.2.8 (simplification)\n else if (G.type === types.BGP && G.patterns.length === 0)\n G = A;\n else if (A.type === types.BGP && A.patterns.length === 0) { } // do nothing\n else\n G = factory.createJoin([G, A]);\n return G;\n}\nfunction translateInlineData(values) {\n let variables = (values.values.length === 0 ? [] : Object.keys(values.values[0])).map(factory.createTerm.bind(factory));\n let bindings = values.values.map((binding) => {\n let keys = Object.keys(binding);\n keys = keys.filter(k => binding[k] !== undefined);\n let map = {};\n for (let key of keys)\n map[key] = binding[key];\n return map;\n });\n return factory.createValues(variables, bindings);\n}\n// --------------------------------------- AGGREGATES\nfunction translateAggregates(query, res) {\n // Typings for ConstructQuery are wrong and missing several fields so we will cast quite often to SelectQuery to have partial typings\n const select = query;\n // 18.2.4.1\n const E = [];\n const A = {};\n select.variables = select.variables && select.variables.map(val => mapAggregate(val, A));\n select.having = select.having && select.having.map(val => mapAggregate(val, A));\n select.order = select.order && select.order.map(val => mapAggregate(val, A));\n // if there are any aggregates or if we have a groupBy (both result in a GROUP)\n if (select.group || Object.keys(A).length > 0) {\n const aggregates = Object.keys(A).map(v => translateBoundAggregate(A[v], factory.createTerm(v)));\n const vars = [];\n if (select.group) {\n for (const e of select.group) {\n if (util_1.default.isSimpleTerm(e.expression)) {\n vars.push(e.expression); // this will always be a var, otherwise sparql would be invalid\n }\n else {\n // Incorrect typings, e can have a variable, see for example group-variable test in sparql.js\n const v = 'variable' in e ? e.variable : generateFreshVar();\n res = factory.createExtend(res, v, translateExpression(e.expression));\n vars.push(v);\n }\n }\n }\n res = factory.createGroup(res, vars, aggregates);\n }\n // 18.2.4.2\n if (select.having)\n for (let filter of select.having)\n res = factory.createFilter(res, translateExpression(filter));\n // 18.2.4.3\n if (query.values)\n res = factory.createJoin([res, translateInlineData(query)]);\n // 18.2.4.4\n let PV = [];\n if (query.queryType === 'SELECT' || query.queryType === 'DESCRIBE') {\n // Sort variables for consistent output\n if (query.variables.some((e) => e && util_1.default.isWildcard(e)))\n PV = Object.values(inScopeVariables(query))\n .sort((left, right) => left.value.localeCompare(right.value));\n else {\n // Wildcard has been filtered out above\n for (let v of query.variables) {\n // can have non-variables with DESCRIBE\n if (isVariable(v) || !('variable' in v))\n PV.push(v);\n else if (v.variable) // ... AS ?x\n {\n PV.push(v.variable);\n E.push(v);\n }\n }\n }\n }\n // TODO: Jena simplifies by having a list of extends\n for (let v of E)\n res = factory.createExtend(res, v.variable, translateExpression(v.expression));\n // 18.2.5\n // not using toList and toMultiset\n // 18.2.5.1\n if (select.order)\n res = factory.createOrderBy(res, select.order.map((exp) => {\n let result = translateExpression(exp.expression);\n if (exp.descending)\n result = factory.createOperatorExpression('desc', [result]);\n return result;\n }));\n // 18.2.5.2\n // construct does not need a project (select, ask and describe do)\n if (query.queryType === 'SELECT')\n // Named nodes are only possible in a DESCRIBE so this cast is safe\n res = factory.createProject(res, PV);\n // 18.2.5.3\n if (select.distinct)\n res = factory.createDistinct(res);\n // 18.2.5.4\n if (select.reduced)\n res = factory.createReduced(res);\n // NEW: support for ask/construct/describe queries\n if (query.queryType === 'CONSTRUCT')\n res = factory.createConstruct(res, (query.template || []).map(translateQuad));\n else if (query.queryType === 'ASK')\n res = factory.createAsk(res);\n else if (query.queryType === 'DESCRIBE')\n res = factory.createDescribe(res, PV);\n // Slicing needs to happen after construct/describe\n // 18.2.5.5\n if (select.offset || select.limit)\n res = factory.createSlice(res, select.offset || 0, select.limit);\n if (select.from)\n res = factory.createFrom(res, select.from.default, select.from.named);\n return res;\n}\n// rewrites some of the input sparql object to make use of aggregate variables\nfunction mapAggregate(thingy, aggregates) {\n if ('type' in thingy && thingy.type === 'aggregate') {\n let found = false;\n let v;\n for (let key of Object.keys(aggregates)) {\n if (equal(aggregates[key], thingy)) {\n v = factory.createTerm(key);\n found = true;\n break;\n }\n }\n if (!found) {\n v = generateFreshVar();\n aggregates[(0, rdf_string_1.termToString)(v)] = thingy;\n }\n return v;\n }\n // non-aggregate expression\n if ('expression' in thingy && thingy.expression)\n return { ...thingy, expression: mapAggregate(thingy.expression, aggregates) };\n if ('args' in thingy && thingy.args)\n return { ...thingy, args: thingy.args.map(subthingy => mapAggregate(subthingy, aggregates)) };\n // Normal variable/wildcard\n return thingy;\n}\nfunction translateBoundAggregate(thingy, v) {\n if (thingy.type !== 'aggregate' || !thingy.aggregation)\n throw new Error(`Unexpected input: ${JSON.stringify(thingy)}`);\n const A = translateExpression(thingy);\n A.variable = v;\n return A;\n}\nfunction translateUpdate(thingy) {\n if (thingy.updates.length === 1)\n return translateSingleUpdate(thingy.updates[0]);\n return factory.createCompositeUpdate(thingy.updates.map(translateSingleUpdate));\n}\nfunction translateSingleUpdate(thingy) {\n if ('type' in thingy) {\n if (thingy.type === 'load')\n return translateUpdateGraphLoad(thingy);\n if (thingy.type === 'clear' || thingy.type === 'create' || thingy.type === 'drop')\n return translateUpdateGraph(thingy);\n if (thingy.type === 'add' || thingy.type === 'copy' || thingy.type === 'move')\n return translateUpdateGraphShortcut(thingy);\n }\n else if (thingy.updateType === 'insertdelete' || thingy.updateType === 'deletewhere' || thingy.updateType === 'delete' || thingy.updateType === 'insert')\n return translateInsertDelete(thingy);\n throw new Error(`Unknown update type ${JSON.stringify(thingy)}`);\n}\nfunction translateInsertDelete(thingy) {\n if (!useQuads)\n throw new Error('INSERT/DELETE operations are only supported with quads option enabled');\n let deleteTriples = [];\n let insertTriples = [];\n let where;\n if (thingy.delete)\n deleteTriples = util_1.default.flatten(thingy.delete.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.insert)\n insertTriples = util_1.default.flatten(thingy.insert.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.where && thingy.where.length > 0) {\n where = translateGraphPattern({ type: 'group', patterns: thingy.where });\n // Wrong typings, see test \"using\" in Sparql.js\n const use = thingy.using;\n if (use)\n where = factory.createFrom(where, use.default, use.named);\n else if (thingy.graph)\n // This is equivalent\n where = recurseGraph(where, thingy.graph);\n }\n else if (thingy.updateType === 'deletewhere' && deleteTriples.length > 0) {\n where = factory.createBgp(deleteTriples);\n }\n return factory.createDeleteInsert(deleteTriples.length > 0 ? deleteTriples : undefined, insertTriples.length > 0 ? insertTriples : undefined, where);\n}\n// UPDATE parsing will always return quads and have no GRAPH elements\nfunction translateUpdateTriplesBlock(thingy, graph) {\n let currentGraph = graph;\n if (thingy.type === 'graph')\n currentGraph = thingy.name;\n let currentTriples = thingy.triples;\n if (currentGraph)\n currentTriples = currentTriples.map(triple => Object.assign(triple, { graph: currentGraph }));\n return currentTriples.map(translateQuad);\n}\nfunction translateUpdateGraph(thingy) {\n let source;\n if (util_1.default.isSimpleTerm(thingy.graph))\n source = thingy.graph;\n else if (thingy.graph.all)\n source = 'ALL';\n else if (thingy.graph.default)\n source = 'DEFAULT';\n else if (thingy.graph.named)\n source = 'NAMED';\n else\n source = thingy.graph.name;\n switch (thingy.type) {\n case 'clear': return factory.createClear(source, thingy.silent);\n case 'create': return factory.createCreate(source, thingy.silent);\n case 'drop': return factory.createDrop(source, thingy.silent);\n }\n}\nfunction translateUpdateGraphLoad(thingy) {\n return factory.createLoad(thingy.source, thingy.destination, thingy.silent);\n}\nfunction translateUpdateGraphShortcut(thingy) {\n const source = thingy.source.default ? 'DEFAULT' : thingy.source.name;\n const destination = thingy.destination.default ? 'DEFAULT' : thingy.destination.name;\n switch (thingy.type) {\n case 'copy': return factory.createCopy(source, destination, thingy.silent);\n case 'move': return factory.createMove(source, destination, thingy.silent);\n case 'add': return factory.createAdd(source, destination, thingy.silent);\n }\n}\nfunction translateBlankNodesToVariables(res) {\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(variables).reduce((acc, variable) => {\n acc[variable] = true;\n return acc;\n }, {});\n return util_1.default.mapOperation(res, {\n [Algebra.types.DELETE_INSERT]: (op) => {\n // Make sure blank nodes remain in the INSERT block, but do update the WHERE block\n return {\n result: factory.createDeleteInsert(op.delete, op.insert, op.where && translateBlankNodesToVariables(op.where)),\n recurse: false,\n };\n },\n [Algebra.types.PATH]: (op, factory) => {\n return {\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.PATTERN]: (op, factory) => {\n return {\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT]: (op) => {\n // Blank nodes in CONSTRUCT templates must be maintained\n return {\n result: factory.createConstruct(translateBlankNodesToVariables(op.input), op.template),\n recurse: false,\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = util_1.default.createUniqueVariable(term.value, variablesRaw, factory.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n}\n//# sourceMappingURL=sparqlAlgebra.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst algebra_1 = require(\"./algebra\");\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst rdf_terms_1 = require(\"rdf-terms\");\nclass Util {\n /**\n * Flattens an array of arrays to an array.\n * @param arr - Array of arrays\n */\n static flatten(arr) {\n return Array.prototype.concat(...arr).filter(x => x);\n }\n /**\n * Outputs a JSON object corresponding to the input algebra-like.\n */\n static objectify(algebra) {\n if (algebra.termType) {\n if (algebra.termType === 'Quad') {\n return {\n type: 'pattern',\n termType: 'Quad',\n subject: Util.objectify(algebra.subject),\n predicate: Util.objectify(algebra.predicate),\n object: Util.objectify(algebra.object),\n graph: Util.objectify(algebra.graph),\n };\n }\n else {\n let result = { termType: algebra.termType, value: algebra.value };\n if (algebra.language)\n result.language = algebra.language;\n if (algebra.datatype)\n result.datatype = Util.objectify(algebra.datatype);\n return result;\n }\n }\n if (Array.isArray(algebra))\n return algebra.map(e => Util.objectify(e));\n if (algebra === Object(algebra)) {\n let result = {};\n for (let key of Object.keys(algebra))\n result[key] = Util.objectify(algebra[key]);\n return result;\n }\n return algebra;\n }\n /**\n * Detects all in-scope variables.\n * In practice this means iterating through the entire algebra tree, finding all variables,\n * and stopping when a project function is found.\n * @param {Operation} op - Input algebra tree.\n * @returns {Variable[]} - List of unique in-scope variables.\n */\n static inScopeVariables(op) {\n const variables = [];\n function addVariable(v) {\n if (!variables.find(v2 => v.value === v2.value))\n variables.push(v);\n }\n function recurseTerm(quad) {\n if (quad.subject.termType === 'Variable')\n addVariable(quad.subject);\n if (quad.predicate.termType === 'Variable')\n addVariable(quad.predicate);\n if (quad.object.termType === 'Variable')\n addVariable(quad.object);\n if (quad.graph.termType === 'Variable')\n addVariable(quad.graph);\n if (quad.subject.termType === 'Quad')\n recurseTerm(quad.subject);\n if (quad.predicate.termType === 'Quad')\n recurseTerm(quad.predicate);\n if (quad.object.termType === 'Quad')\n recurseTerm(quad.object);\n if (quad.graph.termType === 'Quad')\n recurseTerm(quad.graph);\n }\n // https://www.w3.org/TR/sparql11-query/#variableScope\n Util.recurseOperation(op, {\n [algebra_1.types.EXPRESSION]: (op) => {\n if (op.expressionType === algebra_1.expressionTypes.AGGREGATE && op.variable) {\n addVariable(op.variable);\n }\n return true;\n },\n [algebra_1.types.EXTEND]: (op) => {\n addVariable(op.variable);\n return true;\n },\n [algebra_1.types.GRAPH]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.GROUP]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n [algebra_1.types.PATH]: (op) => {\n if (op.subject.termType === 'Variable')\n addVariable(op.subject);\n if (op.object.termType === 'Variable')\n addVariable(op.object);\n if (op.graph.termType === 'Variable')\n addVariable(op.graph);\n if (op.subject.termType === 'Quad')\n recurseTerm(op.subject);\n if (op.object.termType === 'Quad')\n recurseTerm(op.object);\n if (op.graph.termType === 'Quad')\n recurseTerm(op.graph);\n return true;\n },\n [algebra_1.types.PATTERN]: (op) => {\n recurseTerm(op);\n return true;\n },\n [algebra_1.types.PROJECT]: (op) => {\n op.variables.forEach(addVariable);\n return false;\n },\n [algebra_1.types.SERVICE]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.VALUES]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n });\n return variables;\n }\n /**\n * Recurses through the given algebra tree\n * A map of callback functions can be provided for individual Operation types to gather data.\n * The return value of those callbacks should indicate whether recursion should be applied or not.\n * Making modifications will change the original input object.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation) => boolean } callbacks - A map of required callback Operations.\n */\n static recurseOperation(op, callbacks) {\n let result = op;\n let doRecursion = true;\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n doRecursion = callback(op);\n if (!doRecursion)\n return;\n let recurseOp = (op) => Util.recurseOperation(op, callbacks);\n switch (result.type) {\n case algebra_1.types.ALT:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.ASK:\n recurseOp(result.input);\n break;\n case algebra_1.types.BGP:\n result.patterns.forEach(recurseOp);\n break;\n case algebra_1.types.CONSTRUCT:\n recurseOp(result.input);\n result.template.map(recurseOp);\n break;\n case algebra_1.types.DESCRIBE:\n recurseOp(result.input);\n break;\n case algebra_1.types.DISTINCT:\n recurseOp(result.input);\n break;\n case algebra_1.types.EXPRESSION:\n if (result.expressionType === algebra_1.expressionTypes.EXISTENCE) {\n recurseOp(result.input);\n }\n break;\n case algebra_1.types.EXTEND:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FILTER:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FROM:\n recurseOp(result.input);\n break;\n case algebra_1.types.GRAPH:\n recurseOp(result.input);\n break;\n case algebra_1.types.GROUP:\n recurseOp(result.input);\n result.aggregates.forEach(recurseOp);\n break;\n case algebra_1.types.INV:\n recurseOp(result.path);\n break;\n case algebra_1.types.JOIN:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.LEFT_JOIN:\n result.input.map(recurseOp);\n if (result.expression)\n recurseOp(result.expression);\n break;\n case algebra_1.types.LINK:\n break;\n case algebra_1.types.MINUS:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.NOP:\n break;\n case algebra_1.types.NPS:\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ORDER_BY:\n recurseOp(result.input);\n result.expressions.forEach(recurseOp);\n break;\n case algebra_1.types.PATH:\n recurseOp(result.predicate);\n break;\n case algebra_1.types.PATTERN:\n break;\n case algebra_1.types.PROJECT:\n recurseOp(result.input);\n break;\n case algebra_1.types.REDUCED:\n recurseOp(result.input);\n break;\n case algebra_1.types.SEQ:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.SERVICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.SLICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.UNION:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.VALUES:\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n recurseOp(result.path);\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result.updates.forEach(update => recurseOp(update));\n break;\n case algebra_1.types.DELETE_INSERT:\n if (result.delete)\n result.delete.forEach(pattern => recurseOp(pattern));\n if (result.insert)\n result.insert.forEach(pattern => recurseOp(pattern));\n if (result.where)\n recurseOp(result.where);\n break;\n // all of these only have graph IDs as values\n case algebra_1.types.LOAD: break;\n case algebra_1.types.CLEAR: break;\n case algebra_1.types.CREATE: break;\n case algebra_1.types.DROP: break;\n case algebra_1.types.ADD: break;\n case algebra_1.types.MOVE: break;\n case algebra_1.types.COPY: break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Creates a deep copy of the given Operation.\n * Creates shallow copies of the non-Operation values.\n * A map of callback functions can be provided for individual Operation types\n * to specifically modify the given objects before triggering recursion.\n * The return value of those callbacks should indicate whether recursion should be applied to this returned object or not.\n * @param {Operation} op - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapOperation(op, callbacks, factory) {\n let result = op;\n let doRecursion = true;\n let copyMetadata = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[op.type];\n if (callback) {\n // Not sure how to get typing correct for op here\n const recurseResult = callback(op, factory);\n result = recurseResult.result;\n doRecursion = recurseResult.recurse;\n copyMetadata = recurseResult.copyMetadata !== false;\n }\n let toCopyMetadata;\n if (copyMetadata && (result.metadata || op.metadata)) {\n toCopyMetadata = { ...result.metadata, ...op.metadata };\n }\n if (!doRecursion) {\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n // Several casts here might be wrong though depending on the callbacks output\n switch (result.type) {\n case algebra_1.types.ALT:\n result = factory.createAlt(result.input.map(mapOp));\n break;\n case algebra_1.types.ASK:\n result = factory.createAsk(mapOp(result.input));\n break;\n case algebra_1.types.BGP:\n result = factory.createBgp(result.patterns.map(mapOp));\n break;\n case algebra_1.types.CONSTRUCT:\n result = factory.createConstruct(mapOp(result.input), result.template.map(mapOp));\n break;\n case algebra_1.types.DESCRIBE:\n result = factory.createDescribe(mapOp(result.input), result.terms);\n break;\n case algebra_1.types.DISTINCT:\n result = factory.createDistinct(mapOp(result.input));\n break;\n case algebra_1.types.EXPRESSION:\n result = Util.mapExpression(result, callbacks, factory);\n break;\n case algebra_1.types.EXTEND:\n result = factory.createExtend(mapOp(result.input), result.variable, mapOp(result.expression));\n break;\n case algebra_1.types.FILTER:\n result = factory.createFilter(mapOp(result.input), mapOp(result.expression));\n break;\n case algebra_1.types.FROM:\n result = factory.createFrom(mapOp(result.input), [...result.default], [...result.named]);\n break;\n case algebra_1.types.GRAPH:\n result = factory.createGraph(mapOp(result.input), result.name);\n break;\n case algebra_1.types.GROUP:\n result = factory.createGroup(mapOp(result.input), [].concat(result.variables), result.aggregates.map(mapOp));\n break;\n case algebra_1.types.INV:\n result = factory.createInv(mapOp(result.path));\n break;\n case algebra_1.types.JOIN:\n result = factory.createJoin(result.input.map(mapOp));\n break;\n case algebra_1.types.LEFT_JOIN:\n result = factory.createLeftJoin(mapOp(result.input[0]), mapOp(result.input[1]), result.expression ? mapOp(result.expression) : undefined);\n break;\n case algebra_1.types.LINK:\n result = factory.createLink(result.iri);\n break;\n case algebra_1.types.MINUS:\n result = factory.createMinus(mapOp(result.input[0]), mapOp(result.input[1]));\n break;\n case algebra_1.types.NOP:\n result = factory.createNop();\n break;\n case algebra_1.types.NPS:\n result = factory.createNps([].concat(result.iris));\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n result = factory.createOneOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ORDER_BY:\n result = factory.createOrderBy(mapOp(result.input), result.expressions.map(mapOp));\n break;\n case algebra_1.types.PATH:\n result = factory.createPath(result.subject, mapOp(result.predicate), result.object, result.graph);\n break;\n case algebra_1.types.PATTERN:\n result = factory.createPattern(result.subject, result.predicate, result.object, result.graph);\n break;\n case algebra_1.types.PROJECT:\n result = factory.createProject(mapOp(result.input), [...result.variables]);\n break;\n case algebra_1.types.REDUCED:\n result = factory.createReduced(mapOp(result.input));\n break;\n case algebra_1.types.SEQ:\n result = factory.createSeq(result.input.map(mapOp));\n break;\n case algebra_1.types.SERVICE:\n result = factory.createService(mapOp(result.input), result.name, result.silent);\n break;\n case algebra_1.types.SLICE:\n result = factory.createSlice(mapOp(result.input), result.start, result.length);\n break;\n case algebra_1.types.UNION:\n result = factory.createUnion(result.input.map(mapOp));\n break;\n case algebra_1.types.VALUES:\n result = factory.createValues([].concat(result.variables), result.bindings.map(b => Object.assign({}, b)));\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n result = factory.createZeroOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n result = factory.createZeroOrOnePath(mapOp(result.path));\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result = factory.createCompositeUpdate(result.updates.map(mapOp));\n break;\n case algebra_1.types.DELETE_INSERT:\n result = factory.createDeleteInsert(result.delete ? result.delete.map(mapOp) : undefined, result.insert ? result.insert.map(mapOp) : undefined, result.where ? mapOp(result.where) : undefined);\n break;\n case algebra_1.types.LOAD:\n result = factory.createLoad(result.source, result.destination, result.silent);\n break;\n case algebra_1.types.CLEAR:\n result = factory.createClear(result.source, result.silent);\n break;\n case algebra_1.types.CREATE:\n result = factory.createCreate(result.source, result.silent);\n break;\n case algebra_1.types.DROP:\n result = factory.createDrop(result.source, result.silent);\n break;\n case algebra_1.types.ADD:\n result = factory.createAdd(result.source, result.destination);\n break;\n case algebra_1.types.MOVE:\n result = factory.createMove(result.source, result.destination);\n break;\n case algebra_1.types.COPY:\n result = factory.createCopy(result.source, result.destination);\n break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n /**\n * Similar to the {@link mapOperation} function but specifically for expressions.\n * Both functions call each other while copying.\n * Should not be called directly since it does not execute the callbacks, these happen in {@link mapOperation}.\n * @param {Expression} expr - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapExpression(expr, callbacks, factory) {\n let result = expr;\n let doRecursion = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[expr.expressionType];\n if (callback)\n ({ result, recurse: doRecursion } = callback(expr, factory));\n if (!doRecursion)\n return result;\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n switch (expr.expressionType) {\n case algebra_1.expressionTypes.AGGREGATE:\n if (expr.variable) {\n return factory.createBoundAggregate(expr.variable, expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n }\n return factory.createAggregateExpression(expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n case algebra_1.expressionTypes.EXISTENCE:\n return factory.createExistenceExpression(expr.not, mapOp(expr.input));\n case algebra_1.expressionTypes.NAMED:\n return factory.createNamedExpression(expr.name, expr.args.map(mapOp));\n case algebra_1.expressionTypes.OPERATOR:\n return factory.createOperatorExpression(expr.operator, expr.args.map(mapOp));\n case algebra_1.expressionTypes.TERM:\n return factory.createTermExpression(expr.term);\n case algebra_1.expressionTypes.WILDCARD:\n return factory.createWildcardExpression();\n default: throw new Error(`Unknown Expression type ${expr.expressionType}`);\n }\n }\n /**\n * Creates a deep clone of the operation.\n * This is syntactic sugar for calling {@link mapOperation} without callbacks.\n * @param {Operation} op - The operation to copy.\n * @returns {Operation} - The deep copy.\n */\n static cloneOperation(op) {\n return Util.mapOperation(op, {});\n }\n /**\n * Creates a deep clone of the expression.\n * This is syntactic sugar for calling {@link mapExpression} without callbacks.\n * @param {Expression} expr - The operation to copy.\n * @returns {Expression} - The deep copy.\n */\n static cloneExpression(expr) {\n return Util.mapExpression(expr, {});\n }\n static createUniqueVariable(label, variables, dataFactory) {\n let counter = 0;\n let labelLoop = label;\n while (variables[labelLoop]) {\n labelLoop = `${label}${counter++}`;\n }\n return dataFactory.variable(labelLoop);\n }\n // separate terms from wildcard since we handle them differently\n static isSimpleTerm(term) {\n return term.termType !== undefined && term.termType !== 'Quad' && term.termType !== 'Wildcard';\n }\n static isQuad(term) {\n return term.termType === 'Quad';\n }\n static hasQuadVariables(quad) {\n return (0, rdf_terms_1.someTermsNested)(quad, term => term.termType === 'Variable');\n }\n static isWildcard(term) {\n return term.termType === 'Wildcard';\n }\n}\nexports.default = Util;\n//# sourceMappingURL=util.js.map","\"use strict\";\n/**\n * An asynchronous iterator library for advanced object pipelines\n * @module asynciterator\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIterator = exports.isIterable = exports.isSourceExpression = exports.isPromise = exports.isEventEmitter = exports.isFunction = exports.range = exports.union = exports.fromIterable = exports.fromIterator = exports.fromArray = exports.single = exports.empty = exports.wrap = exports.WrappingIterator = exports.ClonedIterator = exports.UnionIterator = exports.MultiTransformIterator = exports.SimpleTransformIterator = exports.TransformIterator = exports.BufferedIterator = exports.MappingIterator = exports.DESTINATION = exports.identity = exports.IntegerIterator = exports.ArrayIterator = exports.SingletonIterator = exports.EmptyIterator = exports.AsyncIterator = exports.DESTROYED = exports.ENDED = exports.CLOSED = exports.CLOSING = exports.OPEN = exports.INIT = exports.setTaskScheduler = exports.getTaskScheduler = exports.scheduleTask = exports.LinkedList = void 0;\nconst events_1 = require(\"events\");\nconst linkedlist_1 = require(\"./linkedlist.js\");\nObject.defineProperty(exports, \"LinkedList\", { enumerable: true, get: function () { return linkedlist_1.LinkedList; } });\nconst taskscheduler_1 = require(\"./taskscheduler.js\");\nlet taskScheduler = taskscheduler_1.createTaskScheduler();\n/** Schedules the given task for asynchronous execution. */\nfunction scheduleTask(task) {\n taskScheduler(task);\n}\nexports.scheduleTask = scheduleTask;\n/** Returns the asynchronous task scheduler. */\nfunction getTaskScheduler() {\n return taskScheduler;\n}\nexports.getTaskScheduler = getTaskScheduler;\n/** Sets the asynchronous task scheduler. */\nfunction setTaskScheduler(scheduler) {\n taskScheduler = scheduler;\n}\nexports.setTaskScheduler = setTaskScheduler;\n/**\n ID of the INIT state.\n An iterator is initializing if it is preparing main item generation.\n It can already produce items.\n @type integer\n*/\nexports.INIT = 1 << 0;\n/**\n ID of the OPEN state.\n An iterator is open if it can generate new items.\n @type integer\n*/\nexports.OPEN = 1 << 1;\n/**\n ID of the CLOSING state.\n An iterator is closing if item generation is pending but will not be scheduled again.\n @type integer\n*/\nexports.CLOSING = 1 << 2;\n/**\n ID of the CLOSED state.\n An iterator is closed if it no longer actively generates new items.\n Items might still be available.\n @type integer\n*/\nexports.CLOSED = 1 << 3;\n/**\n ID of the ENDED state.\n An iterator has ended if no further items will become available.\n The 'end' event is guaranteed to have been called when in this state.\n @type integer\n*/\nexports.ENDED = 1 << 4;\n/**\n ID of the DESTROYED state.\n An iterator has been destroyed\n after calling {@link module:asynciterator.AsyncIterator#destroy}.\n The 'end' event has not been called, as pending elements were voided.\n @type integer\n*/\nexports.DESTROYED = 1 << 5;\n/**\n An asynchronous iterator provides pull-based access to a stream of objects.\n @extends module:asynciterator.EventEmitter\n*/\nclass AsyncIterator extends events_1.EventEmitter {\n /** Creates a new `AsyncIterator`. */\n constructor(initialState = exports.OPEN) {\n super();\n this._readable = false;\n this._state = initialState;\n this.on('newListener', waitForDataListener);\n }\n /**\n Changes the iterator to the given state if possible and necessary,\n possibly emitting events to signal that change.\n @protected\n @param {integer} newState The ID of the new state\n @param {boolean} [eventAsync=false] Whether resulting events should be emitted asynchronously\n @returns {boolean} Whether the state was changed\n @emits module:asynciterator.AsyncIterator.end\n */\n _changeState(newState, eventAsync = false) {\n // Validate the state change\n const valid = newState > this._state && this._state < exports.ENDED;\n if (valid) {\n this._state = newState;\n // Emit the `end` event when changing to ENDED\n if (newState === exports.ENDED) {\n if (!eventAsync)\n this.emit('end');\n else\n taskScheduler(() => this.emit('end'));\n }\n }\n return valid;\n }\n /**\n Tries to read the next item from the iterator.\n This is the main method for reading the iterator in _on-demand mode_,\n where new items are only created when needed by consumers.\n If no items are currently available, this methods returns `null`.\n The {@link module:asynciterator.event:readable} event\n will then signal when new items might be ready.\n To read all items from the iterator,\n switch to _flow mode_ by subscribing\n to the {@link module:asynciterator.event:data} event.\n When in flow mode, do not use the `read` method.\n @returns {object?} The next item, or `null` if none is available\n */\n read() {\n return null;\n }\n /**\n The iterator emits a `readable` event when it might have new items available\n after having had no items available right before this event.\n If the iterator is not in flow mode, items can be retrieved\n by calling {@link module:asynciterator.AsyncIterator#read}.\n @event module:asynciterator.readable\n */\n /**\n The iterator emits a `data` event with a new item as soon as it becomes available.\n When one or more listeners are attached to the `data` event,\n the iterator switches to _flow mode_,\n generating and emitting new items as fast as possible.\n This drains the source and might create backpressure on the consumers,\n so only subscribe to this event if this behavior is intended.\n In flow mode, don't use {@link module:asynciterator.AsyncIterator#read}.\n To switch back to _on-demand mode_, remove all listeners from the `data` event.\n You can then obtain items through `read` again.\n @event module:asynciterator.data\n @param {object} item The new item\n */\n /**\n Invokes the callback for each remaining item in the iterator.\n Switches the iterator to flow mode.\n @param {Function} callback A function that will be called with each item\n @param {object?} self The `this` pointer for the callback\n */\n forEach(callback, self) {\n this.on('data', bind(callback, self));\n }\n /**\n Stops the iterator from generating new items.\n Already generated items or terminating items can still be emitted.\n After this, the iterator will end asynchronously.\n @emits module:asynciterator.AsyncIterator.end\n */\n close() {\n if (this._changeState(exports.CLOSED))\n this._endAsync();\n }\n /**\n Destroy the iterator and stop it from generating new items.\n This will not do anything if the iterator was already ended or destroyed.\n All internal resources will be released an no new items will be emitted,\n even not already generated items.\n Implementors should not override this method,\n but instead implement {@link module:asynciterator.AsyncIterator#_destroy}.\n @param {Error} [cause] An optional error to emit.\n @emits module:asynciterator.AsyncIterator.end\n @emits module:asynciterator.AsyncIterator.error Only if an error is passed.\n */\n destroy(cause) {\n if (!this.done) {\n this._destroy(cause, error => {\n cause = cause || error;\n if (cause)\n this.emit('error', cause);\n this._end(true);\n });\n }\n }\n /**\n Called by {@link module:asynciterator.AsyncIterator#destroy}.\n Implementers can override this, but this should not be called directly.\n @param {?Error} cause The reason why the iterator is destroyed.\n @param {Function} callback A callback function with an optional error argument.\n */\n _destroy(cause, callback) {\n callback();\n }\n /**\n Ends the iterator and cleans up.\n Should never be called before {@link module:asynciterator.AsyncIterator#close};\n typically, `close` is responsible for calling `_end`.\n @param {boolean} [destroy] If the iterator should be forcefully destroyed.\n @protected\n @emits module:asynciterator.AsyncIterator.end\n */\n _end(destroy = false) {\n if (this._changeState(destroy ? exports.DESTROYED : exports.ENDED)) {\n this._readable = false;\n this.removeAllListeners('readable');\n this.removeAllListeners('data');\n this.removeAllListeners('end');\n }\n }\n /**\n Asynchronously calls `_end`.\n @protected\n */\n _endAsync() {\n taskScheduler(() => this._end());\n }\n /**\n The `end` event is emitted after the last item of the iterator has been read.\n @event module:asynciterator.end\n */\n /**\n Gets or sets whether this iterator might have items available for read.\n A value of `false` means there are _definitely_ no items available;\n a value of `true` means items _might_ be available.\n @type boolean\n @emits module:asynciterator.AsyncIterator.readable\n */\n get readable() {\n return this._readable;\n }\n set readable(readable) {\n readable = Boolean(readable) && !this.done;\n // Set the readable value only if it has changed\n if (this._readable !== readable) {\n this._readable = readable;\n // If the iterator became readable, emit the `readable` event\n if (readable)\n taskScheduler(() => this.emit('readable'));\n }\n }\n /**\n Gets whether the iterator has stopped generating new items.\n @type boolean\n @readonly\n */\n get closed() {\n return this._state >= exports.CLOSING;\n }\n /**\n Gets whether the iterator has finished emitting items.\n @type boolean\n @readonly\n */\n get ended() {\n return this._state === exports.ENDED;\n }\n /**\n Gets whether the iterator has been destroyed.\n @type boolean\n @readonly\n */\n get destroyed() {\n return this._state === exports.DESTROYED;\n }\n /**\n Gets whether the iterator will not emit anymore items,\n either due to being closed or due to being destroyed.\n @type boolean\n @readonly\n */\n get done() {\n return this._state >= exports.ENDED;\n }\n /* Generates a textual representation of the iterator. */\n toString() {\n const details = this._toStringDetails();\n return `[${this.constructor.name}${details ? ` ${details}` : ''}]`;\n }\n /**\n Generates details for a textual representation of the iterator.\n @protected\n */\n _toStringDetails() {\n return '';\n }\n /**\n Consume all remaining items of the iterator into an array that will be returned asynchronously.\n @param {object} [options] Settings for array creation\n @param {integer} [options.limit] The maximum number of items to place in the array.\n */\n toArray(options) {\n const items = [];\n const limit = typeof (options === null || options === void 0 ? void 0 : options.limit) === 'number' ? options.limit : Infinity;\n return this.ended || limit <= 0 ? Promise.resolve(items) : new Promise((resolve, reject) => {\n // Collect and return all items up to the limit\n const resolveItems = () => resolve(items);\n const pushItem = (item) => {\n items.push(item);\n if (items.length >= limit) {\n this.removeListener('error', reject);\n this.removeListener('data', pushItem);\n this.removeListener('end', resolveItems);\n resolve(items);\n }\n };\n // Start item collection\n this.on('error', reject);\n this.on('data', pushItem);\n this.on('end', resolveItems);\n });\n }\n /**\n Retrieves the property with the given name from the iterator.\n If no callback is passed, it returns the value of the property\n or `undefined` if the property is not set.\n If a callback is passed, it returns `undefined`\n and calls the callback with the property the moment it is set.\n @param {string} propertyName The name of the property to retrieve\n @param {Function?} [callback] A one-argument callback to receive the property value\n @returns {object?} The value of the property (if set and no callback is given)\n */\n getProperty(propertyName, callback) {\n const properties = this._properties;\n // If no callback was passed, return the property value\n if (!callback)\n return properties && properties[propertyName];\n // If the value has been set, send it through the callback\n if (properties && (propertyName in properties)) {\n taskScheduler(() => callback(properties[propertyName]));\n }\n // If the value was not set, store the callback for when the value will be set\n else {\n let propertyCallbacks;\n if (!(propertyCallbacks = this._propertyCallbacks))\n this._propertyCallbacks = propertyCallbacks = Object.create(null);\n if (propertyName in propertyCallbacks)\n propertyCallbacks[propertyName].push(callback);\n else\n propertyCallbacks[propertyName] = [callback];\n }\n return undefined;\n }\n /**\n Sets the property with the given name to the value.\n @param {string} propertyName The name of the property to set\n @param {object?} value The new value of the property\n */\n setProperty(propertyName, value) {\n const properties = this._properties || (this._properties = Object.create(null));\n properties[propertyName] = value;\n // Execute getter callbacks that were waiting for this property to be set\n const propertyCallbacks = this._propertyCallbacks || {};\n const callbacks = propertyCallbacks[propertyName];\n if (callbacks) {\n delete propertyCallbacks[propertyName];\n taskScheduler(() => {\n for (const callback of callbacks)\n callback(value);\n });\n // Remove _propertyCallbacks if no pending callbacks are left\n for (propertyName in propertyCallbacks)\n return;\n delete this._propertyCallbacks;\n }\n }\n /**\n Retrieves all properties of the iterator.\n @returns {object} An object with property names as keys.\n */\n getProperties() {\n const properties = this._properties;\n const copy = {};\n for (const name in properties)\n copy[name] = properties[name];\n return copy;\n }\n /**\n Sets all of the given properties.\n @param {object} properties Key/value pairs of properties to set\n */\n setProperties(properties) {\n for (const propertyName in properties)\n this.setProperty(propertyName, properties[propertyName]);\n }\n /**\n Copies the given properties from the source iterator.\n @param {module:asynciterator.AsyncIterator} source The iterator to copy from\n @param {Array} propertyNames List of property names to copy\n */\n copyProperties(source, propertyNames) {\n for (const propertyName of propertyNames) {\n source.getProperty(propertyName, value => this.setProperty(propertyName, value));\n }\n }\n /**\n Transforms items from this iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n @returns {module:asynciterator.AsyncIterator} A new iterator that maps the items from this iterator\n */\n transform(options) {\n return new SimpleTransformIterator(this, options);\n }\n /**\n Maps items from this iterator using the given function.\n After this operation, only read the returned iterator instead of the current one.\n @param {Function} map A mapping function to call on this iterator's (remaining) items\n @param {object?} self The `this` pointer for the mapping function\n @returns {module:asynciterator.AsyncIterator} A new iterator that maps the items from this iterator\n */\n map(map, self) {\n return new MappingIterator(this, bind(map, self));\n }\n filter(filter, self) {\n return this.map(function (item) {\n return filter.call(self || this, item) ? item : null;\n });\n }\n /**\n * Returns a new iterator containing all of the unique items in the original iterator.\n * @param by - The derived value by which to determine uniqueness (e.g., stringification).\n Defaults to the identity function.\n * @returns An iterator with duplicates filtered out.\n */\n uniq(by = identity) {\n const uniques = new Set();\n return this.filter(function (item) {\n const hashed = by.call(this, item);\n if (!uniques.has(hashed)) {\n uniques.add(hashed);\n return true;\n }\n return false;\n });\n }\n /**\n Prepends the items after those of the current iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} items Items to insert before this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that prepends items to this iterator\n */\n prepend(items) {\n return this.transform({ prepend: items });\n }\n /**\n Appends the items after those of the current iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} items Items to insert after this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that appends items to this iterator\n */\n append(items) {\n return this.transform({ append: items });\n }\n /**\n Surrounds items of the current iterator with the given items.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} prepend Items to insert before this iterator's (remaining) items\n @param {Array|module:asynciterator.AsyncIterator} append Items to insert after this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that appends and prepends items to this iterator\n */\n surround(prepend, append) {\n return this.transform({ prepend, append });\n }\n /**\n Skips the given number of items from the current iterator.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} offset The number of items to skip\n @returns {module:asynciterator.AsyncIterator} A new iterator that skips the given number of items\n */\n skip(offset) {\n return this.map(item => offset-- > 0 ? null : item);\n }\n /**\n Limits the current iterator to the given number of items.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} limit The maximum number of items\n @returns {module:asynciterator.AsyncIterator} A new iterator with at most the given number of items\n */\n take(limit) {\n return this.transform({ limit });\n }\n /**\n Limits the current iterator to the given range.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} start Index of the first item to return\n @param {integer} end Index of the last item to return\n @returns {module:asynciterator.AsyncIterator} A new iterator with items in the given range\n */\n range(start, end) {\n return this.transform({ offset: start, limit: Math.max(end - start + 1, 0) });\n }\n /**\n Creates a copy of the current iterator,\n containing all items emitted from this point onward.\n Further copies can be created; they will all start from this same point.\n After this operation, only read the returned copies instead of the original iterator.\n @returns {module:asynciterator.AsyncIterator} A new iterator that contains all future items of this iterator\n */\n clone() {\n return new ClonedIterator(this);\n }\n /**\n * An AsyncIterator is async iterable.\n * This allows iterators to be used via the for-await syntax.\n *\n * In cases where the returned EcmaScript AsyncIterator will not be fully consumed,\n * it is recommended to manually listen for error events on the main AsyncIterator\n * to avoid uncaught error messages.\n *\n * @returns {ESAsyncIterator} An EcmaScript AsyncIterator\n */\n [Symbol.asyncIterator]() {\n const it = this;\n let currentResolve = null;\n let currentReject = null;\n let pendingError = null;\n it.addListener('readable', tryResolve);\n it.addListener('end', tryResolve);\n it.addListener('error', tryReject);\n // Tries to emit an item or signal the end of the iterator\n function tryResolve() {\n if (currentResolve !== null) {\n if (pendingError !== null) {\n tryReject(pendingError);\n }\n else if (it.done) {\n currentResolve({ done: true, value: undefined });\n currentResolve = currentReject = null;\n removeListeners();\n }\n else {\n const value = it.read();\n if (value !== null) {\n currentResolve({ done: false, value });\n currentResolve = currentReject = null;\n }\n }\n }\n }\n // Tries to emit an error\n function tryReject(error) {\n if (currentReject !== null) {\n currentReject(error);\n currentResolve = currentReject = pendingError = null;\n removeListeners();\n }\n else if (pendingError === null) {\n pendingError = error;\n }\n }\n // Cleans up all attached listeners\n function removeListeners() {\n it.removeListener('readable', tryResolve);\n it.removeListener('end', tryResolve);\n it.removeListener('error', tryReject);\n }\n // An EcmaScript AsyncIterator exposes the next() function that can be invoked repeatedly\n return {\n next() {\n return new Promise((resolve, reject) => {\n currentResolve = resolve;\n currentReject = reject;\n tryResolve();\n });\n },\n };\n }\n}\nexports.AsyncIterator = AsyncIterator;\n// Starts emitting `data` events when `data` listeners are added\nfunction waitForDataListener(eventName) {\n if (eventName === 'data') {\n this.removeListener('newListener', waitForDataListener);\n addSingleListener(this, 'readable', emitData);\n if (this.readable)\n taskScheduler(() => emitData.call(this));\n }\n}\n// Emits new items though `data` events as long as there are `data` listeners\nfunction emitData() {\n // While there are `data` listeners and items, emit them\n let item;\n while (this.listenerCount('data') !== 0 && (item = this.read()) !== null)\n this.emit('data', item);\n // Stop draining the source if there are no more `data` listeners\n if (this.listenerCount('data') === 0 && !this.done) {\n this.removeListener('readable', emitData);\n addSingleListener(this, 'newListener', waitForDataListener);\n }\n}\n// Adds the listener to the event, if it has not been added previously.\nfunction addSingleListener(source, eventName, listener) {\n if (!source.listeners(eventName).includes(listener))\n source.on(eventName, listener);\n}\n/**\n An iterator that doesn't emit any items.\n @extends module:asynciterator.AsyncIterator\n*/\nclass EmptyIterator extends AsyncIterator {\n /** Creates a new `EmptyIterator`. */\n constructor() {\n super();\n this._changeState(exports.ENDED, true);\n }\n}\nexports.EmptyIterator = EmptyIterator;\n/**\n An iterator that emits a single item.\n @extends module:asynciterator.AsyncIterator\n*/\nclass SingletonIterator extends AsyncIterator {\n /**\n Creates a new `SingletonIterator`.\n @param {object} item The item that will be emitted.\n */\n constructor(item) {\n super();\n this._item = item;\n if (item === null)\n this.close();\n else\n this.readable = true;\n }\n /* Reads the item from the iterator. */\n read() {\n const item = this._item;\n this._item = null;\n this.close();\n return item;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return this._item === null ? '' : `(${this._item})`;\n }\n}\nexports.SingletonIterator = SingletonIterator;\n/**\n An iterator that emits the items of a given array.\n @extends module:asynciterator.AsyncIterator\n*/\nclass ArrayIterator extends AsyncIterator {\n /**\n Creates a new `ArrayIterator`.\n @param {Array} items The items that will be emitted.\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {boolean} [options.preserve=true] If false, the passed array can be safely modified\n */\n constructor(items = [], { autoStart = true, preserve = true } = {}) {\n super();\n const buffer = preserve || !Array.isArray(items) ? [...items] : items;\n this._index = 0;\n this._sourceStarted = autoStart !== false;\n this._truncateThreshold = preserve ? -1 : 64;\n if (this._sourceStarted && buffer.length === 0)\n this.close();\n else\n this._buffer = buffer;\n this.readable = true;\n }\n /* Reads an item from the iterator. */\n read() {\n if (!this._sourceStarted)\n this._sourceStarted = true;\n let item = null;\n if (this._buffer) {\n // Emit the current item\n if (this._index < this._buffer.length)\n item = this._buffer[this._index++];\n // Close when all elements have been returned\n if (this._index === this._buffer.length) {\n delete this._buffer;\n this.close();\n }\n // Do need keep old items around indefinitely\n else if (this._index === this._truncateThreshold) {\n this._buffer.splice(0, this._truncateThreshold);\n this._index = 0;\n }\n }\n return item;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `(${this._buffer ? this._buffer.length - this._index : 0})`;\n }\n /* Called by {@link module:asynciterator.AsyncIterator#destroy} */\n _destroy(cause, callback) {\n delete this._buffer;\n callback();\n }\n /**\n Consume all remaining items of the iterator into an array that will be returned asynchronously.\n @param {object} [options] Settings for array creation\n @param {integer} [options.limit] The maximum number of items to place in the array.\n */\n toArray(options = {}) {\n if (!this._buffer)\n return Promise.resolve([]);\n // Determine start and end index\n const { length } = this._buffer;\n const start = this._index;\n const end = typeof options.limit !== 'number' ? length : start + options.limit;\n // Slice the items off the buffer\n const items = this._buffer.slice(start, end);\n this._index = end;\n // Close this iterator when we're past the end\n if (end >= length)\n this.close();\n return Promise.resolve(items);\n }\n}\nexports.ArrayIterator = ArrayIterator;\n/**\n An iterator that enumerates integers in a certain range.\n @extends module:asynciterator.AsyncIterator\n*/\nclass IntegerIterator extends AsyncIterator {\n /**\n Creates a new `IntegerIterator`.\n @param {object} [options] Settings of the iterator\n @param {integer} [options.start=0] The first number to emit\n @param {integer} [options.end=Infinity] The last number to emit\n @param {integer} [options.step=1] The increment between two numbers\n */\n constructor({ start = 0, step = 1, end } = {}) {\n super();\n // Determine the first number\n if (Number.isFinite(start))\n start = Math.trunc(start);\n this._next = start;\n // Determine step size\n if (Number.isFinite(step))\n step = Math.trunc(step);\n this._step = step;\n // Determine the last number\n const ascending = step >= 0;\n const direction = ascending ? Infinity : -Infinity;\n if (Number.isFinite(end))\n end = Math.trunc(end);\n else if (end !== -direction)\n end = direction;\n this._last = end;\n // Start iteration if there is at least one item; close otherwise\n if (!Number.isFinite(start) || (ascending ? start > end : start < end))\n this.close();\n else\n this.readable = true;\n }\n /* Reads an item from the iterator. */\n read() {\n if (this.closed)\n return null;\n const current = this._next, step = this._step, last = this._last, next = this._next += step;\n if (step >= 0 ? next > last : next < last)\n this.close();\n return current;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `(${this._next}...${this._last})`;\n }\n}\nexports.IntegerIterator = IntegerIterator;\n/** Function that maps an element to itself. */\nfunction identity(item) {\n return item;\n}\nexports.identity = identity;\n/** Key indicating the current consumer of a source. */\nexports.DESTINATION = Symbol('destination');\n/**\n An iterator that synchronously transforms every item from its source\n by applying a mapping function.\n @extends module:asynciterator.AsyncIterator\n*/\nclass MappingIterator extends AsyncIterator {\n /**\n * Applies the given mapping to the source iterator.\n */\n constructor(source, map = identity, options = {}) {\n super();\n this._map = map;\n this._source = ensureSourceAvailable(source);\n this._destroySource = options.destroySource !== false;\n // Close if the source is already empty\n if (source.done) {\n this.close();\n }\n // Otherwise, wire up the source for reading\n else {\n this._source[exports.DESTINATION] = this;\n this._source.on('end', destinationClose);\n this._source.on('error', destinationEmitError);\n this._source.on('readable', destinationSetReadable);\n this.readable = this._source.readable;\n }\n }\n /* Tries to read the next item from the iterator. */\n read() {\n if (!this.done) {\n // Try to read an item that maps to a non-null value\n if (this._source.readable) {\n let item, mapped;\n while ((item = this._source.read()) !== null) {\n if ((mapped = this._map(item)) !== null)\n return mapped;\n }\n }\n this.readable = false;\n // Close this iterator if the source is empty\n if (this._source.done)\n this.close();\n }\n return null;\n }\n /* Cleans up the source iterator and ends. */\n _end(destroy) {\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[exports.DESTINATION];\n if (this._destroySource)\n this._source.destroy();\n super._end(destroy);\n }\n}\nexports.MappingIterator = MappingIterator;\n// Validates an AsyncIterator for use as a source within another AsyncIterator\nfunction ensureSourceAvailable(source, allowDestination = false) {\n if (!source || !isFunction(source.read) || !isFunction(source.on))\n throw new TypeError(`Invalid source: ${source}`);\n if (!allowDestination && source[exports.DESTINATION])\n throw new Error('The source already has a destination');\n return source;\n}\n/**\n An iterator that maintains an internal buffer of items.\n This class serves as a base class for other iterators\n with a typically complex item generation process.\n @extends module:asynciterator.AsyncIterator\n*/\nclass BufferedIterator extends AsyncIterator {\n /**\n Creates a new `BufferedIterator`.\n @param {object} [options] Settings of the iterator\n @param {integer} [options.maxBufferSize=4] The number of items to preload in the internal buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n */\n constructor({ maxBufferSize = 4, autoStart = true } = {}) {\n super(exports.INIT);\n this._buffer = new linkedlist_1.LinkedList();\n this._maxBufferSize = 4;\n this._reading = true;\n this._pushedCount = 0;\n this.maxBufferSize = maxBufferSize;\n taskScheduler(() => this._init(autoStart));\n this._sourceStarted = autoStart !== false;\n }\n /**\n The maximum number of items to preload in the internal buffer.\n A `BufferedIterator` tries to fill its buffer as far as possible.\n Set to `Infinity` to fully drain the source.\n @type number\n */\n get maxBufferSize() {\n return this._maxBufferSize;\n }\n set maxBufferSize(maxBufferSize) {\n // Allow only positive integers and infinity\n if (maxBufferSize !== Infinity) {\n maxBufferSize = !Number.isFinite(maxBufferSize) ? 4 :\n Math.max(Math.trunc(maxBufferSize), 1);\n }\n // Only set the maximum buffer size if it changes\n if (this._maxBufferSize !== maxBufferSize) {\n this._maxBufferSize = maxBufferSize;\n // Ensure sufficient elements are buffered\n if (this._state === exports.OPEN)\n this._fillBuffer();\n }\n }\n /**\n Initializing the iterator by calling {@link BufferedIterator#_begin}\n and changing state from INIT to OPEN.\n @protected\n @param {boolean} autoStart Whether reading of items should immediately start after OPEN.\n */\n _init(autoStart) {\n // Perform initialization tasks\n let doneCalled = false;\n this._reading = true;\n this._begin(() => {\n if (doneCalled)\n throw new Error('done callback called multiple times');\n doneCalled = true;\n // Open the iterator and start buffering\n this._reading = false;\n this._changeState(exports.OPEN);\n if (autoStart)\n this._fillBufferAsync();\n // If reading should not start automatically, the iterator doesn't become readable.\n // Therefore, mark the iterator as (potentially) readable so consumers know it might be read.\n else\n this.readable = true;\n });\n }\n /**\n Writes beginning items and opens iterator resources.\n Should never be called before {@link BufferedIterator#_init};\n typically, `_init` is responsible for calling `_begin`.\n @protected\n @param {function} done To be called when initialization is complete\n */\n _begin(done) {\n done();\n }\n /**\n Tries to read the next item from the iterator.\n If the buffer is empty,\n this method calls {@link BufferedIterator#_read} to fetch items.\n @returns {object?} The next item, or `null` if none is available\n */\n read() {\n if (this.done)\n return null;\n // An explicit read kickstarts the source\n if (!this._sourceStarted)\n this._sourceStarted = true;\n // Try to retrieve an item from the buffer\n const buffer = this._buffer;\n let item;\n if (buffer.empty) {\n item = null;\n this.readable = false;\n }\n else {\n item = buffer.shift();\n }\n // If the buffer is becoming empty, either fill it or end the iterator\n if (!this._reading && buffer.length < this._maxBufferSize) {\n // If the iterator is not closed and thus may still generate new items, fill the buffer\n if (!this.closed)\n this._fillBufferAsync();\n // No new items will be generated, so if none are buffered, the iterator ends here\n else if (buffer.empty)\n this._endAsync();\n }\n return item;\n }\n /**\n Tries to generate the given number of items.\n Implementers should add `count` items through {@link BufferedIterator#_push}.\n @protected\n @param {integer} count The number of items to generate\n @param {function} done To be called when reading is complete\n */\n _read(count, done) {\n done();\n }\n /**\n Adds an item to the internal buffer.\n @protected\n @param {object} item The item to add\n @emits module:asynciterator.AsyncIterator.readable\n */\n _push(item) {\n if (!this.done) {\n this._pushedCount++;\n this._buffer.push(item);\n this.readable = true;\n }\n }\n /**\n Fills the internal buffer until `this._maxBufferSize` items are present.\n This method calls {@link BufferedIterator#_read} to fetch items.\n @protected\n @emits module:asynciterator.AsyncIterator.readable\n */\n _fillBuffer() {\n let neededItems;\n // Avoid recursive reads\n if (this._reading) {\n // Do nothing\n }\n // If iterator closing started in the meantime, don't generate new items anymore\n else if (this.closed) {\n this._completeClose();\n }\n // Otherwise, try to fill empty spaces in the buffer by generating new items\n else if ((neededItems = Math.min(this._maxBufferSize - this._buffer.length, 128)) > 0) {\n // Acquire reading lock and start reading, counting pushed items\n this._pushedCount = 0;\n this._reading = true;\n this._read(neededItems, () => {\n // Verify the callback is only called once\n if (!neededItems)\n throw new Error('done callback called multiple times');\n neededItems = 0;\n // Release reading lock\n this._reading = false;\n // If the iterator was closed while reading, complete closing\n if (this.closed) {\n this._completeClose();\n }\n // If the iterator pushed one or more items,\n // it might currently be able to generate additional items\n // (even though all pushed items might already have been read)\n else if (this._pushedCount) {\n this.readable = true;\n // If the buffer is insufficiently full, continue filling\n if (this._buffer.length < this._maxBufferSize / 2)\n this._fillBufferAsync();\n }\n });\n }\n }\n /**\n Schedules `_fillBuffer` asynchronously.\n */\n _fillBufferAsync() {\n // Acquire reading lock to avoid recursive reads\n if (!this._reading) {\n this._reading = true;\n taskScheduler(() => {\n // Release reading lock so _fillBuffer` can take it\n this._reading = false;\n this._fillBuffer();\n });\n }\n }\n /**\n Stops the iterator from generating new items\n after a possible pending read operation has finished.\n Already generated, pending, or terminating items can still be emitted.\n After this, the iterator will end asynchronously.\n @emits module:asynciterator.AsyncIterator.end\n */\n close() {\n // If the iterator is not currently reading, we can close immediately\n if (!this._reading)\n this._completeClose();\n // Closing cannot complete when reading, so temporarily assume CLOSING state\n // `_fillBuffer` becomes responsible for calling `_completeClose`\n else\n this._changeState(exports.CLOSING);\n }\n /**\n Stops the iterator from generating new items,\n switching from `CLOSING` state into `CLOSED` state.\n @protected\n @emits module:asynciterator.AsyncIterator.end\n */\n _completeClose() {\n if (this._changeState(exports.CLOSED)) {\n // Write possible terminating items\n this._reading = true;\n this._flush(() => {\n if (!this._reading)\n throw new Error('done callback called multiple times');\n this._reading = false;\n // If no items are left, end the iterator\n // Otherwise, `read` becomes responsible for ending the iterator\n if (this._buffer.empty)\n this._endAsync();\n });\n }\n }\n /* Called by {@link module:asynciterator.AsyncIterator#destroy} */\n _destroy(cause, callback) {\n this._buffer.clear();\n callback();\n }\n /**\n Writes terminating items and closes iterator resources.\n Should never be called before {@link BufferedIterator#close};\n typically, `close` is responsible for calling `_flush`.\n @protected\n @param {function} done To be called when termination is complete\n */\n _flush(done) {\n done();\n }\n /**\n Generates details for a textual representation of the iterator.\n @protected\n */\n _toStringDetails() {\n const buffer = this._buffer;\n return `{${buffer.empty ? '' : `next: ${buffer.first}, `}buffer: ${buffer.length}}`;\n }\n}\nexports.BufferedIterator = BufferedIterator;\n/**\n An iterator that generates items based on a source iterator.\n This class serves as a base class for other iterators.\n @extends module:asynciterator.BufferedIterator\n*/\nclass TransformIterator extends BufferedIterator {\n /**\n Creates a new `TransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object} [options] Settings of the iterator\n @param {integer} [options.maxBufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its transformation yields no items\n @param {boolean} [options.destroySource=true] Whether the source should be destroyed when this transformed iterator is closed or destroyed\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n */\n constructor(source, options = source || {}) {\n super(options);\n this._boundPush = (item) => this._push(item);\n // Shift parameters if needed\n if (!isSourceExpression(source))\n source = options.source;\n // The passed source is an AsyncIterator or readable stream\n if (isEventEmitter(source)) {\n this.source = source;\n }\n // The passed value is a promise or source creation function\n else if (source) {\n this._createSource = isPromise(source) ? () => source : source;\n if (this._sourceStarted)\n this._loadSourceAsync();\n }\n // Set other options\n this._optional = Boolean(options.optional);\n this._destroySource = options.destroySource !== false;\n }\n /**\n The source this iterator generates items from.\n @type module:asynciterator.AsyncIterator\n */\n get source() {\n if (isFunction(this._createSource))\n this._loadSourceAsync();\n return this._source;\n }\n set source(value) {\n // Validate and set source\n const source = this._source = this._validateSource(value);\n source[exports.DESTINATION] = this;\n // Do not read the source if this iterator already ended\n if (this.done) {\n if (this._destroySource)\n source.destroy();\n }\n // Close this iterator if the source already ended\n else if (source.done) {\n this.close();\n }\n // Otherwise, react to source events\n else {\n source.on('end', destinationCloseWhenDone);\n source.on('readable', destinationFillBuffer);\n source.on('error', destinationEmitError);\n }\n }\n /**\n Initializes a source that was set through a promise\n @protected\n */\n _loadSourceAsync() {\n if (isFunction(this._createSource)) {\n // Assign the source after resolving\n Promise.resolve(this._createSource()).then(source => {\n delete this._createSource;\n this.source = source;\n this._fillBuffer();\n }, error => this.emit('error', error));\n // Signal that source creation is pending\n this._createSource = null;\n }\n }\n /**\n Validates whether the given iterator can be used as a source.\n @protected\n @param {object} source The source to validate\n @param {boolean} allowDestination Whether the source can already have a destination\n */\n _validateSource(source, allowDestination = false) {\n if (this._source || typeof this._createSource !== 'undefined')\n throw new Error('The source cannot be changed after it has been set');\n return ensureSourceAvailable(source, allowDestination);\n }\n /**\n Tries to read transformed items.\n */\n _read(count, done) {\n const next = () => {\n // Continue transforming until at least `count` items have been pushed\n if (this._pushedCount < count && !this.closed)\n taskScheduler(() => this._readAndTransform(next, done));\n else\n done();\n };\n this._readAndTransform(next, done);\n }\n /**\n Reads a transforms an item\n */\n _readAndTransform(next, done) {\n // If the source exists and still can read items,\n // try to read and transform the next item.\n let item;\n const source = this.source;\n if (!source || source.done || (item = source.read()) === null)\n done();\n else if (!this._optional)\n this._transform(item, next, this._boundPush);\n else\n this._optionalTransform(item, next);\n }\n /**\n Tries to transform the item;\n if the transformation yields no items, pushes the original item.\n */\n _optionalTransform(item, done) {\n const pushedCount = this._pushedCount;\n this._transform(item, () => {\n if (pushedCount === this._pushedCount)\n this._push(item);\n done();\n }, this._boundPush);\n }\n /**\n Generates items based on the item from the source.\n Implementers should add items through {@link BufferedIterator#_push}.\n The default implementation pushes the source item as-is.\n @protected\n @param {object} item The last read item from the source\n @param {function} done To be called when reading is complete\n @param {function} push A callback to push zero or more transformation results.\n */\n _transform(item, done, push) {\n push(item);\n done();\n }\n /**\n Closes the iterator when pending items are transformed.\n @protected\n */\n _closeWhenDone() {\n this.close();\n }\n /* Cleans up the source iterator and ends. */\n _end(destroy) {\n const source = this._source;\n if (source) {\n source.removeListener('end', destinationCloseWhenDone);\n source.removeListener('error', destinationEmitError);\n source.removeListener('readable', destinationFillBuffer);\n delete source[exports.DESTINATION];\n if (this._destroySource)\n source.destroy();\n }\n super._end(destroy);\n }\n}\nexports.TransformIterator = TransformIterator;\nfunction destinationSetReadable() {\n this[exports.DESTINATION].readable = true;\n}\nfunction destinationEmitError(error) {\n this[exports.DESTINATION].emit('error', error);\n}\nfunction destinationClose() {\n this[exports.DESTINATION].close();\n}\nfunction destinationCloseWhenDone() {\n this[exports.DESTINATION]._closeWhenDone();\n}\nfunction destinationFillBuffer() {\n if (this[exports.DESTINATION]._sourceStarted !== false)\n this[exports.DESTINATION]._fillBuffer();\n}\n/**\n An iterator that generates items based on a source iterator\n and simple transformation steps passed as arguments.\n @extends module:asynciterator.TransformIterator\n*/\nclass SimpleTransformIterator extends TransformIterator {\n /**\n Creates a new `SimpleTransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n */\n constructor(source, options) {\n super(source, options);\n this._offset = 0;\n this._limit = Infinity;\n this._filter = (item) => true;\n // Set transformation steps from the options\n options = options || (!isSourceExpression(source) ? source : null);\n if (options) {\n const transform = isFunction(options) ? options : options.transform;\n const { limit, offset, filter, map, prepend, append } = options;\n // Don't emit any items when bounds are unreachable\n if (offset === Infinity || limit === -Infinity) {\n this._limit = 0;\n }\n else {\n if (Number.isFinite(offset))\n this._offset = Math.max(Math.trunc(offset), 0);\n if (Number.isFinite(limit))\n this._limit = Math.max(Math.trunc(limit), 0);\n if (isFunction(filter))\n this._filter = filter;\n if (isFunction(map))\n this._map = map;\n this._transform = isFunction(transform) ? transform : null;\n }\n if (prepend)\n this._prepender = isEventEmitter(prepend) ? prepend : fromArray(prepend);\n if (append)\n this._appender = isEventEmitter(append) ? append : fromArray(append);\n }\n }\n /* Tries to read and transform items */\n _read(count, done) {\n const next = () => this._readAndTransformSimple(count, nextAsync, done);\n this._readAndTransformSimple(count, nextAsync, done);\n function nextAsync() {\n taskScheduler(next);\n }\n }\n /* Reads and transform items */\n _readAndTransformSimple(count, next, done) {\n // Verify we have a readable source\n let item;\n const { source } = this;\n if (!source || source.done) {\n done();\n return;\n }\n // Verify we are still below the limit\n if (this._limit === 0)\n this.close();\n // Try to read the next item until at least `count` items have been pushed\n while (!this.closed && this._pushedCount < count && (item = source.read()) !== null) {\n // Verify the item passes the filter and we've reached the offset\n if (!this._filter(item) || this._offset !== 0 && this._offset--)\n continue;\n // Synchronously map the item\n const mappedItem = typeof this._map === 'undefined' ? item : this._map(item);\n // Skip `null` items, pushing the original item if the mapping was optional\n if (mappedItem === null) {\n if (this._optional)\n this._push(item);\n }\n // Skip the asynchronous phase if no transformation was specified\n else if (!isFunction(this._transform)) {\n this._push(mappedItem);\n }\n // Asynchronously transform the item, and wait for `next` to call back\n else {\n if (!this._optional)\n this._transform(mappedItem, next, this._boundPush);\n else\n this._optionalTransform(mappedItem, next);\n return;\n }\n // Stop when we've reached the limit\n if (--this._limit === 0)\n this.close();\n }\n done();\n }\n // Prepends items to the iterator\n _begin(done) {\n this._insert(this._prepender, done);\n delete this._prepender;\n }\n // Appends items to the iterator\n _flush(done) {\n this._insert(this._appender, done);\n delete this._appender;\n }\n // Inserts items in the iterator\n _insert(inserter, done) {\n const push = (item) => this._push(item);\n if (!inserter || inserter.done) {\n done();\n }\n else {\n inserter.on('data', push);\n inserter.on('end', end);\n }\n function end() {\n inserter.removeListener('data', push);\n inserter.removeListener('end', end);\n done();\n }\n }\n}\nexports.SimpleTransformIterator = SimpleTransformIterator;\n/**\n An iterator that generates items by transforming each item of a source\n with a different iterator.\n @extends module:asynciterator.TransformIterator\n*/\nclass MultiTransformIterator extends TransformIterator {\n /**\n Creates a new `MultiTransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Function} [options.multiTransform] A function to asynchronously transform items to iterators from the source\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n */\n constructor(source, options) {\n super(source, options);\n this._transformerQueue = [];\n // Set transformation steps from the options\n if (options) {\n const multiTransform = isFunction(options) ? options : options.multiTransform;\n if (multiTransform)\n this._createTransformer = multiTransform;\n }\n }\n /* Tries to read and transform items */\n _read(count, done) {\n // Remove transformers that have ended\n const transformerQueue = this._transformerQueue, optional = this._optional;\n let head, item;\n while ((head = transformerQueue[0]) && head.transformer.done) {\n // If transforming is optional, push the original item if none was pushed\n if (optional && head.item !== null) {\n count--;\n this._push(head.item);\n }\n // Remove listeners from the transformer\n transformerQueue.shift();\n const { transformer } = head;\n transformer.removeListener('end', destinationFillBuffer);\n transformer.removeListener('readable', destinationFillBuffer);\n transformer.removeListener('error', destinationEmitError);\n }\n // Create new transformers if there are less than the maximum buffer size\n const { source } = this;\n while (source && !source.done && transformerQueue.length < this.maxBufferSize) {\n // Read an item to create the next transformer\n item = source.read();\n if (item === null)\n break;\n // Create the transformer and listen to its events\n const transformer = (this._createTransformer(item) ||\n new EmptyIterator());\n transformer[exports.DESTINATION] = this;\n transformer.on('end', destinationFillBuffer);\n transformer.on('readable', destinationFillBuffer);\n transformer.on('error', destinationEmitError);\n transformerQueue.push({ transformer, item });\n }\n // Try to read `count` items from the transformer\n head = transformerQueue[0];\n if (head) {\n const { transformer } = head;\n while (count-- > 0 && (item = transformer.read()) !== null) {\n this._push(item);\n // If a transformed item was pushed, no need to push the original anymore\n if (optional)\n head.item = null;\n }\n }\n // End the iterator if the source has ended\n else if (source && source.done) {\n this.close();\n }\n done();\n }\n /**\n Creates a transformer for the given item.\n @param {object} item The last read item from the source\n @returns {module:asynciterator.AsyncIterator} An iterator that transforms the given item\n */\n _createTransformer(item) {\n return new SingletonIterator(item);\n }\n /* Closes the iterator when pending items are transformed. */\n _closeWhenDone() {\n // Only close if all transformers are read\n if (!this._transformerQueue.length)\n this.close();\n }\n _end(destroy) {\n super._end(destroy);\n // Also destroy the open transformers left in the queue\n if (this._destroySource) {\n for (const item of this._transformerQueue)\n item.transformer.destroy();\n }\n }\n}\nexports.MultiTransformIterator = MultiTransformIterator;\n/**\n An iterator that generates items by reading from multiple other iterators.\n @extends module:asynciterator.BufferedIterator\n*/\nclass UnionIterator extends BufferedIterator {\n /**\n Creates a new `UnionIterator`.\n @param {module:asynciterator.AsyncIterator|Array} [sources] The sources to read from\n @param {object} [options] Settings of the iterator\n @param {boolean} [options.destroySource=true] Whether the sources should be destroyed when transformed iterator is closed or destroyed\n */\n constructor(sources, options = {}) {\n super(options);\n this._sources = [];\n this._currentSource = -1;\n const autoStart = options.autoStart !== false;\n // Sources have been passed as an iterator\n if (isEventEmitter(sources)) {\n sources.on('error', error => this.emit('error', error));\n this._pending = { loading: false, sources: sources };\n if (autoStart)\n this._loadSources();\n }\n // Sources have been passed as a non-empty array\n else if (Array.isArray(sources) && sources.length > 0) {\n for (const source of sources)\n this._addSource(source);\n }\n // Sources are an empty list\n else if (autoStart) {\n this.close();\n }\n // Set other options\n this._destroySources = options.destroySources !== false;\n }\n // Loads pending sources into the sources list\n _loadSources() {\n // Obtain sources iterator\n const sources = this._pending.sources;\n this._pending.loading = true;\n // Close immediately if done\n if (sources.done) {\n delete this._pending;\n this.close();\n }\n // Otherwise, set up source reading\n else {\n sources.on('data', source => {\n this._addSource(source);\n this._fillBufferAsync();\n });\n sources.on('end', () => {\n delete this._pending;\n this._fillBuffer();\n });\n }\n }\n // Adds the given source to the internal sources array\n _addSource(source) {\n if (isPromise(source))\n source = wrap(source);\n if (!source.done) {\n this._sources.push(source);\n source[exports.DESTINATION] = this;\n source.on('error', destinationEmitError);\n source.on('readable', destinationFillBuffer);\n source.on('end', destinationRemoveEmptySources);\n }\n }\n // Removes sources that will no longer emit items\n _removeEmptySources() {\n this._sources = this._sources.filter((source, index) => {\n // Adjust the index of the current source if needed\n if (source.done && index <= this._currentSource)\n this._currentSource--;\n return !source.done;\n });\n this._fillBuffer();\n }\n // Reads items from the next sources\n _read(count, done) {\n var _a;\n // Start source loading if needed\n if (((_a = this._pending) === null || _a === void 0 ? void 0 : _a.loading) === false)\n this._loadSources();\n // Try to read `count` items\n let lastCount = 0, item;\n while (lastCount !== (lastCount = count)) {\n // Try every source at least once\n for (let i = 0; i < this._sources.length && count > 0; i++) {\n // Pick the next source\n this._currentSource = (this._currentSource + 1) % this._sources.length;\n const source = this._sources[this._currentSource];\n // Attempt to read an item from that source\n if ((item = source.read()) !== null) {\n count--;\n this._push(item);\n }\n }\n }\n // Close this iterator if all of its sources have been read\n if (!this._pending && this._sources.length === 0)\n this.close();\n done();\n }\n _end(destroy = false) {\n super._end(destroy);\n // Destroy all sources that are still readable\n if (this._destroySources) {\n for (const source of this._sources)\n source.destroy();\n // Also close the sources stream if applicable\n if (this._pending) {\n this._pending.sources.destroy();\n delete this._pending;\n }\n }\n }\n}\nexports.UnionIterator = UnionIterator;\nfunction destinationRemoveEmptySources() {\n this[exports.DESTINATION]._removeEmptySources();\n}\n/**\n An iterator that copies items from another iterator.\n @extends module:asynciterator.TransformIterator\n*/\nclass ClonedIterator extends TransformIterator {\n /**\n Creates a new `ClonedIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator copies items from\n */\n constructor(source) {\n super(source, { autoStart: false });\n this._readPosition = 0;\n this._reading = false;\n // As cloned iterators are not auto-started, they must always be marked as readable.\n if (source)\n this.readable = true;\n }\n _init() {\n // skip buffered iterator initialization, since we read from history\n }\n close() {\n // skip buffered iterator cleanup\n AsyncIterator.prototype.close.call(this);\n }\n // The source this iterator copies items from\n get source() {\n return super.source;\n }\n set source(value) {\n // Validate and set the source\n const source = this._source = this._validateSource(value);\n // Create a history reader for the source if none already existed\n const history = (source && source[exports.DESTINATION]) ||\n (source[exports.DESTINATION] = new HistoryReader(source));\n // Do not read the source if this iterator already ended\n if (this.done) {\n if (this._destroySource)\n source.destroy();\n }\n // Close this clone if history is empty and the source has ended\n else if (history.endsAt(0)) {\n this.close();\n }\n else {\n // Subscribe to history events\n history.register(this);\n // If there are already items in history, this clone is readable\n // If the source has a lazy start, always mark this iterator as readable without eagerly triggering a read.\n if (source._sourceStarted === false || history.readAt(0) !== null)\n this.readable = true;\n }\n // Hook pending property callbacks to the source\n const propertyCallbacks = this._propertyCallbacks;\n for (const propertyName in propertyCallbacks) {\n const callbacks = propertyCallbacks[propertyName];\n for (const callback of callbacks)\n this._getSourceProperty(propertyName, callback);\n }\n }\n /**\n Validates whether the given iterator can be used as a source.\n @protected\n @param {object} source The source to validate\n @param {boolean} allowDestination Whether the source can already have a destination\n */\n _validateSource(source, allowDestination = false) {\n const history = (source && source[exports.DESTINATION]);\n return super._validateSource(source, !history || history instanceof HistoryReader);\n }\n // Retrieves the property with the given name from the clone or its source.\n getProperty(propertyName, callback) {\n const { source } = this, properties = this._properties, hasProperty = properties && (propertyName in properties);\n // If no callback was passed, return the property value\n if (!callback) {\n return hasProperty ? properties && properties[propertyName] :\n source && source.getProperty(propertyName);\n }\n // Try to look up the property in this clone\n super.getProperty(propertyName, callback);\n // If the property is not set on this clone, it might become set on the source first\n if (source && !hasProperty)\n this._getSourceProperty(propertyName, callback);\n return undefined;\n }\n // Retrieves the property with the given name from the source\n _getSourceProperty(propertyName, callback) {\n this.source.getProperty(propertyName, value => {\n // Only send the source's property if it was not set on the clone in the meantime\n if (!this._properties || !(propertyName in this._properties))\n callback(value);\n });\n }\n // Retrieves all properties of the iterator and its source.\n getProperties() {\n const base = this.source ? this.source.getProperties() : {}, properties = this._properties;\n for (const name in properties)\n base[name] = properties[name];\n return base;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `{source: ${this.source ? this.source.toString() : 'none'}}`;\n }\n /* Tries to read an item */\n read() {\n // An explicit read kickstarts the source\n if (!this._sourceStarted)\n this._sourceStarted = true;\n const source = this.source;\n let item = null;\n if (!this.done && source) {\n // Try to read an item at the current point in history\n const history = source[exports.DESTINATION];\n if ((item = history.readAt(this._readPosition)) !== null)\n this._readPosition++;\n else\n this.readable = false;\n // Close the iterator if we are at the end of the source\n if (history.endsAt(this._readPosition))\n this.close();\n }\n return item;\n }\n /* End the iterator and cleans up. */\n _end(destroy) {\n // Unregister from a possible history reader\n const source = this.source;\n const history = source === null || source === void 0 ? void 0 : source[exports.DESTINATION];\n if (history)\n history.unregister(this);\n // Don't call TransformIterator#_end,\n // as it would make the source inaccessible for other clones\n BufferedIterator.prototype._end.call(this, destroy);\n }\n}\nexports.ClonedIterator = ClonedIterator;\n// Stores the history of a source, so it can be cloned\nclass HistoryReader {\n constructor(source) {\n this._history = [];\n this._trackers = new Set();\n this._source = source;\n // If the source is still live, set up clone tracking;\n // otherwise, the clones just read from the finished history\n if (!source.done) {\n // When the source becomes readable, makes all clones readable\n const setReadable = () => {\n for (const tracker of this._trackers)\n tracker.readable = true;\n };\n // When the source errors, re-emits the error\n const emitError = (error) => {\n for (const tracker of this._trackers)\n tracker.emit('error', error);\n };\n // When the source ends, closes all clones that are fully read\n const end = () => {\n // Close the clone if all items had been emitted\n for (const tracker of this._trackers) {\n if (tracker._sourceStarted !== false &&\n tracker._readPosition === this._history.length)\n tracker.close();\n }\n this._trackers.clear();\n // Remove source listeners, since no further events will be emitted\n source.removeListener('end', end);\n source.removeListener('error', emitError);\n source.removeListener('readable', setReadable);\n };\n // Listen to source events to trigger events in subscribed clones\n source.on('end', end);\n source.on('error', emitError);\n source.on('readable', setReadable);\n }\n }\n // Registers a clone for history updates\n register(clone) {\n // Tracking is only needed if the source is still live\n if (!this._source.done)\n this._trackers.add(clone);\n }\n // Unregisters a clone for history updates\n unregister(clone) {\n this._trackers.delete(clone);\n }\n // Tries to read the item at the given history position\n readAt(pos) {\n let item = null;\n // Retrieve an item from history when available\n if (pos < this._history.length)\n item = this._history[pos];\n // Read a new item from the source when possible\n else if (!this._source.done && (item = this._source.read()) !== null)\n this._history[pos] = item;\n return item;\n }\n // Determines whether the given position is the end of the source\n endsAt(pos) {\n return this._source.done && this._history.length === pos;\n }\n}\n/**\n * An iterator that takes a variety of iterable objects as a source.\n */\nclass WrappingIterator extends AsyncIterator {\n constructor(source, opts) {\n super();\n this._source = null;\n this._destroySource = (opts === null || opts === void 0 ? void 0 : opts.destroySource) !== false;\n // If promise, set up a temporary source and replace when ready\n if (isPromise(source)) {\n this._source = new AsyncIterator();\n source.then(value => {\n this._source = null;\n this.source = value;\n }).catch(error => this.emit('error', error));\n }\n // Otherwise, set the source synchronously\n else if (source) {\n this.source = source;\n }\n }\n set source(value) {\n let source = value;\n if (this._source !== null)\n throw new Error('The source cannot be changed after it has been set');\n // Process an iterable source\n if (isIterable(source))\n source = source[Symbol.iterator]();\n // Process an iterator source\n if (isIterator(source)) {\n let iterator = source;\n source = new events_1.EventEmitter();\n source.read = () => {\n if (iterator !== null) {\n // Skip any null values inside of the iterator\n let next;\n while (!(next = iterator.next()).done) {\n if (next.value !== null)\n return next.value;\n }\n // No remaining values, so stop iterating\n iterator = null;\n this.close();\n }\n return null;\n };\n }\n // Process any other readable source\n else {\n source = ensureSourceAvailable(source);\n }\n // Do not change sources if the iterator is already done\n if (this.done) {\n if (this._destroySource && isFunction(source.destroy))\n source.destroy();\n return;\n }\n // Set up event handling\n source[exports.DESTINATION] = this;\n source.on('end', destinationClose);\n source.on('error', destinationEmitError);\n source.on('readable', destinationSetReadable);\n // Enable reading from source\n this._source = source;\n this.readable = source.readable !== false;\n }\n read() {\n if (this._source !== null && this._source.readable !== false) {\n const item = this._source.read();\n if (item !== null)\n return item;\n this.readable = false;\n }\n return null;\n }\n _end(destroy = false) {\n if (this._source !== null) {\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[exports.DESTINATION];\n if (this._destroySource && isFunction(this._source.destroy))\n this._source.destroy();\n this._source = null;\n }\n super._end(destroy);\n }\n}\nexports.WrappingIterator = WrappingIterator;\n/**\n Creates an iterator that wraps around a given iterator or readable stream.\n Use this to convert an iterator-like object into a full-featured AsyncIterator.\n After this operation, only read the returned iterator instead of the given one.\n @function\n @param [source] The source this iterator generates items from\n @param {object} [options] Settings of the iterator\n @returns {module:asynciterator.AsyncIterator} A new iterator with the items from the given iterator\n*/\nfunction wrap(source, options) {\n // For backward compatibility, always use TransformIterator when options are specified\n if (options && ('autoStart' in options || 'optional' in options || 'source' in options || 'maxBufferSize' in options)) {\n if (source && !isEventEmitter(source))\n source = new WrappingIterator(source);\n return new TransformIterator(source, options);\n }\n // Empty iterator if no source specified\n if (!source)\n return empty();\n // Unwrap promised sources\n if (isPromise(source))\n return new WrappingIterator(source, options);\n // Directly return any AsyncIterator\n if (source instanceof AsyncIterator)\n return source;\n // Other iterable objects\n if (Array.isArray(source))\n return fromArray(source);\n if (isIterable(source) || isIterator(source) || isEventEmitter(source))\n return new WrappingIterator(source, options);\n // Other types are unsupported\n throw new TypeError(`Invalid source: ${source}`);\n}\nexports.wrap = wrap;\n/**\n Creates an empty iterator.\n */\nfunction empty() {\n return new EmptyIterator();\n}\nexports.empty = empty;\n/**\n Creates an iterator with a single item.\n @param {object} item the item\n */\nfunction single(item) {\n return new SingletonIterator(item);\n}\nexports.single = single;\n/**\n Creates an iterator for the given array.\n @param {Array} items the items\n */\nfunction fromArray(items) {\n return new ArrayIterator(items);\n}\nexports.fromArray = fromArray;\n/**\n Creates an iterator for the given Iterator.\n @param {Iterable} source the iterator\n */\nfunction fromIterator(source) {\n return new WrappingIterator(source);\n}\nexports.fromIterator = fromIterator;\n/**\n Creates an iterator for the given Iterable.\n @param {Iterable} source the iterable\n */\nfunction fromIterable(source) {\n return new WrappingIterator(source);\n}\nexports.fromIterable = fromIterable;\n/**\n Creates an iterator containing all items from the given iterators.\n @param {Array} items the items\n */\nfunction union(sources) {\n return new UnionIterator(sources);\n}\nexports.union = union;\n/**\n Creates an iterator of integers for the given numeric range.\n @param {Array} items the items\n */\nfunction range(start, end, step) {\n return new IntegerIterator({ start, end, step });\n}\nexports.range = range;\n// Returns a function that calls `fn` with `self` as `this` pointer. */\nfunction bind(fn, self) {\n return self ? fn.bind(self) : fn;\n}\n// Determines whether the given object is a function\nfunction isFunction(object) {\n return typeof object === 'function';\n}\nexports.isFunction = isFunction;\n// Determines whether the given object is an EventEmitter\nfunction isEventEmitter(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.on);\n}\nexports.isEventEmitter = isEventEmitter;\n// Determines whether the given object is a promise\nfunction isPromise(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.then);\n}\nexports.isPromise = isPromise;\n// Determines whether the given object is a source expression\nfunction isSourceExpression(object) {\n return object && (isEventEmitter(object) || isPromise(object) || isFunction(object));\n}\nexports.isSourceExpression = isSourceExpression;\n// Determines whether the given object supports the iterable protocol\nfunction isIterable(object) {\n return object && (Symbol.iterator in object);\n}\nexports.isIterable = isIterable;\n// Determines whether the given object supports the iterator protocol\nfunction isIterator(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.next);\n}\nexports.isIterator = isIterator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedList = void 0;\n/**\n * A list with O(1) push and shift operations.\n */\nclass LinkedList {\n constructor() {\n this._length = 0;\n this._head = null;\n this._tail = null;\n }\n get length() { return this._length; }\n get first() { var _a; return (_a = this._head) === null || _a === void 0 ? void 0 : _a.value; }\n get last() { var _a; return (_a = this._tail) === null || _a === void 0 ? void 0 : _a.value; }\n get empty() { return this._head === null; }\n push(value) {\n const node = { value, next: null };\n if (this._tail === null)\n this._head = this._tail = node;\n else\n this._tail.next = this._tail = node;\n this._length++;\n }\n shift() {\n if (this._head === null)\n return undefined;\n const { value, next } = this._head;\n this._head = next;\n if (next === null)\n this._tail = null;\n this._length--;\n return value;\n }\n clear() {\n this._length = 0;\n this._head = this._tail = null;\n }\n}\nexports.LinkedList = LinkedList;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTaskScheduler = void 0;\nconst resolved = Promise.resolve(undefined);\n// Returns a function that asynchronously schedules a task\nfunction createTaskScheduler() {\n // Use or create a microtask scheduler\n const scheduleMicrotask = typeof queueMicrotask === 'function' ?\n queueMicrotask : (task) => resolved.then(task);\n // Use or create a macrotask scheduler\n const scheduleMacrotask = typeof setImmediate === 'function' ?\n setImmediate : (task) => setTimeout(task, 0);\n // Interrupt with a macrotask every once in a while to avoid freezing\n let i = 0;\n let queue = null;\n return (task) => {\n // Tasks are currently being queued to avoid freezing\n if (queue !== null)\n queue.push(task);\n // Tasks are being scheduled normally as microtasks\n else if (++i < 100)\n scheduleMicrotask(task);\n // A macrotask interruption is needed\n else {\n // Hold all tasks in a queue, and reschedule them after a macrotask\n queue = [task];\n scheduleMacrotask(() => {\n // Work through the queue\n for (const queued of queue)\n scheduleMicrotask(queued);\n queue = null;\n // Reset the interruption schedule\n i = 0;\n });\n }\n };\n}\nexports.createTaskScheduler = createTaskScheduler;\n","\"use strict\";\n/**\n * @module LRUCache\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = void 0;\nconst perf = typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date;\nconst warned = new Set();\n/* c8 ignore start */\nconst PROCESS = (typeof process === 'object' && !!process ? process : {});\n/* c8 ignore start */\nconst emitWarning = (msg, type, code, fn) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`);\n};\nlet AC = globalThis.AbortController;\nlet AS = globalThis.AbortSignal;\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort;\n _onabort = [];\n reason;\n aborted = false;\n addEventListener(_, fn) {\n this._onabort.push(fn);\n }\n };\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill();\n }\n signal = new AS();\n abort(reason) {\n if (this.signal.aborted)\n return;\n //@ts-ignore\n this.signal.reason = reason;\n //@ts-ignore\n this.signal.aborted = true;\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason);\n }\n this.signal.onabort?.(reason);\n }\n };\n let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning)\n return;\n printACPolyfillWarning = false;\n emitWarning('AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);\n };\n}\n/* c8 ignore stop */\nconst shouldWarn = (code) => !warned.has(code);\nconst TYPE = Symbol('type');\nconst isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max) => !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null;\n/* c8 ignore stop */\nclass ZeroArray extends Array {\n constructor(size) {\n super(size);\n this.fill(0);\n }\n}\nclass Stack {\n heap;\n length;\n // private constructor\n static #constructing = false;\n static create(max) {\n const HeapCls = getUintArray(max);\n if (!HeapCls)\n return [];\n Stack.#constructing = true;\n const s = new Stack(max, HeapCls);\n Stack.#constructing = false;\n return s;\n }\n constructor(max, HeapCls) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)');\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max);\n this.length = 0;\n }\n push(n) {\n this.heap[this.length++] = n;\n }\n pop() {\n return this.heap[--this.length];\n }\n}\n/**\n * Default export, the thing you're using this module to get.\n *\n * All properties from the options object (with the exception of\n * {@link OptionsBase.max} and {@link OptionsBase.maxSize}) are added as\n * normal public members. (`max` and `maxBase` are read-only getters.)\n * Changing any of these will alter the defaults for subsequent method calls,\n * but is otherwise safe.\n */\nclass LRUCache {\n // properties coming in from the options of these, only max and maxSize\n // really *need* to be protected. The rest can be modified, as they just\n // set defaults for various methods.\n #max;\n #maxSize;\n #dispose;\n #disposeAfter;\n #fetchMethod;\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl;\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution;\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas;\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale;\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet;\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL;\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize;\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort;\n // computed properties\n #size;\n #calculatedSize;\n #keyMap;\n #keyList;\n #valList;\n #next;\n #prev;\n #head;\n #tail;\n #free;\n #disposed;\n #sizes;\n #starts;\n #ttls;\n #hasDispose;\n #hasFetchMethod;\n #hasDisposeAfter;\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals(c) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head;\n },\n get tail() {\n return c.#tail;\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p) => c.#isBackgroundFetch(p),\n backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),\n moveToTail: (index) => c.#moveToTail(index),\n indexes: (options) => c.#indexes(options),\n rindexes: (options) => c.#rindexes(options),\n isStale: (index) => c.#isStale(index),\n };\n }\n // Protected read-only members\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max() {\n return this.#max;\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize() {\n return this.#maxSize;\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize() {\n return this.#calculatedSize;\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size() {\n return this.#size;\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod() {\n return this.#fetchMethod;\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose;\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter;\n }\n constructor(options) {\n const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer');\n }\n const UintArray = max ? getUintArray(max) : Array;\n if (!UintArray) {\n throw new Error('invalid max value: ' + max);\n }\n this.#max = max;\n this.#maxSize = maxSize;\n this.maxEntrySize = maxEntrySize || this.#maxSize;\n this.sizeCalculation = sizeCalculation;\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function');\n }\n }\n if (fetchMethod !== undefined &&\n typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified');\n }\n this.#fetchMethod = fetchMethod;\n this.#hasFetchMethod = !!fetchMethod;\n this.#keyMap = new Map();\n this.#keyList = new Array(max).fill(undefined);\n this.#valList = new Array(max).fill(undefined);\n this.#next = new UintArray(max);\n this.#prev = new UintArray(max);\n this.#head = 0;\n this.#tail = 0;\n this.#free = Stack.create(max);\n this.#size = 0;\n this.#calculatedSize = 0;\n if (typeof dispose === 'function') {\n this.#dispose = dispose;\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter;\n this.#disposed = [];\n }\n else {\n this.#disposeAfter = undefined;\n this.#disposed = undefined;\n }\n this.#hasDispose = !!this.#dispose;\n this.#hasDisposeAfter = !!this.#disposeAfter;\n this.noDisposeOnSet = !!noDisposeOnSet;\n this.noUpdateTTL = !!noUpdateTTL;\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;\n this.ignoreFetchAbort = !!ignoreFetchAbort;\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError('maxSize must be a positive integer if specified');\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError('maxEntrySize must be a positive integer if specified');\n }\n this.#initializeSizeTracking();\n }\n this.allowStale = !!allowStale;\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;\n this.updateAgeOnGet = !!updateAgeOnGet;\n this.updateAgeOnHas = !!updateAgeOnHas;\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1;\n this.ttlAutopurge = !!ttlAutopurge;\n this.ttl = ttl || 0;\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified');\n }\n this.#initializeTTLTracking();\n }\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError('At least one of max, maxSize, or ttl is required');\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED';\n if (shouldWarn(code)) {\n warned.add(code);\n const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.';\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);\n }\n }\n }\n /**\n * Return the remaining TTL time for a given entry key\n */\n getRemainingTTL(key) {\n return this.#keyMap.has(key) ? Infinity : 0;\n }\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max);\n const starts = new ZeroArray(this.#max);\n this.#ttls = ttls;\n this.#starts = starts;\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0;\n ttls[index] = ttl;\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.delete(this.#keyList[index]);\n }\n }, ttl + 1);\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n };\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0;\n };\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index];\n const start = starts[index];\n /* c8 ignore next */\n if (!ttl || !start)\n return;\n status.ttl = ttl;\n status.start = start;\n status.now = cachedNow || getNow();\n const age = status.now - start;\n status.remainingTTL = ttl - age;\n }\n };\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0;\n const getNow = () => {\n const n = perf.now();\n if (this.ttlResolution > 0) {\n cachedNow = n;\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n return n;\n };\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key);\n if (index === undefined) {\n return 0;\n }\n const ttl = ttls[index];\n const start = starts[index];\n if (!ttl || !start) {\n return Infinity;\n }\n const age = (cachedNow || getNow()) - start;\n return ttl - age;\n };\n this.#isStale = index => {\n const s = starts[index];\n const t = ttls[index];\n return !!t && !!s && (cachedNow || getNow()) - s > t;\n };\n }\n // conditionally set private methods related to TTL\n #updateItemAge = () => { };\n #statusTTL = () => { };\n #setItemTTL = () => { };\n /* c8 ignore stop */\n #isStale = () => false;\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max);\n this.#calculatedSize = 0;\n this.#sizes = sizes;\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index];\n sizes[index] = 0;\n };\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0;\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function');\n }\n size = sizeCalculation(v, k);\n if (!isPosInt(size)) {\n throw new TypeError('sizeCalculation return invalid (expect positive integer)');\n }\n }\n else {\n throw new TypeError('invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.');\n }\n }\n return size;\n };\n this.#addItemSize = (index, size, status) => {\n sizes[index] = size;\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index];\n while (this.#calculatedSize > maxSize) {\n this.#evict(true);\n }\n }\n this.#calculatedSize += sizes[index];\n if (status) {\n status.entrySize = size;\n status.totalCalculatedSize = this.#calculatedSize;\n }\n };\n }\n #removeItemSize = _i => { };\n #addItemSize = (_i, _s, _st) => { };\n #requireSize = (_k, _v, size, sizeCalculation) => {\n if (size || sizeCalculation) {\n throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');\n }\n return 0;\n };\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#head) {\n break;\n }\n else {\n i = this.#prev[i];\n }\n }\n }\n }\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#tail) {\n break;\n }\n else {\n i = this.#next[i];\n }\n }\n }\n }\n #isValidIndex(index) {\n return (index !== undefined &&\n this.#keyMap.get(this.#keyList[index]) === index);\n }\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * A String value that is used in the creation of the default string description of an object.\n * Called by the built-in method Object.prototype.toString.\n */\n [Symbol.toStringTag] = 'LRUCache';\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to Array.find(). fn is called as fn(value, key, cache).\n */\n find(fn, getOptions = {}) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n if (fn(value, this.#keyList[i], this)) {\n return this.get(this.#keyList[i], getOptions);\n }\n }\n }\n /**\n * Call the supplied function on each item in the cache, in order from\n * most recently used to least recently used. fn is called as\n * fn(value, key, cache). Does not update age or recenty of use.\n * Does not iterate over stale values.\n */\n forEach(fn, thisp = this) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(fn, thisp = this) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false;\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.delete(this.#keyList[i]);\n deleted = true;\n }\n }\n return deleted;\n }\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Like {@link LRUCache#dump}, but just for a\n * single key. Always returns stale values, if their info is found in the\n * cache, so be sure to check for expired TTLs if relevant.\n */\n info(key) {\n const i = this.#keyMap.get(key);\n if (i === undefined)\n return undefined;\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n return undefined;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i];\n const start = this.#starts[i];\n if (ttl && start) {\n const remain = ttl - (perf.now() - start);\n entry.ttl = remain;\n entry.start = Date.now();\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n return entry;\n }\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to cache.load()\n */\n dump() {\n const arr = [];\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i];\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined || key === undefined)\n continue;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i];\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - this.#starts[i];\n entry.start = Math.floor(Date.now() - age);\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n arr.unshift([key, entry]);\n }\n return arr;\n }\n /**\n * Reset the cache and load in the items in entries in the order listed.\n * Note that the shape of the resulting cache may be different if the\n * same options are not used in both caches.\n */\n load(arr) {\n this.clear();\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start;\n entry.start = perf.now() - age;\n }\n this.set(key, entry.value, entry);\n }\n }\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n */\n set(k, v, setOptions = {}) {\n if (v === undefined) {\n this.delete(k);\n return this;\n }\n const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;\n let { noUpdateTTL = this.noUpdateTTL } = setOptions;\n const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss';\n status.maxEntrySizeExceeded = true;\n }\n // have to delete, in case something is there already.\n this.delete(k);\n return this;\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k);\n if (index === undefined) {\n // addition\n index = (this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size);\n this.#keyList[index] = k;\n this.#valList[index] = v;\n this.#keyMap.set(k, index);\n this.#next[this.#tail] = index;\n this.#prev[index] = this.#tail;\n this.#tail = index;\n this.#size++;\n this.#addItemSize(index, size, status);\n if (status)\n status.set = 'add';\n noUpdateTTL = false;\n }\n else {\n // update\n this.#moveToTail(index);\n const oldVal = this.#valList[index];\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'));\n const { __staleWhileFetching: s } = oldVal;\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set']);\n }\n }\n }\n else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set']);\n }\n }\n this.#removeItemSize(index);\n this.#addItemSize(index, size, status);\n this.#valList[index] = v;\n if (status) {\n status.set = 'replace';\n const oldValue = oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal;\n if (oldValue !== undefined)\n status.oldValue = oldValue;\n }\n }\n else if (status) {\n status.set = 'update';\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking();\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start);\n }\n if (status)\n this.#statusTTL(status, index);\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return this;\n }\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop() {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head];\n this.#evict(true);\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching;\n }\n }\n else if (val !== undefined) {\n return val;\n }\n }\n }\n finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n }\n #evict(free) {\n const head = this.#head;\n const k = this.#keyList[head];\n const v = this.#valList[head];\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict']);\n }\n }\n this.#removeItemSize(head);\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined;\n this.#valList[head] = undefined;\n this.#free.push(head);\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0;\n this.#free.length = 0;\n }\n else {\n this.#head = this.#next[head];\n }\n this.#keyMap.delete(k);\n this.#size--;\n return head;\n }\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k, hasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined) {\n return false;\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index);\n }\n if (status) {\n status.has = 'hit';\n this.#statusTTL(status, index);\n }\n return true;\n }\n else if (status) {\n status.has = 'stale';\n this.#statusTTL(status, index);\n }\n }\n else if (status) {\n status.has = 'miss';\n }\n return false;\n }\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k, peekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions;\n const index = this.#keyMap.get(k);\n if (index === undefined ||\n (!allowStale && this.#isStale(index))) {\n return;\n }\n const v = this.#valList[index];\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n }\n #backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n return v;\n }\n const ac = new AC();\n const { signal } = options;\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n });\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n };\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal;\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined;\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true;\n options.status.fetchError = ac.signal.reason;\n if (ignoreAbort)\n options.status.fetchAbortIgnored = true;\n }\n else {\n options.status.fetchResolved = true;\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason);\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p;\n if (this.#valList[index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index] = bf.__staleWhileFetching;\n }\n else {\n this.delete(k);\n }\n }\n else {\n if (options.status)\n options.status.fetchUpdated = true;\n this.set(k, v, fetchOpts.options);\n }\n }\n return v;\n };\n const eb = (er) => {\n if (options.status) {\n options.status.fetchRejected = true;\n options.status.fetchError = er;\n }\n return fetchFail(er);\n };\n const fetchFail = (er) => {\n const { aborted } = ac.signal;\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;\n const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;\n const noDelete = allowStale || options.noDeleteOnFetchRejection;\n const bf = p;\n if (this.#valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined;\n if (del) {\n this.delete(k);\n }\n else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index] = bf.__staleWhileFetching;\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true;\n }\n return bf.__staleWhileFetching;\n }\n else if (bf.__returned === bf) {\n throw er;\n }\n };\n const pcall = (res, rej) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts);\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej);\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort) {\n res(undefined);\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true);\n }\n }\n });\n };\n if (options.status)\n options.status.fetchDispatched = true;\n const p = new Promise(pcall).then(cb, eb);\n const bf = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n });\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined });\n index = this.#keyMap.get(k);\n }\n else {\n this.#valList[index] = bf;\n }\n return bf;\n }\n #isBackgroundFetch(p) {\n if (!this.#hasFetchMethod)\n return false;\n const b = p;\n return (!!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC);\n }\n async fetch(k, fetchOptions = {}) {\n const { \n // get options\n allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, \n // set options\n ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, \n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;\n if (!this.#hasFetchMethod) {\n if (status)\n status.fetch = 'get';\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n });\n }\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n };\n let index = this.#keyMap.get(k);\n if (index === undefined) {\n if (status)\n status.fetch = 'miss';\n const p = this.#backgroundFetch(k, index, options, context);\n return (p.__returned = p);\n }\n else {\n // in cache, maybe already fetching\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined;\n if (status) {\n status.fetch = 'inflight';\n if (stale)\n status.returnedStale = true;\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v);\n }\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index);\n if (!forceRefresh && !isStale) {\n if (status)\n status.fetch = 'hit';\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n if (status)\n this.#statusTTL(status, index);\n return v;\n }\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context);\n const hasStale = p.__staleWhileFetching !== undefined;\n const staleVal = hasStale && allowStale;\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh';\n if (staleVal && isStale)\n status.returnedStale = true;\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p);\n }\n }\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k, getOptions = {}) {\n const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const value = this.#valList[index];\n const fetching = this.#isBackgroundFetch(value);\n if (status)\n this.#statusTTL(status, index);\n if (this.#isStale(index)) {\n if (status)\n status.get = 'stale';\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.delete(k);\n }\n if (status && allowStale)\n status.returnedStale = true;\n return allowStale ? value : undefined;\n }\n else {\n if (status &&\n allowStale &&\n value.__staleWhileFetching !== undefined) {\n status.returnedStale = true;\n }\n return allowStale ? value.__staleWhileFetching : undefined;\n }\n }\n else {\n if (status)\n status.get = 'hit';\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching;\n }\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n return value;\n }\n }\n else if (status) {\n status.get = 'miss';\n }\n }\n #connect(p, n) {\n this.#prev[n] = p;\n this.#next[p] = n;\n }\n #moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n this.#connect(this.#prev[index], this.#next[index]);\n }\n this.#connect(this.#tail, index);\n this.#tail = index;\n }\n }\n /**\n * Deletes a key out of the cache.\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k) {\n let deleted = false;\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n deleted = true;\n if (this.#size === 1) {\n this.clear();\n }\n else {\n this.#removeItemSize(index);\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'delete');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'delete']);\n }\n }\n this.#keyMap.delete(k);\n this.#keyList[index] = undefined;\n this.#valList[index] = undefined;\n if (index === this.#tail) {\n this.#tail = this.#prev[index];\n }\n else if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n const pi = this.#prev[index];\n this.#next[pi] = this.#next[index];\n const ni = this.#next[index];\n this.#prev[ni] = this.#prev[index];\n }\n this.#size--;\n this.#free.push(index);\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return deleted;\n }\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else {\n const k = this.#keyList[index];\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'delete');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'delete']);\n }\n }\n }\n this.#keyMap.clear();\n this.#valList.fill(undefined);\n this.#keyList.fill(undefined);\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0);\n this.#starts.fill(0);\n }\n if (this.#sizes) {\n this.#sizes.fill(0);\n }\n this.#head = 0;\n this.#tail = 0;\n this.#free.length = 0;\n this.#calculatedSize = 0;\n this.#size = 0;\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n}\nexports.LRUCache = LRUCache;\n//# sourceMappingURL=index.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(128);\n"],"names":["DynamicNestedLoopJoin","HashJoin","NestedLoopJoin","SymmetricHashJoin","MergeStream","module","exports","AsyncIterator","MultiTransformIterator","SimpleTransformIterator","constructor","left","funRight","funJoin","options","super","this","_createTransformer","leftItem","transform","rightItem","done","push","result","right","funHash","addedDataListener","leftMap","Map","match","matches","matchIdx","on","error","destroy","readable","hasResults","_end","bind","eventName","_addDataListenerIfNeeded","ended","length","read","item","hash","get","_addDataListener","has","set","scheduleTask","close","clone","usedLeft","rightMap","_cleanup","i","map","streams","Array","isArray","prototype","slice","call","arguments","stream","emit","_removeStream","idx","indexOf","splice","attempts","variables","df_471_1","require","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus","urn_comunica_default_context_preprocess_actors_query_source_skolemize","urn_comunica_default_context_preprocess_mediators_main","urn_comunica_default_hash_bindings_mediators_main","urn_comunica_default_hash_quads_mediators_main","urn_comunica_default_optimize_query_operation_actors_group_sources","urn_comunica_default_optimize_query_operation_mediators_main","urn_comunica_default_query_parse_mediators_main","urn_comunica_default_rdf_join_entries_sort_mediators_main","urn_comunica_default_rdf_join_selectivity_mediators_main","urn_comunica_default_rdf_metadata_accumulate_mediators_main","urn_comunica_default_rdf_update_quads_mediators_main","urn_comunica_default_query_operation_mediators_main","urn_comunica_default_query_process_mediators_main","urn_comunica_default_query_source_identify_mediators_main","urn_comunica_default_rdf_join_mediators_main","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator","urn_comunica_default_http_invalidate_mediators_main","urn_comunica_default_query_result_serialize_mediators_serialize","urn_comunica_default_query_result_serialize_mediators_mediaType","urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat","urn_comunica_default_merge_bindings_context_mediators_main","urn_comunica_default_rdf_join_actors_inner_hash","urn_comunica_default_rdf_join_actors_inner_symmetric_hash","urn_comunica_default_rdf_join_actors_inner_nested_loop","urn_comunica_default_rdf_join_actors_inner_multi_smallest","urn_comunica_default_optimize_query_operation_actors_filter_pushdown","urn_comunica_default_init_actors_query","urn_comunica_default_rdf_join_actors_inner_multi_bind","urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations","urn_comunica_default_optimize_query_operation_actors_join_connected","urn_comunica_default_optimize_query_operation_actors_bgp_to_join","urn_comunica_default_optimize_query_operation_actors_join_bgp","urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive","actor_init_query_1","engineDefault","QueryEngine","QueryEngineBase","engine","__exportStar","bus_query_operation_1","context_entries_1","asynciterator_1","rdf_data_factory_1","rdf_string_1","sparqlalgebrajs_1","PathVariableObjectIterator_1","DF","DataFactory","ActorAbstractPath","ActorQueryOperationTypedMediated","args","predicateType","testOperation","operation","_context","predicate","type","Error","generateVariable","path","name","subject","value","object","variable","isPathArbitraryLengthDistinct","context","KeysQueryOperation","isPathArbitraryLengthDistinctKey","undefined","ActorQueryOperation","getSafeBindings","mediatorQueryOperation","mediate","FACTORY","createDistinct","predicateStarGraphVariable","graph","bindingsFactory","sources","getPathSources","predVar","createPath","findGraphs","createUnion","assignPatternSources","createPattern","results","passedGraphs","Set","bindingsStream","multiTransform","bindings","graphValue","EmptyIterator","add","TransformIterator","async","it","BufferedIterator","getObjectsPredicateStar","count","next","maxBufferSize","autoStart","metadata","getObjectsPredicateStarEval","emitFirstSubject","termType","PathVariableObjectIterator","Promise","resolve","getProperty","metadataInner","cardinality","termHashes","counter","termString","termToString","_push","thisVariable","getSubjectAndObjectBindingsPredicateStar","subjectVar","objectVar","subjectVal","objectVal","termHashesGlobal","termHashesCurrentSubject","objects","promise","reject","objectsArray","Algebra","types","ALT","SEQ","input","flatMap","subOp","INV","ONE_OR_MORE_PATH","ZERO_OR_MORE_PATH","ZERO_OR_ONE_PATH","LINK","NPS","source","getOperationSource","pattern","assignOperationSource","Factory","maxRunningOperations","runningOperations","pendingOperations","pushAsResult","_read","self","pendingOperation","pop","runningOperation","_fillBufferAsync","setProperty","lastCount","then","bus_context_preprocess_1","core_1","ActorContextPreprocessConvertShortcuts","ActorContextPreprocess","test","_action","run","action","expandShortcuts","contextKeyShortcuts","key","keys","ActionContextKey","delete","lru_cache_1","ActorContextPreprocessQuerySourceIdentify","cache","cacheSize","LRUCache","max","httpInvalidator","addInvalidateListener","url","clear","KeysInitQuery","querySourcesUnidentified","querySourcesUnidentifiedExpanded","all","querySource","expandSource","querySources","identifySource","querySourceUnidentified","statisticDereferenceLinks","KeysStatistics","dereferencedLinks","updateStatistic","referenceValue","seed","mediatorContextPreprocess","ActionContext","ensureActionContext","sourcePromise","mediatorQuerySourceIdentify","QuerySourceSkolemized_1","utils_1","ActorContextPreprocessQuerySourceSkolemize","KeysQuerySourceIdentify","sourceIds","getSafe","sourceWrapper","QuerySourceSkolemized","getSourceId","metadata_1","innerSource","sourceId","getSelectorShape","queryBindings","operationMapped","deskolemizeOperation","ArrayIterator","state","MetadataValidationState","canContainUndefs","skolemizeBindingsStream","queryBoolean","queryQuads","skolemizeQuadStream","queryVoid","toString","data_factory_1","rdf_terms_1","skolemizeTerm","term","BlankNodeScoped","namedNode","SKOLEM_PREFIX","skolemizeQuad","quad","mapTermsNested","skolemizeBindings","deskolemizeTerm","skolemized","startsWith","colonSeparator","termLabel","blankNode","deskolemizeTermNestedThrowing","subTerm","deskolemized","ret","size","iterator","inheritMetadata","Util","mapOperation","PATTERN","op","factory","Object","assign","recurse","PATH","ActorContextPreprocessSetDefaults","defaultFunctionArgumentsCache","initialize","setDefault","queryTimestamp","Date","KeysCore","log","logger","functionArgumentsCache","hypermediaSourcesAggregatedStores","queryFormat","language","version","graphqlSingularizeVariables","ActorContextPreprocessSourceToDestination","KeysRdfUpdateQuads","destination","bus_hash_bindings_1","hash_js_1","canonicalize","ActorHashBindingsSha1","ActorHashBindings","allowHashCollisions","hashFunction","sha1","update","fromEntries","digest","hashCollisions","bus_hash_quads_1","ActorHashQuadsSha1","ActorHashQuads","JSON","stringify","quadToStringQuad","ActorInitQueryBase_1","process","globalThis","ActorInitQuery","ActorInitQueryBase","bus_init_1","ActorInit","actorInitQuery","query","queryOfType","expectedType","resultType","execute","output","queryOrExplain","explain","explainMode","actionContext","noCache","invalidateHttpCache","mediatorQueryProcess","internalToFinalResult","getResultMediaTypes","mediatorQueryResultSerializeMediaTypeCombiner","mediaTypes","getResultMediaTypeFormats","mediatorQueryResultSerializeMediaTypeFormatCombiner","mediaTypeFormats","resultToString","queryResult","mediaType","handle","finalToInternalResult","mediatorQueryResultSerialize","handleMediaType","mediatorHttpInvalidate","internalResult","quadStream","finalResult","QueryEngineBase_1","enumerable","bus_optimize_query_operation_1","bus_rdf_update_quads_1","ActorOptimizeQueryOperationAssignSourcesExhaustive","ActorOptimizeQueryOperation","getDataDestinationValue","shape","doesShapeAcceptOperation","assignExhaustive","queryString","subOperation","createAlt","SERVICE","CONSTRUCT","createConstruct","template","DELETE_INSERT","createDeleteInsert","insert","where","ActorOptimizeQueryOperationBgpToJoin","bgp","createJoin","patterns","Keys_1","ActorOptimizeQueryOperationConstructDistinct","distinctConstruct","construct","AF","ActorOptimizeQueryOperationDescribeToConstructsSubject","DESCRIBE","operationOriginal","operations","terms","filter","forEach","templatePattern","BGP","variablePatterns","JOIN","ActorOptimizeQueryOperationFilterPushdown","splitConjunctive","expression","expressionType","expressionTypes","OPERATOR","operator","logDebug","reduce","createFilter","getSources","sourceShapes","repeat","iterations","maxIterations","shouldAttemptPushDown","getExpressionVariables","isModified","filterPushdown","mergeConjunctive","FILTER","nestedExpressions","getNestedFilterExpressions","previous","current","createOperatorExpression","aggressivePushdown","some","sourceAdder","src","recurseOperation","AGGREGATE","WILDCARD","EXISTENCE","inScopeVariables","NAMED","uniqTerms","arg","TERM","getOverlappingOperations","expressionVariables","fullyOverlapping","partiallyOverlapping","notOverlapping","inputVariables","variablesSubSetOf","variablesIntersect","isExpressionFalse","EXPRESSION","EXTEND","createExtend","joins","NOP","PROJECT","createProject","UNION","unions","VALUES","LEFT_JOIN","pushIntoLeftJoins","rightVariables","createLeftJoin","pushEqualityIntoPatterns","pushableResult","getEqualityExpressionPushableIntoPattern","originalMetadata","equals","createValues","MINUS","ASK","DISTINCT","FROM","GRAPH","GROUP","ORDER_BY","REDUCED","SLICE","COMPOSITE_UPDATE","LOAD","CLEAR","CREATE","DROP","ADD","MOVE","COPY","isLiteralWithCanonicalLexicalForm","datatype","varsA","varsB","varA","varB","varsNeedles","varsHaystack","every","childData","ActorOptimizeQueryOperationGroupSources","groupOperation","groupedInput","scopedSource","removeOperationSource","inputs","subInput","clusters","clusterOperationsWithEqualSources","newInputs","moveSourceAnnotationUpwardsIfPossible","multiFactoryMethod","createSeq","groupOperationMulti","factoryMethod","flatten","nestedMerges","cluster","merged","operationsIn","sourceOperations","sourcelessOperations","entries","ActorOptimizeQueryOperationJoinBgp","join","createBgp","ActorOptimizeQueryOperationJoinConnected","oldClusters","newClusters","clusterIteration","subJoins","oldCluster","entry","joined","newEntry","haveOverlappingVariables","variablesA","variablesB","variableA","ActorOptimizeQueryOperationPruneEmptySourceOperations","collectedOperations","collectMultiOperationInputs","emptyOperations","checkOperation","collectedOperation","iri","hasSourceResults","mapMultiOperation","children","hasEmptyOperation","emptyOperation","subSubOperation","inputType","multiOperationFactory","nonEmptyInputs","traverse","useAskIfSupported","askOperation","createAsk","ActorOptimizeQueryOperationRewriteAdd","defaultGraph","ActorOptimizeQueryOperationRewriteCopy","createCompositeUpdate","createDrop","createAdd","silent","ActorOptimizeQueryOperationRewriteMove","updates","ActorQueryOperationAsk","_operation","runOperation","take","toArray","ActorQueryOperationBgpJoin","BindingsToQuadsIterator_1","ActorQueryOperationConstruct","getVariables","concat","apply","getTermsNested","meta","order","availableOrders","BindingsToQuadsIterator","blankNodeCounter","bindTerm","bindQuad","boundTerm","localizeBlankNode","localizeQuad","bindTemplate","x","Boolean","ActorQueryOperationDistinctHash","mediatorHashQuads","outputQuads","getSafeQuads","newHashFilterQuads","outputBindings","newHashFilter","mediatorHashBindings","hashes","_quad","bindings_factory_1","expression_evaluator_1","ActorQueryOperationExtend","BindingsFactory","create","mediatorMergeBindingsContext","AsyncEvaluator","getAsyncExpressionContext","innerVariable","config","evaluator","evaluate","isExpressionError","logWarn","message","bindingsToString","outputMetadata","ActorQueryOperationFilter","outputRaw","validateQueryOutput","evaluateAsEBV","ActorQueryOperationFromQuad","copyOperation","recursiveCb","copiedOperation","ALGEBRA_TYPES","includes","applyOperationDefaultGraph","defaultGraphs","joinOperations","bgps","unionOperations","paths","applyOperationNamedGraph","namedGraphs","patternGraph","values","pat","namedGraph","createOperation","default","named","GroupsState_1","ActorQueryOperationGroup","aggregate","aggregates","agg","sparqleeConfig","groups","GroupsState","bindingsStreamInner","collectResults","consumeBindings","catch","groupsInitializer","groupVariables","waitCounter","resultHasBeenCalled","check","resultCheck","grouper","_","groupHash","hashBindings","res","groupInitializer","groupInitializerDefined","group","aggregators","put","subtractWaitCounterAndCollect","AsyncAggregateEvaluator","handleResultCollection","rows","groupBindings","returnBindings","single","emptyValue","waitResolver","ActorQueryOperationJoin","mediatorJoin","ActorQueryOperationLeftJoin","ActorQueryOperationMinus","ActorQueryOperationNop","SingletonIterator","SortIterator_1","ActorQueryOperationOrderBy","window","Number","POSITIVE_INFINITY","expr","expressions","extractSortExpression","isAscending","transformedStream","sortedStream","SortIterator","compare","orderTypes","sort","windowLength","isFinite","sorted","mid","Math","trunc","_flush","actor_abstract_path_1","actor_query_operation_union_1","ActorQueryOperationPathAlt","subOperations","subPredicate","UnionIterator","subMeta","ActorQueryOperationUnion","unionMetadata","mediatorRdfMetadataAccumulate","ActorQueryOperationPathInv","invPath","ActorQueryOperationPathLink","ActorQueryOperationPathNps","blank","iris","ActorQueryOperationPathOneOrMore","distinct","starEval","createOneOrMorePath","createInv","ActorQueryOperationPathSeq","joiner","generatedVariableNames","nextJoiner","generatedVariableName","joinMetadata","ActorQueryOperationPathZeroOrMore","sVar","oVar","entities","subjectGraphHash","objectGraphHash","pred","ActorQueryOperationPathZeroOrOne","extra","bindingsOne","varP","bindingsZero","createTermExpression","prepend","ActorQueryOperationProject","deleteVariables","subVariable","deleteVariable","scopedBlankNodesCache","BlankNodeBindingsScoped","scopedBlankNode","ActorQueryOperationReducedHash","ActorQueryOperationService","forceSparqlEndpoint","ActorQueryOperationSlice","limitIndicator","sliceStream","sliceMetadata","hasLength","start","end","offset","limit","subMetadata","min","ActorQueryOperationSource","httpRequests","physicalQueryPlanLogger","logOperation","physicalQueryPlanNode","mergedContext","merge","getMetadataQuads","getMetadataBindings","unionVariables","flat","metadatas","accumulatedMetadata","mode","appendingMetadata","invalidateListener","invalidate","outputsRaw","outputType","outputs","ActorQueryOperationClear","throwOnReadOnly","graphs","mediatorUpdateQuads","deleteGraphs","requireExistence","dropGraphs","ActorQueryOperationUpdateCompositeUpdate","subResult","getSafeVoid","ActorQueryOperationCreate","createGraphs","requireNonExistence","actor_query_operation_construct_1","ActorQueryOperationUpdateDeleteInsert","whereBindings","quadStreamInsert","quadStreamDelete","ActorQueryOperationDrop","ActorQueryOperationLoad","subContext","lenient","ActorQueryOperationValues","ActorQueryOperationTyped","bus_query_parse_1","sparqljs_1","ActorQueryParseSparql","ActorQueryParse","prefixes","freeze","parsedSyntax","Parser","baseIRI","sparqlStar","parse","base","translate","quads","blankToVariable","bus_query_process_1","ActorQueryProcessSequential","ActorQueryProcess","optimize","queryParseOutput","mediatorQueryParse","initialBindings","materializeOperation","mediatorOptimizeQueryOperation","bus_query_source_identify_1","QuerySourceRdfJs_1","ActorQuerySourceIdentifyRdfJs","ActorQuerySourceIdentify","QuerySourceRdfJs","nullifyVariables","quotedTripleFiltering","someTermsNested","hasDuplicateVariables","filterTermsNested","SELECTOR_SHAPE","features","rawStream","wrap","filterMatchingQuotedQuads","setMetadata","quadsToBindings","unionDefaultGraph","countQuads","wouldRequirePostFiltering","someTerms","operationType","variablesOptional","bus_rdf_join_entries_sort_1","ActorRdfJoinEntriesSortCardinality","ActorRdfJoinEntriesSort","entryLeft","entryRight","bus_rdf_join_1","asyncjoin_1","ActorRdfJoinHash","ActorRdfJoin","logicalType","physicalName","limitEntries","requiresVariableOverlap","getOutput","getMetadatas","overlappingVariables","joinBindings","constructResultMetadata","getJoinCoefficients","requestInitialTimes","getRequestInitialTimes","requestItemTimes","getRequestItemTimes","persistedItems","blockingItems","requestTime","ActorRdfJoinMultiBindSource","canHandleUndefs","entriesUnsorted","getEntriesWithMetadatas","sortJoinEntries","element","smallestStream","smallestMetadata","remainingEntries","createOperationFromEntries","chunkedStreams","ChunkedIterator","blockSize","chunk","physicalPlanMetadata","bindIndex","mediatorJoinEntriesSort","operationModified","remainingRequestInitialTimes","remainingRequestItemTimes","testingOperation","selectorShape","selectivities","mediatorJoinSelectivity","selectivity","selectivityModifier","cardinalityRemaining","sum","ActorRdfJoinMultiBind","minMaxCardinalityRatio","isLeaf","createBindStream","bindOrder","baseStream","operationBinder","optional","autoStartSubBindings","binder","bindFilter","bindingsMerger","subBindings","joinLeftMetadata","joinRightMetadatas","operationBindings","bindOperation","bindOperationCardinality","canBindWithOperation","valid","receiveInitialCostRemaining","receiveItemCostRemaining","ActorRdfJoinMultiEmpty","getCardinality","joinVariables","_metadatas","ActorRdfJoinMultiSmallestFilterBindings","limitEntriesMin","entriesSorted","first","second","secondIndex","secondSharedVariables","sharedVariables","variableFirst","variableSecond","remaining","secondIn","remainingIn","smallestStream1","commonVariables","smallestStream1Projected","binding","commonVariable","filterBindings","joinedEntry","KeysRdfJoin","lastPhysicalJoin","unshift","firstIndex","remain","mul","ActorRdfJoinMultiSmallest","smallestEntry1","smallestEntry2","firstEntry","entriesWithMetadata","acc","ActorRdfJoinNestedLoop","ActorRdfJoinNone","ActorRdfJoinSingle","includeInLogs","ActorRdfJoinSymmetricHash","BindingsIndex_1","ActorRdfJoinMinusHashUndef","buffer","index","BindingsIndex","ClosableTransformIterator","data","contains","onClose","bufferMetadata","hashTerm","isBindingsValid","dataIt","dataKey","subDataIt","containsRecursive","validKeys","dataIndexes","subDatas","subKey","ActorRdfJoinMinusHash","hashNonClashing","actor_rdf_join_inner_multi_bind_1","ActorRdfJoinOptionalBind","BindingsIndexDef_1","BindingsIndexUndef_1","ActorRdfJoinOptionalHash","blocking","constructIndex","undef","BindingsIndexUndef","BindingsIndexDef","getFirst","indexBindings","b","indexActive","iterators","hashFn","v","getRecursive","matchingRecursive","getRecursiveFirst","ActorRdfJoinOptionalNestedLoop","bus_rdf_join_selectivity_1","ActorRdfJoinSelectivityVariableCounting","ActorRdfJoinSelectivity","accuracy","getPatternCost","cost","getJoinTypes","operation1","operation2","joinTypes","JoinTypes","unboundSS","unboundSP","unboundSO","unboundSG","boundSS","boundSP","boundSO","boundSG","unboundPS","unboundPP","unboundPO","unboundPG","boundPS","boundPP","boundPO","boundPG","unboundOS","unboundOP","unboundOO","unboundOG","boundOS","boundOP","boundOO","boundOG","unboundGS","unboundGP","unboundGO","unboundGG","boundGS","boundGP","boundGO","boundGG","getOperationsPairwiseJoinCost","MAX_PAIRWISE_COST","joinType","getOperationsJoinCost","totalCost","costEntries","pattern1","pattern2","factor","bus_rdf_metadata_accumulate_1","ActorRdfMetadataAccumulateCanContainUndefs","ActorRdfMetadataAccumulate","ActorRdfMetadataAccumulateCardinality","dataset","subsetOf","ActorRdfMetadataAccumulatePageSize","pageSize","ActorRdfMetadataAccumulateRequestTime","RdfJsQuadDestination_1","ActorRdfUpdateQuadsRdfJsStore","ActorRdfUpdateQuadsDestination","getContextDestination","remove","getDestination","RdfJsQuadDestination","event_emitter_promisify_1","store","promisifyEventEmitter","import","_requireExistence","_dropGraphs","deleteGraph","allQuads","stringToTerm","eventEmitter","once","immutable_1","bindingsToString_1","Bindings","dataFactory","contextHolder","mapIterable","iteratorToIterable","fn","Symbol","other","createBindingsWithContexts","mergeWith","merger","mergeContext","contextMergeHandlers","otherContext","allKeys","newContextData","handledKeys","keysSetOtherContext","keysBothContext","occursInBoth","setContextEntry","setContextEntryRaw","deleteContextEntry","deleteContextEntryRaw","getContext","getContextEntry","iterable","callback","Bindings_1","mergeHandlers","fromBindings","fromRecord","record","raw","Actor","ActorHttpInvalidate","ActorHttpInvalidate_1","ActorHttpInvalidateListenable","invalidateListeners","listener","bnodeCounter","getSafeBoolean","getBaseExpressionContext","now","extensionFunctionCreator","extensionFunctions","functionNamedNode","getExpressionContext","_mediatorQueryOperation","bnode","exists","createExistenceResolver","not","readOnly","child","ActorQueryOperation_1","operationName","cachifyMetadata","ActorQueryOperationTyped_1","TRUE","literal","materializeTerm","createValuesFromBindings","newBinding","strictTargetVariables","originalBindings","extend","createGroup","project","bindingKey","curVariable","recursionResult","recursionResultExpression","recursionResultInput","valueBindings","keyString","aggregator","BusQueryOperation","BusIndexed","actorIdentifierFields","actionIdentifierFields","ClosableIterator","_source","DESTINATION","destinationClose","destinationEmitError","destinationSetReadable","removeListener","QuadTermUtil_1","isTermVariable","getDuplicateElementLinks","variableElements","duplicateVariables","forEachTermsNested","val","duplicateElementLinks","elements","remainingElements","elementVariables","forceEstimateCardinality","getMetadataCb","metadataRaw","quadsMetadataToBindingsMetadata","validateMetadataQuads","metadataQuads","quadsOrderToBindingsOrder","orderDef","quadsOrder","mappedVariables","variableName","direction","filterNonDefaultQuads","reduceTermsNested","filteredOutput","keyLeft","keysLeft","split","valueLeft","getValueNestedPath","keysRight","matchPatternMappings","instrumentIterator_1","baseArray","array","el","constructState","partialMetadata","cardinalityJoined","cardinalityThis","variableOccurrences","multiOccurrenceVariables","entriesWithoutCommonVariables","hasCommon","leftWithoutCommonVariables","parentPhysicalQueryPlanNode","planMetadata","stashChildren","node","logicalOperator","instrumentIterator","counters","appendMetadata","cardinalityReal","timeSelf","timeLife","cardinalities","joinCoefficients","unstashChild","consumeChunkAsIterator","_transform","instrumentIteratorInner","top","_profileInstrumented","readOld","startTime","performance","ActorRdfUpdateQuads","actor_context_preprocess_query_source_skolemize_1","ActorRdfUpdateQuads_1","deskolemizeStream","id","deskolemizeQuad","deskolemize","isDataDestinationRawType","dataDestination","fileUrl","hashPosition","CONTEXT_KEY_LOGGER","includeCredentials","auth","fetch","httpTimeout","httpBodyTimeout","httpRetryCount","httpRetryDelay","httpRetryOnServerError","recoverBrokenLinks","datetime","httpProxyHandler","cliArgsHandlers","jsonLdContext","documentLoader","strictValues","parserOptions","processingHtmlScript","extractAllScripts","sourcesBinding","discoveredLinks","setRaw","getRaw","hasRaw","contexts","keyName","toJS","for","maybeActionContext","ContextEntries_1","beforeActors","bus","subscribe","addDependencies","getContextLogger","runObservable","onRun","deinitialize","getDefaultLogData","dataActual","actor","logTrace","trace","debug","logInfo","info","warn","logError","logFatal","fatal","actors","observers","dependencyLinks","reorderForDependencies","subscribeObserver","observer","unsubscribe","unsubscribeObserver","publish","reply","dependent","dependencies","dependency","existingDependencies","actorsAfter","actorAfter","dependentPos","activeActorAfterId","validLink","activeActorAfter","Bus_1","Bus","actorsIndex","actorId","getActorIdentifier","actionId","getActionIdentifier","_undefined_","field","ActionContext_1","mediateActor","mediateWith","singleBindingsScope","RdfString","TermTransformer_1","Consts_1","TypeHandling_1","sharedContext","separator","termTransformer","TermTransformer","superTypeProvider","termToNumericOrError","isSubTypeOf","TypeAlias","SPARQL_NUMERIC","transformLiteral","aggregatorComponent","variableValues","component","canSkip","addSeen","E","functions_1","Helpers_1","C","Aggregator_1","Average","AggregatorComponent","summer","regularFunctions","RegularOperator","ADDITION","divider","DIVISION","integer","toRDF","internalTerm","IntegerLiteral","Count","GroupConcat","lastLanguageValid","lastLanguage","string","langString","Ordering_1","Max","Min","Sample","Sum","bindingValues","putBindings","handleDistinct","bindingList","snd","localeCompare","Average_1","Count_1","GroupConcat_1","Max_1","Min_1","Sample_1","Sum_1","avg","group_concat","sample","BaseAggregateEvaluator_1","SyncEvaluator_1","AggregateEvaluator","BaseAggregateEvaluator","throwError","SyncEvaluator","completeContext","errorOccurred","isWildcard","wildcardAggregator","startTerm","safeThrow","err","AsyncEvaluator_1","AlgebraTransformer_1","DateTimeHelpers_1","AsyncRecursiveEvaluator_1","typeCache","discoverer","getSuperType","defaultTimeZone","extractTimeZone","algExpr","creator","baseContext","transformer","AlgebraTransformer","transformAlgebra","AsyncRecursiveEvaluator","mapping","coerceEBV","evaluateAsInternal","SyncRecursiveEvaluator_1","SyncRecursiveEvaluator","Err","BaseExpressionEvaluator_1","BaseExpressionEvaluator","subEvaluators","ExpressionType","Term","_mapping","Variable","Operator","evalOperator","SpecialOperator","evalSpecialOperator","Named","evalNamed","Existence","evalExistence","Aggregate","evalAggregate","AsyncExtension","evalAsyncExtension","InvalidExpressionType","argPromises","argResults","applyAsync","_evalAsyncArgs","NoExistenceHook","BooleanLiteral","NoAggregator","transformRDFTermUnsafe","aggregators_1","WildcardCountAggregator_1","Aggregator","WildcardCountAggregator","EmptyAggregateError","expressionToVar","UnboundVariableError","SyncExtension","evalSyncExtension","applySynchronously","Expressions_1","Serialization_1","str","InvalidArgumentTypes","STR","EBVCoercionError","valueTerm","RDFsubject","RDFpredicate","RDFobject","Literal","typedValue","dataType","strValue","NumericLiteral","replace","specificFormatter","TypeURL","XSD_INTEGER","toFixed","XSD_DECIMAL","XSD_FLOAT","XSD_DOUBLE","jsExponential","toExponential","jsMantisse","jsExponent","exponent","XSD_BOOLEAN","RDF_LANG_STRING","XSD_STRING","XSD_DATE_TIME","serializeDateTime","XSD_TIME","serializeTime","XSD_DATE","serializeDate","DurationLiteral","XSD_DURATION","serializeDuration","XSD_DAY_TIME_DURATION","XSD_YEAR_MONTH_DURATION","NonLexicalLiteral","openWorldType","lit","BaseFunction","definition","monomorph","handleInvalidTypes","concreteFunction","arity","overloads","search","functionClass","checkArity","expressions_1","OverloadTree_1","identifier","Builder","overloadTree","OverloadTree","collected","collect","wrapInvalidLexicalProtected","func","InvalidLexicalForm","argTypes","addInvalidHandling","addOverload","copy","from","to","impl","getImplementationExact","UnexpectedError","onUnary","onUnaryTyped","onBinary","onBinaryTyped","onTernaryTyped","a1","a2","a3","onTernary","onQuaternaryTyped","a4","onTerm1","onTerm3","t1","t2","t3","onQuad1","onLiteral1","onBoolean1","onBoolean1Typed","onString1","onString1Typed","onLangString1","onStringly1","SPARQL_STRINGLY","onStringly1Typed","onNumeric1","onDateTime1","numericConverter","evalHelper","decimal","float","double","arithmetic","numberTest","numeric","bool","stringTest","booleanTest","dateTimeTest","num","DecimalLiteral","FloatLiteral","DoubleLiteral","StringLiteral","lang","LangStringLiteral","date","DateTimeLiteral","variableExpression","Parsing_1","xsdToString","declare","xsdToFloat","parseXSDFloat","CastError","xsdToDouble","xsdToDecimal","parseXSDDecimal","xsdToInteger","parseXSDInteger","xsdToDatetime","dateTime","parseDateTime","hours","minutes","seconds","xsdToBoolean","xsdToTime","TimeLiteral","parseTime","xsdToDate","DateLiteral","parseDate","xsdToDuration","parseDuration","xsdToDayTimeDuration","DayTimeDurationLiteral","trimToDayTimeDuration","parseDayTimeDuration","xsdToYearMonthDuration","YearMonthDurationLiteral","trimToYearMonthDuration","parseYearMonthDuration","depth","implementation","generalOverloads","literalOverLoads","promotionCount","getSubtree","overrideType","generalType","asGeneralType","cacheIter","searchIndex","literalExpression","isLiteralTermExpression","searchStack","getSubTreeWithArg","startIndex","addToCache","getDefault","lruCache","argumentTypes","_addOverload","argumentType","_argumentTypes","nextTree","newNode","asOverrideType","typePromotion","addPromotedOverload","typeToPromote","conversionFunction","funcConf","concreteType","asKnownLiteralType","subExtensionTable","superTypeDictTable","getSuperTypes","matchType","tree","prioA","matchTypeA","prioB","matchTypeB","sortedType","bignumber_js_1","relative_to_absolute_iri_1","spark_md5_1","uuid","SpecAlgos_1","Core_1","X","_1","NOT","unaryPlus","UPLUS","unaryMinus","UMINUS","multiplication","MULTIPLICATION","BigNumber","times","toNumber","division","div","ExpressionError","addition","plus","dur","addDurationToDateTime","defaultedDurationRepresentation","defaultedDateTimeRepresentation","time","subtraction","SUBTRACTION","minus","date1","date2","elapsedDuration","negateDuration","equality","EQUAL","toUTCDate","getTime","RegularFunction","_left","_right","RDFEqualTypeError","RDFTermEqual","dur1","dur2","yearMonthDurationsToMonths","defaultedYearMonthDurationRepresentation","dayTimeDurationsToSeconds","defaultedDayTimeDurationRepresentation","time1","time2","inequality","NOT_EQUAL","lesserThan","LT","dur1L","dur2L","greaterThan","GT","lesserThanEqual","LTE","greaterThanEqual","GTE","isIRI","IS_IRI","isBlank","IS_BLANK","isLiteral","IS_LITERAL","isNumeric","IS_NUMERIC","LANG","DATATYPE","NamedNode","IRI","STRDT","STRLANG","toLowerCase","UUID","v4","STRUUID","STRLEN","SUBSTR","startingLoc","sub","UCASE","toUpperCase","LCASE","STRSTARTS","arg1","arg2","IncompatibleLanguageOperation","STRENDS","endsWith","CONTAINS","STRBEFORE","STRAFTER","ENCODE_FOR_URI","encodeURI","langmatches","LANG_MATCHES","tag","range","langMatches","REGEX","text","flags","REPLACE","replacement","abs","ABS","round","ROUND","ceil","CEIL","floor","FLOOR","rand","RAND","random","NOW","toDateTimeRepresentation","timeZone","year","YEAR","month","MONTH","day","DAY","HOURS","MINUTES","SECONDS","timezone","TIMEZONE","duration","zoneHours","zoneMinutes","InvalidTimezoneCall","tz","TZ","extractRawTimeZone","MD5","SHA1","SHA256","sha256","SHA384","sha384","SHA512","sha512","triple","TRIPLE","Quad","SUBJECT","PREDICATE","OBJECT","istriple","IS_TRIPLE","uplus","uminus","isiri","isuri","isblank","isliteral","isnumeric","uri","strdt","strlang","struuid","strlen","substr","ucase","lcase","strstarts","strends","strbefore","strafter","encode_for_uri","regex","md5","bound","bound_","BOUND","ifSPARQL","valFirst","coalesce","errors","CoalesceError","logicalOr","leftExpr","rightExpr","logicalAnd","sameTerm","inSPARQL","inRecursiveAsync","inRecursiveSync","needle","InError","nextExpression","shift","notInSPARQL","_in","specialFunctions","IN","isIn","concatTree","CONCAT","pLits","pTerm","lits","langAllEqual","bnodeTree","BNODE","strInput","BlankNode","BNODE_","if","sameterm","in","notin","_isWildCard","_matchLangTag","RegExp","reg","global","langTags","rangeTags","lI","rI","NamedFunctions_1","RegularFunctions_1","SpecialFunctions_1","definitions","specialDefinitions","SpecialFunction","namedDefinitions","NamedFunction","AggregateEvaluator_1","Errors_1","AsyncAggregateEvaluator_1","algebraConfig","creatorConfig","transformTerm","transformOperator","transformNamed","transformExistence","transformAggregate","transformWildcard","wildcard","SpecialOperators","specialOp","specialArgs","specialFunc","InvalidArity","Operators","UnknownOperator","regularOp","regularArgs","regularFunc","hasCorrectArity","wrapSyncFunction","ExtensionFunctionError","wrapAsyncFunction","funcName","namedArgs","NamedOperators","namedFunc","namedFunctions","syncExtensionFunc","simpleAppl","asyncExtensionFunc","asyncAppl","UnknownNamedOperator","RDFString","P","InvalidExpression","InvalidTermType","superTypeDict","getSuperTypeDict","dateVal","isNaN","intVal","isFloat","isDouble","doubleVal","SetFunction","RegularOperators","rep","toJSDate","jumpDeltaOfDate","setFullYear","getFullYear","temp","years","days","getMonth","getDate","getHours","getMinutes","getSeconds","defaultTimezone","localTime","minutesCorrectionLocal","getTimezoneOffset","hourCorrectionUTC","minutesCorrectionUTC","zoneContained","exec","pp","arg0","cast","dateString","payload","functionError","stack","comparePrimitives","valueA","valueB","termA","termB","strict","typeDiscoveryCallback","_TERM_ORDERING_PRIORITY","orderSubject","orderPredicate","orderObject","litA","litB","isGreater","isEqual","myLitA","myLitB","compareType","orderLiteralTypes","InvalidCompareArgumentTypes","DefaultGraph","parseTimeZone","timeZoneStr","replaceAll","dateStr","formatted","ParseError","dateStrings","maximumDayInMonthFor","__parseTime","timeStr","timeStrings","durationStr","dayNotation","timeNotation","formattedDayDur","durationStrings","formattedTimeDur","sign","simplifyDurationRepresentation","numb","NaN","NEGATIVE_INFINITY","parseInt","dateTimeStr","numSerializer","toLocaleString","minimumIntegerDigits","useGrouping","serializeTimeZone","zeroString","fDiv","high","low","intDiv","remainder","yearValue","monthValue","additionalYears","newDate","tempDiv","carry","d1","d2","diff","cached","__depth","subExtension","knownValue","extensionTableInit","_key","extensionTableInput","extensionTableBuilderInitKey","baseRes","baseType","XSD_DATE_TIME_STAMP","XSD_NORMALIZED_STRING","XSD_TOKEN","XSD_LANGUAGE","XSD_NM_TOKEN","XSD_NAME","XSD_NC_NAME","XSD_ENTITY","XSD_ID","XSD_ID_REF","XSD_NON_POSITIVE_INTEGER","XSD_NEGATIVE_INTEGER","XSD_LONG","XSD_INT","XSD_SHORT","XSD_BYTE","XSD_NON_NEGATIVE_INTEGER","XSD_POSITIVE_INTEGER","XSD_UNSIGNED_LONG","XSD_UNSIGNED_INT","XSD_UNSIGNED_SHORT","XSD_UNSIGNED_BYTE","XSD_G_MONTH","XSD_G_MONTHDAY","XSD_G_YEAR","XSD_G_YEAR_MONTH","XSD_G_DAY","XSD_ANY_URI","typeAliasCheck","initTypeAliasCheck","asTermType","types_1","LoggerVoid","Logger","MediatorAll","Mediator","validActors","testResults","testResult","MediatorCombinePipeline","filterErrors","_testResults","getOrder","elem","TypeError","actor1","actor2","MediatorCombineUnion","combiner","createCombiner","MediatorJoinCoefficientsFixed","promises","coefficients","costs","coeff","cpuWeight","memoryWeight","timeWeight","ioWeight","maxCost","minIndex","minValue","bestActor","MediatorNumber","indexPicker","createIndexPicker","tests","prev","curr","getOrDefault","defaultValue","ignoreErrors","dummy","MediatorRace","subError","validateMetadataBindings","lastReturn","lastReturnValue","getLevelOrdinal","level","LEVELS","globalObject","mathceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","n","coeffToString","a","s","z","j","r","charCodeAt","y","xc","c","yc","k","e","l","intCheck","String","isOdd","charAt","toFixedPoint","len","zs","configObject","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","valueOf","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","prefix","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","alphabetHasNormalDecimalDigits","alphabet","caseChanged","isNum","_isBigNumber","substring","DEBUG","format","rm","c0","ne","maxOrMin","normalise","sd","d","ni","rd","pows10","out","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","obj","p","hasOwnProperty","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","minimum","dp","Uint32Array","toBaseOut","baseIn","baseOut","arrL","arr","reverse","callerIsToString","pow","multiply","m","xlo","xhi","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","q","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","p1","p2","absoluteValue","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","mod","integerValue","isEqualTo","eq","isGreaterThan","gt","isGreaterThanOrEqualTo","gte","isLessThan","lt","isLessThanOrEqualTo","lte","isNegative","isPositive","isZero","t","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","toFormat","g1","g2","intPart","fractionPart","isNeg","intDigits","toFraction","md","d0","exp","n0","n1","toPrecision","toJSON","serialize","Function","cv","ci","defineProperty","event","ReflectOwnKeys","R","Reflect","ReflectApply","target","receiver","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","init","emitter","errorListener","resolver","eventTargetAgnosticAddListener","handler","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","events","existing","warning","newListener","warned","w","console","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","addEventListener","wrapListener","removeEventListener","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","spliceOne","off","removeAllListeners","rawListeners","eventNames","equal","ArrayBuffer","isView","utils","common","sha","ripemd","hmac","sha224","ripemd160","assert","BlockHash","pending","pendingTotal","outSize","hmacStrength","padLength","endian","_delta8","_delta32","msg","enc","join32","_update","_pad","_digest","bytes","Hmac","Hash","inner","outer","_init","rotl32","sum32","sum32_3","sum32_4","RIPEMD160","h","f","K","Kh","inherits","A","B","D","Ah","Bh","Ch","Dh","Eh","T","rh","sh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","W","SHA224","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","g","T1","T2","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero2","word","zero8","toHex","buf","pos","lo","hi","DELETE","SHIFT","SIZE","MASK","NOT_SET","SetRef","ref","OwnerID","ensureSize","iter","__iterate","returnTrue","wrapIndex","uint32Index","wholeSlice","begin","resolveBegin","resolveIndex","resolveEnd","defaultIndex","Infinity","IS_COLLECTION_SYMBOL","isCollection","maybeCollection","IS_KEYED_SYMBOL","isKeyed","maybeKeyed","IS_INDEXED_SYMBOL","isIndexed","maybeIndexed","isAssociative","maybeAssociative","Collection","Seq","KeyedCollection","KeyedSeq","__proto__","IndexedCollection","IndexedSeq","SetCollection","SetSeq","Keyed","Indexed","IS_SEQ_SYMBOL","isSeq","maybeSeq","IS_RECORD_SYMBOL","isRecord","maybeRecord","isImmutable","maybeImmutable","IS_ORDERED_SYMBOL","isOrdered","maybeOrdered","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorResult","iteratorDone","hasIterator","maybeIterable","getIteratorFn","isIterator","maybeIterator","getIterator","iteratorFn","KEYS","ENTRIES","inspect","toSource","isArrayLike","emptySequence","toSeq","seq","maybeIndexedSeqFromValue","fromEntrySeq","isKeysIterable","toSetSeq","ObjectSeq","seqFromValue","__toString","cacheResult","_cache","__iterateUncached","entrySeq","__iterator","__iteratorUncached","toKeyedSeq","keyedSeqFromValue","toIndexedSeq","indexedSeqFromValue","of","ArraySeq","_array","notSetValue","ii","_object","_keys","EMPTY_SEQ","CollectionSeq","collection","_collection","step","IS_MAP_SYMBOL","isMap","maybeMap","isOrderedMap","maybeOrderedMap","isValueObject","maybeValue","hashCode","is","imul","smi","i32","defaultValueOf","o","hashNullish","hashed","hashNumber","STRING_HASH_CACHE_MIN_STRLEN","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","nodeType","uniqueID","documentElement","getIENodeHash","nextHash","isExtensible","configurable","writable","hashJSObj","sym","symbolMap","hashSymbol","nullish","_objHashUID","WeakMap","ToKeyedSequence","indexed","useKeys","_iter","_useKeys","valueSeq","this$1$1","reversedSequence","reverseFactory","mapper","mappedSequence","mapFactory","ToIndexedSequence","ToSetSequence","FromEntriesSequence","validateEntry","indexedCollection","flipFactory","flipSequence","makeSequence","flip","cacheResultThrough","filterFactory","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","skipping","flattenFactory","flatSequence","stopped","flatDeep","currentDepth","sortFactory","comparator","defaultComparator","isKeyedCollection","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","iters","zipAll","zipSequence","sizes","isDone","steps","reify","collectionClass","arrCopy","newArr","invariant","condition","assertNotInfinite","coerceKeyPath","keyPath","isPlainObject","proto","parentProto","nextProto","isDataStructure","quoteString","_ignoreError","shallowCopy","collectionCopy","updateIn$1","updater","updatedValue","updateInDeeply","inImmutable","wasNotSet","existingValue","newValue","nextExisting","nextUpdated","emptyMap","setIn$1","setIn","removeIn","deleteIn","update$1","updateIn","merge$1","mergeIntoKeyedWith","mergeWith$1","collections","collection$1","__ownerID","withMutations","mergeIntoCollection","oldVal","mergeWithSources","mergeDeep$1","mergeDeepWithSources","mergeDeepWith$1","deepMerger","oldValue","newDataStructure","oldSeq","newSeq","deepMergerWith","mergeItem","hasVal","nextVal","mergeDeep","mergeDeepWith","mergeIn","mergeDeepIn","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","__altered","keyValues","_root","updateMap","deleteAll","__hash","OrderedMap","sortBy","MapIterator","iterate","ownerID","makeMap","MapPrototype","removeAll","ArrayMapNode","keyHash","didChangeSize","didAlter","removed","MAX_ARRAY_MAP_SIZE","ValueNode","createNodes","isEditable","newEntries","BitmapIndexedNode","bitmap","nodes","bit","popCount","keyHashFrag","updateNode","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","HashArrayMapNode","expandNodes","isLeafNode","newBitmap","newNodes","setAt","canEdit","newLen","newArray","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","HashCollisionNode","mergeIntoNode","keyMatch","maxIndex","EMPTY_MAP","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","subNode","__prev","root","newRoot","newSize","idx1","idx2","IS_LIST_SYMBOL","isList","maybeList","List","empty","emptyList","makeList","VNode","setSize","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","oldSize","arguments$1","seqs","argument","iterateList","DONE","ListPrototype","removeBefore","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","tailPos","tail","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","EMPTY_ORDERED_MAP","emptyOrderedMap","_map","_list","updateOrderedMap","newMap","newList","makeOrderedMap","omap","toMap","IS_STACK_SYMBOL","isStack","maybeStack","Stack","emptyStack","pushAll","head","_head","peek","makeStack","EMPTY_STACK","StackPrototype","unshiftAll","IS_SET_SYMBOL","isSet","maybeSet","isOrderedSet","maybeOrderedSet","deepEqual","notAssociative","flipped","allEqual","bSize","mixin","ctor","methods","keyCopier","result$1","emptySet","fromKeys","keySeq","intersect","sets","SetPrototype","union","updateSet","didChanges","mapEntries","mapped","toRemove","OrderedSet","__make","__empty","EMPTY_SET","makeSet","EMPTY_RANGE","Range","_start","_step","searchValue","possibleIndex","offsetValue","lastIndexOf","getIn$1","searchKeyPath","getIn","hasIn$1","toObject","isIterable","useTuples","toOrderedMap","toOrderedSet","toSet","toStack","toList","__toStringMapper","singleton","concatSeq","concatFactory","returnValue","partition","isKeyedIter","coerce","partitionFactory","find","findEntry","sideEffect","isFirst","reducer","initialReduction","reduceRight","butLast","isEmpty","countBy","countByFactory","entriesSequence","entryMapper","filterNot","found","findKey","findLast","findLastEntry","findLastKey","flatMapFactory","searchKey","groupBy","groupByFactory","hasIn","isSubset","isSuperset","keyOf","keyMapper","last","lastKeyOf","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashCollection","CollectionPrototype","chain","mapKeys","KeyedCollectionPrototype","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","defaultZipper","zipWith","IndexedCollectionPrototype","SetCollectionPrototype","reduction","useFirst","emptyOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","PairSorting","LeftThenRight","RightThenLeft","Record","defaultValues","hasInitialized","throwOnInvalidDefaultValues","RecordType","indices","RecordTypePrototype","_indices","_name","_defaultValues","propName","recordName","setProp","_values","RecordPrototype","displayName","recordSeq","newValues","makeRecord","getDescriptiveName","likeRecord","EMPTY_REPEAT","Repeat","_value","fromJS","converter","fromJSWith","defaultConverter","parentValue","converted","Iterable","superCtor","super_","TempCtor","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","versions","cwd","chdir","dir","umask","__createBinding","k2","BlankNode_1","DefaultGraph_1","Literal_1","NamedNode_1","Quad_1","Variable_1","dataFactoryCounter","blankNodePrefix","languageOrDatatype","INSTANCE","fromTerm","original","fromQuad","resetBlankNodeCounter","RDF_LANGUAGE_STRING","isTermGrounded","termToSignature","quadToSignature","sha1hex","hashTerms","getGraphBlankNodes","uniqGraph","deindexGraph","indexGraph","getQuadsWithoutBlankNodes","getQuadsWithBlankNodes","hasValue","hashValues","getBijectionInner","getBijection","isomorphic","graphA","graphB","nonBlankIndexA","nonBlankIndexB","blankQuadsA","blankQuadsB","blankNodesA","blankNodesB","groundedHashesA","groundedHashesB","hashesA","ungroundedHashesA","hashesB","ungroundedHashesB","hashKeyA","bijection","blankNodeA","blankNodeAString","blankNodeAHash","blankNodeBString","arraysEqual","blankNodeB","array1","array2","hashValue","everyTerms","indexedGraph","stringQuadToQuad","getBlankNodes","groundedHashes","ungroundedHashes","hashNeeded","initialGroundedNodesCount","grounded","uniques","termKey","quadSignatures","quadTerm","getTerms","getLiteralValue","getLiteralType","getLiteralLanguage","TermUtil_1","literalValue","trim","stringTerms","ignoreTags","lastIndex","inQuote","char","escaped","stringQuad","desc","getOwnPropertyDescriptor","__esModule","matchPatternComplete","matchPattern","matchTerm","everyTermsNested","reduceTerms","mapTerms","filterQuadTermNamesNested","filterQuadTermNames","filterTerms","forEachTerms","collectNamedTerms","getNamedTerms","TRIPLE_TERM_NAMES","QUAD_TERM_NAMES","ignoreDefaultGraph","checker","namedTerms","defaultCb","namedTerm","cb","names","keysS","keysP","keysO","keysG","initialValue","opt","_pattern","_a","_b","skipVarMapping","returnMappings","getQuads","getDefaultGraphs","getLiterals","getNamedNodes","getTermsOfType","TERM_TYPES","removeDotSegments","segmentBuffers","isCharacterAllowedAfterRelativePathSegment","removeDotSegmentsOfPath","colonPosition","searchOffset","pathSeparator","character","relativeIRI","baseFragmentPos","baseQueryPos","relativeColonPos","valueColonPos","baseColonPos","baseIRIScheme","baseSlashAfterColonPos","baseIRIPath","baseIRILastSlashPos","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","tmp","rhex","hex","toUtf8","unescape","encodeURIComponent","hexToBinaryString","fromCharCode","SparkMD5","reset","clamp","targetArray","sourceArray","byteLength","Uint8Array","append","appendBinary","contents","_buff","_length","_hash","buff","_finish","getState","setState","hashBinary","content","returnUInt8Array","subarray","utf8Str2ArrayBuffer","md51_array","__setModuleDefault","__importStar","__importDefault","toSparqlJs","toSparql","sparqlAlgebra_1","factory_1","sparql_1","util_1","stringType","createTerm","flattenMulti","createBoundAggregate","createAggregateExpression","createDescribe","createFrom","def","createGraph","createLink","createMinus","createNop","createNps","createOrderBy","createReduced","createService","createSlice","createZeroOrMorePath","createZeroOrOnePath","createExistenceExpression","createNamedExpression","createWildcardExpression","Wildcard","deleteQuads","insertQuads","createLoad","addSilent","createClear","createCreate","createMove","createCopy","newChildren","rdf_isomorphic_1","eTypes","resetContext","translateOperation","removeQuadsRecursive","removeQuads","translateExpression","translateProject","translatePattern","triples","translateBgp","queryType","translateConstruct","translateDistinct","translateExtend","translateFrom","translateFilter","translateGraph","aggs","translateBoundAggregate","translateGroup","translateJoin","leftjoin","translateLeftJoin","translateMinus","translateOrderBy","translatePathComponent","translatePath","reduced","translateReduced","translateService","translateSlice","arrayToPattern","translateUnion","translateValues","translateCompositeUpdate","use","updateType","convertUpdatePatterns","using","translateDeleteInsert","translateLoad","translateClearCreateDrop","translateClear","translateCreate","translateDrop","translateUpdateGraphShortcut","translateAdd","translateMove","translateCopy","aggregation","translateAggregateExpression","translateExistenceExpression","function","translateNamedExpression","translateOperatorExpression","translateTermExpression","translateWildcardExpression","pathType","items","translateAlt","inv","translateInv","translateLink","translateNps","translateOneOrMorePath","translateSeq","translateZeroOrMorePath","translateZeroOrOnePath","translateTerm","replaceAggregatorVariables","st","isSimpleTerm","select","extensions","descending","objectContainsValues","having","vals","keyGraphs","globalNames","newGraphs","graphNameSet","graphPatterns","graphName","splitBgpToGraphs","Generator","varCount","useQuads","translateQuery","sparql","thingy","findAllVariables","translateGraphPattern","mapAggregate","vars","generateFreshVar","translateInlineData","PV","isVariable","translateQuad","translateAggregates","translateSingleUpdate","translateBlankNodesToVariables","isTerm","inScope","simplifyPath","translatePathPredicate","recurseGraph","filters","nonfilters","accumulateGroupGraphPattern","isQuad","hasQuadVariables","normals","inverted","normalElement","invertedElement","simplifiedPath","parser","_resetBlanks","typeVals","G","simplifiedJoin","subthingy","translateUpdateGraphLoad","translateUpdateGraph","deleteTriples","insertTriples","translateUpdateTriplesBlock","translateInsertDelete","currentGraph","currentTriples","blankToVariableMapping","variablesRaw","createUniqueVariable","algebra_1","objectify","algebra","addVariable","v2","recurseTerm","callbacks","doRecursion","recurseOp","copyMetadata","recurseResult","toCopyMetadata","mapOp","mapExpression","cloneOperation","cloneExpression","label","labelLoop","_options","_prefixByIri","prefixIris","isString","iriList","_prefixRegex","_usedPrefixes","_sparqlStar","_indent","indent","_newline","newline","_explicitDatatype","explicitDatatype","toQuery","mapJoin","toEntity","toExpression","variableToString","toUpdate","baseAndPrefixes","allPrefixes","toPattern","encodeTriples","parts","equalTerms","keyword","inline","valuesList","lparen","rparen","service","escape","escapeReplacer","lexical","encodeIRI","escapeReplacements","term1","term2","sep","prefixMatch","currentOptions","createGenerator","SparqlParser","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","$VD","$VE","$VF","$VG","$VH","$VI","$VJ","$VK","$VL","$VM","$VN","$VO","$VP","$VQ","$VR","$VS","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","$Ve1","$Vf1","$Vg1","$Vh1","$Vi1","$Vj1","$Vk1","$Vl1","$Vm1","$Vn1","$Vo1","$Vp1","$Vq1","$Vr1","$Vs1","$Vt1","$Vu1","$Vv1","$Vw1","$Vx1","$Vy1","$Vz1","$VA1","$VB1","$VC1","$VD1","$VE1","$VF1","$VG1","$VH1","$VI1","$VJ1","$VK1","$VL1","$VM1","$VN1","$VO1","$VP1","$VQ1","$VR1","$VS1","$VT1","$VU1","$VV1","$VW1","$VX1","$VY1","$VZ1","$V_1","$V$1","$V02","$V12","$V22","$V32","$V42","$V52","$V62","$V72","$V82","$V92","$Va2","$Vb2","$Vc2","$Vd2","$Ve2","$Vf2","$Vg2","$Vh2","$Vi2","$Vj2","$Vk2","$Vl2","$Vm2","$Vn2","$Vo2","$Vp2","$Vq2","$Vr2","$Vs2","$Vt2","$Vu2","$Vv2","$Vw2","$Vx2","$Vy2","$Vz2","$VA2","yy","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","propertyList","entity","$0","pathOnly","insertBnodesAll","insertBnodes","$","resolveIRI","groupDatasets","skipValidation","getAggregatesOfExpression","selectVar","groupVar","getExpressionId","usedVars","getVariablesFromExpression","usedVar","subqueries","selectedVarIds","subqueryIds","selectedVarId","appendAllTo","duplicates","sortedArray","getDuplicatesInArray","lowercase","toInt","toVar","valuesObject","appendTo","ensureNoVariables","ensureNoBnodes","unionAll","boundVars","getBoundVarsFromGroupGraphPattern","boundVar","ensureSparqlStar","degroupSingle","applyAnnotations","objectListToTriples","RDF_TYPE","annotation","listItems","listTriples","RDF_FIRST","RDF_REST","RDF_NIL","createList","createOperationTree","negatedLiteral","createTypedLiteral","unescapeString","namePos","expansion","uriString","nestedTriple","table","defaultActions","parseError","recoverable","vstack","lstack","recovering","lexer","sharedState","setInput","yylloc","yyloc","token","ranges","symbol","preErrorSymbol","newState","expected","yyval","lex","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","RDF","XSD","basePath","baseRoot","operatorName","attr","initialExpression","operationList","fromClauses","groupName","fromClause","defaults","annotations","blankId","escapeSequence","partialSurrogatesWithoutEndpoint","trimLength","sequence","unicode4","unicode8","escapedChar","charCode","objectList","otherTriples","visitExpression","_applyAnnotations","newTriples","EOF","_input","_more","_backtrack","matched","conditionStack","unput","lines","oldLines","backtrack_lexer","less","pastInput","past","upcomingInput","pre","test_match","indexed_rule","backup","tempMatch","rules","_currentRules","flex","popState","conditions","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","skipUngroupedVariableCheck","prefixesCopy","_nil","_parse","_stringify","_v","_v2","_v3","_v4","_validate","_version","_interopRequireDefault","getOutputLength","inputLength8","safeAdd","lsw","md5cmn","cnt","md5ff","md5gg","md5hh","md5ii","length32","hexTab","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","bytesToWords","_default","randomUUID","rnds8","ROTL","H","N","M","unsafeStringify","byteToHex","_rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","rng","msecs","nsecs","dt","tl","tmh","_md","URL","DNS","hashfunc","generateUUID","namespace","_namespace","stringToBytes","_native","rnds","_sha","_regex","extensionEntries","isSourceExpression","isPromise","isEventEmitter","isFunction","fromIterable","fromIterator","fromArray","WrappingIterator","ClonedIterator","MappingIterator","identity","IntegerIterator","DESTROYED","ENDED","CLOSED","CLOSING","OPEN","INIT","setTaskScheduler","getTaskScheduler","LinkedList","events_1","linkedlist_1","taskScheduler","createTaskScheduler","task","scheduler","initialState","_readable","_state","waitForDataListener","_changeState","eventAsync","_endAsync","cause","_destroy","closed","destroyed","details","_toStringDetails","resolveItems","pushItem","propertyName","properties","_properties","propertyCallbacks","_propertyCallbacks","getProperties","setProperties","copyProperties","propertyNames","uniq","by","surround","asyncIterator","currentResolve","currentReject","pendingError","tryResolve","tryReject","removeListeners","addSingleListener","emitData","_item","preserve","_index","_sourceStarted","_truncateThreshold","_buffer","_next","ascending","_last","ensureSourceAvailable","_destroySource","destroySource","allowDestination","_maxBufferSize","_reading","_pushedCount","_fillBuffer","doneCalled","_begin","neededItems","_completeClose","_boundPush","_createSource","_loadSourceAsync","_optional","_validateSource","destinationCloseWhenDone","destinationFillBuffer","_readAndTransform","_optionalTransform","pushedCount","_closeWhenDone","_offset","_limit","_filter","_prepender","_appender","_readAndTransformSimple","nextAsync","mappedItem","_insert","inserter","_transformerQueue","transformerQueue","_sources","_currentSource","_pending","loading","_loadSources","_addSource","_destroySources","destroySources","destinationRemoveEmptySources","_removeEmptySources","_readPosition","history","HistoryReader","endsAt","register","readAt","_getSourceProperty","hasProperty","unregister","_history","_trackers","setReadable","tracker","emitError","opts","resolved","scheduleMicrotask","queueMicrotask","scheduleMacrotask","setImmediate","queued","perf","PROCESS","emitWarning","code","AC","AbortController","AS","AbortSignal","onabort","_onabort","reason","aborted","warnACPolyfill","signal","abort","printACPolyfillWarning","LRU_CACHE_IGNORE_AC_WARNING","isPosInt","getUintArray","Uint16Array","ZeroArray","fill","heap","static","HeapCls","ttl","ttlResolution","ttlAutopurge","updateAgeOnGet","updateAgeOnHas","allowStale","noDisposeOnSet","noUpdateTTL","maxEntrySize","sizeCalculation","noDeleteOnFetchRejection","noDeleteOnStaleGet","allowStaleOnFetchAbort","allowStaleOnFetchRejection","ignoreFetchAbort","unsafeExposeInternals","starts","ttls","keyMap","keyList","valList","free","isBackgroundFetch","backgroundFetch","moveToTail","indexes","rindexes","isStale","maxSize","calculatedSize","fetchMethod","dispose","disposeAfter","UintArray","shouldWarn","getRemainingTTL","unref","status","cachedNow","getNow","age","remainingTTL","entrySize","totalCalculatedSize","_i","_s","_st","_k","rentries","rkeys","rvalues","toStringTag","getOptions","__staleWhileFetching","thisp","rforEach","purgeStale","deleted","dump","load","setOptions","maxEntrySizeExceeded","__abortController","hasOptions","peekOptions","ac","fetchOpts","updateCache","ignoreAbort","fetchAborted","fetchError","fetchAbortIgnored","fetchResolved","fetchFail","bf","fetchUpdated","allowStaleAborted","noDelete","returnedStale","__returned","fetchDispatched","rej","fmp","fetchRejected","fetchOptions","forceRefresh","stale","staleVal","fetching","pi","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","prop","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"comunica-browser.js","mappings":"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,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,IAAI,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KACxvNnP,GAAS,CAACtrE,MAAO,WAAoB,EACzC06E,GAAI,CAAC,EACLC,SAAU,CAAC,MAAQ,EAAE,cAAgB,EAAE,SAAW,EAAE,qBAAuB,EAAE,IAAM,EAAE,MAAQ,EAAE,IAAM,EAAE,cAAgB,EAAE,qBAAuB,GAAG,SAAW,GAAG,KAAO,GAAG,OAAS,GAAG,WAAa,GAAG,OAAS,GAAG,SAAW,GAAG,qBAAuB,GAAG,gBAAkB,GAAG,YAAc,GAAG,wBAA0B,GAAG,iBAAmB,GAAG,gBAAkB,GAAG,iBAAmB,GAAG,UAAY,GAAG,kBAAoB,GAAG,gBAAkB,GAAG,gBAAkB,GAAG,MAAQ,GAAG,IAAI,GAAG,YAAc,GAAG,IAAI,GAAG,SAAW,GAAG,WAAa,GAAG,gBAAkB,GAAG,YAAc,GAAG,IAAM,GAAG,gBAAkB,GAAG,iBAAmB,GAAG,IAAI,GAAG,kCAAoC,GAAG,OAAS,GAAG,yBAA2B,GAAG,iBAAmB,GAAG,IAAM,GAAG,IAAI,GAAG,WAAa,GAAG,GAAK,GAAG,IAAI,GAAG,UAAY,GAAG,kBAAoB,GAAG,kBAAoB,GAAG,cAAgB,GAAG,KAAO,GAAG,sBAAwB,GAAG,IAAM,GAAG,oBAAsB,GAAG,kBAAoB,GAAG,yBAA2B,GAAG,gCAAkC,GAAG,gCAAkC,GAAG,gCAAkC,GAAG,YAAc,GAAG,MAAQ,GAAG,GAAK,GAAG,6BAA+B,GAAG,eAAiB,GAAG,YAAc,GAAG,aAAe,GAAG,aAAe,GAAG,OAAS,GAAG,8BAAgC,GAAG,YAAc,GAAG,MAAQ,GAAG,6BAA+B,GAAG,eAAiB,GAAG,IAAM,GAAG,qBAAuB,GAAG,KAAO,GAAG,WAAa,GAAG,mBAAqB,GAAG,MAAQ,GAAG,QAAU,GAAG,OAAS,GAAG,aAAe,GAAG,OAAS,GAAG,WAAa,GAAG,IAAM,GAAG,uBAAyB,GAAG,IAAM,GAAG,uBAAyB,GAAG,4BAA8B,GAAG,uBAAyB,GAAG,UAAY,GAAG,mBAAqB,GAAG,oCAAsC,GAAG,OAAS,GAAG,mBAAqB,GAAG,QAAU,GAAG,eAAiB,GAAG,KAAO,IAAI,gBAAkB,IAAI,gBAAkB,IAAI,eAAiB,IAAI,gBAAkB,IAAI,YAAc,IAAI,eAAiB,IAAI,gBAAkB,IAAI,eAAiB,IAAI,GAAK,IAAI,OAAS,IAAI,gBAAkB,IAAI,MAAQ,IAAI,WAAa,IAAI,YAAc,IAAI,WAAa,IAAI,YAAc,IAAI,gBAAkB,IAAI,mBAAqB,IAAI,oBAAsB,IAAI,gBAAkB,IAAI,KAAO,IAAI,SAAW,IAAI,OAAS,IAAI,2BAA6B,IAAI,aAAe,IAAI,OAAS,IAAI,YAAc,IAAI,MAAQ,IAAI,oBAAsB,IAAI,WAAa,IAAI,KAAO,IAAI,QAAU,IAAI,uBAAyB,IAAI,mBAAqB,IAAI,MAAQ,IAAI,cAAgB,IAAI,kBAAoB,IAAI,gBAAkB,IAAI,SAAW,IAAI,wBAA0B,IAAI,wBAA0B,IAAI,wBAA0B,IAAI,gBAAkB,IAAI,4BAA8B,IAAI,mBAAqB,IAAI,wBAA0B,IAAI,qBAAuB,IAAI,6BAA+B,IAAI,iCAAmC,IAAI,yBAA2B,IAAI,uBAAyB,IAAI,iCAAmC,IAAI,iCAAmC,IAAI,aAAe,IAAI,yBAA2B,IAAI,uBAAyB,IAAI,qBAAuB,IAAI,yBAA2B,IAAI,SAAW,IAAI,MAAQ,IAAI,QAAU,IAAI,+BAAiC,IAAI,OAAS,IAAI,KAAO,IAAI,iBAAmB,IAAI,eAAiB,IAAI,6BAA+B,IAAI,2BAA6B,IAAI,gCAAkC,IAAI,2BAA6B,IAAI,eAAiB,IAAI,QAAU,IAAI,aAAe,IAAI,MAAQ,IAAI,qCAAuC,IAAI,QAAU,IAAI,gBAAkB,IAAI,oBAAsB,IAAI,eAAiB,IAAI,2BAA6B,IAAI,0BAA4B,IAAI,iBAAmB,IAAI,6BAA+B,IAAI,yBAA2B,IAAI,oBAAsB,IAAI,qBAAuB,IAAI,YAAc,IAAI,aAAe,IAAI,qBAAuB,IAAI,eAAiB,IAAI,iCAAmC,IAAI,2BAA6B,IAAI,IAAI,IAAI,mCAAqC,IAAI,KAAO,IAAI,WAAa,IAAI,EAAI,IAAI,uBAAyB,IAAI,OAAS,IAAI,UAAY,IAAI,eAAiB,IAAI,yBAA2B,IAAI,gBAAkB,IAAI,+BAAiC,IAAI,EAAI,IAAI,qCAAuC,IAAI,6BAA+B,IAAI,SAAW,IAAI,eAAiB,IAAI,2BAA6B,IAAI,WAAa,IAAI,cAAgB,IAAI,mBAAqB,IAAI,KAAO,IAAI,iBAAmB,IAAI,aAAe,IAAI,yBAA2B,IAAI,iBAAmB,IAAI,QAAU,IAAI,YAAc,IAAI,gBAAkB,IAAI,yBAA2B,IAAI,OAAS,IAAI,IAAI,IAAI,uBAAyB,IAAI,qBAAuB,IAAI,mCAAqC,IAAI,+BAAiC,IAAI,IAAI,IAAI,6BAA+B,IAAI,IAAI,IAAI,IAAI,IAAI,iCAAmC,IAAI,wBAA0B,IAAI,UAAY,IAAI,UAAY,IAAI,UAAY,IAAI,wBAA0B,IAAI,yBAA2B,IAAI,oCAAsC,IAAI,4BAA8B,IAAI,KAAK,IAAI,qBAAuB,IAAI,qCAAuC,IAAI,6BAA+B,IAAI,KAAK,IAAI,kBAAoB,IAAI,4BAA8B,IAAI,6BAA+B,IAAI,GAAK,IAAI,yBAA2B,IAAI,8BAAgC,IAAI,uBAAyB,IAAI,8BAAgC,IAAI,uBAAyB,IAAI,mCAAqC,IAAI,uBAAyB,IAAI,mCAAqC,IAAI,gBAAkB,IAAI,qCAAuC,IAAI,6BAA+B,IAAI,oCAAsC,IAAI,IAAI,IAAI,kBAAoB,IAAI,IAAI,IAAI,aAAe,IAAI,UAAY,IAAI,YAAc,IAAI,YAAc,IAAI,wBAA0B,IAAI,YAAc,IAAI,IAAI,IAAI,YAAc,IAAI,wBAA0B,IAAI,mBAAqB,IAAI,MAAQ,IAAI,MAAQ,IAAI,oBAAsB,IAAI,OAAS,IAAI,MAAQ,IAAI,kBAAoB,IAAI,iBAAmB,IAAI,eAAiB,IAAI,kBAAoB,IAAI,aAAe,IAAI,kBAAoB,IAAI,kBAAoB,IAAI,qBAAuB,IAAI,UAAY,IAAI,IAAI,IAAI,OAAS,IAAI,QAAU,IAAI,KAAK,IAAI,QAAU,IAAI,OAAS,IAAI,QAAU,IAAI,iBAAmB,IAAI,iBAAmB,IAAI,gBAAkB,IAAI,iBAAmB,IAAI,iBAAmB,IAAI,gBAAkB,IAAI,gBAAkB,IAAI,gBAAkB,IAAI,qBAAuB,IAAI,qBAAuB,IAAI,aAAe,IAAI,SAAW,IAAI,iBAAmB,IAAI,KAAO,IAAI,SAAW,IAAI,KAAK,IAAI,kBAAoB,IAAI,KAAK,IAAI,cAAgB,IAAI,kBAAoB,IAAI,KAAK,IAAI,KAAK,IAAI,sBAAwB,IAAI,cAAgB,IAAI,6BAA+B,IAAI,4BAA8B,IAAI,4BAA8B,IAAI,gCAAkC,IAAI,SAAW,IAAI,QAAU,IAAI,MAAQ,IAAI,OAAS,IAAI,MAAQ,IAAI,KAAO,IAAI,IAAM,IAAI,KAAO,IAAI,KAAO,IAAI,IAAM,IAAI,IAAI,IAAI,MAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,uBAAyB,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,IAAM,IAAI,OAAS,IAAI,SAAW,IAAI,OAAS,IAAI,MAAQ,IAAI,QAAU,IAAI,QAAU,EAAE,KAAO,GACroOC,WAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,IAAI,OAAO,IAAI,KAAK,IAAI,SAAS,IAAI,QAAQ,IAAI,aAAa,IAAI,aAAa,IAAI,cAAc,IAAI,OAAO,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,UAAU,IAAI,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,cAAc,IAAI,cAAc,IAAI,0BAA0B,IAAI,cAAc,IAAI,IAAI,IAAI,cAAc,IAAI,0BAA0B,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,iBAAiB,IAAI,eAAe,IAAI,YAAY,IAAI,IAAI,IAAI,UAAU,IAAI,KAAK,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,mBAAmB,IAAI,mBAAmB,IAAI,kBAAkB,IAAI,mBAAmB,IAAI,mBAAmB,IAAI,kBAAkB,IAAI,kBAAkB,IAAI,kBAAkB,IAAI,uBAAuB,IAAI,uBAAuB,IAAI,WAAW,IAAI,mBAAmB,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI,WAChiDC,aAAc,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG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Ef,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IA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","sources":["webpack://Comunica/../../node_modules/asyncjoin/index.js","webpack://Comunica/../../node_modules/asyncjoin/join/DynamicNestedLoopJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/HashJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/NestedLoopJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/SymmetricHashJoin.js","webpack://Comunica/../../node_modules/asyncjoin/util/MergeIterator.js","webpack://Comunica/./engine-default.js","webpack://Comunica/QueryEngine.ts","webpack://Comunica/index-browser.ts","webpack://Comunica/ActorAbstractPath.ts","webpack://Comunica/PathVariableObjectIterator.ts","webpack://Comunica/index.ts","webpack://Comunica/ActorContextPreprocessConvertShortcuts.ts","webpack://Comunica/ActorContextPreprocessQuerySourceIdentify.ts","webpack://Comunica/ActorContextPreprocessQuerySourceSkolemize.ts","webpack://Comunica/QuerySourceSkolemized.ts","webpack://Comunica/utils.ts","webpack://Comunica/ActorContextPreprocessSetDefaults.ts","webpack://Comunica/ActorContextPreprocessSourceToDestination.ts","webpack://Comunica/ActorHashBindingsSha1.ts","webpack://Comunica/ActorHashQuadsSha1.ts","webpack://Comunica/ActorInitQuery-browser.ts","webpack://Comunica/ActorInitQueryBase.ts","webpack://Comunica/QueryEngineBase.ts","webpack://Comunica/ActorOptimizeQueryOperationAssignSourcesExhaustive.ts","webpack://Comunica/ActorOptimizeQueryOperationBgpToJoin.ts","webpack://Comunica/ActorOptimizeQueryOperationConstructDistinct.ts","webpack://Comunica/ActorOptimizeQueryOperationDescribeToConstructsSubject.ts","webpack://Comunica/ActorOptimizeQueryOperationFilterPushdown.ts","webpack://Comunica/ActorOptimizeQueryOperationGroupSources.ts","webpack://Comunica/ActorOptimizeQueryOperationJoinBgp.ts","webpack://Comunica/ActorOptimizeQueryOperationJoinConnected.ts","webpack://Comunica/ActorOptimizeQueryOperationPruneEmptySourceOperations.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteAdd.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteCopy.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteMove.ts","webpack://Comunica/ActorQueryOperationAsk.ts","webpack://Comunica/ActorQueryOperationBgpJoin.ts","webpack://Comunica/ActorQueryOperationConstruct.ts","webpack://Comunica/BindingsToQuadsIterator.ts","webpack://Comunica/ActorQueryOperationDistinctHash.ts","webpack://Comunica/ActorQueryOperationExtend.ts","webpack://Comunica/ActorQueryOperationFilter.ts","webpack://Comunica/ActorQueryOperationFromQuad.ts","webpack://Comunica/ActorQueryOperationGroup.ts","webpack://Comunica/GroupsState.ts","webpack://Comunica/ActorQueryOperationJoin.ts","webpack://Comunica/ActorQueryOperationLeftJoin.ts","webpack://Comunica/ActorQueryOperationMinus.ts","webpack://Comunica/ActorQueryOperationNop.ts","webpack://Comunica/ActorQueryOperationOrderBy.ts","webpack://Comunica/SortIterator.ts","webpack://Comunica/ActorQueryOperationPathAlt.ts","webpack://Comunica/ActorQueryOperationPathInv.ts","webpack://Comunica/ActorQueryOperationPathLink.ts","webpack://Comunica/ActorQueryOperationPathNps.ts","webpack://Comunica/ActorQueryOperationPathOneOrMore.ts","webpack://Comunica/ActorQueryOperationPathSeq.ts","webpack://Comunica/ActorQueryOperationPathZeroOrMore.ts","webpack://Comunica/ActorQueryOperationPathZeroOrOne.ts","webpack://Comunica/ActorQueryOperationProject.ts","webpack://Comunica/ActorQueryOperationReducedHash.ts","webpack://Comunica/ActorQueryOperationService.ts","webpack://Comunica/ActorQueryOperationSlice.ts","webpack://Comunica/ActorQueryOperationSource.ts","webpack://Comunica/ActorQueryOperationUnion.ts","webpack://Comunica/ActorQueryOperationClear.ts","webpack://Comunica/ActorQueryOperationUpdateCompositeUpdate.ts","webpack://Comunica/ActorQueryOperationCreate.ts","webpack://Comunica/ActorQueryOperationUpdateDeleteInsert.ts","webpack://Comunica/ActorQueryOperationDrop.ts","webpack://Comunica/ActorQueryOperationLoad.ts","webpack://Comunica/ActorQueryOperationValues.ts","webpack://Comunica/ActorQueryParseSparql.ts","webpack://Comunica/ActorQueryProcessSequential.ts","webpack://Comunica/ActorQuerySourceIdentifyRdfJs.ts","webpack://Comunica/QuerySourceRdfJs.ts","webpack://Comunica/ActorRdfJoinEntriesSortCardinality.ts","webpack://Comunica/ActorRdfJoinHash.ts","webpack://Comunica/ActorRdfJoinMultiBindSource.ts","webpack://Comunica/ActorRdfJoinMultiBind.ts","webpack://Comunica/ActorRdfJoinMultiEmpty.ts","webpack://Comunica/ActorRdfJoinMultiSmallestFilterBindings.ts","webpack://Comunica/ActorRdfJoinMultiSmallest.ts","webpack://Comunica/ActorRdfJoinNestedLoop.ts","webpack://Comunica/ActorRdfJoinNone.ts","webpack://Comunica/ActorRdfJoinSingle.ts","webpack://Comunica/ActorRdfJoinSymmetricHash.ts","webpack://Comunica/ActorRdfJoinMinusHashUndef.ts","webpack://Comunica/BindingsIndex.ts","webpack://Comunica/ActorRdfJoinMinusHash.ts","webpack://Comunica/ActorRdfJoinOptionalBind.ts","webpack://Comunica/ActorRdfJoinOptionalHash.ts","webpack://Comunica/BindingsIndexDef.ts","webpack://Comunica/BindingsIndexUndef.ts","webpack://Comunica/ActorRdfJoinOptionalNestedLoop.ts","webpack://Comunica/ActorRdfJoinSelectivityVariableCounting.ts","webpack://Comunica/ActorRdfMetadataAccumulateCanContainUndefs.ts","webpack://Comunica/ActorRdfMetadataAccumulateCardinality.ts","webpack://Comunica/ActorRdfMetadataAccumulatePageSize.ts","webpack://Comunica/ActorRdfMetadataAccumulateRequestTime.ts","webpack://Comunica/ActorRdfUpdateQuadsRdfJsStore.ts","webpack://Comunica/RdfJsQuadDestination.ts","webpack://Comunica/Bindings.ts","webpack://Comunica/BindingsFactory.ts","webpack://Comunica/bindingsToString.ts","webpack://Comunica/ActorContextPreprocess.ts","webpack://Comunica/ActorHashBindings.ts","webpack://Comunica/ActorHashQuads.ts","webpack://Comunica/ActorHttpInvalidate.ts","webpack://Comunica/ActorHttpInvalidateListenable.ts","webpack://Comunica/ActorInit.ts","webpack://Comunica/ActorOptimizeQueryOperation.ts","webpack://Comunica/ActorQueryOperation.ts","webpack://Comunica/ActorQueryOperationTyped.ts","webpack://Comunica/ActorQueryOperationTypedMediated.ts","webpack://Comunica/BusQueryOperation.ts","webpack://Comunica/ClosableIterator.ts","webpack://Comunica/ClosableTransformIterator.ts","webpack://Comunica/ActorQueryParse.ts","webpack://Comunica/ActorQueryProcess.ts","webpack://Comunica/ActorQuerySourceIdentify.ts","webpack://Comunica/Utils.ts","webpack://Comunica/ActorRdfJoinEntriesSort.ts","webpack://Comunica/ActorRdfJoinSelectivity.ts","webpack://Comunica/ActorRdfJoin.ts","webpack://Comunica/ChunkedIterator.ts","webpack://Comunica/instrumentIterator.ts","webpack://Comunica/ActorRdfMetadataAccumulate.ts","webpack://Comunica/ActorRdfUpdateQuads.ts","webpack://Comunica/ActorRdfUpdateQuadsDestination.ts","webpack://Comunica/Keys.ts","webpack://Comunica/ActionContext.ts","webpack://Comunica/ActionObserver.ts","webpack://Comunica/Actor.ts","webpack://Comunica/Bus.ts","webpack://Comunica/BusIndexed.ts","webpack://Comunica/ContextEntries.ts","webpack://Comunica/Mediator.ts","webpack://Comunica/BlankNodeBindingsScoped.ts","webpack://Comunica/BlankNodeScoped.ts","webpack://Comunica/Aggregator.ts","webpack://Comunica/Average.ts","webpack://Comunica/Count.ts","webpack://Comunica/GroupConcat.ts","webpack://Comunica/Max.ts","webpack://Comunica/Min.ts","webpack://Comunica/Sample.ts","webpack://Comunica/Sum.ts","webpack://Comunica/WildcardCountAggregator.ts","webpack://Comunica/AggregateEvaluator.ts","webpack://Comunica/AsyncAggregateEvaluator.ts","webpack://Comunica/AsyncEvaluator.ts","webpack://Comunica/SyncEvaluator.ts","webpack://Comunica/AsyncRecursiveEvaluator.ts","webpack://Comunica/BaseAggregateEvaluator.ts","webpack://Comunica/BaseExpressionEvaluator.ts","webpack://Comunica/SyncRecursiveEvaluator.ts","webpack://Comunica/Aggregate.ts","webpack://Comunica/AsyncExtension.ts","webpack://Comunica/Existence.ts","webpack://Comunica/Expressions.ts","webpack://Comunica/Named.ts","webpack://Comunica/Operator.ts","webpack://Comunica/SpecialOperator.ts","webpack://Comunica/SyncExtension.ts","webpack://Comunica/Term.ts","webpack://Comunica/Variable.ts","webpack://Comunica/Core.ts","webpack://Comunica/Helpers.ts","webpack://Comunica/NamedFunctions.ts","webpack://Comunica/OverloadTree.ts","webpack://Comunica/RegularFunctions.ts","webpack://Comunica/SpecialFunctions.ts","webpack://Comunica/XPathFunctions.ts","webpack://Comunica/AlgebraTransformer.ts","webpack://Comunica/TermTransformer.ts","webpack://Comunica/Consts.ts","webpack://Comunica/DateTimeHelpers.ts","webpack://Comunica/Errors.ts","webpack://Comunica/Ordering.ts","webpack://Comunica/Parsing.ts","webpack://Comunica/Serialization.ts","webpack://Comunica/SpecAlgos.ts","webpack://Comunica/TypeHandling.ts","webpack://Comunica/LoggerVoid.ts","webpack://Comunica/MediatorAll.ts","webpack://Comunica/MediatorCombinePipeline.ts","webpack://Comunica/MediatorCombineUnion.ts","webpack://Comunica/MediatorJoinCoefficientsFixed.ts","webpack://Comunica/MediatorNumber.ts","webpack://Comunica/MediatorRace.ts","webpack://Comunica/MetadataValidationState.ts","webpack://Comunica/Logger.ts","webpack://Comunica/../../node_modules/bignumber.js/bignumber.js","webpack://Comunica/../../node_modules/canonicalize/lib/canonicalize.js","webpack://Comunica/../../node_modules/event-emitter-promisify/dist/index.js","webpack://Comunica/../../node_modules/events/events.js","webpack://Comunica/../../node_modules/fast-deep-equal/es6/index.js","webpack://Comunica/../../node_modules/hash.js/lib/hash.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/common.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/hmac.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/ripemd.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/1.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/224.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/256.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/384.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/512.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/common.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/utils.js","webpack://Comunica/../../node_modules/immutable/dist/immutable.es.js","webpack://Comunica/../../node_modules/inherits/inherits_browser.js","webpack://Comunica/../../node_modules/minimalistic-assert/index.js","webpack://Comunica/../../node_modules/process/browser.js","webpack://Comunica/../../node_modules/rdf-data-factory/index.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/BlankNode.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/DataFactory.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/DefaultGraph.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Literal.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/NamedNode.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Quad.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Variable.js","webpack://Comunica/../../node_modules/rdf-isomorphic/index.js","webpack://Comunica/../../node_modules/rdf-isomorphic/lib/RdfIsomorphic.js","webpack://Comunica/../../node_modules/rdf-string/index.js","webpack://Comunica/../../node_modules/rdf-string/lib/TermUtil.js","webpack://Comunica/../../node_modules/rdf-terms/index.js","webpack://Comunica/../../node_modules/rdf-terms/lib/QuadTermUtil.js","webpack://Comunica/../../node_modules/rdf-terms/lib/TermUtil.js","webpack://Comunica/../../node_modules/relative-to-absolute-iri/index.js","webpack://Comunica/../../node_modules/relative-to-absolute-iri/lib/Resolve.js","webpack://Comunica/../../node_modules/spark-md5/spark-md5.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/sparqljs/lib/SparqlGenerator.js","webpack://Comunica/../../node_modules/sparqljs/lib/SparqlParser.js","webpack://Comunica/../../node_modules/sparqljs/lib/Wildcard.js","webpack://Comunica/../../node_modules/sparqljs/sparql.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/index.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/md5.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/native.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/nil.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/parse.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/regex.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/rng.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/sha1.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/stringify.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v1.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v3.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v35.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v4.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v5.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/validate.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/version.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/asynciterator/dist/asynciterator.js","webpack://Comunica/../../node_modules/asynciterator/dist/linkedlist.js","webpack://Comunica/../../node_modules/asynciterator/dist/taskscheduler.js","webpack://Comunica/../../node_modules/lru-cache/dist/commonjs/index.js","webpack://Comunica/webpack/bootstrap","webpack://Comunica/webpack/runtime/define property getters","webpack://Comunica/webpack/runtime/hasOwnProperty shorthand","webpack://Comunica/webpack/runtime/make namespace object","webpack://Comunica/webpack/startup"],"sourcesContent":["\nconst DynamicNestedLoopJoin = require('./join/DynamicNestedLoopJoin');\nconst HashJoin = require('./join/HashJoin');\nconst NestedLoopJoin = require('./join/NestedLoopJoin');\nconst SymmetricHashJoin = require('./join/SymmetricHashJoin');\n\nconst MergeStream = require('./util/MergeIterator');\n\nmodule.exports = {\n DynamicNestedLoopJoin,\n HashJoin,\n NestedLoopJoin,\n SymmetricHashJoin,\n\n MergeStream\n};","\nlet AsyncIterator = require('asynciterator');\nlet MultiTransformIterator = AsyncIterator.MultiTransformIterator;\nlet SimpleTransformIterator = AsyncIterator.SimpleTransformIterator;\n\n// Nested Loop Join, but the values of the inner loop are determined by each value of the outer loop, possibly reducing the number of necessary checks\nclass DynamicNestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, funRight, funJoin, options)\n {\n super(left, options);\n\n this.funRight = funRight;\n this.funJoin = funJoin;\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.funRight(leftItem), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = DynamicNestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Hash_join\nclass HashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.addedDataListener = false;\n this.left = left;\n this.right = right;\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.leftMap = new Map();\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.readable = false;\n\n this.left.on('end', allowJoining.bind(this));\n\n function allowJoining ()\n {\n this.readable = true;\n this.right.on('readable', () => this.readable = true);\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n this.on('newListener', (eventName) =>\n {\n if (eventName === 'data')\n {\n this._addDataListenerIfNeeded();\n }\n });\n if (this.left.readable)\n this._addDataListenerIfNeeded();\n this.left.on('readable', () => this._addDataListenerIfNeeded());\n }\n\n hasResults ()\n {\n return !this.right.ended || this.matchIdx < this.matches.length;\n }\n\n _end ()\n {\n super._end();\n this.left.destroy();\n this.right.destroy();\n }\n\n read ()\n {\n this._addDataListenerIfNeeded();\n\n while(true) {\n if (this.ended || !this.readable)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n this.match = this.right.read();\n\n if (this.match === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(this.match);\n this.matches = this.leftMap.get(hash) || [];\n this.matchIdx = 0;\n }\n }\n\n _addDataListenerIfNeeded() {\n if (!this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n }\n\n _addDataListener()\n {\n this.left.on('data', addItem.bind(this));\n\n function addItem(item)\n {\n let hash = this.funHash(item);\n if (!this.leftMap.has(hash))\n this.leftMap.set(hash, []);\n let arr = this.leftMap.get(hash);\n arr.push(item);\n }\n }\n}\n\nmodule.exports = HashJoin;\n","\nconst { MultiTransformIterator, SimpleTransformIterator, scheduleTask } = require('asynciterator');\n\n// https://en.wikipedia.org/wiki/Nested_loop_join\nclass NestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, right, funJoin, options)\n {\n super(left, options);\n\n this.right = right;\n this.funJoin = funJoin; // function that joins 2 elements or returns null if join is not possible\n this.on('end', () => this.right.close());\n }\n\n _end ()\n {\n super._end();\n scheduleTask(() => this.right.destroy());\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.right.clone(), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = NestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Symmetric_Hash_Join\nclass SymmetricHashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.left = left;\n this.right = right;\n\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.usedLeft = false;\n this.leftMap = new Map();\n this.rightMap = new Map();\n\n this.on('end', () => this._cleanup() );\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n if (this.left.readable || this.right.readable)\n {\n this.readable = true;\n }\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.left.on('readable', () => this.readable = true);\n this.right.on('readable', () => this.readable = true);\n\n // this needs to be here since it's possible the left/right streams only get ended after there are no more results left\n this.left.on ('end', () => { if (!this.hasResults()) this._end(); });\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n hasResults()\n {\n // The \"!!this.match\" condition was added as a workaround to race\n // conditions and/or duplicate \"end\" events that may lead to premature\n // cleanups of the \"this.matches\" array.\n // See https://github.com/joachimvh/asyncjoin/issues/7\n return !this.left.ended || !this.right.ended || (!!this.matches && this.matchIdx < this.matches.length);\n }\n\n _cleanup ()\n {\n // motivate garbage collector to remove these\n this.leftMap = null;\n this.rightMap = null;\n this.matches = null;\n }\n\n _end ()\n {\n super._end();\n this.left.destroy();\n this.right.destroy();\n }\n\n read ()\n {\n while(true){\n if (this.ended)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.usedLeft ? this.funJoin(this.match, item) : this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n let item = null;\n // try both streams if the first one has no value\n for (let i = 0; i < 2; ++i)\n {\n item = this.usedLeft ? this.right.read() : this.left.read();\n this.usedLeft = !this.usedLeft; // try other stream next time\n\n // found a result, no need to check the other stream this run\n if (item !== null)\n break;\n }\n\n if (this.done || item === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(item);\n\n if (this.usedLeft && this.right.done) {\n this.leftMap = null;\n } else if (this.left.done) {\n this.rightMap = null;\n } else {\n let map = this.usedLeft ? this.leftMap : this.rightMap;\n if (!map.has(hash))\n map.set(hash, []);\n let arr = map.get(hash);\n arr.push(item);\n }\n\n this.match = item;\n this.matches = (this.usedLeft ? this.rightMap : this.leftMap).get(hash) || [];\n this.matchIdx = 0;\n }\n }\n}\n\nmodule.exports = SymmetricHashJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// merges the contents of multiple streams\nclass MergeIterator extends AsyncIterator\n{\n constructor (streams)\n {\n super();\n \n if (!Array.isArray(streams))\n streams = Array.prototype.slice.call(arguments);\n \n this.streams = streams;\n \n for (let stream of streams)\n {\n stream.on('readable', () => this.emit('readable'));\n stream.on('end', () => this._removeStream(stream));\n }\n \n if (this.streams.length === 0)\n this.close();\n \n this.idx = this.streams.length-1;\n }\n \n _removeStream (stream)\n {\n let idx = this.streams.indexOf(stream);\n if (idx < 0)\n return;\n \n this.streams.splice(idx, 1);\n if (this.idx >= this.streams.length)\n --this.idx;\n \n if (this.streams.length === 0)\n this._end();\n }\n \n close ()\n {\n super.close();\n for (let stream of this.streams)\n stream.close();\n }\n \n read ()\n {\n for (let attempts = 0; attempts < this.streams.length; ++attempts)\n {\n this.idx = (this.idx + 1) % this.streams.length;\n let item = this.streams[this.idx].read();\n if (item !== null)\n return item;\n }\n \n return null;\n }\n}\n\nmodule.exports = MergeIterator;","module.exports = function(variables) {\nfunction getVariableValue(name) {\n if (!variables || !(name in variables)) {\n throw new Error('Undefined variable: ' + name);\n }\n return variables[name];\n}\nconst df_475_1 = new (require('@comunica/logger-void').LoggerVoid)();\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-init/^3.0.0/components/ActorInit.jsonld#ActorInit_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-context-preprocess/^3.0.0/components/ActorContextPreprocess.jsonld#ActorContextPreprocess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-bindings/^3.0.0/components/ActorHashBindings.jsonld#ActorHashBindings_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-quads/^3.0.0/components/ActorHashQuads.jsonld#ActorHashQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-query-operation/^3.0.0/components/ActorOptimizeQueryOperation.jsonld#ActorOptimizeQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-parse/^3.0.0/components/ActorQueryParse.jsonld#ActorQueryParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-entries-sort/^3.0.0/components/ActorRdfJoinEntriesSort.jsonld#ActorRdfJoinEntriesSort_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-selectivity/^3.0.0/components/ActorRdfJoinSelectivity.jsonld#ActorRdfJoinSelectivity_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-accumulate/^3.0.0/components/ActorRdfMetadataAccumulate.jsonld#ActorRdfMetadataAccumulate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads/^3.0.0/components/ActorRdfUpdateQuads.jsonld#ActorRdfUpdateQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus = new (require('@comunica/bus-query-operation').BusQueryOperation)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^3.0.0/components/ActorQueryOperation.jsonld#ActorQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-process/^3.0.0/components/ActorQueryProcess.jsonld#ActorQueryProcess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify/^3.0.0/components/ActorQuerySourceIdentify.jsonld#ActorQuerySourceIdentify_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^3.0.0/components/ActorRdfJoin.jsonld#ActorRdfJoin_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http-invalidate/^3.0.0/components/ActorHttpInvalidate.jsonld#ActorHttpInvalidate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-result-serialize/^3.0.0/components/ActorQueryResultSerialize.jsonld#ActorQueryResultSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-merge-bindings-context/^3.0.0/components/ActorMergeBindingsContext.jsonld#ActorMergeBindingsContext_default_bus'\n});\nconst urn_comunica_default_context_preprocess_actors_convert_shortcuts = new (require('@comunica/actor-context-preprocess-convert-shortcuts').ActorContextPreprocessConvertShortcuts)({\n 'contextKeyShortcuts': {\"baseIRI\":\"@comunica/actor-init-query:baseIRI\",\"datetime\":\"@comunica/actor-http-memento:datetime\",\"destination\":\"@comunica/bus-rdf-update-quads:destination\",\"distinctConstruct\":\"@comunica/actor-init-query:distinctConstruct\",\"explain\":\"@comunica/actor-init-query:explain\",\"extensionFunctionCreator\":\"@comunica/actor-init-query:extensionFunctionCreator\",\"extensionFunctions\":\"@comunica/actor-init-query:extensionFunctions\",\"fetch\":\"@comunica/bus-http:fetch\",\"functionArgumentsCache\":\"@comunica/actor-init-query:functionArgumentsCache\",\"httpAuth\":\"@comunica/bus-http:auth\",\"httpBodyTimeout\":\"@comunica/bus-http:http-body-timeout\",\"httpIncludeCredentials\":\"@comunica/bus-http:include-credentials\",\"httpProxyHandler\":\"@comunica/actor-http-proxy:httpProxyHandler\",\"httpRetryCount\":\"@comunica/bus-http:http-retry-count\",\"httpRetryDelay\":\"@comunica/bus-http:http-retry-delay\",\"httpRetryOnServerError\":\"@comunica/bus-http:http-retry-on-server-error\",\"httpTimeout\":\"@comunica/bus-http:http-timeout\",\"initialBindings\":\"@comunica/actor-init-query:initialBindings\",\"lenient\":\"@comunica/actor-init-query:lenient\",\"log\":\"@comunica/core:log\",\"noCache\":\"@comunica/actor-init-query:noCache\",\"queryFormat\":\"@comunica/actor-init-query:queryFormat\",\"queryTimestamp\":\"@comunica/actor-init-query:queryTimestamp\",\"readOnly\":\"@comunica/bus-query-operation:readOnly\",\"recoverBrokenLinks\":\"@comunica/bus-http-wayback:recover-broken-links\",\"sources\":\"@comunica/actor-init-query:querySourcesUnidentified\",\"traverse\":\"@comunica/bus-query-source-identify:traverse\",\"unionDefaultGraph\":\"@comunica/bus-query-operation:unionDefaultGraph\"},\n 'name': 'urn:comunica:default:context-preprocess/actors#convert-shortcuts',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_set_defaults = new (require('@comunica/actor-context-preprocess-set-defaults').ActorContextPreprocessSetDefaults)({\n 'logger': df_475_1,\n 'name': 'urn:comunica:default:context-preprocess/actors#set-defaults',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_source_to_destination = new (require('@comunica/actor-context-preprocess-source-to-destination').ActorContextPreprocessSourceToDestination)({\n 'name': 'urn:comunica:default:context-preprocess/actors#source-to-destination',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_query_source_skolemize = new (require('@comunica/actor-context-preprocess-query-source-skolemize').ActorContextPreprocessQuerySourceSkolemize)({\n 'name': 'urn:comunica:default:context-preprocess/actors#query-source-skolemize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:context-preprocess/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_hash_bindings_actors_sha1 = new (require('@comunica/actor-hash-bindings-sha1').ActorHashBindingsSha1)({\n 'name': 'urn:comunica:default:hash-bindings/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_bindings_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-bindings/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_quads_actors_sha1 = new (require('@comunica/actor-hash-quads-sha1').ActorHashQuadsSha1)({\n 'name': 'urn:comunica:default:hash-quads/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus\n});\nconst urn_comunica_default_hash_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_copy = new (require('@comunica/actor-optimize-query-operation-rewrite-copy').ActorOptimizeQueryOperationRewriteCopy)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-copy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_move = new (require('@comunica/actor-optimize-query-operation-rewrite-move').ActorOptimizeQueryOperationRewriteMove)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-move',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_add = new (require('@comunica/actor-optimize-query-operation-rewrite-add').ActorOptimizeQueryOperationRewriteAdd)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-add',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_group_sources = new (require('@comunica/actor-optimize-query-operation-group-sources').ActorOptimizeQueryOperationGroupSources)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#group-sources',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_construct_distinct = new (require('@comunica/actor-optimize-query-operation-construct-distinct').ActorOptimizeQueryOperationConstructDistinct)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#construct-distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'filterErrors': true,\n 'name': 'urn:comunica:default:optimize-query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_query_parse_actors_sparql = new (require('@comunica/actor-query-parse-sparql').ActorQueryParseSparql)({\n 'prefixes': {\"dbpedia\":\"http://dbpedia.org/resource/\",\"dbpedia-owl\":\"http://dbpedia.org/ontology/\",\"dbpprop\":\"http://dbpedia.org/property/\",\"dc\":\"http://purl.org/dc/terms/\",\"dc11\":\"http://purl.org/dc/elements/1.1/\",\"dcterms\":\"http://purl.org/dc/terms/\",\"foaf\":\"http://xmlns.com/foaf/0.1/\",\"geo\":\"http://www.w3.org/2003/01/geo/wgs84_pos#\",\"owl\":\"http://www.w3.org/2002/07/owl#\",\"rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"rdfs\":\"http://www.w3.org/2000/01/rdf-schema#\",\"schema\":\"http://schema.org/\",\"skos\":\"http://www.w3.org/2008/05/skos#\",\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"},\n 'name': 'urn:comunica:default:query-parse/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-parse/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_actors_cardinality = new (require('@comunica/actor-rdf-join-entries-sort-cardinality').ActorRdfJoinEntriesSortCardinality)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_actors_variable_counting = new (require('@comunica/actor-rdf-join-selectivity-variable-counting').ActorRdfJoinSelectivityVariableCounting)({\n 'name': 'urn:comunica:default:rdf-join-selectivity/actors#variable-counting',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'accuracy',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-join-selectivity/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_cancontainundefs = new (require('@comunica/actor-rdf-metadata-accumulate-cancontainundefs').ActorRdfMetadataAccumulateCanContainUndefs)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#cancontainundefs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_cardinality = new (require('@comunica/actor-rdf-metadata-accumulate-cardinality').ActorRdfMetadataAccumulateCardinality)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_pagesize = new (require('@comunica/actor-rdf-metadata-accumulate-pagesize').ActorRdfMetadataAccumulatePageSize)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#pagesize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_requesttime = new (require('@comunica/actor-rdf-metadata-accumulate-requesttime').ActorRdfMetadataAccumulateRequestTime)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#requesttime',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_rdfjs_store = new (require('@comunica/actor-rdf-update-quads-rdfjs-store').ActorRdfUpdateQuadsRdfJsStore)({\n 'name': 'urn:comunica:default:rdf-update-quads/actors#rdfjs-store',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_query_operation_actors_source = new (require('@comunica/actor-query-operation-source').ActorQueryOperationSource)({\n 'name': 'urn:comunica:default:query-operation/actors#source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'httpRequests',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_process_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-process/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_source_identify_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-source-identify/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus\n});\nconst urn_comunica_default_rdf_join_mediators_main = new (require('@comunica/mediator-join-coefficients-fixed').MediatorJoinCoefficientsFixed)({\n 'cpuWeight': 10,\n 'memoryWeight': 1,\n 'timeWeight': 2,\n 'ioWeight': 10,\n 'name': 'urn:comunica:default:rdf-join/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-context-preprocess-query-source-identify/^3.0.0/components/ActorContextPreprocessQuerySourceIdentify.jsonld#IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_http_invalidate_mediators_main = new (require('@comunica/mediator-all').MediatorAll)({\n 'name': 'urn:comunica:default:http-invalidate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-result-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_merge_bindings_context_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mergeHandlers',\n 'name': 'urn:comunica:default:merge-bindings-context/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_single = new (require('@comunica/actor-rdf-join-inner-single').ActorRdfJoinSingle)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-single',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_empty = new (require('@comunica/actor-rdf-join-inner-multi-empty').ActorRdfJoinMultiEmpty)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-empty',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_hash = new (require('@comunica/actor-rdf-join-inner-hash').ActorRdfJoinHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_symmetric_hash = new (require('@comunica/actor-rdf-join-inner-symmetrichash').ActorRdfJoinSymmetricHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-symmetric-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_nested_loop = new (require('@comunica/actor-rdf-join-inner-nestedloop').ActorRdfJoinNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash = new (require('@comunica/actor-rdf-join-minus-hash').ActorRdfJoinMinusHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash_undef = new (require('@comunica/actor-rdf-join-minus-hash-undef').ActorRdfJoinMinusHashUndef)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash-undef',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_def_nonblocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': false,\n 'blocking': false,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-def-nonblocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_def_blocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': false,\n 'blocking': true,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-def-blocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_undef_nonblocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': true,\n 'blocking': false,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-undef-nonblocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_undef_blocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': true,\n 'blocking': true,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-undef-blocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_nested_loop = new (require('@comunica/actor-rdf-join-optional-nestedloop').ActorRdfJoinOptionalNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_query_operation_actors_ask = new (require('@comunica/actor-query-operation-ask').ActorQueryOperationAsk)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#ask',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_bgp = new (require('@comunica/actor-query-operation-bgp-join').ActorQueryOperationBgpJoin)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_construct = new (require('@comunica/actor-query-operation-construct').ActorQueryOperationConstruct)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#construct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_distinct = new (require('@comunica/actor-query-operation-distinct-hash').ActorQueryOperationDistinctHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorHashQuads': urn_comunica_default_hash_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_from = new (require('@comunica/actor-query-operation-from-quad').ActorQueryOperationFromQuad)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#from',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_project = new (require('@comunica/actor-query-operation-project').ActorQueryOperationProject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#project',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_reduced = new (require('@comunica/actor-query-operation-reduced-hash').ActorQueryOperationReducedHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'cacheSize': 100,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#reduced',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_slice = new (require('@comunica/actor-query-operation-slice').ActorQueryOperationSlice)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#slice',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_union = new (require('@comunica/actor-query-operation-union').ActorQueryOperationUnion)({\n 'mediatorRdfMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#union',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_alt = new (require('@comunica/actor-query-operation-path-alt').ActorQueryOperationPathAlt)({\n 'mediatorRdfMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-alt',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_inv = new (require('@comunica/actor-query-operation-path-inv').ActorQueryOperationPathInv)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-inv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_link = new (require('@comunica/actor-query-operation-path-link').ActorQueryOperationPathLink)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-link',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_nps = new (require('@comunica/actor-query-operation-path-nps').ActorQueryOperationPathNps)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-nps',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_clear = new (require('@comunica/actor-query-operation-update-clear').ActorQueryOperationClear)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-clear',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_composite = new (require('@comunica/actor-query-operation-update-compositeupdate').ActorQueryOperationUpdateCompositeUpdate)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-composite',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_create = new (require('@comunica/actor-query-operation-update-create').ActorQueryOperationCreate)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-create',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_drop = new (require('@comunica/actor-query-operation-update-drop').ActorQueryOperationDrop)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-drop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_load = new (require('@comunica/actor-query-operation-update-load').ActorQueryOperationLoad)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-load',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_join = new (require('@comunica/actor-query-operation-join').ActorQueryOperationJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_minus = new (require('@comunica/actor-query-operation-minus').ActorQueryOperationMinus)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#minus',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_seq = new (require('@comunica/actor-query-operation-path-seq').ActorQueryOperationPathSeq)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-seq',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest = new (require('@comunica/actor-rdf-join-inner-multi-smallest').ActorRdfJoinMultiSmallest)({\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_filter_pushdown = new (require('@comunica/actor-optimize-query-operation-filter-pushdown').ActorOptimizeQueryOperationFilterPushdown)({\n 'aggressivePushdown': false,\n 'maxIterations': 10,\n 'splitConjunctive': true,\n 'mergeConjunctive': true,\n 'pushIntoLeftJoins': true,\n 'pushEqualityIntoPatterns': true,\n 'name': 'urn:comunica:default:optimize-query-operation/actors#filter-pushdown',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_group_sources\n]\n});\nconst urn_comunica_default_context_preprocess_actors_query_source_identify = new (require('@comunica/actor-context-preprocess-query-source-identify').ActorContextPreprocessQuerySourceIdentify)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'name': 'urn:comunica:default:context-preprocess/actors#query-source-identify',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus,\n 'beforeActors': [\n urn_comunica_default_context_preprocess_actors_query_source_skolemize\n]\n});\nconst urn_comunica_default_init_actors_query = new (require('@comunica/actor-init-query').ActorInitQuery)({\n 'mediatorQueryProcess': urn_comunica_default_query_process_mediators_main,\n 'mediatorQueryResultSerialize': urn_comunica_default_query_result_serialize_mediators_serialize,\n 'mediatorQueryResultSerializeMediaTypeCombiner': urn_comunica_default_query_result_serialize_mediators_mediaType,\n 'mediatorQueryResultSerializeMediaTypeFormatCombiner': urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat,\n 'mediatorHttpInvalidate': urn_comunica_default_http_invalidate_mediators_main,\n 'defaultQueryInputFormat': 'sparql',\n 'allowNoSources': false,\n 'name': 'urn:comunica:default:init/actors#query',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus\n});\nconst urn_comunica_default_query_operation_actors_extend = new (require('@comunica/actor-query-operation-extend').ActorQueryOperationExtend)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#extend',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_filter = new (require('@comunica/actor-query-operation-filter').ActorQueryOperationFilter)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#filter',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_group = new (require('@comunica/actor-query-operation-group').ActorQueryOperationGroup)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#group',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_leftjoin = new (require('@comunica/actor-query-operation-leftjoin').ActorQueryOperationLeftJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#leftjoin',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_nop = new (require('@comunica/actor-query-operation-nop').ActorQueryOperationNop)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#nop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_orderby = new (require('@comunica/actor-query-operation-orderby').ActorQueryOperationOrderBy)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#orderby',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_service = new (require('@comunica/actor-query-operation-service').ActorQueryOperationService)({\n 'forceSparqlEndpoint': false,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_values = new (require('@comunica/actor-query-operation-values').ActorQueryOperationValues)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#values',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_one_or_more = new (require('@comunica/actor-query-operation-path-one-or-more').ActorQueryOperationPathOneOrMore)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-one-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_more = new (require('@comunica/actor-query-operation-path-zero-or-more').ActorQueryOperationPathZeroOrMore)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_one = new (require('@comunica/actor-query-operation-path-zero-or-one').ActorQueryOperationPathZeroOrOne)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-one',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_delete_insert = new (require('@comunica/actor-query-operation-update-deleteinsert').ActorQueryOperationUpdateDeleteInsert)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-delete-insert',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_process_actors_sequential = new (require('@comunica/actor-query-process-sequential').ActorQueryProcessSequential)({\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'mediatorQueryParse': urn_comunica_default_query_parse_mediators_main,\n 'mediatorOptimizeQueryOperation': urn_comunica_default_optimize_query_operation_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-process/actors#sequential',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_source_identify_actors_rdfjs = new (require('@comunica/actor-query-source-identify-rdfjs').ActorQuerySourceIdentifyRdfJs)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-source-identify/actors#rdfjs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_none = new (require('@comunica/actor-rdf-join-inner-none').ActorRdfJoinNone)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_bind = new (require('@comunica/actor-rdf-join-optional-bind').ActorRdfJoinOptionalBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.000001,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind = new (require('@comunica/actor-rdf-join-inner-multi-bind').ActorRdfJoinMultiBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'minMaxCardinalityRatio': 60,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest_filter_bindings = new (require('@comunica/actor-rdf-join-inner-multi-smallest-filter-bindings').ActorRdfJoinMultiSmallestFilterBindings)({\n 'selectivityModifier': 0.0001,\n 'blockSize': 64,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest-filter-bindings',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations = new (require('@comunica/actor-optimize-query-operation-prune-empty-source-operations').ActorOptimizeQueryOperationPruneEmptySourceOperations)({\n 'useAskIfSupported': false,\n 'name': 'urn:comunica:default:optimize-query-operation/actors#prune-empty-source-operations',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_filter_pushdown\n]\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind_source = new (require('@comunica/actor-rdf-join-inner-multi-bind-source').ActorRdfJoinMultiBindSource)({\n 'selectivityModifier': 0.0001,\n 'blockSize': 16,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind-source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_connected = new (require('@comunica/actor-optimize-query-operation-join-connected').ActorOptimizeQueryOperationJoinConnected)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-connected',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_bgp_to_join = new (require('@comunica/actor-optimize-query-operation-bgp-to-join').ActorOptimizeQueryOperationBgpToJoin)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#bgp-to-join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_join_connected\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_bgp = new (require('@comunica/actor-optimize-query-operation-join-bgp').ActorOptimizeQueryOperationJoinBgp)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive = new (require('@comunica/actor-optimize-query-operation-assign-sources-exhaustive').ActorOptimizeQueryOperationAssignSourcesExhaustive)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#assign-sources-exhaustive',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_join_bgp\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_describe_to_constructs_subject = new (require('@comunica/actor-optimize-query-operation-describe-to-constructs-subject').ActorOptimizeQueryOperationDescribeToConstructsSubject)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#describe-to-constructs-subject',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive\n]\n});\nconst urn_comunica_default_Runner = (https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus, [\n urn_comunica_default_context_preprocess_actors_convert_shortcuts,\n urn_comunica_default_context_preprocess_actors_set_defaults,\n urn_comunica_default_context_preprocess_actors_source_to_destination,\n urn_comunica_default_context_preprocess_actors_query_source_identify,\n urn_comunica_default_context_preprocess_actors_query_source_skolemize,\n urn_comunica_default_hash_bindings_actors_sha1,\n urn_comunica_default_hash_quads_actors_sha1,\n urn_comunica_default_init_actors_query,\n urn_comunica_default_optimize_query_operation_actors_rewrite_copy,\n urn_comunica_default_optimize_query_operation_actors_rewrite_move,\n urn_comunica_default_optimize_query_operation_actors_rewrite_add,\n urn_comunica_default_optimize_query_operation_actors_describe_to_constructs_subject,\n urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive,\n urn_comunica_default_optimize_query_operation_actors_join_bgp,\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join,\n urn_comunica_default_optimize_query_operation_actors_join_connected,\n urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations,\n urn_comunica_default_optimize_query_operation_actors_filter_pushdown,\n urn_comunica_default_optimize_query_operation_actors_group_sources,\n urn_comunica_default_optimize_query_operation_actors_construct_distinct,\n urn_comunica_default_query_parse_actors_sparql,\n urn_comunica_default_rdf_join_entries_sort_actors_cardinality,\n urn_comunica_default_rdf_join_selectivity_actors_variable_counting,\n urn_comunica_default_rdf_metadata_accumulate_actors_cancontainundefs,\n urn_comunica_default_rdf_metadata_accumulate_actors_cardinality,\n urn_comunica_default_rdf_metadata_accumulate_actors_pagesize,\n urn_comunica_default_rdf_metadata_accumulate_actors_requesttime,\n urn_comunica_default_rdf_update_quads_actors_rdfjs_store,\n urn_comunica_default_query_operation_actors_ask,\n urn_comunica_default_query_operation_actors_bgp,\n urn_comunica_default_query_operation_actors_construct,\n urn_comunica_default_query_operation_actors_distinct,\n urn_comunica_default_query_operation_actors_extend,\n urn_comunica_default_query_operation_actors_filter,\n urn_comunica_default_query_operation_actors_from,\n urn_comunica_default_query_operation_actors_group,\n urn_comunica_default_query_operation_actors_join,\n urn_comunica_default_query_operation_actors_leftjoin,\n urn_comunica_default_query_operation_actors_minus,\n urn_comunica_default_query_operation_actors_nop,\n urn_comunica_default_query_operation_actors_orderby,\n urn_comunica_default_query_operation_actors_project,\n urn_comunica_default_query_operation_actors_reduced,\n urn_comunica_default_query_operation_actors_service,\n urn_comunica_default_query_operation_actors_slice,\n urn_comunica_default_query_operation_actors_source,\n urn_comunica_default_query_operation_actors_union,\n urn_comunica_default_query_operation_actors_values,\n urn_comunica_default_query_operation_actors_path_alt,\n urn_comunica_default_query_operation_actors_path_inv,\n urn_comunica_default_query_operation_actors_path_link,\n urn_comunica_default_query_operation_actors_path_nps,\n urn_comunica_default_query_operation_actors_path_one_or_more,\n urn_comunica_default_query_operation_actors_path_seq,\n urn_comunica_default_query_operation_actors_path_zero_or_more,\n urn_comunica_default_query_operation_actors_path_zero_or_one,\n urn_comunica_default_query_operation_actors_update_clear,\n urn_comunica_default_query_operation_actors_update_composite,\n urn_comunica_default_query_operation_actors_update_create,\n urn_comunica_default_query_operation_actors_update_delete_insert,\n urn_comunica_default_query_operation_actors_update_drop,\n urn_comunica_default_query_operation_actors_update_load,\n urn_comunica_default_query_process_actors_sequential,\n urn_comunica_default_query_source_identify_actors_rdfjs,\n urn_comunica_default_rdf_join_actors_inner_none,\n urn_comunica_default_rdf_join_actors_inner_single,\n urn_comunica_default_rdf_join_actors_inner_multi_empty,\n urn_comunica_default_rdf_join_actors_inner_multi_bind_source,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest_filter_bindings,\n urn_comunica_default_rdf_join_actors_minus_hash,\n urn_comunica_default_rdf_join_actors_minus_hash_undef,\n urn_comunica_default_rdf_join_actors_optional_bind,\n urn_comunica_default_rdf_join_actors_optional_hash_def_nonblocking,\n urn_comunica_default_rdf_join_actors_optional_hash_def_blocking,\n urn_comunica_default_rdf_join_actors_optional_hash_undef_nonblocking,\n urn_comunica_default_rdf_join_actors_optional_hash_undef_blocking,\n urn_comunica_default_rdf_join_actors_optional_nested_loop\n]);\nreturn urn_comunica_default_init_actors_query;\n}\n\n","import { QueryEngineBase } from '@comunica/actor-init-query';\nimport type { ActorInitQueryBase } from '@comunica/actor-init-query';\nimport type { IQueryContextCommon } from '@comunica/types';\n\n// eslint-disable-next-line import/extensions,ts/no-require-imports,ts/no-var-requires\nconst engineDefault = require('../engine-default.js');\n\n/**\n * A Comunica SPARQL query engine.\n */\nexport class QueryEngine\n extends QueryEngineBase {\n public constructor(engine: ActorInitQueryBase = engineDefault()) {\n super(engine);\n }\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nexport * from './QueryEngine';\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResultBindings,\n Bindings,\n IActionContext,\n MetadataBindings,\n IQuerySourceWrapper,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport {\n BufferedIterator,\n MultiTransformIterator,\n TransformIterator,\n EmptyIterator,\n} from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\nimport { PathVariableObjectIterator } from './PathVariableObjectIterator';\n\nconst DF = new DataFactory();\n\n/**\n * An abstract actor that handles Path operations.\n *\n * Provides multiple helper functions used by the Path operation actors.\n */\nexport abstract class ActorAbstractPath extends ActorQueryOperationTypedMediated {\n protected static readonly FACTORY: Factory = new Factory();\n\n protected readonly predicateType: string;\n\n protected constructor(args: IActorQueryOperationTypedMediatedArgs, predicateType: string) {\n super(args, 'path');\n this.predicateType = predicateType;\n }\n\n public async testOperation(operation: Algebra.Path, _context: IActionContext): Promise {\n if (operation.predicate.type !== this.predicateType) {\n throw new Error(`This Actor only supports ${this.predicateType} Path operations.`);\n }\n\n return true;\n }\n\n // Generates a variable that does not yet occur in the path\n public generateVariable(path?: Algebra.Path, name?: string): RDF.Variable {\n if (!name) {\n return this.generateVariable(path, 'b');\n }\n\n // Path predicates can't contain variables\n if (path && (path.subject.value === name || path.object.value === name)) {\n return this.generateVariable(path, `${name}b`);\n }\n\n return DF.variable(name);\n }\n\n // Such connectivity matching does not introduce duplicates (it does not incorporate any count of the number\n // of ways the connection can be made) even if the repeated path itself would otherwise result in duplicates.\n // https://www.w3.org/TR/sparql11-query/#propertypaths\n public async isPathArbitraryLengthDistinct(context: IActionContext, path: Algebra.Path):\n Promise<{ context: IActionContext; operation: IQueryOperationResultBindings | undefined }> {\n if (!context.get(KeysQueryOperation.isPathArbitraryLengthDistinctKey)) {\n context = context.set(KeysQueryOperation.isPathArbitraryLengthDistinctKey, true);\n return { context, operation: ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n operation: ActorAbstractPath.FACTORY.createDistinct(path),\n context,\n })) };\n }\n\n context = context.set(KeysQueryOperation.isPathArbitraryLengthDistinctKey, false);\n return { context, operation: undefined };\n }\n\n private async predicateStarGraphVariable(\n subject: RDF.Term,\n object: RDF.Variable,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Variable,\n context: IActionContext,\n bindingsFactory: BindingsFactory,\n ): Promise {\n const sources = this.getPathSources(predicate);\n // TODO: refactor this with an iterator just like PathVariableObjectIterator so we handle backpressure correctly\n // Construct path to obtain all graphs where subject exists\n const predVar = this.generateVariable(ActorAbstractPath.FACTORY\n .createPath(subject, predicate, object, graph));\n const findGraphs = ActorAbstractPath.FACTORY.createUnion([\n this.assignPatternSources(ActorAbstractPath.FACTORY.createPattern(subject, predVar, object, graph), sources),\n this.assignPatternSources(ActorAbstractPath.FACTORY.createPattern(object, predVar, subject, graph), sources),\n ]);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: findGraphs }),\n );\n\n const passedGraphs: Set = new Set();\n\n const bindingsStream = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n // Extract the graph and start a predicate* search starting from subject in each graph\n const graphValue: RDF.Term = bindings.get(graph)!;\n if (passedGraphs.has(graphValue.value)) {\n return new EmptyIterator();\n }\n passedGraphs.add(graphValue.value);\n return new TransformIterator(\n async() => {\n const it = new BufferedIterator();\n await this.getObjectsPredicateStar(subject, predicate, graphValue, context, {}, it, { count: 0 });\n return it.transform({\n transform(item, next, push) {\n push(bindingsFactory.bindings([\n [ object, item ],\n [ graph, graphValue ],\n ]));\n next();\n },\n });\n },\n { maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n\n return {\n bindingsStream,\n metadata: results.metadata,\n };\n }\n\n /**\n * Returns an iterator with Bindings of the query subject predicate* ?o or subject predicate+ ?o\n * If graph is a variable, it will also be in those bindings\n * @param {Term} subject Term of where we start the predicate* search.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Variable} object Variable of the zeroOrMore-query.\n * @param {Term} graph The graph in which we search for the pattern. (Possibly a variable)\n * @param {ActionContext} context The context to pass to sub-opertations\n * @param emitFirstSubject If the path operation is predicate*, otherwise it is predicate+.\n * @return {Promise} Iterator to where all bindings of query should have been pushed.\n */\n public async getObjectsPredicateStarEval(\n subject: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n object: RDF.Variable,\n graph: RDF.Term,\n context: IActionContext,\n emitFirstSubject: boolean,\n bindingsFactory: BindingsFactory,\n ): Promise {\n if (graph.termType === 'Variable') {\n return this.predicateStarGraphVariable(subject, object, predicate, graph, context, bindingsFactory);\n }\n\n const it = new PathVariableObjectIterator(\n subject,\n predicate,\n graph,\n context,\n this.mediatorQueryOperation,\n emitFirstSubject,\n );\n\n const bindingsStream = it.transform({\n autoStart: false,\n transform(item, next, push) {\n push(bindingsFactory.bindings([[ object, item ]]));\n next();\n },\n });\n\n return {\n bindingsStream,\n async metadata() {\n const metadata: MetadataBindings = await new Promise((resolve) => {\n it.getProperty('metadata', (metadataInner: any) => resolve(metadataInner()));\n });\n // Increment cardinality by one, because we always have at least one result once we reach this stage.\n // See the transformation above where we push a single binding.\n metadata.cardinality.value++;\n return metadata;\n },\n };\n }\n\n /**\n * Pushes all terms to iterator `it` that are a solution of object predicate* ?o.\n * @param {Term} object Term of where we start the predicate* search.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {Record} termHashes Remembers the objects we've already searched for.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} The results metadata.\n */\n public async getObjectsPredicateStar(\n object: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Term,\n context: IActionContext,\n termHashes: Record,\n it: BufferedIterator,\n counter: any,\n ): Promise {\n const termString = termToString(object);\n if (termHashes[termString]) {\n return;\n }\n\n ( it)._push(object);\n termHashes[termString] = object;\n counter.count++;\n\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(object, predicate, thisVariable, graph);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: path, context }),\n );\n // TODO: fixme\n // eslint-disable-next-line ts/no-misused-promises\n results.bindingsStream.on('data', async(bindings: Bindings) => {\n const result = bindings.get(thisVariable);\n await this.getObjectsPredicateStar(result!, predicate, graph, context, termHashes, it, counter);\n });\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n });\n\n return results.metadata;\n }\n\n /**\n * Pushes all terms to iterator `it` that are a solution of ?s predicate* ?o.\n * @param {string} subjectVar String representation of subjectVariable\n * @param {string} objectVar String representation of objectVariable\n * @param {Term} subjectVal Term of where we start the predicate* search.\n * @param {Term} objectVal Found solution for an object, start for the new step.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {{[id: string]: Promise}} termHashesGlobal\n * Remembers solutions for when objectVal is already been calculated, can be reused when same objectVal occurs\n * @param {{[id: string]: Term}} termHashesCurrentSubject\n * Remembers the pairs we've already searched for, can stop searching if so.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} All solutions of query should have been pushed to it by then.\n */\n // Let the iterator `it` emit all bindings of size 2, with subjectStringVariable as value subjectVal\n // and objectStringVariable as value all nodes reachable through predicate* beginning at objectVal\n public async getSubjectAndObjectBindingsPredicateStar(\n subjectVar: RDF.Variable,\n objectVar: RDF.Variable,\n subjectVal: RDF.Term,\n objectVal: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Term,\n context: IActionContext,\n termHashesGlobal: Record>,\n termHashesCurrentSubject: Record,\n it: BufferedIterator,\n counter: any,\n bindingsFactory: BindingsFactory,\n ): Promise {\n const termString = termToString(objectVal) + termToString(graph);\n\n // If this combination of subject and object already done, return nothing\n if (termHashesCurrentSubject[termString]) {\n return;\n }\n\n counter.count++;\n termHashesCurrentSubject[termString] = true;\n ( it)._push(bindingsFactory.bindings([\n [ subjectVar, subjectVal ],\n [ objectVar, objectVal ],\n ]));\n\n // If every reachable node from object has already been calculated, use these for current subject too\n if (termString in termHashesGlobal) {\n const objects = await termHashesGlobal[termString];\n for (const object of objects) {\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subjectVal,\n object,\n predicate,\n graph,\n context,\n termHashesGlobal,\n termHashesCurrentSubject,\n it,\n counter,\n bindingsFactory,\n );\n }\n if (--counter.count === 0) {\n it.close();\n }\n\n return;\n }\n\n // Construct promise to calculate all reachable nodes from this object\n // TODO: fixme\n // eslint-disable-next-line no-async-promise-executor,ts/no-misused-promises\n const promise = new Promise(async(resolve, reject) => {\n const objectsArray: RDF.Term[] = [];\n\n // Construct path that leads us one step through predicate\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(objectVal, predicate, thisVariable, graph);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: path, context }),\n );\n\n // Recursive call on all neighbours\n // TODO: fixme\n // eslint-disable-next-line ts/no-misused-promises\n results.bindingsStream.on('data', async(bindings: RDF.Bindings) => {\n const result: RDF.Term = bindings.get(thisVariable)!;\n objectsArray.push(result);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subjectVal,\n result,\n predicate,\n graph,\n context,\n termHashesGlobal,\n termHashesCurrentSubject,\n it,\n counter,\n bindingsFactory,\n );\n });\n results.bindingsStream.on('error', reject);\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n resolve(objectsArray);\n });\n });\n\n // Set it in the termHashesGlobal when this object occurs again they can wait for this promise\n termHashesGlobal[termString] = promise;\n }\n\n /**\n * Find all sources recursively contained in the given path operation.\n * @param operation\n */\n public getPathSources(operation: Algebra.PropertyPathSymbol): IQuerySourceWrapper[] {\n switch (operation.type) {\n case Algebra.types.ALT:\n case Algebra.types.SEQ:\n return operation.input\n .flatMap((subOp: Algebra.PropertyPathSymbol) => this.getPathSources(subOp));\n case Algebra.types.INV:\n case Algebra.types.ONE_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_ONE_PATH:\n return this.getPathSources(operation.path);\n case Algebra.types.LINK:\n case Algebra.types.NPS: {\n const source = ActorQueryOperation.getOperationSource(operation);\n if (!source) {\n throw new Error(`Could not find a required source on a link path operation`);\n }\n return [ source ];\n }\n }\n }\n\n public assignPatternSources(pattern: Algebra.Pattern, sources: IQuerySourceWrapper[]): Algebra.Operation {\n if (sources.length === 0) {\n throw new Error(`Attempted to assign zero sources to a pattern during property path handling`);\n }\n if (sources.length === 1) {\n return ActorQueryOperation.assignOperationSource(pattern, sources[0]);\n }\n return ActorAbstractPath.FACTORY.createUnion(sources\n .map(source => ActorQueryOperation.assignOperationSource(pattern, source)), true);\n }\n}\n\nexport interface IPathResultStream {\n bindingsStream: AsyncIterator;\n metadata: () => Promise;\n}\n","import type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { BufferedIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\nconst FACTORY = new Factory();\n\n/**\n * An iterator that implements the multi-length property path operation (* and +)\n * for a fixed subject and predicate, and a variable object.\n */\nexport class PathVariableObjectIterator extends BufferedIterator {\n private readonly termHashes: Map = new Map();\n private readonly runningOperations: AsyncIterator[] = [];\n private readonly pendingOperations: { variable: RDF.Variable; operation: Algebra.Path }[] = [];\n\n public constructor(\n private readonly subject: RDF.Term,\n private readonly predicate: Algebra.PropertyPathSymbol,\n private readonly graph: RDF.Term,\n private readonly context: IActionContext,\n private readonly mediatorQueryOperation: MediatorQueryOperation,\n emitFirstSubject: boolean,\n private readonly maxRunningOperations = 16,\n ) {\n // The autoStart flag must be true to kickstart metadata collection\n super({ autoStart: true });\n\n // Push the subject as starting point\n this._push(this.subject, emitFirstSubject);\n }\n\n protected override _end(destroy?: boolean): void {\n // Close all running iterators\n for (const it of this.runningOperations) {\n it.destroy();\n }\n\n super._end(destroy);\n }\n\n protected override _push(item: RDF.Term, pushAsResult = true): void {\n let termString;\n if (pushAsResult) {\n // Don't push if this subject was already found\n termString = termToString(item);\n if (this.termHashes.has(termString)) {\n return;\n }\n }\n\n // Add a pending path operation for this item\n const variable = DF.variable('b');\n this.pendingOperations.push({\n variable,\n operation: FACTORY.createPath(item, this.predicate, variable, this.graph),\n });\n\n // Otherwise, push the subject\n if (termString) {\n this.termHashes.set(termString, item);\n super._push(item);\n }\n }\n\n protected override _read(count: number, done: () => void): void {\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n (async function() {\n // Open as many operations as possible\n while (self.runningOperations.length < self.maxRunningOperations) {\n if (self.pendingOperations.length === 0) {\n break;\n }\n\n const pendingOperation = self.pendingOperations.pop()!;\n const results = ActorQueryOperation.getSafeBindings(\n await self.mediatorQueryOperation.mediate({ operation: pendingOperation.operation, context: self.context }),\n );\n const runningOperation = results.bindingsStream.transform({\n autoStart: false,\n transform(bindings, next, push) {\n const newTerm: RDF.Term = bindings.get(pendingOperation.variable)!;\n push(newTerm);\n next();\n },\n });\n if (!runningOperation.done) {\n self.runningOperations.push(runningOperation);\n runningOperation.on('error', error => self.destroy(error));\n runningOperation.on('readable', () => {\n self.readable = true;\n self._fillBufferAsync();\n });\n runningOperation.on('end', () => {\n self.runningOperations.splice(self.runningOperations.indexOf(runningOperation), 1);\n self.readable = true;\n self._fillBufferAsync();\n });\n }\n\n self.setProperty('metadata', results.metadata);\n }\n\n // Try to read `count` items (based on UnionIterator)\n let lastCount = 0;\n let item: RDF.Term | null;\n // eslint-disable-next-line no-cond-assign\n while (lastCount !== (lastCount = count)) {\n // Prioritize the operations that have been added first\n for (let i = 0; i < self.runningOperations.length && count > 0; i++) {\n // eslint-disable-next-line no-cond-assign\n if ((item = self.runningOperations[i].read()) !== null) {\n count--;\n self._push(item);\n }\n }\n }\n\n // Close if everything has been read\n if (self.runningOperations.length === 0 && self.pendingOperations.length === 0) {\n self.close();\n }\n })().then(() => {\n done();\n }, error => this.destroy(error));\n }\n}\n","export * from './ActorAbstractPath';\nexport * from './PathVariableObjectIterator';\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica Convert Shortcuts Context Preprocess Actor.\n */\nexport class ActorContextPreprocessConvertShortcuts extends ActorContextPreprocess {\n public readonly contextKeyShortcuts: Record;\n\n public constructor(args: IActorContextPreprocessConvertShortcutsArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n return {\n context: ActorContextPreprocessConvertShortcuts.expandShortcuts(action.context, this.contextKeyShortcuts),\n };\n }\n\n public static expandShortcuts(context: IActionContext, contextKeyShortcuts: Record): IActionContext {\n for (const key of context.keys()) {\n if (contextKeyShortcuts[key.name]) {\n context = context\n .set(new ActionContextKey(contextKeyShortcuts[key.name]), context.get(key))\n .delete(key);\n }\n }\n return context;\n }\n}\n\nexport interface IActorContextPreprocessConvertShortcutsArgs extends IActorContextPreprocessArgs {\n /**\n * A record of context shortcuts to full context keys (as defined in @comunica/context-entries).\n * @range {json}\n * @default {{\n * \"sources\": \"@comunica/actor-init-query:querySourcesUnidentified\",\n * \"destination\": \"@comunica/bus-rdf-update-quads:destination\",\n * \"initialBindings\": \"@comunica/actor-init-query:initialBindings\",\n * \"queryFormat\": \"@comunica/actor-init-query:queryFormat\",\n * \"baseIRI\": \"@comunica/actor-init-query:baseIRI\",\n * \"log\": \"@comunica/core:log\",\n * \"datetime\": \"@comunica/actor-http-memento:datetime\",\n * \"queryTimestamp\": \"@comunica/actor-init-query:queryTimestamp\",\n * \"httpProxyHandler\": \"@comunica/actor-http-proxy:httpProxyHandler\",\n * \"lenient\": \"@comunica/actor-init-query:lenient\",\n * \"httpIncludeCredentials\": \"@comunica/bus-http:include-credentials\",\n * \"httpAuth\": \"@comunica/bus-http:auth\",\n * \"httpTimeout\": \"@comunica/bus-http:http-timeout\",\n * \"httpBodyTimeout\": \"@comunica/bus-http:http-body-timeout\",\n * \"httpRetryCount\": \"@comunica/bus-http:http-retry-count\",\n * \"httpRetryDelay\": \"@comunica/bus-http:http-retry-delay\",\n * \"httpRetryOnServerError\": \"@comunica/bus-http:http-retry-on-server-error\",\n * \"fetch\": \"@comunica/bus-http:fetch\",\n * \"recoverBrokenLinks\": \"@comunica/bus-http-wayback:recover-broken-links\",\n * \"readOnly\": \"@comunica/bus-query-operation:readOnly\",\n * \"extensionFunctions\": \"@comunica/actor-init-query:extensionFunctions\",\n * \"extensionFunctionCreator\": \"@comunica/actor-init-query:extensionFunctionCreator\",\n * \"functionArgumentsCache\": \"@comunica/actor-init-query:functionArgumentsCache\",\n * \"explain\": \"@comunica/actor-init-query:explain\",\n * \"unionDefaultGraph\": \"@comunica/bus-query-operation:unionDefaultGraph\",\n * \"traverse\": \"@comunica/bus-query-source-identify:traverse\",\n * \"noCache\": \"@comunica/actor-init-query:noCache\",\n * \"distinctConstruct\": \"@comunica/actor-init-query:distinctConstruct\"\n * }}\n */\n contextKeyShortcuts: Record;\n}\n","import type {\n IActorContextPreprocessOutput,\n IActorContextPreprocessArgs,\n MediatorContextPreprocess,\n} from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { ActorHttpInvalidateListenable, IActionHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport { KeysInitQuery, KeysQueryOperation, KeysStatistics }\n from '@comunica/context-entries';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport { ActionContext } from '@comunica/core';\nimport type {\n ILink,\n IQuerySourceWrapper,\n QuerySourceUnidentified,\n QuerySourceUnidentifiedExpanded,\n IActionContext,\n IQuerySourceUnidentifiedExpanded,\n IStatisticBase,\n} from '@comunica/types';\nimport { LRUCache } from 'lru-cache';\n\n/**\n * A comunica Query Source Identify Context Preprocess Actor.\n */\nexport class ActorContextPreprocessQuerySourceIdentify extends ActorContextPreprocess {\n public readonly cacheSize: number;\n public readonly httpInvalidator: ActorHttpInvalidateListenable;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly cache?: LRUCache>;\n\n public constructor(args: IActorContextPreprocessQuerySourceIdentifyArgs) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(\n ({ url }: IActionHttpInvalidate) => url ? cache.delete(url) : cache.clear(),\n );\n }\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n let context = action.context;\n\n // Rewrite sources\n if (context.has(KeysInitQuery.querySourcesUnidentified)) {\n const querySourcesUnidentified: QuerySourceUnidentified[] = action.context\n .get(KeysInitQuery.querySourcesUnidentified)!;\n const querySourcesUnidentifiedExpanded = await Promise.all(querySourcesUnidentified\n .map(querySource => this.expandSource(querySource)));\n const querySources: IQuerySourceWrapper[] = await Promise.all(querySourcesUnidentifiedExpanded\n .map(async querySourceUnidentified => this.identifySource(querySourceUnidentified, action.context)));\n\n // When identifying sources in preprocess actor, we record this as a dereference seed document event\n const statisticDereferenceLinks: IStatisticBase | undefined = action.context\n .get(KeysStatistics.dereferencedLinks);\n if (statisticDereferenceLinks) {\n for (const querySource of querySources) {\n statisticDereferenceLinks.updateStatistic({\n url: querySource.source.referenceValue,\n metadata: {\n seed: true,\n },\n }, querySource.source);\n }\n }\n\n context = action.context\n .delete(KeysInitQuery.querySourcesUnidentified)\n .set(KeysQueryOperation.querySources, querySources);\n }\n\n return { context };\n }\n\n public async expandSource(querySource: QuerySourceUnidentified): Promise {\n if (typeof querySource === 'string' || 'match' in querySource) {\n return { value: querySource };\n }\n return {\n ...>querySource,\n context: (await this.mediatorContextPreprocess.mediate({\n context: ActionContext.ensureActionContext(querySource.context ?? {}),\n })).context,\n };\n }\n\n public identifySource(\n querySourceUnidentified: QuerySourceUnidentifiedExpanded,\n context: IActionContext,\n ): Promise {\n let sourcePromise: Promise | undefined;\n\n // Try to read from cache\n // Only sources based on string values (e.g. URLs) are supported!\n if (typeof querySourceUnidentified.value === 'string' && this.cache) {\n sourcePromise = this.cache.get(querySourceUnidentified.value)!;\n }\n\n // If not in cache, identify the source\n if (!sourcePromise) {\n sourcePromise = this.mediatorQuerySourceIdentify.mediate({ querySourceUnidentified, context })\n .then(({ querySource }) => querySource);\n\n // Set in cache\n if (typeof querySourceUnidentified.value === 'string' && this.cache) {\n this.cache.set(querySourceUnidentified.value, sourcePromise);\n }\n }\n\n return sourcePromise;\n }\n}\n\nexport interface IActorContextPreprocessQuerySourceIdentifyArgs extends IActorContextPreprocessArgs {\n /**\n * The maximum number of entries in the LRU cache, set to 0 to disable.\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n /* eslint-disable max-len */\n /**\n * An actor that listens to HTTP invalidation events\n * @default { a }\n */\n httpInvalidator: ActorHttpInvalidateListenable;\n /* eslint-enable max-len */\n /**\n * Mediator for identifying query sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysQueryOperation, KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IActorTest, IAction } from '@comunica/core';\nimport type { IQuerySourceWrapper, QuerySourceReference } from '@comunica/types';\nimport { QuerySourceSkolemized } from './QuerySourceSkolemized';\nimport { getSourceId } from './utils';\n\n/**\n * A comunica Query Source Skolemize Context Preprocess Actor.\n */\nexport class ActorContextPreprocessQuerySourceSkolemize extends ActorContextPreprocess {\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n let context = action.context;\n\n // Wrap sources in skolemized sources\n if (context.has(KeysQueryOperation.querySources)) {\n // Determine map of source id's\n if (!context.has(KeysQuerySourceIdentify.sourceIds)) {\n context = context.set(KeysQuerySourceIdentify.sourceIds, new Map());\n }\n const sourceIds: Map = context.getSafe(KeysQuerySourceIdentify.sourceIds);\n\n let sources: IQuerySourceWrapper[] = context.getSafe(KeysQueryOperation.querySources);\n sources = sources.map(sourceWrapper => ({\n source: new QuerySourceSkolemized(sourceWrapper.source, getSourceId(sourceIds, sourceWrapper.source)),\n context: sourceWrapper.context,\n }));\n context = context.set(KeysQueryOperation.querySources, sources);\n }\n\n return { context };\n }\n}\n","import { MetadataValidationState } from '@comunica/metadata';\nimport type {\n BindingsStream,\n FragmentSelectorShape,\n IActionContext,\n IQueryBindingsOptions,\n IQuerySource,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { deskolemizeOperation, skolemizeBindingsStream, skolemizeQuadStream } from './utils';\n\n/**\n * A IQuerySource wrapper that skolemizes outgoing quads and bindings.\n */\nexport class QuerySourceSkolemized implements IQuerySource {\n /**\n * The query source to wrap over.\n */\n public readonly innerSource: IQuerySource;\n /**\n * ID of the inner source, see KeysQuerySourceIdentify.sourceIds.\n */\n public readonly sourceId: string;\n\n public constructor(innerSource: IQuerySource, sourceId: string) {\n this.innerSource = innerSource;\n this.sourceId = sourceId;\n }\n\n public async getSelectorShape(context: IActionContext): Promise {\n return this.innerSource.getSelectorShape(context);\n }\n\n public queryBindings(\n operation: Algebra.Operation,\n context: IActionContext,\n options: IQueryBindingsOptions | undefined,\n ): BindingsStream {\n const operationMapped = deskolemizeOperation(operation, this.sourceId);\n if (!operationMapped) {\n const it: BindingsStream = new ArrayIterator([], { autoStart: false });\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: [],\n });\n return it;\n }\n return skolemizeBindingsStream(this.innerSource.queryBindings(operationMapped, context, options), this.sourceId);\n }\n\n public queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise {\n return this.innerSource.queryBoolean(operation, context);\n }\n\n public queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator {\n const operationMapped = deskolemizeOperation(operation, this.sourceId);\n if (!operationMapped) {\n const it: AsyncIterator = new ArrayIterator([], { autoStart: false });\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n });\n return it;\n }\n return skolemizeQuadStream(this.innerSource.queryQuads(operationMapped, context), this.sourceId);\n }\n\n public queryVoid(operation: Algebra.Update, context: IActionContext): Promise {\n return this.innerSource.queryVoid(operation, context);\n }\n\n public get referenceValue(): string | RDF.Source {\n return this.innerSource.referenceValue;\n }\n\n public toString(): string {\n return `${this.innerSource.toString()}(SkolemID:${this.sourceId})`;\n }\n}\n","import { BlankNodeScoped } from '@comunica/data-factory';\nimport type {\n BindingsStream,\n IQuerySource,\n MetadataBindings,\n MetadataQuads,\n QuerySourceReference,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { mapTermsNested } from 'rdf-terms';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\nexport const SKOLEM_PREFIX = 'urn:comunica_skolem:source_';\n\n/**\n * Get the unique, deterministic id for the given source.\n * @param sourceIds ID's of datasources, see KeysRdfResolveQuadPattern.sourceIds.\n * @param source A data source.\n * @return The id of the given source.\n */\nexport function getSourceId(sourceIds: Map, source: IQuerySource): string {\n let sourceId = sourceIds.get(source.referenceValue);\n if (sourceId === undefined) {\n sourceId = `${sourceIds.size}`;\n sourceIds.set(source.referenceValue, sourceId);\n }\n return sourceId;\n}\n\n/**\n * If the given term is a blank node, return a deterministic named node for it\n * based on the source id and the blank node value.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n * @return If the given term was a blank node, this will return a skolemized named node, otherwise the original term.\n */\nexport function skolemizeTerm(term: RDF.Term, sourceId: string): RDF.Term | BlankNodeScoped {\n if (term.termType === 'BlankNode') {\n return new BlankNodeScoped(`bc_${sourceId}_${term.value}`, DF.namedNode(`${SKOLEM_PREFIX}${sourceId}:${term.value}`));\n }\n return term;\n}\n\n/**\n * Skolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The skolemized quad.\n */\nexport function skolemizeQuad(quad: Q, sourceId: string): Q {\n return mapTermsNested(quad, term => skolemizeTerm(term, sourceId));\n}\n\n/**\n * Skolemize all terms in the given bindings.\n * @param bindings An RDF bindings object.\n * @param sourceId A source identifier.\n * @return The skolemized bindings.\n */\nexport function skolemizeBindings(bindings: RDF.Bindings, sourceId: string): RDF.Bindings {\n return bindings.map((term) => {\n if (term.termType === 'Quad') {\n return skolemizeQuad(term, sourceId);\n }\n return skolemizeTerm(term, sourceId);\n });\n}\n\n/**\n * Skolemize all terms in the given quad stream.\n * @param iterator An RDF quad stream.\n * @param sourceId A source identifier.\n * @return The skolemized quad stream.\n */\nexport function skolemizeQuadStream(iterator: AsyncIterator, sourceId: string): AsyncIterator {\n const ret = iterator.map(quad => skolemizeQuad(quad, sourceId));\n function inheritMetadata(): void {\n iterator.getProperty('metadata', (metadata: MetadataQuads) => {\n ret.setProperty('metadata', metadata);\n metadata.state.addInvalidateListener(inheritMetadata);\n });\n }\n inheritMetadata();\n return ret;\n}\n\n/**\n * Skolemize all terms in the given bindings stream.\n * @param iterator An RDF bindings stream.\n * @param sourceId A source identifier.\n * @return The skolemized bindings stream.\n */\nexport function skolemizeBindingsStream(iterator: BindingsStream, sourceId: string): BindingsStream {\n const ret = iterator.map(bindings => skolemizeBindings(bindings, sourceId));\n function inheritMetadata(): void {\n iterator.getProperty('metadata', (metadata: MetadataBindings) => {\n ret.setProperty('metadata', metadata);\n metadata.state.addInvalidateListener(inheritMetadata);\n });\n }\n inheritMetadata();\n return ret;\n}\n\n/**\n * If a given term was a skolemized named node for the given source id,\n * deskolemize it again to a blank node.\n * If the given term was a skolemized named node for another source, return false.\n * If the given term was not a skolemized named node, return the original term.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n */\nexport function deskolemizeTerm(term: RDF.Term, sourceId: string): RDF.Term | null {\n if (term.termType === 'BlankNode' && 'skolemized' in term) {\n term = ( term).skolemized;\n }\n if (term.termType === 'NamedNode' && term.value.startsWith(SKOLEM_PREFIX)) {\n const colonSeparator = term.value.indexOf(':', SKOLEM_PREFIX.length);\n const termSourceId = term.value.slice(SKOLEM_PREFIX.length, colonSeparator);\n // We had a skolemized term\n if (termSourceId === sourceId) {\n // It came from the correct source\n const termLabel = term.value.slice(colonSeparator + 1, term.value.length);\n return DF.blankNode(termLabel);\n }\n // It came from a different source\n return null;\n }\n return term;\n}\n\nexport function deskolemizeTermNestedThrowing(term: RDF.Term, sourceId: string): RDF.Term {\n if (term.termType === 'Quad') {\n return mapTermsNested(term, (subTerm) => {\n const deskolemized = deskolemizeTerm(subTerm, sourceId);\n if (!deskolemized) {\n throw new Error(`Skolemized term is not in scope for this source`);\n }\n return deskolemized;\n });\n }\n const ret = deskolemizeTerm(term, sourceId);\n if (ret === null) {\n throw new Error(`Skolemized term is not in scope for this source`);\n }\n return ret;\n}\n\n/**\n * Deskolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The deskolemized quad.\n */\nexport function deskolemizeQuad(quad: Q, sourceId: string): Q {\n return mapTermsNested(quad, (term: RDF.Term): RDF.Term => {\n const newTerm = deskolemizeTerm(term, sourceId);\n // If the term was skolemized in a different source then don't deskolemize it\n return newTerm ?? term;\n });\n}\n\n/**\n * Deskolemize all terms in the given quad.\n * Will return undefined if there is at least one blank node not in scope for this sourceId.\n * @param operation An algebra operation.\n * @param sourceId A source identifier.\n */\nexport function deskolemizeOperation(operation: O, sourceId: string): O | undefined {\n try {\n return Util.mapOperation(operation, {\n [Algebra.types.PATTERN](op, factory) {\n return {\n result: Object.assign(factory.createPattern(\n deskolemizeTermNestedThrowing(op.subject, sourceId),\n deskolemizeTermNestedThrowing(op.predicate, sourceId),\n deskolemizeTermNestedThrowing(op.object, sourceId),\n deskolemizeTermNestedThrowing(op.graph, sourceId),\n ), { metadata: op.metadata }),\n recurse: false,\n };\n },\n [Algebra.types.PATH](op, factory) {\n return {\n result: Object.assign(factory.createPath(\n deskolemizeTermNestedThrowing(op.subject, sourceId),\n op.predicate,\n deskolemizeTermNestedThrowing(op.object, sourceId),\n deskolemizeTermNestedThrowing(op.graph, sourceId),\n ), { metadata: op.metadata }),\n recurse: false,\n };\n },\n });\n } catch {\n // Return undefined for skolemized terms not in scope for this source\n }\n}\n","import type {\n IActorContextPreprocessOutput,\n IActorContextPreprocessArgs,\n IActionContextPreprocess,\n} from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysCore, KeysInitQuery, KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport type { FunctionArgumentsCache, Logger } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica Set Defaults Context Preprocess Actor.\n */\nexport class ActorContextPreprocessSetDefaults extends ActorContextPreprocess {\n private readonly defaultFunctionArgumentsCache: FunctionArgumentsCache;\n public readonly logger: Logger;\n\n public constructor(args: IActorContextPreprocessSetDefaultsArgs) {\n super(args);\n this.defaultFunctionArgumentsCache = {};\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IActionContextPreprocess): Promise {\n let context = action.context;\n\n if (action.initialize) {\n // Set default values\n context = context\n .setDefault(KeysInitQuery.queryTimestamp, new Date())\n .setDefault(KeysQuerySourceIdentify.sourceIds, new Map())\n .setDefault(KeysCore.log, this.logger)\n .setDefault(KeysInitQuery.functionArgumentsCache, this.defaultFunctionArgumentsCache)\n .setDefault(KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores, new Map());\n\n // Handle default query format\n let queryFormat: RDF.QueryFormat = { language: 'sparql', version: '1.1' };\n if (context.has(KeysInitQuery.queryFormat)) {\n queryFormat = context.get(KeysInitQuery.queryFormat)!;\n if (queryFormat.language === 'graphql') {\n context = context.setDefault(KeysInitQuery.graphqlSingularizeVariables, {});\n }\n } else {\n context = context.set(KeysInitQuery.queryFormat, queryFormat);\n }\n }\n\n return { context };\n }\n}\n\nexport interface IActorContextPreprocessSetDefaultsArgs extends IActorContextPreprocessArgs {\n /**\n * The logger of this actor\n * @default {a }\n */\n logger: Logger;\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysInitQuery, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest, IAction } from '@comunica/core';\nimport type { QuerySourceUnidentified } from '@comunica/types';\n\n/**\n * A comunica Source To Destination Context Preprocess Actor.\n */\nexport class ActorContextPreprocessSourceToDestination extends ActorContextPreprocess {\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n if (action.context.get(KeysInitQuery.querySourcesUnidentified) &&\n !action.context.get(KeysRdfUpdateQuads.destination)) {\n const sources: QuerySourceUnidentified[] = action.context.get(KeysInitQuery.querySourcesUnidentified)!;\n if (sources.length === 1) {\n return { context: action.context.set(KeysRdfUpdateQuads.destination, sources[0]) };\n }\n }\n return action;\n }\n}\n","import type { IActionHashBindings, IActorHashBindingsOutput } from '@comunica/bus-hash-bindings';\nimport { ActorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { IActorTest } from '@comunica/core';\nimport { sha1 } from 'hash.js';\nimport { termToString } from 'rdf-string';\n\n// eslint-disable-next-line ts/no-require-imports,ts/no-var-requires\nconst canonicalize = require('canonicalize');\n\n/**\n * A comunica Memento Http Actor.\n */\nexport class ActorHashBindingsSha1 extends ActorHashBindings {\n public async test(action: IActionHashBindings): Promise {\n if (!action.allowHashCollisions) {\n throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);\n }\n return true;\n }\n\n public async run(_action: IActionHashBindings): Promise {\n return {\n hashFunction: bindings => sha1()\n .update(canonicalize(Object.fromEntries([ ...bindings ]\n .map(([ key, value ]) => [ termToString(key), termToString(value) ]))))\n .digest('hex'),\n hashCollisions: true,\n };\n }\n}\n","import type { IActionHashQuads, IActorHashQuadsOutput } from '@comunica/bus-hash-quads';\nimport { ActorHashQuads } from '@comunica/bus-hash-quads';\nimport type { IActorTest } from '@comunica/core';\nimport { sha1 } from 'hash.js';\nimport { quadToStringQuad } from 'rdf-string';\n\n/**\n * A comunica Memento Http Actor.\n */\nexport class ActorHashQuadsSha1 extends ActorHashQuads {\n public async test(action: IActionHashQuads): Promise {\n if (!action.allowHashCollisions) {\n throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);\n }\n return true;\n }\n\n public async run(_action: IActionHashQuads): Promise {\n return {\n hashFunction: quad => sha1()\n .update(JSON.stringify(quadToStringQuad(quad)))\n .digest('hex'),\n hashCollisions: true,\n };\n }\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nimport { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/* istanbul ignore next */\nif (typeof process === 'undefined') {\n // Polyfills process.nextTick for readable-stream\n globalThis.process = require('process/');\n}\n\nexport class ActorInitQuery extends ActorInitQueryBase {}\n","import type { MediatorHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { IActionInit, IActorInitArgs, IActorOutputInit } from '@comunica/bus-init';\nimport { ActorInit } from '@comunica/bus-init';\nimport type { MediatorQueryProcess } from '@comunica/bus-query-process';\nimport type {\n MediatorQueryResultSerializeHandle,\n MediatorQueryResultSerializeMediaTypes,\n MediatorQueryResultSerializeMediaTypeFormats,\n} from '@comunica/bus-query-result-serialize';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A browser-safe comunica Query Init Actor.\n */\nexport class ActorInitQueryBase extends ActorInit implements IActorInitQueryBaseArgs {\n public readonly mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n public readonly mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n public readonly mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n public readonly mediatorHttpInvalidate: MediatorHttpInvalidate;\n public readonly mediatorQueryProcess: MediatorQueryProcess;\n\n public readonly queryString?: string;\n public readonly defaultQueryInputFormat?: string;\n public readonly allowNoSources?: boolean;\n public readonly context?: string;\n\n public async test(_action: IActionInit): Promise {\n return true;\n }\n\n public async run(_action: IActionInit): Promise {\n throw new Error('ActorInitSparql#run is not supported in the browser.');\n }\n}\n\nexport interface IActorInitQueryBaseArgs extends IActorInitArgs {\n /**\n * The query process mediator\n */\n mediatorQueryProcess: MediatorQueryProcess;\n /**\n * The query serialize mediator\n */\n mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n /**\n * The query serialize media type combinator\n */\n mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n /**\n * The query serialize media type format combinator\n */\n mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n /**\n * The HTTP cache invalidation mediator\n */\n mediatorHttpInvalidate: MediatorHttpInvalidate;\n\n /**\n * A SPARQL query string\n */\n queryString?: string;\n /**\n * The default query input format\n * @default {sparql}\n */\n defaultQueryInputFormat?: string;\n /**\n * If it should be allowed that the user passes no sources.\n * @default {false}\n */\n allowNoSources?: boolean;\n /**\n * A JSON string of a query operation context\n */\n context?: string;\n}\n","import type { IActionSparqlSerialize, IActorQueryResultSerializeOutput } from '@comunica/bus-query-result-serialize';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryEngine,\n IQueryExplained,\n QueryFormatType,\n QueryType,\n QueryExplainMode,\n BindingsStream,\n QueryAlgebraContext,\n QueryStringContext,\n IQueryBindingsEnhanced,\n IQueryQuadsEnhanced,\n QueryEnhanced,\n IQueryContextCommon,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/**\n * Base implementation of a Comunica query engine.\n */\nexport class QueryEngineBase<\n // eslint-disable-next-line unused-imports/no-unused-vars\n QueryContext extends IQueryContextCommon = IQueryContextCommon,\n QueryStringContextInner extends RDF.QueryStringContext = QueryStringContext,\n QueryAlgebraContextInner extends RDF.QueryAlgebraContext = QueryAlgebraContext,\n>\nimplements IQueryEngine {\n private readonly actorInitQuery: ActorInitQueryBase;\n\n public constructor(actorInitQuery: ActorInitQueryBase) {\n this.actorInitQuery = actorInitQuery;\n }\n\n public async queryBindings(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'bindings');\n }\n\n public async queryQuads(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise & RDF.ResultStream> {\n return this.queryOfType(query, context, 'quads');\n }\n\n public async queryBoolean(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'boolean');\n }\n\n public async queryVoid(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'void');\n }\n\n protected async queryOfType(\n query: QueryFormatTypeInner,\n context: undefined | (QueryFormatTypeInner extends string ?\n QueryStringContextInner : QueryAlgebraContextInner),\n expectedType: QueryTypeOut['resultType'],\n ): Promise> {\n const result = await this.query(query, context);\n if (result.resultType === expectedType) {\n return > await result.execute();\n }\n throw new Error(`Query result type '${expectedType}' was expected, while '${result.resultType}' was found.`);\n }\n\n /**\n * Evaluate the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to the query output.\n */\n public async query(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n const output = await this.queryOrExplain(query, context);\n if ('explain' in output) {\n throw new Error(`Tried to explain a query when in query-only mode`);\n }\n return output;\n }\n\n /**\n * Explain the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @param explainMode The explain mode.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n public async explain(\n query: QueryFormatTypeInner,\n context: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n explainMode: QueryExplainMode,\n ): Promise {\n context.explain = explainMode;\n const output = await this.queryOrExplain(query, context);\n return output;\n }\n\n /**\n * Evaluate or explain the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n public async queryOrExplain(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n const actionContext: IActionContext = ActionContext.ensureActionContext(context);\n\n // Invalidate caches if cache argument is set to false\n if (actionContext.get(KeysInitQuery.noCache)) {\n await this.invalidateHttpCache();\n }\n\n // Invoke query process\n const { result } = await this.actorInitQuery.mediatorQueryProcess.mediate({ query, context: actionContext });\n if ('explain' in result) {\n return result;\n }\n return QueryEngineBase.internalToFinalResult(result);\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL (weighted) result media types.\n */\n public async getResultMediaTypes(context?: any): Promise> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeCombiner\n .mediate({ context, mediaTypes: true })).mediaTypes;\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL result media type formats.\n */\n public async getResultMediaTypeFormats(context?: any): Promise> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeFormatCombiner\n .mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n\n /**\n * Convert a query result to a string stream based on a certain media type.\n * @param {IQueryOperationResult} queryResult A query result.\n * @param {string} mediaType A media type.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A text stream.\n */\n public async resultToString(queryResult: RDF.Query, mediaType?: string, context?: any):\n Promise {\n context = ActionContext.ensureActionContext(context);\n if (!mediaType) {\n switch (queryResult.resultType) {\n case 'bindings':\n mediaType = 'application/json';\n break;\n case 'quads':\n mediaType = 'application/trig';\n break;\n default:\n mediaType = 'simple';\n break;\n }\n }\n const handle: IActionSparqlSerialize = { ...await QueryEngineBase.finalToInternalResult(queryResult), context };\n return (await this.actorInitQuery.mediatorQueryResultSerialize\n .mediate({ context, handle, handleMediaType: mediaType })).handle;\n }\n\n /**\n * Invalidate all internal caches related to the given page URL.\n * If no page URL is given, then all pages will be invalidated.\n * @param {string} url The page URL to invalidate.\n * @param context An optional ActionContext to pass to the actors.\n * @return {Promise} A promise resolving when the caches have been invalidated.\n */\n public invalidateHttpCache(url?: string, context?: any): Promise {\n context = ActionContext.ensureActionContext(context);\n return this.actorInitQuery.mediatorHttpInvalidate.mediate({ url, context });\n }\n\n /**\n * Convert an internal query result to a final one.\n * @param internalResult An intermediary query result.\n */\n public static internalToFinalResult(internalResult: IQueryOperationResult): QueryType {\n switch (internalResult.type) {\n case 'bindings':\n return {\n resultType: 'bindings',\n execute: async() => internalResult.bindingsStream,\n metadata: async() => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'quads':\n return {\n resultType: 'quads',\n execute: async() => internalResult.quadStream,\n metadata: async() => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'boolean':\n return {\n resultType: 'boolean',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n case 'void':\n return {\n resultType: 'void',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n }\n }\n\n /**\n * Convert a final query result to an internal one.\n * @param finalResult A final query result.\n */\n public static async finalToInternalResult(finalResult: RDF.Query): Promise {\n switch (finalResult.resultType) {\n case 'bindings':\n return {\n type: 'bindings',\n bindingsStream: await finalResult.execute(),\n metadata: async() => await finalResult.metadata(),\n };\n case 'quads':\n return {\n type: 'quads',\n quadStream: > await finalResult.execute(),\n metadata: async() => await finalResult.metadata(),\n };\n case 'boolean':\n return {\n type: 'boolean',\n execute: () => finalResult.execute(),\n };\n case 'void':\n return {\n type: 'void',\n execute: () => finalResult.execute(),\n };\n }\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { getDataDestinationValue } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery, KeysQueryOperation, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IDataDestination, IQuerySourceWrapper } from '@comunica/types';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Assign Sources Exhaustive Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationAssignSourcesExhaustive extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const sources: IQuerySourceWrapper[] = action.context.get(KeysQueryOperation.querySources) ?? [];\n if (sources.length === 0) {\n return { operation: action.operation, context: action.context };\n }\n if (sources.length === 1) {\n const sourceWrapper = sources[0];\n const destination: IDataDestination | undefined = action.context.get(KeysRdfUpdateQuads.destination);\n if (!destination || sourceWrapper.source.referenceValue === getDataDestinationValue(destination)) {\n try {\n const shape = await sourceWrapper.source.getSelectorShape(action.context);\n if (ActorQueryOperation.doesShapeAcceptOperation(shape, action.operation)) {\n return {\n operation: ActorQueryOperation.assignOperationSource(action.operation, sourceWrapper),\n context: action.context,\n };\n }\n } catch {\n // Fallback to the default case when the selector shape does not exist,\n // which can occur for a non-existent destination.\n }\n }\n }\n return {\n operation: this.assignExhaustive(action.operation, sources),\n // We only keep queryString in the context if we only have a single source that accepts the full operation.\n // In that case, the queryString can be sent to the source as-is.\n context: action.context\n .delete(KeysInitQuery.queryString),\n };\n }\n\n /**\n * Assign the given sources to the leaves in the given query operation.\n * Leaves will be wrapped in a union operation and duplicated for every source.\n * The input operation will not be modified.\n * @param operation The input operation.\n * @param sources The sources to assign.\n */\n public assignExhaustive(operation: Algebra.Operation, sources: IQuerySourceWrapper[]): Algebra.Operation {\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n return Util.mapOperation(operation, {\n [Algebra.types.PATTERN](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createUnion(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.LINK](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.NPS](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.SERVICE](subOperation) {\n return {\n result: subOperation,\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT](subOperation, factory) {\n return {\n result: factory.createConstruct(\n self.assignExhaustive(subOperation.input, sources),\n subOperation.template,\n ),\n recurse: false,\n };\n },\n [Algebra.types.DELETE_INSERT](subOperation, factory) {\n return {\n result: factory.createDeleteInsert(\n subOperation.delete,\n subOperation.insert,\n subOperation.where ? self.assignExhaustive(subOperation.where, sources) : undefined,\n ),\n recurse: false,\n };\n },\n });\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica BGP to Join Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationBgpToJoin extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n bgp(op: Algebra.Bgp, factory: Factory) {\n return {\n recurse: false,\n result: factory.createJoin(op.patterns),\n };\n },\n });\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries/lib/Keys';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Construct Distinct Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationConstructDistinct extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (!action.context.has(KeysInitQuery.distinctConstruct)) {\n throw new Error(`${this.name} was not enabled by the query.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n construct(op: Algebra.Construct, factory: Factory) {\n return {\n recurse: false,\n result: factory.createDistinct(factory.createConstruct(op.input, op.template)),\n };\n },\n });\n return { operation, context: action.context.delete(KeysInitQuery.distinctConstruct) };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\nconst AF = new Factory();\n\n/**\n * A comunica Describe To Constructs Subject Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationDescribeToConstructsSubject extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (action.operation.type !== Algebra.types.DESCRIBE) {\n throw new Error(`Actor ${this.name} only supports describe operations, but got ${action.operation.type}`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operationOriginal: Algebra.Describe = action.operation;\n\n // Create separate construct queries for all non-variable terms\n const operations: Algebra.Construct[] = operationOriginal.terms\n .filter(term => term.termType !== 'Variable')\n .map((term: RDF.Term) => {\n // Transform each term to a separate construct operation with S ?p ?o patterns (BGP) for all terms\n const patterns: RDF.BaseQuad[] = [\n DF.quad(term, DF.variable('__predicate'), DF.variable('__object')),\n ];\n\n // eslint-disable-next-line unicorn/no-array-for-each\n patterns.forEach((templatePattern: any) => templatePattern.type = 'pattern');\n const templateOperation: Algebra.Operation = {\n type: Algebra.types.BGP,\n patterns: patterns,\n };\n\n // Create a construct query\n return {\n input: templateOperation,\n template: patterns,\n type: 'construct',\n };\n });\n\n // If we have variables in the term list,\n // create one separate construct operation to determine these variables using the input pattern.\n if (operations.length !== operationOriginal.terms.length) {\n let variablePatterns: Algebra.Pattern[] = [];\n operationOriginal.terms\n .filter(term => term.termType === 'Variable')\n // eslint-disable-next-line unicorn/no-array-for-each\n .forEach((term: RDF.Term, i: number) => {\n // Transform each term to an S ?p ?o pattern in a non-conflicting way\n const patterns: RDF.BaseQuad[] = [\n DF.quad(term, DF.variable(`__predicate${i}`), DF.variable(`__object${i}`)),\n ];\n\n // eslint-disable-next-line unicorn/no-array-for-each\n patterns.forEach((templatePattern: any) => templatePattern.type = 'pattern');\n variablePatterns = [ ...variablePatterns, ... patterns ];\n });\n\n // Add a single construct for the variables\n // This requires a join between the input pattern and our variable patterns that form a simple BGP\n operations.push({\n input: {\n type: Algebra.types.JOIN,\n input: [\n operationOriginal.input,\n { type: Algebra.types.BGP, patterns: variablePatterns },\n ],\n },\n template: variablePatterns,\n type: Algebra.types.CONSTRUCT,\n });\n }\n\n // Union the construct operations\n const operation = AF.createUnion(operations, false);\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationArgs,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { FragmentSelectorShape, IActionContext, IQuerySourceWrapper } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { mapTermsNested, uniqTerms } from 'rdf-terms';\nimport type { Factory } from 'sparqlalgebrajs';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Filter Pushdown Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationFilterPushdown extends ActorOptimizeQueryOperation {\n private readonly aggressivePushdown: boolean;\n private readonly maxIterations: number;\n private readonly splitConjunctive: boolean;\n private readonly mergeConjunctive: boolean;\n private readonly pushIntoLeftJoins: boolean;\n private readonly pushEqualityIntoPatterns: boolean;\n\n public constructor(args: IActorOptimizeQueryOperationFilterPushdownArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n let operation: Algebra.Operation = action.operation;\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n\n // Split conjunctive filters into nested filters\n if (this.splitConjunctive) {\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n // Split conjunctive filters into separate filters\n if (op.expression.expressionType === Algebra.expressionTypes.OPERATOR && op.expression.operator === '&&') {\n self.logDebug(action.context, `Split conjunctive filter into ${op.expression.args.length} nested filters`);\n return {\n recurse: true,\n result: op.expression.args\n .reduce((operation, expression) => factory.createFilter(operation, expression), op.input),\n };\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n }\n\n // Collect selector shapes of all operations\n const sources = this.getSources(operation);\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n const sourceShapes = new Map(<[IQuerySourceWrapper, FragmentSelectorShape][]> await Promise.all(sources\n .map(async source => [ source, await source.source.getSelectorShape(action.context) ])));\n\n // Push down all filters\n // We loop until no more filters can be pushed down.\n let repeat = true;\n let iterations = 0;\n while (repeat && iterations < this.maxIterations) {\n repeat = false;\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n // Check if the filter must be pushed down\n if (!self.shouldAttemptPushDown(op, sources, sourceShapes)) {\n return {\n recurse: true,\n result: op,\n };\n }\n\n // For all filter expressions in the operation,\n // we attempt to push them down as deep as possible into the algebra.\n const variables = self.getExpressionVariables(op.expression);\n const [ isModified, result ] = self\n .filterPushdown(op.expression, variables, op.input, factory, action.context);\n if (isModified) {\n repeat = true;\n }\n return {\n recurse: true,\n result,\n };\n },\n });\n iterations++;\n }\n\n if (iterations > 1) {\n self.logDebug(action.context, `Pushed down filters in ${iterations} iterations`);\n }\n\n // Merge nested filters into conjunctive filters\n if (this.mergeConjunctive) {\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n if (op.input.type === Algebra.types.FILTER) {\n const { nestedExpressions, input } = self.getNestedFilterExpressions(op);\n self.logDebug(action.context, `Merge ${nestedExpressions.length} nested filters into conjunctive filter`);\n return {\n recurse: true,\n result: factory.createFilter(\n input,\n nestedExpressions.slice(1).reduce((previous, current) =>\n factory.createOperatorExpression('&&', [ previous, current ]), nestedExpressions[0]),\n ),\n };\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n }\n\n return { operation, context: action.context };\n }\n\n /**\n * Check if the given filter operation must be attempted to push down, based on the following criteria:\n * - Always push down if aggressive mode is enabled\n * - Push down if the filter is extremely selective\n * - Push down if federated and at least one accepts the filter\n * @param operation The filter operation\n * @param sources The query sources in the operation\n * @param sourceShapes A mapping of sources to selector shapes.\n */\n public shouldAttemptPushDown(\n operation: Algebra.Filter,\n sources: IQuerySourceWrapper[],\n sourceShapes: Map,\n ): boolean {\n // Always push down if aggressive mode is enabled\n if (this.aggressivePushdown) {\n return true;\n }\n\n // Push down if the filter is extremely selective\n const expression = operation.expression;\n if (expression.expressionType === Algebra.expressionTypes.OPERATOR &&\n expression.operator === '=' &&\n ((expression.args[0].expressionType === 'term' && expression.args[0].term.termType !== 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType === 'Variable') ||\n (expression.args[0].expressionType === 'term' && expression.args[0].term.termType === 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType !== 'Variable'))) {\n return true;\n }\n\n // Push down if federated and at least one accepts the filter\n if (sources.some(source => ActorQueryOperation.doesShapeAcceptOperation(sourceShapes.get(source)!, operation))) {\n return true;\n }\n\n // Don't push down in all other cases\n return false;\n }\n\n /**\n * Collected all sources that are defined within the given operation of children recursively.\n * @param operation An operation.\n */\n public getSources(operation: Algebra.Operation): IQuerySourceWrapper[] {\n const sources = new Set();\n const sourceAdder = (subOperation: Algebra.Operation): boolean => {\n const src = ActorQueryOperation.getOperationSource(subOperation);\n if (src) {\n sources.add(src);\n }\n return false;\n };\n Util.recurseOperation(operation, {\n [Algebra.types.PATTERN]: sourceAdder,\n [Algebra.types.LINK]: sourceAdder,\n [Algebra.types.NPS]: sourceAdder,\n [Algebra.types.SERVICE]: sourceAdder,\n });\n return [ ...sources ];\n }\n\n /**\n * Get all variables inside the given expression.\n * @param expression An expression.\n * @return An array of variables, or undefined if the expression is unsupported for pushdown.\n */\n public getExpressionVariables(expression: Algebra.Expression): RDF.Variable[] {\n switch (expression.expressionType) {\n case Algebra.expressionTypes.AGGREGATE:\n case Algebra.expressionTypes.WILDCARD:\n throw new Error(`Getting expression variables is not supported for ${expression.expressionType}`);\n case Algebra.expressionTypes.EXISTENCE:\n return Util.inScopeVariables(expression.input);\n case Algebra.expressionTypes.NAMED:\n return [];\n case Algebra.expressionTypes.OPERATOR:\n return uniqTerms(expression.args.flatMap(arg => this.getExpressionVariables(arg)));\n case Algebra.expressionTypes.TERM:\n if (expression.term.termType === 'Variable') {\n return [ expression.term ];\n }\n return [];\n }\n }\n\n protected getOverlappingOperations(\n operation: Algebra.Operation,\n expressionVariables: RDF.Variable[],\n ): {\n fullyOverlapping: Algebra.Operation[];\n partiallyOverlapping: Algebra.Operation[];\n notOverlapping: Algebra.Operation[];\n } {\n const fullyOverlapping: Algebra.Operation[] = [];\n const partiallyOverlapping: Algebra.Operation[] = [];\n const notOverlapping: Algebra.Operation[] = [];\n for (const input of operation.input) {\n const inputVariables = Util.inScopeVariables(input);\n if (this.variablesSubSetOf(expressionVariables, inputVariables)) {\n fullyOverlapping.push(input);\n } else if (this.variablesIntersect(expressionVariables, inputVariables)) {\n partiallyOverlapping.push(input);\n } else {\n notOverlapping.push(input);\n }\n }\n\n return {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n };\n }\n\n /**\n * Recursively push down the given expression into the given operation if possible.\n * Different operators have different semantics for choosing whether or not to push down,\n * and how this pushdown is done.\n * For every passed operator, it is checked whether or not the filter will have any effect on the operation.\n * If not, the filter is voided.\n * @param expression An expression to push down.\n * @param expressionVariables The variables inside the given expression.\n * @param operation The operation to push down into.\n * @param factory An algebra factory.\n * @param context The action context.\n * @return A tuple indicating if the operation was modified and the modified operation.\n */\n public filterPushdown(\n expression: Algebra.Expression,\n expressionVariables: RDF.Variable[],\n operation: Algebra.Operation,\n factory: Factory,\n context: IActionContext,\n ): [ boolean, Algebra.Operation ] {\n // Void false expressions\n if (this.isExpressionFalse(expression)) {\n return [ true, factory.createUnion([]) ];\n }\n\n // Don't push down (NOT) EXISTS\n if (expression.type === Algebra.types.EXPRESSION &&\n expression.expressionType === Algebra.expressionTypes.EXISTENCE) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n\n switch (operation.type) {\n case Algebra.types.EXTEND:\n // Pass if the variable is not part of the expression\n if (!this.variablesIntersect([ operation.variable ], expressionVariables)) {\n return [ true, factory.createExtend(\n this.filterPushdown(expression, expressionVariables, operation.input, factory, context)[1],\n operation.variable,\n operation.expression,\n ) ];\n }\n return [ false, factory.createFilter(operation, expression) ];\n case Algebra.types.FILTER: {\n // Always pass\n const [ isModified, result ] = this\n .filterPushdown(expression, expressionVariables, operation.input, factory, context);\n return [ isModified, factory.createFilter(result, operation.expression) ];\n }\n case Algebra.types.JOIN: {\n // Don't push down for empty join\n if (operation.input.length === 0) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n\n // Determine overlapping operations\n const {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n } = this.getOverlappingOperations(operation, expressionVariables);\n\n const joins: Algebra.Operation[] = [];\n let isModified = false;\n if (fullyOverlapping.length > 0) {\n isModified = true;\n joins.push(factory.createJoin(fullyOverlapping\n .map(input => this.filterPushdown(expression, expressionVariables, input, factory, context)[1])));\n }\n if (partiallyOverlapping.length > 0) {\n joins.push(factory.createFilter(factory.createJoin(partiallyOverlapping, false), expression));\n }\n if (notOverlapping.length > 0) {\n joins.push(...notOverlapping);\n }\n\n if (joins.length > 1) {\n isModified = true;\n }\n\n if (isModified) {\n this.logDebug(context, `Push down filter across join entries with ${fullyOverlapping.length} fully overlapping, ${partiallyOverlapping.length} partially overlapping, and ${notOverlapping.length} not overlapping`);\n }\n\n return [ isModified, joins.length === 1 ? joins[0] : factory.createJoin(joins) ];\n }\n case Algebra.types.NOP:\n return [ true, operation ];\n case Algebra.types.PROJECT:\n // Push down if variables overlap\n if (this.variablesIntersect(operation.variables, expressionVariables)) {\n return [ true, factory.createProject(\n this.filterPushdown(expression, expressionVariables, operation.input, factory, context)[1],\n operation.variables,\n ) ];\n }\n // Void expression otherwise\n return [ true, operation ];\n case Algebra.types.UNION: {\n // Determine overlapping operations\n const {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n } = this.getOverlappingOperations(operation, expressionVariables);\n\n const unions: Algebra.Operation[] = [];\n let isModified = false;\n if (fullyOverlapping.length > 0) {\n isModified = true;\n unions.push(factory.createUnion(fullyOverlapping\n .map(input => this.filterPushdown(expression, expressionVariables, input, factory, context)[1])));\n }\n if (partiallyOverlapping.length > 0) {\n unions.push(factory.createFilter(factory.createUnion(partiallyOverlapping, false), expression));\n }\n if (notOverlapping.length > 0) {\n unions.push(...notOverlapping);\n }\n\n if (unions.length > 1) {\n isModified = true;\n }\n\n if (isModified) {\n this.logDebug(context, `Push down filter across union entries with ${fullyOverlapping.length} fully overlapping, ${partiallyOverlapping.length} partially overlapping, and ${notOverlapping.length} not overlapping`);\n }\n\n return [ isModified, unions.length === 1 ? unions[0] : factory.createUnion(unions) ];\n }\n case Algebra.types.VALUES:\n // Only keep filter if it overlaps with the variables\n if (this.variablesIntersect(operation.variables, expressionVariables)) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n return [ true, operation ];\n case Algebra.types.LEFT_JOIN: {\n if (this.pushIntoLeftJoins) {\n const rightVariables = Util.inScopeVariables(operation.input[1]);\n if (!this.variablesIntersect(expressionVariables, rightVariables)) {\n // If filter *only* applies to left entry of optional, push it down into that.\n this.logDebug(context, `Push down filter into left join`);\n return [ true, factory.createLeftJoin(\n this.filterPushdown(expression, expressionVariables, operation.input[0], factory, context)[1],\n operation.input[1],\n operation.expression,\n ) ];\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.PATTERN: {\n if (this.pushEqualityIntoPatterns) {\n // Try to push simple FILTER(?s = ) expressions into the pattern\n const pushableResult = this.getEqualityExpressionPushableIntoPattern(expression);\n if (pushableResult) {\n let isModified = false;\n const originalMetadata = operation.metadata;\n operation = mapTermsNested(operation, (value) => {\n if (value.equals(pushableResult.variable)) {\n isModified = true;\n return pushableResult.term;\n }\n return value;\n });\n operation.type = Algebra.types.PATTERN;\n operation.metadata = originalMetadata;\n if (isModified) {\n this.logDebug(context, `Push down filter into pattern for ?${pushableResult.variable.value}`);\n return [ true, factory.createJoin([\n operation,\n factory.createValues(\n [ pushableResult.variable ],\n [{ [`?${pushableResult.variable.value}`]: pushableResult.term }],\n ),\n ]) ];\n }\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.PATH: {\n if (this.pushEqualityIntoPatterns) {\n // Try to push simple FILTER(?s = ) expressions into the path\n const pushableResult = this.getEqualityExpressionPushableIntoPattern(expression);\n if (pushableResult &&\n (operation.subject.equals(pushableResult.variable) || operation.object.equals(pushableResult.variable))) {\n this.logDebug(context, `Push down filter into path for ?${pushableResult.variable.value}`);\n const originalMetadata = operation.metadata;\n operation = factory.createPath(\n operation.subject.equals(pushableResult.variable) ? pushableResult.term : operation.subject,\n operation.predicate,\n operation.object.equals(pushableResult.variable) ? pushableResult.term : operation.object,\n );\n operation.metadata = originalMetadata;\n return [ true, factory.createJoin([\n operation,\n factory.createValues(\n [ pushableResult.variable ],\n [{ [`?${pushableResult.variable.value}`]: pushableResult.term }],\n ),\n ]) ];\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.MINUS:\n case Algebra.types.ALT:\n case Algebra.types.ASK:\n case Algebra.types.BGP:\n case Algebra.types.CONSTRUCT:\n case Algebra.types.DESCRIBE:\n case Algebra.types.DISTINCT:\n case Algebra.types.EXPRESSION:\n case Algebra.types.FROM:\n case Algebra.types.GRAPH:\n case Algebra.types.GROUP:\n case Algebra.types.INV:\n case Algebra.types.LINK:\n case Algebra.types.NPS:\n case Algebra.types.ONE_OR_MORE_PATH:\n case Algebra.types.ORDER_BY:\n case Algebra.types.REDUCED:\n case Algebra.types.SEQ:\n case Algebra.types.SERVICE:\n case Algebra.types.SLICE:\n case Algebra.types.ZERO_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_ONE_PATH:\n case Algebra.types.COMPOSITE_UPDATE:\n case Algebra.types.DELETE_INSERT:\n case Algebra.types.LOAD:\n case Algebra.types.CLEAR:\n case Algebra.types.CREATE:\n case Algebra.types.DROP:\n case Algebra.types.ADD:\n case Algebra.types.MOVE:\n case Algebra.types.COPY:\n // Operations that do not support pushing down\n // Left-join and minus might be possible to support in the future.\n return [ false, factory.createFilter(operation, expression) ];\n }\n }\n\n /**\n * Check if the given expression is a simple equals operation with one variable and one non-literal\n * (or literal with canonical lexical form) term that can be pushed into a pattern.\n * @param expression The current expression.\n * @return The variable and term to fill into the pattern, or undefined.\n */\n public getEqualityExpressionPushableIntoPattern(\n expression: Algebra.Expression,\n ): { variable: RDF.Variable; term: RDF.Term } | undefined {\n if (expression.expressionType === Algebra.expressionTypes.OPERATOR && expression.operator === '=') {\n if (expression.args[0].expressionType === 'term' && expression.args[0].term.termType !== 'Variable' &&\n (expression.args[0].term.termType !== 'Literal' ||\n this.isLiteralWithCanonicalLexicalForm(expression.args[0].term)) &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType === 'Variable') {\n return {\n variable: expression.args[1].term,\n term: expression.args[0].term,\n };\n }\n if (expression.args[0].expressionType === 'term' && expression.args[0].term.termType === 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType !== 'Variable' &&\n (expression.args[1].term.termType !== 'Literal' ||\n this.isLiteralWithCanonicalLexicalForm(expression.args[1].term))) {\n return {\n variable: expression.args[0].term,\n term: expression.args[1].term,\n };\n }\n }\n }\n\n /**\n * Check if the given term is a literal with datatype that where all values\n * can only have one possible lexical representation.\n * In other words, no variants of values exist that should be considered equal.\n * For example: \"01\"^xsd:number and \"1\"^xsd:number will return false.\n * @param term An RDF term.\n * @protected\n */\n protected isLiteralWithCanonicalLexicalForm(term: RDF.Term): boolean {\n if (term.termType === 'Literal') {\n switch (term.datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#string':\n case 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString':\n case 'http://www.w3.org/2001/XMLSchema#normalizedString':\n case 'http://www.w3.org/2001/XMLSchema#anyURI':\n case 'http://www.w3.org/2001/XMLSchema#base64Binary':\n case 'http://www.w3.org/2001/XMLSchema#language':\n case 'http://www.w3.org/2001/XMLSchema#Name':\n case 'http://www.w3.org/2001/XMLSchema#NCName':\n case 'http://www.w3.org/2001/XMLSchema#NMTOKEN':\n case 'http://www.w3.org/2001/XMLSchema#token':\n case 'http://www.w3.org/2001/XMLSchema#hexBinary':\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check if there is an overlap between the two given lists of variables.\n * @param varsA A list of variables.\n * @param varsB A list of variables.\n */\n public variablesIntersect(varsA: RDF.Variable[], varsB: RDF.Variable[]): boolean {\n return varsA.some(varA => varsB.some(varB => varA.equals(varB)));\n }\n\n /**\n * Check if all variables from the first list are included in the second list.\n * The second list may contain other variables as well.\n * @param varsNeedles A list of variables to search for.\n * @param varsHaystack A list of variables to search in.\n */\n public variablesSubSetOf(varsNeedles: RDF.Variable[], varsHaystack: RDF.Variable[]): boolean {\n return varsNeedles.length <= varsHaystack.length &&\n varsNeedles.every(varA => varsHaystack.some(varB => varA.equals(varB)));\n }\n\n /**\n * Check if an expression is simply 'false'.\n * @param expression An expression.\n */\n public isExpressionFalse(expression: Algebra.Expression): boolean {\n return (expression.term && expression.term.termType === 'Literal' && expression.term.value === 'false');\n }\n\n /**\n * Get all directly nested filter expressions.\n * As soon as a non-filter is found, it is returned as the input field.\n * @param op A filter expression.\n */\n public getNestedFilterExpressions(\n op: Algebra.Filter,\n ): { nestedExpressions: Algebra.Expression[]; input: Algebra.Operation } {\n if (op.input.type === Algebra.types.FILTER) {\n const childData = this.getNestedFilterExpressions(op.input);\n return { nestedExpressions: [ op.expression, ...childData.nestedExpressions ], input: childData.input };\n }\n return { nestedExpressions: [ op.expression ], input: op.input };\n }\n}\n\nexport interface IActorOptimizeQueryOperationFilterPushdownArgs extends IActorOptimizeQueryOperationArgs {\n /**\n * If filters should be pushed down as deep as possible.\n * If false, filters will only be pushed down if the source(s) accept them,\n * or if the filter is very selective.\n * @range {boolean}\n * @default {false}\n */\n aggressivePushdown: boolean;\n /**\n * The maximum number of full iterations across the query can be done for attempting to push down filters.\n * @default {10}\n */\n maxIterations: number;\n /**\n * If conjunctive filters should be split into nested filters before applying filter pushdown.\n * This can enable pushing down deeper.\n * @range {boolean}\n * @default {true}\n */\n splitConjunctive: boolean;\n /**\n * If nested filters should be merged into conjunctive filters after applying filter pushdown.\n * @range {boolean}\n * @default {true}\n */\n mergeConjunctive: boolean;\n /**\n * If filters should be pushed into left-joins.\n * @range {boolean}\n * @default {true}\n */\n pushIntoLeftJoins: boolean;\n /**\n * If simple equality filters should be pushed into patterns and paths.\n * This only applies to equality filters with terms that are not literals that have no canonical lexical form.\n * @range {boolean}\n * @default {true}\n */\n pushEqualityIntoPatterns: boolean;\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQuerySourceWrapper } from '@comunica/types';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\n\n/**\n * A comunica Group Sources Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationGroupSources extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n return { operation: await this.groupOperation(action.operation, action.context), context: action.context };\n }\n\n /**\n * Group operations belonging to the same source together, only if that source accepts the grouped operations.\n * This grouping will be done recursively for the whole operation tree.\n * Operations annotated with sources are considered leaves in the tree.\n * @param operation An operation to group.\n * @param context The action context.\n */\n public async groupOperation(operation: Algebra.Operation, context: IActionContext): Promise {\n // Return operation as-is if the operation already has a single source, or if the operation has no children.\n if (ActorQueryOperation.getOperationSource(operation) ?? !('input' in operation)) {\n return operation;\n }\n\n // If operation has a single input, move source annotation upwards if the source can handle it.\n if (!Array.isArray(operation.input)) {\n const groupedInput = await this.groupOperation(operation.input, context);\n if (groupedInput.metadata?.scopedSource) {\n const source: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(groupedInput)!;\n if (ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), operation)) {\n this.logDebug(context, `Hoist 1 source-specific operation into a single ${operation.type} operation for ${source.source.toString()}`);\n ActorQueryOperation.removeOperationSource(groupedInput);\n operation = ActorQueryOperation.assignOperationSource(operation, source);\n }\n }\n return { ...operation, input: groupedInput };\n }\n\n // If operation has multiple inputs, cluster source annotations.\n const inputs: Algebra.Operation[] = await Promise.all(operation.input\n .map(subInput => this.groupOperation(subInput, context)));\n const clusters = this.clusterOperationsWithEqualSources(inputs);\n\n // If we just have a single cluster, move the source annotation upwards\n if (clusters.length === 1) {\n const newInputs = clusters[0];\n const source = ActorQueryOperation.getOperationSource(clusters[0][0])!;\n return {\n ...await this.moveSourceAnnotationUpwardsIfPossible(operation, newInputs, source, context),\n input: newInputs,\n };\n }\n\n // If the number of clusters is equal to the number of original inputs, do nothing.\n if (clusters.length === inputs.length) {\n return { ...operation, input: inputs };\n }\n\n // If we have multiple clusters, created nested multi-operations\n let multiFactoryMethod: (children: Algebra.Operation[], flatten: boolean) => Algebra.Operation;\n switch (operation.type) {\n case Algebra.types.JOIN:\n multiFactoryMethod = AF.createJoin.bind(AF);\n break;\n case Algebra.types.UNION:\n multiFactoryMethod = AF.createUnion.bind(AF);\n break;\n case Algebra.types.ALT:\n multiFactoryMethod = AF.createAlt.bind(AF);\n break;\n case Algebra.types.SEQ:\n multiFactoryMethod = AF.createSeq.bind(AF);\n break;\n default:\n // While LeftJoin and Minus are also multi-operations,\n // these can never occur because they only have 2 inputs,\n // so these cases will always be captured by one of the 2 if-cases above\n // (clusters.length === 1 or clusters.length === input.length)\n\n // In all other cases, error\n throw new Error(`Unsupported operation '${operation.type}' detected while grouping sources`);\n }\n return await this.groupOperationMulti(clusters, multiFactoryMethod, context);\n }\n\n protected async groupOperationMulti(\n clusters: Algebra.Operation[][],\n factoryMethod: (children: Algebra.Operation[], flatten: boolean) => Algebra.Operation,\n context: IActionContext,\n ): Promise {\n let flatten = true;\n const nestedMerges = await Promise.all(clusters.map(async(cluster) => {\n const source = ActorQueryOperation.getOperationSource(cluster[0])!;\n const merged = await this\n .moveSourceAnnotationUpwardsIfPossible(factoryMethod(cluster, true), cluster, source, context);\n if (ActorQueryOperation.getOperationSource(merged)) {\n flatten = false;\n }\n return merged;\n }));\n return factoryMethod(nestedMerges, flatten);\n }\n\n /**\n * Cluster the given operations by equal source annotations.\n * @param operationsIn An array of operations to cluster.\n */\n public clusterOperationsWithEqualSources(operationsIn: Algebra.Operation[]): Algebra.Operation[][] {\n // Operations can have a source, or no source at all\n const sourceOperations: Map = new Map();\n const sourcelessOperations: Algebra.Operation[] = [];\n\n // Cluster by source\n for (const operation of operationsIn) {\n const source: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(operation)!;\n if (source) {\n if (!sourceOperations.has(source)) {\n sourceOperations.set(source, []);\n }\n sourceOperations.get(source)!.push(operation);\n } else {\n sourcelessOperations.push(operation);\n }\n }\n\n // Return clusters\n const clusters: Algebra.Operation[][] = [];\n if (sourcelessOperations.length > 0) {\n clusters.push(sourcelessOperations);\n }\n for (const [ source, operations ] of sourceOperations.entries()) {\n clusters.push(operations\n .map(operation => ActorQueryOperation.assignOperationSource(operation, source)));\n }\n return clusters;\n }\n\n /**\n * If the given source accepts the grouped operation, annotate the grouped operation with the source,\n * and remove the source annotation from the seperate input operations.\n * Otherwise, return the grouped operation unchanged.\n * @param operation A grouped operation consisting of all given input operations.\n * @param inputs An array of operations that share the same source annotation.\n * @param source The common source.\n * @param context The action context.\n */\n public async moveSourceAnnotationUpwardsIfPossible(\n operation: O,\n inputs: Algebra.Operation[],\n source: IQuerySourceWrapper | undefined,\n context: IActionContext,\n ): Promise {\n if (source && ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), operation)) {\n this.logDebug(context, `Hoist ${inputs.length} source-specific operations into a single ${operation.type} operation for ${source.source.toString()}`);\n operation = ActorQueryOperation.assignOperationSource(operation, source);\n for (const input of inputs) {\n ActorQueryOperation.removeOperationSource(input);\n }\n }\n return operation;\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join BGP Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationJoinBgp extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n join(op: Algebra.Join, factory: Factory) {\n if (op.input.every(subInput => subInput.type === 'bgp')) {\n return {\n recurse: false,\n result: factory.createBgp(op.input.flatMap(subInput => subInput.patterns)),\n };\n }\n return {\n recurse: false,\n result: op,\n };\n },\n });\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join Connected Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationJoinConnected extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n join(op: Algebra.Join, factory: Factory) {\n return {\n recurse: false,\n result: ActorOptimizeQueryOperationJoinConnected.cluster(op, factory),\n };\n },\n });\n return { operation, context: action.context };\n }\n\n /**\n * Iteratively cluster join entries based on their overlapping variables.\n * @param op A join operation.\n * @param factory An algebra factory.\n */\n public static cluster(op: Algebra.Join, factory: Factory): Algebra.Operation {\n // Initialize each entry to be in a separate cluster\n const initialClusters: IJoinCluster[] = op.input.map(subOp => ({\n inScopeVariables: Object.fromEntries(Util.inScopeVariables(subOp).map(variable => [ variable.value, true ])),\n entries: [ subOp ],\n }));\n\n // Iteratively merge clusters until they don't change anymore\n let oldClusters: IJoinCluster[];\n let newClusters: IJoinCluster[] = initialClusters;\n do {\n oldClusters = newClusters;\n newClusters = ActorOptimizeQueryOperationJoinConnected.clusterIteration(oldClusters);\n } while (oldClusters.length !== newClusters.length);\n\n // Create new join operation of latest clusters\n const subJoins = newClusters\n .map(cluster => cluster.entries.length === 1 ? cluster.entries[0] : factory.createJoin(cluster.entries));\n return subJoins.length === 1 ? subJoins[0] : factory.createJoin(subJoins, false);\n }\n\n /**\n * Perform a single clustering iteration.\n * Clusters will be joined if they have overlapping variables.\n * @param oldCluster\n */\n public static clusterIteration(oldCluster: IJoinCluster[]): IJoinCluster[] {\n const newClusters: IJoinCluster[] = [];\n\n for (const entry of oldCluster) {\n // Try to add entry to a join cluster\n let joined = false;\n for (const newEntry of newClusters) {\n if (ActorOptimizeQueryOperationJoinConnected\n .haveOverlappingVariables(entry.inScopeVariables, newEntry.inScopeVariables)) {\n newEntry.entries = [ ...newEntry.entries, ...entry.entries ];\n newEntry.inScopeVariables = { ...newEntry.inScopeVariables, ...entry.inScopeVariables };\n joined = true;\n break;\n }\n }\n\n // If none was found, create new cluster\n if (!joined) {\n newClusters.push({\n inScopeVariables: entry.inScopeVariables,\n entries: entry.entries,\n });\n }\n }\n\n return newClusters;\n }\n\n /**\n * Check if the two given variable objects are overlapping.\n * @param variablesA A variables objects.\n * @param variablesB A variables objects.\n */\n public static haveOverlappingVariables(\n variablesA: Record,\n variablesB: Record,\n ): boolean {\n for (const variableA of Object.keys(variablesA)) {\n if (variablesB[variableA]) {\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * A cluster of join entries.\n */\nexport interface IJoinCluster {\n /**\n * Union of all variables in scope within the join entries.\n */\n inScopeVariables: Record;\n /**\n * Join entries\n */\n entries: Algebra.Operation[];\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQuerySourceWrapper, MetadataBindings } from '@comunica/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory, Util } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\n\n/**\n * A comunica Prune Empty Source Operations Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationPruneEmptySourceOperations extends ActorOptimizeQueryOperation {\n private readonly useAskIfSupported: boolean;\n\n public constructor(args: IActorOptimizeQueryOperationPruneEmptySourceOperationsArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n let operation = action.operation;\n\n // Collect all operations with source types\n // Only consider unions of patterns or alts of links, since these are created during exhaustive source assignment.\n const collectedOperations: (Algebra.Pattern | Algebra.Link)[] = [];\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n Util.recurseOperation(operation, {\n [Algebra.types.UNION](subOperation) {\n self.collectMultiOperationInputs(subOperation.input, collectedOperations, Algebra.types.PATTERN);\n return true;\n },\n [Algebra.types.ALT](subOperation) {\n self.collectMultiOperationInputs(subOperation.input, collectedOperations, Algebra.types.LINK);\n return false;\n },\n [Algebra.types.SERVICE]() {\n return false;\n },\n });\n\n // Determine in an async manner whether or not these sources return non-empty results\n const emptyOperations: Set = new Set();\n await Promise.all(collectedOperations.map(async(collectedOperation) => {\n const checkOperation = collectedOperation.type === 'link' ?\n AF.createPattern(DF.variable('?s'), collectedOperation.iri, DF.variable('?o')) :\n collectedOperation;\n if (!await this.hasSourceResults(\n ActorQueryOperation.getOperationSource(collectedOperation)!,\n checkOperation,\n action.context,\n )) {\n emptyOperations.add(collectedOperation);\n }\n }));\n\n // Only perform next mapping if we have at least one empty operation\n if (emptyOperations.size > 0) {\n this.logDebug(action.context, `Pruning ${emptyOperations.size} source-specific operations`);\n // Rewrite operations by removing the empty children\n operation = Util.mapOperation(operation, {\n [Algebra.types.UNION](subOperation, factory) {\n return self.mapMultiOperation(subOperation, emptyOperations, children => factory.createUnion(children));\n },\n [Algebra.types.ALT](subOperation, factory) {\n return self.mapMultiOperation(subOperation, emptyOperations, children => factory.createAlt(children));\n },\n });\n\n // Identify and remove operations that have become empty now due to missing variables\n operation = Util.mapOperation(operation, {\n [Algebra.types.PROJECT](subOperation, factory) {\n // Remove projections that have become empty now due to missing variables\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation)) {\n return {\n recurse: false,\n result: factory.createUnion([]),\n };\n }\n return {\n recurse: true,\n result: subOperation,\n };\n },\n [Algebra.types.LEFT_JOIN](subOperation) {\n // Remove left joins with empty right operation\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation.input[1])) {\n return {\n recurse: true,\n result: subOperation.input[0],\n };\n }\n return {\n recurse: true,\n result: subOperation,\n };\n },\n });\n }\n\n return { operation, context: action.context };\n }\n\n protected static hasEmptyOperation(operation: Algebra.Operation): boolean {\n // If union (or alt) is empty, consider it empty (`Array.every` on an empty array always returns true)\n // But if we find a union with multiple children,\n // *all* of the children must be empty before the full operation is considered empty.\n let emptyOperation = false;\n Util.recurseOperation(operation, {\n [Algebra.types.UNION](subOperation) {\n if (subOperation.input.every(subSubOperation => ActorOptimizeQueryOperationPruneEmptySourceOperations\n .hasEmptyOperation(subSubOperation))) {\n emptyOperation = true;\n }\n return false;\n },\n [Algebra.types.ALT](subOperation) {\n if (subOperation.input.length === 0) {\n emptyOperation = true;\n }\n return false;\n },\n [Algebra.types.LEFT_JOIN](subOperation) {\n // Only recurse into left part of left-join\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation.input[0])) {\n emptyOperation = true;\n }\n return false;\n },\n });\n return emptyOperation;\n }\n\n protected collectMultiOperationInputs(\n inputs: Algebra.Operation[],\n collectedOperations: (Algebra.Pattern | Algebra.Link)[],\n inputType: (Algebra.Pattern | Algebra.Link)['type'],\n ): void {\n for (const input of inputs) {\n if (ActorQueryOperation.getOperationSource(input) && input.type === inputType) {\n collectedOperations.push(input);\n }\n }\n }\n\n protected mapMultiOperation(\n operation: O,\n emptyOperations: Set,\n multiOperationFactory: (input: O['input']) => Algebra.Operation,\n ): {\n result: Algebra.Operation;\n recurse: boolean;\n } {\n // Determine which operations return non-empty results\n const nonEmptyInputs = operation.input.filter(input => !emptyOperations.has(input));\n\n // Remove empty operations\n if (nonEmptyInputs.length === operation.input.length) {\n return { result: operation, recurse: true };\n }\n if (nonEmptyInputs.length === 0) {\n return { result: multiOperationFactory([]), recurse: false };\n }\n if (nonEmptyInputs.length === 1) {\n return { result: nonEmptyInputs[0], recurse: true };\n }\n return { result: multiOperationFactory(nonEmptyInputs), recurse: true };\n }\n\n /**\n * Check if the given query operation will produce at least one result in the given source.\n * @param source A query source.\n * @param input A query operation.\n * @param context The query context.\n */\n public async hasSourceResults(\n source: IQuerySourceWrapper,\n input: Algebra.Operation,\n context: IActionContext,\n ): Promise {\n // Traversal sources should never be considered empty at optimization time.\n if (source.context?.get(KeysQuerySourceIdentify.traverse)) {\n return true;\n }\n\n // Send an ASK query\n if (this.useAskIfSupported) {\n const askOperation = AF.createAsk(input);\n if (ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), askOperation)) {\n return source.source.queryBoolean(askOperation, context);\n }\n }\n\n // Send the operation as-is and check the response cardinality\n const bindingsStream = source.source.queryBindings(input, context);\n return new Promise((resolve, reject) => {\n bindingsStream.on('error', reject);\n bindingsStream.getProperty('metadata', (metadata: MetadataBindings) => {\n bindingsStream.destroy();\n resolve(metadata.cardinality.value > 0);\n });\n });\n }\n}\n\nexport interface IActorOptimizeQueryOperationPruneEmptySourceOperationsArgs extends IActorOptimizeQueryOperationArgs {\n /**\n * If true, ASK queries will be sent to the source instead of COUNT queries to check emptiness for patterns.\n * This will only be done for sources that accept ASK queries.\n * @default {false}\n */\n useAskIfSupported: boolean;\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Rewrite Add Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteAdd extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.ADD](operationOriginal, factory) {\n // CONSTRUCT all quads from the source, and INSERT them into the destination\n const destination = operationOriginal.destination === 'DEFAULT' ?\n DF.defaultGraph() :\n operationOriginal.destination;\n const source = operationOriginal.source === 'DEFAULT' ? DF.defaultGraph() : operationOriginal.source;\n\n const result = factory.createDeleteInsert(undefined, [\n factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), destination),\n ], factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), source));\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Rewrite Copy Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteCopy extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.COPY](operationOriginal, factory) {\n // No-op if source === destination\n let result: Algebra.CompositeUpdate;\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n result = factory.createCompositeUpdate([]);\n } else {\n // COPY is equivalent to drop destination, and add\n result = factory.createCompositeUpdate([\n factory.createDrop(operationOriginal.destination, true),\n factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n ]);\n }\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Rewrite Move Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteMove extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.MOVE](operationOriginal, factory) {\n // No-op if source === destination\n let result: Algebra.CompositeUpdate;\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n result = factory.createCompositeUpdate([]);\n } else {\n // MOVE is equivalent to drop destination, add, and drop source\n const updates = [\n factory.createDrop(operationOriginal.destination, true),\n factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n factory.createDrop(operationOriginal.source),\n ];\n result = factory.createCompositeUpdate(updates);\n }\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Ask Query Operation Actor.\n */\nexport class ActorQueryOperationAsk extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'ask');\n }\n\n public async testOperation(_operation: Algebra.Ask, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Ask, context: IActionContext): Promise {\n // Call other query operations like this:\n const output: IQueryOperationResult = await this.mediatorQueryOperation.mediate(\n { operation: operation.input, context },\n );\n const { bindingsStream }: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(output);\n return { type: 'boolean', execute: async() => (await bindingsStream.take(1).toArray()).length === 1 };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL BGP operations by rewriting it as a join operator.\n */\nexport class ActorQueryOperationBgpJoin extends ActorQueryOperationTypedMediated {\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'bgp');\n }\n\n public async testOperation(_operation: Algebra.Bgp, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Bgp, context: IActionContext):\n Promise {\n return this.mediatorQueryOperation.mediate({\n operation: ActorQueryOperationBgpJoin.FACTORY.createJoin(operation.patterns),\n context,\n });\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { getTermsNested, getVariables, uniqTerms } from 'rdf-terms';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { BindingsToQuadsIterator } from './BindingsToQuadsIterator';\n\n/**\n * A comunica Construct Query Operation Actor.\n */\nexport class ActorQueryOperationConstruct extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'construct');\n }\n\n /**\n * Find all variables in a list of triple patterns.\n * @param {Algebra.Pattern[]} patterns An array of triple patterns.\n * @return {RDF.Variable[]} The variables in the triple patterns.\n */\n public static getVariables(patterns: RDF.BaseQuad[]): RDF.Variable[] {\n return uniqTerms(( []).concat\n .apply([], patterns.map(pattern => getVariables(getTermsNested(pattern)))));\n }\n\n public async testOperation(_operation: Algebra.Construct, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.Construct, context: IActionContext):\n Promise {\n // Apply a projection on our CONSTRUCT variables first, as the query may contain other variables as well.\n const variables: RDF.Variable[] = ActorQueryOperationConstruct.getVariables(operationOriginal.template);\n const operation: Algebra.Operation = { type: Algebra.types.PROJECT, input: operationOriginal.input, variables };\n\n // Evaluate the input query\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation, context }),\n );\n\n // Construct triples using the result based on the pattern.\n // If it's a DESCRIBE query don't apply the blank node localisation.\n const quadStream: AsyncIterator = new BindingsToQuadsIterator(\n operationOriginal.template,\n output.bindingsStream,\n );\n\n // Let the final metadata contain the estimated number of triples\n const metadata: (() => Promise) = () => output.metadata().then(meta => ({\n ...meta,\n order: undefined,\n cardinality: {\n type: meta.cardinality.type,\n value: meta.cardinality.value * operationOriginal.template.length,\n },\n canContainUndefs: false,\n availableOrders: undefined,\n }));\n\n return {\n metadata,\n quadStream,\n type: 'quads',\n };\n }\n}\n","import type { Bindings, BindingsStream } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator, MultiTransformIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { mapTermsNested } from 'rdf-terms';\n\nconst DF = new DataFactory();\n\n/**\n * Transforms a bindings stream into a quad stream given a quad template.\n *\n * This conforms to the SPARQL 1.1 spec on constructing triples:\n * https://www.w3.org/TR/sparql11-query/#rConstructTriples\n */\nexport class BindingsToQuadsIterator extends MultiTransformIterator {\n protected readonly template: RDF.BaseQuad[];\n protected blankNodeCounter: number;\n\n public constructor(template: RDF.BaseQuad[], bindingsStream: BindingsStream) {\n super(bindingsStream, { autoStart: false });\n this.template = template;\n this.blankNodeCounter = 0;\n }\n\n /**\n * Bind the given term.\n * If the term is a variable and the variable is bound in the bindings object,\n * return the bindings value.\n * If the term is a variable and the variable is not bound in the bindings object,\n * a falsy value is returned..\n * Otherwise, the term itself is returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Term} term An RDF term.\n * @return {RDF.Term} If the given term is not a variable, the term itself is returned.\n * If the given term is a variable, then the bound term is returned,\n * or a falsy value if it did not exist in the bindings.\n */\n public static bindTerm(bindings: Bindings, term: RDF.Term): RDF.Term | undefined {\n if (term.termType === 'Variable') {\n return bindings.get(term);\n }\n return term;\n }\n\n /**\n * Bind the given quad pattern.\n * If one of the terms was a variable AND is not bound in the bindings,\n * a falsy value will be returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad} pattern An RDF quad.\n * @return {RDF.Quad} A bound RDF quad or undefined.\n */\n public static bindQuad(bindings: Bindings, pattern: RDF.BaseQuad): RDF.Quad | undefined {\n try {\n return mapTermsNested( pattern, (term) => {\n const boundTerm = BindingsToQuadsIterator.bindTerm(bindings, term);\n if (!boundTerm) {\n throw new Error('Unbound term');\n }\n return boundTerm;\n });\n } catch {\n // Do nothing\n }\n }\n\n /**\n * Convert a blank node to a unique blank node in the given context.\n * If the given term is not a blank node, the term itself will be returned.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.Term} term The term that should be localized.\n * @return {RDF.Term} A term.\n */\n public static localizeBlankNode(blankNodeCounter: number, term: RDF.Term): RDF.Term {\n if (term.termType === 'BlankNode') {\n return DF.blankNode(`${term.value}${blankNodeCounter}`);\n }\n return term;\n }\n\n /**\n * Convert the given quad to a quad that only contains unique blank nodes.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.BaseQuad} pattern The pattern that should be localized.\n * @return {RDF.BaseQuad} A quad.\n */\n public static localizeQuad(blankNodeCounter: number, pattern: RDF.BaseQuad): RDF.BaseQuad {\n return mapTermsNested(pattern, term => BindingsToQuadsIterator.localizeBlankNode(blankNodeCounter, term));\n }\n\n /**\n * Convert the given template to a list of quads based on the given bindings.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad[]} template A list of quad patterns.\n * @param blankNodeCounter A counter value for the blank node.\n * @return {RDF.Quad[]} A list of quads.\n */\n public bindTemplate(bindings: Bindings, template: RDF.BaseQuad[], blankNodeCounter: number): RDF.Quad[] {\n const quads: RDF.BaseQuad[] = template\n // Make sure the multiple instantiations of the template contain different blank nodes, as required by SPARQL 1.1.\n .map(BindingsToQuadsIterator.localizeQuad.bind(null, blankNodeCounter))\n // Bind variables to bound terms\n .map(x => BindingsToQuadsIterator.bindQuad.bind(null, bindings)(x))\n // Remove quads that contained unbound terms, i.e., variables.\n .filter(Boolean);\n return quads;\n }\n\n public override _createTransformer(bindings: Bindings): AsyncIterator {\n return new ArrayIterator(this.bindTemplate(\n bindings,\n this.template,\n this.blankNodeCounter++,\n ), { autoStart: false });\n }\n}\n","import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { MediatorHashQuads } from '@comunica/bus-hash-quads';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Distinct Hash Query Operation Actor.\n */\nexport class ActorQueryOperationDistinctHash extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly mediatorHashQuads: MediatorHashQuads;\n\n public constructor(args: IActorQueryOperationDistinctHashArgs) {\n super(args, 'distinct');\n }\n\n public async testOperation(_operation: Algebra.Distinct, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Distinct, context: IActionContext): Promise {\n const output = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n\n // TODO: In next/major, remove undefined check when mediatorHashQuads is made required\n if (output.type === 'quads' && this.mediatorHashQuads !== undefined) {\n const outputQuads: IQueryOperationResultQuads = ActorQueryOperation.getSafeQuads(\n output,\n );\n\n const quadStream: AsyncIterator = outputQuads.quadStream.filter(await this.newHashFilterQuads(context));\n return {\n type: 'quads',\n quadStream,\n metadata: outputQuads.metadata,\n };\n }\n\n const outputBindings: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n output,\n );\n\n const bindingsStream: BindingsStream = outputBindings.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: outputBindings.metadata,\n };\n }\n\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n public async newHashFilter(context: IActionContext): Promise<(bindings: Bindings) => boolean> {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes: Record = {};\n return (bindings: Bindings) => {\n const hash: string = hashFunction(bindings);\n\n return !(hash in hashes) && (hashes[hash] = true);\n };\n }\n\n /**\n * Create a new distinct filter function to hash quads.\n * This will maintain an internal hash datastructure so that every quad object only returns true once.\n * @param context The action context.\n * @return {(quad: RDF.Quad) => boolean} A distinct filter for quads.\n */\n public async newHashFilterQuads(context: IActionContext): Promise<(quad: RDF.Quad) => boolean> {\n // TODO: In next/major, this check can be removed when mediatorHashQuads is made required\n if (this.mediatorHashQuads === undefined) {\n return _quad => true;\n }\n const { hashFunction } = await this.mediatorHashQuads.mediate({ allowHashCollisions: true, context });\n const hashes: Record = {};\n return (quad: RDF.Quad) => {\n const hash: string = hashFunction(quad);\n\n return !(hash in hashes) && (hashes[hash] = true);\n };\n }\n}\n\nexport interface IActorQueryOperationDistinctHashArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n // TODO: In next/major, this field should be made required in the next major update\n mediatorHashQuads?: MediatorHashQuads;\n}\n","import { BindingsFactory, bindingsToString } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { ExpressionError } from '@comunica/expression-evaluator';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult, IQueryOperationResultBindings } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Extend Query Operation Actor.\n *\n * See https://www.w3.org/TR/sparql11-query/#sparqlAlgebra;\n */\nexport class ActorQueryOperationExtend extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationExtendArgs) {\n super(args, 'extend');\n }\n\n public async testOperation(operation: Algebra.Extend, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Will throw error for unsupported opperations\n const _ = Boolean(new AsyncEvaluator(\n operation.expression,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n ));\n return true;\n }\n\n public async runOperation(operation: Algebra.Extend, context: IActionContext):\n Promise {\n const { expression, input, variable } = operation;\n\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: input, context }),\n );\n\n // Throw if the variable has already been bound\n if ((await output.metadata()).variables.some(innerVariable => innerVariable.equals(variable))) {\n throw new Error(`Illegal binding to variable '${variable.value}' that has already been bound`);\n }\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(expression, config);\n\n // Transform the stream by extending each Bindings with the expression result\n const transform = async(bindings: Bindings, next: any, push: (pusbBindings: Bindings) => void): Promise => {\n try {\n const result = await evaluator.evaluate(bindings);\n // Extend operation is undefined when the key already exists\n // We just override it here.\n const extended = bindings.set(variable, result);\n push(extended);\n } catch (error: unknown) {\n if (isExpressionError( error)) {\n // Errors silently don't actually extend according to the spec\n push(bindings);\n // But let's warn anyway\n this.logWarn(context, `Expression error for extend operation (${( error).message})` +\n `with bindings '${bindingsToString(bindings)}'`);\n } else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n\n // eslint-disable-next-line ts/no-misused-promises\n const bindingsStream = output.bindingsStream.transform({ autoStart: false, transform });\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const outputMetadata = await output.metadata();\n return { ...outputMetadata, variables: [ ...outputMetadata.variables, variable ]};\n },\n };\n }\n}\n\nexport interface IActorQueryOperationExtendArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory, bindingsToString } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Filter Sparqlee Query Operation Actor.\n */\nexport class ActorQueryOperationFilter extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationFilterSparqleeArgs) {\n super(args, 'filter');\n }\n\n public async testOperation(operation: Algebra.Filter, context: IActionContext): Promise {\n // Will throw error for unsupported operators\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const _ = new AsyncEvaluator(operation.expression, config);\n return true;\n }\n\n public async runOperation(operation: Algebra.Filter, context: IActionContext):\n Promise {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(operation.expression, config);\n\n const transform = async(item: Bindings, next: any, push: (bindings: Bindings) => void): Promise => {\n try {\n const result = await evaluator.evaluateAsEBV(item);\n if (result) {\n push(item);\n }\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n //\n // > Specifically, FILTERs eliminate any solutions that,\n // > when substituted into the expression, either result in\n // > an effective boolean value of false or produce an error.\n // > ...\n // > These errors have no effect outside of FILTER evaluation.\n // https://www.w3.org/TR/sparql11-query/#expressions\n if (isExpressionError( error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings: bindingsToString(item) }));\n } else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n\n // eslint-disable-next-line ts/no-misused-promises\n const bindingsStream = output.bindingsStream.transform({ transform, autoStart: false });\n return { type: 'bindings', bindingsStream, metadata: output.metadata };\n }\n}\n\nexport interface IActorQueryOperationFilterSparqleeArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica From Query Operation Actor.\n */\nexport class ActorQueryOperationFromQuad extends ActorQueryOperationTypedMediated {\n private static readonly FACTORY: Factory = new Factory();\n private static readonly ALGEBRA_TYPES: string[] = Object.keys(Algebra.types).map(key => ( Algebra.types)[key]);\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'from');\n }\n\n /**\n * Create a deep copy of the given operation.\n * @param {Operation} operation An operation.\n * @param {(subOperation: Operation) => Operation} recursiveCb A callback for recursive operation calls.\n * @return {Operation} The copied operation.\n */\n public static copyOperation(\n operation: Algebra.Operation,\n recursiveCb: (subOperation: Algebra.Operation) => Algebra.Operation,\n ): Algebra.Operation {\n const copiedOperation: Algebra.Operation = {};\n for (const key of Object.keys(operation)) {\n if (Array.isArray(operation[key]) && key !== 'template') {\n // We exclude the 'template' entry, as we don't want to modify the template value of construct operations\n if (key === 'variables') {\n copiedOperation[key] = operation[key];\n } else {\n copiedOperation[key] = operation[key].map(recursiveCb);\n }\n } else if (ActorQueryOperationFromQuad.ALGEBRA_TYPES.includes(operation[key].type)) {\n copiedOperation[key] = recursiveCb(operation[key]);\n } else {\n copiedOperation[key] = operation[key];\n }\n }\n return copiedOperation;\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as default graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} defaultGraphs Graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationDefaultGraph(operation: Algebra.Operation, defaultGraphs: RDF.Term[]): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n if (operation.type === 'bgp') {\n return ActorQueryOperationFromQuad.joinOperations(operation.patterns.map((pattern: Algebra.Pattern) => {\n if (pattern.graph.termType !== 'DefaultGraph') {\n return ActorQueryOperationFromQuad.FACTORY.createBgp([ pattern ]);\n }\n const bgps = defaultGraphs.map((graph: RDF.Term) =>\n ActorQueryOperationFromQuad.FACTORY.createBgp([ Object.assign(\n ActorQueryOperationFromQuad.FACTORY\n .createPattern(pattern.subject, pattern.predicate, pattern.object, graph),\n { metadata: pattern.metadata },\n ) ]));\n return ActorQueryOperationFromQuad.unionOperations(bgps);\n }));\n }\n if (operation.graph.termType !== 'DefaultGraph') {\n return operation;\n }\n const paths = defaultGraphs.map(\n (graph: RDF.Term) => {\n if (operation.type === 'path') {\n return ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n }\n return Object.assign(ActorQueryOperationFromQuad.FACTORY\n .createPattern(\n operation.subject,\n operation.predicate,\n operation.object,\n graph,\n ), { metadata: operation.metadata });\n },\n );\n return ActorQueryOperationFromQuad.unionOperations(paths);\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this.applyOperationDefaultGraph(subOperation, defaultGraphs),\n );\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as named graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} namedGraphs Graph terms.\n * @param {RDF.Term[]} defaultGraphs Default graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationNamedGraph(\n operation: Algebra.Operation,\n namedGraphs: RDF.NamedNode[],\n defaultGraphs: RDF.Term[],\n ): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n const patternGraph: RDF.Term = operation.type === 'bgp' ? operation.patterns[0].graph : operation.graph;\n if (patternGraph.termType === 'DefaultGraph') {\n // SPARQL spec (8.2) describes that when FROM NAMED's are used without a FROM, the default graph must be empty.\n // The FROMs are transformed before this step to a named node, so this will not apply to this case anymore.\n return { type: Algebra.types.BGP, patterns: []};\n }\n if (patternGraph.termType === 'Variable') {\n if (namedGraphs.length === 1) {\n const graph: RDF.NamedNode = namedGraphs[0];\n // If the pattern graph is a variable, replace the graph and bind the variable using VALUES\n const bindings: Record = {};\n bindings[`?${patternGraph.value}`] = graph;\n const values: Algebra.Values = ActorQueryOperationFromQuad.FACTORY\n .createValues([ patternGraph ], [ bindings ]);\n\n let pattern: Algebra.Operation;\n if (operation.type === 'bgp') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createBgp(operation.patterns.map((pat: Algebra.Pattern) => ActorQueryOperationFromQuad.FACTORY\n .createPattern(pat.subject, pat.predicate, pat.object, graph)));\n } else if (operation.type === 'path') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n } else {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPattern(operation.subject, operation.predicate, operation.object, graph);\n }\n\n return ActorQueryOperationFromQuad.FACTORY.createJoin([ values, pattern ]);\n }\n // If the pattern graph is a variable, take the union of the pattern applied to each available named graph\n return ActorQueryOperationFromQuad.unionOperations(namedGraphs.map(\n (graph: RDF.NamedNode) => ActorQueryOperationFromQuad.applyOperationNamedGraph(\n operation,\n [ graph ],\n defaultGraphs,\n ),\n ));\n }\n // The pattern's graph is defined (including the default graphs)\n const isNamedGraphAvailable: boolean = [ ...namedGraphs, ...defaultGraphs ].some(\n (namedGraph: RDF.Term) => namedGraph.equals(patternGraph),\n );\n if (isNamedGraphAvailable) {\n // Return the pattern as-is if the pattern's graph was selected in a FROM NAMED\n return operation;\n }\n // No-op if the pattern's graph was not selected in a FROM NAMED.\n return { type: Algebra.types.BGP, patterns: []};\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this.applyOperationNamedGraph(subOperation, namedGraphs, defaultGraphs),\n );\n }\n\n /**\n * Transform the given array of operations into a join operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Join} A join operation.\n */\n public static joinOperations(operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createJoin(operations);\n }\n throw new Error('A join can only be applied on at least one operation');\n }\n\n /**\n * Transform the given array of operations into a union operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Union} A union operation.\n */\n public static unionOperations(operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createUnion(operations);\n }\n throw new Error('A union can only be applied on at least one operation');\n }\n\n /**\n * Transform an operation based on the default and named graphs in the pattern.\n *\n * FROM sets the default graph.\n * If multiple are available, take the union of the operation for all of them at quad-pattern level.\n *\n * FROM NAMED indicates which named graphs are available.\n * This will rewrite the query so that only triples from the given named graphs can be selected.\n *\n * @param {From} pattern A from operation.\n * @return {Operation} The transformed operation.\n */\n public static createOperation(pattern: Algebra.From): Algebra.Operation {\n let operation: Algebra.Operation = pattern.input;\n if (pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationDefaultGraph(operation, pattern.default);\n }\n if (pattern.named.length > 0 || pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationNamedGraph(operation, pattern.named, pattern.default);\n }\n return operation;\n }\n\n public async testOperation(_operation: Algebra.From, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.From,\n context: IActionContext,\n ): Promise {\n const operation: Algebra.Operation = ActorQueryOperationFromQuad.createOperation(operationOriginal);\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator } from '@comunica/expression-evaluator';\nimport type { BindingsStream, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { ArrayIterator, TransformIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { GroupsState } from './GroupsState';\n\n/**\n * A comunica Group Query Operation Actor.\n */\nexport class ActorQueryOperationGroup extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationGroupArgs) {\n super(args, 'group');\n }\n\n public async testOperation(operation: Algebra.Group, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n for (const aggregate of operation.aggregates) {\n // Will throw for unsupported expressions\n const _ = new AsyncEvaluator(\n aggregate.expression,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n );\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.Group, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Create a hash function\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n\n // Get result stream for the input query\n const { input, aggregates } = operation;\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n\n // The variables in scope are the variables on which we group, i.e. pattern.variables.\n // For 'GROUP BY ?x, ?z', this is [?x, ?z], for 'GROUP by expr(?x) as ?e' this is [?e].\n // But also in scope are the variables defined by the aggregations, since GROUP has to handle this.\n const variables = [\n ...operation.variables,\n ...aggregates.map(agg => agg.variable),\n ];\n\n const sparqleeConfig = ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n );\n\n // Wrap a new promise inside an iterator that completes when the stream has ended or when an error occurs\n const bindingsStream = new TransformIterator(() => new Promise((resolve, reject) => {\n const groups = new GroupsState(hashFunction, operation, sparqleeConfig, bindingsFactory);\n\n // Phase 2: Collect aggregator results\n // We can only return when the binding stream ends, when that happens\n // we return the identified groups. Which are nothing more than Bindings\n // of the grouping variables merged with the aggregate variables\n // eslint-disable-next-line ts/no-misused-promises\n output.bindingsStream.on('end', async() => {\n try {\n const bindingsStreamInner = new ArrayIterator(await groups.collectResults(), { autoStart: false });\n resolve(bindingsStreamInner);\n } catch (error: unknown) {\n reject(error);\n }\n });\n\n // Make sure to propagate any errors in the binding stream\n output.bindingsStream.on('error', reject);\n\n // Phase 1: Consume the stream, identify the groups and populate the aggregators.\n // We need to bind this after the 'error' and 'end' listeners to avoid the\n // stream having ended before those listeners are bound.\n output.bindingsStream.on('data', (bindings) => {\n groups.consumeBindings(bindings).catch(reject);\n });\n }), { autoStart: false });\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await output.metadata(), variables }),\n };\n }\n}\n\nexport interface IActorQueryOperationGroupArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { HashFunction } from '@comunica/bus-hash-bindings';\nimport type { IAsyncEvaluatorContext } from '@comunica/expression-evaluator';\nimport { AsyncAggregateEvaluator } from '@comunica/expression-evaluator';\nimport type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A simple type alias for strings that should be hashes of Bindings\n */\nexport type BindingsHash = string;\n\n/**\n * A state container for a single group\n *\n * @property {Bindings} bindings - The binding entries on which we group\n */\nexport interface IGroup {\n bindings: Bindings;\n aggregators: Record;\n}\n\n/**\n * A state manager for the groups constructed by consuming the bindings-stream.\n */\nexport class GroupsState {\n private readonly groups: Map;\n // We need to the promises of a group so we can await the initialisation/ creation of them.\n // Without this we could have duplicate work/ override precious work.\n private readonly groupsInitializer: Map>;\n private readonly groupVariables: Set;\n private readonly distinctHashes: null | Map>;\n private waitCounter: number;\n // Function that resolves the promise given by collectResults\n private waitResolver: (bindings: Bindings[]) => void;\n private resultHasBeenCalled: boolean;\n\n public constructor(\n private readonly hashFunction: HashFunction,\n private readonly pattern: Algebra.Group,\n private readonly sparqleeConfig: IAsyncEvaluatorContext,\n private readonly bindingsFactory: BindingsFactory,\n ) {\n this.groups = new Map();\n this.groupsInitializer = new Map();\n this.groupVariables = new Set(this.pattern.variables.map(x => x.value));\n this.waitCounter = 1;\n this.resultHasBeenCalled = false;\n }\n\n /**\n * - Consumes a stream binding\n * - Find the corresponding group and create one if need be\n * - Feeds the binding to the group's aggregators\n *\n * @param {Bindings} bindings - The Bindings to consume\n */\n public consumeBindings(bindings: Bindings): Promise {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n // We increment the counter and decrement him when put action is performed.\n this.waitCounter++;\n\n // Select the bindings on which we group\n const grouper = bindings\n .filter((_, variable) => this.groupVariables.has(variable.value));\n const groupHash = this.hashBindings(grouper);\n\n // First member of group -> create new group\n let groupInitializer: Promise | undefined = this.groupsInitializer.get(groupHash);\n\n let res: Promise;\n if (groupInitializer) {\n const groupInitializerDefined = groupInitializer;\n res = (async() => {\n const group = await groupInitializerDefined;\n await Promise.all(this.pattern.aggregates.map(async(aggregate) => {\n // Distinct handling is done in the aggregator.\n const variable = aggregate.variable.value;\n await group.aggregators[variable].put(bindings);\n }));\n })().then(async() => {\n this.subtractWaitCounterAndCollect();\n });\n } else {\n // Initialize state for all aggregators for new group\n groupInitializer = (async() => {\n const aggregators: Record = {};\n await Promise.all(this.pattern.aggregates.map(async(aggregate) => {\n const key = aggregate.variable.value;\n aggregators[key] = new AsyncAggregateEvaluator(aggregate, this.sparqleeConfig);\n await aggregators[key].put(bindings);\n }));\n\n const group = { aggregators, bindings: grouper };\n this.groups.set(groupHash, group);\n this.subtractWaitCounterAndCollect();\n return group;\n })();\n this.groupsInitializer.set(groupHash, groupInitializer);\n res = groupInitializer;\n }\n return res;\n }\n\n private subtractWaitCounterAndCollect(): void {\n if (--this.waitCounter === 0) {\n this.handleResultCollection();\n }\n }\n\n private handleResultCollection(): void {\n // Collect groups\n let rows: Bindings[] = [ ...this.groups ].map(([ _, group ]) => {\n const { bindings: groupBindings, aggregators } = group;\n\n // Collect aggregator bindings\n // If the aggregate errorred, the result will be undefined\n let returnBindings = groupBindings;\n for (const variable in aggregators) {\n const value = aggregators[variable].result();\n if (value) {\n // Filter undefined\n returnBindings = returnBindings.set(DF.variable(variable), value);\n }\n }\n\n // Merge grouping bindings and aggregator bindings\n return returnBindings;\n });\n\n // Case: No Input\n // Some aggregators still define an output on the empty input\n // Result is a single Bindings\n if (rows.length === 0 && this.groupVariables.size === 0) {\n const single: [RDF.Variable, RDF.Term][] = [];\n for (const aggregate of this.pattern.aggregates) {\n const key = aggregate.variable;\n const value = AsyncAggregateEvaluator.emptyValue(aggregate);\n if (value !== undefined) {\n single.push([ key, value ]);\n }\n }\n rows = [ this.bindingsFactory.bindings(single) ];\n }\n this.waitResolver(rows);\n }\n\n private resultCheck(): Promise | undefined {\n if (this.resultHasBeenCalled) {\n return Promise.reject(new Error('Calling any function after calling collectResult is invalid.'));\n }\n }\n\n /**\n * Collect the result of the final state. This returns a Bindings per group,\n * and a (possibly empty) Bindings in case no Bindings have been consumed yet.\n * You can only call this method once, after calling this method,\n * calling any function on this will result in an error being thrown.\n */\n public collectResults(): Promise {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n this.resultHasBeenCalled = true;\n const res = new Promise((resolve) => {\n this.waitResolver = resolve;\n });\n this.subtractWaitCounterAndCollect();\n return res;\n }\n\n /**\n * @param {Bindings} bindings - Bindings to hash\n */\n private hashBindings(bindings: Bindings): BindingsHash {\n return this.hashFunction(bindings);\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryOperationResult, IActionContext, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join Query Operation Actor.\n */\nexport class ActorQueryOperationJoin extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationJoinArgs) {\n super(args, 'join');\n }\n\n public async testOperation(_operation: Algebra.Join, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.Join,\n context: IActionContext,\n ): Promise {\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n\n return this.mediatorJoin.mediate({ type: 'inner', entries, context });\n }\n}\n\nexport interface IActorQueryOperationJoinArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { IQueryOperationResult, Bindings, IActionContext, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica LeftJoin Query Operation Actor.\n */\nexport class ActorQueryOperationLeftJoin extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationLeftJoinArgs) {\n super(args, 'leftjoin');\n }\n\n public async testOperation(_operation: Algebra.LeftJoin, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.LeftJoin, context: IActionContext):\n Promise {\n // Delegate to join bus\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n const joined = await this.mediatorJoin.mediate({ type: 'optional', entries, context });\n\n // If the pattern contains an expression, filter the resulting stream\n if (operationOriginal.expression) {\n const rightMetadata = await entries[1].output.metadata();\n const expressionVariables = rightMetadata.variables;\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(operationOriginal.expression, config);\n const bindingsStream = joined.bindingsStream\n .transform({\n autoStart: false,\n // eslint-disable-next-line ts/no-misused-promises\n transform: async(bindings: Bindings, done: () => void, push: (item: Bindings) => void) => {\n // If variables of the right-hand entry are missing, we skip expression evaluation\n if (!expressionVariables.every(variable => bindings.has(variable.value))) {\n push(bindings);\n return done();\n }\n\n try {\n const result = await evaluator.evaluateAsEBV(bindings);\n if (result) {\n push(bindings);\n }\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // Left Join is defined in terms of Filter (https://www.w3.org/TR/sparql11-query/#defn_algJoin),\n // and Filter requires this (https://www.w3.org/TR/sparql11-query/#expressions).\n if (isExpressionError(error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings }));\n } else {\n bindingsStream.emit('error', error);\n }\n }\n done();\n },\n });\n joined.bindingsStream = bindingsStream;\n }\n\n return joined;\n }\n}\n\nexport interface IActorQueryOperationLeftJoinArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Minus Query Operation Actor.\n */\nexport class ActorQueryOperationMinus extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationMinusArgs) {\n super(args, 'minus');\n }\n\n public async testOperation(_operation: Algebra.Minus, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.Minus,\n context: IActionContext,\n ): Promise {\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n\n return this.mediatorJoin.mediate({ type: 'minus', entries, context });\n }\n}\n\nexport interface IActorQueryOperationMinusArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { SingletonIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation)\n * actor that handles SPARQL nop operations.\n */\nexport class ActorQueryOperationNop extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationNopArgs) {\n super(args, 'nop');\n }\n\n public async testOperation(_operation: Algebra.Nop, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Nop, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n return {\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n };\n }\n}\n\nexport interface IActorQueryOperationNopArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError, orderTypes } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Term } from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { SortIterator } from './SortIterator';\n\n/**\n * A comunica OrderBy Sparqlee Query Operation Actor.\n */\nexport class ActorQueryOperationOrderBy extends ActorQueryOperationTypedMediated {\n private readonly window: number;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationOrderBySparqleeArgs) {\n super(args, 'orderby');\n this.window = args.window ?? Number.POSITIVE_INFINITY;\n }\n\n public async testOperation(operation: Algebra.OrderBy, context: IActionContext): Promise {\n // Will throw error for unsupported operators\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n for (let expr of operation.expressions) {\n expr = this.extractSortExpression(expr);\n const _ = new AsyncEvaluator(\n expr,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n );\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.OrderBy, context: IActionContext):\n Promise {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n\n const options = { window: this.window };\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const sparqleeConfig = {\n ...ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n };\n let { bindingsStream } = output;\n\n // Sorting backwards since the first one is the most important therefore should be ordered last.\n for (let i = operation.expressions.length - 1; i >= 0; i--) {\n let expr = operation.expressions[i];\n const isAscending = this.isAscending(expr);\n expr = this.extractSortExpression(expr);\n // Transform the stream by annotating it with the expr result\n const evaluator = new AsyncEvaluator(expr, sparqleeConfig);\n interface IAnnotatedBinding {\n bindings: Bindings;\n result: Term | undefined;\n }\n\n const transform = async(bindings: Bindings, next: any, push: (result: IAnnotatedBinding) => void):\n Promise => {\n try {\n const result = await evaluator.evaluate(bindings);\n push({ bindings, result });\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // I can't recall where this is defined in the spec.\n if (!isExpressionError( error)) {\n bindingsStream.emit('error', error);\n }\n push({ bindings, result: undefined });\n }\n next();\n };\n // eslint-disable-next-line ts/no-misused-promises\n const transformedStream = bindingsStream.transform({ transform });\n\n // Sort the annoted stream\n const sortedStream = new SortIterator(transformedStream, (left, right) => {\n let compare = orderTypes(left.result, right.result);\n if (!isAscending) {\n compare *= -1;\n }\n return compare;\n }, options);\n\n // Remove the annotation\n bindingsStream = sortedStream.map(({ bindings }) => bindings);\n }\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n\n // Remove descending operator if necessary\n private extractSortExpression(expr: Algebra.Expression): Algebra.Expression {\n const { expressionType, operator } = expr;\n if (expressionType !== Algebra.expressionTypes.OPERATOR) {\n return expr;\n }\n return operator === 'desc' ?\n expr.args[0] :\n expr;\n }\n\n private isAscending(expr: Algebra.Expression): boolean {\n const { expressionType, operator } = expr;\n if (expressionType !== Algebra.expressionTypes.OPERATOR) {\n return true;\n }\n return operator !== 'desc';\n }\n}\n\n/**\n * The window parameter determines how many of the elements to consider when sorting.\n */\nexport interface IActorQueryOperationOrderBySparqleeArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The size of the window for the sort iterator.\n * @range {integer}\n */\n window?: number;\n}\n","import type { AsyncIterator } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\n\n// Based on https://github.com/LinkedDataFragments/Client.js/blob/master/lib/sparql/SortIterator.js\nexport class SortIterator extends TransformIterator {\n private readonly windowLength: number;\n private readonly sort: (left: T, right: T) => number;\n private readonly sorted: T[];\n\n public constructor(source: AsyncIterator, sort: (left: T, right: T) => number, options?: any) {\n super(source, options);\n\n // The `window` parameter indicates the length of the sliding window to apply sorting\n const window: number = options && options.window;\n this.windowLength = Number.isFinite(window) && window > 0 ? window : Number.POSITIVE_INFINITY;\n this.sort = sort;\n this.sorted = [];\n }\n\n // Reads the smallest item in the current sorting window\n public override _read(count: number, done: () => void): void {\n let item;\n let { length } = this.sorted;\n // Try to read items until we reach the desired window length\n while (length !== this.windowLength) {\n item = this.source!.read();\n if (item === null) {\n break;\n }\n // Insert the item in the sorted window (smallest last)\n let left = 0;\n let right = length - 1;\n let mid;\n let order;\n while (left <= right) {\n mid = Math.trunc((left + right) / 2);\n order = this.sort(item, this.sorted[mid]);\n if (order < 0) {\n left = mid + 1;\n } else if (order > 0) {\n right = mid - 1;\n } else {\n left = mid;\n right = -1;\n }\n }\n this.sorted.splice(left, 0, item);\n length++;\n }\n // Push the smallest item in the window\n if (length === this.windowLength) {\n this._push(this.sorted.pop()!);\n }\n done();\n }\n\n // Flushes remaining data after the source has ended\n public override _flush(done: () => void): void {\n let { length } = this.sorted;\n while (length--) {\n this._push(this.sorted.pop()!);\n }\n done();\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { ActorQueryOperationUnion } from '@comunica/actor-query-operation-union';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type {\n IQueryOperationResultBindings,\n IQueryOperationResult,\n IActionContext,\n MetadataBindings,\n} from '@comunica/types';\nimport { UnionIterator } from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Alt Query Operation Actor.\n */\nexport class ActorQueryOperationPathAlt extends ActorAbstractPath {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationPathAltArgs) {\n super(args, Algebra.types.ALT);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n\n const subOperations: IQueryOperationResultBindings[] = (await Promise.all(predicate.input\n .map(subPredicate => this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY\n .createPath(operation.subject, subPredicate, operation.object, operation.graph),\n }))))\n .map(ActorQueryOperation.getSafeBindings);\n\n const bindingsStream = new UnionIterator(subOperations.map(op => op.bindingsStream), { autoStart: false });\n const metadata: (() => Promise) = () =>\n Promise.all(subOperations.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\n\nexport interface IActorQueryOperationPathAltArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Inv Query Operation Actor.\n */\nexport class ActorQueryOperationPathInv extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.INV);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n const invPath = ActorAbstractPath.FACTORY\n .createPath(operation.object, predicate.path, operation.subject, operation.graph);\n return this.mediatorQueryOperation.mediate({ operation: invPath, context });\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Link Query Operation Actor.\n */\nexport class ActorQueryOperationPathLink extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.LINK);\n }\n\n public async runOperation(\n operationOriginal: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const predicate = operationOriginal.predicate;\n const operation = Object.assign(ActorAbstractPath.FACTORY.createPattern(\n operationOriginal.subject,\n predicate.iri,\n operationOriginal.object,\n operationOriginal.graph,\n ), { metadata: predicate.metadata });\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Nps Query Operation Actor.\n */\nexport class ActorQueryOperationPathNps extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.NPS);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n const blank = this.generateVariable(operation);\n\n const pattern = Object.assign(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, blank, operation.object, operation.graph), { metadata: predicate.metadata });\n const output = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: pattern, context }),\n );\n\n // Remove the generated blank nodes from the bindings\n const bindingsStream = output.bindingsStream\n .map(bindings => predicate.iris.some(iri => iri.equals(bindings.get(blank))) ? null : bindings.delete(blank));\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IQueryOperationResultBindings, Bindings, IQueryOperationResult, IActionContext } from '@comunica/types';\nimport { BufferedIterator, MultiTransformIterator, TransformIterator } from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path OneOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathOneOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathOneOrMoreArgs) {\n super(args, Algebra.types.ONE_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = operation.predicate;\n\n if (operation.subject.termType !== 'Variable' && operation.object.termType === 'Variable') {\n const objectVar = operation.object;\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n objectVar,\n operation.graph,\n context,\n false,\n bindingsFactory,\n );\n const variables = operation.graph.termType === 'Variable' ? [ objectVar, operation.graph ] : [ objectVar ];\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Get all the results of subjects with same predicate, but once, then fill in first variable for those\n const single = ActorAbstractPath.FACTORY.createDistinct(\n ActorAbstractPath.FACTORY\n .createPath(operation.subject, operation.predicate.path, operation.object, operation.graph),\n );\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n const subject = bindings.get(subjectVar);\n const object = bindings.get(objectVar);\n const graph = operation.graph.termType === 'Variable' ? bindings.get(operation.graph) : operation.graph;\n return new TransformIterator(\n async() => {\n const it = new BufferedIterator();\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject!,\n object!,\n predicate.path,\n graph!,\n context,\n termHashes,\n {},\n it,\n { count: 0 },\n bindingsFactory,\n );\n return it.transform({\n transform(item, next, push) {\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph!);\n }\n push(item);\n next();\n },\n });\n },\n { maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n const variables = operation.graph.termType === 'Variable' ?\n [ subjectVar, objectVar, operation.graph ] :\n [ subjectVar, objectVar ];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType !== 'Variable') {\n return > this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createPath(\n operation.object,\n ActorAbstractPath.FACTORY.createOneOrMorePath(\n ActorAbstractPath.FACTORY.createInv(predicate.path),\n ),\n operation.subject,\n operation.graph,\n ),\n });\n }\n // If (!sVar && !oVar)\n const variable = this.generateVariable();\n const results = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createPath(operation.subject, predicate, variable, operation.graph),\n }));\n const bindingsStream = results.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n const binding = operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await results.metadata(),\n variables: operation.graph.termType === 'Variable' ? [ operation.graph ] : [],\n }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathOneOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { Bindings, IActionContext, IQueryOperationResult, IJoinEntry } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Seq Query Operation Actor.\n */\nexport class ActorQueryOperationPathSeq extends ActorAbstractPath {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationPathSeq) {\n super(args, Algebra.types.SEQ);\n }\n\n public async runOperation(\n operationOriginal: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const predicate = operationOriginal.predicate;\n\n let joiner: RDF.Term = operationOriginal.subject;\n const generatedVariableNames: RDF.Variable[] = [];\n const entries: IJoinEntry[] = await Promise.all(predicate.input\n .map((subPredicate, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? operationOriginal.object : this.generateVariable(operationOriginal, `b${i}`);\n const operation = ActorAbstractPath.FACTORY\n .createPath(joiner, subPredicate, nextJoiner, operationOriginal.graph);\n const output = this.mediatorQueryOperation.mediate({\n context,\n operation,\n });\n\n joiner = nextJoiner;\n if (i < predicate.input.length - 1) {\n generatedVariableNames.push(nextJoiner);\n }\n\n return { output, operation };\n })\n .map(async({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(await output),\n operation,\n })));\n\n const join = ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: 'inner', entries, context }));\n // Remove the generated variable from the bindings\n const bindingsStream = join.bindingsStream.transform({\n transform(item, next, push) {\n for (const generatedVariableName of generatedVariableNames) {\n item = item.delete(generatedVariableName);\n }\n push(item);\n next();\n },\n });\n\n // Remove the generated variable from the list of variables\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const joinMetadata = await join.metadata();\n const variables = joinMetadata.variables.filter(variable => !generatedVariableNames\n .some(generatedVariableName => generatedVariableName.value === variable.value));\n return { ...joinMetadata, variables };\n },\n };\n }\n}\n\nexport interface IActorQueryOperationPathSeq extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { Bindings, IQueryOperationResult, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { MultiTransformIterator, TransformIterator, EmptyIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path ZeroOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathZeroOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathZeroOrMoreArgs) {\n super(args, Algebra.types.ZERO_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = operation.predicate;\n const sources = this.getPathSources(predicate);\n\n const sVar = operation.subject.termType === 'Variable';\n const oVar = operation.object.termType === 'Variable';\n\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Query ?s ?p ?o, to get all possible namedNodes in de the db\n const predVar = this.generateVariable(operation);\n const single = this.assignPatternSources(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, predVar, operation.object, operation.graph), sources);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n // Set with all namedNodes we have already started a predicate* search from\n const entities: Set = new Set();\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n // Get the subject and object of the triples (?s ?p ?o) and extract graph if it was a variable\n const subject: RDF.Term = bindings.get(subjectVar)!;\n const object: RDF.Term = bindings.get(objectVar)!;\n const graph: RDF.Term = operation.graph.termType === 'Variable' ?\n bindings.get(operation.graph)! :\n operation.graph;\n // Make a hash of namedNode + graph to remember from where we already started a search\n const subjectGraphHash = termToString(subject) + termToString(graph);\n const objectGraphHash = termToString(object) + termToString(graph);\n return new TransformIterator(\n async() => {\n // If no new namedNodes in this triple, return nothing\n if (entities.has(subjectGraphHash) && entities.has(objectGraphHash)) {\n return new EmptyIterator();\n }\n // Set up an iterator to which getSubjectAndObjectBindingsPredicateStar will push solutions\n const it = new BufferedIterator();\n const counter = { count: 0 };\n // If not started from this namedNode (subject in triple) in this graph, start a search\n if (!entities.has(subjectGraphHash)) {\n entities.add(subjectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject,\n subject,\n predicate.path,\n graph,\n context,\n termHashes,\n {},\n it,\n counter,\n bindingsFactory,\n );\n }\n // If not started from this namedNode (object in triple) in this graph, start a search\n if (!entities.has(objectGraphHash)) {\n entities.add(objectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n object,\n object,\n predicate.path,\n graph,\n context,\n termHashes,\n {},\n it,\n counter,\n bindingsFactory,\n );\n }\n return it.transform({\n transform(item, next, push) {\n // If the graph was a variable, fill in it's binding (we got it from the ?s ?p ?o binding)\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph);\n }\n push(item);\n next();\n },\n });\n },\n );\n },\n },\n );\n const variables: RDF.Variable[] = operation.graph.termType === 'Variable' ?\n [ subjectVar, operation.object, operation.graph ] :\n [ subjectVar, operation.object ];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (!sVar && !oVar) {\n const variable = this.generateVariable();\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n variable,\n operation.graph,\n context,\n true,\n bindingsFactory,\n );\n // Check this\n const bindingsStream = starEval.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n // Return graph binding if graph was a variable, otherwise empty binding\n const binding = operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await starEval.metadata(),\n variables: operation.graph.termType === 'Variable' ? [ operation.graph ] : [],\n }),\n };\n }\n // If (sVar || oVar)\n const subject = sVar ? operation.object : operation.subject;\n const value: RDF.Variable = (sVar ? operation.subject : operation.object);\n const pred = sVar ? ActorAbstractPath.FACTORY.createInv(predicate.path) : predicate.path;\n const starEval = await this.getObjectsPredicateStarEval(\n subject,\n pred,\n value,\n operation.graph,\n context,\n true,\n bindingsFactory,\n );\n const variables: RDF.Variable[] = operation.graph.termType === 'Variable' ? [ value, operation.graph ] : [ value ];\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathZeroOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { Bindings, IQueryOperationResult, IActionContext, BindingsStream } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport {\n SingletonIterator,\n UnionIterator,\n} from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path ZeroOrOne Query Operation Actor.\n */\nexport class ActorQueryOperationPathZeroOrOne extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathZeroOrOneArgs) {\n super(args, Algebra.types.ZERO_OR_ONE_PATH);\n }\n\n public async runOperation(\n operation: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const predicate = operation.predicate;\n const sources = this.getPathSources(predicate);\n\n const extra: Bindings[] = [];\n\n // Both subject and object non-variables\n if (operation.subject.termType !== 'Variable' &&\n operation.object.termType !== 'Variable' &&\n operation.subject.equals(operation.object)) {\n return {\n type: 'bindings',\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n };\n }\n\n // Check if we require a distinct path operation\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n context = distinct.context;\n\n // Create an operator that resolve to the \"One\" part\n const bindingsOne = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY\n .createPath(operation.subject, predicate.path, operation.object, operation.graph),\n }));\n\n // Determine the bindings stream based on the variable-ness of subject and object\n let bindingsStream: BindingsStream;\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Both subject and object are variables\n // To determine the \"Zero\" part, we\n // query ?s ?p ?o. FILTER ?s = ?0, to get all possible namedNodes in de the db\n const varP = this.generateVariable(operation);\n const bindingsZero = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createFilter(\n this.assignPatternSources(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, varP, operation.object, operation.graph), sources),\n ActorAbstractPath.FACTORY.createOperatorExpression('=', [\n ActorAbstractPath.FACTORY.createTermExpression(operation.subject),\n ActorAbstractPath.FACTORY.createTermExpression(operation.object),\n ]),\n ),\n }),\n ).bindingsStream.map(bindings => bindings.delete(varP));\n bindingsStream = new UnionIterator([\n bindingsZero,\n bindingsOne.bindingsStream,\n ], { autoStart: false });\n } else {\n // If subject or object is not a variable, then determining the \"Zero\" part is simple.\n if (operation.subject.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.subject, operation.object ]]));\n }\n if (operation.object.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.object, operation.subject ]]));\n }\n\n bindingsStream = bindingsOne.bindingsStream.prepend(extra);\n }\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: bindingsOne.metadata,\n };\n }\n}\nexport interface IActorQueryOperationPathZeroOrOneArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { BlankNodeBindingsScoped } from '@comunica/data-factory';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Project Query Operation Actor.\n */\nexport class ActorQueryOperationProject extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'project');\n }\n\n public async testOperation(_operation: Algebra.Project, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Project, context: IActionContext):\n Promise {\n // Resolve the input\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: operation.input, context }),\n );\n\n // Find all variables that should be deleted from the input stream.\n const outputMetadata = await output.metadata();\n const variables = operation.variables;\n const deleteVariables = outputMetadata.variables\n .filter(variable => !variables.some(subVariable => variable.value === subVariable.value));\n\n // Error if there are variables that are not bound in the input stream.\n const missingVariables = variables\n .filter(variable => !outputMetadata.variables.some(subVariable => variable.value === subVariable.value));\n if (missingVariables.length > 0) {\n outputMetadata.canContainUndefs = true;\n }\n\n // Make sure the project variables are the only variables that are present in the bindings.\n let bindingsStream: BindingsStream = deleteVariables.length === 0 ?\n output.bindingsStream :\n output.bindingsStream.map((bindings: Bindings) => {\n for (const deleteVariable of deleteVariables) {\n bindings = bindings.delete(deleteVariable);\n }\n return bindings;\n });\n\n // Make sure that blank nodes with same labels are not reused over different bindings, as required by SPARQL 1.1.\n // Required for the BNODE() function: https://www.w3.org/TR/sparql11-query/#func-bnode\n // When we have a scoped blank node, make sure the skolemized value is maintained.\n let blankNodeCounter = 0;\n bindingsStream = bindingsStream.map((bindings: Bindings) => {\n blankNodeCounter++;\n const scopedBlankNodesCache = new Map();\n return bindings.map((term) => {\n if (term instanceof BlankNodeBindingsScoped) {\n let scopedBlankNode = scopedBlankNodesCache.get(term.value);\n if (!scopedBlankNode) {\n scopedBlankNode = DF.blankNode(`${term.value}${blankNodeCounter}`);\n scopedBlankNodesCache.set(term.value, scopedBlankNode);\n }\n return scopedBlankNode;\n }\n return term;\n });\n });\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...outputMetadata, variables }),\n };\n }\n}\n","import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Reduced Hash Query Operation Actor.\n */\nexport class ActorQueryOperationReducedHash extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly cacheSize: number;\n\n public constructor(args: IActorQueryOperationReducedHashArgs) {\n super(args, 'reduced');\n }\n\n public async testOperation(_operation: Algebra.Reduced, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Reduced, context: IActionContext): Promise {\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: operation.input, context }),\n );\n const bindingsStream: BindingsStream = output.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n public async newHashFilter(context: IActionContext): Promise<(bindings: Bindings) => boolean> {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes = new LRUCache({ max: this.cacheSize });\n return (bindings: Bindings) => {\n const hash: string = hashFunction(bindings);\n if (hashes.has(hash)) {\n return false;\n }\n hashes.set(hash, true);\n return true;\n };\n }\n}\n\nexport interface IActorQueryOperationReducedHashArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n /**\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IActionContext, IQueryOperationResult, IQueryOperationResultBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { SingletonIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Service Query Operation Actor.\n * It unwraps the SERVICE operation and executes it on the given source.\n */\nexport class ActorQueryOperationService extends ActorQueryOperationTypedMediated {\n public readonly forceSparqlEndpoint: boolean;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n\n public constructor(args: IActorQueryOperationServiceArgs) {\n super(args, 'service');\n }\n\n public async testOperation(operation: Algebra.Service, _context: IActionContext): Promise {\n if (operation.name.termType !== 'NamedNode') {\n throw new Error(`${this.name} can only query services by IRI, while a ${operation.name.termType} was given.`);\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.Service, context: IActionContext):\n Promise {\n // Identify the SERVICE target as query source\n const { querySource } = await this.mediatorQuerySourceIdentify.mediate({\n querySourceUnidentified: {\n value: operation.name.value,\n type: this.forceSparqlEndpoint ? 'sparql' : undefined,\n },\n context,\n });\n\n // Attach the source to the operation, and execute\n let output: IQueryOperationResultBindings;\n try {\n output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n operation: ActorQueryOperation.assignOperationSource(operation.input, querySource),\n context,\n }));\n } catch (error: unknown) {\n if (operation.silent) {\n // Emit a single empty binding\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n output = {\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n type: 'bindings',\n metadata: async() => ({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n };\n this.logWarn(context, `An error occurred when executing a SERVICE clause: ${( error).message}`);\n } else {\n throw error;\n }\n }\n\n return output;\n }\n}\n\nexport interface IActorQueryOperationServiceArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * If the SERVICE target should be assumed to be a SPARQL endpoint.\n * @default {false}\n */\n forceSparqlEndpoint: boolean;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The mediator for identifying query sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n IQueryOperationResultStream,\n IMetadata,\n IActionContext,\n} from '@comunica/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Slice Query Operation Actor.\n */\nexport class ActorQueryOperationSlice extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'slice');\n }\n\n public async testOperation(_operation: Algebra.Slice, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Slice, context: IActionContext):\n Promise {\n // Add limit indicator to the context, which can be used for query planning\n // eslint-disable-next-line unicorn/explicit-length-check\n if (operation.length) {\n context = context.set(KeysQueryOperation.limitIndicator, operation.length);\n }\n\n // Resolve the input\n const output: IQueryOperationResult = await this.mediatorQueryOperation\n .mediate({ operation: operation.input, context });\n\n if (output.type === 'bindings') {\n const bindingsStream = this.sliceStream(output.bindingsStream, operation);\n return {\n type: 'bindings',\n bindingsStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n\n if (output.type === 'quads') {\n const quadStream = this.sliceStream(output.quadStream, operation);\n return {\n type: 'quads',\n quadStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n\n // In all other cases, return the result as-is.\n return output;\n }\n\n // Slice the stream based on the pattern values\n private sliceStream(stream: AsyncIterator, pattern: Algebra.Slice): AsyncIterator {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength: boolean = Boolean(pattern.length) || pattern.length === 0;\n const { start } = pattern;\n const end = hasLength ? pattern.start + pattern.length! - 1 : Number.POSITIVE_INFINITY;\n return stream.transform({ offset: start, limit: Math.max(end - start + 1, 0), autoStart: false });\n }\n\n // If we find metadata, apply slicing on the total number of items\n private sliceMetadata(\n output: IQueryOperationResultStream,\n pattern: Algebra.Slice,\n ): () => Promise> {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength: boolean = Boolean(pattern.length) || pattern.length === 0;\n return () => (<() => Promise>>output.metadata)()\n .then((subMetadata) => {\n const cardinality = { ...subMetadata.cardinality };\n if (Number.isFinite(cardinality.value)) {\n cardinality.value = Math.max(0, cardinality.value - pattern.start);\n if (hasLength) {\n cardinality.value = Math.min(cardinality.value, pattern.length!);\n }\n }\n return { ...subMetadata, cardinality };\n });\n }\n}\n","import type { IActionQueryOperation, IActorQueryOperationArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { getMetadataBindings, getMetadataQuads } from '@comunica/metadata';\nimport type {\n IPhysicalQueryPlanLogger,\n IQueryOperationResult,\n IQuerySourceWrapper,\n} from '@comunica/types';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Source Query Operation Actor.\n */\nexport class ActorQueryOperationSource extends ActorQueryOperation {\n public constructor(args: IActorQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryOperation): Promise {\n if (!ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} requires an operation with source annotation.`);\n }\n return { httpRequests: 1 };\n }\n\n public async run(action: IActionQueryOperation): Promise {\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context\n .get(KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(\n action.operation.type,\n undefined,\n action.operation,\n action.context.get(KeysInitQuery.physicalQueryPlanNode),\n this.name,\n {},\n );\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(action.operation)!;\n const mergedContext = sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context;\n\n // Check if the operation is a CONSTRUCT query\n // We recurse because it may be wrapped in other operations such as SLICE and FROM\n let construct = false;\n Util.recurseOperation(action.operation, {\n construct(): boolean {\n construct = true;\n return false;\n },\n });\n // If so, delegate to queryQuads\n if (construct) {\n const quadStream = sourceWrapper.source.queryQuads(action.operation, mergedContext);\n const metadata = getMetadataQuads(quadStream);\n return {\n type: 'quads',\n quadStream,\n metadata,\n };\n }\n\n // eslint-disable-next-line ts/switch-exhaustiveness-check\n switch (action.operation.type) {\n case Algebra.types.ASK:\n return {\n type: 'boolean',\n execute: () => sourceWrapper.source.queryBoolean(action.operation, mergedContext),\n };\n case Algebra.types.COMPOSITE_UPDATE:\n case Algebra.types.DELETE_INSERT:\n case Algebra.types.LOAD:\n case Algebra.types.CLEAR:\n case Algebra.types.CREATE:\n case Algebra.types.DROP:\n case Algebra.types.ADD:\n case Algebra.types.MOVE:\n case Algebra.types.COPY:\n return {\n type: 'void',\n execute: () => sourceWrapper.source.queryVoid(action.operation, mergedContext),\n };\n }\n\n const bindingsStream = sourceWrapper.source.queryBindings(action.operation, mergedContext);\n const metadata = getMetadataBindings(bindingsStream);\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n BindingsStream,\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataBindings,\n MetadataQuads,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { UnionIterator } from 'asynciterator';\nimport { uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Union Query Operation Actor.\n */\nexport class ActorQueryOperationUnion extends ActorQueryOperationTypedMediated {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationUnionArgs) {\n super(args, 'union');\n }\n\n /**\n * Takes the union of the given double array variables.\n * Uniqueness is guaranteed.\n * @param {string[][]} variables Double array of variables to take the union of.\n * @return {string[]} The union of the given variables.\n */\n public static unionVariables(variables: RDF.Variable[][]): RDF.Variable[] {\n return uniqTerms(variables.flat());\n }\n\n /**\n * Takes the union of the given metadata array.\n * It will ensure that the cardinality metadata value is properly calculated.\n * @param {{[p: string]: any}[]} metadatas Array of metadata.\n * @param bindings If the union of the variables field should also be taken.\n * @param context The action context\n * @param mediatorRdfMetadataAccumulate Mediator for metadata accumulation\n * @return {{[p: string]: any}} Union of the metadata.\n */\n public static async unionMetadata<\n Bindings extends boolean,\n M extends (Bindings extends true ? MetadataBindings : MetadataQuads),\n >(\n metadatas: M[],\n bindings: Bindings,\n context: IActionContext,\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate,\n // eslint-disable-next-line function-paren-newline\n ): Promise {\n let accumulatedMetadata: M = (await mediatorRdfMetadataAccumulate\n .mediate({ mode: 'initialize', context })).metadata;\n\n // Accumulate cardinality\n for (const appendingMetadata of metadatas) {\n accumulatedMetadata = {\n ...appendingMetadata,\n ...(await mediatorRdfMetadataAccumulate\n .mediate({\n mode: 'append',\n accumulatedMetadata: accumulatedMetadata,\n appendingMetadata: appendingMetadata,\n context,\n })).metadata,\n };\n }\n\n // Create new metadata state\n accumulatedMetadata.state = new MetadataValidationState();\n\n // Propagate metadata invalidations\n const invalidateListener = (): void => accumulatedMetadata.state.invalidate();\n for (const metadata of metadatas) {\n metadata.state.addInvalidateListener(invalidateListener);\n }\n\n // Union variables\n if (bindings) {\n accumulatedMetadata.variables = ActorQueryOperationUnion\n .unionVariables(metadatas.map(metadata => metadata.variables));\n }\n\n return accumulatedMetadata;\n }\n\n public async testOperation(_operation: Algebra.Union, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Union, context: IActionContext):\n Promise {\n // Determine the type over which we are taking a union\n const outputsRaw = await Promise.all(operation.input\n .map(subOperation => this.mediatorQueryOperation.mediate({ operation: subOperation, context })));\n let outputType: string | undefined;\n for (const output of outputsRaw) {\n if (outputType === undefined) {\n outputType = output.type;\n } else if (outputType !== output.type) {\n throw new Error(`Unable to union ${outputType} and ${output.type}`);\n }\n }\n\n // Handle bindings\n if (outputType === 'bindings' || operation.input.length === 0) {\n const outputs: IQueryOperationResultBindings[] = outputsRaw.map(ActorQueryOperation.getSafeBindings);\n\n const bindingsStream: BindingsStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultBindings) => output.bindingsStream,\n ), { autoStart: false });\n\n const metadata: () => Promise = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'bindings', bindingsStream, metadata };\n }\n\n // Handle quads\n if (outputType === 'quads') {\n const outputs: IQueryOperationResultQuads[] = outputsRaw.map(ActorQueryOperation.getSafeQuads);\n\n const quadStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultQuads) => output.quadStream,\n ), { autoStart: false });\n\n const metadata: () => Promise = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, false, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'quads', quadStream, metadata };\n }\n\n // Throw otherwise\n throw new Error(`Unable to union ${outputType}`);\n }\n}\n\nexport interface IActorQueryOperationUnionArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type {\n MediatorRdfUpdateQuads,\n} from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL clear operations.\n */\nexport class ActorQueryOperationClear extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationClearArgs) {\n super(args, 'clear');\n }\n\n public async testOperation(operation: Algebra.Clear, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Clear, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n let graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n } else if (typeof operation.source === 'string') {\n graphs = operation.source;\n } else {\n graphs = [ operation.source ];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: false,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationClearArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Update CompositeUpdate Query Operation Actor.\n */\nexport class ActorQueryOperationUpdateCompositeUpdate\n extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'compositeupdate');\n }\n\n public async testOperation(\n operation: Algebra.CompositeUpdate,\n context: IActionContext,\n ): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.CompositeUpdate, context: IActionContext):\n Promise {\n const execute = (): Promise => (async(): Promise => {\n // Execute update operations in sequence\n for (const operation of operationOriginal.updates) {\n const subResult = ActorQueryOperation\n .getSafeVoid(await this.mediatorQueryOperation.mediate({ operation, context }));\n await subResult.execute();\n }\n })();\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor that\n * handles SPARQL create operations.\n */\nexport class ActorQueryOperationCreate extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationCreateArgs) {\n super(args, 'create');\n }\n\n public async testOperation(operation: Algebra.Create, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Create, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n const { execute } = await this.mediatorUpdateQuads.mediate({\n createGraphs: {\n graphs: [ operation.source ],\n requireNonExistence: !operation.silent,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationCreateArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import { BindingsToQuadsIterator } from '@comunica/actor-query-operation-construct';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryOperationResult, BindingsStream, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Update DeleteInsert Query Operation Actor.\n */\nexport class ActorQueryOperationUpdateDeleteInsert extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n protected blankNodeCounter = 0;\n\n public constructor(args: IActorQueryOperationUpdateDeleteInsertArgs) {\n super(args, 'deleteinsert');\n }\n\n public async testOperation(\n operation: Algebra.DeleteInsert,\n context: IActionContext,\n ): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.DeleteInsert, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Evaluate the where clause\n const whereBindings: BindingsStream = operation.where ?\n ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation\n .mediate({ operation: operation.where, context })).bindingsStream :\n new ArrayIterator([ bindingsFactory.bindings() ], { autoStart: false });\n\n // Construct triples using the result based on the pattern.\n let quadStreamInsert: AsyncIterator | undefined;\n let quadStreamDelete: AsyncIterator | undefined;\n if (operation.insert) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamInsert = new BindingsToQuadsIterator(\n operation.insert.map(BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)),\n whereBindings.clone(),\n );\n this.blankNodeCounter++;\n }\n if (operation.delete) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamDelete = new BindingsToQuadsIterator(\n operation.delete.map(BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)),\n whereBindings.clone(),\n );\n this.blankNodeCounter++;\n }\n\n // Evaluate the required modifications\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert,\n quadStreamDelete,\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationUpdateDeleteInsertArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL drop operations.\n */\nexport class ActorQueryOperationDrop extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationDropArgs) {\n super(args, 'drop');\n }\n\n public async testOperation(operation: Algebra.Drop, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Drop, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n let graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n } else if (typeof operation.source === 'string') {\n graphs = operation.source;\n } else {\n graphs = [ operation.source ];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: true,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationDropArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL load operations.\n */\nexport class ActorQueryOperationLoad extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n\n private readonly factory: Factory;\n private readonly constructOperation: Algebra.Construct;\n\n public constructor(args: IActorQueryOperationLoadArgs) {\n super(args, 'load');\n this.factory = new Factory();\n }\n\n public async testOperation(operation: Algebra.Load, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Load, context: IActionContext):\n Promise {\n // Determine query source\n let subContext = context;\n if (operation.silent) {\n subContext = subContext.set(KeysInitQuery.lenient, true);\n }\n const { querySource } = await this.mediatorQuerySourceIdentify.mediate({\n querySourceUnidentified: { value: operation.source.value },\n context: subContext,\n });\n\n // Create CONSTRUCT query on the given source\n const output = ActorQueryOperationLoad.getSafeQuads(await this.mediatorQueryOperation.mediate({\n operation: this.factory.createConstruct(\n ActorQueryOperation.assignOperationSource(\n this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')),\n querySource,\n ),\n [ this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')) ],\n ),\n context: subContext,\n }));\n\n // Determine quad stream to insert\n let quadStream = output.quadStream;\n if (operation.destination) {\n quadStream = quadStream.map(quad => DF.quad(quad.subject, quad.predicate, quad.object, operation.destination));\n }\n\n // Insert quad stream\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert: quadStream,\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationLoadArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n /**\n * Mediator for identifying load sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTyped } from '@comunica/bus-query-operation';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQueryOperationResult,\n BindingsStream,\n Bindings,\n IActionContext,\n MetadataBindings,\n} from '@comunica/types';\nimport { ArrayIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Values Query Operation Actor.\n */\nexport class ActorQueryOperationValues extends ActorQueryOperationTyped {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationUpdateDeleteInsertArgs) {\n super(args, 'values');\n }\n\n public async testOperation(_operation: Algebra.Values, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Values, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const bindingsStream: BindingsStream = new ArrayIterator(operation.bindings\n .map(x => bindingsFactory.bindings(Object.entries(x)\n .map(([ key, value ]) => [ DF.variable(key.slice(1)), value ]))));\n const variables = operation.variables;\n const metadata = (): Promise => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: operation.bindings.length },\n canContainUndefs: operation.bindings.some(bindings => variables.some(variable => !(`?${variable.value}` in bindings))),\n variables,\n });\n return { type: 'bindings', bindingsStream, metadata };\n }\n}\n\nexport interface IActorQueryOperationUpdateDeleteInsertArgs extends\n IActorArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActionQueryParse, IActorQueryParseArgs, IActorQueryParseOutput } from '@comunica/bus-query-parse';\nimport { ActorQueryParse } from '@comunica/bus-query-parse';\nimport type { IActorTest } from '@comunica/core';\nimport { translate } from 'sparqlalgebrajs';\nimport { Parser as SparqlParser } from 'sparqljs';\n\n/**\n * A comunica Algebra SPARQL Parse Actor.\n */\nexport class ActorQueryParseSparql extends ActorQueryParse {\n public readonly prefixes: Record;\n\n public constructor(args: IActorQueryParseSparqlArgs) {\n super(args);\n this.prefixes = Object.freeze(this.prefixes);\n }\n\n public async test(action: IActionQueryParse): Promise {\n if (action.queryFormat && action.queryFormat.language !== 'sparql') {\n throw new Error('This actor can only parse SPARQL queries');\n }\n return true;\n }\n\n public async run(action: IActionQueryParse): Promise {\n const parser = new SparqlParser({ prefixes: this.prefixes, baseIRI: action.baseIRI, sparqlStar: true });\n const parsedSyntax = parser.parse(action.query);\n const baseIRI = parsedSyntax.type === 'query' ? parsedSyntax.base : undefined;\n return {\n baseIRI,\n operation: translate(parsedSyntax, {\n quads: true,\n prefixes: this.prefixes,\n blankToVariable: true,\n baseIRI: action.baseIRI,\n }),\n };\n }\n}\n\nexport interface IActorQueryParseSparqlArgs extends IActorQueryParseArgs {\n /**\n * Default prefixes to use\n * @range {json}\n * @default {{\n * \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\n * \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\",\n * \"owl\": \"http://www.w3.org/2002/07/owl#\",\n * \"xsd\": \"http://www.w3.org/2001/XMLSchema#\",\n * \"dc\": \"http://purl.org/dc/terms/\",\n * \"dcterms\": \"http://purl.org/dc/terms/\",\n * \"dc11\": \"http://purl.org/dc/elements/1.1/\",\n * \"foaf\": \"http://xmlns.com/foaf/0.1/\",\n * \"geo\": \"http://www.w3.org/2003/01/geo/wgs84_pos#\",\n * \"dbpedia\": \"http://dbpedia.org/resource/\",\n * \"dbpedia-owl\": \"http://dbpedia.org/ontology/\",\n * \"dbpprop\": \"http://dbpedia.org/property/\",\n * \"schema\": \"http://schema.org/\",\n * \"skos\": \"http://www.w3.org/2008/05/skos#\"\n * }}\n */\n prefixes?: Record;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { materializeOperation } from '@comunica/bus-query-operation';\nimport type { MediatorQueryParse } from '@comunica/bus-query-parse';\nimport type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n IQueryProcessSequentialOutput,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n QueryFormatType,\n} from '@comunica/types';\n\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Sequential Query Process Actor.\n */\nexport class ActorQueryProcessSequential extends ActorQueryProcess implements IQueryProcessSequential {\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly mediatorQueryParse: MediatorQueryParse;\n public readonly mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryProcessSequentialArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n if (action.context.get(KeysInitQuery.explain) || action.context.get(new ActionContextKey('explain'))) {\n throw new Error(`${this.name} is not able to explain queries.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Run all query processing steps in sequence\n let { operation, context } = await this.parse(action.query, action.context);\n ({ operation, context } = await this.optimize(operation, context));\n const output = await this.evaluate(operation, context);\n\n return { result: output };\n }\n\n public async parse(query: QueryFormatType, context: IActionContext): Promise {\n // Pre-processing the context\n context = (await this.mediatorContextPreprocess.mediate({ context, initialize: true })).context;\n\n // Parse query\n let operation: Algebra.Operation;\n if (typeof query === 'string') {\n // Save the original query string in the context\n context = context.set(KeysInitQuery.queryString, query);\n\n const baseIRI: string | undefined = context.get(KeysInitQuery.baseIRI);\n const queryFormat: RDF.QueryFormat = context.get(KeysInitQuery.queryFormat)!;\n const queryParseOutput = await this.mediatorQueryParse.mediate({ context, query, queryFormat, baseIRI });\n operation = queryParseOutput.operation;\n // Update the baseIRI in the context if the query modified it.\n if (queryParseOutput.baseIRI) {\n context = context.set(KeysInitQuery.baseIRI, queryParseOutput.baseIRI);\n }\n } else {\n operation = query;\n }\n\n // Apply initial bindings in context\n if (context.has(KeysInitQuery.initialBindings)) {\n const bindingsFactory = await BindingsFactory\n .create(this.mediatorMergeBindingsContext, context);\n operation = materializeOperation(operation, context.get(KeysInitQuery.initialBindings)!, bindingsFactory);\n\n // Delete the query string from the context, since our initial query might have changed\n context = context.delete(KeysInitQuery.queryString);\n }\n\n return { operation, context };\n }\n\n public async optimize(operation: Algebra.Operation, context: IActionContext): Promise {\n // Save initial query in context\n context = context.set(KeysInitQuery.query, operation);\n\n ({ operation, context } = await this.mediatorOptimizeQueryOperation.mediate({ context, operation }));\n\n // Save original query in context\n context = context.set(KeysInitQuery.query, operation);\n\n return { operation, context };\n }\n\n public async evaluate(operation: Algebra.Operation, context: IActionContext): Promise {\n const output = await this.mediatorQueryOperation.mediate({ context, operation });\n output.context = context;\n return output;\n }\n}\n\nexport interface IActorQueryProcessSequentialArgs extends IActorQueryProcessArgs {\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n /**\n * The query parse mediator\n */\n mediatorQueryParse: MediatorQueryParse;\n /**\n * The query operation optimize mediator\n */\n mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentify,\n IActorQuerySourceIdentifyOutput,\n IActorQuerySourceIdentifyArgs,\n} from '@comunica/bus-query-source-identify';\nimport { ActorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContext } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { QuerySourceRdfJs } from './QuerySourceRdfJs';\n\n/**\n * A comunica RDFJS Query Source Identify Actor.\n */\nexport class ActorQuerySourceIdentifyRdfJs extends ActorQuerySourceIdentify {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQuerySourceIdentifyRdfJsArgs) {\n super(args);\n }\n\n public async test(action: IActionQuerySourceIdentify): Promise {\n const source = action.querySourceUnidentified;\n if (source.type !== undefined && source.type !== 'rdfjs') {\n throw new Error(`${this.name} requires a single query source with rdfjs type to be present in the context.`);\n }\n if (typeof source.value === 'string' || !('match' in source.value)) {\n throw new Error(`${this.name} received an invalid rdfjs query source.`);\n }\n return true;\n }\n\n public async run(action: IActionQuerySourceIdentify): Promise {\n return {\n querySource: {\n source: new QuerySourceRdfJs(\n action.querySourceUnidentified.value,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n ),\n context: action.querySourceUnidentified.context ?? new ActionContext(),\n },\n };\n }\n}\n\nexport interface IActorQuerySourceIdentifyRdfJsArgs extends IActorQuerySourceIdentifyArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { filterMatchingQuotedQuads, quadsToBindings } from '@comunica/bus-query-source-identify';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IQuerySource, BindingsStream, IActionContext, FragmentSelectorShape } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { AsyncIterator, wrap as wrapAsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { someTermsNested, filterTermsNested, someTerms, uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { IRdfJsSourceExtended } from './IRdfJsSourceExtended';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\n\nexport class QuerySourceRdfJs implements IQuerySource {\n protected static readonly SELECTOR_SHAPE: FragmentSelectorShape = {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: AF.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')),\n },\n variablesOptional: [\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n ],\n };\n\n public referenceValue: string | RDF.Source;\n protected readonly source: IRdfJsSourceExtended;\n private readonly bindingsFactory: BindingsFactory;\n\n public constructor(source: RDF.Source, bindingsFactory: BindingsFactory) {\n this.source = source;\n this.referenceValue = source;\n this.bindingsFactory = bindingsFactory;\n }\n\n public static nullifyVariables(term: RDF.Term | undefined, quotedTripleFiltering: boolean): RDF.Term | undefined {\n return !term || term.termType === 'Variable' || (!quotedTripleFiltering &&\n term.termType === 'Quad' && someTermsNested(term, value => value.termType === 'Variable')) ?\n undefined :\n term;\n }\n\n public static hasDuplicateVariables(pattern: RDF.BaseQuad): boolean {\n const variables = filterTermsNested(pattern, term => term.termType === 'Variable');\n return variables.length > 1 && uniqTerms(variables).length < variables.length;\n }\n\n public async getSelectorShape(): Promise {\n return QuerySourceRdfJs.SELECTOR_SHAPE;\n }\n\n public queryBindings(operation: Algebra.Operation, context: IActionContext): BindingsStream {\n if (operation.type !== 'pattern') {\n throw new Error(`Attempted to pass non-pattern operation '${operation.type}' to QuerySourceRdfJs`);\n }\n\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n // Create an async iterator from the matched quad stream\n const rawStream = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n let it: AsyncIterator = rawStream instanceof AsyncIterator ?\n rawStream :\n wrapAsyncIterator(rawStream, { autoStart: false });\n\n // Perform post-match-filtering if the source does not support quoted triple filtering.\n if (!quotedTripleFiltering) {\n it = filterMatchingQuotedQuads(operation, it);\n }\n\n // Determine metadata\n if (!it.getProperty('metadata')) {\n this.setMetadata(it, operation)\n .catch(error => it.destroy(error));\n }\n\n return quadsToBindings(\n it,\n operation,\n this.bindingsFactory,\n Boolean(context.get(KeysQueryOperation.unionDefaultGraph)),\n );\n }\n\n protected async setMetadata(\n it: AsyncIterator,\n operation: Algebra.Pattern,\n ): Promise {\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n let cardinality: number;\n if (this.source.countQuads) {\n // If the source provides a dedicated method for determining cardinality, use that.\n cardinality = await this.source.countQuads(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n } else {\n // Otherwise, fallback to a sub-optimal alternative where we just call match again to count the quads.\n // WARNING: we can NOT reuse the original data stream here,\n // because we may lose data elements due to things happening async.\n let i = 0;\n cardinality = await new Promise((resolve, reject) => {\n const matches = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n matches.on('error', reject);\n matches.on('end', () => resolve(i));\n matches.on('data', () => i++);\n });\n }\n\n // If `match` would require filtering afterwards, our count will be an over-estimate.\n const wouldRequirePostFiltering = (!quotedTripleFiltering &&\n someTerms(operation, term => term.termType === 'Quad')) ||\n QuerySourceRdfJs.hasDuplicateVariables(operation);\n\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: wouldRequirePostFiltering ? 'estimate' : 'exact', value: cardinality },\n canContainUndefs: false,\n });\n }\n\n public queryQuads(\n _operation: Algebra.Operation,\n _context: IActionContext,\n ): AsyncIterator {\n throw new Error('queryQuads is not implemented in QuerySourceRdfJs');\n }\n\n public queryBoolean(\n _operation: Algebra.Ask,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryBoolean is not implemented in QuerySourceRdfJs');\n }\n\n public queryVoid(\n _operation: Algebra.Update,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryVoid is not implemented in QuerySourceRdfJs');\n }\n\n public toString(): string {\n return `QuerySourceRdfJs(${this.source.constructor.name})`;\n }\n}\n","import type { IActionRdfJoinEntriesSort, IActorRdfJoinEntriesSortOutput } from '@comunica/bus-rdf-join-entries-sort';\nimport { ActorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\n\n/**\n * An actor that sorts join entries by increasing cardinality.\n */\nexport class ActorRdfJoinEntriesSortCardinality extends ActorRdfJoinEntriesSort {\n public constructor(\n args: IActorArgs,\n ) {\n super(args);\n }\n\n public async test(_action: IActionRdfJoinEntriesSort): Promise {\n return true;\n }\n\n public async run(action: IActionRdfJoinEntriesSort): Promise {\n const entries = [ ...action.entries ]\n .sort((entryLeft, entryRight) => entryLeft.metadata.cardinality.value - entryRight.metadata.cardinality.value);\n return { entries };\n }\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { HashJoin } from 'asyncjoin';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'hash',\n limitEntries: 2,\n requiresVariableOverlap: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n let metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Ensure the left build stream is the smallest\n // TODO: in the next major version, use ActorRdfJoin.sortJoinEntries, which requires mediatorJoinEntriesSort\n if (metadatas[1].cardinality.value < metadatas[0].cardinality.value) {\n metadatas = [ metadatas[1], metadatas[0] ];\n action = { ...action, entries: [ action.entries[1], action.entries[0] ]};\n }\n\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n const join = new HashJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n entry => ActorRdfJoin.hash(entry, variables),\n ActorRdfJoin.joinBindings,\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Ensure the left build stream is the smallest\n if (metadatas[1].cardinality.value < metadatas[0].cardinality.value) {\n metadatas = [ metadatas[1], metadatas[0] ];\n }\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinArgs, IActorRdfJoinOutputInner } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin, ChunkedIterator } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type {\n IJoinEntryWithMetadata,\n IQueryOperationResultBindings,\n IQuerySourceWrapper,\n MetadataBindings,\n IActionContext,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\n\n/**\n * A comunica Inner Multi Bind Source RDF Join Actor.\n */\nexport class ActorRdfJoinMultiBindSource extends ActorRdfJoin {\n public readonly selectivityModifier: number;\n public readonly blockSize: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n\n public constructor(args: IActorRdfJoinInnerMultiBindSourceArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'bind-source',\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas(action.entries);\n const entries = await this.sortJoinEntries(entriesUnsorted, action.context);\n\n this.logDebug(\n action.context,\n 'First entry for Bind Join Source: ',\n () => ({ entry: entries[0].operation, metadata: entries[0].metadata }),\n );\n\n // Close the non-smallest streams\n for (const [ i, element ] of entries.entries()) {\n if (i !== 0) {\n element.output.bindingsStream.close();\n }\n }\n\n // Take the stream with the lowest cardinality\n const smallestStream: IQueryOperationResultBindings = entries[0].output;\n const smallestMetadata = entries[0].metadata;\n const remainingEntries = [ ...entries ];\n remainingEntries.splice(0, 1);\n\n // Get source for remaining entries (guaranteed thanks to prior check in getJoinCoefficients())\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(remainingEntries[0].operation)!;\n\n // Determine the operation to pass\n const operation = this.createOperationFromEntries(remainingEntries);\n\n // Slice the smallest stream into chunks according to the block size, so we avoid blocking too long.\n const chunkedStreams: AsyncIterator> = new ChunkedIterator(\n smallestStream.bindingsStream,\n this.blockSize,\n { autoStart: false },\n );\n\n // For each chunk, pass the query and the bindings to the source for execution\n const bindingsStream = new UnionIterator(chunkedStreams.map(chunk => sourceWrapper.source.queryBindings(\n operation,\n sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context,\n { joinBindings: { bindings: chunk, metadata: smallestMetadata }},\n )));\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: () => this.constructResultMetadata(entries, entries.map(entry => entry.metadata), action.context),\n },\n physicalPlanMetadata: {\n bindIndex: entriesUnsorted.indexOf(entries[0]),\n },\n };\n }\n\n protected async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, entries, context);\n\n // Prioritize entries with modified operations, so these are not re-executed\n entries = entries.sort((entryLeft, entryRight) => {\n if (entryLeft.operationModified && !entryRight.operationModified) {\n return -1;\n }\n return 0;\n });\n\n return entries;\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entries = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entries.map(entry => entry.metadata);\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Determine first stream and remaining ones\n const remainingEntries = [ ...entries ];\n const remainingRequestInitialTimes = [ ...requestInitialTimes ];\n const remainingRequestItemTimes = [ ...requestItemTimes ];\n remainingEntries.splice(0, 1);\n remainingRequestInitialTimes.splice(0, 1);\n remainingRequestItemTimes.splice(0, 1);\n\n // Reject binding on operations without sources\n const sources = remainingEntries.map(entry => ActorQueryOperation.getOperationSource(entry.operation));\n if (sources.some(source => !source)) {\n throw new Error(`Actor ${this.name} can not bind on remaining operations without source annotation`);\n }\n\n // Reject binding on operations with un-equal sources\n if (sources.some(source => source !== sources[0])) {\n throw new Error(`Actor ${this.name} can not bind on remaining operations with non-equal source annotation`);\n }\n\n // Reject if the source can not handle bindings\n const sourceWrapper: IQuerySourceWrapper = sources[0]!;\n const testingOperation = this.createOperationFromEntries(remainingEntries);\n const selectorShape = await sourceWrapper.source.getSelectorShape(action.context);\n if (!ActorQueryOperation\n .doesShapeAcceptOperation(selectorShape, testingOperation, { joinBindings: true })) {\n throw new Error(`Actor ${this.name} detected a source that can not handle passing down join bindings`);\n }\n\n // Determine selectivities of smallest entry with all other entries\n const selectivities = await Promise.all(remainingEntries\n .map(async entry => (await this.mediatorJoinSelectivity.mediate({\n entries: [ entries[0], entry ],\n context: action.context,\n })).selectivity * this.selectivityModifier));\n\n // Determine coefficients for remaining entries\n const cardinalityRemaining = remainingEntries\n .map((entry, i) => entry.metadata.cardinality.value * selectivities[i])\n .reduce((sum, element) => sum + element, 0);\n\n return {\n iterations: 1,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + cardinalityRemaining * requestItemTimes[1],\n };\n }\n\n public createOperationFromEntries(remainingEntries: IJoinEntryWithMetadata[]): Algebra.Operation {\n if (remainingEntries.length === 1) {\n return remainingEntries[0].operation;\n }\n return AF.createJoin(remainingEntries.map(entry => entry.operation), true);\n }\n}\n\nexport interface IActorRdfJoinInnerMultiBindSourceArgs extends IActorRdfJoinArgs {\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The maximum amount of bindings to send to the source per block.\n * @default {16}\n */\n blockSize: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, materializeOperation } from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, BindingsStream, IQueryOperationResultBindings, MetadataBindings } from '@comunica/types';\nimport { MultiTransformIterator, TransformIterator, UnionIterator } from 'asynciterator';\nimport { Factory, Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Multi-way Bind RDF Join Actor.\n */\nexport class ActorRdfJoinMultiBind extends ActorRdfJoin {\n public readonly bindOrder: BindOrder;\n public readonly selectivityModifier: number;\n public readonly minMaxCardinalityRatio: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorRdfJoinMultiBindArgs) {\n // TODO: remove this fallback in the next major update\n if (args.minMaxCardinalityRatio === undefined) {\n args.minMaxCardinalityRatio = 60;\n }\n super(args, {\n logicalType: 'inner',\n physicalName: 'bind',\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n /**\n * Create a new bindings stream that takes every binding of the base stream\n * and binds it to the remaining patterns, evaluates those patterns, and emits all their bindings.\n *\n * @param bindOrder The order in which elements should be bound.\n * @param baseStream The base stream.\n * @param operations The operations to bind with each binding of the base stream.\n * @param operationBinder A callback to retrieve the bindings stream of bound operations.\n * @param optional If the original bindings should be emitted when the resulting bindings stream is empty.\n * @return {BindingsStream}\n */\n public static createBindStream(\n bindOrder: BindOrder,\n baseStream: BindingsStream,\n operations: Algebra.Operation[],\n operationBinder: (boundOperations: Algebra.Operation[], operationBindings: Bindings)\n => Promise,\n optional: boolean,\n bindingsFactory: BindingsFactory,\n ): BindingsStream {\n // Enable auto-start on sub-bindings during depth-first binding for best performance.\n const autoStartSubBindings = bindOrder === 'depth-first';\n\n // Create bindings function\n const binder = (bindings: Bindings): BindingsStream => {\n // We don't bind the filter because filters are always handled last,\n // and we need to avoid binding filters of sub-queries, which are to be handled first. (see spec test bind10)\n const subOperations = operations\n .map(operation => materializeOperation(operation, bindings, bindingsFactory, { bindFilter: true }));\n const bindingsMerger = (subBindings: Bindings): Bindings | undefined => subBindings.merge(bindings);\n return new TransformIterator(async() => (await operationBinder(subOperations, bindings))\n .transform({ map: bindingsMerger }), { maxBufferSize: 128, autoStart: autoStartSubBindings });\n };\n\n // Create an iterator that binds elements from the base stream in different orders\n switch (bindOrder) {\n case 'depth-first':\n return new MultiTransformIterator(baseStream, { autoStart: false, multiTransform: binder, optional });\n case 'breadth-first':\n return new UnionIterator(baseStream.transform({\n map: binder,\n optional,\n }), { autoStart: false });\n default:\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`Received request for unknown bind order: ${bindOrder}`);\n }\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas(action.entries);\n const entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, entriesUnsorted, action.context);\n\n this.logDebug(\n action.context,\n 'First entry for Bind Join: ',\n () => ({ entry: entries[0].operation, metadata: entries[0].metadata }),\n );\n\n // Close the non-smallest streams\n for (const [ i, element ] of entries.entries()) {\n if (i !== 0) {\n element.output.bindingsStream.close();\n }\n }\n\n // Take the stream with the lowest cardinality\n const smallestStream: IQueryOperationResultBindings = entries[0].output;\n const remainingEntries = [ ...entries ];\n remainingEntries.splice(0, 1);\n\n // Bind the remaining patterns for each binding in the stream\n const subContext = action.context\n .set(KeysQueryOperation.joinLeftMetadata, entries[0].metadata)\n .set(KeysQueryOperation.joinRightMetadatas, remainingEntries.map(entry => entry.metadata));\n const bindingsStream: BindingsStream = ActorRdfJoinMultiBind.createBindStream(\n this.bindOrder,\n smallestStream.bindingsStream,\n remainingEntries.map(entry => entry.operation),\n async(operations: Algebra.Operation[], operationBindings: Bindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n const operation = operations.length === 1 ?\n operations[0] :\n ActorRdfJoinMultiBind.FACTORY.createJoin(operations);\n const output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate(\n { operation, context: subContext?.set(KeysQueryOperation.joinBindings, operationBindings) },\n ));\n return output.bindingsStream;\n },\n false,\n bindingsFactory,\n );\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: () => this.constructResultMetadata(entries, entries.map(entry => entry.metadata), action.context),\n },\n physicalPlanMetadata: {\n bindIndex: entriesUnsorted.indexOf(entries[0]),\n bindOperation: entries[0].operation,\n bindOperationCardinality: entries[0].metadata.cardinality,\n bindOrder: this.bindOrder,\n },\n };\n }\n\n public canBindWithOperation(operation: Algebra.Operation): boolean {\n let valid = true;\n Util.recurseOperation(operation, {\n [Algebra.types.EXTEND](): boolean {\n valid = false;\n return false;\n },\n [Algebra.types.GROUP](): boolean {\n valid = false;\n return false;\n },\n });\n\n return valid;\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entries.map(entry => entry.metadata);\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Determine first stream and remaining ones\n const remainingEntries = [ ...entries ];\n const remainingRequestInitialTimes = [ ...requestInitialTimes ];\n const remainingRequestItemTimes = [ ...requestItemTimes ];\n remainingEntries.splice(0, 1);\n remainingRequestInitialTimes.splice(0, 1);\n remainingRequestItemTimes.splice(0, 1);\n\n // Reject binding on some operation types\n if (remainingEntries\n .some(entry => !this.canBindWithOperation(entry.operation))) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n\n // Reject binding on modified operations, since using the output directly would be significantly more efficient.\n if (remainingEntries.some(entry => entry.operationModified)) {\n throw new Error(`Actor ${this.name} can not be used over remaining entries with modified operations`);\n }\n\n // Only run this actor if the smallest stream is significantly smaller than the largest stream.\n // We must use Math.max, because the last metadata is not necessarily the biggest, but it's the least preferred.\n if (metadatas[0].cardinality.value * this.minMaxCardinalityRatio >\n Math.max(...metadatas.map(metadata => metadata.cardinality.value))) {\n throw new Error(`Actor ${this.name} can only run if the smallest stream is much smaller than largest stream`);\n }\n\n // Determine selectivities of smallest entry with all other entries\n const selectivities = await Promise.all(remainingEntries\n .map(async entry => (await this.mediatorJoinSelectivity.mediate({\n entries: [ entries[0], entry ],\n context: action.context,\n })).selectivity * this.selectivityModifier));\n\n // Determine coefficients for remaining entries\n const cardinalityRemaining = remainingEntries\n .map((entry, i) => entry.metadata.cardinality.value * selectivities[i])\n .reduce((sum, element) => sum + element, 0);\n const receiveInitialCostRemaining = remainingRequestInitialTimes\n .reduce((sum, element) => sum + element, 0);\n const receiveItemCostRemaining = remainingRequestItemTimes\n .reduce((sum, element) => sum + element, 0);\n\n return {\n iterations: metadatas[0].cardinality.value * cardinalityRemaining,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * (\n requestItemTimes[0] +\n receiveInitialCostRemaining +\n cardinalityRemaining * receiveItemCostRemaining\n ),\n };\n }\n}\n\nexport interface IActorRdfJoinMultiBindArgs extends IActorRdfJoinArgs {\n /**\n * The order in which elements should be bound\n * @default {depth-first}\n */\n bindOrder: BindOrder;\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The number of times the smallest cardinality should fit in the maximum cardinality.\n * @range {double}\n * @default {60}\n */\n minMaxCardinalityRatio?: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n\nexport type BindOrder = 'depth-first' | 'breadth-first';\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator } from 'asynciterator';\n\n/**\n * A comunica Multi Empty RDF Join Actor.\n */\nexport class ActorRdfJoinMultiEmpty extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-empty',\n canHandleUndefs: true,\n });\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n if ((await ActorRdfJoin.getMetadatas(action.entries))\n .every(metadata => ActorRdfJoin.getCardinality(metadata).value > 0)) {\n throw new Error(`Actor ${this.name} can only join entries where at least one is empty`);\n }\n return super.test(action);\n }\n\n protected override async getOutput(action: IActionRdfJoin): Promise {\n // Close all entries\n for (const entry of action.entries) {\n entry.output.bindingsStream.close();\n }\n\n return {\n result: {\n bindingsStream: new ArrayIterator([], { autoStart: false }),\n metadata: async() => ({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: ActorRdfJoin.joinVariables(await ActorRdfJoin.getMetadatas(action.entries)),\n }),\n type: 'bindings',\n },\n };\n }\n\n protected async getJoinCoefficients(\n _action: IActionRdfJoin,\n _metadatas: MetadataBindings[],\n ): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n","import { bindingsToString } from '@comunica/bindings-factory';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n MediatorRdfJoin,\n IActorRdfJoinOutputInner,\n} from '@comunica/bus-rdf-join';\nimport { ChunkedIterator, ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport { KeysRdfJoin } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type {\n BindingsStream,\n IActionContext,\n IJoinEntry,\n IJoinEntryWithMetadata,\n IQuerySourceWrapper,\n MetadataBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport { Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica Inner Multi Smallest Filter Bindings RDF Join Actor.\n */\nexport class ActorRdfJoinMultiSmallestFilterBindings extends ActorRdfJoin {\n public readonly selectivityModifier: number;\n public readonly blockSize: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public static readonly FACTORY = new Factory();\n public constructor(args: IActorRdfJoinMultiSmallestFilterBindingsArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-smallest-filter-bindings',\n limitEntries: 2,\n limitEntriesMin: true,\n isLeaf: false,\n });\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise<{ first: IJoinEntryWithMetadata; second: IJoinEntryWithMetadata; remaining: IJoinEntryWithMetadata[] }> {\n let { entries: entriesSorted } = await this.mediatorJoinEntriesSort.mediate({ entries, context });\n\n // Prioritize entries with modified operations, so these are not re-executed\n entriesSorted = entriesSorted.sort((entryLeft, entryRight) => {\n if (entryLeft.operationModified && !entryRight.operationModified) {\n return -1;\n }\n return 0;\n });\n\n const first = entriesSorted.splice(0, 1)[0];\n\n // Let second entry first be prioritized for sharing as many variables with first as possible,\n // then having the fewest variables,\n // and then having the lowest cardinality.\n let second: IJoinEntryWithMetadata | undefined;\n let secondIndex = -1;\n let secondSharedVariables = 0;\n for (const [ i, entry ] of entriesSorted.entries()) {\n const sharedVariables = first.metadata.variables\n .filter(variableFirst => entry.metadata.variables\n .some(variableSecond => variableFirst.equals(variableSecond))).length;\n if (!second || (sharedVariables > secondSharedVariables ||\n (sharedVariables === secondSharedVariables &&\n (entry.metadata.variables.length < second.metadata.variables.length ||\n (entry.metadata.variables.length === second.metadata.variables.length &&\n entry.metadata.cardinality.value < second.metadata.cardinality.value))))) {\n second = entry;\n secondIndex = i;\n secondSharedVariables = sharedVariables;\n }\n }\n\n if (secondSharedVariables === 0) {\n throw new Error(`Actor ${this.name} can only join with common variables`);\n }\n\n const remaining = entriesSorted;\n remaining.splice(secondIndex, 1);\n return { first, second: second!, remaining };\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas([ ...action.entries ]);\n const { first, second: secondIn, remaining: remainingIn } = await this.sortJoinEntries(\n entriesUnsorted,\n action.context,\n );\n\n // Clone first stream, because we will use it twice\n const smallestStream1 = first.output.bindingsStream;\n first.output.bindingsStream = smallestStream1.clone();\n\n // Project the first stream on common variables, and filter out duplicates\n // The common variables array is guaranteed to be non-empty, due to the way the test of this actor is implemented.\n const commonVariables = first.metadata.variables\n .filter(variableFirst => secondIn.metadata.variables\n .some(variableSecond => variableFirst.equals(variableSecond)));\n const hashes: Record = {};\n const smallestStream1Projected: BindingsStream = smallestStream1.clone()\n .map(binding => binding.filter((value, key) =>\n commonVariables.some(commonVariable => commonVariable.equals(key))))\n .filter((binding) => {\n const hash: string = bindingsToString(binding);\n return !(hash in hashes) && (hashes[hash] = true);\n });\n\n // Slice the first stream into chunks according to the block size, so we avoid blocking too long.\n const chunkedStreams: AsyncIterator> = new ChunkedIterator(\n smallestStream1Projected,\n this.blockSize,\n { autoStart: false },\n );\n\n // Push down bindings of first stream when querying for second stream\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(secondIn.operation)!;\n const secondStream = new UnionIterator(chunkedStreams.map(chunk => sourceWrapper.source.queryBindings(\n secondIn.operation,\n sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context,\n { filterBindings: { bindings: chunk, metadata: first.metadata }},\n )));\n const second: IJoinEntry = {\n output: {\n type: 'bindings',\n bindingsStream: secondStream,\n metadata: secondIn.output.metadata,\n },\n operation: secondIn.operation,\n operationModified: true,\n };\n\n // Destroy the unused original second stream\n secondIn.output.bindingsStream.destroy();\n\n // Join the two selected streams\n const joinedEntry: IJoinEntry = {\n output: ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({\n type: action.type,\n entries: [ first, second ],\n context: action.context.set(KeysRdfJoin.lastPhysicalJoin, this.physicalName),\n })),\n operation: ActorRdfJoinMultiSmallestFilterBindings.FACTORY\n .createJoin([ first.operation, second.operation ], false),\n operationModified: true,\n };\n\n // And then join the result with the remaining streams\n const remaining: IJoinEntry[] = remainingIn;\n remaining.unshift(joinedEntry);\n\n return {\n result: await this.mediatorJoin.mediate({\n type: action.type,\n entries: remaining,\n context: action.context,\n }),\n physicalPlanMetadata: {\n firstIndex: entriesUnsorted.indexOf(first),\n secondIndex: entriesUnsorted.indexOf(secondIn),\n },\n };\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Avoid infinite recursion\n if (action.context.get(KeysRdfJoin.lastPhysicalJoin) === this.physicalName) {\n throw new Error(`Actor ${this.name} can not be called recursively`);\n }\n\n metadatas = [ ...metadatas ];\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const { first, second, remaining } = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n\n // Only pass if the second entry accepts filterBindings\n const sourceWrapper: IQuerySourceWrapper | undefined = ActorQueryOperation.getOperationSource(second.operation);\n if (!sourceWrapper) {\n throw new Error(`Actor ${this.name} can only process if entries[1] has a source`);\n }\n const testingOperation = second.operation;\n const selectorShape = await sourceWrapper.source.getSelectorShape(action.context);\n if (!ActorQueryOperation\n .doesShapeAcceptOperation(selectorShape, testingOperation, { filterBindings: true })) {\n throw new Error(`Actor ${this.name} can only process if entries[1] accept filterBindings`);\n }\n\n // Determine cost coefficients\n metadatas = [ first.metadata, second.metadata, ...remaining.map(remain => remain.metadata) ];\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n const { selectivity } = await this.mediatorJoinSelectivity.mediate({\n entries: [ first, second ],\n context: action.context,\n });\n const cardinalityRemaining = remaining\n .reduce((mul, remain) => mul * remain.metadata.cardinality.value * this.selectivityModifier, 1);\n\n return {\n iterations: selectivity * this.selectivityModifier *\n second.metadata.cardinality.value * cardinalityRemaining,\n persistedItems: first.metadata.cardinality.value,\n blockingItems: first.metadata.cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + cardinalityRemaining * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinMultiSmallestFilterBindingsArgs extends IActorRdfJoinArgs {\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The maximum amount of bindings to send to the source per block.\n * @default {64}\n */\n blockSize: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n MediatorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings, IJoinEntry, IActionContext, IJoinEntryWithMetadata } from '@comunica/types';\nimport { Factory } from 'sparqlalgebrajs';\n\n/**\n * A Multi Smallest RDF Join Actor.\n * It accepts 3 or more streams, joins the smallest two, and joins the result with the remaining streams.\n */\nexport class ActorRdfJoinMultiSmallest extends ActorRdfJoin {\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorRdfJoinMultiSmallestArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-smallest',\n limitEntries: 3,\n limitEntriesMin: true,\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n return (await this.mediatorJoinEntriesSort.mediate({ entries, context })).entries;\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entries: IJoinEntry[] = await this.sortJoinEntries(\n await ActorRdfJoin.getEntriesWithMetadatas([ ...action.entries ]),\n action.context,\n );\n const smallestEntry1 = entries[0];\n const smallestEntry2 = entries[1];\n entries.splice(0, 2);\n\n // Join the two selected streams, and then join the result with the remaining streams\n const firstEntry: IJoinEntry = {\n output: ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: action.type, entries: [ smallestEntry1, smallestEntry2 ], context: action.context })),\n operation: ActorRdfJoinMultiSmallest.FACTORY\n .createJoin([ smallestEntry1.operation, smallestEntry2.operation ], false),\n };\n entries.push(firstEntry);\n return {\n result: await this.mediatorJoin.mediate({\n type: action.type,\n entries,\n context: action.context,\n }),\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n metadatas = [ ...metadatas ];\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entriesWithMetadata = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entriesWithMetadata.map(entry => entry.metadata);\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value *\n metadatas.slice(2).reduce((acc, metadata) => acc * metadata.cardinality.value, 1),\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1] +\n metadatas.slice(2).reduce((sum, metadata, i) => sum + requestInitialTimes.slice(2)[i] +\n metadata.cardinality.value * requestItemTimes.slice(2)[i], 0),\n };\n }\n}\n\nexport interface IActorRdfJoinMultiSmallestArgs extends IActorRdfJoinArgs {\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { NestedLoopJoin } from 'asyncjoin';\n\n/**\n * A comunica NestedLoop RDF Join Actor.\n */\nexport class ActorRdfJoinNestedLoop extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const join = new NestedLoopJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n ActorRdfJoin.joinBindings,\n { autoStart: false },\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator } from 'asynciterator';\n\n/**\n * A comunica None RDF Join Actor.\n */\nexport class ActorRdfJoinNone extends ActorRdfJoin {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorRdfJoinNoneArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'none',\n limitEntries: 0,\n });\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n // Allow joining of one or zero streams\n if (action.entries.length > 0) {\n throw new Error(`Actor ${this.name} can only join zero entries`);\n }\n return await this.getJoinCoefficients();\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n return {\n result: {\n bindingsStream: new ArrayIterator([ bindingsFactory.bindings() ], { autoStart: false }),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n },\n };\n }\n\n protected async getJoinCoefficients(): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n\nexport interface IActorRdfJoinNoneArgs extends IActorRdfJoinArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\n\n/**\n * A comunica Single RDF Join Actor.\n */\nexport class ActorRdfJoinSingle extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'single',\n limitEntries: 1,\n });\n this.includeInLogs = false;\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n // Allow joining of one or zero streams\n if (action.entries.length !== 1) {\n throw new Error(`Actor ${this.name} can only join a single entry`);\n }\n return await this.getJoinCoefficients();\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n return {\n result: action.entries[0].output,\n };\n }\n\n protected async getJoinCoefficients(): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { SymmetricHashJoin } from 'asyncjoin';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinSymmetricHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinSymmetricHashArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'symmetric-hash',\n limitEntries: 2,\n requiresVariableOverlap: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n const join = new SymmetricHashJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n entry => ActorRdfJoinSymmetricHash.hash(entry, variables),\n ActorRdfJoin.joinBindings,\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinSymmetricHashArgs extends IActorRdfJoinArgs {\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { BindingsIndex } from './BindingsIndex';\n\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nexport class ActorRdfJoinMinusHashUndef extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash-undef',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index: BindingsIndex = new BindingsIndex(commonVariables);\n const bindingsStream = new ClosableTransformIterator(async() => {\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', data => index.add(data));\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n return output.bindingsStream.filter(data => !index.contains(data));\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const bufferMetadata = await output.metadata();\n const outputMetadata = await output.metadata();\n return {\n ...outputMetadata,\n canContainUndefs: bufferMetadata.canContainUndefs || outputMetadata.canContainUndefs,\n };\n },\n },\n };\n }\n // Destroy the buffer stream since it is not needed when\n // there are no common variables.\n buffer.bindingsStream.destroy();\n return {\n result: output,\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n // Slightly increase iteration cost, as operations in our BindingsIndex do not happen in constant time\n // This enables the mediator to favor other minus actors,\n // while this one will only be selected when streams contain undefs.\n iterations: (metadatas[0].cardinality.value + metadatas[1].cardinality.value) * 1.01,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\n\n/**\n * A simple efficient tree-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This will consider bindings with a variable term or a missing term\n * as a 'match-all' with other terms.\n */\nexport class BindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly data: IDataIndex = {};\n\n public constructor(keys: RDF.Variable[]) {\n this.keys = keys;\n }\n\n protected static hashTerm(term: RDF.Term | undefined): string {\n return term && term.termType !== 'Variable' ? termToString(term) : '';\n }\n\n /**\n * Add the given bindings to the index.\n * @param {Bindings} bindings A bindings.\n */\n public add(bindings: Bindings): void {\n if (this.isBindingsValid(bindings)) {\n let dataIt = this.data;\n for (const key of this.keys) {\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n let subDataIt = dataIt[dataKey];\n if (!subDataIt) {\n subDataIt = dataIt[dataKey] = {};\n }\n dataIt = subDataIt;\n }\n }\n }\n\n /**\n * Check if the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {boolean} If it exists in the index.\n */\n public contains(bindings: Bindings): boolean {\n // Always return false if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return false;\n }\n\n return this.containsRecursive(bindings, this.keys, [ this.data ]);\n }\n\n protected isBindingsValid(bindings: Bindings): boolean {\n let validKeys = false;\n for (const key of this.keys) {\n if (bindings.get(key)) {\n validKeys = true;\n break;\n }\n }\n return validKeys;\n }\n\n protected containsRecursive(bindings: Bindings, keys: RDF.Variable[], dataIndexes: IDataIndex[]): boolean {\n if (keys.length === 0) {\n return true;\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n } else {\n // Iterate over all entries\n let subDatas = Object.keys(data).map(subKey => data[subKey]);\n if (subDatas.length === 0) {\n subDatas = [{}];\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n }\n }\n return false;\n }\n}\n\nexport interface IDataIndex {\n [key: string]: IDataIndex;\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nexport class ActorRdfJoinMinusHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash',\n limitEntries: 2,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index: Record = {};\n const bindingsStream = new ClosableTransformIterator(async() => {\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (data) => {\n index[ActorRdfJoin.hashNonClashing(data, commonVariables)] = true;\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n return output.bindingsStream.filter(data => !index[ActorRdfJoin.hashNonClashing(data, commonVariables)]);\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n },\n };\n }\n // Destroy the buffer stream since it is not needed when\n // there are no common variables.\n buffer.bindingsStream.destroy();\n return {\n result: output,\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { BindOrder } from '@comunica/actor-rdf-join-inner-multi-bind';\nimport { ActorRdfJoinMultiBind } from '@comunica/actor-rdf-join-inner-multi-bind';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, BindingsStream, MetadataBindings } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Optional Bind RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalBind extends ActorRdfJoin {\n public readonly bindOrder: BindOrder;\n public readonly selectivityModifier: number;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorRdfJoinOptionalBindArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'bind',\n limitEntries: 2,\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n // Close the right stream, since we don't need that one\n action.entries[1].output.bindingsStream.close();\n\n // Bind the right pattern for each binding in the stream\n const subContext = action.context\n .set(KeysQueryOperation.joinLeftMetadata, await action.entries[0].output.metadata())\n .set(KeysQueryOperation.joinRightMetadatas, [ await action.entries[1].output.metadata() ]);\n const bindingsStream: BindingsStream = ActorRdfJoinMultiBind.createBindStream(\n this.bindOrder,\n action.entries[0].output.bindingsStream,\n [ action.entries[1].operation ],\n async(operations: Algebra.Operation[], operationBindings: Bindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n // Length of operations will always be 1\n const operation = operations[0];\n const output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate(\n { operation, context: subContext?.set(KeysQueryOperation.joinBindings, operationBindings) },\n ));\n return output.bindingsStream;\n },\n true,\n bindingsFactory,\n );\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // This actor only works well with common variables\n if (ActorRdfJoin.overlappingVariables(metadatas).length === 0) {\n throw new Error(`Actor ${this.name} only join entries with at least one common variable`);\n }\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Reject binding on some operation types\n if (action.entries[1].operation.type === Algebra.types.EXTEND ||\n action.entries[1].operation.type === Algebra.types.GROUP) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n\n // Determine selectivity of join\n const selectivity = (await this.mediatorJoinSelectivity.mediate({\n entries: action.entries,\n context: action.context,\n })).selectivity * this.selectivityModifier;\n\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value * selectivity,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * (\n requestItemTimes[0] +\n requestInitialTimes[1] +\n selectivity * metadatas[1].cardinality.value * requestItemTimes[1]\n ),\n };\n }\n}\n\nexport interface IActorRdfJoinOptionalBindArgs extends IActorRdfJoinArgs {\n /**\n * The order in which elements should be bound\n * @default {depth-first}\n */\n bindOrder: BindOrder;\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.000001}\n */\n selectivityModifier: number;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n IActorRdfJoinOutputInner,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { BindingsStream, MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator, ArrayIterator, MultiTransformIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { BindingsIndexDef } from './BindingsIndexDef';\nimport { BindingsIndexUndef } from './BindingsIndexUndef';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A comunica Optional Hash RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalHash extends ActorRdfJoin {\n private readonly blocking: boolean;\n\n public constructor(args: IActorRdfJoinOptionalHashArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: `hash-${args.canHandleUndefs ? 'undef' : 'def'}-${args.blocking ? 'blocking' : 'nonblocking'}`,\n limitEntries: 2,\n canHandleUndefs: args.canHandleUndefs,\n requiresVariableOverlap: true,\n });\n }\n\n public static constructIndex(undef: boolean, commonVariables: RDF.Variable[]): IBindingsIndex {\n return undef ?\n new BindingsIndexUndef(\n commonVariables,\n (term: RDF.Term | undefined) => term && term.termType !== 'Variable' ? termToString(term) : '',\n ) :\n new BindingsIndexDef(commonVariables, ActorRdfJoin.hashNonClashing);\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n\n let bindingsStream: BindingsStream;\n if (this.blocking) {\n // -- Blocking optional ---\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator first in a blocking manner.\n const index: IBindingsIndex = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings) ?? index.put(bindings, []);\n iterator.push(bindings);\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator => new ArrayIterator(\n (index.get(bindings).flat())\n .map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings))\n .filter(b => b !== null),\n { autoStart: false },\n ),\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n } else {\n // -- Non-blocking optional ---\n // This can be slightly slower than the blocking one above, due to the streaming overhead.\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator.\n // They are indexed with iterator values, so our main stream can already get started.\n const index: IBindingsIndex> = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n let indexActive = true;\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings) ??\n index.put(bindings, new BufferedIterator({ autoStart: false }));\n ( iterator)._push(bindings);\n });\n buffer.bindingsStream.on('end', () => {\n for (const iterator of index.values()) {\n iterator.close();\n }\n indexActive = false;\n });\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator => {\n // Find iterators from the index\n let iterators: AsyncIterator[] = index.get(bindings);\n\n // If no index entry was found, set an empty iterator.\n // If we index has been closed already, don't modify the index, but just use an empty dummy iterator.\n if (iterators.length === 0) {\n if (indexActive) {\n iterators = [ index.put(bindings, new BufferedIterator({ autoStart: false })) ];\n } else {\n iterators = [];\n }\n }\n\n // Merge all iterators in a single one,\n // and clone each one to make sure we can still use them in the future.\n const iterator = new UnionIterator(iterators.map(it => it.clone()), { autoStart: false });\n return iterator.map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings));\n },\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n }\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n let iterations = metadatas[0].cardinality.value + metadatas[1].cardinality.value;\n if (!this.canHandleUndefs) {\n // Our non-undef implementation is slightly more performant.\n iterations *= 0.8;\n }\n if (this.blocking) {\n // Our blocking implementation is slightly more performant.\n iterations *= 0.9;\n }\n return {\n iterations,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: this.blocking ? metadatas[0].cardinality.value : 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinOptionalHashArgs extends IActorRdfJoinArgs {\n /**\n * If this actor can handle undefined values.\n * If false, performance will be slightly better.\n */\n canHandleUndefs: boolean;\n /**\n * If the join will block when collecting the optional stream.\n * If true, performance will be better.\n */\n blocking: boolean;\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A simple efficient hash-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This can not handle bindings with undefined values.\n */\nexport class BindingsIndexDef implements IBindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly hashFn: (term: RDF.Bindings, keys: RDF.Variable[]) => string;\n private readonly index: Record;\n\n public constructor(keys: RDF.Variable[], hashFn: (term: RDF.Bindings, keys: RDF.Variable[]) => string) {\n this.keys = keys;\n this.hashFn = hashFn;\n this.index = {};\n }\n\n public put(bindings: RDF.Bindings, value: V): V {\n return this.index[this.hashFn(bindings, this.keys)] = value;\n }\n\n public get(bindings: RDF.Bindings): V[] {\n const v = this.getFirst(bindings);\n return v ? [ v ] : [];\n }\n\n public getFirst(bindings: RDF.Bindings): V | undefined {\n return this.index[this.hashFn(bindings, this.keys)];\n }\n\n public values(): V[] {\n return Object.values(this.index);\n }\n}\n","import type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A simple efficient tree-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This will consider bindings with a variable term or an undefined term\n * as a 'match-all' with other terms.\n */\nexport class BindingsIndexUndef implements IBindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly data: IDataIndex = {};\n private readonly hashFn: (term: RDF.Term | undefined) => string;\n\n public constructor(keys: RDF.Variable[], hashFn: (term: RDF.Term | undefined) => string) {\n this.keys = keys;\n this.hashFn = hashFn;\n }\n\n /**\n * Add the given bindings to the index.\n * @param {Bindings} bindings A bindings.\n * @param {V} value The value to put.\n */\n public put(bindings: Bindings, value: V): V {\n if (this.isBindingsValid(bindings)) {\n let dataIt: IDataIndex | V = this.data;\n for (let i = 0; i < this.keys.length; i++) {\n const key = this.keys[i];\n const dataKey = this.hashFn(bindings.get(key));\n let subDataIt: IDataIndex | V | undefined = (> dataIt)[dataKey];\n if (!subDataIt) {\n subDataIt = ((> dataIt))[dataKey] = i === this.keys.length - 1 ? value : {};\n }\n dataIt = subDataIt;\n }\n }\n return value;\n }\n\n protected isBindingsValid(bindings: Bindings): boolean {\n let validKeys = false;\n for (const key of this.keys) {\n if (bindings.has(key)) {\n validKeys = true;\n break;\n }\n }\n return validKeys;\n }\n\n /**\n * Get the value of the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {V[]} The values.\n */\n public get(bindings: Bindings): V[] {\n // Always return undefined if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return [];\n }\n\n return this.getRecursive(bindings, this.keys, [ this.data ]);\n }\n\n protected getRecursive(bindings: Bindings | undefined, keys: RDF.Variable[], dataIndexes: IDataIndex[]): V[] {\n if (keys.length === 0) {\n return dataIndexes;\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n const matchingRecursive: V[][] = [];\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = this.hashFn(bindings?.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = []> [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n matchingRecursive.push(this.getRecursive(bindings, keys, subDatas));\n } else {\n // Iterate over all entries\n const subDatas = []> Object.values(data);\n if (subDatas.length === 0) {\n continue;\n }\n matchingRecursive.push(this.getRecursive(bindings, keys, subDatas));\n }\n }\n return matchingRecursive.flat();\n }\n\n /**\n * Get the first value of the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {V | undefined} The value.\n */\n public getFirst(bindings: Bindings): V | undefined {\n // Always return undefined if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return undefined;\n }\n\n return this.getRecursiveFirst(bindings, this.keys, [ this.data ]);\n }\n\n protected getRecursiveFirst(bindings: Bindings, keys: RDF.Variable[], dataIndexes: IDataIndex[]): V | undefined {\n if (keys.length === 0) {\n return dataIndexes[0];\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = this.hashFn(bindings.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = []> [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n const ret = this.getRecursiveFirst(bindings, keys, subDatas);\n if (ret) {\n return ret;\n }\n } else {\n // Iterate over all entries\n const subDatas = []> Object.values(data);\n if (subDatas.length === 0) {\n continue;\n }\n const ret = this.getRecursiveFirst(bindings, keys, subDatas);\n if (ret) {\n return ret;\n }\n }\n }\n return undefined;\n }\n\n public values(): V[] {\n return this.keys.length === 0 ? [] : this.getRecursive(undefined, this.keys, [ this.data ]);\n }\n}\n\nexport interface IDataIndex {\n [key: string]: IDataIndex | V;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { NestedLoopJoin } from 'asyncjoin';\n\n/**\n * A comunica Optional Nested Loop RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalNestedLoop extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const join = new NestedLoopJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n ActorRdfJoin.joinBindings,\n { optional: true, autoStart: false },\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { IActionRdfJoinSelectivity, IActorRdfJoinSelectivityOutput } from '@comunica/bus-rdf-join-selectivity';\nimport { ActorRdfJoinSelectivity } from '@comunica/bus-rdf-join-selectivity';\nimport type { IActorArgs } from '@comunica/core';\nimport type { IMediatorTypeAccuracy } from '@comunica/mediatortype-accuracy';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Variable Counting RDF Join Selectivity Actor.\n * Based on the \"variable counting predicates\" heuristic from\n * \"SPARQL basic graph pattern optimization using selectivity estimation.\"\n */\nexport class ActorRdfJoinSelectivityVariableCounting extends ActorRdfJoinSelectivity {\n // Calculated as sum of unbound join type costs times 2 (best-case)\n public static MAX_PAIRWISE_COST = 41 * 2;\n\n public constructor(\n args: IActorArgs,\n ) {\n super(args);\n }\n\n public async test(_action: IActionRdfJoinSelectivity): Promise {\n return { accuracy: 0.5 };\n }\n\n public static getPatternCost(pattern: Algebra.Pattern | Algebra.Path): number {\n let cost = 1;\n if (pattern.subject.termType === 'Variable') {\n cost += 4;\n }\n if (pattern.predicate.termType === 'Variable' || pattern.type === Algebra.types.PATH) {\n cost += 1;\n }\n if (pattern.object.termType === 'Variable') {\n cost += 2;\n }\n if (pattern.graph.termType === 'Variable') {\n cost += 1;\n }\n return cost / 9;\n }\n\n public static getJoinTypes(\n operation1: Algebra.Pattern | Algebra.Path,\n operation2: Algebra.Pattern | Algebra.Path,\n ): JoinTypes[] {\n const joinTypes: JoinTypes[] = [];\n\n // Check operation1.subject\n if (operation1.subject.termType === 'Variable') {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundSG);\n }\n } else {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundSG);\n }\n }\n\n // Check operation1.predicate\n if (operation1.type === 'pattern') {\n if (operation1.predicate.termType === 'Variable') {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundPG);\n }\n } else {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundPG);\n }\n }\n }\n\n // Check operation1.object\n if (operation1.object.termType === 'Variable') {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundOG);\n }\n } else {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundOG);\n }\n }\n\n // Check operation1.graph\n if (operation1.graph.termType === 'Variable') {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundGG);\n }\n } else {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundGG);\n }\n }\n\n return joinTypes;\n }\n\n public static getOperationsPairwiseJoinCost(\n operation1: Algebra.Pattern | Algebra.Path,\n operation2: Algebra.Pattern | Algebra.Path,\n ): number {\n let cost = ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n\n for (const joinType of ActorRdfJoinSelectivityVariableCounting.getJoinTypes(operation1, operation2)) {\n switch (joinType) {\n case JoinTypes.boundSS:\n cost -= 2 * 2;\n break;\n case JoinTypes.boundSP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundSO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundSG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPP:\n // Special case: patterns with equal (bound) predicates have the highest cost\n return 1;\n case JoinTypes.boundPO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOS:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGG:\n cost -= 3 * 2;\n break;\n case JoinTypes.unboundSS:\n cost -= 2;\n break;\n case JoinTypes.unboundSP:\n cost -= 3;\n break;\n case JoinTypes.unboundSO:\n cost -= 1;\n break;\n case JoinTypes.unboundSG:\n cost -= 3;\n break;\n case JoinTypes.unboundPS:\n cost -= 3;\n break;\n case JoinTypes.unboundPP:\n cost -= 3;\n break;\n case JoinTypes.unboundPO:\n cost -= 3;\n break;\n case JoinTypes.unboundPG:\n cost -= 3;\n break;\n case JoinTypes.unboundOS:\n cost -= 1;\n break;\n case JoinTypes.unboundOP:\n cost -= 3;\n break;\n case JoinTypes.unboundOO:\n cost -= 1;\n break;\n case JoinTypes.unboundOG:\n cost -= 3;\n break;\n case JoinTypes.unboundGS:\n cost -= 3;\n break;\n case JoinTypes.unboundGP:\n cost -= 3;\n break;\n case JoinTypes.unboundGO:\n cost -= 3;\n break;\n case JoinTypes.unboundGG:\n cost -= 3;\n break;\n }\n }\n\n return cost / ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n }\n\n public static getOperationsJoinCost(operations: Algebra.Operation[]): number {\n // Determine all operations that select values (patterns and paths)\n const patterns: (Algebra.Pattern | Algebra.Path)[] = [];\n for (const operation of operations) {\n Util.recurseOperation(operation, {\n [Algebra.types.PATTERN](pattern: Algebra.Pattern): boolean {\n patterns.push(pattern);\n return false;\n },\n [Algebra.types.PATH](path: Algebra.Path): boolean {\n patterns.push(path);\n return false;\n },\n });\n }\n\n // Determine pairwise costs\n let totalCost = 0;\n let costEntries = 0;\n for (const pattern1 of patterns) {\n for (const pattern2 of patterns) {\n if (pattern1 !== pattern2) {\n totalCost += ActorRdfJoinSelectivityVariableCounting.getOperationsPairwiseJoinCost(pattern1, pattern2);\n costEntries++;\n }\n }\n }\n\n // If there are no overlapping patterns, the cost is 1\n if (costEntries === 0) {\n return 1;\n }\n\n // Combine all pairwise costs, and multiply with costs of each pattern separately\n return totalCost / costEntries * patterns\n .reduce((factor, pattern) => factor * ActorRdfJoinSelectivityVariableCounting.getPatternCost(pattern), 1);\n }\n\n public async run(action: IActionRdfJoinSelectivity): Promise {\n if (action.entries.length <= 1) {\n return { selectivity: 1 };\n }\n return {\n selectivity: ActorRdfJoinSelectivityVariableCounting\n .getOperationsJoinCost(action.entries.map(entry => entry.operation)),\n };\n }\n}\n\nexport enum JoinTypes {\n boundSS,\n boundSP,\n boundSO,\n boundSG,\n boundPS,\n boundPP,\n boundPO,\n boundPG,\n boundOS,\n boundOP,\n boundOO,\n boundOG,\n boundGS,\n boundGP,\n boundGO,\n boundGG,\n\n unboundSS,\n unboundSP,\n unboundSO,\n unboundSG,\n unboundPS,\n unboundPP,\n unboundPO,\n unboundPG,\n unboundOS,\n unboundOP,\n unboundOO,\n unboundOG,\n unboundGS,\n unboundGP,\n unboundGO,\n unboundGG,\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica CanContainUndefs RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateCanContainUndefs extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return default value on initialize\n if (action.mode === 'initialize') {\n return { metadata: { canContainUndefs: false }};\n }\n\n // Otherwise, attempt to increment existing value\n let canContainUndefs = action.accumulatedMetadata.canContainUndefs;\n if (action.appendingMetadata.canContainUndefs) {\n canContainUndefs = true;\n }\n return { metadata: { canContainUndefs }};\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\nimport type { QueryResultCardinality } from '@comunica/types';\n\n/**\n * A comunica Cardinality RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateCardinality extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return default value on initialize\n if (action.mode === 'initialize') {\n return { metadata: { cardinality: { type: 'exact', value: 0 }}};\n }\n\n // Otherwise, attempt to update existing value\n const cardinality: QueryResultCardinality = { ...action.accumulatedMetadata.cardinality };\n\n if (cardinality.dataset) {\n // If the accumulated cardinality refers to that of the full default graph (applicable for SPARQL endpoints)\n if (action.accumulatedMetadata.defaultGraph === cardinality.dataset &&\n cardinality.dataset !== action.appendingMetadata.cardinality.dataset) {\n // Use the cardinality of the appending metadata.\n return { metadata: { cardinality: action.appendingMetadata.cardinality }};\n }\n\n if (action.appendingMetadata.cardinality.dataset) {\n // If the accumulated cardinality is dataset-wide\n if (cardinality.dataset !== action.appendingMetadata.cardinality.dataset &&\n action.appendingMetadata.subsetOf === cardinality.dataset) {\n // If the appending cardinality refers to the subset of a dataset,\n // use the cardinality of the subset.\n return { metadata: { cardinality: action.appendingMetadata.cardinality }};\n }\n if (cardinality.dataset === action.appendingMetadata.cardinality.dataset) {\n // If the appending cardinality is for the same dataset,\n // keep the accumulated cardinality unchanged.\n return { metadata: { cardinality }};\n }\n // If the appending cardinality refers to another dataset,\n // remove the dataset scopes.\n delete cardinality.dataset;\n } else {\n // If the appending cardinality refers to a dataset subset,\n // keep the accumulated cardinality unchanged.\n return { metadata: { cardinality }};\n }\n }\n\n if (!action.appendingMetadata.cardinality || !Number.isFinite(action.appendingMetadata.cardinality.value)) {\n // We're already at infinite, so ignore any later metadata\n cardinality.type = 'estimate';\n cardinality.value = Number.POSITIVE_INFINITY;\n } else {\n if (action.appendingMetadata.cardinality.type === 'estimate') {\n cardinality.type = 'estimate';\n }\n cardinality.value += action.appendingMetadata.cardinality.value;\n }\n\n return { metadata: { cardinality }};\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica PageSize RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulatePageSize extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return nothing on initialize\n if (action.mode === 'initialize') {\n return { metadata: {}};\n }\n\n // Otherwise, attempt to increment existing value\n return {\n metadata: {\n ...('pageSize' in action.accumulatedMetadata) || ('pageSize' in action.appendingMetadata) ?\n {\n pageSize: (action.accumulatedMetadata.pageSize ?? 0) + (action.appendingMetadata.pageSize ?? 0),\n } :\n {},\n },\n };\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica RequestTime RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateRequestTime extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return nothing on initialize\n if (action.mode === 'initialize') {\n return { metadata: {}};\n }\n\n // Otherwise, attempt to increment existing value\n return {\n metadata: {\n ...('requestTime' in action.accumulatedMetadata) || ('requestTime' in action.appendingMetadata) ?\n {\n requestTime: (action.accumulatedMetadata.requestTime ?? 0) + (action.appendingMetadata.requestTime ?? 0),\n } :\n {},\n },\n };\n }\n}\n","import type {\n IActionRdfUpdateQuads,\n IActorRdfUpdateQuadsArgs,\n IQuadDestination,\n} from '@comunica/bus-rdf-update-quads';\nimport { ActorRdfUpdateQuadsDestination, getContextDestination } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { RdfJsQuadDestination } from './RdfJsQuadDestination';\n\n/**\n * A comunica RDFJS Store RDF Update Quads Actor.\n */\nexport class ActorRdfUpdateQuadsRdfJsStore extends ActorRdfUpdateQuadsDestination {\n public constructor(args: IActorRdfUpdateQuadsArgs) {\n super(args);\n }\n\n public override async test(action: IActionRdfUpdateQuads): Promise {\n const destination = getContextDestination(action.context);\n if (!destination || typeof destination === 'string' ||\n (!('remove' in destination) && 'value' in destination && !( destination.value).remove)) {\n throw new Error(`${this.name} received an invalid rdfjsStore.`);\n }\n return true;\n }\n\n protected async getDestination(context: IActionContext): Promise {\n const destination: any = getContextDestination(context);\n return new RdfJsQuadDestination('remove' in destination ? destination : destination.value);\n }\n}\n","import type { IQuadDestination } from '@comunica/bus-rdf-update-quads';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { promisifyEventEmitter } from 'event-emitter-promisify';\nimport { DataFactory } from 'rdf-data-factory';\nimport { stringToTerm, termToString } from 'rdf-string';\n\nconst DF = new DataFactory();\n\n/**\n * A quad destination that wraps around an {@link RDF.Store}.\n */\nexport class RdfJsQuadDestination implements IQuadDestination {\n private readonly store: RDF.Store;\n\n public constructor(store: RDF.Store) {\n this.store = store;\n }\n\n public delete(quads: AsyncIterator): Promise {\n return promisifyEventEmitter(this.store.remove(quads));\n }\n\n public insert(quads: AsyncIterator): Promise {\n return promisifyEventEmitter(this.store.import(quads));\n }\n\n public async deleteGraphs(\n graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[],\n _requireExistence: boolean,\n _dropGraphs: boolean,\n ): Promise {\n switch (graphs) {\n case 'ALL':\n /* eslint-disable no-fallthrough */\n // Remove the default graph\n await promisifyEventEmitter(this.store.deleteGraph(DF.defaultGraph()));\n // Drop through to remove all named graphs\n case 'NAMED':\n /* eslint-enable no-fallthrough */\n // Warning: this is sub-optimal!\n // Query ALL quads to determine all named graphs\n // eslint-disable-next-line no-case-declarations\n const allQuads = this.store.match();\n // eslint-disable-next-line no-case-declarations\n const namedGraphs: Record = {};\n allQuads.on('data', (quad: RDF.Quad) => {\n if (quad.graph.termType !== 'DefaultGraph') {\n namedGraphs[termToString(quad.graph)] = true;\n }\n });\n await promisifyEventEmitter(allQuads);\n\n // Delete all named graphs\n await Promise.all(Object.keys(namedGraphs)\n .map(namedGraph => promisifyEventEmitter(this.store\n .deleteGraph( stringToTerm(namedGraph)))));\n break;\n default:\n // Delete the default graph or a named graph\n for (const graph of Array.isArray(graphs) ? graphs : [ graphs ]) {\n await promisifyEventEmitter(this.store.deleteGraph(graph));\n }\n }\n }\n\n public async createGraphs(graphs: RDF.NamedNode[], requireNonExistence: boolean): Promise {\n // We don't have to create anything, since RDF/JS stores don't record empty graphs.\n\n // The only check we have to do is error on existence\n if (requireNonExistence) {\n for (const graph of graphs) {\n const eventEmitter = this.store.match(undefined, undefined, undefined, graph);\n await new Promise((resolve, reject) => {\n eventEmitter.once('data', () => {\n reject(new Error(`Unable to create graph ${graph.value} as it already exists`));\n });\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n }\n }\n}\n","import type { IBindingsContextMergeHandler } from '@comunica/bus-merge-bindings-context';\nimport { ActionContext } from '@comunica/core';\nimport type { IActionContext, IActionContextKey } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Map } from 'immutable';\nimport { bindingsToString } from './bindingsToString';\n\n/**\n * An immutable.js-based Bindings object.\n */\nexport class Bindings implements RDF.Bindings {\n public readonly type = 'bindings';\n\n private readonly dataFactory: RDF.DataFactory;\n private readonly entries: Map;\n private readonly contextHolder: IContextHolder | undefined;\n\n public constructor(dataFactory: RDF.DataFactory, entries: Map, contextHolder?: IContextHolder) {\n this.dataFactory = dataFactory;\n this.entries = entries;\n this.contextHolder = contextHolder;\n }\n\n public has(key: RDF.Variable | string): boolean {\n return this.entries.has(typeof key === 'string' ? key : key.value);\n }\n\n public get(key: RDF.Variable | string): RDF.Term | undefined {\n return this.entries.get(typeof key === 'string' ? key : key.value);\n }\n\n public set(key: RDF.Variable | string, value: RDF.Term): Bindings {\n return new Bindings(\n this.dataFactory,\n this.entries.set(typeof key === 'string' ? key : key.value, value),\n this.contextHolder,\n );\n }\n\n public delete(key: RDF.Variable | string): Bindings {\n return new Bindings(\n this.dataFactory,\n this.entries.delete(typeof key === 'string' ? key : key.value),\n this.contextHolder,\n );\n }\n\n public keys(): Iterable {\n return this.mapIterable(\n this.iteratorToIterable(this.entries.keys()),\n key => this.dataFactory.variable!(key),\n );\n }\n\n public values(): Iterable {\n return this.iteratorToIterable(this.entries.values());\n }\n\n public forEach(fn: (value: RDF.Term, key: RDF.Variable) => any): void {\n for (const [ key, value ] of this.entries.entries()) {\n fn(value, this.dataFactory.variable!(key));\n }\n }\n\n public get size(): number {\n return this.entries.size;\n }\n\n public [Symbol.iterator](): Iterator<[RDF.Variable, RDF.Term]> {\n return this.mapIterable<[string, RDF.Term], [RDF.Variable, RDF.Term]>(\n this.iteratorToIterable(> this.entries.entries()),\n ([ key, value ]) => [ this.dataFactory.variable!(key), value ],\n )[Symbol.iterator]();\n }\n\n public equals(other: RDF.Bindings | null | undefined): boolean {\n if (!other) {\n return false;\n }\n if (this === other) {\n return true;\n }\n\n // First check if size is equal\n if (this.size !== other.size) {\n return false;\n }\n\n // Then check if keys and values are equal\n for (const key of this.keys()) {\n if (!this.get(key)?.equals(other.get(key))) {\n return false;\n }\n }\n\n return true;\n }\n\n public filter(fn: (value: RDF.Term, key: RDF.Variable) => boolean): Bindings {\n return new Bindings(this.dataFactory, Map( this.entries\n .filter((value, key) => fn(value, this.dataFactory.variable!(key)))), this.contextHolder);\n }\n\n public map(fn: (value: RDF.Term, key: RDF.Variable) => RDF.Term): Bindings {\n return new Bindings(this.dataFactory, Map( this.entries\n .map((value, key) => fn(value, this.dataFactory.variable!(key)))), this.contextHolder);\n }\n\n public merge(other: RDF.Bindings | Bindings): Bindings | undefined {\n if (this.size < other.size && other instanceof Bindings) {\n return other.merge(this);\n }\n let entries = this.entries;\n\n // Check if other is of type Bindings, in that case we can access entries immediately.\n // This skips the unnecessary conversion from string to variable.\n if (other instanceof Bindings) {\n for (const [ variable, right ] of other.entries) {\n const left = this.entries.get(variable);\n if (left && !left.equals(right)) {\n return;\n }\n entries = entries.set(variable, right);\n }\n } else {\n for (const [ variable, right ] of other) {\n const left = this.entries.get(variable.value);\n if (left && !left.equals(right)) {\n return;\n }\n entries = entries.set(variable.value, right);\n }\n }\n\n return this.createBindingsWithContexts(entries, other);\n }\n\n public mergeWith(\n merger: (self: RDF.Term, other: RDF.Term, key: RDF.Variable) => RDF.Term,\n other: RDF.Bindings | Bindings,\n ): Bindings {\n if (this.size < other.size && other instanceof Bindings) {\n return other.mergeWith(merger, this);\n }\n let entries = this.entries;\n\n // For code comments see Bindings.merge function\n if (other instanceof Bindings) {\n for (const [ variable, right ] of other.entries) {\n const left = this.entries.get(variable);\n let value: RDF.Term;\n if (left && !left.equals(right)) {\n value = merger(left, right, this.dataFactory.variable!(variable));\n } else {\n value = right;\n }\n entries = entries.set(variable, value);\n }\n } else {\n for (const [ variable, right ] of other) {\n const left = this.entries.get(variable.value);\n let value: RDF.Term;\n if (left && !left.equals(right)) {\n value = merger(left, right, variable);\n } else {\n value = right;\n }\n entries = entries.set(variable.value, value);\n }\n }\n\n return this.createBindingsWithContexts(entries, other);\n }\n\n protected createBindingsWithContexts(entries: Map, other: RDF.Bindings | Bindings): Bindings {\n // If any context is empty, we skip merging contexts\n if (this.contextHolder && this.contextHolder.context) {\n let mergedContext = this.contextHolder.context;\n // Only merge if the other has a context\n if ('contextHolder' in other && other.contextHolder && other.contextHolder.context) {\n mergedContext = Bindings\n .mergeContext(this.contextHolder.contextMergeHandlers, mergedContext, other.contextHolder.context);\n }\n return new Bindings(\n this.dataFactory,\n entries,\n { contextMergeHandlers: this.contextHolder.contextMergeHandlers, context: mergedContext },\n );\n }\n\n // Otherwise, use optional context from other\n return new Bindings(this.dataFactory, entries, ( other).contextHolder);\n }\n\n private static mergeContext(\n contextMergeHandlers: Record>,\n context: IActionContext,\n otherContext: IActionContext,\n ): IActionContext {\n // All keys can contain duplicates, we prevent this by checking our built datamap for duplicates\n const allKeys = [ ...context.keys(), ...otherContext.keys() ];\n // Map we build up with merged context values\n const newContextData: Record = {};\n const handledKeys: Record = {};\n\n // Set of names of keys in other context to allow for constant time lookup\n const keysSetOtherContext = new Set(\n otherContext.keys().map(key => key.name),\n );\n const keysBothContext = context.keys().filter(\n key => keysSetOtherContext.has(key.name),\n );\n\n for (const key of allKeys) {\n // If duplicate key, we continue iterating\n if (handledKeys[key.name] === 1) {\n continue;\n }\n\n // We've processed this key and shouldn't repeat it\n handledKeys[key.name] = 1;\n\n // Determine whether this key occurs in both contexts\n const occursInBoth = keysBothContext.some(x => x.name === key.name);\n\n // If we execute this function, we already check for existence of context merge handlers\n // This if statement is first as the most likely case for non-empty contexts is that we have mergehandlers\n // and both contexts have an entry\n if (contextMergeHandlers[key.name] && occursInBoth) {\n newContextData[key.name] = contextMergeHandlers[key.name]\n .run(context.get(key), otherContext.get(key));\n continue;\n }\n // If we have no merge handler, but both contexts have entries for key, we don't add it to new context\n if (!contextMergeHandlers[key.name] && occursInBoth) {\n continue;\n }\n\n // If key doesn't occur in own context, it must be in other context\n // (if we get to this point, the key doesn't occur in both)\n if (!context.get(key)) {\n newContextData[key.name] = otherContext.get(key);\n continue;\n }\n // This could likely be else statement, but don't want to risk it\n if (!otherContext.get(key)) {\n newContextData[key.name] = context.get(key);\n }\n }\n return new ActionContext(newContextData);\n }\n\n public setContextEntry(key: IActionContextKey, value: any): Bindings {\n return this.setContextEntryRaw(key, value);\n }\n\n public setContextEntryRaw(key: IActionContextKey, value: any): Bindings {\n if (this.contextHolder && this.contextHolder.context) {\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder.contextMergeHandlers,\n context: this.contextHolder.context.set(key, value),\n },\n );\n }\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder?.contextMergeHandlers ?? {},\n context: new ActionContext().set(key, value),\n },\n );\n }\n\n public deleteContextEntry(key: IActionContextKey): Bindings {\n return this.deleteContextEntryRaw(key);\n }\n\n public deleteContextEntryRaw(key: IActionContextKey): Bindings {\n if (this.contextHolder) {\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder.contextMergeHandlers,\n context: this.contextHolder.context?.delete(key),\n },\n );\n }\n return new Bindings(this.dataFactory, this.entries);\n }\n\n public getContext(): IActionContext | undefined {\n return this.contextHolder?.context;\n }\n\n public getContextEntry(key: IActionContextKey): V | undefined {\n return this.getContext()?.get(key);\n }\n\n public toString(): string {\n return bindingsToString(this);\n }\n\n protected* mapIterable(iterable: Iterable, callback: (value: T) => U): Iterable {\n for (const x of iterable) {\n yield callback(x);\n }\n }\n\n protected iteratorToIterable(iterator: Iterator): Iterable {\n return {\n [Symbol.iterator]: () => iterator,\n };\n }\n}\n\nexport interface IContextHolder {\n contextMergeHandlers: Record>;\n context?: IActionContext;\n}\n","import type { IBindingsContextMergeHandler, MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Map } from 'immutable';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Bindings } from './Bindings';\n\n/**\n * A Bindings factory that provides Bindings backed by immutable.js.\n */\nexport class BindingsFactory implements RDF.BindingsFactory {\n private readonly dataFactory: RDF.DataFactory;\n private readonly contextMergeHandlers: Record> | undefined;\n\n public constructor(\n dataFactory: DataFactory = new DataFactory(),\n contextMergeHandlers?: Record>,\n ) {\n this.dataFactory = dataFactory;\n this.contextMergeHandlers = contextMergeHandlers;\n }\n\n public static async create(\n mediatorMergeBindingsContext: MediatorMergeBindingsContext,\n context: IActionContext,\n ): Promise {\n return new BindingsFactory(\n new DataFactory(),\n (await mediatorMergeBindingsContext.mediate({ context })).mergeHandlers,\n );\n }\n\n public bindings(entries: [RDF.Variable, RDF.Term][] = []): Bindings {\n return new Bindings(\n this.dataFactory,\n Map(entries.map(([ key, value ]) => [ key.value, value ])),\n this.contextMergeHandlers ? { contextMergeHandlers: this.contextMergeHandlers } : undefined,\n );\n }\n\n public fromBindings(bindings: RDF.Bindings): Bindings {\n return this.bindings([ ...bindings ]);\n }\n\n public fromRecord(record: Record): Bindings {\n return this.bindings(Object.entries(record).map(([ key, value ]) => [ this.dataFactory.variable!(key), value ]));\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\n\n/**\n * Stringify a bindings object.\n * @param bindings A bindings object.\n */\nexport function bindingsToString(bindings: RDF.Bindings): string {\n const raw: Record = {};\n for (const key of bindings.keys()) {\n raw[key.value] = termToString(bindings.get(key))!;\n }\n return JSON.stringify(raw, null, ' ');\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica actor for context-preprocess events.\n *\n * Actor types:\n * * Input: IAction: A context that will be processed.\n * * Test: \n * * Output: IActorContextPreprocessOutput: The resulting context.\n *\n * @see IActionContextPreprocess\n * @see IActorContextPreprocessOutput\n */\nexport abstract class ActorContextPreprocess\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n}\n\nexport interface IActionContextPreprocess extends IAction {\n /**\n * If the query processing is being initialized.\n * This is typically used for setting query-wide defaults.\n * This will be false for initializing source-specific contexts.\n */\n initialize?: boolean;\n}\n\nexport interface IActorContextPreprocessOutput extends IActorOutput {\n /**\n * A context object.\n * Can be null.\n */\n context: IActionContext;\n}\n\nexport type IActorContextPreprocessArgs = IActorArgs<\nIActionContextPreprocess,\nIActorTest,\nIActorContextPreprocessOutput\n>;\n\nexport type MediatorContextPreprocess = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediator } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { Bindings } from '@comunica/types';\n\n/**\n * A comunica actor for hash-bindings events.\n *\n * Actor types:\n * * Input: IActionHashBindings: Metadata for selecting a hash function.\n * * Test: IActorTest:\n * * Output: IActorHashBindingsOutput: The resulting hash function.\n *\n * @see IActionHashBindings\n * @see IActorHashBindingsTest\n * @see IActorHashBindingsOutput\n */\nexport abstract class ActorHashBindings\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHashBindingsArgs) {\n super(args);\n }\n}\n\nexport interface IActionHashBindings extends IAction {\n /**\n * If hash collisions are allowed.\n */\n allowHashCollisions: boolean;\n}\n\nexport interface IActorHashBindingsOutput extends IActorOutput {\n /**\n * A string-based hash of the given object.\n * @param {Bindings} bindings The bindings to hash.\n * @return {string} The object's hash.\n */\n hashFunction: HashFunction;\n\n /**\n * If hash collisions are possible with the given hash function.\n */\n hashCollisions: boolean;\n}\n\nexport type HashFunction = (bindings: Bindings) => string;\n\nexport type IActorHashBindingsArgs = IActorArgs;\n\nexport type MediatorHashBindings = Mediator<\nActor,\nIActionHashBindings,\nIActorTest,\nIActorHashBindingsOutput\n>;\n","import { Actor } from '@comunica/core';\nimport type { IAction, IActorArgs, IActorOutput, IActorTest, Mediator } from '@comunica/core';\nimport type { Quad } from 'rdf-data-factory';\n\n/**\n * A comunica actor for hash-quads events.\n *\n * Actor types:\n * * Input: IActionHashQuads: Metadata for selecting a hash function.\n * * Test: \n * * Output: IActorHashQuadsOutput: The resulting hash function.\n *\n * @see IActionHashQuads\n * @see IActorHashQuadsOutput\n */\nexport abstract class ActorHashQuads extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHashQuadsArgs) {\n super(args);\n }\n}\n\nexport interface IActionHashQuads extends IAction {\n /**\n * If hash collisions are allowed.\n */\n allowHashCollisions: boolean;\n}\n\nexport interface IActorHashQuadsOutput extends IActorOutput {\n /**\n * A string-based hash of the given object.\n * @param {Quads} quads The quads to hash.\n * @return {string} The object's hash.\n */\n hashFunction: HashFunction;\n\n /**\n * If hash collisions are possible with the given hash function.\n */\n hashCollisions: boolean;\n}\n\nexport type HashFunction = (quad: Quad) => string;\n\nexport type IActorHashQuadsArgs = IActorArgs<\nIActionHashQuads,\nIActorTest,\nIActorHashQuadsOutput\n>;\n\nexport type MediatorHashQuads = Mediator<\nActor,\nIActionHashQuads,\nIActorTest,\nIActorHashQuadsOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\n\n/**\n * A comunica actor for http-invalidate events.\n *\n * Actor types:\n * * Input: IActionHttpInvalidate: An action for invalidating the cached contents of given URL.\n * * Test: \n * * Output: IActorHttpInvalidateOutput: An empty response.\n *\n * @see IActionHttpInvalidate\n * @see IActorHttpInvalidateOutput\n */\nexport abstract class ActorHttpInvalidate extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHttpInvalidateArgs) {\n super(args);\n }\n}\n\nexport interface IActionHttpInvalidate extends IAction {\n /**\n * The URL that requires invalidation.\n * If not provided, then _all_ URLs need to be invalidated.\n */\n url?: string;\n}\n\nexport interface IActorHttpInvalidateOutput extends IActorOutput {\n\n}\n\nexport type IActorHttpInvalidateArgs = IActorArgs;\n\nexport type MediatorHttpInvalidate = Mediate;\n","import type { IActorTest } from '@comunica/core';\nimport type {\n IActionHttpInvalidate,\n IActorHttpInvalidateOutput,\n IActorHttpInvalidateArgs,\n} from './ActorHttpInvalidate';\nimport { ActorHttpInvalidate } from './ActorHttpInvalidate';\n\n/**\n * An ActorHttpInvalidate actor that allows listeners to be attached.\n *\n * @see ActorHttpInvalidate\n */\nexport class ActorHttpInvalidateListenable extends ActorHttpInvalidate {\n private readonly invalidateListeners: IInvalidateListener[] = [];\n\n public constructor(args: IActorHttpInvalidateArgs) {\n super(args);\n this.invalidateListeners = [];\n }\n\n public addInvalidateListener(listener: IInvalidateListener): void {\n this.invalidateListeners.push(listener);\n }\n\n public async test(_action: IActionHttpInvalidate): Promise {\n return true;\n }\n\n public async run(action: IActionHttpInvalidate): Promise {\n for (const listener of this.invalidateListeners) {\n listener(action);\n }\n return {};\n }\n}\n\n/**\n * Called when a {@link IActionHttpInvalidate} is received.\n */\nexport type IInvalidateListener = (action: IActionHttpInvalidate) => void;\n","import type { IAction, IActorOutput, IActorTest, IActorArgs, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { Readable } from 'readable-stream';\n\n/**\n * A base actor for listening to init events.\n *\n * Actor types:\n * * Input: IActionInit: Contains process information\n * such as the list of arguments,\n * environment variables and input stream.\n * * Test: \n * * Output: IActorOutputInit: Contains process output streams.\n *\n * @see IActionInit\n */\nexport abstract class ActorInit extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorInitArgs) {\n super(args);\n }\n}\n\n/**\n * The init input, which contains the program arguments.\n */\nexport interface IActionInit extends IAction {\n /**\n * The list of program arguments.\n */\n argv: string[];\n /**\n * The mapping of environment variables.\n */\n env: Record;\n /**\n * A standard input stream.\n */\n stdin: Readable;\n}\n\nexport interface IActorOutputInit extends IActorOutput {\n /**\n * A standard error output stream.\n */\n stderr?: Readable;\n /**\n * A standard output stream.\n */\n stdout?: Readable;\n}\n\nexport type IActorInitArgs = IActorArgs;\n\nexport type MediatorInit = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for optimize-query-operation events.\n *\n * Actor types:\n * * Input: IActionOptimizeQueryOperation: An incoming SPARQL operation.\n * * Test: \n * * Output: IActorOptimizeQueryOperationOutput: A (possibly optimized) outgoing SPARQL operation.\n *\n * @see IActionOptimizeQueryOperation\n * @see IActorOptimizeQueryOperationOutput\n */\nexport abstract class ActorOptimizeQueryOperation\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n}\n\nexport interface IActionOptimizeQueryOperation extends IAction {\n operation: Algebra.Operation;\n}\n\nexport interface IActorOptimizeQueryOperationOutput extends IActorOutput {\n operation: Algebra.Operation;\n context: IActionContext;\n}\n\nexport type IActorOptimizeQueryOperationArgs = IActorArgs<\nIActionOptimizeQueryOperation,\nIActorTest,\nIActorOptimizeQueryOperationOutput\n>;\n\nexport type MediatorOptimizeQueryOperation = Mediate<\nIActionOptimizeQueryOperation,\nIActorOptimizeQueryOperationOutput\n>;\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { KeysInitQuery, KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorArgs, IActorTest, IAction, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport { BlankNodeBindingsScoped } from '@comunica/data-factory';\nimport type {\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n IQueryOperationResultQuads,\n IQueryOperationResultVoid,\n Bindings,\n IActionContext,\n FunctionArgumentsCache,\n IQuerySourceWrapper,\n FragmentSelectorShape,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { materializeOperation } from './Bindings';\n\n/**\n * A counter that keeps track blank node generated through BNODE() SPARQL\n * expressions.\n *\n * @type {number}\n */\nlet bnodeCounter = 0;\n\n/**\n * A comunica actor for query-operation events.\n *\n * Actor types:\n * * Input: IActionQueryOperation: A SPARQL Algebra operation.\n * * Test: \n * * Output: IActorQueryOperationOutput: A bindings stream.\n *\n * @see IActionQueryOperation\n * @see IQueryOperationResult\n */\nexport abstract class ActorQueryOperation extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n protected constructor(args: IActorQueryOperationArgs) {\n super(args);\n }\n\n /**\n * Safely cast a query operation output to a bindings output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBindings} A bindings query operation output.\n */\n public static getSafeBindings(output: IQueryOperationResult): IQueryOperationResultBindings {\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a quads output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultQuads} A quads query operation output.\n */\n public static getSafeQuads(output: IQueryOperationResult): IQueryOperationResultQuads {\n ActorQueryOperation.validateQueryOutput(output, 'quads');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a boolean output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBoolean} A boolean query operation output.\n */\n public static getSafeBoolean(output: IQueryOperationResult): IQueryOperationResultBoolean {\n ActorQueryOperation.validateQueryOutput(output, 'boolean');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a void output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultVoid} A void query operation output.\n */\n public static getSafeVoid(output: IQueryOperationResult): IQueryOperationResultVoid {\n ActorQueryOperation.validateQueryOutput(output, 'void');\n return output;\n }\n\n /**\n * Throw an error if the output type does not match the expected type.\n * @param {IQueryOperationResult} output A query operation output.\n * @param {string} expectedType The expected output type.\n */\n public static validateQueryOutput(output: IQueryOperationResult, expectedType: IQueryOperationResult['type']): void {\n if (output.type !== expectedType) {\n throw new Error(`Invalid query output type: Expected '${expectedType}' but got '${output.type}'`);\n }\n }\n\n protected static getBaseExpressionContext(context: IActionContext): IBaseExpressionContext {\n const now: Date | undefined = context.get(KeysInitQuery.queryTimestamp);\n const baseIRI: string | undefined = context.get(KeysInitQuery.baseIRI);\n const functionArgumentsCache: FunctionArgumentsCache = context.get(KeysInitQuery.functionArgumentsCache) ?? {};\n\n // Handle two variants of providing extension functions\n if (context.has(KeysInitQuery.extensionFunctionCreator) && context.has(KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n let extensionFunctionCreator: ((functionNamedNode: RDF.NamedNode) =>\n ((args: RDF.Term[]) => Promise) | undefined) | undefined = context\n .get(KeysInitQuery.extensionFunctionCreator);\n // Convert dictionary-based variant to callback\n const extensionFunctions: (Record Promise>) | undefined = context\n .get(KeysInitQuery.extensionFunctions);\n if (extensionFunctions) {\n extensionFunctionCreator = functionNamedNode => extensionFunctions[functionNamedNode.value];\n }\n\n return { now, baseIRI, extensionFunctionCreator, functionArgumentsCache };\n }\n\n /**\n * Create an options object that can be used to construct a expression-evaluator synchronous evaluator.\n * @param context An action context.\n * @param _mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n public static getExpressionContext(context: IActionContext, _mediatorQueryOperation?: MediatorQueryOperation):\n ISyncExpressionContext {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input?: string) => new BlankNodeBindingsScoped(input ?? `BNODE_${bnodeCounter++}`),\n };\n }\n\n /**\n * Create an options object that can be used to construct a expression-evaluator asynchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation A query query operation mediator for resolving `exists`.\n * @param bindingsFactory The bindings factory.\n */\n public static getAsyncExpressionContext(\n context: IActionContext,\n mediatorQueryOperation: MediatorQueryOperation,\n bindingsFactory: BindingsFactory,\n ):\n IAsyncExpressionContext {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input?: string) => Promise.resolve(new BlankNodeBindingsScoped(input ?? `BNODE_${bnodeCounter++}`)),\n exists: ActorQueryOperation.createExistenceResolver(context, mediatorQueryOperation, bindingsFactory),\n };\n }\n\n /**\n * Create an existence resolver for usage within an expression context.\n * @param context An action context.\n * @param mediatorQueryOperation A query operation mediator.\n * @param bindingsFactory The bindings factory.\n */\n public static createExistenceResolver(\n context: IActionContext,\n mediatorQueryOperation: MediatorQueryOperation,\n bindingsFactory: BindingsFactory,\n ):\n (expr: Algebra.ExistenceExpression, bindings: Bindings) => Promise {\n return async(expr, bindings) => {\n const operation = materializeOperation(expr.input, bindings, bindingsFactory);\n\n const outputRaw = await mediatorQueryOperation.mediate({ operation, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n return expr.not !== ((await output.bindingsStream.take(1).toArray()).length === 1);\n };\n }\n\n /**\n * Throw an error if the context contains the readOnly flag.\n * @param context An action context.\n */\n public static throwOnReadOnly(context: IActionContext): void {\n if (context.get(KeysQueryOperation.readOnly)) {\n throw new Error(`Attempted a write operation in read-only mode`);\n }\n }\n\n /**\n * Obtain the query source attached to the given operation.\n * @param operation An algebra operation.\n */\n public static getOperationSource(operation: Algebra.Operation): IQuerySourceWrapper | undefined {\n return operation.metadata?.scopedSource;\n }\n\n /**\n * Assign a source wrapper to the given operation.\n * The operation is copied and returned.\n * @param operation An operation.\n * @param source A source wrapper.\n */\n public static assignOperationSource(operation: O, source: IQuerySourceWrapper): O {\n operation = { ...operation };\n operation.metadata = operation.metadata ? { ...operation.metadata } : {};\n operation.metadata.scopedSource = source;\n return operation;\n }\n\n /**\n * Remove the source wrapper from the given operation.\n * The operation is mutated.\n * @param operation An operation.\n */\n public static removeOperationSource(operation: Algebra.Operation): void {\n delete operation.metadata?.scopedSource;\n if (operation.metadata && Object.keys(operation.metadata).length === 0) {\n delete operation.metadata;\n }\n }\n\n /**\n * Check if the given shape accepts the given query operation.\n * @param shape A shape to test the query operation against.\n * @param operation A query operation to test.\n * @param options Additional options to consider.\n * @param options.joinBindings If additional bindings will be pushed down to the source for joining.\n * @param options.filterBindings If additional bindings will be pushed down to the source for filtering.\n */\n public static doesShapeAcceptOperation(\n shape: FragmentSelectorShape,\n operation: Algebra.Operation,\n options?: {\n joinBindings?: boolean;\n filterBindings?: boolean;\n },\n ): boolean {\n if (shape.type === 'conjunction') {\n return shape.children.every(child => ActorQueryOperation.doesShapeAcceptOperation(child, operation, options));\n }\n if (shape.type === 'disjunction') {\n return shape.children.some(child => ActorQueryOperation.doesShapeAcceptOperation(child, operation, options));\n }\n if (shape.type === 'arity') {\n return ActorQueryOperation.doesShapeAcceptOperation(shape.child, operation, options);\n }\n\n if ((options?.joinBindings && !shape.joinBindings) ?? (options?.filterBindings && !shape.filterBindings)) {\n return false;\n }\n\n if (shape.operation.operationType === 'type') {\n return shape.operation.type === 'project' || shape.operation.type === operation.type;\n }\n return shape.operation.pattern.type === operation.type;\n }\n}\n\nexport interface IActionQueryOperation extends IAction {\n /**\n * The query operation to handle.\n */\n operation: Algebra.Operation;\n}\n\nexport type IActorQueryOperationArgs = IActorArgs;\n\nexport type MediatorQueryOperation = Mediate;\n\nexport interface IBaseExpressionContext {\n now?: Date;\n baseIRI?: string;\n extensionFunctionCreator?: (functionNamedNode: RDF.NamedNode) =>\n ((args: RDF.Term[]) => Promise) | undefined;\n functionArgumentsCache?: FunctionArgumentsCache;\n}\n\nexport interface ISyncExpressionContext extends IBaseExpressionContext {\n bnode: (input?: string | undefined) => RDF.BlankNode;\n}\n\nexport interface IAsyncExpressionContext extends IBaseExpressionContext {\n bnode: (input?: string | undefined) => Promise;\n exists?: (expr: Algebra.ExistenceExpression, bindings: Bindings) => Promise;\n}\n","import { KeysInitQuery, KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { cachifyMetadata } from '@comunica/metadata';\nimport type {\n IQueryOperationResult,\n IPhysicalQueryPlanLogger,\n IActionContext,\n IMetadata,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { IActionQueryOperation, IActorQueryOperationArgs } from './ActorQueryOperation';\nimport { ActorQueryOperation } from './ActorQueryOperation';\n\n/**\n * A base implementation for query operation actors for a specific operation type.\n */\nexport abstract class ActorQueryOperationTyped extends ActorQueryOperation {\n public readonly operationName: string;\n\n protected constructor(args: IActorQueryOperationArgs, operationName: string) {\n super( { ...args, operationName });\n if (!this.operationName) {\n throw new Error('A valid \"operationName\" argument must be provided.');\n }\n }\n\n public async test(action: IActionQueryOperation): Promise {\n if (!action.operation) {\n throw new Error('Missing field \\'operation\\' in a query operation action.');\n }\n if (action.operation.type !== this.operationName) {\n throw new Error(`Actor ${this.name} only supports ${this.operationName} operations, but got ${\n action.operation.type}`);\n }\n const operation: O = action.operation;\n return this.testOperation(operation, action.context);\n }\n\n public async run(action: IActionQueryOperation): Promise {\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context\n .get(KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(\n action.operation.type,\n undefined,\n action.operation,\n action.context.get(KeysInitQuery.physicalQueryPlanNode),\n this.name,\n {},\n );\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n\n const operation: O = action.operation;\n const subContext = action.context.set(KeysQueryOperation.operation, operation);\n const output: IQueryOperationResult = await this.runOperation(operation, subContext);\n if ('metadata' in output) {\n output.metadata = \n cachifyMetadata, RDF.QuadTermName | RDF.Variable>(output.metadata);\n }\n return output;\n }\n\n protected abstract testOperation(operation: O, context: IActionContext): Promise;\n\n protected abstract runOperation(operation: O, context: IActionContext):\n Promise;\n}\n","import type { Algebra } from 'sparqlalgebrajs';\nimport type { IActorQueryOperationArgs, MediatorQueryOperation } from './ActorQueryOperation';\nimport { ActorQueryOperationTyped } from './ActorQueryOperationTyped';\n\n/**\n * A base implementation for query operation actors for a specific operation type that have a query operation mediator.\n */\nexport abstract class ActorQueryOperationTypedMediated extends ActorQueryOperationTyped\n implements IActorQueryOperationTypedMediatedArgs {\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs, operationName: string) {\n super(args, operationName);\n }\n}\n\nexport interface IActorQueryOperationTypedMediatedArgs extends IActorQueryOperationArgs {\n mediatorQueryOperation: MediatorQueryOperation;\n}\n","import type { IActorTest, IBusArgs } from '@comunica/core';\nimport { BusIndexed } from '@comunica/core';\nimport type { IQueryOperationResult } from '@comunica/types';\nimport type { ActorQueryOperation, IActionQueryOperation } from './ActorQueryOperation';\n\n/**\n * Indexed bus for query operations.\n */\nexport class BusQueryOperation\n extends BusIndexed {\n public constructor(args: IBusArgs) {\n super({\n ...args,\n actorIdentifierFields: [ 'operationName' ],\n actionIdentifierFields: [ 'operation', 'type' ],\n });\n }\n}\n","import { AsyncIterator, DESTINATION } from 'asynciterator';\n\ntype InternalSource =\n AsyncIterator & { [DESTINATION]?: AsyncIterator };\n\n/**\n * An AsyncIterator with a callback for when this iterator is closed in any way.\n * In contrast to ClosableTransformIterator, this does not add the overhead of a TransformIterator.\n */\nexport class ClosableIterator extends AsyncIterator {\n protected readonly _source: InternalSource;\n private readonly onClose: () => void;\n\n public constructor(source: AsyncIterator, options: { onClose: () => void }) {\n super();\n this.onClose = options.onClose;\n this._source = > source;\n\n // Wire up the source for reading\n this._source[DESTINATION] = this;\n this._source.on('end', destinationClose);\n this._source.on('error', destinationEmitError);\n this._source.on('readable', destinationSetReadable);\n this.readable = this._source.readable;\n }\n\n public override read(): S | null {\n const ret = this._source.read();\n if (!ret) {\n // Mark as non-readable if ret was null\n this.readable = false;\n\n // Close this iterator if the source is empty\n if (this._source.done) {\n this.close();\n }\n }\n return ret;\n }\n\n protected override _end(destroy: boolean): void {\n this.onClose();\n\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[DESTINATION];\n this._source.destroy();\n super._end(destroy);\n }\n}\n\n// Helpers below are copied from AsyncIterator, as they are not exported from there.\n\nfunction destinationSetReadable(this: InternalSource): void {\n this[DESTINATION]!.readable = true;\n}\nfunction destinationEmitError(this: InternalSource, error: Error): void {\n this[DESTINATION]!.emit('error', error);\n}\nfunction destinationClose(this: InternalSource): void {\n this[DESTINATION]!.close();\n}\n","import type { AsyncIterator, TransformIteratorOptions } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\n\ndeclare type MaybePromise = T | Promise;\ndeclare type SourceExpression = MaybePromise> | (() => MaybePromise>);\n\n/**\n * A TransformIterator with a callback for when this iterator is closed in any way.\n */\nexport class ClosableTransformIterator extends TransformIterator {\n private readonly onClose: () => void;\n\n public constructor(source: SourceExpression, options: TransformIteratorOptions & { onClose: () => void }) {\n super(source, options);\n this.onClose = options.onClose;\n }\n\n protected override _end(destroy: boolean): void {\n this.onClose();\n super._end(destroy);\n }\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for query-parse events.\n *\n * Actor types:\n * * Input: IActionSparqlParse: A SPARQL query string.\n * * Test: \n * * Output: IActorSparqlParseOutput: A parsed query in SPARQL query algebra.\n *\n * @see IActionQueryParse\n * @see IActorQueryParseOutput\n */\nexport abstract class ActorQueryParse extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryParseArgs) {\n super(args);\n }\n}\n\nexport interface IActionQueryParse extends IAction {\n /**\n * A query.\n */\n query: string;\n /**\n * The query format.\n */\n queryFormat?: RDF.QueryFormat;\n /**\n * The query's default base IRI.\n */\n baseIRI?: string;\n}\n\nexport interface IActorQueryParseOutput extends IActorOutput {\n /**\n * A parsed query in SPARQL algebra.\n */\n operation: Algebra.Operation;\n /**\n * An optionally overridden base IRI.\n */\n baseIRI?: string;\n}\n\nexport type IActorQueryParseArgs = IActorArgs;\n\nexport type MediatorQueryParse = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { QueryFormatType, IQueryExplained, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for query-process events.\n *\n * Actor types:\n * * Input: IActionQueryProcess: The input query to process.\n * * Test: \n * * Output: IActorQueryProcessOutput: Output of the query processing.\n *\n * @see IActionQueryProcess\n * @see IActorQueryProcessOutput\n */\nexport abstract class ActorQueryProcess extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryProcessArgs) {\n super(args);\n }\n}\n\nexport interface IActionQueryProcess extends IAction {\n /**\n * The query to process.\n */\n query: QueryFormatType;\n}\n\nexport interface IActorQueryProcessOutput extends IActorOutput {\n /**\n * Result of the query processing.\n */\n result: IQueryOperationResult | IQueryExplained;\n}\n\nexport type IActorQueryProcessArgs = IActorArgs<\nIActionQueryProcess,\nIActorTest,\nIActorQueryProcessOutput\n>;\n\nexport type MediatorQueryProcess = Mediate<\nIActionQueryProcess,\nIActorQueryProcessOutput\n>;\n\nexport interface IQueryProcessSequential {\n parse: (query: QueryFormatType, context: IActionContext) => Promise;\n optimize: (operation: Algebra.Operation, context: IActionContext) => Promise;\n evaluate: (operation: Algebra.Operation, context: IActionContext) => Promise;\n}\n\nexport interface IQueryProcessSequentialOutput {\n operation: Algebra.Operation;\n context: IActionContext;\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IQuerySourceWrapper, QuerySourceUnidentifiedExpanded } from '@comunica/types';\n\n/**\n * A comunica actor for query-source-identify events.\n *\n * Actor types:\n * * Input: IActionQuerySourceIdentify: An unidentified query source.\n * * Test: \n * * Output: IActorQuerySourceIdentifyOutput: An identified query source.\n *\n * @see IActionQuerySourceIdentify\n * @see IActorQuerySourceIdentifyOutput\n */\nexport abstract class ActorQuerySourceIdentify\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQuerySourceIdentifyArgs) {\n super(args);\n }\n}\n\nexport interface IActionQuerySourceIdentify extends IAction {\n /**\n * An unidentified query source.\n */\n querySourceUnidentified: QuerySourceUnidentifiedExpanded;\n}\n\nexport interface IActorQuerySourceIdentifyOutput extends IActorOutput {\n /**\n * An identified query source.\n */\n querySource: IQuerySourceWrapper;\n}\n\nexport type IActorQuerySourceIdentifyArgs = IActorArgs<\nIActionQuerySourceIdentify,\nIActorTest,\nIActorQuerySourceIdentifyOutput\n>;\n\nexport type MediatorQuerySourceIdentify = Mediate<\nIActionQuerySourceIdentify,\nIActorQuerySourceIdentifyOutput\n>;\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { ClosableIterator } from '@comunica/bus-query-operation';\nimport { validateMetadataQuads } from '@comunica/metadata';\nimport type { BindingsStream, MetadataBindings, MetadataQuads, TermsOrder } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport type { QuadTermName } from 'rdf-terms';\nimport {\n forEachTermsNested,\n getTermsNested,\n getValueNestedPath,\n reduceTermsNested,\n someTerms,\n uniqTerms,\n} from 'rdf-terms';\nimport { matchPatternMappings } from 'rdf-terms/lib/QuadTermUtil';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * Convert an iterator of quads to an iterator of bindings.\n * @param quads The quads to convert.\n * @param pattern The pattern to get variables from to determine bindings.\n * All quads are also assumed to match the pattern.\n * @param bindingsFactory The factory for creating bindings.\n * @param unionDefaultGraph If union default graph mode is enabled.\n * If true, variable graphs will match all graphs, including the default graph.\n * If false, variable graphs will only match named graphs, and not the default graph.\n */\nexport function quadsToBindings(\n quads: AsyncIterator,\n pattern: Algebra.Pattern,\n bindingsFactory: BindingsFactory,\n unionDefaultGraph: boolean,\n): BindingsStream {\n const variables = getVariables(pattern);\n\n // If non-default-graph triples need to be filtered out\n const filterNonDefaultQuads = pattern.graph.termType === 'Variable' && !unionDefaultGraph;\n\n // Detect duplicate variables in the pattern\n const duplicateElementLinks: Record | undefined = getDuplicateElementLinks(pattern);\n\n // Convenience datastructure for mapping quad elements to variables\n const elementVariables: Record = reduceTermsNested(\n pattern,\n (acc: Record, term: RDF.Term, keys: QuadTermName[]) => {\n if (term.termType === 'Variable') {\n acc[keys.join('_')] = term.value;\n }\n return acc;\n },\n {},\n );\n\n // Optionally filter, and construct bindings\n let filteredOutput = quads;\n\n // SPARQL query semantics allow graph variables to only match with named graphs, excluding the default graph\n // But this is not the case when using union default graph semantics\n if (filterNonDefaultQuads) {\n filteredOutput = filteredOutput.filter(quad => quad.graph.termType !== 'DefaultGraph');\n }\n\n // If there are duplicate variables in the search pattern,\n // make sure that we filter out the triples that don't have equal values for those triple elements,\n // as the rdf-resolve-quad-pattern bus ignores variable names.\n if (duplicateElementLinks) {\n filteredOutput = filteredOutput.filter((quad) => {\n for (const keyLeft in duplicateElementLinks) {\n const keysLeft: QuadTermName[] = keyLeft.split('_');\n const valueLeft = getValueNestedPath(quad, keysLeft);\n for (const keysRight of duplicateElementLinks[keyLeft]) {\n if (!valueLeft.equals(getValueNestedPath(quad, keysRight))) {\n return false;\n }\n }\n }\n return true;\n });\n }\n\n // Wrap it in a ClosableIterator, so we can propagate destroy calls\n const it = new ClosableIterator(filteredOutput.map(quad => bindingsFactory\n .bindings(Object.keys(elementVariables).map((key) => {\n const keys: QuadTermName[] = key.split('_');\n const variable = elementVariables[key];\n const term = getValueNestedPath(quad, keys);\n return [ DF.variable(variable), term ];\n }))), {\n onClose: () => quads.destroy(),\n });\n\n // Set the metadata property\n setMetadata(it, quads, elementVariables, variables, filterNonDefaultQuads || Boolean(duplicateElementLinks));\n\n return it;\n}\n\n/**\n * Check if a term is a variable.\n * @param {RDF.Term} term An RDF term.\n * @return {any} If the term is a variable or blank node.\n */\nexport function isTermVariable(term: RDF.Term): term is RDF.Variable {\n return term.termType === 'Variable';\n}\n\n/**\n * Get all variables in the given pattern.\n * No duplicates are returned.\n * @param {RDF.BaseQuad} pattern A quad pattern.\n */\nexport function getVariables(pattern: RDF.BaseQuad): RDF.Variable[] {\n return uniqTerms(getTermsNested(pattern).filter(isTermVariable));\n}\n\n/**\n * A helper function to find a hash with quad elements that have duplicate variables.\n *\n * @param {RDF.Quad} pattern A quad pattern.\n *\n * @return {{[p: string]: string[]}} If no equal variable names are present in the four terms, this returns undefined.\n * Otherwise, this maps quad elements paths (['subject'], ['predicate'], ['object'],\n * ['graph'])\n * to the list of quad elements it shares a variable name with.\n * For quoted triples, paths such as ['subject', 'object'] may occur.\n * If no links for a certain element exist, this element will\n * not be included in the hash.\n * Note 1: Quad elements will never have a link to themselves.\n * So this can never occur: { subject: [[ 'subject']] },\n * instead 'null' would be returned.\n * Note 2: Links only exist in one direction,\n * this means that { subject: [[ 'predicate']], predicate: [[ 'subject' ]] }\n * will not occur, instead only { subject: [[ 'predicate']] }\n * will be returned.\n * Note 3: Keys can also be paths, but they are delimited by '_', such as:\n * { subject_object_subject: [[ 'predicate']] }\n */\nexport function getDuplicateElementLinks(pattern: RDF.BaseQuad): Record | undefined {\n // Collect a variable to quad elements mapping.\n const variableElements: Record = {};\n let duplicateVariables = false;\n forEachTermsNested(pattern, (value, keys) => {\n if (value.termType === 'Variable') {\n const val = termToString(value);\n const length = (variableElements[val] || (variableElements[val] = [])).push(keys);\n duplicateVariables = duplicateVariables || length > 1;\n }\n });\n\n if (!duplicateVariables) {\n return;\n }\n\n // Collect quad element to elements with equal variables mapping.\n const duplicateElementLinks: Record = {};\n for (const variable in variableElements) {\n const elements = variableElements[variable];\n const remainingElements = elements.slice(1);\n // Only store the elements that have at least one equal element.\n if (remainingElements.length > 0) {\n duplicateElementLinks[elements[0].join('_')] = remainingElements;\n }\n }\n\n return duplicateElementLinks;\n}\n\n/**\n * Set the metadata of the bindings stream derived from the metadata of the quads stream.\n *\n * @param {BindingsStream} bindings The bindings stream that will receive the metadata property.\n * @param {AsyncIterator} quads The quads stream that is guaranteed to emit the metadata property.\n * @param elementVariables Mapping of quad term name to variable name.\n * @param variables Variables to include in the metadata\n * @param forceEstimateCardinality Set the cardinality to estimate\n * @return {() => Promise<{[p: string]: any}>} A lazy promise behind a callback resolving to a metadata object.\n */\nexport function setMetadata(\n bindings: BindingsStream,\n quads: AsyncIterator,\n elementVariables: Record,\n variables: RDF.Variable[],\n forceEstimateCardinality: boolean,\n): void {\n const getMetadataCb = (metadataRaw: Record): void => {\n if (!('canContainUndefs' in metadataRaw)) {\n metadataRaw.canContainUndefs = false;\n }\n if (forceEstimateCardinality) {\n metadataRaw.cardinality.type = 'estimate';\n }\n bindings.setProperty(\n 'metadata',\n quadsMetadataToBindingsMetadata(validateMetadataQuads(metadataRaw), elementVariables, variables),\n );\n\n // Propagate metadata invalidations\n if (metadataRaw.state) {\n metadataRaw.state.addInvalidateListener(() => {\n setMetadata(bindings, quads, elementVariables, variables, forceEstimateCardinality);\n });\n }\n };\n\n const metadata = quads.getProperty('metadata');\n if (metadata) {\n // This is to enforce sync metadata setting, because AsyncIterator will always call it async,\n // even if the property was already defined.\n getMetadataCb(metadata);\n } else {\n quads.getProperty('metadata', getMetadataCb);\n }\n}\n\n/**\n * Convert the metadata of quads to the metadata of bindings.\n * @param metadataQuads Quads metadata.\n * @param elementVariables A mapping from quad elements to variables.\n * @param variables The variables in the bindings.\n */\nexport function quadsMetadataToBindingsMetadata(\n metadataQuads: MetadataQuads,\n elementVariables: Record,\n variables: RDF.Variable[],\n): MetadataBindings {\n return {\n ...metadataQuads,\n canContainUndefs: false,\n order: metadataQuads.order ?\n quadsOrderToBindingsOrder(metadataQuads.order, elementVariables) :\n undefined,\n availableOrders: metadataQuads.availableOrders ?\n metadataQuads.availableOrders.map(orderDef => ({\n cost: orderDef.cost,\n terms: quadsOrderToBindingsOrder(orderDef.terms, elementVariables),\n })) :\n undefined,\n variables,\n };\n}\n\n/**\n * Convert the quads order metadata element to a bindings order metadata element.\n * @param quadsOrder Quads order.\n * @param elementVariables A mapping from quad elements to variables.\n */\nexport function quadsOrderToBindingsOrder(\n quadsOrder: TermsOrder,\n elementVariables: Record,\n): TermsOrder {\n const mappedVariables: Record = {};\n return > quadsOrder.map((entry) => {\n // Omit entries that do not map to a variable\n const variableName = elementVariables[entry.term];\n if (!variableName) {\n // eslint-disable-next-line array-callback-return\n return;\n }\n\n // Omit entries that have been mapped already\n if (mappedVariables[variableName]) {\n // eslint-disable-next-line array-callback-return\n return;\n }\n\n mappedVariables[variableName] = true;\n return {\n term: DF.variable(variableName),\n direction: entry.direction,\n };\n }).filter(Boolean);\n}\n\n/**\n * Perform post-match-filtering if the source does not support quoted triple filtering,\n * but we have a variable inside a quoted triple.\n * @param pattern The current quad pattern operation.\n * @param it The iterator to filter.\n */\nexport function filterMatchingQuotedQuads(pattern: RDF.BaseQuad, it: AsyncIterator): AsyncIterator {\n if (someTerms(pattern, term => term.termType === 'Quad')) {\n it = it.filter(quad => matchPatternMappings(quad, pattern));\n }\n return it;\n}\n","import type { IAction, IActorArgs, IActorOutput, Mediate, IActorTest } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IJoinEntryWithMetadata } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-join-entries-sort events.\n *\n * Actor types:\n * * Input: IActionRdfJoinEntriesSort: Join entries.\n * * Test: IActorTest: Test result.\n * * Output: IActorRdfJoinEntriesSortOutput: The sorted join entries.\n *\n * @see IActionRdfJoinEntriesSort\n * @see IActorTest\n * @see IActorRdfJoinEntriesSortOutput\n */\nexport abstract class ActorRdfJoinEntriesSort\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfJoinEntriesSortArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfJoinEntriesSort extends IAction {\n /**\n * The array of streams to join.\n */\n entries: IJoinEntryWithMetadata[];\n}\n\nexport interface IActorRdfJoinEntriesSortOutput extends IActorOutput {\n /**\n * The array of sorted streams.\n */\n entries: IJoinEntryWithMetadata[];\n}\n\nexport type IActorRdfJoinEntriesSortArgs = IActorArgs<\nIActionRdfJoinEntriesSort,\nIActorTest,\nIActorRdfJoinEntriesSortOutput\n>;\n\nexport type MediatorRdfJoinEntriesSort = Mediate<\nIActionRdfJoinEntriesSort,\nIActorRdfJoinEntriesSortOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IMediatorTypeAccuracy } from '@comunica/mediatortype-accuracy';\nimport type { IJoinEntry } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-join-selectivity events.\n *\n * Actor types:\n * * Input: IActionRdfJoinSelectivity: Join entries.\n * * Test: IMediatorTypeAccuracy: The accuracy of the selectivity calculator.\n * * Output: IActorRdfJoinSelectivityOutput: The calculated join selectivity.\n *\n * @see IActionRdfJoinSelectivity\n * @see IActorRdfJoinSelectivityTest\n * @see IActorRdfJoinSelectivityOutput\n */\nexport abstract class ActorRdfJoinSelectivity\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfJoinSelectivityArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfJoinSelectivity extends IAction {\n /**\n * The array of streams to join.\n */\n entries: IJoinEntry[];\n}\n\nexport interface IActorRdfJoinSelectivityOutput extends IActorOutput {\n /**\n * A selectivity factor in the range [0, 1].\n * A value close to 1 indicates a low selectivity,\n * which means that the operations in the join entries are highly unrelated.\n * A value close to 0 indicates a high selectivity,\n * which means that the operations in the join entries are highly related, and have a high chance of reducing .\n */\n selectivity: number;\n}\n\nexport type IActorRdfJoinSelectivityArgs = IActorArgs<\nIActionRdfJoinSelectivity,\nIMediatorTypeAccuracy,\nIActorRdfJoinSelectivityOutput\n>;\n\nexport type MediatorRdfJoinSelectivity = Mediate<\nIActionRdfJoinSelectivity,\nIActorRdfJoinSelectivityOutput,\nIMediatorTypeAccuracy\n>;\n","import type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type {\n MediatorRdfJoinSelectivity,\n} from '@comunica/bus-rdf-join-selectivity';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IAction, IActorArgs, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { cachifyMetadata, MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQueryOperationResultBindings,\n MetadataBindings,\n IPhysicalQueryPlanLogger,\n Bindings,\n IActionContext,\n IJoinEntry,\n IJoinEntryWithMetadata,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { instrumentIterator } from './instrumentIterator';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica actor for joining 2 binding streams.\n *\n * Actor types:\n * * Input: IActionRdfJoin: The streams that need to be joined.\n * * Test: IMediatorTypeJoinCoefficients: Join coefficients.\n * * Output: IActorRdfJoinOutput: The resulting joined stream.\n *\n * @see IActionRdfJoin\n * @see IActorQueryOperationOutput\n */\nexport abstract class ActorRdfJoin\n extends Actor {\n public readonly mediatorJoinSelectivity: MediatorRdfJoinSelectivity;\n\n /**\n * If this actor will be logged in the debugger and physical query plan logger\n */\n public includeInLogs = true;\n public readonly logicalType: LogicalJoinType;\n public readonly physicalName: string;\n /**\n * Can be used by subclasses to indicate the max or min number of streams that can be joined.\n * 0 for infinity.\n * By default, this indicates the max number, but can be inverted by setting limitEntriesMin to true.\n */\n protected readonly limitEntries: number;\n /**\n * If true, the limitEntries field is a lower limit,\n * otherwise, it is an upper limit.\n */\n protected readonly limitEntriesMin: boolean;\n /**\n * If this actor can handle undefs in the bindings.\n */\n protected readonly canHandleUndefs: boolean;\n /**\n * If this join operator will not invoke any other join or query operations below,\n * and can therefore be considered a leaf of the join plan.\n */\n protected readonly isLeaf: boolean;\n /**\n * If this join operator must only be used for join entries with (at least partially) common variables.\n */\n protected readonly requiresVariableOverlap?: boolean;\n\n /**\n * @param args - @defaultNested { a } bus\n * @param options - Actor-specific join options.\n */\n public constructor(args: IActorRdfJoinArgs, options: IActorRdfJoinInternalOptions) {\n super(args);\n this.logicalType = options.logicalType;\n this.physicalName = options.physicalName;\n this.limitEntries = options.limitEntries ?? Number.POSITIVE_INFINITY;\n this.limitEntriesMin = options.limitEntriesMin ?? false;\n this.canHandleUndefs = options.canHandleUndefs ?? false;\n this.isLeaf = options.isLeaf ?? true;\n this.requiresVariableOverlap = options.requiresVariableOverlap ?? false;\n }\n\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This can cause clashes for equal terms.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string} A hash string.\n */\n public static hash(bindings: Bindings, variables: RDF.Variable[]): string {\n return variables\n .map((variable) => {\n const term = bindings.get(variable);\n if (term) {\n return term.value;\n }\n return '';\n })\n .join('');\n }\n\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This is guaranteed to not produce clashing bindings for unequal terms.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string} A hash string.\n */\n public static hashNonClashing(bindings: RDF.Bindings, variables: RDF.Variable[]): string {\n return variables\n .map((variable) => {\n const term = bindings.get(variable);\n if (term) {\n return termToString(term);\n }\n return '';\n })\n .join('');\n }\n\n /**\n * Returns an array containing all the variable names that occur in all bindings streams.\n * @param {MetadataBindings[]} metadatas An array of optional metadata objects for the entries.\n * @returns {RDF.Variable[]} An array of variables.\n */\n public static overlappingVariables(metadatas: MetadataBindings[]): RDF.Variable[] {\n const variables = metadatas.map(metadata => metadata.variables);\n let baseArray = variables[0];\n for (const array of variables.slice(1)) {\n baseArray = baseArray.filter(el => array.some(value => value.value === el.value));\n }\n return baseArray;\n }\n\n /**\n * Returns the variables that will occur in the joined bindings.\n * @param {MetadataBindings[]} metadatas An array of metadata objects for the entries.\n * @returns {RDF.Variable[]} An array of joined variables.\n */\n public static joinVariables(metadatas: MetadataBindings[]): RDF.Variable[] {\n return [ ...new Set(metadatas.flatMap(metadata => metadata.variables.map(variable => variable.value))) ]\n .map(variable => DF.variable(variable));\n }\n\n /**\n * Returns the result of joining bindings, or `null` if no join is possible.\n * @param {Bindings[]} bindings\n * @returns {Bindings}\n */\n\n public static joinBindings(...bindings: Bindings[]): Bindings | null {\n if (bindings.length === 0) {\n return null;\n }\n if (bindings.length === 1) {\n return bindings[0];\n }\n\n let acc: Bindings = bindings[0];\n for (const binding of bindings.slice(1)) {\n const merged = acc.merge(binding);\n if (!merged) {\n return null;\n }\n acc = merged;\n }\n return acc;\n }\n\n /**\n * Get the estimated number of items from the given metadata.\n * @param {Record} metadata A metadata object.\n * @return {number} The estimated number of items, or `Infinity` if cardinality is falsy.\n */\n public static getCardinality(metadata: MetadataBindings): RDF.QueryResultCardinality {\n return metadata.cardinality;\n }\n\n /**\n * Obtain the metadata from all given join entries.\n * @param entries Join entries.\n */\n public static async getMetadatas(entries: IJoinEntry[]): Promise {\n return await Promise.all(entries.map(entry => entry.output.metadata()));\n }\n\n /**\n * Obtain the join entries witt metadata from all given join entries.\n * @param entries Join entries.\n */\n public static async getEntriesWithMetadatas(entries: IJoinEntry[]): Promise {\n const metadatas = await ActorRdfJoin.getMetadatas(entries);\n return entries.map((entry, i) => ({ ...entry, metadata: metadatas[i] }));\n }\n\n /**\n * Calculate the time to initiate a request for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public static getRequestInitialTimes(metadatas: MetadataBindings[]): number[] {\n return metadatas.map(metadata => metadata.pageSize ? 0 : metadata.requestTime ?? 0);\n }\n\n /**\n * Calculate the time to receive a single item for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public static getRequestItemTimes(metadatas: MetadataBindings[]): number[] {\n return metadatas\n .map(metadata => metadata.pageSize ? (metadata.requestTime ?? 0) / metadata.pageSize : 0);\n }\n\n /**\n * Construct a metadata validation state for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public constructState(metadatas: MetadataBindings[]): MetadataValidationState {\n // Propagate metadata invalidations\n const state = new MetadataValidationState();\n const invalidateListener = (): void => state.invalidate();\n for (const metadata of metadatas) {\n metadata.state.addInvalidateListener(invalidateListener);\n }\n return state;\n }\n\n /**\n * Helper function to create a new metadata object for the join result.\n * For required metadata entries that are not provided, sane defaults are calculated.\n * @param entries Join entries.\n * @param metadatas Metadata of the join entries.\n * @param context The action context.\n * @param partialMetadata Partial metadata entries.\n * @param optional If metadata for an optional operation must be calculated.\n */\n public async constructResultMetadata(\n entries: IJoinEntry[],\n metadatas: MetadataBindings[],\n context: IActionContext,\n partialMetadata: Partial = {},\n optional = false,\n ): Promise {\n let cardinalityJoined: RDF.QueryResultCardinality;\n if (partialMetadata.cardinality) {\n cardinalityJoined = partialMetadata.cardinality;\n } else {\n cardinalityJoined = metadatas\n .reduce((acc: RDF.QueryResultCardinality, metadata) => {\n const cardinalityThis = ActorRdfJoin.getCardinality(metadata);\n return {\n type: cardinalityThis.type === 'estimate' ? 'estimate' : acc.type,\n value: acc.value * (optional ? Math.max(1, cardinalityThis.value) : cardinalityThis.value),\n };\n }, { type: 'exact', value: 1 });\n cardinalityJoined.value *= (await this.mediatorJoinSelectivity.mediate({ entries, context })).selectivity;\n }\n\n return {\n state: this.constructState(metadatas),\n ...partialMetadata,\n cardinality: {\n type: cardinalityJoined.type,\n value: cardinalityJoined.value,\n },\n canContainUndefs: partialMetadata.canContainUndefs ?? metadatas.some(metadata => metadata.canContainUndefs),\n variables: ActorRdfJoin.joinVariables(metadatas),\n };\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {MediatorRdfJoinEntriesSort} mediatorJoinEntriesSort A mediator for sorting join entries.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public static async sortJoinEntries(\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort,\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n // If there is a stream that can contain undefs, we don't modify the join order.\n const canContainUndefs = entries.some(entry => entry.metadata.canContainUndefs);\n if (canContainUndefs) {\n return entries;\n }\n\n // Calculate number of occurrences of each variable\n const variableOccurrences: Record = {};\n for (const entry of entries) {\n for (const variable of entry.metadata.variables) {\n let counter = variableOccurrences[variable.value];\n if (!counter) {\n counter = 0;\n }\n variableOccurrences[variable.value] = ++counter;\n }\n }\n\n // Determine variables that occur in at least two join entries\n const multiOccurrenceVariables: string[] = [];\n for (const [ variable, count ] of Object.entries(variableOccurrences)) {\n if (count >= 2) {\n multiOccurrenceVariables.push(variable);\n }\n }\n\n // Reject if no entries have common variables\n if (multiOccurrenceVariables.length === 0) {\n throw new Error(`Bind join can only join entries with at least one common variable`);\n }\n\n // Determine entries without common variables\n // These will be placed in the back of the sorted array\n const entriesWithoutCommonVariables: IJoinEntryWithMetadata[] = [];\n for (const entry of entries) {\n let hasCommon = false;\n for (const variable of entry.metadata.variables) {\n if (multiOccurrenceVariables.includes(variable.value)) {\n hasCommon = true;\n break;\n }\n }\n if (!hasCommon) {\n entriesWithoutCommonVariables.push(entry);\n }\n }\n\n return (await mediatorJoinEntriesSort.mediate({ entries, context })).entries\n .sort((entryLeft, entryRight) => {\n // Sort to make sure that entries without common variables come last in the array.\n // For all other entries, the original order is kept.\n const leftWithoutCommonVariables = entriesWithoutCommonVariables.includes(entryLeft);\n const rightWithoutCommonVariables = entriesWithoutCommonVariables.includes(entryRight);\n if (leftWithoutCommonVariables === rightWithoutCommonVariables) {\n return 0;\n }\n return leftWithoutCommonVariables ?\n 1 :\n -1;\n });\n }\n\n /**\n * Default test function for join actors.\n * Checks whether all iterators have metadata.\n * If yes: call the abstract getIterations method, if not: return Infinity.\n * @param {IActionRdfJoin} action The input action containing the relevant iterators\n * @returns {Promise} The join coefficients.\n */\n public async test(action: IActionRdfJoin): Promise {\n // Validate logical join type\n if (action.type !== this.logicalType) {\n throw new Error(`${this.name} can only handle logical joins of type '${this.logicalType}', while '${action.type}' was given.`);\n }\n\n // Don't allow joining of one or zero streams\n if (action.entries.length <= 1) {\n throw new Error(`${this.name} requires at least two join entries.`);\n }\n\n // Check if this actor can handle the given number of streams\n if (this.limitEntriesMin ? action.entries.length < this.limitEntries : action.entries.length > this.limitEntries) {\n throw new Error(`${this.name} requires ${this.limitEntries\n } join entries at ${this.limitEntriesMin ? 'least' : 'most'\n }. The input contained ${action.entries.length}.`);\n }\n\n // Check if all streams are bindings streams\n for (const entry of action.entries) {\n if (entry.output.type !== 'bindings') {\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`Invalid type of a join entry: Expected 'bindings' but got '${entry.output.type}'`);\n }\n }\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Check if this actor can handle undefs\n if (!this.canHandleUndefs) {\n for (const metadata of metadatas) {\n if (metadata.canContainUndefs) {\n throw new Error(`Actor ${this.name} can not join streams containing undefs`);\n }\n }\n }\n\n // This actor only works with common variables\n if (this.requiresVariableOverlap && ActorRdfJoin.overlappingVariables(metadatas).length === 0) {\n throw new Error(`Actor ${this.name} can only join entries with at least one common variable`);\n }\n\n return await this.getJoinCoefficients(action, metadatas);\n }\n\n /**\n * Returns default input for 0 or 1 entries. Calls the getOutput function otherwise\n * @param {IActionRdfJoin} action\n * @returns {Promise} A bindings result.\n */\n public async run(action: IActionRdfJoin): Promise {\n // Prepare logging to physical plan\n // This must be called before getOutput, because we need to override the plan node in the context\n let parentPhysicalQueryPlanNode;\n if (action.context.has(KeysInitQuery.physicalQueryPlanLogger)) {\n parentPhysicalQueryPlanNode = action.context.get(KeysInitQuery.physicalQueryPlanNode);\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action);\n }\n\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context.get(KeysInitQuery\n .physicalQueryPlanLogger);\n let planMetadata: any;\n if (this.includeInLogs && physicalQueryPlanLogger) {\n planMetadata = {};\n // Stash non-join children, as they will be unstashed later in sub-joins.\n physicalQueryPlanLogger.stashChildren(\n parentPhysicalQueryPlanNode,\n node => node.logicalOperator.startsWith('join'),\n );\n physicalQueryPlanLogger.logOperation(\n `join-${this.logicalType}`,\n this.physicalName,\n action,\n parentPhysicalQueryPlanNode,\n this.name,\n planMetadata,\n );\n }\n\n // Get action output\n const { result, physicalPlanMetadata } = await this.getOutput(action);\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Fill in the physical plan metadata after determining action output\n if (planMetadata) {\n // eslint-disable-next-line ts/no-floating-promises\n instrumentIterator(result.bindingsStream)\n .then((counters) => {\n physicalQueryPlanLogger!.appendMetadata(action, {\n cardinalityReal: counters.count,\n timeSelf: counters.timeSelf,\n timeLife: counters.timeLife,\n });\n });\n\n Object.assign(planMetadata, physicalPlanMetadata);\n const cardinalities = metadatas.map(ActorRdfJoin.getCardinality);\n planMetadata.cardinalities = cardinalities;\n planMetadata.joinCoefficients = await this.getJoinCoefficients(action, metadatas);\n\n // If this is a leaf operation, include join entries in plan metadata.\n if (this.isLeaf) {\n for (let i = 0; i < action.entries.length; i++) {\n const entry = action.entries[i];\n physicalQueryPlanLogger!.unstashChild(\n entry.operation,\n action,\n );\n physicalQueryPlanLogger!.appendMetadata(entry.operation, { cardinality: cardinalities[i] });\n }\n }\n }\n\n // Cache metadata\n result.metadata = cachifyMetadata(result.metadata);\n\n return result;\n }\n\n /**\n * Returns the resulting output for joining the given entries.\n * This is called after removing the trivial cases in run.\n * @param {IActionRdfJoin} action\n * @returns {Promise}\n */\n protected abstract getOutput(action: IActionRdfJoin): Promise;\n\n /**\n * Calculate the join coefficients.\n * @param {IActionRdfJoin} action Join action\n * @param metadatas Array of resolved metadata objects.\n * @returns {IMediatorTypeJoinCoefficients} The join coefficient estimates.\n */\n protected abstract getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise;\n}\n\nexport interface IActorRdfJoinArgs\n extends IActorArgs {\n mediatorJoinSelectivity: MediatorRdfJoinSelectivity;\n}\n\nexport interface IActorRdfJoinInternalOptions {\n /**\n * The logical join type this actor can handle.\n */\n logicalType: LogicalJoinType;\n /**\n * The physical name of join operation this actor implements.\n * This is used for debug and query plan logs.\n */\n physicalName: string;\n /**\n * Can be used by subclasses to indicate the max or min number of streams that can be joined.\n * 0 for infinity.\n * By default, this indicates the max number, but can be inverted by setting limitEntriesMin to true.\n */\n limitEntries?: number;\n /**\n * If true, the limitEntries field is a lower limit,\n * otherwise, it is an upper limit.\n * Defaults to false.\n */\n limitEntriesMin?: boolean;\n /**\n * If this actor can handle undefs in the bindings.\n * Defaults to false.\n */\n canHandleUndefs?: boolean;\n /**\n * If this join operator will not invoke any other join or query operations below,\n * and can therefore be considered a leaf of the join plan.\n * Defaults to true.\n */\n isLeaf?: boolean;\n /**\n * If this join operator must only be used for join entries with (at least partially) common variables.\n */\n requiresVariableOverlap?: boolean;\n}\n\n/**\n * Represents a logical join type.\n */\nexport type LogicalJoinType = 'inner' | 'optional' | 'minus';\n\nexport interface IActionRdfJoin extends IAction {\n /**\n * The logical join type.\n */\n type: LogicalJoinType;\n /**\n * The array of streams to join.\n */\n entries: IJoinEntry[];\n}\n\nexport interface IActorRdfJoinOutputInner {\n /**\n * The join result.\n */\n result: IQueryOperationResultBindings;\n /**\n * Optional metadata that will be included as metadata within the physical query plan output.\n */\n physicalPlanMetadata?: any;\n}\n\nexport type MediatorRdfJoin = Mediate;\n","import type { AsyncIterator, TransformIteratorOptions } from 'asynciterator';\nimport { ArrayIterator, TransformIterator } from 'asynciterator';\n\n/**\n * Splits an iterator into chunks based on a given block size.\n */\nexport class ChunkedIterator extends TransformIterator> {\n protected readonly blockSize: number;\n protected chunk: T[] = [];\n\n public constructor(source: AsyncIterator, blockSize: number, options?: TransformIteratorOptions) {\n super(source, options);\n this.blockSize = blockSize;\n }\n\n protected consumeChunkAsIterator(): AsyncIterator {\n const it = new ArrayIterator(this.chunk, { autoStart: false });\n this.chunk = [];\n return it;\n }\n\n protected override _transform(item: T, done: () => void, push: (i: AsyncIterator) => void): void {\n this.chunk.push(item);\n if (this.chunk.length >= this.blockSize) {\n push(this.consumeChunkAsIterator());\n }\n done();\n }\n\n protected override _flush(done: () => void): void {\n if (this.chunk.length > 0) {\n this._push(this.consumeChunkAsIterator());\n }\n super._flush(done);\n }\n}\n","import type { AsyncIterator } from 'asynciterator';\n\nexport type IteratorCounters = {\n /**\n * The total time spent within `_read` and `read`.\n */\n timeSelf: number;\n /**\n * The time between creation and ending.\n */\n timeLife: number;\n /**\n * The number of elements produced.\n */\n count: number;\n};\n\n/**\n * Profile an iterator by monkey-patching its `_read` and `read` methods.\n * @param iterator\n */\nexport function instrumentIterator(iterator: AsyncIterator): Promise {\n const counters: IteratorCounters = {\n count: 0,\n timeSelf: 0,\n timeLife: 0,\n };\n instrumentIteratorInner(iterator, counters, true);\n return new Promise((resolve) => {\n iterator.on('end', () => {\n resolve(counters);\n });\n });\n}\n\nfunction instrumentIteratorInner(\n iterator: AsyncIterator,\n counter: { timeSelf: number; timeLife: number; count: number },\n top: boolean,\n): void {\n if (!('_profileInstrumented' in iterator)) {\n // Only patch an iterator once.\n (iterator)._profileInstrumented = true;\n\n // Patch _read\n if ('_read' in iterator) {\n const readOld: any = iterator._read;\n iterator._read = (count: number, done: () => void) => {\n const startTime = performance.now();\n readOld.call(iterator, count, () => {\n counter.timeSelf += performance.now() - startTime;\n done();\n });\n };\n }\n\n // Patch read\n if ('read' in iterator) {\n // eslint-disable-next-line ts/unbound-method\n const readOld: any = iterator.read;\n iterator.read = () => {\n const startTime = performance.now();\n const ret = readOld.call(iterator);\n if (top && ret) {\n counter.count++;\n }\n counter.timeSelf += performance.now() - startTime;\n return ret;\n };\n }\n\n // Measure total time\n if (top) {\n const startTime = performance.now();\n iterator.on('end', () => {\n counter.timeLife = performance.now() - startTime;\n });\n }\n\n // Also patch children\n if ('_source' in iterator) {\n instrumentIteratorInner(iterator._source, counter, false);\n }\n }\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { MetadataBindings } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-metadata-accumulate events.\n *\n * Actor types:\n * * Input: IActionRdfMetadataAccumulate: The metadata objects to accumulate,\n * or a trigger for initializing a new value.\n * * Test: \n * * Output: IActorRdfMetadataAccumulateOutput: The accumulated metadata object.\n *\n * @see IActionRdfMetadataAccumulate\n * @see IActorRdfMetadataAccumulateOutput\n */\nexport abstract class ActorRdfMetadataAccumulate\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n}\n\nexport type IActionRdfMetadataAccumulate = IActionRdfMetadataAccumulateInitialize | IActionRdfMetadataAccumulateAppend;\n\nexport interface IActionRdfMetadataAccumulateInitialize extends IAction {\n /**\n * Indicates that metadata fields should be initialized to default values.\n */\n mode: 'initialize';\n}\n\nexport interface IActionRdfMetadataAccumulateAppend extends IAction {\n /**\n * Indicates that metadata fields should be accumulated.\n * The initialize step is guaranteed to have been called before this on the `accumulatedMetadata` object.\n */\n mode: 'append';\n /**\n * The metadata object that already has some accumulated fields.\n * This object should not be mutated.\n */\n accumulatedMetadata: MetadataBindings;\n /**\n * The metadata object with fields to append.\n * This object should not be mutated.\n */\n appendingMetadata: MetadataBindings;\n}\n\nexport interface IActorRdfMetadataAccumulateOutput extends IActorOutput {\n /**\n * The initialized or accumulated metadata object.\n * This should only contain those fields that are applicable to this actor.\n */\n metadata: Partial;\n}\n\nexport type IActorRdfMetadataAccumulateArgs = IActorArgs<\nIActionRdfMetadataAccumulate,\nIActorTest,\nIActorRdfMetadataAccumulateOutput\n>;\n\nexport type MediatorRdfMetadataAccumulate = Mediate<\nIActionRdfMetadataAccumulate,\nIActorRdfMetadataAccumulateOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\n\n/**\n * A comunica actor for rdf-update-quads events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateQuads: Quad insertion and deletion streams.\n * * Test: \n * * Output: IActorRdfUpdateQuadsOutput: A promise resolving when the update operation is done.\n *\n * @see IActionRdfUpdateQuads\n * @see IActorRdfUpdateQuadsOutput\n */\nexport abstract class ActorRdfUpdateQuads extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfUpdateQuadsArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfUpdateQuads extends IAction {\n /**\n * An optional stream of quads to insert.\n */\n quadStreamInsert?: AsyncIterator;\n /**\n * An optional stream of quads to delete.\n */\n quadStreamDelete?: AsyncIterator;\n /**\n * An optional deletion of graphs.\n */\n deleteGraphs?: {\n /**\n * The graph(s) in which all triples must be removed.\n */\n graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n /**\n * If true, and the graph does not exist, an error must be emitted.\n *\n * Should only be considered on destinations that record empty graphs.\n */\n requireExistence: boolean;\n /**\n * If the graph itself should also be dropped.\n * Should not happen on the 'DEFAULT' graph.\n *\n * Should only be considered on destinations that record empty graphs.\n */\n dropGraphs: boolean;\n };\n /**\n * An optional creation of (empty) graphs.\n */\n createGraphs?: {\n /**\n * The graph names to create.\n */\n graphs: RDF.NamedNode[];\n /**\n * If true, an error MUST be thrown when the graph already exists.\n *\n * For destinations that do not record empty graphs,\n * this should only throw if at least one quad with the given quad already exists.\n */\n requireNonExistence: boolean;\n };\n}\n\nexport interface IActorRdfUpdateQuadsOutput extends IActorOutput {\n /**\n * Async function that resolves when the update operation is done.\n */\n execute: () => Promise;\n}\n\nexport type IActorRdfUpdateQuadsArgs = IActorArgs;\n\nexport type MediatorRdfUpdateQuads = Mediate;\n","import { deskolemizeQuad } from '@comunica/actor-context-preprocess-query-source-skolemize';\nimport { KeysQuerySourceIdentify, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { IActionRdfUpdateQuads, IActorRdfUpdateQuadsOutput } from './ActorRdfUpdateQuads';\nimport { ActorRdfUpdateQuads } from './ActorRdfUpdateQuads';\nimport type { IQuadDestination } from './IQuadDestination';\n\nexport function deskolemizeStream(stream: AsyncIterator | undefined, id: string):\nAsyncIterator | undefined {\n return stream?.map(quad => deskolemizeQuad(quad, id));\n}\n\nexport function deskolemize(action: IActionRdfUpdateQuads): IActionRdfUpdateQuads {\n const destination = action.context.get(KeysRdfUpdateQuads.destination);\n const id = action.context.get>(KeysQuerySourceIdentify.sourceIds)?.get(destination);\n if (!id) {\n return action;\n }\n return {\n ...action,\n quadStreamInsert: deskolemizeStream(action.quadStreamInsert, id),\n quadStreamDelete: deskolemizeStream(action.quadStreamDelete, id),\n };\n}\n\n/**\n * A base implementation for rdf-update-quads events\n * that wraps around an {@link IQuadDestination}.\n *\n * @see IQuadDestination\n */\nexport abstract class ActorRdfUpdateQuadsDestination extends ActorRdfUpdateQuads {\n public async test(_action: IActionRdfUpdateQuads): Promise {\n return true;\n }\n\n public async run(action: IActionRdfUpdateQuads): Promise {\n const destination = await this.getDestination(action.context);\n return await this.getOutput(destination, deskolemize(action));\n }\n\n /**\n * Get the output of the given action on a destination.\n * @param {IQuadDestination} destination A quad destination, possibly lazy.\n * @param {IActionRdfUpdateQuads} action The action.\n */\n protected async getOutput(\n destination: IQuadDestination,\n action: IActionRdfUpdateQuads,\n ): Promise {\n const execute = async(): Promise => {\n await (action.quadStreamDelete ? destination.delete(action.quadStreamDelete) : Promise.resolve());\n await (action.deleteGraphs ?\n destination.deleteGraphs(\n action.deleteGraphs.graphs,\n action.deleteGraphs.requireExistence,\n action.deleteGraphs.dropGraphs,\n ) :\n Promise.resolve());\n await (action.createGraphs ?\n destination.createGraphs(action.createGraphs.graphs, action.createGraphs.requireNonExistence) :\n Promise.resolve());\n await (action.quadStreamInsert ? destination.insert(action.quadStreamInsert) : Promise.resolve());\n };\n return { execute };\n }\n\n /**\n * Get a destination instance for the given context.\n * @param {ActionContext} context Optional context data.\n * @return {Promise} A promise that resolves to a destination.\n */\n protected abstract getDestination(context: IActionContext): Promise;\n}\n","import { ActionContextKey, CONTEXT_KEY_LOGGER } from '@comunica/core';\nimport type {\n Bindings,\n IPhysicalQueryPlanLogger,\n QueryExplainMode,\n IProxyHandler,\n ICliArgsHandler,\n IDataDestination,\n MetadataBindings,\n FunctionArgumentsCache,\n IAggregatedStore,\n QuerySourceUnidentified,\n IQuerySourceWrapper,\n QuerySourceReference,\n IStatisticBase,\n IDiscoverEventData,\n ILink,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { IDocumentLoader } from 'jsonld-context-parser';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * When adding entries to this file, also add a shortcut for them in the contextKeyShortcuts TSDoc comment in\n * ActorInitQueryBase in @comunica/actor-init-query if it makes sense to use this entry externally.\n * Also, add this shortcut to IQueryContextCommon in @comunica/types.\n */\n\nexport const KeysCore = {\n // We create the core context keys in @comunica/core to avoid a cyclic dependency\n /**\n * A logger instance.\n */\n log: CONTEXT_KEY_LOGGER,\n};\n\nexport const KeysHttp = {\n /**\n * Include credentials flags.\n */\n includeCredentials: new ActionContextKey('@comunica/bus-http:include-credentials'),\n /**\n * Authentication for a source as a \"username:password\"-pair.\n */\n auth: new ActionContextKey('@comunica/bus-http:auth'),\n /**\n * Fetch function implementation.\n */\n fetch: new ActionContextKey('@comunica/bus-http:fetch'),\n /**\n * HTTP request timeout in milliseconds.\n */\n httpTimeout: new ActionContextKey('@comunica/bus-http:http-timeout'),\n /**\n * Makes the HTTP timeout not only apply until the response starts streaming in\n * but until the response is fully consumed.\n */\n httpBodyTimeout: new ActionContextKey('@comunica/bus-http:http-body-timeout'),\n /**\n * Number of retries to make on failed network calls. This only takes effect\n * on errors thrown during the initial fetch() call and not while streaming the body.\n */\n httpRetryCount: new ActionContextKey('@comunica/bus-http:http-retry-count'),\n /**\n * Delay in milliseconds to wait between fetch retries. Requires httpRetryCount to be set.\n */\n httpRetryDelay: new ActionContextKey('@comunica/bus-http:http-retry-delay'),\n /**\n * Retry fetch, if server replies with a 5xx error response. Requires httpRetryCount to be set.\n */\n httpRetryOnServerError: new ActionContextKey('@comunica/bus-http:http-retry-on-server-error'),\n};\n\nexport const KeysHttpWayback = {\n /**\n * Use the WayBack machine to get the most recent representation of a file if a link is broken.\n * @default false\n */\n recoverBrokenLinks: new ActionContextKey('@comunica/bus-http:recover-broken-links'),\n};\n\nexport const KeysHttpMemento = {\n /**\n * The desired datetime for Memento datetime-negotiation.\n */\n datetime: new ActionContextKey('@comunica/actor-http-memento:datetime'),\n};\n\nexport const KeysHttpProxy = {\n /**\n * Interface.\n */\n httpProxyHandler: new ActionContextKey('@comunica/actor-http-proxy:httpProxyHandler'),\n};\n\nexport const KeysInitQuery = {\n /**\n * The unidentified sources to query over.\n */\n querySourcesUnidentified: new ActionContextKey(\n '@comunica/actor-init-query:querySourcesUnidentified',\n ),\n /**\n * Variables that have to be pre-bound to values in the query.\n */\n initialBindings: new ActionContextKey('@comunica/actor-init-query:initialBindings'),\n /**\n * The provided query's format.\n * Defaults to { language: 'sparql', version: '1.1' }\n */\n queryFormat: new ActionContextKey('@comunica/actor-init-query:queryFormat'),\n /**\n * Which GraphQL bindings should be singularized.\n */\n graphqlSingularizeVariables: new ActionContextKey('@comunica/actor-init-query:singularizeVariables'),\n /**\n * If HTTP and parsing failures are ignored.\n */\n lenient: new ActionContextKey('@comunica/actor-init-query:lenient'),\n /**\n * The original query string.\n */\n queryString: new ActionContextKey('@comunica/actor-init-query:queryString'),\n /**\n * The original parsed query.\n */\n query: new ActionContextKey('@comunica/actor-init-query:query'),\n /**\n * The query's base IRI.\n */\n baseIRI: new ActionContextKey('@comunica/actor-init-query:baseIRI'),\n /**\n * Object to cache function argument overload resolutions.\n * Defaults to an object that is reused across query executions.\n */\n functionArgumentsCache: new ActionContextKey(\n '@comunica/actor-init-query:functionArgumentsCache',\n ),\n /**\n * A timestamp representing the current time.\n * This is required for certain SPARQL operations such as NOW().\n */\n queryTimestamp: new ActionContextKey('@comunica/actor-init-query:queryTimestamp'),\n /**\n * @range {functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined}\n * Extension function creator for a given function IRI.\n * Returned value should be an async function implementation.\n * Undefined may be returned if no implementation exists for the given function IRI.\n *\n * The dictionary-based extensionFunctions context entry may be used instead, but not simultaneously.\n */\n extensionFunctionCreator: new ActionContextKey<\n (functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined\n >('@comunica/actor-init-query:extensionFunctionCreator'),\n /**\n * Dictionary of extension functions.\n * Key is the IRI of the function, and value is the async function implementation.\n *\n * The callback-based extensionFunctionCreator context entry may be used instead, but not simultaneously.\n */\n extensionFunctions: new ActionContextKey<\n Record Promise>\n >('@comunica/actor-init-query:extensionFunctions'),\n /**\n * Enables manipulation of the CLI arguments and their processing.\n */\n cliArgsHandlers: new ActionContextKey('@comunica/actor-init-query:cliArgsHandlers'),\n /**\n * Explain mode of the query. Can be 'parsed', 'logical', 'physical', or 'physical-json'.\n */\n explain: new ActionContextKey('@comunica/actor-init-query:explain'),\n /**\n * Logs the used physical operators\n */\n physicalQueryPlanLogger: new ActionContextKey(\n '@comunica/actor-init-query:physicalQueryPlanLogger',\n ),\n /**\n * The current physical operator within the query plan.\n * This is used to pass parent-child relationships for invoking the query plan logger.\n */\n physicalQueryPlanNode: new ActionContextKey('@comunica/actor-init-query:physicalQueryPlanNode'),\n /**\n * A JSON-LD context\n */\n jsonLdContext: new ActionContextKey('@context'),\n /**\n * A boolean value denoting whether caching is disabled or not.\n */\n noCache: new ActionContextKey('@comunica/actor-init-query:noCache'),\n /**\n * A boolean value denoting whether results should be deduplicated or not.\n */\n distinctConstruct: new ActionContextKey('@comunica/actor-init-query:distinctConstruct'),\n};\n\nexport const KeysQueryOperation = {\n /**\n * Context entry for the current query operation.\n */\n operation: new ActionContextKey('@comunica/bus-query-operation:operation'),\n /**\n * @type {any} The metadata from the left streams within a join operation.\n */\n joinLeftMetadata: new ActionContextKey('@comunica/bus-query-operation:joinLeftMetadata'),\n /**\n * An array of metadata from the right streams within a join operation.\n */\n joinRightMetadatas: new ActionContextKey('@comunica/bus-query-operation:joinRightMetadatas'),\n /**\n * Indicates the bindings that were used to bind the operation.\n */\n joinBindings: new ActionContextKey('@comunica/bus-query-operation:joinBindings'),\n /**\n * Flag for indicating that only read operations are allowed, defaults to false.\n */\n readOnly: new ActionContextKey('@comunica/bus-query-operation:readOnly'),\n /**\n * An internal context entry to mark that a property path with arbitrary length and a distinct key is being processed.\n */\n isPathArbitraryLengthDistinctKey: new ActionContextKey(\n '@comunica/bus-query-operation:isPathArbitraryLengthDistinct',\n ),\n /**\n * An indicator that the stream will be limited to the given number of elements afterwards.\n */\n limitIndicator: new ActionContextKey('@comunica/bus-query-operation:limitIndicator'),\n /**\n * If the default graph should also contain the union of all named graphs.\n */\n unionDefaultGraph: new ActionContextKey('@comunica/bus-query-operation:unionDefaultGraph'),\n /**\n * The sources to query over.\n */\n querySources: new ActionContextKey('@comunica/bus-query-operation:querySources'),\n};\n\nexport const KeysRdfParseJsonLd = {\n /**\n * @range {IDocumentLoader}\n */\n documentLoader: new ActionContextKey('@comunica/actor-rdf-parse-jsonld:documentLoader'),\n /**\n * @range {boolean}\n */\n strictValues: new ActionContextKey('@comunica/actor-rdf-parse-jsonld:strictValues'),\n /**\n * @range {Record}\n */\n parserOptions: new ActionContextKey>('@comunica/actor-rdf-parse-jsonld:parserOptions'),\n};\n\nexport const KeysRdfParseHtmlScript = {\n /**\n * An internal context flag to determine if the engine is already processing an HTML script tag.\n */\n processingHtmlScript: new ActionContextKey('@comunica/actor-rdf-parse-html-script:processingHtmlScript'),\n /**\n * If all HTML script tags must be considered.\n */\n extractAllScripts: new ActionContextKey('extractAllScripts'),\n};\n\nexport const KeysQuerySourceIdentify = {\n /**\n * A map containing unique IDs for each source\n */\n sourceIds: new ActionContextKey>(\n '@comunica/bus-query-source-identify:sourceIds',\n ),\n /**\n * Hypermedia sources mapping to their aggregated store.\n */\n hypermediaSourcesAggregatedStores: new ActionContextKey>(\n '@comunica/bus-query-source-identify:hypermediaSourcesAggregatedStores',\n ),\n /**\n * If links may be traversed from this source.\n * This means that sources annotated with this flag are considered incomplete until all links have been traversed.\n */\n traverse: new ActionContextKey('@comunica/bus-query-source-identify:traverse'),\n};\n\nexport const KeysRdfUpdateQuads = {\n /**\n * A data destination.\n */\n destination: new ActionContextKey('@comunica/bus-rdf-update-quads:destination'),\n};\n\nexport const KeysMergeBindingsContext = {\n /**\n * The data sources required to produce the binding\n */\n sourcesBinding: new ActionContextKey('@comunica/bus-merge-bindings-context:sourcesBinding'),\n};\n\nexport const KeysRdfJoin = {\n /**\n * The last physical join actor that was executed.\n */\n lastPhysicalJoin: new ActionContextKey('@comunica/bus-rdf-join:lastPhysicalJoin'),\n};\n\nexport const KeysStatistics = {\n /**\n * All discovered links during query execution. Not all of them will necessarily be dereferenced.\n */\n discoveredLinks: new ActionContextKey>(\n '@comunica/bus-context-preprocess:discoveredLinks',\n ),\n /**\n * Information about what links are dereferenced and when\n */\n dereferencedLinks: new ActionContextKey>(\n '@comunica/bus-context-preprocess:dereferencedLinks',\n ),\n};\n","import type { IActionContext, IActionContextKey } from '@comunica/types';\nimport { Map } from 'immutable';\n\n/**\n * Implementation of {@link IActionContext} using Immutable.js.\n */\nexport class ActionContext implements IActionContext {\n private readonly map: Map;\n\n public constructor(data: Record = {}) {\n this.map = Map(data);\n }\n\n /**\n * Will only set the value if the key is not already set.\n */\n public setDefault(key: IActionContextKey, value: V): IActionContext {\n return this.has(key) ? this : this.set(key, value);\n }\n\n public set(key: IActionContextKey, value: V): IActionContext {\n return this.setRaw(key.name, value);\n }\n\n public setRaw(key: string, value: any): IActionContext {\n return new ActionContext(this.map.set(key, value));\n }\n\n public delete(key: IActionContextKey): IActionContext {\n return new ActionContext(this.map.delete(key.name));\n }\n\n public get(key: IActionContextKey): V | undefined {\n return this.getRaw(key.name);\n }\n\n public getRaw(key: string): any | undefined {\n return this.map.get(key);\n }\n\n public getSafe(key: IActionContextKey): V {\n if (!this.has(key)) {\n throw new Error(`Context entry ${key.name} is required but not available`);\n }\n return this.get(key);\n }\n\n public has(key: IActionContextKey): boolean {\n return this.hasRaw(key.name);\n }\n\n public hasRaw(key: string): boolean {\n return this.map.has(key);\n }\n\n public merge(...contexts: IActionContext[]): IActionContext {\n // eslint-disable-next-line ts/no-this-alias\n let context: IActionContext = this;\n for (const source of contexts) {\n for (const key of source.keys()) {\n context = context.set(key, source.get(key));\n }\n }\n return context;\n }\n\n public keys(): IActionContextKey[] {\n return [ ... this.map.keys() ]\n .map(keyName => new ActionContextKey(keyName));\n }\n\n public toJS(): any {\n return this.map.toJS();\n }\n\n public toString(): string {\n return `ActionContext(${JSON.stringify(this.map.toJS())})`;\n }\n\n public [Symbol.for('nodejs.util.inspect.custom')](): string {\n return `ActionContext(${JSON.stringify(this.map.toJS(), null, ' ')})`;\n }\n\n /**\n * Convert the given object to an action context object if it is not an action context object yet.\n * If it already is an action context object, return the object as-is.\n * @param maybeActionContext An action context or record.\n * @return {ActionContext} An action context object.\n */\n public static ensureActionContext(maybeActionContext?: IActionContext | Record): IActionContext {\n return maybeActionContext instanceof ActionContext ?\n maybeActionContext :\n new ActionContext(Map(maybeActionContext ?? {}));\n }\n}\n\n/**\n * Simple implementation of {@link IActionContextKey}.\n */\nexport class ActionContextKey implements IActionContextKey {\n /**\n * A unique context key name.\n */\n public readonly name: string;\n\n public constructor(name: string) {\n this.name = name;\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { Bus } from './Bus';\n\n/**\n * An ActionObserver can passively listen to {@link Actor#run} inputs and outputs for all actors on a certain bus.\n *\n * ActionObserver should not edit inputs and outputs,\n * they should be considered immutable.\n *\n * @see Actor\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class ActionObserver {\n public readonly name: string;\n public readonly bus: Bus, I, IActorTest, O>;\n\n /**\n * All enumerable properties from the `args` object are inherited to this observer.\n *\n * The observer will NOT automatically subscribe to the given bus when this constructor is called.\n *\n * @param {IActionObserverArgs} args Arguments object\n * @throws When required arguments are missing.\n */\n protected constructor(args: IActionObserverArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n public abstract onRun(actor: Actor, action: I, output: Promise): void;\n}\n\nexport interface IActionObserverArgs {\n\n /**\n * The name for this observer.\n * @default {}\n */\n name: string;\n\n /**\n * The bus this observer can subscribe to.\n */\n bus: Bus, I, IActorTest, O>;\n}\n","import type { IActionContext, Logger } from '@comunica/types';\nimport type { Bus } from './Bus';\nimport { CONTEXT_KEY_LOGGER } from './ContextEntries';\n\n/**\n * An actor can act on messages of certain types and provide output of a certain type.\n *\n * The flow of an actor is as follows:\n * 1. Send a message to {@link Actor#test} to test if an actor can run that action.\n * 2. If the actor can reply to the message, let the actor run the action using {@link Actor#run}.\n *\n * An actor is typically subscribed to a bus,\n * using which the applicability to an action can be tested.\n *\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class Actor implements\n IActorArgs {\n public readonly name: string;\n public readonly bus: Bus, I, T, O>;\n public readonly beforeActors: Actor[] = [];\n\n /**\n * All enumerable properties from the `args` object are inherited to this actor.\n *\n * The actor will subscribe to the given bus when this constructor is called.\n *\n * @param {IActorArgs} args Arguments object\n * @param {string} args.name The name for this actor.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this actor subscribes to.\n * @throws When required arguments are missing.\n */\n protected constructor(args: IActorArgs) {\n Object.assign(this, args);\n this.bus.subscribe(this);\n if (this.beforeActors.length > 0) {\n this.bus.addDependencies(this, this.beforeActors);\n }\n }\n\n /**\n * Get the logger from the given context.\n * @param {ActionContext} context An optional context.\n * @return {Logger} The logger or undefined.\n */\n public static getContextLogger(context: IActionContext): Logger | undefined {\n return context.get(CONTEXT_KEY_LOGGER);\n }\n\n /**\n * Check if this actor can run the given action,\n * without actually running it.\n *\n * @param {I} action The action to test.\n * @return {Promise} A promise that resolves to the test result.\n */\n public abstract test(action: I): Promise;\n\n /**\n * Run the given action on this actor.\n *\n * In most cases, this method should not be called directly.\n * Instead, {@link #runObservable} should be called.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n public abstract run(action: I): Promise;\n\n /**\n * Run the given action on this actor\n * AND invokes the {@link Bus#onRun} method.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n public runObservable(action: I): Promise {\n const output: Promise = this.run(action);\n this.bus.onRun(this, action, output);\n return output;\n }\n\n /**\n * Initialize this actor.\n * This should be used for doing things that take a while,\n * such as opening files.\n *\n * @return {Promise} A promise that resolves when the actor has been initialized.\n */\n public async initialize(): Promise {\n return true;\n }\n\n /**\n * Deinitialize this actor.\n * This should be used for cleaning up things when the application is shut down,\n * such as closing files and removing temporary files.\n *\n * @return {Promise} A promise that resolves when the actor has been deinitialized.\n */\n public async deinitialize(): Promise {\n return true;\n }\n\n /* Proxy methods for the (optional) logger that is defined in the context */\n\n protected getDefaultLogData(context: IActionContext, data?: (() => any)): any {\n const dataActual = data ? data() : {};\n dataActual.actor = this.name;\n return dataActual;\n }\n\n protected logTrace(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.trace(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logDebug(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.debug(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logInfo(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.info(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logWarn(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.warn(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logError(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.error(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logFatal(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.fatal(message, this.getDefaultLogData(context, data));\n }\n }\n}\n\nexport interface IActorArgs {\n /**\n * The name for this actor.\n * @default {}\n */\n name: string;\n /**\n * The bus this actor subscribes to.\n */\n bus: Bus, I, T, O>;\n /**\n * Actor that must be registered in the bus before this actor.\n */\n beforeActors?: Actor[];\n}\n\n/**\n * Data interface for the type of action.\n */\nexport interface IAction {\n /**\n * The input context that is passed through by actors.\n */\n context: IActionContext;\n}\n\n/**\n * Data interface for the type of an actor test result.\n */\nexport interface IActorTest {\n\n}\n\n/**\n * Data interface for the type of an actor run result.\n */\nexport interface IActorOutput {\n\n}\n","import type { ActionObserver } from './ActionObserver';\nimport type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\n\n/**\n * A publish-subscribe bus for sending actions to actors\n * to test whether or not they can run an action.\n *\n * This bus does not run the action itself,\n * for that a {@link Mediator} can be used.\n *\n * @see Actor\n * @see Mediator\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport class Bus, I extends IAction, T extends IActorTest, O extends IActorOutput> implements\n IBusArgs {\n public readonly name: string;\n protected readonly actors: A[] = [];\n protected readonly observers: ActionObserver[] = [];\n // Mapping from dependency (after) to dependents (before)\n protected readonly dependencyLinks: Map = new Map();\n\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n public constructor(args: IBusArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Subscribe the given actor to the bus.\n * After this, the given actor can be unsubscribed from the bus by calling {@link Bus#unsubscribe}.\n *\n * An actor that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {A} actor The actor to subscribe.\n */\n public subscribe(actor: A): void {\n this.actors.push(actor);\n this.reorderForDependencies();\n }\n\n /**\n * Subscribe the given observer to the bus.\n * After this, the given observer can be unsubscribed from the bus by calling {@link Bus#unsubscribeObserver}.\n *\n * An observer that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {ActionObserver} observer The observer to subscribe.\n */\n public subscribeObserver(observer: ActionObserver): void {\n this.observers.push(observer);\n }\n\n /**\n * Unsubscribe the given actor from the bus.\n *\n * An actor that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {A} actor The actor to unsubscribe\n * @return {boolean} If the given actor was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n public unsubscribe(actor: A): boolean {\n const index: number = this.actors.indexOf(actor);\n if (index >= 0) {\n this.actors.splice(index, 1);\n return true;\n }\n return false;\n }\n\n /**\n * Unsubscribe the given observer from the bus.\n *\n * An observer that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {ActionObserver} observer The observer to unsubscribe.\n * @return {boolean} If the given observer was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n public unsubscribeObserver(observer: ActionObserver): boolean {\n const index: number = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n return true;\n }\n return false;\n }\n\n /**\n * Publish an action to all actors in the bus to test if they can run the action.\n *\n * @param {I} action An action to publish\n * @return {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]}\n * An array of reply objects. Each object contains a reference to the actor,\n * and a promise to its {@link Actor#test} result.\n */\n public publish(action: I): IActorReply[] {\n return this.actors.map((actor: A): IActorReply => ({ actor, reply: actor.test(action) }));\n }\n\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n public onRun(actor: Actor, action: I, output: Promise): void {\n for (const observer of this.observers) {\n observer.onRun(actor, action, output);\n }\n }\n\n /**\n * Indicate that the given actor has the given actor dependencies.\n *\n * This will ensure that the given actor will be present in the bus *before* the given dependencies.\n *\n * @param {A} dependent A dependent actor that will be placed before the given actors.\n * @param {A[]} dependencies Actor dependencies that will be placed after the given actor.\n */\n public addDependencies(dependent: A, dependencies: A[]): void {\n for (const dependency of dependencies) {\n let existingDependencies = this.dependencyLinks.get(dependency);\n if (!existingDependencies) {\n existingDependencies = [];\n this.dependencyLinks.set(dependency, existingDependencies);\n }\n existingDependencies.push(dependent);\n }\n this.reorderForDependencies();\n }\n\n /**\n * Reorder the bus based on all present dependencies.\n */\n public reorderForDependencies(): void {\n if (this.dependencyLinks.size > 0) {\n const actorsAfter = [];\n\n // Temporarily remove all actors that have dependencies\n for (const actorAfter of this.dependencyLinks.keys()) {\n const dependentPos = this.actors.indexOf(actorAfter);\n if (dependentPos >= 0) {\n this.actors.splice(dependentPos, 1);\n actorsAfter.push(actorAfter);\n }\n }\n\n // Iteratively append actors based on the first dependency link\n // that has all of its dependencies available in the array\n while (actorsAfter.length > 0) {\n // Find the first actor that has all of its dependencies available.\n let activeActorAfterId = -1;\n for (let i = 0; i < actorsAfter.length; i++) {\n let validLink = true;\n for (const dependency of this.dependencyLinks.get(actorsAfter[i])!) {\n if (!this.actors.includes(dependency) && actorsAfter.includes(dependency)) {\n validLink = false;\n break;\n }\n }\n if (validLink) {\n activeActorAfterId = i;\n break;\n }\n }\n\n // If none of the pending links are possible, there must be a cyclic dependency\n if (activeActorAfterId < 0) {\n throw new Error(`Cyclic dependency links detected in bus ${this.name}`);\n }\n\n // The dependent may not be available (yet), so we don't add it to the array (yet).\n const activeActorAfter = actorsAfter.splice(activeActorAfterId, 1)[0];\n this.actors.push(activeActorAfter);\n }\n }\n }\n}\n\nexport interface IBusArgs {\n /**\n * The name for this bus.\n * @default {}\n */\n name: string;\n}\n\n/**\n * Data interface for holding an actor and a promise to a reply from that actor.\n */\nexport interface IActorReply<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> {\n actor: A;\n reply: Promise;\n}\n\nexport type IReply<\n I extends IAction = IAction,\n O extends IActorOutput = IActorOutput,\n T extends IActorTest = IActorTest,\n> = IActorReply, I, T, O>;\n\nexport type IBus\n= Bus, I, T, O>;\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { IActorReply, IBusArgs } from './Bus';\nimport { Bus } from './Bus';\n\n/**\n * A bus that indexes identified actors,\n * so that actions with a corresponding identifier can be published more efficiently.\n *\n * Multiple actors with the same identifier can be subscribed.\n *\n * If actors or actions do not have a valid identifier,\n * then this will fallback to the normal bus behaviour.\n *\n * @see Bus\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport class BusIndexed, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Bus {\n protected readonly actorsIndex: Record = {};\n protected readonly actorIdentifierFields: string[];\n protected readonly actionIdentifierFields: string[];\n\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusIndexedArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n public constructor(args: IBusIndexedArgs) {\n super(args);\n }\n\n public override subscribe(actor: A): void {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n let actors = this.actorsIndex[actorId];\n if (!actors) {\n actors = this.actorsIndex[actorId] = [];\n }\n actors.push(actor);\n super.subscribe(actor);\n }\n\n public override unsubscribe(actor: A): boolean {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n const actors = this.actorsIndex[actorId];\n if (actors) {\n const i = actors.indexOf(actor);\n if (i >= 0) {\n actors.splice(i, 1);\n }\n if (actors.length === 0) {\n delete this.actorsIndex[actorId];\n }\n }\n return super.unsubscribe(actor);\n }\n\n public override publish(action: I): IActorReply[] {\n const actionId = this.getActionIdentifier(action);\n if (actionId) {\n const actors = [ ...this.actorsIndex[actionId] || [], ...this.actorsIndex._undefined_ || [] ];\n return actors.map((actor: A): IActorReply => ({ actor, reply: actor.test(action) }));\n }\n return super.publish(action);\n }\n\n protected getActorIdentifier(actor: A): string {\n return this.actorIdentifierFields.reduce((object: any, field): A => object[field], actor);\n }\n\n protected getActionIdentifier(action: I): string {\n return this.actionIdentifierFields.reduce((object: any, field): A => object[field], action);\n }\n}\n\nexport interface IBusIndexedArgs extends IBusArgs {\n actorIdentifierFields: string[];\n actionIdentifierFields: string[];\n}\n","import type { Logger } from '@comunica/types';\nimport { ActionContextKey } from './ActionContext';\n\nexport const CONTEXT_KEY_LOGGER = new ActionContextKey('@comunica/core:log');\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { Bus, IActorReply } from './Bus';\n\n/**\n * A mediator can mediate an action over a bus of actors.\n *\n * It does the following:\n * 1. Accepts an action in {@link Mediator#mediate}.\n * 2. Sends the action to the bus to test its applicability on all actors.\n * 3. It _mediates_ over these test results.\n * 4. It selects the _best_ actor.\n * 5. The action is run by the _best_ actor, and the result if returned.\n *\n * The _mediates_ and _best_ parts are filled in by subclasses of this abstract Mediator class.\n *\n * @template A The type of actor to mediator over.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class Mediator<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> implements IMediatorArgs {\n public readonly name: string;\n public readonly bus: Bus;\n\n /**\n * All enumerable properties from the `args` object are inherited to this mediator.\n *\n * @param {IMediatorArgs, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>} args Arguments object\n * @param {string} args.name The name for this mediator.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this mediator will mediate over.\n * @throws When required arguments are missing.\n */\n protected constructor(args: IMediatorArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Publish the given action in the bus.\n *\n * This will send the test action on all actors in the bus.\n * All actor replies will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {IActorReply, I extends IAction, T extends IActorTest, O extends IActorOutput>[]}\n * The list of actor replies.\n */\n public publish(action: I): IActorReply[] {\n // Test all actors in the bus\n const actors: IActorReply[] = this.bus.publish(action);\n if (actors.length === 0) {\n throw new Error(`No actors are able to reply to a message in the bus ${this.bus.name}`);\n }\n return actors;\n }\n\n /**\n * Mediate for the given action to get an actor.\n *\n * This will send the test action on all actors in the bus.\n * The actor that tests _best_ will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the _best_ actor.\n */\n public async mediateActor(action: I): Promise {\n // Mediate to one actor and run that actor.\n return await this.mediateWith(action, this.publish(action));\n }\n\n /**\n * Mediate for the given action.\n *\n * This will send the test action on all actors in the bus.\n * The action will be run on the actor that tests _best_,\n * of which the result will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the mediation result.\n */\n public async mediate(action: I): Promise {\n // Mediate to one actor and run the action on it\n const actor: A = await this.mediateActor(action);\n return actor.runObservable(action);\n }\n\n /**\n * Mediate for the given action with the given actor test results for the action.\n *\n * One actor must be returned that provided the _best_ test result.\n * How '_best_' is interpreted, depends on the implementation of the Mediator.\n *\n * @param {I} action The action to mediate for.\n * @param {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]} testResults The actor test results for the action.\n * @return {Promise>} A promise that resolves to the _best_ actor.\n */\n protected abstract mediateWith(action: I, testResults: IActorReply[]): Promise;\n}\n\nexport interface IMediatorArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> {\n /**\n * The name for this mediator.\n * @default {}\n */\n name: string;\n /**\n * The bus this mediator will mediate over.\n */\n bus: Bus;\n}\n\nexport type Mediate =\nMediator, I, T, O>;\n","import type * as RDF from '@rdfjs/types';\n\n/**\n * A blank node that is scoped to a set of bindings.\n */\nexport class BlankNodeBindingsScoped implements RDF.BlankNode {\n public readonly termType = 'BlankNode';\n public readonly singleBindingsScope = true;\n public readonly value: string;\n\n public constructor(value: string) {\n this.value = value;\n }\n\n public equals(other: RDF.Term | null | undefined): boolean {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\n","import type * as RDF from '@rdfjs/types';\n\n/**\n * A blank node that is scoped to a certain source.\n */\nexport class BlankNodeScoped implements RDF.BlankNode {\n public readonly termType = 'BlankNode';\n public readonly value: string;\n /**\n * This value can be obtained by consumers in query results,\n * so that this can be passed into another query as an IRI,\n * in order to obtain more results relating to this (blank) node.\n */\n public readonly skolemized: RDF.NamedNode;\n\n public constructor(value: string, skolemized: RDF.NamedNode) {\n this.value = value;\n this.skolemized = skolemized;\n }\n\n public equals(other: RDF.Term | null | undefined): boolean {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RdfString from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport type { ITermTransformer } from '../transformers/TermTransformer';\nimport { TypeAlias } from '../util/Consts';\nimport { isSubTypeOf } from '../util/TypeHandling';\nimport type { IAggregatorComponentClass } from '.';\n\nexport abstract class AggregatorComponent {\n public abstract put(bindings: RDF.Term | undefined): void;\n public abstract result(): RDF.Term | undefined;\n\n protected separator: string;\n protected termTransformer: ITermTransformer;\n\n public static emptyValue(): RDF.Term | undefined {\n return undefined;\n }\n\n public constructor(expr: Algebra.AggregateExpression, protected sharedContext: ICompleteSharedContext) {\n this.separator = expr.separator || ' ';\n this.termTransformer = new TermTransformer(sharedContext.superTypeProvider);\n }\n\n protected termToNumericOrError(term: RDF.Term): E.NumericLiteral {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a numeric literal`);\n } else if (\n !isSubTypeOf(term.datatype.value, TypeAlias.SPARQL_NUMERIC, this.sharedContext.superTypeProvider)\n ) {\n throw new Error(`Term datatype ${term.datatype.value} with value ${term.value} has type ${term.termType} and is not a numeric literal`);\n }\n return this.termTransformer.transformLiteral(term);\n }\n}\n\n/**\n * A base aggregator that can handle distinct and possibly wildcards.\n */\nexport class Aggregator {\n protected distinct: boolean;\n protected variableValues: Map> = new Map();\n\n public constructor(expr: Algebra.AggregateExpression, protected aggregatorComponent: AggregatorComponent) {\n this.distinct = expr.distinct;\n }\n\n public static emptyValue(component: IAggregatorComponentClass): RDF.Term | undefined {\n return component.emptyValue();\n }\n\n public result(): RDF.Term | undefined {\n return this.aggregatorComponent.result();\n }\n\n public put(bindings: RDF.Term, variable = ''): void {\n if (!this.canSkip(bindings, variable)) {\n this.aggregatorComponent.put(bindings);\n this.addSeen(bindings, variable);\n }\n }\n\n private canSkip(term: RDF.Term, variable: string): boolean {\n const set = this.variableValues.get(variable);\n return this.distinct && set !== undefined && set.has(RdfString.termToString(term));\n }\n\n private addSeen(term: RDF.Term, variable: string): void {\n if (this.distinct) {\n if (!this.variableValues.has(variable)) {\n this.variableValues.set(variable, new Set());\n }\n this.variableValues.get(variable)!.add(RdfString.termToString(term));\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { integer } from '../functions/Helpers';\nimport * as C from '../util/Consts';\nimport { AggregatorComponent } from './Aggregator';\n\ninterface IAverageState {\n sum: E.NumericLiteral;\n count: number;\n}\n\nexport class Average extends AggregatorComponent {\n private readonly summer = regularFunctions[C.RegularOperator.ADDITION];\n private readonly divider = regularFunctions[C.RegularOperator.DIVISION];\n private state: IAverageState | undefined = undefined;\n\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n const sum = this.termToNumericOrError(term);\n this.state = { sum, count: 1 };\n } else {\n const internalTerm = this.termToNumericOrError(term);\n this.state.sum = this.summer.apply([ this.state.sum, internalTerm ], this.sharedContext);\n this.state.count++;\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Average.emptyValue();\n }\n const count = new E.IntegerLiteral(this.state.count);\n const result = this.divider.apply([ this.state.sum, count ], this.sharedContext);\n return result.toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { integer } from '../functions/Helpers';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Count extends AggregatorComponent {\n private state: number | undefined = undefined;\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(): void {\n if (this.state === undefined) {\n this.state = 0;\n }\n this.state++;\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Count.emptyValue();\n }\n return integer(this.state).toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { langString, string } from '../functions/Helpers';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class GroupConcat extends AggregatorComponent {\n private state: string | undefined = undefined;\n private lastLanguageValid = true;\n private lastLanguage: string | undefined = undefined;\n\n public static override emptyValue(): RDF.Term {\n return string('').toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n this.state = term.value;\n if (term.termType === 'Literal') {\n this.lastLanguage = term.language;\n }\n } else {\n this.state += this.separator + term.value;\n if (this.lastLanguageValid && term.termType === 'Literal' && this.lastLanguage !== term.language) {\n this.lastLanguageValid = false;\n this.lastLanguage = undefined;\n }\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return GroupConcat.emptyValue();\n }\n if (this.lastLanguageValid && this.lastLanguage) {\n return langString(this.state, this.lastLanguage).toRDF();\n }\n return string(this.state).toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { orderTypes } from '../util/Ordering';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Max extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a literal`);\n }\n if (this.state === undefined) {\n this.state = term;\n } else if (orderTypes(this.state, term) === -1) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Max.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { orderTypes } from '../util/Ordering';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Min extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a literal`);\n }\n if (this.state === undefined) {\n this.state = term;\n } else if (orderTypes(this.state, term) === 1) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Min.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Sample extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n // First value is our sample\n if (this.state === undefined) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Sample.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { integer } from '../functions/Helpers';\nimport * as C from '../util/Consts';\nimport { AggregatorComponent } from './Aggregator';\n\ntype SumState = E.NumericLiteral;\n\nexport class Sum extends AggregatorComponent {\n private state: SumState | undefined = undefined;\n private readonly summer = regularFunctions[C.RegularOperator.ADDITION];\n\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n this.state = this.termToNumericOrError(term);\n } else {\n const internalTerm = this.termToNumericOrError(term);\n this.state = this.summer.apply([ this.state, internalTerm ], this.sharedContext);\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Sum.emptyValue();\n }\n return this.state.toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RdfString from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { integer } from '../functions/Helpers';\n\n/**\n * Implementation of the COUNT aggregator on a wildcard.\n * We choose to make this is separate class, because it would pollute the code of the other aggregators.\n */\nexport class WildcardCountAggregator {\n private readonly distinct: boolean;\n\n // Key: string representation of a ',' separated list of terms.\n // Value: string representation of a ',' separated list of variables sorted by name.\n private readonly bindingValues: Map> = new Map();\n private counter = 0;\n\n public constructor(expr: Algebra.AggregateExpression) {\n this.distinct = expr.distinct;\n }\n\n public putBindings(bindings: RDF.Bindings): void {\n if (!this.handleDistinct(bindings)) {\n this.counter += 1;\n }\n }\n\n public static emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public result(): RDF.Term {\n return integer(this.counter).toRDF();\n }\n\n /**\n * Returns true if the given bindings should be skipped.\n * @param bindings\n * @private\n */\n private handleDistinct(bindings: RDF.Bindings): boolean {\n if (this.distinct) {\n const bindingList: [RDF.Variable, RDF.Term][] = [ ...bindings ];\n bindingList.sort((first, snd) => first[0].value.localeCompare(snd[0].value));\n const variables = bindingList.map(([ variable ]) => variable.value).join(',');\n const terms = bindingList.map(([ , term ]) => RdfString.termToString(term)).join(',');\n\n const set = this.bindingValues.get(variables);\n const result = set !== undefined && set.has(terms);\n\n // Add to the set:\n if (!set) {\n this.bindingValues.set(variables, new Set());\n }\n this.bindingValues.get(variables)!.add(terms);\n\n return result;\n }\n return false;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { BaseAggregateEvaluator } from './evaluatorHelpers/BaseAggregateEvaluator';\nimport type { ISyncEvaluatorContext } from './SyncEvaluator';\nimport { SyncEvaluator } from './SyncEvaluator';\n\n// TODO: Support hooks & change name to SyncAggregateEvaluator\nexport class AggregateEvaluator extends BaseAggregateEvaluator {\n private readonly evaluator: SyncEvaluator;\n\n public constructor(expr: Algebra.AggregateExpression, context?: ISyncEvaluatorContext, throwError?: boolean) {\n super(expr, SyncEvaluator.completeContext(context ?? {}), throwError);\n this.evaluator = new SyncEvaluator(expr.expression, context);\n }\n\n public put(bindings: RDF.Bindings): void {\n if (this.errorOccurred) {\n return;\n }\n if (this.isWildcard) {\n this.wildcardAggregator!.putBindings(bindings);\n } else {\n try {\n const startTerm = this.evaluator.evaluate(bindings);\n this.aggregator.put(startTerm);\n } catch (error: unknown) {\n this.safeThrow(error);\n }\n }\n }\n\n protected safeThrow(err: unknown): void {\n if (this.throwError) {\n throw err;\n } else {\n this.errorOccurred = true;\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { IAsyncEvaluatorContext } from './AsyncEvaluator';\nimport { AsyncEvaluator } from './AsyncEvaluator';\nimport { BaseAggregateEvaluator } from './evaluatorHelpers/BaseAggregateEvaluator';\n\nexport class AsyncAggregateEvaluator extends BaseAggregateEvaluator {\n private readonly evaluator: AsyncEvaluator;\n\n public constructor(expr: Algebra.AggregateExpression, context?: IAsyncEvaluatorContext, throwError?: boolean) {\n super(expr, AsyncEvaluator.completeContext(context ?? {}), throwError);\n this.evaluator = new AsyncEvaluator(expr.expression, context);\n this.errorOccurred = false;\n }\n\n public async put(bindings: RDF.Bindings): Promise {\n if (this.errorOccurred) {\n return;\n }\n if (this.isWildcard) {\n this.wildcardAggregator!.putBindings(bindings);\n } else {\n try {\n const startTerm = await this.evaluator.evaluate(bindings);\n if (!startTerm || this.errorOccurred) {\n return;\n }\n this.aggregator.put(startTerm);\n } catch (error: unknown) {\n this.safeThrow(error);\n }\n }\n }\n\n protected safeThrow(err: unknown): void {\n if (this.throwError) {\n throw err;\n } else {\n this.errorOccurred = true;\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport type * as E from '../expressions/Expressions';\nimport { AlgebraTransformer } from '../transformers/AlgebraTransformer';\nimport type { IExpressionEvaluator } from '../Types';\nimport { extractTimeZone } from '../util/DateTimeHelpers';\nimport type { ICompleteAsyncEvaluatorContext } from './evaluatorHelpers/AsyncRecursiveEvaluator';\nimport { AsyncRecursiveEvaluator } from './evaluatorHelpers/AsyncRecursiveEvaluator';\nimport type { ISharedContext } from './evaluatorHelpers/BaseExpressionEvaluator';\n\nexport type AsyncExtensionFunction = (args: RDF.Term[]) => Promise;\nexport type AsyncExtensionFunctionCreator = (functionNamedNode: RDF.NamedNode) => AsyncExtensionFunction | undefined;\n\nexport interface IAsyncEvaluatorContext extends ISharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => Promise;\n aggregate?: (expression: Alg.AggregateExpression) => Promise;\n bnode?: (input?: string) => Promise;\n extensionFunctionCreator?: AsyncExtensionFunctionCreator;\n}\n\nexport class AsyncEvaluator {\n private readonly expr: E.Expression;\n private readonly evaluator: IExpressionEvaluator>;\n\n public static completeContext(context: IAsyncEvaluatorContext): ICompleteAsyncEvaluatorContext {\n const now = context.now ?? new Date(Date.now());\n return {\n now,\n baseIRI: context.baseIRI ?? undefined,\n functionArgumentsCache: context.functionArgumentsCache ?? {},\n superTypeProvider: {\n cache: context.typeCache ?? new LRUCache({ max: 1_000 }),\n discoverer: context.getSuperType ?? (() => 'term'),\n },\n extensionFunctionCreator: context.extensionFunctionCreator,\n exists: context.exists,\n aggregate: context.aggregate,\n bnode: context.bnode,\n defaultTimeZone: context.defaultTimeZone ?? extractTimeZone(now),\n };\n }\n\n public constructor(public algExpr: Alg.Expression, context: IAsyncEvaluatorContext = {}) {\n // eslint-disable-next-line unicorn/no-useless-undefined\n const creator = context.extensionFunctionCreator ?? (() => undefined);\n const baseContext = AsyncEvaluator.completeContext(context);\n\n const transformer = new AlgebraTransformer({\n type: 'async',\n creator,\n ...baseContext,\n });\n this.expr = transformer.transformAlgebra(algExpr);\n\n this.evaluator = new AsyncRecursiveEvaluator(baseContext, transformer);\n }\n\n public async evaluate(mapping: RDF.Bindings): Promise {\n const result = await this.evaluator.evaluate(this.expr, mapping);\n return result.toRDF();\n }\n\n public async evaluateAsEBV(mapping: RDF.Bindings): Promise {\n const result = await this.evaluator.evaluate(this.expr, mapping);\n return result.coerceEBV();\n }\n\n public async evaluateAsInternal(mapping: RDF.Bindings): Promise {\n return await this.evaluator.evaluate(this.expr, mapping);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport type * as E from '../expressions/Expressions';\nimport { AlgebraTransformer } from '../transformers/AlgebraTransformer';\nimport type { IExpressionEvaluator } from '../Types';\nimport { extractTimeZone } from '../util/DateTimeHelpers';\nimport type { ISharedContext } from './evaluatorHelpers/BaseExpressionEvaluator';\nimport type { ICompleteSyncEvaluatorContext } from './evaluatorHelpers/SyncRecursiveEvaluator';\nimport { SyncRecursiveEvaluator } from './evaluatorHelpers/SyncRecursiveEvaluator';\n\nexport interface ISyncEvaluatorContext extends ISharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => boolean;\n aggregate?: (expression: Alg.AggregateExpression) => RDF.Term;\n bnode?: (input?: string) => RDF.BlankNode;\n extensionFunctionCreator?: SyncExtensionFunctionCreator;\n}\n\nexport type SyncExtensionFunction = (args: RDF.Term[]) => RDF.Term;\nexport type SyncExtensionFunctionCreator = (functionNamedNode: RDF.NamedNode) => SyncExtensionFunction | undefined;\n\nexport class SyncEvaluator {\n private readonly expr: E.Expression;\n private readonly evaluator: IExpressionEvaluator;\n\n public static completeContext(context: ISyncEvaluatorContext): ICompleteSyncEvaluatorContext {\n const now = context.now ?? new Date(Date.now());\n return {\n now,\n baseIRI: context.baseIRI ?? undefined,\n functionArgumentsCache: context.functionArgumentsCache ?? {},\n superTypeProvider: {\n cache: context.typeCache ?? new LRUCache({ max: 1_000 }),\n discoverer: context.getSuperType ?? (() => 'term'),\n },\n extensionFunctionCreator: context.extensionFunctionCreator,\n exists: context.exists,\n aggregate: context.aggregate,\n bnode: context.bnode,\n defaultTimeZone: context.defaultTimeZone ?? extractTimeZone(now),\n };\n }\n\n public constructor(public algExpr: Alg.Expression, public context: ISyncEvaluatorContext = {}) {\n // eslint-disable-next-line unicorn/no-useless-undefined\n const creator = context.extensionFunctionCreator ?? (() => undefined);\n const baseContext = SyncEvaluator.completeContext(context);\n\n const transformer = new AlgebraTransformer({\n type: 'sync',\n creator,\n ...baseContext,\n });\n this.expr = transformer.transformAlgebra(algExpr);\n\n this.evaluator = new SyncRecursiveEvaluator(baseContext, transformer);\n }\n\n public evaluate(mapping: RDF.Bindings): RDF.Term {\n const result = this.evaluator.evaluate(this.expr, mapping);\n return result.toRDF();\n }\n\n public evaluateAsEBV(mapping: RDF.Bindings): boolean {\n const result = this.evaluator.evaluate(this.expr, mapping);\n return result.coerceEBV();\n }\n\n public evaluateAsInternal(mapping: RDF.Bindings): E.TermExpression {\n return this.evaluator.evaluate(this.expr, mapping);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport * as E from '../../expressions';\nimport type { AsyncExtension } from '../../expressions';\nimport type { EvalContextAsync } from '../../functions';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport { TermTransformer } from '../../transformers/TermTransformer';\nimport type { IExpressionEvaluator } from '../../Types';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider } from '../../util/TypeHandling';\nimport type { AsyncExtensionFunctionCreator } from '../AsyncEvaluator';\nimport { BaseExpressionEvaluator } from './BaseExpressionEvaluator';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\n\nexport interface ICompleteAsyncEvaluatorContext extends ICompleteSharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => Promise;\n aggregate?: (expression: Alg.AggregateExpression) => Promise;\n bnode?: (input?: string) => Promise;\n extensionFunctionCreator?: AsyncExtensionFunctionCreator;\n}\n\nexport class AsyncRecursiveEvaluator extends BaseExpressionEvaluator\n implements IExpressionEvaluator> {\n protected openWorldType: ISuperTypeProvider;\n private readonly subEvaluators: Record\n Promise | E.Term> = {\n // Shared\n [E.ExpressionType.Term]: (expr, _mapping) => this.term( expr),\n [E.ExpressionType.Variable]: (expr, mapping) => this.variable( expr, mapping),\n\n // Sync\n [E.ExpressionType.Operator]: (expr, mapping) => this.evalOperator( expr, mapping),\n [E.ExpressionType.SpecialOperator]: (expr, mapping) => this\n .evalSpecialOperator( expr, mapping),\n [E.ExpressionType.Named]: (expr, mapping) => this.evalNamed( expr, mapping),\n [E.ExpressionType.Existence]: (expr, mapping) => this.evalExistence( expr, mapping),\n [E.ExpressionType.Aggregate]: (expr, _mapping) => this.evalAggregate( expr),\n [E.ExpressionType.AsyncExtension]: (expr, mapping) => this.evalAsyncExtension( expr, mapping),\n };\n\n public constructor(private readonly context: ICompleteAsyncEvaluatorContext, termTransformer?: ITermTransformer) {\n super(termTransformer ?? new TermTransformer(context.superTypeProvider));\n }\n\n public async evaluate(expr: E.Expression, mapping: RDF.Bindings): Promise {\n const evaluator = this.subEvaluators[expr.expressionType];\n if (!evaluator) {\n throw new Err.InvalidExpressionType(expr);\n }\n return evaluator.bind(this)(expr, mapping);\n }\n\n private async evalOperator(expr: E.Operator, mapping: RDF.Bindings): Promise {\n const argPromises = expr.args.map(arg => this.evaluate(arg, mapping));\n const argResults = await Promise.all(argPromises);\n return expr.apply(argResults);\n }\n\n private async evalSpecialOperator(expr: E.SpecialOperator, mapping: RDF.Bindings): Promise {\n const evaluate = this.evaluate.bind(this);\n const context: EvalContextAsync = {\n args: expr.args,\n mapping,\n\n superTypeProvider: this.context.superTypeProvider,\n now: this.context.now,\n baseIRI: this.context.baseIRI,\n functionArgumentsCache: this.context.functionArgumentsCache,\n\n evaluate,\n bnode: this.context.bnode,\n defaultTimeZone: this.context.defaultTimeZone,\n };\n return expr.applyAsync(context);\n }\n\n private async _evalAsyncArgs(args: E.Expression[], mapping: RDF.Bindings): Promise {\n const argPromises = args.map(arg => this.evaluate(arg, mapping));\n return await Promise.all(argPromises);\n }\n\n private async evalNamed(expr: E.Named, mapping: RDF.Bindings): Promise {\n return expr.apply(await this._evalAsyncArgs(expr.args, mapping));\n }\n\n private async evalAsyncExtension(expr: AsyncExtension, mapping: RDF.Bindings): Promise {\n return await expr.apply(await this._evalAsyncArgs(expr.args, mapping));\n }\n\n private async evalExistence(expr: E.Existence, mapping: RDF.Bindings): Promise {\n if (!this.context.exists) {\n throw new Err.NoExistenceHook();\n }\n\n return new E.BooleanLiteral(await this.context.exists(expr.expression, mapping));\n }\n\n // TODO: Remove?\n private async evalAggregate(expr: E.Aggregate): Promise {\n if (!this.context.aggregate) {\n throw new Err.NoAggregator();\n }\n\n return this.termTransformer.transformRDFTermUnsafe(await this.context.aggregate(expr.expression));\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { aggregators } from '../../aggregators';\nimport { Aggregator } from '../../aggregators/Aggregator';\nimport { WildcardCountAggregator } from '../../aggregators/WildcardCountAggregator';\nimport type { SetFunction } from '../../util/Consts';\nimport * as Err from '../../util/Errors';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\n\nexport abstract class BaseAggregateEvaluator {\n protected expression: Algebra.AggregateExpression;\n protected aggregator: Aggregator;\n protected throwError = false;\n protected isWildcard = false;\n protected wildcardAggregator: WildcardCountAggregator | undefined;\n protected errorOccurred = false;\n\n protected constructor(\n expr: Algebra.AggregateExpression,\n sharedContext: ICompleteSharedContext,\n throwError?: boolean,\n ) {\n this.expression = expr;\n this.aggregator = new Aggregator(expr, new aggregators[ expr.aggregator](expr, sharedContext));\n this.throwError = throwError ?? false;\n this.isWildcard = expr.expression.expressionType === Algebra.expressionTypes.WILDCARD;\n if (this.isWildcard) {\n this.wildcardAggregator = new WildcardCountAggregator(expr);\n }\n }\n\n /**\n * The spec says to throw an error when a set function is called on an empty\n * set (unless explicitly mentioned otherwise like COUNT).\n * However, aggregate error handling says to not bind the result in case of an\n * error. So to simplify logic in the caller, we return undefined by default.\n *\n * @param expr the aggregate expression\n * @param throwError whether this function should respect the spec and throw an error if no empty value is defined\n */\n public static emptyValue(expr: Algebra.AggregateExpression, throwError = false): RDF.Term | undefined {\n let val: RDF.Term | undefined;\n if (expr.expression.expressionType === Algebra.expressionTypes.WILDCARD) {\n val = WildcardCountAggregator.emptyValue();\n } else {\n val = Aggregator.emptyValue(aggregators[ expr.aggregator]);\n }\n if (val === undefined && throwError) {\n throw new Err.EmptyAggregateError();\n }\n return val;\n }\n\n public result(): RDF.Term | undefined {\n if (this.errorOccurred) {\n return undefined;\n }\n if (this.isWildcard) {\n return this.wildcardAggregator!.result();\n }\n return this.aggregator.result();\n }\n\n /**\n * Put a binding from the result stream in the aggregate state.\n *\n * If any binding evaluation errors, the corresponding aggregate variable should be unbound.\n * If this happens, calling @see result() will return @constant undefined\n *\n * @param bindings the bindings to pass to the expression\n */\n public abstract put(bindings: RDF.Bindings): void | Promise;\n\n protected abstract safeThrow(err: unknown): void;\n}\n","import type * as RDF from '@rdfjs/types';\nimport type * as E from '../../expressions';\nimport { expressionToVar } from '../../functions/Helpers';\nimport type { FunctionArgumentsCache } from '../../functions/OverloadTree';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport type { ITimeZoneRepresentation } from '../../util/DateTimeHelpers';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider, SuperTypeCallback, TypeCache } from '../../util/TypeHandling';\n\nexport interface ISharedContext {\n now?: Date;\n baseIRI?: string;\n typeCache?: TypeCache;\n getSuperType?: SuperTypeCallback;\n functionArgumentsCache?: FunctionArgumentsCache;\n defaultTimeZone?: ITimeZoneRepresentation;\n}\n\nexport interface ICompleteSharedContext {\n now: Date;\n baseIRI?: string;\n functionArgumentsCache: FunctionArgumentsCache;\n superTypeProvider: ISuperTypeProvider;\n defaultTimeZone: ITimeZoneRepresentation;\n}\n\nexport class BaseExpressionEvaluator {\n public constructor(protected readonly termTransformer: ITermTransformer) {}\n\n protected term(expr: E.Term): E.Term {\n return expr;\n }\n\n protected variable(expr: E.Variable, mapping: RDF.Bindings): E.Term {\n const term = mapping.get(expressionToVar(expr));\n if (!term) {\n throw new Err.UnboundVariableError(expr.name, mapping);\n }\n return this.termTransformer.transformRDFTermUnsafe(term);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport * as E from '../../expressions';\nimport type { SyncExtension } from '../../expressions';\nimport type { EvalContextSync } from '../../functions';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport { TermTransformer } from '../../transformers/TermTransformer';\nimport type { IExpressionEvaluator } from '../../Types';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider } from '../../util/TypeHandling';\nimport type { SyncExtensionFunctionCreator } from '../SyncEvaluator';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\nimport { BaseExpressionEvaluator } from './BaseExpressionEvaluator';\n\nexport interface ICompleteSyncEvaluatorContext extends ICompleteSharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => boolean;\n aggregate?: (expression: Alg.AggregateExpression) => RDF.Term;\n bnode?: (input?: string) => RDF.BlankNode;\n extensionFunctionCreator?: SyncExtensionFunctionCreator;\n}\n\nexport class SyncRecursiveEvaluator extends BaseExpressionEvaluator\n implements IExpressionEvaluator {\n protected openWorldType: ISuperTypeProvider;\n private readonly subEvaluators: Record E.Term> = {\n // Shared\n [E.ExpressionType.Term]: (expr, _mapping) => this.term( expr),\n [E.ExpressionType.Variable]: (expr, mapping) => this.variable( expr, mapping),\n\n // Sync\n [E.ExpressionType.Operator]: (expr, mapping) => this.evalOperator( expr, mapping),\n [E.ExpressionType.SpecialOperator]: (expr, mapping) => this.evalSpecialOperator( expr, mapping),\n [E.ExpressionType.Named]: (expr, mapping) => this.evalNamed( expr, mapping),\n [E.ExpressionType.Existence]: (expr, mapping) => this.evalExistence( expr, mapping),\n [E.ExpressionType.Aggregate]: (expr, _mapping) => this.evalAggregate( expr),\n [E.ExpressionType.SyncExtension]: (expr, mapping) => this.evalSyncExtension( expr, mapping),\n };\n\n public constructor(private readonly context: ICompleteSyncEvaluatorContext, termTransformer?: ITermTransformer) {\n super(termTransformer ?? new TermTransformer(context.superTypeProvider));\n }\n\n public evaluate(expr: E.Expression, mapping: RDF.Bindings): E.Term {\n const evaluator = this.subEvaluators[expr.expressionType];\n if (!evaluator) {\n throw new Err.InvalidExpressionType(expr);\n }\n return evaluator.bind(this)(expr, mapping);\n }\n\n private evalOperator(expr: E.Operator, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalSpecialOperator(expr: E.SpecialOperator, mapping: RDF.Bindings): E.Term {\n const evaluate = this.evaluate.bind(this);\n const context: EvalContextSync = {\n args: expr.args,\n mapping,\n\n superTypeProvider: this.context.superTypeProvider,\n now: this.context.now,\n baseIRI: this.context.baseIRI,\n functionArgumentsCache: this.context.functionArgumentsCache,\n\n evaluate,\n bnode: this.context.bnode,\n defaultTimeZone: this.context.defaultTimeZone,\n };\n return expr.applySynchronously(context);\n }\n\n private evalNamed(expr: E.Named, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalSyncExtension(expr: SyncExtension, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalExistence(expr: E.Existence, mapping: RDF.Bindings): E.Term {\n if (!this.context.exists) {\n throw new Err.NoExistenceHook();\n }\n\n return new E.BooleanLiteral(this.context.exists(expr.expression, mapping));\n }\n\n private evalAggregate(expr: E.Aggregate): E.Term {\n if (!this.context.aggregate) {\n throw new Err.NoAggregator();\n }\n\n return this.termTransformer.transformRDFTermUnsafe(this.context.aggregate(expr.expression));\n }\n}\n","import type { Algebra as Alg } from 'sparqlalgebrajs';\n\nimport type { AggregateExpression } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Aggregate implements AggregateExpression {\n public expressionType: ExpressionType.Aggregate = ExpressionType.Aggregate;\n\n public constructor(\n public name: string,\n public expression: Alg.AggregateExpression,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { AsyncExtensionApplication, AsyncExtensionExpression, Expression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class AsyncExtension implements AsyncExtensionExpression {\n public expressionType: ExpressionType.AsyncExtension = ExpressionType.AsyncExtension;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: AsyncExtensionApplication,\n ) {}\n}\n","import type { Algebra as Alg } from 'sparqlalgebrajs';\n\nimport type { ExistenceExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class Existence implements ExistenceExpression {\n public expressionType: ExpressionType.Existence = ExpressionType.Existence;\n public constructor(public expression: Alg.ExistenceExpression) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { EvalContextAsync, EvalContextSync } from '../functions';\n\nexport enum ExpressionType {\n Aggregate = 'aggregate',\n Existence = 'existence',\n Named = 'named',\n Operator = 'operator',\n SpecialOperator = 'specialOperator',\n Term = 'term',\n Variable = 'variable',\n AsyncExtension = 'asyncExtension',\n SyncExtension = 'syncExtension',\n}\n\nexport type Expression =\n AggregateExpression |\n ExistenceExpression |\n NamedExpression |\n OperatorExpression |\n SpecialOperatorExpression |\n TermExpression |\n VariableExpression |\n AsyncExtensionExpression |\n SyncExtensionExpression;\n\nexport interface IExpressionProps {\n expressionType: ExpressionType;\n}\n\nexport type AggregateExpression = IExpressionProps & {\n expressionType: ExpressionType.Aggregate;\n name: string;\n expression: Algebra.AggregateExpression;\n};\n\nexport type ExistenceExpression = IExpressionProps & {\n expressionType: ExpressionType.Existence;\n expression: Algebra.ExistenceExpression;\n};\n\nexport type NamedExpression = IExpressionProps & {\n expressionType: ExpressionType.Named;\n name: RDF.NamedNode;\n apply: SimpleApplication;\n args: Expression[];\n};\n\nexport type AsyncExtensionExpression = IExpressionProps & {\n expressionType: ExpressionType.AsyncExtension;\n name: RDF.NamedNode;\n apply: AsyncExtensionApplication;\n args: Expression[];\n};\n\nexport type SyncExtensionExpression = IExpressionProps & {\n expressionType: ExpressionType.SyncExtension;\n name: RDF.NamedNode;\n apply: SimpleApplication;\n args: Expression[];\n};\n\nexport type OperatorExpression = IExpressionProps & {\n expressionType: ExpressionType.Operator;\n args: Expression[];\n apply: SimpleApplication;\n};\n\nexport type SpecialOperatorExpression = IExpressionProps & {\n expressionType: ExpressionType.SpecialOperator;\n args: Expression[];\n applyAsync: SpecialApplicationAsync;\n applySynchronously: SpecialApplicationSync;\n};\n\n// TODO: Create alias Term = TermExpression\nexport function asTermType(type: string): TermType | undefined {\n if (type === 'namedNode' || type === 'literal' || type === 'blankNode' || type === 'quad') {\n return type;\n }\n return undefined;\n}\nexport type TermType = 'namedNode' | 'literal' | 'blankNode' | 'quad';\nexport type TermExpression = IExpressionProps & {\n expressionType: ExpressionType.Term;\n termType: TermType;\n str: () => string;\n coerceEBV: () => boolean;\n toRDF: () => RDF.Term;\n};\n\nexport type VariableExpression = IExpressionProps & {\n expressionType: ExpressionType.Variable;\n name: string;\n};\n\n// Export type Application = SimpleApplication | SpecialApplication;\nexport type SimpleApplication = (args: TermExpression[]) => TermExpression;\nexport type SimpleApplicationTuple = (args: T) => TermExpression;\nexport type AsyncExtensionApplication = (args: TermExpression[]) => Promise;\n\nexport type SpecialApplicationAsync = (context: EvalContextAsync) => Promise;\n\nexport type SpecialApplicationSync = (context: EvalContextSync) => TermExpression;\n","import type * as RDF from '@rdfjs/types';\n\nimport type { Expression, NamedExpression, SimpleApplication } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Named implements NamedExpression {\n public expressionType: ExpressionType.Named = ExpressionType.Named;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: SimpleApplication,\n ) {}\n}\n","import type { Expression, OperatorExpression, SimpleApplication } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Operator implements OperatorExpression {\n public expressionType: ExpressionType.Operator = ExpressionType.Operator;\n\n public constructor(public args: Expression[], public apply: SimpleApplication) {}\n}\n","import type {\n Expression,\n SpecialApplicationAsync,\n SpecialApplicationSync,\n SpecialOperatorExpression,\n} from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class SpecialOperator implements SpecialOperatorExpression {\n public expressionType: ExpressionType.SpecialOperator = ExpressionType.SpecialOperator;\n\n public constructor(\n public args: Expression[],\n public applyAsync: SpecialApplicationAsync,\n public applySynchronously: SpecialApplicationSync,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Expression, SimpleApplication, SyncExtensionExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class SyncExtension implements SyncExtensionExpression {\n public expressionType: ExpressionType.SyncExtension = ExpressionType.SyncExtension;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: SimpleApplication,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from '../util/Consts';\nimport { TypeAlias, TypeURL } from '../util/Consts';\n\nimport type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n IYearMonthDurationRepresentation,\n} from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport { serializeDateTime, serializeDuration, serializeTime, serializeDate } from '../util/Serialization';\nimport type { ISuperTypeProvider } from '../util/TypeHandling';\nimport { isSubTypeOf } from '../util/TypeHandling';\nimport type { TermExpression, TermType } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nconst DF = new DataFactory();\n\nexport abstract class Term implements TermExpression {\n public expressionType: ExpressionType.Term = ExpressionType.Term;\n public abstract termType: TermType;\n\n public abstract toRDF(): RDF.Term;\n\n public str(): string {\n throw new Err.InvalidArgumentTypes([ this ], C.RegularOperator.STR);\n }\n\n public coerceEBV(): boolean {\n throw new Err.EBVCoercionError(this);\n }\n}\n\n// NamedNodes -----------------------------------------------------------------\nexport class NamedNode extends Term {\n public termType: TermType = 'namedNode';\n public constructor(public value: string) {\n super();\n }\n\n public toRDF(): RDF.Term {\n return DF.namedNode(this.value);\n }\n\n public override str(): string {\n return this.value;\n }\n}\n\n// BlankNodes -----------------------------------------------------------------\n\nexport class BlankNode extends Term {\n public value: RDF.BlankNode;\n public termType: TermType = 'blankNode';\n\n public constructor(value: RDF.BlankNode | string) {\n super();\n this.value = typeof value === 'string' ? DF.blankNode(value) : value;\n }\n\n public toRDF(): RDF.Term {\n return this.value;\n }\n}\n\n// Quads -----------------------------------------------------------------\nexport class Quad extends Term {\n public termType: TermType = 'quad';\n private readonly transformer: TermTransformer;\n private readonly valueTerm: RDF.BaseQuad;\n\n public constructor(input: RDF.BaseQuad, superTypeProvider: ISuperTypeProvider) {\n super();\n this.transformer = new TermTransformer(superTypeProvider);\n this.valueTerm = input;\n }\n\n public toRDF(): RDF.BaseQuad {\n return this.valueTerm;\n }\n\n public get subject(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFsubject);\n }\n\n public get predicate(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFpredicate);\n }\n\n public get object(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFobject);\n }\n\n public get RDFsubject(): RDF.Term {\n return this.toRDF().subject;\n }\n\n public get RDFpredicate(): RDF.Term {\n return this.toRDF().predicate;\n }\n\n public get RDFobject(): RDF.Term {\n return this.toRDF().object;\n }\n}\n\n// Literals-- -----------------------------------------------------------------\nexport function isLiteralTermExpression(expr: TermExpression): Literal | undefined {\n if (expr.termType === 'literal') {\n return > expr;\n }\n return undefined;\n}\n\nexport interface ISerializable {\n toString: () => string;\n}\n\nexport class Literal extends Term {\n public termType = 'literal';\n /**\n * @param typedValue internal representation of this literal's value\n * @param dataType a string representing the datatype. Can be of type @see LiteralTypes or any URI\n * @param strValue the string value of this literal. In other words, the string representing the RDF.literal value.\n * @param language the language, mainly for language enabled strings like RDF_LANG_STRING\n */\n public constructor(\n public typedValue: T,\n public dataType: string,\n public strValue?: string,\n public language?: string,\n ) {\n super();\n }\n\n public toRDF(): RDF.Literal {\n return DF.literal(\n this.strValue ?? this.str(),\n this.language ?? DF.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? this.typedValue.toString();\n }\n}\n\nexport abstract class NumericLiteral extends Literal {\n protected constructor(\n public override typedValue: number,\n dataType: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType, strValue, language);\n }\n\n protected abstract specificFormatter(val: number): string;\n\n public override coerceEBV(): boolean {\n return Boolean(this.typedValue);\n }\n\n public override toRDF(): RDF.Literal {\n const term = super.toRDF();\n if (!Number.isFinite(this.typedValue)) {\n term.value = term.value.replace('Infinity', 'INF');\n }\n return term;\n }\n\n public override str(): string {\n return this.strValue ??\n this.specificFormatter(this.typedValue);\n }\n}\n\nexport class IntegerLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_INTEGER, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toFixed(0);\n }\n}\n\nexport class DecimalLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DECIMAL, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class FloatLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_FLOAT, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class DoubleLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DOUBLE, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n if (!Number.isFinite(val)) {\n if (val > 0) {\n return 'INF';\n }\n if (val < 0) {\n return '-INF';\n }\n return 'NaN';\n }\n\n const jsExponential = val.toExponential();\n const [ jsMantisse, jsExponent ] = jsExponential.split('e');\n\n // Leading + must be removed for integer\n // https://www.w3.org/TR/xmlschema-2/#integer\n const exponent = jsExponent.replace(/\\+/u, '');\n\n // SPARQL test suite prefers trailing zero's\n const mantisse = jsMantisse.includes('.') ?\n jsMantisse :\n `${jsMantisse}.0`;\n\n return `${mantisse}E${exponent}`;\n }\n}\n\nexport class BooleanLiteral extends Literal {\n public constructor(public override typedValue: boolean, public override strValue?: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_BOOLEAN, strValue);\n }\n\n public override coerceEBV(): boolean {\n return this.typedValue;\n }\n}\n\nexport class LangStringLiteral extends Literal {\n public constructor(public override typedValue: string, public override language: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.RDF_LANG_STRING, typedValue, language);\n }\n\n public override coerceEBV(): boolean {\n return this.str().length > 0;\n }\n}\n\n// https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal\n// https://www.w3.org/TR/sparql11-query/#defn_SimpleLiteral\n// https://www.w3.org/TR/sparql11-query/#func-strings\n// This does not include language tagged literals\nexport class StringLiteral extends Literal {\n /**\n * @param typedValue\n * @param dataType Should be type that implements XSD_STRING\n */\n public constructor(public override typedValue: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_STRING, typedValue);\n }\n\n public override coerceEBV(): boolean {\n return this.str().length > 0;\n }\n}\n\nexport class DateTimeLiteral extends Literal {\n public constructor(\n public override typedValue: IDateTimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE_TIME, strValue);\n }\n\n public override str(): string {\n return serializeDateTime(this.typedValue);\n }\n}\n\nexport class TimeLiteral extends Literal {\n public constructor(\n public override typedValue: ITimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_TIME, strValue);\n }\n\n public override str(): string {\n return serializeTime(this.typedValue);\n }\n}\n\nexport class DateLiteral extends Literal {\n public constructor(\n public override typedValue: IDateRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE, strValue);\n }\n\n public override str(): string {\n return serializeDate(this.typedValue);\n }\n}\n\nexport class DurationLiteral extends Literal> {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue);\n }\n}\n\nexport class DayTimeDurationLiteral extends DurationLiteral {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, strValue, dataType ?? TypeURL.XSD_DAY_TIME_DURATION);\n }\n}\n\nexport class YearMonthDurationLiteral extends Literal> {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_YEAR_MONTH_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue, 'P0M');\n }\n}\n\n/**\n * This class is used when a literal is parsed, and it's value is\n * an invalid lexical form for it's datatype. The spec defines value with\n * invalid lexical form are still valid terms, and as such we can not error\n * immediately. This class makes sure that the typedValue will remain undefined,\n * and the category 'nonlexical'. This way, only when operators apply to the\n * 'nonlexical' category, they will keep working, otherwise they will throw a\n * type error.\n * This seems to match the spec, except maybe for functions that accept\n * non-lexical values for their datatype.\n *\n * See:\n * - https://www.w3.org/TR/xquery/#dt-type-error\n * - https://www.w3.org/TR/rdf-concepts/#section-Literal-Value\n * - https://www.w3.org/TR/xquery/#dt-ebv\n * - ... some other more precise thing i can't find...\n */\nexport class NonLexicalLiteral extends Literal<{ toString: () => 'undefined' }> {\n public constructor(\n typedValue: undefined,\n dataType: string,\n private readonly openWorldType: ISuperTypeProvider,\n strValue?: string,\n language?: string,\n ) {\n super({ toString: () => 'undefined' }, dataType, strValue, language);\n }\n\n public override coerceEBV(): boolean {\n const isNumericOrBool =\n isSubTypeOf(this.dataType, TypeURL.XSD_BOOLEAN, this.openWorldType) ||\n isSubTypeOf(this.dataType, TypeAlias.SPARQL_NUMERIC, this.openWorldType);\n if (isNumericOrBool) {\n return false;\n }\n throw new Err.EBVCoercionError(this);\n }\n\n public override toRDF(): RDF.Literal {\n return DF.literal(\n this.str(),\n this.language ?? DF.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? '';\n }\n}\n\nexport function isNonLexicalLiteral(lit: Literal): NonLexicalLiteral | undefined {\n if (lit instanceof NonLexicalLiteral) {\n return lit;\n }\n return undefined;\n}\n","import type { VariableExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class Variable implements VariableExpression {\n public expressionType: ExpressionType.Variable = ExpressionType.Variable;\n public name: string;\n public constructor(name: string) {\n this.name = name;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport type * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport type { ISuperTypeProvider } from '../util/TypeHandling';\nimport type { ImplementationFunction, OverloadTree, FunctionArgumentsCache } from './OverloadTree';\n\nexport interface IEvalSharedContext extends ICompleteSharedContext {\n args: E.Expression[];\n mapping: RDF.Bindings;\n}\nexport interface IEvalContext extends IEvalSharedContext {\n bnode?: (input?: string) => BNode;\n evaluate: (expr: E.Expression, mapping: RDF.Bindings) => Term;\n}\n\nexport type EvalContextAsync = IEvalContext, Promise>;\nexport type EvalContextSync = IEvalContext;\n\n// ----------------------------------------------------------------------------\n// Overloaded Functions\n// ----------------------------------------------------------------------------\n\n// Function and operator arguments are 'flattened' in the SPARQL spec.\n// If the argument is a literal, the datatype often also matters.\nexport type ArgumentType = 'term' | E.TermType | C.TypeURL | C.TypeAlias;\n\nexport interface IOverloadedDefinition {\n arity: number | number[];\n overloads: OverloadTree;\n}\n\nexport abstract class BaseFunction {\n public arity: number | number[];\n private readonly overloads: OverloadTree;\n\n protected constructor(public operator: Operator, definition: IOverloadedDefinition) {\n this.arity = definition.arity;\n this.overloads = definition.overloads;\n }\n\n /**\n * A function application works by monomorphing the function to a specific\n * instance depending on the runtime types. We then just apply this function\n * to the args.\n */\n public apply = (args: E.TermExpression[], context: ICompleteSharedContext):\n E.TermExpression => {\n const concreteFunction =\n this.monomorph(args, context.superTypeProvider, context.functionArgumentsCache) ??\n this.handleInvalidTypes(args);\n return concreteFunction(context)(args);\n };\n\n protected abstract handleInvalidTypes(args: E.TermExpression[]): never;\n\n /**\n * We monomorph by checking the map of overloads for keys corresponding\n * to the runtime types. We start by checking for an implementation for the\n * most concrete types (integer, string, date, IRI), if we find none,\n * we consider their term types (literal, blank, IRI), and lastly we consider\n * all arguments as generic terms.\n *\n * Another option would be to populate the overloads with an implementation\n * for every concrete type when the function is generic over termtypes or\n * terms.\n */\n private monomorph(\n args: E.TermExpression[],\n superTypeProvider: ISuperTypeProvider,\n functionArgumentsCache: FunctionArgumentsCache,\n ): ImplementationFunction | undefined {\n return this.overloads.search(args, superTypeProvider, functionArgumentsCache);\n }\n}\n\n// Regular Functions ----------------------------------------------------------\n\n/**\n * Varying kinds of functions take arguments of different types on which the\n * specific behaviour is dependant. Although their behaviour is often varying,\n * it is always relatively simple, and better suited for synced behaviour.\n * The types of their arguments are always terms, but might differ in\n * their term-type (eg: iri, literal),\n * their specific literal type (eg: string, integer),\n * their arity (see BNODE),\n * or even their specific numeric type (eg: integer, float).\n *\n * Examples include:\n * - Arithmetic operations such as: *, -, /, +\n * - Bool operators such as: =, !=, <=, <, ...\n * - Functions such as: str, IRI\n *\n * See also: https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n * and https://www.w3.org/TR/sparql11-query/#OperatorMapping\n */\nexport class RegularFunction extends BaseFunction {\n protected functionClass = 'regular';\n\n public constructor(op: C.RegularOperator, definition: IOverloadedDefinition) {\n super(op, definition);\n }\n\n protected handleInvalidTypes(args: E.TermExpression[]): never {\n throw new Err.InvalidArgumentTypes(args, this.operator);\n }\n}\n\n// Named Functions ------------------------------------------------------------\nexport class NamedFunction extends BaseFunction {\n protected functionClass = 'named';\n\n public constructor(op: C.NamedOperator, definition: IOverloadedDefinition) {\n super(op, definition);\n }\n\n protected handleInvalidTypes(args: E.TermExpression[]): never {\n throw new Err.InvalidArgumentTypes(args, this.operator);\n }\n}\n\n// Special Functions ----------------------------------------------------------\n/**\n * Special Functions are those that don't really fit in sensible categories and\n * have extremely heterogeneous signatures that make them impossible to abstract\n * over. They are small in number, and their behaviour is often complex and open\n * for multiple correct implementations with different trade-offs.\n *\n * Due to their varying nature, they need all available information present\n * during evaluation. This reflects in the signature of the apply() method.\n *\n * They need access to an evaluator to be able to even implement their logic.\n * Especially relevant for IF, and the logical connectives.\n *\n * They can have both sync and async implementations, and both would make sense\n * in some contexts.\n */\nexport class SpecialFunction {\n public functionClass = 'special';\n public arity: number;\n public applySynchronously: E.SpecialApplicationSync;\n public applyAsync: E.SpecialApplicationAsync;\n public checkArity: (args: E.Expression[]) => boolean;\n\n public constructor(public operator: C.SpecialOperator, definition: ISpecialDefinition) {\n this.arity = definition.arity;\n this.applySynchronously = definition.applySynchronously;\n this.applyAsync = definition.applyAsync;\n this.checkArity = definition.checkArity ?? defaultArityCheck(this.arity);\n }\n}\n\nfunction defaultArityCheck(arity: number): (args: E.Expression[]) => boolean {\n return (args: E.Expression[]): boolean => {\n // Infinity is used to represent var-args, so it's always correct.\n if (arity === Number.POSITIVE_INFINITY) {\n return true;\n }\n\n return args.length === arity;\n };\n}\n\nexport interface ISpecialDefinition {\n arity: number;\n applyAsync: E.SpecialApplicationAsync;\n applySynchronously: E.SpecialApplicationSync;\n checkArity?: (args: E.Expression[]) => boolean;\n}\n","/**\n * These helpers provide a (albeit inflexible) DSL for writing function\n * definitions for the SPARQL functions.\n */\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type { Literal, TermExpression, Quad, ISerializable } from '../expressions';\nimport * as E from '../expressions';\nimport { NonLexicalLiteral } from '../expressions';\nimport * as C from '../util/Consts';\nimport { TypeURL } from '../util/Consts';\nimport type { IDateTimeRepresentation } from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport type { ArgumentType } from './Core';\nimport type { ImplementationFunction, ImplementationFunctionTuple } from './OverloadTree';\nimport { OverloadTree } from './OverloadTree';\n\ntype Term = E.TermExpression;\n\nconst DF = new DataFactory();\n\nexport function declare(identifier: string): Builder {\n return new Builder(identifier);\n}\n\nexport class Builder {\n private readonly overloadTree: OverloadTree;\n private collected: boolean;\n\n public constructor(identifier: string) {\n this.overloadTree = new OverloadTree(identifier);\n this.collected = false;\n }\n\n public collect(): OverloadTree {\n if (this.collected) {\n // Only 1 time allowed because we can't copy a tree. (And we don't need this).\n throw new Error('Builders can only be collected once!');\n }\n this.collected = true;\n return this.overloadTree;\n }\n\n private static wrapInvalidLexicalProtected(func: ImplementationFunction): ImplementationFunction {\n return (context: ICompleteSharedContext) => (args: TermExpression[]) => {\n for (const [ index, arg ] of args.entries()) {\n if (arg instanceof NonLexicalLiteral) {\n throw new Err.InvalidLexicalForm(args[index].toRDF());\n }\n }\n return func(context)(args);\n };\n }\n\n public set(\n argTypes: [],\n func: ImplementationFunctionTuple<[]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType],\n func: ImplementationFunctionTuple<[T1]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<\n T1 extends TermExpression,\n T2 extends TermExpression,\n T3 extends TermExpression,\n T4 extends TermExpression,\n >(\n argTypes: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3, T4]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling?: boolean): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling = true): Builder {\n this.overloadTree.addOverload(argTypes, addInvalidHandling ? Builder.wrapInvalidLexicalProtected(func) : func);\n return this;\n }\n\n public copy({ from, to }: { from: ArgumentType[]; to: ArgumentType[] }): Builder {\n const impl = this.overloadTree.getImplementationExact(from);\n if (!impl) {\n throw new Err.UnexpectedError(\n 'Tried to copy implementation, but types not found',\n { from, to },\n );\n }\n return this.set(to, impl);\n }\n\n public onUnary(type: ArgumentType, op: (context: ICompleteSharedContext) =>\n (val: T) => Term, addInvalidHandling = true): Builder {\n return this.set([ type ], context => ([ val ]: [T]) => op(context)(val), addInvalidHandling);\n }\n\n public onUnaryTyped(\n type: ArgumentType,\n op: (context: ICompleteSharedContext) => (val: T) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set([ type ], context => ([ val ]: [E.Literal]) => op(context)(val.typedValue), addInvalidHandling);\n }\n\n public onBinary(\n types: [ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ left, right ]: [L, R]) => op(context)(left, right), addInvalidHandling);\n }\n\n public onBinaryTyped(\n types: [ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n types,\n context => ([ left, right ]: [E.Literal, E.Literal]) => op(context)(left.typedValue, right.typedValue),\n addInvalidHandling,\n );\n }\n\n public onTernaryTyped(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext)\n => (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ a1, a2, a3 ]: [E.Literal, E.Literal, E.Literal]) =>\n op(context)(a1.typedValue, a2.typedValue, a3.typedValue), addInvalidHandling);\n }\n\n public onTernary(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ a1, a2, a3 ]: [A1, A2, A3]) => op(context)(a1, a2, a3), addInvalidHandling);\n }\n\n public onQuaternaryTyped<\n A1 extends ISerializable,\nA2 extends ISerializable,\nA3 extends ISerializable,\nA4 extends ISerializable,\n>(\n types: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (a1: A1, a2: A2, a3: A3, a4: A4) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context =>\n ([ a1, a2, a3, a4 ]: [E.Literal, E.Literal, E.Literal, E.Literal]) =>\n op(context)(a1.typedValue, a2.typedValue, a3.typedValue, a4.typedValue), addInvalidHandling);\n }\n\n public onTerm1(\n op: (context: ICompleteSharedContext) => (term: T) => Term,\naddInvalidHandling = false,\n ): Builder {\n return this.set(\n [ 'term' ],\n context => ([ term ]: [T]) => op(context)(term),\n addInvalidHandling,\n );\n }\n\n public onTerm3(op: (context: ICompleteSharedContext) => (t1: Term, t2: Term, t3: Term) => Term): Builder {\n return this.set(\n [ 'term', 'term', 'term' ],\n context => ([ t1, t2, t3 ]: [Term, Term, Term]) => op(context)(t1, t2, t3),\n );\n }\n\n public onQuad1(op: (context: ICompleteSharedContext) => (term: Term & Quad) => Term): Builder {\n return this.set([ 'quad' ], context => ([ term ]: [Term & Quad]) => op(context)(term));\n }\n\n public onLiteral1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ 'literal' ],\n context => ([ term ]: [E.Literal]) => op(context)(term),\n addInvalidHandling,\n );\n }\n\n public onBoolean1(\n op: (context: ICompleteSharedContext) => (lit: E.BooleanLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n context => ([ lit ]: [E.BooleanLiteral]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onBoolean1Typed(\n op: (context: ICompleteSharedContext) => (lit: boolean) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n context => ([ lit ]: [E.BooleanLiteral]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onString1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onString1Typed(\n op: (context: ICompleteSharedContext) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onLangString1(\n op: (context: ICompleteSharedContext) => (lit: E.LangStringLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.RDF_LANG_STRING ],\n context => ([ lit ]: [E.LangStringLiteral]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1Typed(\n op: (context: ICompleteSharedContext) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onNumeric1(\n op: (context: ICompleteSharedContext) => (val: E.NumericLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_NUMERIC ],\n context => ([ val ]: [E.NumericLiteral]) => op(context)(val),\n addInvalidHandling,\n );\n }\n\n public onDateTime1(\n op: (context: ICompleteSharedContext) => (date: E.DateTimeLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME ],\n context => ([ val ]: [E.DateTimeLiteral]) => op(context)(val),\n addInvalidHandling,\n );\n }\n\n /**\n * We return the base types and not the provided types because we don't want to create invalid terms.\n * Providing negative number to a function unary - for example should not\n * return a term of type negative number having a positive value.\n * @param op the numeric operator performed\n * @param addInvalidHandling whether to add invalid handling,\n * whether to add @param op in @see wrapInvalidLexicalProtected\n */\n public numericConverter(\n op: (context: ICompleteSharedContext) => (val: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (context: ICompleteSharedContext) => (arg: Term): number =>\n op(context)((>arg).typedValue);\n return this.onUnary(TypeURL.XSD_INTEGER, context => arg =>\n integer(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DECIMAL, context => arg =>\n decimal(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_FLOAT, context => arg =>\n float(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DOUBLE, context => arg =>\n double(evalHelper(context)(arg)), addInvalidHandling);\n }\n\n /**\n * !!! Be aware when using this function, it will create different overloads with different return types !!!\n * Arithmetic operators take 2 numeric arguments, and return a single numerical\n * value. The type of the return value is heavily dependent on the types of the\n * input arguments. In JS everything is a double, but in SPARQL it is not.\n *\n * The different arguments are handled by type promotion and subtype substitution.\n * The way numeric function arguments work is described here:\n * https://www.w3.org/TR/xpath20/#mapping\n * Above url is referenced in the sparql spec: https://www.w3.org/TR/sparql11-query/#OperatorMapping\n */\n public arithmetic(\n op: (context: ICompleteSharedContext) => (left: number, right: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (context: ICompleteSharedContext) => (left: Term, right: Term): number =>\n op(context)((>left).typedValue, (>right).typedValue);\n return this.onBinary([ TypeURL.XSD_INTEGER, TypeURL.XSD_INTEGER ], context => (left, right) =>\n integer(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DECIMAL, TypeURL.XSD_DECIMAL ], context => (left, right) =>\n decimal(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_FLOAT, TypeURL.XSD_FLOAT ], context => (left, right) =>\n float(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DOUBLE, TypeURL.XSD_DOUBLE ], context => (left, right) =>\n double(evalHelper(context)(left, right)), addInvalidHandling);\n }\n\n public numberTest(test: (context: ICompleteSharedContext) => (left: number, right: number) => boolean): Builder {\n return this.numeric(context => ([ left, right ]: E.NumericLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n });\n }\n\n public stringTest(\n test: (context: ICompleteSharedContext) => (left: string, right: string) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_STRING, C.TypeURL.XSD_STRING ],\n context => ([ left, right ]: E.StringLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public booleanTest(\n test: (context: ICompleteSharedContext) => (left: boolean, right: boolean) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_BOOLEAN, C.TypeURL.XSD_BOOLEAN ],\n context => ([ left, right ]: E.BooleanLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public dateTimeTest(test: (context: ICompleteSharedContext)\n => (left: IDateTimeRepresentation, right: IDateTimeRepresentation) => boolean, addInvalidHandling = true): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME, C.TypeURL.XSD_DATE_TIME ],\n context => ([ left, right ]: E.DateTimeLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public numeric(op: ImplementationFunctionTuple<[T, T]>): Builder {\n return this.set([ C.TypeAlias.SPARQL_NUMERIC, C.TypeAlias.SPARQL_NUMERIC ], op);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Literal Construction helpers\n// ----------------------------------------------------------------------------\n\nexport function bool(val: boolean): E.BooleanLiteral {\n return new E.BooleanLiteral(val);\n}\n\nexport function integer(num: number): E.IntegerLiteral {\n return new E.IntegerLiteral(num);\n}\n\nexport function decimal(num: number): E.DecimalLiteral {\n return new E.DecimalLiteral(num);\n}\n\nexport function float(num: number): E.FloatLiteral {\n return new E.FloatLiteral(num);\n}\n\nexport function double(num: number): E.DoubleLiteral {\n return new E.DoubleLiteral(num);\n}\n\nexport function string(str: string): E.StringLiteral {\n return new E.StringLiteral(str);\n}\n\nexport function langString(str: string, lang: string): E.LangStringLiteral {\n return new E.LangStringLiteral(str, lang);\n}\n\nexport function dateTime(date: IDateTimeRepresentation, str: string): E.DateTimeLiteral {\n return new E.DateTimeLiteral(date, str);\n}\n\nexport function expressionToVar(variableExpression: E.VariableExpression): RDF.Variable {\n return DF.variable(variableExpression.name.slice(1));\n}\n","import type { DateLiteral, DateTimeLiteral, TimeLiteral } from '../expressions';\nimport * as E from '../expressions';\nimport { DurationLiteral } from '../expressions';\nimport type * as C from '../util/Consts';\nimport { TypeURL } from '../util/Consts';\nimport { trimToDayTimeDuration, trimToYearMonthDuration } from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport {\n parseDate,\n parseDateTime,\n parseDayTimeDuration,\n parseDuration,\n parseTime,\n parseYearMonthDuration,\n parseXSDDecimal,\n parseXSDFloat,\n parseXSDInteger,\n} from '../util/Parsing';\n\nimport type { IOverloadedDefinition } from './Core';\nimport { bool, dateTime, decimal, declare, double, float, integer, string } from './Helpers';\n\ntype Term = E.TermExpression;\n\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// Begin definitions.\n\n// ----------------------------------------------------------------------------\n// XPath Constructor functions\n// https://www.w3.org/TR/sparql11-query/#\n// https://www.w3.org/TR/xpath-functions/#casting-from-primitive-to-primitive\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/xpath-functions/#casting-to-string\n */\nconst xsdToString = {\n arity: 1,\n overloads: declare(TypeURL.XSD_STRING)\n .onNumeric1(() => (val: E.NumericLiteral) => string(float(val.typedValue).str()))\n .onBoolean1Typed(() => val => string(bool(val).str()))\n .onTerm1(() => (val: E.StringLiteral) => string(val.str()))\n .collect(),\n};\n\nconst xsdToFloat = {\n arity: 1,\n overloads: declare(TypeURL.XSD_FLOAT)\n .onNumeric1(() => (val: E.NumericLiteral) => float(val.typedValue))\n .onBoolean1Typed(() => val => float(val ? 1 : 0))\n .onUnary(TypeURL.XSD_STRING, () => (val: E.StringLiteral) => {\n const result = parseXSDFloat(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_FLOAT);\n }\n return float(result);\n }, false)\n .collect(),\n};\n\nconst xsdToDouble = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DOUBLE)\n .onNumeric1(() => (val: E.NumericLiteral) => double(val.typedValue))\n .onBoolean1Typed(() => val => double(val ? 1 : 0))\n .onUnary(TypeURL.XSD_STRING, () => (val: E.Term) => {\n const result = parseXSDFloat(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DOUBLE);\n }\n return double(result);\n }, false)\n .collect(),\n};\n\nconst xsdToDecimal = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DECIMAL)\n .onNumeric1(() => (val: E.Term) => {\n const result = parseXSDDecimal(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DECIMAL);\n }\n return decimal(result);\n })\n .onString1(() => (val: E.Term) => {\n const str = val.str();\n const result = /^([+-])?(\\d+(\\.\\d+)?)$/u.test(str) ? parseXSDDecimal(str) : undefined;\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DECIMAL);\n }\n return decimal(result);\n }, false)\n .onBoolean1Typed(() => val => decimal(val ? 1 : 0))\n .collect(),\n};\n\nconst xsdToInteger = {\n arity: 1,\n overloads: declare(TypeURL.XSD_INTEGER)\n .onBoolean1Typed(() => val => integer(val ? 1 : 0))\n .onNumeric1(() => (val: E.Term) => {\n const result = parseXSDInteger(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_INTEGER);\n }\n return integer(result);\n }, false)\n .onString1(() => (val: E.Term) => {\n const str = val.str();\n const result = /^\\d+$/u.test(str) ? parseXSDInteger(str) : undefined;\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_INTEGER);\n }\n return integer(result);\n })\n .collect(),\n};\n\nconst xsdToDatetime = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DATE_TIME)\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: E.DateTimeLiteral) => val)\n .onUnary(TypeURL.XSD_STRING, () => (val: Term) =>\n dateTime(parseDateTime(val.str()), val.str()), false)\n .onUnary(TypeURL.XSD_DATE, () => (val: E.DateLiteral) =>\n new E.DateTimeLiteral({ ...val.typedValue, hours: 0, minutes: 0, seconds: 0 }))\n .collect(),\n};\n\nconst xsdToBoolean = {\n arity: 1,\n overloads: declare(TypeURL.XSD_BOOLEAN)\n .onNumeric1(() => (val: E.NumericLiteral) => bool(val.coerceEBV()), true)\n .onUnary(TypeURL.XSD_BOOLEAN, () => (val: Term) => bool(val.coerceEBV()), true)\n .onUnary(TypeURL.XSD_STRING, () => (val: Term) => {\n switch (val.str()) {\n case 'true':\n return bool(true);\n case 'false':\n return bool(false);\n case '1':\n return bool(true);\n case '0':\n return bool(false);\n default:\n throw new Err.CastError(val, TypeURL.XSD_BOOLEAN);\n }\n }, false)\n .collect(),\n};\n\n// End definitions.\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n\n// Additional definitions to implement https://github.com/w3c/sparql-12/blob/main/SEP/SEP-0002/sep-0002.md\n// The additional casts are listed in https://www.w3.org/TR/xpath-functions/#casting-from-primitive-to-primitive\nconst xsdToTime = {\n arity: 1,\n overloads: declare(TypeURL.XSD_TIME)\n .onUnary(TypeURL.XSD_TIME, () => (val: TimeLiteral) => new E.TimeLiteral(val.typedValue, val.strValue))\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: DateTimeLiteral) =>\n new E.TimeLiteral(val.typedValue))\n .onStringly1(() => (val: Term) => new E.TimeLiteral(parseTime(val.str())))\n .collect(),\n};\n\nconst xsdToDate = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DATE)\n .onUnary(TypeURL.XSD_DATE, () => (val: DateLiteral) => new E.DateLiteral(val.typedValue, val.strValue))\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: DateTimeLiteral) =>\n new E.DateLiteral(val.typedValue))\n .onStringly1(() => (val: E.Term) => new E.DateLiteral(parseDate(val.str())))\n .collect(),\n};\n\nconst xsdToDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.DurationLiteral(val.typedValue, val.strValue))\n .onStringly1(() => (val: Term) =>\n new DurationLiteral(parseDuration(val.str())))\n .collect(),\n};\n\nconst xsdToDayTimeDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DAY_TIME_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.DayTimeDurationLiteral(trimToDayTimeDuration(val.typedValue)))\n .onStringly1(() => (val: Term) =>\n new E.DayTimeDurationLiteral(parseDayTimeDuration(val.str())))\n .collect(),\n};\n\nconst xsdToYearMonthDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_YEAR_MONTH_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.YearMonthDurationLiteral(trimToYearMonthDuration(val.typedValue)))\n .onStringly1(() => (val: Term) =>\n new E.YearMonthDurationLiteral(parseYearMonthDuration(val.str())))\n .collect(),\n};\n\nexport const namedDefinitions: Record = {\n // --------------------------------------------------------------------------\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // --------------------------------------------------------------------------\n [TypeURL.XSD_STRING]: xsdToString,\n [TypeURL.XSD_FLOAT]: xsdToFloat,\n [TypeURL.XSD_DOUBLE]: xsdToDouble,\n [TypeURL.XSD_DECIMAL]: xsdToDecimal,\n [TypeURL.XSD_INTEGER]: xsdToInteger,\n [TypeURL.XSD_DATE_TIME]: xsdToDatetime,\n [TypeURL.XSD_DATE]: xsdToDate,\n [TypeURL.XSD_BOOLEAN]: xsdToBoolean,\n [TypeURL.XSD_TIME]: xsdToTime,\n [TypeURL.XSD_DURATION]: xsdToDuration,\n [TypeURL.XSD_DAY_TIME_DURATION]: xsdToDayTimeDuration,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: xsdToYearMonthDuration,\n};\n","import type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport { isLiteralTermExpression, TermExpression } from '../expressions';\nimport type { KnownLiteralTypes } from '../util/Consts';\nimport type { GeneralSuperTypeDict, ISuperTypeProvider, OverrideType } from '../util/TypeHandling';\nimport {\n asGeneralType,\n asKnownLiteralType,\n asOverrideType,\n getSuperTypes,\n superTypeDictTable,\n typePromotion,\n} from '../util/TypeHandling';\nimport type { ArgumentType } from './Core';\n\nexport type SearchStack = OverloadTree[];\nexport type ImplementationFunction = (sharedContext: ICompleteSharedContext) => E.SimpleApplication;\nexport type ImplementationFunctionTuple = (sharedContext: ICompleteSharedContext) => E.SimpleApplicationTuple;\ninterface IFunctionArgumentsCacheObj {\n func?: ImplementationFunction;\n cache?: FunctionArgumentsCache;\n}\nexport type FunctionArgumentsCache = Record;\n/**\n * Maps argument types on their specific implementation in a tree like structure.\n * When adding any functionality to this class, make sure you add it to SpecialFunctions as well.\n */\nexport class OverloadTree {\n private implementation?: ImplementationFunction | undefined;\n // We need this field. e.g. decimal decimal should be kept even when double double is added.\n // We use promotion count to check priority.\n private promotionCount?: number | undefined;\n private readonly generalOverloads: Record<'term' | E.TermType, OverloadTree>;\n private readonly literalOverLoads: [OverrideType, OverloadTree][];\n private readonly depth: number;\n\n public constructor(private readonly identifier: string, depth?: number) {\n this.implementation = undefined;\n this.generalOverloads = Object.create(null);\n this.literalOverLoads = [];\n this.depth = depth ?? 0;\n this.promotionCount = undefined;\n }\n\n private getSubtree(overrideType: ArgumentType): OverloadTree | undefined {\n const generalType = asGeneralType(overrideType);\n if (generalType) {\n return this.generalOverloads[generalType];\n }\n for (const [ type, overloadTree ] of this.literalOverLoads) {\n if (overrideType === type) {\n return overloadTree;\n }\n }\n return undefined;\n }\n\n /**\n * Get the implementation for the types that exactly match @param args .\n */\n public getImplementationExact(args: ArgumentType[]): ImplementationFunction | undefined {\n // eslint-disable-next-line ts/no-this-alias\n let node: OverloadTree | undefined = this;\n for (const expression of args) {\n node = node.getSubtree(expression);\n if (!node) {\n return undefined;\n }\n }\n return node.implementation;\n }\n\n /**\n * Searches in a depth first way for the best matching overload. considering this a the tree's root.\n * @param args the arguments to the function.\n * @param superTypeProvider\n * @param functionArgumentsCache\n */\n public search(\n args: E.TermExpression[],\n superTypeProvider: ISuperTypeProvider,\n functionArgumentsCache: FunctionArgumentsCache,\n ):\n ImplementationFunction | undefined {\n let cacheIter: IFunctionArgumentsCacheObj | undefined = functionArgumentsCache[this.identifier];\n let searchIndex = 0;\n while (searchIndex < args.length && cacheIter?.cache) {\n const term = args[searchIndex];\n const literalExpression = isLiteralTermExpression(term);\n cacheIter = cacheIter.cache[literalExpression ? literalExpression.dataType : term.termType];\n searchIndex++;\n }\n if (searchIndex === args.length && cacheIter?.func) {\n return cacheIter.func;\n }\n\n // SearchStack is a stack of all node's that need to be checked for implementation.\n // It provides an easy way to keep order in our search.\n const searchStack: { node: OverloadTree; index: number }[] = [];\n const startIndex = 0;\n if (args.length === 0) {\n return this.implementation;\n }\n // GetSubTreeWithArg return a SearchStack containing the node's that should be contacted next.\n // We also log the index since there is no other way to remember this index.\n // the provided stack should be pushed on top of our search stack since it also has it's order.\n searchStack.push(...this.getSubTreeWithArg(args[startIndex], superTypeProvider).map(node =>\n ({ node, index: startIndex + 1 })));\n while (searchStack.length > 0) {\n const { index, node } = <{ node: OverloadTree; index: number }>searchStack.pop();\n // We check the implementation because it would be possible a path is created but not implemented.\n // ex: f(double, double, double) and f(term, term). and calling f(double, double).\n if (index === args.length && node.implementation) {\n this.addToCache(functionArgumentsCache, args, node.implementation);\n return node.implementation;\n }\n searchStack.push(...node.getSubTreeWithArg(args[index], superTypeProvider).map(item =>\n ({ node: item, index: index + 1 })));\n }\n // Calling a function with one argument but finding no implementation should return no implementation.\n // Not even the one with no arguments.\n return undefined;\n }\n\n private addToCache(\n functionArgumentsCache: FunctionArgumentsCache,\n args: E.TermExpression[],\n func?: ImplementationFunction | undefined,\n ): void {\n function getDefault(lruCache: FunctionArgumentsCache, key: string): IFunctionArgumentsCacheObj {\n if (!(key in lruCache)) {\n lruCache[key] = {};\n }\n return lruCache[key];\n }\n let cache = getDefault(functionArgumentsCache, this.identifier);\n for (const term of args) {\n const literalExpression = isLiteralTermExpression(term);\n const key = literalExpression ? literalExpression.dataType : term.termType;\n cache.cache = cache.cache ?? {};\n cache = getDefault(cache.cache, key);\n }\n cache.func = func;\n }\n\n /**\n * Adds an overload to the tree structure considering this as the tree's root.\n * @param argumentTypes a list of argumentTypes that would need to be provided in\n * the same order to get the implementation.\n * @param func the implementation for this overload.\n */\n public addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction): void {\n this._addOverload([ ...argumentTypes ], func, 0);\n }\n\n private _addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction, promotionCount: number): void {\n const [ argumentType, ..._argumentTypes ] = argumentTypes;\n if (!argumentType) {\n if (this.promotionCount === undefined || promotionCount <= this.promotionCount) {\n this.promotionCount = promotionCount;\n this.implementation = func;\n }\n return;\n }\n let nextTree = this.getSubtree(argumentType);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n const generalType = asGeneralType(argumentType);\n if (generalType) {\n this.generalOverloads[generalType] = newNode;\n }\n const overrideType = asOverrideType(argumentType);\n if (overrideType) {\n this.literalOverLoads.push([ overrideType, newNode ]);\n }\n nextTree = newNode;\n }\n nextTree._addOverload(_argumentTypes, func, promotionCount);\n\n if (typePromotion[argumentType]) {\n for (const ret of typePromotion[argumentType]!) {\n this.addPromotedOverload(\n ret.typeToPromote,\n func,\n ret.conversionFunction,\n _argumentTypes,\n promotionCount,\n );\n }\n }\n }\n\n private addPromotedOverload(\n typeToPromote: OverrideType,\n func: ImplementationFunction,\n conversionFunction: (arg: E.TermExpression) => E.TermExpression,\n argumentTypes: ArgumentType[],\n promotionCount: number,\n ): void {\n let nextTree = this.getSubtree(typeToPromote);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n this.literalOverLoads.push([ typeToPromote, newNode ]);\n nextTree = newNode;\n }\n nextTree._addOverload(argumentTypes, funcConf => args => func(funcConf)([\n ...args.slice(0, this.depth),\n conversionFunction(args[this.depth]),\n ...args.slice(this.depth + 1, args.length),\n ]), promotionCount + 1);\n }\n\n /**\n * @param arg term to try and match to possible overloads of this node.\n * @param openWorldType interface allowing to discover relations between types.\n * @returns SearchStack a stack with top element the next node that should be asked for implementation or overload.\n */\n private getSubTreeWithArg(arg: E.TermExpression, openWorldType: ISuperTypeProvider): SearchStack {\n const res: SearchStack = [];\n const literalExpression = isLiteralTermExpression(arg);\n // These types refer to Type exported by lib/util/Consts.ts\n if (this.generalOverloads.term) {\n res.push(this.generalOverloads.term);\n }\n // TermTypes are defined in E.TermType.\n if (this.generalOverloads[arg.termType]) {\n res.push(this.generalOverloads[arg.termType]);\n }\n if (literalExpression) {\n // Defending implementation. Mainly the scary sort.\n // This function has cost O(n) + O(m * log(m)) with n = amount of overloads and m = amount of matched overloads\n // We map over each of the overloads, filter only the once that can be used (this is normally 1 or 2).\n // The sort function on an array with 1 or 2 arguments will be negligible.\n const concreteType = asKnownLiteralType(literalExpression.dataType);\n let subExtensionTable: GeneralSuperTypeDict;\n if (concreteType) {\n // Concrete dataType is known by expression-evaluator.\n subExtensionTable = superTypeDictTable[concreteType];\n } else {\n // Datatype is a custom datatype\n subExtensionTable = getSuperTypes(literalExpression.dataType, openWorldType);\n }\n const matches: [number, OverloadTree][] = this.literalOverLoads.filter(([ matchType, _ ]) =>\n matchType in subExtensionTable)\n .map(([ matchType, tree ]) => [ subExtensionTable[ matchType], tree ]);\n // eslint-disable-next-line unused-imports/no-unused-vars\n matches.sort(([ prioA, matchTypeA ], [ prioB, matchTypeB ]) => prioA - prioB);\n res.push(...matches.map(([ _, sortedType ]) => sortedType));\n }\n return res;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { BigNumber } from 'bignumber.js';\nimport { sha1, sha256, sha384, sha512 } from 'hash.js';\nimport { DataFactory } from 'rdf-data-factory';\nimport { resolve as resolveRelativeIri } from 'relative-to-absolute-iri';\nimport { hash as md5 } from 'spark-md5';\nimport * as uuid from 'uuid';\n\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport * as E from '../expressions';\nimport type { Quad } from '../expressions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from '../util/Consts';\nimport { RegularOperator, TypeAlias, TypeURL } from '../util/Consts';\nimport type { IDayTimeDurationRepresentation } from '../util/DateTimeHelpers';\nimport {\n dayTimeDurationsToSeconds,\n defaultedDateTimeRepresentation,\n defaultedDayTimeDurationRepresentation,\n defaultedDurationRepresentation,\n defaultedYearMonthDurationRepresentation,\n extractRawTimeZone,\n negateDuration,\n toDateTimeRepresentation,\n toUTCDate,\n yearMonthDurationsToMonths,\n} from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport { orderTypes } from '../util/Ordering';\nimport { addDurationToDateTime, elapsedDuration } from '../util/SpecAlgos';\nimport type { IOverloadedDefinition } from './Core';\nimport { RegularFunction } from './Core';\nimport { bool, decimal, declare, double, integer, langString, string } from './Helpers';\nimport * as X from './XPathFunctions';\nimport { regularFunctions } from '.';\n\nconst DF = new DataFactory();\n\ntype Term = E.TermExpression;\n\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// Begin definitions\n\n// ----------------------------------------------------------------------------\n// Operator Mapping\n// https://www.w3.org/TR/sparql11-query/#OperatorMapping\n// ----------------------------------------------------------------------------\n\nconst not = {\n arity: 1,\n overloads: declare(C.RegularOperator.NOT)\n .onTerm1(() => val => bool(!val.coerceEBV()))\n .collect(),\n};\n\nconst unaryPlus = {\n arity: 1,\n overloads: declare(C.RegularOperator.UPLUS)\n .numericConverter(() => val => val)\n .collect(),\n};\n\nconst unaryMinus = {\n arity: 1,\n overloads: declare(C.RegularOperator.UMINUS)\n .numericConverter(() => val => -val)\n .collect(),\n};\n\nconst multiplication = {\n arity: 2,\n overloads: declare(C.RegularOperator.MULTIPLICATION)\n .arithmetic(() => (left, right) => new BigNumber(left).times(right).toNumber())\n .collect(),\n};\n\nconst division = {\n arity: 2,\n overloads: declare(C.RegularOperator.DIVISION)\n .arithmetic(() => (left, right) => new BigNumber(left).div(right).toNumber())\n .onBinaryTyped(\n [ TypeURL.XSD_INTEGER, TypeURL.XSD_INTEGER ],\n () => (left: number, right: number) => {\n if (right === 0) {\n throw new Err.ExpressionError('Integer division by 0');\n }\n return decimal(new BigNumber(left).div(right).toNumber());\n },\n )\n .collect(),\n};\n\nconst addition = {\n arity: 2,\n overloads: declare(C.RegularOperator.ADDITION)\n .arithmetic(() => (left, right) => new BigNumber(left).plus(right).toNumber())\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateTimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-dateTime\n new E.DateTimeLiteral(addDurationToDateTime(date.typedValue, defaultedDurationRepresentation(dur.typedValue))))\n .copy({\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [E.DateLiteral, E.DurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-date\n new E.DateLiteral(\n addDurationToDateTime(\n defaultedDateTimeRepresentation(date.typedValue),\n defaultedDurationRepresentation(dur.typedValue),\n ),\n ))\n .copy({\n from: [ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ time, dur ]: [E.TimeLiteral, E.DurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-time\n new E.TimeLiteral(\n addDurationToDateTime(\n defaultedDateTimeRepresentation(time.typedValue),\n defaultedDurationRepresentation(dur.typedValue),\n ),\n ))\n .copy({\n from: [ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .collect(),\n};\n\nconst subtraction = {\n arity: 2,\n overloads: declare(C.RegularOperator.SUBTRACTION)\n .arithmetic(() => (left, right) => new BigNumber(left).minus(right).toNumber())\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], ({ defaultTimeZone }) =>\n ([ date1, date2 ]: [ E.DateTimeLiteral, E.DateTimeLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dateTimes;\n new E.DayTimeDurationLiteral(elapsedDuration(date1.typedValue, date2.typedValue, defaultTimeZone)))\n .copy({ from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME, TypeURL.XSD_TIME ]})\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateTimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-dateTime\n new E.DateTimeLiteral(addDurationToDateTime(\n date.typedValue,\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .copy({\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-date\n new E.DateLiteral(addDurationToDateTime(\n defaultedDateTimeRepresentation(date.typedValue),\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .copy({\n from: [ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ time, dur ]: [ E.TimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-date\n new E.TimeLiteral(addDurationToDateTime(\n defaultedDateTimeRepresentation(time.typedValue),\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .collect(),\n};\n\n// https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal\nconst equality = {\n arity: 2,\n overloads: declare(C.RegularOperator.EQUAL)\n .numberTest(() => (left, right) => left === right)\n .stringTest(() => (left, right) => left.localeCompare(right) === 0)\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => ([ left, right ]: E.LangStringLiteral[]) => bool(left.str() === right.str() &&\n left.language === right.language),\n )\n // Fall through: a TypeURL.XSD_STRING is never equal to a TypeURL.RDF_LANG_STRING.\n .set([ TypeAlias.SPARQL_STRINGLY, TypeAlias.SPARQL_STRINGLY ], () => () => bool(false))\n .booleanTest(() => (left, right) => left === right)\n .dateTimeTest(({ defaultTimeZone }) => (left, right) =>\n toUTCDate(left, defaultTimeZone).getTime() === toUTCDate(right, defaultTimeZone).getTime())\n .copy({\n // https://www.w3.org/TR/xpath-functions/#func-date-equal\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ],\n })\n .set(\n [ 'quad', 'quad' ],\n context => ([ left, right ]) => {\n const op: RegularFunction = new RegularFunction(RegularOperator.EQUAL, equality);\n return bool(\n ( op.apply([ ( left).subject, ( right).subject ], context)).coerceEBV() &&\n ( op.apply([ ( left).predicate, ( right).predicate ], context)).coerceEBV() &&\n ( op.apply([ ( left).object, ( right).object ], context)).coerceEBV(),\n );\n },\n false,\n )\n .set(\n [ 'term', 'term' ],\n () => ([ left, right ]) => bool(RDFTermEqual(left, right)),\n false,\n )\n .set([ TypeURL.XSD_DURATION, TypeURL.XSD_DURATION ], () =>\n ([ dur1, dur2 ]: [ E.DurationLiteral, E.DurationLiteral ]) =>\n bool(yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur1.typedValue)) ===\n yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur2.typedValue)) &&\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur1.typedValue)) ===\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur2.typedValue))))\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_TIME ], ({ defaultTimeZone }) =>\n ([ time1, time2 ]: [E.TimeLiteral, E.TimeLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-time-equal\n bool(toUTCDate(defaultedDateTimeRepresentation(time1.typedValue), defaultTimeZone).getTime() ===\n toUTCDate(defaultedDateTimeRepresentation(time2.typedValue), defaultTimeZone).getTime()))\n .collect(),\n};\n\nfunction RDFTermEqual(_left: Term, _right: Term): boolean {\n const left = _left.toRDF();\n const right = _right.toRDF();\n const val = left.equals(right);\n if (!val && (left.termType === 'Literal') && (right.termType === 'Literal')) {\n throw new Err.RDFEqualTypeError([ _left, _right ]);\n }\n return val;\n}\n\nconst inequality = {\n arity: 2,\n overloads: declare(C.RegularOperator.NOT_EQUAL)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n bool(!( regularFunctions[C.RegularOperator.EQUAL]\n .apply([ first, second ], context)).typedValue))\n .collect(),\n};\n\nconst lesserThan = {\n arity: 2,\n overloads: declare(C.RegularOperator.LT)\n .numberTest(() => (left, right) => left < right)\n .stringTest(() => (left, right) => left.localeCompare(right) === -1)\n .booleanTest(() => (left, right) => left < right)\n .set(\n [ 'quad', 'quad' ],\n () => ([ left, right ]) => bool(orderTypes(left.toRDF(), right.toRDF(), true) === -1),\n false,\n )\n .dateTimeTest(({ defaultTimeZone }) => (left, right) =>\n toUTCDate(left, defaultTimeZone).getTime() < toUTCDate(right, defaultTimeZone).getTime())\n .copy({\n // https://www.w3.org/TR/xpath-functions/#func-date-less-than\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ],\n })\n .set([ TypeURL.XSD_YEAR_MONTH_DURATION, TypeURL.XSD_YEAR_MONTH_DURATION ], () =>\n ([ dur1L, dur2L ]: [E.YearMonthDurationLiteral, E.YearMonthDurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-yearMonthDuration-less-than\n bool(yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur1L.typedValue)) <\n yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur2L.typedValue))))\n .set([ TypeURL.XSD_DAY_TIME_DURATION, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ dur1, dur2 ]: [E.DayTimeDurationLiteral, E.DayTimeDurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-dayTimeDuration-greater-than\n bool(dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur1.typedValue)) <\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur2.typedValue))))\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_TIME ], ({ defaultTimeZone }) =>\n ([ time1, time2 ]: [E.TimeLiteral, E.TimeLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-time-less-than\n bool(toUTCDate(defaultedDateTimeRepresentation(time1.typedValue), defaultTimeZone).getTime() <\n toUTCDate(defaultedDateTimeRepresentation(time2.typedValue), defaultTimeZone).getTime()))\n .collect(),\n};\n\nconst greaterThan = {\n arity: 2,\n overloads: declare(C.RegularOperator.GT)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X < Y -> Y > X\n regularFunctions[C.RegularOperator.LT].apply([ second, first ], context))\n .collect(),\n};\n\nconst lesserThanEqual = {\n arity: 2,\n overloads: declare(C.RegularOperator.LTE)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X <= Y -> X < Y || X = Y\n // First check if the first is lesser than the second, then check if they are equal.\n // Doing this, the correct error will be thrown, each type that has a lesserThanEqual has a matching lesserThan.\n bool(\n ( regularFunctions[C.RegularOperator.LT].apply([ first, second ], context)).typedValue ||\n ( regularFunctions[C.RegularOperator.EQUAL].apply([ first, second ], context)).typedValue,\n ))\n .collect(),\n};\n\nconst greaterThanEqual = {\n arity: 2,\n overloads: declare(C.RegularOperator.GTE)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X >= Y -> Y <= X\n regularFunctions[C.RegularOperator.LTE].apply([ second, first ], context))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on RDF Terms\n// https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isIRI\n */\nconst isIRI = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_IRI)\n .onTerm1(() => term => bool(term.termType === 'namedNode'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isBlank\n */\nconst isBlank = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_BLANK)\n .onTerm1(() => term => bool(term.termType === 'blankNode'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isLiteral\n */\nconst isLiteral = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_LITERAL)\n .onTerm1(() => term => bool(term.termType === 'literal'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isNumeric\n */\nconst isNumeric = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_NUMERIC)\n .onNumeric1(() => () => bool(true))\n .onTerm1(() => () => bool(false))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-str\n */\nconst STR = {\n arity: 1,\n overloads: declare(C.RegularOperator.STR)\n .onTerm1(() => term => string(term.str()))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-lang\n */\nconst lang = {\n arity: 1,\n overloads: declare(C.RegularOperator.LANG)\n .onLiteral1(() => lit => string(lit.language ?? ''))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-datatype\n */\nconst datatype = {\n arity: 1,\n overloads: declare(C.RegularOperator.DATATYPE)\n .onLiteral1(() => lit => new E.NamedNode(lit.dataType))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-iri\n */\nconst IRI = {\n arity: 1,\n overloads: declare(C.RegularOperator.IRI)\n .set([ 'namedNode' ], context => (args) => {\n const lit = args[0];\n const iri = resolveRelativeIri(lit.str(), context.baseIRI ?? '');\n return new E.NamedNode(iri);\n })\n .onString1(context => (lit) => {\n const iri = resolveRelativeIri(lit.str(), context.baseIRI ?? '');\n return new E.NamedNode(iri);\n })\n .collect(),\n};\n\n// See special functions\n// const BNODE = {};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strdt\n */\nconst STRDT = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRDT).set(\n [ TypeURL.XSD_STRING, 'namedNode' ],\n ({ superTypeProvider }) => ([ str, iri ]: [E.StringLiteral, E.NamedNode]) => {\n const lit = DF.literal(str.typedValue, DF.namedNode(iri.value));\n return new TermTransformer(superTypeProvider).transformLiteral(lit);\n },\n ).collect(),\n};\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strlang\n */\nconst STRLANG = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRLANG)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (val: string, language: string) => new E.LangStringLiteral(val, language.toLowerCase()),\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-uuid\n */\nconst UUID = {\n arity: 0,\n overloads: declare(C.RegularOperator.UUID)\n .set([], () => () => new E.NamedNode(`urn:uuid:${uuid.v4()}`))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-struuid\n */\nconst STRUUID = {\n arity: 0,\n overloads: declare(C.RegularOperator.STRUUID)\n .set([], () => () => string(uuid.v4()))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on strings\n// https://www.w3.org/TR/sparql11-query/#func-forms\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strlen\n */\nconst STRLEN = {\n arity: 1,\n overloads: declare(C.RegularOperator.STRLEN)\n .onStringly1(() => str => integer([ ...str.typedValue ].length))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-substr\n */\nconst SUBSTR = {\n arity: [ 2, 3 ],\n overloads: declare(C.RegularOperator.SUBSTR)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_INTEGER ],\n () => (source: string, startingLoc: number) => string([ ...source ].slice(startingLoc - 1).join('')),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_INTEGER ],\n () => (source: E.LangStringLiteral, startingLoc: E.NumericLiteral) => {\n const sub = [ ...source.typedValue ].slice(startingLoc.typedValue - 1).join('');\n return langString(sub, source.language);\n },\n )\n .onTernaryTyped([\n TypeURL.XSD_STRING,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_INTEGER,\n ], () => (source: string, startingLoc: number, length: number) =>\n string([ ...source ].slice(startingLoc - 1, length + startingLoc - 1).join('')))\n .onTernary([\n TypeURL.RDF_LANG_STRING,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_INTEGER,\n ], () => (source: E.LangStringLiteral, startingLoc: E.NumericLiteral, length: E.NumericLiteral) => {\n const sub = [ ...source.typedValue ]\n .slice(startingLoc.typedValue - 1, length.typedValue + startingLoc.typedValue - 1).join('');\n return langString(sub, source.language);\n })\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-ucase\n */\nconst UCASE = {\n arity: 1,\n overloads: declare(C.RegularOperator.UCASE)\n .onString1Typed(() => lit => string(lit.toUpperCase()))\n .onLangString1(() => lit => langString(lit.typedValue.toUpperCase(), lit.language))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-lcase\n */\nconst LCASE = {\n arity: 1,\n overloads: declare(C.RegularOperator.LCASE)\n .onString1Typed(() => lit => string(lit.toLowerCase()))\n .onLangString1(() => lit => langString(lit.typedValue.toLowerCase(), lit.language))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strstarts\n * for this and the following functions you'll see (string, langstring) is not allowed. This behaviour is defined in:\n * https://www.w3.org/TR/sparql11-query/#func-arg-compatibility\n */\nconst STRSTARTS = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRSTARTS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.startsWith(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.startsWith(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strends\n */\nconst STRENDS = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRENDS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.endsWith(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.endsWith(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-contains\n */\nconst CONTAINS = {\n arity: 2,\n overloads: declare(C.RegularOperator.CONTAINS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.includes(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.includes(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strbefore\n */\nconst STRBEFORE = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRBEFORE)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => string(arg1.slice(0, Math.max(0, arg1.indexOf(arg2)))),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.StringLiteral) => {\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = arg1.typedValue.slice(0, Math.max(0, a1.indexOf(a2)));\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = arg1.typedValue.slice(0, Math.max(0, a1.indexOf(a2)));\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strafter\n */\nconst STRAFTER = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRAFTER)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => string(arg1.slice(arg1.indexOf(arg2)).slice(arg2.length)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.StringLiteral) => {\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = a1.slice(a1.indexOf(a2)).slice(a2.length);\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = a1.slice(a1.indexOf(a2)).slice(a2.length);\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-encode\n */\nconst ENCODE_FOR_URI = {\n arity: 1,\n overloads: declare(C.RegularOperator.ENCODE_FOR_URI)\n .onStringly1Typed(() => val => string(encodeURI(val))).collect(),\n};\n\n// See special operators\n// const CONCAT = {}\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-langMatches\n */\nconst langmatches = {\n arity: 2,\n overloads: declare(C.RegularOperator.LANG_MATCHES)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (tag: string, range: string) => bool(X.langMatches(tag, range)),\n ).collect(),\n};\n\nfunction regex2(): (text: string, pattern: string) => E.BooleanLiteral {\n return (text: string, pattern: string) => bool(X.matches(text, pattern));\n}\nfunction regex3(): (text: string, pattern: string, flags: string) => E.BooleanLiteral {\n return (text: string, pattern: string, flags: string) => bool(X.matches(text, pattern, flags));\n}\n/**\n * https://www.w3.org/TR/sparql11-query/#func-regex\n */\nconst REGEX = {\n arity: [ 2, 3 ],\n overloads: declare(C.RegularOperator.REGEX)\n .onBinaryTyped([ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ], regex2)\n .onTernaryTyped([ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING, TypeURL.XSD_STRING ], regex3)\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-replace\n */\nconst REPLACE = {\n arity: [ 3, 4 ],\n overloads: declare(C.RegularOperator.REPLACE)\n .onTernaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg: string, pattern: string, replacement: string) =>\n string(X.replace(arg, pattern, replacement)),\n )\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => ([ arg, pattern, replacement ]: [E.LangStringLiteral, E.StringLiteral, E.StringLiteral]) => {\n const result = X.replace(arg.typedValue, pattern.typedValue, replacement.typedValue);\n return langString(result, arg.language);\n },\n )\n .onQuaternaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg: string, pattern: string, replacement: string, flags: string) =>\n string(X.replace(arg, pattern, replacement, flags)),\n )\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => ([ arg, pattern, replacement, flags ]:\n [E.LangStringLiteral, E.StringLiteral, E.StringLiteral, E.StringLiteral]) => {\n const result = X.replace(arg.typedValue, pattern.typedValue, replacement.typedValue, flags.typedValue);\n return langString(result, arg.language);\n },\n )\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on numerics\n// https://www.w3.org/TR/sparql11-query/#func-numerics\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-abs\n */\nconst abs = {\n arity: 1,\n overloads: declare(C.RegularOperator.ABS)\n .numericConverter(() => num => Math.abs(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-round\n */\nconst round = {\n arity: 1,\n overloads: declare(C.RegularOperator.ROUND)\n .numericConverter(() => num => Math.round(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-ceil\n */\nconst ceil = {\n arity: 1,\n overloads: declare(C.RegularOperator.CEIL)\n .numericConverter(() => num => Math.ceil(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-floor\n */\nconst floor = {\n arity: 1,\n overloads: declare(C.RegularOperator.FLOOR)\n .numericConverter(() => num => Math.floor(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#idp2130040\n */\nconst rand = {\n arity: 0,\n overloads: declare(C.RegularOperator.RAND)\n .set([], () => () => double(Math.random()))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on Dates and Times\n// https://www.w3.org/TR/sparql11-query/#func-date-time\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-now\n */\nconst now = {\n arity: 0,\n overloads: declare(C.RegularOperator.NOW).set([], (sharedContext: ICompleteSharedContext) => () =>\n new E.DateTimeLiteral(toDateTimeRepresentation(\n { date: sharedContext.now, timeZone: sharedContext.defaultTimeZone },\n ))).collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-year\n */\nconst year = {\n arity: 1,\n overloads: declare(C.RegularOperator.YEAR)\n .onDateTime1(\n () => date => integer(date.typedValue.year),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [E.DateLiteral ]) => integer(date.typedValue.year))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-month\n */\nconst month = {\n arity: 1,\n overloads: declare(C.RegularOperator.MONTH)\n .onDateTime1(\n () => date => integer(date.typedValue.month),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [ E.DateLiteral]) => integer(date.typedValue.month))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-day\n */\nconst day = {\n arity: 1,\n overloads: declare(C.RegularOperator.DAY)\n .onDateTime1(\n () => date => integer(date.typedValue.day),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [ E.DateLiteral]) => integer(date.typedValue.day))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-hours\n */\nconst hours = {\n arity: 1,\n overloads: declare(C.RegularOperator.HOURS)\n .onDateTime1(\n () => date => integer(date.typedValue.hours),\n )\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.hours))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-minutes\n */\nconst minutes = {\n arity: 1,\n overloads: declare(C.RegularOperator.MINUTES)\n .onDateTime1(() => date => integer(date.typedValue.minutes))\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.minutes))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-seconds\n */\nconst seconds = {\n arity: 1,\n overloads: declare(C.RegularOperator.SECONDS)\n .onDateTime1(() => date => decimal(date.typedValue.seconds))\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.seconds))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-timezone\n */\nconst timezone = {\n arity: 1,\n overloads: declare(C.RegularOperator.TIMEZONE)\n .onDateTime1(\n () => (date) => {\n const duration: Partial = {\n hours: date.typedValue.zoneHours,\n minutes: date.typedValue.zoneMinutes,\n };\n if (duration.hours === undefined && duration.minutes === undefined) {\n throw new Err.InvalidTimezoneCall(date.str());\n }\n return new E.DayTimeDurationLiteral(duration);\n },\n )\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME ]})\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-tz\n */\nconst tz = {\n arity: 1,\n overloads: declare(C.RegularOperator.TZ)\n .onDateTime1(\n () => date => string(extractRawTimeZone(date.str())),\n )\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME ]})\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Hash functions\n// https://www.w3.org/TR/sparql11-query/#func-hash\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-md5\n */\nconst MD5 = {\n arity: 1,\n overloads: declare(C.RegularOperator.MD5)\n .onString1Typed(() => str => string(md5(str)))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha1\n */\nconst SHA1 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA1)\n .onString1Typed(() => str => string(sha1().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha256\n */\nconst SHA256 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA256)\n .onString1Typed(() => str => string(sha256().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha384\n */\nconst SHA384 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA384)\n .onString1Typed(() => str => string(sha384().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha512\n */\nconst SHA512 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA512)\n .onString1Typed(() => str => string(sha512().update(str).digest('hex')))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions for quoted triples\n// https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n// ----------------------------------------------------------------------------\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n */\nconst triple = {\n arity: 3,\n overloads: declare(C.RegularOperator.TRIPLE)\n .onTerm3(\n context => (...args) => new E.Quad(\n DF.quad(args[0].toRDF(), args[1].toRDF(), args[2].toRDF()),\n context.superTypeProvider,\n ),\n )\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#subject\n */\nconst subject = {\n arity: 1,\n overloads: declare(C.RegularOperator.SUBJECT)\n .onQuad1(() => quad => quad.subject)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#predicate\n */\nconst predicate = {\n arity: 1,\n overloads: declare(C.RegularOperator.PREDICATE)\n .onQuad1(() => quad => quad.predicate)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#object\n */\nconst object = {\n arity: 1,\n overloads: declare(C.RegularOperator.OBJECT)\n .onQuad1(() => quad => quad.object)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#istriple\n */\nconst istriple = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_TRIPLE)\n .onTerm1(() => term => bool(term.termType === 'quad'))\n .collect(),\n};\n\n// End definitions.\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n\n/**\n * Collect all the definitions from above into an object\n */\nexport const definitions: Record = {\n // --------------------------------------------------------------------------\n // Operator Mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n // --------------------------------------------------------------------------\n '!': not,\n uplus: unaryPlus,\n uminus: unaryMinus,\n '*': multiplication,\n '/': division,\n '+': addition,\n '-': subtraction,\n '=': equality,\n '!=': inequality,\n '<': lesserThan,\n '>': greaterThan,\n '<=': lesserThanEqual,\n '>=': greaterThanEqual,\n\n // --------------------------------------------------------------------------\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n // --------------------------------------------------------------------------\n isiri: isIRI,\n isuri: isIRI,\n isblank: isBlank,\n isliteral: isLiteral,\n isnumeric: isNumeric,\n str: STR,\n lang,\n datatype,\n iri: IRI,\n uri: IRI,\n // 'BNODE': BNODE (see special operators),\n strdt: STRDT,\n strlang: STRLANG,\n uuid: UUID,\n struuid: STRUUID,\n\n // --------------------------------------------------------------------------\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // --------------------------------------------------------------------------\n strlen: STRLEN,\n substr: SUBSTR,\n ucase: UCASE,\n lcase: LCASE,\n strstarts: STRSTARTS,\n strends: STRENDS,\n contains: CONTAINS,\n strbefore: STRBEFORE,\n strafter: STRAFTER,\n encode_for_uri: ENCODE_FOR_URI,\n // 'concat': CONCAT (see special operators)\n langmatches,\n regex: REGEX,\n replace: REPLACE,\n\n // --------------------------------------------------------------------------\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n // --------------------------------------------------------------------------\n abs,\n round,\n ceil,\n floor,\n rand,\n\n // --------------------------------------------------------------------------\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n // --------------------------------------------------------------------------\n now,\n year,\n month,\n day,\n hours,\n minutes,\n seconds,\n timezone,\n tz,\n\n // --------------------------------------------------------------------------\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n // --------------------------------------------------------------------------\n md5: MD5,\n sha1: SHA1,\n sha256: SHA256,\n sha384: SHA384,\n sha512: SHA512,\n\n // --------------------------------------------------------------------------\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n // --------------------------------------------------------------------------\n triple,\n subject,\n predicate,\n object,\n istriple,\n};\n","import type * as RDF from '@rdfjs/types';\nimport * as uuid from 'uuid';\nimport * as E from '../expressions';\nimport * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { bool, declare, expressionToVar, langString, string } from './Helpers';\nimport type { EvalContextAsync, EvalContextSync, OverloadTree } from '.';\nimport { regularFunctions, specialFunctions } from '.';\n\ntype Term = E.TermExpression;\ntype PTerm = Promise;\n\n// ----------------------------------------------------------------------------\n// Functional forms\n// ----------------------------------------------------------------------------\n\n// BOUND ----------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-bound\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst bound: ISpecialDefinition = {\n arity: 1,\n async applyAsync({ args, mapping }: EvalContextAsync): PTerm {\n return bound_({ args, mapping });\n },\n applySynchronously({ args, mapping }: EvalContextSync): Term {\n return bound_({ args, mapping });\n },\n};\n\nfunction bound_({ args, mapping }: { args: E.Expression[]; mapping: RDF.Bindings }): E.BooleanLiteral {\n const variable = args[0];\n if (variable.expressionType !== E.ExpressionType.Variable) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BOUND);\n }\n const val = mapping.has(expressionToVar(variable));\n return bool(val);\n}\n\n// IF -------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-if\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst ifSPARQL: ISpecialDefinition = {\n arity: 3,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const valFirst = await evaluate(args[0], mapping);\n const ebv = valFirst.coerceEBV();\n return ebv ?\n evaluate(args[1], mapping) :\n evaluate(args[2], mapping);\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const valFirst = evaluate(args[0], mapping);\n const ebv = valFirst.coerceEBV();\n return ebv ?\n evaluate(args[1], mapping) :\n evaluate(args[2], mapping);\n },\n};\n\n// COALESCE -------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-coalesce\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst coalesce: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const errors: Error[] = [];\n for (const expr of args) {\n try {\n return await evaluate(expr, mapping);\n } catch (error: unknown) {\n errors.push( error);\n }\n }\n throw new Err.CoalesceError(errors);\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const errors: Error[] = [];\n for (const expr of args) {\n try {\n return evaluate(expr, mapping);\n } catch (error: unknown) {\n errors.push( error);\n }\n }\n throw new Err.CoalesceError(errors);\n },\n};\n\n// Logical-or (||) ------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-logical-or\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst logicalOr: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = await evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (left) {\n return bool(true);\n }\n const rightTerm = await evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = await evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (!rightError) {\n throw error;\n }\n return bool(true);\n }\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (left) {\n return bool(true);\n }\n const rightTerm = evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (!rightError) {\n throw error;\n }\n return bool(true);\n }\n },\n};\n\n// Logical-and (&&) -----------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-logical-and\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst logicalAnd: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = await evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (!left) {\n return bool(false);\n }\n const rightTerm = await evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = await evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (rightError) {\n throw error;\n }\n return bool(false);\n }\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (!left) {\n return bool(false);\n }\n const rightTerm = evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (rightError) {\n throw error;\n }\n return bool(false);\n }\n },\n};\n\n// SameTerm -------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sameTerm\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst sameTerm: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args.map(arg => evaluate(arg, mapping));\n const [ left, right ] = await Promise.all([ leftExpr, rightExpr ]);\n return bool(left.toRDF().equals(right.toRDF()));\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ left, right ] = args.map(arg => evaluate(arg, mapping));\n return bool(left.toRDF().equals(right.toRDF()));\n },\n};\n\n// IN -------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-in\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst inSPARQL: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length > 0;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate } = context;\n const [ leftExpr, ...remaining ] = args;\n const left = await evaluate(leftExpr, mapping);\n return inRecursiveAsync(left, { ...context, args: remaining }, []);\n },\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate } = context;\n const [ leftExpr, ...remaining ] = args;\n const left = evaluate(leftExpr, mapping);\n return inRecursiveSync(left, { ...context, args: remaining }, []);\n },\n};\n\nasync function inRecursiveAsync(\n needle: Term,\n context: EvalContextAsync,\n results: (Error | false)[],\n): PTerm {\n const { args, mapping, evaluate } = context;\n if (args.length === 0) {\n const noErrors = results.every(val => !val);\n return noErrors ? bool(false) : Promise.reject(new Err.InError(results));\n }\n\n try {\n const nextExpression = args.shift();\n // We know this will not be undefined because we check args.length === 0\n const next = await evaluate(nextExpression!, mapping);\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n if (( isEqual.apply([ needle, next ], context)).typedValue) {\n return bool(true);\n }\n return inRecursiveAsync(needle, context, [ ...results, false ]);\n } catch (error: unknown) {\n return inRecursiveAsync(needle, context, [ ...results, error ]);\n }\n}\n\nfunction inRecursiveSync(\n needle: Term,\n context: EvalContextSync,\n results: (Error | false)[],\n): Term {\n const { args, mapping, evaluate } = context;\n if (args.length === 0) {\n const noErrors = results.every(val => !val);\n if (noErrors) {\n return bool(false);\n }\n throw new Err.InError(results);\n }\n\n try {\n const nextExpression = args.shift();\n // We know this will not be undefined because we check args.length === 0\n const next = evaluate(nextExpression!, mapping);\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n if (( isEqual.apply([ needle, next ], context)).typedValue) {\n return bool(true);\n }\n return inRecursiveSync(needle, context, [ ...results, false ]);\n } catch (error: unknown) {\n return inRecursiveSync(needle, context, [ ...results, error ]);\n }\n}\n\n// NOT IN ---------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-not-in\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst notInSPARQL: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length > 0;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const _in = specialFunctions[C.SpecialOperator.IN];\n const isIn = await _in.applyAsync(context);\n return bool(!( isIn).typedValue);\n },\n applySynchronously(context: EvalContextSync): Term {\n const _in = specialFunctions[C.SpecialOperator.IN];\n const isIn = _in.applySynchronously(context);\n return bool(!( isIn).typedValue);\n },\n};\n\n// ----------------------------------------------------------------------------\n// Annoying functions\n// ----------------------------------------------------------------------------\n\n// CONCAT ---------------------------------------------------------------------\n\n/**\n * This OverloadTree with the constant function will handle both type promotion and subtype-substitution\n */\nconst concatTree: OverloadTree = declare(C.SpecialOperator.CONCAT).onStringly1(() => expr => expr)\n .collect();\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-concat\n */\nconst concat: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate, functionArgumentsCache, superTypeProvider } = context;\n const pLits: Promise>[] = args\n .map(async expr => evaluate(expr, mapping))\n .map(async(pTerm) => {\n const operation = concatTree.search([ await pTerm ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.CONCAT);\n }\n return > operation(context)([ await pTerm ]);\n });\n const lits = await Promise.all(pLits);\n const strings = lits.map(lit => lit.typedValue);\n const joined = strings.join('');\n const lang = langAllEqual(lits) ? lits[0].language : undefined;\n return lang ? langString(joined, lang) : string(joined);\n },\n\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const lits = args\n .map(expr => evaluate(expr, mapping))\n .map((pTerm) => {\n const operation = concatTree.search([ pTerm ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.CONCAT);\n }\n return > operation(context)([ pTerm ]);\n });\n const strings = lits.map(lit => lit.typedValue);\n const joined = strings.join('');\n const lang = langAllEqual(lits) ? lits[0].language : undefined;\n return lang ? langString(joined, lang) : string(joined);\n },\n};\n\nfunction langAllEqual(lits: E.Literal[]): boolean {\n return lits.length > 0 && lits.every(lit => lit.language === lits[0].language);\n}\n\n// ----------------------------------------------------------------------------\n// Context dependant functions\n// ----------------------------------------------------------------------------\n\n// BNODE ---------------------------------------------------------------------\n\n/**\n * This OverloadTree with the constant function will handle both type promotion and subtype-substitution\n */\nconst bnodeTree = declare(C.SpecialOperator.BNODE).onString1(() => arg => arg).collect();\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-bnode\n * id has to be distinct over all id's in dataset\n */\nconst BNODE: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length === 0 || args.length === 1;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const input = args.length === 1 ?\n await evaluate(args[0], mapping) :\n undefined;\n\n let strInput: string | undefined;\n if (input) {\n const operation = bnodeTree.search([ input ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BNODE);\n }\n strInput = operation(context)([ input ]).str();\n }\n\n if (context.bnode) {\n const bnode = await context.bnode(strInput);\n return new E.BlankNode(bnode);\n }\n\n return BNODE_(strInput);\n },\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const input = args.length === 1 ?\n evaluate(args[0], mapping) :\n undefined;\n\n let strInput: string | undefined;\n if (input) {\n const operation = bnodeTree.search([ input ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BNODE);\n }\n strInput = operation(context)([ input ]).str();\n }\n\n if (context.bnode) {\n const bnode = context.bnode(strInput);\n return new E.BlankNode(bnode);\n }\n\n return BNODE_(strInput);\n },\n};\n\nfunction BNODE_(input?: string): E.BlankNode {\n return new E.BlankNode(input ?? uuid.v4());\n}\n\n// ----------------------------------------------------------------------------\n// Wrap these declarations into functions\n// ----------------------------------------------------------------------------\n\nexport interface ISpecialDefinition {\n arity: number;\n applyAsync: E.SpecialApplicationAsync;\n applySynchronously: E.SpecialApplicationSync;\n checkArity?: (args: E.Expression[]) => boolean;\n}\n\nexport const specialDefinitions: Record = {\n // --------------------------------------------------------------------------\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // --------------------------------------------------------------------------\n bound,\n if: ifSPARQL,\n coalesce,\n '&&': logicalAnd,\n '||': logicalOr,\n sameterm: sameTerm,\n in: inSPARQL,\n notin: notInSPARQL,\n\n // Annoying functions\n concat,\n\n // Context dependent functions\n bnode: BNODE,\n};\n","// https://www.w3.org/TR/xpath-functions/#func-matches\n// https://www.w3.org/TR/xpath-functions/#flags\nexport function matches(text: string, pattern: string, flags?: string): boolean {\n // TODO: Only flags 'i' and 'm' match between XPath and JS.\n // 's', 'x', 'q', would need proper implementation.\n const reg = new RegExp(pattern, flags);\n return reg.test(text);\n}\n\n// TODO: Fix flags\n// https://www.w3.org/TR/xpath-functions/#func-replace\nexport function replace(arg: string, pattern: string, replacement: string, flags?: string): string {\n let reg = new RegExp(pattern, flags);\n if (!reg.global) {\n const flags_ = flags ?? '';\n reg = new RegExp(pattern, `${flags_}g`);\n }\n return arg.replace(reg, replacement);\n}\n\n// TODO: Not an XPath function\n// TODO: Publish as package\n// https://www.ietf.org/rfc/rfc4647.txt\n// https://www.w3.org/TR/sparql11-query/#func-langMatches\nexport function langMatches(tag: string, range: string): boolean {\n const langTags = tag.split('-');\n const rangeTags = range.split('-');\n\n if (!_matchLangTag(rangeTags[0], langTags[0]) &&\n !_isWildCard(langTags[0])) {\n return false;\n }\n\n let lI = 1;\n let rI = 1;\n while (rI < rangeTags.length) {\n if (_isWildCard(rangeTags[rI])) {\n rI++;\n continue;\n }\n if (lI === langTags.length) {\n return false;\n }\n if (_matchLangTag(rangeTags[rI], langTags[lI])) {\n lI++;\n rI++;\n continue;\n }\n if (langTags[lI].length === 1) {\n return false;\n }\n lI++;\n }\n return true;\n}\n\nfunction _isWildCard(tag: string): boolean {\n return tag === '*';\n}\n\nfunction _matchLangTag(left: string, right: string): boolean {\n const matchInitial = new RegExp(`/${left}/`, 'iu');\n return matchInitial.test(`/${right}/`);\n}\n","import { Algebra as Alg } from 'sparqlalgebrajs';\nimport type { AsyncExtensionFunction, AsyncExtensionFunctionCreator } from '../evaluators/AsyncEvaluator';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type { SyncExtensionFunction, SyncExtensionFunctionCreator } from '../evaluators/SyncEvaluator';\nimport * as E from '../expressions';\nimport type { AsyncExtensionApplication, SimpleApplication } from '../expressions';\nimport { namedFunctions, regularFunctions, specialFunctions } from '../functions';\nimport * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { ExtensionFunctionError } from '../util/Errors';\nimport type { ITermTransformer } from './TermTransformer';\nimport { TermTransformer } from './TermTransformer';\n\ntype FunctionCreatorConfig = { type: 'sync'; creator: SyncExtensionFunctionCreator } |\n{ type: 'async'; creator: AsyncExtensionFunctionCreator };\n\ntype AlgebraTransformConfig = ICompleteSharedContext & FunctionCreatorConfig;\n\nexport interface IAlgebraTransformer extends ITermTransformer {\n transformAlgebra: (expr: Alg.Expression) => E.Expression;\n}\n\nexport class AlgebraTransformer extends TermTransformer implements IAlgebraTransformer {\n private readonly creatorConfig: FunctionCreatorConfig;\n public constructor(protected readonly algebraConfig: AlgebraTransformConfig) {\n super(algebraConfig.superTypeProvider);\n this.creatorConfig = { type: algebraConfig.type, creator: algebraConfig.creator };\n }\n\n public transformAlgebra(expr: Alg.Expression): E.Expression {\n const types = Alg.expressionTypes;\n\n switch (expr.expressionType) {\n case types.TERM:\n return this.transformTerm(expr);\n case types.OPERATOR:\n return this.transformOperator(expr);\n case types.NAMED:\n return this.transformNamed(expr);\n case types.EXISTENCE:\n return AlgebraTransformer.transformExistence(expr);\n case types.AGGREGATE:\n return AlgebraTransformer.transformAggregate(expr);\n case types.WILDCARD:\n return AlgebraTransformer.transformWildcard(expr);\n }\n }\n\n private static transformWildcard(term: Alg.WildcardExpression): E.Expression {\n return new E.NamedNode(term.wildcard.value);\n }\n\n private transformOperator(expr: Alg.OperatorExpression): E.OperatorExpression | E.SpecialOperatorExpression {\n const operator = expr.operator.toLowerCase();\n if (C.SpecialOperators.has(operator)) {\n const specialOp = operator;\n const specialArgs = expr.args.map(arg => this.transformAlgebra(arg));\n const specialFunc = specialFunctions[specialOp];\n if (!specialFunc.checkArity(specialArgs)) {\n throw new Err.InvalidArity(specialArgs, specialOp);\n }\n return new E.SpecialOperator(specialArgs, specialFunc.applyAsync, specialFunc.applySynchronously);\n }\n if (!C.Operators.has(operator)) {\n throw new Err.UnknownOperator(expr.operator);\n }\n const regularOp = operator;\n const regularArgs = expr.args.map(arg => this.transformAlgebra(arg));\n const regularFunc = regularFunctions[regularOp];\n if (!AlgebraTransformer.hasCorrectArity(regularArgs, regularFunc.arity)) {\n throw new Err.InvalidArity(regularArgs, regularOp);\n }\n return new E.Operator(regularArgs, args => regularFunc.apply(args, this.algebraConfig));\n }\n\n private wrapSyncFunction(func: SyncExtensionFunction, name: string): SimpleApplication {\n return (args) => {\n try {\n const res = func(args.map(arg => arg.toRDF()));\n return this.transformRDFTermUnsafe(res);\n } catch (error: unknown) {\n throw new ExtensionFunctionError(name, error);\n }\n };\n }\n\n private wrapAsyncFunction(func: AsyncExtensionFunction, name: string): AsyncExtensionApplication {\n return async(args) => {\n try {\n const res = await func(args.map(arg => arg.toRDF()));\n return this.transformRDFTermUnsafe(res);\n } catch (error: unknown) {\n throw new ExtensionFunctionError(name, error);\n }\n };\n }\n\n // TODO: Support passing functions to override default behaviour;\n private transformNamed(expr: Alg.NamedExpression):\n E.NamedExpression | E.AsyncExtensionExpression | E.SyncExtensionExpression {\n const funcName = expr.name.value;\n const namedArgs = expr.args.map(arg => this.transformAlgebra(arg));\n if (C.NamedOperators.has(funcName)) {\n // Return a basic named expression\n const op = expr.name.value;\n const namedFunc = namedFunctions[op];\n return new E.Named(expr.name, namedArgs, args => namedFunc.apply(args, this.algebraConfig));\n }\n if (this.creatorConfig.type === 'sync') {\n // Expression might be extension function, check this for the sync\n const syncExtensionFunc = this.creatorConfig.creator(expr.name);\n if (syncExtensionFunc) {\n const simpleAppl = this.wrapSyncFunction(syncExtensionFunc, expr.name.value);\n return new E.SyncExtension(expr.name, namedArgs, simpleAppl);\n }\n } else {\n // The expression might be an extension function, check this for the async case\n const asyncExtensionFunc = this.creatorConfig.creator(expr.name);\n if (asyncExtensionFunc) {\n const asyncAppl = this.wrapAsyncFunction(asyncExtensionFunc, expr.name.value);\n return new E.AsyncExtension(expr.name, namedArgs, asyncAppl);\n }\n }\n throw new Err.UnknownNamedOperator(expr.name.value);\n }\n\n private static hasCorrectArity(args: E.Expression[], arity: number | number[]): boolean {\n // If the function has overloaded arity, the actual arity needs to be present.\n if (Array.isArray(arity)) {\n return arity.includes(args.length);\n }\n\n return args.length === arity;\n }\n\n public static transformAggregate(expr: Alg.AggregateExpression): E.Aggregate {\n const name = expr.aggregator;\n return new E.Aggregate(name, expr);\n }\n\n public static transformExistence(expr: Alg.ExistenceExpression): E.Existence {\n return new E.Existence(expr);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RDFString from 'rdf-string';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport { Algebra } from 'sparqlalgebrajs';\nimport * as E from '../expressions';\nimport { TypeURL } from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { isExpressionError } from '../util/Errors';\nimport {\n parseDate,\n parseDateTime,\n parseDayTimeDuration,\n parseDuration,\n parseTime,\n parseYearMonthDuration,\n} from '../util/Parsing';\nimport * as P from '../util/Parsing';\nimport { getSuperTypeDict } from '../util/TypeHandling';\nimport type { ISuperTypeProvider, GeneralSuperTypeDict } from '../util/TypeHandling';\n\nexport interface ITermTransformer {\n transformRDFTermUnsafe: (term: RDF.Term) => E.Term;\n transformLiteral: (lit: RDF.Literal) => E.Literal;\n}\n\nexport class TermTransformer implements ITermTransformer {\n public constructor(protected readonly superTypeProvider: ISuperTypeProvider) {}\n\n /**\n * Transforms an RDF term to the internal representation of a term,\n * assuming it is not a variable, which would be an expression (internally).\n *\n * @param term RDF term to transform into internal representation of a term\n */\n public transformRDFTermUnsafe(term: RDF.Term): E.Term {\n return this.transformTerm({\n term,\n type: Algebra.types.EXPRESSION,\n expressionType: Algebra.expressionTypes.TERM,\n });\n }\n\n protected transformTerm(term: Alg.TermExpression): E.Expression {\n if (!term.term) {\n throw new Err.InvalidExpression(term);\n }\n\n switch (term.term.termType) {\n case 'Variable':\n return new E.Variable(RDFString.termToString(term.term));\n case 'Literal':\n return this.transformLiteral(term.term);\n case 'NamedNode':\n return new E.NamedNode(term.term.value);\n case 'BlankNode':\n return new E.BlankNode(term.term.value);\n case 'Quad':\n return new E.Quad(term.term, this.superTypeProvider);\n default:\n throw new Err.InvalidTermType(term);\n }\n }\n\n /**\n * @param lit the rdf literal we want to transform to an internal Literal expression.\n */\n public transformLiteral(lit: RDF.Literal): E.Literal {\n // Both here and within the switch we transform to LangStringLiteral or StringLiteral.\n // We do this when we detect a simple literal being used.\n // Original issue regarding this behaviour: https://github.com/w3c/sparql-12/issues/112\n if (!lit.datatype || [ null, undefined, '' ].includes(lit.datatype.value)) {\n return lit.language ?\n new E.LangStringLiteral(lit.value, lit.language) :\n new E.StringLiteral(lit.value);\n }\n\n const dataType = lit.datatype.value;\n const superTypeDict: GeneralSuperTypeDict = getSuperTypeDict(dataType, this.superTypeProvider);\n\n // The order of checking matters! Check most specific types first!\n try {\n if (TypeURL.XSD_STRING in superTypeDict) {\n return new E.StringLiteral(lit.value, dataType);\n }\n if (TypeURL.RDF_LANG_STRING in superTypeDict) {\n return new E.LangStringLiteral(lit.value, lit.language);\n }\n if (TypeURL.XSD_YEAR_MONTH_DURATION in superTypeDict) {\n return new E.YearMonthDurationLiteral(parseYearMonthDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DAY_TIME_DURATION in superTypeDict) {\n return new E.DayTimeDurationLiteral(parseDayTimeDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DURATION in superTypeDict) {\n return new E.DurationLiteral(parseDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE_TIME in superTypeDict) {\n const dateVal: Date = new Date(lit.value);\n if (Number.isNaN(dateVal.getTime())) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.DateTimeLiteral(parseDateTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE in superTypeDict) {\n return new E.DateLiteral(parseDate(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_TIME in superTypeDict) {\n return new E.TimeLiteral(parseTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_BOOLEAN in superTypeDict) {\n if (lit.value !== 'true' && lit.value !== 'false' && lit.value !== '1' && lit.value !== '0') {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.BooleanLiteral(lit.value === 'true' || lit.value === '1', lit.value);\n }\n if (TypeURL.XSD_DECIMAL in superTypeDict) {\n const intVal: number | undefined = P.parseXSDDecimal(lit.value);\n if (intVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (TypeURL.XSD_INTEGER in superTypeDict) {\n return new E.IntegerLiteral(intVal, dataType, lit.value);\n }\n // If type is not an integer it's just a decimal.\n return new E.DecimalLiteral(intVal, dataType, lit.value);\n }\n const isFloat = TypeURL.XSD_FLOAT in superTypeDict;\n const isDouble = TypeURL.XSD_DOUBLE in superTypeDict;\n if (isFloat || isDouble) {\n const doubleVal: number | undefined = P.parseXSDFloat(lit.value);\n if (doubleVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (isFloat) {\n return new E.FloatLiteral(doubleVal, dataType, lit.value);\n }\n return new E.DoubleLiteral(doubleVal, dataType, lit.value);\n }\n return new E.Literal(lit.value, dataType, lit.value);\n } catch (error: unknown) {\n if (error instanceof Error && isExpressionError(error)) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n throw error;\n }\n }\n}\n","export type KnownLiteralTypes = TypeAlias | TypeURL;\n\nexport enum TypeAlias {\n // Numeric is everything defined in https://www.w3.org/TR/sparql11-query/#operandDataTypes\n SPARQL_NUMERIC = 'SPARQL_NUMERIC',\n /**\n * Stringly is everything defined in https://www.w3.org/TR/sparql11-query/#func-strings\n * In other words it is a simple literal, a plain literal with language tag, or a literal with datatype xsd:string\n * In other words, since expression-evaluator transforms a simple literal to xsd_string.\n * It is RDF_LANG_STRING or XSD_STRING.\n * Reasons for this are mentioned here: w3c/sparql-12#112\n */\n SPARQL_STRINGLY = 'SPARQL_STRINGLY',\n}\n\nexport enum TypeURL {\n XSD_ANY_URI = 'http://www.w3.org/2001/XMLSchema#anyURI',\n XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string',\n RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n\n XSD_BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n\n XSD_DATE_TIME = 'http://www.w3.org/2001/XMLSchema#dateTime',\n XSD_DATE_TIME_STAMP = 'http://www.w3.org/2001/XMLSchema#dateTimeStamp',\n XSD_DATE = 'http://www.w3.org/2001/XMLSchema#date',\n\n XSD_G_MONTH = 'http://www.w3.org/2001/XMLSchema#gMonth',\n XSD_G_MONTHDAY = 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n XSD_G_YEAR = 'http://www.w3.org/2001/XMLSchema#gYear',\n XSD_G_YEAR_MONTH = 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n XSD_TIME = 'http://www.w3.org/2001/XMLSchema#time',\n XSD_G_DAY = 'http://www.w3.org/2001/XMLSchema#gDay',\n\n // Numeric types\n XSD_DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n XSD_FLOAT = 'http://www.w3.org/2001/XMLSchema#float',\n XSD_DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n\n // Derived numeric types\n XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n\n XSD_NON_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n XSD_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n\n XSD_LONG = 'http://www.w3.org/2001/XMLSchema#long',\n XSD_INT = 'http://www.w3.org/2001/XMLSchema#int',\n XSD_SHORT = 'http://www.w3.org/2001/XMLSchema#short',\n XSD_BYTE = 'http://www.w3.org/2001/XMLSchema#byte',\n\n XSD_NON_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n XSD_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n XSD_UNSIGNED_LONG = 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n XSD_UNSIGNED_INT = 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n XSD_UNSIGNED_SHORT = 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n XSD_UNSIGNED_BYTE = 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n\n // Derived String Type\n XSD_NORMALIZED_STRING = 'http://www.w3.org/2001/XMLSchema#normalizedString',\n XSD_TOKEN = 'http://www.w3.org/2001/XMLSchema#token',\n XSD_LANGUAGE = 'http://www.w3.org/2001/XMLSchema#language',\n XSD_NM_TOKEN = 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n\n XSD_NAME = 'http://www.w3.org/2001/XMLSchema#name',\n XSD_NC_NAME = 'http://www.w3.org/2001/XMLSchema#NCName',\n XSD_ENTITY = 'http://www.w3.org/2001/XMLSchema#ENTITY',\n XSD_ID = 'http://www.w3.org/2001/XMLSchema#ID',\n XSD_ID_REF = 'http://www.w3.org/2001/XMLSchema#IDREF',\n\n // Other types\n XSD_DURATION = 'http://www.w3.org/2001/XMLSchema#duration',\n XSD_YEAR_MONTH_DURATION = 'http://www.w3.org/2001/XMLSchema#yearMonthDuration',\n XSD_DAY_TIME_DURATION = 'http://www.w3.org/2001/XMLSchema#dayTimeDuration',\n}\n\n// ----------------------------------------------------------------------------\n// Operators\n// ----------------------------------------------------------------------------\n\nexport type Operator = RegularOperator | SpecialOperator;\n\n// TODO: Remove unneeded double typing\nexport enum RegularOperator {\n // Operator mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n NOT = '!',\n UMINUS = 'uminus',\n UPLUS = 'uplus',\n // LOGICAL_AND // See SpecialOperators\n // LOGICAL_OR // See SpecialOperators\n\n EQUAL = '=',\n NOT_EQUAL = '!=',\n LT = '<',\n GT = '>',\n LTE = '<=',\n GTE = '>=',\n\n MULTIPLICATION = '*',\n DIVISION = '/',\n ADDITION = '+',\n SUBTRACTION = '-',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // See SpecialOperators\n\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n IS_IRI = 'isiri',\n IS_URI = 'isuri',\n IS_BLANK = 'isblank',\n IS_LITERAL = 'isliteral',\n IS_NUMERIC = 'isnumeric',\n STR = 'str',\n LANG = 'lang',\n DATATYPE = 'datatype',\n IRI = 'iri',\n URI = 'uri',\n // BNODE = 'BNODE', (see special operators)\n STRDT = 'strdt',\n STRLANG = 'strlang',\n UUID = 'uuid',\n STRUUID = 'struuid',\n\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-strings\n STRLEN = 'strlen',\n SUBSTR = 'substr',\n UCASE = 'ucase',\n LCASE = 'lcase',\n STRSTARTS = 'strstarts',\n STRENDS = 'strends',\n CONTAINS = 'contains',\n STRBEFORE = 'strbefore',\n STRAFTER = 'strafter',\n ENCODE_FOR_URI = 'encode_for_uri',\n // CONCAT = 'concat' (see special operators)\n LANG_MATCHES = 'langmatches',\n REGEX = 'regex',\n REPLACE = 'replace',\n\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n ABS = 'abs',\n ROUND = 'round',\n CEIL = 'ceil',\n FLOOR = 'floor',\n RAND = 'rand',\n\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n NOW = 'now',\n YEAR = 'year',\n MONTH = 'month',\n DAY = 'day',\n HOURS = 'hours',\n MINUTES = 'minutes',\n SECONDS = 'seconds',\n TIMEZONE = 'timezone',\n TZ = 'tz',\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n MD5 = 'md5',\n SHA1 = 'sha1',\n SHA256 = 'sha256',\n SHA384 = 'sha384',\n SHA512 = 'sha512',\n\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // See Named Operators\n\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n TRIPLE = 'triple',\n SUBJECT = 'subject',\n PREDICATE = 'predicate',\n OBJECT = 'object',\n IS_TRIPLE = 'istriple',\n}\n\nexport enum SpecialOperator {\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n BOUND = 'bound',\n IF = 'if',\n COALESCE = 'coalesce',\n // EXISTENCE = 'existence',\n LOGICAL_OR = '||',\n LOGICAL_AND = '&&',\n // EQUAL = '=', // See RegularOperators\n SAME_TERM = 'sameterm',\n IN = 'in',\n NOT_IN = 'notin',\n\n // Annoying functions - Has variable arity\n CONCAT = 'concat',\n\n // Context dependant functions\n BNODE = 'bnode',\n}\n\nexport const RegularOperators: Set = new Set(Object.values(RegularOperator));\nexport const SpecialOperators: Set = new Set(Object.values(SpecialOperator));\nexport const Operators = new Set([ ...RegularOperators, ...SpecialOperators ]);\n\nexport enum SetFunction {\n COUNT = 'count',\n SUM = 'sum',\n MIN = 'min',\n MAX = 'max',\n AVG = 'avg',\n GROUP_CONCAT = 'group_concat',\n SAMPLE = 'sample',\n}\nexport const SetFunctions = new Set(Object.values(SetFunction));\n\nexport type NamedOperator =\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n TypeURL.XSD_STRING\n | TypeURL.XSD_FLOAT\n | TypeURL.XSD_DOUBLE\n | TypeURL.XSD_DECIMAL\n | TypeURL.XSD_INTEGER\n | TypeURL.XSD_DATE_TIME\n | TypeURL.XSD_DATE\n | TypeURL.XSD_BOOLEAN\n | TypeURL.XSD_TIME\n | TypeURL.XSD_DURATION\n | TypeURL.XSD_DAY_TIME_DURATION\n | TypeURL.XSD_YEAR_MONTH_DURATION;\n\nexport const NamedOperators = new Set([\n TypeURL.XSD_STRING,\n TypeURL.XSD_FLOAT,\n TypeURL.XSD_DOUBLE,\n TypeURL.XSD_DECIMAL,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_DATE_TIME,\n TypeURL.XSD_DATE,\n TypeURL.XSD_BOOLEAN,\n TypeURL.XSD_TIME,\n TypeURL.XSD_DURATION,\n TypeURL.XSD_DAY_TIME_DURATION,\n TypeURL.XSD_YEAR_MONTH_DURATION,\n]);\n","export interface ITimeZoneRepresentation {\n // https://www.w3.org/TR/xpath-functions/#func-implicit-timezone\n // Type is a dayTimeDuration.\n // We use a separate dataType since it makes TS type modifications and JS object copying easier.\n zoneHours: number;\n zoneMinutes: number;\n}\n\nexport interface IDateRepresentation extends Partial {\n year: number;\n month: number;\n day: number;\n}\n\nexport interface ITimeRepresentation extends Partial {\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nexport interface IDayTimeDurationRepresentation {\n hours: number;\n minutes: number;\n seconds: number;\n day: number;\n}\n\nexport interface IYearMonthDurationRepresentation {\n year: number;\n month: number;\n}\n\nexport type IDurationRepresentation = IYearMonthDurationRepresentation & IDayTimeDurationRepresentation;\nexport type IDateTimeRepresentation = IDateRepresentation & ITimeRepresentation;\n\n// Important is to notice JS and XSD datatypes have different defaulted values\n// | Field | Default in JS | Default in XSD_DayTime | Default in XSD_Duration |\n// | Month | 0 | 1 | 0 |\n// | Day | 1 | 1 | 0 |\n\nexport function defaultedDayTimeDurationRepresentation(rep: Partial):\nIDayTimeDurationRepresentation {\n return {\n day: rep.day ?? 0,\n hours: rep.hours ?? 0,\n minutes: rep.minutes ?? 0,\n seconds: rep.seconds ?? 0,\n };\n}\n\nexport function defaultedYearMonthDurationRepresentation(rep: Partial):\nIYearMonthDurationRepresentation {\n return {\n year: rep.year ?? 0,\n month: rep.month ?? 0,\n };\n}\n\nexport function defaultedDurationRepresentation(\n rep: Partial,\n): IDurationRepresentation {\n return {\n ...defaultedDayTimeDurationRepresentation(rep),\n ...defaultedYearMonthDurationRepresentation(rep),\n };\n}\n\nexport function simplifyDurationRepresentation(rep: Partial):\nPartial {\n const temp = defaultedDurationRepresentation(rep);\n const res: Partial = {};\n\n // Simplify year part\n const years = temp.year + Math.trunc(temp.month / 12);\n if (years) {\n res.year = years;\n temp.month %= 12;\n }\n if (temp.month) {\n res.month = temp.month;\n }\n\n // Simplify day part\n const days = temp.day + Math.trunc(temp.hours / 24) +\n Math.trunc(temp.minutes / (24 * 60)) + Math.trunc(temp.seconds / (24 * 60 * 60));\n if (days) {\n res.day = days;\n temp.hours %= 24;\n temp.minutes %= 24 * 60;\n temp.seconds %= 24 * 60 * 60;\n }\n const hours = temp.hours + Math.trunc(temp.minutes / 60) +\n Math.trunc(temp.seconds / (60 * 60));\n if (hours) {\n res.hours = hours;\n temp.minutes %= 60;\n temp.seconds %= 60 * 60;\n }\n const minutes = temp.minutes + Math.trunc(temp.seconds / 60);\n if (minutes) {\n res.minutes = minutes;\n temp.seconds %= 60;\n }\n if (temp.seconds) {\n res.seconds = temp.seconds;\n }\n return res;\n}\n\nexport function defaultedDateTimeRepresentation(rep: Partial): IDateTimeRepresentation {\n return {\n ...rep,\n day: rep.day ?? 1,\n hours: rep.hours ?? 0,\n month: rep.month ?? 1,\n year: rep.year ?? 0,\n seconds: rep.seconds ?? 0,\n minutes: rep.minutes ?? 0,\n };\n}\n\nexport function toDateTimeRepresentation({ date, timeZone }:\n{ date: Date; timeZone: ITimeZoneRepresentation }): IDateTimeRepresentation {\n return {\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n zoneHours: timeZone.zoneHours,\n zoneMinutes: timeZone.zoneMinutes,\n };\n}\n\nexport function negateDuration(dur: Partial): Partial {\n return {\n year: dur.year === undefined ? undefined : -1 * dur.year,\n month: dur.month === undefined ? undefined : -1 * dur.month,\n day: dur.day === undefined ? undefined : -1 * dur.day,\n hours: dur.hours === undefined ? undefined : -1 * dur.hours,\n minutes: dur.minutes === undefined ? undefined : -1 * dur.minutes,\n seconds: dur.seconds === undefined ? undefined : -1 * dur.seconds,\n };\n}\n\nexport function toJSDate(date: IDateTimeRepresentation): Date {\n // The given hours will be assumed to be local time.\n const res = new Date(\n date.year,\n date.month - 1,\n date.day,\n date.hours,\n date.minutes,\n Math.trunc(date.seconds),\n (date.seconds % 1) * 1_000,\n );\n if (date.year >= 0 && date.year < 100) {\n // Special rule of date has gone int action:\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date#individual_date_and_time_component_values\n\n const jumpDeltaOfDate = 1_900;\n res.setFullYear(res.getFullYear() - jumpDeltaOfDate);\n }\n return res;\n}\n\nexport function toUTCDate(date: Partial, defaultTimezone: ITimeZoneRepresentation): Date {\n const localTime = toJSDate(defaultedDateTimeRepresentation(date));\n // This date has been constructed in machine local time, now we alter it to become UTC and convert to correct timezone\n\n // Correction needed from local machine timezone to UTC\n const minutesCorrectionLocal = localTime.getTimezoneOffset();\n // Correction needed from UTC to provided timeZone\n const hourCorrectionUTC = date.zoneHours ?? defaultTimezone.zoneHours;\n const minutesCorrectionUTC = date.zoneMinutes ?? defaultTimezone.zoneMinutes;\n return new Date(\n localTime.getTime() - (minutesCorrectionLocal + hourCorrectionUTC * 60 + minutesCorrectionUTC) * 60 * 1_000,\n );\n}\n\nexport function trimToYearMonthDuration(dur: Partial):\nPartial {\n return {\n year: dur.year,\n month: dur.month,\n };\n}\n\nexport function trimToDayTimeDuration(dur: Partial): Partial {\n return {\n day: dur.day,\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n };\n}\n\nexport function yearMonthDurationsToMonths(dur: IYearMonthDurationRepresentation): number {\n return dur.year * 12 + dur.month;\n}\n\nexport function dayTimeDurationsToSeconds(dur: IDayTimeDurationRepresentation): number {\n return (((dur.day * 24) + dur.hours) * 60 + dur.minutes) * 60 + dur.seconds;\n}\n\nexport function extractRawTimeZone(zoneContained: string): string {\n const extraction = /(Z|([+-]\\d\\d:\\d\\d))?$/u.exec(zoneContained);\n // It is safe to cast here because the empty string can always match.\n return extraction![0];\n}\n\nexport function extractTimeZone(date: Date): ITimeZoneRepresentation {\n return {\n zoneHours: date.getTimezoneOffset() / 60,\n zoneMinutes: date.getTimezoneOffset() % 60,\n };\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type * as E from '../expressions';\nimport type * as C from './Consts';\n\n/**\n * This class of error will be thrown when an expression errors.\n * Various reasons this could happen are:\n * - invalid types for the given operator\n * - unbound variables\n * - invalid lexical forms\n * - ...\n *\n * The distinction is made so that one can catch this specific type\n * and handle it accordingly to the SPARQL spec (relevant for e.g. FILTER, EXTEND),\n * while others (programming errors) can be re-thrown.\n *\n * @see isExpressionError\n */\nexport class ExpressionError extends Error {}\n\n/**\n * Checks whether a given error is an {@link ExpressionError}.\n * Also useful for mocking in tests for covering all branches.\n *\n * @see ExpressionError\n */\nexport function isExpressionError(error: Error): boolean {\n return error instanceof ExpressionError;\n}\n\n/**\n * A literal has an invalid lexical form for the datatype it is accompanied by.\n * This error is only thrown when the term is as function argument that requires\n * a valid lexical form.\n */\nexport class InvalidLexicalForm extends ExpressionError {\n public constructor(public arg: RDF.Term) {\n super(`Invalid lexical form '${pp(arg)}'`);\n }\n}\n\n/**\n * A variable in the expression was not bound.\n */\nexport class UnboundVariableError extends ExpressionError {\n public constructor(public variable: string, public bindings: RDF.Bindings) {\n super(`Unbound variable '${pp(variable)}'`);\n }\n}\n\n/**\n * An invalid term was being coerced to an Effective Boolean Value.\n *\n * See the {@link https://www.w3.org/TR/sparql11-query/#ebv | SPARQL docs}\n * on EBVs.\n */\nexport class EBVCoercionError extends ExpressionError {\n public constructor(public arg: E.Term) {\n super(`Cannot coerce term to EBV '${pp(arg)}'`);\n }\n}\n\n/**\n * An equality test was done on literals with unsupported datatypes.\n *\n * See {@link https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal | term equality spec}.\n */\nexport class RDFEqualTypeError extends ExpressionError {\n public constructor(public args: E.Expression[]) {\n super('Equality test for literals with unsupported datatypes');\n }\n}\n\n/**\n * All the expressions in a COALESCE call threw errors.\n */\nexport class CoalesceError extends ExpressionError {\n public constructor(public errors: Error[]) {\n super('All COALESCE arguments threw errors');\n }\n}\n\n/**\n * No arguments to an IN call where equal, and at least one threw an error.\n */\nexport class InError extends ExpressionError {\n public constructor(public errors: (Error | false)[]) {\n super(\n `Some argument to IN errorred and none where equal. ${\n\n errors.map(err => `(${err.toString()}) `).join('and ')}`,\n );\n }\n}\n\n/**\n * Literals were passed to an operator that doesn't support their datatypes.\n */\nexport class InvalidArgumentTypes extends ExpressionError {\n public constructor(public args: E.Expression[], public op: C.Operator | C.NamedOperator) {\n super(`Argument types not valid for operator: '${pp(op)}' with '${pp(args)}`);\n }\n}\n\n/**\n * Terms were being compared that are not supported.\n */\nexport class InvalidCompareArgumentTypes extends ExpressionError {\n public constructor(public arg0: RDF.Term, public arg1: RDF.Term) {\n super(`Compared argument types are supported: '${arg0.termType}' and '${arg1.termType}'`);\n }\n}\n\n/**\n * An invalid typecast happened.\n */\nexport class CastError extends ExpressionError {\n public constructor(public arg: T, cast: C.TypeURL) {\n super(`Invalid cast: '${pp(arg)}' to '${pp(cast)}'`);\n }\n}\n\nexport class InvalidTimezoneCall extends ExpressionError {\n public constructor(public dateString: string) {\n super(`TIMEZONE call on ${dateString} which has no timezone`);\n }\n}\n\nexport class IncompatibleLanguageOperation extends ExpressionError {\n public constructor(public arg1: E.LangStringLiteral, public arg2: E.LangStringLiteral) {\n super(`Operation on incompatible language literals '${pp(arg1)}' and '${pp(arg2)}'`);\n }\n}\n\nexport class EmptyAggregateError extends ExpressionError {\n public constructor() {\n super('Empty aggregate expression');\n }\n}\n\nexport class ParseError extends ExpressionError {\n public constructor(str: string, type: string) {\n super(`Failed to parse ${str} as ${type}.`);\n }\n}\n\n// Non Expression Errors ------------------------------------------------------\n\n/**\n * An error that arises when we detect a 'should-be-impossible' state.\n * Given that this error is thrown, it clearly wasn't impossible, and some\n * mistake has been made.\n */\nexport class UnexpectedError extends Error {\n public constructor(message: string, public payload?: T) {\n super(`Programmer Error '${message}'`);\n }\n}\n\nexport class InvalidArity extends Error {\n public constructor(public args: E.Expression[], public op: C.Operator) {\n super(`The number of args does not match the arity of the operator '${pp(op)}'.`);\n }\n}\n\nexport class InvalidExpression extends Error {\n public constructor(expr: T) {\n super(`Invalid SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class InvalidExpressionType extends Error {\n public constructor(public expr: T) {\n super(`Invalid expression type for SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class InvalidTermType extends Error {\n public constructor(public term: Algebra.TermExpression) {\n super(`Invalid term type for term '${pp(term)}'`);\n }\n}\n\nexport class UnknownOperator extends Error {\n public constructor(name: string) {\n super(`Unknown operator: '${pp(name)}`);\n }\n}\n\nexport class UnknownNamedOperator extends Error {\n public constructor(name: string) {\n super(`Unknown named operator: '${pp(name)}'`);\n }\n}\n\nexport class ExtensionFunctionError extends Error {\n public constructor(name: string, functionError: unknown) {\n if (functionError instanceof Error) {\n super(`Error thrown in ${name}: ${functionError.message}${functionError.stack ? `\\n${functionError.stack}` : ''}`);\n } else {\n super(`Error thrown in ${name}`);\n }\n }\n}\n\nexport class NoAggregator extends Error {\n public constructor(name?: string) {\n super(`Aggregate expression ${pp(name)} found, but no aggregate hook provided.`);\n }\n}\n\nexport class NoExistenceHook extends Error {\n public constructor() {\n super('EXISTS found, but no existence hook provided.');\n }\n}\n\nfunction pp(object: T): string {\n return JSON.stringify(object);\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from './Consts';\nimport * as Err from './Errors';\nimport type { SuperTypeCallback, TypeCache } from './TypeHandling';\n\n// Determine the relative numerical order of the two given terms.\n// In accordance with https://www.w3.org/TR/sparql11-query/#modOrderBy\nexport function orderTypes(\n termA: RDF.Term | undefined,\n termB: RDF.Term | undefined,\n strict = false,\n typeDiscoveryCallback?: SuperTypeCallback,\n typeCache?: TypeCache,\n): -1 | 0 | 1 {\n // Check if terms are the same by reference\n if (termA === termB) {\n return 0;\n }\n\n // We handle undefined that is lower than everything else.\n if (termA === undefined) {\n return -1;\n }\n if (termB === undefined) {\n return 1;\n }\n\n //\n if (termA.termType !== termB.termType) {\n return _TERM_ORDERING_PRIORITY[termA.termType] < _TERM_ORDERING_PRIORITY[termB.termType] ? -1 : 1;\n }\n\n // Check exact term equality\n if (termA.equals(termB)) {\n return 0;\n }\n\n // Handle quoted triples\n if (termA.termType === 'Quad' && termB.termType === 'Quad') {\n const orderSubject = orderTypes(\n termA.subject,\n termB.subject,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderSubject !== 0) {\n return orderSubject;\n }\n const orderPredicate = orderTypes(\n termA.predicate,\n termB.predicate,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderPredicate !== 0) {\n return orderPredicate;\n }\n const orderObject = orderTypes(\n termA.object,\n termB.object,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderObject !== 0) {\n return orderObject;\n }\n return orderTypes(\n termA.graph,\n termB.graph,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n }\n\n // Handle literals\n if (termA.termType === 'Literal') {\n return orderLiteralTypes(termA, termB, typeDiscoveryCallback, typeCache);\n }\n\n // Handle all other types\n if (strict) {\n throw new Err.InvalidCompareArgumentTypes(termA, termB);\n }\n return comparePrimitives(termA.value, termB.value);\n}\n\nfunction orderLiteralTypes(\n litA: RDF.Literal,\n litB: RDF.Literal,\n typeDiscoveryCallback?: SuperTypeCallback,\n typeCache?: TypeCache,\n): -1 | 0 | 1 {\n const isGreater = regularFunctions[C.RegularOperator.GT];\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n const context = {\n now: new Date(),\n functionArgumentsCache: {},\n superTypeProvider: {\n discoverer: typeDiscoveryCallback ?? (() => 'term'),\n cache: typeCache ?? new LRUCache({ max: 1_000 }),\n },\n defaultTimeZone: { zoneHours: 0, zoneMinutes: 0 },\n };\n\n const termTransformer = new TermTransformer(context.superTypeProvider);\n const myLitA = termTransformer.transformLiteral(litA);\n const myLitB = termTransformer.transformLiteral(litB);\n\n try {\n if (( isEqual.apply([ myLitA, myLitB ], context)).typedValue) {\n return 0;\n }\n if (( isGreater.apply([ myLitA, myLitB ], context)).typedValue) {\n return 1;\n }\n return -1;\n } catch {\n // Fallback to string-based comparison\n const compareType = comparePrimitives(myLitA.dataType, myLitB.dataType);\n if (compareType !== 0) {\n return compareType;\n }\n return comparePrimitives(myLitA.str(), myLitB.str());\n }\n}\n\nfunction comparePrimitives(valueA: any, valueB: any): -1 | 0 | 1 {\n return valueA === valueB ? 0 : (valueA < valueB ? -1 : 1);\n}\n\n// SPARQL specifies that blankNode < namedNode < literal.\nconst _TERM_ORDERING_PRIORITY = {\n Variable: 0,\n BlankNode: 1,\n NamedNode: 2,\n Literal: 3,\n Quad: 4,\n DefaultGraph: 5,\n};\n","// TODO: Find a library for this, because this is basically an xsd datatypes parser\n\nimport type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDayTimeDurationRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n IYearMonthDurationRepresentation,\n} from './DateTimeHelpers';\n\nimport { simplifyDurationRepresentation } from './DateTimeHelpers';\nimport { ParseError } from './Errors';\nimport { maximumDayInMonthFor } from './SpecAlgos';\n\n/**\n * TODO: Fix decently\n * Parses float datatypes (double, float).\n *\n * All invalid lexical values return undefined.\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDFloat(value: string): number | undefined {\n const numb = Number(value);\n if (Number.isNaN(numb)) {\n if (value === 'NaN') {\n return Number.NaN;\n }\n if (value === 'INF' || value === '+INF') {\n return Number.POSITIVE_INFINITY;\n }\n if (value === '-INF') {\n return Number.NEGATIVE_INFINITY;\n }\n return undefined;\n }\n return numb;\n}\n\n/**\n * Parses decimal datatypes (decimal, int, byte, nonPositiveInteger, etc...).\n *\n * All other values, including NaN, INF, and floating point numbers all\n * return undefined;\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDDecimal(value: string): number | undefined {\n const numb = Number(value);\n return Number.isNaN(numb) ? undefined : numb;\n}\n\n/**\n * Parses integer datatypes (decimal, int, byte, nonPositiveInteger, etc...).\n *\n * All other values, including NaN, INF, and floating point numbers all\n * return undefined;\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDInteger(value: string): number | undefined {\n const numb: number = Number.parseInt(value, 10);\n return Number.isNaN(numb) ? undefined : numb;\n}\n\nexport function parseDateTime(dateTimeStr: string): IDateTimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n const [ date, time ] = dateTimeStr.split('T');\n return { ...parseDate(date), ...__parseTime(time) };\n}\n\nfunction parseTimeZone(timeZoneStr: string): Partial {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (timeZoneStr === '') {\n return { zoneHours: undefined, zoneMinutes: undefined };\n }\n if (timeZoneStr === 'Z') {\n return { zoneHours: 0, zoneMinutes: 0 };\n }\n const timeZoneStrings = timeZoneStr.replaceAll(/^([+|-])(\\d\\d):(\\d\\d)$/gu, '$11!$2!$3').split('!');\n const timeZone = timeZoneStrings.map(Number);\n return {\n zoneHours: timeZone[0] * timeZone[1],\n zoneMinutes: timeZone[0] * timeZone[2],\n };\n}\n\nexport function parseDate(dateStr: string): IDateRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n const formatted = dateStr.replaceAll(\n /^(-)?([123456789]*\\d{4})-(\\d\\d)-(\\d\\d)(Z|([+-]\\d\\d:\\d\\d))?$/gu,\n '$11!$2!$3!$4!$5',\n );\n if (formatted === dateStr) {\n throw new ParseError(dateStr, 'date');\n }\n const dateStrings = formatted.split('!');\n const date = dateStrings.slice(0, -1).map(Number);\n\n const res = {\n year: date[0] * date[1],\n month: date[2],\n day: date[3],\n ...parseTimeZone(dateStrings[4]),\n };\n if (!(res.month >= 1 && res.month <= 12) || !(res.day >= 1 && res.day <= maximumDayInMonthFor(res.year, res.month))) {\n throw new ParseError(dateStr, 'date');\n }\n return res;\n}\n\nfunction __parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const formatted = timeStr.replaceAll(/^(\\d\\d):(\\d\\d):(\\d\\d(\\.\\d+)?)(Z|([+-]\\d\\d:\\d\\d))?$/gu, '$1!$2!$3!$5');\n if (formatted === timeStr) {\n throw new ParseError(timeStr, 'time');\n }\n const timeStrings = formatted.split('!');\n const time = timeStrings.slice(0, -1).map(Number);\n\n const res = {\n hours: time[0],\n minutes: time[1],\n seconds: time[2],\n ...parseTimeZone(timeStrings[3]),\n };\n\n if (res.seconds >= 60 || res.minutes >= 60 || res.hours > 24 ||\n (res.hours === 24 && (res.minutes !== 0 || res.seconds !== 0))) {\n throw new ParseError(timeStr, 'time');\n }\n return res;\n}\n\n// We make a separation in internal and external since dateTime will have hour-date rollover,\n// but time just does modulo the time.\nexport function parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const res = __parseTime(timeStr);\n res.hours %= 24;\n return res;\n}\n\nexport function parseDuration(durationStr: string): Partial {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n const [ dayNotation, timeNotation ] = durationStr.split('T');\n\n // Handle date part\n const formattedDayDur = dayNotation.replaceAll(/^(-)?P(\\d+Y)?(\\d+M)?(\\d+D)?$/gu, '$11S!$2!$3!$4');\n if (formattedDayDur === dayNotation) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const durationStrings = formattedDayDur.split('!');\n if (timeNotation !== undefined) {\n const formattedTimeDur = timeNotation.replaceAll(/^(\\d+H)?(\\d+M)?(\\d+(\\.\\d+)?S)?$/gu, '$1!$2!$3');\n\n if (timeNotation === '' || timeNotation === formattedTimeDur) {\n throw new ParseError(durationStr, 'duration');\n }\n durationStrings.push(...formattedTimeDur.split('!'));\n }\n const duration = durationStrings.map(str => str.slice(0, -1));\n if (!duration.slice(1).some(Boolean)) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const sign = <-1 | 1> Number(duration[0]);\n return simplifyDurationRepresentation({\n year: duration[1] ? sign * Number(duration[1]) : undefined,\n month: duration[2] ? sign * Number(duration[2]) : undefined,\n day: duration[3] ? sign * Number(duration[3]) : undefined,\n hours: duration[4] ? sign * Number(duration[4]) : undefined,\n minutes: duration[5] ? sign * Number(duration[5]) : undefined,\n seconds: duration[6] ? sign * Number(duration[6]) : undefined,\n });\n}\n\nexport function parseYearMonthDuration(durationStr: string): Partial {\n const res = parseDuration(durationStr);\n if ([ 'hours', 'minutes', 'seconds', 'day' ].some(key => Boolean(( res)[key]))) {\n throw new ParseError(durationStr, 'yearMonthDuration');\n }\n return res;\n}\n\nexport function parseDayTimeDuration(durationStr: string): Partial {\n const res = parseDuration(durationStr);\n if ([ 'year', 'month' ].some(key => Boolean(( res)[key]))) {\n throw new ParseError(durationStr, 'dayTimeDuration');\n }\n return res;\n}\n","import type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n} from './DateTimeHelpers';\n\nfunction numSerializer(num: number, min = 2): string {\n return num.toLocaleString(undefined, { minimumIntegerDigits: min, useGrouping: false });\n}\n\nexport function serializeDateTime(date: IDateTimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n // Extraction is needed because the date serializer can not add timezone y\n return `${serializeDate({ year: date.year, month: date.month, day: date.day })}T${serializeTime(date)}`;\n}\n\nfunction serializeTimeZone(tz: Partial): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (tz.zoneHours === undefined || tz.zoneMinutes === undefined) {\n return '';\n }\n if (tz.zoneHours === 0 && tz.zoneMinutes === 0) {\n return 'Z';\n }\n // SerializeTimeZone({ zoneHours: 5, zoneMinutes: 4 }) returns +05:04\n return `${tz.zoneHours >= 0 ? `+${numSerializer(tz.zoneHours)}` : numSerializer(tz.zoneHours)}:${numSerializer(Math.abs(tz.zoneMinutes))}`;\n}\n\nexport function serializeDate(date: IDateRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n return `${numSerializer(date.year, 4)}-${numSerializer(date.month)}-${numSerializer(date.day)}${serializeTimeZone(date)}`;\n}\n\nexport function serializeTime(time: ITimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n return `${numSerializer(time.hours)}:${numSerializer(time.minutes)}:${numSerializer(time.seconds)}${serializeTimeZone(time)}`;\n}\n\nexport function serializeDuration(dur: Partial, zeroString: 'PT0S' | 'P0M' = 'PT0S'): string {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n if (!Object.values(dur).some(val => (val || 0) !== 0)) {\n return zeroString;\n }\n\n const sign = Object.values(dur).some(val => (val || 0) < 0) ? '-' : '';\n const year = dur.year ? `${Math.abs(dur.year)}Y` : '';\n const month = dur.month ? `${Math.abs(dur.month)}M` : '';\n const day = dur.day ? `${Math.abs(dur.day)}D` : '';\n\n const dayNotation = `${sign}P${year}${month}${day}`;\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n if (!(dur.hours || dur.minutes || dur.seconds)) {\n return dayNotation;\n }\n\n const hour = dur.hours ? `${Math.abs(dur.hours)}H` : '';\n const minute = dur.minutes ? `${Math.abs(dur.minutes)}M` : '';\n const second = dur.seconds ? `${Math.abs(dur.seconds)}S` : '';\n\n return `${dayNotation}T${hour}${minute}${second}`;\n}\n","import type {\n IDurationRepresentation,\n IDateTimeRepresentation,\n ITimeZoneRepresentation,\n} from './DateTimeHelpers';\nimport { toUTCDate } from './DateTimeHelpers';\n\nfunction fDiv(arg: number, high: number, low = 0): { intDiv: number; remainder: number } {\n // Adds the 4 spec functions into one since they are highly related,\n // and fQuotient and modulo are almost always called in pairs.\n const first = arg - low;\n const second = high - low;\n const intDiv = Math.floor(first / second);\n return { intDiv, remainder: arg - intDiv * second };\n}\n\nexport function maximumDayInMonthFor(yearValue: number, monthValue: number): number {\n const { intDiv: additionalYears, remainder: month } = fDiv(monthValue, 13, 1);\n const year = yearValue + additionalYears;\n\n if ([ 1, 3, 5, 7, 8, 10, 12 ].includes(month)) {\n return 31;\n }\n if ([ 4, 6, 9, 11 ].includes(month)) {\n return 30;\n }\n if (month === 2 && (\n fDiv(year, 400).remainder === 0 ||\n (fDiv(year, 100).remainder !== 0 && fDiv(year, 4).remainder === 0))) {\n return 29;\n }\n return 28;\n}\n\n// https://www.w3.org/TR/xmlschema-2/#adding-durations-to-dateTimes\nexport function addDurationToDateTime(date: IDateTimeRepresentation, duration: IDurationRepresentation):\nIDateTimeRepresentation {\n // Used to cary over optional fields like timezone\n const newDate: IDateTimeRepresentation = { ...date };\n\n // Month\n let tempDiv = fDiv(date.month + duration.month, 13, 1);\n newDate.month = tempDiv.remainder;\n // Year\n newDate.year = date.year + duration.year + tempDiv.intDiv;\n // Seconds\n tempDiv = fDiv(date.seconds + duration.seconds, 60);\n newDate.seconds = tempDiv.remainder;\n // Minutes\n tempDiv = fDiv(date.minutes + duration.minutes + tempDiv.intDiv, 60);\n newDate.minutes = tempDiv.remainder;\n // Hours\n tempDiv = fDiv(date.hours + duration.hours + tempDiv.intDiv, 24);\n newDate.hours = tempDiv.remainder;\n\n // We skip a part of the spec code since: Defined spec code can not happen since it would be an invalid literal\n\n newDate.day = date.day + duration.day + tempDiv.intDiv;\n\n while (true) {\n let carry;\n if (newDate.day < 1) {\n newDate.day += maximumDayInMonthFor(newDate.year, newDate.month - 1);\n carry = -1;\n } else if (newDate.day > maximumDayInMonthFor(newDate.year, newDate.month)) {\n newDate.day -= maximumDayInMonthFor(newDate.year, newDate.month);\n carry = 1;\n } else {\n break;\n }\n tempDiv = fDiv(newDate.month + carry, 13, 1);\n newDate.month = tempDiv.remainder;\n newDate.year += tempDiv.intDiv;\n }\n return newDate;\n}\n\nexport function elapsedDuration(\n first: IDateTimeRepresentation,\n second: IDateTimeRepresentation,\n defaultTimeZone: ITimeZoneRepresentation,\n): Partial {\n const d1 = toUTCDate(first, defaultTimeZone);\n const d2 = toUTCDate(second, defaultTimeZone);\n const diff = d1.getTime() - d2.getTime();\n return {\n day: Math.floor(diff / (1_000 * 60 * 60 * 24)),\n hours: Math.floor((diff % (1_000 * 60 * 60 * 24)) / (1_000 * 60 * 60)),\n minutes: Math.floor(diff % (1_000 * 60 * 60) / (1_000 * 60)),\n seconds: diff % (1_000 * 60),\n };\n}\n","import type { LRUCache } from 'lru-cache';\nimport type * as E from '../expressions';\nimport { asTermType } from '../expressions';\nimport type { ArgumentType } from '../functions';\nimport { double, float, string } from '../functions/Helpers';\nimport type { KnownLiteralTypes } from './Consts';\nimport { TypeAlias, TypeURL } from './Consts';\n\nexport type OverrideType = KnownLiteralTypes | 'term';\n\n/**\n * Types that are not mentioned just map to 'term'.\n * When editing this, make sure type promotion and substitution don't start interfering.\n * e.g. when saying something like string -> stringly -> anyUri -> term.\n * This would make substitution on types that promote to each other possible. We and the specs don't want that!\n * A DAG will be created based on this. Make sure it doesn't have any cycles!\n */\nexport const extensionTableInput: Record = {\n // Datetime types\n [TypeURL.XSD_DATE_TIME_STAMP]: TypeURL.XSD_DATE_TIME,\n\n // Duration types\n [TypeURL.XSD_DAY_TIME_DURATION]: TypeURL.XSD_DURATION,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: TypeURL.XSD_DURATION,\n\n // Stringly types\n [TypeURL.RDF_LANG_STRING]: TypeAlias.SPARQL_STRINGLY,\n [TypeURL.XSD_STRING]: TypeAlias.SPARQL_STRINGLY,\n\n // String types\n [TypeURL.XSD_NORMALIZED_STRING]: TypeURL.XSD_STRING,\n [TypeURL.XSD_TOKEN]: TypeURL.XSD_NORMALIZED_STRING,\n [TypeURL.XSD_LANGUAGE]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NM_TOKEN]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NAME]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NC_NAME]: TypeURL.XSD_NAME,\n [TypeURL.XSD_ENTITY]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID_REF]: TypeURL.XSD_NC_NAME,\n\n // Numeric types\n // https://www.w3.org/TR/sparql11-query/#operandDataTypes\n // > numeric denotes typed literals with datatypes xsd:integer, xsd:decimal, xsd:float, and xsd:double\n [TypeURL.XSD_DOUBLE]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_FLOAT]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_DECIMAL]: TypeAlias.SPARQL_NUMERIC,\n\n // Decimal types\n [TypeURL.XSD_INTEGER]: TypeURL.XSD_DECIMAL,\n\n [TypeURL.XSD_NON_POSITIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_NEGATIVE_INTEGER]: TypeURL.XSD_NON_POSITIVE_INTEGER,\n\n [TypeURL.XSD_LONG]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_INT]: TypeURL.XSD_LONG,\n [TypeURL.XSD_SHORT]: TypeURL.XSD_INT,\n [TypeURL.XSD_BYTE]: TypeURL.XSD_SHORT,\n\n [TypeURL.XSD_NON_NEGATIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_POSITIVE_INTEGER]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_LONG]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_INT]: TypeURL.XSD_UNSIGNED_LONG,\n [TypeURL.XSD_UNSIGNED_SHORT]: TypeURL.XSD_UNSIGNED_INT,\n [TypeURL.XSD_UNSIGNED_BYTE]: TypeURL.XSD_UNSIGNED_SHORT,\n\n [TypeURL.XSD_DATE_TIME]: 'term',\n [TypeURL.XSD_BOOLEAN]: 'term',\n [TypeURL.XSD_DATE]: 'term',\n [TypeURL.XSD_G_MONTH]: 'term',\n [TypeURL.XSD_G_MONTHDAY]: 'term',\n [TypeURL.XSD_G_YEAR]: 'term',\n [TypeURL.XSD_G_YEAR_MONTH]: 'term',\n [TypeURL.XSD_TIME]: 'term',\n [TypeURL.XSD_G_DAY]: 'term',\n [TypeURL.XSD_DURATION]: 'term',\n [TypeAlias.SPARQL_NUMERIC]: 'term',\n [TypeAlias.SPARQL_STRINGLY]: 'term',\n [TypeURL.XSD_ANY_URI]: 'term',\n};\ntype SuperTypeDict = Record & { __depth: number };\ntype SuperTypeDictTable = Record;\n// The key 'term' is not included in these keys. Something that is just a term will map to number 0.\nexport type GeneralSuperTypeDict = Record & { __depth: number };\nexport const superTypeDictTable: SuperTypeDictTable = Object.create(null);\n\n/**\n * This will return the super types of a type and cache them.\n * @param type IRI we will decide the super types of.\n * @param openWorldType the enabler that provides a way to find super types.\n */\nexport function getSuperTypes(type: string, openWorldType: ISuperTypeProvider): GeneralSuperTypeDict {\n const cached = openWorldType.cache.get(type);\n if (cached) {\n return cached;\n }\n const value = openWorldType.discoverer(type);\n if (value === 'term') {\n const res: GeneralSuperTypeDict = Object.create(null);\n res.__depth = 0;\n res[type] = 0;\n openWorldType.cache.set(type, res);\n return res;\n }\n let subExtension: GeneralSuperTypeDict;\n const knownValue = asKnownLiteralType(value);\n if (knownValue) {\n subExtension = { ...superTypeDictTable[knownValue] };\n } else {\n subExtension = { ...getSuperTypes(value, openWorldType) };\n }\n subExtension.__depth++;\n subExtension[type] = subExtension.__depth;\n openWorldType.cache.set(type, subExtension);\n return subExtension;\n}\n\n// No circular structure allowed! & No other keys allowed!\nexport function extensionTableInit(): void {\n for (const [ _key, value ] of Object.entries(extensionTableInput)) {\n const key = _key;\n if (superTypeDictTable[key]) {\n continue;\n }\n extensionTableBuilderInitKey(key, value, superTypeDictTable);\n }\n}\nextensionTableInit();\n\nfunction extensionTableBuilderInitKey(key: KnownLiteralTypes, value: OverrideType, res: SuperTypeDictTable): void {\n if (value === 'term' || value === undefined) {\n const baseRes: SuperTypeDict = Object.create(null);\n baseRes.__depth = 0;\n baseRes[key] = 0;\n res[key] = baseRes;\n return;\n }\n if (!res[value]) {\n extensionTableBuilderInitKey(value, extensionTableInput[value], res);\n }\n res[key] = { ...res[value], [key]: res[value].__depth + 1, __depth: res[value].__depth + 1 };\n}\n\nexport const typeAliasCheck: Record = Object.create(null);\nfunction initTypeAliasCheck(): void {\n for (const val of Object.values(TypeAlias)) {\n typeAliasCheck[val] = true;\n }\n}\ninitTypeAliasCheck();\n\nexport function asTypeAlias(type: string): TypeAlias | undefined {\n if (type in typeAliasCheck) {\n return type;\n }\n return undefined;\n}\n\nexport function asKnownLiteralType(type: string): KnownLiteralTypes | undefined {\n if (type in superTypeDictTable) {\n return type;\n }\n return undefined;\n}\n\nexport function asOverrideType(type: string): OverrideType | undefined {\n if (asKnownLiteralType(type) ?? type === 'term') {\n return type;\n }\n return undefined;\n}\n\nexport function asGeneralType(type: string): 'term' | E.TermType | undefined {\n if (type === 'term' || asTermType(type)) {\n return <'term' | E.TermType> type;\n }\n return undefined;\n}\n\nexport type TypeCache = LRUCache;\nexport type SuperTypeCallback = (unknownType: string) => string;\nexport interface ISuperTypeProvider {\n cache: TypeCache;\n discoverer: SuperTypeCallback;\n}\n\n/**\n * Internal type of @see isSubTypeOf This only takes knownTypes but doesn't need an enabler\n */\nexport function isInternalSubType(baseType: OverrideType, argumentType: KnownLiteralTypes): boolean {\n return baseType !== 'term' &&\n (superTypeDictTable[baseType] && superTypeDictTable[baseType][argumentType] !== undefined);\n}\n\n/**\n * This function can be used to check the base type is a restriction on a type in the dict.\n * If we want to check if type x is a restriction on string we do this by calling:\n * 'http://www.w3.org/2001/XMLSchema#string' in getSuperTypeDict(X, superTypeProvider)\n * @param baseType\n * @param superTypeProvider\n */\nexport function getSuperTypeDict(baseType: string, superTypeProvider: ISuperTypeProvider): GeneralSuperTypeDict {\n const concreteType: KnownLiteralTypes | undefined = asKnownLiteralType(baseType);\n if (concreteType) {\n // Concrete dataType is known by expression-evaluator.\n return superTypeDictTable[concreteType];\n }\n // Datatype is a custom datatype\n return getSuperTypes(baseType, superTypeProvider);\n}\n\n/**\n * This function needs to be O(1)! The execution time of this function is vital!\n * We define typeA isSubtypeOf typeA as true.\n * If you find yourself using this function a lot (e.g. in a case) please use getSuperTypeDict instead.\n * @param baseType type you want to provide.\n * @param argumentType type you want to provide @param baseType to.\n * @param superTypeProvider the enabler to discover super types of unknown types.\n */\nexport function isSubTypeOf(\n baseType: string,\n argumentType: KnownLiteralTypes,\n superTypeProvider: ISuperTypeProvider,\n): boolean {\n if (baseType === 'term') {\n return false;\n }\n return getSuperTypeDict(baseType, superTypeProvider)[argumentType] !== undefined;\n}\n\n// Defined by https://www.w3.org/TR/xpath-31/#promotion .\n// e.g. When a function takes a string, it can also accept a XSD_ANY_URI if it's cast first.\nexport const typePromotion: Partial E.TermExpression;\n}[]>> = {\n [TypeURL.XSD_STRING]: [\n { typeToPromote: TypeURL.XSD_ANY_URI, conversionFunction: arg => string(arg.str()) },\n ],\n [TypeURL.XSD_DOUBLE]: [\n { typeToPromote: TypeURL.XSD_FLOAT, conversionFunction: arg => double((arg).typedValue) },\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => double((arg).typedValue) },\n ],\n [TypeURL.XSD_FLOAT]: [\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => float((arg).typedValue) },\n ],\n};\n","import { Logger } from '@comunica/types';\n\n/**\n * A logger that voids everything.\n */\nexport class LoggerVoid extends Logger {\n public debug(): void {\n // Void\n }\n\n public error(): void {\n // Void\n }\n\n public fatal(): void {\n // Void\n }\n\n public info(): void {\n // Void\n }\n\n public trace(): void {\n // Void\n }\n\n public warn(): void {\n // Void\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A comunica mediator that runs all actors that resolve their test.\n * This mediator will always resolve to the first actor's output.\n */\nexport class MediatorAll, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator {\n public constructor(args: IMediatorArgs) {\n super(args);\n }\n\n public override async mediate(action: I): Promise {\n // Collect all actors that resolve their test\n const validActors: A[] = [];\n let testResults: IActorReply[];\n try {\n testResults = this.publish(action);\n } catch {\n testResults = [];\n }\n for (const testResult of testResults) {\n try {\n await testResult.reply;\n validActors.push(testResult.actor);\n } catch {\n // Ignore errors\n }\n }\n\n // Send action to all valid actors\n const outputs = await Promise.all(validActors.map(actor => actor.runObservable(action)));\n\n return outputs[0];\n }\n\n protected async mediateWith(): Promise {\n throw new Error('Unsupported operation: MediatorAll#mediateWith');\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica mediator that goes over all actors in sequence and forwards I/O.\n * This required the action input and the actor output to be of the same type.\n */\nexport class MediatorCombinePipeline<\n A extends Actor,\nH extends IAction | (IActorOutput & { context: IActionContext }),\nT extends IActorTest,\n>\n extends Mediator {\n public readonly filterErrors: boolean | undefined;\n public readonly order: 'increasing' | 'decreasing' | undefined;\n public readonly field: string | undefined;\n\n public constructor(args: IMediatorCombinePipelineArgs) {\n super(args);\n }\n\n public override async mediate(action: H): Promise {\n let testResults: IActorReply[] | { actor: A; reply: T }[];\n try {\n testResults = this.publish(action);\n } catch {\n // If no actors are available, just return the input as output\n return action;\n }\n\n if (this.filterErrors) {\n const _testResults: IActorReply[] = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n } catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n\n // Delegate test errors.\n testResults = await Promise.all(testResults.map(async({ actor, reply }) => ({ actor, reply: await reply })));\n\n // Order the test results if ordering is enabled\n if (this.order) {\n // A function used to extract an ordering value from a test result\n const getOrder = (elem: T): number => {\n // If there is a field key use it, otherwise use the input\n // element for ordering\n const value = this.field ? ( elem)[this.field] : elem;\n\n // Check the ordering value is a number\n if (typeof value !== 'number') {\n throw new TypeError('Cannot order elements that are not numbers.');\n }\n return value;\n };\n\n testResults = testResults.sort((actor1, actor2) =>\n (this.order === 'increasing' ? 1 : -1) *\n (getOrder(actor1.reply) - getOrder(actor2.reply)));\n }\n\n // Pass action to first actor,\n // and each actor output as input to the following actor.\n let handle: H = action;\n for (const { actor } of testResults) {\n handle = { ...handle, ...await actor.runObservable(handle) };\n }\n\n // Return the final actor output\n return handle;\n }\n\n protected mediateWith(): Promise {\n throw new Error('Method not supported.');\n }\n}\n\nexport interface IMediatorCombinePipelineArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * If actors that throw test errors should be ignored\n */\n filterErrors?: boolean;\n /**\n * The field to use for ordering (if the ordering strategy is chosen).\n * Leave undefined if the test output is a number rather than an object.\n */\n field?: string;\n /**\n * The strategy of ordering the pipeline (increasing or decreasing).\n * For choosing to leave the order of the pipeline unchanged, leave this undefined.\n * For choosing to order by increasing values: 'increasing'.\n * For choosing to order by decreasing values: 'decreasing'.\n */\n order?: 'increasing' | 'decreasing' | undefined;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A comunica mediator that takes the union of all actor results.\n *\n * The actors that are registered first will have priority on setting overlapping fields.\n */\nexport class MediatorCombineUnion<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends Mediator\n implements IMediatorCombineUnionArgs {\n public readonly filterErrors: boolean | undefined;\n public readonly field: string;\n public readonly combiner: (results: O[]) => O;\n\n public constructor(args: IMediatorCombineUnionArgs) {\n super(args);\n this.combiner = this.createCombiner();\n }\n\n public override async mediate(action: I): Promise {\n let testResults: IActorReply[];\n try {\n testResults = this.publish(action);\n } catch {\n testResults = [];\n }\n\n if (this.filterErrors) {\n const _testResults: IActorReply[] = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n } catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n\n // Delegate test errors.\n await Promise.all(testResults.map(({ reply }) => reply));\n\n // Run action on all actors.\n const results: O[] = await Promise.all(testResults.map(result => result.actor.runObservable(action)));\n\n // Return the combined results.\n return this.combiner(results);\n }\n\n protected mediateWith(): Promise {\n throw new Error('Method not supported.');\n }\n\n protected createCombiner(): (results: O[]) => O {\n return (results: O[]) => {\n const data: any = {};\n data[this.field] = {};\n // eslint-disable-next-line unicorn/prefer-spread\n [{}].concat(results.map((result: any) => result[this.field]))\n // eslint-disable-next-line unicorn/no-array-for-each\n .forEach((value) => {\n data[this.field] = { ...value, ...data[this.field] };\n });\n return data;\n };\n }\n}\n\nexport interface IMediatorCombineUnionArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * If actors that throw test errors should be ignored\n */\n filterErrors?: boolean;\n /**\n * The field name of the test result field over which must be mediated.\n */\n field: string;\n}\n","import type { ActorRdfJoin, IActionRdfJoin } from '@comunica/bus-rdf-join';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorReply, IMediatorArgs } from '@comunica/core';\nimport { Actor, Mediator } from '@comunica/core';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { IQueryOperationResult } from '@comunica/types';\n\n/**\n * A mediator that mediates over actors implementing the Join Coefficients mediator type and assigns fixed weights\n * to calculate an overall score and pick the actor with the lowest score.\n */\nexport class MediatorJoinCoefficientsFixed\n extends Mediator {\n public readonly cpuWeight: number;\n public readonly memoryWeight: number;\n public readonly timeWeight: number;\n public readonly ioWeight: number;\n\n public constructor(args: IMediatorJoinCoefficientsFixedArgs) {\n super(args);\n }\n\n protected async mediateWith(\n action: IActionRdfJoin,\n testResults: IActorReply[],\n ): Promise {\n // Obtain test results\n const errors: Error[] = [];\n const promises = testResults\n .map(({ reply }) => reply)\n .map(promise => promise.catch((error) => {\n errors.push(error);\n }));\n const coefficients = await Promise.all(promises);\n\n // Calculate costs\n let costs: (number | undefined)[] = coefficients\n // eslint-disable-next-line array-callback-return\n .map((coeff) => {\n if (coeff) {\n return coeff.iterations * this.cpuWeight +\n coeff.persistedItems * this.memoryWeight +\n coeff.blockingItems * this.timeWeight +\n coeff.requestTime * this.ioWeight;\n }\n });\n const maxCost = Math.max(...( costs.filter(cost => cost !== undefined)));\n\n // If we have a limit indicator in the context,\n // increase cost of entries that have a number of iterations that is higher than the limit AND block items.\n // In these cases, join operators that produce results early on will be preferred.\n const limitIndicator: number | undefined = action.context.get(KeysQueryOperation.limitIndicator);\n if (limitIndicator) {\n costs = costs.map((cost, i) => {\n if (cost !== undefined && ( coefficients[i]).blockingItems > 0 &&\n\n ( coefficients[i]).iterations > limitIndicator) {\n return cost + maxCost;\n }\n return cost;\n });\n }\n\n // Determine index with lowest cost\n let minIndex = -1;\n let minValue = Number.POSITIVE_INFINITY;\n for (const [ i, cost ] of costs.entries()) {\n if (cost !== undefined && (minIndex === -1 || cost < minValue)) {\n minIndex = i;\n minValue = cost;\n }\n }\n\n // Reject if all actors rejected\n if (minIndex < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${\n errors.map(error => error.message).join('\\n')}`);\n }\n\n // Return actor with lowest cost\n const bestActor = testResults[minIndex].actor;\n\n // Emit calculations in logger\n if (bestActor.includeInLogs) {\n Actor.getContextLogger(action.context)?.debug(`Determined physical join operator '${bestActor.logicalType}-${bestActor.physicalName}'`, {\n entries: action.entries.length,\n variables: await Promise.all(action.entries\n .map(async entry => (await entry.output.metadata()).variables.map(variable => variable.value))),\n costs: Object.fromEntries(costs.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ]).filter(entry => entry[1] !== undefined)),\n coefficients: Object.fromEntries(coefficients.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ]).filter(entry => entry[1] !== undefined)),\n });\n }\n\n return bestActor;\n }\n}\n\nexport interface IMediatorJoinCoefficientsFixedArgs\n extends IMediatorArgs {\n /**\n * Weight for the CPU cost\n */\n cpuWeight: number;\n /**\n * Weight for the memory cost\n */\n memoryWeight: number;\n /**\n * Weight for the execution time cost\n */\n timeWeight: number;\n /**\n * Weight for the I/O cost\n */\n ioWeight: number;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A mediator that can mediate over a single number field.\n *\n * It takes the required 'field' and 'type' parameters.\n * The 'field' parameter represents the field name of the test result field over which must be mediated.\n * The 'type' parameter\n */\nexport class MediatorNumber, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator implements IMediatorNumberArgs {\n public readonly field: string;\n public readonly type: 'min' | 'max';\n public readonly ignoreErrors: boolean;\n public readonly indexPicker: (tests: T[]) => number;\n\n public constructor(args: IMediatorNumberArgs) {\n super(args);\n this.indexPicker = this.createIndexPicker();\n }\n\n /**\n * @return {(tests: T[]) => number} A function that returns the index of the test result\n * that has been chosen by this mediator.\n */\n protected createIndexPicker(): (tests: (T | undefined)[]) => number {\n switch (this.type) {\n case 'min':\n return (tests: (T | undefined)[]): number => tests.reduce((prev, curr, i) => {\n const val: number = this.getOrDefault(( curr)[this.field], Number.POSITIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] > val) ? [ val, i ] : prev;\n }, [ Number.NaN, -1 ])[1];\n case 'max':\n return (tests: (T | undefined)[]): number => tests.reduce((prev, curr, i) => {\n const val: number = this.getOrDefault(( curr)[this.field], Number.NEGATIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] < val) ? [ val, i ] : prev;\n }, [ Number.NaN, -1 ])[1];\n default:\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`No valid \"type\" value was given, must be either 'min' or 'max', but got: ${this.type}`);\n }\n }\n\n protected getOrDefault(value: number | undefined, defaultValue: number): number {\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n return value === undefined ? defaultValue : value;\n }\n\n protected async mediateWith(action: I, testResults: IActorReply[]): Promise {\n let promises = testResults.map(({ reply }) => reply);\n const errors: Error[] = [];\n if (this.ignoreErrors) {\n const dummy: any = {};\n dummy[this.field] = null;\n // eslint-disable-next-line ts/no-floating-promises\n promises = promises.map(promise => promise.catch((error) => {\n errors.push(error);\n return dummy;\n }));\n }\n const results = await Promise.all(promises);\n const index = this.indexPicker(results);\n if (index < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${\n errors.map(error => error.message).join('\\n')}`);\n }\n return testResults[index].actor;\n }\n}\n\nexport interface IMediatorNumberArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * The field name of the test result field over which must be mediated.\n */\n field: string;\n /**\n * The way how the index should be selected.\n * For choosing the minimum value: 'min'.\n * For choosing the maximum value: 'max'.\n */\n type: 'min' | 'max';\n\n /**\n * If actors that throw test errors should be ignored\n */\n ignoreErrors?: boolean;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A mediator that picks the first actor that resolves its test.\n */\nexport class MediatorRace, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator {\n public constructor(args: IMediatorArgs) {\n super(args);\n }\n\n protected mediateWith(action: I, testResults: IActorReply[]): Promise {\n return new Promise((resolve, reject) => {\n const errors: Error[] = [];\n for (const testResult of testResults) {\n testResult.reply.then(() => {\n resolve(testResult.actor);\n }).catch((error) => {\n // Reject if all replies were rejected\n errors.push(error);\n if (errors.length === testResults.length) {\n reject(new Error(`${this.name} mediated over all rejecting actors:\\n${\n errors.map(subError => subError.message).join('\\n')}`));\n }\n });\n }\n });\n }\n}\n","import type { IMetadataValidationState } from '@comunica/types';\n\n/**\n * Reusable implementation for metadata validation states.\n */\nexport class MetadataValidationState implements IMetadataValidationState {\n private readonly invalidateListeners: (() => void)[] = [];\n public valid = true;\n\n public addInvalidateListener(listener: () => void): void {\n this.invalidateListeners.push(listener);\n }\n\n public invalidate(): void {\n if (this.valid) {\n this.valid = false;\n for (const invalidateListener of this.invalidateListeners) {\n invalidateListener();\n }\n }\n }\n}\n","/**\n * A logger accepts messages from different levels\n * and emits them in a certain way.\n */\nexport abstract class Logger {\n /**\n * All available logging levels.\n * @type {{trace: number; debug: number; info: number; warn: number; error: number; fatal: number}}\n */\n\n public static readonly LEVELS: Record = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n };\n\n /**\n * Convert a string-based logging level to a numerical logging level.\n * @param level A string-based logging level\n * @return The numerical logging level, or undefined.\n */\n public static getLevelOrdinal(level: string): number {\n return Logger.LEVELS[level];\n }\n\n public abstract trace(message: string, data?: any): void;\n public abstract debug(message: string, data?: any): void;\n public abstract info(message: string, data?: any): void;\n public abstract warn(message: string, data?: any): void;\n public abstract error(message: string, data?: any): void;\n public abstract fatal(message: string, data?: any): void;\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (typeof object === 'number' && isNaN(object)) {\n throw new Error('NaN is not allowed');\n }\n\n if (typeof object === 'number' && !isFinite(object)) {\n throw new Error('Infinity is not allowed');\n }\n\n if (object === null || typeof object !== 'object') {\n return JSON.stringify(object);\n }\n\n if (object.toJSON instanceof Function) {\n return serialize(object.toJSON());\n }\n\n if (Array.isArray(object)) {\n const values = object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return `${t}${comma}${serialize(value)}`;\n }, '');\n return `[${values}]`;\n }\n\n const values = Object.keys(object).sort().reduce((t, cv) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return `${t}${comma}${serialize(cv)}:${serialize(object[cv])}`;\n }, '');\n return `{${values}}`;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.promisifyEventEmitter = void 0;\nfunction promisifyEventEmitter(event, result) {\n return new Promise((resolve, reject) => {\n event.on('end', () => resolve(result));\n event.on('error', reject);\n });\n}\nexports.promisifyEventEmitter = promisifyEventEmitter;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n if ((a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n for (i of a.entries())\n if (!equal(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if ((a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","/**\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n return { value: false };\n}\n\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n}\n\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\n\nIterator.prototype.toString = function toString () {\n return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n}\n\nfunction iteratorDone() {\n return { value: undefined, done: true };\n}\n\nfunction hasIterator(maybeIterable) {\n if (Array.isArray(maybeIterable)) {\n // IE11 trick as it does not support `Symbol.iterator`\n return true;\n }\n\n return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nfunction isEntriesIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.entries;\n}\n\nfunction isKeysIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.keys;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n}\n\nvar Seq = /*@__PURE__*/(function (Collection) {\n function Seq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection ) Seq.__proto__ = Collection;\n Seq.prototype = Object.create( Collection && Collection.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === undefined || value === null\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (\n isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object).concat(\n Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []\n );\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n}\n\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n}\n\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return isEntriesIterable(value)\n ? seq.fromEntrySeq()\n : isKeysIterable(value)\n ? seq.toSetSeq()\n : seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n}\n\nvar imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n if (o == null) {\n return hashNullish(o);\n }\n\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n\n var v = valueOf(o);\n\n if (v == null) {\n return hashNullish(v);\n }\n\n switch (typeof v) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return v ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(v);\n case 'string':\n return v.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(v)\n : hashString(v);\n case 'object':\n case 'function':\n return hashJSObj(v);\n case 'symbol':\n return hashSymbol(v);\n default:\n if (typeof v.toString === 'function') {\n return hashString(v.toString());\n }\n throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n }\n}\n\nfunction hashNullish(nullish) {\n return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n}\n\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n}\n\nfunction hashSymbol(sym) {\n var hashed = symbolMap[sym];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = nextHash();\n\n symbolMap[sym] = hashed;\n\n return hashed;\n}\n\nfunction hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = nextHash();\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function () {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = (function () {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n}\n\nfunction valueOf(obj) {\n return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'\n ? obj.valueOf(obj)\n : obj;\n}\n\nfunction nextHash() {\n var nextHash = ++_objHashUID;\n if (_objHashUID & 0x40000000) {\n _objHashUID = 0;\n }\n return nextHash;\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\n\nvar symbolMap = Object.create(null);\n\nvar _objHashUID = 0;\n\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;\n ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;\n ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;\n ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;\n FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function () {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function (type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n var this$1$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction partitionFactory(collection, predicate, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = [[], []];\n collection.__iterate(function (v, k) {\n groups[predicate.call(context, v, k, collection) ? 1 : 0].push(\n isKeyedIter ? [k, v] : v\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); });\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function (type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&\n fn(v, iterations++, this$1$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries\n .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })\n .forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function (fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function (type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(\n null,\n steps.map(function (s) { return s.value; })\n )\n );\n });\n };\n return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\n\nfunction collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n}\n\nfunction makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n}\n\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n}\n\nfunction invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n}\n\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isPlainObject(value) {\n // The base prototype's toString deals with Argument objects and native namespaces like Math\n if (\n !value ||\n typeof value !== 'object' ||\n toString.call(value) !== '[object Object]'\n ) {\n return false;\n }\n\n var proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n\n // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n var parentProto = proto;\n var nextProto = Object.getPrototypeOf(proto);\n while (nextProto !== null) {\n parentProto = nextProto;\n nextProto = Object.getPrototypeOf(parentProto);\n }\n return parentProto === proto;\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObject(value))\n );\n}\n\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\n\nfunction has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n}\n\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n}\n\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\n\nfunction updateIn$1(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n}\n\nfunction setIn$1(collection, keyPath, value) {\n return updateIn$1(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn(keyPath, v) {\n return setIn$1(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n return updateIn$1(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\n\nfunction update$1(collection, key, notSetValue, updater) {\n return updateIn$1(collection, [key], notSetValue, updater);\n}\n\nfunction update(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update$1(this, key, notSetValue, updater);\n}\n\nfunction updateIn(keyPath, notSetValue, updater) {\n return updateIn$1(this, keyPath, notSetValue, updater);\n}\n\nfunction merge$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\n\nfunction merge(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection(sources[i]).forEach(mergeItem);\n }\n return merged;\n}\n\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) &&\n isDataStructure(newValue) &&\n areMergeable(oldValue, newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n}\n\n/**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\nfunction areMergeable(oldDataStructure, newDataStructure) {\n var oldSeq = Seq(oldDataStructure);\n var newSeq = Seq(newDataStructure);\n // This logic assumes that a sequence can only fall into one of the three\n // categories mentioned above (since there's no `isSetLike()` method).\n return (\n isIndexed(oldSeq) === isIndexed(newSeq) &&\n isKeyed(oldSeq) === isKeyed(newSeq)\n );\n}\n\nfunction mergeDeep() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\nfunction mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n}\n\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n return this.__altered;\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection) {\n function Map(value) {\n return value === undefined || value === null\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection ) Map.__proto__ = KeyedCollection;\n Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, this$1$1));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update;\nMapPrototype.updateIn = updateIn;\nMapPrototype.merge = MapPrototype.concat = merge$1;\nMapPrototype.mergeWith = mergeWith$1;\nMapPrototype.mergeDeep = mergeDeep;\nMapPrototype.mergeDeepWith = mergeDeepWith;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function (result, arr) {\n return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =\n function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n };\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =\n function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n };\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator ) MapIterator.__proto__ = Iterator;\n MapIterator.prototype = Object.create( Iterator && Iterator.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n}\n\nfunction makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n}\n\nfunction isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection) {\n function List(value) {\n var empty = emptyList();\n if (value === undefined || value === null) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection ) List.__proto__ = IndexedCollection;\n List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update;\nListPrototype.updateIn = updateIn;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function (result, arr) {\n return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\n\nvar EMPTY_LIST;\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n}\n\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map) {\n function OrderedMap(value) {\n return value === undefined || value === null\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map ) OrderedMap.__proto__ = Map;\n OrderedMap.prototype = Object.create( Map && Map.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n this.__altered = true;\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n omap.__altered = false;\n return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n omap.__altered = true;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection) {\n function Stack(value) {\n return value === undefined || value === null\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;\n Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function (result, arr) {\n return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n}\n\nfunction mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\n\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection) {\n function Set(value) {\n return value === undefined || value === null\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection ) Set.__proto__ = SetCollection;\n Set.prototype = Object.create( SetCollection && SetCollection.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n // keep track if the set is altered by the map function\n var didChanges = false;\n\n var newMap = updateSet(\n this,\n this._map.mapEntries(function (ref) {\n var v = ref[1];\n\n var mapped = mapper.call(context, v, v, this$1$1);\n\n if (mapped !== v) {\n didChanges = true;\n }\n\n return [mapped, mapped];\n }, context)\n );\n\n return didChanges ? newMap : this;\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n if (typeof iters[ii] === 'string') {\n set.add(iters[ii]);\n } else {\n SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function (result, arr) {\n return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq ) Range.__proto__ = IndexedSeq;\n Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nfunction getIn$1(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n}\n\nfunction getIn(searchKeyPath, notSetValue) {\n return getIn$1(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn$1(collection, keyPath) {\n return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn(searchKeyPath) {\n return hasIn$1(this, searchKeyPath);\n}\n\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq().map(this.__toStringMapper).join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n partition: function partition(predicate, context) {\n return partitionFactory(this, predicate, context);\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = false;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n returnValue = true;\n return false;\n }\n });\n return returnValue;\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq().reverse().first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })\n .flip()\n );\n },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n this.size === Infinity ||\n (this.size !== undefined && index > this.size)\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n});\n\nvar SetCollectionPrototype = SetCollection.prototype;\nSetCollectionPrototype.has = CollectionPrototype.includes;\nSetCollectionPrototype.contains = SetCollectionPrototype.includes;\nSetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollectionPrototype);\nmixin(IndexedSeq, IndexedCollectionPrototype);\nmixin(SetSeq, SetCollectionPrototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n}\n\nfunction keyMapper(v, k) {\n return k;\n}\n\nfunction entryMapper(v, k) {\n return [k, v];\n}\n\nfunction not(predicate) {\n return function () {\n return !predicate.apply(this, arguments);\n };\n}\n\nfunction neg(predicate) {\n return function () {\n return -predicate.apply(this, arguments);\n };\n}\n\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n}\n\nfunction hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set) {\n function OrderedSet(value) {\n return value === undefined || value === null\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set ) OrderedSet.__proto__ = Set;\n OrderedSet.prototype = Object.create( Set && Set.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n}\n\nvar PairSorting = {\n LeftThenRight: -1,\n RightThenLeft: +1,\n};\n\nfunction throwOnInvalidDefaultValues(defaultValues) {\n if (isRecord(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'\n );\n }\n\n if (isImmutable(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'\n );\n }\n\n if (defaultValues === null || typeof defaultValues !== 'object') {\n throw new Error(\n 'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'\n );\n }\n}\n\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n throwOnInvalidDefaultValues(defaultValues);\n\n var RecordType = function Record(values) {\n var this$1$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n });\n });\n return this;\n };\n\n var RecordTypePrototype = (RecordType.prototype =\n Object.create(RecordPrototype));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n return (\n this === other ||\n (isRecord(other) && recordSeq(this).equals(recordSeq(other)))\n );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge$1;\nRecordPrototype.mergeWith = mergeWith$1;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep;\nRecordPrototype.mergeDeepWith = mergeDeepWith;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn;\nRecordPrototype.update = update;\nRecordPrototype.updateIn = updateIn;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\n\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function () {\n return this.get(name);\n },\n set: function (value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;\n Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n if (\n typeof value !== 'string' &&\n !isImmutable(value) &&\n (isArrayLike(value) || hasIterator(value) || isPlainObject(value))\n ) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n}\n\nfunction defaultConverter(k, v) {\n // Effectively the opposite of \"Collection.toSeq()\"\n return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n}\n\nvar version = \"4.3.5\";\n\nvar Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n PairSorting: PairSorting,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isPlainObject: isPlainObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn$1,\n has: has,\n hasIn: hasIn$1,\n merge: merge,\n mergeDeep: mergeDeep$1,\n mergeWith: mergeWith,\n mergeDeepWith: mergeDeepWith$1,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn$1,\n update: update$1,\n updateIn: updateIn$1,\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport default Immutable;\nexport { Collection, Iterable, List, Map, OrderedMap, OrderedSet, PairSorting, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn$1 as getIn, has, hasIn$1 as hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep$1 as mergeDeep, mergeDeepWith$1 as mergeDeepWith, mergeWith, remove, removeIn, set, setIn$1 as setIn, update$1 as update, updateIn$1 as updateIn, version };\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/BlankNode\"), exports);\n__exportStar(require(\"./lib/DataFactory\"), exports);\n__exportStar(require(\"./lib/DefaultGraph\"), exports);\n__exportStar(require(\"./lib/Literal\"), exports);\n__exportStar(require(\"./lib/NamedNode\"), exports);\n__exportStar(require(\"./lib/Quad\"), exports);\n__exportStar(require(\"./lib/Variable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNode = void 0;\n/**\n * A term that represents an RDF blank node with a label.\n */\nclass BlankNode {\n constructor(value) {\n this.termType = 'BlankNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNode = BlankNode;\n//# sourceMappingURL=BlankNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataFactory = void 0;\nconst BlankNode_1 = require(\"./BlankNode\");\nconst DefaultGraph_1 = require(\"./DefaultGraph\");\nconst Literal_1 = require(\"./Literal\");\nconst NamedNode_1 = require(\"./NamedNode\");\nconst Quad_1 = require(\"./Quad\");\nconst Variable_1 = require(\"./Variable\");\nlet dataFactoryCounter = 0;\n/**\n * A factory for instantiating RDF terms and quads.\n */\nclass DataFactory {\n constructor(options) {\n this.blankNodeCounter = 0;\n options = options || {};\n this.blankNodePrefix = options.blankNodePrefix || `df_${dataFactoryCounter++}_`;\n }\n /**\n * @param value The IRI for the named node.\n * @return A new instance of NamedNode.\n * @see NamedNode\n */\n namedNode(value) {\n return new NamedNode_1.NamedNode(value);\n }\n /**\n * @param value The optional blank node identifier.\n * @return A new instance of BlankNode.\n * If the `value` parameter is undefined a new identifier\n * for the blank node is generated for each call.\n * @see BlankNode\n */\n blankNode(value) {\n return new BlankNode_1.BlankNode(value || `${this.blankNodePrefix}${this.blankNodeCounter++}`);\n }\n /**\n * @param value The literal value.\n * @param languageOrDatatype The optional language or datatype.\n * If `languageOrDatatype` is a NamedNode,\n * then it is used for the value of `NamedNode.datatype`.\n * Otherwise `languageOrDatatype` is used for the value\n * of `NamedNode.language`.\n * @return A new instance of Literal.\n * @see Literal\n */\n literal(value, languageOrDatatype) {\n return new Literal_1.Literal(value, languageOrDatatype);\n }\n /**\n * This method is optional.\n * @param value The variable name\n * @return A new instance of Variable.\n * @see Variable\n */\n variable(value) {\n return new Variable_1.Variable(value);\n }\n /**\n * @return An instance of DefaultGraph.\n */\n defaultGraph() {\n return DefaultGraph_1.DefaultGraph.INSTANCE;\n }\n /**\n * @param subject The quad subject term.\n * @param predicate The quad predicate term.\n * @param object The quad object term.\n * @param graph The quad graph term.\n * @return A new instance of Quad.\n * @see Quad\n */\n quad(subject, predicate, object, graph) {\n return new Quad_1.Quad(subject, predicate, object, graph || this.defaultGraph());\n }\n /**\n * Create a deep copy of the given term using this data factory.\n * @param original An RDF term.\n * @return A deep copy of the given term.\n */\n fromTerm(original) {\n // TODO: remove nasty any casts when this TS bug has been fixed:\n // https://github.com/microsoft/TypeScript/issues/26933\n switch (original.termType) {\n case 'NamedNode':\n return this.namedNode(original.value);\n case 'BlankNode':\n return this.blankNode(original.value);\n case 'Literal':\n if (original.language) {\n return this.literal(original.value, original.language);\n }\n if (!original.datatype.equals(Literal_1.Literal.XSD_STRING)) {\n return this.literal(original.value, this.fromTerm(original.datatype));\n }\n return this.literal(original.value);\n case 'Variable':\n return this.variable(original.value);\n case 'DefaultGraph':\n return this.defaultGraph();\n case 'Quad':\n return this.quad(this.fromTerm(original.subject), this.fromTerm(original.predicate), this.fromTerm(original.object), this.fromTerm(original.graph));\n }\n }\n /**\n * Create a deep copy of the given quad using this data factory.\n * @param original An RDF quad.\n * @return A deep copy of the given quad.\n */\n fromQuad(original) {\n return this.fromTerm(original);\n }\n /**\n * Reset the internal blank node counter.\n */\n resetBlankNodeCounter() {\n this.blankNodeCounter = 0;\n }\n}\nexports.DataFactory = DataFactory;\n//# sourceMappingURL=DataFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultGraph = void 0;\n/**\n * A singleton term instance that represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass DefaultGraph {\n constructor() {\n this.termType = 'DefaultGraph';\n this.value = '';\n // Private constructor\n }\n equals(other) {\n return !!other && other.termType === 'DefaultGraph';\n }\n}\nexports.DefaultGraph = DefaultGraph;\nDefaultGraph.INSTANCE = new DefaultGraph();\n//# sourceMappingURL=DefaultGraph.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Literal = void 0;\nconst NamedNode_1 = require(\"./NamedNode\");\n/**\n * A term that represents an RDF literal, containing a string with an optional language tag or datatype.\n */\nclass Literal {\n constructor(value, languageOrDatatype) {\n this.termType = 'Literal';\n this.value = value;\n if (typeof languageOrDatatype === 'string') {\n this.language = languageOrDatatype;\n this.datatype = Literal.RDF_LANGUAGE_STRING;\n }\n else if (languageOrDatatype) {\n this.language = '';\n this.datatype = languageOrDatatype;\n }\n else {\n this.language = '';\n this.datatype = Literal.XSD_STRING;\n }\n }\n equals(other) {\n return !!other && other.termType === 'Literal' && other.value === this.value &&\n other.language === this.language && this.datatype.equals(other.datatype);\n }\n}\nexports.Literal = Literal;\nLiteral.RDF_LANGUAGE_STRING = new NamedNode_1.NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');\nLiteral.XSD_STRING = new NamedNode_1.NamedNode('http://www.w3.org/2001/XMLSchema#string');\n//# sourceMappingURL=Literal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NamedNode = void 0;\n/**\n * A term that contains an IRI.\n */\nclass NamedNode {\n constructor(value) {\n this.termType = 'NamedNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'NamedNode' && other.value === this.value;\n }\n}\nexports.NamedNode = NamedNode;\n//# sourceMappingURL=NamedNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Quad = void 0;\n/**\n * An instance of DefaultGraph represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass Quad {\n constructor(subject, predicate, object, graph) {\n this.termType = 'Quad';\n this.value = '';\n this.subject = subject;\n this.predicate = predicate;\n this.object = object;\n this.graph = graph;\n }\n equals(other) {\n // `|| !other.termType` is for backwards-compatibility with old factories without RDF* support.\n return !!other && (other.termType === 'Quad' || !other.termType) &&\n this.subject.equals(other.subject) &&\n this.predicate.equals(other.predicate) &&\n this.object.equals(other.object) &&\n this.graph.equals(other.graph);\n }\n}\nexports.Quad = Quad;\n//# sourceMappingURL=Quad.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Variable = void 0;\n/**\n * A term that represents a variable.\n */\nclass Variable {\n constructor(value) {\n this.termType = 'Variable';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'Variable' && other.value === this.value;\n }\n}\nexports.Variable = Variable;\n//# sourceMappingURL=Variable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/RdfIsomorphic\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTermGrounded = exports.termToSignature = exports.quadToSignature = exports.sha1hex = exports.hashTerm = exports.hashTerms = exports.getGraphBlankNodes = exports.uniqGraph = exports.deindexGraph = exports.indexGraph = exports.getQuadsWithoutBlankNodes = exports.getQuadsWithBlankNodes = exports.hasValue = exports.hashValues = exports.getBijectionInner = exports.getBijection = exports.isomorphic = void 0;\nconst hash_js_1 = require(\"hash.js\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\n/**\n * Determines if the two given graphs are isomorphic.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {boolean} If the two given graphs are isomorphic.\n */\nfunction isomorphic(graphA, graphB) {\n return !!getBijection(graphA, graphB);\n}\nexports.isomorphic = isomorphic;\n/**\n * Calculate a hash of graphA blank nodes to graphB blank nodes.\n * This represents a bijection from graphA's blank nodes to graphB's blank nodes.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {IBijection} A hash representing a bijection, or null if none could be found.\n */\nfunction getBijection(graphA, graphB) {\n // Check if all (non-blanknode-containing) quads in the two graphs are equal.\n // We do this by creating a hash-based index for both graphs.\n const nonBlankIndexA = indexGraph(getQuadsWithoutBlankNodes(graphA));\n const nonBlankIndexB = indexGraph(getQuadsWithoutBlankNodes(graphB));\n if (Object.keys(nonBlankIndexA).length !== Object.keys(nonBlankIndexB).length) {\n return null;\n }\n for (const key in nonBlankIndexA) {\n if (nonBlankIndexA[key] !== nonBlankIndexB[key]) {\n return null;\n }\n }\n // Pre-process data that needs to be present in each iteration of getBijectionInner.\n const blankQuadsA = uniqGraph(getQuadsWithBlankNodes(graphA));\n const blankQuadsB = uniqGraph(getQuadsWithBlankNodes(graphB));\n const blankNodesA = getGraphBlankNodes(graphA);\n const blankNodesB = getGraphBlankNodes(graphB);\n return getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB);\n}\nexports.getBijection = getBijection;\nfunction getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, groundedHashesA, groundedHashesB) {\n if (!groundedHashesA) {\n groundedHashesA = {};\n }\n if (!groundedHashesB) {\n groundedHashesB = {};\n }\n // Hash every term based on the signature of the quads if appears in.\n const [hashesA, ungroundedHashesA] = hashTerms(blankQuadsA, blankNodesA, groundedHashesA);\n const [hashesB, ungroundedHashesB] = hashTerms(blankQuadsB, blankNodesB, groundedHashesB);\n // Break quickly if a graph contains a grounded node that is not contained in the other graph.\n if (Object.keys(hashesA).length !== Object.keys(hashesB).length) {\n return null;\n }\n for (const hashKeyA in hashesA) {\n if (!hasValue(hashesB, hashesA[hashKeyA])) {\n return null;\n }\n }\n // Map the blank nodes from graph A to the blank nodes of graph B using the created hashes.\n // Grounded hashes will also be equal, but not needed here, we will need them in the next recursion\n // (as we only recurse on grounded nodes).\n let bijection = {};\n for (const blankNodeA of blankNodesA) {\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n const blankNodeAHash = ungroundedHashesA[blankNodeAString];\n for (const blankNodeBString in ungroundedHashesB) {\n if (ungroundedHashesB[blankNodeBString] === blankNodeAHash) {\n bijection[blankNodeAString] = blankNodeBString;\n delete ungroundedHashesB[blankNodeBString];\n break;\n }\n }\n }\n // Check if all nodes from graph A and B are present in the bijection,\n // if not, speculatively mark pairs with matching ungrounded hashes as bijected, and recurse.\n if (!arraysEqual(Object.keys(bijection).sort(), blankNodesA.map(rdf_string_1.termToString).sort())\n || !arraysEqual(hashValues(bijection).sort(), blankNodesB.map(rdf_string_1.termToString).sort())) {\n // I have not yet been able to find any pathological cases where this code is reached.\n // This may be removable, but let's wait until someone proves that.\n bijection = null;\n for (const blankNodeA of blankNodesA) {\n // Only replace ungrounded node hashes\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n if (!hashesA[blankNodeAString]) {\n for (const blankNodeB of blankNodesB) {\n // Only replace ungrounded node hashes\n const blankNodeBString = rdf_string_1.termToString(blankNodeB);\n if (!hashesB[blankNodeBString]) {\n if (ungroundedHashesA[blankNodeAString] === ungroundedHashesB[blankNodeBString]) {\n const hash = sha1hex(blankNodeAString);\n bijection = getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, Object.assign(Object.assign({}, hashesA), { [blankNodeAString]: hash }), Object.assign(Object.assign({}, hashesB), { [blankNodeBString]: hash }));\n }\n }\n }\n }\n }\n }\n return bijection;\n}\nexports.getBijectionInner = getBijectionInner;\nfunction arraysEqual(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = array1.length; i--;) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Get all values from the given hash\n * @param hash A hash.\n * @return {any[]} The array of values.\n */\nfunction hashValues(hash) {\n const arr = [];\n for (const e in hash) {\n arr.push(hash[e]);\n }\n return arr;\n}\nexports.hashValues = hashValues;\n/**\n * Check if the given hash contains the given value.\n * @param hash A hash.\n * @param {string} value A value.\n * @return {boolean} If it contains the value.\n */\nfunction hasValue(hash, value) {\n for (const hashValue in hash) {\n if (hash[hashValue] === value) {\n return true;\n }\n }\n return false;\n}\nexports.hasValue = hasValue;\n/**\n * Get all quads with blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads with blank nodes\n */\nfunction getQuadsWithBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.someTerms(quad, (value) => {\n return value.termType === 'BlankNode'\n || (value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithBlankNodes = getQuadsWithBlankNodes;\n/**\n * Get all quads without blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads without blank nodes\n */\nfunction getQuadsWithoutBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.everyTerms(quad, (value) => {\n return value.termType !== 'BlankNode'\n && !(value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithoutBlankNodes = getQuadsWithoutBlankNodes;\n/**\n * Create a hash-based index of the given graph.\n * @param {Quad[]} graph An array of quads, the order does not matter.\n * @return {{[p: string]: boolean}} A hash-based datastructure representing the graph.\n */\nfunction indexGraph(graph) {\n const index = {};\n for (const quad of graph) {\n index[JSON.stringify(rdf_string_1.quadToStringQuad(quad))] = true;\n }\n return index;\n}\nexports.indexGraph = indexGraph;\n/**\n * Create a graph from the given hash-based index.\n * @param {{[p: string]: boolean}} indexedGraph A hash-based datastructure representing the graph.\n * @return {Quad[]} An array of quads, the order does not matter.\n */\nfunction deindexGraph(indexedGraph) {\n return Object.keys(indexedGraph).map((str) => rdf_string_1.stringQuadToQuad(JSON.parse(str)));\n}\nexports.deindexGraph = deindexGraph;\n/**\n * Unique-ify the given RDF graph based on strict equality.\n * The output graph will consist of new quad and term instances.\n * @param {Quad[]} graph An input graph.\n * @return {Quad[]} The input graph without duplicates.\n */\nfunction uniqGraph(graph) {\n return deindexGraph(indexGraph(graph));\n}\nexports.uniqGraph = uniqGraph;\n/**\n * Find all blank nodes in the given graph.\n * @param {Quad[]} graph An array of quads.\n * @return {BlankNode[]} A list of (unique) blank nodes.\n */\nfunction getGraphBlankNodes(graph) {\n return rdf_terms_1.uniqTerms(graph.map((quad) => rdf_terms_1.getBlankNodes(rdf_terms_1.getTermsNested(quad)))\n .reduce((acc, val) => acc.concat(val), []));\n}\nexports.getGraphBlankNodes = getGraphBlankNodes;\n/**\n * Create term hashes for the given set of quads and blank node terms.\n *\n * @param {Quad[]} quads A set of quads.\n * @param {Term[]} terms Blank node terms.\n * @param {ITermHash} groundedHashes Grounded term hashes that are used to create more specific signatures\n * of other terms, because they are based on non-blank nodes and grounded blank nodes.\n * @return {[ITermHash]} A tuple of grounded and ungrounded hashes.\n */\nfunction hashTerms(quads, terms, groundedHashes) {\n const hashes = Object.assign({}, groundedHashes);\n const ungroundedHashes = {};\n let hashNeeded = true;\n // Iteratively mark nodes as grounded.\n // If a node is marked as grounded, then the next iteration can lead to new grounded states\n while (hashNeeded) {\n const initialGroundedNodesCount = Object.keys(hashes).length;\n for (const term of terms) {\n const termString = rdf_string_1.termToString(term);\n if (!hashes[termString]) {\n const [grounded, hash] = hashTerm(term, quads, hashes);\n if (grounded) {\n hashes[termString] = hash;\n }\n ungroundedHashes[termString] = hash;\n }\n }\n // All terms that have a unique hash at this point can be marked as grounded\n const uniques = {};\n for (const termKey in ungroundedHashes) {\n const hash = ungroundedHashes[termKey];\n if (uniques[hash] === undefined) {\n uniques[hash] = termKey;\n }\n else {\n uniques[hash] = false;\n }\n }\n for (const hash in uniques) {\n const value = uniques[hash];\n if (value) {\n hashes[value] = hash;\n }\n }\n // Check if the loop needs to terminate\n hashNeeded = initialGroundedNodesCount !== Object.keys(hashes).length;\n }\n return [hashes, ungroundedHashes];\n}\nexports.hashTerms = hashTerms;\n/**\n * Generate a hash for the given term based on the signature of the quads it appears in.\n *\n * Signatures are made up of grounded terms in quads that are associated with a term,\n * i.e., everything except for ungrounded blank nodes.\n * The hash is created by hashing a sorted list of each quad's signature,\n * where each quad signature is a concatenation of the signature of all grounded terms.\n *\n * Terms are considered grounded if they are a member in the given hash AND if they are not the given term.\n *\n * @param {Term} term The term to get the hash around.\n * @param {Quad[]} quads The quads to include in the hashing.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {[boolean , string]} A tuple indicating if the given term is grounded in all the given quads, and the hash.\n */\nfunction hashTerm(term, quads, hashes) {\n const quadSignatures = [];\n let grounded = true;\n for (const quad of quads) {\n const terms = rdf_terms_1.getTermsNested(quad);\n if (terms.some((quadTerm) => quadTerm.equals(term))) {\n quadSignatures.push(quadToSignature(quad, hashes, term));\n for (const quadTerm of terms) {\n if (!isTermGrounded(quadTerm, hashes) && !quadTerm.equals(term)) {\n grounded = false;\n }\n }\n }\n }\n const hash = sha1hex(quadSignatures.sort().join(''));\n return [grounded, hash];\n}\nexports.hashTerm = hashTerm;\n/**\n * Create a hash using sha1 as a hex digest.\n * @param {string | Buffer | NodeJS.TypedArray | DataView} data Something to hash.\n * @return {string} A hash string.\n */\nfunction sha1hex(data) {\n return hash_js_1.sha1().update(data).digest('hex');\n}\nexports.sha1hex = sha1hex;\n/**\n * Convert the given quad to a string signature so that it can be used in the hash structure.\n * @param {Quad} quad A quad.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} term A target term to compare with.\n * @return {string} A string signature.\n */\nfunction quadToSignature(quad, hashes, term) {\n return rdf_terms_1.getTerms(quad).map((quadTerm) => termToSignature(quadTerm, hashes, term)).join('|');\n}\nexports.quadToSignature = quadToSignature;\n/**\n * Convert the given term to a string signature so that it can be used in the hash structure.\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} target A target term to compare with.\n * @return {string} A string signature.\n */\nfunction termToSignature(term, hashes, target) {\n if (term.equals(target)) {\n return '@self';\n }\n else if (term.termType === 'BlankNode') {\n return hashes[rdf_string_1.termToString(term)] || '@blank';\n }\n else if (term.termType === 'Quad') {\n return `<${quadToSignature(term, hashes, target)}>`;\n }\n else {\n return rdf_string_1.termToString(term);\n }\n}\nexports.termToSignature = termToSignature;\n/**\n * Check if a term is grounded.\n *\n * A term is grounded if it is not a blank node\n * or if it included in the given hash of grounded nodes.\n *\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {boolean} If the given term is grounded.\n */\nfunction isTermGrounded(term, hashes) {\n return (term.termType !== 'BlankNode'\n && !(term.termType === 'Quad' && rdf_terms_1.getTermsNested(term).some(subTerm => !isTermGrounded(subTerm, hashes)))) || !!hashes[rdf_string_1.termToString(term)];\n}\nexports.isTermGrounded = isTermGrounded;\n//# sourceMappingURL=RdfIsomorphic.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.termToString = exports.stringToTerm = exports.stringQuadToQuad = exports.quadToStringQuad = exports.getLiteralValue = exports.getLiteralType = exports.getLiteralLanguage = void 0;\nconst TermUtil_1 = require(\"./lib/TermUtil\");\nObject.defineProperty(exports, \"getLiteralLanguage\", { enumerable: true, get: function () { return TermUtil_1.getLiteralLanguage; } });\nObject.defineProperty(exports, \"getLiteralType\", { enumerable: true, get: function () { return TermUtil_1.getLiteralType; } });\nObject.defineProperty(exports, \"getLiteralValue\", { enumerable: true, get: function () { return TermUtil_1.getLiteralValue; } });\nObject.defineProperty(exports, \"quadToStringQuad\", { enumerable: true, get: function () { return TermUtil_1.quadToStringQuad; } });\nObject.defineProperty(exports, \"stringQuadToQuad\", { enumerable: true, get: function () { return TermUtil_1.stringQuadToQuad; } });\nObject.defineProperty(exports, \"stringToTerm\", { enumerable: true, get: function () { return TermUtil_1.stringToTerm; } });\nObject.defineProperty(exports, \"termToString\", { enumerable: true, get: function () { return TermUtil_1.termToString; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringQuadToQuad = exports.quadToStringQuad = exports.stringToTerm = exports.getLiteralLanguage = exports.getLiteralType = exports.getLiteralValue = exports.termToString = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst FACTORY = new rdf_data_factory_1.DataFactory();\n/**\n * Utility methods for converting between string-based RDF representations and RDFJS objects.\n *\n * RDF Terms are represented as follows:\n * * Blank nodes: '_:myBlankNode'\n * * Variables: '?myVariable'\n * * Literals: '\"myString\"', '\"myLanguageString\"@en-us', '\"3\"^^xsd:number'\n * * URIs: 'http://example.org'\n *\n * Quads/triples are represented as hashes with 'subject', 'predicate', 'object' and 'graph' (optional)\n * as keys, and string-based RDF terms as values.\n */\n/**\n * Convert an RDFJS term to a string-based representation.\n * @param {RDF.Term} term An RDFJS term.\n * @return {string} A string-based term representation.\n */\nfunction termToString(term) {\n // TODO: remove nasty any casts when this TS bug has been fixed: https://github.com/microsoft/TypeScript/issues/26933\n if (!term) {\n return undefined;\n }\n switch (term.termType) {\n case 'NamedNode': return term.value;\n case 'BlankNode': return ('_:' + term.value);\n case 'Literal':\n const literalValue = term;\n return ('\"' + literalValue.value + '\"' +\n (literalValue.datatype &&\n literalValue.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string' &&\n literalValue.datatype.value !== 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' ?\n '^^' + literalValue.datatype.value : '') +\n (literalValue.language ? '@' + literalValue.language : ''));\n case 'Quad': return `<<${termToString(term.subject)} ${termToString(term.predicate)} ${termToString(term.object)}${term.graph.termType === 'DefaultGraph' ? '' : ' ' + termToString(term.graph)}>>`;\n case 'Variable': return ('?' + term.value);\n case 'DefaultGraph': return term.value;\n }\n}\nexports.termToString = termToString;\n/**\n * Get the string value of a literal.\n * @param {string} literalValue An RDF literal enclosed by '\"'.\n * @return {string} The literal value inside the '\"'.\n */\nfunction getLiteralValue(literalValue) {\n const match = /^\"([^]*)\"/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1];\n}\nexports.getLiteralValue = getLiteralValue;\n/**\n * Get the datatype of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The datatype of the literal.\n */\nfunction getLiteralType(literalValue) {\n const match = /^\"[^]*\"(?:\\^\\^([^\"]+)|(@)[^@\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] || (match[2]\n ? 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' : 'http://www.w3.org/2001/XMLSchema#string');\n}\nexports.getLiteralType = getLiteralType;\n/**\n * Get the language of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The language of the literal.\n */\nfunction getLiteralLanguage(literalValue) {\n const match = /^\"[^]*\"(?:@([^@\"]+)|\\^\\^[^\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] ? match[1].toLowerCase() : '';\n}\nexports.getLiteralLanguage = getLiteralLanguage;\n/**\n * Transform a string-based RDF term to an RDFJS term.\n * @param {string} value A string-based RDF-term.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {RDF.Term} An RDF-JS term.\n */\nfunction stringToTerm(value, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n if (!value || !value.length) {\n return dataFactory.defaultGraph();\n }\n switch (value[0]) {\n case '_': return dataFactory.blankNode(value.substr(2));\n case '?':\n if (!dataFactory.variable) {\n throw new Error(`Missing 'variable()' method on the given DataFactory`);\n }\n return dataFactory.variable(value.substr(1));\n case '\"':\n const language = getLiteralLanguage(value);\n const type = dataFactory.namedNode(getLiteralType(value));\n return dataFactory.literal(getLiteralValue(value), language || type);\n case '<':\n default:\n if (value[0] === '<' && value.length > 4 && value[1] === '<' && value[value.length - 1] === '>' && value[value.length - 2] === '>') {\n // Iterate character-by-character to detect spaces that are *not* wrapped in <<>>\n const terms = value.slice(2, -2).trim();\n let stringTerms = [];\n let ignoreTags = 0;\n let lastIndex = 0;\n let inQuote = false;\n for (let i = 0; i < terms.length; i++) {\n const char = terms[i];\n if (char === '<')\n ignoreTags++;\n if (char === '>') {\n if (ignoreTags === 0) {\n throw new Error('Found closing tag without opening tag in ' + value);\n }\n else {\n ignoreTags--;\n }\n }\n if (char === '\"') {\n let escaped = false;\n let j = i;\n while (j-- > 0 && terms[j] === '\\\\') {\n escaped = !escaped;\n }\n if (!escaped) {\n // We have reached an unescaped quote\n inQuote = !inQuote;\n }\n }\n if (char === ' ' && !inQuote && ignoreTags === 0) {\n stringTerms.push(terms.slice(lastIndex, i));\n while (terms[i + 1] === ' ') {\n i += 1;\n }\n lastIndex = i + 1;\n }\n }\n if (ignoreTags !== 0) {\n throw new Error('Found opening tag without closing tag in ' + value);\n }\n stringTerms.push(terms.slice(lastIndex, terms.length));\n // We require 3 or 4 components\n if (stringTerms.length !== 3 && stringTerms.length !== 4) {\n throw new Error('Nested quad syntax error ' + value);\n }\n stringTerms = stringTerms.map(term => term.startsWith('<') && !term.includes(' ') ? term.slice(1, -1) : term);\n return dataFactory.quad(stringToTerm(stringTerms[0]), stringToTerm(stringTerms[1]), stringToTerm(stringTerms[2]), stringTerms[3] ? stringToTerm(stringTerms[3]) : undefined);\n }\n return dataFactory.namedNode(value);\n }\n}\nexports.stringToTerm = stringToTerm;\n/**\n * Convert an RDFJS quad to a string-based quad representation.\n * @param {Quad} q An RDFJS quad.\n * @return {IStringQuad} A hash with string-based quad terms.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction quadToStringQuad(q) {\n // tslint:disable:object-literal-sort-keys\n return {\n subject: termToString(q.subject),\n predicate: termToString(q.predicate),\n object: termToString(q.object),\n graph: termToString(q.graph),\n };\n // tslint:enable:object-literal-sort-keys\n}\nexports.quadToStringQuad = quadToStringQuad;\n/**\n * Convert a string-based quad representation to an RDFJS quad.\n * @param {IStringQuad} stringQuad A hash with string-based quad terms.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {Q} An RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction stringQuadToQuad(stringQuad, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n return dataFactory.quad(stringToTerm(stringQuad.subject, dataFactory), stringToTerm(stringQuad.predicate, dataFactory), stringToTerm(stringQuad.object, dataFactory), stringToTerm(stringQuad.graph, dataFactory));\n}\nexports.stringQuadToQuad = stringQuadToQuad;\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/QuadTermUtil\"), exports);\n__exportStar(require(\"./lib/TermUtil\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchPatternMappings = exports.matchPatternComplete = exports.matchPattern = exports.matchTerm = exports.getValueNestedPath = exports.someTermsNested = exports.someTerms = exports.everyTermsNested = exports.everyTerms = exports.reduceTermsNested = exports.reduceTerms = exports.mapTermsNested = exports.mapTerms = exports.filterQuadTermNamesNested = exports.filterQuadTermNames = exports.filterTermsNested = exports.filterTerms = exports.forEachTermsNested = exports.forEachTerms = exports.collectNamedTerms = exports.getNamedTerms = exports.getTermsNested = exports.getTerms = exports.TRIPLE_TERM_NAMES = exports.QUAD_TERM_NAMES = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * All available quad term names.\n * @type {[string , string , string , string]}\n */\nexports.QUAD_TERM_NAMES = ['subject', 'predicate', 'object', 'graph'];\n/**\n * All available triple term names.\n * @type {[string , string , string]}\n */\nexports.TRIPLE_TERM_NAMES = ['subject', 'predicate', 'object'];\n/**\n * Get all terms in the given quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the quad.\n */\nfunction getTerms(quad, ignoreDefaultGraph) {\n if (ignoreDefaultGraph && quad.graph.termType === 'DefaultGraph') {\n return [quad.subject, quad.predicate, quad.object];\n }\n return [quad.subject, quad.predicate, quad.object, quad.graph];\n}\nexports.getTerms = getTerms;\n/**\n * Get all terms in the given quad, including nested quads.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the nested quad, excluding quad terms.\n */\nfunction getTermsNested(quad, ignoreDefaultGraph) {\n const terms = [];\n for (const term of getTerms(quad, ignoreDefaultGraph)) {\n if (term.termType === 'Quad') {\n getTermsNested(term, ignoreDefaultGraph).forEach(subTerm => terms.push(subTerm));\n }\n else {\n terms.push(term);\n }\n }\n return terms;\n}\nexports.getTermsNested = getTermsNested;\n/**\n * Convert the given quad to an array of named terms.\n * This is the reverse operation of {@link collectNamedTerms}.\n * @param {BaseQuad} quad An RDFJS quad.\n * @return {INamedTerm[]} An array of named terms.\n */\nfunction getNamedTerms(quad) {\n return [\n { key: 'subject', value: quad.subject },\n { key: 'predicate', value: quad.predicate },\n { key: 'object', value: quad.object },\n { key: 'graph', value: quad.graph },\n ];\n}\nexports.getNamedTerms = getNamedTerms;\n/**\n * Convert an array of named terms to an RDFJS quad.\n * This is the reverse operation of {@link getNamedTerms}.\n * @param {INamedTerm[]} namedTerms An array of named terms.\n * @param {(termName: QuadTermName) => Term} defaultCb An optional callback for when\n * certain terms are not available in the array.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Q} The resulting RDFJS quad.\n * @template Q The type of quad to output, defaults to RDF.Quad.\n */\nfunction collectNamedTerms(namedTerms, defaultCb, dataFactory) {\n const elements = {};\n namedTerms.forEach((namedTerm) => elements[namedTerm.key] = namedTerm.value);\n if (defaultCb) {\n elements.subject = elements.subject || defaultCb('subject');\n elements.predicate = elements.predicate || defaultCb('predicate');\n elements.object = elements.object || defaultCb('object');\n elements.graph = elements.graph || defaultCb('graph');\n }\n return (dataFactory || DF).quad(elements.subject, elements.predicate, elements.object, elements.graph);\n}\nexports.collectNamedTerms = collectNamedTerms;\n/**\n * Iterates over each term.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} cb A callback function.\n */\nfunction forEachTerms(quad, cb) {\n cb(quad.subject, 'subject');\n cb(quad.predicate, 'predicate');\n cb(quad.object, 'object');\n cb(quad.graph, 'graph');\n}\nexports.forEachTerms = forEachTerms;\n/**\n * Iterates over each leaf term, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} cb A callback function.\n * @param QuadTermName[] keys The current key path.\n */\nfunction forEachTermsNested(quad, cb, keys = []) {\n if (quad.subject.termType === 'Quad') {\n forEachTermsNested(quad.subject, cb, [...keys, 'subject']);\n }\n else {\n cb(quad.subject, [...keys, 'subject']);\n }\n if (quad.predicate.termType === 'Quad') {\n forEachTermsNested(quad.predicate, cb, [...keys, 'predicate']);\n }\n else {\n cb(quad.predicate, [...keys, 'predicate']);\n }\n if (quad.object.termType === 'Quad') {\n forEachTermsNested(quad.object, cb, [...keys, 'object']);\n }\n else {\n cb(quad.object, [...keys, 'object']);\n }\n if (quad.graph.termType === 'Quad') {\n forEachTermsNested(quad.graph, cb, [...keys, 'graph']);\n }\n else {\n cb(quad.graph, [...keys, 'graph']);\n }\n}\nexports.forEachTermsNested = forEachTermsNested;\n/**\n * Get all terms in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName) => boolean} filter A filter callback.\n * @return {Term[]} The list of matching terms.\n */\nfunction filterTerms(quad, filter) {\n const terms = [];\n if (filter(quad.subject, 'subject')) {\n terms.push(quad.subject);\n }\n if (filter(quad.predicate, 'predicate')) {\n terms.push(quad.predicate);\n }\n if (filter(quad.object, 'object')) {\n terms.push(quad.object);\n }\n if (filter(quad.graph, 'graph')) {\n terms.push(quad.graph);\n }\n return terms;\n}\nexports.filterTerms = filterTerms;\n/**\n * Get all terms in the given quad that return true on the given filter function, while recursing into quoted triples.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName) => boolean} filter A filter callback.\n * @param QuadTermName[] keys The current key path.\n * @return {Term[]} The list of matching terms.\n */\nfunction filterTermsNested(quad, filter, keys = []) {\n let terms = [];\n if (quad.subject.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.subject, filter, [...keys, 'subject'])];\n }\n else {\n if (filter(quad.subject, [...keys, 'subject'])) {\n terms.push(quad.subject);\n }\n }\n if (quad.predicate.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.predicate, filter, [...keys, 'predicate'])];\n }\n else {\n if (filter(quad.predicate, [...keys, 'predicate'])) {\n terms.push(quad.predicate);\n }\n }\n if (quad.object.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.object, filter, [...keys, 'object'])];\n }\n else {\n if (filter(quad.object, [...keys, 'object'])) {\n terms.push(quad.object);\n }\n }\n if (quad.graph.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.graph, filter, [...keys, 'graph'])];\n }\n else {\n if (filter(quad.graph, [...keys, 'graph'])) {\n terms.push(quad.graph);\n }\n }\n return terms;\n}\nexports.filterTermsNested = filterTermsNested;\n/**\n * Get all quad term names in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName, all: INamedTerm[]) => boolean} filter A filter callback.\n * @return {QuadTermName[]} The list of matching quad term names.\n */\nfunction filterQuadTermNames(quad, filter) {\n const names = [];\n if (filter(quad.subject, 'subject')) {\n names.push('subject');\n }\n if (filter(quad.predicate, 'predicate')) {\n names.push('predicate');\n }\n if (filter(quad.object, 'object')) {\n names.push('object');\n }\n if (filter(quad.graph, 'graph')) {\n names.push('graph');\n }\n return names;\n}\nexports.filterQuadTermNames = filterQuadTermNames;\n/**\n * Get all quad term names in the given quad that return true on the given filter function, while recursing into quoted triples.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName, all: INamedTerm[]) => boolean} filter A filter callback.\n * @param QuadTermName[] keys The current key path.\n * @return {QuadTermName[]} The list of matching quad term names.\n */\nfunction filterQuadTermNamesNested(quad, filter, keys = []) {\n let names = [];\n const keysS = [...keys, 'subject'];\n if (quad.subject.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.subject, filter, keysS)];\n }\n else {\n if (filter(quad.subject, keysS)) {\n names.push(keysS);\n }\n }\n const keysP = [...keys, 'predicate'];\n if (quad.predicate.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.predicate, filter, keysP)];\n }\n else {\n if (filter(quad.predicate, keysP)) {\n names.push(keysP);\n }\n }\n const keysO = [...keys, 'object'];\n if (quad.object.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.object, filter, keysO)];\n }\n else {\n if (filter(quad.object, keysO)) {\n names.push(keysO);\n }\n }\n const keysG = [...keys, 'graph'];\n if (quad.graph.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.graph, filter, keysG)];\n }\n else {\n if (filter(quad.graph, keysG)) {\n names.push(keysG);\n }\n }\n return names;\n}\nexports.filterQuadTermNamesNested = filterQuadTermNamesNested;\n/**\n * Map all terms of a quad.\n * @param {Quad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName) => Term} mapper A mapper function.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Quad} A new RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction mapTerms(quad, mapper, dataFactory) {\n return (dataFactory || DF).quad(mapper(quad.subject, 'subject'), mapper(quad.predicate, 'predicate'), mapper(quad.object, 'object'), mapper(quad.graph, 'graph'));\n}\nexports.mapTerms = mapTerms;\n/**\n * Map all terms of a quad, while recursing into quoted triples.\n * @param {Quad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName) => Term} mapper A mapper function.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @param QuadTermName[] keys The current key path.\n * @return {Quad} A new RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction mapTermsNested(quad, mapper, dataFactory, keys = []) {\n return (dataFactory || DF).quad(quad.subject.termType === 'Quad' ?\n mapTermsNested(quad.subject, mapper, dataFactory, [...keys, 'subject']) :\n mapper(quad.subject, [...keys, 'subject']), quad.predicate.termType === 'Quad' ?\n mapTermsNested(quad.predicate, mapper, dataFactory, [...keys, 'predicate']) :\n mapper(quad.predicate, [...keys, 'predicate']), quad.object.termType === 'Quad' ?\n mapTermsNested(quad.object, mapper, dataFactory, [...keys, 'object']) :\n mapper(quad.object, [...keys, 'object']), quad.graph.termType === 'Quad' ?\n mapTermsNested(quad.graph, mapper, dataFactory, [...keys, 'graph']) :\n mapper(quad.graph, [...keys, 'graph']));\n}\nexports.mapTermsNested = mapTermsNested;\n/**\n * Reduce all terms of a quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(previousValue: U, currentValue: Term, key: QuadTermName) => U} reducer A reduce function.\n * @param {U} initialValue The initial value.\n * @return {U} The final value.\n */\nfunction reduceTerms(quad, reducer, initialValue) {\n let value = initialValue;\n value = reducer(value, quad.subject, 'subject');\n value = reducer(value, quad.predicate, 'predicate');\n value = reducer(value, quad.object, 'object');\n return reducer(value, quad.graph, 'graph');\n}\nexports.reduceTerms = reduceTerms;\n/**\n * Reduce all terms of a quad, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(previousValue: U, currentValue: Term, key: QuadTermName) => U} reducer A reduce function.\n * @param {U} initialValue The initial value.\n * @param QuadTermName[] keys The current key path.\n * @return {U} The final value.\n */\nfunction reduceTermsNested(quad, reducer, initialValue, keys = []) {\n let value = initialValue;\n if (quad.subject.termType === 'Quad') {\n value = reduceTermsNested(quad.subject, reducer, value, [...keys, 'subject']);\n }\n else {\n value = reducer(value, quad.subject, [...keys, 'subject']);\n }\n if (quad.predicate.termType === 'Quad') {\n value = reduceTermsNested(quad.predicate, reducer, value, [...keys, 'predicate']);\n }\n else {\n value = reducer(value, quad.predicate, [...keys, 'predicate']);\n }\n if (quad.object.termType === 'Quad') {\n value = reduceTermsNested(quad.object, reducer, value, [...keys, 'object']);\n }\n else {\n value = reducer(value, quad.object, [...keys, 'object']);\n }\n if (quad.graph.termType === 'Quad') {\n value = reduceTermsNested(quad.graph, reducer, value, [...keys, 'graph']);\n }\n else {\n value = reducer(value, quad.graph, [...keys, 'graph']);\n }\n return value;\n}\nexports.reduceTermsNested = reduceTermsNested;\n/**\n * Determines whether all terms satisfy the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If all terms satisfy the specified test.\n */\nfunction everyTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n && checker(quad.predicate, 'predicate')\n && checker(quad.object, 'object')\n && checker(quad.graph, 'graph');\n}\nexports.everyTerms = everyTerms;\n/**\n * Determines whether all terms satisfy the specified test, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @param QuadTermName[] keys The current key path.\n * @return {boolean} If all terms satisfy the specified test.\n */\nfunction everyTermsNested(quad, checker, keys = []) {\n return (quad.subject.termType === 'Quad' ?\n everyTermsNested(quad.subject, checker, [...keys, 'subject']) :\n checker(quad.subject, [...keys, 'subject']))\n && (quad.predicate.termType === 'Quad' ?\n everyTermsNested(quad.predicate, checker, [...keys, 'predicate']) :\n checker(quad.predicate, [...keys, 'predicate']))\n && (quad.object.termType === 'Quad' ?\n everyTermsNested(quad.object, checker, [...keys, 'object']) :\n checker(quad.object, [...keys, 'object']))\n && (quad.graph.termType === 'Quad' ?\n everyTermsNested(quad.graph, checker, [...keys, 'graph']) :\n checker(quad.graph, [...keys, 'graph']));\n}\nexports.everyTermsNested = everyTermsNested;\n/**\n * Determines whether at least one term satisfies the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If at least one term satisfies the specified test.\n */\nfunction someTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n || checker(quad.predicate, 'predicate')\n || checker(quad.object, 'object')\n || checker(quad.graph, 'graph');\n}\nexports.someTerms = someTerms;\n/**\n * Determines whether at least one term satisfies the specified test, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @param QuadTermName[] keys The current key path.\n * @return {boolean} If at least one term satisfies the specified test.\n */\nfunction someTermsNested(quad, checker, keys = []) {\n return (quad.subject.termType === 'Quad' ?\n someTermsNested(quad.subject, checker, [...keys, 'subject']) :\n checker(quad.subject, [...keys, 'subject']))\n || (quad.predicate.termType === 'Quad' ?\n someTermsNested(quad.predicate, checker, [...keys, 'predicate']) :\n checker(quad.predicate, [...keys, 'predicate']))\n || (quad.object.termType === 'Quad' ?\n someTermsNested(quad.object, checker, [...keys, 'object']) :\n checker(quad.object, [...keys, 'object']))\n || (quad.graph.termType === 'Quad' ?\n someTermsNested(quad.graph, checker, [...keys, 'graph']) :\n checker(quad.graph, [...keys, 'graph']));\n}\nexports.someTermsNested = someTermsNested;\n/**\n * Get the nested value inside a quoted triple by the given path of quad keys.\n * @param term A term, that can be a quoted triple.\n * @param keys A path of quad term names.\n */\nfunction getValueNestedPath(term, keys) {\n if (keys.length === 0) {\n return term;\n }\n if (term.termType === 'Quad') {\n return getValueNestedPath(term[keys[0]], keys.slice(1));\n }\n throw new Error(`Tried to get ${keys[0]} from term of type ${term.termType}`);\n}\nexports.getValueNestedPath = getValueNestedPath;\n/**\n * Check if the given terms match.\n *\n * At least one of the following must be true:\n * * Term B is undefined.\n * * Term B is a variable.\n * * Term A and B are quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`termB.equals(termA)` return true)\n *\n * @param termA A term.\n * @param termB An optional term.\n */\nfunction matchTerm(termA, termB) {\n return !termB\n || termB.termType === 'Variable'\n || (termB.termType === 'Quad' && termA.termType === 'Quad' && matchPatternComplete(termA, termB))\n || termB.equals(termA);\n}\nexports.matchTerm = matchTerm;\n/**\n * Check if the given quad matches with the given quad terms.\n *\n * Each term must match at least one of the following:\n * * Term is undefined.\n * * Term is a variable.\n * * Quad term and term are both quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`quadTerm.equals(term)` return true)\n *\n * @param {BaseQuad} quad A quad to match with (can not contain variables).\n * @param {Term} subject An optional subject.\n * @param {Term} predicate An optional predicate.\n * @param {Term} object An optional object.\n * @param {Term} graph An optional graph.\n * @return {boolean} If the quad matches with the quad terms.\n */\nfunction matchPattern(quad, subject, predicate, object, graph) {\n return matchTerm(quad.subject, subject)\n && matchTerm(quad.predicate, predicate)\n && matchTerm(quad.object, object)\n && matchTerm(quad.graph, graph);\n}\nexports.matchPattern = matchPattern;\n/**\n * Check if the first quad matches with all terms from the second quad.\n *\n * Each term must match at least one of the following:\n * * Quad2 term is a variable.\n * * Quad1 term and Quad2 term are equal (`term1.equals(term2)` return true)\n *\n * @param {BaseQuad} quad A quad (can not contain variables).\n * @param {BaseQuad} pattern A quad pattern (can contain variables).\n * @return {boolean} If the quad terms match.\n */\nfunction matchPatternComplete(quad, pattern) {\n return matchPattern(quad, pattern.subject, pattern.predicate, pattern.object, pattern.graph);\n}\nexports.matchPatternComplete = matchPatternComplete;\nfunction matchPatternMappings(quad, pattern, opt = {}) {\n const map = {};\n function match(_pattern, _quad) {\n return everyTerms(_pattern, (t1, key) => {\n var _a, _b;\n const t2 = _quad[key];\n switch (t1.termType) {\n case 'Variable':\n return (opt.skipVarMapping && t2.termType === 'Variable')\n || ((_b = (_a = map[t1.value]) === null || _a === void 0 ? void 0 : _a.equals(t2)) !== null && _b !== void 0 ? _b : (map[t1.value] = t2, true));\n case 'Quad':\n return t2.termType === 'Quad' && match(t1, t2);\n default:\n return t1.equals(t2);\n }\n });\n }\n return match(pattern, quad) && (opt.returnMappings ? map : true);\n}\nexports.matchPatternMappings = matchPatternMappings;\n//# sourceMappingURL=QuadTermUtil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getQuads = exports.getDefaultGraphs = exports.getVariables = exports.getLiterals = exports.getBlankNodes = exports.getNamedNodes = exports.getTermsOfType = exports.uniqTerms = exports.TERM_TYPES = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * All known term types.\n * @see RDF.Term\n * @type {[string , string , string , string , string, string]}\n */\nexports.TERM_TYPES = ['NamedNode', 'BlankNode', 'Literal', 'Variable', 'DefaultGraph', 'Quad'];\n/*\n * Utility methods for handling RDFJS terms.\n */\n/**\n * Create an array of unique terms from the given array.\n * @param {T[]} terms An array of RDFJS terms.\n * @return {T[]} A new array of unique RDFJS terms.\n */\nfunction uniqTerms(terms) {\n const hash = {};\n return terms.filter(term => {\n const termString = (0, rdf_string_1.termToString)(term);\n return !(termString in hash) && (hash[termString] = true);\n });\n}\nexports.uniqTerms = uniqTerms;\n/**\n * Find all terms of the given type in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @param {\"NamedNode\" | \"BlankNode\" | \"Literal\" | \"Variable\" | \"DefaultGraph\" | \"Quad\"} termType A term type.\n * @return {Term[]} A new array with elements from the given array only containing elements of the given type.\n */\nfunction getTermsOfType(terms, termType) {\n return terms.filter((term) => term.termType === termType);\n}\nexports.getTermsOfType = getTermsOfType;\n/**\n * Find all named nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {NamedNode[]} A new array with elements from the given array only containing named nodes.\n */\nfunction getNamedNodes(terms) {\n return getTermsOfType(terms, 'NamedNode');\n}\nexports.getNamedNodes = getNamedNodes;\n/**\n * Find all blank nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BlankNode[]} A new array with elements from the given array only containing blank nodes.\n */\nfunction getBlankNodes(terms) {\n return getTermsOfType(terms, 'BlankNode');\n}\nexports.getBlankNodes = getBlankNodes;\n/**\n * Find all literals in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Literal[]} A new array with elements from the given array only containing literals.\n */\nfunction getLiterals(terms) {\n return getTermsOfType(terms, 'Literal');\n}\nexports.getLiterals = getLiterals;\n/**\n * Find all variables in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Variable[]} A new array with elements from the given array only containing variables.\n */\nfunction getVariables(terms) {\n return getTermsOfType(terms, 'Variable');\n}\nexports.getVariables = getVariables;\n/**\n * Find all default graphs in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {DefaultGraph[]} A new array with elements from the given array only containing default graphs.\n */\nfunction getDefaultGraphs(terms) {\n return getTermsOfType(terms, 'DefaultGraph');\n}\nexports.getDefaultGraphs = getDefaultGraphs;\n/**\n * Find all quads in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BaseQuad[]} A new array with elements from the given array only containing quads.\n */\nfunction getQuads(terms) {\n return getTermsOfType(terms, 'Quad');\n}\nexports.getQuads = getQuads;\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/Resolve\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.removeDotSegmentsOfPath = exports.removeDotSegments = exports.resolve = void 0;\n/**\n * Convert the given relative IRI to an absolute IRI\n * by taking into account the given optional baseIRI.\n *\n * @param {string} relativeIRI The relative IRI to convert to an absolute IRI.\n * @param {string} baseIRI The optional base IRI.\n * @return {string} an absolute IRI.\n */\nfunction resolve(relativeIRI, baseIRI) {\n baseIRI = baseIRI || '';\n const baseFragmentPos = baseIRI.indexOf('#');\n // Ignore any fragments in the base IRI\n if (baseFragmentPos > 0) {\n baseIRI = baseIRI.substr(0, baseFragmentPos);\n }\n // Convert empty value directly to base IRI\n if (!relativeIRI.length) {\n // At this point, the baseIRI MUST be absolute, otherwise we error\n if (baseIRI.indexOf(':') < 0) {\n throw new Error(`Found invalid baseIRI '${baseIRI}' for value '${relativeIRI}'`);\n }\n return baseIRI;\n }\n // If the value starts with a query character, concat directly (but strip the existing query)\n if (relativeIRI.startsWith('?')) {\n const baseQueryPos = baseIRI.indexOf('?');\n if (baseQueryPos > 0) {\n baseIRI = baseIRI.substr(0, baseQueryPos);\n }\n return baseIRI + relativeIRI;\n }\n // If the value starts with a fragment character, concat directly\n if (relativeIRI.startsWith('#')) {\n return baseIRI + relativeIRI;\n }\n // Ignore baseIRI if it is empty\n if (!baseIRI.length) {\n const relativeColonPos = relativeIRI.indexOf(':');\n if (relativeColonPos < 0) {\n throw new Error(`Found invalid relative IRI '${relativeIRI}' for a missing baseIRI`);\n }\n return removeDotSegmentsOfPath(relativeIRI, relativeColonPos);\n }\n // Ignore baseIRI if the value is absolute\n const valueColonPos = relativeIRI.indexOf(':');\n if (valueColonPos >= 0) {\n return removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n // At this point, the baseIRI MUST be absolute, otherwise we error\n const baseColonPos = baseIRI.indexOf(':');\n if (baseColonPos < 0) {\n throw new Error(`Found invalid baseIRI '${baseIRI}' for value '${relativeIRI}'`);\n }\n const baseIRIScheme = baseIRI.substr(0, baseColonPos + 1);\n // Inherit the baseIRI scheme if the value starts with '//'\n if (relativeIRI.indexOf('//') === 0) {\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n // Check cases where '://' occurs in the baseIRI, and where there is no '/' after a ':' anymore.\n let baseSlashAfterColonPos;\n if (baseIRI.indexOf('//', baseColonPos) === baseColonPos + 1) {\n // If there is no additional '/' after the '//'.\n baseSlashAfterColonPos = baseIRI.indexOf('/', baseColonPos + 3);\n if (baseSlashAfterColonPos < 0) {\n // If something other than a '/' follows the '://', append the value after a '/',\n // otherwise, prefix the value with only the baseIRI scheme.\n if (baseIRI.length > baseColonPos + 3) {\n return baseIRI + '/' + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n else {\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n }\n }\n else {\n // If there is not even a single '/' after the ':'\n baseSlashAfterColonPos = baseIRI.indexOf('/', baseColonPos + 1);\n if (baseSlashAfterColonPos < 0) {\n // If we don't have a '/' after the ':',\n // prefix the value with only the baseIRI scheme.\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n }\n // If the value starts with a '/', then prefix it with everything before the first effective slash of the base IRI.\n if (relativeIRI.indexOf('/') === 0) {\n return baseIRI.substr(0, baseSlashAfterColonPos) + removeDotSegments(relativeIRI);\n }\n let baseIRIPath = baseIRI.substr(baseSlashAfterColonPos);\n const baseIRILastSlashPos = baseIRIPath.lastIndexOf('/');\n // Ignore everything after the last '/' in the baseIRI path\n if (baseIRILastSlashPos >= 0 && baseIRILastSlashPos < baseIRIPath.length - 1) {\n baseIRIPath = baseIRIPath.substr(0, baseIRILastSlashPos + 1);\n // Also remove the first character of the relative path if it starts with '.' (and not '..' or './')\n // This change is only allowed if there is something else following the path\n if (relativeIRI[0] === '.' && relativeIRI[1] !== '.' && relativeIRI[1] !== '/' && relativeIRI[2]) {\n relativeIRI = relativeIRI.substr(1);\n }\n }\n // Prefix the value with the baseIRI path where\n relativeIRI = baseIRIPath + relativeIRI;\n // Remove dot segment from the IRI\n relativeIRI = removeDotSegments(relativeIRI);\n // Prefix our transformed value with the part of the baseIRI until the first '/' after the first ':'.\n return baseIRI.substr(0, baseSlashAfterColonPos) + relativeIRI;\n}\nexports.resolve = resolve;\n/**\n * Remove dot segments from the given path,\n * as described in https://www.ietf.org/rfc/rfc3986.txt (page 32).\n * @param {string} path An IRI path.\n * @return {string} A path, will always start with a '/'.\n */\nfunction removeDotSegments(path) {\n // Prepare a buffer with segments between each '/.\n // Each segment represents an array of characters.\n const segmentBuffers = [];\n let i = 0;\n while (i < path.length) {\n // Remove '/.' or '/..'\n switch (path[i]) {\n case '/':\n if (path[i + 1] === '.') {\n if (path[i + 2] === '.') {\n // Start a new segment if we find an invalid character after the '.'\n if (!isCharacterAllowedAfterRelativePathSegment(path[i + 3])) {\n segmentBuffers.push([]);\n i++;\n break;\n }\n // Go to parent directory,\n // so we remove a parent segment\n segmentBuffers.pop();\n // Ensure that we end with a slash if there is a trailing '/..'\n if (!path[i + 3]) {\n segmentBuffers.push([]);\n }\n i += 3;\n }\n else {\n // Start a new segment if we find an invalid character after the '.'\n if (!isCharacterAllowedAfterRelativePathSegment(path[i + 2])) {\n segmentBuffers.push([]);\n i++;\n break;\n }\n // Ensure that we end with a slash if there is a trailing '/.'\n if (!path[i + 2]) {\n segmentBuffers.push([]);\n }\n // Go to the current directory,\n // so we do nothing\n i += 2;\n }\n }\n else {\n // Start a new segment\n segmentBuffers.push([]);\n i++;\n }\n break;\n case '#':\n case '?':\n // Query and fragment string should be appended unchanged\n if (!segmentBuffers.length) {\n segmentBuffers.push([]);\n }\n segmentBuffers[segmentBuffers.length - 1].push(path.substr(i));\n // Break the while loop\n i = path.length;\n break;\n default:\n // Not a special character, just append it to our buffer\n if (!segmentBuffers.length) {\n segmentBuffers.push([]);\n }\n segmentBuffers[segmentBuffers.length - 1].push(path[i]);\n i++;\n break;\n }\n }\n return '/' + segmentBuffers.map((buffer) => buffer.join('')).join('/');\n}\nexports.removeDotSegments = removeDotSegments;\n/**\n * Removes dot segments of the given IRI.\n * @param {string} iri An IRI (or part of IRI).\n * @param {number} colonPosition The position of the first ':' in the IRI.\n * @return {string} The IRI where dot segments were removed.\n */\nfunction removeDotSegmentsOfPath(iri, colonPosition) {\n // Determine where we should start looking for the first '/' that indicates the start of the path\n let searchOffset = colonPosition + 1;\n if (colonPosition >= 0) {\n if (iri[colonPosition + 1] === '/' && iri[colonPosition + 2] === '/') {\n searchOffset = colonPosition + 3;\n }\n }\n else {\n if (iri[0] === '/' && iri[1] === '/') {\n searchOffset = 2;\n }\n }\n // Determine the path\n const pathSeparator = iri.indexOf('/', searchOffset);\n if (pathSeparator < 0) {\n return iri;\n }\n const base = iri.substr(0, pathSeparator);\n const path = iri.substr(pathSeparator);\n // Remove dot segments from the path\n return base + removeDotSegments(path);\n}\nexports.removeDotSegmentsOfPath = removeDotSegmentsOfPath;\nfunction isCharacterAllowedAfterRelativePathSegment(character) {\n return !character || character === '#' || character === '?' || character === '/';\n}\n//# sourceMappingURL=Resolve.js.map","(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} [raw] True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.toSparqlJs = exports.toSparql = exports.Factory = exports.Algebra = exports.translate = void 0;\nconst sparqlAlgebra_1 = __importDefault(require(\"./lib/sparqlAlgebra\"));\nexports.translate = sparqlAlgebra_1.default;\nconst Algebra = __importStar(require(\"./lib/algebra\"));\nexports.Algebra = Algebra;\nconst factory_1 = __importDefault(require(\"./lib/factory\"));\nexports.Factory = factory_1.default;\nconst sparql_1 = require(\"./lib/sparql\");\nObject.defineProperty(exports, \"toSparql\", { enumerable: true, get: function () { return sparql_1.toSparql; } });\nObject.defineProperty(exports, \"toSparqlJs\", { enumerable: true, get: function () { return sparql_1.toSparqlJs; } });\nconst util_1 = __importDefault(require(\"./lib/util\"));\nexports.Util = util_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expressionTypes = exports.types = void 0;\nvar types;\n(function (types) {\n types[\"ALT\"] = \"alt\";\n types[\"ASK\"] = \"ask\";\n types[\"BGP\"] = \"bgp\";\n types[\"CONSTRUCT\"] = \"construct\";\n types[\"DESCRIBE\"] = \"describe\";\n types[\"DISTINCT\"] = \"distinct\";\n types[\"EXPRESSION\"] = \"expression\";\n types[\"EXTEND\"] = \"extend\";\n types[\"FILTER\"] = \"filter\";\n types[\"FROM\"] = \"from\";\n types[\"GRAPH\"] = \"graph\";\n types[\"GROUP\"] = \"group\";\n types[\"INV\"] = \"inv\";\n types[\"JOIN\"] = \"join\";\n types[\"LEFT_JOIN\"] = \"leftjoin\";\n types[\"LINK\"] = \"link\";\n types[\"MINUS\"] = \"minus\";\n types[\"NOP\"] = \"nop\";\n types[\"NPS\"] = \"nps\";\n types[\"ONE_OR_MORE_PATH\"] = \"OneOrMorePath\";\n types[\"ORDER_BY\"] = \"orderby\";\n types[\"PATH\"] = \"path\";\n types[\"PATTERN\"] = \"pattern\";\n types[\"PROJECT\"] = \"project\";\n types[\"REDUCED\"] = \"reduced\";\n types[\"SEQ\"] = \"seq\";\n types[\"SERVICE\"] = \"service\";\n types[\"SLICE\"] = \"slice\";\n types[\"UNION\"] = \"union\";\n types[\"VALUES\"] = \"values\";\n types[\"ZERO_OR_MORE_PATH\"] = \"ZeroOrMorePath\";\n types[\"ZERO_OR_ONE_PATH\"] = \"ZeroOrOnePath\";\n types[\"COMPOSITE_UPDATE\"] = \"compositeupdate\";\n types[\"DELETE_INSERT\"] = \"deleteinsert\";\n types[\"LOAD\"] = \"load\";\n types[\"CLEAR\"] = \"clear\";\n types[\"CREATE\"] = \"create\";\n types[\"DROP\"] = \"drop\";\n types[\"ADD\"] = \"add\";\n types[\"MOVE\"] = \"move\";\n types[\"COPY\"] = \"copy\";\n})(types = exports.types || (exports.types = {}));\nvar expressionTypes;\n(function (expressionTypes) {\n expressionTypes[\"AGGREGATE\"] = \"aggregate\";\n expressionTypes[\"EXISTENCE\"] = \"existence\";\n expressionTypes[\"NAMED\"] = \"named\";\n expressionTypes[\"OPERATOR\"] = \"operator\";\n expressionTypes[\"TERM\"] = \"term\";\n expressionTypes[\"WILDCARD\"] = \"wildcard\";\n})(expressionTypes = exports.expressionTypes || (exports.expressionTypes = {}));\n//# sourceMappingURL=algebra.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst A = __importStar(require(\"./algebra\"));\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nclass Factory {\n constructor(dataFactory) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.stringType = this.createTerm('http://www.w3.org/2001/XMLSchema#string');\n }\n createAlt(input, flatten = true) { return this.flattenMulti({ type: A.types.ALT, input }, flatten); }\n createAsk(input) { return { type: A.types.ASK, input }; }\n createBoundAggregate(variable, aggregate, expression, distinct, separator) {\n const result = this.createAggregateExpression(aggregate, expression, distinct, separator);\n result.variable = variable;\n return result;\n }\n createBgp(patterns) { return { type: A.types.BGP, patterns }; }\n createConstruct(input, template) { return { type: A.types.CONSTRUCT, input, template }; }\n createDescribe(input, terms) { return { type: A.types.DESCRIBE, input, terms }; }\n createDistinct(input) { return { type: A.types.DISTINCT, input }; }\n createExtend(input, variable, expression) { return { type: A.types.EXTEND, input, variable, expression }; }\n createFrom(input, def, named) { return { type: A.types.FROM, input, default: def, named }; }\n createFilter(input, expression) { return { type: A.types.FILTER, input, expression }; }\n createGraph(input, name) { return { type: A.types.GRAPH, input, name }; }\n createGroup(input, variables, aggregates) { return { type: A.types.GROUP, input, variables, aggregates }; }\n createInv(path) { return { type: A.types.INV, path }; }\n createJoin(input, flatten = true) { return this.flattenMulti({ type: A.types.JOIN, input }, flatten); }\n createLeftJoin(left, right, expression) {\n if (expression)\n return { type: A.types.LEFT_JOIN, input: [left, right], expression };\n return { type: A.types.LEFT_JOIN, input: [left, right] };\n }\n createLink(iri) { return { type: A.types.LINK, iri }; }\n createMinus(left, right) { return { type: A.types.MINUS, input: [left, right] }; }\n createNop() { return { type: A.types.NOP }; }\n createNps(iris) { return { type: A.types.NPS, iris }; }\n createOneOrMorePath(path) { return { type: A.types.ONE_OR_MORE_PATH, path }; }\n createOrderBy(input, expressions) { return { type: A.types.ORDER_BY, input, expressions }; }\n createPath(subject, predicate, object, graph) {\n if (graph)\n return { type: A.types.PATH, subject, predicate, object, graph };\n return { type: A.types.PATH, subject, predicate, object, graph: this.dataFactory.defaultGraph() };\n }\n createPattern(subject, predicate, object, graph) {\n const pattern = this.dataFactory.quad(subject, predicate, object, graph);\n pattern.type = A.types.PATTERN;\n return pattern;\n }\n createProject(input, variables) { return { type: A.types.PROJECT, input, variables }; }\n createReduced(input) { return { type: A.types.REDUCED, input }; }\n createSeq(input, flatten = true) { return this.flattenMulti({ type: A.types.SEQ, input }, flatten); }\n createService(input, name, silent) { return { type: A.types.SERVICE, input, name, silent: Boolean(silent) }; }\n createSlice(input, start, length) {\n start = start || 0;\n if (length !== undefined)\n return { type: A.types.SLICE, input, start, length };\n return { type: A.types.SLICE, input, start };\n }\n createUnion(input, flatten = true) { return this.flattenMulti({ type: A.types.UNION, input }, flatten); }\n createValues(variables, bindings) { return { type: A.types.VALUES, variables, bindings }; }\n createZeroOrMorePath(path) { return { type: A.types.ZERO_OR_MORE_PATH, path }; }\n createZeroOrOnePath(path) { return { type: A.types.ZERO_OR_ONE_PATH, path }; }\n createAggregateExpression(aggregator, expression, distinct, separator) {\n if (separator)\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, separator, distinct };\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, distinct };\n }\n createExistenceExpression(not, input) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.EXISTENCE, not, input }; }\n createNamedExpression(name, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.NAMED, name, args }; }\n createOperatorExpression(operator, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.OPERATOR, operator, args }; }\n createTermExpression(term) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.TERM, term }; }\n createWildcardExpression() { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.WILDCARD, wildcard: new sparqljs_1.Wildcard() }; }\n createTerm(str) {\n if (str[0] === '$') {\n str = str.replace('$', '?');\n }\n return (0, rdf_string_1.stringToTerm)(str, this.dataFactory);\n }\n // Update functions\n createCompositeUpdate(updates) { return { type: A.types.COMPOSITE_UPDATE, updates }; }\n createDeleteInsert(deleteQuads, insertQuads, where) {\n const result = { type: A.types.DELETE_INSERT };\n if (deleteQuads)\n result.delete = deleteQuads;\n if (insertQuads)\n result.insert = insertQuads;\n if (where)\n result.where = where;\n return result;\n }\n createLoad(source, destination, silent) {\n const result = { type: A.types.LOAD, source };\n if (destination)\n result.destination = destination;\n return this.addSilent(result, Boolean(silent));\n }\n createClear(source, silent) {\n return this.addSilent({ type: A.types.CLEAR, source }, Boolean(silent));\n }\n createCreate(source, silent) {\n return this.addSilent({ type: A.types.CREATE, source }, Boolean(silent));\n }\n createDrop(source, silent) {\n return this.addSilent({ type: A.types.DROP, source }, Boolean(silent));\n }\n createAdd(source, destination, silent) {\n return this.addSilent({ type: A.types.ADD, source, destination }, Boolean(silent));\n }\n createMove(source, destination, silent) {\n return this.addSilent({ type: A.types.MOVE, source, destination }, Boolean(silent));\n }\n createCopy(source, destination, silent) {\n return this.addSilent({ type: A.types.COPY, source, destination }, Boolean(silent));\n }\n addSilent(input, silent) {\n if (silent)\n input.silent = silent;\n return input;\n }\n flattenMulti(input, flatten) {\n if (!flatten) {\n return input;\n }\n const type = input.type;\n const children = input.input;\n let newChildren = [];\n for (const child of children) {\n if (child.type === type) {\n newChildren.push(...child.input);\n }\n else {\n newChildren.push(child);\n }\n }\n input.input = newChildren;\n return input;\n }\n}\nexports.default = Factory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toSparqlJs = exports.toSparql = void 0;\nconst rdf_isomorphic_1 = require(\"rdf-isomorphic\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst types = Algebra.types;\nconst eTypes = Algebra.expressionTypes;\nlet context;\nconst factory = new factory_1.default();\nfunction toSparql(op, options = {}) {\n let generator = new sparqljs_1.Generator(options);\n return generator.stringify(toSparqlJs(op));\n}\nexports.toSparql = toSparql;\nfunction toSparqlJs(op) {\n resetContext();\n op = removeQuads(op);\n let result = translateOperation(op);\n if (result.type === 'group')\n return result.patterns[0];\n return result;\n}\nexports.toSparqlJs = toSparqlJs;\nfunction resetContext() {\n context = { project: false, extend: [], group: [], aggregates: [], order: [] };\n}\nfunction translateOperation(op) {\n // this allows us to differentiate between BIND and SELECT when translating EXTEND\n // GRAPH was added because the way graphs get added back here is not the same as how they get added in the future\n // ^ seems fine but might have to be changed if problems get detected in the future\n if (op.type !== types.EXTEND && op.type !== types.ORDER_BY && op.type !== types.GRAPH)\n context.project = false;\n switch (op.type) {\n case types.EXPRESSION: return translateExpression(op);\n case types.ASK: return translateProject(op, types.ASK);\n case types.BGP: return translateBgp(op);\n case types.CONSTRUCT: return translateConstruct(op);\n case types.DESCRIBE: return translateProject(op, types.DESCRIBE);\n case types.DISTINCT: return translateDistinct(op);\n case types.EXTEND: return translateExtend(op);\n case types.FROM: return translateFrom(op);\n case types.FILTER: return translateFilter(op);\n case types.GRAPH: return translateGraph(op);\n case types.GROUP: return translateGroup(op);\n case types.JOIN: return translateJoin(op);\n case types.LEFT_JOIN: return translateLeftJoin(op);\n case types.MINUS: return translateMinus(op);\n case types.NOP: return {};\n case types.ORDER_BY: return translateOrderBy(op);\n case types.PATH: return translatePath(op);\n case types.PATTERN: return translatePattern(op);\n case types.PROJECT: return translateProject(op, types.PROJECT);\n case types.REDUCED: return translateReduced(op);\n case types.SERVICE: return translateService(op);\n case types.SLICE: return translateSlice(op);\n case types.UNION: return translateUnion(op);\n case types.VALUES: return translateValues(op);\n // UPDATE operations\n case types.COMPOSITE_UPDATE: return translateCompositeUpdate(op);\n case types.DELETE_INSERT: return translateDeleteInsert(op);\n case types.LOAD: return translateLoad(op);\n case types.CLEAR: return translateClear(op);\n case types.CREATE: return translateCreate(op);\n case types.DROP: return translateDrop(op);\n case types.ADD: return translateAdd(op);\n case types.MOVE: return translateMove(op);\n case types.COPY: return translateCopy(op);\n }\n throw new Error(`Unknown Operation type ${op.type}`);\n}\nfunction translateExpression(expr) {\n switch (expr.expressionType) {\n case eTypes.AGGREGATE: return translateAggregateExpression(expr);\n case eTypes.EXISTENCE: return translateExistenceExpression(expr);\n case eTypes.NAMED: return translateNamedExpression(expr);\n case eTypes.OPERATOR: return translateOperatorExpression(expr);\n case eTypes.TERM: return translateTermExpression(expr);\n case eTypes.WILDCARD: return translateWildcardExpression(expr);\n }\n throw new Error(`Unknown Expression Operation type ${expr.expressionType}`);\n}\nfunction translatePathComponent(path) {\n switch (path.type) {\n case types.ALT: return translateAlt(path);\n case types.INV: return translateInv(path);\n case types.LINK: return translateLink(path);\n case types.NPS: return translateNps(path);\n case types.ONE_OR_MORE_PATH: return translateOneOrMorePath(path);\n case types.SEQ: return translateSeq(path);\n case types.ZERO_OR_MORE_PATH: return translateZeroOrMorePath(path);\n case types.ZERO_OR_ONE_PATH: return translateZeroOrOnePath(path);\n }\n throw new Error(`Unknown Path type ${path.type}`);\n}\nfunction translateTerm(term) {\n return (0, rdf_string_1.termToString)(term);\n}\n// ------------------------- EXPRESSIONS -------------------------\nfunction translateAggregateExpression(expr) {\n const result = {\n expression: translateExpression(expr.expression),\n type: 'aggregate',\n aggregation: expr.aggregator,\n distinct: expr.distinct\n };\n if (expr.separator)\n result.separator = expr.separator;\n return result;\n}\nfunction translateExistenceExpression(expr) {\n return {\n type: 'operation',\n operator: expr.not ? 'notexists' : 'exists',\n args: [{\n type: 'group',\n patterns: util_1.default.flatten([translateOperation(expr.input)])\n }]\n };\n}\nfunction translateNamedExpression(expr) {\n return {\n type: 'functionCall',\n // Wrong typings\n function: expr.name,\n args: expr.args.map(translateExpression)\n };\n}\nfunction translateOperatorExpression(expr) {\n if (expr.operator === 'desc') {\n const result = { expression: translateExpression(expr.args[0]) };\n result.descending = true;\n return result;\n }\n const result = {\n type: 'operation',\n operator: expr.operator,\n args: expr.args.map(translateExpression)\n };\n if (result.operator === 'in' || result.operator === 'notin')\n result.args = [result.args[0]].concat([result.args.slice(1)]);\n return result;\n}\nfunction translateTermExpression(expr) {\n return expr.term;\n}\nfunction translateWildcardExpression(expr) {\n return expr.wildcard;\n}\nfunction arrayToPattern(input) {\n if (!Array.isArray(input))\n return input;\n if (input.length === 1)\n return input[0];\n return {\n type: 'group',\n patterns: input,\n };\n}\n// ------------------------- OPERATIONS -------------------------\n// these get translated in the project function\nfunction translateBoundAggregate(op) {\n return op;\n}\nfunction translateBgp(op) {\n let patterns = op.patterns.map(translatePattern);\n if (patterns.length === 0)\n return null;\n return {\n type: 'bgp',\n triples: patterns\n };\n}\nfunction translateConstruct(op) {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: op.template.map(translatePattern),\n where: util_1.default.flatten([\n translateOperation(op.input)\n ])\n };\n}\nfunction translateDistinct(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].distinct = true;\n return result;\n}\nfunction translateExtend(op) {\n if (context.project) {\n context.extend.push(op);\n return translateOperation(op.input);\n }\n return util_1.default.flatten([\n translateOperation(op.input),\n {\n type: 'bind',\n variable: op.variable,\n expression: translateExpression(op.expression)\n }\n ]);\n}\nfunction translateFrom(op) {\n const result = translateOperation(op.input);\n // Can't type as CONSTRUCT queries do not have `from` field in their type\n let obj = result;\n // project is nested in group object\n if (result.type === 'group') {\n obj = result.patterns[0];\n }\n obj.from = {\n default: op.default,\n named: op.named\n };\n return result;\n}\nfunction translateFilter(op) {\n return {\n type: 'group',\n patterns: util_1.default.flatten([\n translateOperation(op.input),\n { type: 'filter', expression: translateExpression(op.expression) }\n ])\n };\n}\nfunction translateGraph(op) {\n return {\n type: 'graph',\n patterns: util_1.default.flatten([translateOperation(op.input)]),\n name: op.name\n };\n}\nfunction translateGroup(op) {\n const input = translateOperation(op.input);\n const aggs = op.aggregates.map(translateBoundAggregate);\n context.aggregates.push(...aggs);\n // TODO: apply possible extends\n context.group.push(...op.variables);\n return input;\n}\nfunction translateJoin(op) {\n const arr = util_1.default.flatten(op.input.map(translateOperation));\n // Merge bgps\n // This is possible if one side was a path and the other a bgp for example\n return arr.reduce((result, val) => {\n if (val.type !== 'bgp' || result.length == 0 || result[result.length - 1].type !== 'bgp') {\n result.push(val);\n }\n else {\n result[result.length - 1].triples.push(...val.triples);\n }\n return result;\n }, []);\n}\nfunction translateLeftJoin(op) {\n const leftjoin = {\n type: 'optional',\n patterns: [\n translateOperation(op.input[1])\n ]\n };\n if (op.expression) {\n leftjoin.patterns.push({\n type: 'filter',\n expression: translateExpression(op.expression)\n });\n }\n leftjoin.patterns = util_1.default.flatten(leftjoin.patterns);\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n leftjoin\n ]);\n}\nfunction translateMinus(op) {\n let patterns = translateOperation(op.input[1]);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n {\n type: 'minus',\n patterns: patterns\n }\n ]);\n}\nfunction translateOrderBy(op) {\n context.order.push(...op.expressions);\n return translateOperation(op.input);\n}\nfunction translatePath(op) {\n return {\n type: 'bgp',\n triples: [{\n subject: op.subject,\n predicate: translatePathComponent(op.predicate),\n object: op.object\n }]\n };\n}\nfunction translatePattern(op) {\n return {\n subject: op.subject,\n predicate: op.predicate,\n object: op.object\n };\n}\nfunction replaceAggregatorVariables(s, map) {\n let st = util_1.default.isSimpleTerm(s) ? translateTerm(s) : s;\n if (typeof st === 'string') {\n if (map[st])\n return map[st];\n }\n else if (Array.isArray(s)) {\n s = s.map(e => replaceAggregatorVariables(e, map));\n }\n else {\n for (let key of Object.keys(s))\n s[key] = replaceAggregatorVariables(s[key], map);\n }\n return s;\n}\nfunction translateProject(op, type) {\n const result = {\n type: 'query',\n prefixes: {}\n };\n // Makes typing easier in some places\n const select = result;\n let variables;\n if (type === types.PROJECT) {\n result.queryType = 'SELECT';\n variables = op.variables;\n }\n else if (type === types.ASK) {\n result.queryType = 'ASK';\n }\n else if (type === types.DESCRIBE) {\n result.queryType = 'DESCRIBE';\n variables = op.terms;\n }\n // backup values in case of nested queries\n // everything in extend, group, etc. is irrelevant for this project call\n const extend = context.extend;\n const group = context.group;\n const aggregates = context.aggregates;\n const order = context.order;\n resetContext();\n context.project = true;\n let input = util_1.default.flatten([translateOperation(op.input)]);\n if (input.length === 1 && input[0].type === 'group')\n input = input[0].patterns;\n result.where = input;\n let aggregators = {};\n // these can not reference each other\n for (let agg of context.aggregates)\n aggregators[translateTerm(agg.variable)] = translateExpression(agg);\n // do these in reverse order since variables in one extend might apply to an expression in an other extend\n let extensions = {};\n for (let i = context.extend.length - 1; i >= 0; --i) {\n let e = context.extend[i];\n extensions[translateTerm(e.variable)] = replaceAggregatorVariables(translateExpression(e.expression), aggregators);\n }\n if (context.group.length > 0)\n select.group = context.group.map(variable => {\n let v = translateTerm(variable);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // make sure there is only 1 'AS' statement\n return {\n variable,\n expression: result\n };\n }\n return { expression: variable };\n });\n // descending expressions will already be in the correct format due to the structure of those\n if (context.order.length > 0)\n select.order = context.order.map(translateOperation).map(o => o.descending ? o : ({ expression: o }));\n // this needs to happen after the group because it might depend on variables generated there\n if (variables) {\n select.variables = variables.map((term) => {\n let v = translateTerm(term);\n if (extensions[v])\n return {\n variable: term,\n expression: extensions[v]\n };\n return term;\n });\n // if the * didn't match any variables this would be empty\n if (select.variables.length === 0)\n select.variables = [new sparqljs_1.Wildcard()];\n }\n // convert filter to 'having' if it contains an aggregator variable\n // could always convert, but is nicer to use filter when possible\n if (result.where.length > 0 && result.where[result.where.length - 1].type === 'filter') {\n const filter = result.where[result.where.length - 1];\n if (objectContainsValues(filter, Object.keys(aggregators))) {\n select.having = util_1.default.flatten([replaceAggregatorVariables(filter.expression, aggregators)]);\n result.where.splice(-1);\n }\n }\n context.extend = extend;\n context.group = group;\n context.aggregates = aggregates;\n context.order = order;\n // subqueries need to be in a group, this will be removed again later for the root query\n return { type: 'group', patterns: [select] };\n}\nfunction objectContainsValues(o, vals) {\n if (util_1.default.isSimpleTerm(o))\n return vals.indexOf(translateTerm(o)) >= 0;\n if (Array.isArray(o))\n return o.some(e => objectContainsValues(e, vals));\n if (o === Object(o))\n return Object.keys(o).some(key => objectContainsValues(o[key], vals));\n return vals.indexOf(o) >= 0;\n}\nfunction translateReduced(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].reduced = true;\n return result;\n}\nfunction translateService(op) {\n let patterns = translateOperation(op.input);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return {\n type: 'service',\n // Typings are wrong, name can also be a variable\n name: op.name,\n silent: op.silent,\n patterns\n };\n}\nfunction translateSlice(op) {\n let result = translateOperation(op.input);\n // results can be nested in a group object\n let obj = result;\n if (result.type && result.type === 'group')\n obj = result.patterns[0];\n if (op.start !== 0)\n obj.offset = op.start;\n if (op.length !== undefined)\n obj.limit = op.length;\n return result;\n}\nfunction translateUnion(op) {\n return {\n type: 'union',\n patterns: op.input.map(translateOperation).map(arrayToPattern),\n };\n}\nfunction translateValues(op) {\n // TODO: check if handled correctly when outside of select block\n return {\n type: 'values',\n values: op.bindings.map(binding => {\n let result = {};\n for (let v of op.variables) {\n let s = `?${v.value}`;\n if (binding[s])\n result[s] = binding[s];\n else\n result[s] = undefined;\n }\n return result;\n })\n };\n}\n// PATH COMPONENTS\nfunction translateAlt(path) {\n const mapped = path.input.map(translatePathComponent);\n if (mapped.every(entry => 'pathType' in entry && entry.pathType === '!')) {\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: util_1.default.flatten(mapped.map(entry => entry.items))\n }]\n };\n }\n return {\n type: 'path',\n pathType: '|',\n items: mapped\n };\n}\nfunction translateInv(path) {\n if (path.path.type === types.NPS) {\n const inv = path.path.iris.map((iri) => {\n return {\n type: 'path',\n pathType: '^',\n items: [iri]\n };\n });\n if (inv.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: inv\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: inv\n }]\n };\n }\n return {\n type: 'path',\n pathType: '^',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateLink(path) {\n return path.iri;\n}\nfunction translateNps(path) {\n if (path.iris.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: path.iris\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: path.iris\n }]\n };\n}\nfunction translateOneOrMorePath(path) {\n return {\n type: 'path',\n pathType: '+',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateSeq(path) {\n return {\n type: 'path',\n pathType: '/',\n items: path.input.map(translatePathComponent)\n };\n}\nfunction translateZeroOrMorePath(path) {\n return {\n type: 'path',\n pathType: '*',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateZeroOrOnePath(path) {\n // Typings are missing '?' operator\n return {\n type: 'path',\n // Typings are missing this path\n pathType: '?',\n items: [translatePathComponent(path.path)]\n };\n}\n// UPDATE OPERATIONS\nfunction translateCompositeUpdate(op) {\n const updates = op.updates.map(update => {\n const result = translateOperation(update);\n return result.updates[0];\n });\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateDeleteInsert(op) {\n var _a;\n let where = op.where;\n let use = undefined;\n if (where && where.type === types.FROM) {\n let from = where;\n where = from.input;\n use = { default: from.default, named: from.named };\n }\n const updates = [{\n updateType: 'insertdelete',\n delete: convertUpdatePatterns(op.delete || []),\n insert: convertUpdatePatterns(op.insert || []),\n }];\n // Typings don't support 'using' yet\n if (use)\n updates[0].using = use;\n // corresponds to empty array in SPARQL.js\n if (!where || (where.type === types.BGP && where.patterns.length === 0))\n updates[0].where = [];\n else {\n const graphs = [];\n let result = translateOperation(removeQuadsRecursive(where, graphs));\n if (result.type === 'group')\n updates[0].where = result.patterns;\n else\n updates[0].where = [result];\n // graph might not be applied yet since there was no project\n // this can only happen if there was a single graph\n if (graphs.length > 0) {\n if (graphs.length !== 1)\n throw new Error('This is unexpected and might indicate an error in graph handling for updates.');\n // ignore if default graph\n if (((_a = graphs[0]) === null || _a === void 0 ? void 0 : _a.value) !== '')\n updates[0].where = [{ type: 'graph', patterns: updates[0].where, name: graphs[0] }];\n }\n }\n // not really necessary but can give cleaner looking queries\n if (!op.delete && !op.where) {\n updates[0].updateType = 'insert';\n delete updates[0].delete;\n delete updates[0].where;\n }\n else if (!op.insert && !op.where) {\n delete updates[0].insert;\n delete updates[0].where;\n if (op.delete.some(pattern => pattern.subject.termType === 'Variable' ||\n pattern.predicate.termType === 'Variable' ||\n pattern.object.termType === 'Variable'))\n updates[0].updateType = 'deletewhere';\n else\n updates[0].updateType = 'delete';\n }\n else if (!op.insert && op.where && op.where.type === 'bgp') {\n if ((0, rdf_isomorphic_1.isomorphic)(op.delete, op.where.patterns)) {\n delete updates[0].where;\n updates[0].updateType = 'deletewhere';\n }\n }\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateLoad(op) {\n // Typings are wrong, destiniation is optional\n const updates = [{ type: 'load', silent: Boolean(op.silent), source: op.source }];\n if (op.destination)\n updates[0].destination = op.destination;\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateClear(op) {\n return translateClearCreateDrop(op, 'clear');\n}\nfunction translateCreate(op) {\n return translateClearCreateDrop(op, 'create');\n}\nfunction translateDrop(op) {\n return translateClearCreateDrop(op, 'drop');\n}\nfunction translateClearCreateDrop(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n // Typings are wrong, type is not required, see for example \"clear-drop\" test\n if (op.source === 'DEFAULT')\n updates[0].graph = { default: true };\n else if (op.source === 'NAMED')\n updates[0].graph = { named: true };\n else if (op.source === 'ALL')\n updates[0].graph = { all: true };\n else\n updates[0].graph = { type: 'graph', name: op.source };\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateAdd(op) {\n return translateUpdateGraphShortcut(op, 'add');\n}\nfunction translateMove(op) {\n return translateUpdateGraphShortcut(op, 'move');\n}\nfunction translateCopy(op) {\n return translateUpdateGraphShortcut(op, 'copy');\n}\nfunction translateUpdateGraphShortcut(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n updates[0].source = op.source === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.source };\n updates[0].destination = op.destination === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.destination };\n return { prefixes: {}, type: 'update', updates };\n}\n// similar to removeQuads but more simplified for UPDATEs\nfunction convertUpdatePatterns(patterns) {\n if (!patterns)\n return [];\n const graphs = {};\n patterns.forEach(pattern => {\n const graph = pattern.graph.value;\n if (!graphs[graph])\n graphs[graph] = [];\n graphs[graph].push(pattern);\n });\n return Object.keys(graphs).map(graph => {\n if (graph === '')\n return { type: 'bgp', triples: graphs[graph].map(translatePattern) };\n return { type: 'graph', triples: graphs[graph].map(translatePattern), name: graphs[graph][0].graph };\n });\n}\nfunction removeQuads(op) {\n return removeQuadsRecursive(op, []);\n}\n// remove quads\nfunction removeQuadsRecursive(op, graphs) {\n if (Array.isArray(op))\n return op.map(sub => removeQuadsRecursive(sub, graphs));\n if (!op.type)\n return op;\n // UPDATE operations with Patterns handle graphs a bit differently\n if (op.type === types.DELETE_INSERT)\n return op;\n if ((op.type === types.PATTERN || op.type === types.PATH) && op.graph) {\n graphs.push(op.graph);\n // Remove non-default graphs\n if (op.graph.name !== '')\n return op.type === types.PATTERN ?\n factory.createPattern(op.subject, op.predicate, op.object) :\n factory.createPath(op.subject, op.predicate, op.object);\n return op;\n }\n const result = {};\n const keyGraphs = {}; // unique graph per key\n const globalNames = {}; // track all the unique graph names for the entire Operation\n for (let key of Object.keys(op)) {\n const newGraphs = [];\n result[key] = removeQuadsRecursive(op[key], newGraphs);\n if (newGraphs.length > 0) {\n keyGraphs[key] = newGraphs;\n for (const graph of newGraphs) {\n globalNames[graph.value] = graph;\n }\n }\n }\n const graphNameSet = Object.keys(globalNames);\n if (graphNameSet.length > 0) {\n // We also need to create graph statement if we are at the edge of certain operations\n if (graphNameSet.length === 1 && ![types.PROJECT, types.SERVICE].includes(op.type))\n graphs.push(globalNames[graphNameSet[0]]);\n else if (op.type === types.BGP) {\n // This is the specific case that got changed because of using quads.\n return splitBgpToGraphs(op, keyGraphs.patterns);\n }\n else {\n // multiple graphs (or project), need to create graph objects for them\n for (let key of Object.keys(keyGraphs)) {\n const value = result[key];\n if (Array.isArray(value))\n result[key] = value.map((child, idx) => keyGraphs[key][0].value === '' ? child : factory.createGraph(child, keyGraphs[key][idx]));\n else if (keyGraphs[key][0].value !== '')\n result[key] = factory.createGraph(value, keyGraphs[key][0]);\n }\n }\n }\n return result;\n}\n// `graphs` should be an array of length identical to `op.patterns`, containing the corresponding graph for each triple.\nfunction splitBgpToGraphs(op, graphs) {\n var _a;\n // Split patterns per graph\n const graphPatterns = {};\n for (let i = 0; i < op.patterns.length; ++i) {\n const pattern = op.patterns[i];\n const graphName = graphs[i].value;\n graphPatterns[graphName] = (_a = graphPatterns[graphName]) !== null && _a !== void 0 ? _a : { patterns: [], graph: graphs[i] };\n graphPatterns[graphName].patterns.push(pattern);\n }\n // Create graph objects for every cluster\n let children = [];\n for (const [graphName, { patterns, graph }] of Object.entries(graphPatterns)) {\n const bgp = factory.createBgp(patterns);\n children.push(graphName === '' ? bgp : factory.createGraph(bgp, graph));\n }\n // Join the graph objects\n let join = children[0];\n for (let i = 1; i < children.length; ++i)\n join = factory.createJoin([join, children[i]]);\n return join;\n}\n//# sourceMappingURL=sparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst equal = require(\"fast-deep-equal/es6\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst Parser = require('sparqljs').Parser;\nconst types = Algebra.types;\nlet variables = new Set();\nlet varCount = 0;\nlet useQuads = false;\nlet factory;\n/**\n * Translates the given SPARQL query to SPARQL Algebra.\n * @param sparql - Either a SPARQL string or an object generated by sparql.js\n * @param options - Optional options object. Current options:\n * * dataFactory: The Datafactory used to generate terms. Default @rdfjs/data-model.\n * * quads: Boolean indicating whether triples should be converted to Quads (consumes GRAPH statements). Default false.\n * * prefixes: Pre-defined prefixes for the given query. Default empty.\n * * baseIRI: Base IRI that should be used for the query. Default undefined (throws error if required).\n * @returns {Operation}\n */\nfunction translate(sparql, options) {\n options = options || {};\n factory = new factory_1.default(options.dataFactory);\n let query;\n if (isString(sparql)) {\n let parser = new Parser(options);\n // resets the identifier counter used for blank nodes\n // provides nicer and more consistent output if there are multiple calls\n parser._resetBlanks();\n query = parser.parse(sparql);\n }\n else {\n query = sparql;\n }\n return translateQuery(query, options.quads, options.blankToVariable);\n}\nexports.default = translate;\nfunction translateQuery(sparql, quads, blankToVariable) {\n // this set is filled in during the inScopeVariables call\n variables = new Set();\n varCount = 0;\n useQuads = Boolean(quads);\n // Assume this is an empty query\n if (!sparql.type)\n return factory.createNop();\n if (sparql.type !== 'query' && sparql.type !== 'update')\n throw new Error('Translate only works on complete query or update objects.');\n let res;\n // find ALL variables here to fill `variables` array\n findAllVariables(sparql);\n if (sparql.type === 'query') {\n // group and where are identical, having only 1 makes parsing easier, can be undefined in DESCRIBE\n const group = { type: 'group', patterns: sparql.where || [] };\n res = translateGraphPattern(group);\n res = translateAggregates(sparql, res);\n }\n else if (sparql.type === 'update') {\n res = translateUpdate(sparql);\n }\n if (blankToVariable) {\n res = translateBlankNodesToVariables(res);\n }\n return res;\n}\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isTerm(term) {\n return Boolean(term === null || term === void 0 ? void 0 : term.termType);\n}\n// This is not completely correct but this way we also catch SPARQL.js triples\nfunction isTriple(triple) {\n return triple.subject && triple.predicate && triple.object;\n}\nfunction isVariable(term) {\n return (term === null || term === void 0 ? void 0 : term.termType) === 'Variable';\n}\n// Will be used to make sure new variables don't overlap\nfunction findAllVariables(thingy) {\n if (isTerm(thingy)) {\n if (isVariable(thingy)) {\n // Variables don't store the `?`\n variables.add(`?${thingy.value}`);\n }\n }\n else if (Array.isArray(thingy)) {\n for (const entry of thingy)\n findAllVariables(entry);\n }\n else if (thingy && typeof thingy === 'object') {\n for (let key of Object.keys(thingy)) {\n // Some variables are hidden in keys (specifically for VALUES)\n if (key.startsWith('?')) {\n variables.add(key);\n }\n else if (key.startsWith('$')) {\n variables.add(`?${key.slice(1)}`);\n }\n findAllVariables(thingy[key]);\n }\n }\n}\n// 18.2.1\nfunction inScopeVariables(thingy) {\n let inScope = {};\n if (isTriple(thingy)) {\n // Note that this could both be an actual Quad or a SPARQL.js triple (without graph)\n const result = [\n inScopeVariables(thingy.subject),\n inScopeVariables(thingy.predicate),\n inScopeVariables(thingy.object),\n thingy.graph ? inScopeVariables(thingy.graph) : {}\n ];\n Object.assign(inScope, ...result);\n }\n else if (isTerm(thingy)) {\n if (isVariable(thingy))\n inScope[thingy.value] = thingy;\n }\n else if (thingy.type === 'bgp') {\n // Slightly cheating but this is a subset of what we support so is fine\n const quads = thingy.triples;\n Object.assign(inScope, ...quads.map(inScopeVariables));\n }\n else if (thingy.type === 'path') {\n // A path predicate should not have variables but just iterating so we could theoretically support this\n Object.assign(inScope, ...thingy.items.map(inScopeVariables));\n }\n else if (thingy.type === 'group' || thingy.type === 'union' || thingy.type === 'optional') {\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'service' || thingy.type === 'graph') {\n Object.assign(inScope, inScopeVariables(thingy.name));\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'bind') {\n Object.assign(inScope, inScopeVariables(thingy.variable));\n }\n else if (thingy.type === 'values') {\n if (thingy.values.length > 0) {\n const vars = Object.keys(thingy.values[0]).map(v => factory.createTerm(v));\n Object.assign(inScope, ...vars.map(inScopeVariables));\n }\n }\n else if (thingy.type === 'query') {\n if (thingy.queryType === 'SELECT' || thingy.queryType === 'DESCRIBE') {\n if (thingy.where && thingy.variables.some(util_1.default.isWildcard))\n Object.assign(inScope, ...thingy.where.map(inScopeVariables));\n for (const v of thingy.variables) {\n if (isVariable(v))\n Object.assign(inScope, inScopeVariables(v));\n else if (v.variable)\n Object.assign(inScope, inScopeVariables(v.variable));\n }\n if (thingy.queryType === 'SELECT') {\n if (thingy.group) {\n // Grouping can be a VariableExpression, typings are wrong\n for (const g of thingy.group) {\n if (g.variable)\n Object.assign(inScope, inScopeVariables(g.variable));\n }\n }\n if (thingy.values) {\n const values = { type: 'values', values: thingy.values };\n Object.assign(inScope, inScopeVariables(values));\n }\n }\n }\n }\n return inScope;\n}\nfunction translateGraphPattern(thingy) {\n // 18.2.2.1\n // already done by sparql parser\n // 18.2.2.3\n // 18.2.2.4\n // 18.2.2.5\n // In Sparql.js, a group with a single BGP in it is a single object.\n if (thingy.type === 'bgp') {\n return translateBgp(thingy);\n }\n // 18.2.2.6 - GroupOrUnionGraphPattern\n if (thingy.type === 'union')\n return factory.createUnion(thingy.patterns.map((p) => {\n // sparqljs doesn't always indicate the children are groups\n if (p.type !== 'group')\n p = { type: 'group', patterns: [p] };\n return translateGraphPattern(p);\n }));\n // 18.2.2.6 - GraphGraphPattern\n if (thingy.type === 'graph') {\n // Sparql.js combines the group graph pattern and the graph itself in the same object.\n // We split here so the group graph pattern can be interpreted correctly.\n const group = { type: 'group', patterns: thingy.patterns };\n let result = translateGraphPattern(group);\n // Output depends on if we use quads or not\n if (useQuads)\n result = recurseGraph(result, thingy.name);\n else\n result = factory.createGraph(result, thingy.name);\n return result;\n }\n // 18.2.2.6 - InlineData\n if (thingy.type === 'values')\n return translateInlineData(thingy);\n // 18.2.2.6 - SubSelect\n if (thingy.type === 'query')\n return translateQuery(thingy, useQuads, false);\n if (thingy.type === 'group') {\n // 18.2.2.2\n let filters = [];\n let nonfilters = [];\n for (let pattern of thingy.patterns)\n (pattern.type === 'filter' ? filters : nonfilters).push(pattern);\n // 18.2.2.6 - GroupGraphPattern\n let result = nonfilters.reduce(accumulateGroupGraphPattern, factory.createBgp([]));\n // 18.2.2.7\n let expressions = filters.map(filter => translateExpression(filter.expression));\n if (expressions.length > 0)\n result = factory.createFilter(result, expressions.reduce((acc, exp) => factory.createOperatorExpression('&&', [acc, exp])));\n return result;\n }\n throw new Error(`Unexpected type: ${thingy.type}`);\n}\nfunction translateExpression(exp) {\n if (util_1.default.isSimpleTerm(exp))\n return factory.createTermExpression(exp);\n if (util_1.default.isQuad(exp)) {\n if (util_1.default.hasQuadVariables(exp))\n return factory.createOperatorExpression('triple', [\n translateExpression(exp.subject),\n translateExpression(exp.predicate),\n translateExpression(exp.object),\n ]);\n else\n return factory.createTermExpression(exp);\n }\n if (util_1.default.isWildcard(exp))\n return factory.createWildcardExpression();\n if ('aggregation' in exp)\n return factory.createAggregateExpression(exp.aggregation, translateExpression(exp.expression), Boolean(exp.distinct), exp.separator);\n if ('function' in exp)\n // Outdated typings\n return factory.createNamedExpression(exp.function, exp.args.map(translateExpression));\n if ('operator' in exp) {\n if (exp.operator === 'exists' || exp.operator === 'notexists')\n return factory.createExistenceExpression(exp.operator === 'notexists', translateGraphPattern(exp.args[0]));\n if (exp.operator === 'in' || exp.operator === 'notin')\n exp.args = [exp.args[0]].concat(exp.args[1]); // sparql.js uses 2 arguments with the second one being a list\n return factory.createOperatorExpression(exp.operator, exp.args.map(translateExpression));\n }\n throw new Error(`Unknown expression: ${JSON.stringify(exp)}`);\n}\nfunction translateBgp(thingy) {\n let patterns = [];\n let joins = [];\n for (let t of thingy.triples) {\n if ('pathType' in t.predicate) {\n // translatePath returns a mix of Quads and Paths\n let path = translatePath(t);\n for (let p of path) {\n if (p.type === types.PATH) {\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n patterns = [];\n joins.push(p);\n }\n else\n patterns.push(p);\n }\n }\n else\n patterns.push(translateQuad(t));\n }\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n if (joins.length === 1)\n return joins[0];\n return factory.createJoin(joins);\n}\nfunction translatePath(triple) {\n let sub = triple.subject;\n let pred = translatePathPredicate(triple.predicate);\n let obj = triple.object;\n return simplifyPath(sub, pred, obj);\n}\nfunction translatePathPredicate(predicate) {\n if (util_1.default.isSimpleTerm(predicate)) {\n if (predicate.termType === 'NamedNode')\n return factory.createLink(predicate);\n else\n throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(predicate)}`);\n }\n if (predicate.pathType === '^')\n return factory.createInv(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '!') {\n // negation is either over a single predicate or a list of disjuncted properties\n let normals = [];\n let inverted = [];\n let items;\n if ('pathType' in predicate.items[0] && predicate.items[0].pathType === '|')\n items = predicate.items[0].items; // the | element\n else\n items = predicate.items;\n for (let item of items) {\n if (util_1.default.isSimpleTerm(item))\n normals.push(item);\n else if (item.pathType === '^')\n inverted.push(item.items[0]);\n else\n throw new Error(`Unexpected item: ${JSON.stringify(item)}`);\n }\n // NPS elements do not have the LINK function\n let normalElement = factory.createNps(normals);\n let invertedElement = factory.createInv(factory.createNps(inverted));\n if (inverted.length === 0)\n return normalElement;\n if (normals.length === 0)\n return invertedElement;\n return factory.createAlt([normalElement, invertedElement,]);\n }\n if (predicate.pathType === '/')\n return factory.createSeq(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '|')\n return factory.createAlt(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '*')\n return factory.createZeroOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '+')\n return factory.createOneOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '?')\n return factory.createZeroOrOnePath(translatePathPredicate(predicate.items[0]));\n throw new Error(`Unable to translate path expression ${JSON.stringify(predicate)}`);\n}\nfunction simplifyPath(subject, predicate, object) {\n if (predicate.type === types.LINK)\n return [factory.createPattern(subject, predicate.iri, object)];\n if (predicate.type === types.INV)\n return simplifyPath(object, predicate.path, subject);\n if (predicate.type === types.SEQ) {\n let joiner = subject;\n return util_1.default.flatten(predicate.input.map((subOp, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? object : generateFreshVar();\n const simplifiedPath = simplifyPath(joiner, subOp, nextJoiner);\n if (nextJoiner.termType === 'Variable') {\n joiner = nextJoiner;\n }\n return simplifiedPath;\n }));\n }\n return [factory.createPath(subject, predicate, object)];\n}\nfunction generateFreshVar() {\n let v = `?var${varCount++}`;\n if (variables.has(v))\n return generateFreshVar();\n variables.add(v);\n return factory.createTerm(v);\n}\nfunction translateQuad(quad) {\n if ('pathType' in quad.predicate) {\n throw new Error('Trying to translate property path to quad.');\n }\n // Graphs are needed here\n // TODO: investigate if typings are wrong or if we internally add graphs to these\n return factory.createPattern(quad.subject, quad.predicate, quad.object, quad.graph);\n}\nlet typeVals = Object.values(types);\nfunction recurseGraph(thingy, graph, replacement) {\n if (thingy.type === types.GRAPH) {\n if (replacement) {\n // At this point we would lose track of the replacement which would result in incorrect results\n // This would indicate the library is not being used as intended though\n throw new Error('Recursing through nested GRAPH statements with a replacement is impossible.');\n }\n // In case there were nested GRAPH statements that were not recursed yet for some reason\n thingy = recurseGraph(thingy.input, thingy.name);\n }\n else if (thingy.type === types.SERVICE) {\n // Service blocks are not affected by enclosing GRAPH statements, so nothing is modified in this block.\n // See https://github.com/joachimvh/SPARQLAlgebra.js/pull/104#issuecomment-1838016303\n }\n else if (thingy.type === types.BGP)\n thingy.patterns = thingy.patterns.map(quad => {\n if (replacement) {\n if (quad.subject.equals(graph))\n quad.subject = replacement;\n if (quad.predicate.equals(graph))\n quad.predicate = replacement;\n if (quad.object.equals(graph))\n quad.object = replacement;\n }\n if (quad.graph.termType === 'DefaultGraph')\n quad.graph = graph;\n return quad;\n });\n else if (thingy.type === types.PATH) {\n if (replacement) {\n if (thingy.subject.equals(graph))\n thingy.subject = replacement;\n if (thingy.object.equals(graph))\n thingy.object = replacement;\n }\n if (thingy.graph.termType === 'DefaultGraph')\n thingy.graph = graph;\n }\n // need to replace variables in subqueries should the graph also be a variable of the same name\n // unless the subquery projects that variable\n else if (thingy.type === types.PROJECT && !replacement) {\n if (!thingy.variables.some(v => v.equals(graph)))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n // this can happen if the query extends an expression to the name of the graph\n // since the extend happens here there should be no further occurrences of this name\n // if there are it's the same situation as above\n else if (thingy.type === types.EXTEND && !replacement) {\n if (thingy.variable.equals(graph))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n else {\n for (let key of Object.keys(thingy)) {\n if (Array.isArray(thingy[key]))\n thingy[key] = thingy[key].map((x) => recurseGraph(x, graph, replacement));\n else if (typeVals.indexOf(thingy[key].type) >= 0) // can't do instanceof on an interface\n thingy[key] = recurseGraph(thingy[key], graph, replacement);\n else if (replacement && isVariable(thingy[key]) && thingy[key].equals(graph))\n thingy[key] = replacement;\n }\n }\n return thingy;\n}\nfunction accumulateGroupGraphPattern(G, E) {\n if (E.type === 'optional') {\n // optional input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n if (A.type === types.FILTER) {\n G = factory.createLeftJoin(G, A.input, A.expression);\n }\n else\n G = factory.createLeftJoin(G, A);\n }\n else if (E.type === 'minus') {\n // minus input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n G = factory.createMinus(G, A);\n }\n else if (E.type === 'bind')\n G = factory.createExtend(G, E.variable, translateExpression(E.expression));\n else if (E.type === 'service') {\n // transform to group so childnodes get parsed correctly\n const group = { type: 'group', patterns: E.patterns };\n const A = factory.createService(translateGraphPattern(group), E.name, E.silent);\n G = simplifiedJoin(G, A);\n }\n else {\n const A = translateGraphPattern(E);\n G = simplifiedJoin(G, A);\n }\n return G;\n}\nfunction simplifiedJoin(G, A) {\n // Note: this is more simplification than requested in 18.2.2.8, but no reason not to do it.\n if (G.type === types.BGP && A.type === types.BGP)\n G = factory.createBgp([...G.patterns, ...A.patterns]);\n // 18.2.2.8 (simplification)\n else if (G.type === types.BGP && G.patterns.length === 0)\n G = A;\n else if (A.type === types.BGP && A.patterns.length === 0) { } // do nothing\n else\n G = factory.createJoin([G, A]);\n return G;\n}\nfunction translateInlineData(values) {\n let variables = (values.values.length === 0 ? [] : Object.keys(values.values[0])).map(factory.createTerm.bind(factory));\n let bindings = values.values.map((binding) => {\n let keys = Object.keys(binding);\n keys = keys.filter(k => binding[k] !== undefined);\n let map = {};\n for (let key of keys)\n map[key] = binding[key];\n return map;\n });\n return factory.createValues(variables, bindings);\n}\n// --------------------------------------- AGGREGATES\nfunction translateAggregates(query, res) {\n // Typings for ConstructQuery are wrong and missing several fields so we will cast quite often to SelectQuery to have partial typings\n const select = query;\n // 18.2.4.1\n const E = [];\n const A = {};\n select.variables = select.variables && select.variables.map(val => mapAggregate(val, A));\n select.having = select.having && select.having.map(val => mapAggregate(val, A));\n select.order = select.order && select.order.map(val => mapAggregate(val, A));\n // if there are any aggregates or if we have a groupBy (both result in a GROUP)\n if (select.group || Object.keys(A).length > 0) {\n const aggregates = Object.keys(A).map(v => translateBoundAggregate(A[v], factory.createTerm(v)));\n const vars = [];\n if (select.group) {\n for (const e of select.group) {\n if (util_1.default.isSimpleTerm(e.expression)) {\n vars.push(e.expression); // this will always be a var, otherwise sparql would be invalid\n }\n else {\n // Incorrect typings, e can have a variable, see for example group-variable test in sparql.js\n const v = 'variable' in e ? e.variable : generateFreshVar();\n res = factory.createExtend(res, v, translateExpression(e.expression));\n vars.push(v);\n }\n }\n }\n res = factory.createGroup(res, vars, aggregates);\n }\n // 18.2.4.2\n if (select.having)\n for (let filter of select.having)\n res = factory.createFilter(res, translateExpression(filter));\n // 18.2.4.3\n if (query.values)\n res = factory.createJoin([res, translateInlineData(query)]);\n // 18.2.4.4\n let PV = [];\n if (query.queryType === 'SELECT' || query.queryType === 'DESCRIBE') {\n // Sort variables for consistent output\n if (query.variables.some((e) => e && util_1.default.isWildcard(e)))\n PV = Object.values(inScopeVariables(query))\n .sort((left, right) => left.value.localeCompare(right.value));\n else {\n // Wildcard has been filtered out above\n for (let v of query.variables) {\n // can have non-variables with DESCRIBE\n if (isVariable(v) || !('variable' in v))\n PV.push(v);\n else if (v.variable) // ... AS ?x\n {\n PV.push(v.variable);\n E.push(v);\n }\n }\n }\n }\n // TODO: Jena simplifies by having a list of extends\n for (let v of E)\n res = factory.createExtend(res, v.variable, translateExpression(v.expression));\n // 18.2.5\n // not using toList and toMultiset\n // 18.2.5.1\n if (select.order)\n res = factory.createOrderBy(res, select.order.map((exp) => {\n let result = translateExpression(exp.expression);\n if (exp.descending)\n result = factory.createOperatorExpression('desc', [result]);\n return result;\n }));\n // 18.2.5.2\n // construct does not need a project (select, ask and describe do)\n if (query.queryType === 'SELECT')\n // Named nodes are only possible in a DESCRIBE so this cast is safe\n res = factory.createProject(res, PV);\n // 18.2.5.3\n if (select.distinct)\n res = factory.createDistinct(res);\n // 18.2.5.4\n if (select.reduced)\n res = factory.createReduced(res);\n // NEW: support for ask/construct/describe queries\n if (query.queryType === 'CONSTRUCT')\n res = factory.createConstruct(res, (query.template || []).map(translateQuad));\n else if (query.queryType === 'ASK')\n res = factory.createAsk(res);\n else if (query.queryType === 'DESCRIBE')\n res = factory.createDescribe(res, PV);\n // Slicing needs to happen after construct/describe\n // 18.2.5.5\n if (select.offset || select.limit)\n res = factory.createSlice(res, select.offset || 0, select.limit);\n if (select.from)\n res = factory.createFrom(res, select.from.default, select.from.named);\n return res;\n}\n// rewrites some of the input sparql object to make use of aggregate variables\nfunction mapAggregate(thingy, aggregates) {\n if ('type' in thingy && thingy.type === 'aggregate') {\n let found = false;\n let v;\n for (let key of Object.keys(aggregates)) {\n if (equal(aggregates[key], thingy)) {\n v = factory.createTerm(key);\n found = true;\n break;\n }\n }\n if (!found) {\n v = generateFreshVar();\n aggregates[(0, rdf_string_1.termToString)(v)] = thingy;\n }\n return v;\n }\n // non-aggregate expression\n if ('expression' in thingy && thingy.expression)\n return { ...thingy, expression: mapAggregate(thingy.expression, aggregates) };\n if ('args' in thingy && thingy.args)\n return { ...thingy, args: thingy.args.map(subthingy => mapAggregate(subthingy, aggregates)) };\n // Normal variable/wildcard\n return thingy;\n}\nfunction translateBoundAggregate(thingy, v) {\n if (thingy.type !== 'aggregate' || !thingy.aggregation)\n throw new Error(`Unexpected input: ${JSON.stringify(thingy)}`);\n const A = translateExpression(thingy);\n A.variable = v;\n return A;\n}\nfunction translateUpdate(thingy) {\n if (thingy.updates.length === 1)\n return translateSingleUpdate(thingy.updates[0]);\n return factory.createCompositeUpdate(thingy.updates.map(translateSingleUpdate));\n}\nfunction translateSingleUpdate(thingy) {\n if ('type' in thingy) {\n if (thingy.type === 'load')\n return translateUpdateGraphLoad(thingy);\n if (thingy.type === 'clear' || thingy.type === 'create' || thingy.type === 'drop')\n return translateUpdateGraph(thingy);\n if (thingy.type === 'add' || thingy.type === 'copy' || thingy.type === 'move')\n return translateUpdateGraphShortcut(thingy);\n }\n else if (thingy.updateType === 'insertdelete' || thingy.updateType === 'deletewhere' || thingy.updateType === 'delete' || thingy.updateType === 'insert')\n return translateInsertDelete(thingy);\n throw new Error(`Unknown update type ${JSON.stringify(thingy)}`);\n}\nfunction translateInsertDelete(thingy) {\n if (!useQuads)\n throw new Error('INSERT/DELETE operations are only supported with quads option enabled');\n let deleteTriples = [];\n let insertTriples = [];\n let where;\n if (thingy.delete)\n deleteTriples = util_1.default.flatten(thingy.delete.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.insert)\n insertTriples = util_1.default.flatten(thingy.insert.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.where && thingy.where.length > 0) {\n where = translateGraphPattern({ type: 'group', patterns: thingy.where });\n // Wrong typings, see test \"using\" in Sparql.js\n const use = thingy.using;\n if (use)\n where = factory.createFrom(where, use.default, use.named);\n else if (thingy.graph)\n // This is equivalent\n where = recurseGraph(where, thingy.graph);\n }\n else if (thingy.updateType === 'deletewhere' && deleteTriples.length > 0) {\n where = factory.createBgp(deleteTriples);\n }\n return factory.createDeleteInsert(deleteTriples.length > 0 ? deleteTriples : undefined, insertTriples.length > 0 ? insertTriples : undefined, where);\n}\n// UPDATE parsing will always return quads and have no GRAPH elements\nfunction translateUpdateTriplesBlock(thingy, graph) {\n let currentGraph = graph;\n if (thingy.type === 'graph')\n currentGraph = thingy.name;\n let currentTriples = thingy.triples;\n if (currentGraph)\n currentTriples = currentTriples.map(triple => Object.assign(triple, { graph: currentGraph }));\n return currentTriples.map(translateQuad);\n}\nfunction translateUpdateGraph(thingy) {\n let source;\n if (util_1.default.isSimpleTerm(thingy.graph))\n source = thingy.graph;\n else if (thingy.graph.all)\n source = 'ALL';\n else if (thingy.graph.default)\n source = 'DEFAULT';\n else if (thingy.graph.named)\n source = 'NAMED';\n else\n source = thingy.graph.name;\n switch (thingy.type) {\n case 'clear': return factory.createClear(source, thingy.silent);\n case 'create': return factory.createCreate(source, thingy.silent);\n case 'drop': return factory.createDrop(source, thingy.silent);\n }\n}\nfunction translateUpdateGraphLoad(thingy) {\n return factory.createLoad(thingy.source, thingy.destination, thingy.silent);\n}\nfunction translateUpdateGraphShortcut(thingy) {\n const source = thingy.source.default ? 'DEFAULT' : thingy.source.name;\n const destination = thingy.destination.default ? 'DEFAULT' : thingy.destination.name;\n switch (thingy.type) {\n case 'copy': return factory.createCopy(source, destination, thingy.silent);\n case 'move': return factory.createMove(source, destination, thingy.silent);\n case 'add': return factory.createAdd(source, destination, thingy.silent);\n }\n}\nfunction translateBlankNodesToVariables(res) {\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(variables).reduce((acc, variable) => {\n acc[variable] = true;\n return acc;\n }, {});\n return util_1.default.mapOperation(res, {\n [Algebra.types.DELETE_INSERT]: (op) => {\n // Make sure blank nodes remain in the INSERT block, but do update the WHERE block\n return {\n result: factory.createDeleteInsert(op.delete, op.insert, op.where && translateBlankNodesToVariables(op.where)),\n recurse: false,\n };\n },\n [Algebra.types.PATH]: (op, factory) => {\n return {\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.PATTERN]: (op, factory) => {\n return {\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT]: (op) => {\n // Blank nodes in CONSTRUCT templates must be maintained\n return {\n result: factory.createConstruct(translateBlankNodesToVariables(op.input), op.template),\n recurse: false,\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = util_1.default.createUniqueVariable(term.value, variablesRaw, factory.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n}\n//# sourceMappingURL=sparqlAlgebra.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst algebra_1 = require(\"./algebra\");\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst rdf_terms_1 = require(\"rdf-terms\");\nclass Util {\n /**\n * Flattens an array of arrays to an array.\n * @param arr - Array of arrays\n */\n static flatten(arr) {\n return Array.prototype.concat(...arr).filter(x => x);\n }\n /**\n * Outputs a JSON object corresponding to the input algebra-like.\n */\n static objectify(algebra) {\n if (algebra.termType) {\n if (algebra.termType === 'Quad') {\n return {\n type: 'pattern',\n termType: 'Quad',\n subject: Util.objectify(algebra.subject),\n predicate: Util.objectify(algebra.predicate),\n object: Util.objectify(algebra.object),\n graph: Util.objectify(algebra.graph),\n };\n }\n else {\n let result = { termType: algebra.termType, value: algebra.value };\n if (algebra.language)\n result.language = algebra.language;\n if (algebra.datatype)\n result.datatype = Util.objectify(algebra.datatype);\n return result;\n }\n }\n if (Array.isArray(algebra))\n return algebra.map(e => Util.objectify(e));\n if (algebra === Object(algebra)) {\n let result = {};\n for (let key of Object.keys(algebra))\n result[key] = Util.objectify(algebra[key]);\n return result;\n }\n return algebra;\n }\n /**\n * Detects all in-scope variables.\n * In practice this means iterating through the entire algebra tree, finding all variables,\n * and stopping when a project function is found.\n * @param {Operation} op - Input algebra tree.\n * @returns {Variable[]} - List of unique in-scope variables.\n */\n static inScopeVariables(op) {\n const variables = [];\n function addVariable(v) {\n if (!variables.find(v2 => v.value === v2.value))\n variables.push(v);\n }\n function recurseTerm(quad) {\n if (quad.subject.termType === 'Variable')\n addVariable(quad.subject);\n if (quad.predicate.termType === 'Variable')\n addVariable(quad.predicate);\n if (quad.object.termType === 'Variable')\n addVariable(quad.object);\n if (quad.graph.termType === 'Variable')\n addVariable(quad.graph);\n if (quad.subject.termType === 'Quad')\n recurseTerm(quad.subject);\n if (quad.predicate.termType === 'Quad')\n recurseTerm(quad.predicate);\n if (quad.object.termType === 'Quad')\n recurseTerm(quad.object);\n if (quad.graph.termType === 'Quad')\n recurseTerm(quad.graph);\n }\n // https://www.w3.org/TR/sparql11-query/#variableScope\n Util.recurseOperation(op, {\n [algebra_1.types.EXPRESSION]: (op) => {\n if (op.expressionType === algebra_1.expressionTypes.AGGREGATE && op.variable) {\n addVariable(op.variable);\n }\n return true;\n },\n [algebra_1.types.EXTEND]: (op) => {\n addVariable(op.variable);\n return true;\n },\n [algebra_1.types.GRAPH]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.GROUP]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n [algebra_1.types.PATH]: (op) => {\n if (op.subject.termType === 'Variable')\n addVariable(op.subject);\n if (op.object.termType === 'Variable')\n addVariable(op.object);\n if (op.graph.termType === 'Variable')\n addVariable(op.graph);\n if (op.subject.termType === 'Quad')\n recurseTerm(op.subject);\n if (op.object.termType === 'Quad')\n recurseTerm(op.object);\n if (op.graph.termType === 'Quad')\n recurseTerm(op.graph);\n return true;\n },\n [algebra_1.types.PATTERN]: (op) => {\n recurseTerm(op);\n return true;\n },\n [algebra_1.types.PROJECT]: (op) => {\n op.variables.forEach(addVariable);\n return false;\n },\n [algebra_1.types.SERVICE]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.VALUES]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n });\n return variables;\n }\n /**\n * Recurses through the given algebra tree\n * A map of callback functions can be provided for individual Operation types to gather data.\n * The return value of those callbacks should indicate whether recursion should be applied or not.\n * Making modifications will change the original input object.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation) => boolean } callbacks - A map of required callback Operations.\n */\n static recurseOperation(op, callbacks) {\n let result = op;\n let doRecursion = true;\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n doRecursion = callback(op);\n if (!doRecursion)\n return;\n let recurseOp = (op) => Util.recurseOperation(op, callbacks);\n switch (result.type) {\n case algebra_1.types.ALT:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.ASK:\n recurseOp(result.input);\n break;\n case algebra_1.types.BGP:\n result.patterns.forEach(recurseOp);\n break;\n case algebra_1.types.CONSTRUCT:\n recurseOp(result.input);\n result.template.map(recurseOp);\n break;\n case algebra_1.types.DESCRIBE:\n recurseOp(result.input);\n break;\n case algebra_1.types.DISTINCT:\n recurseOp(result.input);\n break;\n case algebra_1.types.EXPRESSION:\n if (result.expressionType === algebra_1.expressionTypes.EXISTENCE) {\n recurseOp(result.input);\n }\n break;\n case algebra_1.types.EXTEND:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FILTER:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FROM:\n recurseOp(result.input);\n break;\n case algebra_1.types.GRAPH:\n recurseOp(result.input);\n break;\n case algebra_1.types.GROUP:\n recurseOp(result.input);\n result.aggregates.forEach(recurseOp);\n break;\n case algebra_1.types.INV:\n recurseOp(result.path);\n break;\n case algebra_1.types.JOIN:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.LEFT_JOIN:\n result.input.map(recurseOp);\n if (result.expression)\n recurseOp(result.expression);\n break;\n case algebra_1.types.LINK:\n break;\n case algebra_1.types.MINUS:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.NOP:\n break;\n case algebra_1.types.NPS:\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ORDER_BY:\n recurseOp(result.input);\n result.expressions.forEach(recurseOp);\n break;\n case algebra_1.types.PATH:\n recurseOp(result.predicate);\n break;\n case algebra_1.types.PATTERN:\n break;\n case algebra_1.types.PROJECT:\n recurseOp(result.input);\n break;\n case algebra_1.types.REDUCED:\n recurseOp(result.input);\n break;\n case algebra_1.types.SEQ:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.SERVICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.SLICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.UNION:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.VALUES:\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n recurseOp(result.path);\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result.updates.forEach(update => recurseOp(update));\n break;\n case algebra_1.types.DELETE_INSERT:\n if (result.delete)\n result.delete.forEach(pattern => recurseOp(pattern));\n if (result.insert)\n result.insert.forEach(pattern => recurseOp(pattern));\n if (result.where)\n recurseOp(result.where);\n break;\n // all of these only have graph IDs as values\n case algebra_1.types.LOAD: break;\n case algebra_1.types.CLEAR: break;\n case algebra_1.types.CREATE: break;\n case algebra_1.types.DROP: break;\n case algebra_1.types.ADD: break;\n case algebra_1.types.MOVE: break;\n case algebra_1.types.COPY: break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Creates a deep copy of the given Operation.\n * Creates shallow copies of the non-Operation values.\n * A map of callback functions can be provided for individual Operation types\n * to specifically modify the given objects before triggering recursion.\n * The return value of those callbacks should indicate whether recursion should be applied to this returned object or not.\n * @param {Operation} op - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapOperation(op, callbacks, factory) {\n let result = op;\n let doRecursion = true;\n let copyMetadata = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[op.type];\n if (callback) {\n // Not sure how to get typing correct for op here\n const recurseResult = callback(op, factory);\n result = recurseResult.result;\n doRecursion = recurseResult.recurse;\n copyMetadata = recurseResult.copyMetadata !== false;\n }\n let toCopyMetadata;\n if (copyMetadata && (result.metadata || op.metadata)) {\n toCopyMetadata = { ...result.metadata, ...op.metadata };\n }\n if (!doRecursion) {\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n // Several casts here might be wrong though depending on the callbacks output\n switch (result.type) {\n case algebra_1.types.ALT:\n result = factory.createAlt(result.input.map(mapOp));\n break;\n case algebra_1.types.ASK:\n result = factory.createAsk(mapOp(result.input));\n break;\n case algebra_1.types.BGP:\n result = factory.createBgp(result.patterns.map(mapOp));\n break;\n case algebra_1.types.CONSTRUCT:\n result = factory.createConstruct(mapOp(result.input), result.template.map(mapOp));\n break;\n case algebra_1.types.DESCRIBE:\n result = factory.createDescribe(mapOp(result.input), result.terms);\n break;\n case algebra_1.types.DISTINCT:\n result = factory.createDistinct(mapOp(result.input));\n break;\n case algebra_1.types.EXPRESSION:\n result = Util.mapExpression(result, callbacks, factory);\n break;\n case algebra_1.types.EXTEND:\n result = factory.createExtend(mapOp(result.input), result.variable, mapOp(result.expression));\n break;\n case algebra_1.types.FILTER:\n result = factory.createFilter(mapOp(result.input), mapOp(result.expression));\n break;\n case algebra_1.types.FROM:\n result = factory.createFrom(mapOp(result.input), [...result.default], [...result.named]);\n break;\n case algebra_1.types.GRAPH:\n result = factory.createGraph(mapOp(result.input), result.name);\n break;\n case algebra_1.types.GROUP:\n result = factory.createGroup(mapOp(result.input), [].concat(result.variables), result.aggregates.map(mapOp));\n break;\n case algebra_1.types.INV:\n result = factory.createInv(mapOp(result.path));\n break;\n case algebra_1.types.JOIN:\n result = factory.createJoin(result.input.map(mapOp));\n break;\n case algebra_1.types.LEFT_JOIN:\n result = factory.createLeftJoin(mapOp(result.input[0]), mapOp(result.input[1]), result.expression ? mapOp(result.expression) : undefined);\n break;\n case algebra_1.types.LINK:\n result = factory.createLink(result.iri);\n break;\n case algebra_1.types.MINUS:\n result = factory.createMinus(mapOp(result.input[0]), mapOp(result.input[1]));\n break;\n case algebra_1.types.NOP:\n result = factory.createNop();\n break;\n case algebra_1.types.NPS:\n result = factory.createNps([].concat(result.iris));\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n result = factory.createOneOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ORDER_BY:\n result = factory.createOrderBy(mapOp(result.input), result.expressions.map(mapOp));\n break;\n case algebra_1.types.PATH:\n result = factory.createPath(result.subject, mapOp(result.predicate), result.object, result.graph);\n break;\n case algebra_1.types.PATTERN:\n result = factory.createPattern(result.subject, result.predicate, result.object, result.graph);\n break;\n case algebra_1.types.PROJECT:\n result = factory.createProject(mapOp(result.input), [...result.variables]);\n break;\n case algebra_1.types.REDUCED:\n result = factory.createReduced(mapOp(result.input));\n break;\n case algebra_1.types.SEQ:\n result = factory.createSeq(result.input.map(mapOp));\n break;\n case algebra_1.types.SERVICE:\n result = factory.createService(mapOp(result.input), result.name, result.silent);\n break;\n case algebra_1.types.SLICE:\n result = factory.createSlice(mapOp(result.input), result.start, result.length);\n break;\n case algebra_1.types.UNION:\n result = factory.createUnion(result.input.map(mapOp));\n break;\n case algebra_1.types.VALUES:\n result = factory.createValues([].concat(result.variables), result.bindings.map(b => Object.assign({}, b)));\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n result = factory.createZeroOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n result = factory.createZeroOrOnePath(mapOp(result.path));\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result = factory.createCompositeUpdate(result.updates.map(mapOp));\n break;\n case algebra_1.types.DELETE_INSERT:\n result = factory.createDeleteInsert(result.delete ? result.delete.map(mapOp) : undefined, result.insert ? result.insert.map(mapOp) : undefined, result.where ? mapOp(result.where) : undefined);\n break;\n case algebra_1.types.LOAD:\n result = factory.createLoad(result.source, result.destination, result.silent);\n break;\n case algebra_1.types.CLEAR:\n result = factory.createClear(result.source, result.silent);\n break;\n case algebra_1.types.CREATE:\n result = factory.createCreate(result.source, result.silent);\n break;\n case algebra_1.types.DROP:\n result = factory.createDrop(result.source, result.silent);\n break;\n case algebra_1.types.ADD:\n result = factory.createAdd(result.source, result.destination);\n break;\n case algebra_1.types.MOVE:\n result = factory.createMove(result.source, result.destination);\n break;\n case algebra_1.types.COPY:\n result = factory.createCopy(result.source, result.destination);\n break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n /**\n * Similar to the {@link mapOperation} function but specifically for expressions.\n * Both functions call each other while copying.\n * Should not be called directly since it does not execute the callbacks, these happen in {@link mapOperation}.\n * @param {Expression} expr - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapExpression(expr, callbacks, factory) {\n let result = expr;\n let doRecursion = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[expr.expressionType];\n if (callback)\n ({ result, recurse: doRecursion } = callback(expr, factory));\n if (!doRecursion)\n return result;\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n switch (expr.expressionType) {\n case algebra_1.expressionTypes.AGGREGATE:\n if (expr.variable) {\n return factory.createBoundAggregate(expr.variable, expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n }\n return factory.createAggregateExpression(expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n case algebra_1.expressionTypes.EXISTENCE:\n return factory.createExistenceExpression(expr.not, mapOp(expr.input));\n case algebra_1.expressionTypes.NAMED:\n return factory.createNamedExpression(expr.name, expr.args.map(mapOp));\n case algebra_1.expressionTypes.OPERATOR:\n return factory.createOperatorExpression(expr.operator, expr.args.map(mapOp));\n case algebra_1.expressionTypes.TERM:\n return factory.createTermExpression(expr.term);\n case algebra_1.expressionTypes.WILDCARD:\n return factory.createWildcardExpression();\n default: throw new Error(`Unknown Expression type ${expr.expressionType}`);\n }\n }\n /**\n * Creates a deep clone of the operation.\n * This is syntactic sugar for calling {@link mapOperation} without callbacks.\n * @param {Operation} op - The operation to copy.\n * @returns {Operation} - The deep copy.\n */\n static cloneOperation(op) {\n return Util.mapOperation(op, {});\n }\n /**\n * Creates a deep clone of the expression.\n * This is syntactic sugar for calling {@link mapExpression} without callbacks.\n * @param {Expression} expr - The operation to copy.\n * @returns {Expression} - The deep copy.\n */\n static cloneExpression(expr) {\n return Util.mapExpression(expr, {});\n }\n static createUniqueVariable(label, variables, dataFactory) {\n let counter = 0;\n let labelLoop = label;\n while (variables[labelLoop]) {\n labelLoop = `${label}${counter++}`;\n }\n return dataFactory.variable(labelLoop);\n }\n // separate terms from wildcard since we handle them differently\n static isSimpleTerm(term) {\n return term.termType !== undefined && term.termType !== 'Quad' && term.termType !== 'Wildcard';\n }\n static isQuad(term) {\n return term.termType === 'Quad';\n }\n static hasQuadVariables(quad) {\n return (0, rdf_terms_1.someTermsNested)(quad, term => term.termType === 'Variable');\n }\n static isWildcard(term) {\n return term.termType === 'Wildcard';\n }\n}\nexports.default = Util;\n//# sourceMappingURL=util.js.map","var XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer';\nvar XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';\n\nfunction Generator(options) {\n this._options = options = options || {};\n\n var prefixes = options.prefixes || {};\n this._prefixByIri = {};\n var prefixIris = [];\n for (var prefix in prefixes) {\n var iri = prefixes[prefix];\n if (isString(iri)) {\n this._prefixByIri[iri] = prefix;\n prefixIris.push(iri);\n }\n }\n var iriList = prefixIris.join('|').replace(/[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n this._prefixRegex = new RegExp('^(' + iriList + ')([a-zA-Z][\\\\-_a-zA-Z0-9]*)$');\n this._usedPrefixes = {};\n this._sparqlStar = options.sparqlStar;\n this._indent = isString(options.indent) ? options.indent : ' ';\n this._newline = isString(options.newline) ? options.newline : '\\n';\n this._explicitDatatype = Boolean(options.explicitDatatype);\n}\n\n// Converts the parsed query object into a SPARQL query\nGenerator.prototype.toQuery = function (q) {\n var query = '';\n\n if (q.queryType)\n query += q.queryType.toUpperCase() + ' ';\n if (q.reduced)\n query += 'REDUCED ';\n if (q.distinct)\n query += 'DISTINCT ';\n\n if (q.variables){\n query += mapJoin(q.variables, undefined, function (variable) {\n return isTerm(variable) ? this.toEntity(variable) :\n '(' + this.toExpression(variable.expression) + ' AS ' + variableToString(variable.variable) + ')';\n }, this) + ' ';\n }\n else if (q.template)\n query += this.group(q.template, true) + this._newline;\n\n if (q.from)\n query += this.graphs('FROM ', q.from.default) + this.graphs('FROM NAMED ', q.from.named);\n if (q.where)\n query += 'WHERE ' + this.group(q.where, true) + this._newline;\n\n if (q.updates)\n query += mapJoin(q.updates, ';' + this._newline, this.toUpdate, this);\n\n if (q.group)\n query += 'GROUP BY ' + mapJoin(q.group, undefined, function (it) {\n var result = isTerm(it.expression)\n ? this.toEntity(it.expression)\n : '(' + this.toExpression(it.expression) + ')';\n return it.variable ? '(' + result + ' AS ' + variableToString(it.variable) + ')' : result;\n }, this) + this._newline;\n if (q.having)\n query += 'HAVING (' + mapJoin(q.having, undefined, this.toExpression, this) + ')' + this._newline;\n if (q.order)\n query += 'ORDER BY ' + mapJoin(q.order, undefined, function (it) {\n var expr = '(' + this.toExpression(it.expression) + ')';\n return !it.descending ? expr : 'DESC ' + expr;\n }, this) + this._newline;\n\n if (q.offset)\n query += 'OFFSET ' + q.offset + this._newline;\n if (q.limit)\n query += 'LIMIT ' + q.limit + this._newline;\n\n if (q.values)\n query += this.values(q);\n\n // stringify prefixes at the end to mark used ones\n query = this.baseAndPrefixes(q) + query;\n return query.trim();\n};\n\nGenerator.prototype.baseAndPrefixes = function (q) {\n var base = q.base ? ('BASE <' + q.base + '>' + this._newline) : '';\n var prefixes = '';\n for (var key in q.prefixes) {\n if (this._options.allPrefixes || this._usedPrefixes[key])\n prefixes += 'PREFIX ' + key + ': <' + q.prefixes[key] + '>' + this._newline;\n }\n return base + prefixes;\n};\n\n// Converts the parsed SPARQL pattern into a SPARQL pattern\nGenerator.prototype.toPattern = function (pattern) {\n var type = pattern.type || (pattern instanceof Array) && 'array' ||\n (pattern.subject && pattern.predicate && pattern.object ? 'triple' : '');\n if (!(type in this))\n throw new Error('Unknown entry type: ' + type);\n return this[type](pattern);\n};\n\nGenerator.prototype.triple = function (t) {\n return this.toEntity(t.subject) + ' ' + this.toEntity(t.predicate) + ' ' + this.toEntity(t.object) + '.';\n};\n\nGenerator.prototype.array = function (items) {\n return mapJoin(items, this._newline, this.toPattern, this);\n};\n\nGenerator.prototype.bgp = function (bgp) {\n return this.encodeTriples(bgp.triples);\n};\n\nGenerator.prototype.encodeTriples = function (triples) {\n if (!triples.length)\n return '';\n\n var parts = [], subject = undefined, predicate = undefined;\n for (var i = 0; i < triples.length; i++) {\n var triple = triples[i];\n // Triple with different subject\n if (!equalTerms(triple.subject, subject)) {\n // Terminate previous triple\n if (subject)\n parts.push('.' + this._newline);\n subject = triple.subject;\n predicate = triple.predicate;\n parts.push(this.toEntity(subject), ' ', this.toEntity(predicate));\n }\n // Triple with same subject but different predicate\n else if (!equalTerms(triple.predicate, predicate)) {\n predicate = triple.predicate;\n parts.push(';' + this._newline, this._indent, this.toEntity(predicate));\n }\n // Triple with same subject and predicate\n else {\n parts.push(',');\n }\n parts.push(' ', this.toEntity(triple.object));\n }\n parts.push('.');\n\n return parts.join('');\n}\n\nGenerator.prototype.graph = function (graph) {\n return 'GRAPH ' + this.toEntity(graph.name) + ' ' + this.group(graph);\n};\n\nGenerator.prototype.graphs = function (keyword, graphs) {\n return !graphs || graphs.length === 0 ? '' :\n mapJoin(graphs, '', function (g) { return keyword + this.toEntity(g) + this._newline; }, this)\n}\n\nGenerator.prototype.group = function (group, inline) {\n group = inline !== true ? this.array(group.patterns || group.triples)\n : this.toPattern(group.type !== 'group' ? group : group.patterns);\n return group.indexOf(this._newline) === -1 ? '{ ' + group + ' }' : '{' + this._newline + this.indent(group) + this._newline + '}';\n};\n\nGenerator.prototype.query = function (query) {\n return this.toQuery(query);\n};\n\nGenerator.prototype.filter = function (filter) {\n return 'FILTER(' + this.toExpression(filter.expression) + ')';\n};\n\nGenerator.prototype.bind = function (bind) {\n return 'BIND(' + this.toExpression(bind.expression) + ' AS ' + variableToString(bind.variable) + ')';\n};\n\nGenerator.prototype.optional = function (optional) {\n return 'OPTIONAL ' + this.group(optional);\n};\n\nGenerator.prototype.union = function (union) {\n return mapJoin(union.patterns, this._newline + 'UNION' + this._newline, function (p) { return this.group(p, true); }, this);\n};\n\nGenerator.prototype.minus = function (minus) {\n return 'MINUS ' + this.group(minus);\n};\n\nGenerator.prototype.values = function (valuesList) {\n // Gather unique keys\n var keys = Object.keys(valuesList.values.reduce(function (keyHash, values) {\n for (var key in values) keyHash[key] = true;\n return keyHash;\n }, {}));\n // Check whether simple syntax can be used\n var lparen, rparen;\n if (keys.length === 1) {\n lparen = rparen = '';\n } else {\n lparen = '(';\n rparen = ')';\n }\n // Create value rows\n return 'VALUES ' + lparen + keys.join(' ') + rparen + ' {' + this._newline +\n mapJoin(valuesList.values, this._newline, function (values) {\n return ' ' + lparen + mapJoin(keys, undefined, function (key) {\n return values[key] ? this.toEntity(values[key]) : 'UNDEF';\n }, this) + rparen;\n }, this) + this._newline + '}';\n};\n\nGenerator.prototype.service = function (service) {\n return 'SERVICE ' + (service.silent ? 'SILENT ' : '') + this.toEntity(service.name) + ' ' +\n this.group(service);\n};\n\n// Converts the parsed expression object into a SPARQL expression\nGenerator.prototype.toExpression = function (expr) {\n if (isTerm(expr)) {\n return this.toEntity(expr);\n }\n switch (expr.type.toLowerCase()) {\n case 'aggregate':\n return expr.aggregation.toUpperCase() +\n '(' + (expr.distinct ? 'DISTINCT ' : '') + this.toExpression(expr.expression) +\n (typeof expr.separator === 'string' ? '; SEPARATOR = ' + '\"' + expr.separator.replace(escape, escapeReplacer) + '\"' : '') + ')';\n case 'functioncall':\n return this.toEntity(expr.function) + '(' + mapJoin(expr.args, ', ', this.toExpression, this) + ')';\n case 'operation':\n var operator = expr.operator.toUpperCase(), args = expr.args || [];\n switch (expr.operator.toLowerCase()) {\n // Infix operators\n case '<':\n case '>':\n case '>=':\n case '<=':\n case '&&':\n case '||':\n case '=':\n case '!=':\n case '+':\n case '-':\n case '*':\n case '/':\n return (isTerm(args[0]) ? this.toEntity(args[0]) : '(' + this.toExpression(args[0]) + ')') +\n ' ' + operator + ' ' +\n (isTerm(args[1]) ? this.toEntity(args[1]) : '(' + this.toExpression(args[1]) + ')');\n // Unary operators\n case '!':\n return '!(' + this.toExpression(args[0]) + ')';\n case 'uplus':\n return '+(' + this.toExpression(args[0]) + ')';\n case 'uminus':\n return '-(' + this.toExpression(args[0]) + ')';\n // IN and NOT IN\n case 'notin':\n operator = 'NOT IN';\n case 'in':\n return this.toExpression(args[0]) + ' ' + operator +\n '(' + (isString(args[1]) ? args[1] : mapJoin(args[1], ', ', this.toExpression, this)) + ')';\n // EXISTS and NOT EXISTS\n case 'notexists':\n operator = 'NOT EXISTS';\n case 'exists':\n return operator + ' ' + this.group(args[0], true);\n // Other expressions\n default:\n return operator + '(' + mapJoin(args, ', ', this.toExpression, this) + ')';\n }\n default:\n throw new Error('Unknown expression type: ' + expr.type);\n }\n};\n\n// Converts the parsed entity (or property path) into a SPARQL entity\nGenerator.prototype.toEntity = function (value) {\n if (isTerm(value)) {\n switch (value.termType) {\n // variable, * selector, or blank node\n case 'Wildcard':\n return '*';\n case 'Variable':\n return variableToString(value);\n case 'BlankNode':\n return '_:' + value.value;\n // literal\n case 'Literal':\n var lexical = value.value || '', language = value.language || '', datatype = value.datatype;\n value = '\"' + lexical.replace(escape, escapeReplacer) + '\"';\n if (language){\n value += '@' + language;\n } else if (datatype) {\n // Abbreviate literals when possible\n if (!this._explicitDatatype) {\n switch (datatype.value) {\n case XSD_STRING:\n return value;\n case XSD_INTEGER:\n if (/^\\d+$/.test(lexical))\n // Add space to avoid confusion with decimals in broken parsers\n return lexical + ' ';\n }\n }\n value += '^^' + this.encodeIRI(datatype.value);\n }\n return value;\n case 'Quad':\n if (!this._sparqlStar)\n throw new Error('SPARQL* support is not enabled');\n\n if (value.graph && value.graph.termType !== \"DefaultGraph\") {\n return '<< GRAPH ' +\n this.toEntity(value.graph) +\n ' { ' +\n this.toEntity(value.subject) + ' ' +\n this.toEntity(value.predicate) + ' ' +\n this.toEntity(value.object) +\n ' } ' +\n ' >>'\n }\n else {\n return (\n '<< ' +\n this.toEntity(value.subject) + ' ' +\n this.toEntity(value.predicate) + ' ' +\n this.toEntity(value.object) +\n ' >>'\n );\n }\n // IRI\n default:\n return this.encodeIRI(value.value);\n }\n }\n // property path\n else {\n var items = value.items.map(this.toEntity, this), path = value.pathType;\n switch (path) {\n // prefix operator\n case '^':\n case '!':\n return path + items[0];\n // postfix operator\n case '*':\n case '+':\n case '?':\n return '(' + items[0] + path + ')';\n // infix operator\n default:\n return '(' + items.join(path) + ')';\n }\n }\n};\nvar escape = /[\"\\\\\\t\\n\\r\\b\\f]/g,\n escapeReplacer = function (c) { return escapeReplacements[c]; },\n escapeReplacements = { '\\\\': '\\\\\\\\', '\"': '\\\\\"', '\\t': '\\\\t',\n '\\n': '\\\\n', '\\r': '\\\\r', '\\b': '\\\\b', '\\f': '\\\\f' };\n\n// Represent the IRI, as a prefixed name when possible\nGenerator.prototype.encodeIRI = function (iri) {\n var prefixMatch = this._prefixRegex.exec(iri);\n if (prefixMatch) {\n var prefix = this._prefixByIri[prefixMatch[1]];\n this._usedPrefixes[prefix] = true;\n return prefix + ':' + prefixMatch[2];\n }\n return '<' + iri + '>';\n};\n\n// Converts the parsed update object into a SPARQL update clause\nGenerator.prototype.toUpdate = function (update) {\n switch (update.type || update.updateType) {\n case 'load':\n return 'LOAD' + (update.source ? ' ' + this.toEntity(update.source) : '') +\n (update.destination ? ' INTO GRAPH ' + this.toEntity(update.destination) : '');\n case 'insert':\n return 'INSERT DATA ' + this.group(update.insert, true);\n case 'delete':\n return 'DELETE DATA ' + this.group(update.delete, true);\n case 'deletewhere':\n return 'DELETE WHERE ' + this.group(update.delete, true);\n case 'insertdelete':\n return (update.graph ? 'WITH ' + this.toEntity(update.graph) + this._newline : '') +\n (update.delete.length ? 'DELETE ' + this.group(update.delete, true) + this._newline : '') +\n (update.insert.length ? 'INSERT ' + this.group(update.insert, true) + this._newline : '') +\n (update.using ? this.graphs('USING ', update.using.default) : '') +\n (update.using ? this.graphs('USING NAMED ', update.using.named) : '') +\n 'WHERE ' + this.group(update.where, true);\n case 'add':\n case 'copy':\n case 'move':\n return update.type.toUpperCase()+ ' ' + (update.silent ? 'SILENT ' : '') + (update.source.default ? 'DEFAULT' : this.toEntity(update.source.name)) +\n ' TO ' + this.toEntity(update.destination.name);\n case 'create':\n case 'clear':\n case 'drop':\n return update.type.toUpperCase() + (update.silent ? ' SILENT ' : ' ') + (\n update.graph.default ? 'DEFAULT' :\n update.graph.named ? 'NAMED' :\n update.graph.all ? 'ALL' :\n ('GRAPH ' + this.toEntity(update.graph.name))\n );\n default:\n throw new Error('Unknown update query type: ' + update.type);\n }\n};\n\n// Indents each line of the string\nGenerator.prototype.indent = function(text) { return text.replace(/^/gm, this._indent); }\n\nfunction variableToString(variable){\n return '?' + variable.value;\n}\n\n// Checks whether the object is a string\nfunction isString(object) { return typeof object === 'string'; }\n\n// Checks whether the object is a Term\nfunction isTerm(object) {\n return typeof object.termType === 'string';\n}\n\n// Checks whether term1 and term2 are equivalent without `.equals()` prototype method\nfunction equalTerms(term1, term2) {\n if (!term1 || !isTerm(term1)) { return false; }\n if (!term2 || !isTerm(term2)) { return false; }\n if (term1.termType !== term2.termType) { return false; }\n switch (term1.termType) {\n case 'Literal':\n return term1.value === term2.value\n && term1.language === term2.language\n && equalTerms(term1.datatype, term2.datatype);\n case 'Quad':\n return equalTerms(term1.subject, term2.subject)\n && equalTerms(term1.predicate, term2.predicate)\n && equalTerms(term1.object, term2.object)\n && equalTerms(term1.graph, term2.graph);\n default:\n return term1.value === term2.value;\n }\n}\n\n// Maps the array with the given function, and joins the results using the separator\nfunction mapJoin(array, sep, func, self) {\n return array.map(func, self).join(isString(sep) ? sep : ' ');\n}\n\n/**\n * @param options {\n * allPrefixes: boolean,\n * indentation: string,\n * newline: string\n * }\n */\nmodule.exports = function SparqlGenerator(options = {}) {\n return {\n stringify: function (query) {\n var currentOptions = Object.create(options);\n currentOptions.prefixes = query.prefixes;\n return new Generator(currentOptions).toQuery(query);\n },\n createGenerator: function() { return new Generator(options); }\n };\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar SparqlParser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,12,13,15,16,24,32,36,41,45,100,110,113,115,116,123,126,131,197,224,229,308,329,330,331,332,333],$V1=[2,247],$V2=[100,110,113,115,116,123,126,131,329,330,331,332,333],$V3=[2,409],$V4=[1,18],$V5=[1,27],$V6=[13,16,45,197,224,229,308],$V7=[28,29,53],$V8=[28,53],$V9=[1,42],$Va=[1,45],$Vb=[1,41],$Vc=[1,44],$Vd=[123,126],$Ve=[1,67],$Vf=[39,45,87],$Vg=[13,16,45,197,224,308],$Vh=[1,87],$Vi=[2,281],$Vj=[1,86],$Vk=[13,16,45,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vl=[6,28,29,53,63,70,73,81,83,85],$Vm=[6,13,16,28,29,53,63,70,73,81,83,85,87,308],$Vn=[6,13,16,28,29,45,53,63,70,73,81,82,83,85,87,89,197,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314],$Vo=[6,13,16,28,29,31,39,45,47,48,53,63,70,73,81,82,83,85,87,89,109,112,121,123,126,128,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,337,338,340,341,342,343,344,345,346],$Vp=[13,16,308],$Vq=[112,132,327,334],$Vr=[13,16,112,132,308],$Vs=[1,111],$Vt=[1,117],$Vu=[112,132,327,328,334],$Vv=[13,16,112,132,308,328],$Vw=[28,29,45,53,87],$Vx=[1,138],$Vy=[1,151],$Vz=[1,128],$VA=[1,127],$VB=[1,129],$VC=[1,140],$VD=[1,141],$VE=[1,142],$VF=[1,143],$VG=[1,144],$VH=[1,145],$VI=[1,147],$VJ=[1,148],$VK=[2,457],$VL=[1,158],$VM=[1,159],$VN=[1,160],$VO=[1,152],$VP=[1,153],$VQ=[1,156],$VR=[1,171],$VS=[1,172],$VT=[1,173],$VU=[1,174],$VV=[1,175],$VW=[1,176],$VX=[1,167],$VY=[1,168],$VZ=[1,169],$V_=[1,170],$V$=[1,157],$V01=[1,166],$V11=[1,161],$V21=[1,162],$V31=[1,163],$V41=[1,164],$V51=[1,165],$V61=[6,13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],$V71=[1,195],$V81=[6,31,73,81,83,85],$V91=[2,285],$Va1=[1,199],$Vb1=[1,201],$Vc1=[6,31,70,73,81,83,85],$Vd1=[2,283],$Ve1=[1,207],$Vf1=[1,218],$Vg1=[1,223],$Vh1=[1,219],$Vi1=[1,225],$Vj1=[1,226],$Vk1=[1,224],$Vl1=[6,63,70,73,81,83,85],$Vm1=[1,236],$Vn1=[2,334],$Vo1=[1,243],$Vp1=[1,241],$Vq1=[6,193],$Vr1=[2,349],$Vs1=[2,339],$Vt1=[28,128],$Vu1=[47,48,193,272],$Vv1=[47,48,193,242,272],$Vw1=[47,48,193,242,246,272],$Vx1=[47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,341,342,343,344,345,346],$Vy1=[39,47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,338,341,342,343,344,345,346],$Vz1=[1,271],$VA1=[1,270],$VB1=[6,13,16,29,31,39,45,47,48,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,338,341,342,343,344,345,346,347,348,349,350,351],$VC1=[1,281],$VD1=[1,280],$VE1=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],$VF1=[45,89],$VG1=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],$VH1=[13,16,31,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$VI1=[31,89],$VJ1=[48,87],$VK1=[6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338],$VL1=[6,13,16,39,45,48,82,87,89,231,263,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338,340],$VM1=[1,313],$VN1=[6,85],$VO1=[6,31,81,83,85],$VP1=[2,361],$VQ1=[2,353],$VR1=[1,343],$VS1=[31,112,335],$VT1=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$VU1=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335],$VV1=[6,109,193],$VW1=[31,112],$VX1=[13,16,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],$VY1=[1,390],$VZ1=[1,391],$V_1=[13,16,87,197,308,314],$V$1=[13,16,39,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],$V02=[1,417],$V12=[1,418],$V22=[13,16,48,197,229,308],$V32=[6,31,85],$V42=[6,13,16,31,45,73,81,83,85,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$V52=[6,13,16,29,31,45,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,231,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,346,347,348,349,350,351],$V62=[29,31,85,112,159,160,161,163,164],$V72=[1,443],$V82=[1,444],$V92=[1,449],$Va2=[31,112,193,232,318,335],$Vb2=[13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vc2=[13,16,31,45,48,82,87,89,112,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Vd2=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Ve2=[13,16,31,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$Vf2=[31,45],$Vg2=[1,507],$Vh2=[1,508],$Vi2=[6,13,16,29,31,39,45,47,48,63,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,336,338,341,342,343,344,345,346,347,348,349,350,351],$Vj2=[29,31,85,112,159,160,161,163,164,335],$Vk2=[6,13,16,31,45,70,73,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$Vl2=[13,16,31,45,48,82,87,89,112,193,197,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Vm2=[2,352],$Vn2=[13,16,197,308,314],$Vo2=[1,565],$Vp2=[6,13,16,31,45,76,78,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$Vq2=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vr2=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],$Vs2=[13,16,87,308],$Vt2=[2,364],$Vu2=[29,31,85,112,159,160,161,163,164,193,232,318,335],$Vv2=[31,112,193,232,272,318,335],$Vw2=[2,359],$Vx2=[13,16,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$Vy2=[29,31,85,112,159,160,161,163,164,193,232,272,318,335],$Vz2=[13,16,31,45,82,87,89,112,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$VA2=[2,347];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"QueryOrUpdate\":3,\"Prologue\":4,\"QueryOrUpdate_group0\":5,\"EOF\":6,\"Query\":7,\"Qry\":8,\"Query_option0\":9,\"Prologue_repetition0\":10,\"BaseDecl\":11,\"BASE\":12,\"IRIREF\":13,\"PrefixDecl\":14,\"PREFIX\":15,\"PNAME_NS\":16,\"SelectClauseWildcard\":17,\"Qry_repetition0\":18,\"WhereClause\":19,\"SolutionModifierNoGroup\":20,\"SelectClauseVars\":21,\"Qry_repetition1\":22,\"SolutionModifier\":23,\"CONSTRUCT\":24,\"ConstructTemplate\":25,\"Qry_repetition2\":26,\"Qry_repetition3\":27,\"WHERE\":28,\"{\":29,\"Qry_option0\":30,\"}\":31,\"DESCRIBE\":32,\"Qry_group0\":33,\"Qry_repetition4\":34,\"Qry_option1\":35,\"ASK\":36,\"Qry_repetition5\":37,\"SelectClauseBase\":38,\"*\":39,\"SelectClauseVars_repetition_plus0\":40,\"SELECT\":41,\"SelectClauseBase_option0\":42,\"SelectClauseItem\":43,\"Var\":44,\"(\":45,\"Expression\":46,\"AS\":47,\")\":48,\"SubSelect\":49,\"SubSelect_option0\":50,\"SubSelect_option1\":51,\"DatasetClause\":52,\"FROM\":53,\"DatasetClause_option0\":54,\"iri\":55,\"WhereClause_option0\":56,\"GroupGraphPattern\":57,\"SolutionModifier_option0\":58,\"SolutionModifierNoGroup_option0\":59,\"SolutionModifierNoGroup_option1\":60,\"SolutionModifierNoGroup_option2\":61,\"GroupClause\":62,\"GROUP\":63,\"BY\":64,\"GroupClause_repetition_plus0\":65,\"GroupCondition\":66,\"BuiltInCall\":67,\"FunctionCall\":68,\"HavingClause\":69,\"HAVING\":70,\"HavingClause_repetition_plus0\":71,\"OrderClause\":72,\"ORDER\":73,\"OrderClause_repetition_plus0\":74,\"OrderCondition\":75,\"ASC\":76,\"BrackettedExpression\":77,\"DESC\":78,\"Constraint\":79,\"LimitOffsetClauses\":80,\"LIMIT\":81,\"INTEGER\":82,\"OFFSET\":83,\"ValuesClause\":84,\"VALUES\":85,\"InlineData\":86,\"VAR\":87,\"InlineData_repetition0\":88,\"NIL\":89,\"InlineData_repetition1\":90,\"InlineData_repetition_plus2\":91,\"InlineData_repetition3\":92,\"DataBlock\":93,\"DataBlockValueList\":94,\"DataBlockValueList_repetition_plus0\":95,\"Update\":96,\"Update_repetition0\":97,\"Update1\":98,\"Update_option0\":99,\"LOAD\":100,\"Update1_option0\":101,\"Update1_option1\":102,\"Update1_group0\":103,\"Update1_option2\":104,\"GraphRefAll\":105,\"Update1_group1\":106,\"Update1_option3\":107,\"GraphOrDefault\":108,\"TO\":109,\"CREATE\":110,\"Update1_option4\":111,\"GRAPH\":112,\"INSERTDATA\":113,\"QuadPattern\":114,\"DELETEDATA\":115,\"DELETEWHERE\":116,\"Update1_option5\":117,\"InsertDeleteClause\":118,\"Update1_repetition0\":119,\"IntoGraphClause\":120,\"INTO\":121,\"GraphRef\":122,\"DELETE\":123,\"InsertDeleteClause_option0\":124,\"InsertClause\":125,\"INSERT\":126,\"UsingClause\":127,\"USING\":128,\"UsingClause_option0\":129,\"WithClause\":130,\"WITH\":131,\"DEFAULT\":132,\"GraphOrDefault_option0\":133,\"GraphRefAll_group0\":134,\"Quads\":135,\"Quads_option0\":136,\"Quads_repetition0\":137,\"QuadsNotTriples\":138,\"VarOrIri\":139,\"QuadsNotTriples_option0\":140,\"QuadsNotTriples_option1\":141,\"QuadsNotTriples_option2\":142,\"TriplesTemplate\":143,\"TriplesTemplate_repetition0\":144,\"TriplesSameSubject\":145,\"TriplesTemplate_option0\":146,\"GroupGraphPatternSub\":147,\"GroupGraphPatternSub_option0\":148,\"GroupGraphPatternSub_repetition0\":149,\"GroupGraphPatternSubTail\":150,\"GraphPatternNotTriples\":151,\"GroupGraphPatternSubTail_option0\":152,\"GroupGraphPatternSubTail_option1\":153,\"TriplesBlock\":154,\"TriplesBlock_repetition0\":155,\"TriplesSameSubjectPath\":156,\"TriplesBlock_option0\":157,\"GroupOrUnionGraphPattern\":158,\"OPTIONAL\":159,\"MINUS\":160,\"SERVICE\":161,\"GraphPatternNotTriples_option0\":162,\"FILTER\":163,\"BIND\":164,\"InlineDataOneVar\":165,\"InlineDataFull\":166,\"InlineDataOneVar_repetition0\":167,\"InlineDataFull_repetition0\":168,\"InlineDataFull_repetition_plus1\":169,\"InlineDataFull_repetition2\":170,\"DataBlockValue\":171,\"Literal\":172,\"QuotedTriple\":173,\"UNDEF\":174,\"GroupOrUnionGraphPattern_repetition0\":175,\"ArgList\":176,\"ArgList_option0\":177,\"ArgList_repetition0\":178,\"ExpressionList\":179,\"ExpressionList_repetition0\":180,\"ConstructTemplate_option0\":181,\"ConstructTriples\":182,\"ConstructTriples_repetition0\":183,\"ConstructTriples_option0\":184,\"VarOrTermOrQuotedTP\":185,\"PropertyListNotEmpty\":186,\"TriplesNode\":187,\"PropertyList\":188,\"PropertyList_option0\":189,\"VerbObjectList\":190,\"PropertyListNotEmpty_repetition0\":191,\"SemiOptionalVerbObjectList\":192,\";\":193,\"SemiOptionalVerbObjectList_option0\":194,\"Verb\":195,\"ObjectList\":196,\"a\":197,\"ObjectList_repetition0\":198,\"Object\":199,\"GraphNode\":200,\"Object_option0\":201,\"PropertyListPathNotEmpty\":202,\"TriplesNodePath\":203,\"TriplesSameSubjectPath_option0\":204,\"O\":205,\"PropertyListPathNotEmpty_repetition0\":206,\"PropertyListPathNotEmptyTail\":207,\"O_group0\":208,\"ObjectListPath\":209,\"ObjectListPath_repetition0\":210,\"ObjectPath\":211,\"GraphNodePath\":212,\"ObjectPath_option0\":213,\"Path\":214,\"Path_repetition0\":215,\"PathSequence\":216,\"PathSequence_repetition0\":217,\"PathEltOrInverse\":218,\"PathElt\":219,\"PathPrimary\":220,\"PathElt_option0\":221,\"PathEltOrInverse_option0\":222,\"IriOrA\":223,\"!\":224,\"PathNegatedPropertySet\":225,\"PathOneInPropertySet\":226,\"PathNegatedPropertySet_repetition0\":227,\"PathNegatedPropertySet_option0\":228,\"^\":229,\"TriplesNode_repetition_plus0\":230,\"[\":231,\"]\":232,\"TriplesNodePath_repetition_plus0\":233,\"VarOrTermOrQuotedTPExpr\":234,\"VarOrTerm\":235,\"GraphTerm\":236,\"BlankNode\":237,\"ConditionalOrExpression\":238,\"ConditionalAndExpression\":239,\"ConditionalOrExpression_repetition0\":240,\"ConditionalOrExpressionTail\":241,\"||\":242,\"RelationalExpression\":243,\"ConditionalAndExpression_repetition0\":244,\"ConditionalAndExpressionTail\":245,\"&&\":246,\"NumericExpression\":247,\"RelationalExpression_group0\":248,\"RelationalExpression_option0\":249,\"IN\":250,\"MultiplicativeExpression\":251,\"NumericExpression_repetition0\":252,\"AdditiveExpressionTail\":253,\"AdditiveExpressionTail_group0\":254,\"NumericLiteralPositive\":255,\"AdditiveExpressionTail_repetition0\":256,\"NumericLiteralNegative\":257,\"AdditiveExpressionTail_repetition1\":258,\"UnaryExpression\":259,\"MultiplicativeExpression_repetition0\":260,\"MultiplicativeExpressionTail\":261,\"MultiplicativeExpressionTail_group0\":262,\"+\":263,\"PrimaryExpression\":264,\"-\":265,\"ExprQuotedTP\":266,\"Aggregate\":267,\"FUNC_ARITY0\":268,\"FUNC_ARITY1\":269,\"FUNC_ARITY1_SPARQL_STAR\":270,\"FUNC_ARITY2\":271,\",\":272,\"FUNC_ARITY3\":273,\"FUNC_ARITY3_SPARQL_STAR\":274,\"BuiltInCall_group0\":275,\"BOUND\":276,\"BNODE\":277,\"BuiltInCall_option0\":278,\"EXISTS\":279,\"COUNT\":280,\"Aggregate_option0\":281,\"Aggregate_group0\":282,\"FUNC_AGGREGATE\":283,\"Aggregate_option1\":284,\"GROUP_CONCAT\":285,\"Aggregate_option2\":286,\"Aggregate_option3\":287,\"GroupConcatSeparator\":288,\"SEPARATOR\":289,\"=\":290,\"String\":291,\"LANGTAG\":292,\"^^\":293,\"DECIMAL\":294,\"DOUBLE\":295,\"BOOLEAN\":296,\"INTEGER_POSITIVE\":297,\"DECIMAL_POSITIVE\":298,\"DOUBLE_POSITIVE\":299,\"INTEGER_NEGATIVE\":300,\"DECIMAL_NEGATIVE\":301,\"DOUBLE_NEGATIVE\":302,\"STRING_LITERAL1\":303,\"STRING_LITERAL2\":304,\"STRING_LITERAL_LONG1\":305,\"STRING_LITERAL_LONG2\":306,\"PrefixedName\":307,\"PNAME_LN\":308,\"BLANK_NODE_LABEL\":309,\"ANON\":310,\"QuotedTP\":311,\"<<\":312,\"qtSubjectOrObject\":313,\">>\":314,\"DataValueTerm\":315,\"AnnotationPattern\":316,\"{|\":317,\"|}\":318,\"AnnotationPatternPath\":319,\"ExprVarOrTerm\":320,\"QueryOrUpdate_group0_option0\":321,\"Prologue_repetition0_group0\":322,\"Qry_group0_repetition_plus0\":323,\"SelectClauseBase_option0_group0\":324,\"DISTINCT\":325,\"REDUCED\":326,\"NAMED\":327,\"SILENT\":328,\"CLEAR\":329,\"DROP\":330,\"ADD\":331,\"MOVE\":332,\"COPY\":333,\"ALL\":334,\".\":335,\"UNION\":336,\"|\":337,\"/\":338,\"PathElt_option0_group0\":339,\"?\":340,\"!=\":341,\"<\":342,\">\":343,\"<=\":344,\">=\":345,\"NOT\":346,\"CONCAT\":347,\"COALESCE\":348,\"SUBSTR\":349,\"REGEX\":350,\"REPLACE\":351,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"EOF\",12:\"BASE\",13:\"IRIREF\",15:\"PREFIX\",16:\"PNAME_NS\",24:\"CONSTRUCT\",28:\"WHERE\",29:\"{\",31:\"}\",32:\"DESCRIBE\",36:\"ASK\",39:\"*\",41:\"SELECT\",45:\"(\",47:\"AS\",48:\")\",53:\"FROM\",63:\"GROUP\",64:\"BY\",70:\"HAVING\",73:\"ORDER\",76:\"ASC\",78:\"DESC\",81:\"LIMIT\",82:\"INTEGER\",83:\"OFFSET\",85:\"VALUES\",87:\"VAR\",89:\"NIL\",100:\"LOAD\",109:\"TO\",110:\"CREATE\",112:\"GRAPH\",113:\"INSERTDATA\",115:\"DELETEDATA\",116:\"DELETEWHERE\",121:\"INTO\",123:\"DELETE\",126:\"INSERT\",128:\"USING\",131:\"WITH\",132:\"DEFAULT\",159:\"OPTIONAL\",160:\"MINUS\",161:\"SERVICE\",163:\"FILTER\",164:\"BIND\",174:\"UNDEF\",193:\";\",197:\"a\",224:\"!\",229:\"^\",231:\"[\",232:\"]\",242:\"||\",246:\"&&\",250:\"IN\",263:\"+\",265:\"-\",268:\"FUNC_ARITY0\",269:\"FUNC_ARITY1\",270:\"FUNC_ARITY1_SPARQL_STAR\",271:\"FUNC_ARITY2\",272:\",\",273:\"FUNC_ARITY3\",274:\"FUNC_ARITY3_SPARQL_STAR\",276:\"BOUND\",277:\"BNODE\",279:\"EXISTS\",280:\"COUNT\",283:\"FUNC_AGGREGATE\",285:\"GROUP_CONCAT\",289:\"SEPARATOR\",290:\"=\",292:\"LANGTAG\",293:\"^^\",294:\"DECIMAL\",295:\"DOUBLE\",296:\"BOOLEAN\",297:\"INTEGER_POSITIVE\",298:\"DECIMAL_POSITIVE\",299:\"DOUBLE_POSITIVE\",300:\"INTEGER_NEGATIVE\",301:\"DECIMAL_NEGATIVE\",302:\"DOUBLE_NEGATIVE\",303:\"STRING_LITERAL1\",304:\"STRING_LITERAL2\",305:\"STRING_LITERAL_LONG1\",306:\"STRING_LITERAL_LONG2\",308:\"PNAME_LN\",309:\"BLANK_NODE_LABEL\",310:\"ANON\",312:\"<<\",314:\">>\",317:\"{|\",318:\"|}\",325:\"DISTINCT\",326:\"REDUCED\",327:\"NAMED\",328:\"SILENT\",329:\"CLEAR\",330:\"DROP\",331:\"ADD\",332:\"MOVE\",333:\"COPY\",334:\"ALL\",335:\".\",336:\"UNION\",337:\"|\",338:\"/\",340:\"?\",341:\"!=\",342:\"<\",343:\">\",344:\"<=\",345:\">=\",346:\"NOT\",347:\"CONCAT\",348:\"COALESCE\",349:\"SUBSTR\",350:\"REGEX\",351:\"REPLACE\"},\nproductions_: [0,[3,3],[7,2],[4,1],[11,2],[14,3],[8,4],[8,4],[8,5],[8,7],[8,5],[8,4],[17,2],[21,2],[38,2],[43,1],[43,5],[49,4],[49,4],[52,3],[19,2],[23,2],[20,3],[62,3],[66,1],[66,1],[66,3],[66,5],[66,1],[69,2],[72,3],[75,2],[75,2],[75,1],[75,1],[80,2],[80,2],[80,4],[80,4],[84,2],[86,4],[86,4],[86,6],[86,2],[94,3],[96,3],[98,4],[98,3],[98,5],[98,4],[98,2],[98,2],[98,2],[98,5],[120,2],[118,3],[118,1],[125,2],[127,3],[130,2],[108,1],[108,2],[122,2],[105,1],[105,1],[114,3],[135,2],[138,7],[143,3],[57,3],[57,3],[147,2],[150,3],[154,3],[151,1],[151,2],[151,2],[151,3],[151,4],[151,2],[151,6],[151,1],[93,1],[93,1],[165,4],[166,4],[166,6],[171,1],[171,1],[171,1],[171,1],[158,2],[79,1],[79,1],[79,1],[68,2],[176,1],[176,5],[179,1],[179,4],[25,3],[182,3],[145,2],[145,2],[188,1],[186,2],[192,2],[190,2],[195,1],[195,1],[196,2],[199,2],[156,2],[156,2],[202,2],[207,1],[207,2],[205,2],[209,2],[211,2],[214,2],[216,2],[219,2],[218,2],[220,1],[220,2],[220,3],[225,1],[225,1],[225,4],[226,1],[226,2],[187,3],[187,3],[203,3],[203,3],[200,1],[200,1],[212,1],[212,1],[234,1],[235,1],[235,1],[139,1],[139,1],[44,1],[236,1],[236,1],[236,1],[236,1],[46,1],[238,2],[241,2],[239,2],[245,2],[243,1],[243,3],[243,4],[247,2],[253,2],[253,2],[253,2],[251,2],[261,2],[259,2],[259,2],[259,2],[259,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[77,3],[67,1],[67,2],[67,4],[67,4],[67,6],[67,8],[67,8],[67,2],[67,4],[67,2],[67,4],[67,3],[267,5],[267,5],[267,6],[288,4],[172,1],[172,2],[172,3],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[255,1],[255,1],[255,1],[257,1],[257,1],[257,1],[291,1],[291,1],[291,1],[291,1],[55,1],[55,1],[307,1],[307,1],[237,1],[237,1],[311,5],[173,5],[313,1],[313,1],[313,1],[313,1],[313,1],[315,1],[315,1],[315,1],[185,1],[185,1],[185,1],[316,3],[319,3],[266,5],[320,1],[320,1],[320,1],[223,1],[223,1],[321,0],[321,1],[5,1],[5,1],[5,1],[9,0],[9,1],[322,1],[322,1],[10,0],[10,2],[18,0],[18,2],[22,0],[22,2],[26,0],[26,2],[27,0],[27,2],[30,0],[30,1],[323,1],[323,2],[33,1],[33,1],[34,0],[34,2],[35,0],[35,1],[37,0],[37,2],[40,1],[40,2],[324,1],[324,1],[42,0],[42,1],[50,0],[50,1],[51,0],[51,1],[54,0],[54,1],[56,0],[56,1],[58,0],[58,1],[59,0],[59,1],[60,0],[60,1],[61,0],[61,1],[65,1],[65,2],[71,1],[71,2],[74,1],[74,2],[88,0],[88,2],[90,0],[90,2],[91,1],[91,2],[92,0],[92,2],[95,1],[95,2],[97,0],[97,4],[99,0],[99,2],[101,0],[101,1],[102,0],[102,1],[103,1],[103,1],[104,0],[104,1],[106,1],[106,1],[106,1],[107,0],[107,1],[111,0],[111,1],[117,0],[117,1],[119,0],[119,2],[124,0],[124,1],[129,0],[129,1],[133,0],[133,1],[134,1],[134,1],[134,1],[136,0],[136,1],[137,0],[137,2],[140,0],[140,1],[141,0],[141,1],[142,0],[142,1],[144,0],[144,3],[146,0],[146,1],[148,0],[148,1],[149,0],[149,2],[152,0],[152,1],[153,0],[153,1],[155,0],[155,3],[157,0],[157,1],[162,0],[162,1],[167,0],[167,2],[168,0],[168,2],[169,1],[169,2],[170,0],[170,2],[175,0],[175,3],[177,0],[177,1],[178,0],[178,3],[180,0],[180,3],[181,0],[181,1],[183,0],[183,3],[184,0],[184,1],[189,0],[189,1],[191,0],[191,2],[194,0],[194,1],[198,0],[198,3],[201,0],[201,1],[204,0],[204,1],[206,0],[206,2],[208,1],[208,1],[210,0],[210,3],[213,0],[213,1],[215,0],[215,3],[217,0],[217,3],[339,1],[339,1],[339,1],[221,0],[221,1],[222,0],[222,1],[227,0],[227,3],[228,0],[228,1],[230,1],[230,2],[233,1],[233,2],[240,0],[240,2],[244,0],[244,2],[248,1],[248,1],[248,1],[248,1],[248,1],[248,1],[249,0],[249,1],[252,0],[252,2],[254,1],[254,1],[256,0],[256,2],[258,0],[258,2],[260,0],[260,2],[262,1],[262,1],[275,1],[275,1],[275,1],[275,1],[275,1],[278,0],[278,1],[281,0],[281,1],[282,1],[282,1],[284,0],[284,1],[286,0],[286,1],[287,0],[287,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n\n // Set parser options\n $$[$0-1] = $$[$0-1] || {};\n if (Parser.base)\n $$[$0-1].base = Parser.base;\n Parser.base = '';\n $$[$0-1].prefixes = Parser.prefixes;\n Parser.prefixes = null;\n\n if (Parser.pathOnly) {\n if ($$[$0-1].type === 'path' || 'termType' in $$[$0-1]) {\n return $$[$0-1]\n }\n throw new Error('Received full SPARQL query in path only mode');\n } else if ($$[$0-1].type === 'path' || 'termType' in $$[$0-1]) {\n throw new Error('Received only path in full SPARQL mode');\n }\n\n // Ensure that blank nodes are not used across INSERT DATA clauses\n if ($$[$0-1].type === 'update') {\n const insertBnodesAll = {};\n for (const update of $$[$0-1].updates) {\n if (update.updateType === 'insert') {\n // Collect bnodes for current insert clause\n const insertBnodes = {};\n for (const operation of update.insert) {\n if (operation.type === 'bgp' || operation.type === 'graph') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'BlankNode')\n insertBnodes[triple.subject.value] = true;\n if (triple.predicate.termType === 'BlankNode')\n insertBnodes[triple.predicate.value] = true;\n if (triple.object.termType === 'BlankNode')\n insertBnodes[triple.object.value] = true;\n }\n }\n }\n\n // Check if the inserting bnodes don't clash with bnodes from a previous insert clause\n for (const bnode of Object.keys(insertBnodes)) {\n if (insertBnodesAll[bnode]) {\n throw new Error('Detected reuse blank node across different INSERT DATA clauses');\n }\n insertBnodesAll[bnode] = true;\n }\n }\n }\n }\n return $$[$0-1];\n \nbreak;\ncase 2:\nthis.$ = { ...$$[$0-1], ...$$[$0], type: 'query' };\nbreak;\ncase 4:\n\n Parser.base = resolveIRI($$[$0])\n \nbreak;\ncase 5:\n\n if (!Parser.prefixes) Parser.prefixes = {};\n $$[$0-1] = $$[$0-1].substr(0, $$[$0-1].length - 1);\n $$[$0] = resolveIRI($$[$0]);\n Parser.prefixes[$$[$0-1]] = $$[$0];\n \nbreak;\ncase 6:\nthis.$ = { ...$$[$0-3], ...groupDatasets($$[$0-2]), ...$$[$0-1], ...$$[$0] };\nbreak;\ncase 7:\n\n // Check for projection of ungrouped variable\n if (!Parser.skipValidation) {\n const counts = flatten($$[$0-3].variables.map(vars => getAggregatesOfExpression(vars.expression)))\n .some(agg => agg.aggregation === \"count\" && !(agg.expression instanceof Wildcard));\n if (counts || $$[$0].group) {\n for (const selectVar of $$[$0-3].variables) {\n if (selectVar.termType === \"Variable\") {\n if (!$$[$0].group || !$$[$0].group.map(groupVar => getExpressionId(groupVar)).includes(getExpressionId(selectVar))) {\n throw Error(\"Projection of ungrouped variable (?\" + getExpressionId(selectVar) + \")\");\n }\n } else if (getAggregatesOfExpression(selectVar.expression).length === 0) {\n const usedVars = getVariablesFromExpression(selectVar.expression);\n for (const usedVar of usedVars) {\n if (!$$[$0].group || !$$[$0].group.map || !$$[$0].group.map(groupVar => getExpressionId(groupVar)).includes(getExpressionId(usedVar))) {\n throw Error(\"Use of ungrouped variable in projection of operation (?\" + getExpressionId(usedVar) + \")\");\n }\n }\n }\n }\n }\n }\n // Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = $$[$0-1].where.filter(w => w.type === \"query\");\n if (subqueries.length > 0) {\n const selectedVarIds = $$[$0-3].variables.filter(v => v.variable && v.variable.value).map(v => v.variable.value);\n const subqueryIds = flatten(subqueries.map(sub => sub.variables)).map(v => v.value || v.variable.value);\n for (const selectedVarId of selectedVarIds) {\n if (subqueryIds.indexOf(selectedVarId) >= 0) {\n throw Error(\"Target id of 'AS' (?\" + selectedVarId + \") already used in subquery\");\n }\n }\n }\n this.$ = extend($$[$0-3], groupDatasets($$[$0-2]), $$[$0-1], $$[$0])\n \nbreak;\ncase 8:\nthis.$ = extend({ queryType: 'CONSTRUCT', template: $$[$0-3] }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 9:\nthis.$ = extend({ queryType: 'CONSTRUCT', template: $$[$0-2] = ($$[$0-2] ? $$[$0-2].triples : []) }, groupDatasets($$[$0-5]), { where: [ { type: 'bgp', triples: appendAllTo([], $$[$0-2]) } ] }, $$[$0]);\nbreak;\ncase 10:\nthis.$ = extend({ queryType: 'DESCRIBE', variables: $$[$0-3] === '*' ? [new Wildcard()] : $$[$0-3] }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 11:\nthis.$ = extend({ queryType: 'ASK' }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 12:\nthis.$ = extend($$[$0-1], {variables: [new Wildcard()]});\nbreak;\ncase 13:\n\n // Check if id of each selected column is different\n const selectedVarIds = $$[$0].map(v => v.value || v.variable.value);\n const duplicates = getDuplicatesInArray(selectedVarIds);\n if (duplicates.length > 0) {\n throw Error(\"Two or more of the resulting columns have the same name (?\" + duplicates[0] + \")\");\n }\n\n this.$ = extend($$[$0-1], { variables: $$[$0] })\n \nbreak;\ncase 14:\nthis.$ = extend({ queryType: 'SELECT'}, $$[$0] && ($$[$0-1] = lowercase($$[$0]), $$[$0] = {}, $$[$0][$$[$0-1]] = true, $$[$0]));\nbreak;\ncase 16: case 27:\nthis.$ = expression($$[$0-3], { variable: $$[$0-1] });\nbreak;\ncase 17: case 18:\nthis.$ = extend($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], { type: 'query' });\nbreak;\ncase 19: case 58:\nthis.$ = { iri: $$[$0], named: !!$$[$0-1] };\nbreak;\ncase 20:\nthis.$ = { where: $$[$0].patterns };\nbreak;\ncase 21:\nthis.$ = extend($$[$0-1], $$[$0]);\nbreak;\ncase 22:\nthis.$ = extend($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 23:\nthis.$ = { group: $$[$0] };\nbreak;\ncase 24: case 25: case 28: case 31: case 33: case 34:\nthis.$ = expression($$[$0]);\nbreak;\ncase 26:\nthis.$ = expression($$[$0-1]);\nbreak;\ncase 29:\nthis.$ = { having: $$[$0] };\nbreak;\ncase 30:\nthis.$ = { order: $$[$0] };\nbreak;\ncase 32:\nthis.$ = expression($$[$0], { descending: true });\nbreak;\ncase 35:\nthis.$ = { limit: toInt($$[$0]) };\nbreak;\ncase 36:\nthis.$ = { offset: toInt($$[$0]) };\nbreak;\ncase 37:\nthis.$ = { limit: toInt($$[$0-2]), offset: toInt($$[$0]) };\nbreak;\ncase 38:\nthis.$ = { limit: toInt($$[$0]), offset: toInt($$[$0-2]) };\nbreak;\ncase 39: case 43:\nthis.$ = { type: 'values', values: $$[$0] };\nbreak;\ncase 40: case 84:\nthis.$ = $$[$0-1].map(v => ({ [$$[$0-3]]: v }));\nbreak;\ncase 41: case 85:\nthis.$ = $$[$0-1].map(() => ({}));\nbreak;\ncase 42: case 86:\n\n var length = $$[$0-4].length;\n $$[$0-4] = $$[$0-4].map(toVar);\n this.$ = $$[$0-1].map(function (values) {\n if (values.length !== length)\n throw Error('Inconsistent VALUES length');\n var valuesObject = {};\n for(var i = 0; i el.type === \"bind\")) {\n const index = $$[$0-1].indexOf(binding);\n const boundVars = new Set();\n //Collect all bounded variables before the binding\n for (const el of $$[$0-1].slice(0, index)) {\n if (el.type === \"group\" || el.type === \"bgp\") {\n getBoundVarsFromGroupGraphPattern(el).forEach(boundVar => boundVars.add(boundVar));\n }\n }\n // If binding with a non-free variable, throw error\n if (boundVars.has(binding.variable.value)) {\n throw Error(\"Variable used to bind is already bound (?\" + binding.variable.value + \")\");\n }\n }\n this.$ = { type: 'group', patterns: $$[$0-1] }\n \nbreak;\ncase 71:\nthis.$ = $$[$0-1] ? unionAll([$$[$0-1]], $$[$0]) : unionAll($$[$0]);\nbreak;\ncase 72:\nthis.$ = $$[$0] ? [$$[$0-2], $$[$0]] : $$[$0-2];\nbreak;\ncase 75:\nthis.$ = extend($$[$0], { type: 'optional' });\nbreak;\ncase 76:\nthis.$ = extend($$[$0], { type: 'minus' });\nbreak;\ncase 77:\nthis.$ = extend($$[$0], { type: 'graph', name: $$[$0-1] });\nbreak;\ncase 78:\nthis.$ = extend($$[$0], { type: 'service', name: $$[$0-1], silent: !!$$[$0-2] });\nbreak;\ncase 79:\nthis.$ = { type: 'filter', expression: $$[$0] };\nbreak;\ncase 80:\nthis.$ = { type: 'bind', variable: $$[$0-1], expression: $$[$0-3] };\nbreak;\ncase 89:\nthis.$ = ensureSparqlStar($$[$0]);\nbreak;\ncase 90:\nthis.$ = undefined;\nbreak;\ncase 91:\nthis.$ = $$[$0-1].length ? { type: 'union', patterns: unionAll($$[$0-1].map(degroupSingle), [degroupSingle($$[$0])]) } : $$[$0];\nbreak;\ncase 95:\nthis.$ = { ...$$[$0], function: $$[$0-1] };\nbreak;\ncase 96:\nthis.$ = { type: 'functionCall', args: [] };\nbreak;\ncase 97:\nthis.$ = { type: 'functionCall', args: appendTo($$[$0-2], $$[$0-1]), distinct: !!$$[$0-3] };\nbreak;\ncase 98: case 115: case 128: case 247: case 249: case 251: case 253: case 255: case 263: case 267: case 297: case 299: case 303: case 307: case 328: case 341: case 349: case 355: case 361: case 367: case 369: case 373: case 375: case 379: case 381: case 385: case 391: case 395: case 401: case 405: case 409: case 411: case 420: case 428: case 430: case 440: case 444: case 446: case 448:\nthis.$ = [];\nbreak;\ncase 99:\nthis.$ = appendTo($$[$0-2], $$[$0-1]);\nbreak;\ncase 101:\nthis.$ = unionAll($$[$0-2], [$$[$0-1]]);\nbreak;\ncase 102: case 112:\nthis.$ = applyAnnotations($$[$0].map(t => extend(triple($$[$0-1]), t)));\nbreak;\ncase 103:\nthis.$ = applyAnnotations(appendAllTo($$[$0].map(t => extend(triple($$[$0-1].entity), t)), $$[$0-1].triples)) /* the subject is a blank node, possibly with more triples */;\nbreak;\ncase 105:\nthis.$ = unionAll([$$[$0-1]], $$[$0]);\nbreak;\ncase 106:\nthis.$ = unionAll($$[$0]);\nbreak;\ncase 107:\nthis.$ = objectListToTriples($$[$0-1], $$[$0]);\nbreak;\ncase 109: case 237:\nthis.$ = Parser.factory.namedNode(RDF_TYPE);\nbreak;\ncase 110: case 118:\nthis.$ = appendTo($$[$0-1], $$[$0]);\nbreak;\ncase 111:\nthis.$ = $$[$0] ? { annotation: $$[$0], object: $$[$0-1] } : $$[$0-1];\nbreak;\ncase 113:\nthis.$ = !$$[$0] ? $$[$0-1].triples : applyAnnotations(appendAllTo($$[$0].map(t => extend(triple($$[$0-1].entity), t)), $$[$0-1].triples)) /* the subject is a blank node, possibly with more triples */;\nbreak;\ncase 114:\nthis.$ = objectListToTriples(...$$[$0-1], $$[$0]);\nbreak;\ncase 116:\nthis.$ = objectListToTriples(...$$[$0]);\nbreak;\ncase 117: case 159: case 163:\nthis.$ = [$$[$0-1], $$[$0]];\nbreak;\ncase 119:\nthis.$ = $$[$0] ? { object: $$[$0-1], annotation: $$[$0] } : $$[$0-1];;\nbreak;\ncase 120:\nthis.$ = $$[$0-1].length ? path('|',appendTo($$[$0-1], $$[$0])) : $$[$0];\nbreak;\ncase 121:\nthis.$ = $$[$0-1].length ? path('/', appendTo($$[$0-1], $$[$0])) : $$[$0];\nbreak;\ncase 122:\nthis.$ = $$[$0] ? path($$[$0], [$$[$0-1]]) : $$[$0-1];\nbreak;\ncase 123:\nthis.$ = $$[$0-1] ? path($$[$0-1], [$$[$0]]) : $$[$0];;\nbreak;\ncase 125: case 131:\nthis.$ = path($$[$0-1], [$$[$0]]);\nbreak;\ncase 129:\nthis.$ = path('|', appendTo($$[$0-2], $$[$0-1]));\nbreak;\ncase 132: case 134:\nthis.$ = createList($$[$0-1]);\nbreak;\ncase 133: case 135:\nthis.$ = createAnonymousObject($$[$0-1]);\nbreak;\ncase 140:\nthis.$ = { entity: $$[$0], triples: [] };\nbreak;\ncase 145:\nthis.$ = toVar($$[$0]);\nbreak;\ncase 149:\nthis.$ = Parser.factory.namedNode(RDF_NIL);\nbreak;\ncase 151: case 153: case 158: case 162:\nthis.$ = createOperationTree($$[$0-1], $$[$0]);\nbreak;\ncase 152:\nthis.$ = ['||', $$[$0]];\nbreak;\ncase 154:\nthis.$ = ['&&', $$[$0]];\nbreak;\ncase 156:\nthis.$ = operation($$[$0-1], [$$[$0-2], $$[$0]]);\nbreak;\ncase 157:\nthis.$ = operation($$[$0-2] ? 'notin' : 'in', [$$[$0-3], $$[$0]]);\nbreak;\ncase 160:\nthis.$ = ['+', createOperationTree($$[$0-1], $$[$0])];\nbreak;\ncase 161:\n\n var negatedLiteral = createTypedLiteral($$[$0-1].value.replace('-', ''), $$[$0-1].datatype);\n this.$ = ['-', createOperationTree(negatedLiteral, $$[$0])];\n \nbreak;\ncase 164:\nthis.$ = operation('UPLUS', [$$[$0]]);\nbreak;\ncase 165:\nthis.$ = operation($$[$0-1], [$$[$0]]);\nbreak;\ncase 166:\nthis.$ = operation('UMINUS', [$$[$0]]);\nbreak;\ncase 177:\nthis.$ = operation(lowercase($$[$0-1]));\nbreak;\ncase 178:\nthis.$ = operation(lowercase($$[$0-3]), [$$[$0-1]]);\nbreak;\ncase 179:\nthis.$ = ensureSparqlStar(operation(lowercase($$[$0-3]), [$$[$0-1]]));\nbreak;\ncase 180:\nthis.$ = operation(lowercase($$[$0-5]), [$$[$0-3], $$[$0-1]]);\nbreak;\ncase 181:\nthis.$ = operation(lowercase($$[$0-7]), [$$[$0-5], $$[$0-3], $$[$0-1]]);\nbreak;\ncase 182:\nthis.$ = ensureSparqlStar(operation(lowercase($$[$0-7]), [$$[$0-5], $$[$0-3], $$[$0-1]]));\nbreak;\ncase 183:\nthis.$ = operation(lowercase($$[$0-1]), $$[$0]);\nbreak;\ncase 184:\nthis.$ = operation('bound', [toVar($$[$0-1])]);\nbreak;\ncase 185:\nthis.$ = operation($$[$0-1], []);\nbreak;\ncase 186:\nthis.$ = operation($$[$0-3], [$$[$0-1]]);\nbreak;\ncase 187:\nthis.$ = operation($$[$0-2] ? 'notexists' :'exists', [degroupSingle($$[$0])]);\nbreak;\ncase 188: case 189:\nthis.$ = expression($$[$0-1], { type: 'aggregate', aggregation: lowercase($$[$0-4]), distinct: !!$$[$0-2] });\nbreak;\ncase 190:\nthis.$ = expression($$[$0-2], { type: 'aggregate', aggregation: lowercase($$[$0-5]), distinct: !!$$[$0-3], separator: typeof $$[$0-1] === 'string' ? $$[$0-1] : ' ' });\nbreak;\ncase 192:\nthis.$ = createTypedLiteral($$[$0]);\nbreak;\ncase 193:\nthis.$ = createLangLiteral($$[$0-1], lowercase($$[$0].substr(1)));\nbreak;\ncase 194:\nthis.$ = createTypedLiteral($$[$0-2], $$[$0]);\nbreak;\ncase 195: case 204:\nthis.$ = createTypedLiteral($$[$0], XSD_INTEGER);\nbreak;\ncase 196: case 205:\nthis.$ = createTypedLiteral($$[$0], XSD_DECIMAL);\nbreak;\ncase 197: case 206:\nthis.$ = createTypedLiteral(lowercase($$[$0]), XSD_DOUBLE);\nbreak;\ncase 200:\nthis.$ = createTypedLiteral($$[$0].toLowerCase(), XSD_BOOLEAN);\nbreak;\ncase 201:\nthis.$ = createTypedLiteral($$[$0].substr(1), XSD_INTEGER);\nbreak;\ncase 202:\nthis.$ = createTypedLiteral($$[$0].substr(1), XSD_DECIMAL);\nbreak;\ncase 203:\nthis.$ = createTypedLiteral($$[$0].substr(1).toLowerCase(), XSD_DOUBLE);\nbreak;\ncase 207: case 208:\nthis.$ = unescapeString($$[$0], 1);\nbreak;\ncase 209: case 210:\nthis.$ = unescapeString($$[$0], 3);\nbreak;\ncase 211:\nthis.$ = Parser.factory.namedNode(resolveIRI($$[$0]));\nbreak;\ncase 213:\n\n var namePos = $$[$0].indexOf(':'),\n prefix = $$[$0].substr(0, namePos),\n expansion = Parser.prefixes[prefix];\n if (!expansion) throw new Error('Unknown prefix: ' + prefix);\n var uriString = resolveIRI(expansion + $$[$0].substr(namePos + 1));\n this.$ = Parser.factory.namedNode(uriString);\n \nbreak;\ncase 214:\n\n $$[$0] = $$[$0].substr(0, $$[$0].length - 1);\n if (!($$[$0] in Parser.prefixes)) throw new Error('Unknown prefix: ' + $$[$0]);\n var uriString = resolveIRI(Parser.prefixes[$$[$0]]);\n this.$ = Parser.factory.namedNode(uriString);\n \nbreak;\ncase 215:\nthis.$ = blank($$[$0].replace(/^(_:)/,''));;\nbreak;\ncase 216:\nthis.$ = blank();\nbreak;\ncase 217: case 218: case 232:\nthis.$ = ensureSparqlStar(nestedTriple($$[$0-3], $$[$0-2], $$[$0-1]));\nbreak;\ncase 230: case 231:\nthis.$ = ensureSparqlStar($$[$0-1]);\nbreak;\ncase 248: case 250: case 252: case 254: case 256: case 260: case 264: case 268: case 270: case 292: case 294: case 296: case 298: case 300: case 302: case 304: case 306: case 329: case 342: case 356: case 368: case 370: case 372: case 374: case 392: case 402: case 425: case 427: case 429: case 431: case 441: case 445: case 447: case 449:\n$$[$0-1].push($$[$0]);\nbreak;\ncase 259: case 269: case 291: case 293: case 295: case 301: case 305: case 371: case 424: case 426:\nthis.$ = [$$[$0]];\nbreak;\ncase 308:\n$$[$0-3].push($$[$0-2]);\nbreak;\ncase 350: case 362: case 376: case 380: case 382: case 386: case 396: case 406: case 410: case 412: case 421:\n$$[$0-2].push($$[$0-1]);\nbreak;\n}\n},\ntable: [o($V0,$V1,{3:1,4:2,10:3}),{1:[3]},o($V2,[2,307],{5:4,7:5,321:6,214:7,8:8,96:9,215:10,17:11,21:12,97:16,38:17,6:[2,238],13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,24:[1,13],32:[1,14],36:[1,15],41:$V4}),o([6,13,16,24,32,36,41,45,100,110,113,115,116,123,126,131,197,224,229,308,329,330,331,332,333],[2,3],{322:19,11:20,14:21,12:[1,22],15:[1,23]}),{6:[1,24]},{6:[2,240]},{6:[2,241]},{6:[2,242]},{6:[2,243],9:25,84:26,85:$V5},{6:[2,239]},o($V6,[2,411],{216:28,217:29}),o($V7,[2,249],{18:30}),o($V7,[2,251],{22:31}),o($V8,[2,255],{25:32,27:33,29:[1,34]}),{13:$V9,16:$Va,33:35,39:[1,37],44:39,55:40,87:$Vb,139:38,307:43,308:$Vc,323:36},o($V7,[2,267],{37:46}),o($Vd,[2,326],{98:47,103:49,106:50,117:55,130:61,100:[1,48],110:[1,51],113:[1,52],115:[1,53],116:[1,54],131:[1,62],329:[1,56],330:[1,57],331:[1,58],332:[1,59],333:[1,60]}),{39:[1,63],40:64,43:65,44:66,45:$Ve,87:$Vb},o($Vf,[2,273],{42:68,324:69,325:[1,70],326:[1,71]}),o($V0,[2,248]),o($V0,[2,245]),o($V0,[2,246]),{13:[1,72]},{16:[1,73]},{1:[2,1]},{6:[2,2]},{6:[2,244]},{45:[1,77],85:[1,78],86:74,87:[1,75],89:[1,76]},o([6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],[2,120],{337:[1,79]}),o($Vg,[2,418],{218:80,222:81,229:[1,82]}),{19:83,28:$Vh,29:$Vi,52:84,53:$Vj,56:85},{19:88,28:$Vh,29:$Vi,52:89,53:$Vj,56:85},o($V7,[2,253],{26:90}),{28:[1,91],52:92,53:$Vj},o($Vk,[2,385],{181:93,182:94,183:95,31:[2,383]}),o($Vl,[2,263],{34:96}),o($Vl,[2,261],{44:39,55:40,307:43,139:97,13:$V9,16:$Va,87:$Vb,308:$Vc}),o($Vl,[2,262]),o($Vm,[2,259]),o($Vn,[2,143]),o($Vn,[2,144]),o([6,13,16,28,29,31,39,45,47,48,53,63,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346,347,348,349,350,351],[2,145]),o($Vo,[2,211]),o($Vo,[2,212]),o($Vo,[2,213]),o($Vo,[2,214]),{19:98,28:$Vh,29:$Vi,52:99,53:$Vj,56:85},{6:[2,309],99:100,193:[1,101]},o($Vp,[2,311],{101:102,328:[1,103]}),o($Vq,[2,317],{104:104,328:[1,105]}),o($Vr,[2,322],{107:106,328:[1,107]}),{111:108,112:[2,324],328:[1,109]},{29:$Vs,114:110},{29:$Vs,114:112},{29:$Vs,114:113},{118:114,123:[1,115],125:116,126:$Vt},o($Vu,[2,315]),o($Vu,[2,316]),o($Vv,[2,319]),o($Vv,[2,320]),o($Vv,[2,321]),o($Vd,[2,327]),{13:$V9,16:$Va,55:118,307:43,308:$Vc},o($V7,[2,12]),o($V7,[2,13],{44:66,43:119,45:$Ve,87:$Vb}),o($Vw,[2,269]),o($Vw,[2,15]),{13:$V9,16:$Va,44:136,45:$Vx,46:120,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vf,[2,14]),o($Vf,[2,274]),o($Vf,[2,271]),o($Vf,[2,272]),o($V0,[2,4]),{13:[1,177]},o($V61,[2,39]),{29:[1,178]},{29:[1,179]},{87:[1,181],91:180},{45:[1,187],87:[1,185],89:[1,186],93:182,165:183,166:184},o($V6,[2,410]),o([6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337],[2,121],{338:[1,188]}),{13:$V9,16:$Va,45:[1,193],55:194,197:$V71,219:189,220:190,223:191,224:[1,192],307:43,308:$Vc},o($Vg,[2,419]),o($V81,$V91,{20:196,59:197,69:198,70:$Va1}),o($V7,[2,250]),{29:$Vb1,57:200},o($Vp,[2,279],{54:202,327:[1,203]}),{29:[2,282]},o($Vc1,$Vd1,{23:204,58:205,62:206,63:$Ve1}),o($V7,[2,252]),{19:208,28:$Vh,29:$Vi,52:209,53:$Vj,56:85},{29:[1,210]},o($V8,[2,256]),{31:[1,211]},{31:[2,384]},{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,145:212,172:221,185:213,187:214,231:$Vh1,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl1,[2,265],{56:85,35:227,52:228,19:229,28:$Vh,29:$Vi,53:$Vj}),o($Vm,[2,260]),o($Vc1,$Vd1,{58:205,62:206,23:230,63:$Ve1}),o($V7,[2,268]),{6:[2,45]},o($V0,$V1,{10:3,4:231}),{13:$V9,16:$Va,55:232,307:43,308:$Vc},o($Vp,[2,312]),{105:233,112:$Vm1,122:234,132:[1,237],134:235,327:[1,238],334:[1,239]},o($Vq,[2,318]),o($Vp,$Vn1,{108:240,133:242,112:$Vo1,132:$Vp1}),o($Vr,[2,323]),{112:[1,244]},{112:[2,325]},o($Vq1,[2,50]),o($Vk,$Vr1,{135:245,136:246,143:247,144:248,31:$Vs1,112:$Vs1}),o($Vq1,[2,51]),o($Vq1,[2,52]),o($Vt1,[2,328],{119:249}),{29:$Vs,114:250},o($Vt1,[2,56]),{29:$Vs,114:251},o($Vd,[2,59]),o($Vw,[2,270]),{47:[1,252]},o($Vu1,[2,150]),o($Vv1,[2,428],{240:253}),o($Vw1,[2,430],{244:254}),o($Vw1,[2,155],{248:255,249:256,250:[2,438],290:[1,257],341:[1,258],342:[1,259],343:[1,260],344:[1,261],345:[1,262],346:[1,263]}),o($Vx1,[2,440],{252:264}),o($Vy1,[2,448],{260:265}),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:266,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:267,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:268,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vy1,[2,167]),o($Vy1,[2,168]),o($Vy1,[2,169]),o($Vy1,[2,170],{176:269,45:$Vz1,89:$VA1}),o($Vy1,[2,171]),o($Vy1,[2,172]),o($Vy1,[2,173]),o($Vy1,[2,174]),{13:$V9,16:$Va,44:136,45:$Vx,46:272,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,176]),{89:[1,273]},{45:[1,274]},{45:[1,275]},{45:[1,276]},{45:[1,277]},{45:[1,278]},{45:$VC1,89:$VD1,179:279},{45:[1,282]},{45:[1,284],89:[1,283]},{279:[1,285]},o($VE1,[2,192],{292:[1,286],293:[1,287]}),o($VE1,[2,195]),o($VE1,[2,196]),o($VE1,[2,197]),o($VE1,[2,198]),o($VE1,[2,199]),o($VE1,[2,200]),{13:$V9,16:$Va,44:39,55:40,82:$Vy,87:$Vb,139:289,172:291,255:154,257:155,266:290,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,320:288},{45:[1,292]},{45:[1,293]},{45:[1,294]},o($VF1,[2,452]),o($VF1,[2,453]),o($VF1,[2,454]),o($VF1,[2,455]),o($VF1,[2,456]),{279:[2,458]},o($VG1,[2,207]),o($VG1,[2,208]),o($VG1,[2,209]),o($VG1,[2,210]),o($VE1,[2,201]),o($VE1,[2,202]),o($VE1,[2,203]),o($VE1,[2,204]),o($VE1,[2,205]),o($VE1,[2,206]),o($V0,[2,5]),o($VH1,[2,297],{88:295}),o($VI1,[2,299],{90:296}),{48:[1,297],87:[1,298]},o($VJ1,[2,301]),o($V61,[2,43]),o($V61,[2,82]),o($V61,[2,83]),{29:[1,299]},{29:[1,300]},{87:[1,302],169:301},o($V6,[2,412]),o($VK1,[2,123]),o($VK1,[2,416],{221:303,339:304,39:[1,306],263:[1,307],340:[1,305]}),o($VL1,[2,124]),{13:$V9,16:$Va,45:[1,311],55:194,89:[1,310],197:$V71,223:312,225:308,226:309,229:$VM1,307:43,308:$Vc},o($V6,$V3,{215:10,214:314}),o($VL1,[2,236]),o($VL1,[2,237]),o($VN1,[2,6]),o($VO1,[2,287],{60:315,72:316,73:[1,317]}),o($V81,[2,286]),{13:$V9,16:$Va,45:$Vx,55:323,67:321,68:322,71:318,77:320,79:319,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o([6,31,63,70,73,81,83,85],[2,20]),o($Vk,$VP1,{38:17,49:324,147:325,17:326,21:327,148:328,154:329,155:330,29:$VQ1,31:$VQ1,85:$VQ1,112:$VQ1,159:$VQ1,160:$VQ1,161:$VQ1,163:$VQ1,164:$VQ1,41:$V4}),{13:$V9,16:$Va,55:331,307:43,308:$Vc},o($Vp,[2,280]),o($VN1,[2,7]),o($V81,$V91,{59:197,69:198,20:332,70:$Va1}),o($Vc1,[2,284]),{64:[1,333]},o($Vc1,$Vd1,{58:205,62:206,23:334,63:$Ve1}),o($V7,[2,254]),o($Vk,$Vr1,{144:248,30:335,143:336,31:[2,257]}),o($V7,[2,100]),{31:[2,387],184:337,335:[1,338]},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:339,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VS1,[2,389],{44:39,55:40,307:43,190:340,195:341,139:342,188:344,189:345,186:346,13:$V9,16:$Va,87:$Vb,197:$VR1,308:$Vc}),o($VT1,[2,227]),o($VT1,[2,228]),o($VT1,[2,229]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,200:348,230:347,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:352,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VT1,[2,146]),o($VT1,[2,147]),o($VT1,[2,148]),o($VT1,[2,149]),{13:$V9,16:$Va,44:354,55:355,82:$Vy,87:$Vb,172:357,237:356,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:358,312:$Vk1,313:353},o($VU1,[2,215]),o($VU1,[2,216]),o($Vc1,$Vd1,{58:205,62:206,23:359,63:$Ve1}),o($Vl,[2,264]),o($Vl1,[2,266]),o($VN1,[2,11]),o($V2,[2,308],{6:[2,310]}),o($Vq1,[2,313],{102:360,120:361,121:[1,362]}),o($Vq1,[2,47]),o($Vq1,[2,63]),o($Vq1,[2,64]),{13:$V9,16:$Va,55:363,307:43,308:$Vc},o($Vq1,[2,336]),o($Vq1,[2,337]),o($Vq1,[2,338]),{109:[1,364]},o($VV1,[2,60]),{13:$V9,16:$Va,55:365,307:43,308:$Vc},o($Vp,[2,335]),{13:$V9,16:$Va,55:366,307:43,308:$Vc},{31:[1,367]},o($VW1,[2,341],{137:368}),o($VW1,[2,340]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,145:369,172:221,185:213,187:214,231:$Vh1,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},{28:[1,370],127:371,128:[1,372]},o($Vt1,[2,330],{124:373,125:374,126:$Vt}),o($Vt1,[2,57]),{44:375,87:$Vb},o($Vu1,[2,151],{241:376,242:[1,377]}),o($Vv1,[2,153],{245:378,246:[1,379]}),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,247:380,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{250:[1,381]},o($VX1,[2,432]),o($VX1,[2,433]),o($VX1,[2,434]),o($VX1,[2,435]),o($VX1,[2,436]),o($VX1,[2,437]),{250:[2,439]},o([47,48,193,242,246,250,272,290,341,342,343,344,345,346],[2,158],{253:382,254:383,255:384,257:385,263:[1,386],265:[1,387],297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW}),o($Vx1,[2,162],{261:388,262:389,39:$VY1,338:$VZ1}),o($Vy1,[2,164]),o($Vy1,[2,165]),o($Vy1,[2,166]),o($VB1,[2,95]),o($VB1,[2,96]),o($VX1,[2,377],{177:392,325:[1,393]}),{48:[1,394]},o($VB1,[2,177]),{13:$V9,16:$Va,44:136,45:$Vx,46:395,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:396,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:397,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:398,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:399,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,183]),o($VB1,[2,98]),o($VX1,[2,381],{180:400}),{87:[1,401]},o($VB1,[2,185]),{13:$V9,16:$Va,44:136,45:$Vx,46:402,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{29:$Vb1,57:403},o($VE1,[2,193]),{13:$V9,16:$Va,55:404,307:43,308:$Vc},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,195:405,197:$VR1,307:43,308:$Vc},o($V_1,[2,233]),o($V_1,[2,234]),o($V_1,[2,235]),o($V$1,[2,459],{281:406,325:[1,407]}),o($VX1,[2,463],{284:408,325:[1,409]}),o($VX1,[2,465],{286:410,325:[1,411]}),{13:$V9,16:$Va,31:[1,412],55:414,82:$Vy,171:413,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,419],89:[1,420]},{29:[1,421]},o($VJ1,[2,302]),o($VH1,[2,367],{167:422}),o($VI1,[2,369],{168:423}),{48:[1,424],87:[1,425]},o($VJ1,[2,371]),o($VK1,[2,122]),o($VK1,[2,417]),o($VK1,[2,413]),o($VK1,[2,414]),o($VK1,[2,415]),o($VL1,[2,125]),o($VL1,[2,127]),o($VL1,[2,128]),o($V22,[2,420],{227:426}),o($VL1,[2,130]),{13:$V9,16:$Va,55:194,197:$V71,223:427,307:43,308:$Vc},{48:[1,428]},o($V32,[2,289],{61:429,80:430,81:[1,431],83:[1,432]}),o($VO1,[2,288]),{64:[1,433]},o($V81,[2,29],{307:43,267:139,275:146,278:149,77:320,67:321,68:322,55:323,79:434,13:$V9,16:$Va,45:$Vx,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($V42,[2,293]),o($V52,[2,92]),o($V52,[2,93]),o($V52,[2,94]),{45:$Vz1,89:$VA1,176:269},{31:[1,435]},{31:[1,436]},{19:437,28:$Vh,29:$Vi,56:85},{19:438,28:$Vh,29:$Vi,56:85},o($V62,[2,355],{149:439}),o($V62,[2,354]),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,156:440,172:221,185:441,203:442,231:$V82,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl,[2,19]),o($V32,[2,21]),{13:$V9,16:$Va,44:450,45:$V92,55:323,65:445,66:446,67:447,68:448,87:$Vb,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VN1,[2,8]),{31:[1,451]},{31:[2,258]},{31:[2,101]},o($Vk,[2,386],{31:[2,388]}),o($VS1,[2,102]),o($Va2,[2,391],{191:452}),o($Vk,[2,395],{196:453,198:454}),o($Vk,[2,108]),o($Vk,[2,109]),o($VS1,[2,103]),o($VS1,[2,104]),o($VS1,[2,390]),{13:$V9,16:$Va,44:215,45:$Vf1,48:[1,455],55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,200:456,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vb2,[2,424]),o($Vc2,[2,136]),o($Vc2,[2,137]),o($Vd2,[2,140]),{232:[1,457]},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,195:458,197:$VR1,307:43,308:$Vc},o($V_1,[2,219]),o($V_1,[2,220]),o($V_1,[2,221]),o($V_1,[2,222]),o($V_1,[2,223]),o($VN1,[2,10]),o($Vq1,[2,46]),o($Vq1,[2,314]),{112:$Vm1,122:459},o($Vq1,[2,62]),o($Vp,$Vn1,{133:242,108:460,112:$Vo1,132:$Vp1}),o($VV1,[2,61]),o($Vq1,[2,49]),o([6,28,126,128,193],[2,65]),{31:[2,66],112:[1,462],138:461},o($VW1,[2,351],{146:463,335:[1,464]}),{29:$Vb1,57:465},o($Vt1,[2,329]),o($Vp,[2,332],{129:466,327:[1,467]}),o($Vt1,[2,55]),o($Vt1,[2,331]),{48:[1,468]},o($Vv1,[2,429]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,239:469,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vw1,[2,431]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,243:470,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vw1,[2,156]),{45:$VC1,89:$VD1,179:471},o($Vx1,[2,441]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,251:472,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vy1,[2,444],{256:473}),o($Vy1,[2,446],{258:474}),o($VX1,[2,442]),o($VX1,[2,443]),o($Vy1,[2,449]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,255:154,257:155,259:475,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,450]),o($VX1,[2,451]),o($VX1,[2,379],{178:476}),o($VX1,[2,378]),o([6,13,16,29,31,39,45,47,48,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,338,341,342,343,344,345,346,347,348,349,350,351],[2,175]),{48:[1,477]},{48:[1,478]},{272:[1,479]},{272:[1,480]},{272:[1,481]},{13:$V9,16:$Va,44:136,45:$Vx,46:482,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{48:[1,483]},{48:[1,484]},o($VB1,[2,187]),o($VE1,[2,194]),{13:$V9,16:$Va,44:39,55:40,82:$Vy,87:$Vb,139:289,172:291,255:154,257:155,266:290,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,320:485},{13:$V9,16:$Va,39:[1,487],44:136,45:$Vx,46:488,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,282:486,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($V$1,[2,460]),{13:$V9,16:$Va,44:136,45:$Vx,46:489,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,464]),{13:$V9,16:$Va,44:136,45:$Vx,46:490,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,466]),o($V61,[2,40]),o($VH1,[2,298]),o($Ve2,[2,87]),o($Ve2,[2,88]),o($Ve2,[2,89]),o($Ve2,[2,90]),{13:$V9,16:$Va,55:492,82:$Vy,172:493,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,311:494,312:$Vk1,315:491},o($V61,[2,41]),o($VI1,[2,300]),o($Vf2,[2,303],{92:495}),{13:$V9,16:$Va,31:[1,496],55:414,82:$Vy,171:497,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,498],89:[1,499]},{29:[1,500]},o($VJ1,[2,372]),{13:$V9,16:$Va,48:[2,422],55:194,197:$V71,223:312,226:502,228:501,229:$VM1,307:43,308:$Vc},o($VL1,[2,131]),o($VL1,[2,126]),o($V32,[2,22]),o($V32,[2,290]),{82:[1,503]},{82:[1,504]},{13:$V9,16:$Va,44:510,45:$Vx,55:323,67:321,68:322,74:505,75:506,76:$Vg2,77:320,78:$Vh2,79:509,87:$Vb,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($V42,[2,294]),o($Vi2,[2,69]),o($Vi2,[2,70]),o($V81,$V91,{59:197,69:198,20:511,70:$Va1}),o($Vc1,$Vd1,{58:205,62:206,23:512,63:$Ve1}),{29:[2,375],31:[2,71],84:522,85:$V5,112:[1,518],150:513,151:514,158:515,159:[1,516],160:[1,517],161:[1,519],163:[1,520],164:[1,521],175:523},o($V62,[2,363],{157:524,335:[1,525]}),o($V6,$V3,{215:10,202:526,205:527,208:528,214:529,44:530,87:$Vb}),o($Vj2,[2,399],{215:10,205:527,208:528,214:529,44:530,204:531,202:532,13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,87:$Vb}),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,212:534,231:$V82,233:533,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($V6,$V3,{215:10,205:527,208:528,214:529,44:530,202:537,87:$Vb}),o($Vc1,[2,23],{307:43,267:139,275:146,278:149,55:323,67:447,68:448,44:450,66:538,13:$V9,16:$Va,45:$V92,87:$Vb,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($Vk2,[2,291]),o($Vk2,[2,24]),o($Vk2,[2,25]),{13:$V9,16:$Va,44:136,45:$Vx,46:539,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vk2,[2,28]),o($Vc1,$Vd1,{58:205,62:206,23:540,63:$Ve1}),o([31,112,232,318,335],[2,105],{192:541,193:[1,542]}),o($Va2,[2,107]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,199:543,200:544,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl2,[2,132]),o($Vb2,[2,425]),o($Vl2,[2,133]),{13:$V9,16:$Va,44:354,55:355,82:$Vy,87:$Vb,172:357,237:356,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:358,312:$Vk1,313:545},o($Vq1,[2,54]),o($Vq1,[2,48]),o($VW1,[2,342]),{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:546,307:43,308:$Vc},o($VW1,[2,68]),o($Vk,[2,350],{31:$Vm2,112:$Vm2}),o($Vq1,[2,53]),{13:$V9,16:$Va,55:547,307:43,308:$Vc},o($Vp,[2,333]),o($Vw,[2,16]),o($Vv1,[2,152]),o($Vw1,[2,154]),o($Vw1,[2,157]),o($Vx1,[2,159]),o($Vx1,[2,160],{262:389,261:548,39:$VY1,338:$VZ1}),o($Vx1,[2,161],{262:389,261:549,39:$VY1,338:$VZ1}),o($Vy1,[2,163]),{13:$V9,16:$Va,44:136,45:$Vx,46:550,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,178]),o($VB1,[2,179]),{13:$V9,16:$Va,44:136,45:$Vx,46:551,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:552,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:553,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{48:[1,554],272:[1,555]},o($VB1,[2,184]),o($VB1,[2,186]),{314:[1,556]},{48:[1,557]},{48:[2,461]},{48:[2,462]},{48:[1,558]},{48:[2,467],193:[1,561],287:559,288:560},{13:$V9,16:$Va,55:194,197:$V71,223:562,307:43,308:$Vc},o($Vn2,[2,224]),o($Vn2,[2,225]),o($Vn2,[2,226]),{31:[1,563],45:$Vo2,94:564},o($V61,[2,84]),o($VH1,[2,368]),o($V61,[2,85]),o($VI1,[2,370]),o($Vf2,[2,373],{170:566}),{48:[1,567]},{48:[2,423],337:[1,568]},o($V32,[2,35],{83:[1,569]}),o($V32,[2,36],{81:[1,570]}),o($VO1,[2,30],{307:43,267:139,275:146,278:149,77:320,67:321,68:322,55:323,79:509,44:510,75:571,13:$V9,16:$Va,45:$Vx,76:$Vg2,78:$Vh2,87:$Vb,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($Vp2,[2,295]),{45:$Vx,77:572},{45:$Vx,77:573},o($Vp2,[2,33]),o($Vp2,[2,34]),{31:[2,275],50:574,84:575,85:$V5},{31:[2,277],51:576,84:577,85:$V5},o($V62,[2,356]),o($Vq2,[2,357],{152:578,335:[1,579]}),o($Vr2,[2,74]),{29:$Vb1,57:580},{29:$Vb1,57:581},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:582,307:43,308:$Vc},o($Vs2,[2,365],{162:583,328:[1,584]}),{13:$V9,16:$Va,45:$Vx,55:323,67:321,68:322,77:320,79:585,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{45:[1,586]},o($Vr2,[2,81]),{29:$Vb1,57:587},o($V62,[2,73]),o($Vk,[2,362],{29:$Vt2,31:$Vt2,85:$Vt2,112:$Vt2,159:$Vt2,160:$Vt2,161:$Vt2,163:$Vt2,164:$Vt2}),o($Vj2,[2,112]),o($Vu2,[2,401],{206:588}),o($Vk,[2,405],{209:589,210:590}),o($Vk,[2,403]),o($Vk,[2,404]),o($Vj2,[2,113]),o($Vj2,[2,400]),{13:$V9,16:$Va,44:215,45:$V72,48:[1,591],55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,212:592,231:$V82,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vb2,[2,426]),o($Vd2,[2,138]),o($Vd2,[2,139]),{232:[1,593]},o($Vk2,[2,292]),{47:[1,595],48:[1,594]},o($VN1,[2,9]),o($Va2,[2,392]),o($Va2,[2,393],{44:39,55:40,307:43,195:341,139:342,194:596,190:597,13:$V9,16:$Va,87:$Vb,197:$VR1,308:$Vc}),o($Va2,[2,110],{272:[1,598]}),o($Vv2,[2,397],{201:599,316:600,317:[1,601]}),{314:[1,602]},{29:[1,603]},o($Vt1,[2,58]),o($Vy1,[2,445]),o($Vy1,[2,447]),{48:[1,604],272:[1,605]},{48:[1,606]},{272:[1,607]},{272:[1,608]},o($VB1,[2,99]),o($VX1,[2,382]),o([13,16,39,47,48,87,193,197,242,246,250,263,265,272,290,297,298,299,300,301,302,308,314,338,341,342,343,344,345,346],[2,232]),o($VB1,[2,188]),o($VB1,[2,189]),{48:[1,609]},{48:[2,468]},{289:[1,610]},{13:$V9,16:$Va,55:492,82:$Vy,172:493,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,311:494,312:$Vk1,315:611},o($V61,[2,42]),o($Vf2,[2,304]),{13:$V9,16:$Va,55:414,82:$Vy,95:612,171:613,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,614],45:$Vo2,94:615},o($VL1,[2,129]),o($V22,[2,421]),{82:[1,616]},{82:[1,617]},o($Vp2,[2,296]),o($Vp2,[2,31]),o($Vp2,[2,32]),{31:[2,17]},{31:[2,276]},{31:[2,18]},{31:[2,278]},o($Vk,$VP1,{155:330,153:618,154:619,29:$Vw2,31:$Vw2,85:$Vw2,112:$Vw2,159:$Vw2,160:$Vw2,161:$Vw2,163:$Vw2,164:$Vw2}),o($Vq2,[2,358]),o($Vr2,[2,75]),o($Vr2,[2,76]),{29:$Vb1,57:620},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:621,307:43,308:$Vc},o($Vs2,[2,366]),o($Vr2,[2,79]),{13:$V9,16:$Va,44:136,45:$Vx,46:622,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vr2,[2,91],{336:[1,623]}),o([29,31,85,112,159,160,161,163,164,232,318,335],[2,114],{207:624,193:[1,625]}),o($Vu2,[2,117]),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,211:626,212:627,231:$V82,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($VT1,[2,134]),o($Vb2,[2,427]),o($VT1,[2,135]),o($Vk2,[2,26]),{44:628,87:$Vb},o($Va2,[2,106]),o($Va2,[2,394]),o($Vk,[2,396]),o($Vv2,[2,111]),o($Vv2,[2,398]),{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:629,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VU1,[2,217]),o($Vk,$Vr1,{144:248,140:630,143:631,31:[2,343]}),o($VB1,[2,97]),o($VX1,[2,380]),o($VB1,[2,180]),{13:$V9,16:$Va,44:136,45:$Vx,46:632,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:633,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,190]),{290:[1,634]},{314:[1,635]},{13:$V9,16:$Va,48:[1,636],55:414,82:$Vy,171:637,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},o($Vx2,[2,305]),o($V61,[2,86]),o($Vf2,[2,374]),o($V32,[2,37]),o($V32,[2,38]),o($V62,[2,72]),o($V62,[2,360]),o($Vr2,[2,77]),{29:$Vb1,57:638},{47:[1,639]},{29:[2,376]},o($Vu2,[2,402]),o($Vu2,[2,115],{215:10,208:528,214:529,44:530,205:640,13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,87:$Vb}),o($Vu2,[2,118],{272:[1,641]}),o($Vy2,[2,407],{213:642,319:643,317:[1,644]}),{48:[1,645]},{318:[1,646]},{31:[1,647]},{31:[2,344]},{48:[1,648]},{48:[1,649]},{291:650,303:$VX,304:$VY,305:$VZ,306:$V_},o($Ve2,[2,218]),o($Vf2,[2,44]),o($Vx2,[2,306]),o($Vr2,[2,78]),{44:651,87:$Vb},o($Vu2,[2,116]),o($Vk,[2,406]),o($Vy2,[2,119]),o($Vy2,[2,408]),o($V6,$V3,{215:10,205:527,208:528,214:529,44:530,202:652,87:$Vb}),o($Vk2,[2,27]),o($Vv2,[2,230]),o($Vz2,[2,345],{141:653,335:[1,654]}),o($VB1,[2,181]),o($VB1,[2,182]),{48:[2,191]},{48:[1,655]},{318:[1,656]},o($Vk,$Vr1,{144:248,142:657,143:658,31:$VA2,112:$VA2}),o($Vz2,[2,346]),o($Vr2,[2,80]),o($Vy2,[2,231]),o($VW1,[2,67]),o($VW1,[2,348])],\ndefaultActions: {5:[2,240],6:[2,241],7:[2,242],9:[2,239],24:[2,1],25:[2,2],26:[2,244],87:[2,282],94:[2,384],100:[2,45],109:[2,325],166:[2,458],263:[2,439],336:[2,258],337:[2,101],487:[2,461],488:[2,462],560:[2,468],574:[2,17],575:[2,276],576:[2,18],577:[2,278],623:[2,376],631:[2,344],650:[2,191]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n /*\n SPARQL parser in the Jison parser generator format.\n */\n\n var Wildcard = require('./Wildcard').Wildcard;\n\n // Common namespaces and entities\n var RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n RDF_TYPE = RDF + 'type',\n RDF_FIRST = RDF + 'first',\n RDF_REST = RDF + 'rest',\n RDF_NIL = RDF + 'nil',\n XSD = 'http://www.w3.org/2001/XMLSchema#',\n XSD_INTEGER = XSD + 'integer',\n XSD_DECIMAL = XSD + 'decimal',\n XSD_DOUBLE = XSD + 'double',\n XSD_BOOLEAN = XSD + 'boolean';\n\n var base = '', basePath = '', baseRoot = '';\n\n // Returns a lowercase version of the given string\n function lowercase(string) {\n return string.toLowerCase();\n }\n\n // Appends the item to the array and returns the array\n function appendTo(array, item) {\n return array.push(item), array;\n }\n\n // Appends the items to the array and returns the array\n function appendAllTo(array, items) {\n return array.push.apply(array, items), array;\n }\n\n // Extends a base object with properties of other objects\n function extend(base) {\n if (!base) base = {};\n for (var i = 1, l = arguments.length, arg; i < l && (arg = arguments[i] || {}); i++)\n for (var name in arg)\n base[name] = arg[name];\n return base;\n }\n\n // Creates an array that contains all items of the given arrays\n function unionAll() {\n var union = [];\n for (var i = 0, l = arguments.length; i < l; i++)\n union = union.concat.apply(union, arguments[i]);\n return union;\n }\n\n // Resolves an IRI against a base path\n function resolveIRI(iri) {\n // Strip off possible angular brackets\n if (iri[0] === '<')\n iri = iri.substring(1, iri.length - 1);\n // Return absolute IRIs unmodified\n if (/^[a-z]+:/i.test(iri))\n return iri;\n if (!Parser.base)\n throw new Error('Cannot resolve relative IRI ' + iri + ' because no base IRI was set.');\n if (base !== Parser.base) {\n base = Parser.base;\n basePath = base.replace(/[^\\/:]*$/, '');\n baseRoot = base.match(/^(?:[a-z]+:\\/*)?[^\\/]*/)[0];\n }\n switch (iri[0]) {\n // An empty relative IRI indicates the base IRI\n case undefined:\n return base;\n // Resolve relative fragment IRIs against the base IRI\n case '#':\n return base + iri;\n // Resolve relative query string IRIs by replacing the query string\n case '?':\n return base.replace(/(?:\\?.*)?$/, iri);\n // Resolve root relative IRIs at the root of the base IRI\n case '/':\n return baseRoot + iri;\n // Resolve all other IRIs at the base IRI's path\n default:\n return basePath + iri;\n }\n }\n\n // If the item is a variable, ensures it starts with a question mark\n function toVar(variable) {\n if (variable) {\n var first = variable[0];\n if (first === '?' || first === '$') return Parser.factory.variable(variable.substr(1));\n }\n return variable;\n }\n\n // Creates an operation with the given name and arguments\n function operation(operatorName, args) {\n return { type: 'operation', operator: operatorName, args: args || [] };\n }\n\n // Creates an expression with the given type and attributes\n function expression(expr, attr) {\n var expression = { expression: expr === '*'? new Wildcard() : expr };\n if (attr)\n for (var a in attr)\n expression[a] = attr[a];\n return expression;\n }\n\n // Creates a path with the given type and items\n function path(type, items) {\n return { type: 'path', pathType: type, items: items };\n }\n\n // Transforms a list of operations types and arguments into a tree of operations\n function createOperationTree(initialExpression, operationList) {\n for (var i = 0, l = operationList.length, item; i < l && (item = operationList[i]); i++)\n initialExpression = operation(item[0], [initialExpression, item[1]]);\n return initialExpression;\n }\n\n // Group datasets by default and named\n function groupDatasets(fromClauses, groupName) {\n var defaults = [], named = [], l = fromClauses.length, fromClause, group = {};\n if (!l)\n return null;\n for (var i = 0; i < l && (fromClause = fromClauses[i]); i++)\n (fromClause.named ? named : defaults).push(fromClause.iri);\n group[groupName || 'from'] = { default: defaults, named: named };\n return group;\n }\n\n // Converts the string to a number\n function toInt(string) {\n return parseInt(string, 10);\n }\n\n // Transforms a possibly single group into its patterns\n function degroupSingle(group) {\n return group.type === 'group' && group.patterns.length === 1 ? group.patterns[0] : group;\n }\n\n // Creates a literal with the given value and type\n function createTypedLiteral(value, type) {\n if (type && type.termType !== 'NamedNode'){\n type = Parser.factory.namedNode(type);\n }\n return Parser.factory.literal(value, type);\n }\n\n // Creates a literal with the given value and language\n function createLangLiteral(value, lang) {\n return Parser.factory.literal(value, lang);\n }\n\n function nestedTriple(subject, predicate, object) {\n\n // TODO: Remove this when it is caught by the grammar\n if (!('termType' in predicate)) {\n throw new Error('Nested triples cannot contain paths');\n }\n\n return Parser.factory.quad(subject, predicate, object);\n }\n\n // Creates a triple with the given subject, predicate, and object\n function triple(subject, predicate, object, annotations) {\n var triple = {};\n if (subject != null) triple.subject = subject;\n if (predicate != null) triple.predicate = predicate;\n if (object != null) triple.object = object;\n if (annotations != null) triple.annotations = annotations;\n return triple;\n }\n\n // Creates a new blank node\n function blank(name) {\n if (typeof name === 'string') { // Only use name if a name is given\n if (name.startsWith('e_')) return Parser.factory.blankNode(name);\n return Parser.factory.blankNode('e_' + name);\n }\n return Parser.factory.blankNode('g_' + blankId++);\n };\n var blankId = 0;\n Parser._resetBlanks = function () { blankId = 0; }\n\n // Regular expression and replacement strings to escape strings\n var escapeSequence = /\\\\u([a-fA-F0-9]{4})|\\\\U([a-fA-F0-9]{8})|\\\\(.)/g,\n escapeReplacements = { '\\\\': '\\\\', \"'\": \"'\", '\"': '\"',\n 't': '\\t', 'b': '\\b', 'n': '\\n', 'r': '\\r', 'f': '\\f' },\n partialSurrogatesWithoutEndpoint = /[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/,\n fromCharCode = String.fromCharCode;\n\n // Translates escape codes in the string into their textual equivalent\n function unescapeString(string, trimLength) {\n string = string.substring(trimLength, string.length - trimLength);\n try {\n string = string.replace(escapeSequence, function (sequence, unicode4, unicode8, escapedChar) {\n var charCode;\n if (unicode4) {\n charCode = parseInt(unicode4, 16);\n if (isNaN(charCode)) throw new Error(); // can never happen (regex), but helps performance\n return fromCharCode(charCode);\n }\n else if (unicode8) {\n charCode = parseInt(unicode8, 16);\n if (isNaN(charCode)) throw new Error(); // can never happen (regex), but helps performance\n if (charCode < 0xFFFF) return fromCharCode(charCode);\n return fromCharCode(0xD800 + ((charCode -= 0x10000) >> 10), 0xDC00 + (charCode & 0x3FF));\n }\n else {\n var replacement = escapeReplacements[escapedChar];\n if (!replacement) throw new Error();\n return replacement;\n }\n });\n }\n catch (error) { return ''; }\n\n // Test for invalid unicode surrogate pairs\n if (partialSurrogatesWithoutEndpoint.exec(string)) {\n throw new Error('Invalid unicode codepoint of surrogate pair without corresponding codepoint in ' + string);\n }\n\n return string;\n }\n\n // Creates a list, collecting its (possibly blank) items and triples associated with those items\n function createList(objects) {\n var list = blank(), head = list, listItems = [], listTriples, triples = [];\n objects.forEach(function (o) { listItems.push(o.entity); appendAllTo(triples, o.triples); });\n\n // Build an RDF list out of the items\n for (var i = 0, j = 0, l = listItems.length, listTriples = Array(l * 2); i < l;)\n listTriples[j++] = triple(head, Parser.factory.namedNode(RDF_FIRST), listItems[i]),\n listTriples[j++] = triple(head, Parser.factory.namedNode(RDF_REST), head = ++i < l ? blank() : Parser.factory.namedNode(RDF_NIL));\n\n // Return the list's identifier, its triples, and the triples associated with its items\n return { entity: list, triples: appendAllTo(listTriples, triples) };\n }\n\n // Creates a blank node identifier, collecting triples with that blank node as subject\n function createAnonymousObject(propertyList) {\n var entity = blank();\n return {\n entity: entity,\n triples: propertyList.map(function (t) { return extend(triple(entity), t); })\n };\n }\n\n // Collects all (possibly blank) objects, and triples that have them as subject\n function objectListToTriples(predicate, objectList, otherTriples) {\n var objects = [], triples = [];\n objectList.forEach(function (l) {\n let annotation = null;\n if (l.annotation) {\n annotation = l.annotation\n l = l.object;\n }\n objects.push(triple(null, predicate, l.entity, annotation));\n appendAllTo(triples, l.triples);\n });\n return unionAll(objects, otherTriples || [], triples);\n }\n\n // Simplifies groups by merging adjacent BGPs\n function mergeAdjacentBGPs(groups) {\n var merged = [], currentBgp;\n for (var i = 0, group; group = groups[i]; i++) {\n switch (group.type) {\n // Add a BGP's triples to the current BGP\n case 'bgp':\n if (group.triples.length) {\n if (!currentBgp)\n appendTo(merged, currentBgp = group);\n else\n appendAllTo(currentBgp.triples, group.triples);\n }\n break;\n // All other groups break up a BGP\n default:\n // Only add the group if its pattern is non-empty\n if (!group.patterns || group.patterns.length > 0) {\n appendTo(merged, group);\n currentBgp = null;\n }\n }\n }\n return merged;\n }\n\n // Return the id of an expression\n function getExpressionId(expression) {\n return expression.variable ? expression.variable.value : expression.value || expression.expression.value;\n }\n\n // Get all \"aggregate\"'s from an expression\n function getAggregatesOfExpression(expression) {\n if (!expression) {\n return [];\n }\n if (expression.type === 'aggregate') {\n return [expression];\n } else if (expression.type === \"operation\") {\n const aggregates = [];\n for (const arg of expression.args) {\n aggregates.push(...getAggregatesOfExpression(arg));\n }\n return aggregates;\n }\n return [];\n }\n\n // Get all variables used in an expression\n function getVariablesFromExpression(expression) {\n const variables = new Set();\n const visitExpression = function (expr) {\n if (!expr) { return; }\n if (expr.termType === \"Variable\") {\n variables.add(expr);\n } else if (expr.type === \"operation\") {\n expr.args.forEach(visitExpression);\n }\n };\n visitExpression(expression);\n return variables;\n }\n\n // Helper function to flatten arrays\n function flatten(input, depth = 1, stack = []) {\n for (const item of input) {\n if (depth > 0 && item instanceof Array) {\n flatten(item, depth - 1, stack);\n } else {\n stack.push(item);\n }\n }\n return stack;\n }\n\n function isVariable(term) {\n return term.termType === 'Variable';\n }\n\n function getBoundVarsFromGroupGraphPattern(pattern) {\n if (pattern.triples) {\n const boundVars = [];\n for (const triple of pattern.triples) {\n if (isVariable(triple.subject)) boundVars.push(triple.subject.value);\n if (isVariable(triple.predicate)) boundVars.push(triple.predicate.value);\n if (isVariable(triple.object)) boundVars.push(triple.object.value);\n }\n return boundVars;\n } else if (pattern.patterns) {\n const boundVars = [];\n for (const pat of pattern.patterns) {\n boundVars.push(...getBoundVarsFromGroupGraphPattern(pat));\n }\n return boundVars;\n }\n return [];\n }\n\n // Helper function to find duplicates in array\n function getDuplicatesInArray(array) {\n const sortedArray = array.slice().sort();\n const duplicates = [];\n for (let i = 0; i < sortedArray.length - 1; i++) {\n if (sortedArray[i + 1] == sortedArray[i]) {\n duplicates.push(sortedArray[i]);\n }\n }\n return duplicates;\n }\n\n function ensureSparqlStar(value) {\n if (!Parser.sparqlStar) {\n throw new Error('SPARQL-star support is not enabled');\n }\n return value;\n }\n\n function _applyAnnotations(subject, annotations, arr) {\n for (const annotation of annotations) {\n const t = triple(\n // If the annotation already has a subject then just push the\n // annotation to the upper scope as it is a blank node introduced\n // from a pattern like :s :p :o {| :p1 [ :p2 :o2; :p3 :o3 ] |}\n 'subject' in annotation ? annotation.subject : subject,\n annotation.predicate,\n annotation.object\n )\n\n arr.push(t);\n\n if (annotation.annotations) {\n _applyAnnotations(nestedTriple(\n subject,\n annotation.predicate,\n annotation.object\n ), annotation.annotations, arr)\n }\n }\n }\n\n function applyAnnotations(triples) {\n if (Parser.sparqlStar) {\n const newTriples = [];\n\n triples.forEach(t => {\n const s = triple(t.subject, t.predicate, t.object);\n\n newTriples.push(s);\n\n if (t.annotations) {\n _applyAnnotations(nestedTriple(t.subject, t.predicate, t.object), t.annotations, newTriples);\n }\n });\n\n return newTriples;\n }\n return triples;\n }\n\n function ensureSparqlStarNestedQuads(value) {\n if (!Parser.sparqlStarNestedQuads) {\n throw new Error('Lenient SPARQL-star support with nested quads is not enabled');\n }\n return value;\n }\n\n function ensureNoVariables(operations) {\n for (const operation of operations) {\n if (operation.type === 'graph' && operation.name.termType === 'Variable') {\n throw new Error('Detected illegal variable in GRAPH');\n }\n if (operation.type === 'bgp' || operation.type === 'graph') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'Variable' ||\n triple.predicate.termType === 'Variable' ||\n triple.object.termType === 'Variable') {\n throw new Error('Detected illegal variable in BGP');\n }\n }\n }\n }\n return operations;\n }\n\n function ensureNoBnodes(operations) {\n for (const operation of operations) {\n if (operation.type === 'bgp') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'BlankNode' ||\n triple.predicate.termType === 'BlankNode' ||\n triple.object.termType === 'BlankNode') {\n throw new Error('Detected illegal blank node in BGP');\n }\n }\n }\n }\n return operations;\n }\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"flex\":true,\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* ignore */\nbreak;\ncase 1:return 12\nbreak;\ncase 2:return 15\nbreak;\ncase 3:return 41\nbreak;\ncase 4:return 325\nbreak;\ncase 5:return 326\nbreak;\ncase 6:return 45\nbreak;\ncase 7:return 47\nbreak;\ncase 8:return 48\nbreak;\ncase 9:return 39\nbreak;\ncase 10:return 24\nbreak;\ncase 11:return 28\nbreak;\ncase 12:return 29\nbreak;\ncase 13:return 31\nbreak;\ncase 14:return 32\nbreak;\ncase 15:return 36\nbreak;\ncase 16:return 53\nbreak;\ncase 17:return 327\nbreak;\ncase 18:return 63\nbreak;\ncase 19:return 64\nbreak;\ncase 20:return 70\nbreak;\ncase 21:return 73\nbreak;\ncase 22:return 76\nbreak;\ncase 23:return 78\nbreak;\ncase 24:return 81\nbreak;\ncase 25:return 83\nbreak;\ncase 26:return 85\nbreak;\ncase 27:return 193\nbreak;\ncase 28:return 100\nbreak;\ncase 29:return 328\nbreak;\ncase 30:return 121\nbreak;\ncase 31:return 329\nbreak;\ncase 32:return 330\nbreak;\ncase 33:return 110\nbreak;\ncase 34:return 331\nbreak;\ncase 35:return 109\nbreak;\ncase 36:return 332\nbreak;\ncase 37:return 333\nbreak;\ncase 38:return 113\nbreak;\ncase 39:return 115\nbreak;\ncase 40:return 116\nbreak;\ncase 41:return 131\nbreak;\ncase 42:return 123\nbreak;\ncase 43:return 126\nbreak;\ncase 44:return 128\nbreak;\ncase 45:return 132\nbreak;\ncase 46:return 112\nbreak;\ncase 47:return 334\nbreak;\ncase 48:return 335\nbreak;\ncase 49:return 159\nbreak;\ncase 50:return 161\nbreak;\ncase 51:return 164\nbreak;\ncase 52:return 174\nbreak;\ncase 53:return 160\nbreak;\ncase 54:return 336\nbreak;\ncase 55:return 163\nbreak;\ncase 56:return 312\nbreak;\ncase 57:return 314\nbreak;\ncase 58:return 317\nbreak;\ncase 59:return 318\nbreak;\ncase 60:return 272\nbreak;\ncase 61:return 197\nbreak;\ncase 62:return 337\nbreak;\ncase 63:return 338\nbreak;\ncase 64:return 229\nbreak;\ncase 65:return 340\nbreak;\ncase 66:return 263\nbreak;\ncase 67:return 224\nbreak;\ncase 68:return 231\nbreak;\ncase 69:return 232\nbreak;\ncase 70:return 242\nbreak;\ncase 71:return 246\nbreak;\ncase 72:return 290\nbreak;\ncase 73:return 341\nbreak;\ncase 74:return 342\nbreak;\ncase 75:return 343\nbreak;\ncase 76:return 344\nbreak;\ncase 77:return 345\nbreak;\ncase 78:return 250\nbreak;\ncase 79:return 346\nbreak;\ncase 80:return 265\nbreak;\ncase 81:return 276\nbreak;\ncase 82:return 277\nbreak;\ncase 83:return 268\nbreak;\ncase 84:return 269\nbreak;\ncase 85:return 270\nbreak;\ncase 86:return 271\nbreak;\ncase 87:return 347\nbreak;\ncase 88:return 348\nbreak;\ncase 89:return 273\nbreak;\ncase 90:return 274\nbreak;\ncase 91:return 350\nbreak;\ncase 92:return 349\nbreak;\ncase 93:return 351\nbreak;\ncase 94:return 279\nbreak;\ncase 95:return 280\nbreak;\ncase 96:return 283\nbreak;\ncase 97:return 285\nbreak;\ncase 98:return 289\nbreak;\ncase 99:return 293\nbreak;\ncase 100:return 296\nbreak;\ncase 101:return 13\nbreak;\ncase 102:return 16\nbreak;\ncase 103:return 308\nbreak;\ncase 104:return 309\nbreak;\ncase 105:return 87\nbreak;\ncase 106:return 292\nbreak;\ncase 107:return 82\nbreak;\ncase 108:return 294\nbreak;\ncase 109:return 295\nbreak;\ncase 110:return 297\nbreak;\ncase 111:return 298\nbreak;\ncase 112:return 299\nbreak;\ncase 113:return 300\nbreak;\ncase 114:return 301\nbreak;\ncase 115:return 302\nbreak;\ncase 116:return 'EXPONENT'\nbreak;\ncase 117:return 303\nbreak;\ncase 118:return 304\nbreak;\ncase 119:return 305\nbreak;\ncase 120:return 306\nbreak;\ncase 121:return 89\nbreak;\ncase 122:return 310\nbreak;\ncase 123:return 6\nbreak;\ncase 124:return 'INVALID'\nbreak;\ncase 125:console.log(yy_.yytext);\nbreak;\n}\n},\nrules: [/^(?:\\s+|(#[^\\n\\r]*))/i,/^(?:BASE)/i,/^(?:PREFIX)/i,/^(?:SELECT)/i,/^(?:DISTINCT)/i,/^(?:REDUCED)/i,/^(?:\\()/i,/^(?:AS)/i,/^(?:\\))/i,/^(?:\\*)/i,/^(?:CONSTRUCT)/i,/^(?:WHERE)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:DESCRIBE)/i,/^(?:ASK)/i,/^(?:FROM)/i,/^(?:NAMED)/i,/^(?:GROUP)/i,/^(?:BY)/i,/^(?:HAVING)/i,/^(?:ORDER)/i,/^(?:ASC)/i,/^(?:DESC)/i,/^(?:LIMIT)/i,/^(?:OFFSET)/i,/^(?:VALUES)/i,/^(?:;)/i,/^(?:LOAD)/i,/^(?:SILENT)/i,/^(?:INTO)/i,/^(?:CLEAR)/i,/^(?:DROP)/i,/^(?:CREATE)/i,/^(?:ADD)/i,/^(?:TO)/i,/^(?:MOVE)/i,/^(?:COPY)/i,/^(?:INSERT((\\s+|(#[^\\n\\r]*)\\n\\r?)+)DATA)/i,/^(?:DELETE((\\s+|(#[^\\n\\r]*)\\n\\r?)+)DATA)/i,/^(?:DELETE((\\s+|(#[^\\n\\r]*)\\n\\r?)+)WHERE)/i,/^(?:WITH)/i,/^(?:DELETE)/i,/^(?:INSERT)/i,/^(?:USING)/i,/^(?:DEFAULT)/i,/^(?:GRAPH)/i,/^(?:ALL)/i,/^(?:\\.)/i,/^(?:OPTIONAL)/i,/^(?:SERVICE)/i,/^(?:BIND)/i,/^(?:UNDEF)/i,/^(?:MINUS)/i,/^(?:UNION)/i,/^(?:FILTER)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:\\{\\|)/i,/^(?:\\|\\})/i,/^(?:,)/i,/^(?:a)/i,/^(?:\\|)/i,/^(?:\\/)/i,/^(?:\\^)/i,/^(?:\\?)/i,/^(?:\\+)/i,/^(?:!)/i,/^(?:\\[)/i,/^(?:\\])/i,/^(?:\\|\\|)/i,/^(?:&&)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:<)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:>=)/i,/^(?:IN)/i,/^(?:NOT)/i,/^(?:-)/i,/^(?:BOUND)/i,/^(?:BNODE)/i,/^(?:(RAND|NOW|UUID|STRUUID))/i,/^(?:(LANG|DATATYPE|IRI|URI|ABS|CEIL|FLOOR|ROUND|STRLEN|STR|UCASE|LCASE|ENCODE_FOR_URI|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|MD5|SHA1|SHA256|SHA384|SHA512|isIRI|isURI|isBLANK|isLITERAL|isNUMERIC))/i,/^(?:(SUBJECT|PREDICATE|OBJECT|isTRIPLE))/i,/^(?:(LANGMATCHES|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|STRLANG|STRDT|sameTerm))/i,/^(?:CONCAT)/i,/^(?:COALESCE)/i,/^(?:IF)/i,/^(?:TRIPLE)/i,/^(?:REGEX)/i,/^(?:SUBSTR)/i,/^(?:REPLACE)/i,/^(?:EXISTS)/i,/^(?:COUNT)/i,/^(?:SUM|MIN|MAX|AVG|SAMPLE)/i,/^(?:GROUP_CONCAT)/i,/^(?:SEPARATOR)/i,/^(?:\\^\\^)/i,/^(?:true|false)/i,/^(?:(<(?:[^<>\\\"\\{\\}\\|\\^`\\\\\\u0000-\\u0020])*>))/i,/^(?:((([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?)?:))/i,/^(?:(((([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?)?:)((?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|:|[0-9]|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%))))(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%))))*(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%)))))?)))/i,/^(?:(_:(?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?))/i,/^(?:([\\?\\$]((?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9])(?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])*)))/i,/^(?:(@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*))/i,/^(?:([0-9]+))/i,/^(?:([0-9]*\\.[0-9]+))/i,/^(?:([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+)))/i,/^(?:(\\+([0-9]+)))/i,/^(?:(\\+([0-9]*\\.[0-9]+)))/i,/^(?:(\\+([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:(-([0-9]+)))/i,/^(?:(-([0-9]*\\.[0-9]+)))/i,/^(?:(-([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:([eE][+-]?[0-9]+))/i,/^(?:('(?:(?:[^\\u0027\\u005C\\u000A\\u000D])|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*'))/i,/^(?:(\"(?:(?:[^\\u0022\\u005C\\u000A\\u000D])|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*\"))/i,/^(?:('''(?:(?:'|'')?(?:[^'\\\\]|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*'''))/i,/^(?:(\"\"\"(?:(?:\"|\"\")?(?:[^\\\"\\\\]|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*\"\"\"))/i,/^(?:(\\((\\u0020|\\u0009|\\u000D|\\u000A)*\\)))/i,/^(?:(\\[(\\u0020|\\u0009|\\u000D|\\u000A)*\\]))/i,/^(?:$)/i,/^(?:.)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();module.exports=SparqlParser\n","\n// Wildcard constructor\nclass Wildcard {\n constructor() {\n return WILDCARD || this;\n }\n\n equals(other) {\n return other && (this.termType === other.termType);\n }\n}\n\nObject.defineProperty(Wildcard.prototype, 'value', {\n enumerable: true,\n value: '*',\n});\n\nObject.defineProperty(Wildcard.prototype, 'termType', {\n enumerable: true,\n value: 'Wildcard',\n});\n\n\n// Wildcard singleton\nvar WILDCARD = new Wildcard();\n\nmodule.exports.Wildcard = Wildcard;\n","var Parser = require('./lib/SparqlParser').Parser;\nvar Generator = require('./lib/SparqlGenerator');\nvar Wildcard = require(\"./lib/Wildcard\").Wildcard;\nvar { DataFactory } = require('rdf-data-factory');\n\nmodule.exports = {\n /**\n * Creates a SPARQL parser with the given pre-defined prefixes and base IRI\n * @param options {\n * prefixes?: { [prefix: string]: string },\n * baseIRI?: string,\n * factory?: import('rdf-js').DataFactory,\n * sparqlStar?: boolean,\n * skipValidation?: boolean,\n * skipUngroupedVariableCheck?: boolean\n * }\n */\n Parser: function ({ prefixes, baseIRI, factory, sparqlStar, skipValidation, skipUngroupedVariableCheck, pathOnly } = {}) {\n\n // Create a copy of the prefixes\n var prefixesCopy = {};\n for (var prefix in prefixes || {})\n prefixesCopy[prefix] = prefixes[prefix];\n\n // Create a new parser with the given prefixes\n // (Workaround for https://github.com/zaach/jison/issues/241)\n var parser = new Parser();\n parser.parse = function () {\n Parser.base = baseIRI || '';\n Parser.prefixes = Object.create(prefixesCopy);\n Parser.factory = factory || new DataFactory();\n Parser.sparqlStar = Boolean(sparqlStar);\n Parser.pathOnly = Boolean(pathOnly);\n // We keep skipUngroupedVariableCheck for compatibility reasons.\n Parser.skipValidation = Boolean(skipValidation) || Boolean(skipUngroupedVariableCheck)\n return Parser.prototype.parse.apply(parser, arguments);\n };\n parser._resetBlanks = Parser._resetBlanks;\n return parser;\n },\n Generator: Generator,\n Wildcard: Wildcard,\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.toSparqlJs = exports.toSparql = exports.Factory = exports.Algebra = exports.translate = void 0;\nconst sparqlAlgebra_1 = __importDefault(require(\"./lib/sparqlAlgebra\"));\nexports.translate = sparqlAlgebra_1.default;\nconst Algebra = __importStar(require(\"./lib/algebra\"));\nexports.Algebra = Algebra;\nconst factory_1 = __importDefault(require(\"./lib/factory\"));\nexports.Factory = factory_1.default;\nconst sparql_1 = require(\"./lib/sparql\");\nObject.defineProperty(exports, \"toSparql\", { enumerable: true, get: function () { return sparql_1.toSparql; } });\nObject.defineProperty(exports, \"toSparqlJs\", { enumerable: true, get: function () { return sparql_1.toSparqlJs; } });\nconst util_1 = __importDefault(require(\"./lib/util\"));\nexports.Util = util_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expressionTypes = exports.types = void 0;\nvar types;\n(function (types) {\n types[\"ALT\"] = \"alt\";\n types[\"ASK\"] = \"ask\";\n types[\"BGP\"] = \"bgp\";\n types[\"CONSTRUCT\"] = \"construct\";\n types[\"DESCRIBE\"] = \"describe\";\n types[\"DISTINCT\"] = \"distinct\";\n types[\"EXPRESSION\"] = \"expression\";\n types[\"EXTEND\"] = \"extend\";\n types[\"FILTER\"] = \"filter\";\n types[\"FROM\"] = \"from\";\n types[\"GRAPH\"] = \"graph\";\n types[\"GROUP\"] = \"group\";\n types[\"INV\"] = \"inv\";\n types[\"JOIN\"] = \"join\";\n types[\"LEFT_JOIN\"] = \"leftjoin\";\n types[\"LINK\"] = \"link\";\n types[\"MINUS\"] = \"minus\";\n types[\"NOP\"] = \"nop\";\n types[\"NPS\"] = \"nps\";\n types[\"ONE_OR_MORE_PATH\"] = \"OneOrMorePath\";\n types[\"ORDER_BY\"] = \"orderby\";\n types[\"PATH\"] = \"path\";\n types[\"PATTERN\"] = \"pattern\";\n types[\"PROJECT\"] = \"project\";\n types[\"REDUCED\"] = \"reduced\";\n types[\"SEQ\"] = \"seq\";\n types[\"SERVICE\"] = \"service\";\n types[\"SLICE\"] = \"slice\";\n types[\"UNION\"] = \"union\";\n types[\"VALUES\"] = \"values\";\n types[\"ZERO_OR_MORE_PATH\"] = \"ZeroOrMorePath\";\n types[\"ZERO_OR_ONE_PATH\"] = \"ZeroOrOnePath\";\n types[\"COMPOSITE_UPDATE\"] = \"compositeupdate\";\n types[\"DELETE_INSERT\"] = \"deleteinsert\";\n types[\"LOAD\"] = \"load\";\n types[\"CLEAR\"] = \"clear\";\n types[\"CREATE\"] = \"create\";\n types[\"DROP\"] = \"drop\";\n types[\"ADD\"] = \"add\";\n types[\"MOVE\"] = \"move\";\n types[\"COPY\"] = \"copy\";\n})(types = exports.types || (exports.types = {}));\nvar expressionTypes;\n(function (expressionTypes) {\n expressionTypes[\"AGGREGATE\"] = \"aggregate\";\n expressionTypes[\"EXISTENCE\"] = \"existence\";\n expressionTypes[\"NAMED\"] = \"named\";\n expressionTypes[\"OPERATOR\"] = \"operator\";\n expressionTypes[\"TERM\"] = \"term\";\n expressionTypes[\"WILDCARD\"] = \"wildcard\";\n})(expressionTypes = exports.expressionTypes || (exports.expressionTypes = {}));\n//# sourceMappingURL=algebra.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst A = __importStar(require(\"./algebra\"));\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nclass Factory {\n constructor(dataFactory) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.stringType = this.createTerm('http://www.w3.org/2001/XMLSchema#string');\n }\n createAlt(input, flatten = true) { return this.flattenMulti({ type: A.types.ALT, input }, flatten); }\n createAsk(input) { return { type: A.types.ASK, input }; }\n createBoundAggregate(variable, aggregate, expression, distinct, separator) {\n const result = this.createAggregateExpression(aggregate, expression, distinct, separator);\n result.variable = variable;\n return result;\n }\n createBgp(patterns) { return { type: A.types.BGP, patterns }; }\n createConstruct(input, template) { return { type: A.types.CONSTRUCT, input, template }; }\n createDescribe(input, terms) { return { type: A.types.DESCRIBE, input, terms }; }\n createDistinct(input) { return { type: A.types.DISTINCT, input }; }\n createExtend(input, variable, expression) { return { type: A.types.EXTEND, input, variable, expression }; }\n createFrom(input, def, named) { return { type: A.types.FROM, input, default: def, named }; }\n createFilter(input, expression) { return { type: A.types.FILTER, input, expression }; }\n createGraph(input, name) { return { type: A.types.GRAPH, input, name }; }\n createGroup(input, variables, aggregates) { return { type: A.types.GROUP, input, variables, aggregates }; }\n createInv(path) { return { type: A.types.INV, path }; }\n createJoin(input, flatten = true) { return this.flattenMulti({ type: A.types.JOIN, input }, flatten); }\n createLeftJoin(left, right, expression) {\n if (expression)\n return { type: A.types.LEFT_JOIN, input: [left, right], expression };\n return { type: A.types.LEFT_JOIN, input: [left, right] };\n }\n createLink(iri) { return { type: A.types.LINK, iri }; }\n createMinus(left, right) { return { type: A.types.MINUS, input: [left, right] }; }\n createNop() { return { type: A.types.NOP }; }\n createNps(iris) { return { type: A.types.NPS, iris }; }\n createOneOrMorePath(path) { return { type: A.types.ONE_OR_MORE_PATH, path }; }\n createOrderBy(input, expressions) { return { type: A.types.ORDER_BY, input, expressions }; }\n createPath(subject, predicate, object, graph) {\n if (graph)\n return { type: A.types.PATH, subject, predicate, object, graph };\n return { type: A.types.PATH, subject, predicate, object, graph: this.dataFactory.defaultGraph() };\n }\n createPattern(subject, predicate, object, graph) {\n const pattern = this.dataFactory.quad(subject, predicate, object, graph);\n pattern.type = A.types.PATTERN;\n return pattern;\n }\n createProject(input, variables) { return { type: A.types.PROJECT, input, variables }; }\n createReduced(input) { return { type: A.types.REDUCED, input }; }\n createSeq(input, flatten = true) { return this.flattenMulti({ type: A.types.SEQ, input }, flatten); }\n createService(input, name, silent) { return { type: A.types.SERVICE, input, name, silent: Boolean(silent) }; }\n createSlice(input, start, length) {\n start = start || 0;\n if (length !== undefined)\n return { type: A.types.SLICE, input, start, length };\n return { type: A.types.SLICE, input, start };\n }\n createUnion(input, flatten = true) { return this.flattenMulti({ type: A.types.UNION, input }, flatten); }\n createValues(variables, bindings) { return { type: A.types.VALUES, variables, bindings }; }\n createZeroOrMorePath(path) { return { type: A.types.ZERO_OR_MORE_PATH, path }; }\n createZeroOrOnePath(path) { return { type: A.types.ZERO_OR_ONE_PATH, path }; }\n createAggregateExpression(aggregator, expression, distinct, separator) {\n if (separator)\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, separator, distinct };\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, distinct };\n }\n createExistenceExpression(not, input) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.EXISTENCE, not, input }; }\n createNamedExpression(name, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.NAMED, name, args }; }\n createOperatorExpression(operator, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.OPERATOR, operator, args }; }\n createTermExpression(term) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.TERM, term }; }\n createWildcardExpression() { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.WILDCARD, wildcard: new sparqljs_1.Wildcard() }; }\n createTerm(str) {\n if (str[0] === '$') {\n str = str.replace('$', '?');\n }\n return (0, rdf_string_1.stringToTerm)(str, this.dataFactory);\n }\n // Update functions\n createCompositeUpdate(updates) { return { type: A.types.COMPOSITE_UPDATE, updates }; }\n createDeleteInsert(deleteQuads, insertQuads, where) {\n const result = { type: A.types.DELETE_INSERT };\n if (deleteQuads)\n result.delete = deleteQuads;\n if (insertQuads)\n result.insert = insertQuads;\n if (where)\n result.where = where;\n return result;\n }\n createLoad(source, destination, silent) {\n const result = { type: A.types.LOAD, source };\n if (destination)\n result.destination = destination;\n return this.addSilent(result, Boolean(silent));\n }\n createClear(source, silent) {\n return this.addSilent({ type: A.types.CLEAR, source }, Boolean(silent));\n }\n createCreate(source, silent) {\n return this.addSilent({ type: A.types.CREATE, source }, Boolean(silent));\n }\n createDrop(source, silent) {\n return this.addSilent({ type: A.types.DROP, source }, Boolean(silent));\n }\n createAdd(source, destination, silent) {\n return this.addSilent({ type: A.types.ADD, source, destination }, Boolean(silent));\n }\n createMove(source, destination, silent) {\n return this.addSilent({ type: A.types.MOVE, source, destination }, Boolean(silent));\n }\n createCopy(source, destination, silent) {\n return this.addSilent({ type: A.types.COPY, source, destination }, Boolean(silent));\n }\n addSilent(input, silent) {\n if (silent)\n input.silent = silent;\n return input;\n }\n flattenMulti(input, flatten) {\n if (!flatten) {\n return input;\n }\n const type = input.type;\n const children = input.input;\n let newChildren = [];\n for (const child of children) {\n if (child.type === type) {\n newChildren.push(...child.input);\n }\n else {\n newChildren.push(child);\n }\n }\n input.input = newChildren;\n return input;\n }\n}\nexports.default = Factory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toSparqlJs = exports.toSparql = void 0;\nconst rdf_isomorphic_1 = require(\"rdf-isomorphic\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst types = Algebra.types;\nconst eTypes = Algebra.expressionTypes;\nlet context;\nconst factory = new factory_1.default();\nfunction toSparql(op, options = {}) {\n let generator = new sparqljs_1.Generator(options);\n return generator.stringify(toSparqlJs(op));\n}\nexports.toSparql = toSparql;\nfunction toSparqlJs(op) {\n resetContext();\n op = removeQuads(op);\n let result = translateOperation(op);\n if (result.type === 'group')\n return result.patterns[0];\n return result;\n}\nexports.toSparqlJs = toSparqlJs;\nfunction resetContext() {\n context = { project: false, extend: [], group: [], aggregates: [], order: [] };\n}\nfunction translateOperation(op) {\n // this allows us to differentiate between BIND and SELECT when translating EXTEND\n // GRAPH was added because the way graphs get added back here is not the same as how they get added in the future\n // ^ seems fine but might have to be changed if problems get detected in the future\n if (op.type !== types.EXTEND && op.type !== types.ORDER_BY && op.type !== types.GRAPH)\n context.project = false;\n switch (op.type) {\n case types.EXPRESSION: return translateExpression(op);\n case types.ASK: return translateProject(op, types.ASK);\n case types.BGP: return translateBgp(op);\n case types.CONSTRUCT: return translateConstruct(op);\n case types.DESCRIBE: return translateProject(op, types.DESCRIBE);\n case types.DISTINCT: return translateDistinct(op);\n case types.EXTEND: return translateExtend(op);\n case types.FROM: return translateFrom(op);\n case types.FILTER: return translateFilter(op);\n case types.GRAPH: return translateGraph(op);\n case types.GROUP: return translateGroup(op);\n case types.JOIN: return translateJoin(op);\n case types.LEFT_JOIN: return translateLeftJoin(op);\n case types.MINUS: return translateMinus(op);\n case types.NOP: return {};\n case types.ORDER_BY: return translateOrderBy(op);\n case types.PATH: return translatePath(op);\n case types.PATTERN: return translatePattern(op);\n case types.PROJECT: return translateProject(op, types.PROJECT);\n case types.REDUCED: return translateReduced(op);\n case types.SERVICE: return translateService(op);\n case types.SLICE: return translateSlice(op);\n case types.UNION: return translateUnion(op);\n case types.VALUES: return translateValues(op);\n // UPDATE operations\n case types.COMPOSITE_UPDATE: return translateCompositeUpdate(op);\n case types.DELETE_INSERT: return translateDeleteInsert(op);\n case types.LOAD: return translateLoad(op);\n case types.CLEAR: return translateClear(op);\n case types.CREATE: return translateCreate(op);\n case types.DROP: return translateDrop(op);\n case types.ADD: return translateAdd(op);\n case types.MOVE: return translateMove(op);\n case types.COPY: return translateCopy(op);\n }\n throw new Error(`Unknown Operation type ${op.type}`);\n}\nfunction translateExpression(expr) {\n switch (expr.expressionType) {\n case eTypes.AGGREGATE: return translateAggregateExpression(expr);\n case eTypes.EXISTENCE: return translateExistenceExpression(expr);\n case eTypes.NAMED: return translateNamedExpression(expr);\n case eTypes.OPERATOR: return translateOperatorExpression(expr);\n case eTypes.TERM: return translateTermExpression(expr);\n case eTypes.WILDCARD: return translateWildcardExpression(expr);\n }\n throw new Error(`Unknown Expression Operation type ${expr.expressionType}`);\n}\nfunction translatePathComponent(path) {\n switch (path.type) {\n case types.ALT: return translateAlt(path);\n case types.INV: return translateInv(path);\n case types.LINK: return translateLink(path);\n case types.NPS: return translateNps(path);\n case types.ONE_OR_MORE_PATH: return translateOneOrMorePath(path);\n case types.SEQ: return translateSeq(path);\n case types.ZERO_OR_MORE_PATH: return translateZeroOrMorePath(path);\n case types.ZERO_OR_ONE_PATH: return translateZeroOrOnePath(path);\n }\n throw new Error(`Unknown Path type ${path.type}`);\n}\nfunction translateTerm(term) {\n return (0, rdf_string_1.termToString)(term);\n}\n// ------------------------- EXPRESSIONS -------------------------\nfunction translateAggregateExpression(expr) {\n const result = {\n expression: translateExpression(expr.expression),\n type: 'aggregate',\n aggregation: expr.aggregator,\n distinct: expr.distinct\n };\n if (expr.separator)\n result.separator = expr.separator;\n return result;\n}\nfunction translateExistenceExpression(expr) {\n return {\n type: 'operation',\n operator: expr.not ? 'notexists' : 'exists',\n args: [{\n type: 'group',\n patterns: util_1.default.flatten([translateOperation(expr.input)])\n }]\n };\n}\nfunction translateNamedExpression(expr) {\n return {\n type: 'functionCall',\n // Wrong typings\n function: expr.name,\n args: expr.args.map(translateExpression)\n };\n}\nfunction translateOperatorExpression(expr) {\n if (expr.operator === 'desc') {\n const result = { expression: translateExpression(expr.args[0]) };\n result.descending = true;\n return result;\n }\n const result = {\n type: 'operation',\n operator: expr.operator,\n args: expr.args.map(translateExpression)\n };\n if (result.operator === 'in' || result.operator === 'notin')\n result.args = [result.args[0]].concat([result.args.slice(1)]);\n return result;\n}\nfunction translateTermExpression(expr) {\n return expr.term;\n}\nfunction translateWildcardExpression(expr) {\n return expr.wildcard;\n}\nfunction arrayToPattern(input) {\n if (!Array.isArray(input))\n return input;\n if (input.length === 1)\n return input[0];\n return {\n type: 'group',\n patterns: input,\n };\n}\n// ------------------------- OPERATIONS -------------------------\n// these get translated in the project function\nfunction translateBoundAggregate(op) {\n return op;\n}\nfunction translateBgp(op) {\n let patterns = op.patterns.map(translatePattern);\n if (patterns.length === 0)\n return null;\n return {\n type: 'bgp',\n triples: patterns\n };\n}\nfunction translateConstruct(op) {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: op.template.map(translatePattern),\n where: util_1.default.flatten([\n translateOperation(op.input)\n ])\n };\n}\nfunction translateDistinct(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].distinct = true;\n return result;\n}\nfunction translateExtend(op) {\n if (context.project) {\n context.extend.push(op);\n return translateOperation(op.input);\n }\n return util_1.default.flatten([\n translateOperation(op.input),\n {\n type: 'bind',\n variable: op.variable,\n expression: translateExpression(op.expression)\n }\n ]);\n}\nfunction translateFrom(op) {\n const result = translateOperation(op.input);\n // Can't type as CONSTRUCT queries do not have `from` field in their type\n let obj = result;\n // project is nested in group object\n if (result.type === 'group') {\n obj = result.patterns[0];\n }\n obj.from = {\n default: op.default,\n named: op.named\n };\n return result;\n}\nfunction translateFilter(op) {\n return {\n type: 'group',\n patterns: util_1.default.flatten([\n translateOperation(op.input),\n { type: 'filter', expression: translateExpression(op.expression) }\n ])\n };\n}\nfunction translateGraph(op) {\n return {\n type: 'graph',\n patterns: util_1.default.flatten([translateOperation(op.input)]),\n name: op.name\n };\n}\nfunction translateGroup(op) {\n const input = translateOperation(op.input);\n const aggs = op.aggregates.map(translateBoundAggregate);\n context.aggregates.push(...aggs);\n // TODO: apply possible extends\n context.group.push(...op.variables);\n return input;\n}\nfunction translateJoin(op) {\n const arr = util_1.default.flatten(op.input.map(translateOperation));\n // Merge bgps\n // This is possible if one side was a path and the other a bgp for example\n return arr.reduce((result, val) => {\n if (val.type !== 'bgp' || result.length == 0 || result[result.length - 1].type !== 'bgp') {\n result.push(val);\n }\n else {\n result[result.length - 1].triples.push(...val.triples);\n }\n return result;\n }, []);\n}\nfunction translateLeftJoin(op) {\n const leftjoin = {\n type: 'optional',\n patterns: [\n translateOperation(op.input[1])\n ]\n };\n if (op.expression) {\n leftjoin.patterns.push({\n type: 'filter',\n expression: translateExpression(op.expression)\n });\n }\n leftjoin.patterns = util_1.default.flatten(leftjoin.patterns);\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n leftjoin\n ]);\n}\nfunction translateMinus(op) {\n let patterns = translateOperation(op.input[1]);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n {\n type: 'minus',\n patterns: patterns\n }\n ]);\n}\nfunction translateOrderBy(op) {\n context.order.push(...op.expressions);\n return translateOperation(op.input);\n}\nfunction translatePath(op) {\n return {\n type: 'bgp',\n triples: [{\n subject: op.subject,\n predicate: translatePathComponent(op.predicate),\n object: op.object\n }]\n };\n}\nfunction translatePattern(op) {\n return {\n subject: op.subject,\n predicate: op.predicate,\n object: op.object\n };\n}\nfunction replaceAggregatorVariables(s, map) {\n let st = util_1.default.isSimpleTerm(s) ? translateTerm(s) : s;\n if (typeof st === 'string') {\n if (map[st])\n return map[st];\n }\n else if (Array.isArray(s)) {\n s = s.map(e => replaceAggregatorVariables(e, map));\n }\n else {\n for (let key of Object.keys(s))\n s[key] = replaceAggregatorVariables(s[key], map);\n }\n return s;\n}\nfunction translateProject(op, type) {\n const result = {\n type: 'query',\n prefixes: {}\n };\n // Makes typing easier in some places\n const select = result;\n let variables;\n if (type === types.PROJECT) {\n result.queryType = 'SELECT';\n variables = op.variables;\n }\n else if (type === types.ASK) {\n result.queryType = 'ASK';\n }\n else if (type === types.DESCRIBE) {\n result.queryType = 'DESCRIBE';\n variables = op.terms;\n }\n // backup values in case of nested queries\n // everything in extend, group, etc. is irrelevant for this project call\n const extend = context.extend;\n const group = context.group;\n const aggregates = context.aggregates;\n const order = context.order;\n resetContext();\n context.project = true;\n let input = util_1.default.flatten([translateOperation(op.input)]);\n if (input.length === 1 && input[0].type === 'group')\n input = input[0].patterns;\n result.where = input;\n let aggregators = {};\n // these can not reference each other\n for (let agg of context.aggregates)\n aggregators[translateTerm(agg.variable)] = translateExpression(agg);\n // do these in reverse order since variables in one extend might apply to an expression in an other extend\n let extensions = {};\n for (let i = context.extend.length - 1; i >= 0; --i) {\n let e = context.extend[i];\n extensions[translateTerm(e.variable)] = replaceAggregatorVariables(translateExpression(e.expression), aggregators);\n }\n if (context.group.length > 0)\n select.group = context.group.map(variable => {\n let v = translateTerm(variable);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // make sure there is only 1 'AS' statement\n return {\n variable,\n expression: result\n };\n }\n return { expression: variable };\n });\n // descending expressions will already be in the correct format due to the structure of those\n if (context.order.length > 0)\n select.order = context.order.map(translateOperation).map(o => o.descending ? o : ({ expression: o }));\n // this needs to happen after the group because it might depend on variables generated there\n if (variables) {\n select.variables = variables.map((term) => {\n let v = translateTerm(term);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // remove used extensions so only unused ones remain\n return {\n variable: term,\n expression: result,\n };\n }\n return term;\n });\n // if the * didn't match any variables this would be empty\n if (select.variables.length === 0)\n select.variables = [new sparqljs_1.Wildcard()];\n }\n // It is possible that at this point some extensions have not yet been resolved.\n // These would be bind operations that are not used in a GROUP BY or SELECT body.\n // We still need to add them though, as they could be relevant to the other extensions.\n const extensionEntries = Object.entries(extensions);\n if (extensionEntries.length > 0) {\n select.where = select.where || [];\n for (const [key, value] of extensionEntries) {\n select.where.push({\n type: 'bind',\n variable: (0, rdf_string_1.stringToTerm)(key),\n expression: value\n });\n }\n }\n // convert filter to 'having' if it contains an aggregator variable\n // could always convert, but is nicer to use filter when possible\n if (result.where.length > 0 && result.where[result.where.length - 1].type === 'filter') {\n const filter = result.where[result.where.length - 1];\n if (objectContainsValues(filter, Object.keys(aggregators))) {\n select.having = util_1.default.flatten([replaceAggregatorVariables(filter.expression, aggregators)]);\n result.where.splice(-1);\n }\n }\n context.extend = extend;\n context.group = group;\n context.aggregates = aggregates;\n context.order = order;\n // subqueries need to be in a group, this will be removed again later for the root query\n return { type: 'group', patterns: [select] };\n}\nfunction objectContainsValues(o, vals) {\n if (util_1.default.isSimpleTerm(o))\n return vals.indexOf(translateTerm(o)) >= 0;\n if (Array.isArray(o))\n return o.some(e => objectContainsValues(e, vals));\n if (o === Object(o))\n return Object.keys(o).some(key => objectContainsValues(o[key], vals));\n return vals.indexOf(o) >= 0;\n}\nfunction translateReduced(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].reduced = true;\n return result;\n}\nfunction translateService(op) {\n let patterns = translateOperation(op.input);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return {\n type: 'service',\n // Typings are wrong, name can also be a variable\n name: op.name,\n silent: op.silent,\n patterns\n };\n}\nfunction translateSlice(op) {\n let result = translateOperation(op.input);\n // results can be nested in a group object\n let obj = result;\n if (result.type && result.type === 'group')\n obj = result.patterns[0];\n if (op.start !== 0)\n obj.offset = op.start;\n if (op.length !== undefined)\n obj.limit = op.length;\n return result;\n}\nfunction translateUnion(op) {\n return {\n type: 'union',\n patterns: op.input.map(translateOperation).map(arrayToPattern),\n };\n}\nfunction translateValues(op) {\n // TODO: check if handled correctly when outside of select block\n return {\n type: 'values',\n values: op.bindings.map(binding => {\n let result = {};\n for (let v of op.variables) {\n let s = `?${v.value}`;\n if (binding[s])\n result[s] = binding[s];\n else\n result[s] = undefined;\n }\n return result;\n })\n };\n}\n// PATH COMPONENTS\nfunction translateAlt(path) {\n const mapped = path.input.map(translatePathComponent);\n if (mapped.every(entry => 'pathType' in entry && entry.pathType === '!')) {\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: util_1.default.flatten(mapped.map(entry => entry.items))\n }]\n };\n }\n return {\n type: 'path',\n pathType: '|',\n items: mapped\n };\n}\nfunction translateInv(path) {\n if (path.path.type === types.NPS) {\n const inv = path.path.iris.map((iri) => {\n return {\n type: 'path',\n pathType: '^',\n items: [iri]\n };\n });\n if (inv.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: inv\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: inv\n }]\n };\n }\n return {\n type: 'path',\n pathType: '^',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateLink(path) {\n return path.iri;\n}\nfunction translateNps(path) {\n if (path.iris.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: path.iris\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: path.iris\n }]\n };\n}\nfunction translateOneOrMorePath(path) {\n return {\n type: 'path',\n pathType: '+',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateSeq(path) {\n return {\n type: 'path',\n pathType: '/',\n items: path.input.map(translatePathComponent)\n };\n}\nfunction translateZeroOrMorePath(path) {\n return {\n type: 'path',\n pathType: '*',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateZeroOrOnePath(path) {\n // Typings are missing '?' operator\n return {\n type: 'path',\n // Typings are missing this path\n pathType: '?',\n items: [translatePathComponent(path.path)]\n };\n}\n// UPDATE OPERATIONS\nfunction translateCompositeUpdate(op) {\n const updates = op.updates.map(update => {\n const result = translateOperation(update);\n return result.updates[0];\n });\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateDeleteInsert(op) {\n var _a;\n let where = op.where;\n let use = undefined;\n if (where && where.type === types.FROM) {\n let from = where;\n where = from.input;\n use = { default: from.default, named: from.named };\n }\n const updates = [{\n updateType: 'insertdelete',\n delete: convertUpdatePatterns(op.delete || []),\n insert: convertUpdatePatterns(op.insert || []),\n }];\n // Typings don't support 'using' yet\n if (use)\n updates[0].using = use;\n // corresponds to empty array in SPARQL.js\n if (!where || (where.type === types.BGP && where.patterns.length === 0))\n updates[0].where = [];\n else {\n const graphs = [];\n let result = translateOperation(removeQuadsRecursive(where, graphs));\n if (result.type === 'group')\n updates[0].where = result.patterns;\n else\n updates[0].where = [result];\n // graph might not be applied yet since there was no project\n // this can only happen if there was a single graph\n if (graphs.length > 0) {\n if (graphs.length !== 1)\n throw new Error('This is unexpected and might indicate an error in graph handling for updates.');\n // ignore if default graph\n if (((_a = graphs[0]) === null || _a === void 0 ? void 0 : _a.value) !== '')\n updates[0].where = [{ type: 'graph', patterns: updates[0].where, name: graphs[0] }];\n }\n }\n // not really necessary but can give cleaner looking queries\n if (!op.delete && !op.where) {\n updates[0].updateType = 'insert';\n delete updates[0].delete;\n delete updates[0].where;\n }\n else if (!op.insert && !op.where) {\n delete updates[0].insert;\n delete updates[0].where;\n if (op.delete.some(pattern => pattern.subject.termType === 'Variable' ||\n pattern.predicate.termType === 'Variable' ||\n pattern.object.termType === 'Variable'))\n updates[0].updateType = 'deletewhere';\n else\n updates[0].updateType = 'delete';\n }\n else if (!op.insert && op.where && op.where.type === 'bgp') {\n if ((0, rdf_isomorphic_1.isomorphic)(op.delete, op.where.patterns)) {\n delete updates[0].where;\n updates[0].updateType = 'deletewhere';\n }\n }\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateLoad(op) {\n // Typings are wrong, destiniation is optional\n const updates = [{ type: 'load', silent: Boolean(op.silent), source: op.source }];\n if (op.destination)\n updates[0].destination = op.destination;\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateClear(op) {\n return translateClearCreateDrop(op, 'clear');\n}\nfunction translateCreate(op) {\n return translateClearCreateDrop(op, 'create');\n}\nfunction translateDrop(op) {\n return translateClearCreateDrop(op, 'drop');\n}\nfunction translateClearCreateDrop(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n // Typings are wrong, type is not required, see for example \"clear-drop\" test\n if (op.source === 'DEFAULT')\n updates[0].graph = { default: true };\n else if (op.source === 'NAMED')\n updates[0].graph = { named: true };\n else if (op.source === 'ALL')\n updates[0].graph = { all: true };\n else\n updates[0].graph = { type: 'graph', name: op.source };\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateAdd(op) {\n return translateUpdateGraphShortcut(op, 'add');\n}\nfunction translateMove(op) {\n return translateUpdateGraphShortcut(op, 'move');\n}\nfunction translateCopy(op) {\n return translateUpdateGraphShortcut(op, 'copy');\n}\nfunction translateUpdateGraphShortcut(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n updates[0].source = op.source === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.source };\n updates[0].destination = op.destination === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.destination };\n return { prefixes: {}, type: 'update', updates };\n}\n// similar to removeQuads but more simplified for UPDATEs\nfunction convertUpdatePatterns(patterns) {\n if (!patterns)\n return [];\n const graphs = {};\n patterns.forEach(pattern => {\n const graph = pattern.graph.value;\n if (!graphs[graph])\n graphs[graph] = [];\n graphs[graph].push(pattern);\n });\n return Object.keys(graphs).map(graph => {\n if (graph === '')\n return { type: 'bgp', triples: graphs[graph].map(translatePattern) };\n return { type: 'graph', triples: graphs[graph].map(translatePattern), name: graphs[graph][0].graph };\n });\n}\nfunction removeQuads(op) {\n return removeQuadsRecursive(op, []);\n}\n// remove quads\nfunction removeQuadsRecursive(op, graphs) {\n if (Array.isArray(op))\n return op.map(sub => removeQuadsRecursive(sub, graphs));\n if (!op.type)\n return op;\n // UPDATE operations with Patterns handle graphs a bit differently\n if (op.type === types.DELETE_INSERT)\n return op;\n if ((op.type === types.PATTERN || op.type === types.PATH) && op.graph) {\n graphs.push(op.graph);\n // Remove non-default graphs\n if (op.graph.name !== '')\n return op.type === types.PATTERN ?\n factory.createPattern(op.subject, op.predicate, op.object) :\n factory.createPath(op.subject, op.predicate, op.object);\n return op;\n }\n const result = {};\n const keyGraphs = {}; // unique graph per key\n const globalNames = {}; // track all the unique graph names for the entire Operation\n for (let key of Object.keys(op)) {\n const newGraphs = [];\n result[key] = removeQuadsRecursive(op[key], newGraphs);\n if (newGraphs.length > 0) {\n keyGraphs[key] = newGraphs;\n for (const graph of newGraphs) {\n globalNames[graph.value] = graph;\n }\n }\n }\n const graphNameSet = Object.keys(globalNames);\n if (graphNameSet.length > 0) {\n // We also need to create graph statement if we are at the edge of certain operations\n if (graphNameSet.length === 1 && ![types.PROJECT, types.SERVICE].includes(op.type))\n graphs.push(globalNames[graphNameSet[0]]);\n else if (op.type === types.BGP) {\n // This is the specific case that got changed because of using quads.\n return splitBgpToGraphs(op, keyGraphs.patterns);\n }\n else {\n // multiple graphs (or project), need to create graph objects for them\n for (let key of Object.keys(keyGraphs)) {\n const value = result[key];\n if (Array.isArray(value))\n result[key] = value.map((child, idx) => keyGraphs[key][0].value === '' ? child : factory.createGraph(child, keyGraphs[key][idx]));\n else if (keyGraphs[key][0].value !== '')\n result[key] = factory.createGraph(value, keyGraphs[key][0]);\n }\n }\n }\n return result;\n}\n// `graphs` should be an array of length identical to `op.patterns`, containing the corresponding graph for each triple.\nfunction splitBgpToGraphs(op, graphs) {\n var _a;\n // Split patterns per graph\n const graphPatterns = {};\n for (let i = 0; i < op.patterns.length; ++i) {\n const pattern = op.patterns[i];\n const graphName = graphs[i].value;\n graphPatterns[graphName] = (_a = graphPatterns[graphName]) !== null && _a !== void 0 ? _a : { patterns: [], graph: graphs[i] };\n graphPatterns[graphName].patterns.push(pattern);\n }\n // Create graph objects for every cluster\n let children = [];\n for (const [graphName, { patterns, graph }] of Object.entries(graphPatterns)) {\n const bgp = factory.createBgp(patterns);\n children.push(graphName === '' ? bgp : factory.createGraph(bgp, graph));\n }\n // Join the graph objects\n let join = children[0];\n for (let i = 1; i < children.length; ++i)\n join = factory.createJoin([join, children[i]]);\n return join;\n}\n//# sourceMappingURL=sparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst equal = require(\"fast-deep-equal/es6\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst Parser = require('sparqljs').Parser;\nconst types = Algebra.types;\nlet variables = new Set();\nlet varCount = 0;\nlet useQuads = false;\nlet factory;\n/**\n * Translates the given SPARQL query to SPARQL Algebra.\n * @param sparql - Either a SPARQL string or an object generated by sparql.js\n * @param options - Optional options object. Current options:\n * * dataFactory: The Datafactory used to generate terms. Default @rdfjs/data-model.\n * * quads: Boolean indicating whether triples should be converted to Quads (consumes GRAPH statements). Default false.\n * * prefixes: Pre-defined prefixes for the given query. Default empty.\n * * baseIRI: Base IRI that should be used for the query. Default undefined (throws error if required).\n * @returns {Operation}\n */\nfunction translate(sparql, options) {\n options = options || {};\n factory = new factory_1.default(options.dataFactory);\n let query;\n if (isString(sparql)) {\n let parser = new Parser(options);\n // resets the identifier counter used for blank nodes\n // provides nicer and more consistent output if there are multiple calls\n parser._resetBlanks();\n query = parser.parse(sparql);\n }\n else {\n query = sparql;\n }\n return translateQuery(query, options.quads, options.blankToVariable);\n}\nexports.default = translate;\nfunction translateQuery(sparql, quads, blankToVariable) {\n // this set is filled in during the inScopeVariables call\n variables = new Set();\n varCount = 0;\n useQuads = Boolean(quads);\n // Assume this is an empty query\n if (!sparql.type)\n return factory.createNop();\n if (sparql.type !== 'query' && sparql.type !== 'update')\n throw new Error('Translate only works on complete query or update objects.');\n let res;\n // find ALL variables here to fill `variables` array\n findAllVariables(sparql);\n if (sparql.type === 'query') {\n // group and where are identical, having only 1 makes parsing easier, can be undefined in DESCRIBE\n const group = { type: 'group', patterns: sparql.where || [] };\n res = translateGraphPattern(group);\n res = translateAggregates(sparql, res);\n }\n else if (sparql.type === 'update') {\n res = translateUpdate(sparql);\n }\n if (blankToVariable) {\n res = translateBlankNodesToVariables(res);\n }\n return res;\n}\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isTerm(term) {\n return Boolean(term === null || term === void 0 ? void 0 : term.termType);\n}\n// This is not completely correct but this way we also catch SPARQL.js triples\nfunction isTriple(triple) {\n return triple.subject && triple.predicate && triple.object;\n}\nfunction isVariable(term) {\n return (term === null || term === void 0 ? void 0 : term.termType) === 'Variable';\n}\n// Will be used to make sure new variables don't overlap\nfunction findAllVariables(thingy) {\n if (isTerm(thingy)) {\n if (isVariable(thingy)) {\n // Variables don't store the `?`\n variables.add(`?${thingy.value}`);\n }\n }\n else if (Array.isArray(thingy)) {\n for (const entry of thingy)\n findAllVariables(entry);\n }\n else if (thingy && typeof thingy === 'object') {\n for (let key of Object.keys(thingy)) {\n // Some variables are hidden in keys (specifically for VALUES)\n if (key.startsWith('?')) {\n variables.add(key);\n }\n else if (key.startsWith('$')) {\n variables.add(`?${key.slice(1)}`);\n }\n findAllVariables(thingy[key]);\n }\n }\n}\n// 18.2.1\nfunction inScopeVariables(thingy) {\n let inScope = {};\n if (isTriple(thingy)) {\n // Note that this could both be an actual Quad or a SPARQL.js triple (without graph)\n const result = [\n inScopeVariables(thingy.subject),\n inScopeVariables(thingy.predicate),\n inScopeVariables(thingy.object),\n thingy.graph ? inScopeVariables(thingy.graph) : {}\n ];\n Object.assign(inScope, ...result);\n }\n else if (isTerm(thingy)) {\n if (isVariable(thingy))\n inScope[thingy.value] = thingy;\n }\n else if (thingy.type === 'bgp') {\n // Slightly cheating but this is a subset of what we support so is fine\n const quads = thingy.triples;\n Object.assign(inScope, ...quads.map(inScopeVariables));\n }\n else if (thingy.type === 'path') {\n // A path predicate should not have variables but just iterating so we could theoretically support this\n Object.assign(inScope, ...thingy.items.map(inScopeVariables));\n }\n else if (thingy.type === 'group' || thingy.type === 'union' || thingy.type === 'optional') {\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'service' || thingy.type === 'graph') {\n Object.assign(inScope, inScopeVariables(thingy.name));\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'bind') {\n Object.assign(inScope, inScopeVariables(thingy.variable));\n }\n else if (thingy.type === 'values') {\n if (thingy.values.length > 0) {\n const vars = Object.keys(thingy.values[0]).map(v => factory.createTerm(v));\n Object.assign(inScope, ...vars.map(inScopeVariables));\n }\n }\n else if (thingy.type === 'query') {\n if (thingy.queryType === 'SELECT' || thingy.queryType === 'DESCRIBE') {\n if (thingy.where && thingy.variables.some(util_1.default.isWildcard))\n Object.assign(inScope, ...thingy.where.map(inScopeVariables));\n for (const v of thingy.variables) {\n if (isVariable(v))\n Object.assign(inScope, inScopeVariables(v));\n else if (v.variable)\n Object.assign(inScope, inScopeVariables(v.variable));\n }\n if (thingy.queryType === 'SELECT') {\n if (thingy.group) {\n // Grouping can be a VariableExpression, typings are wrong\n for (const g of thingy.group) {\n if (g.variable)\n Object.assign(inScope, inScopeVariables(g.variable));\n }\n }\n if (thingy.values) {\n const values = { type: 'values', values: thingy.values };\n Object.assign(inScope, inScopeVariables(values));\n }\n }\n }\n }\n return inScope;\n}\nfunction translateGraphPattern(thingy) {\n // 18.2.2.1\n // already done by sparql parser\n // 18.2.2.3\n // 18.2.2.4\n // 18.2.2.5\n // In Sparql.js, a group with a single BGP in it is a single object.\n if (thingy.type === 'bgp') {\n return translateBgp(thingy);\n }\n // 18.2.2.6 - GroupOrUnionGraphPattern\n if (thingy.type === 'union')\n return factory.createUnion(thingy.patterns.map((p) => {\n // sparqljs doesn't always indicate the children are groups\n if (p.type !== 'group')\n p = { type: 'group', patterns: [p] };\n return translateGraphPattern(p);\n }));\n // 18.2.2.6 - GraphGraphPattern\n if (thingy.type === 'graph') {\n // Sparql.js combines the group graph pattern and the graph itself in the same object.\n // We split here so the group graph pattern can be interpreted correctly.\n const group = { type: 'group', patterns: thingy.patterns };\n let result = translateGraphPattern(group);\n // Output depends on if we use quads or not\n if (useQuads)\n result = recurseGraph(result, thingy.name);\n else\n result = factory.createGraph(result, thingy.name);\n return result;\n }\n // 18.2.2.6 - InlineData\n if (thingy.type === 'values')\n return translateInlineData(thingy);\n // 18.2.2.6 - SubSelect\n if (thingy.type === 'query')\n return translateQuery(thingy, useQuads, false);\n if (thingy.type === 'group') {\n // 18.2.2.2\n let filters = [];\n let nonfilters = [];\n for (let pattern of thingy.patterns)\n (pattern.type === 'filter' ? filters : nonfilters).push(pattern);\n // 18.2.2.6 - GroupGraphPattern\n let result = nonfilters.reduce(accumulateGroupGraphPattern, factory.createBgp([]));\n // 18.2.2.7\n let expressions = filters.map(filter => translateExpression(filter.expression));\n if (expressions.length > 0)\n result = factory.createFilter(result, expressions.reduce((acc, exp) => factory.createOperatorExpression('&&', [acc, exp])));\n return result;\n }\n throw new Error(`Unexpected type: ${thingy.type}`);\n}\nfunction translateExpression(exp) {\n if (util_1.default.isSimpleTerm(exp))\n return factory.createTermExpression(exp);\n if (util_1.default.isQuad(exp)) {\n if (util_1.default.hasQuadVariables(exp))\n return factory.createOperatorExpression('triple', [\n translateExpression(exp.subject),\n translateExpression(exp.predicate),\n translateExpression(exp.object),\n ]);\n else\n return factory.createTermExpression(exp);\n }\n if (util_1.default.isWildcard(exp))\n return factory.createWildcardExpression();\n if ('aggregation' in exp)\n return factory.createAggregateExpression(exp.aggregation, translateExpression(exp.expression), Boolean(exp.distinct), exp.separator);\n if ('function' in exp)\n // Outdated typings\n return factory.createNamedExpression(exp.function, exp.args.map(translateExpression));\n if ('operator' in exp) {\n if (exp.operator === 'exists' || exp.operator === 'notexists')\n return factory.createExistenceExpression(exp.operator === 'notexists', translateGraphPattern(exp.args[0]));\n if (exp.operator === 'in' || exp.operator === 'notin')\n exp.args = [exp.args[0]].concat(exp.args[1]); // sparql.js uses 2 arguments with the second one being a list\n return factory.createOperatorExpression(exp.operator, exp.args.map(translateExpression));\n }\n throw new Error(`Unknown expression: ${JSON.stringify(exp)}`);\n}\nfunction translateBgp(thingy) {\n let patterns = [];\n let joins = [];\n for (let t of thingy.triples) {\n if ('pathType' in t.predicate) {\n // translatePath returns a mix of Quads and Paths\n let path = translatePath(t);\n for (let p of path) {\n if (p.type === types.PATH) {\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n patterns = [];\n joins.push(p);\n }\n else\n patterns.push(p);\n }\n }\n else\n patterns.push(translateQuad(t));\n }\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n if (joins.length === 1)\n return joins[0];\n return factory.createJoin(joins);\n}\nfunction translatePath(triple) {\n let sub = triple.subject;\n let pred = translatePathPredicate(triple.predicate);\n let obj = triple.object;\n return simplifyPath(sub, pred, obj);\n}\nfunction translatePathPredicate(predicate) {\n if (util_1.default.isSimpleTerm(predicate)) {\n if (predicate.termType === 'NamedNode')\n return factory.createLink(predicate);\n else\n throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(predicate)}`);\n }\n if (predicate.pathType === '^')\n return factory.createInv(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '!') {\n // negation is either over a single predicate or a list of disjuncted properties\n let normals = [];\n let inverted = [];\n let items;\n if ('pathType' in predicate.items[0] && predicate.items[0].pathType === '|')\n items = predicate.items[0].items; // the | element\n else\n items = predicate.items;\n for (let item of items) {\n if (util_1.default.isSimpleTerm(item))\n normals.push(item);\n else if (item.pathType === '^')\n inverted.push(item.items[0]);\n else\n throw new Error(`Unexpected item: ${JSON.stringify(item)}`);\n }\n // NPS elements do not have the LINK function\n let normalElement = factory.createNps(normals);\n let invertedElement = factory.createInv(factory.createNps(inverted));\n if (inverted.length === 0)\n return normalElement;\n if (normals.length === 0)\n return invertedElement;\n return factory.createAlt([normalElement, invertedElement,]);\n }\n if (predicate.pathType === '/')\n return factory.createSeq(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '|')\n return factory.createAlt(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '*')\n return factory.createZeroOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '+')\n return factory.createOneOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '?')\n return factory.createZeroOrOnePath(translatePathPredicate(predicate.items[0]));\n throw new Error(`Unable to translate path expression ${JSON.stringify(predicate)}`);\n}\nfunction simplifyPath(subject, predicate, object) {\n if (predicate.type === types.LINK)\n return [factory.createPattern(subject, predicate.iri, object)];\n if (predicate.type === types.INV)\n return simplifyPath(object, predicate.path, subject);\n if (predicate.type === types.SEQ) {\n let joiner = subject;\n return util_1.default.flatten(predicate.input.map((subOp, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? object : generateFreshVar();\n const simplifiedPath = simplifyPath(joiner, subOp, nextJoiner);\n if (nextJoiner.termType === 'Variable') {\n joiner = nextJoiner;\n }\n return simplifiedPath;\n }));\n }\n return [factory.createPath(subject, predicate, object)];\n}\nfunction generateFreshVar() {\n let v = `?var${varCount++}`;\n if (variables.has(v))\n return generateFreshVar();\n variables.add(v);\n return factory.createTerm(v);\n}\nfunction translateQuad(quad) {\n if ('pathType' in quad.predicate) {\n throw new Error('Trying to translate property path to quad.');\n }\n // Graphs are needed here\n // TODO: investigate if typings are wrong or if we internally add graphs to these\n return factory.createPattern(quad.subject, quad.predicate, quad.object, quad.graph);\n}\nlet typeVals = Object.values(types);\nfunction recurseGraph(thingy, graph, replacement) {\n if (thingy.type === types.GRAPH) {\n if (replacement) {\n // At this point we would lose track of the replacement which would result in incorrect results\n // This would indicate the library is not being used as intended though\n throw new Error('Recursing through nested GRAPH statements with a replacement is impossible.');\n }\n // In case there were nested GRAPH statements that were not recursed yet for some reason\n thingy = recurseGraph(thingy.input, thingy.name);\n }\n else if (thingy.type === types.SERVICE) {\n // Service blocks are not affected by enclosing GRAPH statements, so nothing is modified in this block.\n // See https://github.com/joachimvh/SPARQLAlgebra.js/pull/104#issuecomment-1838016303\n }\n else if (thingy.type === types.BGP)\n thingy.patterns = thingy.patterns.map(quad => {\n if (replacement) {\n if (quad.subject.equals(graph))\n quad.subject = replacement;\n if (quad.predicate.equals(graph))\n quad.predicate = replacement;\n if (quad.object.equals(graph))\n quad.object = replacement;\n }\n if (quad.graph.termType === 'DefaultGraph')\n quad.graph = graph;\n return quad;\n });\n else if (thingy.type === types.PATH) {\n if (replacement) {\n if (thingy.subject.equals(graph))\n thingy.subject = replacement;\n if (thingy.object.equals(graph))\n thingy.object = replacement;\n }\n if (thingy.graph.termType === 'DefaultGraph')\n thingy.graph = graph;\n }\n // need to replace variables in subqueries should the graph also be a variable of the same name\n // unless the subquery projects that variable\n else if (thingy.type === types.PROJECT && !replacement) {\n if (!thingy.variables.some(v => v.equals(graph)))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n // this can happen if the query extends an expression to the name of the graph\n // since the extend happens here there should be no further occurrences of this name\n // if there are it's the same situation as above\n else if (thingy.type === types.EXTEND && !replacement) {\n if (thingy.variable.equals(graph))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n else {\n for (let key of Object.keys(thingy)) {\n if (Array.isArray(thingy[key]))\n thingy[key] = thingy[key].map((x) => recurseGraph(x, graph, replacement));\n else if (typeVals.indexOf(thingy[key].type) >= 0) // can't do instanceof on an interface\n thingy[key] = recurseGraph(thingy[key], graph, replacement);\n else if (replacement && isVariable(thingy[key]) && thingy[key].equals(graph))\n thingy[key] = replacement;\n }\n }\n return thingy;\n}\nfunction accumulateGroupGraphPattern(G, E) {\n if (E.type === 'optional') {\n // optional input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n if (A.type === types.FILTER) {\n G = factory.createLeftJoin(G, A.input, A.expression);\n }\n else\n G = factory.createLeftJoin(G, A);\n }\n else if (E.type === 'minus') {\n // minus input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n G = factory.createMinus(G, A);\n }\n else if (E.type === 'bind')\n G = factory.createExtend(G, E.variable, translateExpression(E.expression));\n else if (E.type === 'service') {\n // transform to group so childnodes get parsed correctly\n const group = { type: 'group', patterns: E.patterns };\n const A = factory.createService(translateGraphPattern(group), E.name, E.silent);\n G = simplifiedJoin(G, A);\n }\n else {\n const A = translateGraphPattern(E);\n G = simplifiedJoin(G, A);\n }\n return G;\n}\nfunction simplifiedJoin(G, A) {\n // Note: this is more simplification than requested in 18.2.2.8, but no reason not to do it.\n if (G.type === types.BGP && A.type === types.BGP)\n G = factory.createBgp([...G.patterns, ...A.patterns]);\n // 18.2.2.8 (simplification)\n else if (G.type === types.BGP && G.patterns.length === 0)\n G = A;\n else if (A.type === types.BGP && A.patterns.length === 0) { } // do nothing\n else\n G = factory.createJoin([G, A]);\n return G;\n}\nfunction translateInlineData(values) {\n let variables = (values.values.length === 0 ? [] : Object.keys(values.values[0])).map(factory.createTerm.bind(factory));\n let bindings = values.values.map((binding) => {\n let keys = Object.keys(binding);\n keys = keys.filter(k => binding[k] !== undefined);\n let map = {};\n for (let key of keys)\n map[key] = binding[key];\n return map;\n });\n return factory.createValues(variables, bindings);\n}\n// --------------------------------------- AGGREGATES\nfunction translateAggregates(query, res) {\n // Typings for ConstructQuery are wrong and missing several fields so we will cast quite often to SelectQuery to have partial typings\n const select = query;\n // 18.2.4.1\n const E = [];\n const A = {};\n select.variables = select.variables && select.variables.map(val => mapAggregate(val, A));\n select.having = select.having && select.having.map(val => mapAggregate(val, A));\n select.order = select.order && select.order.map(val => mapAggregate(val, A));\n // if there are any aggregates or if we have a groupBy (both result in a GROUP)\n if (select.group || Object.keys(A).length > 0) {\n const aggregates = Object.keys(A).map(v => translateBoundAggregate(A[v], factory.createTerm(v)));\n const vars = [];\n if (select.group) {\n for (const e of select.group) {\n if (util_1.default.isSimpleTerm(e.expression)) {\n vars.push(e.expression); // this will always be a var, otherwise sparql would be invalid\n }\n else {\n // Incorrect typings, e can have a variable, see for example group-variable test in sparql.js\n const v = 'variable' in e ? e.variable : generateFreshVar();\n res = factory.createExtend(res, v, translateExpression(e.expression));\n vars.push(v);\n }\n }\n }\n res = factory.createGroup(res, vars, aggregates);\n }\n // 18.2.4.2\n if (select.having)\n for (let filter of select.having)\n res = factory.createFilter(res, translateExpression(filter));\n // 18.2.4.3\n if (query.values)\n res = factory.createJoin([res, translateInlineData(query)]);\n // 18.2.4.4\n let PV = [];\n if (query.queryType === 'SELECT' || query.queryType === 'DESCRIBE') {\n // Sort variables for consistent output\n if (query.variables.some((e) => e && util_1.default.isWildcard(e)))\n PV = Object.values(inScopeVariables(query))\n .sort((left, right) => left.value.localeCompare(right.value));\n else {\n // Wildcard has been filtered out above\n for (let v of query.variables) {\n // can have non-variables with DESCRIBE\n if (isVariable(v) || !('variable' in v))\n PV.push(v);\n else if (v.variable) // ... AS ?x\n {\n PV.push(v.variable);\n E.push(v);\n }\n }\n }\n }\n // TODO: Jena simplifies by having a list of extends\n for (let v of E)\n res = factory.createExtend(res, v.variable, translateExpression(v.expression));\n // 18.2.5\n // not using toList and toMultiset\n // 18.2.5.1\n if (select.order)\n res = factory.createOrderBy(res, select.order.map((exp) => {\n let result = translateExpression(exp.expression);\n if (exp.descending)\n result = factory.createOperatorExpression('desc', [result]);\n return result;\n }));\n // 18.2.5.2\n // construct does not need a project (select, ask and describe do)\n if (query.queryType === 'SELECT')\n // Named nodes are only possible in a DESCRIBE so this cast is safe\n res = factory.createProject(res, PV);\n // 18.2.5.3\n if (select.distinct)\n res = factory.createDistinct(res);\n // 18.2.5.4\n if (select.reduced)\n res = factory.createReduced(res);\n // NEW: support for ask/construct/describe queries\n if (query.queryType === 'CONSTRUCT')\n res = factory.createConstruct(res, (query.template || []).map(translateQuad));\n else if (query.queryType === 'ASK')\n res = factory.createAsk(res);\n else if (query.queryType === 'DESCRIBE')\n res = factory.createDescribe(res, PV);\n // Slicing needs to happen after construct/describe\n // 18.2.5.5\n if (select.offset || select.limit)\n res = factory.createSlice(res, select.offset || 0, select.limit);\n if (select.from)\n res = factory.createFrom(res, select.from.default, select.from.named);\n return res;\n}\n// rewrites some of the input sparql object to make use of aggregate variables\nfunction mapAggregate(thingy, aggregates) {\n if ('type' in thingy && thingy.type === 'aggregate') {\n let found = false;\n let v;\n for (let key of Object.keys(aggregates)) {\n if (equal(aggregates[key], thingy)) {\n v = factory.createTerm(key);\n found = true;\n break;\n }\n }\n if (!found) {\n v = generateFreshVar();\n aggregates[(0, rdf_string_1.termToString)(v)] = thingy;\n }\n return v;\n }\n // non-aggregate expression\n if ('expression' in thingy && thingy.expression)\n return { ...thingy, expression: mapAggregate(thingy.expression, aggregates) };\n if ('args' in thingy && thingy.args)\n return { ...thingy, args: thingy.args.map(subthingy => mapAggregate(subthingy, aggregates)) };\n // Normal variable/wildcard\n return thingy;\n}\nfunction translateBoundAggregate(thingy, v) {\n if (thingy.type !== 'aggregate' || !thingy.aggregation)\n throw new Error(`Unexpected input: ${JSON.stringify(thingy)}`);\n const A = translateExpression(thingy);\n A.variable = v;\n return A;\n}\nfunction translateUpdate(thingy) {\n if (thingy.updates.length === 1)\n return translateSingleUpdate(thingy.updates[0]);\n return factory.createCompositeUpdate(thingy.updates.map(translateSingleUpdate));\n}\nfunction translateSingleUpdate(thingy) {\n if ('type' in thingy) {\n if (thingy.type === 'load')\n return translateUpdateGraphLoad(thingy);\n if (thingy.type === 'clear' || thingy.type === 'create' || thingy.type === 'drop')\n return translateUpdateGraph(thingy);\n if (thingy.type === 'add' || thingy.type === 'copy' || thingy.type === 'move')\n return translateUpdateGraphShortcut(thingy);\n }\n else if (thingy.updateType === 'insertdelete' || thingy.updateType === 'deletewhere' || thingy.updateType === 'delete' || thingy.updateType === 'insert')\n return translateInsertDelete(thingy);\n throw new Error(`Unknown update type ${JSON.stringify(thingy)}`);\n}\nfunction translateInsertDelete(thingy) {\n if (!useQuads)\n throw new Error('INSERT/DELETE operations are only supported with quads option enabled');\n let deleteTriples = [];\n let insertTriples = [];\n let where;\n if (thingy.delete)\n deleteTriples = util_1.default.flatten(thingy.delete.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.insert)\n insertTriples = util_1.default.flatten(thingy.insert.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.where && thingy.where.length > 0) {\n where = translateGraphPattern({ type: 'group', patterns: thingy.where });\n // Wrong typings, see test \"using\" in Sparql.js\n const use = thingy.using;\n if (use)\n where = factory.createFrom(where, use.default, use.named);\n else if (thingy.graph)\n // This is equivalent\n where = recurseGraph(where, thingy.graph);\n }\n else if (thingy.updateType === 'deletewhere' && deleteTriples.length > 0) {\n where = factory.createBgp(deleteTriples);\n }\n return factory.createDeleteInsert(deleteTriples.length > 0 ? deleteTriples : undefined, insertTriples.length > 0 ? insertTriples : undefined, where);\n}\n// UPDATE parsing will always return quads and have no GRAPH elements\nfunction translateUpdateTriplesBlock(thingy, graph) {\n let currentGraph = graph;\n if (thingy.type === 'graph')\n currentGraph = thingy.name;\n let currentTriples = thingy.triples;\n if (currentGraph)\n currentTriples = currentTriples.map(triple => Object.assign(triple, { graph: currentGraph }));\n return currentTriples.map(translateQuad);\n}\nfunction translateUpdateGraph(thingy) {\n let source;\n if (util_1.default.isSimpleTerm(thingy.graph))\n source = thingy.graph;\n else if (thingy.graph.all)\n source = 'ALL';\n else if (thingy.graph.default)\n source = 'DEFAULT';\n else if (thingy.graph.named)\n source = 'NAMED';\n else\n source = thingy.graph.name;\n switch (thingy.type) {\n case 'clear': return factory.createClear(source, thingy.silent);\n case 'create': return factory.createCreate(source, thingy.silent);\n case 'drop': return factory.createDrop(source, thingy.silent);\n }\n}\nfunction translateUpdateGraphLoad(thingy) {\n return factory.createLoad(thingy.source, thingy.destination, thingy.silent);\n}\nfunction translateUpdateGraphShortcut(thingy) {\n const source = thingy.source.default ? 'DEFAULT' : thingy.source.name;\n const destination = thingy.destination.default ? 'DEFAULT' : thingy.destination.name;\n switch (thingy.type) {\n case 'copy': return factory.createCopy(source, destination, thingy.silent);\n case 'move': return factory.createMove(source, destination, thingy.silent);\n case 'add': return factory.createAdd(source, destination, thingy.silent);\n }\n}\nfunction translateBlankNodesToVariables(res) {\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(variables).reduce((acc, variable) => {\n acc[variable] = true;\n return acc;\n }, {});\n return util_1.default.mapOperation(res, {\n [Algebra.types.DELETE_INSERT]: (op) => {\n // Make sure blank nodes remain in the INSERT block, but do update the WHERE block\n return {\n result: factory.createDeleteInsert(op.delete, op.insert, op.where && translateBlankNodesToVariables(op.where)),\n recurse: false,\n };\n },\n [Algebra.types.PATH]: (op, factory) => {\n return {\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.PATTERN]: (op, factory) => {\n return {\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT]: (op) => {\n // Blank nodes in CONSTRUCT templates must be maintained\n return {\n result: factory.createConstruct(translateBlankNodesToVariables(op.input), op.template),\n recurse: false,\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = util_1.default.createUniqueVariable(term.value, variablesRaw, factory.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n}\n//# sourceMappingURL=sparqlAlgebra.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst algebra_1 = require(\"./algebra\");\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst rdf_terms_1 = require(\"rdf-terms\");\nclass Util {\n /**\n * Flattens an array of arrays to an array.\n * @param arr - Array of arrays\n */\n static flatten(arr) {\n return Array.prototype.concat(...arr).filter(x => x);\n }\n /**\n * Outputs a JSON object corresponding to the input algebra-like.\n */\n static objectify(algebra) {\n if (algebra.termType) {\n if (algebra.termType === 'Quad') {\n return {\n type: 'pattern',\n termType: 'Quad',\n subject: Util.objectify(algebra.subject),\n predicate: Util.objectify(algebra.predicate),\n object: Util.objectify(algebra.object),\n graph: Util.objectify(algebra.graph),\n };\n }\n else {\n let result = { termType: algebra.termType, value: algebra.value };\n if (algebra.language)\n result.language = algebra.language;\n if (algebra.datatype)\n result.datatype = Util.objectify(algebra.datatype);\n return result;\n }\n }\n if (Array.isArray(algebra))\n return algebra.map(e => Util.objectify(e));\n if (algebra === Object(algebra)) {\n let result = {};\n for (let key of Object.keys(algebra))\n result[key] = Util.objectify(algebra[key]);\n return result;\n }\n return algebra;\n }\n /**\n * Detects all in-scope variables.\n * In practice this means iterating through the entire algebra tree, finding all variables,\n * and stopping when a project function is found.\n * @param {Operation} op - Input algebra tree.\n * @returns {Variable[]} - List of unique in-scope variables.\n */\n static inScopeVariables(op) {\n const variables = [];\n function addVariable(v) {\n if (!variables.find(v2 => v.value === v2.value))\n variables.push(v);\n }\n function recurseTerm(quad) {\n if (quad.subject.termType === 'Variable')\n addVariable(quad.subject);\n if (quad.predicate.termType === 'Variable')\n addVariable(quad.predicate);\n if (quad.object.termType === 'Variable')\n addVariable(quad.object);\n if (quad.graph.termType === 'Variable')\n addVariable(quad.graph);\n if (quad.subject.termType === 'Quad')\n recurseTerm(quad.subject);\n if (quad.predicate.termType === 'Quad')\n recurseTerm(quad.predicate);\n if (quad.object.termType === 'Quad')\n recurseTerm(quad.object);\n if (quad.graph.termType === 'Quad')\n recurseTerm(quad.graph);\n }\n // https://www.w3.org/TR/sparql11-query/#variableScope\n Util.recurseOperation(op, {\n [algebra_1.types.EXPRESSION]: (op) => {\n if (op.expressionType === algebra_1.expressionTypes.AGGREGATE && op.variable) {\n addVariable(op.variable);\n }\n return true;\n },\n [algebra_1.types.EXTEND]: (op) => {\n addVariable(op.variable);\n return true;\n },\n [algebra_1.types.GRAPH]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.GROUP]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n [algebra_1.types.PATH]: (op) => {\n if (op.subject.termType === 'Variable')\n addVariable(op.subject);\n if (op.object.termType === 'Variable')\n addVariable(op.object);\n if (op.graph.termType === 'Variable')\n addVariable(op.graph);\n if (op.subject.termType === 'Quad')\n recurseTerm(op.subject);\n if (op.object.termType === 'Quad')\n recurseTerm(op.object);\n if (op.graph.termType === 'Quad')\n recurseTerm(op.graph);\n return true;\n },\n [algebra_1.types.PATTERN]: (op) => {\n recurseTerm(op);\n return true;\n },\n [algebra_1.types.PROJECT]: (op) => {\n op.variables.forEach(addVariable);\n return false;\n },\n [algebra_1.types.SERVICE]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.VALUES]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n });\n return variables;\n }\n /**\n * Recurses through the given algebra tree\n * A map of callback functions can be provided for individual Operation types to gather data.\n * The return value of those callbacks should indicate whether recursion should be applied or not.\n * Making modifications will change the original input object.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation) => boolean } callbacks - A map of required callback Operations.\n */\n static recurseOperation(op, callbacks) {\n let result = op;\n let doRecursion = true;\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n doRecursion = callback(op);\n if (!doRecursion)\n return;\n let recurseOp = (op) => Util.recurseOperation(op, callbacks);\n switch (result.type) {\n case algebra_1.types.ALT:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.ASK:\n recurseOp(result.input);\n break;\n case algebra_1.types.BGP:\n result.patterns.forEach(recurseOp);\n break;\n case algebra_1.types.CONSTRUCT:\n recurseOp(result.input);\n result.template.map(recurseOp);\n break;\n case algebra_1.types.DESCRIBE:\n recurseOp(result.input);\n break;\n case algebra_1.types.DISTINCT:\n recurseOp(result.input);\n break;\n case algebra_1.types.EXPRESSION:\n if (result.expressionType === algebra_1.expressionTypes.EXISTENCE) {\n recurseOp(result.input);\n }\n break;\n case algebra_1.types.EXTEND:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FILTER:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FROM:\n recurseOp(result.input);\n break;\n case algebra_1.types.GRAPH:\n recurseOp(result.input);\n break;\n case algebra_1.types.GROUP:\n recurseOp(result.input);\n result.aggregates.forEach(recurseOp);\n break;\n case algebra_1.types.INV:\n recurseOp(result.path);\n break;\n case algebra_1.types.JOIN:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.LEFT_JOIN:\n result.input.map(recurseOp);\n if (result.expression)\n recurseOp(result.expression);\n break;\n case algebra_1.types.LINK:\n break;\n case algebra_1.types.MINUS:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.NOP:\n break;\n case algebra_1.types.NPS:\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ORDER_BY:\n recurseOp(result.input);\n result.expressions.forEach(recurseOp);\n break;\n case algebra_1.types.PATH:\n recurseOp(result.predicate);\n break;\n case algebra_1.types.PATTERN:\n break;\n case algebra_1.types.PROJECT:\n recurseOp(result.input);\n break;\n case algebra_1.types.REDUCED:\n recurseOp(result.input);\n break;\n case algebra_1.types.SEQ:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.SERVICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.SLICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.UNION:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.VALUES:\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n recurseOp(result.path);\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result.updates.forEach(update => recurseOp(update));\n break;\n case algebra_1.types.DELETE_INSERT:\n if (result.delete)\n result.delete.forEach(pattern => recurseOp(pattern));\n if (result.insert)\n result.insert.forEach(pattern => recurseOp(pattern));\n if (result.where)\n recurseOp(result.where);\n break;\n // all of these only have graph IDs as values\n case algebra_1.types.LOAD: break;\n case algebra_1.types.CLEAR: break;\n case algebra_1.types.CREATE: break;\n case algebra_1.types.DROP: break;\n case algebra_1.types.ADD: break;\n case algebra_1.types.MOVE: break;\n case algebra_1.types.COPY: break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Creates a deep copy of the given Operation.\n * Creates shallow copies of the non-Operation values.\n * A map of callback functions can be provided for individual Operation types\n * to specifically modify the given objects before triggering recursion.\n * The return value of those callbacks should indicate whether recursion should be applied to this returned object or not.\n * @param {Operation} op - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapOperation(op, callbacks, factory) {\n let result = op;\n let doRecursion = true;\n let copyMetadata = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[op.type];\n if (callback) {\n // Not sure how to get typing correct for op here\n const recurseResult = callback(op, factory);\n result = recurseResult.result;\n doRecursion = recurseResult.recurse;\n copyMetadata = recurseResult.copyMetadata !== false;\n }\n let toCopyMetadata;\n if (copyMetadata && (result.metadata || op.metadata)) {\n toCopyMetadata = { ...result.metadata, ...op.metadata };\n }\n if (!doRecursion) {\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n // Several casts here might be wrong though depending on the callbacks output\n switch (result.type) {\n case algebra_1.types.ALT:\n result = factory.createAlt(result.input.map(mapOp));\n break;\n case algebra_1.types.ASK:\n result = factory.createAsk(mapOp(result.input));\n break;\n case algebra_1.types.BGP:\n result = factory.createBgp(result.patterns.map(mapOp));\n break;\n case algebra_1.types.CONSTRUCT:\n result = factory.createConstruct(mapOp(result.input), result.template.map(mapOp));\n break;\n case algebra_1.types.DESCRIBE:\n result = factory.createDescribe(mapOp(result.input), result.terms);\n break;\n case algebra_1.types.DISTINCT:\n result = factory.createDistinct(mapOp(result.input));\n break;\n case algebra_1.types.EXPRESSION:\n result = Util.mapExpression(result, callbacks, factory);\n break;\n case algebra_1.types.EXTEND:\n result = factory.createExtend(mapOp(result.input), result.variable, mapOp(result.expression));\n break;\n case algebra_1.types.FILTER:\n result = factory.createFilter(mapOp(result.input), mapOp(result.expression));\n break;\n case algebra_1.types.FROM:\n result = factory.createFrom(mapOp(result.input), [...result.default], [...result.named]);\n break;\n case algebra_1.types.GRAPH:\n result = factory.createGraph(mapOp(result.input), result.name);\n break;\n case algebra_1.types.GROUP:\n result = factory.createGroup(mapOp(result.input), [].concat(result.variables), result.aggregates.map(mapOp));\n break;\n case algebra_1.types.INV:\n result = factory.createInv(mapOp(result.path));\n break;\n case algebra_1.types.JOIN:\n result = factory.createJoin(result.input.map(mapOp));\n break;\n case algebra_1.types.LEFT_JOIN:\n result = factory.createLeftJoin(mapOp(result.input[0]), mapOp(result.input[1]), result.expression ? mapOp(result.expression) : undefined);\n break;\n case algebra_1.types.LINK:\n result = factory.createLink(result.iri);\n break;\n case algebra_1.types.MINUS:\n result = factory.createMinus(mapOp(result.input[0]), mapOp(result.input[1]));\n break;\n case algebra_1.types.NOP:\n result = factory.createNop();\n break;\n case algebra_1.types.NPS:\n result = factory.createNps([].concat(result.iris));\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n result = factory.createOneOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ORDER_BY:\n result = factory.createOrderBy(mapOp(result.input), result.expressions.map(mapOp));\n break;\n case algebra_1.types.PATH:\n result = factory.createPath(result.subject, mapOp(result.predicate), result.object, result.graph);\n break;\n case algebra_1.types.PATTERN:\n result = factory.createPattern(result.subject, result.predicate, result.object, result.graph);\n break;\n case algebra_1.types.PROJECT:\n result = factory.createProject(mapOp(result.input), [...result.variables]);\n break;\n case algebra_1.types.REDUCED:\n result = factory.createReduced(mapOp(result.input));\n break;\n case algebra_1.types.SEQ:\n result = factory.createSeq(result.input.map(mapOp));\n break;\n case algebra_1.types.SERVICE:\n result = factory.createService(mapOp(result.input), result.name, result.silent);\n break;\n case algebra_1.types.SLICE:\n result = factory.createSlice(mapOp(result.input), result.start, result.length);\n break;\n case algebra_1.types.UNION:\n result = factory.createUnion(result.input.map(mapOp));\n break;\n case algebra_1.types.VALUES:\n result = factory.createValues([].concat(result.variables), result.bindings.map(b => Object.assign({}, b)));\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n result = factory.createZeroOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n result = factory.createZeroOrOnePath(mapOp(result.path));\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result = factory.createCompositeUpdate(result.updates.map(mapOp));\n break;\n case algebra_1.types.DELETE_INSERT:\n result = factory.createDeleteInsert(result.delete ? result.delete.map(mapOp) : undefined, result.insert ? result.insert.map(mapOp) : undefined, result.where ? mapOp(result.where) : undefined);\n break;\n case algebra_1.types.LOAD:\n result = factory.createLoad(result.source, result.destination, result.silent);\n break;\n case algebra_1.types.CLEAR:\n result = factory.createClear(result.source, result.silent);\n break;\n case algebra_1.types.CREATE:\n result = factory.createCreate(result.source, result.silent);\n break;\n case algebra_1.types.DROP:\n result = factory.createDrop(result.source, result.silent);\n break;\n case algebra_1.types.ADD:\n result = factory.createAdd(result.source, result.destination);\n break;\n case algebra_1.types.MOVE:\n result = factory.createMove(result.source, result.destination);\n break;\n case algebra_1.types.COPY:\n result = factory.createCopy(result.source, result.destination);\n break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n /**\n * Similar to the {@link mapOperation} function but specifically for expressions.\n * Both functions call each other while copying.\n * Should not be called directly since it does not execute the callbacks, these happen in {@link mapOperation}.\n * @param {Expression} expr - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapExpression(expr, callbacks, factory) {\n let result = expr;\n let doRecursion = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[expr.expressionType];\n if (callback)\n ({ result, recurse: doRecursion } = callback(expr, factory));\n if (!doRecursion)\n return result;\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n switch (expr.expressionType) {\n case algebra_1.expressionTypes.AGGREGATE:\n if (expr.variable) {\n return factory.createBoundAggregate(expr.variable, expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n }\n return factory.createAggregateExpression(expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n case algebra_1.expressionTypes.EXISTENCE:\n return factory.createExistenceExpression(expr.not, mapOp(expr.input));\n case algebra_1.expressionTypes.NAMED:\n return factory.createNamedExpression(expr.name, expr.args.map(mapOp));\n case algebra_1.expressionTypes.OPERATOR:\n return factory.createOperatorExpression(expr.operator, expr.args.map(mapOp));\n case algebra_1.expressionTypes.TERM:\n return factory.createTermExpression(expr.term);\n case algebra_1.expressionTypes.WILDCARD:\n return factory.createWildcardExpression();\n default: throw new Error(`Unknown Expression type ${expr.expressionType}`);\n }\n }\n /**\n * Creates a deep clone of the operation.\n * This is syntactic sugar for calling {@link mapOperation} without callbacks.\n * @param {Operation} op - The operation to copy.\n * @returns {Operation} - The deep copy.\n */\n static cloneOperation(op) {\n return Util.mapOperation(op, {});\n }\n /**\n * Creates a deep clone of the expression.\n * This is syntactic sugar for calling {@link mapExpression} without callbacks.\n * @param {Expression} expr - The operation to copy.\n * @returns {Expression} - The deep copy.\n */\n static cloneExpression(expr) {\n return Util.mapExpression(expr, {});\n }\n static createUniqueVariable(label, variables, dataFactory) {\n let counter = 0;\n let labelLoop = label;\n while (variables[labelLoop]) {\n labelLoop = `${label}${counter++}`;\n }\n return dataFactory.variable(labelLoop);\n }\n // separate terms from wildcard since we handle them differently\n static isSimpleTerm(term) {\n return term.termType !== undefined && term.termType !== 'Quad' && term.termType !== 'Wildcard';\n }\n static isQuad(term) {\n return term.termType === 'Quad';\n }\n static hasQuadVariables(quad) {\n return (0, rdf_terms_1.someTermsNested)(quad, term => term.termType === 'Variable');\n }\n static isWildcard(term) {\n return term.termType === 'Wildcard';\n }\n}\nexports.default = Util;\n//# sourceMappingURL=util.js.map","\"use strict\";\n/**\n * An asynchronous iterator library for advanced object pipelines\n * @module asynciterator\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIterator = exports.isIterable = exports.isSourceExpression = exports.isPromise = exports.isEventEmitter = exports.isFunction = exports.range = exports.union = exports.fromIterable = exports.fromIterator = exports.fromArray = exports.single = exports.empty = exports.wrap = exports.WrappingIterator = exports.ClonedIterator = exports.UnionIterator = exports.MultiTransformIterator = exports.SimpleTransformIterator = exports.TransformIterator = exports.BufferedIterator = exports.MappingIterator = exports.DESTINATION = exports.identity = exports.IntegerIterator = exports.ArrayIterator = exports.SingletonIterator = exports.EmptyIterator = exports.AsyncIterator = exports.DESTROYED = exports.ENDED = exports.CLOSED = exports.CLOSING = exports.OPEN = exports.INIT = exports.setTaskScheduler = exports.getTaskScheduler = exports.scheduleTask = exports.LinkedList = void 0;\nconst events_1 = require(\"events\");\nconst linkedlist_1 = require(\"./linkedlist.js\");\nObject.defineProperty(exports, \"LinkedList\", { enumerable: true, get: function () { return linkedlist_1.LinkedList; } });\nconst taskscheduler_1 = require(\"./taskscheduler.js\");\nlet taskScheduler = taskscheduler_1.createTaskScheduler();\n/** Schedules the given task for asynchronous execution. */\nfunction scheduleTask(task) {\n taskScheduler(task);\n}\nexports.scheduleTask = scheduleTask;\n/** Returns the asynchronous task scheduler. */\nfunction getTaskScheduler() {\n return taskScheduler;\n}\nexports.getTaskScheduler = getTaskScheduler;\n/** Sets the asynchronous task scheduler. */\nfunction setTaskScheduler(scheduler) {\n taskScheduler = scheduler;\n}\nexports.setTaskScheduler = setTaskScheduler;\n/**\n ID of the INIT state.\n An iterator is initializing if it is preparing main item generation.\n It can already produce items.\n @type integer\n*/\nexports.INIT = 1 << 0;\n/**\n ID of the OPEN state.\n An iterator is open if it can generate new items.\n @type integer\n*/\nexports.OPEN = 1 << 1;\n/**\n ID of the CLOSING state.\n An iterator is closing if item generation is pending but will not be scheduled again.\n @type integer\n*/\nexports.CLOSING = 1 << 2;\n/**\n ID of the CLOSED state.\n An iterator is closed if it no longer actively generates new items.\n Items might still be available.\n @type integer\n*/\nexports.CLOSED = 1 << 3;\n/**\n ID of the ENDED state.\n An iterator has ended if no further items will become available.\n The 'end' event is guaranteed to have been called when in this state.\n @type integer\n*/\nexports.ENDED = 1 << 4;\n/**\n ID of the DESTROYED state.\n An iterator has been destroyed\n after calling {@link module:asynciterator.AsyncIterator#destroy}.\n The 'end' event has not been called, as pending elements were voided.\n @type integer\n*/\nexports.DESTROYED = 1 << 5;\n/**\n An asynchronous iterator provides pull-based access to a stream of objects.\n @extends module:asynciterator.EventEmitter\n*/\nclass AsyncIterator extends events_1.EventEmitter {\n /** Creates a new `AsyncIterator`. */\n constructor(initialState = exports.OPEN) {\n super();\n this._readable = false;\n this._state = initialState;\n this.on('newListener', waitForDataListener);\n }\n /**\n Changes the iterator to the given state if possible and necessary,\n possibly emitting events to signal that change.\n @protected\n @param {integer} newState The ID of the new state\n @param {boolean} [eventAsync=false] Whether resulting events should be emitted asynchronously\n @returns {boolean} Whether the state was changed\n @emits module:asynciterator.AsyncIterator.end\n */\n _changeState(newState, eventAsync = false) {\n // Validate the state change\n const valid = newState > this._state && this._state < exports.ENDED;\n if (valid) {\n this._state = newState;\n // Emit the `end` event when changing to ENDED\n if (newState === exports.ENDED) {\n if (!eventAsync)\n this.emit('end');\n else\n taskScheduler(() => this.emit('end'));\n }\n }\n return valid;\n }\n /**\n Tries to read the next item from the iterator.\n This is the main method for reading the iterator in _on-demand mode_,\n where new items are only created when needed by consumers.\n If no items are currently available, this methods returns `null`.\n The {@link module:asynciterator.event:readable} event\n will then signal when new items might be ready.\n To read all items from the iterator,\n switch to _flow mode_ by subscribing\n to the {@link module:asynciterator.event:data} event.\n When in flow mode, do not use the `read` method.\n @returns {object?} The next item, or `null` if none is available\n */\n read() {\n return null;\n }\n /**\n The iterator emits a `readable` event when it might have new items available\n after having had no items available right before this event.\n If the iterator is not in flow mode, items can be retrieved\n by calling {@link module:asynciterator.AsyncIterator#read}.\n @event module:asynciterator.readable\n */\n /**\n The iterator emits a `data` event with a new item as soon as it becomes available.\n When one or more listeners are attached to the `data` event,\n the iterator switches to _flow mode_,\n generating and emitting new items as fast as possible.\n This drains the source and might create backpressure on the consumers,\n so only subscribe to this event if this behavior is intended.\n In flow mode, don't use {@link module:asynciterator.AsyncIterator#read}.\n To switch back to _on-demand mode_, remove all listeners from the `data` event.\n You can then obtain items through `read` again.\n @event module:asynciterator.data\n @param {object} item The new item\n */\n /**\n Invokes the callback for each remaining item in the iterator.\n Switches the iterator to flow mode.\n @param {Function} callback A function that will be called with each item\n @param {object?} self The `this` pointer for the callback\n */\n forEach(callback, self) {\n this.on('data', bind(callback, self));\n }\n /**\n Stops the iterator from generating new items.\n Already generated items or terminating items can still be emitted.\n After this, the iterator will end asynchronously.\n @emits module:asynciterator.AsyncIterator.end\n */\n close() {\n if (this._changeState(exports.CLOSED))\n this._endAsync();\n }\n /**\n Destroy the iterator and stop it from generating new items.\n This will not do anything if the iterator was already ended or destroyed.\n All internal resources will be released an no new items will be emitted,\n even not already generated items.\n Implementors should not override this method,\n but instead implement {@link module:asynciterator.AsyncIterator#_destroy}.\n @param {Error} [cause] An optional error to emit.\n @emits module:asynciterator.AsyncIterator.end\n @emits module:asynciterator.AsyncIterator.error Only if an error is passed.\n */\n destroy(cause) {\n if (!this.done) {\n this._destroy(cause, error => {\n cause = cause || error;\n if (cause)\n this.emit('error', cause);\n this._end(true);\n });\n }\n }\n /**\n Called by {@link module:asynciterator.AsyncIterator#destroy}.\n Implementers can override this, but this should not be called directly.\n @param {?Error} cause The reason why the iterator is destroyed.\n @param {Function} callback A callback function with an optional error argument.\n */\n _destroy(cause, callback) {\n callback();\n }\n /**\n Ends the iterator and cleans up.\n Should never be called before {@link module:asynciterator.AsyncIterator#close};\n typically, `close` is responsible for calling `_end`.\n @param {boolean} [destroy] If the iterator should be forcefully destroyed.\n @protected\n @emits module:asynciterator.AsyncIterator.end\n */\n _end(destroy = false) {\n if (this._changeState(destroy ? exports.DESTROYED : exports.ENDED)) {\n this._readable = false;\n this.removeAllListeners('readable');\n this.removeAllListeners('data');\n this.removeAllListeners('end');\n }\n }\n /**\n Asynchronously calls `_end`.\n @protected\n */\n _endAsync() {\n taskScheduler(() => this._end());\n }\n /**\n The `end` event is emitted after the last item of the iterator has been read.\n @event module:asynciterator.end\n */\n /**\n Gets or sets whether this iterator might have items available for read.\n A value of `false` means there are _definitely_ no items available;\n a value of `true` means items _might_ be available.\n @type boolean\n @emits module:asynciterator.AsyncIterator.readable\n */\n get readable() {\n return this._readable;\n }\n set readable(readable) {\n readable = Boolean(readable) && !this.done;\n // Set the readable value only if it has changed\n if (this._readable !== readable) {\n this._readable = readable;\n // If the iterator became readable, emit the `readable` event\n if (readable)\n taskScheduler(() => this.emit('readable'));\n }\n }\n /**\n Gets whether the iterator has stopped generating new items.\n @type boolean\n @readonly\n */\n get closed() {\n return this._state >= exports.CLOSING;\n }\n /**\n Gets whether the iterator has finished emitting items.\n @type boolean\n @readonly\n */\n get ended() {\n return this._state === exports.ENDED;\n }\n /**\n Gets whether the iterator has been destroyed.\n @type boolean\n @readonly\n */\n get destroyed() {\n return this._state === exports.DESTROYED;\n }\n /**\n Gets whether the iterator will not emit anymore items,\n either due to being closed or due to being destroyed.\n @type boolean\n @readonly\n */\n get done() {\n return this._state >= exports.ENDED;\n }\n /* Generates a textual representation of the iterator. */\n toString() {\n const details = this._toStringDetails();\n return `[${this.constructor.name}${details ? ` ${details}` : ''}]`;\n }\n /**\n Generates details for a textual representation of the iterator.\n @protected\n */\n _toStringDetails() {\n return '';\n }\n /**\n Consume all remaining items of the iterator into an array that will be returned asynchronously.\n @param {object} [options] Settings for array creation\n @param {integer} [options.limit] The maximum number of items to place in the array.\n */\n toArray(options) {\n const items = [];\n const limit = typeof (options === null || options === void 0 ? void 0 : options.limit) === 'number' ? options.limit : Infinity;\n return this.ended || limit <= 0 ? Promise.resolve(items) : new Promise((resolve, reject) => {\n // Collect and return all items up to the limit\n const resolveItems = () => resolve(items);\n const pushItem = (item) => {\n items.push(item);\n if (items.length >= limit) {\n this.removeListener('error', reject);\n this.removeListener('data', pushItem);\n this.removeListener('end', resolveItems);\n resolve(items);\n }\n };\n // Start item collection\n this.on('error', reject);\n this.on('data', pushItem);\n this.on('end', resolveItems);\n });\n }\n /**\n Retrieves the property with the given name from the iterator.\n If no callback is passed, it returns the value of the property\n or `undefined` if the property is not set.\n If a callback is passed, it returns `undefined`\n and calls the callback with the property the moment it is set.\n @param {string} propertyName The name of the property to retrieve\n @param {Function?} [callback] A one-argument callback to receive the property value\n @returns {object?} The value of the property (if set and no callback is given)\n */\n getProperty(propertyName, callback) {\n const properties = this._properties;\n // If no callback was passed, return the property value\n if (!callback)\n return properties && properties[propertyName];\n // If the value has been set, send it through the callback\n if (properties && (propertyName in properties)) {\n taskScheduler(() => callback(properties[propertyName]));\n }\n // If the value was not set, store the callback for when the value will be set\n else {\n let propertyCallbacks;\n if (!(propertyCallbacks = this._propertyCallbacks))\n this._propertyCallbacks = propertyCallbacks = Object.create(null);\n if (propertyName in propertyCallbacks)\n propertyCallbacks[propertyName].push(callback);\n else\n propertyCallbacks[propertyName] = [callback];\n }\n return undefined;\n }\n /**\n Sets the property with the given name to the value.\n @param {string} propertyName The name of the property to set\n @param {object?} value The new value of the property\n */\n setProperty(propertyName, value) {\n const properties = this._properties || (this._properties = Object.create(null));\n properties[propertyName] = value;\n // Execute getter callbacks that were waiting for this property to be set\n const propertyCallbacks = this._propertyCallbacks || {};\n const callbacks = propertyCallbacks[propertyName];\n if (callbacks) {\n delete propertyCallbacks[propertyName];\n taskScheduler(() => {\n for (const callback of callbacks)\n callback(value);\n });\n // Remove _propertyCallbacks if no pending callbacks are left\n for (propertyName in propertyCallbacks)\n return;\n delete this._propertyCallbacks;\n }\n }\n /**\n Retrieves all properties of the iterator.\n @returns {object} An object with property names as keys.\n */\n getProperties() {\n const properties = this._properties;\n const copy = {};\n for (const name in properties)\n copy[name] = properties[name];\n return copy;\n }\n /**\n Sets all of the given properties.\n @param {object} properties Key/value pairs of properties to set\n */\n setProperties(properties) {\n for (const propertyName in properties)\n this.setProperty(propertyName, properties[propertyName]);\n }\n /**\n Copies the given properties from the source iterator.\n @param {module:asynciterator.AsyncIterator} source The iterator to copy from\n @param {Array} propertyNames List of property names to copy\n */\n copyProperties(source, propertyNames) {\n for (const propertyName of propertyNames) {\n source.getProperty(propertyName, value => this.setProperty(propertyName, value));\n }\n }\n /**\n Transforms items from this iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n @returns {module:asynciterator.AsyncIterator} A new iterator that maps the items from this iterator\n */\n transform(options) {\n return new SimpleTransformIterator(this, options);\n }\n /**\n Maps items from this iterator using the given function.\n After this operation, only read the returned iterator instead of the current one.\n @param {Function} map A mapping function to call on this iterator's (remaining) items\n @param {object?} self The `this` pointer for the mapping function\n @returns {module:asynciterator.AsyncIterator} A new iterator that maps the items from this iterator\n */\n map(map, self) {\n return new MappingIterator(this, bind(map, self));\n }\n filter(filter, self) {\n return this.map(function (item) {\n return filter.call(self || this, item) ? item : null;\n });\n }\n /**\n * Returns a new iterator containing all of the unique items in the original iterator.\n * @param by - The derived value by which to determine uniqueness (e.g., stringification).\n Defaults to the identity function.\n * @returns An iterator with duplicates filtered out.\n */\n uniq(by = identity) {\n const uniques = new Set();\n return this.filter(function (item) {\n const hashed = by.call(this, item);\n if (!uniques.has(hashed)) {\n uniques.add(hashed);\n return true;\n }\n return false;\n });\n }\n /**\n Prepends the items after those of the current iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} items Items to insert before this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that prepends items to this iterator\n */\n prepend(items) {\n return this.transform({ prepend: items });\n }\n /**\n Appends the items after those of the current iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} items Items to insert after this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that appends items to this iterator\n */\n append(items) {\n return this.transform({ append: items });\n }\n /**\n Surrounds items of the current iterator with the given items.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} prepend Items to insert before this iterator's (remaining) items\n @param {Array|module:asynciterator.AsyncIterator} append Items to insert after this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that appends and prepends items to this iterator\n */\n surround(prepend, append) {\n return this.transform({ prepend, append });\n }\n /**\n Skips the given number of items from the current iterator.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} offset The number of items to skip\n @returns {module:asynciterator.AsyncIterator} A new iterator that skips the given number of items\n */\n skip(offset) {\n return this.map(item => offset-- > 0 ? null : item);\n }\n /**\n Limits the current iterator to the given number of items.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} limit The maximum number of items\n @returns {module:asynciterator.AsyncIterator} A new iterator with at most the given number of items\n */\n take(limit) {\n return this.transform({ limit });\n }\n /**\n Limits the current iterator to the given range.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} start Index of the first item to return\n @param {integer} end Index of the last item to return\n @returns {module:asynciterator.AsyncIterator} A new iterator with items in the given range\n */\n range(start, end) {\n return this.transform({ offset: start, limit: Math.max(end - start + 1, 0) });\n }\n /**\n Creates a copy of the current iterator,\n containing all items emitted from this point onward.\n Further copies can be created; they will all start from this same point.\n After this operation, only read the returned copies instead of the original iterator.\n @returns {module:asynciterator.AsyncIterator} A new iterator that contains all future items of this iterator\n */\n clone() {\n return new ClonedIterator(this);\n }\n /**\n * An AsyncIterator is async iterable.\n * This allows iterators to be used via the for-await syntax.\n *\n * In cases where the returned EcmaScript AsyncIterator will not be fully consumed,\n * it is recommended to manually listen for error events on the main AsyncIterator\n * to avoid uncaught error messages.\n *\n * @returns {ESAsyncIterator} An EcmaScript AsyncIterator\n */\n [Symbol.asyncIterator]() {\n const it = this;\n let currentResolve = null;\n let currentReject = null;\n let pendingError = null;\n it.addListener('readable', tryResolve);\n it.addListener('end', tryResolve);\n it.addListener('error', tryReject);\n // Tries to emit an item or signal the end of the iterator\n function tryResolve() {\n if (currentResolve !== null) {\n if (pendingError !== null) {\n tryReject(pendingError);\n }\n else if (it.done) {\n currentResolve({ done: true, value: undefined });\n currentResolve = currentReject = null;\n removeListeners();\n }\n else {\n const value = it.read();\n if (value !== null) {\n currentResolve({ done: false, value });\n currentResolve = currentReject = null;\n }\n }\n }\n }\n // Tries to emit an error\n function tryReject(error) {\n if (currentReject !== null) {\n currentReject(error);\n currentResolve = currentReject = pendingError = null;\n removeListeners();\n }\n else if (pendingError === null) {\n pendingError = error;\n }\n }\n // Cleans up all attached listeners\n function removeListeners() {\n it.removeListener('readable', tryResolve);\n it.removeListener('end', tryResolve);\n it.removeListener('error', tryReject);\n }\n // An EcmaScript AsyncIterator exposes the next() function that can be invoked repeatedly\n return {\n next() {\n return new Promise((resolve, reject) => {\n currentResolve = resolve;\n currentReject = reject;\n tryResolve();\n });\n },\n };\n }\n}\nexports.AsyncIterator = AsyncIterator;\n// Starts emitting `data` events when `data` listeners are added\nfunction waitForDataListener(eventName) {\n if (eventName === 'data') {\n this.removeListener('newListener', waitForDataListener);\n addSingleListener(this, 'readable', emitData);\n if (this.readable)\n taskScheduler(() => emitData.call(this));\n }\n}\n// Emits new items though `data` events as long as there are `data` listeners\nfunction emitData() {\n // While there are `data` listeners and items, emit them\n let item;\n while (this.listenerCount('data') !== 0 && (item = this.read()) !== null)\n this.emit('data', item);\n // Stop draining the source if there are no more `data` listeners\n if (this.listenerCount('data') === 0 && !this.done) {\n this.removeListener('readable', emitData);\n addSingleListener(this, 'newListener', waitForDataListener);\n }\n}\n// Adds the listener to the event, if it has not been added previously.\nfunction addSingleListener(source, eventName, listener) {\n if (!source.listeners(eventName).includes(listener))\n source.on(eventName, listener);\n}\n/**\n An iterator that doesn't emit any items.\n @extends module:asynciterator.AsyncIterator\n*/\nclass EmptyIterator extends AsyncIterator {\n /** Creates a new `EmptyIterator`. */\n constructor() {\n super();\n this._changeState(exports.ENDED, true);\n }\n}\nexports.EmptyIterator = EmptyIterator;\n/**\n An iterator that emits a single item.\n @extends module:asynciterator.AsyncIterator\n*/\nclass SingletonIterator extends AsyncIterator {\n /**\n Creates a new `SingletonIterator`.\n @param {object} item The item that will be emitted.\n */\n constructor(item) {\n super();\n this._item = item;\n if (item === null)\n this.close();\n else\n this.readable = true;\n }\n /* Reads the item from the iterator. */\n read() {\n const item = this._item;\n this._item = null;\n this.close();\n return item;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return this._item === null ? '' : `(${this._item})`;\n }\n}\nexports.SingletonIterator = SingletonIterator;\n/**\n An iterator that emits the items of a given array.\n @extends module:asynciterator.AsyncIterator\n*/\nclass ArrayIterator extends AsyncIterator {\n /**\n Creates a new `ArrayIterator`.\n @param {Array} items The items that will be emitted.\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {boolean} [options.preserve=true] If false, the passed array can be safely modified\n */\n constructor(items = [], { autoStart = true, preserve = true } = {}) {\n super();\n const buffer = preserve || !Array.isArray(items) ? [...items] : items;\n this._index = 0;\n this._sourceStarted = autoStart !== false;\n this._truncateThreshold = preserve ? -1 : 64;\n if (this._sourceStarted && buffer.length === 0)\n this.close();\n else\n this._buffer = buffer;\n this.readable = true;\n }\n /* Reads an item from the iterator. */\n read() {\n if (!this._sourceStarted)\n this._sourceStarted = true;\n let item = null;\n if (this._buffer) {\n // Emit the current item\n if (this._index < this._buffer.length)\n item = this._buffer[this._index++];\n // Close when all elements have been returned\n if (this._index === this._buffer.length) {\n delete this._buffer;\n this.close();\n }\n // Do need keep old items around indefinitely\n else if (this._index === this._truncateThreshold) {\n this._buffer.splice(0, this._truncateThreshold);\n this._index = 0;\n }\n }\n return item;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `(${this._buffer ? this._buffer.length - this._index : 0})`;\n }\n /* Called by {@link module:asynciterator.AsyncIterator#destroy} */\n _destroy(cause, callback) {\n delete this._buffer;\n callback();\n }\n /**\n Consume all remaining items of the iterator into an array that will be returned asynchronously.\n @param {object} [options] Settings for array creation\n @param {integer} [options.limit] The maximum number of items to place in the array.\n */\n toArray(options = {}) {\n if (!this._buffer)\n return Promise.resolve([]);\n // Determine start and end index\n const { length } = this._buffer;\n const start = this._index;\n const end = typeof options.limit !== 'number' ? length : start + options.limit;\n // Slice the items off the buffer\n const items = this._buffer.slice(start, end);\n this._index = end;\n // Close this iterator when we're past the end\n if (end >= length)\n this.close();\n return Promise.resolve(items);\n }\n}\nexports.ArrayIterator = ArrayIterator;\n/**\n An iterator that enumerates integers in a certain range.\n @extends module:asynciterator.AsyncIterator\n*/\nclass IntegerIterator extends AsyncIterator {\n /**\n Creates a new `IntegerIterator`.\n @param {object} [options] Settings of the iterator\n @param {integer} [options.start=0] The first number to emit\n @param {integer} [options.end=Infinity] The last number to emit\n @param {integer} [options.step=1] The increment between two numbers\n */\n constructor({ start = 0, step = 1, end } = {}) {\n super();\n // Determine the first number\n if (Number.isFinite(start))\n start = Math.trunc(start);\n this._next = start;\n // Determine step size\n if (Number.isFinite(step))\n step = Math.trunc(step);\n this._step = step;\n // Determine the last number\n const ascending = step >= 0;\n const direction = ascending ? Infinity : -Infinity;\n if (Number.isFinite(end))\n end = Math.trunc(end);\n else if (end !== -direction)\n end = direction;\n this._last = end;\n // Start iteration if there is at least one item; close otherwise\n if (!Number.isFinite(start) || (ascending ? start > end : start < end))\n this.close();\n else\n this.readable = true;\n }\n /* Reads an item from the iterator. */\n read() {\n if (this.closed)\n return null;\n const current = this._next, step = this._step, last = this._last, next = this._next += step;\n if (step >= 0 ? next > last : next < last)\n this.close();\n return current;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `(${this._next}...${this._last})`;\n }\n}\nexports.IntegerIterator = IntegerIterator;\n/** Function that maps an element to itself. */\nfunction identity(item) {\n return item;\n}\nexports.identity = identity;\n/** Key indicating the current consumer of a source. */\nexports.DESTINATION = Symbol('destination');\n/**\n An iterator that synchronously transforms every item from its source\n by applying a mapping function.\n @extends module:asynciterator.AsyncIterator\n*/\nclass MappingIterator extends AsyncIterator {\n /**\n * Applies the given mapping to the source iterator.\n */\n constructor(source, map = identity, options = {}) {\n super();\n this._map = map;\n this._source = ensureSourceAvailable(source);\n this._destroySource = options.destroySource !== false;\n // Close if the source is already empty\n if (source.done) {\n this.close();\n }\n // Otherwise, wire up the source for reading\n else {\n this._source[exports.DESTINATION] = this;\n this._source.on('end', destinationClose);\n this._source.on('error', destinationEmitError);\n this._source.on('readable', destinationSetReadable);\n this.readable = this._source.readable;\n }\n }\n /* Tries to read the next item from the iterator. */\n read() {\n if (!this.done) {\n // Try to read an item that maps to a non-null value\n if (this._source.readable) {\n let item, mapped;\n while ((item = this._source.read()) !== null) {\n if ((mapped = this._map(item)) !== null)\n return mapped;\n }\n }\n this.readable = false;\n // Close this iterator if the source is empty\n if (this._source.done)\n this.close();\n }\n return null;\n }\n /* Cleans up the source iterator and ends. */\n _end(destroy) {\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[exports.DESTINATION];\n if (this._destroySource)\n this._source.destroy();\n super._end(destroy);\n }\n}\nexports.MappingIterator = MappingIterator;\n// Validates an AsyncIterator for use as a source within another AsyncIterator\nfunction ensureSourceAvailable(source, allowDestination = false) {\n if (!source || !isFunction(source.read) || !isFunction(source.on))\n throw new TypeError(`Invalid source: ${source}`);\n if (!allowDestination && source[exports.DESTINATION])\n throw new Error('The source already has a destination');\n return source;\n}\n/**\n An iterator that maintains an internal buffer of items.\n This class serves as a base class for other iterators\n with a typically complex item generation process.\n @extends module:asynciterator.AsyncIterator\n*/\nclass BufferedIterator extends AsyncIterator {\n /**\n Creates a new `BufferedIterator`.\n @param {object} [options] Settings of the iterator\n @param {integer} [options.maxBufferSize=4] The number of items to preload in the internal buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n */\n constructor({ maxBufferSize = 4, autoStart = true } = {}) {\n super(exports.INIT);\n this._buffer = new linkedlist_1.LinkedList();\n this._maxBufferSize = 4;\n this._reading = true;\n this._pushedCount = 0;\n this.maxBufferSize = maxBufferSize;\n taskScheduler(() => this._init(autoStart));\n this._sourceStarted = autoStart !== false;\n }\n /**\n The maximum number of items to preload in the internal buffer.\n A `BufferedIterator` tries to fill its buffer as far as possible.\n Set to `Infinity` to fully drain the source.\n @type number\n */\n get maxBufferSize() {\n return this._maxBufferSize;\n }\n set maxBufferSize(maxBufferSize) {\n // Allow only positive integers and infinity\n if (maxBufferSize !== Infinity) {\n maxBufferSize = !Number.isFinite(maxBufferSize) ? 4 :\n Math.max(Math.trunc(maxBufferSize), 1);\n }\n // Only set the maximum buffer size if it changes\n if (this._maxBufferSize !== maxBufferSize) {\n this._maxBufferSize = maxBufferSize;\n // Ensure sufficient elements are buffered\n if (this._state === exports.OPEN)\n this._fillBuffer();\n }\n }\n /**\n Initializing the iterator by calling {@link BufferedIterator#_begin}\n and changing state from INIT to OPEN.\n @protected\n @param {boolean} autoStart Whether reading of items should immediately start after OPEN.\n */\n _init(autoStart) {\n // Perform initialization tasks\n let doneCalled = false;\n this._reading = true;\n this._begin(() => {\n if (doneCalled)\n throw new Error('done callback called multiple times');\n doneCalled = true;\n // Open the iterator and start buffering\n this._reading = false;\n this._changeState(exports.OPEN);\n if (autoStart)\n this._fillBufferAsync();\n // If reading should not start automatically, the iterator doesn't become readable.\n // Therefore, mark the iterator as (potentially) readable so consumers know it might be read.\n else\n this.readable = true;\n });\n }\n /**\n Writes beginning items and opens iterator resources.\n Should never be called before {@link BufferedIterator#_init};\n typically, `_init` is responsible for calling `_begin`.\n @protected\n @param {function} done To be called when initialization is complete\n */\n _begin(done) {\n done();\n }\n /**\n Tries to read the next item from the iterator.\n If the buffer is empty,\n this method calls {@link BufferedIterator#_read} to fetch items.\n @returns {object?} The next item, or `null` if none is available\n */\n read() {\n if (this.done)\n return null;\n // An explicit read kickstarts the source\n if (!this._sourceStarted)\n this._sourceStarted = true;\n // Try to retrieve an item from the buffer\n const buffer = this._buffer;\n let item;\n if (buffer.empty) {\n item = null;\n this.readable = false;\n }\n else {\n item = buffer.shift();\n }\n // If the buffer is becoming empty, either fill it or end the iterator\n if (!this._reading && buffer.length < this._maxBufferSize) {\n // If the iterator is not closed and thus may still generate new items, fill the buffer\n if (!this.closed)\n this._fillBufferAsync();\n // No new items will be generated, so if none are buffered, the iterator ends here\n else if (buffer.empty)\n this._endAsync();\n }\n return item;\n }\n /**\n Tries to generate the given number of items.\n Implementers should add `count` items through {@link BufferedIterator#_push}.\n @protected\n @param {integer} count The number of items to generate\n @param {function} done To be called when reading is complete\n */\n _read(count, done) {\n done();\n }\n /**\n Adds an item to the internal buffer.\n @protected\n @param {object} item The item to add\n @emits module:asynciterator.AsyncIterator.readable\n */\n _push(item) {\n if (!this.done) {\n this._pushedCount++;\n this._buffer.push(item);\n this.readable = true;\n }\n }\n /**\n Fills the internal buffer until `this._maxBufferSize` items are present.\n This method calls {@link BufferedIterator#_read} to fetch items.\n @protected\n @emits module:asynciterator.AsyncIterator.readable\n */\n _fillBuffer() {\n let neededItems;\n // Avoid recursive reads\n if (this._reading) {\n // Do nothing\n }\n // If iterator closing started in the meantime, don't generate new items anymore\n else if (this.closed) {\n this._completeClose();\n }\n // Otherwise, try to fill empty spaces in the buffer by generating new items\n else if ((neededItems = Math.min(this._maxBufferSize - this._buffer.length, 128)) > 0) {\n // Acquire reading lock and start reading, counting pushed items\n this._pushedCount = 0;\n this._reading = true;\n this._read(neededItems, () => {\n // Verify the callback is only called once\n if (!neededItems)\n throw new Error('done callback called multiple times');\n neededItems = 0;\n // Release reading lock\n this._reading = false;\n // If the iterator was closed while reading, complete closing\n if (this.closed) {\n this._completeClose();\n }\n // If the iterator pushed one or more items,\n // it might currently be able to generate additional items\n // (even though all pushed items might already have been read)\n else if (this._pushedCount) {\n this.readable = true;\n // If the buffer is insufficiently full, continue filling\n if (this._buffer.length < this._maxBufferSize / 2)\n this._fillBufferAsync();\n }\n });\n }\n }\n /**\n Schedules `_fillBuffer` asynchronously.\n */\n _fillBufferAsync() {\n // Acquire reading lock to avoid recursive reads\n if (!this._reading) {\n this._reading = true;\n taskScheduler(() => {\n // Release reading lock so _fillBuffer` can take it\n this._reading = false;\n this._fillBuffer();\n });\n }\n }\n /**\n Stops the iterator from generating new items\n after a possible pending read operation has finished.\n Already generated, pending, or terminating items can still be emitted.\n After this, the iterator will end asynchronously.\n @emits module:asynciterator.AsyncIterator.end\n */\n close() {\n // If the iterator is not currently reading, we can close immediately\n if (!this._reading)\n this._completeClose();\n // Closing cannot complete when reading, so temporarily assume CLOSING state\n // `_fillBuffer` becomes responsible for calling `_completeClose`\n else\n this._changeState(exports.CLOSING);\n }\n /**\n Stops the iterator from generating new items,\n switching from `CLOSING` state into `CLOSED` state.\n @protected\n @emits module:asynciterator.AsyncIterator.end\n */\n _completeClose() {\n if (this._changeState(exports.CLOSED)) {\n // Write possible terminating items\n this._reading = true;\n this._flush(() => {\n if (!this._reading)\n throw new Error('done callback called multiple times');\n this._reading = false;\n // If no items are left, end the iterator\n // Otherwise, `read` becomes responsible for ending the iterator\n if (this._buffer.empty)\n this._endAsync();\n });\n }\n }\n /* Called by {@link module:asynciterator.AsyncIterator#destroy} */\n _destroy(cause, callback) {\n this._buffer.clear();\n callback();\n }\n /**\n Writes terminating items and closes iterator resources.\n Should never be called before {@link BufferedIterator#close};\n typically, `close` is responsible for calling `_flush`.\n @protected\n @param {function} done To be called when termination is complete\n */\n _flush(done) {\n done();\n }\n /**\n Generates details for a textual representation of the iterator.\n @protected\n */\n _toStringDetails() {\n const buffer = this._buffer;\n return `{${buffer.empty ? '' : `next: ${buffer.first}, `}buffer: ${buffer.length}}`;\n }\n}\nexports.BufferedIterator = BufferedIterator;\n/**\n An iterator that generates items based on a source iterator.\n This class serves as a base class for other iterators.\n @extends module:asynciterator.BufferedIterator\n*/\nclass TransformIterator extends BufferedIterator {\n /**\n Creates a new `TransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object} [options] Settings of the iterator\n @param {integer} [options.maxBufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its transformation yields no items\n @param {boolean} [options.destroySource=true] Whether the source should be destroyed when this transformed iterator is closed or destroyed\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n */\n constructor(source, options = source || {}) {\n super(options);\n this._boundPush = (item) => this._push(item);\n // Shift parameters if needed\n if (!isSourceExpression(source))\n source = options.source;\n // The passed source is an AsyncIterator or readable stream\n if (isEventEmitter(source)) {\n this.source = source;\n }\n // The passed value is a promise or source creation function\n else if (source) {\n this._createSource = isPromise(source) ? () => source : source;\n if (this._sourceStarted)\n this._loadSourceAsync();\n }\n // Set other options\n this._optional = Boolean(options.optional);\n this._destroySource = options.destroySource !== false;\n }\n /**\n The source this iterator generates items from.\n @type module:asynciterator.AsyncIterator\n */\n get source() {\n if (isFunction(this._createSource))\n this._loadSourceAsync();\n return this._source;\n }\n set source(value) {\n // Validate and set source\n const source = this._source = this._validateSource(value);\n source[exports.DESTINATION] = this;\n // Do not read the source if this iterator already ended\n if (this.done) {\n if (this._destroySource)\n source.destroy();\n }\n // Close this iterator if the source already ended\n else if (source.done) {\n this.close();\n }\n // Otherwise, react to source events\n else {\n source.on('end', destinationCloseWhenDone);\n source.on('readable', destinationFillBuffer);\n source.on('error', destinationEmitError);\n }\n }\n /**\n Initializes a source that was set through a promise\n @protected\n */\n _loadSourceAsync() {\n if (isFunction(this._createSource)) {\n // Assign the source after resolving\n Promise.resolve(this._createSource()).then(source => {\n delete this._createSource;\n this.source = source;\n this._fillBuffer();\n }, error => this.emit('error', error));\n // Signal that source creation is pending\n this._createSource = null;\n }\n }\n /**\n Validates whether the given iterator can be used as a source.\n @protected\n @param {object} source The source to validate\n @param {boolean} allowDestination Whether the source can already have a destination\n */\n _validateSource(source, allowDestination = false) {\n if (this._source || typeof this._createSource !== 'undefined')\n throw new Error('The source cannot be changed after it has been set');\n return ensureSourceAvailable(source, allowDestination);\n }\n /**\n Tries to read transformed items.\n */\n _read(count, done) {\n const next = () => {\n // Continue transforming until at least `count` items have been pushed\n if (this._pushedCount < count && !this.closed)\n taskScheduler(() => this._readAndTransform(next, done));\n else\n done();\n };\n this._readAndTransform(next, done);\n }\n /**\n Reads a transforms an item\n */\n _readAndTransform(next, done) {\n // If the source exists and still can read items,\n // try to read and transform the next item.\n let item;\n const source = this.source;\n if (!source || source.done || (item = source.read()) === null)\n done();\n else if (!this._optional)\n this._transform(item, next, this._boundPush);\n else\n this._optionalTransform(item, next);\n }\n /**\n Tries to transform the item;\n if the transformation yields no items, pushes the original item.\n */\n _optionalTransform(item, done) {\n const pushedCount = this._pushedCount;\n this._transform(item, () => {\n if (pushedCount === this._pushedCount)\n this._push(item);\n done();\n }, this._boundPush);\n }\n /**\n Generates items based on the item from the source.\n Implementers should add items through {@link BufferedIterator#_push}.\n The default implementation pushes the source item as-is.\n @protected\n @param {object} item The last read item from the source\n @param {function} done To be called when reading is complete\n @param {function} push A callback to push zero or more transformation results.\n */\n _transform(item, done, push) {\n push(item);\n done();\n }\n /**\n Closes the iterator when pending items are transformed.\n @protected\n */\n _closeWhenDone() {\n this.close();\n }\n /* Cleans up the source iterator and ends. */\n _end(destroy) {\n const source = this._source;\n if (source) {\n source.removeListener('end', destinationCloseWhenDone);\n source.removeListener('error', destinationEmitError);\n source.removeListener('readable', destinationFillBuffer);\n delete source[exports.DESTINATION];\n if (this._destroySource)\n source.destroy();\n }\n super._end(destroy);\n }\n}\nexports.TransformIterator = TransformIterator;\nfunction destinationSetReadable() {\n this[exports.DESTINATION].readable = true;\n}\nfunction destinationEmitError(error) {\n this[exports.DESTINATION].emit('error', error);\n}\nfunction destinationClose() {\n this[exports.DESTINATION].close();\n}\nfunction destinationCloseWhenDone() {\n this[exports.DESTINATION]._closeWhenDone();\n}\nfunction destinationFillBuffer() {\n if (this[exports.DESTINATION]._sourceStarted !== false)\n this[exports.DESTINATION]._fillBuffer();\n}\n/**\n An iterator that generates items based on a source iterator\n and simple transformation steps passed as arguments.\n @extends module:asynciterator.TransformIterator\n*/\nclass SimpleTransformIterator extends TransformIterator {\n /**\n Creates a new `SimpleTransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n */\n constructor(source, options) {\n super(source, options);\n this._offset = 0;\n this._limit = Infinity;\n this._filter = (item) => true;\n // Set transformation steps from the options\n options = options || (!isSourceExpression(source) ? source : null);\n if (options) {\n const transform = isFunction(options) ? options : options.transform;\n const { limit, offset, filter, map, prepend, append } = options;\n // Don't emit any items when bounds are unreachable\n if (offset === Infinity || limit === -Infinity) {\n this._limit = 0;\n }\n else {\n if (Number.isFinite(offset))\n this._offset = Math.max(Math.trunc(offset), 0);\n if (Number.isFinite(limit))\n this._limit = Math.max(Math.trunc(limit), 0);\n if (isFunction(filter))\n this._filter = filter;\n if (isFunction(map))\n this._map = map;\n this._transform = isFunction(transform) ? transform : null;\n }\n if (prepend)\n this._prepender = isEventEmitter(prepend) ? prepend : fromArray(prepend);\n if (append)\n this._appender = isEventEmitter(append) ? append : fromArray(append);\n }\n }\n /* Tries to read and transform items */\n _read(count, done) {\n const next = () => this._readAndTransformSimple(count, nextAsync, done);\n this._readAndTransformSimple(count, nextAsync, done);\n function nextAsync() {\n taskScheduler(next);\n }\n }\n /* Reads and transform items */\n _readAndTransformSimple(count, next, done) {\n // Verify we have a readable source\n let item;\n const { source } = this;\n if (!source || source.done) {\n done();\n return;\n }\n // Verify we are still below the limit\n if (this._limit === 0)\n this.close();\n // Try to read the next item until at least `count` items have been pushed\n while (!this.closed && this._pushedCount < count && (item = source.read()) !== null) {\n // Verify the item passes the filter and we've reached the offset\n if (!this._filter(item) || this._offset !== 0 && this._offset--)\n continue;\n // Synchronously map the item\n const mappedItem = typeof this._map === 'undefined' ? item : this._map(item);\n // Skip `null` items, pushing the original item if the mapping was optional\n if (mappedItem === null) {\n if (this._optional)\n this._push(item);\n }\n // Skip the asynchronous phase if no transformation was specified\n else if (!isFunction(this._transform)) {\n this._push(mappedItem);\n }\n // Asynchronously transform the item, and wait for `next` to call back\n else {\n if (!this._optional)\n this._transform(mappedItem, next, this._boundPush);\n else\n this._optionalTransform(mappedItem, next);\n return;\n }\n // Stop when we've reached the limit\n if (--this._limit === 0)\n this.close();\n }\n done();\n }\n // Prepends items to the iterator\n _begin(done) {\n this._insert(this._prepender, done);\n delete this._prepender;\n }\n // Appends items to the iterator\n _flush(done) {\n this._insert(this._appender, done);\n delete this._appender;\n }\n // Inserts items in the iterator\n _insert(inserter, done) {\n const push = (item) => this._push(item);\n if (!inserter || inserter.done) {\n done();\n }\n else {\n inserter.on('data', push);\n inserter.on('end', end);\n }\n function end() {\n inserter.removeListener('data', push);\n inserter.removeListener('end', end);\n done();\n }\n }\n}\nexports.SimpleTransformIterator = SimpleTransformIterator;\n/**\n An iterator that generates items by transforming each item of a source\n with a different iterator.\n @extends module:asynciterator.TransformIterator\n*/\nclass MultiTransformIterator extends TransformIterator {\n /**\n Creates a new `MultiTransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Function} [options.multiTransform] A function to asynchronously transform items to iterators from the source\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n */\n constructor(source, options) {\n super(source, options);\n this._transformerQueue = [];\n // Set transformation steps from the options\n if (options) {\n const multiTransform = isFunction(options) ? options : options.multiTransform;\n if (multiTransform)\n this._createTransformer = multiTransform;\n }\n }\n /* Tries to read and transform items */\n _read(count, done) {\n // Remove transformers that have ended\n const transformerQueue = this._transformerQueue, optional = this._optional;\n let head, item;\n while ((head = transformerQueue[0]) && head.transformer.done) {\n // If transforming is optional, push the original item if none was pushed\n if (optional && head.item !== null) {\n count--;\n this._push(head.item);\n }\n // Remove listeners from the transformer\n transformerQueue.shift();\n const { transformer } = head;\n transformer.removeListener('end', destinationFillBuffer);\n transformer.removeListener('readable', destinationFillBuffer);\n transformer.removeListener('error', destinationEmitError);\n }\n // Create new transformers if there are less than the maximum buffer size\n const { source } = this;\n while (source && !source.done && transformerQueue.length < this.maxBufferSize) {\n // Read an item to create the next transformer\n item = source.read();\n if (item === null)\n break;\n // Create the transformer and listen to its events\n const transformer = (this._createTransformer(item) ||\n new EmptyIterator());\n transformer[exports.DESTINATION] = this;\n transformer.on('end', destinationFillBuffer);\n transformer.on('readable', destinationFillBuffer);\n transformer.on('error', destinationEmitError);\n transformerQueue.push({ transformer, item });\n }\n // Try to read `count` items from the transformer\n head = transformerQueue[0];\n if (head) {\n const { transformer } = head;\n while (count-- > 0 && (item = transformer.read()) !== null) {\n this._push(item);\n // If a transformed item was pushed, no need to push the original anymore\n if (optional)\n head.item = null;\n }\n }\n // End the iterator if the source has ended\n else if (source && source.done) {\n this.close();\n }\n done();\n }\n /**\n Creates a transformer for the given item.\n @param {object} item The last read item from the source\n @returns {module:asynciterator.AsyncIterator} An iterator that transforms the given item\n */\n _createTransformer(item) {\n return new SingletonIterator(item);\n }\n /* Closes the iterator when pending items are transformed. */\n _closeWhenDone() {\n // Only close if all transformers are read\n if (!this._transformerQueue.length)\n this.close();\n }\n _end(destroy) {\n super._end(destroy);\n // Also destroy the open transformers left in the queue\n if (this._destroySource) {\n for (const item of this._transformerQueue)\n item.transformer.destroy();\n }\n }\n}\nexports.MultiTransformIterator = MultiTransformIterator;\n/**\n An iterator that generates items by reading from multiple other iterators.\n @extends module:asynciterator.BufferedIterator\n*/\nclass UnionIterator extends BufferedIterator {\n /**\n Creates a new `UnionIterator`.\n @param {module:asynciterator.AsyncIterator|Array} [sources] The sources to read from\n @param {object} [options] Settings of the iterator\n @param {boolean} [options.destroySource=true] Whether the sources should be destroyed when transformed iterator is closed or destroyed\n */\n constructor(sources, options = {}) {\n super(options);\n this._sources = [];\n this._currentSource = -1;\n const autoStart = options.autoStart !== false;\n // Sources have been passed as an iterator\n if (isEventEmitter(sources)) {\n sources.on('error', error => this.emit('error', error));\n this._pending = { loading: false, sources: sources };\n if (autoStart)\n this._loadSources();\n }\n // Sources have been passed as a non-empty array\n else if (Array.isArray(sources) && sources.length > 0) {\n for (const source of sources)\n this._addSource(source);\n }\n // Sources are an empty list\n else if (autoStart) {\n this.close();\n }\n // Set other options\n this._destroySources = options.destroySources !== false;\n }\n // Loads pending sources into the sources list\n _loadSources() {\n // Obtain sources iterator\n const sources = this._pending.sources;\n this._pending.loading = true;\n // Close immediately if done\n if (sources.done) {\n delete this._pending;\n this.close();\n }\n // Otherwise, set up source reading\n else {\n sources.on('data', source => {\n this._addSource(source);\n this._fillBufferAsync();\n });\n sources.on('end', () => {\n delete this._pending;\n this._fillBuffer();\n });\n }\n }\n // Adds the given source to the internal sources array\n _addSource(source) {\n if (isPromise(source))\n source = wrap(source);\n if (!source.done) {\n this._sources.push(source);\n source[exports.DESTINATION] = this;\n source.on('error', destinationEmitError);\n source.on('readable', destinationFillBuffer);\n source.on('end', destinationRemoveEmptySources);\n }\n }\n // Removes sources that will no longer emit items\n _removeEmptySources() {\n this._sources = this._sources.filter((source, index) => {\n // Adjust the index of the current source if needed\n if (source.done && index <= this._currentSource)\n this._currentSource--;\n return !source.done;\n });\n this._fillBuffer();\n }\n // Reads items from the next sources\n _read(count, done) {\n var _a;\n // Start source loading if needed\n if (((_a = this._pending) === null || _a === void 0 ? void 0 : _a.loading) === false)\n this._loadSources();\n // Try to read `count` items\n let lastCount = 0, item;\n while (lastCount !== (lastCount = count)) {\n // Try every source at least once\n for (let i = 0; i < this._sources.length && count > 0; i++) {\n // Pick the next source\n this._currentSource = (this._currentSource + 1) % this._sources.length;\n const source = this._sources[this._currentSource];\n // Attempt to read an item from that source\n if ((item = source.read()) !== null) {\n count--;\n this._push(item);\n }\n }\n }\n // Close this iterator if all of its sources have been read\n if (!this._pending && this._sources.length === 0)\n this.close();\n done();\n }\n _end(destroy = false) {\n super._end(destroy);\n // Destroy all sources that are still readable\n if (this._destroySources) {\n for (const source of this._sources)\n source.destroy();\n // Also close the sources stream if applicable\n if (this._pending) {\n this._pending.sources.destroy();\n delete this._pending;\n }\n }\n }\n}\nexports.UnionIterator = UnionIterator;\nfunction destinationRemoveEmptySources() {\n this[exports.DESTINATION]._removeEmptySources();\n}\n/**\n An iterator that copies items from another iterator.\n @extends module:asynciterator.TransformIterator\n*/\nclass ClonedIterator extends TransformIterator {\n /**\n Creates a new `ClonedIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator copies items from\n */\n constructor(source) {\n super(source, { autoStart: false });\n this._readPosition = 0;\n this._reading = false;\n // As cloned iterators are not auto-started, they must always be marked as readable.\n if (source)\n this.readable = true;\n }\n _init() {\n // skip buffered iterator initialization, since we read from history\n }\n close() {\n // skip buffered iterator cleanup\n AsyncIterator.prototype.close.call(this);\n }\n // The source this iterator copies items from\n get source() {\n return super.source;\n }\n set source(value) {\n // Validate and set the source\n const source = this._source = this._validateSource(value);\n // Create a history reader for the source if none already existed\n const history = (source && source[exports.DESTINATION]) ||\n (source[exports.DESTINATION] = new HistoryReader(source));\n // Do not read the source if this iterator already ended\n if (this.done) {\n if (this._destroySource)\n source.destroy();\n }\n // Close this clone if history is empty and the source has ended\n else if (history.endsAt(0)) {\n this.close();\n }\n else {\n // Subscribe to history events\n history.register(this);\n // If there are already items in history, this clone is readable\n // If the source has a lazy start, always mark this iterator as readable without eagerly triggering a read.\n if (source._sourceStarted === false || history.readAt(0) !== null)\n this.readable = true;\n }\n // Hook pending property callbacks to the source\n const propertyCallbacks = this._propertyCallbacks;\n for (const propertyName in propertyCallbacks) {\n const callbacks = propertyCallbacks[propertyName];\n for (const callback of callbacks)\n this._getSourceProperty(propertyName, callback);\n }\n }\n /**\n Validates whether the given iterator can be used as a source.\n @protected\n @param {object} source The source to validate\n @param {boolean} allowDestination Whether the source can already have a destination\n */\n _validateSource(source, allowDestination = false) {\n const history = (source && source[exports.DESTINATION]);\n return super._validateSource(source, !history || history instanceof HistoryReader);\n }\n // Retrieves the property with the given name from the clone or its source.\n getProperty(propertyName, callback) {\n const { source } = this, properties = this._properties, hasProperty = properties && (propertyName in properties);\n // If no callback was passed, return the property value\n if (!callback) {\n return hasProperty ? properties && properties[propertyName] :\n source && source.getProperty(propertyName);\n }\n // Try to look up the property in this clone\n super.getProperty(propertyName, callback);\n // If the property is not set on this clone, it might become set on the source first\n if (source && !hasProperty)\n this._getSourceProperty(propertyName, callback);\n return undefined;\n }\n // Retrieves the property with the given name from the source\n _getSourceProperty(propertyName, callback) {\n this.source.getProperty(propertyName, value => {\n // Only send the source's property if it was not set on the clone in the meantime\n if (!this._properties || !(propertyName in this._properties))\n callback(value);\n });\n }\n // Retrieves all properties of the iterator and its source.\n getProperties() {\n const base = this.source ? this.source.getProperties() : {}, properties = this._properties;\n for (const name in properties)\n base[name] = properties[name];\n return base;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `{source: ${this.source ? this.source.toString() : 'none'}}`;\n }\n /* Tries to read an item */\n read() {\n // An explicit read kickstarts the source\n if (!this._sourceStarted)\n this._sourceStarted = true;\n const source = this.source;\n let item = null;\n if (!this.done && source) {\n // Try to read an item at the current point in history\n const history = source[exports.DESTINATION];\n if ((item = history.readAt(this._readPosition)) !== null)\n this._readPosition++;\n else\n this.readable = false;\n // Close the iterator if we are at the end of the source\n if (history.endsAt(this._readPosition))\n this.close();\n }\n return item;\n }\n /* End the iterator and cleans up. */\n _end(destroy) {\n // Unregister from a possible history reader\n const source = this.source;\n const history = source === null || source === void 0 ? void 0 : source[exports.DESTINATION];\n if (history)\n history.unregister(this);\n // Don't call TransformIterator#_end,\n // as it would make the source inaccessible for other clones\n BufferedIterator.prototype._end.call(this, destroy);\n }\n}\nexports.ClonedIterator = ClonedIterator;\n// Stores the history of a source, so it can be cloned\nclass HistoryReader {\n constructor(source) {\n this._history = [];\n this._trackers = new Set();\n this._source = source;\n // If the source is still live, set up clone tracking;\n // otherwise, the clones just read from the finished history\n if (!source.done) {\n // When the source becomes readable, makes all clones readable\n const setReadable = () => {\n for (const tracker of this._trackers)\n tracker.readable = true;\n };\n // When the source errors, re-emits the error\n const emitError = (error) => {\n for (const tracker of this._trackers)\n tracker.emit('error', error);\n };\n // When the source ends, closes all clones that are fully read\n const end = () => {\n // Close the clone if all items had been emitted\n for (const tracker of this._trackers) {\n if (tracker._sourceStarted !== false &&\n tracker._readPosition === this._history.length)\n tracker.close();\n }\n this._trackers.clear();\n // Remove source listeners, since no further events will be emitted\n source.removeListener('end', end);\n source.removeListener('error', emitError);\n source.removeListener('readable', setReadable);\n };\n // Listen to source events to trigger events in subscribed clones\n source.on('end', end);\n source.on('error', emitError);\n source.on('readable', setReadable);\n }\n }\n // Registers a clone for history updates\n register(clone) {\n // Tracking is only needed if the source is still live\n if (!this._source.done)\n this._trackers.add(clone);\n }\n // Unregisters a clone for history updates\n unregister(clone) {\n this._trackers.delete(clone);\n }\n // Tries to read the item at the given history position\n readAt(pos) {\n let item = null;\n // Retrieve an item from history when available\n if (pos < this._history.length)\n item = this._history[pos];\n // Read a new item from the source when possible\n else if (!this._source.done && (item = this._source.read()) !== null)\n this._history[pos] = item;\n return item;\n }\n // Determines whether the given position is the end of the source\n endsAt(pos) {\n return this._source.done && this._history.length === pos;\n }\n}\n/**\n * An iterator that takes a variety of iterable objects as a source.\n */\nclass WrappingIterator extends AsyncIterator {\n constructor(source, opts) {\n super();\n this._source = null;\n this._destroySource = (opts === null || opts === void 0 ? void 0 : opts.destroySource) !== false;\n // If promise, set up a temporary source and replace when ready\n if (isPromise(source)) {\n this._source = new AsyncIterator();\n source.then(value => {\n this._source = null;\n this.source = value;\n }).catch(error => this.emit('error', error));\n }\n // Otherwise, set the source synchronously\n else if (source) {\n this.source = source;\n }\n }\n set source(value) {\n let source = value;\n if (this._source !== null)\n throw new Error('The source cannot be changed after it has been set');\n // Process an iterable source\n if (isIterable(source))\n source = source[Symbol.iterator]();\n // Process an iterator source\n if (isIterator(source)) {\n let iterator = source;\n source = new events_1.EventEmitter();\n source.read = () => {\n if (iterator !== null) {\n // Skip any null values inside of the iterator\n let next;\n while (!(next = iterator.next()).done) {\n if (next.value !== null)\n return next.value;\n }\n // No remaining values, so stop iterating\n iterator = null;\n this.close();\n }\n return null;\n };\n }\n // Process any other readable source\n else {\n source = ensureSourceAvailable(source);\n }\n // Do not change sources if the iterator is already done\n if (this.done) {\n if (this._destroySource && isFunction(source.destroy))\n source.destroy();\n return;\n }\n // Set up event handling\n source[exports.DESTINATION] = this;\n source.on('end', destinationClose);\n source.on('error', destinationEmitError);\n source.on('readable', destinationSetReadable);\n // Enable reading from source\n this._source = source;\n this.readable = source.readable !== false;\n }\n read() {\n if (this._source !== null && this._source.readable !== false) {\n const item = this._source.read();\n if (item !== null)\n return item;\n this.readable = false;\n }\n return null;\n }\n _end(destroy = false) {\n if (this._source !== null) {\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[exports.DESTINATION];\n if (this._destroySource && isFunction(this._source.destroy))\n this._source.destroy();\n this._source = null;\n }\n super._end(destroy);\n }\n}\nexports.WrappingIterator = WrappingIterator;\n/**\n Creates an iterator that wraps around a given iterator or readable stream.\n Use this to convert an iterator-like object into a full-featured AsyncIterator.\n After this operation, only read the returned iterator instead of the given one.\n @function\n @param [source] The source this iterator generates items from\n @param {object} [options] Settings of the iterator\n @returns {module:asynciterator.AsyncIterator} A new iterator with the items from the given iterator\n*/\nfunction wrap(source, options) {\n // For backward compatibility, always use TransformIterator when options are specified\n if (options && ('autoStart' in options || 'optional' in options || 'source' in options || 'maxBufferSize' in options)) {\n if (source && !isEventEmitter(source))\n source = new WrappingIterator(source);\n return new TransformIterator(source, options);\n }\n // Empty iterator if no source specified\n if (!source)\n return empty();\n // Unwrap promised sources\n if (isPromise(source))\n return new WrappingIterator(source, options);\n // Directly return any AsyncIterator\n if (source instanceof AsyncIterator)\n return source;\n // Other iterable objects\n if (Array.isArray(source))\n return fromArray(source);\n if (isIterable(source) || isIterator(source) || isEventEmitter(source))\n return new WrappingIterator(source, options);\n // Other types are unsupported\n throw new TypeError(`Invalid source: ${source}`);\n}\nexports.wrap = wrap;\n/**\n Creates an empty iterator.\n */\nfunction empty() {\n return new EmptyIterator();\n}\nexports.empty = empty;\n/**\n Creates an iterator with a single item.\n @param {object} item the item\n */\nfunction single(item) {\n return new SingletonIterator(item);\n}\nexports.single = single;\n/**\n Creates an iterator for the given array.\n @param {Array} items the items\n */\nfunction fromArray(items) {\n return new ArrayIterator(items);\n}\nexports.fromArray = fromArray;\n/**\n Creates an iterator for the given Iterator.\n @param {Iterable} source the iterator\n */\nfunction fromIterator(source) {\n return new WrappingIterator(source);\n}\nexports.fromIterator = fromIterator;\n/**\n Creates an iterator for the given Iterable.\n @param {Iterable} source the iterable\n */\nfunction fromIterable(source) {\n return new WrappingIterator(source);\n}\nexports.fromIterable = fromIterable;\n/**\n Creates an iterator containing all items from the given iterators.\n @param {Array} items the items\n */\nfunction union(sources) {\n return new UnionIterator(sources);\n}\nexports.union = union;\n/**\n Creates an iterator of integers for the given numeric range.\n @param {Array} items the items\n */\nfunction range(start, end, step) {\n return new IntegerIterator({ start, end, step });\n}\nexports.range = range;\n// Returns a function that calls `fn` with `self` as `this` pointer. */\nfunction bind(fn, self) {\n return self ? fn.bind(self) : fn;\n}\n// Determines whether the given object is a function\nfunction isFunction(object) {\n return typeof object === 'function';\n}\nexports.isFunction = isFunction;\n// Determines whether the given object is an EventEmitter\nfunction isEventEmitter(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.on);\n}\nexports.isEventEmitter = isEventEmitter;\n// Determines whether the given object is a promise\nfunction isPromise(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.then);\n}\nexports.isPromise = isPromise;\n// Determines whether the given object is a source expression\nfunction isSourceExpression(object) {\n return object && (isEventEmitter(object) || isPromise(object) || isFunction(object));\n}\nexports.isSourceExpression = isSourceExpression;\n// Determines whether the given object supports the iterable protocol\nfunction isIterable(object) {\n return object && (Symbol.iterator in object);\n}\nexports.isIterable = isIterable;\n// Determines whether the given object supports the iterator protocol\nfunction isIterator(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.next);\n}\nexports.isIterator = isIterator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedList = void 0;\n/**\n * A list with O(1) push and shift operations.\n */\nclass LinkedList {\n constructor() {\n this._length = 0;\n this._head = null;\n this._tail = null;\n }\n get length() { return this._length; }\n get first() { var _a; return (_a = this._head) === null || _a === void 0 ? void 0 : _a.value; }\n get last() { var _a; return (_a = this._tail) === null || _a === void 0 ? void 0 : _a.value; }\n get empty() { return this._head === null; }\n push(value) {\n const node = { value, next: null };\n if (this._tail === null)\n this._head = this._tail = node;\n else\n this._tail.next = this._tail = node;\n this._length++;\n }\n shift() {\n if (this._head === null)\n return undefined;\n const { value, next } = this._head;\n this._head = next;\n if (next === null)\n this._tail = null;\n this._length--;\n return value;\n }\n clear() {\n this._length = 0;\n this._head = this._tail = null;\n }\n}\nexports.LinkedList = LinkedList;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTaskScheduler = void 0;\nconst resolved = Promise.resolve(undefined);\n// Returns a function that asynchronously schedules a task\nfunction createTaskScheduler() {\n // Use or create a microtask scheduler\n const scheduleMicrotask = typeof queueMicrotask === 'function' ?\n queueMicrotask : (task) => resolved.then(task);\n // Use or create a macrotask scheduler\n const scheduleMacrotask = typeof setImmediate === 'function' ?\n setImmediate : (task) => setTimeout(task, 0);\n // Interrupt with a macrotask every once in a while to avoid freezing\n let i = 0;\n let queue = null;\n return (task) => {\n // Tasks are currently being queued to avoid freezing\n if (queue !== null)\n queue.push(task);\n // Tasks are being scheduled normally as microtasks\n else if (++i < 100)\n scheduleMicrotask(task);\n // A macrotask interruption is needed\n else {\n // Hold all tasks in a queue, and reschedule them after a macrotask\n queue = [task];\n scheduleMacrotask(() => {\n // Work through the queue\n for (const queued of queue)\n scheduleMicrotask(queued);\n queue = null;\n // Reset the interruption schedule\n i = 0;\n });\n }\n };\n}\nexports.createTaskScheduler = createTaskScheduler;\n","\"use strict\";\n/**\n * @module LRUCache\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = void 0;\nconst perf = typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date;\nconst warned = new Set();\n/* c8 ignore start */\nconst PROCESS = (typeof process === 'object' && !!process ? process : {});\n/* c8 ignore start */\nconst emitWarning = (msg, type, code, fn) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`);\n};\nlet AC = globalThis.AbortController;\nlet AS = globalThis.AbortSignal;\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort;\n _onabort = [];\n reason;\n aborted = false;\n addEventListener(_, fn) {\n this._onabort.push(fn);\n }\n };\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill();\n }\n signal = new AS();\n abort(reason) {\n if (this.signal.aborted)\n return;\n //@ts-ignore\n this.signal.reason = reason;\n //@ts-ignore\n this.signal.aborted = true;\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason);\n }\n this.signal.onabort?.(reason);\n }\n };\n let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning)\n return;\n printACPolyfillWarning = false;\n emitWarning('AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);\n };\n}\n/* c8 ignore stop */\nconst shouldWarn = (code) => !warned.has(code);\nconst TYPE = Symbol('type');\nconst isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max) => !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null;\n/* c8 ignore stop */\nclass ZeroArray extends Array {\n constructor(size) {\n super(size);\n this.fill(0);\n }\n}\nclass Stack {\n heap;\n length;\n // private constructor\n static #constructing = false;\n static create(max) {\n const HeapCls = getUintArray(max);\n if (!HeapCls)\n return [];\n Stack.#constructing = true;\n const s = new Stack(max, HeapCls);\n Stack.#constructing = false;\n return s;\n }\n constructor(max, HeapCls) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)');\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max);\n this.length = 0;\n }\n push(n) {\n this.heap[this.length++] = n;\n }\n pop() {\n return this.heap[--this.length];\n }\n}\n/**\n * Default export, the thing you're using this module to get.\n *\n * All properties from the options object (with the exception of\n * {@link OptionsBase.max} and {@link OptionsBase.maxSize}) are added as\n * normal public members. (`max` and `maxBase` are read-only getters.)\n * Changing any of these will alter the defaults for subsequent method calls,\n * but is otherwise safe.\n */\nclass LRUCache {\n // properties coming in from the options of these, only max and maxSize\n // really *need* to be protected. The rest can be modified, as they just\n // set defaults for various methods.\n #max;\n #maxSize;\n #dispose;\n #disposeAfter;\n #fetchMethod;\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl;\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution;\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas;\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale;\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet;\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL;\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize;\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort;\n // computed properties\n #size;\n #calculatedSize;\n #keyMap;\n #keyList;\n #valList;\n #next;\n #prev;\n #head;\n #tail;\n #free;\n #disposed;\n #sizes;\n #starts;\n #ttls;\n #hasDispose;\n #hasFetchMethod;\n #hasDisposeAfter;\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals(c) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head;\n },\n get tail() {\n return c.#tail;\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p) => c.#isBackgroundFetch(p),\n backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),\n moveToTail: (index) => c.#moveToTail(index),\n indexes: (options) => c.#indexes(options),\n rindexes: (options) => c.#rindexes(options),\n isStale: (index) => c.#isStale(index),\n };\n }\n // Protected read-only members\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max() {\n return this.#max;\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize() {\n return this.#maxSize;\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize() {\n return this.#calculatedSize;\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size() {\n return this.#size;\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod() {\n return this.#fetchMethod;\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose;\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter;\n }\n constructor(options) {\n const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer');\n }\n const UintArray = max ? getUintArray(max) : Array;\n if (!UintArray) {\n throw new Error('invalid max value: ' + max);\n }\n this.#max = max;\n this.#maxSize = maxSize;\n this.maxEntrySize = maxEntrySize || this.#maxSize;\n this.sizeCalculation = sizeCalculation;\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function');\n }\n }\n if (fetchMethod !== undefined &&\n typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified');\n }\n this.#fetchMethod = fetchMethod;\n this.#hasFetchMethod = !!fetchMethod;\n this.#keyMap = new Map();\n this.#keyList = new Array(max).fill(undefined);\n this.#valList = new Array(max).fill(undefined);\n this.#next = new UintArray(max);\n this.#prev = new UintArray(max);\n this.#head = 0;\n this.#tail = 0;\n this.#free = Stack.create(max);\n this.#size = 0;\n this.#calculatedSize = 0;\n if (typeof dispose === 'function') {\n this.#dispose = dispose;\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter;\n this.#disposed = [];\n }\n else {\n this.#disposeAfter = undefined;\n this.#disposed = undefined;\n }\n this.#hasDispose = !!this.#dispose;\n this.#hasDisposeAfter = !!this.#disposeAfter;\n this.noDisposeOnSet = !!noDisposeOnSet;\n this.noUpdateTTL = !!noUpdateTTL;\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;\n this.ignoreFetchAbort = !!ignoreFetchAbort;\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError('maxSize must be a positive integer if specified');\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError('maxEntrySize must be a positive integer if specified');\n }\n this.#initializeSizeTracking();\n }\n this.allowStale = !!allowStale;\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;\n this.updateAgeOnGet = !!updateAgeOnGet;\n this.updateAgeOnHas = !!updateAgeOnHas;\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1;\n this.ttlAutopurge = !!ttlAutopurge;\n this.ttl = ttl || 0;\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified');\n }\n this.#initializeTTLTracking();\n }\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError('At least one of max, maxSize, or ttl is required');\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED';\n if (shouldWarn(code)) {\n warned.add(code);\n const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.';\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);\n }\n }\n }\n /**\n * Return the remaining TTL time for a given entry key\n */\n getRemainingTTL(key) {\n return this.#keyMap.has(key) ? Infinity : 0;\n }\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max);\n const starts = new ZeroArray(this.#max);\n this.#ttls = ttls;\n this.#starts = starts;\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0;\n ttls[index] = ttl;\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.delete(this.#keyList[index]);\n }\n }, ttl + 1);\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n };\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0;\n };\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index];\n const start = starts[index];\n /* c8 ignore next */\n if (!ttl || !start)\n return;\n status.ttl = ttl;\n status.start = start;\n status.now = cachedNow || getNow();\n const age = status.now - start;\n status.remainingTTL = ttl - age;\n }\n };\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0;\n const getNow = () => {\n const n = perf.now();\n if (this.ttlResolution > 0) {\n cachedNow = n;\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n return n;\n };\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key);\n if (index === undefined) {\n return 0;\n }\n const ttl = ttls[index];\n const start = starts[index];\n if (!ttl || !start) {\n return Infinity;\n }\n const age = (cachedNow || getNow()) - start;\n return ttl - age;\n };\n this.#isStale = index => {\n const s = starts[index];\n const t = ttls[index];\n return !!t && !!s && (cachedNow || getNow()) - s > t;\n };\n }\n // conditionally set private methods related to TTL\n #updateItemAge = () => { };\n #statusTTL = () => { };\n #setItemTTL = () => { };\n /* c8 ignore stop */\n #isStale = () => false;\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max);\n this.#calculatedSize = 0;\n this.#sizes = sizes;\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index];\n sizes[index] = 0;\n };\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0;\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function');\n }\n size = sizeCalculation(v, k);\n if (!isPosInt(size)) {\n throw new TypeError('sizeCalculation return invalid (expect positive integer)');\n }\n }\n else {\n throw new TypeError('invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.');\n }\n }\n return size;\n };\n this.#addItemSize = (index, size, status) => {\n sizes[index] = size;\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index];\n while (this.#calculatedSize > maxSize) {\n this.#evict(true);\n }\n }\n this.#calculatedSize += sizes[index];\n if (status) {\n status.entrySize = size;\n status.totalCalculatedSize = this.#calculatedSize;\n }\n };\n }\n #removeItemSize = _i => { };\n #addItemSize = (_i, _s, _st) => { };\n #requireSize = (_k, _v, size, sizeCalculation) => {\n if (size || sizeCalculation) {\n throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');\n }\n return 0;\n };\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#head) {\n break;\n }\n else {\n i = this.#prev[i];\n }\n }\n }\n }\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#tail) {\n break;\n }\n else {\n i = this.#next[i];\n }\n }\n }\n }\n #isValidIndex(index) {\n return (index !== undefined &&\n this.#keyMap.get(this.#keyList[index]) === index);\n }\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * A String value that is used in the creation of the default string description of an object.\n * Called by the built-in method Object.prototype.toString.\n */\n [Symbol.toStringTag] = 'LRUCache';\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to Array.find(). fn is called as fn(value, key, cache).\n */\n find(fn, getOptions = {}) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n if (fn(value, this.#keyList[i], this)) {\n return this.get(this.#keyList[i], getOptions);\n }\n }\n }\n /**\n * Call the supplied function on each item in the cache, in order from\n * most recently used to least recently used. fn is called as\n * fn(value, key, cache). Does not update age or recenty of use.\n * Does not iterate over stale values.\n */\n forEach(fn, thisp = this) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(fn, thisp = this) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false;\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.delete(this.#keyList[i]);\n deleted = true;\n }\n }\n return deleted;\n }\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Like {@link LRUCache#dump}, but just for a\n * single key. Always returns stale values, if their info is found in the\n * cache, so be sure to check for expired TTLs if relevant.\n */\n info(key) {\n const i = this.#keyMap.get(key);\n if (i === undefined)\n return undefined;\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n return undefined;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i];\n const start = this.#starts[i];\n if (ttl && start) {\n const remain = ttl - (perf.now() - start);\n entry.ttl = remain;\n entry.start = Date.now();\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n return entry;\n }\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to cache.load()\n */\n dump() {\n const arr = [];\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i];\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined || key === undefined)\n continue;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i];\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - this.#starts[i];\n entry.start = Math.floor(Date.now() - age);\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n arr.unshift([key, entry]);\n }\n return arr;\n }\n /**\n * Reset the cache and load in the items in entries in the order listed.\n * Note that the shape of the resulting cache may be different if the\n * same options are not used in both caches.\n */\n load(arr) {\n this.clear();\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start;\n entry.start = perf.now() - age;\n }\n this.set(key, entry.value, entry);\n }\n }\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n */\n set(k, v, setOptions = {}) {\n if (v === undefined) {\n this.delete(k);\n return this;\n }\n const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;\n let { noUpdateTTL = this.noUpdateTTL } = setOptions;\n const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss';\n status.maxEntrySizeExceeded = true;\n }\n // have to delete, in case something is there already.\n this.delete(k);\n return this;\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k);\n if (index === undefined) {\n // addition\n index = (this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size);\n this.#keyList[index] = k;\n this.#valList[index] = v;\n this.#keyMap.set(k, index);\n this.#next[this.#tail] = index;\n this.#prev[index] = this.#tail;\n this.#tail = index;\n this.#size++;\n this.#addItemSize(index, size, status);\n if (status)\n status.set = 'add';\n noUpdateTTL = false;\n }\n else {\n // update\n this.#moveToTail(index);\n const oldVal = this.#valList[index];\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'));\n const { __staleWhileFetching: s } = oldVal;\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set']);\n }\n }\n }\n else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set']);\n }\n }\n this.#removeItemSize(index);\n this.#addItemSize(index, size, status);\n this.#valList[index] = v;\n if (status) {\n status.set = 'replace';\n const oldValue = oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal;\n if (oldValue !== undefined)\n status.oldValue = oldValue;\n }\n }\n else if (status) {\n status.set = 'update';\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking();\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start);\n }\n if (status)\n this.#statusTTL(status, index);\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return this;\n }\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop() {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head];\n this.#evict(true);\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching;\n }\n }\n else if (val !== undefined) {\n return val;\n }\n }\n }\n finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n }\n #evict(free) {\n const head = this.#head;\n const k = this.#keyList[head];\n const v = this.#valList[head];\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict']);\n }\n }\n this.#removeItemSize(head);\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined;\n this.#valList[head] = undefined;\n this.#free.push(head);\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0;\n this.#free.length = 0;\n }\n else {\n this.#head = this.#next[head];\n }\n this.#keyMap.delete(k);\n this.#size--;\n return head;\n }\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k, hasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined) {\n return false;\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index);\n }\n if (status) {\n status.has = 'hit';\n this.#statusTTL(status, index);\n }\n return true;\n }\n else if (status) {\n status.has = 'stale';\n this.#statusTTL(status, index);\n }\n }\n else if (status) {\n status.has = 'miss';\n }\n return false;\n }\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k, peekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions;\n const index = this.#keyMap.get(k);\n if (index === undefined ||\n (!allowStale && this.#isStale(index))) {\n return;\n }\n const v = this.#valList[index];\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n }\n #backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n return v;\n }\n const ac = new AC();\n const { signal } = options;\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n });\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n };\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal;\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined;\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true;\n options.status.fetchError = ac.signal.reason;\n if (ignoreAbort)\n options.status.fetchAbortIgnored = true;\n }\n else {\n options.status.fetchResolved = true;\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason);\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p;\n if (this.#valList[index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index] = bf.__staleWhileFetching;\n }\n else {\n this.delete(k);\n }\n }\n else {\n if (options.status)\n options.status.fetchUpdated = true;\n this.set(k, v, fetchOpts.options);\n }\n }\n return v;\n };\n const eb = (er) => {\n if (options.status) {\n options.status.fetchRejected = true;\n options.status.fetchError = er;\n }\n return fetchFail(er);\n };\n const fetchFail = (er) => {\n const { aborted } = ac.signal;\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;\n const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;\n const noDelete = allowStale || options.noDeleteOnFetchRejection;\n const bf = p;\n if (this.#valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined;\n if (del) {\n this.delete(k);\n }\n else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index] = bf.__staleWhileFetching;\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true;\n }\n return bf.__staleWhileFetching;\n }\n else if (bf.__returned === bf) {\n throw er;\n }\n };\n const pcall = (res, rej) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts);\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej);\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort) {\n res(undefined);\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true);\n }\n }\n });\n };\n if (options.status)\n options.status.fetchDispatched = true;\n const p = new Promise(pcall).then(cb, eb);\n const bf = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n });\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined });\n index = this.#keyMap.get(k);\n }\n else {\n this.#valList[index] = bf;\n }\n return bf;\n }\n #isBackgroundFetch(p) {\n if (!this.#hasFetchMethod)\n return false;\n const b = p;\n return (!!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC);\n }\n async fetch(k, fetchOptions = {}) {\n const { \n // get options\n allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, \n // set options\n ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, \n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;\n if (!this.#hasFetchMethod) {\n if (status)\n status.fetch = 'get';\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n });\n }\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n };\n let index = this.#keyMap.get(k);\n if (index === undefined) {\n if (status)\n status.fetch = 'miss';\n const p = this.#backgroundFetch(k, index, options, context);\n return (p.__returned = p);\n }\n else {\n // in cache, maybe already fetching\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined;\n if (status) {\n status.fetch = 'inflight';\n if (stale)\n status.returnedStale = true;\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v);\n }\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index);\n if (!forceRefresh && !isStale) {\n if (status)\n status.fetch = 'hit';\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n if (status)\n this.#statusTTL(status, index);\n return v;\n }\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context);\n const hasStale = p.__staleWhileFetching !== undefined;\n const staleVal = hasStale && allowStale;\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh';\n if (staleVal && isStale)\n status.returnedStale = true;\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p);\n }\n }\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k, getOptions = {}) {\n const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const value = this.#valList[index];\n const fetching = this.#isBackgroundFetch(value);\n if (status)\n this.#statusTTL(status, index);\n if (this.#isStale(index)) {\n if (status)\n status.get = 'stale';\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.delete(k);\n }\n if (status && allowStale)\n status.returnedStale = true;\n return allowStale ? value : undefined;\n }\n else {\n if (status &&\n allowStale &&\n value.__staleWhileFetching !== undefined) {\n status.returnedStale = true;\n }\n return allowStale ? value.__staleWhileFetching : undefined;\n }\n }\n else {\n if (status)\n status.get = 'hit';\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching;\n }\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n return value;\n }\n }\n else if (status) {\n status.get = 'miss';\n }\n }\n #connect(p, n) {\n this.#prev[n] = p;\n this.#next[p] = n;\n }\n #moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n this.#connect(this.#prev[index], this.#next[index]);\n }\n this.#connect(this.#tail, index);\n this.#tail = index;\n }\n }\n /**\n * Deletes a key out of the cache.\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k) {\n let deleted = false;\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n deleted = true;\n if (this.#size === 1) {\n this.clear();\n }\n else {\n this.#removeItemSize(index);\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'delete');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'delete']);\n }\n }\n this.#keyMap.delete(k);\n this.#keyList[index] = undefined;\n this.#valList[index] = undefined;\n if (index === this.#tail) {\n this.#tail = this.#prev[index];\n }\n else if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n const pi = this.#prev[index];\n this.#next[pi] = this.#next[index];\n const ni = this.#next[index];\n this.#prev[ni] = this.#prev[index];\n }\n this.#size--;\n this.#free.push(index);\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return deleted;\n }\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else {\n const k = this.#keyList[index];\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'delete');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'delete']);\n }\n }\n }\n this.#keyMap.clear();\n this.#valList.fill(undefined);\n this.#keyList.fill(undefined);\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0);\n this.#starts.fill(0);\n }\n if (this.#sizes) {\n this.#sizes.fill(0);\n }\n this.#head = 0;\n this.#tail = 0;\n this.#free.length = 0;\n this.#calculatedSize = 0;\n this.#size = 0;\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n}\nexports.LRUCache = LRUCache;\n//# sourceMappingURL=index.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(128);\n"],"names":["DynamicNestedLoopJoin","HashJoin","NestedLoopJoin","SymmetricHashJoin","MergeStream","module","exports","AsyncIterator","MultiTransformIterator","SimpleTransformIterator","constructor","left","funRight","funJoin","options","super","this","_createTransformer","leftItem","transform","rightItem","done","push","result","right","funHash","addedDataListener","leftMap","Map","match","matches","matchIdx","on","error","destroy","readable","hasResults","_end","bind","eventName","_addDataListenerIfNeeded","ended","length","read","item","hash","get","_addDataListener","has","set","scheduleTask","close","clone","usedLeft","rightMap","_cleanup","i","map","streams","Array","isArray","prototype","slice","call","arguments","stream","emit","_removeStream","idx","indexOf","splice","attempts","variables","df_475_1","require","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus","urn_comunica_default_context_preprocess_actors_query_source_skolemize","urn_comunica_default_context_preprocess_mediators_main","urn_comunica_default_hash_bindings_mediators_main","urn_comunica_default_hash_quads_mediators_main","urn_comunica_default_optimize_query_operation_actors_group_sources","urn_comunica_default_optimize_query_operation_mediators_main","urn_comunica_default_query_parse_mediators_main","urn_comunica_default_rdf_join_entries_sort_mediators_main","urn_comunica_default_rdf_join_selectivity_mediators_main","urn_comunica_default_rdf_metadata_accumulate_mediators_main","urn_comunica_default_rdf_update_quads_mediators_main","urn_comunica_default_query_operation_mediators_main","urn_comunica_default_query_process_mediators_main","urn_comunica_default_query_source_identify_mediators_main","urn_comunica_default_rdf_join_mediators_main","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator","urn_comunica_default_http_invalidate_mediators_main","urn_comunica_default_query_result_serialize_mediators_serialize","urn_comunica_default_query_result_serialize_mediators_mediaType","urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat","urn_comunica_default_merge_bindings_context_mediators_main","urn_comunica_default_rdf_join_actors_inner_hash","urn_comunica_default_rdf_join_actors_inner_symmetric_hash","urn_comunica_default_rdf_join_actors_inner_nested_loop","urn_comunica_default_rdf_join_actors_inner_multi_smallest","urn_comunica_default_optimize_query_operation_actors_filter_pushdown","urn_comunica_default_init_actors_query","urn_comunica_default_rdf_join_actors_inner_multi_bind","urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations","urn_comunica_default_optimize_query_operation_actors_join_connected","urn_comunica_default_optimize_query_operation_actors_bgp_to_join","urn_comunica_default_optimize_query_operation_actors_join_bgp","urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive","actor_init_query_1","engineDefault","QueryEngine","QueryEngineBase","engine","__exportStar","bus_query_operation_1","context_entries_1","asynciterator_1","rdf_data_factory_1","rdf_string_1","sparqlalgebrajs_1","PathVariableObjectIterator_1","DF","DataFactory","ActorAbstractPath","ActorQueryOperationTypedMediated","args","predicateType","testOperation","operation","_context","predicate","type","Error","generateVariable","path","name","subject","value","object","variable","isPathArbitraryLengthDistinct","context","KeysQueryOperation","isPathArbitraryLengthDistinctKey","undefined","ActorQueryOperation","getSafeBindings","mediatorQueryOperation","mediate","FACTORY","createDistinct","predicateStarGraphVariable","graph","bindingsFactory","sources","getPathSources","predVar","createPath","findGraphs","createUnion","assignPatternSources","createPattern","results","passedGraphs","Set","bindingsStream","multiTransform","bindings","graphValue","EmptyIterator","add","TransformIterator","async","it","BufferedIterator","getObjectsPredicateStar","count","next","maxBufferSize","autoStart","metadata","getObjectsPredicateStarEval","emitFirstSubject","termType","PathVariableObjectIterator","Promise","resolve","getProperty","metadataInner","cardinality","termHashes","counter","termString","termToString","_push","thisVariable","getSubjectAndObjectBindingsPredicateStar","subjectVar","objectVar","subjectVal","objectVal","termHashesGlobal","termHashesCurrentSubject","objects","promise","reject","objectsArray","Algebra","types","ALT","SEQ","input","flatMap","subOp","INV","ONE_OR_MORE_PATH","ZERO_OR_MORE_PATH","ZERO_OR_ONE_PATH","LINK","NPS","source","getOperationSource","pattern","assignOperationSource","Factory","maxRunningOperations","runningOperations","pendingOperations","pushAsResult","_read","self","pendingOperation","pop","runningOperation","_fillBufferAsync","setProperty","lastCount","then","bus_context_preprocess_1","core_1","ActorContextPreprocessConvertShortcuts","ActorContextPreprocess","test","_action","run","action","expandShortcuts","contextKeyShortcuts","key","keys","ActionContextKey","delete","lru_cache_1","ActorContextPreprocessQuerySourceIdentify","cache","cacheSize","LRUCache","max","httpInvalidator","addInvalidateListener","url","clear","KeysInitQuery","querySourcesUnidentified","querySourcesUnidentifiedExpanded","all","querySource","expandSource","querySources","identifySource","querySourceUnidentified","statisticDereferenceLinks","KeysStatistics","dereferencedLinks","updateStatistic","referenceValue","seed","mediatorContextPreprocess","ActionContext","ensureActionContext","sourcePromise","mediatorQuerySourceIdentify","QuerySourceSkolemized_1","utils_1","ActorContextPreprocessQuerySourceSkolemize","KeysQuerySourceIdentify","sourceIds","getSafe","sourceWrapper","QuerySourceSkolemized","getSourceId","metadata_1","innerSource","sourceId","getSelectorShape","queryBindings","operationMapped","deskolemizeOperation","ArrayIterator","state","MetadataValidationState","canContainUndefs","skolemizeBindingsStream","queryBoolean","queryQuads","skolemizeQuadStream","queryVoid","toString","data_factory_1","rdf_terms_1","skolemizeTerm","term","BlankNodeScoped","namedNode","SKOLEM_PREFIX","skolemizeQuad","quad","mapTermsNested","skolemizeBindings","deskolemizeTerm","skolemized","startsWith","colonSeparator","termLabel","blankNode","deskolemizeTermNestedThrowing","subTerm","deskolemized","ret","size","iterator","inheritMetadata","Util","mapOperation","PATTERN","op","factory","Object","assign","recurse","PATH","ActorContextPreprocessSetDefaults","defaultFunctionArgumentsCache","initialize","setDefault","queryTimestamp","Date","KeysCore","log","logger","functionArgumentsCache","hypermediaSourcesAggregatedStores","queryFormat","language","version","graphqlSingularizeVariables","ActorContextPreprocessSourceToDestination","KeysRdfUpdateQuads","destination","bus_hash_bindings_1","hash_js_1","canonicalize","ActorHashBindingsSha1","ActorHashBindings","allowHashCollisions","hashFunction","sha1","update","fromEntries","digest","hashCollisions","bus_hash_quads_1","ActorHashQuadsSha1","ActorHashQuads","JSON","stringify","quadToStringQuad","ActorInitQueryBase_1","process","globalThis","ActorInitQuery","ActorInitQueryBase","bus_init_1","ActorInit","actorInitQuery","query","queryOfType","expectedType","resultType","execute","output","queryOrExplain","explain","explainMode","actionContext","noCache","invalidateHttpCache","mediatorQueryProcess","internalToFinalResult","getResultMediaTypes","mediatorQueryResultSerializeMediaTypeCombiner","mediaTypes","getResultMediaTypeFormats","mediatorQueryResultSerializeMediaTypeFormatCombiner","mediaTypeFormats","resultToString","queryResult","mediaType","handle","finalToInternalResult","mediatorQueryResultSerialize","handleMediaType","mediatorHttpInvalidate","internalResult","quadStream","finalResult","QueryEngineBase_1","enumerable","bus_optimize_query_operation_1","bus_rdf_update_quads_1","ActorOptimizeQueryOperationAssignSourcesExhaustive","ActorOptimizeQueryOperation","getDataDestinationValue","shape","doesShapeAcceptOperation","assignExhaustive","queryString","subOperation","createAlt","SERVICE","CONSTRUCT","createConstruct","template","DELETE_INSERT","createDeleteInsert","insert","where","ActorOptimizeQueryOperationBgpToJoin","bgp","createJoin","patterns","Keys_1","ActorOptimizeQueryOperationConstructDistinct","distinctConstruct","construct","AF","ActorOptimizeQueryOperationDescribeToConstructsSubject","DESCRIBE","operationOriginal","operations","terms","filter","forEach","templatePattern","BGP","variablePatterns","JOIN","ActorOptimizeQueryOperationFilterPushdown","splitConjunctive","expression","expressionType","expressionTypes","OPERATOR","operator","logDebug","reduce","createFilter","getSources","sourceShapes","repeat","iterations","maxIterations","shouldAttemptPushDown","getExpressionVariables","isModified","filterPushdown","mergeConjunctive","FILTER","nestedExpressions","getNestedFilterExpressions","previous","current","createOperatorExpression","aggressivePushdown","some","sourceAdder","src","recurseOperation","AGGREGATE","WILDCARD","EXISTENCE","inScopeVariables","NAMED","uniqTerms","arg","TERM","getOverlappingOperations","expressionVariables","fullyOverlapping","partiallyOverlapping","notOverlapping","inputVariables","variablesSubSetOf","variablesIntersect","isExpressionFalse","EXPRESSION","EXTEND","createExtend","joins","NOP","PROJECT","createProject","UNION","unions","VALUES","LEFT_JOIN","pushIntoLeftJoins","rightVariables","createLeftJoin","pushEqualityIntoPatterns","pushableResult","getEqualityExpressionPushableIntoPattern","originalMetadata","equals","createValues","MINUS","ASK","DISTINCT","FROM","GRAPH","GROUP","ORDER_BY","REDUCED","SLICE","COMPOSITE_UPDATE","LOAD","CLEAR","CREATE","DROP","ADD","MOVE","COPY","isLiteralWithCanonicalLexicalForm","datatype","varsA","varsB","varA","varB","varsNeedles","varsHaystack","every","childData","ActorOptimizeQueryOperationGroupSources","groupOperation","groupedInput","scopedSource","removeOperationSource","inputs","subInput","clusters","clusterOperationsWithEqualSources","newInputs","moveSourceAnnotationUpwardsIfPossible","multiFactoryMethod","createSeq","groupOperationMulti","factoryMethod","flatten","nestedMerges","cluster","merged","operationsIn","sourceOperations","sourcelessOperations","entries","ActorOptimizeQueryOperationJoinBgp","join","createBgp","ActorOptimizeQueryOperationJoinConnected","oldClusters","newClusters","clusterIteration","subJoins","oldCluster","entry","joined","newEntry","haveOverlappingVariables","variablesA","variablesB","variableA","ActorOptimizeQueryOperationPruneEmptySourceOperations","collectedOperations","collectMultiOperationInputs","emptyOperations","checkOperation","collectedOperation","iri","hasSourceResults","mapMultiOperation","children","hasEmptyOperation","emptyOperation","subSubOperation","inputType","multiOperationFactory","nonEmptyInputs","traverse","useAskIfSupported","askOperation","createAsk","ActorOptimizeQueryOperationRewriteAdd","defaultGraph","ActorOptimizeQueryOperationRewriteCopy","createCompositeUpdate","createDrop","createAdd","silent","ActorOptimizeQueryOperationRewriteMove","updates","ActorQueryOperationAsk","_operation","runOperation","take","toArray","ActorQueryOperationBgpJoin","BindingsToQuadsIterator_1","ActorQueryOperationConstruct","getVariables","concat","apply","getTermsNested","meta","order","availableOrders","BindingsToQuadsIterator","blankNodeCounter","bindTerm","bindQuad","boundTerm","localizeBlankNode","localizeQuad","bindTemplate","x","Boolean","ActorQueryOperationDistinctHash","mediatorHashQuads","outputQuads","getSafeQuads","newHashFilterQuads","outputBindings","newHashFilter","mediatorHashBindings","hashes","_quad","bindings_factory_1","expression_evaluator_1","ActorQueryOperationExtend","BindingsFactory","create","mediatorMergeBindingsContext","AsyncEvaluator","getAsyncExpressionContext","innerVariable","config","evaluator","evaluate","isExpressionError","logWarn","message","bindingsToString","outputMetadata","ActorQueryOperationFilter","outputRaw","validateQueryOutput","evaluateAsEBV","ActorQueryOperationFromQuad","copyOperation","recursiveCb","copiedOperation","ALGEBRA_TYPES","includes","applyOperationDefaultGraph","defaultGraphs","joinOperations","bgps","unionOperations","paths","applyOperationNamedGraph","namedGraphs","patternGraph","values","pat","namedGraph","createOperation","default","named","GroupsState_1","ActorQueryOperationGroup","aggregate","aggregates","agg","sparqleeConfig","groups","GroupsState","bindingsStreamInner","collectResults","consumeBindings","catch","groupsInitializer","groupVariables","waitCounter","resultHasBeenCalled","check","resultCheck","grouper","_","groupHash","hashBindings","res","groupInitializer","groupInitializerDefined","group","aggregators","put","subtractWaitCounterAndCollect","AsyncAggregateEvaluator","handleResultCollection","rows","groupBindings","returnBindings","single","emptyValue","waitResolver","ActorQueryOperationJoin","mediatorJoin","ActorQueryOperationLeftJoin","ActorQueryOperationMinus","ActorQueryOperationNop","SingletonIterator","SortIterator_1","ActorQueryOperationOrderBy","window","Number","POSITIVE_INFINITY","expr","expressions","extractSortExpression","isAscending","transformedStream","sortedStream","SortIterator","compare","orderTypes","sort","windowLength","isFinite","sorted","mid","Math","trunc","_flush","actor_abstract_path_1","actor_query_operation_union_1","ActorQueryOperationPathAlt","subOperations","subPredicate","UnionIterator","subMeta","ActorQueryOperationUnion","unionMetadata","mediatorRdfMetadataAccumulate","ActorQueryOperationPathInv","invPath","ActorQueryOperationPathLink","ActorQueryOperationPathNps","blank","iris","ActorQueryOperationPathOneOrMore","distinct","starEval","createOneOrMorePath","createInv","ActorQueryOperationPathSeq","joiner","generatedVariableNames","nextJoiner","generatedVariableName","joinMetadata","ActorQueryOperationPathZeroOrMore","sVar","oVar","entities","subjectGraphHash","objectGraphHash","pred","ActorQueryOperationPathZeroOrOne","extra","bindingsOne","varP","bindingsZero","createTermExpression","prepend","ActorQueryOperationProject","deleteVariables","subVariable","deleteVariable","scopedBlankNodesCache","BlankNodeBindingsScoped","scopedBlankNode","ActorQueryOperationReducedHash","ActorQueryOperationService","forceSparqlEndpoint","ActorQueryOperationSlice","limitIndicator","sliceStream","sliceMetadata","hasLength","start","end","offset","limit","subMetadata","min","ActorQueryOperationSource","httpRequests","physicalQueryPlanLogger","logOperation","physicalQueryPlanNode","mergedContext","merge","getMetadataQuads","getMetadataBindings","unionVariables","flat","metadatas","accumulatedMetadata","mode","appendingMetadata","invalidateListener","invalidate","outputsRaw","outputType","outputs","ActorQueryOperationClear","throwOnReadOnly","graphs","mediatorUpdateQuads","deleteGraphs","requireExistence","dropGraphs","ActorQueryOperationUpdateCompositeUpdate","subResult","getSafeVoid","ActorQueryOperationCreate","createGraphs","requireNonExistence","actor_query_operation_construct_1","ActorQueryOperationUpdateDeleteInsert","whereBindings","quadStreamInsert","quadStreamDelete","ActorQueryOperationDrop","ActorQueryOperationLoad","subContext","lenient","ActorQueryOperationValues","ActorQueryOperationTyped","bus_query_parse_1","sparqljs_1","ActorQueryParseSparql","ActorQueryParse","prefixes","freeze","parsedSyntax","Parser","baseIRI","sparqlStar","parse","base","translate","quads","blankToVariable","bus_query_process_1","ActorQueryProcessSequential","ActorQueryProcess","optimize","queryParseOutput","mediatorQueryParse","initialBindings","materializeOperation","mediatorOptimizeQueryOperation","bus_query_source_identify_1","QuerySourceRdfJs_1","ActorQuerySourceIdentifyRdfJs","ActorQuerySourceIdentify","QuerySourceRdfJs","nullifyVariables","quotedTripleFiltering","someTermsNested","hasDuplicateVariables","filterTermsNested","SELECTOR_SHAPE","features","rawStream","wrap","filterMatchingQuotedQuads","setMetadata","quadsToBindings","unionDefaultGraph","countQuads","wouldRequirePostFiltering","someTerms","operationType","variablesOptional","bus_rdf_join_entries_sort_1","ActorRdfJoinEntriesSortCardinality","ActorRdfJoinEntriesSort","entryLeft","entryRight","bus_rdf_join_1","asyncjoin_1","ActorRdfJoinHash","ActorRdfJoin","logicalType","physicalName","limitEntries","requiresVariableOverlap","getOutput","getMetadatas","overlappingVariables","joinBindings","constructResultMetadata","getJoinCoefficients","requestInitialTimes","getRequestInitialTimes","requestItemTimes","getRequestItemTimes","persistedItems","blockingItems","requestTime","ActorRdfJoinMultiBindSource","canHandleUndefs","entriesUnsorted","getEntriesWithMetadatas","sortJoinEntries","element","smallestStream","smallestMetadata","remainingEntries","createOperationFromEntries","chunkedStreams","ChunkedIterator","blockSize","chunk","physicalPlanMetadata","bindIndex","mediatorJoinEntriesSort","operationModified","remainingRequestInitialTimes","remainingRequestItemTimes","testingOperation","selectorShape","selectivities","mediatorJoinSelectivity","selectivity","selectivityModifier","cardinalityRemaining","sum","ActorRdfJoinMultiBind","minMaxCardinalityRatio","isLeaf","createBindStream","bindOrder","baseStream","operationBinder","optional","autoStartSubBindings","binder","bindFilter","bindingsMerger","subBindings","joinLeftMetadata","joinRightMetadatas","operationBindings","bindOperation","bindOperationCardinality","canBindWithOperation","valid","receiveInitialCostRemaining","receiveItemCostRemaining","ActorRdfJoinMultiEmpty","getCardinality","joinVariables","_metadatas","ActorRdfJoinMultiSmallestFilterBindings","limitEntriesMin","entriesSorted","first","second","secondIndex","secondSharedVariables","sharedVariables","variableFirst","variableSecond","remaining","secondIn","remainingIn","smallestStream1","commonVariables","smallestStream1Projected","binding","commonVariable","filterBindings","joinedEntry","KeysRdfJoin","lastPhysicalJoin","unshift","firstIndex","remain","mul","ActorRdfJoinMultiSmallest","smallestEntry1","smallestEntry2","firstEntry","entriesWithMetadata","acc","ActorRdfJoinNestedLoop","ActorRdfJoinNone","ActorRdfJoinSingle","includeInLogs","ActorRdfJoinSymmetricHash","BindingsIndex_1","ActorRdfJoinMinusHashUndef","buffer","index","BindingsIndex","ClosableTransformIterator","data","contains","onClose","bufferMetadata","hashTerm","isBindingsValid","dataIt","dataKey","subDataIt","containsRecursive","validKeys","dataIndexes","subDatas","subKey","ActorRdfJoinMinusHash","hashNonClashing","actor_rdf_join_inner_multi_bind_1","ActorRdfJoinOptionalBind","BindingsIndexDef_1","BindingsIndexUndef_1","ActorRdfJoinOptionalHash","blocking","constructIndex","undef","BindingsIndexUndef","BindingsIndexDef","getFirst","indexBindings","b","indexActive","iterators","hashFn","v","getRecursive","matchingRecursive","getRecursiveFirst","ActorRdfJoinOptionalNestedLoop","bus_rdf_join_selectivity_1","ActorRdfJoinSelectivityVariableCounting","ActorRdfJoinSelectivity","accuracy","getPatternCost","cost","getJoinTypes","operation1","operation2","joinTypes","JoinTypes","unboundSS","unboundSP","unboundSO","unboundSG","boundSS","boundSP","boundSO","boundSG","unboundPS","unboundPP","unboundPO","unboundPG","boundPS","boundPP","boundPO","boundPG","unboundOS","unboundOP","unboundOO","unboundOG","boundOS","boundOP","boundOO","boundOG","unboundGS","unboundGP","unboundGO","unboundGG","boundGS","boundGP","boundGO","boundGG","getOperationsPairwiseJoinCost","MAX_PAIRWISE_COST","joinType","getOperationsJoinCost","totalCost","costEntries","pattern1","pattern2","factor","bus_rdf_metadata_accumulate_1","ActorRdfMetadataAccumulateCanContainUndefs","ActorRdfMetadataAccumulate","ActorRdfMetadataAccumulateCardinality","dataset","subsetOf","ActorRdfMetadataAccumulatePageSize","pageSize","ActorRdfMetadataAccumulateRequestTime","RdfJsQuadDestination_1","ActorRdfUpdateQuadsRdfJsStore","ActorRdfUpdateQuadsDestination","getContextDestination","remove","getDestination","RdfJsQuadDestination","event_emitter_promisify_1","store","promisifyEventEmitter","import","_requireExistence","_dropGraphs","deleteGraph","allQuads","stringToTerm","eventEmitter","once","immutable_1","bindingsToString_1","Bindings","dataFactory","contextHolder","mapIterable","iteratorToIterable","fn","Symbol","other","createBindingsWithContexts","mergeWith","merger","mergeContext","contextMergeHandlers","otherContext","allKeys","newContextData","handledKeys","keysSetOtherContext","keysBothContext","occursInBoth","setContextEntry","setContextEntryRaw","deleteContextEntry","deleteContextEntryRaw","getContext","getContextEntry","iterable","callback","Bindings_1","mergeHandlers","fromBindings","fromRecord","record","raw","Actor","ActorHttpInvalidate","ActorHttpInvalidate_1","ActorHttpInvalidateListenable","invalidateListeners","listener","bnodeCounter","getSafeBoolean","getBaseExpressionContext","now","extensionFunctionCreator","extensionFunctions","functionNamedNode","getExpressionContext","_mediatorQueryOperation","bnode","exists","createExistenceResolver","not","readOnly","child","ActorQueryOperation_1","operationName","cachifyMetadata","ActorQueryOperationTyped_1","TRUE","literal","materializeTerm","createValuesFromBindings","newBinding","strictTargetVariables","originalBindings","extend","createGroup","project","bindingKey","curVariable","recursionResult","recursionResultExpression","recursionResultInput","valueBindings","keyString","aggregator","BusQueryOperation","BusIndexed","actorIdentifierFields","actionIdentifierFields","ClosableIterator","_source","DESTINATION","destinationClose","destinationEmitError","destinationSetReadable","removeListener","QuadTermUtil_1","isTermVariable","getDuplicateElementLinks","variableElements","duplicateVariables","forEachTermsNested","val","duplicateElementLinks","elements","remainingElements","elementVariables","forceEstimateCardinality","getMetadataCb","metadataRaw","quadsMetadataToBindingsMetadata","validateMetadataQuads","metadataQuads","quadsOrderToBindingsOrder","orderDef","quadsOrder","mappedVariables","variableName","direction","filterNonDefaultQuads","reduceTermsNested","filteredOutput","keyLeft","keysLeft","split","valueLeft","getValueNestedPath","keysRight","matchPatternMappings","instrumentIterator_1","baseArray","array","el","constructState","partialMetadata","cardinalityJoined","cardinalityThis","variableOccurrences","multiOccurrenceVariables","entriesWithoutCommonVariables","hasCommon","leftWithoutCommonVariables","parentPhysicalQueryPlanNode","planMetadata","stashChildren","node","logicalOperator","instrumentIterator","counters","appendMetadata","cardinalityReal","timeSelf","timeLife","cardinalities","joinCoefficients","unstashChild","consumeChunkAsIterator","_transform","instrumentIteratorInner","top","_profileInstrumented","readOld","startTime","performance","ActorRdfUpdateQuads","actor_context_preprocess_query_source_skolemize_1","ActorRdfUpdateQuads_1","deskolemizeStream","id","deskolemizeQuad","deskolemize","isDataDestinationRawType","dataDestination","fileUrl","hashPosition","CONTEXT_KEY_LOGGER","includeCredentials","auth","fetch","httpTimeout","httpBodyTimeout","httpRetryCount","httpRetryDelay","httpRetryOnServerError","recoverBrokenLinks","datetime","httpProxyHandler","cliArgsHandlers","jsonLdContext","documentLoader","strictValues","parserOptions","processingHtmlScript","extractAllScripts","sourcesBinding","discoveredLinks","setRaw","getRaw","hasRaw","contexts","keyName","toJS","for","maybeActionContext","ContextEntries_1","beforeActors","bus","subscribe","addDependencies","getContextLogger","runObservable","onRun","deinitialize","getDefaultLogData","dataActual","actor","logTrace","trace","debug","logInfo","info","warn","logError","logFatal","fatal","actors","observers","dependencyLinks","reorderForDependencies","subscribeObserver","observer","unsubscribe","unsubscribeObserver","publish","reply","dependent","dependencies","dependency","existingDependencies","actorsAfter","actorAfter","dependentPos","activeActorAfterId","validLink","activeActorAfter","Bus_1","Bus","actorsIndex","actorId","getActorIdentifier","actionId","getActionIdentifier","_undefined_","field","ActionContext_1","mediateActor","mediateWith","singleBindingsScope","RdfString","TermTransformer_1","Consts_1","TypeHandling_1","sharedContext","separator","termTransformer","TermTransformer","superTypeProvider","termToNumericOrError","isSubTypeOf","TypeAlias","SPARQL_NUMERIC","transformLiteral","aggregatorComponent","variableValues","component","canSkip","addSeen","E","functions_1","Helpers_1","C","Aggregator_1","Average","AggregatorComponent","summer","regularFunctions","RegularOperator","ADDITION","divider","DIVISION","integer","toRDF","internalTerm","IntegerLiteral","Count","GroupConcat","lastLanguageValid","lastLanguage","string","langString","Ordering_1","Max","Min","Sample","Sum","bindingValues","putBindings","handleDistinct","bindingList","snd","localeCompare","Average_1","Count_1","GroupConcat_1","Max_1","Min_1","Sample_1","Sum_1","avg","group_concat","sample","BaseAggregateEvaluator_1","SyncEvaluator_1","AggregateEvaluator","BaseAggregateEvaluator","throwError","SyncEvaluator","completeContext","errorOccurred","isWildcard","wildcardAggregator","startTerm","safeThrow","err","AsyncEvaluator_1","AlgebraTransformer_1","DateTimeHelpers_1","AsyncRecursiveEvaluator_1","typeCache","discoverer","getSuperType","defaultTimeZone","extractTimeZone","algExpr","creator","baseContext","transformer","AlgebraTransformer","transformAlgebra","AsyncRecursiveEvaluator","mapping","coerceEBV","evaluateAsInternal","SyncRecursiveEvaluator_1","SyncRecursiveEvaluator","Err","BaseExpressionEvaluator_1","BaseExpressionEvaluator","subEvaluators","ExpressionType","Term","_mapping","Variable","Operator","evalOperator","SpecialOperator","evalSpecialOperator","Named","evalNamed","Existence","evalExistence","Aggregate","evalAggregate","AsyncExtension","evalAsyncExtension","InvalidExpressionType","argPromises","argResults","applyAsync","_evalAsyncArgs","NoExistenceHook","BooleanLiteral","NoAggregator","transformRDFTermUnsafe","aggregators_1","WildcardCountAggregator_1","Aggregator","WildcardCountAggregator","EmptyAggregateError","expressionToVar","UnboundVariableError","SyncExtension","evalSyncExtension","applySynchronously","Expressions_1","Serialization_1","str","InvalidArgumentTypes","STR","EBVCoercionError","valueTerm","RDFsubject","RDFpredicate","RDFobject","Literal","typedValue","dataType","strValue","NumericLiteral","replace","specificFormatter","TypeURL","XSD_INTEGER","toFixed","XSD_DECIMAL","XSD_FLOAT","XSD_DOUBLE","jsExponential","toExponential","jsMantisse","jsExponent","exponent","XSD_BOOLEAN","RDF_LANG_STRING","XSD_STRING","XSD_DATE_TIME","serializeDateTime","XSD_TIME","serializeTime","XSD_DATE","serializeDate","DurationLiteral","XSD_DURATION","serializeDuration","XSD_DAY_TIME_DURATION","XSD_YEAR_MONTH_DURATION","NonLexicalLiteral","openWorldType","lit","BaseFunction","definition","monomorph","handleInvalidTypes","concreteFunction","arity","overloads","search","functionClass","checkArity","expressions_1","OverloadTree_1","identifier","Builder","overloadTree","OverloadTree","collected","collect","wrapInvalidLexicalProtected","func","InvalidLexicalForm","argTypes","addInvalidHandling","addOverload","copy","from","to","impl","getImplementationExact","UnexpectedError","onUnary","onUnaryTyped","onBinary","onBinaryTyped","onTernaryTyped","a1","a2","a3","onTernary","onQuaternaryTyped","a4","onTerm1","onTerm3","t1","t2","t3","onQuad1","onLiteral1","onBoolean1","onBoolean1Typed","onString1","onString1Typed","onLangString1","onStringly1","SPARQL_STRINGLY","onStringly1Typed","onNumeric1","onDateTime1","numericConverter","evalHelper","decimal","float","double","arithmetic","numberTest","numeric","bool","stringTest","booleanTest","dateTimeTest","num","DecimalLiteral","FloatLiteral","DoubleLiteral","StringLiteral","lang","LangStringLiteral","date","DateTimeLiteral","variableExpression","Parsing_1","xsdToString","declare","xsdToFloat","parseXSDFloat","CastError","xsdToDouble","xsdToDecimal","parseXSDDecimal","xsdToInteger","parseXSDInteger","xsdToDatetime","dateTime","parseDateTime","hours","minutes","seconds","xsdToBoolean","xsdToTime","TimeLiteral","parseTime","xsdToDate","DateLiteral","parseDate","xsdToDuration","parseDuration","xsdToDayTimeDuration","DayTimeDurationLiteral","trimToDayTimeDuration","parseDayTimeDuration","xsdToYearMonthDuration","YearMonthDurationLiteral","trimToYearMonthDuration","parseYearMonthDuration","depth","implementation","generalOverloads","literalOverLoads","promotionCount","getSubtree","overrideType","generalType","asGeneralType","cacheIter","searchIndex","literalExpression","isLiteralTermExpression","searchStack","getSubTreeWithArg","startIndex","addToCache","getDefault","lruCache","argumentTypes","_addOverload","argumentType","_argumentTypes","nextTree","newNode","asOverrideType","typePromotion","addPromotedOverload","typeToPromote","conversionFunction","funcConf","concreteType","asKnownLiteralType","subExtensionTable","superTypeDictTable","getSuperTypes","matchType","tree","prioA","matchTypeA","prioB","matchTypeB","sortedType","bignumber_js_1","relative_to_absolute_iri_1","spark_md5_1","uuid","SpecAlgos_1","Core_1","X","_1","NOT","unaryPlus","UPLUS","unaryMinus","UMINUS","multiplication","MULTIPLICATION","BigNumber","times","toNumber","division","div","ExpressionError","addition","plus","dur","addDurationToDateTime","defaultedDurationRepresentation","defaultedDateTimeRepresentation","time","subtraction","SUBTRACTION","minus","date1","date2","elapsedDuration","negateDuration","equality","EQUAL","toUTCDate","getTime","RegularFunction","_left","_right","RDFEqualTypeError","RDFTermEqual","dur1","dur2","yearMonthDurationsToMonths","defaultedYearMonthDurationRepresentation","dayTimeDurationsToSeconds","defaultedDayTimeDurationRepresentation","time1","time2","inequality","NOT_EQUAL","lesserThan","LT","dur1L","dur2L","greaterThan","GT","lesserThanEqual","LTE","greaterThanEqual","GTE","isIRI","IS_IRI","isBlank","IS_BLANK","isLiteral","IS_LITERAL","isNumeric","IS_NUMERIC","LANG","DATATYPE","NamedNode","IRI","STRDT","STRLANG","toLowerCase","UUID","v4","STRUUID","STRLEN","SUBSTR","startingLoc","sub","UCASE","toUpperCase","LCASE","STRSTARTS","arg1","arg2","IncompatibleLanguageOperation","STRENDS","endsWith","CONTAINS","STRBEFORE","STRAFTER","ENCODE_FOR_URI","encodeURI","langmatches","LANG_MATCHES","tag","range","langMatches","REGEX","text","flags","REPLACE","replacement","abs","ABS","round","ROUND","ceil","CEIL","floor","FLOOR","rand","RAND","random","NOW","toDateTimeRepresentation","timeZone","year","YEAR","month","MONTH","day","DAY","HOURS","MINUTES","SECONDS","timezone","TIMEZONE","duration","zoneHours","zoneMinutes","InvalidTimezoneCall","tz","TZ","extractRawTimeZone","MD5","SHA1","SHA256","sha256","SHA384","sha384","SHA512","sha512","triple","TRIPLE","Quad","SUBJECT","PREDICATE","OBJECT","istriple","IS_TRIPLE","uplus","uminus","isiri","isuri","isblank","isliteral","isnumeric","uri","strdt","strlang","struuid","strlen","substr","ucase","lcase","strstarts","strends","strbefore","strafter","encode_for_uri","regex","md5","bound","bound_","BOUND","ifSPARQL","valFirst","coalesce","errors","CoalesceError","logicalOr","leftExpr","rightExpr","logicalAnd","sameTerm","inSPARQL","inRecursiveAsync","inRecursiveSync","needle","InError","nextExpression","shift","notInSPARQL","_in","specialFunctions","IN","isIn","concatTree","CONCAT","pLits","pTerm","lits","langAllEqual","bnodeTree","BNODE","strInput","BlankNode","BNODE_","if","sameterm","in","notin","_isWildCard","_matchLangTag","RegExp","reg","global","langTags","rangeTags","lI","rI","NamedFunctions_1","RegularFunctions_1","SpecialFunctions_1","definitions","specialDefinitions","SpecialFunction","namedDefinitions","NamedFunction","AggregateEvaluator_1","Errors_1","AsyncAggregateEvaluator_1","algebraConfig","creatorConfig","transformTerm","transformOperator","transformNamed","transformExistence","transformAggregate","transformWildcard","wildcard","SpecialOperators","specialOp","specialArgs","specialFunc","InvalidArity","Operators","UnknownOperator","regularOp","regularArgs","regularFunc","hasCorrectArity","wrapSyncFunction","ExtensionFunctionError","wrapAsyncFunction","funcName","namedArgs","NamedOperators","namedFunc","namedFunctions","syncExtensionFunc","simpleAppl","asyncExtensionFunc","asyncAppl","UnknownNamedOperator","RDFString","P","InvalidExpression","InvalidTermType","superTypeDict","getSuperTypeDict","dateVal","isNaN","intVal","isFloat","isDouble","doubleVal","SetFunction","RegularOperators","rep","toJSDate","jumpDeltaOfDate","setFullYear","getFullYear","temp","years","days","getMonth","getDate","getHours","getMinutes","getSeconds","defaultTimezone","localTime","minutesCorrectionLocal","getTimezoneOffset","hourCorrectionUTC","minutesCorrectionUTC","zoneContained","exec","pp","arg0","cast","dateString","payload","functionError","stack","comparePrimitives","valueA","valueB","termA","termB","strict","typeDiscoveryCallback","_TERM_ORDERING_PRIORITY","orderSubject","orderPredicate","orderObject","litA","litB","isGreater","isEqual","myLitA","myLitB","compareType","orderLiteralTypes","InvalidCompareArgumentTypes","DefaultGraph","parseTimeZone","timeZoneStr","replaceAll","dateStr","formatted","ParseError","dateStrings","maximumDayInMonthFor","__parseTime","timeStr","timeStrings","durationStr","dayNotation","timeNotation","formattedDayDur","durationStrings","formattedTimeDur","sign","simplifyDurationRepresentation","numb","NaN","NEGATIVE_INFINITY","parseInt","dateTimeStr","numSerializer","toLocaleString","minimumIntegerDigits","useGrouping","serializeTimeZone","zeroString","fDiv","high","low","intDiv","remainder","yearValue","monthValue","additionalYears","newDate","tempDiv","carry","d1","d2","diff","cached","__depth","subExtension","knownValue","extensionTableInit","_key","extensionTableInput","extensionTableBuilderInitKey","baseRes","baseType","XSD_DATE_TIME_STAMP","XSD_NORMALIZED_STRING","XSD_TOKEN","XSD_LANGUAGE","XSD_NM_TOKEN","XSD_NAME","XSD_NC_NAME","XSD_ENTITY","XSD_ID","XSD_ID_REF","XSD_NON_POSITIVE_INTEGER","XSD_NEGATIVE_INTEGER","XSD_LONG","XSD_INT","XSD_SHORT","XSD_BYTE","XSD_NON_NEGATIVE_INTEGER","XSD_POSITIVE_INTEGER","XSD_UNSIGNED_LONG","XSD_UNSIGNED_INT","XSD_UNSIGNED_SHORT","XSD_UNSIGNED_BYTE","XSD_G_MONTH","XSD_G_MONTHDAY","XSD_G_YEAR","XSD_G_YEAR_MONTH","XSD_G_DAY","XSD_ANY_URI","typeAliasCheck","initTypeAliasCheck","asTermType","types_1","LoggerVoid","Logger","MediatorAll","Mediator","validActors","testResults","testResult","MediatorCombinePipeline","filterErrors","_testResults","getOrder","elem","TypeError","actor1","actor2","MediatorCombineUnion","combiner","createCombiner","MediatorJoinCoefficientsFixed","promises","coefficients","costs","coeff","cpuWeight","memoryWeight","timeWeight","ioWeight","maxCost","minIndex","minValue","bestActor","MediatorNumber","indexPicker","createIndexPicker","tests","prev","curr","getOrDefault","defaultValue","ignoreErrors","dummy","MediatorRace","subError","validateMetadataBindings","lastReturn","lastReturnValue","getLevelOrdinal","level","LEVELS","globalObject","mathceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","n","coeffToString","a","s","z","j","r","charCodeAt","y","xc","c","yc","k","e","l","intCheck","String","isOdd","charAt","toFixedPoint","len","zs","configObject","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","valueOf","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","prefix","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","alphabetHasNormalDecimalDigits","alphabet","caseChanged","isNum","_isBigNumber","substring","DEBUG","format","rm","c0","ne","maxOrMin","normalise","sd","d","ni","rd","pows10","out","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","obj","p","hasOwnProperty","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","minimum","dp","Uint32Array","toBaseOut","baseIn","baseOut","arrL","arr","reverse","callerIsToString","pow","multiply","m","xlo","xhi","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","q","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","p1","p2","absoluteValue","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","mod","integerValue","isEqualTo","eq","isGreaterThan","gt","isGreaterThanOrEqualTo","gte","isLessThan","lt","isLessThanOrEqualTo","lte","isNegative","isPositive","isZero","t","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","toFormat","g1","g2","intPart","fractionPart","isNeg","intDigits","toFraction","md","d0","exp","n0","n1","toPrecision","toJSON","serialize","Function","cv","ci","defineProperty","event","ReflectOwnKeys","R","Reflect","ReflectApply","target","receiver","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","init","emitter","errorListener","resolver","eventTargetAgnosticAddListener","handler","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","events","existing","warning","newListener","warned","w","console","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","addEventListener","wrapListener","removeEventListener","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","spliceOne","off","removeAllListeners","rawListeners","eventNames","equal","ArrayBuffer","isView","utils","common","sha","ripemd","hmac","sha224","ripemd160","assert","BlockHash","pending","pendingTotal","outSize","hmacStrength","padLength","endian","_delta8","_delta32","msg","enc","join32","_update","_pad","_digest","bytes","Hmac","Hash","inner","outer","_init","rotl32","sum32","sum32_3","sum32_4","RIPEMD160","h","f","K","Kh","inherits","A","B","D","Ah","Bh","Ch","Dh","Eh","T","rh","sh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","W","SHA224","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","g","T1","T2","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero2","word","zero8","toHex","buf","pos","lo","hi","DELETE","SHIFT","SIZE","MASK","NOT_SET","SetRef","ref","OwnerID","ensureSize","iter","__iterate","returnTrue","wrapIndex","uint32Index","wholeSlice","begin","resolveBegin","resolveIndex","resolveEnd","defaultIndex","Infinity","IS_COLLECTION_SYMBOL","isCollection","maybeCollection","IS_KEYED_SYMBOL","isKeyed","maybeKeyed","IS_INDEXED_SYMBOL","isIndexed","maybeIndexed","isAssociative","maybeAssociative","Collection","Seq","KeyedCollection","KeyedSeq","__proto__","IndexedCollection","IndexedSeq","SetCollection","SetSeq","Keyed","Indexed","IS_SEQ_SYMBOL","isSeq","maybeSeq","IS_RECORD_SYMBOL","isRecord","maybeRecord","isImmutable","maybeImmutable","IS_ORDERED_SYMBOL","isOrdered","maybeOrdered","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorResult","iteratorDone","hasIterator","maybeIterable","getIteratorFn","isIterator","maybeIterator","getIterator","iteratorFn","KEYS","ENTRIES","inspect","toSource","isArrayLike","emptySequence","toSeq","seq","maybeIndexedSeqFromValue","fromEntrySeq","isKeysIterable","toSetSeq","ObjectSeq","seqFromValue","__toString","cacheResult","_cache","__iterateUncached","entrySeq","__iterator","__iteratorUncached","toKeyedSeq","keyedSeqFromValue","toIndexedSeq","indexedSeqFromValue","of","ArraySeq","_array","notSetValue","ii","_object","_keys","EMPTY_SEQ","CollectionSeq","collection","_collection","step","IS_MAP_SYMBOL","isMap","maybeMap","isOrderedMap","maybeOrderedMap","isValueObject","maybeValue","hashCode","is","imul","smi","i32","defaultValueOf","o","hashNullish","hashed","hashNumber","STRING_HASH_CACHE_MIN_STRLEN","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","nodeType","uniqueID","documentElement","getIENodeHash","nextHash","isExtensible","configurable","writable","hashJSObj","sym","symbolMap","hashSymbol","nullish","_objHashUID","WeakMap","ToKeyedSequence","indexed","useKeys","_iter","_useKeys","valueSeq","this$1$1","reversedSequence","reverseFactory","mapper","mappedSequence","mapFactory","ToIndexedSequence","ToSetSequence","FromEntriesSequence","validateEntry","indexedCollection","flipFactory","flipSequence","makeSequence","flip","cacheResultThrough","filterFactory","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","skipping","flattenFactory","flatSequence","stopped","flatDeep","currentDepth","sortFactory","comparator","defaultComparator","isKeyedCollection","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","iters","zipAll","zipSequence","sizes","isDone","steps","reify","collectionClass","arrCopy","newArr","invariant","condition","assertNotInfinite","coerceKeyPath","keyPath","isPlainObject","proto","parentProto","nextProto","isDataStructure","quoteString","_ignoreError","shallowCopy","collectionCopy","updateIn$1","updater","updatedValue","updateInDeeply","inImmutable","wasNotSet","existingValue","newValue","nextExisting","nextUpdated","emptyMap","setIn$1","setIn","removeIn","deleteIn","update$1","updateIn","merge$1","mergeIntoKeyedWith","mergeWith$1","collections","collection$1","__ownerID","withMutations","mergeIntoCollection","oldVal","mergeWithSources","mergeDeep$1","mergeDeepWithSources","mergeDeepWith$1","deepMerger","oldValue","newDataStructure","oldSeq","newSeq","deepMergerWith","mergeItem","hasVal","nextVal","mergeDeep","mergeDeepWith","mergeIn","mergeDeepIn","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","__altered","keyValues","_root","updateMap","deleteAll","__hash","OrderedMap","sortBy","MapIterator","iterate","ownerID","makeMap","MapPrototype","removeAll","ArrayMapNode","keyHash","didChangeSize","didAlter","removed","MAX_ARRAY_MAP_SIZE","ValueNode","createNodes","isEditable","newEntries","BitmapIndexedNode","bitmap","nodes","bit","popCount","keyHashFrag","updateNode","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","HashArrayMapNode","expandNodes","isLeafNode","newBitmap","newNodes","setAt","canEdit","newLen","newArray","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","HashCollisionNode","mergeIntoNode","keyMatch","maxIndex","EMPTY_MAP","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","subNode","__prev","root","newRoot","newSize","idx1","idx2","IS_LIST_SYMBOL","isList","maybeList","List","empty","emptyList","makeList","VNode","setSize","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","oldSize","arguments$1","seqs","argument","iterateList","DONE","ListPrototype","removeBefore","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","tailPos","tail","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","EMPTY_ORDERED_MAP","emptyOrderedMap","_map","_list","updateOrderedMap","newMap","newList","makeOrderedMap","omap","toMap","IS_STACK_SYMBOL","isStack","maybeStack","Stack","emptyStack","pushAll","head","_head","peek","makeStack","EMPTY_STACK","StackPrototype","unshiftAll","IS_SET_SYMBOL","isSet","maybeSet","isOrderedSet","maybeOrderedSet","deepEqual","notAssociative","flipped","allEqual","bSize","mixin","ctor","methods","keyCopier","result$1","emptySet","fromKeys","keySeq","intersect","sets","SetPrototype","union","updateSet","didChanges","mapEntries","mapped","toRemove","OrderedSet","__make","__empty","EMPTY_SET","makeSet","EMPTY_RANGE","Range","_start","_step","searchValue","possibleIndex","offsetValue","lastIndexOf","getIn$1","searchKeyPath","getIn","hasIn$1","toObject","isIterable","useTuples","toOrderedMap","toOrderedSet","toSet","toStack","toList","__toStringMapper","singleton","concatSeq","concatFactory","returnValue","partition","isKeyedIter","coerce","partitionFactory","find","findEntry","sideEffect","isFirst","reducer","initialReduction","reduceRight","butLast","isEmpty","countBy","countByFactory","entriesSequence","entryMapper","filterNot","found","findKey","findLast","findLastEntry","findLastKey","flatMapFactory","searchKey","groupBy","groupByFactory","hasIn","isSubset","isSuperset","keyOf","keyMapper","last","lastKeyOf","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashCollection","CollectionPrototype","chain","mapKeys","KeyedCollectionPrototype","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","defaultZipper","zipWith","IndexedCollectionPrototype","SetCollectionPrototype","reduction","useFirst","emptyOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","PairSorting","LeftThenRight","RightThenLeft","Record","defaultValues","hasInitialized","throwOnInvalidDefaultValues","RecordType","indices","RecordTypePrototype","_indices","_name","_defaultValues","propName","recordName","setProp","_values","RecordPrototype","displayName","recordSeq","newValues","makeRecord","getDescriptiveName","likeRecord","EMPTY_REPEAT","Repeat","_value","fromJS","converter","fromJSWith","defaultConverter","parentValue","converted","Iterable","superCtor","super_","TempCtor","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","versions","cwd","chdir","dir","umask","__createBinding","k2","BlankNode_1","DefaultGraph_1","Literal_1","NamedNode_1","Quad_1","Variable_1","dataFactoryCounter","blankNodePrefix","languageOrDatatype","INSTANCE","fromTerm","original","fromQuad","resetBlankNodeCounter","RDF_LANGUAGE_STRING","isTermGrounded","termToSignature","quadToSignature","sha1hex","hashTerms","getGraphBlankNodes","uniqGraph","deindexGraph","indexGraph","getQuadsWithoutBlankNodes","getQuadsWithBlankNodes","hasValue","hashValues","getBijectionInner","getBijection","isomorphic","graphA","graphB","nonBlankIndexA","nonBlankIndexB","blankQuadsA","blankQuadsB","blankNodesA","blankNodesB","groundedHashesA","groundedHashesB","hashesA","ungroundedHashesA","hashesB","ungroundedHashesB","hashKeyA","bijection","blankNodeA","blankNodeAString","blankNodeAHash","blankNodeBString","arraysEqual","blankNodeB","array1","array2","hashValue","everyTerms","indexedGraph","stringQuadToQuad","getBlankNodes","groundedHashes","ungroundedHashes","hashNeeded","initialGroundedNodesCount","grounded","uniques","termKey","quadSignatures","quadTerm","getTerms","getLiteralValue","getLiteralType","getLiteralLanguage","TermUtil_1","literalValue","trim","stringTerms","ignoreTags","lastIndex","inQuote","char","escaped","stringQuad","desc","getOwnPropertyDescriptor","__esModule","matchPatternComplete","matchPattern","matchTerm","everyTermsNested","reduceTerms","mapTerms","filterQuadTermNamesNested","filterQuadTermNames","filterTerms","forEachTerms","collectNamedTerms","getNamedTerms","TRIPLE_TERM_NAMES","QUAD_TERM_NAMES","ignoreDefaultGraph","checker","namedTerms","defaultCb","namedTerm","cb","names","keysS","keysP","keysO","keysG","initialValue","opt","_pattern","_a","_b","skipVarMapping","returnMappings","getQuads","getDefaultGraphs","getLiterals","getNamedNodes","getTermsOfType","TERM_TYPES","removeDotSegments","segmentBuffers","isCharacterAllowedAfterRelativePathSegment","removeDotSegmentsOfPath","colonPosition","searchOffset","pathSeparator","character","relativeIRI","baseFragmentPos","baseQueryPos","relativeColonPos","valueColonPos","baseColonPos","baseIRIScheme","baseSlashAfterColonPos","baseIRIPath","baseIRILastSlashPos","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","tmp","rhex","hex","toUtf8","unescape","encodeURIComponent","hexToBinaryString","fromCharCode","SparkMD5","reset","clamp","targetArray","sourceArray","byteLength","Uint8Array","append","appendBinary","contents","_buff","_length","_hash","buff","_finish","getState","setState","hashBinary","content","returnUInt8Array","subarray","utf8Str2ArrayBuffer","md51_array","__setModuleDefault","__importStar","__importDefault","toSparqlJs","toSparql","sparqlAlgebra_1","factory_1","sparql_1","util_1","stringType","createTerm","flattenMulti","createBoundAggregate","createAggregateExpression","createDescribe","createFrom","def","createGraph","createLink","createMinus","createNop","createNps","createOrderBy","createReduced","createService","createSlice","createZeroOrMorePath","createZeroOrOnePath","createExistenceExpression","createNamedExpression","createWildcardExpression","Wildcard","deleteQuads","insertQuads","createLoad","addSilent","createClear","createCreate","createMove","createCopy","newChildren","rdf_isomorphic_1","eTypes","resetContext","translateOperation","removeQuadsRecursive","removeQuads","translateExpression","translateProject","translatePattern","triples","translateBgp","queryType","translateConstruct","translateDistinct","translateExtend","translateFrom","translateFilter","translateGraph","aggs","translateBoundAggregate","translateGroup","translateJoin","leftjoin","translateLeftJoin","translateMinus","translateOrderBy","translatePathComponent","translatePath","reduced","translateReduced","translateService","translateSlice","arrayToPattern","translateUnion","translateValues","translateCompositeUpdate","use","updateType","convertUpdatePatterns","using","translateDeleteInsert","translateLoad","translateClearCreateDrop","translateClear","translateCreate","translateDrop","translateUpdateGraphShortcut","translateAdd","translateMove","translateCopy","aggregation","translateAggregateExpression","translateExistenceExpression","function","translateNamedExpression","translateOperatorExpression","translateTermExpression","translateWildcardExpression","pathType","items","translateAlt","inv","translateInv","translateLink","translateNps","translateOneOrMorePath","translateSeq","translateZeroOrMorePath","translateZeroOrOnePath","translateTerm","replaceAggregatorVariables","st","isSimpleTerm","select","extensions","descending","objectContainsValues","having","vals","keyGraphs","globalNames","newGraphs","graphNameSet","graphPatterns","graphName","splitBgpToGraphs","Generator","varCount","useQuads","translateQuery","sparql","thingy","findAllVariables","translateGraphPattern","mapAggregate","vars","generateFreshVar","translateInlineData","PV","isVariable","translateQuad","translateAggregates","translateSingleUpdate","translateBlankNodesToVariables","isTerm","inScope","simplifyPath","translatePathPredicate","recurseGraph","filters","nonfilters","accumulateGroupGraphPattern","isQuad","hasQuadVariables","normals","inverted","normalElement","invertedElement","simplifiedPath","parser","_resetBlanks","typeVals","G","simplifiedJoin","subthingy","translateUpdateGraphLoad","translateUpdateGraph","deleteTriples","insertTriples","translateUpdateTriplesBlock","translateInsertDelete","currentGraph","currentTriples","blankToVariableMapping","variablesRaw","createUniqueVariable","algebra_1","objectify","algebra","addVariable","v2","recurseTerm","callbacks","doRecursion","recurseOp","copyMetadata","recurseResult","toCopyMetadata","mapOp","mapExpression","cloneOperation","cloneExpression","label","labelLoop","_options","_prefixByIri","prefixIris","isString","iriList","_prefixRegex","_usedPrefixes","_sparqlStar","_indent","indent","_newline","newline","_explicitDatatype","explicitDatatype","toQuery","mapJoin","toEntity","toExpression","variableToString","toUpdate","baseAndPrefixes","allPrefixes","toPattern","encodeTriples","parts","equalTerms","keyword","inline","valuesList","lparen","rparen","service","escape","escapeReplacer","lexical","encodeIRI","escapeReplacements","term1","term2","sep","prefixMatch","currentOptions","createGenerator","SparqlParser","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","$VD","$VE","$VF","$VG","$VH","$VI","$VJ","$VK","$VL","$VM","$VN","$VO","$VP","$VQ","$VR","$VS","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","$Ve1","$Vf1","$Vg1","$Vh1","$Vi1","$Vj1","$Vk1","$Vl1","$Vm1","$Vn1","$Vo1","$Vp1","$Vq1","$Vr1","$Vs1","$Vt1","$Vu1","$Vv1","$Vw1","$Vx1","$Vy1","$Vz1","$VA1","$VB1","$VC1","$VD1","$VE1","$VF1","$VG1","$VH1","$VI1","$VJ1","$VK1","$VL1","$VM1","$VN1","$VO1","$VP1","$VQ1","$VR1","$VS1","$VT1","$VU1","$VV1","$VW1","$VX1","$VY1","$VZ1","$V_1","$V$1","$V02","$V12","$V22","$V32","$V42","$V52","$V62","$V72","$V82","$V92","$Va2","$Vb2","$Vc2","$Vd2","$Ve2","$Vf2","$Vg2","$Vh2","$Vi2","$Vj2","$Vk2","$Vl2","$Vm2","$Vn2","$Vo2","$Vp2","$Vq2","$Vr2","$Vs2","$Vt2","$Vu2","$Vv2","$Vw2","$Vx2","$Vy2","$Vz2","$VA2","yy","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","propertyList","entity","$0","pathOnly","insertBnodesAll","insertBnodes","$","resolveIRI","groupDatasets","skipValidation","getAggregatesOfExpression","selectVar","groupVar","getExpressionId","usedVars","getVariablesFromExpression","usedVar","subqueries","selectedVarIds","subqueryIds","selectedVarId","appendAllTo","duplicates","sortedArray","getDuplicatesInArray","lowercase","toInt","toVar","valuesObject","appendTo","ensureNoVariables","ensureNoBnodes","unionAll","boundVars","getBoundVarsFromGroupGraphPattern","boundVar","ensureSparqlStar","degroupSingle","applyAnnotations","objectListToTriples","RDF_TYPE","annotation","listItems","listTriples","RDF_FIRST","RDF_REST","RDF_NIL","createList","createOperationTree","negatedLiteral","createTypedLiteral","unescapeString","namePos","expansion","uriString","nestedTriple","table","defaultActions","parseError","recoverable","vstack","lstack","recovering","lexer","sharedState","setInput","yylloc","yyloc","token","ranges","symbol","preErrorSymbol","newState","expected","yyval","lex","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","RDF","XSD","basePath","baseRoot","operatorName","attr","initialExpression","operationList","fromClauses","groupName","fromClause","defaults","annotations","blankId","escapeSequence","partialSurrogatesWithoutEndpoint","trimLength","sequence","unicode4","unicode8","escapedChar","charCode","objectList","otherTriples","visitExpression","_applyAnnotations","newTriples","EOF","_input","_more","_backtrack","matched","conditionStack","unput","lines","oldLines","backtrack_lexer","less","pastInput","past","upcomingInput","pre","test_match","indexed_rule","backup","tempMatch","rules","_currentRules","flex","popState","conditions","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","skipUngroupedVariableCheck","prefixesCopy","_nil","_parse","_stringify","_v","_v2","_v3","_v4","_validate","_version","_interopRequireDefault","getOutputLength","inputLength8","safeAdd","lsw","md5cmn","cnt","md5ff","md5gg","md5hh","md5ii","length32","hexTab","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","bytesToWords","_default","randomUUID","rnds8","ROTL","H","N","M","unsafeStringify","byteToHex","_rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","rng","msecs","nsecs","dt","tl","tmh","_md","URL","DNS","hashfunc","generateUUID","namespace","_namespace","stringToBytes","_native","rnds","_sha","_regex","extensionEntries","isSourceExpression","isPromise","isEventEmitter","isFunction","fromIterable","fromIterator","fromArray","WrappingIterator","ClonedIterator","MappingIterator","identity","IntegerIterator","DESTROYED","ENDED","CLOSED","CLOSING","OPEN","INIT","setTaskScheduler","getTaskScheduler","LinkedList","events_1","linkedlist_1","taskScheduler","createTaskScheduler","task","scheduler","initialState","_readable","_state","waitForDataListener","_changeState","eventAsync","_endAsync","cause","_destroy","closed","destroyed","details","_toStringDetails","resolveItems","pushItem","propertyName","properties","_properties","propertyCallbacks","_propertyCallbacks","getProperties","setProperties","copyProperties","propertyNames","uniq","by","surround","asyncIterator","currentResolve","currentReject","pendingError","tryResolve","tryReject","removeListeners","addSingleListener","emitData","_item","preserve","_index","_sourceStarted","_truncateThreshold","_buffer","_next","ascending","_last","ensureSourceAvailable","_destroySource","destroySource","allowDestination","_maxBufferSize","_reading","_pushedCount","_fillBuffer","doneCalled","_begin","neededItems","_completeClose","_boundPush","_createSource","_loadSourceAsync","_optional","_validateSource","destinationCloseWhenDone","destinationFillBuffer","_readAndTransform","_optionalTransform","pushedCount","_closeWhenDone","_offset","_limit","_filter","_prepender","_appender","_readAndTransformSimple","nextAsync","mappedItem","_insert","inserter","_transformerQueue","transformerQueue","_sources","_currentSource","_pending","loading","_loadSources","_addSource","_destroySources","destroySources","destinationRemoveEmptySources","_removeEmptySources","_readPosition","history","HistoryReader","endsAt","register","readAt","_getSourceProperty","hasProperty","unregister","_history","_trackers","setReadable","tracker","emitError","opts","resolved","scheduleMicrotask","queueMicrotask","scheduleMacrotask","setImmediate","queued","perf","PROCESS","emitWarning","code","AC","AbortController","AS","AbortSignal","onabort","_onabort","reason","aborted","warnACPolyfill","signal","abort","printACPolyfillWarning","LRU_CACHE_IGNORE_AC_WARNING","isPosInt","getUintArray","Uint16Array","ZeroArray","fill","heap","static","HeapCls","ttl","ttlResolution","ttlAutopurge","updateAgeOnGet","updateAgeOnHas","allowStale","noDisposeOnSet","noUpdateTTL","maxEntrySize","sizeCalculation","noDeleteOnFetchRejection","noDeleteOnStaleGet","allowStaleOnFetchAbort","allowStaleOnFetchRejection","ignoreFetchAbort","unsafeExposeInternals","starts","ttls","keyMap","keyList","valList","free","isBackgroundFetch","backgroundFetch","moveToTail","indexes","rindexes","isStale","maxSize","calculatedSize","fetchMethod","dispose","disposeAfter","UintArray","shouldWarn","getRemainingTTL","unref","status","cachedNow","getNow","age","remainingTTL","entrySize","totalCalculatedSize","_i","_s","_st","_k","rentries","rkeys","rvalues","toStringTag","getOptions","__staleWhileFetching","thisp","rforEach","purgeStale","deleted","dump","load","setOptions","maxEntrySizeExceeded","__abortController","hasOptions","peekOptions","ac","fetchOpts","updateCache","ignoreAbort","fetchAborted","fetchError","fetchAbortIgnored","fetchResolved","fetchFail","bf","fetchUpdated","allowStaleAborted","noDelete","returnedStale","__returned","fetchDispatched","rej","fmp","fetchRejected","fetchOptions","forceRefresh","stale","staleVal","fetching","pi","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","prop","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/versions/latest/engines/query-sparql-rdfjs/comunica-browser.js.map b/versions/latest/engines/query-sparql-rdfjs/comunica-browser.js.map index e202471..0f8c9d1 100644 --- a/versions/latest/engines/query-sparql-rdfjs/comunica-browser.js.map +++ b/versions/latest/engines/query-sparql-rdfjs/comunica-browser.js.map @@ -1 +1 @@ -{"version":3,"file":"comunica-browser.js","mappings":";0CAAA,IAAI,OAAEA,GAAW,EAAQ,MAErBC,EAAI,CAAC,EAELC,EAAgBD,EAAEC,WAAgB,EAClCC,EAAgBF,EAAEE,YAAgB,EAClCC,EAAgBH,EAAEG,aAAgB,EAClCC,EAAgBJ,EAAEI,cAAgB,EAClCC,EAAgBL,EAAEK,MAAgB,EAClCC,EAAgBN,EAAEM,MAAgB,EAClCC,EAAgBP,EAAEO,KAAgB,EAClCC,EAAgBR,EAAEQ,MAAgB,EAClCC,EAAgBT,EAAES,KAAgB,EAClCC,EAAgBV,EAAEU,OAAgB,GAClCC,EAAgBX,EAAEW,OAAgB,GAElCC,EAAUZ,EAAEY,MAAU,GACtBC,EAAUb,EAAEa,KAAU,GACtBC,EAAUd,EAAEc,MAAU,GACtBC,EAAUf,EAAEe,MAAU,GACtBC,EAAUhB,EAAEgB,MAAU,GACtBC,EAAUjB,EAAEiB,OAAU,GACtBC,EAAUlB,EAAEkB,OAAU,GACtBC,EAAUnB,EAAEmB,OAAU,GACtBC,EAAUpB,EAAEoB,OAAU,GACtBC,EAAUrB,EAAEqB,MAAU,GACtBC,EAAUtB,EAAEsB,MAAU,GACtBC,EAAUvB,EAAEuB,MAAU,GACtBC,EAAUxB,EAAEwB,QAAU,GACtBC,EAAUzB,EAAEyB,QAAU,GACtBC,EAAU1B,EAAE0B,QAAU,GACtBC,EAAU3B,EAAE2B,QAAU,GACtBC,EAAU5B,EAAE4B,QAAU,GACtBC,EAAU7B,EAAE6B,QAAU,IACtBC,EAAU9B,EAAE8B,QAAU,IACtBC,EAAU/B,EAAE+B,QAAU,IAEtBC,EAAUhC,EAAEgC,MAAU,IACtBC,EAAUjC,EAAEiC,IAAU,IAEtBC,EAAUlC,EAAEkC,OAAU,IACtBC,EAAUnC,EAAEmC,MAAU,IAEtBC,EAAkB,KAAKC,WAAW,GAClCC,EAAkB,IAAKD,WAAW,GAClCE,EAAkB,KAAKF,WAAW,GAClCG,EAAkB,KAAKH,WAAW,GAClCI,EAAkB,KAAKJ,WAAW,GAClCK,EAAkB,KAAKL,WAAW,GAClCM,EAAkB,KAAKN,WAAW,GAElCO,EAAqB,MAEzB,SAASC,EAAMC,GACb,OAAO/C,EAAO8C,MAAQ9C,EAAO8C,MAAMC,GAAQ,IAAI/C,EAAO+C,EACxD,CAEA,SAASC,IACPC,KAAKC,OAASrC,EACdoC,KAAKE,WAAQC,EAEbH,KAAKI,YAASD,EACdH,KAAKK,aAAeR,EAAMD,GAC1BI,KAAKM,mBAAqB,EAC1BN,KAAKO,aAAUJ,EACfH,KAAKQ,mBAAgBL,EAErBH,KAAKS,SAAMN,EACXH,KAAKU,UAAOP,EACZH,KAAKW,MAAQ,GACbX,KAAKY,MAAQ5B,EACbgB,KAAKa,gBAAkB,EACvBb,KAAKc,kBAAoB,EACzBd,KAAKe,WAAa,CAAE,EAAKlB,EAAM,GAAI,EAAKA,EAAM,GAAI,EAAKA,EAAM,IAG7DG,KAAKgB,QAAU,CACjB,CAGAjB,EAAOkB,OAAS,SAAUC,GAExB,IADA,IAAIC,EAAOC,OAAOD,KAAKnE,GACdqE,EAAI,EAAGC,EAAIH,EAAKI,OAAQF,EAAIC,EAAGD,IAAK,CAC3C,IAAIZ,EAAMU,EAAKE,GACf,GAAIrE,EAAEyD,KAASS,EAAQ,OAAOT,CAChC,CACA,OAAOS,GAAS,KAAOA,EAAKM,SAAS,GACvC,EAEA,IAAIC,EAAQ1B,EAAO2B,UACnBD,EAAME,QAAU,SAAUC,GAAO,MAAMA,CAAK,EAC5CH,EAAMI,UAAY,SAAUC,EAAQT,GAClCrB,KAAKC,OAASpC,EACdmC,KAAK2B,QAAQ,IAAII,MAAM,cAAgBC,KAAKC,UAAUC,OAAOC,aAAaL,EAAOT,KAAO,gBAAkBA,EAAI,aAAetB,EAAOkB,OAAOjB,KAAKC,SAClJ,EACAwB,EAAMW,iBAAmB,SAAUC,GAC7BrC,KAAKM,oBAAsBV,IAC7BI,KAAKI,QAAUJ,KAAKK,aAAamB,SAAS,QAC1CxB,KAAKM,mBAAqB,GAG5BN,KAAKK,aAAaL,KAAKM,sBAAwB+B,CACjD,EACAZ,EAAMa,gBAAkB,SAAUC,EAAKC,EAAOC,GAC5C,IAAI3C,EAAOyC,EAAIhB,OACM,iBAAViB,IAIL1C,EAHe,iBAAR2C,EACLA,EAAM,EAEDF,EAAIhB,OAASiB,EAAQC,EAErBA,EAAMD,EAGRD,EAAIhB,OAASiB,GAIpB1C,EAAO,IACTA,EAAO,GAGLE,KAAKM,mBAAqBR,EAAOF,IACnCI,KAAKI,QAAUJ,KAAKK,aAAamB,SAAS,OAAQ,EAAGxB,KAAKM,oBAC1DN,KAAKM,mBAAqB,GAG5BiC,EAAIG,KAAK1C,KAAKK,aAAcL,KAAKM,mBAAoBkC,EAAOC,GAC5DzC,KAAKM,oBAAsBR,CAC7B,EACA2B,EAAMkB,MAAQ,SAAUb,GAEtB,IAAIc,EADkB,iBAAXd,IAAqBA,EAAS,IAAI/E,EAAO+E,IAEpD,IAAK,IAAIT,EAAI,EAAGC,EAAIQ,EAAOP,OAAQF,EAAIC,EAAGD,IACxC,GAAIrB,KAAKC,SAAWrC,GAGlB,GAFAgF,EAAId,EAAOT,GACXrB,KAAKgB,SACI,MAAN4B,EAAa5C,KAAK6C,QAAQ5F,EAAY,UACnC,GAAS,MAAN2F,EAAa5C,KAAK6C,QAAQ3F,EAAa,UAC1C,GAAS,KAAN0F,EAAa5C,KAAK6C,QAAQ1F,EAAc,UAC3C,GAAS,KAANyF,EAAa5C,KAAK6C,QAAQzF,EAAe,UAC5C,GAAS,KAANwF,EAAa5C,KAAK6C,QAAQxF,EAAO,UACpC,GAAS,KAANuF,EAAa5C,KAAK6C,QAAQvF,EAAO,UACpC,GAAS,MAANsF,EAAa5C,KAAKC,OAASnC,OAC9B,GAAS,MAAN8E,EAAa5C,KAAKC,OAAShC,OAC9B,GAAS,MAAN2E,EAAa5C,KAAKC,OAAS5B,OAC9B,GAAS,KAANuE,EACP5C,KAAKI,OAAS,GACdJ,KAAKM,mBAAqB,EAC1BN,KAAKC,OAASvB,OACV,GAAS,KAANkE,EAAa5C,KAAKI,OAAS,IAAKJ,KAAKC,OAASzB,OAErD,GAAIoE,GAAK,IAAQA,EAAI,GACnB5C,KAAKI,OAAS8B,OAAOC,aAAaS,GAAI5C,KAAKC,OAASxB,OAC/C,GAAU,KAANmE,GAAoB,IAANA,GAAoB,KAANA,GAAoB,KAANA,EAGnD,OAAO5C,KAAK6B,UAAUC,EAAQT,QAG9B,GAAIrB,KAAKC,SAAWvB,EAIxB,GAHAkE,EAAId,EAAOT,GAGPrB,KAAKa,gBAAkB,EAAG,CAC5B,IAAK,IAAIiC,EAAI,EAAGA,EAAI9C,KAAKa,gBAAiBiC,IACxC9C,KAAKe,WAAWf,KAAKc,mBAAmBd,KAAKc,kBAAoBd,KAAKa,gBAAkBiC,GAAKhB,EAAOgB,GAGtG9C,KAAKsC,gBAAgBtC,KAAKe,WAAWf,KAAKc,oBAC1Cd,KAAKc,kBAAoBd,KAAKa,gBAAkB,EAChDQ,EAAIA,EAAIyB,EAAI,CACd,MAAO,GAA6B,IAAzB9C,KAAKa,iBAAyB+B,GAAK,IAAK,CACjD,GAAIA,GAAK,KAAOA,EAAI,IAClB,OAAO5C,KAAK2B,QAAQ,IAAII,MAAM,uCAAyCV,EAAI,aAAetB,EAAOkB,OAAOjB,KAAKC,UAK/G,GAHK2C,GAAK,KAASA,GAAK,MAAM5C,KAAKc,kBAAoB,GAClD8B,GAAK,KAASA,GAAK,MAAM5C,KAAKc,kBAAoB,GAClD8B,GAAK,KAASA,GAAK,MAAM5C,KAAKc,kBAAoB,GAClDd,KAAKc,kBAAoBO,EAAKS,EAAOP,OAAQ,CAChD,IAAK,IAAIwB,EAAI,EAAGA,GAAMjB,EAAOP,OAAS,EAAIF,EAAI0B,IAC5C/C,KAAKe,WAAWf,KAAKc,mBAAmBiC,GAAKjB,EAAOT,EAAI0B,GAE1D/C,KAAKa,gBAAmBQ,EAAIrB,KAAKc,kBAAqBgB,EAAOP,OAC7DF,EAAIS,EAAOP,OAAS,CACtB,MACEvB,KAAKsC,gBAAgBR,EAAQT,EAAGA,EAAIrB,KAAKc,mBACzCO,EAAIA,EAAIrB,KAAKc,kBAAoB,CAErC,MAAO,GAAU,KAAN8B,EACT5C,KAAKC,OAASrC,EACdoC,KAAKI,QAAUJ,KAAKK,aAAamB,SAAS,OAAQ,EAAGxB,KAAKM,oBAC1DN,KAAKM,mBAAqB,EAC1BN,KAAK6C,QAAQnF,EAAQsC,KAAKI,QAC1BJ,KAAKgB,QAAUjE,EAAOiG,WAAWhD,KAAKI,OAAQ,QAAU,EACxDJ,KAAKI,YAASD,OAEX,GAAU,KAANyC,EACP5C,KAAKC,OAAStB,MAEX,MAAIiE,GAAK,IAEV,OAAO5C,KAAK6B,UAAUC,EAAQT,GAFZrB,KAAKoC,iBAAiBQ,EAG5C,MACI,GAAI5C,KAAKC,SAAWtB,EAExB,GAAS,MADTiE,EAAId,EAAOT,IACKrB,KAAKoC,iBAAiBQ,GAAI5C,KAAKC,OAASvB,OAClD,GAAS,KAANkE,EAAa5C,KAAKoC,iBAAiBhD,GAAaY,KAAKC,OAASvB,OACjE,GAAS,KAANkE,EAAa5C,KAAKoC,iBAAiB9C,GAAgBU,KAAKC,OAASvB,OACpE,GAAS,KAANkE,EAAa5C,KAAKoC,iBAAiB7C,GAAYS,KAAKC,OAASvB,OAChE,GAAS,MAANkE,EAAa5C,KAAKoC,iBAAiB5C,GAAYQ,KAAKC,OAASvB,OAChE,GAAS,MAANkE,EAAa5C,KAAKoC,iBAAiB3C,GAAUO,KAAKC,OAASvB,OAC9D,GAAS,MAANkE,EAAa5C,KAAKoC,iBAAiB1C,GAAkBM,KAAKC,OAASvB,OACtE,GAAS,MAANkE,EAAa5C,KAAKoC,iBAAiBzC,GAAMK,KAAKC,OAASvB,MAC1D,IAAS,MAANkE,EAEP,OAAO5C,KAAK6B,UAAUC,EAAQT,GAFVrB,KAAKO,QAAU,GAAIP,KAAKC,OAASrB,CAGvD,MACI,GAAIoB,KAAKC,SAAWrB,GAAWoB,KAAKC,SAAWpB,GAAWmB,KAAKC,SAAWnB,GAAWkB,KAAKC,SAAWlB,EAAQ,CAGjH,MAFA6D,EAAId,EAAOT,KAED,IAAQuB,EAAI,IAAUA,EAAI,IAAQA,GAAK,IAAUA,EAAI,IAAQA,GAAK,KAoB1E,OAAO5C,KAAK6B,UAAUC,EAAQT,GAlB9B,GADArB,KAAKO,SAAW2B,OAAOC,aAAaS,GAChC5C,KAAKC,WAAalB,EAAS,CAC7B,IAAIkE,EAASC,SAASlD,KAAKO,QAAS,IACpCP,KAAKO,aAAUJ,OACYA,IAAvBH,KAAKQ,eAA+ByC,GAAU,OAAUA,EAAS,OACnEjD,KAAKsC,gBAAgB,IAAIvF,EAAOmF,OAAOC,aAAanC,KAAKQ,cAAeyC,KACxEjD,KAAKQ,mBAAgBL,QACWA,IAAvBH,KAAKQ,eAA+ByC,GAAU,OAAUA,EAAS,MAC1EjD,KAAKQ,cAAgByC,QAEM9C,IAAvBH,KAAKQ,gBACPR,KAAKsC,gBAAgB,IAAIvF,EAAOmF,OAAOC,aAAanC,KAAKQ,iBACzDR,KAAKQ,mBAAgBL,GAEvBH,KAAKsC,gBAAgB,IAAIvF,EAAOmF,OAAOC,aAAac,MAEtDjD,KAAKC,OAASvB,CAChB,CAIJ,MAAO,GAAIsB,KAAKC,SAAWzB,GAAWwB,KAAKC,SAAWxB,EAGlD,OAFAmE,EAAId,EAAOT,IAGT,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACHrB,KAAKI,QAAU8B,OAAOC,aAAaS,GACnC5C,KAAKC,OAASxB,EACd,MACF,QACEuB,KAAKC,OAASrC,EACd,IAAIuF,EAAQnD,KAAKoD,cAAcpD,KAAKI,QACpC,GAAI+C,EACF,OAAOA,EAGTnD,KAAKgB,QAAUhB,KAAKI,OAAOmB,OAAS,EACpCvB,KAAKI,YAASD,EACdkB,SAGF,GAAIrB,KAAKC,SAAWnC,EAAM,CAC9B,GAAkB,MAAdgE,EAAOT,GACJ,OAAOrB,KAAK6B,UAAUC,EAAQT,GADXrB,KAAKC,OAASlC,CAE1C,MAAM,GAAIiC,KAAKC,SAAWlC,EAAM,CAC9B,GAAkB,MAAd+D,EAAOT,GACJ,OAAOrB,KAAK6B,UAAUC,EAAQT,GADXrB,KAAKC,OAASjC,CAE1C,MAAM,GAAIgC,KAAKC,SAAWjC,EAAM,CAC9B,GAAkB,MAAd8D,EAAOT,GACJ,OAAOrB,KAAK6B,UAAUC,EAAQT,GADXrB,KAAKC,OAASrC,EAAOoC,KAAK6C,QAAQtF,GAAM,GAAOyC,KAAKgB,QAAS,CAEzF,MAAM,GAAIhB,KAAKC,SAAWhC,EAAO,CAC/B,GAAkB,KAAd6D,EAAOT,GACJ,OAAOrB,KAAK6B,UAAUC,EAAQT,GADXrB,KAAKC,OAAS/B,CAE1C,MAAM,GAAI8B,KAAKC,SAAW/B,EAAO,CAC/B,GAAkB,MAAd4D,EAAOT,GACJ,OAAOrB,KAAK6B,UAAUC,EAAQT,GADXrB,KAAKC,OAAS9B,CAE1C,MAAM,GAAI6B,KAAKC,SAAW9B,EAAO,CAC/B,GAAkB,MAAd2D,EAAOT,GACJ,OAAOrB,KAAK6B,UAAUC,EAAQT,GADXrB,KAAKC,OAAS7B,CAE1C,MAAM,GAAI4B,KAAKC,SAAW7B,EAAO,CAC/B,GAAkB,MAAd0D,EAAOT,GACJ,OAAOrB,KAAK6B,UAAUC,EAAQT,GADXrB,KAAKC,OAASrC,EAAOoC,KAAK6C,QAAQrF,GAAO,GAAQwC,KAAKgB,QAAS,CAE3F,MAAM,GAAIhB,KAAKC,SAAW5B,EAAM,CAC9B,GAAkB,MAAdyD,EAAOT,GACJ,OAAOrB,KAAK6B,UAAUC,EAAQT,GADXrB,KAAKC,OAAS3B,CAE1C,MAAM,GAAI0B,KAAKC,SAAW3B,EAAM,CAC9B,GAAkB,MAAdwD,EAAOT,GACJ,OAAOrB,KAAK6B,UAAUC,EAAQT,GADXrB,KAAKC,OAAS1B,CAE1C,MAAM,GAAIyB,KAAKC,SAAW1B,EAAM,CAC9B,GAAkB,MAAduD,EAAOT,GACJ,OAAOrB,KAAK6B,UAAUC,EAAQT,GADXrB,KAAKC,OAASrC,EAAOoC,KAAK6C,QAAQpF,EAAM,MAAOuC,KAAKgB,QAAU,CAE1F,CAEJ,EACAS,EAAMoB,QAAU,SAAUQ,EAAOnD,GAEjC,EAEAuB,EAAM6B,WAAa,SAAUD,EAAOnD,GAClCF,KAAKC,OAASpC,EACdmC,KAAK2B,QAAQ,IAAII,MAAM,cAAgBhC,EAAOkB,OAAOoC,IAAUnD,EAAS,IAAM8B,KAAKC,UAAU/B,GAAS,IAAO,IAAM,aAAeH,EAAOkB,OAAOjB,KAAKY,QACvJ,EACAa,EAAM8B,KAAO,WACXvD,KAAKW,MAAM4C,KAAK,CAACrD,MAAOF,KAAKE,MAAOO,IAAKT,KAAKS,IAAKC,KAAMV,KAAKU,MAChE,EACAe,EAAM+B,IAAM,WACV,IAAItD,EAAQF,KAAKE,MACbuD,EAASzD,KAAKW,MAAM6C,MACxBxD,KAAKE,MAAQuD,EAAOvD,MACpBF,KAAKS,IAAMgD,EAAOhD,IAClBT,KAAKU,KAAO+C,EAAO/C,KACnBV,KAAK0D,KAAKxD,GACLF,KAAKU,OAAQV,KAAKY,MAAQ5B,EACjC,EACAyC,EAAMiC,KAAO,SAAUxD,GACjBF,KAAKU,OAAQV,KAAKY,MAAQtD,GAC9B0C,KAAK2D,QAAQzD,EACf,EACAuB,EAAMkC,QAAU,SAAUzD,GAE1B,EACAuB,EAAMoB,QAAU,SAAUQ,EAAOnD,GAC/B,GAAGF,KAAKY,QAAU5B,EAChB,GAAGqE,IAAU3F,GAAU2F,IAAU1F,GAAU0F,IAAU9F,GAAQ8F,IAAU7F,GAAS6F,IAAU5F,EACpFuC,KAAKE,QACPF,KAAKE,MAAMF,KAAKS,KAAOP,GAEzBF,KAAK0D,KAAKxD,QACN,GAAGmD,IAAUpG,EACjB+C,KAAKuD,OACDvD,KAAKE,MACPF,KAAKE,MAAQF,KAAKE,MAAMF,KAAKS,KAAO,CAAC,EAErCT,KAAKE,MAAQ,CAAC,EAEhBF,KAAKS,SAAMN,EACXH,KAAKY,MAAQ3B,EACbe,KAAKU,KAAOxB,OACR,GAAGmE,IAAUlG,EACjB6C,KAAKuD,OACDvD,KAAKE,MACPF,KAAKE,MAAQF,KAAKE,MAAMF,KAAKS,KAAO,GAEpCT,KAAKE,MAAQ,GAEfF,KAAKS,IAAM,EACXT,KAAKU,KAAOvB,EACZa,KAAKY,MAAQ5B,OACT,GAAGqE,IAAUnG,EAAY,CAC7B,GAAI8C,KAAKU,OAASxB,EAGhB,OAAOc,KAAKsD,WAAWD,EAAOnD,GAF9BF,KAAKwD,KAIT,KAAM,IAAGH,IAAUjG,EAOjB,OAAO4C,KAAKsD,WAAWD,EAAOnD,GAN9B,GAAIF,KAAKU,OAASvB,EAGhB,OAAOa,KAAKsD,WAAWD,EAAOnD,GAF9BF,KAAKwD,KAMT,MACI,GAAGxD,KAAKY,QAAU3B,EACtB,GAAIoE,IAAU3F,EACZsC,KAAKS,IAAMP,EACXF,KAAKY,MAAQvD,MACR,IAAIgG,IAAUnG,EAGnB,OAAO8C,KAAKsD,WAAWD,EAAOnD,GAF9BF,KAAKwD,KAGP,MACI,GAAGxD,KAAKY,QAAUvD,EAAM,CAC5B,GAAIgG,IAAUhG,EACP,OAAO2C,KAAKsD,WAAWD,EAAOnD,GADdF,KAAKY,MAAQ5B,CAEtC,KAAM,IAAGgB,KAAKY,QAAUtD,EAWtB,OAAO0C,KAAKsD,WAAWD,EAAOnD,GAV9B,GAAImD,IAAU/F,EACR0C,KAAKU,OAASvB,GAASa,KAAKS,MAAOT,KAAKY,MAAQ5B,GAC3CgB,KAAKU,OAASxB,IAAUc,KAAKY,MAAQ3B,OAEzC,MAAIoE,IAAUjG,GAAiB4C,KAAKU,OAASvB,GAASkE,IAAUnG,GAAe8C,KAAKU,OAASxB,GAGlG,OAAOc,KAAKsD,WAAWD,EAAOnD,GAF9BF,KAAKwD,KAGP,CAGF,CACF,EAIA/B,EAAM2B,cAAgB,SAAUQ,GAC9B,IAAIC,EAASC,OAAOF,GAEpB,GAAIG,MAAMF,GACR,OAAO7D,KAAK6B,UAAUC,OAAQT,GAG3BuC,EAAKI,MAAM,WAAaJ,GAAUC,EAAOrC,YAAcoC,EAE1D5D,KAAK6C,QAAQnF,EAAQkG,GAErB5D,KAAK6C,QAAQlF,EAAQkG,EAEzB,EAEA9D,EAAO/C,EAAIA,EAEXiH,EAAOC,QAAUnE,8BCxajBqB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQE,cAAW,EAkCnBF,EAAQE,SALR,SAAkBC,GACd,IAAInE,EA7BR,SAAqBoE,GACjB,IAAID,EAAMC,GACND,EAAIE,SAAS,MAAQF,EAAIE,SAAS,QAClCF,EAAMA,EAAIG,MAAM,EAAGH,EAAI9C,OAAS,IAEpC,MAAMkD,EAAO,GACTJ,EAAIK,YAAY,KAAO,GACvBD,EAAKlB,KAAKc,EAAIK,YAAY,MAE1BL,EAAIK,YAAY,KAAO,GACvBD,EAAKlB,KAAKc,EAAIK,YAAY,MAE9B,MAAMrD,EAAIsD,KAAKC,OAAOH,GACtB,OAAOJ,EAAIG,MAAMnD,EAAI,EACzB,CAegBwD,CAAYR,GAExB,OADAnE,EAAQA,EAfZ,SAAkBmE,GACd,IAAIS,EACJ,MAAMC,EAM8B,QANvBD,EAAKT,EACbW,MAAM,gBACNC,QAAQC,GAAY,KAANA,IACdC,KAAKD,GAAMA,EAAE,GAAGE,cAAgBF,EAAEV,MAAM,KACxCa,KAAK,IAELrB,MAAM,2BAAwC,IAAPc,OAAgB,EAASA,EAAG,GAGxE,YAAsB,IAARC,OAAsB5E,EAAY4E,EAAI,GAAGO,cAAgBP,EAAIP,MAAM,EACrF,CAGoBe,CAASrF,QAASC,EAC3BD,GAAS,GACpB,sCClCA,IAAIsF,EAAaxF,MAAQA,KAAKwF,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU9F,GAAS,IAAM+F,EAAKL,EAAUM,KAAKhG,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASlG,GAAS,IAAM+F,EAAKL,EAAiB,MAAE1F,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKpC,GAJlB,IAAe3D,EAIa2D,EAAOwC,KAAOP,EAAQjC,EAAO3D,QAJ1CA,EAIyD2D,EAAO3D,MAJhDA,aAAiByF,EAAIzF,EAAQ,IAAIyF,GAAE,SAAUG,GAAWA,EAAQ5F,EAAQ,KAIjBoG,KAAKN,EAAWI,EAAW,CAC7GH,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,OAClE,GACJ,EACA9E,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQsC,kBAAoBtC,EAAQuC,YAAcvC,EAAQwC,iBAAc,EACxE,MAAMC,EAAa,EAAQ,OACrBC,EAAW,EAAQ,OA4BzB1C,EAAQwC,YA3BR,SAAqBG,EAAKC,GACtB,OAAOtB,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,IAAI6D,EAEJ,IACIA,QAAe,EAAI+C,EAASG,cAAcF,EAAKC,EACnD,CACA,MAAOhC,IACCgC,aAAyC,EAASA,EAAQE,iBAE1DnD,GAAS,EAAI8C,EAAWvC,UAAUyC,GAAKrC,MAAM,EAAG,GAExD,CAGA,QAAsB,IAAXX,GACoF,iBAAhFiD,aAAyC,EAASA,EAAQG,mBAClEpD,KAAUiD,EAAQG,iBAAkB,CACvC,IAAI5F,EAAI,EACR,KAAO,GAAGwC,IAASxC,MAAOyF,EAAQG,kBAC9B5F,GAAK,EAETwC,EAAS,GAAGA,IAASxC,GACzB,CACA,OAAOwC,CACX,GACJ,EAkBAK,EAAQuC,YAXR,SAAqBS,EAAQJ,GACzB,OAAOtB,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,IAEI,aAAa,EAAI4G,EAASO,WAAWD,EAAQJ,EACjD,CACA,MAAOhC,GACH,MACJ,CACJ,GACJ,EAEA,IAAIsC,EAAW,EAAQ,OACvBhG,OAAO+C,eAAeD,EAAS,oBAAqB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOF,EAASZ,iBAAmB,wCC3D9H,IAAIhB,EAAaxF,MAAQA,KAAKwF,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU9F,GAAS,IAAM+F,EAAKL,EAAUM,KAAKhG,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASlG,GAAS,IAAM+F,EAAKL,EAAiB,MAAE1F,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKpC,GAJlB,IAAe3D,EAIa2D,EAAOwC,KAAOP,EAAQjC,EAAO3D,QAJ1CA,EAIyD2D,EAAO3D,MAJhDA,aAAiByF,EAAIzF,EAAQ,IAAIyF,GAAE,SAAUG,GAAWA,EAAQ5F,EAAQ,KAIjBoG,KAAKN,EAAWI,EAAW,CAC7GH,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,OAClE,GACJ,EACA9E,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQqD,aAAerD,EAAQsD,eAAY,EAE3C,MAAMC,EAAgB,EAAQ,OAC9B,SAASD,EAAUE,EAAKZ,GACpB,IAAIhC,EACJ,OAAOU,EAAUxF,UAAM,OAAQ,GAAQ,YAEnC,MAAM2H,EAAqF,QAA1E7C,EAAKgC,aAAyC,EAASA,EAAQc,aAA0B,IAAP9C,EAAgBA,EAAK2C,EAAcG,MACtI,aAAcD,EAAQD,IAAMG,MAChC,GACJ,CACA3D,EAAQsD,UAAYA,EAMpBtD,EAAQqD,aALR,SAAsBG,EAAKZ,GACvB,OAAOtB,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,aAAcwH,EAAUE,EAAKZ,IAAU,WAC3C,GACJ,sCC1BA,IAAIgB,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAAsBtE,GAC3CsE,EAAa,EAAQ,OAAmBtE,GACxCsE,EAAa,EAAQ,OAAwBtE,uCCjB7C,IAAIsB,EAAaxF,MAAQA,KAAKwF,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU9F,GAAS,IAAM+F,EAAKL,EAAUM,KAAKhG,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASlG,GAAS,IAAM+F,EAAKL,EAAiB,MAAE1F,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKpC,GAJlB,IAAe3D,EAIa2D,EAAOwC,KAAOP,EAAQjC,EAAO3D,QAJ1CA,EAIyD2D,EAAO3D,MAJhDA,aAAiByF,EAAIzF,EAAQ,IAAIyF,GAAE,SAAUG,GAAWA,EAAQ5F,EAAQ,KAIjBoG,KAAKN,EAAWI,EAAW,CAC7GH,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,OAClE,GACJ,EACA9E,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQsC,uBAAoB,EAC5B,MAAMoC,EAAiB,EAAQ,OAS/B1E,EAAQsC,kBALR,SAA2BM,GACvB,OAAOtB,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,OAAO,EAAI4I,EAAerB,cAAc,4BAA6BT,EACzE,GACJ,sCCnBA,IAAItB,EAAaxF,MAAQA,KAAKwF,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU9F,GAAS,IAAM+F,EAAKL,EAAUM,KAAKhG,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASlG,GAAS,IAAM+F,EAAKL,EAAiB,MAAE1F,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKpC,GAJlB,IAAe3D,EAIa2D,EAAOwC,KAAOP,EAAQjC,EAAO3D,QAJ1CA,EAIyD2D,EAAO3D,MAJhDA,aAAiByF,EAAIzF,EAAQ,IAAIyF,GAAE,SAAUG,GAAWA,EAAQ5F,EAAQ,KAIjBoG,KAAKN,EAAWI,EAAW,CAC7GH,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,OAClE,GACJ,EACA9E,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQiD,eAAY,EACpB,MAAMyB,EAAiB,EAAQ,OAiB/B1E,EAAQiD,UATR,SAAmBD,EAAQJ,GACvB,OAAOtB,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,MAAM6G,SAAa,EAAI+B,EAAerB,cAAc,qBAAqBL,gBAAsBJ,IAAUI,GACzG,GAAmB,iBAARL,EACP,MAAM,IAAI9E,MAAM,0CAA0C8E,oBAAsBA,KAEpF,OAAOA,CACX,GACJ,sCC3BA,IAAIrB,EAAaxF,MAAQA,KAAKwF,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU9F,GAAS,IAAM+F,EAAKL,EAAUM,KAAKhG,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASlG,GAAS,IAAM+F,EAAKL,EAAiB,MAAE1F,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKpC,GAJlB,IAAe3D,EAIa2D,EAAOwC,KAAOP,EAAQjC,EAAO3D,QAJ1CA,EAIyD2D,EAAO3D,MAJhDA,aAAiByF,EAAIzF,EAAQ,IAAIyF,GAAE,SAAUG,GAAWA,EAAQ5F,EAAQ,KAIjBoG,KAAKN,EAAWI,EAAW,CAC7GH,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,OAClE,GACJ,EACA9E,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ6C,kBAAe,EACvB,MAAM6B,EAAiB,EAAQ,OAqB/B1E,EAAQ6C,aAbR,SAAsBF,EAAKC,GACvB,OAAOtB,EAAUxF,UAAM,OAAQ,GAAQ,YAEnC,MAAM0H,EAAM,IAAImB,IAAI,6BACpBnB,EAAIoB,aAAaC,OAAO,MAAOlC,GAC/Ba,EAAIoB,aAAaC,OAAO,SAAU,UAClC,MAAMC,EAAW5H,OAAOD,WAAW,EAAIyH,EAAerB,cAAcG,EAAKZ,IACzE,GAAwB,IAApBkC,EAASzH,OACT,MAAM,IAAIQ,MAAM,wBAEpB,OAAOiH,EAAS,EACpB,GACJ,uBChCA,IAAIC,EAAyB,oBAATC,KAAuBA,KAAOlJ,KAC9CmJ,EAAW,WACf,SAASC,IACTpJ,KAAK4H,OAAQ,EACb5H,KAAKqJ,aAAeJ,EAAOI,YAC3B,CAEA,OADAD,EAAE1H,UAAYuH,EACP,IAAIG,CACV,CAPc,IAQf,SAAUF,IAEO,SAAWhF,GAE1B,IAAIoF,EACY,oBAAqBJ,EADjCI,EAEQ,WAAYJ,GAAQ,aAAcK,OAF1CD,EAIA,eAAgBJ,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIM,MACG,CACT,CAAE,MAAOrD,GACP,OAAO,CACT,CACD,CAPD,GANAmD,EAcQ,aAAcJ,EAdtBI,EAeW,gBAAiBJ,EAOhC,GAAII,EACF,IAAIG,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFC,YAAYC,QACZ,SAASC,GACP,OAAOA,GAAOJ,EAAYK,QAAQ1I,OAAOM,UAAUF,SAASmH,KAAKkB,KAAS,CAC5E,EAGJ,SAASE,EAAcC,GAIrB,GAHoB,iBAATA,IACTA,EAAO9H,OAAO8H,IAEZ,4BAA4BC,KAAKD,GACnC,MAAM,IAAIE,UAAU,0CAEtB,OAAOF,EAAK1E,aACd,CAEA,SAAS6E,EAAejK,GAItB,MAHqB,iBAAVA,IACTA,EAAQgC,OAAOhC,IAEVA,CACT,CAGA,SAASkK,EAAYC,GACnB,IAAIC,EAAW,CACbpE,KAAM,WACJ,IAAIhG,EAAQmK,EAAME,QAClB,MAAO,CAAClE,UAAgBlG,IAAVD,EAAqBA,MAAOA,EAC5C,GASF,OANIoJ,IACFgB,EAASf,OAAOe,UAAY,WAC1B,OAAOA,CACT,GAGKA,CACT,CAEA,SAASE,EAAQC,GACfzK,KAAKmF,IAAM,CAAC,EAERsF,aAAmBD,EACrBC,EAAQC,SAAQ,SAASxK,EAAO8J,GAC9BhK,KAAK+I,OAAOiB,EAAM9J,EACpB,GAAGF,MACM2K,MAAMC,QAAQH,GACvBA,EAAQC,SAAQ,SAASG,GACvB7K,KAAK+I,OAAO8B,EAAO,GAAIA,EAAO,GAChC,GAAG7K,MACMyK,GACTrJ,OAAO0J,oBAAoBL,GAASC,SAAQ,SAASV,GACnDhK,KAAK+I,OAAOiB,EAAMS,EAAQT,GAC5B,GAAGhK,KAEP,CA8DA,SAAS+K,EAASC,GAChB,GAAIA,EAAKC,SACP,OAAOpF,QAAQE,OAAO,IAAImE,UAAU,iBAEtCc,EAAKC,UAAW,CAClB,CAEA,SAASC,EAAgBC,GACvB,OAAO,IAAItF,SAAQ,SAASC,EAASC,GACnCoF,EAAOC,OAAS,WACdtF,EAAQqF,EAAOtH,OACjB,EACAsH,EAAOE,QAAU,WACftF,EAAOoF,EAAOhI,MAChB,CACF,GACF,CAEA,SAASmI,EAAsBC,GAC7B,IAAIJ,EAAS,IAAIK,WACbC,EAAUP,EAAgBC,GAE9B,OADAA,EAAOO,kBAAkBH,GAClBE,CACT,CAmBA,SAASE,EAAYpJ,GACnB,GAAIA,EAAIiC,MACN,OAAOjC,EAAIiC,MAAM,GAEjB,IAAIoH,EAAO,IAAIC,WAAWtJ,EAAIS,YAE9B,OADA4I,EAAKE,IAAI,IAAID,WAAWtJ,IACjBqJ,EAAK9J,MAEhB,CAEA,SAASiK,IA0FP,OAzFA/L,KAAKiL,UAAW,EAEhBjL,KAAKgM,UAAY,SAAShB,GAhM5B,IAAoBnB,EAiMhB7J,KAAKiM,UAAYjB,EACZA,EAEsB,iBAATA,EAChBhL,KAAKkM,UAAYlB,EACR1B,GAAgBE,KAAK9H,UAAUyK,cAAcnB,GACtDhL,KAAKoM,UAAYpB,EACR1B,GAAoB+C,SAAS3K,UAAUyK,cAAcnB,GAC9DhL,KAAKsM,cAAgBtB,EACZ1B,GAAwBiD,gBAAgB7K,UAAUyK,cAAcnB,GACzEhL,KAAKkM,UAAYlB,EAAKxJ,WACb8H,GAAuBA,IA5MlBO,EA4M6CmB,IA3MjDwB,SAAS9K,UAAUyK,cAActC,IA4M3C7J,KAAKyM,iBAAmBd,EAAYX,EAAKlJ,QAEzC9B,KAAKiM,UAAY,IAAIzC,KAAK,CAACxJ,KAAKyM,oBACvBnD,IAAwBK,YAAYjI,UAAUyK,cAAcnB,IAAStB,EAAkBsB,IAChGhL,KAAKyM,iBAAmBd,EAAYX,GAEpChL,KAAKkM,UAAYlB,EAAO5J,OAAOM,UAAUF,SAASmH,KAAKqC,GAhBvDhL,KAAKkM,UAAY,GAmBdlM,KAAKyK,QAAQnD,IAAI,kBACA,iBAAT0D,EACThL,KAAKyK,QAAQqB,IAAI,eAAgB,4BACxB9L,KAAKoM,WAAapM,KAAKoM,UAAUM,KAC1C1M,KAAKyK,QAAQqB,IAAI,eAAgB9L,KAAKoM,UAAUM,MACvCpD,GAAwBiD,gBAAgB7K,UAAUyK,cAAcnB,IACzEhL,KAAKyK,QAAQqB,IAAI,eAAgB,mDAGvC,EAEIxC,IACFtJ,KAAKuL,KAAO,WACV,IAAInF,EAAW2E,EAAS/K,MACxB,GAAIoG,EACF,OAAOA,EAGT,GAAIpG,KAAKoM,UACP,OAAOvG,QAAQC,QAAQ9F,KAAKoM,WACvB,GAAIpM,KAAKyM,iBACd,OAAO5G,QAAQC,QAAQ,IAAI0D,KAAK,CAACxJ,KAAKyM,oBACjC,GAAIzM,KAAKsM,cACd,MAAM,IAAIvK,MAAM,wCAEhB,OAAO8D,QAAQC,QAAQ,IAAI0D,KAAK,CAACxJ,KAAKkM,YAE1C,EAEAlM,KAAK2M,YAAc,WACjB,OAAI3M,KAAKyM,iBACA1B,EAAS/K,OAAS6F,QAAQC,QAAQ9F,KAAKyM,kBAEvCzM,KAAKuL,OAAOjF,KAAKgF,EAE5B,GAGFtL,KAAK4D,KAAO,WACV,IA3FoB2H,EAClBJ,EACAM,EAyFErF,EAAW2E,EAAS/K,MACxB,GAAIoG,EACF,OAAOA,EAGT,GAAIpG,KAAKoM,UACP,OAjGkBb,EAiGIvL,KAAKoM,UA/F3BX,EAAUP,EADVC,EAAS,IAAIK,YAEjBL,EAAOyB,WAAWrB,GACXE,EA8FE,GAAIzL,KAAKyM,iBACd,OAAO5G,QAAQC,QA5FrB,SAA+BvD,GAI7B,IAHA,IAAIqJ,EAAO,IAAIC,WAAWtJ,GACtBsK,EAAQ,IAAIlC,MAAMiB,EAAKrK,QAElBF,EAAI,EAAGA,EAAIuK,EAAKrK,OAAQF,IAC/BwL,EAAMxL,GAAKa,OAAOC,aAAayJ,EAAKvK,IAEtC,OAAOwL,EAAMxH,KAAK,GACpB,CAoF6ByH,CAAsB9M,KAAKyM,mBAC7C,GAAIzM,KAAKsM,cACd,MAAM,IAAIvK,MAAM,wCAEhB,OAAO8D,QAAQC,QAAQ9F,KAAKkM,UAEhC,EAEI5C,IACFtJ,KAAK+M,SAAW,WACd,OAAO/M,KAAK4D,OAAO0C,KAAK0G,EAC1B,GAGFhN,KAAK6H,KAAO,WACV,OAAO7H,KAAK4D,OAAO0C,KAAKtE,KAAKiL,MAC/B,EAEOjN,IACT,CA3MAwK,EAAQ9I,UAAUqH,OAAS,SAASiB,EAAM9J,GACxC8J,EAAOD,EAAcC,GACrB9J,EAAQiK,EAAejK,GACvB,IAAIgN,EAAWlN,KAAKmF,IAAI6E,GACxBhK,KAAKmF,IAAI6E,GAAQkD,EAAWA,EAAW,KAAOhN,EAAQA,CACxD,EAEAsK,EAAQ9I,UAAkB,OAAI,SAASsI,UAC9BhK,KAAKmF,IAAI4E,EAAcC,GAChC,EAEAQ,EAAQ9I,UAAU4F,IAAM,SAAS0C,GAE/B,OADAA,EAAOD,EAAcC,GACdhK,KAAKmN,IAAInD,GAAQhK,KAAKmF,IAAI6E,GAAQ,IAC3C,EAEAQ,EAAQ9I,UAAUyL,IAAM,SAASnD,GAC/B,OAAOhK,KAAKmF,IAAIuD,eAAeqB,EAAcC,GAC/C,EAEAQ,EAAQ9I,UAAUoK,IAAM,SAAS9B,EAAM9J,GACrCF,KAAKmF,IAAI4E,EAAcC,IAASG,EAAejK,EACjD,EAEAsK,EAAQ9I,UAAUgJ,QAAU,SAAS0C,EAAU3H,GAC7C,IAAK,IAAIuE,KAAQhK,KAAKmF,IAChBnF,KAAKmF,IAAIuD,eAAesB,IAC1BoD,EAASzE,KAAKlD,EAASzF,KAAKmF,IAAI6E,GAAOA,EAAMhK,KAGnD,EAEAwK,EAAQ9I,UAAUP,KAAO,WACvB,IAAIkJ,EAAQ,GAIZ,OAHArK,KAAK0K,SAAQ,SAASxK,EAAO8J,GAC3BK,EAAM9G,KAAKyG,EACb,IACOI,EAAYC,EACrB,EAEAG,EAAQ9I,UAAU2L,OAAS,WACzB,IAAIhD,EAAQ,GAIZ,OAHArK,KAAK0K,SAAQ,SAASxK,GACpBmK,EAAM9G,KAAKrD,EACb,IACOkK,EAAYC,EACrB,EAEAG,EAAQ9I,UAAU4L,QAAU,WAC1B,IAAIjD,EAAQ,GAIZ,OAHArK,KAAK0K,SAAQ,SAASxK,EAAO8J,GAC3BK,EAAM9G,KAAK,CAACyG,EAAM9J,GACpB,IACOkK,EAAYC,EACrB,EAEIf,IACFkB,EAAQ9I,UAAU6H,OAAOe,UAAYE,EAAQ9I,UAAU4L,SAqJzD,IAAIC,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAO3D,SAASC,EAAQC,EAAO3G,GAEtB,IAPuB4G,EACnBC,EAMA3C,GADJlE,EAAUA,GAAW,CAAC,GACHkE,KAEnB,GAAIyC,aAAiBD,EAAS,CAC5B,GAAIC,EAAMxC,SACR,MAAM,IAAIf,UAAU,gBAEtBlK,KAAK0H,IAAM+F,EAAM/F,IACjB1H,KAAK4N,YAAcH,EAAMG,YACpB9G,EAAQ2D,UACXzK,KAAKyK,QAAU,IAAID,EAAQiD,EAAMhD,UAEnCzK,KAAK0N,OAASD,EAAMC,OACpB1N,KAAKU,KAAO+M,EAAM/M,KAClBV,KAAK6N,OAASJ,EAAMI,OACf7C,GAA2B,MAAnByC,EAAMxB,YACjBjB,EAAOyC,EAAMxB,UACbwB,EAAMxC,UAAW,EAErB,MACEjL,KAAK0H,IAAMxF,OAAOuL,GAYpB,GATAzN,KAAK4N,YAAc9G,EAAQ8G,aAAe5N,KAAK4N,aAAe,eAC1D9G,EAAQ2D,SAAYzK,KAAKyK,UAC3BzK,KAAKyK,QAAU,IAAID,EAAQ1D,EAAQ2D,UAErCzK,KAAK0N,QAhCDC,GADmBD,EAiCO5G,EAAQ4G,QAAU1N,KAAK0N,QAAU,OAhC1CtI,cACdmI,EAAQzD,QAAQ6D,IAAY,EAAIA,EAAUD,GAgCjD1N,KAAKU,KAAOoG,EAAQpG,MAAQV,KAAKU,MAAQ,KACzCV,KAAK6N,OAAS/G,EAAQ+G,QAAU7N,KAAK6N,OACrC7N,KAAK8N,SAAW,MAEK,QAAhB9N,KAAK0N,QAAoC,SAAhB1N,KAAK0N,SAAsB1C,EACvD,MAAM,IAAId,UAAU,6CAEtBlK,KAAKgM,UAAUhB,EACjB,CAMA,SAASgC,EAAOhC,GACd,IAAI+C,EAAO,IAAI1B,SAYf,OAXArB,EACGgD,OACAhJ,MAAM,KACN0F,SAAQ,SAASuD,GAChB,GAAIA,EAAO,CACT,IAAIjJ,EAAQiJ,EAAMjJ,MAAM,KACpBgF,EAAOhF,EAAMuF,QAAQ2D,QAAQ,MAAO,KACpChO,EAAQ8E,EAAMK,KAAK,KAAK6I,QAAQ,MAAO,KAC3CH,EAAKhF,OAAOoF,mBAAmBnE,GAAOmE,mBAAmBjO,GAC3D,CACF,IACK6N,CACT,CAoBA,SAASK,EAASC,EAAUvH,GACrBA,IACHA,EAAU,CAAC,GAGb9G,KAAK0M,KAAO,UACZ1M,KAAKsO,YAA4BnO,IAAnB2G,EAAQwH,OAAuB,IAAMxH,EAAQwH,OAC3DtO,KAAKuO,GAAKvO,KAAKsO,QAAU,KAAOtO,KAAKsO,OAAS,IAC9CtO,KAAKwO,WAAa,eAAgB1H,EAAUA,EAAQ0H,WAAa,KACjExO,KAAKyK,QAAU,IAAID,EAAQ1D,EAAQ2D,SACnCzK,KAAK0H,IAAMZ,EAAQY,KAAO,GAC1B1H,KAAKgM,UAAUqC,EACjB,CAlDAb,EAAQ9L,UAAU+M,MAAQ,WACxB,OAAO,IAAIjB,EAAQxN,KAAM,CAACgL,KAAMhL,KAAKiM,WACvC,EAkCAF,EAAKpD,KAAK6E,EAAQ9L,WAgBlBqK,EAAKpD,KAAKyF,EAAS1M,WAEnB0M,EAAS1M,UAAU+M,MAAQ,WACzB,OAAO,IAAIL,EAASpO,KAAKiM,UAAW,CAClCqC,OAAQtO,KAAKsO,OACbE,WAAYxO,KAAKwO,WACjB/D,QAAS,IAAID,EAAQxK,KAAKyK,SAC1B/C,IAAK1H,KAAK0H,KAEd,EAEA0G,EAASjL,MAAQ,WACf,IAAIuL,EAAW,IAAIN,EAAS,KAAM,CAACE,OAAQ,EAAGE,WAAY,KAE1D,OADAE,EAAShC,KAAO,QACTgC,CACT,EAEA,IAAIC,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CP,EAASQ,SAAW,SAASlH,EAAK4G,GAChC,IAA0C,IAAtCK,EAAiB7E,QAAQwE,GAC3B,MAAM,IAAIO,WAAW,uBAGvB,OAAO,IAAIT,EAAS,KAAM,CAACE,OAAQA,EAAQ7D,QAAS,CAACqE,SAAUpH,IACjE,EAEAxD,EAAQmF,aAAeH,EAAKG,aAC5B,IACE,IAAInF,EAAQmF,YACd,CAAE,MAAOzH,GACPsC,EAAQmF,aAAe,SAAS0F,EAAS/E,GACvChK,KAAK+O,QAAUA,EACf/O,KAAKgK,KAAOA,EACZ,IAAI7G,EAAQpB,MAAMgN,GAClB/O,KAAKW,MAAQwC,EAAMxC,KACrB,EACAuD,EAAQmF,aAAa3H,UAAYN,OAAO2G,OAAOhG,MAAML,WACrDwC,EAAQmF,aAAa3H,UAAUsN,YAAc9K,EAAQmF,YACvD,CAEA,SAASzB,EAAM6F,EAAOwB,GACpB,OAAO,IAAIpJ,SAAQ,SAASC,EAASC,GACnC,IAAImJ,EAAU,IAAI1B,EAAQC,EAAOwB,GAEjC,GAAIC,EAAQrB,QAAUqB,EAAQrB,OAAOsB,QACnC,OAAOpJ,EAAO,IAAI7B,EAAQmF,aAAa,UAAW,eAGpD,IAAI+F,EAAM,IAAIC,eAEd,SAASC,IACPF,EAAIG,OACN,CAEAH,EAAIhE,OAAS,WACX,IAxFgBoE,EAChB/E,EAuFI3D,EAAU,CACZwH,OAAQc,EAAId,OACZE,WAAYY,EAAIZ,WAChB/D,SA3Fc+E,EA2FQJ,EAAIK,yBAA2B,GA1FvDhF,EAAU,IAAID,EAGQgF,EAAWtB,QAAQ,eAAgB,KACzClJ,MAAM,SAAS0F,SAAQ,SAASgF,GAClD,IAAIC,EAAQD,EAAK1K,MAAM,KACnBvE,EAAMkP,EAAMpF,QAAQyD,OACxB,GAAIvN,EAAK,CACP,IAAIP,EAAQyP,EAAMtK,KAAK,KAAK2I,OAC5BvD,EAAQ1B,OAAOtI,EAAKP,EACtB,CACF,IACOuK,IAgFH3D,EAAQY,IAAM,gBAAiB0H,EAAMA,EAAIQ,YAAc9I,EAAQ2D,QAAQnD,IAAI,iBAC3E,IAAI0D,EAAO,aAAcoE,EAAMA,EAAIV,SAAWU,EAAIS,aAClD/J,EAAQ,IAAIsI,EAASpD,EAAMlE,GAC7B,EAEAsI,EAAI/D,QAAU,WACZtF,EAAO,IAAImE,UAAU,0BACvB,EAEAkF,EAAIU,UAAY,WACd/J,EAAO,IAAImE,UAAU,0BACvB,EAEAkF,EAAIW,QAAU,WACZhK,EAAO,IAAI7B,EAAQmF,aAAa,UAAW,cAC7C,EAEA+F,EAAIY,KAAKd,EAAQxB,OAAQwB,EAAQxH,KAAK,GAEV,YAAxBwH,EAAQtB,YACVwB,EAAIa,iBAAkB,EACW,SAAxBf,EAAQtB,cACjBwB,EAAIa,iBAAkB,GAGpB,iBAAkBb,GAAO9F,IAC3B8F,EAAIc,aAAe,QAGrBhB,EAAQzE,QAAQC,SAAQ,SAASxK,EAAO8J,GACtCoF,EAAIe,iBAAiBnG,EAAM9J,EAC7B,IAEIgP,EAAQrB,SACVqB,EAAQrB,OAAOuC,iBAAiB,QAASd,GAEzCF,EAAIiB,mBAAqB,WAEA,IAAnBjB,EAAIkB,YACNpB,EAAQrB,OAAO0C,oBAAoB,QAASjB,EAEhD,GAGFF,EAAIoB,UAAkC,IAAtBtB,EAAQjD,UAA4B,KAAOiD,EAAQjD,UACrE,GACF,CAEArE,EAAM6I,UAAW,EAEZvH,EAAKtB,QACRsB,EAAKtB,MAAQA,EACbsB,EAAKsB,QAAUA,EACftB,EAAKsE,QAAUA,EACftE,EAAKkF,SAAWA,GAGlBlK,EAAQsG,QAAUA,EAClBtG,EAAQsJ,QAAUA,EAClBtJ,EAAQkK,SAAWA,EACnBlK,EAAQ0D,MAAQA,EAEhBxG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,GAIvD,CAhhBgB,CAghBd,CAAC,EACH,CAnhBD,CAmhBGiJ,GACHA,EAASvB,MAAM8I,UAAW,SAEnBvH,EAASvB,MAAM6I,SAGtB,IAAIE,EAAMxH,GACVjF,EAAUyM,EAAI/I,OACd,QAAkB+I,EAAI/I,MACtB1D,EAAQ0D,MAAQ+I,EAAI/I,MACpB1D,EAAQsG,QAAUmG,EAAInG,QACtBtG,EAAQsJ,QAAUmD,EAAInD,QACtBtJ,EAAQkK,SAAWuC,EAAIvC,SACvBnK,EAAOC,QAAUA,gCCxiBjB9C,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ0M,YAAc1M,EAAQ2M,YAAS,EACvC,MAAMC,EAAM,EAAQ,OACdC,EAAM,EAAQ,OACdC,EAAQ,EAAQ,OACtB,IAAIC,EAAMH,EAAIG,IACVC,EAAWJ,EAAIK,OACfC,EAAkBN,EAAIM,gBACtBC,EAAaP,EAAIO,WACjBC,EAASR,EAAIQ,OACbC,EAAUT,EAAIS,QACdC,EAAWT,EAAII,OACfM,EAAoBT,EAAMS,kBAC1BC,EAAeV,EAAMU,aACrBC,EAAaX,EAAMW,WACvB,MAAMC,EAAgB,uCAChBC,EAAkB,gCAClBC,EAAS,CAEXC,UAAW,KACXC,IAAKJ,EACLK,MAAOJ,GAELK,EAAe,CAEjBH,UAAW,KACXI,IAAK,IACLC,GAAI,IACJC,GAAI,IACJC,KAAM,IACNC,KAAM,KAGJC,GAAO,EACPC,GAAW,EAcXC,EAAS,GAoBTC,EAAoB,GAapBC,EAAK,GAULC,EAAO,GACPC,EAAQ,GACRC,EAAU,GACVC,EAAW,GAEXC,EAAgB,GAGhBC,EAAWC,GAdF,KAcQA,GAZR,KAYwBA,EACjCC,EAAS,CAfA,GAEA,IAcTC,EAAqB,IAAID,EANV,GAMgCL,GAC/CO,EAAiB,IAAIF,EAAQP,EAAMI,GACnCM,EAA2B,CAACT,EAAOE,KAAa1B,GAChDkC,EAAmC,IAAIlC,EAAQyB,EAlBzC,GAkBuDF,GACnE,SAASY,EAAYC,EAAQxM,EAAQL,GACjC,OAAQK,GACJ,IAAK,MACGL,IAAQ+K,GACR8B,EAAOC,KAAK,+BAA+B/B,MAE/C,MACJ,IAAK,QACG/K,IAAQgL,GACR6B,EAAOC,KAAK,iCAAiC9B,MAKzD,OAAQhL,GACJ,KAAKgL,EACD6B,EAAOC,KAAgB,KAAXzM,EACR,2CAA2CL,KAC3C,qDACdgL,MACU,MACJ,KAAKD,EACD,OAAQ1K,GACJ,IAAK,MAED,MACJ,IAAK,GACDwM,EAAOC,KAAK,2CAA2C9M,MACvD,MACJ,QACI6M,EAAOC,KAAK,wDAKhC,CAMA,MAAMC,EAAY5J,GAAS2H,EAAW1H,KAAKD,GACrC6J,EAAU7J,GAASuH,EAAQtH,KAAKD,GAOtC9F,EAAQ2M,OAAS,CACb,UACA,OACA,wBACA,UACA,UACA,eACA,YACA,UACA,WACA,QACA,QACA,MACA,SAEJ,MAAMiD,EAA6B,CAC/BC,QAAS,iBACTnQ,KAAM,cACNoQ,sBAAuB,YACvBC,QAAS,iBACTC,QAAS,iBACTC,aAAc,sBACdC,UAAW,mBACXC,QAAS,iBACTC,SAAU,kBACVC,MAAO,eACPpR,MAAO,eACPV,IAAK,aACL+R,MAAO,gBA40DXtQ,EAAQ0M,YAz0DR,MAKI,UAAI6D,GACA,OAAOzU,KAAK0U,OAChB,CAIA,WAAA1F,CAAY2F,GACR3U,KAAK2U,IAAMA,QAAiCA,EAAM,CAAC,EACnD3U,KAAK4U,cAAgB5U,KAAK2U,IAAIvQ,SAC9B,MAAMyQ,EAAW7U,KAAK6U,WAAa7U,KAAK2U,IAAI1C,MAG5C,GAFAjS,KAAK8U,eAAsC,IAAtB9U,KAAK2U,IAAII,SAC9B/U,KAAKgV,SAAWhV,KAAK2U,IAAIK,SACrBH,EAAU,CAQV7U,KAAKiV,eAAiBxD,EACtBzR,KAAKkV,UAAYxD,EACjB1R,KAAK6T,OAASD,EAEd5T,KAAKmV,eAAiBnV,KAAKoV,iBAE3BpV,KAAKqV,WAAarV,KAAKsV,aAEvBtV,KAAKuV,GAAKnU,OAAOoU,OAAO,CAAEzD,UAAW,MAAQD,GAC7C,MAAM2D,EAAazV,KAAK2U,IAAIe,qBACV,MAAdD,IA/EhB,SAAwB/B,EAAQiC,GAC5B,IAAK,MAAMC,KAASxU,OAAOD,KAAKwU,GAC5BlC,EAAYC,EAAQkC,EAAOD,EAAQC,GAE3C,CA4EgBC,CAAe7V,KAAMyV,GACrBrU,OAAOoU,OAAOxV,KAAKuV,GAAIE,GAE/B,MAEIzV,KAAKiV,eAAiB7D,EACtBpR,KAAKkV,UAAY7D,EACjBrR,KAAK6T,OAASA,EAEd7T,KAAKmV,eAAiBnV,KAAK8V,oBAE3B9V,KAAKqV,WAAarV,KAAK+V,gBAO3B/V,KAAKgW,WAAa,CAEdhW,KAAKiW,OACLjW,KAAKkW,iBACLlW,KAAKmW,SACLnW,KAAKoW,cACLpW,KAAKqW,KACLrW,KAAKsW,WACLtW,KAAKuW,aACLvW,KAAKwW,iBACLxW,KAAKyW,YACLzW,KAAK0W,kBACL1W,KAAK2W,iBACL3W,KAAK4W,OACL5W,KAAK6W,aACL7W,KAAK8W,MACL9W,KAAK+W,QACL/W,KAAKgX,UACLhX,KAAKiX,cACLjX,KAAKkX,SACLlX,KAAKmX,eACLnX,KAAKoX,cACLpX,KAAKqX,OACLrX,KAAKsX,aACLtX,KAAKuX,cACLvX,KAAKwX,aACLxX,KAAKyX,QACLzX,KAAK0X,QACL1X,KAAK2X,UACL3X,KAAK4X,kBACL5X,KAAK6X,aACL7X,KAAK8X,WACL9X,KAAK+X,mBACL/X,KAAKgY,cACLhY,KAAKiY,kBACLjY,KAAKkY,eACLlY,KAAKmY,SACLnY,KAAKoY,cACLpY,KAAKqY,QACLrY,KAAKsY,YACLtY,KAAKuY,oBACLvY,KAAKwY,aACLxY,KAAKyY,mBACLzY,KAAK0Y,mBACL1Y,KAAK2Y,qBACL3Y,KAAK4Y,UACL5Y,KAAK6Y,mBAGT7Y,KAAK8Y,OACT,CACA,KAAAA,GACI,IAAIhU,EACJ9E,KAAK+Y,aAAe,GACpB/Y,KAAK4D,KAAO,GACZ5D,KAAKgK,KAAO,GACZhK,KAAKgZ,SAAW,GAChBhZ,KAAKiZ,OAAS,GACdjZ,KAAKkZ,EAAI,KACTlZ,KAAKmZ,KAAO,GACZnZ,KAAKoZ,IAAM,KACXpZ,KAAKqZ,MAAQ,KACbrZ,KAAKsZ,MAAQ,GACbtZ,KAAKuZ,cAAgB,EACrBvZ,KAAKqB,EAAI,EACTrB,KAAKwZ,MAAQ,EACbxZ,KAAKyZ,yBAAsBtZ,EAC3BH,KAAK0Z,eA9JW,EA+JhB1Z,KAAK2Z,WAAa,GAGlB,MAAM,YAAE/E,GAAgB5U,KACxBA,KAAKY,MAAQgU,EAAclC,EApRnB,EAsRR1S,KAAK4Z,uBAAyB5Z,KAAK6Z,sBAAwB7Z,KAAK8Z,WAC5D9Z,KAAK+Z,QAAUnF,EAGnB5U,KAAKga,iBAAmBpF,EACxB5U,KAAKia,eAAiB,CAAC,WACvBja,KAAKka,uBAAoB/Z,EACzB,IAAI,kBAAEga,GAAsBna,KAAK2U,IACjC,QAA0BxU,IAAtBga,EAAiC,CACjC,IAAiC,IAA7Bna,KAAK2U,IAAIyF,gBACT,MAAM,IAAIrY,MAAM,wDAEpBoY,EAAoB,KACxB,CACAna,KAAKqa,cAAcF,GACnBna,KAAKsa,kBAAoB,EACzBta,KAAKiU,SAAU,EACfjU,KAAK0U,SAAU,EACf1U,KAAKua,QAAU,CACXC,aAASra,EACTsa,cAAUta,EACVua,gBAAYva,GAEhBH,KAAK0P,KAAO,EACZ1P,KAAK2a,OAAS,EACd3a,KAAK4a,SAAWxZ,OAAO2G,OAAOmK,GACD,QAA5BpN,EAAK9E,KAAK6a,oBAAiC,IAAP/V,GAAyBA,EAAG6D,KAAK3I,KAC1E,CAQA,YAAI+U,GACA,OAAO/U,KAAKuZ,cAAgBvZ,KAAKqB,CACrC,CAaA,eAAIyZ,GACA,OAAO9a,KAAK+U,SAAW/U,KAAKsa,iBAChC,CAUA,EAAAS,CAAG/Q,EAAMgR,GAELhb,KAAK8T,EAA2B9J,IAASgR,CAC7C,CAMA,GAAAC,CAAIjR,GAEAhK,KAAK8T,EAA2B9J,SAAS7J,CAC7C,CAWA,SAAA+a,CAAUnM,GACN,IAAIjK,EACJ,IAAIqW,EAA+B,QAAxBrW,EAAK9E,KAAKgV,gBAA6B,IAAPlQ,EAAgBA,EAAK,GAUhE,OATI9E,KAAK8U,gBACDqG,EAAI5Z,OAAS,IACb4Z,GAAO,KAEXA,GAAO,GAAGnb,KAAK0P,QAAQ1P,KAAK2a,UAE5BQ,EAAI5Z,OAAS,IACb4Z,GAAO,MAEJ,IAAIpZ,MAAMoZ,EAAMpM,EAC3B,CAUA,IAAA4E,CAAK5E,GACD,MAAMnN,EAAM5B,KAAKkb,UAAUnM,GACrBiM,EAAUhb,KAAKob,aACrB,QAAgBjb,IAAZ6a,EACA,MAAMpZ,EAKV,OAFIoZ,EAAQpZ,GAEL5B,IACX,CAUA,KAAA2C,CAAM2W,GACF,GAAItZ,KAAKyU,OACL,OAAOzU,KAAK2T,KAAK,wDAErB,IAAIlR,GAAM,EACI,OAAV6W,GAGA7W,GAAM,EACN6W,EAAQ,IAEc,iBAAVA,IACZA,EAAQA,EAAM9X,iBAOerB,IAA7BH,KAAKyZ,sBAELH,EAAQ,GAAGtZ,KAAKyZ,sBAAsBH,IACtCtZ,KAAKyZ,yBAAsBtZ,GAE/B,IAAIkb,EAAQ/B,EAAM/X,OAClB,MAAM+Z,EAAWhC,EAAMja,WAAWgc,EAAQ,IACrC5Y,IAjYF,KAoYE6Y,GAAoBA,GAAY,OAAUA,GAAY,SAIvDtb,KAAKyZ,oBAAsBH,EAAM+B,EAAQ,GACzCA,IACA/B,EAAQA,EAAM9U,MAAM,EAAG6W,IAE3B,MAAM,WAAErF,GAAehW,KAGvB,IAFAA,KAAKsZ,MAAQA,EACbtZ,KAAKqB,EAAI,EACFrB,KAAKqB,EAAIga,GAEZrF,EAAWhW,KAAKY,OAAO+H,KAAK3I,MAGhC,OADAA,KAAKuZ,eAAiB8B,EACf5Y,EAAMzC,KAAKyC,MAAQzC,IAC9B,CAOA,KAAAub,GACI,OAAOvb,KAAK2C,MAAM,KACtB,CASA,SAAA6Y,GACI,MAAM,MAAElC,EAAK,EAAEjY,GAAMrB,KAKrB,GAJAA,KAAKwZ,MAAQnY,EAGbrB,KAAKqB,EAAIA,EAAI,EACTA,GAAKiY,EAAM/X,OACX,OAAOiR,EAIX,MAAMtR,EAAOoY,EAAMja,WAAWgC,GAE9B,GADArB,KAAK2a,SACDzZ,EAAO,MAAQ,CACf,GAAIA,GApbF,IAHF,IAubqBA,EACjB,OAAOA,EAEX,OAAQA,GACJ,KAAK0R,EAID,OAHA5S,KAAK0P,OACL1P,KAAK2a,OAAS,EACd3a,KAAKsa,kBAAoBta,KAAK+U,SACvBnC,EACX,KA9bL,GA4cS,OAZI0G,EAAMja,WAAWgC,EAAI,KAAOuR,IAI5B5S,KAAKqB,EAAIA,EAAI,GAKjBrB,KAAK0P,OACL1P,KAAK2a,OAAS,EACd3a,KAAKsa,kBAAoBta,KAAK+U,SACvBtC,EACX,QAGI,OADAzS,KAAK2T,KAAK,yBACHzS,EAEnB,CACA,GAAIA,EAAO,MAOP,OAHMA,GAAQ,OAAUA,GAAQ,OAC5BlB,KAAK2T,KAAK,yBAEPzS,EAEX,MAAMua,EAAQ,MAA6B,MAAjBva,EAAO,QAC5BoY,EAAMja,WAAWgC,EAAI,GAAK,OAO/B,OANArB,KAAKqB,EAAIA,EAAI,EAGToa,EAAQ,SACRzb,KAAK2T,KAAK,yBAEP8H,CACX,CASA,SAAAC,GACI,MAAM,MAAEpC,EAAK,EAAEjY,GAAMrB,KAKrB,GAJAA,KAAKwZ,MAAQnY,EAGbrB,KAAKqB,EAAIA,EAAI,EACTA,GAAKiY,EAAM/X,OACX,OAAOiR,EAIX,MAAMtR,EAAOoY,EAAMja,WAAWgC,GAE9B,GADArB,KAAK2a,SACDzZ,EAAO,MAAQ,CACf,GAAKA,EAAO,IAAQA,EAAO,KAAUA,EAAO,KA5e7C,OA4eqDA,GA9fpD,IA+fIA,EACA,OAAOA,EAEX,OAAQA,GACJ,KAAK0R,EAID,OAHA5S,KAAK0P,OACL1P,KAAK2a,OAAS,EACd3a,KAAKsa,kBAAoBta,KAAK+U,SACvBnC,EACX,KAtgBL,GAsgBc,CAGL,MAAM1M,EAAOoT,EAAMja,WAAWgC,EAAI,GAC9B6E,IAAS0M,GA3frB,MA2f2B1M,IAGflG,KAAKqB,EAAIA,EAAI,EAGrB,CAEA,KAngBJ,IAogBI,KAngBL,KAugBS,OAHArB,KAAK0P,OACL1P,KAAK2a,OAAS,EACd3a,KAAKsa,kBAAoBta,KAAK+U,SACvBtC,EACX,QAEI,OADAzS,KAAK2T,KAAK,yBACHzS,EAEnB,CACA,GAAIA,EAAO,MAOP,OAHMA,GAAQ,OAAUA,GAAQ,OAC5BlB,KAAK2T,KAAK,yBAEPzS,EAEX,MAAMua,EAAQ,MAA6B,MAAjBva,EAAO,QAC5BoY,EAAMja,WAAWgC,EAAI,GAAK,OAO/B,OANArB,KAAKqB,EAAIA,EAAI,EAGToa,EAAQ,SACRzb,KAAK2T,KAAK,yBAEP8H,CACX,CAKA,WAAAE,GACI,MAAMxI,EAAInT,KAAK4b,UACf,OAAOzI,IAAMV,EAAUG,EAAKO,CAChC,CACA,KAAA0I,GACI7b,KAAKqB,EAAIrB,KAAKwZ,MACdxZ,KAAK2a,QACT,CAYA,SAAAmB,CAAUjP,GACN,IAAMxL,EAAGmB,GAAUxC,KACnB,MAAM,MAAEsZ,GAAUtZ,KAElB,OAAa,CACT,MAAMmT,EAAInT,KAAK4b,UACTG,EAAW5I,IAAMV,EACjBgJ,EAAQM,EAAWnJ,EAAKO,EAC9B,GAAIsI,IAAUjJ,GAAO3F,EAAMmP,SAASP,GAEhC,OADAzb,KAAK4D,MAAQ0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,OAC9BiC,EAEPM,IACA/b,KAAK4D,MAAQ,GAAG0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,WACxChX,EAAQxC,KAAKqB,EAErB,CACJ,CAUA,aAAA4a,CAAc5Z,GACV,IAAMhB,EAAGmB,GAAUxC,KACnB,MAAM,MAAEsZ,GAAUtZ,KAElB,OAAa,CACT,IAAImT,EAAInT,KAAK4b,UACb,OAAQzI,GACJ,KAAKV,EACDzS,KAAK4D,MAAQ,GAAG0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,WACxChX,EAAQxC,KAAKqB,EACb8R,EAAIP,EACJ,MACJ,KAAKJ,EAED,OADAxS,KAAK4D,MAAQ0V,EAAM9U,MAAMhC,IAClB,EAGf,GAAI2Q,IAAM9Q,EAEN,OADArC,KAAK4D,MAAQ0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,QAC9B,CAEf,CACJ,CASA,gBAAA0C,GACI,MAAM,MAAE5C,EAAOjY,EAAGmB,GAAUxC,KAE5B,OAAa,CACT,MAAMmT,EAAInT,KAAK4b,UACf,GAAIzI,IAAMX,EAEN,OADAxS,KAAKgK,MAAQsP,EAAM9U,MAAMhC,GAClBgQ,EAGX,IAAKnB,EAAW8B,GAEZ,OADAnT,KAAKgK,MAAQsP,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,OAC9BrG,IAAMV,EAAUG,EAAKO,CAEpC,CACJ,CAQA,UAAAgJ,GAEI,OAAa,CACT,MAAMhJ,EAAInT,KAAK2b,cACf,GAAIxI,IAAMX,IAAQvB,EAAIkC,GAClB,OAAOA,CAEf,CACJ,CACA,aAAAkH,CAAcG,GACVxa,KAAKoc,kBAAoB5B,EAET,QAAZA,GACAxa,KAAKmR,OAASD,EACdlR,KAAK4b,QAAU5b,KAAKwb,YAGpBxb,KAAKmR,OAASK,EACdxR,KAAK4b,QAAU5b,KAAK0b,UAG5B,CAIA,MAAAzF,GAMqC,QAA7BjW,KAAKsZ,MAAMja,WAAW,KACtBW,KAAKqB,IACLrB,KAAK2a,UAET3a,KAAKY,MAzuBc,CA0uBvB,CACA,gBAAAsV,GAMI,MAAMmG,EAAUrc,KAAKqB,EACf8R,EAAInT,KAAKmc,aAIf,OAHInc,KAAKwZ,QAAU6C,IACfrc,KAAKga,iBAAkB,GAEnB7G,GACJ,KAAKN,EAID,GAHA7S,KAAKY,MA1uBD,GA6uBqB,IAArBZ,KAAK4D,KAAKrC,OACV,MAAM,IAAIQ,MAAM,0BAEpB,MACJ,KAAKyQ,EACD,MACJ,QACIxS,KAAK6b,QACL7b,KAAKY,MAAQ8R,EACb1S,KAAKga,iBAAkB,EAEnC,CACA,QAAA7D,GACI,IAAIrR,EACJ,MAAMqO,EAAInT,KAAK8b,UAAUzI,GACzB,OAAQF,GACJ,KAAKJ,EAC8B,QAA9BjO,EAAK9E,KAAKsc,sBAAmC,IAAPxX,GAAyBA,EAAG6D,KAAK3I,KAAMA,KAAK4D,MACnF5D,KAAK4D,KAAO,GACZ5D,KAAKY,MAAQ8R,EACb1S,KAAKiU,SAAU,EACf,MAEJ,KAAKzB,EACD,MACJ,QACIxS,KAAK4D,MAAQ1B,OAAOqa,cAAcpJ,GA1tB7B,KA2tBDA,EACAnT,KAAKY,MApxBX,EAsxBWsS,EAAQC,KACbnT,KAAKY,MAxxBD,EAyxBJZ,KAAKkZ,EAAI/F,GAGzB,CACA,aAAAiD,GACI,MAAM8C,EAAIlZ,KAAKkZ,EACXlZ,KAAKic,cAAc/C,KACnBlZ,KAAK4D,MAAQ1B,OAAOqa,cAAcrD,GAClClZ,KAAKkZ,EAAI,KACTlZ,KAAKY,MAnyBC,EAqyBd,CACA,IAAAyV,GACI,MAAMlD,EAAInT,KAAK8b,UAAUxI,GACrBH,IAAMX,IAGVxS,KAAK4D,MAAQ1B,OAAOqa,cAAcpJ,GAC9BA,IAAMF,EACNjT,KAAKY,MA7yBC,EA+yBDuS,IAAMN,EACX7S,KAAKY,MA5yBO,EA8yBPsS,EAAQC,KACbnT,KAAKY,MAhzBI,EAizBTZ,KAAKkZ,EAAI/F,GAEjB,CACA,UAAAmD,GACI,MAAM4C,EAAIlZ,KAAKkZ,EACXlZ,KAAKic,cAAc/C,KACnBlZ,KAAK4D,MAAQ1B,OAAOqa,cAAcrD,GAClClZ,KAAKY,MAzzBH,EA0zBFZ,KAAKkZ,EAAI,KAEjB,CACA,YAAA3C,GACI,MAAMpD,EAAInT,KAAK2b,cAEf,OADA3b,KAAK4D,MAAQ1B,OAAOqa,cAAcpJ,GAC1BA,GACJ,KApxBC,GAqxBGnT,KAAKY,MA/zBQ,EAg0BbZ,KAAK+Y,aAAe,GACpB,MACJ,KAAK/F,EACDhT,KAAKY,MA/zBJ,GAg0BD,MACJ,QACIZ,KAAKY,MAz0BP,EA20BV,CACA,gBAAA4V,GACI,MAAMnU,EAAOH,OAAOqa,cAAcvc,KAAK2b,eACjCa,EAAMxc,KAAK+Y,cAAgB1W,EACjCrC,KAAK4D,MAAQvB,EACD,MAARma,IACAxc,KAAKY,MAAgB,OAAR4b,EA70BH,EAJR,EAk1BFxc,KAAK+Y,aAAe,GAE5B,CACA,WAAAtC,GACQzW,KAAKic,cAryBH,MAsyBFjc,KAAK4D,MAAQ,IACb5D,KAAKY,MAn1BY,EAq1BzB,CACA,iBAAA8V,GACI,MAAMvD,EAAInT,KAAK2b,cACf3b,KAAK4D,MAAQ1B,OAAOqa,cAAcpJ,GAClCnT,KAAKY,MA7yBC,KA6yBOuS,EAx1BO,GAFN,CA21BlB,CACA,gBAAAwD,GACI,MAAMxD,EAAInT,KAAK2b,cACf3b,KAAK4D,MAAQ1B,OAAOqa,cAAcpJ,GAC9BA,IAAMJ,EACN/S,KAAKY,MAp2BH,GAu2BFZ,KAAK2T,KAAK,sBAGV3T,KAAKY,MAt2BK,EAw2BlB,CACA,MAAAgW,GACQ5W,KAAKic,cAAcjJ,KACnBhT,KAAK4D,MAAQ,IACb5D,KAAKY,MAx2BO,GA02BpB,CACA,YAAAiW,GACI,MAAM1D,EAAInT,KAAK2b,cACf3b,KAAK4D,MAAQ1B,OAAOqa,cAAcpJ,GAC9BA,IAAMJ,IACN/S,KAAKY,MAv3BH,EAy3BV,CACA,KAAAkW,GAc6B,IAArB9W,KAAKmZ,KAAK5X,OACVvB,KAAKyc,mBAGLzc,KAAK0c,uBAEb,CACA,OAAA3F,GAEI,IAAM1V,EAAGmB,GAAUxC,KACnB,MAAM,MAAEsZ,GAAUtZ,KAElB2c,EAEA,OACI,OAAQ3c,KAAK4b,WACT,KAAKnJ,EACDzS,KAAKiZ,QAAU,GAAGK,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,WAC1ChX,EAAQxC,KAAKqB,EACb,MACJ,KAz2BE,GAy2Bc,CACZ,MAAM,kBAAE6Y,GAAsBla,KACxBiZ,EAASjZ,KAAKiZ,OAASK,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,OAErD,IAAIoD,EADJ5c,KAAKY,MAAQsZ,EAEE,KAAXjB,GACAjZ,KAAK2T,KAAK,sBACViJ,EAAS,OAGTA,EAAS5c,KAAK6c,YAAY5D,GAC1BjZ,KAAKiZ,OAAS,IAEdiB,IAAsBxH,QAA+BvS,IAArBH,KAAK8c,cACrC9c,KAAK4D,MAAQgZ,GAGjB,MAAMD,CACV,CACA,KAAKnK,EACDxS,KAAKiZ,QAAUK,EAAM9U,MAAMhC,GAE3B,MAAMma,EAItB,CACA,SAAA3F,GAKI,MAAM7D,EAAInT,KAAK4b,UAEf,GAAIxK,EAAgB+B,GAChBnT,KAAKY,MAj6BE,GAk6BPZ,KAAK6b,QACL7b,KAAKga,iBAAkB,OAGvB,OAAQ7G,GACJ,KAn5BM,GAo5BFnT,KAAKY,MA/5BL,GAg6BAZ,KAAKga,iBAAkB,EACvB,MACJ,KA55BH,GA65BOha,KAAKY,MA97BA,GA+7BLZ,KAAK+Y,aAAe,GACpB/Y,KAAKga,iBAAkB,EACvB,MACJ,KAAKhH,EACDhT,KAAKY,MA57BD,GA67BJ,MACJ,QACIZ,KAAK2T,KAAK,oCACV3T,KAAKY,MAAQ8R,EACb1S,KAAKga,iBAAkB,EAGvC,CACA,aAAA/C,GAEI,OADAjX,KAAK+Y,cAAgB7W,OAAOqa,cAAcvc,KAAK2b,eACvC3b,KAAK+Y,cACT,IAAK,UACI/Y,KAAK+Z,SAAY/Z,KAAK4Z,yBACvB5Z,KAAK2T,KAAK,mCACV3T,KAAK4Z,wBAAyB,GAE9B5Z,KAAK8Z,aAAe9Z,KAAK6Z,wBACzB7Z,KAAK2T,KAAK,mCACV3T,KAAK6Z,uBAAwB,GAEjC7Z,KAAKY,MAp9BL,GAq9BAZ,KAAK+Y,aAAe,GACpB,MACJ,IAAK,KACD/Y,KAAKY,MA39BH,GA49BFZ,KAAK+Y,aAAe,GACpB,MACJ,IAAK,UACD/Y,KAAKY,MA9+BH,GA++BEZ,KAAKiU,SAAWjU,KAAK+Z,UACrB/Z,KAAK2T,KAAK,gDAEd3T,KAAK+Y,aAAe,GACpB,MACJ,QAGQ/Y,KAAK+Y,aAAaxX,QAAU,GAC5BvB,KAAK2T,KAAK,qBAG1B,CACA,QAAAuD,GACQlX,KAAKic,cA18BH,MA28BFjc,KAAKY,MA9+BQ,GAg/BrB,CACA,cAAAuW,GACI,IAAIrS,EACJ,MAAMqO,EAAInT,KAAK2b,cAh9BT,KAi9BFxI,GACAnT,KAAKY,MAp/BO,GAq/BmB,QAA9BkE,EAAK9E,KAAK+c,sBAAmC,IAAPjY,GAAyBA,EAAG6D,KAAK3I,KAAMA,KAAK4D,MACnF5D,KAAK4D,KAAO,KAGZ5D,KAAK4D,MAAQ,IAAI1B,OAAOqa,cAAcpJ,KACtCnT,KAAKY,MA5/BC,GA8/Bd,CACA,aAAAwW,GACI,MAAMjE,EAAInT,KAAK2b,cACXxI,IAAMJ,GACN/S,KAAK2T,KAAK,sBAGV3T,KAAK4D,MAAQ,KAAK1B,OAAOqa,cAAcpJ,KACvCnT,KAAKY,MAtgCC,IAygCNZ,KAAKY,MAAQ8R,CAErB,CACA,MAAA2E,GACQrX,KAAKic,cAAchJ,KACnBjT,KAAKY,MA1gCM,GA4gCnB,CACA,YAAA0W,GACI,MAAMnE,EAAInT,KAAK2b,cACXxI,IAAMF,EACNjT,KAAKY,MA/gCQ,IAkhCbZ,KAAK4D,MAAQ,IAAI1B,OAAOqa,cAAcpJ,KACtCnT,KAAKY,MArhCD,GAuhCZ,CACA,aAAA2W,GACI,IAAIzS,EACJ,MAAMqO,EAAInT,KAAK2b,cACf,OAAQxI,GACJ,KAAKJ,EAC4B,QAA5BjO,EAAK9E,KAAKgd,oBAAiC,IAAPlY,GAAyBA,EAAG6D,KAAK3I,KAAMA,KAAK4D,MACjF5D,KAAK4D,KAAO,GACZ5D,KAAKY,MAAQ8R,EACb,MAEJ,KAAKO,EACDjT,KAAK4D,MAAQ,IACb,MACJ,QACI5D,KAAK4D,MAAQ,KAAK1B,OAAOqa,cAAcpJ,KACvCnT,KAAKY,MAviCL,GAyiCZ,CAGA,YAAA4W,GACI,MAAMrE,EAAInT,KAAK2b,cAGX3b,KAAKiV,eAAe9B,IACpBnT,KAAKgZ,UAAY9W,OAAOqa,cAAcpJ,GACtCnT,KAAKY,MA9iCC,IAgjCDuS,IAAMH,GAAY/B,EAAIkC,IAC3BnT,KAAK2T,KAAK,4CACV3T,KAAKY,MAAQuS,IAAMH,EAhjCX,GADF,KAojCNhT,KAAK2T,KAAK,wDACV3T,KAAKgZ,UAAY9W,OAAOqa,cAAcpJ,GACtCnT,KAAKY,MAvjCC,GAyjCd,CACA,OAAA6W,GAGI,MAAM,MAAE6B,EAAOjY,EAAGmB,GAAUxC,KAE5B,OAAa,CACT,MAAMmT,EAAInT,KAAK2b,cACf,GAAIxI,IAAMX,EAEN,YADAxS,KAAKgZ,UAAYM,EAAM9U,MAAMhC,IAKjC,IAAKxC,KAAKkV,UAAU/B,GAAI,CACpBnT,KAAKgZ,UAAYM,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,OACzC,MAAMyD,EAAa9J,IAAMH,EACrBiK,GAAchM,EAAIkC,GACI,QAAlBnT,KAAKgZ,UACAhZ,KAAKga,iBACNha,KAAK2T,KAAK,4DAEd3T,KAAKY,MAAQqc,EAAatK,EA5kCpB,IA+kCN3S,KAAKY,MAAQqc,EAhlCjB,GADF,IAqlCEjd,KAAK2T,KAAK,wDACV3T,KAAKgZ,UAAY9W,OAAOqa,cAAcpJ,IAE1C,KACJ,CACJ,CACJ,CACA,OAAAuE,GACI,GAAyB,IAArB1X,KAAK4D,KAAKrC,OAAc,CACxB,MAAM4R,EAAInT,KAAK2b,cACXxI,IAAMH,EACNhT,KAAKY,MA/lCD,GAimCEqQ,EAAIkC,KACVnT,KAAK4D,KAAO1B,OAAOqa,cAAcpJ,GAEzC,MAGSnT,KAAKic,cAAcjJ,KACxBhT,KAAKY,MAxmCG,GA0mChB,CACA,SAAA+W,GACI,IAAI7S,EACJ,MAAMqO,EAAInT,KAAK2b,cACf,GAAIxI,IAAMJ,EAAS,CACf,MAAM,SAAEiG,GAAahZ,KACU,QAA3BgZ,EAAS1T,eACTtF,KAAK2T,KAAK,iEAEY,QAAzB7O,EAAK9E,KAAKkd,iBAA8B,IAAPpY,GAAyBA,EAAG6D,KAAK3I,KAAM,CACrEmd,OAAQnE,EACRhO,KAAMhL,KAAK4D,OAEf5D,KAAKgZ,SAAWhZ,KAAK4D,KAAO,GAC5B5D,KAAKY,MAAQ8R,CACjB,MACSS,IAAMH,EAKXhT,KAAK4D,MAAQ,KAGb5D,KAAK4D,MAAQ,IAAI1B,OAAOqa,cAAcpJ,KACtCnT,KAAKY,MApoCC,IAsoCVZ,KAAKga,iBAAkB,CAC3B,CACA,iBAAApC,GACI,MAAMzE,EAAInT,KAAKmc,aAGXhJ,IAAMH,EAKNG,IAAMX,IACNxS,KAAKY,MA/oCO,GAgpCZZ,KAAKgK,KAAO9H,OAAOqa,cAAcpJ,IALjCnT,KAAKY,MAAQ+R,CAOrB,CACA,YAAAkF,GACI,MAAM1E,EAAInT,KAAK8b,UAAUvI,GAGzB,GAAIJ,IAAMH,EAKN,OAJAhT,KAAKY,MAAQ+R,EACb3S,KAAKgK,MAAQhK,KAAK4D,KAClB5D,KAAK4D,KAAO,QACZ5D,KAAK2T,KAAK,kCAGd,GAAM1C,EAAIkC,IAAMA,IAAML,EAAtB,CAKA,GAFA9S,KAAKgK,MAAQhK,KAAK4D,KAClB5D,KAAK4D,KAAO,IACP5D,KAAKia,eAAe+B,SAAShc,KAAKgK,MACnC,OAAQhK,KAAKgK,KAAKzI,QACd,KAAK,EACDvB,KAAK2T,KAAK,6CACV,MACJ,KAAK,EACD3T,KAAK2T,KAAK,qBAAqB3T,KAAKia,eAAe,OACnD,MACJ,QACIja,KAAK2T,KAAK,mBAAmB3T,KAAKia,eAAe5U,KAAK,SAGlErF,KAAKY,MAAQuS,IAAML,EA7qCI,GADT,EA+pCd,CAgBJ,CACA,UAAAgF,GACI,MAAM3E,EAAInT,KAAK2b,cAGf,GAAIxI,IAAMH,EAGN,OAFAhT,KAAKY,MAAQ+R,OACb3S,KAAK2T,KAAK,kCAGV1C,EAAIkC,KAGJA,IAAML,GACN9S,KAAK2T,KAAK,mBAEd3T,KAAKY,MA9rCkB,GA+rC3B,CACA,kBAAAmX,GACI,MAAM5E,EAAInT,KAAK2b,cAGf,GAAIxI,IAAMH,EAGN,OAFAhT,KAAKY,MAAQ+R,OACb3S,KAAK2T,KAAK,kCAGV1C,EAAIkC,KAGHD,EAAQC,GAKTnT,KAAKkZ,EAAI/F,GAJTnT,KAAK2T,KAAK,yBACV3T,KAAKkZ,EA5rCH,IAisCNlZ,KAAKY,MAltCY,GAmtCrB,CACA,aAAAoX,GACI,MAAM7E,EAAInT,KAAK8b,UAAU,CAAC9b,KAAKkZ,EAAGlG,IAGlC,GAAIG,IAAMH,EAIN,OAHAhT,KAAKY,MAAQ+R,EACb3S,KAAK4D,KAAO,QACZ5D,KAAK2T,KAAK,kCAGd,GAAIR,IAAMX,EACN,OAEJ,MAAMtS,EAAQF,KAAK4D,KAEnB,OADA5D,KAAK4D,KAAO,GACJ5D,KAAKgK,MACT,IAAK,UAAW,CACZhK,KAAKia,eAAiB,CAAC,WAAY,cACnC,MAAMO,EAAUta,EAChBF,KAAKua,QAAQC,QAAUA,EAElB,cAAcvQ,KAAKuQ,GAIdxa,KAAK2U,IAAIyF,iBACfpa,KAAKqa,cAAcG,GAJnBxa,KAAK2T,KAAK,6CAMd,KACJ,CACA,IAAK,WACI,4BAA4B1J,KAAK/J,IAClCF,KAAK2T,KAAK,6DAGd3T,KAAKia,eAAiB,CAAC,cACvBja,KAAKua,QAAQE,SAAWva,EACxB,MACJ,IAAK,aACa,QAAVA,GAA6B,OAAVA,GACnBF,KAAK2T,KAAK,8CAEd3T,KAAKia,eAAiB,GACtBja,KAAKua,QAAQG,WAAaxa,EAMlCF,KAAKgK,KAAO,GACZhK,KAAKY,MArwCgB,EAswCzB,CACA,iBAAAqX,GACI,MAAM9E,EAAInT,KAAK2b,cAGXxI,IAAMH,GAKL/B,EAAIkC,KACLnT,KAAK2T,KAAK,wBACV3T,KAAK6b,SAET7b,KAAKY,MAzxCiB,IAkxClBZ,KAAKY,MAAQ+R,CAQrB,CACA,cAAAuF,GACI,IAAIpT,EACM9E,KAAK2b,gBACL5I,GACgB,QAAlB/S,KAAKgZ,SACLhZ,KAAK2T,KAAK,wDAES,YAAd3T,KAAKgK,MACVhK,KAAKia,eAAe+B,SAAS,YAC7Bhc,KAAK2T,KAAK,2CAEiB,QAA9B7O,EAAK9E,KAAKod,sBAAmC,IAAPtY,GAAyBA,EAAG6D,KAAK3I,KAAMA,KAAKua,SACnFva,KAAKgK,KAAO,GACZhK,KAAKgZ,SAAWhZ,KAAK4D,KAAO,GAC5B5D,KAAKY,MAAQ8R,GAMb1S,KAAK2T,KAAK,+DAEd3T,KAAKga,iBAAkB,CAC3B,CACA,QAAA7B,GACI,IAAIrT,EACJ,MAAMqO,EAAInT,KAAKkc,mBACf,GAAI/I,IAAMX,EACN,OAEJ,MAAM4G,EAAMpZ,KAAKoZ,IAAM,CACnBpP,KAAMhK,KAAKgK,KACXqT,WAAYjc,OAAO2G,OAAO,OAW9B,OATA/H,KAAKgK,KAAO,GACRhK,KAAK6U,WACL7U,KAAKqZ,MAAQD,EAAI7D,GAAKnU,OAAO2G,OAAO,OAEJ,QAAnCjD,EAAK9E,KAAKsd,2BAAwC,IAAPxY,GAAyBA,EAAG6D,KAAK3I,KAAMoZ,GACnFpZ,KAAK+Z,SAAU,GACV/Z,KAAK4U,aAAe5U,KAAK8Z,YAC1B9Z,KAAK2T,KAAK,wCAENR,GACJ,KAAKJ,EACD/S,KAAKud,UACL,MACJ,KA/yCU,GAgzCNvd,KAAKY,MAn0CI,GAo0CT,MACJ,QACSqQ,EAAIkC,IACLnT,KAAK2T,KAAK,qCAEd3T,KAAKY,MAx0CJ,GA00Cb,CACA,aAAAwX,GACQpY,KAAK4b,YAAc7I,EACnB/S,KAAKwd,sBAGLxd,KAAK2T,KAAK,mDACV3T,KAAKY,MAj1CA,GAm1Cb,CACA,OAAAyX,GACI,MAAMlF,EAAInT,KAAKmc,aACXhJ,IAAMX,IAGNpB,EAAgB+B,IAChBnT,KAAK6b,QACL7b,KAAKY,MA11CK,IA41CLuS,IAAMJ,EACX/S,KAAKud,UA50CK,KA80CLpK,EACLnT,KAAKY,MAl2CQ,GAq2CbZ,KAAK2T,KAAK,2CAElB,CACA,WAAA2E,GACI,MAAMnF,EAAInT,KAAKkc,mBACX/I,IAAML,EACN9S,KAAKY,MAv2CM,GAy2CNqQ,EAAIkC,GACTnT,KAAKY,MA32Ce,GA62CfuS,IAAMJ,GACX/S,KAAK2T,KAAK,4BACV3T,KAAKqV,WAAWrV,KAAKgK,KAAMhK,KAAKgK,MAChChK,KAAKgK,KAAOhK,KAAK4D,KAAO,GACxB5D,KAAKud,WAEApK,IAAMX,GACXxS,KAAK2T,KAAK,0CAElB,CACA,mBAAA4E,GACI,MAAMpF,EAAInT,KAAKmc,aACf,OAAQhJ,GACJ,KAAKX,EACD,OACJ,KAAKM,EACD9S,KAAKY,MA53CE,GA63CP,MACJ,QACIZ,KAAK2T,KAAK,4BAGV3T,KAAK4D,KAAO,GACZ5D,KAAKgK,KAAO,GACRmJ,IAAMJ,EACN/S,KAAKud,UAEAnM,EAAgB+B,IACrBnT,KAAK6b,QACL7b,KAAKY,MA34CH,KA84CFZ,KAAK2T,KAAK,2CACV3T,KAAKY,MAh5CR,IAm5Cb,CACA,YAAA4X,GACI,MAAMrF,EAAInT,KAAK2b,cACXzI,EAAQC,IACRnT,KAAKkZ,EAAI/F,EACTnT,KAAKY,MAp5Ca,IAs5CZqQ,EAAIkC,KACVnT,KAAK2T,KAAK,6BACV3T,KAAKY,MAt5Ce,GAu5CpBZ,KAAK6b,QAEb,CACA,kBAAApD,GAGI,MAAM,EAAES,EAAC,MAAEI,GAAUtZ,KACrB,IAAMqB,EAAGmB,GAAUxC,KAEnB,OACI,OAAQA,KAAK4b,WACT,KAAK1C,EAKD,OAJAlZ,KAAKqV,WAAWrV,KAAKgK,KAAMhK,KAAK4D,KAAO0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,QAC/DxZ,KAAKgK,KAAOhK,KAAK4D,KAAO,GACxB5D,KAAKkZ,EAAI,UACTlZ,KAAKY,MAv6CK,IAy6Cd,KA/5CJ,GAm6CQ,OAHAZ,KAAK4D,MAAQ0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,OACrCxZ,KAAKY,MAt8CR,QAu8CGZ,KAAKka,kBA76CK,IA+6Cd,KAAKtH,EACL,KAAKH,EACL,KA56CJ,EA66CQzS,KAAK4D,MAAQ,GAAG0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,UACxChX,EAAQxC,KAAKqB,EACb,MACJ,KAAKwR,EAGD,OAFA7S,KAAK4D,MAAQ0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,YACrCxZ,KAAK2T,KAAK,yBAEd,KAAKnB,EAED,YADAxS,KAAK4D,MAAQ0V,EAAM9U,MAAMhC,IAKzC,CACA,kBAAAkW,GACI,MAAMvF,EAAInT,KAAK2b,cACX1K,EAAIkC,GACJnT,KAAKY,MAv8CA,GAy8CAuS,IAAMJ,EACX/S,KAAKud,UAx7CK,KA07CLpK,EACLnT,KAAKY,MA98CQ,GAg9CRwQ,EAAgB+B,IACrBnT,KAAK2T,KAAK,qCACV3T,KAAK6b,QACL7b,KAAKY,MAj9CK,IAo9CVZ,KAAK2T,KAAK,0CAElB,CACA,oBAAAgF,GAMI,MAAMxF,EAAInT,KAAK8b,UAAUtI,GACzB,OAAQL,GACJ,KAj9CA,GAk9CInT,KAAKY,MAv/CJ,GAw/CDZ,KAAKka,kBA59CW,GA69ChB,MACJ,KAAKrH,EACD7S,KAAK2T,KAAK,yBACV,MACJ,KAAKnB,EACD,MACJ,QACQxS,KAAK4D,KAAKoY,SAAS,QACnBhc,KAAK2T,KAAK,gDAEd3T,KAAKqV,WAAWrV,KAAKgK,KAAMhK,KAAK4D,MAChC5D,KAAKgK,KAAOhK,KAAK4D,KAAO,GACpBuP,IAAMJ,EACN/S,KAAKud,UAGLvd,KAAKY,MAn/CR,GAs/Cb,CACA,SAAAgY,GACI,MAAMzF,EAAInT,KAAKkc,mBACX/I,IAAMJ,EACN/S,KAAKyd,WAEAxM,EAAIkC,GACTnT,KAAKY,MAr/Ca,GAu/CbuS,IAAMX,GACXxS,KAAK2T,KAAK,uCAElB,CACA,iBAAAkF,GACI,OAAQ7Y,KAAKmc,cACT,KAAKpJ,EACD/S,KAAKyd,WACL,MACJ,KAAKjL,EACD,MACJ,QACIxS,KAAK2T,KAAK,wCAEtB,CAEA,gBAAA8I,GASI,IAAMpb,EAAGmB,EAAK,eAAEkX,GAAmB1Z,KACnC,MAAM,MAAEsZ,EAAOwD,YAAa9B,GAAYhb,KAExC0d,EAEA,OACI,OAAQ1d,KAAK4b,WACT,KAAK/I,EAED,GADA7S,KAAKY,MArjDL,QAsjDgBT,IAAZ6a,EAAuB,CACvB,MAAM,KAAEpX,GAAS5D,KACXwE,EAAQ8U,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,OAClB,IAAhB5V,EAAKrC,QACLyZ,EAAQpX,EAAOY,GACfxE,KAAK4D,KAAO,IAEU,IAAjBY,EAAMjD,QACXyZ,EAAQxW,EAEhB,CACAkV,EA/9CI,EAi+CJ,MAAMgE,EAEV,KAjiDJ,GAkiDQ1d,KAAKY,MAvkDR,GAwkDGZ,KAAKka,kBAAoBxH,OACTvS,IAAZ6a,IACAhb,KAAK4D,MAAQ0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,QAEzCE,EAz+CI,EA2+CJ,MAAMgE,EACV,KAAKzK,EACD,OAAQyG,GACJ,KA9+CA,EA++CIA,EA9+CF,EA++CE,MACJ,KAh/CE,EAi/CEA,EAh/CM,EAi/CN,MACJ,KAl/CU,EAm/CN,MACJ,QACI,MAAM,IAAI3X,MAAM,oBAExB,MACJ,KAAKgR,EAx/Ca,IAy/CV2G,GACA1Z,KAAK2T,KAAK,gDAEd+F,EA9/CI,EA+/CJ,MACJ,KAAKjH,OACetS,IAAZ6a,IACAhb,KAAK4D,MAAQ,GAAG0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,YAE5ChX,EAAQxC,KAAKqB,EACbqY,EArgDI,EAsgDJ,MACJ,KAAKlH,OACerS,IAAZ6a,IACAhb,KAAK4D,MAAQ0V,EAAM9U,MAAMhC,IAG7B,MAAMkb,EACV,QACIhE,EA9gDI,EAihDhB1Z,KAAK0Z,eAAiBA,CAC1B,CACA,qBAAAgD,GAKI,IAAMrb,EAAGmB,GAAUxC,KACnB,MAAM,MAAEsZ,EAAOwD,YAAa9B,GAAYhb,KACxC,IAAI2d,GAAW,EAEfC,EAEA,OAAa,CACT,MAAM1c,EAAOlB,KAAK4b,UAClB,OAAQ1a,GACJ,KAAK2R,EAED,GADA7S,KAAKY,MApoDL,QAqoDgBT,IAAZ6a,EAAuB,CACvB,MAAM,KAAEpX,GAAS5D,KACXwE,EAAQ8U,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,OAClB,IAAhB5V,EAAKrC,QACLyZ,EAAQpX,EAAOY,GACfxE,KAAK4D,KAAO,IAEU,IAAjBY,EAAMjD,QACXyZ,EAAQxW,EAEhB,CAEA,MAAMoZ,EAEV,KA/mDJ,GAgnDQ5d,KAAKY,MArpDR,GAspDGZ,KAAKka,kBAAoBxH,OACTvS,IAAZ6a,IACAhb,KAAK4D,MAAQ0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,QAEzCmE,GAAW,EAEX,MAAMC,EACV,KAAKnL,OACetS,IAAZ6a,IACAhb,KAAK4D,MAAQ,GAAG0V,EAAM9U,MAAMhC,EAAOxC,KAAKwZ,YAE5ChX,EAAQxC,KAAKqB,EACb,MACJ,KAAKmR,OACerS,IAAZ6a,IACAhb,KAAK4D,MAAQ0V,EAAM9U,MAAMhC,IAG7B,MAAMob,EACV,QACS3M,EAAI/P,KACLyc,GAAW,GAG3B,CACKA,IAMA3d,KAAK+Z,SAAY/Z,KAAK4Z,yBACvB5Z,KAAK2T,KAAK,mCACV3T,KAAK4Z,wBAAyB,GAE9B5Z,KAAK8Z,aAAe9Z,KAAK6Z,wBACzB7Z,KAAK2T,KAAK,mCACV3T,KAAK6Z,uBAAwB,GAErC,CACA,YAAAvE,CAAatL,EAAM9J,GACf,IAAI4E,EACJ,MAAM,OAAEoC,EAAM,MAAE0O,GAAU5V,KAAK6d,MAAM7T,GAC/B8T,EAAO,CAAE9T,OAAM9C,SAAQ0O,QAAO1V,SAGpC,GAFAF,KAAK2Z,WAAWpW,KAAKua,GACY,QAAhChZ,EAAK9E,KAAK+d,wBAAqC,IAAPjZ,GAAyBA,EAAG6D,KAAK3I,KAAM8d,GACjE,UAAX5W,EAAoB,CACpB,MAAM8W,EAAU9d,EAAM8N,OACS,QAA3BhO,KAAKoc,mBAA2C,KAAZ4B,GACpChe,KAAK2T,KAAK,iDAEd3T,KAAKqZ,MAAMzD,GAASoI,EACpBvK,EAAYzT,KAAM4V,EAAOoI,EAC7B,MACK,GAAa,UAAThU,EAAkB,CACvB,MAAMgU,EAAU9d,EAAM8N,OACtBhO,KAAKqZ,MAAM,IAAM2E,EACjBvK,EAAYzT,KAAM,GAAIge,EAC1B,CACJ,CACA,eAAAjI,CAAgB/L,EAAM9J,GAClB,IAAI4E,EACJ,MAAMgZ,EAAO,CAAE9T,OAAM9J,SACrBF,KAAK2Z,WAAWpW,KAAKua,GACY,QAAhChZ,EAAK9E,KAAK+d,wBAAqC,IAAPjZ,GAAyBA,EAAG6D,KAAK3I,KAAM8d,EACpF,CAOA,GAAArb,GACI,IAAIqC,EAAImZ,EACHje,KAAK+Z,SACN/Z,KAAK2T,KAAK,yCAEd,MAAM,KAAEwF,GAASnZ,KACjB,KAAOmZ,EAAK5X,OAAS,GAAG,CACpB,MAAM6X,EAAMD,EAAK3V,MACjBxD,KAAK2T,KAAK,iBAAiByF,EAAIpP,OACnC,CArvDQ,IAsvDHhK,KAAKY,OAAuBZ,KAAKY,QAAU8R,GAC5C1S,KAAK2T,KAAK,mBAEd,MAAM,KAAE/P,GAAS5D,KAQjB,OAPoB,IAAhB4D,EAAKrC,SACuB,QAA3BuD,EAAK9E,KAAK8c,mBAAgC,IAAPhY,GAAyBA,EAAG6D,KAAK3I,KAAM4D,GAC3E5D,KAAK4D,KAAO,IAEhB5D,KAAK0U,SAAU,EACY,QAA1BuJ,EAAKje,KAAKke,kBAA+B,IAAPD,GAAyBA,EAAGtV,KAAK3I,MACpEA,KAAK8Y,QACE9Y,IACX,CAQA,OAAA8F,CAAQoB,GACJ,IAAIpC,EAAImZ,EACR,IAAIpX,EAAM7G,KAAKqZ,MAAMnS,GACrB,QAAY/G,IAAR0G,EACA,OAAOA,EAEX,MAAM,KAAEsS,GAASnZ,KACjB,IAAK,IAAIme,EAAQhF,EAAK5X,OAAS,EAAG4c,GAAS,EAAGA,IAE1C,GADAtX,EAAMsS,EAAKgF,GAAO5I,GAAGrO,QACT/G,IAAR0G,EACA,OAAOA,EAIf,OADAA,EAAM7G,KAAKuV,GAAGrO,QACF/G,IAAR0G,EACOA,EAEqC,QAAxCoX,GAAMnZ,EAAK9E,KAAK2U,KAAKyJ,qBAAkC,IAAPH,OAAgB,EAASA,EAAGtV,KAAK7D,EAAIoC,EACjG,CAQA,KAAA2W,CAAM7T,GAEF,MAAMqU,EAAQrU,EAAKF,QAAQ,KAC3B,IAAe,IAAXuU,EACA,MAAO,CAAEnX,OAAQ,GAAI0O,MAAO5L,GAEhC,MAAM4L,EAAQ5L,EAAKxF,MAAM6Z,EAAQ,GAC3BnX,EAAS8C,EAAKxF,MAAM,EAAG6Z,GAI7B,OAHe,KAAXnX,GAA2B,KAAV0O,GAAgBA,EAAMoG,SAAS,OAChDhc,KAAK2T,KAAK,mBAAmB3J,MAE1B,CAAE9C,SAAQ0O,QACrB,CACA,gBAAAR,GACI,IAAItQ,EACJ,MAAM,WAAE6U,GAAe3Z,KACjBoZ,EAAMpZ,KAAKoZ,IACjB,CAEI,MAAM,OAAElS,EAAM,MAAE0O,GAAU5V,KAAK6d,MAAMzE,EAAIpP,MACzCoP,EAAIlS,OAASA,EACbkS,EAAIxD,MAAQA,EACZ,MAAM/O,EAAMuS,EAAIvS,IAAsC,QAA/B/B,EAAK9E,KAAK8F,QAAQoB,UAA4B,IAAPpC,EAAgBA,EAAK,GACpE,KAAXoC,IACe,UAAXA,GACAlH,KAAK2T,KAAK,wCAEF,KAAR9M,IACA7G,KAAK2T,KAAK,6BAA6B3R,KAAKC,UAAUiF,OACtDkS,EAAIvS,IAAMK,GAGtB,CACA,GAA0B,IAAtByS,EAAWpY,OACX,OAEJ,MAAM,WAAE8b,GAAejE,EACjBkF,EAAO,IAAIC,IAGjB,IAAK,MAAMT,KAAQnE,EAAY,CAC3B,MAAM,KAAE3P,EAAI,OAAE9C,EAAM,MAAE0O,GAAUkI,EAChC,IAAIjX,EACA2X,EACW,KAAXtX,GACAL,EAAe,UAATmD,EAAmB6H,EAAkB,GAC3C2M,EAASxU,IAGTnD,EAAM7G,KAAK8F,QAAQoB,QAGP/G,IAAR0G,IACA7G,KAAK2T,KAAK,6BAA6B3R,KAAKC,UAAUiF,OACtDL,EAAMK,GAEVsX,EAAS,IAAI3X,KAAO+O,KAEpB0I,EAAKnR,IAAIqR,IACTxe,KAAK2T,KAAK,wBAAwB6K,MAEtCF,EAAKG,IAAID,GACTV,EAAKjX,IAAMA,EACXwW,EAAWrT,GAAQ8T,CACvB,CACA9d,KAAK2Z,WAAa,EACtB,CACA,mBAAA7D,GACI,MAAM,WAAE6D,GAAe3Z,KAEjBqd,EAAard,KAAKoZ,IAAIiE,WAC5B,IAAK,MAAM,KAAErT,EAAI,MAAE9J,KAAWyZ,OACDxZ,IAArBkd,EAAWrT,IACXhK,KAAK2T,KAAK,wBAAwB3J,MAEtCqT,EAAWrT,GAAQ9J,EAEvBF,KAAK2Z,WAAa,EACtB,CAMA,OAAA4D,GACI,IAAIzY,EACJ9E,KAAKmV,iBACL,MAAM,KAAEgE,GAASnZ,KACXoZ,EAAMpZ,KAAKoZ,IACjBA,EAAIsF,eAAgB,EAGW,QAA9B5Z,EAAK9E,KAAK2e,sBAAmC,IAAP7Z,GAAyBA,EAAG6D,KAAK3I,KAAMoZ,GAC9ED,EAAK5V,KAAK6V,GACVpZ,KAAKY,MAAQ8R,EACb1S,KAAKgK,KAAO,EAChB,CAMA,kBAAAwT,GACI,IAAI1Y,EAAImZ,EAAIW,EACZ5e,KAAKmV,iBACL,MAAM,KAAEgE,GAASnZ,KACXoZ,EAAMpZ,KAAKoZ,IACjBA,EAAIsF,eAAgB,EAGW,QAA9B5Z,EAAK9E,KAAK2e,sBAAmC,IAAP7Z,GAAyBA,EAAG6D,KAAK3I,KAAMoZ,GAC9C,QAA/B6E,EAAKje,KAAK6e,uBAAoC,IAAPZ,GAAyBA,EAAGtV,KAAK3I,KAAMoZ,GAEnE,QADApZ,KAAKoZ,IAAuC,QAAhCwF,EAAKzF,EAAKA,EAAK5X,OAAS,UAAuB,IAAPqd,EAAgBA,EAAK,QAEjF5e,KAAK8Z,YAAa,GAEtB9Z,KAAKY,MAAQ8R,EACb1S,KAAKgK,KAAO,EAChB,CAMA,QAAAyT,GACI,MAAM,KAAEtE,EAAI,KAAEnP,GAAShK,KAKvB,GAFAA,KAAKY,MAAQ8R,EACb1S,KAAKgK,KAAO,GACC,KAATA,EAGA,OAFAhK,KAAK2T,KAAK,+BACV3T,KAAK4D,MAAQ,OAGjB,MAAMoX,EAAUhb,KAAK6e,gBACrB,IAAIvd,EAAI6X,EAAK5X,OACb,KAAOD,KAAM,GAAG,CACZ,MAAM8X,EAAMpZ,KAAKoZ,IAAMD,EAAK3V,MAG5B,GAFAxD,KAAKqZ,MAAQD,EAAI7D,GACjByF,SAAkDA,EAAQ5B,GACtDA,EAAIpP,OAASA,EACb,MAEJhK,KAAK2T,KAAK,wBACd,CACU,IAANrS,EACAtB,KAAK8Z,YAAa,EAEbxY,EAAI,IACTtB,KAAK2T,KAAK,0BAA0B3J,MACpChK,KAAK4D,MAAQ,KAAKoG,KAE1B,CAQA,WAAA6S,CAAY5D,GAER,GAAkB,MAAdA,EAAO,GAAY,CACnB,MAAM6F,EAAU9e,KAAK4a,SAAS3B,GAC9B,YAAgB9Y,IAAZ2e,EACOA,GAEX9e,KAAK2T,KAAK3T,KAAK6T,OAAOoF,GAAU,oBAC5B,wCACG,IAAIA,KACf,CACA,IAAI8F,EAAMC,IAQV,MAPkB,MAAd/F,EAAO,IAAc,iBAAiBhP,KAAKgP,GAC3C8F,EAAM7b,SAAS+V,EAAOzU,MAAM,GAAI,IAE3B,YAAYyF,KAAKgP,KACtB8F,EAAM7b,SAAS+V,EAAOzU,MAAM,GAAI,KAG/BxE,KAAKmR,OAAO4N,GAIV7c,OAAOqa,cAAcwC,IAHxB/e,KAAK2T,KAAK,+BACH,IAAIsF,KAGnB,iCChgEJ7X,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ+a,6BAA0B,EAClC,MAAMC,EAAoB,EAAQ,OAOlC,MAAMD,UAAgCC,EAAkBC,SAKpD,WAAAnQ,CAAYoQ,GACRC,QACArf,KAAKsf,UAAY,EACjBtf,KAAKuf,UAAW,EAChBvf,KAAKmL,OAASiU,EAAOI,WACzB,CAOA,WAAMC,GAGF,GAAIzf,KAAKuf,SAEL,YADAvf,KAAKuD,KAAK,MAGdvD,KAAK0f,YAAc1f,KAAKmL,OAAOwU,OAC/B,MAAMC,QAAa5f,KAAK0f,mBAEjB1f,KAAK0f,YACRE,EAAKvZ,MAAQrG,KAAKuf,SAClBvf,KAAKuD,KAAK,OAGVvD,KAAKsf,WAAaM,EAAK1f,MAAMqB,OAC7BvB,KAAKuD,KAAKqc,EAAK1f,OAEvB,CAKA,2BAAM2f,GACE7f,KAAK0f,mBACC1f,KAAK0f,WAEnB,CAIA,WAAMnE,SACIvb,KAAK8f,gBACf,CACA,oBAAMA,GACF9f,KAAKuf,UAAW,QACVvf,KAAK6f,8BACL7f,KAAKmL,OAAO4U,aACtB,EAEJ7b,EAAQ+a,wBAA0BA,0BC/DlC,MAAM,gBAAEe,EAAe,YAAEC,GACL,oBAAT/W,KAAuBA,KACZ,oBAAXgX,OAAyBA,YAChB/f,EAGpB8D,EAAOC,QAAU8b,EACjB/b,EAAOC,QAAQ+b,YAAcA,EAC7Bhc,EAAOC,QAAP,QAAyB8b,8BCXzB5e,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IAWtDgE,EAAA,QAJA,SAAwBkb,GACpB,MAAMe,EAAQ,GACd,OAR2BC,EAQEhB,EAAOrE,GAAG,QAAQ6E,GAAQO,EAAM5c,KAAKqc,KARhC/b,EAQwCsc,EAPnE,IAAIta,SAAQ,CAACC,EAASC,KACzBqa,EAAMrF,GAAG,OAAO,IAAMjV,EAAQjC,KAC9Buc,EAAMrF,GAAG,QAAShV,EAAO,IAHjC,IAA+Bqa,EAAOvc,CAStC,kBCVA,MAAMwc,EAAwB,EAAQ,OAChCC,EAAW,EAAQ,OACnBC,EAAiB,EAAQ,OACzBC,EAAoB,EAAQ,OAE5BC,EAAc,EAAQ,OAE5Bxc,EAAOC,QAAU,CACbmc,wBACAC,WACAC,iBACAC,oBAEAC,gCCbJ,IAAIC,EAAgB,EAAQ,OACxBC,EAAyBD,EAAcC,uBACvCC,EAA0BF,EAAcE,wBAyB5C3c,EAAOC,QAtBP,cAAoCyc,EAEhC,WAAA3R,CAAa6R,EAAMC,EAAUC,EAASja,GAElCuY,MAAMwB,EAAM/Z,GAEZ9G,KAAK8gB,SAAWA,EAChB9gB,KAAK+gB,QAAUA,CACnB,CAEA,kBAAAC,CAAoBC,GAEhB,OAAO,IAAIL,EAAwB5gB,KAAK8gB,SAASG,GAAW,CAAEC,UAAW,CAACC,EAAW9a,EAAM9C,KAEvF,IAAIM,EAAS7D,KAAK+gB,QAAQE,EAAUE,GACrB,OAAXtd,GACAN,EAAKM,GACTwC,GAAM,GAEd,oBCxBJ,IAAIqa,EAAgB,uBAmHpBzc,EAAOC,QAhHP,cAAuBwc,EAEnB,WAAA1R,CAAa6R,EAAMO,EAAOC,EAASN,GAE/B1B,QAEArf,KAAKshB,mBAAoB,EACzBthB,KAAK6gB,KAAOA,EACZ7gB,KAAKohB,MAAQA,EACbphB,KAAKqhB,QAAUA,EACfrhB,KAAK+gB,QAAUA,EAEf/gB,KAAKuhB,QAAU,IAAIC,IAEnBxhB,KAAKgE,MAAW,KAChBhE,KAAKyhB,QAAW,GAChBzhB,KAAK0hB,SAAW,EAEhB1hB,KAAK6gB,KAAK9F,GAAG,SAAU5X,GAAUnD,KAAK2hB,QAAQxe,KAC9CnD,KAAKohB,MAAMrG,GAAG,SAAU5X,GAAUnD,KAAK2hB,QAAQxe,KAE/CnD,KAAK4hB,UAAW,EAEhB5hB,KAAK6gB,KAAK9F,GAAG,MAEb,WAEI/a,KAAK4hB,UAAW,EAChB5hB,KAAKohB,MAAMrG,GAAG,YAAY,IAAM/a,KAAK4hB,UAAW,IAChD5hB,KAAKohB,MAAMrG,GAAG,OAAO,KAAa/a,KAAK6hB,cAAc7hB,KAAK8hB,MAAM,GACpE,EAPiCC,KAAK/hB,OAStCA,KAAK+a,GAAG,eAAgBiH,IAEF,SAAdA,GAEAhiB,KAAKiiB,0BACT,IAEAjiB,KAAK6gB,KAAKe,UACV5hB,KAAKiiB,2BACTjiB,KAAK6gB,KAAK9F,GAAG,YAAY,IAAM/a,KAAKiiB,4BACxC,CAEA,UAAAJ,GAEI,OAAQ7hB,KAAKohB,MAAMc,OAASliB,KAAK0hB,SAAW1hB,KAAKyhB,QAAQlgB,MAC7D,CAEA,IAAAugB,GAEIzC,MAAMyC,OACN9hB,KAAK6gB,KAAKc,UACV3hB,KAAKohB,MAAMO,SACf,CAEA,IAAAhC,GAII,IAFA3f,KAAKiiB,6BAEO,CACR,GAAIjiB,KAAKkiB,QAAUliB,KAAK4hB,SACpB,OAAO,KAEX,KAAO5hB,KAAK0hB,SAAW1hB,KAAKyhB,QAAQlgB,QACpC,CACI,IAAI4gB,EAAOniB,KAAKyhB,QAAQzhB,KAAK0hB,YACzB7d,EAAS7D,KAAK+gB,QAAQoB,EAAMniB,KAAKgE,OACrC,GAAe,OAAXH,EACA,OAAOA,CACf,CAOA,GALK7D,KAAK6hB,cACN7hB,KAAK8hB,OAET9hB,KAAKgE,MAAQhE,KAAKohB,MAAMzB,OAEL,OAAf3f,KAAKgE,MAGL,OADAhE,KAAK4hB,UAAW,EACT,KAGX,IAAIQ,EAAOpiB,KAAKqhB,QAAQrhB,KAAKgE,OAC7BhE,KAAKyhB,QAAUzhB,KAAKuhB,QAAQja,IAAI8a,IAAS,GACzCpiB,KAAK0hB,SAAW,CACpB,CACJ,CAEA,wBAAAO,GACSjiB,KAAKshB,oBAENthB,KAAKshB,mBAAoB,EACzBthB,KAAKqiB,mBAEb,CAEA,gBAAAA,GAEIriB,KAAK6gB,KAAK9F,GAAG,OAEb,SAAiBoH,GAEb,IAAIC,EAAOpiB,KAAKqhB,QAAQc,GACnBniB,KAAKuhB,QAAQpU,IAAIiV,IAClBpiB,KAAKuhB,QAAQzV,IAAIsW,EAAM,IACjBpiB,KAAKuhB,QAAQja,IAAI8a,GACvB7e,KAAK4e,EACb,EAT6BJ,KAAK/hB,MAUtC,oBChHJ,MAAM,uBAAE2gB,EAAsB,wBAAEC,EAAuB,aAAE0B,GAAiB,EAAQ,OAgClFre,EAAOC,QA7BP,cAA6Byc,EAEzB,WAAA3R,CAAa6R,EAAMO,EAAOL,EAASja,GAE/BuY,MAAMwB,EAAM/Z,GAEZ9G,KAAKohB,MAAQA,EACbphB,KAAK+gB,QAAUA,EACf/gB,KAAK+a,GAAG,OAAO,IAAM/a,KAAKohB,MAAM7F,SACpC,CAEA,IAAAuG,GAEIzC,MAAMyC,OACNQ,GAAa,IAAMtiB,KAAKohB,MAAMO,WAClC,CAEA,kBAAAX,CAAoBC,GAEhB,OAAO,IAAIL,EAAwB5gB,KAAKohB,MAAM3S,QAAS,CAAEyS,UAAW,CAACC,EAAW9a,EAAM9C,KAElF,IAAIM,EAAS7D,KAAK+gB,QAAQE,EAAUE,GACrB,OAAXtd,GACAN,EAAKM,GACTwC,GAAM,GAEd,oBC7BJ,IAAIqa,EAAgB,uBAyHpBzc,EAAOC,QAtHP,cAAgCwc,EAE5B,WAAA1R,CAAa6R,EAAMO,EAAOC,EAASN,GAE/B1B,QAEArf,KAAK6gB,KAAQA,EACb7gB,KAAKohB,MAAQA,EAEbphB,KAAKqhB,QAAUA,EACfrhB,KAAK+gB,QAAUA,EAEf/gB,KAAKuiB,UAAW,EAChBviB,KAAKuhB,QAAW,IAAIC,IACpBxhB,KAAKwiB,SAAW,IAAIhB,IAEpBxhB,KAAK+a,GAAG,OAAO,IAAM/a,KAAKyiB,aAE1BziB,KAAKgE,MAAW,KAChBhE,KAAKyhB,QAAW,GAChBzhB,KAAK0hB,SAAW,GAEZ1hB,KAAK6gB,KAAKe,UAAY5hB,KAAKohB,MAAMQ,YAEjC5hB,KAAK4hB,UAAW,GAGpB5hB,KAAK6gB,KAAK9F,GAAG,SAAU5X,GAAUnD,KAAK2hB,QAAQxe,KAC9CnD,KAAKohB,MAAMrG,GAAG,SAAU5X,GAAUnD,KAAK2hB,QAAQxe,KAE/CnD,KAAK6gB,KAAK9F,GAAG,YAAY,IAAM/a,KAAK4hB,UAAW,IAC/C5hB,KAAKohB,MAAMrG,GAAG,YAAY,IAAM/a,KAAK4hB,UAAW,IAGhD5hB,KAAK6gB,KAAK9F,GAAI,OAAO,KAAa/a,KAAK6hB,cAAc7hB,KAAK8hB,MAAM,IAChE9hB,KAAKohB,MAAMrG,GAAG,OAAO,KAAa/a,KAAK6hB,cAAc7hB,KAAK8hB,MAAM,GACpE,CAEA,UAAAD,GAMI,OAAQ7hB,KAAK6gB,KAAKqB,QAAWliB,KAAKohB,MAAMc,SAAYliB,KAAKyhB,SAAWzhB,KAAK0hB,SAAW1hB,KAAKyhB,QAAQlgB,MACrG,CAEA,QAAAkhB,GAGIziB,KAAKuhB,QAAU,KACfvhB,KAAKwiB,SAAW,KAChBxiB,KAAKyhB,QAAU,IACnB,CAEA,IAAAK,GAEIzC,MAAMyC,OACN9hB,KAAK6gB,KAAKc,UACV3hB,KAAKohB,MAAMO,SACf,CAEA,IAAAhC,GAEI,OAAW,CACP,GAAI3f,KAAKkiB,MACL,OAAO,KAEX,KAAOliB,KAAK0hB,SAAW1hB,KAAKyhB,QAAQlgB,QACpC,CACI,IAAI4gB,EAAOniB,KAAKyhB,QAAQzhB,KAAK0hB,YACzB7d,EAAS7D,KAAKuiB,SAAWviB,KAAK+gB,QAAQ/gB,KAAKgE,MAAOme,GAAQniB,KAAK+gB,QAAQoB,EAAMniB,KAAKgE,OACtF,GAAe,OAAXH,EACA,OAAOA,CACf,CAEK7D,KAAK6hB,cACN7hB,KAAK8hB,OAET,IAAIK,EAAO,KAEX,IAAK,IAAI9gB,EAAI,EAAGA,EAAI,IAEhB8gB,EAAOniB,KAAKuiB,SAAWviB,KAAKohB,MAAMzB,OAAS3f,KAAK6gB,KAAKlB,OACrD3f,KAAKuiB,UAAYviB,KAAKuiB,SAGT,OAATJ,KANiB9gB,GAUzB,GAAIrB,KAAKqG,MAAiB,OAAT8b,EAGb,OADAniB,KAAK4hB,UAAW,EACT,KAGX,IAAIQ,EAAOpiB,KAAKqhB,QAAQc,GAExB,GAAIniB,KAAKuiB,UAAYviB,KAAKohB,MAAM/a,KAC5BrG,KAAKuhB,QAAU,UACZ,GAAIvhB,KAAK6gB,KAAKxa,KACjBrG,KAAKwiB,SAAW,SACb,CACH,IAAIrd,EAAMnF,KAAKuiB,SAAWviB,KAAKuhB,QAAUvhB,KAAKwiB,SACzCrd,EAAIgI,IAAIiV,IACTjd,EAAI2G,IAAIsW,EAAM,IACRjd,EAAImC,IAAI8a,GACd7e,KAAK4e,EACb,CAEAniB,KAAKgE,MAAQme,EACbniB,KAAKyhB,SAAWzhB,KAAKuiB,SAAWviB,KAAKwiB,SAAWxiB,KAAKuhB,SAASja,IAAI8a,IAAS,GAC3EpiB,KAAK0hB,SAAW,CACpB,CACJ,oBCtHJ,IAAIhB,EAAgB,uBA6DpBzc,EAAOC,QA1DP,cAA4Bwc,EAExB,WAAA1R,CAAa0T,GAETrD,QAEK1U,MAAMC,QAAQ8X,KACfA,EAAU/X,MAAMjJ,UAAU8C,MAAMmE,KAAKga,YAEzC3iB,KAAK0iB,QAAUA,EAEf,IAAK,IAAItD,KAAUsD,EAEftD,EAAOrE,GAAG,YAAY,IAAM/a,KAAK0D,KAAK,cACtC0b,EAAOrE,GAAG,OAAO,IAAM/a,KAAK4iB,cAAcxD,KAGlB,IAAxBpf,KAAK0iB,QAAQnhB,QACbvB,KAAKub,QAETvb,KAAK6iB,IAAM7iB,KAAK0iB,QAAQnhB,OAAO,CACnC,CAEA,aAAAqhB,CAAexD,GAEX,IAAIyD,EAAM7iB,KAAK0iB,QAAQ5Y,QAAQsV,GAC3ByD,EAAM,IAGV7iB,KAAK0iB,QAAQI,OAAOD,EAAK,GACrB7iB,KAAK6iB,KAAO7iB,KAAK0iB,QAAQnhB,UACvBvB,KAAK6iB,IAEiB,IAAxB7iB,KAAK0iB,QAAQnhB,QACbvB,KAAK8hB,OACb,CAEA,KAAAvG,GAEI8D,MAAM9D,QACN,IAAK,IAAI6D,KAAUpf,KAAK0iB,QACpBtD,EAAO7D,OACf,CAEA,IAAAoE,GAEI,IAAK,IAAIoD,EAAW,EAAGA,EAAW/iB,KAAK0iB,QAAQnhB,SAAUwhB,EACzD,CACI/iB,KAAK6iB,KAAO7iB,KAAK6iB,IAAM,GAAK7iB,KAAK0iB,QAAQnhB,OACzC,IAAI4gB,EAAOniB,KAAK0iB,QAAQ1iB,KAAK6iB,KAAKlD,OAClC,GAAa,OAATwC,EACA,OAAOA,CACf,CAEA,OAAO,IACX,oBC3DJle,EAAOC,QAAU,SAAS8e,GAO1B,MAAMC,EAAW,IAAKC,EAAAA,MAA2C,YAC3DC,EAAiI,IAAKD,EAAAA,OAA6B,KAAE,CACzK,KAAQ,mIAEJE,EAAyK,IAAKF,EAAAA,OAA6B,KAAE,CACjN,KAAQ,2KAEJG,EAA0J,IAAKH,EAAAA,OAA6B,KAAE,CAClM,KAAQ,4JAEJI,EAAiJ,IAAKJ,EAAAA,OAA6B,KAAE,CACzL,KAAQ,mJAEJK,EAAyL,IAAKL,EAAAA,OAA6B,KAAE,CACjO,KAAQ,2LAEJM,EAAoJ,IAAKN,EAAAA,OAA6B,KAAE,CAC5L,KAAQ,sJAEJO,EAAmL,IAAKP,EAAAA,OAA6B,KAAE,CAC3N,KAAQ,qLAEJQ,EAA+M,IAAKR,EAAAA,OAA6B,KAAE,CACvP,KAAQ,iNAEJS,EAA8K,IAAKT,EAAAA,OAA6B,KAAE,CACtN,KAAQ,gLAEJU,EAA6K,IAAKV,EAAAA,OAA6B,KAAE,CACrN,KAAQ,+KAEJW,EAAsL,IAAKX,EAAAA,OAA6B,KAAE,CAC9N,KAAQ,wLAEJY,EAA0J,IAAKZ,EAAAA,OAA6B,KAAE,CAClM,KAAQ,4JAEJa,EAAiK,IAAKb,EAAAA,OAA6B,KAAE,CACzM,KAAQ,mKAEJc,EAAgK,IAAKd,EAAAA,OAA0D,mBAAE,CACrO,KAAQ,kKAEJe,EAA0J,IAAKf,EAAAA,OAA6B,KAAE,CAClM,KAAQ,4JAEJgB,EAAgL,IAAKhB,EAAAA,OAA6B,KAAE,CACxN,KAAQ,kLAEJiB,EAA2I,IAAKjB,EAAAA,OAA6B,KAAE,CACnL,KAAQ,6IAEJkB,EAAgK,IAAKlB,EAAAA,OAA6B,KAAE,CACxM,KAAQ,kKAEJmB,EAAiI,IAAKnB,EAAAA,OAA6B,KAAE,CACzK,KAAQ,mIAEJoB,EAAkI,IAAKpB,EAAAA,OAA6B,KAAE,CAC1K,KAAQ,oIAEJqB,EAAmL,IAAKrB,EAAAA,OAA6B,KAAE,CAC3N,KAAQ,qLAEJsB,EAAgK,IAAKtB,EAAAA,OAA6B,KAAE,CACxM,KAAQ,kKAEJuB,EAAuJ,IAAKvB,EAAAA,OAA6B,KAAE,CAC/L,KAAQ,yJAEJwB,EAA6K,IAAKxB,EAAAA,OAA6B,KAAE,CACrN,KAAQ,+KAEJyB,EAAmM,IAAKzB,EAAAA,OAA6B,KAAE,CAC3O,KAAQ,qMAEJ0B,EAAmN,IAAK1B,EAAAA,OAA6B,KAAE,CAC3P,KAAQ,qNAgBJ2B,GAdmE,IAAK3B,EAAAA,OAAsG,wCAAE,CACpL,oBAAuB,CAAC,QAAU,qCAAqC,SAAW,wCAAwC,YAAc,6CAA6C,kBAAoB,+CAA+C,QAAU,qCAAqC,yBAA2B,sDAAsD,mBAAqB,gDAAgD,MAAQ,2BAA2B,uBAAyB,oDAAoD,SAAW,0BAA0B,gBAAkB,uCAAuC,uBAAyB,yCAAyC,iBAAmB,8CAA8C,eAAiB,sCAAsC,eAAiB,sCAAsC,uBAAyB,gDAAgD,YAAc,kCAAkC,gBAAkB,6CAA6C,QAAU,qCAAqC,IAAM,qBAAqB,QAAU,qCAAqC,YAAc,yCAAyC,eAAiB,4CAA4C,SAAW,yCAAyC,mBAAqB,kDAAkD,QAAU,sDAAsD,SAAW,+CAA+C,kBAAoB,mDAC1iD,KAAQ,mEACR,IAAOE,IAE2D,IAAKF,EAAAA,OAA4F,mCAAE,CACrK,OAAUD,EACV,KAAQ,8DACR,IAAOG,IAEoE,IAAKF,EAAAA,OAA6G,2CAAE,CAC/L,KAAQ,uEACR,IAAOE,IAEqE,IAAKF,EAAAA,OAA+G,4CAAE,CAClM,KAAQ,wEACR,IAAOE,KAEH0B,EAAyD,IAAK5B,EAAAA,OAAsE,yBAAE,CAC1I,KAAQ,yDACR,IAAOE,IAMH2B,GAJiD,IAAK7B,EAAAA,OAAmE,uBAAE,CAC/H,KAAQ,iDACR,IAAOG,IAEiD,IAAKH,EAAAA,OAA+C,cAAE,CAC9G,KAAQ,oDACR,IAAOG,KAMH2B,GAJ8C,IAAK9B,EAAAA,OAA6D,oBAAE,CACtH,KAAQ,8CACR,IAAOI,IAE8C,IAAKJ,EAAAA,OAA+C,cAAE,CAC3G,KAAQ,iDACR,IAAOI,KAcH2B,GAZoE,IAAK/B,EAAAA,OAAuG,wCAAE,CACtL,KAAQ,oEACR,IAAOK,IAEiE,IAAKL,EAAAA,OAAuG,wCAAE,CACtL,KAAQ,oEACR,IAAOK,IAEgE,IAAKL,EAAAA,OAAqG,uCAAE,CACnL,KAAQ,mEACR,IAAOK,IAEkE,IAAKL,EAAAA,OAAyG,yCAAE,CACzL,KAAQ,qEACR,IAAOK,KAMH2B,GAJ0E,IAAKhC,EAAAA,OAAmH,8CAAE,CACxM,KAAQ,0EACR,IAAOK,IAE4D,IAAKL,EAAAA,OAAsE,yBAAE,CAChJ,cAAgB,EAChB,KAAQ,+DACR,IAAOK,KAWH4B,GATiD,IAAKjC,EAAAA,MAAmE,uBAAE,CAC/H,SAAY,CAAC,QAAU,+BAA+B,cAAc,+BAA+B,QAAU,+BAA+B,GAAK,4BAA4B,KAAO,mCAAmC,QAAU,4BAA4B,KAAO,6BAA6B,IAAM,2CAA2C,IAAM,iCAAiC,IAAM,8CAA8C,KAAO,wCAAwC,OAAS,qBAAqB,KAAO,kCAAkC,IAAM,qCACziB,KAAQ,iDACR,IAAOM,IAE+C,IAAKN,EAAAA,OAAqE,wBAAE,CAClI,KAAQ,kDACR,IAAOM,IAE+C,IAAKN,EAAAA,OAA+C,cAAE,CAC5G,KAAQ,kDACR,IAAOM,KA6CH4B,GA3C0D,IAAKlC,EAAAA,OAAoF,+BAAE,CACzJ,oBAAuB,CAAC,mBAAmB,GAC3C,iBAAoB,CAAC,mBAAmB,0DACxC,KAAQ,0DACR,IAAOO,IAEyD,IAAKP,EAAAA,OAAwF,iCAAE,CAC/J,oBAAuB,CAAC,OAAS,IACjC,iBAAoB,CAAC,OAAS,4DAC9B,KAAQ,4DACR,IAAOO,IAEsD,IAAKP,EAAAA,OAA+F,oCAAE,CACnK,oBAAuB,CAAC,WAAW,KACnC,iBAAoB,CAAC,WAAW,mDAChC,KAAQ,yDACR,IAAOO,IAE6D,IAAKP,EAAAA,OAA+F,oCAAE,CAC1K,oBAAuB,CAAC,4BAA4B,KACpD,iBAAoB,CAAC,4BAA4B,mDACjD,KAAQ,gEACR,IAAOO,IAE6D,IAAKP,EAAAA,OAA+F,oCAAE,CAC1K,oBAAuB,CAAC,iCAAiC,IACzD,iBAAoB,CAAC,iCAAiC,mDACtD,KAAQ,gEACR,IAAOO,IAEwD,IAAKP,EAAAA,OAAsF,gCAAE,CAC5J,YAAe,GACf,oBAAuB,CAAC,MAAQ,IAChC,iBAAoB,CAAC,MAAQ,2DAC7B,KAAQ,2DACR,IAAOO,IAEuD,IAAKP,EAAAA,OAAoF,+BAAE,CACzJ,oBAAuB,CAAC,KAAO,IAC/B,iBAAoB,CAAC,KAAO,0DAC5B,KAAQ,0DACR,IAAOO,IAE+D,IAAKP,EAAAA,OAA+C,cAAE,CAC5H,KAAQ,kEACR,IAAOO,KAEH4B,EAAkE,IAAKnC,EAAAA,OAAgE,sBAAE,CAC7I,MAAS,aACT,KAAQ,kEACR,IAAOO,IAEH6B,EAAwE,IAAKpC,EAAAA,OAAgE,sBAAE,CACnJ,MAAS,mBACT,KAAQ,wEACR,IAAOO,IAEH8B,EAAuE,IAAKrC,EAAAA,OAAmD,gBAAE,CACrI,MAAS,eACT,KAAQ,MACR,cAAgB,EAChB,KAAQ,uEACR,IAAOQ,IAMH8B,GAJgE,IAAKtC,EAAAA,OAA+F,oCAAE,CAC1K,KAAQ,gEACR,IAAOS,IAEyD,IAAKT,EAAAA,OAA+C,cAAE,CACtH,KAAQ,4DACR,IAAOS,KAMH8B,GAJqE,IAAKvC,EAAAA,OAAyG,yCAAE,CACzL,KAAQ,qEACR,IAAOU,IAEwD,IAAKV,EAAAA,OAAmD,gBAAE,CACzH,MAAS,WACT,KAAQ,MACR,cAAgB,EAChB,KAAQ,2DACR,IAAOU,KAkBH8B,GAhBuE,IAAKxC,EAAAA,OAA8G,4CAAE,CAChM,KAAQ,uEACR,IAAOW,IAE+D,IAAKX,EAAAA,OAAoG,uCAAE,CACjL,KAAQ,kEACR,IAAOW,IAE4D,IAAKX,EAAAA,OAA8F,oCAAE,CACxK,KAAQ,+DACR,IAAOW,IAE+D,IAAKX,EAAAA,OAAoG,uCAAE,CACjL,KAAQ,kEACR,IAAOW,IAE2D,IAAKX,EAAAA,OAAgE,sBAAE,CACzI,MAAS,WACT,KAAQ,8DACR,IAAOW,KAuBH8B,GArB+C,IAAKzC,EAAAA,OAA+D,qBAAE,CACzH,oBAAuB,CAAC,sBAAsB,EAAE,wBAAwB,GAAI,mBAAmB,IAAK,UAAU,IAAK,cAAc,IACjI,iBAAoB,CAAC,sBAAsB,uCAAuC,wBAAwB,yCAAyC,mBAAmB,oCAAoC,UAAU,kCAAkC,cAAc,uCACpQ,KAAQ,+CACR,IAAOY,IAEgD,IAAKZ,EAAAA,OAAuE,yBAAE,CACrI,0BAA6B,EAC7B,oBAAuB,CAAC,sBAAsB,GAC9C,iBAAoB,CAAC,sBAAsB,wCAC3C,cAAiB,GACjB,KAAQ,mDACR,IAAOY,IAEgD,IAAKZ,EAAAA,OAAuE,yBAAE,CACrI,oBAAuB,CAAC,cAAc,EAAE,kBAAkB,IAC1D,iBAAoB,CAAC,cAAc,sCAAsC,kBAAkB,+CAC3F,cAAiB,GACjB,KAAQ,mDACR,IAAOY,IAEsD,IAAKZ,EAAAA,OAA+C,cAAE,CACnH,KAAQ,yDACR,IAAOY,KAEH8B,EAAyD,IAAK1C,EAAAA,OAAgE,sBAAE,CACpI,MAAS,aACT,KAAQ,yDACR,IAAOY,IAEH+B,EAA+D,IAAK3C,EAAAA,OAAgE,sBAAE,CAC1I,MAAS,mBACT,KAAQ,+DACR,IAAOY,IAMHgC,GAJ2D,IAAK5C,EAAAA,OAAqF,+BAAE,CAC3J,KAAQ,2DACR,IAAOa,IAEoD,IAAKb,EAAAA,OAA+C,cAAE,CACjH,KAAQ,uDACR,IAAOa,KAMHgC,GAJqD,IAAK7C,EAAAA,OAA2E,2BAAE,CAC3I,KAAQ,qDACR,IAAOc,IAEmD,IAAKd,EAAAA,OAAmD,gBAAE,CACpH,MAAS,eACT,KAAQ,MACR,cAAgB,EAChB,KAAQ,sDACR,IAAOc,KAEHgC,EAAoD,IAAK9C,EAAAA,OAA+C,cAAE,CAC9G,KAAQ,oDACR,IAAOe,IAEHgC,EAA4D,IAAK/C,EAAAA,OAA+C,cAAE,CACtH,KAAQ,4DACR,IAAOgB,IAEHgC,EAA+C,IAAKhD,EAAAA,MAAmF,+BAAE,CAC7I,UAAa,GACb,aAAgB,EAChB,WAAc,EACd,SAAY,GACZ,KAAQ,+CACR,IAAOiB,IAEHgC,EAAoP,IAAKjD,EAAAA,OAAsE,+BAAE,CACrU,KAAQ,oPACR,IAAOkB,IAEHgC,EAAsD,IAAKlD,EAAAA,OAA6C,aAAE,CAC9G,KAAQ,sDACR,IAAOkB,IAEHiC,EAAgM,IAAKnD,EAAAA,OAAsE,+BAAE,CACjR,KAAQ,gMACR,IAAOkB,IAEHkC,GAA0L,IAAKpD,EAAAA,OAAsE,+BAAE,CAC3Q,KAAQ,0LACR,IAAOkB,IAEHmC,GAA2C,IAAKrD,EAAAA,OAAmD,gBAAE,CACzG,MAAS,OACT,KAAQ,MACR,cAAgB,EAChB,KAAQ,2CACR,IAAOoB,IAEHkC,GAA6D,IAAKtD,EAAAA,OAAgE,sBAAE,CACxI,MAAS,gBACT,KAAQ,6DACR,IAAOqB,IAEHkC,GAAsD,IAAKvD,EAAAA,OAA+C,cAAE,CAChH,KAAQ,sDACR,IAAOsB,IAEHkC,GAAmD,IAAKxD,EAAAA,OAA+C,cAAE,CAC7G,KAAQ,mDACR,IAAOuB,IAEHkC,GAA2D,IAAKzD,EAAAA,OAAgE,sBAAE,CACtI,cAAgB,EAChB,MAAS,WACT,KAAQ,2DACR,IAAOwB,IAEHkC,GAAmE,IAAK1D,EAAAA,OAA+C,cAAE,CAC7H,KAAQ,mEACR,IAAOyB,IAEHkC,GAAyE,IAAK3D,EAAAA,OAA+C,cAAE,CACnI,KAAQ,yEACR,IAAO0B,IAYHkC,IAVoD,IAAK5D,EAAAA,OAAmE,oBAAE,CAClI,wBAA2BuC,EAC3B,KAAQ,oDACR,IAAOtB,IAEsD,IAAKjB,EAAAA,OAA4E,wBAAE,CAChJ,wBAA2BuC,EAC3B,KAAQ,yDACR,IAAOtB,IAE+C,IAAKjB,EAAAA,OAA+D,kBAAE,CAC5H,wBAA2BuC,EAC3B,KAAQ,kDACR,IAAOtB,KAEH4C,GAA4D,IAAK7D,EAAAA,OAAiF,2BAAE,CACxJ,wBAA2BuC,EAC3B,KAAQ,4DACR,IAAOtB,IAEH6C,GAAyD,IAAK9D,EAAAA,OAA2E,wBAAE,CAC/I,wBAA2BuC,EAC3B,KAAQ,yDACR,IAAOtB,IA2KH8C,IAzKkD,IAAK/D,EAAAA,OAAoE,uBAAE,CACjI,wBAA2BuC,EAC3B,KAAQ,kDACR,IAAOtB,IAEqD,IAAKjB,EAAAA,OAA+E,4BAAE,CAClJ,wBAA2BuC,EAC3B,KAAQ,wDACR,IAAOtB,IAEkE,IAAKjB,EAAAA,OAA0E,0BAAE,CAC1J,iBAAmB,EACnB,UAAY,EACZ,wBAA2BuC,EAC3B,KAAQ,qEACR,IAAOtB,IAE+D,IAAKjB,EAAAA,OAA0E,0BAAE,CACvJ,iBAAmB,EACnB,UAAY,EACZ,wBAA2BuC,EAC3B,KAAQ,kEACR,IAAOtB,IAEoE,IAAKjB,EAAAA,OAA0E,0BAAE,CAC5J,iBAAmB,EACnB,UAAY,EACZ,wBAA2BuC,EAC3B,KAAQ,uEACR,IAAOtB,IAEiE,IAAKjB,EAAAA,OAA0E,0BAAE,CACzJ,iBAAmB,EACnB,UAAY,EACZ,wBAA2BuC,EAC3B,KAAQ,oEACR,IAAOtB,IAEyD,IAAKjB,EAAAA,MAAsF,gCAAE,CAC7J,wBAA2BuC,EAC3B,KAAQ,4DACR,IAAOtB,IAEsD,IAAKjB,EAAAA,OAAkF,8BAAE,CACtJ,qBAAwByC,EACxB,0BAA6BC,EAC7B,gCAAmCC,EACnC,KAAQ,yDACR,IAAOpC,IAE+C,IAAKP,EAAAA,OAAqE,wBAAE,CAClI,uBAA0B6C,EAC1B,KAAQ,kDACR,IAAO/B,IAE+C,IAAKd,EAAAA,OAA8E,4BAAE,CAC3I,uBAA0B6C,EAC1B,KAAQ,kDACR,IAAO/B,IAEqD,IAAKd,EAAAA,OAAiF,8BAAE,CACpJ,uBAA0B6C,EAC1B,KAAQ,wDACR,IAAO/B,IAEoD,IAAKd,EAAAA,OAAwF,iCAAE,CAC1J,qBAAwB6B,EACxB,kBAAqBC,EACrB,uBAA0Be,EAC1B,KAAQ,uDACR,IAAO/B,IAEgD,IAAKd,EAAAA,OAAgF,6BAAE,CAC9I,uBAA0B6C,EAC1B,KAAQ,mDACR,IAAO/B,IAEmD,IAAKd,EAAAA,OAA6E,4BAAE,CAC9I,uBAA0B6C,EAC1B,KAAQ,sDACR,IAAO/B,IAEmD,IAAKd,EAAAA,OAAsF,gCAAE,CACvJ,qBAAwB6B,EACxB,UAAa,IACb,uBAA0BgB,EAC1B,KAAQ,sDACR,IAAO/B,IAEiD,IAAKd,EAAAA,OAAyE,0BAAE,CACxI,uBAA0B6C,EAC1B,KAAQ,oDACR,IAAO/B,IAEiD,IAAKd,EAAAA,OAAyE,0BAAE,CACxI,8BAAiCwC,EACjC,uBAA0BK,EAC1B,KAAQ,oDACR,IAAO/B,IAEoD,IAAKd,EAAAA,OAA8E,4BAAE,CAChJ,8BAAiCwC,EACjC,uBAA0BK,EAC1B,KAAQ,uDACR,IAAO/B,IAEoD,IAAKd,EAAAA,OAA8E,4BAAE,CAChJ,uBAA0B6C,EAC1B,KAAQ,uDACR,IAAO/B,IAEqD,IAAKd,EAAAA,OAAgF,6BAAE,CACnJ,uBAA0B6C,EAC1B,KAAQ,wDACR,IAAO/B,IAEoD,IAAKd,EAAAA,OAA8E,4BAAE,CAChJ,uBAA0B6C,EAC1B,KAAQ,uDACR,IAAO/B,IAEwD,IAAKd,EAAAA,OAAgF,0BAAE,CACtJ,oBAAuB4C,EACvB,uBAA0BC,EAC1B,KAAQ,2DACR,IAAO/B,IAE4D,IAAKd,EAAAA,OAA0G,0CAAE,CACpL,uBAA0B6C,EAC1B,KAAQ,+DACR,IAAO/B,IAEyD,IAAKd,EAAAA,OAAkF,2BAAE,CACzJ,oBAAuB4C,EACvB,uBAA0BC,EAC1B,KAAQ,4DACR,IAAO/B,IAEuD,IAAKd,EAAAA,OAA8E,yBAAE,CACnJ,oBAAuB4C,EACvB,uBAA0BC,EAC1B,KAAQ,0DACR,IAAO/B,IAEuD,IAAKd,EAAAA,OAA8E,yBAAE,CACnJ,oBAAuB4C,EACvB,4BAA+BG,EAC/B,uBAA0BF,EAC1B,KAAQ,0DACR,IAAO/B,IAEgD,IAAKd,EAAAA,OAAuE,yBAAE,CACrI,aAAgBgD,EAChB,uBAA0BH,EAC1B,KAAQ,mDACR,IAAO/B,IAEiD,IAAKd,EAAAA,OAAyE,0BAAE,CACxI,aAAgBgD,EAChB,uBAA0BH,EAC1B,KAAQ,oDACR,IAAO/B,IAEoD,IAAKd,EAAAA,OAA8E,4BAAE,CAChJ,aAAgBgD,EAChB,uBAA0BH,EAC1B,KAAQ,uDACR,IAAO/B,IAEyD,IAAKd,EAAAA,OAAkF,2BAAE,CACzJ,wBAA2BsC,EAC3B,aAAgBU,EAChB,wBAA2BT,EAC3B,KAAQ,4DACR,IAAOtB,KAEH+C,GAAuE,IAAKhE,EAAAA,OAA6G,2CAAE,CAC/L,oBAAsB,EACtB,cAAiB,GACjB,kBAAoB,EACpB,kBAAoB,EACpB,mBAAqB,EACrB,0BAA4B,EAC5B,KAAQ,uEACR,IAAOK,EACP,aAAgB,CAChB0B,KAcIkC,IAXuE,IAAKjE,EAAAA,OAA6G,2CAAE,CAC/L,UAAa,IACb,gBAAmBiD,EACnB,4BAA+BF,EAC/B,0BAA6BnB,EAC7B,KAAQ,uEACR,IAAO1B,EACP,aAAgB,CAChByB,KAG6C,IAAK3B,EAAAA,OAAoD,gBAAE,CACxG,qBAAwB8C,EACxB,6BAAgCZ,EAChC,8CAAiDC,EACjD,oDAAuDC,EACvD,uBAA0Bc,EAC1B,wBAA2B,SAC3B,gBAAkB,EAClB,KAAQ,yCACR,IAAOjD,KAEHiE,GAA0N,IAAKlE,EAAAA,OAAgF,oBAAE,CACrT,gBAAmBmD,EACnB,KAAQ,0NACR,IAAOhC,IAEHgD,GAA0M,IAAKnE,EAAAA,OAA0E,oBAAE,CAC/R,gBAAmBoD,GACnB,KAAQ,0MACR,IAAOjC,IAyFHiD,IAvF8D,IAAKpE,EAAAA,OAA2G,0CAAE,CACpL,aAAgBqD,GAChB,6BAAgCC,GAChC,gBAAkB,EAClB,cAAgB,EAChB,UAAa,KACb,WAAc,SACd,aAAgB,IAChB,KAAQ,8DACR,IAAO9C,IAEkD,IAAKR,EAAAA,OAA2E,2BAAE,CAC3I,6BAAgCsD,GAChC,uBAA0BT,EAC1B,KAAQ,qDACR,IAAO/B,IAEkD,IAAKd,EAAAA,OAA2E,2BAAE,CAC3I,6BAAgCsD,GAChC,uBAA0BT,EAC1B,KAAQ,qDACR,IAAO/B,IAEiD,IAAKd,EAAAA,OAAyE,0BAAE,CACxI,qBAAwB6B,EACxB,6BAAgCyB,GAChC,uBAA0BT,EAC1B,KAAQ,oDACR,IAAO/B,IAEoD,IAAKd,EAAAA,OAA+E,6BAAE,CACjJ,aAAgBgD,EAChB,6BAAgCM,GAChC,uBAA0BT,EAC1B,KAAQ,uDACR,IAAO/B,IAE+C,IAAKd,EAAAA,OAAqE,wBAAE,CAClI,6BAAgCsD,GAChC,uBAA0BT,EAC1B,KAAQ,kDACR,IAAO/B,IAEmD,IAAKd,EAAAA,OAA6E,4BAAE,CAC9I,6BAAgCsD,GAChC,uBAA0BT,EAC1B,KAAQ,sDACR,IAAO/B,IAEmD,IAAKd,EAAAA,OAA6E,4BAAE,CAC9I,qBAAuB,EACvB,6BAAgCsD,GAChC,4BAA+BP,EAC/B,uBAA0BF,EAC1B,KAAQ,sDACR,IAAO/B,IAEkD,IAAKd,EAAAA,OAA2E,2BAAE,CAC3I,6BAAgCsD,GAChC,KAAQ,qDACR,IAAOxC,IAE4D,IAAKd,EAAAA,OAA4F,kCAAE,CACtK,6BAAgCsD,GAChC,uBAA0BT,EAC1B,KAAQ,+DACR,IAAO/B,IAE6D,IAAKd,EAAAA,OAA8F,mCAAE,CACzK,6BAAgCsD,GAChC,uBAA0BT,EAC1B,KAAQ,gEACR,IAAO/B,IAE4D,IAAKd,EAAAA,OAA4F,kCAAE,CACtK,6BAAgCsD,GAChC,uBAA0BT,EAC1B,KAAQ,+DACR,IAAO/B,IAEgE,IAAKd,EAAAA,OAAoG,uCAAE,CAClL,oBAAuB4C,EACvB,6BAAgCU,GAChC,uBAA0BT,EAC1B,KAAQ,mEACR,IAAO/B,IAEoD,IAAKd,EAAAA,OAA+E,6BAAE,CACjJ,0BAA6B4B,EAC7B,mBAAsBK,EACtB,+BAAkCD,EAClC,uBAA0Ba,EAC1B,6BAAgCS,GAChC,KAAQ,uDACR,IAAOvC,KAiBHsD,IAfkD,IAAKrE,EAAAA,KAA+D,kBAAE,CAC5H,6BAAgCsD,GAChC,wBAA2Bf,EAC3B,KAAQ,kDACR,IAAOtB,IAEkD,IAAKjB,EAAAA,OAA0E,0BAAE,CAC1I,UAAa,cACb,oBAAuB,KACvB,uBAA0B6C,EAC1B,6BAAgCS,GAChC,wBAA2Bf,EAC3B,KAAQ,qDACR,IAAOtB,IAE4D,IAAKjB,EAAAA,OAA8F,oCAAE,CACxK,UAAa,IACb,aAAgB,GAChB,yBAA2B,EAC3B,uBAA0BuD,GAC1B,iBAAoBC,GACpB,wBAA2BC,GAC3B,2BAA8BjB,EAC9B,sCAAyCH,EACzC,kCAAqCqB,GACrC,uCAA0CC,GAC1C,6BAAgCL,GAChC,KAAQ,+DACR,IAAOtC,KAEHsD,GAAwD,IAAKtE,EAAAA,OAA0E,uBAAE,CAC7I,UAAa,cACb,oBAAuB,KACvB,uBAA0B,GAC1B,wBAA2BsC,EAC3B,uBAA0BO,EAC1B,6BAAgCS,GAChC,wBAA2Bf,EAC3B,KAAQ,wDACR,IAAOtB,EACP,aAAgB,CAChB8C,GACAH,GACAC,GACAC,MAgDIS,IA7C4E,IAAKvE,EAAAA,OAAgH,yCAAE,CACvM,oBAAuB,KACvB,UAAa,GACb,wBAA2BsC,EAC3B,aAAgBU,EAChB,wBAA2BT,EAC3B,KAAQ,4EACR,IAAOtB,EACP,aAAgB,CAChB8C,GACAH,GACAC,GACAC,MAGqE,IAAK9D,EAAAA,OAAiG,qCAAE,CAC7K,cAAgB,EAChB,aAAgBkE,GAChB,oBAAuB,CAAC,kCAAkC,IAC1D,iBAAoB,CAAC,kCAAkC,oDACvD,KAAQ,iEACR,IAAO3D,IAEwD,IAAKP,EAAAA,OAAsF,gCAAE,CAC5J,aAAgBmE,GAChB,oBAAuB,CAAC,MAAQ,IAChC,iBAAoB,CAAC,MAAQ,2DAC7B,KAAQ,2DACR,IAAO5D,IAEwD,IAAKP,EAAAA,OAAsF,gCAAE,CAC5J,eAAkBoE,GAClB,KAAQ,2DACR,IAAOrD,IAEyD,IAAKf,EAAAA,OAAwF,iCAAE,CAC/J,eAAkBoE,GAClB,KAAQ,4DACR,IAAOrD,IAE0D,IAAKf,EAAAA,OAA0F,kCAAE,CAClK,eAAkBoE,GAClB,KAAQ,6DACR,IAAOrD,IAEkF,IAAKf,EAAAA,OAAuI,uDAAE,CACvO,mBAAqB,EACrB,KAAQ,qFACR,IAAOK,EACP,aAAgB,CAChB2D,OA0BIQ,IAvB0D,IAAKxE,EAAAA,OAAoF,+BAAE,CACzJ,6BAAgCsD,GAChC,KAAQ,0DACR,IAAOtC,EACP,aAAgB,CAChBqD,MAGmE,IAAKrE,EAAAA,MAAuF,6BAAE,CACjK,oBAAuB,KACvB,UAAa,GACb,wBAA2BsC,EAC3B,wBAA2BC,EAC3B,KAAQ,+DACR,IAAOtB,EACP,aAAgB,CAChB8C,GACAO,GACAV,GACAC,GACAC,MAG0E,IAAK9D,EAAAA,OAA2G,0CAAE,CAC5L,KAAQ,sEACR,IAAOK,EACP,aAAgB,CAChBkE,OAGIE,GAAmE,IAAKzE,EAAAA,OAAoG,sCAAE,CAClL,KAAQ,mEACR,IAAOK,EACP,aAAgB,CAChBmE,MAGIE,GAAgE,IAAK1E,EAAAA,OAA+F,oCAAE,CAC1K,KAAQ,gEACR,IAAOK,EACP,aAAgB,CAChBoE,MAGIE,GAAiF,IAAK3E,EAAAA,OAAgI,oDAAE,CAC5N,KAAQ,iFACR,IAAOK,EACP,aAAgB,CAChBqE,MAiHF,OA9G4F,IAAK1E,EAAAA,OAAyI,wDAAE,CAC1O,KAAQ,sFACR,IAAOK,EACP,aAAgB,CAChBsE,MA0GKV,EACP,sGC99BA,MAAAW,EAAA5E,EAAA,OAKM6E,EAAgB7E,EAAQ,OAK9B,MAAa8E,UACHF,EAAAG,gBACRjZ,WAAAA,CAAmBkZ,EAA6BH,KAC9C1I,MAAM6I,EACR,EAJFhkB,EAAAA,YAAA8jB,2gBCRAxf,EAAA0a,EAAA,OAAAhf,mHCDA,MAAAikB,EAAAjF,EAAA,OAcA,MAAsBkF,UACZD,EAAAE,MACRrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,SAAM6jB,CAAIC,GACf,GAAI,WAAYA,EAAQ,CACtB,MAAMC,EAAmDD,EACzD,MAAO,CAAEE,aAAczoB,KAAK0oB,UAAUF,EAAYC,OAAQD,EAAYG,gBAAiBJ,EAAOK,SAChG,CACA,GAAI,eAAgBL,EAClB,MAAO,CAAEM,iBAAkB7oB,KAAK8oB,cAAcP,EAAOK,UAEvD,GAAI,qBAAsBL,EACxB,MAAO,CAAEQ,uBAAwB/oB,KAAKgpB,oBAAoBT,EAAOK,UAEnE,MAAM,IAAI7mB,MAAM,8EAClB,CAEO,UAAMkI,CAAKse,GAChB,GAAI,WAAYA,EAAQ,CACtB,MAAMC,EAAmDD,EACzD,MAAO,CAAEE,aAAczoB,KAAKipB,WAAWT,EAAYC,OAAQD,EAAYG,gBAAiBJ,EAAOK,SACjG,CACA,GAAI,eAAgBL,EAClB,MAAO,CAAEM,iBAAkB7oB,KAAKkpB,cAAcX,EAAOK,UAEvD,GAAI,qBAAsBL,EACxB,MAAO,CAAEQ,uBAAwB/oB,KAAKmpB,qBAAqBZ,EAAOK,UAEpE,MAAM,IAAI7mB,MAAM,8EAClB,EAhCFmC,EAAAA,wBAAAkkB,uHCbA,MAAAgB,EAAAlG,EAAA,OAEA,MAAsBmG,UAAiDD,EAAAhB,wBAKrEpZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GACN,MAAM6kB,EAAgBtpB,KAAKupB,eAAwC,IAAvBvpB,KAAKupB,cAAsBvpB,KAAKupB,cAAgB,EAC5F,GAAIvpB,KAAKwpB,oBACP,IAAK,MAAQC,GAAUhpB,EAAKP,MAAYkB,OAAOkM,QAAQtN,KAAKwpB,qBAAqBlc,UAC/EtN,KAAKwpB,oBAAoB/oB,GAAO6oB,EAAQppB,EAG5CF,KAAKwpB,oBAAsBpoB,OAAOsoB,OAAO1pB,KAAKwpB,qBAC9CxpB,KAAK+oB,iBAAmB3nB,OAAOsoB,OAAO1pB,KAAK+oB,iBAC7C,CAEO,gBAAME,CAAWV,EAAYoB,EAA+Bf,GACjE,IAAKe,KAAeA,KAAa3pB,KAAKwpB,qBACpC,MAAM,IAAIznB,MAAM,4BAA4B4nB,KAE9C,aAAa3pB,KAAK4pB,kBAAkBrB,EAAQK,EAC9C,CAWO,mBAAMM,CAAcW,GACzB,OAAO,CACT,CAEO,mBAAMf,CAAce,GACzB,OAAO7pB,KAAKwpB,mBACd,CAEO,0BAAML,CAAqBU,GAChC,OAAO,CACT,CAEO,yBAAMb,CAAoBa,GAC/B,OAAO7pB,KAAK+oB,gBACd,EA/CF7kB,EAAAA,6BAAAmlB,2gBCJA7gB,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,6GCCA,MAAA4lB,EAAA5G,EAAA,OAIA6G,EAAA7G,EAAA,OAWA8G,EAAA9G,EAAA,OAMA+G,EAAA/G,EAAA,OACAgH,EAAAhH,EAAA,OACAiH,EAAAjH,EAAA,OACAkH,EAAAlH,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YAOf,MAAsBC,UAA0BT,EAAAU,iCAK9Cxb,WAAAA,CAAsBvK,EAA6CgmB,GACjEpL,MAAM5a,EAAM,QACZzE,KAAKyqB,cAAgBA,CACvB,CAEO,mBAAMC,CAAcC,EAAyBd,GAClD,GAAIc,EAAUC,UAAUle,OAAS1M,KAAKyqB,cACpC,MAAM,IAAI1oB,MAAM,4BAA4B/B,KAAKyqB,kCAGnD,OAAO,CACT,CAGOI,gBAAAA,CAAiBC,EAAqB9gB,GAC3C,OAAKA,GAKD8gB,GAASA,EAAKC,QAAQ7qB,QAAU8J,GAAQ8gB,EAAKE,OAAO9qB,QAAU8J,EAI3DqgB,EAAGY,SAASjhB,GAHVhK,KAAK6qB,iBAAiBC,EAAM,GAAG9gB,MAL/BhK,KAAK6qB,iBAAiBC,EAAM,IASvC,CAKO,mCAAMI,CAA8BtC,EAAyBkC,GAElE,OAAKlC,EAAQthB,IAAIyiB,EAAAoB,mBAAmBC,kCAS7B,CAAExC,QADTA,EAAUA,EAAQ9c,IAAIie,EAAAoB,mBAAmBC,kCAAkC,GACzDT,eAAWxqB,GAPpB,CAAEyoB,QADTA,EAAUA,EAAQ9c,IAAIie,EAAAoB,mBAAmBC,kCAAkC,GACzDT,UAAWb,EAAAuB,oBAAoBC,sBAAsBtrB,KAAKurB,uBAAuBC,QAAQ,CACzGb,UAAWJ,EAAkBkB,QAAQC,eAAeZ,GACpDlC,aAMN,CAEQ,gCAAM+C,CACZZ,EACAC,EACAJ,EACAgB,EACAhD,EACAiD,GAEA,MAAMC,EAAU9rB,KAAK+rB,eAAenB,GAG9BoB,EAAUhsB,KAAK6qB,iBAAiBN,EAAkBkB,QACrDQ,WAAWlB,EAASH,EAAWI,EAAQY,IACpCM,EAAa3B,EAAkBkB,QAAQU,YAAY,CACvDnsB,KAAKosB,qBAAqB7B,EAAkBkB,QAAQY,cAActB,EAASiB,EAAShB,EAAQY,GAAQE,GACpG9rB,KAAKosB,qBAAqB7B,EAAkBkB,QAAQY,cAAcrB,EAAQgB,EAASjB,EAASa,GAAQE,KAEhGQ,EAAUxC,EAAAuB,oBAAoBC,sBAC5BtrB,KAAKurB,uBAAuBC,QAAQ,CAAE5C,UAAS+B,UAAWuB,KAG5DK,EAA4B,IAAIhO,IAiCtC,MAAO,CACLiO,eAhCqB,IAAIxC,EAAArJ,uBACzB2L,EAAQE,eACR,CACEC,eAAiBC,IAEf,MAAMC,EAAuBD,EAASplB,IAAIskB,GAC1C,OAAIW,EAAapf,IAAIwf,EAAWzsB,OACvB,IAAI8pB,EAAA4C,eAEbL,EAAa9N,IAAIkO,EAAWzsB,OACrB,IAAI8pB,EAAA6C,mBACTC,UACE,MAAMC,EAAK,IAAI/C,EAAAgD,iBAEf,aADMhtB,KAAKitB,wBAAwBlC,EAASH,EAAW+B,EAAY/D,EAAS,CAAC,EAAGmE,EAAI,CAAEG,MAAO,IACtFH,EAAG7L,UAAoB,CAC5BA,SAAAA,CAAUiB,EAAMjc,EAAM3C,GACpBA,EAAKsoB,EAAgBa,SAAS,CAC5B,CAAE1B,EAAQ7I,GACV,CAAEyJ,EAAOe,MAEXzmB,GACF,GACA,GAEJ,CAAEinB,cAAe,MAClB,EAEHC,WAAW,IAMbC,SAAUf,EAAQe,SAEtB,CAaO,iCAAMC,CACXvC,EACAH,EACAI,EACAY,EACAhD,EACA2E,EACA1B,GAEA,GAAuB,aAAnBD,EAAM4B,SACR,OAAOxtB,KAAK2rB,2BAA2BZ,EAASC,EAAQJ,EAAWgB,EAAOhD,EAASiD,GAGrF,MAAMkB,EAAK,IAAI3C,EAAAqD,2BACb1C,EACAH,EACAgB,EACAhD,EACA5oB,KAAKurB,uBACLgC,GAWF,MAAO,CACLf,eATqBO,EAAG7L,UAAoB,CAC5CkM,WAAW,EACXlM,SAAAA,CAAUiB,EAAMjc,EAAM3C,GACpBA,EAAKsoB,EAAgBa,SAAS,CAAC,CAAE1B,EAAQ7I,MACzCjc,GACF,IAKA,cAAMmnB,GACJ,MAAMA,QAAmC,IAAIxnB,SAASC,IACpDinB,EAAGW,YAAY,YAAaC,GAAuB7nB,EAAQ6nB,MAAiB,IAK9E,OADAN,EAASO,YAAY1tB,QACdmtB,CACT,EAEJ,CAaO,6BAAMJ,CACXjC,EACAJ,EACAgB,EACAhD,EACAiF,EACAd,EACAe,GAEA,MAAMC,GAAa,EAAA7D,EAAA8D,cAAahD,GAChC,GAAI6C,EAAWE,GACb,OAGKhB,EAAIkB,MAAMjD,GACjB6C,EAAWE,GAAc/C,EACzB8C,EAAQZ,QAER,MAAMgB,EAAeluB,KAAK6qB,mBACpBC,EAAOP,EAAkBkB,QAAQQ,WAAWjB,EAAQJ,EAAWsD,EAActC,GAC7EU,EAAUxC,EAAAuB,oBAAoBC,sBAC5BtrB,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWG,EAAMlC,aAc/D,OAVA0D,EAAQE,eAAezR,GAAG,QAAQ+R,UAChC,MAAMjpB,EAAS6oB,EAASplB,IAAI4mB,SACtBluB,KAAKitB,wBAAwBppB,EAAS+mB,EAAWgB,EAAOhD,EAASiF,EAAYd,EAAIe,EAAQ,IAEjGxB,EAAQE,eAAezR,GAAG,OAAO,KACP,KAAlB+S,EAAQZ,OACZH,EAAGxR,OACL,IAGK+Q,EAAQe,QACjB,CAqBO,8CAAMc,CACXC,EACAC,EACAC,EACAC,EACA3D,EACAgB,EACAhD,EACA4F,EACAC,EACA1B,EACAe,EACAjC,GAEA,MAAMkC,GAAa,EAAA7D,EAAA8D,cAAaO,IAAa,EAAArE,EAAA8D,cAAapC,GAG1D,GAAI6C,EAAyBV,GAC3B,OAWF,GARAD,EAAQZ,QACRuB,EAAyBV,IAAc,EAChChB,EAAIkB,MAAMpC,EAAgBa,SAAS,CACxC,CAAE0B,EAAYE,GACd,CAAED,EAAWE,MAIXR,KAAcS,EAAkB,CAClC,MAAME,QAAgBF,EAAiBT,GACvC,IAAK,MAAM/C,KAAU0D,QACb1uB,KAAKmuB,yCACTC,EACAC,EACAC,EACAtD,EACAJ,EACAgB,EACAhD,EACA4F,EACAC,EACA1B,EACAe,EACAjC,GAOJ,YAJwB,KAAlBiC,EAAQZ,OACZH,EAAGxR,QAIP,CAKA,MAAM9P,EAAU,IAAI5F,SAAoBinB,MAAMhnB,EAASC,KACrD,MAAM4oB,EAA2B,GAG3BT,EAAeluB,KAAK6qB,mBACpBC,EAAOP,EAAkBkB,QAAQQ,WAAWsC,EAAW3D,EAAWsD,EAActC,GAChFU,EAAUxC,EAAAuB,oBAAoBC,sBAC5BtrB,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWG,EAAMlC,aAM/D0D,EAAQE,eAAezR,GAAG,QAAQ+R,UAChC,MAAMjpB,EAAmB6oB,EAASplB,IAAI4mB,GACtCS,EAAaprB,KAAKM,SACZ7D,KAAKmuB,yCACTC,EACAC,EACAC,EACAzqB,EACA+mB,EACAgB,EACAhD,EACA4F,EACAC,EACA1B,EACAe,EACAjC,EACD,IAEHS,EAAQE,eAAezR,GAAG,QAAShV,GACnCumB,EAAQE,eAAezR,GAAG,OAAO,KACP,KAAlB+S,EAAQZ,OACZH,EAAGxR,QAELzV,EAAQ6oB,EAAa,GACrB,IAIJH,EAAiBT,GAActiB,CACjC,CAMOsgB,cAAAA,CAAepB,GACpB,OAAQA,EAAUje,MAChB,KAAKyd,EAAAyE,QAAQC,MAAMC,IACnB,KAAK3E,EAAAyE,QAAQC,MAAME,IACjB,OAAOpE,EAAUld,MACduhB,SAASC,GAAsCjvB,KAAK+rB,eAAekD,KACxE,KAAK9E,EAAAyE,QAAQC,MAAMK,IACnB,KAAK/E,EAAAyE,QAAQC,MAAMM,iBACnB,KAAKhF,EAAAyE,QAAQC,MAAMO,kBACnB,KAAKjF,EAAAyE,QAAQC,MAAMQ,iBACjB,OAAOrvB,KAAK+rB,eAAepB,EAAUG,MACvC,KAAKX,EAAAyE,QAAQC,MAAMS,KACnB,KAAKnF,EAAAyE,QAAQC,MAAMU,IAAK,CACtB,MAAMC,EAAS1F,EAAAuB,oBAAoBoE,mBAAmB9E,GACtD,IAAK6E,EACH,MAAM,IAAIztB,MAAM,6DAElB,MAAO,CAAEytB,EACX,EAEJ,CAEOpD,oBAAAA,CAAqBsD,EAA0B5D,GACpD,GAAuB,IAAnBA,EAAQvqB,OACV,MAAM,IAAIQ,MAAM,+EAElB,OAAuB,IAAnB+pB,EAAQvqB,OACHuoB,EAAAuB,oBAAoBsE,sBAAsBD,EAAS5D,EAAQ,IAE7DvB,EAAkBkB,QAAQU,YAAYL,EAC1C3mB,KAAIqqB,GAAU1F,EAAAuB,oBAAoBsE,sBAAsBD,EAASF,MAAU,EAChF,EAhXFtrB,EAAAA,kBAAAqmB,EAC4BA,EAAAkB,QAAmB,IAAItB,EAAAyF,2HCnCnD,MAAA9F,EAAA5G,EAAA,OAIA8G,EAAA9G,EAAA,OACA+G,EAAA/G,EAAA,OACAgH,EAAAhH,EAAA,OAEAiH,EAAAjH,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YACTmB,EAAU,IAAItB,EAAAyF,QAMpB,MAAanC,UAAmCzD,EAAAgD,iBAK9Che,WAAAA,CACmB+b,EACAH,EACAgB,EACAhD,EACA2C,EACjBgC,EACiBsC,EAAuB,IAGxCxQ,MAAM,CAAE+N,WAAW,IATF,KAAArC,QAAAA,EACA,KAAAH,UAAAA,EACA,KAAAgB,MAAAA,EACA,KAAAhD,QAAAA,EACA,KAAA2C,uBAAAA,EAEA,KAAAsE,qBAAAA,EAXF,KAAAhC,WAAoC,IAAIrM,IACxC,KAAAsO,kBAA+C,GAC/C,KAAAC,kBAA2E,GAe1F/vB,KAAKiuB,MAAMjuB,KAAK+qB,QAASwC,EAC3B,CAEmBzL,IAAAA,CAAKH,GAEtB,IAAK,MAAMoL,KAAM/sB,KAAK8vB,kBACpB/C,EAAGpL,UAGLtC,MAAMyC,KAAKH,EACb,CAEmBsM,KAAAA,CAAM9L,EAAgB6N,GAAe,GACtD,IAAIjC,EACJ,GAAIiC,IAEFjC,GAAa,EAAA7D,EAAA8D,cAAa7L,GACtBniB,KAAK6tB,WAAW1gB,IAAI4gB,IACtB,OAKJ,MAAM9C,EAAWZ,EAAGY,SAAS,KAC7BjrB,KAAK+vB,kBAAkBxsB,KAAK,CAC1B0nB,WACAN,UAAWc,EAAQQ,WAAW9J,EAAMniB,KAAK4qB,UAAWK,EAAUjrB,KAAK4rB,SAIjEmC,IACF/tB,KAAK6tB,WAAW/hB,IAAIiiB,EAAY5L,GAChC9C,MAAM4O,MAAM9L,GAEhB,CAEmB1C,KAAAA,CAAMyN,EAAe7mB,GAEtC,MAAM6C,EAAOlJ,MACb,iBAEE,KAAOkJ,EAAK4mB,kBAAkBvuB,OAAS2H,EAAK2mB,sBACJ,IAAlC3mB,EAAK6mB,kBAAkBxuB,QADqC,CAKhE,MAAM0uB,EAAmB/mB,EAAK6mB,kBAAkBvsB,MAC1C8oB,EAAUxC,EAAAuB,oBAAoBC,sBAC5BpiB,EAAKqiB,uBAAuBC,QAAQ,CAAEb,UAAWsF,EAAiBtF,UAAW/B,QAAS1f,EAAK0f,WAE7FsH,EAAmB5D,EAAQE,eAAetL,UAAoB,CAClEkM,WAAW,EACXlM,SAAAA,CAAUwL,EAAUxmB,EAAM3C,GAExBA,EAD0BmpB,EAASplB,IAAI2oB,EAAiBhF,WAExD/kB,GACF,IAEGgqB,EAAiB7pB,OACpB6C,EAAK4mB,kBAAkBvsB,KAAK2sB,GAC5BA,EAAiBnV,GAAG,SAAS5X,GAAS+F,EAAKyY,QAAQxe,KACnD+sB,EAAiBnV,GAAG,YAAY,KAC9B7R,EAAK0Y,UAAW,EAChB1Y,EAAKinB,kBAAkB,IAEzBD,EAAiBnV,GAAG,OAAO,KACzB7R,EAAK4mB,kBAAkBhN,OAAO5Z,EAAK4mB,kBAAkBhmB,QAAQomB,GAAmB,GAChFhnB,EAAK0Y,UAAW,EAChB1Y,EAAKinB,kBAAkB,KAI3BjnB,EAAKknB,YAAY,WAAY9D,EAAQe,SACvC,CAGA,IACIlL,EADAkO,EAAY,EAGhB,KAAOA,KAAeA,EAAYnD,IAEhC,IAAK,IAAI7rB,EAAI,EAAGA,EAAI6H,EAAK4mB,kBAAkBvuB,QAAU2rB,EAAQ,EAAG7rB,IAEZ,QAA7C8gB,EAAOjZ,EAAK4mB,kBAAkBzuB,GAAGse,UACpCuN,IACAhkB,EAAK+kB,MAAM9L,IAMqB,IAAlCjZ,EAAK4mB,kBAAkBvuB,QAAkD,IAAlC2H,EAAK6mB,kBAAkBxuB,QAChE2H,EAAKqS,OAER,EAvDD,GAuDKjV,MAAK,KACRD,GAAM,IACLlD,GAASnD,KAAK2hB,QAAQxe,IAC3B,EAnHFe,EAAAA,2BAAAupB,2gBFlBAjlB,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,kIGAA,MAAAosB,EAAApN,EAAA,OAEAiF,EAAAjF,EAAA,OAMA,MAAaqN,UAA+CD,EAAAE,uBAG1DxhB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GACf,MAAO,CACLK,QAAS2H,EAAuCG,gBAAgBnI,EAAOK,QAAS5oB,KAAK2wB,qBAEzF,CAEO,sBAAOD,CAAgB9H,EAAyB+H,GACrD,IAAK,MAAMlwB,KAAOmoB,EAAQznB,OACpBwvB,EAAoBlwB,EAAIuJ,QAC1B4e,EAAUA,EACP9c,IAAI,IAAIqc,EAAAyI,iBAAiBD,EAAoBlwB,EAAIuJ,OAAQ4e,EAAQthB,IAAI7G,IACrEowB,OAAOpwB,IAGd,OAAOmoB,CACT,EA1BF1kB,EAAAA,uCAAAqsB,2gBHTA/nB,EAAA0a,EAAA,OAAAhf,qIIKA,MAAAosB,EAAApN,EAAA,OAGA6G,EAAA7G,EAAA,OAGAiF,EAAAjF,EAAA,OAUA4N,EAAA5N,EAAA,OAKA,MAAa6N,UAAkDT,EAAAE,uBAO7DxhB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GACNzE,KAAKgxB,MAAQhxB,KAAKixB,UAAY,IAAIH,EAAAI,SAAsB,CAAEtsB,IAAK5E,KAAKixB,iBAAe9wB,EACnF,MAAM6wB,EAAQhxB,KAAKgxB,MACfA,GACFhxB,KAAKmxB,gBAAgBC,uBACnB,EAAG1pB,SAAiCA,EAAMspB,EAAMH,OAAOnpB,GAAOspB,EAAMK,SAG1E,CAEO,UAAMpnB,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GACf,IAAIK,EAAUL,EAAOK,QAGrB,GAAIA,EAAQzb,IAAI4c,EAAAuH,cAAcC,0BAA2B,CACvD,MAAMA,EAAsDhJ,EAAOK,QAChEthB,IAAIyiB,EAAAuH,cAAcC,0BACfC,QAAyC3rB,QAAQ4rB,IAAIF,EACxDpsB,KAAIusB,GAAe1xB,KAAK2xB,aAAaD,MAClCE,QAA4C/rB,QAAQ4rB,IAAID,EAC3DrsB,KAAI2nB,SAAiC9sB,KAAK6xB,eAAeC,EAAyBvJ,EAAOK,YAGtFmJ,EAA+DxJ,EAAOK,QACzEthB,IAAIyiB,EAAAiI,eAAeC,mBACtB,GAAIF,EACF,IAAK,MAAML,KAAeE,EACxBG,EAA0BG,gBAAgB,CACxCxqB,IAAcgqB,EAAYlC,OAAO2C,eACjC9E,SAAU,CACR+E,MAAM,IAEPV,EAAYlC,QAInB5G,EAAUL,EAAOK,QACdiI,OAAO9G,EAAAuH,cAAcC,0BACrBzlB,IAAIie,EAAAoB,mBAAmByG,aAAcA,EAC1C,CAEA,MAAO,CAAEhJ,UACX,CAEO,kBAAM+I,CAAaD,GACxB,MAA2B,iBAAhBA,GAA4B,UAAWA,EACzC,CAAExxB,MAAOwxB,GAEX,IACiDA,EACtD9I,eAAgB5oB,KAAKqyB,0BAA0B7G,QAAQ,CACrD5C,QAAST,EAAAmK,cAAcC,oBAAoBb,EAAY9I,SAAW,CAAC,MACjEA,QAER,CAEOiJ,cAAAA,CACLC,EACAlJ,GAEA,IAAI4J,EAmBJ,MAf6C,iBAAlCV,EAAwB5xB,OAAsBF,KAAKgxB,QAC5DwB,EAAgBxyB,KAAKgxB,MAAM1pB,IAAIwqB,EAAwB5xB,QAIpDsyB,IACHA,EAAgBxyB,KAAKyyB,4BAA4BjH,QAAQ,CAAEsG,0BAAyBlJ,YACjFtiB,MAAK,EAAGorB,iBAAkBA,IAGgB,iBAAlCI,EAAwB5xB,OAAsBF,KAAKgxB,OAC5DhxB,KAAKgxB,MAAMllB,IAAIgmB,EAAwB5xB,MAAOsyB,IAI3CA,CACT,EA5FFtuB,EAAAA,0CAAA6sB,2gBJ1BAvoB,EAAA0a,EAAA,OAAAhf,sIKCA,MAAAosB,EAAApN,EAAA,OACA6G,EAAA7G,EAAA,OAGAwP,EAAAxP,EAAA,OACAyP,EAAAzP,EAAA,OAKA,MAAa0P,UAAmDtC,EAAAE,uBAC9DxhB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GACf,IAAIK,EAAUL,EAAOK,QAGrB,GAAIA,EAAQzb,IAAI4c,EAAAoB,mBAAmByG,cAAe,CAE3ChJ,EAAQzb,IAAI4c,EAAA8I,wBAAwBC,aACvClK,EAAUA,EAAQ9c,IAAIie,EAAA8I,wBAAwBC,UAAW,IAAItR,MAE/D,MAAMsR,EAA+ClK,EAAQmK,QAAQhJ,EAAA8I,wBAAwBC,WAE7F,IAAIhH,EAAiClD,EAAQmK,QAAQhJ,EAAAoB,mBAAmByG,cACxE9F,EAAUA,EAAQ3mB,KAAI6tB,IAAiB,CACrCxD,OAAQ,IAAIkD,EAAAO,sBAAsBD,EAAcxD,QAAQ,EAAAmD,EAAAO,aAAYJ,EAAWE,EAAcxD,SAC7F5G,QAASoK,EAAcpK,YAEzBA,EAAUA,EAAQ9c,IAAIie,EAAAoB,mBAAmByG,aAAc9F,EACzD,CAEA,MAAO,CAAElD,UACX,EA7BF1kB,EAAAA,2CAAA0uB,gHCXA,MAAAO,EAAAjQ,EAAA,OAUA8G,EAAA9G,EAAA,OAEAyP,EAAAzP,EAAA,OAKAhf,EAAAA,sBAAA,MAUE8K,WAAAA,CAAmBokB,EAA2BC,GAC5CrzB,KAAKozB,YAAcA,EACnBpzB,KAAKqzB,SAAWA,CAClB,CAEO,sBAAMC,CAAiB1K,GAC5B,OAAO5oB,KAAKozB,YAAYE,iBAAiB1K,EAC3C,CAEO2K,aAAAA,CACL5I,EACA/B,EACA9hB,GAEA,MAAM0sB,GAAkB,EAAAb,EAAAc,sBAAqB9I,EAAW3qB,KAAKqzB,UAC7D,IAAKG,EAAiB,CACpB,MAAMzG,EAAqB,IAAI/C,EAAA0J,cAA4B,GAAI,CAAEtG,WAAW,IAO5E,OANAL,EAAGqD,YAAY,WAAY,CACzBxvB,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CAAElhB,KAAM,QAASxM,MAAO,GACrC0zB,kBAAkB,EAClB5Q,UAAW,KAEN+J,CACT,CACA,OAAO,EAAA4F,EAAAkB,yBAAwB7zB,KAAKozB,YAAYG,cAAcC,EAAiB5K,EAAS9hB,GAAU9G,KAAKqzB,SACzG,CAEOS,YAAAA,CAAanJ,EAAwB/B,GAC1C,OAAO5oB,KAAKozB,YAAYU,aAAanJ,EAAW/B,EAClD,CAEOmL,UAAAA,CAAWpJ,EAA8B/B,GAC9C,MAAM4K,GAAkB,EAAAb,EAAAc,sBAAqB9I,EAAW3qB,KAAKqzB,UAC7D,IAAKG,EAAiB,CACpB,MAAMzG,EAA8B,IAAI/C,EAAA0J,cAAwB,GAAI,CAAEtG,WAAW,IAKjF,OAJAL,EAAGqD,YAAY,WAAY,CACzBxvB,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CAAElhB,KAAM,QAASxM,MAAO,KAEhC6sB,CACT,CACA,OAAO,EAAA4F,EAAAqB,qBAAoBh0B,KAAKozB,YAAYW,WAAWP,EAAiB5K,GAAU5oB,KAAKqzB,SACzF,CAEOY,SAAAA,CAAUtJ,EAA2B/B,GAC1C,OAAO5oB,KAAKozB,YAAYa,UAAUtJ,EAAW/B,EAC/C,CAEA,kBAAWuJ,GACT,OAAOnyB,KAAKozB,YAAYjB,cAC1B,CAEO3wB,QAAAA,GACL,MAAO,GAAGxB,KAAKozB,YAAY5xB,uBAAuBxB,KAAKqzB,WACzD,4gBNlFF7qB,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,sTOFA,MAAAgwB,EAAAhR,EAAA,OAUA+G,EAAA/G,EAAA,OACAiR,EAAAjR,EAAA,OACAiH,EAAAjH,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YA0Bf,SAAgB8J,EAAcC,EAAgBhB,GAC5C,MAAsB,cAAlBgB,EAAK7G,SACA,IAAI0G,EAAAI,gBAAgB,MAAMjB,KAAYgB,EAAKn0B,QAASmqB,EAAGkK,UAAU,GAAGrwB,EAAAswB,gBAAgBnB,KAAYgB,EAAKn0B,UAEvGm0B,CACT,CAQA,SAAgBI,EAAiDC,EAASrB,GACxE,OAAO,EAAAc,EAAAQ,gBAAeD,GAAML,GAAQD,EAAcC,EAAMhB,IAC1D,CAQA,SAAgBuB,EAAkBlI,EAAwB2G,GACxD,OAAO3G,EAASvnB,KAAKkvB,GACG,SAAlBA,EAAK7G,SACAiH,EAAcJ,EAAMhB,GAEtBe,EAAcC,EAAMhB,IAE/B,CA8CA,SAAgBwB,EAAgBR,EAAgBhB,GAI9C,GAHsB,cAAlBgB,EAAK7G,UAA4B,eAAgB6G,IACnDA,EAA0BA,EAAMS,YAEZ,cAAlBT,EAAK7G,UAA4B6G,EAAKn0B,MAAM60B,WAAW7wB,EAAAswB,eAAgB,CACzE,MAAMQ,EAAiBX,EAAKn0B,MAAM4J,QAAQ,IAAK5F,EAAAswB,cAAcjzB,QAG7D,GAFqB8yB,EAAKn0B,MAAMsE,MAAMN,EAAAswB,cAAcjzB,OAAQyzB,KAEvC3B,EAAU,CAE7B,MAAM4B,EAAYZ,EAAKn0B,MAAMsE,MAAMwwB,EAAiB,EAAGX,EAAKn0B,MAAMqB,QAClE,OAAO8oB,EAAG6K,UAAUD,EACtB,CAEA,OAAO,IACT,CACA,OAAOZ,CACT,CAEA,SAAgBc,EAA8Bd,EAAgBhB,GAC5D,GAAsB,SAAlBgB,EAAK7G,SACP,OAAO,EAAA2G,EAAAQ,gBAAeN,GAAOe,IAC3B,MAAMC,EAAeR,EAAgBO,EAAS/B,GAC9C,IAAKgC,EACH,MAAM,IAAItzB,MAAM,mDAElB,OAAOszB,CAAY,IAGvB,MAAMC,EAAMT,EAAgBR,EAAMhB,GAClC,GAAY,OAARiC,EACF,MAAM,IAAIvzB,MAAM,mDAElB,OAAOuzB,CACT,CAtIapxB,EAAAA,cAAgB,8BAQ7BA,EAAAA,YAAA,SAA4B4uB,EAA8CtD,GACxE,IAAI6D,EAAWP,EAAUxrB,IAAIkoB,EAAO2C,gBAKpC,YAJiBhyB,IAAbkzB,IACFA,EAAW,GAAGP,EAAUhzB,OACxBgzB,EAAUhnB,IAAI0jB,EAAO2C,eAAgBkB,IAEhCA,CACT,EASAnvB,EAAAA,cAAAkwB,EAaAlwB,EAAAA,cAAAuwB,EAUAvwB,EAAAA,kBAAA0wB,EAeA1wB,EAAAA,oBAAA,SAAoCoG,EAAmC+oB,GACrE,MAAMiC,EAAMhrB,EAASnF,KAAIuvB,GAAQD,EAAcC,EAAMrB,KAQrD,OAPA,SAASkC,IACPjrB,EAASojB,YAAY,YAAaL,IAChCiI,EAAIlF,YAAY,WAAY/C,GAC5BA,EAASzsB,MAAMwwB,sBAAsBmE,EAAgB,GAEzD,CACAA,GACOD,CACT,EAQApxB,EAAAA,wBAAA,SAAwCoG,EAA0B+oB,GAChE,MAAMiC,EAAMhrB,EAASnF,KAAIunB,GAAYkI,EAAkBlI,EAAU2G,KAQjE,OAPA,SAASkC,IACPjrB,EAASojB,YAAY,YAAaL,IAChCiI,EAAIlF,YAAY,WAAY/C,GAC5BA,EAASzsB,MAAMwwB,sBAAsBmE,EAAgB,GAEzD,CACAA,GACOD,CACT,EAUApxB,EAAAA,gBAAA2wB,EAmBA3wB,EAAAA,8BAAAixB,EAuBAjxB,EAAAA,gBAAA,SAAmEwwB,EAASrB,GAC1E,OAAO,EAAAc,EAAAQ,gBAAeD,GAAOL,GACXQ,EAAgBR,EAAMhB,IAEpBgB,GAEtB,EAQAnwB,EAAAA,qBAAA,SAAkEymB,EAAc0I,GAC9E,IACE,OAAWlJ,EAAAqL,KAAKC,aAAa9K,EAAW,CACtC,CAACR,EAAAyE,QAAQC,MAAM6G,SAAQ,CAACC,EAAIC,KACnB,CACL/xB,OAAQzC,OAAOoU,OAAOogB,EAAQvJ,cAC5B8I,EAA8BQ,EAAG5K,QAASsI,GAC1C8B,EAA8BQ,EAAG/K,UAAWyI,GAC5C8B,EAA8BQ,EAAG3K,OAAQqI,GACzC8B,EAA8BQ,EAAG/J,MAAOyH,IACvC,CAAEhG,SAAUsI,EAAGtI,WAClBwI,SAAS,IAGb,CAAC1L,EAAAyE,QAAQC,MAAMiH,MAAK,CAACH,EAAIC,KAChB,CACL/xB,OAAQzC,OAAOoU,OAAOogB,EAAQ3J,WAC5BkJ,EAA8BQ,EAAG5K,QAASsI,GAC1CsC,EAAG/K,UACHuK,EAA8BQ,EAAG3K,OAAQqI,GACzC8B,EAA8BQ,EAAG/J,MAAOyH,IACvC,CAAEhG,SAAUsI,EAAGtI,WAClBwI,SAAS,KAIjB,CAAE,MACA,CAEJ,4HCpMA,MAAAvF,EAAApN,EAAA,OACA6G,EAAA7G,EAAA,OAQA,MAAa6S,UAA0CzF,EAAAE,uBAIrDxhB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GACNzE,KAAKg2B,8BAAgC,CAAC,CACxC,CAEO,UAAM/rB,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GACf,IAAIK,EAAUL,EAAOK,QAErB,GAAIL,EAAO0N,WAAY,CAErBrN,EAAUA,EACPsN,WAAWnM,EAAAuH,cAAc6E,eAAgB,IAAIC,MAC7CF,WAAWnM,EAAA8I,wBAAwBC,UAAW,IAAItR,KAClD0U,WAAWnM,EAAAsM,SAASC,IAAKt2B,KAAKu2B,QAC9BL,WAAWnM,EAAAuH,cAAckF,uBAAwBx2B,KAAKg2B,+BACtDE,WAAWnM,EAAA8I,wBAAwB4D,kCAAmC,IAAIjV,KAG7E,IAAIkV,EAA+B,CAAEC,SAAU,SAAUnc,QAAS,OAC9DoO,EAAQzb,IAAI4c,EAAAuH,cAAcoF,cAC5BA,EAAc9N,EAAQthB,IAAIyiB,EAAAuH,cAAcoF,aACX,YAAzBA,EAAYC,WACd/N,EAAUA,EAAQsN,WAAWnM,EAAAuH,cAAcsF,4BAA6B,CAAC,KAG3EhO,EAAUA,EAAQ9c,IAAIie,EAAAuH,cAAcoF,YAAaA,EAErD,CAEA,MAAO,CAAE9N,UACX,EAtCF1kB,EAAAA,kCAAA6xB,2gBRdAvtB,EAAA0a,EAAA,OAAAhf,qISCA,MAAAosB,EAAApN,EAAA,OACA6G,EAAA7G,EAAA,OAOA,MAAa2T,UAAkDvG,EAAAE,uBAC7DxhB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GACf,GAAIA,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcC,4BAClChJ,EAAOK,QAAQthB,IAAIyiB,EAAA+M,mBAAmBC,aAAc,CACrD,MAAMjL,EAAqCvD,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcC,0BAC5E,GAAuB,IAAnBzF,EAAQvqB,OACV,MAAO,CAAEqnB,QAASL,EAAOK,QAAQ9c,IAAIie,EAAA+M,mBAAmBC,YAAajL,EAAQ,IAEjF,CACA,OAAOvD,CACT,EAlBFrkB,EAAAA,0CAAA2yB,2gBTTAruB,EAAA0a,EAAA,OAAAhf,iHUCA,MAAA8yB,EAAA9T,EAAA,OAEA+T,EAAA/T,EAAA,OACAgH,EAAAhH,EAAA,OAGMgU,EAAehU,EAAQ,OAK7B,MAAaiU,UAA8BH,EAAAI,kBAClC,UAAMntB,CAAKse,GAChB,IAAKA,EAAO8O,oBACV,MAAM,IAAIt1B,MAAM,SAAS/B,KAAKgK,+DAEhC,OAAO,CACT,CAEO,SAAMse,CAAImI,GACf,MAAO,CACL6G,aAAc5K,IAAY,EAAAuK,EAAAM,QACvBC,OAAON,EAAa91B,OAAOq2B,YAAY,IAAK/K,GAC1CvnB,KAAI,EAAG1E,EAAKP,KAAY,EAAE,EAAAgqB,EAAA8D,cAAavtB,IAAM,EAAAypB,EAAA8D,cAAa9tB,SAC5Dw3B,OAAO,OACVC,gBAAgB,EAEpB,EAhBFzzB,EAAAA,sBAAAizB,2gBVZA3uB,EAAA0a,EAAA,OAAAhf,8GWCA,MAAA0zB,EAAA1U,EAAA,OAEA+T,EAAA/T,EAAA,OACAgH,EAAAhH,EAAA,OAKA,MAAa2U,UAA2BD,EAAAE,eAC/B,UAAM7tB,CAAKse,GAChB,IAAKA,EAAO8O,oBACV,MAAM,IAAIt1B,MAAM,SAAS/B,KAAKgK,+DAEhC,OAAO,CACT,CAEO,SAAMse,CAAImI,GACf,MAAO,CACL6G,aAAc5C,IAAQ,EAAAuC,EAAAM,QACnBC,OAAOx1B,KAAKC,WAAU,EAAAioB,EAAA6N,kBAAiBrD,KACvCgD,OAAO,OACVC,gBAAgB,EAEpB,EAfFzzB,EAAAA,mBAAA2zB,2gBXTArvB,EAAA0a,EAAA,OAAAhf,0GYEA,MAAA8zB,EAAA9U,EAAA,OAGuB,oBAAZ+U,UAETC,WAAWD,QAAU/U,EAAQ,QAG/B,MAAaiV,UAAuBH,EAAAI,oBAApCl0B,EAAAA,eAAAi0B,6GCRA,MAAAE,EAAAnV,EAAA,OAYA,MAAakV,UAA2BC,EAAAC,UAY/B,UAAMruB,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAImI,GACf,MAAM,IAAI1uB,MAAM,uDAClB,EAlBFmC,EAAAA,mBAAAk0B,0GCbA,MAAArO,EAAA7G,EAAA,OACAiF,EAAAjF,EAAA,OAwBA,MAAa+E,EASXjZ,WAAAA,CAAmBupB,GACjBv4B,KAAKu4B,eAAiBA,CACxB,CAEO,mBAAMhF,CACXiF,EACA5P,GAEA,OAAO5oB,KAAKy4B,YAA0DD,EAAO5P,EAAS,WACxF,CAEO,gBAAMmL,CACXyE,EACA5P,GAEA,OAAO5oB,KAAKy4B,YAAuDD,EAAO5P,EAAS,QACrF,CAEO,kBAAMkL,CACX0E,EACA5P,GAEA,OAAO5oB,KAAKy4B,YAAoDD,EAAO5P,EAAS,UAClF,CAEO,eAAMqL,CACXuE,EACA5P,GAEA,OAAO5oB,KAAKy4B,YAAiDD,EAAO5P,EAAS,OAC/E,CAEU,iBAAM6P,CACdD,EACA5P,EAEA8P,GAEA,MAAM70B,QAAe7D,KAAKw4B,MAA4BA,EAAO5P,GAC7D,GAAI/kB,EAAO80B,aAAeD,EACxB,aAAmD70B,EAAO+0B,UAE5D,MAAM,IAAI72B,MAAM,sBAAsB22B,2BAAsC70B,EAAO80B,yBACrF,CAQO,WAAMH,CACXA,EACA5P,GAEA,MAAMiQ,QAAe74B,KAAK84B,eAAeN,EAAO5P,GAChD,GAAI,YAAaiQ,EACf,MAAM,IAAI92B,MAAM,oDAElB,OAAO82B,CACT,CAUO,aAAME,CACXP,EACA5P,EACAoQ,GAIA,OAFApQ,EAAQmQ,QAAUC,QACGh5B,KAAK84B,eAAeN,EAAO5P,EAElD,CASO,oBAAMkQ,CACXN,EACA5P,GAEA,MAAMqQ,EAAgC9Q,EAAAmK,cAAcC,oBAAoB3J,GAGpEqQ,EAAc3xB,IAAIyiB,EAAAuH,cAAc4H,gBAC5Bl5B,KAAKm5B,sBAIb,MAAM,OAAEt1B,SAAiB7D,KAAKu4B,eAAea,qBAAqB5N,QAAQ,CAAEgN,QAAO5P,QAASqQ,IAC5F,MAAI,YAAap1B,EACRA,EAEFokB,EAAgBoR,sBAAsBx1B,EAC/C,CAMO,yBAAMy1B,CAAoB1Q,GAE/B,OADAA,EAAUT,EAAAmK,cAAcC,oBAAoB3J,UAC9B5oB,KAAKu4B,eAAegB,8CAC/B/N,QAAQ,CAAE5C,UAASC,YAAY,KAASA,UAC7C,CAMO,+BAAM2Q,CAA0B5Q,GAErC,OADAA,EAAUT,EAAAmK,cAAcC,oBAAoB3J,UAC9B5oB,KAAKu4B,eAAekB,oDAC/BjO,QAAQ,CAAE5C,UAASG,kBAAkB,KAASA,gBACnD,CASO,oBAAM2Q,CAAeC,EAA6BhQ,EAAoBf,GAG3E,GADAA,EAAUT,EAAAmK,cAAcC,oBAAoB3J,IACvCe,EACH,OAAQgQ,EAAYhB,YAClB,IAAK,WACHhP,EAAY,mBACZ,MACF,IAAK,QACHA,EAAY,mBACZ,MACF,QACEA,EAAY,SAIlB,MAAMlB,EAAiC,UAAWR,EAAgB2R,sBAAsBD,GAAc/Q,WACtG,aAAc5oB,KAAKu4B,eAAesB,6BAC/BrO,QAAQ,CAAE5C,UAASH,SAAQE,gBAAiBgB,KAAclB,MAC/D,CASO0Q,mBAAAA,CAAoBzxB,EAAckhB,GAEvC,OADAA,EAAUT,EAAAmK,cAAcC,oBAAoB3J,GACrC5oB,KAAKu4B,eAAeuB,uBAAuBtO,QAAQ,CAAE9jB,MAAKkhB,WACnE,CAMO,4BAAOyQ,CAAsBU,GAClC,OAAQA,EAAertB,MACrB,IAAK,WACH,MAAO,CACLisB,WAAY,WACZC,QAAS9L,SAAWiN,EAAevN,eACnCa,SAAUP,eAAuBiN,EAAe1M,WAChDzE,QAASmR,EAAenR,SAE5B,IAAK,QACH,MAAO,CACL+P,WAAY,QACZC,QAAS9L,SAAWiN,EAAeC,WACnC3M,SAAUP,eAAuBiN,EAAe1M,WAChDzE,QAASmR,EAAenR,SAE5B,IAAK,UACH,MAAO,CACL+P,WAAY,UACZC,QAAS9L,SAAWiN,EAAenB,UACnChQ,QAASmR,EAAenR,SAE5B,IAAK,OACH,MAAO,CACL+P,WAAY,OACZC,QAAS9L,SAAWiN,EAAenB,UACnChQ,QAASmR,EAAenR,SAGhC,CAMO,kCAAagR,CAAsBK,GACxC,OAAQA,EAAYtB,YAClB,IAAK,WACH,MAAO,CACLjsB,KAAM,WACN8f,qBAAuCyN,EAAYrB,UACnDvL,SAAUP,eAAuBmN,EAAY5M,YAEjD,IAAK,QACH,MAAO,CACL3gB,KAAM,QACNstB,iBAA4CC,EAAYrB,UACxDvL,SAAUP,eAAuBmN,EAAY5M,YAEjD,IAAK,UACH,MAAO,CACL3gB,KAAM,UACNksB,QAASA,IAAMqB,EAAYrB,WAE/B,IAAK,OACH,MAAO,CACLlsB,KAAM,OACNksB,QAASA,IAAMqB,EAAYrB,WAGnC,EA/OF10B,EAAAA,gBAAA+jB,oiBjBxBAzf,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACA,IAAAg2B,EAAAhX,EAAA,OAAS9hB,OAAAA,eAAAA,EAAAA,kBAAAA,CAAAiG,YAAA,EAAAC,IAAA,kBAAA4yB,EAAAjS,eAAe,+IkBCxB,MAAAkS,EAAAjX,EAAA,MACA4G,EAAA5G,EAAA,OACAkX,EAAAlX,EAAA,OACA6G,EAAA7G,EAAA,OAGAiH,EAAAjH,EAAA,OAKA,MAAamX,UAA2DF,EAAAG,4BACtEtrB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GACf,MAAMuD,EAAiCvD,EAAOK,QAAQthB,IAAIyiB,EAAAoB,mBAAmByG,eAAiB,GAC9F,GAAuB,IAAnB9F,EAAQvqB,OACV,MAAO,CAAEopB,UAAWpC,EAAOoC,UAAW/B,QAASL,EAAOK,SAExD,GAAuB,IAAnBkD,EAAQvqB,OAAc,CACxB,MAAMyxB,EAAgBlH,EAAQ,GACxBiL,EAA4CxO,EAAOK,QAAQthB,IAAIyiB,EAAA+M,mBAAmBC,aACxF,IAAKA,GAAe/D,EAAcxD,OAAO2C,kBAAmB,EAAAiI,EAAAG,yBAAwBxD,GAClF,IACE,MAAMyD,QAAcxH,EAAcxD,OAAO8D,iBAAiB/K,EAAOK,SACjE,GAAIkB,EAAAuB,oBAAoBoP,yBAAyBD,EAAOjS,EAAOoC,WAC7D,MAAO,CACLA,UAAWb,EAAAuB,oBAAoBsE,sBAAsBpH,EAAOoC,UAAWqI,GACvEpK,QAASL,EAAOK,QAGtB,CAAE,MAEA,CAGN,CACA,MAAO,CACL+B,UAAW3qB,KAAK06B,iBAAiBnS,EAAOoC,UAAWmB,GAGnDlD,QAASL,EAAOK,QACbiI,OAAO9G,EAAAuH,cAAcqJ,aAE5B,CASOD,gBAAAA,CAAiB/P,EAA8BmB,GAEpD,MAAM5iB,EAAOlJ,KACb,OAAOmqB,EAAAqL,KAAKC,aAAa9K,EAAW,CAClC,CAACR,EAAAyE,QAAQC,MAAM6G,SAAQ,CAACkF,EAAchF,IACb,IAAnB9J,EAAQvqB,OACH,CACLsC,OAAQimB,EAAAuB,oBAAoBsE,sBAAsBiL,EAAc9O,EAAQ,IACxE+J,SAAS,GAGN,CACLhyB,OAAQ+xB,EAAQzJ,YAAYL,EACzB3mB,KAAIqqB,GAAU1F,EAAAuB,oBAAoBsE,sBAAsBiL,EAAcpL,MACzEqG,SAAS,GAGb,CAAC1L,EAAAyE,QAAQC,MAAMS,MAAK,CAACsL,EAAchF,IACV,IAAnB9J,EAAQvqB,OACH,CACLsC,OAAQimB,EAAAuB,oBAAoBsE,sBAAsBiL,EAAc9O,EAAQ,IACxE+J,SAAS,GAGN,CACLhyB,OAAQ+xB,EAAQiF,UAAU/O,EACvB3mB,KAAIqqB,GAAU1F,EAAAuB,oBAAoBsE,sBAAsBiL,EAAcpL,MACzEqG,SAAS,GAGb,CAAC1L,EAAAyE,QAAQC,MAAMU,KAAI,CAACqL,EAAchF,IACT,IAAnB9J,EAAQvqB,OACH,CACLsC,OAAQimB,EAAAuB,oBAAoBsE,sBAAsBiL,EAAc9O,EAAQ,IACxE+J,SAAS,GAGN,CACLhyB,OAAQ+xB,EAAQiF,UAAU/O,EACvB3mB,KAAIqqB,GAAU1F,EAAAuB,oBAAoBsE,sBAAsBiL,EAAcpL,MACzEqG,SAAS,GAGb,CAAC1L,EAAAyE,QAAQC,MAAMiM,SAASF,IACf,CACL/2B,OAAQ+2B,EACR/E,SAAS,IAGb,CAAC1L,EAAAyE,QAAQC,MAAMkM,WAAU,CAACH,EAAchF,KAC/B,CACL/xB,OAAQ+xB,EAAQoF,gBACd9xB,EAAKwxB,iBAAiBE,EAAantB,MAAOqe,GAC1C8O,EAAaK,UAEfpF,SAAS,IAGb,CAAC1L,EAAAyE,QAAQC,MAAMqM,eAAc,CAACN,EAAchF,KACnC,CACL/xB,OAAQ+xB,EAAQuF,mBACdP,EAAa/J,OACb+J,EAAaQ,OACbR,EAAaS,MAAQnyB,EAAKwxB,iBAAiBE,EAAaS,MAAOvP,QAAW3rB,GAE5E01B,SAAS,KAIjB,EArHF3xB,EAAAA,mDAAAm2B,2gBfhBA7xB,EAAA0a,EAAA,OAAAhf,gIgBIA,MAAAi2B,EAAAjX,EAAA,MAGAiH,EAAAjH,EAAA,OAKA,MAAaoY,UAA6CnB,EAAAG,4BACjD,UAAMrwB,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GASf,MAAO,CAAEoC,UARSR,EAAAqL,KAAKC,aAAalN,EAAOoC,UAAW,CACpD4Q,IAAGA,CAAC5F,EAAiBC,KACZ,CACLC,SAAS,EACThyB,OAAQ+xB,EAAQ4F,WAAW7F,EAAG8F,cAIhB7S,QAASL,EAAOK,QACtC,EAfF1kB,EAAAA,qCAAAo3B,2gBhBZA9yB,EAAA0a,EAAA,OAAAhf,wIiBKA,MAAAi2B,EAAAjX,EAAA,MACAwY,EAAAxY,EAAA,OAGAiH,EAAAjH,EAAA,OAKA,MAAayY,UAAqDxB,EAAAG,4BAChEtrB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKse,GAChB,IAAKA,EAAOK,QAAQzb,IAAIuuB,EAAApK,cAAcsK,mBACpC,MAAM,IAAI75B,MAAM,GAAG/B,KAAKgK,sCAE1B,OAAO,CACT,CAEO,SAAMse,CAAIC,GASf,MAAO,CAAEoC,UARSR,EAAAqL,KAAKC,aAAalN,EAAOoC,UAAW,CACpDkR,UAASA,CAAClG,EAAuBC,KACxB,CACLC,SAAS,EACThyB,OAAQ+xB,EAAQlK,eAAekK,EAAQoF,gBAAgBrF,EAAGloB,MAAOkoB,EAAGsF,eAItDrS,QAASL,EAAOK,QAAQiI,OAAO6K,EAAApK,cAAcsK,mBACnE,EAtBF13B,EAAAA,6CAAAy3B,2gBjBdAnzB,EAAA0a,EAAA,OAAAhf,kJkBKA,MAAAi2B,EAAAjX,EAAA,MAGA+G,EAAA/G,EAAA,OACAiH,EAAAjH,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YACTwR,EAAK,IAAI3R,EAAAyF,QAKf,MAAamM,UAA+D5B,EAAAG,4BAC1EtrB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKse,GAChB,GAAIA,EAAOoC,UAAUje,OAASyd,EAAAyE,QAAQC,MAAMmN,SAC1C,MAAM,IAAIj6B,MAAM,SAAS/B,KAAKgK,mDAAmDue,EAAOoC,UAAUje,QAEpG,OAAO,CACT,CAEO,SAAM4b,CAAIC,GACf,MAAM0T,EAAyD1T,EAAOoC,UAGhEuR,EAAkCD,EAAkBE,MACvDl3B,QAAOovB,GAA0B,aAAlBA,EAAK7G,WACpBroB,KAAKkvB,IAEJ,MAAMoH,EAA2B,CAC/BpR,EAAGqK,KAAKL,EAAMhK,EAAGY,SAAS,eAAgBZ,EAAGY,SAAS,cAWxD,OAPAwQ,EAAS/wB,SAAS0xB,GAAyBA,EAAgB1vB,KAAO,YAOvC,CACzBe,MAP2C,CAC3Cf,KAAMyd,EAAAyE,QAAQC,MAAMwN,IACpBZ,SAA8BA,GAM9BR,SAA8BQ,EAC9B/uB,KAAM,YACP,IAKL,GAAIwvB,EAAW36B,SAAW06B,EAAkBE,MAAM56B,OAAQ,CACxD,IAAI+6B,EAAsC,GAC1CL,EAAkBE,MACfl3B,QAAOovB,GAA0B,aAAlBA,EAAK7G,WAEpB9iB,SAAQ,CAAC2pB,EAAgBhzB,KAExB,MAAMo6B,EAA2B,CAC/BpR,EAAGqK,KAAKL,EAAMhK,EAAGY,SAAS,cAAc5pB,KAAMgpB,EAAGY,SAAS,WAAW5pB,OAIvEo6B,EAAS/wB,SAAS0xB,GAAyBA,EAAgB1vB,KAAO,YAClE4vB,EAAmB,IAAKA,KAAyCb,EAAU,IAK/ES,EAAW34B,KAAK,CACdkK,MAAO,CACLf,KAAMyd,EAAAyE,QAAQC,MAAM0N,KACpB9uB,MAAO,CACLwuB,EAAkBxuB,MAClB,CAAEf,KAAMyd,EAAAyE,QAAQC,MAAMwN,IAAKZ,SAAUa,KAGzCrB,SAAUqB,EACV5vB,KAAMyd,EAAAyE,QAAQC,MAAMkM,WAExB,CAKA,MAAO,CAAEpQ,UAFSmR,EAAG3P,YAAY+P,GAAY,GAEzBtT,QAASL,EAAOK,QACtC,EA5EF1kB,EAAAA,uDAAA63B,2gBlBjBAvzB,EAAA0a,EAAA,OAAAhf,qImBKA,MAAAi2B,EAAAjX,EAAA,MACA4G,EAAA5G,EAAA,OAIAiR,EAAAjR,EAAA,OAEAiH,EAAAjH,EAAA,OAKA,MAAasZ,UAAkDrC,EAAAG,4BAQ7DtrB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GACf,IAAIoC,EAA+BpC,EAAOoC,UAE1C,MAAMzhB,EAAOlJ,KAGTA,KAAKy8B,mBACP9R,EAAYR,EAAAqL,KAAKC,aAAa9K,EAAW,CACvC1lB,OAAMA,CAAC0wB,EAAoBC,IAErBD,EAAG+G,WAAWC,iBAAmBxS,EAAAyE,QAAQgO,gBAAgBC,UAAuC,OAA3BlH,EAAG+G,WAAWI,UACrF5zB,EAAK6zB,SAASxU,EAAOK,QAAS,iCAAiC+M,EAAG+G,WAAWj4B,KAAKlD,yBAC3E,CACLs0B,SAAS,EACThyB,OAAQ8xB,EAAG+G,WAAWj4B,KACnBu4B,QAAO,CAACrS,EAAW+R,IAAe9G,EAAQqH,aAAatS,EAAW+R,IAAa/G,EAAGloB,SAGlF,CACLooB,SAAS,EACThyB,OAAQ8xB,MAOhB,MAAM7J,EAAU9rB,KAAKk9B,WAAWvS,GAE1BwS,EAAe,IAAI3b,UAA2D3b,QAAQ4rB,IAAI3F,EAC7F3mB,KAAI2nB,SAAgB,CAAE0C,QAAcA,EAAOA,OAAO8D,iBAAiB/K,EAAOK,cAI7E,IAAIwU,GAAS,EACTC,EAAa,EACjB,KAAOD,GAAUC,EAAar9B,KAAKs9B,eACjCF,GAAS,EACTzS,EAAYR,EAAAqL,KAAKC,aAAa9K,EAAW,CACvC1lB,MAAAA,CAAO0wB,EAAoBC,GAEzB,IAAK1sB,EAAKq0B,sBAAsB5H,EAAI7J,EAASqR,GAC3C,MAAO,CACLtH,SAAS,EACThyB,OAAQ8xB,GAMZ,MAAM3S,EAAY9Z,EAAKs0B,uBAAuB7H,EAAG+G,aACzCe,EAAY55B,GAAWqF,EAC5Bw0B,eAAe/H,EAAG+G,WAAY1Z,EAAW2S,EAAGloB,MAAOmoB,EAASrN,EAAOK,SAItE,OAHI6U,IACFL,GAAS,GAEJ,CACLvH,SAAS,EACThyB,SAEJ,IAEFw5B,IA+BF,OA5BIA,EAAa,GACfn0B,EAAK6zB,SAASxU,EAAOK,QAAS,0BAA0ByU,gBAItDr9B,KAAK29B,mBACPhT,EAAYR,EAAAqL,KAAKC,aAAa9K,EAAW,CACvC1lB,MAAAA,CAAO0wB,EAAoBC,GACzB,GAAID,EAAGloB,MAAMf,OAASyd,EAAAyE,QAAQC,MAAM+O,OAAQ,CAC1C,MAAM,kBAAEC,EAAiB,MAAEpwB,GAAUvE,EAAK40B,2BAA2BnI,GAErE,OADAzsB,EAAK6zB,SAASxU,EAAOK,QAAS,SAASiV,EAAkBt8B,iDAClD,CACLs0B,SAAS,EACThyB,OAAQ+xB,EAAQqH,aACdxvB,EACAowB,EAAkBr5B,MAAM,GAAGw4B,QAAO,CAACe,EAAUC,IAC3CpI,EAAQqI,yBAAyB,KAAM,CAAEF,EAAUC,KAAYH,EAAkB,KAGzF,CACA,MAAO,CACLhI,SAAS,EACThyB,OAAQ8xB,EAEZ,KAIG,CAAEhL,YAAW/B,QAASL,EAAOK,QACtC,CAWO2U,qBAAAA,CACL5S,EACAmB,EACAqR,GAGA,GAAIn9B,KAAKk+B,mBACP,OAAO,EAIT,MAAMxB,EAAa/R,EAAU+R,WAC7B,OAAIA,EAAWC,iBAAmBxS,EAAAyE,QAAQgO,gBAAgBC,UAChC,MAAxBH,EAAWI,WAC6B,SAAtCJ,EAAWj4B,KAAK,GAAGk4B,gBAAkE,aAArCD,EAAWj4B,KAAK,GAAG4vB,KAAK7G,UAChC,SAAtCkP,EAAWj4B,KAAK,GAAGk4B,gBAAkE,aAArCD,EAAWj4B,KAAK,GAAG4vB,KAAK7G,UACnC,SAAtCkP,EAAWj4B,KAAK,GAAGk4B,gBAAkE,aAArCD,EAAWj4B,KAAK,GAAG4vB,KAAK7G,UACjC,SAAtCkP,EAAWj4B,KAAK,GAAGk4B,gBAAkE,aAArCD,EAAWj4B,KAAK,GAAG4vB,KAAK7G,aAK1E1B,EAAQqS,MAAK3O,GAAU1F,EAAAuB,oBAAoBoP,yBAAyB0C,EAAa71B,IAAIkoB,GAAU7E,IAMrG,CAMOuS,UAAAA,CAAWvS,GAChB,MAAMmB,EAAU,IAAIvN,IACd6f,EAAexD,IACnB,MAAMyD,EAAMvU,EAAAuB,oBAAoBoE,mBAAmBmL,GAInD,OAHIyD,GACFvS,EAAQrN,IAAI4f,IAEP,CAAK,EAQd,OANAlU,EAAAqL,KAAK8I,iBAAiB3T,EAAW,CAC/B,CAACR,EAAAyE,QAAQC,MAAM6G,SAAU0I,EACzB,CAACjU,EAAAyE,QAAQC,MAAMS,MAAO8O,EACtB,CAACjU,EAAAyE,QAAQC,MAAMU,KAAM6O,EACrB,CAACjU,EAAAyE,QAAQC,MAAMiM,SAAUsD,IAEpB,IAAKtS,EACd,CAOO0R,sBAAAA,CAAuBd,GAC5B,OAAQA,EAAWC,gBACjB,KAAKxS,EAAAyE,QAAQgO,gBAAgB2B,UAC7B,KAAKpU,EAAAyE,QAAQgO,gBAAgB4B,SAC3B,MAAM,IAAIz8B,MAAM,qDAAqD26B,EAAWC,kBAClF,KAAKxS,EAAAyE,QAAQgO,gBAAgB6B,UAC3B,OAAOtU,EAAAqL,KAAKkJ,iBAAiBhC,EAAWjvB,OAC1C,KAAK0c,EAAAyE,QAAQgO,gBAAgB+B,MAC3B,MAAO,GACT,KAAKxU,EAAAyE,QAAQgO,gBAAgBC,SAC3B,OAAO,EAAA1I,EAAAyK,WAAUlC,EAAWj4B,KAAKuqB,SAAQ6P,GAAO7+B,KAAKw9B,uBAAuBqB,MAC9E,KAAK1U,EAAAyE,QAAQgO,gBAAgBkC,KAC3B,MAAiC,aAA7BpC,EAAWrI,KAAK7G,SACX,CAAEkP,EAAWrI,MAEf,GAEb,CAEU0K,wBAAAA,CACRpU,EACAqU,GAMA,MAAMC,EAAwC,GACxCC,EAA4C,GAC5CC,EAAsC,GAC5C,IAAK,MAAM1xB,KAASkd,EAAUld,MAAO,CACnC,MAAM2xB,EAAiBjV,EAAAqL,KAAKkJ,iBAAiBjxB,GACzCzN,KAAKq/B,kBAAkBL,EAAqBI,GAC9CH,EAAiB17B,KAAKkK,GACbzN,KAAKs/B,mBAAmBN,EAAqBI,GACtDF,EAAqB37B,KAAKkK,GAE1B0xB,EAAe57B,KAAKkK,EAExB,CAEA,MAAO,CACLwxB,mBACAC,uBACAC,iBAEJ,CAeOzB,cAAAA,CACLhB,EACAsC,EACArU,EACAiL,EACAhN,GAGA,GAAI5oB,KAAKu/B,kBAAkB7C,GACzB,MAAO,EAAE,EAAM9G,EAAQzJ,YAAY,KAIrC,GAAIuQ,EAAWhwB,OAASyd,EAAAyE,QAAQC,MAAM2Q,YACpC9C,EAAWC,iBAAmBxS,EAAAyE,QAAQgO,gBAAgB6B,UACtD,MAAO,EAAE,EAAO7I,EAAQqH,aAAatS,EAAW+R,IAGlD,OAAQ/R,EAAUje,MAChB,KAAKyd,EAAAyE,QAAQC,MAAM4Q,OAEjB,OAAKz/B,KAAKs/B,mBAAmB,CAAE3U,EAAUM,UAAY+T,GAO9C,EAAE,EAAOpJ,EAAQqH,aAAatS,EAAW+R,IANvC,EAAE,EAAM9G,EAAQ8J,aACrB1/B,KAAK09B,eAAehB,EAAYsC,EAAqBrU,EAAUld,MAAOmoB,EAAShN,GAAS,GACxF+B,EAAUM,SACVN,EAAU+R,aAIhB,KAAKvS,EAAAyE,QAAQC,MAAM+O,OAAQ,CAEzB,MAAQH,EAAY55B,GAAW7D,KAC5B09B,eAAehB,EAAYsC,EAAqBrU,EAAUld,MAAOmoB,EAAShN,GAC7E,MAAO,CAAE6U,EAAY7H,EAAQqH,aAAap5B,EAAQ8mB,EAAU+R,YAC9D,CACA,KAAKvS,EAAAyE,QAAQC,MAAM0N,KAAM,CAEvB,GAA+B,IAA3B5R,EAAUld,MAAMlM,OAClB,MAAO,EAAE,EAAOq0B,EAAQqH,aAAatS,EAAW+R,IAIlD,MAAM,iBACJuC,EAAgB,qBAChBC,EAAoB,eACpBC,GACEn/B,KAAK++B,yBAAyBpU,EAAWqU,GAEvCW,EAA6B,GACnC,IAAIlC,GAAa,EAqBjB,OApBIwB,EAAiB19B,OAAS,IAC5Bk8B,GAAa,EACbkC,EAAMp8B,KAAKqyB,EAAQ4F,WAAWyD,EAC3B95B,KAAIsI,GAASzN,KAAK09B,eAAehB,EAAYsC,EAAqBvxB,EAAOmoB,EAAShN,GAAS,QAE5FsW,EAAqB39B,OAAS,GAChCo+B,EAAMp8B,KAAKqyB,EAAQqH,aAAarH,EAAQ4F,WAAW0D,GAAsB,GAAQxC,IAE/EyC,EAAe59B,OAAS,GAC1Bo+B,EAAMp8B,QAAQ47B,GAGZQ,EAAMp+B,OAAS,IACjBk8B,GAAa,GAGXA,GACFz9B,KAAK+8B,SAASnU,EAAS,6CAA6CqW,EAAiB19B,6BAA6B29B,EAAqB39B,qCAAqC49B,EAAe59B,0BAGtL,CAAEk8B,EAA6B,IAAjBkC,EAAMp+B,OAAeo+B,EAAM,GAAK/J,EAAQ4F,WAAWmE,GAC1E,CACA,KAAKxV,EAAAyE,QAAQC,MAAM+Q,IACjB,MAAO,EAAE,EAAMjV,GACjB,KAAKR,EAAAyE,QAAQC,MAAMgR,QAEjB,OAAI7/B,KAAKs/B,mBAAmB3U,EAAU3H,UAAWgc,GACxC,EAAE,EAAMpJ,EAAQkK,cACrB9/B,KAAK09B,eAAehB,EAAYsC,EAAqBrU,EAAUld,MAAOmoB,EAAShN,GAAS,GACxF+B,EAAU3H,YAIP,EAAE,EAAM2H,GACjB,KAAKR,EAAAyE,QAAQC,MAAMkR,MAAO,CAExB,MAAM,iBACJd,EAAgB,qBAChBC,EAAoB,eACpBC,GACEn/B,KAAK++B,yBAAyBpU,EAAWqU,GAEvCgB,EAA8B,GACpC,IAAIvC,GAAa,EAqBjB,OApBIwB,EAAiB19B,OAAS,IAC5Bk8B,GAAa,EACbuC,EAAOz8B,KAAKqyB,EAAQzJ,YAAY8S,EAC7B95B,KAAIsI,GAASzN,KAAK09B,eAAehB,EAAYsC,EAAqBvxB,EAAOmoB,EAAShN,GAAS,QAE5FsW,EAAqB39B,OAAS,GAChCy+B,EAAOz8B,KAAKqyB,EAAQqH,aAAarH,EAAQzJ,YAAY+S,GAAsB,GAAQxC,IAEjFyC,EAAe59B,OAAS,GAC1By+B,EAAOz8B,QAAQ47B,GAGba,EAAOz+B,OAAS,IAClBk8B,GAAa,GAGXA,GACFz9B,KAAK+8B,SAASnU,EAAS,8CAA8CqW,EAAiB19B,6BAA6B29B,EAAqB39B,qCAAqC49B,EAAe59B,0BAGvL,CAAEk8B,EAA8B,IAAlBuC,EAAOz+B,OAAey+B,EAAO,GAAKpK,EAAQzJ,YAAY6T,GAC7E,CACA,KAAK7V,EAAAyE,QAAQC,MAAMoR,OAEjB,OAAIjgC,KAAKs/B,mBAAmB3U,EAAU3H,UAAWgc,GACxC,EAAE,EAAOpJ,EAAQqH,aAAatS,EAAW+R,IAE3C,EAAE,EAAM/R,GACjB,KAAKR,EAAAyE,QAAQC,MAAMqR,UACjB,GAAIlgC,KAAKmgC,kBAAmB,CAC1B,MAAMC,EAAiBjW,EAAAqL,KAAKkJ,iBAAiB/T,EAAUld,MAAM,IAC7D,IAAKzN,KAAKs/B,mBAAmBN,EAAqBoB,GAGhD,OADApgC,KAAK+8B,SAASnU,EAAS,mCAChB,EAAE,EAAMgN,EAAQyK,eACrBrgC,KAAK09B,eAAehB,EAAYsC,EAAqBrU,EAAUld,MAAM,GAAImoB,EAAShN,GAAS,GAC3F+B,EAAUld,MAAM,GAChBkd,EAAU+R,YAGhB,CAGA,MAAO,EAAE,EAAO9G,EAAQqH,aAAatS,EAAW+R,IAElD,KAAKvS,EAAAyE,QAAQC,MAAM6G,QACjB,GAAI11B,KAAKsgC,yBAA0B,CAEjC,MAAMC,EAAiBvgC,KAAKwgC,yCAAyC9D,GACrE,GAAI6D,EAAgB,CAClB,IAAI9C,GAAa,EACjB,MAAMgD,EAAmB9V,EAAU0C,SAUnC,IATA1C,GAAY,EAAAwJ,EAAAQ,gBAAehK,GAAYzqB,GACjCA,EAAMwgC,OAAOH,EAAetV,WAC9BwS,GAAa,EACN8C,EAAelM,MAEjBn0B,KAECwM,KAAOyd,EAAAyE,QAAQC,MAAM6G,QAC/B/K,EAAU0C,SAAWoT,EACjBhD,EAEF,OADAz9B,KAAK+8B,SAASnU,EAAS,sCAAsC2X,EAAetV,SAAS/qB,SAC9E,EAAE,EAAM01B,EAAQ4F,WAAW,CAChC7Q,EACAiL,EAAQ+K,aACN,CAAEJ,EAAetV,UACjB,CAAC,CAAE,CAAC,IAAIsV,EAAetV,SAAS/qB,SAAwCqgC,EAAelM,UAI/F,CACF,CAGA,MAAO,EAAE,EAAOuB,EAAQqH,aAAatS,EAAW+R,IAElD,KAAKvS,EAAAyE,QAAQC,MAAMiH,KACjB,GAAI91B,KAAKsgC,yBAA0B,CAEjC,MAAMC,EAAiBvgC,KAAKwgC,yCAAyC9D,GACrE,GAAI6D,IACD5V,EAAUI,QAAQ2V,OAAOH,EAAetV,WAAaN,EAAUK,OAAO0V,OAAOH,EAAetV,WAAY,CACzGjrB,KAAK+8B,SAASnU,EAAS,mCAAmC2X,EAAetV,SAAS/qB,SAClF,MAAMugC,EAAmB9V,EAAU0C,SAOnC,OANA1C,EAAYiL,EAAQ3J,WAClBtB,EAAUI,QAAQ2V,OAAOH,EAAetV,UAAYsV,EAAelM,KAAO1J,EAAUI,QACpFJ,EAAUC,UACVD,EAAUK,OAAO0V,OAAOH,EAAetV,UAAYsV,EAAelM,KAAO1J,EAAUK,SAE3EqC,SAAWoT,EACd,EAAE,EAAM7K,EAAQ4F,WAAW,CAChC7Q,EACAiL,EAAQ+K,aACN,CAAEJ,EAAetV,UACjB,CAAC,CAAE,CAAC,IAAIsV,EAAetV,SAAS/qB,SAAwCqgC,EAAelM,UAG7F,CACF,CAGA,MAAO,EAAE,EAAOuB,EAAQqH,aAAatS,EAAW+R,IAElD,KAAKvS,EAAAyE,QAAQC,MAAM+R,MACnB,KAAKzW,EAAAyE,QAAQC,MAAMC,IACnB,KAAK3E,EAAAyE,QAAQC,MAAMgS,IACnB,KAAK1W,EAAAyE,QAAQC,MAAMwN,IACnB,KAAKlS,EAAAyE,QAAQC,MAAMkM,UACnB,KAAK5Q,EAAAyE,QAAQC,MAAMmN,SACnB,KAAK7R,EAAAyE,QAAQC,MAAMiS,SACnB,KAAK3W,EAAAyE,QAAQC,MAAM2Q,WACnB,KAAKrV,EAAAyE,QAAQC,MAAMkS,KACnB,KAAK5W,EAAAyE,QAAQC,MAAMmS,MACnB,KAAK7W,EAAAyE,QAAQC,MAAMoS,MACnB,KAAK9W,EAAAyE,QAAQC,MAAMK,IACnB,KAAK/E,EAAAyE,QAAQC,MAAMS,KACnB,KAAKnF,EAAAyE,QAAQC,MAAMU,IACnB,KAAKpF,EAAAyE,QAAQC,MAAMM,iBACnB,KAAKhF,EAAAyE,QAAQC,MAAMqS,SACnB,KAAK/W,EAAAyE,QAAQC,MAAMsS,QACnB,KAAKhX,EAAAyE,QAAQC,MAAME,IACnB,KAAK5E,EAAAyE,QAAQC,MAAMiM,QACnB,KAAK3Q,EAAAyE,QAAQC,MAAMuS,MACnB,KAAKjX,EAAAyE,QAAQC,MAAMO,kBACnB,KAAKjF,EAAAyE,QAAQC,MAAMQ,iBACnB,KAAKlF,EAAAyE,QAAQC,MAAMwS,iBACnB,KAAKlX,EAAAyE,QAAQC,MAAMqM,cACnB,KAAK/Q,EAAAyE,QAAQC,MAAMyS,KACnB,KAAKnX,EAAAyE,QAAQC,MAAM0S,MACnB,KAAKpX,EAAAyE,QAAQC,MAAM2S,OACnB,KAAKrX,EAAAyE,QAAQC,MAAM4S,KACnB,KAAKtX,EAAAyE,QAAQC,MAAM6S,IACnB,KAAKvX,EAAAyE,QAAQC,MAAM8S,KACnB,KAAKxX,EAAAyE,QAAQC,MAAM+S,KAGjB,MAAO,EAAE,EAAOhM,EAAQqH,aAAatS,EAAW+R,IAEtD,CAQO8D,wCAAAA,CACL9D,GAEA,GAAIA,EAAWC,iBAAmBxS,EAAAyE,QAAQgO,gBAAgBC,UAAoC,MAAxBH,EAAWI,SAAkB,CACjG,GAA0C,SAAtCJ,EAAWj4B,KAAK,GAAGk4B,gBAAkE,aAArCD,EAAWj4B,KAAK,GAAG4vB,KAAK7G,WACpC,YAArCkP,EAAWj4B,KAAK,GAAG4vB,KAAK7G,UACvBxtB,KAAK6hC,kCAAkCnF,EAAWj4B,KAAK,GAAG4vB,QACtB,SAAtCqI,EAAWj4B,KAAK,GAAGk4B,gBAAkE,aAArCD,EAAWj4B,KAAK,GAAG4vB,KAAK7G,SACxE,MAAO,CACLvC,SAAUyR,EAAWj4B,KAAK,GAAG4vB,KAC7BA,KAAMqI,EAAWj4B,KAAK,GAAG4vB,MAG7B,GAA0C,SAAtCqI,EAAWj4B,KAAK,GAAGk4B,gBAAkE,aAArCD,EAAWj4B,KAAK,GAAG4vB,KAAK7G,UACpC,SAAtCkP,EAAWj4B,KAAK,GAAGk4B,gBAAkE,aAArCD,EAAWj4B,KAAK,GAAG4vB,KAAK7G,WAClC,YAArCkP,EAAWj4B,KAAK,GAAG4vB,KAAK7G,UACvBxtB,KAAK6hC,kCAAkCnF,EAAWj4B,KAAK,GAAG4vB,OAC5D,MAAO,CACLpJ,SAAUyR,EAAWj4B,KAAK,GAAG4vB,KAC7BA,KAAMqI,EAAWj4B,KAAK,GAAG4vB,KAG/B,CACF,CAUUwN,iCAAAA,CAAkCxN,GAC1C,GAAsB,YAAlBA,EAAK7G,SACP,OAAQ6G,EAAKyN,SAAS5hC,OACpB,IAAK,0CACL,IAAK,wDACL,IAAK,oDACL,IAAK,0CACL,IAAK,gDACL,IAAK,4CACL,IAAK,wCACL,IAAK,0CACL,IAAK,2CACL,IAAK,yCACL,IAAK,6CACH,OAAO,EAGb,OAAO,CACT,CAOOo/B,kBAAAA,CAAmByC,EAAuBC,GAC/C,OAAOD,EAAM5D,MAAK8D,GAAQD,EAAM7D,MAAK+D,GAAQD,EAAKvB,OAAOwB,MAC3D,CAQO7C,iBAAAA,CAAkB8C,EAA6BC,GACpD,OAAOD,EAAY5gC,QAAU6gC,EAAa7gC,QACxC4gC,EAAYE,OAAMJ,GAAQG,EAAajE,MAAK+D,GAAQD,EAAKvB,OAAOwB,MACpE,CAMO3C,iBAAAA,CAAkB7C,GACvB,OAAQA,EAAWrI,MAAqC,YAA7BqI,EAAWrI,KAAK7G,UAAoD,UAA1BkP,EAAWrI,KAAKn0B,KACvF,CAOO49B,0BAAAA,CACLnI,GAEA,GAAIA,EAAGloB,MAAMf,OAASyd,EAAAyE,QAAQC,MAAM+O,OAAQ,CAC1C,MAAM0E,EAAYtiC,KAAK89B,2BAA2BnI,EAAGloB,OACrD,MAAO,CAAEowB,kBAAmB,CAAElI,EAAG+G,cAAe4F,EAAUzE,mBAAqBpwB,MAAO60B,EAAU70B,MAClG,CACA,MAAO,CAAEowB,kBAAmB,CAAElI,EAAG+G,YAAcjvB,MAAOkoB,EAAGloB,MAC3D,EA9jBFvJ,EAAAA,0CAAAs4B,2gBnBjBAh0B,EAAA0a,EAAA,OAAAhf,mIoBKA,MAAAi2B,EAAAjX,EAAA,MACA4G,EAAA5G,EAAA,OAGAiH,EAAAjH,EAAA,OAEM4Y,EAAK,IAAI3R,EAAAyF,QAKf,MAAa2S,UAAgDpI,EAAAG,4BAC3DtrB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKse,GAChB,GAAIuB,EAAAuB,oBAAoBoE,mBAAmBlH,EAAOoC,WAChD,MAAM,IAAI5oB,MAAM,SAAS/B,KAAKgK,wDAEhC,OAAO,CACT,CAEO,SAAMse,CAAIC,GACf,MAAO,CAAEoC,gBAAiB3qB,KAAKwiC,eAAeja,EAAOoC,UAAWpC,EAAOK,SAAUA,QAASL,EAAOK,QACnG,CASO,oBAAM4Z,CAAe7X,EAA8B/B,GAExD,GAAIkB,EAAAuB,oBAAoBoE,mBAAmB9E,MAAgB,UAAWA,GACpE,OAAOA,EAIT,IAAKhgB,MAAMC,QAAQ+f,EAAUld,OAAQ,CACnC,MAAMg1B,QAAqBziC,KAAKwiC,eAAe7X,EAAUld,MAAOmb,GAChE,GAAI6Z,EAAapV,UAAUqV,aAAc,CACvC,MAAMlT,EAA8B1F,EAAAuB,oBAAoBoE,mBAAmBgT,GACvE3Y,EAAAuB,oBACDoP,+BAA+BjL,EAAOA,OAAO8D,iBAAiB1K,GAAU+B,KACzE3qB,KAAK+8B,SAASnU,EAAS,mDAAmD+B,EAAUje,sBAAsB8iB,EAAOA,OAAOhuB,cACxHsoB,EAAAuB,oBAAoBsX,sBAAsBF,GAC1C9X,EAAYb,EAAAuB,oBAAoBsE,sBAAsBhF,EAAW6E,GAErE,CACA,MAA2B,IAAK7E,EAAWld,MAAOg1B,EACpD,CAGA,MAAMG,QAAoC/8B,QAAQ4rB,IAAI9G,EAAUld,MAC7DtI,KAAI09B,GAAY7iC,KAAKwiC,eAAeK,EAAUja,MAC3Cka,EAAW9iC,KAAK+iC,kCAAkCH,GAGxD,GAAwB,IAApBE,EAASvhC,OAAc,CACzB,MAAMyhC,EAAYF,EAAS,GACrBtT,EAAS1F,EAAAuB,oBAAoBoE,mBAAmBqT,EAAS,GAAG,IAClE,MAA2B,UAChB9iC,KAAKijC,sCAAsCtY,EAAWqY,EAAWxT,EAAQ5G,GAClFnb,MAAOu1B,EAEX,CAGA,GAAIF,EAASvhC,SAAWqhC,EAAOrhC,OAC7B,MAA2B,IAAKopB,EAAWld,MAAOm1B,GAIpD,IAAIM,EACJ,OAAQvY,EAAUje,MAChB,KAAKyd,EAAAyE,QAAQC,MAAM0N,KACjB2G,EAAqBpH,EAAGN,WAAWzZ,KAAK+Z,GACxC,MACF,KAAK3R,EAAAyE,QAAQC,MAAMkR,MACjBmD,EAAqBpH,EAAG3P,YAAYpK,KAAK+Z,GACzC,MACF,KAAK3R,EAAAyE,QAAQC,MAAMC,IACjBoU,EAA2BpH,EAAGjB,UAAU9Y,KAAK+Z,GAC7C,MACF,KAAK3R,EAAAyE,QAAQC,MAAME,IACjBmU,EAA2BpH,EAAGqH,UAAUphB,KAAK+Z,GAC7C,MACF,QAOE,MAAM,IAAI/5B,MAAM,0BAA0B4oB,EAAUje,yCAExD,aAAa1M,KAAKojC,oBAAoBN,EAAUI,EAAoBta,EACtE,CAEU,yBAAMwa,CACdN,EACAO,EACAza,GAEA,IAAI0a,GAAU,EACd,MAAMC,QAAqB19B,QAAQ4rB,IAAIqR,EAAS39B,KAAI2nB,UAClD,MAAM0C,EAAS1F,EAAAuB,oBAAoBoE,mBAAmB+T,EAAQ,IACxDC,QAAezjC,KAClBijC,sCAAsCI,EAAcG,GAAS,GAAOA,EAAShU,EAAQ5G,GAIxF,OAHIkB,EAAAuB,oBAAoBoE,mBAAmBgU,KACzCH,GAAU,GAELG,CAAM,KAEf,OAAOJ,EAAcE,EAAcD,EACrC,CAMOP,iCAAAA,CAAkCW,GAEvC,MAAMC,EAAkE,IAAIniB,IACtEoiB,EAA4C,GAGlD,IAAK,MAAMjZ,KAAa+Y,EAAc,CACpC,MAAMlU,EAA8B1F,EAAAuB,oBAAoBoE,mBAAmB9E,GACvE6E,GACGmU,EAAiBx2B,IAAIqiB,IACxBmU,EAAiB73B,IAAI0jB,EAAQ,IAE/BmU,EAAiBr8B,IAAIkoB,GAASjsB,KAAKonB,IAEnCiZ,EAAqBrgC,KAAKonB,EAE9B,CAGA,MAAMmY,EAAkC,GACpCc,EAAqBriC,OAAS,GAChCuhC,EAASv/B,KAAKqgC,GAEhB,IAAK,MAAQpU,EAAQ0M,KAAgByH,EAAiBr2B,UACpDw1B,EAASv/B,KAAK24B,EACX/2B,KAAIwlB,GAAab,EAAAuB,oBAAoBsE,sBAAsBhF,EAAW6E,MAE3E,OAAOsT,CACT,CAWO,2CAAMG,CACXtY,EACAiY,EACApT,EACA5G,GAEA,GAAI4G,GAAU1F,EAAAuB,oBACXoP,+BAA+BjL,EAAOA,OAAO8D,iBAAiB1K,GAAU+B,GAAY,CACrF3qB,KAAK+8B,SAASnU,EAAS,SAASga,EAAOrhC,mDAAmDopB,EAAUje,sBAAsB8iB,EAAOA,OAAOhuB,cACxImpB,EAAYb,EAAAuB,oBAAoBsE,sBAAsBhF,EAAW6E,GACjE,IAAK,MAAM/hB,KAASm1B,EAClB9Y,EAAAuB,oBAAoBsX,sBAAsBl1B,EAE9C,CACA,OAAOkd,CACT,EAvKFzmB,EAAAA,wCAAAq+B,2gBpBhBA/5B,EAAA0a,EAAA,OAAAhf,8HqBIA,MAAAi2B,EAAAjX,EAAA,MAGAiH,EAAAjH,EAAA,OAKA,MAAa2gB,UAA2C1J,EAAAG,4BAC/C,UAAMrwB,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GAef,MAAO,CAAEoC,UAdSR,EAAAqL,KAAKC,aAAalN,EAAOoC,UAAW,CACpDtlB,KAAIA,CAACswB,EAAkBC,IACjBD,EAAGloB,MAAM40B,OAAMQ,GAA8B,QAAlBA,EAASn2B,OAC/B,CACLmpB,SAAS,EACThyB,OAAQ+xB,EAAQkO,UAAUnO,EAAGloB,MAAMuhB,SAAQ6T,GAAYA,EAASpH,aAG7D,CACL5F,SAAS,EACThyB,OAAQ8xB,KAIM/M,QAASL,EAAOK,QACtC,EArBF1kB,EAAAA,mCAAA2/B,2gBrBZAr7B,EAAA0a,EAAA,OAAAhf,oIsBIA,MAAAi2B,EAAAjX,EAAA,MAGAiH,EAAAjH,EAAA,OAKA,MAAa6gB,UAAiD5J,EAAAG,4BACrD,UAAMrwB,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GASf,MAAO,CAAEoC,UARSR,EAAAqL,KAAKC,aAAalN,EAAOoC,UAAW,CACpDtlB,KAAIA,CAACswB,EAAkBC,KACd,CACLC,SAAS,EACThyB,OAAQkgC,EAAyCP,QAAQ7N,EAAIC,OAI/ChN,QAASL,EAAOK,QACtC,CAOO,cAAO4a,CAAQ7N,EAAkBC,GAQtC,IAAIoO,EACAC,EAPoCtO,EAAGloB,MAAMtI,KAAI8pB,IAAS,CAC5DyP,iBAAkBt9B,OAAOq2B,YAAYtN,EAAAqL,KAAKkJ,iBAAiBzP,GAAO9pB,KAAI8lB,GAAY,CAAEA,EAAS/qB,OAAO,MACpGoN,QAAS,CAAE2hB,OAMb,GACE+U,EAAcC,EACdA,EAAcF,EAAyCG,iBAAiBF,SACjEA,EAAYziC,SAAW0iC,EAAY1iC,QAG5C,MAAM4iC,EAAWF,EACd9+B,KAAIq+B,GAAsC,IAA3BA,EAAQl2B,QAAQ/L,OAAeiiC,EAAQl2B,QAAQ,GAAKsoB,EAAQ4F,WAAWgI,EAAQl2B,WACjG,OAA2B,IAApB62B,EAAS5iC,OAAe4iC,EAAS,GAAKvO,EAAQ4F,WAAW2I,GAAU,EAC5E,CAOO,uBAAOD,CAAiBE,GAC7B,MAAMH,EAA8B,GAEpC,IAAK,MAAMI,KAASD,EAAY,CAE9B,IAAIE,GAAS,EACb,IAAK,MAAMC,KAAYN,EACrB,GAAIF,EACDS,yBAAyBH,EAAM3F,iBAAkB6F,EAAS7F,kBAAmB,CAC9E6F,EAASj3B,QAAU,IAAKi3B,EAASj3B,WAAY+2B,EAAM/2B,SACnDi3B,EAAS7F,iBAAmB,IAAK6F,EAAS7F,oBAAqB2F,EAAM3F,kBACrE4F,GAAS,EACT,KACF,CAIGA,GACHL,EAAY1gC,KAAK,CACfm7B,iBAAkB2F,EAAM3F,iBACxBpxB,QAAS+2B,EAAM/2B,SAGrB,CAEA,OAAO22B,CACT,CAOO,+BAAOO,CACZC,EACAC,GAEA,IAAK,MAAMC,KAAavjC,OAAOD,KAAKsjC,GAClC,GAAIC,EAAWC,GACb,OAAO,EAGX,OAAO,CACT,EA3FFzgC,EAAAA,yCAAA6/B,2gBtBZAv7B,EAAA0a,EAAA,OAAAhf,iJuBKA,MAAAi2B,EAAAjX,EAAA,MACA4G,EAAA5G,EAAA,OACA6G,EAAA7G,EAAA,OAGA+G,EAAA/G,EAAA,OACAiH,EAAAjH,EAAA,OAEM4Y,EAAK,IAAI3R,EAAAyF,QACTvF,EAAK,IAAIJ,EAAAK,YAKf,MAAasa,UAA8DzK,EAAAG,4BAGzEtrB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKse,GAChB,GAAIuB,EAAAuB,oBAAoBoE,mBAAmBlH,EAAOoC,WAChD,MAAM,IAAI5oB,MAAM,SAAS/B,KAAKgK,wDAEhC,OAAO,CACT,CAEO,SAAMse,CAAIC,GACf,IAAIoC,EAAYpC,EAAOoC,UAIvB,MAAMka,EAA0D,GAE1D37B,EAAOlJ,KACbmqB,EAAAqL,KAAK8I,iBAAiB3T,EAAW,CAC/B,CAACR,EAAAyE,QAAQC,MAAMkR,OAAOnF,IACpB1xB,EAAK47B,4BAA4BlK,EAAantB,MAAOo3B,EAAqB1a,EAAAyE,QAAQC,MAAM6G,UACjF,GAET,CAACvL,EAAAyE,QAAQC,MAAMC,KAAK8L,IAClB1xB,EAAK47B,4BAA4BlK,EAAantB,MAAOo3B,EAAqB1a,EAAAyE,QAAQC,MAAMS,OACjF,GAET,CAACnF,EAAAyE,QAAQC,MAAMiM,SAAQ,KACd,IAKX,MAAMiK,EAA0C,IAAIxmB,IA0DpD,aAzDM1Y,QAAQ4rB,IAAIoT,EAAoB1/B,KAAI2nB,UACxC,MAAMkY,EAA6C,SAA5BC,EAAmBv4B,KACxCovB,EAAGzP,cAAchC,EAAGY,SAAS,MAAOga,EAAmBC,IAAK7a,EAAGY,SAAS,OACxEga,QACSjlC,KAAKmlC,iBACdrb,EAAAuB,oBAAoBoE,mBAAmBwV,GACvCD,EACAzc,EAAOK,UAEPmc,EAAgBtmB,IAAIwmB,EACtB,KAIEF,EAAgBjlC,KAAO,IACzBE,KAAK+8B,SAASxU,EAAOK,QAAS,WAAWmc,EAAgBjlC,mCAEzD6qB,EAAYR,EAAAqL,KAAKC,aAAa9K,EAAW,CACvC,CAACR,EAAAyE,QAAQC,MAAMkR,OAAM,CAACnF,EAAchF,IAC3B1sB,EAAKk8B,kBAAkBxK,EAAcmK,GAAiBM,GAAYzP,EAAQzJ,YAAYkZ,KAE/F,CAAClb,EAAAyE,QAAQC,MAAMC,KAAI,CAAC8L,EAAchF,IACzB1sB,EAAKk8B,kBAAkBxK,EAAcmK,GAAiBM,GAAYzP,EAAQiF,UAAUwK,OAK/F1a,EAAYR,EAAAqL,KAAKC,aAAa9K,EAAW,CACvC,CAACR,EAAAyE,QAAQC,MAAMgR,SAAQ,CAACjF,EAAchF,IAEhCgP,EAAsDU,kBAAkB1K,GACnE,CACL/E,SAAS,EACThyB,OAAQ+xB,EAAQzJ,YAAY,KAGzB,CACL0J,SAAS,EACThyB,OAAQ+2B,GAGZ,CAACzQ,EAAAyE,QAAQC,MAAMqR,WAAWtF,GAEpBgK,EAAsDU,kBAAkB1K,EAAantB,MAAM,IACtF,CACLooB,SAAS,EACThyB,OAAQ+2B,EAAantB,MAAM,IAGxB,CACLooB,SAAS,EACThyB,OAAQ+2B,MAMT,CAAEjQ,YAAW/B,QAASL,EAAOK,QACtC,CAEU,wBAAO0c,CAAkB3a,GAIjC,IAAI4a,GAAiB,EAuBrB,OAtBApb,EAAAqL,KAAK8I,iBAAiB3T,EAAW,CAC/B,CAACR,EAAAyE,QAAQC,MAAMkR,OAAOnF,IAChBA,EAAantB,MAAM40B,OAAMmD,GAAmBZ,EAC7CU,kBAAkBE,OACnBD,GAAiB,IAEZ,GAET,CAACpb,EAAAyE,QAAQC,MAAMC,KAAK8L,IACgB,IAA9BA,EAAantB,MAAMlM,SACrBgkC,GAAiB,IAEZ,GAET,CAACpb,EAAAyE,QAAQC,MAAMqR,WAAWtF,IAEpBgK,EAAsDU,kBAAkB1K,EAAantB,MAAM,MAC7F83B,GAAiB,IAEZ,KAGJA,CACT,CAEUT,2BAAAA,CACRlC,EACAiC,EACAY,GAEA,IAAK,MAAMh4B,KAASm1B,EACd9Y,EAAAuB,oBAAoBoE,mBAAmBhiB,IAAUA,EAAMf,OAAS+4B,GAClEZ,EAAoBthC,KAAKkK,EAG/B,CAEU23B,iBAAAA,CACRza,EACAoa,EACAW,GAMA,MAAMC,EAAiBhb,EAAUld,MAAMxI,QAAOwI,IAAUs3B,EAAgB53B,IAAIM,KAG5E,OAAIk4B,EAAepkC,SAAWopB,EAAUld,MAAMlM,OACrC,CAAEsC,OAAQ8mB,EAAWkL,SAAS,GAET,IAA1B8P,EAAepkC,OACV,CAAEsC,OAAQ6hC,EAAsB,IAAK7P,SAAS,GAEzB,IAA1B8P,EAAepkC,OACV,CAAEsC,OAAQ8hC,EAAe,GAAI9P,SAAS,GAExC,CAAEhyB,OAAQ6hC,EAAsBC,GAAiB9P,SAAS,EACnE,CAQO,sBAAMsP,CACX3V,EACA/hB,EACAmb,GAGA,GAAI4G,EAAO5G,SAASthB,IAAIyiB,EAAA8I,wBAAwB+S,UAC9C,OAAO,EAIT,GAAI5lC,KAAK6lC,kBAAmB,CAC1B,MAAMC,EAAehK,EAAGiK,UAAUt4B,GAClC,GAAIqc,EAAAuB,oBACDoP,+BAA+BjL,EAAOA,OAAO8D,iBAAiB1K,GAAUkd,GACzE,OAAOtW,EAAOA,OAAOsE,aAAagS,EAAcld,EAEpD,CAGA,MAAM4D,EAAiBgD,EAAOA,OAAO+D,cAAc9lB,EAAOmb,GAC1D,OAAO,IAAI/iB,SAAQ,CAACC,EAASC,KAC3BymB,EAAezR,GAAG,QAAShV,GAC3BymB,EAAekB,YAAY,YAAaL,IACtCb,EAAe7K,UACf7b,EAAQunB,EAASO,YAAY1tB,MAAQ,EAAE,GACvC,GAEN,EAtMFgE,EAAAA,sDAAA0gC,2gBvBnBAp8B,EAAA0a,EAAA,OAAAhf,iIwBKA,MAAAi2B,EAAAjX,EAAA,MAGA+G,EAAA/G,EAAA,OACAiH,EAAAjH,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YAKf,MAAa0b,UAA8C7L,EAAAG,4BACzDtrB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GAoBf,MAAO,CAAEoC,UAnBSR,EAAAqL,KAAKC,aAAalN,EAAOoC,UAAW,CACpD,CAACR,EAAAyE,QAAQC,MAAM6S,KAAKzF,EAAmBrG,GAErC,MAAMmB,EAAgD,YAAlCkF,EAAkBlF,YACpC1M,EAAG4b,eACHhK,EAAkBlF,YACdvH,EAAsC,YAA7ByM,EAAkBzM,OAAuBnF,EAAG4b,eAAiBhK,EAAkBzM,OAM9F,MAAO,CACL3rB,OALa+xB,EAAQuF,wBAAmBh7B,EAAW,CACnDy1B,EAAQvJ,cAAchC,EAAGY,SAAS,KAAMZ,EAAGY,SAAS,KAAMZ,EAAGY,SAAS,KAAM8L,IAC3EnB,EAAQvJ,cAAchC,EAAGY,SAAS,KAAMZ,EAAGY,SAAS,KAAMZ,EAAGY,SAAS,KAAMuE,IAI7EqG,SAAS,EAEb,IAGkBjN,QAASL,EAAOK,QACtC,EA9BF1kB,EAAAA,sCAAA8hC,2gBxBhBAx9B,EAAA0a,EAAA,OAAAhf,kIyBKA,MAAAi2B,EAAAjX,EAAA,MAEAiH,EAAAjH,EAAA,OAKA,MAAagjB,UAA+C/L,EAAAG,4BAC1DtrB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GAyBf,MAAO,CAAEoC,UAxBSR,EAAAqL,KAAKC,aAAalN,EAAOoC,UAAW,CACpD,CAACR,EAAAyE,QAAQC,MAAM+S,MAAM3F,EAAmBrG,GAEtC,IAAI/xB,EAcJ,OATEA,EAJ4C,iBAAlCo4B,EAAkBlF,aAAgE,iBAA7BkF,EAAkBzM,QAC/EyM,EAAkBlF,cAAgBkF,EAAkBzM,QACZ,iBAAlCyM,EAAkBlF,aAAgE,iBAA7BkF,EAAkBzM,QAC7EyM,EAAkBlF,YAAY2J,OAAOzE,EAAkBzM,QAChDoG,EAAQuQ,sBAAsB,IAG9BvQ,EAAQuQ,sBAAsB,CACrCvQ,EAAQwQ,WAAWnK,EAAkBlF,aAAa,GAClDnB,EAAQyQ,UAAUpK,EAAkBzM,OAAQyM,EAAkBlF,YAAakF,EAAkBqK,UAI1F,CACLziC,SACAgyB,SAAS,EAEb,IAGkBjN,QAASL,EAAOK,QACtC,EAnCF1kB,EAAAA,uCAAAgiC,2gBzBZA19B,EAAA0a,EAAA,OAAAhf,kI0BKA,MAAAi2B,EAAAjX,EAAA,MAEAiH,EAAAjH,EAAA,OAKA,MAAaqjB,UAA+CpM,EAAAG,4BAC1DtrB,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GA2Bf,MAAO,CAAEoC,UA1BSR,EAAAqL,KAAKC,aAAalN,EAAOoC,UAAW,CACpD,CAACR,EAAAyE,QAAQC,MAAM8S,MAAM1F,EAAmBrG,GAEtC,IAAI/xB,EACJ,GAA8C,iBAAlCo4B,EAAkBlF,aAAgE,iBAA7BkF,EAAkBzM,QAC/EyM,EAAkBlF,cAAgBkF,EAAkBzM,QACZ,iBAAlCyM,EAAkBlF,aAAgE,iBAA7BkF,EAAkBzM,QAC7EyM,EAAkBlF,YAAY2J,OAAOzE,EAAkBzM,QACzD3rB,EAAS+xB,EAAQuQ,sBAAsB,QAClC,CAEL,MAAMK,EAAU,CACd5Q,EAAQwQ,WAAWnK,EAAkBlF,aAAa,GAClDnB,EAAQyQ,UAAUpK,EAAkBzM,OAAQyM,EAAkBlF,YAAakF,EAAkBqK,QAC7F1Q,EAAQwQ,WAAWnK,EAAkBzM,SAEvC3rB,EAAS+xB,EAAQuQ,sBAAsBK,EACzC,CAEA,MAAO,CACL3iC,SACAgyB,SAAS,EAEb,IAGkBjN,QAASL,EAAOK,QACtC,EArCF1kB,EAAAA,uCAAAqiC,2gB1BZA/9B,EAAA0a,EAAA,OAAAhf,kH2BCA,MAAA4lB,EAAA5G,EAAA,OAYA,MAAaujB,UAA+B3c,EAAAU,iCAC1Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,MACd,CAEO,mBAAMimB,CAAcgc,EAAyB7c,GAClD,OAAO,CACT,CAEO,kBAAM8c,CAAahc,EAAwB/B,GAEhD,MAAMiQ,QAAsC74B,KAAKurB,uBAAuBC,QACtE,CAAEb,UAAWA,EAAUld,MAAOmb,aAE1B,eAAE4D,GAAkD1C,EAAAuB,oBAAoBC,gBAAgBuN,GAC9F,MAAO,CAAEnsB,KAAM,UAAWksB,QAAS9L,SAA+D,WAA7CN,EAAeoa,KAAK,GAAGC,WAAWtlC,OACzF,EAhBF2C,EAAAA,uBAAAuiC,2gB3BbAj+B,EAAA0a,EAAA,OAAAhf,qH4BCA,MAAA4lB,EAAA5G,EAAA,OAGAiH,EAAAjH,EAAA,OAOA,MAAa4jB,UAAmChd,EAAAU,iCAG9Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,MACd,CAEO,mBAAMimB,CAAcgc,EAAyB7c,GAClD,OAAO,CACT,CAEO,kBAAM8c,CAAahc,EAAwB/B,GAEhD,OAAO5oB,KAAKurB,uBAAuBC,QAAQ,CACzCb,UAAWmc,EAA2Brb,QAAQ+P,WAAW7Q,EAAU8Q,UACnE7S,WAEJ,EAjBF1kB,EAAAA,2BAAA4iC,EACyBA,EAAArb,QAAU,IAAItB,EAAAyF,ihB5BZvCpnB,EAAA0a,EAAA,MAAAhf,wH6BCA,MAAA4lB,EAAA5G,EAAA,OAaAiR,EAAAjR,EAAA,OACAiH,EAAAjH,EAAA,OACA6jB,EAAA7jB,EAAA,OAKA,MAAa8jB,UAAqCld,EAAAU,iCAChDxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,YACd,CAOO,mBAAOwiC,CAAaxL,GACzB,OAAO,EAAAtH,EAAAyK,WAA4B,GAAIsI,OACpC3gC,MAAM,GAAIk1B,EAASt2B,KAAIuqB,IAAW,EAAAyE,EAAA8S,eAAa,EAAA9S,EAAAgT,gBAAezX,OACnE,CAEO,mBAAMhF,CAAcgc,EAA+B7c,GACxD,OAAO,CACT,CAEO,kBAAM8c,CAAa1K,EAAsCrT,GAG9D,MAAM5F,EAA4BgkB,EAA6BC,aAAahL,EAAkBhB,UACxFtQ,EAA+B,CAAEje,KAAMyd,EAAAyE,QAAQC,MAAMgR,QAASpyB,MAAOwuB,EAAkBxuB,MAAOuV,aAG9F6V,EAAwC/O,EAAAuB,oBAAoBC,sBAC1DtrB,KAAKurB,uBAAuBC,QAAQ,CAAEb,YAAW/B,aAsBzD,MAAO,CACLyE,SAZ+CA,IAAMwL,EAAOxL,WAAW/mB,MAAK8gC,IAAQ,IACjFA,EACHC,WAAOlnC,EACPytB,YAAa,CACXlhB,KAAM06B,EAAKxZ,YAAYlhB,KACvBxM,MAAOknC,EAAKxZ,YAAY1tB,MAAQ+7B,EAAkBhB,SAAS15B,QAE7DqyB,kBAAkB,EAClB0T,qBAAiBnnC,MAKjB65B,WAnB0C,IAAI+M,EAAAQ,wBAC9CtL,EAAkBhB,SAClBpC,EAAOrM,gBAkBP9f,KAAM,QAEV,EAtDFxI,EAAAA,6BAAA8iC,kHClBA,MAAAhd,EAAA9G,EAAA,OACA+G,EAAA/G,EAAA,OACAiR,EAAAjR,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YAQf,MAAaid,UAAgCvd,EAAArJ,uBAI3C3R,WAAAA,CAAmBisB,EAA0BzO,GAC3CnN,MAAMmN,EAAgB,CAAEY,WAAW,IACnCptB,KAAKi7B,SAAWA,EAChBj7B,KAAKwnC,iBAAmB,CAC1B,CAeO,eAAOC,CAAS/a,EAAoB2H,GACzC,MAAsB,aAAlBA,EAAK7G,SACAd,EAASplB,IAAI+sB,GAEfA,CACT,CAUO,eAAOqT,CAAShb,EAAoBgD,GACzC,IACE,OAAO,EAAAyE,EAAAQ,gBAA0BjF,GAAU2E,IACzC,MAAMsT,EAAYJ,EAAwBE,SAAS/a,EAAU2H,GAC7D,IAAKsT,EACH,MAAM,IAAI5lC,MAAM,gBAElB,OAAO4lC,CAAS,GAEpB,CAAE,MACA,CAEJ,CASO,wBAAOC,CAAkBJ,EAA0BnT,GACxD,MAAsB,cAAlBA,EAAK7G,SACAnD,EAAG6K,UAAU,GAAGb,EAAKn0B,QAAQsnC,KAE/BnT,CACT,CAQO,mBAAOwT,CAAaL,EAA0B9X,GACnD,OAAO,EAAAyE,EAAAQ,gBAAejF,GAAS2E,GAAQkT,EAAwBK,kBAAkBJ,EAAkBnT,IACrG,CASOyT,YAAAA,CAAapb,EAAoBuO,EAA0BuM,GAQhE,OAP+CvM,EAE5C91B,IAAIoiC,EAAwBM,aAAa9lB,KAAK,KAAMylB,IAEpDriC,KAAI4iC,GAAKR,EAAwBG,SAAS3lB,KAAK,KAAM2K,EAA5C6a,CAAsDQ,KAE/D9iC,OAAO+iC,QAEZ,CAEgBhnB,kBAAAA,CAAmB0L,GACjC,OAAO,IAAI1C,EAAA0J,cAAc1zB,KAAK8nC,aAC5Bpb,EACA1sB,KAAKi7B,SACLj7B,KAAKwnC,oBACJ,CAAEpa,WAAW,GAClB,EApGFlpB,EAAAA,wBAAAqjC,2gB9BfA/+B,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,2H+BEA,MAAA4lB,EAAA5G,EAAA,OAoBA,MAAa+kB,UAAwCne,EAAAU,iCAInDxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,WACd,CAEO,mBAAMimB,CAAcgc,EAA8B7c,GACvD,OAAO,CACT,CAEO,kBAAM8c,CAAahc,EAA6B/B,GACrD,MAAMiQ,QAAe74B,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWA,EAAUld,MAAOmb,YAGvF,GAAoB,UAAhBiQ,EAAOnsB,WAA+CvM,IAA3BH,KAAKkoC,kBAAiC,CACnE,MAAMC,EAA0Cre,EAAAuB,oBAAoB+c,aAClEvP,GAIF,MAAO,CACLnsB,KAAM,QACNstB,WAH0CmO,EAAYnO,WAAW/0B,aAAajF,KAAKqoC,mBAAmBzf,IAItGyE,SAAU8a,EAAY9a,SAE1B,CAEA,MAAMib,EAAgDxe,EAAAuB,oBAAoBC,gBACxEuN,GAIF,MAAO,CACLnsB,KAAM,WACN8f,eAHqC8b,EAAe9b,eAAevnB,aAAajF,KAAKuoC,cAAc3f,IAInGyE,SAAUib,EAAejb,SAE7B,CAQO,mBAAMkb,CAAc3f,GACzB,MAAM,aAAE0O,SAAuBt3B,KAAKwoC,qBAAqBhd,QAAQ,CAAE6L,qBAAqB,EAAMzO,YACxF6f,EAAkC,CAAC,EACzC,OAAQ/b,IACN,MAAMtK,EAAekV,EAAa5K,GAElC,QAAStK,KAAQqmB,KAAYA,EAAOrmB,IAAQ,EAAK,CAErD,CAQO,wBAAMimB,CAAmBzf,GAE9B,QAA+BzoB,IAA3BH,KAAKkoC,kBACP,OAAOQ,IAAS,EAElB,MAAM,aAAEpR,SAAuBt3B,KAAKkoC,kBAAkB1c,QAAQ,CAAE6L,qBAAqB,EAAMzO,YACrF6f,EAAkC,CAAC,EACzC,OAAQ/T,IACN,MAAMtS,EAAekV,EAAa5C,GAElC,QAAStS,KAAQqmB,KAAYA,EAAOrmB,IAAQ,EAAK,CAErD,EA3EFle,EAAAA,gCAAA+jC,2gB/BvBAz/B,EAAA0a,EAAA,OAAAhf,qHgCAA,MAAAykC,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OAMA0lB,EAAA1lB,EAAA,OASA,MAAa2lB,UAAkC/e,EAAAU,iCAG7Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,SACd,CAEO,mBAAMimB,CAAcC,EAA2B/B,GACpD,MAAMiD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAMxF,OAJUof,QAAQ,IAAIY,EAAAI,eACpBre,EAAU+R,WACV5S,EAAAuB,oBAAoB4d,0BAA0BrgB,EAAS5oB,KAAKurB,uBAAwBM,MAE/E,CACT,CAEO,kBAAM8a,CAAahc,EAA2B/B,GAEnD,MAAM,WAAE8T,EAAU,MAAEjvB,EAAK,SAAEwd,GAAaN,EAElCkO,EAAwC/O,EAAAuB,oBAAoBC,sBAC1DtrB,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWld,EAAOmb,aAIhE,UAAWiQ,EAAOxL,YAAYrK,UAAUmb,MAAK+K,GAAiBA,EAAcxI,OAAOzV,KACjF,MAAM,IAAIlpB,MAAM,gCAAgCkpB,EAAS/qB,sCAG3D,MAAM2rB,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAClFugB,EAAS,IAAKrf,EAAAuB,oBAAoB4d,0BACtCrgB,EACA5oB,KAAKurB,uBACLM,IAEIud,EAAY,IAAIR,EAAAI,eAAetM,EAAYyM,GAyB3C3c,EAAiBqM,EAAOrM,eAAetL,UAAoB,CAAEkM,WAAW,EAAOlM,UAtBnE4L,MAAMJ,EAAoBxmB,EAAW3C,KACrD,IACE,MAAMM,QAAeulC,EAAUC,SAAS3c,GAIxCnpB,EADiBmpB,EAAS5gB,IAAImf,EAAUpnB,GAE1C,CAAE,MAAOV,IACH,EAAAylC,EAAAU,mBAA0BnmC,IAE5BI,EAAKmpB,GAEL1sB,KAAKupC,QAAQ3gB,EAAS,0CAA6DzlB,EAAO4L,2BACtE,EAAA45B,EAAAa,kBAAiB9c,QAErCF,EAAe9oB,KAAK,QAASP,EAEjC,CACA+C,GAAM,IAKR,MAAO,CACLwG,KAAM,WACN8f,iBACA,cAAMa,GACJ,MAAMoc,QAAuB5Q,EAAOxL,WACpC,MAAO,IAAKoc,EAAgBzmB,UAAW,IAAKymB,EAAezmB,UAAWiI,GACxE,EAEJ,EAtEF/mB,EAAAA,0BAAA2kC,2gBhClBArgC,EAAA0a,EAAA,OAAAhf,qHiCAA,MAAAykC,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OAKA0lB,EAAA1lB,EAAA,OAOA,MAAawmB,UAAkC5f,EAAAU,iCAG7Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,SACd,CAEO,mBAAMimB,CAAcC,EAA2B/B,GAEpD,MAAMiD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAClFugB,EAAS,IAAKrf,EAAAuB,oBAAoB4d,0BACtCrgB,EACA5oB,KAAKurB,uBACLM,IAGF,OADU,IAAI+c,EAAAI,eAAere,EAAU+R,WAAYyM,IAC5C,CACT,CAEO,kBAAMxC,CAAahc,EAA2B/B,GAEnD,MAAM+gB,QAAkB3pC,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWA,EAAUld,MAAOmb,YACpFiQ,EAAS/O,EAAAuB,oBAAoBC,gBAAgBqe,GACnD7f,EAAAuB,oBAAoBue,oBAAoB/Q,EAAQ,YAEhD,MAAMhN,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAClFugB,EAAS,IAAKrf,EAAAuB,oBAAoB4d,0BACtCrgB,EACA5oB,KAAKurB,uBACLM,IAEIud,EAAY,IAAIR,EAAAI,eAAere,EAAU+R,WAAYyM,GA8BrD3c,EAAiBqM,EAAOrM,eAAetL,UAAoB,CAAEA,UA5BjD4L,MAAM3K,EAAgBjc,EAAW3C,KACjD,UACuB6lC,EAAUS,cAAc1nB,IAE3C5e,EAAK4e,EAET,CAAE,MAAOhf,IAUH,EAAAylC,EAAAU,mBAA0BnmC,GAG5BnD,KAAKupC,QAAQ3gB,EAAS,mCAAmC,KAAM,CAAGzlB,QAAOupB,UAAU,EAAAic,EAAAa,kBAAiBrnB,OAEpGqK,EAAe9oB,KAAK,QAASP,EAEjC,CACA+C,GAAM,EAIsEknB,WAAW,IACzF,MAAO,CAAE1gB,KAAM,WAAY8f,iBAAgBa,SAAUwL,EAAOxL,SAC9D,EA/DFnpB,EAAAA,0BAAAwlC,2gBjCfAlhC,EAAA0a,EAAA,OAAAhf,uHkCCA,MAAA4lB,EAAA5G,EAAA,OAIAiH,EAAAjH,EAAA,OAKA,MAAa4mB,UAAoChgB,EAAAU,iCAI/Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,OACd,CAQO,oBAAOslC,CACZpf,EACAqf,GAEA,MAAMC,EAA2C,CAAC,EAClD,IAAK,MAAMxpC,KAAOW,OAAOD,KAAKwpB,GACxBhgB,MAAMC,QAAQ+f,EAAUlqB,KAAiB,aAARA,EAGjCwpC,EAAgBxpC,GADN,cAARA,EACqBkqB,EAAUlqB,GAEVkqB,EAAUlqB,GAAK0E,IAAI6kC,GAEnCF,EAA4BI,cAAcluB,SAAS2O,EAAUlqB,GAAKiM,MAC3Eu9B,EAAgBxpC,GAAOupC,EAAYrf,EAAUlqB,IAE7CwpC,EAAgBxpC,GAAOkqB,EAAUlqB,GAGrC,OAAOwpC,CACT,CASO,iCAAOE,CAA2Bxf,EAA8Byf,GAErE,GAAwB,QAAnBzf,EAAUje,MAAkBie,EAAU8Q,SAASl6B,OAAS,GACxC,SAAnBopB,EAAUje,MACS,YAAnBie,EAAUje,KAAoB,CAC9B,GAAuB,QAAnBie,EAAUje,KACZ,OAAOo9B,EAA4BO,eAAe1f,EAAU8Q,SAASt2B,KAAKuqB,IACxE,GAA+B,iBAA3BA,EAAQ9D,MAAM4B,SAChB,OAAOsc,EAA4Bre,QAAQqY,UAAU,CAAEpU,IAEzD,MAAM4a,EAAOF,EAAcjlC,KAAKymB,GAC9Bke,EAA4Bre,QAAQqY,UAAU,CAAE1iC,OAAOoU,OACrDs0B,EAA4Bre,QACzBY,cAAcqD,EAAQ3E,QAAS2E,EAAQ9E,UAAW8E,EAAQ1E,OAAQY,GACrE,CAAEyB,SAAUqC,EAAQrC,eAExB,OAAOyc,EAA4BS,gBAAgBD,EAAK,KAG5D,GAAiC,iBAA7B3f,EAAUiB,MAAM4B,SAClB,OAAO7C,EAET,MAAM6f,EAAQJ,EAAcjlC,KACzBymB,GACwB,SAAnBjB,EAAUje,KACLo9B,EAA4Bre,QAChCQ,WAAWtB,EAAUI,QAASJ,EAAUC,UAAWD,EAAUK,OAAQY,GAEnExqB,OAAOoU,OAAOs0B,EAA4Bre,QAC9CY,cACC1B,EAAUI,QACVJ,EAAUC,UACVD,EAAUK,OACVY,GACC,CAAEyB,SAAU1C,EAAU0C,aAG/B,OAAOyc,EAA4BS,gBAAgBC,EACrD,CAEA,OAAOV,EAA4BC,cACjCpf,GACCiQ,GAAoC56B,KAAKmqC,2BAA2BvP,EAAcwP,IAEvF,CAUO,+BAAOK,CACZ9f,EACA+f,EACAN,GAGA,GAAwB,QAAnBzf,EAAUje,MAAkBie,EAAU8Q,SAASl6B,OAAS,GACxC,SAAnBopB,EAAUje,MACS,YAAnBie,EAAUje,KAAoB,CAC9B,MAAMi+B,EAA4C,QAAnBhgB,EAAUje,KAAiBie,EAAU8Q,SAAS,GAAG7P,MAAQjB,EAAUiB,MAClG,GAA8B,iBAA1B+e,EAAand,SAGf,MAAO,CAAE9gB,KAAMyd,EAAAyE,QAAQC,MAAMwN,IAAKZ,SAAU,IAE9C,GAA8B,aAA1BkP,EAAand,SAAyB,CACxC,GAA2B,IAAvBkd,EAAYnpC,OAAc,CAC5B,MAAMqqB,EAAuB8e,EAAY,GAEnChe,EAAwD,CAAC,EAC/DA,EAAS,IAAIie,EAAazqC,SAAW0rB,EACrC,MAAMve,EAAyBy8B,EAA4Bre,QACxDkV,aAAa,CAAEgK,GAAgB,CAAEje,IAEpC,IAAIgD,EAaJ,OAXEA,EADqB,QAAnB/E,EAAUje,KACFo9B,EAA4Bre,QACnCqY,UAAUnZ,EAAU8Q,SAASt2B,KAAKylC,GAAyBd,EAA4Bre,QACrFY,cAAcue,EAAI7f,QAAS6f,EAAIhgB,UAAWggB,EAAI5f,OAAQY,MAC/B,SAAnBjB,EAAUje,KACTo9B,EAA4Bre,QACnCQ,WAAWtB,EAAUI,QAASJ,EAAUC,UAAWD,EAAUK,OAAQY,GAE9Dke,EAA4Bre,QACnCY,cAAc1B,EAAUI,QAASJ,EAAUC,UAAWD,EAAUK,OAAQY,GAGtEke,EAA4Bre,QAAQ+P,WAAW,CAAEnuB,EAAQqiB,GAClE,CAEA,OAAOoa,EAA4BS,gBAAgBG,EAAYvlC,KAC5DymB,GAAyBke,EAA4BW,yBACpD9f,EACA,CAAEiB,GACFwe,KAGN,CAKA,MAHuC,IAAKM,KAAgBN,GAAgBjM,MACzE0M,GAAyBA,EAAWnK,OAAOiK,KAIrChgB,EAGF,CAAEje,KAAMyd,EAAAyE,QAAQC,MAAMwN,IAAKZ,SAAU,GAC9C,CAEA,OAAOqO,EAA4BC,cACjCpf,GACCiQ,GAAoC56B,KAAKyqC,yBAAyB7P,EAAc8P,EAAaN,IAElG,CAOO,qBAAOC,CAAenO,GAC3B,GAA0B,IAAtBA,EAAW36B,OACb,OAAO26B,EAAW,GAEpB,GAAIA,EAAW36B,OAAS,EACtB,OAAOuoC,EAA4Bre,QAAQ+P,WAAWU,GAExD,MAAM,IAAIn6B,MAAM,uDAClB,CAOO,sBAAOwoC,CAAgBrO,GAC5B,GAA0B,IAAtBA,EAAW36B,OACb,OAAO26B,EAAW,GAEpB,GAAIA,EAAW36B,OAAS,EACtB,OAAOuoC,EAA4Bre,QAAQU,YAAY+P,GAEzD,MAAM,IAAIn6B,MAAM,wDAClB,CAcO,sBAAO+oC,CAAgBpb,GAC5B,IAAI/E,EAA+B+E,EAAQjiB,MAO3C,OANIiiB,EAAQqb,QAAQxpC,OAAS,IAC3BopB,EAAYmf,EAA4BK,2BAA2Bxf,EAAW+E,EAAQqb,WAEpFrb,EAAQsb,MAAMzpC,OAAS,GAAKmuB,EAAQqb,QAAQxpC,OAAS,KACvDopB,EAAYmf,EAA4BW,yBAAyB9f,EAAW+E,EAAQsb,MAAOtb,EAAQqb,UAE9FpgB,CACT,CAEO,mBAAMD,CAAcgc,EAA0B7c,GACnD,OAAO,CACT,CAEO,kBAAM8c,CACX1K,EACArT,GAEA,MAAM+B,EAA+Bmf,EAA4BgB,gBAAgB7O,GACjF,OAAOj8B,KAAKurB,uBAAuBC,QAAQ,CAAEb,YAAW/B,WAC1D,EAlOF1kB,EAAAA,4BAAA4lC,EAC0BA,EAAAre,QAAmB,IAAItB,EAAAyF,QACvBka,EAAAI,cAA0B9oC,OAAOD,KAAKgpB,EAAAyE,QAAQC,OAAO1pB,KAAI1E,GAAc0pB,EAAAyE,QAAQC,MAAOpuB,8gBlCZhH+H,EAAA0a,EAAA,OAAAhf,oHmCAA,MAAAykC,EAAAzlB,EAAA,OAIA4G,EAAA5G,EAAA,OAEA0lB,EAAA1lB,EAAA,OAEA8G,EAAA9G,EAAA,OAEA+nB,EAAA/nB,EAAA,OAKA,MAAagoB,UAAiCphB,EAAAU,iCAI5Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,QACd,CAEO,mBAAMimB,CAAcC,EAA0B/B,GACnD,MAAMiD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GACxF,IAAK,MAAMuiB,KAAaxgB,EAAUygB,WAEtB,IAAIxC,EAAAI,eACZmC,EAAUzO,WACV5S,EAAAuB,oBAAoB4d,0BAA0BrgB,EAAS5oB,KAAKurB,uBAAwBM,IAGxF,OAAO,CACT,CAEO,kBAAM8a,CAAahc,EAA0B/B,GAElD,MAAMiD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,IAElF,aAAE0O,SAAuBt3B,KAAKwoC,qBAAqBhd,QAAQ,CAAE6L,qBAAqB,EAAMzO,aAGxF,MAAEnb,EAAK,WAAE29B,GAAezgB,EACxBgf,QAAkB3pC,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWld,EAAOmb,YAC1EiQ,EAAS/O,EAAAuB,oBAAoBC,gBAAgBqe,GAK7C3mB,EAAY,IACb2H,EAAU3H,aACVooB,EAAWjmC,KAAIkmC,GAAOA,EAAIpgB,YAGzBqgB,EAAiBxhB,EAAAuB,oBAAoB4d,0BACzCrgB,EACA5oB,KAAKurB,uBACLM,GAgCF,MAAO,CACLnf,KAAM,WACN8f,eA9BqB,IAAIxC,EAAA6C,mBAAkB,IAAM,IAAIhnB,SAAwB,CAACC,EAASC,KACvF,MAAMwlC,EAAS,IAAIN,EAAAO,YAAYlU,EAAc3M,EAAW2gB,EAAgBzf,GAOxEgN,EAAOrM,eAAezR,GAAG,OAAO+R,UAC9B,IACE,MAAM2e,EAAsB,IAAIzhB,EAAA0J,oBAAoB6X,EAAOG,iBAAkB,CAAEte,WAAW,IAC1FtnB,EAAQ2lC,EACV,CAAE,MAAOtoC,GACP4C,EAAO5C,EACT,KAIF01B,EAAOrM,eAAezR,GAAG,QAAShV,GAKlC8yB,EAAOrM,eAAezR,GAAG,QAAS2R,IAChC6e,EAAOI,gBAAgBjf,GAAUkf,MAAM7lC,EAAO,GAC9C,KACA,CAAEqnB,WAAW,IAKfC,SAAUP,UAAA,UAAuB+L,EAAOxL,WAAYrK,cAExD,EA/EF9e,EAAAA,yBAAAgnC,sGCZA,MAAAtC,EAAA1lB,EAAA,OAMMmH,EAAK,IAHXnH,EAAA,OAGeoH,aAoBfpmB,EAAAA,YAAA,MAYE8K,WAAAA,CACmBsoB,EACA5H,EACA4b,EACAzf,GAHA,KAAAyL,aAAAA,EACA,KAAA5H,QAAAA,EACA,KAAA4b,eAAAA,EACA,KAAAzf,gBAAAA,EAEjB7rB,KAAKurC,OAAS,IAAI/pB,IAClBxhB,KAAK6rC,kBAAoB,IAAIrqB,IAC7BxhB,KAAK8rC,eAAiB,IAAIvtB,IAAIve,KAAK0vB,QAAQ1M,UAAU7d,KAAI4iC,GAAKA,EAAE7nC,SAChEF,KAAK+rC,YAAc,EACnB/rC,KAAKgsC,qBAAsB,CAC7B,CASOL,eAAAA,CAAgBjf,GACrB,MAAMuf,EAAQjsC,KAAKksC,cACnB,GAAID,EACF,OAAOA,EAGTjsC,KAAK+rC,cAGL,MAAMI,EAAUzf,EACbznB,QAAO,CAACmnC,EAAGnhB,IAAajrB,KAAK8rC,eAAe3+B,IAAI8d,EAAS/qB,SACtDmsC,EAAYrsC,KAAKssC,aAAaH,GAGpC,IAEIpnC,EAFAwnC,EAAgDvsC,KAAK6rC,kBAAkBvkC,IAAI+kC,GAG/E,GAAIE,EAAkB,CACpB,MAAMC,EAA0BD,EAChCxnC,EAAM,WACJ,MAAM0nC,QAAcD,QACd3mC,QAAQ4rB,IAAIzxB,KAAK0vB,QAAQ0b,WAAWjmC,KAAI2nB,UAE5C,MAAM7B,EAAWkgB,EAAUlgB,SAAS/qB,YAC9BusC,EAAMC,YAAYzhB,GAAU0hB,IAAIjgB,EAAS,IAElD,EAPK,GAODpmB,MAAKwmB,UACR9sB,KAAK4sC,+BAA+B,GAExC,MAEEL,EAAmB,WACjB,MAAMG,EAAuD,CAAC,QACxD7mC,QAAQ4rB,IAAIzxB,KAAK0vB,QAAQ0b,WAAWjmC,KAAI2nB,UAC5C,MAAMrsB,EAAM0qC,EAAUlgB,SAAS/qB,MAC/BwsC,EAAYjsC,GAAO,IAAImoC,EAAAiE,wBAAwB1B,EAAWnrC,KAAKsrC,sBACzDoB,EAAYjsC,GAAKksC,IAAIjgB,EAAS,KAGtC,MAAM+f,EAAQ,CAAEC,cAAahgB,SAAUyf,GAGvC,OAFAnsC,KAAKurC,OAAOz/B,IAAIugC,EAAWI,GAC3BzsC,KAAK4sC,gCACEH,CACR,EAZkB,GAanBzsC,KAAK6rC,kBAAkB//B,IAAIugC,EAAWE,GACtCxnC,EAAMwnC,EAER,OAAOxnC,CACT,CAEQ6nC,6BAAAA,GACqB,KAArB5sC,KAAK+rC,aACT/rC,KAAK8sC,wBAET,CAEQA,sBAAAA,GAEN,IAAIC,EAAmB,IAAK/sC,KAAKurC,QAASpmC,KAAI,EAAGinC,EAAGK,MAClD,MAAQ/f,SAAUsgB,EAAa,YAAEN,GAAgBD,EAIjD,IAAIQ,EAAiBD,EACrB,IAAK,MAAM/hB,KAAYyhB,EAAa,CAClC,MAAMxsC,EAAQwsC,EAAYzhB,GAAUpnB,SAChC3D,IAEF+sC,EAAiBA,EAAenhC,IAAIue,EAAGY,SAASA,GAAW/qB,GAE/D,CAGA,OAAO+sC,CAAc,IAMvB,GAAoB,IAAhBF,EAAKxrC,QAA6C,IAA7BvB,KAAK8rC,eAAehsC,KAAY,CACvD,MAAMotC,EAAqC,GAC3C,IAAK,MAAM/B,KAAanrC,KAAK0vB,QAAQ0b,WAAY,CAC/C,MAAM3qC,EAAM0qC,EAAUlgB,SAChB/qB,EAAQ0oC,EAAAiE,wBAAwBM,WAAWhC,QACnChrC,IAAVD,GACFgtC,EAAO3pC,KAAK,CAAE9C,EAAKP,GAEvB,CACA6sC,EAAO,CAAE/sC,KAAK6rB,gBAAgBa,SAASwgB,GACzC,CACAltC,KAAKotC,aAAaL,EACpB,CAEQb,WAAAA,GACN,GAAIlsC,KAAKgsC,oBACP,OAAOnmC,QAAQE,OAAO,IAAIhE,MAAM,gEAEpC,CAQO2pC,cAAAA,GACL,MAAMO,EAAQjsC,KAAKksC,cACnB,GAAID,EACF,OAAOA,EAETjsC,KAAKgsC,qBAAsB,EAC3B,MAAMjnC,EAAM,IAAIc,SAAqBC,IACnC9F,KAAKotC,aAAetnC,CAAO,IAG7B,OADA9F,KAAK4sC,gCACE7nC,CACT,CAKQunC,YAAAA,CAAa5f,GACnB,OAAO1sB,KAAKs3B,aAAa5K,EAC3B,4gBpCxLFlkB,EAAA0a,EAAA,OAAAhf,mHqCCA,MAAA4lB,EAAA5G,EAAA,OAYA,MAAamqB,UAAgCvjB,EAAAU,iCAG3Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,OACd,CAEO,mBAAMimB,CAAcgc,EAA0B7c,GACnD,OAAO,CACT,CAEO,kBAAM8c,CACX1K,EACArT,GAEA,MAAMtb,SAA+BzH,QAAQ4rB,IAAIwK,EAAkBxuB,MAChEtI,KAAI2nB,UAAsB,CACzB+L,aAAc74B,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWiQ,EAAchS,YAC7E+B,UAAWiQ,QAEZz1B,KAAI,EAAG0zB,SAAQlO,gBAAgB,CAC9BkO,OAAQ/O,EAAAuB,oBAAoBC,gBAAgBuN,GAC5ClO,gBAGJ,OAAO3qB,KAAKstC,aAAa9hB,QAAQ,CAAE9e,KAAM,QAASY,UAASsb,WAC7D,EA1BF1kB,EAAAA,wBAAAmpC,2gBrCbA7kC,EAAA0a,EAAA,OAAAhf,uHsCAA,MAAAykC,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OAGA0lB,EAAA1lB,EAAA,OAOA,MAAaqqB,UAAoCzjB,EAAAU,iCAI/Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,WACd,CAEO,mBAAMimB,CAAcgc,EAA8B7c,GACvD,OAAO,CACT,CAEO,kBAAM8c,CAAa1K,EAAqCrT,GAG7D,MAAMtb,SAA+BzH,QAAQ4rB,IAAIwK,EAAkBxuB,MAChEtI,KAAI2nB,UAAsB,CACzB+L,aAAc74B,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWiQ,EAAchS,YAC7E+B,UAAWiQ,QAEZz1B,KAAI,EAAG0zB,SAAQlO,gBAAgB,CAC9BkO,OAAQ/O,EAAAuB,oBAAoBC,gBAAgBuN,GAC5ClO,gBAEE2Z,QAAetkC,KAAKstC,aAAa9hB,QAAQ,CAAE9e,KAAM,WAAYY,UAASsb,YAG5E,GAAIqT,EAAkBS,WAAY,CAChC,MACMsC,SADsB1xB,EAAQ,GAAGurB,OAAOxL,YACJrK,UAEpC6I,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAClFugB,EAAS,IAAKrf,EAAAuB,oBAAoB4d,0BACtCrgB,EACA5oB,KAAKurB,uBACLM,IAEIud,EAAY,IAAIR,EAAAI,eAAe/M,EAAkBS,WAAYyM,GAC7D3c,EAAiB8X,EAAO9X,eAC3BtL,UAAU,CACTkM,WAAW,EAEXlM,UAAW4L,MAAMJ,EAAoBrmB,EAAkB9C,KAErD,IAAKy7B,EAAoBqD,OAAMpX,GAAYyB,EAASvf,IAAI8d,EAAS/qB,SAE/D,OADAqD,EAAKmpB,GACErmB,IAGT,UACuB+iC,EAAUS,cAAcnd,IAE3CnpB,EAAKmpB,EAET,CAAE,MAAOvpB,IAKH,EAAAylC,EAAAU,mBAAyBnmC,GAG3BnD,KAAKupC,QAAQ3gB,EAAS,mCAAmC,KAAM,CAAGzlB,QAAOupB,eAEzEF,EAAe9oB,KAAK,QAASP,EAEjC,CACAkD,GAAM,IAGZi+B,EAAO9X,eAAiBA,CAC1B,CAEA,OAAO8X,CACT,EA1EFpgC,EAAAA,4BAAAqpC,2gBtCbA/kC,EAAA0a,EAAA,OAAAhf,oHuCCA,MAAA4lB,EAAA5G,EAAA,OAYA,MAAasqB,UAAiC1jB,EAAAU,iCAG5Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,QACd,CAEO,mBAAMimB,CAAcgc,EAA2B7c,GACpD,OAAO,CACT,CAEO,kBAAM8c,CACX1K,EACArT,GAEA,MAAMtb,SAA+BzH,QAAQ4rB,IAAIwK,EAAkBxuB,MAChEtI,KAAI2nB,UAAsB,CACzB+L,aAAc74B,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWiQ,EAAchS,YAC7E+B,UAAWiQ,QAEZz1B,KAAI,EAAG0zB,SAAQlO,gBAAgB,CAC9BkO,OAAQ/O,EAAAuB,oBAAoBC,gBAAgBuN,GAC5ClO,gBAGJ,OAAO3qB,KAAKstC,aAAa9hB,QAAQ,CAAE9e,KAAM,QAASY,UAASsb,WAC7D,EA1BF1kB,EAAAA,yBAAAspC,2gBvCbAhlC,EAAA0a,EAAA,OAAAhf,kHwCAA,MAAAykC,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OAEAiQ,EAAAjQ,EAAA,OAGA8G,EAAA9G,EAAA,OAOA,MAAauqB,UAA+B3jB,EAAAU,iCAG1Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,MACd,CAEO,mBAAMimB,CAAcgc,EAAyB7c,GAClD,OAAO,CACT,CAEO,kBAAM8c,CAAahc,EAAwB/B,GAChD,MAAMiD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAExF,MAAO,CACL4D,eAAgB,IAAIxC,EAAA0jB,kBAAgC7hB,EAAgBa,YACpEW,SAAUA,IAAMxnB,QAAQC,QAAQ,CAC9BlF,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CAAElhB,KAAM,QAASxM,MAAO,GACrC0zB,kBAAkB,EAClB5Q,UAAW,KAEbtW,KAAM,WAEV,EAxBFxI,EAAAA,uBAAAupC,2gBxCfAjlC,EAAA0a,EAAA,OAAAhf,sHyCAA,MAAAykC,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OAKA0lB,EAAA1lB,EAAA,OAGAiH,EAAAjH,EAAA,OACAyqB,EAAAzqB,EAAA,OAKA,MAAa0qB,UAAmC9jB,EAAAU,iCAI9Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,WACZzE,KAAKkgB,OAASzb,EAAKyb,QAAUpc,OAAO+pC,iBACtC,CAEO,mBAAMnjB,CAAcC,EAA4B/B,GAErD,MAAMiD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAExF,IAAK,IAAIklB,KAAQnjB,EAAUojB,YACzBD,EAAO9tC,KAAKguC,sBAAsBF,GACxB,IAAIlF,EAAAI,eACZ8E,EACAhkB,EAAAuB,oBAAoB4d,0BAA0BrgB,EAAS5oB,KAAKurB,uBAAwBM,IAGxF,OAAO,CACT,CAEO,kBAAM8a,CAAahc,EAA4B/B,GAEpD,MAAM+gB,QAAkB3pC,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWA,EAAUld,MAAOmb,YACpFiQ,EAAS/O,EAAAuB,oBAAoBC,gBAAgBqe,GAE7C7iC,EAAU,CAAEoZ,OAAQlgB,KAAKkgB,QACzB2L,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAClF0iB,EAAiB,IAClBxhB,EAAAuB,oBAAoB4d,0BAA0BrgB,EAAS5oB,KAAKurB,uBAAwBM,IAEzF,IAAI,eAAEW,GAAmBqM,EAGzB,IAAK,IAAIx3B,EAAIspB,EAAUojB,YAAYxsC,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAC1D,IAAIysC,EAAOnjB,EAAUojB,YAAY1sC,GACjC,MAAM4sC,EAAcjuC,KAAKiuC,YAAYH,GACrCA,EAAO9tC,KAAKguC,sBAAsBF,GAElC,MAAM1E,EAAY,IAAIR,EAAAI,eAAe8E,EAAMxC,GAMrCpqB,EAAY4L,MAAMJ,EAAoBxmB,EAAW3C,KAErD,IAEEA,EAAK,CAAEmpB,WAAU7oB,aADIulC,EAAUC,SAAS3c,IAE1C,CAAE,MAAOvpB,IAIF,EAAAylC,EAAAU,mBAA0BnmC,IAC7BqpB,EAAe9oB,KAAK,QAASP,GAE/BI,EAAK,CAAEmpB,WAAU7oB,YAAQ1D,GAC3B,CACA+F,GAAM,EAGFgoC,EAAoB1hB,EAAetL,UAA6B,CAAEA,cAGlEitB,EAAe,IAAIR,EAAAS,aAAaF,GAAmB,CAACrtB,EAAMO,KAC9D,IAAIitB,GAAU,EAAAzF,EAAA0F,YAAWztB,EAAKhd,OAAQud,EAAMvd,QAI5C,OAHKoqC,IACHI,IAAY,GAEPA,CAAO,GACbvnC,GAGH0lB,EAAiB2hB,EAAahpC,KAAI,EAAGunB,cAAeA,GACtD,CAEA,MAAO,CACLhgB,KAAM,WACN8f,iBACAa,SAAUwL,EAAOxL,SAErB,CAGQ2gB,qBAAAA,CAAsBF,GAC5B,MAAM,eAAEnR,EAAc,SAAEG,GAAagR,EACrC,OAAInR,IAAmBxS,EAAAyE,QAAQgO,gBAAgBC,SACtCiR,EAEW,SAAbhR,EACLgR,EAAKrpC,KAAK,GACVqpC,CACJ,CAEQG,WAAAA,CAAYH,GAClB,MAAM,eAAEnR,EAAc,SAAEG,GAAagR,EACrC,OAAInR,IAAmBxS,EAAAyE,QAAQgO,gBAAgBC,UAG3B,SAAbC,CACT,EAvGF54B,EAAAA,2BAAA0pC,uGChBA,MAAA5jB,EAAA9G,EAAA,OAGA,MAAakrB,UAAwBpkB,EAAA6C,kBAKnC7d,WAAAA,CAAmBwgB,EAA0B+e,EAAqCznC,GAChFuY,MAAMmQ,EAAQ1oB,GAGd,MAAMoZ,EAAiBpZ,GAAWA,EAAQoZ,OAC1ClgB,KAAKwuC,aAAe1qC,OAAO2qC,SAASvuB,IAAWA,EAAS,EAAIA,EAASpc,OAAO+pC,kBAC5E7tC,KAAKuuC,KAAOA,EACZvuC,KAAK0uC,OAAS,EAChB,CAGgBjvB,KAAAA,CAAMyN,EAAe7mB,GACnC,IAAI8b,GACA,OAAE5gB,GAAWvB,KAAK0uC,OAEtB,KAAOntC,IAAWvB,KAAKwuC,eACrBrsB,EAAOniB,KAAKwvB,OAAQ7P,OACP,OAATwC,IAF+B,CAMnC,IAEIwsB,EACAtH,EAHAxmB,EAAO,EACPO,EAAQ7f,EAAS,EAGrB,KAAOsf,GAAQO,GACbutB,EAAMhqC,KAAKiqC,OAAO/tB,EAAOO,GAAS,GAClCimB,EAAQrnC,KAAKuuC,KAAKpsB,EAAMniB,KAAK0uC,OAAOC,IAChCtH,EAAQ,EACVxmB,EAAO8tB,EAAM,EACJtH,EAAQ,EACjBjmB,EAAQutB,EAAM,GAEd9tB,EAAO8tB,EACPvtB,GAAS,GAGbphB,KAAK0uC,OAAO5rB,OAAOjC,EAAM,EAAGsB,GAC5B5gB,GACF,CAEIA,IAAWvB,KAAKwuC,cAClBxuC,KAAKiuB,MAAMjuB,KAAK0uC,OAAOlrC,OAEzB6C,GACF,CAGgBwoC,MAAAA,CAAOxoC,GACrB,IAAI,OAAE9E,GAAWvB,KAAK0uC,OACtB,KAAOntC,KACLvB,KAAKiuB,MAAMjuB,KAAK0uC,OAAOlrC,OAEzB6C,GACF,EA3DFnC,EAAAA,aAAAkqC,2gB1CJA5lC,EAAA0a,EAAA,OAAAhf,sH2CAA,MAAA4qC,EAAA5rB,EAAA,OACA6rB,EAAA7rB,EAAA,OAEA4G,EAAA5G,EAAA,OAQA8G,EAAA9G,EAAA,OACAiH,EAAAjH,EAAA,OAKA,MAAa8rB,UAAmCF,EAAAvkB,kBAG9Cvb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM0lB,EAAAyE,QAAQC,MAAMC,IAC5B,CAEO,kBAAM6X,CAAahc,EAAyB/B,GACjD,MAAMgC,EAA0BD,EAAUC,UAEpCqkB,SAAwDppC,QAAQ4rB,IAAI7G,EAAUnd,MACjFtI,KAAI+pC,GAAgBlvC,KAAKurB,uBAAuBC,QAAQ,CACvD5C,UACA+B,UAAWmkB,EAAAvkB,kBAAkBkB,QAC1BQ,WAAWtB,EAAUI,QAASmkB,EAAcvkB,EAAUK,OAAQL,EAAUiB,aAE5EzmB,IAAI2kB,EAAAuB,oBAAoBC,iBAQ3B,MAAO,CACL5e,KAAM,WACN8f,eARqB,IAAIxC,EAAAmlB,cAAcF,EAAc9pC,KAAIwwB,GAAMA,EAAGnJ,iBAAiB,CAAEY,WAAW,IAShGC,SARkDA,IAClDxnB,QAAQ4rB,IAAIwd,EAAc9pC,KAAI0zB,GAAUA,EAAOxL,cAC5C/mB,MAAK8oC,GAAWL,EAAAM,yBACdC,cAAcF,GAAS,EAAMxmB,EAAS5oB,KAAKuvC,iCAOpD,EA7BFrrC,EAAAA,2BAAA8qC,2gB3CjBAxmC,EAAA0a,EAAA,OAAAhf,sH4CAA,MAAA4qC,EAAA5rB,EAAA,OAGAiH,EAAAjH,EAAA,OAKA,MAAassB,UAAmCV,EAAAvkB,kBAC9Cvb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM0lB,EAAAyE,QAAQC,MAAMK,IAC5B,CAEO,kBAAMyX,CAAahc,EAAyB/B,GACjD,MAAMgC,EAA0BD,EAAUC,UACpC6kB,EAAUX,EAAAvkB,kBAAkBkB,QAC/BQ,WAAWtB,EAAUK,OAAQJ,EAAUE,KAAMH,EAAUI,QAASJ,EAAUiB,OAC7E,OAAO5rB,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAW8kB,EAAS7mB,WACnE,EAVF1kB,EAAAA,2BAAAsrC,2gB5CRAhnC,EAAA0a,EAAA,OAAAhf,uH6CAA,MAAA4qC,EAAA5rB,EAAA,OAGAiH,EAAAjH,EAAA,OAKA,MAAawsB,UAAoCZ,EAAAvkB,kBAC/Cvb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM0lB,EAAAyE,QAAQC,MAAMS,KAC5B,CAEO,kBAAMqX,CACX1K,EACArT,GAEA,MAAMgC,EAA2BqR,EAAkBrR,UAC7CD,EAAYvpB,OAAOoU,OAAOs5B,EAAAvkB,kBAAkBkB,QAAQY,cACxD4P,EAAkBlR,QAClBH,EAAUsa,IACVjJ,EAAkBjR,OAClBiR,EAAkBrQ,OACjB,CAAEyB,SAAUzC,EAAUyC,WACzB,OAAOrtB,KAAKurB,uBAAuBC,QAAQ,CAAEb,YAAW/B,WAC1D,EAjBF1kB,EAAAA,4BAAAwrC,2gB7CRAlnC,EAAA0a,EAAA,OAAAhf,sH8CAA,MAAA4qC,EAAA5rB,EAAA,OAEA4G,EAAA5G,EAAA,OAIAiH,EAAAjH,EAAA,OAKA,MAAaysB,UAAmCb,EAAAvkB,kBAC9Cvb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM0lB,EAAAyE,QAAQC,MAAMU,IAC5B,CAEO,kBAAMoX,CAAahc,EAAyB/B,GACjD,MAAMgC,EAA0BD,EAAUC,UACpCglB,EAAQ5vC,KAAK6qB,iBAAiBF,GAE9B+E,EAAUtuB,OAAOoU,OAAOs5B,EAAAvkB,kBAAkBkB,QAC7CY,cAAc1B,EAAUI,QAAS6kB,EAAOjlB,EAAUK,OAAQL,EAAUiB,OAAQ,CAAEyB,SAAUzC,EAAUyC,WAC/FwL,EAAS/O,EAAAuB,oBAAoBC,sBAC3BtrB,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAW+E,EAAS9G,aAOlE,MAAO,CACLlc,KAAM,WACN8f,eALqBqM,EAAOrM,eAC3BrnB,KAAIunB,GAAY9B,EAAUilB,KAAK1R,MAAK+G,GAAOA,EAAIxE,OAAOhU,EAASplB,IAAIsoC,MAAW,KAAOljB,EAASmE,OAAO+e,KAKtGviB,SAAUwL,EAAOxL,SAErB,EAxBFnpB,EAAAA,2BAAAyrC,2gB9CXAnnC,EAAA0a,EAAA,OAAAhf,4H+CAA,MAAA4qC,EAAA5rB,EAAA,OACAylB,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OAEA8G,EAAA9G,EAAA,OACAiH,EAAAjH,EAAA,OAKA,MAAa4sB,UAAyChB,EAAAvkB,kBAGpDvb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM0lB,EAAAyE,QAAQC,MAAMM,iBAC5B,CAEO,kBAAMwX,CAAahc,EAAyB/B,GACjD,MAAMiD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAClFmnB,QAAiB/vC,KAAKkrB,8BAA8BtC,EAAS+B,GACnE,GAAIolB,EAASplB,UACX,OAAOolB,EAASplB,UAGlB/B,EAAUmnB,EAASnnB,QAEnB,MAAMgC,EAAoCD,EAAUC,UAEpD,GAAmC,aAA/BD,EAAUI,QAAQyC,UAAyD,aAA9B7C,EAAUK,OAAOwC,SAAyB,CACzF,MAAMa,EAAY1D,EAAUK,OACtBglB,QAAiBhwC,KAAKstB,4BAC1B3C,EAAUI,QACVH,EAAUE,KACVuD,EACA1D,EAAUiB,MACVhD,GACA,EACAiD,GAEI7I,EAAyC,aAA7B2H,EAAUiB,MAAM4B,SAA0B,CAAEa,EAAW1D,EAAUiB,OAAU,CAAEyC,GAC/F,MAAO,CACL3hB,KAAM,WACN8f,eAAgBwjB,EAASxjB,eACzBa,SAAUP,UAAA,UAAuBkjB,EAAS3iB,WAAYrK,cAE1D,CACA,GAAmC,aAA/B2H,EAAUI,QAAQyC,UAAyD,aAA9B7C,EAAUK,OAAOwC,SAAyB,CAEzF,MAAM0f,EAAS4B,EAAAvkB,kBAAkBkB,QAAQC,eACvCojB,EAAAvkB,kBAAkBkB,QACfQ,WAAWtB,EAAUI,QAASJ,EAAUC,UAAUE,KAAMH,EAAUK,OAAQL,EAAUiB,QAEnFU,EAAUxC,EAAAuB,oBAAoBC,sBAC5BtrB,KAAKurB,uBAAuBC,QAAQ,CAAE5C,UAAS+B,UAAWuiB,KAE5D9e,EAAazD,EAAUI,QACvBsD,EAAY1D,EAAUK,OAEtB6C,EAAa,CAAC,EAEdrB,EAA6D,IAAIxC,EAAArJ,uBACrE2L,EAAQE,eACR,CACEC,eAAiBC,IACf,MAAM3B,EAAU2B,EAASplB,IAAI8mB,GACvBpD,EAAS0B,EAASplB,IAAI+mB,GACtBzC,EAAqC,aAA7BjB,EAAUiB,MAAM4B,SAA0Bd,EAASplB,IAAIqjB,EAAUiB,OAASjB,EAAUiB,MAClG,OAAO,IAAI5B,EAAA6C,mBACTC,UACE,MAAMC,EAAK,IAAI/C,EAAAgD,iBAef,aAdMhtB,KAAKmuB,yCACTC,EACAC,EACAtD,EACAC,EACAJ,EAAUE,KACVc,EACAhD,EACAiF,EACA,CAAC,EACDd,EACA,CAAEG,MAAO,GACTrB,GAEKkB,EAAG7L,UAAoB,CAC5BA,SAAAA,CAAUiB,EAAMjc,EAAM3C,GACa,aAA7BonB,EAAUiB,MAAM4B,WAClBrL,EAAOA,EAAKrW,IAAI6e,EAAUiB,MAAOA,IAEnCroB,EAAK4e,GACLjc,GACF,GACA,GAEJ,CAAEinB,cAAe,KAClB,EAEHC,WAAW,IAGTpK,EAAyC,aAA7B2H,EAAUiB,MAAM4B,SAC9B,CAAEY,EAAYC,EAAW1D,EAAUiB,OACnC,CAAEwC,EAAYC,GAClB,MAAO,CACL3hB,KAAM,WACN8f,iBACAa,SAAUP,UAAA,UAAuBR,EAAQe,WAAYrK,cAEzD,CACA,GAAmC,aAA/B2H,EAAUI,QAAQyC,UAAyD,aAA9B7C,EAAUK,OAAOwC,SAChE,OAAgDxtB,KAAKurB,uBAAuBC,QAAQ,CAClF5C,UACA+B,UAAWmkB,EAAAvkB,kBAAkBkB,QAAQQ,WACnCtB,EAAUK,OACV8jB,EAAAvkB,kBAAkBkB,QAAQwkB,oBACxBnB,EAAAvkB,kBAAkBkB,QAAQykB,UAAUtlB,EAAUE,OAEhDH,EAAUI,QACVJ,EAAUiB,SAKhB,MAAMX,EAAWjrB,KAAK6qB,mBAChByB,EAAUxC,EAAAuB,oBAAoBC,sBAAsBtrB,KAAKurB,uBAAuBC,QAAQ,CAC5F5C,UACA+B,UAAWmkB,EAAAvkB,kBAAkBkB,QAAQQ,WAAWtB,EAAUI,QAASH,EAAWK,EAAUN,EAAUiB,UAYpG,MAAO,CACLlf,KAAM,WACN8f,eAZqBF,EAAQE,eAAetL,UAAoB,CAChEjc,OAAQkd,GAAQwI,EAAUK,OAAO0V,OAAOve,EAAK7a,IAAI2jB,IACjD/J,SAAAA,CAAUiB,EAAMjc,EAAM3C,GAIpBA,EAH6C,aAA7BonB,EAAUiB,MAAM4B,SAC9B3B,EAAgBa,SAAS,CAAC,CAAE/B,EAAUiB,MAAOzJ,EAAK7a,IAAIqjB,EAAUiB,UAChEC,EAAgBa,YAElBxmB,GACF,IAKAmnB,SAAUP,UAAA,UACCR,EAAQe,WACjBrK,UAAwC,aAA7B2H,EAAUiB,MAAM4B,SAA0B,CAAE7C,EAAUiB,OAAU,KAGjF,EAxIF1nB,EAAAA,iCAAA4rC,2gB/CZAtnC,EAAA0a,EAAA,OAAAhf,sHgDAA,MAAA4qC,EAAA5rB,EAAA,OAEA4G,EAAA5G,EAAA,OAMAiH,EAAAjH,EAAA,OAKA,MAAaitB,UAAmCrB,EAAAvkB,kBAG9Cvb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM0lB,EAAAyE,QAAQC,MAAME,IAC5B,CAEO,kBAAM4X,CACX1K,EACArT,GAEA,MAAMgC,EAA0BqR,EAAkBrR,UAElD,IAAIwlB,EAAmBnU,EAAkBlR,QACzC,MAAMslB,EAAyC,GACzC/iC,QAA8BzH,QAAQ4rB,IAAI7G,EAAUnd,MACvDtI,KAAI,CAAC+pC,EAAc7tC,KAClB,MAAMivC,EAAajvC,IAAMupB,EAAUnd,MAAMlM,OAAS,EAAmB06B,EAAkBjR,OAAShrB,KAAK6qB,iBAAiBoR,EAAmB,IAAI56B,KACvIspB,EAAYmkB,EAAAvkB,kBAAkBkB,QACjCQ,WAAWmkB,EAAQlB,EAAcoB,EAAYrU,EAAkBrQ,OAC5DiN,EAAS74B,KAAKurB,uBAAuBC,QAAQ,CACjD5C,UACA+B,cAQF,OALAylB,EAASE,EACLjvC,EAAIupB,EAAUnd,MAAMlM,OAAS,GAC/B8uC,EAAuB9sC,KAAK+sC,GAGvB,CAAEzX,SAAQlO,YAAW,IAE7BxlB,KAAI2nB,OAAQ+L,SAAQlO,gBAAgB,CACnCkO,OAAQ/O,EAAAuB,oBAAoBC,sBAAsBuN,GAClDlO,iBAGEtlB,EAAOykB,EAAAuB,oBAAoBC,sBAAsBtrB,KAAKstC,aACzD9hB,QAAQ,CAAE9e,KAAM,QAASY,UAASsb,aAarC,MAAO,CACLlc,KAAM,WACN8f,eAbqBnnB,EAAKmnB,eAAetL,UAAoB,CAC7DA,SAAAA,CAAUiB,EAAMjc,EAAM3C,GACpB,IAAK,MAAMgtC,KAAyBF,EAClCluB,EAAOA,EAAK0O,OAAO0f,GAErBhtC,EAAK4e,GACLjc,GACF,IAOA,cAAMmnB,GACJ,MAAMmjB,QAAqBnrC,EAAKgoB,WAC1BrK,EAAYwtB,EAAaxtB,UAAU/d,QAAOgmB,IAAaolB,EAC1DlS,MAAKoS,GAAyBA,EAAsBrwC,QAAU+qB,EAAS/qB,UAC1E,MAAO,IAAKswC,EAAcxtB,YAC5B,EAEJ,EA7DF9e,EAAAA,2BAAAisC,2gBhDbA3nC,EAAA0a,EAAA,OAAAhf,6HiDAA,MAAA4qC,EAAA5rB,EAAA,OACAylB,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OAGA8G,EAAA9G,EAAA,OACAgH,EAAAhH,EAAA,OACAiH,EAAAjH,EAAA,OAKA,MAAautB,UAA0C3B,EAAAvkB,kBAGrDvb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM0lB,EAAAyE,QAAQC,MAAMO,kBAC5B,CAEO,kBAAMuX,CAAahc,EAAyB/B,GACjD,MAAMiD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAElFmnB,QAAiB/vC,KAAKkrB,8BAA8BtC,EAAS+B,GACnE,GAAIolB,EAASplB,UACX,OAAOolB,EAASplB,UAGlB/B,EAAUmnB,EAASnnB,QAEnB,MAAMgC,EAAqCD,EAAUC,UAC/CkB,EAAU9rB,KAAK+rB,eAAenB,GAE9B8lB,EAAsC,aAA/B/lB,EAAUI,QAAQyC,SACzBmjB,EAAqC,aAA9BhmB,EAAUK,OAAOwC,SAE9B,GAAmC,aAA/B7C,EAAUI,QAAQyC,UAAyD,aAA9B7C,EAAUK,OAAOwC,SAAyB,CAEzF,MAAMxB,EAAUhsB,KAAK6qB,iBAAiBF,GAChCuiB,EAASltC,KAAKosB,qBAAqB0iB,EAAAvkB,kBAAkBkB,QACxDY,cAAc1B,EAAUI,QAASiB,EAASrB,EAAUK,OAAQL,EAAUiB,OAAQE,GAC3EQ,EAAUxC,EAAAuB,oBAAoBC,sBAC5BtrB,KAAKurB,uBAAuBC,QAAQ,CAAE5C,UAAS+B,UAAWuiB,KAE5D9e,EAAazD,EAAUI,QACvBsD,EAAY1D,EAAUK,OAGtB4lB,EAAwB,IAAIryB,IAE5BsP,EAAa,CAAC,EAEdrB,EAA6D,IAAIxC,EAAArJ,uBACrE2L,EAAQE,eACR,CACEC,eAAiBC,IAEf,MAAM3B,EAAoB2B,EAASplB,IAAI8mB,GACjCpD,EAAmB0B,EAASplB,IAAI+mB,GAChCzC,EAA+C,aAA7BjB,EAAUiB,MAAM4B,SACtCd,EAASplB,IAAIqjB,EAAUiB,OACvBjB,EAAUiB,MAENilB,GAAmB,EAAA3mB,EAAA8D,cAAajD,IAAW,EAAAb,EAAA8D,cAAapC,GACxDklB,GAAkB,EAAA5mB,EAAA8D,cAAahD,IAAU,EAAAd,EAAA8D,cAAapC,GAC5D,OAAO,IAAI5B,EAAA6C,mBACTC,UAEE,GAAI8jB,EAASzjC,IAAI0jC,IAAqBD,EAASzjC,IAAI2jC,GACjD,OAAO,IAAI9mB,EAAA4C,cAGb,MAAMG,EAAK,IAAI/C,EAAAgD,iBACTc,EAAU,CAAEZ,MAAO,GAqCzB,OAnCK0jB,EAASzjC,IAAI0jC,KAChBD,EAASnyB,IAAIoyB,SACP7wC,KAAKmuB,yCACTC,EACAC,EACAtD,EACAA,EACAH,EAAUE,KACVc,EACAhD,EACAiF,EACA,CAAC,EACDd,EACAe,EACAjC,IAIC+kB,EAASzjC,IAAI2jC,KAChBF,EAASnyB,IAAIqyB,SACP9wC,KAAKmuB,yCACTC,EACAC,EACArD,EACAA,EACAJ,EAAUE,KACVc,EACAhD,EACAiF,EACA,CAAC,EACDd,EACAe,EACAjC,IAGGkB,EAAG7L,UAAoB,CAC5BA,SAAAA,CAAUiB,EAAMjc,EAAM3C,GAEa,aAA7BonB,EAAUiB,MAAM4B,WAClBrL,EAAOA,EAAKrW,IAAI6e,EAAUiB,MAAOA,IAEnCroB,EAAK4e,GACLjc,GACF,GACA,GAEL,IAID8c,EAAyD,aAA7B2H,EAAUiB,MAAM4B,SAC9C,CAAEY,EAAYzD,EAAUK,OAAQL,EAAUiB,OAC1C,CAAEwC,EAAYzD,EAAUK,QAC5B,MAAO,CACLte,KAAM,WACN8f,iBACAa,SAAUP,UAAA,UAAuBR,EAAQe,WAAYrK,cAEzD,CACA,IAAK0tB,IAASC,EAAM,CAClB,MAAM1lB,EAAWjrB,KAAK6qB,mBAChBmlB,QAAiBhwC,KAAKstB,4BAC1B3C,EAAUI,QACVH,EAAUE,KACVG,EACAN,EAAUiB,MACVhD,GACA,EACAiD,GAcF,MAAO,CACLnf,KAAM,WACN8f,eAbqBwjB,EAASxjB,eAAetL,UAAoB,CACjEjc,OAAQkd,GAAQwI,EAAUK,OAAO0V,OAAOve,EAAK7a,IAAI2jB,IACjD/J,SAAAA,CAAUiB,EAAMjc,EAAM3C,GAKpBA,EAH6C,aAA7BonB,EAAUiB,MAAM4B,SAC9B3B,EAAgBa,SAAS,CAAC,CAAE/B,EAAUiB,MAAOzJ,EAAK7a,IAAIqjB,EAAUiB,UAChEC,EAAgBa,YAElBxmB,GACF,IAKAmnB,SAAUP,UAAA,UACCkjB,EAAS3iB,WAClBrK,UAAwC,aAA7B2H,EAAUiB,MAAM4B,SAA0B,CAAE7C,EAAUiB,OAAU,KAGjF,CAEA,MAAMb,EAAU2lB,EAAO/lB,EAAUK,OAASL,EAAUI,QAC9C7qB,EAAsCwwC,EAAO/lB,EAAUI,QAAUJ,EAAUK,OAC3E+lB,EAAOL,EAAO5B,EAAAvkB,kBAAkBkB,QAAQykB,UAAUtlB,EAAUE,MAAQF,EAAUE,KAC9EklB,QAAiBhwC,KAAKstB,4BAC1BvC,EACAgmB,EACA7wC,EACAyqB,EAAUiB,MACVhD,GACA,EACAiD,GAEI7I,EAAyD,aAA7B2H,EAAUiB,MAAM4B,SAA0B,CAAEttB,EAAOyqB,EAAUiB,OAAU,CAAE1rB,GAC3G,MAAO,CACLwM,KAAM,WACN8f,eAAgBwjB,EAASxjB,eACzBa,SAAUP,UAAA,UAAuBkjB,EAAS3iB,WAAYrK,cAE1D,EA5KF9e,EAAAA,kCAAAusC,2gBjDdAjoC,EAAA0a,EAAA,OAAAhf,4HkDAA,MAAA4qC,EAAA5rB,EAAA,OACAylB,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OACAiQ,EAAAjQ,EAAA,OAGA8G,EAAA9G,EAAA,OAIAiH,EAAAjH,EAAA,OAKA,MAAa8tB,UAAyClC,EAAAvkB,kBAGpDvb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM0lB,EAAAyE,QAAQC,MAAMQ,iBAC5B,CAEO,kBAAMsX,CACXhc,EACA/B,GAEA,MAAMiD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAClFgC,EAAoCD,EAAUC,UAC9CkB,EAAU9rB,KAAK+rB,eAAenB,GAE9BqmB,EAAoB,GAG1B,GAAmC,aAA/BtmB,EAAUI,QAAQyC,UACU,aAA9B7C,EAAUK,OAAOwC,UACjB7C,EAAUI,QAAQ2V,OAAO/V,EAAUK,QACnC,MAAO,CACLte,KAAM,WACN8f,eAAgB,IAAIxC,EAAA0jB,kBAAgC7hB,EAAgBa,YACpEW,SAAUA,IAAMxnB,QAAQC,QAAQ,CAC9BlF,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CAAElhB,KAAM,QAASxM,MAAO,GACrC0zB,kBAAkB,EAClB5Q,UAAW,MAMjB,MAAM+sB,QAAiB/vC,KAAKkrB,8BAA8BtC,EAAS+B,GACnE,GAAIolB,EAASplB,UACX,OAAOolB,EAASplB,UAElB/B,EAAUmnB,EAASnnB,QAGnB,MAAMsoB,EAAcpnB,EAAAuB,oBAAoBC,sBAAsBtrB,KAAKurB,uBAAuBC,QAAQ,CAChG5C,UACA+B,UAAWmkB,EAAAvkB,kBAAkBkB,QAC1BQ,WAAWtB,EAAUI,QAASH,EAAUE,KAAMH,EAAUK,OAAQL,EAAUiB,UAI/E,IAAIY,EACJ,GAAmC,aAA/B7B,EAAUI,QAAQyC,UAAyD,aAA9B7C,EAAUK,OAAOwC,SAAyB,CAIzF,MAAM2jB,EAAOnxC,KAAK6qB,iBAAiBF,GAC7BymB,EAAetnB,EAAAuB,oBAAoBC,sBACjCtrB,KAAKurB,uBAAuBC,QAAQ,CACxC5C,UACA+B,UAAWmkB,EAAAvkB,kBAAkBkB,QAAQwR,aACnCj9B,KAAKosB,qBAAqB0iB,EAAAvkB,kBAAkBkB,QACzCY,cAAc1B,EAAUI,QAASomB,EAAMxmB,EAAUK,OAAQL,EAAUiB,OAAQE,GAC9EgjB,EAAAvkB,kBAAkBkB,QAAQwS,yBAAyB,IAAK,CACtD6Q,EAAAvkB,kBAAkBkB,QAAQ4lB,qBAAqB1mB,EAAUI,SACzD+jB,EAAAvkB,kBAAkBkB,QAAQ4lB,qBAAqB1mB,EAAUK,cAI/DwB,eAAernB,KAAIunB,GAAYA,EAASmE,OAAOsgB,KACjD3kB,EAAiB,IAAIxC,EAAAmlB,cAAc,CACjCiC,EACAF,EAAY1kB,gBACX,CAAEY,WAAW,GAClB,KAEqC,aAA/BzC,EAAUI,QAAQyC,UACpByjB,EAAM1tC,KAAKsoB,EAAgBa,SAAS,CAAC,CAAE/B,EAAUI,QAASJ,EAAUK,WAEpC,aAA9BL,EAAUK,OAAOwC,UACnByjB,EAAM1tC,KAAKsoB,EAAgBa,SAAS,CAAC,CAAE/B,EAAUK,OAAQL,EAAUI,YAGrEyB,EAAiB0kB,EAAY1kB,eAAe8kB,QAAQL,GAGtD,MAAO,CACLvkC,KAAM,WACN8f,iBACAa,SAAU6jB,EAAY7jB,SAE1B,EAxFFnpB,EAAAA,iCAAA8sC,2gBlDjBAxoC,EAAA0a,EAAA,OAAAhf,qHmDCA,MAAA4lB,EAAA5G,EAAA,OAEAgR,EAAAhR,EAAA,OAYMmH,EAAK,IAHXnH,EAAA,OAGeoH,aAKf,MAAainB,UAAmCznB,EAAAU,iCAC9Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,UACd,CAEO,mBAAMimB,CAAcgc,EAA6B7c,GACtD,OAAO,CACT,CAEO,kBAAM8c,CAAahc,EAA4B/B,GAGpD,MAAMiQ,EAAwC/O,EAAAuB,oBAAoBC,sBAC1DtrB,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWA,EAAUld,MAAOmb,aAIpE6gB,QAAuB5Q,EAAOxL,WAC9BrK,EAAY2H,EAAU3H,UACtBwuB,EAAkB/H,EAAezmB,UACpC/d,QAAOgmB,IAAajI,EAAUmb,MAAKsT,GAAexmB,EAAS/qB,QAAUuxC,EAAYvxC,UAG3D8iB,EACtB/d,QAAOgmB,IAAawe,EAAezmB,UAAUmb,MAAKsT,GAAexmB,EAAS/qB,QAAUuxC,EAAYvxC,UAC9EqB,OAAS,IAC5BkoC,EAAe7V,kBAAmB,GAIpC,IAAIpH,EAA4D,IAA3BglB,EAAgBjwC,OACnDs3B,EAAOrM,eACPqM,EAAOrM,eAAernB,KAAKunB,IACzB,IAAK,MAAMglB,KAAkBF,EAC3B9kB,EAAWA,EAASmE,OAAO6gB,GAE7B,OAAOhlB,CAAQ,IAMf8a,EAAmB,EAiBvB,OAhBAhb,EAAiBA,EAAernB,KAAKunB,IACnC8a,IACA,MAAMmK,EAAwB,IAAInwB,IAClC,OAAOkL,EAASvnB,KAAKkvB,IACnB,GAAIA,aAAgBH,EAAA0d,wBAAyB,CAC3C,IAAIC,EAAkBF,EAAsBrqC,IAAI+sB,EAAKn0B,OAKrD,OAJK2xC,IACHA,EAAkBxnB,EAAG6K,UAAU,GAAGb,EAAKn0B,QAAQsnC,KAC/CmK,EAAsB7lC,IAAIuoB,EAAKn0B,MAAO2xC,IAEjCA,CACT,CACA,OAAOxd,CAAI,GACX,IAGG,CACL3nB,KAAM,WACN8f,iBACAa,SAAUP,UAAA,IAAiB2c,EAAgBzmB,cAE/C,EAhEF9e,EAAAA,2BAAAqtC,2gBnDpBA/oC,EAAA0a,EAAA,MAAAhf,0HoDEA,MAAA4lB,EAAA5G,EAAA,OASA4N,EAAA5N,EAAA,OAMA,MAAa4uB,UAAuChoB,EAAAU,iCAIlDxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,UACd,CAEO,mBAAMimB,CAAcgc,EAA6B7c,GACtD,OAAO,CACT,CAEO,kBAAM8c,CAAahc,EAA4B/B,GACpD,MAAMiQ,EAAwC/O,EAAAuB,oBAAoBC,sBAC1DtrB,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWA,EAAUld,MAAOmb,aAG1E,MAAO,CACLlc,KAAM,WACN8f,eAHqCqM,EAAOrM,eAAevnB,aAAajF,KAAKuoC,cAAc3f,IAI3FyE,SAAUwL,EAAOxL,SAErB,CAQO,mBAAMkb,CAAc3f,GACzB,MAAM,aAAE0O,SAAuBt3B,KAAKwoC,qBAAqBhd,QAAQ,CAAE6L,qBAAqB,EAAMzO,YACxF6f,EAAS,IAAI3X,EAAAI,SAA0B,CAAEtsB,IAAK5E,KAAKixB,YACzD,OAAQvE,IACN,MAAMtK,EAAekV,EAAa5K,GAClC,OAAI+b,EAAOt7B,IAAIiV,KAGfqmB,EAAO38B,IAAIsW,GAAM,IACV,EAAI,CAEf,EAzCFle,EAAAA,+BAAA4tC,2gBpDjBAtpC,EAAA0a,EAAA,OAAAhf,sHqDAA,MAAAykC,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OAGAiQ,EAAAjQ,EAAA,OAGA8G,EAAA9G,EAAA,OAOA,MAAa6uB,UAAmCjoB,EAAAU,iCAK9Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,UACd,CAEO,mBAAMimB,CAAcC,EAA4Bd,GACrD,GAAgC,cAA5Bc,EAAU3gB,KAAKwjB,SACjB,MAAM,IAAIzrB,MAAM,GAAG/B,KAAKgK,gDAAgD2gB,EAAU3gB,KAAKwjB,uBAEzF,OAAO,CACT,CAEO,kBAAMmZ,CAAahc,EAA4B/B,GAGpD,MAAM,YAAE8I,SAAsB1xB,KAAKyyB,4BAA4BjH,QAAQ,CACrEsG,wBAAyB,CACvB5xB,MAAOyqB,EAAU3gB,KAAK9J,MACtBwM,KAAM1M,KAAKgyC,oBAAsB,cAAW7xC,GAE9CyoB,YAIF,IAAIiQ,EACJ,IACEA,EAAS/O,EAAAuB,oBAAoBC,sBAAsBtrB,KAAKurB,uBAAuBC,QAAQ,CACrFb,UAAWb,EAAAuB,oBAAoBsE,sBAAsBhF,EAAUld,MAAOikB,GACtE9I,YAEJ,CAAE,MAAOzlB,GACP,IAAIwnB,EAAU2b,OAeZ,MAAMnjC,EAfc,CAEpB,MAAM0oB,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GACxFiQ,EAAS,CACPrM,eAAgB,IAAIxC,EAAA0jB,kBAAgC7hB,EAAgBa,YACpEhgB,KAAM,WACN2gB,SAAUP,UAAA,CACRlsB,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CAAElhB,KAAM,QAASxM,MAAO,GACrC0zB,kBAAkB,EAClB5Q,UAAW,MAGfhjB,KAAKupC,QAAQ3gB,EAAS,sDAA+DzlB,EAAO4L,UAC9F,CAGF,CAEA,OAAO8pB,CACT,EAvDF30B,EAAAA,2BAAA6tC,2gBrDhBAvpC,EAAA0a,EAAA,OAAAhf,oHsDCA,MAAA4lB,EAAA5G,EAAA,OAGA6G,EAAA7G,EAAA,OAgBA,MAAa+uB,UAAiCnoB,EAAAU,iCAC5Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,QACd,CAEO,mBAAMimB,CAAcgc,EAA2B7c,GACpD,OAAO,CACT,CAEO,kBAAM8c,CAAahc,EAA0B/B,GAI9C+B,EAAUppB,SACZqnB,EAAUA,EAAQ9c,IAAIie,EAAAoB,mBAAmB+mB,eAAgBvnB,EAAUppB,SAIrE,MAAMs3B,QAAsC74B,KAAKurB,uBAC9CC,QAAQ,CAAEb,UAAWA,EAAUld,MAAOmb,YAEzC,MAAoB,aAAhBiQ,EAAOnsB,KAE8B,CACrCA,KAAM,WACN8f,eAHqBxsB,KAAKmyC,YAAYtZ,EAAOrM,eAAgB7B,GAI7D0C,SAAUrtB,KAAKoyC,cAAcvZ,EAAQlO,IAIrB,UAAhBkO,EAAOnsB,KAE2B,CAClCA,KAAM,QACNstB,WAHiBh6B,KAAKmyC,YAAYtZ,EAAOmB,WAAYrP,GAIrD0C,SAAUrtB,KAAKoyC,cAAcvZ,EAAQlO,IAKlCkO,CACT,CAGQsZ,WAAAA,CAAY/yB,EAA4BsQ,GAE9C,MAAM2iB,EAAqBrK,QAAQtY,EAAQnuB,SAA8B,IAAnBmuB,EAAQnuB,QACxD,MAAEiB,GAAUktB,EACZjtB,EAAM4vC,EAAY3iB,EAAQltB,MAAQktB,EAAQnuB,OAAU,EAAIuC,OAAO+pC,kBACrE,OAAOzuB,EAAO8B,UAAU,CAAElgB,OAAQwB,EAAO6Y,MAAO1W,KAAKC,IAAInC,EAAMD,EAAQ,EAAG,GAAI4qB,WAAW,GAC3F,CAGQglB,aAAAA,CACNvZ,EACAnJ,GAGA,MAAM2iB,EAAqBrK,QAAQtY,EAAQnuB,SAA8B,IAAnBmuB,EAAQnuB,OAC9D,MAAO,IAAsCs3B,EAAOxL,WACjD/mB,MAAMgsC,IACL,MAAM1kB,EAAc,IAAK0kB,EAAY1kB,aAOrC,OANI9pB,OAAO2qC,SAAS7gB,EAAY1tB,SAC9B0tB,EAAY1tB,MAAQyE,KAAKC,IAAI,EAAGgpB,EAAY1tB,MAAQwvB,EAAQltB,OACxD6vC,IACFzkB,EAAY1tB,MAAQyE,KAAK4tC,IAAI3kB,EAAY1tB,MAAOwvB,EAAQnuB,UAGrD,IAAK+wC,EAAa1kB,cAAa,GAE5C,EAtEF1pB,EAAAA,yBAAA+tC,2gBtDpBAzpC,EAAA0a,EAAA,OAAAhf,qHuDCA,MAAA4lB,EAAA5G,EAAA,OACA6G,EAAA7G,EAAA,OAEAiQ,EAAAjQ,EAAA,OAMAiH,EAAAjH,EAAA,OAKA,MAAasvB,UAAkC1oB,EAAAuB,oBAC7Crc,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKse,GAChB,IAAKuB,EAAAuB,oBAAoBoE,mBAAmBlH,EAAOoC,WACjD,MAAM,IAAI5oB,MAAM,SAAS/B,KAAKgK,sDAEhC,MAAO,CAAEyoC,aAAc,EACzB,CAEO,SAAMnqB,CAAIC,GAEf,MAAMmqB,EAAgEnqB,EAAOK,QAC1EthB,IAAIyiB,EAAAuH,cAAcohB,yBACjBA,IACFA,EAAwBC,aACtBpqB,EAAOoC,UAAUje,UACjBvM,EACAooB,EAAOoC,UACPpC,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcshB,uBACjC5yC,KAAKgK,KACL,CAAC,GAEHue,EAAOK,QAAUL,EAAOK,QAAQ9c,IAAIie,EAAAuH,cAAcshB,sBAAuBrqB,EAAOoC,YAGlF,MAAMqI,EAAqClJ,EAAAuB,oBAAoBoE,mBAAmBlH,EAAOoC,WACnFkoB,EAAgB7f,EAAcpK,QAAUL,EAAOK,QAAQkqB,MAAM9f,EAAcpK,SAAWL,EAAOK,QAInG,IAAIiT,GAAY,EAQhB,GAPA1R,EAAAqL,KAAK8I,iBAAiB/V,EAAOoC,UAAW,CACtCkR,UAASA,KACPA,GAAY,GACL,KAIPA,EAAW,CACb,MAAM7B,EAAahH,EAAcxD,OAAOuE,WAAWxL,EAAOoC,UAAWkoB,GAErE,MAAO,CACLnmC,KAAM,QACNstB,aACA3M,UAJe,EAAA8F,EAAA4f,kBAAiB/Y,GAMpC,CAGA,OAAQzR,EAAOoC,UAAUje,MACvB,KAAKyd,EAAAyE,QAAQC,MAAMgS,IACjB,MAAO,CACLn0B,KAAM,UACNksB,QAASA,IAAM5F,EAAcxD,OAAOsE,aAA0BvL,EAAOoC,UAAWkoB,IAEpF,KAAK1oB,EAAAyE,QAAQC,MAAMwS,iBACnB,KAAKlX,EAAAyE,QAAQC,MAAMqM,cACnB,KAAK/Q,EAAAyE,QAAQC,MAAMyS,KACnB,KAAKnX,EAAAyE,QAAQC,MAAM0S,MACnB,KAAKpX,EAAAyE,QAAQC,MAAM2S,OACnB,KAAKrX,EAAAyE,QAAQC,MAAM4S,KACnB,KAAKtX,EAAAyE,QAAQC,MAAM6S,IACnB,KAAKvX,EAAAyE,QAAQC,MAAM8S,KACnB,KAAKxX,EAAAyE,QAAQC,MAAM+S,KACjB,MAAO,CACLl1B,KAAM,OACNksB,QAASA,IAAM5F,EAAcxD,OAAOyE,UAA0B1L,EAAOoC,UAAWkoB,IAItF,MAAMrmB,EAAiBwG,EAAcxD,OAAO+D,cAAchL,EAAOoC,UAAWkoB,GAE5E,MAAO,CACLnmC,KAAM,WACN8f,iBACAa,UAJe,EAAA8F,EAAA6f,qBAAoBxmB,GAMvC,EAhFFtoB,EAAAA,0BAAAsuC,2gBvDfAhqC,EAAA0a,EAAA,OAAAhf,oHwDCA,MAAA4lB,EAAA5G,EAAA,OAMAiQ,EAAAjQ,EAAA,OAWA8G,EAAA9G,EAAA,OACAiR,EAAAjR,EAAA,OAMA,MAAamsB,UAAiCvlB,EAAAU,iCAG5Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,QACd,CAQO,qBAAOwuC,CAAejwB,GAC3B,OAAO,EAAAmR,EAAAyK,WAAU5b,EAAUkwB,OAC7B,CAWO,0BAAa5D,CAIlB6D,EACAzmB,EACA9D,EACA2mB,GAGA,IAAI6D,SAAoC7D,EACrC/jB,QAAQ,CAAE9qB,KAAM,aAAckoB,aAAYyE,SAG7C,IAAK,MAAMgmB,KAAqBF,EAC9BC,EAA4B,IACvBC,YACO9D,EACP/jB,QAAQ,CACP9qB,KAAM,SACN0yC,oBAA2BA,EAC3BC,kBAAyBA,EACzBzqB,aACEyE,UAKV+lB,EAAoBxyC,MAAQ,IAAIuyB,EAAAQ,wBAGhC,MAAM2f,EAAqBA,IAAYF,EAAoBxyC,MAAM2yC,aACjE,IAAK,MAAMlmB,KAAY8lB,EACrB9lB,EAASzsB,MAAMwwB,sBAAsBkiB,GASvC,OALI5mB,IACF0mB,EAAoBpwB,UAAYqsB,EAC7B4D,eAAeE,EAAUhuC,KAAIkoB,GAAYA,EAASrK,cAGhDowB,CACT,CAEO,mBAAM1oB,CAAcgc,EAA2B7c,GACpD,OAAO,CACT,CAEO,kBAAM8c,CAAahc,EAA0B/B,GAGlD,MAAM4qB,QAAmB3tC,QAAQ4rB,IAAI9G,EAAUld,MAC5CtI,KAAIy1B,GAAgB56B,KAAKurB,uBAAuBC,QAAQ,CAAEb,UAAWiQ,EAAchS,eACtF,IAAI6qB,EACJ,IAAK,MAAM5a,KAAU2a,EACnB,QAAmBrzC,IAAfszC,EACFA,EAAa5a,EAAOnsB,UACf,GAAI+mC,IAAe5a,EAAOnsB,KAC/B,MAAM,IAAI3K,MAAM,mBAAmB0xC,SAAkB5a,EAAOnsB,QAKhE,GAAmB,aAAf+mC,GAAwD,IAA3B9oB,EAAUld,MAAMlM,OAAc,CAC7D,MAAMmyC,EAA2CF,EAAWruC,IAAI2kB,EAAAuB,oBAAoBC,iBASpF,MAAO,CAAE5e,KAAM,WAAY8f,eAPY,IAAIxC,EAAAmlB,cAAcuE,EAAQvuC,KAC9D0zB,GAA0CA,EAAOrM,iBACjD,CAAEY,WAAW,IAK2BC,SAHOA,IAAMxnB,QAAQ4rB,IAAIiiB,EAAQvuC,KAAI0zB,GAAUA,EAAOxL,cAC9F/mB,MAAK8oC,GAAWC,EACdC,cAAcF,GAAS,EAAMxmB,EAAS5oB,KAAKuvC,iCAElD,CAGA,GAAmB,UAAfkE,EAAwB,CAC1B,MAAMC,EAAwCF,EAAWruC,IAAI2kB,EAAAuB,oBAAoB+c,cASjF,MAAO,CAAE17B,KAAM,QAASstB,WAPL,IAAIhQ,EAAAmlB,cAAcuE,EAAQvuC,KAC1C0zB,GAAuCA,EAAOmB,aAC9C,CAAE5M,WAAW,IAKoBC,SAHWA,IAAMxnB,QAAQ4rB,IAAIiiB,EAAQvuC,KAAI0zB,GAAUA,EAAOxL,cAC3F/mB,MAAK8oC,GAAWC,EACdC,cAAcF,GAAS,EAAOxmB,EAAS5oB,KAAKuvC,iCAEnD,CAGA,MAAM,IAAIxtC,MAAM,mBAAmB0xC,IACrC,EAvHFvvC,EAAAA,yBAAAmrC,2gBxDzBA7mC,EAAA0a,EAAA,OAAAhf,oHyDCA,MAAA4lB,EAAA5G,EAAA,OAUMmH,EAAK,IAHXnH,EAAA,OAGeoH,aAMf,MAAaqpB,UAAiC7pB,EAAAU,iCAG5Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,QACd,CAEO,mBAAMimB,CAAcC,EAA0B/B,GAEnD,OADAkB,EAAAuB,oBAAoBuoB,gBAAgBhrB,IAC7B,CACT,CAEO,kBAAM+d,CAAahc,EAA0B/B,GAGlD,IAAIirB,EAEFA,EADuB,YAArBlpB,EAAU6E,OACHnF,EAAG4b,eACyB,iBAArBtb,EAAU6E,OACjB7E,EAAU6E,OAEV,CAAE7E,EAAU6E,QAEvB,MAAM,QAAEoJ,SAAkB54B,KAAK8zC,oBAAoBtoB,QAAQ,CACzDuoB,aAAc,CACZF,SACAG,kBAAmBrpB,EAAU2b,OAC7B2N,YAAY,GAEdrrB,YAGF,MAAO,CACLlc,KAAM,OACNksB,UAEJ,EApCF10B,EAAAA,yBAAAyvC,2gBzDjBAnrC,EAAA0a,EAAA,OAAAhf,mI0DCA,MAAA4lB,EAAA5G,EAAA,OAWA,MAAagxB,UACHpqB,EAAAU,iCACRxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,kBACd,CAEO,mBAAMimB,CACXC,EACA/B,GAGA,OADAkB,EAAAuB,oBAAoBuoB,gBAAgBhrB,IAC7B,CACT,CAEO,kBAAM+d,CAAa1K,EAA4CrT,GAWpE,MAAO,CACLlc,KAAM,OACNksB,QAXcA,IAAqB,WAEnC,IAAK,MAAMjO,KAAasR,EAAkBuK,QAAS,CACjD,MAAM2N,EAAYrqB,EAAAuB,oBACf+oB,kBAAkBp0C,KAAKurB,uBAAuBC,QAAQ,CAAEb,YAAW/B,mBAChEurB,EAAUvb,SAClB,CACD,EAPoC,GAavC,EA7BF10B,EAAAA,yCAAAgwC,2gB1DZA1rC,EAAA0a,EAAA,MAAAhf,qH2DCA,MAAA4lB,EAAA5G,EAAA,OAUA,MAAamxB,UAAkCvqB,EAAAU,iCAG7Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,SACd,CAEO,mBAAMimB,CAAcC,EAA2B/B,GAEpD,OADAkB,EAAAuB,oBAAoBuoB,gBAAgBhrB,IAC7B,CACT,CAEO,kBAAM+d,CAAahc,EAA2B/B,GAGnD,MAAM,QAAEgQ,SAAkB54B,KAAK8zC,oBAAoBtoB,QAAQ,CACzD8oB,aAAc,CACZT,OAAQ,CAAElpB,EAAU6E,QACpB+kB,qBAAsB5pB,EAAU2b,QAElC1d,YAGF,MAAO,CACLlc,KAAM,OACNksB,UAEJ,EA3BF10B,EAAAA,0BAAAmwC,2gB3DXA7rC,EAAA0a,EAAA,OAAAhf,gI4DAA,MAAAswC,EAAAtxB,EAAA,OACAylB,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OASA8G,EAAA9G,EAAA,OAMA,MAAauxB,UAA8C3qB,EAAAU,iCAMzDxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,gBAHJ,KAAA+iC,iBAAmB,CAI7B,CAEO,mBAAM9c,CACXC,EACA/B,GAGA,OADAkB,EAAAuB,oBAAoBuoB,gBAAgBhrB,IAC7B,CACT,CAEO,kBAAM+d,CAAahc,EAAiC/B,GAEzD,MAAMiD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAElF8rB,EAAgC/pB,EAAU0Q,MAC9CvR,EAAAuB,oBAAoBC,sBAAsBtrB,KAAKurB,uBAC5CC,QAAQ,CAAEb,UAAWA,EAAU0Q,MAAOzS,aAAY4D,eACrD,IAAIxC,EAAA0J,cAA4B,CAAE7H,EAAgBa,YAAc,CAAEU,WAAW,IAG/E,IAAIunB,EACAC,EACAjqB,EAAUyQ,SAEZuZ,EAAmB,IAAIH,EAAAjN,wBACrB5c,EAAUyQ,OAAOj2B,IAAIqvC,EAAAjN,wBAAwBM,aAAa9lB,KAAK,KAAM/hB,KAAKwnC,mBAC1EkN,EAAcjmC,SAEhBzO,KAAKwnC,oBAEH7c,EAAUkG,SAEZ+jB,EAAmB,IAAIJ,EAAAjN,wBACrB5c,EAAUkG,OAAO1rB,IAAIqvC,EAAAjN,wBAAwBM,aAAa9lB,KAAK,KAAM/hB,KAAKwnC,mBAC1EkN,EAAcjmC,SAEhBzO,KAAKwnC,oBAIP,MAAM,QAAE5O,SAAkB54B,KAAK8zC,oBAAoBtoB,QAAQ,CACzDmpB,mBACAC,mBACAhsB,YAGF,MAAO,CACLlc,KAAM,OACNksB,UAEJ,EA1DF10B,EAAAA,sCAAAuwC,2gB5DnBAjsC,EAAA0a,EAAA,MAAAhf,mH6DCA,MAAA4lB,EAAA5G,EAAA,OAQMmH,EAAK,IAHXnH,EAAA,OAGeoH,aAMf,MAAauqB,UAAgC/qB,EAAAU,iCAG3Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,OACd,CAEO,mBAAMimB,CAAcC,EAAyB/B,GAElD,OADAkB,EAAAuB,oBAAoBuoB,gBAAgBhrB,IAC7B,CACT,CAEO,kBAAM+d,CAAahc,EAAyB/B,GAGjD,IAAIirB,EAEFA,EADuB,YAArBlpB,EAAU6E,OACHnF,EAAG4b,eACyB,iBAArBtb,EAAU6E,OACjB7E,EAAU6E,OAEV,CAAE7E,EAAU6E,QAEvB,MAAM,QAAEoJ,SAAkB54B,KAAK8zC,oBAAoBtoB,QAAQ,CACzDuoB,aAAc,CACZF,SACAG,kBAAmBrpB,EAAU2b,OAC7B2N,YAAY,GAEdrrB,YAGF,MAAO,CACLlc,KAAM,OACNksB,UAEJ,EApCF10B,EAAAA,wBAAA2wC,2gB7DfArsC,EAAA0a,EAAA,OAAAhf,mH8DCA,MAAA4lB,EAAA5G,EAAA,OAGA6G,EAAA7G,EAAA,OAGA+G,EAAA/G,EAAA,OAEAiH,EAAAjH,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YAMf,MAAawqB,UAAgChrB,EAAAU,iCAO3Cxb,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,QACZzE,KAAK41B,QAAU,IAAIzL,EAAAyF,OACrB,CAEO,mBAAMlF,CAAcC,EAAyB/B,GAElD,OADAkB,EAAAuB,oBAAoBuoB,gBAAgBhrB,IAC7B,CACT,CAEO,kBAAM+d,CAAahc,EAAyB/B,GAGjD,IAAImsB,EAAansB,EACb+B,EAAU2b,SACZyO,EAAaA,EAAWjpC,IAAIie,EAAAuH,cAAc0jB,SAAS,IAErD,MAAM,YAAEtjB,SAAsB1xB,KAAKyyB,4BAA4BjH,QAAQ,CACrEsG,wBAAyB,CAAE5xB,MAAOyqB,EAAU6E,OAAOtvB,OACnD0oB,QAASmsB,IAgBX,IAAI/a,EAZW8a,EAAwB1M,mBAAmBpoC,KAAKurB,uBAAuBC,QAAQ,CAC5Fb,UAAW3qB,KAAK41B,QAAQoF,gBACtBlR,EAAAuB,oBAAoBsE,sBAClB3vB,KAAK41B,QAAQvJ,cAAchC,EAAGY,SAAS,KAAMZ,EAAGY,SAAS,KAAMZ,EAAGY,SAAS,MAC3EyG,GAEF,CAAE1xB,KAAK41B,QAAQvJ,cAAchC,EAAGY,SAAS,KAAMZ,EAAGY,SAAS,KAAMZ,EAAGY,SAAS,QAE/ErC,QAASmsB,KAIa/a,WACpBrP,EAAUoM,cACZiD,EAAaA,EAAW70B,KAAIuvB,GAAQrK,EAAGqK,KAAKA,EAAK3J,QAAS2J,EAAK9J,UAAW8J,EAAK1J,OAAQL,EAAUoM,gBAInG,MAAM,QAAE6B,SAAkB54B,KAAK8zC,oBAAoBtoB,QAAQ,CACzDmpB,iBAAkB3a,EAClBpR,YAGF,MAAO,CACLlc,KAAM,OACNksB,UAEJ,EAzDF10B,EAAAA,wBAAA4wC,2gB9DjBAtsC,EAAA0a,EAAA,OAAAhf,qH+DAA,MAAAykC,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OAEAiQ,EAAAjQ,EAAA,OAQA8G,EAAA9G,EAAA,OAIMmH,EAAK,IAHXnH,EAAA,OAGeoH,aAKf,MAAa2qB,UAAkCnrB,EAAAorB,yBAG7ClmC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,SACd,CAEO,mBAAMimB,CAAcgc,EAA4B7c,GACrD,OAAO,CACT,CAEO,kBAAM8c,CAAahc,EAA2B/B,GAEnD,MAAMiD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAClF4D,EAAiC,IAAIxC,EAAA0J,cAAwB/I,EAAU+B,SAC1EvnB,KAAI4iC,GAAKlc,EAAgBa,SAAStrB,OAAOkM,QAAQy6B,GAC/C5iC,KAAI,EAAG1E,EAAKP,KAAY,CAAEmqB,EAAGY,SAASxqB,EAAI+D,MAAM,IAAKtE,SACpD8iB,EAAY2H,EAAU3H,UAO5B,MAAO,CAAEtW,KAAM,WAAY8f,iBAAgBa,SAN1BA,IAAiCxnB,QAAQC,QAAQ,CAChElF,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CAAElhB,KAAM,QAASxM,MAAOyqB,EAAU+B,SAASnrB,QACxDqyB,iBAAkBjJ,EAAU+B,SAASyR,MAAKzR,GAAY1J,EAAUmb,MAAKlT,KAAc,IAAIA,EAAS/qB,UAAWwsB,OAC3G1J,cAGJ,EAzBF9e,EAAAA,0BAAA+wC,2gB/DtBAzsC,EAAA0a,EAAA,OAAAhf,iHgECA,MAAAixC,EAAAjyB,EAAA,OACA6G,EAAA7G,EAAA,OAEAkyB,EAAAlyB,EAAA,MAKA,MAAamyB,UAA+BF,EAAAG,gBAG1CtmC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GACNzE,KAAKu1C,gBAAkB,IAAIH,EAAAI,UAAU,CAAEC,gBAAgB,GACzD,CAEO,UAAMxrC,CAAKse,GAChB,GAAqC,YAAjCA,EAAOmO,aAAaC,SACtB,MAAM,IAAI50B,MAAM,6CAElB,OAAO,CACT,CAEO,SAAMumB,CAAIC,GACf,MAAMK,EAAeL,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcokB,gBAAkB,CAAC,EACnE5uC,EAAU,CAEd6uC,qBAA4BptB,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcsF,8BAE/D,MAAO,CAAEjM,gBAAiB3qB,KAAKu1C,gBAAgBK,uBAAuBrtB,EAAOiQ,MAAO5P,EAAS9hB,GAC/F,EAtBF5C,EAAAA,uBAAAmxC,2gBhETA7sC,EAAA0a,EAAA,MAAAhf,gHiECA,MAAAixC,EAAAjyB,EAAA,OAEAiH,EAAAjH,EAAA,OACA2yB,EAAA3yB,EAAA,OAKA,MAAa4yB,UAA8BX,EAAAG,gBAGzCtmC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GACNzE,KAAKgJ,SAAW5H,OAAOsoB,OAAO1pB,KAAKgJ,SACrC,CAEO,UAAMiB,CAAKse,GAChB,GAAIA,EAAOmO,aAA+C,WAAhCnO,EAAOmO,YAAYC,SAC3C,MAAM,IAAI50B,MAAM,4CAElB,OAAO,CACT,CAEO,SAAMumB,CAAIC,GACf,MACMwtB,EADS,IAAIF,EAAA91C,OAAa,CAAEiJ,SAAUhJ,KAAKgJ,SAAUgtC,QAASztB,EAAOytB,QAASC,YAAY,IACpEhpC,MAAMsb,EAAOiQ,OAEzC,MAAO,CACLwd,QAFoC,UAAtBD,EAAarpC,KAAmBqpC,EAAaG,UAAO/1C,EAGlEwqB,WAAW,EAAAR,EAAAgsB,WAAUJ,EAAc,CACjCK,OAAO,EACPptC,SAAUhJ,KAAKgJ,SACfqtC,iBAAiB,EACjBL,QAASztB,EAAOytB,UAGtB,EA5BF9xC,EAAAA,sBAAA4xC,0gBjETAttC,EAAA0a,EAAA,MAAAhf,2HkEMA,MAAAoyC,EAAApzB,EAAA,OAGA6G,EAAA7G,EAAA,OAEAiF,EAAAjF,EAAA,OAKA,MAAaqzB,UAAwCD,EAAAE,kBAGnDxnC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKse,GAChB,GAC2D,aADtDA,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcyH,UACpCxQ,EAAOK,QAAQthB,IAAI,IAAI6gB,EAAAyI,iBAAiB,aACxC,MAAM,IAAI7uB,MAAM,GAAG/B,KAAKgK,4CAE1B,OAAO,CACT,CAEO,SAAMse,CAAIC,GAEf,IAAI,UAAEoC,EAAS,QAAE/B,SAAkB5oB,KAAKy2C,eAAexpC,MAAMsb,EAAOiQ,MAAOjQ,EAAOK,SAGlF,QAFG+B,YAAW/B,iBAAkB5oB,KAAKy2C,eAAeC,SAAS/rB,EAAW/B,IAEjE,CACL/kB,OAAQ,CACNk1B,SAAS,EACTrsB,KAAM,UACNkT,KAAM+K,GAGZ,EA3BFzmB,EAAAA,gCAAAqyC,2gBlEhBA/tC,EAAA0a,EAAA,OAAAhf,0HmEMA,MAAAoyC,EAAApzB,EAAA,OAGA6G,EAAA7G,EAAA,OAEAiF,EAAAjF,EAAA,OAKA,MAAayzB,UAAuCL,EAAAE,kBAGlDxnC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKse,GAChB,GAC2D,YADtDA,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcyH,UACpCxQ,EAAOK,QAAQthB,IAAI,IAAI6gB,EAAAyI,iBAAiB,aACxC,MAAM,IAAI7uB,MAAM,GAAG/B,KAAKgK,2CAE1B,OAAO,CACT,CAEO,SAAMse,CAAIC,GAEf,MAAM,UAAEoC,SAAoB3qB,KAAKy2C,eAAexpC,MAAMsb,EAAOiQ,MAAOjQ,EAAOK,SAE3E,MAAO,CACL/kB,OAAQ,CACNk1B,SAAS,EACTrsB,KAAM,SACNkT,KAAM+K,GAGZ,EA1BFzmB,EAAAA,+BAAAyyC,2gBnEhBAnuC,EAAA0a,EAAA,OAAAhf,4HoEMA,MAAAoyC,EAAApzB,EAAA,OAGA6G,EAAA7G,EAAA,OAEAiF,EAAAjF,EAAA,OACA0zB,EAAA1zB,EAAA,OAKA,MAAa2zB,UAAyCP,EAAAE,kBAGpDxnC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKse,GAChB,MAAM7nB,EAAQ6nB,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcyH,UAAYxQ,EAAOK,QAAQthB,IAAI,IAAI6gB,EAAAyI,iBAAiB,YACnG,GAAa,aAATlwB,GAAgC,kBAATA,EACzB,MAAM,IAAIqB,MAAM,GAAG/B,KAAKgK,gEAE1B,OAAO,CACT,CAEO,SAAMse,CAAIC,GAGf,IAAI,UAAEoC,EAAS,QAAE/B,SAAkB5oB,KAAKy2C,eAAexpC,MAAMsb,EAAOiQ,MAAOjQ,EAAOK,WAC/E+B,YAAW/B,iBAAkB5oB,KAAKy2C,eAAeC,SAAS/rB,EAAW/B,IAGxE,MAAM8pB,EAA0B,IAAIkE,EAAAE,8BACpCluB,EAAUA,EAAQ9c,IAAIie,EAAAuH,cAAcohB,wBAAyBA,GAE7D,MAAM7Z,QAAe74B,KAAKy2C,eAAepN,SAAS1e,EAAW/B,GAG7D,OAAQiQ,EAAOnsB,MACb,IAAK,iBACGmsB,EAAOrM,eAAeqa,UAC5B,MACF,IAAK,cACGhO,EAAOmB,WAAW6M,UACxB,MACF,IAAK,UAGL,IAAK,aACGhO,EAAOD,UAIjB,MAAMl4B,EAAsC6nB,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcyH,UAC3ExQ,EAAOK,QAAQmK,QAAQ,IAAI5K,EAAAyI,iBAAiB,YAC9C,MAAO,CACL/sB,OAAQ,CACNk1B,SAAS,EACTrsB,KAAMhM,EACNkf,KAAe,aAATlf,EAAsBgyC,EAAwBqE,kBAAoBrE,EAAwBsE,UAGtG,EApDF9yC,EAAAA,iCAAA2yC,yICfA,MAAA3sB,EAAAhH,EAAA,OAmPA,SAAgB+zB,EAAe/2C,GAC7B,OAAOA,EAAMg3C,eAAe,QAAS,CAAEC,sBAAuB,EAAGC,sBAAuB,GAC1F,CA/OAlzC,EAAAA,8BAAA,MAIE8K,WAAAA,GACEhP,KAAKq3C,UAAY,IAAI71B,GACvB,CAEOmxB,YAAAA,CACL2E,EACAC,EACAC,EACAC,EACAC,EACArqB,GAEA,MAAMsqB,EAAsB,CAC1BD,QACAJ,kBACAC,mBACAK,QAASJ,EACTnS,SAAU,GACVhY,YAIF,GAFArtB,KAAKq3C,UAAUvrC,IAAI0rC,EAAMG,GAErB33C,KAAK63C,SAAU,CACjB,IAAKJ,EACH,MAAM,IAAI11C,MAAM,2CAElB,MAAM+1C,EAAiB93C,KAAKq3C,UAAU/vC,IAAImwC,GAC1C,IAAKK,EACH,MAAM,IAAI/1C,MAAM,8BAElB+1C,EAAezS,SAAS9hC,KAAKo0C,EAC/B,KAAO,CACL,GAAIF,EACF,MAAM,IAAI11C,MAAM,qEAElB/B,KAAK63C,SAAWF,CAClB,CACF,CAEOI,aAAAA,CAAcP,EAAWvyC,GAC9B,MAAM0yC,EAAW33C,KAAKq3C,UAAU/vC,IAAIkwC,GACpC,IAAKG,EACH,MAAM,IAAI51C,MAAM,4BAElB41C,EAAStS,SAAWpgC,EAAS0yC,EAAStS,SAASpgC,OAAOA,GAAU,EAClE,CAEO+yC,YAAAA,CACLR,EACAC,GAEA,MAAME,EAAW33C,KAAKq3C,UAAU/vC,IAAIkwC,GACpC,GAAIG,EAAU,CACZ,MAAMG,EAAiB93C,KAAKq3C,UAAU/vC,IAAImwC,GAC1C,IAAKK,EACH,MAAM,IAAI/1C,MAAM,mCAElB+1C,EAAezS,SAAS9hC,KAAKo0C,EAC/B,CACF,CAEOM,cAAAA,CACLT,EACAnqB,GAEA,MAAMsqB,EAAW33C,KAAKq3C,UAAU/vC,IAAIkwC,GAChCG,IACFA,EAAStqB,SAAW,IACfsqB,EAAStqB,YACTA,GAGT,CAEO2pB,MAAAA,GACL,OAAOh3C,KAAK63C,SAAW73C,KAAKk4C,eAAel4C,KAAK63C,UAAY,CAAC,CAC/D,CAEQK,cAAAA,CAAeV,GACrB,MAAM53B,EAAsB,CAC1Bu4B,QAASX,EAAKF,gBACdc,SAAUZ,EAAKD,oBACZv3C,KAAKq4C,mBAAmBb,EAAKI,YAC7B53C,KAAKs4C,gBAAgBd,EAAKnqB,WAQ/B,GALImqB,EAAKnS,SAAS9jC,OAAS,IACzBqe,EAAKylB,SAAWmS,EAAKnS,SAASlgC,KAAIozC,GAASv4C,KAAKk4C,eAAeK,MAI3C,SAAlB34B,EAAKw4B,UAAuBx4B,EAAKylB,SAAU,CAE7C,MAAMmT,EAAmD,CAAC,EAC1D,IAAK,MAAMD,KAAS34B,EAAKylB,SAAU,CACjC,MAAMoT,EAAeF,EAAMlT,UAAUqT,IAAI,IAAMH,EACzC93C,EAAMT,KAAK24C,YAAYF,GAAcpzC,KAAK,KAC3CmzC,EAAgB/3C,KACnB+3C,EAAgB/3C,GAAO,IAEzB+3C,EAAgB/3C,GAAK8C,KAAKg1C,EAC5B,CAGA,MAAMK,EAA+C,GACrD,IAAK,MAAMvT,KAAYjkC,OAAOiM,OAAOmrC,GACnCI,EAAgBr1C,KAAK,CACnBs1C,YAAaxT,EAAS9jC,OACtBu3C,gBAAiBzT,EAAS,KAK9BzlB,EAAKg5B,gBAAkBA,SAChBh5B,EAAKylB,QACd,CAEA,OAAOzlB,CACT,CAEQ+4B,WAAAA,CAAYnB,GAClB,IAAIlqC,EAAU,CAAE,GAAGkqC,EAAKW,WAAWX,EAAKY,YAYxC,OAXIZ,EAAKnS,SACP/3B,EAAU,IACLA,KACAkqC,EAAKnS,SAASrW,SAAQupB,GAASv4C,KAAK24C,YAAYJ,MAE5Cf,EAAKoB,kBACdtrC,EAAU,IACLA,KACAkqC,EAAKoB,gBAAgB5pB,SAAQupB,GAASv4C,KAAK24C,YAAYJ,EAAMO,qBAG7DxrC,CACT,CAEQgrC,eAAAA,CAAgBjrB,GACtB,OAAOjsB,OAAOq2B,YAAYr2B,OAAOkM,QAAQ+f,GACtCloB,KAAI,EAAG1E,EAAKP,KAAY,CAAEO,EAAKT,KAAK+4C,qBAAqB74C,MAC9D,CAEQ64C,oBAAAA,CAAqB74C,GAC3B,OAAOA,GAA0B,iBAAVA,GAAsB,aAAcA,EAAQF,KAAKq4C,mBAAmBn4C,GAASA,CACtG,CAEQm4C,kBAAAA,CAAmBT,GACzB,MAAMh4B,EAAqC,CAAC,EAE5C,GAAI,SAAUg4B,EAAS,CACrB,MAAMjtB,EAA+BitB,EAOrC,OALIjtB,EAAU0C,UAAUqV,eACtB9iB,EAAK4P,OAAgB7E,EAAU0C,SAASqV,aAAclT,OAAOhuB,YAIvDmpB,EAAUje,MAChB,IAAK,UACHkT,EAAK8P,QAAU1vB,KAAKg5C,aAAaruB,GACjC,MACF,IAAK,UACH/K,EAAKoD,UAAY2H,EAAU3H,UAAU7d,KAAI8lB,GAAYA,EAAS/qB,QAGpE,CAEA,OAAO0f,CACT,CAEQo5B,YAAAA,CAAatkB,GACnB,MAAO,IAAG,EAAAxK,EAAA8D,cAAa0G,EAAK3J,aAAY,EAAAb,EAAA8D,cAAa0G,EAAK9J,eAAc,EAAAV,EAAA8D,cAAa0G,EAAK1J,UAAkC,iBAAxB0J,EAAK9I,MAAM4B,SAA8B,GAAK,KAAI,EAAAtD,EAAA8D,cAAa0G,EAAK9I,UAC1K,CAEOmrB,eAAAA,GACL,MAAMS,EAAOx3C,KAAKg3C,SACZiC,EAAkB,GAClBntB,EAA+B,IAAItK,IAQzC,GANI,YAAag2B,EACfx3C,KAAKk5C,oBAAoBD,EAAOntB,EAAS,GAAoB0rB,GAE7DyB,EAAM11C,KAAK,SAGTuoB,EAAQhsB,KAAO,EAAG,CACpBm5C,EAAM11C,KAAK,IACX01C,EAAM11C,KAAK,YACX,IAAK,MAAQ9C,EAAK04C,KAAQrtB,EAAQxe,UAChC2rC,EAAM11C,KAAK,KAAK41C,MAAO14C,IAE3B,CAEA,OAAOw4C,EAAM5zC,KAAK,KACpB,CAEO6zC,mBAAAA,CACLD,EACAntB,EACAstB,EACA5B,EACAnqB,GAEA,IAAIgG,EACAmkB,EAAKhoB,SACP6D,EAAWvH,EAAQxkB,IAAIkwC,EAAKhoB,aACXrvB,IAAbkzB,IACFA,EAAWvH,EAAQhsB,KACnBgsB,EAAQhgB,IAAI0rC,EAAKhoB,OAAQ6D,KAI7B4lB,EAAM11C,KAAK,GACT61C,IACA5B,EAAKW,UACLX,EAAKY,SAAW,IAAIZ,EAAKY,YAAc,KACvCZ,EAAK9nB,QAAU,KAAK8nB,EAAK9nB,WAAa,KACtC8nB,EAAKx0B,UAAY,KAAKw0B,EAAKx0B,UAAU3d,KAAK,QAAU,KACpDmyC,EAAK6B,cAAgB,mBAAmB7B,EAAK6B,cAAc3pB,wBAA+D,aAAvC8nB,EAAK8B,yBAAyB5sC,KAAsB,IAAM,KAAKuqC,EAAeO,EAAK8B,yBAAyBp5C,SAAW,KAC1Ms3C,EAAK5pB,YAAc,YAAsC,aAA1B4pB,EAAK5pB,YAAYlhB,KAAsB,IAAM,KAAKuqC,EAAeO,EAAK5pB,YAAY1tB,SAAW,KAC5Hs3C,EAAKhoB,OAAS,QAAQ6D,IAAa,KACnCmkB,EAAK+B,gBAAkB,aAAa/B,EAAK+B,kBAAoB,KAC7D/B,EAAKgC,SAAW,aAAavC,EAAeO,EAAKgC,cAAgB,KACjEhC,EAAKiC,SAAW,aAAaxC,EAAeO,EAAKiC,cAAgB,KACjEpsB,EAAW,IAAIA,IAAa,MAC9B,IAAK,MAAMkrB,KAASf,EAAKnS,UAAY,GACnCrlC,KAAKk5C,oBAAoBD,EAAOntB,EAAS,GAAGstB,MAAYb,GAE1D,IAAK,MAAMA,KAASf,EAAKoB,iBAAmB,GAC1C54C,KAAKk5C,oBAAoBD,EAAOntB,EAAS,GAAGstB,MAAYb,EAAMO,gBAAiB,yBAAyBP,EAAMM,cAElH,GAGF30C,EAAAA,eAAA+yC,2gBrErPAzuC,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,uHsEDA,MAAAykC,EAAAzlB,EAAA,OAKA4G,EAAA5G,EAAA,OASAozB,EAAApzB,EAAA,OAGA6G,EAAA7G,EAAA,OAEAiF,EAAAjF,EAAA,OAaA,MAAaw2B,UAAoCpD,EAAAE,kBAO/CxnC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKse,GAChB,GAAIA,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcyH,UAAYxQ,EAAOK,QAAQthB,IAAI,IAAI6gB,EAAAyI,iBAAiB,YACvF,MAAM,IAAI7uB,MAAM,GAAG/B,KAAKgK,wCAE1B,OAAO,CACT,CAEO,SAAMse,CAAIC,GAEf,IAAI,UAAEoC,EAAS,QAAE/B,SAAkB5oB,KAAKiN,MAAMsb,EAAOiQ,MAAOjQ,EAAOK,SAInE,QAHG+B,YAAW/B,iBAAkB5oB,KAAK02C,SAAS/rB,EAAW/B,IAGlD,CAAE/kB,aAFY7D,KAAKqpC,SAAS1e,EAAW/B,GAGhD,CAEO,WAAM3b,CAAMurB,EAAwB5P,GAKzC,IAAI+B,EACJ,GAJA/B,SAAiB5oB,KAAKqyB,0BAA0B7G,QAAQ,CAAE5C,UAASqN,YAAY,KAASrN,QAInE,iBAAV4P,EAAoB,CAI7B,MAAMwd,GAFNptB,EAAUA,EAAQ9c,IAAIie,EAAAuH,cAAcqJ,YAAanC,IAELlxB,IAAIyiB,EAAAuH,cAAc0kB,SACxDtf,EAA+B9N,EAAQthB,IAAIyiB,EAAAuH,cAAcoF,aACzDijB,QAAyB35C,KAAK45C,mBAAmBpuB,QAAQ,CAAE5C,UAAS4P,QAAO9B,cAAasf,YAC9FrrB,EAAYgvB,EAAiBhvB,UAEzBgvB,EAAiB3D,UACnBptB,EAAUA,EAAQ9c,IAAIie,EAAAuH,cAAc0kB,QAAS2D,EAAiB3D,SAElE,MACErrB,EAAY6N,EAId,GAAI5P,EAAQzb,IAAI4c,EAAAuH,cAAcuoB,iBAAkB,CAC9C,MAAMhuB,QAAwB8c,EAAAG,gBAC3B/gC,OAAO/H,KAAK+oC,6BAA8BngB,GAC7C+B,GAAY,EAAAb,EAAAgwB,sBAAqBnvB,EAAW/B,EAAQthB,IAAIyiB,EAAAuH,cAAcuoB,iBAAmBhuB,GAGzFjD,EAAUA,EAAQiI,OAAO9G,EAAAuH,cAAcqJ,YACzC,CAEA,MAAO,CAAEhQ,YAAW/B,UACtB,CAEO,cAAM8tB,CAAS/rB,EAA8B/B,GASlD,OAPAA,EAAUA,EAAQ9c,IAAIie,EAAAuH,cAAckH,MAAO7N,KAExCA,YAAW/B,iBAAkB5oB,KAAK+5C,+BAA+BvuB,QAAQ,CAAE5C,UAAS+B,eAKhF,CAAEA,YAAW/B,QAFpBA,EAAUA,EAAQ9c,IAAIie,EAAAuH,cAAckH,MAAO7N,GAG7C,CAEO,cAAM0e,CAAS1e,EAA8B/B,GAClD,MAAMiQ,QAAe74B,KAAKurB,uBAAuBC,QAAQ,CAAE5C,UAAS+B,cAEpE,OADAkO,EAAOjQ,QAAUA,EACViQ,CACT,EA9EF30B,EAAAA,4BAAAw1C,2gBtEhCAlxC,EAAA0a,EAAA,OAAAhf,yHuEKA,MAAA81C,EAAA92B,EAAA,OAOA8G,EAAA9G,EAAA,OACA+2B,EAAA/2B,EAAA,OACAhE,EAAAgE,EAAA,OAKA,MAAag3B,UAAsCF,EAAAG,yCAUjDnrC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEgB,uBAAMmlB,CAAkBrB,EAAgCsB,GACtE,IAAK,CAAE,WAAY,QAAS,WAAY7N,SAASuM,EAAO7b,MACtD,MAAM,IAAI3K,MAAM,wDAElB,OAAO,CACT,CAEO,eAAM2mB,CAAUH,EAAgC6xB,EAAoBvwB,GAEzE,MAAMjK,EAAO,IAAIV,EAAAC,SAKjB,GAJAS,EAAKH,MAAQ,OAIO,aAAhB8I,EAAO7b,MAAuC,UAAhB6b,EAAO7b,KAAkB,CACzD,IAAI0S,EAAyB,aAAhBmJ,EAAO7b,MAClB,EAAAsd,EAAAqwB,MAAsC9xB,EAAQiE,gBAC3CrnB,KAAIm1C,GAAWt4C,KAAKC,UAAUb,OAAOq2B,YAAY,IAAK6iB,GACpDn1C,KAAI,EAAG1E,EAAKP,KAAY,CAAEO,EAAIP,MAAO+5C,EAAUjsB,aAAa9tB,WACjE,EAAA8pB,EAAAqwB,MAAmC9xB,EAAQyR,YACxC70B,KAAIm1C,GAAWt4C,KAAKC,UAAUg4C,EAAUliB,iBAAiBuiB,MAE1DC,GAAQ,EACZn7B,EAASA,EAAOja,KAAKm1C,IACnB,MAAMhlB,EAAM,GAAGilB,EAAQ,GAAK,QAAQD,IAEpC,OADAC,GAAQ,EACDjlB,CAAG,IACTgc,QAAQ,CAAE,MAAOvoC,OAAO,CAAE,UAE7B6W,EAAKy6B,KAAWj7B,EAClB,MACE,IACEQ,EAAKrc,KAAK,GAAGvB,KAAKC,gBAAgDsmB,EAAQqQ,gBAC1EhZ,EAAKrc,KAAK,KACZ,CAAE,MAAOJ,GACPq3C,YAAW,IAAM56B,EAAKlc,KAAK,QAASP,IACtC,CAGF,MAAO,CAAEyc,OACX,EAtDF1b,EAAAA,8BAAAg2C,2gBvEnBA1xC,EAAA0a,EAAA,OAAAhf,uHwEKA,MAAA81C,EAAA92B,EAAA,OAeA,MAAau3B,UAAqCT,EAAAU,0BAMhD1rC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,gBAAMwkB,CAAWV,EAAgCoB,EAAmBf,GAGzE,GAAoB,UAAhBL,EAAO7b,KACT,MAAM,IAAI3K,MAAM,SAAS/B,KAAKgK,qCAIhC,MAAM,WAAE6e,SAAqB7oB,KAAK26C,0BAA0BnvB,QAC1D,CAAE5C,UAASC,YAAY,IAEzB,KAAMc,KAAad,GACjB,MAAM,IAAI9mB,MAAM,SAAS/B,KAAKgK,kCAAkC2f,2BAE9DvoB,OAAOD,KAAK0nB,MAEhB,OAAO,CACT,CAEO,eAAMH,CAAUH,EAAgCoB,EAAmBf,GAGxE,aAAc5oB,KAAK46C,qBAAqBpvB,QAAQ,CAC9C5C,UACAH,OAAQ,CACNG,UACAoR,WAA0CzR,EAAQyR,YAEpDrR,gBAAiBgB,KACflB,MACN,CAEO,mBAAMS,CAAcW,GACzB,OAAO,CACT,CAEO,mBAAMf,CAAcF,GACzB,aAAc5oB,KAAK26C,0BAA0BnvB,QAAQ,CAAE5C,UAASC,YAAY,KAASA,UACvF,CAEO,0BAAMM,CAAqBU,GAChC,OAAO,CACT,CAEO,yBAAMb,CAAoBJ,GAC/B,aAAc5oB,KAAK66C,gCAAgCrvB,QAAQ,CAAE5C,UAASG,kBAAkB,KAASA,gBACnG,EAxDF7kB,EAAAA,6BAAAu2C,2gBxEpBAjyC,EAAA0a,EAAA,MAAAhf,0HyEKA,MAAA81C,EAAA92B,EAAA,OASA8G,EAAA9G,EAAA,OACAgH,EAAAhH,EAAA,OACAhE,EAAAgE,EAAA,OAKA,MAAa43B,UAAwCd,EAAAG,yCAMnDnrC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEgB,uBAAMmlB,CAAkBrB,EAAgCsB,GACtE,IAAK,CAAE,WAAY,QAAS,UAAW,QAAS7N,SAASuM,EAAO7b,MAC9D,MAAM,IAAI3K,MAAM,oFAElB,OAAO,CACT,CAEU,mBAAOisB,CAAaqG,GAC5B,MAAyB,SAAlBA,EAAK7G,UAAsB,EAAAtD,EAAA8D,cAAaqG,GAAQA,EAAKn0B,KAC9D,CAEO,eAAMwoB,CAAUH,EAAgC6xB,EAAoBvwB,GAEzE,MAAMjK,EAAO,IAAIV,EAAAC,SAmBjB,MAlBoB,aAAhBoJ,EAAO7b,KACTkT,EAAKy6B,KAA2C9xB,EAAQiE,eAAernB,KAAKunB,GAA2B,GAAG,IAAKA,GAAWvnB,KACxH,EAAG1E,EAAKP,KAAY,IAAIO,EAAIP,UAAU46C,EAAgC9sB,aAAa9tB,OACnFmF,KAAK,eACkB,UAAhBkjB,EAAO7b,KAChBkT,EAAKy6B,KAAwC9xB,EAAQyR,WAAW70B,KAAIuvB,GAClE,YAAYomB,EAAgC9sB,aAAa0G,EAAK3J,wBAChD+vB,EAAgC9sB,aAAa0G,EAAK9J,uBACrDkwB,EAAgC9sB,aAAa0G,EAAK1J,mBACnD8vB,EAAgC9sB,aAAa0G,EAAK9I,gBAE9DhM,EAAKy6B,MAAW,EAAArwB,EAAAqwB,MACE,YAAhB9xB,EAAO7b,KAC6B6b,EAAQqQ,UAAUtyB,MAAKpG,GAAS,CAAE,GAAGA,SACzCqoB,EAAQqQ,UAAUtyB,MAAK,IAAM,CAAE,YAI5D,CAAEsZ,OACX,EA3CF1b,EAAAA,gCAAA42C,2gBzErBAtyC,EAAA0a,EAAA,MAAAhf,8H0EKA,MAAA81C,EAAA92B,EAAA,OAKAhE,EAAAgE,EAAA,OAKA,MAAa63B,UAA2Cf,EAAAG,yCAUtDnrC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAOO,2BAAOu2C,CAAqB96C,GACjC,IAAKA,EACH,MAAO,GAGT,IAAI+6C,EAAc/6C,EAAMA,MAExB,GAAuB,YAAnBA,EAAMstB,SAERytB,EAAc,GAAGA,SACZ,GAAuB,cAAnB/6C,EAAMstB,SACfytB,EAAc,KAAKA,SACd,GAAuB,SAAnB/6C,EAAMstB,SAAqB,CACpC,IAAIxC,EAAS+vB,EAAmCC,qBAAqB96C,EAAM8qB,QAC7C,YAA1B9qB,EAAM8qB,OAAOwC,WAEfxC,EAAS,IAAIA,EAAOkwB,WAAW,IAAK,UAEtCD,EAAc,MAAMF,EAAmCC,qBAAqB96C,EAAM6qB,YAAYgwB,EAAmCC,qBAAqB96C,EAAM0qB,cAAcI,MAC5K,MACEiwB,EAAc,IAAIA,KASpB,MALI,YAAYhxC,KAAKgxC,KAEnBA,EAAc,IAAIA,EAAYC,WAAW,IAAK,UAGzCD,CACT,CAEgB,uBAAMrxB,CAAkBrB,EAAgCsB,GACtE,GAAoB,aAAhBtB,EAAO7b,KACT,MAAM,IAAI3K,MAAM,gDAElB,OAAO,CACT,CAEO,eAAM2mB,CAAUH,EAAgC6xB,EAAgCvwB,GAErF,MAAMsxB,EAAiD5yB,EAEjD3I,EAAO,IAAIV,EAAAC,SAEXkO,QAAiB8tB,EAAe9tB,WAUtC,OAPAzN,EAAKrc,KAAK,GAAG8pB,EAASrK,UAAU7d,KAAI8lB,GAAYA,EAAS/qB,QAAOmF,KAAK,YAGrEua,EAAKy6B,KAAWc,EAAe3uB,eAAernB,KAAKunB,GAAuB,GAAGW,EAASrK,UACjF7d,KAAI1E,GAAOs6C,EAAmCC,qBAAqBtuB,EAASplB,IAAI7G,MAChF4E,KAAK,cAEH,CAAEua,OACX,EA3EF1b,EAAAA,mCAAA62C,2gB1EfAvyC,EAAA0a,EAAA,OAAAhf,8G2EGA,MAAAikB,EAAAjF,EAAA,OAKA,MAAak4B,UAA2BjzB,EAAAkzB,eAQtCrsC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GAPD,KAAA62C,SAAW,EAQhBt7C,KAAKu7C,IAAIC,kBAAkBx7C,MAC3BA,KAAKmxB,gBAAgBC,uBAAsB,KACzCpxB,KAAKs7C,SAAW,CAAC,GAErB,CAGOG,KAAAA,CACLC,EACAjrB,EACAkrB,GAEA37C,KAAKs7C,UACP,EAvBFp3C,EAAAA,mBAAAk3C,8HCHA,MAAApB,EAAA92B,EAAA,OAOA8G,EAAA9G,EAAA,OACAhE,EAAAgE,EAAA,OAMA,MAAa04B,UAA4C5B,EAAAG,yCAgBvDnrC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAQO,4BAAOo3C,CAAsB37C,GAClC,GAAuB,YAAnBA,EAAMstB,SAAwB,CAChC,MAAMsuB,EAAuB57C,EACvB67C,EAAiB,CAAE77C,MAAO47C,EAAQ57C,MAAOwM,KAAM,YAC/C,SAAEiqB,EAAQ,SAAEmL,GAAaga,EAM/B,OALInlB,EACFolB,EAAU,YAAcplB,EACfmL,GAA+B,4CAAnBA,EAAS5hC,QAC9B67C,EAAUja,SAAWA,EAAS5hC,OAEzB67C,CACT,CACA,MAAuB,cAAnB77C,EAAMstB,SACD,CAAEttB,MAAOA,EAAMA,MAAOwM,KAAM,SAEd,SAAnBxM,EAAMstB,SACD,CACLttB,MAAO,CACL6qB,QAAS6wB,EAAoCC,sBAAsB37C,EAAM6qB,SACzEH,UAAWgxB,EAAoCC,sBAAsB37C,EAAM0qB,WAC3EI,OAAQ4wB,EAAoCC,sBAAsB37C,EAAM8qB,SAE1Ete,KAAM,UAGH,CAAExM,MAAOA,EAAMA,MAAOwM,KAAM,MACrC,CAEgB,uBAAMkd,CAAkBrB,EAAgCsB,GACtE,IAAK,CAAE,WAAY,WAAY7N,SAASuM,EAAO7b,MAC7C,MAAM,IAAI3K,MAAM,4DAElB,OAAO,CACT,CAEO,eAAM2mB,CAAUH,EAAgC6xB,EAAgCvwB,GAErF,MAAMjK,EAAO,IAAIV,EAAAC,SAEX68B,EAAY,CAAC,EACnB,GAAoB,aAAhBzzB,EAAO7b,KAAqB,CAC9B,MAAM2gB,QAAkD9E,EAAQ8E,WAC5DA,EAASrK,UAAUzhB,OAAS,IAC9By6C,EAAKC,KAAO5uB,EAASrK,UAAU7d,KAAI8lB,GAAYA,EAAS/qB,QAE5D,CAGA,GAFA0f,EAAKrc,KAAK,YAAYvB,KAAKC,UAAU+5C,SAEjB,aAAhBzzB,EAAO7b,KAAqB,CAC9B,MAAMwvC,EAAgD3zB,EAAQiE,eAC9D5M,EAAKrc,KAAK,gCAEV,IAAI44C,GAAQ,EAEZ,SAAU15C,EAAI25C,SACNA,GACR,CAGAx8B,EAAKy6B,MAEG,EAAArwB,EAAAqwB,MAAK6B,GAAc/2C,KAAKunB,IAC5B,MAAM3nB,EAAM,GAAGo3C,EAAQ,GAAK,QAAQn6C,KAAKC,UAAUb,OAAOq2B,YAAY,IAAK/K,GAC1EvnB,KAAI,EAAG1E,EAAKP,KAAY,CAAEO,EAAIP,MAAO07C,EAAoCC,sBAAsB37C,UAEhG,OADAi8C,GAAQ,EACDp3C,CAAG,IACTgE,QAAO,EAAAihB,EAAAqwB,MAAK53C,GAAI,IAAM,OAAOzC,KAAKq8C,aAAe,oCAAoCr8C,KAAKs8C,aAAahB,aAAe,YAE7H,MACE17B,EAAKy6B,MAAW,EAAArwB,EAAAqwB,MAAqC9xB,EAAQqQ,UAAUtyB,MAAKpG,GAAS,CAAE,aAAaA,cAGtG,MAAO,CAAE0f,OACX,EAnGF1b,EAAAA,oCAAA03C,2gB5EnBApzC,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,8H6EIA,MAAA81C,EAAA92B,EAAA,OAKAq5B,EAAAr5B,EAAA,OACAhE,EAAAgE,EAAA,OAKA,MAAas5B,UAA2CxC,EAAAG,yCAUtDnrC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAOO,2BAAOg4C,CAAqBv8C,GACjC,OAAKA,GAKE,EAAAq8C,EAAAvuB,cAAa9tB,GACjBg7C,WAAW,KAAM,OACjBA,WAAW,KAAM,OACjBA,WAAW,KAAM,OAPX,EAQX,CAEgB,uBAAMtxB,CAAkBrB,EAAgCsB,GACtE,GAAoB,aAAhBtB,EAAO7b,KACT,MAAM,IAAI3K,MAAM,gDAElB,OAAO,CACT,CAEO,eAAM2mB,CAAUH,EAAgC6xB,EAAgCvwB,GAErF,MAAMsxB,EAAiD5yB,EAEjD3I,EAAO,IAAIV,EAAAC,SAEXkO,QAAiB8tB,EAAe9tB,WAStC,OARAzN,EAAKrc,KAAK,GAAG8pB,EAASrK,UAAU7d,KAAK8lB,GAA2BA,EAAS/qB,QAAOmF,KAAK,WAGrFua,EAAKy6B,KAAWc,EAAe3uB,eAAernB,KAAKunB,GAA2B,GAAGW,EAASrK,UACvF7d,KAAK1E,GAAsB+7C,EACzBC,qBAAqB/vB,EAASplB,IAAI7G,MACpC4E,KAAK,aAED,CAAEua,OACX,EAtDF1b,EAAAA,mCAAAs4C,2gB7EhBAh0C,EAAA0a,EAAA,OAAAhf,8H8EKA,MAAA81C,EAAA92B,EAAA,OAOA8G,EAAA9G,EAAA,OACAhE,EAAAgE,EAAA,OACAw5B,EAAAx5B,EAAA,OAKA,MAAay5B,UAA2C3C,EAAAG,yCAUtDnrC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAQO,2BAAOm4C,CAAqB18C,EAAiBO,GAClD,MAAO,CAAEuJ,KAAM,UAAWqT,WAAY,CAAErT,KAAMvJ,EAAIP,OAASmlC,SAAU,CAAErlC,KAAK68C,gBAAgB38C,IAC9F,CAEO,sBAAO28C,CAAgB38C,GAC5B,IAAImd,EACJ,OAAQnd,EAAMstB,UACZ,IAAK,UAQH,OANEnQ,EADEnd,EAAMy2B,SACK,CAAE,WAAYz2B,EAAMy2B,UACxBz2B,EAAM4hC,UAAqC,4CAAzB5hC,EAAM4hC,SAAS5hC,MAC7B,CAAE4hC,SAAU5hC,EAAM4hC,SAAS5hC,OAE3B,CAAC,EAET,CAAE8J,KAAM,UAAWqT,aAAYgoB,SAAUnlC,EAAMA,OACxD,IAAK,YACH,MAAO,CAAE8J,KAAM,QAASq7B,SAAUnlC,EAAMA,OAC1C,IAAK,OACH,MAAO,CACL8J,KAAM,SACNq7B,SAAU,CACR,CAAEr7B,KAAM,UAAWq7B,SAAU,CAAErlC,KAAK68C,gBAAgB38C,EAAM6qB,WAC1D,CAAE/gB,KAAM,YAAaq7B,SAAU,CAAErlC,KAAK68C,gBAAgB38C,EAAM0qB,aAC5D,CAAE5gB,KAAM,SAAUq7B,SAAU,CAAErlC,KAAK68C,gBAAgB38C,EAAM8qB,YAG/D,QACE,MAAO,CAAEhhB,KAAM,MAAOq7B,SAAUnlC,EAAMA,OAE5C,CAEgB,uBAAM0pB,CAAkBrB,EAAgCsB,GACtE,IAAK,CAAE,WAAY,WAAY7N,SAASuM,EAAO7b,MAC7C,MAAM,IAAI3K,MAAM,4DAElB,OAAO,CACT,CAEO,eAAM2mB,CAAUH,EAAgC6xB,EAAoBvwB,GAEzE,MAAMjK,EAAO,IAAIV,EAAAC,SACjBS,EAAKH,MAAQ,OAIb,MAAMq9B,EAAa,IAAIJ,EAAAK,cACjB1vB,QAAkD9E,EAAQ8E,WAWhE,GATAzN,EAAKrc,KAAKm5C,EAAAK,cAAclyC,QACxB+U,EAAKrc,KAAKu5C,EAAW9sC,KAAK,SAAU,CAAEiC,MAAO,4CAC7C2N,EAAKrc,KACHu5C,EAAWE,cAAc,CACvBhzC,KAAM,OACNq7B,SAAUhY,EAASrK,UAAU7d,KAAI8lB,IAAY,CAAGjhB,KAAM,WAAYqT,WAAY,CAAErT,KAAMihB,EAAS/qB,cAI/E,aAAhBqoB,EAAO7b,KAAqB,CAC9B,SAAUjK,UACFq6C,EAAWvhC,cACXuhC,EAAWvhC,OACnB,CACAqE,EAAKrc,KAAKu5C,EAAW9sC,KAAK,YAC1B,MAAMoP,GAAS,EAAA4K,EAAAqwB,MAAsC9xB,EAAQiE,gBAAgBrnB,KAC1EunB,GAA2BowB,EAAWE,cAAc,CACnDhzC,KAAM,SACNq7B,SAAU,IAAK3Y,GAAWvnB,KACxB,EAAG1E,EAAKP,KAAYy8C,EAAmCC,qBAAqB18C,EAAOO,SAGvFsI,QAAO,EAAAihB,EAAAqwB,MAAK53C,MACdmd,EAAKy6B,KAAWj7B,EAClB,MACE,IACE,MAAMvb,QAA+C0kB,EAAQqQ,UAC7DhZ,EAAKrc,KAAKu5C,EAAWE,cAAc,CAAEhzC,KAAM,UAAWq7B,SAAUxhC,EAAOrC,cACvEoe,EAAKrc,KAAKu5C,EAAWvhC,SACrBi/B,YAAW,IAAM56B,EAAKrc,KAAK,OAC7B,CAAE,MAAOJ,GACPq3C,YAAW,IAAM56B,EAAKlc,KAAK,QAASP,IACtC,CAGF,MAAO,CAAEyc,OACX,EAzGF1b,EAAAA,mCAAAy4C,sGChBA,MAAaI,EAKX/tC,WAAAA,GAJiB,KAAArO,MAAkB,EAIb,CAOfqP,IAAAA,CAAKhG,EAAcqT,GACxB,MAAMtY,EAAM,GAAG/E,KAAKi9C,aAAej9C,KAAKk9C,UAAUlzC,EAAMqT,EAAY,YAEpE,OADArd,KAAKW,MAAM4C,KAAKyG,GACTjF,CACT,CAEOwW,KAAAA,GACL,MAAMvR,EAAOhK,KAAKW,MAAM6C,MACxB,QAAarD,IAAT6J,EACF,MAAM,IAAIjI,MAAM,iCAElB,MAAO,GAAG/B,KAAKi9C,aAAej9C,KAAKk9C,UAAUlzC,EAAM,CAAC,EAAG,YACzD,CAEOgzC,aAAAA,CAAcxF,GACnB,QAAsBr3C,IAAlBq3C,EAAKnS,SACP,MAAO,GAAGrlC,KAAKi9C,aAAej9C,KAAKk9C,UAAU1F,EAAKxtC,KAAMwtC,EAAKn6B,WAAY,oBAE3E,GAA6B,iBAAlBm6B,EAAKnS,SACd,MAAO,GAAGrlC,KAAKi9C,aAAej9C,KAAKk9C,UAAU1F,EAAKxtC,KAAMwtC,EAAKn6B,WAAY,QAAUrd,KAAKm9C,OAAO3F,EAAKnS,UAAYrlC,KAAKk9C,UAAU1F,EAAKxtC,KAAM,CAAC,EAAG,aAEhJ,MAAM2F,EAAQ,GACdA,EAAMpM,KAAK,GAAGvD,KAAKi9C,aAAej9C,KAAKk9C,UAAU1F,EAAKxtC,KAAMwtC,EAAKn6B,WAAY,aAC7Erd,KAAKW,MAAM4C,KAAKi0C,EAAKxtC,MACrB,IAAK,MAAMuuC,KAASf,EAAKnS,SACvB11B,EAAMpM,KAAKvD,KAAKg9C,cAAczE,IAIhC,OAFAv4C,KAAKW,MAAM6C,MACXmM,EAAMpM,KAAK,GAAGvD,KAAKi9C,aAAej9C,KAAKk9C,UAAU1F,EAAKxtC,KAAM,CAAC,EAAG,cACzD2F,EAAMtK,KAAK,GACpB,CAEQ43C,UAAAA,GACN,OAAOj9C,KAAKW,MAAMwE,KAAIinC,GAAK,OAAM/mC,KAAK,GACxC,CAEQ63C,SAAAA,CACNlzC,EACAqT,EACAzc,GAGA,MAAO,IAAc,UAAVA,EAAoB,IAAM,KAAKoJ,IAAO5I,OAAOkM,QAAQ+P,GAAc,CAAC,GAAGlY,KAAI2Y,GAAQ,IAAIA,EAAK,OAAO9d,KAAKm9C,OAAOr/B,EAAK,WAAoB,iBAAVld,EAA2B,IAAM,KAC5K,CAEQu8C,MAAAA,CAAOv5C,GACb,OAAOA,EAAKs3C,WAAW,aAA+C74C,IACpE,OAAQA,GACN,IAAK,IAAK,MAAO,OACjB,IAAK,IAAK,MAAO,OACjB,IAAK,IAAK,MAAO,QACjB,IAAK,IAAM,MAAO,SAClB,IAAK,IAAK,MAAO,SACnB,GAEJ,EAnEF6B,EAAAA,cAAA64C,EAGgBA,EAAAlyC,OAAS,ojB/ENzBrC,EAAA0a,EAAA,OAAAhf,6G2EGA,MAAAikB,EAAAjF,EAAA,OAKA,MAAak4B,UAA2BjzB,EAAAkzB,eAQtCrsC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GAPD,KAAA62C,SAAW,EAQhBt7C,KAAKu7C,IAAIC,kBAAkBx7C,MAC3BA,KAAKmxB,gBAAgBC,uBAAsB,KACzCpxB,KAAKs7C,SAAW,CAAC,GAErB,CAGOG,KAAAA,CACLC,EACAjrB,EACAkrB,GAEA37C,KAAKs7C,UACP,EAvBFp3C,EAAAA,mBAAAk3C,yHKHA,MAAApB,EAAA92B,EAAA,OAMA8G,EAAA9G,EAAA,OACAhE,EAAAgE,EAAA,OAGM+U,EAA0B/U,EAAQ,OAKxC,MAAak6B,UAAuCpD,EAAAG,yCAUlDnrC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAGgB,uBAAMmlB,CAAkBrB,EAAgCsB,GACtE,IAAK,CAAE,WAAY,SAAU7N,SAASuM,EAAO7b,MAC3C,MAAM,IAAI3K,MAAM,gEAElB,OAAO,CACT,CAEOs7C,UAAAA,CAAWz9B,GAChB,MAAM/U,EAAiB,CAAE,SAAU,aAAc,iBAC/CxF,KAAK,KACPua,EAAKrc,KAAK,GAAGsH,MACf,CAEOyyC,UAAAA,CAAWC,EAAmB15C,GAGnC,MAAO,GAFa,CAAEA,EAAQ7D,KAAKw9C,MAAMD,GAAYv9C,KAAKs8C,aAAahB,UACrEj2C,KAAK,QAET,CAEOo4C,YAAAA,CAAaF,GAGlB,MAAO,GAFgB,CAAE,QAASv9C,KAAKw9C,MAAMD,GAAYv9C,KAAKs8C,aAAahB,UACzEj2C,KAAK,QAET,CAEO,eAAMqjB,CAAUH,EAAgC6xB,EAAoBvwB,GAEzE,MAAMjK,EAAO,IAAIV,EAAAC,SAEX+8B,EAA+B,aAAhB3zB,EAAO7b,KACS6b,EAAQiE,eACXjE,EAAQyR,WAEpCujB,EAAYv9C,KAAK09C,MACvB,IAAI75C,EAAS,EAKb,MAAMub,GAAS,EAAA4K,EAAAqwB,MAAK6B,GACjB/2C,KAAI,IAAMnF,KAAKs9C,WAAWC,EAAW15C,OACrCkF,QAAO,EAAAihB,EAAAqwB,MALV,UAAc+B,SACNA,GACR,CAGe35C,EAAI,IAAMzC,KAAKy9C,aAAaF,OAK3C,OAHAv9C,KAAKq9C,WAAWz9B,GAChBA,EAAKy6B,KAAWj7B,GAET,CAAEQ,OACX,CAGO89B,GAAAA,GAEL,GAA2B,oBAAhBC,YAA6B,CACtC,MAAMC,EAAyB3lB,EAAQ4lB,SACvC,OAAiB,IAAVD,EAAK,GAAcA,EAAK,GAAK,GACtC,CACA,OAAOD,YAAYD,KACrB,CAEOF,KAAAA,CAAMD,GACX,OAAOv9C,KAAK09C,MAAQH,CACtB,EA5EFr5C,EAAAA,+BAAAk5C,2gBhFpBA50C,EAAA0a,EAAA,MAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,0HiFIA,MAAA81C,EAAA92B,EAAA,OAQA+G,EAAA/G,EAAA,OACAgH,EAAAhH,EAAA,OACAiR,EAAAjR,EAAA,OACAhE,EAAAgE,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YACTwzB,EAAuB3pB,EAAA4pB,gBAAgB54C,KAAI6E,GAAQqgB,EAAGY,SAASjhB,KAKrE,MAAag0C,UAAuChE,EAAAG,yCAUlDnrC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GACNzE,KAAKi+C,QAAUD,EAA+B5gB,OAAO,IAAKp9B,KAAKk+C,YACjE,CAEO,aAAO9gB,CAAO/4B,EAAa6oB,GAChC,OAAO7oB,EAAI+4B,OAAOlQ,EACpB,CAEgB,uBAAMtD,CAAkBrB,EAAgCsB,GACtE,IAAK,CAAE,WAAY,SAAU7N,SAASuM,EAAO7b,MAC3C,MAAM,IAAI3K,MAAM,wDAElB,OAAO,CACT,CAEOisB,YAAAA,CAAaqG,GAClB,MAAyB,SAAlBA,EAAK7G,UAAsB,EAAAtD,EAAA8D,cAAaqG,GAAQA,EAAKn0B,KAC9D,CAEOi+C,GAAAA,CAAI95C,GACT,OAAIA,EAAI9C,QAAUvB,KAAKk+C,YACd75C,EAAMrE,KAAKi+C,QAAQz5C,MAAMH,EAAI9C,QAE/B,GAAG8C,EAAIG,MAAM,EAAGxE,KAAKk+C,YAAc,KAC5C,CAEOb,UAAAA,CAAWz9B,EAAgBw+B,GAChC,MAAMvzC,EAAiBuzC,EAAOj5C,KAAIk5C,GAASr+C,KAAKm+C,IAAIE,EAAMn+C,SAAQmF,KAAK,KACvEua,EAAKrc,KAAK,GAAGsH,MAAWmzC,EAA+B5gB,OAAO,IAAKvyB,EAAOtJ,YAC5E,CAEO+8C,SAAAA,CAAUF,EAAwB1xB,GACvC,MAAO,GAAG0xB,EACPj5C,KAAIk5C,GAAS3xB,EAASvf,IAAIkxC,GAASr+C,KAAKguB,aAAatB,EAASplB,IAAI+2C,IAAW,KAC7El5C,KAAIk5C,GAASr+C,KAAKm+C,IAAIE,KACtBh5C,KAAK,QACV,CAEO,eAAMqjB,CAAUH,EAAgC6xB,EAAoBvwB,GAEzE,MAAMjK,EAAO,IAAIV,EAAAC,SAEjB,IAAI+8B,EACJ,GAAoB,aAAhB3zB,EAAO7b,KAAqB,CAC9BwvC,EAA+C3zB,EAAQiE,eAAernB,KACpEunB,GAAY1sB,KAAKs+C,UAAUF,EAAQ1xB,KAErC,MAAM0xB,SAAgD71B,EAAQ8E,YAAYrK,UAC1EhjB,KAAKq9C,WAAWz9B,EAAMw+B,EACxB,MACElC,EAA4C3zB,EAAQyR,WAAW70B,KAAIuvB,GAAQ,IAAG,EAAAP,EAAAoqB,UAAS7pB,GAAMvvB,KAAIkvB,GAAQr0B,KAAKm+C,IAAIn+C,KAAKguB,aAAaqG,MAAQhvB,KAAK,WACjJrF,KAAKq9C,WAAWz9B,EAAMk+B,GAIxB,OAFAl+B,EAAKy6B,KAAW6B,GAET,CAAEt8B,OACX,EAnEF1b,EAAAA,+BAAA85C,2gBjFxBAx1C,EAAA0a,EAAA,OAAAhf,yHkFKA,MAAA81C,EAAA92B,EAAA,OACA6G,EAAA7G,EAAA,OACAiF,EAAAjF,EAAA,OAGAhE,EAAAgE,EAAA,OAEAs7B,EAAAt7B,EAAA,OAKA,MAAau7B,UAAsCzE,EAAAG,yCAOjDnrC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CASO,oCAAai6C,CAClBlyB,EACA5D,EACA+1B,GAEA,MAAM1lB,EAAgC9Q,EAAAmK,cAAcC,oBAAoB3J,GAClEg2B,EAAuB,IAAIJ,EAAAhJ,UAAUmJ,GACrCE,EAAkB,CACtBlJ,qBAAsB1c,EAAc3xB,IAAIyiB,EAAAuH,cAAcsF,8BAAgC,CAAC,GAGzF,OAAOgoB,EAAUE,qBAAqBtyB,EAAernB,KAAKunB,GACxDtrB,OAAOq2B,YAAY,IAAK/K,GACrBvnB,KAAI,EAAG1E,EAAKP,KAAY,CAAEO,EAAIP,MAAOA,QAAW2mC,UAAWgY,EAClE,CAEgB,uBAAMj1B,CAAkBrB,GACtC,GAAoB,aAAhBA,EAAO7b,KACT,MAAM,IAAI3K,MAAM,gDAElB,OAAO,CACT,CAEO,eAAM2mB,CACXH,EACA6xB,GAEA,MAAMx6B,EAAO,IAAIV,EAAAC,SAejB,OAdAS,EAAKH,MAAQ,KACXG,EAAKH,MAAQ,OACbg/B,EAA8BC,wBACKn2B,EAAQiE,eACzCjE,EAAOK,QACP,CAAEm2B,uBAAuB,IAExBz4C,MAAMzC,IACL+b,EAAKrc,KAAKvB,KAAKC,UAAU4B,EAAQ,KAAM,OACvC+b,EAAKrc,KAAK,KAAK,IAEhBqoC,OAAMzoC,GAASyc,EAAKlc,KAAK,QAASP,IAAO,EAGvC,CAAEyc,OACX,EA7DF1b,EAAAA,8BAAAu6C,4iBlFjBA,MAAAO,EAAA97B,EAAA,QAEM,wBAAEw7B,GAA4BM,EAAAP,8BAC3Bv6C,EAAAA,wBAAAw6C,EAETl2C,EAAA0a,EAAA,OAAAhf,kImFLA,MAAAykC,EAAAzlB,EAAA,OASA+7B,EAAA/7B,EAAA,OAGAg8B,EAAAh8B,EAAA,OAKA,MAAai8B,UAAiDF,EAAAG,mCAS5DpwC,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,SACd,CAEO,kBAAM46C,CACX92B,GAEA,KAAKA,EAAO+2B,iBAAoB/2B,EAAO8E,SAASkyB,eAC5Cv/C,KAAKw/C,gBAAkBj3B,EAAO7gB,IAAInD,SAAS,YAC7C,MAAM,IAAIxC,MAAM,SAAS/B,KAAKgK,gFAEhC,MAAO,CAAEy1C,aAAc,EACzB,CAEO,SAAMn3B,CAAIC,GAYf,OAXAvoB,KAAK0/C,QAAQn3B,EAAOK,QAAS,cAAcL,EAAO7gB,0CAA0C6gB,EAAO8E,SAASkyB,eAAiBh3B,EAAO7gB,OAW7H,CAAE8nB,OAVM,IAAI0vB,EAAAS,kBACjBp3B,EAAO+2B,gBAAkB/2B,EAAO7gB,IAAM6gB,EAAO8E,SAASkyB,eAAiBh3B,EAAO7gB,IAC9E6gB,EAAOK,QACP5oB,KAAK4/C,aACL5/C,KAAK6/C,iBACClX,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BxgB,EAAOK,SACvE5oB,KAAK8/C,aACL9/C,KAAKixB,UACLjxB,KAAK+/C,cAGT,EApCF77C,EAAAA,yCAAAi7C,4GCfA,MAAAp1B,EAAA7G,EAAA,OACAiF,EAAAjF,EAAA,OACAiQ,EAAAjQ,EAAA,OAYA8G,EAAA9G,EAAA,OACA88B,EAAA98B,EAAA,OACA4N,EAAA5N,EAAA,OACA+G,EAAA/G,EAAA,OACAiH,EAAAjH,EAAA,OAGM4Y,EAAK,IAAI3R,EAAAyF,QACTvF,EAAK,IAAIJ,EAAAK,YACT21B,EAAY51B,EAAGY,SAAS,SACxBi1B,EAA6C,CAAExzC,KAAM,WAAYxM,MAAO4D,OAAO+pC,mBAErF,MAAa8R,EAyCX3wC,WAAAA,CACEtH,EACAkhB,EACAg3B,EACAC,EACAh0B,EACAi0B,EACA7uB,EACA8uB,GAEA//C,KAAKmyB,eAAiBzqB,EACtB1H,KAAK0H,IAAMA,EACX1H,KAAK4oB,QAAUA,EACf5oB,KAAK4/C,aAAeA,EACpB5/C,KAAK6/C,WAAaA,EAClB7/C,KAAK6rB,gBAAkBA,EACvB7rB,KAAKmgD,gBAAkB,IAAIH,EAAAI,sBAAsB,CAC/C1yC,OAAQoyC,EAAe,MAAQ,OAC/Bl4C,MAAOA,CAAC6F,EAAyBwB,IAAuBjP,KAAK4/C,aAAap0B,QACxE,CAAE/d,QAAOwB,OAAM2Z,QAAS5oB,KAAKqgD,oBAE/BC,4BAA4B,IAE9BtgD,KAAKgxB,MAAQC,EAAY,EACvB,IAAIH,EAAAI,SAA6C,CAAEtsB,IAAKqsB,SACxD9wB,EACFH,KAAK+/C,aAAeA,CACtB,CAEO,sBAAMzsB,GACX,OAAOqsB,EAAkBY,cAC3B,CAEOhtB,aAAAA,CACLitB,EACA53B,EACA9hB,GAGA,IAAI25C,EAEFA,EADE35C,GAAS45C,aACQf,EAAkBgB,uBAAuB3gD,KAAK6/C,WAAYW,EAAa15C,EAAQ45C,cAE/E76C,QAAQC,QAAQ06C,GAGrC,MAAM9zB,EAA2B,IAAI1C,EAAA6C,mBAAkBC,UAErD,MAAMnC,QAAkB81B,EAClBz9B,EAA4BmH,EAAAqL,KAAKkJ,iBAAiB/T,GAClDgQ,EAAc/R,EAAQthB,IAAYyiB,EAAAuH,cAAcqJ,aAChDimB,GAAuB95C,GAAS45C,cAAgB/lB,EACpDA,EACAglB,EAAkBkB,uBAAuBl2B,EAAW3H,GAChD4Q,EAAmB+rB,EAAkBmB,0BAA0Bn2B,GAErE,OAAO3qB,KAAK+gD,oBAAoB/gD,KAAK0H,IAAKk5C,EAAa59B,EAAW4F,EAASgL,EAAiB,GAC3F,CAAExG,WAAW,IAGhB,OAFAptB,KAAKghD,eAAet0B,EAAU9D,EAAS63B,GAEhC/zB,CACT,CAEOqH,UAAAA,CAAWpJ,EAA8B/B,GAC9C5oB,KAAKqgD,kBAAoBrgD,KAAK4oB,QAAQkqB,MAAMlqB,GAC5C,MAAMq4B,EAAYjhD,KAAKmgD,gBAAgBe,aACrClhD,KAAK0H,IACLkhB,EAAQthB,IAAIyiB,EAAAuH,cAAcqJ,cAAgBglB,EAAkBwB,iBAAiBx2B,IAE/E3qB,KAAKqgD,uBAAoBlgD,EACzB,MAAMi2C,GAAQ,EAAApsB,EAAAqwB,MAAU4G,EAAW,CAAE7zB,WAAW,EAAOD,cAAerpB,OAAO+pC,oBAE7E,OADA7tC,KAAKghD,eAAe5K,EAAOxtB,EAAS/iB,QAAQC,QAAQ6kB,EAAUld,QACvD2oC,CACT,CAEOtiB,YAAAA,CAAanJ,EAAwB/B,GAC1C5oB,KAAKqgD,kBAAoBrgD,KAAK4oB,QAAQkqB,MAAMlqB,GAC5C,MAAMnd,EAAUzL,KAAKmgD,gBAAgBiB,SACnCphD,KAAK0H,IACLkhB,EAAQthB,IAAIyiB,EAAAuH,cAAcqJ,cAAgBglB,EAAkBwB,iBAAiBx2B,IAG/E,OADA3qB,KAAKqgD,uBAAoBlgD,EAClBsL,CACT,CAEOwoB,SAAAA,CAAUtJ,EAA2B/B,GAC1C5oB,KAAKqgD,kBAAoBrgD,KAAK4oB,QAAQkqB,MAAMlqB,GAC5C,MAAMnd,EAAUzL,KAAKmgD,gBAAgBkB,YACnCrhD,KAAK0H,IACLkhB,EAAQthB,IAAIyiB,EAAAuH,cAAcqJ,cAAgBglB,EAAkBwB,iBAAiBx2B,IAG/E,OADA3qB,KAAKqgD,uBAAoBlgD,EAClBsL,CACT,CAEUu1C,cAAAA,CACR7jC,EACAyL,EACA63B,GAGA,IAAIa,EAAiC,GACjC1tB,GAAmB,EAEvB,IAAI/tB,SAAoCinB,MAAMhnB,EAASC,KAErD,IAAIw7C,EACJ,IACE,MAAM52B,QAAkB81B,EACxBa,EAAiBn3B,EAAAqL,KAAKkJ,iBAAiB/T,GACvC42B,EAAa5B,EAAkB6B,sBAAsB72B,GACrDiJ,EAAmB+rB,EAAkBmB,0BAA0Bn2B,GAE/D,MAAM82B,EAAoBzhD,KAAKgxB,OAAO1pB,IAAIi6C,GAC1C,QAA0BphD,IAAtBshD,EACF,OAAO37C,EAAQ27C,GAGjB,MAAMC,EAAiBlH,YAAW,IAAM10C,EAAQo6C,IAAiBlgD,KAAK+/C,cAChEvzB,QAAuCxsB,KAC1C+gD,oBAAoB/gD,KAAK0H,IAAK65C,EAAY,CAAEtB,GAAar3B,GAAS,GACrE4D,EAAezR,GAAG,QAAS2R,IACzBi1B,aAAaD,GACb,MAAMx0B,EAAQR,EAASplB,IAAI24C,GACrBryB,EAA0C,CAAElhB,KAAM,WAAYxM,MAAO4D,OAAO+pC,mBAClF,GAAI3gB,EAAO,CACT,MAAM00B,EAA2B99C,OAAOZ,SAASgqB,EAAMhtB,MAAO,IACzD4D,OAAOC,MAAM69C,KAChBh0B,EAAYlhB,KAAO,QACnBkhB,EAAY1tB,MAAQ0hD,EACpB5hD,KAAKgxB,OAAOllB,IAAIy1C,EAAY3zB,GAEhC,CACA,OAAO9nB,EAAQ8nB,EAAY,IAE7BpB,EAAezR,GAAG,SAAS,KACzB4mC,aAAaD,GACb57C,EAAQo6C,EAAe,IAEzB1zB,EAAezR,GAAG,OAAO,KACvB4mC,aAAaD,GACb57C,EAAQo6C,EAAe,GAE3B,CAAE,MAAO/8C,GACP,OAAO4C,EAAO5C,EAChB,KAECmD,MAAMsnB,IACLzQ,EAAOiT,YAAY,WAAY,CAC7BxvB,MAAO,IAAIuyB,EAAAQ,wBACX/F,cACAgG,mBACA5Q,UAAWs+B,GACX,IAEH1V,OAAM,IAAMzuB,EAAOiT,YAAY,WAAY,CAC1CxvB,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAasyB,EACbtsB,mBACA5Q,UAAWs+B,KAEjB,CAUO,mCAAaX,CAClBd,EACAl1B,EACAk3B,GAEA,MAAMn1B,QAAiBm1B,EAAYn1B,SAASma,UAE5C,OAAQgZ,GACN,IAAK,SACH,OAAO/jB,EAAGN,WAAW,CACnBM,EAAG6E,aACDkhB,EAAYx0B,SAASrK,UACrB0J,EAASvnB,KAAI28C,GAAW1gD,OAAOq2B,YAAY,IAAKqqB,GAC7C38C,KAAI,EAAG1E,EAAKP,KAAY,CAAE,IAAIO,EAAIP,QAAuCA,SAE9EyqB,IACC,GACL,IAAK,QAAW,MAAM,IAAI5oB,MAAM,qCAChC,IAAK,SAAY,MAAM,IAAIA,MAAM,sCAErC,CAQO,6BAAO8+C,CAAuBl2B,EAA8B3H,GACjE,OAAO28B,EAAkBwB,iBAAiBrlB,EAAGgE,cAAcnV,EAAW3H,GACxE,CAOO,4BAAOw+B,CAAsB72B,GAClC,OAAOg1B,EAAkBwB,iBAAiBrlB,EAAGgE,cAC3ChE,EAAG4D,aACD5D,EAAGimB,YACDp3B,EACA,GACA,CAAEmR,EAAGkmB,qBACH33B,EAAGY,SAAS,QACZ,QACA6Q,EAAGmmB,4BACH,KAGJ53B,EAAGY,SAAS,SACZ6Q,EAAGuV,qBAAqBhnB,EAAGY,SAAS,UAEtC,CAAEZ,EAAGY,SAAS,WAElB,CAOO,uBAAOk2B,CAAiBx2B,GAC7B,OAAO,EAAAR,EAAA+3B,UAASv3B,EAAW,CAAEsrB,YAAY,GAC3C,CAMO,gCAAO6K,CAA0Bn2B,GACtC,IAAIiJ,GAAmB,EA2BvB,OA1BAzJ,EAAAqL,KAAK8I,iBAAiB3T,EAAW,CAC/Bw3B,SAAQA,KACNvuB,GAAmB,GACZ,GAETvmB,OAAOA,IACLumB,EAAmBvmB,EAAOqf,SAASyR,MAAKzR,GAAYrf,EAAO2V,UAAUmb,MAAKlT,KAAc,IAAIA,EAAS/qB,UAAWwsB,QACzG,GAET01B,KAAAA,CAAMA,GAEJ,MAAMC,EAAkBD,EAAM30C,MAC3BtI,IAAIglB,EAAAqL,KAAKkJ,kBACTv5B,KAAI6d,GAAaA,EAAU7d,KAAIm9C,GAAKA,EAAEpiD,UACtCiF,KAAI6d,GAAaA,EAAUurB,MAAK,CAACgU,EAAGC,IAAMD,EAAEE,cAAcD,OAC1Dr9C,KAAI6d,GAAaA,EAAU3d,KAAK,OAGnC,QAAKg9C,EAAgBhgB,OAAMqgB,GAAOA,IAAQL,EAAgB,OACxDzuB,GAAmB,GACZ,EAIX,IAEKA,CACT,CAWO,yBAAMmtB,CACX4B,EACAnqB,EACAxV,EACA4F,EACAgL,GAEA5zB,KAAKqgD,kBAAoBrgD,KAAK4oB,QAAQkqB,MAAMlqB,GAC5C,MAAMq4B,QAAkBjhD,KAAKmgD,gBAAgByC,cAAcD,EAAUnqB,GAarE,OAZAx4B,KAAKqgD,uBAAoBlgD,GAEd,EAAA6pB,EAAAqwB,MAAU4G,EAAW,CAAE7zB,WAAW,EAAOD,cAAerpB,OAAO+pC,oBACvE1oC,KAAmB09C,GAAsC7iD,KAAK6rB,gBAAgBa,SAAS1J,EACrF7d,KAAK8lB,IACJ,MAAM/qB,EAAQ2iD,EAAQ,IAAI53B,EAAS/qB,SAInC,OAHK0zB,GAAqB1zB,GACxBioB,EAAAE,MAAMy6B,iBAAiB9iD,KAAK4oB,UAAUm6B,KAAK,gBAAgBJ,qCAA4C13B,EAAS/qB,UAEhF,CAAE+qB,EAAU/qB,EAAO,IAEtD+E,QAAO,EAAGmnC,EAAGkW,KAAQta,QAAQsa,OAEpC,CAEO9gD,QAAAA,GACL,MAAO,qBAAqBxB,KAAK0H,MACnC,EA5VFxD,EAAAA,kBAAAy7C,EAC4BA,EAAAY,eAAwC,CAChE7zC,KAAM,cACN24B,SAAU,CACR,CACE34B,KAAM,YACNie,UAAW,CAAEq4B,cAAe,OAAQt2C,KAAMyd,EAAAyE,QAAQC,MAAMgR,SACxD6gB,cAAc,GAEhB,CACEh0C,KAAM,YACNie,UAAW,CAAEq4B,cAAe,OAAQt2C,KAAMyd,EAAAyE,QAAQC,MAAMkM,YAE1D,CACEruB,KAAM,YACNie,UAAW,CAAEq4B,cAAe,OAAQt2C,KAAMyd,EAAAyE,QAAQC,MAAMmN,WAE1D,CACEtvB,KAAM,YACNie,UAAW,CAAEq4B,cAAe,OAAQt2C,KAAMyd,EAAAyE,QAAQC,MAAMgS,MAE1D,CACEn0B,KAAM,YACNie,UAAW,CAAEq4B,cAAe,OAAQt2C,KAAMyd,EAAAyE,QAAQC,MAAMwS,8hBpFnDhE74B,EAAA0a,EAAA,KAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,8HqFDA,MAAAykC,EAAAzlB,EAAA,OAGA+/B,EAAA//B,EAAA,OAYA6G,EAAA7G,EAAA,OACAiF,EAAAjF,EAAA,OAEAggC,EAAAhgC,EAAA,KAKA,MAAak8B,UAA2C6D,EAAAE,yBAatDn0C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKse,GAChB,GAAoD,iBAAzCA,EAAOuJ,wBAAwB5xB,MACxC,MAAM,IAAIgK,UAAU,GAAGlK,KAAKgK,sFAE9B,OAAO,CACT,CAEO,SAAMse,CAAIC,GACf,MAAO,CACLmJ,YAAa,CACXlC,OAAQ,IAAI0zB,EAAAE,sBACVpjD,KAAKixB,UACI1I,EAAOuJ,wBAAwB5xB,MACxCqoB,EAAOuJ,wBAAwBplB,KAC/B1M,KAAKqjD,aACLrjD,KAAKsjD,yBACLtb,QAAQzf,EAAOuJ,wBAAwBlJ,SAASthB,IAAIyiB,EAAA8I,wBAAwB+S,WAC5E,CACE2d,iBAAkBvjD,KAAKujD,iBACvBC,wBAAyBxjD,KAAKwjD,wBAC9BC,2BAA4BzjD,KAAKyjD,2BACjCC,uBAAwB1jD,KAAK0jD,uBAC7BC,sCAAuC3jD,KAAK2jD,sCAC5CC,kCAAmC5jD,KAAK4jD,kCACxCC,uCAAwC7jD,KAAK6jD,yCAE/CC,GAAkB9jD,KAAKupC,QAAQhhB,EAAOK,QAASk7B,UACzCnb,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BxgB,EAAOK,UAEzEA,QAASL,EAAOuJ,wBAAwBlJ,SAAW,IAAIT,EAAAmK,eAG7D,EAjDFpuB,EAAAA,mCAAAk7C,2HCtBA,MAAAr1B,EAAA7G,EAAA,OACAiQ,EAAAjQ,EAAA,OAWA8G,EAAA9G,EAAA,OAGA,MAAsB6gC,UAAyC/5B,EAAAgD,iBAkB7Dhe,WAAAA,CACEiiB,EACAtG,EACAq5B,EACAp7B,EACAq7B,EACAZ,EACAa,EACAp9C,GAYA,GAVAuY,MAAM,CAAE+N,WAAW,KAAUtmB,IAlBrB,KAAAq9C,SAAU,EACH,KAAAC,iBAAkD,GAC3D,KAAAC,yBAA2B,EAC3B,KAAAC,4BAA8B,EAE9B,KAAAlR,oBAA6DvtC,QAAQC,aAAQ3F,GAcnFH,KAAKukD,UAAW,EAChBvkD,KAAKixB,UAAYA,EACjBjxB,KAAK2qB,UAAYA,EACjB3qB,KAAKgkD,qBAAuBA,EAC5BhkD,KAAK4oB,QAAUA,EACf5oB,KAAKikD,SAAWA,EAChBjkD,KAAKqjD,aAAeA,EACpBrjD,KAAKkkD,kBAAoBA,EAErBlkD,KAAKqjD,cAAgB,EACvB,MAAM,IAAIthD,MAAM,mFAAmF/B,KAAKqjD,eAE5G,CAKOmB,SAAAA,GACAxkD,KAAKmkD,SACRnkD,KAAKmwB,kBAET,CAEgBzC,WAAAA,CAAe+2B,EAAsBr3C,GAoCnD,MAnCqB,aAAjBq3C,GAAgCzkD,KAAKmkD,UAGlCnkD,KAAK0kD,oBACR1kD,KAAK0kD,kBAAoB,IAAI7+C,SAAQ,CAACC,EAASC,KAC7C/F,KAAKkkD,kBAAkB,CAAEx8C,IAAK1H,KAAKikD,UAAY,CAAC,GAC7C39C,MAAMq+C,IAEL,MAAMn4B,EAAiBm4B,EAAYn1B,OAAO+D,cAAcvzB,KAAK2qB,UAAW3qB,KAAK4oB,SAC7E4D,EAAekB,YAAY,YAAaL,IACtCA,EAASzsB,MAAQ,IAAIuyB,EAAAQ,wBACrBnH,EAAe7K,UACf3hB,KAAK4kD,mBAAmBD,EAAYt3B,SAAUA,GAC3C/mB,MAAM8sC,IAEL,MAAMyR,EAAiB,IAAKF,EAAYt3B,YAAaA,KAAa+lB,GAClEttC,EAAQ++C,EAAe,IAExBjZ,OAAM,KACL9lC,EAAQ,IACH6+C,EAAYt3B,SACfzsB,MAAO,IAAIuyB,EAAAQ,yBACX,GACF,GACJ,IAEHiY,MAAM7lC,EAAO,KAGpB/F,KAAK0kD,kBACFp+C,MAAK+mB,GAAYrtB,KAAKowB,YAAY,WAAY/C,KAC9Cue,OAAM,UAIJvsB,MAAMqO,YAAY+2B,EAAcr3C,EACzC,CAEmB0U,IAAAA,CAAKH,GAEtB,IAAK,MAAMoL,KAAM/sB,KAAKokD,iBACpBr3B,EAAGpL,UAGLtC,MAAMyC,KAAKH,EACb,CAcgBlC,KAAAA,CAAMyN,EAAe7mB,GACnC,GAAIrG,KAAKmkD,QAAS,CAEhB,IAAK,MAAM75C,KAAYtK,KAAKokD,iBAAkB,CAC5C,KAAOl3B,EAAQ,GAAG,CAChB,MAAMvN,EAAOrV,EAASqV,OACtB,GAAa,OAATA,EACF,MAEAuN,IACAltB,KAAKiuB,MAAMtO,EAEf,CACA,GAAIuN,GAAS,EACX,KAEJ,CAGIA,GAAS,GAAKltB,KAAK8kD,sBAIrB9kD,KAAKkkD,kBAAkB,CAAEx8C,IAAK1H,KAAKikD,UAAY,CAAC,GAC7C39C,MAAMq+C,IACL3kD,KAAK+kD,0BAA0BJ,EAAYK,iBAAiB,GAC5D3+C,GAAM,IAGVA,GAEJ,MAEErG,KAAKmkD,SAAU,EAGfnkD,KAAKkkD,kBAAkB,CAAEx8C,IAAK1H,KAAKikD,UAAY,CAAC,GAC7C39C,MAAMq+C,IACL3kD,KAAKilD,cAAcN,GACnBt+C,GAAM,IAGPulC,OAAMzoC,GAASq3C,YAAW,IAAMx6C,KAAK2hB,QAAQxe,MAEpD,CAEU2hD,mBAAAA,GACR,OAAQ9kD,KAAKokD,iBAAiB7iD,OAASvB,KAAKqkD,yBAA2BrkD,KAAKskD,4BAC1EtkD,KAAKqjD,gBAAkBrjD,KAAKklD,wCAA0CllD,KAAK4hB,SAC/E,CAEUsjC,mCAAAA,GACR,OAAO,CACT,CAEUC,mBAAAA,GACR,OAAQnlD,KAAKokD,iBAAiB7iD,OAASvB,KAAKqkD,yBAA2BrkD,KAAKskD,4BAA+B,CAC7G,CAkBUW,aAAAA,CAAcG,GAEtB,IACE,MAAM96C,EAAW86C,EAAY51B,OAAO+D,cAAcvzB,KAAK2qB,UAAW3qB,KAAK4oB,QAAS5oB,KAAKgkD,sBACrFhkD,KAAKokD,iBAAiB7gD,KAAK+G,GAC3B,IAAI+6C,GAAmB,EACnBC,GAAmB,EAGjBh7C,EAAUi7C,aAAevlD,KAC/BsK,EAASyQ,GAAG,SAAU5X,GAAiBnD,KAAK2hB,QAAQxe,KACpDmH,EAASyQ,GAAG,YAAY,IAAM/a,KAAKwlD,gBACnCl7C,EAASyQ,GAAG,OAAO,KACjB/a,KAAKokD,iBAAiBthC,OAAO9iB,KAAKokD,iBAAiBt6C,QAAQQ,GAAW,GAItE+6C,GAAmB,EACdC,GACHtlD,KAAKskD,8BAIHgB,GACFtlD,KAAK+kD,0BAA0BK,EAAYJ,iBAAiB,EAC9D,IAKF16C,EAASojB,YAAY,YAAaL,IAEhCrtB,KAAKozC,oBAAsBpzC,KAAKozC,oBAC7B9sC,MAAKm/C,GAAoB,WACnBA,IACHA,EAAmBL,EAAY/3B,UAE1BrtB,KAAK4kD,mBAAmBa,EAAkBp4B,IAJzB,GAMvB/mB,MAAM8sC,IAEL,MAAMyR,EAAiB,IAAKO,EAAY/3B,YAAaA,KAAa+lB,GAmClE,OAhCAyR,EAAejkD,MAAQ,IAAIuyB,EAAAQ,wBAG3B3zB,KAAK0lD,eAAeb,GAGhB7kD,KAAK0kD,mBACP1kD,KAAK0kD,kBACFp+C,MAAKq/C,GAAcA,EAAW/kD,MAAM2yC,eACpC3H,OAAM,SAMX5rC,KAAK4lD,eAAef,EAAgBO,GACjC9+C,MAAMu/C,GAAsBhgD,QAAQ4rB,IAAIo0B,KACxCv/C,MAAKwmB,UAEJ,MAAMg5B,QAAkB9lD,KAAK+lD,eAC7B,IAAK,MAAMC,KAAWH,EACpBC,EAAUviD,KAAKyiD,EAASZ,EAAYa,MAGtCX,GAAmB,EACfD,GACFrlD,KAAKskD,8BAGPtkD,KAAK+kD,0BAA0BK,EAAYJ,iBAAiB,EAAK,IAChEpZ,OAAMzoC,GAASnD,KAAK2hB,QAAQxe,KAE1B0hD,CAAc,MACnBjZ,OAAOzoC,IACXnD,KAAK2hB,QAAQxe,GACY,CAAC,IAC1B,GAER,CAAE,MAAO+iD,GACPlmD,KAAK2hB,QAAgBukC,EACvB,CACF,CAEUR,cAAAA,CAAeS,GACvB,MAAMC,EAAuBpmD,KAAK0tB,YAA8B,YAChE1tB,KAAKowB,YAAY,WAAY+1B,GAC7BC,GAAsBxlD,MAAM2yC,YAC9B,CAEU8S,SAAAA,GACR,OAAQrmD,KAAKqG,IACf,CASU0+C,yBAAAA,CAA0BC,EAA0CsB,GAC5EtmD,KAAK+lD,eACFz/C,MAAMw/C,IAEL,KAAO9lD,KAAK8kD,uBAAyB9kD,KAAKqmD,aAAa,CACrD,MAAME,EAAWT,EAAUtiD,MAC3B,IAAI+iD,EAuBF,MAtBAvmD,KAAKqkD,2BACLrkD,KAAKkkD,kBAAkBqC,EAAUvB,GAC9B1+C,MAAMkgD,IAEL,MAAMz0B,EAA+D/xB,KAAK4oB,QAAQthB,IAChFyiB,EAAAiI,eAAeC,mBAEbF,GACFA,EAA0BG,gBACxB,CACExqB,IAAK8+C,EAAgBP,KAAKv+C,IAC1B2lB,SAAU,IAAKm5B,EAAgBn5B,YAAam5B,EAAgBP,KAAK54B,WAEnEm5B,EAAgBh3B,QAIpBxvB,KAAKqkD,2BACLrkD,KAAKilD,cAAcuB,EAAgB,IAEpC5a,OAAMzoC,GAASnD,KAAK0D,KAAK,QAASP,IAIzC,CAGImjD,GAAYtmD,KAAKymD,YAAYX,GAAW,IAC1C9lD,KAAKub,OACP,IAEDqwB,OAAMzoC,GAASnD,KAAK2hB,QAAQxe,IACjC,CAEUsjD,WAAAA,CAAYX,EAAuBY,GAC3C,OAAOZ,EAAUa,YAAc3mD,KAAKmlD,qBACtC,EA9UFjhD,EAAAA,iCAAA6/C,mICVA,MAAAh6B,EAAA7G,EAAA,OAWA+G,EAAA/G,EAAA,OAEAiH,EAAAjH,EAAA,OAEA0jC,EAAA1jC,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YACTwR,EAAK,IAAI3R,EAAAyF,QAQf,MAAai3B,UAAiDD,EAAA7C,iCAU5D/0C,WAAAA,CACEiiB,EACAtG,EACAq5B,EACAp7B,EACA02B,EACA2E,EACAZ,EACAa,EACA4C,EACArD,EACAG,EACAC,GAEAxkC,MACE4R,EACAtG,EACAq5B,EACAp7B,EACAq7B,EACAZ,EACAa,EAGA4C,EAAkB,CAAE35B,cAAerpB,OAAO+pC,wBAAsB1tC,GA1B5D,KAAA4mD,qBAAsB,EA4B5B/mD,KAAKs/C,gBAAkBA,EACvBt/C,KAAKyjD,2BAA6BA,EAClCzjD,KAAK4jD,kCAAoCA,EACzC5jD,KAAK6jD,uCAAyCA,EAC9C7jD,KAAKgnD,YAAc,CAAE,CAAC/C,IAAW,GACjCjkD,KAAK8mD,gBAAkBA,CACzB,CAMgBvrC,KAAAA,GACTvb,KAAK8mD,gBAKV9mD,KAAK+lD,eACFz/C,MAAMw/C,IACD9lD,KAAKymD,YAAYX,GAAW,IAE1B9lD,KAAK8mD,iBACPtM,YAAW,IAAMx6C,KAAK8mD,gBAAiBrkD,QAEzC4c,MAAM9D,SAENvb,KAAK+mD,qBAAsB,CAC7B,IAEDnb,OAAMzoC,GAASkc,MAAMsC,QAAQxe,KAhB9Bkc,MAAM9D,OAiBV,CAEgBoG,OAAAA,CAAQslC,GACjBjnD,KAAK8mD,gBAKV9mD,KAAK+lD,eACFz/C,MAAMw/C,IACDmB,GAASjnD,KAAKymD,YAAYX,GAAW,IAEnC9lD,KAAK8mD,iBACPtM,YAAW,IAAMx6C,KAAK8mD,gBAAiBrkD,QAEzC4c,MAAMsC,QAAQslC,IAEdjnD,KAAK+mD,qBAAsB,CAC7B,IAEDnb,OAAMzoC,GAASkc,MAAMsC,QAAQxe,KAhB9Bkc,MAAMsC,QAAQslC,EAiBlB,CAEmBR,WAAAA,CAAYX,EAAuBoB,GACpD,OAAQA,EAAoBpB,EAAUa,UAAY3mD,KAAK+mD,qBAAuBjB,EAAUa,aACrF3mD,KAAKmlD,qBACV,CAEmBL,mBAAAA,GAGjB,OAAS9kD,KAAK+mD,qBAEX/mD,KAAK8mD,iBAAmB9mD,KAAK8mD,gBAAgBK,uBAA2B9nC,MAAMylC,qBACnF,CAEmBI,mCAAAA,GACjB,OAAQllD,KAAK8mD,eACf,CAEmBT,SAAAA,GAGjB,OAAQrmD,KAAK8mD,iBAAmB9mD,KAAK8mD,gBAAgBK,wBAA2BnnD,KAAKqG,IACvF,CAEO0/C,YAAAA,GAML,OALK/lD,KAAK8lD,YACR9lD,KAAK8lD,UAAY9lD,KAAK6jD,uCACnBr4B,QAAQ,CAAEy4B,SAAUjkD,KAAKikD,SAAUr7B,QAAS5oB,KAAK4oB,UACjDtiB,MAAKzC,GAAUA,EAAOiiD,aAEpB9lD,KAAK8lD,SACd,CAEU,oBAAMF,CAAev4B,EAA+B+3B,GAC5D,IACE,MAAM,MAAEgC,SAAgBpnD,KAAK4jD,kCAAkCp4B,QAAQ,CAAE5C,QAAS5oB,KAAK4oB,QAASyE,aAE1Fg6B,EACJrnD,KAAK4oB,QAAQthB,IAAIyiB,EAAAiI,eAAes1B,iBAClC,GAAID,EACF,IAAK,MAAMpB,KAAQmB,EACjBC,EAAiBn1B,gBAAgB,CAAExqB,IAAKu+C,EAAKv+C,IAAK2lB,SAAU,IAAK44B,EAAK54B,WAAa+3B,EAAYa,MAKnG,OAAOmB,EAAMniD,QAAQghD,IACfjmD,KAAKgnD,YAAYf,EAAKv+C,OAG1B1H,KAAKgnD,YAAYf,EAAKv+C,MAAO,GACtB,IAEX,CAAE,MAEA,MAAO,EACT,CACF,CAEmBu9C,aAAAA,CAAcG,GAC/B,GAAIplD,KAAK8mD,kBAAoB9mD,KAAK8mD,gBAAgBS,iBAAiBp6C,IAAIi4C,EAAYa,KAAKv+C,KAAM,CAG5F1H,KAAK8mD,iBAAiBS,iBAAiB9oC,IAAI2mC,EAAYa,KAAKv+C,KAC5D,MAAM0X,EAASgmC,EAAY51B,OAAO+D,cAChCuI,EAAGzP,cACDhC,EAAGY,SAAS,KACZZ,EAAGY,SAAS,KACZZ,EAAGY,SAAS,KACZZ,EAAGY,SAAS,MAEdjrB,KAAK4oB,QAAQ9c,IAAIie,EAAAoB,mBAAmBq8B,mBAAmB,IACvDriD,KAAIunB,GAAYrC,EAAGqK,KACnBhI,EAASplB,IAAI,KACbolB,EAASplB,IAAI,KACbolB,EAASplB,IAAI,KACbolB,EAASplB,IAAI,QAEftH,KAAK8mD,gBAAgBW,OAAoBroC,GACtCrE,GAAG,OAAO,KACTsE,MAAM4lC,cAAcG,EAAY,GAEtC,MACE/lC,MAAM4lC,cAAcG,EAExB,CAEO,wBAAMR,CACXxR,EACAC,GAEA,aAAiCrzC,KAAKyjD,2BAA2Bj4B,QAAQ,CACvE9qB,KAAM,SACN0yC,sBACAC,oBACAzqB,QAAS5oB,KAAK4oB,WACZyE,QACN,CAEmBq4B,cAAAA,CAAeS,GAChC9mC,MAAMqmC,eAAeS,GACrBnmD,KAAK8mD,iBAAiBY,gBAAgBvB,GAAa,EACrD,EA/LFjiD,EAAAA,yCAAA2iD,8GChCA,MAAAc,EAAAzkC,EAAA,OASA6G,EAAA7G,EAAA,OAaA8G,EAAA9G,EAAA,OACA4N,EAAA5N,EAAA,OACAhE,EAAAgE,EAAA,OAGA0kC,EAAA1kC,EAAA,OACA2kC,EAAA3kC,EAAA,OAEAhf,EAAAA,sBAAA,MAiBE8K,WAAAA,CACEiiB,EACAgzB,EACA3E,EACA+D,EACAyE,EACAC,EACAC,EACAn8B,GAEA7rB,KAAKmyB,eAAiB8xB,EACtBjkD,KAAKixB,UAAYA,EACjBjxB,KAAKikD,SAAWA,EAChBjkD,KAAKs/C,gBAAkBA,EACvBt/C,KAAKqjD,aAAeA,EACpBrjD,KAAK+nD,UAAYA,EACjB/nD,KAAK8nD,eAAiBA,EACtB9nD,KAAKgoD,WAAaA,EAClBhoD,KAAK6rB,gBAAkBA,EACvB7rB,KAAKioD,aAAe,IAAIn3B,EAAAI,SAAwC,CAAEtsB,IAAK5E,KAAKixB,WAC9E,CAEO,sBAAMqC,CAAiB1K,GAE5B,aADqB5oB,KAAKkoD,gBAAgB,CAAExgD,IAAK1H,KAAKikD,UAAY,CAAC,EAAGr7B,EAAS5oB,KAAKmoD,kBAAkBv/B,KACxF4G,OAAO8D,iBAAiB1K,EACxC,CAEO2K,aAAAA,CACL5I,EACA/B,EACA9hB,GAGA,MAAMggD,EAAgD9mD,KAAKmoD,kBAAkBv/B,GAC7E,GAAIk+B,GAAsC,YAAnBn8B,EAAUje,MAAsBo6C,EAAgB3C,QACrE,OAAO,IAAIwD,EAAAS,iBAAiBtB,EAAiB9mD,KAAK6rB,iBAAiB0H,cAAc5I,EAAW/B,GAI/D,IAA3B5oB,KAAKioD,aAAanoD,MACpBE,KAAKkoD,gBAAgB,CAAExgD,IAAK1H,KAAKikD,UAAY,CAAC,EAAGr7B,EAASk+B,GACvDlb,OAAMzoC,GAAS4pB,EAAGpL,QAAQxe,KAG/B,MAAM4pB,EAA+C,IAAI66B,EAAAf,yCACvD7mD,KAAKixB,UACLtG,EACA7jB,EACA8hB,EACA5oB,KAAKs/C,gBACLt/C,KAAKikD,SACLjkD,KAAKqjD,cACL,CAAC4C,EAAMjB,IAAoBhlD,KAAKkoD,gBAAgBjC,EAAMjB,EAAiBp8B,EAASk+B,IAChFA,EACA9mD,KAAK+nD,UAAUtE,2BACfzjD,KAAK+nD,UAAUnE,kCACf5jD,KAAK+nD,UAAUlE,wCAEjB,GAAIiD,EAAiB,CACnBA,EAAgB3C,SAAU,EAI1B,MAAMkE,EAAWA,IAAYt7B,EAAGy3B,YAChCsC,EAAgBwB,2BAA2BD,GAC3Ct7B,EAAGhS,GAAG,OAAO,IAAM+rC,EAAgByB,8BAA8BF,IACnE,CAEA,OAAOt7B,CACT,CAEOgH,UAAAA,CAAWpJ,EAA8B/B,GAC9C,OAAO,IAAIoB,EAAA6C,mBAAkBC,gBACN9sB,KAAKkoD,gBAAgB,CAAExgD,IAAK1H,KAAKikD,UAAY,CAAC,EAAGr7B,EAAS5oB,KAAKmoD,kBAAkBv/B,KACxF4G,OAAOuE,WAAWpJ,EAAW/B,IAE/C,CAEO,kBAAMkL,CAAanJ,EAAwB/B,GAChD,MAAM4G,QAAexvB,KAAKkoD,gBAAgB,CAAExgD,IAAK1H,KAAKikD,UAAY,CAAC,EAAGr7B,EAAS5oB,KAAKmoD,kBAAkBv/B,IACtG,aAAa4G,EAAOA,OAAOsE,aAAanJ,EAAW/B,EACrD,CAEO,eAAMqL,CAAUtJ,EAA2B/B,GAChD,MAAM4G,QAAexvB,KAAKkoD,gBAAgB,CAAExgD,IAAK1H,KAAKikD,UAAY,CAAC,EAAGr7B,EAAS5oB,KAAKmoD,kBAAkBv/B,IACtG,aAAa4G,EAAOA,OAAOyE,UAAUtJ,EAAW/B,EAClD,CASO,eAAM4/B,CACXvC,EACAjB,EACAp8B,EACAk+B,GAGIb,EAAKr9B,UACPA,EAAUA,EAAQkqB,MAAMmT,EAAKr9B,UAI/B,IACIwtB,EACA/oB,EAFA3lB,EAAMu+C,EAAKv+C,IAGf,IACE,MAAM+gD,QAAyDzoD,KAAK+nD,UAAUrE,uBAC3El4B,QAAQ,CAAE5C,UAASlhB,QACtBA,EAAM+gD,EAAqB/gD,IAG3B,MAAMghD,QAAmD1oD,KAAK+nD,UAAUxE,iBAAiB/3B,QACvF,CAAE5C,UAASlhB,MAAK0uC,MAAOqS,EAAqB7oC,KAAM+oC,QAASF,EAAqBp7B,UAAUs7B,UAG5FD,EAAkB9oC,KAAK7E,GAAG,SAAS,SAOnCsS,SAAkBrtB,KAAK+nD,UAAUvE,wBAAwBh4B,QAAQ,CAC/D5C,UACAlhB,MAEA2lB,SAAUq7B,EAAkBr7B,SAC5B5iB,QAASg+C,EAAqBh+C,QAC9Bm+C,YAAaH,EAAqBG,eAChCv7B,SACJ+oB,EAAQsS,EAAkB9oC,KAGtBqmC,EAAK/kC,YACPk1B,QAAc6P,EAAK/kC,UAAUk1B,GAEjC,CAAE,MAAOjzC,GAGPizC,EAAQ,IAAIl3B,EAAAC,SACZi3B,EAAMz2B,KAAO,KACX66B,YAAW,IAAMpE,EAAM1yC,KAAK,QAASP,KAC9B,QAENkqB,kBAAmBrtB,KAAK+nD,UAAUtE,2BAA2Bj4B,QAAQ,CAAE5C,UAASloB,KAAM,gBAIzFV,KAAKgoD,WAAW,2BAA2BtgD,aAAwBvE,EAAO4L,UAC5E,CAGA+3C,GAAiBY,gBAAmCr6B,GAAU,GAC9Dy5B,GAAiBS,iBAAiB9oC,IAAIwnC,EAAKv+C,KAC3Co/C,GAAiBW,OAAOrR,GAGxB,MAAM,OAAE5mB,EAAM,QAAEq5B,SAAkB7oD,KAAK+nD,UAAUpE,sCAAsCn4B,QAAQ,CAC7F5C,UACA02B,gBAAiB2G,EAAKv+C,MAAQ1H,KAAKikD,SAAWjkD,KAAKs/C,qBAAkBn/C,EACrE6kD,kBACA33B,WACA+oB,QACA1uC,QAUF,OAPImhD,IAIF7D,EAAgB6D,IAAW,GAGtB,CAAE5C,OAAMz2B,SAAQnC,SAA6BA,EAAU23B,kBAChE,CAUUkD,eAAAA,CACRjC,EACAjB,EACAp8B,EACAk+B,GAEA,IAAIt3B,EAASxvB,KAAKioD,aAAa3gD,IAAI2+C,EAAKv+C,KACxC,OAAI8nB,IAGJA,EAASxvB,KAAKwoD,UAAUvC,EAAMjB,EAAiBp8B,EAASk+B,GACpDb,EAAKv+C,MAAQ1H,KAAKikD,eAAgC9jD,IAApB2mD,GAChC9mD,KAAKioD,aAAan8C,IAAIm6C,EAAKv+C,IAAK8nB,GAE3BA,EACT,CAEO24B,iBAAAA,CAAkBv/B,GACvB,IAAIk+B,EACJ,GAAI9mD,KAAK8nD,eAAgB,CACvB,MAAMgB,EAA8DlgC,EACjEthB,IAAIyiB,EAAA8I,wBAAwB4D,mCAC/B,GAAIqyB,EAeF,OAdAhC,EAAkBgC,EAAiBxhD,IAAItH,KAAKikD,UACvC6C,IACHA,EAAkB,IAAIe,EAAAkB,4BACpB5oD,GACA2sB,MAAMsmB,EAAqBC,WAClBrzC,KAAK+nD,UAAUtE,2BAA2Bj4B,QAAQ,CACvD9qB,KAAM,SACN0yC,sBACAC,oBACAzqB,aACEyE,WAERy7B,EAAiBh9C,IAAI9L,KAAKikD,SAAU6C,IAE/BA,CAEX,CACF,CAEOtlD,QAAAA,GACL,MAAO,yBAAyBxB,KAAKikD,WACvC,kHCtRF,MAAAn6B,EAAA5G,EAAA,OACAiQ,EAAAjQ,EAAA,OAIA8lC,EAAA9lC,EAAA,MAKA,MAAa6lC,UAA+BC,EAAAC,eAe1Cj6C,WAAAA,CACEk6C,EACAC,GAGA9pC,MAAM6pC,GAnBD,KAAA/E,SAAU,EACV,KAAAoD,iBAAmB,IAAIhpC,IACd,KAAA6qC,iBAAiD,IAAI7qC,IAClD,KAAA8qC,yBAA4C,IAAI9qC,IAIzD,KAAA+qC,aAAiC,CACzC1oD,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CAAElhB,KAAM,QAASxM,MAAO,GACrC0zB,kBAAkB,EAClB5Q,UAAW,IASXhjB,KAAKmpD,oBAAsBA,CAC7B,CAEgB1B,MAAAA,CAAOroC,GAIrB,OAHKpf,KAAKkiB,OACR7C,MAAMooC,OAAOroC,GAERA,CACT,CAEO+nC,mBAAAA,GACL,OAAOnnD,KAAKopD,iBAAiBtpD,KAAO,CACtC,CAEgBkE,KAAAA,CACd+mB,EACAH,EACAI,EACAY,GAGA,MAAMq1B,EAAY5hC,MAAMrb,MAAM+mB,EAASH,EAAWI,EAAQY,GACpDthB,EAAW,IAAIwf,EAAAy/B,0BACbtI,EACN,CACE7zB,WAAW,EACXo8B,QAASA,KAEPxpD,KAAKopD,iBAAiBv4B,OAAOvmB,EAAS,IAM5C,IAAI4iB,EAAQltB,KAAKypD,WAAWC,WAAW3+B,EAAUH,EAAYI,EAASY,GACtE,MAAMyB,EAA0B,CAC9BzsB,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CACXlhB,KAAM,WACNxM,MAAOgtB,GAET0G,kBAAkB,GAEpBtpB,EAAS8lB,YAAY,WAAY/C,GACjC/iB,EAAS8lB,YAAY,YAAalD,GAGlC+zB,EAAUlmC,GAAG,QAAQ,KACnBzQ,EAAS8lB,YAAY,cAAelD,GACpCltB,KAAK2pD,oBAAoBr/C,EAAU4iB,EAAM,IAI3CltB,KAAKopD,iBAAiB3qC,IAAInU,GAG1B,IAAK,MAAM+9C,KAAYroD,KAAKqpD,yBAC1BhB,IAGF,OAAO/9C,CACT,CAEOo9C,eAAAA,CAAgBr6B,EAA4Bu8B,GAIjD,GAHA5pD,KAAKspD,aAAe,IAAKj8B,GACzBrtB,KAAKspD,aAAa17B,YAAc,CAAElhB,KAAM,QAASxM,MAAO,GAEpD0pD,EACF,IAAK,MAAMt/C,KAAYtK,KAAKopD,iBAAkB,CAC5C,MAAMl8B,EAAgB5iB,EAASojB,YAAY,aAC3C1tB,KAAK2pD,oBAAoBr/C,EAAU4iB,EACrC,CAEJ,CAEUy8B,mBAAAA,CAAoBr/C,EAAmC4iB,GAE/D,MAAMi5B,EAAgC,CACpCvlD,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CACXlhB,KAAM,WACNxM,MAAOgtB,GAET0G,kBAAkB,EAClB5Q,UAAW,IAGbhjB,KAAKmpD,oBAAoBnpD,KAAKspD,aAAcnD,GACzC7/C,MAAM8sC,IACLA,EAAoBxyC,MAAQ,IAAIuyB,EAAAQ,wBAGhC,MAAMyyB,EAAuB97C,EAASojB,YAA2B,YACjEpjB,EAAS8lB,YAAY,WAAYgjB,GACjCgT,GAAsBxlD,MAAM2yC,YAAY,IAEzC3H,OAAM,QAGX,CAEO0c,0BAAAA,CAA2BD,GAChCroD,KAAKqpD,yBAAyB5qC,IAAI4pC,EACpC,CAEOE,6BAAAA,CAA8BF,GACnCroD,KAAKqpD,yBAAyBx4B,OAAOw3B,EACvC,EAhIFnkD,EAAAA,uBAAA6kD,2gBzFZAvgD,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,KAAAhf,yH0FDA,MAAAykC,EAAAzlB,EAAA,OAOA+/B,EAAA//B,EAAA,OAEAiF,EAAAjF,EAAA,OAEA2mC,EAAA3mC,EAAA,OAKA,MAAa4mC,UAAsC7G,EAAAE,yBAGjDn0C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKse,GAChB,MAAMiH,EAASjH,EAAOuJ,wBACtB,QAAoB3xB,IAAhBqvB,EAAO9iB,MAAsC,UAAhB8iB,EAAO9iB,KACtC,MAAM,IAAI3K,MAAM,GAAG/B,KAAKgK,qFAE1B,GAA4B,iBAAjBwlB,EAAOtvB,SAAwB,UAAWsvB,EAAOtvB,OAC1D,MAAM,IAAI6B,MAAM,GAAG/B,KAAKgK,gDAE1B,OAAO,CACT,CAEO,SAAMse,CAAIC,GACf,MAAO,CACLmJ,YAAa,CACXlC,OAAQ,IAAIq6B,EAAAzB,iBACG7/B,EAAOuJ,wBAAwB5xB,YACtCyoC,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BxgB,EAAOK,UAEzEA,QAASL,EAAOuJ,wBAAwBlJ,SAAW,IAAIT,EAAAmK,eAG7D,EA5BFpuB,EAAAA,8BAAA4lD,wLCfA,MAAA7G,EAAA//B,EAAA,OACA6G,EAAA7G,EAAA,OACAiQ,EAAAjQ,EAAA,OAGA8G,EAAA9G,EAAA,OACA+G,EAAA/G,EAAA,OACAiR,EAAAjR,EAAA,OAKM4Y,EAAK,IAHX5Y,EAAA,OAGe0M,SACTvF,EAAK,IAAIJ,EAAAK,YAEf,MAAa89B,EAkBXp5C,WAAAA,CAAmBwgB,EAAoB3D,GACrC7rB,KAAKwvB,OAASA,EACdxvB,KAAKmyB,eAAiB3C,EACtBxvB,KAAK6rB,gBAAkBA,CACzB,CAEO,uBAAOk+B,CAAiB11B,EAA4B21B,GACzD,OAAQ31B,GAA0B,aAAlBA,EAAK7G,WAA6Bw8B,GAC9B,SAAlB31B,EAAK7G,WAAuB,EAAA2G,EAAA81B,iBAAgB51B,GAAMn0B,GAA4B,aAAnBA,EAAMstB,gBACjErtB,EACAk0B,CACJ,CAEO,4BAAO61B,CAAsBx6B,GAClC,MAAM1M,GAAY,EAAAmR,EAAAg2B,mBAAkBz6B,GAAS2E,GAA0B,aAAlBA,EAAK7G,WAC1D,OAAOxK,EAAUzhB,OAAS,IAAK,EAAA4yB,EAAAyK,WAAU5b,GAAWzhB,OAASyhB,EAAUzhB,MACzE,CAEO,sBAAM+xB,GACX,OAAO80B,EAAiB7H,cAC1B,CAEOhtB,aAAAA,CAAc5I,EAA8B/B,GACjD,GAAuB,YAAnB+B,EAAUje,KACZ,MAAM,IAAI3K,MAAM,4CAA4C4oB,EAAUje,6BAIxE,MAAMs9C,EAAwBhiB,QAAQhoC,KAAKwvB,OAAO46B,UAAUJ,uBAGtD/I,EAAYjhD,KAAKwvB,OAAOxrB,MAC5BokD,EAAiB2B,iBAAiBp/B,EAAUI,QAASi/B,GACrD5B,EAAiB2B,iBAAiBp/B,EAAUC,UAAWo/B,GACvD5B,EAAiB2B,iBAAiBp/B,EAAUK,OAAQg/B,GACpD5B,EAAiB2B,iBAAiBp/B,EAAUiB,MAAOo+B,IAErD,IAAIj9B,EAA8Bk0B,aAAqBj3B,EAAAtJ,cACrDugC,GACA,EAAAj3B,EAAAqwB,MAA4B4G,EAAW,CAAE7zB,WAAW,IAatD,OAVK48B,IACHj9B,GAAK,EAAAk2B,EAAAoH,2BAA0B1/B,EAAWoC,IAIvCA,EAAGW,YAAY,aAClB1tB,KAAKsqD,YAAYv9B,EAAIpC,GAClBihB,OAAMzoC,GAAS4pB,EAAGpL,QAAQxe,MAGxB,EAAA8/C,EAAAsH,iBACLx9B,EACApC,EACA3qB,KAAK6rB,gBACLmc,QAAQpf,EAAQthB,IAAIyiB,EAAAoB,mBAAmBq8B,oBAE3C,CAEU,iBAAM8C,CACdv9B,EACApC,GAGA,MAAMq/B,EAAwBhiB,QAAQhoC,KAAKwvB,OAAO46B,UAAUJ,uBAE5D,IAAIp8B,EACJ,GAAI5tB,KAAKwvB,OAAOk6B,WAEd97B,QAAoB5tB,KAAKwvB,OAAOk6B,WAC9BtB,EAAiB2B,iBAAiBp/B,EAAUI,QAASi/B,GACrD5B,EAAiB2B,iBAAiBp/B,EAAUC,UAAWo/B,GACvD5B,EAAiB2B,iBAAiBp/B,EAAUK,OAAQg/B,GACpD5B,EAAiB2B,iBAAiBp/B,EAAUiB,MAAOo+B,QAEhD,CAIL,IAAI3oD,EAAI,EACRusB,QAAoB,IAAI/nB,SAAQ,CAACC,EAASC,KACxC,MAAM0b,EAAUzhB,KAAKwvB,OAAOxrB,MAC1BokD,EAAiB2B,iBAAiBp/B,EAAUI,QAASi/B,GACrD5B,EAAiB2B,iBAAiBp/B,EAAUC,UAAWo/B,GACvD5B,EAAiB2B,iBAAiBp/B,EAAUK,OAAQg/B,GACpD5B,EAAiB2B,iBAAiBp/B,EAAUiB,MAAOo+B,IAErDvoC,EAAQ1G,GAAG,QAAShV,GACpB0b,EAAQ1G,GAAG,OAAO,IAAMjV,EAAQzE,KAChCogB,EAAQ1G,GAAG,QAAQ,IAAM1Z,KAAI,GAEjC,CAGA,MAAMmpD,GAA8BR,IAChC,EAAA71B,EAAAs2B,WAAU9/B,GAAW0J,GAA0B,SAAlBA,EAAK7G,YACpC46B,EAAiB8B,sBAAsBv/B,GAEzCoC,EAAGqD,YAAY,WAAY,CACzBxvB,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CAAElhB,KAAM89C,EAA4B,WAAa,QAAStqD,MAAO0tB,GAC9EgG,kBAAkB,GAEtB,CAEOG,UAAAA,CACL2S,EACA7c,GAEA,MAAM,IAAI9nB,MAAM,oDAClB,CAEO+xB,YAAAA,CACL4S,EACA7c,GAEA,MAAM,IAAI9nB,MAAM,sDAClB,CAEOkyB,SAAAA,CACLyS,EACA7c,GAEA,MAAM,IAAI9nB,MAAM,mDAClB,CAEOP,QAAAA,GACL,MAAO,oBAAoBxB,KAAKwvB,OAAOxgB,YAAYhF,OACrD,EAnJF9F,EAAAA,iBAAAkkD,EAC4BA,EAAA7H,eAAwC,CAChE7zC,KAAM,YACNie,UAAW,CACTq4B,cAAe,UACftzB,QAASoM,EAAGzP,cAAchC,EAAGY,SAAS,KAAMZ,EAAGY,SAAS,KAAMZ,EAAGY,SAAS,OAE5Ey/B,kBAAmB,CACjBrgC,EAAGY,SAAS,KACZZ,EAAGY,SAAS,KACZZ,EAAGY,SAAS,ghB3F1BlBziB,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,8H4FDA,MAAAymD,EAAAznC,EAAA,OAMA,MAAa0nC,UAA2CD,EAAAE,wBACtD77C,WAAAA,CACEvK,GAEA4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GAGf,MAAO,CAAEjb,QAFO,IAAKib,EAAOjb,SACzBihC,MAAK,CAACuc,EAAWC,IAAeD,EAAUz9B,SAASO,YAAY1tB,MAAQ6qD,EAAW19B,SAASO,YAAY1tB,QAE5G,EAfFgE,EAAAA,mCAAA0mD,2gB5FPApiD,EAAA0a,EAAA,OAAAhf,4G6FCA,MAAA8mD,EAAA9nC,EAAA,OAGA+nC,EAAA/nC,EAAA,MAKA,MAAagoC,UAAyBF,EAAAG,aACpCn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,OACdC,aAAc,EACdC,yBAAyB,GAE7B,CAEO,eAAMC,CAAUjjC,GACrB,IAAI4qB,QAAkB6X,EAAAG,aAAaM,aAAaljC,EAAOjb,SAInD6lC,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,QAC5DizC,EAAY,CAAEA,EAAU,GAAIA,EAAU,IACtC5qB,EAAS,IAAKA,EAAQjb,QAAS,CAAEib,EAAOjb,QAAQ,GAAIib,EAAOjb,QAAQ,MAGrE,MAAM0V,EAAYgoC,EAAAG,aAAaO,qBAAqBvY,GAOpD,MAAO,CACLtvC,OAAQ,CACN6I,KAAM,WACN8f,eATS,IAAIy+B,EAAA3qC,SACfiI,EAAOjb,QAAQ,GAAGurB,OAAOrM,eACzBjE,EAAOjb,QAAQ,GAAGurB,OAAOrM,gBACzB6X,GAAS2mB,EAAAG,aAAa/oC,KAAKiiB,EAAOrhB,IAC5BgoC,EAAAG,aAAazK,cAMjBrzB,SAAUP,eAAiB9sB,KAAK2rD,wBAAwBpjC,EAAOjb,QAAS6lC,EAAW5qB,EAAOK,UAGhG,CAEU,yBAAMgjC,CACdrjC,EACA4qB,GAGIA,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,QAC5DizC,EAAY,CAAEA,EAAU,GAAIA,EAAU,KAGxC,MAAM0Y,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,GAC1D,MAAO,CACL9V,WAAY8V,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,MACtE+rD,eAAgB9Y,EAAU,GAAGvlB,YAAY1tB,MACzCgsD,cAAe/Y,EAAU,GAAGvlB,YAAY1tB,MACxC0oD,YAAaiD,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GACtFF,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GAEjF,EAtDF7nD,EAAAA,iBAAAgnD,2gB7FTA1iD,EAAA0a,EAAA,OAAAhf,uH8FAA,MAAA4lB,EAAA5G,EAAA,OAEA8nC,EAAA9nC,EAAA,OAYA8G,EAAA9G,EAAA,OAIM4Y,EAAK,IAFX5Y,EAAA,OAEe0M,SAKf,MAAau8B,UAAoCnB,EAAAG,aAK/Cn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,cACde,iBAAiB,GAErB,CAEO,eAAMZ,CAAUjjC,GAErB,MAAM8jC,QAAwBrB,EAAAG,aAAamB,wBAAwB/jC,EAAOjb,SACpEA,QAAgBtN,KAAKusD,gBAAgBF,EAAiB9jC,EAAOK,SAEnE5oB,KAAK+8B,SACHxU,EAAOK,QACP,sCACA,KAAM,CAAGyb,MAAO/2B,EAAQ,GAAGqd,UAAW0C,SAAU/f,EAAQ,GAAG+f,aAI7D,IAAK,MAAQhsB,EAAGi5C,KAAahtC,EAAQA,UACzB,IAANjM,GACFi5C,EAAQzhB,OAAOrM,eAAejR,QAKlC,MAAMixC,EAAgDl/C,EAAQ,GAAGurB,OAC3D4zB,EAAmBn/C,EAAQ,GAAG+f,SAC9Bq/B,EAAmB,IAAKp/C,GAC9Bo/C,EAAiB5pC,OAAO,EAAG,GAG3B,MAAMkQ,EAAqClJ,EAAAuB,oBAAoBoE,mBAAmBi9B,EAAiB,GAAG/hC,WAGhGA,EAAY3qB,KAAK2sD,2BAA2BD,GAG5CE,EAA6D,IAAI5B,EAAA6B,gBACrEL,EAAehgC,eACfxsB,KAAK8sD,UACL,CAAE1/B,WAAW,IAUf,MAAO,CACLvpB,OAAQ,CACN6I,KAAM,WACN8f,eATmB,IAAIxC,EAAAmlB,cAAcyd,EAAeznD,KAAImU,GAAS0Z,EAAcxD,OAAO+D,cACxF5I,EACAqI,EAAcpK,QAAUL,EAAOK,QAAQkqB,MAAM9f,EAAcpK,SAAWL,EAAOK,QAC7E,CAAE83B,aAAc,CAAEh0B,SAAUpT,EAAO+T,SAAUo/B,QAO3Cp/B,SAAUA,IAAMrtB,KAAK2rD,wBAAwBr+C,EAASA,EAAQnI,KAAIk/B,GAASA,EAAMhX,WAAW9E,EAAOK,UAErGmkC,qBAAsB,CACpBC,UAAWX,EAAgBviD,QAAQwD,EAAQ,KAGjD,CAEU,qBAAMi/C,CACdj/C,EACAsb,GAYA,OAVAtb,QAAgB09C,EAAAG,aAAaoB,gBAAgBvsD,KAAKitD,wBAAyB3/C,EAASsb,IAGlE2lB,MAAK,CAACuc,EAAWC,IAC7BD,EAAUoC,oBAAsBnC,EAAWmC,mBACrC,EAEH,GAIX,CAEO,yBAAMtB,CACXrjC,EACA4qB,GAGA,MAAM7lC,QAAgBtN,KAAKusD,gBAAgBhkC,EAAOjb,QAC/CnI,KAAI,CAACk/B,EAAOhjC,KAAM,IAAMgjC,EAAOhX,SAAU8lB,EAAU9xC,OAAQknB,EAAOK,SACrEuqB,EAAY7lC,EAAQnI,KAAIk/B,GAASA,EAAMhX,WAEvC,MAAMw+B,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,GAGpDuZ,EAAmB,IAAKp/C,GACxB6/C,EAA+B,IAAKtB,GACpCuB,EAA4B,IAAKrB,GACvCW,EAAiB5pC,OAAO,EAAG,GAC3BqqC,EAA6BrqC,OAAO,EAAG,GACvCsqC,EAA0BtqC,OAAO,EAAG,GAGpC,MAAMgJ,EAAU4gC,EAAiBvnD,KAAIk/B,GAASva,EAAAuB,oBAAoBoE,mBAAmB4U,EAAM1Z,aAC3F,GAAImB,EAAQqS,MAAK3O,IAAWA,IAC1B,MAAM,IAAIztB,MAAM,SAAS/B,KAAKgK,uEAIhC,GAAI8hB,EAAQqS,MAAK3O,GAAUA,IAAW1D,EAAQ,KAC5C,MAAM,IAAI/pB,MAAM,SAAS/B,KAAKgK,8EAIhC,MAAMgpB,EAAqClH,EAAQ,GAC7CuhC,EAAmBrtD,KAAK2sD,2BAA2BD,GACnDY,QAAsBt6B,EAAcxD,OAAO8D,iBAAiB/K,EAAOK,SACzE,IAAKkB,EAAAuB,oBACFoP,yBAAyB6yB,EAAeD,EAAkB,CAAE3M,cAAc,IAC3E,MAAM,IAAI3+C,MAAM,SAAS/B,KAAKgK,yEAIhC,MAAMujD,QAAsB1nD,QAAQ4rB,IAAIi7B,EACrCvnD,KAAI2nB,gBAAsB9sB,KAAKwtD,wBAAwBhiC,QAAQ,CAC9Dle,QAAS,CAAEA,EAAQ,GAAI+2B,GACvBzb,QAASL,EAAOK,WACd6kC,YAAcztD,KAAK0tD,uBAGnBC,EAAuBjB,EAC1BvnD,KAAI,CAACk/B,EAAOhjC,IAAMgjC,EAAMhX,SAASO,YAAY1tB,MAAQqtD,EAAclsD,KACnE27B,QAAO,CAAC4wB,EAAKtT,IAAYsT,EAAMtT,GAAS,GAE3C,MAAO,CACLjd,WAAY,EACZ4uB,eAAgB9Y,EAAU,GAAGvlB,YAAY1tB,MACzCgsD,cAAe/Y,EAAU,GAAGvlB,YAAY1tB,MACxC0oD,YAAaiD,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GACtFF,EAAoB,GAAK8B,EAAuB5B,EAAiB,GAEvE,CAEOY,0BAAAA,CAA2BD,GAChC,OAAgC,IAA5BA,EAAiBnrD,OACZmrD,EAAiB,GAAG/hC,UAEtBmR,EAAGN,WAAWkxB,EAAiBvnD,KAAIk/B,GAASA,EAAM1Z,aAAY,EACvE,EAxJFzmB,EAAAA,4BAAAioD,0gB9FvBA3jD,EAAA0a,EAAA,OAAAhf,iH+FAA,MAAAykC,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OAMA8nC,EAAA9nC,EAAA,OAEA6G,EAAA7G,EAAA,OAGA8G,EAAA9G,EAAA,OACAiH,EAAAjH,EAAA,OAKA,MAAa2qC,UAA8B7C,EAAAG,aAUzCn8C,WAAAA,CAAmBvK,QAEmBtE,IAAhCsE,EAAKqpD,yBACPrpD,EAAKqpD,uBAAyB,IAEhCzuC,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,OACde,iBAAiB,EACjB2B,QAAQ,GAEZ,CAaO,uBAAOC,CACZC,EACAC,EACAhyB,EACAiyB,EAEAC,EACAviC,GAGA,MAAMwiC,EAAqC,gBAAdJ,EAGvBK,EAAU5hC,IAGd,MAAMuiB,EAAgB/S,EACnB/2B,KAAIwlB,IAAa,EAAAb,EAAAgwB,sBAAqBnvB,EAAW+B,EAAUb,EAAiB,CAAE0iC,YAAY,MACvFC,EAAkBC,GAAgDA,EAAY3b,MAAMpmB,GAC1F,OAAO,IAAI1C,EAAA6C,mBAAkBC,gBAAkBqhC,EAAgBlf,EAAeviB,IAC3ExL,UAAU,CAAE/b,IAAKqpD,KAAmB,CAAErhC,cAAe,IAAKC,UAAWihC,GAAuB,EAIjG,OAAQJ,GACN,IAAK,cACH,OAAO,IAAIjkC,EAAArJ,uBAAuButC,EAAY,CAAE9gC,WAAW,EAAOX,eAAgB6hC,EAAQF,aAC5F,IAAK,gBACH,OAAO,IAAIpkC,EAAAmlB,cAAc+e,EAAWhtC,UAAU,CAC5C/b,IAAKmpD,EACLF,aACE,CAAEhhC,WAAW,IACnB,QAEE,MAAM,IAAIrrB,MAAM,4CAA4CksD,KAElE,CAEO,eAAMzC,CAAUjjC,GACrB,MAAMsD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BxgB,EAAOK,SAGzFyjC,QAAwBrB,EAAAG,aAAamB,wBAAwB/jC,EAAOjb,SACpEA,QAAgB09C,EAAAG,aAAaoB,gBAAgBvsD,KAAKitD,wBAAyBZ,EAAiB9jC,EAAOK,SAEzG5oB,KAAK+8B,SACHxU,EAAOK,QACP,+BACA,KAAM,CAAGyb,MAAO/2B,EAAQ,GAAGqd,UAAW0C,SAAU/f,EAAQ,GAAG+f,aAI7D,IAAK,MAAQhsB,EAAGi5C,KAAahtC,EAAQA,UACzB,IAANjM,GACFi5C,EAAQzhB,OAAOrM,eAAejR,QAKlC,MAAMixC,EAAgDl/C,EAAQ,GAAGurB,OAC3D6zB,EAAmB,IAAKp/C,GAC9Bo/C,EAAiB5pC,OAAO,EAAG,GAG3B,MAAMiyB,EAAaxsB,EAAOK,QACvB9c,IAAIie,EAAAoB,mBAAmBujC,iBAAkBphD,EAAQ,GAAG+f,UACpDvhB,IAAIie,EAAAoB,mBAAmBwjC,mBAAoBjC,EAAiBvnD,KAAIk/B,GAASA,EAAMhX,YAmBlF,MAAO,CACLxpB,OAAQ,CACN6I,KAAM,WACN8f,eArBmCqhC,EAAsBG,iBAC3DhuD,KAAKiuD,UACLzB,EAAehgC,eACfkgC,EAAiBvnD,KAAIk/B,GAASA,EAAM1Z,aACpCmC,MAAMoP,EAAiC0yB,KAErC,MAAMjkC,EAAkC,IAAtBuR,EAAW36B,OAC3B26B,EAAW,GACX2xB,EAAsBpiC,QAAQ+P,WAAWU,GAI3C,OAHepS,EAAAuB,oBAAoBC,sBAAsBtrB,KAAKurB,uBAAuBC,QACnF,CAAEb,YAAW/B,QAASmsB,GAAYjpC,IAAIie,EAAAoB,mBAAmBu1B,aAAckO,MAE3DpiC,cAAc,IAE9B,EACAX,GAOEwB,SAAUA,IAAMrtB,KAAK2rD,wBAAwBr+C,EAASA,EAAQnI,KAAIk/B,GAASA,EAAMhX,WAAW9E,EAAOK,UAErGmkC,qBAAsB,CACpBC,UAAWX,EAAgBviD,QAAQwD,EAAQ,IAC3C+rC,cAAe/rC,EAAQ,GAAGqd,UAC1B2uB,yBAA0BhsC,EAAQ,GAAG+f,SAASO,YAC9CqgC,UAAWjuD,KAAKiuD,WAGtB,CAEOY,oBAAAA,CAAqBlkC,GAC1B,IAAImkC,GAAQ,EAYZ,OAXA3kC,EAAAqL,KAAK8I,iBAAiB3T,EAAW,CAC/B,CAACR,EAAAyE,QAAQC,MAAM4Q,QAAO,KACpBqvB,GAAQ,GACD,GAET,CAAC3kC,EAAAyE,QAAQC,MAAMoS,OAAM,KACnB6tB,GAAQ,GACD,KAIJA,CACT,CAEO,yBAAMlD,CACXrjC,EACA4qB,GAGA,MAAM7lC,QAAgB09C,EAAAG,aAAaoB,gBAAgBvsD,KAAKitD,wBAAyB1kC,EAAOjb,QACrFnI,KAAI,CAACk/B,EAAOhjC,KAAM,IAAMgjC,EAAOhX,SAAU8lB,EAAU9xC,OAAQknB,EAAOK,SACrEuqB,EAAY7lC,EAAQnI,KAAIk/B,GAASA,EAAMhX,WAEvC,MAAMw+B,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,GAGpDuZ,EAAmB,IAAKp/C,GACxB6/C,EAA+B,IAAKtB,GACpCuB,EAA4B,IAAKrB,GAMvC,GALAW,EAAiB5pC,OAAO,EAAG,GAC3BqqC,EAA6BrqC,OAAO,EAAG,GACvCsqC,EAA0BtqC,OAAO,EAAG,GAGhC4pC,EACDvuB,MAAKkG,IAAUrkC,KAAK6uD,qBAAqBxqB,EAAM1Z,aAChD,MAAM,IAAI5oB,MAAM,SAAS/B,KAAKgK,oDAIhC,GAAI0iD,EAAiBvuB,MAAKkG,GAASA,EAAM6oB,oBACvC,MAAM,IAAInrD,MAAM,SAAS/B,KAAKgK,wEAKhC,GAAImpC,EAAU,GAAGvlB,YAAY1tB,MAAQF,KAAK8tD,uBACxCnpD,KAAKC,OAAOuuC,EAAUhuC,KAAIkoB,GAAYA,EAASO,YAAY1tB,SAC3D,MAAM,IAAI6B,MAAM,SAAS/B,KAAKgK,gFAIhC,MAAMujD,QAAsB1nD,QAAQ4rB,IAAIi7B,EACrCvnD,KAAI2nB,gBAAsB9sB,KAAKwtD,wBAAwBhiC,QAAQ,CAC9Dle,QAAS,CAAEA,EAAQ,GAAI+2B,GACvBzb,QAASL,EAAOK,WACd6kC,YAAcztD,KAAK0tD,uBAGnBC,EAAuBjB,EAC1BvnD,KAAI,CAACk/B,EAAOhjC,IAAMgjC,EAAMhX,SAASO,YAAY1tB,MAAQqtD,EAAclsD,KACnE27B,QAAO,CAAC4wB,EAAKtT,IAAYsT,EAAMtT,GAAS,GACrCyU,EAA8B5B,EACjCnwB,QAAO,CAAC4wB,EAAKtT,IAAYsT,EAAMtT,GAAS,GACrC0U,EAA2B5B,EAC9BpwB,QAAO,CAAC4wB,EAAKtT,IAAYsT,EAAMtT,GAAS,GAE3C,MAAO,CACLjd,WAAY8V,EAAU,GAAGvlB,YAAY1tB,MAAQytD,EAC7C1B,eAAgB,EAChBC,cAAe,EACftD,YAAaiD,EAAoB,GAC/B1Y,EAAU,GAAGvlB,YAAY1tB,OACvB6rD,EAAiB,GACjBgD,EACApB,EAAuBqB,GAG/B,EAvNF9qD,EAAAA,sBAAA2pD,EAQyBA,EAAApiC,QAAU,IAAItB,EAAAyF,ihB/F5BvCpnB,EAAA0a,EAAA,OAAAhf,kHgGCA,MAAA8mD,EAAA9nC,EAAA,OAEAiQ,EAAAjQ,EAAA,OAGA8G,EAAA9G,EAAA,OAKA,MAAa+rC,UAA+BjE,EAAAG,aAC1Cn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,cACde,iBAAiB,GAErB,CAEgB,UAAMniD,CAAKse,GACzB,UAAWyiC,EAAAG,aAAaM,aAAaljC,EAAOjb,UACzC+0B,OAAMhV,GAAY29B,EAAAG,aAAa+D,eAAe7hC,GAAUntB,MAAQ,IACjE,MAAM,IAAI6B,MAAM,SAAS/B,KAAKgK,0DAEhC,OAAOqV,MAAMpV,KAAKse,EACpB,CAEmB,eAAMijC,CAAUjjC,GAEjC,IAAK,MAAM8b,KAAS9b,EAAOjb,QACzB+2B,EAAMxL,OAAOrM,eAAejR,QAG9B,MAAO,CACL1X,OAAQ,CACN2oB,eAAgB,IAAIxC,EAAA0J,cAA4B,GAAI,CAAEtG,WAAW,IACjEC,SAAUP,UAAA,CACRlsB,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CAAElhB,KAAM,QAASxM,MAAO,GACrC0zB,kBAAkB,EAClB5Q,UAAWgoC,EAAAG,aAAagE,oBAAoBnE,EAAAG,aAAaM,aAAaljC,EAAOjb,YAE/EZ,KAAM,YAGZ,CAEU,yBAAMk/C,CACdn7B,EACA2+B,GAEA,MAAO,CACL/xB,WAAY,EACZ4uB,eAAgB,EAChBC,cAAe,EACftD,YAAa,EAEjB,EA/CF1kD,EAAAA,uBAAA+qD,2gBhGXAzmD,EAAA0a,EAAA,OAAAhf,mIiGAA,MAAAykC,EAAAzlB,EAAA,OACA4G,EAAA5G,EAAA,OAOA8nC,EAAA9nC,EAAA,OAEA6G,EAAA7G,EAAA,OAYA8G,EAAA9G,EAAA,OACAiH,EAAAjH,EAAA,OAKA,MAAamsC,UAAgDrE,EAAAG,aAO3Dn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,iCACdC,aAAc,EACdgE,iBAAiB,EACjBvB,QAAQ,GAEZ,CAQO,qBAAMxB,CACXj/C,EACAsb,GAEA,IAAMtb,QAASiiD,SAAwBvvD,KAAKitD,wBAAwBzhC,QAAQ,CAAEle,UAASsb,YAGvF2mC,EAAgBA,EAAchhB,MAAK,CAACuc,EAAWC,IACzCD,EAAUoC,oBAAsBnC,EAAWmC,mBACrC,EAEH,IAGT,MAAM/Q,EAAQoT,EAAczsC,OAAO,EAAG,GAAG,GAKzC,IAAI0sC,EACAC,GAAe,EACfC,EAAwB,EAC5B,IAAK,MAAQruD,EAAGgjC,KAAWkrB,EAAcjiD,UAAW,CAClD,MAAMqiD,EAAkBxT,EAAM9uB,SAASrK,UACpC/d,QAAO2qD,GAAiBvrB,EAAMhX,SAASrK,UACrCmb,MAAK0xB,GAAkBD,EAAclvB,OAAOmvB,OAAkBtuD,SAC9DiuD,GAAWG,EAAkBD,GAC/BC,IAAoBD,IAClBrrB,EAAMhX,SAASrK,UAAUzhB,OAASiuD,EAAOniC,SAASrK,UAAUzhB,QAC1D8iC,EAAMhX,SAASrK,UAAUzhB,SAAWiuD,EAAOniC,SAASrK,UAAUzhB,QAC7D8iC,EAAMhX,SAASO,YAAY1tB,MAAQsvD,EAAOniC,SAASO,YAAY1tB,UACrEsvD,EAASnrB,EACTorB,EAAcpuD,EACdquD,EAAwBC,EAE5B,CAEA,GAA8B,IAA1BD,EACF,MAAM,IAAI3tD,MAAM,SAAS/B,KAAKgK,4CAGhC,MAAM8lD,EAAYP,EAElB,OADAO,EAAUhtC,OAAO2sC,EAAa,GACvB,CAAEtT,QAAOqT,OAAQA,EAASM,YACnC,CAEO,eAAMtE,CAAUjjC,GAErB,MAAM8jC,QAAwBrB,EAAAG,aAAamB,wBAAwB,IAAK/jC,EAAOjb,WACzE,MAAE6uC,EAAOqT,OAAQO,EAAUD,UAAWE,SAAsBhwD,KAAKusD,gBACrEF,EACA9jC,EAAOK,SAIHqnC,EAAkB9T,EAAMtjB,OAAOrM,eACrC2vB,EAAMtjB,OAAOrM,eAAiByjC,EAAgBxhD,QAI9C,MAAMyhD,EAAkB/T,EAAM9uB,SAASrK,UACpC/d,QAAO2qD,GAAiBG,EAAS1iC,SAASrK,UACxCmb,MAAK0xB,GAAkBD,EAAclvB,OAAOmvB,OAC3CpnB,EAAkC,CAAC,EACnC0nB,EAA2CF,EAAgBxhD,QAC9DtJ,KAAI28C,GAAWA,EAAQ78C,QAAO,CAAC/E,EAAOO,IACrCyvD,EAAgB/xB,MAAKiyB,GAAkBA,EAAe1vB,OAAOjgC,SAC9DwE,QAAQ68C,IACP,MAAM1/B,GAAe,EAAAumB,EAAAa,kBAAiBsY,GACtC,QAAS1/B,KAAQqmB,KAAYA,EAAOrmB,IAAQ,EAAK,IAI/CwqC,EAA6D,IAAI5B,EAAA6B,gBACrEsD,EACAnwD,KAAK8sD,UACL,CAAE1/B,WAAW,IAIT4F,EAAqClJ,EAAAuB,oBAAoBoE,mBAAmBsgC,EAASplC,WAMrF6kC,EAAqB,CACzB32B,OAAQ,CACNnsB,KAAM,WACN8f,eARiB,IAAIxC,EAAAmlB,cAAcyd,EAAeznD,KAAImU,GAAS0Z,EAAcxD,OAAO+D,cACtFw8B,EAASplC,UACTqI,EAAcpK,QAAUL,EAAOK,QAAQkqB,MAAM9f,EAAcpK,SAAWL,EAAOK,QAC7E,CAAEynC,eAAgB,CAAE3jC,SAAUpT,EAAO+T,SAAU8uB,EAAM9uB,eAMnDA,SAAU0iC,EAASl3B,OAAOxL,UAE5B1C,UAAWolC,EAASplC,UACpBuiC,mBAAmB,GAIrB6C,EAASl3B,OAAOrM,eAAe7K,UAG/B,MAAM2uC,EAA0B,CAC9Bz3B,OAAQ/O,EAAAuB,oBAAoBC,sBAAsBtrB,KAAKstC,aACpD9hB,QAAQ,CACP9e,KAAM6b,EAAO7b,KACbY,QAAS,CAAE6uC,EAAOqT,GAClB5mC,QAASL,EAAOK,QAAQ9c,IAAIie,EAAAwmC,YAAYC,iBAAkBxwD,KAAKqrD,iBAEnE1gC,UAAW0kC,EAAwC5jC,QAChD+P,WAAW,CAAE2gB,EAAMxxB,UAAW6kC,EAAO7kC,YAAa,GACrDuiC,mBAAmB,GAIf4C,EAA0BE,EAGhC,OAFAF,EAAUW,QAAQH,GAEX,CACLzsD,aAAc7D,KAAKstC,aAAa9hB,QAAQ,CACtC9e,KAAM6b,EAAO7b,KACbY,QAASwiD,EACTlnC,QAASL,EAAOK,UAElBmkC,qBAAsB,CACpB2D,WAAYrE,EAAgBviD,QAAQqyC,GACpCsT,YAAapD,EAAgBviD,QAAQimD,IAG3C,CAEO,yBAAMnE,CACXrjC,EACA4qB,GAGA,GAAI5qB,EAAOK,QAAQthB,IAAIyiB,EAAAwmC,YAAYC,oBAAsBxwD,KAAKqrD,aAC5D,MAAM,IAAItpD,MAAM,SAAS/B,KAAKgK,sCAGhCmpC,EAAY,IAAKA,GAEjB,MAAM,MAAEgJ,EAAK,OAAEqT,EAAM,UAAEM,SAAoB9vD,KAAKusD,gBAAgBhkC,EAAOjb,QACpEnI,KAAI,CAACk/B,EAAOhjC,KAAM,IAAMgjC,EAAOhX,SAAU8lB,EAAU9xC,OAAQknB,EAAOK,SAG/DoK,EAAiDlJ,EAAAuB,oBAAoBoE,mBAAmB+/B,EAAO7kC,WACrG,IAAKqI,EACH,MAAM,IAAIjxB,MAAM,SAAS/B,KAAKgK,oDAEhC,MAAMqjD,EAAmBmC,EAAO7kC,UAC1B2iC,QAAsBt6B,EAAcxD,OAAO8D,iBAAiB/K,EAAOK,SACzE,IAAKkB,EAAAuB,oBACFoP,yBAAyB6yB,EAAeD,EAAkB,CAAEgD,gBAAgB,IAC7E,MAAM,IAAItuD,MAAM,SAAS/B,KAAKgK,6DAIhCmpC,EAAY,CAAEgJ,EAAM9uB,SAAUmiC,EAAOniC,YAAayiC,EAAU3qD,KAAIwrD,GAAUA,EAAOtjC,YACjF,MAAMw+B,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,IACpD,YAAEsa,SAAsBztD,KAAKwtD,wBAAwBhiC,QAAQ,CACjEle,QAAS,CAAE6uC,EAAOqT,GAClB5mC,QAASL,EAAOK,UAEZ+kC,EAAuBmC,EAC1B9yB,QAAO,CAAC4zB,EAAKD,IAAWC,EAAMD,EAAOtjC,SAASO,YAAY1tB,MAAQF,KAAK0tD,qBAAqB,GAE/F,MAAO,CACLrwB,WAAYowB,EAAcztD,KAAK0tD,oBAC7B8B,EAAOniC,SAASO,YAAY1tB,MAAQytD,EACtC1B,eAAgB9P,EAAM9uB,SAASO,YAAY1tB,MAC3CgsD,cAAe/P,EAAM9uB,SAASO,YAAY1tB,MAC1C0oD,YAAaiD,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GACtFF,EAAoB,GAAK8B,EAAuB5B,EAAiB,GAEvE,EArMF7nD,EAAAA,wCAAAmrD,EAMyBA,EAAA5jC,QAAU,IAAItB,EAAAyF,ihBjGlCvCpnB,EAAA0a,EAAA,OAAAhf,qHkGAA,MAAA4lB,EAAA5G,EAAA,OASA8nC,EAAA9nC,EAAA,OAIAiH,EAAAjH,EAAA,OAMA,MAAa2tC,UAAkC7F,EAAAG,aAM7Cn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,iBACdC,aAAc,EACdgE,iBAAiB,EACjBlD,iBAAiB,EACjB2B,QAAQ,GAEZ,CAQO,qBAAMxB,CACXj/C,EACAsb,GAEA,aAAc5oB,KAAKitD,wBAAwBzhC,QAAQ,CAAEle,UAASsb,aAAYtb,OAC5E,CAEU,eAAMk+C,CAAUjjC,GAExB,MAAMjb,QAA8BtN,KAAKusD,sBACjCvB,EAAAG,aAAamB,wBAAwB,IAAK/jC,EAAOjb,UACvDib,EAAOK,SAEHkoC,EAAiBxjD,EAAQ,GACzByjD,EAAiBzjD,EAAQ,GAC/BA,EAAQwV,OAAO,EAAG,GAGlB,MAAMkuC,EAAyB,CAC7Bn4B,OAAQ/O,EAAAuB,oBAAoBC,sBAAsBtrB,KAAKstC,aACpD9hB,QAAQ,CAAE9e,KAAM6b,EAAO7b,KAAMY,QAAS,CAAEwjD,EAAgBC,GAAkBnoC,QAASL,EAAOK,WAC7F+B,UAAWkmC,EAA0BplC,QAClC+P,WAAW,CAAEs1B,EAAenmC,UAAWomC,EAAepmC,YAAa,IAGxE,OADArd,EAAQ/J,KAAKytD,GACN,CACLntD,aAAc7D,KAAKstC,aAAa9hB,QAAQ,CACtC9e,KAAM6b,EAAO7b,KACbY,UACAsb,QAASL,EAAOK,UAGtB,CAEU,yBAAMgjC,CACdrjC,EACA4qB,GAEAA,EAAY,IAAKA,GAEjB,MAAM8d,QAA4BjxD,KAAKusD,gBAAgBhkC,EAAOjb,QAC3DnI,KAAI,CAACk/B,EAAOhjC,KAAM,IAAMgjC,EAAOhX,SAAU8lB,EAAU9xC,OAAQknB,EAAOK,SACrEuqB,EAAY8d,EAAoB9rD,KAAIk/B,GAASA,EAAMhX,WACnD,MAAMw+B,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,GAE1D,MAAO,CACL9V,WAAY8V,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,MACpEizC,EAAU3uC,MAAM,GAAGw4B,QAAO,CAACk0B,EAAK7jC,IAAa6jC,EAAM7jC,EAASO,YAAY1tB,OAAO,GACjF+rD,eAAgB,EAChBC,cAAe,EACftD,YAAaiD,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GACtFF,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GAC3E5Y,EAAU3uC,MAAM,GAAGw4B,QAAO,CAAC4wB,EAAKvgC,EAAUhsB,IAAMusD,EAAM/B,EAAoBrnD,MAAM,GAAGnD,GACjFgsB,EAASO,YAAY1tB,MAAQ6rD,EAAiBvnD,MAAM,GAAGnD,IAAI,GAEnE,EA/EF6C,EAAAA,0BAAA2sD,EAIyBA,EAAAplC,QAAU,IAAItB,EAAAyF,ihBlGvBvCpnB,EAAA0a,EAAA,OAAAhf,kHmGCA,MAAA8mD,EAAA9nC,EAAA,OAGA+nC,EAAA/nC,EAAA,MAKA,MAAaiuC,UAA+BnG,EAAAG,aAC1Cn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,cACdC,aAAc,EACdc,iBAAiB,GAErB,CAEU,eAAMZ,CAAUjjC,GAOxB,MAAO,CACL1kB,OAAQ,CACN6I,KAAM,WACN8f,eATS,IAAIy+B,EAAA1qC,eACfgI,EAAOjb,QAAQ,GAAGurB,OAAOrM,eACzBjE,EAAOjb,QAAQ,GAAGurB,OAAOrM,eACnBw+B,EAAAG,aAAazK,aACnB,CAAEtzB,WAAW,IAMXC,SAAUP,eAAiB9sB,KAAK2rD,wBAC9BpjC,EAAOjb,cACD09C,EAAAG,aAAaM,aAAaljC,EAAOjb,SACvCib,EAAOK,UAIf,CAEU,yBAAMgjC,CACdrjC,EACA4qB,GAEA,MAAM0Y,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,GAC1D,MAAO,CACL9V,WAAY8V,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,MACtE+rD,eAAgB,EAChBC,cAAe,EACftD,YAAaiD,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GACtFF,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GAEjF,EA3CF7nD,EAAAA,uBAAAitD,2gBnGTA3oD,EAAA0a,EAAA,OAAAhf,4GoGAA,MAAAykC,EAAAzlB,EAAA,OAGA8nC,EAAA9nC,EAAA,OAEAiQ,EAAAjQ,EAAA,OAEA8G,EAAA9G,EAAA,OAKA,MAAakuC,UAAyBpG,EAAAG,aAGpCn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,OACdC,aAAc,GAElB,CAEgB,UAAMrhD,CAAKse,GAEzB,GAAIA,EAAOjb,QAAQ/L,OAAS,EAC1B,MAAM,IAAIQ,MAAM,SAAS/B,KAAKgK,mCAEhC,aAAahK,KAAK4rD,qBACpB,CAEU,eAAMJ,CAAUjjC,GACxB,MAAMsD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BxgB,EAAOK,SAC/F,MAAO,CACL/kB,OAAQ,CACN2oB,eAAgB,IAAIxC,EAAA0J,cAA4B,CAAE7H,EAAgBa,YAAc,CAAEU,WAAW,IAC7FC,SAAUA,IAAMxnB,QAAQC,QAAQ,CAC9BlF,MAAO,IAAIuyB,EAAAQ,wBACX/F,YAAa,CAAElhB,KAAM,QAASxM,MAAO,GACrC0zB,kBAAkB,EAClB5Q,UAAW,KAEbtW,KAAM,YAGZ,CAEU,yBAAMk/C,GACd,MAAO,CACLvuB,WAAY,EACZ4uB,eAAgB,EAChBC,cAAe,EACftD,YAAa,EAEjB,EA1CF1kD,EAAAA,iBAAAktD,ygBpGZA5oD,EAAA0a,EAAA,OAAAhf,8GqGCA,MAAA8mD,EAAA9nC,EAAA,OAMA,MAAamuC,UAA2BrG,EAAAG,aACtCn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,SACdC,aAAc,IAEhBtrD,KAAKsxD,eAAgB,CACvB,CAEgB,UAAMrnD,CAAKse,GAEzB,GAA8B,IAA1BA,EAAOjb,QAAQ/L,OACjB,MAAM,IAAIQ,MAAM,SAAS/B,KAAKgK,qCAEhC,aAAahK,KAAK4rD,qBACpB,CAEU,eAAMJ,CAAUjjC,GACxB,MAAO,CACL1kB,OAAQ0kB,EAAOjb,QAAQ,GAAGurB,OAE9B,CAEU,yBAAM+yB,GACd,MAAO,CACLvuB,WAAY,EACZ4uB,eAAgB,EAChBC,cAAe,EACftD,YAAa,EAEjB,EA/BF1kD,EAAAA,mBAAAmtD,2gBrGPA7oD,EAAA0a,EAAA,OAAAhf,qHsGCA,MAAA8mD,EAAA9nC,EAAA,OAGA+nC,EAAA/nC,EAAA,MAKA,MAAaquC,UAAkCvG,EAAAG,aAC7Cn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,iBACdC,aAAc,EACdC,yBAAyB,GAE7B,CAEO,eAAMC,CAAUjjC,GACrB,MAAM4qB,QAAkB6X,EAAAG,aAAaM,aAAaljC,EAAOjb,SACnD0V,EAAYgoC,EAAAG,aAAaO,qBAAqBvY,GAOpD,MAAO,CACLtvC,OAAQ,CACN6I,KAAM,WACN8f,eATS,IAAIy+B,EAAAzqC,kBACf+H,EAAOjb,QAAQ,GAAGurB,OAAOrM,eACzBjE,EAAOjb,QAAQ,GAAGurB,OAAOrM,gBACzB6X,GAASktB,EAA0BnvC,KAAKiiB,EAAOrhB,IACzCgoC,EAAAG,aAAazK,cAMjBrzB,SAAUP,eAAiB9sB,KAAK2rD,wBAAwBpjC,EAAOjb,QAAS6lC,EAAW5qB,EAAOK,UAGhG,CAEU,yBAAMgjC,CACdrjC,EACA4qB,GAEA,MAAM0Y,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,GAC1D,MAAO,CACL9V,WAAY8V,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,MACtE+rD,eAAgB9Y,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,MAC1EgsD,cAAe,EACftD,YAAaiD,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GACtFF,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GAEjF,EAzCF7nD,EAAAA,0BAAAqtD,2gBtGTA/oD,EAAA0a,EAAA,OAAAhf,sHuGAA,MAAA4lB,EAAA5G,EAAA,OAEA8nC,EAAA9nC,EAAA,OAMAsuC,EAAAtuC,EAAA,MAKA,MAAauuC,UAAmCzG,EAAAG,aAC9Cn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,aACdC,aAAc,EACdc,iBAAiB,GAErB,CAEO,eAAMZ,CAAUjjC,GACrB,MAAMzmB,EAASymB,EAAOjb,QAAQ,GAAGurB,OAC3BA,EAAStQ,EAAOjb,QAAQ,GAAGurB,OAE3Bsa,QAAkB6X,EAAAG,aAAaM,aAAaljC,EAAOjb,SACnD4iD,EAAkClF,EAAAG,aAAaO,qBAAqBvY,GAC1E,GAAI+c,EAAgB3uD,OAAS,EAAG,CAK9B,MAAM4c,EAAuB,IAAIqzC,EAAAE,cAAcxB,GACzC1jC,EAAiB,IAAI1C,EAAAy/B,2BAA0Bz8B,gBAC7C,IAAIjnB,SAASC,IACjBhE,EAAO0qB,eAAezR,GAAG,QAAQ6E,GAAQzB,EAAMM,IAAImB,KACnD9d,EAAO0qB,eAAezR,GAAG,MAAOjV,GAChChE,EAAO0qB,eAAezR,GAAG,SAAU5X,IACjCqpB,EAAe9oB,KAAK,QAASP,EAAM,GACnC,IAEG01B,EAAOrM,eAAevnB,QAAO2a,IAASzB,EAAMwzC,SAAS/xC,OAC3D,CACDwN,WAAW,EACXo8B,OAAAA,GACE1nD,EAAO0qB,eAAe7K,UACtBkX,EAAOrM,eAAe7K,SACxB,IAEF,MAAO,CACL9d,OAAQ,CACN6I,KAAM,WACN8f,iBACA,cAAMa,GACJ,MAAMukC,QAAuB/4B,EAAOxL,WAC9Boc,QAAuB5Q,EAAOxL,WACpC,MAAO,IACFoc,EACH7V,iBAAkBg+B,EAAeh+B,kBAAoB6V,EAAe7V,iBAExE,GAGN,CAIA,OADA9xB,EAAO0qB,eAAe7K,UACf,CACL9d,OAAQg1B,EAEZ,CAEU,yBAAM+yB,CACdrjC,EACA4qB,GAEA,MAAM0Y,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,GAC1D,MAAO,CAIL9V,WAAgF,MAAnE8V,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,OACvE+rD,eAAgB9Y,EAAU,GAAGvlB,YAAY1tB,MACzCgsD,cAAe/Y,EAAU,GAAGvlB,YAAY1tB,MACxC0oD,YAAaiD,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GACtFF,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GAEjF,EA7EF7nD,EAAAA,2BAAAutD,uGCXA,MAAAvnC,EAAAhH,EAAA,OASA,MAAawuC,EAIX1iD,WAAAA,CAAmB7N,GAFF,KAAAye,KAAmB,CAAC,EAGnC5f,KAAKmB,KAAOA,CACd,CAEU,eAAO0wD,CAASx9B,GACxB,OAAOA,GAA0B,aAAlBA,EAAK7G,UAA0B,EAAAtD,EAAA8D,cAAaqG,GAAQ,EACrE,CAMO5V,GAAAA,CAAIiO,GACT,GAAI1sB,KAAK8xD,gBAAgBplC,GAAW,CAClC,IAAIqlC,EAAS/xD,KAAK4f,KAClB,IAAK,MAAMnf,KAAOT,KAAKmB,KAAM,CAC3B,MAAM6wD,EAAUN,EAAcG,SAASnlC,EAASplB,IAAI7G,IACpD,IAAIwxD,EAAYF,EAAOC,GAClBC,IACHA,EAAYF,EAAOC,GAAW,CAAC,GAEjCD,EAASE,CACX,CACF,CACF,CAOON,QAAAA,CAASjlC,GAEd,QAAK1sB,KAAK8xD,gBAAgBplC,IAInB1sB,KAAKkyD,kBAAkBxlC,EAAU1sB,KAAKmB,KAAM,CAAEnB,KAAK4f,MAC5D,CAEUkyC,eAAAA,CAAgBplC,GACxB,IAAIylC,GAAY,EAChB,IAAK,MAAM1xD,KAAOT,KAAKmB,KACrB,GAAIurB,EAASplB,IAAI7G,GAAM,CACrB0xD,GAAY,EACZ,KACF,CAEF,OAAOA,CACT,CAEUD,iBAAAA,CAAkBxlC,EAAoBvrB,EAAsBixD,GACpE,GAAoB,IAAhBjxD,EAAKI,OACP,OAAO,EAGT,IAAId,GAEFA,KAAQU,GAASA,EACnB,IAAK,MAAMye,KAAQwyC,EAAa,CAE9B,MAAMJ,EAAUN,EAAcG,SAASnlC,EAASplB,IAAI7G,IACpD,GAAIuxD,EAAS,CAEX,MAAMK,EAAW,CAAEzyC,EAAKoyC,GAAUpyC,EAAK,KAAM3a,OAAO+iC,SACpD,GAAwB,IAApBqqB,EAAS9wD,OACX,SAEF,GAAIvB,KAAKkyD,kBAAkBxlC,EAAUvrB,EAAMkxD,GACzC,OAAO,CAEX,KAAO,CAEL,IAAIA,EAAWjxD,OAAOD,KAAKye,GAAMza,KAAImtD,GAAU1yC,EAAK0yC,KAIpD,GAHwB,IAApBD,EAAS9wD,SACX8wD,EAAW,CAAC,CAAC,IAEXryD,KAAKkyD,kBAAkBxlC,EAAUvrB,EAAMkxD,GACzC,OAAO,CAEX,CACF,CACA,OAAO,CACT,EAvFFnuD,EAAAA,cAAAwtD,2gBxGXAlpD,EAAA0a,EAAA,OAAAhf,iHyGAA,MAAA4lB,EAAA5G,EAAA,OAEA8nC,EAAA9nC,EAAA,OAUA,MAAaqvC,UAA8BvH,EAAAG,aACzCn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,QACbC,aAAc,OACdC,aAAc,GAElB,CAEO,eAAME,CAAUjjC,GACrB,MAAMzmB,EAASymB,EAAOjb,QAAQ,GAAGurB,OAC3BA,EAAStQ,EAAOjb,QAAQ,GAAGurB,OAE3Bsa,QAAkB6X,EAAAG,aAAaM,aAAaljC,EAAOjb,SACnD4iD,EAAkClF,EAAAG,aAAaO,qBAAqBvY,GAC1E,GAAI+c,EAAgB3uD,OAAS,EAAG,CAK9B,MAAM4c,EAAiC,CAAC,EAClCqO,EAAiB,IAAI1C,EAAAy/B,2BAA0Bz8B,gBAC7C,IAAIjnB,SAASC,IACjBhE,EAAO0qB,eAAezR,GAAG,QAAS6E,IAChCzB,EAAM6sC,EAAAG,aAAaqH,gBAAgB5yC,EAAMswC,KAAoB,CAAI,IAEnEpuD,EAAO0qB,eAAezR,GAAG,MAAOjV,GAChChE,EAAO0qB,eAAezR,GAAG,SAAU5X,IACjCqpB,EAAe9oB,KAAK,QAASP,EAAM,GACnC,IAEG01B,EAAOrM,eAAevnB,QAAO2a,IAASzB,EAAM6sC,EAAAG,aAAaqH,gBAAgB5yC,EAAMswC,QACrF,CACD9iC,WAAW,EACXo8B,OAAAA,GACE1nD,EAAO0qB,eAAe7K,UACtBkX,EAAOrM,eAAe7K,SACxB,IAEF,MAAO,CACL9d,OAAQ,CACN6I,KAAM,WACN8f,iBACAa,SAAUwL,EAAOxL,UAGvB,CAIA,OADAvrB,EAAO0qB,eAAe7K,UACf,CACL9d,OAAQg1B,EAEZ,CAEU,yBAAM+yB,CACdrjC,EACA4qB,GAEA,MAAM0Y,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,GAC1D,MAAO,CACL9V,WAAY8V,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,MACtE+rD,eAAgB9Y,EAAU,GAAGvlB,YAAY1tB,MACzCgsD,cAAe/Y,EAAU,GAAGvlB,YAAY1tB,MACxC0oD,YAAaiD,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GACtFF,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GAEjF,EApEF7nD,EAAAA,sBAAAquD,2gBzGZA/pD,EAAA0a,EAAA,OAAAhf,oH0GCA,MAAAuuD,EAAAvvC,EAAA,OACAylB,EAAAzlB,EAAA,OAGA4G,EAAA5G,EAAA,OAEA8nC,EAAA9nC,EAAA,OACA6G,EAAA7G,EAAA,OAGAiH,EAAAjH,EAAA,OAKA,MAAawvC,UAAiC1H,EAAAG,aAM5Cn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,WACbC,aAAc,OACdC,aAAc,EACdc,iBAAiB,EACjB2B,QAAQ,GAEZ,CAEU,eAAMvC,CAAUjjC,GACxB,MAAMsD,QAAwB8c,EAAAG,gBAAgB/gC,OAAO/H,KAAK+oC,6BAA8BxgB,EAAOK,SAE/FL,EAAOjb,QAAQ,GAAGurB,OAAOrM,eAAejR,QAGxC,MAAMw5B,EAAaxsB,EAAOK,QACvB9c,IAAIie,EAAAoB,mBAAmBujC,uBAAwBnmC,EAAOjb,QAAQ,GAAGurB,OAAOxL,YACxEvhB,IAAIie,EAAAoB,mBAAmBwjC,mBAAoB,OAAQpmC,EAAOjb,QAAQ,GAAGurB,OAAOxL,aAkB/E,MAAO,CACLxpB,OAAQ,CACN6I,KAAM,WACN8f,eApBmCimC,EAAA5E,sBAAsBG,iBAC3DhuD,KAAKiuD,UACL1lC,EAAOjb,QAAQ,GAAGurB,OAAOrM,eACzB,CAAEjE,EAAOjb,QAAQ,GAAGqd,YACpBmC,MAAMoP,EAAiC0yB,KAGrC,MAAMjkC,EAAYuR,EAAW,GAI7B,OAHepS,EAAAuB,oBAAoBC,sBAAsBtrB,KAAKurB,uBAAuBC,QACnF,CAAEb,YAAW/B,QAASmsB,GAAYjpC,IAAIie,EAAAoB,mBAAmBu1B,aAAckO,MAE3DpiC,cAAc,IAE9B,EACAX,GAOEwB,SAAUP,eAAiB9sB,KAAK2rD,wBAC9BpjC,EAAOjb,cACD09C,EAAAG,aAAaM,aAAaljC,EAAOjb,SACvCib,EAAOK,QACP,CAAEgL,kBAAkB,IACpB,IAIR,CAEO,yBAAMg4B,CACXrjC,EACA4qB,GAGA,GAA4D,IAAxD6X,EAAAG,aAAaO,qBAAqBvY,GAAW5xC,OAC/C,MAAM,IAAIQ,MAAM,SAAS/B,KAAKgK,4DAGhC,MAAM6hD,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,GAG1D,GAAI5qB,EAAOjb,QAAQ,GAAGqd,UAAUje,OAASyd,EAAAyE,QAAQC,MAAM4Q,QACrDlX,EAAOjb,QAAQ,GAAGqd,UAAUje,OAASyd,EAAAyE,QAAQC,MAAMoS,MACnD,MAAM,IAAIl/B,MAAM,SAAS/B,KAAKgK,oDAIhC,MAAMyjD,SAAqBztD,KAAKwtD,wBAAwBhiC,QAAQ,CAC9Dle,QAASib,EAAOjb,QAChBsb,QAASL,EAAOK,WACd6kC,YAAcztD,KAAK0tD,oBAEvB,MAAO,CACLrwB,WAAY8V,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,MAAQutD,EAC9ExB,eAAgB,EAChBC,cAAe,EACftD,YAAaiD,EAAoB,GAC/B1Y,EAAU,GAAGvlB,YAAY1tB,OACvB6rD,EAAiB,GACjBF,EAAoB,GACpB4B,EAActa,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,IAGxE,EA5FF7nD,EAAAA,yBAAAwuD,2gB1GhBAlqD,EAAA0a,EAAA,OAAAhf,oH2GAA,MAAA4lB,EAAA5G,EAAA,OACA8nC,EAAA9nC,EAAA,OAUA8G,EAAA9G,EAAA,OACAgH,EAAAhH,EAAA,OACAyvC,EAAAzvC,EAAA,OACA0vC,EAAA1vC,EAAA,OAMA,MAAa2vC,UAAiC7H,EAAAG,aAG5Cn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,WACbC,aAAc,QAAQ5mD,EAAK2nD,gBAAkB,QAAU,SAAS3nD,EAAKquD,SAAW,WAAa,gBAC7FxH,aAAc,EACdc,gBAAiB3nD,EAAK2nD,gBACtBb,yBAAyB,GAE7B,CAEO,qBAAOwH,CAAkBC,EAAgB9C,GAC9C,OAAO8C,EACL,IAAIJ,EAAAK,mBACF/C,GACC77B,GAA+BA,GAA0B,aAAlBA,EAAK7G,UAA0B,EAAAtD,EAAA8D,cAAaqG,GAAQ,KAE9F,IAAIs+B,EAAAO,iBAAiBhD,EAAiBlF,EAAAG,aAAaqH,gBACvD,CAEO,eAAMhH,CAAUjjC,GACrB,MAAMzmB,EAASymB,EAAOjb,QAAQ,GAAGurB,OAC3BA,EAAStQ,EAAOjb,QAAQ,GAAGurB,OAE3Bsa,QAAkB6X,EAAAG,aAAaM,aAAaljC,EAAOjb,SACnD4iD,EAAkClF,EAAAG,aAAaO,qBAAqBvY,GAE1E,IAAI3mB,EAqGJ,OAjGEA,EAHExsB,KAAK8yD,SAGU,IAAIhpC,EAAAy/B,2BAA0Bz8B,UAE7C,MAAM3O,EAAwC00C,EAC3CE,eAAe/yD,KAAKosD,gBAAiB8D,GAaxC,aAZM,IAAIrqD,SAASC,IACjBhE,EAAO0qB,eAAezR,GAAG,QAAS2R,KACfvO,EAAMg1C,SAASzmC,IAAavO,EAAMwuB,IAAIjgB,EAAU,KACxDnpB,KAAKmpB,EAAS,IAEzB5qB,EAAO0qB,eAAezR,GAAG,MAAOjV,GAChChE,EAAO0qB,eAAezR,GAAG,SAAU5X,IACjCqpB,EAAe9oB,KAAK,QAASP,EAAM,GACnC,IAIG,IAAI6mB,EAAArJ,uBACTkY,EAAOrM,eACP,CACEC,eAAiBC,GAAwD,IAAI1C,EAAA0J,cAC1DvV,EAAM7W,IAAIolB,GAAUwmB,OAClC/tC,KAAIiuD,GAAiBpI,EAAAG,aAAazK,aAAah0B,EAAU0mC,KACzDnuD,QAAOu9C,GAAW,OAANA,IACf,CAAEp1B,WAAW,IAEfghC,UAAU,EACVhhC,WAAW,GAEd,GACA,CACDA,WAAW,EACXo8B,OAAAA,GACE1nD,EAAO0qB,eAAe7K,UACtBkX,EAAOrM,eAAe7K,SACxB,IAMe,IAAImI,EAAAy/B,2BAA0Bz8B,UAG7C,MAAM3O,EAAwD00C,EAC3DE,eAAe/yD,KAAKosD,gBAAiB8D,GACxC,IAAImD,GAAc,EAiBlB,OAhBAvxD,EAAO0qB,eAAezR,GAAG,QAAS2R,KACfvO,EAAMg1C,SAASzmC,IAC9BvO,EAAMwuB,IAAIjgB,EAAU,IAAI1C,EAAAgD,iBAA+B,CAAEI,WAAW,MACrDa,MAAMvB,EAAS,IAElC5qB,EAAO0qB,eAAezR,GAAG,OAAO,KAC9B,IAAK,MAAMzQ,KAAY6T,EAAM9Q,SAC3B/C,EAASiR,QAEX83C,GAAc,CAAK,IAErBvxD,EAAO0qB,eAAezR,GAAG,SAAU5X,IACjCqpB,EAAe9oB,KAAK,QAASP,EAAM,IAI9B,IAAI6mB,EAAArJ,uBACTkY,EAAOrM,eACP,CACEC,eAAiBC,IAEf,IAAI4mC,EAA2Cn1C,EAAM7W,IAAIolB,GAezD,OAXyB,IAArB4mC,EAAU/xD,SAEV+xD,EADED,EACU,CAAEl1C,EAAMwuB,IAAIjgB,EAAU,IAAI1C,EAAAgD,iBAA+B,CAAEI,WAAW,MAEtE,IAMC,IAAIpD,EAAAmlB,cAA4BmkB,EAAUnuD,KAAI4nB,GAAMA,EAAGte,UAAU,CAAE2e,WAAW,IAC/EjoB,KAAIiuD,GAAiBpI,EAAAG,aAAazK,aAAah0B,EAAU0mC,IAAe,EAE1FhF,UAAU,EACVhhC,WAAW,GAEd,GACA,CACDA,WAAW,EACXo8B,OAAAA,GACE1nD,EAAO0qB,eAAe7K,UACtBkX,EAAOrM,eAAe7K,SACxB,IAIG,CACL9d,OAAQ,CACN6I,KAAM,WACN8f,iBACAa,SAAUP,eAAiB9sB,KAAK2rD,wBAC9BpjC,EAAOjb,cACD09C,EAAAG,aAAaM,aAAaljC,EAAOjb,SACvCib,EAAOK,QACP,CAAEgL,kBAAkB,IACpB,IAIR,CAEU,yBAAMg4B,CACdrjC,EACA4qB,GAEA,MAAM0Y,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,GAC1D,IAAI9V,EAAa8V,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,MAS3E,OARKF,KAAKosD,kBAER/uB,GAAc,IAEZr9B,KAAK8yD,WAEPz1B,GAAc,IAET,CACLA,aACA4uB,eAAgB9Y,EAAU,GAAGvlB,YAAY1tB,MACzCgsD,cAAelsD,KAAK8yD,SAAW3f,EAAU,GAAGvlB,YAAY1tB,MAAQ,EAChE0oD,YAAaiD,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GACtFF,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GAEjF,EAvKF7nD,EAAAA,yBAAA2uD,yGCXA3uD,EAAAA,iBAAA,MAKE8K,WAAAA,CAAmB7N,EAAsBoyD,GACvCvzD,KAAKmB,KAAOA,EACZnB,KAAKuzD,OAASA,EACdvzD,KAAKme,MAAQ,CAAC,CAChB,CAEOwuB,GAAAA,CAAIjgB,EAAwBxsB,GACjC,OAAOF,KAAKme,MAAMne,KAAKuzD,OAAO7mC,EAAU1sB,KAAKmB,OAASjB,CACxD,CAEOoH,GAAAA,CAAIolB,GACT,MAAM41B,EAAItiD,KAAKmzD,SAASzmC,GACxB,OAAO41B,EAAI,CAAEA,GAAM,EACrB,CAEO6Q,QAAAA,CAASzmC,GACd,OAAO1sB,KAAKme,MAAMne,KAAKuzD,OAAO7mC,EAAU1sB,KAAKmB,MAC/C,CAEOkM,MAAAA,GACL,OAAOjM,OAAOiM,OAAOrN,KAAKme,MAC5B,4GCxBFja,EAAAA,mBAAA,MAKE8K,WAAAA,CAAmB7N,EAAsBoyD,GAHxB,KAAA3zC,KAAsB,CAAC,EAItC5f,KAAKmB,KAAOA,EACZnB,KAAKuzD,OAASA,CAChB,CAOO5mB,GAAAA,CAAIjgB,EAAoBxsB,GAC7B,GAAIF,KAAK8xD,gBAAgBplC,GAAW,CAClC,IAAIqlC,EAA4B/xD,KAAK4f,KACrC,IAAK,IAAIve,EAAI,EAAGA,EAAIrB,KAAKmB,KAAKI,OAAQF,IAAK,CACzC,MAAMZ,EAAMT,KAAKmB,KAAKE,GAChB2wD,EAAUhyD,KAAKuzD,OAAO7mC,EAASplB,IAAI7G,IACzC,IAAIwxD,EAA4DF,EAAQC,GACnEC,IACHA,EAA8BF,EAASC,GAAW3wD,IAAMrB,KAAKmB,KAAKI,OAAS,EAAIrB,EAAQ,CAAC,GAE1F6xD,EAASE,CACX,CACF,CACA,OAAO/xD,CACT,CAEU4xD,eAAAA,CAAgBplC,GACxB,IAAIylC,GAAY,EAChB,IAAK,MAAM1xD,KAAOT,KAAKmB,KACrB,GAAIurB,EAASvf,IAAI1M,GAAM,CACrB0xD,GAAY,EACZ,KACF,CAEF,OAAOA,CACT,CAOO7qD,GAAAA,CAAIolB,GAET,OAAK1sB,KAAK8xD,gBAAgBplC,GAInB1sB,KAAKwzD,aAAa9mC,EAAU1sB,KAAKmB,KAAM,CAAEnB,KAAK4f,OAH5C,EAIX,CAEU4zC,YAAAA,CAAa9mC,EAAgCvrB,EAAsBixD,GAC3E,GAAoB,IAAhBjxD,EAAKI,OACP,OAAa6wD,EAGf,IAAI3xD,GAEFA,KAAQU,GAASA,EACnB,MAAMsyD,EAA2B,GACjC,IAAK,MAAM7zC,KAAQwyC,EAAa,CAE9B,MAAMJ,EAAUhyD,KAAKuzD,OAAO7mC,GAAUplB,IAAI7G,IAC1C,GAAIuxD,EAAS,CAEX,MAAMK,EAA6B,CAAEzyC,EAAKoyC,GAAUpyC,EAAK,KAAM3a,OAAO+iC,SACtE,GAAwB,IAApBqqB,EAAS9wD,OACX,SAEFkyD,EAAkBlwD,KAAKvD,KAAKwzD,aAAa9mC,EAAUvrB,EAAMkxD,GAC3D,KAAO,CAEL,MAAMA,EAA6BjxD,OAAOiM,OAAOuS,GACjD,GAAwB,IAApByyC,EAAS9wD,OACX,SAEFkyD,EAAkBlwD,KAAKvD,KAAKwzD,aAAa9mC,EAAUvrB,EAAMkxD,GAC3D,CACF,CACA,OAAOoB,EAAkBvgB,MAC3B,CAOOigB,QAAAA,CAASzmC,GAEd,GAAK1sB,KAAK8xD,gBAAgBplC,GAI1B,OAAO1sB,KAAK0zD,kBAAkBhnC,EAAU1sB,KAAKmB,KAAM,CAAEnB,KAAK4f,MAC5D,CAEU8zC,iBAAAA,CAAkBhnC,EAAoBvrB,EAAsBixD,GACpE,GAAoB,IAAhBjxD,EAAKI,OACP,OAAW6wD,EAAY,GAGzB,IAAI3xD,GAEFA,KAAQU,GAASA,EACnB,IAAK,MAAMye,KAAQwyC,EAAa,CAE9B,MAAMJ,EAAUhyD,KAAKuzD,OAAO7mC,EAASplB,IAAI7G,IACzC,GAAIuxD,EAAS,CAEX,MAAMK,EAA6B,CAAEzyC,EAAKoyC,GAAUpyC,EAAK,KAAM3a,OAAO+iC,SACtE,GAAwB,IAApBqqB,EAAS9wD,OACX,SAEF,MAAM+zB,EAAMt1B,KAAK0zD,kBAAkBhnC,EAAUvrB,EAAMkxD,GACnD,GAAI/8B,EACF,OAAOA,CAEX,KAAO,CAEL,MAAM+8B,EAA6BjxD,OAAOiM,OAAOuS,GACjD,GAAwB,IAApByyC,EAAS9wD,OACX,SAEF,MAAM+zB,EAAMt1B,KAAK0zD,kBAAkBhnC,EAAUvrB,EAAMkxD,GACnD,GAAI/8B,EACF,OAAOA,CAEX,CACF,CAEF,CAEOjoB,MAAAA,GACL,OAA4B,IAArBrN,KAAKmB,KAAKI,OAAe,GAAKvB,KAAKwzD,kBAAarzD,EAAWH,KAAKmB,KAAM,CAAEnB,KAAK4f,MACtF,4gB7GtJFpX,EAAA0a,EAAA,OAAAhf,0H8GCA,MAAA8mD,EAAA9nC,EAAA,OAKA+nC,EAAA/nC,EAAA,MAKA,MAAaywC,UAAuC3I,EAAAG,aAClDn8C,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EAAM,CACV2mD,YAAa,WACbC,aAAc,cACdC,aAAc,EACdc,iBAAiB,GAErB,CAEO,eAAMZ,CAAUjjC,GAOrB,MAAO,CACL1kB,OAAQ,CACN6I,KAAM,WACN8f,eATS,IAAIy+B,EAAA1qC,eACfgI,EAAOjb,QAAQ,GAAGurB,OAAOrM,eACzBjE,EAAOjb,QAAQ,GAAGurB,OAAOrM,eACnBw+B,EAAAG,aAAazK,aACnB,CAAE0N,UAAU,EAAMhhC,WAAW,IAM3BC,SAAUP,eAAiB9sB,KAAK2rD,wBAC9BpjC,EAAOjb,cACD09C,EAAAG,aAAaM,aAAaljC,EAAOjb,SACvCib,EAAOK,QACP,CAAEgL,kBAAkB,IACpB,IAIR,CAEU,yBAAMg4B,CACdrjC,EACA4qB,GAEA,MAAM0Y,EAAsBb,EAAAG,aAAaW,uBAAuB3Y,GAC1D4Y,EAAmBf,EAAAG,aAAaa,oBAAoB7Y,GAC1D,MAAO,CACL9V,WAAY8V,EAAU,GAAGvlB,YAAY1tB,MAAQizC,EAAU,GAAGvlB,YAAY1tB,MACtE+rD,eAAgB,EAChBC,cAAe,EACftD,YAAaiD,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GACtFF,EAAoB,GAAK1Y,EAAU,GAAGvlB,YAAY1tB,MAAQ6rD,EAAiB,GAEjF,EA7CF7nD,EAAAA,+BAAAyvD,0gB9GXAnrD,EAAA0a,EAAA,OAAAhf,8I+GCA,MAAA0vD,EAAA1wC,EAAA,OAGAiH,EAAAjH,EAAA,OAOA,MAAa2wC,UAAgDD,EAAAE,wBAI3D9kD,WAAAA,CACEvK,GAEA4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,MAAO,CAAEsjC,SAAU,GACrB,CAEO,qBAAOC,CAAetkC,GAC3B,IAAIukC,EAAO,EAaX,MAZiC,aAA7BvkC,EAAQ3E,QAAQyC,WAClBymC,GAAQ,GAEyB,aAA/BvkC,EAAQ9E,UAAU4C,UAA2BkC,EAAQhjB,OAASyd,EAAAyE,QAAQC,MAAMiH,OAC9Em+B,GAAQ,GAEsB,aAA5BvkC,EAAQ1E,OAAOwC,WACjBymC,GAAQ,GAEqB,aAA3BvkC,EAAQ9D,MAAM4B,WAChBymC,GAAQ,GAEHA,EAAO,CAChB,CAEO,mBAAOC,CACZC,EACAC,GAEA,MAAMC,EAAyB,GAwH/B,MArHoC,aAAhCF,EAAWppC,QAAQyC,UACjB2mC,EAAWppC,QAAQ2V,OAAO0zB,EAAWrpC,UACvCspC,EAAU9wD,KAAK+wD,EAAUC,WAEH,YAApBH,EAAW1nD,MAAsBynD,EAAWppC,QAAQ2V,OAAO0zB,EAAWxpC,YACxEypC,EAAU9wD,KAAK+wD,EAAUE,WAEvBL,EAAWppC,QAAQ2V,OAAO0zB,EAAWppC,SACvCqpC,EAAU9wD,KAAK+wD,EAAUG,WAEvBN,EAAWppC,QAAQ2V,OAAO0zB,EAAWxoC,QACvCyoC,EAAU9wD,KAAK+wD,EAAUI,aAGvBP,EAAWppC,QAAQ2V,OAAO0zB,EAAWrpC,UACvCspC,EAAU9wD,KAAK+wD,EAAUK,SAEH,YAApBP,EAAW1nD,MAAsBynD,EAAWppC,QAAQ2V,OAAO0zB,EAAWxpC,YACxEypC,EAAU9wD,KAAK+wD,EAAUM,SAEvBT,EAAWppC,QAAQ2V,OAAO0zB,EAAWppC,SACvCqpC,EAAU9wD,KAAK+wD,EAAUO,SAEvBV,EAAWppC,QAAQ2V,OAAO0zB,EAAWxoC,QACvCyoC,EAAU9wD,KAAK+wD,EAAUQ,UAKL,YAApBX,EAAWznD,OACyB,aAAlCynD,EAAWvpC,UAAU4C,UACnB2mC,EAAWvpC,UAAU8V,OAAO0zB,EAAWrpC,UACzCspC,EAAU9wD,KAAK+wD,EAAUS,WAEH,YAApBX,EAAW1nD,MAAsBynD,EAAWvpC,UAAU8V,OAAO0zB,EAAWxpC,YAC1EypC,EAAU9wD,KAAK+wD,EAAUU,WAEvBb,EAAWvpC,UAAU8V,OAAO0zB,EAAWppC,SACzCqpC,EAAU9wD,KAAK+wD,EAAUW,WAEvBd,EAAWvpC,UAAU8V,OAAO0zB,EAAWxoC,QACzCyoC,EAAU9wD,KAAK+wD,EAAUY,aAGvBf,EAAWvpC,UAAU8V,OAAO0zB,EAAWrpC,UACzCspC,EAAU9wD,KAAK+wD,EAAUa,SAEH,YAApBf,EAAW1nD,MAAsBynD,EAAWvpC,UAAU8V,OAAO0zB,EAAWxpC,YAC1EypC,EAAU9wD,KAAK+wD,EAAUc,SAEvBjB,EAAWvpC,UAAU8V,OAAO0zB,EAAWppC,SACzCqpC,EAAU9wD,KAAK+wD,EAAUe,SAEvBlB,EAAWvpC,UAAU8V,OAAO0zB,EAAWxoC,QACzCyoC,EAAU9wD,KAAK+wD,EAAUgB,WAMI,aAA/BnB,EAAWnpC,OAAOwC,UAChB2mC,EAAWnpC,OAAO0V,OAAO0zB,EAAWrpC,UACtCspC,EAAU9wD,KAAK+wD,EAAUiB,WAEH,YAApBnB,EAAW1nD,MAAsBynD,EAAWnpC,OAAO0V,OAAO0zB,EAAWxpC,YACvEypC,EAAU9wD,KAAK+wD,EAAUkB,WAEvBrB,EAAWnpC,OAAO0V,OAAO0zB,EAAWppC,SACtCqpC,EAAU9wD,KAAK+wD,EAAUmB,WAEvBtB,EAAWnpC,OAAO0V,OAAO0zB,EAAWxoC,QACtCyoC,EAAU9wD,KAAK+wD,EAAUoB,aAGvBvB,EAAWnpC,OAAO0V,OAAO0zB,EAAWrpC,UACtCspC,EAAU9wD,KAAK+wD,EAAUqB,SAEH,YAApBvB,EAAW1nD,MAAsBynD,EAAWnpC,OAAO0V,OAAO0zB,EAAWxpC,YACvEypC,EAAU9wD,KAAK+wD,EAAUsB,SAEvBzB,EAAWnpC,OAAO0V,OAAO0zB,EAAWppC,SACtCqpC,EAAU9wD,KAAK+wD,EAAUuB,SAEvB1B,EAAWnpC,OAAO0V,OAAO0zB,EAAWxoC,QACtCyoC,EAAU9wD,KAAK+wD,EAAUwB,UAKK,aAA9B3B,EAAWvoC,MAAM4B,UACf2mC,EAAWvoC,MAAM8U,OAAO0zB,EAAWrpC,UACrCspC,EAAU9wD,KAAK+wD,EAAUyB,WAEH,YAApB3B,EAAW1nD,MAAsBynD,EAAWvoC,MAAM8U,OAAO0zB,EAAWxpC,YACtEypC,EAAU9wD,KAAK+wD,EAAU0B,WAEvB7B,EAAWvoC,MAAM8U,OAAO0zB,EAAWppC,SACrCqpC,EAAU9wD,KAAK+wD,EAAU2B,WAEvB9B,EAAWvoC,MAAM8U,OAAO0zB,EAAWxoC,QACrCyoC,EAAU9wD,KAAK+wD,EAAU4B,aAGvB/B,EAAWvoC,MAAM8U,OAAO0zB,EAAWrpC,UACrCspC,EAAU9wD,KAAK+wD,EAAU6B,SAEH,YAApB/B,EAAW1nD,MAAsBynD,EAAWvoC,MAAM8U,OAAO0zB,EAAWxpC,YACtEypC,EAAU9wD,KAAK+wD,EAAU8B,SAEvBjC,EAAWvoC,MAAM8U,OAAO0zB,EAAWppC,SACrCqpC,EAAU9wD,KAAK+wD,EAAU+B,SAEvBlC,EAAWvoC,MAAM8U,OAAO0zB,EAAWxoC,QACrCyoC,EAAU9wD,KAAK+wD,EAAUgC,UAItBjC,CACT,CAEO,oCAAOkC,CACZpC,EACAC,GAEA,IAAIH,EAAOJ,EAAwC2C,kBAEnD,IAAK,MAAMC,KAAY5C,EAAwCK,aAAaC,EAAYC,GACtF,OAAQqC,GACN,KAAKnC,EAAUK,QACbV,GAAQ,EACR,MACF,KAAKK,EAAUM,QACbX,GAAQ,EACR,MACF,KAAKK,EAAUO,QACbZ,GAAQ,EACR,MACF,KAAKK,EAAUQ,QAGf,KAAKR,EAAUa,QACblB,GAAQ,EACR,MACF,KAAKK,EAAUc,QAEb,OAAO,EACT,KAAKd,EAAUe,QAGf,KAAKf,EAAUgB,QACbrB,GAAQ,EACR,MACF,KAAKK,EAAUqB,QACb1B,GAAQ,EACR,MACF,KAAKK,EAAUsB,QACb3B,GAAQ,EACR,MACF,KAAKK,EAAUuB,QACb5B,GAAQ,EACR,MACF,KAAKK,EAAUwB,QAGf,KAAKxB,EAAU6B,QAGf,KAAK7B,EAAU8B,QAGf,KAAK9B,EAAU+B,QAGf,KAAK/B,EAAUgC,QACbrC,GAAQ,EACR,MACF,KAAKK,EAAUC,UACbN,GAAQ,EACR,MACF,KAAKK,EAAUE,UACbP,GAAQ,EACR,MACF,KAAKK,EAAUG,UACbR,GAAQ,EACR,MACF,KAAKK,EAAUI,UAGf,KAAKJ,EAAUS,UAGf,KAAKT,EAAUU,UAGf,KAAKV,EAAUW,UAGf,KAAKX,EAAUY,UACbjB,GAAQ,EACR,MACF,KAAKK,EAAUiB,UACbtB,GAAQ,EACR,MACF,KAAKK,EAAUkB,UACbvB,GAAQ,EACR,MACF,KAAKK,EAAUmB,UACbxB,GAAQ,EACR,MACF,KAAKK,EAAUoB,UAGf,KAAKpB,EAAUyB,UAGf,KAAKzB,EAAU0B,UAGf,KAAK1B,EAAU2B,UAGf,KAAK3B,EAAU4B,UACbjC,GAAQ,EAKd,OAAOA,EAAOJ,EAAwC2C,iBACxD,CAEO,4BAAOE,CAAsBx6B,GAElC,MAAMT,EAA+C,GACrD,IAAK,MAAM9Q,KAAauR,EACtB/R,EAAAqL,KAAK8I,iBAAiB3T,EAAW,CAC/B,CAACR,EAAAyE,QAAQC,MAAM6G,SAAShG,IACtB+L,EAASl4B,KAAKmsB,IACP,GAET,CAACvF,EAAAyE,QAAQC,MAAMiH,MAAMhL,IACnB2Q,EAASl4B,KAAKunB,IACP,KAMb,IAAI6rC,EAAY,EACZC,EAAc,EAClB,IAAK,MAAMC,KAAYp7B,EACrB,IAAK,MAAMq7B,KAAYr7B,EACjBo7B,IAAaC,IACfH,GAAa9C,EAAwC0C,8BAA8BM,EAAUC,GAC7FF,KAMN,OAAoB,IAAhBA,EACK,EAIFD,EAAYC,EAAcn7B,EAC9BuB,QAAO,CAAC+5B,EAAQrnC,IAAYqnC,EAASlD,EAAwCG,eAAetkC,IAAU,EAC3G,CAEO,SAAMpH,CAAIC,GACf,OAAIA,EAAOjb,QAAQ/L,QAAU,EACpB,CAAEksD,YAAa,GAEjB,CACLA,YAAaoG,EACV6C,sBAAsBnuC,EAAOjb,QAAQnI,KAAIk/B,GAASA,EAAM1Z,aAE/D,EAGF,IAAY2pC,EA7TZpwD,EAAAA,wCAAA2vD,EAEgBA,EAAA2C,kBAAoB,GA2TpC,SAAYlC,GACVA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,sBACAA,EAAAA,EAAA,sBACAA,EAAAA,EAAA,sBACAA,EAAAA,EAAA,sBACAA,EAAAA,EAAA,sBACAA,EAAAA,EAAA,sBAEAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,yBACD,CAlCD,CAAYA,IAASpwD,EAAAA,UAATowD,EAAS,8gB/GxUrB9rD,EAAA0a,EAAA,MAAAhf,sIgHKA,MAAA8yD,EAAA9zC,EAAA,OAMA,MAAa+zC,UAAmDD,EAAAE,2BAC9DloD,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GAEf,GAAoB,eAAhBA,EAAO7nB,KACT,MAAO,CAAE2sB,SAAU,CAAEuG,kBAAkB,IAIzC,IAAIA,EAAmBrL,EAAO6qB,oBAAoBxf,iBAIlD,OAHIrL,EAAO8qB,kBAAkBzf,mBAC3BA,GAAmB,GAEd,CAAEvG,SAAU,CAAEuG,oBACvB,EArBF1vB,EAAAA,2CAAA+yD,2gBhHXAzuD,EAAA0a,EAAA,OAAAhf,iIiHKA,MAAA8yD,EAAA9zC,EAAA,OAOA,MAAai0C,UAA8CH,EAAAE,2BACzDloD,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GAEf,GAAoB,eAAhBA,EAAO7nB,KACT,MAAO,CAAE2sB,SAAU,CAAEO,YAAa,CAAElhB,KAAM,QAASxM,MAAO,KAI5D,MAAM0tB,EAAsC,IAAKrF,EAAO6qB,oBAAoBxlB,aAE5E,GAAIA,EAAYi7B,QAAS,CAEvB,GAAItgC,EAAO6qB,oBAAoBnN,eAAiBrY,EAAYi7B,SAC1Dj7B,EAAYi7B,UAAYtgC,EAAO8qB,kBAAkBzlB,YAAYi7B,QAE7D,MAAO,CAAEx7B,SAAU,CAAEO,YAAarF,EAAO8qB,kBAAkBzlB,cAG7D,IAAIrF,EAAO8qB,kBAAkBzlB,YAAYi7B,QAmBvC,MAAO,CAAEx7B,SAAU,CAAEO,gBAjBrB,GAAIA,EAAYi7B,UAAYtgC,EAAO8qB,kBAAkBzlB,YAAYi7B,SAC/DtgC,EAAO8qB,kBAAkB+jB,WAAaxpC,EAAYi7B,QAGlD,MAAO,CAAEx7B,SAAU,CAAEO,YAAarF,EAAO8qB,kBAAkBzlB,cAE7D,GAAIA,EAAYi7B,UAAYtgC,EAAO8qB,kBAAkBzlB,YAAYi7B,QAG/D,MAAO,CAAEx7B,SAAU,CAAEO,uBAIhBA,EAAYi7B,OAMvB,CAaA,OAXKtgC,EAAO8qB,kBAAkBzlB,aAAgB9pB,OAAO2qC,SAASlmB,EAAO8qB,kBAAkBzlB,YAAY1tB,QAK/C,aAA9CqoB,EAAO8qB,kBAAkBzlB,YAAYlhB,OACvCkhB,EAAYlhB,KAAO,YAErBkhB,EAAY1tB,OAASqoB,EAAO8qB,kBAAkBzlB,YAAY1tB,QAN1D0tB,EAAYlhB,KAAO,WACnBkhB,EAAY1tB,MAAQ4D,OAAO+pC,mBAQtB,CAAExgB,SAAU,CAAEO,eACvB,EA7DF1pB,EAAAA,sCAAAizD,2gBjHZA3uD,EAAA0a,EAAA,OAAAhf,8HkHKA,MAAA8yD,EAAA9zC,EAAA,OAMA,MAAam0C,UAA2CL,EAAAE,2BACtDloD,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GAEf,MAAoB,eAAhBA,EAAO7nB,KACF,CAAE2sB,SAAU,CAAC,GAIf,CACLA,SAAU,IACJ,aAAc9E,EAAO6qB,qBAAyB,aAAc7qB,EAAO8qB,kBACnE,CACEikB,UAAW/uC,EAAO6qB,oBAAoBkkB,UAAY,IAAM/uC,EAAO8qB,kBAAkBikB,UAAY,IAE/F,CAAC,GAGX,EAzBFpzD,EAAAA,mCAAAmzD,2gBlHXA7uD,EAAA0a,EAAA,OAAAhf,iImHKA,MAAA8yD,EAAA9zC,EAAA,OAMA,MAAaq0C,UAA8CP,EAAAE,2BACzDloD,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,UAAMwF,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GAEf,MAAoB,eAAhBA,EAAO7nB,KACF,CAAE2sB,SAAU,CAAC,GAIf,CACLA,SAAU,IACJ,gBAAiB9E,EAAO6qB,qBAAyB,gBAAiB7qB,EAAO8qB,kBACzE,CACEuV,aAAcrgC,EAAO6qB,oBAAoBwV,aAAe,IAAMrgC,EAAO8qB,kBAAkBuV,aAAe,IAExG,CAAC,GAGX,EAzBF1kD,EAAAA,sCAAAqzD,2gBnHXA/uD,EAAA0a,EAAA,OAAAhf,mHoHKA,MAAAszD,EAAAt0C,EAAA,OAIAu0C,EAAAv0C,EAAA,OAKA,MAAaw0C,UAAgCF,EAAAG,iCAe3C3oD,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,eAAMikB,CAAUH,EAA6B6xB,EAAoBvwB,GAEtE,MAAM+tC,EAAS,IAAIH,EAAAI,iBACjB,CAAEC,MAAO,IAAI16B,OAAOp9B,KAAK+3D,6BAE3B,IAAIn4C,EAQJ,MAPI,SAAU2I,EAAOyR,YAEnBzR,EAAOyR,WAAWjf,GAAG,SAAS5X,GAASy0D,EAAOl0D,KAAK,QAASP,KAC5Dyc,EAAc2I,EAAOyR,WAAYg+B,KAAKJ,IAEtCh4C,EAAag4C,EAAOnQ,OAAOl/B,EAAOyR,YAE7B,CAAEpa,OACX,EAjCF1b,EAAAA,wBAAAwzD,2gBpHdAlvD,EAAA0a,EAAA,OAAAhf,+GqHKA,MAAAszD,EAAAt0C,EAAA,OAGA+0C,EAAA/0C,EAAA,OAKA,MAAag1C,UAA4BV,EAAAG,iCAkBvC3oD,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,eAAMikB,CAAUH,EAA6BoB,GAElD,MAAMiuC,EAAS,IAAIK,EAAAE,aAAa,CAAEC,OAAQzuC,IAC1C,IAAI/J,EAQJ,MAPI,SAAU2I,EAAOyR,YAEnBzR,EAAOyR,WAAWjf,GAAG,SAAS5X,GAASy0D,EAAOl0D,KAAK,QAASP,KAC5Dyc,EAAc2I,EAAOyR,WAAYg+B,KAAKJ,IAEtCh4C,EAAag4C,EAAOnQ,OAAOl/B,EAAOyR,YAE7B,CAAEpa,OAAM+oC,QAAuB,gBAAdh/B,GACR,0BAAdA,GACc,YAAdA,EACJ,EApCFzlB,EAAAA,oBAAAg0D,2gBrHbA1vD,EAAA0a,EAAA,OAAAhf,mHsHKA,MAAAszD,EAAAt0C,EAAA,OAGAm1C,EAAAn1C,EAAA,OACAhE,EAAAgE,EAAA,OACAo1C,EAAAp1C,EAAA,OAKA,MAAaq1C,UAAgCf,EAAAG,iCAY3C3oD,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEO,eAAMikB,CAAUH,EAA6BoB,GAClD,MAAM/J,EAAO,IAAIV,EAAAC,SACjBS,EAAKH,MAAQ,OAIb,IACE,MAAMzW,EAAmC,CAAC,EAC1Cuf,EAAOyR,WAAWjf,GAAG,UAAU,CAAC7T,EAAQg+B,KACtCl8B,EAAS9B,GAAUg+B,CAAG,IAGxB,MAAM,KAAEthC,SAAe,EAAA00D,EAAA31D,aACf,EAAA01D,EAAAttB,SAAexiB,EAAOyR,YAC5B,CAAEw+B,eAAe,EAAMC,eAA8B,oBAAd9uC,EAAiC3gB,aAE1E4W,EAAKrc,KAAKK,GACVgc,EAAKrc,KAAK,KACZ,CAAE,MAAOJ,GAEPyc,EAAKH,MAAQ,KACXG,EAAKlc,KAAK,QAASP,EAAM,CAE7B,CAEA,MAAO,CACLyc,OACA+oC,SAAS,EAEb,EA7CFzkD,EAAAA,wBAAAq0D,2gBtHfA/vD,EAAA0a,EAAA,OAAAhf,yHuHKA,MAAAk2B,EAAAlX,EAAA,OAIAw1C,EAAAx1C,EAAA,OAKA,MAAay1C,UAAsCv+B,EAAAw+B,+BACjD5pD,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEgB,UAAMwF,CAAKse,GACzB,MAAMwO,GAAc,EAAAqD,EAAAy+B,uBAAsBtwC,EAAOK,SACjD,IAAKmO,GAAsC,iBAAhBA,KACtB,WAAYA,IAAgB,UAAWA,IAA6BA,EAAY72B,MAAO44D,OAC1F,MAAM,IAAI/2D,MAAM,GAAG/B,KAAKgK,wCAE1B,OAAO,CACT,CAEU,oBAAM+uD,CAAenwC,GAC7B,MAAMmO,GAAyB,EAAAqD,EAAAy+B,uBAAsBjwC,GACrD,OAAO,IAAI8vC,EAAAM,qBAAqB,WAAYjiC,EAAcA,EAAcA,EAAY72B,MACtF,EAjBFgE,EAAAA,8BAAAy0D,+GCXA,MAAAM,EAAA/1C,EAAA,OACA+G,EAAA/G,EAAA,OACAgH,EAAAhH,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YAKfpmB,EAAAA,qBAAA,MAGE8K,WAAAA,CAAmBk6C,GACjBlpD,KAAKkpD,MAAQA,CACf,CAEOr4B,OAAOulB,GACZ,OAAO,EAAA6iB,EAAAC,uBAAsBl5D,KAAKkpD,MAAM4P,OAAO1iB,GACjD,CAEOhb,MAAAA,CAAOgb,GACZ,OAAO,EAAA6iB,EAAAC,uBAAsBl5D,KAAKkpD,MAAMzB,OAAOrR,GACjD,CAEO,kBAAMrC,CACXF,EACAslB,EACAC,GAEA,OAAQvlB,GACN,IAAK,YAGG,EAAAolB,EAAAC,uBAAsBl5D,KAAKkpD,MAAMmQ,YAAYhvC,EAAG4b,iBAExD,IAAK,QAKH,MAAMqzB,EAAWt5D,KAAKkpD,MAAMllD,QAEtB0mC,EAAuC,CAAC,EAC9C4uB,EAASv+C,GAAG,QAAS2Z,IACS,iBAAxBA,EAAK9I,MAAM4B,WACbkd,GAAY,EAAAxgB,EAAA8D,cAAa0G,EAAK9I,SAAU,EAC1C,UAEI,EAAAqtC,EAAAC,uBAAsBI,SAGtBzzD,QAAQ4rB,IAAIrwB,OAAOD,KAAKupC,GAC3BvlC,KAAI0lC,IAAc,EAAAouB,EAAAC,uBAAsBl5D,KAAKkpD,MAC3CmQ,aAA4B,EAAAnvC,EAAAqvC,cAAa1uB,QAC9C,MACF,QAEE,IAAK,MAAMjf,KAASjhB,MAAMC,QAAQipC,GAAUA,EAAS,CAAEA,SAC/C,EAAAolB,EAAAC,uBAAsBl5D,KAAKkpD,MAAMmQ,YAAYztC,IAG3D,CAEO,kBAAM0oB,CAAaT,EAAyBU,GAIjD,GAAIA,EACF,IAAK,MAAM3oB,KAASioB,EAAQ,CAC1B,MAAM2lB,EAAex5D,KAAKkpD,MAAMllD,WAAM7D,OAAWA,OAAWA,EAAWyrB,SACjE,IAAI/lB,SAAc,CAACC,EAASC,KAChCyzD,EAAaC,KAAK,QAAQ,KACxB1zD,EAAO,IAAIhE,MAAM,0BAA0B6pB,EAAM1rB,8BAA8B,IAEjFs5D,EAAaz+C,GAAG,MAAOjV,GACvB0zD,EAAaz+C,GAAG,QAAShV,EAAO,GAEpC,CAEJ,4gBxHlFFyC,EAAA0a,EAAA,OAAAhf,oGyHCA,MAAAikB,EAAAjF,EAAA,OAGAw2C,EAAAx2C,EAAA,MACAy2C,EAAAz2C,EAAA,OAKA,MAAa02C,EAOX5qD,WAAAA,CAAmB6qD,EAA8BvsD,EAAgCwsD,GANjE,KAAAptD,KAAO,WAOrB1M,KAAK65D,YAAcA,EACnB75D,KAAKsN,QAAUA,EACftN,KAAK85D,cAAgBA,CACvB,CAEO3sD,GAAAA,CAAI1M,GACT,OAAOT,KAAKsN,QAAQH,IAAmB,iBAAR1M,EAAmBA,EAAMA,EAAIP,MAC9D,CAEOoH,GAAAA,CAAI7G,GACT,OAAOT,KAAKsN,QAAQhG,IAAmB,iBAAR7G,EAAmBA,EAAMA,EAAIP,MAC9D,CAEO4L,GAAAA,CAAIrL,EAA4BP,GACrC,OAAO,IAAI05D,EACT55D,KAAK65D,YACL75D,KAAKsN,QAAQxB,IAAmB,iBAARrL,EAAmBA,EAAMA,EAAIP,MAAOA,GAC5DF,KAAK85D,cAET,CAEOjpC,OAAOpwB,GACZ,OAAO,IAAIm5D,EACT55D,KAAK65D,YACL75D,KAAKsN,QAAQujB,OAAsB,iBAARpwB,EAAmBA,EAAMA,EAAIP,OACxDF,KAAK85D,cAET,CAEO34D,IAAAA,GACL,OAAOnB,KAAK+5D,YACV/5D,KAAKg6D,mBAAmBh6D,KAAKsN,QAAQnM,SACrCV,GAAOT,KAAK65D,YAAY5uC,SAAUxqB,IAEtC,CAEO4M,MAAAA,GACL,OAAOrN,KAAKg6D,mBAAmBh6D,KAAKsN,QAAQD,SAC9C,CAEO3C,OAAAA,CAAQuvD,GACb,IAAK,MAAQx5D,EAAKP,KAAWF,KAAKsN,QAAQA,UACxC2sD,EAAG/5D,EAAOF,KAAK65D,YAAY5uC,SAAUxqB,GAEzC,CAEA,QAAWX,GACT,OAAOE,KAAKsN,QAAQxN,IACtB,CAEO,CAACyJ,OAAOe,YACb,OAAOtK,KAAK+5D,YACV/5D,KAAKg6D,mBAAkDh6D,KAAKsN,QAAQA,YACpE,EAAG7M,EAAKP,KAAY,CAAEF,KAAK65D,YAAY5uC,SAAUxqB,GAAMP,KACvDqJ,OAAOe,WACX,CAEOo2B,MAAAA,CAAOw5B,GACZ,IAAKA,EACH,OAAO,EAET,GAAIl6D,OAASk6D,EACX,OAAO,EAIT,GAAIl6D,KAAKF,OAASo6D,EAAMp6D,KACtB,OAAO,EAIT,IAAK,MAAMW,KAAOT,KAAKmB,OACrB,IAAKnB,KAAKsH,IAAI7G,IAAMigC,OAAOw5B,EAAM5yD,IAAI7G,IACnC,OAAO,EAIX,OAAO,CACT,CAEOwE,MAAAA,CAAOg1D,GACZ,OAAO,IAAIL,EAAS55D,KAAK65D,aAAa,EAAAH,EAAAl4C,KAAUxhB,KAAKsN,QAClDrI,QAAO,CAAC/E,EAAOO,IAAQw5D,EAAG/5D,EAAOF,KAAK65D,YAAY5uC,SAAUxqB,OAAST,KAAK85D,cAC/E,CAEO30D,GAAAA,CAAI80D,GACT,OAAO,IAAIL,EAAS55D,KAAK65D,aAAa,EAAAH,EAAAl4C,KAAUxhB,KAAKsN,QAClDnI,KAAI,CAACjF,EAAOO,IAAQw5D,EAAG/5D,EAAOF,KAAK65D,YAAY5uC,SAAUxqB,OAAST,KAAK85D,cAC5E,CAEOhnB,KAAAA,CAAMonB,GACX,GAAIl6D,KAAKF,KAAOo6D,EAAMp6D,MAAQo6D,aAAiBN,EAC7C,OAAOM,EAAMpnB,MAAM9yC,MAErB,IAAIsN,EAAUtN,KAAKsN,QAInB,GAAI4sD,aAAiBN,EACnB,IAAK,MAAQ3uC,EAAU7J,KAAW84C,EAAM5sD,QAAS,CAC/C,MAAMuT,EAAO7gB,KAAKsN,QAAQhG,IAAI2jB,GAC9B,GAAIpK,IAASA,EAAK6f,OAAOtf,GACvB,OAEF9T,EAAUA,EAAQxB,IAAImf,EAAU7J,EAClC,MAEA,IAAK,MAAQ6J,EAAU7J,KAAW84C,EAAO,CACvC,MAAMr5C,EAAO7gB,KAAKsN,QAAQhG,IAAI2jB,EAAS/qB,OACvC,GAAI2gB,IAASA,EAAK6f,OAAOtf,GACvB,OAEF9T,EAAUA,EAAQxB,IAAImf,EAAS/qB,MAAOkhB,EACxC,CAGF,OAAOphB,KAAKm6D,2BAA2B7sD,EAAS4sD,EAClD,CAEOE,SAAAA,CACLC,EACAH,GAEA,GAAIl6D,KAAKF,KAAOo6D,EAAMp6D,MAAQo6D,aAAiBN,EAC7C,OAAOM,EAAME,UAAUC,EAAQr6D,MAEjC,IAAIsN,EAAUtN,KAAKsN,QAGnB,GAAI4sD,aAAiBN,EACnB,IAAK,MAAQ3uC,EAAU7J,KAAW84C,EAAM5sD,QAAS,CAC/C,MAAMuT,EAAO7gB,KAAKsN,QAAQhG,IAAI2jB,GAC9B,IAAI/qB,EAEFA,EADE2gB,IAASA,EAAK6f,OAAOtf,GACfi5C,EAAOx5C,EAAMO,EAAOphB,KAAK65D,YAAY5uC,SAAUA,IAE/C7J,EAEV9T,EAAUA,EAAQxB,IAAImf,EAAU/qB,EAClC,MAEA,IAAK,MAAQ+qB,EAAU7J,KAAW84C,EAAO,CACvC,MAAMr5C,EAAO7gB,KAAKsN,QAAQhG,IAAI2jB,EAAS/qB,OACvC,IAAIA,EAEFA,EADE2gB,IAASA,EAAK6f,OAAOtf,GACfi5C,EAAOx5C,EAAMO,EAAO6J,GAEpB7J,EAEV9T,EAAUA,EAAQxB,IAAImf,EAAS/qB,MAAOA,EACxC,CAGF,OAAOF,KAAKm6D,2BAA2B7sD,EAAS4sD,EAClD,CAEUC,0BAAAA,CAA2B7sD,EAAgC4sD,GAEnE,GAAIl6D,KAAK85D,eAAiB95D,KAAK85D,cAAclxC,QAAS,CACpD,IAAIiqB,EAAgB7yC,KAAK85D,cAAclxC,QAMvC,MAJI,kBAAmBsxC,GAASA,EAAMJ,eAAiBI,EAAMJ,cAAclxC,UACzEiqB,EAAgB+mB,EACbU,aAAat6D,KAAK85D,cAAcS,qBAAsB1nB,EAAeqnB,EAAMJ,cAAclxC,UAEvF,IAAIgxC,EACT55D,KAAK65D,YACLvsD,EACA,CAAEitD,qBAAsBv6D,KAAK85D,cAAcS,qBAAsB3xC,QAASiqB,GAE9E,CAGA,OAAO,IAAI+mB,EAAS55D,KAAK65D,YAAavsD,EAAqB4sD,EAAOJ,cACpE,CAEQ,mBAAOQ,CACbC,EACA3xC,EACA4xC,GAGA,MAAMC,EAAU,IAAK7xC,EAAQznB,UAAWq5D,EAAar5D,QAE/Cu5D,EAAsC,CAAC,EACvCC,EAAsC,CAAC,EAGvCC,EAAsB,IAAIr8C,IAC9Bi8C,EAAar5D,OAAOgE,KAAI1E,GAAOA,EAAIuJ,QAE/B6wD,EAAkBjyC,EAAQznB,OAAO8D,QACrCxE,GAAOm6D,EAAoBztD,IAAI1M,EAAIuJ,QAGrC,IAAK,MAAMvJ,KAAOg6D,EAAS,CAEzB,GAA8B,IAA1BE,EAAYl6D,EAAIuJ,MAClB,SAIF2wD,EAAYl6D,EAAIuJ,MAAQ,EAGxB,MAAM8wD,EAAeD,EAAgB18B,MAAK4J,GAAKA,EAAE/9B,OAASvJ,EAAIuJ,OAK1DuwD,EAAqB95D,EAAIuJ,OAAS8wD,EACpCJ,EAAej6D,EAAIuJ,MAAQuwD,EAAqB95D,EAAIuJ,MACjDse,IAAIM,EAAQthB,IAAI7G,GAAM+5D,EAAalzD,IAAI7G,KAIvC85D,EAAqB95D,EAAIuJ,OAAS8wD,IAMlClyC,EAAQthB,IAAI7G,GAKZ+5D,EAAalzD,IAAI7G,KACpBi6D,EAAej6D,EAAIuJ,MAAQ4e,EAAQthB,IAAI7G,IALvCi6D,EAAej6D,EAAIuJ,MAAQwwD,EAAalzD,IAAI7G,GAOhD,CACA,OAAO,IAAI0nB,EAAAmK,cAAcooC,EAC3B,CAEOK,eAAAA,CAAmBt6D,EAA2BP,GACnD,OAAOF,KAAKg7D,mBAAmBv6D,EAAKP,EACtC,CAEO86D,kBAAAA,CAAsBv6D,EAA2BP,GACtD,OAAIF,KAAK85D,eAAiB95D,KAAK85D,cAAclxC,QACpC,IAAIgxC,EACT55D,KAAK65D,YACL75D,KAAKsN,QACL,CACEitD,qBAAsBv6D,KAAK85D,cAAcS,qBACzC3xC,QAAS5oB,KAAK85D,cAAclxC,QAAQ9c,IAAIrL,EAAKP,KAI5C,IAAI05D,EACT55D,KAAK65D,YACL75D,KAAKsN,QACL,CACEitD,qBAAsBv6D,KAAK85D,eAAeS,sBAAwB,CAAC,EACnE3xC,SAAS,IAAIT,EAAAmK,eAAgBxmB,IAAIrL,EAAKP,IAG5C,CAEO+6D,kBAAAA,CAAsBx6D,GAC3B,OAAOT,KAAKk7D,sBAAsBz6D,EACpC,CAEOy6D,qBAAAA,CAAyBz6D,GAC9B,OAAIT,KAAK85D,cACA,IAAIF,EACT55D,KAAK65D,YACL75D,KAAKsN,QACL,CACEitD,qBAAsBv6D,KAAK85D,cAAcS,qBACzC3xC,QAAS5oB,KAAK85D,cAAclxC,SAASiI,OAAOpwB,KAI3C,IAAIm5D,EAAS55D,KAAK65D,YAAa75D,KAAKsN,QAC7C,CAEO6tD,UAAAA,GACL,OAAOn7D,KAAK85D,eAAelxC,OAC7B,CAEOwyC,eAAAA,CAAmB36D,GACxB,OAAOT,KAAKm7D,cAAc7zD,IAAI7G,EAChC,CAEOe,QAAAA,GACL,OAAO,EAAAm4D,EAAAnwB,kBAAiBxpC,KAC1B,CAES,YAAE+5D,CAAkBsB,EAAuBjuD,GAClD,IAAK,MAAM26B,KAAKszB,QACRjuD,EAAS26B,EAEnB,CAEUiyB,kBAAAA,CAAsB1vD,GAC9B,MAAO,CACL,CAACf,OAAOe,UAAW,IAAMA,EAE7B,EAnTFpG,EAAAA,SAAA01D,0GCPA,MAAAF,EAAAx2C,EAAA,MACA+G,EAAA/G,EAAA,OACAo4C,EAAAp4C,EAAA,OAKA,MAAa4lB,EAIX95B,WAAAA,CACE6qD,EAA2B,IAAI5vC,EAAAK,YAC/BiwC,GAEAv6D,KAAK65D,YAAcA,EACnB75D,KAAKu6D,qBAAuBA,CAC9B,CAEO,mBAAaxyD,CAClBghC,EACAngB,GAEA,OAAO,IAAIkgB,EACT,IAAI7e,EAAAK,mBACGye,EAA6Bvd,QAAQ,CAAE5C,aAAY2yC,cAE9D,CAEO7uC,QAAAA,CAASpf,EAAsC,IACpD,OAAO,IAAIguD,EAAA1B,SACT55D,KAAK65D,aACL,EAAAH,EAAAl4C,KAAIlU,EAAQnI,KAAI,EAAG1E,EAAKP,KAAY,CAAEO,EAAIP,MAAOA,MACjDF,KAAKu6D,qBAAuB,CAAEA,qBAAsBv6D,KAAKu6D,2BAAyBp6D,EAEtF,CAEOq7D,YAAAA,CAAa9uC,GAClB,OAAO1sB,KAAK0sB,SAAS,IAAKA,GAC5B,CAEO+uC,UAAAA,CAAWC,GAChB,OAAO17D,KAAK0sB,SAAStrB,OAAOkM,QAAQouD,GAAQv2D,KAAI,EAAG1E,EAAKP,KAAY,CAAEF,KAAK65D,YAAY5uC,SAAUxqB,GAAMP,KACzG,EApCFgE,EAAAA,gBAAA4kC,2GCTA,MAAA5e,EAAAhH,EAAA,OAMAhf,EAAAA,iBAAA,SAAiCwoB,GAC/B,MAAMivC,EAA8B,CAAC,EACrC,IAAK,MAAMl7D,KAAOisB,EAASvrB,OACzBw6D,EAAIl7D,EAAIP,QAAS,EAAAgqB,EAAA8D,cAAatB,EAASplB,IAAI7G,IAE7C,OAAOuB,KAAKC,UAAU05D,EAAK,KAAM,KACnC,2gB3HbAnzD,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,kH4HDA,MAAAikB,EAAAjF,EAAA,OAcA,MAAsBsN,UACZrI,EAAAE,MAIRrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EAPFP,EAAAA,uBAAAssB,2gB5HfAhoB,EAAA0a,EAAA,OAAAhf,6G6HCA,MAAAikB,EAAAjF,EAAA,OAeA,MAAsBkU,UACZjP,EAAAE,MAIRrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EAPFP,EAAAA,kBAAAkzB,2gB7HhBA5uB,EAAA0a,EAAA,OAAAhf,0G8HAA,MAAAikB,EAAAjF,EAAA,OAeA,MAAsB4U,UAAuB3P,EAAAE,MAI3CrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EANFP,EAAAA,eAAA4zB,2gB9HfAtvB,EAAA0a,EAAA,OAAAhf,+G+HCA,MAAAikB,EAAAjF,EAAA,OAaA,MAAsB04C,UAA4BzzC,EAAAE,MAIhDrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EANFP,EAAAA,oBAAA03D,uHCRA,MAAAC,EAAA34C,EAAA,OAOA,MAAa44C,UAAsCD,EAAAD,oBAGjD5sD,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GAHS,KAAAs3D,oBAA6C,GAI5D/7D,KAAK+7D,oBAAsB,EAC7B,CAEO3qC,qBAAAA,CAAsBi3B,GAC3BroD,KAAK+7D,oBAAoBx4D,KAAK8kD,EAChC,CAEO,UAAMp+C,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GACf,IAAK,MAAM8/B,KAAYroD,KAAK+7D,oBAC1B1T,EAAS9/B,GAEX,MAAO,CAAC,CACV,EArBFrkB,EAAAA,8BAAA43D,2gBhIbAtzD,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,MAAAhf,qGiIAA,MAAAikB,EAAAjF,EAAA,OAeA,MAAsBoV,UAAkBnQ,EAAAE,MAItCrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EANFP,EAAAA,UAAAo0B,2gBjIhBA9vB,EAAA0a,EAAA,OAAAhf,uHkICA,MAAAikB,EAAAjF,EAAA,OAeA,MAAsBoX,UACZnS,EAAAE,MAIRrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EAPFP,EAAAA,4BAAAo2B,0gBlIhBA9xB,EAAA0a,EAAA,OAAAhf,+GmICA,MAAA6lB,EAAA7G,EAAA,OAEAiF,EAAAjF,EAAA,OACAgR,EAAAhR,EAAA,OAeAo4C,EAAAp4C,EAAA,OAQA,IAAI84C,EAAe,EAanB,MAAsB3wC,UAA4BlD,EAAAE,MAIhDrZ,WAAAA,CAAsBvK,GACpB4a,MAAM5a,EACR,CAQO,sBAAO6mB,CAAgBuN,GAE5B,OADAxN,EAAoBue,oBAAoB/Q,EAAQ,YACTA,CACzC,CAQO,mBAAOuP,CAAavP,GAEzB,OADAxN,EAAoBue,oBAAoB/Q,EAAQ,SACZA,CACtC,CAQO,qBAAOojC,CAAepjC,GAE3B,OADAxN,EAAoBue,oBAAoB/Q,EAAQ,WACVA,CACxC,CAQO,kBAAOub,CAAYvb,GAExB,OADAxN,EAAoBue,oBAAoB/Q,EAAQ,QACbA,CACrC,CAOO,0BAAO+Q,CAAoB/Q,EAA+BH,GAC/D,GAAIG,EAAOnsB,OAASgsB,EAClB,MAAM,IAAI32B,MAAM,wCAAwC22B,eAA0BG,EAAOnsB,QAE7F,CAEU,+BAAOwvD,CAAyBtzC,GACxC,MAAM80B,EAAwB90B,EAAQthB,IAAIyiB,EAAAuH,cAAc6E,gBAClD6f,EAA8BptB,EAAQthB,IAAIyiB,EAAAuH,cAAc0kB,SACxDxf,EAAiD5N,EAAQthB,IAAIyiB,EAAAuH,cAAckF,yBAA2B,CAAC,EAG7G,GAAI5N,EAAQzb,IAAI4c,EAAAuH,cAAc6qC,2BAA6BvzC,EAAQzb,IAAI4c,EAAAuH,cAAc8qC,oBACnF,MAAM,IAAIr6D,MAAM,4FAElB,IAAIo6D,EACiEvzC,EAClEthB,IAAIyiB,EAAAuH,cAAc6qC,0BAErB,MAAMC,EAA4FxzC,EAC/FthB,IAAIyiB,EAAAuH,cAAc8qC,oBAKrB,OAJIA,IACFD,EAA2BE,GAAqBD,EAAmBC,EAAkBn8D,QAGhF,CAAEw9C,MAAK1H,UAASmmB,2BAA0B3lC,yBACnD,CAQO,2BAAO8lC,CAAqB1zC,EAAyB2zC,GAE1D,MAAO,IACFv8D,KAAKk8D,yBAAyBtzC,GACjC4zC,MAAQ/uD,GAAmB,IAAIymB,EAAA0d,wBAAwBnkC,GAAS,SAASuuD,KAE7E,CAQO,gCAAO/yB,CACZrgB,EACA2C,EACAM,GAGA,MAAO,IACF7rB,KAAKk8D,yBAAyBtzC,GACjC4zC,MAAQ/uD,GAAmB5H,QAAQC,QAAQ,IAAIouB,EAAA0d,wBAAwBnkC,GAAS,SAASuuD,MACzFS,OAAQpxC,EAAoBqxC,wBAAwB9zC,EAAS2C,EAAwBM,GAEzF,CAQO,8BAAO6wC,CACZ9zC,EACA2C,EACAM,GAGA,OAAOiB,MAAMghB,EAAMphB,KACjB,MAAM/B,GAAY,EAAA2wC,EAAAxhB,sBAAqBhM,EAAKrgC,MAAOif,EAAUb,GAEvD8d,QAAkBpe,EAAuBC,QAAQ,CAAEb,YAAW/B,YAC9DiQ,EAASxN,EAAoBC,gBAAgBqe,GACnD,OAAOmE,EAAK6uB,OAAoE,WAApD9jC,EAAOrM,eAAeoa,KAAK,GAAGC,WAAWtlC,OAAa,CAEtF,CAMO,sBAAOqyC,CAAgBhrB,GAC5B,GAAIA,EAAQthB,IAAIyiB,EAAAoB,mBAAmByxC,UACjC,MAAM,IAAI76D,MAAM,gDAEpB,CAMO,yBAAO0tB,CAAmB9E,GAC/B,OAA6BA,EAAU0C,UAAUqV,YACnD,CAQO,4BAAO/S,CAAmDhF,EAAc6E,GAI7E,OAHA7E,EAAY,IAAKA,IACP0C,SAAW1C,EAAU0C,SAAW,IAAK1C,EAAU0C,UAAa,CAAC,EACvE1C,EAAU0C,SAASqV,aAAelT,EAC3B7E,CACT,CAOO,4BAAOgY,CAAsBhY,UAC3BA,EAAU0C,UAAUqV,aACvB/X,EAAU0C,UAAuD,IAA3CjsB,OAAOD,KAAKwpB,EAAU0C,UAAU9rB,eACjDopB,EAAU0C,QAErB,CAUO,+BAAOoN,CACZD,EACA7P,EACA7jB,GAKA,MAAmB,gBAAf0zB,EAAM9tB,KACD8tB,EAAM6K,SAAShD,OAAMkW,GAASltB,EAAoBoP,yBAAyB8d,EAAO5tB,EAAW7jB,KAEnF,gBAAf0zB,EAAM9tB,KACD8tB,EAAM6K,SAASlH,MAAKoa,GAASltB,EAAoBoP,yBAAyB8d,EAAO5tB,EAAW7jB,KAElF,UAAf0zB,EAAM9tB,KACD2e,EAAoBoP,yBAAyBD,EAAM+d,MAAO5tB,EAAW7jB,MAGzEA,GAAS45C,eAAiBlmB,EAAMkmB,gBAAkB55C,GAASupD,iBAAmB71B,EAAM61B,mBAInD,SAAlC71B,EAAM7P,UAAUq4B,cACc,YAAzBxoB,EAAM7P,UAAUje,MAAsB8tB,EAAM7P,UAAUje,OAASie,EAAUje,KAE3E8tB,EAAM7P,UAAU+E,QAAQhjB,OAASie,EAAUje,KACpD,EAxNFxI,EAAAA,oBAAAmnB,mHCxCA,MAAAtB,EAAA7G,EAAA,OAEAiQ,EAAAjQ,EAAA,OAUA25C,EAAA35C,EAAA,OAKA,MAAsBgyB,UAA8D2nB,EAAAxxC,oBAGlFrc,WAAAA,CAAsBvK,EAAgCq4D,GAEpD,GADAz9C,MAAY,IAAK5a,EAAMq4D,mBAClB98D,KAAK88D,cACR,MAAM,IAAI/6D,MAAM,qDAEpB,CAEO,UAAMkI,CAAKse,GAChB,IAAKA,EAAOoC,UACV,MAAM,IAAI5oB,MAAM,0DAElB,GAAIwmB,EAAOoC,UAAUje,OAAS1M,KAAK88D,cACjC,MAAM,IAAI/6D,MAAM,SAAS/B,KAAKgK,sBAAsBhK,KAAK88D,qCACvDv0C,EAAOoC,UAAUje,QAErB,MAAMie,EAAmBpC,EAAOoC,UAChC,OAAO3qB,KAAK0qB,cAAcC,EAAWpC,EAAOK,QAC9C,CAEO,SAAMN,CAAIC,GAEf,MAAMmqB,EAAgEnqB,EAAOK,QAC1EthB,IAAIyiB,EAAAuH,cAAcohB,yBACjBA,IACFA,EAAwBC,aACtBpqB,EAAOoC,UAAUje,UACjBvM,EACAooB,EAAOoC,UACPpC,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcshB,uBACjC5yC,KAAKgK,KACL,CAAC,GAEHue,EAAOK,QAAUL,EAAOK,QAAQ9c,IAAIie,EAAAuH,cAAcshB,sBAAuBrqB,EAAOoC,YAGlF,MAAMA,EAAmBpC,EAAOoC,UAC1BoqB,EAAaxsB,EAAOK,QAAQ9c,IAAIie,EAAAoB,mBAAmBR,UAAWA,GAC9DkO,QAAsC74B,KAAK2mC,aAAahc,EAAWoqB,GAKzE,MAJI,aAAclc,IAChBA,EAAOxL,UACL,EAAA8F,EAAA4pC,iBAA6FlkC,EAAOxL,WAEjGwL,CACT,EA9CF30B,EAAAA,yBAAAgxC,2HCfA,MAAA8nB,EAAA95C,EAAA,OAKA,MAAsBsH,UAAsEwyC,EAAA9nB,yBAI1FlmC,WAAAA,CAAmBvK,EAA6Cq4D,GAC9Dz9C,MAAM5a,EAAMq4D,EACd,EANF54D,EAAAA,iCAAAsmB,iIZHA,MAAAP,EAAA/G,EAAA,OACAgH,EAAAhH,EAAA,OACAiR,EAAAjR,EAAA,OAEAiH,EAAAjH,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YAET/sB,EAAO8sB,EAAGyxB,QAAQ,OAAQzxB,EAAGkK,UAAU,6CAc7C,SAAgB0oC,EAAgB5oC,EAAgB3H,GAC9C,GAAsB,aAAlB2H,EAAK7G,SAAyB,CAChC,MAAMttB,EAAQwsB,EAASplB,IAAI+sB,GAC3B,GAAIn0B,EACF,OAAOA,CAEX,CACA,MAAsB,SAAlBm0B,EAAK7G,WAAuB,EAAA2G,EAAA81B,iBAAgB51B,GAAMn0B,GAA4B,aAAnBA,EAAMstB,YAC5D,EAAA2G,EAAAQ,gBAAeN,GAAMe,GAAW6nC,EAAgB7nC,EAAS1I,KAE3D2H,CACT,CAmSA,SAAS6oC,EAAyBtnC,EAAkBlJ,EAAoB1J,GACtE,MAAM3V,EAA2B,GAEjC,IAAK,MAAQ4d,EAAU62B,KAAap1B,EAClC,IAAK1J,GAAaA,EAAUmb,MAAKmkB,GAAKA,EAAE5hB,OAAOzV,KAAY,CACzD,MAAMkyC,EAAa,CAAE,EAAC,EAAAjzC,EAAA8D,cAAa/C,IAA0C62B,GAE7Ez0C,EAAO9J,KAAKqyB,EAAQ+K,aAAa,CAAE1V,GAAY,CAAEkyC,IACnD,CAGF,OAAO9vD,CACT,CA1TAnJ,EAAAA,gBAAA+4D,EA6BA/4D,EAAAA,qBAAA,SAAgB41C,EACdnvB,EACA+B,EACAb,EACA/kB,EAII,IAQJ,OANAA,EAAU,CACRs2D,sBAAuB,0BAA2Bt2D,GAAUA,EAAQs2D,sBACpE7O,aAAY,eAAgBznD,IAAUA,EAAQynD,WAC9C8O,iBAAkB,qBAAsBv2D,EAAUA,EAAQu2D,iBAAmB3wC,GAGxEvC,EAAAqL,KAAKC,aAAa9K,EAAW,CAClCG,KAAIA,CAAC6K,EAAkBC,KAGd,CACLC,SAAS,EACThyB,OAAQzC,OAAOoU,OAAOogB,EAAQ3J,WAC5BgxC,EAAgBtnC,EAAG5K,QAAS2B,GAC5BiJ,EAAG/K,UACHqyC,EAAgBtnC,EAAG3K,OAAQ0B,GAC3BuwC,EAAgBtnC,EAAG/J,MAAOc,IACzB,CAAEW,SAAUsI,EAAGtI,aAGtBqC,QAAOA,CAACiG,EAAqBC,KAEpB,CACLC,SAAS,EACThyB,OAAQzC,OAAOoU,OAAOogB,EAAQvJ,cAC5B4wC,EAAgBtnC,EAAG5K,QAAS2B,GAC5BuwC,EAAgBtnC,EAAG/K,UAAW8B,GAC9BuwC,EAAgBtnC,EAAG3K,OAAQ0B,GAC3BuwC,EAAgBtnC,EAAG/J,MAAOc,IACzB,CAAEW,SAAUsI,EAAGtI,aAGtBiwC,MAAAA,CAAO3nC,GAIL,GAAIjJ,EAASvf,IAAIwoB,EAAG1K,UAAW,CAC7B,GAAInkB,EAAQs2D,sBACV,MAAM,IAAIr7D,MAAM,2BAA0B,EAAAmoB,EAAA8D,cAAa2H,EAAG1K,iCAE1D,MAAO,CACL4K,SAAS,EACThyB,OAAQi2C,EAAqBnkB,EAAGloB,MAAOif,EAAUb,EAAiB/kB,GAGxE,CACA,MAAO,CACL+uB,SAAS,EACThyB,OAAQ8xB,EAEZ,EACA8W,KAAAA,CAAM9W,EAAmBC,GAIvB,GAAI9uB,EAAQs2D,sBAAuB,CACjC,IAAK,MAAMnyC,KAAY0K,EAAG3S,UACxB,GAAI0J,EAASvf,IAAI8d,GACf,MAAM,IAAIlpB,MAAM,2BAA0B,EAAAmoB,EAAA8D,cAAa/C,8BAG3D,MAAO,CACL4K,SAAS,EACThyB,OAAQ8xB,EAEZ,CACA,MAAM3S,EAAY2S,EAAG3S,UAAU/d,QAAOgmB,IAAayB,EAASvf,IAAI8d,KAChE,MAAO,CACL4K,SAAS,EACThyB,OAAQ+xB,EAAQmsB,YACdpsB,EAAGloB,MACHuV,EACA2S,EAAGyV,YAGT,EACAmyB,OAAAA,CAAQ5nC,EAAqBC,GAI3B,GAAI9uB,EAAQs2D,sBAAuB,CACjC,IAAK,MAAMnyC,KAAY0K,EAAG3S,UACxB,GAAI0J,EAASvf,IAAI8d,GACf,MAAM,IAAIlpB,MAAM,2BAA0B,EAAAmoB,EAAA8D,cAAa/C,4BAG3D,MAAO,CACL4K,SAAS,EACThyB,OAAQ8xB,EAEZ,CAIA,IAAK,MAAM6nC,KAAc9wC,EAASvrB,OAChC,IAAK,MAAMs8D,KAAe9nC,EAAG3S,UAC3B,GAAIy6C,EAAY/8B,OAAO88B,GAAa,CAClC9wC,EAAWA,EAASmE,OAAO2sC,GAC3B,KACF,CAMJ,MAAMnwD,EACN6vD,EAAyBtnC,EAAoB9uB,EAAQu2D,iBAAkB1nC,EAAG3S,WAE1E,IAAI06C,EAAqC5jB,EACvCnkB,EAAGloB,MACHif,EACAb,EACA/kB,GAOF,OAJIuG,EAAO9L,OAAS,IAClBm8D,EAAkB9nC,EAAQ4F,WAAW,IAAKnuB,EAAQqwD,KAG7C,CACL7nC,SAAS,EACThyB,OAAQ+xB,EAAQkK,cAAc49B,EAAiB/nC,EAAG3S,WAEtD,EACA/d,MAAAA,CAAO0wB,EAAoBC,GACzB,MAAMynC,EAAwCv2D,EAAQu2D,iBACtD,GAAqC,aAAjC1nC,EAAG+G,WAAWC,gBAA2D,IAA1B0gC,EAAiBv9D,KAClE,MAAO,CACL+1B,SAAS,EACThyB,OAAQ8xB,GAKZ,MAAMtoB,EAA8B6vD,EAAyBtnC,EAASynC,GAGhEM,EAAqE7jB,EACzEnkB,EAAG+G,WACHhQ,EACAb,EACA/kB,GAIF,IAAI82D,EAA0C9jB,EAC5CnkB,EAAGloB,MACHif,EACAb,EACA/kB,GAOF,OAJIuG,EAAO9L,OAAS,IAClBq8D,EAAuBhoC,EAAQ4F,WAAW,IAAKnuB,EAAQuwD,KAGlD,CAEL/nC,SAAS,EACThyB,OAAQ+xB,EAAQqH,aAAa2gC,EAAsBD,GAEvD,EACAtwD,MAAAA,CAAOsoB,EAAoBC,GAIzB,IAAI9uB,EAAQs2D,sBAML,CACL,MAAMp6C,EAAY2S,EAAG3S,UAAU/d,QAAOgmB,IAAayB,EAASvf,IAAI8d,KAC1D4yC,EAAqEloC,EAAGjJ,SAASvnB,KAAK28C,IAC1F,MAAMqb,EAAa,IAAKrb,GACxB,IAAIgN,GAAQ,EAYZ,OAVApiC,EAAShiB,SAAQ,CAACxK,EAAiBO,KACjC,MAAMq9D,GAAY,EAAA5zC,EAAA8D,cAAavtB,GAC3Bq9D,KAAaX,IACVj9D,EAAMwgC,OAAOy8B,EAAWW,MAE3BhP,GAAQ,UAEHqO,EAAWW,GACpB,IAEKhP,EAAQqO,OAAah9D,CAAS,IACpC8E,OAAO+iC,SACV,MAAO,CACLnS,SAAS,EACThyB,OAAQ+xB,EAAQ+K,aACd3d,EACA66C,GAGN,CA9BE,IAAK,MAAM5yC,KAAY0K,EAAG3S,UACxB,GAAI0J,EAASvf,IAAI8d,GACf,MAAM,IAAIlpB,MAAM,2BAA0B,EAAAmoB,EAAA8D,cAAa/C,4BA6B7D,MAAO,CACL4K,SAAS,EACThyB,OAAQ8xB,EAEZ,EACA+G,UAAAA,CAAW/G,EAAwBC,GACjC,IAAK9uB,EAAQynD,WACX,MAAO,CACL14B,SAAS,EACThyB,OAAQ8xB,GAIZ,GAA0B,SAAtBA,EAAGgH,eAEL,MAAO,CACL9G,SAAS,EACThyB,OAAQ+xB,EAAQyb,qBAAqB4rB,EAAgBtnC,EAAGtB,KAAM3H,KAGlE,GAA0B,aAAtBiJ,EAAGgH,eACL,MAAoB,UAAhBhH,EAAGmH,UAA2C,IAAnBnH,EAAGlxB,KAAKlD,QAA8C,SAA9Bo0B,EAAGlxB,KAAK,GAAGk4B,gBAChE,IAAKjQ,EAASvrB,QAASg9B,MAAKlT,GAAY0K,EAAGlxB,KAAK,GAAG4vB,KAAKqM,OAAOzV,KACxD,CACL4K,SAAS,EACThyB,OAAQ+xB,EAAQyb,qBAAqB9zC,IAGlC,CACLs4B,SAAS,EACThyB,OAAQ8xB,GAGZ,GAA0B,cAAtBA,EAAGgH,gBACL,aAAchH,GACdjJ,EAASvf,IAAmBwoB,EAAG1K,UAAW,CAI1C,GAAInkB,EAAQs2D,sBACV,MAAM,IAAIr7D,MAAM,kBAAiB,EAAAmoB,EAAA8D,cAAa2H,EAAG1K,kBAAkB0K,EAAGooC,yBAEtE,MAAO,CACLloC,SAAS,EACThyB,OAAQ8xB,EAGd,CACA,MAAO,CACLE,SAAS,EACThyB,OAAQ8xB,EAEZ,GAEJ,4Ga5TA,MAAAxN,EAAAjF,EAAA,OAOA,MAAa86C,UACH71C,EAAA81C,WACRjvD,WAAAA,CAAmBvK,GACjB4a,MAAM,IACD5a,EACHy5D,sBAAuB,CAAE,iBACzBC,uBAAwB,CAAE,YAAa,SAE3C,EARFj6D,EAAAA,kBAAA85D,2GCRA,MAAAh0C,EAAA9G,EAAA,OASA,MAAak7C,UAA4Bp0C,EAAAtJ,cAIvC1R,WAAAA,CAAmBwgB,EAA0B1oB,GAC3CuY,QACArf,KAAKwpD,QAAU1iD,EAAQ0iD,QACvBxpD,KAAKq+D,QAA8B7uC,EAGnCxvB,KAAKq+D,QAAQr0C,EAAAs0C,aAAet+D,KAC5BA,KAAKq+D,QAAQtjD,GAAG,MAAOwjD,GACvBv+D,KAAKq+D,QAAQtjD,GAAG,QAASyjD,GACzBx+D,KAAKq+D,QAAQtjD,GAAG,WAAY0jD,GAC5Bz+D,KAAK4hB,SAAW5hB,KAAKq+D,QAAQz8C,QAC/B,CAEgBjC,IAAAA,GACd,MAAM2V,EAAMt1B,KAAKq+D,QAAQ1+C,OAUzB,OATK2V,IAEHt1B,KAAK4hB,UAAW,EAGZ5hB,KAAKq+D,QAAQh4D,MACfrG,KAAKub,SAGF+Z,CACT,CAEmBxT,IAAAA,CAAKH,GACtB3hB,KAAKwpD,UAELxpD,KAAKq+D,QAAQK,eAAe,MAAOH,GACnCv+D,KAAKq+D,QAAQK,eAAe,QAASF,GACrCx+D,KAAKq+D,QAAQK,eAAe,WAAYD,UACjCz+D,KAAKq+D,QAAQr0C,EAAAs0C,aACpBt+D,KAAKq+D,QAAQ18C,UACbtC,MAAMyC,KAAKH,EACb,EAKF,SAAS88C,IACPz+D,KAAKgqB,EAAAs0C,aAAc18C,UAAW,CAChC,CACA,SAAS48C,EAAiDr7D,GACxDnD,KAAKgqB,EAAAs0C,aAAc56D,KAAK,QAASP,EACnC,CACA,SAASo7D,IACPv+D,KAAKgqB,EAAAs0C,aAAc/iD,OACrB,CArDArX,EAAAA,iBAAAk6D,oHCRA,MAAAp0C,EAAA9G,EAAA,OAQA,MAAaqmC,UAA4Cv/B,EAAA6C,kBAGvD7d,WAAAA,CAAmBwgB,EAA6B1oB,GAC9CuY,MAAMmQ,EAAQ1oB,GACd9G,KAAKwpD,QAAU1iD,EAAQ0iD,OACzB,CAEmB1nC,IAAAA,CAAKH,GACtB3hB,KAAKwpD,UACLnqC,MAAMyC,KAAKH,EACb,EAXFzd,EAAAA,0BAAAqlD,2gBxITA/gD,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,2GyILA,MAAAikB,EAAAjF,EAAA,OAeA,MAAsBoyB,UAAwBntB,EAAAE,MAI5CrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EANFP,EAAAA,gBAAAoxC,2gBzIhBA9sC,EAAA0a,EAAA,OAAAhf,4G0ICA,MAAAikB,EAAAjF,EAAA,OAeA,MAAsBszB,UAA0BruB,EAAAE,MAI9CrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EANFP,EAAAA,kBAAAsyC,2gB1IhBAhuC,EAAA0a,EAAA,MAAAhf,oH2IeA,MAAAy6D,EAAAz7C,EAAA,OAiBA,MAAsBw3B,UACZikB,EAAAv2C,wBAIRpZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EAPFP,EAAAA,0BAAAw2C,mIC/BA,MAAAikB,EAAAz7C,EAAA,OAmBA,MAAsBi3B,UAAiDwkB,EAAAt1C,6BAWrEra,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAGO,uBAAMmlB,CAAkB6G,EAAiC5G,GAC9D,OAAO,CACT,EAlBF3lB,EAAAA,yCAAAi2C,2gB5IpBA3xC,EAAA0a,EAAA,MAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,8HqFAA,MAAAikB,EAAAjF,EAAA,OAeA,MAAsBk8B,UACZj3B,EAAAE,MAWRrZ,WAAAA,CAAmBvK,EAA+Cm6D,GAChE,MAAMn6D,GACN,KAAKm6D,WAAaA,CACpB,CAEO,UAAM30D,CAAKse,GAChB,GAAIA,EAAO+2B,iBAAmB,KAAKsf,aAAer2C,EAAO+2B,gBACvD,MAAM,IAAIv9C,MAAM,SAAS,KAAKiI,0CAA0Cue,EAAO+2B,oBAEjF,OAAO,KAAKD,aAAa92B,EAC3B,EAtBFrkB,EAAAA,mCAAAk7C,2gBrFhBA52C,EAAA0a,EAAA,OAAAhf,kH6ICA,MAAAikB,EAAAjF,EAAA,OAcA,MAAsBigC,UACZh7B,EAAAE,MAIRrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EAPFP,EAAAA,yBAAAi/C,6QCdA,MAAAr5B,EAAA5G,EAAA,OACAiQ,EAAAjQ,EAAA,OAIA+G,EAAA/G,EAAA,OACAgH,EAAAhH,EAAA,OAEAiR,EAAAjR,EAAA,OAQA27C,EAAA37C,EAAA,OAGMmH,EAAK,IAAIJ,EAAAK,YAuFf,SAAgBw0C,EAAezqC,GAC7B,MAAyB,aAAlBA,EAAK7G,QACd,CAOA,SAAgByZ,EAAavX,GAC3B,OAAO,EAAAyE,EAAAyK,YAAU,EAAAzK,EAAAgT,gBAAezX,GAASzqB,OAAO65D,GAClD,CAwBA,SAAgBC,EAAyBrvC,GAEvC,MAAMsvC,EAAqD,CAAC,EAC5D,IAAIC,GAAqB,EASzB,IARA,EAAA9qC,EAAA+qC,oBAAmBxvC,GAAS,CAACxvB,EAAOiB,KAClC,GAAuB,aAAnBjB,EAAMstB,SAAyB,CACjC,MAAMk1B,GAAM,EAAAx4B,EAAA8D,cAAa9tB,GACnBqB,GAAUy9D,EAAiBtc,KAASsc,EAAiBtc,GAAO,KAAKn/C,KAAKpC,GAC5E89D,EAAqBA,GAAsB19D,EAAS,CACtD,MAGG09D,EACH,OAIF,MAAME,EAA0D,CAAC,EACjE,IAAK,MAAMl0C,KAAY+zC,EAAkB,CACvC,MAAMI,EAAWJ,EAAiB/zC,GAC5Bo0C,EAAoBD,EAAS56D,MAAM,GAErC66D,EAAkB99D,OAAS,IAC7B49D,EAAsBC,EAAS,GAAG/5D,KAAK,MAAQg6D,EAEnD,CAEA,OAAOF,CACT,CAYA,SAAgB7U,EACd59B,EACA0pB,EACAkpB,EACAt8C,EACAu8C,GAEA,MAAMC,EAAiBC,IACf,qBAAsBA,IAC1BA,EAAY7rC,kBAAmB,GAE7B2rC,IACFE,EAAY7xC,YAAYlhB,KAAO,YAEjCggB,EAAS0D,YACP,WACAsvC,GAAgC,EAAAvsC,EAAAwsC,uBAAsBF,GAAcH,EAAkBt8C,IAIpFy8C,EAAY7+D,OACd6+D,EAAY7+D,MAAMwwB,uBAAsB,KACtCk5B,EAAY59B,EAAU0pB,EAAOkpB,EAAkBt8C,EAAWu8C,EAAyB,GAEvF,EAGIlyC,EAAW+oB,EAAM1oB,YAAY,YAC/BL,EAGFmyC,EAAcnyC,GAEd+oB,EAAM1oB,YAAY,WAAY8xC,EAElC,CAQA,SAAgBE,EACdE,EACAN,EACAt8C,GAEA,MAAO,IACF48C,EACHhsC,kBAAkB,EAClByT,MAAOu4B,EAAcv4B,MACnBw4B,EAA0BD,EAAcv4B,MAAOi4B,QAC/Cn/D,EACFmnC,gBAAiBs4B,EAAct4B,gBAC7Bs4B,EAAct4B,gBAAgBniC,KAAI26D,IAAY,CAC5C7L,KAAM6L,EAAS7L,KACf93B,MAAO0jC,EAA0BC,EAAS3jC,MAAOmjC,YAEnDn/D,EACF6iB,YAEJ,CAOA,SAAgB68C,EACdE,EACAT,GAEA,MAAMU,EAA2C,CAAC,EAClD,OAAkCD,EAAW56D,KAAKk/B,IAEhD,MAAM47B,EAAeX,EAAiBj7B,EAAMhQ,MAC5C,GAAK4rC,IAMDD,EAAgBC,GAMpB,OADAD,EAAgBC,IAAgB,EACzB,CACL5rC,KAAMhK,EAAGY,SAASg1C,GAClBC,UAAW77B,EAAM67B,UAClB,IACAj7D,OAAO+iC,QACZ,CApPA9jC,EAAAA,gBAAA,SACEkyC,EACA1mB,EACA7D,EACA27B,GAEA,MAAMxkC,EAAYikB,EAAavX,GAGzBywC,EAAmD,aAA3BzwC,EAAQ9D,MAAM4B,WAA4Bg6B,EAGlE2X,EAAsEJ,EAAyBrvC,GAG/F4vC,GAA2C,EAAAnrC,EAAAisC,mBAC/C1wC,GACA,CAACwhC,EAA6B78B,EAAgBlzB,KACtB,aAAlBkzB,EAAK7G,WACP0jC,EAAI/vD,EAAKkE,KAAK,MAAQgvB,EAAKn0B,OAEtBgxD,IAET,CAAC,GAIH,IAAImP,EAAiBjqB,EAIjB+pB,IACFE,EAAiBA,EAAep7D,QAAOyvB,GAAgC,iBAAxBA,EAAK9I,MAAM4B,YAMxD2xC,IACFkB,EAAiBA,EAAep7D,QAAQyvB,IACtC,IAAK,MAAM4rC,KAAWnB,EAAuB,CAC3C,MAAMoB,EAA4CD,EAAQt7D,MAAM,KAC1Dw7D,GAAY,EAAArsC,EAAAssC,oBAAmB/rC,EAAM6rC,GAC3C,IAAK,MAAMG,KAAavB,EAAsBmB,GAC5C,IAAKE,EAAU9/B,QAAO,EAAAvM,EAAAssC,oBAAmB/rC,EAAMgsC,IAC7C,OAAO,CAGb,CACA,OAAO,CAAI,KAKf,MAAM3zC,EAAK,IAAIjD,EAAAs0C,iBAAiBiC,EAAel7D,KAAkBuvB,GAAQ7I,EACtEa,SAAStrB,OAAOD,KAAKm+D,GAAkBn6D,KAAK1E,IAC3C,MAAMU,EAA4BV,EAAIuE,MAAM,KACtCimB,EAAWq0C,EAAiB7+D,GAC5B4zB,GAAO,EAAAF,EAAAssC,oBAAmB/rC,EAAMvzB,GACtC,MAAO,CAAEkpB,EAAGY,SAASA,GAAWoJ,EAAM,OAClC,CACNm1B,QAASA,IAAMpT,EAAMz0B,YAMvB,OAFA2oC,EAAYv9B,EAAIqpB,EAAOkpB,EAAkBt8C,EAAWm9C,GAAyBn4B,QAAQm3B,IAE9EpyC,CACT,EAOA7oB,EAAAA,eAAA46D,EASA56D,EAAAA,aAAA+iC,EA0BA/iC,EAAAA,yBAAA66D,EAwCA76D,EAAAA,YAAAomD,EA2CApmD,EAAAA,gCAAAw7D,EA0BAx7D,EAAAA,0BAAA27D,EAiCA37D,EAAAA,0BAAA,SAA0CwrB,EAAuB3C,GAI/D,OAHI,EAAAoH,EAAAs2B,WAAU/6B,GAAS2E,GAA0B,SAAlBA,EAAK7G,aAClCT,EAAKA,EAAG9nB,QAAOyvB,IAAQ,EAAAmqC,EAAA8B,sBAAqBjsC,EAAMhF,MAE7C3C,CACT,2gB9IjSAvkB,EAAA0a,EAAA,KAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,mH+IAA,MAAAikB,EAAAjF,EAAA,OAeA,MAAsB2nC,UACZ1iC,EAAAE,MAIRrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EAPFP,EAAAA,wBAAA2mD,2gB/IhBAriD,EAAA0a,EAAA,OAAAhf,mHgJCA,MAAAikB,EAAAjF,EAAA,OAgBA,MAAsB4wC,UACZ3rC,EAAAE,MAIRrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EAPFP,EAAAA,wBAAA4vD,2gBhJjBAtrD,EAAA0a,EAAA,OAAAhf,wGiJIA,MAAA6lB,EAAA7G,EAAA,OAEAiF,EAAAjF,EAAA,OAEAiQ,EAAAjQ,EAAA,OAWA+G,EAAA/G,EAAA,OACAgH,EAAAhH,EAAA,OACA09C,EAAA19C,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YAaf,MAAsB6gC,UACZhjC,EAAAE,MAsCRrZ,WAAAA,CAAmBvK,EAAyBqC,GAC1CuY,MAAM5a,GAjCD,KAAA6sD,eAAgB,EAkCrBtxD,KAAKorD,YAActkD,EAAQskD,YAC3BprD,KAAKqrD,aAAevkD,EAAQukD,aAC5BrrD,KAAKsrD,aAAexkD,EAAQwkD,cAAgBxnD,OAAO+pC,kBACnD7tC,KAAKsvD,gBAAkBxoD,EAAQwoD,kBAAmB,EAClDtvD,KAAKosD,gBAAkBtlD,EAAQslD,kBAAmB,EAClDpsD,KAAK+tD,OAASjnD,EAAQinD,SAAU,EAChC/tD,KAAKurD,wBAA0BzkD,EAAQykD,0BAA2B,CACpE,CAUO,WAAOnpC,CAAKsK,EAAoB1J,GACrC,OAAOA,EACJ7d,KAAK8lB,IACJ,MAAMoJ,EAAO3H,EAASplB,IAAI2jB,GAC1B,OAAIoJ,EACKA,EAAKn0B,MAEP,EAAE,IAEVmF,KAAK,GACV,CAUO,sBAAOmtD,CAAgB9lC,EAAwB1J,GACpD,OAAOA,EACJ7d,KAAK8lB,IACJ,MAAMoJ,EAAO3H,EAASplB,IAAI2jB,GAC1B,OAAIoJ,GACK,EAAAnK,EAAA8D,cAAaqG,GAEf,EAAE,IAEVhvB,KAAK,GACV,CAOO,2BAAOqmD,CAAqBvY,GACjC,MAAMnwB,EAAYmwB,EAAUhuC,KAAIkoB,GAAYA,EAASrK,YACrD,IAAI69C,EAAY79C,EAAU,GAC1B,IAAK,MAAM7C,KAAS6C,EAAUxe,MAAM,GAClCq8D,EAAYA,EAAU57D,QAAO67D,GAAM3gD,EAAMge,MAAKj+B,GAASA,EAAMA,QAAU4gE,EAAG5gE,UAE5E,OAAO2gE,CACT,CAOO,oBAAO1R,CAAchc,GAC1B,MAAO,IAAK,IAAI50B,IAAI40B,EAAUnkB,SAAQ3B,GAAYA,EAASrK,UAAU7d,KAAI8lB,GAAYA,EAAS/qB,YAC3FiF,KAAI8lB,GAAYZ,EAAGY,SAASA,IACjC,CAQO,mBAAOy1B,IAAgBh0B,GAC5B,GAAwB,IAApBA,EAASnrB,OACX,OAAO,KAET,GAAwB,IAApBmrB,EAASnrB,OACX,OAAOmrB,EAAS,GAGlB,IAAIwkC,EAAgBxkC,EAAS,GAC7B,IAAK,MAAMo1B,KAAWp1B,EAASloB,MAAM,GAAI,CACvC,MAAMi/B,EAASytB,EAAIpe,MAAMgP,GACzB,IAAKre,EACH,OAAO,KAETytB,EAAMztB,CACR,CACA,OAAOytB,CACT,CAOO,qBAAOhC,CAAe7hC,GAC3B,OAAOA,EAASO,WAClB,CAMO,yBAAa69B,CAAan+C,GAC/B,aAAazH,QAAQ4rB,IAAInkB,EAAQnI,KAAIk/B,GAASA,EAAMxL,OAAOxL,aAC7D,CAMO,oCAAai/B,CAAwBh/C,GAC1C,MAAM6lC,QAAkBgY,EAAaM,aAAan+C,GAClD,OAAOA,EAAQnI,KAAI,CAACk/B,EAAOhjC,KAAM,IAAMgjC,EAAOhX,SAAU8lB,EAAU9xC,MACpE,CAMO,6BAAOyqD,CAAuB3Y,GACnC,OAAOA,EAAUhuC,KAAIkoB,GAAYA,EAASiqC,SAAW,EAAIjqC,EAASu7B,aAAe,GACnF,CAMO,0BAAOoD,CAAoB7Y,GAChC,OAAOA,EACJhuC,KAAIkoB,GAAYA,EAASiqC,UAAYjqC,EAASu7B,aAAe,GAAKv7B,EAASiqC,SAAW,GAC3F,CAMOyJ,cAAAA,CAAe5tB,GAEpB,MAAMvyC,EAAQ,IAAIuyB,EAAAQ,wBACZ2f,EAAqBA,IAAY1yC,EAAM2yC,aAC7C,IAAK,MAAMlmB,KAAY8lB,EACrB9lB,EAASzsB,MAAMwwB,sBAAsBkiB,GAEvC,OAAO1yC,CACT,CAWO,6BAAM+qD,CACXr+C,EACA6lC,EACAvqB,EACAo4C,EAA6C,CAAC,EAC9C5S,GAAW,GAEX,IAAI6S,EAeJ,OAdID,EAAgBpzC,YAClBqzC,EAAoBD,EAAgBpzC,aAEpCqzC,EAAoB9tB,EACjBnW,QAAO,CAACk0B,EAAiC7jC,KACxC,MAAM6zC,EAAkB/V,EAAa+D,eAAe7hC,GACpD,MAAO,CACL3gB,KAA+B,aAAzBw0D,EAAgBx0D,KAAsB,WAAawkD,EAAIxkD,KAC7DxM,MAAOgxD,EAAIhxD,OAASkuD,EAAWzpD,KAAKC,IAAI,EAAGs8D,EAAgBhhE,OAASghE,EAAgBhhE,OACrF,GACA,CAAEwM,KAAM,QAASxM,MAAO,IAC7B+gE,EAAkB/gE,cAAgBF,KAAKwtD,wBAAwBhiC,QAAQ,CAAEle,UAASsb,aAAY6kC,aAGzF,CACL7sD,MAAOZ,KAAK+gE,eAAe5tB,MACxB6tB,EACHpzC,YAAa,CACXlhB,KAAMu0D,EAAkBv0D,KACxBxM,MAAO+gE,EAAkB/gE,OAE3B0zB,iBAAkBotC,EAAgBptC,kBAAoBuf,EAAUhV,MAAK9Q,GAAYA,EAASuG,mBAC1F5Q,UAAWmoC,EAAagE,cAAchc,GAE1C,CASO,4BAAaoZ,CAClBU,EACA3/C,EACAsb,GAIA,GADyBtb,EAAQ6wB,MAAKkG,GAASA,EAAMhX,SAASuG,mBAE5D,OAAOtmB,EAIT,MAAM6zD,EAA8C,CAAC,EACrD,IAAK,MAAM98B,KAAS/2B,EAClB,IAAK,MAAM2d,KAAYoZ,EAAMhX,SAASrK,UAAW,CAC/C,IAAI8K,EAAUqzC,EAAoBl2C,EAAS/qB,OACtC4tB,IACHA,EAAU,GAEZqzC,EAAoBl2C,EAAS/qB,SAAW4tB,CAC1C,CAIF,MAAMszC,EAAqC,GAC3C,IAAK,MAAQn2C,EAAUiC,KAAW9rB,OAAOkM,QAAQ6zD,GAC3Cj0C,GAAS,GACXk0C,EAAyB79D,KAAK0nB,GAKlC,GAAwC,IAApCm2C,EAAyB7/D,OAC3B,MAAM,IAAIQ,MAAM,qEAKlB,MAAMs/D,EAA0D,GAChE,IAAK,MAAMh9B,KAAS/2B,EAAS,CAC3B,IAAIg0D,GAAY,EAChB,IAAK,MAAMr2C,KAAYoZ,EAAMhX,SAASrK,UACpC,GAAIo+C,EAAyBplD,SAASiP,EAAS/qB,OAAQ,CACrDohE,GAAY,EACZ,KACF,CAEGA,GACHD,EAA8B99D,KAAK8gC,EAEvC,CAEA,aAAc4oB,EAAwBzhC,QAAQ,CAAEle,UAASsb,aAAYtb,QAClEihC,MAAK,CAACuc,EAAWC,KAGhB,MAAMwW,EAA6BF,EAA8BrlD,SAAS8uC,GAE1E,OAAIyW,IADgCF,EAA8BrlD,SAAS+uC,GAElE,EAEFwW,EACL,GACG,CAAC,GAEZ,CASO,UAAMt3D,CAAKse,GAEhB,GAAIA,EAAO7b,OAAS1M,KAAKorD,YACvB,MAAM,IAAIrpD,MAAM,GAAG/B,KAAKgK,+CAA+ChK,KAAKorD,wBAAwB7iC,EAAO7b,oBAI7G,GAAI6b,EAAOjb,QAAQ/L,QAAU,EAC3B,MAAM,IAAIQ,MAAM,GAAG/B,KAAKgK,4CAI1B,GAAIhK,KAAKsvD,gBAAkB/mC,EAAOjb,QAAQ/L,OAASvB,KAAKsrD,aAAe/iC,EAAOjb,QAAQ/L,OAASvB,KAAKsrD,aAClG,MAAM,IAAIvpD,MAAM,GAAG/B,KAAKgK,iBAAiBhK,KAAKsrD,gCAC1BtrD,KAAKsvD,gBAAkB,QAAU,+BAC5B/mC,EAAOjb,QAAQ/L,WAI1C,IAAK,MAAM8iC,KAAS9b,EAAOjb,QACzB,GAA0B,aAAtB+2B,EAAMxL,OAAOnsB,KAEf,MAAM,IAAI3K,MAAM,8DAA8DsiC,EAAMxL,OAAOnsB,SAI/F,MAAMymC,QAAkBgY,EAAaM,aAAaljC,EAAOjb,SAGzD,IAAKtN,KAAKosD,gBACR,IAAK,MAAM/+B,KAAY8lB,EACrB,GAAI9lB,EAASuG,iBACX,MAAM,IAAI7xB,MAAM,SAAS/B,KAAKgK,+CAMpC,GAAIhK,KAAKurD,yBAAmF,IAAxDJ,EAAaO,qBAAqBvY,GAAW5xC,OAC/E,MAAM,IAAIQ,MAAM,SAAS/B,KAAKgK,gEAGhC,aAAahK,KAAK4rD,oBAAoBrjC,EAAQ4qB,EAChD,CAOO,SAAM7qB,CAAIC,GAGf,IAAIi5C,EACAj5C,EAAOK,QAAQzb,IAAI4c,EAAAuH,cAAcohB,2BACnC8uB,EAA8Bj5C,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cAAcshB,uBAC/DrqB,EAAOK,QAAUL,EAAOK,QAAQ9c,IAAIie,EAAAuH,cAAcshB,sBAAuBrqB,IAI3E,MAAMmqB,EAAgEnqB,EAAOK,QAAQthB,IAAIyiB,EAAAuH,cACtFohB,yBACH,IAAI+uB,EACAzhE,KAAKsxD,eAAiB5e,IACxB+uB,EAAe,CAAC,EAEhB/uB,EAAwBqF,cACtBypB,GACAhqB,GAAQA,EAAKF,gBAAgBviB,WAAW,UAE1C2d,EAAwBC,aACtB,QAAQ3yC,KAAKorD,cACbprD,KAAKqrD,aACL9iC,EACAi5C,EACAxhE,KAAKgK,KACLy3D,IAKJ,MAAM,OAAE59D,EAAM,qBAAEkpD,SAA+B/sD,KAAKwrD,UAAUjjC,GACxD4qB,QAAkBgY,EAAaM,aAAaljC,EAAOjb,SAGzD,GAAIm0D,EAAc,EAEhB,EAAAb,EAAAc,oBAAmB79D,EAAO2oB,gBACvBlmB,MAAMq7D,IACLjvB,EAAyBuF,eAAe1vB,EAAQ,CAC9CgxB,gBAAiBooB,EAASz0C,MAC1BssB,SAAUmoB,EAASnoB,SACnBC,SAAUkoB,EAASloB,UACnB,IAGNr4C,OAAOoU,OAAOisD,EAAc1U,GAC5B,MAAM6U,EAAgBzuB,EAAUhuC,IAAIgmD,EAAa+D,gBAKjD,GAJAuS,EAAaG,cAAgBA,EAC7BH,EAAaI,uBAAyB7hE,KAAK4rD,oBAAoBrjC,EAAQ4qB,GAGnEnzC,KAAK+tD,OACP,IAAK,IAAI1sD,EAAI,EAAGA,EAAIknB,EAAOjb,QAAQ/L,OAAQF,IAAK,CAC9C,MAAMgjC,EAAQ9b,EAAOjb,QAAQjM,GAC7BqxC,EAAyBsF,aACvB3T,EAAM1Z,UACNpC,GAEFmqB,EAAyBuF,eAAe5T,EAAM1Z,UAAW,CAAEiD,YAAag0C,EAAcvgE,IACxF,CAEJ,CAKA,OAFAwC,EAAOwpB,UAAW,EAAA8F,EAAA4pC,iBAAgBl5D,EAAOwpB,UAElCxpB,CACT,EAtbFK,EAAAA,aAAAinD,0GCnCA,MAAAnhC,EAAA9G,EAAA,OAKA,MAAa2pC,UAA2B7iC,EAAA6C,kBAItC7d,WAAAA,CAAmBwgB,EAA0Bs9B,EAAmBhmD,GAC9DuY,MAAMmQ,EAAQ1oB,GAHN,KAAAwS,MAAa,GAIrBtZ,KAAK8sD,UAAYA,CACnB,CAEUgV,sBAAAA,GACR,MAAM/0C,EAAK,IAAI/C,EAAA0J,cAAc1zB,KAAKsZ,MAAO,CAAE8T,WAAW,IAEtD,OADAptB,KAAKsZ,MAAQ,GACNyT,CACT,CAEmBg1C,UAAAA,CAAW5/C,EAAS9b,EAAkB9C,GACvDvD,KAAKsZ,MAAM/V,KAAK4e,GACZniB,KAAKsZ,MAAM/X,QAAUvB,KAAK8sD,WAC5BvpD,EAAKvD,KAAK8hE,0BAEZz7D,GACF,CAEmBwoC,MAAAA,CAAOxoC,GACpBrG,KAAKsZ,MAAM/X,OAAS,GACtBvB,KAAKiuB,MAAMjuB,KAAK8hE,0BAElBziD,MAAMwvB,OAAOxoC,EACf,EA5BFnC,EAAAA,gBAAA2oD,2gBlJNArkD,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,+BmJkCA,SAAS89D,EACP13D,EACAwjB,EACAm0C,GAEA,KAAM,yBAA0B33D,GAAW,CAKzC,GAHMA,EAAU43D,sBAAuB,EAGnC,UAAW53D,EAAU,CACvB,MAAM63D,EAAe73D,EAASmV,MAC9BnV,EAASmV,MAAQ,CAACyN,EAAe7mB,KAC/B,MAAMk3C,EAAYI,YAAYD,MAC9BykB,EAAQx5D,KAAK2B,EAAU4iB,GAAO,KAC5BY,EAAQ0rB,UAAYmE,YAAYD,MAAQH,EACxCl3C,GAAM,GACN,CAEN,CAGA,GAAI,SAAUiE,EAAU,CAEtB,MAAM63D,EAAe73D,EAASqV,KAC9BrV,EAASqV,KAAO,KACd,MAAM49B,EAAYI,YAAYD,MACxBpoB,EAAM6sC,EAAQx5D,KAAK2B,GAKzB,OAJI23D,GAAO3sC,GACTxH,EAAQZ,QAEVY,EAAQ0rB,UAAYmE,YAAYD,MAAQH,EACjCjoB,CAAG,CAEd,CAGA,GAAI2sC,EAAK,CACP,MAAM1kB,EAAYI,YAAYD,MAC9BpzC,EAASyQ,GAAG,OAAO,KACjB+S,EAAQ2rB,SAAWkE,YAAYD,MAAQH,CAAS,GAEpD,CAGI,YAAajzC,GACf03D,EAA6B13D,EAAS+zD,QAASvwC,GAAS,EAE5D,CACF,8EA/DA5pB,EAAAA,mBAAA,SAAmCoG,GACjC,MAAMq3D,EAA6B,CACjCz0C,MAAO,EACPssB,SAAU,EACVC,SAAU,GAGZ,OADAuoB,EAAwB13D,EAAUq3D,GAAU,GACrC,IAAI97D,SAASC,IAClBwE,EAASyQ,GAAG,OAAO,KACjBjV,EAAQ67D,EAAS,GACjB,GAEN,qHChCA,MAAAx5C,EAAAjF,EAAA,OAeA,MAAsBg0C,UACZ/uC,EAAAE,MAIRrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EAPFP,EAAAA,2BAAAgzD,2gBpJhBA1uD,EAAA0a,EAAA,OAAAhf,6GqJcA,MAAAy6D,EAAAz7C,EAAA,OAiBA,MAAsBk/C,UACpBzD,EAAAv2C,wBAIApZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EAPFP,EAAAA,kBAAAk+D,2HC9BA,MAAAzD,EAAAz7C,EAAA,OAcA,MAAsBy0C,UAAyCgH,EAAAt1C,6BAW7Dra,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAGO,uBAAMmlB,GACX,OAAO,CACT,EAlBF1lB,EAAAA,iCAAAyzD,2gBtJfAnvD,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,+GuJAA,MAAAikB,EAAAjF,EAAA,OAeA,MAAsBm/C,UAA4Bl6C,EAAAE,MAIhDrZ,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,EANFP,EAAAA,oBAAAm+D,2JChBA,MAAAC,EAAAp/C,EAAA,OACA6G,EAAA7G,EAAA,OAMAq/C,EAAAr/C,EAAA,OAGA,SAAgBs/C,EAAkBpjD,EAA6C+5B,GAE7E,OAAO/5B,GAAQja,KAAIuvB,IAAQ,EAAA4tC,EAAAG,iBAAgB/tC,EAAMykB,IACnD,CAEA,SAAgBupB,EAAYn6C,GAC1B,MAAMwO,EAAcxO,EAAOK,QAAQthB,IAAIyiB,EAAA+M,mBAAmBC,aACpDoiB,EAAK5wB,EAAOK,QAAQthB,IAAsByiB,EAAA8I,wBAAwBC,YAAYxrB,IAAIyvB,GACxF,OAAKoiB,EAGE,IACF5wB,EACHosB,iBAAkB6tB,EAAkBj6C,EAAOosB,iBAAkBwE,GAC7DvE,iBAAkB4tB,EAAkBj6C,EAAOqsB,iBAAkBuE,IALtD5wB,CAOX,CAhBArkB,EAAAA,kBAAAs+D,EAKAt+D,EAAAA,YAAAw+D,EAmBA,MAAsB9J,UAAuC2J,EAAAF,oBACpD,UAAMp4D,CAAKwmB,GAChB,OAAO,CACT,CAEO,SAAMnI,CAAIC,GACf,MAAMwO,QAAoB/2B,KAAK+4D,eAAexwC,EAAOK,SACrD,aAAa5oB,KAAKwrD,UAAUz0B,EAAa2rC,EAAYn6C,GACvD,CAOU,eAAMijC,CACdz0B,EACAxO,GAgBA,MAAO,CAAEqQ,QAdO9L,gBACPvE,EAAOqsB,iBAAmB7d,EAAYlG,OAAOtI,EAAOqsB,kBAAoB/uC,QAAQC,iBAChFyiB,EAAOwrB,aACZhd,EAAYgd,aACVxrB,EAAOwrB,aAAaF,OACpBtrB,EAAOwrB,aAAaC,iBACpBzrB,EAAOwrB,aAAaE,YAEtBpuC,QAAQC,iBACHyiB,EAAO+rB,aACZvd,EAAYud,aAAa/rB,EAAO+rB,aAAaT,OAAQtrB,EAAO+rB,aAAaC,qBACzE1uC,QAAQC,iBACHyiB,EAAOosB,iBAAmB5d,EAAYqE,OAAO7S,EAAOosB,kBAAoB9uC,QAAQC,UAAU,EAGrG,EAlCF5B,EAAAA,+BAAA00D,wlBxJlCApwD,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,sPOHA,MAAA6lB,EAAA7G,EAAA,OAQA,SAAgBy/C,EAAyBC,GACvC,MAAkC,iBAApBA,GAAgC,WAAYA,CAC5D,CAiBA,SAAgBroC,EAAwBqoC,GACtC,OAAOD,EAAyBC,GAAmBA,EAAkBA,EAAgB1iE,KACvF,CArBAgE,EAAAA,yBAAAy+D,EAQAz+D,EAAAA,uBAAA,SAAuC0+D,GACrC,MAA+B,iBAApBA,EACF,GAEF,WAAYA,EAAkB,aAAeA,EAAgBl2D,IACtE,EAMAxI,EAAAA,wBAAAq2B,EASAr2B,EAAAA,0BAAA,SAA0C0+D,EAAmCh6C,GAC3E,MAA+B,iBAApBg6C,GAAgC,WAAYA,IAAoBA,EAAgBh6C,QAClFA,EAEFA,EAAQkqB,MAAM8vB,EAAgBh6C,QACvC,EAOA1kB,EAAAA,sBAAA,SAAsC0kB,GACpC,OAAOA,EAAQthB,IAAIyiB,EAAA+M,mBAAmBC,YACxC,EAOA7yB,EAAAA,yBAAA,SAAyC6yB,GACvC,GAAIA,EAAa,CACf,IAAI8rC,EAAUtoC,EAAwBxD,GACtC,GAAuB,iBAAZ8rC,EAAsB,CAE/B,MAAMC,EAAeD,EAAQ/4D,QAAQ,KAKrC,OAJIg5D,GAAgB,IAClBD,EAAUA,EAAQr+D,MAAM,EAAGs+D,IAGtBD,CACT,CACF,CACF,8VkJtEA,MAAA16C,EAAAjF,EAAA,OA4Bahf,EAAAA,SAAW,CAKtBoyB,IAAKnO,EAAA46C,oBAGM7+D,EAAAA,SAAW,CAItB8+D,mBAAoB,IAAI76C,EAAAyI,iBAA0B,0CAIlDqyC,KAAM,IAAI96C,EAAAyI,iBAAyB,2BAInChpB,MAAO,IAAIugB,EAAAyI,iBAA+B,4BAI1CsyC,YAAa,IAAI/6C,EAAAyI,iBAAyB,mCAK1CuyC,gBAAiB,IAAIh7C,EAAAyI,iBAA0B,wCAK/CwyC,eAAgB,IAAIj7C,EAAAyI,iBAAyB,uCAI7CyyC,eAAgB,IAAIl7C,EAAAyI,iBAAyB,uCAI7C0yC,uBAAwB,IAAIn7C,EAAAyI,iBAAyB,kDAG1C1sB,EAAAA,gBAAkB,CAK7Bq/D,mBAAoB,IAAIp7C,EAAAyI,iBAA0B,4CAGvC1sB,EAAAA,gBAAkB,CAI7Bs/D,SAAU,IAAIr7C,EAAAyI,iBAAuB,0CAG1B1sB,EAAAA,cAAgB,CAI3Bu/D,iBAAkB,IAAIt7C,EAAAyI,iBAAgC,gDAG3C1sB,EAAAA,cAAgB,CAI3BqtB,yBAA0B,IAAIpJ,EAAAyI,iBAC5B,uDAKFipB,gBAAiB,IAAI1xB,EAAAyI,iBAA+B,8CAKpD8F,YAAa,IAAIvO,EAAAyI,iBAAkC,0CAInDgG,4BAA6B,IAAIzO,EAAAyI,iBAAsB,mDAIvDokB,QAAS,IAAI7sB,EAAAyI,iBAA0B,sCAIvC+J,YAAa,IAAIxS,EAAAyI,iBAAyB,0CAI1C4H,MAAO,IAAIrQ,EAAAyI,iBAAoC,oCAI/ColB,QAAS,IAAI7tB,EAAAyI,iBAAyB,sCAKtC4F,uBAAwB,IAAIrO,EAAAyI,iBAC1B,qDAMFuF,eAAgB,IAAIhO,EAAAyI,iBAAuB,6CAS3CurC,yBAA0B,IAAIh0C,EAAAyI,iBAE1B,uDAOJwrC,mBAAoB,IAAIj0C,EAAAyI,iBAEpB,iDAIJ8yC,gBAAiB,IAAIv7C,EAAAyI,iBAAoC,8CAIzDmI,QAAS,IAAI5Q,EAAAyI,iBAAmC,sCAIhD8hB,wBAAyB,IAAIvqB,EAAAyI,iBAC3B,sDAMFgiB,sBAAuB,IAAIzqB,EAAAyI,iBAAsB,oDAIjD8kB,cAAe,IAAIvtB,EAAAyI,iBAAsB,YAIzCsI,QAAS,IAAI/Q,EAAAyI,iBAA0B,sCAIvCgL,kBAAmB,IAAIzT,EAAAyI,iBAA0B,iDAGtC1sB,EAAAA,mBAAqB,CAIhCymB,UAAW,IAAIxC,EAAAyI,iBAAyB,2CAIxC89B,iBAAkB,IAAIvmC,EAAAyI,iBAAmC,kDAIzD+9B,mBAAoB,IAAIxmC,EAAAyI,iBAAqC,oDAI7D8vB,aAAc,IAAIv4B,EAAAyI,iBAA2B,8CAI7CgsC,SAAU,IAAIz0C,EAAAyI,iBAA0B,0CAIxCxF,iCAAkC,IAAIjD,EAAAyI,iBACpC,+DAKFshB,eAAgB,IAAI/pB,EAAAyI,iBAAyB,gDAI7C42B,kBAAmB,IAAIr/B,EAAAyI,iBAA0B,mDAIjDgB,aAAc,IAAIzJ,EAAAyI,iBAAwC,+CAG/C1sB,EAAAA,mBAAqB,CAIhCy/D,eAAgB,IAAIx7C,EAAAyI,iBAAkC,mDAItDgzC,aAAc,IAAIz7C,EAAAyI,iBAA0B,iDAI5CizC,cAAe,IAAI17C,EAAAyI,iBAAsC,mDAG9C1sB,EAAAA,uBAAyB,CAIpC4/D,qBAAsB,IAAI37C,EAAAyI,iBAA0B,8DAIpDmzC,kBAAmB,IAAI57C,EAAAyI,iBAA0B,sBAGtC1sB,EAAAA,wBAA0B,CAIrC4uB,UAAW,IAAI3K,EAAAyI,iBACb,iDAKF6F,kCAAmC,IAAItO,EAAAyI,iBACrC,yEAMFgV,SAAU,IAAIzd,EAAAyI,iBAA0B,iDAG7B1sB,EAAAA,mBAAqB,CAIhC6yB,YAAa,IAAI5O,EAAAyI,iBAAmC,+CAGzC1sB,EAAAA,yBAA2B,CAItC8/D,eAAgB,IAAI77C,EAAAyI,iBAA2B,wDAGpC1sB,EAAAA,YAAc,CAIzBssD,iBAAkB,IAAIroC,EAAAyI,iBAAyB,4CAGpC1sB,EAAAA,eAAiB,CAI5BojD,gBAAiB,IAAIn/B,EAAAyI,iBACnB,oDAKFqB,kBAAmB,IAAI9J,EAAAyI,iBACrB,gkBzJ3TJpoB,EAAA0a,EAAA,OAAAhf,4H0JCA,MAAAw1D,EAAAx2C,EAAA,MAKA,MAAaoP,EAGXtjB,WAAAA,CAAmB4Q,EAA4B,CAAC,GAC9C5f,KAAKmF,KAAM,EAAAu0D,EAAAl4C,KAAiB5B,EAC9B,CAKOsW,UAAAA,CAAcz1B,EAA2BP,GAC9C,OAAOF,KAAKmN,IAAI1M,GAAOT,KAAOA,KAAK8L,IAAIrL,EAAKP,EAC9C,CAEO4L,GAAAA,CAAOrL,EAA2BP,GACvC,OAAOF,KAAKikE,OAAOxjE,EAAIuJ,KAAM9J,EAC/B,CAEO+jE,MAAAA,CAAOxjE,EAAaP,GACzB,OAAO,IAAIoyB,EAActyB,KAAKmF,IAAI2G,IAAIrL,EAAKP,GAC7C,CAEO2wB,OAAUpwB,GACf,OAAO,IAAI6xB,EAActyB,KAAKmF,IAAI0rB,OAAOpwB,EAAIuJ,MAC/C,CAEO1C,GAAAA,CAAO7G,GACZ,OAAOT,KAAKkkE,OAAOzjE,EAAIuJ,KACzB,CAEOk6D,MAAAA,CAAOzjE,GACZ,OAAOT,KAAKmF,IAAImC,IAAI7G,EACtB,CAEOsyB,OAAAA,CAAWtyB,GAChB,IAAKT,KAAKmN,IAAI1M,GACZ,MAAM,IAAIsB,MAAM,iBAAiBtB,EAAIuJ,sCAEvC,OAAWhK,KAAKsH,IAAI7G,EACtB,CAEO0M,GAAAA,CAAO1M,GACZ,OAAOT,KAAKmkE,OAAO1jE,EAAIuJ,KACzB,CAEOm6D,MAAAA,CAAO1jE,GACZ,OAAOT,KAAKmF,IAAIgI,IAAI1M,EACtB,CAEOqyC,KAAAA,IAASsxB,GAEd,IAAIx7C,EAA0B5oB,KAC9B,IAAK,MAAMwvB,KAAU40C,EACnB,IAAK,MAAM3jE,KAAO+uB,EAAOruB,OACvBynB,EAAUA,EAAQ9c,IAAIrL,EAAK+uB,EAAOloB,IAAI7G,IAG1C,OAAOmoB,CACT,CAEOznB,IAAAA,GACL,MAAO,IAAWnB,KAAKmF,IAAIhE,QACxBgE,KAAIk/D,GAAW,IAAIzzC,EAAiByzC,IACzC,CAEOC,IAAAA,GACL,OAAOtkE,KAAKmF,IAAIm/D,MAClB,CAEO9iE,QAAAA,GACL,MAAO,iBAAiBQ,KAAKC,UAAUjC,KAAKmF,IAAIm/D,UAClD,CAEO,CAAC/6D,OAAOg7D,IAAI,iCACjB,MAAO,iBAAiBviE,KAAKC,UAAUjC,KAAKmF,IAAIm/D,OAAQ,KAAM,QAChE,CAQO,0BAAO/xC,CAAoBiyC,GAChC,OAAOA,aAA8BlyC,EACnCkyC,EACA,IAAIlyC,GAAc,EAAAonC,EAAAl4C,KAAIgjD,GAAsB,CAAC,GACjD,EAvFFtgE,EAAAA,cAAAouB,EA6FA,MAAa1B,EAMX5hB,WAAAA,CAAmBhF,GACjBhK,KAAKgK,KAAOA,CACd,EARF9F,EAAAA,iBAAA0sB,uGCpFA1sB,EAAAA,eAAA,MAYE8K,WAAAA,CAAsBvK,GACpBrD,OAAOoU,OAAOxV,KAAMyE,EACtB,gGC3BF,MAAAggE,EAAAvhD,EAAA,OAkBA,MAAsBmF,EAiBpBrZ,WAAAA,CAAsBvK,GAbN,KAAAigE,aAAiC,GAc/CtjE,OAAOoU,OAAOxV,KAAMyE,GACpBzE,KAAKu7C,IAAIopB,UAAU3kE,MACfA,KAAK0kE,aAAanjE,OAAS,GAC7BvB,KAAKu7C,IAAIqpB,gBAAgB5kE,KAAMA,KAAK0kE,aAExC,CAOO,uBAAO5hB,CAAiBl6B,GAC7B,OAAOA,EAAQthB,IAAIm9D,EAAA1B,mBACrB,CA6BO8B,aAAAA,CAAct8C,GACnB,MAAMsQ,EAAqB74B,KAAKsoB,IAAIC,GAEpC,OADAvoB,KAAKu7C,IAAIE,MAAMz7C,KAAMuoB,EAAQsQ,GACtBA,CACT,CASO,gBAAM5C,GACX,OAAO,CACT,CASO,kBAAM6uC,GACX,OAAO,CACT,CAIUC,iBAAAA,CAAkBn8C,EAAyBhJ,GACnD,MAAMolD,EAAaplD,EAAOA,IAAS,CAAC,EAEpC,OADAolD,EAAWttB,MAAQ13C,KAAKgK,KACjBg7D,CACT,CAEUC,QAAAA,CAASr8C,EAAyB7Z,EAAiB6Q,GAC3D,MAAM2W,EAA6BlO,EAAMy6B,iBAAiBl6B,GACtD2N,GACFA,EAAO2uC,MAAMn2D,EAAS/O,KAAK+kE,kBAAkBn8C,EAAShJ,GAE1D,CAEUmd,QAAAA,CAASnU,EAAyB7Z,EAAiB6Q,GAC3D,MAAM2W,EAA6BlO,EAAMy6B,iBAAiBl6B,GACtD2N,GACFA,EAAO4uC,MAAMp2D,EAAS/O,KAAK+kE,kBAAkBn8C,EAAShJ,GAE1D,CAEU8/B,OAAAA,CAAQ92B,EAAyB7Z,EAAiB6Q,GAC1D,MAAM2W,EAA6BlO,EAAMy6B,iBAAiBl6B,GACtD2N,GACFA,EAAO6uC,KAAKr2D,EAAS/O,KAAK+kE,kBAAkBn8C,EAAShJ,GAEzD,CAEU2pB,OAAAA,CAAQ3gB,EAAyB7Z,EAAiB6Q,GAC1D,MAAM2W,EAA6BlO,EAAMy6B,iBAAiBl6B,GACtD2N,GACFA,EAAOwsB,KAAKh0C,EAAS/O,KAAK+kE,kBAAkBn8C,EAAShJ,GAEzD,CAEUylD,QAAAA,CAASz8C,EAAyB7Z,EAAiB6Q,GAC3D,MAAM2W,EAA6BlO,EAAMy6B,iBAAiBl6B,GACtD2N,GACFA,EAAOpzB,MAAM4L,EAAS/O,KAAK+kE,kBAAkBn8C,EAAShJ,GAE1D,CAEU0lD,QAAAA,CAAS18C,EAAyB7Z,EAAiB6Q,GAC3D,MAAM2W,EAA6BlO,EAAMy6B,iBAAiBl6B,GACtD2N,GACFA,EAAOgvC,MAAMx2D,EAAS/O,KAAK+kE,kBAAkBn8C,EAAShJ,GAE1D,EAzIF1b,EAAAA,MAAAmkB,4FCFAnkB,EAAAA,IAAA,MAeE8K,WAAAA,CAAmBvK,GAZA,KAAA+gE,OAAc,GACd,KAAAC,UAAoC,GAEpC,KAAAC,gBAA+B,IAAIlkD,IAUpDpgB,OAAOoU,OAAOxV,KAAMyE,EACtB,CAUOkgE,SAAAA,CAAUjtB,GACf13C,KAAKwlE,OAAOjiE,KAAKm0C,GACjB13C,KAAK2lE,wBACP,CAUOnqB,iBAAAA,CAAkBoqB,GACvB5lE,KAAKylE,UAAUliE,KAAKqiE,EACtB,CAWOC,WAAAA,CAAYnuB,GACjB,MAAMv5B,EAAgBne,KAAKwlE,OAAO17D,QAAQ4tC,GAC1C,OAAIv5B,GAAS,IACXne,KAAKwlE,OAAO1iD,OAAO3E,EAAO,IACnB,EAGX,CAWO2nD,mBAAAA,CAAoBF,GACzB,MAAMznD,EAAgBne,KAAKylE,UAAU37D,QAAQ87D,GAC7C,OAAIznD,GAAS,IACXne,KAAKylE,UAAU3iD,OAAO3E,EAAO,IACtB,EAGX,CAWO4nD,OAAAA,CAAQx9C,GACb,OAAOvoB,KAAKwlE,OAAOrgE,KAAKuyC,IAAQ,CAAiCA,QAAOsuB,MAAOtuB,EAAMztC,KAAKse,MAC5F,CASOkzB,KAAAA,CAAM/D,EAAuBnvB,EAAWsQ,GAC7C,IAAK,MAAM+sC,KAAY5lE,KAAKylE,UAC1BG,EAASnqB,MAAM/D,EAAOnvB,EAAQsQ,EAElC,CAUO+rC,eAAAA,CAAgBqB,EAAcC,GACnC,IAAK,MAAMC,KAAcD,EAAc,CACrC,IAAIE,EAAuBpmE,KAAK0lE,gBAAgBp+D,IAAI6+D,GAC/CC,IACHA,EAAuB,GACvBpmE,KAAK0lE,gBAAgB55D,IAAIq6D,EAAYC,IAEvCA,EAAqB7iE,KAAK0iE,EAC5B,CACAjmE,KAAK2lE,wBACP,CAKOA,sBAAAA,GACL,GAAI3lE,KAAK0lE,gBAAgB5lE,KAAO,EAAG,CACjC,MAAMumE,EAAc,GAGpB,IAAK,MAAMC,KAActmE,KAAK0lE,gBAAgBvkE,OAAQ,CACpD,MAAMolE,EAAevmE,KAAKwlE,OAAO17D,QAAQw8D,GACrCC,GAAgB,IAClBvmE,KAAKwlE,OAAO1iD,OAAOyjD,EAAc,GACjCF,EAAY9iE,KAAK+iE,GAErB,CAIA,KAAOD,EAAY9kE,OAAS,GAAG,CAE7B,IAAIilE,GAAsB,EAC1B,IAAK,IAAInlE,EAAI,EAAGA,EAAIglE,EAAY9kE,OAAQF,IAAK,CAC3C,IAAIolE,GAAY,EAChB,IAAK,MAAMN,KAAcnmE,KAAK0lE,gBAAgBp+D,IAAI++D,EAAYhlE,IAC5D,IAAKrB,KAAKwlE,OAAOxpD,SAASmqD,IAAeE,EAAYrqD,SAASmqD,GAAa,CACzEM,GAAY,EACZ,KACF,CAEF,GAAIA,EAAW,CACbD,EAAqBnlE,EACrB,KACF,CACF,CAGA,GAAImlE,EAAqB,EACvB,MAAM,IAAIzkE,MAAM,2CAA2C/B,KAAKgK,QAIlE,MAAM08D,EAAmBL,EAAYvjD,OAAO0jD,EAAoB,GAAG,GACnExmE,KAAKwlE,OAAOjiE,KAAKmjE,EACnB,CACF,CACF,sGC3LF,MAAAC,EAAAzjD,EAAA,OAkBA,MAAa+6C,UACH0I,EAAAC,IAYR53D,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GAZW,KAAAoiE,YAAmC,CAAC,CAavD,CAEgBlC,SAAAA,CAAUjtB,GACxB,MAAMovB,EAAU9mE,KAAK+mE,mBAAmBrvB,IAAU,cAClD,IAAI8tB,EAASxlE,KAAK6mE,YAAYC,GACzBtB,IACHA,EAASxlE,KAAK6mE,YAAYC,GAAW,IAEvCtB,EAAOjiE,KAAKm0C,GACZr4B,MAAMslD,UAAUjtB,EAClB,CAEgBmuB,WAAAA,CAAYnuB,GAC1B,MAAMovB,EAAU9mE,KAAK+mE,mBAAmBrvB,IAAU,cAC5C8tB,EAASxlE,KAAK6mE,YAAYC,GAChC,GAAItB,EAAQ,CACV,MAAMnkE,EAAImkE,EAAO17D,QAAQ4tC,GACrBr2C,GAAK,GACPmkE,EAAO1iD,OAAOzhB,EAAG,GAEG,IAAlBmkE,EAAOjkE,eACFvB,KAAK6mE,YAAYC,EAE5B,CACA,OAAOznD,MAAMwmD,YAAYnuB,EAC3B,CAEgBquB,OAAAA,CAAQx9C,GACtB,MAAMy+C,EAAWhnE,KAAKinE,oBAAoB1+C,GAC1C,OAAIy+C,EACa,IAAKhnE,KAAK6mE,YAAYG,IAAa,MAAOhnE,KAAK6mE,YAAYK,aAAe,IAC3E/hE,KAAKuyC,IAAQ,CAAiCA,QAAOsuB,MAAOtuB,EAAMztC,KAAKse,OAEhFlJ,MAAM0mD,QAAQx9C,EACvB,CAEUw+C,kBAAAA,CAAmBrvB,GAC3B,OAAO13C,KAAKk+D,sBAAsBlhC,QAAO,CAAChS,EAAam8C,IAAan8C,EAAOm8C,IAAQzvB,EACrF,CAEUuvB,mBAAAA,CAAoB1+C,GAC5B,OAAOvoB,KAAKm+D,uBAAuBnhC,QAAO,CAAChS,EAAam8C,IAAan8C,EAAOm8C,IAAQ5+C,EACtF,EAzDFrkB,EAAAA,WAAA+5D,6GCnBA,MAAAmJ,EAAAlkD,EAAA,OAEahf,EAAAA,mBAAqB,IAAIkjE,EAAAx2C,iBAAyB,qHCiB/D1sB,EAAAA,SAAA,MAmBE8K,WAAAA,CAAsBvK,GACpBrD,OAAOoU,OAAOxV,KAAMyE,EACtB,CAYOshE,OAAAA,CAAQx9C,GAEb,MAAMi9C,EAAoCxlE,KAAKu7C,IAAIwqB,QAAQx9C,GAC3D,GAAsB,IAAlBi9C,EAAOjkE,OACT,MAAM,IAAIQ,MAAM,uDAAuD/B,KAAKu7C,IAAIvxC,QAElF,OAAOw7D,CACT,CAWO,kBAAM6B,CAAa9+C,GAExB,aAAavoB,KAAKsnE,YAAY/+C,EAAQvoB,KAAK+lE,QAAQx9C,GACrD,CAYO,aAAMiD,CAAQjD,GAGnB,aADuBvoB,KAAKqnE,aAAa9+C,IAC5Bs8C,cAAct8C,EAC7B,4gBhK1FF/f,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,MAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,iHiKDAA,EAAAA,wBAAA,MAKE8K,WAAAA,CAAmB9O,GAJH,KAAAstB,SAAW,YACX,KAAA+5C,qBAAsB,EAIpCvnE,KAAKE,MAAQA,CACf,CAEOwgC,MAAAA,CAAOw5B,GAEZ,QAASA,GAA4B,cAAnBA,EAAM1sC,UAA4B0sC,EAAMh6D,QAAUF,KAAKE,KAC3E,yGCZFgE,EAAAA,gBAAA,MAUE8K,WAAAA,CAAmB9O,EAAe40B,GATlB,KAAAtH,SAAW,YAUzBxtB,KAAKE,MAAQA,EACbF,KAAK80B,WAAaA,CACpB,CAEO4L,MAAAA,CAAOw5B,GAEZ,QAASA,GAA4B,cAAnBA,EAAM1sC,UAA4B0sC,EAAMh6D,QAAUF,KAAKE,KAC3E,4gBlKvBFsI,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,4HmKAA,MAAA+1C,EAAA/2B,EAAA,OAIAskD,EAAAtkD,EAAA,OAEAukD,EAAAvkD,EAAA,OACAwkD,EAAAxkD,EAAA,OAGAhf,EAAAA,oBAAA,MAOS,iBAAOipC,GAEd,CAEAn+B,WAAAA,CAAmB8+B,EAA6C65B,GAAA,KAAAA,cAAAA,EAC9D3nE,KAAK4nE,UAAY95B,EAAK85B,WAAa,IACnC5nE,KAAK6nE,gBAAkB,IAAIL,EAAAM,gBAAgBH,EAAcI,kBAC3D,CAEUC,oBAAAA,CAAqB3zC,GAC7B,GAAsB,YAAlBA,EAAK7G,SACP,MAAM,IAAIzrB,MAAM,mBAAmBsyB,EAAKn0B,kBAAkBm0B,EAAK7G,yCAC1D,KACJ,EAAAk6C,EAAAO,aAAY5zC,EAAKyN,SAAS5hC,MAAOunE,EAAAS,UAAUC,eAAgBnoE,KAAK2nE,cAAcI,mBAE/E,MAAM,IAAIhmE,MAAM,iBAAiBsyB,EAAKyN,SAAS5hC,oBAAoBm0B,EAAKn0B,kBAAkBm0B,EAAK7G,yCAEjG,OAA0BxtB,KAAK6nE,gBAAgBO,iBAAiB/zC,EAClE,GAMFnwB,EAAAA,WAAA,MAIE8K,WAAAA,CAAmB8+B,EAA6Cu6B,GAAA,KAAAA,oBAAAA,EAFtD,KAAAC,eAA2C,IAAI9mD,IAGvDxhB,KAAK+vC,SAAWjC,EAAKiC,QACvB,CAEO,iBAAO5C,CAAWo7B,GACvB,OAAOA,EAAUp7B,YACnB,CAEOtpC,MAAAA,GACL,OAAO7D,KAAKqoE,oBAAoBxkE,QAClC,CAEO8oC,GAAAA,CAAIjgB,EAAoBzB,EAAW,IACnCjrB,KAAKwoE,QAAQ97C,EAAUzB,KAC1BjrB,KAAKqoE,oBAAoB17B,IAAIjgB,GAC7B1sB,KAAKyoE,QAAQ/7C,EAAUzB,GAE3B,CAEQu9C,OAAAA,CAAQn0C,EAAgBpJ,GAC9B,MAAMnf,EAAM9L,KAAKsoE,eAAehhE,IAAI2jB,GACpC,OAAOjrB,KAAK+vC,eAAoB5vC,IAAR2L,GAAqBA,EAAIqB,IAAI8sC,EAAUjsB,aAAaqG,GAC9E,CAEQo0C,OAAAA,CAAQp0C,EAAgBpJ,GAC1BjrB,KAAK+vC,WACF/vC,KAAKsoE,eAAen7D,IAAI8d,IAC3BjrB,KAAKsoE,eAAex8D,IAAImf,EAAU,IAAI1M,KAExCve,KAAKsoE,eAAehhE,IAAI2jB,GAAWxM,IAAIw7B,EAAUjsB,aAAaqG,IAElE,mGC5EF,MAAAq0C,EAAAxlD,EAAA,OACAylD,EAAAzlD,EAAA,OACA0lD,EAAA1lD,EAAA,OACAlmB,EAAAkmB,EAAA,OACA2lD,EAAA3lD,EAAA,OAOA,MAAa4lD,UAAgBD,EAAAE,oBAA7B/5D,WAAAA,uBACmB,KAAAg6D,OAASL,EAAAM,iBAAiBjsE,EAAEksE,gBAAgBC,UAC5C,KAAAC,QAAUT,EAAAM,iBAAiBjsE,EAAEksE,gBAAgBG,UACtD,KAAAzoE,WAAmCT,CAyB7C,CAvBS,iBAAgBgtC,GACrB,OAAO,EAAAy7B,EAAAU,SAAQ,GAAGC,OACpB,CAEO58B,GAAAA,CAAItY,GACT,QAAmBl0B,IAAfH,KAAKY,MAAqB,CAC5B,MAAMgtD,EAAM5tD,KAAKgoE,qBAAqB3zC,GACtCr0B,KAAKY,MAAQ,CAAEgtD,MAAK1gC,MAAO,EAC7B,KAAO,CACL,MAAMs8C,EAAexpE,KAAKgoE,qBAAqB3zC,GAC/Cr0B,KAAKY,MAAMgtD,IAAyB5tD,KAAKgpE,OAAOziE,MAAM,CAAEvG,KAAKY,MAAMgtD,IAAK4b,GAAgBxpE,KAAK2nE,eAC7F3nE,KAAKY,MAAMssB,OACb,CACF,CAEOrpB,MAAAA,GACL,QAAmB1D,IAAfH,KAAKY,MACP,OAAOkoE,EAAQ37B,aAEjB,MAAMjgB,EAAQ,IAAIw7C,EAAEe,eAAezpE,KAAKY,MAAMssB,OAE9C,OADeltB,KAAKopE,QAAQ7iE,MAAM,CAAEvG,KAAKY,MAAMgtD,IAAK1gC,GAASltB,KAAK2nE,eACpD4B,OAChB,EA3BFrlE,EAAAA,QAAA4kE,gGCXA,MAAAF,EAAA1lD,EAAA,OACA2lD,EAAA3lD,EAAA,OAEA,MAAawmD,UAAcb,EAAAE,oBAA3B/5D,WAAAA,uBACU,KAAApO,WAA4BT,CAkBtC,CAjBS,iBAAgBgtC,GACrB,OAAO,EAAAy7B,EAAAU,SAAQ,GAAGC,OACpB,CAEO58B,GAAAA,QACcxsC,IAAfH,KAAKY,QACPZ,KAAKY,MAAQ,GAEfZ,KAAKY,OACP,CAEOiD,MAAAA,GACL,YAAmB1D,IAAfH,KAAKY,MACA8oE,EAAMv8B,cAER,EAAAy7B,EAAAU,SAAQtpE,KAAKY,OAAO2oE,OAC7B,EAlBFrlE,EAAAA,MAAAwlE,sGCHA,MAAAd,EAAA1lD,EAAA,OACA2lD,EAAA3lD,EAAA,OAEA,MAAaymD,UAAoBd,EAAAE,oBAAjC/5D,WAAAA,uBACU,KAAApO,WAA4BT,EAC5B,KAAAypE,mBAAoB,EACpB,KAAAC,kBAAmC1pE,CA8B7C,CA5BS,iBAAgBgtC,GACrB,OAAO,EAAAy7B,EAAAxoE,QAAO,IAAImpE,OACpB,CAEO58B,GAAAA,CAAItY,QACUl0B,IAAfH,KAAKY,OACPZ,KAAKY,MAAQyzB,EAAKn0B,MACI,YAAlBm0B,EAAK7G,WACPxtB,KAAK6pE,aAAex1C,EAAKsC,YAG3B32B,KAAKY,OAASZ,KAAK4nE,UAAYvzC,EAAKn0B,MAChCF,KAAK4pE,mBAAuC,YAAlBv1C,EAAK7G,UAA0BxtB,KAAK6pE,eAAiBx1C,EAAKsC,WACtF32B,KAAK4pE,mBAAoB,EACzB5pE,KAAK6pE,kBAAe1pE,GAG1B,CAEO0D,MAAAA,GACL,YAAmB1D,IAAfH,KAAKY,MACA+oE,EAAYx8B,aAEjBntC,KAAK4pE,mBAAqB5pE,KAAK6pE,cAC1B,EAAAjB,EAAAkB,YAAW9pE,KAAKY,MAAOZ,KAAK6pE,cAAcN,SAE5C,EAAAX,EAAAxoE,QAAOJ,KAAKY,OAAO2oE,OAC5B,EAhCFrlE,EAAAA,YAAAylE,8FCHA,MAAAI,EAAA7mD,EAAA,OACA2lD,EAAA3lD,EAAA,OAEA,MAAa8mD,UAAYnB,EAAAE,oBAAzB/5D,WAAAA,uBACU,KAAApO,WAA8BT,CAmBxC,CAjBSwsC,GAAAA,CAAItY,GACT,GAAsB,YAAlBA,EAAK7G,SACP,MAAM,IAAIzrB,MAAM,mBAAmBsyB,EAAKn0B,kBAAkBm0B,EAAK7G,uCAE9CrtB,IAAfH,KAAKY,QAEoC,KAAlC,EAAAmpE,EAAAz7B,YAAWtuC,KAAKY,MAAOyzB,MADhCr0B,KAAKY,MAAQyzB,EAIjB,CAEOxwB,MAAAA,GACL,YAAmB1D,IAAfH,KAAKY,MACAopE,EAAI78B,aAENntC,KAAKY,KACd,EAnBFsD,EAAAA,IAAA8lE,8FCHA,MAAAD,EAAA7mD,EAAA,OACA2lD,EAAA3lD,EAAA,OAEA,MAAa+mD,UAAYpB,EAAAE,oBAAzB/5D,WAAAA,uBACU,KAAApO,WAA8BT,CAmBxC,CAjBSwsC,GAAAA,CAAItY,GACT,GAAsB,YAAlBA,EAAK7G,SACP,MAAM,IAAIzrB,MAAM,mBAAmBsyB,EAAKn0B,kBAAkBm0B,EAAK7G,uCAE9CrtB,IAAfH,KAAKY,OAEmC,KAAjC,EAAAmpE,EAAAz7B,YAAWtuC,KAAKY,MAAOyzB,MADhCr0B,KAAKY,MAAQyzB,EAIjB,CAEOxwB,MAAAA,GACL,YAAmB1D,IAAfH,KAAKY,MACAqpE,EAAI98B,aAENntC,KAAKY,KACd,EAnBFsD,EAAAA,IAAA+lE,iGCHA,MAAApB,EAAA3lD,EAAA,OAEA,MAAagnD,UAAerB,EAAAE,oBAA5B/5D,WAAAA,uBACU,KAAApO,WAA8BT,CAexC,CAbSwsC,GAAAA,CAAItY,QAEUl0B,IAAfH,KAAKY,QACPZ,KAAKY,MAAQyzB,EAEjB,CAEOxwB,MAAAA,GACL,YAAmB1D,IAAfH,KAAKY,MACAspE,EAAO/8B,aAETntC,KAAKY,KACd,EAfFsD,EAAAA,OAAAgmE,8FCDA,MAAAvB,EAAAzlD,EAAA,OACA0lD,EAAA1lD,EAAA,OACAlmB,EAAAkmB,EAAA,OACA2lD,EAAA3lD,EAAA,OAIA,MAAainD,UAAYtB,EAAAE,oBAAzB/5D,WAAAA,uBACU,KAAApO,WAA8BT,EACrB,KAAA6oE,OAASL,EAAAM,iBAAiBjsE,EAAEksE,gBAAgBC,SAqB/D,CAnBS,iBAAgBh8B,GACrB,OAAO,EAAAy7B,EAAAU,SAAQ,GAAGC,OACpB,CAEO58B,GAAAA,CAAItY,GACT,QAAmBl0B,IAAfH,KAAKY,MACPZ,KAAKY,MAAQZ,KAAKgoE,qBAAqB3zC,OAClC,CACL,MAAMm1C,EAAexpE,KAAKgoE,qBAAqB3zC,GAC/Cr0B,KAAKY,MAA2BZ,KAAKgpE,OAAOziE,MAAM,CAAEvG,KAAKY,MAAO4oE,GAAgBxpE,KAAK2nE,cACvF,CACF,CAEO9jE,MAAAA,GACL,YAAmB1D,IAAfH,KAAKY,MACAupE,EAAIh9B,aAENntC,KAAKY,MAAM2oE,OACpB,EAtBFrlE,EAAAA,IAAAimE,kHCRA,MAAAlwB,EAAA/2B,EAAA,OAEA0lD,EAAA1lD,EAAA,OAMAhf,EAAAA,wBAAA,MAQE8K,WAAAA,CAAmB8+B,GAHF,KAAAs8B,cAA0C,IAAI5oD,IACvD,KAAAsM,QAAU,EAGhB9tB,KAAK+vC,SAAWjC,EAAKiC,QACvB,CAEOs6B,WAAAA,CAAY39C,GACZ1sB,KAAKsqE,eAAe59C,KACvB1sB,KAAK8tB,SAAW,EAEpB,CAEO,iBAAOqf,GACZ,OAAO,EAAAy7B,EAAAU,SAAQ,GAAGC,OACpB,CAEO1lE,MAAAA,GACL,OAAO,EAAA+kE,EAAAU,SAAQtpE,KAAK8tB,SAASy7C,OAC/B,CAOQe,cAAAA,CAAe59C,GACrB,GAAI1sB,KAAK+vC,SAAU,CACjB,MAAMw6B,EAA0C,IAAK79C,GACrD69C,EAAYh8B,MAAK,CAAC4N,EAAOquB,IAAQruB,EAAM,GAAGj8C,MAAMuiD,cAAc+nB,EAAI,GAAGtqE,SACrE,MAAM8iB,EAAYunD,EAAYplE,KAAI,EAAG8lB,KAAeA,EAAS/qB,QAAOmF,KAAK,KACnE82B,EAAQouC,EAAYplE,KAAI,EAAE,CAAGkvB,KAAW4lB,EAAUjsB,aAAaqG,KAAOhvB,KAAK,KAE3EyG,EAAM9L,KAAKoqE,cAAc9iE,IAAI0b,GAC7Bnf,OAAiB1D,IAAR2L,GAAqBA,EAAIqB,IAAIgvB,GAQ5C,OALKrwB,GACH9L,KAAKoqE,cAAct+D,IAAIkX,EAAW,IAAIzE,KAExCve,KAAKoqE,cAAc9iE,IAAI0b,GAAYvE,IAAI0d,GAEhCt4B,CACT,CACA,OAAO,CACT,uG3KtDF,MAAA4mE,EAAAvnD,EAAA,OACAwnD,EAAAxnD,EAAA,OACAynD,EAAAznD,EAAA,OACA0nD,EAAA1nD,EAAA,OACA2nD,EAAA3nD,EAAA,OACA4nD,EAAA5nD,EAAA,OACA6nD,EAAA7nD,EAAA,OAOahf,EAAAA,YAA4E,CACvFgpB,MAAOw9C,EAAAhB,MACP9b,IAAKmd,EAAAZ,IACL53B,IAAKs4B,EAAAZ,IACLrlE,IAAKgmE,EAAAZ,IACLgB,IAAKP,EAAA3B,QACLmC,aAAcN,EAAAhB,YACduB,OAAQJ,EAAAZ,mH4KvBV,MAAAiB,EAAAjoD,EAAA,OAEAkoD,EAAAloD,EAAA,OAGA,MAAamoD,UAA2BF,EAAAG,uBAGtCt8D,WAAAA,CAAmB8+B,EAAmCllB,EAAiC2iD,GACrFlsD,MAAMyuB,EAAMs9B,EAAAI,cAAcC,gBAAgB7iD,GAAW,CAAC,GAAI2iD,GAC1DvrE,KAAKopC,UAAY,IAAIgiC,EAAAI,cAAc19B,EAAKpR,WAAY9T,EACtD,CAEO+jB,GAAAA,CAAIjgB,GACT,IAAI1sB,KAAK0rE,cAGT,GAAI1rE,KAAK2rE,WACP3rE,KAAK4rE,mBAAoBvB,YAAY39C,QAErC,IACE,MAAMm/C,EAAY7rE,KAAKopC,UAAUC,SAAS3c,GAC1C1sB,KAAK+9D,WAAWpxB,IAAIk/B,EACtB,CAAE,MAAO1oE,GACPnD,KAAK8rE,UAAU3oE,EACjB,CAEJ,CAEU2oE,SAAAA,CAAUlqE,GAClB,GAAI5B,KAAKurE,WACP,MAAM3pE,EAEN5B,KAAK0rE,eAAgB,CAEzB,EA9BFxnE,EAAAA,mBAAAmnE,kHCJA,MAAAU,EAAA7oD,EAAA,OACAioD,EAAAjoD,EAAA,OAEA,MAAa2pB,UAAgCs+B,EAAAG,uBAG3Ct8D,WAAAA,CAAmB8+B,EAAmCllB,EAAkC2iD,GACtFlsD,MAAMyuB,EAAMi+B,EAAA/iC,eAAeyiC,gBAAgB7iD,GAAW,CAAC,GAAI2iD,GAC3DvrE,KAAKopC,UAAY,IAAI2iC,EAAA/iC,eAAe8E,EAAKpR,WAAY9T,GACrD5oB,KAAK0rE,eAAgB,CACvB,CAEO,SAAM/+B,CAAIjgB,GACf,IAAI1sB,KAAK0rE,cAGT,GAAI1rE,KAAK2rE,WACP3rE,KAAK4rE,mBAAoBvB,YAAY39C,QAErC,IACE,MAAMm/C,QAAkB7rE,KAAKopC,UAAUC,SAAS3c,GAChD,IAAKm/C,GAAa7rE,KAAK0rE,cACrB,OAEF1rE,KAAK+9D,WAAWpxB,IAAIk/B,EACtB,CAAE,MAAO1oE,GACPnD,KAAK8rE,UAAU3oE,EACjB,CAEJ,CAEU2oE,SAAAA,CAAUlqE,GAClB,GAAI5B,KAAKurE,WACP,MAAM3pE,EAEN5B,KAAK0rE,eAAgB,CAEzB,EAlCFxnE,EAAAA,wBAAA2oC,yGCLA,MAAA/b,EAAA5N,EAAA,OAGA8oD,EAAA9oD,EAAA,OAEA+oD,EAAA/oD,EAAA,OAEAgpD,EAAAhpD,EAAA,MAaA,MAAa8lB,EAIJ,sBAAOyiC,CAAgB7iD,GAC5B,MAAM80B,EAAM90B,EAAQ80B,KAAO,IAAItnB,KAAKA,KAAKsnB,OACzC,MAAO,CACLA,MACA1H,QAASptB,EAAQotB,cAAW71C,EAC5Bq2B,uBAAwB5N,EAAQ4N,wBAA0B,CAAC,EAC3DuxC,kBAAmB,CACjB/2C,MAAOpI,EAAQujD,WAAa,IAAIr7C,EAAAI,SAAS,CAAEtsB,IAAK,MAChDwnE,WAAYxjD,EAAQyjD,cAAgB,KAAO,SAE7ClQ,yBAA0BvzC,EAAQuzC,yBAClCM,OAAQ7zC,EAAQ6zC,OAChBtxB,UAAWviB,EAAQuiB,UACnBqxB,MAAO5zC,EAAQ4zC,MACf8P,gBAAiB1jD,EAAQ0jD,kBAAmB,EAAAL,EAAAM,iBAAgB7uB,GAEhE,CAEA1uC,WAAAA,CAA0Bw9D,EAAyB5jD,EAAkC,CAAC,GAA5D,KAAA4jD,QAAAA,EAExB,MAAMC,EAAU7jD,EAAQuzC,0BAA4B,MAAgB,GAC9DuQ,EAAc1jC,EAAeyiC,gBAAgB7iD,GAE7C+jD,EAAc,IAAIX,EAAAY,mBAAmB,CACzClgE,KAAM,QACN+/D,aACGC,IAEL1sE,KAAK8tC,KAAO6+B,EAAYE,iBAAiBL,GAEzCxsE,KAAKopC,UAAY,IAAI8iC,EAAAY,wBAAwBJ,EAAaC,EAC5D,CAEO,cAAMtjC,CAAS1zB,GAEpB,aADqB3V,KAAKopC,UAAUC,SAASrpC,KAAK8tC,KAAMn4B,IAC1C4zD,OAChB,CAEO,mBAAM1/B,CAAcl0B,GAEzB,aADqB3V,KAAKopC,UAAUC,SAASrpC,KAAK8tC,KAAMn4B,IAC1Co3D,WAChB,CAEO,wBAAMC,CAAmBr3D,GAC9B,aAAa3V,KAAKopC,UAAUC,SAASrpC,KAAK8tC,KAAMn4B,EAClD,EAjDFzR,EAAAA,eAAA8kC,wGCpBA,MAAAlY,EAAA5N,EAAA,OAGA8oD,EAAA9oD,EAAA,OAEA+oD,EAAA/oD,EAAA,OAGA+pD,EAAA/pD,EAAA,OAYA,MAAasoD,EAIJ,sBAAOC,CAAgB7iD,GAC5B,MAAM80B,EAAM90B,EAAQ80B,KAAO,IAAItnB,KAAKA,KAAKsnB,OACzC,MAAO,CACLA,MACA1H,QAASptB,EAAQotB,cAAW71C,EAC5Bq2B,uBAAwB5N,EAAQ4N,wBAA0B,CAAC,EAC3DuxC,kBAAmB,CACjB/2C,MAAOpI,EAAQujD,WAAa,IAAIr7C,EAAAI,SAAS,CAAEtsB,IAAK,MAChDwnE,WAAYxjD,EAAQyjD,cAAgB,KAAO,SAE7ClQ,yBAA0BvzC,EAAQuzC,yBAClCM,OAAQ7zC,EAAQ6zC,OAChBtxB,UAAWviB,EAAQuiB,UACnBqxB,MAAO5zC,EAAQ4zC,MACf8P,gBAAiB1jD,EAAQ0jD,kBAAmB,EAAAL,EAAAM,iBAAgB7uB,GAEhE,CAEA1uC,WAAAA,CAA0Bw9D,EAAgC5jD,EAAiC,CAAC,GAAlE,KAAA4jD,QAAAA,EAAgC,KAAA5jD,QAAAA,EAExD,MAAM6jD,EAAU7jD,EAAQuzC,0BAA4B,MAAgB,GAC9DuQ,EAAclB,EAAcC,gBAAgB7iD,GAE5C+jD,EAAc,IAAIX,EAAAY,mBAAmB,CACzClgE,KAAM,OACN+/D,aACGC,IAEL1sE,KAAK8tC,KAAO6+B,EAAYE,iBAAiBL,GAEzCxsE,KAAKopC,UAAY,IAAI6jC,EAAAC,uBAAuBR,EAAaC,EAC3D,CAEOtjC,QAAAA,CAAS1zB,GAEd,OADe3V,KAAKopC,UAAUC,SAASrpC,KAAK8tC,KAAMn4B,GACpC4zD,OAChB,CAEO1/B,aAAAA,CAAcl0B,GAEnB,OADe3V,KAAKopC,UAAUC,SAASrpC,KAAK8tC,KAAMn4B,GACpCo3D,WAChB,CAEOC,kBAAAA,CAAmBr3D,GACxB,OAAO3V,KAAKopC,UAAUC,SAASrpC,KAAK8tC,KAAMn4B,EAC5C,EAjDFzR,EAAAA,cAAAsnE,iHCnBA,MAAA9C,EAAAxlD,EAAA,OAIAskD,EAAAtkD,EAAA,OAEAiqD,EAAAjqD,EAAA,OAGAkqD,EAAAlqD,EAAA,OAUA,MAAa4pD,UAAgCM,EAAAC,wBAmB3Cr+D,WAAAA,CAAoC4Z,EAAyCi/C,GAC3ExoD,MAAMwoD,GAAmB,IAAIL,EAAAM,gBAAgBl/C,EAAQm/C,oBADnB,KAAAn/C,QAAAA,EAhBnB,KAAA0kD,cACW,CAExB,CAAC5E,EAAE6E,eAAeC,MAAO,CAAC1/B,EAAM2/B,IAAaztE,KAAKq0B,KAAcyZ,GAChE,CAAC46B,EAAE6E,eAAeG,UAAW,CAAC5/B,EAAMn4B,IAAY3V,KAAKirB,SAAsB6iB,EAAMn4B,GAGjF,CAAC+yD,EAAE6E,eAAeI,UAAW,CAAC7/B,EAAMn4B,IAAY3V,KAAK4tE,aAA0B9/B,EAAMn4B,GACrF,CAAC+yD,EAAE6E,eAAeM,iBAAkB,CAAC//B,EAAMn4B,IAAY3V,KACpD8tE,oBAAwChgC,EAAMn4B,GACjD,CAAC+yD,EAAE6E,eAAeQ,OAAQ,CAACjgC,EAAMn4B,IAAY3V,KAAKguE,UAAoBlgC,EAAMn4B,GAC5E,CAAC+yD,EAAE6E,eAAeU,WAAY,CAACngC,EAAMn4B,IAAY3V,KAAKkuE,cAA4BpgC,EAAMn4B,GACxF,CAAC+yD,EAAE6E,eAAeY,WAAY,CAACrgC,EAAM2/B,IAAaztE,KAAKouE,cAA4BtgC,GACnF,CAAC46B,EAAE6E,eAAec,gBAAiB,CAACvgC,EAAMn4B,IAAY3V,KAAKsuE,mBAAsCxgC,EAAMn4B,GAK3G,CAEO,cAAM0zB,CAASyE,EAAoBn4B,GACxC,MAAMyzB,EAAYppC,KAAKstE,cAAcx/B,EAAKnR,gBAC1C,IAAKyM,EACH,MAAM,IAAI+jC,EAAIoB,sBAAsBzgC,GAEtC,OAAO1E,EAAUrnB,KAAK/hB,KAAfopC,CAAqB0E,EAAMn4B,EACpC,CAEQ,kBAAMi4D,CAAa9/B,EAAkBn4B,GAC3C,MAAM64D,EAAc1gC,EAAKrpC,KAAKU,KAAI05B,GAAO7+B,KAAKqpC,SAASxK,EAAKlpB,KACtD84D,QAAmB5oE,QAAQ4rB,IAAI+8C,GACrC,OAAO1gC,EAAKvnC,MAAMkoE,EACpB,CAEQ,yBAAMX,CAAoBhgC,EAAyBn4B,GACzD,MAAM0zB,EAAWrpC,KAAKqpC,SAAStnB,KAAK/hB,MAC9B4oB,EAA4B,CAChCnkB,KAAMqpC,EAAKrpC,KACXkR,UAEAoyD,kBAAmB/nE,KAAK4oB,QAAQm/C,kBAChCrqB,IAAK19C,KAAK4oB,QAAQ80B,IAClB1H,QAASh2C,KAAK4oB,QAAQotB,QACtBxf,uBAAwBx2B,KAAK4oB,QAAQ4N,uBAErC6S,WACAmzB,MAAOx8D,KAAK4oB,QAAQ4zC,MACpB8P,gBAAiBtsE,KAAK4oB,QAAQ0jD,iBAEhC,OAAOx+B,EAAK4gC,WAAW9lD,EACzB,CAEQ,oBAAM+lD,CAAelqE,EAAsBkR,GACjD,MAAM64D,EAAc/pE,EAAKU,KAAI05B,GAAO7+B,KAAKqpC,SAASxK,EAAKlpB,KACvD,aAAa9P,QAAQ4rB,IAAI+8C,EAC3B,CAEQ,eAAMR,CAAUlgC,EAAen4B,GACrC,OAAOm4B,EAAKvnC,YAAYvG,KAAK2uE,eAAe7gC,EAAKrpC,KAAMkR,GACzD,CAEQ,wBAAM24D,CAAmBxgC,EAAsBn4B,GACrD,aAAam4B,EAAKvnC,YAAYvG,KAAK2uE,eAAe7gC,EAAKrpC,KAAMkR,GAC/D,CAEQ,mBAAMu4D,CAAcpgC,EAAmBn4B,GAC7C,IAAK3V,KAAK4oB,QAAQ6zC,OAChB,MAAM,IAAI0Q,EAAIyB,gBAGhB,OAAO,IAAIlG,EAAEmG,qBAAqB7uE,KAAK4oB,QAAQ6zC,OAAO3uB,EAAKpR,WAAY/mB,GACzE,CAGQ,mBAAMy4D,CAActgC,GAC1B,IAAK9tC,KAAK4oB,QAAQuiB,UAChB,MAAM,IAAIgiC,EAAI2B,aAGhB,OAAO9uE,KAAK6nE,gBAAgBkH,6BAA6B/uE,KAAK4oB,QAAQuiB,UAAU2C,EAAKpR,YACvF,EAnFFx4B,EAAAA,wBAAA4oE,iHCpBA,MAAA3iD,EAAAjH,EAAA,OACA8rD,EAAA9rD,EAAA,OACA2lD,EAAA3lD,EAAA,OACA+rD,EAAA/rD,EAAA,OAEAiqD,EAAAjqD,EAAA,OAGAhf,EAAAA,uBAAA,MAQE8K,WAAAA,CACE8+B,EACA65B,EACA4D,GARQ,KAAAA,YAAa,EACb,KAAAI,YAAa,EAEb,KAAAD,eAAgB,EAOxB1rE,KAAK08B,WAAaoR,EAClB9tC,KAAK+9D,WAAa,IAAI8K,EAAAqG,WAAWphC,EAAM,IAAIkhC,EAAAtiC,YAA0BoB,EAAKiwB,YAAYjwB,EAAM65B,IAC5F3nE,KAAKurE,WAAaA,IAAc,EAChCvrE,KAAK2rE,WAAa79B,EAAKpR,WAAWC,iBAAmBxS,EAAAyE,QAAQgO,gBAAgB4B,SACzEx+B,KAAK2rE,aACP3rE,KAAK4rE,mBAAqB,IAAIqD,EAAAE,wBAAwBrhC,GAE1D,CAWO,iBAAOX,CAAWW,EAAmCy9B,GAAa,GACvE,IAAI7oB,EAMJ,GAJEA,EADE5U,EAAKpR,WAAWC,iBAAmBxS,EAAAyE,QAAQgO,gBAAgB4B,SACvDywC,EAAAE,wBAAwBhiC,aAExB07B,EAAAqG,WAAW/hC,WAAW6hC,EAAAtiC,YAA0BoB,EAAKiwB,kBAEjD59D,IAARuiD,GAAqB6oB,EACvB,MAAM,IAAI4B,EAAIiC,oBAEhB,OAAO1sB,CACT,CAEO7+C,MAAAA,GACL,IAAI7D,KAAK0rE,cAGT,OAAI1rE,KAAK2rE,WACA3rE,KAAK4rE,mBAAoB/nE,SAE3B7D,KAAK+9D,WAAWl6D,QACzB,mHC3DF,MAAA+kE,EAAA1lD,EAAA,OAIAiqD,EAAAjqD,EAAA,OAoBAhf,EAAAA,wBAAA,MACE8K,WAAAA,CAAsC64D,GAAA,KAAAA,gBAAAA,CAAoC,CAEhExzC,IAAAA,CAAKyZ,GACb,OAAOA,CACT,CAEU7iB,QAAAA,CAAS6iB,EAAkBn4B,GACnC,MAAM0e,EAAO1e,EAAQrO,KAAI,EAAAshE,EAAAyG,iBAAgBvhC,IACzC,IAAKzZ,EACH,MAAM,IAAI84C,EAAImC,qBAAqBxhC,EAAK9jC,KAAM2L,GAEhD,OAAO3V,KAAK6nE,gBAAgBkH,uBAAuB16C,EACrD,kHCrCF,MAAAq0C,EAAAxlD,EAAA,OAIAskD,EAAAtkD,EAAA,OAEAiqD,EAAAjqD,EAAA,OAIAkqD,EAAAlqD,EAAA,OASA,MAAagqD,UAA+BE,EAAAC,wBAiB1Cr+D,WAAAA,CAAoC4Z,EAAwCi/C,GAC1ExoD,MAAMwoD,GAAmB,IAAIL,EAAAM,gBAAgBl/C,EAAQm/C,oBADnB,KAAAn/C,QAAAA,EAdnB,KAAA0kD,cAAuF,CAEtG,CAAC5E,EAAE6E,eAAeC,MAAO,CAAC1/B,EAAM2/B,IAAaztE,KAAKq0B,KAAcyZ,GAChE,CAAC46B,EAAE6E,eAAeG,UAAW,CAAC5/B,EAAMn4B,IAAY3V,KAAKirB,SAAsB6iB,EAAMn4B,GAGjF,CAAC+yD,EAAE6E,eAAeI,UAAW,CAAC7/B,EAAMn4B,IAAY3V,KAAK4tE,aAA0B9/B,EAAMn4B,GACrF,CAAC+yD,EAAE6E,eAAeM,iBAAkB,CAAC//B,EAAMn4B,IAAY3V,KAAK8tE,oBAAwChgC,EAAMn4B,GAC1G,CAAC+yD,EAAE6E,eAAeQ,OAAQ,CAACjgC,EAAMn4B,IAAY3V,KAAKguE,UAAoBlgC,EAAMn4B,GAC5E,CAAC+yD,EAAE6E,eAAeU,WAAY,CAACngC,EAAMn4B,IAAY3V,KAAKkuE,cAA4BpgC,EAAMn4B,GACxF,CAAC+yD,EAAE6E,eAAeY,WAAY,CAACrgC,EAAM2/B,IAAaztE,KAAKouE,cAA4BtgC,GACnF,CAAC46B,EAAE6E,eAAegC,eAAgB,CAACzhC,EAAMn4B,IAAY3V,KAAKwvE,kBAAoC1hC,EAAMn4B,GAKtG,CAEO0zB,QAAAA,CAASyE,EAAoBn4B,GAClC,MAAMyzB,EAAYppC,KAAKstE,cAAcx/B,EAAKnR,gBAC1C,IAAKyM,EACH,MAAM,IAAI+jC,EAAIoB,sBAAsBzgC,GAEtC,OAAO1E,EAAUrnB,KAAK/hB,KAAfopC,CAAqB0E,EAAMn4B,EACpC,CAEQi4D,YAAAA,CAAa9/B,EAAkBn4B,GACrC,MAAMlR,EAAOqpC,EAAKrpC,KAAKU,KAAI05B,GAAO7+B,KAAKqpC,SAASxK,EAAKlpB,KACrD,OAAOm4B,EAAKvnC,MAAM9B,EACpB,CAEQqpE,mBAAAA,CAAoBhgC,EAAyBn4B,GACnD,MAAM0zB,EAAWrpC,KAAKqpC,SAAStnB,KAAK/hB,MAC9B4oB,EAA2B,CAC/BnkB,KAAMqpC,EAAKrpC,KACXkR,UAEAoyD,kBAAmB/nE,KAAK4oB,QAAQm/C,kBAChCrqB,IAAK19C,KAAK4oB,QAAQ80B,IAClB1H,QAASh2C,KAAK4oB,QAAQotB,QACtBxf,uBAAwBx2B,KAAK4oB,QAAQ4N,uBAErC6S,WACAmzB,MAAOx8D,KAAK4oB,QAAQ4zC,MACpB8P,gBAAiBtsE,KAAK4oB,QAAQ0jD,iBAEhC,OAAOx+B,EAAK2hC,mBAAmB7mD,EACjC,CAEQolD,SAAAA,CAAUlgC,EAAen4B,GAC/B,MAAMlR,EAAOqpC,EAAKrpC,KAAKU,KAAI05B,GAAO7+B,KAAKqpC,SAASxK,EAAKlpB,KACrD,OAAOm4B,EAAKvnC,MAAM9B,EACpB,CAEQ+qE,iBAAAA,CAAkB1hC,EAAqBn4B,GAC7C,MAAMlR,EAAOqpC,EAAKrpC,KAAKU,KAAI05B,GAAO7+B,KAAKqpC,SAASxK,EAAKlpB,KACrD,OAAOm4B,EAAKvnC,MAAM9B,EACpB,CAEQypE,aAAAA,CAAcpgC,EAAmBn4B,GACvC,IAAK3V,KAAK4oB,QAAQ6zC,OAChB,MAAM,IAAI0Q,EAAIyB,gBAGhB,OAAO,IAAIlG,EAAEmG,eAAe7uE,KAAK4oB,QAAQ6zC,OAAO3uB,EAAKpR,WAAY/mB,GACnE,CAEQy4D,aAAAA,CAActgC,GACpB,IAAK9tC,KAAK4oB,QAAQuiB,UAChB,MAAM,IAAIgiC,EAAI2B,aAGhB,OAAO9uE,KAAK6nE,gBAAgBkH,uBAAuB/uE,KAAK4oB,QAAQuiB,UAAU2C,EAAKpR,YACjF,EA5EFx4B,EAAAA,uBAAAgpE,mGClBA,MAAAwC,EAAAxsD,EAAA,OAIAhf,EAAAA,UAAA,MAGE8K,WAAAA,CACShF,EACA0yB,GADA,KAAA1yB,KAAAA,EACA,KAAA0yB,WAAAA,EAJF,KAAAC,eAA2C+yC,EAAAnC,eAAeY,SAK9D,0GCXL,MAAAuB,EAAAxsD,EAAA,OAEAhf,EAAAA,eAAA,MAGE8K,WAAAA,CACShF,EACAvF,EACA8B,GAFA,KAAAyD,KAAAA,EACA,KAAAvF,KAAAA,EACA,KAAA8B,MAAAA,EALF,KAAAo2B,eAAgD+yC,EAAAnC,eAAec,cAMnE,qGCRL,MAAAqB,EAAAxsD,EAAA,OAEAhf,EAAAA,UAAA,MAEE8K,WAAAA,CAA0B0tB,GAAA,KAAAA,WAAAA,EADnB,KAAAC,eAA2C+yC,EAAAnC,eAAeU,SACD,+BCHlE,IAAYV,wFAAZ,SAAYA,GACVA,EAAA,sBACAA,EAAA,sBACAA,EAAA,cACAA,EAAA,oBACAA,EAAA,kCACAA,EAAA,YACAA,EAAA,oBACAA,EAAA,gCACAA,EAAA,6BACD,CAVD,CAAYA,IAAcrpE,EAAAA,eAAdqpE,EAAc,KAyE1BrpE,EAAAA,WAAA,SAA2BwI,GACzB,GAAa,cAATA,GAAiC,YAATA,GAA+B,cAATA,GAAiC,SAATA,EACxE,OAAOA,CAGX,gGC/EA,MAAAgjE,EAAAxsD,EAAA,OAIAhf,EAAAA,MAAA,MAGE8K,WAAAA,CACShF,EACAvF,EACA8B,GAFA,KAAAyD,KAAAA,EACA,KAAAvF,KAAAA,EACA,KAAA8B,MAAAA,EALF,KAAAo2B,eAAuC+yC,EAAAnC,eAAeQ,KAM1D,oGCbL,MAAA2B,EAAAxsD,EAAA,OAIAhf,EAAAA,SAAA,MAGE8K,WAAAA,CAA0BvK,EAA2B8B,GAA3B,KAAA9B,KAAAA,EAA2B,KAAA8B,MAAAA,EAF9C,KAAAo2B,eAA0C+yC,EAAAnC,eAAeI,QAEgB,0GCFlF,MAAA+B,EAAAxsD,EAAA,OAIAhf,EAAAA,gBAAA,MAGE8K,WAAAA,CACSvK,EACAiqE,EACAe,GAFA,KAAAhrE,KAAAA,EACA,KAAAiqE,WAAAA,EACA,KAAAe,mBAAAA,EALF,KAAA9yC,eAAiD+yC,EAAAnC,eAAeM,eAMpE,yGCfL,MAAA6B,EAAAxsD,EAAA,OAEAhf,EAAAA,cAAA,MAGE8K,WAAAA,CACShF,EACAvF,EACA8B,GAFA,KAAAyD,KAAAA,EACA,KAAAvF,KAAAA,EACA,KAAA8B,MAAAA,EALF,KAAAo2B,eAA+C+yC,EAAAnC,eAAegC,aAMlE,wcCVL,MAAAtlD,EAAA/G,EAAA,OACAskD,EAAAtkD,EAAA,OACAlmB,EAAAkmB,EAAA,OACAukD,EAAAvkD,EAAA,OASAiqD,EAAAjqD,EAAA,OACAysD,EAAAzsD,EAAA,OAEAwkD,EAAAxkD,EAAA,OAEAwsD,EAAAxsD,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YAEf,MAAsBkjD,EAAtBx+D,WAAAA,GACS,KAAA2tB,eAAsC+yC,EAAAnC,eAAeC,IAY9D,CAPSnpE,GAAAA,GACL,MAAM,IAAI8oE,EAAIyC,qBAAqB,CAAE5vE,MAAQhD,EAAEksE,gBAAgB2G,IACjE,CAEO9C,SAAAA,GACL,MAAM,IAAII,EAAI2C,iBAAiB9vE,KACjC,EAZFkE,EAAAA,KAAAspE,EAgBAtpE,EAAAA,UAAA,cAA+BspE,EAE7Bx+D,WAAAA,CAA0B9O,GACxBmf,QADwB,KAAAnf,MAAAA,EADnB,KAAAstB,SAAqB,WAG5B,CAEO+7C,KAAAA,GACL,OAAOl/C,EAAGkK,UAAUv0B,KAAKE,MAC3B,CAEgBmE,GAAAA,GACd,OAAOrE,KAAKE,KACd,GAKFgE,EAAAA,UAAA,cAA+BspE,EAI7Bx+D,WAAAA,CAAmB9O,GACjBmf,QAHK,KAAAmO,SAAqB,YAI1BxtB,KAAKE,MAAyB,iBAAVA,EAAqBmqB,EAAG6K,UAAUh1B,GAASA,CACjE,CAEOqpE,KAAAA,GACL,OAAOvpE,KAAKE,KACd,GAIFgE,EAAAA,KAAA,cAA0BspE,EAKxBx+D,WAAAA,CAAmBvB,EAAqBs6D,GACtC1oD,QALK,KAAAmO,SAAqB,OAM1BxtB,KAAK2sE,YAAc,IAAInF,EAAAM,gBAAgBC,GACvC/nE,KAAK+vE,UAAYtiE,CACnB,CAEO87D,KAAAA,GACL,OAAOvpE,KAAK+vE,SACd,CAEA,WAAWhlD,GACT,OAAO/qB,KAAK2sE,YAAYoC,uBAAuB/uE,KAAKgwE,WACtD,CAEA,aAAWplD,GACT,OAAO5qB,KAAK2sE,YAAYoC,uBAAuB/uE,KAAKiwE,aACtD,CAEA,UAAWjlD,GACT,OAAOhrB,KAAK2sE,YAAYoC,uBAAuB/uE,KAAKkwE,UACtD,CAEA,cAAWF,GACT,OAAOhwE,KAAKupE,QAAQx+C,OACtB,CAEA,gBAAWklD,GACT,OAAOjwE,KAAKupE,QAAQ3+C,SACtB,CAEA,aAAWslD,GACT,OAAOlwE,KAAKupE,QAAQv+C,MACtB,GAIF9mB,EAAAA,wBAAA,SAAwC4pC,GACtC,GAAsB,YAAlBA,EAAKtgB,SACP,OAAsBsgB,CAG1B,EAMA,MAAaqiC,UAAyC3C,EAQpDx+D,WAAAA,CACSohE,EACAC,EACAC,EACA35C,GAEPtX,QALO,KAAA+wD,WAAAA,EACA,KAAAC,SAAAA,EACA,KAAAC,SAAAA,EACA,KAAA35C,SAAAA,EAXF,KAAAnJ,SAAmB,SAc1B,CAEO+7C,KAAAA,GACL,OAAOl/C,EAAGyxB,QACR97C,KAAKswE,UAAYtwE,KAAKqE,MACtBrE,KAAK22B,UAAYtM,EAAGkK,UAAUv0B,KAAKqwE,UAEvC,CAEgBhsE,GAAAA,GACd,OAAOrE,KAAKswE,UAAYtwE,KAAKowE,WAAW5uE,UAC1C,EA1BF0C,EAAAA,QAAAisE,EA6BA,MAAsBI,UAAuBJ,EAC3CnhE,WAAAA,CACkBohE,EAChBC,EACgBC,EACA35C,GAEhBtX,MAAM+wD,EAAYC,EAAUC,EAAU35C,GALtB,KAAAy5C,WAAAA,EAEA,KAAAE,SAAAA,EACA,KAAA35C,SAAAA,CAGlB,CAIgBo2C,SAAAA,GACd,OAAO/kC,QAAQhoC,KAAKowE,WACtB,CAEgB7G,KAAAA,GACd,MAAMl1C,EAAOhV,MAAMkqD,QAInB,OAHKzlE,OAAO2qC,SAASzuC,KAAKowE,cACxB/7C,EAAKn0B,MAAQm0B,EAAKn0B,MAAMgO,QAAQ,WAAY,QAEvCmmB,CACT,CAEgBhwB,GAAAA,GACd,OAAOrE,KAAKswE,UACVtwE,KAAKwwE,kBAAkBxwE,KAAKowE,WAChC,EA3BFlsE,EAAAA,eAAAqsE,EA8BArsE,EAAAA,eAAA,cAAoCqsE,EAClCvhE,WAAAA,CACkBohE,EAChBC,EACgBC,EACA35C,GAEhBtX,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQC,YAAaJ,EAAU35C,GAL7C,KAAAy5C,WAAAA,EAEA,KAAAE,SAAAA,EACA,KAAA35C,SAAAA,CAGlB,CAEU65C,iBAAAA,CAAkB9tB,GAC1B,OAAOA,EAAIiuB,QAAQ,EACrB,GAGFzsE,EAAAA,eAAA,cAAoCqsE,EAClCvhE,WAAAA,CACkBohE,EAChBC,EACgBC,EACA35C,GAEhBtX,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQG,YAAaN,EAAU35C,GAL7C,KAAAy5C,WAAAA,EAEA,KAAAE,SAAAA,EACA,KAAA35C,SAAAA,CAGlB,CAEU65C,iBAAAA,CAAkB9tB,GAC1B,OAAOA,EAAIlhD,UACb,GAGF0C,EAAAA,aAAA,cAAkCqsE,EAChCvhE,WAAAA,CACkBohE,EAChBC,EACgBC,EACA35C,GAEhBtX,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQI,UAAWP,EAAU35C,GAL3C,KAAAy5C,WAAAA,EAEA,KAAAE,SAAAA,EACA,KAAA35C,SAAAA,CAGlB,CAEU65C,iBAAAA,CAAkB9tB,GAC1B,OAAOA,EAAIlhD,UACb,GAGF0C,EAAAA,cAAA,cAAmCqsE,EACjCvhE,WAAAA,CACkBohE,EAChBC,EACgBC,EACA35C,GAEhBtX,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQK,WAAYR,EAAU35C,GAL5C,KAAAy5C,WAAAA,EAEA,KAAAE,SAAAA,EACA,KAAA35C,SAAAA,CAGlB,CAEU65C,iBAAAA,CAAkB9tB,GAC1B,IAAK5+C,OAAO2qC,SAASiU,GACnB,OAAIA,EAAM,EACD,MAELA,EAAM,EACD,OAEF,MAGT,MAAMquB,EAAgBruB,EAAIsuB,iBAClBC,EAAYC,GAAeH,EAAc/rE,MAAM,KAIjDmsE,EAAWD,EAAWhjE,QAAQ,MAAO,IAO3C,MAAO,GAJU+iE,EAAWj1D,SAAS,KACnCi1D,EACA,GAAGA,SAEiBE,GACxB,GAGFjtE,EAAAA,eAAA,cAAoCisE,EAClCnhE,WAAAA,CAAmCohE,EAAqCE,EAAmBD,GACzFhxD,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQW,YAAad,GADlB,KAAAF,WAAAA,EAAqC,KAAAE,SAAAA,CAExE,CAEgBvD,SAAAA,GACd,OAAO/sE,KAAKowE,UACd,GAGFlsE,EAAAA,kBAAA,cAAuCisE,EACrCnhE,WAAAA,CAAmCohE,EAAoCz5C,EAAkB05C,GACvFhxD,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQY,gBAAiBjB,EAAYz5C,GADlC,KAAAy5C,WAAAA,EAAoC,KAAAz5C,SAAAA,CAEvE,CAEgBo2C,SAAAA,GACd,OAAO/sE,KAAKqE,MAAM9C,OAAS,CAC7B,GAOF2C,EAAAA,cAAA,cAAmCisE,EAKjCnhE,WAAAA,CAAmCohE,EAAoBC,GACrDhxD,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQa,WAAYlB,GADjB,KAAAA,WAAAA,CAEnC,CAEgBrD,SAAAA,GACd,OAAO/sE,KAAKqE,MAAM9C,OAAS,CAC7B,GAGF2C,EAAAA,gBAAA,cAAqCisE,EACnCnhE,WAAAA,CACkBohE,EACAE,EAChBD,GAEAhxD,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQc,cAAejB,GAJrC,KAAAF,WAAAA,EACA,KAAAE,SAAAA,CAIlB,CAEgBjsE,GAAAA,GACd,OAAO,EAAAsrE,EAAA6B,mBAAkBxxE,KAAKowE,WAChC,GAGFlsE,EAAAA,YAAA,cAAiCisE,EAC/BnhE,WAAAA,CACkBohE,EACAE,EAChBD,GAEAhxD,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQgB,SAAUnB,GAJhC,KAAAF,WAAAA,EACA,KAAAE,SAAAA,CAIlB,CAEgBjsE,GAAAA,GACd,OAAO,EAAAsrE,EAAA+B,eAAc1xE,KAAKowE,WAC5B,GAGFlsE,EAAAA,YAAA,cAAiCisE,EAC/BnhE,WAAAA,CACkBohE,EACAE,EAChBD,GAEAhxD,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQkB,SAAUrB,GAJhC,KAAAF,WAAAA,EACA,KAAAE,SAAAA,CAIlB,CAEgBjsE,GAAAA,GACd,OAAO,EAAAsrE,EAAAiC,eAAc5xE,KAAKowE,WAC5B,GAGF,MAAayB,UAAwB1B,EACnCnhE,WAAAA,CACkBohE,EACAE,EAChBD,GAEAhxD,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQqB,aAAcxB,GAJpC,KAAAF,WAAAA,EACA,KAAAE,SAAAA,CAIlB,CAEgBjsE,GAAAA,GACd,OAAO,EAAAsrE,EAAAoC,mBAAkB/xE,KAAKowE,WAChC,EAXFlsE,EAAAA,gBAAA2tE,EAcA3tE,EAAAA,uBAAA,cAA4C2tE,EAC1C7iE,WAAAA,CACkBohE,EACAE,EAChBD,GAEAhxD,MAAM+wD,EAAYE,EAAUD,GAAY5I,EAAAgJ,QAAQuB,uBAJhC,KAAA5B,WAAAA,EACA,KAAAE,SAAAA,CAIlB,GAGFpsE,EAAAA,yBAAA,cAA8CisE,EAC5CnhE,WAAAA,CACkBohE,EACAE,EAChBD,GAEAhxD,MAAM+wD,EAAYC,GAAY5I,EAAAgJ,QAAQwB,wBAAyB3B,GAJ/C,KAAAF,WAAAA,EACA,KAAAE,SAAAA,CAIlB,CAEgBjsE,GAAAA,GACd,OAAO,EAAAsrE,EAAAoC,mBAAkB/xE,KAAKowE,WAAY,MAC5C,GAoBF,MAAa8B,UAA0B/B,EACrCnhE,WAAAA,CACEohE,EACAC,EACiB8B,EACjB7B,EACA35C,GAEAtX,MAAM,CAAE7d,SAAUA,IAAM,aAAe6uE,EAAUC,EAAU35C,GAJ1C,KAAAw7C,cAAAA,CAKnB,CAEgBpF,SAAAA,GAId,IAFE,EAAArF,EAAAO,aAAYjoE,KAAKqwE,SAAU5I,EAAAgJ,QAAQW,YAAapxE,KAAKmyE,iBACrD,EAAAzK,EAAAO,aAAYjoE,KAAKqwE,SAAU5I,EAAAS,UAAUC,eAAgBnoE,KAAKmyE,eAE1D,OAAO,EAET,MAAM,IAAIhF,EAAI2C,iBAAiB9vE,KACjC,CAEgBupE,KAAAA,GACd,OAAOl/C,EAAGyxB,QACR97C,KAAKqE,MACLrE,KAAK22B,UAAYtM,EAAGkK,UAAUv0B,KAAKqwE,UAEvC,CAEgBhsE,GAAAA,GACd,OAAOrE,KAAKswE,UAAY,EAC1B,EA9BFpsE,EAAAA,kBAAAguE,EAiCAhuE,EAAAA,oBAAA,SAAoCkuE,GAClC,GAAIA,aAAeF,EACjB,OAAOE,CAGX,mGCnbA,MAAA1C,EAAAxsD,EAAA,OAEAhf,EAAAA,SAAA,MAGE8K,WAAAA,CAAmBhF,GAFZ,KAAA2yB,eAA0C+yC,EAAAnC,eAAeG,SAG9D1tE,KAAKgK,KAAOA,CACd,4gB7LRFxB,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,MAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,MAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,4J8LLA,MAAAipE,EAAAjqD,EAAA,OA6BA,MAAsBmvD,EAIpBrjE,WAAAA,CAA6B8tB,EAAoBw1C,GAApB,KAAAx1C,SAAAA,EAUtB,KAAAv2B,MAAQ,CAAC9B,EAA0BmkB,KAGtC5oB,KAAKuyE,UAAU9tE,EAAMmkB,EAAQm/C,kBAAmBn/C,EAAQ4N,yBACxDx2B,KAAKwyE,mBAAmB/tE,IACFmkB,EAAjB6pD,CAA0BhuE,GAdjCzE,KAAK0yE,MAAQJ,EAAWI,MACxB1yE,KAAK2yE,UAAYL,EAAWK,SAC9B,CA4BQJ,SAAAA,CACN9tE,EACAsjE,EACAvxC,GAEA,OAAOx2B,KAAK2yE,UAAUC,OAAOnuE,EAAMsjE,EAAmBvxC,EACxD,EAzCFtyB,EAAAA,aAAAmuE,EAgEAnuE,EAAAA,gBAAA,cAAqCmuE,EAGnCrjE,WAAAA,CAAmB2mB,EAAuB28C,GACxCjzD,MAAMsW,EAAI28C,GAHF,KAAAO,cAAwB,SAIlC,CAEUL,kBAAAA,CAAmB/tE,GAC3B,MAAM,IAAI0oE,EAAIyC,qBAAqBnrE,EAAMzE,KAAK88B,SAChD,GAIF54B,EAAAA,cAAA,cAAmCmuE,EAGjCrjE,WAAAA,CAAmB2mB,EAAqB28C,GACtCjzD,MAAMsW,EAAI28C,GAHF,KAAAO,cAAwB,OAIlC,CAEUL,kBAAAA,CAAmB/tE,GAC3B,MAAM,IAAI0oE,EAAIyC,qBAAqBnrE,EAAMzE,KAAK88B,SAChD,GAmBF54B,EAAAA,gBAAA,MAOE8K,WAAAA,CAA0B8tB,EAA6Bw1C,GAQzD,IAA2BI,EARC,KAAA51C,SAAAA,EANnB,KAAA+1C,cAAwB,UAO7B7yE,KAAK0yE,MAAQJ,EAAWI,MACxB1yE,KAAKyvE,mBAAqB6C,EAAW7C,mBACrCzvE,KAAK0uE,WAAa4D,EAAW5D,WAC7B1uE,KAAK8yE,WAAaR,EAAWQ,aAINJ,EAJsC1yE,KAAK0yE,MAK5DjuE,GAEFiuE,IAAU5uE,OAAO+pC,mBAIdppC,EAAKlD,SAAWmxE,EAVzB,4MCjJF,MAAAzoD,EAAA/G,EAAA,OAGAwlD,EAAAxlD,EAAA,OACA6vD,EAAA7vD,EAAA,OACAlmB,EAAAkmB,EAAA,OACAukD,EAAAvkD,EAAA,OAEAiqD,EAAAjqD,EAAA,OAGA8vD,EAAA9vD,EAAA,OAIMmH,EAAK,IAAIJ,EAAAK,YAEfpmB,EAAAA,QAAA,SAAwB+uE,GACtB,OAAO,IAAIC,EAAQD,EACrB,EAEA,MAAaC,EAIXlkE,WAAAA,CAAmBikE,GACjBjzE,KAAKmzE,aAAe,IAAIH,EAAAI,aAAaH,GACrCjzE,KAAKqzE,WAAY,CACnB,CAEOC,OAAAA,GACL,GAAItzE,KAAKqzE,UAEP,MAAM,IAAItxE,MAAM,wCAGlB,OADA/B,KAAKqzE,WAAY,EACVrzE,KAAKmzE,YACd,CAEQ,kCAAOI,CAA4BC,GACzC,OAAQ5qD,GAAqCnkB,IAC3C,IAAK,MAAQ0Z,EAAO0gB,KAASp6B,EAAK6I,UAChC,GAAIuxB,aAAek0C,EAAAb,kBACjB,MAAM,IAAI/E,EAAIsG,mBAAmBhvE,EAAK0Z,GAAOorD,SAGjD,OAAOiK,EAAK5qD,EAAL4qD,CAAc/uE,EAAK,CAE9B,CAiCOqH,GAAAA,CAAI4nE,EAA0BF,EAA8BG,GAAqB,GAEtF,OADA3zE,KAAKmzE,aAAaS,YAAYF,EAAUC,EAAqBT,EAAQK,4BAA4BC,GAAQA,GAClGxzE,IACT,CAEO0C,IAAAA,EAAK,KAAEmxE,EAAI,GAAEC,IAClB,MAAMC,EAAO/zE,KAAKmzE,aAAaa,uBAAuBH,GACtD,IAAKE,EACH,MAAM,IAAI5G,EAAI8G,gBACZ,oDACA,CAAEJ,OAAMC,OAGZ,OAAO9zE,KAAK8L,IAAIgoE,EAAIC,EACtB,CAEOG,OAAAA,CAAwBxnE,EAAoBipB,EACjCg+C,GAAqB,GACrC,OAAO3zE,KAAK8L,IAAI,CAAEY,IAAQkc,GAAW,EAAG85B,KAAe/sB,EAAG/M,EAAH+M,CAAY+sB,IAAMixB,EAC3E,CAEOQ,YAAAA,CACLznE,EACAipB,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IAAI,CAAEY,IAAQkc,GAAW,EAAG85B,KAA0B/sB,EAAG/M,EAAH+M,CAAY+sB,EAAI0tB,aAAauD,EACjG,CAEOS,QAAAA,CACLvlD,EACA8G,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IAAI+iB,GAAOjG,GAAW,EAAG/H,EAAMO,KAAoBuU,EAAG/M,EAAH+M,CAAY9U,EAAMO,IAAQuyD,EAC3F,CAEOU,aAAAA,CACLxlD,EACA8G,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IACV+iB,GACAjG,GAAW,EAAG/H,EAAMO,KAA0CuU,EAAG/M,EAAH+M,CAAY9U,EAAKuvD,WAAYhvD,EAAMgvD,aACjGuD,EAEJ,CAEOW,cAAAA,CACLzlD,EACA8G,EAEJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IAAI+iB,GAAOjG,GAAW,EAAG2rD,EAAIC,EAAIC,KAC3C9+C,EAAG/M,EAAH+M,CAAY4+C,EAAGnE,WAAYoE,EAAGpE,WAAYqE,EAAGrE,aAAauD,EAC9D,CAEOe,SAAAA,CACL7lD,EACA8G,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IAAI+iB,GAAOjG,GAAW,EAAG2rD,EAAIC,EAAIC,KAAuB9+C,EAAG/M,EAAH+M,CAAY4+C,EAAIC,EAAIC,IAAKd,EAC/F,CAEOgB,iBAAAA,CAML9lD,EACA8G,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IAAI+iB,GAAOjG,GACrB,EAAG2rD,EAAIC,EAAIC,EAAIG,KACbj/C,EAAG/M,EAAH+M,CAAY4+C,EAAGnE,WAAYoE,EAAGpE,WAAYqE,EAAGrE,WAAYwE,EAAGxE,aAAauD,EAC/E,CAEOkB,OAAAA,CACLl/C,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IACV,CAAE,SACF8c,GAAW,EAAGyL,KAAgBsB,EAAG/M,EAAH+M,CAAYtB,IAC1Cs/C,EAEJ,CAEOmB,OAAAA,CAAQn/C,GACb,OAAO31B,KAAK8L,IACV,CAAE,OAAQ,OAAQ,SAClB8c,GAAW,EAAGmsD,EAAIC,EAAIC,KAA6Bt/C,EAAG/M,EAAH+M,CAAYo/C,EAAIC,EAAIC,IAE3E,CAEOC,OAAAA,CAAQv/C,GACb,OAAO31B,KAAK8L,IAAI,CAAE,SAAU8c,GAAW,EAAGyL,KAA0BsB,EAAG/M,EAAH+M,CAAYtB,IAClF,CAEO8gD,UAAAA,CACLx/C,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IACV,CAAE,YACF8c,GAAW,EAAGyL,KAA2BsB,EAAG/M,EAAH+M,CAAYtB,IACrDs/C,EAEJ,CAEOyB,UAAAA,CACLz/C,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IACV,CAAE9O,EAAEyzE,QAAQW,cACZxoD,GAAW,EAAGwpD,KAA8Bz8C,EAAG/M,EAAH+M,CAAYy8C,IACxDuB,EAEJ,CAEO0B,eAAAA,CACL1/C,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IACV,CAAE9O,EAAEyzE,QAAQW,cACZxoD,GAAW,EAAGwpD,KAA8Bz8C,EAAG/M,EAAH+M,CAAYy8C,EAAIhC,aAC5DuD,EAEJ,CAEO2B,SAAAA,CACL3/C,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IACV,CAAE9O,EAAEyzE,QAAQa,aACZ1oD,GAAW,EAAGwpD,KAA+Bz8C,EAAG/M,EAAH+M,CAAYy8C,IACzDuB,EAEJ,CAEO4B,cAAAA,CACL5/C,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IACV,CAAE9O,EAAEyzE,QAAQa,aACZ1oD,GAAW,EAAGwpD,KAA+Bz8C,EAAG/M,EAAH+M,CAAYy8C,EAAIhC,aAC7DuD,EAEJ,CAEO6B,aAAAA,CACL7/C,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IACV,CAAE9O,EAAEyzE,QAAQY,kBACZzoD,GAAW,EAAGwpD,KAAiCz8C,EAAG/M,EAAH+M,CAAYy8C,IAC3DuB,EAEJ,CAEO8B,WAAAA,CACL9/C,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IACV,CAAE9O,EAAEkrE,UAAUwN,kBACd9sD,GAAW,EAAGwpD,KAA+Bz8C,EAAG/M,EAAH+M,CAAYy8C,IACzDuB,EAEJ,CAEOgC,gBAAAA,CACLhgD,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IACV,CAAE9O,EAAEkrE,UAAUwN,kBACd9sD,GAAW,EAAGwpD,KAA+Bz8C,EAAG/M,EAAH+M,CAAYy8C,EAAIhC,aAC7DuD,EAEJ,CAEOiC,UAAAA,CACLjgD,EACJg+C,GAAqB,GAEjB,OAAO3zE,KAAK8L,IACV,CAAE9O,EAAEkrE,UAAUC,iBACdv/C,GAAW,EAAG85B,KAA8B/sB,EAAG/M,EAAH+M,CAAY+sB,IACxDixB,EAEJ,CAEOkC,WAAAA,CACLlgD,EACJg+C,GAAqB,GAEjB,OAAO3zE,KACJ8L,IACC,CAAE9O,EAAEyzE,QAAQc,gBACZ3oD,GAAW,EAAG85B,KAA+B/sB,EAAG/M,EAAH+M,CAAY+sB,IACzDixB,EAEN,CAUOmC,gBAAAA,CACLngD,EACJg+C,GAAqB,GAEjB,MAAMoC,EAAcntD,GAAqCiW,GACvDlJ,EAAG/M,EAAH+M,CAA8BkJ,EAAKuxC,YACrC,OAAOpwE,KAAKk0E,QAAQzM,EAAAgJ,QAAQC,aAAa9nD,GAAWiW,GAClDyqC,EAAQyM,EAAWntD,EAAXmtD,CAAoBl3C,KAAO80C,GAClCO,QAAQzM,EAAAgJ,QAAQG,aAAahoD,GAAWiW,GACvCm3C,EAAQD,EAAWntD,EAAXmtD,CAAoBl3C,KAAO80C,GACpCO,QAAQzM,EAAAgJ,QAAQI,WAAWjoD,GAAWiW,GACrCo3C,EAAMF,EAAWntD,EAAXmtD,CAAoBl3C,KAAO80C,GAClCO,QAAQzM,EAAAgJ,QAAQK,YAAYloD,GAAWiW,GACtCq3C,EAAOH,EAAWntD,EAAXmtD,CAAoBl3C,KAAO80C,EACxC,CAaOwC,UAAAA,CACLxgD,EACJg+C,GAAqB,GAEjB,MAAMoC,EAAcntD,GAAoC,CAAC/H,EAAYO,IACnEuU,EAAG/M,EAAH+M,CAA8B9U,EAAMuvD,WAA8BhvD,EAAOgvD,YAC3E,OAAOpwE,KAAKo0E,SAAS,CAAE3M,EAAAgJ,QAAQC,YAAajJ,EAAAgJ,QAAQC,cAAe9nD,GAAW,CAAC/H,EAAMO,IACnFkoD,EAAQyM,EAAWntD,EAAXmtD,CAAoBl1D,EAAMO,KAASuyD,GAC1CS,SAAS,CAAE3M,EAAAgJ,QAAQG,YAAanJ,EAAAgJ,QAAQG,cAAehoD,GAAW,CAAC/H,EAAMO,IACxE40D,EAAQD,EAAWntD,EAAXmtD,CAAoBl1D,EAAMO,KAASuyD,GAC5CS,SAAS,CAAE3M,EAAAgJ,QAAQI,UAAWpJ,EAAAgJ,QAAQI,YAAajoD,GAAW,CAAC/H,EAAMO,IACpE60D,EAAMF,EAAWntD,EAAXmtD,CAAoBl1D,EAAMO,KAASuyD,GAC1CS,SAAS,CAAE3M,EAAAgJ,QAAQK,WAAYrJ,EAAAgJ,QAAQK,aAAcloD,GAAW,CAAC/H,EAAMO,IACtE80D,EAAOH,EAAWntD,EAAXmtD,CAAoBl1D,EAAMO,KAASuyD,EAChD,CAEOyC,UAAAA,CAAWnsE,GAChB,OAAOjK,KAAKq2E,SAAQztD,GAAW,EAAG/H,EAAMO,KAE/Bk1D,EADQrsE,EAAK2e,EAAL3e,CAAc4W,EAAKuvD,WAAYhvD,EAAMgvD,cAGxD,CAEOmG,UAAAA,CACLtsE,EACJ0pE,GAAqB,GAEjB,OAAO3zE,KACJ8L,IACC,CAAE9O,EAAEyzE,QAAQa,WAAYt0E,EAAEyzE,QAAQa,aAClC1oD,GAAW,EAAG/H,EAAMO,KAEXk1D,EADQrsE,EAAK2e,EAAL3e,CAAc4W,EAAKuvD,WAAYhvD,EAAMgvD,cAGtDuD,EAEN,CAEO6C,WAAAA,CACLvsE,EACJ0pE,GAAqB,GAEjB,OAAO3zE,KACJ8L,IACC,CAAE9O,EAAEyzE,QAAQW,YAAap0E,EAAEyzE,QAAQW,cACnCxoD,GAAW,EAAG/H,EAAMO,KAEXk1D,EADQrsE,EAAK2e,EAAL3e,CAAc4W,EAAKuvD,WAAYhvD,EAAMgvD,cAGtDuD,EAEN,CAEO8C,YAAAA,CAAaxsE,EAC2D0pE,GAAqB,GAClG,OAAO3zE,KACJ8L,IACC,CAAE9O,EAAEyzE,QAAQc,cAAev0E,EAAEyzE,QAAQc,gBACrC3oD,GAAW,EAAG/H,EAAMO,KAEXk1D,EADQrsE,EAAK2e,EAAL3e,CAAc4W,EAAKuvD,WAAYhvD,EAAMgvD,cAGtDuD,EAEN,CAEO0C,OAAAA,CAAkC1gD,GACvC,OAAO31B,KAAK8L,IAAI,CAAE9O,EAAEkrE,UAAUC,eAAgBnrE,EAAEkrE,UAAUC,gBAAkBxyC,EAC9E,EAOF,SAAgB2gD,EAAK5zB,GACnB,OAAO,IAAIgmB,EAAEmG,eAAensB,EAC9B,CAEA,SAAgB4mB,EAAQvqD,GACtB,OAAO,IAAI2pD,EAAEe,eAAe1qD,EAC9B,CAEA,SAAgBi3D,EAAQj3D,GACtB,OAAO,IAAI2pD,EAAEgO,eAAe33D,EAC9B,CAEA,SAAgBk3D,EAAMl3D,GACpB,OAAO,IAAI2pD,EAAEiO,aAAa53D,EAC5B,CAEA,SAAgBm3D,EAAOn3D,GACrB,OAAO,IAAI2pD,EAAEkO,cAAc73D,EAC7B,CAnZA7a,EAAAA,QAAAgvE,EAiYAhvE,EAAAA,KAAAoyE,EAIApyE,EAAAA,QAAAolE,EAIAplE,EAAAA,QAAA8xE,EAIA9xE,EAAAA,MAAA+xE,EAIA/xE,EAAAA,OAAAgyE,EAIAhyE,EAAAA,OAAA,SAAuBG,GACrB,OAAO,IAAIqkE,EAAEmO,cAAcxyE,EAC7B,EAEAH,EAAAA,WAAA,SAA2BG,EAAayyE,GACtC,OAAO,IAAIpO,EAAEqO,kBAAkB1yE,EAAKyyE,EACtC,EAEA5yE,EAAAA,SAAA,SAAyB8yE,EAA+B3yE,GACtD,OAAO,IAAIqkE,EAAEuO,gBAAgBD,EAAM3yE,EACrC,EAEAH,EAAAA,gBAAA,SAAgCgzE,GAC9B,OAAO7sD,EAAGY,SAASisD,EAAmBltE,KAAKxF,MAAM,GACnD,2GC5bA,MAAAkkE,EAAAxlD,EAAA,OACA6vD,EAAA7vD,EAAA,OAEAukD,EAAAvkD,EAAA,OACA+oD,EAAA/oD,EAAA,OACAiqD,EAAAjqD,EAAA,OACAi0D,EAAAj0D,EAAA,OAaA0lD,EAAA1lD,EAAA,OAkBMk0D,EAAc,CAClB1E,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQa,YACxBsE,YAAW,IAAOlzB,IAA0B,EAAAkmB,EAAAxoE,SAAO,EAAAwoE,EAAAqN,OAAMvzB,EAAI0tB,YAAY/rE,SACzEgxE,iBAAgB,IAAM3yB,IAAO,EAAAkmB,EAAAxoE,SAAO,EAAAwoE,EAAA0N,MAAK5zB,GAAKr+C,SAC9CwwE,SAAQ,IAAOnyB,IAAyB,EAAAkmB,EAAAxoE,QAAOsiD,EAAIr+C,SACnDivE,WAGCgE,EAAa,CACjB5E,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQI,WACxB+E,YAAW,IAAOlzB,IAA0B,EAAAkmB,EAAAqN,OAAMvzB,EAAI0tB,cACtDiF,iBAAgB,IAAM3yB,IAAO,EAAAkmB,EAAAqN,OAAMvzB,EAAM,EAAI,KAC7CwxB,QAAQzM,EAAAgJ,QAAQa,YAAY,IAAO5uB,IAClC,MAAM7+C,GAAS,EAAAszE,EAAAI,eAAc70B,EAAIr+C,OACjC,QAAelE,IAAX0D,EACF,MAAM,IAAIspE,EAAIqK,UAAU90B,EAAK+kB,EAAAgJ,QAAQI,WAEvC,OAAO,EAAAjI,EAAAqN,OAAMpyE,EAAO,IACnB,GACFyvE,WAGCmE,EAAc,CAClB/E,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQK,YACxB8E,YAAW,IAAOlzB,IAA0B,EAAAkmB,EAAAsN,QAAOxzB,EAAI0tB,cACvDiF,iBAAgB,IAAM3yB,IAAO,EAAAkmB,EAAAsN,QAAOxzB,EAAM,EAAI,KAC9CwxB,QAAQzM,EAAAgJ,QAAQa,YAAY,IAAO5uB,IAClC,MAAM7+C,GAAS,EAAAszE,EAAAI,eAAc70B,EAAIr+C,OACjC,QAAelE,IAAX0D,EACF,MAAM,IAAIspE,EAAIqK,UAAU90B,EAAK+kB,EAAAgJ,QAAQK,YAEvC,OAAO,EAAAlI,EAAAsN,QAAOryE,EAAO,IACpB,GACFyvE,WAGCoE,EAAe,CACnBhF,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQG,aACxBgF,YAAW,IAAOlzB,IACjB,MAAM7+C,GAAS,EAAAszE,EAAAQ,iBAAgBj1B,EAAIr+C,OACnC,QAAelE,IAAX0D,EACF,MAAM,IAAIspE,EAAIqK,UAAU90B,EAAK+kB,EAAAgJ,QAAQG,aAEvC,OAAO,EAAAhI,EAAAoN,SAAQnyE,EAAO,IAEvByxE,WAAU,IAAO5yB,IAChB,MAAMr+C,EAAMq+C,EAAIr+C,MACVR,EAAS,0BAA0BoG,KAAK5F,IAAO,EAAA8yE,EAAAQ,iBAAgBtzE,QAAOlE,EAC5E,QAAeA,IAAX0D,EACF,MAAM,IAAIspE,EAAIqK,UAAU90B,EAAK+kB,EAAAgJ,QAAQG,aAEvC,OAAO,EAAAhI,EAAAoN,SAAQnyE,EAAO,IACrB,GACFwxE,iBAAgB,IAAM3yB,IAAO,EAAAkmB,EAAAoN,SAAQtzB,EAAM,EAAI,KAC/C4wB,WAGCsE,EAAe,CACnBlF,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQC,aACxB2E,iBAAgB,IAAM3yB,IAAO,EAAAkmB,EAAAU,SAAQ5mB,EAAM,EAAI,KAC/CkzB,YAAW,IAAOlzB,IACjB,MAAM7+C,GAAS,EAAAszE,EAAAU,iBAAgBn1B,EAAIr+C,OACnC,QAAelE,IAAX0D,EACF,MAAM,IAAIspE,EAAIqK,UAAU90B,EAAK+kB,EAAAgJ,QAAQC,aAEvC,OAAO,EAAA9H,EAAAU,SAAQzlE,EAAO,IACrB,GACFyxE,WAAU,IAAO5yB,IAChB,MAAMr+C,EAAMq+C,EAAIr+C,MACVR,EAAS,SAASoG,KAAK5F,IAAO,EAAA8yE,EAAAU,iBAAgBxzE,QAAOlE,EAC3D,QAAeA,IAAX0D,EACF,MAAM,IAAIspE,EAAIqK,UAAU90B,EAAK+kB,EAAAgJ,QAAQC,aAEvC,OAAO,EAAA9H,EAAAU,SAAQzlE,EAAO,IAEvByvE,WAGCwE,EAAgB,CACpBpF,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQc,eACxB2C,QAAQzM,EAAAgJ,QAAQc,eAAe,IAAO7uB,GAA2BA,IACjEwxB,QAAQzM,EAAAgJ,QAAQa,YAAY,IAAO5uB,IAClC,EAAAkmB,EAAAmP,WAAS,EAAAZ,EAAAa,eAAct1B,EAAIr+C,OAAQq+C,EAAIr+C,SAAQ,GAChD6vE,QAAQzM,EAAAgJ,QAAQkB,UAAU,IAAOjvB,GAChC,IAAIgmB,EAAEuO,gBAAgB,IAAKv0B,EAAI0tB,WAAY6H,MAAO,EAAGC,QAAS,EAAGC,QAAS,MAC3E7E,WAGC8E,EAAe,CACnB1F,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQW,aACxBwE,YAAW,IAAOlzB,IAA0B,EAAAkmB,EAAA0N,MAAK5zB,EAAIqqB,eAAc,GACnEmH,QAAQzM,EAAAgJ,QAAQW,aAAa,IAAO1uB,IAAc,EAAAkmB,EAAA0N,MAAK5zB,EAAIqqB,eAAc,GACzEmH,QAAQzM,EAAAgJ,QAAQa,YAAY,IAAO5uB,IAClC,OAAQA,EAAIr+C,OACV,IAAK,OAIL,IAAK,IACH,OAAO,EAAAukE,EAAA0N,OAAK,GAHd,IAAK,QAIL,IAAK,IACH,OAAO,EAAA1N,EAAA0N,OAAK,GACd,QACE,MAAM,IAAInJ,EAAIqK,UAAU90B,EAAK+kB,EAAAgJ,QAAQW,aACzC,IACC,GACFkC,WAUC+E,EAAY,CAChB3F,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQgB,UACxByC,QAAQzM,EAAAgJ,QAAQgB,UAAU,IAAO/uB,GAAqB,IAAIgmB,EAAE4P,YAAY51B,EAAI0tB,WAAY1tB,EAAI4tB,YAC5F4D,QAAQzM,EAAAgJ,QAAQc,eAAe,IAAO7uB,GACrC,IAAIgmB,EAAE4P,YAAY51B,EAAI0tB,cACvBqF,aAAY,IAAO/yB,GAAc,IAAIgmB,EAAE4P,aAAY,EAAAnB,EAAAoB,WAAU71B,EAAIr+C,UACjEivE,WAGCkF,EAAY,CAChB9F,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQkB,UACxBuC,QAAQzM,EAAAgJ,QAAQkB,UAAU,IAAOjvB,GAAqB,IAAIgmB,EAAE+P,YAAY/1B,EAAI0tB,WAAY1tB,EAAI4tB,YAC5F4D,QAAQzM,EAAAgJ,QAAQc,eAAe,IAAO7uB,GACrC,IAAIgmB,EAAE+P,YAAY/1B,EAAI0tB,cACvBqF,aAAY,IAAO/yB,GAAgB,IAAIgmB,EAAE+P,aAAY,EAAAtB,EAAAuB,WAAUh2B,EAAIr+C,UACnEivE,WAGCqF,EAAgB,CACpBjG,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQqB,cAExBoC,QAAQzM,EAAAgJ,QAAQqB,cAAc,IAAOpvB,GAEpC,IAAIgmB,EAAEmJ,gBAAgBnvB,EAAI0tB,WAAY1tB,EAAI4tB,YAC3CmF,aAAY,IAAO/yB,GAClB,IAAIqwB,EAAAlB,iBAAgB,EAAAsF,EAAAyB,eAAcl2B,EAAIr+C,UACvCivE,WAGCuF,EAAuB,CAC3BnG,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQuB,uBAExBkC,QAAQzM,EAAAgJ,QAAQqB,cAAc,IAAOpvB,GAEpC,IAAIgmB,EAAEoQ,wBAAuB,EAAA7M,EAAA8M,uBAAsBr2B,EAAI0tB,eACxDqF,aAAY,IAAO/yB,GAClB,IAAIgmB,EAAEoQ,wBAAuB,EAAA3B,EAAA6B,sBAAqBt2B,EAAIr+C,UACvDivE,WAGC2F,EAAyB,CAC7BvG,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQ5P,EAAAgJ,QAAQwB,yBAExBiC,QAAQzM,EAAAgJ,QAAQqB,cAAc,IAAOpvB,GAEpC,IAAIgmB,EAAEwQ,0BAAyB,EAAAjN,EAAAkN,yBAAwBz2B,EAAI0tB,eAC5DqF,aAAY,IAAO/yB,GAClB,IAAIgmB,EAAEwQ,0BAAyB,EAAA/B,EAAAiC,wBAAuB12B,EAAIr+C,UAC3DivE,WAGQpvE,EAAAA,iBAAmE,CAK9E,CAACujE,EAAAgJ,QAAQa,YAAa8F,EACtB,CAAC3P,EAAAgJ,QAAQI,WAAYyG,EACrB,CAAC7P,EAAAgJ,QAAQK,YAAa2G,EACtB,CAAChQ,EAAAgJ,QAAQG,aAAc8G,EACvB,CAACjQ,EAAAgJ,QAAQC,aAAckH,EACvB,CAACnQ,EAAAgJ,QAAQc,eAAgBuG,EACzB,CAACrQ,EAAAgJ,QAAQkB,UAAW6G,EACpB,CAAC/Q,EAAAgJ,QAAQW,aAAcgH,EACvB,CAAC3Q,EAAAgJ,QAAQgB,UAAW4G,EACpB,CAAC5Q,EAAAgJ,QAAQqB,cAAe6G,EACxB,CAAClR,EAAAgJ,QAAQuB,uBAAwB6G,EACjC,CAACpR,EAAAgJ,QAAQwB,yBAA0BgH,wGCvOrC,MAAAlG,EAAA7vD,EAAA,OAGAwkD,EAAAxkD,EAAA,OAsBA,MAAakwD,EASXpkE,WAAAA,CAAoCikE,EAAoBoG,GAApB,KAAApG,WAAAA,EAClCjzE,KAAKs5E,oBAAiBn5E,EACtBH,KAAKu5E,iBAAmBn4E,OAAO2G,OAAO,MACtC/H,KAAKw5E,iBAAmB,GACxBx5E,KAAKq5E,MAAQA,GAAS,EACtBr5E,KAAKy5E,oBAAiBt5E,CACxB,CAEQu5E,UAAAA,CAAWC,GACjB,MAAMC,GAAc,EAAAlS,EAAAmS,eAAcF,GAClC,GAAIC,EACF,OAAO55E,KAAKu5E,iBAAiBK,GAE/B,IAAK,MAAQltE,EAAMymE,KAAkBnzE,KAAKw5E,iBACxC,GAAIG,IAAiBjtE,EACnB,OAAOymE,CAIb,CAKOa,sBAAAA,CAAuBvvE,GAE5B,IAAI+yC,EAAiCx3C,KACrC,IAAK,MAAM08B,KAAcj4B,EAEvB,GADA+yC,EAAOA,EAAKkiC,WAAWh9C,IAClB8a,EACH,OAGJ,OAAOA,EAAK8hC,cACd,CAQO1G,MAAAA,CACLnuE,EACAsjE,EACAvxC,GAGA,IAAIsjD,EAAoDtjD,EAAuBx2B,KAAKizE,YAChF8G,EAAc,EAClB,KAAOA,EAAct1E,EAAKlD,QAAUu4E,GAAW9oD,OAAO,CACpD,MAAMqD,EAAO5vB,EAAKs1E,GACZC,GAAoB,EAAAjH,EAAAkH,yBAAwB5lD,GAClDylD,EAAYA,EAAU9oD,MAAMgpD,EAAoBA,EAAkB3J,SAAWh8C,EAAK7G,UAClFusD,GACF,CACA,GAAIA,IAAgBt1E,EAAKlD,QAAUu4E,GAAWtG,KAC5C,OAAOsG,EAAUtG,KAKnB,MAAM0G,EAAuD,GAE7D,GAAoB,IAAhBz1E,EAAKlD,OACP,OAAOvB,KAAKs5E,eAOd,IAFAY,EAAY32E,QAAQvD,KAAKm6E,kBAAkB11E,EAPxB,GAO0CsjE,GAAmB5iE,KAAIqyC,IAAI,CACnFA,OAAMr5B,MAAOi8D,OACXF,EAAY34E,OAAS,GAAG,CAC7B,MAAM,MAAE4c,EAAK,KAAEq5B,GAAgD0iC,EAAY12E,MAG3E,GAAI2a,IAAU1Z,EAAKlD,QAAUi2C,EAAK8hC,eAEhC,OADAt5E,KAAKq6E,WAAW7jD,EAAwB/xB,EAAM+yC,EAAK8hC,gBAC5C9hC,EAAK8hC,eAEdY,EAAY32E,QAAQi0C,EAAK2iC,kBAAkB11E,EAAK0Z,GAAQ4pD,GAAmB5iE,KAAIgd,IAAI,CAC9Eq1B,KAAMr1B,EAAMhE,MAAOA,EAAQ,MAClC,CAIF,CAEQk8D,UAAAA,CACN7jD,EACA/xB,EACA+uE,GAEA,SAAS8G,EAAWC,EAAkC95E,GAIpD,OAHMA,KAAO85E,IACXA,EAAS95E,GAAO,CAAC,GAEZ85E,EAAS95E,EAClB,CACA,IAAIuwB,EAAQspD,EAAW9jD,EAAwBx2B,KAAKizE,YACpD,IAAK,MAAM5+C,KAAQ5vB,EAAM,CACvB,MAAMu1E,GAAoB,EAAAjH,EAAAkH,yBAAwB5lD,GAC5C5zB,EAAMu5E,EAAoBA,EAAkB3J,SAAWh8C,EAAK7G,SAClEwD,EAAMA,MAAQA,EAAMA,OAAS,CAAC,EAC9BA,EAAQspD,EAAWtpD,EAAMA,MAAOvwB,EAClC,CACAuwB,EAAMwiD,KAAOA,CACf,CAQOI,WAAAA,CAAY4G,EAA+BhH,GAChDxzE,KAAKy6E,aAAa,IAAKD,GAAiBhH,EAAM,EAChD,CAEQiH,YAAAA,CAAaD,EAA+BhH,EAA8BiG,GAChF,MAAQiB,KAAiBC,GAAmBH,EAC5C,IAAKE,EAKH,kBAJ4Bv6E,IAAxBH,KAAKy5E,gBAAgCA,GAAkBz5E,KAAKy5E,kBAC9Dz5E,KAAKy5E,eAAiBA,EACtBz5E,KAAKs5E,eAAiB9F,IAI1B,IAAIoH,EAAW56E,KAAK05E,WAAWgB,GAC/B,IAAKE,EAAU,CACb,MAAMC,EAAU,IAAIzH,EAAapzE,KAAKizE,WAAYjzE,KAAKq5E,MAAQ,GACzDO,GAAc,EAAAlS,EAAAmS,eAAca,GAC9Bd,IACF55E,KAAKu5E,iBAAiBK,GAAeiB,GAEvC,MAAMlB,GAAe,EAAAjS,EAAAoT,gBAAeJ,GAChCf,GACF35E,KAAKw5E,iBAAiBj2E,KAAK,CAAEo2E,EAAckB,IAE7CD,EAAWC,CACb,CAGA,GAFAD,EAASH,aAAaE,EAAgBnH,EAAMiG,GAExC/R,EAAAqT,cAAcL,GAChB,IAAK,MAAMplD,KAAOoyC,EAAAqT,cAAcL,GAC9B16E,KAAKg7E,oBACH1lD,EAAI2lD,cACJzH,EACAl+C,EAAI4lD,mBACJP,EACAlB,EAIR,CAEQuB,mBAAAA,CACNC,EACAzH,EACA0H,EACAV,EACAf,GAEA,IAAImB,EAAW56E,KAAK05E,WAAWuB,GAC/B,IAAKL,EAAU,CACb,MAAMC,EAAU,IAAIzH,EAAapzE,KAAKizE,WAAYjzE,KAAKq5E,MAAQ,GAC/Dr5E,KAAKw5E,iBAAiBj2E,KAAK,CAAE03E,EAAeJ,IAC5CD,EAAWC,CACb,CACAD,EAASH,aAAaD,GAAeW,GAAY12E,GAAQ+uE,EAAK2H,EAAL3H,CAAe,IACnE/uE,EAAKD,MAAM,EAAGxE,KAAKq5E,OACtB6B,EAAmBz2E,EAAKzE,KAAKq5E,WAC1B50E,EAAKD,MAAMxE,KAAKq5E,MAAQ,EAAG50E,EAAKlD,WACjCk4E,EAAiB,EACvB,CAOQU,iBAAAA,CAAkBt7C,EAAuBszC,GAC/C,MAAMptE,EAAmB,GACnBi1E,GAAoB,EAAAjH,EAAAkH,yBAAwBp7C,GASlD,GAPI7+B,KAAKu5E,iBAAiBllD,MACxBtvB,EAAIxB,KAAKvD,KAAKu5E,iBAAiBllD,MAG7Br0B,KAAKu5E,iBAAiB16C,EAAIrR,WAC5BzoB,EAAIxB,KAAKvD,KAAKu5E,iBAAiB16C,EAAIrR,WAEjCwsD,EAAmB,CAKrB,MAAMoB,GAAe,EAAA1T,EAAA2T,oBAAmBrB,EAAkB3J,UAC1D,IAAIiL,EAGFA,EAFEF,EAEkB1T,EAAA6T,mBAAmBH,IAGnB,EAAA1T,EAAA8T,eAAcxB,EAAkB3J,SAAU8B,GAEhE,MAAM1wD,EAAoCzhB,KAAKw5E,iBAAiBv0E,QAAO,EAAGw2E,EAAWrvC,KACnFqvC,KAAaH,IACZn2E,KAAI,EAAGs2E,EAAWC,KAAW,CAAEJ,EAAsCG,GAAYC,KAEpFj6D,EAAQ8sB,MAAK,EAAGotC,EAAOC,IAAgBC,EAAOC,KAAiBH,EAAQE,IACvE92E,EAAIxB,QAAQke,EAAQtc,KAAI,EAAGinC,EAAG2vC,KAAiBA,IACjD,CACA,OAAOh3E,CACT,EA/NFb,EAAAA,aAAAkvE,sGC1BA,MAAA4I,EAAA94D,EAAA,OACA+T,EAAA/T,EAAA,OACA+G,EAAA/G,EAAA,OACA+4D,EAAA/4D,EAAA,MACAg5D,EAAAh5D,EAAA,OACAi5D,EAAAj5D,EAAA,OAGAwlD,EAAAxlD,EAAA,OAEAskD,EAAAtkD,EAAA,OACAlmB,EAAAkmB,EAAA,OACAukD,EAAAvkD,EAAA,OAEA+oD,EAAA/oD,EAAA,OAYAiqD,EAAAjqD,EAAA,OACA6mD,EAAA7mD,EAAA,OACAk5D,EAAAl5D,EAAA,OAEAm5D,EAAAn5D,EAAA,OACA0lD,EAAA1lD,EAAA,OACAo5D,EAAAp5D,EAAA,OACAq5D,EAAAr5D,EAAA,OAEMmH,EAAK,IAAIJ,EAAAK,YAcTqyC,EAAM,CACV+V,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBsT,KAClC3H,SAAQ,IAAMnyB,IAAO,EAAAkmB,EAAA0N,OAAM5zB,EAAIqqB,eAC/BuG,WAGCmJ,EAAY,CAChB/J,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBwT,OAClC5G,kBAAiB,IAAMpzB,GAAOA,IAC9B4wB,WAGCqJ,EAAa,CACjBjK,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB0T,QAClC9G,kBAAiB,IAAMpzB,IAAQA,IAC/B4wB,WAGCuJ,EAAiB,CACrBnK,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB4T,gBAClC3G,YAAW,IAAM,CAACt1D,EAAMO,IAAU,IAAI46D,EAAAe,UAAUl8D,GAAMm8D,MAAM57D,GAAO67D,aACnE3J,WAGC4J,EAAW,CACfxK,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBG,UAClC8M,YAAW,IAAM,CAACt1D,EAAMO,IAAU,IAAI46D,EAAAe,UAAUl8D,GAAMs8D,IAAI/7D,GAAO67D,aACjE5I,cACC,CAAE5M,EAAAgJ,QAAQC,YAAajJ,EAAAgJ,QAAQC,cAC/B,IAAM,CAAC7vD,EAAcO,KACnB,GAAc,IAAVA,EACF,MAAM,IAAI+rD,EAAIiQ,gBAAgB,yBAEhC,OAAO,EAAAxU,EAAAoN,SAAQ,IAAIgG,EAAAe,UAAUl8D,GAAMs8D,IAAI/7D,GAAO67D,WAAW,IAG5D3J,WAGC+J,EAAW,CACf3K,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBC,UAClCgN,YAAW,IAAM,CAACt1D,EAAMO,IAAU,IAAI46D,EAAAe,UAAUl8D,GAAMy8D,KAAKl8D,GAAO67D,aAClEnxE,IAAI,CAAE27D,EAAAgJ,QAAQc,cAAe9J,EAAAgJ,QAAQuB,wBAAyB,IAC7D,EAAGgF,EAAMuG,KAEP,IAAI7U,EAAEuO,iBAAgB,EAAAmF,EAAAoB,uBAAsBxG,EAAK5G,YAAY,EAAAnE,EAAAwR,iCAAgCF,EAAInN,gBACpG1tE,KAAK,CACJmxE,KAAM,CAAEpM,EAAAgJ,QAAQc,cAAe9J,EAAAgJ,QAAQuB,uBACvC8B,GAAI,CAAErM,EAAAgJ,QAAQc,cAAe9J,EAAAgJ,QAAQwB,2BAEtCnmE,IAAI,CAAE27D,EAAAgJ,QAAQkB,SAAUlK,EAAAgJ,QAAQuB,wBAAyB,IACxD,EAAGgF,EAAMuG,KAEP,IAAI7U,EAAE+P,aACJ,EAAA2D,EAAAoB,wBACE,EAAAvR,EAAAyR,iCAAgC1G,EAAK5G,aACrC,EAAAnE,EAAAwR,iCAAgCF,EAAInN,gBAG3C1tE,KAAK,CACJmxE,KAAM,CAAEpM,EAAAgJ,QAAQkB,SAAUlK,EAAAgJ,QAAQuB,uBAClC8B,GAAI,CAAErM,EAAAgJ,QAAQkB,SAAUlK,EAAAgJ,QAAQwB,2BAEjCnmE,IAAI,CAAE27D,EAAAgJ,QAAQgB,SAAUhK,EAAAgJ,QAAQuB,wBAAyB,IACxD,EAAGp0B,EAAM2/B,KAEP,IAAI7U,EAAE4P,aACJ,EAAA8D,EAAAoB,wBACE,EAAAvR,EAAAyR,iCAAgC9/B,EAAKwyB,aACrC,EAAAnE,EAAAwR,iCAAgCF,EAAInN,gBAG3C1tE,KAAK,CACJmxE,KAAM,CAAEpM,EAAAgJ,QAAQgB,SAAUhK,EAAAgJ,QAAQuB,uBAClC8B,GAAI,CAAErM,EAAAgJ,QAAQgB,SAAUhK,EAAAgJ,QAAQwB,2BAEjCqB,WAGCqK,EAAc,CAClBjL,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB0U,aAClCzH,YAAW,IAAM,CAACt1D,EAAMO,IAAU,IAAI46D,EAAAe,UAAUl8D,GAAMg9D,MAAMz8D,GAAO67D,aACnEnxE,IAAI,CAAE27D,EAAAgJ,QAAQc,cAAe9J,EAAAgJ,QAAQc,gBAAiB,EAAGjF,qBACxD,EAAGwR,EAAOC,KAER,IAAIrV,EAAEoQ,wBAAuB,EAAAsD,EAAA4B,iBAAgBF,EAAM1N,WAAY2N,EAAM3N,WAAY9D,MACpF5pE,KAAK,CAAEmxE,KAAM,CAAEpM,EAAAgJ,QAAQc,cAAe9J,EAAAgJ,QAAQc,eAAiBuC,GAAI,CAAErM,EAAAgJ,QAAQkB,SAAUlK,EAAAgJ,QAAQkB,YAC/FjvE,KAAK,CAAEmxE,KAAM,CAAEpM,EAAAgJ,QAAQc,cAAe9J,EAAAgJ,QAAQc,eAAiBuC,GAAI,CAAErM,EAAAgJ,QAAQgB,SAAUhK,EAAAgJ,QAAQgB,YAC/F3lE,IAAI,CAAE27D,EAAAgJ,QAAQc,cAAe9J,EAAAgJ,QAAQuB,wBAAyB,IAC7D,EAAGgF,EAAMuG,KAEP,IAAI7U,EAAEuO,iBAAgB,EAAAmF,EAAAoB,uBACpBxG,EAAK5G,YACL,EAAAnE,EAAAwR,kCAAgC,EAAAxR,EAAAgS,gBAAeV,EAAInN,iBAExD1tE,KAAK,CACJmxE,KAAM,CAAEpM,EAAAgJ,QAAQc,cAAe9J,EAAAgJ,QAAQuB,uBACvC8B,GAAI,CAAErM,EAAAgJ,QAAQc,cAAe9J,EAAAgJ,QAAQwB,2BAEtCnmE,IAAI,CAAE27D,EAAAgJ,QAAQkB,SAAUlK,EAAAgJ,QAAQuB,wBAAyB,IACxD,EAAGgF,EAAMuG,KAEP,IAAI7U,EAAE+P,aAAY,EAAA2D,EAAAoB,wBAChB,EAAAvR,EAAAyR,iCAAgC1G,EAAK5G,aACrC,EAAAnE,EAAAwR,kCAAgC,EAAAxR,EAAAgS,gBAAeV,EAAInN,iBAExD1tE,KAAK,CACJmxE,KAAM,CAAEpM,EAAAgJ,QAAQkB,SAAUlK,EAAAgJ,QAAQuB,uBAClC8B,GAAI,CAAErM,EAAAgJ,QAAQkB,SAAUlK,EAAAgJ,QAAQwB,2BAEjCnmE,IAAI,CAAE27D,EAAAgJ,QAAQgB,SAAUhK,EAAAgJ,QAAQuB,wBAAyB,IACxD,EAAGp0B,EAAM2/B,KAEP,IAAI7U,EAAE4P,aAAY,EAAA8D,EAAAoB,wBAChB,EAAAvR,EAAAyR,iCAAgC9/B,EAAKwyB,aACrC,EAAAnE,EAAAwR,kCAAgC,EAAAxR,EAAAgS,gBAAeV,EAAInN,iBAExDkD,WAIC4K,EAAW,CACfxL,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBp2D,OAClCsjE,YAAW,IAAM,CAACv1D,EAAMO,IAAUP,IAASO,IAC3Cm1D,YAAW,IAAM,CAAC11D,EAAMO,IAAwC,IAA9BP,EAAK4hC,cAAcrhC,KACrDtV,IACC,CAAE27D,EAAAgJ,QAAQY,gBAAiB5J,EAAAgJ,QAAQY,kBACnC,IAAM,EAAGxwD,EAAMO,MAAmC,EAAAwnD,EAAA0N,MAAKz1D,EAAKxc,QAAU+c,EAAM/c,OAC1Ewc,EAAK8V,WAAavV,EAAMuV,YAG3B7qB,IAAI,CAAE27D,EAAAS,UAAUwN,gBAAiBjO,EAAAS,UAAUwN,kBAAmB,IAAM,KAAM,EAAA9M,EAAA0N,OAAK,KAC/EE,aAAY,IAAM,CAAC31D,EAAMO,IAAUP,IAASO,IAC5Cq1D,cAAa,EAAGnK,qBAAsB,CAACzrD,EAAMO,KAC5C,EAAA6qD,EAAAkS,WAAUt9D,EAAMyrD,GAAiB8R,aAAc,EAAAnS,EAAAkS,WAAU/8D,EAAOkrD,GAAiB8R,YAClF17E,KAAK,CAEJmxE,KAAM,CAAEpM,EAAAgJ,QAAQc,cAAe9J,EAAAgJ,QAAQc,eACvCuC,GAAI,CAAErM,EAAAgJ,QAAQkB,SAAUlK,EAAAgJ,QAAQkB,YAEjC7lE,IACC,CAAE,OAAQ,SACV8c,GAAW,EAAG/H,EAAMO,MAClB,MAAMuU,EAAsB,IAAI0mD,EAAAgC,gBAAgB5W,EAAAyB,gBAAgBp2D,MAAOorE,GACvE,OAAO,EAAAtV,EAAA0N,MACe3gD,EAAGpvB,MAAM,CAAUsa,EAAMkK,QAAiB3J,EAAO2J,SAAWnC,GAAUmkD,aACtEp3C,EAAGpvB,MAAM,CAAUsa,EAAM+J,UAAmBxJ,EAAOwJ,WAAahC,GAAUmkD,aAC1Ep3C,EAAGpvB,MAAM,CAAUsa,EAAMmK,OAAgB5J,EAAO4J,QAAUpC,GAAUmkD,YACzF,IAEH,GAEDjhE,IACC,CAAE,OAAQ,SACV,IAAM,EAAG+U,EAAMO,MAAY,EAAAwnD,EAAA0N,MAiBjC,SAAsBgI,EAAaC,GACjC,MAAM19D,EAAOy9D,EAAM/U,QACbnoD,EAAQm9D,EAAOhV,QACf7mB,EAAM7hC,EAAK6f,OAAOtf,GACxB,IAAKshC,GAA0B,YAAlB7hC,EAAK2M,UAA+C,YAAnBpM,EAAMoM,SAClD,MAAM,IAAI2/C,EAAIqR,kBAAkB,CAAEF,EAAOC,IAE3C,OAAO77B,CACT,CAzBsC+7B,CAAa59D,EAAMO,MACnD,GAEDtV,IAAI,CAAE27D,EAAAgJ,QAAQqB,aAAcrK,EAAAgJ,QAAQqB,eAAgB,IACnD,EAAG4M,EAAMC,MACP,EAAA/V,EAAA0N,OAAK,EAAArK,EAAA2S,6BAA2B,EAAA3S,EAAA4S,0CAAyCH,EAAKtO,gBAC5E,EAAAnE,EAAA2S,6BAA2B,EAAA3S,EAAA4S,0CAAyCF,EAAKvO,eACzE,EAAAnE,EAAA6S,4BAA0B,EAAA7S,EAAA8S,wCAAuCL,EAAKtO,gBACtE,EAAAnE,EAAA6S,4BAA0B,EAAA7S,EAAA8S,wCAAuCJ,EAAKvO,gBAC3EtkE,IAAI,CAAE27D,EAAAgJ,QAAQgB,SAAUhK,EAAAgJ,QAAQgB,WAAY,EAAGnF,qBAC9C,EAAG0S,EAAOC,MAER,EAAArW,EAAA0N,OAAK,EAAArK,EAAAkS,YAAU,EAAAlS,EAAAyR,iCAAgCsB,EAAM5O,YAAa9D,GAAiB8R,aACjF,EAAAnS,EAAAkS,YAAU,EAAAlS,EAAAyR,iCAAgCuB,EAAM7O,YAAa9D,GAAiB8R,aACnF9K,WAaC4L,EAAa,CACjBxM,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBiW,WAClCrzE,IAAI,CAAE,OAAQ,SAAU8c,GACvB,EAAGuzB,EAAOqT,MACR,EAAAoZ,EAAA0N,OAA0BiG,EAAAtT,iBAAiBjsE,EAAEksE,gBAAgBp2D,OAC1DvM,MAAM,CAAE41C,EAAOqT,GAAU5mC,GAAUwnD,cACzCkD,WAGC8L,EAAa,CACjB1M,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBmW,IAClCjJ,YAAW,IAAM,CAACv1D,EAAMO,IAAUP,EAAOO,IACzCm1D,YAAW,IAAM,CAAC11D,EAAMO,KAAyC,IAA/BP,EAAK4hC,cAAcrhC,KACrDo1D,aAAY,IAAM,CAAC31D,EAAMO,IAAUP,EAAOO,IAC1CtV,IACC,CAAE,OAAQ,SACV,IAAM,EAAG+U,EAAMO,MAAY,EAAAwnD,EAAA0N,OAAwD,KAAnD,EAAAvM,EAAAz7B,YAAWztB,EAAK0oD,QAASnoD,EAAMmoD,SAAS,MACxE,GAEDkN,cAAa,EAAGnK,qBAAsB,CAACzrD,EAAMO,KAC5C,EAAA6qD,EAAAkS,WAAUt9D,EAAMyrD,GAAiB8R,WAAY,EAAAnS,EAAAkS,WAAU/8D,EAAOkrD,GAAiB8R,YAChF17E,KAAK,CAEJmxE,KAAM,CAAEpM,EAAAgJ,QAAQc,cAAe9J,EAAAgJ,QAAQc,eACvCuC,GAAI,CAAErM,EAAAgJ,QAAQkB,SAAUlK,EAAAgJ,QAAQkB,YAEjC7lE,IAAI,CAAE27D,EAAAgJ,QAAQwB,wBAAyBxK,EAAAgJ,QAAQwB,0BAA2B,IACzE,EAAGqN,EAAOC,MAER,EAAA3W,EAAA0N,OAAK,EAAArK,EAAA2S,6BAA2B,EAAA3S,EAAA4S,0CAAyCS,EAAMlP,cAC7E,EAAAnE,EAAA2S,6BAA2B,EAAA3S,EAAA4S,0CAAyCU,EAAMnP,gBAC/EtkE,IAAI,CAAE27D,EAAAgJ,QAAQuB,sBAAuBvK,EAAAgJ,QAAQuB,wBAAyB,IACrE,EAAG0M,EAAMC,MAEP,EAAA/V,EAAA0N,OAAK,EAAArK,EAAA6S,4BAA0B,EAAA7S,EAAA8S,wCAAuCL,EAAKtO,cACzE,EAAAnE,EAAA6S,4BAA0B,EAAA7S,EAAA8S,wCAAuCJ,EAAKvO,gBAC3EtkE,IAAI,CAAE27D,EAAAgJ,QAAQgB,SAAUhK,EAAAgJ,QAAQgB,WAAY,EAAGnF,qBAC9C,EAAG0S,EAAOC,MAER,EAAArW,EAAA0N,OAAK,EAAArK,EAAAkS,YAAU,EAAAlS,EAAAyR,iCAAgCsB,EAAM5O,YAAa9D,GAAiB8R,WACjF,EAAAnS,EAAAkS,YAAU,EAAAlS,EAAAyR,iCAAgCuB,EAAM7O,YAAa9D,GAAiB8R,aACnF9K,WAGCkM,EAAc,CAClB9M,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBuW,IAClC3zE,IAAI,CAAE,OAAQ,SAAU8c,GACvB,EAAGuzB,EAAOqT,KAER+sB,EAAAtT,iBAAiBjsE,EAAEksE,gBAAgBmW,IAAI94E,MAAM,CAAEipD,EAAQrT,GAASvzB,KACnE0qD,WAGCoM,EAAkB,CACtBhN,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgByW,KAClC7zE,IAAI,CAAE,OAAQ,SAAU8c,GACvB,EAAGuzB,EAAOqT,MAIR,EAAAoZ,EAAA0N,MACsBiG,EAAAtT,iBAAiBjsE,EAAEksE,gBAAgBmW,IAAI94E,MAAM,CAAE41C,EAAOqT,GAAU5mC,GAAUwnD,YAC1EmM,EAAAtT,iBAAiBjsE,EAAEksE,gBAAgBp2D,OAAOvM,MAAM,CAAE41C,EAAOqT,GAAU5mC,GAAUwnD,cAEtGkD,WAGCsM,EAAmB,CACvBlN,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB2W,KAClC/zE,IAAI,CAAE,OAAQ,SAAU8c,GACvB,EAAGuzB,EAAOqT,KAER+sB,EAAAtT,iBAAiBjsE,EAAEksE,gBAAgByW,KAAKp5E,MAAM,CAAEipD,EAAQrT,GAASvzB,KACpE0qD,WAWCwM,EAAQ,CACZpN,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB6W,QAClClL,SAAQ,IAAMxgD,IAAQ,EAAAu0C,EAAA0N,MAAuB,cAAlBjiD,EAAK7G,YAChC8lD,WAMC0M,EAAU,CACdtN,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB+W,UAClCpL,SAAQ,IAAMxgD,IAAQ,EAAAu0C,EAAA0N,MAAuB,cAAlBjiD,EAAK7G,YAChC8lD,WAMC4M,EAAY,CAChBxN,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBiX,YAClCtL,SAAQ,IAAMxgD,IAAQ,EAAAu0C,EAAA0N,MAAuB,YAAlBjiD,EAAK7G,YAChC8lD,WAMC8M,EAAY,CAChB1N,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBmX,YAClCzK,YAAW,IAAM,KAAM,EAAAhN,EAAA0N,OAAK,KAC5BzB,SAAQ,IAAM,KAAM,EAAAjM,EAAA0N,OAAK,KACzBhD,WAMCzD,EAAM,CACV6C,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB2G,KAClCgF,SAAQ,IAAMxgD,IAAQ,EAAAu0C,EAAAxoE,QAAOi0B,EAAKhwB,SAClCivE,WAMCwD,EAAO,CACXpE,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBoX,MAClCnL,YAAW,IAAM/C,IAAO,EAAAxJ,EAAAxoE,QAAOgyE,EAAIz7C,UAAY,MAC/C28C,WAMCxxC,EAAW,CACf4wC,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBqX,UAClCpL,YAAW,IAAM/C,GAAO,IAAI1J,EAAE8X,UAAUpO,EAAI/B,YAC5CiD,WAMCmN,EAAM,CACV/N,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBuX,KAClC30E,IAAI,CAAE,cAAe8c,GAAYnkB,IAChC,MAAM2tE,EAAoB3tE,EAAK,GACzBygC,GAAM,EAAA+2C,EAAAn2E,SAAmBssE,EAAI/tE,MAAOukB,EAAQotB,SAAW,IAC7D,OAAO,IAAI0yB,EAAE8X,UAAUt7C,EAAI,IAE5BowC,WAAU1sD,GAAYwpD,IACrB,MAAMltC,GAAM,EAAA+2C,EAAAn2E,SAAmBssE,EAAI/tE,MAAOukB,EAAQotB,SAAW,IAC7D,OAAO,IAAI0yB,EAAE8X,UAAUt7C,EAAI,IAE5BouC,WASCoN,EAAQ,CACZhO,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBwX,OAAO50E,IAC1C,CAAE27D,EAAAgJ,QAAQa,WAAY,cACtB,EAAGvJ,uBAAwB,EAAG1jE,EAAK6gC,MACjC,MAAMktC,EAAM/nD,EAAGyxB,QAAQz3C,EAAI+rE,WAAY/lD,EAAGkK,UAAU2Q,EAAIhlC,QACxD,OAAO,IAAIsnE,EAAAM,gBAAgBC,GAAmBK,iBAAiBgK,EAAI,IAErEkB,WAKEqN,EAAU,CACdjO,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgByX,SAClCtM,cACC,CAAE5M,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,aAC9B,IAAM,CAAC5uB,EAAa/rB,IAAqB,IAAI+xC,EAAEqO,kBAAkBr0B,EAAK/rB,EAASrxB,iBAEhFguE,WAMCsN,EAAO,CACXlO,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB0X,MAClC90E,IAAI,IAAI,IAAM,IAAM,IAAI48D,EAAE8X,UAAU,YAAYrE,EAAK0E,UACrDvN,WAMCwN,EAAU,CACdpO,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB4X,SAClCh1E,IAAI,IAAI,IAAM,KAAM,EAAA88D,EAAAxoE,QAAO+7E,EAAK0E,QAChCvN,WAWCyN,EAAS,CACbrO,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB6X,QAClCtL,aAAY,IAAMpxE,IAAO,EAAAukE,EAAAU,SAAQ,IAAKjlE,EAAI+rE,YAAa7uE,UACvD+xE,WAMC0N,EAAS,CACbtO,MAAO,CAAE,EAAG,GACZC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB8X,QAClC3M,cACC,CAAE5M,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQC,cAC9B,IAAM,CAAClhD,EAAgByxD,KAAwB,EAAArY,EAAAxoE,QAAO,IAAKovB,GAAShrB,MAAMy8E,EAAc,GAAG57E,KAAK,OAEjG+uE,SACC,CAAE3M,EAAAgJ,QAAQY,gBAAiB5J,EAAAgJ,QAAQC,cACnC,IAAM,CAAClhD,EAA6ByxD,KAClC,MAAMC,EAAM,IAAK1xD,EAAO4gD,YAAa5rE,MAAMy8E,EAAY7Q,WAAa,GAAG/qE,KAAK,IAC5E,OAAO,EAAAujE,EAAAkB,YAAWoX,EAAK1xD,EAAOmH,SAAS,IAG1C29C,eAAe,CACd7M,EAAAgJ,QAAQa,WACR7J,EAAAgJ,QAAQC,YACRjJ,EAAAgJ,QAAQC,cACP,IAAM,CAAClhD,EAAgByxD,EAAqB1/E,KAC7C,EAAAqnE,EAAAxoE,QAAO,IAAKovB,GAAShrB,MAAMy8E,EAAc,EAAG1/E,EAAS0/E,EAAc,GAAG57E,KAAK,OAC5EqvE,UAAU,CACTjN,EAAAgJ,QAAQY,gBACR5J,EAAAgJ,QAAQC,YACRjJ,EAAAgJ,QAAQC,cACP,IAAM,CAAClhD,EAA6ByxD,EAA+B1/E,KACpE,MAAM2/E,EAAM,IAAK1xD,EAAO4gD,YACrB5rE,MAAMy8E,EAAY7Q,WAAa,EAAG7uE,EAAO6uE,WAAa6Q,EAAY7Q,WAAa,GAAG/qE,KAAK,IAC1F,OAAO,EAAAujE,EAAAkB,YAAWoX,EAAK1xD,EAAOmH,SAAS,IAExC28C,WAMC6N,EAAQ,CACZzO,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBiY,OAClC5L,gBAAe,IAAMnD,IAAO,EAAAxJ,EAAAxoE,QAAOgyE,EAAIhtE,iBACvCowE,eAAc,IAAMpD,IAAO,EAAAxJ,EAAAkB,YAAWsI,EAAIhC,WAAWhrE,cAAegtE,EAAIz7C,YACxE28C,WAMC8N,EAAQ,CACZ1O,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBkY,OAClC7L,gBAAe,IAAMnD,IAAO,EAAAxJ,EAAAxoE,QAAOgyE,EAAI9sE,iBACvCkwE,eAAc,IAAMpD,IAAO,EAAAxJ,EAAAkB,YAAWsI,EAAIhC,WAAW9qE,cAAe8sE,EAAIz7C,YACxE28C,WAQC+N,EAAY,CAChB3O,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBmY,WAClChN,cACC,CAAE5M,EAAAS,UAAUwN,gBAAiBjO,EAAAgJ,QAAQa,aACrC,IAAM,CAACgQ,EAAcC,KAAiB,EAAA3Y,EAAA0N,MAAKgL,EAAKvsD,WAAWwsD,MAE5DnN,SACC,CAAE3M,EAAAgJ,QAAQY,gBAAiB5J,EAAAgJ,QAAQY,kBACnC,IAAM,CAACiQ,EAA2BC,KAChC,GAAID,EAAK3qD,WAAa4qD,EAAK5qD,SACzB,MAAM,IAAIw2C,EAAIqU,8BAA8BF,EAAMC,GAEpD,OAAO,EAAA3Y,EAAA0N,MAAKgL,EAAKlR,WAAWr7C,WAAWwsD,EAAKnR,YAAY,IAG3DkD,WAMCmO,EAAU,CACd/O,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBuY,SAClCpN,cACC,CAAE5M,EAAAS,UAAUwN,gBAAiBjO,EAAAgJ,QAAQa,aACrC,IAAM,CAACgQ,EAAcC,KAAiB,EAAA3Y,EAAA0N,MAAKgL,EAAK/8E,SAASg9E,MAE1DnN,SACC,CAAE3M,EAAAgJ,QAAQY,gBAAiB5J,EAAAgJ,QAAQY,kBACnC,IAAM,CAACiQ,EAA2BC,KAChC,GAAID,EAAK3qD,WAAa4qD,EAAK5qD,SACzB,MAAM,IAAIw2C,EAAIqU,8BAA8BF,EAAMC,GAEpD,OAAO,EAAA3Y,EAAA0N,MAAKgL,EAAKlR,WAAW7rE,SAASg9E,EAAKnR,YAAY,IAGzDkD,WAMCoO,EAAW,CACfhP,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBwY,UAClCrN,cACC,CAAE5M,EAAAS,UAAUwN,gBAAiBjO,EAAAgJ,QAAQa,aACrC,IAAM,CAACgQ,EAAcC,KAAiB,EAAA3Y,EAAA0N,MAAKgL,EAAKtlE,SAASulE,MAE1DnN,SACC,CAAE3M,EAAAgJ,QAAQY,gBAAiB5J,EAAAgJ,QAAQY,kBACnC,IAAM,CAACiQ,EAA2BC,KAChC,GAAID,EAAK3qD,WAAa4qD,EAAK5qD,SACzB,MAAM,IAAIw2C,EAAIqU,8BAA8BF,EAAMC,GAEpD,OAAO,EAAA3Y,EAAA0N,MAAKgL,EAAKlR,WAAWp0D,SAASulE,EAAKnR,YAAY,IAGzDkD,WAMCqO,GAAY,CAChBjP,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgByY,WAClCtN,cACC,CAAE5M,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,aAC9B,IAAM,CAACgQ,EAAcC,KAAiB,EAAA3Y,EAAAxoE,QAAOkhF,EAAK98E,MAAM,EAAGG,KAAKC,IAAI,EAAG08E,EAAKx3E,QAAQy3E,QAErFnN,SACC,CAAE3M,EAAAgJ,QAAQY,gBAAiB5J,EAAAgJ,QAAQa,aACnC,IAAM,CAACgQ,EAA2BC,KAChC,MAAQhN,EAAIC,GAAO,CAAE8M,EAAKlR,WAAYmR,EAAKnR,YACrC8Q,EAAMI,EAAKlR,WAAW5rE,MAAM,EAAGG,KAAKC,IAAI,EAAG2vE,EAAGzqE,QAAQ0qE,KAC5D,OAAO0M,IAAQ1M,GAAK,EAAA5L,EAAAkB,YAAWoX,EAAKI,EAAK3qD,WAAY,EAAAiyC,EAAAxoE,QAAO8gF,EAAI,IAGnE9M,SACC,CAAE3M,EAAAgJ,QAAQY,gBAAiB5J,EAAAgJ,QAAQY,kBACnC,IAAM,CAACiQ,EAA2BC,KAChC,GAAID,EAAK3qD,WAAa4qD,EAAK5qD,SACzB,MAAM,IAAIw2C,EAAIqU,8BAA8BF,EAAMC,GAEpD,MAAQhN,EAAIC,GAAO,CAAE8M,EAAKlR,WAAYmR,EAAKnR,YACrC8Q,EAAMI,EAAKlR,WAAW5rE,MAAM,EAAGG,KAAKC,IAAI,EAAG2vE,EAAGzqE,QAAQ0qE,KAC5D,OAAO0M,IAAQ1M,GAAK,EAAA5L,EAAAkB,YAAWoX,EAAKI,EAAK3qD,WAAY,EAAAiyC,EAAAxoE,QAAO8gF,EAAI,IAGnE5N,WAMCsO,GAAW,CACflP,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB0Y,UAClCvN,cACC,CAAE5M,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,aAC9B,IAAM,CAACgQ,EAAcC,KAAiB,EAAA3Y,EAAAxoE,QAAOkhF,EAAK98E,MAAM88E,EAAKx3E,QAAQy3E,IAAO/8E,MAAM+8E,EAAKhgF,WAExF6yE,SACC,CAAE3M,EAAAgJ,QAAQY,gBAAiB5J,EAAAgJ,QAAQa,aACnC,IAAM,CAACgQ,EAA2BC,KAChC,MAAQhN,EAAIC,GAAO,CAAE8M,EAAKlR,WAAYmR,EAAKnR,YACrC8Q,EAAM3M,EAAG/vE,MAAM+vE,EAAGzqE,QAAQ0qE,IAAKhwE,MAAMgwE,EAAGjzE,QAC9C,OAAO2/E,IAAQ1M,GAAK,EAAA5L,EAAAkB,YAAWoX,EAAKI,EAAK3qD,WAAY,EAAAiyC,EAAAxoE,QAAO8gF,EAAI,IAGnE9M,SACC,CAAE3M,EAAAgJ,QAAQY,gBAAiB5J,EAAAgJ,QAAQY,kBACnC,IAAM,CAACiQ,EAA2BC,KAChC,GAAID,EAAK3qD,WAAa4qD,EAAK5qD,SACzB,MAAM,IAAIw2C,EAAIqU,8BAA8BF,EAAMC,GAEpD,MAAQhN,EAAIC,GAAO,CAAE8M,EAAKlR,WAAYmR,EAAKnR,YACrC8Q,EAAM3M,EAAG/vE,MAAM+vE,EAAGzqE,QAAQ0qE,IAAKhwE,MAAMgwE,EAAGjzE,QAC9C,OAAO2/E,IAAQ1M,GAAK,EAAA5L,EAAAkB,YAAWoX,EAAKI,EAAK3qD,WAAY,EAAAiyC,EAAAxoE,QAAO8gF,EAAI,IAGnE5N,WAMCuO,GAAiB,CACrBnP,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB2Y,gBAClClM,kBAAiB,IAAMjzB,IAAO,EAAAkmB,EAAAxoE,QAAO0hF,UAAUp/B,MAAO4wB,WASrDyO,GAAc,CAClBrP,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB8Y,cAClC3N,cACC,CAAE5M,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,aAC9B,IAAM,CAACl4D,EAAa6oE,KAAkB,EAAArZ,EAAA0N,MAAKgG,EAAE4F,YAAY9oE,EAAK6oE,MAC9D3O,WAYA6O,GAAQ,CACZzP,MAAO,CAAE,EAAG,GACZC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBiZ,OAClC9N,cAAc,CAAE5M,EAAAS,UAAUwN,gBAAiBjO,EAAAgJ,QAAQa,aAZxD,WACE,MAAO,CAAC1tE,EAAc8rB,KAAoB,EAAAk5C,EAAA0N,MAAKgG,EAAE76D,QAAQ7d,EAAM8rB,GACjE,IAWK4kD,eAAe,CAAE7M,EAAAS,UAAUwN,gBAAiBjO,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,aAV7E,WACE,MAAO,CAAC1tE,EAAc8rB,EAAiB0yD,KAAkB,EAAAxZ,EAAA0N,MAAKgG,EAAE76D,QAAQ7d,EAAM8rB,EAAS0yD,GACzF,IASK9O,WAMC+O,GAAU,CACd3P,MAAO,CAAE,EAAG,GACZC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBmZ,SAClC/N,eACC,CAAE7M,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,aAClD,IAAM,CAACzyC,EAAanP,EAAiB4yD,KACnC,EAAA1Z,EAAAxoE,QAAOk8E,EAAEpuE,QAAQ2wB,EAAKnP,EAAS4yD,MAElCx2E,IACC,CAAE27D,EAAAgJ,QAAQY,gBAAiB5J,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,aACvD,IAAM,EAAGzyC,EAAKnP,EAAS4yD,MACrB,MAAMz+E,EAASy4E,EAAEpuE,QAAQ2wB,EAAIuxC,WAAY1gD,EAAQ0gD,WAAYkS,EAAYlS,YACzE,OAAO,EAAAxH,EAAAkB,YAAWjmE,EAAQg7B,EAAIlI,SAAS,IAG1Cg+C,kBACC,CAAElN,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,aACtE,IAAM,CAACzyC,EAAanP,EAAiB4yD,EAAqBF,KACxD,EAAAxZ,EAAAxoE,QAAOk8E,EAAEpuE,QAAQ2wB,EAAKnP,EAAS4yD,EAAaF,MAE/Ct2E,IACC,CAAE27D,EAAAgJ,QAAQY,gBAAiB5J,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,WAAY7J,EAAAgJ,QAAQa,aAC3E,IAAM,EAAGzyC,EAAKnP,EAAS4yD,EAAaF,MAElC,MAAMv+E,EAASy4E,EAAEpuE,QAAQ2wB,EAAIuxC,WAAY1gD,EAAQ0gD,WAAYkS,EAAYlS,WAAYgS,EAAMhS,YAC3F,OAAO,EAAAxH,EAAAkB,YAAWjmE,EAAQg7B,EAAIlI,SAAS,IAG1C28C,WAWCiP,GAAM,CACV7P,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBsZ,KAClC1M,kBAAiB,IAAM/2D,GAAOpa,KAAK49E,IAAIxjE,KACvCu0D,WAMCmP,GAAQ,CACZ/P,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBwZ,OAClC5M,kBAAiB,IAAM/2D,GAAOpa,KAAK89E,MAAM1jE,KACzCu0D,WAMCqP,GAAO,CACXjQ,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB0Z,MAClC9M,kBAAiB,IAAM/2D,GAAOpa,KAAKg+E,KAAK5jE,KACxCu0D,WAMCuP,GAAQ,CACZnQ,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB4Z,OAClChN,kBAAiB,IAAM/2D,GAAOpa,KAAKk+E,MAAM9jE,KACzCu0D,WAMCyP,GAAO,CACXrQ,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB8Z,MAClCl3E,IAAI,IAAI,IAAM,KAAM,EAAA88D,EAAAsN,QAAOvxE,KAAKs+E,YAChC3P,WAWC51B,GAAM,CACVg1B,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBga,KAAKp3E,IAAI,IAAK67D,GAA0C,IAC3F,IAAIe,EAAEuO,iBAAgB,EAAAhL,EAAAkX,0BACpB,CAAEnM,KAAMrP,EAAcjqB,IAAK0lC,SAAUzb,EAAc2E,qBACjDgH,WAMF+P,GAAO,CACX3Q,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBoa,MAClCzN,aACC,IAAMmB,IAAQ,EAAApO,EAAAU,SAAQ0N,EAAK5G,WAAWiT,QAEvCv3E,IAAI,CAAE27D,EAAAgJ,QAAQkB,WAAY,IAAM,EAAGqF,MAA6B,EAAApO,EAAAU,SAAQ0N,EAAK5G,WAAWiT,QACxF/P,WAMCiQ,GAAQ,CACZ7Q,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBsa,OAClC3N,aACC,IAAMmB,IAAQ,EAAApO,EAAAU,SAAQ0N,EAAK5G,WAAWmT,SAEvCz3E,IAAI,CAAE27D,EAAAgJ,QAAQkB,WAAY,IAAM,EAAGqF,MAA6B,EAAApO,EAAAU,SAAQ0N,EAAK5G,WAAWmT,SACxFjQ,WAMCmQ,GAAM,CACV/Q,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBwa,KAClC7N,aACC,IAAMmB,IAAQ,EAAApO,EAAAU,SAAQ0N,EAAK5G,WAAWqT,OAEvC33E,IAAI,CAAE27D,EAAAgJ,QAAQkB,WAAY,IAAM,EAAGqF,MAA6B,EAAApO,EAAAU,SAAQ0N,EAAK5G,WAAWqT,OACxFnQ,WAMC2E,GAAQ,CACZvF,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBya,OAClC9N,aACC,IAAMmB,IAAQ,EAAApO,EAAAU,SAAQ0N,EAAK5G,WAAW6H,SAEvCnsE,IAAI,CAAE27D,EAAAgJ,QAAQgB,WAAY,IAAM,EAAG7zB,MAA6B,EAAAgrB,EAAAU,SAAQ1rB,EAAKwyB,WAAW6H,SACxF3E,WAMC4E,GAAU,CACdxF,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB0a,SAClC/N,aAAY,IAAMmB,IAAQ,EAAApO,EAAAU,SAAQ0N,EAAK5G,WAAW8H,WAClDpsE,IAAI,CAAE27D,EAAAgJ,QAAQgB,WAAY,IAAM,EAAG7zB,MAA6B,EAAAgrB,EAAAU,SAAQ1rB,EAAKwyB,WAAW8H,WACxF5E,WAMC6E,GAAU,CACdzF,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB2a,SAClChO,aAAY,IAAMmB,IAAQ,EAAApO,EAAAoN,SAAQgB,EAAK5G,WAAW+H,WAClDrsE,IAAI,CAAE27D,EAAAgJ,QAAQgB,WAAY,IAAM,EAAG7zB,MAA6B,EAAAgrB,EAAAU,SAAQ1rB,EAAKwyB,WAAW+H,WACxF7E,WAMCwQ,GAAW,CACfpR,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB6a,UAClClO,aACC,IAAOmB,IACL,MAAMgN,EAAoD,CACxD/L,MAAOjB,EAAK5G,WAAW6T,UACvB/L,QAASlB,EAAK5G,WAAW8T,aAE3B,QAAuB/jF,IAAnB6jF,EAAS/L,YAA4C93E,IAArB6jF,EAAS9L,QAC3C,MAAM,IAAI/K,EAAIgX,oBAAoBnN,EAAK3yE,OAEzC,OAAO,IAAIqkE,EAAEoQ,uBAAuBkL,EAAS,IAGhDthF,KAAK,CAAEmxE,KAAM,CAAEpM,EAAAgJ,QAAQc,eAAiBuC,GAAI,CAAErM,EAAAgJ,QAAQkB,YACtDjvE,KAAK,CAAEmxE,KAAM,CAAEpM,EAAAgJ,QAAQc,eAAiBuC,GAAI,CAAErM,EAAAgJ,QAAQgB,YACtD6B,WAMC8Q,GAAK,CACT1R,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBmb,IAClCxO,aACC,IAAMmB,IAAQ,EAAApO,EAAAxoE,SAAO,EAAA6rE,EAAAqY,oBAAmBtN,EAAK3yE,UAE9C3B,KAAK,CAAEmxE,KAAM,CAAEpM,EAAAgJ,QAAQc,eAAiBuC,GAAI,CAAErM,EAAAgJ,QAAQkB,YACtDjvE,KAAK,CAAEmxE,KAAM,CAAEpM,EAAAgJ,QAAQc,eAAiBuC,GAAI,CAAErM,EAAAgJ,QAAQgB,YACtD6B,WAWCiR,GAAM,CACV7R,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBqb,KAClChP,gBAAe,IAAMlxE,IAAO,EAAAukE,EAAAxoE,SAAO,EAAA87E,EAAA95D,MAAI/d,MACvCivE,WAMCkR,GAAO,CACX9R,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBsb,MAClCjP,gBAAe,IAAMlxE,IAAO,EAAAukE,EAAAxoE,SAAO,EAAA62B,EAAAM,QAAOC,OAAOnzB,GAAKqzB,OAAO,UAC7D47C,WAMCmR,GAAS,CACb/R,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBub,QAClClP,gBAAe,IAAMlxE,IAAO,EAAAukE,EAAAxoE,SAAO,EAAA62B,EAAAytD,UAASltD,OAAOnzB,GAAKqzB,OAAO,UAC/D47C,WAMCqR,GAAS,CACbjS,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgByb,QAClCpP,gBAAe,IAAMlxE,IAAO,EAAAukE,EAAAxoE,SAAO,EAAA62B,EAAA2tD,UAASptD,OAAOnzB,GAAKqzB,OAAO,UAC/D47C,WAMCuR,GAAS,CACbnS,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB2b,QAClCtP,gBAAe,IAAMlxE,IAAO,EAAAukE,EAAAxoE,SAAO,EAAA62B,EAAA6tD,UAASttD,OAAOnzB,GAAKqzB,OAAO,UAC/D47C,WAWCyR,GAAS,CACbrS,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgB8b,QAClClQ,SACClsD,GAAW,IAAInkB,IAAS,IAAIikE,EAAEuc,KAC5B56D,EAAGqK,KAAKjwB,EAAK,GAAG8kE,QAAS9kE,EAAK,GAAG8kE,QAAS9kE,EAAK,GAAG8kE,SAClD3gD,EAAQm/C,qBAGXuL,WAMCvoD,GAAU,CACd2nD,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBgc,SAClChQ,SAAQ,IAAMxgD,GAAQA,EAAK3J,UAC3BuoD,WAMC1oD,GAAY,CAChB8nD,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBic,WAClCjQ,SAAQ,IAAMxgD,GAAQA,EAAK9J,YAC3B0oD,WAMCtoD,GAAS,CACb0nD,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBhqE,QAClCg2E,SAAQ,IAAMxgD,GAAQA,EAAK1J,SAC3BsoD,WAMC8R,GAAW,CACf1S,MAAO,EACPC,WAAW,EAAA/J,EAAAyO,SAAQr6E,EAAEksE,gBAAgBmc,WAClCxQ,SAAQ,IAAMxgD,IAAQ,EAAAu0C,EAAA0N,MAAuB,SAAlBjiD,EAAK7G,YAChC8lD,WAWQpvE,EAAAA,YAAgE,CAK3E,IAAKy4D,EACL2oB,MAAO7I,EACP8I,OAAQ5I,EACR,IAAKE,EACL,IAAKK,EACL,IAAKG,EACL,IAAKM,EACL,IAAKO,EACL,KAAMgB,EACN,IAAKE,EACL,IAAKI,EACL,KAAME,EACN,KAAME,EAMN4F,MAAO1F,EACP2F,MAAO3F,EACP4F,QAAS1F,EACT2F,UAAWzF,EACX0F,UAAWxF,EACX/7E,IAAKwrE,EACLiH,OACAh1C,WACAoD,IAAKu7C,EACL55E,IAAK45E,EAELoF,MAAOnF,EACPoF,QAASnF,EACTxE,KAAMyE,EACNmF,QAASjF,EAMTkF,OAAQjF,EACRkF,OAAQjF,EACRkF,MAAO/E,EACPgF,MAAO/E,EACPgF,UAAW/E,EACXgF,QAAS5E,EACT9vB,SAAU+vB,EACV4E,UAAW3E,GACX4E,SAAU3E,GACV4E,eAAgB3E,GAEhBE,eACA0E,MAAOtE,GACPj0E,QAASm0E,GAMTE,OACAE,SACAE,QACAE,SACAE,QAMArlC,OACA2lC,QACAE,SACAE,OACAxL,SACAC,WACAC,WACA2L,YACAM,MAMAsC,IAAKnC,GACLhtD,KAAMitD,GACNE,OAAQD,GACRG,OAAQD,GACRG,OAAQD,GAMRE,UACAh6D,WACAH,aACAI,UACAo6D,wHC1nCF,MAAAjJ,EAAAj5D,EAAA,OACAwlD,EAAAxlD,EAAA,OACAlmB,EAAAkmB,EAAA,OACAiqD,EAAAjqD,EAAA,OACA0lD,EAAA1lD,EAAA,OAEAq5D,EAAAr5D,EAAA,OAeMyjE,EAA4B,CAChCjU,MAAO,EACP5lD,WAAgB4hD,OAAC,KAAEjqE,EAAI,QAAEkR,KAChBixE,EAAO,CAAEniF,OAAMkR,YAExB85D,mBAAkBA,EAAC,KAAEhrE,EAAI,QAAEkR,KAClBixE,EAAO,CAAEniF,OAAMkR,aAI1B,SAASixE,GAAO,KAAEniF,EAAI,QAAEkR,IACtB,MAAMsV,EAAkCxmB,EAAK,GAC7C,GAAIwmB,EAAS0R,iBAAmB+rC,EAAE6E,eAAeG,SAC/C,MAAM,IAAIP,EAAIyC,qBAAqBnrE,EAAMzH,EAAE6wE,gBAAgBgZ,OAE7D,MAAMnkC,EAAM/sC,EAAQxI,KAAI,EAAAy7D,EAAAyG,iBAAgBpkD,IACxC,OAAO,EAAA29C,EAAA0N,MAAK5zB,EACd,CAQA,MAAMokC,EAA+B,CACnCpU,MAAO,EACP,gBAAMhE,EAAW,KAAEjqE,EAAI,QAAEkR,EAAO,SAAE0zB,IAChC,MAAM09C,QAAiB19C,EAAS5kC,EAAK,GAAIkR,GAEzC,OACE0zB,EAFU09C,EAASha,YAEVtoE,EAAK,GACLA,EAAK,GADIkR,EAEtB,EACA85D,kBAAAA,EAAmB,KAAEhrE,EAAI,QAAEkR,EAAO,SAAE0zB,IAClC,MAAM09C,EAAW19C,EAAS5kC,EAAK,GAAIkR,GAEnC,OACE0zB,EAFU09C,EAASha,YAEVtoE,EAAK,GACLA,EAAK,GADIkR,EAEtB,GASIqxE,EAA+B,CACnCtU,MAAO5uE,OAAO+pC,kBACd,gBAAM6gC,EAAW,KAAEjqE,EAAI,QAAEkR,EAAO,SAAE0zB,IAChC,MAAM49C,EAAkB,GACxB,IAAK,MAAMn5C,KAAQrpC,EACjB,IACE,aAAa4kC,EAASyE,EAAMn4B,EAC9B,CAAE,MAAOxS,GACP8jF,EAAO1jF,KAAaJ,EACtB,CAEF,MAAM,IAAIgqE,EAAI+Z,cAAcD,EAC9B,EACAxX,kBAAAA,EAAmB,KAAEhrE,EAAI,QAAEkR,EAAO,SAAE0zB,IAClC,MAAM49C,EAAkB,GACxB,IAAK,MAAMn5C,KAAQrpC,EACjB,IACE,OAAO4kC,EAASyE,EAAMn4B,EACxB,CAAE,MAAOxS,GACP8jF,EAAO1jF,KAAaJ,EACtB,CAEF,MAAM,IAAIgqE,EAAI+Z,cAAcD,EAC9B,GASIE,EAAgC,CACpCzU,MAAO,EACP,gBAAMhE,EAAW,KAAEjqE,EAAI,QAAEkR,EAAO,SAAE0zB,IAChC,MAAQ+9C,EAAUC,GAAc5iF,EAChC,IAGE,UAFuB4kC,EAAS+9C,EAAUzxE,IACpBo3D,YAEpB,OAAO,EAAAnE,EAAA0N,OAAK,GAEd,MACMl1D,SADkBioB,EAASg+C,EAAW1xE,IACpBo3D,YACxB,OAAO,EAAAnE,EAAA0N,MAAKl1D,EACd,CAAE,MAAOje,GAGP,WAF6BkmC,EAASg+C,EAAW1xE,IACfo3D,YAEhC,MAAM5pE,EAER,OAAO,EAAAylE,EAAA0N,OAAK,EACd,CACF,EACA7G,kBAAAA,EAAmB,KAAEhrE,EAAI,QAAEkR,EAAO,SAAE0zB,IAClC,MAAQ+9C,EAAUC,GAAc5iF,EAChC,IAGE,GAFiB4kC,EAAS+9C,EAAUzxE,GACdo3D,YAEpB,OAAO,EAAAnE,EAAA0N,OAAK,GAEd,MACMl1D,EADYioB,EAASg+C,EAAW1xE,GACdo3D,YACxB,OAAO,EAAAnE,EAAA0N,MAAKl1D,EACd,CAAE,MAAOje,GAGP,IAFuBkmC,EAASg+C,EAAW1xE,GACTo3D,YAEhC,MAAM5pE,EAER,OAAO,EAAAylE,EAAA0N,OAAK,EACd,CACF,GASIgR,EAAiC,CACrC5U,MAAO,EACP,gBAAMhE,EAAW,KAAEjqE,EAAI,QAAEkR,EAAO,SAAE0zB,IAChC,MAAQ+9C,EAAUC,GAAc5iF,EAChC,IAGE,WAFuB4kC,EAAS+9C,EAAUzxE,IACpBo3D,YAEpB,OAAO,EAAAnE,EAAA0N,OAAK,GAEd,MACMl1D,SADkBioB,EAASg+C,EAAW1xE,IACpBo3D,YACxB,OAAO,EAAAnE,EAAA0N,MAAKl1D,EACd,CAAE,MAAOje,GAGP,UAF6BkmC,EAASg+C,EAAW1xE,IACfo3D,YAEhC,MAAM5pE,EAER,OAAO,EAAAylE,EAAA0N,OAAK,EACd,CACF,EACA7G,kBAAAA,EAAmB,KAAEhrE,EAAI,QAAEkR,EAAO,SAAE0zB,IAClC,MAAQ+9C,EAAUC,GAAc5iF,EAChC,IAGE,IAFiB4kC,EAAS+9C,EAAUzxE,GACdo3D,YAEpB,OAAO,EAAAnE,EAAA0N,OAAK,GAEd,MACMl1D,EADYioB,EAASg+C,EAAW1xE,GACdo3D,YACxB,OAAO,EAAAnE,EAAA0N,MAAKl1D,EACd,CAAE,MAAOje,GAGP,GAFuBkmC,EAASg+C,EAAW1xE,GACTo3D,YAEhC,MAAM5pE,EAER,OAAO,EAAAylE,EAAA0N,OAAK,EACd,CACF,GASIiR,EAA+B,CACnC7U,MAAO,EACP,gBAAMhE,EAAW,KAAEjqE,EAAI,QAAEkR,EAAO,SAAE0zB,IAChC,MAAQ+9C,EAAUC,GAAc5iF,EAAKU,KAAI05B,GAAOwK,EAASxK,EAAKlpB,MACtDkL,EAAMO,SAAgBvb,QAAQ4rB,IAAI,CAAE21D,EAAUC,IACtD,OAAO,EAAAze,EAAA0N,MAAKz1D,EAAK0oD,QAAQ7oC,OAAOtf,EAAMmoD,SACxC,EACAkG,kBAAAA,EAAmB,KAAEhrE,EAAI,QAAEkR,EAAO,SAAE0zB,IAClC,MAAQxoB,EAAMO,GAAU3c,EAAKU,KAAI05B,GAAOwK,EAASxK,EAAKlpB,KACtD,OAAO,EAAAizD,EAAA0N,MAAKz1D,EAAK0oD,QAAQ7oC,OAAOtf,EAAMmoD,SACxC,GASIie,EAA+B,CACnC9U,MAAO5uE,OAAO+pC,kBACdilC,WAAWruE,GACFA,EAAKlD,OAAS,EAEvB,gBAAMmtE,CAAW9lD,GACf,MAAM,KAAEnkB,EAAI,QAAEkR,EAAO,SAAE0zB,GAAazgB,GAC5Bw+D,KAAat3B,GAAcrrD,EAEnC,OAAOgjF,QADYp+C,EAAS+9C,EAAUzxE,GACR,IAAKiT,EAASnkB,KAAMqrD,GAAa,GACjE,EACA2f,kBAAAA,CAAmB7mD,GACjB,MAAM,KAAEnkB,EAAI,QAAEkR,EAAO,SAAE0zB,GAAazgB,GAC5Bw+D,KAAat3B,GAAcrrD,EAEnC,OAAOijF,EADMr+C,EAAS+9C,EAAUzxE,GACH,IAAKiT,EAASnkB,KAAMqrD,GAAa,GAChE,GAGFhjC,eAAe26D,EACbE,EACA/+D,EACA0D,GAEA,MAAM,KAAE7nB,EAAI,QAAEkR,EAAO,SAAE0zB,GAAazgB,EACpC,GAAoB,IAAhBnkB,EAAKlD,OAEP,OADiB+qB,EAAQ+V,OAAMqgB,IAAQA,KACrB,EAAAkmB,EAAA0N,OAAK,GAASzwE,QAAQE,OAAO,IAAIonE,EAAIya,QAAQt7D,IAGjE,IACE,MAAMu7D,EAAiBpjF,EAAK8F,QAEtBrE,QAAamjC,EAASw+C,EAAiBlyE,GAE7C,OADgB4mE,EAAAtT,iBAAiBjsE,EAAEksE,gBAAgBp2D,OACnBvM,MAAM,CAAEohF,EAAQzhF,GAAQ0iB,GAAUwnD,YACzD,EAAAxH,EAAA0N,OAAK,GAEPmR,EAAiBE,EAAQ/+D,EAAS,IAAK0D,GAAS,GACzD,CAAE,MAAOnpB,GACP,OAAOskF,EAAiBE,EAAQ/+D,EAAS,IAAK0D,EAAiBnpB,GACjE,CACF,CAEA,SAASukF,EACPC,EACA/+D,EACA0D,GAEA,MAAM,KAAE7nB,EAAI,QAAEkR,EAAO,SAAE0zB,GAAazgB,EACpC,GAAoB,IAAhBnkB,EAAKlD,OAAc,CAErB,GADiB+qB,EAAQ+V,OAAMqgB,IAAQA,IAErC,OAAO,EAAAkmB,EAAA0N,OAAK,GAEd,MAAM,IAAInJ,EAAIya,QAAQt7D,EACxB,CAEA,IACE,MAEMpmB,EAAOmjC,EAFU5kC,EAAK8F,QAEWoL,GAEvC,OADgB4mE,EAAAtT,iBAAiBjsE,EAAEksE,gBAAgBp2D,OACnBvM,MAAM,CAAEohF,EAAQzhF,GAAQ0iB,GAAUwnD,YACzD,EAAAxH,EAAA0N,OAAK,GAEPoR,EAAgBC,EAAQ/+D,EAAS,IAAK0D,GAAS,GACxD,CAAE,MAAOnpB,GACP,OAAOukF,EAAgBC,EAAQ/+D,EAAS,IAAK0D,EAAiBnpB,GAChE,CACF,CAQA,MAAM2kF,EAAkC,CACtCpV,MAAO5uE,OAAO+pC,kBACdilC,WAAWruE,GACFA,EAAKlD,OAAS,EAEvB,gBAAMmtE,CAAW9lD,GACf,MAAMm/D,EAAMxL,EAAAyL,iBAAiBhrF,EAAE6wE,gBAAgBoa,IACzCC,QAAaH,EAAIrZ,WAAW9lD,GAClC,OAAO,EAAAggD,EAAA0N,OAA0B4R,EAAM9X,WACzC,EACAX,kBAAAA,CAAmB7mD,GACjB,MACMs/D,EADM3L,EAAAyL,iBAAiBhrF,EAAE6wE,gBAAgBoa,IAC9BxY,mBAAmB7mD,GACpC,OAAO,EAAAggD,EAAA0N,OAA0B4R,EAAM9X,WACzC,GAYI+X,GAA2B,EAAAvf,EAAAyO,SAAQr6E,EAAE6wE,gBAAgBua,QAAQ3S,aAAY,IAAM3nC,GAAQA,IAC1FwlC,UAKGpsC,EAA6B,CACjCwrC,MAAO5uE,OAAO+pC,kBACd,gBAAM6gC,CAAW9lD,GACf,MAAM,KAAEnkB,EAAI,QAAEkR,EAAO,SAAE0zB,EAAQ,uBAAE7S,EAAsB,kBAAEuxC,GAAsBn/C,EACzEy/D,EAAsC5jF,EACzCU,KAAI2nB,SAAcuc,EAASyE,EAAMn4B,KACjCxQ,KAAI2nB,UACH,MAAMnC,EAAYw9D,EAAWvV,OAAO,OAAQ0V,GAASvgB,EAAmBvxC,GACxE,IAAK7L,EACH,MAAM,IAAIwiD,EAAIyC,qBAAqBnrE,EAAMzH,EAAE6wE,gBAAgBua,QAE7D,OAA2Bz9D,EAAU/B,EAAV+B,CAAmB,OAAQ29D,GAAQ,IAE5DC,QAAa1iF,QAAQ4rB,IAAI42D,GAEzB/jD,EADUikD,EAAKpjF,KAAIitE,GAAOA,EAAIhC,aACb/qE,KAAK,IACtByxE,EAAO0R,EAAaD,GAAQA,EAAK,GAAG5xD,cAAWx2B,EACrD,OAAO22E,GAAO,EAAAlO,EAAAkB,YAAWxlC,EAAQwyC,IAAQ,EAAAlO,EAAAxoE,QAAOkkC,EAClD,EAEAmrC,kBAAAA,CAAmB7mD,GACjB,MAAM,KAAEnkB,EAAI,QAAEkR,EAAO,SAAE0zB,EAAQ,kBAAE0+B,EAAiB,uBAAEvxC,GAA2B5N,EACzE2/D,EAAO9jF,EACVU,KAAI2oC,GAAQzE,EAASyE,EAAMn4B,KAC3BxQ,KAAKmjF,IACJ,MAAM39D,EAAYw9D,EAAWvV,OAAO,CAAE0V,GAASvgB,EAAmBvxC,GAClE,IAAK7L,EACH,MAAM,IAAIwiD,EAAIyC,qBAAqBnrE,EAAMzH,EAAE6wE,gBAAgBua,QAE7D,OAA2Bz9D,EAAU/B,EAAV+B,CAAmB,CAAE29D,GAAQ,IAGtDhkD,EADUikD,EAAKpjF,KAAIitE,GAAOA,EAAIhC,aACb/qE,KAAK,IACtByxE,EAAO0R,EAAaD,GAAQA,EAAK,GAAG5xD,cAAWx2B,EACrD,OAAO22E,GAAO,EAAAlO,EAAAkB,YAAWxlC,EAAQwyC,IAAQ,EAAAlO,EAAAxoE,QAAOkkC,EAClD,GAGF,SAASkkD,EAAaD,GACpB,OAAOA,EAAKhnF,OAAS,GAAKgnF,EAAKlmD,OAAM+vC,GAAOA,EAAIz7C,WAAa4xD,EAAK,GAAG5xD,UACvE,CAWA,MAAM8xD,GAAY,EAAA7f,EAAAyO,SAAQr6E,EAAE6wE,gBAAgB6a,OAAOpT,WAAU,IAAMz2C,GAAOA,IAAKy0C,UAMzEoV,EAA4B,CAChChW,MAAO5uE,OAAO+pC,kBACdilC,WAAWruE,GACc,IAAhBA,EAAKlD,QAAgC,IAAhBkD,EAAKlD,OAEnC,gBAAMmtE,CAAW9lD,GACf,MAAM,KAAEnkB,EAAI,QAAEkR,EAAO,SAAE0zB,EAAQ,kBAAE0+B,EAAiB,uBAAEvxC,GAA2B5N,EACzEnb,EAAwB,IAAhBhJ,EAAKlD,aACX8nC,EAAS5kC,EAAK,GAAIkR,QACxBxV,EAEF,IAAIwoF,EACJ,GAAIl7E,EAAO,CACT,MAAMkd,EAAY89D,EAAU7V,OAAO,CAAEnlE,GAASs6D,EAAmBvxC,GACjE,IAAK7L,EACH,MAAM,IAAIwiD,EAAIyC,qBAAqBnrE,EAAMzH,EAAE6wE,gBAAgB6a,OAE7DC,EAAWh+D,EAAU/B,EAAV+B,CAAmB,CAAEld,IAASpJ,KAC3C,CAEA,GAAIukB,EAAQ4zC,MAAO,CACjB,MAAMA,QAAc5zC,EAAQ4zC,MAAMmsB,GAClC,OAAO,IAAIjgB,EAAEkgB,UAAUpsB,EACzB,CAEA,OAAOqsB,EAAOF,EAChB,EACAlZ,kBAAAA,CAAmB7mD,GACjB,MAAM,KAAEnkB,EAAI,QAAEkR,EAAO,SAAE0zB,EAAQ,kBAAE0+B,EAAiB,uBAAEvxC,GAA2B5N,EACzEnb,EAAwB,IAAhBhJ,EAAKlD,OACjB8nC,EAAS5kC,EAAK,GAAIkR,QAClBxV,EAEF,IAAIwoF,EACJ,GAAIl7E,EAAO,CACT,MAAMkd,EAAY89D,EAAU7V,OAAO,CAAEnlE,GAASs6D,EAAmBvxC,GACjE,IAAK7L,EACH,MAAM,IAAIwiD,EAAIyC,qBAAqBnrE,EAAMzH,EAAE6wE,gBAAgB6a,OAE7DC,EAAWh+D,EAAU/B,EAAV+B,CAAmB,CAAEld,IAASpJ,KAC3C,CAEA,GAAIukB,EAAQ4zC,MAAO,CACjB,MAAMA,EAAQ5zC,EAAQ4zC,MAAMmsB,GAC5B,OAAO,IAAIjgB,EAAEkgB,UAAUpsB,EACzB,CAEA,OAAOqsB,EAAOF,EAChB,GAGF,SAASE,EAAOp7E,GACd,OAAO,IAAIi7D,EAAEkgB,UAAUn7E,GAAS0uE,EAAK0E,KACvC,CAaa38E,EAAAA,mBAAoE,CAK/EyiF,QACAmC,GAAIhC,EACJE,WACA,KAAMM,EACN,KAAMH,EACN4B,SAAUxB,EACVyB,GAAIxB,EACJyB,MAAOnB,EAGP5gD,SAGAs1B,MAAOksB,+BCjaT,SAASQ,EAAY9vE,GACnB,MAAe,MAARA,CACT,CAEA,SAAS+vE,EAActoE,EAAcO,GAEnC,OADqB,IAAIgoE,OAAO,IAAIvoE,KAAS,MACzB5W,KAAK,IAAImX,KAC/B,2FA7DAld,EAAAA,QAAA,SAAwBN,EAAc8rB,EAAiB0yD,GAIrD,OADY,IAAIgH,OAAO15D,EAAS0yD,GACrBn4E,KAAKrG,EAClB,EAIAM,EAAAA,QAAA,SAAwB26B,EAAanP,EAAiB4yD,EAAqBF,GACzE,IAAIiH,EAAM,IAAID,OAAO15D,EAAS0yD,GAK9B,OAJKiH,EAAIpgF,SAEPogF,EAAM,IAAID,OAAO15D,EAAS,GADX0yD,GAAS,QAGnBvjD,EAAI3wB,QAAQm7E,EAAK/G,EAC1B,EAMAp+E,EAAAA,YAAA,SAA4BkV,EAAa6oE,GACvC,MAAMqH,EAAWlwE,EAAIpU,MAAM,KACrBukF,EAAYtH,EAAMj9E,MAAM,KAE9B,IAAKmkF,EAAcI,EAAU,GAAID,EAAS,MACvCJ,EAAYI,EAAS,IACtB,OAAO,EAGT,IAAIE,EAAK,EACLC,EAAK,EACT,KAAOA,EAAKF,EAAUhoF,QACpB,GAAI2nF,EAAYK,EAAUE,IACxBA,QADF,CAIA,GAAID,IAAOF,EAAS/nF,OAClB,OAAO,EAET,GAAI4nF,EAAcI,EAAUE,GAAKH,EAASE,IACxCA,IACAC,QAFF,CAKA,GAA4B,IAAxBH,EAASE,GAAIjoF,OACf,OAAO,EAETioF,GAJA,CARA,CAcF,OAAO,CACT,wlBpMpDA,MAAAnN,EAAAn5D,EAAA,OAKAwmE,EAAAxmE,EAAA,OACAymE,EAAAzmE,EAAA,OACA0mE,EAAA1mE,EAAA,OAEA1a,EAAA0a,EAAA,OAAAhf,GAGaA,EAAAA,iBAA4D9C,OAAOq2B,YAC9Er2B,OAAOkM,QAAQq8E,EAAAE,aAAa1kF,KAAI,EAAG1E,EAAKiiD,KACtC,CAAEjiD,EAAK,IAAI47E,EAAAgC,gBAAmC59E,EAAKiiD,OAI1Cx+C,EAAAA,iBAAqE9C,OAAOq2B,YACvFr2B,OAAOkM,QAAQs8E,EAAAE,oBAAoB3kF,KAAI,EAAG1E,EAAKiiD,KAAU,CAAEjiD,EAAK,IAAI47E,EAAA0N,gBAAmCtpF,EAAKiiD,OAIjGx+C,EAAAA,eAAsD9C,OAAOq2B,YACxEr2B,OAAOkM,QAAQo8E,EAAAM,kBAAkB7kF,KAAI,EAAG1E,EAAKiiD,KAC3C,CAAEjiD,EAAK,IAAI47E,EAAA4N,cAA+BxpF,EAAKiiD,OAGnD,IAAAswB,EAAA9vD,EAAA,OAAS9hB,OAAAA,eAAAA,EAAAA,eAAAA,CAAAiG,YAAA,EAAAC,IAAA,kBAAA0rE,EAAAI,YAAY,6NA9BrB,IAAArH,EAAA7oD,EAAA,OAAS9hB,OAAAA,eAAAA,EAAAA,iBAAAA,CAAAiG,YAAA,EAAAC,IAAA,kBAAAykE,EAAA/iC,cAAc,IACvB,IAAAoiC,EAAAloD,EAAA,OAAS9hB,OAAAA,eAAAA,EAAAA,gBAAAA,CAAAiG,YAAA,EAAAC,IAAA,kBAAA8jE,EAAAI,aAAa,IACtB,IAAA0e,EAAAhnE,EAAA,OAAS9hB,OAAAA,eAAAA,EAAAA,qBAAAA,CAAAiG,YAAA,EAAAC,IAAA,kBAAA4iF,EAAA7e,kBAAkB,IAE3B,IAAA8e,EAAAjnE,EAAA,OAAS9hB,OAAAA,eAAAA,EAAAA,kBAAAA,CAAAiG,YAAA,EAAAC,IAAA,kBAAA6iF,EAAA/M,eAAe,IAAEh8E,OAAAA,eAAAA,EAAAA,oBAAAA,CAAAiG,YAAA,EAAAC,IAAA,kBAAA6iF,EAAA7gD,iBAAiB,IAC3C,IAAAygC,EAAA7mD,EAAA,OAAS9hB,OAAAA,eAAAA,EAAAA,aAAAA,CAAAiG,YAAA,EAAAC,IAAA,kBAAAyiE,EAAAz7B,UAAU,IACnB,IAAA87C,EAAAlnE,EAAA,OAAS9hB,OAAAA,eAAAA,EAAAA,0BAAAA,CAAAiG,YAAA,EAAAC,IAAA,kBAAA8iF,EAAAv9C,uBAAuB,+GqMNhC,MAAA1iB,EAAAjH,EAAA,OAIAwlD,EAAAxlD,EAAA,OAEAylD,EAAAzlD,EAAA,OACAlmB,EAAAkmB,EAAA,OACAiqD,EAAAjqD,EAAA,OACAinE,EAAAjnE,EAAA,OAEAskD,EAAAtkD,EAAA,OAWA,MAAa0pD,UAA2BpF,EAAAM,gBAEtC94D,WAAAA,CAAsCq7E,GACpChrE,MAAMgrE,EAActiB,mBADgB,KAAAsiB,cAAAA,EAEpCrqF,KAAKsqF,cAAwC,CAAE59E,KAAM29E,EAAc39E,KAAM+/D,QAAS4d,EAAc5d,QAClG,CAEOI,gBAAAA,CAAiB/+B,GACtB,MAAMjf,EAAQ1E,EAAAyE,QAAIgO,gBAElB,OAAQkR,EAAKnR,gBACX,KAAK9N,EAAMiQ,KACT,OAAO9+B,KAAKuqF,cAAcz8C,GAC5B,KAAKjf,EAAMgO,SACT,OAAO78B,KAAKwqF,kBAAkB18C,GAChC,KAAKjf,EAAM8P,MACT,OAAO3+B,KAAKyqF,eAAe38C,GAC7B,KAAKjf,EAAM4P,UACT,OAAOmuC,EAAmB8d,mBAAmB58C,GAC/C,KAAKjf,EAAM0P,UACT,OAAOquC,EAAmB+d,mBAAmB78C,GAC/C,KAAKjf,EAAM2P,SACT,OAAOouC,EAAmBge,kBAAkB98C,GAElD,CAEQ,wBAAO88C,CAAkBv2D,GAC/B,OAAO,IAAIq0C,EAAE8X,UAAUnsD,EAAKw2D,SAAS3qF,MACvC,CAEQsqF,iBAAAA,CAAkB18C,GACxB,MAAMhR,EAAWgR,EAAKhR,SAASx3B,cAC/B,GAAItI,EAAE8tF,iBAAiB39E,IAAI2vB,GAAW,CACpC,MAAMiuD,EAA+BjuD,EAC/BkuD,EAAcl9C,EAAKrpC,KAAKU,KAAI05B,GAAO7+B,KAAK6sE,iBAAiBhuC,KACzDosD,EAActiB,EAAAqf,iBAAiB+C,GACrC,IAAKE,EAAYnY,WAAWkY,GAC1B,MAAM,IAAI7d,EAAI+d,aAAaF,EAAaD,GAE1C,OAAO,IAAIriB,EAAEmF,gBAAgBmd,EAAaC,EAAYvc,WAAYuc,EAAYxb,mBAChF,CACA,IAAKzyE,EAAEmuF,UAAUh+E,IAAI2vB,GACnB,MAAM,IAAIqwC,EAAIie,gBAAgBt9C,EAAKhR,UAErC,MAAMuuD,EAA+BvuD,EAC/BwuD,EAAcx9C,EAAKrpC,KAAKU,KAAI05B,GAAO7+B,KAAK6sE,iBAAiBhuC,KACzD0sD,EAAc5iB,EAAAM,iBAAiBoiB,GACrC,IAAKze,EAAmB4e,gBAAgBF,EAAaC,EAAY7Y,OAC/D,MAAM,IAAIvF,EAAI+d,aAAaI,EAAaD,GAE1C,OAAO,IAAI3iB,EAAEiF,SAAS2d,GAAa7mF,GAAQ8mF,EAAYhlF,MAAM9B,EAAMzE,KAAKqqF,gBAC1E,CAEQoB,gBAAAA,CAAiBjY,EAA6BxpE,GACpD,OAAQvF,IACN,IACE,MAAMM,EAAMyuE,EAAK/uE,EAAKU,KAAI05B,GAAOA,EAAI0qC,WACrC,OAAOvpE,KAAK+uE,uBAAuBhqE,EACrC,CAAE,MAAO5B,GACP,MAAM,IAAIgnF,EAAAuB,uBAAuB1hF,EAAM7G,EACzC,EAEJ,CAEQwoF,iBAAAA,CAAkBnY,EAA8BxpE,GACtD,OAAO8iB,UACL,IACE,MAAM/nB,QAAYyuE,EAAK/uE,EAAKU,KAAI05B,GAAOA,EAAI0qC,WAC3C,OAAOvpE,KAAK+uE,uBAAuBhqE,EACrC,CAAE,MAAO5B,GACP,MAAM,IAAIgnF,EAAAuB,uBAAuB1hF,EAAM7G,EACzC,EAEJ,CAGQsnF,cAAAA,CAAe38C,GAErB,MAAM89C,EAAW99C,EAAK9jC,KAAK9J,MACrB2rF,EAAY/9C,EAAKrpC,KAAKU,KAAI05B,GAAO7+B,KAAK6sE,iBAAiBhuC,KAC7D,GAAI7hC,EAAE8uF,eAAe3+E,IAAqBy+E,GAAW,CAEnD,MAAMj2D,EAAsBmY,EAAK9jC,KAAK9J,MAChC6rF,EAAYpjB,EAAAqjB,eAAer2D,GACjC,OAAO,IAAI+yC,EAAEqF,MAAMjgC,EAAK9jC,KAAM6hF,GAAWpnF,GAAQsnF,EAAUxlF,MAAM9B,EAAMzE,KAAKqqF,gBAC9E,CACA,GAAgC,SAA5BrqF,KAAKsqF,cAAc59E,KAAiB,CAEtC,MAAMu/E,EAAoBjsF,KAAKsqF,cAAc7d,QAAQ3+B,EAAK9jC,MAC1D,GAAIiiF,EAAmB,CACrB,MAAMC,EAAalsF,KAAKyrF,iBAAiBQ,EAAmBn+C,EAAK9jC,KAAK9J,OACtE,OAAO,IAAIwoE,EAAE6G,cAAczhC,EAAK9jC,KAAM6hF,EAAWK,EACnD,CACF,KAAO,CAEL,MAAMC,EAAqBnsF,KAAKsqF,cAAc7d,QAAQ3+B,EAAK9jC,MAC3D,GAAImiF,EAAoB,CACtB,MAAMC,EAAYpsF,KAAK2rF,kBAAkBQ,EAAoBr+C,EAAK9jC,KAAK9J,OACvE,OAAO,IAAIwoE,EAAE2F,eAAevgC,EAAK9jC,KAAM6hF,EAAWO,EACpD,CACF,CACA,MAAM,IAAIjf,EAAIkf,qBAAqBv+C,EAAK9jC,KAAK9J,MAC/C,CAEQ,sBAAOsrF,CAAgB/mF,EAAsBiuE,GAEnD,OAAI/nE,MAAMC,QAAQ8nE,GACTA,EAAM12D,SAASvX,EAAKlD,QAGtBkD,EAAKlD,SAAWmxE,CACzB,CAEO,yBAAOiY,CAAmB78C,GAC/B,MAAM9jC,EAAO8jC,EAAKiwB,WAClB,OAAO,IAAI2K,EAAEyF,UAAUnkE,EAAM8jC,EAC/B,CAEO,yBAAO48C,CAAmB58C,GAC/B,OAAO,IAAI46B,EAAEuF,UAAUngC,EACzB,EAxHF5pC,EAAAA,mBAAA0oE,0GCrBA,MAAA0f,EAAAppE,EAAA,OAEAiH,EAAAjH,EAAA,OACAwlD,EAAAxlD,EAAA,OACAukD,EAAAvkD,EAAA,OACAiqD,EAAAjqD,EAAA,OACAinE,EAAAjnE,EAAA,OACAi0D,EAAAj0D,EAAA,OAQAvd,EAAAud,EAAA,OACAwkD,EAAAxkD,EAAA,OAQAhf,EAAAA,gBAAA,MACE8K,WAAAA,CAAsC+4D,GAAA,KAAAA,kBAAAA,CAAwC,CAQvEgH,sBAAAA,CAAuB16C,GAC5B,OAAgBr0B,KAAKuqF,cAAc,CACjCl2D,OACA3nB,KAAMyd,EAAAyE,QAAQC,MAAM2Q,WACpB7C,eAAgBxS,EAAAyE,QAAQgO,gBAAgBkC,MAE5C,CAEUyrD,aAAAA,CAAcl2D,GACtB,IAAKA,EAAKA,KACR,MAAM,IAAI84C,EAAIof,kBAAkBl4D,GAGlC,OAAQA,EAAKA,KAAK7G,UAChB,IAAK,WACH,OAAO,IAAIk7C,EAAEgF,SAAS4e,EAAUt+D,aAAaqG,EAAKA,OACpD,IAAK,UACH,OAAOr0B,KAAKooE,iBAAiB/zC,EAAKA,MACpC,IAAK,YACH,OAAO,IAAIq0C,EAAE8X,UAAUnsD,EAAKA,KAAKn0B,OACnC,IAAK,YACH,OAAO,IAAIwoE,EAAEkgB,UAAUv0D,EAAKA,KAAKn0B,OACnC,IAAK,OACH,OAAO,IAAIwoE,EAAEuc,KAAK5wD,EAAKA,KAAMr0B,KAAK+nE,mBACpC,QACE,MAAM,IAAIoF,EAAIqf,gBAAgBn4D,GAEpC,CAKO+zC,gBAAAA,CAAiBgK,GAItB,IAAKA,EAAItwC,UAAY,CAAE,UAAM3hC,EAAW,IAAK6b,SAASo2D,EAAItwC,SAAS5hC,OACjE,OAAOkyE,EAAIz7C,SACT,IAAI+xC,EAAEqO,kBAAkB3E,EAAIlyE,MAAOkyE,EAAIz7C,UACvC,IAAI+xC,EAAEmO,cAAczE,EAAIlyE,OAG5B,MAAMmwE,EAAW+B,EAAItwC,SAAS5hC,MACxBusF,GAAsC,EAAA/kB,EAAAglB,kBAAiBrc,EAAUrwE,KAAK+nE,mBAG5E,IACE,GAAIN,EAAAgJ,QAAQa,cAAcmb,EACxB,OAAO,IAAI/jB,EAAEmO,cAAczE,EAAIlyE,MAAOmwE,GAExC,GAAI5I,EAAAgJ,QAAQY,mBAAmBob,EAC7B,OAAO,IAAI/jB,EAAEqO,kBAAkB3E,EAAIlyE,MAAOkyE,EAAIz7C,UAEhD,GAAI8wC,EAAAgJ,QAAQwB,2BAA2Bwa,EACrC,OAAO,IAAI/jB,EAAEwQ,0BAAyB,EAAA/B,EAAAiC,wBAAuBhH,EAAIlyE,OAAQkyE,EAAIlyE,MAAOmwE,GAEtF,GAAI5I,EAAAgJ,QAAQuB,yBAAyBya,EACnC,OAAO,IAAI/jB,EAAEoQ,wBAAuB,EAAA3B,EAAA6B,sBAAqB5G,EAAIlyE,OAAQkyE,EAAIlyE,MAAOmwE,GAElF,GAAI5I,EAAAgJ,QAAQqB,gBAAgB2a,EAC1B,OAAO,IAAI/jB,EAAEmJ,iBAAgB,EAAAsF,EAAAyB,eAAcxG,EAAIlyE,OAAQkyE,EAAIlyE,MAAOmwE,GAEpE,GAAI5I,EAAAgJ,QAAQc,iBAAiBkb,EAAe,CAC1C,MAAME,EAAgB,IAAIv2D,KAAKg8C,EAAIlyE,OACnC,OAAI4D,OAAOC,MAAM4oF,EAAQvO,WAChB,IAAI1V,EAAEwJ,uBAAkB/xE,EAAWkwE,EAAUrwE,KAAK+nE,kBAAmBqK,EAAIlyE,OAE3E,IAAIwoE,EAAEuO,iBAAgB,EAAAE,EAAAa,eAAc5F,EAAIlyE,OAAQkyE,EAAIlyE,MAAOmwE,EACpE,CACA,GAAI5I,EAAAgJ,QAAQkB,YAAY8a,EACtB,OAAO,IAAI/jB,EAAE+P,aAAY,EAAAtB,EAAAuB,WAAUtG,EAAIlyE,OAAQkyE,EAAIlyE,MAAOmwE,GAE5D,GAAI5I,EAAAgJ,QAAQgB,YAAYgb,EACtB,OAAO,IAAI/jB,EAAE4P,aAAY,EAAAnB,EAAAoB,WAAUnG,EAAIlyE,OAAQkyE,EAAIlyE,MAAOmwE,GAE5D,GAAI5I,EAAAgJ,QAAQW,eAAeqb,EACzB,MAAkB,SAAdra,EAAIlyE,OAAkC,UAAdkyE,EAAIlyE,OAAmC,MAAdkyE,EAAIlyE,OAA+B,MAAdkyE,EAAIlyE,MACrE,IAAIwoE,EAAEwJ,uBAAkB/xE,EAAWkwE,EAAUrwE,KAAK+nE,kBAAmBqK,EAAIlyE,OAE3E,IAAIwoE,EAAEmG,eAA6B,SAAduD,EAAIlyE,OAAkC,MAAdkyE,EAAIlyE,MAAekyE,EAAIlyE,OAE7E,GAAIunE,EAAAgJ,QAAQG,eAAe6b,EAAe,CACxC,MAAMxpF,EAA6B0C,EAAEgyE,gBAAgBvF,EAAIlyE,OACzD,YAAeC,IAAX8C,EACK,IAAIylE,EAAEwJ,uBAAkB/xE,EAAWkwE,EAAUrwE,KAAK+nE,kBAAmBqK,EAAIlyE,OAE9EunE,EAAAgJ,QAAQC,eAAe+b,EAClB,IAAI/jB,EAAEe,eAAexmE,EAAQotE,EAAU+B,EAAIlyE,OAG7C,IAAIwoE,EAAEgO,eAAezzE,EAAQotE,EAAU+B,EAAIlyE,MACpD,CACA,MAAM0sF,EAAUnlB,EAAAgJ,QAAQI,aAAa4b,EAC/BI,EAAWplB,EAAAgJ,QAAQK,cAAc2b,EACvC,GAAIG,GAAWC,EAAU,CACvB,MAAMC,EAAgCnnF,EAAE4xE,cAAcnF,EAAIlyE,OAC1D,YAAkBC,IAAd2sF,EACK,IAAIpkB,EAAEwJ,uBAAkB/xE,EAAWkwE,EAAUrwE,KAAK+nE,kBAAmBqK,EAAIlyE,OAE9E0sF,EACK,IAAIlkB,EAAEiO,aAAamW,EAAWzc,EAAU+B,EAAIlyE,OAE9C,IAAIwoE,EAAEkO,cAAckW,EAAWzc,EAAU+B,EAAIlyE,MACtD,CACA,OAAO,IAAIwoE,EAAEyH,QAAgBiC,EAAIlyE,MAAOmwE,EAAU+B,EAAIlyE,MACxD,CAAE,MAAOiD,GACP,GAAIA,aAAiBpB,QAAS,EAAAooF,EAAA7gD,mBAAkBnmC,GAC9C,OAAO,IAAIulE,EAAEwJ,uBAAkB/xE,EAAWkwE,EAAUrwE,KAAK+nE,kBAAmBqK,EAAIlyE,OAElF,MAAMiD,CACR,CACF,+BC/IF,IAAY+kE,EAaAuI,EAkEAvH,EAoGA2E,EAyBAkf,oNA5MZ,SAAY7kB,GAEVA,EAAA,gCAQAA,EAAA,iCACD,CAXD,CAAYA,IAAShkE,EAAAA,UAATgkE,EAAS,KAarB,SAAYuI,GACVA,EAAA,sDACAA,EAAA,qDACAA,EAAA,wEAEAA,EAAA,uDAEAA,EAAA,0DACAA,EAAA,qEACAA,EAAA,iDAEAA,EAAA,sDACAA,EAAA,4DACAA,EAAA,oDACAA,EAAA,+DACAA,EAAA,iDACAA,EAAA,kDAGAA,EAAA,uDACAA,EAAA,mDACAA,EAAA,qDAGAA,EAAA,uDAEAA,EAAA,+EACAA,EAAA,wEAEAA,EAAA,iDACAA,EAAA,+CACAA,EAAA,mDACAA,EAAA,iDAEAA,EAAA,+EACAA,EAAA,wEACAA,EAAA,kEACAA,EAAA,gEACAA,EAAA,oEACAA,EAAA,kEAGAA,EAAA,0EACAA,EAAA,mDACAA,EAAA,yDACAA,EAAA,wDAEAA,EAAA,iDACAA,EAAA,sDACAA,EAAA,qDACAA,EAAA,6CACAA,EAAA,oDAGAA,EAAA,yDACAA,EAAA,6EACAA,EAAA,wEACD,CAzDD,CAAYA,IAAOvsE,EAAAA,QAAPusE,EAAO,KAkEnB,SAAYvH,GAGVA,EAAA,QACAA,EAAA,gBACAA,EAAA,cAIAA,EAAA,UACAA,EAAA,eACAA,EAAA,OACAA,EAAA,OACAA,EAAA,SACAA,EAAA,SAEAA,EAAA,mBACAA,EAAA,aACAA,EAAA,aACAA,EAAA,gBAQAA,EAAA,eACAA,EAAA,eACAA,EAAA,mBACAA,EAAA,uBACAA,EAAA,uBACAA,EAAA,UACAA,EAAA,YACAA,EAAA,oBACAA,EAAA,UACAA,EAAA,UAEAA,EAAA,cACAA,EAAA,kBACAA,EAAA,YACAA,EAAA,kBAIAA,EAAA,gBACAA,EAAA,gBACAA,EAAA,cACAA,EAAA,cACAA,EAAA,sBACAA,EAAA,kBACAA,EAAA,oBACAA,EAAA,sBACAA,EAAA,oBACAA,EAAA,gCAEAA,EAAA,2BACAA,EAAA,cACAA,EAAA,kBAIAA,EAAA,UACAA,EAAA,cACAA,EAAA,YACAA,EAAA,cACAA,EAAA,YAIAA,EAAA,UACAA,EAAA,YACAA,EAAA,cACAA,EAAA,UACAA,EAAA,cACAA,EAAA,kBACAA,EAAA,kBACAA,EAAA,oBACAA,EAAA,QAGAA,EAAA,UACAA,EAAA,YACAA,EAAA,gBACAA,EAAA,gBACAA,EAAA,gBAQAA,EAAA,gBACAA,EAAA,kBACAA,EAAA,sBACAA,EAAA,gBACAA,EAAA,oBACD,CAlGD,CAAYA,IAAehlE,EAAAA,gBAAfglE,EAAe,KAoG3B,SAAY2E,GAGVA,EAAA,cACAA,EAAA,QACAA,EAAA,oBAEAA,EAAA,gBACAA,EAAA,iBAEAA,EAAA,qBACAA,EAAA,QACAA,EAAA,eAGAA,EAAA,gBAGAA,EAAA,aACD,CAnBD,CAAYA,IAAe3pE,EAAAA,gBAAf2pE,EAAe,KAqBd3pE,EAAAA,iBAAgC,IAAIqa,IAAInd,OAAOiM,OAAO67D,IACtDhlE,EAAAA,iBAAgC,IAAIqa,IAAInd,OAAOiM,OAAOwgE,IACtD3pE,EAAAA,UAAY,IAAIqa,IAAI,IAAKra,EAAA8oF,oBAAqB9oF,EAAA4mF,mBAE3D,SAAYiC,GACVA,EAAA,cACAA,EAAA,UACAA,EAAA,UACAA,EAAA,UACAA,EAAA,UACAA,EAAA,4BACAA,EAAA,eACD,CARD,CAAYA,IAAW7oF,EAAAA,YAAX6oF,EAAW,KASV7oF,EAAAA,aAAe,IAAIqa,IAAInd,OAAOiM,OAAO0/E,IAkBrC7oF,EAAAA,eAAiB,IAAIqa,IAAI,CACpCkyD,EAAQa,WACRb,EAAQI,UACRJ,EAAQK,WACRL,EAAQG,YACRH,EAAQC,YACRD,EAAQc,cACRd,EAAQkB,SACRlB,EAAQW,YACRX,EAAQgB,SACRhB,EAAQqB,aACRrB,EAAQuB,sBACRvB,EAAQwB,sDC7MV,SAAgB8M,EAAuCkO,GAErD,MAAO,CACLxJ,IAAKwJ,EAAIxJ,KAAO,EAChBxL,MAAOgV,EAAIhV,OAAS,EACpBC,QAAS+U,EAAI/U,SAAW,EACxBC,QAAS8U,EAAI9U,SAAW,EAE5B,CAEA,SAAgB0G,EAAyCoO,GAEvD,MAAO,CACL5J,KAAM4J,EAAI5J,MAAQ,EAClBE,MAAO0J,EAAI1J,OAAS,EAExB,CAEA,SAAgB9F,EACdwP,GAEA,MAAO,IACFlO,EAAuCkO,MACvCpO,EAAyCoO,GAEhD,CA4CA,SAAgBvP,EAAgCuP,GAC9C,MAAO,IACFA,EACHxJ,IAAKwJ,EAAIxJ,KAAO,EAChBxL,MAAOgV,EAAIhV,OAAS,EACpBsL,MAAO0J,EAAI1J,OAAS,EACpBF,KAAM4J,EAAI5J,MAAQ,EAClBlL,QAAS8U,EAAI9U,SAAW,EACxBD,QAAS+U,EAAI/U,SAAW,EAE5B,CA2BA,SAAgBgV,EAASlW,GAEvB,MAAMjyE,EAAM,IAAIqxB,KACd4gD,EAAKqM,KACLrM,EAAKuM,MAAQ,EACbvM,EAAKyM,IACLzM,EAAKiB,MACLjB,EAAKkB,QACLvzE,KAAKiqC,MAAMooC,EAAKmB,SACfnB,EAAKmB,QAAU,EAAK,KAEvB,GAAInB,EAAKqM,MAAQ,GAAKrM,EAAKqM,KAAO,IAAK,CAKrC,MAAM8J,EAAkB,KACxBpoF,EAAIqoF,YAAYroF,EAAIsoF,cAAgBF,EACtC,CACA,OAAOpoF,CACT,ucA9HAb,EAAAA,uCAAA66E,EAUA76E,EAAAA,yCAAA26E,EAQA36E,EAAAA,gCAAAu5E,EASAv5E,EAAAA,+BAAA,SAA+C+oF,GAE7C,MAAMK,EAAO7P,EAAgCwP,GACvCloF,EAAwC,CAAC,EAGzCwoF,EAAQD,EAAKjK,KAAO1+E,KAAKiqC,MAAM0+C,EAAK/J,MAAQ,IAC9CgK,IACFxoF,EAAIs+E,KAAOkK,EACXD,EAAK/J,OAAS,IAEZ+J,EAAK/J,QACPx+E,EAAIw+E,MAAQ+J,EAAK/J,OAInB,MAAMiK,EAAOF,EAAK7J,IAAM9+E,KAAKiqC,MAAM0+C,EAAKrV,MAAQ,IAC9CtzE,KAAKiqC,MAAM0+C,EAAKpV,QAAU,MAAavzE,KAAKiqC,MAAM0+C,EAAKnV,QAAU,OAC/DqV,IACFzoF,EAAI0+E,IAAM+J,EACVF,EAAKrV,OAAS,GACdqV,EAAKpV,SAAW,KAChBoV,EAAKnV,SAAW,OAElB,MAAMF,EAAQqV,EAAKrV,MAAQtzE,KAAKiqC,MAAM0+C,EAAKpV,QAAU,IACnDvzE,KAAKiqC,MAAM0+C,EAAKnV,QAAU,MACxBF,IACFlzE,EAAIkzE,MAAQA,EACZqV,EAAKpV,SAAW,GAChBoV,EAAKnV,SAAW,MAElB,MAAMD,EAAUoV,EAAKpV,QAAUvzE,KAAKiqC,MAAM0+C,EAAKnV,QAAU,IAQzD,OAPID,IACFnzE,EAAImzE,QAAUA,EACdoV,EAAKnV,SAAW,IAEdmV,EAAKnV,UACPpzE,EAAIozE,QAAUmV,EAAKnV,SAEdpzE,CACT,EAEAb,EAAAA,gCAAAw5E,EAYAx5E,EAAAA,yBAAA,UAAyC,KAAE8yE,EAAI,SAAEoM,IAE/C,MAAO,CACLC,KAAMrM,EAAKqW,cACX9J,MAAOvM,EAAKyW,WAAa,EACzBhK,IAAKzM,EAAK0W,UACVzV,MAAOjB,EAAK2W,WACZzV,QAASlB,EAAK4W,aACdzV,QAASnB,EAAK6W,aACd5J,UAAWb,EAASa,UACpBC,YAAad,EAASc,YAE1B,EAEAhgF,EAAAA,eAAA,SAA+Bq5E,GAC7B,MAAO,CACL8F,UAAmBljF,IAAbo9E,EAAI8F,UAAqBljF,GAAa,EAAIo9E,EAAI8F,KACpDE,WAAqBpjF,IAAdo9E,EAAIgG,WAAsBpjF,GAAa,EAAIo9E,EAAIgG,MACtDE,SAAiBtjF,IAAZo9E,EAAIkG,SAAoBtjF,GAAa,EAAIo9E,EAAIkG,IAClDxL,WAAqB93E,IAAdo9E,EAAItF,WAAsB93E,GAAa,EAAIo9E,EAAItF,MACtDC,aAAyB/3E,IAAhBo9E,EAAIrF,aAAwB/3E,GAAa,EAAIo9E,EAAIrF,QAC1DC,aAAyBh4E,IAAhBo9E,EAAIpF,aAAwBh4E,GAAa,EAAIo9E,EAAIpF,QAE9D,EAEAj0E,EAAAA,SAAAgpF,EAsBAhpF,EAAAA,UAAA,SAA0B8yE,EAAwC8W,GAChE,MAAMC,EAAYb,EAASxP,EAAgC1G,IAIrDgX,EAAyBD,EAAUE,oBAEnCC,EAAoBlX,EAAKiN,WAAa6J,EAAgB7J,UACtDkK,EAAuBnX,EAAKkN,aAAe4J,EAAgB5J,YACjE,OAAO,IAAI9tD,KACT23D,EAAU3P,UAAuF,IAA1E4P,EAA6C,GAApBE,EAAyBC,GAA6B,IAE1G,EAEAjqF,EAAAA,wBAAA,SAAwCq5E,GAEtC,MAAO,CACL8F,KAAM9F,EAAI8F,KACVE,MAAOhG,EAAIgG,MAEf,EAEAr/E,EAAAA,sBAAA,SAAsCq5E,GACpC,MAAO,CACLkG,IAAKlG,EAAIkG,IACTxL,MAAOsF,EAAItF,MACXC,QAASqF,EAAIrF,QACbC,QAASoF,EAAIpF,QAEjB,EAEAj0E,EAAAA,2BAAA,SAA2Cq5E,GACzC,OAAkB,GAAXA,EAAI8F,KAAY9F,EAAIgG,KAC7B,EAEAr/E,EAAAA,0BAAA,SAA0Cq5E,GACxC,OAA2D,IAApB,IAAnB,GAAVA,EAAIkG,IAAYlG,EAAItF,OAAcsF,EAAIrF,SAAgBqF,EAAIpF,OACtE,EAEAj0E,EAAAA,mBAAA,SAAmCkqF,GAGjC,MAFmB,yBAAyBC,KAAKD,GAE9B,EACrB,EAEAlqF,EAAAA,gBAAA,SAAgC8yE,GAC9B,MAAO,CACLiN,UAAWjN,EAAKiX,oBAAsB,GACtC/J,YAAalN,EAAKiX,oBAAsB,GAE5C,qkBCvMA,MAAa7Q,UAAwBr7E,OAArCmC,EAAAA,gBAAAk5E,EAQAl5E,EAAAA,kBAAA,SAAkCf,GAChC,OAAOA,aAAiBi6E,CAC1B,EAOAl5E,EAAAA,mBAAA,cAAwCk5E,EACtCpuE,WAAAA,CAA0B6vB,GACxBxf,MAAM,yBAAyBivE,EAAGzvD,OADV,KAAAA,IAAAA,CAE1B,GAMF36B,EAAAA,qBAAA,cAA0Ck5E,EACxCpuE,WAAAA,CAA0Bic,EAAyByB,GACjDrN,MAAM,qBAAqBivE,EAAGrjE,OADN,KAAAA,SAAAA,EAAyB,KAAAyB,SAAAA,CAEnD,GASFxoB,EAAAA,iBAAA,cAAsCk5E,EACpCpuE,WAAAA,CAA0B6vB,GACxBxf,MAAM,8BAA8BivE,EAAGzvD,OADf,KAAAA,IAAAA,CAE1B,GAQF36B,EAAAA,kBAAA,cAAuCk5E,EACrCpuE,WAAAA,CAA0BvK,GACxB4a,MAAM,yDADkB,KAAA5a,KAAAA,CAE1B,GAMFP,EAAAA,cAAA,cAAmCk5E,EACjCpuE,WAAAA,CAA0Bi4E,GACxB5nE,MAAM,uCADkB,KAAA4nE,OAAAA,CAE1B,GAMF/iF,EAAAA,QAAA,cAA6Bk5E,EAC3BpuE,WAAAA,CAA0Bi4E,GACxB5nE,MACE,sDAEE4nE,EAAO9hF,KAAIvD,GAAO,IAAIA,EAAIJ,iBAAgB6D,KAAK,WAJ3B,KAAA4hF,OAAAA,CAM1B,GAMF/iF,EAAAA,qBAAA,cAA0Ck5E,EACxCpuE,WAAAA,CAA0BvK,EAA6BkxB,GACrDtW,MAAM,2CAA2CivE,EAAG34D,aAAc24D,EAAG7pF,MAD7C,KAAAA,KAAAA,EAA6B,KAAAkxB,GAAAA,CAEvD,GAMFzxB,EAAAA,4BAAA,cAAiDk5E,EAC/CpuE,WAAAA,CAA0Bu/E,EAAuBjN,GAC/CjiE,MAAM,2CAA2CkvE,EAAK/gE,kBAAkB8zD,EAAK9zD,aADrD,KAAA+gE,KAAAA,EAAuB,KAAAjN,KAAAA,CAEjD,GAMFp9E,EAAAA,UAAA,cAAkCk5E,EAChCpuE,WAAAA,CAA0B6vB,EAAQ2vD,GAChCnvE,MAAM,kBAAkBivE,EAAGzvD,WAAayvD,EAAGE,OADnB,KAAA3vD,IAAAA,CAE1B,GAGF36B,EAAAA,oBAAA,cAAyCk5E,EACvCpuE,WAAAA,CAA0By/E,GACxBpvE,MAAM,oBAAoBovE,2BADF,KAAAA,WAAAA,CAE1B,GAGFvqF,EAAAA,8BAAA,cAAmDk5E,EACjDpuE,WAAAA,CAA0BsyE,EAAkCC,GAC1DliE,MAAM,gDAAgDivE,EAAGhN,YAAegN,EAAG/M,OADnD,KAAAD,KAAAA,EAAkC,KAAAC,KAAAA,CAE5D,GAGFr9E,EAAAA,oBAAA,cAAyCk5E,EACvCpuE,WAAAA,GACEqQ,MAAM,6BACR,GAGFnb,EAAAA,WAAA,cAAgCk5E,EAC9BpuE,WAAAA,CAAmB3K,EAAaqI,GAC9B2S,MAAM,mBAAmBhb,QAAUqI,KACrC,GAUF,MAAaunE,UAA2BlyE,MACtCiN,WAAAA,CAAmBD,EAAwB2/E,GACzCrvE,MAAM,qBAAqBtQ,MADc,KAAA2/E,QAAAA,CAE3C,EAHFxqF,EAAAA,gBAAA+vE,EAMA,MAAaiX,UAAqBnpF,MAChCiN,WAAAA,CAA0BvK,EAA6BkxB,GACrDtW,MAAM,gEAAgEivE,EAAG34D,QADjD,KAAAlxB,KAAAA,EAA6B,KAAAkxB,GAAAA,CAEvD,EAHFzxB,EAAAA,aAAAgnF,EAMA,MAAaqB,UAA6BxqF,MACxCiN,WAAAA,CAAmB8+B,GACjBzuB,MAAM,8BAA8BivE,EAAGxgD,MACzC,EAHF5pC,EAAAA,kBAAAqoF,EAMA,MAAahe,UAAiCxsE,MAC5CiN,WAAAA,CAA0B8+B,GACxBzuB,MAAM,kDAAkDivE,EAAGxgD,OADnC,KAAAA,KAAAA,CAE1B,EAHF5pC,EAAAA,sBAAAqqE,EAMA,MAAaie,UAAwBzqF,MACnCiN,WAAAA,CAA0BqlB,GACxBhV,MAAM,+BAA+BivE,EAAGj6D,OADhB,KAAAA,KAAAA,CAE1B,EAHFnwB,EAAAA,gBAAAsoF,EAMA,MAAapB,UAAwBrpF,MACnCiN,WAAAA,CAAmBhF,GACjBqV,MAAM,sBAAsBivE,EAAGtkF,KACjC,EAHF9F,EAAAA,gBAAAknF,EAMA,MAAaiB,UAA6BtqF,MACxCiN,WAAAA,CAAmBhF,GACjBqV,MAAM,4BAA4BivE,EAAGtkF,MACvC,EAHF9F,EAAAA,qBAAAmoF,EAMA,MAAaX,UAA+B3pF,MAC1CiN,WAAAA,CAAmBhF,EAAc2kF,GAC3BA,aAAyB5sF,MAC3Bsd,MAAM,mBAAmBrV,MAAS2kF,EAAc5/E,UAAU4/E,EAAchuF,MAAQ,KAAKguF,EAAchuF,QAAU,MAE7G0e,MAAM,mBAAmBrV,IAE7B,EAPF9F,EAAAA,uBAAAwnF,EAUA,MAAa5c,UAAqB/sE,MAChCiN,WAAAA,CAAmBhF,GACjBqV,MAAM,wBAAwBivE,EAAGtkF,4CACnC,EAHF9F,EAAAA,aAAA4qE,EAMA,MAAaF,UAAwB7sE,MACnCiN,WAAAA,GACEqQ,MAAM,gDACR,EAGF,SAASivE,EAAMtjE,GACb,OAAOhpB,KAAKC,UAAU+oB,EACxB,CARA9mB,EAAAA,gBAAA0qE,qGCnNA,MAAA99C,EAAA5N,EAAA,OAEAylD,EAAAzlD,EAAA,OACAskD,EAAAtkD,EAAA,OACAlmB,EAAAkmB,EAAA,OACAiqD,EAAAjqD,EAAA,OAgIA,SAAS0rE,EAAkBC,EAAaC,GACtC,OAAOD,IAAWC,EAAS,EAAKD,EAASC,GAAU,EAAI,CACzD,CA7HA5qF,EAAAA,WAAA,SAAgBoqC,EACdygD,EACAC,EACAC,GAAS,EACTC,EACA/iB,GAGA,GAAI4iB,IAAUC,EACZ,OAAO,EAIT,QAAc7uF,IAAV4uF,EACF,OAAQ,EAEV,QAAc5uF,IAAV6uF,EACF,OAAO,EAIT,GAAID,EAAMvhE,WAAawhE,EAAMxhE,SAC3B,OAAO2hE,EAAwBJ,EAAMvhE,UAAY2hE,EAAwBH,EAAMxhE,WAAa,EAAI,EAIlG,GAAIuhE,EAAMruD,OAAOsuD,GACf,OAAO,EAIT,GAAuB,SAAnBD,EAAMvhE,UAA0C,SAAnBwhE,EAAMxhE,SAAqB,CAC1D,MAAM4hE,EAAe9gD,EACnBygD,EAAMhkE,QACNikE,EAAMjkE,QACNkkE,EACAC,EACA/iB,GAEF,GAAqB,IAAjBijB,EACF,OAAOA,EAET,MAAMC,EAAiB/gD,EACrBygD,EAAMnkE,UACNokE,EAAMpkE,UACNqkE,EACAC,EACA/iB,GAEF,GAAuB,IAAnBkjB,EACF,OAAOA,EAET,MAAMC,EAAchhD,EAClBygD,EAAM/jE,OACNgkE,EAAMhkE,OACNikE,EACAC,EACA/iB,GAEF,OAAoB,IAAhBmjB,EACKA,EAEFhhD,EACLygD,EAAMnjE,MACNojE,EAAMpjE,MACNqjE,EACAC,EACA/iB,EAEJ,CAGA,GAAuB,YAAnB4iB,EAAMvhE,SACR,OAUJ,SACE+hE,EACAC,EACAN,EACA/iB,GAEA,MAAMsjB,EAAY9mB,EAAAM,iBAAiBjsE,EAAEksE,gBAAgBuW,IAC/CiQ,EAAU/mB,EAAAM,iBAAiBjsE,EAAEksE,gBAAgBp2D,OAC7C8V,EAAU,CACd80B,IAAK,IAAItnB,KACTI,uBAAwB,CAAC,EACzBuxC,kBAAmB,CACjBqE,WAAY8iB,GAAyB,KAAO,QAC5Cl+D,MAAOm7C,GAAa,IAAIr7C,EAAAI,SAAS,CAAEtsB,IAAK,OAE1C0nE,gBAAiB,CAAE2X,UAAW,EAAGC,YAAa,IAG1Crc,EAAkB,IAAIL,EAAAM,gBAAgBl/C,EAAQm/C,mBAC9C4nB,EAAS9nB,EAAgBO,iBAAiBmnB,GAC1CK,EAAS/nB,EAAgBO,iBAAiBonB,GAEhD,IACE,OAAwBE,EAAQnpF,MAAM,CAAEopF,EAAQC,GAAUhnE,GAAUwnD,WAC3D,EAEeqf,EAAUlpF,MAAM,CAAEopF,EAAQC,GAAUhnE,GAAUwnD,WAC7D,GAED,CACV,CAAE,MAEA,MAAMyf,EAAcjB,EAAkBe,EAAOtf,SAAUuf,EAAOvf,UAC9D,OAAoB,IAAhBwf,EACKA,EAEFjB,EAAkBe,EAAOtrF,MAAOurF,EAAOvrF,MAChD,CACF,CAhDWyrF,CAAkBf,EAAoBC,EAAOE,EAAuB/iB,GAI7E,GAAI8iB,EACF,MAAM,IAAI9hB,EAAI4iB,4BAA4BhB,EAAOC,GAEnD,OAAOJ,EAAkBG,EAAM7uF,MAAO8uF,EAAM9uF,MAC9C,EA+CA,MAAMivF,EAA0B,CAC9BzhB,SAAU,EACVkb,UAAW,EACXpI,UAAW,EACXrQ,QAAS,EACT8U,KAAM,EACN+K,aAAc,qPCrIhB,MAAA/jB,EAAA/oD,EAAA,OACAinE,EAAAjnE,EAAA,OACAk5D,EAAAl5D,EAAA,OA2DA,SAAS+sE,EAAcC,GAErB,GAAoB,KAAhBA,EACF,MAAO,CAAEjM,eAAW9jF,EAAW+jF,iBAAa/jF,GAE9C,GAAoB,MAAhB+vF,EACF,MAAO,CAAEjM,UAAW,EAAGC,YAAa,GAEtC,MACMd,EADkB8M,EAAYh1C,WAAW,2BAA4B,aAAal2C,MAAM,KAC7DG,IAAIrB,QACrC,MAAO,CACLmgF,UAAWb,EAAS,GAAKA,EAAS,GAClCc,YAAad,EAAS,GAAKA,EAAS,GAExC,CAEA,SAAgB1K,EAAUyX,GAExB,MAAMC,EAAYD,EAAQj1C,WACxB,gEACA,mBAEF,GAAIk1C,IAAcD,EAChB,MAAM,IAAIhG,EAAAkG,WAAWF,EAAS,QAEhC,MAAMG,EAAcF,EAAUprF,MAAM,KAC9BgyE,EAAOsZ,EAAY9rF,MAAM,GAAI,GAAGW,IAAIrB,QAEpCiB,EAAM,CACVs+E,KAAMrM,EAAK,GAAKA,EAAK,GACrBuM,MAAOvM,EAAK,GACZyM,IAAKzM,EAAK,MACPiZ,EAAcK,EAAY,KAE/B,KAAMvrF,EAAIw+E,OAAS,GAAKx+E,EAAIw+E,OAAS,IAASx+E,EAAI0+E,KAAO,GAAK1+E,EAAI0+E,MAAO,EAAArH,EAAAmU,sBAAqBxrF,EAAIs+E,KAAMt+E,EAAIw+E,QAC1G,MAAM,IAAI4G,EAAAkG,WAAWF,EAAS,QAEhC,OAAOprF,CACT,CAEA,SAASyrF,EAAYC,GAEnB,MAAML,EAAYK,EAAQv1C,WAAW,uDAAwD,eAC7F,GAAIk1C,IAAcK,EAChB,MAAM,IAAItG,EAAAkG,WAAWI,EAAS,QAEhC,MAAMC,EAAcN,EAAUprF,MAAM,KAC9B44C,EAAO8yC,EAAYlsF,MAAM,GAAI,GAAGW,IAAIrB,QAEpCiB,EAAM,CACVkzE,MAAOr6B,EAAK,GACZs6B,QAASt6B,EAAK,GACdu6B,QAASv6B,EAAK,MACXqyC,EAAcS,EAAY,KAG/B,GAAI3rF,EAAIozE,SAAW,IAAMpzE,EAAImzE,SAAW,IAAMnzE,EAAIkzE,MAAQ,IACzC,KAAdlzE,EAAIkzE,QAAiC,IAAhBlzE,EAAImzE,SAAiC,IAAhBnzE,EAAIozE,SAC/C,MAAM,IAAIgS,EAAAkG,WAAWI,EAAS,QAEhC,OAAO1rF,CACT,CAWA,SAAgB6zE,EAAc+X,GAE5B,MAAQC,EAAaC,GAAiBF,EAAY3rF,MAAM,KAGlD8rF,EAAkBF,EAAY11C,WAAW,iCAAkC,iBACjF,GAAI41C,IAAoBF,EACtB,MAAM,IAAIzG,EAAAkG,WAAWM,EAAa,YAGpC,MAAMI,EAAkBD,EAAgB9rF,MAAM,KAC9C,QAAqB7E,IAAjB0wF,EAA4B,CAC9B,MAAMG,EAAmBH,EAAa31C,WAAW,oCAAqC,YAEtF,GAAqB,KAAjB21C,GAAuBA,IAAiBG,EAC1C,MAAM,IAAI7G,EAAAkG,WAAWM,EAAa,YAEpCI,EAAgBxtF,QAAQytF,EAAiBhsF,MAAM,KACjD,CACA,MAAMg/E,EAAW+M,EAAgB5rF,KAAId,GAAOA,EAAIG,MAAM,GAAI,KAC1D,IAAKw/E,EAASx/E,MAAM,GAAG25B,KAAK6J,SAC1B,MAAM,IAAImiD,EAAAkG,WAAWM,EAAa,YAGpC,MAAMM,EAAgBntF,OAAOkgF,EAAS,IACtC,OAAO,EAAA/X,EAAAilB,gCAA+B,CACpC7N,KAAMW,EAAS,GAAKiN,EAAOntF,OAAOkgF,EAAS,SAAM7jF,EACjDojF,MAAOS,EAAS,GAAKiN,EAAOntF,OAAOkgF,EAAS,SAAM7jF,EAClDsjF,IAAKO,EAAS,GAAKiN,EAAOntF,OAAOkgF,EAAS,SAAM7jF,EAChD83E,MAAO+L,EAAS,GAAKiN,EAAOntF,OAAOkgF,EAAS,SAAM7jF,EAClD+3E,QAAS8L,EAAS,GAAKiN,EAAOntF,OAAOkgF,EAAS,SAAM7jF,EACpDg4E,QAAS6L,EAAS,GAAKiN,EAAOntF,OAAOkgF,EAAS,SAAM7jF,GAExD,CA1JA+D,EAAAA,cAAA,SAA8BhE,GAC5B,MAAMixF,EAAOrtF,OAAO5D,GACpB,OAAI4D,OAAOC,MAAMotF,GACD,QAAVjxF,EACK4D,OAAOkb,IAEF,QAAV9e,GAA6B,SAAVA,EACd4D,OAAO+pC,kBAEF,SAAV3tC,EACK4D,OAAOstF,uBAEhB,EAEKD,CACT,EAUAjtF,EAAAA,gBAAA,SAAgChE,GAC9B,MAAMixF,EAAOrtF,OAAO5D,GACpB,OAAO4D,OAAOC,MAAMotF,QAAQhxF,EAAYgxF,CAC1C,EAUAjtF,EAAAA,gBAAA,SAAgChE,GAC9B,MAAMixF,EAAertF,OAAOZ,SAAShD,EAAO,IAC5C,OAAO4D,OAAOC,MAAMotF,QAAQhxF,EAAYgxF,CAC1C,EAEAjtF,EAAAA,cAAA,SAA8BmtF,GAE5B,MAAQra,EAAMp5B,GAASyzC,EAAYrsF,MAAM,KACzC,MAAO,IAAK0zE,EAAU1B,MAAUwZ,EAAY5yC,GAC9C,EAkBA15C,EAAAA,UAAAw0E,EAiDAx0E,EAAAA,UAAA,SAA0BusF,GAExB,MAAM1rF,EAAMyrF,EAAYC,GAExB,OADA1rF,EAAIkzE,OAAS,GACNlzE,CACT,EAEAb,EAAAA,cAAA00E,EAmCA10E,EAAAA,uBAAA,SAAuCysF,GACrC,MAAM5rF,EAAM6zE,EAAc+X,GAC1B,GAAI,CAAE,QAAS,UAAW,UAAW,OAAQxyD,MAAK19B,GAAOunC,QAAejjC,EAAKtE,MAC3E,MAAM,IAAI0pF,EAAAkG,WAAWM,EAAa,qBAEpC,OAAO5rF,CACT,EAEAb,EAAAA,qBAAA,SAAqCysF,GACnC,MAAM5rF,EAAM6zE,EAAc+X,GAC1B,GAAI,CAAE,OAAQ,SAAUxyD,MAAK19B,GAAOunC,QAAejjC,EAAKtE,MACtD,MAAM,IAAI0pF,EAAAkG,WAAWM,EAAa,mBAEpC,OAAO5rF,CACT,8BC1LA,SAASusF,EAAcvyE,EAAawzB,EAAM,GACxC,OAAOxzB,EAAIm4B,oBAAe/2C,EAAW,CAAEoxF,qBAAsBh/C,EAAKi/C,aAAa,GACjF,CAQA,SAASC,EAAkBrN,GAEzB,YAAqBjkF,IAAjBikF,EAAGH,gBAA8C9jF,IAAnBikF,EAAGF,YAC5B,GAEY,IAAjBE,EAAGH,WAAsC,IAAnBG,EAAGF,YACpB,IAGF,GAAGE,EAAGH,WAAa,EAAI,IAAIqN,EAAclN,EAAGH,aAAeqN,EAAclN,EAAGH,cAAcqN,EAAc3sF,KAAK49E,IAAI6B,EAAGF,eAC7H,CAEA,SAAgBtS,EAAcoF,GAE5B,MAAO,GAAGsa,EAActa,EAAKqM,KAAM,MAAMiO,EAActa,EAAKuM,UAAU+N,EAActa,EAAKyM,OAAOgO,EAAkBza,IACpH,CAEA,SAAgBtF,EAAc9zB,GAE5B,MAAO,GAAG0zC,EAAc1zC,EAAKq6B,UAAUqZ,EAAc1zC,EAAKs6B,YAAYoZ,EAAc1zC,EAAKu6B,WAAWsZ,EAAkB7zC,IACxH,iIA1BA15C,EAAAA,kBAAA,SAAkC8yE,GAGhC,MAAO,GAAGpF,EAAc,CAAEyR,KAAMrM,EAAKqM,KAAME,MAAOvM,EAAKuM,MAAOE,IAAKzM,EAAKyM,SAAU/R,EAAcsF,IAClG,EAcA9yE,EAAAA,cAAA0tE,EAKA1tE,EAAAA,cAAAwtE,EAKAxtE,EAAAA,kBAAA,SAAkCq5E,EAAuCmU,EAA6B,QAEpG,IAAKtwF,OAAOiM,OAAOkwE,GAAKp/C,MAAKukB,GAAsB,KAAdA,GAAO,KAC1C,OAAOgvC,EAGT,MAKMd,EAAc,GALPxvF,OAAOiM,OAAOkwE,GAAKp/C,MAAKukB,IAAQA,GAAO,GAAK,IAAK,IAAM,MACvD66B,EAAI8F,KAAO,GAAG1+E,KAAK49E,IAAIhF,EAAI8F,SAAW,KACrC9F,EAAIgG,MAAQ,GAAG5+E,KAAK49E,IAAIhF,EAAIgG,UAAY,KAC1ChG,EAAIkG,IAAM,GAAG9+E,KAAK49E,IAAIhF,EAAIkG,QAAU,KAIhD,OAAMlG,EAAItF,OAASsF,EAAIrF,SAAWqF,EAAIpF,QAQ/B,GAAGyY,KAJGrT,EAAItF,MAAQ,GAAGtzE,KAAK49E,IAAIhF,EAAItF,UAAY,KACtCsF,EAAIrF,QAAU,GAAGvzE,KAAK49E,IAAIhF,EAAIrF,YAAc,KAC5CqF,EAAIpF,QAAU,GAAGxzE,KAAK49E,IAAIhF,EAAIpF,YAAc,KALlDyY,CAQX,yJCzDA,MAAA3kB,EAAA/oD,EAAA,OAEA,SAASyuE,EAAK9yD,EAAa+yD,EAAcC,EAAM,GAG7C,MAAM11C,EAAQtd,EAAMgzD,EACdriC,EAASoiC,EAAOC,EAChBC,EAASntF,KAAKk+E,MAAM1mC,EAAQqT,GAClC,MAAO,CAAEsiC,SAAQC,UAAWlzD,EAAMizD,EAAStiC,EAC7C,CAEA,SAAgB+gC,EAAqByB,EAAmBC,GACtD,MAAQH,OAAQI,EAAiBH,UAAWxO,GAAUoO,EAAKM,EAAY,GAAI,GACrE5O,EAAO2O,EAAYE,EAEzB,MAAI,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAKl2E,SAASunE,GAC9B,GAEL,CAAE,EAAG,EAAG,EAAG,IAAKvnE,SAASunE,GACpB,GAEK,IAAVA,IAC4B,IAA9BoO,EAAKtO,EAAM,KAAK0O,WACe,IAA9BJ,EAAKtO,EAAM,KAAK0O,WAA+C,IAA5BJ,EAAKtO,EAAM,GAAG0O,WAC3C,GAEF,EACT,CAhBA7tF,EAAAA,qBAAAqsF,EAmBArsF,EAAAA,sBAAA,SAAsC8yE,EAA+BgN,GAGnE,MAAMmO,EAAmC,IAAKnb,GAG9C,IAAIob,EAAUT,EAAK3a,EAAKuM,MAAQS,EAAST,MAAO,GAAI,GAkBpD,IAjBA4O,EAAQ5O,MAAQ6O,EAAQL,UAExBI,EAAQ9O,KAAOrM,EAAKqM,KAAOW,EAASX,KAAO+O,EAAQN,OAEnDM,EAAUT,EAAK3a,EAAKmB,QAAU6L,EAAS7L,QAAS,IAChDga,EAAQha,QAAUia,EAAQL,UAE1BK,EAAUT,EAAK3a,EAAKkB,QAAU8L,EAAS9L,QAAUka,EAAQN,OAAQ,IACjEK,EAAQja,QAAUka,EAAQL,UAE1BK,EAAUT,EAAK3a,EAAKiB,MAAQ+L,EAAS/L,MAAQma,EAAQN,OAAQ,IAC7DK,EAAQla,MAAQma,EAAQL,UAIxBI,EAAQ1O,IAAMzM,EAAKyM,IAAMO,EAASP,IAAM2O,EAAQN,SAEnC,CACX,IAAIO,EACJ,GAAIF,EAAQ1O,IAAM,EAChB0O,EAAQ1O,KAAO8M,EAAqB4B,EAAQ9O,KAAM8O,EAAQ5O,MAAQ,GAClE8O,GAAS,MACJ,MAAIF,EAAQ1O,IAAM8M,EAAqB4B,EAAQ9O,KAAM8O,EAAQ5O,QAIlE,MAHA4O,EAAQ1O,KAAO8M,EAAqB4B,EAAQ9O,KAAM8O,EAAQ5O,OAC1D8O,EAAQ,CAGV,CACAD,EAAUT,EAAKQ,EAAQ5O,MAAQ8O,EAAO,GAAI,GAC1CF,EAAQ5O,MAAQ6O,EAAQL,UACxBI,EAAQ9O,MAAQ+O,EAAQN,MAC1B,CACA,OAAOK,CACT,EAEAjuF,EAAAA,gBAAA,SACEi4C,EACAqT,EACA8c,GAEA,MAAMgmB,GAAK,EAAArmB,EAAAkS,WAAUhiC,EAAOmwB,GACtBimB,GAAK,EAAAtmB,EAAAkS,WAAU3uB,EAAQ8c,GACvBkmB,EAAOF,EAAGlU,UAAYmU,EAAGnU,UAC/B,MAAO,CACLqF,IAAK9+E,KAAKk+E,MAAM2P,EAAO,OACvBva,MAAOtzE,KAAKk+E,MAAO2P,EAAO,MAAsB,MAChDta,QAASvzE,KAAKk+E,MAAM2P,EAAO,KAAoB,KAC/Cra,QAASqa,EAAO,IAEpB,kUCzFA,MAAAzf,EAAA7vD,EAAA,OAEA0lD,EAAA1lD,EAAA,OAEAukD,EAAAvkD,EAAA,OAoFA,SAAgBs4D,EAAc9uE,EAAcylE,GAC1C,MAAMsgB,EAAStgB,EAAcnhD,MAAM1pB,IAAIoF,GACvC,GAAI+lF,EACF,OAAOA,EAET,MAAMvyF,EAAQiyE,EAAc/F,WAAW1/D,GACvC,GAAc,SAAVxM,EAAkB,CACpB,MAAM6E,EAA4B3D,OAAO2G,OAAO,MAIhD,OAHAhD,EAAI2tF,QAAU,EACd3tF,EAAI2H,GAAQ,EACZylE,EAAcnhD,MAAMllB,IAAIY,EAAM3H,GACvBA,CACT,CACA,IAAI4tF,EACJ,MAAMC,EAAavX,EAAmBn7E,GAStC,OAPEyyF,EADEC,EACa,IAAK1uF,EAAAq3E,mBAAmBqX,IAExB,IAAKpX,EAAct7E,EAAOiyE,IAE3CwgB,EAAaD,UACbC,EAAajmF,GAAQimF,EAAaD,QAClCvgB,EAAcnhD,MAAMllB,IAAIY,EAAMimF,GACvBA,CACT,CAGA,SAAgBE,IACd,IAAK,MAAQC,EAAM5yF,KAAWkB,OAAOkM,QAAQpJ,EAAA6uF,qBAAsB,CACjE,MAAMtyF,EAAyBqyF,EAC3B5uF,EAAAq3E,mBAAmB96E,IAGvBuyF,EAA6BvyF,EAAKP,EAAOgE,EAAAq3E,mBAC3C,CACF,CAGA,SAASyX,EAA6BvyF,EAAwBP,EAAqB6E,GACjF,GAAc,SAAV7E,QAA8BC,IAAVD,EAAqB,CAC3C,MAAM+yF,EAAyB7xF,OAAO2G,OAAO,MAI7C,OAHAkrF,EAAQP,QAAU,EAClBO,EAAQxyF,GAAO,OACfsE,EAAItE,GAAOwyF,EAEb,CACKluF,EAAI7E,IACP8yF,EAA6B9yF,EAAOgE,EAAA6uF,oBAAoB7yF,GAAQ6E,GAElEA,EAAItE,GAAO,IAAKsE,EAAI7E,GAAQ,CAACO,GAAMsE,EAAI7E,GAAOwyF,QAAU,EAAGA,QAAS3tF,EAAI7E,GAAOwyF,QAAU,EAC3F,CAiBA,SAAgBrX,EAAmB3uE,GACjC,GAAIA,KAAQxI,EAAAq3E,mBACV,OAA2B7uE,CAG/B,CAsCA,SAAgBggF,EAAiBwG,EAAkBnrB,GACjD,MAAMqT,EAA8CC,EAAmB6X,GACvE,OAAI9X,EAEKl3E,EAAAq3E,mBAAmBH,GAGrBI,EAAc0X,EAAUnrB,EACjC,CA/La7jE,EAAAA,oBAA+D,CAE1E,CAACujE,EAAAgJ,QAAQ0iB,qBAAsB1rB,EAAAgJ,QAAQc,cAGvC,CAAC9J,EAAAgJ,QAAQuB,uBAAwBvK,EAAAgJ,QAAQqB,aACzC,CAACrK,EAAAgJ,QAAQwB,yBAA0BxK,EAAAgJ,QAAQqB,aAG3C,CAACrK,EAAAgJ,QAAQY,iBAAkB5J,EAAAS,UAAUwN,gBACrC,CAACjO,EAAAgJ,QAAQa,YAAa7J,EAAAS,UAAUwN,gBAGhC,CAACjO,EAAAgJ,QAAQ2iB,uBAAwB3rB,EAAAgJ,QAAQa,WACzC,CAAC7J,EAAAgJ,QAAQ4iB,WAAY5rB,EAAAgJ,QAAQ2iB,sBAC7B,CAAC3rB,EAAAgJ,QAAQ6iB,cAAe7rB,EAAAgJ,QAAQ4iB,UAChC,CAAC5rB,EAAAgJ,QAAQ8iB,cAAe9rB,EAAAgJ,QAAQ4iB,UAChC,CAAC5rB,EAAAgJ,QAAQ+iB,UAAW/rB,EAAAgJ,QAAQ4iB,UAC5B,CAAC5rB,EAAAgJ,QAAQgjB,aAAchsB,EAAAgJ,QAAQ+iB,SAC/B,CAAC/rB,EAAAgJ,QAAQijB,YAAajsB,EAAAgJ,QAAQgjB,YAC9B,CAAChsB,EAAAgJ,QAAQkjB,QAASlsB,EAAAgJ,QAAQgjB,YAC1B,CAAChsB,EAAAgJ,QAAQmjB,YAAansB,EAAAgJ,QAAQgjB,YAK9B,CAAChsB,EAAAgJ,QAAQK,YAAarJ,EAAAS,UAAUC,eAChC,CAACV,EAAAgJ,QAAQI,WAAYpJ,EAAAS,UAAUC,eAC/B,CAACV,EAAAgJ,QAAQG,aAAcnJ,EAAAS,UAAUC,eAGjC,CAACV,EAAAgJ,QAAQC,aAAcjJ,EAAAgJ,QAAQG,YAE/B,CAACnJ,EAAAgJ,QAAQojB,0BAA2BpsB,EAAAgJ,QAAQC,YAC5C,CAACjJ,EAAAgJ,QAAQqjB,sBAAuBrsB,EAAAgJ,QAAQojB,yBAExC,CAACpsB,EAAAgJ,QAAQsjB,UAAWtsB,EAAAgJ,QAAQC,YAC5B,CAACjJ,EAAAgJ,QAAQujB,SAAUvsB,EAAAgJ,QAAQsjB,SAC3B,CAACtsB,EAAAgJ,QAAQwjB,WAAYxsB,EAAAgJ,QAAQujB,QAC7B,CAACvsB,EAAAgJ,QAAQyjB,UAAWzsB,EAAAgJ,QAAQwjB,UAE5B,CAACxsB,EAAAgJ,QAAQ0jB,0BAA2B1sB,EAAAgJ,QAAQC,YAC5C,CAACjJ,EAAAgJ,QAAQ2jB,sBAAuB3sB,EAAAgJ,QAAQ0jB,yBACxC,CAAC1sB,EAAAgJ,QAAQ4jB,mBAAoB5sB,EAAAgJ,QAAQ0jB,yBACrC,CAAC1sB,EAAAgJ,QAAQ6jB,kBAAmB7sB,EAAAgJ,QAAQ4jB,kBACpC,CAAC5sB,EAAAgJ,QAAQ8jB,oBAAqB9sB,EAAAgJ,QAAQ6jB,iBACtC,CAAC7sB,EAAAgJ,QAAQ+jB,mBAAoB/sB,EAAAgJ,QAAQ8jB,mBAErC,CAAC9sB,EAAAgJ,QAAQc,eAAgB,OACzB,CAAC9J,EAAAgJ,QAAQW,aAAc,OACvB,CAAC3J,EAAAgJ,QAAQkB,UAAW,OACpB,CAAClK,EAAAgJ,QAAQgkB,aAAc,OACvB,CAAChtB,EAAAgJ,QAAQikB,gBAAiB,OAC1B,CAACjtB,EAAAgJ,QAAQkkB,YAAa,OACtB,CAACltB,EAAAgJ,QAAQmkB,kBAAmB,OAC5B,CAACntB,EAAAgJ,QAAQgB,UAAW,OACpB,CAAChK,EAAAgJ,QAAQokB,WAAY,OACrB,CAACptB,EAAAgJ,QAAQqB,cAAe,OACxB,CAACrK,EAAAS,UAAUC,gBAAiB,OAC5B,CAACV,EAAAS,UAAUwN,iBAAkB,OAC7B,CAACjO,EAAAgJ,QAAQqkB,aAAc,QAMZ5wF,EAAAA,mBAAyC9C,OAAO2G,OAAO,MAOpE7D,EAAAA,cAAAs3E,EA2BAt3E,EAAAA,mBAAA2uF,EASAA,IAgBa3uF,EAAAA,eAA6C9C,OAAO2G,OAAO,MACxE,WACE,IAAK,MAAM26C,KAAOthD,OAAOiM,OAAOo6D,EAAAS,WAC9BhkE,EAAA6wF,eAAeryC,IAAO,CAE1B,CACAsyC,GAEA9wF,EAAAA,YAAA,SAA4BwI,GAC1B,GAAIA,KAAQxI,EAAA6wF,eACV,OAAmBroF,CAGvB,EAEAxI,EAAAA,mBAAAm3E,EAOAn3E,EAAAA,eAAA,SAA+BwI,GAC7B,GAAI2uE,EAAmB3uE,IAAkB,SAATA,EAC9B,OAAsBA,CAG1B,EAEAxI,EAAAA,cAAA,SAA8BwI,GAC5B,GAAa,SAATA,IAAmB,EAAAqmE,EAAAkiB,YAAWvoF,GAChC,OAA6BA,CAGjC,EAYAxI,EAAAA,kBAAA,SAAkCgvF,EAAwBxY,GACxD,MAAoB,SAAbwY,GACJhvF,EAAAq3E,mBAAmB2X,SAA4D/yF,IAA/C+D,EAAAq3E,mBAAmB2X,GAAUxY,EAClE,EASAx2E,EAAAA,iBAAAwoF,EAkBAxoF,EAAAA,YAAA,SACEgvF,EACAxY,EACA3S,GAEA,MAAiB,SAAbmrB,QAGmE/yF,IAAhEusF,EAAiBwG,EAAUnrB,GAAmB2S,EACvD,EAIax2E,EAAAA,cAGL,CACN,CAACujE,EAAAgJ,QAAQa,YAAa,CACpB,CAAE2J,cAAexT,EAAAgJ,QAAQqkB,YAAa5Z,mBAAoBr8C,IAAO,EAAA+pC,EAAAxoE,QAAOy+B,EAAIx6B,SAE9E,CAACojE,EAAAgJ,QAAQK,YAAa,CACpB,CAAEmK,cAAexT,EAAAgJ,QAAQI,UAAWqK,mBAAoBr8C,IAAO,EAAA+pC,EAAAsN,QAA0Br3C,EAAKuxC,aAE9F,CAAE6K,cAAexT,EAAAgJ,QAAQG,YAAasK,mBAAoBr8C,IAAO,EAAA+pC,EAAAsN,QAA0Br3C,EAAKuxC,cAElG,CAAC3I,EAAAgJ,QAAQI,WAAY,CAEnB,CAAEoK,cAAexT,EAAAgJ,QAAQG,YAAasK,mBAAoBr8C,IAAO,EAAA+pC,EAAAqN,OAAyBp3C,EAAKuxC,kHCrPnG,MAAA8kB,EAAAhyE,EAAA,OAKA,MAAaiyE,UAAmBD,EAAAE,OACvBjwB,KAAAA,GACL,CAGKhiE,KAAAA,GACL,CAGKoiE,KAAAA,GACL,CAGKH,IAAAA,GACL,CAGKF,KAAAA,GACL,CAGKniB,IAAAA,GACL,EAtBJ7+C,EAAAA,WAAAixF,0gB/MLA3sF,EAAA0a,EAAA,OAAAhf,sGgNCA,MAAAikB,EAAAjF,EAAA,OAMA,MAAamyE,UACHltE,EAAAmtE,SACRtmF,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEgB,aAAM+mB,CAAQjD,GAE5B,MAAMgtE,EAAmB,GACzB,IAAIC,EACJ,IACEA,EAAcx1F,KAAK+lE,QAAQx9C,EAC7B,CAAE,MACAitE,EAAc,EAChB,CACA,IAAK,MAAMC,KAAcD,EACvB,UACQC,EAAWzvB,MACjBuvB,EAAYhyF,KAAKkyF,EAAW/9C,MAC9B,CAAE,MACA,CAOJ,aAFsB7xC,QAAQ4rB,IAAI8jE,EAAYpwF,KAAIuyC,GAASA,EAAMmtB,cAAct8C,OAEhE,EACjB,CAEU,iBAAM++C,GACd,MAAM,IAAIvlE,MAAM,iDAClB,EAhCFmC,EAAAA,YAAAmxF,2gBhNPA7sF,EAAA0a,EAAA,MAAAhf,mHiNCA,MAAAikB,EAAAjF,EAAA,OAOA,MAAawyE,UAKHvtE,EAAAmtE,SAKRtmF,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEgB,aAAM+mB,CAAQjD,GAC5B,IAAIitE,EACJ,IACEA,EAAcx1F,KAAK+lE,QAAQx9C,EAC7B,CAAE,MAEA,OAAOA,CACT,CAEA,GAAIvoB,KAAK21F,aAAc,CACrB,MAAMC,EAA0C,GAChD,IAAK,MAAM/xF,KAAU2xF,EACnB,UACQ3xF,EAAOmiE,MACb4vB,EAAaryF,KAAKM,EACpB,CAAE,MACA,CAGJ2xF,EAAcI,CAChB,CAMA,GAHAJ,QAAoB3vF,QAAQ4rB,IAAI+jE,EAAYrwF,KAAI2nB,OAAQ4qB,QAAOsuB,YAAY,CAAGtuB,QAAOsuB,YAAaA,OAG9FhmE,KAAKqnC,MAAO,CAEd,MAAMwuD,EAAYC,IAGhB,MAAM51F,EAAQF,KAAKmnE,MAAe2uB,EAAM91F,KAAKmnE,OAAS2uB,EAGtD,GAAqB,iBAAV51F,EACT,MAAM,IAAIgK,UAAU,+CAEtB,OAAOhK,CAAK,EAGds1F,EAAcA,EAAYjnD,MAAK,CAACwnD,EAAQC,KACtB,eAAfh2F,KAAKqnC,MAAyB,GAAK,IACnCwuD,EAASE,EAAO/vB,OAAS6vB,EAASG,EAAOhwB,SAC9C,CAIA,IAAIv9C,EAAYF,EAChB,IAAK,MAAM,MAAEmvB,KAAW89C,EACtB/sE,EAAS,IAAKA,WAAiBivB,EAAMmtB,cAAcp8C,IAIrD,OAAOA,CACT,CAEU6+C,WAAAA,GACR,MAAM,IAAIvlE,MAAM,wBAClB,EAxEFmC,EAAAA,wBAAAwxF,2gBjNRAltF,EAAA0a,EAAA,OAAAhf,gHkNCA,MAAAikB,EAAAjF,EAAA,OAOA,MAAa+yE,UAMH9tE,EAAAmtE,SAMRtmF,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GACNzE,KAAKk2F,SAAWl2F,KAAKm2F,gBACvB,CAEgB,aAAM3qE,CAAQjD,GAC5B,IAAIitE,EACJ,IACEA,EAAcx1F,KAAK+lE,QAAQx9C,EAC7B,CAAE,MACAitE,EAAc,EAChB,CAEA,GAAIx1F,KAAK21F,aAAc,CACrB,MAAMC,EAA0C,GAChD,IAAK,MAAM/xF,KAAU2xF,EACnB,UACQ3xF,EAAOmiE,MACb4vB,EAAaryF,KAAKM,EACpB,CAAE,MACA,CAGJ2xF,EAAcI,CAChB,OAGM/vF,QAAQ4rB,IAAI+jE,EAAYrwF,KAAI,EAAG6gE,WAAYA,KAGjD,MAAM15C,QAAqBzmB,QAAQ4rB,IAAI+jE,EAAYrwF,KAAItB,GAAUA,EAAO6zC,MAAMmtB,cAAct8C,MAG5F,OAAOvoB,KAAKk2F,SAAS5pE,EACvB,CAEUg7C,WAAAA,GACR,MAAM,IAAIvlE,MAAM,wBAClB,CAEUo0F,cAAAA,GACR,OAAQ7pE,IACN,MAAM1M,EAAY,CAAC,EAQnB,OAPAA,EAAK5f,KAAKmnE,OAAS,CAAC,EAEpB,CAAC,CAAC,GAAGjgC,OAAO5a,EAAQnnB,KAAKtB,GAAgBA,EAAO7D,KAAKmnE,UAElDz8D,SAASxK,IACR0f,EAAK5f,KAAKmnE,OAAS,IAAKjnE,KAAU0f,EAAK5f,KAAKmnE,OAAQ,IAEjDvnD,CAAI,CAEf,EAhEF1b,EAAAA,qBAAA+xF,2gBlNRAztF,EAAA0a,EAAA,OAAAhf,yHmNCA,MAAA6lB,EAAA7G,EAAA,OAEAiF,EAAAjF,EAAA,OAQA,MAAakzE,UACHjuE,EAAAmtE,SAMRtmF,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEU,iBAAM6iE,CACd/+C,EACAitE,GAGA,MAAMvO,EAAkB,GAClBoP,EAAWb,EACdrwF,KAAI,EAAG6gE,WAAYA,IACnB7gE,KAAIsG,GAAWA,EAAQmgC,OAAOzoC,IAC7B8jF,EAAO1jF,KAAKJ,EAAM,MAEhBmzF,QAAqBzwF,QAAQ4rB,IAAI4kE,GAGvC,IAAIE,EAAgCD,EAEjCnxF,KAAKqxF,IACJ,GAAIA,EACF,OAAOA,EAAMn5D,WAAar9B,KAAKy2F,UAC7BD,EAAMvqC,eAAiBjsD,KAAK02F,aAC5BF,EAAMtqC,cAAgBlsD,KAAK22F,WAC3BH,EAAM5tC,YAAc5oD,KAAK42F,QAC7B,IAEJ,MAAMC,EAAUlyF,KAAKC,OAAmB2xF,EAAMtxF,QAAOgvD,QAAiB9zD,IAAT8zD,KAKvD/hB,EAAqC3pB,EAAOK,QAAQthB,IAAIyiB,EAAAoB,mBAAmB+mB,gBAC7EA,IACFqkD,EAAQA,EAAMpxF,KAAI,CAAC8uD,EAAM5yD,SACVlB,IAAT8zD,GAA6BqiC,EAAaj1F,GAAI6qD,cAAgB,GAEzDoqC,EAAaj1F,GAAIg8B,WAAa6U,EAC9B+hB,EAAO4iC,EAET5iC,KAKX,IAAI6iC,GAAY,EACZC,EAAWjzF,OAAO+pC,kBACtB,IAAK,MAAQxsC,EAAG4yD,KAAUsiC,EAAMjpF,eACjBnN,IAAT8zD,KAAqC,IAAd6iC,GAAmB7iC,EAAO8iC,KACnDD,EAAWz1F,EACX01F,EAAW9iC,GAKf,GAAI6iC,EAAW,EACb,MAAM,IAAI/0F,MAAM,qCAAqC/B,KAAKgK,SACxDi9E,EAAO9hF,KAAIhC,GAASA,EAAM4L,UAAS1J,KAAK,SAI5C,MAAM2xF,EAAYxB,EAAYsB,GAAUp/C,MAmBxC,OAhBIs/C,EAAU1lC,eACZnpC,EAAAE,MAAMy6B,iBAAiBv6B,EAAOK,UAAUu8C,MAAM,sCAAsC6xB,EAAU5rC,eAAe4rC,EAAU3rC,gBAAiB,CACtI/9C,QAASib,EAAOjb,QAAQ/L,OACxByhB,gBAAiBnd,QAAQ4rB,IAAIlJ,EAAOjb,QACjCnI,KAAI2nB,gBAAsBuX,EAAMxL,OAAOxL,YAAYrK,UAAU7d,KAAI8lB,GAAYA,EAAS/qB,WACzFq2F,MAAOn1F,OAAOq2B,YAAY8+D,EAAMpxF,KAAI,CAACqxF,EAAOn1F,IAAM,CAChD,GAAGm0F,EAAYn0F,GAAGq2C,MAAM0T,eAAeoqC,EAAYn0F,GAAGq2C,MAAM2T,eAC5DmrC,KACCvxF,QAAOo/B,QAAsBlkC,IAAbkkC,EAAM,MACzBiyD,aAAcl1F,OAAOq2B,YAAY6+D,EAAanxF,KAAI,CAACqxF,EAAOn1F,IAAM,CAC9D,GAAGm0F,EAAYn0F,GAAGq2C,MAAM0T,eAAeoqC,EAAYn0F,GAAGq2C,MAAM2T,eAC5DmrC,KACCvxF,QAAOo/B,QAAsBlkC,IAAbkkC,EAAM,QAItB2yD,CACT,EAzFF9yF,EAAAA,8BAAAkyF,0gBnNXA5tF,EAAA0a,EAAA,OAAAhf,0GoNCA,MAAAikB,EAAAjF,EAAA,OASA,MAAa+zE,UACH9uE,EAAAmtE,SAMRtmF,WAAAA,CAAmBvK,GACjB4a,MAAM5a,GACNzE,KAAKk3F,YAAcl3F,KAAKm3F,mBAC1B,CAMUA,iBAAAA,GACR,OAAQn3F,KAAK0M,MACX,IAAK,MACH,OAAQ0qF,GAAqCA,EAAMp6D,QAAO,CAACq6D,EAAMC,EAAMj2F,KACrE,MAAMqhD,EAAc1iD,KAAKu3F,aAAoBD,EAAMt3F,KAAKmnE,OAAQrjE,OAAO+pC,mBACvE,OAAe,OAAR6U,IAAiB5+C,OAAOC,MAAMszF,EAAK,KAAOA,EAAK,GAAK30C,GAAO,CAAEA,EAAKrhD,GAAMg2F,CAAI,GAClF,CAAEvzF,OAAOkb,KAAM,IAAK,GACzB,IAAK,MACH,OAAQo4E,GAAqCA,EAAMp6D,QAAO,CAACq6D,EAAMC,EAAMj2F,KACrE,MAAMqhD,EAAc1iD,KAAKu3F,aAAoBD,EAAMt3F,KAAKmnE,OAAQrjE,OAAOstF,mBACvE,OAAe,OAAR1uC,IAAiB5+C,OAAOC,MAAMszF,EAAK,KAAOA,EAAK,GAAK30C,GAAO,CAAEA,EAAKrhD,GAAMg2F,CAAI,GAClF,CAAEvzF,OAAOkb,KAAM,IAAK,GACzB,QAEE,MAAM,IAAIjd,MAAM,4EAA4E/B,KAAK0M,QAEvG,CAEU6qF,YAAAA,CAAar3F,EAA2Bs3F,GAEhD,YAAiBr3F,IAAVD,EAAsBs3F,EAAet3F,CAC9C,CAEU,iBAAMonE,CAAY/+C,EAAWitE,GACrC,IAAIa,EAAWb,EAAYrwF,KAAI,EAAG6gE,WAAYA,IAC9C,MAAMihB,EAAkB,GACxB,GAAIjnF,KAAKy3F,aAAc,CACrB,MAAMC,EAAa,CAAC,EACpBA,EAAM13F,KAAKmnE,OAAS,KAEpBkvB,EAAWA,EAASlxF,KAAIsG,GAAWA,EAAQmgC,OAAOzoC,IAChD8jF,EAAO1jF,KAAKJ,GACLu0F,MAEX,CACA,MAAMprE,QAAgBzmB,QAAQ4rB,IAAI4kE,GAC5Bl4E,EAAQne,KAAKk3F,YAAY5qE,GAC/B,GAAInO,EAAQ,EACV,MAAM,IAAIpc,MAAM,qCAAqC/B,KAAKgK,SACxDi9E,EAAO9hF,KAAIhC,GAASA,EAAM4L,UAAS1J,KAAK,SAE5C,OAAOmwF,EAAYr3E,GAAOu5B,KAC5B,EA1DFxzC,EAAAA,eAAA+yF,2gBpNVAzuF,EAAA0a,EAAA,OAAAhf,wGqNCA,MAAAikB,EAAAjF,EAAA,OAKA,MAAay0E,UACHxvE,EAAAmtE,SACRtmF,WAAAA,CAAmBvK,GACjB4a,MAAM5a,EACR,CAEU6iE,WAAAA,CAAY/+C,EAAWitE,GAC/B,OAAO,IAAI3vF,SAAQ,CAACC,EAASC,KAC3B,MAAMkhF,EAAkB,GACxB,IAAK,MAAMwO,KAAcD,EACvBC,EAAWzvB,MAAM1/D,MAAK,KACpBR,EAAQ2vF,EAAW/9C,MAAM,IACxB9L,OAAOzoC,IAER8jF,EAAO1jF,KAAKJ,GACR8jF,EAAO1lF,SAAWi0F,EAAYj0F,QAChCwE,EAAO,IAAIhE,MAAM,GAAG/B,KAAKgK,6CACvBi9E,EAAO9hF,KAAIyyF,GAAYA,EAAS7oF,UAAS1J,KAAK,SAClD,GAEJ,GAEJ,EAtBFnB,EAAAA,aAAAyzF,2gBrNNAnvF,EAAA0a,EAAA,OAAAhf,iHsNKAA,EAAAA,wBAAA,MAAA8K,WAAAA,GACmB,KAAA+sD,oBAAsC,GAChD,KAAAjN,OAAQ,CAcjB,CAZS19B,qBAAAA,CAAsBi3B,GAC3BroD,KAAK+7D,oBAAoBx4D,KAAK8kD,EAChC,CAEO9U,UAAAA,GACL,GAAIvzC,KAAK8uD,MAAO,CACd9uD,KAAK8uD,OAAQ,EACb,IAAK,MAAMxb,KAAsBtzC,KAAK+7D,oBACpCzoB,GAEJ,CACF,+BxEeF,SAAgBqsB,EAAsBF,GACpC,IAAK,MAAMh/D,IAAO,CAAE,eAClB,KAAMA,KAAOg/D,GACX,MAAM,IAAI19D,MAAM,6BAA6BtB,QAAUuB,KAAKC,UAAUw9D,MAG1E,OAAuBA,CACzB,CAMA,SAAgBo4B,EAAyBp4B,GACvC,IAAK,MAAMh/D,IAAO,CAAE,cAAe,mBAAoB,aACrD,KAAMA,KAAOg/D,GACX,MAAM,IAAI19D,MAAM,6BAA6BtB,QAAUuB,KAAKC,UAAUw9D,MAG1E,OAA0BA,CAC5B,CAOA,SAAgB1C,EACd1vC,GAEA,IAAIyqE,EACJ,MAAO,KACAA,IACHA,EAAazqE,IACbyqE,EACGxxF,MAAKyxF,GAAmBA,EAAgBn3F,MAAMwwB,uBAAsB,KACnE0mE,OAAa33F,CAAS,MAEvByrC,OAAM,UAIJksD,EAEX,uKAvEA5zF,EAAAA,iBAAA,SAAiC0b,GAC/B,OAAOm9C,GAAgB,IAAM,IAAIl3D,SAA6B,CAACC,EAASC,KACtE6Z,EAAK8N,YAAY,YAAaL,GAAkCvnB,EAAQunB,KACxEzN,EAAK7E,GAAG,QAAShV,EAAO,IACvBO,MAAKm5D,GAAeE,EAAsBF,MAC/C,EAMAv7D,EAAAA,oBAAA,SAAoC0b,GAClC,OAAOm9C,GAAgB,IAAM,IAAIl3D,SAA6B,CAACC,EAASC,KACtE6Z,EAAK8N,YAAY,YAAaL,GAAkCvnB,EAAQunB,KACxEzN,EAAK7E,GAAG,QAAShV,EAAO,IACvBO,MAAMm5D,IACD,qBAAsBA,IAC1BA,EAAY7rC,kBAAmB,GAE1BikE,EAAyBp4B,OAEpC,EAMAv7D,EAAAA,sBAAAy7D,EAaAz7D,EAAAA,yBAAA2zF,EAcA3zF,EAAAA,gBAAA64D,2gB9I9DAv0D,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,qpCuNGA,MAAsBkxF,EAoBb,sBAAO4C,CAAgBC,GAC5B,OAAO7C,EAAO8C,OAAOD,EACvB,EAtBF/zF,EAAAA,OAAAkxF,EAMyBA,EAAA8C,OAAiC,CACtDhzB,MAAO,EACPC,MAAO,EACPC,KAAM,EACNriB,KAAM,EACN5/C,MAAO,EACPoiE,MAAO,4gBvNhBX/8D,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,MAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,MAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,GACAsE,EAAA0a,EAAA,OAAAhf,uLwNdAA,EAAQlB,WAuCR,SAAqBm1F,GACnB,IAAIC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAuC,GAA9BE,EAAWC,GAAuB,EAAKA,CAClD,EA3CAr0F,EAAQs0F,YAiDR,SAAsBL,GACpB,IAAIM,EAcAp3F,EAbA+2F,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAEvBM,EAAM,IAAIC,EAVhB,SAAsBR,EAAKG,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,CAClD,CAQoBK,CAAYT,EAAKG,EAAUC,IAEzCM,EAAU,EAGVC,EAAMP,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAKj3F,EAAI,EAAGA,EAAIy3F,EAAKz3F,GAAK,EACxBo3F,EACGM,EAAUZ,EAAI94F,WAAWgC,KAAO,GAChC03F,EAAUZ,EAAI94F,WAAWgC,EAAI,KAAO,GACpC03F,EAAUZ,EAAI94F,WAAWgC,EAAI,KAAO,EACrC03F,EAAUZ,EAAI94F,WAAWgC,EAAI,IAC/Bq3F,EAAIG,KAAcJ,GAAO,GAAM,IAC/BC,EAAIG,KAAcJ,GAAO,EAAK,IAC9BC,EAAIG,KAAmB,IAANJ,EAmBnB,OAhBwB,IAApBF,IACFE,EACGM,EAAUZ,EAAI94F,WAAWgC,KAAO,EAChC03F,EAAUZ,EAAI94F,WAAWgC,EAAI,KAAO,EACvCq3F,EAAIG,KAAmB,IAANJ,GAGK,IAApBF,IACFE,EACGM,EAAUZ,EAAI94F,WAAWgC,KAAO,GAChC03F,EAAUZ,EAAI94F,WAAWgC,EAAI,KAAO,EACpC03F,EAAUZ,EAAI94F,WAAWgC,EAAI,KAAO,EACvCq3F,EAAIG,KAAcJ,GAAO,EAAK,IAC9BC,EAAIG,KAAmB,IAANJ,GAGZC,CACT,EA5FAx0F,EAAQ80F,cAkHR,SAAwBC,GAQtB,IAPA,IAAIR,EACAK,EAAMG,EAAM13F,OACZ23F,EAAaJ,EAAM,EACnBnpF,EAAQ,GACRwpF,EAAiB,MAGZ93F,EAAI,EAAG+3F,EAAON,EAAMI,EAAY73F,EAAI+3F,EAAM/3F,GAAK83F,EACtDxpF,EAAMpM,KAAK81F,EAAYJ,EAAO53F,EAAIA,EAAI83F,EAAkBC,EAAOA,EAAQ/3F,EAAI83F,IAqB7E,OAjBmB,IAAfD,GACFT,EAAMQ,EAAMH,EAAM,GAClBnpF,EAAMpM,KACJ+1F,EAAOb,GAAO,GACda,EAAQb,GAAO,EAAK,IACpB,OAEsB,IAAfS,IACTT,GAAOQ,EAAMH,EAAM,IAAM,GAAKG,EAAMH,EAAM,GAC1CnpF,EAAMpM,KACJ+1F,EAAOb,GAAO,IACda,EAAQb,GAAO,EAAK,IACpBa,EAAQb,GAAO,EAAK,IACpB,MAIG9oF,EAAMtK,KAAK,GACpB,EA1IA,IALA,IAAIi0F,EAAS,GACTP,EAAY,GACZJ,EAA4B,oBAAf9sF,WAA6BA,WAAalB,MAEvDzJ,EAAO,mEACFG,EAAI,EAAsBA,EAAbH,KAAwBG,EAC5Ci4F,EAAOj4F,GAAKH,EAAKG,GACjB03F,EAAU73F,EAAK7B,WAAWgC,IAAMA,EAQlC,SAASg3F,EAASF,GAChB,IAAIW,EAAMX,EAAI52F,OAEd,GAAIu3F,EAAM,EAAI,EACZ,MAAM,IAAI/2F,MAAM,kDAKlB,IAAIu2F,EAAWH,EAAIruF,QAAQ,KAO3B,OANkB,IAAdwuF,IAAiBA,EAAWQ,GAMzB,CAACR,EAJcA,IAAaQ,EAC/B,EACA,EAAKR,EAAW,EAGtB,CAmEA,SAASe,EAAaJ,EAAOz2F,EAAOC,GAGlC,IAFA,IAAIg2F,EARoB15E,EASpB8Z,EAAS,GACJx3B,EAAImB,EAAOnB,EAAIoB,EAAKpB,GAAK,EAChCo3F,GACIQ,EAAM53F,IAAM,GAAM,WAClB43F,EAAM53F,EAAI,IAAM,EAAK,QACP,IAAf43F,EAAM53F,EAAI,IACbw3B,EAAOt1B,KAdF+1F,GADiBv6E,EAeM05E,IAdT,GAAK,IACxBa,EAAOv6E,GAAO,GAAK,IACnBu6E,EAAOv6E,GAAO,EAAI,IAClBu6E,EAAa,GAANv6E,IAaT,OAAO8Z,EAAOxzB,KAAK,GACrB,CAlGA0zF,EAAU,IAAI15F,WAAW,IAAM,GAC/B05F,EAAU,IAAI15F,WAAW,IAAM,0BCnB/B,OAAC,SAAWk6F,GACV,aAkDA,IAAIxc,EACFqD,EAAY,6CACZoZ,EAAW70F,KAAKg+E,KAChB8W,EAAY90F,KAAKk+E,MAEjB6W,EAAiB,qBACjBC,EAAgBD,EAAiB,yDAEjCE,EAAO,KACPC,EAAW,GACXC,EAAmB,iBAEnBC,EAAW,CAAC,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MAC7EC,EAAY,IAKZC,EAAM,IAqpFR,SAASC,EAASt3F,GAChB,IAAIvB,EAAQ,EAAJuB,EACR,OAAOA,EAAI,GAAKA,IAAMvB,EAAIA,EAAIA,EAAI,CACpC,CAIA,SAAS84F,EAAc53C,GAMrB,IALA,IAAIr9C,EAAGk1F,EACL/4F,EAAI,EACJyB,EAAIy/C,EAAEhhD,OACN84F,EAAI93C,EAAE,GAAK,GAENlhD,EAAIyB,GAAI,CAGb,IAFAoC,EAAIq9C,EAAElhD,KAAO,GACb+4F,EAAIP,EAAW30F,EAAE3D,OACV64F,IAAKl1F,EAAI,IAAMA,GACtBm1F,GAAKn1F,CACP,CAGA,IAAKpC,EAAIu3F,EAAE94F,OAA8B,KAAtB84F,EAAEh7F,aAAayD,KAElC,OAAOu3F,EAAE71F,MAAM,EAAG1B,EAAI,GAAK,EAC7B,CAIA,SAASurC,EAAQtG,EAAGuyD,GAClB,IAAI/3C,EAAGC,EACL+3C,EAAKxyD,EAAE50B,EACPqnF,EAAKF,EAAEnnF,EACP9R,EAAI0mC,EAAE7iC,EACNpC,EAAIw3F,EAAEp1F,EACNnC,EAAIglC,EAAE5hC,EACN7E,EAAIg5F,EAAEn0F,EAGR,IAAK9E,IAAMyB,EAAG,OAAO,KAMrB,GAJAy/C,EAAIg4C,IAAOA,EAAG,GACd/3C,EAAIg4C,IAAOA,EAAG,GAGVj4C,GAAKC,EAAG,OAAOD,EAAIC,EAAI,GAAK1/C,EAAIzB,EAGpC,GAAIA,GAAKyB,EAAG,OAAOzB,EAMnB,GAJAkhD,EAAIlhD,EAAI,EACRmhD,EAAIz/C,GAAKzB,GAGJi5F,IAAOC,EAAI,OAAOh4C,EAAI,GAAK+3C,EAAKh4C,EAAI,GAAK,EAG9C,IAAKC,EAAG,OAAOz/C,EAAIzB,EAAIihD,EAAI,GAAK,EAKhC,IAHAz/C,GAAKC,EAAIw3F,EAAGh5F,SAAWD,EAAIk5F,EAAGj5F,QAAUwB,EAAIzB,EAGvCD,EAAI,EAAGA,EAAIyB,EAAGzB,IAAK,GAAIk5F,EAAGl5F,IAAMm5F,EAAGn5F,GAAI,OAAOk5F,EAAGl5F,GAAKm5F,EAAGn5F,GAAKkhD,EAAI,GAAK,EAG5E,OAAOx/C,GAAKzB,EAAI,EAAIyB,EAAIzB,EAAIihD,EAAI,GAAK,CACvC,CAMA,SAASk4C,EAAS73F,EAAG2vC,EAAK3tC,EAAKoF,GAC7B,GAAIpH,EAAI2vC,GAAO3vC,EAAIgC,GAAOhC,IAAM62F,EAAU72F,GACxC,MAAMb,MACJ23F,GAAkB1vF,GAAQ,aAA2B,iBAALpH,EAC7CA,EAAI2vC,GAAO3vC,EAAIgC,EAAM,kBAAoB,oBACzC,6BAA+B1C,OAAOU,GAE/C,CAIA,SAAS83F,EAAM93F,GACb,IAAIG,EAAIH,EAAEuQ,EAAE5R,OAAS,EACrB,OAAO24F,EAASt3F,EAAEuD,EAAI0zF,IAAa92F,GAAKH,EAAEuQ,EAAEpQ,GAAK,GAAK,CACxD,CAGA,SAASiuE,EAAc3sE,EAAK8B,GAC1B,OAAQ9B,EAAI9C,OAAS,EAAI8C,EAAIs2F,OAAO,GAAK,IAAMt2F,EAAIG,MAAM,GAAKH,IAC5D8B,EAAI,EAAI,IAAM,MAAQA,CAC1B,CAGA,SAASy0F,EAAav2F,EAAK8B,EAAGi0F,GAC5B,IAAItB,EAAK+B,EAGT,GAAI10F,EAAI,EAAG,CAGT,IAAK00F,EAAKT,EAAI,MAAOj0F,EAAG00F,GAAMT,GAC9B/1F,EAAMw2F,EAAKx2F,CAGb,MAIE,KAAM8B,GAHN2yF,EAAMz0F,EAAI9C,QAGK,CACb,IAAKs5F,EAAKT,EAAGj0F,GAAK2yF,IAAO3yF,EAAG00F,GAAMT,GAClC/1F,GAAOw2F,CACT,MAAW10F,EAAI2yF,IACbz0F,EAAMA,EAAIG,MAAM,EAAG2B,GAAK,IAAM9B,EAAIG,MAAM2B,IAI5C,OAAO9B,CACT,CAMA04E,EA3wFA,SAAStuE,EAAMqsF,GACb,IAAI3d,EAAK4d,EAAaC,EA4kBhBC,EAMAC,EAoqBAC,EACFC,EACAC,EACAC,EACAC,EAzvCF51F,EAAIo3E,EAAUr7E,UAAY,CAAEsN,YAAa+tE,EAAWv7E,SAAU,KAAMg6F,QAAS,MAC7EC,EAAM,IAAI1e,EAAU,GAUpB2e,EAAiB,GAajBC,EAAgB,EAMhBC,GAAc,EAIdC,EAAa,GAMbC,GAAW,IAKXC,EAAU,IAGVC,GAAS,EAkBTC,EAAc,EAIdC,EAAgB,EAGhBC,EAAS,CACPj1F,OAAQ,GACRk1F,UAAW,EACXC,mBAAoB,EACpBC,eAAgB,IAChBC,iBAAkB,IAClBC,kBAAmB,EACnBC,uBAAwB,IACxBC,OAAQ,IAMVC,EAAW,uCACXC,GAAiC,EAgBnC,SAAS7f,EAAUz6B,EAAGE,GACpB,IAAIq6C,EAAU1pF,EAAG2pF,EAAa32F,EAAG9E,EAAG07F,EAAOjE,EAAKz0F,EAC9C0jC,EAAI/nC,KAGN,KAAM+nC,aAAag1C,GAAY,OAAO,IAAIA,EAAUz6B,EAAGE,GAEvD,GAAS,MAALA,EAAW,CAEb,GAAIF,IAAwB,IAAnBA,EAAE06C,aAYT,OAXAj1D,EAAE7iC,EAAIo9C,EAAEp9C,QAEHo9C,EAAEnvC,GAAKmvC,EAAEn8C,EAAI41F,EAChBh0D,EAAE50B,EAAI40B,EAAE5hC,EAAI,KACHm8C,EAAEn8C,EAAI21F,EACf/zD,EAAE50B,EAAI,CAAC40B,EAAE5hC,EAAI,IAEb4hC,EAAE5hC,EAAIm8C,EAAEn8C,EACR4hC,EAAE50B,EAAImvC,EAAEnvC,EAAE3O,UAMd,IAAKu4F,EAAoB,iBAALz6C,IAAsB,EAAJA,GAAS,EAAG,CAMhD,GAHAva,EAAE7iC,EAAI,EAAIo9C,EAAI,GAAKA,GAAKA,GAAI,GAAK,EAG7BA,MAAQA,EAAG,CACb,IAAKn8C,EAAI,EAAG9E,EAAIihD,EAAGjhD,GAAK,GAAIA,GAAK,GAAI8E,KASrC,YAPIA,EAAI41F,EACNh0D,EAAE50B,EAAI40B,EAAE5hC,EAAI,MAEZ4hC,EAAE5hC,EAAIA,EACN4hC,EAAE50B,EAAI,CAACmvC,IAIX,CAEAj+C,EAAMnC,OAAOogD,EACf,KAAO,CAEL,IAAK89B,EAAUn2E,KAAK5F,EAAMnC,OAAOogD,IAAK,OAAO04C,EAAajzD,EAAG1jC,EAAK04F,GAElEh1D,EAAE7iC,EAAyB,IAArBb,EAAIhF,WAAW,IAAYgF,EAAMA,EAAIG,MAAM,IAAK,GAAK,CAC7D,EAGK2B,EAAI9B,EAAIyF,QAAQ,OAAS,IAAGzF,EAAMA,EAAI6J,QAAQ,IAAK,MAGnD7M,EAAIgD,EAAIuuE,OAAO,OAAS,GAGvBzsE,EAAI,IAAGA,EAAI9E,GACf8E,IAAM9B,EAAIG,MAAMnD,EAAI,GACpBgD,EAAMA,EAAI44F,UAAU,EAAG57F,IACd8E,EAAI,IAGbA,EAAI9B,EAAI9C,OAGZ,KAAO,CAOL,GAJAk5F,EAASj4C,EAAG,EAAGm6C,EAASp7F,OAAQ,QAIvB,IAALihD,GAAWo6C,EAEb,OAAOna,EADP16C,EAAI,IAAIg1C,EAAUz6B,GACFo5C,EAAiB3zD,EAAE5hC,EAAI,EAAGw1F,GAK5C,GAFAt3F,EAAMnC,OAAOogD,GAETy6C,EAAoB,iBAALz6C,EAAe,CAGhC,GAAQ,EAAJA,GAAS,EAAG,OAAO04C,EAAajzD,EAAG1jC,EAAK04F,EAAOv6C,GAKnD,GAHAza,EAAE7iC,EAAI,EAAIo9C,EAAI,GAAKj+C,EAAMA,EAAIG,MAAM,IAAK,GAAK,EAGzCu4E,EAAUmgB,OAAS74F,EAAI6J,QAAQ,YAAa,IAAI3M,OAAS,GAC3D,MAAMQ,MACJ43F,EAAgBr3C,EAEtB,MACEva,EAAE7iC,EAA0B,KAAtBb,EAAIhF,WAAW,IAAagF,EAAMA,EAAIG,MAAM,IAAK,GAAK,EAQ9D,IALAq4F,EAAWF,EAASn4F,MAAM,EAAGg+C,GAC7Br8C,EAAI9E,EAAI,EAIHy3F,EAAMz0F,EAAI9C,OAAQF,EAAIy3F,EAAKz3F,IAC9B,GAAIw7F,EAAS/yF,QAAQqJ,EAAI9O,EAAIs2F,OAAOt5F,IAAM,EAAG,CAC3C,GAAS,KAAL8R,GAGF,GAAI9R,EAAI8E,EAAG,CACTA,EAAI2yF,EACJ,QACF,OACK,IAAKgE,IAGNz4F,GAAOA,EAAIe,gBAAkBf,EAAMA,EAAIiB,gBACvCjB,GAAOA,EAAIiB,gBAAkBjB,EAAMA,EAAIe,gBAAgB,CACzD03F,GAAc,EACdz7F,GAAK,EACL8E,EAAI,EACJ,QACF,CAGF,OAAO60F,EAAajzD,EAAG7lC,OAAOogD,GAAIy6C,EAAOv6C,EAC3C,CAIFu6C,GAAQ,GAIH52F,GAHL9B,EAAM02F,EAAY12F,EAAKm+C,EAAG,GAAIza,EAAE7iC,IAGnB4E,QAAQ,OAAS,EAAGzF,EAAMA,EAAI6J,QAAQ,IAAK,IACnD/H,EAAI9B,EAAI9C,MACf,CAGA,IAAKF,EAAI,EAAyB,KAAtBgD,EAAIhF,WAAWgC,GAAWA,KAGtC,IAAKy3F,EAAMz0F,EAAI9C,OAAkC,KAA1B8C,EAAIhF,aAAay5F,KAExC,GAAIz0F,EAAMA,EAAIG,MAAMnD,IAAKy3F,GAAM,CAI7B,GAHAA,GAAOz3F,EAGH07F,GAAShgB,EAAUmgB,OACrBpE,EAAM,KAAOx2C,EAAIw3C,GAAoBx3C,IAAMm3C,EAAUn3C,IACnD,MAAMvgD,MACJ43F,EAAiB5xD,EAAE7iC,EAAIo9C,GAI7B,IAAKn8C,EAAIA,EAAI9E,EAAI,GAAK06F,EAGpBh0D,EAAE50B,EAAI40B,EAAE5hC,EAAI,UAGP,GAAIA,EAAI21F,EAGb/zD,EAAE50B,EAAI,CAAC40B,EAAE5hC,EAAI,OACR,CAWL,GAVA4hC,EAAE5hC,EAAIA,EACN4hC,EAAE50B,EAAI,GAMN9R,GAAK8E,EAAI,GAAK0zF,EACV1zF,EAAI,IAAG9E,GAAKw4F,GAEZx4F,EAAIy3F,EAAK,CAGX,IAFIz3F,GAAG0mC,EAAE50B,EAAE5P,MAAMc,EAAIG,MAAM,EAAGnD,IAEzBy3F,GAAOe,EAAUx4F,EAAIy3F,GACxB/wD,EAAE50B,EAAE5P,MAAMc,EAAIG,MAAMnD,EAAGA,GAAKw4F,IAG9Bx4F,EAAIw4F,GAAYx1F,EAAMA,EAAIG,MAAMnD,IAAIE,MACtC,MACEF,GAAKy3F,EAGP,KAAOz3F,IAAKgD,GAAO,KACnB0jC,EAAE50B,EAAE5P,MAAMc,EACZ,CACF,MAGE0jC,EAAE50B,EAAI,CAAC40B,EAAE5hC,EAAI,EAEjB,CA21BA,SAASiyD,EAAOx1D,EAAGvB,EAAG87F,EAAIhkD,GACxB,IAAIikD,EAAIj3F,EAAGk3F,EAAIvE,EAAKz0F,EAKpB,GAHU,MAAN84F,EAAYA,EAAKxB,EAChBlB,EAAS0C,EAAI,EAAG,IAEhBv6F,EAAEuQ,EAAG,OAAOvQ,EAAEpB,WAKnB,GAHA47F,EAAKx6F,EAAEuQ,EAAE,GACTkqF,EAAKz6F,EAAEuD,EAEE,MAAL9E,EACFgD,EAAM81F,EAAcv3F,EAAEuQ,GACtB9O,EAAY,GAAN80C,GAAiB,GAANA,IAAYkkD,GAAMzB,GAAcyB,GAAMxB,GACpD7qB,EAAc3sE,EAAKg5F,GACnBzC,EAAav2F,EAAKg5F,EAAI,UAezB,GAVAl3F,GAHAvD,EAAI6/E,EAAM,IAAI1F,EAAUn6E,GAAIvB,EAAG87F,IAGzBh3F,EAGN2yF,GADAz0F,EAAM81F,EAAcv3F,EAAEuQ,IACZ5R,OAOA,GAAN43C,GAAiB,GAANA,IAAY93C,GAAK8E,GAAKA,GAAKy1F,GAAa,CAGrD,KAAO9C,EAAMz3F,EAAGgD,GAAO,IAAKy0F,KAC5Bz0F,EAAM2sE,EAAc3sE,EAAK8B,EAG3B,MAKE,GAJA9E,GAAKg8F,EACLh5F,EAAMu2F,EAAav2F,EAAK8B,EAAG,KAGvBA,EAAI,EAAI2yF,GACV,KAAMz3F,EAAI,EAAG,IAAKgD,GAAO,IAAKhD,IAAKgD,GAAO,WAG1C,IADAhD,GAAK8E,EAAI2yF,GACD,EAEN,IADI3yF,EAAI,GAAK2yF,IAAKz0F,GAAO,KAClBhD,IAAKgD,GAAO,KAM3B,OAAOzB,EAAEsC,EAAI,GAAKk4F,EAAK,IAAM/4F,EAAMA,CACrC,CAKA,SAASi5F,EAAS74F,EAAM7B,GAKtB,IAJA,IAAIG,EAAGu3F,EACLj5F,EAAI,EACJ0mC,EAAI,IAAIg1C,EAAUt4E,EAAK,IAElBpD,EAAIoD,EAAKlD,OAAQF,OACtBi5F,EAAI,IAAIvd,EAAUt4E,EAAKpD,KAChB6D,IAAMnC,EAAIsrC,EAAQtG,EAAGuyD,MAAQ13F,GAAW,IAANG,GAAWglC,EAAE7iC,IAAMtC,KAC1DmlC,EAAIuyD,GAIR,OAAOvyD,CACT,CAOA,SAASw1D,EAAU36F,EAAGuQ,EAAGhN,GAKvB,IAJA,IAAI9E,EAAI,EACNyB,EAAIqQ,EAAE5R,QAGA4R,IAAIrQ,GAAIqQ,EAAE3P,OAGlB,IAAKV,EAAIqQ,EAAE,GAAIrQ,GAAK,GAAIA,GAAK,GAAIzB,KAkBjC,OAfK8E,EAAI9E,EAAI8E,EAAI0zF,EAAW,GAAKkC,EAG/Bn5F,EAAEuQ,EAAIvQ,EAAEuD,EAAI,KAGHA,EAAI21F,EAGbl5F,EAAEuQ,EAAI,CAACvQ,EAAEuD,EAAI,IAEbvD,EAAEuD,EAAIA,EACNvD,EAAEuQ,EAAIA,GAGDvQ,CACT,CAyDA,SAAS6/E,EAAM16C,EAAGy1D,EAAIL,EAAI9C,GACxB,IAAIoD,EAAGp8F,EAAGyB,EAAGC,EAAGH,EAAG86F,EAAIC,EACrBpD,EAAKxyD,EAAE50B,EACPyqF,EAAS7D,EAGX,GAAIQ,EAAI,CAQNsD,EAAK,CAGH,IAAKJ,EAAI,EAAG16F,EAAIw3F,EAAG,GAAIx3F,GAAK,GAAIA,GAAK,GAAI06F,KAIzC,IAHAp8F,EAAIm8F,EAAKC,GAGD,EACNp8F,GAAKw4F,EACL/2F,EAAI06F,EACJ56F,EAAI23F,EAAGmD,EAAK,GAGZC,EAAKlE,EAAU72F,EAAIg7F,EAAOH,EAAI36F,EAAI,GAAK,SAIvC,IAFA46F,EAAKlE,GAAUn4F,EAAI,GAAKw4F,KAEdU,EAAGh5F,OAAQ,CAEnB,IAAI84F,EASF,MAAMwD,EANN,KAAOtD,EAAGh5F,QAAUm8F,EAAInD,EAAGh3F,KAAK,IAChCX,EAAI+6F,EAAK,EACTF,EAAI,EAEJ36F,GADAzB,GAAKw4F,GACGA,EAAW,CAIvB,KAAO,CAIL,IAHAj3F,EAAIG,EAAIw3F,EAAGmD,GAGND,EAAI,EAAG16F,GAAK,GAAIA,GAAK,GAAI06F,KAU9BE,GAHA76F,GAJAzB,GAAKw4F,GAIGA,EAAW4D,GAGV,EAAI,EAAIhE,EAAU72F,EAAIg7F,EAAOH,EAAI36F,EAAI,GAAK,GACrD,CAkBF,GAfAu3F,EAAIA,GAAKmD,EAAK,GAKC,MAAdjD,EAAGmD,EAAK,KAAe56F,EAAI,EAAIF,EAAIA,EAAIg7F,EAAOH,EAAI36F,EAAI,IAEvDu3F,EAAI8C,EAAK,GACLQ,GAAMtD,KAAa,GAAN8C,GAAWA,IAAOp1D,EAAE7iC,EAAI,EAAI,EAAI,IAC9Cy4F,EAAK,GAAW,GAANA,IAAkB,GAANR,GAAW9C,GAAW,GAAN8C,IAGrC97F,EAAI,EAAIyB,EAAI,EAAIF,EAAIg7F,EAAOH,EAAI36F,GAAK,EAAIy3F,EAAGmD,EAAK,IAAM,GAAM,GAC7DP,IAAOp1D,EAAE7iC,EAAI,EAAI,EAAI,IAEpBs4F,EAAK,IAAMjD,EAAG,GAiBhB,OAhBAA,EAAGh5F,OAAS,EAER84F,GAGFmD,GAAMz1D,EAAE5hC,EAAI,EAGZo0F,EAAG,GAAKqD,GAAQ/D,EAAW2D,EAAK3D,GAAYA,GAC5C9xD,EAAE5hC,GAAKq3F,GAAM,GAIbjD,EAAG,GAAKxyD,EAAE5hC,EAAI,EAGT4hC,EAkBT,GAdS,GAAL1mC,GACFk5F,EAAGh5F,OAASm8F,EACZ36F,EAAI,EACJ26F,MAEAnD,EAAGh5F,OAASm8F,EAAK,EACjB36F,EAAI66F,EAAO/D,EAAWx4F,GAItBk5F,EAAGmD,GAAM56F,EAAI,EAAI22F,EAAU72F,EAAIg7F,EAAOH,EAAI36F,GAAK86F,EAAO96F,IAAMC,EAAI,GAI9Ds3F,EAEF,OAAU,CAGR,GAAU,GAANqD,EAAS,CAGX,IAAKr8F,EAAI,EAAGyB,EAAIy3F,EAAG,GAAIz3F,GAAK,GAAIA,GAAK,GAAIzB,KAEzC,IADAyB,EAAIy3F,EAAG,IAAMx3F,EACRA,EAAI,EAAGD,GAAK,GAAIA,GAAK,GAAIC,KAG1B1B,GAAK0B,IACPglC,EAAE5hC,IACEo0F,EAAG,IAAMX,IAAMW,EAAG,GAAK,IAG7B,KACF,CAEE,GADAA,EAAGmD,IAAO36F,EACNw3F,EAAGmD,IAAO9D,EAAM,MACpBW,EAAGmD,KAAQ,EACX36F,EAAI,CAER,CAIF,IAAK1B,EAAIk5F,EAAGh5F,OAAoB,IAAZg5F,IAAKl5F,GAAUk5F,EAAG/2F,OACxC,CAGIukC,EAAE5hC,EAAI41F,EACRh0D,EAAE50B,EAAI40B,EAAE5hC,EAAI,KAGH4hC,EAAE5hC,EAAI21F,IACf/zD,EAAE50B,EAAI,CAAC40B,EAAE5hC,EAAI,GAEjB,CAEA,OAAO4hC,CACT,CAGA,SAASyzD,EAAQ54F,GACf,IAAIyB,EACF8B,EAAIvD,EAAEuD,EAER,OAAU,OAANA,EAAmBvD,EAAEpB,YAEzB6C,EAAM81F,EAAcv3F,EAAEuQ,GAEtB9O,EAAM8B,GAAKy1F,GAAcz1F,GAAK01F,EAC1B7qB,EAAc3sE,EAAK8B,GACnBy0F,EAAav2F,EAAK8B,EAAG,KAElBvD,EAAEsC,EAAI,EAAI,IAAMb,EAAMA,EAC/B,CA+qCA,OAn1EA04E,EAAUtuE,MAAQA,EAElBsuE,EAAU+gB,SAAW,EACrB/gB,EAAUghB,WAAa,EACvBhhB,EAAUihB,WAAa,EACvBjhB,EAAUkhB,YAAc,EACxBlhB,EAAUmhB,cAAgB,EAC1BnhB,EAAUohB,gBAAkB,EAC5BphB,EAAUqhB,gBAAkB,EAC5BrhB,EAAUshB,gBAAkB,EAC5BthB,EAAUuhB,iBAAmB,EAC7BvhB,EAAUwhB,OAAS,EAqCnBxhB,EAAU5zC,OAAS4zC,EAAUjxE,IAAM,SAAUjC,GAC3C,IAAIpB,EAAG65C,EAEP,GAAW,MAAPz4C,EAAa,CAEf,GAAkB,iBAAPA,EA4HT,MAAM9H,MACJ23F,EAAiB,oBAAsB7vF,GAvFzC,GAlCIA,EAAInB,eAAeD,EAAI,oBAEzBgyF,EADAn4C,EAAIz4C,EAAIpB,GACI,EAAGwxF,EAAKxxF,GACpBizF,EAAiBp5C,GAKfz4C,EAAInB,eAAeD,EAAI,mBAEzBgyF,EADAn4C,EAAIz4C,EAAIpB,GACI,EAAG,EAAGA,GAClBkzF,EAAgBr5C,GAOdz4C,EAAInB,eAAeD,EAAI,qBACzB65C,EAAIz4C,EAAIpB,KACC65C,EAAE9+C,KACTi3F,EAASn4C,EAAE,IAAK23C,EAAK,EAAGxxF,GACxBgyF,EAASn4C,EAAE,GAAI,EAAG23C,EAAKxxF,GACvBmzF,EAAat5C,EAAE,GACfu5C,EAAav5C,EAAE,KAEfm4C,EAASn4C,GAAI23C,EAAKA,EAAKxxF,GACvBmzF,IAAeC,EAAav5C,EAAI,GAAKA,EAAIA,KAOzCz4C,EAAInB,eAAeD,EAAI,SAEzB,IADA65C,EAAIz4C,EAAIpB,KACC65C,EAAE9+C,IACTi3F,EAASn4C,EAAE,IAAK23C,GAAM,EAAGxxF,GACzBgyF,EAASn4C,EAAE,GAAI,EAAG23C,EAAKxxF,GACvBqzF,EAAUx5C,EAAE,GACZy5C,EAAUz5C,EAAE,OACP,CAEL,GADAm4C,EAASn4C,GAAI23C,EAAKA,EAAKxxF,IACnB65C,EAGF,MAAMvgD,MACJ23F,EAAiBjxF,EAAI,oBAAsB65C,GAH7Cw5C,IAAYC,EAAUz5C,EAAI,GAAKA,EAAIA,EAKvC,CAMF,GAAIz4C,EAAInB,eAAeD,EAAI,UAAW,CAEpC,IADA65C,EAAIz4C,EAAIpB,QACI65C,EAcV,MAAMvgD,MACJ23F,EAAiBjxF,EAAI,uBAAyB65C,GAdhD,GAAIA,EAAG,CACL,GAAqB,oBAAVk8C,SAAyBA,SAClCA,OAAOC,kBAAmBD,OAAOE,YAIjC,MADA1C,GAAU15C,EACJvgD,MACJ23F,EAAiB,sBAJnBsC,EAAS15C,CAMb,MACE05C,EAAS15C,CAMf,CAoBA,GAhBIz4C,EAAInB,eAAeD,EAAI,iBAEzBgyF,EADAn4C,EAAIz4C,EAAIpB,GACI,EAAG,EAAGA,GAClBwzF,EAAc35C,GAKZz4C,EAAInB,eAAeD,EAAI,mBAEzBgyF,EADAn4C,EAAIz4C,EAAIpB,GACI,EAAGwxF,EAAKxxF,GACpByzF,EAAgB55C,GAKdz4C,EAAInB,eAAeD,EAAI,UAAW,CAEpC,GAAgB,iBADhB65C,EAAIz4C,EAAIpB,IAEH,MAAM1G,MACT23F,EAAiBjxF,EAAI,mBAAqB65C,GAFlB65C,EAAS75C,CAGrC,CAIA,GAAIz4C,EAAInB,eAAeD,EAAI,YAAa,CAKtC,GAAgB,iBAJhB65C,EAAIz4C,EAAIpB,KAIqB,wBAAwBwB,KAAKq4C,GAIxD,MAAMvgD,MACJ23F,EAAiBjxF,EAAI,aAAe65C,GAJtCs6C,EAAmD,cAAlBt6C,EAAE99C,MAAM,EAAG,IAC5Cm4F,EAAWr6C,CAKf,CAQJ,CAEA,MAAO,CACLo5C,eAAgBA,EAChBC,cAAeA,EACfgD,eAAgB,CAAC/C,EAAYC,GAC7B+C,MAAO,CAAC9C,EAASC,GACjBC,OAAQA,EACRC,YAAaA,EACbC,cAAeA,EACfC,OAAQA,EACRQ,SAAUA,EAEd,EAYA5f,EAAU8hB,YAAc,SAAUv8C,GAChC,IAAKA,IAAwB,IAAnBA,EAAE06C,aAAuB,OAAO,EAC1C,IAAKjgB,EAAUmgB,MAAO,OAAO,EAE7B,IAAI77F,EAAGuB,EACLuQ,EAAImvC,EAAEnvC,EACNhN,EAAIm8C,EAAEn8C,EACNjB,EAAIo9C,EAAEp9C,EAER24F,EAAK,GAA2B,kBAAvB,CAAC,EAAEr8F,SAASmH,KAAKwK,IAExB,IAAW,IAANjO,IAAkB,IAAPA,IAAaiB,IAAM8zF,GAAO9zF,GAAK8zF,GAAO9zF,IAAMszF,EAAUtzF,GAAI,CAGxE,GAAa,IAATgN,EAAE,GAAU,CACd,GAAU,IAANhN,GAAwB,IAAbgN,EAAE5R,OAAc,OAAO,EACtC,MAAMs8F,CACR,CAQA,IALAx8F,GAAK8E,EAAI,GAAK0zF,GACN,IAAGx4F,GAAKw4F,GAIZ33F,OAAOiR,EAAE,IAAI5R,QAAUF,EAAG,CAE5B,IAAKA,EAAI,EAAGA,EAAI8R,EAAE5R,OAAQF,IAExB,IADAuB,EAAIuQ,EAAE9R,IACE,GAAKuB,GAAKg3F,GAAQh3F,IAAM62F,EAAU72F,GAAI,MAAMi7F,EAItD,GAAU,IAANj7F,EAAS,OAAO,CACtB,CACF,OAGK,GAAU,OAANuQ,GAAoB,OAANhN,IAAqB,OAANjB,GAAoB,IAANA,IAAkB,IAAPA,GAC/D,OAAO,EAGT,MAAMnD,MACH23F,EAAiB,sBAAwBp3C,EAC9C,EAQAy6B,EAAU+hB,QAAU/hB,EAAUn4E,IAAM,WAClC,OAAO04F,EAAS36E,WAAY,EAC9B,EAQAo6D,EAAUgiB,QAAUhiB,EAAUxqC,IAAM,WAClC,OAAO+qD,EAAS36E,UAAW,EAC7B,EAaAo6D,EAAUkG,QACJgY,EAAU,iBAMVC,EAAkBv2F,KAAKs+E,SAAWgY,EAAW,QAC9C,WAAc,OAAOxB,EAAU90F,KAAKs+E,SAAWgY,EAAU,EACzD,WAAc,OAA2C,SAAlB,WAAhBt2F,KAAKs+E,SAAwB,IACnC,QAAhBt+E,KAAKs+E,SAAsB,EAAI,EAE5B,SAAU+b,GACf,IAAIz8C,EAAGC,EAAGr8C,EAAGpD,EAAGu/C,EACdjhD,EAAI,EACJ8R,EAAI,GACJ4vE,EAAO,IAAIhG,EAAU0e,GAOvB,GALU,MAANuD,EAAYA,EAAKtD,EAChBjB,EAASuE,EAAI,EAAG/E,GAErBl3F,EAAIy2F,EAASwF,EAAKnF,GAEdmC,EAGF,GAAIwC,OAAOC,gBAAiB,CAI1B,IAFAl8C,EAAIi8C,OAAOC,gBAAgB,IAAIQ,YAAYl8F,GAAK,IAEzC1B,EAAI0B,IAQTu/C,EAAW,OAAPC,EAAElhD,IAAgBkhD,EAAElhD,EAAI,KAAO,MAM1B,MACPmhD,EAAIg8C,OAAOC,gBAAgB,IAAIQ,YAAY,IAC3C18C,EAAElhD,GAAKmhD,EAAE,GACTD,EAAElhD,EAAI,GAAKmhD,EAAE,KAKbrvC,EAAE5P,KAAK++C,EAAI,MACXjhD,GAAK,GAGTA,EAAI0B,EAAI,CAGV,KAAO,KAAIy7F,OAAOE,YA2BhB,MADA1C,GAAS,EACHj6F,MACJ23F,EAAiB,sBAvBnB,IAFAn3C,EAAIi8C,OAAOE,YAAY37F,GAAK,GAErB1B,EAAI0B,IAMTu/C,EAAmB,iBAAN,GAAPC,EAAElhD,IAA0C,cAAXkhD,EAAElhD,EAAI,GAC9B,WAAXkhD,EAAElhD,EAAI,GAAgC,SAAXkhD,EAAElhD,EAAI,IACjCkhD,EAAElhD,EAAI,IAAM,KAAOkhD,EAAElhD,EAAI,IAAM,GAAKkhD,EAAElhD,EAAI,KAErC,KACPm9F,OAAOE,YAAY,GAAGh8F,KAAK6/C,EAAGlhD,IAI9B8R,EAAE5P,KAAK++C,EAAI,MACXjhD,GAAK,GAGTA,EAAI0B,EAAI,CAKV,CAIF,IAAKi5F,EAEH,KAAO36F,EAAI0B,IACTu/C,EAAI44C,KACI,OAAM/nF,EAAE9R,KAAOihD,EAAI,MAc/B,IAVAv/C,EAAIoQ,IAAI9R,GACR29F,GAAMnF,EAGF92F,GAAKi8F,IACP18C,EAAIy3C,EAASF,EAAWmF,GACxB7rF,EAAE9R,GAAKo4F,EAAU12F,EAAIu/C,GAAKA,GAIZ,IAATnvC,EAAE9R,GAAU8R,EAAE3P,MAAOnC,KAG5B,GAAIA,EAAI,EACN8R,EAAI,CAAChN,EAAI,OACJ,CAGL,IAAKA,GAAK,EAAa,IAATgN,EAAE,GAAUA,EAAE2P,OAAO,EAAG,GAAI3c,GAAK0zF,GAG/C,IAAKx4F,EAAI,EAAGihD,EAAInvC,EAAE,GAAImvC,GAAK,GAAIA,GAAK,GAAIjhD,KAGpCA,EAAIw4F,IAAU1zF,GAAK0zF,EAAWx4F,EACpC,CAIA,OAFA0hF,EAAK58E,EAAIA,EACT48E,EAAK5vE,EAAIA,EACF4vE,CACT,GASFhG,EAAUnvB,IAAM,WAId,IAHA,IAAIvsD,EAAI,EACNoD,EAAOke,UACPirC,EAAM,IAAImvB,EAAUt4E,EAAK,IACpBpD,EAAIoD,EAAKlD,QAASqsD,EAAMA,EAAI0vB,KAAK74E,EAAKpD,MAC7C,OAAOusD,CACT,EAOAmtC,EAAc,WACZ,IAAI/kB,EAAU,aAOd,SAASkpB,EAAU76F,EAAK86F,EAAQC,EAASvC,GAOvC,IANA,IAAI/5F,EAEFu8F,EADA3G,EAAM,CAAC,GAEPr3F,EAAI,EACJy3F,EAAMz0F,EAAI9C,OAELF,EAAIy3F,GAAM,CACf,IAAKuG,EAAO3G,EAAIn3F,OAAQ89F,IAAQ3G,EAAI2G,IAASF,GAI7C,IAFAzG,EAAI,IAAMmE,EAAS/yF,QAAQzF,EAAIs2F,OAAOt5F,MAEjCyB,EAAI,EAAGA,EAAI41F,EAAIn3F,OAAQuB,IAEtB41F,EAAI51F,GAAKs8F,EAAU,IACH,MAAd1G,EAAI51F,EAAI,KAAY41F,EAAI51F,EAAI,GAAK,GACrC41F,EAAI51F,EAAI,IAAM41F,EAAI51F,GAAKs8F,EAAU,EACjC1G,EAAI51F,IAAMs8F,EAGhB,CAEA,OAAO1G,EAAI4G,SACb,CAKA,OAAO,SAAUj7F,EAAK86F,EAAQC,EAASnO,EAAMsO,GAC3C,IAAI1C,EAAUY,EAAGt3F,EAAGpD,EAAGs3F,EAAGtyD,EAAGwyD,EAAID,EAC/Bj5F,EAAIgD,EAAIyF,QAAQ,KAChBk1F,EAAKtD,EACLyB,EAAKxB,EA+BP,IA5BIt6F,GAAK,IACP0B,EAAIm5F,EAGJA,EAAgB,EAChB73F,EAAMA,EAAI6J,QAAQ,IAAK,IAEvB65B,GADAuyD,EAAI,IAAIvd,EAAUoiB,IACZK,IAAIn7F,EAAI9C,OAASF,GACvB66F,EAAgBn5F,EAKhBu3F,EAAEnnF,EAAI+rF,EAAUtE,EAAaT,EAAcpyD,EAAE50B,GAAI40B,EAAE5hC,EAAG,KACrD,GAAIi5F,EAASppB,GACdskB,EAAEn0F,EAAIm0F,EAAEnnF,EAAE5R,QAUZ4E,EAAIpD,GALJw3F,EAAK2E,EAAU76F,EAAK86F,EAAQC,EAASG,GACjC1C,EAAWF,EAAU3mB,IACrB6mB,EAAW7mB,EAAS2mB,KAGbp7F,OAGO,GAAXg5F,IAAKx3F,GAASw3F,EAAG/2F,OAGxB,IAAK+2F,EAAG,GAAI,OAAOsC,EAASlC,OAAO,GAqCnC,GAlCIt5F,EAAI,IACJ8E,GAEF4hC,EAAE50B,EAAIonF,EACNxyD,EAAE5hC,EAAIA,EAGN4hC,EAAE7iC,EAAI+rF,EAENsJ,GADAxyD,EAAIo1C,EAAIp1C,EAAGuyD,EAAG0E,EAAI7B,EAAIiC,IACfjsF,EACPknF,EAAItyD,EAAEsyD,EACNl0F,EAAI4hC,EAAE5hC,GASR9E,EAAIk5F,EAHJkD,EAAIt3F,EAAI64F,EAAK,GAObj8F,EAAIq8F,EAAU,EACd/E,EAAIA,GAAKoD,EAAI,GAAkB,MAAblD,EAAGkD,EAAI,GAEzBpD,EAAI8C,EAAK,GAAU,MAAL97F,GAAag5F,KAAa,GAAN8C,GAAWA,IAAOp1D,EAAE7iC,EAAI,EAAI,EAAI,IAC1D7D,EAAI0B,GAAK1B,GAAK0B,IAAW,GAANo6F,GAAW9C,GAAW,GAAN8C,GAAuB,EAAZ5C,EAAGkD,EAAI,IACtDN,IAAOp1D,EAAE7iC,EAAI,EAAI,EAAI,IAKxBu4F,EAAI,IAAMlD,EAAG,GAGfl2F,EAAMg2F,EAAIO,EAAaiC,EAASlC,OAAO,IAAKqE,EAAInC,EAASlC,OAAO,IAAMkC,EAASlC,OAAO,OACjF,CAML,GAHAJ,EAAGh5F,OAASk8F,EAGRpD,EAGF,MAAO+E,IAAW7E,IAAKkD,GAAK2B,GAC1B7E,EAAGkD,GAAK,EAEHA,MACDt3F,EACFo0F,EAAK,CAAC,GAAGrzD,OAAOqzD,IAMtB,IAAKx3F,EAAIw3F,EAAGh5F,QAASg5F,IAAKx3F,KAG1B,IAAK1B,EAAI,EAAGgD,EAAM,GAAIhD,GAAK0B,EAAGsB,GAAOw4F,EAASlC,OAAOJ,EAAGl5F,OAGxDgD,EAAMu2F,EAAav2F,EAAK8B,EAAG02F,EAASlC,OAAO,GAC7C,CAGA,OAAOt2F,CACT,CACD,CAnJa,GAuJd84E,EAAM,WAGJ,SAASsiB,EAAS13D,EAAGhlC,EAAGmzC,GACtB,IAAIjuC,EAAGqlF,EAAMoS,EAAKC,EAChBtN,EAAQ,EACRhxF,EAAI0mC,EAAExmC,OACNq+F,EAAM78F,EAAIi3F,EACV6F,EAAM98F,EAAIi3F,EAAY,EAExB,IAAKjyD,EAAIA,EAAEvjC,QAASnD,KAKlBgxF,IADA/E,EAAOsS,GAHPF,EAAM33D,EAAE1mC,GAAK24F,IAEb/xF,EAAI43F,EAAMH,GADVC,EAAM53D,EAAE1mC,GAAK24F,EAAY,GACH4F,GACG5F,EAAaA,EAAa3H,GACnCn8C,EAAO,IAAMjuC,EAAI+xF,EAAY,GAAK6F,EAAMF,EACxD53D,EAAE1mC,GAAKisF,EAAOp3C,EAKhB,OAFIm8C,IAAOtqD,EAAI,CAACsqD,GAAOnrD,OAAOa,IAEvBA,CACT,CAEA,SAASsG,EAAQkU,EAAGC,EAAGs9C,EAAIC,GACzB,IAAI1+F,EAAG2+F,EAEP,GAAIF,GAAMC,EACRC,EAAMF,EAAKC,EAAK,GAAK,OAGrB,IAAK1+F,EAAI2+F,EAAM,EAAG3+F,EAAIy+F,EAAIz+F,IAExB,GAAIkhD,EAAElhD,IAAMmhD,EAAEnhD,GAAI,CAChB2+F,EAAMz9C,EAAElhD,GAAKmhD,EAAEnhD,GAAK,GAAK,EACzB,KACF,CAIJ,OAAO2+F,CACT,CAEA,SAASC,EAAS19C,EAAGC,EAAGs9C,EAAI5pD,GAI1B,IAHA,IAAI70C,EAAI,EAGDy+F,KACLv9C,EAAEu9C,IAAOz+F,EACTA,EAAIkhD,EAAEu9C,GAAMt9C,EAAEs9C,GAAM,EAAI,EACxBv9C,EAAEu9C,GAAMz+F,EAAI60C,EAAOqM,EAAEu9C,GAAMt9C,EAAEs9C,GAI/B,MAAQv9C,EAAE,IAAMA,EAAEhhD,OAAS,EAAGghD,EAAEz/B,OAAO,EAAG,IAC5C,CAGA,OAAO,SAAUilB,EAAGuyD,EAAG0E,EAAI7B,EAAIjnD,GAC7B,IAAI8pD,EAAK75F,EAAG9E,EAAG6+F,EAAMt9F,EAAGu9F,EAAMC,EAAOlnF,EAAGmnF,EAAIC,EAAKC,EAAMC,EAAMC,EAAIC,EAAIC,EACnEC,EAAIC,EACJ37F,EAAI6iC,EAAE7iC,GAAKo1F,EAAEp1F,EAAI,GAAK,EACtBq1F,EAAKxyD,EAAE50B,EACPqnF,EAAKF,EAAEnnF,EAGT,KAAKonF,GAAOA,EAAG,IAAOC,GAAOA,EAAG,IAE9B,OAAO,IAAIzd,EAGTh1C,EAAE7iC,GAAMo1F,EAAEp1F,IAAMq1F,GAAKC,GAAMD,EAAG,IAAMC,EAAG,GAAMA,GAG7CD,GAAe,GAATA,EAAG,KAAYC,EAAS,EAAJt1F,EAAQA,EAAI,EAHa8Z,KAoBvD,IAZAqhF,GADAnnF,EAAI,IAAI6jE,EAAU73E,IACXiO,EAAI,GAEXjO,EAAI85F,GADJ74F,EAAI4hC,EAAE5hC,EAAIm0F,EAAEn0F,GACC,EAER+vC,IACHA,EAAO0jD,EACPzzF,EAAI+zF,EAASnyD,EAAE5hC,EAAI0zF,GAAYK,EAASI,EAAEn0F,EAAI0zF,GAC9C30F,EAAIA,EAAI20F,EAAW,GAKhBx4F,EAAI,EAAGm5F,EAAGn5F,KAAOk5F,EAAGl5F,IAAM,GAAIA,KAInC,GAFIm5F,EAAGn5F,IAAMk5F,EAAGl5F,IAAM,IAAI8E,IAEtBjB,EAAI,EACNm7F,EAAG98F,KAAK,GACR28F,GAAO,MACF,CAwBL,IAvBAQ,EAAKnG,EAAGh5F,OACRq/F,EAAKpG,EAAGj5F,OACRF,EAAI,EACJ6D,GAAK,GAILtC,EAAI62F,EAAUvjD,GAAQskD,EAAG,GAAK,KAItB,IACNA,EAAKiF,EAASjF,EAAI53F,EAAGszC,GACrBqkD,EAAKkF,EAASlF,EAAI33F,EAAGszC,GACrB0qD,EAAKpG,EAAGj5F,OACRm/F,EAAKnG,EAAGh5F,QAGVk/F,EAAKG,EAELL,GADAD,EAAM/F,EAAG/1F,MAAM,EAAGo8F,IACPr/F,OAGJg/F,EAAOK,EAAIN,EAAIC,KAAU,GAChCM,EAAKrG,EAAGh2F,QACRq8F,EAAK,CAAC,GAAG35D,OAAO25D,GAChBF,EAAMnG,EAAG,GACLA,EAAG,IAAMtkD,EAAO,GAAGyqD,IAIvB,EAAG,CAOD,GANA/9F,EAAI,GAGJo9F,EAAM3xD,EAAQmsD,EAAI8F,EAAKM,EAAIL,IAGjB,EAAG,CAqBX,GAjBAC,EAAOF,EAAI,GACPM,GAAML,IAAMC,EAAOA,EAAOtqD,GAAQoqD,EAAI,IAAM,KAGhD19F,EAAI62F,EAAU+G,EAAOG,IAab,EAcN,IAXI/9F,GAAKszC,IAAMtzC,EAAIszC,EAAO,GAI1BkqD,GADAD,EAAOV,EAASjF,EAAI53F,EAAGszC,IACV30C,OACbg/F,EAAOD,EAAI/+F,OAM+B,GAAnC8sC,EAAQ8xD,EAAMG,EAAKF,EAAOG,IAC/B39F,IAGAq9F,EAASE,EAAMS,EAAKR,EAAQS,EAAKrG,EAAI4F,EAAOlqD,GAC5CkqD,EAAQD,EAAK5+F,OACby+F,EAAM,OAQC,GAALp9F,IAGFo9F,EAAMp9F,EAAI,GAKZw9F,GADAD,EAAO3F,EAAGh2F,SACGjD,OAUf,GAPI6+F,EAAQG,IAAMJ,EAAO,CAAC,GAAGj5D,OAAOi5D,IAGpCF,EAASK,EAAKH,EAAMI,EAAMrqD,GAC1BqqD,EAAOD,EAAI/+F,QAGC,GAARy+F,EAMF,KAAO3xD,EAAQmsD,EAAI8F,EAAKM,EAAIL,GAAQ,GAClC39F,IAGAq9F,EAASK,EAAKM,EAAKL,EAAOM,EAAKrG,EAAI+F,EAAMrqD,GACzCqqD,EAAOD,EAAI/+F,MAGjB,MAAmB,IAARy+F,IACTp9F,IACA09F,EAAM,CAAC,IAITD,EAAGh/F,KAAOuB,EAGN09F,EAAI,GACNA,EAAIC,KAAUhG,EAAGkG,IAAO,GAExBH,EAAM,CAAC/F,EAAGkG,IACVF,EAAO,EAEX,QAAUE,IAAOC,GAAgB,MAAVJ,EAAI,KAAep7F,KAE1Cg7F,EAAiB,MAAVI,EAAI,GAGND,EAAG,IAAIA,EAAGv9E,OAAO,EAAG,EAC3B,CAEA,GAAIozB,GAAQ0jD,EAAM,CAGhB,IAAKv4F,EAAI,EAAG6D,EAAIm7F,EAAG,GAAIn7F,GAAK,GAAIA,GAAK,GAAI7D,KAEzCohF,EAAMvpE,EAAG8lF,GAAM9lF,EAAE/S,EAAI9E,EAAI8E,EAAI0zF,EAAW,GAAK,EAAGsD,EAAI+C,EAGtD,MACEhnF,EAAE/S,EAAIA,EACN+S,EAAEmhF,GAAK6F,EAGT,OAAOhnF,CACT,CACD,CAhQK,GA4XAiiF,EAAa,8BACfC,EAAW,cACXC,EAAY,cACZC,EAAkB,qBAClBC,EAAmB,6BALvBP,EAOS,SAAUjzD,EAAG1jC,EAAK04F,EAAOv6C,GAC9B,IAAItM,EACFhxC,EAAI63F,EAAQ14F,EAAMA,EAAI6J,QAAQqtF,EAAkB,IAGlD,GAAID,EAAgBrxF,KAAK/E,GACvB6iC,EAAE7iC,EAAInB,MAAMmB,GAAK,KAAOA,EAAI,GAAK,EAAI,MAChC,CACL,IAAK63F,IAGH73F,EAAIA,EAAEgJ,QAAQitF,GAAY,SAAUlzF,EAAG64F,EAAIC,GAEzC,OADA7qD,EAAkC,MAA1B6qD,EAAKA,EAAGz7F,eAAwB,GAAW,KAANy7F,EAAY,EAAI,EACrDv+C,GAAKA,GAAKtM,EAAYjuC,EAAL64F,CAC3B,IAEIt+C,IACFtM,EAAOsM,EAGPt9C,EAAIA,EAAEgJ,QAAQktF,EAAU,MAAMltF,QAAQmtF,EAAW,SAG/Ch3F,GAAOa,GAAG,OAAO,IAAI63E,EAAU73E,EAAGgxC,GAKxC,GAAI6mC,EAAUmgB,MACZ,MAAMn7F,MACH23F,EAAiB,SAAWl3C,EAAI,SAAWA,EAAI,IAAM,YAAcn+C,GAIxE0jC,EAAE7iC,EAAI,IACR,CAEA6iC,EAAE50B,EAAI40B,EAAE5hC,EAAI,IACd,EA4LFR,EAAEq7F,cAAgBr7F,EAAE48E,IAAM,WACxB,IAAIx6C,EAAI,IAAIg1C,EAAU/8E,MAEtB,OADI+nC,EAAE7iC,EAAI,IAAG6iC,EAAE7iC,EAAI,GACZ6iC,CACT,EAUApiC,EAAEs7F,WAAa,SAAU3G,EAAG93C,GAC1B,OAAOnU,EAAQruC,KAAM,IAAI+8E,EAAUud,EAAG93C,GACxC,EAgBA78C,EAAEu7F,cAAgBv7F,EAAEq5F,GAAK,SAAUA,EAAI7B,GACrC,IAAIhqF,EAAGvQ,EAAG0/C,EACRva,EAAI/nC,KAEN,GAAU,MAANg/F,EAKF,OAJAvE,EAASuE,EAAI,EAAG/E,GACN,MAANkD,EAAYA,EAAKxB,EAChBlB,EAAS0C,EAAI,EAAG,GAEd1a,EAAM,IAAI1F,EAAUh1C,GAAIi3D,EAAKj3D,EAAE5hC,EAAI,EAAGg3F,GAG/C,KAAMhqF,EAAI40B,EAAE50B,GAAI,OAAO,KAIvB,GAHAvQ,IAAM0/C,EAAInvC,EAAE5R,OAAS,GAAK24F,EAASl6F,KAAKmG,EAAI0zF,IAAaA,EAGrDv3C,EAAInvC,EAAEmvC,GAAI,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAI1/C,KAG3C,OAFIA,EAAI,IAAGA,EAAI,GAERA,CACT,EAuBA+C,EAAEw7F,UAAYx7F,EAAEw3E,IAAM,SAAUmd,EAAG93C,GACjC,OAAO26B,EAAIn9E,KAAM,IAAI+8E,EAAUud,EAAG93C,GAAIk5C,EAAgBC,EACxD,EAOAh2F,EAAEy7F,mBAAqBz7F,EAAE07F,KAAO,SAAU/G,EAAG93C,GAC3C,OAAO26B,EAAIn9E,KAAM,IAAI+8E,EAAUud,EAAG93C,GAAI,EAAG,EAC3C,EAkBA78C,EAAE27F,gBAAkB37F,EAAE65F,IAAM,SAAU58F,EAAGqF,GACvC,IAAIs5F,EAAMC,EAAUngG,EAAG0B,EAAS0+F,EAAQC,EAAQC,EAAQrH,EACtDvyD,EAAI/nC,KAKN,IAHA4C,EAAI,IAAIm6E,EAAUn6E,IAGZuQ,IAAMvQ,EAAEg/F,YACZ,MAAM7/F,MACH23F,EAAiB,4BAA8B8B,EAAQ54F,IAS5D,GANS,MAALqF,IAAWA,EAAI,IAAI80E,EAAU90E,IAGjCw5F,EAAS7+F,EAAEuD,EAAI,IAGV4hC,EAAE50B,IAAM40B,EAAE50B,EAAE,IAAgB,GAAV40B,EAAE50B,EAAE,KAAY40B,EAAE5hC,GAAmB,GAAd4hC,EAAE50B,EAAE5R,SAAgBqB,EAAEuQ,IAAMvQ,EAAEuQ,EAAE,GAK5E,OADAmnF,EAAI,IAAIvd,EAAUp4E,KAAK66F,KAAKhE,EAAQzzD,GAAI05D,EAAS7+F,EAAEsC,GAAK,EAAIw1F,EAAM93F,KAAO44F,EAAQ54F,KAC1EqF,EAAIqyF,EAAEuH,IAAI55F,GAAKqyF,EAKxB,GAFAoH,EAAS9+F,EAAEsC,EAAI,EAEX+C,EAAG,CAGL,GAAIA,EAAEkL,GAAKlL,EAAEkL,EAAE,IAAMlL,EAAE/C,EAAG,OAAO,IAAI63E,EAAU/9D,MAE/CwiF,GAAYE,GAAU35D,EAAE65D,aAAe35F,EAAE25F,eAE3B75D,EAAIA,EAAE85D,IAAI55F,GAI1B,KAAO,IAAIrF,EAAEuD,EAAI,IAAM4hC,EAAE5hC,EAAI,GAAK4hC,EAAE5hC,GAAK,IAAa,GAAP4hC,EAAE5hC,EAE7C4hC,EAAE50B,EAAE,GAAK,GAAKsuF,GAAU15D,EAAE50B,EAAE,IAAM,KAElC40B,EAAE50B,EAAE,GAAK,MAAQsuF,GAAU15D,EAAE50B,EAAE,IAAM,YASvC,OANApQ,EAAIglC,EAAE7iC,EAAI,GAAKw1F,EAAM93F,IAAM,EAAI,EAG3BmlC,EAAE5hC,GAAK,IAAGpD,EAAI,EAAIA,GAGf,IAAIg6E,EAAU2kB,EAAS,EAAI3+F,EAAIA,GAE7Bm5F,IAKTn5F,EAAIy2F,EAAS0C,EAAgBrC,EAAW,GAC1C,CAcA,IAZI4H,GACFF,EAAO,IAAIxkB,EAAU,IACjB2kB,IAAQ9+F,EAAEsC,EAAI,GAClBy8F,EAASjH,EAAM93F,IAGf++F,GADAtgG,EAAIsD,KAAK49E,KAAKiZ,EAAQ54F,KACT,EAGf03F,EAAI,IAAIvd,EAAU0e,KAGR,CAER,GAAIkG,EAAQ,CAEV,KADArH,EAAIA,EAAEtd,MAAMj1C,IACL50B,EAAG,MAENpQ,EACEu3F,EAAEnnF,EAAE5R,OAASwB,IAAGu3F,EAAEnnF,EAAE5R,OAASwB,GACxBy+F,IACTlH,EAAIA,EAAEuH,IAAI55F,GAEd,CAEA,GAAI5G,EAAG,CAEL,GAAU,KADVA,EAAIo4F,EAAUp4F,EAAI,IACL,MACbsgG,EAAStgG,EAAI,CACf,MAIE,GAFAohF,EADA7/E,EAAIA,EAAEo6E,MAAMukB,GACH3+F,EAAEuD,EAAI,EAAG,GAEdvD,EAAEuD,EAAI,GACRw7F,EAASjH,EAAM93F,OACV,CAEL,GAAU,IADVvB,GAAKm6F,EAAQ54F,IACA,MACb++F,EAAStgG,EAAI,CACf,CAGF0mC,EAAIA,EAAEi1C,MAAMj1C,GAERhlC,EACEglC,EAAE50B,GAAK40B,EAAE50B,EAAE5R,OAASwB,IAAGglC,EAAE50B,EAAE5R,OAASwB,GAC/By+F,IACTz5D,EAAIA,EAAE85D,IAAI55F,GAEd,CAEA,OAAIu5F,EAAiBlH,GACjBoH,IAAQpH,EAAImB,EAAIte,IAAImd,IAEjBryF,EAAIqyF,EAAEuH,IAAI55F,GAAKlF,EAAI0/E,EAAM6X,EAAG4B,EAAeP,OAnHxBuE,GAmH+C5F,EAC3E,EAWA30F,EAAEm8F,aAAe,SAAU3E,GACzB,IAAIv6F,EAAI,IAAIm6E,EAAU/8E,MAGtB,OAFU,MAANm9F,EAAYA,EAAKxB,EAChBlB,EAAS0C,EAAI,EAAG,GACd1a,EAAM7/E,EAAGA,EAAEuD,EAAI,EAAGg3F,EAC3B,EAOAx3F,EAAEo8F,UAAYp8F,EAAEq8F,GAAK,SAAU1H,EAAG93C,GAChC,OAA8C,IAAvCnU,EAAQruC,KAAM,IAAI+8E,EAAUud,EAAG93C,GACxC,EAMA78C,EAAE8oC,SAAW,WACX,QAASzuC,KAAKmT,CAChB,EAOAxN,EAAEs8F,cAAgBt8F,EAAEyM,GAAK,SAAUkoF,EAAG93C,GACpC,OAAOnU,EAAQruC,KAAM,IAAI+8E,EAAUud,EAAG93C,IAAM,CAC9C,EAOA78C,EAAEu8F,uBAAyBv8F,EAAEw8F,IAAM,SAAU7H,EAAG93C,GAC9C,OAAoD,KAA5CA,EAAInU,EAAQruC,KAAM,IAAI+8E,EAAUud,EAAG93C,MAAoB,IAANA,CAE3D,EAMA78C,EAAEi8F,UAAY,WACZ,QAAS5hG,KAAKmT,GAAK+mF,EAASl6F,KAAKmG,EAAI0zF,GAAY75F,KAAKmT,EAAE5R,OAAS,CACnE,EAOAoE,EAAEy8F,WAAaz8F,EAAE0M,GAAK,SAAUioF,EAAG93C,GACjC,OAAOnU,EAAQruC,KAAM,IAAI+8E,EAAUud,EAAG93C,IAAM,CAC9C,EAOA78C,EAAE08F,oBAAsB18F,EAAE28F,IAAM,SAAUhI,EAAG93C,GAC3C,OAAqD,KAA7CA,EAAInU,EAAQruC,KAAM,IAAI+8E,EAAUud,EAAG93C,MAAqB,IAANA,CAC5D,EAMA78C,EAAE5B,MAAQ,WACR,OAAQ/D,KAAKkF,CACf,EAMAS,EAAE48F,WAAa,WACb,OAAOviG,KAAKkF,EAAI,CAClB,EAMAS,EAAE68F,WAAa,WACb,OAAOxiG,KAAKkF,EAAI,CAClB,EAMAS,EAAE88F,OAAS,WACT,QAASziG,KAAKmT,GAAkB,GAAbnT,KAAKmT,EAAE,EAC5B,EAuBAxN,EAAEk4E,MAAQ,SAAUyc,EAAG93C,GACrB,IAAInhD,EAAGyB,EAAG4/F,EAAGC,EACX56D,EAAI/nC,KACJuiD,EAAIxa,EAAE7iC,EAMR,GAHAs9C,GADA83C,EAAI,IAAIvd,EAAUud,EAAG93C,IACft9C,GAGDq9C,IAAMC,EAAG,OAAO,IAAIu6B,EAAU/9D,KAGnC,GAAIujC,GAAKC,EAEP,OADA83C,EAAEp1F,GAAKs9C,EACAza,EAAEu1C,KAAKgd,GAGhB,IAAIsI,EAAK76D,EAAE5hC,EAAI0zF,EACbgJ,EAAKvI,EAAEn0F,EAAI0zF,EACXU,EAAKxyD,EAAE50B,EACPqnF,EAAKF,EAAEnnF,EAET,IAAKyvF,IAAOC,EAAI,CAGd,IAAKtI,IAAOC,EAAI,OAAOD,GAAMD,EAAEp1F,GAAKs9C,EAAG83C,GAAK,IAAIvd,EAAUyd,EAAKzyD,EAAI/oB,KAGnE,IAAKu7E,EAAG,KAAOC,EAAG,GAGhB,OAAOA,EAAG,IAAMF,EAAEp1F,GAAKs9C,EAAG83C,GAAK,IAAIvd,EAAUwd,EAAG,GAAKxyD,EAGnC,GAAjB4zD,GAAsB,EAAI,EAE/B,CAOA,GALAiH,EAAK1I,EAAS0I,GACdC,EAAK3I,EAAS2I,GACdtI,EAAKA,EAAG/1F,QAGJ+9C,EAAIqgD,EAAKC,EAAI,CAaf,KAXIF,EAAOpgD,EAAI,IACbA,GAAKA,EACLmgD,EAAInI,IAEJsI,EAAKD,EACLF,EAAIlI,GAGNkI,EAAEpD,UAGG98C,EAAID,EAAGC,IAAKkgD,EAAEn/F,KAAK,IACxBm/F,EAAEpD,SACJ,MAKE,IAFAx8F,GAAK6/F,GAAQpgD,EAAIg4C,EAAGh5F,SAAWihD,EAAIg4C,EAAGj5F,SAAWghD,EAAIC,EAEhDD,EAAIC,EAAI,EAAGA,EAAI1/C,EAAG0/C,IAErB,GAAI+3C,EAAG/3C,IAAMg4C,EAAGh4C,GAAI,CAClBmgD,EAAOpI,EAAG/3C,GAAKg4C,EAAGh4C,GAClB,KACF,CAgBJ,GAXImgD,IACFD,EAAInI,EACJA,EAAKC,EACLA,EAAKkI,EACLpI,EAAEp1F,GAAKo1F,EAAEp1F,IAGXs9C,GAAK1/C,EAAI03F,EAAGj5F,SAAWF,EAAIk5F,EAAGh5F,SAItB,EAAG,KAAOihD,IAAK+3C,EAAGl5F,KAAO,GAIjC,IAHAmhD,EAAIo3C,EAAO,EAGJ92F,EAAIy/C,GAAI,CAEb,GAAIg4C,IAAKz3F,GAAK03F,EAAG13F,GAAI,CACnB,IAAKzB,EAAIyB,EAAGzB,IAAMk5F,IAAKl5F,GAAIk5F,EAAGl5F,GAAKmhD,KACjC+3C,EAAGl5F,GACLk5F,EAAGz3F,IAAM82F,CACX,CAEAW,EAAGz3F,IAAM03F,EAAG13F,EACd,CAGA,KAAgB,GAATy3F,EAAG,GAASA,EAAGz3E,OAAO,EAAG,KAAM+/E,GAGtC,OAAKtI,EAAG,GAWDgD,EAAUjD,EAAGC,EAAIsI,IAPtBvI,EAAEp1F,EAAqB,GAAjBy2F,GAAsB,EAAI,EAChCrB,EAAEnnF,EAAI,CAACmnF,EAAEn0F,EAAI,GACNm0F,EAMX,EAwBA30F,EAAEm9F,OAASn9F,EAAEk8F,IAAM,SAAUvH,EAAG93C,GAC9B,IAAItpC,EAAGhU,EACL6iC,EAAI/nC,KAKN,OAHAs6F,EAAI,IAAIvd,EAAUud,EAAG93C,IAGhBza,EAAE50B,IAAMmnF,EAAEp1F,GAAKo1F,EAAEnnF,IAAMmnF,EAAEnnF,EAAE,GACvB,IAAI4pE,EAAU/9D,MAGXs7E,EAAEnnF,GAAK40B,EAAE50B,IAAM40B,EAAE50B,EAAE,GACtB,IAAI4pE,EAAUh1C,IAGJ,GAAfk0D,GAIF/2F,EAAIo1F,EAAEp1F,EACNo1F,EAAEp1F,EAAI,EACNgU,EAAIikE,EAAIp1C,EAAGuyD,EAAG,EAAG,GACjBA,EAAEp1F,EAAIA,EACNgU,EAAEhU,GAAKA,GAEPgU,EAAIikE,EAAIp1C,EAAGuyD,EAAG,EAAG2B,IAGnB3B,EAAIvyD,EAAE81C,MAAM3kE,EAAE8jE,MAAMsd,KAGbnnF,EAAE,IAAqB,GAAf8oF,IAAkB3B,EAAEp1F,EAAI6iC,EAAE7iC,GAElCo1F,EACT,EAuBA30F,EAAEo9F,aAAep9F,EAAEq3E,MAAQ,SAAUsd,EAAG93C,GACtC,IAAIrvC,EAAGhN,EAAG9E,EAAGyB,EAAGC,EAAGkF,EAAG+6F,EAAKtD,EAAKC,EAAKsD,EAAKC,EAAKC,EAAKC,EAClDltD,EAAMmtD,EACNt7D,EAAI/nC,KACJu6F,EAAKxyD,EAAE50B,EACPqnF,GAAMF,EAAI,IAAIvd,EAAUud,EAAG93C,IAAIrvC,EAGjC,KAAKonF,GAAOC,GAAOD,EAAG,IAAOC,EAAG,IAmB9B,OAhBKzyD,EAAE7iC,IAAMo1F,EAAEp1F,GAAKq1F,IAAOA,EAAG,KAAOC,GAAMA,IAAOA,EAAG,KAAOD,EAC1DD,EAAEnnF,EAAImnF,EAAEn0F,EAAIm0F,EAAEp1F,EAAI,MAElBo1F,EAAEp1F,GAAK6iC,EAAE7iC,EAGJq1F,GAAOC,GAKVF,EAAEnnF,EAAI,CAAC,GACPmnF,EAAEn0F,EAAI,GALNm0F,EAAEnnF,EAAImnF,EAAEn0F,EAAI,MASTm0F,EAmBT,IAhBAn0F,EAAI+zF,EAASnyD,EAAE5hC,EAAI0zF,GAAYK,EAASI,EAAEn0F,EAAI0zF,GAC9CS,EAAEp1F,GAAK6iC,EAAE7iC,GACT89F,EAAMzI,EAAGh5F,SACT0hG,EAAMzI,EAAGj5F,UAIP6hG,EAAK7I,EACLA,EAAKC,EACLA,EAAK4I,EACL/hG,EAAI2hG,EACJA,EAAMC,EACNA,EAAM5hG,GAIHA,EAAI2hG,EAAMC,EAAKG,EAAK,GAAI/hG,IAAK+hG,EAAG7/F,KAAK,IAK1C,IAHA2yC,EAAO0jD,EACPyJ,EAAWrJ,EAEN34F,EAAI4hG,IAAO5hG,GAAK,GAAI,CAKvB,IAJA8R,EAAI,EACJ+vF,EAAM1I,EAAGn5F,GAAKgiG,EACdF,EAAM3I,EAAGn5F,GAAKgiG,EAAW,EAEXvgG,EAAIzB,GAAb0B,EAAIigG,GAAgBlgG,EAAIzB,GAK3B8R,IADAusF,EAAMwD,GAHNxD,EAAMnF,IAAKx3F,GAAKsgG,IAEhBp7F,EAAIk7F,EAAMzD,GADVC,EAAMpF,EAAGx3F,GAAKsgG,EAAW,GACHH,GACEG,EAAYA,EAAYD,EAAGtgG,GAAKqQ,GAC7C+iC,EAAO,IAAMjuC,EAAIo7F,EAAW,GAAKF,EAAMxD,EAClDyD,EAAGtgG,KAAO48F,EAAMxpD,EAGlBktD,EAAGtgG,GAAKqQ,CACV,CAQA,OANIA,IACAhN,EAEFi9F,EAAGtgF,OAAO,EAAG,GAGRy6E,EAAUjD,EAAG8I,EAAIj9F,EAC1B,EAOAR,EAAE29F,QAAU,WACV,IAAIv7D,EAAI,IAAIg1C,EAAU/8E,MAEtB,OADA+nC,EAAE7iC,GAAK6iC,EAAE7iC,GAAK,KACP6iC,CACT,EAuBApiC,EAAE23E,KAAO,SAAUgd,EAAG93C,GACpB,IAAIkgD,EACF36D,EAAI/nC,KACJuiD,EAAIxa,EAAE7iC,EAMR,GAHAs9C,GADA83C,EAAI,IAAIvd,EAAUud,EAAG93C,IACft9C,GAGDq9C,IAAMC,EAAG,OAAO,IAAIu6B,EAAU/9D,KAGlC,GAAIujC,GAAKC,EAER,OADA83C,EAAEp1F,GAAKs9C,EACAza,EAAE81C,MAAMyc,GAGjB,IAAIsI,EAAK76D,EAAE5hC,EAAI0zF,EACbgJ,EAAKvI,EAAEn0F,EAAI0zF,EACXU,EAAKxyD,EAAE50B,EACPqnF,EAAKF,EAAEnnF,EAET,IAAKyvF,IAAOC,EAAI,CAGd,IAAKtI,IAAOC,EAAI,OAAO,IAAIzd,EAAUx6B,EAAI,GAIzC,IAAKg4C,EAAG,KAAOC,EAAG,GAAI,OAAOA,EAAG,GAAKF,EAAI,IAAIvd,EAAUwd,EAAG,GAAKxyD,EAAQ,EAAJwa,EACrE,CAOA,GALAqgD,EAAK1I,EAAS0I,GACdC,EAAK3I,EAAS2I,GACdtI,EAAKA,EAAG/1F,QAGJ+9C,EAAIqgD,EAAKC,EAAI,CAUf,IATItgD,EAAI,GACNsgD,EAAKD,EACLF,EAAIlI,IAEJj4C,GAAKA,EACLmgD,EAAInI,GAGNmI,EAAEpD,UACK/8C,IAAKmgD,EAAEn/F,KAAK,IACnBm/F,EAAEpD,SACJ,CAcA,KAZA/8C,EAAIg4C,EAAGh5F,SACPihD,EAAIg4C,EAAGj5F,QAGK,IACVmhG,EAAIlI,EACJA,EAAKD,EACLA,EAAKmI,EACLlgD,EAAID,GAIDA,EAAI,EAAGC,GACVD,GAAKg4C,IAAK/3C,GAAK+3C,EAAG/3C,GAAKg4C,EAAGh4C,GAAKD,GAAKq3C,EAAO,EAC3CW,EAAG/3C,GAAKo3C,IAASW,EAAG/3C,GAAK,EAAI+3C,EAAG/3C,GAAKo3C,EAUvC,OAPIr3C,IACFg4C,EAAK,CAACh4C,GAAGrb,OAAOqzD,KACdsI,GAKGtF,EAAUjD,EAAGC,EAAIsI,EAC1B,EAkBAl9F,EAAE49F,UAAY59F,EAAE63F,GAAK,SAAUA,EAAIL,GACjC,IAAIhqF,EAAGvQ,EAAG0/C,EACRva,EAAI/nC,KAEN,GAAU,MAANw9F,GAAcA,MAASA,EAKzB,OAJA/C,EAAS+C,EAAI,EAAGvD,GACN,MAANkD,EAAYA,EAAKxB,EAChBlB,EAAS0C,EAAI,EAAG,GAEd1a,EAAM,IAAI1F,EAAUh1C,GAAIy1D,EAAIL,GAGrC,KAAMhqF,EAAI40B,EAAE50B,GAAI,OAAO,KAIvB,GAFAvQ,GADA0/C,EAAInvC,EAAE5R,OAAS,GACPs4F,EAAW,EAEfv3C,EAAInvC,EAAEmvC,GAAI,CAGZ,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAI1/C,KAG7B,IAAK0/C,EAAInvC,EAAE,GAAImvC,GAAK,GAAIA,GAAK,GAAI1/C,KACnC,CAIA,OAFI46F,GAAMz1D,EAAE5hC,EAAI,EAAIvD,IAAGA,EAAImlC,EAAE5hC,EAAI,GAE1BvD,CACT,EAWA+C,EAAE69F,UAAY,SAAUzgG,GAEtB,OADA03F,EAAS13F,GAAG,iBAAmB+2F,GACxB95F,KAAKg9E,MAAM,KAAOj6E,EAC3B,EAcA4C,EAAE89F,WAAa99F,EAAE+9F,KAAO,WACtB,IAAIz7F,EAAGrF,EAAGy3F,EAAGpN,EAAKyV,EAChB36D,EAAI/nC,KACJmT,EAAI40B,EAAE50B,EACNjO,EAAI6iC,EAAE7iC,EACNiB,EAAI4hC,EAAE5hC,EACN64F,EAAKtD,EAAiB,EACtB6F,EAAO,IAAIxkB,EAAU,OAGvB,GAAU,IAAN73E,IAAYiO,IAAMA,EAAE,GACtB,OAAO,IAAI4pE,GAAW73E,GAAKA,EAAI,KAAOiO,GAAKA,EAAE,IAAM6L,IAAM7L,EAAI40B,EAAI,KA8BnE,GAtBS,IAJT7iC,EAAIP,KAAK++F,MAAMlI,EAAQzzD,MAIT7iC,GAAK,OACjBtC,EAAIu3F,EAAchnF,IACX5R,OAAS4E,GAAK,GAAK,IAAGvD,GAAK,KAClCsC,EAAIP,KAAK++F,MAAM9gG,GACfuD,EAAI+zF,GAAU/zF,EAAI,GAAK,IAAMA,EAAI,GAAKA,EAAI,GAS1Ck0F,EAAI,IAAItd,EANNn6E,EADEsC,GAAK,IACH,KAAOiB,GAEXvD,EAAIsC,EAAE8rE,iBACAxsE,MAAM,EAAG5B,EAAEkH,QAAQ,KAAO,GAAK3D,IAKvCk0F,EAAI,IAAItd,EAAU73E,EAAI,IAOpBm1F,EAAElnF,EAAE,GAMN,KAJAjO,GADAiB,EAAIk0F,EAAEl0F,GACE64F,GACA,IAAG95F,EAAI,KAOb,GAHAw9F,EAAIrI,EACJA,EAAIkH,EAAKvkB,MAAM0lB,EAAEplB,KAAKH,EAAIp1C,EAAG26D,EAAG1D,EAAI,KAEhC7E,EAAcuI,EAAEvvF,GAAG3O,MAAM,EAAGU,MAAQtC,EAAIu3F,EAAcE,EAAElnF,IAAI3O,MAAM,EAAGU,GAAI,CAW3E,GANIm1F,EAAEl0F,EAAIA,KAAKjB,EAMN,SALTtC,EAAIA,EAAE4B,MAAMU,EAAI,EAAGA,EAAI,MAKH+nF,GAAY,QAALrqF,GAgBpB,EAICA,KAAOA,EAAE4B,MAAM,IAAqB,KAAf5B,EAAE+3F,OAAO,MAGlClY,EAAM4X,EAAGA,EAAEl0F,EAAIu1F,EAAiB,EAAG,GACnCzzF,GAAKoyF,EAAErd,MAAMqd,GAAG2H,GAAGj6D,IAGrB,KACF,CAxBE,IAAKklD,IACHxK,EAAMigB,EAAGA,EAAEv8F,EAAIu1F,EAAiB,EAAG,GAE/BgH,EAAE1lB,MAAM0lB,GAAGV,GAAGj6D,IAAI,CACpBsyD,EAAIqI,EACJ,KACF,CAGF1D,GAAM,EACN95F,GAAK,EACL+nF,EAAM,CAcV,CAIJ,OAAOxK,EAAM4X,EAAGA,EAAEl0F,EAAIu1F,EAAiB,EAAGC,EAAe1zF,EAC3D,EAYAtC,EAAEqrE,cAAgB,SAAUguB,EAAI7B,GAK9B,OAJU,MAAN6B,IACFvE,EAASuE,EAAI,EAAG/E,GAChB+E,KAEK5mC,EAAOp4D,KAAMg/F,EAAI7B,EAAI,EAC9B,EAeAx3F,EAAEgrE,QAAU,SAAUquB,EAAI7B,GAKxB,OAJU,MAAN6B,IACFvE,EAASuE,EAAI,EAAG/E,GAChB+E,EAAKA,EAAKh/F,KAAKmG,EAAI,GAEdiyD,EAAOp4D,KAAMg/F,EAAI7B,EAC1B,EA4BAx3F,EAAEg+F,SAAW,SAAU3E,EAAI7B,EAAI/kC,GAC7B,IAAI/zD,EACF0jC,EAAI/nC,KAEN,GAAc,MAAVo4D,EACQ,MAAN4mC,GAAc7B,GAAmB,iBAANA,GAC7B/kC,EAAS+kC,EACTA,EAAK,MACI6B,GAAmB,iBAANA,GACtB5mC,EAAS4mC,EACTA,EAAK7B,EAAK,MAEV/kC,EAAS+jC,OAEN,GAAqB,iBAAV/jC,EAChB,MAAMr2D,MACH23F,EAAiB,2BAA6BthC,GAKnD,GAFA/zD,EAAM0jC,EAAE4oC,QAAQquB,EAAI7B,GAEhBp1D,EAAE50B,EAAG,CACP,IAAI9R,EACFq3F,EAAMr0F,EAAIW,MAAM,KAChB4+F,GAAMxrC,EAAOgkC,UACbyH,GAAMzrC,EAAOikC,mBACbC,EAAiBlkC,EAAOkkC,gBAAkB,GAC1CwH,EAAUpL,EAAI,GACdqL,EAAerL,EAAI,GACnBsL,EAAQj8D,EAAE7iC,EAAI,EACd++F,EAAYD,EAAQF,EAAQt/F,MAAM,GAAKs/F,EACvChL,EAAMmL,EAAU1iG,OASlB,GAPIsiG,IACFxiG,EAAIuiG,EACJA,EAAKC,EACLA,EAAKxiG,EACLy3F,GAAOz3F,GAGLuiG,EAAK,GAAK9K,EAAM,EAAG,CAGrB,IAFAz3F,EAAIy3F,EAAM8K,GAAMA,EAChBE,EAAUG,EAAUhe,OAAO,EAAG5kF,GACvBA,EAAIy3F,EAAKz3F,GAAKuiG,EAAIE,GAAWxH,EAAiB2H,EAAUhe,OAAO5kF,EAAGuiG,GACrEC,EAAK,IAAGC,GAAWxH,EAAiB2H,EAAUz/F,MAAMnD,IACpD2iG,IAAOF,EAAU,IAAMA,EAC7B,CAEAz/F,EAAM0/F,EACHD,GAAW1rC,EAAOmkC,kBAAoB,MAAQsH,GAAMzrC,EAAOokC,mBAC1DuH,EAAa71F,QAAQ,IAAIk7E,OAAO,OAASya,EAAK,OAAQ,KACvD,MAAQzrC,EAAOqkC,wBAA0B,KACxCsH,GACDD,CACL,CAEA,OAAQ1rC,EAAOlxD,QAAU,IAAM7C,GAAO+zD,EAAOskC,QAAU,GACzD,EAcA/2F,EAAEu+F,WAAa,SAAUC,GACvB,IAAI1G,EAAG2G,EAAI9R,EAAIC,EAAIpsF,EAAGk+F,EAAKzhG,EAAG0hG,EAAIC,EAAIrrF,EAAGmhF,EAAGn1F,EAC1C6iC,EAAI/nC,KACJu6F,EAAKxyD,EAAE50B,EAET,GAAU,MAANgxF,MACFvhG,EAAI,IAAIm6E,EAAUonB,IAGXvC,cAAgBh/F,EAAEuQ,GAAa,IAARvQ,EAAEsC,IAAYtC,EAAEyP,GAAGopF,IAC/C,MAAM15F,MACH23F,EAAiB,aACf92F,EAAEg/F,YAAc,iBAAmB,oBAAsBpG,EAAQ54F,IAI1E,IAAK23F,EAAI,OAAO,IAAIxd,EAAUh1C,GAoB9B,IAlBA01D,EAAI,IAAI1gB,EAAU0e,GAClB8I,EAAKH,EAAK,IAAIrnB,EAAU0e,GACxBnJ,EAAKgS,EAAK,IAAIvnB,EAAU0e,GACxBv2F,EAAIi1F,EAAcI,GAIlBp0F,EAAIs3F,EAAEt3F,EAAIjB,EAAE3D,OAASwmC,EAAE5hC,EAAI,EAC3Bs3F,EAAEtqF,EAAE,GAAK4mF,GAAUsK,EAAMl+F,EAAI0zF,GAAY,EAAIA,EAAWwK,EAAMA,GAC9DF,GAAMA,GAAMvhG,EAAEq+F,WAAWxD,GAAK,EAAKt3F,EAAI,EAAIs3F,EAAI8G,EAAM3hG,EAErDyhG,EAAMtI,EACNA,EAAU,IACVn5F,EAAI,IAAIm6E,EAAU73E,GAGlBo/F,EAAGnxF,EAAE,GAAK,EAGR+F,EAAIikE,EAAIv6E,EAAG66F,EAAG,EAAG,GAEQ,IADzBlL,EAAK6R,EAAG9mB,KAAKpkE,EAAE8jE,MAAMsV,KACd2O,WAAWkD,IAClBC,EAAK9R,EACLA,EAAKC,EACLgS,EAAKD,EAAGhnB,KAAKpkE,EAAE8jE,MAAMuV,EAAKgS,IAC1BD,EAAK/R,EACLkL,EAAI76F,EAAEi7E,MAAM3kE,EAAE8jE,MAAMuV,EAAKkL,IACzB76F,EAAI2vF,EAeN,OAZAA,EAAKpV,EAAIgnB,EAAGtmB,MAAMumB,GAAK9R,EAAI,EAAG,GAC9BgS,EAAKA,EAAGhnB,KAAKiV,EAAGvV,MAAMunB,IACtBH,EAAKA,EAAG9mB,KAAKiV,EAAGvV,MAAMsV,IACtBgS,EAAGp/F,EAAIq/F,EAAGr/F,EAAI6iC,EAAE7iC,EAIhBm1F,EAAIld,EAAIonB,EAAIjS,EAHZnsF,GAAQ,EAGWw1F,GAAe9d,MAAM91C,GAAGw6C,MAAM0e,WAC7C9jB,EAAImnB,EAAIF,EAAIj+F,EAAGw1F,GAAe9d,MAAM91C,GAAGw6C,OAAS,EAAI,CAACgiB,EAAIjS,GAAM,CAACgS,EAAIF,GAExErI,EAAUsI,EAEHhK,CACT,EAMA10F,EAAEs3E,SAAW,WACX,OAAQue,EAAQx7F,KAClB,EAcA2F,EAAE6+F,YAAc,SAAUhH,EAAIL,GAE5B,OADU,MAANK,GAAY/C,EAAS+C,EAAI,EAAGvD,GACzB7hC,EAAOp4D,KAAMw9F,EAAIL,EAAI,EAC9B,EAcAx3F,EAAEnE,SAAW,SAAUghD,GACrB,IAAIn+C,EACFzB,EAAI5C,KACJkF,EAAItC,EAAEsC,EACNiB,EAAIvD,EAAEuD,EA0BR,OAvBU,OAANA,EACEjB,GACFb,EAAM,WACFa,EAAI,IAAGb,EAAM,IAAMA,IAEvBA,EAAM,OAGC,MAALm+C,EACFn+C,EAAM8B,GAAKy1F,GAAcz1F,GAAK01F,EAC3B7qB,EAAcmpB,EAAcv3F,EAAEuQ,GAAIhN,GAClCy0F,EAAaT,EAAcv3F,EAAEuQ,GAAIhN,EAAG,KACxB,KAANq8C,GAAYo6C,EAErBv4F,EAAMu2F,EAAaT,GADnBv3F,EAAI6/E,EAAM,IAAI1F,EAAUn6E,GAAI84F,EAAiBv1F,EAAI,EAAGw1F,IACjBxoF,GAAIvQ,EAAEuD,EAAG,MAE5Cs0F,EAASj4C,EAAG,EAAGm6C,EAASp7F,OAAQ,QAChC8C,EAAM02F,EAAYH,EAAaT,EAAcv3F,EAAEuQ,GAAIhN,EAAG,KAAM,GAAIq8C,EAAGt9C,GAAG,IAGpEA,EAAI,GAAKtC,EAAEuQ,EAAE,KAAI9O,EAAM,IAAMA,IAG5BA,CACT,EAOAsB,EAAE61F,QAAU71F,EAAE8+F,OAAS,WACrB,OAAOjJ,EAAQx7F,KACjB,EAGA2F,EAAEq3F,cAAe,EAEG,MAAhBlC,GAAsB/d,EAAUjxE,IAAIgvF,GAEjC/d,CACT,CAqIYtuE,GACZsuE,EAAmB,QAAIA,EAAUA,UAAYA,OAIH,KAAxC,aAAqB,OAAOA,CAAY,+BAc3C,CAz2FA,gCCUD,MAAM2nB,EAAS,EAAQ,MACjBC,EAAU,EAAQ,OAClBC,EACe,mBAAXr7F,QAAkD,mBAAlBA,OAAY,IAChDA,OAAY,IAAE,8BACd,KAENrF,EAAQnH,OAASA,EACjBmH,EAAQ2gG,WAyTR,SAAqBtjG,GAInB,OAHKA,GAAUA,IACbA,EAAS,GAEJxE,EAAO8C,OAAO0B,EACvB,EA7TA2C,EAAQ4gG,kBAAoB,GAE5B,MAAMC,EAAe,WAwDrB,SAASC,EAAczjG,GACrB,GAAIA,EAASwjG,EACX,MAAM,IAAIl2F,WAAW,cAAgBtN,EAAS,kCAGhD,MAAMgB,EAAM,IAAIsJ,WAAWtK,GAE3B,OADAH,OAAO6jG,eAAe1iG,EAAKxF,EAAO2E,WAC3Ba,CACT,CAYA,SAASxF,EAAQ8hC,EAAKqmE,EAAkB3jG,GAEtC,GAAmB,iBAARs9B,EAAkB,CAC3B,GAAgC,iBAArBqmE,EACT,MAAM,IAAIh7F,UACR,sEAGJ,OAAOi7F,EAAYtmE,EACrB,CACA,OAAOg1C,EAAKh1C,EAAKqmE,EAAkB3jG,EACrC,CAIA,SAASsyE,EAAM3zE,EAAOglG,EAAkB3jG,GACtC,GAAqB,iBAAVrB,EACT,OAqHJ,SAAqBE,EAAQqa,GAK3B,GAJwB,iBAAbA,GAAsC,KAAbA,IAClCA,EAAW,SAGR1d,EAAOqoG,WAAW3qF,GACrB,MAAM,IAAIvQ,UAAU,qBAAuBuQ,GAG7C,MAAMlZ,EAAwC,EAA/ByB,EAAW5C,EAAQqa,GAClC,IAAIlY,EAAMyiG,EAAazjG,GAEvB,MAAM8jG,EAAS9iG,EAAII,MAAMvC,EAAQqa,GASjC,OAPI4qF,IAAW9jG,IAIbgB,EAAMA,EAAIiC,MAAM,EAAG6gG,IAGd9iG,CACT,CA3IW+iG,CAAWplG,EAAOglG,GAG3B,GAAIv7F,YAAYC,OAAO1J,GACrB,OAkJJ,SAAwBqlG,GACtB,GAAIC,EAAWD,EAAW15F,YAAa,CACrC,MAAMnJ,EAAO,IAAImJ,WAAW05F,GAC5B,OAAOE,EAAgB/iG,EAAKZ,OAAQY,EAAKgjG,WAAYhjG,EAAKM,WAC5D,CACA,OAAO2iG,EAAcJ,EACvB,CAxJWK,CAAc1lG,GAGvB,GAAa,MAATA,EACF,MAAM,IAAIgK,UACR,yHACiDhK,GAIrD,GAAIslG,EAAWtlG,EAAOyJ,cACjBzJ,GAASslG,EAAWtlG,EAAM4B,OAAQ6H,aACrC,OAAO87F,EAAgBvlG,EAAOglG,EAAkB3jG,GAGlD,GAAiC,oBAAtBskG,oBACNL,EAAWtlG,EAAO2lG,oBAClB3lG,GAASslG,EAAWtlG,EAAM4B,OAAQ+jG,oBACrC,OAAOJ,EAAgBvlG,EAAOglG,EAAkB3jG,GAGlD,GAAqB,iBAAVrB,EACT,MAAM,IAAIgK,UACR,yEAIJ,MAAMsxF,EAAUt7F,EAAMs7F,SAAWt7F,EAAMs7F,UACvC,GAAe,MAAXA,GAAmBA,IAAYt7F,EACjC,OAAOnD,EAAO82E,KAAK2nB,EAAS0J,EAAkB3jG,GAGhD,MAAMihD,EAkJR,SAAqB34C,GACnB,GAAI9M,EAAO+oG,SAASj8F,GAAM,CACxB,MAAMivF,EAA4B,EAAtBiN,EAAQl8F,EAAItI,QAClBgB,EAAMyiG,EAAalM,GAEzB,OAAmB,IAAfv2F,EAAIhB,QAIRsI,EAAInH,KAAKH,EAAK,EAAG,EAAGu2F,GAHXv2F,CAKX,CAEA,YAAmBpC,IAAf0J,EAAItI,OACoB,iBAAfsI,EAAItI,QAAuBykG,EAAYn8F,EAAItI,QAC7CyjG,EAAa,GAEfW,EAAc97F,GAGN,WAAbA,EAAI6C,MAAqB/B,MAAMC,QAAQf,EAAI+V,MACtC+lF,EAAc97F,EAAI+V,WAD3B,CAGF,CAzKYqmF,CAAW/lG,GACrB,GAAIsiD,EAAG,OAAOA,EAEd,GAAsB,oBAAXj5C,QAAgD,MAAtBA,OAAO28F,aACH,mBAA9BhmG,EAAMqJ,OAAO28F,aACtB,OAAOnpG,EAAO82E,KAAK3zE,EAAMqJ,OAAO28F,aAAa,UAAWhB,EAAkB3jG,GAG5E,MAAM,IAAI2I,UACR,yHACiDhK,EAErD,CAmBA,SAASimG,EAAYrmG,GACnB,GAAoB,iBAATA,EACT,MAAM,IAAIoK,UAAU,0CACf,GAAIpK,EAAO,EAChB,MAAM,IAAI+O,WAAW,cAAgB/O,EAAO,iCAEhD,CA0BA,SAASqlG,EAAarlG,GAEpB,OADAqmG,EAAWrmG,GACJklG,EAAallG,EAAO,EAAI,EAAoB,EAAhBimG,EAAQjmG,GAC7C,CAuCA,SAAS6lG,EAAexlF,GACtB,MAAM5e,EAAS4e,EAAM5e,OAAS,EAAI,EAA4B,EAAxBwkG,EAAQ5lF,EAAM5e,QAC9CgB,EAAMyiG,EAAazjG,GACzB,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EAC/BkB,EAAIlB,GAAgB,IAAX8e,EAAM9e,GAEjB,OAAOkB,CACT,CAUA,SAASkjG,EAAiBtlF,EAAOulF,EAAYnkG,GAC3C,GAAImkG,EAAa,GAAKvlF,EAAMnd,WAAa0iG,EACvC,MAAM,IAAI72F,WAAW,wCAGvB,GAAIsR,EAAMnd,WAAa0iG,GAAcnkG,GAAU,GAC7C,MAAM,IAAIsN,WAAW,wCAGvB,IAAItM,EAYJ,OAVEA,OADiBpC,IAAfulG,QAAuCvlG,IAAXoB,EACxB,IAAIsK,WAAWsU,QACDhgB,IAAXoB,EACH,IAAIsK,WAAWsU,EAAOulF,GAEtB,IAAI75F,WAAWsU,EAAOulF,EAAYnkG,GAI1CH,OAAO6jG,eAAe1iG,EAAKxF,EAAO2E,WAE3Ba,CACT,CA2BA,SAASwjG,EAASxkG,GAGhB,GAAIA,GAAUwjG,EACZ,MAAM,IAAIl2F,WAAW,0DACak2F,EAAavjG,SAAS,IAAM,UAEhE,OAAgB,EAATD,CACT,CAsGA,SAASyB,EAAY5C,EAAQqa,GAC3B,GAAI1d,EAAO+oG,SAAS1lG,GAClB,OAAOA,EAAOmB,OAEhB,GAAIoI,YAAYC,OAAOxJ,IAAWolG,EAAWplG,EAAQuJ,aACnD,OAAOvJ,EAAO4C,WAEhB,GAAsB,iBAAX5C,EACT,MAAM,IAAI8J,UACR,kGAC0B9J,GAI9B,MAAM04F,EAAM14F,EAAOmB,OACb6kG,EAAazjF,UAAUphB,OAAS,IAAsB,IAAjBohB,UAAU,GACrD,IAAKyjF,GAAqB,IAARtN,EAAW,OAAO,EAGpC,IAAIuN,GAAc,EAClB,OACE,OAAQ5rF,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOq+E,EACT,IAAK,OACL,IAAK,QACH,OAAOwN,EAAYlmG,GAAQmB,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAANu3F,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOyN,EAAcnmG,GAAQmB,OAC/B,QACE,GAAI8kG,EACF,OAAOD,GAAa,EAAIE,EAAYlmG,GAAQmB,OAE9CkZ,GAAY,GAAKA,GAAUnV,cAC3B+gG,GAAc,EAGtB,CAGA,SAASG,EAAc/rF,EAAUjY,EAAOC,GACtC,IAAI4jG,GAAc,EAclB,SALclmG,IAAVqC,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQxC,KAAKuB,OACf,MAAO,GAOT,SAJYpB,IAARsC,GAAqBA,EAAMzC,KAAKuB,UAClCkB,EAAMzC,KAAKuB,QAGTkB,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTD,KAAW,GAGT,MAAO,GAKT,IAFKiY,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAOgsF,EAASzmG,KAAMwC,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOikG,EAAU1mG,KAAMwC,EAAOC,GAEhC,IAAK,QACH,OAAOkkG,EAAW3mG,KAAMwC,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOmkG,EAAY5mG,KAAMwC,EAAOC,GAElC,IAAK,SACH,OAAOokG,EAAY7mG,KAAMwC,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOqkG,EAAa9mG,KAAMwC,EAAOC,GAEnC,QACE,GAAI4jG,EAAa,MAAM,IAAIn8F,UAAU,qBAAuBuQ,GAC5DA,GAAYA,EAAW,IAAInV,cAC3B+gG,GAAc,EAGtB,CAUA,SAASU,EAAMvkD,EAAG5/C,EAAGqF,GACnB,MAAM5G,EAAImhD,EAAE5/C,GACZ4/C,EAAE5/C,GAAK4/C,EAAEv6C,GACTu6C,EAAEv6C,GAAK5G,CACT,CA2IA,SAAS2lG,EAAsBllG,EAAQ4gD,EAAKgjD,EAAYjrF,EAAUwsF,GAEhE,GAAsB,IAAlBnlG,EAAOP,OAAc,OAAQ,EAmBjC,GAhB0B,iBAAfmkG,GACTjrF,EAAWirF,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAGZM,EADJN,GAAcA,KAGZA,EAAauB,EAAM,EAAKnlG,EAAOP,OAAS,GAItCmkG,EAAa,IAAGA,EAAa5jG,EAAOP,OAASmkG,GAC7CA,GAAc5jG,EAAOP,OAAQ,CAC/B,GAAI0lG,EAAK,OAAQ,EACZvB,EAAa5jG,EAAOP,OAAS,CACpC,MAAO,GAAImkG,EAAa,EAAG,CACzB,IAAIuB,EACC,OAAQ,EADJvB,EAAa,CAExB,CAQA,GALmB,iBAARhjD,IACTA,EAAM3lD,EAAO82E,KAAKnxB,EAAKjoC,IAIrB1d,EAAO+oG,SAASpjD,GAElB,OAAmB,IAAfA,EAAInhD,QACE,EAEH2lG,EAAaplG,EAAQ4gD,EAAKgjD,EAAYjrF,EAAUwsF,GAClD,GAAmB,iBAARvkD,EAEhB,OADAA,GAAY,IACgC,mBAAjC72C,WAAWnK,UAAUoI,QAC1Bm9F,EACKp7F,WAAWnK,UAAUoI,QAAQnB,KAAK7G,EAAQ4gD,EAAKgjD,GAE/C75F,WAAWnK,UAAUgD,YAAYiE,KAAK7G,EAAQ4gD,EAAKgjD,GAGvDwB,EAAaplG,EAAQ,CAAC4gD,GAAMgjD,EAAYjrF,EAAUwsF,GAG3D,MAAM,IAAI/8F,UAAU,uCACtB,CAEA,SAASg9F,EAAcxO,EAAKh2C,EAAKgjD,EAAYjrF,EAAUwsF,GACrD,IA0BI5lG,EA1BA8lG,EAAY,EACZC,EAAY1O,EAAIn3F,OAChB8lG,EAAY3kD,EAAInhD,OAEpB,QAAiBpB,IAAbsa,IAEe,UADjBA,EAAWvY,OAAOuY,GAAUnV,gBACY,UAAbmV,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAIi+E,EAAIn3F,OAAS,GAAKmhD,EAAInhD,OAAS,EACjC,OAAQ,EAEV4lG,EAAY,EACZC,GAAa,EACbC,GAAa,EACb3B,GAAc,CAChB,CAGF,SAAS/lF,EAAMpd,EAAKlB,GAClB,OAAkB,IAAd8lG,EACK5kG,EAAIlB,GAEJkB,EAAI+kG,aAAajmG,EAAI8lG,EAEhC,CAGA,GAAIF,EAAK,CACP,IAAIM,GAAc,EAClB,IAAKlmG,EAAIqkG,EAAYrkG,EAAI+lG,EAAW/lG,IAClC,GAAIse,EAAK+4E,EAAKr3F,KAAOse,EAAK+iC,GAAqB,IAAhB6kD,EAAoB,EAAIlmG,EAAIkmG,IAEzD,IADoB,IAAhBA,IAAmBA,EAAalmG,GAChCA,EAAIkmG,EAAa,IAAMF,EAAW,OAAOE,EAAaJ,OAEtC,IAAhBI,IAAmBlmG,GAAKA,EAAIkmG,GAChCA,GAAc,CAGpB,MAEE,IADI7B,EAAa2B,EAAYD,IAAW1B,EAAa0B,EAAYC,GAC5DhmG,EAAIqkG,EAAYrkG,GAAK,EAAGA,IAAK,CAChC,IAAImmG,GAAQ,EACZ,IAAK,IAAI1kG,EAAI,EAAGA,EAAIukG,EAAWvkG,IAC7B,GAAI6c,EAAK+4E,EAAKr3F,EAAIyB,KAAO6c,EAAK+iC,EAAK5/C,GAAI,CACrC0kG,GAAQ,EACR,KACF,CAEF,GAAIA,EAAO,OAAOnmG,CACpB,CAGF,OAAQ,CACV,CAcA,SAASomG,EAAUllG,EAAKnC,EAAQY,EAAQO,GACtCP,EAAS8C,OAAO9C,IAAW,EAC3B,MAAM8uD,EAAYvtD,EAAIhB,OAASP,EAC1BO,GAGHA,EAASuC,OAAOvC,IACHuuD,IACXvuD,EAASuuD,GAJXvuD,EAASuuD,EAQX,MAAM43C,EAAStnG,EAAOmB,OAKtB,IAAIF,EACJ,IAJIE,EAASmmG,EAAS,IACpBnmG,EAASmmG,EAAS,GAGfrmG,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAC3B,MAAMub,EAAS1Z,SAAS9C,EAAO6lF,OAAW,EAAJ5kF,EAAO,GAAI,IACjD,GAAI2kG,EAAYppF,GAAS,OAAOvb,EAChCkB,EAAIvB,EAASK,GAAKub,CACpB,CACA,OAAOvb,CACT,CAEA,SAASsmG,EAAWplG,EAAKnC,EAAQY,EAAQO,GACvC,OAAOqmG,EAAWtB,EAAYlmG,EAAQmC,EAAIhB,OAASP,GAASuB,EAAKvB,EAAQO,EAC3E,CAEA,SAASsmG,EAAYtlG,EAAKnC,EAAQY,EAAQO,GACxC,OAAOqmG,EAypCT,SAAuBvjG,GACrB,MAAMyjG,EAAY,GAClB,IAAK,IAAIzmG,EAAI,EAAGA,EAAIgD,EAAI9C,SAAUF,EAEhCymG,EAAUvkG,KAAyB,IAApBc,EAAIhF,WAAWgC,IAEhC,OAAOymG,CACT,CAhqCoBC,CAAa3nG,GAASmC,EAAKvB,EAAQO,EACvD,CAEA,SAASymG,EAAazlG,EAAKnC,EAAQY,EAAQO,GACzC,OAAOqmG,EAAWrB,EAAcnmG,GAASmC,EAAKvB,EAAQO,EACxD,CAEA,SAAS0mG,EAAW1lG,EAAKnC,EAAQY,EAAQO,GACvC,OAAOqmG,EA0pCT,SAAyBvjG,EAAK6jG,GAC5B,IAAI/0F,EAAGg1F,EAAIC,EACX,MAAMN,EAAY,GAClB,IAAK,IAAIzmG,EAAI,EAAGA,EAAIgD,EAAI9C,WACjB2mG,GAAS,GAAK,KADa7mG,EAGhC8R,EAAI9O,EAAIhF,WAAWgC,GACnB8mG,EAAKh1F,GAAK,EACVi1F,EAAKj1F,EAAI,IACT20F,EAAUvkG,KAAK6kG,GACfN,EAAUvkG,KAAK4kG,GAGjB,OAAOL,CACT,CAxqCoBO,CAAejoG,EAAQmC,EAAIhB,OAASP,GAASuB,EAAKvB,EAAQO,EAC9E,CA8EA,SAASslG,EAAatkG,EAAKC,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQF,EAAIhB,OACtBmjG,EAAO1L,cAAcz2F,GAErBmiG,EAAO1L,cAAcz2F,EAAIiC,MAAMhC,EAAOC,GAEjD,CAEA,SAASikG,EAAWnkG,EAAKC,EAAOC,GAC9BA,EAAMkC,KAAK4tC,IAAIhwC,EAAIhB,OAAQkB,GAC3B,MAAMsC,EAAM,GAEZ,IAAI1D,EAAImB,EACR,KAAOnB,EAAIoB,GAAK,CACd,MAAM6lG,EAAY/lG,EAAIlB,GACtB,IAAIknG,EAAY,KACZC,EAAoBF,EAAY,IAChC,EACCA,EAAY,IACT,EACCA,EAAY,IACT,EACA,EAEZ,GAAIjnG,EAAImnG,GAAoB/lG,EAAK,CAC/B,IAAIgmG,EAAYC,EAAWC,EAAYC,EAEvC,OAAQJ,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EACHG,EAAalmG,EAAIlB,EAAI,GACO,MAAV,IAAbonG,KACHG,GAA6B,GAAZN,IAAqB,EAAoB,GAAbG,EACzCG,EAAgB,MAClBL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAalmG,EAAIlB,EAAI,GACrBqnG,EAAYnmG,EAAIlB,EAAI,GACQ,MAAV,IAAbonG,IAAsD,MAAV,IAAZC,KACnCE,GAA6B,GAAZN,IAAoB,IAAoB,GAAbG,IAAsB,EAAmB,GAAZC,EACrEE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,SACtEL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAalmG,EAAIlB,EAAI,GACrBqnG,EAAYnmG,EAAIlB,EAAI,GACpBsnG,EAAapmG,EAAIlB,EAAI,GACO,MAAV,IAAbonG,IAAsD,MAAV,IAAZC,IAAsD,MAAV,IAAbC,KAClEC,GAA6B,GAAZN,IAAoB,IAAqB,GAAbG,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,EAClGC,EAAgB,OAAUA,EAAgB,UAC5CL,EAAYK,IAItB,CAEkB,OAAdL,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbxjG,EAAIxB,KAAKglG,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBxjG,EAAIxB,KAAKglG,GACTlnG,GAAKmnG,CACP,CAEA,OAQF,SAAgCK,GAC9B,MAAM/P,EAAM+P,EAAWtnG,OACvB,GAAIu3F,GAAOgQ,EACT,OAAO5mG,OAAOC,aAAaoE,MAAMrE,OAAQ2mG,GAI3C,IAAI9jG,EAAM,GACN1D,EAAI,EACR,KAAOA,EAAIy3F,GACT/zF,GAAO7C,OAAOC,aAAaoE,MACzBrE,OACA2mG,EAAWrkG,MAAMnD,EAAGA,GAAKynG,IAG7B,OAAO/jG,CACT,CAxBSgkG,CAAsBhkG,EAC/B,CA3+BAb,EAAQ8kG,WAAajE,EAgBrBhoG,EAAOksG,oBAUP,WAEE,IACE,MAAMvQ,EAAM,IAAI7sF,WAAW,GACrBpK,EAAQ,CAAEynG,IAAK,WAAc,OAAO,EAAG,GAG7C,OAFA9nG,OAAO6jG,eAAexjG,EAAOoK,WAAWnK,WACxCN,OAAO6jG,eAAevM,EAAKj3F,GACN,KAAdi3F,EAAIwQ,KACb,CAAE,MAAO/iG,GACP,OAAO,CACT,CACF,CArB6BgjG,GAExBpsG,EAAOksG,qBAA0C,oBAAZG,SACb,mBAAlBA,QAAQjmG,OACjBimG,QAAQjmG,MACN,iJAkBJ/B,OAAO+C,eAAepH,EAAO2E,UAAW,SAAU,CAChD2F,YAAY,EACZC,IAAK,WACH,GAAKvK,EAAO+oG,SAAS9lG,MACrB,OAAOA,KAAK8B,MACd,IAGFV,OAAO+C,eAAepH,EAAO2E,UAAW,SAAU,CAChD2F,YAAY,EACZC,IAAK,WACH,GAAKvK,EAAO+oG,SAAS9lG,MACrB,OAAOA,KAAK0lG,UACd,IAoCF3oG,EAAOssG,SAAW,KA8DlBtsG,EAAO82E,KAAO,SAAU3zE,EAAOglG,EAAkB3jG,GAC/C,OAAOsyE,EAAK3zE,EAAOglG,EAAkB3jG,EACvC,EAIAH,OAAO6jG,eAAeloG,EAAO2E,UAAWmK,WAAWnK,WACnDN,OAAO6jG,eAAeloG,EAAQ8O,YA8B9B9O,EAAO8C,MAAQ,SAAUC,EAAMwpG,EAAM7uF,GACnC,OArBF,SAAgB3a,EAAMwpG,EAAM7uF,GAE1B,OADA0rF,EAAWrmG,GACPA,GAAQ,EACHklG,EAAallG,QAETK,IAATmpG,EAIyB,iBAAb7uF,EACVuqF,EAAallG,GAAMwpG,KAAKA,EAAM7uF,GAC9BuqF,EAAallG,GAAMwpG,KAAKA,GAEvBtE,EAAallG,EACtB,CAOSD,CAAMC,EAAMwpG,EAAM7uF,EAC3B,EAUA1d,EAAOooG,YAAc,SAAUrlG,GAC7B,OAAOqlG,EAAYrlG,EACrB,EAIA/C,EAAOwsG,gBAAkB,SAAUzpG,GACjC,OAAOqlG,EAAYrlG,EACrB,EA6GA/C,EAAO+oG,SAAW,SAAmBtjD,GACnC,OAAY,MAALA,IAA6B,IAAhBA,EAAEgnD,WACpBhnD,IAAMzlD,EAAO2E,SACjB,EAEA3E,EAAOsxC,QAAU,SAAkBkU,EAAGC,GAGpC,GAFIgjD,EAAWjjD,EAAG12C,cAAa02C,EAAIxlD,EAAO82E,KAAKtxB,EAAGA,EAAEvhD,OAAQuhD,EAAEv/C,aAC1DwiG,EAAWhjD,EAAG32C,cAAa22C,EAAIzlD,EAAO82E,KAAKrxB,EAAGA,EAAExhD,OAAQwhD,EAAEx/C,cACzDjG,EAAO+oG,SAASvjD,KAAOxlD,EAAO+oG,SAAStjD,GAC1C,MAAM,IAAIt4C,UACR,yEAIJ,GAAIq4C,IAAMC,EAAG,OAAO,EAEpB,IAAIza,EAAIwa,EAAEhhD,OACN+4F,EAAI93C,EAAEjhD,OAEV,IAAK,IAAIF,EAAI,EAAGy3F,EAAMn0F,KAAK4tC,IAAIxK,EAAGuyD,GAAIj5F,EAAIy3F,IAAOz3F,EAC/C,GAAIkhD,EAAElhD,KAAOmhD,EAAEnhD,GAAI,CACjB0mC,EAAIwa,EAAElhD,GACNi5F,EAAI93C,EAAEnhD,GACN,KACF,CAGF,OAAI0mC,EAAIuyD,GAAW,EACfA,EAAIvyD,EAAU,EACX,CACT,EAEAhrC,EAAOqoG,WAAa,SAAqB3qF,GACvC,OAAQvY,OAAOuY,GAAUnV,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,EAEb,EAEAvI,EAAOmqC,OAAS,SAAiBuiE,EAAMloG,GACrC,IAAKoJ,MAAMC,QAAQ6+F,GACjB,MAAM,IAAIv/F,UAAU,+CAGtB,GAAoB,IAAhBu/F,EAAKloG,OACP,OAAOxE,EAAO8C,MAAM,GAGtB,IAAIwB,EACJ,QAAelB,IAAXoB,EAEF,IADAA,EAAS,EACJF,EAAI,EAAGA,EAAIooG,EAAKloG,SAAUF,EAC7BE,GAAUkoG,EAAKpoG,GAAGE,OAItB,MAAMO,EAAS/E,EAAOooG,YAAY5jG,GAClC,IAAImoG,EAAM,EACV,IAAKroG,EAAI,EAAGA,EAAIooG,EAAKloG,SAAUF,EAAG,CAChC,IAAIkB,EAAMknG,EAAKpoG,GACf,GAAImkG,EAAWjjG,EAAKsJ,YACd69F,EAAMnnG,EAAIhB,OAASO,EAAOP,QACvBxE,EAAO+oG,SAASvjG,KAAMA,EAAMxF,EAAO82E,KAAKtxE,IAC7CA,EAAIG,KAAKZ,EAAQ4nG,IAEjB79F,WAAWnK,UAAUoK,IAAInD,KACvB7G,EACAS,EACAmnG,OAGC,KAAK3sG,EAAO+oG,SAASvjG,GAC1B,MAAM,IAAI2H,UAAU,+CAEpB3H,EAAIG,KAAKZ,EAAQ4nG,EACnB,CACAA,GAAOnnG,EAAIhB,MACb,CACA,OAAOO,CACT,EAiDA/E,EAAOiG,WAAaA,EA8EpBjG,EAAO2E,UAAU8nG,WAAY,EAQ7BzsG,EAAO2E,UAAUioG,OAAS,WACxB,MAAM7Q,EAAM94F,KAAKuB,OACjB,GAAIu3F,EAAM,GAAM,EACd,MAAM,IAAIjqF,WAAW,6CAEvB,IAAK,IAAIxN,EAAI,EAAGA,EAAIy3F,EAAKz3F,GAAK,EAC5B0lG,EAAK/mG,KAAMqB,EAAGA,EAAI,GAEpB,OAAOrB,IACT,EAEAjD,EAAO2E,UAAUkoG,OAAS,WACxB,MAAM9Q,EAAM94F,KAAKuB,OACjB,GAAIu3F,EAAM,GAAM,EACd,MAAM,IAAIjqF,WAAW,6CAEvB,IAAK,IAAIxN,EAAI,EAAGA,EAAIy3F,EAAKz3F,GAAK,EAC5B0lG,EAAK/mG,KAAMqB,EAAGA,EAAI,GAClB0lG,EAAK/mG,KAAMqB,EAAI,EAAGA,EAAI,GAExB,OAAOrB,IACT,EAEAjD,EAAO2E,UAAUmoG,OAAS,WACxB,MAAM/Q,EAAM94F,KAAKuB,OACjB,GAAIu3F,EAAM,GAAM,EACd,MAAM,IAAIjqF,WAAW,6CAEvB,IAAK,IAAIxN,EAAI,EAAGA,EAAIy3F,EAAKz3F,GAAK,EAC5B0lG,EAAK/mG,KAAMqB,EAAGA,EAAI,GAClB0lG,EAAK/mG,KAAMqB,EAAI,EAAGA,EAAI,GACtB0lG,EAAK/mG,KAAMqB,EAAI,EAAGA,EAAI,GACtB0lG,EAAK/mG,KAAMqB,EAAI,EAAGA,EAAI,GAExB,OAAOrB,IACT,EAEAjD,EAAO2E,UAAUF,SAAW,WAC1B,MAAMD,EAASvB,KAAKuB,OACpB,OAAe,IAAXA,EAAqB,GACA,IAArBohB,UAAUphB,OAAqBmlG,EAAU1mG,KAAM,EAAGuB,GAC/CilG,EAAajgG,MAAMvG,KAAM2iB,UAClC,EAEA5lB,EAAO2E,UAAUw1C,eAAiBn6C,EAAO2E,UAAUF,SAEnDzE,EAAO2E,UAAUg/B,OAAS,SAAiB8hB,GACzC,IAAKzlD,EAAO+oG,SAAStjD,GAAI,MAAM,IAAIt4C,UAAU,6BAC7C,OAAIlK,OAASwiD,GACsB,IAA5BzlD,EAAOsxC,QAAQruC,KAAMwiD,EAC9B,EAEAzlD,EAAO2E,UAAUooG,QAAU,WACzB,IAAIzlG,EAAM,GACV,MAAMO,EAAMV,EAAQ4gG,kBAGpB,OAFAzgG,EAAMrE,KAAKwB,SAAS,MAAO,EAAGoD,GAAKsJ,QAAQ,UAAW,OAAOF,OACzDhO,KAAKuB,OAASqD,IAAKP,GAAO,SACvB,WAAaA,EAAM,GAC5B,EACIugG,IACF7nG,EAAO2E,UAAUkjG,GAAuB7nG,EAAO2E,UAAUooG,SAG3D/sG,EAAO2E,UAAU2sC,QAAU,SAAkBlxB,EAAQ3a,EAAOC,EAAKsnG,EAAWC,GAI1E,GAHIxE,EAAWroF,EAAQtR,cACrBsR,EAASpgB,EAAO82E,KAAK12D,EAAQA,EAAOnc,OAAQmc,EAAOna,cAEhDjG,EAAO+oG,SAAS3oF,GACnB,MAAM,IAAIjT,UACR,wFAC2BiT,GAiB/B,QAbchd,IAAVqC,IACFA,EAAQ,QAEErC,IAARsC,IACFA,EAAM0a,EAASA,EAAO5b,OAAS,QAEfpB,IAAd4pG,IACFA,EAAY,QAEE5pG,IAAZ6pG,IACFA,EAAUhqG,KAAKuB,QAGbiB,EAAQ,GAAKC,EAAM0a,EAAO5b,QAAUwoG,EAAY,GAAKC,EAAUhqG,KAAKuB,OACtE,MAAM,IAAIsN,WAAW,sBAGvB,GAAIk7F,GAAaC,GAAWxnG,GAASC,EACnC,OAAO,EAET,GAAIsnG,GAAaC,EACf,OAAQ,EAEV,GAAIxnG,GAASC,EACX,OAAO,EAQT,GAAIzC,OAASmd,EAAQ,OAAO,EAE5B,IAAI4qB,GAJJiiE,KAAa,IADbD,KAAe,GAMXzP,GAPJ73F,KAAS,IADTD,KAAW,GASX,MAAMs2F,EAAMn0F,KAAK4tC,IAAIxK,EAAGuyD,GAElB2P,EAAWjqG,KAAKwE,MAAMulG,EAAWC,GACjCE,EAAa/sF,EAAO3Y,MAAMhC,EAAOC,GAEvC,IAAK,IAAIpB,EAAI,EAAGA,EAAIy3F,IAAOz3F,EACzB,GAAI4oG,EAAS5oG,KAAO6oG,EAAW7oG,GAAI,CACjC0mC,EAAIkiE,EAAS5oG,GACbi5F,EAAI4P,EAAW7oG,GACf,KACF,CAGF,OAAI0mC,EAAIuyD,GAAW,EACfA,EAAIvyD,EAAU,EACX,CACT,EA2HAhrC,EAAO2E,UAAUsa,SAAW,SAAmB0mC,EAAKgjD,EAAYjrF,GAC9D,OAAoD,IAA7Cza,KAAK8J,QAAQ44C,EAAKgjD,EAAYjrF,EACvC,EAEA1d,EAAO2E,UAAUoI,QAAU,SAAkB44C,EAAKgjD,EAAYjrF,GAC5D,OAAOusF,EAAqBhnG,KAAM0iD,EAAKgjD,EAAYjrF,GAAU,EAC/D,EAEA1d,EAAO2E,UAAUgD,YAAc,SAAsBg+C,EAAKgjD,EAAYjrF,GACpE,OAAOusF,EAAqBhnG,KAAM0iD,EAAKgjD,EAAYjrF,GAAU,EAC/D,EA4CA1d,EAAO2E,UAAUiB,MAAQ,SAAgBvC,EAAQY,EAAQO,EAAQkZ,GAE/D,QAAeta,IAAXa,EACFyZ,EAAW,OACXlZ,EAASvB,KAAKuB,OACdP,EAAS,OAEJ,QAAeb,IAAXoB,GAA0C,iBAAXP,EACxCyZ,EAAWzZ,EACXO,EAASvB,KAAKuB,OACdP,EAAS,MAEJ,KAAIytC,SAASztC,GAUlB,MAAM,IAAIe,MACR,2EAVFf,KAAoB,EAChBytC,SAASltC,IACXA,KAAoB,OACHpB,IAAbsa,IAAwBA,EAAW,UAEvCA,EAAWlZ,EACXA,OAASpB,EAMb,CAEA,MAAM2vD,EAAY9vD,KAAKuB,OAASP,EAGhC,SAFeb,IAAXoB,GAAwBA,EAASuuD,KAAWvuD,EAASuuD,GAEpD1vD,EAAOmB,OAAS,IAAMA,EAAS,GAAKP,EAAS,IAAOA,EAAShB,KAAKuB,OACrE,MAAM,IAAIsN,WAAW,0CAGlB4L,IAAUA,EAAW,QAE1B,IAAI4rF,GAAc,EAClB,OACE,OAAQ5rF,GACN,IAAK,MACH,OAAOgtF,EAASznG,KAAMI,EAAQY,EAAQO,GAExC,IAAK,OACL,IAAK,QACH,OAAOomG,EAAU3nG,KAAMI,EAAQY,EAAQO,GAEzC,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOsmG,EAAW7nG,KAAMI,EAAQY,EAAQO,GAE1C,IAAK,SAEH,OAAOymG,EAAYhoG,KAAMI,EAAQY,EAAQO,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO0mG,EAAUjoG,KAAMI,EAAQY,EAAQO,GAEzC,QACE,GAAI8kG,EAAa,MAAM,IAAIn8F,UAAU,qBAAuBuQ,GAC5DA,GAAY,GAAKA,GAAUnV,cAC3B+gG,GAAc,EAGtB,EAEAtpG,EAAO2E,UAAU+iG,OAAS,WACxB,MAAO,CACL/3F,KAAM,SACNkT,KAAMjV,MAAMjJ,UAAU8C,MAAMmE,KAAK3I,KAAKmqG,MAAQnqG,KAAM,GAExD,EAyFA,MAAM8oG,EAAuB,KAoB7B,SAASnC,EAAYpkG,EAAKC,EAAOC,GAC/B,IAAI6yB,EAAM,GACV7yB,EAAMkC,KAAK4tC,IAAIhwC,EAAIhB,OAAQkB,GAE3B,IAAK,IAAIpB,EAAImB,EAAOnB,EAAIoB,IAAOpB,EAC7Bi0B,GAAOpzB,OAAOC,aAAsB,IAATI,EAAIlB,IAEjC,OAAOi0B,CACT,CAEA,SAASsxE,EAAarkG,EAAKC,EAAOC,GAChC,IAAI6yB,EAAM,GACV7yB,EAAMkC,KAAK4tC,IAAIhwC,EAAIhB,OAAQkB,GAE3B,IAAK,IAAIpB,EAAImB,EAAOnB,EAAIoB,IAAOpB,EAC7Bi0B,GAAOpzB,OAAOC,aAAaI,EAAIlB,IAEjC,OAAOi0B,CACT,CAEA,SAASmxE,EAAUlkG,EAAKC,EAAOC,GAC7B,MAAMq2F,EAAMv2F,EAAIhB,SAEXiB,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMq2F,KAAKr2F,EAAMq2F,GAExC,IAAI+E,EAAM,GACV,IAAK,IAAIx8F,EAAImB,EAAOnB,EAAIoB,IAAOpB,EAC7Bw8F,GAAOuM,EAAoB7nG,EAAIlB,IAEjC,OAAOw8F,CACT,CAEA,SAASiJ,EAAcvkG,EAAKC,EAAOC,GACjC,MAAMwL,EAAQ1L,EAAIiC,MAAMhC,EAAOC,GAC/B,IAAIsC,EAAM,GAEV,IAAK,IAAI1D,EAAI,EAAGA,EAAI4M,EAAM1M,OAAS,EAAGF,GAAK,EACzC0D,GAAO7C,OAAOC,aAAa8L,EAAM5M,GAAqB,IAAf4M,EAAM5M,EAAI,IAEnD,OAAO0D,CACT,CAiCA,SAASslG,EAAarpG,EAAQspG,EAAK/oG,GACjC,GAAKP,EAAS,GAAO,GAAKA,EAAS,EAAG,MAAM,IAAI6N,WAAW,sBAC3D,GAAI7N,EAASspG,EAAM/oG,EAAQ,MAAM,IAAIsN,WAAW,wCAClD,CAyQA,SAAS07F,EAAUhoG,EAAKrC,EAAOc,EAAQspG,EAAK1lG,EAAK2tC,GAC/C,IAAKx1C,EAAO+oG,SAASvjG,GAAM,MAAM,IAAI2H,UAAU,+CAC/C,GAAIhK,EAAQ0E,GAAO1E,EAAQqyC,EAAK,MAAM,IAAI1jC,WAAW,qCACrD,GAAI7N,EAASspG,EAAM/nG,EAAIhB,OAAQ,MAAM,IAAIsN,WAAW,qBACtD,CA+FA,SAAS27F,EAAgBjoG,EAAKrC,EAAOc,EAAQuxC,EAAK3tC,GAChD6lG,EAAWvqG,EAAOqyC,EAAK3tC,EAAKrC,EAAKvB,EAAQ,GAEzC,IAAIonG,EAAKtkG,OAAO5D,EAAQwqG,OAAO,aAC/BnoG,EAAIvB,KAAYonG,EAChBA,IAAW,EACX7lG,EAAIvB,KAAYonG,EAChBA,IAAW,EACX7lG,EAAIvB,KAAYonG,EAChBA,IAAW,EACX7lG,EAAIvB,KAAYonG,EAChB,IAAID,EAAKrkG,OAAO5D,GAASwqG,OAAO,IAAMA,OAAO,aAQ7C,OAPAnoG,EAAIvB,KAAYmnG,EAChBA,IAAW,EACX5lG,EAAIvB,KAAYmnG,EAChBA,IAAW,EACX5lG,EAAIvB,KAAYmnG,EAChBA,IAAW,EACX5lG,EAAIvB,KAAYmnG,EACTnnG,CACT,CAEA,SAAS2pG,EAAgBpoG,EAAKrC,EAAOc,EAAQuxC,EAAK3tC,GAChD6lG,EAAWvqG,EAAOqyC,EAAK3tC,EAAKrC,EAAKvB,EAAQ,GAEzC,IAAIonG,EAAKtkG,OAAO5D,EAAQwqG,OAAO,aAC/BnoG,EAAIvB,EAAS,GAAKonG,EAClBA,IAAW,EACX7lG,EAAIvB,EAAS,GAAKonG,EAClBA,IAAW,EACX7lG,EAAIvB,EAAS,GAAKonG,EAClBA,IAAW,EACX7lG,EAAIvB,EAAS,GAAKonG,EAClB,IAAID,EAAKrkG,OAAO5D,GAASwqG,OAAO,IAAMA,OAAO,aAQ7C,OAPAnoG,EAAIvB,EAAS,GAAKmnG,EAClBA,IAAW,EACX5lG,EAAIvB,EAAS,GAAKmnG,EAClBA,IAAW,EACX5lG,EAAIvB,EAAS,GAAKmnG,EAClBA,IAAW,EACX5lG,EAAIvB,GAAUmnG,EACPnnG,EAAS,CAClB,CAkHA,SAAS4pG,EAAcroG,EAAKrC,EAAOc,EAAQspG,EAAK1lG,EAAK2tC,GACnD,GAAIvxC,EAASspG,EAAM/nG,EAAIhB,OAAQ,MAAM,IAAIsN,WAAW,sBACpD,GAAI7N,EAAS,EAAG,MAAM,IAAI6N,WAAW,qBACvC,CAEA,SAASg8F,EAAYtoG,EAAKrC,EAAOc,EAAQ8pG,EAAcC,GAOrD,OANA7qG,GAASA,EACTc,KAAoB,EACf+pG,GACHH,EAAaroG,EAAKrC,EAAOc,EAAQ,GAEnC2jG,EAAQhiG,MAAMJ,EAAKrC,EAAOc,EAAQ8pG,EAAc,GAAI,GAC7C9pG,EAAS,CAClB,CAUA,SAASgqG,EAAazoG,EAAKrC,EAAOc,EAAQ8pG,EAAcC,GAOtD,OANA7qG,GAASA,EACTc,KAAoB,EACf+pG,GACHH,EAAaroG,EAAKrC,EAAOc,EAAQ,GAEnC2jG,EAAQhiG,MAAMJ,EAAKrC,EAAOc,EAAQ8pG,EAAc,GAAI,GAC7C9pG,EAAS,CAClB,CAzkBAjE,EAAO2E,UAAU8C,MAAQ,SAAgBhC,EAAOC,GAC9C,MAAMq2F,EAAM94F,KAAKuB,QACjBiB,IAAUA,GAGE,GACVA,GAASs2F,GACG,IAAGt2F,EAAQ,GACdA,EAAQs2F,IACjBt2F,EAAQs2F,IANVr2F,OAActC,IAARsC,EAAoBq2F,IAAQr2F,GASxB,GACRA,GAAOq2F,GACG,IAAGr2F,EAAM,GACVA,EAAMq2F,IACfr2F,EAAMq2F,GAGJr2F,EAAMD,IAAOC,EAAMD,GAEvB,MAAMyoG,EAASjrG,KAAKkrG,SAAS1oG,EAAOC,GAIpC,OAFArB,OAAO6jG,eAAegG,EAAQluG,EAAO2E,WAE9BupG,CACT,EAUAluG,EAAO2E,UAAUypG,WACjBpuG,EAAO2E,UAAU0pG,WAAa,SAAqBpqG,EAAQgC,EAAY+nG,GACrE/pG,KAAoB,EACpBgC,KAA4B,EACvB+nG,GAAUV,EAAYrpG,EAAQgC,EAAYhD,KAAKuB,QAEpD,IAAImhD,EAAM1iD,KAAKgB,GACX4vD,EAAM,EACNvvD,EAAI,EACR,OAASA,EAAI2B,IAAe4tD,GAAO,MACjClO,GAAO1iD,KAAKgB,EAASK,GAAKuvD,EAG5B,OAAOlO,CACT,EAEA3lD,EAAO2E,UAAU2pG,WACjBtuG,EAAO2E,UAAU4pG,WAAa,SAAqBtqG,EAAQgC,EAAY+nG,GACrE/pG,KAAoB,EACpBgC,KAA4B,EACvB+nG,GACHV,EAAYrpG,EAAQgC,EAAYhD,KAAKuB,QAGvC,IAAImhD,EAAM1iD,KAAKgB,IAAWgC,GACtB4tD,EAAM,EACV,KAAO5tD,EAAa,IAAM4tD,GAAO,MAC/BlO,GAAO1iD,KAAKgB,IAAWgC,GAAc4tD,EAGvC,OAAOlO,CACT,EAEA3lD,EAAO2E,UAAU6pG,UACjBxuG,EAAO2E,UAAU8pG,UAAY,SAAoBxqG,EAAQ+pG,GAGvD,OAFA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QACpCvB,KAAKgB,EACd,EAEAjE,EAAO2E,UAAU+pG,aACjB1uG,EAAO2E,UAAUgqG,aAAe,SAAuB1qG,EAAQ+pG,GAG7D,OAFA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QACpCvB,KAAKgB,GAAWhB,KAAKgB,EAAS,IAAM,CAC7C,EAEAjE,EAAO2E,UAAUiqG,aACjB5uG,EAAO2E,UAAU4lG,aAAe,SAAuBtmG,EAAQ+pG,GAG7D,OAFA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QACnCvB,KAAKgB,IAAW,EAAKhB,KAAKgB,EAAS,EAC7C,EAEAjE,EAAO2E,UAAUkqG,aACjB7uG,EAAO2E,UAAUmqG,aAAe,SAAuB7qG,EAAQ+pG,GAI7D,OAHA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,SAElCvB,KAAKgB,GACThB,KAAKgB,EAAS,IAAM,EACpBhB,KAAKgB,EAAS,IAAM,IACD,SAAnBhB,KAAKgB,EAAS,EACrB,EAEAjE,EAAO2E,UAAUoqG,aACjB/uG,EAAO2E,UAAUqqG,aAAe,SAAuB/qG,EAAQ+pG,GAI7D,OAHA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QAEpB,SAAfvB,KAAKgB,IACThB,KAAKgB,EAAS,IAAM,GACrBhB,KAAKgB,EAAS,IAAM,EACrBhB,KAAKgB,EAAS,GAClB,EAEAjE,EAAO2E,UAAUsqG,gBAAkBC,GAAmB,SAA0BjrG,GAE9EkrG,EADAlrG,KAAoB,EACG,UACvB,MAAMm7C,EAAQn8C,KAAKgB,GACbmrG,EAAOnsG,KAAKgB,EAAS,QACbb,IAAVg8C,QAAgCh8C,IAATgsG,GACzBC,EAAYprG,EAAQhB,KAAKuB,OAAS,GAGpC,MAAM6mG,EAAKjsD,EACQ,IAAjBn8C,OAAOgB,GACU,MAAjBhB,OAAOgB,GACPhB,OAAOgB,GAAU,GAAK,GAElBmnG,EAAKnoG,OAAOgB,GACC,IAAjBhB,OAAOgB,GACU,MAAjBhB,OAAOgB,GACPmrG,EAAO,GAAK,GAEd,OAAOzB,OAAOtC,IAAOsC,OAAOvC,IAAOuC,OAAO,IAC5C,IAEA3tG,EAAO2E,UAAU2qG,gBAAkBJ,GAAmB,SAA0BjrG,GAE9EkrG,EADAlrG,KAAoB,EACG,UACvB,MAAMm7C,EAAQn8C,KAAKgB,GACbmrG,EAAOnsG,KAAKgB,EAAS,QACbb,IAAVg8C,QAAgCh8C,IAATgsG,GACzBC,EAAYprG,EAAQhB,KAAKuB,OAAS,GAGpC,MAAM4mG,EAAKhsD,EAAQ,GAAK,GACL,MAAjBn8C,OAAOgB,GACU,IAAjBhB,OAAOgB,GACPhB,OAAOgB,GAEHonG,EAAKpoG,OAAOgB,GAAU,GAAK,GACd,MAAjBhB,OAAOgB,GACU,IAAjBhB,OAAOgB,GACPmrG,EAEF,OAAQzB,OAAOvC,IAAOuC,OAAO,KAAOA,OAAOtC,EAC7C,IAEArrG,EAAO2E,UAAU4qG,UAAY,SAAoBtrG,EAAQgC,EAAY+nG,GACnE/pG,KAAoB,EACpBgC,KAA4B,EACvB+nG,GAAUV,EAAYrpG,EAAQgC,EAAYhD,KAAKuB,QAEpD,IAAImhD,EAAM1iD,KAAKgB,GACX4vD,EAAM,EACNvvD,EAAI,EACR,OAASA,EAAI2B,IAAe4tD,GAAO,MACjClO,GAAO1iD,KAAKgB,EAASK,GAAKuvD,EAM5B,OAJAA,GAAO,IAEHlO,GAAOkO,IAAKlO,GAAO/9C,KAAK66F,IAAI,EAAG,EAAIx8F,IAEhC0/C,CACT,EAEA3lD,EAAO2E,UAAU6qG,UAAY,SAAoBvrG,EAAQgC,EAAY+nG,GACnE/pG,KAAoB,EACpBgC,KAA4B,EACvB+nG,GAAUV,EAAYrpG,EAAQgC,EAAYhD,KAAKuB,QAEpD,IAAIF,EAAI2B,EACJ4tD,EAAM,EACNlO,EAAM1iD,KAAKgB,IAAWK,GAC1B,KAAOA,EAAI,IAAMuvD,GAAO,MACtBlO,GAAO1iD,KAAKgB,IAAWK,GAAKuvD,EAM9B,OAJAA,GAAO,IAEHlO,GAAOkO,IAAKlO,GAAO/9C,KAAK66F,IAAI,EAAG,EAAIx8F,IAEhC0/C,CACT,EAEA3lD,EAAO2E,UAAU8qG,SAAW,SAAmBxrG,EAAQ+pG,GAGrD,OAFA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QACtB,IAAfvB,KAAKgB,IAC0B,GAA5B,IAAOhB,KAAKgB,GAAU,GADKhB,KAAKgB,EAE3C,EAEAjE,EAAO2E,UAAU+qG,YAAc,SAAsBzrG,EAAQ+pG,GAC3D/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QAC3C,MAAMmhD,EAAM1iD,KAAKgB,GAAWhB,KAAKgB,EAAS,IAAM,EAChD,OAAc,MAAN0hD,EAAsB,WAANA,EAAmBA,CAC7C,EAEA3lD,EAAO2E,UAAUgrG,YAAc,SAAsB1rG,EAAQ+pG,GAC3D/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QAC3C,MAAMmhD,EAAM1iD,KAAKgB,EAAS,GAAMhB,KAAKgB,IAAW,EAChD,OAAc,MAAN0hD,EAAsB,WAANA,EAAmBA,CAC7C,EAEA3lD,EAAO2E,UAAUirG,YAAc,SAAsB3rG,EAAQ+pG,GAI3D,OAHA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QAEnCvB,KAAKgB,GACVhB,KAAKgB,EAAS,IAAM,EACpBhB,KAAKgB,EAAS,IAAM,GACpBhB,KAAKgB,EAAS,IAAM,EACzB,EAEAjE,EAAO2E,UAAUkrG,YAAc,SAAsB5rG,EAAQ+pG,GAI3D,OAHA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QAEnCvB,KAAKgB,IAAW,GACrBhB,KAAKgB,EAAS,IAAM,GACpBhB,KAAKgB,EAAS,IAAM,EACpBhB,KAAKgB,EAAS,EACnB,EAEAjE,EAAO2E,UAAUmrG,eAAiBZ,GAAmB,SAAyBjrG,GAE5EkrG,EADAlrG,KAAoB,EACG,UACvB,MAAMm7C,EAAQn8C,KAAKgB,GACbmrG,EAAOnsG,KAAKgB,EAAS,QACbb,IAAVg8C,QAAgCh8C,IAATgsG,GACzBC,EAAYprG,EAAQhB,KAAKuB,OAAS,GAGpC,MAAMmhD,EAAM1iD,KAAKgB,EAAS,GACL,IAAnBhB,KAAKgB,EAAS,GACK,MAAnBhB,KAAKgB,EAAS,IACbmrG,GAAQ,IAEX,OAAQzB,OAAOhoD,IAAQgoD,OAAO,KAC5BA,OAAOvuD,EACU,IAAjBn8C,OAAOgB,GACU,MAAjBhB,OAAOgB,GACPhB,OAAOgB,GAAU,GAAK,GAC1B,IAEAjE,EAAO2E,UAAUorG,eAAiBb,GAAmB,SAAyBjrG,GAE5EkrG,EADAlrG,KAAoB,EACG,UACvB,MAAMm7C,EAAQn8C,KAAKgB,GACbmrG,EAAOnsG,KAAKgB,EAAS,QACbb,IAAVg8C,QAAgCh8C,IAATgsG,GACzBC,EAAYprG,EAAQhB,KAAKuB,OAAS,GAGpC,MAAMmhD,GAAOvG,GAAS,IACH,MAAjBn8C,OAAOgB,GACU,IAAjBhB,OAAOgB,GACPhB,OAAOgB,GAET,OAAQ0pG,OAAOhoD,IAAQgoD,OAAO,KAC5BA,OAAO1qG,OAAOgB,GAAU,GAAK,GACZ,MAAjBhB,OAAOgB,GACU,IAAjBhB,OAAOgB,GACPmrG,EACJ,IAEApvG,EAAO2E,UAAUqrG,YAAc,SAAsB/rG,EAAQ+pG,GAG3D,OAFA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QACpCojG,EAAQhlF,KAAK3f,KAAMgB,GAAQ,EAAM,GAAI,EAC9C,EAEAjE,EAAO2E,UAAUsrG,YAAc,SAAsBhsG,EAAQ+pG,GAG3D,OAFA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QACpCojG,EAAQhlF,KAAK3f,KAAMgB,GAAQ,EAAO,GAAI,EAC/C,EAEAjE,EAAO2E,UAAUurG,aAAe,SAAuBjsG,EAAQ+pG,GAG7D,OAFA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QACpCojG,EAAQhlF,KAAK3f,KAAMgB,GAAQ,EAAM,GAAI,EAC9C,EAEAjE,EAAO2E,UAAUwrG,aAAe,SAAuBlsG,EAAQ+pG,GAG7D,OAFA/pG,KAAoB,EACf+pG,GAAUV,EAAYrpG,EAAQ,EAAGhB,KAAKuB,QACpCojG,EAAQhlF,KAAK3f,KAAMgB,GAAQ,EAAO,GAAI,EAC/C,EAQAjE,EAAO2E,UAAUyrG,YACjBpwG,EAAO2E,UAAU0rG,YAAc,SAAsBltG,EAAOc,EAAQgC,EAAY+nG,GAC9E7qG,GAASA,EACTc,KAAoB,EACpBgC,KAA4B,EACvB+nG,GAEHR,EAASvqG,KAAME,EAAOc,EAAQgC,EADb2B,KAAK66F,IAAI,EAAG,EAAIx8F,GAAc,EACK,GAGtD,IAAI4tD,EAAM,EACNvvD,EAAI,EAER,IADArB,KAAKgB,GAAkB,IAARd,IACNmB,EAAI2B,IAAe4tD,GAAO,MACjC5wD,KAAKgB,EAASK,GAAMnB,EAAQ0wD,EAAO,IAGrC,OAAO5vD,EAASgC,CAClB,EAEAjG,EAAO2E,UAAU2rG,YACjBtwG,EAAO2E,UAAU4rG,YAAc,SAAsBptG,EAAOc,EAAQgC,EAAY+nG,GAC9E7qG,GAASA,EACTc,KAAoB,EACpBgC,KAA4B,EACvB+nG,GAEHR,EAASvqG,KAAME,EAAOc,EAAQgC,EADb2B,KAAK66F,IAAI,EAAG,EAAIx8F,GAAc,EACK,GAGtD,IAAI3B,EAAI2B,EAAa,EACjB4tD,EAAM,EAEV,IADA5wD,KAAKgB,EAASK,GAAa,IAARnB,IACVmB,GAAK,IAAMuvD,GAAO,MACzB5wD,KAAKgB,EAASK,GAAMnB,EAAQ0wD,EAAO,IAGrC,OAAO5vD,EAASgC,CAClB,EAEAjG,EAAO2E,UAAU6rG,WACjBxwG,EAAO2E,UAAU8rG,WAAa,SAAqBttG,EAAOc,EAAQ+pG,GAKhE,OAJA7qG,GAASA,EACTc,KAAoB,EACf+pG,GAAUR,EAASvqG,KAAME,EAAOc,EAAQ,EAAG,IAAM,GACtDhB,KAAKgB,GAAmB,IAARd,EACTc,EAAS,CAClB,EAEAjE,EAAO2E,UAAU+rG,cACjB1wG,EAAO2E,UAAUgsG,cAAgB,SAAwBxtG,EAAOc,EAAQ+pG,GAMtE,OALA7qG,GAASA,EACTc,KAAoB,EACf+pG,GAAUR,EAASvqG,KAAME,EAAOc,EAAQ,EAAG,MAAQ,GACxDhB,KAAKgB,GAAmB,IAARd,EAChBF,KAAKgB,EAAS,GAAMd,IAAU,EACvBc,EAAS,CAClB,EAEAjE,EAAO2E,UAAUisG,cACjB5wG,EAAO2E,UAAUksG,cAAgB,SAAwB1tG,EAAOc,EAAQ+pG,GAMtE,OALA7qG,GAASA,EACTc,KAAoB,EACf+pG,GAAUR,EAASvqG,KAAME,EAAOc,EAAQ,EAAG,MAAQ,GACxDhB,KAAKgB,GAAWd,IAAU,EAC1BF,KAAKgB,EAAS,GAAc,IAARd,EACbc,EAAS,CAClB,EAEAjE,EAAO2E,UAAUmsG,cACjB9wG,EAAO2E,UAAUosG,cAAgB,SAAwB5tG,EAAOc,EAAQ+pG,GAQtE,OAPA7qG,GAASA,EACTc,KAAoB,EACf+pG,GAAUR,EAASvqG,KAAME,EAAOc,EAAQ,EAAG,WAAY,GAC5DhB,KAAKgB,EAAS,GAAMd,IAAU,GAC9BF,KAAKgB,EAAS,GAAMd,IAAU,GAC9BF,KAAKgB,EAAS,GAAMd,IAAU,EAC9BF,KAAKgB,GAAmB,IAARd,EACTc,EAAS,CAClB,EAEAjE,EAAO2E,UAAUqsG,cACjBhxG,EAAO2E,UAAUssG,cAAgB,SAAwB9tG,EAAOc,EAAQ+pG,GAQtE,OAPA7qG,GAASA,EACTc,KAAoB,EACf+pG,GAAUR,EAASvqG,KAAME,EAAOc,EAAQ,EAAG,WAAY,GAC5DhB,KAAKgB,GAAWd,IAAU,GAC1BF,KAAKgB,EAAS,GAAMd,IAAU,GAC9BF,KAAKgB,EAAS,GAAMd,IAAU,EAC9BF,KAAKgB,EAAS,GAAc,IAARd,EACbc,EAAS,CAClB,EA8CAjE,EAAO2E,UAAUusG,iBAAmBhC,GAAmB,SAA2B/rG,EAAOc,EAAS,GAChG,OAAOwpG,EAAexqG,KAAME,EAAOc,EAAQ0pG,OAAO,GAAIA,OAAO,sBAC/D,IAEA3tG,EAAO2E,UAAUwsG,iBAAmBjC,GAAmB,SAA2B/rG,EAAOc,EAAS,GAChG,OAAO2pG,EAAe3qG,KAAME,EAAOc,EAAQ0pG,OAAO,GAAIA,OAAO,sBAC/D,IAEA3tG,EAAO2E,UAAUysG,WAAa,SAAqBjuG,EAAOc,EAAQgC,EAAY+nG,GAG5E,GAFA7qG,GAASA,EACTc,KAAoB,GACf+pG,EAAU,CACb,MAAM1vF,EAAQ1W,KAAK66F,IAAI,EAAI,EAAIx8F,EAAc,GAE7CunG,EAASvqG,KAAME,EAAOc,EAAQgC,EAAYqY,EAAQ,GAAIA,EACxD,CAEA,IAAIha,EAAI,EACJuvD,EAAM,EACNswB,EAAM,EAEV,IADAlhF,KAAKgB,GAAkB,IAARd,IACNmB,EAAI2B,IAAe4tD,GAAO,MAC7B1wD,EAAQ,GAAa,IAARghF,GAAsC,IAAzBlhF,KAAKgB,EAASK,EAAI,KAC9C6/E,EAAM,GAERlhF,KAAKgB,EAASK,IAAOnB,EAAQ0wD,EAAQ,GAAKswB,EAAM,IAGlD,OAAOlgF,EAASgC,CAClB,EAEAjG,EAAO2E,UAAU0sG,WAAa,SAAqBluG,EAAOc,EAAQgC,EAAY+nG,GAG5E,GAFA7qG,GAASA,EACTc,KAAoB,GACf+pG,EAAU,CACb,MAAM1vF,EAAQ1W,KAAK66F,IAAI,EAAI,EAAIx8F,EAAc,GAE7CunG,EAASvqG,KAAME,EAAOc,EAAQgC,EAAYqY,EAAQ,GAAIA,EACxD,CAEA,IAAIha,EAAI2B,EAAa,EACjB4tD,EAAM,EACNswB,EAAM,EAEV,IADAlhF,KAAKgB,EAASK,GAAa,IAARnB,IACVmB,GAAK,IAAMuvD,GAAO,MACrB1wD,EAAQ,GAAa,IAARghF,GAAsC,IAAzBlhF,KAAKgB,EAASK,EAAI,KAC9C6/E,EAAM,GAERlhF,KAAKgB,EAASK,IAAOnB,EAAQ0wD,EAAQ,GAAKswB,EAAM,IAGlD,OAAOlgF,EAASgC,CAClB,EAEAjG,EAAO2E,UAAU2sG,UAAY,SAAoBnuG,EAAOc,EAAQ+pG,GAM9D,OALA7qG,GAASA,EACTc,KAAoB,EACf+pG,GAAUR,EAASvqG,KAAME,EAAOc,EAAQ,EAAG,KAAO,KACnDd,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCF,KAAKgB,GAAmB,IAARd,EACTc,EAAS,CAClB,EAEAjE,EAAO2E,UAAU4sG,aAAe,SAAuBpuG,EAAOc,EAAQ+pG,GAMpE,OALA7qG,GAASA,EACTc,KAAoB,EACf+pG,GAAUR,EAASvqG,KAAME,EAAOc,EAAQ,EAAG,OAAS,OACzDhB,KAAKgB,GAAmB,IAARd,EAChBF,KAAKgB,EAAS,GAAMd,IAAU,EACvBc,EAAS,CAClB,EAEAjE,EAAO2E,UAAU6sG,aAAe,SAAuBruG,EAAOc,EAAQ+pG,GAMpE,OALA7qG,GAASA,EACTc,KAAoB,EACf+pG,GAAUR,EAASvqG,KAAME,EAAOc,EAAQ,EAAG,OAAS,OACzDhB,KAAKgB,GAAWd,IAAU,EAC1BF,KAAKgB,EAAS,GAAc,IAARd,EACbc,EAAS,CAClB,EAEAjE,EAAO2E,UAAU8sG,aAAe,SAAuBtuG,EAAOc,EAAQ+pG,GAQpE,OAPA7qG,GAASA,EACTc,KAAoB,EACf+pG,GAAUR,EAASvqG,KAAME,EAAOc,EAAQ,EAAG,YAAa,YAC7DhB,KAAKgB,GAAmB,IAARd,EAChBF,KAAKgB,EAAS,GAAMd,IAAU,EAC9BF,KAAKgB,EAAS,GAAMd,IAAU,GAC9BF,KAAKgB,EAAS,GAAMd,IAAU,GACvBc,EAAS,CAClB,EAEAjE,EAAO2E,UAAU+sG,aAAe,SAAuBvuG,EAAOc,EAAQ+pG,GASpE,OARA7qG,GAASA,EACTc,KAAoB,EACf+pG,GAAUR,EAASvqG,KAAME,EAAOc,EAAQ,EAAG,YAAa,YACzDd,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5CF,KAAKgB,GAAWd,IAAU,GAC1BF,KAAKgB,EAAS,GAAMd,IAAU,GAC9BF,KAAKgB,EAAS,GAAMd,IAAU,EAC9BF,KAAKgB,EAAS,GAAc,IAARd,EACbc,EAAS,CAClB,EAEAjE,EAAO2E,UAAUgtG,gBAAkBzC,GAAmB,SAA0B/rG,EAAOc,EAAS,GAC9F,OAAOwpG,EAAexqG,KAAME,EAAOc,GAAS0pG,OAAO,sBAAuBA,OAAO,sBACnF,IAEA3tG,EAAO2E,UAAUitG,gBAAkB1C,GAAmB,SAA0B/rG,EAAOc,EAAS,GAC9F,OAAO2pG,EAAe3qG,KAAME,EAAOc,GAAS0pG,OAAO,sBAAuBA,OAAO,sBACnF,IAiBA3tG,EAAO2E,UAAUktG,aAAe,SAAuB1uG,EAAOc,EAAQ+pG,GACpE,OAAOF,EAAW7qG,KAAME,EAAOc,GAAQ,EAAM+pG,EAC/C,EAEAhuG,EAAO2E,UAAUmtG,aAAe,SAAuB3uG,EAAOc,EAAQ+pG,GACpE,OAAOF,EAAW7qG,KAAME,EAAOc,GAAQ,EAAO+pG,EAChD,EAYAhuG,EAAO2E,UAAUotG,cAAgB,SAAwB5uG,EAAOc,EAAQ+pG,GACtE,OAAOC,EAAYhrG,KAAME,EAAOc,GAAQ,EAAM+pG,EAChD,EAEAhuG,EAAO2E,UAAUqtG,cAAgB,SAAwB7uG,EAAOc,EAAQ+pG,GACtE,OAAOC,EAAYhrG,KAAME,EAAOc,GAAQ,EAAO+pG,EACjD,EAGAhuG,EAAO2E,UAAUgB,KAAO,SAAeya,EAAQ6xF,EAAaxsG,EAAOC,GACjE,IAAK1F,EAAO+oG,SAAS3oF,GAAS,MAAM,IAAIjT,UAAU,+BAQlD,GAPK1H,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMzC,KAAKuB,QAC9BytG,GAAe7xF,EAAO5b,SAAQytG,EAAc7xF,EAAO5b,QAClDytG,IAAaA,EAAc,GAC5BvsG,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlB2a,EAAO5b,QAAgC,IAAhBvB,KAAKuB,OAAc,OAAO,EAGrD,GAAIytG,EAAc,EAChB,MAAM,IAAIngG,WAAW,6BAEvB,GAAIrM,EAAQ,GAAKA,GAASxC,KAAKuB,OAAQ,MAAM,IAAIsN,WAAW,sBAC5D,GAAIpM,EAAM,EAAG,MAAM,IAAIoM,WAAW,2BAG9BpM,EAAMzC,KAAKuB,SAAQkB,EAAMzC,KAAKuB,QAC9B4b,EAAO5b,OAASytG,EAAcvsG,EAAMD,IACtCC,EAAM0a,EAAO5b,OAASytG,EAAcxsG,GAGtC,MAAMs2F,EAAMr2F,EAAMD,EAalB,OAXIxC,OAASmd,GAAqD,mBAApCtR,WAAWnK,UAAUutG,WAEjDjvG,KAAKivG,WAAWD,EAAaxsG,EAAOC,GAEpCoJ,WAAWnK,UAAUoK,IAAInD,KACvBwU,EACAnd,KAAKkrG,SAAS1oG,EAAOC,GACrBusG,GAIGlW,CACT,EAMA/7F,EAAO2E,UAAU4nG,KAAO,SAAe5mD,EAAKlgD,EAAOC,EAAKgY,GAEtD,GAAmB,iBAARioC,EAAkB,CAS3B,GARqB,iBAAVlgD,GACTiY,EAAWjY,EACXA,EAAQ,EACRC,EAAMzC,KAAKuB,QACa,iBAARkB,IAChBgY,EAAWhY,EACXA,EAAMzC,KAAKuB,aAEIpB,IAAbsa,GAA8C,iBAAbA,EACnC,MAAM,IAAIvQ,UAAU,6BAEtB,GAAwB,iBAAbuQ,IAA0B1d,EAAOqoG,WAAW3qF,GACrD,MAAM,IAAIvQ,UAAU,qBAAuBuQ,GAE7C,GAAmB,IAAfioC,EAAInhD,OAAc,CACpB,MAAML,EAAOwhD,EAAIrjD,WAAW,IACV,SAAbob,GAAuBvZ,EAAO,KAClB,WAAbuZ,KAEFioC,EAAMxhD,EAEV,CACF,KAA0B,iBAARwhD,EAChBA,GAAY,IACY,kBAARA,IAChBA,EAAM5+C,OAAO4+C,IAIf,GAAIlgD,EAAQ,GAAKxC,KAAKuB,OAASiB,GAASxC,KAAKuB,OAASkB,EACpD,MAAM,IAAIoM,WAAW,sBAGvB,GAAIpM,GAAOD,EACT,OAAOxC,KAQT,IAAIqB,EACJ,GANAmB,KAAkB,EAClBC,OAActC,IAARsC,EAAoBzC,KAAKuB,OAASkB,IAAQ,EAE3CigD,IAAKA,EAAM,GAGG,iBAARA,EACT,IAAKrhD,EAAImB,EAAOnB,EAAIoB,IAAOpB,EACzBrB,KAAKqB,GAAKqhD,MAEP,CACL,MAAMz0C,EAAQlR,EAAO+oG,SAASpjD,GAC1BA,EACA3lD,EAAO82E,KAAKnxB,EAAKjoC,GACfq+E,EAAM7qF,EAAM1M,OAClB,GAAY,IAARu3F,EACF,MAAM,IAAI5uF,UAAU,cAAgBw4C,EAClC,qCAEJ,IAAKrhD,EAAI,EAAGA,EAAIoB,EAAMD,IAASnB,EAC7BrB,KAAKqB,EAAImB,GAASyL,EAAM5M,EAAIy3F,EAEhC,CAEA,OAAO94F,IACT,EAMA,MAAMinF,EAAS,CAAC,EAChB,SAASve,EAAGwmC,EAAKC,EAAYC,GAC3BnoB,EAAOioB,GAAO,cAAwBE,EACpC,WAAApgG,GACEqQ,QAEAje,OAAO+C,eAAenE,KAAM,UAAW,CACrCE,MAAOivG,EAAW5oG,MAAMvG,KAAM2iB,WAC9Bra,UAAU,EACVC,cAAc,IAIhBvI,KAAKgK,KAAO,GAAGhK,KAAKgK,SAASklG,KAG7BlvG,KAAKW,aAEEX,KAAKgK,IACd,CAEA,QAAI9I,GACF,OAAOguG,CACT,CAEA,QAAIhuG,CAAMhB,GACRkB,OAAO+C,eAAenE,KAAM,OAAQ,CAClCuI,cAAc,EACdlB,YAAY,EACZnH,QACAoI,UAAU,GAEd,CAEA,QAAA9G,GACE,MAAO,GAAGxB,KAAKgK,SAASklG,OAASlvG,KAAK+O,SACxC,EAEJ,CA+BA,SAASsgG,EAAuB3sD,GAC9B,IAAI39C,EAAM,GACN1D,EAAIqhD,EAAInhD,OACZ,MAAMiB,EAAmB,MAAXkgD,EAAI,GAAa,EAAI,EACnC,KAAOrhD,GAAKmB,EAAQ,EAAGnB,GAAK,EAC1B0D,EAAM,IAAI29C,EAAIl+C,MAAMnD,EAAI,EAAGA,KAAK0D,IAElC,MAAO,GAAG29C,EAAIl+C,MAAM,EAAGnD,KAAK0D,GAC9B,CAYA,SAAS0lG,EAAYvqG,EAAOqyC,EAAK3tC,EAAKrC,EAAKvB,EAAQgC,GACjD,GAAI9C,EAAQ0E,GAAO1E,EAAQqyC,EAAK,CAC9B,MAAM3vC,EAAmB,iBAAR2vC,EAAmB,IAAM,GAC1C,IAAI0vC,EAWJ,MARIA,EAFAj/E,EAAa,EACH,IAARuvC,GAAaA,IAAQm4D,OAAO,GACtB,OAAO9nG,YAAYA,QAA2B,GAAlBI,EAAa,KAASJ,IAElD,SAASA,QAA2B,GAAlBI,EAAa,GAAS,IAAIJ,iBACtB,GAAlBI,EAAa,GAAS,IAAIJ,IAGhC,MAAM2vC,IAAM3vC,YAAYgC,IAAMhC,IAElC,IAAIqkF,EAAOqoB,iBAAiB,QAASrtB,EAAO/hF,EACpD,EAtBF,SAAsBqC,EAAKvB,EAAQgC,GACjCkpG,EAAelrG,EAAQ,eACHb,IAAhBoC,EAAIvB,SAAsDb,IAA7BoC,EAAIvB,EAASgC,IAC5CopG,EAAYprG,EAAQuB,EAAIhB,QAAUyB,EAAa,GAEnD,CAkBEusG,CAAYhtG,EAAKvB,EAAQgC,EAC3B,CAEA,SAASkpG,EAAgBhsG,EAAO8J,GAC9B,GAAqB,iBAAV9J,EACT,MAAM,IAAI+mF,EAAOuoB,qBAAqBxlG,EAAM,SAAU9J,EAE1D,CAEA,SAASksG,EAAalsG,EAAOqB,EAAQmL,GACnC,GAAI/H,KAAKk+E,MAAM3iF,KAAWA,EAExB,MADAgsG,EAAehsG,EAAOwM,GAChB,IAAIu6E,EAAOqoB,iBAAiB5iG,GAAQ,SAAU,aAAcxM,GAGpE,GAAIqB,EAAS,EACX,MAAM,IAAI0lF,EAAOwoB,yBAGnB,MAAM,IAAIxoB,EAAOqoB,iBAAiB5iG,GAAQ,SACR,MAAMA,EAAO,EAAI,YAAYnL,IAC7BrB,EACpC,CAvFAwoE,EAAE,4BACA,SAAU1+D,GACR,OAAIA,EACK,GAAGA,gCAGL,gDACT,GAAG6E,YACL65D,EAAE,wBACA,SAAU1+D,EAAMq7F,GACd,MAAO,QAAQr7F,4DAA+Dq7F,GAChF,GAAGn7F,WACLw+D,EAAE,oBACA,SAAUrkE,EAAK49E,EAAOx0E,GACpB,IAAI0N,EAAM,iBAAiB9W,sBACvBqrG,EAAWjiG,EAWf,OAVI3J,OAAO89F,UAAUn0F,IAAU9I,KAAK49E,IAAI90E,GAAS,GAAK,GACpDiiG,EAAWL,EAAsBntG,OAAOuL,IACd,iBAAVA,IAChBiiG,EAAWxtG,OAAOuL,IACdA,EAAQi9F,OAAO,IAAMA,OAAO,KAAOj9F,IAAUi9F,OAAO,IAAMA,OAAO,QACnEgF,EAAWL,EAAsBK,IAEnCA,GAAY,KAEdv0F,GAAO,eAAe8mE,eAAmBytB,IAClCv0F,CACT,GAAGtM,YAiEL,MAAM8gG,EAAoB,oBAgB1B,SAASrJ,EAAalmG,EAAQ8nG,GAE5B,IAAIK,EADJL,EAAQA,GAAS0H,IAEjB,MAAMruG,EAASnB,EAAOmB,OACtB,IAAIsuG,EAAgB,KACpB,MAAM5hG,EAAQ,GAEd,IAAK,IAAI5M,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAI/B,GAHAknG,EAAYnoG,EAAOf,WAAWgC,GAG1BknG,EAAY,OAAUA,EAAY,MAAQ,CAE5C,IAAKsH,EAAe,CAElB,GAAItH,EAAY,MAAQ,EAEjBL,GAAS,IAAM,GAAGj6F,EAAM1K,KAAK,IAAM,IAAM,KAC9C,QACF,CAAO,GAAIlC,EAAI,IAAME,EAAQ,EAEtB2mG,GAAS,IAAM,GAAGj6F,EAAM1K,KAAK,IAAM,IAAM,KAC9C,QACF,CAGAssG,EAAgBtH,EAEhB,QACF,CAGA,GAAIA,EAAY,MAAQ,EACjBL,GAAS,IAAM,GAAGj6F,EAAM1K,KAAK,IAAM,IAAM,KAC9CssG,EAAgBtH,EAChB,QACF,CAGAA,EAAkE,OAArDsH,EAAgB,OAAU,GAAKtH,EAAY,MAC1D,MAAWsH,IAEJ3H,GAAS,IAAM,GAAGj6F,EAAM1K,KAAK,IAAM,IAAM,KAMhD,GAHAssG,EAAgB,KAGZtH,EAAY,IAAM,CACpB,IAAKL,GAAS,GAAK,EAAG,MACtBj6F,EAAM1K,KAAKglG,EACb,MAAO,GAAIA,EAAY,KAAO,CAC5B,IAAKL,GAAS,GAAK,EAAG,MACtBj6F,EAAM1K,KACJglG,GAAa,EAAM,IACP,GAAZA,EAAmB,IAEvB,MAAO,GAAIA,EAAY,MAAS,CAC9B,IAAKL,GAAS,GAAK,EAAG,MACtBj6F,EAAM1K,KACJglG,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAEvB,KAAO,MAAIA,EAAY,SASrB,MAAM,IAAIxmG,MAAM,sBARhB,IAAKmmG,GAAS,GAAK,EAAG,MACtBj6F,EAAM1K,KACJglG,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAIvB,CACF,CAEA,OAAOt6F,CACT,CA2BA,SAASs4F,EAAeliG,GACtB,OAAOqgG,EAAOlM,YAxHhB,SAAsBn0F,GAMpB,IAFAA,GAFAA,EAAMA,EAAIW,MAAM,KAAK,IAEXgJ,OAAOE,QAAQyhG,EAAmB,KAEpCpuG,OAAS,EAAG,MAAO,GAE3B,KAAO8C,EAAI9C,OAAS,GAAM,GACxB8C,GAAY,IAEd,OAAOA,CACT,CA4G4ByrG,CAAYzrG,GACxC,CAEA,SAASujG,EAAYvpE,EAAK0xE,EAAK/uG,EAAQO,GACrC,IAAIF,EACJ,IAAKA,EAAI,EAAGA,EAAIE,KACTF,EAAIL,GAAU+uG,EAAIxuG,QAAYF,GAAKg9B,EAAI98B,UADpBF,EAExB0uG,EAAI1uG,EAAIL,GAAUq9B,EAAIh9B,GAExB,OAAOA,CACT,CAKA,SAASmkG,EAAY37F,EAAK6C,GACxB,OAAO7C,aAAe6C,GACZ,MAAP7C,GAAkC,MAAnBA,EAAImF,aAA+C,MAAxBnF,EAAImF,YAAYhF,MACzDH,EAAImF,YAAYhF,OAAS0C,EAAK1C,IACpC,CACA,SAASg8F,EAAan8F,GAEpB,OAAOA,GAAQA,CACjB,CAIA,MAAMugG,EAAsB,WAC1B,MAAMvN,EAAW,mBACXmT,EAAQ,IAAIrlG,MAAM,KACxB,IAAK,IAAItJ,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,MAAM4uG,EAAU,GAAJ5uG,EACZ,IAAK,IAAIyB,EAAI,EAAGA,EAAI,KAAMA,EACxBktG,EAAMC,EAAMntG,GAAK+5F,EAASx7F,GAAKw7F,EAAS/5F,EAE5C,CACA,OAAOktG,CACR,CAV2B,GAa5B,SAAS/D,EAAoBhyC,GAC3B,MAAyB,oBAAXywC,OAAyBwF,EAAyBj2C,CAClE,CAEA,SAASi2C,IACP,MAAM,IAAInuG,MAAM,uBAClB,0BCrjEAkC,EAAOC,QAAU,SAASisG,EAAWnlF,GACnC,GAAsB,iBAAXA,GAAuBjnB,MAAMinB,GACtC,MAAM,IAAIjpB,MAAM,sBAGlB,GAAsB,iBAAXipB,IAAwByjB,SAASzjB,GAC1C,MAAM,IAAIjpB,MAAM,2BAGlB,OAAe,OAAXipB,GAAqC,iBAAXA,EACrBhpB,KAAKC,UAAU+oB,GAGpBA,EAAOy5E,kBAAkB2L,SACpBD,EAAUnlF,EAAOy5E,UAGtB95F,MAAMC,QAAQogB,GAMT,IALQA,EAAOgS,QAAO,CAAC0lE,EAAG2N,EAAIC,IAG5B,GAAG5N,IAFW,IAAP4N,EAAW,GAAK,MAERH,OADDhwG,IAAPkwG,GAAkC,iBAAPA,EAAkB,KAAOA,MAEjE,OAYE,IARQjvG,OAAOD,KAAK6pB,GAAQujB,OAAOvR,QAAO,CAAC0lE,EAAG2N,SAChClwG,IAAf6qB,EAAOqlF,IACe,iBAAfrlF,EAAOqlF,GACT3N,EAGF,GAAGA,IADiB,IAAbA,EAAEnhG,OAAe,GAAK,MACd4uG,EAAUE,MAAOF,EAAUnlF,EAAOqlF,OACvD,MAEL,8BCtCAjvG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQg1D,2BAAwB,EAOhCh1D,EAAQg1D,sBANR,SAA+B94C,EAAOvc,GAClC,OAAO,IAAIgC,SAAQ,CAACC,EAASC,KACzBqa,EAAMrF,GAAG,OAAO,IAAMjV,EAAQjC,KAC9Buc,EAAMrF,GAAG,QAAShV,EAAO,GAEjC,0BCeA,IAOIwqG,EAPAC,EAAuB,iBAAZC,QAAuBA,QAAU,KAC5CC,EAAeF,GAAwB,mBAAZA,EAAEjqG,MAC7BiqG,EAAEjqG,MACF,SAAsB4W,EAAQwzF,EAAUlsG,GACxC,OAAO2rG,SAAS1uG,UAAU6E,MAAMoC,KAAKwU,EAAQwzF,EAAUlsG,EACzD,EAIA8rG,EADEC,GAA0B,mBAAdA,EAAEI,QACCJ,EAAEI,QACVxvG,OAAOyvG,sBACC,SAAwB1zF,GACvC,OAAO/b,OAAO0J,oBAAoBqS,GAC/B+pB,OAAO9lC,OAAOyvG,sBAAsB1zF,GACzC,EAEiB,SAAwBA,GACvC,OAAO/b,OAAO0J,oBAAoBqS,EACpC,EAOF,IAAI2zF,EAAchtG,OAAOC,OAAS,SAAqB7D,GACrD,OAAOA,GAAUA,CACnB,EAEA,SAAS6wG,IACPA,EAAa9hG,KAAKtG,KAAK3I,KACzB,CACAiE,EAAOC,QAAU6sG,EACjB9sG,EAAOC,QAAQu1D,KAwYf,SAAcu3C,EAAShnG,GACrB,OAAO,IAAInE,SAAQ,SAAUC,EAASC,GACpC,SAASkrG,EAAcrvG,GACrBovG,EAAQtyC,eAAe10D,EAAMknG,GAC7BnrG,EAAOnE,EACT,CAEA,SAASsvG,IAC+B,mBAA3BF,EAAQtyC,gBACjBsyC,EAAQtyC,eAAe,QAASuyC,GAElCnrG,EAAQ,GAAGtB,MAAMmE,KAAKga,WACxB,CAEAwuF,EAA+BH,EAAShnG,EAAMknG,EAAU,CAAEz3C,MAAM,IACnD,UAATzvD,GAMR,SAAuCgnG,EAASh2F,EAASonE,GAC7B,mBAAf4uB,EAAQj2F,IACjBo2F,EAA+BH,EAAS,QAASh2F,EAPO,CAAEy+C,MAAM,GASpE,CATM23C,CAA8BJ,EAASC,EAE3C,GACF,EAxZAF,EAAaA,aAAeA,EAE5BA,EAAarvG,UAAU2vG,aAAUlxG,EACjC4wG,EAAarvG,UAAU4vG,aAAe,EACtCP,EAAarvG,UAAU6vG,mBAAgBpxG,EAIvC,IAAIqxG,EAAsB,GAE1B,SAASC,EAAcppD,GACrB,GAAwB,mBAAbA,EACT,MAAM,IAAIn+C,UAAU,0EAA4Em+C,EAEpG,CAoCA,SAASqpD,EAAiBC,GACxB,YAA2BxxG,IAAvBwxG,EAAKJ,cACAR,EAAaS,oBACfG,EAAKJ,aACd,CAkDA,SAASK,EAAaz0F,EAAQzQ,EAAM27C,EAAU/W,GAC5C,IAAIrpC,EACA4pG,EACAC,EA1HsBC,EAgJ1B,GApBAN,EAAcppD,QAGCloD,KADf0xG,EAAS10F,EAAOk0F,UAEdQ,EAAS10F,EAAOk0F,QAAUjwG,OAAO2G,OAAO,MACxCoV,EAAOm0F,aAAe,SAIKnxG,IAAvB0xG,EAAOG,cACT70F,EAAOzZ,KAAK,cAAegJ,EACf27C,EAASA,SAAWA,EAASA,SAAWA,GAIpDwpD,EAAS10F,EAAOk0F,SAElBS,EAAWD,EAAOnlG,SAGHvM,IAAb2xG,EAEFA,EAAWD,EAAOnlG,GAAQ27C,IACxBlrC,EAAOm0F,kBAeT,GAbwB,mBAAbQ,EAETA,EAAWD,EAAOnlG,GAChB4kC,EAAU,CAAC+W,EAAUypD,GAAY,CAACA,EAAUzpD,GAErC/W,EACTwgE,EAASrhD,QAAQpI,GAEjBypD,EAASvuG,KAAK8kD,IAIhBpgD,EAAIypG,EAAiBv0F,IACb,GAAK20F,EAASvwG,OAAS0G,IAAM6pG,EAASG,OAAQ,CACpDH,EAASG,QAAS,EAGlB,IAAIC,EAAI,IAAInwG,MAAM,+CACE+vG,EAASvwG,OAAS,IAAMW,OAAOwK,GADjC,qEAIlBwlG,EAAEloG,KAAO,8BACTkoG,EAAElB,QAAU7zF,EACZ+0F,EAAExlG,KAAOA,EACTwlG,EAAEhlF,MAAQ4kF,EAASvwG,OA7KGwwG,EA8KHG,EA7KnB9I,SAAWA,QAAQrmD,MAAMqmD,QAAQrmD,KAAKgvD,EA8KxC,CAGF,OAAO50F,CACT,CAaA,SAASg1F,IACP,IAAKnyG,KAAKoyG,MAGR,OAFApyG,KAAKmd,OAAOuhD,eAAe1+D,KAAK0M,KAAM1M,KAAKqyG,QAC3CryG,KAAKoyG,OAAQ,EACY,IAArBzvF,UAAUphB,OACLvB,KAAKqoD,SAAS1/C,KAAK3I,KAAKmd,QAC1Bnd,KAAKqoD,SAAS9hD,MAAMvG,KAAKmd,OAAQwF,UAE5C,CAEA,SAAS2vF,EAAUn1F,EAAQzQ,EAAM27C,GAC/B,IAAIznD,EAAQ,CAAEwxG,OAAO,EAAOC,YAAQlyG,EAAWgd,OAAQA,EAAQzQ,KAAMA,EAAM27C,SAAUA,GACjFkqD,EAAUJ,EAAYpwF,KAAKnhB,GAG/B,OAFA2xG,EAAQlqD,SAAWA,EACnBznD,EAAMyxG,OAASE,EACRA,CACT,CAyHA,SAASC,EAAWr1F,EAAQzQ,EAAM+lG,GAChC,IAAIZ,EAAS10F,EAAOk0F,QAEpB,QAAelxG,IAAX0xG,EACF,MAAO,GAET,IAAIa,EAAab,EAAOnlG,GACxB,YAAmBvM,IAAfuyG,EACK,GAEiB,mBAAfA,EACFD,EAAS,CAACC,EAAWrqD,UAAYqqD,GAAc,CAACA,GAElDD,EAsDT,SAAyB/Z,GAEvB,IADA,IAAIpjE,EAAM,IAAI3qB,MAAM+tF,EAAIn3F,QACfF,EAAI,EAAGA,EAAIi0B,EAAI/zB,SAAUF,EAChCi0B,EAAIj0B,GAAKq3F,EAAIr3F,GAAGgnD,UAAYqwC,EAAIr3F,GAElC,OAAOi0B,CACT,CA3DIq9E,CAAgBD,GAAcE,EAAWF,EAAYA,EAAWnxG,OACpE,CAmBA,SAASsxG,EAAcnmG,GACrB,IAAImlG,EAAS7xG,KAAKqxG,QAElB,QAAelxG,IAAX0xG,EAAsB,CACxB,IAAIa,EAAab,EAAOnlG,GAExB,GAA0B,mBAAfgmG,EACT,OAAO,EACF,QAAmBvyG,IAAfuyG,EACT,OAAOA,EAAWnxG,MAEtB,CAEA,OAAO,CACT,CAMA,SAASqxG,EAAWla,EAAK91F,GAEvB,IADA,IAAIF,EAAO,IAAIiI,MAAM/H,GACZvB,EAAI,EAAGA,EAAIuB,IAAKvB,EACvBqB,EAAKrB,GAAKq3F,EAAIr3F,GAChB,OAAOqB,CACT,CA2CA,SAASyuG,EAA+BH,EAAShnG,EAAMq+C,EAAU+5B,GAC/D,GAA0B,mBAAf4uB,EAAQj2F,GACbqnE,EAAM3oB,KACRu3C,EAAQv3C,KAAKzvD,EAAMq+C,GAEnB2oD,EAAQj2F,GAAG/Q,EAAMq+C,OAEd,IAAwC,mBAA7B2oD,EAAQ5gG,iBAYxB,MAAM,IAAIlG,UAAU,6EAA+E8mG,GATnGA,EAAQ5gG,iBAAiBpG,GAAM,SAAS8oG,EAAaj0E,GAG/CujD,EAAM3oB,MACRu3C,EAAQzgG,oBAAoBvG,EAAM8oG,GAEpCzqD,EAASxpB,EACX,GAGF,CACF,CAraAz9B,OAAO+C,eAAe4sG,EAAc,sBAAuB,CACzD1pG,YAAY,EACZC,IAAK,WACH,OAAOkqG,CACT,EACA1lG,IAAK,SAAS+yB,GACZ,GAAmB,iBAARA,GAAoBA,EAAM,GAAKiyE,EAAYjyE,GACpD,MAAM,IAAIhwB,WAAW,kGAAoGgwB,EAAM,KAEjI2yE,EAAsB3yE,CACxB,IAGFkyE,EAAa9hG,KAAO,gBAEG9O,IAAjBH,KAAKqxG,SACLrxG,KAAKqxG,UAAYjwG,OAAO2xG,eAAe/yG,MAAMqxG,UAC/CrxG,KAAKqxG,QAAUjwG,OAAO2G,OAAO,MAC7B/H,KAAKsxG,aAAe,GAGtBtxG,KAAKuxG,cAAgBvxG,KAAKuxG,oBAAiBpxG,CAC7C,EAIA4wG,EAAarvG,UAAUsxG,gBAAkB,SAAyBpwG,GAChE,GAAiB,iBAANA,GAAkBA,EAAI,GAAKkuG,EAAYluG,GAChD,MAAM,IAAIiM,WAAW,gFAAkFjM,EAAI,KAG7G,OADA5C,KAAKuxG,cAAgB3uG,EACd5C,IACT,EAQA+wG,EAAarvG,UAAUuxG,gBAAkB,WACvC,OAAOvB,EAAiB1xG,KAC1B,EAEA+wG,EAAarvG,UAAUgC,KAAO,SAAcgJ,GAE1C,IADA,IAAIjI,EAAO,GACFpD,EAAI,EAAGA,EAAIshB,UAAUphB,OAAQF,IAAKoD,EAAKlB,KAAKof,UAAUthB,IAC/D,IAAI6xG,EAAoB,UAATxmG,EAEXmlG,EAAS7xG,KAAKqxG,QAClB,QAAelxG,IAAX0xG,EACFqB,EAAWA,QAA4B/yG,IAAjB0xG,EAAO1uG,WAC1B,IAAK+vG,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAIC,EAGJ,GAFI1uG,EAAKlD,OAAS,IAChB4xG,EAAK1uG,EAAK,IACR0uG,aAAcpxG,MAGhB,MAAMoxG,EAGR,IAAIvxG,EAAM,IAAIG,MAAM,oBAAsBoxG,EAAK,KAAOA,EAAGpkG,QAAU,IAAM,KAEzE,MADAnN,EAAIgnB,QAAUuqF,EACRvxG,CACR,CAEA,IAAIoZ,EAAU62F,EAAOnlG,GAErB,QAAgBvM,IAAZ6a,EACF,OAAO,EAET,GAAuB,mBAAZA,EACT01F,EAAa11F,EAAShb,KAAMyE,OAE5B,KAAIq0F,EAAM99E,EAAQzZ,OACd6xG,EAAYR,EAAW53F,EAAS89E,GACpC,IAASz3F,EAAI,EAAGA,EAAIy3F,IAAOz3F,EACzBqvG,EAAa0C,EAAU/xG,GAAIrB,KAAMyE,EAHX,CAM1B,OAAO,CACT,EAgEAssG,EAAarvG,UAAU2xG,YAAc,SAAqB3mG,EAAM27C,GAC9D,OAAOupD,EAAa5xG,KAAM0M,EAAM27C,GAAU,EAC5C,EAEA0oD,EAAarvG,UAAUqZ,GAAKg2F,EAAarvG,UAAU2xG,YAEnDtC,EAAarvG,UAAU4xG,gBACnB,SAAyB5mG,EAAM27C,GAC7B,OAAOupD,EAAa5xG,KAAM0M,EAAM27C,GAAU,EAC5C,EAoBJ0oD,EAAarvG,UAAU+3D,KAAO,SAAc/sD,EAAM27C,GAGhD,OAFAopD,EAAcppD,GACdroD,KAAK+a,GAAGrO,EAAM4lG,EAAUtyG,KAAM0M,EAAM27C,IAC7BroD,IACT,EAEA+wG,EAAarvG,UAAU6xG,oBACnB,SAA6B7mG,EAAM27C,GAGjC,OAFAopD,EAAcppD,GACdroD,KAAKszG,gBAAgB5mG,EAAM4lG,EAAUtyG,KAAM0M,EAAM27C,IAC1CroD,IACT,EAGJ+wG,EAAarvG,UAAUg9D,eACnB,SAAwBhyD,EAAM27C,GAC5B,IAAIohD,EAAMoI,EAAQ98F,EAAU1T,EAAGmyG,EAK/B,GAHA/B,EAAcppD,QAGCloD,KADf0xG,EAAS7xG,KAAKqxG,SAEZ,OAAOrxG,KAGT,QAAaG,KADbspG,EAAOoI,EAAOnlG,IAEZ,OAAO1M,KAET,GAAIypG,IAASphD,GAAYohD,EAAKphD,WAAaA,EACb,KAAtBroD,KAAKsxG,aACTtxG,KAAKqxG,QAAUjwG,OAAO2G,OAAO,cAEtB8pG,EAAOnlG,GACVmlG,EAAOnzC,gBACT1+D,KAAK0D,KAAK,iBAAkBgJ,EAAM+8F,EAAKphD,UAAYA,SAElD,GAAoB,mBAATohD,EAAqB,CAGrC,IAFA10F,GAAY,EAEP1T,EAAIooG,EAAKloG,OAAS,EAAGF,GAAK,EAAGA,IAChC,GAAIooG,EAAKpoG,KAAOgnD,GAAYohD,EAAKpoG,GAAGgnD,WAAaA,EAAU,CACzDmrD,EAAmB/J,EAAKpoG,GAAGgnD,SAC3BtzC,EAAW1T,EACX,KACF,CAGF,GAAI0T,EAAW,EACb,OAAO/U,KAEQ,IAAb+U,EACF00F,EAAKl/F,QAiIf,SAAmBk/F,EAAMtrF,GACvB,KAAOA,EAAQ,EAAIsrF,EAAKloG,OAAQ4c,IAC9BsrF,EAAKtrF,GAASsrF,EAAKtrF,EAAQ,GAC7BsrF,EAAKjmG,KACP,CAnIUiwG,CAAUhK,EAAM10F,GAGE,IAAhB00F,EAAKloG,SACPswG,EAAOnlG,GAAQ+8F,EAAK,SAEQtpG,IAA1B0xG,EAAOnzC,gBACT1+D,KAAK0D,KAAK,iBAAkBgJ,EAAM8mG,GAAoBnrD,EAC1D,CAEA,OAAOroD,IACT,EAEJ+wG,EAAarvG,UAAUuZ,IAAM81F,EAAarvG,UAAUg9D,eAEpDqyC,EAAarvG,UAAUgyG,mBACnB,SAA4BhnG,GAC1B,IAAI0mG,EAAWvB,EAAQxwG,EAGvB,QAAelB,KADf0xG,EAAS7xG,KAAKqxG,SAEZ,OAAOrxG,KAGT,QAA8BG,IAA1B0xG,EAAOnzC,eAUT,OATyB,IAArB/7C,UAAUphB,QACZvB,KAAKqxG,QAAUjwG,OAAO2G,OAAO,MAC7B/H,KAAKsxG,aAAe,QACMnxG,IAAjB0xG,EAAOnlG,KACY,KAAtB1M,KAAKsxG,aACTtxG,KAAKqxG,QAAUjwG,OAAO2G,OAAO,aAEtB8pG,EAAOnlG,IAEX1M,KAIT,GAAyB,IAArB2iB,UAAUphB,OAAc,CAC1B,IACId,EADAU,EAAOC,OAAOD,KAAK0wG,GAEvB,IAAKxwG,EAAI,EAAGA,EAAIF,EAAKI,SAAUF,EAEjB,oBADZZ,EAAMU,EAAKE,KAEXrB,KAAK0zG,mBAAmBjzG,GAK1B,OAHAT,KAAK0zG,mBAAmB,kBACxB1zG,KAAKqxG,QAAUjwG,OAAO2G,OAAO,MAC7B/H,KAAKsxG,aAAe,EACbtxG,IACT,CAIA,GAAyB,mBAFzBozG,EAAYvB,EAAOnlG,IAGjB1M,KAAK0+D,eAAehyD,EAAM0mG,QACrB,QAAkBjzG,IAAdizG,EAET,IAAK/xG,EAAI+xG,EAAU7xG,OAAS,EAAGF,GAAK,EAAGA,IACrCrB,KAAK0+D,eAAehyD,EAAM0mG,EAAU/xG,IAIxC,OAAOrB,IACT,EAmBJ+wG,EAAarvG,UAAU0xG,UAAY,SAAmB1mG,GACpD,OAAO8lG,EAAWxyG,KAAM0M,GAAM,EAChC,EAEAqkG,EAAarvG,UAAUiyG,aAAe,SAAsBjnG,GAC1D,OAAO8lG,EAAWxyG,KAAM0M,GAAM,EAChC,EAEAqkG,EAAa8B,cAAgB,SAAS7B,EAAStkG,GAC7C,MAAqC,mBAA1BskG,EAAQ6B,cACV7B,EAAQ6B,cAAcnmG,GAEtBmmG,EAAclqG,KAAKqoG,EAAStkG,EAEvC,EAEAqkG,EAAarvG,UAAUmxG,cAAgBA,EAiBvC9B,EAAarvG,UAAUkyG,WAAa,WAClC,OAAO5zG,KAAKsxG,aAAe,EAAIf,EAAevwG,KAAKqxG,SAAW,EAChE,0BCjaAptG,EAAOC,QAAU,SAAS2vG,EAAMtxD,EAAGC,GACjC,GAAID,IAAMC,EAAG,OAAO,EAEpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,GAAID,EAAEvzC,cAAgBwzC,EAAExzC,YAAa,OAAO,EAE5C,IAAIzN,EAAQF,EAAGF,EACf,GAAIwJ,MAAMC,QAAQ23C,GAAI,CAEpB,IADAhhD,EAASghD,EAAEhhD,SACGihD,EAAEjhD,OAAQ,OAAO,EAC/B,IAAKF,EAAIE,EAAgB,GAARF,KACf,IAAKwyG,EAAMtxD,EAAElhD,GAAImhD,EAAEnhD,IAAK,OAAO,EACjC,OAAO,CACT,CAGA,GAAKkhD,aAAa/gC,KAASghC,aAAahhC,IAAM,CAC5C,GAAI+gC,EAAEziD,OAAS0iD,EAAE1iD,KAAM,OAAO,EAC9B,IAAKuB,KAAKkhD,EAAEj1C,UACV,IAAKk1C,EAAEr1C,IAAI9L,EAAE,IAAK,OAAO,EAC3B,IAAKA,KAAKkhD,EAAEj1C,UACV,IAAKumG,EAAMxyG,EAAE,GAAImhD,EAAEl7C,IAAIjG,EAAE,KAAM,OAAO,EACxC,OAAO,CACT,CAEA,GAAKkhD,aAAahkC,KAASikC,aAAajkC,IAAM,CAC5C,GAAIgkC,EAAEziD,OAAS0iD,EAAE1iD,KAAM,OAAO,EAC9B,IAAKuB,KAAKkhD,EAAEj1C,UACV,IAAKk1C,EAAEr1C,IAAI9L,EAAE,IAAK,OAAO,EAC3B,OAAO,CACT,CAEA,GAAIsI,YAAYC,OAAO24C,IAAM54C,YAAYC,OAAO44C,GAAI,CAElD,IADAjhD,EAASghD,EAAEhhD,SACGihD,EAAEjhD,OAAQ,OAAO,EAC/B,IAAKF,EAAIE,EAAgB,GAARF,KACf,GAAIkhD,EAAElhD,KAAOmhD,EAAEnhD,GAAI,OAAO,EAC5B,OAAO,CACT,CAGA,GAAIkhD,EAAEvzC,cAAgBo6E,OAAQ,OAAO7mC,EAAE/yB,SAAWgzB,EAAEhzB,QAAU+yB,EAAE6/B,QAAU5/B,EAAE4/B,MAC5E,GAAI7/B,EAAEi5C,UAAYp6F,OAAOM,UAAU85F,QAAS,OAAOj5C,EAAEi5C,YAAch5C,EAAEg5C,UACrE,GAAIj5C,EAAE/gD,WAAaJ,OAAOM,UAAUF,SAAU,OAAO+gD,EAAE/gD,aAAeghD,EAAEhhD,WAIxE,IADAD,GADAJ,EAAOC,OAAOD,KAAKohD,IACLhhD,UACCH,OAAOD,KAAKqhD,GAAGjhD,OAAQ,OAAO,EAE7C,IAAKF,EAAIE,EAAgB,GAARF,KACf,IAAKD,OAAOM,UAAUgH,eAAeC,KAAK65C,EAAGrhD,EAAKE,IAAK,OAAO,EAEhE,IAAKA,EAAIE,EAAgB,GAARF,KAAY,CAC3B,IAAIZ,EAAMU,EAAKE,GAEf,IAAKwyG,EAAMtxD,EAAE9hD,GAAM+hD,EAAE/hD,IAAO,OAAO,CACrC,CAEA,OAAO,CACT,CAGA,OAAO8hD,GAAIA,GAAKC,GAAIA,CACtB,sCCtEA,IAAI16C,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAAgCtE,iCCfrD9C,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQk8C,2BAAwB,EAChC,EAAQ,OACR,MAAMvK,EAAa,EAAQ,OACrBi+D,EAAqB,EAAQ,OAC7BC,EAAoB,EAAQ,OAC5BC,EAAkB,EAAQ,OAC1BC,EAAgC,EAAQ,OAExCC,EAAK,EAAQ,OACbC,EAAW,EAAQ,OAKzB,MAAM/zD,EACF,WAAApxC,CAAYvK,GACRA,EAAOA,GAAQ,CAAC,EAChBzE,KAAK0N,OAASjJ,EAAKiJ,QAAU,OAC7B1N,KAAKo0G,oBAAsB3vG,EAAK2vG,qBAAuB,IAAI7nG,gBAC3DvM,KAAKq0G,eAAiB5vG,EAAK4vG,gBAAkB,IAAI7pG,QACjDxK,KAAKs0G,QAAU7vG,EAAKmD,MACpB5H,KAAKu0G,iBAAmB,IAAIT,EAAmBU,iBAAiB/vG,GAChEzE,KAAKy0G,gBAAkB,IAAIV,EAAkBW,gBAAgBjwG,GAC7DzE,KAAK20G,cAAgB,CACjB,CAACv0D,EAAsBw0D,yBAA0B,CAC7CC,mBAAqBC,GAAyB90G,KAAKu0G,iBAAiBQ,uBAAuBD,GAC3FE,mBAAqBF,GAAyB90G,KAAKu0G,iBAAiBU,uBAAuBH,IAE/F,CAAC10D,EAAsB80D,wBAAyB,CAC5CL,mBAAqBC,GAAyB90G,KAAKy0G,gBAAgBU,sBAAsBL,GACzFE,mBAAqBF,GAAyB90G,KAAKy0G,gBAAgBW,sBAAsBN,KAGjG90G,KAAKq1G,QAAU5wG,EAAK4wG,OACxB,CASA,YAAAC,CAAa98E,GACT,MAAM+8E,EAAc,IAAI1/D,EAAW91C,OAAO,CAAEk2C,YAAY,IAAQhpC,MAAMurB,GACtE,MAA4B,UAArB+8E,EAAY7oG,KACc,aAA1B6oG,EAAYC,UAA2B,YAAcD,EAAYC,UAAa,SACzF,CASA,cAAAC,CAAej9E,GACX,MAAM+8E,EAAc,IAAI1/D,EAAW91C,OAAO,CAAEk2C,YAAY,IAAQhpC,MAAMurB,GACtE,GAAyB,WAArB+8E,EAAY7oG,KAAmB,CAC/B,MAAMwvB,EAAa,CAAC,EACpB,IAAK,MAAM1E,KAAU+9E,EAAY/uE,QACzB,SAAUhP,EACV0E,EAAW1E,EAAO9qB,OAAQ,EAG1BwvB,EAAW1E,EAAOk+E,aAAc,EAGxC,OAAOx5E,CACX,CAEI,MAAO,SAGf,CASA,mBAAM0mB,CAAcD,EAAUnqB,GAC1B,MAAOm9E,EAAaC,SAAwB51G,KACvC61G,eAAelzD,EAAUnqB,EAAO4nB,EAAsB01D,oBACrDpiG,EAAS1T,KAAK20G,cAAcgB,GAClC,IAAKjiG,EACD,MAAM,IAAI3R,MAAM,wCAA0C4zG,GAE9D,OAAOjiG,EAAOshG,mBAAmBY,EACrC,CAOA,cAAMx0D,CAASuB,EAAUnqB,GACrB,MAAOm9E,EAAaC,SAAwB51G,KACvC61G,eAAelzD,EAAUnqB,EAAO4nB,EAAsB01D,oBACrDpiG,EAAS1T,KAAK20G,cAAcgB,GAClC,IAAKjiG,EACD,MAAM,IAAI3R,MAAM,wCAA0C4zG,GAE9D,OAAOjiG,EAAOmhG,mBAAmBe,EACrC,CAOA,kBAAM10D,CAAayB,EAAUnqB,GAEzB,aADyBx4B,KAAK61G,eAAelzD,EAAUnqB,EAAO4nB,EAAsB21D,qBAAqB,GACxF/9C,KAAK,IAAIk8C,EAAG8B,aAAa,CAAE59C,OAAQhY,EAAsB21D,qBAC9E,CAOA,iBAAM10D,CAAYsB,EAAUnqB,GACxB,MACMy9E,EAAkB,IADA/9E,WAAWlY,uBAAyBna,QAAQC,UAAUQ,MAAK,IAAM,EAAQ,UAE3F4vG,EAAoB,CAAC,EAC3Bl2G,KAAKq0G,eAAe3pG,SAAQ,CAACxK,EAAOO,KAChCy1G,EAAkBz1G,GAAOP,CAAK,IAElC,MAAM+O,EAAO,CACTvB,OAAQ,OACRjD,QAASrJ,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG0gG,GAAoB,CAAE,eAAgB,8BAC/ElrG,KAAMwtB,EACN3qB,OAAQooG,EAAgBpoG,cAEtB7N,KAAKm2G,gBAAgBxzD,EAAU1zC,EAAM,CAAEmnG,YAAY,IACzDH,EAAgB1mG,OACpB,CAWA,oBAAMsmG,CAAelzD,EAAUnqB,EAAO69E,GAClC,IAAI3uG,EAAsB,SAAhB1H,KAAK0N,OAAoBi1C,EAAWA,EAAW,UAAY2zD,mBAAmB99E,GAExF,MAAM/tB,EAAU,IAAID,QAAQxK,KAAKq0G,gBACjC,IAAIrpG,EAcJ,OAbAP,EAAQ1B,OAAO,SAAUstG,GACL,SAAhBr2G,KAAK0N,QACLjD,EAAQ1B,OAAO,eAAgB,qCAC/BiC,EAAO,IAAIuB,gBACXvB,EAAKc,IAAI,QAAS0sB,GAClBx4B,KAAKo0G,oBAAoB1pG,SAAQ,CAACxK,EAAOO,KACrCuK,EAAKc,IAAIrL,EAAKP,EAAM,IAExBuK,EAAQ1B,OAAO,iBAAkBiC,EAAKxJ,WAAWD,OAAOC,aAEX,KAAxCxB,KAAKo0G,oBAAoB5yG,aAC9BkG,GAAO,IAAI1H,KAAKo0G,oBAAoB5yG,cAEjCxB,KAAKm2G,gBAAgBzuG,EAAK,CAAE+C,UAASiD,OAAQ1N,KAAK0N,OAAQ1C,QACrE,CASA,qBAAMmrG,CAAgBzuG,EAAKuH,EAAMnI,EAAU,CAAC,GACxC,IAAIyvG,EACJ,GAAIv2G,KAAKq1G,QAAS,CACd,MAAMmB,EAAa,IAAIx2F,gBACvB/Q,EAAKpB,OAAS2oG,EAAW3oG,OACzB0oG,EAAY/7D,YAAW,IAAMg8D,EAAWjnG,SAASvP,KAAKq1G,QAC1D,CACA,MAAMoB,QAAsBz2G,KAAKs0G,SAAW1sG,OAAOF,EAAKuH,GAExD,IAAI2mG,EADJj0D,aAAa40D,GAGRzvG,EAAQsvG,aAGTR,EAAiBzB,EAASsC,EAAazrG,MACjCyrG,EAAazrG,KAAO,IAAIipG,EAA8Bh1F,wBAAwBw3F,EAAazrG,OAGrG,IAAI2qG,EAAcc,EAAahsG,QAAQnD,IAAI,iBAAmB,GAK9D,GAJIquG,EAAY7rG,QAAQ,KAAO,IAC3B6rG,EAAcA,EAAY1vB,OAAO,EAAG0vB,EAAY7rG,QAAQ,QAGvD2sG,EAAaloG,GAAI,CAClB,MAAMmoG,EAAY,UAAUroB,KAAK3mF,GAAK,GACtC,IAAIivG,EAAa,iBAIjB,MAHIf,IACAe,QAAmB3C,EAAgB4B,IAEjC,IAAI7zG,MAAM,yCAAyC20G,kBAA0BD,EAAanoG,aAAaqoG,IACjH,CACA,MAAO,CAAChB,EAAaC,EACzB,EAEJx1D,EAAsBw0D,wBAA0B,kCAChDx0D,EAAsB80D,uBAAyB,iCAC/C90D,EAAsB01D,mBAAqB,GAAG11D,EAAsBw0D,iCAAiCx0D,EAAsB80D,+BAC3H90D,EAAsB21D,mBAAqB,cAC3C7xG,EAAQk8C,sBAAwBA,qBCzNhC,SAAUl3C,IAEO,SAAWhF,GAE1B,IAAIoF,EACY,oBAAqBJ,EADjCI,EAEQ,WAAYJ,GAAQ,aAAcK,OAF1CD,EAIA,eAAgBJ,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIM,MACG,CACT,CAAE,MAAOrD,GACP,OAAO,CACT,CACD,CAPD,GANAmD,EAcQ,aAAcJ,EAdtBI,EAeW,gBAAiBJ,EAOhC,GAAII,EACF,IAAIG,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFC,YAAYC,QACZ,SAASC,GACP,OAAOA,GAAOJ,EAAYK,QAAQ1I,OAAOM,UAAUF,SAASmH,KAAKkB,KAAS,CAC5E,EAGJ,SAASE,EAAcC,GAIrB,GAHoB,iBAATA,IACTA,EAAO9H,OAAO8H,IAEZ,4BAA4BC,KAAKD,GACnC,MAAM,IAAIE,UAAU,0CAEtB,OAAOF,EAAK1E,aACd,CAEA,SAAS6E,EAAejK,GAItB,MAHqB,iBAAVA,IACTA,EAAQgC,OAAOhC,IAEVA,CACT,CAGA,SAASkK,EAAYC,GACnB,IAAIC,EAAW,CACbpE,KAAM,WACJ,IAAIhG,EAAQmK,EAAME,QAClB,MAAO,CAAClE,UAAgBlG,IAAVD,EAAqBA,MAAOA,EAC5C,GASF,OANIoJ,IACFgB,EAASf,OAAOe,UAAY,WAC1B,OAAOA,CACT,GAGKA,CACT,CAEA,SAASE,EAAQC,GACfzK,KAAKmF,IAAM,CAAC,EAERsF,aAAmBD,EACrBC,EAAQC,SAAQ,SAASxK,EAAO8J,GAC9BhK,KAAK+I,OAAOiB,EAAM9J,EACpB,GAAGF,MACM2K,MAAMC,QAAQH,GACvBA,EAAQC,SAAQ,SAASG,GACvB7K,KAAK+I,OAAO8B,EAAO,GAAIA,EAAO,GAChC,GAAG7K,MACMyK,GACTrJ,OAAO0J,oBAAoBL,GAASC,SAAQ,SAASV,GACnDhK,KAAK+I,OAAOiB,EAAMS,EAAQT,GAC5B,GAAGhK,KAEP,CA8DA,SAAS+K,EAASC,GAChB,GAAIA,EAAKC,SACP,OAAOpF,QAAQE,OAAO,IAAImE,UAAU,iBAEtCc,EAAKC,UAAW,CAClB,CAEA,SAASC,EAAgBC,GACvB,OAAO,IAAItF,SAAQ,SAASC,EAASC,GACnCoF,EAAOC,OAAS,WACdtF,EAAQqF,EAAOtH,OACjB,EACAsH,EAAOE,QAAU,WACftF,EAAOoF,EAAOhI,MAChB,CACF,GACF,CAEA,SAASmI,EAAsBC,GAC7B,IAAIJ,EAAS,IAAIK,WACbC,EAAUP,EAAgBC,GAE9B,OADAA,EAAOO,kBAAkBH,GAClBE,CACT,CAmBA,SAASE,EAAYpJ,GACnB,GAAIA,EAAIiC,MACN,OAAOjC,EAAIiC,MAAM,GAEjB,IAAIoH,EAAO,IAAIC,WAAWtJ,EAAIS,YAE9B,OADA4I,EAAKE,IAAI,IAAID,WAAWtJ,IACjBqJ,EAAK9J,MAEhB,CAEA,SAASiK,IA0FP,OAzFA/L,KAAKiL,UAAW,EAEhBjL,KAAKgM,UAAY,SAAShB,GAhM5B,IAAoBnB,EAiMhB7J,KAAKiM,UAAYjB,EACZA,EAEsB,iBAATA,EAChBhL,KAAKkM,UAAYlB,EACR1B,GAAgBE,KAAK9H,UAAUyK,cAAcnB,GACtDhL,KAAKoM,UAAYpB,EACR1B,GAAoB+C,SAAS3K,UAAUyK,cAAcnB,GAC9DhL,KAAKsM,cAAgBtB,EACZ1B,GAAwBiD,gBAAgB7K,UAAUyK,cAAcnB,GACzEhL,KAAKkM,UAAYlB,EAAKxJ,WACb8H,GAAuBA,IA5MlBO,EA4M6CmB,IA3MjDwB,SAAS9K,UAAUyK,cAActC,IA4M3C7J,KAAKyM,iBAAmBd,EAAYX,EAAKlJ,QAEzC9B,KAAKiM,UAAY,IAAIzC,KAAK,CAACxJ,KAAKyM,oBACvBnD,IAAwBK,YAAYjI,UAAUyK,cAAcnB,IAAStB,EAAkBsB,IAChGhL,KAAKyM,iBAAmBd,EAAYX,GAEpChL,KAAKkM,UAAYlB,EAAO5J,OAAOM,UAAUF,SAASmH,KAAKqC,GAhBvDhL,KAAKkM,UAAY,GAmBdlM,KAAKyK,QAAQnD,IAAI,kBACA,iBAAT0D,EACThL,KAAKyK,QAAQqB,IAAI,eAAgB,4BACxB9L,KAAKoM,WAAapM,KAAKoM,UAAUM,KAC1C1M,KAAKyK,QAAQqB,IAAI,eAAgB9L,KAAKoM,UAAUM,MACvCpD,GAAwBiD,gBAAgB7K,UAAUyK,cAAcnB,IACzEhL,KAAKyK,QAAQqB,IAAI,eAAgB,mDAGvC,EAEIxC,IACFtJ,KAAKuL,KAAO,WACV,IAAInF,EAAW2E,EAAS/K,MACxB,GAAIoG,EACF,OAAOA,EAGT,GAAIpG,KAAKoM,UACP,OAAOvG,QAAQC,QAAQ9F,KAAKoM,WACvB,GAAIpM,KAAKyM,iBACd,OAAO5G,QAAQC,QAAQ,IAAI0D,KAAK,CAACxJ,KAAKyM,oBACjC,GAAIzM,KAAKsM,cACd,MAAM,IAAIvK,MAAM,wCAEhB,OAAO8D,QAAQC,QAAQ,IAAI0D,KAAK,CAACxJ,KAAKkM,YAE1C,EAEAlM,KAAK2M,YAAc,WACjB,OAAI3M,KAAKyM,iBACA1B,EAAS/K,OAAS6F,QAAQC,QAAQ9F,KAAKyM,kBAEvCzM,KAAKuL,OAAOjF,KAAKgF,EAE5B,GAGFtL,KAAK4D,KAAO,WACV,IA3FoB2H,EAClBJ,EACAM,EAyFErF,EAAW2E,EAAS/K,MACxB,GAAIoG,EACF,OAAOA,EAGT,GAAIpG,KAAKoM,UACP,OAjGkBb,EAiGIvL,KAAKoM,UA/F3BX,EAAUP,EADVC,EAAS,IAAIK,YAEjBL,EAAOyB,WAAWrB,GACXE,EA8FE,GAAIzL,KAAKyM,iBACd,OAAO5G,QAAQC,QA5FrB,SAA+BvD,GAI7B,IAHA,IAAIqJ,EAAO,IAAIC,WAAWtJ,GACtBsK,EAAQ,IAAIlC,MAAMiB,EAAKrK,QAElBF,EAAI,EAAGA,EAAIuK,EAAKrK,OAAQF,IAC/BwL,EAAMxL,GAAKa,OAAOC,aAAayJ,EAAKvK,IAEtC,OAAOwL,EAAMxH,KAAK,GACpB,CAoF6ByH,CAAsB9M,KAAKyM,mBAC7C,GAAIzM,KAAKsM,cACd,MAAM,IAAIvK,MAAM,wCAEhB,OAAO8D,QAAQC,QAAQ9F,KAAKkM,UAEhC,EAEI5C,IACFtJ,KAAK+M,SAAW,WACd,OAAO/M,KAAK4D,OAAO0C,KAAK0G,EAC1B,GAGFhN,KAAK6H,KAAO,WACV,OAAO7H,KAAK4D,OAAO0C,KAAKtE,KAAKiL,MAC/B,EAEOjN,IACT,CA3MAwK,EAAQ9I,UAAUqH,OAAS,SAASiB,EAAM9J,GACxC8J,EAAOD,EAAcC,GACrB9J,EAAQiK,EAAejK,GACvB,IAAIgN,EAAWlN,KAAKmF,IAAI6E,GACxBhK,KAAKmF,IAAI6E,GAAQkD,EAAWA,EAAW,KAAOhN,EAAQA,CACxD,EAEAsK,EAAQ9I,UAAkB,OAAI,SAASsI,UAC9BhK,KAAKmF,IAAI4E,EAAcC,GAChC,EAEAQ,EAAQ9I,UAAU4F,IAAM,SAAS0C,GAE/B,OADAA,EAAOD,EAAcC,GACdhK,KAAKmN,IAAInD,GAAQhK,KAAKmF,IAAI6E,GAAQ,IAC3C,EAEAQ,EAAQ9I,UAAUyL,IAAM,SAASnD,GAC/B,OAAOhK,KAAKmF,IAAIuD,eAAeqB,EAAcC,GAC/C,EAEAQ,EAAQ9I,UAAUoK,IAAM,SAAS9B,EAAM9J,GACrCF,KAAKmF,IAAI4E,EAAcC,IAASG,EAAejK,EACjD,EAEAsK,EAAQ9I,UAAUgJ,QAAU,SAAS0C,EAAU3H,GAC7C,IAAK,IAAIuE,KAAQhK,KAAKmF,IAChBnF,KAAKmF,IAAIuD,eAAesB,IAC1BoD,EAASzE,KAAKlD,EAASzF,KAAKmF,IAAI6E,GAAOA,EAAMhK,KAGnD,EAEAwK,EAAQ9I,UAAUP,KAAO,WACvB,IAAIkJ,EAAQ,GAIZ,OAHArK,KAAK0K,SAAQ,SAASxK,EAAO8J,GAC3BK,EAAM9G,KAAKyG,EACb,IACOI,EAAYC,EACrB,EAEAG,EAAQ9I,UAAU2L,OAAS,WACzB,IAAIhD,EAAQ,GAIZ,OAHArK,KAAK0K,SAAQ,SAASxK,GACpBmK,EAAM9G,KAAKrD,EACb,IACOkK,EAAYC,EACrB,EAEAG,EAAQ9I,UAAU4L,QAAU,WAC1B,IAAIjD,EAAQ,GAIZ,OAHArK,KAAK0K,SAAQ,SAASxK,EAAO8J,GAC3BK,EAAM9G,KAAK,CAACyG,EAAM9J,GACpB,IACOkK,EAAYC,EACrB,EAEIf,IACFkB,EAAQ9I,UAAU6H,OAAOe,UAAYE,EAAQ9I,UAAU4L,SAqJzD,IAAIC,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAO3D,SAASC,EAAQC,EAAO3G,GAEtB,IAPuB4G,EACnBC,EAMA3C,GADJlE,EAAUA,GAAW,CAAC,GACHkE,KAEnB,GAAIyC,aAAiBD,EAAS,CAC5B,GAAIC,EAAMxC,SACR,MAAM,IAAIf,UAAU,gBAEtBlK,KAAK0H,IAAM+F,EAAM/F,IACjB1H,KAAK4N,YAAcH,EAAMG,YACpB9G,EAAQ2D,UACXzK,KAAKyK,QAAU,IAAID,EAAQiD,EAAMhD,UAEnCzK,KAAK0N,OAASD,EAAMC,OACpB1N,KAAKU,KAAO+M,EAAM/M,KAClBV,KAAK6N,OAASJ,EAAMI,OACf7C,GAA2B,MAAnByC,EAAMxB,YACjBjB,EAAOyC,EAAMxB,UACbwB,EAAMxC,UAAW,EAErB,MACEjL,KAAK0H,IAAMxF,OAAOuL,GAYpB,GATAzN,KAAK4N,YAAc9G,EAAQ8G,aAAe5N,KAAK4N,aAAe,eAC1D9G,EAAQ2D,SAAYzK,KAAKyK,UAC3BzK,KAAKyK,QAAU,IAAID,EAAQ1D,EAAQ2D,UAErCzK,KAAK0N,QAhCDC,GADmBD,EAiCO5G,EAAQ4G,QAAU1N,KAAK0N,QAAU,OAhC1CtI,cACdmI,EAAQzD,QAAQ6D,IAAY,EAAIA,EAAUD,GAgCjD1N,KAAKU,KAAOoG,EAAQpG,MAAQV,KAAKU,MAAQ,KACzCV,KAAK6N,OAAS/G,EAAQ+G,QAAU7N,KAAK6N,OACrC7N,KAAK8N,SAAW,MAEK,QAAhB9N,KAAK0N,QAAoC,SAAhB1N,KAAK0N,SAAsB1C,EACvD,MAAM,IAAId,UAAU,6CAEtBlK,KAAKgM,UAAUhB,EACjB,CAMA,SAASgC,EAAOhC,GACd,IAAI+C,EAAO,IAAI1B,SAYf,OAXArB,EACGgD,OACAhJ,MAAM,KACN0F,SAAQ,SAASuD,GAChB,GAAIA,EAAO,CACT,IAAIjJ,EAAQiJ,EAAMjJ,MAAM,KACpBgF,EAAOhF,EAAMuF,QAAQ2D,QAAQ,MAAO,KACpChO,EAAQ8E,EAAMK,KAAK,KAAK6I,QAAQ,MAAO,KAC3CH,EAAKhF,OAAOoF,mBAAmBnE,GAAOmE,mBAAmBjO,GAC3D,CACF,IACK6N,CACT,CAoBA,SAASK,EAASC,EAAUvH,GACrBA,IACHA,EAAU,CAAC,GAGb9G,KAAK0M,KAAO,UACZ1M,KAAKsO,YAA4BnO,IAAnB2G,EAAQwH,OAAuB,IAAMxH,EAAQwH,OAC3DtO,KAAKuO,GAAKvO,KAAKsO,QAAU,KAAOtO,KAAKsO,OAAS,IAC9CtO,KAAKwO,WAAa,eAAgB1H,EAAUA,EAAQ0H,WAAa,KACjExO,KAAKyK,QAAU,IAAID,EAAQ1D,EAAQ2D,SACnCzK,KAAK0H,IAAMZ,EAAQY,KAAO,GAC1B1H,KAAKgM,UAAUqC,EACjB,CAlDAb,EAAQ9L,UAAU+M,MAAQ,WACxB,OAAO,IAAIjB,EAAQxN,KAAM,CAACgL,KAAMhL,KAAKiM,WACvC,EAkCAF,EAAKpD,KAAK6E,EAAQ9L,WAgBlBqK,EAAKpD,KAAKyF,EAAS1M,WAEnB0M,EAAS1M,UAAU+M,MAAQ,WACzB,OAAO,IAAIL,EAASpO,KAAKiM,UAAW,CAClCqC,OAAQtO,KAAKsO,OACbE,WAAYxO,KAAKwO,WACjB/D,QAAS,IAAID,EAAQxK,KAAKyK,SAC1B/C,IAAK1H,KAAK0H,KAEd,EAEA0G,EAASjL,MAAQ,WACf,IAAIuL,EAAW,IAAIN,EAAS,KAAM,CAACE,OAAQ,EAAGE,WAAY,KAE1D,OADAE,EAAShC,KAAO,QACTgC,CACT,EAEA,IAAIC,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CP,EAASQ,SAAW,SAASlH,EAAK4G,GAChC,IAA0C,IAAtCK,EAAiB7E,QAAQwE,GAC3B,MAAM,IAAIO,WAAW,uBAGvB,OAAO,IAAIT,EAAS,KAAM,CAACE,OAAQA,EAAQ7D,QAAS,CAACqE,SAAUpH,IACjE,EAEAxD,EAAQmF,aAAeH,EAAKG,aAC5B,IACE,IAAInF,EAAQmF,YACd,CAAE,MAAOzH,GACPsC,EAAQmF,aAAe,SAAS0F,EAAS/E,GACvChK,KAAK+O,QAAUA,EACf/O,KAAKgK,KAAOA,EACZ,IAAI7G,EAAQpB,MAAMgN,GAClB/O,KAAKW,MAAQwC,EAAMxC,KACrB,EACAuD,EAAQmF,aAAa3H,UAAYN,OAAO2G,OAAOhG,MAAML,WACrDwC,EAAQmF,aAAa3H,UAAUsN,YAAc9K,EAAQmF,YACvD,CAEA,SAASzB,EAAM6F,EAAOwB,GACpB,OAAO,IAAIpJ,SAAQ,SAASC,EAASC,GACnC,IAAImJ,EAAU,IAAI1B,EAAQC,EAAOwB,GAEjC,GAAIC,EAAQrB,QAAUqB,EAAQrB,OAAOsB,QACnC,OAAOpJ,EAAO,IAAI7B,EAAQmF,aAAa,UAAW,eAGpD,IAAI+F,EAAM,IAAIC,eAEd,SAASC,IACPF,EAAIG,OACN,CAEAH,EAAIhE,OAAS,WACX,IAxFgBoE,EAChB/E,EAuFI3D,EAAU,CACZwH,OAAQc,EAAId,OACZE,WAAYY,EAAIZ,WAChB/D,SA3Fc+E,EA2FQJ,EAAIK,yBAA2B,GA1FvDhF,EAAU,IAAID,EAGQgF,EAAWtB,QAAQ,eAAgB,KACzClJ,MAAM,SAAS0F,SAAQ,SAASgF,GAClD,IAAIC,EAAQD,EAAK1K,MAAM,KACnBvE,EAAMkP,EAAMpF,QAAQyD,OACxB,GAAIvN,EAAK,CACP,IAAIP,EAAQyP,EAAMtK,KAAK,KAAK2I,OAC5BvD,EAAQ1B,OAAOtI,EAAKP,EACtB,CACF,IACOuK,IAgFH3D,EAAQY,IAAM,gBAAiB0H,EAAMA,EAAIQ,YAAc9I,EAAQ2D,QAAQnD,IAAI,iBAC3E,IAAI0D,EAAO,aAAcoE,EAAMA,EAAIV,SAAWU,EAAIS,aAClD/J,EAAQ,IAAIsI,EAASpD,EAAMlE,GAC7B,EAEAsI,EAAI/D,QAAU,WACZtF,EAAO,IAAImE,UAAU,0BACvB,EAEAkF,EAAIU,UAAY,WACd/J,EAAO,IAAImE,UAAU,0BACvB,EAEAkF,EAAIW,QAAU,WACZhK,EAAO,IAAI7B,EAAQmF,aAAa,UAAW,cAC7C,EAEA+F,EAAIY,KAAKd,EAAQxB,OAAQwB,EAAQxH,KAAK,GAEV,YAAxBwH,EAAQtB,YACVwB,EAAIa,iBAAkB,EACW,SAAxBf,EAAQtB,cACjBwB,EAAIa,iBAAkB,GAGpB,iBAAkBb,GAAO9F,IAC3B8F,EAAIc,aAAe,QAGrBhB,EAAQzE,QAAQC,SAAQ,SAASxK,EAAO8J,GACtCoF,EAAIe,iBAAiBnG,EAAM9J,EAC7B,IAEIgP,EAAQrB,SACVqB,EAAQrB,OAAOuC,iBAAiB,QAASd,GAEzCF,EAAIiB,mBAAqB,WAEA,IAAnBjB,EAAIkB,YACNpB,EAAQrB,OAAO0C,oBAAoB,QAASjB,EAEhD,GAGFF,EAAIoB,UAAkC,IAAtBtB,EAAQjD,UAA4B,KAAOiD,EAAQjD,UACrE,GACF,CAEArE,EAAM6I,UAAW,EAEZvH,EAAKtB,QACRsB,EAAKtB,MAAQA,EACbsB,EAAKsB,QAAUA,EACftB,EAAKsE,QAAUA,EACftE,EAAKkF,SAAWA,GAGlBlK,EAAQsG,QAAUA,EAClBtG,EAAQsJ,QAAUA,EAClBtJ,EAAQkK,SAAWA,EACnBlK,EAAQ0D,MAAQA,EAEhBxG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,GAIvD,CAhhBgB,CAghBd,CAAC,EACH,CAnhBD,CAmhBmB,oBAATgJ,KAAuBA,KAAOlJ,yCClhBxC,IAAI8H,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B3B,OAAO+C,eAAe6D,EAAGE,EAAI,CAAEb,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,GACnF,EAAI,SAAUiF,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAAkBtE,GACvCsE,EAAa,EAAQ,OAAoBtE,GACzCsE,EAAa,EAAQ,OAA0BtE,GAC/CsE,EAAa,EAAQ,OAA2BtE,GAChDsE,EAAa,EAAQ,OAAetE,uCCfpC,IAAIsB,EAAaxF,MAAQA,KAAKwF,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU9F,GAAS,IAAM+F,EAAKL,EAAUM,KAAKhG,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASlG,GAAS,IAAM+F,EAAKL,EAAiB,MAAE1F,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKpC,GAJlB,IAAe3D,EAIa2D,EAAOwC,KAAOP,EAAQjC,EAAO3D,QAJ1CA,EAIyD2D,EAAO3D,MAJhDA,aAAiByF,EAAIzF,EAAQ,IAAIyF,GAAE,SAAUG,GAAWA,EAAQ5F,EAAQ,KAIjBoG,KAAKN,EAAWI,EAAW,CAC7GH,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,OAClE,GACJ,EACA9E,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQsxC,eAAY,EACpB,MAAMohE,EAAa,EAAQ,OACrBC,EAAY,EAAQ,OACpBC,EAAkB,EAAQ,OAC1BC,EAAoB,EAAQ,OAC5BC,EAAS,EAAQ,OAIvB,MAAMxhE,EACF,WAAAxmC,CAAYioG,IACRA,EAAWA,GAAY,CAAC,GACfC,kBAAoBD,EAASC,mBAAqB,IAC3DD,EAASE,0BAA4BF,EAASE,2BAA6B,EAC3En3G,KAAKo3G,KAAO,IAAIJ,EAAOxhF,KAAKyhF,GAC5Bj3G,KAAKq3G,uBAAuBJ,EAChC,CACA,2BAAOK,CAAqBF,EAAMH,GAC9BG,EAAKG,oBAAoB,IAAIV,EAAUW,oBAAoBJ,EAAMH,IACjEG,EAAKG,oBAAoB,IAAIV,EAAUY,+BAA+BL,EAAMH,IAC5EG,EAAKG,oBAAoB,IAAIV,EAAUa,8BAA8BN,EAAMH,IAC3EG,EAAKG,oBAAoB,IAAIV,EAAUc,mCAAmCP,EAAMH,IAChFG,EAAKG,oBAAoB,IAAIV,EAAUe,mCAAmCR,EAAMH,IAChFG,EAAKG,oBAAoB,IAAIV,EAAUgB,0BAA0BT,EAAMH,GAC3E,CACA,gCAAOa,CAA0BV,EAAMH,GACnCG,EAAKW,yBAAyB,IAAIlB,EAAUmB,yBAAyBZ,EAAMH,IAC3EG,EAAKW,yBAAyB,IAAIlB,EAAUoB,oBAAoBb,EAAMH,IACtEG,EAAKW,yBAAyB,IAAIlB,EAAUqB,sBAAsBd,EAAMH,IACxEG,EAAKW,yBAAyB,IAAIlB,EAAUsB,uBAAuBf,EAAMH,IACzEG,EAAKW,yBAAyB,IAAIlB,EAAUuB,wBAAwBhB,EAAMH,IAC1EG,EAAKW,yBAAyB,IAAIlB,EAAUwB,qBAAqBjB,EAAMH,IACvEG,EAAKW,yBAAyB,IAAIlB,EAAUyB,qBAAqBlB,EAAMH,IACvEG,EAAKW,yBAAyB,IAAIlB,EAAU0B,qBAAqBnB,EAAMH,IACvEG,EAAKW,yBAAyB,IAAIlB,EAAU2B,uBAAuBpB,EAAMH,GAC7E,CACA,oCAAOwB,CAA8BrB,EAAMH,GACvCG,EAAKsB,6BAA6B,IAAI5B,EAAgB6B,4BAA4BvB,EAAMH,IACxFG,EAAKsB,6BAA6B,IAAI5B,EAAgB8B,6BAA6BxB,EAAMH,IACzFG,EAAKsB,6BAA6B,IAAI5B,EAAgB+B,2BAA2BzB,EAAMH,IACvFG,EAAKsB,6BAA6B,IAAI5B,EAAgBgC,2BAA2B1B,EAAMH,IACvFG,EAAKsB,6BAA6B,IAAI5B,EAAgBiC,yBAAyB3B,EAAMH,GACzF,CAQA,sBAAArhE,CAAuBojE,EAAcpwF,EAAS9hB,GAC1C,OAAOtB,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,OAAOA,KAAKi5G,iCAAiCD,QAAoBh5G,KAAKo3G,KAAK8B,cAAcjsG,MAAM2b,GAAU9hB,EAC7G,GACJ,CAQA,gCAAAmyG,CAAiCD,EAAcpwF,EAAS9hB,GACpDA,EAAUA,GAAW,CAAC,EACtB,MAAMqyG,EAAmC,iBAAjBH,GAA4B,EAAIpC,EAAW3pG,OAAO+rG,GAAgBA,EAEpFI,EAAiB,CACnBxwF,UACAywF,oBAHwBr5G,KAAKs5G,eAAeH,GAI5CvtF,MAAO5rB,KAAKo3G,KAAKv9C,YAAY5zB,eAC7Bnb,KAAM,GACNyuF,iBAAkBxC,EAAkByC,iBAAiBC,OACrD9jE,qBAAsB7uC,EAAQ6uC,sBAAwB,CAAC,EACvD5qB,QAAS,KACT2uF,kBAAmB,GACnBC,cAAe7yG,EAAQ6yG,eAAiB,CAAC,EACzCC,kBAAmB,CAAC,GAExB,OAAO55G,KAAKo3G,KAAKyC,WAAWV,EAAUC,EAC1C,CASA,cAAAE,CAAeH,GACX,MAAME,EAAsB,CAAC,EACvBS,EAAiB,GACvB,IAAK,MAAMxnC,KAAc6mC,EAAStvB,YACN,uBAApBvX,EAAWynC,KACXV,EAAoB/mC,EAAWtoE,KAAK9J,OAASoyE,EAG7CwnC,EAAev2G,KAAK+uE,GAI5B,OADA6mC,EAAStvB,YAAciwB,EAChBT,CACX,CACA,sBAAAhC,CAAuBJ,GACnBzhE,EAAU8hE,qBAAqBt3G,KAAKo3G,KAAMH,GAC1CzhE,EAAUsiE,0BAA0B93G,KAAKo3G,KAAMH,GAC/CzhE,EAAUijE,8BAA8Bz4G,KAAKo3G,KAAMH,EACvD,EAEJ/yG,EAAQsxC,UAAYA,8BChHpB,IAAWgkE,EANXp4G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQs1G,sBAAmB,GAKhBA,EASWt1G,EAAQs1G,mBAAqBt1G,EAAQs1G,iBAAmB,CAAC,IAL1DA,EAAyB,OAAI,GAAK,SAInDA,EAAiBA,EAAyB,OAAI,GAAK,qCCdvDp4G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,kCCAtDkB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQsxB,UAAO,EACf,MAAMvL,EAAqB,EAAQ,OAC7B+vF,EAA0B,EAAQ,OAClC7vF,EAAoB,EAAQ,OAqPlCjmB,EAAQsxB,KAjPR,MACI,WAAAxmB,CAAYioG,GACRj3G,KAAKi6G,aAAe,CAAC,EACrBj6G,KAAKk6G,kBAAoB,CAAC,EAC1Bl6G,KAAKm6G,sBAAwB,CAAC,EAC9Bn6G,KAAKi3G,SAAWA,EAChBj3G,KAAK65D,YAAco9C,EAASp9C,aAAe,IAAI5vC,EAAmBK,YAClEtqB,KAAKo6G,iBAAmB,IAAIjwF,EAAkByF,QAAQ5vB,KAAK65D,aAC3D75D,KAAKk5G,cAAgB,IAAIc,EAAwBK,aACrD,CAKA,mBAAA9C,CAAoB+C,GAChBt6G,KAAKi6G,aAAaK,EAAYC,YAAcD,CAChD,CAMA,wBAAAvC,CAAyByC,GACrBx6G,KAAKk6G,kBAAkBM,EAAiBD,YAAcC,CAC1D,CAKA,4BAAA9B,CAA6B+B,GACzBz6G,KAAKm6G,sBAAsBM,EAAqBF,YAAcE,CAClE,CAOA,UAAAZ,CAAWriE,EAAM4hE,GACb,MAAMkB,EAAct6G,KAAKi6G,aAAaziE,EAAKuiE,MAC3C,IAAKO,EACD,MAAM,IAAIv4G,MAAM,6BAA6By1C,EAAKuiE,SAEtD,OAAOO,EAAY7xF,OAAO+uB,EAAM4hE,EACpC,CAQA,eAAAsB,CAAgBljE,EAAMmjE,EAAWvB,GAC7B,MAAMoB,EAAmBx6G,KAAKk6G,kBAAkB1iE,EAAKuiE,MACrD,IAAKS,EACD,MAAM,IAAIz4G,MAAM,mCAAmCy1C,EAAKuiE,SAE5D,OAAOS,EAAiB/xF,OAAO+uB,EAAMmjE,EAAWvB,EACpD,CAOA,mBAAAwB,CAAoBC,EAAkBzB,GAClC,MAAMqB,EAAuBz6G,KAAKm6G,sBAAsBU,EAAiBC,UAAU9wG,KAAK9J,OACxF,OAAKu6G,EAGEA,EAAqBhyF,OAAOoyF,EAAkBzB,GAF1C,IAGf,CAOA,cAAA/uE,CAAenO,GACX,GAA0B,IAAtBA,EAAW36B,OACX,OAAO26B,EAAW,GAGtB,MAAMoO,EAAO,GACPywE,EAAU,GAChB,IAAK,MAAMpwF,KAAauR,EACG,QAAnBvR,EAAUje,KACV49B,EAAK/mC,KAAKonB,GAGVowF,EAAQx3G,KAAKonB,GAGrB,GAAI2f,EAAK/oC,SAAW26B,EAAW36B,OAE3B,OAAOvB,KAAKg7G,oBAAoB1wE,GAE/B,GAAIA,EAAK/oC,SAAW26B,EAAW36B,OAAS,GAClB,aAApBw5G,EAAQ,GAAGruG,MACkB,QAA7BquG,EAAQ,GAAGttG,MAAM,GAAGf,KAAgB,CAGvC,MAAMuuG,EAAmBF,EAAQ,GAEjC,OADAzwE,EAAK/mC,KAAK03G,EAAiBxtG,MAAM,IAC1BzN,KAAKo6G,iBAAiB/5E,eAAergC,KAAKg7G,oBAAoB1wE,GAAO2wE,EAAiBxtG,MAAM,GACvG,CACK,OAAIstG,EAAQx5G,SAAW26B,EAAW36B,OAE5BvB,KAAKk7G,2BAA2BH,GAIhC/6G,KAAKk7G,2BAA2B,CACnCl7G,KAAKg7G,oBAAoB1wE,GACzBtqC,KAAKk7G,2BAA2BH,IAG5C,CACA,mBAAAC,CAAoB9+E,GAChB,OAAOl8B,KAAKo6G,iBAAiBt2E,UAAU,GAAGoD,OAAO3gC,MAAM,GAAI21B,EACtD/2B,KAAKwwB,GAAOA,EAAG8F,YACxB,CACA,0BAAAy/E,CAA2Bh/E,GACvB,OAAOl8B,KAAKo6G,iBAAiB5+E,WAAWU,EAC5C,CAOA,iBAAAi/E,CAAkBrwF,EAAMswF,GACpB,OAAOtwF,EAAKoc,OAAO,CAACk0E,GACxB,CAMA,aAAAC,CAAcl0C,GACV,OAAQA,EAAMm0C,MAAQn0C,EAAMm0C,MAAQn0C,EAAMn9D,MAAM9J,KACpD,CAQA,cAAAq7G,CAAeH,EAAYhC,GACvB,OAAOp5G,KAAK65D,YAAY5uC,UAAUmuF,EAAetuF,KAAKvpB,OAChD63G,EAAetuF,KAAKzlB,KAAKrF,KAAKi3G,SAASC,mBAAqBl3G,KAAKi3G,SAASC,kBAAoB,IAAMkE,EAC9G,CAOA,gBAAAI,CAAiBt7G,EAAO0oB,GACpB,MAAM6yF,EAAe7yF,EAAQ8yF,WAAWx7G,GAAO,GAC/C,GAAIF,KAAKi3G,SAASxhE,iBAAmBgmE,EACjC,MAAM,IAAI15G,MAAM,kCAAoC7B,GAExD,OAAOF,KAAK65D,YAAYtlC,UAAUknF,GAAgBv7G,EACtD,CAQA,WAAAy7G,CAAYl3G,EAAMuF,GACd,GAAIvF,EACA,IAAK,MAAMm3G,KAAYn3G,EACnB,GAAIm3G,EAAS5xG,KAAK9J,QAAU8J,EACxB,OAAO4xG,CAIvB,CAQA,cAAAC,CAAe9wF,EAAS+wF,EAAe1C,GACnC,OAAOp5G,KAAKo6G,iBAAiB/tF,cAActB,EAAS/qB,KAAK65D,YAAYtlC,UAAU,mDAAoDv0B,KAAKw7G,iBAAiBM,EAAc9xG,KAAK9J,MAAOk5G,EAAexwF,SAAUwwF,EAAextF,MAC/N,CAUA,iBAAAmwF,CAAkBhxF,EAASixF,EAAehxF,EAAQY,EAAOhD,GACrD,MAAMgC,EAAY5qB,KAAKw7G,iBAAiBQ,EAAc97G,MAAO0oB,GAC7D,OAAIA,GAAWA,EAAQqzF,gBAAgBD,EAAc97G,QAC9C0oB,EAAQqzF,gBAAgBD,EAAc97G,OAAO,YACzCF,KAAKo6G,iBAAiB/tF,cAAcrB,EAAQJ,EAAWG,EAASa,GAEpE5rB,KAAKo6G,iBAAiB/tF,cAActB,EAASH,EAAWI,EAAQY,EAC3E,CAWA,cAAAswF,CAAenxF,EAASixF,EAAeG,EAAuBnxF,EAAQY,EAAOhD,GACzE,MAAMwzF,EAAmBp8G,KAAKw7G,iBAAiBQ,EAAc97G,MAAO0oB,GACpE,IAAIyzF,EAAar8G,KAAKo6G,iBAAiBkC,WAAWF,GAElD,IAAK,MAAMG,KAAwBJ,EAAsB9uG,OAAQ,CAC7D,GAAkC,cAA9BkvG,EAAqBxC,KACrB,MAAM,IAAIh4G,MAAM,qEACVw6G,EAAqBxC,MAE/BsC,EAAar8G,KAAKo6G,iBAAiBv/E,UAAU,CACzCwhF,EACAr8G,KAAKo6G,iBAAiBkC,WAAWt8G,KAAKw7G,iBAAiBe,EAAqBr8G,MAAO0oB,KAE3F,CAEA,OAAIA,GAAWA,EAAQqzF,gBAAgBD,EAAc97G,QAC9C0oB,EAAQqzF,gBAAgBD,EAAc97G,OAAO,YACzCF,KAAKo6G,iBAAiBnuF,WAAWjB,EAAQqxF,EAAYtxF,EAASa,GAElE5rB,KAAKo6G,iBAAiBnuF,WAAWlB,EAASsxF,EAAYrxF,EAAQY,EACzE,+BCvPJxqB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQs4G,wBAAqB,EAwH7Bt4G,EAAQs4G,mBApHR,MACI,WAAAxtG,CAAYurG,EAAYnD,EAAMH,GAC1Bj3G,KAAKu6G,WAAaA,EAClBv6G,KAAKo3G,KAAOA,EACZp3G,KAAKi3G,SAAWA,CACpB,CAgBA,8BAAAwF,CAA+BC,EAActB,EAAYhC,GACrD,MAAMuD,EAAkB,CAAC,EACzB,GAAID,EACA,IAAK,MAAME,KAAiBF,EAAaG,WACrC,GAA2B,UAAvBD,EAAc7C,KAAkB,CAChC,MAAM+C,EAAYF,EAClB58G,KAAK+8G,2BAA2BD,EAAW1D,EAAgBuD,EAAiB,KAAM,WAClF38G,KAAK+8G,2BAA2BD,EAAW1D,EAAgBuD,EAAiB,QAAS,QACzF,CAGR,OAAOA,CACX,CASA,0BAAAI,CAA2BD,EAAW1D,EAAgBuD,EAAiBhC,EAAWqC,GAC9E,IAAKL,EAAgBK,IAAuBF,EAAU9yG,KAAK9J,QAAUy6G,EAAW,CAE5E,IAAKgC,EAAgBK,GAAqB,CACtC,MAAMpB,EAAW57G,KAAKo3G,KAAKuE,YAAYmB,EAAUn6F,UAAW,KAC5D,GAAIi5F,EAAU,CACV,MAAMqB,EAAcj9G,KAAKo3G,KAAKsD,gBAAgBkB,EAAS17G,MAAO48G,EAAU9yG,KAAK9J,MAAOk5G,GACpF,GAAiC,IAA7B6D,EAAY9gF,MAAM56B,OAClB,MAAM,IAAIQ,MAAM,oCAAoC44G,cAAsBsC,EAAY9gF,MACjF56B,aAAau7G,EAAU9yG,KAAK9J,SAErCy8G,EAAgBK,GAAsBC,EAAY9gF,MAAM,GACpD8gF,EAAYC,oBACPP,EAAgBO,oBACjBP,EAAgBO,kBAAoB,IAExCP,EAAgBO,kBAAkBh2E,OAAO+1E,EAAYC,mBAE7D,CACJ,CACA,IAAKP,EAAgBK,GAAqB,CACtC,MAAM3oF,EAAOr0B,KAAKo3G,KAAKmE,eAAev7G,KAAKo3G,KAAKiE,cAAcyB,GAAY1D,GAC1EA,EAAeM,kBAAkBn2G,KAAK8wB,GACtCsoF,EAAgBK,GAAsB3oF,CAC1C,CACJ,CACJ,CAYA,mBAAA8oF,CAAoBC,EAAYhC,EAAYhC,GACxC,MAAM1lE,EAAU,GAChB,GAAI0pE,EACA,IAAK,MAAMtC,KAAasC,EAAY,CAChC,MAAMvkF,EAAS74B,KAAKo3G,KAAKwD,oBAAoB,CAAEE,YAAWM,cAAchC,GACxE,GAAIvgF,EAAQ,CACR,GAAIA,EAAOwkF,OACP,OAAO,KAEX3pE,EAAQnwC,KAAKs1B,EACjB,CACJ,CAEJ,OAAO6a,CACX,CAUA,sBAAA4pE,CAAuBC,EAAkB5yF,GACrC,IAAK,MAAM6yF,KAAmBD,EAAkB,CAC5C,GAAIC,EAAgBH,OAChB,OAAOr9G,KAAKo3G,KAAKgD,iBAAiBt2E,UAAU,IAE5C05E,EAAgBC,qBAChB9yF,EAAY6yF,EAAgBC,mBAAmB9yF,GAEvD,CACA,OAAOA,CACX,iCCvHJvpB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQw5G,kCAA+B,EACvC,MAAMC,EAAuB,EAAQ,OAIrC,MAAMD,UAAqCC,EAAqBnB,mBAC5D,WAAAxtG,CAAYurG,EAAYnD,EAAMH,GAC1B53F,MAAMk7F,EAAYnD,EAAMH,EAC5B,EAEJ/yG,EAAQw5G,6BAA+BA,gCCXvCt8G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQwzG,mCAAgC,EACxC,MAAMkG,EAAiC,EAAQ,OAK/C,MAAMlG,UAAsCkG,EAA+BF,6BACvE,WAAA1uG,CAAYooG,EAAMH,GACd53F,MAAM,qBAAsB+3F,EAAMH,EACtC,CACA,MAAAxuF,CAAOo1F,EAAqBzE,GACxB,MAAM,IAAIr3G,MAAM,oFACpB,EAEJmC,EAAQwzG,8BAAgCA,+BCfxCt2G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQuzG,oCAAiC,EACzC,MAAMmG,EAAiC,EAAQ,OAI/C,MAAMnG,UAAuCmG,EAA+BF,6BACxE,WAAA1uG,CAAYooG,EAAMH,GACd53F,MAAM,sBAAuB+3F,EAAMH,EACvC,CACA,MAAAxuF,CAAOo1F,EAAqBzE,GACxB,GAAsC,UAAlCyE,EAAoBlzF,UACpB,MAAM,IAAI5oB,MAAM,qCAAuC87G,EAAoBlzF,WAI/E,GAAIkzF,EAAoBC,oBACpB,IAAK,MAAMC,KAAsBF,EAAoBC,oBAAqB,CACtE,MAAM9zG,EAAO+zG,EAAmB9yF,SAASjhB,KAAK9J,MAE1C69G,EAAmBvmB,eACd4hB,EAAeO,cAAc3vG,KAC9BovG,EAAeO,cAAc3vG,GAAQ+zG,EAAmBvmB,eAIhE,IAAIwmB,EAAWD,EAAmBrxG,KAClC,MAAMuxG,EAA8B,gBAAlBD,EAASjE,KACvBkE,IACAD,EAAWA,EAAStxG,MAExB,MAAM+8F,EAAyB,aAAlBuU,EAASjE,KAClBtQ,IACAuU,EAAWA,EAAStxG,MAExB,MAAMA,EAAOsxG,EAASh0G,KAAK9J,MAC3Bk5G,EAAeQ,kBAAkB5vG,GAAQ,CAAEi0G,YAAWxU,OAAM/8F,OAChE,CAGJ,MAAM6wG,EAAmBv9G,KAAKm9G,oBAAoBU,EAAoBT,WAAYS,EAAoB7zG,KAAO6zG,EAAoB7zG,KAAK9J,MAAQ,GAAIk5G,GAClJ,IAAKmE,EACD,OAAOv9G,KAAKo3G,KAAKgD,iBAAiBt2E,UAAU,IAGhD,MAAMnZ,EAAY3qB,KAAKo3G,KAAK/sE,eAAewzE,EAAoBnB,aAAaG,WACvE13G,KAAKy3G,GAAkB58G,KAAKo3G,KAAKyC,WAAW+C,EAAexD,MAEhE,OAAOp5G,KAAKs9G,uBAAuBC,EAAkB5yF,EACzD,EAEJzmB,EAAQuzG,+BAAiCA,+BCnDzCr2G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQszG,yBAAsB,EAC9B,MAAMrtF,EAAoB,EAAQ,OAC5BwzF,EAAuB,EAAQ,OAIrC,MAAMnG,UAA4BmG,EAAqBnB,mBACnD,WAAAxtG,CAAYooG,EAAMH,GACd53F,MAAM,WAAY+3F,EAAMH,EAC5B,CACA,MAAAxuF,CAAO0wF,EAAUC,GACb,MAAM8E,EAAuB/E,EAAStvB,YACjC1kF,KAAKmtE,IACN,MAAM6rC,EAAgBn+G,KAAKo+G,iCAAiC9rC,EAAYlxE,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG4jG,GAAiB,CAAEiF,wBAAwB,KAC7IC,EAAoBl9G,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG4jG,GAAiB,CAAExtF,MAAOuyF,EAAcvyF,OAASwtF,EAAextF,MAAOb,QAASozF,EAAcpzF,SAAW/qB,KAAKo3G,KAAKv9C,YAAY3kC,cACzL,IAAIqpF,EAAsBv+G,KAAKo3G,KAAKyC,WAAWvnC,EAAYgsC,GAO3D,OANIH,GAAiBA,EAAcjB,oBAC/BqB,EAAsBv+G,KAAKo3G,KAAK/sE,eAAe,CAC3Ck0E,EACAv+G,KAAKo3G,KAAKgD,iBAAiBt2E,UAAUq6E,EAAcjB,sBAGpDqB,CAAmB,IAExB5zF,EAAY3qB,KAAKo3G,KAAKgD,iBAAiBt6E,cAA8C,IAAhCo+E,EAAqB38G,OAAe28G,EAAqB,GAAKl+G,KAAKo3G,KAAKgD,iBAAiBjuF,YAAY+xF,GAAuB9E,EAAeM,mBAEtM,OAAO15G,KAAKw+G,+BAA+B7zF,EAC/C,CAOA,gCAAAyzF,CAAiC9rC,EAAY8mC,GACzC,GAAwB,wBAApB9mC,EAAWynC,KACX,OAAO/5G,KAAKy8G,+BAA+BnqC,EAAWoqC,aAAcpqC,EAAWtoE,KAAOsoE,EAAWtoE,KAAK9J,MAAQ,GAAIk5G,GAEtH,MAAM,IAAIr3G,MAAM,2BAA2BuwE,EAAWynC,OAC1D,CAMA,8BAAAyE,CAA+B7zF,GAC3B,MAAMzhB,EAAOlJ,KACPy+G,EAAyB,CAAC,EAC1BC,EAAe/zG,MAAMkpE,KAAKlpD,EAAU3H,WACrCga,QAAO,CAACk0B,EAAKjmC,KACdimC,EAAIjmC,EAAS/qB,QAAS,EACfgxD,IACR,CAAC,GACJ,OAAO/mC,EAAkBqL,KAAKC,aAAa9K,EAAW,CAClDG,KAAM,CAAC6K,EAAIC,KACA,CACHC,SAAS,EACThyB,OAAQ+xB,EAAQ3J,WAAWoqB,EAAgB1gB,EAAG5K,SAAU4K,EAAG/K,UAAWyrB,EAAgB1gB,EAAG3K,QAASqrB,EAAgB1gB,EAAG/J,UAG7H8D,QAAS,CAACiG,EAAIC,KACH,CACHC,SAAS,EACThyB,OAAQ+xB,EAAQvJ,cAAcgqB,EAAgB1gB,EAAG5K,SAAUsrB,EAAgB1gB,EAAG/K,WAAYyrB,EAAgB1gB,EAAG3K,QAASqrB,EAAgB1gB,EAAG/J,YAIrJ,SAASyqB,EAAgBhiB,GACrB,GAAsB,cAAlBA,EAAK7G,SAA0B,CAC/B,IAAIvC,EAAWwzF,EAAuBpqF,EAAKn0B,OAM3C,OALK+qB,IACDA,EAAWd,EAAkBqL,KAAKmpF,qBAAqBtqF,EAAKn0B,MAAOw+G,EAAcx1G,EAAKkuG,KAAKv9C,aAC3F6kD,EAAazzF,EAAS/qB,QAAS,EAC/Bu+G,EAAuBpqF,EAAKn0B,OAAS+qB,GAElCA,CACX,CACA,OAAOoJ,CACX,CACJ,EAEJnwB,EAAQszG,oBAAsBA,gCClF9Bp2G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ06G,iCAA8B,EACtC,MAAMz0F,EAAoB,EAAQ,OAC5B4sF,EAAoB,EAAQ,OAC5B4G,EAAuB,EAAQ,OAIrC,MAAMiB,UAAoCjB,EAAqBnB,mBAC3D,WAAAxtG,CAAYurG,EAAYnD,EAAMH,GAC1B53F,MAAMk7F,EAAYnD,EAAMH,EAC5B,CAQA,2BAAA4H,CAA4B13C,EAAOi0C,EAAYhC,GAC3C,OAAOp5G,KAAKy8G,+BAA+Bt1C,EAAMu1C,aAActB,EAAYh6G,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG4jG,GAAiB,CAAEtuF,KAAM9qB,KAAKo3G,KAAK+D,kBAAkB/B,EAAetuF,KAAMswF,KACzL,CASA,gBAAA0D,CAAiB1F,EAAgB0D,EAAWiC,EAAuB7B,GAE/D,MAAM8B,EAAUD,EAEhB,IACI1jG,EADAra,EAAS,EAGb,IAA6B,OAAzB87G,EAAU9yG,KAAK9J,OAA2C,UAAzB48G,EAAU9yG,KAAK9J,SAChD6+G,GAAwB,EAIpBjC,EAAUn6F,WACV,IAAK,MAAMi5F,KAAYkB,EAAUn6F,UACD,MAAxBi5F,EAAS5xG,KAAK9J,OACdF,KAAKo3G,KAAKsD,gBAAgBkB,EAAS17G,MAAO48G,EAAU9yG,KAAK9J,MAAOk5G,GAMhF,MAAMgC,EAAap7G,KAAKo3G,KAAKiE,cAAcyB,GAM3C,GAJI1D,EAAeG,mBAAqBxC,EAAkByC,iBAAiByF,SACvE7F,EAAezjE,qBAAqB31C,KAAKo3G,KAAKmE,eAAeH,EAAYhC,GAAgBl5G,QAAS,GAGlG6+G,EAAuB,CACvB,MAAMG,EAAoBl/G,KAAKm/G,gBAAgB/F,EAAgBgC,EAAY8B,GAC3E,GAAIgC,EACA,OAAOA,CAEf,CACA,MAAMhjF,EAAaghF,EACb,CAACl9G,KAAKo3G,KAAKgD,iBAAiBt2E,UAAUo5E,IAAsB,GAE5DiB,EAAgBn+G,KAAK6+G,4BAA4B/B,EAAW1B,EAAYhC,GAC9E,IAAIpuF,EAASmzF,EAAcpzF,SAAW/qB,KAAKo3G,KAAKmE,eAAeH,EAAYhC,GACvExtF,EAAQuyF,EAAcvyF,OAASwtF,EAAextF,MAC9CuyF,EAAcjB,mBACdhhF,EAAW34B,KAAKvD,KAAKo3G,KAAKgD,iBAAiBt2E,UAAUq6E,EAAcjB,oBAIvE,IAAInB,GAAoB,EACpBqD,EAAsB,KAC1B,GAAIL,GAAyBjC,EAAUn6F,WAAam6F,EAAUn6F,UAAUphB,OACpE,IAAK,MAAMq6G,KAAYkB,EAAUn6F,UAAW,CACxC,GAA4B,MAAxBi5F,EAAS5xG,KAAK9J,MAAe,CAE7B,MAAM+8G,EAAcj9G,KAAKo3G,KAAKsD,gBAAgBkB,EAAS17G,MAAO48G,EAAU9yG,KAAK9J,MAAOk5G,GACpFgG,EAAsBnC,EAAY9gF,MAClCD,EAAW34B,KAAKvD,KAAKo3G,KAAKgD,iBAAiBt2E,UAAUm5E,EAAY9gF,MAAMh3B,KAAKkvB,GAASr0B,KAAKo3G,KAAK2E,kBAAkB3C,EAAeruF,QAAS+xF,EAAU9yG,KAAMqqB,EAAM+kF,EAAextF,MAAOwtF,EAAexwF,aAChMq0F,EAAYC,mBACZhhF,EAAW34B,KAAKvD,KAAKo3G,KAAKgD,iBAAiBt2E,UAAUm5E,EAAYC,oBAErE6B,GAAwB,EACxB,KACJ,CACK,GAA4B,UAAxBnD,EAAS5xG,KAAK9J,MAAmB,CAEtC,MAAM+8G,EAAcj9G,KAAKo3G,KAAKsD,gBAAgBkB,EAAS17G,MAAO48G,EAAU9yG,KAAK9J,MAAOk5G,GACpF,GAAiC,IAA7B6D,EAAY9gF,MAAM56B,OAClB,MAAM,IAAIQ,MAAM,mDAAmDk7G,EAAY9gF,MAC1E56B,aAAau7G,EAAU9yG,KAAK9J,SAErC0rB,EAAQqxF,EAAY9gF,MAAM,GAC1Bi9E,EAAiBh4G,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG4jG,GAAiB,CAAExtF,UAChEqxF,EAAYC,mBACZhhF,EAAW34B,KAAKvD,KAAKo3G,KAAKgD,iBAAiBt2E,UAAUm5E,EAAYC,oBAErE,KACJ,CACK,GAA4B,QAAxBtB,EAAS5xG,KAAK9J,MAAiB,CAEpC,IAAIm/G,EAAYzD,EAAS17G,MACF,cAAnBm/G,EAAUtF,OACVsF,EAAY,CAAEtF,KAAM,YAAa1sG,OAAQ,CAACgyG,KAE9CnjF,EAAW34B,KAAKvD,KAAKo3G,KAAK8E,eAAe9C,EAAeruF,QAAS+xF,EAAU9yG,KAAMq1G,EAAWr0F,EAAQouF,EAAextF,MAAOwtF,EAAexwF,UACzImzF,GAAoB,EACpB,KACJ,CACJ,CASJ,GANIgD,GAAyBhD,GACzB7/E,EAAW34B,KAAKvD,KAAKo3G,KAAKgD,iBAAiBt2E,UAAU,CACjD9jC,KAAKo3G,KAAK2E,kBAAkB3C,EAAeruF,QAAS+xF,EAAU9yG,KAAMghB,EAAQouF,EAAextF,MAAOwtF,EAAexwF,YAIrHk0F,EAAUn6F,WAAam6F,EAAUn6F,UAAUphB,OAC3C,IAAK,MAAMq6G,KAAYkB,EAAUn6F,UAC7B,GAA4B,MAAxBi5F,EAAS5xG,KAAK9J,OAAyC,UAAxB07G,EAAS5xG,KAAK9J,OAA6C,QAAxB07G,EAAS5xG,KAAK9J,YAG/E,GAA4B,UAAxB07G,EAAS5xG,KAAK9J,MAAmB,CACtC,GAA4B,aAAxB07G,EAAS17G,MAAM65G,KACf,MAAM,IAAIh4G,MAAM,4CAAgD65G,EAAS17G,MAAM65G,MAEnF1+F,EAAQnY,SAAS04G,EAAS17G,MAAMA,MAAO,GAC3C,MACK,GAA4B,WAAxB07G,EAAS5xG,KAAK9J,MAAoB,CACvC,GAA4B,aAAxB07G,EAAS17G,MAAM65G,KACf,MAAM,IAAIh4G,MAAM,6CAAiD65G,EAAS17G,MAAM65G,MAEpF/4G,EAASkC,SAAS04G,EAAS17G,MAAMA,MAAO,GAC5C,KACK,CACD,MAAM+8G,EAAcj9G,KAAKo3G,KAAKsD,gBAAgBkB,EAAS17G,MAAO07G,EAAS5xG,KAAK9J,MAAOk5G,GACnFl9E,EAAW34B,KAAKvD,KAAKo3G,KAAKgD,iBAAiBt2E,UAAUm5E,EAAY9gF,MAAMh3B,KAAKkvB,GAASr0B,KAAKo3G,KAAK2E,kBAAkB/wF,EAAQ4wF,EAAS5xG,KAAMqqB,EAAM+kF,EAAextF,MAAOwtF,EAAexwF,aAC/Kq0F,EAAYC,mBACZhhF,EAAW34B,KAAKvD,KAAKo3G,KAAKgD,iBAAiBt2E,UAAUm5E,EAAYC,mBAEzE,CAIR,MAAMK,EAAmBv9G,KAAKm9G,oBAAoBL,EAAUM,WAAYhC,EAAYhC,GACpF,IAAKmE,EACD,OAAOv9G,KAAKo3G,KAAKgD,iBAAiBt2E,UAAU,IAGhD,IAAInZ,EAAY3qB,KAAKo3G,KAAK/sE,eAAenO,GACzC,GAAI4gF,EAAUJ,cAAgBI,EAAUJ,aAAaG,WAAWt7G,OAAQ,CAEpE,GAAI69G,EAAqB,CACrB,GAAmC,IAA/BA,EAAoB79G,OACpB,MAAM,IAAIQ,MAAM,gDAAgDq9G,EAC3D79G,aAAau7G,EAAU9yG,KAAK9J,SAErC8qB,EAASo0F,EAAoB,EACjC,CAEA,MAAME,EAAoBl+G,OAAOoU,OAAOpU,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG4jG,GAAiB4F,EAAU,CAAEl0F,KAAM9qB,KAAKo3G,KAAK+D,kBAAkB/B,EAAetuF,KAAMswF,IAAgB,CAAC,GAAI,CAAExvF,QAAOb,QAASi0F,EAAUh0F,EAASouF,EAAeruF,UAErO,IAAIw0F,GAAa,EACjB,MAAM1C,EAAaC,EAAUJ,aAAaG,WACrC53G,QAAQu6G,GACc,UAAnBA,EAAUzF,MAA6C,eAAzByF,EAAUx1G,KAAK9J,QAC7Cq/G,GAAa,GACN,KAIf,IAAIE,EAAkBz/G,KAAKo3G,KAAK/sE,eAAenO,EAC1CgL,OAAO21E,EAAW13G,KAAKy3G,GAAkB58G,KAAKo3G,KAAKyC,WAAW+C,EAAe0C,OAElF,GAAIC,EAAY,CAEZ,MAAMG,EAAqB1/G,KAAKo3G,KAAKv9C,YAAY5uC,SAAS,MAAQjrB,KAAKi3G,SAASE,6BAC1EwI,EAAoB3/G,KAAKo3G,KAAKv9C,YAC/B5uC,SAASD,EAAO9qB,MAAQF,KAAKi3G,SAASC,kBAAoB,cACzDn5C,EAAa/9D,KAAKo3G,KAAKgD,iBAAiBp4D,qBAAqB09D,EAAoB,QAAS1/G,KAAKo3G,KAAKgD,iBAAiB/oE,qBAAqBrmB,IAAS,GACnJ40F,EAAe5/G,KAAKo3G,KAAKgD,iBAAiBt6E,cAAc9/B,KAAKo3G,KAAKgD,iBAAiB16E,aAAa1/B,KAAKo3G,KAAKgD,iBAAiBr4D,YAAYp3B,EAAW,GAAI,CAACozC,IAAc4hD,EAAmB3/G,KAAKo3G,KAAKgD,iBAAiB/oE,qBAAqBquE,IAAsB,CAACC,IACrQvG,EAAeM,kBAAkBn2G,KAAKo8G,GAQlCF,EAJC5C,EAAWt7G,OAIMvB,KAAKo3G,KAAKgD,iBAAiB5+E,WAAW,CACpDx7B,KAAKo3G,KAAKgD,iBAAiBt6E,cAAc2/E,EAAiB,IAC1DG,IALcA,CAQ1B,CACAj1F,EAAY80F,CAChB,MACSV,GAA6C,aAApB/zF,EAAOwC,UAGrC4rF,EAAeM,kBAAkBn2G,KAAKynB,GAO1C,OAJIhqB,GAAUqa,KACVsP,EAAY3qB,KAAKo3G,KAAKgD,iBAAiByF,YAAY7/G,KAAKo3G,KAAKgD,iBAAiBt6E,cAAcnV,EAAWR,EAAkBqL,KAAKkJ,iBAAiB/T,IAAa3pB,EAAQqa,IAGjKrb,KAAKs9G,uBAAuBC,EAAkB5yF,EACzD,CAUA,eAAAw0F,CAAgB/F,EAAgBgC,EAAY8B,GAGxC,GAAmB,eAAf9B,EAA6B,CAC7B,MAAMpwF,EAAShrB,KAAKo3G,KAAKmE,eAAeH,EAAYhC,GAEpD,OADAA,EAAeM,kBAAkBn2G,KAAKynB,GAC/BhrB,KAAKo3G,KAAKgD,iBAAiBt2E,UAAU,CACxC9jC,KAAKo3G,KAAKgD,iBAAiB/tF,cAAc+sF,EAAeruF,QAAS/qB,KAAKo3G,KAAKv9C,YAAYtlC,UAAU,mDAAoDv0B,KAAKo3G,KAAKmE,eAAeH,EAAYhC,GAAiBA,EAAextF,QAC5Nsb,OAAOg2E,GAAqB,IAClC,CACJ,EAEJh5G,EAAQ06G,4BAA8BA,gCC3OtCx9G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ2zG,+BAA4B,EACpC,MAAMiI,EAAgC,EAAQ,OAI9C,MAAMjI,UAAkCiI,EAA8BlB,4BAClE,WAAA5vG,CAAYooG,EAAMH,GACd53F,MAAM,QAAS+3F,EAAMH,EACzB,CACA,MAAAxuF,CAAOq0F,EAAW1D,GACd,OAAOp5G,KAAK8+G,iBAAiB1F,EAAgB0D,GAAW,EAC5D,EAEJ54G,EAAQ2zG,0BAA4BA,gCCdpCz2G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQyzG,wCAAqC,EAC7C,MAAMmI,EAAgC,EAAQ,OAI9C,MAAMnI,UAA2CmI,EAA8BlB,4BAC3E,WAAA5vG,CAAYooG,EAAMH,GACd53F,MAAM,iBAAkB+3F,EAAMH,EAClC,CACA,MAAAxuF,CAAOs3F,EAAoB3G,GACvB,MAAM4G,EAAyB5G,EAC1BC,oBAAoB0G,EAAmB/1G,KAAK9J,OACjD,IAAK8/G,EACD,MAAM,IAAIj+G,MAAM,kCAAoCg+G,EAAmB/1G,KAAK9J,OAGhF,MAAM48G,EAAY,CACdxB,WAAOn7G,EACPwiB,eAAWxiB,EACXi9G,WAAY4C,EAAuB5C,WACnCrD,KAAM,QACN/vG,KAAM+1G,EAAmB/1G,KACzB0yG,aAAcsD,EAAuBtD,cAEnCQ,EAAoB,CACtBl9G,KAAKo3G,KAAKyE,eAAezC,EAAeruF,QAASi1F,EAAuBlE,cAAe1C,IAE3F,OAAOp5G,KAAKo3G,KAAKgD,iBAAiB/5E,eAAergC,KAAKo3G,KAAKgD,iBAAiBt2E,UAAU,IAAK9jC,KAAK8+G,iBAAiB1F,EAAgB0D,GAAW,EAAOI,GACvJ,EAEJh5G,EAAQyzG,mCAAqCA,gCC/B7Cv2G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ0zG,wCAAqC,EAC7C,MAAMkI,EAAgC,EAAQ,OAI9C,MAAMlI,UAA2CkI,EAA8BlB,4BAC3E,WAAA5vG,CAAYooG,EAAMH,GACd53F,MAAM,iBAAkB+3F,EAAMH,EAClC,CACA,MAAAxuF,CAAOw3F,EAAoB7G,GAEvB,MAAM0D,EAAY,CACdxB,WAAOn7G,EACPwiB,eAAWxiB,EACXi9G,WAAY6C,EAAmB7C,WAC/BrD,KAAM,QACN/vG,KAAM,CAAE+vG,KAAM,OAAQ75G,MAAOk5G,EAAeruF,QAAQ7qB,OACpDw8G,aAAcuD,EAAmBvD,cAE/BQ,EAAoB+C,EAAmBnE,cACvC,CAAC97G,KAAKo3G,KAAKyE,eAAezC,EAAeruF,QAASk1F,EAAmBnE,cAAe1C,IAAmB,GAC7G,OAAOp5G,KAAKo3G,KAAKgD,iBAAiB/5E,eAAergC,KAAKo3G,KAAKgD,iBAAiBt2E,UAAU,IAAK9jC,KAAK8+G,iBAAiB1F,EAAgB0D,GAAW,EAAOI,GACvJ,EAEJh5G,EAAQ0zG,mCAAqCA,8BCzB7Cx2G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQg8G,iCAA8B,EAqCtCh8G,EAAQg8G,4BAjCR,MACI,WAAAlxG,CAAYurG,EAAYnD,EAAMH,GAC1Bj3G,KAAKu6G,WAAaA,EAClBv6G,KAAKo3G,KAAOA,EACZp3G,KAAKi3G,SAAWA,CACpB,CAOA,4BAAAkJ,CAA6BrF,EAAW1B,GACpC,MAAMv6E,EAAM7+B,KAAKo3G,KAAKuE,YAAYb,EAAUn4F,UAAW,MACvD,IAAKkc,EACD,MAAM,IAAI98B,MAAM,iBAAiB+4G,EAAU9wG,KAAK9J,oCAEpD,MAAMkgH,EAAWpgH,KAAKo3G,KAAKsD,gBAAgB77E,EAAI3+B,MAAO2+B,EAAI70B,KAAK9J,MAAOk5G,GACtE,GAA8B,IAA1BgH,EAASjkF,MAAM56B,OACf,MAAM,IAAIQ,MAAM,+BAA+B+4G,EAAU9wG,KAAK9J,sBAElE,OAAOkgH,EAASjkF,MAAM,EAC1B,CAMA,mBAAAkkF,CAAoBvF,GAChB,MAAMwF,EAAWtgH,KAAKo3G,KAAKuE,YAAYb,EAAUn4F,UAAW,SAC5D,OAAO29F,GAAoC,cAAxBA,EAASpgH,MAAM65G,MAAiD,QAAzBuG,EAASpgH,MAAMA,KAC7E,gCCpCJkB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQy0G,iCAA8B,EACtC,MAAM4H,EAAgC,EAAQ,OAI9C,MAAM5H,UAAoC4H,EAA8BL,4BACpE,WAAAlxG,CAAYooG,EAAMH,GACd53F,MAAM,UAAW+3F,EAAMH,EAC3B,CACA,MAAAxuF,CAAOoyF,EAAkBzB,GACrB,MAAM12D,EAAM1iD,KAAKmgH,6BAA6BtF,EAAiBC,UAAW1B,GAC1E,MAAqB,YAAjB12D,EAAIl1B,UAAwC,UAAdk1B,EAAIxiD,MAC3B,CAAEm9G,QAAQ,GAEd,CAAC,CACZ,EAEJn5G,EAAQy0G,4BAA8BA,gCClBtCv3G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ00G,kCAA+B,EACvC,MAAM2H,EAAgC,EAAQ,OAI9C,MAAM3H,UAAqC2H,EAA8BL,4BACrE,WAAAlxG,CAAYooG,EAAMH,GACd53F,MAAM,WAAY+3F,EAAMH,EAC5B,CACA,MAAAxuF,CAAOoyF,EAAkBzB,GACrB,MAAO,CACHqE,mBAAqB9yF,GAAc3qB,KAAKo3G,KAAKgD,iBAAiB/5E,eAAergC,KAAKo3G,KAAKgD,iBAAiBt2E,UAAU,IAAKnZ,GAE/H,EAEJzmB,EAAQ00G,6BAA+BA,gCChBvCx3G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ20G,gCAA6B,EACrC,MAAM9B,EAAoB,EAAQ,OAC5BwJ,EAAgC,EAAQ,OAI9C,MAAM1H,UAAmC0H,EAA8BL,4BACnE,WAAAlxG,CAAYooG,EAAMH,GACd53F,MAAM,SAAU+3F,EAAMH,EAC1B,CACA,MAAAxuF,CAAOoyF,EAAkBzB,GAMrB,OALIp5G,KAAKqgH,oBAAoBxF,EAAiBC,aAC1C1B,EAAeG,iBAAmBxC,EAAkByC,iBAAiBC,eAGlEL,EAAezjE,qBAAqB31C,KAAKo3G,KAAKmE,eAAeV,EAAiBO,WAAYhC,GAAgBl5G,OAC1G,CAAC,CACZ,EAEJgE,EAAQ20G,2BAA6BA,gCCpBrCz3G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ40G,gCAA6B,EACrC,MAAM/B,EAAoB,EAAQ,OAC5BwJ,EAAgC,EAAQ,OAI9C,MAAMzH,UAAmCyH,EAA8BL,4BACnE,WAAAlxG,CAAYooG,EAAMH,GACd53F,MAAM,SAAU+3F,EAAMH,EAC1B,CACA,MAAAxuF,CAAOoyF,EAAkBzB,GAKrB,OAJIp5G,KAAKqgH,oBAAoBxF,EAAiBC,aAC1C1B,EAAeG,iBAAmBxC,EAAkByC,iBAAiByF,QAEzE7F,EAAezjE,qBAAqB31C,KAAKo3G,KAAKmE,eAAeV,EAAiBO,WAAYhC,GAAgBl5G,QAAS,EAC5G,CAAC,CACZ,EAEJgE,EAAQ40G,2BAA6BA,gCCnBrC13G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ60G,8BAA2B,EACnC,MAAMwH,EAAgC,EAAQ,OAI9C,MAAMxH,UAAiCwH,EAA8BL,4BACjE,WAAAlxG,CAAYooG,EAAMH,GACd53F,MAAM,OAAQ+3F,EAAMH,EACxB,CACA,MAAAxuF,CAAOoyF,EAAkBzB,GACrB,MAAM12D,EAAM1iD,KAAKmgH,6BAA6BtF,EAAiBC,UAAW1B,GAC1E,MAAqB,YAAjB12D,EAAIl1B,UAAwC,SAAdk1B,EAAIxiD,MAC3B,CAAEm9G,QAAQ,GAEd,CAAC,CACZ,EAEJn5G,EAAQ60G,yBAA2BA,sCClBnC,IAAIjxG,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B3B,OAAO+C,eAAe6D,EAAGE,EAAI,CAAEb,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,GACnF,EAAI,SAAUiF,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAAkCtE,GACvDsE,EAAa,EAAQ,MAAkCtE,GACvDsE,EAAa,EAAQ,OAAmCtE,GACxDsE,EAAa,EAAQ,OAAiCtE,GACtDsE,EAAa,EAAQ,OAAiCtE,GACtDsE,EAAa,EAAQ,OAA+BtE,uCChBpD,IAAI4D,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B3B,OAAO+C,eAAe6D,EAAGE,EAAI,CAAEb,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,GACnF,EAAI,SAAUiF,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAAoBtE,GACzCsE,EAAa,EAAQ,OAAgBtE,GACrCsE,EAAa,EAAQ,OAAyBtE,GAC9CsE,EAAa,EAAQ,OAAmCtE,GACxDsE,EAAa,EAAQ,OAAoCtE,GACzDsE,EAAa,EAAQ,MAAqCtE,GAC1DsE,EAAa,EAAQ,MAA0BtE,GAC/CsE,EAAa,EAAQ,OAAkCtE,GACvDsE,EAAa,EAAQ,OAAgCtE,GACrDsE,EAAa,EAAQ,OAAyCtE,GAC9DsE,EAAa,EAAQ,OAAyCtE,+BCrB9D9C,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQs8G,6BAA0B,EAWlCt8G,EAAQs8G,wBAPR,MACI,WAAAxxG,CAAYurG,EAAYnD,EAAMH,GAC1Bj3G,KAAKu6G,WAAaA,EAClBv6G,KAAKo3G,KAAOA,EACZp3G,KAAKi3G,SAAWA,CACpB,iCCVJ71G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQk0G,6BAA0B,EAClC,MAAMqI,EAA4B,EAAQ,OAI1C,MAAMrI,UAAgCqI,EAA0BD,wBAC5D,WAAAxxG,CAAYooG,EAAMH,GACd53F,MAAM,eAAgB+3F,EAAMH,GAC5Bj3G,KAAK8hC,SAAW9hC,KAAKo3G,KAAKv9C,YAAYtlC,UAAU,2CACpD,CACA,MAAA9L,CAAOi4F,EAAW/F,EAAWvB,GACzB,MAAO,CAAEj9E,MAAO,CAACn8B,KAAKo3G,KAAKv9C,YAAY/d,QAAQ4kE,EAAUxgH,MAAQ,OAAS,QAASF,KAAK8hC,WAC5F,EAEJ59B,EAAQk0G,wBAA0BA,gCCflCh3G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQo0G,0BAAuB,EAC/B,MAAMmI,EAA4B,EAAQ,OAI1C,MAAMnI,UAA6BmI,EAA0BD,wBACzD,WAAAxxG,CAAYooG,EAAMH,GACd53F,MAAM,YAAa+3F,EAAMH,EAC7B,CACA,MAAAxuF,CAAOi4F,EAAW/F,EAAWvB,GACzB,MAAO,CAAEj9E,MAAO,CAACn8B,KAAKo3G,KAAKoE,iBAAiBkF,EAAUxgH,MAAOk5G,EAAexwF,UAChF,EAEJ1kB,EAAQo0G,qBAAuBA,+BCd/Bl3G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQg0G,2BAAwB,EAChC,MAAMuI,EAA4B,EAAQ,OAI1C,MAAMvI,UAA8BuI,EAA0BD,wBAC1D,WAAAxxG,CAAYooG,EAAMH,GACd53F,MAAM,aAAc+3F,EAAMH,GAC1Bj3G,KAAK8hC,SAAW9hC,KAAKo3G,KAAKv9C,YAAYtlC,UAAU,yCACpD,CACA,MAAA9L,CAAOi4F,EAAW/F,EAAWvB,GACzB,MAAO,CAAEj9E,MAAO,CAACn8B,KAAKo3G,KAAKv9C,YAAY/d,QAAQ4kE,EAAUxgH,MAAOF,KAAK8hC,WACzE,EAEJ59B,EAAQg0G,sBAAwBA,gCCfhC92G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ+zG,yBAAsB,EAC9B,MAAMwI,EAA4B,EAAQ,OAI1C,MAAMxI,UAA4BwI,EAA0BD,wBACxD,WAAAxxG,CAAYooG,EAAMH,GACd53F,MAAM,WAAY+3F,EAAMH,GACxBj3G,KAAK8hC,SAAW9hC,KAAKo3G,KAAKv9C,YAAYtlC,UAAU,2CACpD,CACA,MAAA9L,CAAOi4F,EAAW/F,EAAWvB,GACzB,MAAO,CAAEj9E,MAAO,CAACn8B,KAAKo3G,KAAKv9C,YAAY/d,QAAQ4kE,EAAUxgH,MAAOF,KAAK8hC,WACzE,EAEJ59B,EAAQ+zG,oBAAsBA,gCCf9B72G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQq0G,0BAAuB,EAC/B,MAAMkI,EAA4B,EAAQ,OAI1C,MAAMlI,UAA6BkI,EAA0BD,wBACzD,WAAAxxG,CAAYooG,EAAMH,GACd53F,MAAM,YAAa+3F,EAAMH,GACzBj3G,KAAK2gH,UAAY3gH,KAAKo3G,KAAKv9C,YAAYtlC,UAAU,oDACjDv0B,KAAK4gH,SAAW5gH,KAAKo3G,KAAKv9C,YAAYtlC,UAAU,mDAChDv0B,KAAK6gH,QAAU7gH,KAAKo3G,KAAKv9C,YAAYtlC,UAAU,iDACnD,CACA,MAAA9L,CAAOi4F,EAAW/F,EAAWvB,GACzB,MAAM0H,EAAY,GAClB,IAAI5D,EAAoB,GAExB,IAAK,MAAM56D,KAAKo+D,EAAUrzG,OAAQ,CAC9B,MAAM+yG,EAAWpgH,KAAKo3G,KAAKsD,gBAAgBp4D,EAAGq4D,EAAWvB,GACzD,IAAK,MAAM/kF,KAAQ+rF,EAASjkF,MACxB2kF,EAAUv9G,KAAK8wB,GAEf+rF,EAASlD,oBACTA,EAAoBA,EAAkBh2E,OAAOk5E,EAASlD,mBAE9D,CACA,GAAIl9G,KAAKi3G,SAAS8J,iBAAkB,CAGhC,MAAMC,EAAgBhhH,KAAKo3G,KAAKv9C,YAAY3kC,YAC5C,IAAI+rF,EAAWD,EACXlxD,EAAYgxD,EAAUv/G,OAC1B,IAAK,MAAM8yB,KAAQysF,EAAW,CAC1B5D,EAAkB35G,KAAKvD,KAAKo3G,KAAKgD,iBAAiB/tF,cAAc40F,EAAUjhH,KAAK2gH,UAAWtsF,EAAM+kF,EAAextF,QAC/G,MAAMs1F,EAA+B,KAAdpxD,EAAkB9vD,KAAK6gH,QAAU7gH,KAAKo3G,KAAKv9C,YAAY3kC,YAC9EgoF,EAAkB35G,KAAKvD,KAAKo3G,KAAKgD,iBAAiB/tF,cAAc40F,EAAUjhH,KAAK4gH,SAAUM,EAAc9H,EAAextF,QACtHq1F,EAAWC,CACf,CACA,MAAO,CAAE/kF,MAAO,CAAC6kF,GAAgB9D,oBACrC,CAGI,MAAO,CAAE/gF,MAAO2kF,EAAW5D,oBAEnC,EAEJh5G,EAAQq0G,qBAAuBA,gCC9C/Bn3G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQm0G,0BAAuB,EAC/B,MAAMoI,EAA4B,EAAQ,OAI1C,MAAMpI,UAA6BoI,EAA0BD,wBACzD,WAAAxxG,CAAYooG,EAAMH,GACd53F,MAAM,YAAa+3F,EAAMH,GACzBj3G,KAAKmhH,IAAMnhH,KAAKo3G,KAAKv9C,YAAYtlC,UAAU,iDAC/C,CACA,MAAA9L,CAAOi4F,EAAW/F,EAAWvB,GACzB,MAAO,CAAEj9E,MAAO,CAACn8B,KAAKmhH,KAC1B,EAEJj9G,EAAQm0G,qBAAuBA,gCCf/Bj3G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQs0G,4BAAyB,EACjC,MAAMiI,EAA4B,EAAQ,OAI1C,MAAMjI,UAA+BiI,EAA0BD,wBAC3D,WAAAxxG,CAAYooG,EAAMH,GACd53F,MAAM,cAAe+3F,EAAMH,EAC/B,CACA,MAAAxuF,CAAOi4F,EAAW/F,EAAWvB,GAEzB,MAAMruF,EAAU/qB,KAAKo3G,KAAKv9C,YAAY3kC,YACtC,IAAIksF,EAA0B,GAC9B,IAAK,MAAMj6C,KAASu5C,EAAUW,OAAQ,CAClC,MAAMjB,EAAWpgH,KAAKo3G,KAAKsD,gBAAgBvzC,EAAMjnE,MAAOy6G,EAAWvB,GACnE,IAAK,MAAM/kF,KAAQ+rF,EAASjkF,MACxBilF,EAAwB79G,KAAKvD,KAAKo3G,KAAK2E,kBAAkBhxF,EAASo8C,EAAMn9D,KAAMqqB,EAAM+kF,EAAextF,MAAOwtF,EAAexwF,UAEzHw3F,EAASlD,oBACTkE,EAA0BA,EAAwBl6E,OAAOk5E,EAASlD,mBAE1E,CACA,MAAO,CAAE/gF,MAAO,CAACpR,GAAUmyF,kBAAmBkE,EAClD,EAEJl9G,EAAQs0G,uBAAyBA,gCC1BjCp3G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQi0G,4BAAyB,EACjC,MAAMsI,EAA4B,EAAQ,OAI1C,MAAMtI,UAA+BsI,EAA0BD,wBAC3D,WAAAxxG,CAAYooG,EAAMH,GACd53F,MAAM,cAAe+3F,EAAMH,EAC/B,CACA,MAAAxuF,CAAOi4F,EAAW/F,EAAWvB,GACzB,MAAMkI,EAAelI,EAAexwF,QAAQqzF,gBAAgBtB,GAC5D,IAAIhkF,EACAmL,EASJ,OARIw/E,GAAwC,iBAAjBA,IACnBA,EAAa,aACb3qF,EAAW2qF,EAAa,aAEnBA,EAAa,WAClBx/E,EAAW9hC,KAAKo3G,KAAKv9C,YAAYtlC,UAAU+sF,EAAa,YAGzD,CAAEnlF,MAAO,CAACn8B,KAAKo3G,KAAKv9C,YAAY/d,QAAQ4kE,EAAUxgH,MAAOy2B,GAAYmL,IAChF,EAEJ59B,EAAQi0G,uBAAyBA,gCCzBjC/2G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ8zG,8BAA2B,EACnC,MAAMyI,EAA4B,EAAQ,OAI1C,MAAMzI,UAAiCyI,EAA0BD,wBAC7D,WAAAxxG,CAAYooG,EAAMH,GACd53F,MAAM,WAAY+3F,EAAMH,EAC5B,CACA,MAAAxuF,CAAOi4F,EAAW/F,EAAWvB,GACzB,MAAMjgE,EAAKunE,EAAU12G,KAAK9J,MACpBA,EAAQk5G,EAAeO,cAAcxgE,GACrC/R,EAAOgyE,EAAeQ,kBAAkBzgE,GAE9C,IAAKj5C,EAAO,CACR,GAAKk5G,EAAeiF,wBAA4Bj3E,IAAQA,EAAK62E,UAGxD,CACD,MAAMhzF,EAAWjrB,KAAKo3G,KAAKv9C,YAAY5uC,SAASkuB,GAIhD,OAHIigE,EAAeM,kBAAkBv0G,KAAKm9C,GAAMA,EAAEpiD,QAAO4J,QAAQqvC,GAAM,GACnEigE,EAAeM,kBAAkBn2G,KAAK0nB,GAEnC,CAAEkR,MAAO,CAAClR,GACrB,CARI,MAAM,IAAIlpB,MAAM,uBAAuBo3C,IAS/C,CAEA,GAAmB,aAAfj5C,EAAM65G,KACN,MAAM,IAAIh4G,MAAM,wCAAwCo3C,KAE5D,GAAI/R,EAEA,GAAIA,EAAKqiE,KAAM,CAEX,GAAmB,cAAfvpG,EAAM65G,KACN,MAAM,IAAIh4G,MAAM,4BAA4B7B,EAAM65G,YAAY5gE,KAGlE,GAAI/R,EAAK16B,KAAM,CACX,MAAM60G,EAAYrhH,EAClB,IAAK,MAAMoiD,KAAKi/D,EAAUl0G,OACtB,GAAIi1C,EAAEy3D,OAAS3yE,EAAK16B,KAChB,MAAM,IAAI3K,MAAM,YAAYqlC,EAAK16B,iBAAiB41C,EAAEy3D,YAAY5gE,IAG5E,CACJ,MACS/R,EAAK16B,KAOlB,OAAO1M,KAAKo3G,KAAKsD,gBAAgBx6G,EAAOy6G,EAAWvB,EACvD,EAEJl1G,EAAQ8zG,yBAA2BA,sCC1DnC,IAAIlwG,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B3B,OAAO+C,eAAe6D,EAAGE,EAAI,CAAEb,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,GACnF,EAAI,SAAUiF,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAA8BtE,GACnDsE,EAAa,EAAQ,OAA8BtE,GACnDsE,EAAa,EAAQ,OAA2BtE,GAChDsE,EAAa,EAAQ,MAA4BtE,GACjDsE,EAAa,EAAQ,OAA0BtE,GAC/CsE,EAAa,EAAQ,OAA2BtE,GAChDsE,EAAa,EAAQ,OAA2BtE,GAChDsE,EAAa,EAAQ,OAA6BtE,GAClDsE,EAAa,EAAQ,OAA6BtE,GAClDsE,EAAa,EAAQ,OAA+BtE,uCCpBpD,IAAI4D,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGy+G,EAAsBxhH,MAAQA,KAAKwhH,qBAAwBpgH,OAAO2G,OAAS,SAAUC,EAAGs6C,GACxFlhD,OAAO+C,eAAe6D,EAAG,UAAW,CAAEX,YAAY,EAAMnH,MAAOoiD,GAClE,EAAI,SAASt6C,EAAGs6C,GACbt6C,EAAW,QAAIs6C,CACnB,GACIm/D,EAAgBzhH,MAAQA,KAAKyhH,cAAiB,SAAU5f,GACxD,GAAIA,GAAOA,EAAIx5F,WAAY,OAAOw5F,EAClC,IAAIh+F,EAAS,CAAC,EACd,GAAW,MAAPg+F,EAAa,IAAK,IAAI9+F,KAAK8+F,EAAe,YAAN9+F,GAAmB3B,OAAOM,UAAUgH,eAAeC,KAAKk5F,EAAK9+F,IAAI+E,EAAgBjE,EAAQg+F,EAAK9+F,GAEtI,OADAy+G,EAAmB39G,EAAQg+F,GACpBh+F,CACX,EACI69G,EAAmB1hH,MAAQA,KAAK0hH,iBAAoB,SAAU7f,GAC9D,OAAQA,GAAOA,EAAIx5F,WAAcw5F,EAAM,CAAE,QAAWA,EACxD,EACAzgG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQsxB,KAAOtxB,EAAQy9G,WAAaz9G,EAAQg+C,SAAWh+C,EAAQ0rB,QAAU1rB,EAAQ0qB,QAAU1qB,EAAQiyC,eAAY,EAC/G,MAAMyrE,EAAkBF,EAAgB,EAAQ,QAChDx9G,EAAQiyC,UAAYyrE,EAAgB72E,QACpC,MAAMnc,EAAU6yF,EAAa,EAAQ,QACrCv9G,EAAQ0qB,QAAUA,EAClB,MAAMizF,EAAYH,EAAgB,EAAQ,QAC1Cx9G,EAAQ0rB,QAAUiyF,EAAU92E,QAC5B,MAAM+2E,EAAW,EAAQ,OACzB1gH,OAAO+C,eAAeD,EAAS,WAAY,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOw6G,EAAS5/D,QAAU,IAC5G9gD,OAAO+C,eAAeD,EAAS,aAAc,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOw6G,EAASH,UAAY,IAChH,MAAMI,EAASL,EAAgB,EAAQ,QACvCx9G,EAAQsxB,KAAOusF,EAAOh3E,oCCStB,IAAWnO,EA5CA/N,EAHXztB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ04B,gBAAkB14B,EAAQ2qB,WAAQ,GAE/BA,EA0CA3qB,EAAQ2qB,QAAU3qB,EAAQ2qB,MAAQ,CAAC,IAzC/B,IAAI,MACfA,EAAW,IAAI,MACfA,EAAW,IAAI,MACfA,EAAiB,UAAI,YACrBA,EAAgB,SAAI,WACpBA,EAAgB,SAAI,WACpBA,EAAkB,WAAI,aACtBA,EAAc,OAAI,SAClBA,EAAc,OAAI,SAClBA,EAAY,KAAI,OAChBA,EAAa,MAAI,QACjBA,EAAa,MAAI,QACjBA,EAAW,IAAI,MACfA,EAAY,KAAI,OAChBA,EAAiB,UAAI,WACrBA,EAAY,KAAI,OAChBA,EAAa,MAAI,QACjBA,EAAW,IAAI,MACfA,EAAW,IAAI,MACfA,EAAwB,iBAAI,gBAC5BA,EAAgB,SAAI,UACpBA,EAAY,KAAI,OAChBA,EAAe,QAAI,UACnBA,EAAe,QAAI,UACnBA,EAAe,QAAI,UACnBA,EAAW,IAAI,MACfA,EAAe,QAAI,UACnBA,EAAa,MAAI,QACjBA,EAAa,MAAI,QACjBA,EAAc,OAAI,SAClBA,EAAyB,kBAAI,iBAC7BA,EAAwB,iBAAI,gBAC5BA,EAAwB,iBAAI,kBAC5BA,EAAqB,cAAI,eACzBA,EAAY,KAAI,OAChBA,EAAa,MAAI,QACjBA,EAAc,OAAI,SAClBA,EAAY,KAAI,OAChBA,EAAW,IAAI,MACfA,EAAY,KAAI,OAChBA,EAAY,KAAI,QAGT+N,EAOU14B,EAAQ04B,kBAAoB14B,EAAQ04B,gBAAkB,CAAC,IAN7C,UAAI,YAC/BA,EAA2B,UAAI,YAC/BA,EAAuB,MAAI,QAC3BA,EAA0B,SAAI,WAC9BA,EAAsB,KAAI,OAC1BA,EAA0B,SAAI,+CCrDlC,IAAI90B,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGy+G,EAAsBxhH,MAAQA,KAAKwhH,qBAAwBpgH,OAAO2G,OAAS,SAAUC,EAAGs6C,GACxFlhD,OAAO+C,eAAe6D,EAAG,UAAW,CAAEX,YAAY,EAAMnH,MAAOoiD,GAClE,EAAI,SAASt6C,EAAGs6C,GACbt6C,EAAW,QAAIs6C,CACnB,GACIm/D,EAAgBzhH,MAAQA,KAAKyhH,cAAiB,SAAU5f,GACxD,GAAIA,GAAOA,EAAIx5F,WAAY,OAAOw5F,EAClC,IAAIh+F,EAAS,CAAC,EACd,GAAW,MAAPg+F,EAAa,IAAK,IAAI9+F,KAAK8+F,EAAe,YAAN9+F,GAAmB3B,OAAOM,UAAUgH,eAAeC,KAAKk5F,EAAK9+F,IAAI+E,EAAgBjE,EAAQg+F,EAAK9+F,GAEtI,OADAy+G,EAAmB39G,EAAQg+F,GACpBh+F,CACX,EACAzC,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtD,MAAM8hH,EAAIP,EAAa,EAAQ,QACzBx3F,EAAqB,EAAQ,OAC7BC,EAAe,EAAQ,OACvB2rB,EAAa,EAAQ,OAoI3B3xC,EAAA,QAnIA,MACI,WAAA8K,CAAY6qD,GACR75D,KAAK65D,YAAcA,GAAe,IAAI5vC,EAAmBK,YACzDtqB,KAAKiiH,WAAajiH,KAAKkiH,WAAW,0CACtC,CACA,SAAArnF,CAAUptB,EAAO61B,GAAU,GAAQ,OAAOtjC,KAAKmiH,aAAa,CAAEz1G,KAAMs1G,EAAEnzF,MAAMC,IAAKrhB,SAAS61B,EAAU,CACpG,SAAAyC,CAAUt4B,GAAS,MAAO,CAAEf,KAAMs1G,EAAEnzF,MAAMgS,IAAKpzB,QAAS,CACxD,oBAAAu0C,CAAqB/2B,EAAUkgB,EAAWzO,EAAYqT,EAAU63B,GAC5D,MAAM/jE,EAAS7D,KAAKoiH,0BAA0Bj3E,EAAWzO,EAAYqT,EAAU63B,GAE/E,OADA/jE,EAAOonB,SAAWA,EACXpnB,CACX,CACA,SAAAigC,CAAUrI,GAAY,MAAO,CAAE/uB,KAAMs1G,EAAEnzF,MAAMwN,IAAKZ,WAAY,CAC9D,eAAAT,CAAgBvtB,EAAOwtB,GAAY,MAAO,CAAEvuB,KAAMs1G,EAAEnzF,MAAMkM,UAAWttB,QAAOwtB,WAAY,CACxF,cAAAonF,CAAe50G,EAAO0uB,GAAS,MAAO,CAAEzvB,KAAMs1G,EAAEnzF,MAAMmN,SAAUvuB,QAAO0uB,QAAS,CAChF,cAAAzQ,CAAeje,GAAS,MAAO,CAAEf,KAAMs1G,EAAEnzF,MAAMiS,SAAUrzB,QAAS,CAClE,YAAAiyB,CAAajyB,EAAOwd,EAAUyR,GAAc,MAAO,CAAEhwB,KAAMs1G,EAAEnzF,MAAM4Q,OAAQhyB,QAAOwd,WAAUyR,aAAc,CAC1G,UAAA4lF,CAAW70G,EAAO80G,EAAKv3E,GAAS,MAAO,CAAEt+B,KAAMs1G,EAAEnzF,MAAMkS,KAAMtzB,QAAOs9B,QAASw3E,EAAKv3E,QAAS,CAC3F,YAAA/N,CAAaxvB,EAAOivB,GAAc,MAAO,CAAEhwB,KAAMs1G,EAAEnzF,MAAM+O,OAAQnwB,QAAOivB,aAAc,CACtF,WAAA8lF,CAAY/0G,EAAOzD,GAAQ,MAAO,CAAE0C,KAAMs1G,EAAEnzF,MAAMmS,MAAOvzB,QAAOzD,OAAQ,CACxE,WAAA+3C,CAAYt0C,EAAOuV,EAAWooB,GAAc,MAAO,CAAE1+B,KAAMs1G,EAAEnzF,MAAMoS,MAAOxzB,QAAOuV,YAAWooB,aAAc,CAC1G,SAAA8E,CAAUplB,GAAQ,MAAO,CAAEpe,KAAMs1G,EAAEnzF,MAAMK,IAAKpE,OAAQ,CACtD,UAAA0Q,CAAW/tB,EAAO61B,GAAU,GAAQ,OAAOtjC,KAAKmiH,aAAa,CAAEz1G,KAAMs1G,EAAEnzF,MAAM0N,KAAM9uB,SAAS61B,EAAU,CACtG,cAAAjD,CAAexf,EAAMO,EAAOsb,GACxB,OAAIA,EACO,CAAEhwB,KAAMs1G,EAAEnzF,MAAMqR,UAAWzyB,MAAO,CAACoT,EAAMO,GAAQsb,cACrD,CAAEhwB,KAAMs1G,EAAEnzF,MAAMqR,UAAWzyB,MAAO,CAACoT,EAAMO,GACpD,CACA,UAAAk7F,CAAWp3E,GAAO,MAAO,CAAEx4B,KAAMs1G,EAAEnzF,MAAMS,KAAM4V,MAAO,CACtD,WAAAu9E,CAAY5hG,EAAMO,GAAS,MAAO,CAAE1U,KAAMs1G,EAAEnzF,MAAM+R,MAAOnzB,MAAO,CAACoT,EAAMO,GAAU,CACjF,SAAAshG,GAAc,MAAO,CAAEh2G,KAAMs1G,EAAEnzF,MAAM+Q,IAAO,CAC5C,SAAA+iF,CAAU9yE,GAAQ,MAAO,CAAEnjC,KAAMs1G,EAAEnzF,MAAMU,IAAKsgB,OAAQ,CACtD,mBAAAI,CAAoBnlB,GAAQ,MAAO,CAAEpe,KAAMs1G,EAAEnzF,MAAMM,iBAAkBrE,OAAQ,CAC7E,aAAA83F,CAAcn1G,EAAOsgC,GAAe,MAAO,CAAErhC,KAAMs1G,EAAEnzF,MAAMqS,SAAUzzB,QAAOsgC,cAAe,CAC3F,UAAA9hB,CAAWlB,EAASH,EAAWI,EAAQY,GACnC,OAAIA,EACO,CAAElf,KAAMs1G,EAAEnzF,MAAMiH,KAAM/K,UAASH,YAAWI,SAAQY,SACtD,CAAElf,KAAMs1G,EAAEnzF,MAAMiH,KAAM/K,UAASH,YAAWI,SAAQY,MAAO5rB,KAAK65D,YAAY5zB,eACrF,CACA,aAAA5Z,CAActB,EAASH,EAAWI,EAAQY,GACtC,MAAM8D,EAAU1vB,KAAK65D,YAAYnlC,KAAK3J,EAASH,EAAWI,EAAQY,GAElE,OADA8D,EAAQhjB,KAAOs1G,EAAEnzF,MAAM6G,QAChBhG,CACX,CACA,aAAAoQ,CAAcryB,EAAOuV,GAAa,MAAO,CAAEtW,KAAMs1G,EAAEnzF,MAAMgR,QAASpyB,QAAOuV,YAAa,CACtF,aAAA6/F,CAAcp1G,GAAS,MAAO,CAAEf,KAAMs1G,EAAEnzF,MAAMsS,QAAS1zB,QAAS,CAChE,SAAA01B,CAAU11B,EAAO61B,GAAU,GAAQ,OAAOtjC,KAAKmiH,aAAa,CAAEz1G,KAAMs1G,EAAEnzF,MAAME,IAAKthB,SAAS61B,EAAU,CACpG,aAAAw/E,CAAcr1G,EAAOzD,EAAMs8B,GAAU,MAAO,CAAE55B,KAAMs1G,EAAEnzF,MAAMiM,QAASrtB,QAAOzD,OAAMs8B,OAAQ0B,QAAQ1B,GAAW,CAC7G,WAAAu5E,CAAYpyG,EAAOjL,EAAOjB,GAEtB,OADAiB,EAAQA,GAAS,OACFrC,IAAXoB,EACO,CAAEmL,KAAMs1G,EAAEnzF,MAAMuS,MAAO3zB,QAAOjL,QAAOjB,UACzC,CAAEmL,KAAMs1G,EAAEnzF,MAAMuS,MAAO3zB,QAAOjL,QACzC,CACA,WAAA2pB,CAAY1e,EAAO61B,GAAU,GAAQ,OAAOtjC,KAAKmiH,aAAa,CAAEz1G,KAAMs1G,EAAEnzF,MAAMkR,MAAOtyB,SAAS61B,EAAU,CACxG,YAAA3C,CAAa3d,EAAW0J,GAAY,MAAO,CAAEhgB,KAAMs1G,EAAEnzF,MAAMoR,OAAQjd,YAAW0J,WAAY,CAC1F,oBAAAq2F,CAAqBj4F,GAAQ,MAAO,CAAEpe,KAAMs1G,EAAEnzF,MAAMO,kBAAmBtE,OAAQ,CAC/E,mBAAAk4F,CAAoBl4F,GAAQ,MAAO,CAAEpe,KAAMs1G,EAAEnzF,MAAMQ,iBAAkBvE,OAAQ,CAC7E,yBAAAs3F,CAA0BrkD,EAAYrhC,EAAYqT,EAAU63B,GACxD,OAAIA,EACO,CAAEl7D,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgB2B,UAAWw/B,WAAYA,EAAYrhC,aAAYkrC,YAAW73B,YAC5H,CAAErjC,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgB2B,UAAWw/B,WAAYA,EAAYrhC,aAAYqT,WACxH,CACA,yBAAAkzE,CAA0BtmD,EAAKlvD,GAAS,MAAO,CAAEf,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgB6B,UAAWk+B,MAAKlvD,QAAS,CACtI,qBAAAy1G,CAAsBl5G,EAAMvF,GAAQ,MAAO,CAAEiI,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgB+B,MAAO30B,OAAMvF,OAAQ,CAC9H,wBAAAw5B,CAAyBnB,EAAUr4B,GAAQ,MAAO,CAAEiI,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgBC,SAAUC,WAAUr4B,OAAQ,CAC5I,oBAAA4sC,CAAqBhd,GAAQ,MAAO,CAAE3nB,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgBkC,KAAMzK,OAAQ,CAChH,wBAAA4tB,GAA6B,MAAO,CAAEv1C,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgB4B,SAAUqsD,SAAU,IAAIh1C,EAAWstE,SAAc,CACnJ,UAAAjB,CAAW79G,GACP,OAAO,EAAI6lB,EAAaqvC,cAAcl1D,EAAKrE,KAAK65D,YACpD,CAEA,qBAAA1zB,CAAsBK,GAAW,MAAO,CAAE95B,KAAMs1G,EAAEnzF,MAAMwS,iBAAkBmF,UAAW,CACrF,kBAAArL,CAAmBioF,EAAaC,EAAahoF,GACzC,MAAMx3B,EAAS,CAAE6I,KAAMs1G,EAAEnzF,MAAMqM,eAO/B,OANIkoF,IACAv/G,EAAOgtB,OAASuyF,GAChBC,IACAx/G,EAAOu3B,OAASioF,GAChBhoF,IACAx3B,EAAOw3B,MAAQA,GACZx3B,CACX,CACA,UAAAy/G,CAAW9zF,EAAQuH,EAAauP,GAC5B,MAAMziC,EAAS,CAAE6I,KAAMs1G,EAAEnzF,MAAMyS,KAAM9R,UAGrC,OAFIuH,IACAlzB,EAAOkzB,YAAcA,GAClB/2B,KAAKujH,UAAU1/G,EAAQmkC,QAAQ1B,GAC1C,CACA,WAAAk9E,CAAYh0F,EAAQ8W,GAChB,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM0S,MAAO/R,UAAUwY,QAAQ1B,GACnE,CACA,YAAAm9E,CAAaj0F,EAAQ8W,GACjB,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM2S,OAAQhS,UAAUwY,QAAQ1B,GACpE,CACA,UAAAF,CAAW5W,EAAQ8W,GACf,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM4S,KAAMjS,UAAUwY,QAAQ1B,GAClE,CACA,SAAAD,CAAU7W,EAAQuH,EAAauP,GAC3B,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM6S,IAAKlS,SAAQuH,eAAeiR,QAAQ1B,GAC9E,CACA,UAAAo9E,CAAWl0F,EAAQuH,EAAauP,GAC5B,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM8S,KAAMnS,SAAQuH,eAAeiR,QAAQ1B,GAC/E,CACA,UAAAq9E,CAAWn0F,EAAQuH,EAAauP,GAC5B,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM+S,KAAMpS,SAAQuH,eAAeiR,QAAQ1B,GAC/E,CACA,SAAAi9E,CAAU91G,EAAO64B,GAGb,OAFIA,IACA74B,EAAM64B,OAASA,GACZ74B,CACX,CACA,YAAA00G,CAAa10G,EAAO61B,GAChB,IAAKA,EACD,OAAO71B,EAEX,MAAMf,EAAOe,EAAMf,KACb24B,EAAW53B,EAAMA,MACvB,IAAIm2G,EAAc,GAClB,IAAK,MAAMrrE,KAASlT,EACZkT,EAAM7rC,OAASA,EACfk3G,EAAYrgH,QAAQg1C,EAAM9qC,OAG1Bm2G,EAAYrgH,KAAKg1C,GAIzB,OADA9qC,EAAMA,MAAQm2G,EACPn2G,CACX,uCC7JJ,IAAI3F,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGy+G,EAAsBxhH,MAAQA,KAAKwhH,qBAAwBpgH,OAAO2G,OAAS,SAAUC,EAAGs6C,GACxFlhD,OAAO+C,eAAe6D,EAAG,UAAW,CAAEX,YAAY,EAAMnH,MAAOoiD,GAClE,EAAI,SAASt6C,EAAGs6C,GACbt6C,EAAW,QAAIs6C,CACnB,GACIm/D,EAAgBzhH,MAAQA,KAAKyhH,cAAiB,SAAU5f,GACxD,GAAIA,GAAOA,EAAIx5F,WAAY,OAAOw5F,EAClC,IAAIh+F,EAAS,CAAC,EACd,GAAW,MAAPg+F,EAAa,IAAK,IAAI9+F,KAAK8+F,EAAe,YAAN9+F,GAAmB3B,OAAOM,UAAUgH,eAAeC,KAAKk5F,EAAK9+F,IAAI+E,EAAgBjE,EAAQg+F,EAAK9+F,GAEtI,OADAy+G,EAAmB39G,EAAQg+F,GACpBh+F,CACX,EACI69G,EAAmB1hH,MAAQA,KAAK0hH,iBAAoB,SAAU7f,GAC9D,OAAQA,GAAOA,EAAIx5F,WAAcw5F,EAAM,CAAE,QAAWA,EACxD,EACAzgG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQy9G,WAAaz9G,EAAQg+C,cAAW,EACxC,MAAM2hE,EAAmB,EAAQ,OAC3B35F,EAAe,EAAQ,OACvB2rB,EAAa,EAAQ,OACrBjnB,EAAU6yF,EAAa,EAAQ,QAC/BI,EAAYH,EAAgB,EAAQ,QACpCK,EAASL,EAAgB,EAAQ,QACjC7yF,EAAQD,EAAQC,MAChBi1F,EAASl1F,EAAQgO,gBACvB,IAAIhU,EACJ,MAAMgN,EAAU,IAAIisF,EAAU92E,QAM9B,SAAS42E,EAAWhsF,GAChBouF,IAEA,IAAIlgH,EAASmgH,EADbruF,EAkrBJ,SAAqBA,GACjB,OAAOsuF,EAAqBtuF,EAAI,GACpC,CAprBSuuF,CAAYvuF,IAEjB,MAAoB,UAAhB9xB,EAAO6I,KACA7I,EAAO43B,SAAS,GACpB53B,CACX,CAEA,SAASkgH,IACLn7F,EAAU,CAAE20C,SAAS,EAAOD,OAAQ,GAAI7wB,MAAO,GAAIrB,WAAY,GAAI/D,MAAO,GAC9E,CACA,SAAS28E,EAAmBruF,GAMxB,OAFIA,EAAGjpB,OAASmiB,EAAM4Q,QAAU9J,EAAGjpB,OAASmiB,EAAMqS,UAAYvL,EAAGjpB,OAASmiB,EAAMmS,QAC5EpY,EAAQ20C,SAAU,GACd5nC,EAAGjpB,MACP,KAAKmiB,EAAM2Q,WAAY,OAAO2kF,EAAoBxuF,GAClD,KAAK9G,EAAMgS,IAAK,OAAOujF,EAAiBzuF,EAAI9G,EAAMgS,KAClD,KAAKhS,EAAMwN,IAAK,OA+HxB,SAAsB1G,GAClB,IAAI8F,EAAW9F,EAAG8F,SAASt2B,IAAIk/G,GAC/B,OAAwB,IAApB5oF,EAASl6B,OACF,KACJ,CACHmL,KAAM,MACNi8C,QAASltB,EAEjB,CAvI+B6oF,CAAa3uF,GACpC,KAAK9G,EAAMkM,UAAW,OAuI9B,SAA4BpF,GACxB,MAAO,CACHjpB,KAAM,QACN1D,SAAU,CAAC,EACXwsG,UAAW,YACXv6E,SAAUtF,EAAGsF,SAAS91B,IAAIk/G,GAC1BhpF,MAAO0mF,EAAOh3E,QAAQzH,QAAQ,CAC1B0gF,EAAmBruF,EAAGloB,SAGlC,CAjJqC82G,CAAmB5uF,GAChD,KAAK9G,EAAMmN,SAAU,OAAOooF,EAAiBzuF,EAAI9G,EAAMmN,UACvD,KAAKnN,EAAMiS,SAAU,OAgJ7B,SAA2BnL,GACvB,IAAI9xB,EAASmgH,EAAmBruF,EAAGloB,OAGnC,OADA5J,EAAO43B,SAAS,GAAGsU,UAAW,EACvBlsC,CACX,CArJoC2gH,CAAkB7uF,GAC9C,KAAK9G,EAAM4Q,OAAQ,OAqJ3B,SAAyB9J,GACrB,OAAI/M,EAAQ20C,SACR30C,EAAQ00C,OAAO/5D,KAAKoyB,GACbquF,EAAmBruF,EAAGloB,QAE1Bs0G,EAAOh3E,QAAQzH,QAAQ,CAC1B0gF,EAAmBruF,EAAGloB,OACtB,CACIf,KAAM,OACNue,SAAU0K,EAAG1K,SACbyR,WAAYynF,EAAoBxuF,EAAG+G,cAG/C,CAlKkC+nF,CAAgB9uF,GAC1C,KAAK9G,EAAMkS,KAAM,OAkKzB,SAAuBpL,GACnB,MAAM9xB,EAASmgH,EAAmBruF,EAAGloB,OAErC,IAAI5D,EAAMhG,EASV,MAPoB,UAAhBA,EAAO6I,OACP7C,EAAMhG,EAAO43B,SAAS,IAE1B5xB,EAAIgqE,KAAO,CACP9oC,QAASpV,EAAGoV,QACZC,MAAOrV,EAAGqV,OAEPnnC,CACX,CA/KgC6gH,CAAc/uF,GACtC,KAAK9G,EAAM+O,OAAQ,OA+K3B,SAAyBjI,GACrB,MAAO,CACHjpB,KAAM,QACN+uB,SAAUsmF,EAAOh3E,QAAQzH,QAAQ,CAC7B0gF,EAAmBruF,EAAGloB,OACtB,CAAEf,KAAM,SAAUgwB,WAAYynF,EAAoBxuF,EAAG+G,eAGjE,CAvLkCioF,CAAgBhvF,GAC1C,KAAK9G,EAAMmS,MAAO,OAuL1B,SAAwBrL,GACpB,MAAO,CACHjpB,KAAM,QACN+uB,SAAUsmF,EAAOh3E,QAAQzH,QAAQ,CAAC0gF,EAAmBruF,EAAGloB,SACxDzD,KAAM2rB,EAAG3rB,KAEjB,CA7LiC46G,CAAejvF,GACxC,KAAK9G,EAAMoS,MAAO,OA6L1B,SAAwBtL,GACpB,MAAMloB,EAAQu2G,EAAmBruF,EAAGloB,OAC9Bo3G,EAAOlvF,EAAGyV,WAAWjmC,IAAI2/G,GAI/B,OAHAl8F,EAAQwiB,WAAW7nC,QAAQshH,GAE3Bj8F,EAAQ6jB,MAAMlpC,QAAQoyB,EAAG3S,WAClBvV,CACX,CApMiCs3G,CAAepvF,GACxC,KAAK9G,EAAM0N,KAAM,OAoMzB,SAAuB5G,GAInB,OAHYosF,EAAOh3E,QAAQzH,QAAQ3N,EAAGloB,MAAMtI,IAAI6+G,IAGrChnF,QAAO,CAACn5B,EAAQ6+C,KACN,QAAbA,EAAIh2C,MAAmC,GAAjB7I,EAAOtC,QAAkD,QAAnCsC,EAAOA,EAAOtC,OAAS,GAAGmL,KACtE7I,EAAON,KAAKm/C,GAGZ7+C,EAAOA,EAAOtC,OAAS,GAAGonD,QAAQplD,QAAQm/C,EAAIiG,SAE3C9kD,IACR,GACP,CAjNgCmhH,CAAcrvF,GACtC,KAAK9G,EAAMqR,UAAW,OAiN9B,SAA2BvK,GACvB,MAAMwsB,EAAW,CACbz1C,KAAM,WACN+uB,SAAU,CACNuoF,EAAmBruF,EAAGloB,MAAM,MAUpC,OAPIkoB,EAAG+G,YACHylB,EAAS1mB,SAASl4B,KAAK,CACnBmJ,KAAM,SACNgwB,WAAYynF,EAAoBxuF,EAAG+G,cAG3CylB,EAAS1mB,SAAWsmF,EAAOh3E,QAAQzH,QAAQ6e,EAAS1mB,UAC7CsmF,EAAOh3E,QAAQzH,QAAQ,CAC1B0gF,EAAmBruF,EAAGloB,MAAM,IAC5B00C,GAER,CAnOqC8iE,CAAkBtvF,GAC/C,KAAK9G,EAAM+R,MAAO,OAmO1B,SAAwBjL,GACpB,IAAI8F,EAAWuoF,EAAmBruF,EAAGloB,MAAM,IAK3C,MAJsB,UAAlBguB,EAAS/uB,OACT+uB,EAAWA,EAASA,UACnB9wB,MAAMC,QAAQ6wB,KACfA,EAAW,CAACA,IACTsmF,EAAOh3E,QAAQzH,QAAQ,CAC1B0gF,EAAmBruF,EAAGloB,MAAM,IAC5B,CACIf,KAAM,QACN+uB,SAAUA,IAGtB,CAhPiCypF,CAAevvF,GACxC,KAAK9G,EAAM+Q,IAAK,MAAO,CAAC,EACxB,KAAK/Q,EAAMqS,SAAU,OA+O7B,SAA0BvL,GAEtB,OADA/M,EAAQye,MAAM9jC,QAAQoyB,EAAGoY,aAClBi2E,EAAmBruF,EAAGloB,MACjC,CAlPoC03G,CAAiBxvF,GAC7C,KAAK9G,EAAMiH,KAAM,OAkPzB,SAAuBH,GACnB,MAAO,CACHjpB,KAAM,MACNi8C,QAAS,CAAC,CACF59B,QAAS4K,EAAG5K,QACZH,UAAWw6F,EAAuBzvF,EAAG/K,WACrCI,OAAQ2K,EAAG3K,SAG3B,CA3PgCq6F,CAAc1vF,GACtC,KAAK9G,EAAM6G,QAAS,OAAO2uF,EAAiB1uF,GAC5C,KAAK9G,EAAMgR,QAAS,OAAOukF,EAAiBzuF,EAAI9G,EAAMgR,SACtD,KAAKhR,EAAMsS,QAAS,OAgX5B,SAA0BxL,GACtB,IAAI9xB,EAASmgH,EAAmBruF,EAAGloB,OAGnC,OADA5J,EAAO43B,SAAS,GAAG6pF,SAAU,EACtBzhH,CACX,CArXmC0hH,CAAiB5vF,GAC5C,KAAK9G,EAAMiM,QAAS,OAqX5B,SAA0BnF,GACtB,IAAI8F,EAAWuoF,EAAmBruF,EAAGloB,OAKrC,MAJsB,UAAlBguB,EAAS/uB,OACT+uB,EAAWA,EAASA,UACnB9wB,MAAMC,QAAQ6wB,KACfA,EAAW,CAACA,IACT,CACH/uB,KAAM,UAEN1C,KAAM2rB,EAAG3rB,KACTs8B,OAAQ3Q,EAAG2Q,OACX7K,WAER,CAlYmC+pF,CAAiB7vF,GAC5C,KAAK9G,EAAMuS,MAAO,OAkY1B,SAAwBzL,GACpB,IAAI9xB,EAASmgH,EAAmBruF,EAAGloB,OAE/B5D,EAAMhG,EAOV,OANIA,EAAO6I,MAAwB,UAAhB7I,EAAO6I,OACtB7C,EAAMhG,EAAO43B,SAAS,IACT,IAAb9F,EAAGnzB,QACHqH,EAAI7I,OAAS20B,EAAGnzB,YACFrC,IAAdw1B,EAAGp0B,SACHsI,EAAIwR,MAAQsa,EAAGp0B,QACZsC,CACX,CA7YiC4hH,CAAe9vF,GACxC,KAAK9G,EAAMkR,MAAO,OA6Y1B,SAAwBpK,GACpB,MAAO,CACHjpB,KAAM,QACN+uB,SAAU9F,EAAGloB,MAAMtI,IAAI6+G,GAAoB7+G,IAAIugH,GAEvD,CAlZiCC,CAAehwF,GACxC,KAAK9G,EAAMoR,OAAQ,OAkZ3B,SAAyBtK,GAErB,MAAO,CACHjpB,KAAM,SACNW,OAAQsoB,EAAGjJ,SAASvnB,KAAI28C,IACpB,IAAIj+C,EAAS,CAAC,EACd,IAAK,IAAIy+C,KAAK3sB,EAAG3S,UAAW,CACxB,IAAI9d,EAAI,IAAIo9C,EAAEpiD,QACV4hD,EAAQ58C,GACRrB,EAAOqB,GAAK48C,EAAQ58C,GAEpBrB,EAAOqB,QAAK/E,CACpB,CACA,OAAO0D,CAAM,IAGzB,CAlakC+hH,CAAgBjwF,GAE1C,KAAK9G,EAAMwS,iBAAkB,OAugBrC,SAAkC1L,GAK9B,MAAO,CAAE3sB,SAAU,CAAC,EAAG0D,KAAM,SAAU85B,QAJvB7Q,EAAG6Q,QAAQrhC,KAAIqyB,GACZwsF,EAAmBxsF,GACpBgP,QAAQ,KAG9B,CA7gB4Cq/E,CAAyBlwF,GAC7D,KAAK9G,EAAMqM,cAAe,OA6gBlC,SAA+BvF,GAC3B,IAAI7wB,EACJ,IACIghH,EADAzqF,EAAQ1F,EAAG0F,MAEf,GAAIA,GAASA,EAAM3uB,OAASmiB,EAAMkS,KAAM,CACpC,IAAI8yC,EAAOx4C,EACXA,EAAQw4C,EAAKpmE,MACbq4G,EAAM,CAAE/6E,QAAS8oC,EAAK9oC,QAASC,MAAO6oC,EAAK7oC,MAC/C,CACA,MAAMxE,EAAU,CAAC,CACTkvE,WAAY,eACZ7kF,OAAQk1F,EAAsBpwF,EAAG9E,QAAU,IAC3CuK,OAAQ2qF,EAAsBpwF,EAAGyF,QAAU,MAMnD,GAHI0qF,IACAt/E,EAAQ,GAAGw/E,MAAQF,IAElBzqF,GAAUA,EAAM3uB,OAASmiB,EAAMwN,KAAiC,IAA1BhB,EAAMI,SAASl6B,OACtDilC,EAAQ,GAAGnL,MAAQ,OAClB,CACD,MAAMwY,EAAS,GACf,IAAIhwC,EAASmgH,EAAmBC,EAAqB5oF,EAAOwY,IAO5D,GANoB,UAAhBhwC,EAAO6I,KACP85B,EAAQ,GAAGnL,MAAQx3B,EAAO43B,SAE1B+K,EAAQ,GAAGnL,MAAQ,CAACx3B,GAGpBgwC,EAAOtyC,OAAS,EAAG,CACnB,GAAsB,IAAlBsyC,EAAOtyC,OACP,MAAM,IAAIQ,MAAM,iFAEqD,MAA/C,QAApB+C,EAAK+uC,EAAO,UAAuB,IAAP/uC,OAAgB,EAASA,EAAG5E,SAC1DsmC,EAAQ,GAAGnL,MAAQ,CAAC,CAAE3uB,KAAM,QAAS+uB,SAAU+K,EAAQ,GAAGnL,MAAOrxB,KAAM6pC,EAAO,KACtF,CACJ,CAuBA,OArBKle,EAAG9E,QAAW8E,EAAG0F,MAKZ1F,EAAGyF,QAAWzF,EAAG0F,OAUjB1F,EAAGyF,QAAUzF,EAAG0F,OAA2B,QAAlB1F,EAAG0F,MAAM3uB,OACpC,EAAIm3G,EAAiBoC,YAAYtwF,EAAG9E,OAAQ8E,EAAG0F,MAAMI,mBAC9C+K,EAAQ,GAAGnL,MAClBmL,EAAQ,GAAGkvE,WAAa,uBAZrBlvE,EAAQ,GAAGpL,cACXoL,EAAQ,GAAGnL,MACd1F,EAAG9E,OAAOsN,MAAKzO,GAAwC,aAA7BA,EAAQ3E,QAAQyC,UACX,aAA/BkC,EAAQ9E,UAAU4C,UACU,aAA5BkC,EAAQ1E,OAAOwC,WACfgZ,EAAQ,GAAGkvE,WAAa,cAExBlvE,EAAQ,GAAGkvE,WAAa,WAZ5BlvE,EAAQ,GAAGkvE,WAAa,gBACjBlvE,EAAQ,GAAG3V,cACX2V,EAAQ,GAAGnL,OAkBf,CAAEryB,SAAU,CAAC,EAAG0D,KAAM,SAAU85B,UAC3C,CAzkByC0/E,CAAsBvwF,GACvD,KAAK9G,EAAMyS,KAAM,OAykBzB,SAAuB3L,GAEnB,MAAM6Q,EAAU,CAAC,CAAE95B,KAAM,OAAQ45B,OAAQ0B,QAAQrS,EAAG2Q,QAAS9W,OAAQmG,EAAGnG,SAGxE,OAFImG,EAAGoB,cACHyP,EAAQ,GAAGzP,YAAcpB,EAAGoB,aACzB,CAAE/tB,SAAU,CAAC,EAAG0D,KAAM,SAAU85B,UAC3C,CA/kBgC2/E,CAAcxwF,GACtC,KAAK9G,EAAM0S,MAAO,OA+kB1B,SAAwB5L,GACpB,OAAOywF,EAAyBzwF,EAAI,QACxC,CAjlBiC0wF,CAAe1wF,GACxC,KAAK9G,EAAM2S,OAAQ,OAilB3B,SAAyB7L,GACrB,OAAOywF,EAAyBzwF,EAAI,SACxC,CAnlBkC2wF,CAAgB3wF,GAC1C,KAAK9G,EAAM4S,KAAM,OAmlBzB,SAAuB9L,GACnB,OAAOywF,EAAyBzwF,EAAI,OACxC,CArlBgC4wF,CAAc5wF,GACtC,KAAK9G,EAAM6S,IAAK,OAkmBxB,SAAsB/L,GAClB,OAAO6wF,EAA6B7wF,EAAI,MAC5C,CApmB+B8wF,CAAa9wF,GACpC,KAAK9G,EAAM8S,KAAM,OAomBzB,SAAuBhM,GACnB,OAAO6wF,EAA6B7wF,EAAI,OAC5C,CAtmBgC+wF,CAAc/wF,GACtC,KAAK9G,EAAM+S,KAAM,OAsmBzB,SAAuBjM,GACnB,OAAO6wF,EAA6B7wF,EAAI,OAC5C,CAxmBgCgxF,CAAchxF,GAE1C,MAAM,IAAI5zB,MAAM,0BAA0B4zB,EAAGjpB,OACjD,CACA,SAASy3G,EAAoBr2E,GACzB,OAAQA,EAAKnR,gBACT,KAAKmnF,EAAOvlF,UAAW,OA0B/B,SAAsCuP,GAClC,MAAMjqC,EAAS,CACX64B,WAAYynF,EAAoBr2E,EAAKpR,YACrChwB,KAAM,YACNk6G,YAAa94E,EAAKiwB,WAClBhuB,SAAUjC,EAAKiC,UAInB,OAFIjC,EAAK85B,YACL/jE,EAAO+jE,UAAY95B,EAAK85B,WACrB/jE,CACX,CApCsCgjH,CAA6B/4E,GAC3D,KAAKg2E,EAAOrlF,UAAW,OAoC/B,SAAsCqP,GAClC,MAAO,CACHphC,KAAM,YACNowB,SAAUgR,EAAK6uB,IAAM,YAAc,SACnCl4D,KAAMs9G,EAAOh3E,QAAQzH,QAAQ,CACzB0gF,EAAmBl2E,EAAKrgC,SAGpC,CA5CsCq5G,CAA6Bh5E,GAC3D,KAAKg2E,EAAOnlF,MAAO,OA4C3B,SAAkCmP,GAC9B,MAAO,CACHphC,KAAM,eAENq6G,SAAUj5E,EAAK9jC,KACfvF,KAAMqpC,EAAKrpC,KAAKU,IAAIg/G,GAE5B,CAnDkC6C,CAAyBl5E,GACnD,KAAKg2E,EAAOjnF,SAAU,OAmD9B,SAAqCiR,GACjC,GAAsB,SAAlBA,EAAKhR,SAAqB,CAG1B,MAFe,CAAEJ,WAAYynF,EAAoBr2E,EAAKrpC,KAAK,IAC3DZ,YAAoB,EAExB,CACA,MAAMA,EAAS,CACX6I,KAAM,YACNowB,SAAUgR,EAAKhR,SACfr4B,KAAMqpC,EAAKrpC,KAAKU,IAAIg/G,IAIxB,MAFwB,OAApBtgH,EAAOi5B,UAAyC,UAApBj5B,EAAOi5B,WACnCj5B,EAAOY,KAAO,CAACZ,EAAOY,KAAK,IAAIyiC,OAAO,CAACrjC,EAAOY,KAAKD,MAAM,MACtDX,CACX,CAjEqCojH,CAA4Bn5E,GACzD,KAAKg2E,EAAOhlF,KAAM,OAiE1B,SAAiCgP,GAC7B,OAAOA,EAAKzZ,IAChB,CAnEiC6yF,CAAwBp5E,GACjD,KAAKg2E,EAAOtlF,SAAU,OAmE9B,SAAqCsP,GACjC,OAAOA,EAAK+8C,QAChB,CArEqCs8B,CAA4Br5E,GAE7D,MAAM,IAAI/rC,MAAM,qCAAqC+rC,EAAKnR,iBAC9D,CACA,SAASyoF,EAAuBt6F,GAC5B,OAAQA,EAAKpe,MACT,KAAKmiB,EAAMC,IAAK,OAyYxB,SAAsBhE,GAClB,MAAMs8F,EAASt8F,EAAKrd,MAAMtI,IAAIigH,GAC9B,OAAIgC,EAAO/kF,OAAMgC,GAAS,aAAcA,GAA4B,MAAnBA,EAAMgjF,WAC5C,CACH36G,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC,CACAqC,KAAM,OACN26G,SAAU,IACVh9G,MAAO03G,EAAOh3E,QAAQzH,QAAQ8jF,EAAOjiH,KAAIk/B,GAASA,EAAMh6B,YAIjE,CACHqC,KAAM,OACN26G,SAAU,IACVh9G,MAAO+8G,EAEf,CA3Z+BE,CAAax8F,GACpC,KAAK+D,EAAMK,IAAK,OA2ZxB,SAAsBpE,GAClB,GAAIA,EAAKA,KAAKpe,OAASmiB,EAAMU,IAAK,CAC9B,MAAMg4F,EAAMz8F,EAAKA,KAAK+kB,KAAK1qC,KAAK+/B,IACrB,CACHx4B,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC66B,OAGhB,OAAIqiF,EAAIhmH,QAAU,EACP,CACHmL,KAAM,OACN26G,SAAU,IACVh9G,MAAOk9G,GAER,CACH76G,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC,CACAqC,KAAM,OACN26G,SAAU,IACVh9G,MAAOk9G,IAGvB,CACA,MAAO,CACH76G,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC+6G,EAAuBt6F,EAAKA,OAE5C,CAzb+B08F,CAAa18F,GACpC,KAAK+D,EAAMS,KAAM,OAybzB,SAAuBxE,GACnB,OAAOA,EAAKoa,GAChB,CA3bgCuiF,CAAc38F,GACtC,KAAK+D,EAAMU,IAAK,OA2bxB,SAAsBzE,GAClB,OAAIA,EAAK+kB,KAAKtuC,QAAU,EACb,CACHmL,KAAM,OACN26G,SAAU,IACVh9G,MAAOygB,EAAK+kB,MAEb,CACHnjC,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC,CACAqC,KAAM,OACN26G,SAAU,IACVh9G,MAAOygB,EAAK+kB,OAG5B,CA3c+B63E,CAAa58F,GACpC,KAAK+D,EAAMM,iBAAkB,OA2crC,SAAgCrE,GAC5B,MAAO,CACHpe,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC+6G,EAAuBt6F,EAAKA,OAE5C,CAjd4C68F,CAAuB78F,GAC3D,KAAK+D,EAAME,IAAK,OAidxB,SAAsBjE,GAClB,MAAO,CACHpe,KAAM,OACN26G,SAAU,IACVh9G,MAAOygB,EAAKrd,MAAMtI,IAAIigH,GAE9B,CAvd+BwC,CAAa98F,GACpC,KAAK+D,EAAMO,kBAAmB,OAudtC,SAAiCtE,GAC7B,MAAO,CACHpe,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC+6G,EAAuBt6F,EAAKA,OAE5C,CA7d6C+8F,CAAwB/8F,GAC7D,KAAK+D,EAAMQ,iBAAkB,OA6drC,SAAgCvE,GAE5B,MAAO,CACHpe,KAAM,OAEN26G,SAAU,IACVh9G,MAAO,CAAC+6G,EAAuBt6F,EAAKA,OAE5C,CAre4Cg9F,CAAuBh9F,GAE/D,MAAM,IAAI/oB,MAAM,qBAAqB+oB,EAAKpe,OAC9C,CACA,SAASq7G,EAAc1zF,GACnB,OAAO,EAAInK,EAAa8D,cAAcqG,EAC1C,CAmDA,SAASqxF,EAAej4G,GACpB,OAAK9C,MAAMC,QAAQ6C,GAEE,IAAjBA,EAAMlM,OACCkM,EAAM,GACV,CACHf,KAAM,QACN+uB,SAAUhuB,GALHA,CAOf,CAGA,SAASq3G,EAAwBnvF,GAC7B,OAAOA,CACX,CA4IA,SAAS0uF,EAAiB1uF,GACtB,MAAO,CACH5K,QAAS4K,EAAG5K,QACZH,UAAW+K,EAAG/K,UACdI,OAAQ2K,EAAG3K,OAEnB,CACA,SAASg9F,EAA2B9iH,EAAGC,GACnC,IAAI8iH,EAAKlG,EAAOh3E,QAAQm9E,aAAahjH,GAAK6iH,EAAc7iH,GAAKA,EAC7D,GAAkB,iBAAP+iH,GACP,GAAI9iH,EAAI8iH,GACJ,OAAO9iH,EAAI8iH,QAEd,GAAIt9G,MAAMC,QAAQ1F,GACnBA,EAAIA,EAAEC,KAAIgB,GAAK6hH,EAA2B7hH,EAAGhB,UAG7C,IAAK,IAAI1E,KAAOW,OAAOD,KAAK+D,GACxBA,EAAEzE,GAAOunH,EAA2B9iH,EAAEzE,GAAM0E,GAEpD,OAAOD,CACX,CACA,SAASk/G,EAAiBzuF,EAAIjpB,GAC1B,MAAM7I,EAAS,CACX6I,KAAM,QACN1D,SAAU,CAAC,GAGTm/G,EAAStkH,EACf,IAAImf,EACAtW,IAASmiB,EAAMgR,SACfh8B,EAAO2xG,UAAY,SACnBxyF,EAAY2S,EAAG3S,WAEVtW,IAASmiB,EAAMgS,IACpBh9B,EAAO2xG,UAAY,MAEd9oG,IAASmiB,EAAMmN,WACpBn4B,EAAO2xG,UAAY,WACnBxyF,EAAY2S,EAAGwG,OAInB,MAAMmhC,EAAS10C,EAAQ00C,OACjB7wB,EAAQ7jB,EAAQ6jB,MAChBrB,EAAaxiB,EAAQwiB,WACrB/D,EAAQze,EAAQye,MACtB08E,IACAn7F,EAAQ20C,SAAU,EAClB,IAAI9vD,EAAQs0G,EAAOh3E,QAAQzH,QAAQ,CAAC0gF,EAAmBruF,EAAGloB,SACrC,IAAjBA,EAAMlM,QAAkC,UAAlBkM,EAAM,GAAGf,OAC/Be,EAAQA,EAAM,GAAGguB,UACrB53B,EAAOw3B,MAAQ5tB,EACf,IAAIi/B,EAAc,CAAC,EAEnB,IAAK,IAAIrB,KAAOziB,EAAQwiB,WACpBsB,EAAYq7E,EAAc18E,EAAIpgB,WAAak5F,EAAoB94E,GAEnE,IAAI+8E,EAAa,CAAC,EAClB,IAAK,IAAI/mH,EAAIunB,EAAQ00C,OAAO/7D,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACjD,IAAI8E,EAAIyiB,EAAQ00C,OAAOj8D,GACvB+mH,EAAWL,EAAc5hH,EAAE8kB,WAAa+8F,EAA2B7D,EAAoBh+G,EAAEu2B,YAAagQ,EAC1G,CAkCA,GAjCI9jB,EAAQ6jB,MAAMlrC,OAAS,IACvB4mH,EAAO17E,MAAQ7jB,EAAQ6jB,MAAMtnC,KAAI8lB,IAC7B,IAAIq3B,EAAIylE,EAAc98F,GACtB,GAAIm9F,EAAW9lE,GAAI,CACf,IAAIz+C,EAASukH,EAAW9lE,GAExB,cADO8lE,EAAW9lE,GACX,CACHr3B,WACAyR,WAAY74B,EAEpB,CACA,MAAO,CAAE64B,WAAYzR,EAAU,KAGnCrC,EAAQye,MAAM9lC,OAAS,IACvB4mH,EAAO9gF,MAAQze,EAAQye,MAAMliC,IAAI6+G,GAAoB7+G,KAAI6C,GAAKA,EAAEqgH,WAAargH,EAAI,CAAG00B,WAAY10B,MAEhGgb,IACAmlG,EAAOnlG,UAAYA,EAAU7d,KAAKkvB,IAC9B,IAAIiuB,EAAIylE,EAAc1zF,GACtB,OAAI+zF,EAAW9lE,GACJ,CACHr3B,SAAUoJ,EACVqI,WAAY0rF,EAAW9lE,IAExBjuB,CAAI,IAGiB,IAA5B8zF,EAAOnlG,UAAUzhB,SACjB4mH,EAAOnlG,UAAY,CAAC,IAAI6yB,EAAWstE,YAIvCt/G,EAAOw3B,MAAM95B,OAAS,GAAoD,WAA/CsC,EAAOw3B,MAAMx3B,EAAOw3B,MAAM95B,OAAS,GAAGmL,KAAmB,CACpF,MAAMzH,EAASpB,EAAOw3B,MAAMx3B,EAAOw3B,MAAM95B,OAAS,GAC9C+mH,EAAqBrjH,EAAQ7D,OAAOD,KAAKurC,MACzCy7E,EAAOI,OAASxG,EAAOh3E,QAAQzH,QAAQ,CAAC0kF,EAA2B/iH,EAAOy3B,WAAYgQ,KACtF7oC,EAAOw3B,MAAMvY,QAAQ,GAE7B,CAMA,OALA8F,EAAQ00C,OAASA,EACjB10C,EAAQ6jB,MAAQA,EAChB7jB,EAAQwiB,WAAaA,EACrBxiB,EAAQye,MAAQA,EAET,CAAE36B,KAAM,QAAS+uB,SAAU,CAAC0sF,GACvC,CACA,SAASG,EAAqBtgH,EAAGwgH,GAC7B,OAAIzG,EAAOh3E,QAAQm9E,aAAalgH,GACrBwgH,EAAK1+G,QAAQi+G,EAAc//G,KAAO,EACzC2C,MAAMC,QAAQ5C,GACPA,EAAEm2B,MAAKh4B,GAAKmiH,EAAqBniH,EAAGqiH,KAC3CxgH,IAAM5G,OAAO4G,GACN5G,OAAOD,KAAK6G,GAAGm2B,MAAK19B,GAAO6nH,EAAqBtgH,EAAEvH,GAAM+nH,KAC5DA,EAAK1+G,QAAQ9B,IAAM,CAC9B,CAkPA,SAASo+G,EAAyBzwF,EAAIjpB,GAClC,MAAM85B,EAAU,CAAC,CAAE95B,OAAM45B,OAAQ0B,QAAQrS,EAAG2Q,UAU5C,MARkB,YAAd3Q,EAAGnG,OACHgX,EAAQ,GAAG5a,MAAQ,CAAEmf,SAAS,GACX,UAAdpV,EAAGnG,OACRgX,EAAQ,GAAG5a,MAAQ,CAAEof,OAAO,GACT,QAAdrV,EAAGnG,OACRgX,EAAQ,GAAG5a,MAAQ,CAAE6F,KAAK,GAE1B+U,EAAQ,GAAG5a,MAAQ,CAAElf,KAAM,QAAS1C,KAAM2rB,EAAGnG,QAC1C,CAAExmB,SAAU,CAAC,EAAG0D,KAAM,SAAU85B,UAC3C,CAUA,SAASggF,EAA6B7wF,EAAIjpB,GACtC,MAAM85B,EAAU,CAAC,CAAE95B,OAAM45B,OAAQ0B,QAAQrS,EAAG2Q,UAG5C,OAFAE,EAAQ,GAAGhX,OAAuB,YAAdmG,EAAGnG,OAAuB,CAAE9iB,KAAM,QAASq+B,SAAS,GAAS,CAAEr+B,KAAM,QAAS1C,KAAM2rB,EAAGnG,QAC3GgX,EAAQ,GAAGzP,YAAiC,YAAnBpB,EAAGoB,YAA4B,CAAErqB,KAAM,QAASq+B,SAAS,GAAS,CAAEr+B,KAAM,QAAS1C,KAAM2rB,EAAGoB,aAC9G,CAAE/tB,SAAU,CAAC,EAAG0D,KAAM,SAAU85B,UAC3C,CAEA,SAASu/E,EAAsBtqF,GAC3B,IAAKA,EACD,MAAO,GACX,MAAMoY,EAAS,CAAC,EAOhB,OANApY,EAAS/wB,SAAQglB,IACb,MAAM9D,EAAQ8D,EAAQ9D,MAAM1rB,MACvB2zC,EAAOjoB,KACRioB,EAAOjoB,GAAS,IACpBioB,EAAOjoB,GAAOroB,KAAKmsB,EAAQ,IAExBtuB,OAAOD,KAAK0yC,GAAQ1uC,KAAIymB,GACb,KAAVA,EACO,CAAElf,KAAM,MAAOi8C,QAAS9U,EAAOjoB,GAAOzmB,IAAIk/G,IAC9C,CAAE33G,KAAM,QAASi8C,QAAS9U,EAAOjoB,GAAOzmB,IAAIk/G,GAAmBr6G,KAAM6pC,EAAOjoB,GAAO,GAAGA,QAErG,CAKA,SAASq4F,EAAqBtuF,EAAIke,GAC9B,GAAIlpC,MAAMC,QAAQ+qB,GACd,OAAOA,EAAGxwB,KAAI+7E,GAAO+iC,EAAqB/iC,EAAKrtC,KACnD,IAAKle,EAAGjpB,KACJ,OAAOipB,EAEX,GAAIA,EAAGjpB,OAASmiB,EAAMqM,cAClB,OAAOvF,EACX,IAAKA,EAAGjpB,OAASmiB,EAAM6G,SAAWC,EAAGjpB,OAASmiB,EAAMiH,OAASH,EAAG/J,MAG5D,OAFAioB,EAAOtwC,KAAKoyB,EAAG/J,OAEO,KAAlB+J,EAAG/J,MAAM5hB,KACF2rB,EAAGjpB,OAASmiB,EAAM6G,QACrBE,EAAQvJ,cAAcsJ,EAAG5K,QAAS4K,EAAG/K,UAAW+K,EAAG3K,QACnD4K,EAAQ3J,WAAW0J,EAAG5K,QAAS4K,EAAG/K,UAAW+K,EAAG3K,QACjD2K,EAEX,MAAM9xB,EAAS,CAAC,EACV4kH,EAAY,CAAC,EACbC,EAAc,CAAC,EACrB,IAAK,IAAIjoH,KAAOW,OAAOD,KAAKw0B,GAAK,CAC7B,MAAMgzF,EAAY,GAElB,GADA9kH,EAAOpD,GAAOwjH,EAAqBtuF,EAAGl1B,GAAMkoH,GACxCA,EAAUpnH,OAAS,EAAG,CACtBknH,EAAUhoH,GAAOkoH,EACjB,IAAK,MAAM/8F,KAAS+8F,EAChBD,EAAY98F,EAAM1rB,OAAS0rB,CAEnC,CACJ,CACA,MAAMg9F,EAAexnH,OAAOD,KAAKunH,GACjC,GAAIE,EAAarnH,OAAS,EAEtB,GAA4B,IAAxBqnH,EAAarnH,QAAiB,CAACstB,EAAMgR,QAAShR,EAAMiM,SAAS9e,SAAS2Z,EAAGjpB,MAExE,IAAIipB,EAAGjpB,OAASmiB,EAAMwN,IAEvB,OAgBZ,SAA0B1G,EAAIke,GAC1B,IAAI/uC,EAEJ,MAAM+jH,EAAgB,CAAC,EACvB,IAAK,IAAIxnH,EAAI,EAAGA,EAAIs0B,EAAG8F,SAASl6B,SAAUF,EAAG,CACzC,MAAMquB,EAAUiG,EAAG8F,SAASp6B,GACtBynH,EAAYj1E,EAAOxyC,GAAGnB,MAC5B2oH,EAAcC,GAAiD,QAAnChkH,EAAK+jH,EAAcC,UAA+B,IAAPhkH,EAAgBA,EAAK,CAAE22B,SAAU,GAAI7P,MAAOioB,EAAOxyC,IAC1HwnH,EAAcC,GAAWrtF,SAASl4B,KAAKmsB,EAC3C,CAEA,IAAI2V,EAAW,GACf,IAAK,MAAOyjF,GAAW,SAAErtF,EAAQ,MAAE7P,MAAYxqB,OAAOkM,QAAQu7G,GAAgB,CAC1E,MAAMttF,EAAM3F,EAAQkO,UAAUrI,GAC9B4J,EAAS9hC,KAAmB,KAAdulH,EAAmBvtF,EAAM3F,EAAQ4sF,YAAYjnF,EAAK3P,GACpE,CAEA,IAAIvmB,EAAOggC,EAAS,GACpB,IAAK,IAAIhkC,EAAI,EAAGA,EAAIgkC,EAAS9jC,SAAUF,EACnCgE,EAAOuwB,EAAQ4F,WAAW,CAACn2B,EAAMggC,EAAShkC,KAC9C,OAAOgE,CACX,CArCmB0jH,CAAiBpzF,EAAI8yF,EAAUhtF,UAItC,IAAK,IAAIh7B,KAAOW,OAAOD,KAAKsnH,GAAY,CACpC,MAAMvoH,EAAQ2D,EAAOpD,GACjBkK,MAAMC,QAAQ1K,GACd2D,EAAOpD,GAAOP,EAAMiF,KAAI,CAACozC,EAAO11B,IAAoC,KAA5B4lG,EAAUhoH,GAAK,GAAGP,MAAeq4C,EAAQ3iB,EAAQ4sF,YAAYjqE,EAAOkwE,EAAUhoH,GAAKoiB,MAC1F,KAA5B4lG,EAAUhoH,GAAK,GAAGP,QACvB2D,EAAOpD,GAAOm1B,EAAQ4sF,YAAYtiH,EAAOuoH,EAAUhoH,GAAK,IAChE,CACJ,MAdIozC,EAAOtwC,KAAKmlH,EAAYE,EAAa,KAgB7C,OAAO/kH,CACX,CA5uBAK,EAAQg+C,SAJR,SAAkBvsB,EAAI7uB,EAAU,CAAC,GAE7B,OADgB,IAAI+uC,EAAWmzE,UAAUliH,GACxB7E,UAAU0/G,EAAWhsF,GAC1C,EAUAzxB,EAAQy9G,WAAaA,sCCnDrB,IAAI75G,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGy+G,EAAsBxhH,MAAQA,KAAKwhH,qBAAwBpgH,OAAO2G,OAAS,SAAUC,EAAGs6C,GACxFlhD,OAAO+C,eAAe6D,EAAG,UAAW,CAAEX,YAAY,EAAMnH,MAAOoiD,GAClE,EAAI,SAASt6C,EAAGs6C,GACbt6C,EAAW,QAAIs6C,CACnB,GACIm/D,EAAgBzhH,MAAQA,KAAKyhH,cAAiB,SAAU5f,GACxD,GAAIA,GAAOA,EAAIx5F,WAAY,OAAOw5F,EAClC,IAAIh+F,EAAS,CAAC,EACd,GAAW,MAAPg+F,EAAa,IAAK,IAAI9+F,KAAK8+F,EAAe,YAAN9+F,GAAmB3B,OAAOM,UAAUgH,eAAeC,KAAKk5F,EAAK9+F,IAAI+E,EAAgBjE,EAAQg+F,EAAK9+F,GAEtI,OADAy+G,EAAmB39G,EAAQg+F,GACpBh+F,CACX,EACI69G,EAAmB1hH,MAAQA,KAAK0hH,iBAAoB,SAAU7f,GAC9D,OAAQA,GAAOA,EAAIx5F,WAAcw5F,EAAM,CAAE,QAAWA,EACxD,EACAzgG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtD,MAAM2zG,EAAQ,EAAQ,OAChB3pF,EAAe,EAAQ,OACvB0E,EAAU6yF,EAAa,EAAQ,QAC/BI,EAAYH,EAAgB,EAAQ,QACpCK,EAASL,EAAgB,EAAQ,QACjC3hH,EAAS,gBACT8uB,EAAQD,EAAQC,MACtB,IAGI+G,EAHA5S,EAAY,IAAIzE,IAChB0qG,EAAW,EACXC,GAAW,EA6Bf,SAASC,EAAeC,EAAQhzE,EAAOC,GAMnC,GAJArzB,EAAY,IAAIzE,IAChB0qG,EAAW,EACXC,EAAWlhF,QAAQoO,IAEdgzE,EAAO18G,KACR,OAAOkpB,EAAQ8sF,YACnB,GAAoB,UAAhB0G,EAAO18G,MAAoC,WAAhB08G,EAAO18G,KAClC,MAAM,IAAI3K,MAAM,6DACpB,IAAIgD,EAmjBR,IAAyBskH,EApiBrB,OAbAC,EAAiBF,GACG,UAAhBA,EAAO18G,MAGP3H,EAAMwkH,EADQ,CAAE78G,KAAM,QAAS+uB,SAAU2tF,EAAO/tF,OAAS,KAEzDt2B,EA4aR,SAA6ByzB,EAAOzzB,GAEhC,MAAMojH,EAAS3vF,EAETkwC,EAAI,GACJs5C,EAAI,CAAC,EAKX,GAJAmG,EAAOnlG,UAAYmlG,EAAOnlG,WAAamlG,EAAOnlG,UAAU7d,KAAIu9C,GAAO8mE,EAAa9mE,EAAKs/D,KACrFmG,EAAOI,OAASJ,EAAOI,QAAUJ,EAAOI,OAAOpjH,KAAIu9C,GAAO8mE,EAAa9mE,EAAKs/D,KAC5EmG,EAAO9gF,MAAQ8gF,EAAO9gF,OAAS8gF,EAAO9gF,MAAMliC,KAAIu9C,GAAO8mE,EAAa9mE,EAAKs/D,KAErEmG,EAAO17E,OAASrrC,OAAOD,KAAK6gH,GAAGzgH,OAAS,EAAG,CAC3C,MAAM6pC,EAAahqC,OAAOD,KAAK6gH,GAAG78G,KAAIm9C,GA8G9C,SAAiC+mE,EAAQ/mE,GACrC,GAAoB,cAAhB+mE,EAAO38G,OAAyB28G,EAAOzC,YACvC,MAAM,IAAI7kH,MAAM,qBAAqBC,KAAKC,UAAUonH,MACxD,MAAMrH,EAAImC,EAAoBkF,GAE9B,OADArH,EAAE/2F,SAAWq3B,EACN0/D,CACX,CApHmD8C,CAAwB9C,EAAE1/D,GAAI1sB,EAAQssF,WAAW5/D,MACtFrG,EAAO,GACb,GAAIksE,EAAO17E,MACP,IAAK,MAAMtmC,KAAKgiH,EAAO17E,MACnB,GAAIs1E,EAAOh3E,QAAQm9E,aAAa/hH,EAAEu2B,YAC9Buf,EAAK14C,KAAK4C,EAAEu2B,gBAEX,CAED,MAAM4lB,EAAI,aAAcn8C,EAAIA,EAAE8kB,SAAWw+F,IACzC1kH,EAAM6wB,EAAQ8J,aAAa36B,EAAKu9C,EAAG6hE,EAAoBh+G,EAAEu2B,aACzDuf,EAAK14C,KAAK++C,EACd,CAGRv9C,EAAM6wB,EAAQmsB,YAAYh9C,EAAKk3C,EAAM7Q,EACzC,CAEA,GAAI+8E,EAAOI,OACP,IAAK,IAAItjH,KAAUkjH,EAAOI,OACtBxjH,EAAM6wB,EAAQqH,aAAal4B,EAAKo/G,EAAoBl/G,IAExDuzB,EAAMnrB,SACNtI,EAAM6wB,EAAQ4F,WAAW,CAACz2B,EAAK2kH,EAAoBlxF,MAEvD,IAAImxF,EAAK,GACT,GAAwB,WAApBnxF,EAAMg9E,WAA8C,aAApBh9E,EAAMg9E,UAEtC,GAAIh9E,EAAMxV,UAAUmb,MAAMh4B,GAAMA,GAAK47G,EAAOh3E,QAAQ4gC,WAAWxlE,KAC3DwjH,EAAKvoH,OAAOiM,OAAOqxB,EAAiBlG,IAC/B+V,MAAK,CAAC1tB,EAAMO,IAAUP,EAAK3gB,MAAMuiD,cAAcrhC,EAAMlhB,cAG1D,IAAK,IAAIoiD,KAAK9pB,EAAMxV,UAEZ4mG,EAAWtnE,MAAQ,aAAcA,GACjCqnE,EAAGpmH,KAAK++C,GACHA,EAAEr3B,WAEP0+F,EAAGpmH,KAAK++C,EAAEr3B,UACVy9C,EAAEnlE,KAAK++C,IAMvB,IAAK,IAAIA,KAAKomB,EACV3jE,EAAM6wB,EAAQ8J,aAAa36B,EAAKu9C,EAAEr3B,SAAUk5F,EAAoB7hE,EAAE5lB,aAmCtE,OA/BIyrF,EAAO9gF,QACPtiC,EAAM6wB,EAAQgtF,cAAc79G,EAAKojH,EAAO9gF,MAAMliC,KAAKk/F,IAC/C,IAAIxgG,EAASsgH,EAAoB9f,EAAI3nE,YAGrC,OAFI2nE,EAAIgkB,aACJxkH,EAAS+xB,EAAQqI,yBAAyB,OAAQ,CAACp6B,KAChDA,CAAM,MAIG,WAApB20B,EAAMg9E,YAENzwG,EAAM6wB,EAAQkK,cAAc/6B,EAAK4kH,IAEjCxB,EAAOp4E,WACPhrC,EAAM6wB,EAAQlK,eAAe3mB,IAE7BojH,EAAO7C,UACPvgH,EAAM6wB,EAAQitF,cAAc99G,IAER,cAApByzB,EAAMg9E,UACNzwG,EAAM6wB,EAAQoF,gBAAgBj2B,GAAMyzB,EAAMyC,UAAY,IAAI91B,IAAI0kH,IACrC,QAApBrxF,EAAMg9E,UACXzwG,EAAM6wB,EAAQmQ,UAAUhhC,GACC,aAApByzB,EAAMg9E,YACXzwG,EAAM6wB,EAAQysF,eAAet9G,EAAK4kH,KAGlCxB,EAAOnnH,QAAUmnH,EAAO9sG,SACxBtW,EAAM6wB,EAAQiqF,YAAY96G,EAAKojH,EAAOnnH,QAAU,EAAGmnH,EAAO9sG,QAC1D8sG,EAAOt0C,OACP9uE,EAAM6wB,EAAQ0sF,WAAWv9G,EAAKojH,EAAOt0C,KAAK9oC,QAASo9E,EAAOt0C,KAAK7oC,QAC5DjmC,CACX,CA1gBc+kH,CAAoBV,EAAQrkH,IAEb,WAAhBqkH,EAAO18G,OACZ3H,EA0iB0B,KADTskH,EAziBKD,GA0iBf5iF,QAAQjlC,OACRwoH,EAAsBV,EAAO7iF,QAAQ,IACzC5Q,EAAQuQ,sBAAsBkjF,EAAO7iF,QAAQrhC,IAAI4kH,KA1iBpD1zE,IACAtxC,EAAMy5G,EAA+Bz5G,IAElCA,CACX,CAIA,SAASilH,EAAO31F,GACZ,OAAO2T,QAAQ3T,aAAmC,EAASA,EAAK7G,SACpE,CAKA,SAASo8F,EAAWv1F,GAChB,MAAuE,cAA/DA,aAAmC,EAASA,EAAK7G,SAC7D,CAEA,SAAS87F,EAAiBD,GACtB,GAAIW,EAAOX,GACHO,EAAWP,IAEXrmG,EAAUvE,IAAI,IAAI4qG,EAAOnpH,cAG5B,GAAIyK,MAAMC,QAAQy+G,GACnB,IAAK,MAAMhlF,KAASglF,EAChBC,EAAiBjlF,QAEpB,GAAIglF,GAA4B,iBAAXA,EACtB,IAAK,IAAI5oH,KAAOW,OAAOD,KAAKkoH,GAEpB5oH,EAAIs0B,WAAW,MACf/R,EAAUvE,IAAIhe,GAClB6oH,EAAiBD,EAAO5oH,GAGpC,CAEA,SAASi+B,EAAiB2qF,GACtB,IAAIY,EAAU,CAAC,EACf,IA9BcllC,EA8BDskC,GA7BCt+F,SAAWg6D,EAAOn6D,WAAam6D,EAAO/5D,OA6B9B,CAElB,MAAMnnB,EAAS,CACX66B,EAAiB2qF,EAAOt+F,SACxB2T,EAAiB2qF,EAAOz+F,WACxB8T,EAAiB2qF,EAAOr+F,QACxBq+F,EAAOz9F,MAAQ8S,EAAiB2qF,EAAOz9F,OAAS,CAAC,GAErDxqB,OAAOoU,OAAOy0G,KAAYpmH,EAC9B,MACK,GAAImmH,EAAOX,GACRO,EAAWP,KACXY,EAAQZ,EAAOnpH,OAASmpH,QAE3B,GAAoB,QAAhBA,EAAO38G,KAAgB,CAE5B,MAAM0pC,EAAQizE,EAAO1gE,QACrBvnD,OAAOoU,OAAOy0G,KAAY7zE,EAAMjxC,IAAIu5B,GACxC,MACK,GAAoB,SAAhB2qF,EAAO38G,KAEZtL,OAAOoU,OAAOy0G,KAAYZ,EAAOh/G,MAAMlF,IAAIu5B,SAE1C,GAAoB,UAAhB2qF,EAAO38G,MAAoC,UAAhB28G,EAAO38G,MAAoC,aAAhB28G,EAAO38G,KAClEtL,OAAOoU,OAAOy0G,KAAYZ,EAAO5tF,SAASt2B,IAAIu5B,SAE7C,GAAoB,YAAhB2qF,EAAO38G,MAAsC,UAAhB28G,EAAO38G,KACzCtL,OAAOoU,OAAOy0G,EAASvrF,EAAiB2qF,EAAOr/G,OAC/C5I,OAAOoU,OAAOy0G,KAAYZ,EAAO5tF,SAASt2B,IAAIu5B,SAE7C,GAAoB,SAAhB2qF,EAAO38G,KACZtL,OAAOoU,OAAOy0G,EAASvrF,EAAiB2qF,EAAOp+F,gBAE9C,GAAoB,WAAhBo+F,EAAO38G,MACZ,GAAI28G,EAAOh8G,OAAO9L,OAAS,EAAG,CAC1B,MAAM06C,EAAO76C,OAAOD,KAAKkoH,EAAOh8G,OAAO,IAAIlI,KAAIm9C,GAAK1sB,EAAQssF,WAAW5/D,KACvElhD,OAAOoU,OAAOy0G,KAAYhuE,EAAK92C,IAAIu5B,GACvC,OAEC,GAAoB,UAAhB2qF,EAAO38G,OACa,WAArB28G,EAAO7T,WAA+C,aAArB6T,EAAO7T,WAA0B,CAC9D6T,EAAOhuF,OAASguF,EAAOrmG,UAAUmb,KAAK4jF,EAAOh3E,QAAQ4gC,aACrDvqE,OAAOoU,OAAOy0G,KAAYZ,EAAOhuF,MAAMl2B,IAAIu5B,IAC/C,IAAK,MAAM4jB,KAAK+mE,EAAOrmG,UACf4mG,EAAWtnE,GACXlhD,OAAOoU,OAAOy0G,EAASvrF,EAAiB4jB,IACnCA,EAAEr3B,UACP7pB,OAAOoU,OAAOy0G,EAASvrF,EAAiB4jB,EAAEr3B,WAElD,GAAyB,WAArBo+F,EAAO7T,UAAwB,CAC/B,GAAI6T,EAAO58E,MAEP,IAAK,MAAMy9E,KAAKb,EAAO58E,MACfy9E,EAAEj/F,UACF7pB,OAAOoU,OAAOy0G,EAASvrF,EAAiBwrF,EAAEj/F,WAGtD,GAAIo+F,EAAOh8G,OAAQ,CACf,MAAMA,EAAS,CAAEX,KAAM,SAAUW,OAAQg8G,EAAOh8G,QAChDjM,OAAOoU,OAAOy0G,EAASvrF,EAAiBrxB,GAC5C,CACJ,CACJ,CA5FR,IAAkB03E,EA8Fd,OAAOklC,CACX,CACA,SAASV,EAAsBF,GAO3B,GAAoB,QAAhBA,EAAO38G,KACP,OA0ER,SAAsB28G,GAClB,IAAI5tF,EAAW,GACXkE,EAAQ,GACZ,IAAK,IAAI+iE,KAAK2mB,EAAO1gE,QACjB,GAAI,aAAc+5C,EAAE93E,UAAW,CAE3B,IAAIE,EAyBLq/F,GAJYplC,EArBc2d,GAsBhB33E,QACNq/F,EAAuBrlC,EAAOn6D,WAC/Bm6D,EAAO/5D,QAvBT,IAAK,IAAIviB,KAAKqiB,EACNriB,EAAEiE,OAASmiB,EAAMiH,MACb2F,EAASl6B,OAAS,GAClBo+B,EAAMp8B,KAAKqyB,EAAQkO,UAAUrI,IACjCA,EAAW,GACXkE,EAAMp8B,KAAKkF,IAGXgzB,EAASl4B,KAAKkF,EAE1B,MAEIgzB,EAASl4B,KAAKsmH,EAAcnnB,IAQxC,IAAuB3d,EAJnB,OAFItpD,EAASl6B,OAAS,GAClBo+B,EAAMp8B,KAAKqyB,EAAQkO,UAAUrI,IACZ,IAAjBkE,EAAMp+B,OACCo+B,EAAM,GACV/J,EAAQ4F,WAAWmE,EAC9B,CApGe2kF,CAAa+E,GAGxB,GAAoB,UAAhBA,EAAO38G,KACP,OAAOkpB,EAAQzJ,YAAYk9F,EAAO5tF,SAASt2B,KAAKsD,IAE7B,UAAXA,EAAEiE,OACFjE,EAAI,CAAEiE,KAAM,QAAS+uB,SAAU,CAAChzB,KAC7B8gH,EAAsB9gH,OAGrC,GAAoB,UAAhB4gH,EAAO38G,KAAkB,CAIzB,IAAI7I,EAAS0lH,EADC,CAAE78G,KAAM,QAAS+uB,SAAU4tF,EAAO5tF,WAOhD,OAHI53B,EADAqlH,EACSmB,EAAaxmH,EAAQwlH,EAAOr/G,MAE5B4rB,EAAQ4sF,YAAY3+G,EAAQwlH,EAAOr/G,MACzCnG,CACX,CAEA,GAAoB,WAAhBwlH,EAAO38G,KACP,OAAOg9G,EAAoBL,GAE/B,GAAoB,UAAhBA,EAAO38G,KACP,OAAOy8G,EAAeE,EAAQH,GAAU,GAC5C,GAAoB,UAAhBG,EAAO38G,KAAkB,CAEzB,IAAI49G,EAAU,GACVC,EAAa,GACjB,IAAK,IAAI76F,KAAW25F,EAAO5tF,UACL,WAAjB/L,EAAQhjB,KAAoB49G,EAAUC,GAAYhnH,KAAKmsB,GAE5D,IAAI7rB,EAAS0mH,EAAWvtF,OAAOwtF,EAA6B50F,EAAQkO,UAAU,KAE1EiK,EAAcu8E,EAAQnlH,KAAIF,GAAUk/G,EAAoBl/G,EAAOy3B,cAGnE,OAFIqR,EAAYxsC,OAAS,IACrBsC,EAAS+xB,EAAQqH,aAAap5B,EAAQkqC,EAAY/Q,QAAO,CAACk0B,EAAKmzC,IAAQzuE,EAAQqI,yBAAyB,KAAM,CAACizB,EAAKmzC,QACjHxgG,CACX,CACA,MAAM,IAAI9B,MAAM,oBAAoBsnH,EAAO38G,OAC/C,CACA,SAASy3G,EAAoB9f,GACzB,GAAI0d,EAAOh3E,QAAQm9E,aAAa7jB,GAC5B,OAAOzuE,EAAQyb,qBAAqBgzD,GACxC,GAAI0d,EAAOh3E,QAAQ0/E,OAAOpmB,GACtB,OAAI0d,EAAOh3E,QAAQ2/E,iBAAiBrmB,GACzBzuE,EAAQqI,yBAAyB,SAAU,CAC9CkmF,EAAoB9f,EAAIt5E,SACxBo5F,EAAoB9f,EAAIz5E,WACxBu5F,EAAoB9f,EAAIr5E,UAGrB4K,EAAQyb,qBAAqBgzD,GAE5C,GAAI0d,EAAOh3E,QAAQ4gC,WAAW04B,GAC1B,OAAOzuE,EAAQqsB,2BACnB,GAAI,gBAAiBoiD,EACjB,OAAOzuE,EAAQwsF,0BAA0B/d,EAAIuiB,YAAazC,EAAoB9f,EAAI3nE,YAAasL,QAAQq8D,EAAIt0D,UAAWs0D,EAAIz8B,WAC9H,GAAI,aAAcy8B,EAEd,OAAOzuE,EAAQstF,sBAAsB7e,EAAI0iB,SAAU1iB,EAAI5/F,KAAKU,IAAIg/G,IACpE,GAAI,aAAc9f,EACd,MAAqB,WAAjBA,EAAIvnE,UAA0C,cAAjBunE,EAAIvnE,SAC1BlH,EAAQqtF,0BAA2C,cAAjB5e,EAAIvnE,SAA0BysF,EAAsBllB,EAAI5/F,KAAK,MACrF,OAAjB4/F,EAAIvnE,UAAsC,UAAjBunE,EAAIvnE,WAC7BunE,EAAI5/F,KAAO,CAAC4/F,EAAI5/F,KAAK,IAAIyiC,OAAOm9D,EAAI5/F,KAAK,KACtCmxB,EAAQqI,yBAAyBomE,EAAIvnE,SAAUunE,EAAI5/F,KAAKU,IAAIg/G,KAEvE,MAAM,IAAIpiH,MAAM,uBAAuBC,KAAKC,UAAUoiG,KAC1D,CAkCA,SAAS+lB,EAAuBx/F,GAC5B,GAAIm3F,EAAOh3E,QAAQm9E,aAAat9F,GAAY,CACxC,GAA2B,cAAvBA,EAAU4C,SACV,OAAOoI,EAAQ0mF,WAAW1xF,GAE1B,MAAM,IAAI7oB,MAAM,6CAA6CC,KAAKC,UAAU2oB,KACpF,CACA,GAA2B,MAAvBA,EAAUy8F,SACV,OAAOzxF,EAAQsa,UAAUk6E,EAAuBx/F,EAAUvgB,MAAM,KACpE,GAA2B,MAAvBugB,EAAUy8F,SAAkB,CAE5B,IAEIh9G,EAFAsgH,EAAU,GACVC,EAAW,GAGXvgH,EADA,aAAcugB,EAAUvgB,MAAM,IAAsC,MAAhCugB,EAAUvgB,MAAM,GAAGg9G,SAC/Cz8F,EAAUvgB,MAAM,GAAGA,MAEnBugB,EAAUvgB,MACtB,IAAK,IAAI8X,KAAQ9X,EACb,GAAI03G,EAAOh3E,QAAQm9E,aAAa/lG,GAC5BwoG,EAAQpnH,KAAK4e,OACZ,IAAsB,MAAlBA,EAAKklG,SAGV,MAAM,IAAItlH,MAAM,oBAAoBC,KAAKC,UAAUkgB,MAFnDyoG,EAASrnH,KAAK4e,EAAK9X,MAAM,GAEkC,CAGnE,IAAIwgH,EAAgBj1F,EAAQ+sF,UAAUgI,GAClCG,EAAkBl1F,EAAQsa,UAAUta,EAAQ+sF,UAAUiI,IAC1D,OAAwB,IAApBA,EAASrpH,OACFspH,EACY,IAAnBF,EAAQppH,OACDupH,EACJl1F,EAAQiF,UAAU,CAACgwF,EAAeC,GAC7C,CACA,GAA2B,MAAvBlgG,EAAUy8F,SACV,OAAOzxF,EAAQuN,UAAUvY,EAAUvgB,MAAMlF,IAAIilH,IACjD,GAA2B,MAAvBx/F,EAAUy8F,SACV,OAAOzxF,EAAQiF,UAAUjQ,EAAUvgB,MAAMlF,IAAIilH,IACjD,GAA2B,MAAvBx/F,EAAUy8F,SACV,OAAOzxF,EAAQmtF,qBAAqBqH,EAAuBx/F,EAAUvgB,MAAM,KAC/E,GAA2B,MAAvBugB,EAAUy8F,SACV,OAAOzxF,EAAQqa,oBAAoBm6E,EAAuBx/F,EAAUvgB,MAAM,KAC9E,GAA2B,MAAvBugB,EAAUy8F,SACV,OAAOzxF,EAAQotF,oBAAoBoH,EAAuBx/F,EAAUvgB,MAAM,KAC9E,MAAM,IAAItI,MAAM,uCAAuCC,KAAKC,UAAU2oB,KAC1E,CACA,SAASu/F,EAAap/F,EAASH,EAAWI,GACtC,GAAIJ,EAAUle,OAASmiB,EAAMS,KACzB,MAAO,CAACsG,EAAQvJ,cAActB,EAASH,EAAUsa,IAAKla,IAC1D,GAAIJ,EAAUle,OAASmiB,EAAMK,IACzB,OAAOi7F,EAAan/F,EAAQJ,EAAUE,KAAMC,GAChD,GAAIH,EAAUle,OAASmiB,EAAME,IAAK,CAC9B,IAAIqhB,EAASrlB,EACb,OAAOg3F,EAAOh3E,QAAQzH,QAAQ1Y,EAAUnd,MAAMtI,KAAI,CAAC8pB,EAAO5tB,KACtD,MAAMivC,EAAajvC,IAAMupB,EAAUnd,MAAMlM,OAAS,EAAIypB,EAASy+F,IACzDsB,EAAiBZ,EAAa/5E,EAAQnhB,EAAOqhB,GAInD,MAH4B,aAAxBA,EAAW9iB,WACX4iB,EAASE,GAENy6E,CAAc,IAE7B,CACA,MAAO,CAACn1F,EAAQ3J,WAAWlB,EAASH,EAAWI,GACnD,CACA,SAASy+F,IACL,IAAInnE,EAAI,OAAO2mE,IACf,OAAIjmG,EAAU7V,IAAIm1C,GACPmnE,KACXzmG,EAAUvE,IAAI6jC,GACP1sB,EAAQssF,WAAW5/D,GAC9B,CACA,SAASunE,EAAcn1F,GACnB,GAAI,aAAcA,EAAK9J,UACnB,MAAM,IAAI7oB,MAAM,8CAIpB,OAAO6zB,EAAQvJ,cAAcqI,EAAK3J,QAAS2J,EAAK9J,UAAW8J,EAAK1J,OAAQ0J,EAAK9I,MACjF,CArUA1nB,EAAA,QAhBA,SAAmBklH,EAAQtiH,GAGvB,IAAI0xB,EACJ,GAHA1xB,EAAUA,GAAW,CAAC,EACtB8uB,EAAU,IAAIisF,EAAU92E,QAAQjkC,EAAQ+yD,aA2ClB,iBAzCTuvD,EAAS,CAClB,IAAI11G,EAAS,IAAI3T,EAAO+G,GAGxB4M,EAAOs3G,eACPxyF,EAAQ9kB,EAAOzG,MAAMm8G,EACzB,MAEI5wF,EAAQ4wF,EAEZ,OAAOD,EAAe3wF,EAAO1xB,EAAQsvC,MAAOtvC,EAAQuvC,gBACxD,EAuUA,IAAI40E,EAAW7pH,OAAOiM,OAAOwhB,GAC7B,SAASw7F,EAAahB,EAAQz9F,EAAO02D,GACjC,GAAI+mC,EAAO38G,OAASmiB,EAAMmS,MAAO,CAC7B,GAAIshD,EAGA,MAAM,IAAIvgF,MAAM,+EAGpBsnH,EAASgB,EAAahB,EAAO57G,MAAO47G,EAAOr/G,KAC/C,MACK,GAAIq/G,EAAO38G,OAASmiB,EAAMiM,cAI1B,GAAIuuF,EAAO38G,OAASmiB,EAAMwN,IAC3BgtF,EAAO5tF,SAAW4tF,EAAO5tF,SAASt2B,KAAIuvB,IAC9B4tD,IACI5tD,EAAK3J,QAAQ2V,OAAO9U,KACpB8I,EAAK3J,QAAUu3D,GACf5tD,EAAK9J,UAAU8V,OAAO9U,KACtB8I,EAAK9J,UAAY03D,GACjB5tD,EAAK1J,OAAO0V,OAAO9U,KACnB8I,EAAK1J,OAASs3D,IAEM,iBAAxB5tD,EAAK9I,MAAM4B,WACXkH,EAAK9I,MAAQA,GACV8I,UAEV,GAAI20F,EAAO38G,OAASmiB,EAAMiH,KACvBwsD,IACI+mC,EAAOt+F,QAAQ2V,OAAO9U,KACtBy9F,EAAOt+F,QAAUu3D,GACjB+mC,EAAOr+F,OAAO0V,OAAO9U,KACrBy9F,EAAOr+F,OAASs3D,IAEM,iBAA1B+mC,EAAOz9F,MAAM4B,WACb67F,EAAOz9F,MAAQA,QAIlB,GAAIy9F,EAAO38G,OAASmiB,EAAMgR,SAAYyiD,EAQtC,GAAI+mC,EAAO38G,OAASmiB,EAAM4Q,QAAW6iD,EAMtC,IAAK,IAAI7hF,KAAOW,OAAOD,KAAKkoH,GACpB1+G,MAAMC,QAAQy+G,EAAO5oH,IACrB4oH,EAAO5oH,GAAO4oH,EAAO5oH,GAAK0E,KAAK4iC,GAAMsiF,EAAatiF,EAAGnc,EAAO02D,KACvD2oC,EAASnhH,QAAQu/G,EAAO5oH,GAAKiM,OAAS,EAC3C28G,EAAO5oH,GAAO4pH,EAAahB,EAAO5oH,GAAMmrB,EAAO02D,GAC1CA,GAAesnC,EAAWP,EAAO5oH,KAAS4oH,EAAO5oH,GAAKigC,OAAO9U,KAClEy9F,EAAO5oH,GAAO6hF,QAXlB+mC,EAAOp+F,SAASyV,OAAO9U,KACvB02D,EAAcmnC,KAClBJ,EAAO57G,MAAQ48G,EAAahB,EAAO57G,MAAOme,EAAO02D,QAV5C+mC,EAAOrmG,UAAUmb,MAAKmkB,GAAKA,EAAE5hB,OAAO9U,OACrC02D,EAAcmnC,KAClBJ,EAAO57G,MAAQ48G,EAAahB,EAAO57G,MAAOme,EAAO02D,GAoBrD,OAAO+mC,CACX,CACA,SAASmB,EAA4BU,EAAGxiD,GACpC,GAAe,aAAXA,EAAEh8D,KAAqB,CAEvB,MAAMs1G,EAAIuH,EAAsB,CAAE78G,KAAM,QAAS+uB,SAAUitC,EAAEjtC,WAEzDyvF,EADAlJ,EAAEt1G,OAASmiB,EAAM+O,OACbhI,EAAQyK,eAAe6qF,EAAGlJ,EAAEv0G,MAAOu0G,EAAEtlF,YAGrC9G,EAAQyK,eAAe6qF,EAAGlJ,EACtC,MACK,GAAe,UAAXt5C,EAAEh8D,KAAkB,CAEzB,MAAMs1G,EAAIuH,EAAsB,CAAE78G,KAAM,QAAS+uB,SAAUitC,EAAEjtC,WAC7DyvF,EAAIt1F,EAAQ6sF,YAAYyI,EAAGlJ,EAC/B,MACK,GAAe,SAAXt5C,EAAEh8D,KACPw+G,EAAIt1F,EAAQ8J,aAAawrF,EAAGxiD,EAAEz9C,SAAUk5F,EAAoBz7C,EAAEhsC,kBAC7D,GAAe,YAAXgsC,EAAEh8D,KAAoB,CAE3B,MAAM+/B,EAAQ,CAAE//B,KAAM,QAAS+uB,SAAUitC,EAAEjtC,UAE3CyvF,EAAIC,EAAeD,EADTt1F,EAAQktF,cAAcyG,EAAsB98E,GAAQi8B,EAAE1+D,KAAM0+D,EAAEpiC,QAE5E,MAGI4kF,EAAIC,EAAeD,EADT3B,EAAsB7gD,IAGpC,OAAOwiD,CACX,CACA,SAASC,EAAeD,EAAGlJ,GAUvB,OARIkJ,EAAEx+G,OAASmiB,EAAMwN,KAAO2lF,EAAEt1G,OAASmiB,EAAMwN,IACzC6uF,EAAIt1F,EAAQkO,UAAU,IAAIonF,EAAEzvF,YAAaumF,EAAEvmF,WAEtCyvF,EAAEx+G,OAASmiB,EAAMwN,KAA6B,IAAtB6uF,EAAEzvF,SAASl6B,OACxC2pH,EAAIlJ,EACCA,EAAEt1G,OAASmiB,EAAMwN,KAA6B,IAAtB2lF,EAAEvmF,SAASl6B,SAExC2pH,EAAIt1F,EAAQ4F,WAAW,CAAC0vF,EAAGlJ,KACxBkJ,CACX,CACA,SAASxB,EAAoBr8G,GACzB,IAAI2V,GAAsC,IAAzB3V,EAAOA,OAAO9L,OAAe,GAAKH,OAAOD,KAAKkM,EAAOA,OAAO,KAAKlI,IAAIywB,EAAQssF,WAAWngG,KAAK6T,IAC1GlJ,EAAWrf,EAAOA,OAAOlI,KAAK28C,IAC9B,IAAI3gD,EAAOC,OAAOD,KAAK2gD,GACvB3gD,EAAOA,EAAK8D,QAAOlC,QAAoB5C,IAAf2hD,EAAQ/+C,KAChC,IAAIoC,EAAM,CAAC,EACX,IAAK,IAAI1E,KAAOU,EACZgE,EAAI1E,GAAOqhD,EAAQrhD,GACvB,OAAO0E,CAAG,IAEd,OAAOywB,EAAQ+K,aAAa3d,EAAW0J,EAC3C,CAkGA,SAAS88F,EAAaH,EAAQj+E,GAC1B,GAAI,SAAUi+E,GAA0B,cAAhBA,EAAO38G,KAAsB,CACjD,IACI41C,EADAklD,GAAQ,EAEZ,IAAK,IAAI/mG,KAAOW,OAAOD,KAAKiqC,GACxB,GAAIyoE,EAAMzoE,EAAW3qC,GAAM4oH,GAAS,CAChC/mE,EAAI1sB,EAAQssF,WAAWzhH,GACvB+mG,GAAQ,EACR,KACJ,CAMJ,OAJKA,IACDllD,EAAImnE,IACJr+E,GAAW,EAAIlhB,EAAa8D,cAAcs0B,IAAM+mE,GAE7C/mE,CACX,CAEA,MAAI,eAAgB+mE,GAAUA,EAAO3sF,WAC1B,IAAK2sF,EAAQ3sF,WAAY8sF,EAAaH,EAAO3sF,WAAY0O,IAChE,SAAUi+E,GAAUA,EAAO5kH,KACpB,IAAK4kH,EAAQ5kH,KAAM4kH,EAAO5kH,KAAKU,KAAIimH,GAAa5B,EAAa4B,EAAWhgF,MAE5Ei+E,CACX,CAaA,SAASU,EAAsBV,GAC3B,GAAI,SAAUA,EAAQ,CAClB,GAAoB,SAAhBA,EAAO38G,KACP,OA+DZ,SAAkC28G,GAC9B,OAAOzzF,EAAQ0tF,WAAW+F,EAAO75F,OAAQ65F,EAAOtyF,YAAasyF,EAAO/iF,OACxE,CAjEmB+kF,CAAyBhC,GACpC,GAAoB,UAAhBA,EAAO38G,MAAoC,WAAhB28G,EAAO38G,MAAqC,SAAhB28G,EAAO38G,KAC9D,OA2CZ,SAA8B28G,GAC1B,IAAI75F,EAWJ,OATIA,EADAuyF,EAAOh3E,QAAQm9E,aAAamB,EAAOz9F,OAC1By9F,EAAOz9F,MACXy9F,EAAOz9F,MAAM6F,IACT,MACJ43F,EAAOz9F,MAAMmf,QACT,UACJs+E,EAAOz9F,MAAMof,MACT,QAEAq+E,EAAOz9F,MAAM5hB,KAClBq/G,EAAO38G,MACX,IAAK,QAAS,OAAOkpB,EAAQ4tF,YAAYh0F,EAAQ65F,EAAO/iF,QACxD,IAAK,SAAU,OAAO1Q,EAAQ6tF,aAAaj0F,EAAQ65F,EAAO/iF,QAC1D,IAAK,OAAQ,OAAO1Q,EAAQwQ,WAAW5W,EAAQ65F,EAAO/iF,QAE9D,CA5DmBglF,CAAqBjC,GAChC,GAAoB,QAAhBA,EAAO38G,MAAkC,SAAhB28G,EAAO38G,MAAmC,SAAhB28G,EAAO38G,KAC1D,OA8DZ,SAAsC28G,GAClC,MAAM75F,EAAS65F,EAAO75F,OAAOub,QAAU,UAAYs+E,EAAO75F,OAAOxlB,KAC3D+sB,EAAcsyF,EAAOtyF,YAAYgU,QAAU,UAAYs+E,EAAOtyF,YAAY/sB,KAChF,OAAQq/G,EAAO38G,MACX,IAAK,OAAQ,OAAOkpB,EAAQ+tF,WAAWn0F,EAAQuH,EAAasyF,EAAO/iF,QACnE,IAAK,OAAQ,OAAO1Q,EAAQ8tF,WAAWl0F,EAAQuH,EAAasyF,EAAO/iF,QACnE,IAAK,MAAO,OAAO1Q,EAAQyQ,UAAU7W,EAAQuH,EAAasyF,EAAO/iF,QAEzE,CAtEmBkgF,CAA6B6C,EAC5C,MACK,GAA0B,iBAAtBA,EAAO3T,YAAuD,gBAAtB2T,EAAO3T,YAAsD,WAAtB2T,EAAO3T,YAAiD,WAAtB2T,EAAO3T,WAC7H,OAGR,SAA+B2T,GAC3B,IAAKH,EACD,MAAM,IAAInnH,MAAM,yEACpB,IAEIs5B,EAFAkwF,EAAgB,GAChBC,EAAgB,GAMpB,GAJInC,EAAOx4F,SACP06F,EAAgBxJ,EAAOh3E,QAAQzH,QAAQ+lF,EAAOx4F,OAAO1rB,KAAIsI,GAASg+G,EAA4Bh+G,EAAO47G,EAAOz9F,WAC5Gy9F,EAAOjuF,SACPowF,EAAgBzJ,EAAOh3E,QAAQzH,QAAQ+lF,EAAOjuF,OAAOj2B,KAAIsI,GAASg+G,EAA4Bh+G,EAAO47G,EAAOz9F,WAC5Gy9F,EAAOhuF,OAASguF,EAAOhuF,MAAM95B,OAAS,EAAG,CACzC85B,EAAQkuF,EAAsB,CAAE78G,KAAM,QAAS+uB,SAAU4tF,EAAOhuF,QAEhE,MAAMyqF,EAAMuD,EAAOrD,MACfF,EACAzqF,EAAQzF,EAAQ0sF,WAAWjnF,EAAOyqF,EAAI/6E,QAAS+6E,EAAI96E,OAC9Cq+E,EAAOz9F,QAEZyP,EAAQgvF,EAAahvF,EAAOguF,EAAOz9F,OAC3C,KAC+B,gBAAtBy9F,EAAO3T,YAAgC6V,EAAchqH,OAAS,IACnE85B,EAAQzF,EAAQkO,UAAUynF,IAE9B,OAAO31F,EAAQuF,mBAAmBowF,EAAchqH,OAAS,EAAIgqH,OAAgBprH,EAAWqrH,EAAcjqH,OAAS,EAAIiqH,OAAgBrrH,EAAWk7B,EAClJ,CA3BeqwF,CAAsBrC,GACjC,MAAM,IAAItnH,MAAM,uBAAuBC,KAAKC,UAAUonH,KAC1D,CA2BA,SAASoC,EAA4BpC,EAAQz9F,GACzC,IAAI+/F,EAAe//F,EACC,UAAhBy9F,EAAO38G,OACPi/G,EAAetC,EAAOr/G,MAC1B,IAAI4hH,EAAiBvC,EAAO1gE,QAG5B,OAFIgjE,IACAC,EAAiBA,EAAezmH,KAAI4/E,GAAU3jF,OAAOoU,OAAOuvE,EAAQ,CAAEn5D,MAAO+/F,OAC1EC,EAAezmH,IAAI0kH,EAC9B,CA+BA,SAASrL,EAA+Bz5G,GACpC,MAAM05G,EAAyB,CAAC,EAC1BC,EAAe/zG,MAAMkpE,KAAK7wD,GAAWga,QAAO,CAACk0B,EAAKjmC,KACpDimC,EAAIjmC,IAAY,EACTimC,IACR,CAAC,GACJ,OAAO6wD,EAAOh3E,QAAQtV,aAAa1wB,EAAK,CACpC,CAAC6pB,EAAQC,MAAMqM,eAAiBvF,IAErB,CAAE9xB,OAAQ8xB,EAAIE,SAAS,IAElC,CAACjH,EAAQC,MAAMiH,MAAO,CAACH,EAAIC,KAChB,CACH/xB,OAAQ+xB,EAAQ3J,WAAWoqB,EAAgB1gB,EAAG5K,SAAU4K,EAAG/K,UAAWyrB,EAAgB1gB,EAAG3K,QAASqrB,EAAgB1gB,EAAG/J,QACrHiK,SAAS,IAGjB,CAACjH,EAAQC,MAAM6G,SAAU,CAACC,EAAIC,KACnB,CACH/xB,OAAQ+xB,EAAQvJ,cAAcgqB,EAAgB1gB,EAAG5K,SAAUsrB,EAAgB1gB,EAAG/K,WAAYyrB,EAAgB1gB,EAAG3K,QAASqrB,EAAgB1gB,EAAG/J,QACzIiK,SAAS,IAGjB,CAACjH,EAAQC,MAAMkM,WAAapF,IAEjB,CACH9xB,OAAQ+xB,EAAQoF,gBAAgBwjF,EAA+B7oF,EAAGloB,OAAQkoB,EAAGsF,UAC7EpF,SAAS,MAIrB,SAASwgB,EAAgBhiB,GACrB,GAAsB,cAAlBA,EAAK7G,SAA0B,CAC/B,IAAIvC,EAAWwzF,EAAuBpqF,EAAKn0B,OAM3C,OALK+qB,IACDA,EAAW82F,EAAOh3E,QAAQ4zE,qBAAqBtqF,EAAKn0B,MAAOw+G,EAAc9oF,EAAQikC,aACjF6kD,EAAazzF,EAAS/qB,QAAS,EAC/Bu+G,EAAuBpqF,EAAKn0B,OAAS+qB,GAElCA,CACX,CACA,OAAOoJ,CACX,CACJ,sCC5vBA,IAAIqtF,EAAmB1hH,MAAQA,KAAK0hH,iBAAoB,SAAU7f,GAC9D,OAAQA,GAAOA,EAAIx5F,WAAcw5F,EAAM,CAAE,QAAWA,EACxD,EACAzgG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtD,MAAM2rH,EAAY,EAAQ,OACpBhK,EAAYH,EAAgB,EAAQ,QACpCvtF,EAAc,EAAQ,OAC5B,MAAMqB,EAKF,cAAO8N,CAAQo1D,GACX,OAAO/tF,MAAMjJ,UAAUwlC,UAAUwxD,GAAKzzF,QAAO8iC,GAAKA,GACtD,CAIA,gBAAO+jF,CAAUC,GACb,GAAIA,EAAQv+F,SAAU,CAClB,GAAyB,SAArBu+F,EAAQv+F,SACR,MAAO,CACH9gB,KAAM,UACN8gB,SAAU,OACVzC,QAASyK,EAAKs2F,UAAUC,EAAQhhG,SAChCH,UAAW4K,EAAKs2F,UAAUC,EAAQnhG,WAClCI,OAAQwK,EAAKs2F,UAAUC,EAAQ/gG,QAC/BY,MAAO4J,EAAKs2F,UAAUC,EAAQngG,QAGjC,CACD,IAAI/nB,EAAS,CAAE2pB,SAAUu+F,EAAQv+F,SAAUttB,MAAO6rH,EAAQ7rH,OAK1D,OAJI6rH,EAAQp1F,WACR9yB,EAAO8yB,SAAWo1F,EAAQp1F,UAC1Bo1F,EAAQjqF,WACRj+B,EAAOi+B,SAAWtM,EAAKs2F,UAAUC,EAAQjqF,WACtCj+B,CACX,CACJ,CACA,GAAI8G,MAAMC,QAAQmhH,GACd,OAAOA,EAAQ5mH,KAAIgB,GAAKqvB,EAAKs2F,UAAU3lH,KAC3C,GAAI4lH,IAAY3qH,OAAO2qH,GAAU,CAC7B,IAAIloH,EAAS,CAAC,EACd,IAAK,IAAIpD,KAAOW,OAAOD,KAAK4qH,GACxBloH,EAAOpD,GAAO+0B,EAAKs2F,UAAUC,EAAQtrH,IACzC,OAAOoD,CACX,CACA,OAAOkoH,CACX,CAQA,uBAAOrtF,CAAiB/I,GACpB,MAAM3S,EAAY,GAClB,SAASgpG,EAAY1pE,GACZt/B,EAAUipG,MAAKC,GAAM5pE,EAAEpiD,QAAUgsH,EAAGhsH,SACrC8iB,EAAUzf,KAAK++C,EACvB,CACA,SAAS6pE,EAAYz3F,GACa,aAA1BA,EAAK3J,QAAQyC,UACbw+F,EAAYt3F,EAAK3J,SACW,aAA5B2J,EAAK9J,UAAU4C,UACfw+F,EAAYt3F,EAAK9J,WACQ,aAAzB8J,EAAK1J,OAAOwC,UACZw+F,EAAYt3F,EAAK1J,QACO,aAAxB0J,EAAK9I,MAAM4B,UACXw+F,EAAYt3F,EAAK9I,OACS,SAA1B8I,EAAK3J,QAAQyC,UACb2+F,EAAYz3F,EAAK3J,SACW,SAA5B2J,EAAK9J,UAAU4C,UACf2+F,EAAYz3F,EAAK9J,WACQ,SAAzB8J,EAAK1J,OAAOwC,UACZ2+F,EAAYz3F,EAAK1J,QACO,SAAxB0J,EAAK9I,MAAM4B,UACX2+F,EAAYz3F,EAAK9I,MACzB,CAuDA,OArDA4J,EAAK8I,iBAAiB3I,EAAI,CACtB,CAACk2F,EAAUh9F,MAAM2Q,YAAc7J,IACvBA,EAAGgH,iBAAmBkvF,EAAUjvF,gBAAgB2B,WAAa5I,EAAG1K,UAChE+gG,EAAYr2F,EAAG1K,WAEZ,GAEX,CAAC4gG,EAAUh9F,MAAM4Q,QAAU9J,IACvBq2F,EAAYr2F,EAAG1K,WACR,GAEX,CAAC4gG,EAAUh9F,MAAMmS,OAASrL,IACG,aAArBA,EAAG3rB,KAAKwjB,UACRw+F,EAAYr2F,EAAG3rB,OACZ,GAEX,CAAC6hH,EAAUh9F,MAAMoS,OAAStL,IACtBA,EAAG3S,UAAUtY,QAAQshH,IACd,GAEX,CAACH,EAAUh9F,MAAMiH,MAAQH,IACO,aAAxBA,EAAG5K,QAAQyC,UACXw+F,EAAYr2F,EAAG5K,SACQ,aAAvB4K,EAAG3K,OAAOwC,UACVw+F,EAAYr2F,EAAG3K,QACO,aAAtB2K,EAAG/J,MAAM4B,UACTw+F,EAAYr2F,EAAG/J,OACS,SAAxB+J,EAAG5K,QAAQyC,UACX2+F,EAAYx2F,EAAG5K,SACQ,SAAvB4K,EAAG3K,OAAOwC,UACV2+F,EAAYx2F,EAAG3K,QACO,SAAtB2K,EAAG/J,MAAM4B,UACT2+F,EAAYx2F,EAAG/J,QACZ,GAEX,CAACigG,EAAUh9F,MAAM6G,SAAWC,IACxBw2F,EAAYx2F,IACL,GAEX,CAACk2F,EAAUh9F,MAAMgR,SAAWlK,IACxBA,EAAG3S,UAAUtY,QAAQshH,IACd,GAEX,CAACH,EAAUh9F,MAAMiM,SAAWnF,IACC,aAArBA,EAAG3rB,KAAKwjB,UACRw+F,EAAYr2F,EAAG3rB,OACZ,GAEX,CAAC6hH,EAAUh9F,MAAMoR,QAAUtK,IACvBA,EAAG3S,UAAUtY,QAAQshH,IACd,KAGRhpG,CACX,CASA,uBAAOsb,CAAiB3I,EAAIy2F,GACxB,IAAIvoH,EAAS8xB,EACT02F,GAAc,EAClB,MAAMj/G,EAAWg/G,EAAUz2F,EAAGjpB,MAI9B,GAHIU,IAEAi/G,EAAcj/G,EAASuoB,KACtB02F,EACD,OACJ,IAAIC,EAAa32F,GAAOH,EAAK8I,iBAAiB3I,EAAIy2F,GAClD,OAAQvoH,EAAO6I,MACX,KAAKm/G,EAAUh9F,MAAMC,IACjBjrB,EAAO4J,MAAMtI,IAAImnH,GACjB,MACJ,KAAKT,EAAUh9F,MAAMgS,IACjByrF,EAAUzoH,EAAO4J,OACjB,MACJ,KAAKo+G,EAAUh9F,MAAMwN,IACjBx4B,EAAO43B,SAAS/wB,QAAQ4hH,GACxB,MACJ,KAAKT,EAAUh9F,MAAMkM,UACjBuxF,EAAUzoH,EAAO4J,OACjB5J,EAAOo3B,SAAS91B,IAAImnH,GACpB,MACJ,KAAKT,EAAUh9F,MAAMmN,SAGrB,KAAK6vF,EAAUh9F,MAAMiS,SACjBwrF,EAAUzoH,EAAO4J,OACjB,MACJ,KAAKo+G,EAAUh9F,MAAM2Q,WACb37B,EAAO84B,iBAAmBkvF,EAAUjvF,gBAAgB6B,WACpD6tF,EAAUzoH,EAAO4J,OAErB,MACJ,KAAKo+G,EAAUh9F,MAAM4Q,OAIrB,KAAKosF,EAAUh9F,MAAM+O,OACjB0uF,EAAUzoH,EAAO4J,OACjB6+G,EAAUzoH,EAAO64B,YACjB,MACJ,KAAKmvF,EAAUh9F,MAAMkS,KAGrB,KAAK8qF,EAAUh9F,MAAMmS,MACjBsrF,EAAUzoH,EAAO4J,OACjB,MACJ,KAAKo+G,EAAUh9F,MAAMoS,MACjBqrF,EAAUzoH,EAAO4J,OACjB5J,EAAOunC,WAAW1gC,QAAQ4hH,GAC1B,MACJ,KAAKT,EAAUh9F,MAAMK,IACjBo9F,EAAUzoH,EAAOinB,MACjB,MACJ,KAAK+gG,EAAUh9F,MAAM0N,KACjB14B,EAAO4J,MAAMtI,IAAImnH,GACjB,MACJ,KAAKT,EAAUh9F,MAAMqR,UACjBr8B,EAAO4J,MAAMtI,IAAImnH,GACbzoH,EAAO64B,YACP4vF,EAAUzoH,EAAO64B,YACrB,MACJ,KAAKmvF,EAAUh9F,MAAMS,KACjB,MACJ,KAAKu8F,EAAUh9F,MAAM+R,MACjB/8B,EAAO4J,MAAMtI,IAAImnH,GACjB,MACJ,KAAKT,EAAUh9F,MAAM+Q,IAErB,KAAKisF,EAAUh9F,MAAMU,IACjB,MACJ,KAAKs8F,EAAUh9F,MAAMM,iBACjBm9F,EAAUzoH,EAAOinB,MACjB,MACJ,KAAK+gG,EAAUh9F,MAAMqS,SACjBorF,EAAUzoH,EAAO4J,OACjB5J,EAAOkqC,YAAYrjC,QAAQ4hH,GAC3B,MACJ,KAAKT,EAAUh9F,MAAMiH,KACjBw2F,EAAUzoH,EAAO+mB,WACjB,MACJ,KAAKihG,EAAUh9F,MAAM6G,QACjB,MACJ,KAAKm2F,EAAUh9F,MAAMgR,QAGrB,KAAKgsF,EAAUh9F,MAAMsS,QACjBmrF,EAAUzoH,EAAO4J,OACjB,MACJ,KAAKo+G,EAAUh9F,MAAME,IACjBlrB,EAAO4J,MAAMtI,IAAImnH,GACjB,MACJ,KAAKT,EAAUh9F,MAAMiM,QAGrB,KAAK+wF,EAAUh9F,MAAMuS,MACjBkrF,EAAUzoH,EAAO4J,OACjB,MACJ,KAAKo+G,EAAUh9F,MAAMkR,MACjBl8B,EAAO4J,MAAMtI,IAAImnH,GACjB,MACJ,KAAKT,EAAUh9F,MAAMoR,OACjB,MACJ,KAAK4rF,EAAUh9F,MAAMO,kBAGrB,KAAKy8F,EAAUh9F,MAAMQ,iBACjBi9F,EAAUzoH,EAAOinB,MACjB,MAEJ,KAAK+gG,EAAUh9F,MAAMwS,iBACjBx9B,EAAO2iC,QAAQ97B,SAAQ8sB,GAAU80F,EAAU90F,KAC3C,MACJ,KAAKq0F,EAAUh9F,MAAMqM,cACbr3B,EAAOgtB,QACPhtB,EAAOgtB,OAAOnmB,SAAQglB,GAAW48F,EAAU58F,KAC3C7rB,EAAOu3B,QACPv3B,EAAOu3B,OAAO1wB,SAAQglB,GAAW48F,EAAU58F,KAC3C7rB,EAAOw3B,OACPixF,EAAUzoH,EAAOw3B,OACrB,MAEJ,KAAKwwF,EAAUh9F,MAAMyS,KACrB,KAAKuqF,EAAUh9F,MAAM0S,MACrB,KAAKsqF,EAAUh9F,MAAM2S,OACrB,KAAKqqF,EAAUh9F,MAAM4S,KACrB,KAAKoqF,EAAUh9F,MAAM6S,IACrB,KAAKmqF,EAAUh9F,MAAM8S,KACrB,KAAKkqF,EAAUh9F,MAAM+S,KAAM,MAC3B,QAAS,MAAM,IAAI7/B,MAAM,0BAA0B8B,EAAO6I,QAElE,CAYA,mBAAO+oB,CAAaE,EAAIy2F,EAAWx2F,GAC/B,IAAI/xB,EAAS8xB,EACT02F,GAAc,EACdE,GAAe,EACnB32F,EAAUA,GAAW,IAAIisF,EAAU92E,QACnC,MAAM39B,EAAWg/G,EAAUz2F,EAAGjpB,MAC9B,GAAIU,EAAU,CAEV,MAAMo/G,EAAgBp/G,EAASuoB,EAAIC,GACnC/xB,EAAS2oH,EAAc3oH,OACvBwoH,EAAcG,EAAc32F,QAC5B02F,GAA8C,IAA/BC,EAAcD,YACjC,CACA,IAAIE,EAIJ,GAHIF,IAAiB1oH,EAAOwpB,UAAYsI,EAAGtI,YACvCo/F,EAAiB,IAAK5oH,EAAOwpB,YAAasI,EAAGtI,YAE5Cg/F,EAKD,OAHII,IACA5oH,EAAOwpB,SAAWo/F,GAEf5oH,EAEX,IAAI6oH,EAAS/2F,GAAOH,EAAKC,aAAaE,EAAIy2F,EAAWx2F,GAErD,OAAQ/xB,EAAO6I,MACX,KAAKm/G,EAAUh9F,MAAMC,IACjBjrB,EAAS+xB,EAAQiF,UAAUh3B,EAAO4J,MAAMtI,IAAIunH,IAC5C,MACJ,KAAKb,EAAUh9F,MAAMgS,IACjBh9B,EAAS+xB,EAAQmQ,UAAU2mF,EAAM7oH,EAAO4J,QACxC,MACJ,KAAKo+G,EAAUh9F,MAAMwN,IACjBx4B,EAAS+xB,EAAQkO,UAAUjgC,EAAO43B,SAASt2B,IAAIunH,IAC/C,MACJ,KAAKb,EAAUh9F,MAAMkM,UACjBl3B,EAAS+xB,EAAQoF,gBAAgB0xF,EAAM7oH,EAAO4J,OAAQ5J,EAAOo3B,SAAS91B,IAAIunH,IAC1E,MACJ,KAAKb,EAAUh9F,MAAMmN,SACjBn4B,EAAS+xB,EAAQysF,eAAeqK,EAAM7oH,EAAO4J,OAAQ5J,EAAOs4B,OAC5D,MACJ,KAAK0vF,EAAUh9F,MAAMiS,SACjBj9B,EAAS+xB,EAAQlK,eAAeghG,EAAM7oH,EAAO4J,QAC7C,MACJ,KAAKo+G,EAAUh9F,MAAM2Q,WACjB37B,EAAS2xB,EAAKm3F,cAAc9oH,EAAQuoH,EAAWx2F,GAC/C,MACJ,KAAKi2F,EAAUh9F,MAAM4Q,OACjB57B,EAAS+xB,EAAQ8J,aAAagtF,EAAM7oH,EAAO4J,OAAQ5J,EAAOonB,SAAUyhG,EAAM7oH,EAAO64B,aACjF,MACJ,KAAKmvF,EAAUh9F,MAAM+O,OACjB/5B,EAAS+xB,EAAQqH,aAAayvF,EAAM7oH,EAAO4J,OAAQi/G,EAAM7oH,EAAO64B,aAChE,MACJ,KAAKmvF,EAAUh9F,MAAMkS,KACjBl9B,EAAS+xB,EAAQ0sF,WAAWoK,EAAM7oH,EAAO4J,OAAQ,IAAI5J,EAAOknC,SAAU,IAAIlnC,EAAOmnC,QACjF,MACJ,KAAK6gF,EAAUh9F,MAAMmS,MACjBn9B,EAAS+xB,EAAQ4sF,YAAYkK,EAAM7oH,EAAO4J,OAAQ5J,EAAOmG,MACzD,MACJ,KAAK6hH,EAAUh9F,MAAMoS,MACjBp9B,EAAS+xB,EAAQmsB,YAAY2qE,EAAM7oH,EAAO4J,OAAQ,GAAGy5B,OAAOrjC,EAAOmf,WAAYnf,EAAOunC,WAAWjmC,IAAIunH,IACrG,MACJ,KAAKb,EAAUh9F,MAAMK,IACjBrrB,EAAS+xB,EAAQsa,UAAUw8E,EAAM7oH,EAAOinB,OACxC,MACJ,KAAK+gG,EAAUh9F,MAAM0N,KACjB14B,EAAS+xB,EAAQ4F,WAAW33B,EAAO4J,MAAMtI,IAAIunH,IAC7C,MACJ,KAAKb,EAAUh9F,MAAMqR,UACjBr8B,EAAS+xB,EAAQyK,eAAeqsF,EAAM7oH,EAAO4J,MAAM,IAAKi/G,EAAM7oH,EAAO4J,MAAM,IAAK5J,EAAO64B,WAAagwF,EAAM7oH,EAAO64B,iBAAcv8B,GAC/H,MACJ,KAAK0rH,EAAUh9F,MAAMS,KACjBzrB,EAAS+xB,EAAQ0mF,WAAWz4G,EAAOqhC,KACnC,MACJ,KAAK2mF,EAAUh9F,MAAM+R,MACjB/8B,EAAS+xB,EAAQ6sF,YAAYiK,EAAM7oH,EAAO4J,MAAM,IAAKi/G,EAAM7oH,EAAO4J,MAAM,KACxE,MACJ,KAAKo+G,EAAUh9F,MAAM+Q,IACjB/7B,EAAS+xB,EAAQ8sF,YACjB,MACJ,KAAKmJ,EAAUh9F,MAAMU,IACjB1rB,EAAS+xB,EAAQ+sF,UAAU,GAAGz7E,OAAOrjC,EAAOgsC,OAC5C,MACJ,KAAKg8E,EAAUh9F,MAAMM,iBACjBtrB,EAAS+xB,EAAQqa,oBAAoBy8E,EAAM7oH,EAAOinB,OAClD,MACJ,KAAK+gG,EAAUh9F,MAAMqS,SACjBr9B,EAAS+xB,EAAQgtF,cAAc8J,EAAM7oH,EAAO4J,OAAQ5J,EAAOkqC,YAAY5oC,IAAIunH,IAC3E,MACJ,KAAKb,EAAUh9F,MAAMiH,KACjBjyB,EAAS+xB,EAAQ3J,WAAWpoB,EAAOknB,QAAS2hG,EAAM7oH,EAAO+mB,WAAY/mB,EAAOmnB,OAAQnnB,EAAO+nB,OAC3F,MACJ,KAAKigG,EAAUh9F,MAAM6G,QACjB7xB,EAAS+xB,EAAQvJ,cAAcxoB,EAAOknB,QAASlnB,EAAO+mB,UAAW/mB,EAAOmnB,OAAQnnB,EAAO+nB,OACvF,MACJ,KAAKigG,EAAUh9F,MAAMgR,QACjBh8B,EAAS+xB,EAAQkK,cAAc4sF,EAAM7oH,EAAO4J,OAAQ,IAAI5J,EAAOmf,YAC/D,MACJ,KAAK6oG,EAAUh9F,MAAMsS,QACjBt9B,EAAS+xB,EAAQitF,cAAc6J,EAAM7oH,EAAO4J,QAC5C,MACJ,KAAKo+G,EAAUh9F,MAAME,IACjBlrB,EAAS+xB,EAAQuN,UAAUt/B,EAAO4J,MAAMtI,IAAIunH,IAC5C,MACJ,KAAKb,EAAUh9F,MAAMiM,QACjBj3B,EAAS+xB,EAAQktF,cAAc4J,EAAM7oH,EAAO4J,OAAQ5J,EAAOmG,KAAMnG,EAAOyiC,QACxE,MACJ,KAAKulF,EAAUh9F,MAAMuS,MACjBv9B,EAAS+xB,EAAQiqF,YAAY6M,EAAM7oH,EAAO4J,OAAQ5J,EAAOrB,MAAOqB,EAAOtC,QACvE,MACJ,KAAKsqH,EAAUh9F,MAAMkR,MACjBl8B,EAAS+xB,EAAQzJ,YAAYtoB,EAAO4J,MAAMtI,IAAIunH,IAC9C,MACJ,KAAKb,EAAUh9F,MAAMoR,OACjBp8B,EAAS+xB,EAAQ+K,aAAa,GAAGuG,OAAOrjC,EAAOmf,WAAYnf,EAAO6oB,SAASvnB,KAAIq9C,GAAKphD,OAAOoU,OAAO,CAAC,EAAGgtC,MACtG,MACJ,KAAKqpE,EAAUh9F,MAAMO,kBACjBvrB,EAAS+xB,EAAQmtF,qBAAqB2J,EAAM7oH,EAAOinB,OACnD,MACJ,KAAK+gG,EAAUh9F,MAAMQ,iBACjBxrB,EAAS+xB,EAAQotF,oBAAoB0J,EAAM7oH,EAAOinB,OAClD,MAEJ,KAAK+gG,EAAUh9F,MAAMwS,iBACjBx9B,EAAS+xB,EAAQuQ,sBAAsBtiC,EAAO2iC,QAAQrhC,IAAIunH,IAC1D,MACJ,KAAKb,EAAUh9F,MAAMqM,cACjBr3B,EAAS+xB,EAAQuF,mBAAmBt3B,EAAOgtB,OAAShtB,EAAOgtB,OAAO1rB,IAAIunH,QAASvsH,EAAW0D,EAAOu3B,OAASv3B,EAAOu3B,OAAOj2B,IAAIunH,QAASvsH,EAAW0D,EAAOw3B,MAAQqxF,EAAM7oH,EAAOw3B,YAASl7B,GACrL,MACJ,KAAK0rH,EAAUh9F,MAAMyS,KACjBz9B,EAAS+xB,EAAQ0tF,WAAWz/G,EAAO2rB,OAAQ3rB,EAAOkzB,YAAalzB,EAAOyiC,QACtE,MACJ,KAAKulF,EAAUh9F,MAAM0S,MACjB19B,EAAS+xB,EAAQ4tF,YAAY3/G,EAAO2rB,OAAQ3rB,EAAOyiC,QACnD,MACJ,KAAKulF,EAAUh9F,MAAM2S,OACjB39B,EAAS+xB,EAAQ6tF,aAAa5/G,EAAO2rB,OAAQ3rB,EAAOyiC,QACpD,MACJ,KAAKulF,EAAUh9F,MAAM4S,KACjB59B,EAAS+xB,EAAQwQ,WAAWviC,EAAO2rB,OAAQ3rB,EAAOyiC,QAClD,MACJ,KAAKulF,EAAUh9F,MAAM6S,IACjB79B,EAAS+xB,EAAQyQ,UAAUxiC,EAAO2rB,OAAQ3rB,EAAOkzB,aACjD,MACJ,KAAK80F,EAAUh9F,MAAM8S,KACjB99B,EAAS+xB,EAAQ8tF,WAAW7/G,EAAO2rB,OAAQ3rB,EAAOkzB,aAClD,MACJ,KAAK80F,EAAUh9F,MAAM+S,KACjB/9B,EAAS+xB,EAAQ+tF,WAAW9/G,EAAO2rB,OAAQ3rB,EAAOkzB,aAClD,MACJ,QAAS,MAAM,IAAIh1B,MAAM,0BAA0B8B,EAAO6I,QAM9D,OAHI+/G,IACA5oH,EAAOwpB,SAAWo/F,GAEf5oH,CACX,CAUA,oBAAO8oH,CAAc7+E,EAAMs+E,EAAWx2F,GAClC,IAAI/xB,EAASiqC,EACTu+E,GAAc,EAClBz2F,EAAUA,GAAW,IAAIisF,EAAU92E,QACnC,MAAM39B,EAAWg/G,EAAUt+E,EAAKnR,gBAGhC,GAFIvvB,KACGvJ,SAAQgyB,QAASw2F,GAAgBj/G,EAAS0gC,EAAMlY,KAClDy2F,EACD,OAAOxoH,EACX,IAAI6oH,EAAS/2F,GAAOH,EAAKC,aAAaE,EAAIy2F,EAAWx2F,GACrD,OAAQkY,EAAKnR,gBACT,KAAKkvF,EAAUjvF,gBAAgB2B,UAC3B,OAAIuP,EAAK7iB,SACE2K,EAAQosB,qBAAqBlU,EAAK7iB,SAAU6iB,EAAKiwB,WAAY2uD,EAAM5+E,EAAKpR,YAAaoR,EAAKiC,SAAUjC,EAAK85B,WAE7GhyC,EAAQwsF,0BAA0Bt0E,EAAKiwB,WAAY2uD,EAAM5+E,EAAKpR,YAAaoR,EAAKiC,SAAUjC,EAAK85B,WAC1G,KAAKikD,EAAUjvF,gBAAgB6B,UAC3B,OAAO7I,EAAQqtF,0BAA0Bn1E,EAAK6uB,IAAK+vD,EAAM5+E,EAAKrgC,QAClE,KAAKo+G,EAAUjvF,gBAAgB+B,MAC3B,OAAO/I,EAAQstF,sBAAsBp1E,EAAK9jC,KAAM8jC,EAAKrpC,KAAKU,IAAIunH,IAClE,KAAKb,EAAUjvF,gBAAgBC,SAC3B,OAAOjH,EAAQqI,yBAAyB6P,EAAKhR,SAAUgR,EAAKrpC,KAAKU,IAAIunH,IACzE,KAAKb,EAAUjvF,gBAAgBkC,KAC3B,OAAOlJ,EAAQyb,qBAAqBvD,EAAKzZ,MAC7C,KAAKw3F,EAAUjvF,gBAAgB4B,SAC3B,OAAO5I,EAAQqsB,2BACnB,QAAS,MAAM,IAAIlgD,MAAM,2BAA2B+rC,EAAKnR,kBAEjE,CAOA,qBAAOiwF,CAAej3F,GAClB,OAAOH,EAAKC,aAAaE,EAAI,CAAC,EAClC,CAOA,sBAAOk3F,CAAgB/+E,GACnB,OAAOtY,EAAKm3F,cAAc7+E,EAAM,CAAC,EACrC,CACA,2BAAO6wE,CAAqBtgE,EAAOr7B,EAAW62C,GAC1C,IAAI/rC,EAAU,EACVg/F,EAAYzuE,EAChB,KAAOr7B,EAAU8pG,IACbA,EAAY,GAAGzuE,IAAQvwB,MAE3B,OAAO+rC,EAAY5uC,SAAS6hG,EAChC,CAEA,mBAAO5E,CAAa7zF,GAChB,YAAyBl0B,IAAlBk0B,EAAK7G,UAA4C,SAAlB6G,EAAK7G,UAAyC,aAAlB6G,EAAK7G,QAC3E,CACA,aAAOi9F,CAAOp2F,GACV,MAAyB,SAAlBA,EAAK7G,QAChB,CACA,uBAAOk9F,CAAiBh2F,GACpB,OAAO,EAAIP,EAAY81B,iBAAiBv1B,GAAML,GAA0B,aAAlBA,EAAK7G,UAC/D,CACA,iBAAOm+C,CAAWt3C,GACd,MAAyB,aAAlBA,EAAK7G,QAChB,EAEJtpB,EAAA,QAAkBsxB,gCC7gBlB,SAASu3F,EAAQljH,GAAmV,OAAtOkjH,EAArD,mBAAXxjH,QAAoD,iBAApBA,OAAOe,SAAmC,SAAiBT,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXN,QAAyBM,EAAImF,cAAgBzF,QAAUM,IAAQN,OAAO7H,UAAY,gBAAkBmI,CAAK,EAAYkjH,EAAQljH,EAAM,CAEzXzI,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQ8oH,WAAaA,EACrB9oH,EAAQ+oH,kBAAe,EAEvB,IAQgCpjH,EAR5BqjH,GAQ4BrjH,EARW,EAAQ,SAQEA,EAAIxB,WAAawB,EAAM,CAAEkhC,QAASlhC,GANnFsjH,EAAW,EAAQ,OAEnBC,EAAY,EAAQ,MAEpBC,EAAiB,EAAQ,OAI7B,SAASzc,EAAQ5lF,EAAQsiG,GAAkB,IAAInsH,EAAOC,OAAOD,KAAK6pB,GAAS,GAAI5pB,OAAOyvG,sBAAuB,CAAE,IAAI0c,EAAUnsH,OAAOyvG,sBAAsB7lF,GAAasiG,IAAgBC,EAAUA,EAAQtoH,QAAO,SAAUiqG,GAAO,OAAO9tG,OAAOgH,yBAAyB4iB,EAAQkkF,GAAK7nG,UAAY,KAAIlG,EAAKoC,KAAKgD,MAAMpF,EAAMosH,EAAU,CAAE,OAAOpsH,CAAM,CAIpV,SAASqsH,EAAgB3jH,EAAKpJ,EAAKP,GAAiK,OAApJO,KAAOoJ,EAAOzI,OAAO+C,eAAe0F,EAAKpJ,EAAK,CAAEP,MAAOA,EAAOmH,YAAY,EAAMkB,cAAc,EAAMD,UAAU,IAAkBuB,EAAIpJ,GAAOP,EAAgB2J,CAAK,CAIhN,SAAS4jH,EAAkBtwG,EAAQuwG,GAAS,IAAK,IAAIrsH,EAAI,EAAGA,EAAIqsH,EAAMnsH,OAAQF,IAAK,CAAE,IAAIssH,EAAaD,EAAMrsH,GAAIssH,EAAWtmH,WAAasmH,EAAWtmH,aAAc,EAAOsmH,EAAWplH,cAAe,EAAU,UAAWolH,IAAYA,EAAWrlH,UAAW,GAAMlH,OAAO+C,eAAegZ,EAAQwwG,EAAWltH,IAAKktH,EAAa,CAAE,CAQ5T,SAASC,EAA2B1kH,EAAMP,GAAQ,OAAIA,GAA2B,WAAlBokH,EAAQpkH,IAAsC,mBAATA,EAA8CklH,EAAuB3kH,GAAtCP,CAA6C,CAEhL,SAASklH,EAAuB3kH,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI4kH,eAAe,6DAAgE,OAAO5kH,CAAM,CAErK,SAAS6kH,EAAiBC,GAAS,IAAIC,EAAwB,mBAARzsG,IAAqB,IAAIA,SAAQrhB,EAA8nB,OAAnnB4tH,EAAmB,SAA0BC,GAAS,GAAc,OAAVA,IAMlI/zD,EANuK+zD,GAMjG,IAAzD5d,SAAS5uG,SAASmH,KAAKsxD,GAAInwD,QAAQ,kBAN+H,OAAOkkH,EAMjN,IAA2B/zD,EAN6L,GAAqB,mBAAV+zD,EAAwB,MAAM,IAAI9jH,UAAU,sDAAyD,QAAsB,IAAX+jH,EAAwB,CAAE,GAAIA,EAAO9gH,IAAI6gH,GAAQ,OAAOC,EAAO3mH,IAAI0mH,GAAQC,EAAOniH,IAAIkiH,EAAOE,EAAU,CAAE,SAASA,IAAY,OAAOC,EAAWH,EAAOrrG,UAAWyrG,EAAgBpuH,MAAMgP,YAAc,CAAkJ,OAAhJk/G,EAAQxsH,UAAYN,OAAO2G,OAAOimH,EAAMtsH,UAAW,CAAEsN,YAAa,CAAE9O,MAAOguH,EAAS7mH,YAAY,EAAOiB,UAAU,EAAMC,cAAc,KAAkB8lH,EAAgBH,EAASF,EAAQ,EAAUD,EAAiBC,EAAQ,CAEtvB,SAASG,EAAWG,EAAQ7pH,EAAMupH,GAAqV,OAAzSG,EAA/BI,IAA4C9d,QAAQ50E,UAAiC,SAAoByyF,EAAQ7pH,EAAMupH,GAAS,IAAIzrE,EAAI,CAAC,MAAOA,EAAEh/C,KAAKgD,MAAMg8C,EAAG99C,GAAO,IAAsD+pH,EAAW,IAA/Cpe,SAASruF,KAAKxb,MAAM+nH,EAAQ/rE,IAA6F,OAAnDyrE,GAAOK,EAAgBG,EAAUR,EAAMtsH,WAAmB8sH,CAAU,EAAYL,EAAW5nH,MAAM,KAAMoc,UAAY,CAEja,SAAS4rG,IAA8B,GAAuB,oBAAZ9d,UAA4BA,QAAQ50E,UAAW,OAAO,EAAO,GAAI40E,QAAQ50E,UAAU4yF,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAiF,OAA3Et4F,KAAK10B,UAAUF,SAASmH,KAAK8nG,QAAQ50E,UAAUzF,KAAM,IAAI,WAAa,MAAY,CAAM,CAAE,MAAOjwB,GAAK,OAAO,CAAO,CAAE,CAInU,SAASkoH,EAAgBrmH,EAAGS,GAA+G,OAA1G4lH,EAAkBjtH,OAAO6jG,gBAAkB,SAAyBj9F,EAAGS,GAAsB,OAAjBT,EAAE+J,UAAYtJ,EAAUT,CAAG,EAAUqmH,EAAgBrmH,EAAGS,EAAI,CAEzK,SAAS2lH,EAAgBpmH,GAAwJ,OAAnJomH,EAAkBhtH,OAAO6jG,eAAiB7jG,OAAO2xG,eAAiB,SAAyB/qG,GAAK,OAAOA,EAAE+J,WAAa3Q,OAAO2xG,eAAe/qG,EAAI,EAAUomH,EAAgBpmH,EAAI,CAQ5M,IAAIilH,EAA4B,SAAU0B,IA1B1C,SAAmBC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI3kH,UAAU,sDAAyD0kH,EAASltH,UAAYN,OAAO2G,OAAO8mH,GAAcA,EAAWntH,UAAW,CAAEsN,YAAa,CAAE9O,MAAO0uH,EAAUtmH,UAAU,EAAMC,cAAc,KAAesmH,GAAYR,EAAgBO,EAAUC,EAAa,CA2B9XC,CAAU7B,EAAc0B,GAExB,IA3BoBI,EAAeC,EAJfC,EAAaC,EA+B7BC,GA3BgBJ,EA2BM9B,EA3BS+B,EAA4BT,IAAoC,WAAkC,IAAsC1qH,EAAlCurH,EAAQhB,EAAgBW,GAAkB,GAAIC,EAA2B,CAAE,IAAIK,EAAYjB,EAAgBpuH,MAAMgP,YAAanL,EAAS4sG,QAAQ50E,UAAUuzF,EAAOzsG,UAAW0sG,EAAY,MAASxrH,EAASurH,EAAM7oH,MAAMvG,KAAM2iB,WAAc,OAAOirG,EAA2B5tH,KAAM6D,EAAS,GAsEna,SAASopH,EAAal+G,EAASugH,EAAO9/F,EAAQ+/F,EAAWzkG,EAAM0kG,EAAepH,GAC5E,IAAIqH,EAAgBC,EAAiBC,EAEjCC,GAjFR,SAAyBpB,EAAUS,GAAe,KAAMT,aAAoBS,GAAgB,MAAM,IAAI/kH,UAAU,oCAAwC,CAmFpJ2lH,CAAgB7vH,KAAMitH,IAEtB2C,EAAQT,EAAOxmH,KAAK3I,KAAM+O,IACpB/E,KAAO,eACb4lH,EAAMJ,cAAgBA,QAAqDA,OAAgBrvH,EAE3FyvH,EAAMN,MAAQQ,EAAiBnlH,MAAMC,QAAQ0kH,GAASA,EAAQA,EAAQ,CAACA,QAASnvH,GAGhF,IAFA,IAAI4vH,EAAgB,GAEXC,EAAM,EAAGC,EAAwC,QAA/BC,EAAcN,EAAMN,aAAmC,IAAhBY,EAAyBA,EAAc,GAAIF,EAAMC,EAAM1uH,OAAQyuH,IAAO,CACtI,IAAIE,EAGAC,EADQF,EAAMD,GACFG,IAEL,MAAPA,GACFJ,EAAcxsH,KAAK4sH,EAEvB,CAEAJ,EAAgBD,EAAiBC,GAEjCH,EAAMpgG,OAASA,QAAuCA,EAA8C,QAApCigG,EAAiBM,SAA8C,IAAnBN,OAA4B,EAASA,EAAe,GAAGjgG,OACnKogG,EAAML,UAAYA,QAA6CA,EAAkD,QAArCG,EAAkBK,SAA+C,IAApBL,OAA6B,EAASA,EAAgBvqH,KAAI,SAAUgrH,GAC3L,OAAOA,EAAI3tH,KACb,IACAotH,EAAMQ,UAAYb,GAAa//F,EAAS+/F,EAAUpqH,KAAI,SAAUukG,GAC9D,OAAO,EAAI0jB,EAAUiD,aAAa7gG,EAAQk6E,EAC5C,IAA2C,QAArCimB,EAAkBI,SAA+C,IAApBJ,OAA6B,EAASA,EAAgBxqH,KAAI,SAAUgrH,GACrH,OAAO,EAAI/C,EAAUiD,aAAaF,EAAI3gG,OAAQ2gG,EAAI3tH,MACpD,IACAotH,EAAM9kG,KAAOA,QAAmCA,OAAO3qB,EACvD,IAAImwH,EAAqBd,aAAqD,EAASA,EAAcpH,WAwCrG,OAtCkB,MAAdA,IAAsB,EAAI8E,EAAcniF,SAASulF,GACnDV,EAAMxH,WA1HZ,SAAuBjrG,GAAU,IAAK,IAAI9b,EAAI,EAAGA,EAAIshB,UAAUphB,OAAQF,IAAK,CAAE,IAAImuB,EAAyB,MAAhB7M,UAAUthB,GAAashB,UAAUthB,GAAK,CAAC,EAAOA,EAAI,EAAKuvG,EAAQxvG,OAAOouB,IAAS,GAAM9kB,SAAQ,SAAUjK,GAAO+sH,EAAgBrwG,EAAQ1c,EAAK+uB,EAAO/uB,GAAO,IAAeW,OAAOmvH,0BAA6BnvH,OAAOovH,iBAAiBrzG,EAAQ/b,OAAOmvH,0BAA0B/gG,IAAmBohF,EAAQxvG,OAAOouB,IAAS9kB,SAAQ,SAAUjK,GAAOW,OAAO+C,eAAegZ,EAAQ1c,EAAKW,OAAOgH,yBAAyBonB,EAAQ/uB,GAAO,GAAM,CAAE,OAAO0c,CAAQ,CA0H5fszG,CAAc,CAAC,EAAGH,GAErCV,EAAMxH,WAAaA,QAA+CA,EAAa,CAAC,EAKlFhnH,OAAOovH,iBAAiB3C,EAAuB+B,GAAQ,CACrD7gH,QAAS,CACP1H,YAAY,GAEd+oH,UAAW,CACT/oH,WAA+B,MAAnBuoH,EAAMQ,WAEpBtlG,KAAM,CACJzjB,WAA0B,MAAduoH,EAAM9kG,MAEpBs9F,WAAY,CACV/gH,WAAgC,MAApBuoH,EAAMxH,YAAsBhnH,OAAOD,KAAKyuH,EAAMxH,YAAY7mH,OAAS,GAEjFyI,KAAM,CACJ3C,YAAY,GAEdioH,MAAO,CACLjoH,YAAY,GAEdmoB,OAAQ,CACNnoB,YAAY,GAEdkoH,UAAW,CACTloH,YAAY,GAEdmoH,cAAe,CACbnoH,YAAY,KAIZmoH,SAAsDA,EAAc7uH,OACtES,OAAO+C,eAAe0pH,EAAuB+B,GAAQ,QAAS,CAC5D1vH,MAAOsvH,EAAc7uH,MACrB2H,UAAU,EACVC,cAAc,IAETqlH,EAA2BgC,KAIhC7tH,MAAM2uH,kBACR3uH,MAAM2uH,kBAAkB7C,EAAuB+B,GAAQ3C,GAEvD7rH,OAAO+C,eAAe0pH,EAAuB+B,GAAQ,QAAS,CAC5D1vH,MAAO6B,QAAQpB,MACf2H,UAAU,EACVC,cAAc,IAIXqnH,EACT,CAgBA,OA5LoBX,EA8KPhC,GA9KoBiC,EA8KN,CAAC,CAC1BzuH,IAAK,WACLP,MAAO,WACL,OAAO8sH,EAAWhtH,KACpB,GAGC,CACDS,IAAK0sH,EAASwD,qBACdrpH,IAAK,WACH,MAAO,QACT,MAzL0EmmH,EAAkBwB,EAAYvtH,UAAWwtH,GA4L9GjC,CACT,CAjKgC,CAiKhBc,EAAiBhsH,QAIjC,SAAS+tH,EAAiB3vG,GACxB,YAAiBhgB,IAAVggB,GAAwC,IAAjBA,EAAM5e,YAAepB,EAAYggB,CACjE,CAOA,SAAS6sG,EAAW7pH,GAClB,IAAI01B,EAAS11B,EAAM4L,QAEnB,GAAI5L,EAAMmsH,MACR,IAAK,IAAIsB,EAAM,EAAGC,EAAgB1tH,EAAMmsH,MAAOsB,EAAMC,EAActvH,OAAQqvH,IAAO,CAChF,IAAIp5E,EAAOq5E,EAAcD,GAErBp5E,EAAK24E,MACPt3F,GAAU,QAAS,EAAIw0F,EAAeyD,eAAet5E,EAAK24E,KAE9D,MACK,GAAIhtH,EAAMqsB,QAAUrsB,EAAMitH,UAC/B,IAAK,IAAIW,EAAM,EAAGC,EAAoB7tH,EAAMitH,UAAWW,EAAMC,EAAkBzvH,OAAQwvH,IAAO,CAC5F,IAAIjiH,EAAWkiH,EAAkBD,GACjCl4F,GAAU,QAAS,EAAIw0F,EAAe4D,qBAAqB9tH,EAAMqsB,OAAQ1gB,EAC3E,CAGF,OAAO+pB,CACT,CA9BA30B,EAAQ+oH,aAAeA,gCC3NvB7rH,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQgtH,YAQR,SAAqB1hG,EAAQza,EAAUo8G,GACrC,OAAO,IAAIC,EAAcnE,aAAa,iBAAiB/lF,OAAOiqF,QAAchxH,EAAWqvB,EAAQ,CAACza,GAClG,EARA,IAAIq8G,EAAgB,EAAQ,qCCL5BhwH,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAA,QAWA,SAAuBmtH,GACrB,IAAIp3D,EAAKo3D,EAAY3vH,UAAU+iG,OACjB,mBAAPxqC,IAAqB,EAAIq3D,EAAWvmF,SAAS,GACpDsmF,EAAY3vH,UAAUooG,QAAU7vC,EAE5Bs3D,EAA2BxmF,UAC7BsmF,EAAY3vH,UAAU6vH,EAA2BxmF,SAAWkvB,EAEhE,EAjBA,IAAIq3D,EAAaE,EAAuB,EAAQ,QAE5CD,EAA6BC,EAAuB,EAAQ,QAEhE,SAASA,EAAuB3nH,GAAO,OAAOA,GAAOA,EAAIxB,WAAawB,EAAM,CAAEkhC,QAASlhC,EAAO,8BCT9FzI,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAA,QAEA,SAAmButH,EAAW1iH,GAG5B,IAFuBi5B,QAAQypF,GAG7B,MAAM,IAAI1vH,MAAMgN,EAEpB,gCCXA3N,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAA,QAcA,SAAiBhE,GACf,OAAOwxH,EAAYxxH,EAAO,GAC5B,EAdA,IAEgC2J,EAF5B0nH,GAE4B1nH,EAFwB,EAAQ,SAEXA,EAAIxB,WAAawB,EAAM,CAAEkhC,QAASlhC,GAEvF,SAASkjH,EAAQljH,GAAmV,OAAtOkjH,EAArD,mBAAXxjH,QAAoD,iBAApBA,OAAOe,SAAmC,SAAiBT,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXN,QAAyBM,EAAImF,cAAgBzF,QAAUM,IAAQN,OAAO7H,UAAY,gBAAkBmI,CAAK,EAAYkjH,EAAQljH,EAAM,CAEzX,IAAI8nH,EAAmB,GACnBC,EAAsB,EAS1B,SAASF,EAAYxxH,EAAO2xH,GAC1B,OAAQ9E,EAAQ7sH,IACd,IAAK,SACH,OAAO8B,KAAKC,UAAU/B,GAExB,IAAK,WACH,OAAOA,EAAM8J,KAAO,aAAak9B,OAAOhnC,EAAM8J,KAAM,KAAO,aAE7D,IAAK,SACH,OAAc,OAAV9J,EACK,OAUf,SAA2BA,EAAO4xH,GAChC,IAA6C,IAAzCA,EAAqBhoH,QAAQ5J,GAC/B,MAAO,aAGT,IAAI2xH,EAAa,GAAG3qF,OAAO4qF,EAAsB,CAAC5xH,IAC9C6xH,EA2DN,SAAqB/mG,GACnB,IAAI+mG,EAAkB/mG,EAAO9oB,OAAOqvH,EAA2BxmF,UAE/D,MAA+B,mBAApBgnF,EACFA,EAGqB,mBAAnB/mG,EAAO8+E,QACT9+E,EAAO8+E,aADhB,CAGF,CArEwBkoB,CAAY9xH,GAElC,QAAwBC,IAApB4xH,EAA+B,CACjC,IAAIE,EAAcF,EAAgBppH,KAAKzI,GAEvC,GAAI+xH,IAAgB/xH,EAClB,MAA8B,iBAAhB+xH,EAA2BA,EAAcP,EAAYO,EAAaJ,EAEpF,MAAO,GAAIlnH,MAAMC,QAAQ1K,GACvB,OAwBJ,SAAqBigB,EAAO0xG,GAC1B,GAAqB,IAAjB1xG,EAAM5e,OACR,MAAO,KAGT,GAAIswH,EAAWtwH,OAASqwH,EACtB,MAAO,UAOT,IAJA,IAAI94B,EAAMn0F,KAAK4tC,IAAIo/E,EAAkBxxG,EAAM5e,QACvCuuD,EAAY3vC,EAAM5e,OAASu3F,EAC3BzuF,EAAQ,GAEHhJ,EAAI,EAAGA,EAAIy3F,IAAOz3F,EACzBgJ,EAAM9G,KAAKmuH,EAAYvxG,EAAM9e,GAAIwwH,IASnC,OANkB,IAAd/hE,EACFzlD,EAAM9G,KAAK,mBACFusD,EAAY,GACrBzlD,EAAM9G,KAAK,OAAO2jC,OAAO4oB,EAAW,gBAG/B,IAAMzlD,EAAMhF,KAAK,MAAQ,GAClC,CAhDW6sH,CAAYhyH,EAAO2xH,GAG5B,OAGF,SAAsB7mG,EAAQ6mG,GAC5B,IAAI1wH,EAAOC,OAAOD,KAAK6pB,GAEvB,OAAoB,IAAhB7pB,EAAKI,OACA,KAGLswH,EAAWtwH,OAASqwH,EACf,IAgDX,SAAsB5mG,GACpB,IAAI5R,EAAMhY,OAAOM,UAAUF,SAASmH,KAAKqiB,GAAQ9c,QAAQ,aAAc,IAAIA,QAAQ,KAAM,IAEzF,GAAY,WAARkL,GAAkD,mBAAvB4R,EAAOhc,YAA4B,CAChE,IAAIhF,EAAOghB,EAAOhc,YAAYhF,KAE9B,GAAoB,iBAATA,GAA8B,KAATA,EAC9B,OAAOA,CAEX,CAEA,OAAOoP,CACT,CA5DiB+4G,CAAannG,GAAU,IAO/B,KAJU7pB,EAAKgE,KAAI,SAAU1E,GAElC,OAAOA,EAAM,KADDixH,EAAY1mG,EAAOvqB,GAAMoxH,EAEvC,IACyBxsH,KAAK,MAAQ,IACxC,CAnBS+sH,CAAalyH,EAAO2xH,EAC7B,CA1BaQ,CAAkBnyH,EAAO2xH,GAElC,QACE,OAAO3vH,OAAOhC,GAEpB,gCClCA,IAEgC2J,EAPhCzI,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAA,aAAkB,GAIc2F,EAFM,EAAQ,SAEOA,EAAIxB,WAgCzDnE,EAAA,QAxBA,SAAoBhE,EAAO8O,GACzB,OAAO9O,aAAiB8O,CAC1B,8BCjBA5N,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAA,QAEA,SAAmButH,EAAW1iH,GAG5B,IAFuBi5B,QAAQypF,GAG7B,MAAM,IAAI1vH,MAAiB,MAAXgN,EAAkBA,EAAU,kCAEhD,8BCNA,SAASg+G,EAAQljH,GAAmV,OAAtOkjH,EAArD,mBAAXxjH,QAAoD,iBAApBA,OAAOe,SAAmC,SAAiBT,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXN,QAAyBM,EAAImF,cAAgBzF,QAAUM,IAAQN,OAAO7H,UAAY,gBAAkBmI,CAAK,EAAYkjH,EAAQljH,EAAM,CALzXzI,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAA,QAQA,SAAsBhE,GACpB,MAAyB,UAAlB6sH,EAAQ7sH,IAAgC,OAAVA,CACvC,8BCbAkB,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAA,aAAkB,EAElB,IACIouH,EAD8C,mBAAX/oH,QAA+C,mBAAfA,OAAOg7D,IAAqBh7D,OAAOg7D,IAAI,mCAAgCpkE,EAE9I+D,EAAA,QAAkBouH,gCCPlBlxH,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQquH,OAyHR,SAAgBC,GACd,OAAoB,MAAbA,GAA+C,iBAAnBA,EAAUzY,IAC/C,EA1HA71G,EAAQuuH,MAAQvuH,EAAQwuH,cAAW,EAEnC,IAEgC7oH,EAF5B8oH,GAE4B9oH,EAFY,EAAQ,SAECA,EAAIxB,WAAawB,EAAM,CAAEkhC,QAASlhC,GAMnF6oH,EAAwB,WAoB1B,SAASA,EAASE,EAAYC,EAAUrjG,GACtCxvB,KAAKwC,MAAQowH,EAAWpwH,MACxBxC,KAAKyC,IAAMowH,EAASpwH,IACpBzC,KAAK4yH,WAAaA,EAClB5yH,KAAK6yH,SAAWA,EAChB7yH,KAAKwvB,OAASA,CAChB,CAWA,OATakjG,EAAShxH,UAEf+iG,OAAS,WACd,MAAO,CACLjiG,MAAOxC,KAAKwC,MACZC,IAAKzC,KAAKyC,IAEd,EAEOiwH,CACT,CAtC4B,GAyC5BxuH,EAAQwuH,SAAWA,GACnB,EAAIC,EAAe5nF,SAAS2nF,GAM5B,IAAID,EAAqB,WA8BvB,SAASA,EAAM1Y,EAAMv3G,EAAOC,EAAKiN,EAAMiL,EAAQ08E,EAAMn3F,GACnDF,KAAK+5G,KAAOA,EACZ/5G,KAAKwC,MAAQA,EACbxC,KAAKyC,IAAMA,EACXzC,KAAK0P,KAAOA,EACZ1P,KAAK2a,OAASA,EACd3a,KAAKE,MAAQA,EACbF,KAAKq3F,KAAOA,EACZr3F,KAAKkG,KAAO,IACd,CAaA,OAXcusH,EAAM/wH,UAEZ+iG,OAAS,WACf,MAAO,CACLsV,KAAM/5G,KAAK+5G,KACX75G,MAAOF,KAAKE,MACZwP,KAAM1P,KAAK0P,KACXiL,OAAQ3a,KAAK2a,OAEjB,EAEO83G,CACT,CArDyB,GAwDzBvuH,EAAQuuH,MAAQA,GAChB,EAAIE,EAAe5nF,SAAS0nF,8BC3E5B,SAASzyC,EAAQ37E,GACf,IAAK,IAAIhD,EAAI,EAAGA,EAAIgD,EAAI9C,SAAUF,EAChC,GAAe,MAAXgD,EAAIhD,IAAyB,OAAXgD,EAAIhD,GACxB,OAAO,EAIX,OAAO,CACT,CAMA,SAASyxH,EAA0B5yH,GAQjC,IAPA,IAAI6yH,EAEAC,GAAc,EACdC,GAAc,EACd75E,EAAS,EACT85E,EAAe,KAEV7xH,EAAI,EAAGA,EAAInB,EAAMqB,SAAUF,EAClC,OAAQnB,EAAMb,WAAWgC,IACvB,KAAK,GAE6B,KAA5BnB,EAAMb,WAAWgC,EAAI,MACrBA,EAKN,KAAK,GAEH2xH,GAAc,EACdC,GAAc,EACd75E,EAAS,EACT,MAEF,KAAK,EAEL,KAAK,KAEDA,EACF,MAEF,QACM65E,IAAgBD,IAAiC,OAAjBE,GAAyB95E,EAAS85E,KACpEA,EAAe95E,GAGjB65E,GAAc,EAIpB,OAA0C,QAAlCF,EAAgBG,SAA4C,IAAlBH,EAA2BA,EAAgB,CAC/F,CApGA3xH,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQivH,uBAYR,SAAgCC,GAE9B,IAAIn6E,EAAQm6E,EAAUpuH,MAAM,gBAExBkuH,EAAeJ,EAA0BM,GAE7C,GAAqB,IAAjBF,EACF,IAAK,IAAI7xH,EAAI,EAAGA,EAAI43C,EAAM13C,OAAQF,IAChC43C,EAAM53C,GAAK43C,EAAM53C,GAAGmD,MAAM0uH,GAO9B,IAFA,IAAIG,EAAY,EAETA,EAAYp6E,EAAM13C,QAAUy+E,EAAQ/mC,EAAMo6E,OAC7CA,EAKJ,IAFA,IAAIC,EAAUr6E,EAAM13C,OAEb+xH,EAAUD,GAAarzC,EAAQ/mC,EAAMq6E,EAAU,OAClDA,EAIJ,OAAOr6E,EAAMz0C,MAAM6uH,EAAWC,GAASjuH,KAAK,KAC9C,EAtCAnB,EAAQ4uH,0BAA4BA,EACpC5uH,EAAQqvH,iBAyGR,SAA0BrzH,GACxB,IAAIszH,EAAc7wG,UAAUphB,OAAS,QAAsBpB,IAAjBwiB,UAAU,GAAmBA,UAAU,GAAK,GAClF8wG,EAAsB9wG,UAAUphB,OAAS,QAAsBpB,IAAjBwiB,UAAU,IAAmBA,UAAU,GACrF+wG,GAAwC,IAAzBxzH,EAAM4J,QAAQ,MAC7B6pH,EAA+B,MAAbzzH,EAAM,IAA2B,OAAbA,EAAM,GAC5C0zH,EAA+C,MAA5B1zH,EAAMA,EAAMqB,OAAS,GACxCsyH,EAA+C,OAA5B3zH,EAAMA,EAAMqB,OAAS,GACxCuyH,GAAwBJ,GAAgBE,GAAoBC,GAAoBJ,EAChF5vH,EAAS,GAYb,OAVIiwH,GAA0BJ,GAAgBC,IAC5C9vH,GAAU,KAAO2vH,GAGnB3vH,GAAU2vH,EAActzH,EAAMgO,QAAQ,MAAO,KAAOslH,GAAetzH,EAE/D4zH,IACFjwH,GAAU,MAGL,MAAQA,EAAOqK,QAAQ,OAAQ,SAAW,KACnD,8BCnIA9M,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQ6vH,uBAAoB,EAK5B,IAAIA,EAAoB3yH,OAAOsoB,OAAO,CAEpCsqG,MAAO,QACPC,SAAU,WACVC,aAAc,eACdC,MAAO,QACPC,oBAAqB,sBACrBC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,oBAAqB,sBAErBC,OAAQ,SACRC,OAAQ,SACRv1H,OAAQ,SACRw1H,iBAAkB,mBAClBC,oBAAqB,sBACrBC,UAAW,YACX70F,MAAO,QACP80F,KAAM,OACNC,WAAY,aACZC,aAAc,eACdC,uBAAwB,2BAM1B9wH,EAAQ6vH,kBAAoBA,gCCnC5B3yH,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETkB,OAAO+C,eAAeD,EAAS,SAAU,CACvCmD,YAAY,EACZC,IAAK,WACH,OAAO+2D,EAAQ42D,MACjB,IAEF7zH,OAAO+C,eAAeD,EAAS,cAAe,CAC5CmD,YAAY,EACZC,IAAK,WACH,OAAO8lH,EAAUiD,WACnB,IAEFjvH,OAAO+C,eAAeD,EAAS,gBAAiB,CAC9CmD,YAAY,EACZC,IAAK,WACH,OAAO+lH,EAAeyD,aACxB,IAEF1vH,OAAO+C,eAAeD,EAAS,sBAAuB,CACpDmD,YAAY,EACZC,IAAK,WACH,OAAO+lH,EAAe4D,mBACxB,IAEF7vH,OAAO+C,eAAeD,EAAS,OAAQ,CACrCmD,YAAY,EACZC,IAAK,WACH,OAAO4tH,EAAOC,IAChB,IAEF/zH,OAAO+C,eAAeD,EAAS,YAAa,CAC1CmD,YAAY,EACZC,IAAK,WACH,OAAO8tH,EAAWC,SACpB,IAEFj0H,OAAO+C,eAAeD,EAAS,QAAS,CACtCmD,YAAY,EACZC,IAAK,WACH,OAAOguH,EAAOC,KAChB,IAEFn0H,OAAO+C,eAAeD,EAAS,QAAS,CACtCmD,YAAY,EACZC,IAAK,WACH,OAAOkuH,EAAQvoH,KACjB,IAEF7L,OAAO+C,eAAeD,EAAS,aAAc,CAC3CmD,YAAY,EACZC,IAAK,WACH,OAAOkuH,EAAQC,UACjB,IAEFr0H,OAAO+C,eAAeD,EAAS,YAAa,CAC1CmD,YAAY,EACZC,IAAK,WACH,OAAOkuH,EAAQE,SACjB,IAEFt0H,OAAO+C,eAAeD,EAAS,QAAS,CACtCmD,YAAY,EACZC,IAAK,WACH,OAAOquH,EAASC,KAClB,IAEFx0H,OAAO+C,eAAeD,EAAS,QAAS,CACtCmD,YAAY,EACZC,IAAK,WACH,OAAOuuH,EAASC,KAClB,IAEF10H,OAAO+C,eAAeD,EAAS,kBAAmB,CAChDmD,YAAY,EACZC,IAAK,WACH,OAAOuuH,EAASE,eAClB,IAEF30H,OAAO+C,eAAeD,EAAS,aAAc,CAC3CmD,YAAY,EACZC,IAAK,WACH,OAAOuuH,EAASG,UAClB,IAEF50H,OAAO+C,eAAeD,EAAS,QAAS,CACtCmD,YAAY,EACZC,IAAK,WACH,OAAOuuH,EAASI,KAClB,IAEF70H,OAAO+C,eAAeD,EAAS,WAAY,CACzCmD,YAAY,EACZC,IAAK,WACH,OAAO4uH,EAAKxD,QACd,IAEFtxH,OAAO+C,eAAeD,EAAS,QAAS,CACtCmD,YAAY,EACZC,IAAK,WACH,OAAO4uH,EAAKzD,KACd,IAEFrxH,OAAO+C,eAAeD,EAAS,mBAAoB,CACjDmD,YAAY,EACZC,IAAK,WACH,OAAO6uH,EAAYC,gBACrB,IAEFh1H,OAAO+C,eAAeD,EAAS,6BAA8B,CAC3DmD,YAAY,EACZC,IAAK,WACH,OAAO6uH,EAAYE,0BACrB,IAEFj1H,OAAO+C,eAAeD,EAAS,kBAAmB,CAChDmD,YAAY,EACZC,IAAK,WACH,OAAO6uH,EAAYG,eACrB,IAEFl1H,OAAO+C,eAAeD,EAAS,cAAe,CAC5CmD,YAAY,EACZC,IAAK,WACH,OAAO6uH,EAAYI,WACrB,IAEFn1H,OAAO+C,eAAeD,EAAS,aAAc,CAC3CmD,YAAY,EACZC,IAAK,WACH,OAAO6uH,EAAYK,UACrB,IAEFp1H,OAAO+C,eAAeD,EAAS,6BAA8B,CAC3DmD,YAAY,EACZC,IAAK,WACH,OAAO6uH,EAAYM,0BACrB,IAEFr1H,OAAO+C,eAAeD,EAAS,uBAAwB,CACrDmD,YAAY,EACZC,IAAK,WACH,OAAO6uH,EAAYO,oBACrB,IAEFt1H,OAAO+C,eAAeD,EAAS,4BAA6B,CAC1DmD,YAAY,EACZC,IAAK,WACH,OAAO6uH,EAAYQ,yBACrB,IAEFv1H,OAAO+C,eAAeD,EAAS,sBAAuB,CACpDmD,YAAY,EACZC,IAAK,WACH,OAAO6uH,EAAYS,mBACrB,IAEFx1H,OAAO+C,eAAeD,EAAS,oBAAqB,CAClDmD,YAAY,EACZC,IAAK,WACH,OAAOuvH,EAAmB9C,iBAC5B,IAGF,IAAI11D,EAAU,EAAQ,OAElB+uD,EAAY,EAAQ,MAEpBC,EAAiB,EAAQ,OAEzB6H,EAAS,EAAQ,OAEjBE,EAAa,EAAQ,OAErBE,EAAS,EAAQ,MAEjBE,EAAU,EAAQ,OAElBG,EAAW,EAAQ,OAEnBE,EAAW,EAAQ,OAEnBK,EAAO,EAAQ,OAEfC,EAAc,EAAQ,OAEtBU,EAAqB,EAAQ,mCC5LjCz1H,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQixH,UAAO,EAKf,IAAIA,EAAO/zH,OAAOsoB,OAAO,CAEvBotG,KAAM,OAENC,SAAU,WACVC,qBAAsB,sBACtBzC,oBAAqB,qBACrB0C,cAAe,eACf9C,MAAO,QACP+C,SAAU,WAEV7C,gBAAiB,iBACjBC,gBAAiB,iBACjBF,oBAAqB,qBAErB+C,SAAU,WACVC,IAAK,WACLC,MAAO,aACP35H,OAAQ,cACR45H,QAAS,eACT75H,KAAM,YACNo3H,KAAM,YACN0C,KAAM,YACNr4H,OAAQ,cACRs4H,aAAc,cAEdC,UAAW,YAEXC,WAAY,YACZC,UAAW,WACXC,cAAe,cAEfC,kBAAmB,mBACnBC,0BAA2B,0BAE3BC,uBAAwB,uBACxBC,uBAAwB,uBACxBtD,iBAAkB,kBAClBuD,uBAAwB,uBACxBC,0BAA2B,0BAC3BC,sBAAuB,sBACvBC,qBAAsB,qBACtBC,sBAAuB,sBACvBC,6BAA8B,4BAE9BC,qBAAsB,sBAEtBC,iBAAkB,kBAElBC,sBAAuB,sBACvBC,sBAAuB,sBACvBC,yBAA0B,yBAC1BC,qBAAsB,qBACtBC,oBAAqB,oBACrBC,4BAA6B,6BAM/B50H,EAAQixH,KAAOA,+BCpEf/zH,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQ60H,sBAqFR,SAA+Bhf,GAC7B,OAAOA,IAASqb,EAAWC,UAAU2D,MAAQjf,IAASqb,EAAWC,UAAU4D,QAAUlf,IAASqb,EAAWC,UAAU6D,KAAOnf,IAASqb,EAAWC,UAAU8D,SAAWpf,IAASqb,EAAWC,UAAU+D,SAAWrf,IAASqb,EAAWC,UAAUgE,QAAUtf,IAASqb,EAAWC,UAAUh4H,OAAS08G,IAASqb,EAAWC,UAAUiE,QAAUvf,IAASqb,EAAWC,UAAUkE,IAAMxf,IAASqb,EAAWC,UAAUmE,WAAazf,IAASqb,EAAWC,UAAUoE,WAAa1f,IAASqb,EAAWC,UAAUqE,SAAW3f,IAASqb,EAAWC,UAAUsE,MAAQ5f,IAASqb,EAAWC,UAAUuE,OAC5iB,EAtFA11H,EAAQqxH,WAAQ,EAEhB,IAAIsE,EAAe,EAAQ,OAEvB3D,EAAO,EAAQ,OAEfd,EAAa,EAAQ,OAErB0E,EAAe,EAAQ,MAUvBvE,EAAqB,WAgBvB,SAASA,EAAM/lG,GACb,IAAIuqG,EAAmB,IAAI7D,EAAKzD,MAAM2C,EAAWC,UAAU2E,IAAK,EAAG,EAAG,EAAG,EAAG,MAC5Eh6H,KAAKwvB,OAASA,EACdxvB,KAAKi6H,UAAYF,EACjB/5H,KAAKqD,MAAQ02H,EACb/5H,KAAK0P,KAAO,EACZ1P,KAAKk6H,UAAY,CACnB,CAMA,IAAIC,EAAS5E,EAAM7zH,UA4BnB,OA1BAy4H,EAAOC,QAAU,WAGf,OAFAp6H,KAAKi6H,UAAYj6H,KAAKqD,MACVrD,KAAKqD,MAAQrD,KAAKq6H,WAEhC,EAOAF,EAAOE,UAAY,WACjB,IAAIh3H,EAAQrD,KAAKqD,MAEjB,GAAIA,EAAM02G,OAASqb,EAAWC,UAAUiF,IACtC,EAAG,CACD,IAAIC,EAGJl3H,EAAuC,QAA9Bk3H,EAAcl3H,EAAM6C,YAAkC,IAAhBq0H,EAAyBA,EAAcl3H,EAAM6C,KAAOs0H,EAAUx6H,KAAMqD,EACrH,OAASA,EAAM02G,OAASqb,EAAWC,UAAUoF,SAG/C,OAAOp3H,CACT,EAEOkyH,CACT,CA1DyB,GAsEzB,SAASmF,EAAcx5H,GACrB,OACE6C,MAAM7C,GAAQk0H,EAAWC,UAAUiF,IACnCp5H,EAAO,IAASc,KAAKC,UAAUC,OAAOC,aAAajB,IACnD,OAAQgmC,QAAQ,KAAOhmC,EAAKM,SAAS,IAAI4D,eAAeZ,OAAO,GAAI,IAEvE,CAUA,SAASg2H,EAAUG,EAAOtjC,GAMxB,IALA,IAAI7nE,EAASmrG,EAAMnrG,OACfxkB,EAAOwkB,EAAOxkB,KACd4vH,EAAa5vH,EAAKzJ,OAClBmoG,EAAMrS,EAAK50F,IAERinG,EAAMkxB,GAAY,CACvB,IAAI15H,EAAO8J,EAAK3L,WAAWqqG,GACvBmxB,EAAQF,EAAMjrH,KAEdorH,EAAO,EAAIpxB,EAAMixB,EAAMT,UAG3B,OAAQh5H,GACN,KAAK,MAEL,KAAK,EAEL,KAAK,GAEL,KAAK,KAEDwoG,EACF,SAEF,KAAK,KAEDA,IACAixB,EAAMjrH,KACRirH,EAAMT,UAAYxwB,EAClB,SAEF,KAAK,GAE8B,KAA7B1+F,EAAK3L,WAAWqqG,EAAM,GACxBA,GAAO,IAELA,IAGFixB,EAAMjrH,KACRirH,EAAMT,UAAYxwB,EAClB,SAEF,KAAK,GAEH,OAAO,IAAIwsB,EAAKzD,MAAM2C,EAAWC,UAAU2D,KAAMtvB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAE9E,KAAK,GAEH,OAAO0jC,EAAYvrG,EAAQk6E,EAAKmxB,EAAOC,EAAMzjC,GAE/C,KAAK,GAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAU4D,OAAQvvB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAEhF,KAAK,GAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAU6D,IAAKxvB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAE7E,KAAK,GAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAU8D,QAASzvB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAEjF,KAAK,GAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAU+D,QAAS1vB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAEjF,KAAK,GAEH,GAAiC,KAA7BrsF,EAAK3L,WAAWqqG,EAAM,IAA0C,KAA7B1+F,EAAK3L,WAAWqqG,EAAM,GAC3D,OAAO,IAAIwsB,EAAKzD,MAAM2C,EAAWC,UAAUgE,OAAQ3vB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAGhF,MAEF,KAAK,GAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAUh4H,MAAOqsG,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAE/E,KAAK,GAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAUiE,OAAQ5vB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAEhF,KAAK,GAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAUkE,GAAI7vB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAE5E,KAAK,GAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAUmE,UAAW9vB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAEnF,KAAK,GAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAUoE,UAAW/vB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAEnF,KAAK,IAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAUqE,QAAShwB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAEjF,KAAK,IAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAUsE,KAAMjwB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAE9E,KAAK,IAEH,OAAO,IAAI6+B,EAAKzD,MAAM2C,EAAWC,UAAUuE,QAASlwB,EAAKA,EAAM,EAAGmxB,EAAOC,EAAMzjC,GAEjF,KAAK,GAEH,OAAiC,KAA7BrsF,EAAK3L,WAAWqqG,EAAM,IAA0C,KAA7B1+F,EAAK3L,WAAWqqG,EAAM,GACpDsxB,EAAgBxrG,EAAQk6E,EAAKmxB,EAAOC,EAAMzjC,EAAMsjC,GAGlDM,EAAWzrG,EAAQk6E,EAAKmxB,EAAOC,EAAMzjC,GAE9C,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEH,OAAO6jC,EAAW1rG,EAAQk6E,EAAKxoG,EAAM25H,EAAOC,EAAMzjC,GAEpD,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEH,OAAO8jC,EAAS3rG,EAAQk6E,EAAKmxB,EAAOC,EAAMzjC,GAG9C,MAAM,EAAIwiC,EAAa3I,aAAa1hG,EAAQk6E,EAAK0xB,EAA2Bl6H,GAC9E,CAEA,IAAIwO,EAAOirH,EAAMjrH,KACb2rH,EAAM,EAAI3xB,EAAMixB,EAAMT,UAC1B,OAAO,IAAIhE,EAAKzD,MAAM2C,EAAWC,UAAUiF,IAAKM,EAAYA,EAAYlrH,EAAM2rH,EAAKhkC,EACrF,CAMA,SAAS+jC,EAA2Bl6H,GAClC,OAAIA,EAAO,IAAmB,IAATA,GAA4B,KAATA,GAA4B,KAATA,EAClD,wCAAwCgmC,OAAOwzF,EAAcx5H,GAAO,KAGhE,KAATA,EAEK,kFAGF,yCAAyCgmC,OAAOwzF,EAAcx5H,GAAO,IAC9E,CAQA,SAAS65H,EAAYvrG,EAAQhtB,EAAOkN,EAAM2rH,EAAKhkC,GAC7C,IACIn2F,EADA8J,EAAOwkB,EAAOxkB,KAEd+J,EAAWvS,EAEf,GACEtB,EAAO8J,EAAK3L,aAAa0V,UACjBhR,MAAM7C,KAChBA,EAAO,IAAmB,IAATA,IAEjB,OAAO,IAAIg1H,EAAKzD,MAAM2C,EAAWC,UAAUoF,QAASj4H,EAAOuS,EAAUrF,EAAM2rH,EAAKhkC,EAAMrsF,EAAKxG,MAAMhC,EAAQ,EAAGuS,GAC9G,CAUA,SAASmmH,EAAW1rG,EAAQhtB,EAAO84H,EAAW5rH,EAAM2rH,EAAKhkC,GACvD,IAAIrsF,EAAOwkB,EAAOxkB,KACd9J,EAAOo6H,EACPvmH,EAAWvS,EACXoqF,GAAU,EAOd,GALa,KAAT1rF,IAEFA,EAAO8J,EAAK3L,aAAa0V,IAGd,KAAT7T,GAIF,IAFAA,EAAO8J,EAAK3L,aAAa0V,KAEb,IAAM7T,GAAQ,GACxB,MAAM,EAAI24H,EAAa3I,aAAa1hG,EAAQza,EAAU,6CAA6CmyB,OAAOwzF,EAAcx5H,GAAO,WAGjI6T,EAAWwmH,EAAW/rG,EAAQza,EAAU7T,GACxCA,EAAO8J,EAAK3L,WAAW0V,GA0BzB,GAvBa,KAAT7T,IAEF0rF,GAAU,EACV1rF,EAAO8J,EAAK3L,aAAa0V,GACzBA,EAAWwmH,EAAW/rG,EAAQza,EAAU7T,GACxCA,EAAO8J,EAAK3L,WAAW0V,IAGZ,KAAT7T,GAAwB,MAATA,IAEjB0rF,GAAU,EAGG,MAFb1rF,EAAO8J,EAAK3L,aAAa0V,KAEG,KAAT7T,IAEjBA,EAAO8J,EAAK3L,aAAa0V,IAG3BA,EAAWwmH,EAAW/rG,EAAQza,EAAU7T,GACxCA,EAAO8J,EAAK3L,WAAW0V,IAIZ,KAAT7T,GAsON,SAAqBA,GACnB,OAAgB,KAATA,GAAeA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,GAC1E,CAxOqBs6H,CAAYt6H,GAC7B,MAAM,EAAI24H,EAAa3I,aAAa1hG,EAAQza,EAAU,2CAA2CmyB,OAAOwzF,EAAcx5H,GAAO,MAG/H,OAAO,IAAIg1H,EAAKzD,MAAM7lC,EAAUwoC,EAAWC,UAAUgC,MAAQjC,EAAWC,UAAU+B,IAAK50H,EAAOuS,EAAUrF,EAAM2rH,EAAKhkC,EAAMrsF,EAAKxG,MAAMhC,EAAOuS,GAC7I,CAMA,SAASwmH,EAAW/rG,EAAQhtB,EAAO84H,GACjC,IAAItwH,EAAOwkB,EAAOxkB,KACd+J,EAAWvS,EACXtB,EAAOo6H,EAEX,GAAIp6H,GAAQ,IAAMA,GAAQ,GAAI,CAE5B,GACEA,EAAO8J,EAAK3L,aAAa0V,SAClB7T,GAAQ,IAAMA,GAAQ,IAG/B,OAAO6T,CACT,CAEA,MAAM,EAAI8kH,EAAa3I,aAAa1hG,EAAQza,EAAU,2CAA2CmyB,OAAOwzF,EAAcx5H,GAAO,KAC/H,CAQA,SAAS+5H,EAAWzrG,EAAQhtB,EAAOkN,EAAM2rH,EAAKhkC,GAO5C,IANA,IAsJmB90C,EAAGC,EAAGrvC,EAAGsqF,EAtJxBzyF,EAAOwkB,EAAOxkB,KACd+J,EAAWvS,EAAQ,EACnBi5H,EAAa1mH,EACb7T,EAAO,EACPhB,EAAQ,GAEL6U,EAAW/J,EAAKzJ,SAAWwC,MAAM7C,EAAO8J,EAAK3L,WAAW0V,KACtD,KAAT7T,GAA4B,KAATA,GAAiB,CAElC,GAAa,KAATA,EAEF,OADAhB,GAAS8K,EAAKxG,MAAMi3H,EAAY1mH,GACzB,IAAImhH,EAAKzD,MAAM2C,EAAWC,UAAU33H,OAAQ8E,EAAOuS,EAAW,EAAGrF,EAAM2rH,EAAKhkC,EAAMn3F,GAI3F,GAAIgB,EAAO,IAAmB,IAATA,EACnB,MAAM,EAAI24H,EAAa3I,aAAa1hG,EAAQza,EAAU,oCAAoCmyB,OAAOwzF,EAAcx5H,GAAO,MAKxH,KAFE6T,EAEW,KAAT7T,EAAa,CAKf,OAHAhB,GAAS8K,EAAKxG,MAAMi3H,EAAY1mH,EAAW,GAC3C7T,EAAO8J,EAAK3L,WAAW0V,IAGrB,KAAK,GACH7U,GAAS,IACT,MAEF,KAAK,GACHA,GAAS,IACT,MAEF,KAAK,GACHA,GAAS,KACT,MAEF,KAAK,GACHA,GAAS,KACT,MAEF,KAAK,IACHA,GAAS,KACT,MAEF,KAAK,IACHA,GAAS,KACT,MAEF,KAAK,IACHA,GAAS,KACT,MAEF,KAAK,IACHA,GAAS,KACT,MAEF,KAAK,IAGD,IAAIw7H,GAwFKn5E,EAxFkBv3C,EAAK3L,WAAW0V,EAAW,GAwF1CytC,EAxF8Cx3C,EAAK3L,WAAW0V,EAAW,GAwFtE5B,EAxF0EnI,EAAK3L,WAAW0V,EAAW,GAwFlG0oF,EAxFsGzyF,EAAK3L,WAAW0V,EAAW,GAyFtJ4mH,EAASp5E,IAAM,GAAKo5E,EAASn5E,IAAM,EAAIm5E,EAASxoH,IAAM,EAAIwoH,EAASl+B,IAvFhE,GAAIi+B,EAAW,EAAG,CAChB,IAAIE,EAAkB5wH,EAAKxG,MAAMuQ,EAAW,EAAGA,EAAW,GAC1D,MAAM,EAAI8kH,EAAa3I,aAAa1hG,EAAQza,EAAU,yCAAyCmyB,OAAO00F,EAAiB,KACzH,CAEA17H,GAASgC,OAAOC,aAAau5H,GAC7B3mH,GAAY,EACZ,MAGJ,QACE,MAAM,EAAI8kH,EAAa3I,aAAa1hG,EAAQza,EAAU,wCAAwCmyB,OAAOhlC,OAAOC,aAAajB,GAAO,MAIpIu6H,IADE1mH,CAEJ,CACF,CAEA,MAAM,EAAI8kH,EAAa3I,aAAa1hG,EAAQza,EAAU,uBACxD,CAQA,SAASimH,EAAgBxrG,EAAQhtB,EAAOkN,EAAM2rH,EAAKhkC,EAAMsjC,GAOvD,IANA,IAAI3vH,EAAOwkB,EAAOxkB,KACd+J,EAAWvS,EAAQ,EACnBi5H,EAAa1mH,EACb7T,EAAO,EACP26H,EAAW,GAER9mH,EAAW/J,EAAKzJ,SAAWwC,MAAM7C,EAAO8J,EAAK3L,WAAW0V,KAAY,CAEzE,GAAa,KAAT7T,GAAiD,KAAlC8J,EAAK3L,WAAW0V,EAAW,IAA+C,KAAlC/J,EAAK3L,WAAW0V,EAAW,GAEpF,OADA8mH,GAAY7wH,EAAKxG,MAAMi3H,EAAY1mH,GAC5B,IAAImhH,EAAKzD,MAAM2C,EAAWC,UAAUyG,aAAct5H,EAAOuS,EAAW,EAAGrF,EAAM2rH,EAAKhkC,GAAM,EAAIyiC,EAAa3G,wBAAwB0I,IAI1I,GAAI36H,EAAO,IAAmB,IAATA,GAA4B,KAATA,GAA4B,KAATA,EACzD,MAAM,EAAI24H,EAAa3I,aAAa1hG,EAAQza,EAAU,oCAAoCmyB,OAAOwzF,EAAcx5H,GAAO,MAG3G,KAATA,KAEA6T,IACA4lH,EAAMjrH,KACRirH,EAAMT,UAAYnlH,GACA,KAAT7T,GAE6B,KAAlC8J,EAAK3L,WAAW0V,EAAW,GAC7BA,GAAY,IAEVA,IAGF4lH,EAAMjrH,KACRirH,EAAMT,UAAYnlH,GAEX,KAAT7T,GAAiD,KAAlC8J,EAAK3L,WAAW0V,EAAW,IAA+C,KAAlC/J,EAAK3L,WAAW0V,EAAW,IAA+C,KAAlC/J,EAAK3L,WAAW0V,EAAW,IACxH8mH,GAAY7wH,EAAKxG,MAAMi3H,EAAY1mH,GAAY,MAE/C0mH,EADA1mH,GAAY,KAGVA,CAEN,CAEA,MAAM,EAAI8kH,EAAa3I,aAAa1hG,EAAQza,EAAU,uBACxD,CA0BA,SAAS4mH,EAASp5E,GAChB,OAAOA,GAAK,IAAMA,GAAK,GAAKA,EAAI,GAC9BA,GAAK,IAAMA,GAAK,GAAKA,EAAI,GACzBA,GAAK,IAAMA,GAAK,IAAMA,EAAI,IACzB,CACL,CAQA,SAAS44E,EAAS3rG,EAAQhtB,EAAOkN,EAAM2rH,EAAKhkC,GAM1C,IALA,IAAIrsF,EAAOwkB,EAAOxkB,KACd4vH,EAAa5vH,EAAKzJ,OAClBwT,EAAWvS,EAAQ,EACnBtB,EAAO,EAEJ6T,IAAa6lH,IAAe72H,MAAM7C,EAAO8J,EAAK3L,WAAW0V,MAAwB,KAAT7T,GAC/EA,GAAQ,IAAMA,GAAQ,IACtBA,GAAQ,IAAMA,GAAQ,IACtBA,GAAQ,IAAMA,GAAQ,QAElB6T,EAGJ,OAAO,IAAImhH,EAAKzD,MAAM2C,EAAWC,UAAUyB,KAAMt0H,EAAOuS,EAAUrF,EAAM2rH,EAAKhkC,EAAMrsF,EAAKxG,MAAMhC,EAAOuS,GACvG,CAplBA7Q,EAAQqxH,MAAQA,6BCtFhBn0H,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQmsH,YAUR,SAAqB7gG,EAAQza,GAM3B,IALA,IAGI/Q,EAHA+3H,EAAa,eACbrsH,EAAO,EACPiL,EAAS5F,EAAW,GAGhB/Q,EAAQ+3H,EAAW1tC,KAAK7+D,EAAOxkB,QAAUhH,EAAMma,MAAQpJ,GAC7DrF,GAAQ,EACRiL,EAAS5F,EAAW,GAAK/Q,EAAMma,MAAQna,EAAM,GAAGzC,QAGlD,MAAO,CACLmO,KAAMA,EACNiL,OAAQA,EAEZ,gCC5BAvZ,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQ+I,MAuBR,SAAeuiB,EAAQ1oB,GAErB,OADa,IAAI/G,EAAOyvB,EAAQ1oB,GAClBk1H,eAChB,EAzBA93H,EAAQuxH,WAsCR,SAAoBjmG,EAAQ1oB,GAC1B,IAAI4M,EAAS,IAAI3T,EAAOyvB,EAAQ1oB,GAChC4M,EAAOuoH,YAAY7G,EAAWC,UAAU2E,KACxC,IAAI95H,EAAQwT,EAAOwoH,mBAAkB,GAErC,OADAxoH,EAAOuoH,YAAY7G,EAAWC,UAAUiF,KACjCp6H,CACT,EA3CAgE,EAAQwxH,UAwDR,SAAmBlmG,EAAQ1oB,GACzB,IAAI4M,EAAS,IAAI3T,EAAOyvB,EAAQ1oB,GAChC4M,EAAOuoH,YAAY7G,EAAWC,UAAU2E,KACxC,IAAIttH,EAAOgH,EAAOyoH,qBAElB,OADAzoH,EAAOuoH,YAAY7G,EAAWC,UAAUiF,KACjC5tH,CACT,EA7DAxI,EAAQnE,YAAS,EAEjB,IAAI85H,EAAe,EAAQ,OAEvB3E,EAAS,EAAQ,OAEjBgB,EAAO,EAAQ,OAEfd,EAAa,EAAQ,OAErB/2D,EAAU,EAAQ,OAElBw4D,EAAqB,EAAQ,OAE7BvB,EAAS,EAAQ,MA6DjBv1H,EAAsB,WACxB,SAASA,EAAOyvB,EAAQ1oB,GACtB,IAAIs1H,GAAY,EAAI/9D,EAAQg+D,UAAU7sG,GAAUA,EAAS,IAAI6uC,EAAQ42D,OAAOzlG,GAC5ExvB,KAAKs1H,OAAS,IAAIA,EAAOC,MAAM6G,GAC/Bp8H,KAAKs8H,SAAWx1H,CAClB,CAMA,IAAIqzH,EAASp6H,EAAO2B,UA26CpB,OAz6CAy4H,EAAOoC,UAAY,WACjB,IAAIl5H,EAAQrD,KAAKi8H,YAAY7G,EAAWC,UAAUyB,MAClD,MAAO,CACL/c,KAAMmb,EAAOC,KAAK2B,KAClB52H,MAAOmD,EAAMnD,MACbiwH,IAAKnwH,KAAKmwH,IAAI9sH,GAElB,EAOA82H,EAAO6B,cAAgB,WACrB,IAAIx5H,EAAQxC,KAAKs1H,OAAOjyH,MACxB,MAAO,CACL02G,KAAMmb,EAAOC,KAAK4B,SAClBltC,YAAa7pF,KAAKw8H,KAAKpH,EAAWC,UAAU2E,IAAKh6H,KAAKy8H,gBAAiBrH,EAAWC,UAAUiF,KAC5FnK,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAaA23H,EAAOsC,gBAAkB,WACvB,GAAIz8H,KAAK08H,KAAKtH,EAAWC,UAAUyB,MACjC,OAAQ92H,KAAKs1H,OAAOjyH,MAAMnD,OACxB,IAAK,QACL,IAAK,WACL,IAAK,eACH,OAAOF,KAAK28H,2BAEd,IAAK,WACH,OAAO38H,KAAK48H,0BAEd,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,YACH,OAAO58H,KAAK68H,4BAEd,IAAK,SACH,OAAO78H,KAAK88H,+BAEX,IAAI98H,KAAK08H,KAAKtH,EAAWC,UAAUqE,SACxC,OAAO15H,KAAK28H,2BACP,GAAI38H,KAAK+8H,kBACd,OAAO/8H,KAAK68H,2BACd,CAEA,MAAM78H,KAAKg9H,YACb,EASA7C,EAAOwC,yBAA2B,WAChC,IAAIn6H,EAAQxC,KAAKs1H,OAAOjyH,MAExB,GAAIrD,KAAK08H,KAAKtH,EAAWC,UAAUqE,SACjC,MAAO,CACL3f,KAAMmb,EAAOC,KAAK6B,qBAClBrsG,UAAW,QACX3gB,UAAM7J,EACN29G,oBAAqB,GACrBV,WAAY,GACZV,aAAc18G,KAAKi9H,oBACnB9M,IAAKnwH,KAAKmwH,IAAI3tH,IAIlB,IACIwH,EADA2gB,EAAY3qB,KAAKk9H,qBAOrB,OAJIl9H,KAAK08H,KAAKtH,EAAWC,UAAUyB,QACjC9sH,EAAOhK,KAAKu8H,aAGP,CACLxiB,KAAMmb,EAAOC,KAAK6B,qBAClBrsG,UAAWA,EACX3gB,KAAMA,EACN8zG,oBAAqB99G,KAAKm9H,2BAC1B/f,WAAYp9G,KAAKo9H,iBAAgB,GACjC1gB,aAAc18G,KAAKi9H,oBACnB9M,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAMA23H,EAAO+C,mBAAqB,WAC1B,IAAIG,EAAiBr9H,KAAKi8H,YAAY7G,EAAWC,UAAUyB,MAE3D,OAAQuG,EAAen9H,OACrB,IAAK,QACH,MAAO,QAET,IAAK,WACH,MAAO,WAET,IAAK,eACH,MAAO,eAGX,MAAMF,KAAKg9H,WAAWK,EACxB,EAMAlD,EAAOgD,yBAA2B,WAChC,OAAOn9H,KAAKs9H,aAAalI,EAAWC,UAAU8D,QAASn5H,KAAKu9H,wBAAyBnI,EAAWC,UAAU+D,QAC5G,EAMAe,EAAOoD,wBAA0B,WAC/B,IAAI/6H,EAAQxC,KAAKs1H,OAAOjyH,MACxB,MAAO,CACL02G,KAAMmb,EAAOC,KAAKZ,oBAClBtpG,SAAUjrB,KAAKw9H,gBACf9wH,MAAO1M,KAAKi8H,YAAY7G,EAAWC,UAAUh4H,OAAQ2C,KAAKm8H,sBAC1D3kC,aAAcx3F,KAAKy9H,oBAAoBrI,EAAWC,UAAUiE,QAAUt5H,KAAKk8H,mBAAkB,QAAQ/7H,EACrGi9G,WAAYp9G,KAAKo9H,iBAAgB,GACjCjN,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAMA23H,EAAOqD,cAAgB,WACrB,IAAIh7H,EAAQxC,KAAKs1H,OAAOjyH,MAExB,OADArD,KAAKi8H,YAAY7G,EAAWC,UAAU4D,QAC/B,CACLlf,KAAMmb,EAAOC,KAAKgC,SAClBntH,KAAMhK,KAAKu8H,YACXpM,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAMA23H,EAAO8C,kBAAoB,WACzB,IAAIz6H,EAAQxC,KAAKs1H,OAAOjyH,MACxB,MAAO,CACL02G,KAAMmb,EAAOC,KAAK8B,cAClBpa,WAAY78G,KAAKw8H,KAAKpH,EAAWC,UAAUqE,QAAS15H,KAAK09H,eAAgBtI,EAAWC,UAAUuE,SAC9FzJ,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EASA23H,EAAOuD,eAAiB,WACtB,OAAO19H,KAAK08H,KAAKtH,EAAWC,UAAUgE,QAAUr5H,KAAK29H,gBAAkB39H,KAAK49H,YAC9E,EAQAzD,EAAOyD,WAAa,WAClB,IAEItiB,EACAtxG,EAHAxH,EAAQxC,KAAKs1H,OAAOjyH,MACpBw6H,EAAc79H,KAAKu8H,YAWvB,OAPIv8H,KAAKy9H,oBAAoBrI,EAAWC,UAAUh4H,QAChDi+G,EAAQuiB,EACR7zH,EAAOhK,KAAKu8H,aAEZvyH,EAAO6zH,EAGF,CACL9jB,KAAMmb,EAAOC,KAAKhB,MAClB7Y,MAAOA,EACPtxG,KAAMA,EACN2Y,UAAW3iB,KAAK89H,gBAAe,GAC/B1gB,WAAYp9G,KAAKo9H,iBAAgB,GACjC1gB,aAAc18G,KAAK08H,KAAKtH,EAAWC,UAAUqE,SAAW15H,KAAKi9H,yBAAsB98H,EACnFgwH,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAMA23H,EAAO2D,eAAiB,SAAwBC,GAC9C,IAAI57G,EAAO47G,EAAU/9H,KAAKg+H,mBAAqBh+H,KAAKi+H,cACpD,OAAOj+H,KAAKs9H,aAAalI,EAAWC,UAAU8D,QAASh3G,EAAMizG,EAAWC,UAAU+D,QACpF,EAMAe,EAAO8D,cAAgB,WACrB,IAAIz7H,EAAQxC,KAAKs1H,OAAOjyH,MACpB2G,EAAOhK,KAAKu8H,YAEhB,OADAv8H,KAAKi8H,YAAY7G,EAAWC,UAAUh4H,OAC/B,CACL08G,KAAMmb,EAAOC,KAAK+B,SAClBltH,KAAMA,EACN9J,MAAOF,KAAKk8H,mBAAkB,GAC9B/L,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAEA23H,EAAO6D,mBAAqB,WAC1B,IAAIx7H,EAAQxC,KAAKs1H,OAAOjyH,MACxB,MAAO,CACL02G,KAAMmb,EAAOC,KAAK+B,SAClBltH,KAAMhK,KAAKu8H,YACXr8H,OAAQF,KAAKi8H,YAAY7G,EAAWC,UAAUh4H,OAAQ2C,KAAKk8H,mBAAkB,IAC7E/L,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAWA23H,EAAOwD,cAAgB,WACrB,IAAIn7H,EAAQxC,KAAKs1H,OAAOjyH,MACxBrD,KAAKi8H,YAAY7G,EAAWC,UAAUgE,QACtC,IAAI6E,EAAmBl+H,KAAKm+H,sBAAsB,MAElD,OAAKD,GAAoBl+H,KAAK08H,KAAKtH,EAAWC,UAAUyB,MAC/C,CACL/c,KAAMmb,EAAOC,KAAKd,gBAClBrqH,KAAMhK,KAAKo+H,oBACXhhB,WAAYp9G,KAAKo9H,iBAAgB,GACjCjN,IAAKnwH,KAAKmwH,IAAI3tH,IAIX,CACLu3G,KAAMmb,EAAOC,KAAKb,gBAClBxY,cAAeoiB,EAAmBl+H,KAAKq+H,sBAAmBl+H,EAC1Di9G,WAAYp9G,KAAKo9H,iBAAgB,GACjC1gB,aAAc18G,KAAKi9H,oBACnB9M,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EASA23H,EAAOyC,wBAA0B,WAC/B,IAAI0B,EAEA97H,EAAQxC,KAAKs1H,OAAOjyH,MAKxB,OAJArD,KAAKu+H,cAAc,aAIsH,KAA/F,QAApCD,EAAiBt+H,KAAKs8H,gBAAyC,IAAnBgC,OAA4B,EAASA,EAAeE,+BAC7F,CACLzkB,KAAMmb,EAAOC,KAAKf,oBAClBpqH,KAAMhK,KAAKo+H,oBACXtgB,oBAAqB99G,KAAKm9H,2BAC1BrhB,eAAgB97G,KAAKu+H,cAAc,MAAOv+H,KAAKq+H,kBAC/CjhB,WAAYp9G,KAAKo9H,iBAAgB,GACjC1gB,aAAc18G,KAAKi9H,oBACnB9M,IAAKnwH,KAAKmwH,IAAI3tH,IAIX,CACLu3G,KAAMmb,EAAOC,KAAKf,oBAClBpqH,KAAMhK,KAAKo+H,oBACXtiB,eAAgB97G,KAAKu+H,cAAc,MAAOv+H,KAAKq+H,kBAC/CjhB,WAAYp9G,KAAKo9H,iBAAgB,GACjC1gB,aAAc18G,KAAKi9H,oBACnB9M,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAMA23H,EAAOiE,kBAAoB,WACzB,GAAgC,OAA5Bp+H,KAAKs1H,OAAOjyH,MAAMnD,MACpB,MAAMF,KAAKg9H,aAGb,OAAOh9H,KAAKu8H,WACd,EAsBApC,EAAO+B,kBAAoB,SAA2B6B,GACpD,IAAI16H,EAAQrD,KAAKs1H,OAAOjyH,MAExB,OAAQA,EAAM02G,MACZ,KAAKqb,EAAWC,UAAUmE,UACxB,OAAOx5H,KAAKy+H,UAAUV,GAExB,KAAK3I,EAAWC,UAAUqE,QACxB,OAAO15H,KAAK0+H,YAAYX,GAE1B,KAAK3I,EAAWC,UAAU+B,IAGxB,OAFAp3H,KAAKs1H,OAAO8E,UAEL,CACLrgB,KAAMmb,EAAOC,KAAKiC,IAClBl3H,MAAOmD,EAAMnD,MACbiwH,IAAKnwH,KAAKmwH,IAAI9sH,IAGlB,KAAK+xH,EAAWC,UAAUgC,MAGxB,OAFAr3H,KAAKs1H,OAAO8E,UAEL,CACLrgB,KAAMmb,EAAOC,KAAKkC,MAClBn3H,MAAOmD,EAAMnD,MACbiwH,IAAKnwH,KAAKmwH,IAAI9sH,IAGlB,KAAK+xH,EAAWC,UAAU33H,OAC1B,KAAK03H,EAAWC,UAAUyG,aACxB,OAAO97H,KAAK2+H,qBAEd,KAAKvJ,EAAWC,UAAUyB,KAGxB,OAFA92H,KAAKs1H,OAAO8E,UAEJ/2H,EAAMnD,OACZ,IAAK,OACH,MAAO,CACL65G,KAAMmb,EAAOC,KAAKmC,QAClBp3H,OAAO,EACPiwH,IAAKnwH,KAAKmwH,IAAI9sH,IAGlB,IAAK,QACH,MAAO,CACL02G,KAAMmb,EAAOC,KAAKmC,QAClBp3H,OAAO,EACPiwH,IAAKnwH,KAAKmwH,IAAI9sH,IAGlB,IAAK,OACH,MAAO,CACL02G,KAAMmb,EAAOC,KAAK13H,KAClB0yH,IAAKnwH,KAAKmwH,IAAI9sH,IAGlB,QACE,MAAO,CACL02G,KAAMmb,EAAOC,KAAKN,KAClB30H,MAAOmD,EAAMnD,MACbiwH,IAAKnwH,KAAKmwH,IAAI9sH,IAItB,KAAK+xH,EAAWC,UAAU4D,OACxB,IAAK8E,EACH,OAAO/9H,KAAKw9H,gBAMlB,MAAMx9H,KAAKg9H,YACb,EAEA7C,EAAOwE,mBAAqB,WAC1B,IAAIt7H,EAAQrD,KAAKs1H,OAAOjyH,MAIxB,OAFArD,KAAKs1H,OAAO8E,UAEL,CACLrgB,KAAMmb,EAAOC,KAAKz3H,OAClBwC,MAAOmD,EAAMnD,MACb0+H,MAAOv7H,EAAM02G,OAASqb,EAAWC,UAAUyG,aAC3C3L,IAAKnwH,KAAKmwH,IAAI9sH,GAElB,EAQA82H,EAAOsE,UAAY,SAAmBV,GACpC,IAAInO,EAAQ5vH,KAERwC,EAAQxC,KAAKs1H,OAAOjyH,MAMxB,MAAO,CACL02G,KAAMmb,EAAOC,KAAKoC,KAClBlqH,OAAQrN,KAAK6+H,IAAIzJ,EAAWC,UAAUmE,WAN7B,WACT,OAAO5J,EAAMsM,kBAAkB6B,EACjC,GAIyD3I,EAAWC,UAAUoE,WAC5EtJ,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAQA23H,EAAOuE,YAAc,SAAqBX,GACxC,IAAIe,EAAS9+H,KAETwC,EAAQxC,KAAKs1H,OAAOjyH,MAMxB,MAAO,CACL02G,KAAMmb,EAAOC,KAAKj2H,OAClBmiH,OAAQrhH,KAAK6+H,IAAIzJ,EAAWC,UAAUqE,SAN7B,WACT,OAAOoF,EAAOC,iBAAiBhB,EACjC,GAIuD3I,EAAWC,UAAUuE,SAC1EzJ,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAMA23H,EAAO4E,iBAAmB,SAA0BhB,GAClD,IAAIv7H,EAAQxC,KAAKs1H,OAAOjyH,MACpB2G,EAAOhK,KAAKu8H,YAEhB,OADAv8H,KAAKi8H,YAAY7G,EAAWC,UAAUh4H,OAC/B,CACL08G,KAAMmb,EAAOC,KAAKqC,aAClBxtH,KAAMA,EACN9J,MAAOF,KAAKk8H,kBAAkB6B,GAC9B5N,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAOA23H,EAAOiD,gBAAkB,SAAyBW,GAGhD,IAFA,IAAI3gB,EAAa,GAEVp9G,KAAK08H,KAAKtH,EAAWC,UAAUkE,KACpCnc,EAAW75G,KAAKvD,KAAKg/H,eAAejB,IAGtC,OAAO3gB,CACT,EAMA+c,EAAO6E,eAAiB,SAAwBjB,GAC9C,IAAIv7H,EAAQxC,KAAKs1H,OAAOjyH,MAExB,OADArD,KAAKi8H,YAAY7G,EAAWC,UAAUkE,IAC/B,CACLxf,KAAMmb,EAAOC,KAAKsC,UAClBztH,KAAMhK,KAAKu8H,YACX55G,UAAW3iB,KAAK89H,eAAeC,GAC/B5N,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAUA23H,EAAOgC,mBAAqB,WAC1B,IACIzvH,EADAlK,EAAQxC,KAAKs1H,OAAOjyH,MAexB,OAZIrD,KAAKy9H,oBAAoBrI,EAAWC,UAAUmE,YAChD9sH,EAAO1M,KAAKm8H,qBACZn8H,KAAKi8H,YAAY7G,EAAWC,UAAUoE,WACtC/sH,EAAO,CACLqtG,KAAMmb,EAAOC,KAAKwC,UAClBjrH,KAAMA,EACNyjH,IAAKnwH,KAAKmwH,IAAI3tH,KAGhBkK,EAAO1M,KAAKq+H,iBAGVr+H,KAAKy9H,oBAAoBrI,EAAWC,UAAU2D,MACzC,CACLjf,KAAMmb,EAAOC,KAAKyC,cAClBlrH,KAAMA,EACNyjH,IAAKnwH,KAAKmwH,IAAI3tH,IAIXkK,CACT,EAMAytH,EAAOkE,eAAiB,WACtB,IAAI77H,EAAQxC,KAAKs1H,OAAOjyH,MACxB,MAAO,CACL02G,KAAMmb,EAAOC,KAAKuC,WAClB1tH,KAAMhK,KAAKu8H,YACXpM,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAkBA23H,EAAO0C,0BAA4B,WAEjC,IAAIoC,EAAej/H,KAAK+8H,kBAAoB/8H,KAAKs1H,OAAO+E,YAAcr6H,KAAKs1H,OAAOjyH,MAElF,GAAI47H,EAAallB,OAASqb,EAAWC,UAAUyB,KAC7C,OAAQmI,EAAa/+H,OACnB,IAAK,SACH,OAAOF,KAAKk/H,wBAEd,IAAK,SACH,OAAOl/H,KAAKm/H,4BAEd,IAAK,OACH,OAAOn/H,KAAKo/H,4BAEd,IAAK,YACH,OAAOp/H,KAAKq/H,+BAEd,IAAK,QACH,OAAOr/H,KAAKs/H,2BAEd,IAAK,OACH,OAAOt/H,KAAKu/H,0BAEd,IAAK,QACH,OAAOv/H,KAAKw/H,iCAEd,IAAK,YACH,OAAOx/H,KAAKy/H,2BAIlB,MAAMz/H,KAAKg9H,WAAWiC,EACxB,EAEA9E,EAAO4C,gBAAkB,WACvB,OAAO/8H,KAAK08H,KAAKtH,EAAWC,UAAU33H,SAAWsC,KAAK08H,KAAKtH,EAAWC,UAAUyG,aAClF,EAMA3B,EAAOuF,iBAAmB,WACxB,GAAI1/H,KAAK+8H,kBACP,OAAO/8H,KAAK2+H,oBAEhB,EAMAxE,EAAO+E,sBAAwB,WAC7B,IAAI18H,EAAQxC,KAAKs1H,OAAOjyH,MACpB8tH,EAAcnxH,KAAK0/H,mBACvB1/H,KAAKu+H,cAAc,UACnB,IAAInhB,EAAap9G,KAAKo9H,iBAAgB,GAClCuC,EAAiB3/H,KAAKw8H,KAAKpH,EAAWC,UAAUqE,QAAS15H,KAAK4/H,6BAA8BxK,EAAWC,UAAUuE,SACrH,MAAO,CACL7f,KAAMmb,EAAOC,KAAK0C,kBAClB1G,YAAaA,EACb/T,WAAYA,EACZuiB,eAAgBA,EAChBxP,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAMA23H,EAAOyF,6BAA+B,WACpC,IAAIp9H,EAAQxC,KAAKs1H,OAAOjyH,MACpBsnB,EAAY3qB,KAAKk9H,qBACrBl9H,KAAKi8H,YAAY7G,EAAWC,UAAUh4H,OACtC,IAAIqP,EAAO1M,KAAKq+H,iBAChB,MAAO,CACLtkB,KAAMmb,EAAOC,KAAK2C,0BAClBntG,UAAWA,EACXje,KAAMA,EACNyjH,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAMA23H,EAAOgF,0BAA4B,WACjC,IAAI38H,EAAQxC,KAAKs1H,OAAOjyH,MACpB8tH,EAAcnxH,KAAK0/H,mBACvB1/H,KAAKu+H,cAAc,UACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZnf,EAAap9G,KAAKo9H,iBAAgB,GACtC,MAAO,CACLrjB,KAAMmb,EAAOC,KAAK4C,uBAClB5G,YAAaA,EACbnnH,KAAMA,EACNozG,WAAYA,EACZ+S,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAQA23H,EAAOiF,0BAA4B,WACjC,IAAI58H,EAAQxC,KAAKs1H,OAAOjyH,MACpB8tH,EAAcnxH,KAAK0/H,mBACvB1/H,KAAKu+H,cAAc,QACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZsD,EAAa7/H,KAAK8/H,4BAClB1iB,EAAap9G,KAAKo9H,iBAAgB,GAClC/b,EAASrhH,KAAK+/H,wBAClB,MAAO,CACLhmB,KAAMmb,EAAOC,KAAK6C,uBAClB7G,YAAaA,EACbnnH,KAAMA,EACN61H,WAAYA,EACZziB,WAAYA,EACZiE,OAAQA,EACR8O,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAQA23H,EAAO2F,0BAA4B,WACjC,IAAIE,EAEJ,IAAKhgI,KAAKm+H,sBAAsB,cAC9B,MAAO,GAGT,IAAiJ,KAAtG,QAArC6B,EAAkBhgI,KAAKs8H,gBAA0C,IAApB0D,OAA6B,EAASA,EAAgBC,oCAA8C,CACrJ,IAAIpxG,EAAQ,GAEZ7uB,KAAKy9H,oBAAoBrI,EAAWC,UAAU6D,KAE9C,GACErqG,EAAMtrB,KAAKvD,KAAKq+H,wBACTr+H,KAAKy9H,oBAAoBrI,EAAWC,UAAU6D,MAAQl5H,KAAK08H,KAAKtH,EAAWC,UAAUyB,OAE9F,OAAOjoG,CACT,CAEA,OAAO7uB,KAAKkgI,cAAc9K,EAAWC,UAAU6D,IAAKl5H,KAAKq+H,eAC3D,EAMAlE,EAAO4F,sBAAwB,WAC7B,IAAII,EAGJ,OAAwI,KAA7F,QAArCA,EAAkBngI,KAAKs8H,gBAA0C,IAApB6D,OAA6B,EAASA,EAAgBC,4BAAuCpgI,KAAK08H,KAAKtH,EAAWC,UAAUqE,UAAY15H,KAAKs1H,OAAO+E,YAAYtgB,OAASqb,EAAWC,UAAUuE,SAC/O55H,KAAKs1H,OAAO8E,UAEZp6H,KAAKs1H,OAAO8E,UAEL,IAGFp6H,KAAKs9H,aAAalI,EAAWC,UAAUqE,QAAS15H,KAAKqgI,qBAAsBjL,EAAWC,UAAUuE,QACzG,EAOAO,EAAOkG,qBAAuB,WAC5B,IAAI79H,EAAQxC,KAAKs1H,OAAOjyH,MACpB8tH,EAAcnxH,KAAK0/H,mBACnB11H,EAAOhK,KAAKu8H,YACZ93H,EAAOzE,KAAKsgI,oBAChBtgI,KAAKi8H,YAAY7G,EAAWC,UAAUh4H,OACtC,IAAIqP,EAAO1M,KAAKm8H,qBACZ/e,EAAap9G,KAAKo9H,iBAAgB,GACtC,MAAO,CACLrjB,KAAMmb,EAAOC,KAAKT,iBAClBvD,YAAaA,EACbnnH,KAAMA,EACN2Y,UAAWle,EACXiI,KAAMA,EACN0wG,WAAYA,EACZ+S,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAMA23H,EAAOmG,kBAAoB,WACzB,OAAOtgI,KAAKs9H,aAAalI,EAAWC,UAAU8D,QAASn5H,KAAKugI,mBAAoBnL,EAAWC,UAAU+D,QACvG,EAOAe,EAAOoG,mBAAqB,WAC1B,IAAI/9H,EAAQxC,KAAKs1H,OAAOjyH,MACpB8tH,EAAcnxH,KAAK0/H,mBACnB11H,EAAOhK,KAAKu8H,YAChBv8H,KAAKi8H,YAAY7G,EAAWC,UAAUh4H,OACtC,IACIm6F,EADA9qF,EAAO1M,KAAKm8H,qBAGZn8H,KAAKy9H,oBAAoBrI,EAAWC,UAAUiE,UAChD9hC,EAAex3F,KAAKk8H,mBAAkB,IAGxC,IAAI9e,EAAap9G,KAAKo9H,iBAAgB,GACtC,MAAO,CACLrjB,KAAMmb,EAAOC,KAAK8C,uBAClB9G,YAAaA,EACbnnH,KAAMA,EACN0C,KAAMA,EACN8qF,aAAcA,EACd4lB,WAAYA,EACZ+S,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAOA23H,EAAOkF,6BAA+B,WACpC,IAAI78H,EAAQxC,KAAKs1H,OAAOjyH,MACpB8tH,EAAcnxH,KAAK0/H,mBACvB1/H,KAAKu+H,cAAc,aACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZsD,EAAa7/H,KAAK8/H,4BAClB1iB,EAAap9G,KAAKo9H,iBAAgB,GAClC/b,EAASrhH,KAAK+/H,wBAClB,MAAO,CACLhmB,KAAMmb,EAAOC,KAAK+C,0BAClB/G,YAAaA,EACbnnH,KAAMA,EACN61H,WAAYA,EACZziB,WAAYA,EACZiE,OAAQA,EACR8O,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAOA23H,EAAOmF,yBAA2B,WAChC,IAAI98H,EAAQxC,KAAKs1H,OAAOjyH,MACpB8tH,EAAcnxH,KAAK0/H,mBACvB1/H,KAAKu+H,cAAc,SACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZnf,EAAap9G,KAAKo9H,iBAAgB,GAClCvuG,EAAQ7uB,KAAKwgI,wBACjB,MAAO,CACLzmB,KAAMmb,EAAOC,KAAKgD,sBAClBhH,YAAaA,EACbnnH,KAAMA,EACNozG,WAAYA,EACZvuF,MAAOA,EACPshG,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAQA23H,EAAOqG,sBAAwB,WAC7B,OAAOxgI,KAAKy9H,oBAAoBrI,EAAWC,UAAUiE,QAAUt5H,KAAKkgI,cAAc9K,EAAWC,UAAUsE,KAAM35H,KAAKq+H,gBAAkB,EACtI,EAOAlE,EAAOoF,wBAA0B,WAC/B,IAAI/8H,EAAQxC,KAAKs1H,OAAOjyH,MACpB8tH,EAAcnxH,KAAK0/H,mBACvB1/H,KAAKu+H,cAAc,QACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZnf,EAAap9G,KAAKo9H,iBAAgB,GAClC/vH,EAASrN,KAAKygI,4BAClB,MAAO,CACL1mB,KAAMmb,EAAOC,KAAKiD,qBAClBjH,YAAaA,EACbnnH,KAAMA,EACNozG,WAAYA,EACZ/vG,OAAQA,EACR8iH,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAMA23H,EAAOsG,0BAA4B,WACjC,OAAOzgI,KAAKs9H,aAAalI,EAAWC,UAAUqE,QAAS15H,KAAK0gI,yBAA0BtL,EAAWC,UAAUuE,QAC7G,EAQAO,EAAOuG,yBAA2B,WAChC,IAAIl+H,EAAQxC,KAAKs1H,OAAOjyH,MACpB8tH,EAAcnxH,KAAK0/H,mBACnB11H,EAAOhK,KAAKu8H,YACZnf,EAAap9G,KAAKo9H,iBAAgB,GACtC,MAAO,CACLrjB,KAAMmb,EAAOC,KAAKkD,sBAClBlH,YAAaA,EACbnnH,KAAMA,EACNozG,WAAYA,EACZ+S,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAOA23H,EAAOqF,+BAAiC,WACtC,IAAIh9H,EAAQxC,KAAKs1H,OAAOjyH,MACpB8tH,EAAcnxH,KAAK0/H,mBACvB1/H,KAAKu+H,cAAc,SACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZnf,EAAap9G,KAAKo9H,iBAAgB,GAClC/b,EAASrhH,KAAK2gI,6BAClB,MAAO,CACL5mB,KAAMmb,EAAOC,KAAKmD,6BAClBnH,YAAaA,EACbnnH,KAAMA,EACNozG,WAAYA,EACZiE,OAAQA,EACR8O,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAMA23H,EAAOwG,2BAA6B,WAClC,OAAO3gI,KAAKs9H,aAAalI,EAAWC,UAAUqE,QAAS15H,KAAKugI,mBAAoBnL,EAAWC,UAAUuE,QACvG,EAgBAO,EAAO2C,yBAA2B,WAChC,IAAImC,EAAej/H,KAAKs1H,OAAO+E,YAE/B,GAAI4E,EAAallB,OAASqb,EAAWC,UAAUyB,KAC7C,OAAQmI,EAAa/+H,OACnB,IAAK,SACH,OAAOF,KAAK4gI,uBAEd,IAAK,SACH,OAAO5gI,KAAK6gI,2BAEd,IAAK,OACH,OAAO7gI,KAAK8gI,2BAEd,IAAK,YACH,OAAO9gI,KAAK+gI,8BAEd,IAAK,QACH,OAAO/gI,KAAKghI,0BAEd,IAAK,OACH,OAAOhhI,KAAKihI,yBAEd,IAAK,QACH,OAAOjhI,KAAKkhI,gCAIlB,MAAMlhI,KAAKg9H,WAAWiC,EACxB,EAQA9E,EAAOyG,qBAAuB,WAC5B,IAAIp+H,EAAQxC,KAAKs1H,OAAOjyH,MACxBrD,KAAKu+H,cAAc,UACnBv+H,KAAKu+H,cAAc,UACnB,IAAInhB,EAAap9G,KAAKo9H,iBAAgB,GAClCuC,EAAiB3/H,KAAKs9H,aAAalI,EAAWC,UAAUqE,QAAS15H,KAAK4/H,6BAA8BxK,EAAWC,UAAUuE,SAE7H,GAA0B,IAAtBxc,EAAW77G,QAA0C,IAA1Bo+H,EAAep+H,OAC5C,MAAMvB,KAAKg9H,aAGb,MAAO,CACLjjB,KAAMmb,EAAOC,KAAKqD,iBAClBpb,WAAYA,EACZuiB,eAAgBA,EAChBxP,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAOA23H,EAAO0G,yBAA2B,WAChC,IAAIr+H,EAAQxC,KAAKs1H,OAAOjyH,MACxBrD,KAAKu+H,cAAc,UACnBv+H,KAAKu+H,cAAc,UACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZnf,EAAap9G,KAAKo9H,iBAAgB,GAEtC,GAA0B,IAAtBhgB,EAAW77G,OACb,MAAMvB,KAAKg9H,aAGb,MAAO,CACLjjB,KAAMmb,EAAOC,KAAKsD,sBAClBzuH,KAAMA,EACNozG,WAAYA,EACZ+S,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EASA23H,EAAO2G,yBAA2B,WAChC,IAAIt+H,EAAQxC,KAAKs1H,OAAOjyH,MACxBrD,KAAKu+H,cAAc,UACnBv+H,KAAKu+H,cAAc,QACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZsD,EAAa7/H,KAAK8/H,4BAClB1iB,EAAap9G,KAAKo9H,iBAAgB,GAClC/b,EAASrhH,KAAK+/H,wBAElB,GAA0B,IAAtBF,EAAWt+H,QAAsC,IAAtB67G,EAAW77G,QAAkC,IAAlB8/G,EAAO9/G,OAC/D,MAAMvB,KAAKg9H,aAGb,MAAO,CACLjjB,KAAMmb,EAAOC,KAAKuD,sBAClB1uH,KAAMA,EACN61H,WAAYA,EACZziB,WAAYA,EACZiE,OAAQA,EACR8O,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EASA23H,EAAO4G,4BAA8B,WACnC,IAAIv+H,EAAQxC,KAAKs1H,OAAOjyH,MACxBrD,KAAKu+H,cAAc,UACnBv+H,KAAKu+H,cAAc,aACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZsD,EAAa7/H,KAAK8/H,4BAClB1iB,EAAap9G,KAAKo9H,iBAAgB,GAClC/b,EAASrhH,KAAK+/H,wBAElB,GAA0B,IAAtBF,EAAWt+H,QAAsC,IAAtB67G,EAAW77G,QAAkC,IAAlB8/G,EAAO9/G,OAC/D,MAAMvB,KAAKg9H,aAGb,MAAO,CACLjjB,KAAMmb,EAAOC,KAAKwD,yBAClB3uH,KAAMA,EACN61H,WAAYA,EACZziB,WAAYA,EACZiE,OAAQA,EACR8O,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAQA23H,EAAO6G,wBAA0B,WAC/B,IAAIx+H,EAAQxC,KAAKs1H,OAAOjyH,MACxBrD,KAAKu+H,cAAc,UACnBv+H,KAAKu+H,cAAc,SACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZnf,EAAap9G,KAAKo9H,iBAAgB,GAClCvuG,EAAQ7uB,KAAKwgI,wBAEjB,GAA0B,IAAtBpjB,EAAW77G,QAAiC,IAAjBstB,EAAMttB,OACnC,MAAMvB,KAAKg9H,aAGb,MAAO,CACLjjB,KAAMmb,EAAOC,KAAKyD,qBAClB5uH,KAAMA,EACNozG,WAAYA,EACZvuF,MAAOA,EACPshG,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAQA23H,EAAO8G,uBAAyB,WAC9B,IAAIz+H,EAAQxC,KAAKs1H,OAAOjyH,MACxBrD,KAAKu+H,cAAc,UACnBv+H,KAAKu+H,cAAc,QACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZnf,EAAap9G,KAAKo9H,iBAAgB,GAClC/vH,EAASrN,KAAKygI,4BAElB,GAA0B,IAAtBrjB,EAAW77G,QAAkC,IAAlB8L,EAAO9L,OACpC,MAAMvB,KAAKg9H,aAGb,MAAO,CACLjjB,KAAMmb,EAAOC,KAAK0D,oBAClB7uH,KAAMA,EACNozG,WAAYA,EACZ/vG,OAAQA,EACR8iH,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAQA23H,EAAO+G,8BAAgC,WACrC,IAAI1+H,EAAQxC,KAAKs1H,OAAOjyH,MACxBrD,KAAKu+H,cAAc,UACnBv+H,KAAKu+H,cAAc,SACnB,IAAIv0H,EAAOhK,KAAKu8H,YACZnf,EAAap9G,KAAKo9H,iBAAgB,GAClC/b,EAASrhH,KAAK2gI,6BAElB,GAA0B,IAAtBvjB,EAAW77G,QAAkC,IAAlB8/G,EAAO9/G,OACpC,MAAMvB,KAAKg9H,aAGb,MAAO,CACLjjB,KAAMmb,EAAOC,KAAK2D,4BAClB9uH,KAAMA,EACNozG,WAAYA,EACZiE,OAAQA,EACR8O,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAOA23H,EAAOsF,yBAA2B,WAChC,IAAIj9H,EAAQxC,KAAKs1H,OAAOjyH,MACpB8tH,EAAcnxH,KAAK0/H,mBACvB1/H,KAAKu+H,cAAc,aACnBv+H,KAAKi8H,YAAY7G,EAAWC,UAAUkE,IACtC,IAAIvvH,EAAOhK,KAAKu8H,YACZ93H,EAAOzE,KAAKsgI,oBACZa,EAAanhI,KAAKm+H,sBAAsB,cAC5Cn+H,KAAKu+H,cAAc,MACnB,IAAInO,EAAYpwH,KAAKohI,0BACrB,MAAO,CACLrnB,KAAMmb,EAAOC,KAAKoD,qBAClBpH,YAAaA,EACbnnH,KAAMA,EACN2Y,UAAWle,EACX08H,WAAYA,EACZ/Q,UAAWA,EACXD,IAAKnwH,KAAKmwH,IAAI3tH,GAElB,EAQA23H,EAAOiH,wBAA0B,WAC/B,OAAOphI,KAAKkgI,cAAc9K,EAAWC,UAAUsE,KAAM35H,KAAKqhI,uBAC5D,EA8BAlH,EAAOkH,uBAAyB,WAC9B,IAAI7+H,EAAQxC,KAAKs1H,OAAOjyH,MACpB2G,EAAOhK,KAAKu8H,YAEhB,QAAyDp8H,IAArD02H,EAAmB9C,kBAAkB/pH,EAAK9J,OAC5C,OAAO8J,EAGT,MAAMhK,KAAKg9H,WAAWx6H,EACxB,EAOA23H,EAAOhK,IAAM,SAAayC,GACxB,IAAI0O,EAEJ,IAAyH,KAA9E,QAArCA,EAAkBthI,KAAKs8H,gBAA0C,IAApBgF,OAA6B,EAASA,EAAgBC,YACvG,OAAO,IAAIrL,EAAKxD,SAASE,EAAY5yH,KAAKs1H,OAAO2E,UAAWj6H,KAAKs1H,OAAO9lG,OAE5E,EAMA2qG,EAAOuC,KAAO,SAAc3iB,GAC1B,OAAO/5G,KAAKs1H,OAAOjyH,MAAM02G,OAASA,CACpC,EAOAogB,EAAO8B,YAAc,SAAqBliB,GACxC,IAAI12G,EAAQrD,KAAKs1H,OAAOjyH,MAExB,GAAIA,EAAM02G,OAASA,EAGjB,OAFA/5G,KAAKs1H,OAAO8E,UAEL/2H,EAGT,MAAM,EAAIw2H,EAAa3I,aAAalxH,KAAKs1H,OAAO9lG,OAAQnsB,EAAMb,MAAO,YAAY0kC,OAAOs6F,EAAiBznB,GAAO,YAAY7yE,OAAOu6F,EAAap+H,GAAQ,KAC1J,EAOA82H,EAAOsD,oBAAsB,SAA6B1jB,GACxD,IAAI12G,EAAQrD,KAAKs1H,OAAOjyH,MAExB,GAAIA,EAAM02G,OAASA,EAGjB,OAFA/5G,KAAKs1H,OAAO8E,UAEL/2H,CAIX,EAOA82H,EAAOoE,cAAgB,SAAuBr+H,GAC5C,IAAImD,EAAQrD,KAAKs1H,OAAOjyH,MAExB,GAAIA,EAAM02G,OAASqb,EAAWC,UAAUyB,MAAQzzH,EAAMnD,QAAUA,EAG9D,MAAM,EAAI25H,EAAa3I,aAAalxH,KAAKs1H,OAAO9lG,OAAQnsB,EAAMb,MAAO,aAAc0kC,OAAOhnC,EAAO,aAAcgnC,OAAOu6F,EAAap+H,GAAQ,MAF3IrD,KAAKs1H,OAAO8E,SAIhB,EAOAD,EAAOgE,sBAAwB,SAA+Bj+H,GAC5D,IAAImD,EAAQrD,KAAKs1H,OAAOjyH,MAExB,OAAIA,EAAM02G,OAASqb,EAAWC,UAAUyB,MAAQzzH,EAAMnD,QAAUA,IAC9DF,KAAKs1H,OAAO8E,WAEL,EAIX,EAMAD,EAAO6C,WAAa,SAAoB0E,GACtC,IAAIr+H,EAAQq+H,QAAyCA,EAAU1hI,KAAKs1H,OAAOjyH,MAC3E,OAAO,EAAIw2H,EAAa3I,aAAalxH,KAAKs1H,OAAO9lG,OAAQnsB,EAAMb,MAAO,cAAc0kC,OAAOu6F,EAAap+H,GAAQ,KAClH,EAQA82H,EAAO0E,IAAM,SAAa8C,EAAUC,EAASC,GAC3C7hI,KAAKi8H,YAAY0F,GAGjB,IAFA,IAAIrS,EAAQ,IAEJtvH,KAAKy9H,oBAAoBoE,IAC/BvS,EAAM/rH,KAAKq+H,EAAQj5H,KAAK3I,OAG1B,OAAOsvH,CACT,EASA6K,EAAOmD,aAAe,SAAsBqE,EAAUC,EAASC,GAC7D,GAAI7hI,KAAKy9H,oBAAoBkE,GAAW,CACtC,IAAIrS,EAAQ,GAEZ,GACEA,EAAM/rH,KAAKq+H,EAAQj5H,KAAK3I,cAChBA,KAAKy9H,oBAAoBoE,IAEnC,OAAOvS,CACT,CAEA,MAAO,EACT,EAQA6K,EAAOqC,KAAO,SAAcmF,EAAUC,EAASC,GAC7C7hI,KAAKi8H,YAAY0F,GACjB,IAAIrS,EAAQ,GAEZ,GACEA,EAAM/rH,KAAKq+H,EAAQj5H,KAAK3I,cAChBA,KAAKy9H,oBAAoBoE,IAEnC,OAAOvS,CACT,EAQA6K,EAAO+F,cAAgB,SAAuB4B,EAAeF,GAC3D5hI,KAAKy9H,oBAAoBqE,GACzB,IAAIxS,EAAQ,GAEZ,GACEA,EAAM/rH,KAAKq+H,EAAQj5H,KAAK3I,aACjBA,KAAKy9H,oBAAoBqE,IAElC,OAAOxS,CACT,EAEOvvH,CACT,CAv7C0B,GA+7C1B,SAAS0hI,EAAap+H,GACpB,IAAInD,EAAQmD,EAAMnD,MAClB,OAAOshI,EAAiBn+H,EAAM02G,OAAkB,MAAT75G,EAAgB,KAAMgnC,OAAOhnC,EAAO,KAAQ,GACrF,CAMA,SAASshI,EAAiBznB,GACxB,OAAO,EAAIub,EAAOyD,uBAAuBhf,GAAQ,IAAK7yE,OAAO6yE,EAAM,KAAQA,CAC7E,CAbA71G,EAAQnE,OAASA,gCC9gDjBqB,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQkyH,iBAYR,SAA0B5+E,GACxB,OAAO6+E,EAA2B7+E,IAASi/E,EAA2Bj/E,IAASm/E,EAA0Bn/E,EAC3G,EAbAtzC,EAAQmyH,2BAA6BA,EACrCnyH,EAAQoyH,gBAkBR,SAAyB9+E,GACvB,OAAOA,EAAKuiE,OAASmb,EAAOC,KAAKhB,OAAS38E,EAAKuiE,OAASmb,EAAOC,KAAKd,iBAAmB78E,EAAKuiE,OAASmb,EAAOC,KAAKb,eACnH,EAnBApwH,EAAQqyH,YAqBR,SAAqB/+E,GACnB,OAAOA,EAAKuiE,OAASmb,EAAOC,KAAKgC,UAAY3/E,EAAKuiE,OAASmb,EAAOC,KAAKiC,KAAO5/E,EAAKuiE,OAASmb,EAAOC,KAAKkC,OAAS7/E,EAAKuiE,OAASmb,EAAOC,KAAKz3H,QAAU85C,EAAKuiE,OAASmb,EAAOC,KAAKmC,SAAW9/E,EAAKuiE,OAASmb,EAAOC,KAAK13H,MAAQ+5C,EAAKuiE,OAASmb,EAAOC,KAAKN,MAAQr9E,EAAKuiE,OAASmb,EAAOC,KAAKoC,MAAQ//E,EAAKuiE,OAASmb,EAAOC,KAAKj2H,MAC5T,EAtBAgF,EAAQsyH,WAwBR,SAAoBh/E,GAClB,OAAOA,EAAKuiE,OAASmb,EAAOC,KAAKuC,YAAclgF,EAAKuiE,OAASmb,EAAOC,KAAKwC,WAAangF,EAAKuiE,OAASmb,EAAOC,KAAKyC,aAClH,EAzBA1zH,EAAQuyH,2BAA6BA,EACrCvyH,EAAQwyH,qBAAuBA,EAC/BxyH,EAAQyyH,0BAA4BA,EACpCzyH,EAAQ0yH,oBAAsBA,EAE9B,IAAI1B,EAAS,EAAQ,OAMrB,SAASmB,EAA2B7+E,GAClC,OAAOA,EAAKuiE,OAASmb,EAAOC,KAAK6B,sBAAwBx/E,EAAKuiE,OAASmb,EAAOC,KAAKf,mBACrF,CAcA,SAASqC,EAA2Bj/E,GAClC,OAAOA,EAAKuiE,OAASmb,EAAOC,KAAK0C,mBAAqBnB,EAAqBl/E,IAASA,EAAKuiE,OAASmb,EAAOC,KAAKoD,oBAChH,CAEA,SAAS7B,EAAqBl/E,GAC5B,OAAOA,EAAKuiE,OAASmb,EAAOC,KAAK4C,wBAA0BvgF,EAAKuiE,OAASmb,EAAOC,KAAK6C,wBAA0BxgF,EAAKuiE,OAASmb,EAAOC,KAAK+C,2BAA6B1gF,EAAKuiE,OAASmb,EAAOC,KAAKgD,uBAAyB3gF,EAAKuiE,OAASmb,EAAOC,KAAKiD,sBAAwB5gF,EAAKuiE,OAASmb,EAAOC,KAAKmD,4BACvS,CAEA,SAAS3B,EAA0Bn/E,GACjC,OAAOA,EAAKuiE,OAASmb,EAAOC,KAAKqD,kBAAoB5B,EAAoBp/E,EAC3E,CAEA,SAASo/E,EAAoBp/E,GAC3B,OAAOA,EAAKuiE,OAASmb,EAAOC,KAAKsD,uBAAyBjhF,EAAKuiE,OAASmb,EAAOC,KAAKuD,uBAAyBlhF,EAAKuiE,OAASmb,EAAOC,KAAKwD,0BAA4BnhF,EAAKuiE,OAASmb,EAAOC,KAAKyD,sBAAwBphF,EAAKuiE,OAASmb,EAAOC,KAAK0D,qBAAuBrhF,EAAKuiE,OAASmb,EAAOC,KAAK2D,2BAClS,gCCjDA13H,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQ4sH,cAQR,SAAuBhiH,GACrB,OAAOmiH,EAAoBniH,EAAS0gB,QAAQ,EAAI49F,EAAUiD,aAAavhH,EAAS0gB,OAAQ1gB,EAAStM,OACnG,EATA0B,EAAQ+sH,oBAAsBA,EAE9B,IAAI7D,EAAY,EAAQ,MAaxB,SAAS6D,EAAoBzhG,EAAQuyG,GACnC,IAAIC,EAAwBxyG,EAAOyyG,eAAetnH,OAAS,EACvD3P,EAAOk3H,EAAWF,GAAyBxyG,EAAOxkB,KAClDm3H,EAAYJ,EAAeryH,KAAO,EAClC0yH,EAAa5yG,EAAOyyG,eAAevyH,KAAO,EAC1C2yH,EAAUN,EAAeryH,KAAO0yH,EAChCE,EAAuC,IAAxBP,EAAeryH,KAAasyH,EAAwB,EACnEO,EAAYR,EAAepnH,OAAS2nH,EACpCE,EAAc,GAAGt7F,OAAO1X,EAAOxlB,KAAM,KAAKk9B,OAAOm7F,EAAS,KAAKn7F,OAAOq7F,EAAW,MACjFtpF,EAAQjuC,EAAKhG,MAAM,gBACnBy9H,EAAexpF,EAAMkpF,GAEzB,GAAIM,EAAalhI,OAAS,IAAK,CAK7B,IAJA,IAAImhI,EAAe/9H,KAAKk+E,MAAM0/C,EAAY,IACtCI,EAAmBJ,EAAY,GAC/BK,EAAW,GAENvhI,EAAI,EAAGA,EAAIohI,EAAalhI,OAAQF,GAAK,GAC5CuhI,EAASr/H,KAAKk/H,EAAaj+H,MAAMnD,EAAGA,EAAI,KAG1C,OAAOmhI,EAAcK,EAAmB,CAAC,CAAC,GAAG37F,OAAOm7F,GAAUO,EAAS,KAAK17F,OAAO07F,EAASp+H,MAAM,EAAGk+H,EAAe,GAAGv9H,KAAI,SAAU29H,GACnI,MAAO,CAAC,GAAIA,EACd,IAAI,CAAC,CAAC,IAAKZ,EAAWS,EAAmB,GAAK,KAAM,CAAC,GAAIC,EAASF,EAAe,MACnF,CAEA,OAAOF,EAAcK,EAAmB,CACxC,CAAC,GAAG37F,OAAOm7F,EAAU,GAAIppF,EAAMkpF,EAAY,IAAK,CAAC,GAAGj7F,OAAOm7F,GAAUI,GAAe,CAAC,GAAIP,EAAWK,EAAY,GAAK,KAAM,CAAC,GAAGr7F,OAAOm7F,EAAU,GAAIppF,EAAMkpF,EAAY,KACxK,CAEA,SAASU,EAAmB5pF,GAC1B,IAAI8pF,EAAgB9pF,EAAMh0C,QAAO,SAAU+9H,GAGzC,OAFQA,EAAK,QAEG7iI,IADL6iI,EAAK,EAElB,IACIC,EAASt+H,KAAKC,IAAI2B,MAAM5B,KAAMo+H,EAAc59H,KAAI,SAAU+9H,GAE5D,OADaA,EAAM,GACL3hI,MAChB,KACA,OAAOwhI,EAAc59H,KAAI,SAAU8qH,GACjC,IAUkB5rH,EAVd6C,EAAS+oH,EAAM,GACfvgH,EAAOugH,EAAM,GACjB,OASKiS,EATUe,GAQG5+H,EARK6C,GASG3F,QAAU8C,GATFqL,EAAO,MAAQA,EAAO,KAC1D,IAAGrK,KAAK,KACV,CAEA,SAAS68H,EAAWppC,GAClB,OAAOnuF,MAAMmuF,EAAM,GAAGzzF,KAAK,IAC7B,gCCpEAjE,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQ0xH,MAUR,SAAeuN,GACb,OAAO,EAAItN,EAASC,OAAOqN,EAAK,CAC9BC,MAAOC,GAEX,EAZA,IAAIxN,EAAW,EAAQ,OAEnBiE,EAAe,EAAQ,MAcvBuJ,EAAqB,CACvBC,KAAM,SAAc9rF,GAClB,OAAOA,EAAKt3C,KACd,EACAwtE,SAAU,SAAkBl2B,GAC1B,MAAO,IAAMA,EAAKxtC,IACpB,EAEAu5H,SAAU,SAAkB/rF,GAC1B,OAAOnyC,EAAKmyC,EAAKqyC,YAAa,QAAU,IAC1C,EACA25C,oBAAqB,SAA6BhsF,GAChD,IAAI7hB,EAAK6hB,EAAK7sB,UACV3gB,EAAOwtC,EAAKxtC,KACZy5H,EAAUppF,EAAK,IAAKh1C,EAAKmyC,EAAKsmE,oBAAqB,MAAO,KAC1DV,EAAa/3G,EAAKmyC,EAAK4lE,WAAY,KACnCV,EAAellE,EAAKklE,aAGxB,OAAQ1yG,GAASozG,GAAeqmB,GAAkB,UAAP9tG,EAAgCtwB,EAAK,CAACswB,EAAItwB,EAAK,CAAC2E,EAAMy5H,IAAWrmB,EAAYV,GAAe,KAA3EA,CAC9D,EACAgnB,mBAAoB,SAA4BV,GAC9C,IAAI/3G,EAAW+3G,EAAK/3G,SAChBve,EAAOs2H,EAAKt2H,KACZ8qF,EAAewrC,EAAKxrC,aACpB4lB,EAAa4lB,EAAK5lB,WACtB,OAAOnyF,EAAW,KAAOve,EAAO2tC,EAAK,MAAOm9C,GAAgBn9C,EAAK,IAAKh1C,EAAK+3G,EAAY,KACzF,EACAumB,aAAc,SAAsBT,GAElC,OAAOtE,EADUsE,EAAMrmB,WAEzB,EACA+mB,MAAO,SAAe3T,GACpB,IAAI3U,EAAQ2U,EAAM3U,MACdtxG,EAAOimH,EAAMjmH,KACbvF,EAAOwrH,EAAMttG,UACby6F,EAAa6S,EAAM7S,WACnBV,EAAeuT,EAAMvT,aACrBx1G,EAASmzC,EAAK,GAAIihE,EAAO,MAAQtxG,EACjC65H,EAAW38H,EAASmzC,EAAK,IAAKh1C,EAAKZ,EAAM,MAAO,KAMpD,OAJIo/H,EAAStiI,OA3CK,KA4ChBsiI,EAAW38H,EAASmzC,EAAK,MAAOjB,EAAO/zC,EAAKZ,EAAM,OAAQ,QAGrDY,EAAK,CAACw+H,EAAUx+H,EAAK+3G,EAAY,KAAMV,GAAe,IAC/D,EACAonB,SAAU,SAAkBC,GAG1B,OAFWA,EAAM/5H,KAEH,KADF+5H,EAAM7jI,KAEpB,EAEA8jI,eAAgB,SAAwBC,GAGtC,MAAO,MAFIA,EAAMj6H,KAEKqwC,EAAK,IAAKh1C,EADf4+H,EAAM7mB,WAC0B,KACnD,EACA8mB,eAAgB,SAAwBC,GACtC,IAAIroB,EAAgBqoB,EAAMroB,cACtBsB,EAAa+mB,EAAM/mB,WACnBV,EAAeynB,EAAMznB,aACzB,OAAOr3G,EAAK,CAAC,MAAOg1C,EAAK,MAAOyhE,GAAgBz2G,EAAK+3G,EAAY,KAAMV,GAAe,IACxF,EACA0nB,mBAAoB,SAA4BC,GAC9C,IAAIr6H,EAAOq6H,EAAMr6H,KACb8xG,EAAgBuoB,EAAMvoB,cACtBgC,EAAsBumB,EAAMvmB,oBAC5BV,EAAainB,EAAMjnB,WACnBV,EAAe2nB,EAAM3nB,aACzB,MAEE,YAAYx1E,OAAOl9B,GAAMk9B,OAAOmT,EAAK,IAAKh1C,EAAKy4G,EAAqB,MAAO,KAAM,KAAO,MAAM52E,OAAO40E,EAAe,KAAK50E,OAAOmT,EAAK,GAAIh1C,EAAK+3G,EAAY,KAAM,MAAQV,CAE5K,EAEA4nB,SAAU,SAAkBC,GAE1B,OADYA,EAAMrkI,KAEpB,EACAskI,WAAY,SAAoBC,GAE9B,OADYA,EAAMvkI,KAEpB,EACAwkI,YAAa,SAAqBC,EAAQlkI,GACxC,IAAIP,EAAQykI,EAAOzkI,MAEnB,OADoBykI,EAAO/F,OACJ,EAAI9E,EAAavG,kBAAkBrzH,EAAe,gBAARO,EAAwB,GAAK,MAAQuB,KAAKC,UAAU/B,EACvH,EACA0kI,aAAc,SAAsBC,GAElC,OADYA,EAAO3kI,MACJ,OAAS,OAC1B,EACA4kI,UAAW,WACT,MAAO,MACT,EACAC,UAAW,SAAmBC,GAE5B,OADYA,EAAO9kI,KAErB,EACA+kI,UAAW,SAAmBC,GAE5B,MAAO,IAAM7/H,EADA6/H,EAAO73H,OACM,MAAQ,GACpC,EACA83H,YAAa,SAAqBC,GAEhC,MAAO,IAAM//H,EADA+/H,EAAO/jB,OACM,MAAQ,GACpC,EACAgkB,YAAa,SAAqBC,GAGhC,OAFWA,EAAOt7H,KAEJ,KADFs7H,EAAOplI,KAErB,EAEAqlI,UAAW,SAAmBC,GAG5B,MAAO,IAFIA,EAAOx7H,KAEEqwC,EAAK,IAAKh1C,EADnBmgI,EAAO7iH,UACuB,MAAO,IAClD,EAEA8iH,UAAW,SAAmBC,GAE5B,OADWA,EAAO17H,IAEpB,EACA27H,SAAU,SAAkBC,GAE1B,MAAO,IADIA,EAAOl5H,KACE,GACtB,EACAm5H,YAAa,SAAqBC,GAEhC,OADWA,EAAOp5H,KACJ,GAChB,EAEAq5H,iBAAkBC,GAAe,SAAUC,GACzC,IAAI7oB,EAAa6oB,EAAO7oB,WACpBuiB,EAAiBsG,EAAOtG,eAC5B,OAAOt6H,EAAK,CAAC,SAAUA,EAAK+3G,EAAY,KAAMwhB,EAAMe,IAAkB,IACxE,IACAuG,wBAAyB,SAAiCC,GAGxD,OAFgBA,EAAOx7G,UAEJ,KADRw7G,EAAOz5H,IAEpB,EACA05H,qBAAsBJ,GAAe,SAAUK,GAG7C,OAAOhhI,EAAK,CAAC,SAFFghI,EAAOr8H,KAEW3E,EADZghI,EAAOjpB,WACsB,MAAO,IACvD,IACAkpB,qBAAsBN,GAAe,SAAUO,GAC7C,IAAIv8H,EAAOu8H,EAAOv8H,KACd61H,EAAa0G,EAAO1G,WACpBziB,EAAampB,EAAOnpB,WACpBiE,EAASklB,EAAOllB,OACpB,OAAOh8G,EAAK,CAAC,OAAQ2E,EAAMqwC,EAAK,cAAeh1C,EAAKw6H,EAAY,QAASx6H,EAAK+3G,EAAY,KAAMwhB,EAAMvd,IAAU,IAClH,IACAmlB,gBAAiBR,GAAe,SAAUS,GACxC,IAAIz8H,EAAOy8H,EAAOz8H,KACdvF,EAAOgiI,EAAO9jH,UACdjW,EAAO+5H,EAAO/5H,KACd0wG,EAAaqpB,EAAOrpB,WACxB,OAAOpzG,GAAQ08H,EAAkBjiI,GAAQ41C,EAAK,MAAOjB,EAAO/zC,EAAKZ,EAAM,OAAQ,OAAS41C,EAAK,IAAKh1C,EAAKZ,EAAM,MAAO,MAAQ,KAAOiI,EAAO2tC,EAAK,IAAKh1C,EAAK+3G,EAAY,KACvK,IACAupB,qBAAsBX,GAAe,SAAUY,GAC7C,IAAI58H,EAAO48H,EAAO58H,KACd0C,EAAOk6H,EAAOl6H,KACd8qF,EAAeovC,EAAOpvC,aACtB4lB,EAAawpB,EAAOxpB,WACxB,OAAO/3G,EAAK,CAAC2E,EAAO,KAAO0C,EAAM2tC,EAAK,KAAMm9C,GAAenyF,EAAK+3G,EAAY,MAAO,IACrF,IACAypB,wBAAyBb,GAAe,SAAUc,GAChD,IAAI98H,EAAO88H,EAAO98H,KACd61H,EAAaiH,EAAOjH,WACpBziB,EAAa0pB,EAAO1pB,WACpBiE,EAASylB,EAAOzlB,OACpB,OAAOh8G,EAAK,CAAC,YAAa2E,EAAMqwC,EAAK,cAAeh1C,EAAKw6H,EAAY,QAASx6H,EAAK+3G,EAAY,KAAMwhB,EAAMvd,IAAU,IACvH,IACA0lB,oBAAqBf,GAAe,SAAUgB,GAC5C,IAAIh9H,EAAOg9H,EAAOh9H,KACdozG,EAAa4pB,EAAO5pB,WACpBvuF,EAAQm4G,EAAOn4G,MACnB,OAAOxpB,EAAK,CAAC,QAAS2E,EAAM3E,EAAK+3G,EAAY,KAAMvuF,GAA0B,IAAjBA,EAAMttB,OAAe,KAAO8D,EAAKwpB,EAAO,OAAS,IAAK,IACpH,IACAo4G,mBAAoBjB,GAAe,SAAUkB,GAC3C,IAAIl9H,EAAOk9H,EAAOl9H,KACdozG,EAAa8pB,EAAO9pB,WACpB/vG,EAAS65H,EAAO75H,OACpB,OAAOhI,EAAK,CAAC,OAAQ2E,EAAM3E,EAAK+3G,EAAY,KAAMwhB,EAAMvxH,IAAU,IACpE,IACA85H,oBAAqBnB,GAAe,SAAUoB,GAG5C,OAAO/hI,EAAK,CAFD+hI,EAAOp9H,KAEC3E,EADF+hI,EAAOhqB,WACY,MAAO,IAC7C,IACAiqB,0BAA2BrB,GAAe,SAAUsB,GAClD,IAAIt9H,EAAOs9H,EAAOt9H,KACdozG,EAAakqB,EAAOlqB,WACpBiE,EAASimB,EAAOjmB,OACpB,OAAOh8G,EAAK,CAAC,QAAS2E,EAAM3E,EAAK+3G,EAAY,KAAMwhB,EAAMvd,IAAU,IACrE,IACAkmB,oBAAqBvB,GAAe,SAAUwB,GAC5C,IAAIx9H,EAAOw9H,EAAOx9H,KACdvF,EAAO+iI,EAAO7kH,UACdw+G,EAAaqG,EAAOrG,WACpB/Q,EAAYoX,EAAOpX,UACvB,MAAO,cAAgBpmH,GAAQ08H,EAAkBjiI,GAAQ41C,EAAK,MAAOjB,EAAO/zC,EAAKZ,EAAM,OAAQ,OAAS41C,EAAK,IAAKh1C,EAAKZ,EAAM,MAAO,OAAS08H,EAAa,cAAgB,IAAM,OAAS97H,EAAK+qH,EAAW,MAC3M,IACAqX,gBAAiB,SAAyBC,GACxC,IAAItqB,EAAasqB,EAAOtqB,WACpBuiB,EAAiB+H,EAAO/H,eAC5B,OAAOt6H,EAAK,CAAC,gBAAiBA,EAAK+3G,EAAY,KAAMwhB,EAAMe,IAAkB,IAC/E,EACAgI,oBAAqB,SAA6BC,GAGhD,OAAOviI,EAAK,CAAC,gBAFFuiI,EAAO59H,KAEkB3E,EADnBuiI,EAAOxqB,WAC6B,MAAO,IAC9D,EACAyqB,oBAAqB,SAA6BC,GAChD,IAAI99H,EAAO89H,EAAO99H,KACd61H,EAAaiI,EAAOjI,WACpBziB,EAAa0qB,EAAO1qB,WACpBiE,EAASymB,EAAOzmB,OACpB,OAAOh8G,EAAK,CAAC,cAAe2E,EAAMqwC,EAAK,cAAeh1C,EAAKw6H,EAAY,QAASx6H,EAAK+3G,EAAY,KAAMwhB,EAAMvd,IAAU,IACzH,EACA0mB,uBAAwB,SAAgCC,GACtD,IAAIh+H,EAAOg+H,EAAOh+H,KACd61H,EAAamI,EAAOnI,WACpBziB,EAAa4qB,EAAO5qB,WACpBiE,EAAS2mB,EAAO3mB,OACpB,OAAOh8G,EAAK,CAAC,mBAAoB2E,EAAMqwC,EAAK,cAAeh1C,EAAKw6H,EAAY,QAASx6H,EAAK+3G,EAAY,KAAMwhB,EAAMvd,IAAU,IAC9H,EACA4mB,mBAAoB,SAA4BC,GAC9C,IAAIl+H,EAAOk+H,EAAOl+H,KACdozG,EAAa8qB,EAAO9qB,WACpBvuF,EAAQq5G,EAAOr5G,MACnB,OAAOxpB,EAAK,CAAC,eAAgB2E,EAAM3E,EAAK+3G,EAAY,KAAMvuF,GAA0B,IAAjBA,EAAMttB,OAAe,KAAO8D,EAAKwpB,EAAO,OAAS,IAAK,IAC3H,EACAs5G,kBAAmB,SAA2BC,GAC5C,IAAIp+H,EAAOo+H,EAAOp+H,KACdozG,EAAagrB,EAAOhrB,WACpB/vG,EAAS+6H,EAAO/6H,OACpB,OAAOhI,EAAK,CAAC,cAAe2E,EAAM3E,EAAK+3G,EAAY,KAAMwhB,EAAMvxH,IAAU,IAC3E,EACAg7H,yBAA0B,SAAkCC,GAC1D,IAAIt+H,EAAOs+H,EAAOt+H,KACdozG,EAAakrB,EAAOlrB,WACpBiE,EAASinB,EAAOjnB,OACpB,OAAOh8G,EAAK,CAAC,eAAgB2E,EAAM3E,EAAK+3G,EAAY,KAAMwhB,EAAMvd,IAAU,IAC5E,GAGF,SAAS2kB,EAAe5pF,GACtB,OAAO,SAAU5E,GACf,OAAOnyC,EAAK,CAACmyC,EAAK25E,YAAa/0E,EAAG5E,IAAQ,KAC5C,CACF,CAOA,SAASnyC,EAAKkjI,GACZ,IAAIC,EAEA5gE,EAAYjlD,UAAUphB,OAAS,QAAsBpB,IAAjBwiB,UAAU,GAAmBA,UAAU,GAAK,GACpF,OAEwB,QAFhB6lH,EAAwBD,aAA+C,EAASA,EAAWtjI,QAAO,SAAU8iC,GAClH,OAAOA,CACT,IAAG1iC,KAAKuiE,UAAkD,IAA1B4gE,EAAmCA,EAAwB,EAC7F,CAOA,SAAS5J,EAAMz+G,GACb,OAAOk6B,EAAK,MAAOjB,EAAO/zC,EAAK8a,EAAO,OAAQ,MAChD,CAMA,SAASk6B,EAAK73C,EAAOimI,GAEnB,OAAsB,MAAfA,GAAuC,KAAhBA,EAAqBjmI,EAAQimI,GADjD9lH,UAAUphB,OAAS,QAAsBpB,IAAjBwiB,UAAU,GAAmBA,UAAU,GAAK,IACC,EACjF,CAEA,SAASy2B,EAAO/0C,GACd,OAAOg2C,EAAK,KAAMh2C,EAAI6J,QAAQ,MAAO,QACvC,CAEA,SAASw6H,EAAYrkI,GACnB,OAA8B,IAAvBA,EAAIyF,QAAQ,KACrB,CAEA,SAAS48H,EAAkB6B,GACzB,OAAqB,MAAdA,GAAsBA,EAAWpqG,KAAKuqG,EAC/C,gCC/TAtnI,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQm4H,SA2DR,SAAkB7sG,GAChB,OAAO,EAAIm5G,EAAY59F,SAASvb,EAAQylG,EAC1C,EA5DA/wH,EAAQ+wH,YAAS,EAEjB,IAAI9H,EAAW,EAAQ,OAEnByb,EAAWpX,EAAuB,EAAQ,QAE1CqX,EAAarX,EAAuB,EAAQ,QAE5CmX,EAAcnX,EAAuB,EAAQ,QAEjD,SAASA,EAAuB3nH,GAAO,OAAOA,GAAOA,EAAIxB,WAAawB,EAAM,CAAEkhC,QAASlhC,EAAO,CAE9F,SAAS4jH,EAAkBtwG,EAAQuwG,GAAS,IAAK,IAAIrsH,EAAI,EAAGA,EAAIqsH,EAAMnsH,OAAQF,IAAK,CAAE,IAAIssH,EAAaD,EAAMrsH,GAAIssH,EAAWtmH,WAAasmH,EAAWtmH,aAAc,EAAOsmH,EAAWplH,cAAe,EAAU,UAAWolH,IAAYA,EAAWrlH,UAAW,GAAMlH,OAAO+C,eAAegZ,EAAQwwG,EAAWltH,IAAKktH,EAAa,CAAE,CAW5T,IAAIsH,EAAsB,WACxB,SAASA,EAAOjqH,GACd,IAAIhB,EAAO2Y,UAAUphB,OAAS,QAAsBpB,IAAjBwiB,UAAU,GAAmBA,UAAU,GAAK,kBAC3Es/G,EAAiBt/G,UAAUphB,OAAS,QAAsBpB,IAAjBwiB,UAAU,GAAmBA,UAAU,GAAK,CACvFjT,KAAM,EACNiL,OAAQ,GAEM,iBAAT3P,IAAqB,EAAI69H,EAAW99F,SAAS,EAAG,oCAAoC7D,QAAO,EAAI0hG,EAAS79F,SAAS//B,GAAO,MAC/HhL,KAAKgL,KAAOA,EACZhL,KAAKgK,KAAOA,EACZhK,KAAKiiI,eAAiBA,EACtBjiI,KAAKiiI,eAAevyH,KAAO,IAAK,EAAIm5H,EAAW99F,SAAS,EAAG,6DAC3D/qC,KAAKiiI,eAAetnH,OAAS,IAAK,EAAIkuH,EAAW99F,SAAS,EAAG,8DAC/D,CAtBF,IAAsBkkF,EAAaC,EAgCjC,OAhCoBD,EAyBPgG,GAzBoB/F,EAyBZ,CAAC,CACpBzuH,IAAK0sH,EAASwD,qBACdrpH,IAAK,WACH,MAAO,QACT,MA7B0EmmH,EAAkBwB,EAAYvtH,UAAWwtH,GAgC9G+F,CACT,CAxB0B,GAgC1B/wH,EAAQ+wH,OAASA,8BC3DjB7zH,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQmxH,eAAY,EAMpB,IAAIA,EAAYj0H,OAAOsoB,OAAO,CAC5BswG,IAAK,QACLM,IAAK,QACLtB,KAAM,IACNC,OAAQ,IACRC,IAAK,IACLC,QAAS,IACTC,QAAS,IACTC,OAAQ,MACRh8H,MAAO,IACPi8H,OAAQ,IACRC,GAAI,IACJC,UAAW,IACXC,UAAW,IACXC,QAAS,IACTC,KAAM,IACNC,QAAS,IACT9C,KAAM,OACNM,IAAK,MACLC,MAAO,QACP35H,OAAQ,SACRo+H,aAAc,cACdrB,QAAS,YAMXv2H,EAAQmxH,UAAYA,gCCrCpBj0H,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQ4xH,MAqJR,SAAegT,EAAMC,GACnB,IAAIC,EAAcrmH,UAAUphB,OAAS,QAAsBpB,IAAjBwiB,UAAU,GAAmBA,UAAU,GAAKsmH,EAGlFtoI,OAAQR,EACR+oI,EAAUv+H,MAAMC,QAAQk+H,GACxB3nI,EAAO,CAAC2nI,GACR3qH,GAAS,EACTgrH,EAAQ,GACR3xF,OAAOr3C,EACPM,OAAMN,EACNsD,OAAStD,EACT2qB,EAAO,GACPs+G,EAAY,GACZC,EAAUP,EAGd,EAAG,CAED,IAAIQ,IADJnrH,IAC0Bhd,EAAKI,OAC3BgoI,EAAWD,GAA8B,IAAjBH,EAAM5nI,OAElC,GAAI+nI,EAAW,CAKb,GAJA7oI,EAA2B,IAArB2oI,EAAU7nI,YAAepB,EAAY2qB,EAAKA,EAAKvpB,OAAS,GAC9Di2C,EAAO/zC,EACPA,EAAS2lI,EAAU5lI,MAEf+lI,EAAU,CACZ,GAAIL,EACF1xF,EAAOA,EAAKhzC,YACP,CAGL,IAFA,IAAIiK,EAAQ,CAAC,EAEJuhH,EAAM,EAAGwZ,EAAgBpoI,OAAOD,KAAKq2C,GAAOw4E,EAAMwZ,EAAcjoI,OAAQyuH,IAAO,CACtF,IAAIjtH,EAAIymI,EAAcxZ,GACtBvhH,EAAM1L,GAAKy0C,EAAKz0C,EAClB,CAEAy0C,EAAO/oC,CACT,CAIA,IAFA,IAAIg7H,EAAa,EAERC,EAAK,EAAGA,EAAKP,EAAM5nI,OAAQmoI,IAAM,CACxC,IAAIC,EAAUR,EAAMO,GAAI,GACpBE,EAAYT,EAAMO,GAAI,GAEtBR,IACFS,GAAWF,GAGTP,GAAyB,OAAdU,GACbpyF,EAAK10B,OAAO6mH,EAAS,GACrBF,KAEAjyF,EAAKmyF,GAAWC,CAEpB,CACF,CAEAzrH,EAAQxd,EAAMwd,MACdhd,EAAOR,EAAMQ,KACbgoI,EAAQxoI,EAAMwoI,MACdD,EAAUvoI,EAAMuoI,QAChBvoI,EAAQA,EAAM02F,IAChB,KAAO,CAIL,GAHA52F,EAAMgD,EAASylI,EAAU/qH,EAAQhd,EAAKgd,QAAShe,EAG3Cq3C,OAFJA,EAAO/zC,EAASA,EAAOhD,GAAO4oI,GAG5B,SAGE5lI,GACFqnB,EAAKvnB,KAAK9C,EAEd,CAEA,IA2CMopI,EA3CFhmI,OAAS,EAEb,IAAK8G,MAAMC,QAAQ4sC,GAAO,CACxB,KAAK,EAAI0+E,EAAK3D,QAAQ/6E,GACpB,MAAM,IAAIz1C,MAAM,qBAAqBmlC,QAAO,EAAI0hG,EAAS79F,SAASyM,GAAO,MAG3E,IAAIsyF,EAAU9T,EAAW+S,EAASvxF,EAAKuiE,KAAMuvB,GAE7C,GAAIQ,EAAS,CAGX,IAFAjmI,EAASimI,EAAQnhI,KAAKogI,EAASvxF,EAAM/2C,EAAKgD,EAAQqnB,EAAMs+G,MAEzCnT,EACb,MAGF,IAAe,IAAXpyH,GACF,IAAKylI,EAAW,CACdx+G,EAAKtnB,MACL,QACF,OACK,QAAerD,IAAX0D,IACTslI,EAAM5lI,KAAK,CAAC9C,EAAKoD,KAEZylI,GAAW,CACd,KAAI,EAAIpT,EAAK3D,QAAQ1uH,GAEd,CACLinB,EAAKtnB,MACL,QACF,CAJEg0C,EAAO3zC,CAKX,CAEJ,CACF,MAEe1D,IAAX0D,GAAwB0lI,GAC1BJ,EAAM5lI,KAAK,CAAC9C,EAAK+2C,IAGf8xF,EACFx+G,EAAKtnB,OAIL7C,EAAQ,CACNuoI,QAASA,EACT/qH,MAAOA,EACPhd,KAAMA,EACNgoI,MAAOA,EACP9xC,KAAM12F,GAGRQ,GADA+nI,EAAUv+H,MAAMC,QAAQ4sC,IACPA,EAA4D,QAApDqyF,EAAwBb,EAAYxxF,EAAKuiE,aAA6C,IAA1B8vB,EAAmCA,EAAwB,GAChJ1rH,GAAS,EACTgrH,EAAQ,GAEJ1lI,GACF2lI,EAAU7lI,KAAKE,GAGjBA,EAAS+zC,EAEb,YAAmBr3C,IAAVQ,GAMT,OAJqB,IAAjBwoI,EAAM5nI,SACR8nI,EAAUF,EAAMA,EAAM5nI,OAAS,GAAG,IAG7B8nI,CACT,EAxSAnlI,EAAQ6xH,gBAiTR,SAAyBgU,GACvB,IAAIC,EAAW,IAAIr/H,MAAMo/H,EAASxoI,QAClC,MAAO,CACL0oI,MAAO,SAAezyF,GACpB,IAAK,IAAIn2C,EAAI,EAAGA,EAAI0oI,EAASxoI,OAAQF,IACnC,GAAmB,MAAf2oI,EAAS3oI,GAAY,CACvB,IAAI44D,EAAK+7D,EAAW+T,EAAS1oI,GAAIm2C,EAAKuiE,MAEtC,GAEA,GAAI9/C,EAAI,CACN,IAAIp2D,EAASo2D,EAAG1zD,MAAMwjI,EAAS1oI,GAAIshB,WAEnC,IAAe,IAAX9e,EACFmmI,EAAS3oI,GAAKm2C,OACT,GAAI3zC,IAAWoyH,EACpB+T,EAAS3oI,GAAK40H,OACT,QAAe91H,IAAX0D,EACT,OAAOA,CAEX,CACF,CAEJ,EACAu/H,MAAO,SAAe5rF,GACpB,IAAK,IAAIn2C,EAAI,EAAGA,EAAI0oI,EAASxoI,OAAQF,IACnC,GAAmB,MAAf2oI,EAAS3oI,GAAY,CACvB,IAAI44D,EAAK+7D,EAAW+T,EAAS1oI,GAAIm2C,EAAKuiE,MAEtC,GAEA,GAAI9/C,EAAI,CACN,IAAIp2D,EAASo2D,EAAG1zD,MAAMwjI,EAAS1oI,GAAIshB,WAEnC,GAAI9e,IAAWoyH,EACb+T,EAAS3oI,GAAK40H,OACT,QAAe91H,IAAX0D,IAAmC,IAAXA,EACjC,OAAOA,CAEX,CACF,MAAWmmI,EAAS3oI,KAAOm2C,IACzBwyF,EAAS3oI,GAAK,KAGpB,EAEJ,EA9VA6C,EAAQ8xH,WAAaA,EACrB9xH,EAAQ+xH,MAAQ/xH,EAAQ+kI,uBAAoB,EAE5C,IAIgCp/H,EAJ5B++H,GAI4B/+H,EAJM,EAAQ,SAIOA,EAAIxB,WAAawB,EAAM,CAAEkhC,QAASlhC,GAFnFqsH,EAAO,EAAQ,OAIf+S,EAAoB,CACtB3F,KAAM,GACNC,SAAU,CAAC,eACXC,oBAAqB,CAAC,OAAQ,sBAAuB,aAAc,gBACnEE,mBAAoB,CAAC,WAAY,OAAQ,eAAgB,cACzDh2D,SAAU,CAAC,QACXi2D,aAAc,CAAC,cACfC,MAAO,CAAC,QAAS,OAAQ,YAAa,aAAc,gBACpDE,SAAU,CAAC,OAAQ,SACnBE,eAAgB,CAAC,OAAQ,cACzBE,eAAgB,CAAC,gBAAiB,aAAc,gBAChDE,mBAAoB,CAAC,OAErB,sBAAuB,gBAAiB,aAAc,gBACtDE,SAAU,GACVE,WAAY,GACZE,YAAa,GACbE,aAAc,GACdE,UAAW,GACXC,UAAW,GACXE,UAAW,CAAC,UACZE,YAAa,CAAC,UACdE,YAAa,CAAC,OAAQ,SACtBE,UAAW,CAAC,OAAQ,aACpBE,UAAW,CAAC,QACZE,SAAU,CAAC,QACXE,YAAa,CAAC,QACdE,iBAAkB,CAAC,cAAe,aAAc,kBAChDG,wBAAyB,CAAC,QAC1BE,qBAAsB,CAAC,cAAe,OAAQ,cAC9CE,qBAAsB,CAAC,cAAe,OAAQ,aAAc,aAAc,UAC1EE,gBAAiB,CAAC,cAAe,OAAQ,YAAa,OAAQ,cAC9DG,qBAAsB,CAAC,cAAe,OAAQ,OAAQ,eAAgB,cACtEE,wBAAyB,CAAC,cAAe,OAAQ,aAAc,aAAc,UAC7EE,oBAAqB,CAAC,cAAe,OAAQ,aAAc,SAC3DE,mBAAoB,CAAC,cAAe,OAAQ,aAAc,UAC1DE,oBAAqB,CAAC,cAAe,OAAQ,cAC7CE,0BAA2B,CAAC,cAAe,OAAQ,aAAc,UACjEE,oBAAqB,CAAC,cAAe,OAAQ,YAAa,aAC1DE,gBAAiB,CAAC,aAAc,kBAChCE,oBAAqB,CAAC,OAAQ,cAC9BE,oBAAqB,CAAC,OAAQ,aAAc,aAAc,UAC1DE,uBAAwB,CAAC,OAAQ,aAAc,aAAc,UAC7DE,mBAAoB,CAAC,OAAQ,aAAc,SAC3CE,kBAAmB,CAAC,OAAQ,aAAc,UAC1CE,yBAA0B,CAAC,OAAQ,aAAc,WAEnDnkI,EAAQ+kI,kBAAoBA,EAC5B,IAAIhT,EAAQ70H,OAAOsoB,OAAO,CAAC,GA4S3B,SAASssG,EAAW+S,EAAShvB,EAAMuvB,GACjC,IAAIY,EAAcnB,EAAQhvB,GAE1B,GAAImwB,EAAa,CACf,IAAKZ,GAAoC,mBAAhBY,EAEvB,OAAOA,EAGT,IAAIC,EAAsBb,EAAYY,EAAY9G,MAAQ8G,EAAYD,MAEtE,GAAmC,mBAAxBE,EAET,OAAOA,CAEX,KAAO,CACL,IAAIC,EAAkBd,EAAYP,EAAQ3F,MAAQ2F,EAAQkB,MAE1D,GAAIG,EAAiB,CACnB,GAA+B,mBAApBA,EAET,OAAOA,EAGT,IAAIC,EAAsBD,EAAgBrwB,GAE1C,GAAmC,mBAAxBswB,EAET,OAAOA,CAEX,CACF,CACF,CApPAnmI,EAAQ+xH,MAAQA,8BCtJhB70H,OAAO+C,eAAeD,EAAS,aAAc,CAC3ChE,OAAO,IAETgE,EAAQysH,qBAAuBzsH,EAAQomI,sBAAwBpmI,EAAQqmI,qBAAkB,EAGzF,IAAIA,EAAoC,mBAAXhhI,QAA4C,MAAnBA,OAAOe,SAAmBf,OAAOe,SAAW,aAGlGpG,EAAQqmI,gBAAkBA,EAC1B,IAAID,EAA0C,mBAAX/gI,QAAiD,MAAxBA,OAAOihI,cAAwBjhI,OAAOihI,cAAgB,kBAElHtmI,EAAQomI,sBAAwBA,EAChC,IAAI3Z,EAAyC,mBAAXpnH,QAA+C,MAAtBA,OAAOkhI,YAAsBlhI,OAAOkhI,YAAc,gBAC7GvmI,EAAQysH,qBAAuBA,mBChB/B,IAAIvuG,EAAOle,EAEXke,EAAKsoH,MAAQ,EAAQ,OACrBtoH,EAAKuoH,OAAS,EAAQ,OACtBvoH,EAAKwoH,IAAM,EAAQ,OACnBxoH,EAAKyoH,OAAS,EAAQ,OACtBzoH,EAAK0oH,KAAO,EAAQ,OAGpB1oH,EAAKmV,KAAOnV,EAAKwoH,IAAIrzG,KACrBnV,EAAKsiE,OAAStiE,EAAKwoH,IAAIlmD,OACvBtiE,EAAK2oH,OAAS3oH,EAAKwoH,IAAIG,OACvB3oH,EAAKwiE,OAASxiE,EAAKwoH,IAAIhmD,OACvBxiE,EAAK0iE,OAAS1iE,EAAKwoH,IAAI9lD,OACvB1iE,EAAK4oH,UAAY5oH,EAAKyoH,OAAOG,wCCZ7B,IAAIN,EAAQ,EAAQ,OAChBO,EAAS,EAAQ,MAErB,SAASC,IACPlrI,KAAKmrI,QAAU,KACfnrI,KAAKorI,aAAe,EACpBprI,KAAK8sD,UAAY9sD,KAAKgP,YAAY89C,UAClC9sD,KAAKqrI,QAAUrrI,KAAKgP,YAAYq8H,QAChCrrI,KAAKsrI,aAAetrI,KAAKgP,YAAYs8H,aACrCtrI,KAAKurI,UAAYvrI,KAAKgP,YAAYu8H,UAAY,EAC9CvrI,KAAKwrI,OAAS,MAEdxrI,KAAKyrI,QAAUzrI,KAAK8sD,UAAY,EAChC9sD,KAAK0rI,SAAW1rI,KAAK8sD,UAAY,EACnC,CACA5oD,EAAQgnI,UAAYA,EAEpBA,EAAUxpI,UAAU81B,OAAS,SAAgBrc,EAAKwwH,GAUhD,GARAxwH,EAAMuvH,EAAM7jG,QAAQ1rB,EAAKwwH,GACpB3rI,KAAKmrI,QAGRnrI,KAAKmrI,QAAUnrI,KAAKmrI,QAAQjkG,OAAO/rB,GAFnCnb,KAAKmrI,QAAUhwH,EAGjBnb,KAAKorI,cAAgBjwH,EAAI5Z,OAGrBvB,KAAKmrI,QAAQ5pI,QAAUvB,KAAKyrI,QAAS,CAIvC,IAAIpxC,GAHJl/E,EAAMnb,KAAKmrI,SAGC5pI,OAASvB,KAAKyrI,QAC1BzrI,KAAKmrI,QAAUhwH,EAAI3W,MAAM2W,EAAI5Z,OAAS84F,EAAGl/E,EAAI5Z,QACjB,IAAxBvB,KAAKmrI,QAAQ5pI,SACfvB,KAAKmrI,QAAU,MAEjBhwH,EAAMuvH,EAAMkB,OAAOzwH,EAAK,EAAGA,EAAI5Z,OAAS84F,EAAGr6F,KAAKwrI,QAChD,IAAK,IAAInqI,EAAI,EAAGA,EAAI8Z,EAAI5Z,OAAQF,GAAKrB,KAAK0rI,SACxC1rI,KAAK6rI,QAAQ1wH,EAAK9Z,EAAGA,EAAIrB,KAAK0rI,SAClC,CAEA,OAAO1rI,IACT,EAEAkrI,EAAUxpI,UAAUg2B,OAAS,SAAgBi0G,GAI3C,OAHA3rI,KAAKw3B,OAAOx3B,KAAK8rI,QACjBb,EAAwB,OAAjBjrI,KAAKmrI,SAELnrI,KAAK+rI,QAAQJ,EACtB,EAEAT,EAAUxpI,UAAUoqI,KAAO,WACzB,IAAIhzC,EAAM94F,KAAKorI,aACXn9H,EAAQjO,KAAKyrI,QACb1oI,EAAIkL,GAAU6qF,EAAM94F,KAAKurI,WAAat9H,EACtClJ,EAAM,IAAI4F,MAAM5H,EAAI/C,KAAKurI,WAC7BxmI,EAAI,GAAK,IACT,IAAK,IAAI1D,EAAI,EAAGA,EAAI0B,EAAG1B,IACrB0D,EAAI1D,GAAK,EAIX,GADAy3F,IAAQ,EACY,QAAhB94F,KAAKwrI,OAAkB,CACzB,IAAK,IAAI9oC,EAAI,EAAGA,EAAI1iG,KAAKurI,UAAW7oC,IAClC39F,EAAI1D,KAAO,EAEb0D,EAAI1D,KAAO,EACX0D,EAAI1D,KAAO,EACX0D,EAAI1D,KAAO,EACX0D,EAAI1D,KAAO,EACX0D,EAAI1D,KAAQy3F,IAAQ,GAAM,IAC1B/zF,EAAI1D,KAAQy3F,IAAQ,GAAM,IAC1B/zF,EAAI1D,KAAQy3F,IAAQ,EAAK,IACzB/zF,EAAI1D,KAAa,IAANy3F,CACb,MAUE,IATA/zF,EAAI1D,KAAa,IAANy3F,EACX/zF,EAAI1D,KAAQy3F,IAAQ,EAAK,IACzB/zF,EAAI1D,KAAQy3F,IAAQ,GAAM,IAC1B/zF,EAAI1D,KAAQy3F,IAAQ,GAAM,IAC1B/zF,EAAI1D,KAAO,EACX0D,EAAI1D,KAAO,EACX0D,EAAI1D,KAAO,EACX0D,EAAI1D,KAAO,EAENqhG,EAAI,EAAGA,EAAI1iG,KAAKurI,UAAW7oC,IAC9B39F,EAAI1D,KAAO,EAGf,OAAO0D,CACT,gCCzFA,IAAI2lI,EAAQ,EAAQ,OAChBO,EAAS,EAAQ,MAErB,SAASe,EAAK5pH,EAAM3hB,EAAKkrI,GACvB,KAAM3rI,gBAAgBgsI,GACpB,OAAO,IAAIA,EAAK5pH,EAAM3hB,EAAKkrI,GAC7B3rI,KAAKisI,KAAO7pH,EACZpiB,KAAK8sD,UAAY1qC,EAAK0qC,UAAY,EAClC9sD,KAAKqrI,QAAUjpH,EAAKipH,QAAU,EAC9BrrI,KAAKksI,MAAQ,KACblsI,KAAKmsI,MAAQ,KAEbnsI,KAAK8Y,MAAM4xH,EAAM7jG,QAAQpmC,EAAKkrI,GAChC,CACA1nI,EAAOC,QAAU8nI,EAEjBA,EAAKtqI,UAAUoX,MAAQ,SAAcrY,GAE/BA,EAAIc,OAASvB,KAAK8sD,YACpBrsD,GAAM,IAAIT,KAAKisI,MAAOz0G,OAAO/2B,GAAKi3B,UACpCuzG,EAAOxqI,EAAIc,QAAUvB,KAAK8sD,WAG1B,IAAK,IAAIzrD,EAAIZ,EAAIc,OAAQF,EAAIrB,KAAK8sD,UAAWzrD,IAC3CZ,EAAI8C,KAAK,GAEX,IAAKlC,EAAI,EAAGA,EAAIZ,EAAIc,OAAQF,IAC1BZ,EAAIY,IAAM,GAIZ,IAHArB,KAAKksI,OAAQ,IAAIlsI,KAAKisI,MAAOz0G,OAAO/2B,GAG/BY,EAAI,EAAGA,EAAIZ,EAAIc,OAAQF,IAC1BZ,EAAIY,IAAM,IACZrB,KAAKmsI,OAAQ,IAAInsI,KAAKisI,MAAOz0G,OAAO/2B,EACtC,EAEAurI,EAAKtqI,UAAU81B,OAAS,SAAgBrc,EAAKwwH,GAE3C,OADA3rI,KAAKksI,MAAM10G,OAAOrc,EAAKwwH,GAChB3rI,IACT,EAEAgsI,EAAKtqI,UAAUg2B,OAAS,SAAgBi0G,GAEtC,OADA3rI,KAAKmsI,MAAM30G,OAAOx3B,KAAKksI,MAAMx0G,UACtB13B,KAAKmsI,MAAMz0G,OAAOi0G,EAC3B,gCC5CA,IAAIjB,EAAQ,EAAQ,OAChBC,EAAS,EAAQ,OAEjByB,EAAS1B,EAAM0B,OACfC,EAAQ3B,EAAM2B,MACdC,EAAU5B,EAAM4B,QAChBC,EAAU7B,EAAM6B,QAChBrB,EAAYP,EAAOO,UAEvB,SAASsB,IACP,KAAMxsI,gBAAgBwsI,GACpB,OAAO,IAAIA,EAEbtB,EAAUviI,KAAK3I,MAEfA,KAAKysI,EAAI,CAAE,WAAY,WAAY,WAAY,UAAY,YAC3DzsI,KAAKwrI,OAAS,QAChB,CAyDA,SAASkB,EAAE5pI,EAAGilC,EAAGuyD,EAAGF,GAClB,OAAIt3F,GAAK,GACAilC,EAAIuyD,EAAIF,EACRt3F,GAAK,GACJilC,EAAIuyD,GAAQvyD,EAAKqyD,EAClBt3F,GAAK,IACJilC,GAAMuyD,GAAMF,EACbt3F,GAAK,GACJilC,EAAIqyD,EAAME,GAAMF,EAEjBryD,GAAKuyD,GAAMF,EACtB,CAEA,SAASuyC,EAAE7pI,GACT,OAAIA,GAAK,GACA,EACAA,GAAK,GACL,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WAEA,UACX,CAEA,SAAS8pI,EAAG9pI,GACV,OAAIA,GAAK,GACA,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WAEA,CACX,CA7FA4nI,EAAMmC,SAASL,EAAWtB,GAC1BhnI,EAAQ8mI,UAAYwB,EAEpBA,EAAU1/E,UAAY,IACtB0/E,EAAUnB,QAAU,IACpBmB,EAAUlB,aAAe,IACzBkB,EAAUjB,UAAY,GAEtBiB,EAAU9qI,UAAUmqI,QAAU,SAAgB1wH,EAAK3Y,GAWjD,IAVA,IAAIw/G,EAAIhiH,KAAKysI,EAAE,GACXK,EAAI9sI,KAAKysI,EAAE,GACXzvI,EAAIgD,KAAKysI,EAAE,GACXM,EAAI/sI,KAAKysI,EAAE,GACX/jE,EAAI1oE,KAAKysI,EAAE,GACXO,EAAKhrB,EACLirB,EAAKH,EACLI,EAAKlwI,EACLmwI,EAAKJ,EACLK,EAAK1kE,EACA5lE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAIuqI,EAAIhB,EACND,EACEG,EAAQvqB,EAAG0qB,EAAE5pI,EAAGgqI,EAAG9vI,EAAG+vI,GAAI5xH,EAAIk/E,EAAEv3F,GAAKN,GAAQmqI,EAAE7pI,IAC/CoC,EAAEpC,IACJ4lE,GACFs5C,EAAIt5C,EACJA,EAAIqkE,EACJA,EAAIX,EAAOpvI,EAAG,IACdA,EAAI8vI,EACJA,EAAIO,EACJA,EAAIhB,EACFD,EACEG,EAAQS,EAAIN,EAAE,GAAK5pI,EAAGmqI,EAAIC,EAAIC,GAAKhyH,EAAImyH,EAAGxqI,GAAKN,GAAQoqI,EAAG9pI,IAC1DyqI,EAAGzqI,IACLsqI,GACFJ,EAAKI,EACLA,EAAKD,EACLA,EAAKf,EAAOc,EAAI,IAChBA,EAAKD,EACLA,EAAKI,CACP,CACAA,EAAIf,EAAQtsI,KAAKysI,EAAE,GAAIzvI,EAAGmwI,GAC1BntI,KAAKysI,EAAE,GAAKH,EAAQtsI,KAAKysI,EAAE,GAAIM,EAAGK,GAClCptI,KAAKysI,EAAE,GAAKH,EAAQtsI,KAAKysI,EAAE,GAAI/jE,EAAGskE,GAClChtI,KAAKysI,EAAE,GAAKH,EAAQtsI,KAAKysI,EAAE,GAAIzqB,EAAGirB,GAClCjtI,KAAKysI,EAAE,GAAKH,EAAQtsI,KAAKysI,EAAE,GAAIK,EAAGI,GAClCltI,KAAKysI,EAAE,GAAKY,CACd,EAEAb,EAAU9qI,UAAUqqI,QAAU,SAAgBJ,GAC5C,MAAY,QAARA,EACKjB,EAAM8C,QAAQxtI,KAAKysI,EAAG,UAEtB/B,EAAM+C,QAAQztI,KAAKysI,EAAG,SACjC,EAyCA,IAAIpyC,EAAI,CACN,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EACnD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAClD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EACnD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAGhDizC,EAAK,CACP,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAClD,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EACnD,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAClD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAClD,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,IAGhDpoI,EAAI,CACN,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EACrD,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GACpD,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EACrD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GACpD,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAGnDqoI,EAAK,CACP,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EACrD,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GACpD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EACrD,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EACrD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,kCC9ItDrpI,EAAQqzB,KAAO,EAAf,OACArzB,EAAQ6mI,OAAS,EAAjB,OACA7mI,EAAQwgF,OAAS,EAAjB,OACAxgF,EAAQ0gF,OAAS,EAAjB,OACA1gF,EAAQ4gF,OAAS,EAAjB,qCCJA,IAAI4lD,EAAQ,EAAQ,OAChBC,EAAS,EAAQ,OACjB+C,EAAY,EAAQ,KAEpBtB,EAAS1B,EAAM0B,OACfC,EAAQ3B,EAAM2B,MACdsB,EAAUjD,EAAMiD,QAChBC,EAAOF,EAAUE,KACjB1C,EAAYP,EAAOO,UAEnB2C,EAAS,CACX,WAAY,WACZ,WAAY,YAGd,SAASrpD,IACP,KAAMxkF,gBAAgBwkF,GACpB,OAAO,IAAIA,EAEb0mD,EAAUviI,KAAK3I,MACfA,KAAKysI,EAAI,CACP,WAAY,WAAY,WACxB,UAAY,YACdzsI,KAAK8tI,EAAI,IAAInjI,MAAM,GACrB,CAEA+/H,EAAMmC,SAASroD,EAAM0mD,GACrBjnI,EAAOC,QAAUsgF,EAEjBA,EAAK13B,UAAY,IACjB03B,EAAK6mD,QAAU,IACf7mD,EAAK8mD,aAAe,GACpB9mD,EAAK+mD,UAAY,GAEjB/mD,EAAK9iF,UAAUmqI,QAAU,SAAiB1wH,EAAK3Y,GAG7C,IAFA,IAAIsrI,EAAI9tI,KAAK8tI,EAEJzsI,EAAI,EAAGA,EAAI,GAAIA,IACtBysI,EAAEzsI,GAAK8Z,EAAI3Y,EAAQnB,GAErB,KAAMA,EAAIysI,EAAEvsI,OAAQF,IAClBysI,EAAEzsI,GAAK+qI,EAAO0B,EAAEzsI,EAAI,GAAKysI,EAAEzsI,EAAI,GAAKysI,EAAEzsI,EAAI,IAAMysI,EAAEzsI,EAAI,IAAK,GAE7D,IAAIkhD,EAAIviD,KAAKysI,EAAE,GACXjqF,EAAIxiD,KAAKysI,EAAE,GACXt5H,EAAInT,KAAKysI,EAAE,GACXhvC,EAAIz9F,KAAKysI,EAAE,GACXtmI,EAAInG,KAAKysI,EAAE,GAEf,IAAKprI,EAAI,EAAGA,EAAIysI,EAAEvsI,OAAQF,IAAK,CAC7B,IAAI6D,KAAO7D,EAAI,IACXqhG,EAAIirC,EAAQvB,EAAO7pF,EAAG,GAAIqrF,EAAK1oI,EAAGs9C,EAAGrvC,EAAGsqF,GAAIt3F,EAAG2nI,EAAEzsI,GAAIwsI,EAAO3oI,IAChEiB,EAAIs3F,EACJA,EAAItqF,EACJA,EAAIi5H,EAAO5pF,EAAG,IACdA,EAAID,EACJA,EAAImgD,CACN,CAEA1iG,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAIlqF,GAC7BviD,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAIjqF,GAC7BxiD,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAIt5H,GAC7BnT,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAIhvC,GAC7Bz9F,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAItmI,EAC/B,EAEAq+E,EAAK9iF,UAAUqqI,QAAU,SAAgBJ,GACvC,MAAY,QAARA,EACKjB,EAAM8C,QAAQxtI,KAAKysI,EAAG,OAEtB/B,EAAM+C,QAAQztI,KAAKysI,EAAG,MACjC,gCCvEA,IAAI/B,EAAQ,EAAQ,OAChBjmD,EAAS,EAAQ,OAErB,SAASspD,IACP,KAAM/tI,gBAAgB+tI,GACpB,OAAO,IAAIA,EAEbtpD,EAAO97E,KAAK3I,MACZA,KAAKysI,EAAI,CACP,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACxC,CACA/B,EAAMmC,SAASkB,EAAQtpD,GACvBxgF,EAAOC,QAAU6pI,EAEjBA,EAAOjhF,UAAY,IACnBihF,EAAO1C,QAAU,IACjB0C,EAAOzC,aAAe,IACtByC,EAAOxC,UAAY,GAEnBwC,EAAOrsI,UAAUqqI,QAAU,SAAgBJ,GAEzC,MAAY,QAARA,EACKjB,EAAM8C,QAAQxtI,KAAKysI,EAAEjoI,MAAM,EAAG,GAAI,OAElCkmI,EAAM+C,QAAQztI,KAAKysI,EAAEjoI,MAAM,EAAG,GAAI,MAC7C,gCC1BA,IAAIkmI,EAAQ,EAAQ,OAChBC,EAAS,EAAQ,OACjB+C,EAAY,EAAQ,KACpBzC,EAAS,EAAQ,MAEjBoB,EAAQ3B,EAAM2B,MACdE,EAAU7B,EAAM6B,QAChBoB,EAAUjD,EAAMiD,QAChBK,EAAON,EAAUM,KACjBC,EAAQP,EAAUO,MAClBC,EAASR,EAAUQ,OACnBC,EAAST,EAAUS,OACnBC,EAASV,EAAUU,OACnBC,EAASX,EAAUW,OAEnBnD,EAAYP,EAAOO,UAEnBoD,EAAW,CACb,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,YAGtC,SAAS7pD,IACP,KAAMzkF,gBAAgBykF,GACpB,OAAO,IAAIA,EAEbymD,EAAUviI,KAAK3I,MACfA,KAAKysI,EAAI,CACP,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,YAEtCzsI,KAAK+C,EAAIurI,EACTtuI,KAAK8tI,EAAI,IAAInjI,MAAM,GACrB,CACA+/H,EAAMmC,SAASpoD,EAAQymD,GACvBjnI,EAAOC,QAAUugF,EAEjBA,EAAO33B,UAAY,IACnB23B,EAAO4mD,QAAU,IACjB5mD,EAAO6mD,aAAe,IACtB7mD,EAAO8mD,UAAY,GAEnB9mD,EAAO/iF,UAAUmqI,QAAU,SAAiB1wH,EAAK3Y,GAG/C,IAFA,IAAIsrI,EAAI9tI,KAAK8tI,EAEJzsI,EAAI,EAAGA,EAAI,GAAIA,IACtBysI,EAAEzsI,GAAK8Z,EAAI3Y,EAAQnB,GACrB,KAAOA,EAAIysI,EAAEvsI,OAAQF,IACnBysI,EAAEzsI,GAAKkrI,EAAQ8B,EAAOP,EAAEzsI,EAAI,IAAKysI,EAAEzsI,EAAI,GAAI+sI,EAAON,EAAEzsI,EAAI,KAAMysI,EAAEzsI,EAAI,KAEtE,IAAIkhD,EAAIviD,KAAKysI,EAAE,GACXjqF,EAAIxiD,KAAKysI,EAAE,GACXt5H,EAAInT,KAAKysI,EAAE,GACXhvC,EAAIz9F,KAAKysI,EAAE,GACXtmI,EAAInG,KAAKysI,EAAE,GACXC,EAAI1sI,KAAKysI,EAAE,GACXviB,EAAIlqH,KAAKysI,EAAE,GACXA,EAAIzsI,KAAKysI,EAAE,GAGf,IADAxB,EAAOjrI,KAAK+C,EAAExB,SAAWusI,EAAEvsI,QACtBF,EAAI,EAAGA,EAAIysI,EAAEvsI,OAAQF,IAAK,CAC7B,IAAIktI,EAAKZ,EAAQlB,EAAG0B,EAAOhoI,GAAI6nI,EAAK7nI,EAAGumI,EAAGxiB,GAAIlqH,KAAK+C,EAAE1B,GAAIysI,EAAEzsI,IACvDmtI,EAAKnC,EAAM6B,EAAO3rF,GAAI0rF,EAAM1rF,EAAGC,EAAGrvC,IACtCs5H,EAAIviB,EACJA,EAAIwiB,EACJA,EAAIvmI,EACJA,EAAIkmI,EAAM5uC,EAAG8wC,GACb9wC,EAAItqF,EACJA,EAAIqvC,EACJA,EAAID,EACJA,EAAI8pF,EAAMkC,EAAIC,EAChB,CAEAxuI,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAIlqF,GAC7BviD,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAIjqF,GAC7BxiD,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAIt5H,GAC7BnT,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAIhvC,GAC7Bz9F,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAItmI,GAC7BnG,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAIC,GAC7B1sI,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAIviB,GAC7BlqH,KAAKysI,EAAE,GAAKJ,EAAMrsI,KAAKysI,EAAE,GAAIA,EAC/B,EAEAhoD,EAAO/iF,UAAUqqI,QAAU,SAAgBJ,GACzC,MAAY,QAARA,EACKjB,EAAM8C,QAAQxtI,KAAKysI,EAAG,OAEtB/B,EAAM+C,QAAQztI,KAAKysI,EAAG,MACjC,gCCtGA,IAAI/B,EAAQ,EAAQ,OAEhB7lD,EAAS,EAAQ,OAErB,SAASF,IACP,KAAM3kF,gBAAgB2kF,GACpB,OAAO,IAAIA,EAEbE,EAAOl8E,KAAK3I,MACZA,KAAKysI,EAAI,CACP,WAAY,WACZ,WAAY,UACZ,WAAY,UACZ,UAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WAChB,CACA/B,EAAMmC,SAASloD,EAAQE,GACvB5gF,EAAOC,QAAUygF,EAEjBA,EAAO73B,UAAY,KACnB63B,EAAO0mD,QAAU,IACjB1mD,EAAO2mD,aAAe,IACtB3mD,EAAO4mD,UAAY,IAEnB5mD,EAAOjjF,UAAUqqI,QAAU,SAAgBJ,GACzC,MAAY,QAARA,EACKjB,EAAM8C,QAAQxtI,KAAKysI,EAAEjoI,MAAM,EAAG,IAAK,OAEnCkmI,EAAM+C,QAAQztI,KAAKysI,EAAEjoI,MAAM,EAAG,IAAK,MAC9C,gCChCA,IAAIkmI,EAAQ,EAAQ,OAChBC,EAAS,EAAQ,OACjBM,EAAS,EAAQ,MAEjBwD,EAAY/D,EAAM+D,UAClBC,EAAYhE,EAAMgE,UAClBC,EAAWjE,EAAMiE,SACjBC,EAAWlE,EAAMkE,SACjBC,EAAQnE,EAAMmE,MACdC,EAAWpE,EAAMoE,SACjBC,EAAWrE,EAAMqE,SACjBC,EAAatE,EAAMsE,WACnBC,EAAavE,EAAMuE,WACnBC,EAAaxE,EAAMwE,WACnBC,EAAazE,EAAMyE,WAEnBjE,EAAYP,EAAOO,UAEnBkE,EAAW,CACb,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,UAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,YAGtC,SAASvqD,IACP,KAAM7kF,gBAAgB6kF,GACpB,OAAO,IAAIA,EAEbqmD,EAAUviI,KAAK3I,MACfA,KAAKysI,EAAI,CACP,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,UACZ,UAAY,WACZ,WAAY,WACdzsI,KAAK+C,EAAIqsI,EACTpvI,KAAK8tI,EAAI,IAAInjI,MAAM,IACrB,CAwIA,SAAS0kI,EAAQC,EAAIC,EAAIC,EAAIC,EAAIC,GAC/B,IAAIr1C,EAAKi1C,EAAKE,GAASF,EAAMI,EAG7B,OAFIr1C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASs1C,EAAQL,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GACnC,IAAIv1C,EAAKk1C,EAAKE,GAASF,EAAMK,EAG7B,OAFIv1C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASw1C,EAASP,EAAIC,EAAIC,EAAIC,EAAIC,GAChC,IAAIr1C,EAAKi1C,EAAKE,EAAOF,EAAKI,EAAOF,EAAKE,EAGtC,OAFIr1C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASy1C,EAASR,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GACpC,IAAIv1C,EAAKk1C,EAAKE,EAAOF,EAAKK,EAAOH,EAAKG,EAGtC,OAFIv1C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAS01C,EAAUT,EAAIC,GACrB,IAIIl1C,EAJQo0C,EAAUa,EAAIC,EAAI,IAClBd,EAAUc,EAAID,EAAI,GAClBb,EAAUc,EAAID,EAAI,GAK9B,OAFIj1C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAS21C,EAAUV,EAAIC,GACrB,IAIIl1C,EAJQq0C,EAAUY,EAAIC,EAAI,IAClBb,EAAUa,EAAID,EAAI,GAClBZ,EAAUa,EAAID,EAAI,GAK9B,OAFIj1C,EAAI,IACNA,GAAK,YACAA,CACT,CAaA,SAAS41C,EAAUX,EAAIC,GACrB,IAIIl1C,EAJQq0C,EAAUY,EAAIC,EAAI,IAClBb,EAAUY,EAAIC,EAAI,IAClBb,EAAUa,EAAID,EAAI,GAK9B,OAFIj1C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAS61C,EAAUZ,EAAIC,GACrB,IAIIl1C,EAJQo0C,EAAUa,EAAIC,EAAI,GAClBd,EAAUa,EAAIC,EAAI,GAClBZ,EAASW,EAAIC,EAAI,GAK7B,OAFIl1C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAS81C,EAAUb,EAAIC,GACrB,IAIIl1C,EAJQq0C,EAAUY,EAAIC,EAAI,GAClBb,EAAUY,EAAIC,EAAI,GAClBX,EAASU,EAAIC,EAAI,GAK7B,OAFIl1C,EAAI,IACNA,GAAK,YACAA,CACT,CAaA,SAAS+1C,EAAUd,EAAIC,GACrB,IAIIl1C,EAJQq0C,EAAUY,EAAIC,EAAI,IAClBb,EAAUa,EAAID,EAAI,IAClBV,EAASU,EAAIC,EAAI,GAK7B,OAFIl1C,EAAI,IACNA,GAAK,YACAA,CACT,CAzPAqwC,EAAMmC,SAAShoD,EAAQqmD,GACvBjnI,EAAOC,QAAU2gF,EAEjBA,EAAO/3B,UAAY,KACnB+3B,EAAOwmD,QAAU,IACjBxmD,EAAOymD,aAAe,IACtBzmD,EAAO0mD,UAAY,IAEnB1mD,EAAOnjF,UAAU2uI,cAAgB,SAAuBl1H,EAAK3Y,GAI3D,IAHA,IAAIsrI,EAAI9tI,KAAK8tI,EAGJzsI,EAAI,EAAGA,EAAI,GAAIA,IACtBysI,EAAEzsI,GAAK8Z,EAAI3Y,EAAQnB,GACrB,KAAOA,EAAIysI,EAAEvsI,OAAQF,GAAK,EAAG,CAC3B,IAAIivI,GAsNWhB,EAtNOxB,EAAEzsI,EAAI,GAsNTkuI,EAtNazB,EAAEzsI,EAAI,GA2NpCg5F,YAJQo0C,EAAUa,EAAIC,EAAI,IAClBd,EAAUc,EAAID,EAAI,IAClBX,EAASW,EAAIC,EAAI,IAGrB,IACNl1C,GAAK,YACAA,GA7NDk2C,EAAQH,EAAUtC,EAAEzsI,EAAI,GAAIysI,EAAEzsI,EAAI,IAClCmvI,EAAQ1C,EAAEzsI,EAAI,IACdovI,EAAQ3C,EAAEzsI,EAAI,IACdqvI,EAAQR,EAAUpC,EAAEzsI,EAAI,IAAKysI,EAAEzsI,EAAI,KACnCsvI,EAAQR,EAAUrC,EAAEzsI,EAAI,IAAKysI,EAAEzsI,EAAI,KACnCuvI,EAAQ9C,EAAEzsI,EAAI,IACdwvI,EAAQ/C,EAAEzsI,EAAI,IAElBysI,EAAEzsI,GAAK2tI,EACLsB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,GACT/C,EAAEzsI,EAAI,GAAK4tI,EACTqB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACX,CAmMF,IAAmBvB,EAAIC,EAKjBl1C,CAvMN,EAEAxV,EAAOnjF,UAAUmqI,QAAU,SAAiB1wH,EAAK3Y,GAC/CxC,KAAKqwI,cAAcl1H,EAAK3Y,GAExB,IAiJiB8sI,EAAIC,EAKjBl1C,EAtJAyzC,EAAI9tI,KAAK8tI,EAETgD,EAAK9wI,KAAKysI,EAAE,GACZsE,EAAK/wI,KAAKysI,EAAE,GACZuE,EAAKhxI,KAAKysI,EAAE,GACZwE,EAAKjxI,KAAKysI,EAAE,GACZyE,EAAKlxI,KAAKysI,EAAE,GACZ0E,EAAKnxI,KAAKysI,EAAE,GACZ2E,EAAKpxI,KAAKysI,EAAE,GACZ4E,EAAKrxI,KAAKysI,EAAE,GACZ6E,EAAKtxI,KAAKysI,EAAE,GACZ3rE,EAAK9gE,KAAKysI,EAAE,GACZ8E,EAAKvxI,KAAKysI,EAAE,IACZ+E,EAAKxxI,KAAKysI,EAAE,IACZgF,EAAKzxI,KAAKysI,EAAE,IACZiF,EAAK1xI,KAAKysI,EAAE,IACZkF,EAAK3xI,KAAKysI,EAAE,IACZmF,EAAK5xI,KAAKysI,EAAE,IAEhBxB,EAAOjrI,KAAK+C,EAAExB,SAAWusI,EAAEvsI,QAC3B,IAAK,IAAIF,EAAI,EAAGA,EAAIysI,EAAEvsI,OAAQF,GAAK,EAAG,CACpC,IAAIivI,EAAQqB,EACRpB,EAAQqB,EACRpB,GA+HFn2C,YAJQo0C,EADKa,EA1HOgC,EA0HH/B,EA1HOzuE,EA2HE,IAClB2tE,EAAUa,EAAIC,EAAI,IAClBd,EAAUc,EAAID,EAAI,IAGtB,IACNj1C,GAAK,YACAA,GAjIDo2C,EAAQR,EAAUqB,EAAIxwE,GACtB4vE,EAAQrB,EAAQiC,EAAIxwE,EAAIywE,EAAIC,EAAIC,GAChCd,EAAQhB,EAAQ2B,EAAIxwE,EAAIywE,EAAIC,EAAIC,EAAIC,GACpCd,EAAQ5wI,KAAK+C,EAAE1B,GACfwvI,EAAQ7wI,KAAK+C,EAAE1B,EAAI,GACnBwwI,EAAQ/D,EAAEzsI,GACVywI,EAAQhE,EAAEzsI,EAAI,GAEd0wI,EAAQ7C,EACVoB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPgB,EAAOC,GACLE,EAAQ7C,EACVmB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPgB,EAAOC,GAETxB,EAAQP,EAAUe,EAAIC,GACtBR,EAAQP,EAAUc,EAAIC,GACtBP,EAAQX,EAASiB,EAAIC,EAAIC,EAAIC,EAAIC,GACjCT,EAAQX,EAASgB,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAErC,IAAIc,EAAQnD,EAASwB,EAAOC,EAAOC,EAAOC,GACtCyB,EAAQnD,EAASuB,EAAOC,EAAOC,EAAOC,GAE1CkB,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKD,EACLE,EAAK1wE,EAELwwE,EAAKxC,EAASsC,EAAIC,EAAIU,EAAOC,GAC7BlxE,EAAKiuE,EAASsC,EAAIA,EAAIU,EAAOC,GAE7BZ,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKhC,EAASiD,EAAOC,EAAOC,EAAOC,GACnCnB,EAAKhC,EAASgD,EAAOC,EAAOC,EAAOC,EACrC,CAEArD,EAAM7uI,KAAKysI,EAAG,EAAGqE,EAAIC,GACrBlC,EAAM7uI,KAAKysI,EAAG,EAAGuE,EAAIC,GACrBpC,EAAM7uI,KAAKysI,EAAG,EAAGyE,EAAIC,GACrBtC,EAAM7uI,KAAKysI,EAAG,EAAG2E,EAAIC,GACrBxC,EAAM7uI,KAAKysI,EAAG,EAAG6E,EAAIxwE,GACrB+tE,EAAM7uI,KAAKysI,EAAG,GAAI8E,EAAIC,GACtB3C,EAAM7uI,KAAKysI,EAAG,GAAIgF,EAAIC,GACtB7C,EAAM7uI,KAAKysI,EAAG,GAAIkF,EAAIC,EACxB,EAEA/sD,EAAOnjF,UAAUqqI,QAAU,SAAgBJ,GACzC,MAAY,QAARA,EACKjB,EAAM8C,QAAQxtI,KAAKysI,EAAG,OAEtB/B,EAAM+C,QAAQztI,KAAKysI,EAAG,MACjC,8BCnNA,IACI0F,EADQ,EAAQ,OACDA,OAYnB,SAASnE,EAAKjmG,EAAGuyD,EAAGF,GAClB,OAAQryD,EAAIuyD,GAAQvyD,EAAKqyD,CAC3B,CAGA,SAAS6zC,EAAMlmG,EAAGuyD,EAAGF,GACnB,OAAQryD,EAAIuyD,EAAMvyD,EAAIqyD,EAAME,EAAIF,CAClC,CAGA,SAASg4C,EAAIrqG,EAAGuyD,EAAGF,GACjB,OAAOryD,EAAIuyD,EAAIF,CACjB,CAdAl2F,EAAQ0pI,KARR,SAAc1oI,EAAG6iC,EAAGuyD,EAAGF,GACrB,OAAU,IAANl1F,EACK8oI,EAAKjmG,EAAGuyD,EAAGF,GACV,IAANl1F,GAAiB,IAANA,EACNktI,EAAIrqG,EAAGuyD,EAAGF,GACT,IAANl1F,EACK+oI,EAAMlmG,EAAGuyD,EAAGF,QADrB,CAEF,EAMAl2F,EAAQ8pI,KAAOA,EAKf9pI,EAAQ+pI,MAAQA,EAKhB/pI,EAAQkuI,IAAMA,EAKdluI,EAAQgqI,OAHR,SAAgBnmG,GACd,OAAOoqG,EAAOpqG,EAAG,GAAKoqG,EAAOpqG,EAAG,IAAMoqG,EAAOpqG,EAAG,GAClD,EAMA7jC,EAAQiqI,OAHR,SAAgBpmG,GACd,OAAOoqG,EAAOpqG,EAAG,GAAKoqG,EAAOpqG,EAAG,IAAMoqG,EAAOpqG,EAAG,GAClD,EAMA7jC,EAAQkqI,OAHR,SAAgBrmG,GACd,OAAOoqG,EAAOpqG,EAAG,GAAKoqG,EAAOpqG,EAAG,IAAOA,IAAM,CAC/C,EAMA7jC,EAAQmqI,OAHR,SAAgBtmG,GACd,OAAOoqG,EAAOpqG,EAAG,IAAMoqG,EAAOpqG,EAAG,IAAOA,IAAM,EAChD,gCC7CA,IAAIkjG,EAAS,EAAQ,MACjB4B,EAAW,EAAQ,OAIvB,SAASwF,EAAgBl3H,EAAK9Z,GAC5B,OAAqC,QAAZ,MAApB8Z,EAAI9b,WAAWgC,OAGhBA,EAAI,GAAKA,EAAI,GAAK8Z,EAAI5Z,SAGkB,QAAZ,MAAxB4Z,EAAI9b,WAAWgC,EAAI,GAC7B,CAyDA,SAASixI,EAAMpgC,GAKb,OAJWA,IAAM,GACLA,IAAM,EAAK,MACXA,GAAK,EAAK,UACN,IAAJA,IAAa,MACV,CACjB,CAeA,SAASqgC,EAAMC,GACb,OAAoB,IAAhBA,EAAKjxI,OACA,IAAMixI,EAENA,CACX,CAGA,SAASC,EAAMD,GACb,OAAoB,IAAhBA,EAAKjxI,OACA,IAAMixI,EACU,IAAhBA,EAAKjxI,OACL,KAAOixI,EACS,IAAhBA,EAAKjxI,OACL,MAAQixI,EACQ,IAAhBA,EAAKjxI,OACL,OAASixI,EACO,IAAhBA,EAAKjxI,OACL,QAAUixI,EACM,IAAhBA,EAAKjxI,OACL,SAAWixI,EACK,IAAhBA,EAAKjxI,OACL,UAAYixI,EAEZA,CACX,CAjHAtuI,EAAQ2oI,SAAWA,EAyDnB3oI,EAAQ2iC,QA7CR,SAAiB1rB,EAAKwwH,GACpB,GAAIhhI,MAAMC,QAAQuQ,GAChB,OAAOA,EAAI3W,QACb,IAAK2W,EACH,MAAO,GACT,IAAIpW,EAAM,GACV,GAAmB,iBAARoW,EACT,GAAKwwH,GAyBE,GAAY,QAARA,EAIT,KAHAxwH,EAAMA,EAAIjN,QAAQ,eAAgB,KAC1B3M,OAAS,GAAM,IACrB4Z,EAAM,IAAMA,GACT9Z,EAAI,EAAGA,EAAI8Z,EAAI5Z,OAAQF,GAAK,EAC/B0D,EAAIxB,KAAKL,SAASiY,EAAI9Z,GAAK8Z,EAAI9Z,EAAI,GAAI,UAxBzC,IADA,IAAIoH,EAAI,EACCpH,EAAI,EAAGA,EAAI8Z,EAAI5Z,OAAQF,IAAK,CACnC,IAAI8R,EAAIgI,EAAI9b,WAAWgC,GACnB8R,EAAI,IACNpO,EAAI0D,KAAO0K,EACFA,EAAI,MACbpO,EAAI0D,KAAQ0K,GAAK,EAAK,IACtBpO,EAAI0D,KAAY,GAAJ0K,EAAU,KACbk/H,EAAgBl3H,EAAK9Z,IAC9B8R,EAAI,QAAgB,KAAJA,IAAe,KAA6B,KAAtBgI,EAAI9b,aAAagC,IACvD0D,EAAI0D,KAAQ0K,GAAK,GAAM,IACvBpO,EAAI0D,KAAS0K,GAAK,GAAM,GAAM,IAC9BpO,EAAI0D,KAAS0K,GAAK,EAAK,GAAM,IAC7BpO,EAAI0D,KAAY,GAAJ0K,EAAU,MAEtBpO,EAAI0D,KAAQ0K,GAAK,GAAM,IACvBpO,EAAI0D,KAAS0K,GAAK,EAAK,GAAM,IAC7BpO,EAAI0D,KAAY,GAAJ0K,EAAU,IAE1B,MASF,IAAK9R,EAAI,EAAGA,EAAI8Z,EAAI5Z,OAAQF,IAC1B0D,EAAI1D,GAAc,EAAT8Z,EAAI9Z,GAEjB,OAAO0D,CACT,EASAb,EAAQwuI,MANR,SAAev3H,GAEb,IADA,IAAIpW,EAAM,GACD1D,EAAI,EAAGA,EAAI8Z,EAAI5Z,OAAQF,IAC9B0D,GAAOwtI,EAAMp3H,EAAI9Z,GAAGG,SAAS,KAC/B,OAAOuD,CACT,EAUAb,EAAQouI,MAAQA,EAYhBpuI,EAAQspI,QAVR,SAAiBryH,EAAKqwH,GAEpB,IADA,IAAIzmI,EAAM,GACD1D,EAAI,EAAGA,EAAI8Z,EAAI5Z,OAAQF,IAAK,CACnC,IAAI6wG,EAAI/2F,EAAI9Z,GACG,WAAXmqI,IACFt5B,EAAIogC,EAAMpgC,IACZntG,GAAO0tI,EAAMvgC,EAAE1wG,SAAS,IAC1B,CACA,OAAOuD,CACT,EASAb,EAAQquI,MAAQA,EAoBhBruI,EAAQuuI,MAAQA,EAgBhBvuI,EAAQ0nI,OAdR,SAAgBzwH,EAAK3Y,EAAOC,EAAK+oI,GAC/B,IAAI1yC,EAAMr2F,EAAMD,EAChByoI,EAAOnyC,EAAM,GAAM,GAEnB,IADA,IAAI/zF,EAAM,IAAI4F,MAAMmuF,EAAM,GACjBz3F,EAAI,EAAG0B,EAAIP,EAAOnB,EAAI0D,EAAIxD,OAAQF,IAAK0B,GAAK,EAAG,CACtD,IAAImvG,EAEFA,EADa,QAAXs5B,EACGrwH,EAAIpY,IAAM,GAAOoY,EAAIpY,EAAI,IAAM,GAAOoY,EAAIpY,EAAI,IAAM,EAAKoY,EAAIpY,EAAI,GAEjEoY,EAAIpY,EAAI,IAAM,GAAOoY,EAAIpY,EAAI,IAAM,GAAOoY,EAAIpY,EAAI,IAAM,EAAKoY,EAAIpY,GACxEgC,EAAI1D,GAAK6wG,IAAM,CACjB,CACA,OAAOntG,CACT,EAqBAb,EAAQupI,QAlBR,SAAiBtyH,EAAKqwH,GAEpB,IADA,IAAIzmI,EAAM,IAAI4F,MAAmB,EAAbwQ,EAAI5Z,QACfF,EAAI,EAAG0B,EAAI,EAAG1B,EAAI8Z,EAAI5Z,OAAQF,IAAK0B,GAAK,EAAG,CAClD,IAAIkF,EAAIkT,EAAI9Z,GACG,QAAXmqI,GACFzmI,EAAIhC,GAAKkF,IAAM,GACflD,EAAIhC,EAAI,GAAMkF,IAAM,GAAM,IAC1BlD,EAAIhC,EAAI,GAAMkF,IAAM,EAAK,IACzBlD,EAAIhC,EAAI,GAAS,IAAJkF,IAEblD,EAAIhC,EAAI,GAAKkF,IAAM,GACnBlD,EAAIhC,EAAI,GAAMkF,IAAM,GAAM,IAC1BlD,EAAIhC,EAAI,GAAMkF,IAAM,EAAK,IACzBlD,EAAIhC,GAAS,IAAJkF,EAEb,CACA,OAAOlD,CACT,EAMAb,EAAQiuI,OAHR,SAAgBjgC,EAAG1vD,GACjB,OAAQ0vD,IAAM1vD,EAAM0vD,GAAM,GAAK1vD,CACjC,EAMAt+C,EAAQkoI,OAHR,SAAgBl6B,EAAG1vD,GACjB,OAAQ0vD,GAAK1vD,EAAM0vD,IAAO,GAAK1vD,CACjC,EAMAt+C,EAAQmoI,MAHR,SAAe9pF,EAAGC,GAChB,OAAQD,EAAIC,IAAO,CACrB,EAMAt+C,EAAQooI,QAHR,SAAiB/pF,EAAGC,EAAGrvC,GACrB,OAAQovC,EAAIC,EAAIrvC,IAAO,CACzB,EAMAjP,EAAQqoI,QAHR,SAAiBhqF,EAAGC,EAAGrvC,EAAGsqF,GACxB,OAAQl7C,EAAIC,EAAIrvC,EAAIsqF,IAAO,CAC7B,EAMAv5F,EAAQypI,QAHR,SAAiBprF,EAAGC,EAAGrvC,EAAGsqF,EAAGt3F,GAC3B,OAAQo8C,EAAIC,EAAIrvC,EAAIsqF,EAAIt3F,IAAO,CACjC,EAYAjC,EAAQ2qI,MATR,SAAetsI,EAAKmnG,EAAKonC,EAAIC,GAC3B,IAAIC,EAAKzuI,EAAImnG,GAGTtB,EAAM2oC,EAFDxuI,EAAImnG,EAAM,KAEI,EACnBvB,GAAMC,EAAK2oC,EAAK,EAAI,GAAKD,EAAKE,EAClCzuI,EAAImnG,GAAOvB,IAAO,EAClB5lG,EAAImnG,EAAM,GAAKtB,CACjB,EAQAlkG,EAAQ4qI,SALR,SAAkBgC,EAAIC,EAAIC,EAAIC,GAG5B,OAFUF,EAAKE,IAAQ,EACRF,EAAK,EAAI,GAAKD,EAAKE,IACpB,CAChB,EAOA9sI,EAAQ6qI,SAJR,SAAkB+B,EAAIC,EAAIC,EAAIC,GAE5B,OADSF,EAAKE,IACA,CAChB,EAgBA/sI,EAAQ8qI,WAbR,SAAoB8B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC9C,IAAIh/C,EAAQ,EACR+V,EAAK2oC,EAST,OAPA1+C,IADA+V,EAAMA,EAAK6oC,IAAQ,GACLF,EAAK,EAAI,EAEvB1+C,IADA+V,EAAMA,EAAK+oC,IAAQ,GACLA,EAAK,EAAI,EAIdL,EAAKE,EAAKE,EAAKE,GAFxB/+C,IADA+V,EAAMA,EAAKipC,IAAQ,GACLA,EAAK,EAAI,KAGT,CAChB,EAOAntI,EAAQ+qI,WAJR,SAAoB6B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAE9C,OADSN,EAAKE,EAAKE,EAAKE,IACV,CAChB,EAkBAntI,EAAQgrI,WAfR,SAAoB4B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIxwE,GACtD,IAAIuxB,EAAQ,EACR+V,EAAK2oC,EAWT,OATA1+C,IADA+V,EAAMA,EAAK6oC,IAAQ,GACLF,EAAK,EAAI,EAEvB1+C,IADA+V,EAAMA,EAAK+oC,IAAQ,GACLA,EAAK,EAAI,EAEvB9+C,IADA+V,EAAMA,EAAKipC,IAAQ,GACLA,EAAK,EAAI,EAIdP,EAAKE,EAAKE,EAAKE,EAAKE,GAF7Bj/C,IADA+V,EAAMA,EAAKtnC,IAAQ,GACLA,EAAK,EAAI,KAGT,CAChB,EAQA58D,EAAQirI,WALR,SAAoB2B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIxwE,GAGtD,OAFSiwE,EAAKE,EAAKE,EAAKE,EAAKvwE,IAEf,CAChB,EAOA58D,EAAQuqI,UAJR,SAAmBqC,EAAIC,EAAIhyH,GAEzB,OADSgyH,GAAO,GAAKhyH,EAAS+xH,IAAO/xH,KACxB,CACf,EAOA7a,EAAQwqI,UAJR,SAAmBoC,EAAIC,EAAIhyH,GAEzB,OADS+xH,GAAO,GAAK/xH,EAASgyH,IAAOhyH,KACxB,CACf,EAMA7a,EAAQyqI,SAHR,SAAkBmC,EAAIC,EAAIhyH,GACxB,OAAO+xH,IAAO/xH,CAChB,EAOA7a,EAAQ0qI,SAJR,SAAkBkC,EAAIC,EAAIhyH,GAExB,OADS+xH,GAAO,GAAK/xH,EAASgyH,IAAOhyH,KACxB,CACf,0BClRA,IAAI4zH,EAA8B,uDAC9BC,EAAkB,qCAClBC,EAAkB,iBAClBC,EAAkB,oBAClBC,EAAoB,QACpBC,EAAuB,WAOvBC,EAAgB,iCAQpB,SAASjlI,EAAM9N,GACb,OAAOA,EAAMgO,QAAS0kI,EAAiB,GACzC,CAEA,SAASM,EAAehzI,GACtB,OAAO2yI,EAAgB5oI,KAAM/J,EAC/B,CAEA,SAASizI,EAAgBjzI,EAAOc,GAC9B,KAAOkyI,EAAehzI,EAAMc,KAC1BA,IAEF,OAAOA,CACT,CAEA,SAASoyI,EAAalzI,GACpB,OAAO8yI,EAAqB/oI,KAAM/J,KAC/B+yI,EAAchpI,KAAM/J,EACzB,CAiBA,MAAMmzI,EAQJ,WAAArkI,CAAa9O,GAGXF,KAAKszI,KAAO,GAERpzI,GACFF,KAAKiN,MAAO/M,EAGhB,CAOA,GAAAqzI,CAAKrzI,GAKH,IAHA,IAAIknD,EAAQ,GACR16C,EAAOxM,EAAMoF,cAERjE,EAAI,EAAGA,EAAIrB,KAAKszI,KAAK/xI,OAAQF,IACF,iBAAvBrB,KAAKszI,KAAMjyI,GAAIkyI,KAAoBvzI,KAAKszI,KAAMjyI,GAAIkyI,IAAIjuI,gBAAkBoH,GACjF06C,EAAM7jD,KAAMvD,KAAKszI,KAAMjyI,IAI3B,OAAO+lD,CAET,CAQA,GAAA9/C,CAAKwW,EAAM5d,GAET4d,EAAOA,EAAKxY,cACZpF,EAAQA,EAAMoF,cAId,IAFA,IAAI8hD,EAAQ,GAEH/lD,EAAI,EAAGA,EAAIrB,KAAKszI,KAAK/xI,OAAQF,IACE,iBAA3BrB,KAAKszI,KAAMjyI,GAAKyc,IAAuB9d,KAAKszI,KAAMjyI,GAAKyc,GAAOxY,gBAAkBpF,GACzFknD,EAAM7jD,KAAMvD,KAAKszI,KAAMjyI,IAI3B,OAAO+lD,CAET,CAGA,GAAAt7C,CAAKm6C,GAEH,OADAjmD,KAAKszI,KAAK/vI,KAAM0iD,GACTjmD,IACT,CAKA,SAAAwzI,CAAWvtF,GAMT,OAJKjmD,KAAKszI,KAAKn1G,MAAOs1G,IAASC,OAlFHC,EAkF0BF,EAlFjBG,EAkFsB3tF,EAhF3D7kD,OAAOD,KAAMwyI,GAAUpyI,SAAWH,OAAOD,KAAMyyI,GAAUryI,QACzDH,OAAOD,KAAMwyI,GAAUtxG,OACnB5hC,GAASA,KAAOmzI,GAAWD,EAASlzI,KAAUmzI,EAASnzI,KAJ/D,IAAgCkzI,EAASC,CAkF4B,KAC/D5zI,KAAKszI,KAAK/vI,KAAM0iD,GAGXjmD,IAET,CAEA,GAAAmN,CAAK2Q,EAAM5d,GAET4d,EAAOA,EAAKxY,cACZpF,EAAQA,EAAMoF,cAEd,IAAK,IAAIjE,EAAI,EAAGA,EAAIrB,KAAKszI,KAAK/xI,OAAQF,IACpC,GAAsC,iBAA3BrB,KAAKszI,KAAMjyI,GAAKyc,IAAuB9d,KAAKszI,KAAMjyI,GAAKyc,GAAOxY,gBAAkBpF,EACzF,OAAO,EAIX,OAAO,CAET,CAEA,KAAA+M,CAAO/M,EAAOc,GAaZ,IALA,IAAIJ,EAhJA,EAiJAW,GAHJrB,EAAQ8N,EAHR9N,GADAc,EAASA,GAAU,GACFd,EAAMsE,MAAOxD,GAAWd,GAGnBgO,QAAS4kI,EAAiB,KAG7BvxI,OAEfkyI,GADAzyI,EAAS,EACH,MAEHA,EAASO,GACd,GAtJE,IAsJEX,EAAuB,CACzB,GAAIsyI,EAAehzI,EAAMc,IAAY,CACnCA,IACA,QACF,CAAO,GAAsB,MAAlBd,EAAMc,GAaf,MAAM,IAAIe,MAAO,yBAA2B7B,EAAMc,GAAU,eAAiBA,GAN7E,GANW,MAAPyyI,IACS,MAAXA,EAAIF,IACFvzI,KAAKszI,KAAK/vI,QAAS8vI,EAAKQ,gBAAiBJ,IACzCzzI,KAAKszI,KAAK/vI,KAAMkwI,KAGP,KADThxI,EAAMvC,EAAM4J,QAAS,IAAK9I,IACb,MAAM,IAAIe,MAAO,2CAA6Cf,GAC/EyyI,EAAM,CAAE5sI,IAAK3G,EAAMsE,MAAOxD,EAAS,EAAGyB,IAEtCzB,EAASyB,EACT7B,EApKH,EAwKCI,GACF,MAAO,GAzKN,IAyKUJ,EAAsB,CAC/B,GAAIsyI,EAAehzI,EAAMc,IAAY,CACnCA,IACA,QACF,CAAO,GAAsB,MAAlBd,EAAMc,GACfJ,EA7KF,EA8KEI,QACK,IAAsB,MAAlBd,EAAMc,GAIf,MAAM,IAAIe,MAAO,yBAA2B7B,EAAMc,GAAU,eAAiBA,GAH7EJ,EAlLF,EAmLEI,GAGF,CACF,KAAO,IArLL,IAqLSJ,EAuDT,MAAM,IAAImB,MAAO,yBAA2BnB,EAAQ,KAtDpD,GAAqB,MAAjBV,EAAMc,IAAkBkyI,EAAehzI,EAAMc,IAAY,CAC3DA,IACA,QACF,EAEa,KADTyB,EAAMvC,EAAM4J,QAAS,IAAK9I,MACbyB,EAAMvC,EAAM4J,QAAS,IAAK9I,KAC9B,IAATyB,IAAaA,EAAMvC,EAAMqB,QAC7B,IAAIuc,EAAO9P,EAAM9N,EAAMsE,MAAOxD,EAAQyB,IAAQ6C,cAC1CwuI,EAAY,GAGhB,GAAsB,MAAlB5zI,EADJc,EAASmyI,EAAgBjzI,EADzBc,EAASyB,EAAM,IAIb,IADAzB,IACOA,EAASO,GAAS,CACvB,GAAsB,MAAlBrB,EAAMc,GAAkB,CAC1BA,IAAU,KACZ,CACsB,OAAlBd,EAAMc,IACRA,IAEF8yI,GAAa5zI,EAAMc,GACnBA,GACF,KACK,CAEL,IADA,IAAIyB,EAAMzB,EAAS,GACX+xI,EAAkB9oI,KAAM/J,EAAMuC,KAAUA,EAAMlB,GACpDkB,IAEFqxI,EAAY5zI,EAAMsE,MAAOxD,EAAQyB,GACjCzB,EAASyB,CACX,CAkBA,OAjBIgxI,EAAK31H,IAAUu1H,EAAKU,sBAAuBj2H,KAER,MAA5BA,EAAMA,EAAKvc,OAAS,GAC7BkyI,EAAK31H,GAASu1H,EAAKW,mBAAoBF,IAEvCA,EAAqB,SAATh2H,EACVg2H,EAAUxuI,cAAgBwuI,EACT,MAAfL,EAAK31H,GACHnT,MAAMC,QAAS6oI,EAAK31H,IACtB21H,EAAK31H,GAAOva,KAAMuwI,GAElBL,EAAK31H,GAAS,CAAE21H,EAAK31H,GAAQg2H,GAG/BL,EAAK31H,GAASg2H,IAGV5zI,EAAMc,IACZ,IAAK,IAAKJ,EAzOZ,EAyOgC,MAC9B,IAAK,IAAKA,EAxOZ,EA0OAI,GAGF,CAWF,OARW,MAAPyyI,IACS,MAAXA,EAAIF,IACFvzI,KAAKszI,KAAK/vI,QAAS8vI,EAAKQ,gBAAiBJ,IACzCzzI,KAAKszI,KAAK/vI,KAAMkwI,IAGpBA,EAAM,KAECzzI,IAET,CAEA,QAAAwB,GAME,IAJA,IAAI8xI,EAAO,GACPrtF,EAAO,GACPwtF,EAAM,KAEDpyI,EAAI,EAAGA,EAAIrB,KAAKszI,KAAK/xI,OAAQF,IACpCoyI,EAAMzzI,KAAKszI,KAAKjyI,GAChB4kD,EAAO7kD,OAAOD,KAAMnB,KAAKszI,KAAKjyI,IAAK27B,QAAQ,SAAUipB,EAAMnoC,GACzD,MAAa,QAATA,EAAwBmoC,EACrBA,EAAO,KAAOotF,EAAKY,gBAAiBn2H,EAAM21H,EAAK31H,GACxD,GAAG,IAAM21H,EAAI5sI,IAAM,KACnBysI,EAAK/vI,KAAM0iD,GAGb,OAAOqtF,EAAKjuI,KAAM,KAEpB,EAUFguI,EAAKa,qBAAuB,SAAUh0I,GACpC,OAAOyyI,EAA4B1oI,KAAM/J,EAC3C,EAEAmzI,EAAKpmI,MAAQ,SAAU/M,EAAOc,GAC5B,OAAO,IAAIqyI,GAAOpmI,MAAO/M,EAAOc,EAClC,EAEAqyI,EAAKU,sBAAwB,SAAUj2H,GACrC,MAAgB,QAATA,GAA2B,SAATA,GAA4B,UAATA,GACjC,UAATA,GAA6B,WAATA,CACxB,EAEAu1H,EAAKc,YAAc,SAAUr2H,GAC3B,MAAgB,QAATA,GAA2B,SAATA,GAA4B,WAATA,CAC9C,EAEAu1H,EAAKe,aAAe,SAAUl0I,GAC5B,OAAOA,EAAMgO,QAAS,KAAM,MAC9B,EAEAmlI,EAAKQ,gBAAkB,SAAUJ,GAE/B,OADWA,EAAIF,IAAIvuI,MAAO,KACdG,KAAK,SAAUouI,GACzB,IAAIrzI,EAAQkB,OAAOoU,OAAQ,CAAC,EAAGi+H,GAE/B,OADAvzI,EAAMqzI,IAAMA,EACLrzI,CACT,GACF,EAQAmzI,EAAKW,mBAAqB,SAAU9zI,GAClC,IAAIyP,EAAQ,6BAA6B0+E,KAAMnuF,GAC/C,MAAO,CACLy2B,SAAUhnB,EAAM,GAAGrK,cACnBmV,SAAU44H,EAAKa,qBAAsBvkI,EAAM,IACzC,KAAOA,EAAM,GAAGrK,cAClBpF,MAAOmzI,EAAKa,qBAAsBvkI,EAAM,IACtCxB,mBAAoBwB,EAAM,IAAOA,EAAM,GAE7C,EAQA0jI,EAAKgB,wBAA0B,SAAUv2H,EAAM8B,GAE7C,IAAInF,GAAamF,EAAKnF,UAAY,SAAUrV,cAc5C,OAAO0Y,EAAO,IAAMrD,EAAW,KAbhBmF,EAAK+W,UAAY,MAcnB,KAVT55B,OAAO+oG,SAAUlmF,EAAK1f,QAAWmzI,EAAKa,qBAAsBz5H,GAC/CmF,EAAK1f,MAAMsB,SAAUiZ,GAC3B1d,OAAO+oG,SAAUlmF,EAAK1f,OAChB0f,EAAK1f,MAAMsB,SAAU,OACjC0M,QAAS,gBAAiB,OAEdooG,mBAAoB12F,EAAK1f,OAM5C,EAQAmzI,EAAKY,gBAAkB,SAAUn2H,EAAM5d,GAErC,OAAIyK,MAAMC,QAAS1K,GACVA,EAAMiF,KAAMgd,GACVkxH,EAAKY,gBAAiBn2H,EAAMqE,KAClC9c,KAAM,MAGqB,MAA5ByY,EAAMA,EAAKvc,OAAS,IAAgC,iBAAVrB,EACrCmzI,EAAKgB,wBAAyBv2H,EAAM5d,IAGzCmzI,EAAKc,YAAar2H,GACpB5d,EAAQkzI,EAAalzI,GACnB,IAAMmzI,EAAKe,aAAcl0I,GAAU,IACnCmzI,EAAKe,aAAcl0I,GACZkzI,EAAalzI,KAQtBA,EAAQ,KALRA,GAFAA,EAAQo2G,mBAAoBp2G,IAGzBgO,QAAS,OAAQ,KACjBA,QAAS,OAAQ,KACjBA,QAAS,OAAQ,MAEE,KAGjB4P,EAAO,IAAM5d,EAEtB,EAEA+D,EAAOC,QAAUmvI,iBCxZjBnvI,EAAQyb,KAAO,SAAU7d,EAAQd,EAAQszI,EAAMC,EAAMC,GACnD,IAAIruI,EAAG8B,EACHwsI,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTvzI,EAAIizI,EAAQE,EAAS,EAAK,EAC1B/2C,EAAI62C,GAAQ,EAAI,EAChBpvI,EAAIpD,EAAOd,EAASK,GAOxB,IALAA,GAAKo8F,EAELt3F,EAAIjB,GAAM,IAAO0vI,GAAU,EAC3B1vI,KAAQ0vI,EACRA,GAASH,EACFG,EAAQ,EAAGzuI,EAAS,IAAJA,EAAWrE,EAAOd,EAASK,GAAIA,GAAKo8F,EAAGm3C,GAAS,GAKvE,IAHA3sI,EAAI9B,GAAM,IAAOyuI,GAAU,EAC3BzuI,KAAQyuI,EACRA,GAASL,EACFK,EAAQ,EAAG3sI,EAAS,IAAJA,EAAWnG,EAAOd,EAASK,GAAIA,GAAKo8F,EAAGm3C,GAAS,GAEvE,GAAU,IAANzuI,EACFA,EAAI,EAAIwuI,MACH,IAAIxuI,IAAMuuI,EACf,OAAOzsI,EAAI+W,IAAsB4wF,KAAd1qG,GAAK,EAAI,GAE5B+C,GAAQtD,KAAK66F,IAAI,EAAG+0C,GACpBpuI,GAAQwuI,CACV,CACA,OAAQzvI,GAAK,EAAI,GAAK+C,EAAItD,KAAK66F,IAAI,EAAGr5F,EAAIouI,EAC5C,EAEArwI,EAAQvB,MAAQ,SAAUb,EAAQ5B,EAAOc,EAAQszI,EAAMC,EAAMC,GAC3D,IAAIruI,EAAG8B,EAAGkL,EACNshI,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBG,EAAe,KAATN,EAAc5vI,KAAK66F,IAAI,GAAI,IAAM76F,KAAK66F,IAAI,GAAI,IAAM,EAC1Dn+F,EAAIizI,EAAO,EAAKE,EAAS,EACzB/2C,EAAI62C,EAAO,GAAK,EAChBpvI,EAAIhF,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQyE,KAAK49E,IAAIriF,GAEb6D,MAAM7D,IAAUA,IAAU0vG,KAC5B3nG,EAAIlE,MAAM7D,GAAS,EAAI,EACvBiG,EAAIuuI,IAEJvuI,EAAIxB,KAAKk+E,MAAMl+E,KAAK2xB,IAAIp2B,GAASyE,KAAKmwI,KAClC50I,GAASiT,EAAIxO,KAAK66F,IAAI,GAAIr5F,IAAM,IAClCA,IACAgN,GAAK,IAGLjT,GADEiG,EAAIwuI,GAAS,EACNE,EAAK1hI,EAEL0hI,EAAKlwI,KAAK66F,IAAI,EAAG,EAAIm1C,IAEpBxhI,GAAK,IACfhN,IACAgN,GAAK,GAGHhN,EAAIwuI,GAASD,GACfzsI,EAAI,EACJ9B,EAAIuuI,GACKvuI,EAAIwuI,GAAS,GACtB1sI,GAAM/H,EAAQiT,EAAK,GAAKxO,KAAK66F,IAAI,EAAG+0C,GACpCpuI,GAAQwuI,IAER1sI,EAAI/H,EAAQyE,KAAK66F,IAAI,EAAGm1C,EAAQ,GAAKhwI,KAAK66F,IAAI,EAAG+0C,GACjDpuI,EAAI,IAIDouI,GAAQ,EAAGzyI,EAAOd,EAASK,GAAS,IAAJ4G,EAAU5G,GAAKo8F,EAAGx1F,GAAK,IAAKssI,GAAQ,GAI3E,IAFApuI,EAAKA,GAAKouI,EAAQtsI,EAClBwsI,GAAQF,EACDE,EAAO,EAAG3yI,EAAOd,EAASK,GAAS,IAAJ8E,EAAU9E,GAAKo8F,EAAGt3F,GAAK,IAAKsuI,GAAQ,GAE1E3yI,EAAOd,EAASK,EAAIo8F,IAAU,IAAJv4F,CAC5B,8vBC7DA,IAAI6vI,EAAS,SAGTC,EAAQ,EACRC,EAAO,GAAKD,EACZE,EAAOD,EAAO,EAIdE,EAAU,CAAC,EAOf,SAASC,EAAO3B,GACVA,IACFA,EAAIvzI,OAAQ,EAEhB,CAKA,SAASm1I,IAAW,CAEpB,SAASC,EAAWC,GAIlB,YAHkBp1I,IAAdo1I,EAAKz1I,OACPy1I,EAAKz1I,KAAOy1I,EAAKC,UAAUC,IAEtBF,EAAKz1I,IACd,CAEA,SAAS41I,EAAUH,EAAMp3H,GAQvB,GAAqB,iBAAVA,EAAoB,CAC7B,IAAIw3H,EAAcx3H,IAAU,EAC5B,GAAI,GAAKw3H,IAAgBx3H,GAAyB,aAAhBw3H,EAChC,OAAO32H,IAETb,EAAQw3H,CACV,CACA,OAAOx3H,EAAQ,EAAIm3H,EAAWC,GAAQp3H,EAAQA,CAChD,CAEA,SAASs3H,IACP,OAAO,CACT,CAEA,SAASG,EAAWC,EAAOpzI,EAAK3C,GAC9B,OACc,IAAV+1I,IAAgB7xC,EAAM6xC,SACZ11I,IAATL,GAAsB+1I,IAAU/1I,UAC1BK,IAARsC,QAA+BtC,IAATL,GAAsB2C,GAAO3C,EAExD,CAEA,SAASg2I,EAAaD,EAAO/1I,GAC3B,OAAOi2I,EAAaF,EAAO/1I,EAAM,EACnC,CAEA,SAASk2I,EAAWvzI,EAAK3C,GACvB,OAAOi2I,EAAatzI,EAAK3C,EAAMA,EACjC,CAEA,SAASi2I,EAAa53H,EAAOre,EAAMm2I,GAGjC,YAAiB91I,IAAVge,EACH83H,EACAjyC,EAAM7lF,GACNre,IAAS8vG,IACP9vG,EAC4B,EAA5B6E,KAAKC,IAAI,EAAG9E,EAAOqe,QACZhe,IAATL,GAAsBA,IAASqe,EAC/BA,EACwB,EAAxBxZ,KAAK4tC,IAAIzyC,EAAMqe,EACrB,CAEA,SAAS6lF,EAAM9jG,GAEb,OAAOA,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,IAAU,GACpD,CAEA,IAAIg2I,EAAuB,6BAE3B,SAASC,EAAaC,GACpB,OAAOpuG,QAAQouG,GAAmBA,EAAgBF,GACpD,CAEA,IAAIG,EAAkB,0BAEtB,SAASC,EAAQC,GACf,OAAOvuG,QAAQuuG,GAAcA,EAAWF,GAC1C,CAEA,IAAIG,EAAoB,4BAExB,SAASC,EAAUC,GACjB,OAAO1uG,QAAQ0uG,GAAgBA,EAAaF,GAC9C,CAEA,SAASG,EAAcC,GACrB,OAAON,EAAQM,IAAqBH,EAAUG,EAChD,CAEA,IAAIC,EAAa,SAAoB32I,GACnC,OAAOi2I,EAAaj2I,GAASA,EAAQ42I,EAAI52I,EAC3C,EAEI62I,EAAgC,SAAUF,GAC5C,SAASE,EAAgB72I,GACvB,OAAOo2I,EAAQp2I,GAASA,EAAQ82I,EAAS92I,EAC3C,CAMA,OAJK22I,IAAaE,EAAgBhlI,UAAY8kI,GAC9CE,EAAgBr1I,UAAYN,OAAO2G,OAAQ8uI,GAAcA,EAAWn1I,WACpEq1I,EAAgBr1I,UAAUsN,YAAc+nI,EAEjCA,CACT,CAVmC,CAUjCF,GAEEI,EAAkC,SAAUJ,GAC9C,SAASI,EAAkB/2I,GACzB,OAAOu2I,EAAUv2I,GAASA,EAAQg3I,EAAWh3I,EAC/C,CAMA,OAJK22I,IAAaI,EAAkBllI,UAAY8kI,GAChDI,EAAkBv1I,UAAYN,OAAO2G,OAAQ8uI,GAAcA,EAAWn1I,WACtEu1I,EAAkBv1I,UAAUsN,YAAcioI,EAEnCA,CACT,CAVqC,CAUnCJ,GAEEM,EAA8B,SAAUN,GAC1C,SAASM,EAAcj3I,GACrB,OAAOi2I,EAAaj2I,KAAWy2I,EAAcz2I,GAASA,EAAQk3I,GAAOl3I,EACvE,CAMA,OAJK22I,IAAaM,EAAcplI,UAAY8kI,GAC5CM,EAAcz1I,UAAYN,OAAO2G,OAAQ8uI,GAAcA,EAAWn1I,WAClEy1I,EAAcz1I,UAAUsN,YAAcmoI,EAE/BA,CACT,CAViC,CAU/BN,GAEFA,EAAWQ,MAAQN,EACnBF,EAAWS,QAAUL,EACrBJ,EAAWt4H,IAAM44H,EAEjB,IAAII,EAAgB,wBAEpB,SAASC,EAAMC,GACb,OAAOzvG,QAAQyvG,GAAYA,EAASF,GACtC,CAEA,IAAIG,EAAmB,2BAEvB,SAASC,EAASC,GAChB,OAAO5vG,QAAQ4vG,GAAeA,EAAYF,GAC5C,CAEA,SAASG,EAAYC,GACnB,OAAO3B,EAAa2B,IAAmBH,EAASG,EAClD,CAEA,IAAIC,EAAoB,4BAExB,SAASC,EAAUC,GACjB,OAAOjwG,QAAQiwG,GAAgBA,EAAaF,GAC9C,CAEA,IAAIG,EAAe,EACfC,EAAiB,EACjBC,EAAkB,EAElBC,EAAyC,mBAAX9uI,QAAyBA,OAAOe,SAC9DguI,EAAuB,aAEvBC,EAAkBF,GAAwBC,EAE1CE,EAAW,SAAkBtyI,GAC/BlG,KAAKkG,KAAOA,CACd,EAiBA,SAASuyI,EAAc/rI,EAAM3J,EAAGu/C,EAAGo2F,GACjC,IAAIx4I,EAAiB,IAATwM,EAAa3J,EAAa,IAAT2J,EAAa41C,EAAI,CAACv/C,EAAGu/C,GAOlD,OANAo2F,EACKA,EAAex4I,MAAQA,EACvBw4I,EAAiB,CAChBx4I,MAAOA,EACPmG,MAAM,GAELqyI,CACT,CAEA,SAASC,IACP,MAAO,CAAEz4I,WAAOC,EAAWkG,MAAM,EACnC,CAEA,SAASuyI,EAAYC,GACnB,QAAIluI,MAAMC,QAAQiuI,MAKTC,EAAcD,EACzB,CAEA,SAASE,EAAWC,GAClB,OAAOA,GAA+C,mBAAvBA,EAAc9yI,IAC/C,CAEA,SAAS+yI,EAAY59E,GACnB,IAAI69E,EAAaJ,EAAcz9E,GAC/B,OAAO69E,GAAcA,EAAWvwI,KAAK0yD,EACvC,CAEA,SAASy9E,EAAcz9E,GACrB,IAAI69E,EACF79E,IACEg9E,GAAwBh9E,EAASg9E,IACjCh9E,EAASi9E,IACb,GAA0B,mBAAfY,EACT,OAAOA,CAEX,CAxDAV,EAAS92I,UAAUF,SAAW,WAC5B,MAAO,YACT,EAEAg3I,EAASW,KAAOjB,EAChBM,EAASv4G,OAASk4G,EAClBK,EAASY,QAAUhB,EAEnBI,EAAS92I,UAAUooG,QAAU0uC,EAAS92I,UAAU23I,SAAW,WACzD,OAAOr5I,KAAKwB,UACd,EACAg3I,EAAS92I,UAAU62I,GAAmB,WACpC,OAAOv4I,IACT,EAuDA,IAAI0I,EAAiBtH,OAAOM,UAAUgH,eAEtC,SAAS4wI,EAAYp5I,GACnB,SAAIyK,MAAMC,QAAQ1K,IAA2B,iBAAVA,IAKjCA,GACiB,iBAAVA,GACP4D,OAAO89F,UAAU1hG,EAAMqB,SACvBrB,EAAMqB,QAAU,IACE,IAAjBrB,EAAMqB,OAE2B,IAA9BH,OAAOD,KAAKjB,GAAOqB,OAGnBrB,EAAMwI,eAAexI,EAAMqB,OAAS,GAE5C,CAEA,IAAIu1I,EAAoB,SAAUD,GAChC,SAASC,EAAI52I,GACX,OAAOA,QACHq5I,KACA1B,EAAY33I,GACZA,EAAMs5I,QAyUd,SAAsBt5I,GACpB,IA9WyB24I,EACrBK,EA6WAO,EAAMC,GAAyBx5I,GACnC,GAAIu5I,EACF,OA/WEP,EAAaJ,EADQD,EAgXE34I,KA9WNg5I,IAAeL,EAAcvrI,QA+W5CmsI,EAAIE,eA5WZ,SAAwBd,GACtB,IAAIK,EAAaJ,EAAcD,GAC/B,OAAOK,GAAcA,IAAeL,EAAc13I,IACpD,CA0WQy4I,CAAe15I,GACfu5I,EAAII,WACJJ,EAEN,GAAqB,iBAAVv5I,EACT,OAAO,IAAI45I,GAAU55I,GAEvB,MAAM,IAAIgK,UACR,mEAAqEhK,EAEzE,CAvVQ65I,CAAa75I,EACnB,CA0DA,OAxDK22I,IAAaC,EAAI/kI,UAAY8kI,GAClCC,EAAIp1I,UAAYN,OAAO2G,OAAQ8uI,GAAcA,EAAWn1I,WACxDo1I,EAAIp1I,UAAUsN,YAAc8nI,EAE5BA,EAAIp1I,UAAU83I,MAAQ,WACpB,OAAOx5I,IACT,EAEA82I,EAAIp1I,UAAUF,SAAW,WACvB,OAAOxB,KAAKg6I,WAAW,QAAS,IAClC,EAEAlD,EAAIp1I,UAAUu4I,YAAc,WAK1B,OAJKj6I,KAAKiuH,QAAUjuH,KAAKk6I,oBACvBl6I,KAAKiuH,OAASjuH,KAAKm6I,WAAWtzG,UAC9B7mC,KAAKF,KAAOE,KAAKiuH,OAAO1sH,QAEnBvB,IACT,EAIA82I,EAAIp1I,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAChD,IAAItuE,EAAQhxB,KAAKiuH,OACjB,GAAIj9F,EAAO,CAGT,IAFA,IAAIlxB,EAAOkxB,EAAMzvB,OACbF,EAAI,EACDA,IAAMvB,GAAM,CACjB,IAAIukC,EAAQrT,EAAMsuE,EAAUx/F,IAASuB,EAAIA,KACzC,IAAqC,IAAjC44D,EAAG51B,EAAM,GAAIA,EAAM,GAAIrkC,MACzB,KAEJ,CACA,OAAOqB,CACT,CACA,OAAOrB,KAAKk6I,kBAAkBjgF,EAAIqlC,EACpC,EAIAw3C,EAAIp1I,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GACpD,IAAItuE,EAAQhxB,KAAKiuH,OACjB,GAAIj9F,EAAO,CACT,IAAIlxB,EAAOkxB,EAAMzvB,OACbF,EAAI,EACR,OAAO,IAAIm3I,GAAS,WAClB,GAAIn3I,IAAMvB,EACR,MAtHD,CAAEI,WAAOC,EAAWkG,MAAM,GAwH3B,IAAIg+B,EAAQrT,EAAMsuE,EAAUx/F,IAASuB,EAAIA,KACzC,OAAOo3I,EAAc/rI,EAAM23B,EAAM,GAAIA,EAAM,GAC7C,GACF,CACA,OAAOrkC,KAAKq6I,mBAAmB3tI,EAAM4yF,EACvC,EAEOw3C,CACT,CAlEuB,CAkErBD,GAEEG,EAAyB,SAAUF,GACrC,SAASE,EAAS92I,GAChB,OAAOA,QACHq5I,KAAgBe,aAChBnE,EAAaj2I,GACbo2I,EAAQp2I,GACNA,EAAMs5I,QACNt5I,EAAMy5I,eACRhC,EAASz3I,GACTA,EAAMs5I,QACNe,GAAkBr6I,EACxB,CAUA,OARK42I,IAAME,EAASjlI,UAAY+kI,GAChCE,EAASt1I,UAAYN,OAAO2G,OAAQ+uI,GAAOA,EAAIp1I,WAC/Cs1I,EAASt1I,UAAUsN,YAAcgoI,EAEjCA,EAASt1I,UAAU44I,WAAa,WAC9B,OAAOt6I,IACT,EAEOg3I,CACT,CAtB4B,CAsB1BF,GAEEI,EAA2B,SAAUJ,GACvC,SAASI,EAAWh3I,GAClB,OAAOA,QACHq5I,KACApD,EAAaj2I,GACbo2I,EAAQp2I,GACNA,EAAMi6I,WACNj6I,EAAMs6I,eACR7C,EAASz3I,GACTA,EAAMs5I,QAAQW,WACdM,GAAoBv6I,EAC1B,CAkBA,OAhBK42I,IAAMI,EAAWnlI,UAAY+kI,GAClCI,EAAWx1I,UAAYN,OAAO2G,OAAQ+uI,GAAOA,EAAIp1I,WACjDw1I,EAAWx1I,UAAUsN,YAAckoI,EAEnCA,EAAWwD,GAAK,WACd,OAAOxD,EAAWv0H,UACpB,EAEAu0H,EAAWx1I,UAAU84I,aAAe,WAClC,OAAOx6I,IACT,EAEAk3I,EAAWx1I,UAAUF,SAAW,WAC9B,OAAOxB,KAAKg6I,WAAW,QAAS,IAClC,EAEO9C,CACT,CA9B8B,CA8B5BJ,GAEEM,GAAuB,SAAUN,GACnC,SAASM,EAAOl3I,GACd,OACEi2I,EAAaj2I,KAAWy2I,EAAcz2I,GAASA,EAAQg3I,EAAWh3I,IAClE25I,UACJ,CAcA,OAZK/C,IAAMM,EAAOrlI,UAAY+kI,GAC9BM,EAAO11I,UAAYN,OAAO2G,OAAQ+uI,GAAOA,EAAIp1I,WAC7C01I,EAAO11I,UAAUsN,YAAcooI,EAE/BA,EAAOsD,GAAK,WACV,OAAOtD,EAAOz0H,UAChB,EAEAy0H,EAAO11I,UAAUm4I,SAAW,WAC1B,OAAO75I,IACT,EAEOo3I,CACT,CApB0B,CAoBxBN,GAEFA,EAAIU,MAAQA,EACZV,EAAIO,MAAQL,EACZF,EAAIv4H,IAAM64H,GACVN,EAAIQ,QAAUJ,EAEdJ,EAAIp1I,UAAU61I,IAAiB,EAI/B,IAAIoD,GAAyB,SAAUzD,GACrC,SAASyD,EAASx6H,GAChBngB,KAAK46I,OAASz6H,EACdngB,KAAKF,KAAOqgB,EAAM5e,MACpB,CAoCA,OAlCK21I,IAAayD,EAAS5oI,UAAYmlI,GACvCyD,EAASj5I,UAAYN,OAAO2G,OAAQmvI,GAAcA,EAAWx1I,WAC7Di5I,EAASj5I,UAAUsN,YAAc2rI,EAEjCA,EAASj5I,UAAU4F,IAAM,SAAc6W,EAAO08H,GAC5C,OAAO76I,KAAKmN,IAAIgR,GAASne,KAAK46I,OAAOlF,EAAU11I,KAAMme,IAAU08H,CACjE,EAEAF,EAASj5I,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAIrD,IAHA,IAAIn/E,EAAQngB,KAAK46I,OACb96I,EAAOqgB,EAAM5e,OACbF,EAAI,EACDA,IAAMvB,GAAM,CACjB,IAAI4pI,EAAKpqC,EAAUx/F,IAASuB,EAAIA,IAChC,IAAgC,IAA5B44D,EAAG95C,EAAMupH,GAAKA,EAAI1pI,MACpB,KAEJ,CACA,OAAOqB,CACT,EAEAs5I,EAASj5I,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GACzD,IAAIn/E,EAAQngB,KAAK46I,OACb96I,EAAOqgB,EAAM5e,OACbF,EAAI,EACR,OAAO,IAAIm3I,GAAS,WAClB,GAAIn3I,IAAMvB,EACR,MA1PC,CAAEI,WAAOC,EAAWkG,MAAM,GA4P7B,IAAIqjI,EAAKpqC,EAAUx/F,IAASuB,EAAIA,IAChC,OAAOo3I,EAAc/rI,EAAMg9H,EAAIvpH,EAAMupH,GACvC,GACF,EAEOiR,CACT,CAzC4B,CAyC1BzD,GAEE4C,GAA0B,SAAU9C,GACtC,SAAS8C,EAAU9uH,GACjB,IAAI7pB,EAAOC,OAAOD,KAAK6pB,GAAQkc,OAC7B9lC,OAAOyvG,sBAAwBzvG,OAAOyvG,sBAAsB7lF,GAAU,IAExEhrB,KAAK86I,QAAU9vH,EACfhrB,KAAK+6I,MAAQ55I,EACbnB,KAAKF,KAAOqB,EAAKI,MACnB,CA6CA,OA3CKy1I,IAAW8C,EAAU/nI,UAAYilI,GACtC8C,EAAUp4I,UAAYN,OAAO2G,OAAQivI,GAAYA,EAASt1I,WAC1Do4I,EAAUp4I,UAAUsN,YAAc8qI,EAElCA,EAAUp4I,UAAU4F,IAAM,SAAc7G,EAAKo6I,GAC3C,YAAoB16I,IAAhB06I,GAA8B76I,KAAKmN,IAAI1M,GAGpCT,KAAK86I,QAAQr6I,GAFXo6I,CAGX,EAEAf,EAAUp4I,UAAUyL,IAAM,SAAc1M,GACtC,OAAOiI,EAAeC,KAAK3I,KAAK86I,QAASr6I,EAC3C,EAEAq5I,EAAUp4I,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAKtD,IAJA,IAAIt0E,EAAShrB,KAAK86I,QACd35I,EAAOnB,KAAK+6I,MACZj7I,EAAOqB,EAAKI,OACZF,EAAI,EACDA,IAAMvB,GAAM,CACjB,IAAIW,EAAMU,EAAKm+F,EAAUx/F,IAASuB,EAAIA,KACtC,IAAmC,IAA/B44D,EAAGjvC,EAAOvqB,GAAMA,EAAKT,MACvB,KAEJ,CACA,OAAOqB,CACT,EAEAy4I,EAAUp4I,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GAC1D,IAAIt0E,EAAShrB,KAAK86I,QACd35I,EAAOnB,KAAK+6I,MACZj7I,EAAOqB,EAAKI,OACZF,EAAI,EACR,OAAO,IAAIm3I,GAAS,WAClB,GAAIn3I,IAAMvB,EACR,MAlTC,CAAEI,WAAOC,EAAWkG,MAAM,GAoT7B,IAAI5F,EAAMU,EAAKm+F,EAAUx/F,IAASuB,EAAIA,KACtC,OAAOo3I,EAAc/rI,EAAMjM,EAAKuqB,EAAOvqB,GACzC,GACF,EAEOq5I,CACT,CAtD6B,CAsD3B9C,GACF8C,GAAUp4I,UAAUq2I,IAAqB,EAEzC,IAiDIiD,GAjDAC,GAA8B,SAAU/D,GAC1C,SAAS+D,EAAcC,GACrBl7I,KAAKm7I,YAAcD,EACnBl7I,KAAKF,KAAOo7I,EAAW35I,QAAU25I,EAAWp7I,IAC9C,CAwCA,OAtCKo3I,IAAa+D,EAAclpI,UAAYmlI,GAC5C+D,EAAcv5I,UAAYN,OAAO2G,OAAQmvI,GAAcA,EAAWx1I,WAClEu5I,EAAcv5I,UAAUsN,YAAcisI,EAEtCA,EAAcv5I,UAAUw4I,kBAAoB,SAA4BjgF,EAAIqlC,GAC1E,GAAIA,EACF,OAAOt/F,KAAKi6I,cAAczE,UAAUv7E,EAAIqlC,GAE1C,IACIh1F,EAAW2uI,EADEj5I,KAAKm7I,aAElB99G,EAAa,EACjB,GAAI07G,EAAWzuI,GAEb,IADA,IAAIrE,IACKA,EAAOqE,EAASpE,QAAQG,OACY,IAAvC4zD,EAAGh0D,EAAK/F,MAAOm9B,IAAcr9B,QAKrC,OAAOq9B,CACT,EAEA49G,EAAcv5I,UAAU24I,mBAAqB,SAA6B3tI,EAAM4yF,GAC9E,GAAIA,EACF,OAAOt/F,KAAKi6I,cAAcG,WAAW1tI,EAAM4yF,GAE7C,IACIh1F,EAAW2uI,EADEj5I,KAAKm7I,aAEtB,IAAKpC,EAAWzuI,GACd,OAAO,IAAIkuI,EAASG,GAEtB,IAAIt7G,EAAa,EACjB,OAAO,IAAIm7G,GAAS,WAClB,IAAIvyI,EAAOqE,EAASpE,OACpB,OAAOD,EAAKI,KAAOJ,EAAOwyI,EAAc/rI,EAAM2wB,IAAcp3B,EAAK/F,MACnE,GACF,EAEO+6I,CACT,CA7CiC,CA6C/B/D,GAMF,SAASqC,KACP,OAAOyB,KAAcA,GAAY,IAAIL,GAAS,IAChD,CAEA,SAASJ,GAAkBr6I,GACzB,IAAIu5I,EAAMC,GAAyBx5I,GACnC,GAAIu5I,EACF,OAAOA,EAAIE,eAEb,GAAqB,iBAAVz5I,EACT,OAAO,IAAI45I,GAAU55I,GAEvB,MAAM,IAAIgK,UACR,2EACEhK,EAEN,CAEA,SAASu6I,GAAoBv6I,GAC3B,IAAIu5I,EAAMC,GAAyBx5I,GACnC,GAAIu5I,EACF,OAAOA,EAET,MAAM,IAAIvvI,UACR,kDAAoDhK,EAExD,CAmBA,SAASw5I,GAAyBx5I,GAChC,OAAOo5I,EAAYp5I,GACf,IAAIy6I,GAASz6I,GACb04I,EAAY14I,GACZ,IAAI+6I,GAAc/6I,QAClBC,CACN,CAEA,IAAIi7I,GAAgB,wBAEpB,SAASC,GAAMC,GACb,OAAOtzG,QAAQszG,GAAYA,EAASF,IACtC,CAEA,SAASG,GAAaC,GACpB,OAAOH,GAAMG,IAAoBxD,EAAUwD,EAC7C,CAEA,SAASC,GAAcC,GACrB,OAAO1zG,QACL0zG,GAC+B,mBAAtBA,EAAWh7G,QACa,mBAAxBg7G,EAAWC,SAExB,CAwDA,SAASC,GAAG/sD,EAAQC,GAClB,GAAID,IAAWC,GAAWD,GAAWA,GAAUC,GAAWA,EACxD,OAAO,EAET,IAAKD,IAAWC,EACd,OAAO,EAET,GAC4B,mBAAnBD,EAAO2M,SACY,mBAAnB1M,EAAO0M,QACd,CAGA,IAFA3M,EAASA,EAAO2M,cAChB1M,EAASA,EAAO0M,YACU3M,GAAWA,GAAUC,GAAWA,EACxD,OAAO,EAET,IAAKD,IAAWC,EACd,OAAO,CAEX,CACA,SACE2sD,GAAc5sD,IACd4sD,GAAc3sD,IACdD,EAAOnuD,OAAOouD,GAElB,CAEA,IAAI+sD,GACmB,mBAAdl3I,KAAKk3I,OAAqD,IAA9Bl3I,KAAKk3I,KAAK,WAAY,GACrDl3I,KAAKk3I,KACL,SAAct5F,EAAGC,GAGf,IAAIrvC,EAAQ,OAFZovC,GAAK,GAGDk7C,EAAQ,OAFZj7C,GAAK,GAIL,OAAQrvC,EAAIsqF,IAAQl7C,IAAM,IAAMk7C,EAAItqF,GAAKqvC,IAAM,KAAQ,KAAQ,GAAM,CACvE,EAMN,SAASs5F,GAAIC,GACX,OAASA,IAAQ,EAAK,WAAqB,WAANA,CACvC,CAEA,IAAIC,GAAiB56I,OAAOM,UAAU85F,QAEtC,SAASp5E,GAAKpa,GACZ,GAAS,MAALA,EACF,OAAOi0I,GAAYj0I,GAGrB,GAA0B,mBAAfA,EAAE2zI,SAEX,OAAOG,GAAI9zI,EAAE2zI,SAAS3zI,IAGxB,IA0Le6B,EAvISzJ,EACpB87I,EApDA55F,GA0LWz4C,EA1LC7B,GA2LLwzF,UAAYwgD,IAAyC,mBAAhBnyI,EAAI2xF,QAChD3xF,EAAI2xF,QAAQ3xF,GACZA,EA3LJ,GAAS,MAALy4C,EACF,OAAO25F,GAAY35F,GAGrB,cAAeA,GACb,IAAK,UAIH,OAAOA,EAAI,WAAa,WAC1B,IAAK,SACH,OAuBN,SAAoB1/C,GAClB,GAAIA,GAAMA,GAAKA,IAAMgtG,IACnB,OAAO,EAET,IAAIxtF,EAAW,EAAJxf,EAIX,IAHIwf,IAASxf,IACXwf,GAAY,WAAJxf,GAEHA,EAAI,YAETwf,GADAxf,GAAK,WAGP,OAAOk5I,GAAI15H,EACb,CApCa+5H,CAAW75F,GACpB,IAAK,SACH,OAAOA,EAAE/gD,OAAS66I,SAsCPj8I,KADX+7I,EAASG,GADWj8I,EAnCCkiD,MAsCvB45F,EAASI,GAAWl8I,GAChBm8I,KAA2BC,KAC7BD,GAAyB,EACzBF,GAAkB,CAAC,GAErBE,KACAF,GAAgBj8I,GAAU87I,GAErBA,GA7CCI,GAAWh6F,GACjB,IAAK,SACL,IAAK,WACH,OAyEN,SAAmBz4C,GACjB,IAAIqyI,EACJ,GAAIO,SAEat8I,KADf+7I,EAASQ,GAAQp1I,IAAIuC,IAEnB,OAAOqyI,EAKX,QAAe/7I,KADf+7I,EAASryI,EAAI8yI,KAEX,OAAOT,EAGT,IAAKU,GAAmB,CAEtB,QAAez8I,KADf+7I,EAASryI,EAAIgzI,sBAAwBhzI,EAAIgzI,qBAAqBF,KAE5D,OAAOT,EAIT,QAAe/7I,KADf+7I,EA8DJ,SAAuB1kG,GACrB,GAAIA,GAAQA,EAAKslG,SAAW,EAC1B,OAAQtlG,EAAKslG,UACX,KAAK,EACH,OAAOtlG,EAAKulG,SACd,KAAK,EACH,OAAOvlG,EAAKwlG,iBAAmBxlG,EAAKwlG,gBAAgBD,SAG5D,CAvEaE,CAAcpzI,IAErB,OAAOqyI,CAEX,CAIA,GAFAA,EAASgB,KAELT,GACFC,GAAQ5wI,IAAIjC,EAAKqyI,OACZ,SAAqB/7I,IAAjBg9I,KAAoD,IAAtBA,GAAatzI,GACpD,MAAM,IAAI9H,MAAM,mDACX,GAAI66I,GACTx7I,OAAO+C,eAAe0F,EAAK8yI,GAAc,CACvCt1I,YAAY,EACZkB,cAAc,EACdD,UAAU,EACVpI,MAAOg8I,SAEJ,QACwB/7I,IAA7B0J,EAAIgzI,sBACJhzI,EAAIgzI,uBAAyBhzI,EAAImF,YAAYtN,UAAUm7I,qBAMvDhzI,EAAIgzI,qBAAuB,WACzB,OAAO78I,KAAKgP,YAAYtN,UAAUm7I,qBAAqBt2I,MACrDvG,KACA2iB,UAEJ,EACA9Y,EAAIgzI,qBAAqBF,IAAgBT,MACpC,SAAqB/7I,IAAjB0J,EAAIizI,SAOb,MAAM,IAAI/6I,MAAM,sDAFhB8H,EAAI8yI,IAAgBT,CAGtB,EAEA,OAAOA,CACT,CA1IakB,CAAU96F,GACnB,IAAK,SACH,OA0DN,SAAoB4sD,GAClB,IAAIgtC,EAASmB,GAAUnuC,GACvB,YAAe/uG,IAAX+7I,IAIJA,EAASgB,KAETG,GAAUnuC,GAAOgtC,GALRA,CAQX,CArEaoB,CAAWh7F,GACpB,QACE,GAA0B,mBAAfA,EAAE9gD,SACX,OAAO86I,GAAWh6F,EAAE9gD,YAEtB,MAAM,IAAIO,MAAM,qBAAuBugD,EAAI,sBAEjD,CAEA,SAAS25F,GAAYsB,GACnB,OAAmB,OAAZA,EAAmB,WAA6B,UACzD,CAiCA,SAASjB,GAAWl8I,GAQlB,IADA,IAAI87I,EAAS,EACJxS,EAAK,EAAGA,EAAKtpI,EAAOmB,OAAQmoI,IACnCwS,EAAU,GAAKA,EAAS97I,EAAOf,WAAWqqI,GAAO,EAEnD,OAAOoS,GAAII,EACb,CAmFA,IAAIiB,GAAe/7I,OAAO+7I,aAGtBP,GAAoB,WACtB,IAEE,OADAx7I,OAAO+C,eAAe,CAAC,EAAG,IAAK,CAAC,IACzB,CACT,CAAE,MAAOgC,GACP,OAAO,CACT,CACD,CAPuB,GA4BxB,SAAS+2I,KACP,IAAIA,IAAaM,GAIjB,OAHkB,WAAdA,KACFA,GAAc,GAETN,CACT,CAGA,IACIR,GADAD,GAAkC,mBAAZgB,QAEtBhB,KACFC,GAAU,IAAIe,SAGhB,IAAIJ,GAAYj8I,OAAO2G,OAAO,MAE1By1I,GAAc,EAEdb,GAAe,oBACG,mBAAXpzI,SACTozI,GAAepzI,OAAOozI,KAGxB,IAAIP,GAA+B,GAC/BI,GAA6B,IAC7BD,GAAyB,EACzBF,GAAkB,CAAC,EAEnBqB,GAAgC,SAAU1G,GAC5C,SAAS0G,EAAgBC,EAASC,GAChC59I,KAAK69I,MAAQF,EACb39I,KAAK89I,SAAWF,EAChB59I,KAAKF,KAAO69I,EAAQ79I,IACtB,CAgDA,OA9CKk3I,IAAW0G,EAAgB3rI,UAAYilI,GAC5C0G,EAAgBh8I,UAAYN,OAAO2G,OAAQivI,GAAYA,EAASt1I,WAChEg8I,EAAgBh8I,UAAUsN,YAAc0uI,EAExCA,EAAgBh8I,UAAU4F,IAAM,SAAc7G,EAAKo6I,GACjD,OAAO76I,KAAK69I,MAAMv2I,IAAI7G,EAAKo6I,EAC7B,EAEA6C,EAAgBh8I,UAAUyL,IAAM,SAAc1M,GAC5C,OAAOT,KAAK69I,MAAM1wI,IAAI1M,EACxB,EAEAi9I,EAAgBh8I,UAAUq8I,SAAW,WACnC,OAAO/9I,KAAK69I,MAAME,UACpB,EAEAL,EAAgBh8I,UAAU49F,QAAU,WAClC,IAAI0+C,EAAWh+I,KAEXi+I,EAAmBC,GAAel+I,MAAM,GAI5C,OAHKA,KAAK89I,WACRG,EAAiBF,SAAW,WAAc,OAAOC,EAASH,MAAMrE,QAAQl6C,SAAW,GAE9E2+C,CACT,EAEAP,EAAgBh8I,UAAUyD,IAAM,SAAcg5I,EAAQv1H,GACpD,IAAIo1H,EAAWh+I,KAEXo+I,EAAiBC,GAAWr+I,KAAMm+I,EAAQv1H,GAI9C,OAHK5oB,KAAK89I,WACRM,EAAeL,SAAW,WAAc,OAAOC,EAASH,MAAMrE,QAAQr0I,IAAIg5I,EAAQv1H,EAAU,GAEvFw1H,CACT,EAEAV,EAAgBh8I,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAC5D,IAAI0+C,EAAWh+I,KAEf,OAAOA,KAAK69I,MAAMrI,WAAU,SAAUlzF,EAAGv/C,GAAK,OAAOk3D,EAAG3X,EAAGv/C,EAAGi7I,EAAW,GAAG1+C,EAC9E,EAEAo+C,EAAgBh8I,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GAChE,OAAOt/F,KAAK69I,MAAMzD,WAAW1tI,EAAM4yF,EACrC,EAEOo+C,CACT,CAtDmC,CAsDjC1G,GACF0G,GAAgBh8I,UAAUq2I,IAAqB,EAE/C,IAAIuG,GAAkC,SAAUpH,GAC9C,SAASoH,EAAkB/I,GACzBv1I,KAAK69I,MAAQtI,EACbv1I,KAAKF,KAAOy1I,EAAKz1I,IACnB,CAwCA,OAtCKo3I,IAAaoH,EAAkBvsI,UAAYmlI,GAChDoH,EAAkB58I,UAAYN,OAAO2G,OAAQmvI,GAAcA,EAAWx1I,WACtE48I,EAAkB58I,UAAUsN,YAAcsvI,EAE1CA,EAAkB58I,UAAUsa,SAAW,SAAmB9b,GACxD,OAAOF,KAAK69I,MAAM7hI,SAAS9b,EAC7B,EAEAo+I,EAAkB58I,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAC9D,IAAI0+C,EAAWh+I,KAEXqB,EAAI,EAER,OADAi+F,GAAWg2C,EAAWt1I,MACfA,KAAK69I,MAAMrI,WAChB,SAAUlzF,GAAK,OAAO2X,EAAG3X,EAAGg9C,EAAU0+C,EAASl+I,OAASuB,EAAIA,IAAK28I,EAAW,GAC5E1+C,EAEJ,EAEAg/C,EAAkB58I,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GAClE,IAAI0+C,EAAWh+I,KAEXsK,EAAWtK,KAAK69I,MAAMzD,WAAWjC,EAAgB74C,GACjDj+F,EAAI,EAER,OADAi+F,GAAWg2C,EAAWt1I,MACf,IAAIw4I,GAAS,WAClB,IAAIvyI,EAAOqE,EAASpE,OACpB,OAAOD,EAAKI,KACRJ,EACAwyI,EACE/rI,EACA4yF,EAAU0+C,EAASl+I,OAASuB,EAAIA,IAChC4E,EAAK/F,MACL+F,EAER,GACF,EAEOq4I,CACT,CA7CqC,CA6CnCpH,GAEEqH,GAA8B,SAAUnH,GAC1C,SAASmH,EAAchJ,GACrBv1I,KAAK69I,MAAQtI,EACbv1I,KAAKF,KAAOy1I,EAAKz1I,IACnB,CA0BA,OAxBKs3I,IAASmH,EAAcxsI,UAAYqlI,GACxCmH,EAAc78I,UAAYN,OAAO2G,OAAQqvI,GAAUA,EAAO11I,WAC1D68I,EAAc78I,UAAUsN,YAAcuvI,EAEtCA,EAAc78I,UAAUyL,IAAM,SAAc1M,GAC1C,OAAOT,KAAK69I,MAAM7hI,SAASvb,EAC7B,EAEA89I,EAAc78I,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAC1D,IAAI0+C,EAAWh+I,KAEf,OAAOA,KAAK69I,MAAMrI,WAAU,SAAUlzF,GAAK,OAAO2X,EAAG3X,EAAGA,EAAG07F,EAAW,GAAG1+C,EAC3E,EAEAi/C,EAAc78I,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GAC9D,IAAIh1F,EAAWtK,KAAK69I,MAAMzD,WAAWjC,EAAgB74C,GACrD,OAAO,IAAIk5C,GAAS,WAClB,IAAIvyI,EAAOqE,EAASpE,OACpB,OAAOD,EAAKI,KACRJ,EACAwyI,EAAc/rI,EAAMzG,EAAK/F,MAAO+F,EAAK/F,MAAO+F,EAClD,GACF,EAEOs4I,CACT,CA/BiC,CA+B/BnH,IAEEoH,GAAoC,SAAUxH,GAChD,SAASwH,EAAoBlxI,GAC3BtN,KAAK69I,MAAQvwI,EACbtN,KAAKF,KAAOwN,EAAQxN,IACtB,CAqDA,OAnDKk3I,IAAWwH,EAAoBzsI,UAAYilI,GAChDwH,EAAoB98I,UAAYN,OAAO2G,OAAQivI,GAAYA,EAASt1I,WACpE88I,EAAoB98I,UAAUsN,YAAcwvI,EAE5CA,EAAoB98I,UAAUy4I,SAAW,WACvC,OAAOn6I,KAAK69I,MAAMrE,OACpB,EAEAgF,EAAoB98I,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAChE,IAAI0+C,EAAWh+I,KAEf,OAAOA,KAAK69I,MAAMrI,WAAU,SAAUnxG,GAGpC,GAAIA,EAAO,CACTo6G,GAAcp6G,GACd,IAAIq6G,EAAoBvI,EAAa9xG,GACrC,OAAO41B,EACLykF,EAAoBr6G,EAAM/8B,IAAI,GAAK+8B,EAAM,GACzCq6G,EAAoBr6G,EAAM/8B,IAAI,GAAK+8B,EAAM,GACzC25G,EAEJ,CACF,GAAG1+C,EACL,EAEAk/C,EAAoB98I,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GACpE,IAAIh1F,EAAWtK,KAAK69I,MAAMzD,WAAWjC,EAAgB74C,GACrD,OAAO,IAAIk5C,GAAS,WAClB,OAAa,CACX,IAAIvyI,EAAOqE,EAASpE,OACpB,GAAID,EAAKI,KACP,OAAOJ,EAET,IAAIo+B,EAAQp+B,EAAK/F,MAGjB,GAAImkC,EAAO,CACTo6G,GAAcp6G,GACd,IAAIq6G,EAAoBvI,EAAa9xG,GACrC,OAAOo0G,EACL/rI,EACAgyI,EAAoBr6G,EAAM/8B,IAAI,GAAK+8B,EAAM,GACzCq6G,EAAoBr6G,EAAM/8B,IAAI,GAAK+8B,EAAM,GACzCp+B,EAEJ,CACF,CACF,GACF,EAEOu4I,CACT,CA1DuC,CA0DrCxH,GAQF,SAAS2H,GAAYzD,GACnB,IAAI0D,EAAeC,GAAa3D,GAmChC,OAlCA0D,EAAaf,MAAQ3C,EACrB0D,EAAa9+I,KAAOo7I,EAAWp7I,KAC/B8+I,EAAaE,KAAO,WAAc,OAAO5D,CAAY,EACrD0D,EAAat/C,QAAU,WACrB,IAAI2+C,EAAmB/C,EAAW57C,QAAQ/4F,MAAMvG,MAEhD,OADAi+I,EAAiBa,KAAO,WAAc,OAAO5D,EAAW57C,SAAW,EAC5D2+C,CACT,EACAW,EAAazxI,IAAM,SAAU1M,GAAO,OAAOy6I,EAAWl/H,SAASvb,EAAM,EACrEm+I,EAAa5iI,SAAW,SAAUvb,GAAO,OAAOy6I,EAAW/tI,IAAI1M,EAAM,EACrEm+I,EAAa3E,YAAc8E,GAC3BH,EAAa1E,kBAAoB,SAAUjgF,EAAIqlC,GAC7C,IAAI0+C,EAAWh+I,KAEf,OAAOk7I,EAAW1F,WAAU,SAAUlzF,EAAGv/C,GAAK,OAA8B,IAAvBk3D,EAAGl3D,EAAGu/C,EAAG07F,EAAqB,GAAG1+C,EACxF,EACAs/C,EAAavE,mBAAqB,SAAU3tI,EAAM4yF,GAChD,GAAI5yF,IAAS0rI,EAAiB,CAC5B,IAAI9tI,EAAW4wI,EAAWd,WAAW1tI,EAAM4yF,GAC3C,OAAO,IAAIk5C,GAAS,WAClB,IAAIvyI,EAAOqE,EAASpE,OACpB,IAAKD,EAAKI,KAAM,CACd,IAAItD,EAAIkD,EAAK/F,MAAM,GACnB+F,EAAK/F,MAAM,GAAK+F,EAAK/F,MAAM,GAC3B+F,EAAK/F,MAAM,GAAK6C,CAClB,CACA,OAAOkD,CACT,GACF,CACA,OAAOi1I,EAAWd,WAChB1tI,IAASyrI,EAAiBD,EAAeC,EACzC74C,EAEJ,EACOs/C,CACT,CAEA,SAASP,GAAWnD,EAAYiD,EAAQv1H,GACtC,IAAIw1H,EAAiBS,GAAa3D,GAkClC,OAjCAkD,EAAet+I,KAAOo7I,EAAWp7I,KACjCs+I,EAAejxI,IAAM,SAAU1M,GAAO,OAAOy6I,EAAW/tI,IAAI1M,EAAM,EAClE29I,EAAe92I,IAAM,SAAU7G,EAAKo6I,GAClC,IAAIv4F,EAAI44F,EAAW5zI,IAAI7G,EAAK00I,GAC5B,OAAO7yF,IAAM6yF,EACT0F,EACAsD,EAAOx1I,KAAKigB,EAAS05B,EAAG7hD,EAAKy6I,EACnC,EACAkD,EAAelE,kBAAoB,SAAUjgF,EAAIqlC,GAC/C,IAAI0+C,EAAWh+I,KAEf,OAAOk7I,EAAW1F,WAChB,SAAUlzF,EAAGv/C,EAAGoQ,GAAK,OAA0D,IAAnD8mD,EAAGkkF,EAAOx1I,KAAKigB,EAAS05B,EAAGv/C,EAAGoQ,GAAIpQ,EAAGi7I,EAAqB,GACtF1+C,EAEJ,EACA8+C,EAAe/D,mBAAqB,SAAU3tI,EAAM4yF,GAClD,IAAIh1F,EAAW4wI,EAAWd,WAAWhC,EAAiB94C,GACtD,OAAO,IAAIk5C,GAAS,WAClB,IAAIvyI,EAAOqE,EAASpE,OACpB,GAAID,EAAKI,KACP,OAAOJ,EAET,IAAIo+B,EAAQp+B,EAAK/F,MACbO,EAAM4jC,EAAM,GAChB,OAAOo0G,EACL/rI,EACAjM,EACA09I,EAAOx1I,KAAKigB,EAASyb,EAAM,GAAI5jC,EAAKy6I,GACpCj1I,EAEJ,GACF,EACOm4I,CACT,CAEA,SAASF,GAAehD,EAAY0C,GAClC,IAAII,EAAWh+I,KAEXi+I,EAAmBY,GAAa3D,GA2CpC,OA1CA+C,EAAiBJ,MAAQ3C,EACzB+C,EAAiBn+I,KAAOo7I,EAAWp7I,KACnCm+I,EAAiB3+C,QAAU,WAAc,OAAO47C,CAAY,EACxDA,EAAW4D,OACbb,EAAiBa,KAAO,WACtB,IAAIF,EAAeD,GAAYzD,GAE/B,OADA0D,EAAat/C,QAAU,WAAc,OAAO47C,EAAW4D,MAAQ,EACxDF,CACT,GAEFX,EAAiB32I,IAAM,SAAU7G,EAAKo6I,GAAe,OAAOK,EAAW5zI,IAAIs2I,EAAUn9I,GAAO,EAAIA,EAAKo6I,EAAc,EACnHoD,EAAiB9wI,IAAM,SAAU1M,GAAO,OAAOy6I,EAAW/tI,IAAIywI,EAAUn9I,GAAO,EAAIA,EAAM,EACzFw9I,EAAiBjiI,SAAW,SAAU9b,GAAS,OAAOg7I,EAAWl/H,SAAS9b,EAAQ,EAClF+9I,EAAiBhE,YAAc8E,GAC/Bd,EAAiBzI,UAAY,SAAUv7E,EAAIqlC,GACzC,IAAI0+C,EAAWh+I,KAEXqB,EAAI,EAER,OADAi+F,GAAWg2C,EAAW4F,GACfA,EAAW1F,WAChB,SAAUlzF,EAAGv/C,GAAK,OAAOk3D,EAAG3X,EAAGs7F,EAAU76I,EAAIu8F,EAAU0+C,EAASl+I,OAASuB,EAAIA,IAAK28I,EAAW,IAC5F1+C,EAEL,EACA2+C,EAAiB7D,WAAa,SAAU1tI,EAAM4yF,GAC5C,IAAIj+F,EAAI,EACRi+F,GAAWg2C,EAAW4F,GACtB,IAAI5wI,EAAW4wI,EAAWd,WAAWhC,GAAkB94C,GACvD,OAAO,IAAIk5C,GAAS,WAClB,IAAIvyI,EAAOqE,EAASpE,OACpB,GAAID,EAAKI,KACP,OAAOJ,EAET,IAAIo+B,EAAQp+B,EAAK/F,MACjB,OAAOu4I,EACL/rI,EACAkxI,EAAUv5G,EAAM,GAAKi7D,EAAU0+C,EAASl+I,OAASuB,EAAIA,IACrDgjC,EAAM,GACNp+B,EAEJ,GACF,EACOg4I,CACT,CAEA,SAASe,GAAc9D,EAAYtwH,EAAWhC,EAASg1H,GACrD,IAAIqB,EAAiBJ,GAAa3D,GA2ClC,OA1CI0C,IACFqB,EAAe9xI,IAAM,SAAU1M,GAC7B,IAAI6hD,EAAI44F,EAAW5zI,IAAI7G,EAAK00I,GAC5B,OAAO7yF,IAAM6yF,KAAavqH,EAAUjiB,KAAKigB,EAAS05B,EAAG7hD,EAAKy6I,EAC5D,EACA+D,EAAe33I,IAAM,SAAU7G,EAAKo6I,GAClC,IAAIv4F,EAAI44F,EAAW5zI,IAAI7G,EAAK00I,GAC5B,OAAO7yF,IAAM6yF,GAAWvqH,EAAUjiB,KAAKigB,EAAS05B,EAAG7hD,EAAKy6I,GACpD54F,EACAu4F,CACN,GAEFoE,EAAe/E,kBAAoB,SAAUjgF,EAAIqlC,GAC/C,IAAI0+C,EAAWh+I,KAEXq9B,EAAa,EAOjB,OANA69G,EAAW1F,WAAU,SAAUlzF,EAAGv/C,EAAGoQ,GACnC,GAAIyX,EAAUjiB,KAAKigB,EAAS05B,EAAGv/C,EAAGoQ,GAEhC,OADAkqB,IACO48B,EAAG3X,EAAGs7F,EAAU76I,EAAIs6B,EAAa,EAAG2gH,EAE/C,GAAG1+C,GACIjiE,CACT,EACA4hH,EAAe5E,mBAAqB,SAAU3tI,EAAM4yF,GAClD,IAAIh1F,EAAW4wI,EAAWd,WAAWhC,EAAiB94C,GAClDjiE,EAAa,EACjB,OAAO,IAAIm7G,GAAS,WAClB,OAAa,CACX,IAAIvyI,EAAOqE,EAASpE,OACpB,GAAID,EAAKI,KACP,OAAOJ,EAET,IAAIo+B,EAAQp+B,EAAK/F,MACbO,EAAM4jC,EAAM,GACZnkC,EAAQmkC,EAAM,GAClB,GAAIzZ,EAAUjiB,KAAKigB,EAAS1oB,EAAOO,EAAKy6I,GACtC,OAAOzC,EAAc/rI,EAAMkxI,EAAUn9I,EAAM48B,IAAcn9B,EAAO+F,EAEpE,CACF,GACF,EACOg5I,CACT,CAmCA,SAASC,GAAahE,EAAYrF,EAAOpzI,EAAKm7I,GAC5C,IAAIuB,EAAejE,EAAWp7I,KAE9B,GAAI81I,EAAWC,EAAOpzI,EAAK08I,GACzB,OAAOjE,EAGT,IAAIkE,EAAgBtJ,EAAaD,EAAOsJ,GACpCE,EAAcrJ,EAAWvzI,EAAK08I,GAKlC,GAAIC,GAAkBA,GAAiBC,GAAgBA,EACrD,OAAOH,GAAahE,EAAW1B,QAAQS,cAAepE,EAAOpzI,EAAKm7I,GAOpE,IACI0B,EADAC,EAAeF,EAAcD,EAE7BG,GAAiBA,IACnBD,EAAYC,EAAe,EAAI,EAAIA,GAGrC,IAAIC,EAAWX,GAAa3D,GAqE5B,OAjEAsE,EAAS1/I,KACO,IAAdw/I,EAAkBA,EAAapE,EAAWp7I,MAAQw/I,QAAcn/I,GAE7Dy9I,GAAWpG,EAAM0D,IAAeoE,GAAa,IAChDE,EAASl4I,IAAM,SAAU6W,EAAO08H,GAE9B,OADA18H,EAAQu3H,EAAU11I,KAAMme,KACR,GAAKA,EAAQmhI,EACzBpE,EAAW5zI,IAAI6W,EAAQihI,EAAevE,GACtCA,CACN,GAGF2E,EAAStF,kBAAoB,SAAUjgF,EAAIqlC,GACzC,IAAI0+C,EAAWh+I,KAEf,GAAkB,IAAds/I,EACF,OAAO,EAET,GAAIhgD,EACF,OAAOt/F,KAAKi6I,cAAczE,UAAUv7E,EAAIqlC,GAE1C,IAAImgD,EAAU,EACVC,GAAa,EACbriH,EAAa,EAUjB,OATA69G,EAAW1F,WAAU,SAAUlzF,EAAGv/C,GAChC,IAAM28I,KAAeA,EAAaD,IAAYL,GAE5C,OADA/hH,KAEoD,IAAlD48B,EAAG3X,EAAGs7F,EAAU76I,EAAIs6B,EAAa,EAAG2gH,IACpC3gH,IAAeiiH,CAGrB,IACOjiH,CACT,EAEAmiH,EAASnF,mBAAqB,SAAU3tI,EAAM4yF,GAC5C,GAAkB,IAAdggD,GAAmBhgD,EACrB,OAAOt/F,KAAKi6I,cAAcG,WAAW1tI,EAAM4yF,GAG7C,GAAkB,IAAdggD,EACF,OAAO,IAAI9G,EAASG,GAEtB,IAAIruI,EAAW4wI,EAAWd,WAAW1tI,EAAM4yF,GACvCmgD,EAAU,EACVpiH,EAAa,EACjB,OAAO,IAAIm7G,GAAS,WAClB,KAAOiH,IAAYL,GACjB90I,EAASpE,OAEX,KAAMm3B,EAAaiiH,EACjB,MAjvCC,CAAEp/I,WAAOC,EAAWkG,MAAM,GAmvC7B,IAAIJ,EAAOqE,EAASpE,OACpB,OAAI03I,GAAWlxI,IAASyrI,GAAkBlyI,EAAKI,KACtCJ,EAGAwyI,EAAc/rI,EAAM2wB,EAAa,EADtC3wB,IAASwrI,OACgC/3I,EAEF8F,EAAK/F,MAAM,GAFE+F,EAG1D,GACF,EAEOu5I,CACT,CA6CA,SAASG,GAAiBzE,EAAYtwH,EAAWhC,EAASg1H,GACxD,IAAIgC,EAAef,GAAa3D,GAiDhC,OAhDA0E,EAAa1F,kBAAoB,SAAUjgF,EAAIqlC,GAC7C,IAAI0+C,EAAWh+I,KAEf,GAAIs/F,EACF,OAAOt/F,KAAKi6I,cAAczE,UAAUv7E,EAAIqlC,GAE1C,IAAIogD,GAAa,EACbriH,EAAa,EAOjB,OANA69G,EAAW1F,WAAU,SAAUlzF,EAAGv/C,EAAGoQ,GACnC,IAAMusI,KAAeA,EAAa90H,EAAUjiB,KAAKigB,EAAS05B,EAAGv/C,EAAGoQ,IAE9D,OADAkqB,IACO48B,EAAG3X,EAAGs7F,EAAU76I,EAAIs6B,EAAa,EAAG2gH,EAE/C,IACO3gH,CACT,EACAuiH,EAAavF,mBAAqB,SAAU3tI,EAAM4yF,GAChD,IAAI0+C,EAAWh+I,KAEf,GAAIs/F,EACF,OAAOt/F,KAAKi6I,cAAcG,WAAW1tI,EAAM4yF,GAE7C,IAAIh1F,EAAW4wI,EAAWd,WAAWhC,EAAiB94C,GAClD0qC,GAAW,EACX3sG,EAAa,EACjB,OAAO,IAAIm7G,GAAS,WAClB,IAAIvyI,EACAlD,EACAu/C,EACJ,EAAG,CAED,IADAr8C,EAAOqE,EAASpE,QACPG,KACP,OAAIu3I,GAAWlxI,IAASyrI,EACflyI,EAGAwyI,EAAc/rI,EAAM2wB,IADzB3wB,IAASwrI,OAC8B/3I,EAEF8F,EAAK/F,MAAM,GAFE+F,GAIxD,IAAIo+B,EAAQp+B,EAAK/F,MACjB6C,EAAIshC,EAAM,GACVie,EAAIje,EAAM,GACV2lG,IAAaA,EAAWp/G,EAAUjiB,KAAKigB,EAAS05B,EAAGv/C,EAAGi7I,GACxD,OAAShU,GACT,OAAOt9H,IAAS0rI,EAAkBnyI,EAAOwyI,EAAc/rI,EAAM3J,EAAGu/C,EAAGr8C,EACrE,GACF,EACO25I,CACT,CAmDA,SAASC,GAAe3E,EAAY7hE,EAAOukE,GACzC,IAAIkC,EAAejB,GAAa3D,GAmDhC,OAlDA4E,EAAa5F,kBAAoB,SAAUjgF,EAAIqlC,GAC7C,GAAIA,EACF,OAAOt/F,KAAKi6I,cAAczE,UAAUv7E,EAAIqlC,GAE1C,IAAIjiE,EAAa,EACb0iH,GAAU,EAed,OAdA,SAASC,EAASzK,EAAM0K,GACtB1K,EAAKC,WAAU,SAAUlzF,EAAGv/C,GAS1B,QARMs2E,GAAS4mE,EAAe5mE,IAAU88D,EAAa7zF,GACnD09F,EAAS19F,EAAG29F,EAAe,IAE3B5iH,KAC0D,IAAtD48B,EAAG3X,EAAGs7F,EAAU76I,EAAIs6B,EAAa,EAAGyiH,KACtCC,GAAU,KAGNA,CACV,GAAGzgD,EACL,CACA0gD,CAAS9E,EAAY,GACd79G,CACT,EACAyiH,EAAazF,mBAAqB,SAAU3tI,EAAM4yF,GAChD,GAAIA,EACF,OAAOt/F,KAAKi6I,cAAcG,WAAW1tI,EAAM4yF,GAE7C,IAAIh1F,EAAW4wI,EAAWd,WAAW1tI,EAAM4yF,GACvC3+F,EAAQ,GACR08B,EAAa,EACjB,OAAO,IAAIm7G,GAAS,WAClB,KAAOluI,GAAU,CACf,IAAIrE,EAAOqE,EAASpE,OACpB,IAAkB,IAAdD,EAAKI,KAAT,CAIA,IAAIi8C,EAAIr8C,EAAK/F,MAIb,GAHIwM,IAAS0rI,IACX91F,EAAIA,EAAE,IAEF+2B,KAAS14E,EAAMY,OAAS83E,KAAU88D,EAAa7zF,GAInD,OAAOs7F,EAAU33I,EAAOwyI,EAAc/rI,EAAM2wB,IAAcilB,EAAGr8C,GAH7DtF,EAAM4C,KAAK+G,GACXA,EAAWg4C,EAAE83F,WAAW1tI,EAAM4yF,EAPhC,MAFEh1F,EAAW3J,EAAM6C,KAarB,CACA,MAn8CG,CAAEtD,WAAOC,EAAWkG,MAAM,EAo8C/B,GACF,EACOy5I,CACT,CA2CA,SAASI,GAAYhF,EAAYiF,EAAYhC,GACtCgC,IACHA,EAAaC,IAEf,IAAIC,EAAoB/J,EAAQ4E,GAC5B/8H,EAAQ,EACR7Q,EAAU4tI,EACX1B,QACAr0I,KAAI,SAAUm9C,EAAGv/C,GAAK,MAAO,CAACA,EAAGu/C,EAAGnkC,IAASggI,EAASA,EAAO77F,EAAGv/C,EAAGm4I,GAAc54F,EAAI,IACrFy7F,WACAl3G,UAYH,OAXAv5B,EACGihC,MAAK,SAAUgU,EAAGC,GAAK,OAAO29F,EAAW59F,EAAE,GAAIC,EAAE,KAAOD,EAAE,GAAKC,EAAE,EAAI,IACrE93C,QACC21I,EACI,SAAU/9F,EAAGjhD,GACXiM,EAAQjM,GAAGE,OAAS,CACtB,EACA,SAAU+gD,EAAGjhD,GACXiM,EAAQjM,GAAKihD,EAAE,EACjB,GAED+9F,EACHrJ,EAAS1pI,GACTmpI,EAAUyE,GACVhE,EAAW5pI,GACX8pI,GAAO9pI,EACb,CAEA,SAASgzI,GAAWpF,EAAYiF,EAAYhC,GAI1C,GAHKgC,IACHA,EAAaC,IAEXjC,EAAQ,CACV,IAAI95G,EAAQ62G,EACT1B,QACAr0I,KAAI,SAAUm9C,EAAGv/C,GAAK,MAAO,CAACu/C,EAAG67F,EAAO77F,EAAGv/C,EAAGm4I,GAAc,IAC5Dl+G,QAAO,SAAUulB,EAAGC,GAAK,OAAQ+9F,GAAWJ,EAAY59F,EAAE,GAAIC,EAAE,IAAMA,EAAID,CAAI,IACjF,OAAOle,GAASA,EAAM,EACxB,CACA,OAAO62G,EAAWl+G,QAAO,SAAUulB,EAAGC,GAAK,OAAQ+9F,GAAWJ,EAAY59F,EAAGC,GAAKA,EAAID,CAAI,GAC5F,CAEA,SAASg+F,GAAWJ,EAAY59F,EAAGC,GACjC,IAAIg+F,EAAOL,EAAW39F,EAAGD,GAGzB,OACY,IAATi+F,GAAch+F,IAAMD,IAAMC,SAAiCA,GAAMA,IAClEg+F,EAAO,CAEX,CAEA,SAASC,GAAeC,EAASC,EAAQC,EAAOC,GAC9C,IAAIC,EAAcjC,GAAa6B,GAC3BK,EAAQ,IAAIpG,GAASiG,GAAOz7I,KAAI,SAAU9D,GAAK,OAAOA,EAAEvB,IAAM,IAqDlE,OApDAghJ,EAAYhhJ,KAAO+gJ,EAASE,EAAMn8I,MAAQm8I,EAAMxuG,MAGhDuuG,EAAYtL,UAAY,SAAUv7E,EAAIqlC,GAiBpC,IAHA,IACIr5F,EADAqE,EAAWtK,KAAKo6I,WAAWjC,EAAgB74C,GAE3CjiE,EAAa,IACRp3B,EAAOqE,EAASpE,QAAQG,OACY,IAAvC4zD,EAAGh0D,EAAK/F,MAAOm9B,IAAcr9B,QAInC,OAAOq9B,CACT,EACAyjH,EAAYzG,mBAAqB,SAAU3tI,EAAM4yF,GAC/C,IAAIhsC,EAAYstF,EAAMz7I,KACpB,SAAU9D,GAAK,OAASA,EAAIw1I,EAAWx1I,GAAK43I,EAAY35C,EAAUj+F,EAAEi+F,UAAYj+F,EAAK,IAEnFg8B,EAAa,EACb2jH,GAAS,EACb,OAAO,IAAIxI,GAAS,WAClB,IAAIyI,EAKJ,OAJKD,IACHC,EAAQ3tF,EAAUnuD,KAAI,SAAU9D,GAAK,OAAOA,EAAE6E,MAAQ,IACtD86I,EAASH,EAASI,EAAM5+G,OAAM,SAAUn9B,GAAK,OAAOA,EAAEmB,IAAM,IAAK46I,EAAM9iH,MAAK,SAAUj5B,GAAK,OAAOA,EAAEmB,IAAM,KAExG26I,EAjlDD,CAAE9gJ,WAAOC,EAAWkG,MAAM,GAolDtBoyI,EACL/rI,EACA2wB,IACAsjH,EAAOp6I,MACL,KACA06I,EAAM97I,KAAI,SAAUD,GAAK,OAAOA,EAAEhF,KAAO,KAG/C,GACF,EACO4gJ,CACT,CAIA,SAASI,GAAM3L,EAAMkE,GACnB,OAAOlE,IAASkE,EAAMlE,EAAOiC,EAAMjC,GAAQkE,EAAMlE,EAAKvmI,YAAYyqI,EACpE,CAEA,SAASgF,GAAcp6G,GACrB,GAAIA,IAAUjjC,OAAOijC,GACnB,MAAM,IAAIn6B,UAAU,0BAA4Bm6B,EAEpD,CAEA,SAAS88G,GAAgBjG,GACvB,OAAO5E,EAAQ4E,GACXnE,EACAN,EAAUyE,GACVjE,EACAE,CACN,CAEA,SAAS0H,GAAa3D,GACpB,OAAO95I,OAAO2G,QACXuuI,EAAQ4E,GACLlE,EACAP,EAAUyE,GACVhE,EACAE,IACF11I,UAEN,CAEA,SAASq9I,KACP,OAAI/+I,KAAK69I,MAAM5D,aACbj6I,KAAK69I,MAAM5D,cACXj6I,KAAKF,KAAOE,KAAK69I,MAAM/9I,KAChBE,MAEF82I,EAAIp1I,UAAUu4I,YAAYtxI,KAAK3I,KACxC,CAEA,SAASogJ,GAAkB79F,EAAGC,GAC5B,YAAUriD,IAANoiD,QAAyBpiD,IAANqiD,EACd,OAGCriD,IAANoiD,EACK,OAGCpiD,IAANqiD,GACM,EAGHD,EAAIC,EAAI,EAAID,EAAIC,GAAK,EAAI,CAClC,CAEA,SAAS4+F,GAAQ1oD,EAAK13F,GACpBA,EAASA,GAAU,EAGnB,IAFA,IAAI83F,EAAMn0F,KAAKC,IAAI,EAAG8zF,EAAIn3F,OAASP,GAC/BqgJ,EAAS,IAAI12I,MAAMmuF,GACd4wC,EAAK,EAAGA,EAAK5wC,EAAK4wC,IACzB2X,EAAO3X,GAAMhxC,EAAIgxC,EAAK1oI,GAExB,OAAOqgJ,CACT,CAEA,SAASC,GAAU7vB,EAAWtuH,GAC5B,IAAKsuH,EAAa,MAAM,IAAI1vH,MAAMoB,EACpC,CAEA,SAASo+I,GAAkBzhJ,GACzBwhJ,GACExhJ,IAAS8vG,IACT,oDAEJ,CAEA,SAAS4xC,GAAcC,GACrB,GAAInI,EAAYmI,IAA+B,iBAAZA,EACjC,OAAOA,EAET,GAAIzJ,EAAUyJ,GACZ,OAAOA,EAAQ56G,UAEjB,MAAM,IAAI38B,UACR,0DAA4Du3I,EAEhE,CA9uBAnD,GAAkB58I,UAAUu4I,YAC1ByD,GAAgBh8I,UAAUu4I,YAC1BsE,GAAc78I,UAAUu4I,YACxBuE,GAAoB98I,UAAUu4I,YAC5B8E,GA4uBJ,IAAIv9I,GAAWJ,OAAOM,UAAUF,SAEhC,SAASkgJ,GAAcxhJ,GAErB,IACGA,GACgB,iBAAVA,GACkB,oBAAzBsB,GAASmH,KAAKzI,GAEd,OAAO,EAGT,IAAIuB,EAAQL,OAAO2xG,eAAe7yG,GAClC,GAAc,OAAVuB,EACF,OAAO,EAMT,IAFA,IAAIkgJ,EAAclgJ,EACdmgJ,EAAYxgJ,OAAO2xG,eAAetxG,GACjB,OAAdmgJ,GACLD,EAAcC,EACdA,EAAYxgJ,OAAO2xG,eAAe4uC,GAEpC,OAAOA,IAAgBlgJ,CACzB,CAMA,SAASogJ,GAAgB3hJ,GACvB,MACmB,iBAAVA,IACN23I,EAAY33I,IAAUyK,MAAMC,QAAQ1K,IAAUwhJ,GAAcxhJ,GAEjE,CAEA,SAAS4hJ,GAAY5hJ,GACnB,IACE,MAAwB,iBAAVA,EAAqB8B,KAAKC,UAAU/B,GAASgC,OAAOhC,EACpE,CAAE,MAAO6hJ,GACP,OAAO//I,KAAKC,UAAU/B,EACxB,CACF,CAEA,SAASiN,GAAI+tI,EAAYz6I,GACvB,OAAOo3I,EAAYqD,GACfA,EAAW/tI,IAAI1M,GACfohJ,GAAgB3G,IAAexyI,EAAeC,KAAKuyI,EAAYz6I,EACrE,CAEA,SAAS6G,GAAI4zI,EAAYz6I,EAAKo6I,GAC5B,OAAOhD,EAAYqD,GACfA,EAAW5zI,IAAI7G,EAAKo6I,GACnB1tI,GAAI+tI,EAAYz6I,GAES,mBAAnBy6I,EAAW5zI,IAClB4zI,EAAW5zI,IAAI7G,GACfy6I,EAAWz6I,GAHXo6I,CAIN,CAEA,SAASmH,GAAYnuE,GACnB,GAAIlpE,MAAMC,QAAQipE,GAChB,OAAOutE,GAAQvtE,GAEjB,IAAIC,EAAK,CAAC,EACV,IAAK,IAAIrzE,KAAOozE,EACVnrE,EAAeC,KAAKkrE,EAAMpzE,KAC5BqzE,EAAGrzE,GAAOozE,EAAKpzE,IAGnB,OAAOqzE,CACT,CAEA,SAAShb,GAAOoiF,EAAYz6I,GAC1B,IAAKohJ,GAAgB3G,GACnB,MAAM,IAAIhxI,UACR,2CAA6CgxI,GAGjD,GAAIrD,EAAYqD,GAAa,CAC3B,IAAKA,EAAWpiF,OACd,MAAM,IAAI5uD,UACR,2DAA6DgxI,GAGjE,OAAOA,EAAWpiF,OAAOr4D,EAC3B,CACA,IAAKiI,EAAeC,KAAKuyI,EAAYz6I,GACnC,OAAOy6I,EAET,IAAI+G,EAAiBD,GAAY9G,GAMjC,OALIvwI,MAAMC,QAAQq3I,GAChBA,EAAen/H,OAAOriB,EAAK,UAEpBwhJ,EAAexhJ,GAEjBwhJ,CACT,CAEA,SAASn2I,GAAIovI,EAAYz6I,EAAKP,GAC5B,IAAK2hJ,GAAgB3G,GACnB,MAAM,IAAIhxI,UACR,2CAA6CgxI,GAGjD,GAAIrD,EAAYqD,GAAa,CAC3B,IAAKA,EAAWpvI,IACd,MAAM,IAAI5B,UACR,wDAA0DgxI,GAG9D,OAAOA,EAAWpvI,IAAIrL,EAAKP,EAC7B,CACA,GAAIwI,EAAeC,KAAKuyI,EAAYz6I,IAAQP,IAAUg7I,EAAWz6I,GAC/D,OAAOy6I,EAET,IAAI+G,EAAiBD,GAAY9G,GAEjC,OADA+G,EAAexhJ,GAAOP,EACf+hJ,CACT,CAEA,SAASC,GAAWhH,EAAYuG,EAAS5G,EAAasH,GAC/CA,IACHA,EAAUtH,EACVA,OAAc16I,GAEhB,IAAIiiJ,EAAeC,GACjBxK,EAAYqD,GACZA,EACAsG,GAAcC,GACd,EACA5G,EACAsH,GAEF,OAAOC,IAAiBjN,EAAU0F,EAAcuH,CAClD,CAEA,SAASC,GACPC,EACAxwC,EACA2vC,EACApgJ,EACAw5I,EACAsH,GAEA,IAAII,EAAYzwC,IAAaqjC,EAC7B,GAAI9zI,IAAMogJ,EAAQlgJ,OAAQ,CACxB,IAAIihJ,EAAgBD,EAAY1H,EAAc/oC,EAC1C2wC,EAAWN,EAAQK,GACvB,OAAOC,IAAaD,EAAgB1wC,EAAW2wC,CACjD,CACA,IAAKF,IAAcV,GAAgB/vC,GACjC,MAAM,IAAI5nG,UACR,0DACEu3I,EAAQj9I,MAAM,EAAGnD,GAAG8D,IAAI28I,IACxB,MACAhwC,GAGN,IAAIrxG,EAAMghJ,EAAQpgJ,GACdqhJ,EAAeH,EAAYpN,EAAU7tI,GAAIwqG,EAAUrxG,EAAK00I,GACxDwN,EAAcN,GAChBK,IAAiBvN,EAAUmN,EAAczK,EAAY6K,GACrDA,EACAjB,EACApgJ,EAAI,EACJw5I,EACAsH,GAEF,OAAOQ,IAAgBD,EACnB5wC,EACA6wC,IAAgBxN,EAChBr8E,GAAOg5C,EAAUrxG,GACjBqL,GACEy2I,EAAaD,EAAcM,KAAa,CAAC,EAAK9wC,EAC9CrxG,EACAkiJ,EAER,CAEA,SAASE,GAAQ3H,EAAYuG,EAASvhJ,GACpC,OAAOgiJ,GAAWhH,EAAYuG,EAAStM,GAAS,WAAc,OAAOj1I,CAAO,GAC9E,CAEA,SAAS4iJ,GAAMrB,EAASn/F,GACtB,OAAOugG,GAAQ7iJ,KAAMyhJ,EAASn/F,EAChC,CAEA,SAASygG,GAAS7H,EAAYuG,GAC5B,OAAOS,GAAWhH,EAAYuG,GAAS,WAAc,OAAOtM,CAAS,GACvE,CAEA,SAAS6N,GAASvB,GAChB,OAAOsB,GAAS/iJ,KAAMyhJ,EACxB,CAEA,SAASwB,GAAS/H,EAAYz6I,EAAKo6I,EAAasH,GAC9C,OAAOD,GAAWhH,EAAY,CAACz6I,GAAMo6I,EAAasH,EACpD,CAEA,SAAS3qH,GAAO/2B,EAAKo6I,EAAasH,GAChC,OAA4B,IAArBx/H,UAAUphB,OACbd,EAAIT,MACJijJ,GAASjjJ,KAAMS,EAAKo6I,EAAasH,EACvC,CAEA,SAASe,GAASzB,EAAS5G,EAAasH,GACtC,OAAOD,GAAWliJ,KAAMyhJ,EAAS5G,EAAasH,EAChD,CAEA,SAASgB,KAEP,IADA,IAAIvC,EAAQ,GAAI9nD,EAAMn2E,UAAUphB,OACxBu3F,KAAQ8nD,EAAO9nD,GAAQn2E,UAAWm2E,GAE1C,OAAOsqD,GAAmBpjJ,KAAM4gJ,EAClC,CAEA,SAASyC,GAAYhpF,GAEnB,IADA,IAAIumF,EAAQ,GAAI9nD,EAAMn2E,UAAUphB,OAAS,EACjCu3F,KAAQ,GAAI8nD,EAAO9nD,GAAQn2E,UAAWm2E,EAAM,GAEpD,GAAsB,mBAAXz+B,EACT,MAAM,IAAInwD,UAAU,4BAA8BmwD,GAEpD,OAAO+oF,GAAmBpjJ,KAAM4gJ,EAAOvmF,EACzC,CAEA,SAAS+oF,GAAmBlI,EAAYoI,EAAajpF,GAEnD,IADA,IAAIumF,EAAQ,GACHlX,EAAK,EAAGA,EAAK4Z,EAAY/hJ,OAAQmoI,IAAM,CAC9C,IAAI6Z,EAAexM,EAAgBuM,EAAY5Z,IACrB,IAAtB6Z,EAAazjJ,MACf8gJ,EAAMr9I,KAAKggJ,EAEf,CACA,OAAqB,IAAjB3C,EAAMr/I,OACD25I,EAGqB,IAA5BA,EAAW1B,QAAQ15I,MAClBo7I,EAAWsI,WACK,IAAjB5C,EAAMr/I,OAID25I,EAAWuI,eAAc,SAAUvI,GASxC,IARA,IAAIwI,EAAsBrpF,EACtB,SAAUn6D,EAAOO,GACfwiJ,GAAS/H,EAAYz6I,EAAK00I,GAAS,SAAUwO,GAAU,OAAOA,IAAWxO,EAAUj1I,EAAQm6D,EAAOspF,EAAQzjJ,EAAOO,EAAM,GAEzH,EACA,SAAUP,EAAOO,GACfy6I,EAAWpvI,IAAIrL,EAAKP,EACtB,EACKwpI,EAAK,EAAGA,EAAKkX,EAAMr/I,OAAQmoI,IAClCkX,EAAMlX,GAAIh/H,QAAQg5I,EAEtB,IAdSxI,EAAWlsI,YAAY4xI,EAAM,GAexC,CAEA,SAAS9tG,GAAMooG,GAEb,IADA,IAAIpvH,EAAU,GAAIgtE,EAAMn2E,UAAUphB,OAAS,EACnCu3F,KAAQ,GAAIhtE,EAASgtE,GAAQn2E,UAAWm2E,EAAM,GAEtD,OAAO8qD,GAAiB1I,EAAYpvH,EACtC,CAEA,SAASsuC,GAAUC,EAAQ6gF,GAEzB,IADA,IAAIpvH,EAAU,GAAIgtE,EAAMn2E,UAAUphB,OAAS,EACnCu3F,KAAQ,GAAIhtE,EAASgtE,GAAQn2E,UAAWm2E,EAAM,GAEtD,OAAO8qD,GAAiB1I,EAAYpvH,EAASuuC,EAC/C,CAEA,SAASwpF,GAAY3I,GAEnB,IADA,IAAIpvH,EAAU,GAAIgtE,EAAMn2E,UAAUphB,OAAS,EACnCu3F,KAAQ,GAAIhtE,EAASgtE,GAAQn2E,UAAWm2E,EAAM,GAEtD,OAAOgrD,GAAqB5I,EAAYpvH,EAC1C,CAEA,SAASi4H,GAAgB1pF,EAAQ6gF,GAE/B,IADA,IAAIpvH,EAAU,GAAIgtE,EAAMn2E,UAAUphB,OAAS,EACnCu3F,KAAQ,GAAIhtE,EAASgtE,GAAQn2E,UAAWm2E,EAAM,GAEtD,OAAOgrD,GAAqB5I,EAAYpvH,EAASuuC,EACnD,CAEA,SAASypF,GAAqB5I,EAAYpvH,EAASuuC,GACjD,OAAOupF,GAAiB1I,EAAYpvH,EA6CtC,SAAwBuuC,GAUtB,OATA,SAAS2pF,EAAW92I,EAAUu1I,EAAUhiJ,GACtC,OAAOohJ,GAAgB30I,IACrB20I,GAAgBY,KAekBwB,EAdXxB,EAevByB,EAASpN,EAfI5pI,GAgBbi3I,EAASrN,EAAImN,GAIfxN,EAAUyN,KAAYzN,EAAU0N,IAChC7N,EAAQ4N,KAAY5N,EAAQ6N,IApBxBP,GAAiB12I,EAAU,CAACu1I,GAAWuB,GACvC3pF,EACAA,EAAOntD,EAAUu1I,EAAUhiJ,GAC3BgiJ,EAUR,IAAwCwB,EAClCC,EACAC,CAXJ,CAEF,CAxD+CC,CAAe/pF,GAC9D,CAEA,SAASupF,GAAiB1I,EAAYpvH,EAASuuC,GAC7C,IAAKwnF,GAAgB3G,GACnB,MAAM,IAAIhxI,UACR,+CAAiDgxI,GAGrD,GAAIrD,EAAYqD,GACd,MAAyB,mBAAX7gF,GAAyB6gF,EAAW9gF,UAC9C8gF,EAAW9gF,UAAU7zD,MAAM20I,EAAY,CAAE7gF,GAASnzB,OAAQpb,IAC1DovH,EAAWpoG,MACXooG,EAAWpoG,MAAMvsC,MAAM20I,EAAYpvH,GACnCovH,EAAWh0G,OAAO3gC,MAAM20I,EAAYpvH,GAyB1C,IAvBA,IAAIlhB,EAAUD,MAAMC,QAAQswI,GACxBz3G,EAASy3G,EACTrE,EAAajsI,EAAUqsI,EAAoBF,EAC3CsN,EAAYz5I,EACZ,SAAU1K,GAEJujC,IAAWy3G,IACbz3G,EAASu+G,GAAYv+G,IAEvBA,EAAOlgC,KAAKrD,EACd,EACA,SAAUA,EAAOO,GACf,IAAI6jJ,EAAS57I,EAAeC,KAAK86B,EAAQhjC,GACrC8jJ,EACFD,GAAUjqF,EAASA,EAAO52B,EAAOhjC,GAAMP,EAAOO,GAAOP,EAClDokJ,GAAUC,IAAY9gH,EAAOhjC,KAE5BgjC,IAAWy3G,IACbz3G,EAASu+G,GAAYv+G,IAEvBA,EAAOhjC,GAAO8jJ,EAElB,EACKljJ,EAAI,EAAGA,EAAIyqB,EAAQvqB,OAAQF,IAClCw1I,EAAW/qH,EAAQzqB,IAAIqJ,QAAQ25I,GAEjC,OAAO5gH,CACT,CA+BA,SAAS+gH,KAEP,IADA,IAAI5D,EAAQ,GAAI9nD,EAAMn2E,UAAUphB,OACxBu3F,KAAQ8nD,EAAO9nD,GAAQn2E,UAAWm2E,GAE1C,OAAOgrD,GAAqB9jJ,KAAM4gJ,EACpC,CAEA,SAAS6D,GAAcpqF,GAErB,IADA,IAAIumF,EAAQ,GAAI9nD,EAAMn2E,UAAUphB,OAAS,EACjCu3F,KAAQ,GAAI8nD,EAAO9nD,GAAQn2E,UAAWm2E,EAAM,GAEpD,OAAOgrD,GAAqB9jJ,KAAM4gJ,EAAOvmF,EAC3C,CAEA,SAASqqF,GAAQjD,GAEf,IADA,IAAIb,EAAQ,GAAI9nD,EAAMn2E,UAAUphB,OAAS,EACjCu3F,KAAQ,GAAI8nD,EAAO9nD,GAAQn2E,UAAWm2E,EAAM,GAEpD,OAAOopD,GAAWliJ,KAAMyhJ,EAASmB,MAAY,SAAU36I,GAAK,OAAO27I,GAAiB37I,EAAG24I,EAAQ,GACjG,CAEA,SAAS+D,GAAYlD,GAEnB,IADA,IAAIb,EAAQ,GAAI9nD,EAAMn2E,UAAUphB,OAAS,EACjCu3F,KAAQ,GAAI8nD,EAAO9nD,GAAQn2E,UAAWm2E,EAAM,GAEpD,OAAOopD,GAAWliJ,KAAMyhJ,EAASmB,MAAY,SAAU36I,GAAK,OAAO67I,GAAqB77I,EAAG24I,EAAQ,GAErG,CAEA,SAAS6C,GAAcxpF,GACrB,IAAI2qF,EAAU5kJ,KAAK6kJ,YAEnB,OADA5qF,EAAG2qF,GACIA,EAAQE,aAAeF,EAAQG,cAAc/kJ,KAAKwjJ,WAAaxjJ,IACxE,CAEA,SAAS6kJ,KACP,OAAO7kJ,KAAKwjJ,UAAYxjJ,KAAOA,KAAK+kJ,cAAc,IAAI1P,EACxD,CAEA,SAAS2P,KACP,OAAOhlJ,KAAK+kJ,eACd,CAEA,SAASD,KACP,OAAO9kJ,KAAKilJ,SACd,CAEA,IAAIzjI,GAAoB,SAAUu1H,GAChC,SAASv1H,EAAIthB,GACX,OAAOA,QACH0iJ,KACAvH,GAAMn7I,KAAW83I,EAAU93I,GAC3BA,EACA0iJ,KAAWa,eAAc,SAAUt+I,GACjC,IAAIowI,EAAOwB,EAAgB72I,GAC3BqhJ,GAAkBhM,EAAKz1I,MACvBy1I,EAAK7qI,SAAQ,SAAU43C,EAAGv/C,GAAK,OAAOoC,EAAI2G,IAAI/I,EAAGu/C,EAAI,GACvD,GACN,CA2HA,OAzHKy0F,IAAkBv1H,EAAIzP,UAAYglI,GACvCv1H,EAAI9f,UAAYN,OAAO2G,OAAQgvI,GAAmBA,EAAgBr1I,WAClE8f,EAAI9f,UAAUsN,YAAcwS,EAE5BA,EAAIk5H,GAAK,WAEP,IADA,IAAIwK,EAAY,GAAIpsD,EAAMn2E,UAAUphB,OAC5Bu3F,KAAQosD,EAAWpsD,GAAQn2E,UAAWm2E,GAE9C,OAAO8pD,KAAWa,eAAc,SAAUt+I,GACxC,IAAK,IAAI9D,EAAI,EAAGA,EAAI6jJ,EAAU3jJ,OAAQF,GAAK,EAAG,CAC5C,GAAIA,EAAI,GAAK6jJ,EAAU3jJ,OACrB,MAAM,IAAIQ,MAAM,0BAA4BmjJ,EAAU7jJ,IAExD8D,EAAI2G,IAAIo5I,EAAU7jJ,GAAI6jJ,EAAU7jJ,EAAI,GACtC,CACF,GACF,EAEAmgB,EAAI9f,UAAUF,SAAW,WACvB,OAAOxB,KAAKg6I,WAAW,QAAS,IAClC,EAIAx4H,EAAI9f,UAAU4F,IAAM,SAAcvE,EAAG83I,GACnC,OAAO76I,KAAKmlJ,MACRnlJ,KAAKmlJ,MAAM79I,IAAI,OAAGnH,EAAW4C,EAAG83I,GAChCA,CACN,EAIAr5H,EAAI9f,UAAUoK,IAAM,SAAc/I,EAAGu/C,GACnC,OAAO8iG,GAAUplJ,KAAM+C,EAAGu/C,EAC5B,EAEA9gC,EAAI9f,UAAUo3D,OAAS,SAAiB/1D,GACtC,OAAOqiJ,GAAUplJ,KAAM+C,EAAGoyI,EAC5B,EAEA3zH,EAAI9f,UAAU2jJ,UAAY,SAAoBlkJ,GAC5C,IAAI+5I,EAAarE,EAAW11I,GAE5B,OAAwB,IAApB+5I,EAAWp7I,KACNE,KAGFA,KAAKyjJ,eAAc,SAAUt+I,GAClC+1I,EAAWxwI,SAAQ,SAAUjK,GAAO,OAAO0E,EAAI2zD,OAAOr4D,EAAM,GAC9D,GACF,EAEA+gB,EAAI9f,UAAU2vB,MAAQ,WACpB,OAAkB,IAAdrxB,KAAKF,KACAE,KAELA,KAAKwjJ,WACPxjJ,KAAKF,KAAO,EACZE,KAAKmlJ,MAAQ,KACbnlJ,KAAKslJ,YAASnlJ,EACdH,KAAKilJ,WAAY,EACVjlJ,MAEF4iJ,IACT,EAIAphI,EAAI9f,UAAU6sC,KAAO,SAAe4xG,GAElC,OAAOoF,GAAWrF,GAAYlgJ,KAAMmgJ,GACtC,EAEA3+H,EAAI9f,UAAU8jJ,OAAS,SAAiBrH,EAAQgC,GAE9C,OAAOoF,GAAWrF,GAAYlgJ,KAAMmgJ,EAAYhC,GAClD,EAEA38H,EAAI9f,UAAUyD,IAAM,SAAcg5I,EAAQv1H,GACxC,IAAIo1H,EAAWh+I,KAEf,OAAOA,KAAKyjJ,eAAc,SAAUt+I,GAClCA,EAAIuF,SAAQ,SAAUxK,EAAOO,GAC3B0E,EAAI2G,IAAIrL,EAAK09I,EAAOx1I,KAAKigB,EAAS1oB,EAAOO,EAAKu9I,GAChD,GACF,GACF,EAIAx8H,EAAI9f,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GACpD,OAAO,IAAImmD,GAAYzlJ,KAAM0M,EAAM4yF,EACrC,EAEA99E,EAAI9f,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAChD,IAAI0+C,EAAWh+I,KAEXq9B,EAAa,EAMjB,OALAr9B,KAAKmlJ,OACHnlJ,KAAKmlJ,MAAMO,SAAQ,SAAUrhH,GAE3B,OADAhH,IACO48B,EAAG51B,EAAM,GAAIA,EAAM,GAAI25G,EAChC,GAAG1+C,GACEjiE,CACT,EAEA7b,EAAI9f,UAAUqjJ,cAAgB,SAAwBY,GACpD,OAAIA,IAAY3lJ,KAAKwjJ,UACZxjJ,KAEJ2lJ,EAQEC,GAAQ5lJ,KAAKF,KAAME,KAAKmlJ,MAAOQ,EAAS3lJ,KAAKslJ,QAPhC,IAAdtlJ,KAAKF,KACA8iJ,MAET5iJ,KAAKwjJ,UAAYmC,EACjB3lJ,KAAKilJ,WAAY,EACVjlJ,KAGX,EAEOwhB,CACT,CAvIuB,CAuIrBu1H,GAEFv1H,GAAI65H,MAAQA,GAEZ,IAAIwK,GAAerkI,GAAI9f,UACvBmkJ,GAAazK,KAAiB,EAC9ByK,GAAa9Q,GAAU8Q,GAAa/sF,OACpC+sF,GAAaC,UAAYD,GAAaR,UACtCQ,GAAa/C,MAAQA,GACrB+C,GAAa9C,SAAW8C,GAAa7C,SAAWA,GAChD6C,GAAaruH,OAASA,GACtBquH,GAAa3C,SAAWA,GACxB2C,GAAa/yG,MAAQ+yG,GAAa3+G,OAASi8G,GAC3C0C,GAAazrF,UAAYipF,GACzBwC,GAAarB,UAAYA,GACzBqB,GAAapB,cAAgBA,GAC7BoB,GAAanB,QAAUA,GACvBmB,GAAalB,YAAcA,GAC3BkB,GAAapC,cAAgBA,GAC7BoC,GAAaf,WAAaA,GAC1Be,GAAab,YAAcA,GAC3Ba,GAAa,qBAAuBA,GAAahB,UAAYA,GAC7DgB,GAAa,qBAAuB,SAAUhiJ,EAAQ60F,GACpD,OAAO70F,EAAOiI,IAAI4sF,EAAI,GAAIA,EAAI,GAChC,EACAmtD,GAAa,uBAAyB,SAAUh8I,GAC9C,OAAOA,EAAIm7I,aACb,EAIA,IAAIe,GAAe,SAAsBJ,EAASr4I,GAChDtN,KAAK2lJ,QAAUA,EACf3lJ,KAAKsN,QAAUA,CACjB,EAEAy4I,GAAarkJ,UAAU4F,IAAM,SAAciD,EAAOy7I,EAASvlJ,EAAKo6I,GAE9D,IADA,IAAIvtI,EAAUtN,KAAKsN,QACVo8H,EAAK,EAAG5wC,EAAMxrF,EAAQ/L,OAAQmoI,EAAK5wC,EAAK4wC,IAC/C,GAAIkS,GAAGn7I,EAAK6M,EAAQo8H,GAAI,IACtB,OAAOp8H,EAAQo8H,GAAI,GAGvB,OAAOmR,CACT,EAEAkL,GAAarkJ,UAAU81B,OAAS,SAAiBmuH,EAASp7I,EAAOy7I,EAASvlJ,EAAKP,EAAO+lJ,EAAeC,GAMnG,IALA,IAAIC,EAAUjmJ,IAAUi1I,EAEpB7nI,EAAUtN,KAAKsN,QACfuV,EAAM,EACNi2E,EAAMxrF,EAAQ/L,OACXshB,EAAMi2E,IACP8iD,GAAGn7I,EAAK6M,EAAQuV,GAAK,IADTA,KAKlB,IAAI45C,EAAS55C,EAAMi2E,EAEnB,GAAIr8B,EAASnvD,EAAQuV,GAAK,KAAO3iB,EAAQimJ,EACvC,OAAOnmJ,KAMT,GAHAo1I,EAAO8Q,IACNC,IAAY1pF,IAAW24E,EAAO6Q,IAE3BE,GAA8B,IAAnB74I,EAAQ/L,OAAvB,CAIA,IAAKk7D,IAAW0pF,GAAW74I,EAAQ/L,QAAU6kJ,GAC3C,OAueJ,SAAqBT,EAASr4I,EAAS7M,EAAKP,GACrCylJ,IACHA,EAAU,IAAItQ,GAGhB,IADA,IAAI79F,EAAO,IAAI6uG,GAAUV,EAASvjI,GAAK3hB,GAAM,CAACA,EAAKP,IAC1CwpI,EAAK,EAAGA,EAAKp8H,EAAQ/L,OAAQmoI,IAAM,CAC1C,IAAIrlG,EAAQ/2B,EAAQo8H,GACpBlyF,EAAOA,EAAKhgB,OAAOmuH,EAAS,OAAGxlJ,EAAWkkC,EAAM,GAAIA,EAAM,GAC5D,CACA,OAAOmT,CACT,CAjfW8uG,CAAYX,EAASr4I,EAAS7M,EAAKP,GAG5C,IAAIqmJ,EAAaZ,GAAWA,IAAY3lJ,KAAK2lJ,QACzCa,EAAaD,EAAaj5I,EAAU8zI,GAAQ9zI,GAchD,OAZImvD,EACE0pF,EACFtjI,IAAQi2E,EAAM,EACV0tD,EAAWhjJ,MACVgjJ,EAAW3jI,GAAO2jI,EAAWhjJ,MAElCgjJ,EAAW3jI,GAAO,CAACpiB,EAAKP,GAG1BsmJ,EAAWjjJ,KAAK,CAAC9C,EAAKP,IAGpBqmJ,GACFvmJ,KAAKsN,QAAUk5I,EACRxmJ,MAGF,IAAI+lJ,GAAaJ,EAASa,EA1BjC,CA2BF,EAEA,IAAIC,GAAoB,SAA2Bd,EAASe,EAAQp3B,GAClEtvH,KAAK2lJ,QAAUA,EACf3lJ,KAAK0mJ,OAASA,EACd1mJ,KAAKsvH,MAAQA,CACf,EAEAm3B,GAAkB/kJ,UAAU4F,IAAM,SAAciD,EAAOy7I,EAASvlJ,EAAKo6I,QACnD16I,IAAZ6lJ,IACFA,EAAU5jI,GAAK3hB,IAEjB,IAAIkmJ,EAAM,KAAiB,IAAVp8I,EAAcy7I,EAAUA,IAAYz7I,GAAS2qI,GAC1DwR,EAAS1mJ,KAAK0mJ,OAClB,OAAQA,EAASC,EAEb3mJ,KAAKsvH,MAAMs3B,GAASF,EAAUC,EAAM,IAAKr/I,IACvCiD,EAAQyqI,EACRgR,EACAvlJ,EACAo6I,GALFA,CAON,EAEA4L,GAAkB/kJ,UAAU81B,OAAS,SAAiBmuH,EAASp7I,EAAOy7I,EAASvlJ,EAAKP,EAAO+lJ,EAAeC,QACxF/lJ,IAAZ6lJ,IACFA,EAAU5jI,GAAK3hB,IAEjB,IAAIomJ,GAAyB,IAAVt8I,EAAcy7I,EAAUA,IAAYz7I,GAAS2qI,EAC5DyR,EAAM,GAAKE,EACXH,EAAS1mJ,KAAK0mJ,OACdjqF,KAAUiqF,EAASC,GAEvB,IAAKlqF,GAAUv8D,IAAUi1I,EACvB,OAAOn1I,KAGT,IAAI6iB,EAAM+jI,GAASF,EAAUC,EAAM,GAC/Br3B,EAAQtvH,KAAKsvH,MACb93E,EAAOilB,EAAS6yD,EAAMzsG,QAAO1iB,EAC7B06E,EAAUisE,GACZtvG,EACAmuG,EACAp7I,EAAQyqI,EACRgR,EACAvlJ,EACAP,EACA+lJ,EACAC,GAGF,GAAIrrE,IAAYrjC,EACd,OAAOx3C,KAGT,IAAKy8D,GAAUoe,GAAWy0C,EAAM/tH,QAAUwlJ,GACxC,OAibJ,SAAqBpB,EAASr2B,EAAOo3B,EAAQM,EAAWxvG,GAGtD,IAFA,IAAItqB,EAAQ,EACR+5H,EAAgB,IAAIt8I,MAAMsqI,GACrBvL,EAAK,EAAc,IAAXgd,EAAchd,IAAMgd,KAAY,EAC/CO,EAAcvd,GAAe,EAATgd,EAAap3B,EAAMpiG,UAAW/sB,EAGpD,OADA8mJ,EAAcD,GAAaxvG,EACpB,IAAI0vG,GAAiBvB,EAASz4H,EAAQ,EAAG+5H,EAClD,CAzbWE,CAAYxB,EAASr2B,EAAOo3B,EAAQG,EAAahsE,GAG1D,GACEpe,IACCoe,GACgB,IAAjBy0C,EAAM/tH,QACN6lJ,GAAW93B,EAAY,EAANzsG,IAEjB,OAAOysG,EAAY,EAANzsG,GAGf,GAAI45C,GAAUoe,GAA4B,IAAjBy0C,EAAM/tH,QAAgB6lJ,GAAWvsE,GACxD,OAAOA,EAGT,IAAI0rE,EAAaZ,GAAWA,IAAY3lJ,KAAK2lJ,QACzC0B,EAAY5qF,EAAUoe,EAAU6rE,EAASA,EAASC,EAAOD,EAASC,EAClEW,EAAW7qF,EACXoe,EACE0sE,GAAMj4B,EAAOzsG,EAAKg4D,EAAS0rE,GAycnC,SAAmBpmI,EAAO0C,EAAK2kI,GAC7B,IAAIC,EAAStnI,EAAM5e,OAAS,EAC5B,GAAIimJ,GAAW3kI,IAAQ4kI,EAErB,OADAtnI,EAAM3c,MACC2c,EAIT,IAFA,IAAIunI,EAAW,IAAI/8I,MAAM88I,GACrBE,EAAQ,EACHje,EAAK,EAAGA,EAAK+d,EAAQ/d,IACxBA,IAAO7mH,IACT8kI,EAAQ,GAEVD,EAAShe,GAAMvpH,EAAMupH,EAAKie,GAE5B,OAAOD,CACT,CAvdQE,CAAUt4B,EAAOzsG,EAAK0jI,GAqb9B,SAAkBpmI,EAAO0C,EAAK6/B,EAAK8kG,GACjC,IAAIC,EAAStnI,EAAM5e,OAAS,EAC5B,GAAIimJ,GAAW3kI,EAAM,IAAM4kI,EAEzB,OADAtnI,EAAM0C,GAAO6/B,EACNviC,EAIT,IAFA,IAAIunI,EAAW,IAAI/8I,MAAM88I,GACrBE,EAAQ,EACHje,EAAK,EAAGA,EAAK+d,EAAQ/d,IACxBA,IAAO7mH,GACT6kI,EAAShe,GAAMhnF,EACfilG,GAAS,GAETD,EAAShe,GAAMvpH,EAAMupH,EAAKie,GAG9B,OAAOD,CACT,CArcMG,CAASv4B,EAAOzsG,EAAKg4D,EAAS0rE,GAElC,OAAIA,GACFvmJ,KAAK0mJ,OAASW,EACdrnJ,KAAKsvH,MAAQg4B,EACNtnJ,MAGF,IAAIymJ,GAAkBd,EAAS0B,EAAWC,EACnD,EAEA,IAAIJ,GAAmB,SAA0BvB,EAASz4H,EAAOoiG,GAC/DtvH,KAAK2lJ,QAAUA,EACf3lJ,KAAKktB,MAAQA,EACbltB,KAAKsvH,MAAQA,CACf,EAEA43B,GAAiBxlJ,UAAU4F,IAAM,SAAciD,EAAOy7I,EAASvlJ,EAAKo6I,QAClD16I,IAAZ6lJ,IACFA,EAAU5jI,GAAK3hB,IAEjB,IAAIoiB,GAAiB,IAAVtY,EAAcy7I,EAAUA,IAAYz7I,GAAS2qI,EACpD19F,EAAOx3C,KAAKsvH,MAAMzsG,GACtB,OAAO20B,EACHA,EAAKlwC,IAAIiD,EAAQyqI,EAAOgR,EAASvlJ,EAAKo6I,GACtCA,CACN,EAEAqM,GAAiBxlJ,UAAU81B,OAAS,SAAiBmuH,EAASp7I,EAAOy7I,EAASvlJ,EAAKP,EAAO+lJ,EAAeC,QACvF/lJ,IAAZ6lJ,IACFA,EAAU5jI,GAAK3hB,IAEjB,IAAIoiB,GAAiB,IAAVtY,EAAcy7I,EAAUA,IAAYz7I,GAAS2qI,EACpDiR,EAAUjmJ,IAAUi1I,EACpB7lB,EAAQtvH,KAAKsvH,MACb93E,EAAO83E,EAAMzsG,GAEjB,GAAIsjI,IAAY3uG,EACd,OAAOx3C,KAGT,IAAI66E,EAAUisE,GACZtvG,EACAmuG,EACAp7I,EAAQyqI,EACRgR,EACAvlJ,EACAP,EACA+lJ,EACAC,GAEF,GAAIrrE,IAAYrjC,EACd,OAAOx3C,KAGT,IAAI8nJ,EAAW9nJ,KAAKktB,MACpB,GAAKsqB,GAEE,IAAKqjC,KACVitE,EACeC,GACb,OAgVN,SAAmBpC,EAASr2B,EAAOpiG,EAAO86H,GAIxC,IAHA,IAAItB,EAAS,EACTuB,EAAW,EACXC,EAAc,IAAIv9I,MAAMuiB,GACnBw8G,EAAK,EAAGid,EAAM,EAAG7tD,EAAMw2B,EAAM/tH,OAAQmoI,EAAK5wC,EAAK4wC,IAAMid,IAAQ,EAAG,CACvE,IAAInvG,EAAO83E,EAAMoa,QACJvpI,IAATq3C,GAAsBkyF,IAAOse,IAC/BtB,GAAUC,EACVuB,EAAYD,KAAczwG,EAE9B,CACA,OAAO,IAAIivG,GAAkBd,EAASe,EAAQwB,EAChD,CA5VaC,CAAUxC,EAASr2B,EAAOw4B,EAAUjlI,QAJ7CilI,IAQF,IAAIvB,EAAaZ,GAAWA,IAAY3lJ,KAAK2lJ,QACzC2B,EAAWC,GAAMj4B,EAAOzsG,EAAKg4D,EAAS0rE,GAE1C,OAAIA,GACFvmJ,KAAKktB,MAAQ46H,EACb9nJ,KAAKsvH,MAAQg4B,EACNtnJ,MAGF,IAAIknJ,GAAiBvB,EAASmC,EAAUR,EACjD,EAEA,IAAIc,GAAoB,SAA2BzC,EAASK,EAAS14I,GACnEtN,KAAK2lJ,QAAUA,EACf3lJ,KAAKgmJ,QAAUA,EACfhmJ,KAAKsN,QAAUA,CACjB,EAEA86I,GAAkB1mJ,UAAU4F,IAAM,SAAciD,EAAOy7I,EAASvlJ,EAAKo6I,GAEnE,IADA,IAAIvtI,EAAUtN,KAAKsN,QACVo8H,EAAK,EAAG5wC,EAAMxrF,EAAQ/L,OAAQmoI,EAAK5wC,EAAK4wC,IAC/C,GAAIkS,GAAGn7I,EAAK6M,EAAQo8H,GAAI,IACtB,OAAOp8H,EAAQo8H,GAAI,GAGvB,OAAOmR,CACT,EAEAuN,GAAkB1mJ,UAAU81B,OAAS,SAAiBmuH,EAASp7I,EAAOy7I,EAASvlJ,EAAKP,EAAO+lJ,EAAeC,QACxF/lJ,IAAZ6lJ,IACFA,EAAU5jI,GAAK3hB,IAGjB,IAAI0lJ,EAAUjmJ,IAAUi1I,EAExB,GAAI6Q,IAAYhmJ,KAAKgmJ,QACnB,OAAIG,EACKnmJ,MAETo1I,EAAO8Q,GACP9Q,EAAO6Q,GACAoC,GAAcroJ,KAAM2lJ,EAASp7I,EAAOy7I,EAAS,CAACvlJ,EAAKP,KAM5D,IAHA,IAAIoN,EAAUtN,KAAKsN,QACfuV,EAAM,EACNi2E,EAAMxrF,EAAQ/L,OACXshB,EAAMi2E,IACP8iD,GAAGn7I,EAAK6M,EAAQuV,GAAK,IADTA,KAKlB,IAAI45C,EAAS55C,EAAMi2E,EAEnB,GAAIr8B,EAASnvD,EAAQuV,GAAK,KAAO3iB,EAAQimJ,EACvC,OAAOnmJ,KAMT,GAHAo1I,EAAO8Q,IACNC,IAAY1pF,IAAW24E,EAAO6Q,GAE3BE,GAAmB,IAARrtD,EACb,OAAO,IAAIutD,GAAUV,EAAS3lJ,KAAKgmJ,QAAS14I,EAAc,EAANuV,IAGtD,IAAI0jI,EAAaZ,GAAWA,IAAY3lJ,KAAK2lJ,QACzCa,EAAaD,EAAaj5I,EAAU8zI,GAAQ9zI,GAchD,OAZImvD,EACE0pF,EACFtjI,IAAQi2E,EAAM,EACV0tD,EAAWhjJ,MACVgjJ,EAAW3jI,GAAO2jI,EAAWhjJ,MAElCgjJ,EAAW3jI,GAAO,CAACpiB,EAAKP,GAG1BsmJ,EAAWjjJ,KAAK,CAAC9C,EAAKP,IAGpBqmJ,GACFvmJ,KAAKsN,QAAUk5I,EACRxmJ,MAGF,IAAIooJ,GAAkBzC,EAAS3lJ,KAAKgmJ,QAASQ,EACtD,EAEA,IAAIH,GAAY,SAAmBV,EAASK,EAAS3hH,GACnDrkC,KAAK2lJ,QAAUA,EACf3lJ,KAAKgmJ,QAAUA,EACfhmJ,KAAKqkC,MAAQA,CACf,EAEAgiH,GAAU3kJ,UAAU4F,IAAM,SAAciD,EAAOy7I,EAASvlJ,EAAKo6I,GAC3D,OAAOe,GAAGn7I,EAAKT,KAAKqkC,MAAM,IAAMrkC,KAAKqkC,MAAM,GAAKw2G,CAClD,EAEAwL,GAAU3kJ,UAAU81B,OAAS,SAAiBmuH,EAASp7I,EAAOy7I,EAASvlJ,EAAKP,EAAO+lJ,EAAeC,GAChG,IAAIC,EAAUjmJ,IAAUi1I,EACpBmT,EAAW1M,GAAGn7I,EAAKT,KAAKqkC,MAAM,IAClC,OAAIikH,EAAWpoJ,IAAUF,KAAKqkC,MAAM,GAAK8hH,GAChCnmJ,MAGTo1I,EAAO8Q,GAEHC,OACF/Q,EAAO6Q,GAILqC,EACE3C,GAAWA,IAAY3lJ,KAAK2lJ,SAC9B3lJ,KAAKqkC,MAAM,GAAKnkC,EACTF,MAEF,IAAIqmJ,GAAUV,EAAS3lJ,KAAKgmJ,QAAS,CAACvlJ,EAAKP,KAGpDk1I,EAAO6Q,GACAoC,GAAcroJ,KAAM2lJ,EAASp7I,EAAO6X,GAAK3hB,GAAM,CAACA,EAAKP,KAC9D,EAIA6lJ,GAAarkJ,UAAUgkJ,QAAU0C,GAAkB1mJ,UAAUgkJ,QAC3D,SAAUzrF,EAAIqlC,GAEZ,IADA,IAAIhyF,EAAUtN,KAAKsN,QACVo8H,EAAK,EAAG6e,EAAWj7I,EAAQ/L,OAAS,EAAGmoI,GAAM6e,EAAU7e,IAC9D,IAAkD,IAA9CzvE,EAAG3sD,EAAQgyF,EAAUipD,EAAW7e,EAAKA,IACvC,OAAO,CAGb,EAEF+c,GAAkB/kJ,UAAUgkJ,QAAUwB,GAAiBxlJ,UAAUgkJ,QAC/D,SAAUzrF,EAAIqlC,GAEZ,IADA,IAAIgwB,EAAQtvH,KAAKsvH,MACRoa,EAAK,EAAG6e,EAAWj5B,EAAM/tH,OAAS,EAAGmoI,GAAM6e,EAAU7e,IAAM,CAClE,IAAIlyF,EAAO83E,EAAMhwB,EAAUipD,EAAW7e,EAAKA,GAC3C,GAAIlyF,IAAsC,IAA9BA,EAAKkuG,QAAQzrF,EAAIqlC,GAC3B,OAAO,CAEX,CACF,EAGF+mD,GAAU3kJ,UAAUgkJ,QAAU,SAAUzrF,EAAIqlC,GAC1C,OAAOrlC,EAAGj6D,KAAKqkC,MACjB,EAEA,IAyEImkH,GAzEA/C,GAA4B,SAAUjN,GACxC,SAASiN,EAAYtgJ,EAAKuH,EAAM4yF,GAC9Bt/F,KAAKyoJ,MAAQ/7I,EACb1M,KAAK0oJ,SAAWppD,EAChBt/F,KAAK2oJ,OAASxjJ,EAAIggJ,OAASyD,GAAiBzjJ,EAAIggJ,MAClD,CA2CA,OAzCK3M,IAAWiN,EAAY1zI,UAAYymI,GACxCiN,EAAY/jJ,UAAYN,OAAO2G,OAAQywI,GAAYA,EAAS92I,WAC5D+jJ,EAAY/jJ,UAAUsN,YAAcy2I,EAEpCA,EAAY/jJ,UAAUwE,KAAO,WAG3B,IAFA,IAAIwG,EAAO1M,KAAKyoJ,MACZ9nJ,EAAQX,KAAK2oJ,OACVhoJ,GAAO,CACZ,IAAI62C,EAAO72C,EAAM62C,KACbr5B,EAAQxd,EAAMwd,QACdoqI,OAAW,EACf,GAAI/wG,EAAKnT,OACP,GAAc,IAAVlmB,EACF,OAAO0qI,GAAiBn8I,EAAM8qC,EAAKnT,YAEhC,GAAImT,EAAKlqC,SAEd,GAAI6Q,IADJoqI,EAAW/wG,EAAKlqC,QAAQ/L,OAAS,GAE/B,OAAOsnJ,GACLn8I,EACA8qC,EAAKlqC,QAAQtN,KAAK0oJ,SAAWH,EAAWpqI,EAAQA,SAKpD,GAAIA,IADJoqI,EAAW/wG,EAAK83E,MAAM/tH,OAAS,GACR,CACrB,IAAIunJ,EAAUtxG,EAAK83E,MAAMtvH,KAAK0oJ,SAAWH,EAAWpqI,EAAQA,GAC5D,GAAI2qI,EAAS,CACX,GAAIA,EAAQzkH,MACV,OAAOwkH,GAAiBn8I,EAAMo8I,EAAQzkH,OAExC1jC,EAAQX,KAAK2oJ,OAASC,GAAiBE,EAASnoJ,EAClD,CACA,QACF,CAEFA,EAAQX,KAAK2oJ,OAAS3oJ,KAAK2oJ,OAAOI,MACpC,CACA,MAhpFK,CAAE7oJ,WAAOC,EAAWkG,MAAM,EAipFjC,EAEOo/I,CACT,CAjD+B,CAiD7BjN,GAEF,SAASqQ,GAAiBn8I,EAAM23B,GAC9B,OAAOo0G,EAAc/rI,EAAM23B,EAAM,GAAIA,EAAM,GAC7C,CAEA,SAASukH,GAAiBpxG,EAAM6/C,GAC9B,MAAO,CACL7/C,KAAMA,EACNr5B,MAAO,EACP4qI,OAAQ1xD,EAEZ,CAEA,SAASuuD,GAAQ9lJ,EAAMgpI,EAAM6c,EAASvjI,GACpC,IAAIjd,EAAM/D,OAAO2G,OAAO89I,IAMxB,OALA1gJ,EAAIrF,KAAOA,EACXqF,EAAIggJ,MAAQrc,EACZ3jI,EAAIq+I,UAAYmC,EAChBxgJ,EAAImgJ,OAASljI,EACbjd,EAAI8/I,WAAY,EACT9/I,CACT,CAGA,SAASy9I,KACP,OAAO4F,KAAcA,GAAY5C,GAAQ,GAC3C,CAEA,SAASR,GAAUjgJ,EAAKpC,EAAGu/C,GACzB,IAAI+mF,EACA2f,EACJ,GAAK7jJ,EAAIggJ,MAMF,CACL,IAAIc,EAz4FC,CAAE/lJ,OAAO,GA04FVgmJ,EA14FC,CAAEhmJ,OAAO,GAq5Fd,GAVAmpI,EAAUyd,GACR3hJ,EAAIggJ,MACJhgJ,EAAIq+I,UACJ,OACArjJ,EACA4C,EACAu/C,EACA2jG,EACAC,IAEGA,EAAShmJ,MACZ,OAAOiF,EAET6jJ,EAAU7jJ,EAAIrF,MAAQmmJ,EAAc/lJ,MAASoiD,IAAM6yF,GAAW,EAAI,EAAK,EACzE,KAvBgB,CACd,GAAI7yF,IAAM6yF,EACR,OAAOhwI,EAET6jJ,EAAU,EACV3f,EAAU,IAAI0c,GAAa5gJ,EAAIq+I,UAAW,CAAC,CAACzgJ,EAAGu/C,IACjD,CAkBA,OAAIn9C,EAAIq+I,WACNr+I,EAAIrF,KAAOkpJ,EACX7jJ,EAAIggJ,MAAQ9b,EACZlkI,EAAImgJ,YAASnlJ,EACbgF,EAAI8/I,WAAY,EACT9/I,GAEFkkI,EAAUuc,GAAQoD,EAAS3f,GAAWuZ,IAC/C,CAEA,SAASkE,GACPtvG,EACAmuG,EACAp7I,EACAy7I,EACAvlJ,EACAP,EACA+lJ,EACAC,GAEA,OAAK1uG,EAQEA,EAAKhgB,OACVmuH,EACAp7I,EACAy7I,EACAvlJ,EACAP,EACA+lJ,EACAC,GAdIhmJ,IAAUi1I,EACL39F,GAET49F,EAAO8Q,GACP9Q,EAAO6Q,GACA,IAAII,GAAUV,EAASK,EAAS,CAACvlJ,EAAKP,IAWjD,CAEA,SAASknJ,GAAW5vG,GAClB,OACEA,EAAKxoC,cAAgBq3I,IAAa7uG,EAAKxoC,cAAgBo5I,EAE3D,CAEA,SAASC,GAAc7wG,EAAMmuG,EAASp7I,EAAOy7I,EAAS3hH,GACpD,GAAImT,EAAKwuG,UAAYA,EACnB,OAAO,IAAIoC,GAAkBzC,EAASK,EAAS,CAACxuG,EAAKnT,MAAOA,IAG9D,IAGIw2C,EAHAouE,GAAkB,IAAV1+I,EAAcitC,EAAKwuG,QAAUxuG,EAAKwuG,UAAYz7I,GAAS2qI,EAC/DgU,GAAkB,IAAV3+I,EAAcy7I,EAAUA,IAAYz7I,GAAS2qI,EAGrD5lB,EACF25B,IAASC,EACL,CAACb,GAAc7wG,EAAMmuG,EAASp7I,EAAQyqI,EAAOgR,EAAS3hH,KACpDw2C,EAAU,IAAIwrE,GAAUV,EAASK,EAAS3hH,GAC5C4kH,EAAOC,EAAO,CAAC1xG,EAAMqjC,GAAW,CAACA,EAASrjC,IAEhD,OAAO,IAAIivG,GAAkBd,EAAU,GAAKsD,EAAS,GAAKC,EAAO55B,EACnE,CAsCA,SAASs3B,GAAS7+G,GAMhB,OAHAA,GADAA,GAAS,WADTA,GAAMA,GAAK,EAAK,cACSA,GAAK,EAAK,aACzBA,GAAK,GAAM,UAGV,KAFXA,GAAKA,GAAK,IACLA,GAAK,GAEZ,CAEA,SAASw/G,GAAMpnI,EAAO0C,EAAK6/B,EAAK8kG,GAC9B,IAAIE,EAAWF,EAAUrnI,EAAQihI,GAAQjhI,GAEzC,OADAunI,EAAS7kI,GAAO6/B,EACTglG,CACT,CAsCA,IAAItB,GAAqBnR,EAAO,EAC5B8R,GAA0B9R,EAAO,EACjC8S,GAA0B9S,EAAO,EAEjCkU,GAAiB,yBAErB,SAASC,GAAOC,GACd,OAAOrhH,QAAQqhH,GAAaA,EAAUF,IACxC,CAEA,IAAIG,GAAqB,SAAUrS,GACjC,SAASqS,EAAKppJ,GACZ,IAAIq6C,EAAQgvG,KACZ,GAAIrpJ,QACF,OAAOq6C,EAET,GAAI6uG,GAAOlpJ,GACT,OAAOA,EAET,IAAIq1I,EAAO0B,EAAkB/2I,GACzBJ,EAAOy1I,EAAKz1I,KAChB,OAAa,IAATA,EACKy6C,GAETgnG,GAAkBzhJ,GACdA,EAAO,GAAKA,EAAOm1I,EACduU,GAAS,EAAG1pJ,EAAMk1I,EAAO,KAAM,IAAIyU,GAAMlU,EAAK1uG,YAEhD0T,EAAMkpG,eAAc,SAAUh6C,GACnCA,EAAKigD,QAAQ5pJ,GACby1I,EAAK7qI,SAAQ,SAAU43C,EAAGjhD,GAAK,OAAOooG,EAAK39F,IAAIzK,EAAGihD,EAAI,GACxD,IACF,CA+LA,OA7LK20F,IAAoBqS,EAAKv3I,UAAYklI,GAC1CqS,EAAK5nJ,UAAYN,OAAO2G,OAAQkvI,GAAqBA,EAAkBv1I,WACvE4nJ,EAAK5nJ,UAAUsN,YAAcs6I,EAE7BA,EAAK5O,GAAK,WACR,OAAO16I,KAAK2iB,UACd,EAEA2mI,EAAK5nJ,UAAUF,SAAW,WACxB,OAAOxB,KAAKg6I,WAAW,SAAU,IACnC,EAIAsP,EAAK5nJ,UAAU4F,IAAM,SAAc6W,EAAO08H,GAExC,IADA18H,EAAQu3H,EAAU11I,KAAMme,KACX,GAAKA,EAAQne,KAAKF,KAAM,CAEnC,IAAI03C,EAAOmyG,GAAY3pJ,KADvBme,GAASne,KAAK4pJ,SAEd,OAAOpyG,GAAQA,EAAKr3B,MAAMhC,EAAQ+2H,EACpC,CACA,OAAO2F,CACT,EAIAyO,EAAK5nJ,UAAUoK,IAAM,SAAcqS,EAAOje,GACxC,OAiVJ,SAAoBupG,EAAMtrF,EAAOje,GAG/B,IAFAie,EAAQu3H,EAAUjsC,EAAMtrF,KAEVA,EACZ,OAAOsrF,EAGT,GAAItrF,GAASsrF,EAAK3pG,MAAQqe,EAAQ,EAChC,OAAOsrF,EAAKg6C,eAAc,SAAUh6C,GAClCtrF,EAAQ,EACJ0rI,GAAcpgD,EAAMtrF,GAAOrS,IAAI,EAAG5L,GAClC2pJ,GAAcpgD,EAAM,EAAGtrF,EAAQ,GAAGrS,IAAIqS,EAAOje,EACnD,IAGFie,GAASsrF,EAAKmgD,QAEd,IAAIE,EAAUrgD,EAAKsgD,MACf1gB,EAAU5/B,EAAK07C,MACfe,EAj9GG,CAAEhmJ,OAAO,GA+9GhB,OAbIie,GAAS6rI,GAAcvgD,EAAKwgD,WAC9BH,EAAUI,GAAYJ,EAASrgD,EAAK+5C,UAAW,EAAGrlI,EAAOje,EAAOgmJ,GAEhE7c,EAAU6gB,GACR7gB,EACA5/B,EAAK+5C,UACL/5C,EAAK0gD,OACLhsI,EACAje,EACAgmJ,GAICA,EAAShmJ,MAIVupG,EAAK+5C,WACP/5C,EAAK07C,MAAQ9b,EACb5/B,EAAKsgD,MAAQD,EACbrgD,EAAK67C,YAASnlJ,EACdspG,EAAKw7C,WAAY,EACVx7C,GAEF+/C,GAAS//C,EAAKmgD,QAASngD,EAAKwgD,UAAWxgD,EAAK0gD,OAAQ9gB,EAASygB,GAV3DrgD,CAWX,CA9XW2gD,CAAWpqJ,KAAMme,EAAOje,EACjC,EAEAopJ,EAAK5nJ,UAAUo3D,OAAS,SAAiB36C,GACvC,OAAQne,KAAKmN,IAAIgR,GAEH,IAAVA,EACAne,KAAKuK,QACL4T,IAAUne,KAAKF,KAAO,EACtBE,KAAKwD,MACLxD,KAAK8iB,OAAO3E,EAAO,GALnBne,IAMN,EAEAspJ,EAAK5nJ,UAAU05B,OAAS,SAAiBjd,EAAOje,GAC9C,OAAOF,KAAK8iB,OAAO3E,EAAO,EAAGje,EAC/B,EAEAopJ,EAAK5nJ,UAAU2vB,MAAQ,WACrB,OAAkB,IAAdrxB,KAAKF,KACAE,KAELA,KAAKwjJ,WACPxjJ,KAAKF,KAAOE,KAAK4pJ,QAAU5pJ,KAAKiqJ,UAAY,EAC5CjqJ,KAAKmqJ,OAASnV,EACdh1I,KAAKmlJ,MAAQnlJ,KAAK+pJ,MAAQ/pJ,KAAKslJ,YAASnlJ,EACxCH,KAAKilJ,WAAY,EACVjlJ,MAEFupJ,IACT,EAEAD,EAAK5nJ,UAAU6B,KAAO,WACpB,IAAI8J,EAASsV,UACT0nI,EAAUrqJ,KAAKF,KACnB,OAAOE,KAAKyjJ,eAAc,SAAUh6C,GAClCogD,GAAcpgD,EAAM,EAAG4gD,EAAUh9I,EAAO9L,QACxC,IAAK,IAAImoI,EAAK,EAAGA,EAAKr8H,EAAO9L,OAAQmoI,IACnCjgC,EAAK39F,IAAIu+I,EAAU3gB,EAAIr8H,EAAOq8H,GAElC,GACF,EAEA4f,EAAK5nJ,UAAU8B,IAAM,WACnB,OAAOqmJ,GAAc7pJ,KAAM,GAAI,EACjC,EAEAspJ,EAAK5nJ,UAAU+uD,QAAU,WACvB,IAAIpjD,EAASsV,UACb,OAAO3iB,KAAKyjJ,eAAc,SAAUh6C,GAClCogD,GAAcpgD,GAAOp8F,EAAO9L,QAC5B,IAAK,IAAImoI,EAAK,EAAGA,EAAKr8H,EAAO9L,OAAQmoI,IACnCjgC,EAAK39F,IAAI49H,EAAIr8H,EAAOq8H,GAExB,GACF,EAEA4f,EAAK5nJ,UAAU6I,MAAQ,WACrB,OAAOs/I,GAAc7pJ,KAAM,EAC7B,EAIAspJ,EAAK5nJ,UAAUwlC,OAAS,WAItB,IAHA,IAAIojH,EAAc3nI,UAEd4nI,EAAO,GACFlpJ,EAAI,EAAGA,EAAIshB,UAAUphB,OAAQF,IAAK,CACzC,IAAIu6G,EAAW0uC,EAAYjpJ,GACvBo4I,EAAMxC,EACY,iBAAbr7B,GAAyBg9B,EAAYh9B,GACxCA,EACA,CAACA,IAEU,IAAb69B,EAAI35I,MACNyqJ,EAAKhnJ,KAAKk2I,EAEd,CACA,OAAoB,IAAhB8Q,EAAKhpJ,OACAvB,KAES,IAAdA,KAAKF,MAAeE,KAAKwjJ,WAA6B,IAAhB+G,EAAKhpJ,OAGxCvB,KAAKyjJ,eAAc,SAAUh6C,GAClC8gD,EAAK7/I,SAAQ,SAAU+uI,GAAO,OAAOA,EAAI/uI,SAAQ,SAAUxK,GAAS,OAAOupG,EAAKlmG,KAAKrD,EAAQ,GAAI,GACnG,IAJSF,KAAKgP,YAAYu7I,EAAK,GAKjC,EAEAjB,EAAK5nJ,UAAUgoJ,QAAU,SAAkB5pJ,GACzC,OAAO+pJ,GAAc7pJ,KAAM,EAAGF,EAChC,EAEAwpJ,EAAK5nJ,UAAUyD,IAAM,SAAcg5I,EAAQv1H,GACzC,IAAIo1H,EAAWh+I,KAEf,OAAOA,KAAKyjJ,eAAc,SAAUh6C,GAClC,IAAK,IAAIpoG,EAAI,EAAGA,EAAI28I,EAASl+I,KAAMuB,IACjCooG,EAAK39F,IAAIzK,EAAG88I,EAAOx1I,KAAKigB,EAAS6gF,EAAKniG,IAAIjG,GAAIA,EAAG28I,GAErD,GACF,EAIAsL,EAAK5nJ,UAAU8C,MAAQ,SAAgBqxI,EAAOpzI,GAC5C,IAAI3C,EAAOE,KAAKF,KAChB,OAAI81I,EAAWC,EAAOpzI,EAAK3C,GAClBE,KAEF6pJ,GACL7pJ,KACA81I,EAAaD,EAAO/1I,GACpBk2I,EAAWvzI,EAAK3C,GAEpB,EAEAwpJ,EAAK5nJ,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GACrD,IAAInhF,EAAQmhF,EAAUt/F,KAAKF,KAAO,EAC9BuN,EAASm9I,GAAYxqJ,KAAMs/F,GAC/B,OAAO,IAAIk5C,GAAS,WAClB,IAAIt4I,EAAQmN,IACZ,OAAOnN,IAAUuqJ,GAxhGd,CAAEvqJ,WAAOC,EAAWkG,MAAM,GA0hGzBoyI,EAAc/rI,EAAM4yF,IAAYnhF,EAAQA,IAASje,EACvD,GACF,EAEAopJ,EAAK5nJ,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAIjD,IAHA,IAEIp/F,EAFAie,EAAQmhF,EAAUt/F,KAAKF,KAAO,EAC9BuN,EAASm9I,GAAYxqJ,KAAMs/F,IAEvBp/F,EAAQmN,OAAco9I,KACyB,IAAjDxwF,EAAG/5D,EAAOo/F,IAAYnhF,EAAQA,IAASne,QAI7C,OAAOme,CACT,EAEAmrI,EAAK5nJ,UAAUqjJ,cAAgB,SAAwBY,GACrD,OAAIA,IAAY3lJ,KAAKwjJ,UACZxjJ,KAEJ2lJ,EAQE6D,GACLxpJ,KAAK4pJ,QACL5pJ,KAAKiqJ,UACLjqJ,KAAKmqJ,OACLnqJ,KAAKmlJ,MACLnlJ,KAAK+pJ,MACLpE,EACA3lJ,KAAKslJ,QAda,IAAdtlJ,KAAKF,KACAypJ,MAETvpJ,KAAKwjJ,UAAYmC,EACjB3lJ,KAAKilJ,WAAY,EACVjlJ,KAWX,EAEOspJ,CACT,CAtNwB,CAsNtBrS,GAEFqS,GAAKF,OAASA,GAEd,IAAIsB,GAAgBpB,GAAK5nJ,UACzBgpJ,GAAcvB,KAAkB,EAChCuB,GAAc3V,GAAU2V,GAAc5xF,OACtC4xF,GAAc53G,MAAQ43G,GAAcxjH,OACpCwjH,GAAc5H,MAAQA,GACtB4H,GAAc1H,SAAW0H,GAAc3H,SAAWC,GAClD0H,GAAclzH,OAASA,GACvBkzH,GAAcxH,SAAWA,GACzBwH,GAAchG,QAAUA,GACxBgG,GAAc/F,YAAcA,GAC5B+F,GAAcjH,cAAgBA,GAC9BiH,GAAc5F,WAAaA,GAC3B4F,GAAc1F,YAAcA,GAC5B0F,GAAc,qBAAuBA,GAAc7F,UAAYA,GAC/D6F,GAAc,qBAAuB,SAAU7mJ,EAAQ60F,GACrD,OAAO70F,EAAON,KAAKm1F,EACrB,EACAgyD,GAAc,uBAAyB,SAAU7gJ,GAC/C,OAAOA,EAAIm7I,aACb,EAEA,IAAIyE,GAAQ,SAAetpI,EAAOwlI,GAChC3lJ,KAAKmgB,MAAQA,EACbngB,KAAK2lJ,QAAUA,CACjB,EAIA8D,GAAM/nJ,UAAUipJ,aAAe,SAAuBhF,EAAS1tD,EAAO95E,GACpE,GAAIA,IAAU85E,EAAQ,GAAKA,EAA8B,IAAtBj4F,KAAKmgB,MAAM5e,OAC5C,OAAOvB,KAET,IAAI4qJ,EAAezsI,IAAU85E,EAASi9C,EACtC,GAAI0V,GAAe5qJ,KAAKmgB,MAAM5e,OAC5B,OAAO,IAAIkoJ,GAAM,GAAI9D,GAEvB,IACIkF,EADAC,EAAgC,IAAhBF,EAEpB,GAAI3yD,EAAQ,EAAG,CACb,IAAI8yD,EAAW/qJ,KAAKmgB,MAAMyqI,GAG1B,IAFAC,EACEE,GAAYA,EAASJ,aAAahF,EAAS1tD,EAAQ+8C,EAAO72H,MAC3C4sI,GAAYD,EAC3B,OAAO9qJ,IAEX,CACA,GAAI8qJ,IAAkBD,EACpB,OAAO7qJ,KAET,IAAIgrJ,EAAWC,GAAcjrJ,KAAM2lJ,GACnC,IAAKmF,EACH,IAAK,IAAIphB,EAAK,EAAGA,EAAKkhB,EAAalhB,IACjCshB,EAAS7qI,MAAMupH,QAAMvpI,EAMzB,OAHI0qJ,IACFG,EAAS7qI,MAAMyqI,GAAeC,GAEzBG,CACT,EAEAvB,GAAM/nJ,UAAUwpJ,YAAc,SAAsBvF,EAAS1tD,EAAO95E,GAClE,GAAIA,KAAW85E,EAAQ,GAAKA,EAAQ,IAA4B,IAAtBj4F,KAAKmgB,MAAM5e,OACnD,OAAOvB,KAET,IAKI6qJ,EALAM,EAAchtI,EAAQ,IAAO85E,EAASi9C,EAC1C,GAAIiW,GAAanrJ,KAAKmgB,MAAM5e,OAC1B,OAAOvB,KAIT,GAAIi4F,EAAQ,EAAG,CACb,IAAI8yD,EAAW/qJ,KAAKmgB,MAAMgrI,GAG1B,IAFAN,EACEE,GAAYA,EAASG,YAAYvF,EAAS1tD,EAAQ+8C,EAAO72H,MAC1C4sI,GAAYI,IAAcnrJ,KAAKmgB,MAAM5e,OAAS,EAC7D,OAAOvB,IAEX,CAEA,IAAIgrJ,EAAWC,GAAcjrJ,KAAM2lJ,GAKnC,OAJAqF,EAAS7qI,MAAM2C,OAAOqoI,EAAY,GAC9BN,IACFG,EAAS7qI,MAAMgrI,GAAaN,GAEvBG,CACT,EAEA,IA6EII,GA7EAX,GAAO,CAAC,EAEZ,SAASD,GAAY/gD,EAAMnK,GACzB,IAAIz+E,EAAO4oF,EAAKmgD,QACZxoI,EAAQqoF,EAAKwgD,UACboB,EAAUrB,GAAc5oI,GACxBkqI,EAAO7hD,EAAKsgD,MAEhB,OAEA,SAASwB,EAAkB/zG,EAAMygD,EAAOj3F,GACtC,OAAiB,IAAVi3F,EAKT,SAAqBzgD,EAAMx2C,GACzB,IAAImf,EAAQnf,IAAWqqJ,EAAUC,GAAQA,EAAKnrI,MAAQq3B,GAAQA,EAAKr3B,MAC/D0zD,EAAO7yE,EAAS6f,EAAO,EAAIA,EAAO7f,EAClC8yE,EAAK1yD,EAAQpgB,EAIjB,OAHI8yE,EAAKmhE,IACPnhE,EAAKmhE,GAEA,WACL,GAAIphE,IAASC,EACX,OAAO22E,GAET,IAAI5nI,EAAMy8E,IAAYxrB,EAAKD,IAC3B,OAAO1zD,GAASA,EAAM0C,EACxB,CACF,CAlBM2oI,CAAYh0G,EAAMx2C,GAoBxB,SAAqBw2C,EAAMygD,EAAOj3F,GAChC,IAAIqM,EACA8S,EAAQq3B,GAAQA,EAAKr3B,MACrB0zD,EAAO7yE,EAAS6f,EAAO,EAAKA,EAAO7f,GAAWi3F,EAC9CnkB,EAAmC,GAA5B1yD,EAAQpgB,GAAWi3F,GAI9B,OAHInkB,EAAKmhE,IACPnhE,EAAKmhE,GAEA,WACL,OAAa,CACX,GAAI5nI,EAAQ,CACV,IAAInN,EAAQmN,IACZ,GAAInN,IAAUuqJ,GACZ,OAAOvqJ,EAETmN,EAAS,IACX,CACA,GAAIwmE,IAASC,EACX,OAAO22E,GAET,IAAI5nI,EAAMy8E,IAAYxrB,EAAKD,IAC3BxmE,EAASk+I,EACPprI,GAASA,EAAM0C,GACfo1E,EAAQ+8C,EACRh0I,GAAU6hB,GAAOo1E,GAErB,CACF,CACF,CA/CMwzD,CAAYj0G,EAAMygD,EAAOj3F,EAC/B,CANOuqJ,CAAkB9hD,EAAK07C,MAAO17C,EAAK0gD,OAAQ,EAqDpD,CAEA,SAASX,GAASkC,EAAQC,EAAU1zD,EAAO6wC,EAAMwiB,EAAM3F,EAASvjI,GAC9D,IAAIqnF,EAAOroG,OAAO2G,OAAO2iJ,IAUzB,OATAjhD,EAAK3pG,KAAO6rJ,EAAWD,EACvBjiD,EAAKmgD,QAAU8B,EACfjiD,EAAKwgD,UAAY0B,EACjBliD,EAAK0gD,OAASlyD,EACdwR,EAAK07C,MAAQrc,EACbr/B,EAAKsgD,MAAQuB,EACb7hD,EAAK+5C,UAAYmC,EACjBl8C,EAAK67C,OAASljI,EACdqnF,EAAKw7C,WAAY,EACVx7C,CACT,CAGA,SAAS8/C,KACP,OAAO6B,KAAeA,GAAa5B,GAAS,EAAG,EAAGxU,GACpD,CAiDA,SAASkV,GAAY1yG,EAAMmuG,EAAS1tD,EAAO95E,EAAOje,EAAOgmJ,GACvD,IAMIrrE,EANAh4D,EAAO1E,IAAU85E,EAASi9C,EAC1B0W,EAAUp0G,GAAQ30B,EAAM20B,EAAKr3B,MAAM5e,OACvC,IAAKqqJ,QAAqBzrJ,IAAVD,EACd,OAAOs3C,EAKT,GAAIygD,EAAQ,EAAG,CACb,IAAI4zD,EAAYr0G,GAAQA,EAAKr3B,MAAM0C,GAC/BipI,EAAe5B,GACjB2B,EACAlG,EACA1tD,EAAQ+8C,EACR72H,EACAje,EACAgmJ,GAEF,OAAI4F,IAAiBD,EACZr0G,IAETqjC,EAAUowE,GAAczzG,EAAMmuG,IACtBxlI,MAAM0C,GAAOipI,EACdjxE,EACT,CAEA,OAAI+wE,GAAWp0G,EAAKr3B,MAAM0C,KAAS3iB,EAC1Bs3C,GAGL0uG,GACF9Q,EAAO8Q,GAGTrrE,EAAUowE,GAAczzG,EAAMmuG,QAChBxlJ,IAAVD,GAAuB2iB,IAAQg4D,EAAQ16D,MAAM5e,OAAS,EACxDs5E,EAAQ16D,MAAM3c,MAEdq3E,EAAQ16D,MAAM0C,GAAO3iB,EAEhB26E,EACT,CAEA,SAASowE,GAAczzG,EAAMmuG,GAC3B,OAAIA,GAAWnuG,GAAQmuG,IAAYnuG,EAAKmuG,QAC/BnuG,EAEF,IAAIiyG,GAAMjyG,EAAOA,EAAKr3B,MAAM3b,QAAU,GAAImhJ,EACnD,CAEA,SAASgE,GAAYlgD,EAAMsiD,GACzB,GAAIA,GAAY/B,GAAcvgD,EAAKwgD,WACjC,OAAOxgD,EAAKsgD,MAEd,GAAIgC,EAAW,GAAMtiD,EAAK0gD,OAASnV,EAAQ,CAGzC,IAFA,IAAIx9F,EAAOiyD,EAAK07C,MACZltD,EAAQwR,EAAK0gD,OACV3yG,GAAQygD,EAAQ,GACrBzgD,EAAOA,EAAKr3B,MAAO4rI,IAAa9zD,EAASi9C,GACzCj9C,GAAS+8C,EAEX,OAAOx9F,CACT,CACF,CAEA,SAASqyG,GAAcpgD,EAAMosC,EAAOpzI,QAGpBtC,IAAV01I,IACFA,GAAS,QAEC11I,IAARsC,IACFA,GAAO,GAET,IAAIupJ,EAAQviD,EAAK+5C,WAAa,IAAInO,EAC9B4W,EAAYxiD,EAAKmgD,QACjBsC,EAAcziD,EAAKwgD,UACnBkC,EAAYF,EAAYpW,EACxBuW,OACMjsJ,IAARsC,EACIypJ,EACAzpJ,EAAM,EACNypJ,EAAczpJ,EACdwpJ,EAAYxpJ,EAClB,GAAI0pJ,IAAcF,GAAaG,IAAgBF,EAC7C,OAAOziD,EAIT,GAAI0iD,GAAaC,EACf,OAAO3iD,EAAKp4E,QAQd,IALA,IAAIg7H,EAAW5iD,EAAK0gD,OAChB9gB,EAAU5/B,EAAK07C,MAGfmH,EAAc,EACXH,EAAYG,EAAc,GAC/BjjB,EAAU,IAAIogB,GACZpgB,GAAWA,EAAQlpH,MAAM5e,OAAS,MAACpB,EAAWkpI,GAAW,GACzD2iB,GAGFM,GAAe,IADfD,GAAYrX,GAGVsX,IACFH,GAAaG,EACbL,GAAaK,EACbF,GAAeE,EACfJ,GAAeI,GAOjB,IAJA,IAAIC,EAAgBvC,GAAckC,GAC9BM,EAAgBxC,GAAcoC,GAG3BI,GAAiB,GAAMH,EAAWrX,GACvC3L,EAAU,IAAIogB,GACZpgB,GAAWA,EAAQlpH,MAAM5e,OAAS,CAAC8nI,GAAW,GAC9C2iB,GAEFK,GAAYrX,EAId,IAAIyX,EAAUhjD,EAAKsgD,MACfD,EACF0C,EAAgBD,EACZ5C,GAAYlgD,EAAM2iD,EAAc,GAChCI,EAAgBD,EAChB,IAAI9C,GAAM,GAAIuC,GACdS,EAGN,GACEA,GACAD,EAAgBD,GAChBJ,EAAYD,GACZO,EAAQtsI,MAAM5e,OACd,CAGA,IADA,IAAIi2C,EADJ6xF,EAAU4hB,GAAc5hB,EAAS2iB,GAExB/zD,EAAQo0D,EAAUp0D,EAAQ+8C,EAAO/8C,GAAS+8C,EAAO,CACxD,IAAInyH,EAAO0pI,IAAkBt0D,EAASi9C,EACtC19F,EAAOA,EAAKr3B,MAAM0C,GAAOooI,GAAczzG,EAAKr3B,MAAM0C,GAAMmpI,EAC1D,CACAx0G,EAAKr3B,MAAOosI,IAAkBvX,EAASE,GAAQuX,CACjD,CAQA,GALIL,EAAcF,IAChBpC,EAAUA,GAAWA,EAAQoB,YAAYc,EAAO,EAAGI,IAIjDD,GAAaK,EACfL,GAAaK,EACbJ,GAAeI,EACfH,EAAWrX,EACX3L,EAAU,KACVygB,EAAUA,GAAWA,EAAQa,aAAaqB,EAAO,EAAGG,QAG/C,GAAIA,EAAYF,GAAaO,EAAgBD,EAAe,CAIjE,IAHAD,EAAc,EAGPjjB,GAAS,CACd,IAAIqjB,EAAcP,IAAcE,EAAYnX,EAC5C,GAAKwX,IAAeF,IAAkBH,EAAYnX,EAChD,MAEEwX,IACFJ,IAAgB,GAAKD,GAAYK,GAEnCL,GAAYrX,EACZ3L,EAAUA,EAAQlpH,MAAMusI,EAC1B,CAGIrjB,GAAW8iB,EAAYF,IACzB5iB,EAAUA,EAAQshB,aAAaqB,EAAOK,EAAUF,EAAYG,IAE1DjjB,GAAWmjB,EAAgBD,IAC7BljB,EAAUA,EAAQ6hB,YAChBc,EACAK,EACAG,EAAgBF,IAGhBA,IACFH,GAAaG,EACbF,GAAeE,EAEnB,CAEA,OAAI7iD,EAAK+5C,WACP/5C,EAAK3pG,KAAOssJ,EAAcD,EAC1B1iD,EAAKmgD,QAAUuC,EACf1iD,EAAKwgD,UAAYmC,EACjB3iD,EAAK0gD,OAASkC,EACd5iD,EAAK07C,MAAQ9b,EACb5/B,EAAKsgD,MAAQD,EACbrgD,EAAK67C,YAASnlJ,EACdspG,EAAKw7C,WAAY,EACVx7C,GAEF+/C,GAAS2C,EAAWC,EAAaC,EAAUhjB,EAASygB,EAC7D,CAEA,SAASE,GAAclqJ,GACrB,OAAOA,EAAOm1I,EAAO,EAAMn1I,EAAO,IAAOk1I,GAAUA,CACrD,CAEA,IA2GI2X,GA3GApH,GAA2B,SAAU/jI,GACvC,SAAS+jI,EAAWrlJ,GAClB,OAAOA,QACH0sJ,KACArR,GAAar7I,GACbA,EACA0sJ,KAAkBnJ,eAAc,SAAUt+I,GACxC,IAAIowI,EAAOwB,EAAgB72I,GAC3BqhJ,GAAkBhM,EAAKz1I,MACvBy1I,EAAK7qI,SAAQ,SAAU43C,EAAGv/C,GAAK,OAAOoC,EAAI2G,IAAI/I,EAAGu/C,EAAI,GACvD,GACN,CA6EA,OA3EK9gC,IAAM+jI,EAAWxzI,UAAYyP,GAClC+jI,EAAW7jJ,UAAYN,OAAO2G,OAAQyZ,GAAOA,EAAI9f,WACjD6jJ,EAAW7jJ,UAAUsN,YAAcu2I,EAEnCA,EAAW7K,GAAK,WACd,OAAO16I,KAAK2iB,UACd,EAEA4iI,EAAW7jJ,UAAUF,SAAW,WAC9B,OAAOxB,KAAKg6I,WAAW,eAAgB,IACzC,EAIAuL,EAAW7jJ,UAAU4F,IAAM,SAAcvE,EAAG83I,GAC1C,IAAI18H,EAAQne,KAAK6sJ,KAAKvlJ,IAAIvE,GAC1B,YAAiB5C,IAAVge,EAAsBne,KAAK8sJ,MAAMxlJ,IAAI6W,GAAO,GAAK08H,CAC1D,EAIA0K,EAAW7jJ,UAAU2vB,MAAQ,WAC3B,OAAkB,IAAdrxB,KAAKF,KACAE,KAELA,KAAKwjJ,WACPxjJ,KAAKF,KAAO,EACZE,KAAK6sJ,KAAKx7H,QACVrxB,KAAK8sJ,MAAMz7H,QACXrxB,KAAKilJ,WAAY,EACVjlJ,MAEF4sJ,IACT,EAEArH,EAAW7jJ,UAAUoK,IAAM,SAAc/I,EAAGu/C,GAC1C,OAAOyqG,GAAiB/sJ,KAAM+C,EAAGu/C,EACnC,EAEAijG,EAAW7jJ,UAAUo3D,OAAS,SAAiB/1D,GAC7C,OAAOgqJ,GAAiB/sJ,KAAM+C,EAAGoyI,EACnC,EAEAoQ,EAAW7jJ,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GACvD,IAAI0+C,EAAWh+I,KAEf,OAAOA,KAAK8sJ,MAAMtX,WAChB,SAAUnxG,GAAS,OAAOA,GAAS41B,EAAG51B,EAAM,GAAIA,EAAM,GAAI25G,EAAW,GACrE1+C,EAEJ,EAEAimD,EAAW7jJ,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GAC3D,OAAOt/F,KAAK8sJ,MAAMnT,eAAeS,WAAW1tI,EAAM4yF,EACpD,EAEAimD,EAAW7jJ,UAAUqjJ,cAAgB,SAAwBY,GAC3D,GAAIA,IAAY3lJ,KAAKwjJ,UACnB,OAAOxjJ,KAET,IAAIgtJ,EAAShtJ,KAAK6sJ,KAAK9H,cAAcY,GACjCsH,EAAUjtJ,KAAK8sJ,MAAM/H,cAAcY,GACvC,OAAKA,EAUEuH,GAAeF,EAAQC,EAAStH,EAAS3lJ,KAAKslJ,QATjC,IAAdtlJ,KAAKF,KACA8sJ,MAET5sJ,KAAKwjJ,UAAYmC,EACjB3lJ,KAAKilJ,WAAY,EACjBjlJ,KAAK6sJ,KAAOG,EACZhtJ,KAAK8sJ,MAAQG,EACNjtJ,KAGX,EAEOulJ,CACT,CAzF8B,CAyF5B/jI,IAOF,SAAS0rI,GAAe/nJ,EAAKskG,EAAMk8C,EAASvjI,GAC1C,IAAI+qI,EAAO/rJ,OAAO2G,OAAOw9I,GAAW7jJ,WAOpC,OANAyrJ,EAAKrtJ,KAAOqF,EAAMA,EAAIrF,KAAO,EAC7BqtJ,EAAKN,KAAO1nJ,EACZgoJ,EAAKL,MAAQrjD,EACb0jD,EAAK3J,UAAYmC,EACjBwH,EAAK7H,OAASljI,EACd+qI,EAAKlI,WAAY,EACVkI,CACT,CAGA,SAASP,KACP,OACED,KACCA,GAAoBO,GAAetK,KAAY2G,MAEpD,CAEA,SAASwD,GAAiBI,EAAMpqJ,EAAGu/C,GACjC,IAII0qG,EACAC,EALA9nJ,EAAMgoJ,EAAKN,KACXpjD,EAAO0jD,EAAKL,MACZzrJ,EAAI8D,EAAImC,IAAIvE,GACZoK,OAAYhN,IAANkB,EAGV,GAAIihD,IAAM6yF,EAAS,CAEjB,IAAKhoI,EACH,OAAOggJ,EAEL1jD,EAAK3pG,MAAQm1I,GAAQxrC,EAAK3pG,MAAmB,EAAXqF,EAAIrF,MAExCktJ,GADAC,EAAUxjD,EAAKxkG,QAAO,SAAUo/B,EAAOxhB,GAAO,YAAiB1iB,IAAVkkC,GAAuBhjC,IAAMwhB,CAAK,KAEpFy3H,aACAn1I,KAAI,SAAUk/B,GAAS,OAAOA,EAAM,EAAI,IACxCy6G,OACAsO,QACCD,EAAK3J,YACPwJ,EAAOxJ,UAAYyJ,EAAQzJ,UAAY2J,EAAK3J,aAG9CwJ,EAAS7nJ,EAAI2zD,OAAO/1D,GACpBkqJ,EAAU5rJ,IAAMooG,EAAK3pG,KAAO,EAAI2pG,EAAKjmG,MAAQimG,EAAK39F,IAAIzK,OAAGlB,GAE7D,MAAO,GAAIgN,EAAK,CACd,GAAIm1C,IAAMmnD,EAAKniG,IAAIjG,GAAG,GACpB,OAAO8rJ,EAETH,EAAS7nJ,EACT8nJ,EAAUxjD,EAAK39F,IAAIzK,EAAG,CAAC0B,EAAGu/C,GAC5B,MACE0qG,EAAS7nJ,EAAI2G,IAAI/I,EAAG0mG,EAAK3pG,MACzBmtJ,EAAUxjD,EAAK39F,IAAI29F,EAAK3pG,KAAM,CAACiD,EAAGu/C,IAEpC,OAAI6qG,EAAK3J,WACP2J,EAAKrtJ,KAAOktJ,EAAOltJ,KACnBqtJ,EAAKN,KAAOG,EACZG,EAAKL,MAAQG,EACbE,EAAK7H,YAASnlJ,EACdgtJ,EAAKlI,WAAY,EACVkI,GAEFD,GAAeF,EAAQC,EAChC,CArEA1H,GAAWhK,aAAeA,GAE1BgK,GAAW7jJ,UAAUq2I,IAAqB,EAC1CwN,GAAW7jJ,UAAUqzI,GAAUwQ,GAAW7jJ,UAAUo3D,OAoEpD,IAAIu0F,GAAkB,0BAEtB,SAASC,GAAQC,GACf,OAAOvlH,QAAQulH,GAAcA,EAAWF,IAC1C,CAEA,IAAIG,GAAsB,SAAUvW,GAClC,SAASuW,EAAMttJ,GACb,OAAOA,QACHutJ,KACAH,GAAQptJ,GACRA,EACAutJ,KAAaC,QAAQxtJ,EAC3B,CAqLA,OAnLK+2I,IAAoBuW,EAAMz7I,UAAYklI,GAC3CuW,EAAM9rJ,UAAYN,OAAO2G,OAAQkvI,GAAqBA,EAAkBv1I,WACxE8rJ,EAAM9rJ,UAAUsN,YAAcw+I,EAE9BA,EAAM9S,GAAK,WACT,OAAO16I,KAAK2iB,UACd,EAEA6qI,EAAM9rJ,UAAUF,SAAW,WACzB,OAAOxB,KAAKg6I,WAAW,UAAW,IACpC,EAIAwT,EAAM9rJ,UAAU4F,IAAM,SAAc6W,EAAO08H,GACzC,IAAI7+F,EAAOh8C,KAAK2tJ,MAEhB,IADAxvI,EAAQu3H,EAAU11I,KAAMme,GACjB69B,GAAQ79B,KACb69B,EAAOA,EAAK91C,KAEd,OAAO81C,EAAOA,EAAK97C,MAAQ26I,CAC7B,EAEA2S,EAAM9rJ,UAAUg7H,KAAO,WACrB,OAAO18H,KAAK2tJ,OAAS3tJ,KAAK2tJ,MAAMztJ,KAClC,EAIAstJ,EAAM9rJ,UAAU6B,KAAO,WACrB,IAAI+mJ,EAAc3nI,UAElB,GAAyB,IAArBA,UAAUphB,OACZ,OAAOvB,KAIT,IAFA,IAAIgpJ,EAAUhpJ,KAAKF,KAAO6iB,UAAUphB,OAChCy6C,EAAOh8C,KAAK2tJ,MACPjkB,EAAK/mH,UAAUphB,OAAS,EAAGmoI,GAAM,EAAGA,IAC3C1tF,EAAO,CACL97C,MAAOoqJ,EAAY5gB,GACnBxjI,KAAM81C,GAGV,OAAIh8C,KAAKwjJ,WACPxjJ,KAAKF,KAAOkpJ,EACZhpJ,KAAK2tJ,MAAQ3xG,EACbh8C,KAAKslJ,YAASnlJ,EACdH,KAAKilJ,WAAY,EACVjlJ,MAEF4tJ,GAAU5E,EAAShtG,EAC5B,EAEAwxG,EAAM9rJ,UAAUgsJ,QAAU,SAAkBnY,GAE1C,GAAkB,KADlBA,EAAO0B,EAAkB1B,IAChBz1I,KACP,OAAOE,KAET,GAAkB,IAAdA,KAAKF,MAAcwtJ,GAAQ/X,GAC7B,OAAOA,EAETgM,GAAkBhM,EAAKz1I,MACvB,IAAIkpJ,EAAUhpJ,KAAKF,KACfk8C,EAAOh8C,KAAK2tJ,MAQhB,OAPApY,EAAKC,WAAU,SAAUt1I,GACvB8oJ,IACAhtG,EAAO,CACL97C,MAAOA,EACPgG,KAAM81C,EAEV,IAAiB,GACbh8C,KAAKwjJ,WACPxjJ,KAAKF,KAAOkpJ,EACZhpJ,KAAK2tJ,MAAQ3xG,EACbh8C,KAAKslJ,YAASnlJ,EACdH,KAAKilJ,WAAY,EACVjlJ,MAEF4tJ,GAAU5E,EAAShtG,EAC5B,EAEAwxG,EAAM9rJ,UAAU8B,IAAM,WACpB,OAAOxD,KAAKwE,MAAM,EACpB,EAEAgpJ,EAAM9rJ,UAAU2vB,MAAQ,WACtB,OAAkB,IAAdrxB,KAAKF,KACAE,KAELA,KAAKwjJ,WACPxjJ,KAAKF,KAAO,EACZE,KAAK2tJ,WAAQxtJ,EACbH,KAAKslJ,YAASnlJ,EACdH,KAAKilJ,WAAY,EACVjlJ,MAEFytJ,IACT,EAEAD,EAAM9rJ,UAAU8C,MAAQ,SAAgBqxI,EAAOpzI,GAC7C,GAAImzI,EAAWC,EAAOpzI,EAAKzC,KAAKF,MAC9B,OAAOE,KAET,IAAIo/I,EAAgBtJ,EAAaD,EAAO71I,KAAKF,MAE7C,GADkBk2I,EAAWvzI,EAAKzC,KAAKF,QACnBE,KAAKF,KAEvB,OAAOm3I,EAAkBv1I,UAAU8C,MAAMmE,KAAK3I,KAAM61I,EAAOpzI,GAI7D,IAFA,IAAIumJ,EAAUhpJ,KAAKF,KAAOs/I,EACtBpjG,EAAOh8C,KAAK2tJ,MACTvO,KACLpjG,EAAOA,EAAK91C,KAEd,OAAIlG,KAAKwjJ,WACPxjJ,KAAKF,KAAOkpJ,EACZhpJ,KAAK2tJ,MAAQ3xG,EACbh8C,KAAKslJ,YAASnlJ,EACdH,KAAKilJ,WAAY,EACVjlJ,MAEF4tJ,GAAU5E,EAAShtG,EAC5B,EAIAwxG,EAAM9rJ,UAAUqjJ,cAAgB,SAAwBY,GACtD,OAAIA,IAAY3lJ,KAAKwjJ,UACZxjJ,KAEJ2lJ,EAQEiI,GAAU5tJ,KAAKF,KAAME,KAAK2tJ,MAAOhI,EAAS3lJ,KAAKslJ,QAPlC,IAAdtlJ,KAAKF,KACA2tJ,MAETztJ,KAAKwjJ,UAAYmC,EACjB3lJ,KAAKilJ,WAAY,EACVjlJ,KAGX,EAIAwtJ,EAAM9rJ,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAClD,IAAI0+C,EAAWh+I,KAEf,GAAIs/F,EACF,OAAO,IAAIq7C,GAAS36I,KAAK6mC,WAAW2uG,WAClC,SAAUlzF,EAAGv/C,GAAK,OAAOk3D,EAAG3X,EAAGv/C,EAAGi7I,EAAW,GAC7C1+C,GAKJ,IAFA,IAAIjiE,EAAa,EACbma,EAAOx3C,KAAK2tJ,MACTn2G,IACsC,IAAvCyiB,EAAGziB,EAAKt3C,MAAOm9B,IAAcr9B,OAGjCw3C,EAAOA,EAAKtxC,KAEd,OAAOm3B,CACT,EAEAmwH,EAAM9rJ,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GACtD,GAAIA,EACF,OAAO,IAAIq7C,GAAS36I,KAAK6mC,WAAWuzG,WAAW1tI,EAAM4yF,GAEvD,IAAIjiE,EAAa,EACbma,EAAOx3C,KAAK2tJ,MAChB,OAAO,IAAInV,GAAS,WAClB,GAAIhhG,EAAM,CACR,IAAIt3C,EAAQs3C,EAAKt3C,MAEjB,OADAs3C,EAAOA,EAAKtxC,KACLuyI,EAAc/rI,EAAM2wB,IAAcn9B,EAC3C,CACA,MAv1HG,CAAEA,WAAOC,EAAWkG,MAAM,EAw1H/B,GACF,EAEOmnJ,CACT,CA7LyB,CA6LvBvW,GAEFuW,GAAMF,QAAUA,GAEhB,IA0BIO,GA1BAC,GAAiBN,GAAM9rJ,UAgB3B,SAASksJ,GAAU9tJ,EAAMk8C,EAAM2pG,EAASvjI,GACtC,IAAIjd,EAAM/D,OAAO2G,OAAO+lJ,IAMxB,OALA3oJ,EAAIrF,KAAOA,EACXqF,EAAIwoJ,MAAQ3xG,EACZ72C,EAAIq+I,UAAYmC,EAChBxgJ,EAAImgJ,OAASljI,EACbjd,EAAI8/I,WAAY,EACT9/I,CACT,CAGA,SAASsoJ,KACP,OAAOI,KAAgBA,GAAcD,GAAU,GACjD,CA5BAE,GAAeT,KAAmB,EAClCS,GAAevjJ,MAAQujJ,GAAetqJ,IACtCsqJ,GAAer9F,QAAUq9F,GAAevqJ,KACxCuqJ,GAAeC,WAAaD,GAAeJ,QAC3CI,GAAerK,cAAgBA,GAC/BqK,GAAehJ,WAAaA,GAC5BgJ,GAAe9I,YAAcA,GAC7B8I,GAAe,qBAAuBA,GAAejJ,UAAYA,GACjEiJ,GAAe,qBAAuB,SAAUjqJ,EAAQ60F,GACtD,OAAO70F,EAAO4sD,QAAQioC,EACxB,EACAo1D,GAAe,uBAAyB,SAAUjkJ,GAChD,OAAOA,EAAIm7I,aACb,EAiBA,IAAIgJ,GAAgB,wBAEpB,SAASC,GAAMC,GACb,OAAOlmH,QAAQkmH,GAAYA,EAASF,IACtC,CAEA,SAASG,GAAaC,GACpB,OAAOH,GAAMG,IAAoBpW,EAAUoW,EAC7C,CAEA,SAASC,GAAU9rG,EAAGC,GACpB,GAAID,IAAMC,EACR,OAAO,EAGT,IACG2zF,EAAa3zF,SACFriD,IAAXoiD,EAAEziD,WAAiCK,IAAXqiD,EAAE1iD,MAAsByiD,EAAEziD,OAAS0iD,EAAE1iD,WAChDK,IAAboiD,EAAE+iG,aACYnlJ,IAAbqiD,EAAE8iG,QACF/iG,EAAE+iG,SAAW9iG,EAAE8iG,QACjBhP,EAAQ/zF,KAAO+zF,EAAQ9zF,IACvBi0F,EAAUl0F,KAAOk0F,EAAUj0F,IAC3Bw1F,EAAUz1F,KAAOy1F,EAAUx1F,GAE3B,OAAO,EAGT,GAAe,IAAXD,EAAEziD,MAAyB,IAAX0iD,EAAE1iD,KACpB,OAAO,EAGT,IAAIwuJ,GAAkB3X,EAAcp0F,GAEpC,GAAIy1F,EAAUz1F,GAAI,CAChB,IAAIj1C,EAAUi1C,EAAEj1C,UAChB,OACEk1C,EAAEngB,OAAM,SAAUigB,EAAGv/C,GACnB,IAAIshC,EAAQ/2B,EAAQpH,OAAOhG,MAC3B,OAAOmkC,GAASu3G,GAAGv3G,EAAM,GAAIie,KAAOgsG,GAAkB1S,GAAGv3G,EAAM,GAAIthC,GACrE,KAAMuK,EAAQpH,OAAOG,IAEzB,CAEA,IAAIkoJ,GAAU,EAEd,QAAepuJ,IAAXoiD,EAAEziD,KACJ,QAAeK,IAAXqiD,EAAE1iD,KACyB,mBAAlByiD,EAAE03F,aACX13F,EAAE03F,kBAEC,CACLsU,GAAU,EACV,IAAIniH,EAAImW,EACRA,EAAIC,EACJA,EAAIpW,CACN,CAGF,IAAIoiH,GAAW,EACXC,EAAQjsG,EAAEgzF,WAAU,SAAUlzF,EAAGv/C,GACnC,GACEurJ,GACK/rG,EAAEp1C,IAAIm1C,GACPisG,GACC3S,GAAGt5F,EAAGC,EAAEj7C,IAAIvE,EAAGoyI,KACfyG,GAAGr5F,EAAEj7C,IAAIvE,EAAGoyI,GAAU7yF,GAG3B,OADAksG,GAAW,GACJ,CAEX,IAEA,OAAOA,GAAYjsG,EAAEziD,OAAS2uJ,CAChC,CAEA,SAASC,GAAMC,EAAMphJ,GACnB,IAAIqhJ,EAAY,SAAUnuJ,GACxBkuJ,EAAKjtJ,UAAUjB,GAAO8M,EAAQ9M,EAChC,EAIA,OAHAW,OAAOD,KAAKoM,GAAS7C,QAAQkkJ,GAC7BxtJ,OAAOyvG,uBACLzvG,OAAOyvG,sBAAsBtjG,GAAS7C,QAAQkkJ,GACzCD,CACT,CAEA,SAASrqF,GAAKpkE,GACZ,IAAKA,GAA0B,iBAAVA,EACnB,OAAOA,EAET,IAAKi2I,EAAaj2I,GAAQ,CACxB,IAAK2hJ,GAAgB3hJ,GACnB,OAAOA,EAETA,EAAQ42I,EAAI52I,EACd,CACA,GAAIo2I,EAAQp2I,GAAQ,CAClB,IAAI2uJ,EAAW,CAAC,EAIhB,OAHA3uJ,EAAMs1I,WAAU,SAAUlzF,EAAGv/C,GAC3B8rJ,EAAS9rJ,GAAKuhE,GAAKhiB,EACrB,IACOusG,CACT,CACA,IAAIhrJ,EAAS,GAIb,OAHA3D,EAAMs1I,WAAU,SAAUlzF,GACxBz+C,EAAON,KAAK+gE,GAAKhiB,GACnB,IACOz+C,CACT,CAEA,IAAI0a,GAAoB,SAAU44H,GAChC,SAAS54H,EAAIre,GACX,OAAOA,QACH4uJ,KACAb,GAAM/tJ,KAAW83I,EAAU93I,GAC3BA,EACA4uJ,KAAWrL,eAAc,SAAU33I,GACjC,IAAIypI,EAAO4B,EAAcj3I,GACzBqhJ,GAAkBhM,EAAKz1I,MACvBy1I,EAAK7qI,SAAQ,SAAU43C,GAAK,OAAOx2C,EAAI2S,IAAI6jC,EAAI,GACjD,GACN,CAsLA,OApLK60F,IAAgB54H,EAAIxM,UAAYolI,GACrC54H,EAAI7c,UAAYN,OAAO2G,OAAQovI,GAAiBA,EAAcz1I,WAC9D6c,EAAI7c,UAAUsN,YAAcuP,EAE5BA,EAAIm8H,GAAK,WACP,OAAO16I,KAAK2iB,UACd,EAEApE,EAAIwwI,SAAW,SAAmB7uJ,GAChC,OAAOF,KAAK+2I,EAAgB72I,GAAO8uJ,SACrC,EAEAzwI,EAAI0wI,UAAY,SAAoBC,GAElC,OADAA,EAAOrY,EAAWqY,GAAMroH,WACZtlC,OACR4tJ,GAAaF,UAAU1oJ,MAAMgY,EAAI2wI,EAAK1rJ,OAAQ0rJ,GAC9CJ,IACN,EAEAvwI,EAAI6jC,MAAQ,SAAgB8sG,GAE1B,OADAA,EAAOrY,EAAWqY,GAAMroH,WACZtlC,OACR4tJ,GAAa/sG,MAAM77C,MAAMgY,EAAI2wI,EAAK1rJ,OAAQ0rJ,GAC1CJ,IACN,EAEAvwI,EAAI7c,UAAUF,SAAW,WACvB,OAAOxB,KAAKg6I,WAAW,QAAS,IAClC,EAIAz7H,EAAI7c,UAAUyL,IAAM,SAAcjN,GAChC,OAAOF,KAAK6sJ,KAAK1/I,IAAIjN,EACvB,EAIAqe,EAAI7c,UAAU+c,IAAM,SAAcve,GAChC,OAAOkvJ,GAAUpvJ,KAAMA,KAAK6sJ,KAAK/gJ,IAAI5L,EAAOA,GAC9C,EAEAqe,EAAI7c,UAAUo3D,OAAS,SAAiB54D,GACtC,OAAOkvJ,GAAUpvJ,KAAMA,KAAK6sJ,KAAK/zF,OAAO54D,GAC1C,EAEAqe,EAAI7c,UAAU2vB,MAAQ,WACpB,OAAO+9H,GAAUpvJ,KAAMA,KAAK6sJ,KAAKx7H,QACnC,EAIA9S,EAAI7c,UAAUyD,IAAM,SAAcg5I,EAAQv1H,GACxC,IAAIo1H,EAAWh+I,KAGXqvJ,GAAa,EAEbrC,EAASoC,GACXpvJ,KACAA,KAAK6sJ,KAAKyC,YAAW,SAAU7b,GAC7B,IAAInxF,EAAImxF,EAAI,GAERrsB,EAAS+2B,EAAOx1I,KAAKigB,EAAS05B,EAAGA,EAAG07F,GAMxC,OAJI52B,IAAW9kE,IACb+sG,GAAa,GAGR,CAACjoC,EAAQA,EAClB,GAAGx+F,IAGL,OAAOymI,EAAarC,EAAShtJ,IAC/B,EAEAue,EAAI7c,UAAU0gD,MAAQ,WAEpB,IADA,IAAIw+F,EAAQ,GAAI9nD,EAAMn2E,UAAUphB,OACxBu3F,KAAQ8nD,EAAO9nD,GAAQn2E,UAAWm2E,GAG1C,OAAqB,KADrB8nD,EAAQA,EAAM37I,QAAO,SAAU8iC,GAAK,OAAkB,IAAXA,EAAEjoC,IAAY,KAC/CyB,OACDvB,KAES,IAAdA,KAAKF,MAAeE,KAAKwjJ,WAA8B,IAAjB5C,EAAMr/I,OAGzCvB,KAAKyjJ,eAAc,SAAU33I,GAClC,IAAK,IAAI49H,EAAK,EAAGA,EAAKkX,EAAMr/I,OAAQmoI,IACT,iBAAdkX,EAAMlX,GACf59H,EAAI2S,IAAImiI,EAAMlX,IAEdyN,EAAcyJ,EAAMlX,IAAKh/H,SAAQ,SAAUxK,GAAS,OAAO4L,EAAI2S,IAAIve,EAAQ,GAGjF,IAVSF,KAAKgP,YAAY4xI,EAAM,GAWlC,EAEAriI,EAAI7c,UAAUutJ,UAAY,WAExB,IADA,IAAIrO,EAAQ,GAAI9nD,EAAMn2E,UAAUphB,OACxBu3F,KAAQ8nD,EAAO9nD,GAAQn2E,UAAWm2E,GAE1C,GAAqB,IAAjB8nD,EAAMr/I,OACR,OAAOvB,KAET4gJ,EAAQA,EAAMz7I,KAAI,SAAUowI,GAAQ,OAAO4B,EAAc5B,EAAO,IAChE,IAAIga,EAAW,GAMf,OALAvvJ,KAAK0K,SAAQ,SAAUxK,GAChB0gJ,EAAMv+G,OAAM,SAAUkzG,GAAQ,OAAOA,EAAKv5H,SAAS9b,EAAQ,KAC9DqvJ,EAAShsJ,KAAKrD,EAElB,IACOF,KAAKyjJ,eAAc,SAAU33I,GAClCyjJ,EAAS7kJ,SAAQ,SAAUxK,GACzB4L,EAAIgtD,OAAO54D,EACb,GACF,GACF,EAEAqe,EAAI7c,UAAUu+F,SAAW,WAEvB,IADA,IAAI2gD,EAAQ,GAAI9nD,EAAMn2E,UAAUphB,OACxBu3F,KAAQ8nD,EAAO9nD,GAAQn2E,UAAWm2E,GAE1C,GAAqB,IAAjB8nD,EAAMr/I,OACR,OAAOvB,KAET4gJ,EAAQA,EAAMz7I,KAAI,SAAUowI,GAAQ,OAAO4B,EAAc5B,EAAO,IAChE,IAAIga,EAAW,GAMf,OALAvvJ,KAAK0K,SAAQ,SAAUxK,GACjB0gJ,EAAMziH,MAAK,SAAUo3G,GAAQ,OAAOA,EAAKv5H,SAAS9b,EAAQ,KAC5DqvJ,EAAShsJ,KAAKrD,EAElB,IACOF,KAAKyjJ,eAAc,SAAU33I,GAClCyjJ,EAAS7kJ,SAAQ,SAAUxK,GACzB4L,EAAIgtD,OAAO54D,EACb,GACF,GACF,EAEAqe,EAAI7c,UAAU6sC,KAAO,SAAe4xG,GAElC,OAAOqP,GAAWtP,GAAYlgJ,KAAMmgJ,GACtC,EAEA5hI,EAAI7c,UAAU8jJ,OAAS,SAAiBrH,EAAQgC,GAE9C,OAAOqP,GAAWtP,GAAYlgJ,KAAMmgJ,EAAYhC,GAClD,EAEA5/H,EAAI7c,UAAUojJ,WAAa,WACzB,OAAO9kJ,KAAK6sJ,KAAK/H,YACnB,EAEAvmI,EAAI7c,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAChD,IAAI0+C,EAAWh+I,KAEf,OAAOA,KAAK6sJ,KAAKrX,WAAU,SAAUzyI,GAAK,OAAOk3D,EAAGl3D,EAAGA,EAAGi7I,EAAW,GAAG1+C,EAC1E,EAEA/gF,EAAI7c,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GACpD,OAAOt/F,KAAK6sJ,KAAKzS,WAAW1tI,EAAM4yF,EACpC,EAEA/gF,EAAI7c,UAAUqjJ,cAAgB,SAAwBY,GACpD,GAAIA,IAAY3lJ,KAAKwjJ,UACnB,OAAOxjJ,KAET,IAAIgtJ,EAAShtJ,KAAK6sJ,KAAK9H,cAAcY,GACrC,OAAKA,EAQE3lJ,KAAKyvJ,OAAOzC,EAAQrH,GAPP,IAAd3lJ,KAAKF,KACAE,KAAK0vJ,WAEd1vJ,KAAKwjJ,UAAYmC,EACjB3lJ,KAAK6sJ,KAAOG,EACLhtJ,KAGX,EAEOue,CACT,CAlMuB,CAkMrB44H,GAEF54H,GAAI0vI,MAAQA,GAEZ,IAsCI0B,GAtCAR,GAAe5wI,GAAI7c,UAiBvB,SAAS0tJ,GAAUtjJ,EAAKkhJ,GACtB,OAAIlhJ,EAAI03I,WACN13I,EAAIhM,KAAOktJ,EAAOltJ,KAClBgM,EAAI+gJ,KAAOG,EACJlhJ,GAEFkhJ,IAAWlhJ,EAAI+gJ,KAClB/gJ,EACgB,IAAhBkhJ,EAAOltJ,KACPgM,EAAI4jJ,UACJ5jJ,EAAI2jJ,OAAOzC,EACjB,CAEA,SAAS4C,GAAQzqJ,EAAKwgJ,GACpB,IAAI75I,EAAM1K,OAAO2G,OAAOonJ,IAIxB,OAHArjJ,EAAIhM,KAAOqF,EAAMA,EAAIrF,KAAO,EAC5BgM,EAAI+gJ,KAAO1nJ,EACX2G,EAAI03I,UAAYmC,EACT75I,CACT,CAGA,SAASgjJ,KACP,OAAOa,KAAcA,GAAYC,GAAQhN,MAC3C,CAxCAuM,GAAanB,KAAiB,EAC9BmB,GAAapa,GAAUoa,GAAar2F,OACpCq2F,GAAar8G,MAAQq8G,GAAajoH,OAASioH,GAAa/sG,MACxD+sG,GAAa1L,cAAgBA,GAC7B0L,GAAanK,YAAcA,GAC3BmK,GAAa,qBAAuBA,GAAatK,UAAYA,GAC7DsK,GAAa,qBAAuB,SAAUtrJ,EAAQ60F,GACpD,OAAO70F,EAAO4a,IAAIi6E,EACpB,EACAy2D,GAAa,uBAAyB,SAAUtlJ,GAC9C,OAAOA,EAAIm7I,aACb,EAEAmK,GAAaO,QAAUZ,GACvBK,GAAaM,OAASG,GAiCtB,IAkIIC,GAlIAC,GAAsB,SAAU5Y,GAClC,SAAS4Y,EAAMttJ,EAAOC,EAAKwD,GACzB,KAAMjG,gBAAgB8vJ,GACpB,OAAO,IAAIA,EAAMttJ,EAAOC,EAAKwD,GAe/B,GAbAq7I,GAAmB,IAATr7I,EAAY,4BACtBzD,EAAQA,GAAS,OACLrC,IAARsC,IACFA,EAAMmtG,KAER3pG,OAAgB9F,IAAT8F,EAAqB,EAAItB,KAAK49E,IAAIt8E,GACrCxD,EAAMD,IACRyD,GAAQA,GAEVjG,KAAK+vJ,OAASvtJ,EACdxC,KAAK8hB,KAAOrf,EACZzC,KAAKgwJ,MAAQ/pJ,EACbjG,KAAKF,KAAO6E,KAAKC,IAAI,EAAGD,KAAKg+E,MAAMlgF,EAAMD,GAASyD,EAAO,GAAK,GAC5C,IAAdjG,KAAKF,KAAY,CACnB,GAAI+vJ,GACF,OAAOA,GAETA,GAAc7vJ,IAChB,CACF,CAuGA,OArGKk3I,IAAa4Y,EAAM/9I,UAAYmlI,GACpC4Y,EAAMpuJ,UAAYN,OAAO2G,OAAQmvI,GAAcA,EAAWx1I,WAC1DouJ,EAAMpuJ,UAAUsN,YAAc8gJ,EAE9BA,EAAMpuJ,UAAUF,SAAW,WACzB,OAAkB,IAAdxB,KAAKF,KACA,WAGP,WACAE,KAAK+vJ,OACL,MACA/vJ,KAAK8hB,MACW,IAAf9hB,KAAKgwJ,MAAc,OAAShwJ,KAAKgwJ,MAAQ,IAC1C,IAEJ,EAEAF,EAAMpuJ,UAAU4F,IAAM,SAAc6W,EAAO08H,GACzC,OAAO76I,KAAKmN,IAAIgR,GACZne,KAAK+vJ,OAASra,EAAU11I,KAAMme,GAASne,KAAKgwJ,MAC5CnV,CACN,EAEAiV,EAAMpuJ,UAAUsa,SAAW,SAAmBi0I,GAC5C,IAAIC,GAAiBD,EAAcjwJ,KAAK+vJ,QAAU/vJ,KAAKgwJ,MACvD,OACEE,GAAiB,GACjBA,EAAgBlwJ,KAAKF,MACrBowJ,IAAkBvrJ,KAAKk+E,MAAMqtE,EAEjC,EAEAJ,EAAMpuJ,UAAU8C,MAAQ,SAAgBqxI,EAAOpzI,GAC7C,OAAImzI,EAAWC,EAAOpzI,EAAKzC,KAAKF,MACvBE,MAET61I,EAAQC,EAAaD,EAAO71I,KAAKF,OACjC2C,EAAMuzI,EAAWvzI,EAAKzC,KAAKF,QAChB+1I,EACF,IAAIia,EAAM,EAAG,GAEf,IAAIA,EACT9vJ,KAAKsH,IAAIuuI,EAAO71I,KAAK8hB,MACrB9hB,KAAKsH,IAAI7E,EAAKzC,KAAK8hB,MACnB9hB,KAAKgwJ,OAET,EAEAF,EAAMpuJ,UAAUoI,QAAU,SAAkBmmJ,GAC1C,IAAIE,EAAcF,EAAcjwJ,KAAK+vJ,OACrC,GAAII,EAAcnwJ,KAAKgwJ,OAAU,EAAG,CAClC,IAAI7xI,EAAQgyI,EAAcnwJ,KAAKgwJ,MAC/B,GAAI7xI,GAAS,GAAKA,EAAQne,KAAKF,KAC7B,OAAOqe,CAEX,CACA,OAAQ,CACV,EAEA2xI,EAAMpuJ,UAAUgD,YAAc,SAAsBurJ,GAClD,OAAOjwJ,KAAK8J,QAAQmmJ,EACtB,EAEAH,EAAMpuJ,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAKlD,IAJA,IAAIx/F,EAAOE,KAAKF,KACZmG,EAAOjG,KAAKgwJ,MACZ9vJ,EAAQo/F,EAAUt/F,KAAK+vJ,QAAUjwJ,EAAO,GAAKmG,EAAOjG,KAAK+vJ,OACzD1uJ,EAAI,EACDA,IAAMvB,IACyC,IAAhDm6D,EAAG/5D,EAAOo/F,EAAUx/F,IAASuB,EAAIA,IAAKrB,OAG1CE,GAASo/F,GAAWr5F,EAAOA,EAE7B,OAAO5E,CACT,EAEAyuJ,EAAMpuJ,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GACtD,IAAIx/F,EAAOE,KAAKF,KACZmG,EAAOjG,KAAKgwJ,MACZ9vJ,EAAQo/F,EAAUt/F,KAAK+vJ,QAAUjwJ,EAAO,GAAKmG,EAAOjG,KAAK+vJ,OACzD1uJ,EAAI,EACR,OAAO,IAAIm3I,GAAS,WAClB,GAAIn3I,IAAMvB,EACR,MAl1IC,CAAEI,WAAOC,EAAWkG,MAAM,GAo1I7B,IAAIi8C,EAAIpiD,EAER,OADAA,GAASo/F,GAAWr5F,EAAOA,EACpBwyI,EAAc/rI,EAAM4yF,EAAUx/F,IAASuB,EAAIA,IAAKihD,EACzD,GACF,EAEAwtG,EAAMpuJ,UAAUg/B,OAAS,SAAiBw5B,GACxC,OAAOA,aAAiB41F,EACpB9vJ,KAAK+vJ,SAAW71F,EAAM61F,QACpB/vJ,KAAK8hB,OAASo4C,EAAMp4C,MACpB9hB,KAAKgwJ,QAAU91F,EAAM81F,MACvB3B,GAAUruJ,KAAMk6D,EACtB,EAEO41F,CACT,CAhIyB,CAgIvB5Y,GAIF,SAASkZ,GAAQlV,EAAYmV,EAAexV,GAG1C,IAFA,IAAI4G,EAAUD,GAAc6O,GACxBhvJ,EAAI,EACDA,IAAMogJ,EAAQlgJ,QAEnB,IADA25I,EAAa5zI,GAAI4zI,EAAYuG,EAAQpgJ,KAAM8zI,MACxBA,EACjB,OAAO0F,EAGX,OAAOK,CACT,CAEA,SAASoV,GAAMD,EAAexV,GAC5B,OAAOuV,GAAQpwJ,KAAMqwJ,EAAexV,EACtC,CAEA,SAAS0V,GAAQrV,EAAYuG,GAC3B,OAAO2O,GAAQlV,EAAYuG,EAAStM,KAAaA,CACnD,CAMA,SAASqb,KACPjP,GAAkBvhJ,KAAKF,MACvB,IAAIkrB,EAAS,CAAC,EAId,OAHAhrB,KAAKw1I,WAAU,SAAUlzF,EAAGv/C,GAC1BioB,EAAOjoB,GAAKu/C,CACd,IACOt3B,CACT,CAGA6rH,EAAW4Z,WAAata,EACxBU,EAAWP,QAAUA,EACrBO,EAAWJ,UAAYA,EACvBI,EAAWF,cAAgBA,EAC3BE,EAAWmB,UAAYA,EAEvBnB,EAAW2B,SAAWA,EAEtBkW,GAAM7X,EAAY,CAGhBhwG,QAAS,WACP06G,GAAkBvhJ,KAAKF,MACvB,IAAIqgB,EAAQ,IAAIxV,MAAM3K,KAAKF,MAAQ,GAC/B4wJ,EAAYpa,EAAQt2I,MACpBqB,EAAI,EAKR,OAJArB,KAAKw1I,WAAU,SAAUlzF,EAAGv/C,GAE1Bod,EAAM9e,KAAOqvJ,EAAY,CAAC3tJ,EAAGu/C,GAAKA,CACpC,IACOniC,CACT,EAEAq6H,aAAc,WACZ,OAAO,IAAI8D,GAAkBt+I,KAC/B,EAEAskE,KAAM,WACJ,OAAOA,GAAKtkE,KACd,EAEAs6I,WAAY,WACV,OAAO,IAAIoD,GAAgB19I,MAAM,EACnC,EAEAotJ,MAAO,WAEL,OAAO5rI,GAAIxhB,KAAKs6I,aAClB,EAEAkW,SAAUA,GAEVG,aAAc,WAEZ,OAAOpL,GAAWvlJ,KAAKs6I,aACzB,EAEAsW,aAAc,WAEZ,OAAOpB,GAAWlZ,EAAQt2I,MAAQA,KAAK+9I,WAAa/9I,KACtD,EAEA6wJ,MAAO,WAEL,OAAOtyI,GAAI+3H,EAAQt2I,MAAQA,KAAK+9I,WAAa/9I,KAC/C,EAEA65I,SAAU,WACR,OAAO,IAAI0E,GAAcv+I,KAC3B,EAEAw5I,MAAO,WACL,OAAO/C,EAAUz2I,MACbA,KAAKw6I,eACLlE,EAAQt2I,MACRA,KAAKs6I,aACLt6I,KAAK65I,UACX,EAEAiX,QAAS,WAEP,OAAOtD,GAAMlX,EAAQt2I,MAAQA,KAAK+9I,WAAa/9I,KACjD,EAEA+wJ,OAAQ,WAEN,OAAOzH,GAAKhT,EAAQt2I,MAAQA,KAAK+9I,WAAa/9I,KAChD,EAIAwB,SAAU,WACR,MAAO,cACT,EAEAw4I,WAAY,SAAoBh+F,EAAMsvG,GACpC,OAAkB,IAAdtrJ,KAAKF,KACAk8C,EAAOsvG,EAGdtvG,EACA,IACAh8C,KAAKw5I,QAAQr0I,IAAInF,KAAKgxJ,kBAAkB3rJ,KAAK,MAC7C,IACAimJ,CAEJ,EAIApkH,OAAQ,WAEN,IADA,IAAI75B,EAAS,GAAIyrF,EAAMn2E,UAAUphB,OACzBu3F,KAAQzrF,EAAQyrF,GAAQn2E,UAAWm2E,GAE3C,OAAOooD,GAAMlhJ,KAhpGjB,SAAuBk7I,EAAY7tI,GACjC,IAAIgzI,EAAoB/J,EAAQ4E,GAC5B0F,EAAQ,CAAC1F,GACVh0G,OAAO75B,GACPlI,KAAI,SAAUm9C,GAQb,OAPK6zF,EAAa7zF,GAIP+9F,IACT/9F,EAAIy0F,EAAgBz0F,IAJpBA,EAAI+9F,EACA9F,GAAkBj4F,GAClBm4F,GAAoB9vI,MAAMC,QAAQ03C,GAAKA,EAAI,CAACA,IAI3CA,CACT,IACCr9C,QAAO,SAAUq9C,GAAK,OAAkB,IAAXA,EAAExiD,IAAY,IAE9C,GAAqB,IAAjB8gJ,EAAMr/I,OACR,OAAO25I,EAGT,GAAqB,IAAjB0F,EAAMr/I,OAAc,CACtB,IAAI0vJ,EAAYrQ,EAAM,GACtB,GACEqQ,IAAc/V,GACbmF,GAAqB/J,EAAQ2a,IAC7Bxa,EAAUyE,IAAezE,EAAUwa,GAEpC,OAAOA,CAEX,CAEA,IAAIC,EAAY,IAAIvW,GAASiG,GAe7B,OAdIP,EACF6Q,EAAYA,EAAU5W,aACZ7D,EAAUyE,KACpBgW,EAAYA,EAAUrX,aAExBqX,EAAYA,EAAU5tH,SAAQ,IACpBxjC,KAAO8gJ,EAAM5jH,QAAO,SAAU4wB,EAAK6rF,GAC3C,QAAYt5I,IAARytD,EAAmB,CACrB,IAAI9tD,EAAO25I,EAAI35I,KACf,QAAaK,IAATL,EACF,OAAO8tD,EAAM9tD,CAEjB,CACF,GAAG,GACIoxJ,CACT,CAimGuBC,CAAcnxJ,KAAMqN,GACzC,EAEA2O,SAAU,SAAkBi0I,GAC1B,OAAOjwJ,KAAKm+B,MAAK,SAAUj+B,GAAS,OAAO07I,GAAG17I,EAAO+vJ,EAAc,GACrE,EAEA3iJ,QAAS,WACP,OAAOtN,KAAKo6I,WAAWhC,EACzB,EAEA/1G,MAAO,SAAezX,EAAWhC,GAC/B24H,GAAkBvhJ,KAAKF,MACvB,IAAIsxJ,GAAc,EAOlB,OANApxJ,KAAKw1I,WAAU,SAAUlzF,EAAGv/C,EAAGoQ,GAC7B,IAAKyX,EAAUjiB,KAAKigB,EAAS05B,EAAGv/C,EAAGoQ,GAEjC,OADAi+I,GAAc,GACP,CAEX,IACOA,CACT,EAEAnsJ,OAAQ,SAAgB2lB,EAAWhC,GACjC,OAAOs4H,GAAMlhJ,KAAMg/I,GAAch/I,KAAM4qB,EAAWhC,GAAS,GAC7D,EAEAyoI,UAAW,SAAmBzmI,EAAWhC,GACvC,OA33GJ,SAA0BsyH,EAAYtwH,EAAWhC,GAC/C,IAAI0oI,EAAchb,EAAQ4E,GACtB3vG,EAAS,CAAC,GAAI,IAClB2vG,EAAW1F,WAAU,SAAUlzF,EAAGv/C,GAChCwoC,EAAO3gB,EAAUjiB,KAAKigB,EAAS05B,EAAGv/C,EAAGm4I,GAAc,EAAI,GAAG33I,KACxD+tJ,EAAc,CAACvuJ,EAAGu/C,GAAKA,EAE3B,IACA,IAAIivG,EAASpQ,GAAgBjG,GAC7B,OAAO3vG,EAAOpmC,KAAI,SAAUuzF,GAAO,OAAOwoD,GAAMhG,EAAYqW,EAAO74D,GAAO,GAC5E,CAi3GW84D,CAAiBxxJ,KAAM4qB,EAAWhC,EAC3C,EAEAqjG,KAAM,SAAcrhG,EAAWhC,EAASiyH,GACtC,IAAIx2G,EAAQrkC,KAAKyxJ,UAAU7mI,EAAWhC,GACtC,OAAOyb,EAAQA,EAAM,GAAKw2G,CAC5B,EAEAnwI,QAAS,SAAiBgnJ,EAAY9oI,GAEpC,OADA24H,GAAkBvhJ,KAAKF,MAChBE,KAAKw1I,UAAU5sH,EAAU8oI,EAAW3vI,KAAK6G,GAAW8oI,EAC7D,EAEArsJ,KAAM,SAAcuiE,GAClB25E,GAAkBvhJ,KAAKF,MACvB8nE,OAA0BznE,IAAdynE,EAA0B,GAAKA,EAAY,IACvD,IAAItjC,EAAS,GACTqtH,GAAU,EAKd,OAJA3xJ,KAAKw1I,WAAU,SAAUlzF,GACvBqvG,EAAWA,GAAU,EAAUrtH,GAAUsjC,EACzCtjC,GAAUge,QAAgCA,EAAE9gD,WAAa,EAC3D,IACO8iC,CACT,EAEAnjC,KAAM,WACJ,OAAOnB,KAAKo6I,WAAWlC,EACzB,EAEA/yI,IAAK,SAAag5I,EAAQv1H,GACxB,OAAOs4H,GAAMlhJ,KAAMq+I,GAAWr+I,KAAMm+I,EAAQv1H,GAC9C,EAEAoU,OAAQ,SAAkB40H,EAASC,EAAkBjpI,GACnD,OAAOoU,GACLh9B,KACA4xJ,EACAC,EACAjpI,EACAjG,UAAUphB,OAAS,GACnB,EAEJ,EAEAuwJ,YAAa,SAAqBF,EAASC,EAAkBjpI,GAC3D,OAAOoU,GACLh9B,KACA4xJ,EACAC,EACAjpI,EACAjG,UAAUphB,OAAS,GACnB,EAEJ,EAEA+9F,QAAS,WACP,OAAO4hD,GAAMlhJ,KAAMk+I,GAAel+I,MAAM,GAC1C,EAEAwE,MAAO,SAAeqxI,EAAOpzI,GAC3B,OAAOy+I,GAAMlhJ,KAAMk/I,GAAal/I,KAAM61I,EAAOpzI,GAAK,GACpD,EAEA07B,KAAM,SAAcvT,EAAWhC,GAC7B24H,GAAkBvhJ,KAAKF,MACvB,IAAIsxJ,GAAc,EAOlB,OANApxJ,KAAKw1I,WAAU,SAAUlzF,EAAGv/C,EAAGoQ,GAC7B,GAAIyX,EAAUjiB,KAAKigB,EAAS05B,EAAGv/C,EAAGoQ,GAEhC,OADAi+I,GAAc,GACP,CAEX,IACOA,CACT,EAEA7iH,KAAM,SAAc4xG,GAClB,OAAOe,GAAMlhJ,KAAMkgJ,GAAYlgJ,KAAMmgJ,GACvC,EAEA9yI,OAAQ,WACN,OAAOrN,KAAKo6I,WAAWjC,EACzB,EAIA4Z,QAAS,WACP,OAAO/xJ,KAAKwE,MAAM,GAAI,EACxB,EAEAmiD,QAAS,WACP,YAAqBxmD,IAAdH,KAAKF,KAAmC,IAAdE,KAAKF,MAAcE,KAAKm+B,MAAK,WAAc,OAAO,CAAM,GAC3F,EAEAjR,MAAO,SAAetC,EAAWhC,GAC/B,OAAO0sH,EACL1qH,EAAY5qB,KAAKw5I,QAAQv0I,OAAO2lB,EAAWhC,GAAW5oB,KAE1D,EAEAgyJ,QAAS,SAAiB7lH,EAASvjB,GACjC,OAp/GJ,SAAwBsyH,EAAY/uG,EAASvjB,GAC3C,IAAI2iB,EAAS/pB,KAAMqjI,YAInB,OAHA3J,EAAW1F,WAAU,SAAUlzF,EAAGv/C,GAChCwoC,EAAO/T,OAAO2U,EAAQxjC,KAAKigB,EAAS05B,EAAGv/C,EAAGm4I,GAAa,GAAG,SAAU34F,GAAK,OAAOA,EAAI,CAAG,GACzF,IACOhX,EAAOy5G,aAChB,CA8+GWiN,CAAejyJ,KAAMmsC,EAASvjB,EACvC,EAEA8X,OAAQ,SAAgBw5B,GACtB,OAAOm0F,GAAUruJ,KAAMk6D,EACzB,EAEAigF,SAAU,WACR,IAAIe,EAAal7I,KACjB,GAAIk7I,EAAWjtB,OAEb,OAAO,IAAI0sB,GAASO,EAAWjtB,QAEjC,IAAIikC,EAAkBhX,EAAW1B,QAAQr0I,IAAIgtJ,IAAa3X,eAE1D,OADA0X,EAAgBvY,aAAe,WAAc,OAAOuB,EAAW1B,OAAS,EACjE0Y,CACT,EAEAE,UAAW,SAAmBxnI,EAAWhC,GACvC,OAAO5oB,KAAKiF,OAAO03D,GAAI/xC,GAAYhC,EACrC,EAEA6oI,UAAW,SAAmB7mI,EAAWhC,EAASiyH,GAChD,IAAIrzC,EAAQqzC,EAOZ,OANA76I,KAAKw1I,WAAU,SAAUlzF,EAAGv/C,EAAGoQ,GAC7B,GAAIyX,EAAUjiB,KAAKigB,EAAS05B,EAAGv/C,EAAGoQ,GAEhC,OADAq0F,EAAQ,CAACzkG,EAAGu/C,IACL,CAEX,IACOklD,CACT,EAEA6qD,QAAS,SAAiBznI,EAAWhC,GACnC,IAAIyb,EAAQrkC,KAAKyxJ,UAAU7mI,EAAWhC,GACtC,OAAOyb,GAASA,EAAM,EACxB,EAEAiuH,SAAU,SAAkB1nI,EAAWhC,EAASiyH,GAC9C,OAAO76I,KAAKs6I,aAAah7C,UAAU2sB,KAAKrhG,EAAWhC,EAASiyH,EAC9D,EAEA0X,cAAe,SAAuB3nI,EAAWhC,EAASiyH,GACxD,OAAO76I,KAAKs6I,aACTh7C,UACAmyD,UAAU7mI,EAAWhC,EAASiyH,EACnC,EAEA2X,YAAa,SAAqB5nI,EAAWhC,GAC3C,OAAO5oB,KAAKs6I,aAAah7C,UAAU+yD,QAAQznI,EAAWhC,EACxD,EAEAuzB,MAAO,SAAe0+F,GACpB,OAAO76I,KAAKisH,KAAKwpB,EAAY,KAAMoF,EACrC,EAEA7rH,QAAS,SAAiBmvH,EAAQv1H,GAChC,OAAOs4H,GAAMlhJ,KAjuGjB,SAAwBk7I,EAAYiD,EAAQv1H,GAC1C,IAAI2oI,EAASpQ,GAAgBjG,GAC7B,OAAOA,EACJ1B,QACAr0I,KAAI,SAAUm9C,EAAGv/C,GAAK,OAAOwuJ,EAAOpT,EAAOx1I,KAAKigB,EAAS05B,EAAGv/C,EAAGm4I,GAAc,IAC7E53G,SAAQ,EACb,CA2tGuBmvH,CAAezyJ,KAAMm+I,EAAQv1H,GAClD,EAEA0a,QAAS,SAAiB+1C,GACxB,OAAO6nE,GAAMlhJ,KAAM6/I,GAAe7/I,KAAMq5E,GAAO,GACjD,EAEAsgE,aAAc,WACZ,OAAO,IAAI6E,GAAoBx+I,KACjC,EAEAsH,IAAK,SAAaorJ,EAAW7X,GAC3B,OAAO76I,KAAKisH,MAAK,SAAU7/E,EAAG3rC,GAAO,OAAOm7I,GAAGn7I,EAAKiyJ,EAAY,QAAGvyJ,EAAW06I,EAChF,EAEAyV,MAAOA,GAEPqC,QAAS,SAAiBxmH,EAASvjB,GACjC,OAvjHJ,SAAwBsyH,EAAY/uG,EAASvjB,GAC3C,IAAI0oI,EAAchb,EAAQ4E,GACtB3vG,GAAUysG,EAAUkD,GAAcqK,KAAe/jI,MAAOqjI,YAC5D3J,EAAW1F,WAAU,SAAUlzF,EAAGv/C,GAChCwoC,EAAO/T,OACL2U,EAAQxjC,KAAKigB,EAAS05B,EAAGv/C,EAAGm4I,IAC5B,SAAU34F,GAAK,OAASA,EAAIA,GAAK,IAAOh/C,KAAK+tJ,EAAc,CAACvuJ,EAAGu/C,GAAKA,GAAIC,CAAI,GAEhF,IACA,IAAIgvG,EAASpQ,GAAgBjG,GAC7B,OAAO3vG,EAAOpmC,KAAI,SAAUuzF,GAAO,OAAOwoD,GAAMhG,EAAYqW,EAAO74D,GAAO,IAAGssD,aAC/E,CA4iHW4N,CAAe5yJ,KAAMmsC,EAASvjB,EACvC,EAEAzb,IAAK,SAAaulJ,GAChB,OAAO1yJ,KAAKsH,IAAIorJ,EAAWvd,KAAaA,CAC1C,EAEA0d,MAxUF,SAAexC,GACb,OAAOE,GAAQvwJ,KAAMqwJ,EACvB,EAwUEyC,SAAU,SAAkBvd,GAE1B,OADAA,EAAgC,mBAAlBA,EAAKv5H,SAA0Bu5H,EAAOsB,EAAWtB,GACxDv1I,KAAKqiC,OAAM,SAAUniC,GAAS,OAAOq1I,EAAKv5H,SAAS9b,EAAQ,GACpE,EAEA6yJ,WAAY,SAAoBxd,GAE9B,OADAA,EAAgC,mBAAlBA,EAAKud,SAA0Bvd,EAAOsB,EAAWtB,IACnDud,SAAS9yJ,KACvB,EAEAgzJ,MAAO,SAAe/C,GACpB,OAAOjwJ,KAAKqyJ,SAAQ,SAAUnyJ,GAAS,OAAO07I,GAAG17I,EAAO+vJ,EAAc,GACxE,EAEAjB,OAAQ,WACN,OAAOhvJ,KAAKw5I,QAAQr0I,IAAI8tJ,IAAWzY,cACrC,EAEAruC,KAAM,SAAc0uC,GAClB,OAAO76I,KAAKw5I,QAAQl6C,UAAUnjD,MAAM0+F,EACtC,EAEAqY,UAAW,SAAmBjD,GAC5B,OAAOjwJ,KAAKs6I,aAAah7C,UAAU0zD,MAAM/C,EAC3C,EAEArrJ,IAAK,SAAau7I,GAChB,OAAOG,GAAWtgJ,KAAMmgJ,EAC1B,EAEAgT,MAAO,SAAehV,EAAQgC,GAC5B,OAAOG,GAAWtgJ,KAAMmgJ,EAAYhC,EACtC,EAEA5rG,IAAK,SAAa4tG,GAChB,OAAOG,GACLtgJ,KACAmgJ,EAAaiT,GAAIjT,GAAckT,GAEnC,EAEAC,MAAO,SAAenV,EAAQgC,GAC5B,OAAOG,GACLtgJ,KACAmgJ,EAAaiT,GAAIjT,GAAckT,GAC/BlV,EAEJ,EAEAoV,KAAM,WACJ,OAAOvzJ,KAAKwE,MAAM,EACpB,EAEAgvJ,KAAM,SAAcC,GAClB,OAAkB,IAAXA,EAAezzJ,KAAOA,KAAKwE,MAAMG,KAAKC,IAAI,EAAG6uJ,GACtD,EAEAC,SAAU,SAAkBD,GAC1B,OAAkB,IAAXA,EAAezzJ,KAAOA,KAAKwE,MAAM,GAAIG,KAAKC,IAAI,EAAG6uJ,GAC1D,EAEAE,UAAW,SAAmB/oI,EAAWhC,GACvC,OAAOs4H,GAAMlhJ,KAAM2/I,GAAiB3/I,KAAM4qB,EAAWhC,GAAS,GAChE,EAEAgrI,UAAW,SAAmBhpI,EAAWhC,GACvC,OAAO5oB,KAAK2zJ,UAAUh3F,GAAI/xC,GAAYhC,EACxC,EAEA48H,OAAQ,SAAgBrH,EAAQgC,GAC9B,OAAOe,GAAMlhJ,KAAMkgJ,GAAYlgJ,KAAMmgJ,EAAYhC,GACnD,EAEAv3G,KAAM,SAAc6sH,GAClB,OAAOzzJ,KAAKwE,MAAM,EAAGG,KAAKC,IAAI,EAAG6uJ,GACnC,EAEAI,SAAU,SAAkBJ,GAC1B,OAAOzzJ,KAAKwE,OAAOG,KAAKC,IAAI,EAAG6uJ,GACjC,EAEAK,UAAW,SAAmBlpI,EAAWhC,GACvC,OAAOs4H,GAAMlhJ,KAthHjB,SAA0Bk7I,EAAYtwH,EAAWhC,GAC/C,IAAImrI,EAAelV,GAAa3D,GAuChC,OAtCA6Y,EAAa7Z,kBAAoB,SAAUjgF,EAAIqlC,GAC7C,IAAI0+C,EAAWh+I,KAEf,GAAIs/F,EACF,OAAOt/F,KAAKi6I,cAAczE,UAAUv7E,EAAIqlC,GAE1C,IAAIjiE,EAAa,EAIjB,OAHA69G,EAAW1F,WACT,SAAUlzF,EAAGv/C,EAAGoQ,GAAK,OAAOyX,EAAUjiB,KAAKigB,EAAS05B,EAAGv/C,EAAGoQ,MAAQkqB,GAAc48B,EAAG3X,EAAGv/C,EAAGi7I,EAAW,IAE/F3gH,CACT,EACA02H,EAAa1Z,mBAAqB,SAAU3tI,EAAM4yF,GAChD,IAAI0+C,EAAWh+I,KAEf,GAAIs/F,EACF,OAAOt/F,KAAKi6I,cAAcG,WAAW1tI,EAAM4yF,GAE7C,IAAIh1F,EAAW4wI,EAAWd,WAAWhC,EAAiB94C,GAClD00D,GAAY,EAChB,OAAO,IAAIxb,GAAS,WAClB,IAAKwb,EACH,MAzxCC,CAAE9zJ,WAAOC,EAAWkG,MAAM,GA2xC7B,IAAIJ,EAAOqE,EAASpE,OACpB,GAAID,EAAKI,KACP,OAAOJ,EAET,IAAIo+B,EAAQp+B,EAAK/F,MACb6C,EAAIshC,EAAM,GACVie,EAAIje,EAAM,GACd,OAAKzZ,EAAUjiB,KAAKigB,EAAS05B,EAAGv/C,EAAGi7I,GAI5BtxI,IAAS0rI,EAAkBnyI,EAAOwyI,EAAc/rI,EAAM3J,EAAGu/C,EAAGr8C,IAHjE+tJ,GAAY,EAnyCX,CAAE9zJ,WAAOC,EAAWkG,MAAM,GAuyC/B,GACF,EACO0tJ,CACT,CA6+GuBE,CAAiBj0J,KAAM4qB,EAAWhC,GACvD,EAEAsrI,UAAW,SAAmBtpI,EAAWhC,GACvC,OAAO5oB,KAAK8zJ,UAAUn3F,GAAI/xC,GAAYhC,EACxC,EAEA4O,OAAQ,SAAgByiC,GACtB,OAAOA,EAAGj6D,KACZ,EAEA+9I,SAAU,WACR,OAAO/9I,KAAKw6I,cACd,EAIAmB,SAAU,WACR,OAAO37I,KAAKslJ,SAAWtlJ,KAAKslJ,OA2QhC,SAAwBpK,GACtB,GAAIA,EAAWp7I,OAAS8vG,IACtB,OAAO,EAET,IAAIukD,EAAUnc,EAAUkD,GACpBkZ,EAAQ9d,EAAQ4E,GAChBzO,EAAI0nB,EAAU,EAAI,EAkBtB,OAGF,SAA0Br0J,EAAM2sI,GAQ9B,OAPAA,EAAIoP,GAAKpP,EAAG,YACZA,EAAIoP,GAAMpP,GAAK,GAAOA,KAAO,GAAK,WAClCA,EAAIoP,GAAMpP,GAAK,GAAOA,KAAO,GAAK,GAElCA,EAAIoP,IADJpP,EAAMA,EAAI,WAAmB3sI,GACf2sI,IAAM,GAAK,YAEzBA,EAAIqP,IADJrP,EAAIoP,GAAKpP,EAAKA,IAAM,GAAK,aACZA,IAAM,GAErB,CAZS4nB,CAjBInZ,EAAW1F,UACpB4e,EACID,EACE,SAAU7xG,EAAGv/C,GACX0pI,EAAK,GAAKA,EAAI6nB,GAAUlyI,GAAKkgC,GAAIlgC,GAAKrf,IAAO,CAC/C,EACA,SAAUu/C,EAAGv/C,GACX0pI,EAAKA,EAAI6nB,GAAUlyI,GAAKkgC,GAAIlgC,GAAKrf,IAAO,CAC1C,EACFoxJ,EACA,SAAU7xG,GACRmqF,EAAK,GAAKA,EAAIrqH,GAAKkgC,GAAM,CAC3B,EACA,SAAUA,GACRmqF,EAAKA,EAAIrqH,GAAKkgC,GAAM,CACtB,GAEwBmqF,EAChC,CApSyC8nB,CAAev0J,MACtD,IASF,IAAIw0J,GAAsB3d,EAAWn1I,UACrC8yJ,GAAoBte,IAAwB,EAC5Cse,GAAoBjc,GAAmBic,GAAoBnnJ,OAC3DmnJ,GAAoB/vD,OAAS+vD,GAAoB3tH,QACjD2tH,GAAoBxD,iBAAmBlP,GACvC0S,GAAoB1qD,QAAU0qD,GAAoBnb,SAAW,WAC3D,OAAOr5I,KAAKwB,UACd,EACAgzJ,GAAoBC,MAAQD,GAAoBxlI,QAChDwlI,GAAoB7iG,SAAW6iG,GAAoBx4I,SAEnD0yI,GAAM3X,EAAiB,CAGrB+H,KAAM,WACJ,OAAOoC,GAAMlhJ,KAAM2+I,GAAY3+I,MACjC,EAEAsvJ,WAAY,SAAoBnR,EAAQv1H,GACtC,IAAIo1H,EAAWh+I,KAEXq9B,EAAa,EACjB,OAAO6jH,GACLlhJ,KACAA,KAAKw5I,QACFr0I,KAAI,SAAUm9C,EAAGv/C,GAAK,OAAOo7I,EAAOx1I,KAAKigB,EAAS,CAAC7lB,EAAGu/C,GAAIjlB,IAAc2gH,EAAW,IACnFrE,eAEP,EAEA+a,QAAS,SAAiBvW,EAAQv1H,GAChC,IAAIo1H,EAAWh+I,KAEf,OAAOkhJ,GACLlhJ,KACAA,KAAKw5I,QACFsF,OACA35I,KAAI,SAAUpC,EAAGu/C,GAAK,OAAO67F,EAAOx1I,KAAKigB,EAAS7lB,EAAGu/C,EAAG07F,EAAW,IACnEc,OAEP,IAGF,IAAI6V,GAA2B5d,EAAgBr1I,UAC/CizJ,GAAyBte,IAAmB,EAC5Cse,GAAyBpc,GAAmBic,GAAoBlnJ,QAChEqnJ,GAAyBlwD,OAAS+rD,GAClCmE,GAAyB3D,iBAAmB,SAAU1uG,EAAGv/C,GAAK,OAAO++I,GAAY/+I,GAAK,KAAO++I,GAAYx/F,EAAI,EAE7GosG,GAAMzX,EAAmB,CAGvBqD,WAAY,WACV,OAAO,IAAIoD,GAAgB19I,MAAM,EACnC,EAIAiF,OAAQ,SAAgB2lB,EAAWhC,GACjC,OAAOs4H,GAAMlhJ,KAAMg/I,GAAch/I,KAAM4qB,EAAWhC,GAAS,GAC7D,EAEAgsI,UAAW,SAAmBhqI,EAAWhC,GACvC,IAAIyb,EAAQrkC,KAAKyxJ,UAAU7mI,EAAWhC,GACtC,OAAOyb,EAAQA,EAAM,IAAM,CAC7B,EAEAv6B,QAAS,SAAiBmmJ,GACxB,IAAIxvJ,EAAMT,KAAKgzJ,MAAM/C,GACrB,YAAe9vJ,IAARM,GAAqB,EAAIA,CAClC,EAEAiE,YAAa,SAAqBurJ,GAChC,IAAIxvJ,EAAMT,KAAKkzJ,UAAUjD,GACzB,YAAe9vJ,IAARM,GAAqB,EAAIA,CAClC,EAEA6+F,QAAS,WACP,OAAO4hD,GAAMlhJ,KAAMk+I,GAAel+I,MAAM,GAC1C,EAEAwE,MAAO,SAAeqxI,EAAOpzI,GAC3B,OAAOy+I,GAAMlhJ,KAAMk/I,GAAal/I,KAAM61I,EAAOpzI,GAAK,GACpD,EAEAqgB,OAAQ,SAAgB3E,EAAO02I,GAC7B,IAAIC,EAAUnyI,UAAUphB,OAExB,GADAszJ,EAAYlwJ,KAAKC,IAAIiwJ,GAAa,EAAG,GACrB,IAAZC,GAA8B,IAAZA,IAAkBD,EACtC,OAAO70J,KAKTme,EAAQ23H,EAAa33H,EAAOA,EAAQ,EAAIne,KAAKktB,QAAUltB,KAAKF,MAC5D,IAAIi1J,EAAU/0J,KAAKwE,MAAM,EAAG2Z,GAC5B,OAAO+iI,GACLlhJ,KACY,IAAZ80J,EACIC,EACAA,EAAQ7tH,OAAOk6G,GAAQz+H,UAAW,GAAI3iB,KAAKwE,MAAM2Z,EAAQ02I,IAEjE,EAIAG,cAAe,SAAuBpqI,EAAWhC,GAC/C,IAAIyb,EAAQrkC,KAAKuyJ,cAAc3nI,EAAWhC,GAC1C,OAAOyb,EAAQA,EAAM,IAAM,CAC7B,EAEA8X,MAAO,SAAe0+F,GACpB,OAAO76I,KAAKsH,IAAI,EAAGuzI,EACrB,EAEAv3G,QAAS,SAAiB+1C,GACxB,OAAO6nE,GAAMlhJ,KAAM6/I,GAAe7/I,KAAMq5E,GAAO,GACjD,EAEA/xE,IAAK,SAAa6W,EAAO08H,GAEvB,OADA18H,EAAQu3H,EAAU11I,KAAMme,IACT,GACbne,KAAKF,OAAS8vG,UACCzvG,IAAdH,KAAKF,MAAsBqe,EAAQne,KAAKF,KACvC+6I,EACA76I,KAAKisH,MAAK,SAAU7/E,EAAG3rC,GAAO,OAAOA,IAAQ0d,CAAO,QAAGhe,EAAW06I,EACxE,EAEA1tI,IAAK,SAAagR,GAEhB,OADAA,EAAQu3H,EAAU11I,KAAMme,KAEb,SACMhe,IAAdH,KAAKF,KACFE,KAAKF,OAAS8vG,KAAYzxF,EAAQne,KAAKF,MACd,IAAzBE,KAAK8J,QAAQqU,GAErB,EAEA82I,UAAW,SAAmBrtF,GAC5B,OAAOs5E,GAAMlhJ,KA7+GjB,SAA0Bk7I,EAAYtzE,GACpC,IAAIstF,EAAqBrW,GAAa3D,GA6BtC,OA5BAga,EAAmBp1J,KAAOo7I,EAAWp7I,MAA0B,EAAlBo7I,EAAWp7I,KAAW,EACnEo1J,EAAmBhb,kBAAoB,SAAUjgF,EAAIqlC,GACnD,IAAI0+C,EAAWh+I,KAEXq9B,EAAa,EAMjB,OALA69G,EAAW1F,WACT,SAAUlzF,GAAK,QAASjlB,IAAwD,IAA1C48B,EAAG2N,EAAWvqC,IAAc2gH,MAC9B,IAAlC/jF,EAAG3X,EAAGjlB,IAAc2gH,EAAqB,GAC3C1+C,GAEKjiE,CACT,EACA63H,EAAmB7a,mBAAqB,SAAU3tI,EAAM4yF,GACtD,IAEIr5F,EAFAqE,EAAW4wI,EAAWd,WAAWjC,EAAgB74C,GACjDjiE,EAAa,EAEjB,OAAO,IAAIm7G,GAAS,WAClB,QAAKvyI,GAAQo3B,EAAa,KACxBp3B,EAAOqE,EAASpE,QACPG,KACAJ,EAGJo3B,EAAa,EAChBo7G,EAAc/rI,EAAM2wB,IAAcuqC,GAClC6wE,EAAc/rI,EAAM2wB,IAAcp3B,EAAK/F,MAAO+F,EACpD,GACF,EACOivJ,CACT,CA88GuBC,CAAiBn1J,KAAM4nE,GAC5C,EAEAwtF,WAAY,WACV,IAAI9R,EAAc,CAACtjJ,MAAMknC,OAAOk6G,GAAQz+H,YACpC0yI,EAAS5U,GAAezgJ,KAAKw5I,QAAStC,EAAWwD,GAAI4I,GACrDgS,EAAcD,EAAO/xH,SAAQ,GAIjC,OAHI+xH,EAAOv1J,OACTw1J,EAAYx1J,KAAOu1J,EAAOv1J,KAAOwjJ,EAAY/hJ,QAExC2/I,GAAMlhJ,KAAMs1J,EACrB,EAEAtG,OAAQ,WACN,OAAOc,GAAM,EAAG9vJ,KAAKF,KACvB,EAEAqsG,KAAM,SAAc0uC,GAClB,OAAO76I,KAAKsH,KAAK,EAAGuzI,EACtB,EAEA8Y,UAAW,SAAmB/oI,EAAWhC,GACvC,OAAOs4H,GAAMlhJ,KAAM2/I,GAAiB3/I,KAAM4qB,EAAWhC,GAAS,GAChE,EAEA2sI,IAAK,WAEH,OAAOrU,GAAMlhJ,KAAMygJ,GAAezgJ,KAAMw1J,GADtB,CAACx1J,MAAMknC,OAAOk6G,GAAQz+H,aAE1C,EAEAk+H,OAAQ,WAEN,OAAOK,GAAMlhJ,KAAMygJ,GAAezgJ,KAAMw1J,GADtB,CAACx1J,MAAMknC,OAAOk6G,GAAQz+H,aAC4B,GACtE,EAEA8yI,QAAS,SAAiB9U,GACxB,IAAI2C,EAAclC,GAAQz+H,WAE1B,OADA2gI,EAAY,GAAKtjJ,KACVkhJ,GAAMlhJ,KAAMygJ,GAAezgJ,KAAM2gJ,EAAQ2C,GAClD,IAGF,IAAIoS,GAA6Bze,EAAkBv1I,UACnDg0J,GAA2Blf,IAAqB,EAChDkf,GAA2B3d,IAAqB,EAEhD2W,GAAMvX,EAAe,CAGnB7vI,IAAK,SAAapH,EAAO26I,GACvB,OAAO76I,KAAKmN,IAAIjN,GAASA,EAAQ26I,CACnC,EAEA7+H,SAAU,SAAkB9b,GAC1B,OAAOF,KAAKmN,IAAIjN,EAClB,EAIA8uJ,OAAQ,WACN,OAAOhvJ,KAAK+9I,UACd,IAGF,IAAI4X,GAAyBxe,EAAcz1I,UAa3C,SAASs7B,GAAOk+G,EAAY0W,EAASgE,EAAWhtI,EAASitI,EAAUv2D,GAUjE,OATAiiD,GAAkBrG,EAAWp7I,MAC7Bo7I,EAAW1F,WAAU,SAAUlzF,EAAGv/C,EAAGoQ,GAC/B0iJ,GACFA,GAAW,EACXD,EAAYtzG,GAEZszG,EAAYhE,EAAQjpJ,KAAKigB,EAASgtI,EAAWtzG,EAAGv/C,EAAGoQ,EAEvD,GAAGmsF,GACIs2D,CACT,CAEA,SAAS3C,GAAU3wG,EAAGv/C,GACpB,OAAOA,CACT,CAEA,SAASovJ,GAAY7vG,EAAGv/C,GACtB,MAAO,CAACA,EAAGu/C,EACb,CAEA,SAASqa,GAAI/xC,GACX,OAAO,WACL,OAAQA,EAAUrkB,MAAMvG,KAAM2iB,UAChC,CACF,CAEA,SAASywI,GAAIxoI,GACX,OAAO,WACL,OAAQA,EAAUrkB,MAAMvG,KAAM2iB,UAChC,CACF,CAEA,SAAS6yI,KACP,OAAOpU,GAAQz+H,UACjB,CAEA,SAAS0wI,GAAqB9wG,EAAGC,GAC/B,OAAOD,EAAIC,EAAI,EAAID,EAAIC,GAAK,EAAI,CAClC,CAwCA,SAAS8xG,GAAU/xG,EAAGC,GACpB,OAAQD,EAAKC,EAAI,YAAcD,GAAK,IAAMA,GAAK,EACjD,CA7FAozG,GAAuBxoJ,IAAMqnJ,GAAoBx4I,SACjD25I,GAAuBhkG,SAAWgkG,GAAuB35I,SACzD25I,GAAuBx0J,KAAOw0J,GAAuBtoJ,OAIrDqhJ,GAAM1X,EAAU2d,IAChBjG,GAAMxX,EAAYwe,IAClBhH,GAAMtX,GAAQue,IAuFd,IAAInG,GAA2B,SAAUjxI,GACvC,SAASixI,EAAWtvJ,GAClB,OAAOA,QACH41J,KACA3H,GAAajuJ,GACbA,EACA41J,KAAkBrS,eAAc,SAAU33I,GACxC,IAAIypI,EAAO4B,EAAcj3I,GACzBqhJ,GAAkBhM,EAAKz1I,MACvBy1I,EAAK7qI,SAAQ,SAAU43C,GAAK,OAAOx2C,EAAI2S,IAAI6jC,EAAI,GACjD,GACN,CAkBA,OAhBK/jC,IAAMixI,EAAWz9I,UAAYwM,GAClCixI,EAAW9tJ,UAAYN,OAAO2G,OAAQwW,GAAOA,EAAI7c,WACjD8tJ,EAAW9tJ,UAAUsN,YAAcwgJ,EAEnCA,EAAW9U,GAAK,WACd,OAAO16I,KAAK2iB,UACd,EAEA6sI,EAAWT,SAAW,SAAmB7uJ,GACvC,OAAOF,KAAK+2I,EAAgB72I,GAAO8uJ,SACrC,EAEAQ,EAAW9tJ,UAAUF,SAAW,WAC9B,OAAOxB,KAAKg6I,WAAW,eAAgB,IACzC,EAEOwV,CACT,CA9B8B,CA8B5BjxI,IAEFixI,GAAWrB,aAAeA,GAE1B,IAiBI4H,GAjBAC,GAAsBxG,GAAW9tJ,UASrC,SAASu0J,GAAe9wJ,EAAKwgJ,GAC3B,IAAI75I,EAAM1K,OAAO2G,OAAOiuJ,IAIxB,OAHAlqJ,EAAIhM,KAAOqF,EAAMA,EAAIrF,KAAO,EAC5BgM,EAAI+gJ,KAAO1nJ,EACX2G,EAAI03I,UAAYmC,EACT75I,CACT,CAGA,SAASgqJ,KACP,OACEC,KAAsBA,GAAoBE,GAAerJ,MAE7D,CArBAoJ,GAAoBje,IAAqB,EACzCie,GAAoBT,IAAMG,GAA2BH,IACrDS,GAAoBP,QAAUC,GAA2BD,QACzDO,GAAoBnV,OAAS6U,GAA2B7U,OAExDmV,GAAoBtG,QAAUoG,GAC9BE,GAAoBvG,OAASwG,GAiB7B,IAAIC,GAAc,CAChBC,eAAgB,EAChBC,cAAe,GAuBbC,GAAS,SAAgBC,EAAetsJ,GAC1C,IAAIusJ,GArBN,SAAqCD,GACnC,GAAI3e,EAAS2e,GACX,MAAM,IAAIv0J,MACR,4GAIJ,GAAI81I,EAAYye,GACd,MAAM,IAAIv0J,MACR,gHAIJ,GAAsB,OAAlBu0J,GAAmD,iBAAlBA,EACnC,MAAM,IAAIv0J,MACR,oGAGN,CAKEy0J,CAA4BF,GAE5B,IAAIG,EAAa,SAAgBppJ,GAC/B,IAAI2wI,EAAWh+I,KAEf,GAAIqN,aAAkBopJ,EACpB,OAAOppJ,EAET,KAAMrN,gBAAgBy2J,GACpB,OAAO,IAAIA,EAAWppJ,GAExB,IAAKkpJ,EAAgB,CACnBA,GAAiB,EACjB,IAAIp1J,EAAOC,OAAOD,KAAKm1J,GACnBI,EAAWC,EAAoBC,SAAW,CAAC,EAI/CD,EAAoBE,MAAQ7sJ,EAC5B2sJ,EAAoB5b,MAAQ55I,EAC5Bw1J,EAAoBG,eAAiBR,EACrC,IAAK,IAAIj1J,EAAI,EAAGA,EAAIF,EAAKI,OAAQF,IAAK,CACpC,IAAI01J,EAAW51J,EAAKE,GACpBq1J,EAAQK,GAAY11J,EAChBs1J,EAAoBI,GAEH,iBAAZ3tD,SACLA,QAAQrmD,MACRqmD,QAAQrmD,KACN,iBACEi0G,GAAWh3J,MACX,mBACA+2J,EACA,yDAINE,GAAQN,EAAqBI,EAEjC,CACF,CAQA,OAPA/2J,KAAKwjJ,eAAYrjJ,EACjBH,KAAKk3J,QAAU5N,KAAO7F,eAAc,SAAUniJ,GAC5CA,EAAEooJ,QAAQ1L,EAASjD,MAAMx5I,QACzBw1I,EAAgB1pI,GAAQ3C,SAAQ,SAAU43C,EAAGv/C,GAC3CzB,EAAEwK,IAAIkyI,EAAS4Y,SAAS7zJ,GAAIu/C,IAAM07F,EAAS8Y,eAAe/zJ,QAAK5C,EAAYmiD,EAC7E,GACF,IACOtiD,IACT,EAEI22J,EAAuBF,EAAW/0J,UACpCN,OAAO2G,OAAOovJ,IAOhB,OANAR,EAAoB3nJ,YAAcynJ,EAE9BzsJ,IACFysJ,EAAWW,YAAcptJ,GAGpBysJ,CACT,EAEAJ,GAAO30J,UAAUF,SAAW,WAI1B,IAHA,IAEIuB,EAFAsB,EAAM2yJ,GAAWh3J,MAAQ,MACzBmB,EAAOnB,KAAK+6I,MAEP15I,EAAI,EAAGC,EAAIH,EAAKI,OAAQF,IAAMC,EAAGD,IAExCgD,IAAQhD,EAAI,KAAO,KADnB0B,EAAI5B,EAAKE,IACoB,KAAOygJ,GAAY9hJ,KAAKsH,IAAIvE,IAE3D,OAAOsB,EAAM,IACf,EAEAgyJ,GAAO30J,UAAUg/B,OAAS,SAAiBw5B,GACzC,OACEl6D,OAASk6D,GACRy9E,EAASz9E,IAAUm9F,GAAUr3J,MAAM0gC,OAAO22H,GAAUn9F,GAEzD,EAEAm8F,GAAO30J,UAAUi6I,SAAW,WAC1B,OAAO0b,GAAUr3J,MAAM27I,UACzB,EAIA0a,GAAO30J,UAAUyL,IAAM,SAAcpK,GACnC,OAAO/C,KAAK42J,SAASluJ,eAAe3F,EACtC,EAEAszJ,GAAO30J,UAAU4F,IAAM,SAAcvE,EAAG83I,GACtC,IAAK76I,KAAKmN,IAAIpK,GACZ,OAAO83I,EAET,IAAI18H,EAAQne,KAAK42J,SAAS7zJ,GACtB7C,EAAQF,KAAKk3J,QAAQ5vJ,IAAI6W,GAC7B,YAAiBhe,IAAVD,EAAsBF,KAAK82J,eAAe/zJ,GAAK7C,CACxD,EAIAm2J,GAAO30J,UAAUoK,IAAM,SAAc/I,EAAGu/C,GACtC,GAAItiD,KAAKmN,IAAIpK,GAAI,CACf,IAAIu0J,EAAYt3J,KAAKk3J,QAAQprJ,IAC3B9L,KAAK42J,SAAS7zJ,GACdu/C,IAAMtiD,KAAK82J,eAAe/zJ,QAAK5C,EAAYmiD,GAE7C,GAAIg1G,IAAct3J,KAAKk3J,UAAYl3J,KAAKwjJ,UACtC,OAAO+T,GAAWv3J,KAAMs3J,EAE5B,CACA,OAAOt3J,IACT,EAEAq2J,GAAO30J,UAAUo3D,OAAS,SAAiB/1D,GACzC,OAAO/C,KAAK8L,IAAI/I,EAClB,EAEAszJ,GAAO30J,UAAU2vB,MAAQ,WACvB,IAAIimI,EAAYt3J,KAAKk3J,QAAQ7lI,QAAQq4H,QAAQ1pJ,KAAK+6I,MAAMx5I,QAExD,OAAOvB,KAAKwjJ,UAAYxjJ,KAAOu3J,GAAWv3J,KAAMs3J,EAClD,EAEAjB,GAAO30J,UAAUojJ,WAAa,WAC5B,OAAO9kJ,KAAKk3J,QAAQpS,YACtB,EAEAuR,GAAO30J,UAAU83I,MAAQ,WACvB,OAAO6d,GAAUr3J,KACnB,EAEAq2J,GAAO30J,UAAU4iE,KAAO,WACtB,OAAOA,GAAKtkE,KACd,EAEAq2J,GAAO30J,UAAU4L,QAAU,WACzB,OAAOtN,KAAKo6I,WAAWhC,EACzB,EAEAie,GAAO30J,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GACvD,OAAO+3D,GAAUr3J,MAAMo6I,WAAW1tI,EAAM4yF,EAC1C,EAEA+2D,GAAO30J,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GACnD,OAAO+3D,GAAUr3J,MAAMw1I,UAAUv7E,EAAIqlC,EACvC,EAEA+2D,GAAO30J,UAAUqjJ,cAAgB,SAAwBY,GACvD,GAAIA,IAAY3lJ,KAAKwjJ,UACnB,OAAOxjJ,KAET,IAAIs3J,EAAYt3J,KAAKk3J,QAAQnS,cAAcY,GAC3C,OAAKA,EAKE4R,GAAWv3J,KAAMs3J,EAAW3R,IAJjC3lJ,KAAKwjJ,UAAYmC,EACjB3lJ,KAAKk3J,QAAUI,EACRt3J,KAGX,EAEAq2J,GAAO1e,SAAWA,EAClB0e,GAAOmB,mBAAqBR,GAC5B,IAAIG,GAAkBd,GAAO30J,UAyB7B,SAAS61J,GAAWE,EAAYpqJ,EAAQs4I,GACtC,IAAIjqF,EAASt6D,OAAO2G,OAAO3G,OAAO2xG,eAAe0kD,IAGjD,OAFA/7F,EAAOw7F,QAAU7pJ,EACjBquD,EAAO8nF,UAAYmC,EACZjqF,CACT,CAEA,SAASs7F,GAAWt7F,GAClB,OAAOA,EAAO1sD,YAAYooJ,aAAe17F,EAAO1sD,YAAYhF,MAAQ,QACtE,CAEA,SAASqtJ,GAAU37F,GACjB,OAAO6+E,GAAkB7+E,EAAOq/E,MAAM51I,KAAI,SAAUpC,GAAK,MAAO,CAACA,EAAG24D,EAAOp0D,IAAIvE,GAAK,IACtF,CAEA,SAASk0J,GAAQv1J,EAAWsI,GAC1B,IACE5I,OAAO+C,eAAezC,EAAWsI,EAAM,CACrC1C,IAAK,WACH,OAAOtH,KAAKsH,IAAI0C,EAClB,EACA8B,IAAK,SAAU5L,GACbohJ,GAAUthJ,KAAKwjJ,UAAW,sCAC1BxjJ,KAAK8L,IAAI9B,EAAM9J,EACjB,GAEJ,CAAE,MAAOiD,GAET,CACF,CArDAg0J,GAAgBzf,IAAoB,EACpCyf,GAAgBpiB,GAAUoiB,GAAgBr+F,OAC1Cq+F,GAAgBnU,SAAWmU,GAAgBpU,SAAWC,GACtDmU,GAAgB7G,MAAQA,GACxB6G,GAAgBtE,MAAQ2B,GAAoB3B,MAC5CsE,GAAgBrkH,MAAQqwG,GACxBgU,GAAgB/8F,UAAYipF,GAC5B8T,GAAgBzS,QAAUA,GAC1ByS,GAAgB3S,UAAYA,GAC5B2S,GAAgB1S,cAAgBA,GAChC0S,GAAgBxS,YAAcA,GAC9BwS,GAAgBrU,MAAQA,GACxBqU,GAAgB3/H,OAASA,GACzB2/H,GAAgBjU,SAAWA,GAC3BiU,GAAgB1T,cAAgBA,GAChC0T,GAAgBtS,UAAYA,GAC5BsS,GAAgBnS,YAAcA,GAC9BmS,GAAgB5e,GAAmB4e,GAAgB7pJ,QACnD6pJ,GAAgB1yD,OAAS0yD,GAAgB3G,SACvCgE,GAAoBhE,SACtB2G,GAAgBrtD,QAAUqtD,GAAgB9d,SAAW,WACnD,OAAOr5I,KAAKwB,UACd,EAqCA,IA6FIk2J,GA7FAC,GAAuB,SAAUzgB,GACnC,SAASygB,EAAOz3J,EAAO88E,GACrB,KAAMh9E,gBAAgB23J,GACpB,OAAO,IAAIA,EAAOz3J,EAAO88E,GAI3B,GAFAh9E,KAAK43J,OAAS13J,EACdF,KAAKF,UAAiBK,IAAV68E,EAAsB4yB,IAAWjrG,KAAKC,IAAI,EAAGo4E,GACvC,IAAdh9E,KAAKF,KAAY,CACnB,GAAI43J,GACF,OAAOA,GAETA,GAAe13J,IACjB,CACF,CA6EA,OA3EKk3I,IAAaygB,EAAO5lJ,UAAYmlI,GACrCygB,EAAOj2J,UAAYN,OAAO2G,OAAQmvI,GAAcA,EAAWx1I,WAC3Di2J,EAAOj2J,UAAUsN,YAAc2oJ,EAE/BA,EAAOj2J,UAAUF,SAAW,WAC1B,OAAkB,IAAdxB,KAAKF,KACA,YAEF,YAAcE,KAAK43J,OAAS,IAAM53J,KAAKF,KAAO,UACvD,EAEA63J,EAAOj2J,UAAU4F,IAAM,SAAc6W,EAAO08H,GAC1C,OAAO76I,KAAKmN,IAAIgR,GAASne,KAAK43J,OAAS/c,CACzC,EAEA8c,EAAOj2J,UAAUsa,SAAW,SAAmBi0I,GAC7C,OAAOrU,GAAG57I,KAAK43J,OAAQ3H,EACzB,EAEA0H,EAAOj2J,UAAU8C,MAAQ,SAAgBqxI,EAAOpzI,GAC9C,IAAI3C,EAAOE,KAAKF,KAChB,OAAO81I,EAAWC,EAAOpzI,EAAK3C,GAC1BE,KACA,IAAI23J,EACF33J,KAAK43J,OACL5hB,EAAWvzI,EAAK3C,GAAQg2I,EAAaD,EAAO/1I,GAEpD,EAEA63J,EAAOj2J,UAAU49F,QAAU,WACzB,OAAOt/F,IACT,EAEA23J,EAAOj2J,UAAUoI,QAAU,SAAkBmmJ,GAC3C,OAAIrU,GAAG57I,KAAK43J,OAAQ3H,GACX,GAED,CACV,EAEA0H,EAAOj2J,UAAUgD,YAAc,SAAsBurJ,GACnD,OAAIrU,GAAG57I,KAAK43J,OAAQ3H,GACXjwJ,KAAKF,MAEN,CACV,EAEA63J,EAAOj2J,UAAU8zI,UAAY,SAAoBv7E,EAAIqlC,GAGnD,IAFA,IAAIx/F,EAAOE,KAAKF,KACZuB,EAAI,EACDA,IAAMvB,IAC+C,IAAtDm6D,EAAGj6D,KAAK43J,OAAQt4D,EAAUx/F,IAASuB,EAAIA,IAAKrB,QAIlD,OAAOqB,CACT,EAEAs2J,EAAOj2J,UAAU04I,WAAa,SAAqB1tI,EAAM4yF,GACvD,IAAI0+C,EAAWh+I,KAEXF,EAAOE,KAAKF,KACZuB,EAAI,EACR,OAAO,IAAIm3I,GAAS,WAAc,OAAOn3I,IAAMvB,EAj+K1C,CAAEI,WAAOC,EAAWkG,MAAM,GAm+KzBoyI,EAAc/rI,EAAM4yF,EAAUx/F,IAASuB,EAAIA,IAAK28I,EAAS4Z,OAAS,GAE1E,EAEAD,EAAOj2J,UAAUg/B,OAAS,SAAiBw5B,GACzC,OAAOA,aAAiBy9F,EACpB/b,GAAG57I,KAAK43J,OAAQ19F,EAAM09F,QACtBvJ,GAAUn0F,EAChB,EAEOy9F,CACT,CA3F0B,CA2FxBzgB,GAIF,SAAS2gB,GAAO33J,EAAO0+C,GACrB,OAAOk5G,GACL,GACAl5G,GAAam5G,GACb73J,EACA,GACA0+C,GAAaA,EAAUr9C,OAAS,EAAI,QAAKpB,EACzC,CAAE,GAAID,GAEV,CAEA,SAAS43J,GAAWn3J,EAAOi+C,EAAW1+C,EAAOO,EAAKghJ,EAASuW,GACzD,GACmB,iBAAV93J,IACN23I,EAAY33I,KACZo5I,EAAYp5I,IAAU04I,EAAY14I,IAAUwhJ,GAAcxhJ,IAC3D,CACA,IAAKS,EAAMmJ,QAAQ5J,GACjB,MAAM,IAAIgK,UAAU,kDAEtBvJ,EAAM4C,KAAKrD,GACXuhJ,GAAmB,KAARhhJ,GAAcghJ,EAAQl+I,KAAK9C,GACtC,IAAIw3J,EAAYr5G,EAAUj2C,KACxBqvJ,EACAv3J,EACAq2I,EAAI52I,GAAOiF,KAAI,SAAUm9C,EAAGv/C,GAAK,OAAO+0J,GAAWn3J,EAAOi+C,EAAW0D,EAAGv/C,EAAG0+I,EAASvhJ,EAAQ,IAE5FuhJ,GAAWA,EAAQj9I,SAIrB,OAFA7D,EAAM6C,MACNi+I,GAAWA,EAAQj+I,MACZy0J,CACT,CACA,OAAO/3J,CACT,CAEA,SAAS63J,GAAiBh1J,EAAGu/C,GAE3B,OAAOm0F,EAAUn0F,GAAKA,EAAEyuG,SAAWza,EAAQh0F,GAAKA,EAAE8qG,QAAU9qG,EAAEuuG,OAChE,CAEA,IAAIr2I,GAAU,QA4DV09I,GAAWrhB,EAEf,SA5DgB,CACdr8H,QAASA,GAETq8H,WAAYA,EAEZqhB,SAAUrhB,EAEVC,IAAKA,EACLt1H,IAAKA,GACL+jI,WAAYA,GACZ+D,KAAMA,GACNkE,MAAOA,GACPjvI,IAAKA,GACLixI,WAAYA,GACZ0G,YAAaA,GAEbG,OAAQA,GACRvG,MAAOA,GACP6H,OAAQA,GAER/b,GAAIA,GACJic,OAAQA,GACRz1I,KAAMA,GAENy1H,YAAaA,EACb1B,aAAcA,EACdG,QAASA,EACTG,UAAWA,EACXE,cAAeA,EACfqB,UAAWA,EACXyD,cAAeA,GACfiG,cAAeA,GACflK,MAAOA,EACP4R,OAAQA,GACR/N,MAAOA,GACPE,aAAcA,GACd+R,QAASA,GACTW,MAAOA,GACPE,aAAcA,GACdxW,SAAUA,EAEVrwI,IAAKA,GACLgpJ,MAAOF,GACPjjJ,IAAKA,GACL0lJ,MAAOtC,GACPz9G,MAAOA,GACP0xG,UAAWX,GACXzpF,UAAWA,GACXqqF,cAAeV,GACfjrF,OAAQA,GACRiqF,SAAUA,GACVj3I,IAAKA,GACLg3I,MAAOD,GACPrrH,OAAQyrH,GACRC,SAAUhB,eCr0LiB,mBAAlB9gJ,OAAO2G,OAEhB9D,EAAOC,QAAU,SAAkByqJ,EAAMwJ,GACnCA,IACFxJ,EAAKyJ,OAASD,EACdxJ,EAAKjtJ,UAAYN,OAAO2G,OAAOowJ,EAAUz2J,UAAW,CAClDsN,YAAa,CACX9O,MAAOyuJ,EACPtnJ,YAAY,EACZiB,UAAU,EACVC,cAAc,KAItB,EAGAtE,EAAOC,QAAU,SAAkByqJ,EAAMwJ,GACvC,GAAIA,EAAW,CACbxJ,EAAKyJ,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAAS32J,UAAYy2J,EAAUz2J,UAC/BitJ,EAAKjtJ,UAAY,IAAI22J,EACrB1J,EAAKjtJ,UAAUsN,YAAc2/I,CAC/B,CACF,0BCvBF,MAAMx6C,EAAW/0F,GACL,OAAXA,GACkB,iBAAXA,GACgB,mBAAhBA,EAAO44C,KAEfm8C,EAAS7rG,SAAW8W,GACnB+0F,EAAS/0F,KACW,IAApBA,EAAO9W,UACkB,mBAAlB8W,EAAOk5I,QACmB,iBAA1Bl5I,EAAOm5I,eAEfpkD,EAASvyF,SAAWxC,GACnB+0F,EAAS/0F,KACW,IAApBA,EAAOwC,UACiB,mBAAjBxC,EAAOK,OACmB,iBAA1BL,EAAOo5I,eAEfrkD,EAASskD,OAASr5I,GACjB+0F,EAAS7rG,SAAS8W,IAClB+0F,EAASvyF,SAASxC,GAEnB+0F,EAASjzF,UAAY9B,GACpB+0F,EAASskD,OAAOr5I,IACa,mBAAtBA,EAAO2iD,WAEf99D,EAAOC,QAAUiwG,sCC1BjB,IAAIrsG,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAAwBtE,GAC7CsE,EAAa,EAAQ,OAAqBtE,GAC1CsE,EAAa,EAAQ,OAA8BtE,GACnDsE,EAAa,EAAQ,OAA0BtE,GAC/CsE,EAAa,EAAQ,OAAwBtE,GAC7CsE,EAAa,EAAQ,OAAkCtE,GACvDsE,EAAa,EAAQ,OAAetE,iCCrBpC9C,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQm2G,mBAAgB,EACxB,EAAQ,OACR,MAAMp+B,EAA6B,EAAQ,MACrCy8E,EAAe,EAAQ,OACvBC,EAAwB,EAAQ,OAChCC,EAA4B,EAAQ,OACpC5hD,EAAS,EAAQ,OAIvB,MAAMqD,EACF,WAAArrG,CAAYlI,GACRA,EAAUA,GAAW,CAAC,EACtB9G,KAAK2jE,eAAiB78D,EAAQ68D,gBAAkB,IAAIg1F,EAAsBE,oBAC1E74J,KAAK84J,cAAgB,CAAC,EACtB94J,KAAK+4J,iBAAmBjyJ,EAAQkyJ,eAChCh5J,KAAKi5J,0BAA4BnyJ,EAAQmyJ,wBACzCj5J,KAAKk5J,yBAA2BpyJ,EAAQoyJ,0BAA4B,GACpEl5J,KAAKm5J,yBAAyB,2BAA4BryJ,MAAYA,EAAQqyJ,sBAClF,CAUA,uBAAOC,CAAiBl5J,EAAOm5J,EAAaC,GACxC,GAAqB,iBAAVp5J,EACP,MAAM,IAAIw4J,EAAaa,WAAW,sDAAsDv3J,KAAKC,UAAU/B,MAAWo5J,GAEtH,IAAKtiD,EAAOxhF,KAAKgkI,mBAAmBvvJ,KAAK/J,GAAQ,CAC7C,GAAIm5J,EACA,MAAM,IAAIX,EAAaa,WAAW,kEAAkEv3J,KAAKC,UAAU/B,MAAWo5J,GAG9H,OAAO,CAEf,CACA,OAAO,CACX,CASA,wBAAOG,CAAkBv5J,EAAO0jE,GAC5B,GAAqB,iBAAV1jE,EACP,MAAM,IAAIw4J,EAAaa,WAAW,uDAAuDv3J,KAAKC,UAAU/B,MAAWw4J,EAAagB,YAAYC,wBAEhJ,IAAK3iD,EAAOxhF,KAAKokI,oBAAoB3vJ,KAAK/J,GAAQ,CAC9C,GAAI0jE,EACA,MAAM,IAAI80F,EAAaa,WAAW,6DAA6Dv3J,KAAKC,UAAU/B,MAAWw4J,EAAagB,YAAYC,wBAGlJ,OAAO,CAEf,CACA,OAAO,CACX,CAMA,iBAAAE,CAAkBjxI,GACd,IAAK,MAAMnoB,KAAOW,OAAOD,KAAKynB,GAAU,CACpC,IAAI1oB,EAAQ0oB,EAAQnoB,GACpB,GAAIP,GAA0B,iBAAVA,GACZA,EAAM,cAAgBA,EAAM,OAAQ,CACpC,GAAiC,iBAAtBA,EAAM,aAA4B82G,EAAOxhF,KAAKskI,eAAe55J,EAAM,aAC1E,MAAM,IAAIw4J,EAAaa,WAAW,gEAAgEr5J,EAAM,eAAgBw4J,EAAagB,YAAYK,qBAErJ75J,EAAQ0oB,EAAQnoB,GAAOW,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGtV,GAAQ,CAAE,MAAOA,EAAM,cAC9EA,EAAM,OAASA,EAAM,YACjB82G,EAAOxhF,KAAKwkI,mBAAmB95J,EAAM,oBAC9BA,EAAM,YAGbA,EAAM,aAAc,CAE5B,CAER,CACA,OAAO0oB,CACX,CASA,mBAAAqxI,CAAoBrxI,EAASqwI,EAAyB93J,GAClD,MAAM+4J,EAAatxI,EAAQqzF,gBAC3B,IAAK,MAAMx7G,KAAQU,GAAQC,OAAOD,KAAK+4J,GAEnC,GAAIljD,EAAOxhF,KAAK2kI,sBAAsBrwJ,QAAQrJ,GAAO,IAAMu2G,EAAOxhF,KAAK4kI,0BAA0B35J,GAAM,CAEnG,MAAM45J,EAAWH,EAAWz5J,GAC5B,GAAIu2G,EAAOxhF,KAAKwkI,mBAAmBv5J,IAAQu2G,EAAOxhF,KAAK8kI,uBAAuBxwJ,QAAQrJ,IAAQ,IAC9E,UAARA,GAA8C,iBAApBy5J,EAAWz5J,KAChCy5J,EAAWz5J,GAAK,eAAmD,SAAlCy5J,EAAWz5J,GAAK,eACtD,MAAM,IAAIi4J,EAAaa,WAAW,iEAC1C94J,QAAUuB,KAAKC,UAAUo4J,KAAa3B,EAAagB,YAAYa,sBAI/D,GAAIvjD,EAAOxhF,KAAKglI,sBAAsB1wJ,QAAQktG,EAAOxhF,KAAKilI,kBAAkBJ,KAAc,EACtF,MAAM,IAAI3B,EAAaa,WAAW,+DACtC94J,QAAUuB,KAAKC,UAAUo4J,KAAa3B,EAAagB,YAAYgB,uBAG/D,GAAIL,GAAYrjD,EAAOxhF,KAAKwkI,mBAAmBhjD,EAAOxhF,KAAKilI,kBAAkBJ,MAC9C,IAAxBA,EAAS,WACZ,MAAM,IAAI3B,EAAaa,WAAW,4CAA4C94J,QAAUuB,KAAKC,UAAUo4J,MAAc3B,EAAagB,YAAYiB,yBAGlJ,KAAO3jD,EAAOxhF,KAAKolI,cAAcV,EAAWz5J,KAAO,CAC/C,MAAMP,EAAQg6J,EAAWz5J,GACzB,IAAIo6J,GAAU,EACd,GAAqB,iBAAV36J,EACPg6J,EAAWz5J,GAAOmoB,EAAQ8yF,WAAWx7G,GAAO,GAC5C26J,EAAUA,GAAW36J,IAAUg6J,EAAWz5J,OAEzC,CACD,MAAM04C,EAAKj5C,EAAM,OACXwM,EAAOxM,EAAM,SAEb46J,IAAkB,YAAa56J,IAAU82G,EAAOxhF,KAAKulI,WAAWt6J,GACtE,GAAI,QAASP,EAELi5C,SAAiD,iBAAPA,IAC1C+gH,EAAWz5J,GAAOW,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG0kJ,EAAWz5J,IAAO,CAAE,MAAOmoB,EAAQ8yF,WAAWviE,GAAI,KACpG0hH,EAAUA,GAAW1hH,IAAO+gH,EAAWz5J,GAAK,aAG/C,IAAKu2G,EAAOxhF,KAAKwkI,mBAAmBv5J,IAAQq6J,EAAe,CAE5D,MAAME,EAAQpyI,EAAQ8yF,WAAWj7G,GAAK,GAClCu6J,IAAUv6J,IAEVy5J,EAAWz5J,GAAOW,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG0kJ,EAAWz5J,IAAO,CAAE,MAAOu6J,IAC7EH,GAAU,EAElB,CACA,GAAInuJ,GAAwB,iBAATA,GAA8B,WAATA,KAC/BxM,EAAM,gBAAkBA,EAAM,cAAc,WAC9C46J,EAAe,CAElB,IAAIG,EAAeryI,EAAQ8yF,WAAWhvG,GAAM,GACxCusJ,GAA2BvsJ,IAASuuJ,IACpCA,EAAeryI,EAAQ8yF,WAAWhvG,GAAM,IAExCuuJ,IAAiBvuJ,IACjBmuJ,GAAU,EACVX,EAAWz5J,GAAOW,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG0kJ,EAAWz5J,IAAO,CAAE,QAASw6J,IAEvF,CACJ,CACA,IAAKJ,EACD,KAER,CACJ,CAER,CAMA,SAAAK,CAAUtyI,GAAS,eAAEuyI,EAAc,sBAAEC,IAEjC,GAAIA,GAA4C,IAAnBD,EACzB,IAAK,MAAM16J,KAAOW,OAAOD,KAAKynB,GAC1B,GAAY,cAARnoB,GAA+C,iBAAjBmoB,EAAQnoB,GACtCmoB,EAAQnoB,GAAOmoB,EAAQnoB,GAAK6E,kBAE3B,CACD,MAAMpF,EAAQ0oB,EAAQnoB,GACtB,GAAIP,GAA0B,iBAAVA,GACkB,iBAAvBA,EAAM,aAA2B,CACxC,MAAMm7J,EAAYn7J,EAAM,aAAaoF,cACjC+1J,IAAcn7J,EAAM,eACpB0oB,EAAQnoB,GAAOW,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGtV,GAAQ,CAAE,YAAam7J,IAE9E,CAER,CAGZ,CAKA,gBAAAC,CAAiB1yI,GACb,IAAK,MAAMnoB,KAAOW,OAAOD,KAAKynB,GAAU,CACpC,MAAM1oB,EAAQ0oB,EAAQnoB,GACtB,GAAIP,GAA0B,iBAAVA,EAChB,GAAmC,iBAAxBA,EAAM,cACb0oB,EAAQnoB,GAAOW,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGtV,GAAQ,CAAE,aAAc,CAAE,CAACA,EAAM,gBAAgB,UAE/F,GAAIyK,MAAMC,QAAQ1K,EAAM,eAAgB,CACzC,MAAMuiJ,EAAW,CAAC,EAClB,IAAK,MAAM8Y,KAAkBr7J,EAAM,cAC/BuiJ,EAAS8Y,IAAkB,EAE/B3yI,EAAQnoB,GAAOW,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGtV,GAAQ,CAAE,aAAcuiJ,GAC3E,CAER,CACJ,CAMA,oBAAA+Y,CAAqB5yI,GAAS,eAAEuyI,GAAkBM,GAC9C,GAAIN,GAAkBA,GAAkB,KAChCvyI,EAAQ,cAAe,CACvB,IAAK,MAAMnoB,KAAOW,OAAOD,KAAKynB,GAC1B,IAAIouF,EAAOxhF,KAAK4kI,0BAA0B35J,KAGrCu2G,EAAOxhF,KAAKwkI,mBAAmBv5J,KAASu2G,EAAOxhF,KAAKkmI,gBAAgB9yI,EAASnoB,GAAM,CACpF,MAAMP,EAAQ0oB,EAAQnoB,GAClBP,GAA0B,iBAAVA,EACV,eAAgB0oB,EAAQnoB,KAE1BmoB,EAAQnoB,GAAOW,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGoT,EAAQnoB,IAAO,CAAE,cAAc,MAKlFmoB,EAAQnoB,GAAO,CACX,MAAOP,EACP,cAAc,GAEd82G,EAAOxhF,KAAKmmI,6BAA6Bz7J,EAAOu7J,KAChD7yI,EAAQnoB,GAAOW,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGoT,EAAQnoB,IAAO,CAAE,WAAW,KAGvF,QAEGmoB,EAAQ,aACnB,CAER,CASA,4BAAAgzI,CAA6BC,EAAeC,EAAcL,EAAet6J,GACrE,IAAK,MAAMV,KAAQU,QAAmCA,EAAOC,OAAOD,KAAK26J,GACrE,GAAI9kD,EAAOxhF,KAAKkmI,gBAAgBG,EAAep7J,KAIV,iBAAtBq7J,EAAar7J,GACpBq7J,EAAar7J,GAAO,CAAE,MAAOq7J,EAAar7J,GAAM,cAAc,GAM9Dq7J,EAAar7J,GAAOW,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGsmJ,EAAar7J,IAAO,CAAE,cAAc,KAGvFu2G,EAAOxhF,KAAK64H,UAAUwN,EAAcp7J,GAAMq7J,EAAar7J,KACxD,MAAM,IAAIi4J,EAAaa,WAAW,+CAA+C94J,UAAYuB,KAAKC,UAAU+0G,EAAOxhF,KAAKilI,kBAAkBoB,EAAcp7J,WAAauB,KAAKC,UAAU+0G,EAAOxhF,KAAKilI,kBAAkBqB,EAAar7J,OAAUi4J,EAAagB,YAAYqC,4BAIlR,CAMA,QAAAC,CAASpzI,GAAS,eAAEuyI,IAChB,IAAK,MAAM16J,KAAOW,OAAOD,KAAKynB,GAAU,CAEpC,GAAIouF,EAAOxhF,KAAK4kI,0BAA0B35J,GACtC,SAGJ,GAAY,KAARA,EACA,MAAM,IAAIi4J,EAAaa,WAAW,wCAAwC94J,QAAUuB,KAAKC,UAAU2mB,EAAQnoB,OAAUi4J,EAAagB,YAAYiB,yBAElJ,MAAMz6J,EAAQ0oB,EAAQnoB,GAChBw7J,SAAmB/7J,EAEzB,GAAI82G,EAAOxhF,KAAKwkI,mBAAmBv5J,GAAnC,CACI,OAAQA,EAAIwlF,OAAO,IACf,IAAK,QACD,GAAc,OAAV/lF,GAAgC,WAAd+7J,EAClB,MAAM,IAAIvD,EAAaa,WAAW,gCAAgCr5J,IAASw4J,EAAagB,YAAYwC,uBAExG,MACJ,IAAK,OACD,GAAc,OAAVh8J,GAAgC,WAAd+7J,EAClB,MAAM,IAAIvD,EAAaa,WAAW,+BAA+B3wI,EAAQnoB,KAAQi4J,EAAagB,YAAYyC,kBAE9G,MACJ,IAAK,WACa,OAAVj8J,GACAm6G,EAAc++C,iBAAiBl5J,GAAO,EAAMw4J,EAAagB,YAAY0C,0BAEzE,MACJ,IAAK,UACD,GAAc,OAAVl8J,GAAgC,WAAd+7J,EAClB,MAAM,IAAIvD,EAAaa,WAAW,qCAAqCr5J,IAASw4J,EAAagB,YAAY2C,uBAE7G,MACJ,IAAK,YACa,OAAVn8J,GACAm6G,EAAco/C,kBAAkBv5J,GAAO,GAE3C,MACJ,IAAK,YACD,GAAuB,IAAnBi7J,EACA,MAAM,IAAIzC,EAAaa,WAAW,wCAAwCr5J,IAASw4J,EAAagB,YAAY4C,uBAEhH,GAAc,OAAVp8J,GAAgC,YAAd+7J,EAClB,MAAM,IAAIvD,EAAaa,WAAW,sCAAsCr5J,IAASw4J,EAAagB,YAAY6C,yBAKtH,GAAIvlD,EAAOxhF,KAAKskI,eAAer5J,IAAQu2G,EAAOxhF,KAAKskI,eAAe9iD,EAAOxhF,KAAKilI,kBAAkBv6J,IAC5F,MAAM,IAAIw4J,EAAaa,WAAW,gDAAgD94J,QAAUu2G,EAAOxhF,KAC9FilI,kBAAkBv6J,MAAWw4J,EAAagB,YAAYa,qBAGnE,MAEA,GAAc,OAAVr6J,EACA,OAAQ+7J,GACJ,IAAK,SACD,GAAIjlD,EAAOxhF,KAAKgnI,UAAUt8J,EAAO0oB,KAAanoB,EAC1C,MAAM,IAAIi4J,EAAaa,WAAW,oDAAoD94J,QAAUuB,KAC3FC,UAAU/B,MAAWw4J,EAAagB,YAAY+C,oBAEvD,GAAIzlD,EAAOxhF,KAAKknI,eAAej8J,GAAM,CACjC,GAAc,UAAVP,EACA,MAAM,IAAIw4J,EAAaa,WAAW,4CAA4C94J,QAAUP,KAAUw4J,EAAagB,YAAYK,qBAE1H,GAAI/iD,EAAOxhF,KAAKulI,WAAW76J,IAAUA,IAAU,IAAI04J,EAA0B+D,wBAAwB/zI,GAAS8yF,WAAWj7G,GAC1H,MAAM,IAAIi4J,EAAaa,WAAW,iDAAiD94J,QAAUP,KAAUw4J,EAAagB,YAAYK,oBAExI,CACA,MACJ,IAAK,SACD,KAAK/iD,EAAOxhF,KAAKonI,aAAan8J,IAAU,QAASP,IACtB,QAAnBA,EAAM,SAAsB0oB,EAAQ,SAAYA,EAAQ,YAC5D,MAAM,IAAI8vI,EAAaa,WAAW,kCAAkC94J,QAAUuB,KAAKC,UAAU/B,MAAWw4J,EAAagB,YAAYK,qBAErI,IAAK,MAAM8C,KAAaz7J,OAAOD,KAAKjB,GAAQ,CACxC,MAAM48J,EAAc58J,EAAM28J,GAC1B,GAAKC,EAGL,OAAQD,GACJ,IAAK,MACD,GAAI7lD,EAAOxhF,KAAKskI,eAAegD,IACR,UAAhBA,GAA2C,QAAhBA,GAAyC,WAAhBA,GAA4C,UAAhBA,EACnF,MAAM,IAAIpE,EAAaa,WAAW,gDAAgD94J,QAAUuB,KAAKC,UAAU/B,MAAWw4J,EAAagB,YAAYK,qBAEnJ,GAAI/iD,EAAOxhF,KAAKknI,eAAej8J,GAAM,CACjC,GAAoB,UAAhBq8J,EACA,MAAM,IAAIpE,EAAaa,WAAW,4CAA4C94J,QAAUuB,KAAKC,UAAU/B,MAAWw4J,EAAagB,YAAYK,qBAE1I,GAAI/iD,EAAOxhF,KAAKulI,WAAW+B,IACzBA,IAAgB,IAAIlE,EAA0B+D,wBAAwB/zI,GAAS8yF,WAAWj7G,GAC7F,MAAM,IAAIi4J,EAAaa,WAAW,iDAAiD94J,QAAUuB,KAAKC,UAAU/B,MAAWw4J,EAAagB,YAAYK,oBAExJ,CACA,GAA2B,iBAAhB+C,EACP,MAAM,IAAIpE,EAAaa,WAAW,8CAA8C94J,QAAUuB,KAAKC,UAAU/B,MAAWw4J,EAAagB,YAAYK,qBAEjJ,GAAI/iD,EAAOxhF,KAAKgnI,UAAUM,EAAal0I,KAAanoB,EAChD,MAAM,IAAIi4J,EAAaa,WAAW,oDAAoD94J,QAAUuB,KAC3FC,UAAU/B,MAAWw4J,EAAagB,YAAY+C,oBAEvD,MACJ,IAAK,QACD,GAA4B,UAAxBv8J,EAAM,eAA6C,QAAhB48J,GAAyC,WAAhBA,EAC5D,MAAM,IAAIpE,EAAaa,WAAW,iEAAiE94J,QAAUq8J,KAAgBpE,EAAagB,YAAYqD,sBAE1J,GAA2B,iBAAhBD,EACP,MAAM,IAAIpE,EAAaa,WAAW,kDAAkDv3J,KAAKC,UAAUg6J,MAAevD,EAAagB,YAAYqD,sBAE/I,KAAoB,QAAhBD,GAAyC,WAAhBA,GACF,IAAnB3B,GAA0C,UAAhB2B,GACP,IAAnB3B,GAA0C,UAAhB2B,GACP,MAAnBA,EAAY,IAAe9lD,EAAOxhF,KAAKulI,WAAW+B,IACtD,MAAM,IAAIpE,EAAaa,WAAW,oDAAoD94J,QAAUq8J,KAAgBpE,EAAagB,YAAYqD,sBAE7I,MACJ,IAAK,WACD,GAA2B,iBAAhBD,GAA4B58J,EAAM,QAAUA,EAAM,SAAW48J,EACpE,MAAM,IAAIpE,EAAaa,WAAW,uDAAuD94J,OAC9Hq8J,WAAqB58J,EAAM,UAAWw4J,EAAagB,YAAYsD,0BAE9B,GAAI,UAAW98J,EACX,MAAM,IAAIw4J,EAAaa,WAAW,iDAAiD94J,KAAQi4J,EAAagB,YAAYsD,0BAExH,MACJ,IAAK,aACD,GAAuB,IAAnB7B,IACI/5J,OAAOD,KAAK27J,GAAav7J,OAAS,GAC/By1G,EAAOxhF,KAAKynI,eAAenzJ,QAAQ1I,OAAOD,KAAK27J,GAAa,IAAM,GACrE,MAAM,IAAIpE,EAAaa,WAAW,gCAAgC94J,QAAUW,OAAOD,KAAK27J,oCAC9G9lD,EAAOxhF,KAAKynI,eAAe53J,KAAK,QAASqzJ,EAAagB,YAAYwD,2BAGpD,IAAK,MAAM3B,KAAkBn6J,OAAOD,KAAK27J,GAAc,CACnD,GAAuB,UAAnBvB,GAA8Br7J,EAAM,YACpC,MAAM,IAAIw4J,EAAaa,WAAW,6EAA6E94J,KAAQi4J,EAAagB,YAAYsD,0BAEpJ,GAAIhmD,EAAOxhF,KAAK2nI,WAAWrzJ,QAAQyxJ,GAAkB,EACjD,MAAM,IAAI7C,EAAaa,WAAW,gCAAgC94J,QAAU86J,uBACvGvkD,EAAOxhF,KAAK2nI,WAAW93J,KAAK,QAASqzJ,EAAagB,YAAYwD,0BAE3C,CACA,MACJ,IAAK,YACD7iD,EAAc++C,iBAAiB0D,GAAa,EAAMpE,EAAagB,YAAY0D,0BAC3E,MACJ,IAAK,aACD/iD,EAAco/C,kBAAkBqD,GAAa,GAC7C,MACJ,IAAK,UACD,GAAoB,OAAhBA,GAA+C,kBAAhBA,EAC/B,MAAM,IAAIpE,EAAaa,WAAW,8CAA8C94J,QAAUuB,KAAKC,UAAU/B,MAAWw4J,EAAagB,YAAY2D,sBAEjJ,KAAM,QAASn9J,KAAW82G,EAAOxhF,KAAKulI,WAAWt6J,GAC7C,MAAM,IAAIi4J,EAAaa,WAAW,mCAAmC94J,QAAUuB,KAAKC,UAAU/B,MAAWw4J,EAAagB,YAAYiB,yBAEtI,MACJ,IAAK,SACD,GAAuB,IAAnBQ,IAA2Bj7J,EAAM,gBAAkBA,EAAM,cAAc,UACvE,MAAM,IAAIw4J,EAAaa,WAAW,gDAAgD94J,QAAUuB,KAAKC,UAAU/B,MAAWw4J,EAAagB,YAAYiB,yBAEnJ,MACJ,IAAK,QACD,GAAI3jD,EAAOxhF,KAAKwkI,mBAAmB8C,IAAgC,UAAhBA,EAC/C,MAAM,IAAIpE,EAAaa,WAAW,0CAA0C94J,QAAUuB,KAAKC,UAAU/B,MAAWw4J,EAAagB,YAAY4D,oBAGzJ,CACA,MACJ,QACI,MAAM,IAAI5E,EAAaa,WAAW,iCAAiC94J,QAAUP,KAAUw4J,EAAagB,YAAYiB,yBAGhI,CACJ,CAQA,cAAA4C,CAAe30I,EAAS9hB,EAAS02J,GAE7B,MAAuB,iBAAZ50I,IAIP40I,KAAuB,UAAW50I,IAAY9hB,EAAQ22J,eAClB,iBAA1B32J,EAAQ22J,eAA8B,UAAW32J,EAAQ22J,gBACnE70I,EAAQ,SAAW9hB,EAAQ22J,cAAc,SACrC32J,EAAQ22J,cAAc,qBACtB70I,EAAQ,oBAAqB,IAIjC9hB,EAAQkvC,UAAYlvC,EAAQ42J,WACtB,UAAW90I,EAKa,OAArBA,EAAQ,UAAiD,iBAArBA,EAAQ,UAC7CouF,EAAOxhF,KAAKulI,WAAWnyI,EAAQ,YAEnCA,EAAQ,UAAW,EAAIqzD,EAA2Bn2E,SAAS8iB,EAAQ,SAAU9hB,EAAQ22J,eAAiB32J,EAAQ22J,cAAc,UAAY32J,EAAQkvC,WANhJptB,EAAQ,SAAW9hB,EAAQkvC,QAC3BptB,EAAQ,oBAAqB,KAf1BA,CAwBf,CAOA,mBAAA+0I,CAAoBC,EAAY5nH,GAC5B,IAAKghE,EAAOxhF,KAAKulI,WAAW6C,GACxB,IACIA,GAAa,EAAI3hF,EAA2Bn2E,SAAS83J,EAAY5nH,EACrE,CACA,MAAOlxC,GACH,MAAM,IAAI/C,MAAM,wBAAwB67J,IAC5C,CAMJ,OAHI59J,KAAKm5J,wBAA0ByE,EAAW7oI,WAAW,uBACrD6oI,EAAa,uBAEVA,CACX,CASA,wBAAMC,CAAmBj1I,EAAS9hB,EAAS3F,GACvC,IAAK,MAAMV,KAAQU,QAAmCA,EAAOC,OAAOD,KAAKynB,GAAW,CAChF,MAAM1oB,EAAQ0oB,EAAQnoB,GACtB,GAAIP,GAA0B,iBAAVA,GACZ,aAAcA,GAA+B,OAAtBA,EAAM,cAAyB4G,EAAQg3J,qBAAsB,CAMpF,GAAI99J,KAAK+4J,gBACL,IACI,MAAM0E,EAAgBr8J,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGoT,GAAU,CAAE,CAACnoB,GAAMW,OAAOoU,OAAO,CAAC,EAAGoT,EAAQnoB,aAC5Fg9J,EAAch9J,GAAK,kBACpBT,KAAKiN,MAAM/M,EAAM,YAAakB,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG1O,GAAU,CAAE42J,UAAU,EAAOD,gBAAeM,kBAAkB,EAAMC,4BAA4B,EAAMF,sBAAsB,IACpM,CACA,MAAO33J,GACH,MAAM,IAAIuyJ,EAAaa,WAAWpzJ,EAAE4I,QAAS2pJ,EAAagB,YAAYuE,uBAC1E,CAEJr1I,EAAQnoB,GAAOW,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGtV,GAAQ,CAAE,kBAAmBF,KAAKiN,MAAM/M,EAAM,YAAakB,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG1O,GAAU,CAAE42J,UAAU,EAAOQ,mBAAmB,EAAMF,4BAA4B,EAAMP,cAAe70I,MACxOqzF,iBACb,CAER,CACA,OAAOrzF,CACX,CACA,WAAM3b,CAAM2b,EAAS9hB,EAAU,CAAC,EAGhCq3J,EAAkB,CAAC,GACf,MAAM,QAAEnoH,EAAO,cAAEynH,EAAa,SAAEC,EAAQ,eAAEvC,EAAiB9gD,EAAc+jD,wBAAuB,sBAAEhD,EAAqB,iBAAE2C,EAAgB,kBAAEG,GAAuBp3J,EAC5Ju3J,EAAiBv3J,EAAQu3J,gBAAkB,CAAC,EAElD,GAAIj9J,OAAOD,KAAKk9J,GAAgB98J,QAAUvB,KAAKk5J,yBAC3C,MAAM,IAAIR,EAAaa,WAAW,sDAAwDn4J,OAAOD,KAAKk9J,GAAiB3F,EAAagB,YAAY4E,kBAEpJ,GAAI11I,QAA2C,CAE3C,IAAKm1I,GAAoBN,GAAiBzmD,EAAOxhF,KAAK+oI,kBAAkBd,GACpE,MAAM,IAAI/E,EAAaa,WAAW,yDAA0Db,EAAagB,YAAY8E,+BAGzH,OAAO,IAAI5F,EAA0B+D,wBAAwB38J,KAAKu9J,eAAe,CAAC,EAAGz2J,GAAS,GAClG,CACK,GAAuB,iBAAZ8hB,EAAsB,CAClC,MAAMg1I,EAAa59J,KAAK29J,oBAAoB/0I,EAASotB,GAC/CyoH,EAAiBz+J,KAAK0+J,kBAAkBd,EAAY92J,GAC1D,GAAI23J,EACA,OAAO,IAAI7F,EAA0B+D,wBAAwB8B,GAEjE,MAAME,QAA4B3+J,KAAKiN,YAAYjN,KAAK4+J,KAAKhB,GAAax8J,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG1O,GAAU,CAAEkvC,QAAS4nH,EAAYF,UAAU,EAAMW,eAAgBj9J,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG6oJ,GAAiB,CAAE,CAACT,IAAa,OAE5O,OADA59J,KAAKu9J,eAAeoB,EAAoB1iD,gBAAiBn1G,GAAS,GAC3D63J,CACX,CACK,GAAIh0J,MAAMC,QAAQge,GAAU,CAE7B,MAAMi2I,EAAc,GACdz6F,QAAiBv+D,QAAQ4rB,IAAI7I,EAAQzjB,KAAI,CAAC4vC,EAAY1zC,KACxD,GAA0B,iBAAf0zC,EAAyB,CAChC,MAAM6oH,EAAa59J,KAAK29J,oBAAoB5oH,EAAYiB,GACxD6oH,EAAYx9J,GAAKu8J,EAEjB,OADuB59J,KAAK0+J,kBAAkBd,EAAY92J,IAInD9G,KAAK4+J,KAAKhB,EACrB,CAEI,OAAO7oH,CACX,KAGJ,GAAImpH,EACA,OAAO,IAAItF,EAA0B+D,wBAAwBv4F,GAEjE,MAAM06F,QAAwB16F,EAASpnC,QAAO,CAAC+hI,EAAmBz9C,EAAcjgH,IAAM09J,EACjFz4J,MAAM04J,GAAeh/J,KAAKiN,MAAMq0G,EAAclgH,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG1O,GAAU,CAAEkvC,QAAS6oH,EAAYx9J,IAAMyF,EAAQkvC,QAAS0nH,WAAYmB,EAAYx9J,IAAMyF,EAAQ42J,SAAUD,cAAeuB,EAAW/iD,gBAAiBoiD,eAAgBQ,EAAYx9J,GAAKD,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG6oJ,GAAiB,CAAE,CAACQ,EAAYx9J,KAAK,IAAUg9J,IAEtV,CACIrF,eAAgB33J,EAAI+iE,EAAS7iE,OAAS,OACrCsE,QAAQC,QAAQ,IAAI8yJ,EAA0B+D,wBAAwBc,GAAiB,CAAC,KAG7F,OADAz9J,KAAKu9J,eAAeuB,EAAgB7iD,gBAAiBn1G,GAAS,GACvDg4J,CACX,CACK,GAAuB,iBAAZl2I,EAAsB,CAClC,GAAI,aAAcA,EACd,aAAa5oB,KAAKiN,MAAM2b,EAAQ,YAAa9hB,GAcjD,GAXA8hB,EAAUxnB,OAAOoU,OAAO,CAAC,EAAGoT,GAExB80I,UACO90I,EAAQ,SAGnB5oB,KAAKu9J,eAAe30I,EAAS9hB,GAAS,GAGtC9G,KAAKs7J,iBAAiB1yI,GAElBs1I,EACA,OAAO,IAAItF,EAA0B+D,wBAAwB/zI,GAGjE,IAAIq2I,EAAgB,CAAC,EACrB,GAAI,YAAar2I,EAAS,CACtB,KAAIuyI,GAAkB,KAUlB,MAAM,IAAIzC,EAAaa,WAAW,oDAAqDb,EAAagB,YAAY4C,uBARhH,GAAkC,iBAAvB1zI,EAAQ,WACf,MAAM,IAAI8vI,EAAaa,WAAW,qDAAuD3wI,EAAQ,WAAY8vI,EAAagB,YAAYwF,sBAG1ID,QAAsBj/J,KAAKm/J,kBAAkBn/J,KAAK29J,oBAAoB/0I,EAAQ,WAAYotB,WACnFptB,EAAQ,UAKvB,CACA5oB,KAAKw7J,qBAAqByD,EAAe,CAAE9D,kBAAkBvC,EAA0BwG,sBACvF,MAAMC,EAAaj+J,OAAOoU,OAAOypJ,EAAer2I,GAEhD5oB,KAAK65J,kBAAkBwF,GACvBr/J,KAAKk7J,UAAUmE,EAAY,CAAElE,iBAAgBC,0BAC7Cp7J,KAAKw7J,qBAAqB6D,EAAY,CAAElE,kBAAkBvC,EAA0BwG,sBACpF,MAAMj+J,EAAOC,OAAOD,KAAKk+J,GACnBC,EAAkB,GACxB,GAA6B,iBAAlB7B,EAEP,IAAK,MAAMh9J,KAAOg9J,EACVh9J,KAAO4+J,EACPC,EAAgB/7J,KAAK9C,GAGrB4+J,EAAW5+J,GAAOg9J,EAAch9J,SAKtCT,KAAK69J,mBAAmBwB,EAAYv4J,EAAS3F,GACnD,MAAMo+J,EAAoB,IAAI3G,EAA0B+D,wBAAwB0C,GAoBhF,OAlBKA,GAAcA,EAAW,aAAehlD,EAAc+jD,0BAA4B,MAC9Ex1I,EAAQ,WAA0C,iBAAtBA,EAAQ,WAAiD,KAAtBA,EAAQ,aACxE60I,GAAiB,WAAYA,GAAiB70I,EAAQ,UAAU9e,QAAQ,KAAO,EAC/Eu1J,EAAW,UAAY5B,EAAc,UAAY70I,EAAQ,WAEpDouF,EAAOxhF,KAAKonI,aAAah0I,EAAQ,YAAcA,EAAQ,YAAay2I,KAEzEA,EAAW,UAAYE,EAAkB7jD,WAAW9yF,EAAQ,WAAW,KAG/E5oB,KAAKi6J,oBAAoBsF,EAAmBv/J,KAAKi5J,wBAAyB93J,IAErE48J,GAAoBN,GAAiBtC,GAAkB,KACxDn7J,KAAK47J,6BAA6B6B,EAAe4B,EAAYzG,EAA0BwG,qBAAsBE,GAE7Gt/J,KAAK+4J,kBAAoBoF,EAAgBnF,gBACzCh5J,KAAKg8J,SAASqD,EAAY,CAAElE,mBAEzBoE,CACX,CAEI,MAAM,IAAI7G,EAAaa,WAAW,0EAA0E3wI,IAAW8vI,EAAagB,YAAY8F,sBAExJ,CAMA,UAAMZ,CAAKl3J,GAEP,MAAM+qF,EAASzyF,KAAK84J,cAAcpxJ,GAClC,GAAI+qF,EACA,OAAOA,EAGX,IAAI0mB,EACJ,IACIA,QAAiBn5G,KAAK2jE,eAAei7F,KAAKl3J,EAC9C,CACA,MAAOvB,GACH,MAAM,IAAIuyJ,EAAaa,WAAW,iCAAiC7xJ,MAAQvB,EAAE4I,UAAW2pJ,EAAagB,YAAY+F,8BACrH,CAEA,KAAM,aAActmD,GAChB,MAAM,IAAIu/C,EAAaa,WAAW,yCAAyC7xJ,IAAOgxJ,EAAagB,YAAYgG,wBAE/G,OAAO1/J,KAAK84J,cAAcpxJ,GAAOyxG,EAAS,WAC9C,CAUA,iBAAAulD,CAAkBh3J,EAAKZ,GACnB,GAAIY,KAAQZ,EAAQu3J,gBAAkB,CAAC,GAAI,CACvC,GAAIv3J,EAAQk3J,2BACR,OAAOt2J,EAGP,MAAM,IAAIgxJ,EAAaa,WAAW,0CAA4C7xJ,EAAKgxJ,EAAagB,YAAYiG,4BAEpH,CACA,OAAO,IACX,CAKA,uBAAMR,CAAkBS,GAEpB,IAAIX,QAAsBj/J,KAAK4+J,KAAKgB,GAEpC,GAA6B,iBAAlBX,GAA8Bt0J,MAAMC,QAAQq0J,GACnD,MAAM,IAAIvG,EAAaa,WAAW,gDAAkDqG,EAAkBlH,EAAagB,YAAYgG,wBAGnI,GAAI,YAAaT,EACb,MAAM,IAAIvG,EAAaa,WAAW,uDAAyDqG,EAAkBlH,EAAagB,YAAY4C,uBAM1I,OAJA2C,EAAgB79J,OAAOoU,OAAO,CAAC,EAAGypJ,GAGlCj/J,KAAKs7J,iBAAiB2D,GACfA,CACX,EAEJ5kD,EAAc+jD,wBAA0B,IACxCl6J,EAAQm2G,cAAgBA,8BCnwBxBj5G,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQw1J,YAAcx1J,EAAQq1J,gBAAa,EAO3C,MAAMA,UAAmBx3J,MAErB,WAAAiN,CAAYD,EAAS7N,GACjBme,MAAMtQ,GACN/O,KAAKkB,KAAOA,CAChB,EASJ,IAAWw4J,EAPXx1J,EAAQq1J,WAAaA,GAOVG,EAwDMx1J,EAAQw1J,cAAgBx1J,EAAQw1J,YAAc,CAAC,IAvD5B,mBAAI,qBACpCA,EAAiC,oBAAI,sBACrCA,EAAgC,mBAAI,qBACpCA,EAA8B,iBAAI,oBAClCA,EAAiC,oBAAI,uBACrCA,EAAgC,mBAAI,sBACpCA,EAAkC,qBAAI,wBACtCA,EAAqC,wBAAI,2BACzCA,EAAmC,sBAAI,yBACvCA,EAAkC,qBAAI,wBACtCA,EAAmC,sBAAI,yBACvCA,EAA8B,iBAAI,mBAClCA,EAAuC,0BAAI,4BAC3CA,EAAmC,sBAAI,wBACvCA,EAA2C,8BAAI,gCAC/CA,EAAsC,yBAAI,2BAC1CA,EAAoC,uBAAI,0BACxCA,EAAiC,oBAAI,sBACrCA,EAAkC,qBAAI,uBACtCA,EAAmC,sBAAI,wBACvCA,EAAwC,2BAAI,6BAC5CA,EAAsC,yBAAI,2BAC1CA,EAA4C,+BAAI,iCAChDA,EAA2C,8BAAI,gCAC/CA,EAAmC,sBAAI,wBACvCA,EAAoC,uBAAI,yBACxCA,EAAsC,yBAAI,2BAC1CA,EAA0C,6BAAI,+BAC9CA,EAA4C,+BAAI,iCAChDA,EAAoC,uBAAI,yBACxCA,EAAoC,uBAAI,yBACxCA,EAAwC,2BAAI,6BAC5CA,EAAqC,wBAAI,0BACzCA,EAAkC,qBAAI,uBACtCA,EAAgC,mBAAI,qBACpCA,EAAiC,oBAAI,sBACrCA,EAAkC,qBAAI,uBACtCA,EAAwC,2BAAI,6BAC5CA,EAAmC,sBAAI,wBACvCA,EAAsC,yBAAI,2BAC1CA,EAAkC,qBAAI,uBACtCA,EAAqC,wBAAI,0BACzCA,EAA2C,8BAAI,gCAC/CA,EAA2C,8BAAI,gCAC/CA,EAAsC,yBAAI,2BAC1CA,EAAyC,4BAAI,8BAC7CA,EAA8B,iBAAI,mBAClCA,EAAoC,uBAAI,yBACxCA,EAAyC,4BAAI,8BAC7CA,EAAyC,4BAAI,8BAI7CA,EAAmC,sBAAI,wBACvCA,EAAgC,mBAAI,mDC7ExCt4J,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ20J,yBAAsB,EAC9B,EAAQ,OACR,MAAMH,EAAe,EAAQ,OACvBmH,EAAqB,EAAQ,OAC7B5jF,EAA6B,EAAQ,MAmD3C/3E,EAAQ20J,oBA/CR,MACI,WAAA7pJ,CAAY8wJ,GACR9/J,KAAK8/J,QAAUA,CACnB,CACA,UAAMlB,CAAKl3J,GACP,MAAMgH,QAAkB1O,KAAK8/J,SAAWl4J,OAAOF,EAAK,CAAE+C,QAAS,IAAID,QAAQ,CAAEu1J,OAAQ,0BACrF,GAAIrxJ,EAASH,IAAMG,EAASjE,QAAS,CACjC,IAAIkf,EAAYjb,EAASjE,QAAQnD,IAAI,gBACrC,GAAIqiB,EAAW,CACX,MAAMq2I,EAAWr2I,EAAU7f,QAAQ,KAC/Bk2J,EAAW,IACXr2I,EAAYA,EAAUs8D,OAAO,EAAG+5E,GAExC,CACA,GAAkB,wBAAdr2I,EAEA,aAAcjb,EAAS7G,OAIvB,GAAI6G,EAASjE,QAAQ0C,IAAI,QAAS,CAC9B,IAAI8yJ,EAcJ,GAbAvxJ,EAASjE,QAAQC,SAAQ,CAACxK,EAAOO,KAC7B,GAAY,SAARA,EAAgB,CAChB,MAAMy/J,GAAa,EAAIL,EAAmB5yJ,OAAO/M,GACjD,IAAK,MAAM+lD,KAAQi6G,EAAW54J,IAAI,OAAQ,uBACtC,GAAiB,cAAb2+C,EAAKstF,IAAqB,CAC1B,GAAI0sB,EACA,MAAM,IAAIl+J,MAAM,kDAAoD2F,GAExEu4J,GAAe,EAAIhkF,EAA2Bn2E,SAASmgD,EAAKp/C,IAAKa,EACrE,CAER,KAEAu4J,EACA,OAAOjgK,KAAK4+J,KAAKqB,EAEzB,CACA,MAAM,IAAIvH,EAAaa,WAAW,kCAAkC5vI,IAAa+uI,EAAagB,YAAYyG,wBAElH,CAEI,MAAM,IAAIp+J,MAAM2M,EAASF,YAAc,gBAAgBE,EAASJ,SAExE,+BCtDJlN,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,gCCCtDkB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,kCCDtDkB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQk7J,qBAAuBl7J,EAAQy4J,6BAA0B,EACjE,MAAM1gF,EAA6B,EAAQ,MACrCy8E,EAAe,EAAQ,OACvB1hD,EAAS,EAAQ,OAiKvB9yG,EAAQy4J,wBA7JR,MACI,WAAA3tJ,CAAYkrJ,GACRl6J,KAAKk6J,WAAaA,CACtB,CAIA,aAAAj+C,GACI,OAAOj8G,KAAKk6J,UAChB,CAsBA,UAAAx+C,CAAWrnF,EAAM+rI,EAAat5J,EAAU5C,EAAQk7J,sBAC5C,MAAM3jD,EAAez7G,KAAKk6J,WAAW7lI,GAErC,GAAqB,OAAjBonF,GAA0BA,GAAwC,OAAxBA,EAAa,OACvD,OAAO,KAGX,IAAI4kD,GAAkB,EACtB,GAAI5kD,GAAgB2kD,EAAa,CAC7B,MAAMlgK,EAAQ82G,EAAOxhF,KAAKilI,kBAAkBh/C,GAC5C,GAAIv7G,GAASA,IAAUm0B,EAAM,CACzB,GAAqB,iBAAVn0B,IAAwB82G,EAAOxhF,KAAKulI,WAAW76J,IAAW82G,EAAOxhF,KAAKskI,eAAe55J,IAO5F,OAAOA,EALF82G,EAAOxhF,KAAKwkI,mBAAmB95J,KAChCmgK,GAAkB,EAM9B,CACJ,CAEA,MAAMn5J,EAAS8vG,EAAOxhF,KAAKgnI,UAAUnoI,EAAMr0B,KAAKk6J,YAC1CoG,EAAQtgK,KAAKk6J,WAAW,UACxBqG,KAAmBD,GAAmB,KAAVA,IAAiBA,EAAMx2J,QAAQ,KAAO,EAClEosC,EAAOl2C,KAAKk6J,WAAW,SACvBsG,EAAmBxpD,EAAOxhF,KAAKwkI,mBAAmB3lI,GACxD,GAAIntB,EAAQ,CACR,MAAMu5J,EAAqBzgK,KAAKk6J,WAAWhzJ,GACrChH,EAAQ82G,EAAOxhF,KAAKilI,kBAAkBgG,GAC5C,GAAIvgK,EAAO,CACP,GAAkC,iBAAvBugK,GAAoC35J,EAAQ45J,oBAWnD,GAAiB,MAAbxgK,EAAM,KAAesgK,IAAqBC,EAAmB,cAAgBpsI,KAAQr0B,KAAKk6J,YAE1F,OAAO7lI,OATX,IAAK2iF,EAAOxhF,KAAKmmI,6BAA6Bz7J,EAAO4G,GAEjD,OAAOutB,EAUf,OAAOn0B,EAAQm0B,EAAK4xD,OAAO/+E,EAAO3F,OAAS,EAC/C,CACJ,KACK,IAAI6+J,IAAiBE,GAAmB,KAAVA,GAAkBx5J,EAAQ65J,0BAA6BzqH,GAAQqqH,KAC1FC,IAAqBxpD,EAAOxhF,KAAKonI,aAAavoI,GAAO,CACzD,GAAIksI,EAAe,CACf,GAAIz5J,EAAQ65J,yBACR,OAASL,GAASpqH,GAAQ,EAAI+lC,EAA2Bn2E,SAASw6J,EAAOpqH,GAAQ,IAAM7hB,EAGvF,MAAM,IAAIqkI,EAAaa,WAAW,sCAAsCllI,kBAAqBisI,qBAA0B5H,EAAagB,YAAYwC,sBAExJ,CAEI,OAAOoE,EAAQjsI,CAEvB,CACK,IAAK+rI,GAAelqH,IAASsqH,IAAqBxpD,EAAOxhF,KAAKonI,aAAavoI,GAC5E,OAAO,EAAI4nD,EAA2Bn2E,SAASuuB,EAAM6hB,EACzD,CAEA,GAAImqH,EACA,OAAOhsI,EAGP,MAAM,IAAIqkI,EAAaa,WAAW,gDAAgDllI,QAAWryB,KAAKC,UAAUw5G,MAAkBi9C,EAAagB,YAAYK,oBAE/J,CAWA,UAAA6G,CAAW17H,EAAKo7H,GAEZ,GAAIA,GAAStgK,KAAKk6J,WAAW,WAAah1H,EAAInQ,WAAW/0B,KAAKk6J,WAAW,WACrE,OAAOh1H,EAAI+gD,OAAOjmF,KAAKk6J,WAAW,UAAU34J,QAGhD,IAAK++J,GAAStgK,KAAKk6J,WAAW,UAAYh1H,EAAInQ,WAAW/0B,KAAKk6J,WAAW,UACrE,OAAOh1H,EAAI+gD,OAAOjmF,KAAKk6J,WAAW,SAAS34J,QAK/C,MAAMs/J,EAAoB,CAAE35J,OAAQ,GAAIw1F,OAAQx3D,GAChD,IAAK,MAAMzkC,KAAOT,KAAKk6J,WAAY,CAC/B,MAAMh6J,EAAQF,KAAKk6J,WAAWz5J,GAC9B,GAAIP,IAAU82G,EAAOxhF,KAAKwkI,mBAAmBv5J,GAAM,CAC/C,MAAMm9J,EAAa5mD,EAAOxhF,KAAKilI,kBAAkBv6J,GACjD,GAAIglC,EAAInQ,WAAW6oI,GAAa,CAC5B,MAAMlhE,EAASx3D,EAAI+gD,OAAO23E,EAAWr8J,QACrC,GAAKm7F,EAMIA,EAAOn7F,OAASs/J,EAAkBnkE,OAAOn7F,SAE9Cs/J,EAAkB35J,OAASzG,EAC3BogK,EAAkBnkE,OAASA,QAR3B,GAAI4jE,EAEA,OAAO7/J,CAQnB,CACJ,CACJ,CAEA,OAAIogK,EAAkB35J,OACX25J,EAAkB35J,OAAS,IAAM25J,EAAkBnkE,OAEvDx3D,CACX,GAGJhhC,EAAQk7J,qBAAuB,CAC3BsB,oBAAoB,EACpBI,yBAAyB,EACzBH,0BAA0B,+BCzK9Bv/J,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQsxB,UAAO,EACf,MAAMA,EAOF,mBAAOonI,CAAavoI,GAChB,OAAOA,EAAKvqB,QAAQ,KAAO,KAAOuqB,GAAoB,MAAZA,EAAK,GACnD,CAQA,gBAAOmoI,CAAUnoI,EAAMzL,GAEnB,GAAIyL,GAAoB,MAAZA,EAAK,GACb,OAAO,KAEX,MAAM0sI,EAAe1sI,EAAKvqB,QAAQ,KAClC,GAAIi3J,GAAgB,EAAG,CAEnB,GAAI1sI,EAAK9yB,OAASw/J,EAAe,GACQ,MAAlC1sI,EAAKsmE,OAAOomE,EAAe,IACO,MAAlC1sI,EAAKsmE,OAAOomE,EAAe,GAC9B,OAAO,KAEX,MAAM75J,EAASmtB,EAAK4xD,OAAO,EAAG86E,GAE9B,GAAe,MAAX75J,EACA,OAAO,KAGX,GAAI0hB,EAAQ1hB,GACR,OAAOA,CAEf,CACA,OAAO,IACX,CAMA,wBAAOuzJ,CAAkBh/C,GACrB,GAAqB,OAAjBA,GAAiD,iBAAjBA,EAChC,OAAOA,EAGX,OADWA,EAAa,QACP,IACrB,CAOA,mCAAOkgD,CAA6Bz7J,EAAO4G,GACvC,OAAQ0uB,EAAKwkI,mBAAmB95J,KACxB4G,EAAQg6J,yBAA6C,iBAAV5gK,IAAoC,MAAbA,EAAM,IAAcs1B,EAAKwrI,8BAA8B9gK,IACrI,CAMA,yBAAO85J,CAAmBiH,GACtB,MAA0B,iBAAZA,GAAwBzrI,EAAK0rI,cAAcj3J,KAAKg3J,EAClE,CAMA,oCAAOD,CAA8BG,GACjC,OAAO3rI,EAAK4rI,oBAAoBn3J,KAAKk3J,EACzC,CAMA,oBAAOvG,CAAc16J,GACjB,OAAOA,IAA2B,iBAAVA,GAAuBA,GAA0B,iBAAVA,EACnE,CAMA,iBAAO66J,CAAW71H,GACd,OAAO8C,QAAQ9C,GAAO1P,EAAK6rI,UAAUp3J,KAAKi7B,GAC9C,CAMA,qBAAOw3H,CAAex3H,GAClB,QAASA,GAAkB,MAAXA,EAAI,IAAc1P,EAAK8rI,eAAer3J,KAAKi7B,EAC/D,CAMA,qBAAO40H,CAAemH,GAClB,OAAOzrI,EAAK+rI,eAAeN,EAC/B,CAOA,sBAAOvF,CAAgB9yI,EAASnoB,GAC5B,MAAMP,EAAQ0oB,EAAQnoB,GACtB,QAA0B,iBAAVP,IAAuBA,GAASA,EAAM,aAC1D,CAMA,wBAAOq+J,CAAkB31I,GACrB,IAAK,MAAMnoB,KAAOW,OAAOD,KAAKynB,GAC1B,GAAI4M,EAAKkmI,gBAAgB9yI,EAASnoB,GAC9B,OAAO,EAGf,OAAO,CACX,CAKA,gCAAO25J,CAA0B35J,GAC7B,OAAOA,EAAIs0B,WAAW,MAC1B,CAMA,gBAAOs5H,CAAU1a,EAASC,GACtB,MAAM4tB,EAAWpgK,OAAOD,KAAKwyI,GACvB8tB,EAAWrgK,OAAOD,KAAKyyI,GAC7B,OAAI4tB,EAASjgK,SAAWkgK,EAASlgK,QAE1BigK,EAASn/H,OAAO5hC,IACnB,MAAMihK,EAAS/tB,EAAQlzI,GACjBkhK,EAAS/tB,EAAQnzI,GACvB,OAAQihK,IAAWC,GAAuB,OAAXD,GAChB,OAAXC,GACkB,iBAAXD,GACW,iBAAXC,GACP3hK,KAAKquJ,UAAUqT,EAAQC,EAAQ,GAE3C,EAIJnsI,EAAK6rI,UAAY,6DAEjB7rI,EAAK8rI,eAAiB,eAEtB9rI,EAAK0rI,cAAgB,aAErB1rI,EAAK4rI,oBAAsB,eAE3B5rI,EAAKgkI,mBAAqB,8BAE1BhkI,EAAKokI,oBAAsB,gBAG3BpkI,EAAK+rI,eAAiB,CAClB,eAAe,EACf,SAAS,EACT,cAAc,EACd,YAAY,EACZ,cAAc,EACd,UAAU,EACV,OAAO,EACP,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACZ,UAAU,GAGd/rI,EAAK2kI,sBAAwB,CACzB,QACA,SACA,YACA,WACA,cAGJ3kI,EAAK8kI,uBAAyB,CAC1B,aACA,SACA,MACA,SACA,QACA,QACA,QACA,UACA,WACA,OACA,QACA,SACA,YAGJ9kI,EAAKglI,sBAAwB,CACzB,WACA,aAGJhlI,EAAK2nI,WAAa,CACd,QACA,OACA,SACA,YACA,SACA,MACA,SAGJ3nI,EAAKynI,eAAiB,CAClB,QACA,OACA,UAEJ/4J,EAAQsxB,KAAOA,qBC5Pf,SAAUtsB,IAEO,SAAWhF,GAE1B,IAAIoF,EACY,oBAAqBJ,EADjCI,EAEQ,WAAYJ,GAAQ,aAAcK,OAF1CD,EAIA,eAAgBJ,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIM,MACG,CACT,CAAE,MAAOrD,GACP,OAAO,CACT,CACD,CAPD,GANAmD,EAcQ,aAAcJ,EAdtBI,EAeW,gBAAiBJ,EAOhC,GAAII,EACF,IAAIG,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFC,YAAYC,QACZ,SAASC,GACP,OAAOA,GAAOJ,EAAYK,QAAQ1I,OAAOM,UAAUF,SAASmH,KAAKkB,KAAS,CAC5E,EAGJ,SAASE,EAAcC,GAIrB,GAHoB,iBAATA,IACTA,EAAO9H,OAAO8H,IAEZ,4BAA4BC,KAAKD,GACnC,MAAM,IAAIE,UAAU,0CAEtB,OAAOF,EAAK1E,aACd,CAEA,SAAS6E,EAAejK,GAItB,MAHqB,iBAAVA,IACTA,EAAQgC,OAAOhC,IAEVA,CACT,CAGA,SAASkK,EAAYC,GACnB,IAAIC,EAAW,CACbpE,KAAM,WACJ,IAAIhG,EAAQmK,EAAME,QAClB,MAAO,CAAClE,UAAgBlG,IAAVD,EAAqBA,MAAOA,EAC5C,GASF,OANIoJ,IACFgB,EAASf,OAAOe,UAAY,WAC1B,OAAOA,CACT,GAGKA,CACT,CAEA,SAASE,EAAQC,GACfzK,KAAKmF,IAAM,CAAC,EAERsF,aAAmBD,EACrBC,EAAQC,SAAQ,SAASxK,EAAO8J,GAC9BhK,KAAK+I,OAAOiB,EAAM9J,EACpB,GAAGF,MACM2K,MAAMC,QAAQH,GACvBA,EAAQC,SAAQ,SAASG,GACvB7K,KAAK+I,OAAO8B,EAAO,GAAIA,EAAO,GAChC,GAAG7K,MACMyK,GACTrJ,OAAO0J,oBAAoBL,GAASC,SAAQ,SAASV,GACnDhK,KAAK+I,OAAOiB,EAAMS,EAAQT,GAC5B,GAAGhK,KAEP,CA8DA,SAAS+K,EAASC,GAChB,GAAIA,EAAKC,SACP,OAAOpF,QAAQE,OAAO,IAAImE,UAAU,iBAEtCc,EAAKC,UAAW,CAClB,CAEA,SAASC,EAAgBC,GACvB,OAAO,IAAItF,SAAQ,SAASC,EAASC,GACnCoF,EAAOC,OAAS,WACdtF,EAAQqF,EAAOtH,OACjB,EACAsH,EAAOE,QAAU,WACftF,EAAOoF,EAAOhI,MAChB,CACF,GACF,CAEA,SAASmI,EAAsBC,GAC7B,IAAIJ,EAAS,IAAIK,WACbC,EAAUP,EAAgBC,GAE9B,OADAA,EAAOO,kBAAkBH,GAClBE,CACT,CAmBA,SAASE,EAAYpJ,GACnB,GAAIA,EAAIiC,MACN,OAAOjC,EAAIiC,MAAM,GAEjB,IAAIoH,EAAO,IAAIC,WAAWtJ,EAAIS,YAE9B,OADA4I,EAAKE,IAAI,IAAID,WAAWtJ,IACjBqJ,EAAK9J,MAEhB,CAEA,SAASiK,IA0FP,OAzFA/L,KAAKiL,UAAW,EAEhBjL,KAAKgM,UAAY,SAAShB,GAhM5B,IAAoBnB,EAiMhB7J,KAAKiM,UAAYjB,EACZA,EAEsB,iBAATA,EAChBhL,KAAKkM,UAAYlB,EACR1B,GAAgBE,KAAK9H,UAAUyK,cAAcnB,GACtDhL,KAAKoM,UAAYpB,EACR1B,GAAoB+C,SAAS3K,UAAUyK,cAAcnB,GAC9DhL,KAAKsM,cAAgBtB,EACZ1B,GAAwBiD,gBAAgB7K,UAAUyK,cAAcnB,GACzEhL,KAAKkM,UAAYlB,EAAKxJ,WACb8H,GAAuBA,IA5MlBO,EA4M6CmB,IA3MjDwB,SAAS9K,UAAUyK,cAActC,IA4M3C7J,KAAKyM,iBAAmBd,EAAYX,EAAKlJ,QAEzC9B,KAAKiM,UAAY,IAAIzC,KAAK,CAACxJ,KAAKyM,oBACvBnD,IAAwBK,YAAYjI,UAAUyK,cAAcnB,IAAStB,EAAkBsB,IAChGhL,KAAKyM,iBAAmBd,EAAYX,GAEpChL,KAAKkM,UAAYlB,EAAO5J,OAAOM,UAAUF,SAASmH,KAAKqC,GAhBvDhL,KAAKkM,UAAY,GAmBdlM,KAAKyK,QAAQnD,IAAI,kBACA,iBAAT0D,EACThL,KAAKyK,QAAQqB,IAAI,eAAgB,4BACxB9L,KAAKoM,WAAapM,KAAKoM,UAAUM,KAC1C1M,KAAKyK,QAAQqB,IAAI,eAAgB9L,KAAKoM,UAAUM,MACvCpD,GAAwBiD,gBAAgB7K,UAAUyK,cAAcnB,IACzEhL,KAAKyK,QAAQqB,IAAI,eAAgB,mDAGvC,EAEIxC,IACFtJ,KAAKuL,KAAO,WACV,IAAInF,EAAW2E,EAAS/K,MACxB,GAAIoG,EACF,OAAOA,EAGT,GAAIpG,KAAKoM,UACP,OAAOvG,QAAQC,QAAQ9F,KAAKoM,WACvB,GAAIpM,KAAKyM,iBACd,OAAO5G,QAAQC,QAAQ,IAAI0D,KAAK,CAACxJ,KAAKyM,oBACjC,GAAIzM,KAAKsM,cACd,MAAM,IAAIvK,MAAM,wCAEhB,OAAO8D,QAAQC,QAAQ,IAAI0D,KAAK,CAACxJ,KAAKkM,YAE1C,EAEAlM,KAAK2M,YAAc,WACjB,OAAI3M,KAAKyM,iBACA1B,EAAS/K,OAAS6F,QAAQC,QAAQ9F,KAAKyM,kBAEvCzM,KAAKuL,OAAOjF,KAAKgF,EAE5B,GAGFtL,KAAK4D,KAAO,WACV,IA3FoB2H,EAClBJ,EACAM,EAyFErF,EAAW2E,EAAS/K,MACxB,GAAIoG,EACF,OAAOA,EAGT,GAAIpG,KAAKoM,UACP,OAjGkBb,EAiGIvL,KAAKoM,UA/F3BX,EAAUP,EADVC,EAAS,IAAIK,YAEjBL,EAAOyB,WAAWrB,GACXE,EA8FE,GAAIzL,KAAKyM,iBACd,OAAO5G,QAAQC,QA5FrB,SAA+BvD,GAI7B,IAHA,IAAIqJ,EAAO,IAAIC,WAAWtJ,GACtBsK,EAAQ,IAAIlC,MAAMiB,EAAKrK,QAElBF,EAAI,EAAGA,EAAIuK,EAAKrK,OAAQF,IAC/BwL,EAAMxL,GAAKa,OAAOC,aAAayJ,EAAKvK,IAEtC,OAAOwL,EAAMxH,KAAK,GACpB,CAoF6ByH,CAAsB9M,KAAKyM,mBAC7C,GAAIzM,KAAKsM,cACd,MAAM,IAAIvK,MAAM,wCAEhB,OAAO8D,QAAQC,QAAQ9F,KAAKkM,UAEhC,EAEI5C,IACFtJ,KAAK+M,SAAW,WACd,OAAO/M,KAAK4D,OAAO0C,KAAK0G,EAC1B,GAGFhN,KAAK6H,KAAO,WACV,OAAO7H,KAAK4D,OAAO0C,KAAKtE,KAAKiL,MAC/B,EAEOjN,IACT,CA3MAwK,EAAQ9I,UAAUqH,OAAS,SAASiB,EAAM9J,GACxC8J,EAAOD,EAAcC,GACrB9J,EAAQiK,EAAejK,GACvB,IAAIgN,EAAWlN,KAAKmF,IAAI6E,GACxBhK,KAAKmF,IAAI6E,GAAQkD,EAAWA,EAAW,KAAOhN,EAAQA,CACxD,EAEAsK,EAAQ9I,UAAkB,OAAI,SAASsI,UAC9BhK,KAAKmF,IAAI4E,EAAcC,GAChC,EAEAQ,EAAQ9I,UAAU4F,IAAM,SAAS0C,GAE/B,OADAA,EAAOD,EAAcC,GACdhK,KAAKmN,IAAInD,GAAQhK,KAAKmF,IAAI6E,GAAQ,IAC3C,EAEAQ,EAAQ9I,UAAUyL,IAAM,SAASnD,GAC/B,OAAOhK,KAAKmF,IAAIuD,eAAeqB,EAAcC,GAC/C,EAEAQ,EAAQ9I,UAAUoK,IAAM,SAAS9B,EAAM9J,GACrCF,KAAKmF,IAAI4E,EAAcC,IAASG,EAAejK,EACjD,EAEAsK,EAAQ9I,UAAUgJ,QAAU,SAAS0C,EAAU3H,GAC7C,IAAK,IAAIuE,KAAQhK,KAAKmF,IAChBnF,KAAKmF,IAAIuD,eAAesB,IAC1BoD,EAASzE,KAAKlD,EAASzF,KAAKmF,IAAI6E,GAAOA,EAAMhK,KAGnD,EAEAwK,EAAQ9I,UAAUP,KAAO,WACvB,IAAIkJ,EAAQ,GAIZ,OAHArK,KAAK0K,SAAQ,SAASxK,EAAO8J,GAC3BK,EAAM9G,KAAKyG,EACb,IACOI,EAAYC,EACrB,EAEAG,EAAQ9I,UAAU2L,OAAS,WACzB,IAAIhD,EAAQ,GAIZ,OAHArK,KAAK0K,SAAQ,SAASxK,GACpBmK,EAAM9G,KAAKrD,EACb,IACOkK,EAAYC,EACrB,EAEAG,EAAQ9I,UAAU4L,QAAU,WAC1B,IAAIjD,EAAQ,GAIZ,OAHArK,KAAK0K,SAAQ,SAASxK,EAAO8J,GAC3BK,EAAM9G,KAAK,CAACyG,EAAM9J,GACpB,IACOkK,EAAYC,EACrB,EAEIf,IACFkB,EAAQ9I,UAAU6H,OAAOe,UAAYE,EAAQ9I,UAAU4L,SAqJzD,IAAIC,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAO3D,SAASC,EAAQC,EAAO3G,GAEtB,IAPuB4G,EACnBC,EAMA3C,GADJlE,EAAUA,GAAW,CAAC,GACHkE,KAEnB,GAAIyC,aAAiBD,EAAS,CAC5B,GAAIC,EAAMxC,SACR,MAAM,IAAIf,UAAU,gBAEtBlK,KAAK0H,IAAM+F,EAAM/F,IACjB1H,KAAK4N,YAAcH,EAAMG,YACpB9G,EAAQ2D,UACXzK,KAAKyK,QAAU,IAAID,EAAQiD,EAAMhD,UAEnCzK,KAAK0N,OAASD,EAAMC,OACpB1N,KAAKU,KAAO+M,EAAM/M,KAClBV,KAAK6N,OAASJ,EAAMI,OACf7C,GAA2B,MAAnByC,EAAMxB,YACjBjB,EAAOyC,EAAMxB,UACbwB,EAAMxC,UAAW,EAErB,MACEjL,KAAK0H,IAAMxF,OAAOuL,GAYpB,GATAzN,KAAK4N,YAAc9G,EAAQ8G,aAAe5N,KAAK4N,aAAe,eAC1D9G,EAAQ2D,SAAYzK,KAAKyK,UAC3BzK,KAAKyK,QAAU,IAAID,EAAQ1D,EAAQ2D,UAErCzK,KAAK0N,QAhCDC,GADmBD,EAiCO5G,EAAQ4G,QAAU1N,KAAK0N,QAAU,OAhC1CtI,cACdmI,EAAQzD,QAAQ6D,IAAY,EAAIA,EAAUD,GAgCjD1N,KAAKU,KAAOoG,EAAQpG,MAAQV,KAAKU,MAAQ,KACzCV,KAAK6N,OAAS/G,EAAQ+G,QAAU7N,KAAK6N,OACrC7N,KAAK8N,SAAW,MAEK,QAAhB9N,KAAK0N,QAAoC,SAAhB1N,KAAK0N,SAAsB1C,EACvD,MAAM,IAAId,UAAU,6CAEtBlK,KAAKgM,UAAUhB,EACjB,CAMA,SAASgC,EAAOhC,GACd,IAAI+C,EAAO,IAAI1B,SAYf,OAXArB,EACGgD,OACAhJ,MAAM,KACN0F,SAAQ,SAASuD,GAChB,GAAIA,EAAO,CACT,IAAIjJ,EAAQiJ,EAAMjJ,MAAM,KACpBgF,EAAOhF,EAAMuF,QAAQ2D,QAAQ,MAAO,KACpChO,EAAQ8E,EAAMK,KAAK,KAAK6I,QAAQ,MAAO,KAC3CH,EAAKhF,OAAOoF,mBAAmBnE,GAAOmE,mBAAmBjO,GAC3D,CACF,IACK6N,CACT,CAoBA,SAASK,EAASC,EAAUvH,GACrBA,IACHA,EAAU,CAAC,GAGb9G,KAAK0M,KAAO,UACZ1M,KAAKsO,YAA4BnO,IAAnB2G,EAAQwH,OAAuB,IAAMxH,EAAQwH,OAC3DtO,KAAKuO,GAAKvO,KAAKsO,QAAU,KAAOtO,KAAKsO,OAAS,IAC9CtO,KAAKwO,WAAa,eAAgB1H,EAAUA,EAAQ0H,WAAa,KACjExO,KAAKyK,QAAU,IAAID,EAAQ1D,EAAQ2D,SACnCzK,KAAK0H,IAAMZ,EAAQY,KAAO,GAC1B1H,KAAKgM,UAAUqC,EACjB,CAlDAb,EAAQ9L,UAAU+M,MAAQ,WACxB,OAAO,IAAIjB,EAAQxN,KAAM,CAACgL,KAAMhL,KAAKiM,WACvC,EAkCAF,EAAKpD,KAAK6E,EAAQ9L,WAgBlBqK,EAAKpD,KAAKyF,EAAS1M,WAEnB0M,EAAS1M,UAAU+M,MAAQ,WACzB,OAAO,IAAIL,EAASpO,KAAKiM,UAAW,CAClCqC,OAAQtO,KAAKsO,OACbE,WAAYxO,KAAKwO,WACjB/D,QAAS,IAAID,EAAQxK,KAAKyK,SAC1B/C,IAAK1H,KAAK0H,KAEd,EAEA0G,EAASjL,MAAQ,WACf,IAAIuL,EAAW,IAAIN,EAAS,KAAM,CAACE,OAAQ,EAAGE,WAAY,KAE1D,OADAE,EAAShC,KAAO,QACTgC,CACT,EAEA,IAAIC,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CP,EAASQ,SAAW,SAASlH,EAAK4G,GAChC,IAA0C,IAAtCK,EAAiB7E,QAAQwE,GAC3B,MAAM,IAAIO,WAAW,uBAGvB,OAAO,IAAIT,EAAS,KAAM,CAACE,OAAQA,EAAQ7D,QAAS,CAACqE,SAAUpH,IACjE,EAEAxD,EAAQmF,aAAeH,EAAKG,aAC5B,IACE,IAAInF,EAAQmF,YACd,CAAE,MAAOzH,GACPsC,EAAQmF,aAAe,SAAS0F,EAAS/E,GACvChK,KAAK+O,QAAUA,EACf/O,KAAKgK,KAAOA,EACZ,IAAI7G,EAAQpB,MAAMgN,GAClB/O,KAAKW,MAAQwC,EAAMxC,KACrB,EACAuD,EAAQmF,aAAa3H,UAAYN,OAAO2G,OAAOhG,MAAML,WACrDwC,EAAQmF,aAAa3H,UAAUsN,YAAc9K,EAAQmF,YACvD,CAEA,SAASzB,EAAM6F,EAAOwB,GACpB,OAAO,IAAIpJ,SAAQ,SAASC,EAASC,GACnC,IAAImJ,EAAU,IAAI1B,EAAQC,EAAOwB,GAEjC,GAAIC,EAAQrB,QAAUqB,EAAQrB,OAAOsB,QACnC,OAAOpJ,EAAO,IAAI7B,EAAQmF,aAAa,UAAW,eAGpD,IAAI+F,EAAM,IAAIC,eAEd,SAASC,IACPF,EAAIG,OACN,CAEAH,EAAIhE,OAAS,WACX,IAxFgBoE,EAChB/E,EAuFI3D,EAAU,CACZwH,OAAQc,EAAId,OACZE,WAAYY,EAAIZ,WAChB/D,SA3Fc+E,EA2FQJ,EAAIK,yBAA2B,GA1FvDhF,EAAU,IAAID,EAGQgF,EAAWtB,QAAQ,eAAgB,KACzClJ,MAAM,SAAS0F,SAAQ,SAASgF,GAClD,IAAIC,EAAQD,EAAK1K,MAAM,KACnBvE,EAAMkP,EAAMpF,QAAQyD,OACxB,GAAIvN,EAAK,CACP,IAAIP,EAAQyP,EAAMtK,KAAK,KAAK2I,OAC5BvD,EAAQ1B,OAAOtI,EAAKP,EACtB,CACF,IACOuK,IAgFH3D,EAAQY,IAAM,gBAAiB0H,EAAMA,EAAIQ,YAAc9I,EAAQ2D,QAAQnD,IAAI,iBAC3E,IAAI0D,EAAO,aAAcoE,EAAMA,EAAIV,SAAWU,EAAIS,aAClD/J,EAAQ,IAAIsI,EAASpD,EAAMlE,GAC7B,EAEAsI,EAAI/D,QAAU,WACZtF,EAAO,IAAImE,UAAU,0BACvB,EAEAkF,EAAIU,UAAY,WACd/J,EAAO,IAAImE,UAAU,0BACvB,EAEAkF,EAAIW,QAAU,WACZhK,EAAO,IAAI7B,EAAQmF,aAAa,UAAW,cAC7C,EAEA+F,EAAIY,KAAKd,EAAQxB,OAAQwB,EAAQxH,KAAK,GAEV,YAAxBwH,EAAQtB,YACVwB,EAAIa,iBAAkB,EACW,SAAxBf,EAAQtB,cACjBwB,EAAIa,iBAAkB,GAGpB,iBAAkBb,GAAO9F,IAC3B8F,EAAIc,aAAe,QAGrBhB,EAAQzE,QAAQC,SAAQ,SAASxK,EAAO8J,GACtCoF,EAAIe,iBAAiBnG,EAAM9J,EAC7B,IAEIgP,EAAQrB,SACVqB,EAAQrB,OAAOuC,iBAAiB,QAASd,GAEzCF,EAAIiB,mBAAqB,WAEA,IAAnBjB,EAAIkB,YACNpB,EAAQrB,OAAO0C,oBAAoB,QAASjB,EAEhD,GAGFF,EAAIoB,UAAkC,IAAtBtB,EAAQjD,UAA4B,KAAOiD,EAAQjD,UACrE,GACF,CAEArE,EAAM6I,UAAW,EAEZvH,EAAKtB,QACRsB,EAAKtB,MAAQA,EACbsB,EAAKsB,QAAUA,EACftB,EAAKsE,QAAUA,EACftE,EAAKkF,SAAWA,GAGlBlK,EAAQsG,QAAUA,EAClBtG,EAAQsJ,QAAUA,EAClBtJ,EAAQkK,SAAWA,EACnBlK,EAAQ0D,MAAQA,EAEhBxG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,GAIvD,CAhhBgB,CAghBd,CAAC,EACH,CAnhBD,CAmhBmB,oBAATgJ,KAAuBA,KAAOlJ,0CClhBxC,IAAI8H,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B3B,OAAO+C,eAAe6D,EAAGE,EAAI,CAAEb,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,GACnF,EAAI,SAAUiF,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAA2BtE,GAChDsE,EAAa,EAAQ,MAAetE,iCCZpC9C,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ2zD,sBAAmB,EAC3B,MAAMmiD,EAA0B,EAAQ,OAClC4nD,EAAkB,EAAQ,OAC1B5qD,EAAS,EAAQ,MACjB93F,EAAoB,EAAQ,OAIlC,MAAM24C,UAAyB34C,EAAkB2iJ,UAC7C,WAAA7yJ,CAAYlI,EAAU,CAAC,GACnBuY,MAAM,CAAEyiJ,YAAY,IACpB9hK,KAAKwzH,YAAc,EACnBxzH,KAAK8G,QAAUA,EAEX9G,KAAK8G,QAAQkvC,UAAYh2C,KAAK8G,QAAQ8hB,UACtC5oB,KAAK8G,QAAQ8hB,QAAU,CAAE,QAAS5oB,KAAK8G,QAAQkvC,UAE/Ch2C,KAAK8G,QAAQ8hB,SACb5oB,KAAK+hK,gBAAkB/hK,KAAK8G,QAAQ8hB,QACpC5oB,KAAK4oB,SAAU,IAAIoxF,EAAwBK,eAAgBptG,MAAMjN,KAAK8G,QAAQ8hB,QAAS,CAAEotB,QAASh2C,KAAK8G,QAAQkvC,WAG/Gh2C,KAAK4oB,QAAU/iB,QAAQC,QAAQ,IAAIk0G,EAAwB2iD,wBAAwB,CAAC,GAE5F,CAMA,MAAAl1G,CAAOroC,GACH,MAAMyZ,EAAS,IAAI3Z,EAAkB8iJ,YAAY,CAAEF,YAAY,IAC/D1iJ,EAAOrE,GAAG,SAAU5X,GAAUyZ,EAAOlZ,KAAK,QAASP,KACnDic,EAAOrE,GAAG,QAAS6E,GAASiZ,EAAOt1B,KAAKqc,KACxCR,EAAOrE,GAAG,OAAO,IAAM8d,EAAOt1B,KAAK,QACnC,MAAMqZ,EAASic,EAAOm/B,KAAK,IAAIH,EAAiB73D,KAAK8G,UACrD,OAAO8V,CACX,CAQA,UAAAmlD,CAAWrtC,EAAMja,EAAUrN,GACvBpN,KAAK4oB,QAAQtiB,MAAMsiB,IACf5oB,KAAKiiK,cAAcvtI,EAAM9L,GACzBxb,GAAU,IACXw+B,MAAMx+B,EACb,CAQA,UAAMq8F,CAAKp8F,GACP,MAAMub,QAAgB5oB,KAAK4oB,QAC3B,MAAO,CACH,QAASvb,EAAOlI,KAAKjF,GAAU82G,EAAOxhF,KAAK0sI,YAAYhiK,EAAO0oB,EAAS5oB,KAAK8G,WAEpF,CAMA,MAAA+nC,CAAOzhC,GAeH,OAbKpN,KAAKmiK,QACNniK,KAAKoiK,oBAELpiK,KAAKqiK,eACLriK,KAAKsiK,eAELtiK,KAAKuiK,aACLviK,KAAKwiK,aAELxiK,KAAKyiK,WAAyC,iBAA5BziK,KAAKyiK,UAAUj1I,UACjCxtB,KAAK0iK,WAET1iK,KAAK2iK,cACEv1J,EAAS,KAAM,KAC1B,CAMA,aAAA60J,CAAcvtI,EAAM9L,GAEX5oB,KAAKmiK,QACNniK,KAAKoiK,oBAIT,MAAMQ,EAA0B5iK,KAAKyiK,WAAyC,iBAA5BziK,KAAKyiK,UAAUj1I,UAC1DxtB,KAAKyiK,UAAU/hI,OAAOhM,EAAK3J,SAElC,KAAK63I,GAA6B5iK,KAAKyiK,WAAc/tI,EAAK9I,MAAM8U,OAAO1gC,KAAKyiK,YAAa,CAGrF,IAAII,EAAkD,iBAAxBnuI,EAAK9I,MAAM4B,UAClCxtB,KAAKuiK,aAAeviK,KAAKuiK,YAAY7hI,OAAOhM,EAAK9I,OACpD5rB,KAAKyiK,YAC2B,iBAA5BziK,KAAKyiK,UAAUj1I,UAEfxtB,KAAKsiK,eACLtiK,KAAKwiK,aACLxiK,KAAK0iK,UAAS,GACdG,GAA0B,GAIrBA,GAKD7iK,KAAKsiK,cAAa,GAClBtiK,KAAKuiK,YAAc,OALnBviK,KAAKsiK,eACLtiK,KAAKwiK,YAAW,KASA,iBAAxB9tI,EAAK9I,MAAM4B,WACNq1I,GACD7iK,KAAK8iK,OAAOpuI,EAAK9I,OAAO,EAAMhD,GAElC5oB,KAAK+iK,cAAc/iK,KAAK8G,QAAQgxD,MAC1B8pG,EAAgBoB,cAAcC,uBAAyBrB,EAAgBoB,cAAcE,qBAC3FljK,KAAKwzH,eAETxzH,KAAKyiK,UAAY/tI,EAAK9I,KAC1B,CAEK5rB,KAAKuiK,aAAgB7tI,EAAK3J,QAAQ2V,OAAO1gC,KAAKuiK,eAC3CK,GACA5iK,KAAKsiK,eACLtiK,KAAKwiK,aACLxiK,KAAKwzH,cACLxzH,KAAK+iK,cAAcnB,EAAgBoB,cAAcG,iBACjDnjK,KAAKyiK,UAAY/tI,EAAK9I,QAGlB5rB,KAAKuiK,cACLviK,KAAKsiK,eACLtiK,KAAKwiK,YAAW,IAGpBxiK,KAAK8iK,OAAOpuI,EAAK3J,SAAS,EAAMnC,IAEpC5oB,KAAKuiK,YAAc7tI,EAAK3J,SAGvB/qB,KAAKqiK,eAAkB3tI,EAAK9J,UAAU8V,OAAO1gC,KAAKqiK,iBAC/CriK,KAAKqiK,eACLriK,KAAKsiK,cAAa,GAGtBtiK,KAAKojK,cAAc1uI,EAAK9J,UAAWhC,IAGvC5oB,KAAKqjK,WAAW3uI,EAAK1J,OAAQpC,EACjC,CACA,iBAAAw5I,GACIpiK,KAAKmiK,QAAS,EACVniK,KAAK+hK,kBAAoB/hK,KAAK8G,QAAQw8J,gBACtCtjK,KAAK+iK,cAAcnB,EAAgBoB,cAAcO,cACjDvjK,KAAKwzH,cACLxzH,KAAK+iK,cAAcnB,EAAgBoB,cAAcQ,eACjDxjK,KAAKyjK,aAAazhK,KAAKC,UAAUjC,KAAK+hK,gBAAiB,KAAM/hK,KAAK8G,QAAQgxD,OAAS,KACnF93D,KAAK+iK,cAAc/iK,KAAK8G,QAAQgxD,MAC1B8pG,EAAgBoB,cAAcC,uBAAyBrB,EAAgBoB,cAAcE,qBAC3FljK,KAAKwzH,gBAGLxzH,KAAK+iK,cAAcnB,EAAgBoB,cAAcU,aACjD1jK,KAAKwzH,cAEb,CAOA,MAAAsvC,CAAOzuI,EAAMsvI,EAAgB/6I,GACzB,GAAsB,SAAlByL,EAAK7G,SACLxtB,KAAK4jK,eAAevvI,GAAM,EAAMzL,OAE/B,CACD,MAAMi7I,EAAiC,cAAlBxvI,EAAK7G,SACpB,KAAO6G,EAAKn0B,MAAQ0oB,EAAQg4I,WAAWvsI,EAAKn0B,OAAO,GACrDyjK,EACA3jK,KAAK+iK,cAAcnB,EAAgBoB,cAAcO,eAGjDvjK,KAAKuD,KAAKq+J,EAAgBoB,cAAcO,aAAallH,OACjDr+C,KAAK8G,QAAQgxD,OACb93D,KAAKuD,KAAK,OAGlBvD,KAAKwzH,cACLxzH,KAAKyjK,aAAazjK,KAAK8G,QAAQgxD,MAAQ,WAAW+rG,MAAmB,UAAUA,MACnF,CACJ,CAMA,aAAAT,CAAcx4I,EAAWhC,GACrB,IAAIk7I,EAAWl5I,EAAU1qB,MAEpBF,KAAK8G,QAAQi9J,YAAcD,IAAa9sD,EAAOxhF,KAAKwuI,WACrDF,EAAW,QACX9jK,KAAKikK,cAAgB7iK,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGxV,KAAK8G,SAAU,CAAEo9J,YAAY,EAAM5D,OAAO,KAGnG,MAAM6D,EAAoBv7I,EAAQg4I,WAAWkD,GAAU,GACvD9jK,KAAKyjK,aAAazjK,KAAK8G,QAAQgxD,MAAQ,IAAIqsG,QAA0B,IAAIA,QACzEnkK,KAAKwzH,cACLxzH,KAAKqiK,cAAgBz3I,CACzB,CAMA,UAAAy4I,CAAWr4I,EAAQpC,GASf,GAPK5oB,KAAKokK,sBAINpkK,KAAK+iK,cAAcnB,EAAgBoB,cAAc1lK,OAHjD0C,KAAKokK,uBAAwB,EAMT,SAApBp5I,EAAOwC,SAAqB,CAC5B,MAAM62I,EAAkBrkK,KAAKuiK,YACvB+B,EAAoBtkK,KAAKqiK,cAO/B,OANAriK,KAAKokK,uBAAwB,EAC7BpkK,KAAK4jK,eAAe54I,GAAQ,EAAOpC,GACnC5oB,KAAKwiK,YAAW,GAChBxiK,KAAKokK,uBAAwB,EAC7BpkK,KAAKqiK,cAAgBiC,OACrBtkK,KAAKuiK,YAAc8B,EAEvB,CAEA,IAAInkK,EACJ,IAEQA,EADA8qB,EAAO,SACCA,EAGAgsF,EAAOxhF,KAAK0sI,YAAYl3I,EAAQpC,EAAS5oB,KAAKikK,eAAiBjkK,KAAK8G,QAEpF,CACA,MAAOX,GACH,OAAOnG,KAAK0D,KAAK,QAASyC,EAC9B,CACAnG,KAAKyjK,aAAazhK,KAAKC,UAAU/B,EAAO,KAAMF,KAAK8G,QAAQgxD,OAC/D,CACA,cAAA8rG,CAAeW,EAAYC,EAAmB57I,GAE1C5oB,KAAK+iK,cAAcnB,EAAgBoB,cAAcO,cACjDvjK,KAAKwzH,cACLxzH,KAAKyjK,aAAazjK,KAAK8G,QAAQgxD,MAAQ,UAAY,UAAU,GAE3B,iBAA9BysG,EAAW34I,MAAM4B,UACjBxtB,KAAK0D,KAAK,QAAS,IAAI3B,MAAM,mDAAmDwiK,EAAW34I,MAAM1rB,UAErGF,KAAK8iK,OAAOyB,EAAWx5I,SAAS,EAAOnC,GACvC5oB,KAAKojK,cAAcmB,EAAW35I,UAAWhC,GACzC5oB,KAAKqjK,WAAWkB,EAAWv5I,OAAQpC,GACnC5oB,KAAKsiK,cAAa,GAClBtiK,KAAKwiK,WAAWgC,EACpB,CACA,WAAA7B,GACI3iK,KAAKmiK,QAAS,EACVniK,KAAK+hK,kBAAoB/hK,KAAK8G,QAAQw8J,gBACtCtjK,KAAKwzH,cACLxzH,KAAK+iK,cAAcnB,EAAgBoB,cAAcyB,WACjDzkK,KAAKwzH,cACLxzH,KAAK+iK,cAAcnB,EAAgBoB,cAAc0B,cAGjD1kK,KAAKwzH,cACLxzH,KAAK+iK,cAAcnB,EAAgBoB,cAAcyB,WAEzD,CAKA,YAAAnC,CAAaqC,GAET3kK,KAAKwzH,cACLxzH,KAAK+iK,cAAc4B,EAAQ/C,EAAgBoB,cAAcG,gBAAkBvB,EAAgBoB,cAAcyB,WAEzGzkK,KAAKokK,uBAAwB,EAC7BpkK,KAAKikK,cAAgB,KAErBjkK,KAAKqiK,cAAgB,IACzB,CAKA,UAAAG,CAAWmC,GAEP3kK,KAAKwzH,cACLxzH,KAAK+iK,cAAc4B,EAAQ/C,EAAgBoB,cAAc4B,iBAAmBhD,EAAgBoB,cAAc0B,YAE1G1kK,KAAKuiK,YAAc,IACvB,CAKA,QAAAG,CAASiC,GAEL3kK,KAAKwzH,cACLxzH,KAAK+iK,cAAcnB,EAAgBoB,cAAcyB,WAEjDzkK,KAAKwzH,cACLxzH,KAAK+iK,cAAc4B,EAAQ/C,EAAgBoB,cAAc4B,iBAAmBhD,EAAgBoB,cAAc0B,YAE1G1kK,KAAKyiK,UAAY,IACrB,CAKA,aAAAM,CAAcr2J,GACV1M,KAAKyjK,aAAa/2J,EAAK2xC,MAC3B,CAOA,YAAAolH,CAAa7jJ,EAAMilJ,GAAc,GAC7B,MAAM39J,EAASlH,KAAK8kK,kBACd7rH,EAAQr5B,EAAK5a,MAAM,MAAMG,KAAKuK,GAASxI,EAASwI,IAAMrK,KAAK,MACjErF,KAAKuD,KAAK01C,GACNj5C,KAAK8G,QAAQgxD,OAAS+sG,GACtB7kK,KAAKuD,KAAK,KAElB,CAIA,eAAAuhK,GACI,OAAO9kK,KAAK8G,QAAQgxD,MAAQ93D,KAAK8G,QAAQgxD,MAAM16B,OAAOp9B,KAAKwzH,aAAe,EAC9E,EAEJtvH,EAAQ2zD,iBAAmBA,8BC3W3Bz2D,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ8+J,mBAAgB,EAIxB,MAAMA,EACF,WAAAh0J,CAAYqvC,GACRr+C,KAAKq+C,MAAQA,CACjB,EAEJn6C,EAAQ8+J,cAAgBA,EACxBA,EAAc1lK,MAAQ,IAAI0lK,EAAc,KACxCA,EAAcO,aAAe,IAAIP,EAAc,KAC/CA,EAAc0B,WAAa,IAAI1B,EAAc,KAC7CA,EAAc4B,iBAAmB,IAAI5B,EAAc,MACnDA,EAAcU,YAAc,IAAIV,EAAc,KAC9CA,EAAcyB,UAAY,IAAIzB,EAAc,KAC5CA,EAAcG,gBAAkB,IAAIH,EAAc,MAClDA,EAAcC,uBAAyB,IAAID,EAAc,eACzDA,EAAcE,oBAAsB,IAAIF,EAAc,cACtDA,EAAcQ,cAAgB,IAAIR,EAAc,4CCpBhD5hK,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQsxB,UAAO,EACf,MAAMwkF,EAA0B,EAAQ,OAIxC,MAAMxkF,EAQF,kBAAO0sI,CAAY7tI,EAAMzL,EAAS9hB,EAAU,CACxCo9J,YAAY,EACZa,gBAAgB,IAEhB,OAAQ1wI,EAAK7G,UACT,IAAK,YACD,MAAMw3I,EAAYp8I,EAAQg4I,WAAWvsI,EAAKn0B,MAAO4G,EAAQw5J,OACzD,OAAOx5J,EAAQo9J,WAAac,EAAY,CAAE,MAAOA,GACrD,IAAK,eACD,OAAOl+J,EAAQo9J,WAAa7vI,EAAKn0B,MAAQ,CAAE,MAAOm0B,EAAKn0B,OAC3D,IAAK,YACD,MAAMi5C,EAAK,KAAK9kB,EAAKn0B,QACrB,OAAO4G,EAAQo9J,WAAa/qH,EAAK,CAAE,MAAOA,GAC9C,IAAK,UAED,GAAI9kB,EAAKyN,SAAS5hC,QAAUs1B,EAAKyvI,SAAU,CACvC,IAAIC,EACJ,IACIA,EAAaljK,KAAKiL,MAAMonB,EAAKn0B,MACjC,CACA,MAAOiG,GACH,MAAM,IAAI6zG,EAAwBu/C,WAAW,yBAA2BpzJ,EAAE4I,QAASirG,EAAwB0/C,YAAYyL,qBAC3H,CACA,MAAO,CACH,SAAUD,EACV,QAAS,QAEjB,CAEA,GAA6B,kBAAzBp+J,EAAQs+J,cAAoC/wI,EAAKyN,SAAS5hC,MAAM60B,WAAWS,EAAK6vI,MAAO,CACvF,MAAO1uI,EAAUupC,GAAa7rC,EAAKyN,SAAS5hC,MACvC+lF,OAAOzwD,EAAK6vI,KAAK9jK,OAAQ8yB,EAAKyN,SAAS5hC,MAAMqB,QAC7CyD,MAAM,KACX,OAAO5D,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAE,SAAU6e,EAAKn0B,OAASy2B,EAAW,CAAE,YAAaA,GAAa,CAAC,GAAIupC,EAAY,CAAE,aAAcA,GAAc,CAAC,EACxJ,CACA,MAAM+hD,EAAa5tF,EAAKyN,SAAS5hC,QAAUs1B,EAAK87C,WAC1CuqD,EAAW,CACb,UAAW5Z,GAAcn7G,EAAQi+J,eAC3BvvI,EAAK8vI,mBAAmBjxI,EAAKn0B,MAAOm0B,EAAKyN,SAAS5hC,OAASm0B,EAAKn0B,OAE1E,OAAIm0B,EAAKsC,SACEv1B,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGqmH,GAAW,CAAE,YAAaxnG,EAAKsC,WAEhEsrF,GAA4C,iBAAvB4Z,EAAS,UAI7BA,EAHAz6H,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGqmH,GAAW,CAAE,QAASxnG,EAAKyN,SAAS5hC,QAM3F,CAQA,yBAAOolK,CAAmBplK,EAAOwM,GAC7B,GAAIA,EAAKqoB,WAAWS,EAAK+vI,KAErB,OADgB74J,EAAKu5E,OAAOzwD,EAAK+vI,IAAIhkK,SAEjC,IAAK,UACD,GAAc,SAAVrB,EACA,OAAO,EAEN,GAAc,UAAVA,EACL,OAAO,EAEX,MAAM,IAAI6B,MAAM,8BAA8B7B,MAClD,IAAK,UACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,OACD,MAAMslK,EAAYtiK,SAAShD,EAAO,IAClC,GAAI6D,MAAMyhK,GACN,MAAM,IAAIzjK,MAAM,8BAA8B7B,MAElD,OAAOslK,EACX,IAAK,QACL,IAAK,SACD,MAAMC,EAAcC,WAAWxlK,GAC/B,GAAI6D,MAAM0hK,GACN,MAAM,IAAI1jK,MAAM,4BAA4B7B,MAEhD,OAAOulK,EAGnB,OAAOvlK,CACX,EAEJgE,EAAQsxB,KAAOA,EACfA,EAAK+vI,IAAM,oCACX/vI,EAAK87C,WAAa97C,EAAK+vI,IAAM,SAC7B/vI,EAAKmwI,IAAM,8CACXnwI,EAAKwuI,SAAWxuI,EAAKmwI,IAAM,OAC3BnwI,EAAKyvI,SAAWzvI,EAAKmwI,IAAM,OAC3BnwI,EAAK6vI,KAAO,wCC/GZ,SAASp6B,EAAOvoF,EAAKvnC,GACnB,IAAKunC,EACH,MAAM,IAAI3gD,MAAMoZ,GAAO,mBAC3B,CALAlX,EAAOC,QAAU+mI,EAOjBA,EAAOp3B,MAAQ,SAAqBvyG,EAAG+4F,EAAGl/E,GACxC,GAAI7Z,GAAK+4F,EACP,MAAM,IAAIt4F,MAAMoZ,GAAQ,qBAAuB7Z,EAAI,OAAS+4F,EAChE,sgBCVA,MAAMsrE,EAAO,8CACTJ,EAAO,oCACPK,EAAO,kCAEX,GACEC,IAAK,CACH7vF,QAAS,GAAGuvF,WACZO,QAAS,GAAGP,WACZrvF,OAAS,GAAGqvF,UACZj8F,QAAS,GAAGi8F,WACZnlK,OAAS,GAAGmlK,WAEdQ,IAAK,CACHr5J,KAAY,GAAGi5J,QACfxkD,IAAY,GAAGwkD,OACfxpH,MAAY,GAAGwpH,SACfpS,KAAY,GAAGoS,QACf77F,WAAY,GAAG67F,eAEjBK,IAAK,CACHC,OAAQ,wCAEV5rE,EAAG,CACD6rE,QAAS,GAAGN,iBACZO,OAAS,GAAGP,iBAEdtvI,IAAK,CACH8vI,QAAS,GAAGR,kBCvBV,IAAEC,GAAQ,EAGVQ,EAAiB,mDACjBC,EAAqB,CACzB,KAAM,KAAM,IAAK,IAAK,IAAK,IAC3B,EAAK,KAAM,EAAK,KAAM,EAAK,KAAM,EAAK,KAAM,EAAK,KACjD,EAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEzCC,EAAkB,6BAElBC,EAAkB,CACtBC,MAAM,EACNC,eAAe,EACfC,qBAAqB,EACrBC,WAAW,EACXC,QAAQ,EACRC,UAAU,EACVC,UAAU,EACVC,aAAa,EACbC,YAAY,GAERC,EAAgB,MAGP,MAAMC,EACnB,WAAAn4J,CAAYlI,GAwBV,GArBA9G,KAAKymK,KAAO,oCACZzmK,KAAK0mK,cAAgB,0CACrB1mK,KAAK2mK,oBAAsB,2BAC3B3mK,KAAKonK,wBAA0B,2BAC/BpnK,KAAK4mK,UAAY,4CACjB5mK,KAAKqnK,QAAU,6XACfrnK,KAAKsnK,UAAY,qjCACjBtnK,KAAKunK,UAAY,gZACjBvnK,KAAK6mK,OAAS,+ZACd7mK,KAAKwnK,QAAU,kFACfxnK,KAAKynK,SAAW,4CAChBznK,KAAK0nK,SAAW,uBAChB1nK,KAAK2nK,eAAiB,oCACtB3nK,KAAK4nK,iBAAmB,4BACxB5nK,KAAK8mK,SAAW,4CAChB9mK,KAAK+mK,SAAW,cAChB/mK,KAAKgnK,YAAc,UACnBhnK,KAAKinK,WAAa,mBAClBngK,EAAUA,GAAW,CAAC,EAGlB9G,KAAK6nK,YAAc/gK,EAAQghK,SAAU,CACvC9nK,KAAK+nK,SAAU,EAEf,IAAK,MAAMtnK,KAAOT,OACVS,KAAO+lK,IAAoBxmK,KAAKS,aAAgB2oF,SACpDppF,KAAKS,GAAOymK,EAElB,MAGElnK,KAAK+nK,SAAyB,IAAfjhK,EAAQotG,GAGzBl0G,KAAKgoK,YAAclhK,EAAQmhK,SAE3BjoK,KAAKkoK,mBAAqB,CAC5B,CAKA,cAAAC,CAAe/6J,EAAUg7J,GAEvB,IAAI36J,EAAQzN,KAAKqoK,OACbC,EAAoB76J,EAAMlM,OAC9B,OAAa,CAEX,IAAIgnK,EAAiBr0J,EACrB,KAAOq0J,EAAkBvoK,KAAK8mK,SAASz4E,KAAK5gF,IAEtCzN,KAAKgoK,YAAc9zJ,EAAUlU,KAAK+mK,SAAS14E,KAAKk6E,EAAgB,MAClEC,EAAU,UAAWt0J,EAAQ,GAAI,GAAIlU,KAAK66H,MAAO0tC,EAAgB,GAAGhnK,QAEtEkM,EAAQA,EAAMw4E,OAAOsiF,EAAgB,GAAGhnK,OAAQkM,EAAMlM,QACtD+mK,EAAoB76J,EAAMlM,OAC1BvB,KAAK66H,QAOP,IAJK0tC,IAAoBA,EAAkBvoK,KAAKgnK,YAAY34E,KAAK5gF,MAC/DA,EAAQA,EAAMw4E,OAAOsiF,EAAgB,GAAGhnK,OAAQkM,EAAMlM,SAGpDvB,KAAKinK,WAAWh9J,KAAKwD,GASvB,OAPI26J,IAEEpoK,KAAKgoK,YAAc9zJ,EAAUlU,KAAK+mK,SAAS14E,KAAK5gF,KAClD+6J,EAAU,UAAWt0J,EAAQ,GAAI,GAAIlU,KAAK66H,MAAOptH,EAAMlM,QACzDkM,EAAQ,KACR+6J,EAAU,MAAO,GAAI,GAAIxoK,KAAK66H,MAAO,IAEhC76H,KAAKqoK,OAAS56J,EAIvB,MAAMiC,EAAO1P,KAAK66H,MAAO4tC,EAAYh7J,EAAM,GAC3C,IAAIf,EAAO,GAAIxM,EAAQ,GAAIgH,EAAS,GAChClD,EAAQ,KAAM0kK,EAAc,EAAGC,GAAe,EAClD,OAAQF,GACR,IAAK,IAEH,GAAIh7J,EAAMlM,OAAS,EACjB,MAEG,GAAiB,MAAbkM,EAAM,GAUV,CACCzN,KAAK+nK,UACPW,EAAc,EACdh8J,EAAO,KAET,KACF,CAZE,GAHA1M,KAAK4oK,gBAAkB,KAEvBn7J,EAAQA,EAAMw4E,OAAO,GACJ,MAAbx4E,EAAM,GAAY,CACpBk7J,GAAe,EACf,KACF,CAWJ,IAAK,IAEH,GAAI3kK,EAAQhE,KAAK0mK,cAAcr4E,KAAK5gF,GAClCf,EAAO,MAAOxM,EAAQ8D,EAAM,QAEzB,GAAIA,EAAQhE,KAAKymK,KAAKp4E,KAAK5gF,GAAQ,CAEtC,GADAvN,EAAQF,KAAK6oK,UAAU7kK,EAAM,IACf,OAAV9D,GAAkBqmK,EAAgBt8J,KAAK/J,GACzC,OAAO4oK,EAAkB9oK,MAC3B0M,EAAO,KACT,MAESe,EAAMlM,OAAS,GAAkB,MAAbkM,EAAM,IACjCf,EAAO,KAAMg8J,EAAc,GAEpB1oK,KAAK+nK,SAAWt6J,EAAMlM,OAAS,GAAkB,MAAbkM,EAAM,KACjDf,EAAO,UAAWg8J,EAAc,EAAGxoK,EAAQ,KAC7C,MAEF,IAAK,IACCuN,EAAMlM,OAAS,GAAkB,MAAbkM,EAAM,KAC5Bf,EAAO,KAAMg8J,EAAc,GAC7B,MAEF,IAAK,MAIE1kK,EAAQhE,KAAK6mK,OAAOx4E,KAAK5gF,KAC1B26J,IAAkBpkK,EAAQhE,KAAK6mK,OAAOx4E,KAAK,GAAG5gF,UAChDf,EAAO,QAASxF,EAAS,IAAKhH,EAAQ8D,EAAM,IAC9C,MAEF,IAAK,IAEH,GAAIA,EAAQhE,KAAK2mK,oBAAoBt4E,KAAK5gF,GACxCvN,EAAQ8D,EAAM,QAId,KADG9D,QAAOwoK,eAAgB1oK,KAAK+oK,cAAct7J,IAC/B,OAAVvN,EACF,OAAO4oK,EAAkB9oK,MAEf,OAAVgE,GAAkC,IAAhB0kK,IACpBh8J,EAAO,UACP1M,KAAKkoK,mBAAqB,GAE5B,MAEF,IAAK,IACH,IAAKloK,KAAK6nK,UAAW,CAEnB,GAAI7jK,EAAQhE,KAAKonK,wBAAwB/4E,KAAK5gF,GAC5CvN,EAAQ8D,EAAM,QAId,KADG9D,QAAOwoK,eAAgB1oK,KAAK+oK,cAAct7J,IAC/B,OAAVvN,EACF,OAAO4oK,EAAkB9oK,MAEf,OAAVgE,GAAkC,IAAhB0kK,IACpBh8J,EAAO,UACP1M,KAAKkoK,mBAAqB,EAE9B,CACA,MAEF,IAAK,IAECloK,KAAK+nK,UAAY/jK,EAAQhE,KAAKunK,UAAUl5E,KAAK5gF,MAC/Cf,EAAO,MAAOxM,EAAQ8D,EAAM,IAC9B,MAEF,IAAK,IAE0B,YAAzBhE,KAAK4oK,kBAAkC5kK,EAAQhE,KAAK4mK,UAAUv4E,KAAK5gF,KACrEf,EAAO,WAAYxM,EAAQ8D,EAAM,KAE1BA,EAAQhE,KAAK0nK,SAASr5E,KAAK5gF,MAClCf,EAAO1I,EAAM,IACf,MAEF,IAAK,IAEH,GAAqB,IAAjByJ,EAAMlM,OAAe6mK,EAAiB36J,EAAM,GAAK,KAAOA,EAAM,GAAK,IAAM,CAC3Ef,EAAO,IACPg8J,EAAc,EACd,KACF,CAGF,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAIC1kK,EAAQhE,KAAKwnK,QAAQn5E,KAAK5gF,IAC1B26J,IAAkBpkK,EAAQhE,KAAKwnK,QAAQn5E,KAAK,GAAG5gF,UACjDf,EAAO,UAAWxM,EAAQ8D,EAAM,GAChCkD,EAA8B,iBAAblD,EAAM,GAAkB6hK,EAAI3vF,OACd,iBAAblyE,EAAM,GAAkB6hK,EAAI7vF,QAAU6vF,EAAIv8F,SAE9D,MAEF,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAECtlE,EAAQhE,KAAK2nK,eAAet5E,KAAK5gF,IACnCf,EAAO1I,EAAM,GAAGoB,cAEhBujK,GAAe,EACjB,MAEF,IAAK,IACL,IAAK,KAEC3kK,EAAQhE,KAAKynK,SAASp5E,KAAK5gF,KAC7Bf,EAAO,UAAWxM,EAAQ8D,EAAM,GAAIkD,EAAS2+J,EAAIC,SAEjD6C,GAAe,EACjB,MAEF,IAAK,KAEC3kK,EAAQhE,KAAK4nK,iBAAiBv5E,KAAK5gF,KACrCf,EAAO,eAAgBxM,EAAQ,KAE/ByoK,GAAe,EACjB,MAEF,IAAK,IAEC3oK,KAAK+nK,SAAWt6J,EAAMlM,OAAS,IACjCmL,EAAO,eACU,MAAbe,EAAM,IACRi7J,EAAc,EAAGxoK,EAAQ,MAEzBwoK,EAAc,EAAGxoK,EAAQ,MAE7B,MAEF,IAAK,IACH,IAAKF,KAAK+nK,QACR,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACE/nK,KAAK6nK,YACRa,EAAc,EACdh8J,EAAO+7J,GAET,MACF,IAAK,KAEEzoK,KAAK6nK,WAAap6J,EAAMlM,QAAU,IAEpB,MAAbkM,EAAM,IACRf,EAAO,KAAMg8J,EAAc,IAE3Bh8J,EAAO+7J,EAAWC,EAAc,IAEpC,MACF,IAAK,IAGCj7J,EAAMlM,QAAU,GAAkB,MAAbkM,EAAM,KAC7Bf,EAAO,KAAMg8J,EAAc,GAC7B,MAEF,QACEC,GAAe,EAkBjB,GAdIA,IAE4B,YAAzB3oK,KAAK4oK,iBAA0D,WAAzB5oK,KAAK4oK,mBAC3C5kK,EAAQhE,KAAKqnK,QAAQh5E,KAAK5gF,MAKrBzJ,EAAQhE,KAAKsnK,UAAUj5E,KAAK5gF,KAC7B26J,IAAkBpkK,EAAQhE,KAAKsnK,UAAUj5E,KAAK,GAAG5gF,UACxDf,EAAO,WAAYxF,EAASlD,EAAM,IAAM,GAAI9D,EAAQF,KAAK6oK,UAAU7kK,EAAM,MANzE0I,EAAO,SAAUxM,EAAQ8D,EAAM,IAAM,KAUZ,OAAzBhE,KAAK4oK,gBACP,OAAQl8J,GACR,IAAK,WAAYA,EAAO,OAAW,MACnC,IAAK,MAAYA,EAAO,UAAW,MACnC,QAAiBA,EAAO,GAK1B,IAAKA,EAIH,OAAI07J,IAAmB,YAAYn+J,KAAKwD,IAAU,QAAQxD,KAAKwD,GACtDq7J,EAAkB9oK,MAElBA,KAAKqoK,OAAS56J,EAIzB,MAAMlM,EAASmnK,GAAe1kK,EAAM,GAAGzC,OACjC8B,EAAQmlK,EAAU97J,EAAMxM,EAAOgH,EAAQwI,EAAMnO,GACnDvB,KAAKgpK,cAAgB3lK,EACrBrD,KAAK4oK,gBAAkBl8J,EAGvBe,EAAQA,EAAMw4E,OAAO1kF,EAAQkM,EAAMlM,OACrC,CAGA,SAASinK,EAAU97J,EAAMxM,EAAOgH,EAAQwI,EAAMnO,GAC5C,MAAMiB,EAAQiL,EAAQ66J,EAAoB76J,EAAMlM,OAAS+mK,EAEnDjlK,EAAQ,CAAEqJ,OAAMxM,QAAOgH,SAAQwI,OAAMlN,QAAOC,IADtCD,EAAQjB,GAGpB,OADA6L,EAAS,KAAM/J,GACRA,CACT,CAEA,SAASylK,EAAkB5/J,GAAQkE,EAASlE,EAAK2wH,aAAa,OAAOxrC,KAAK5gF,GAAO,IAAM,CACzF,CAGA,SAAAo7J,CAAU1mJ,GACR,IAAI8mJ,GAAU,EACd,MAAMC,EAAW/mJ,EAAKjU,QAAQm4J,GAAgB,CAAC8C,EAAUC,EAAUC,EAAUC,KAE3E,GAAwB,iBAAbF,EACT,OAAOlnK,OAAOC,aAAa2B,OAAOZ,SAASkmK,EAAU,KAEvD,GAAwB,iBAAbC,EAAuB,CAChC,IAAI3tC,EAAW53H,OAAOZ,SAASmmK,EAAU,IACzC,OAAO3tC,GAAY,MAASx5H,OAAOC,aAAa2B,OAAOZ,SAASmmK,EAAU,KACxEnnK,OAAOC,aAAa,QAAWu5H,GAAY,QAAY,IAAK,OAAqB,KAAXA,GAC1E,CAEA,OAAI4tC,KAAehD,EACVA,EAAmBgD,IAE5BL,GAAU,EACH,GAAE,IAEX,OAAOA,EAAU,KAAOC,CAC1B,CAGA,aAAAH,CAAct7J,GAEZ,GAAIA,EAAMlM,QAAU,EAAG,CAErB,MAAMgoK,EAAU97J,EAAMzJ,MAAM,qBAAqB,GAC3CwlK,EAAgBD,EAAQhoK,OAG9B,IAAIkoK,EAAa9kK,KAAKC,IAAI5E,KAAKkoK,mBAAoBsB,GACnD,MAAQC,EAAah8J,EAAM3D,QAAQy/J,EAASE,IAAe,GAAG,CAE5D,IAAIC,EAAiB,EACrB,KAAkD,OAA3Cj8J,EAAMg8J,EAAaC,EAAiB,IACzCA,IAIF,GAAIA,EAAiB,GAAM,EAAG,CAE5B,MAAM/tG,EAAMluD,EAAMwvF,UAAUusE,EAAeC,GACrCxwH,EAAQ0iB,EAAI32D,MAAM,cAAczD,OAAS,EACzCmnK,EAAce,EAAaD,EAEjC,GAAsB,IAAlBA,GAAiC,IAAVvwH,GACL,IAAlBuwH,GAAuBxpK,KAAK6nK,UAC9B,MAEF,OADA7nK,KAAK66H,OAAS5hF,EACP,CAAE/4C,MAAOF,KAAK6oK,UAAUltG,GAAM+sG,cACvC,CACAe,GACF,CACAzpK,KAAKkoK,mBAAqBz6J,EAAMlM,OAASioK,EAAgB,CAC3D,CACA,MAAO,CAAEtpK,MAAO,GAAIwoK,YAAa,EACnC,CAGA,YAAA7uC,CAAa8vC,GACX3pK,KAAKqoK,OAAS,KACd,MAAMzmK,EAAM,IAAIG,MAAM,eAAe4nK,cAAkB3pK,KAAK66H,UAM5D,OALAj5H,EAAIgnB,QAAU,CACZvlB,WAAOlD,EACPuP,KAAM1P,KAAK66H,MACXmuC,cAAehpK,KAAKgpK,eAEfpnK,CACT,CAGA,gBAAAgoK,CAAiBn8J,GACf,OAAOA,EAAMsnB,WAAW,UAAYtnB,EAAMw4E,OAAO,GAAKx4E,CACxD,CAMA,QAAAo8J,CAASp8J,EAAOL,GAId,GAHApN,KAAK66H,MAAQ,EAGQ,iBAAVptH,EAAoB,CAG7B,GAFAzN,KAAKqoK,OAASroK,KAAK4pK,iBAAiBn8J,GAEZ,mBAAbL,EAGN,CACH,MAAM08J,EAAS,GACf,IAAI3mK,EAEJ,GADAnD,KAAKmoK,gBAAe,CAAChiK,EAAGu8F,IAAMv8F,EAAKhD,EAAQgD,EAAK2jK,EAAOvmK,KAAKm/F,KAAI,GAC5Dv/F,EAAO,MAAMA,EACjB,OAAO2mK,CACT,CARE,KAAe,IAAM9pK,KAAKmoK,eAAe/6J,GAAU,IASvD,MAGEpN,KAAK+pK,eAAiB,KACW,mBAAtBt8J,EAAMu8J,aACfv8J,EAAMu8J,YAAY,QAEpBv8J,EAAMsN,GAAG,QAAQ6E,IACK,OAAhB5f,KAAKqoK,QAAmC,IAAhBzoJ,EAAKre,SAE3BvB,KAAK+pK,iBACPnqJ,EAAO7iB,OAAOmqC,OAAO,CAAClnC,KAAK+pK,eAAgBnqJ,IAC3C5f,KAAK+pK,eAAiB,MAGI,IAAxBnqJ,EAAKA,EAAKre,OAAS,GACrBvB,KAAK+pK,eAAiBnqJ,QAKK,IAAhB5f,KAAKqoK,OACdroK,KAAKqoK,OAASroK,KAAK4pK,iBAAiC,iBAAThqJ,EAAoBA,EAAOA,EAAKpe,YAE3ExB,KAAKqoK,QAAUzoJ,EACjB5f,KAAKmoK,eAAe/6J,GAAU,IAElC,IAGFK,EAAMsN,GAAG,OAAO,KACa,iBAAhB/a,KAAKqoK,QACdroK,KAAKmoK,eAAe/6J,GAAU,EAAK,IAEvCK,EAAMsN,GAAG,QAAS3N,EAEtB,EClgBF,MAAM,IAAE24J,EAAKF,IAAG,GAAK,EAGrB,IAAIoE,EACAC,EAAoB,EAExB,MAGM5/I,EAAc,CAClBiK,UAgUF,SAAmB2Q,GACjB,OAAO,IAAIs7C,EAAUt7C,EACvB,EAjUEhQ,UAoUF,SAAmBlrB,GACjB,OAAO,IAAI4+E,EAAU5+E,GAAQ,MAAMkgK,IACrC,EArUEj/I,SAsWF,SAAkBjhB,GAChB,OAAO,IAAI0jE,EAAS1jE,EACtB,EAvWE8xC,QAuUF,SAAiB57C,EAAOiqK,GAEtB,GAAkC,iBAAvBA,EACT,OAAO,IAAIh6F,EAAQ,IAAIjwE,MAAUiqK,EAAmB7kK,iBAGtD,IAAIw8B,EAAWqoI,EAAqBA,EAAmBjqK,MAAQ,GAkB/D,MAjBiB,KAAb4hC,IAEmB,kBAAV5hC,EACT4hC,EAAW,EAAIgkI,QAES,iBAAV5lK,IACV4D,OAAO2qC,SAASvuC,GAClB4hC,EAAWh+B,OAAO89F,UAAU1hG,GAAS,EAAIopE,QAAU,EAAI4M,QAEvDp0C,EAAW,EAAIo0C,OACVpyE,OAAOC,MAAM7D,KAChBA,EAAQA,EAAQ,EAAI,MAAQ,WAMf,KAAb4hC,GAAmBA,IAAa,EAAI1hC,OAC1C,IAAI+vE,EAAQ,IAAIjwE,MAChB,IAAIiwE,EAAQ,IAAIjwE,OAAW4hC,IAC/B,EAjWEmE,aAyWF,WACE,OAAOgkI,CACT,EA1WEv1I,OACAqwD,OAAQrwD,GAEV,IAGO,MAAM84C,EACX,WAAAx+D,CAAYmqC,GACVn5C,KAAKm5C,GAAKA,CACZ,CAGA,SAAIj5C,GACF,OAAOF,KAAKm5C,EACd,CAGA,MAAAzY,CAAOw5B,GAGL,OAAIA,aAAiBsT,EACZxtE,KAAKm5C,KAAO+gB,EAAM/gB,KAElB+gB,GAASl6D,KAAKwtB,WAAa0sC,EAAM1sC,UACxBxtB,KAAKE,QAAag6D,EAAMh6D,KAC5C,CAIA,QAAAy7I,GACE,OAAO,CACT,CAGA,MAAAl3C,GACE,MAAO,CACLj3E,SAAUxtB,KAAKwtB,SACfttB,MAAUF,KAAKE,MAEnB,EAKK,MAAMsgF,UAAkBhT,EAE7B,YAAIhgD,GACF,MAAO,WACT,EAIK,MAAM2iD,UAAgB3C,EAE3B,YAAIhgD,GACF,MAAO,SACT,CAGA,SAAIttB,GACF,OAAOF,KAAKm5C,GAAG8jD,UAAU,EAAGj9F,KAAKm5C,GAAGz0C,YAAY,KAClD,CAGA,YAAIiyB,GAEF,MAAMwiB,EAAKn5C,KAAKm5C,GAChB,IAAIixH,EAAQjxH,EAAGz0C,YAAY,KAAO,EAElC,OAAO0lK,EAAQjxH,EAAG53C,QAA0B,MAAhB43C,EAAGixH,KAAmBjxH,EAAG8sC,OAAOmkF,GAAO9kK,cAAgB,EACrF,CAGA,YAAIw8B,GACF,OAAO,IAAI0+C,EAAUxgF,KAAKqqK,eAC5B,CAGA,kBAAIA,GAEF,MAAMlxH,EAAKn5C,KAAKm5C,GAAImxH,EAAQnxH,EAAGz0C,YAAY,KAAO,EAC5CrC,EAAOioK,EAAQnxH,EAAG53C,OAAS43C,EAAGmxH,GAAS,GAE7C,MAAgB,MAATjoK,EAAe82C,EAAG8sC,OAAOqkF,EAAQ,GAEvB,MAATjoK,EAAe,EAAIjC,OAAS2lK,EAAIj8F,UAC1C,CAGA,MAAAppC,CAAOw5B,GAGL,OAAIA,aAAiBiW,EACZnwE,KAAKm5C,KAAO+gB,EAAM/gB,KAElB+gB,KAAWA,EAAMp4B,UACR9hC,KAAKwtB,WAAa0sC,EAAM1sC,UACxBxtB,KAAKE,QAAag6D,EAAMh6D,OACxBF,KAAK22B,WAAaujC,EAAMvjC,UACxB32B,KAAK8hC,SAAS5hC,QAAUg6D,EAAMp4B,SAAS5hC,KAC3D,CAEA,MAAAukG,GACE,MAAO,CACLj3E,SAAUxtB,KAAKwtB,SACfttB,MAAUF,KAAKE,MACfy2B,SAAU32B,KAAK22B,SACfmL,SAAU,CAAEtU,SAAU,YAAattB,MAAOF,KAAKqqK,gBAEnD,EAIK,MAAMzhF,UAAkBpb,EAC7B,WAAAx+D,CAAYhF,GACVqV,MAAM,KAAKrV,IACb,CAGA,YAAIwjB,GACF,MAAO,WACT,CAGA,SAAIttB,GACF,OAAOF,KAAKm5C,GAAG8sC,OAAO,EACxB,EAGK,MAAMvY,UAAiBF,EAC5B,WAAAx+D,CAAYhF,GACVqV,MAAM,IAAIrV,IACZ,CAGA,YAAIwjB,GACF,MAAO,UACT,CAGA,SAAIttB,GACF,OAAOF,KAAKm5C,GAAG8sC,OAAO,EACxB,EAIK,MAAM+J,UAAqBxiB,EAChC,WAAAx+D,GAEE,OADAqQ,MAAM,IACC4qJ,GAAgBjqK,IACzB,CAGA,YAAIwtB,GACF,MAAO,cACT,CAGA,MAAAkT,CAAOw5B,GAIL,OAAQl6D,OAASk6D,KAAaA,GAAUl6D,KAAKwtB,WAAa0sC,EAAM1sC,QAClE,EAWK,SAAS+8I,EAAWpxH,EAAIvjB,EAAS40I,GAItC,GAHA50I,EAAUA,GAAWtL,GAGhB6uB,EACH,OAAOvjB,EAAQqQ,eAGjB,OAAQkT,EAAG,IACX,IAAK,IACH,OAAOvjB,EAAQ3K,SAASkuB,EAAG8sC,OAAO,IACpC,IAAK,IACH,OAAOrwD,EAAQV,UAAUikB,EAAG8sC,OAAO,IACrC,IAAK,IAEH,GAAIrwD,IAAYtL,EACd,OAAO,IAAI6lD,EAAQh3B,GAErB,GAA0B,MAAtBA,EAAGA,EAAG53C,OAAS,GACjB,OAAOq0B,EAAQkmB,QAAQ3C,EAAG8sC,OAAO,EAAG9sC,EAAG53C,OAAS,IAElD,MAAMkpK,EAAStxH,EAAGz0C,YAAY,IAAKy0C,EAAG53C,OAAS,GAC/C,OAAOq0B,EAAQkmB,QAAQ3C,EAAG8sC,OAAO,EAAGwkF,EAAS,GAClB,MAAnBtxH,EAAGsxH,EAAS,GAAatxH,EAAG8sC,OAAOwkF,EAAS,GACnB70I,EAAQrB,UAAU4kB,EAAG8sC,OAAOwkF,EAAS,KACxE,IAAK,IACHtxH,EAAKn3C,KAAKiL,MAAMksC,GAChB,MACF,QACE,IAAKqxH,IAAW7/J,MAAMC,QAAQuuC,GAC5B,OAAOvjB,EAAQrB,UAAU4kB,GAG7B,OAAOvjB,EAAQlB,KACb61I,EAAWpxH,EAAG,GAAIvjB,GAAS,GAC3B20I,EAAWpxH,EAAG,GAAIvjB,GAAS,GAC3B20I,EAAWpxH,EAAG,GAAIvjB,GAAS,GAC3BujB,EAAG,IAAMoxH,EAAWpxH,EAAG,GAAIvjB,GAAS,GAExC,CAOO,SAAS80I,EAASr2I,EAAMm2I,GAC7B,GAAoB,iBAATn2I,EACT,OAAOA,EACT,GAAIA,aAAgBm5C,GAA0B,SAAlBn5C,EAAK7G,SAC/B,OAAO6G,EAAK8kB,GACd,IAAK9kB,EACH,OAAO41I,EAAa9wH,GAGtB,OAAQ9kB,EAAK7G,UACb,IAAK,YAAgB,OAAO6G,EAAKn0B,MACjC,IAAK,YAAgB,MAAO,KAAKm0B,EAAKn0B,QACtC,IAAK,WAAgB,MAAO,IAAIm0B,EAAKn0B,QACrC,IAAK,eAAgB,MAAO,GAC5B,IAAK,UAAgB,MAAO,IAAIm0B,EAAKn0B,SACnCm0B,EAAKsC,SAAW,IAAItC,EAAKsC,WACtBtC,EAAKyN,UAAYzN,EAAKyN,SAAS5hC,QAAU,EAAIE,OAAS,KAAKi0B,EAAKyN,SAAS5hC,QAAU,KACxF,IAAK,OACH,MAAM6E,EAAM,CACV2lK,EAASr2I,EAAKtJ,SAAS,GACvB2/I,EAASr2I,EAAKzJ,WAAW,GACzB8/I,EAASr2I,EAAKrJ,QAAQ,IAKxB,OAHIqJ,EAAKzI,OAAiC,iBAAxByI,EAAKzI,MAAM4B,UAC3BzoB,EAAIxB,KAAKmnK,EAASr2I,EAAKzI,OAAO,IAEzB4+I,EAASzlK,EAAM/C,KAAKC,UAAU8C,GACvC,QAAS,MAAM,IAAIhD,MAAM,wBAAwBsyB,EAAK7G,YAExD,CAlFAy8I,EAAe,IAAIj6E,EAsFZ,MAAM/K,UAAazX,EACxB,WAAAx+D,CAAY+b,EAASH,EAAWI,EAAQY,GACtCvM,MAAM,IACNrf,KAAK2qK,SAAa5/I,EAClB/qB,KAAK4qK,WAAahgJ,EAClB5qB,KAAK86I,QAAa9vH,EAClBhrB,KAAK6qK,OAAaj/I,GAASq+I,CAC7B,CAGA,YAAIz8I,GACF,MAAO,MACT,CAEA,WAAIzC,GACF,OAAO/qB,KAAK2qK,QACd,CAEA,aAAI//I,GACF,OAAO5qB,KAAK4qK,UACd,CAEA,UAAI5/I,GACF,OAAOhrB,KAAK86I,OACd,CAEA,SAAIlvH,GACF,OAAO5rB,KAAK6qK,MACd,CAGA,MAAApmE,GACE,MAAO,CACLj3E,SAAWxtB,KAAKwtB,SAChBzC,QAAW/qB,KAAK2qK,SAASlmE,SACzB75E,UAAW5qB,KAAK4qK,WAAWnmE,SAC3Bz5E,OAAWhrB,KAAK86I,QAAQr2C,SACxB74E,MAAW5rB,KAAK6qK,OAAOpmE,SAE3B,CAGA,MAAA/jE,CAAOw5B,GACL,QAASA,GAASl6D,KAAK2qK,SAASjqI,OAAOw5B,EAAMnvC,UAC3B/qB,KAAK4qK,WAAWlqI,OAAOw5B,EAAMtvC,YAC7B5qB,KAAK86I,QAAQp6G,OAAOw5B,EAAMlvC,SAC1BhrB,KAAK6qK,OAAOnqI,OAAOw5B,EAAMtuC,MAC7C,EAiEF,SAAS8I,EAAK3J,EAASH,EAAWI,EAAQY,GACxC,OAAO,IAAIq5D,EAAKl6D,EAASH,EAAWI,EAAQY,EAC9C,CC9XA,IAAIk/I,EAAkB,EAGP,MAAMC,EACnB,WAAA/7J,CAAYlI,GACV9G,KAAKgrK,cAAgB,GACrBhrK,KAAK6qK,OAAS,KAGd/jK,EAAUA,GAAW,CAAC,EACtB9G,KAAKirK,SAASnkK,EAAQkvC,SACtBlvC,EAAQ8uB,SAAWs1I,EAAgBlrK,KAAM8G,EAAQ8uB,SAGjD,MAAMwiC,EAAoC,iBAAnBtxD,EAAQsxD,OAClBtxD,EAAQsxD,OAAOp0D,MAAM,QAAQ,GAAGsB,cAAgB,GACzD6lK,EAAW,SAASlhK,KAAKmuD,GAASgzG,EAAS,OAAOnhK,KAAKmuD,GACvDizG,EAAa,SAASphK,KAAKmuD,GAASkzG,EAAW,OAAOrhK,KAAKmuD,GAC3DmzG,EAAOvrK,KAAK+nK,QAAU,KAAK99J,KAAKmuD,GAChCozG,EAAaH,GAAcC,GACzBtrK,KAAKyrK,uBAAyBN,GAAYI,MAC9CvrK,KAAK0rK,2BAA6B1rK,KAAK2rK,gBAEzC3rK,KAAK4rK,iBAAmBT,GAAYC,GAAUC,GAAcE,GAE5DvrK,KAAK6rK,iBAA8B,KAAXzzG,GAAiB,WAAWnuD,KAAKmuD,GAErDozG,IACFxrK,KAAK8rK,oBAAsB5mI,GAAgB,MAC7CllC,KAAK+rK,iBAAsD,iBAA5BjlK,EAAQgkK,gBAA+B,GAC5ChkK,EAAQgkK,gBAAgB58J,QAAQ,UAAW,MACrElO,KAAKs1H,OAASxuH,EAAQ6zH,OAAS,IAAIwsC,EAAQ,CAAEW,SAAU0D,EAAYt3D,GAAIq3D,IAEvEvrK,KAAKgsK,uBAAyBllK,EAAQmlK,mBACxC,CAKA,4BAAOC,GACLpB,EAAkB,CACpB,CAKA,QAAAG,CAASj1H,GACP,GAAKA,EAIA,CAEH,MAAMm2H,EAAcn2H,EAAQlsC,QAAQ,KAChCqiK,GAAe,IACjBn2H,EAAUA,EAAQiwC,OAAO,EAAGkmF,IAE9BnsK,KAAKosK,MAAQp2H,EACbh2C,KAAKqsK,UAAcr2H,EAAQlsC,QAAQ,KAAO,EAAIksC,EAC3BA,EAAQ9nC,QAAQ,oBAAqB,IACxD8nC,EAAUA,EAAQhyC,MAAM,8CACxBhE,KAAKssK,UAAct2H,EAAQ,GAC3Bh2C,KAAKusK,YAAcv2H,EAAQ,EAC7B,MAfEh2C,KAAKosK,MAAQ,GACbpsK,KAAKqsK,UAAY,EAerB,CAIA,YAAAG,CAAa9/J,EAAMkf,EAAOb,EAASH,EAAWI,GAC5C,MAAMyhJ,EAASzsK,KAAK+nK,QACpB/nK,KAAKgrK,cAAcznK,KAAK,CACtBmJ,OACAqe,UAASH,YAAWI,SAAQY,QAC5B8gJ,UAASD,GAASzsK,KAAK2sK,kBACvBC,YAAaH,EAASzsK,KAAK6sK,UAAUzgI,EAAI,GACzC0gI,WAAYL,EAASzsK,KAAK+sK,YAAc,OAGtCN,IAEFzsK,KAAK2sK,mBAAoB,EAGzB3sK,KAAK6sK,UAAUzgI,EAAKpsC,KAAK6qK,OAAS,GAAG7qK,KAAK6qK,OAAO3qK,SAAW,IAE5DF,KAAK+sK,YAAc3rK,OAAO2G,OAAO/H,KAAK+sK,aAE1C,CAIA,eAAAC,CAAgBtgK,EAAMrJ,GAEpB,MAAMulB,EAAU5oB,KAAKgrK,cAAcxnK,MACnC,IAAKolB,GAAWA,EAAQlc,OAASA,EAC/B,OAAO1M,KAAKitK,OAAO,cAAc5pK,EAAMqJ,OAAQrJ,GAGjDrD,KAAK2qK,SAAa/hJ,EAAQmC,QAC1B/qB,KAAK4qK,WAAahiJ,EAAQgC,UAC1B5qB,KAAK86I,QAAalyH,EAAQoC,OAC1BhrB,KAAK6qK,OAAajiJ,EAAQgD,MAGtB5rB,KAAK+nK,UACP/nK,KAAK2sK,kBAAoB/jJ,EAAQ8jJ,QACjC1sK,KAAK6sK,UAAUzgI,EAAIxjB,EAAQgkJ,YAC3B5sK,KAAK+sK,YAAcnkJ,EAAQkkJ,WAE/B,CAGA,iBAAAI,CAAkB7pK,GAChB,OAAQA,EAAMqJ,MAEd,IAAK,MACH,OAAoB,OAAhB1M,KAAK6qK,OACA7qK,KAAKitK,OAAO,iBAAkB5pK,WAChCrD,KAAK6sK,UAAUzgI,EACfpsC,KAAKmtK,UAAU,KAAM,KAAMntK,KAAK6sK,YAEzC,IAAK,SACH7sK,KAAKotK,cAAe,EACtB,IAAK,UACH,OAAOptK,KAAKqtK,YAEd,IAAK,OACHrtK,KAAKotK,cAAe,EACtB,IAAK,QACH,OAAOptK,KAAKstK,aAEd,IAAK,IACH,GAAIttK,KAAKyrK,qBAGP,OAFAzrK,KAAK6qK,OAAS,GACd7qK,KAAK2qK,SAAW,KACT3qK,KAAKutK,aAEhB,IAAK,QACH,GAAIvtK,KAAKyrK,qBACP,OAAOzrK,KAAKwtK,qBAEhB,QACE,OAAOxtK,KAAKutK,aAAalqK,GAE7B,CAGA,WAAAoqK,CAAYpqK,EAAOqqK,GACjB,IAAIxtK,EACJ,OAAQmD,EAAMqJ,MAEd,IAAK,MACL,IAAK,UACH,MAAMw4B,EAAMllC,KAAK2tK,YAAYtqK,EAAMnD,OACnC,GAAY,OAARglC,EACF,OAAOllC,KAAKitK,OAAO,cAAe5pK,GACpCnD,EAAQF,KAAK4tK,WAAW1oI,GACxB,MAEF,IAAK,OACL,IAAK,WACH,MAAMh+B,EAASlH,KAAK6sK,UAAUxpK,EAAM6D,QACpC,QAAe/G,IAAX+G,EACF,OAAOlH,KAAKitK,OAAO,qBAAqB5pK,EAAM6D,WAAY7D,GAC5DnD,EAAQF,KAAK4tK,WAAW1mK,EAAS7D,EAAMnD,OACvC,MAEF,IAAK,QACHA,EAAQF,KAAK6tK,WAAW7tK,KAAK6sK,UAAUxpK,EAAM6D,QAAU7D,EAAMnD,OAC7D,MAEF,IAAK,MACHA,EAAQF,KAAKunK,UAAUlkK,EAAMnD,MAAM+lF,OAAO,IAC1C,MAEF,QACE,OAAOjmF,KAAKitK,OAAO,2BAA2B5pK,EAAMqJ,OAAQrJ,GAK9D,OAFKqqK,GAAc1tK,KAAK+nK,SAAY7nK,EAAMi5C,MAAMn5C,KAAK+sK,cACnD7sK,EAAQF,KAAK+sK,YAAY7sK,EAAMi5C,KAC1Bj5C,CACT,CAGA,YAAAqtK,CAAalqK,GAEX,OADArD,KAAK4qK,WAAa,KACVvnK,EAAMqJ,MACd,IAAK,IAIH,OAFA1M,KAAKwsK,aAAa,QAASxsK,KAAK6qK,OACd7qK,KAAK2qK,SAAW3qK,KAAK6tK,aAAc,KAAM,MACpD7tK,KAAK8tK,mBACd,IAAK,IAIH,OAFA9tK,KAAKwsK,aAAa,OAAQxsK,KAAK6qK,OAAQ7qK,KAAK+tK,QAAS,KAAM,MAC3D/tK,KAAK2qK,SAAW,KACT3qK,KAAKguK,cACd,IAAK,IAEH,OAAKhuK,KAAK+nK,SAEV/nK,KAAKwsK,aAAa,UAAWxsK,KAAK6qK,OAChB7qK,KAAK6qK,OAAS7qK,KAAK6tK,aAAc,KAAM,MAClD7tK,KAAKutK,cAHHvtK,KAAKitK,OAAO,mBAAoB5pK,GAI3C,IAAK,IAEH,OAAOrD,KAAKiuK,iBAAiB5qK,GAC/B,IAAK,WACH,OAAKrD,KAAK+nK,SAEV/nK,KAAK2qK,SAAW,KAChB3qK,KAAK4qK,WAAa5qK,KAAKkuK,WACvBluK,KAAKmuK,YAAcnuK,KAAK6tK,WACjB7tK,KAAKouK,qBAJHpuK,KAAKitK,OAAO,wBAAyB5pK,GAKhD,IAAK,UACH,OAAKrD,KAAK+nK,SAEV/nK,KAAK2qK,SAAW,KAChB3qK,KAAK4qK,WAAa5qK,KAAKquK,UACvBruK,KAAKmuK,YAAcnuK,KAAKunK,UACjBvnK,KAAKouK,qBAJHpuK,KAAKitK,OAAO,uBAAwB5pK,GAK/C,IAAK,UACH,IAAKrD,KAAK+nK,QACR,OAAO/nK,KAAKitK,OAAO,qBAAsB5pK,GAE3C,GAA4B,IAAxBA,EAAM6D,OAAO3F,OAEf,OADAvB,KAAKsuK,cAAgBjrK,EAAMnD,MACpBF,KAAKuuK,wBAGZvuK,KAAK2qK,SAAW3qK,KAAKwuK,SAASnrK,EAAMnD,MAAOF,KAAK4tK,WAAWvqK,EAAM6D,SAEnE,MACF,IAAK,KACH,OAAKlH,KAAK6rK,kBAEV7rK,KAAKwsK,aAAa,KAAMxsK,KAAK6qK,OAAQ,KAAM,KAAM,MACjD7qK,KAAK6qK,OAAS,KACP7qK,KAAKutK,cAHHvtK,KAAKitK,OAAO,yBAA0B5pK,GAIjD,QAEE,QAAkDlD,KAA7CH,KAAK2qK,SAAW3qK,KAAKytK,YAAYpqK,IACpC,OAEF,GAAIrD,KAAK+nK,QACP,OAAO/nK,KAAKyuK,eAAezuK,KAAK0rK,4BAKpC,OAAO1rK,KAAK0rK,0BACd,CAGA,cAAAC,CAAetoK,GACb,MAAMqJ,EAAOrJ,EAAMqJ,KACnB,OAAQA,GACR,IAAK,UACH1M,KAAK2sK,mBAAoB,EAC3B,IAAK,eACH3sK,KAAK4qK,WAAa5qK,KAAK0uK,cAAcrrK,EAAMnD,OAC3C,MACF,IAAK,IACL,IAAK,IACL,IAAK,IAEH,OAAwB,OAApBF,KAAK4qK,WACA5qK,KAAKitK,OAAO,cAAcvgK,IAAQrJ,IAC3CrD,KAAK2qK,SAAW,KACA,MAATj+J,EAAe1M,KAAK2uK,mBAAmBtrK,GAASrD,KAAKiuK,iBAAiB5qK,IAC/E,IAAK,IAEH,OAA2B,OAApBrD,KAAK4qK,WAAsB5qK,KAAK2rK,eAChC3rK,KAAKitK,OAAO,+BAAgC5pK,GACrD,IAAK,IACH,GAAIrD,KAAK+nK,QAIP,OAFA/nK,KAAKwsK,aAAa,QAASxsK,KAAK6qK,OAAQ7qK,KAAK2qK,SAC3B3qK,KAAK2qK,SAAW3qK,KAAK6tK,aAAc,MAC9C7tK,KAAK8tK,mBAEhB,IAAK,QACH,IAAK9tK,KAAK+nK,QACR,OAAO/nK,KAAKitK,OAAO,qCAAsC5pK,GAC7D,QACE,QAAoDlD,KAA/CH,KAAK4qK,WAAa5qK,KAAKytK,YAAYpqK,IACtC,OAGJ,OAAOrD,KAAK4uK,WACd,CAGA,WAAAA,CAAYvrK,GACV,OAAQA,EAAMqJ,MACd,IAAK,UAEH,GAA4B,IAAxBrJ,EAAM6D,OAAO3F,OAEf,OADAvB,KAAKsuK,cAAgBjrK,EAAMnD,MACpBF,KAAK6uK,oBAIZ7uK,KAAK86I,QAAU96I,KAAKwuK,SAASnrK,EAAMnD,MAAOF,KAAK4tK,WAAWvqK,EAAM6D,SAClE,MACF,IAAK,IAIH,OAFAlH,KAAKwsK,aAAa,QAASxsK,KAAK6qK,OAAQ7qK,KAAK2qK,SAAU3qK,KAAK4qK,WAC1C5qK,KAAK2qK,SAAW3qK,KAAK6tK,cAChC7tK,KAAK8tK,mBACd,IAAK,IAIH,OAFA9tK,KAAKwsK,aAAa,OAAQxsK,KAAK6qK,OAAQ7qK,KAAK2qK,SAAU3qK,KAAK4qK,WAAY5qK,KAAK+tK,SAC5E/tK,KAAK2qK,SAAW,KACT3qK,KAAKguK,cACd,IAAK,IAEH,OAAKhuK,KAAK+nK,SAEV/nK,KAAKwsK,aAAa,UAAWxsK,KAAK6qK,OAAQ7qK,KAAK2qK,SAAU3qK,KAAK4qK,WAC5C5qK,KAAK6qK,OAAS7qK,KAAK6tK,cAC9B7tK,KAAKutK,cAHHvtK,KAAKitK,OAAO,mBAAoB5pK,GAI3C,IAAK,KACH,OAAKrD,KAAK6rK,kBAEV7rK,KAAKwsK,aAAa,KAAMxsK,KAAK6qK,OAAQ7qK,KAAK2qK,SAAU3qK,KAAK4qK,WAAY,MACrE5qK,KAAK6qK,OAAS,KACP7qK,KAAKutK,cAHHvtK,KAAKitK,OAAO,yBAA0B5pK,GAIjD,QAEE,QAAiDlD,KAA5CH,KAAK86I,QAAU96I,KAAKytK,YAAYpqK,IACnC,OAEF,GAAIrD,KAAK+nK,QACP,OAAO/nK,KAAKyuK,eAAezuK,KAAK8uK,wBAEpC,OAAO9uK,KAAK8uK,sBACd,CAGA,0BAAApD,CAA2BroK,GACzB,MAAsB,MAAfA,EAAMqJ,KAAe1M,KAAK+uK,WAAW1rK,GAASrD,KAAK2rK,eAAetoK,EAC3E,CAGA,UAAA0rK,CAAW1rK,GACT,MAAmB,MAAfA,EAAMqJ,KACD1M,KAAKitK,OAAO,0BAA0B5pK,EAAMqJ,OAAQrJ,IAE7DrD,KAAK6qK,OAAS7qK,KAAK2qK,SAAU3qK,KAAK2qK,SAAW,KACtC3qK,KAAKutK,aACd,CAGA,kBAAAO,CAAmBzqK,GACjB,MAAmB,MAAfA,EAAMqJ,MACR1M,KAAK2qK,SAAW,KACT3qK,KAAK2uK,mBAAmBtrK,KAG/BrD,KAAK4qK,WAAa,KACX5qK,KAAK2rK,eAAetoK,GAE/B,CAGA,kBAAAsrK,CAAmBtrK,GACjB,GAAmB,MAAfA,EAAMqJ,KACR,OAAO1M,KAAKgvK,0BAA0B3rK,GAGlB,OAAlBrD,KAAK2qK,UACP3qK,KAAKivK,MAAMjvK,KAAK2qK,SAAU3qK,KAAK4qK,WAAY5qK,KAAK86I,QAAS96I,KAAK6qK,QAGhE,MAAMtwH,EAA4B,OAApBv6C,KAAK4qK,WAGnB,OAFA5qK,KAAKgtK,gBAAgB,QAAS3pK,GAET,OAAjBrD,KAAK86I,QACA96I,KAAK8uK,uBAEe,OAApB9uK,KAAK4qK,WACL5qK,KAAK4uK,YAILr0H,EAAQv6C,KAAK0rK,2BAA6B1rK,KAAKkvK,wBAC1D,CAGA,wBAAAA,CAAyB7rK,GACvB,OAAQA,EAAMqJ,MACd,IAAK,IACL,IAAK,IAGH,OADA1M,KAAK2qK,SAAW,KACT3qK,KAAKiuK,iBAAiB5qK,GAC/B,QACE,OAAOrD,KAAK2rK,eAAetoK,GAE/B,CAGA,aAAA2qK,CAAc3qK,GACZ,IAAI8e,EAAO,KACPsnF,EAAO,KACPvjG,EAAOlG,KAAKguK,cAChB,MAAMmB,EAAenvK,KAAK2qK,SACtBhqK,EAAQX,KAAKgrK,cACbvnK,EAAS9C,EAAMA,EAAMY,OAAS,GAElC,OAAQ8B,EAAMqJ,MACd,IAAK,IAEH1M,KAAKwsK,aAAa,QAASxsK,KAAK6qK,OACdphE,EAAOzpG,KAAK6tK,aAAc7tK,KAAKovK,UAC/BpvK,KAAK2qK,SAAWxoJ,EAAOniB,KAAK6tK,cAC9C3nK,EAAOlG,KAAK8tK,mBACZ,MACF,IAAK,IAEH9tK,KAAKwsK,aAAa,OAAQxsK,KAAK6qK,OACbphE,EAAOzpG,KAAK6tK,aAAc7tK,KAAKovK,UAAWpvK,KAAK+tK,SACjE/tK,KAAK2qK,SAAW,KAChB,MACF,IAAK,IAQH,GANA3qK,KAAKgtK,gBAAgB,OAAQ3pK,GAGR,IAAjB1C,EAAMY,QAAiD,SAAjCZ,EAAMA,EAAMY,OAAS,GAAGmL,MAChD1M,KAAKivK,MAAMjvK,KAAK2qK,SAAU3qK,KAAK4qK,WAAY5qK,KAAK86I,QAAS96I,KAAK6qK,QAExC,OAApB7qK,KAAK4qK,YAIP,GAFA1kK,EAAOlG,KAAK2rK,eAER3rK,KAAK2qK,WAAa3qK,KAAK+tK,QACzB,OAAO7nK,OAMT,GAFAA,EAAOlG,KAAK8uK,uBAER9uK,KAAK86I,UAAY96I,KAAK+tK,QACxB,OAAO7nK,EAGXujG,EAAOzpG,KAAK+tK,QACZ,MACF,IAAK,UAEyB,IAAxB1qK,EAAM6D,OAAO3F,QACfvB,KAAKsuK,cAAgBjrK,EAAMnD,MAC3BgG,EAAOlG,KAAKqvK,8BAIZltJ,EAAOniB,KAAKwuK,SAASnrK,EAAMnD,MAAOF,KAAK4tK,WAAWvqK,EAAM6D,SACxDhB,EAAOlG,KAAK8uK,wBAEd,MACF,IAAK,IAEH,OAAK9uK,KAAK+nK,SAEV/nK,KAAKwsK,aAAa,UAAWxsK,KAAK6qK,OAAQ7qK,KAAK2qK,SAAU3qK,KAAK4qK,WAC5C5qK,KAAK6qK,OAAS7qK,KAAK6tK,cAC9B7tK,KAAKutK,cAHHvtK,KAAKitK,OAAO,mBAAoB5pK,GAI3C,QACE,QAAyClD,KAApCgiB,EAAOniB,KAAKytK,YAAYpqK,IAC3B,OAoBJ,GAhBa,OAATomG,IACFzpG,KAAK2qK,SAAWlhE,EAAOzpG,KAAK6tK,cAGT,OAAjBsB,EAEuB,OAArB1rK,EAAOmnB,UACTnnB,EAAOsnB,QAAU0+E,EAEjBhmG,EAAOunB,OAASy+E,EAIlBzpG,KAAKivK,MAAME,EAAcnvK,KAAKsvK,SAAU7lE,EAAMzpG,KAAK6qK,QAGxC,OAAT1oJ,EAAe,CAEjB,GAAIniB,KAAK+nK,UAA2B,QAAf1kK,EAAMqJ,MAAiC,aAAfrJ,EAAMqJ,MAKjD,OAHA1M,KAAKwsK,aAAa,OAAQxsK,KAAK6qK,OAAQphE,EAAMzpG,KAAKovK,UAAWjtJ,GAC7DniB,KAAK2qK,SAAWxoJ,EAAMniB,KAAK4qK,WAAa,KAEjC5qK,KAAKyuK,eAAezuK,KAAKguK,eAGlChuK,KAAKivK,MAAMxlE,EAAMzpG,KAAKovK,UAAWjtJ,EAAMniB,KAAK6qK,OAC9C,CACA,OAAO3kK,CACT,CAGA,mBAAA2oK,CAAoBxrK,GAClB,OAAOrD,KAAKuvK,uBAAuBlsK,GAAO,EAC5C,CAIA,2BAAAgsK,CAA4BhsK,GAC1B,OAAOrD,KAAKuvK,uBAAuBlsK,GAAO,EAC5C,CAGA,gBAAAmsK,CAAiBnsK,GAEf,IAAIy4C,EAAU97C,KAAKwuK,SAASxuK,KAAKsuK,eAEjC,OAAQjrK,EAAMqJ,MAEd,IAAK,OACL,IAAK,UACH,MAAMo1B,EAAW9hC,KAAKytK,YAAYpqK,GAClC,QAAiBlD,IAAb2hC,EAAwB,OAC5Bga,EAAU97C,KAAKwuK,SAASxuK,KAAKsuK,cAAexsI,GAC5Cz+B,EAAQ,KACR,MAEF,IAAK,WACHy4C,EAAU97C,KAAKwuK,SAASxuK,KAAKsuK,cAAejrK,EAAMnD,OAClDmD,EAAQ,KAIV,MAAO,CAAEA,QAAOy4C,UAClB,CAGA,uBAAAyyH,CAAwBlrK,GAEtB,OADArD,KAAK2qK,SAAW3qK,KAAKwvK,iBAAiBnsK,GAAOy4C,QACtC97C,KAAK0rK,0BACd,CAGA,sBAAA6D,CAAuBlsK,EAAOosK,GAC5B,MAAMC,EAAY1vK,KAAKwvK,iBAAiBnsK,GACxC,GAAKqsK,EASL,OAPA1vK,KAAK86I,QAAU40B,EAAU5zH,QAIrB2zH,GACFzvK,KAAKivK,MAAMjvK,KAAK2qK,SAAU3qK,KAAKovK,UAAWpvK,KAAK86I,QAAS96I,KAAK6qK,QAEvC,OAApB6E,EAAUrsK,MACLrD,KAAK8uK,wBAGZ9uK,KAAK2vK,cAAgB3vK,KAAK8uK,uBACnB9uK,KAAK2vK,cAAcD,EAAUrsK,OAExC,CAGA,gBAAAusK,CAAiBvsK,GACf,MAAmB,MAAfA,EAAMqJ,KACD1M,KAAKiuK,iBAAiB5qK,IAGT,OAAlBrD,KAAK2qK,UACP3qK,KAAKivK,MAAMjvK,KAAK2qK,SAAU3qK,KAAK4qK,WAAY5qK,KAAK86I,QAAS96I,KAAK6qK,QAGhE7qK,KAAKgtK,gBAAgB,UAAW3pK,GAGR,OAAjBrD,KAAK86I,QAAmB96I,KAAK2rK,eAAiB3rK,KAAK8uK,uBAC5D,CAGA,gBAAAb,CAAiB5qK,GACf,IAAI6C,EAAM0lB,EAAQ5rB,KAAK6qK,OACvB,MAAM9/I,EAAU/qB,KAAK2qK,SAAUkF,EAAmB7vK,KAAK2sK,kBACvD,OAAQtpK,EAAMqJ,MAEd,IAAK,IACH,GAAoB,OAAhB1M,KAAK6qK,OACP,OAAO7qK,KAAKitK,OAAO,2BAA4B5pK,GACjD,GAAIrD,KAAK+nK,QACP,OAAO/nK,KAAK4vK,iBAAiBvsK,GAC/BrD,KAAK6qK,OAAS,KAEhB,IAAK,IACH7qK,KAAK2qK,SAAW,KAChBzkK,EAAOlG,KAAKgrK,cAAczpK,OAASvB,KAAKutK,aAAevtK,KAAKktK,kBACxD2C,IAAkB7vK,KAAK2sK,mBAAoB,GAC/C,MAEF,IAAK,IACHzmK,EAAOlG,KAAK2rK,eACZ,MAEF,IAAK,IACHzlK,EAAOlG,KAAK4uK,YACZ,MAEF,IAAK,KACH,IAAK5uK,KAAK6rK,iBACR,OAAO7rK,KAAKitK,OAAO,yBAA0B5pK,GAE/C,MAAMunB,EAAY5qB,KAAK4qK,WAAY5/I,EAAShrB,KAAK86I,QACjD96I,KAAK2qK,SAAW3qK,KAAK0oC,MAAM3d,EAASH,EAAWI,EAAQhrB,KAAKiqK,cAC5D/jK,EAAOlG,KAAK2rK,eACZ,MAEF,IAAK,KACH,GAA+B,SAA3B3rK,KAAK2qK,SAASn9I,SAChB,OAAOxtB,KAAKitK,OAAO,qCAAsC5pK,GAC3DrD,KAAK2qK,SAAW,KAChBzkK,EAAOlG,KAAKiuK,iBACZ,MACF,QAEE,GAAIjuK,KAAK4rK,gBAAkC,OAAhB5rK,KAAK6qK,aAAyD1qK,KAArCyrB,EAAQ5rB,KAAKytK,YAAYpqK,IAAuB,CAClG6C,EAAOlG,KAAK8vK,qBACZ,KACF,CACA,OAAO9vK,KAAKitK,OAAO,mCAAmCjtK,KAAK86I,QAAQ3hG,MAAO91C,GAG5E,GAAgB,OAAZ0nB,EAAkB,CACpB,MAAMH,EAAY5qB,KAAK4qK,WAAY5/I,EAAShrB,KAAK86I,QAC5C+0B,EAGH7vK,KAAKivK,MAAMjkJ,EAASJ,EAAWG,EAASa,GAFxC5rB,KAAKivK,MAAMlkJ,EAASH,EAAWI,EAASY,EAG5C,CACA,OAAO1lB,CACT,CAGA,yBAAA8oK,CAA0B3rK,GACxB,IAAI6C,EACJ,OAAQ7C,EAAMqJ,MAEd,IAAK,IACHxG,EAAOlG,KAAK2rK,eACZ,MAEF,IAAK,IACHzlK,EAAOlG,KAAK4uK,YACZ,MACF,QACE,OAAO5uK,KAAKitK,OAAO,mCAAmCjtK,KAAK86I,QAAQ3hG,MAAO91C,GAI5E,OADArD,KAAKivK,MAAMjvK,KAAK2qK,SAAU3qK,KAAK4qK,WAAY5qK,KAAK86I,QAAS96I,KAAK6qK,QACvD3kK,CACT,CAGA,oBAAA4pK,CAAqBzsK,GACnB,MAAmB,MAAfA,EAAMqJ,KACD1M,KAAKitK,OAAO,8BAA+B5pK,GAC7CrD,KAAKktK,iBACd,CAGA,WAAAG,CAAYhqK,GACV,MAAmB,WAAfA,EAAMqJ,KACD1M,KAAKitK,OAAO,oCAAqC5pK,IAC1DrD,KAAKqnK,QAAUhkK,EAAMnD,MACdF,KAAK+vK,eACd,CAGA,cAAAA,CAAe1sK,GACb,GAAmB,QAAfA,EAAMqJ,KACR,OAAO1M,KAAKitK,OAAO,kCAAkCjtK,KAAKqnK,YAAahkK,GACzE,MAAM2sK,EAAahwK,KAAKytK,YAAYpqK,GAGpC,OAFArD,KAAK6sK,UAAU7sK,KAAKqnK,SAAW2I,EAAW9vK,MAC1CF,KAAKiwK,gBAAgBjwK,KAAKqnK,QAAS2I,GAC5BhwK,KAAKkwK,2BACd,CAGA,YAAA5C,CAAajqK,GACX,MAAM6hC,EAAqB,QAAf7hC,EAAMqJ,MAAkB1M,KAAK2tK,YAAYtqK,EAAMnD,OAC3D,OAAKglC,GAELllC,KAAKirK,SAAS/lI,GACPllC,KAAKkwK,6BAFHlwK,KAAKitK,OAAO,gDAAiD5pK,EAGxE,CAGA,oBAAAmqK,CAAqBnqK,GACnB,OAAQA,EAAMqJ,MACd,IAAK,MACL,IAAK,QACL,IAAK,WACH,OAAO1M,KAAKutK,aAAalqK,GAAQrD,KAAK+uK,WACxC,IAAK,IACH,OAAO/uK,KAAKmwK,0BACd,QACE,OAAOnwK,KAAKitK,OAAO,sBAAuB5pK,GAE9C,CAGA,yBAAA8sK,CAA0B9sK,GACxB,MAAmB,MAAfA,EAAMqJ,KACD1M,KAAKitK,OAAO,sBAAuB5pK,IAC5CrD,KAAK2qK,SAAW3qK,KAAK6tK,aACd7tK,KAAK+uK,WACd,CAGA,2BAAAmB,CAA4B7sK,GAE1B,OAAIrD,KAAKotK,cACPptK,KAAKotK,cAAe,EACbptK,KAAKktK,kBAAkB7pK,IAGb,MAAfA,EAAMqJ,KACD1M,KAAKitK,OAAO,yCAA0C5pK,GACxDrD,KAAKktK,iBACd,CAGA,mBAAAkB,CAAoB/qK,GAClB,IAAI4V,EACJ,OAAQ5V,EAAMqJ,MACd,IAAK,MACL,IAAK,WACH,QAAiDvM,KAA5C8Y,EAASjZ,KAAKytK,YAAYpqK,GAAO,IACpC,MACJ,QACE,OAAOrD,KAAKitK,OAAO,cAAc5pK,EAAMqJ,OAAQrJ,GAkBjD,OAfKrD,KAAKgsK,sBAKc,OAAlBhsK,KAAK2qK,SACP3qK,KAAKivK,MAAMjvK,KAAK6qK,QAAU7qK,KAAKiqK,aAAcjqK,KAAK4qK,WACvC5qK,KAAK2qK,SAAW3qK,KAAK6tK,aAAc7tK,KAAKowK,mBAGnDpwK,KAAKivK,MAAMjvK,KAAK2qK,SAAU3qK,KAAKsvK,SACpBtvK,KAAK2qK,SAAW3qK,KAAK6tK,aAAc7tK,KAAKowK,mBAErDpwK,KAAKivK,MAAMjvK,KAAK2qK,SAAU3qK,KAAKovK,UAAWn2J,EAAQjZ,KAAKowK,oBAZvDpwK,KAAK+sK,YAAY9zJ,EAAOkgC,IAAMn5C,KAAKmuK,YAAYnuK,KAAK6tK,aAAa3tK,OAc5DF,KAAKqwK,0BACd,CAGA,0BAAAA,CAA2BhtK,GAEzB,MAAmB,MAAfA,EAAMqJ,KACD1M,KAAKouK,qBAIRpuK,KAAKgsK,uBACPhsK,KAAKivK,MAAMjvK,KAAK2qK,SAAU3qK,KAAKsvK,SAAUtvK,KAAK+tK,QAAS/tK,KAAKowK,mBAC5DpwK,KAAK2qK,SAAW,MAGlB3qK,KAAK2vK,cAAgB3vK,KAAK8uK,uBACnB9uK,KAAK2vK,cAActsK,GAE9B,CAGA,cAAAorK,CAAe6B,GAEb,OADAtwK,KAAKuwK,WAAaD,EACXtwK,KAAKwwK,SACd,CAGA,SAAAA,CAAUntK,GACR,OAAQA,EAAMqJ,MAEd,IAAK,IAAK,OAAO1M,KAAKywK,iBAEtB,IAAK,IAAK,OAAOzwK,KAAK0wK,kBAEtB,QACE,MAAM/vK,EAAQX,KAAKgrK,cAAevnK,EAAS9C,EAAMY,QAAUZ,EAAMA,EAAMY,OAAS,GAEhF,GAAIkC,GAA0B,SAAhBA,EAAOiJ,KAAiB,CAEpC,MAAMyV,EAAOniB,KAAK2qK,SAElB3qK,KAAKgtK,gBAAgB,OAAQ3pK,GAE7BrD,KAAKivK,MAAMjvK,KAAK2qK,SAAU3qK,KAAKovK,UAAWjtJ,EAAMniB,KAAK6qK,OACvD,CACA,OAAO7qK,KAAKuwK,WAAWltK,GAE3B,CAGA,gBAAAotK,CAAiBptK,GACf,IAAI0nB,EAASH,EACb,MAAMI,EAAShrB,KAAK6tK,aAEpB,QAA8C1tK,KAAzCyqB,EAAY5qB,KAAKytK,YAAYpqK,IAUlC,OAPwB,OAApBrD,KAAK4qK,YACP7/I,EAAU/qB,KAAK2qK,SAAU3qK,KAAK2qK,SAAW3/I,IAGzCD,EAAU/qB,KAAK86I,QAAU96I,KAAK86I,QAAW9vH,GAE3ChrB,KAAKivK,MAAMlkJ,EAASH,EAAWI,EAAQhrB,KAAK6qK,QACrC7qK,KAAKwwK,SACd,CAGA,iBAAAE,CAAkBrtK,GAChB,MAAM0nB,EAAU/qB,KAAK6tK,aACrB,IAAIjjJ,EAAWI,EAEf,QAA8C7qB,KAAzCyqB,EAAY5qB,KAAKytK,YAAYpqK,IAUlC,OAPwB,OAApBrD,KAAK4qK,YACP5/I,EAAShrB,KAAK2qK,SAAU3qK,KAAK2qK,SAAW5/I,IAGxCC,EAAShrB,KAAK86I,QAAU96I,KAAK86I,QAAW/vH,GAE1C/qB,KAAKivK,MAAMlkJ,EAASH,EAAWI,EAAQhrB,KAAK6qK,QACrC7qK,KAAKwwK,SACd,CAGA,uBAAAG,CAAwBttK,GACtB,MAAmB,OAAfA,EAAMqJ,KAEJ1M,KAAK4rK,gBAAkC,OAAhB5rK,KAAK6qK,aAA+D1qK,KAA3CH,KAAK6qK,OAAS7qK,KAAKytK,YAAYpqK,IAC1ErD,KAAK4wK,iBACP5wK,KAAKitK,OAAO,0BAA0BjtK,KAAK86I,QAAQ3hG,MAAO91C,GAE5DrD,KAAK4wK,iBAAiBvtK,EAC/B,CAGA,gBAAAutK,CAAiBvtK,GACf,GAAmB,OAAfA,EAAMqJ,KACR,OAAO1M,KAAKitK,OAAO,uBAAuB5pK,EAAMqJ,OAAQrJ,GAE1D,MAAMqxB,EAAO10B,KAAK0oC,MAAM1oC,KAAK2qK,SAAU3qK,KAAK4qK,WAAY5qK,KAAK86I,QAC3D96I,KAAK6qK,QAAU7qK,KAAKiqK,cAGtB,OAFAjqK,KAAKgtK,gBAAgB,KAAM3pK,GAEL,OAAlBrD,KAAK2qK,UACP3qK,KAAK2qK,SAAWj2I,EACT10B,KAAK2rK,iBAIZ3rK,KAAK86I,QAAUpmH,EACR10B,KAAK8uK,uBAEhB,CAGA,oBAAAA,GACE,MAAM+B,EAAe7wK,KAAKgrK,cAC1B,IAAK6F,EAAatvK,OAChB,OAAOvB,KAAKiuK,iBAEd,OAAQ4C,EAAaA,EAAatvK,OAAS,GAAGmL,MAC9C,IAAK,QACH,OAAO1M,KAAK2uK,mBACd,IAAK,OACH,OAAO3uK,KAAKguK,cACd,IAAK,UACH,OAAOhuK,KAAK4vK,iBACd,IAAK,KACH,OAAO5vK,KAAK2wK,wBAEhB,CAGA,KAAA1B,CAAMlkJ,EAASH,EAAWI,EAAQY,GAChC5rB,KAAKmtK,UAAU,KAAMntK,KAAK0oC,MAAM3d,EAASH,EAAWI,EAAQY,GAAS5rB,KAAKiqK,cAC5E,CAGA,MAAAgD,CAAOl+J,EAAS1L,GACd,MAAMzB,EAAM,IAAIG,MAAM,GAAGgN,aAAmB1L,EAAMqM,SAClD9N,EAAIgnB,QAAU,CACZvlB,MAAOA,EACPqM,KAAMrM,EAAMqM,KACZs5J,cAAehpK,KAAKs1H,OAAO0zC,eAE7BhpK,KAAKmtK,UAAUvrK,GACf5B,KAAKmtK,UAAY2D,CACnB,CAGA,WAAAnD,CAAYzoI,GACV,MAAO,uBAAuBj7B,KAAKi7B,GAAOA,EAAMllC,KAAK8rK,oBAAoB5mI,EAC3E,CAIA,mBAAA4mI,CAAoB5mI,GAElB,IAAKA,EAAI3jC,OACP,OAAOvB,KAAKosK,MAEd,OAAQlnI,EAAI,IAEZ,IAAK,IAAK,OAAOllC,KAAKosK,MAAQlnI,EAE9B,IAAK,IAAK,OAAOllC,KAAKosK,MAAMl+J,QAAQ,aAAcg3B,GAElD,IAAK,IAEH,OAAmB,MAAXA,EAAI,GAAallC,KAAKusK,YAAcvsK,KAAKssK,WAAatsK,KAAK+wK,mBAAmB7rI,GAExF,QAEE,MAAQ,WAAWj7B,KAAKi7B,GAAQ,KAAOllC,KAAK+wK,mBAAmB/wK,KAAKqsK,UAAYnnI,GAEpF,CAGA,kBAAA6rI,CAAmB7rI,GAEjB,IAAK,uBAAuBj7B,KAAKi7B,GAC/B,OAAOA,EAGT,MAAM3jC,EAAS2jC,EAAI3jC,OACnB,IAAIsC,EAAS,GAAIxC,GAAK,EAAG2vK,GAAa,EAAGC,EAAe,EAAG/qK,EAAO,IAElE,KAAO7E,EAAIE,GAAQ,CACjB,OAAQ2E,GAER,IAAK,IACH,GAAI8qK,EAAY,GAEG,MAAb9rI,IAAM7jC,IAA2B,MAAb6jC,IAAM7jC,GAE5B,MAAQ2vK,EAAY3vK,EAAI,GAAKE,GAA6B,MAAnB2jC,EAAI8rI,IACzC3vK,EAAI2vK,EAEV,MAEF,IAAK,IACL,IAAK,IACH3vK,EAAIE,EACJ,MAEF,IAAK,IACH,GAAmB,MAAf2jC,EAAI7jC,EAAI,GAEV,OADA6E,EAAOg/B,EAAU,KAAJ7jC,GACL6E,GAER,IAAK,IACHrC,GAAUqhC,EAAI+3D,UAAUg0E,EAAc5vK,EAAI,GAC1C4vK,EAAe5vK,EAAI,EACnB,MAEF,UAAKlB,EACL,IAAK,IACL,IAAK,IACH,OAAO0D,EAASqhC,EAAI+3D,UAAUg0E,EAAc5vK,GAAK6jC,EAAI+gD,OAAO5kF,EAAI,GAElE,IAAK,IAEH,GADA6E,EAAOg/B,EAAU,KAAJ7jC,QACAlB,IAAT+F,GAA+B,MAATA,GAAyB,MAATA,GAAyB,MAATA,EAAc,CAMtE,GALArC,GAAUqhC,EAAI+3D,UAAUg0E,EAAc5vK,EAAI,IAErC4vK,EAAeptK,EAAOa,YAAY,OAASssK,IAC9CntK,EAASA,EAAOoiF,OAAO,EAAGgrF,IAEf,MAAT/qK,EACF,MAAO,GAAGrC,KAAUqhC,EAAI+gD,OAAO5kF,EAAI,KACrC4vK,EAAe5vK,EAAI,CACrB,GAIN6E,EAAOg/B,IAAM7jC,EACf,CACA,OAAOwC,EAASqhC,EAAI+3D,UAAUg0E,EAChC,CAKA,KAAAhkK,CAAMQ,EAAOyjK,EAAcC,GAazB,GAVAnxK,KAAK2vK,cAAgB3vK,KAAKktK,kBAC1BltK,KAAKotK,cAAe,EACpBptK,KAAK6sK,UAAYzrK,OAAO2G,OAAO,MAC/B/H,KAAK6sK,UAAUzgI,EAAIpsC,KAAK+rK,iBAAmB/rK,KAAK+rK,iBAAiB9lF,OAAO,GAC7B,IAAI6kF,OAC/C9qK,KAAKiwK,gBAAkBkB,GAAkBL,EACzC9wK,KAAK2sK,mBAAoB,EACzB3sK,KAAK+sK,YAAc3rK,OAAO2G,OAAO,OAG5BmpK,EAAc,CACjB,MAAM96H,EAAQ,GACd,IAAIjzC,EAKJ,GAJAnD,KAAKmtK,UAAY,CAAChnK,EAAGu8F,KAAQv8F,EAAKhD,EAAQgD,EAAKu8F,GAAKtsD,EAAM7yC,KAAKm/F,EAAE,EACjE1iG,KAAKs1H,OAAOu0C,SAASp8J,GAAO40B,OAAMh/B,GACzBrD,KAAK2vK,cAAgB3vK,KAAK2vK,cAActsK,KAE7CF,EAAO,MAAMA,EACjB,OAAOizC,CACT,CAGAp2C,KAAKmtK,UAAY+D,EACjBlxK,KAAKs1H,OAAOu0C,SAASp8J,GAAO,CAACtK,EAAOE,KACpB,OAAVF,GACFnD,KAAKmtK,UAAUhqK,GAAQnD,KAAKmtK,UAAY2D,GACjC9wK,KAAK2vK,gBACZ3vK,KAAK2vK,cAAgB3vK,KAAK2vK,cAActsK,GAAM,GAEpD,EAIF,SAASytK,IAAQ,CAGjB,SAAS5F,EAAgBx3J,EAAQkiB,GAE/B,MAAMrB,EAAYqB,EAAQrB,UAC1B7gB,EAAOk6J,WAAer5I,EACtB7gB,EAAOm6J,WAAej4I,EAAQV,UAC9BxhB,EAAO86J,SAAe54I,EAAQkmB,QAC9BpoC,EAAO6zJ,UAAe3xI,EAAQ3K,SAC9BvX,EAAOg1B,MAAe9S,EAAQlB,KAC9BhhB,EAAOu2J,aAAer0I,EAAQqQ,eAG9BvyB,EAAO07J,UAAa76I,EAAU,EAAWwxI,IAAI5pH,OAC7CzoC,EAAO47J,SAAa/6I,EAAU,EAAWwxI,IAAIxS,MAC7C7/I,EAAOq6J,QAAax5I,EAAU,EAAWwxI,IAAI5kD,KAC7CztG,EAAO26J,UAAa95I,EAAU,EAAW8lE,EAAE8rE,QAC3CzyJ,EAAOw6J,WAAa35I,EAAU,EAAW8lE,EAAE6rE,SAC3CxyJ,EAAOg7J,cAAgB,CACrB,EAAKn6I,EAAU,EAAWwxI,IAAIr5J,MAC9B,IAAK6nB,EAAU,EAAWyxI,IAAIC,QAC9B,IAAK1xI,EAAU,EAAW+B,IAAI8vI,UAEhC1yJ,EAAO08J,kBAAoB77I,EAAU,qBACvC,CC7iCO,SAAS68I,EAAY/8I,GAC1B,QAASA,GAA0B,cAAlBA,EAAK7G,QACxB,CAGO,SAAS6jJ,EAAYh9I,GAC1B,QAASA,GAA0B,cAAlBA,EAAK7G,QACxB,CAGO,SAAS0yD,EAAU7rD,GACxB,QAASA,GAA0B,YAAlBA,EAAK7G,QACxB,CAGO,SAASo8F,EAAWv1F,GACzB,QAASA,GAA0B,aAAlBA,EAAK7G,QACxB,CAGO,SAAS8jJ,EAAej9I,GAC7B,QAASA,GAA0B,iBAAlBA,EAAK7G,QACxB,CAGO,SAAS+jJ,EAAe78I,GAC7B,OAAO48I,EAAe58I,EAAK9I,MAC7B,CAGO,SAAS1kB,EAAOg+B,EAAKtP,GAC1B,OAAO5sB,EAAS,CAAE,GAAIk8B,EAAIhlC,OAASglC,GAAOtP,EAAnC5sB,CAA4C,GACrD,CAGO,SAASA,EAASwoK,EAAiB57I,GAExC,MAAM5sB,EAAW5H,OAAO2G,OAAO,MAC/B,IAAK,MAAMb,KAAUsqK,EACnBC,EAAcvqK,EAAQsqK,EAAgBtqK,IAMxC,SAASuqK,EAAcvqK,EAAQg+B,GAE7B,GAAmB,iBAARA,EAAkB,CAE3B,MAAMlU,EAAQ5vB,OAAO2G,OAAO,MAC5BiB,EAAS9B,GAAU0O,GACVob,EAAMpb,KAAWob,EAAMpb,GAASggB,EAAQrB,UAAU2Q,EAAMtvB,GAEnE,MACK,KAAM1O,KAAU8B,GACnB,MAAM,IAAIjH,MAAM,mBAAmBmF,KAErC,OAAO8B,EAAS9B,EAClB,CACA,OAlBA0uB,EAAUA,GAAW87I,EAkBdD,CACT,CDk/BAvG,EAAgBH,EAASrpK,UAAWgwK,GE9iCpC,MAAM,EAAeA,EAAczrI,gBAE3B8/H,IAAG,MAAK,GAAK,EAGf,EAAY,4CACd4L,EAAY,+DACZC,EAAoB,CAClB,KAAM,OAAQ,IAAK,MAAO,KAAM,MAChC,KAAM,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,OAInD,MAAMC,UAAuBrkG,EAG3B,MAAA9sC,CAAOw5B,GACL,OAAOA,IAAUl6D,IACnB,EAIa,MAAM8xK,EACnB,WAAA9iK,CAAY+iK,EAAcjrK,GAWxB,GATA9G,KAAKgyK,aAAe,MAGhBD,GAA8C,mBAAvBA,EAAapvK,QACtCmE,EAAUirK,EAAcA,EAAe,MACzCjrK,EAAUA,GAAW,CAAC,EACtB9G,KAAKiyK,OAASnrK,EAAQorK,MAGjBH,EASH/xK,KAAKmyK,cAAgBJ,EACrB/xK,KAAKoyK,gBAA6BjyK,IAAhB2G,EAAQrE,OAA6BqE,EAAQrE,QAV9C,CACjB,IAAIo2B,EAAS,GACb74B,KAAKmyK,cAAgB,CACnB,KAAAxvK,CAAM2W,EAAOmB,EAAUpU,GAAQwyB,GAAUvf,EAAOjT,GAAQA,GAAQ,EAChE5D,IAAK4D,IAAUA,GAAQA,EAAK,KAAMwyB,EAAO,GAE3C74B,KAAKoyK,YAAa,CACpB,CAOApyK,KAAK2qK,SAAW,KACX,eAAiB1gK,KAAKnD,EAAQsxD,SAYjCp4D,KAAK6nK,WAAY,EACjB7nK,KAAKqyK,WAAaryK,KAAKsyK,iBAZvBtyK,KAAK6nK,WAAY,EACjB7nK,KAAK6qK,OAAS,EACd7qK,KAAKuyK,YAAcnxK,OAAO2G,OAAO,MACjCjB,EAAQkC,UAAYhJ,KAAKwyK,YAAY1rK,EAAQkC,UACzClC,EAAQkvC,UACVh2C,KAAKyyK,aAAe,IAAIrpF,OAAO,IAAIspF,GAAY5rK,EAAQkvC,WAChDlvC,EAAQkvC,QAAQzxC,SAAS,KAAO,GAAK,UAC5CvE,KAAK2yK,YAAc7rK,EAAQkvC,QAAQz0C,QAOzC,CAKA,mBAAIqxK,GACF,OAAO,EAAalyI,OAAO1gC,KAAK6qK,OAClC,CAGA,MAAAvS,CAAOl4J,EAAQgN,GACbpN,KAAKmyK,cAAcxvK,MAAMvC,EAAQ,OAAQgN,EAC3C,CAGA,UAAAilK,CAAWtnJ,EAASH,EAAWI,EAAQY,EAAOvlB,GAC5C,IAEOulB,EAAM8U,OAAO1gC,KAAK6qK,UAErB7qK,KAAKs4J,QAA0B,OAAlBt4J,KAAK2qK,SAAoB,GAAM3qK,KAAK4yK,gBAAkB,MAAQ,UAC9D,EAAalyI,OAAO9U,GAAS,GAAK,GAAG5rB,KAAK6yK,kBAAkBjnJ,WACzE5rB,KAAK6qK,OAASj/I,EACd5rB,KAAK2qK,SAAW,MAGd5/I,EAAQ2V,OAAO1gC,KAAK2qK,UAElB//I,EAAU8V,OAAO1gC,KAAK4qK,YACxB5qK,KAAKs4J,OAAO,KAAKt4J,KAAK8yK,cAAc9nJ,KAAW3kB,GAG/CrG,KAAKs4J,OAAO,UACAt4J,KAAK+yK,iBAAiB/yK,KAAK4qK,WAAahgJ,MACxC5qB,KAAK8yK,cAAc9nJ,KAAW3kB,GAI5CrG,KAAKs4J,OAAO,IAAsB,OAAlBt4J,KAAK2qK,SAAoB,GAAK,OAClC3qK,KAAKgzK,eAAehzK,KAAK2qK,SAAW5/I,MACpC/qB,KAAK+yK,iBAAiB/yK,KAAK4qK,WAAahgJ,MACxC5qB,KAAK8yK,cAAc9nJ,KAAW3kB,EAC9C,CACA,MAAOlD,GAASkD,GAAQA,EAAKlD,EAAQ,CACvC,CAGA,cAAAmvK,CAAevnJ,EAASH,EAAWI,EAAQY,EAAOvlB,UAEzCrG,KAAKizK,aACZjzK,KAAKs4J,OAAOt4J,KAAKg5C,aAAajuB,EAASH,EAAWI,EAAQY,GAAQvlB,EACpE,CAGA,YAAA2yC,CAAajuB,EAASH,EAAWI,EAAQY,GACvC,MAAQ,GAAG5rB,KAAKgzK,eAAejoJ,MACvB/qB,KAAK6yK,kBAAkBjoJ,MACvB5qB,KAAK8yK,cAAc9nJ,KAChBY,GAASA,EAAM1rB,MAAQ,IAAIF,KAAK6yK,kBAAkBjnJ,SAAe,QAC9E,CAGA,aAAAsnJ,CAAc98H,GACZ,OAAOA,EAAMjxC,KAAIu9F,GACR1iG,KAAKg5C,aAAa0pD,EAAE33E,QAAS23E,EAAE93E,UAAW83E,EAAE13E,OAAQ03E,EAAE92E,SAC5DvmB,KAAK,GACV,CAGA,cAAA2tK,CAAe/5J,GACb,MAA2B,SAApBA,EAAOuU,SACZxtB,KAAKmzK,YAAYl6J,GAAUjZ,KAAK6yK,kBAAkB55J,EACtD,CAGA,iBAAA45J,CAAkB55J,GAEhB,GAAwB,cAApBA,EAAOuU,SAIT,OAFIxtB,KAAKiyK,QAAWh5J,EAAO/Y,SAASF,KAAKiyK,SACvCh5J,EAASjZ,KAAKypG,KAAKzpG,KAAKiyK,OAAOh5J,EAAO/Y,SACjC,OAAQ+Y,EAASA,EAAOkgC,GAAK,KAAKlgC,EAAO/Y,QAElD,IAAIglC,EAAMjsB,EAAO/Y,MAEbF,KAAKyyK,cAAgBzyK,KAAKyyK,aAAaxoK,KAAKi7B,KAC9CA,EAAMA,EAAI+gD,OAAOjmF,KAAK2yK,cAEpB,EAAO1oK,KAAKi7B,KACdA,EAAMA,EAAIh3B,QAAQyjK,EAAWyB,IAE/B,MAAMC,EAAcrzK,KAAKgyK,aAAa3jF,KAAKnpD,GAC3C,OAAQmuI,EACCA,EAAY,GAAWrzK,KAAKuyK,YAAYc,EAAY,IAAMA,EAAY,GAArDnuI,EADJ,IAAIA,IAE5B,CAGA,cAAAouI,CAAex3H,GAEb,IAAI57C,EAAQ47C,EAAQ57C,MAKpB,GAJI,EAAO+J,KAAK/J,KACdA,EAAQA,EAAMgO,QAAQyjK,EAAWyB,IAG/Bt3H,EAAQnlB,SACV,MAAO,IAAIz2B,MAAU47C,EAAQnlB,WAG/B,GAAI32B,KAAK6nK,WAEP,GAAI/rH,EAAQha,SAAS5hC,QAAU,EAAIE,OACjC,MAAO,IAAIF,UAIb,OAAQ47C,EAAQha,SAAS5hC,OACzB,KAAK,EAAIE,OACP,MAAO,IAAIF,KACb,KAAK,EAAI4lK,QACP,GAAc,SAAV5lK,GAA8B,UAAVA,EACtB,OAAOA,EACT,MACF,KAAK,EAAIopE,QACP,GAAI,aAAar/D,KAAK/J,GACpB,OAAOA,EACT,MACF,KAAK,EAAI81E,QACP,GAAI,kBAAkB/rE,KAAK/J,GACzB,OAAOA,EACT,MACF,KAAK,EAAIg2E,OACP,GAAI,yCAAyCjsE,KAAK/J,GAChD,OAAOA,EAMb,MAAO,IAAIA,OAAWF,KAAK6yK,kBAAkB/2H,EAAQha,WACvD,CAGA,gBAAAixI,CAAiBnoJ,GACf,OAAOA,EAAU1qB,QAAU,EAAIwM,KAAO,IAAM1M,KAAK6yK,kBAAkBjoJ,EACrE,CAGA,aAAAkoJ,CAAc9nJ,GACZ,OAAQA,EAAOwC,UACf,IAAK,OACH,OAAOxtB,KAAKmzK,YAAYnoJ,GAC1B,IAAK,UACH,OAAOhrB,KAAKszK,eAAetoJ,GAC7B,QACE,OAAOhrB,KAAK6yK,kBAAkB7nJ,GAElC,CAGA,WAAAmoJ,EAAY,QAAEpoJ,EAAO,UAAEH,EAAS,OAAEI,EAAM,MAAEY,IACxC,MAAO,KACL5rB,KAAKgzK,eAAejoJ,MACpB/qB,KAAK+yK,iBAAiBnoJ,MACtB5qB,KAAK8yK,cAAc9nJ,KACnBsmJ,EAAe1lJ,GAAS,GAAK,IAAI5rB,KAAK6yK,kBAAkBjnJ,QAC5D,CAGA,aAAA2nJ,GACE,MAAM,IAAIxxK,MAAM,mDAClB,CAGA,OAAAyxK,CAAQzoJ,EAASH,EAAWI,EAAQY,EAAOvlB,QAE1BlG,IAAX6qB,EACFhrB,KAAKqyK,WAAWtnJ,EAAQA,QAASA,EAAQH,UAAWG,EAAQC,OAAQD,EAAQa,MAAOhB,GAE3D,mBAAVgB,EACd5rB,KAAKqyK,WAAWtnJ,EAASH,EAAWI,EAAQ,EAAcY,GAG1D5rB,KAAKqyK,WAAWtnJ,EAASH,EAAWI,EAAQY,GAAS,EAAcvlB,EACvE,CAGA,QAAAotK,CAASr9H,GACP,IAAK,IAAI/0C,EAAI,EAAGA,EAAI+0C,EAAM70C,OAAQF,IAChCrB,KAAKwzK,QAAQp9H,EAAM/0C,GACvB,CAGA,SAAAqyK,CAAUxsK,EAAQg+B,EAAK7+B,GACrB,MAAM2C,EAAW,CAAC,EAClBA,EAAS9B,GAAUg+B,EACnBllC,KAAKwyK,YAAYxpK,EAAU3C,EAC7B,CAGA,WAAAmsK,CAAYxpK,EAAU3C,GAEpB,IAAKrG,KAAKuyK,YACR,OAAOlsK,GAAQA,IAGjB,IAAIstK,GAAc,EAClB,IAAK,IAAIzsK,KAAU8B,EAAU,CAC3B,IAAIk8B,EAAMl8B,EAAS9B,GACA,iBAARg+B,IACTA,EAAMA,EAAIhlC,OACZyzK,GAAc,EAEQ,OAAlB3zK,KAAK2qK,WACP3qK,KAAKs4J,OAAOt4J,KAAK4yK,gBAAkB,MAAQ,SAC3C5yK,KAAK2qK,SAAW,KAAM3qK,KAAK6qK,OAAS,IAGtC7qK,KAAKuyK,YAAYrtI,GAAQh+B,GAAU,IACnClH,KAAKs4J,OAAO,WAAWpxJ,MAAWg+B,QACpC,CAEA,GAAIyuI,EAAa,CACf,IAAIC,EAAU,GAAIC,EAAa,GAC/B,IAAK,MAAMC,KAAa9zK,KAAKuyK,YAC3BqB,GAAWA,EAAU,IAAIE,IAAcA,EACvCD,IAAeA,EAAa,IAAM,IAAM7zK,KAAKuyK,YAAYuB,GAE3DF,EAAUlB,GAAYkB,GACtB5zK,KAAKgyK,aAAe,IAAI5oF,OAAO,OAAOyqF,cACFD,iCACtC,CAEA5zK,KAAKs4J,OAAOqb,EAAc,KAAO,GAAIttK,EACvC,CAGA,KAAAupC,CAAMhlB,EAAWI,GACf,IAA0ButB,EAAOh3C,EAA7B8jC,EAAWza,EAWf,YATkBzqB,IAAdyqB,EACFya,EAAW,GAEJza,EAAU4C,SACjB6X,EAAW,CAAC,CAAEza,UAAWA,EAAWI,OAAQA,IAEnC,WAAYJ,IACrBya,EAAW,CAACza,IAENrpB,EAAS8jC,EAAS9jC,QAE1B,KAAK,EACH,OAAO,IAAIswK,EAAe,MAE5B,KAAK,EAEH,GADAt5H,EAAQlT,EAAS,KACXkT,EAAMvtB,kBAAkB6mJ,GAC5B,OAAO,IAAIA,EAAe,KAAK7xK,KAAK+yK,iBAAiBx6H,EAAM3tB,cACjC5qB,KAAK8yK,cAAcv6H,EAAMvtB,aAEvD,QACE,IAAI+oJ,EAAW,IAEf,IAAK,IAAI1yK,EAAI,EAAGA,EAAIE,EAAQF,IAC1Bk3C,EAAQlT,EAAShkC,GAEbk3C,EAAM3tB,UAAU8V,OAAO9V,GACzBmpJ,GAAY,KAAK/zK,KAAK8yK,cAAcv6H,EAAMvtB,WAG1C+oJ,GAAY,IAAI1yK,EAAI,QAAU,QAClBrB,KAAK+yK,iBAAiBx6H,EAAM3tB,cAC5B5qB,KAAK8yK,cAAcv6H,EAAMvtB,UACrCJ,EAAY2tB,EAAM3tB,WAGtB,OAAO,IAAIinJ,EAAe,GAAGkC,QAEjC,CAGA,IAAAtqE,CAAKrqC,GACH,MAAM79D,EAAS69D,GAAYA,EAAS79D,QAAU,EAAGwyK,EAAW,IAAIppK,MAAMpJ,GACtE,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAQF,IAC1B0yK,EAAS1yK,GAAKrB,KAAK8yK,cAAc1zG,EAAS/9D,IAC5C,OAAO,IAAIwwK,EAAe,IAAIkC,EAAS1uK,KAAK,QAC9C,CAGA,GAAA5C,CAAI4D,GAEoB,OAAlBrG,KAAK2qK,WACP3qK,KAAKs4J,OAAOt4J,KAAK4yK,gBAAkB,MAAQ,SAC3C5yK,KAAK2qK,SAAW,MAGlB3qK,KAAKs4J,OAASt4J,KAAKuzK,cAGnB,IAAIS,EAAa3tK,GAAQ,EAAElD,EAAOU,KAAamwK,EAAa,KAAM3tK,EAAKlD,EAAOU,EAAU,GACxF,GAAI7D,KAAKoyK,WACP,IAAM,OAAOpyK,KAAKmyK,cAAc1vK,IAAIuxK,EAAa,CACjD,MAAO7wK,GAAoC,CAE7C6wK,GAAcA,GAChB,EAIF,SAASZ,EAAkBa,GAEzB,IAAIpwK,EAAS+tK,EAAkBqC,GAc/B,YAbe9zK,IAAX0D,IAEuB,IAArBowK,EAAU1yK,QACZsC,EAASowK,EAAU50K,WAAW,GAAGmC,SAAS,IAC1CqC,EAAS,UAAUoiF,OAAO,EAAG,EAAIpiF,EAAOtC,QAAUsC,IAIlDA,GAA+C,MAApCowK,EAAU50K,WAAW,GAAK,OAC1B40K,EAAU50K,WAAW,GAAK,MAAQmC,SAAS,IACtDqC,EAAS,cAAcoiF,OAAO,EAAG,GAAKpiF,EAAOtC,QAAUsC,IAGpDA,CACT,CAEA,SAAS6uK,GAAYjsF,GACnB,OAAOA,EAAMv4E,QAAQ,0BAA2B,OAClD,iBCvYe,MAAMgmK,GACnB,WAAAllK,CAAYonC,EAAOtvC,GAEjB9G,KAAKm0K,MAAQ,EAEbn0K,KAAKo0K,QAAUhzK,OAAO2G,OAAO,MAG7B/H,KAAKq0K,IAAM,EACXr0K,KAAKs0K,KAAOlzK,OAAO2G,OAAO,MAC1B/H,KAAKu0K,UAAYnzK,OAAO2G,OAAO,MAE/B/H,KAAKw0K,gBAAkB,EAGlB1tK,IAAWsvC,GAAUA,EAAM,KAC9BtvC,EAAUsvC,EAAOA,EAAQ,MAC3BtvC,EAAUA,GAAW,CAAC,EACtB9G,KAAKy0K,SAAW3tK,EAAQ8uB,SAAW87I,EAG/Bt7H,GACFp2C,KAAKyzK,SAASr9H,EAClB,CAEA,WAAAs+H,CAAYv7H,EAAIvjB,GACd,GAAc,MAAVujB,EAAG,GAAY,CACjB,MAAMvI,EAAW5wC,KAAKu0K,UAChBp4I,EAAQgd,EAAGn0C,MAAM,KAOvB,OANUhF,KAAKy0K,SAAS//I,KACtB10B,KAAK00K,YAAY9jI,EAASzU,EAAM,KAChCn8B,KAAK00K,YAAY9jI,EAASzU,EAAM,KAChCn8B,KAAK00K,YAAY9jI,EAASzU,EAAM,KAChCA,EAAM,IAAMn8B,KAAK00K,YAAY9jI,EAASzU,EAAM,KAGhD,CACA,OAAOouI,EAAWpxH,EAAIvjB,EACxB,CAEA,gBAAA++I,CAAiBtgJ,GACf,GAAsB,SAAlBA,EAAK7G,SAAqB,CAC5B,MAAMtoB,EAAIlF,KAAK20K,iBAAiBtgJ,EAAKtJ,SACjCtiB,EAAIzI,KAAK20K,iBAAiBtgJ,EAAKzJ,WAC/B5iB,EAAIhI,KAAK20K,iBAAiBtgJ,EAAKrJ,QACnC,IAAIk/F,EAEJ,OAAOhlH,GAAKuD,GAAKT,IAAMspK,EAAej9I,EAAKzI,SAAWs+F,EAAIlqH,KAAK20K,iBAAiBtgJ,EAAKzI,UACnF5rB,KAAKs0K,KAAKpqD,EAAI,IAAIhlH,KAAKuD,KAAKT,KAAKkiH,IAAM,IAAIhlH,KAAKuD,KAAKT,IACzD,CACA,OAAOhI,KAAKs0K,KAAK5J,EAASr2I,GAC5B,CAEA,mBAAAugJ,CAAoBvgJ,GAElB,MAAMhwB,EAAMgwB,GAA0B,SAAlBA,EAAK7G,SACvB,IAAIxtB,KAAK40K,oBAAoBvgJ,EAAKtJ,YAAY/qB,KAAK40K,oBAAoBvgJ,EAAKzJ,cAAc5qB,KAAK40K,oBAAoBvgJ,EAAKrJ,UACtHsmJ,EAAej9I,EAAKzI,OAAS,GAAK,IAAI5rB,KAAK40K,oBAAoBvgJ,EAAKzI,WAEpE8+I,EAASr2I,GAEb,OAAOr0B,KAAKs0K,KAAKjwK,KAASrE,KAAKs0K,KAAKt0K,KAAKu0K,YAAYv0K,KAAKq0K,KAAOhwK,GAAOrE,KAAKq0K,IAC/E,CAKA,QAAIv0K,GAEF,IAAIA,EAAOE,KAAKm0K,MAChB,GAAa,OAATr0K,EACF,OAAOA,EAGTA,EAAO,EACP,MAAM+zC,EAAS7zC,KAAKo0K,QACpB,IAAIS,EAAU9pJ,EACd,IAAK,MAAM+pJ,KAAYjhI,EACrB,IAAK,MAAMkhI,KAAeF,EAAWhhI,EAAOihI,GAAUD,SACpD,IAAK,MAAMG,KAAiBjqJ,EAAU8pJ,EAASE,GAC7Cj1K,GAAQsB,OAAOD,KAAK4pB,EAAQiqJ,IAAezzK,OACjD,OAAOvB,KAAKm0K,MAAQr0K,CACtB,CAMA,WAAAm1K,CAAYC,EAAQC,EAAMC,EAAMC,GAE9B,MAAMC,EAASJ,EAAOC,KAAUD,EAAOC,GAAQ,CAAC,GAC1CI,EAASD,EAAOF,KAAUE,EAAOF,GAAQ,CAAC,GAE1CI,EAAUH,KAAQE,EAGxB,OAFKC,IACHD,EAAOF,GAAQ,OACTG,CACV,CAGA,gBAAAC,CAAiBP,EAAQC,EAAMC,EAAMC,GAEnC,MAAMC,EAASJ,EAAOC,GAAOI,EAASD,EAAOF,UACtCG,EAAOF,GAGd,IAAK,MAAM50K,KAAO80K,EAAQ,cACnBD,EAAOF,GACd,IAAK,MAAM30K,KAAO60K,EAAQ,cACnBJ,EAAOC,EAChB,CASA,aAACO,CAAaR,EAAQC,EAAMC,EAAMC,EAAMM,EAAOC,EAAOC,EAAOC,GAC3D,IAAIr9E,EAAK68E,EAAQC,EACjB,MAAMQ,EAAa/1K,KAAKu0K,UAClB3oJ,EAAQ5rB,KAAK00K,YAAYoB,EAAS91K,KAAKy0K,UACvC9kK,EAAQ,CAAEob,QAAS,KAAMH,UAAW,KAAMI,OAAQ,MAGpDmqJ,KAAO18E,EAAMy8E,EAAQA,EAAS,CAAC,GAAGC,GAAQ18E,EAAI08E,IAClD,IAAK,MAAMa,KAAUd,EACnB,GAAII,EAASJ,EAAOc,GAAS,CAC3BrmK,EAAMgmK,GAAS31K,KAAK00K,YAAYqB,EAAWC,GAASh2K,KAAKy0K,UAErDW,KAAO38E,EAAM68E,EAAQA,EAAS,CAAC,GAAGF,GAAQ38E,EAAI28E,IAClD,IAAK,MAAM1T,KAAU4T,EACnB,GAAIC,EAASD,EAAO5T,GAAS,CAC3B/xJ,EAAMimK,GAAS51K,KAAK00K,YAAYqB,EAAWrU,GAAS1hK,KAAKy0K,UAEzD,MAAMpnK,EAASgoK,EAAQA,KAAQE,EAAS,CAACF,GAAQ,GAAMj0K,OAAOD,KAAKo0K,GAEnE,IAAK,IAAIj0K,EAAI,EAAGA,EAAI+L,EAAO9L,OAAQD,IACjCqO,EAAMkmK,GAAS71K,KAAK00K,YAAYqB,EAAW1oK,EAAO/L,IAAKtB,KAAKy0K,gBACtDz0K,KAAKy0K,SAAS//I,KAAK/kB,EAAMob,QAASpb,EAAMib,UAAWjb,EAAMqb,OAAQY,EAE3E,CAEJ,CAEJ,CAGA,KAAAqqJ,CAAMf,EAAQ9nK,GACZ,IAAK,MAAM+nK,KAAQD,EACjB9nK,EAAS+nK,EACb,CAGA,WAAAe,CAAYhB,EAAQC,EAAM/nK,GACxB,IAAIkoK,EAAQF,EACZ,GAAIE,EAASJ,EAAOC,GAClB,IAAKC,KAAQE,EACXloK,EAASgoK,EAEf,CAGA,WAAAe,CAAYjB,EAAQE,EAAMhoK,GACxB,IAAI+nK,EAAMG,EACV,IAAKH,KAAQD,EACXI,EAASJ,EAAOC,GACZG,EAAOF,IACThoK,EAAS+nK,EAEf,CAGA,YAAAiB,CAAalB,EAAQC,EAAMC,EAAMhoK,GAC/B,IAAIkoK,EAAQC,EAAQF,EACpB,IAAKC,EAASJ,EAAOC,MAAWI,EAASD,EAAOF,IAC9C,IAAKC,KAAQE,EACXnoK,EAASioK,EAEf,CAKA,aAAAgB,CAAcnB,EAAQC,EAAMC,EAAMC,GAChC,IAAe58E,EAAK68E,EAAQC,EAAxBroJ,EAAQ,EAGRioJ,KAAO18E,EAAMy8E,EAAQA,EAAS,CAAC,GAAGC,GAAQ18E,EAAI08E,IAClD,IAAK,MAAMa,KAAUd,EACnB,GAAII,EAASJ,EAAOc,GAAS,CAEvBZ,KAAO38E,EAAM68E,EAAQA,EAAS,CAAC,GAAGF,GAAQ38E,EAAI28E,IAClD,IAAK,MAAM1T,KAAU4T,GACfC,EAASD,EAAO5T,MAEd2T,EAAOA,KAAQE,GAAWroJ,IAEzBA,GAAS9rB,OAAOD,KAAKo0K,GAAQh0K,OAGxC,CAEF,OAAO2rB,CACT,CAIA,UAAAopJ,CAAW1qJ,GACT,KA0jBkB,iBADJ1mB,EAzjBA0mB,IA0jBgB1mB,aAAahD,QAzjBzC,OAAOlC,KAAKo0K,QAwjBlB,IAAkBlvK,EAvjBd,MAAM2uC,EAAS,CAAC,EAEhB,OADAA,EAAOjoB,GAAS5rB,KAAKo0K,QAAQxoJ,GACtBioB,CACT,CAIA,eAAA0iI,CAAgBnpK,GACd,MAAMopK,EAAYp1K,OAAO2G,OAAO,MAChC,OAAOoxC,IACCA,KAAMq9H,IACVA,EAAUr9H,IAAM,EAChB/rC,EAASpN,KAAK00K,YAAY10K,KAAKu0K,UAAUp7H,GAAKn5C,KAAKy0K,WACrD,CAEJ,CAOA,GAAAh2J,CAAIiW,GAEF,OADA10B,KAAKwzK,QAAQ9+I,GACN10B,IACT,CAIA,OAAAwzK,CAAQzoJ,EAASH,EAAWI,EAAQY,GAE7BhB,IACHgB,EAAQb,EAAQa,MAAOZ,EAASD,EAAQC,OACtCJ,EAAYG,EAAQH,UAAWG,EAAUA,EAAQA,SAGrDa,EAAQ8+I,EAAS9+I,GAGjB,IAAI6qJ,EAAYz2K,KAAKo0K,QAAQxoJ,GAExB6qJ,IACHA,EAAYz2K,KAAKo0K,QAAQxoJ,GAAS,CAAEipJ,SAAU,CAAC,EAAG6B,WAAY,CAAC,EAAGhoJ,QAAS,CAAC,GAG5EttB,OAAOsoB,OAAO+sJ,IAMhB1rJ,EAAY/qB,KAAK40K,oBAAoB7pJ,GACrCH,EAAY5qB,KAAK40K,oBAAoBhqJ,GACrCI,EAAYhrB,KAAK40K,oBAAoB5pJ,GAErC,MAAM6vI,EAAU76J,KAAKi1K,YAAYwB,EAAU5B,SAAY9pJ,EAAWH,EAAWI,GAM7E,OALAhrB,KAAKi1K,YAAYwB,EAAUC,WAAY9rJ,EAAWI,EAAWD,GAC7D/qB,KAAKi1K,YAAYwB,EAAU/nJ,QAAY1D,EAAWD,EAAWH,GAG7D5qB,KAAKm0K,MAAQ,KACNtZ,CACT,CAGA,QAAA4Y,CAASr9H,GACP,IAAK,IAAI/0C,EAAI,EAAGA,EAAI+0C,EAAM70C,OAAQF,IAChCrB,KAAKwzK,QAAQp9H,EAAM/0C,GACvB,CAIA,OAAOqzB,GAEL,OADA10B,KAAK22K,WAAWjiJ,GACT10B,IACT,CAGA,GAAAmN,CAAIypK,EAAehsJ,EAAWI,EAAQY,GAGpC,OAFIgrJ,GAAiBA,EAAc7rJ,WAC9BA,QAAS6rJ,EAAehsJ,YAAWI,SAAQY,SAAUgrJ,IAClD52K,KAAK62K,UAAUD,EAAehsJ,EAAWI,EAAQY,GAAO1lB,OAAOG,IACzE,CAGA,MAAAohD,CAAOroC,GAEL,OADAA,EAAOrE,GAAG,QAAQ2Z,IAAU10B,KAAKwzK,QAAQ9+I,EAAK,IACvCtV,CACT,CAGA,UAAAu3J,CAAW5rJ,EAASH,EAAWI,EAAQY,GAEhChB,IACHgB,EAAQb,EAAQa,MAAOZ,EAASD,EAAQC,OACtCJ,EAAYG,EAAQH,UAAWG,EAAUA,EAAQA,SAGrDa,EAAQ8+I,EAAS9+I,GAIjB,MAAMioB,EAAS7zC,KAAKo0K,QACpB,IAAIqC,EAAW5B,EAAU6B,EACzB,MAAM3rJ,EAAaA,GAAW/qB,KAAK20K,iBAAiB5pJ,MAAeH,EAAYA,GAAa5qB,KAAK20K,iBAAiB/pJ,MAC5GI,EAAaA,GAAUhrB,KAAK20K,iBAAiB3pJ,MAAeyrJ,EAAY5iI,EAAOjoB,MAC/EipJ,EAAa4B,EAAU5B,SAAS9pJ,MAChC2rJ,EAAa7B,EAASjqJ,KACtBI,KAAU0rJ,GACd,OAAO,EAST,IAAK3rJ,KANL/qB,KAAKy1K,iBAAiBgB,EAAU5B,SAAY9pJ,EAAWH,EAAWI,GAClEhrB,KAAKy1K,iBAAiBgB,EAAUC,WAAY9rJ,EAAWI,EAAWD,GAClE/qB,KAAKy1K,iBAAiBgB,EAAU/nJ,QAAY1D,EAAWD,EAAWH,GAC/C,OAAf5qB,KAAKm0K,OAAgBn0K,KAAKm0K,QAGdsC,EAAU5B,SAAU,OAAO,EAE3C,cADOhhI,EAAOjoB,IACP,CACT,CAGA,WAAAs4F,CAAY9tE,GACV,IAAK,IAAI/0C,EAAI,EAAGA,EAAI+0C,EAAM70C,OAAQF,IAChCrB,KAAK22K,WAAWvgI,EAAM/0C,GAC1B,CAGA,MAAAy3D,CAAO15C,GAEL,OADAA,EAAOrE,GAAG,QAAQ2Z,IAAU10B,KAAK22K,WAAWjiJ,EAAK,IAC1CtV,CACT,CAIA,aAAA03J,CAAc/rJ,EAASH,EAAWI,EAAQY,GACxC,MAAMxM,EAAS,IAAI,GAAAD,SAAS,CAAE2iJ,YAAY,IAQ1C,OANA1iJ,EAAOK,MAAQ,KACb,IAAK,MAAMiV,KAAQ10B,KAAK62K,UAAU9rJ,EAASH,EAAWI,EAAQY,GAC5DxM,EAAO7b,KAAKmxB,GACdtV,EAAO7b,KAAK,KAAK,EAGZvD,KAAK84D,OAAO15C,EACrB,CAGA,WAAAi6C,CAAYztC,GACV,OAAO5rB,KAAK82K,cAAc,KAAM,KAAM,KAAMlrJ,EAC9C,CAIA,QAAAmrJ,CAAShsJ,EAASH,EAAWI,EAAQY,GACnC,MAAO,IAAI5rB,KAAK62K,UAAU9rJ,EAASH,EAAWI,EAAQY,GACxD,CAIA,UAACirJ,CAAU9rJ,EAASH,EAAWI,EAAQY,GAErCA,EAAQA,GAAS8+I,EAAS9+I,GAE1B,MAAMioB,EAAS7zC,KAAKs2K,WAAW1qJ,GAC/B,IAAIorJ,EAASC,EAAWC,EAAaC,EAGrC,KAAIpsJ,KAAeksJ,EAAcj3K,KAAK20K,iBAAiB5pJ,KACnDH,KAAessJ,EAAcl3K,KAAK20K,iBAAiB/pJ,KACnDI,KAAemsJ,EAAcn3K,KAAK20K,iBAAiB3pJ,KAGvD,IAAK,MAAM8qJ,KAAWjiI,GAEhBmjI,EAAUnjI,EAAOiiI,MAEfmB,EACEE,QAEKn3K,KAAK01K,aAAasB,EAAQtoJ,QAASyoJ,EAAUF,EAAWC,EAC7C,SAAU,UAAW,YAAapB,SAG7C91K,KAAK01K,aAAasB,EAAQnC,SAAUoC,EAAWC,EAAa,KACjD,UAAW,YAAa,SAAUpB,GAE/CoB,QAEAl3K,KAAK01K,aAAasB,EAAQN,WAAYQ,EAAaC,EAAU,KAClD,YAAa,SAAU,UAAWrB,GAC7CqB,QAEAn3K,KAAK01K,aAAasB,EAAQtoJ,QAASyoJ,EAAU,KAAM,KACxC,SAAU,UAAW,YAAarB,SAG7C91K,KAAK01K,aAAasB,EAAQnC,SAAU,KAAM,KAAM,KACrC,UAAW,YAAa,SAAUiB,GAG5D,CAQA,KAAA9xK,CAAM+mB,EAASH,EAAWI,EAAQY,GAChC,OAAO,IAAIwrJ,GAA6Bp3K,KAAM+qB,EAASH,EAAWI,EAAQY,EAC5E,CAIA,UAAA89B,CAAW3+B,EAASH,EAAWI,EAAQY,GAErCA,EAAQA,GAAS8+I,EAAS9+I,GAE1B,MAAMioB,EAAS7zC,KAAKs2K,WAAW1qJ,GAC/B,IAAeorJ,EAASC,EAAWC,EAAaC,EAA5CjqJ,EAAQ,EAGZ,GAAInC,KAAeksJ,EAAcj3K,KAAK20K,iBAAiB5pJ,KACnDH,KAAessJ,EAAcl3K,KAAK20K,iBAAiB/pJ,KACnDI,KAAemsJ,EAAcn3K,KAAK20K,iBAAiB3pJ,IACrD,OAAO,EAET,IAAK,MAAM8qJ,KAAWjiI,GAEhBmjI,EAAUnjI,EAAOiiI,MAKf5oJ,GAHAnC,EACEC,EAEOhrB,KAAKq2K,cAAcW,EAAQtoJ,QAASyoJ,EAAUF,EAAWC,GAGzDl3K,KAAKq2K,cAAcW,EAAQnC,SAAUoC,EAAWC,EAAaC,GAEjEvsJ,EAEE5qB,KAAKq2K,cAAcW,EAAQN,WAAYQ,EAAaC,EAAUF,GAI9Dj3K,KAAKq2K,cAAcW,EAAQtoJ,QAASyoJ,EAAUF,EAAWC,IAIxE,OAAOhqJ,CACT,CAIA,OAAAxiB,CAAQ0C,EAAU2d,EAASH,EAAWI,EAAQY,GAC5C5rB,KAAKm+B,MAAKzJ,IACRtnB,EAASsnB,IACF,IACN3J,EAASH,EAAWI,EAAQY,EACjC,CAKA,KAAAyW,CAAMj1B,EAAU2d,EAASH,EAAWI,EAAQY,GAC1C,IAAIuS,GAAO,EACX,MAAMkE,GAASriC,KAAKm+B,MAAKzJ,IACvByJ,GAAO,GACC/wB,EAASsnB,KAChB3J,EAASH,EAAWI,EAAQY,GAC/B,OAAOuS,GAAQkE,CACjB,CAKA,IAAAlE,CAAK/wB,EAAU2d,EAASH,EAAWI,EAAQY,GACzC,IAAK,MAAM8I,KAAQ10B,KAAK62K,UAAU9rJ,EAASH,EAAWI,EAAQY,GAC5D,GAAIxe,EAASsnB,GACX,OAAO,EACX,OAAO,CACT,CAIA,WAAA2iJ,CAAYzsJ,EAAWI,EAAQY,GAC7B,MAAMU,EAAU,GAEhB,OADAtsB,KAAKs3K,aAAYpyK,IAAOonB,EAAQ/oB,KAAK2B,EAAE,GAAK0lB,EAAWI,EAAQY,GACxDU,CACT,CAIA,WAAAgrJ,CAAYlqK,EAAUwd,EAAWI,EAAQY,GAEvCA,EAAQA,GAAS8+I,EAAS9+I,GAE1B,MAAMioB,EAAS7zC,KAAKs2K,WAAW1qJ,GAC/B,IAAIorJ,EAASE,EAAaC,EAI1B,GAHA/pK,EAAWpN,KAAKu2K,gBAAgBnpK,KAG5Bwd,KAAessJ,EAAcl3K,KAAK20K,iBAAiB/pJ,KACnDI,KAAemsJ,EAAcn3K,KAAK20K,iBAAiB3pJ,KAGvD,IAAKY,KAASioB,GAERmjI,EAAUnjI,EAAOjoB,MAEfsrJ,EACEC,EAEFn3K,KAAKo2K,aAAaY,EAAQN,WAAYQ,EAAaC,EAAU/pK,GAG7DpN,KAAKm2K,YAAYa,EAAQnC,SAAUqC,EAAa9pK,GAE3C+pK,EAEPn3K,KAAKk2K,YAAYc,EAAQtoJ,QAASyoJ,EAAU/pK,GAG5CpN,KAAKi2K,MAAMe,EAAQnC,SAAUznK,GAGrC,CAIA,aAAAmqK,CAAcxsJ,EAASC,EAAQY,GAC7B,MAAMU,EAAU,GAEhB,OADAtsB,KAAKw3K,eAAc/uK,IAAO6jB,EAAQ/oB,KAAKkF,EAAE,GAAKsiB,EAASC,EAAQY,GACxDU,CACT,CAIA,aAAAkrJ,CAAcpqK,EAAU2d,EAASC,EAAQY,GAEvCA,EAAQA,GAAS8+I,EAAS9+I,GAE1B,MAAMioB,EAAS7zC,KAAKs2K,WAAW1qJ,GAC/B,IAAIorJ,EAASC,EAAWE,EAIxB,GAHA/pK,EAAWpN,KAAKu2K,gBAAgBnpK,KAG5B2d,KAAeksJ,EAAcj3K,KAAK20K,iBAAiB5pJ,KACnDC,KAAemsJ,EAAcn3K,KAAK20K,iBAAiB3pJ,KAGvD,IAAKY,KAASioB,GAERmjI,EAAUnjI,EAAOjoB,MAEfqrJ,EACEE,EAEFn3K,KAAKo2K,aAAaY,EAAQtoJ,QAASyoJ,EAAUF,EAAW7pK,GAGxDpN,KAAKk2K,YAAYc,EAAQnC,SAAUoC,EAAW7pK,GAEzC+pK,EAEPn3K,KAAKm2K,YAAYa,EAAQN,WAAYS,EAAU/pK,GAG/CpN,KAAKi2K,MAAMe,EAAQN,WAAYtpK,GAGvC,CAIA,UAAAqqK,CAAW1sJ,EAASH,EAAWgB,GAC7B,MAAMU,EAAU,GAEhB,OADAtsB,KAAK03K,YAAW1vK,IAAOskB,EAAQ/oB,KAAKyE,EAAE,GAAK+iB,EAASH,EAAWgB,GACxDU,CACT,CAIA,UAAAorJ,CAAWtqK,EAAU2d,EAASH,EAAWgB,GAEvCA,EAAQA,GAAS8+I,EAAS9+I,GAE1B,MAAMioB,EAAS7zC,KAAKs2K,WAAW1qJ,GAC/B,IAAIorJ,EAASC,EAAWC,EAIxB,GAHA9pK,EAAWpN,KAAKu2K,gBAAgBnpK,KAG5B2d,KAAeksJ,EAAcj3K,KAAK20K,iBAAiB5pJ,KACnDH,KAAessJ,EAAcl3K,KAAK20K,iBAAiB/pJ,KAGvD,IAAKgB,KAASioB,GAERmjI,EAAUnjI,EAAOjoB,MAEfqrJ,EACEC,EAEFl3K,KAAKo2K,aAAaY,EAAQnC,SAAUoC,EAAWC,EAAa9pK,GAG5DpN,KAAKm2K,YAAYa,EAAQtoJ,QAASuoJ,EAAW7pK,GAExC8pK,EAEPl3K,KAAKk2K,YAAYc,EAAQN,WAAYQ,EAAa9pK,GAGlDpN,KAAKi2K,MAAMe,EAAQtoJ,QAASthB,GAGpC,CAIA,SAAAuqK,CAAU5sJ,EAASH,EAAWI,GAC5B,MAAMsB,EAAU,GAEhB,OADAtsB,KAAK43K,WAAU1tD,IAAO59F,EAAQ/oB,KAAK2mH,EAAE,GAAKn/F,EAASH,EAAWI,GACvDsB,CACT,CAIA,SAAAsrJ,CAAUxqK,EAAU2d,EAASH,EAAWI,GACtC,IAAK,MAAMY,KAAS5rB,KAAKo0K,QACvBp0K,KAAKm+B,MAAKzJ,IACRtnB,EAASsnB,EAAK9I,QACP,IACNb,EAASH,EAAWI,EAAQY,EAEnC,CAGA,eAAAisJ,CAAgBC,GACd,IAAI9tK,EAAMmU,EAEV,GAAI25J,EAEF,IADA9tK,EAAO8tK,EAAgB,KAAKA,IAAiB35J,EAAQ,EAC9Cne,KAAKs0K,KAAKtqK,IACfA,EAAO8tK,EAAgB35J,SAIzB,GAAKnU,EAAO,MAAMhK,KAAKw0K,wBAChBx0K,KAAKs0K,KAAKtqK,IAKnB,OAFAhK,KAAKs0K,KAAKtqK,KAAUhK,KAAKq0K,IACzBr0K,KAAKu0K,UAAUv0K,KAAKq0K,KAAOrqK,EACpBhK,KAAKy0K,SAASv/I,UAAUlrB,EAAKi8E,OAAO,GAC7C,CAIA,YAAA8xF,EAAa,OAAEj/G,GAAS,EAAK,aAAE2+B,GAAe,GAAU,CAAC,GACvD,MAAMy6E,EAAQ,CAAC,EACTvwK,EAAU81F,EAAe,KAAO,EACxB,CAAEjgD,EAAMzoC,KAAc,MAAM,IAAIhN,MAAM,GAAGy1C,EAAKt3C,SAAS6O,IAAa,EAG5EipK,EAAQh4K,KAAK+2K,SAAS,KAAM,EAAWhR,IAAIxS,KAAM,EAAWwS,IAAI5kD,IAAK,MACrEouC,EAAWz2F,EAAS,IAAIk/G,GAAS,GAsFvC,OArFAA,EAAMttK,SAAQutK,IACZ,MAAM5tK,EAAQ,GACd,IACI2xC,EACAk8H,EAFAC,GAAY,EAGhB,MAAMvsJ,EAAQqsJ,EAASrsJ,MAGvB,IAAIoS,EAAUi6I,EAASltJ,QACvB,KAAOiT,IAAYm6I,GAAW,CAC5B,MAAMC,EAAcp4K,KAAK+2K,SAAS,KAAM,KAAM/4I,EAAS,MACjDq6I,EAAer4K,KAAK+2K,SAAS/4I,EAAS,KAAM,KAAM,MACxD,IAAItJ,EAAMynB,EAAQ,KAAMo3G,EAAO,KAAM9vJ,EAAS,KAG9C,IAAK,IAAIpC,EAAI,EAAGA,EAAIg3K,EAAa92K,SAAW42K,EAAW92K,IACrDqzB,EAAO2jJ,EAAah3K,GACfqzB,EAAK9I,MAAM8U,OAAO9U,GAEdowB,EACPm8H,EAAYx2K,EAAQq8B,EAAS,yBAGtBtJ,EAAK9J,UAAU1qB,QAAU,EAAW6lK,IAAI5pH,MAC3CA,EACFg8H,EAAYx2K,EAAQq8B,EAAS,+BAE7BuxH,EAAShsJ,KAAK44C,EAAQznB,GAIjBA,EAAK9J,UAAU1qB,QAAU,EAAW6lK,IAAIxS,KAC3CA,EACF4kB,EAAYx2K,EAAQq8B,EAAS,8BAE7BuxH,EAAShsJ,KAAKgwJ,EAAO7+H,GAIhB0jJ,EAAY72K,OACnB42K,EAAYx2K,EAAQq8B,EAAS,gCAE7Bge,EAAOtnB,EACPwjJ,EAAU,WAzBVC,EAAYx2K,EAAQq8B,EAAS,gCA+BjC,IAAK,IAAI38B,EAAI,EAAGA,EAAI+2K,EAAY72K,SAAW42K,IAAa92K,EACtDqzB,EAAO0jJ,EAAY/2K,GACf26C,EACFm8H,EAAYx2K,EAAQq8B,EAAS,2BAEtBtJ,EAAK9J,UAAU1qB,QAAU,EAAW6lK,IAAIxS,KAC3C9vJ,EACF00K,EAAYx2K,EAAQq8B,EAAS,8BAE7Bv6B,EAASixB,GAGXsnB,EAAOtnB,EACPwjJ,EAAU,UAKT/7H,EAGH9xC,EAAMomD,QAAQtU,EAAMnxB,QAFpBmtJ,EAAYx2K,EAAQq8B,EAAS,oBAG/BA,EAAUv6B,GAAUA,EAAOsnB,OAC7B,CAGIotJ,EACFr/G,GAAS,EAEF9c,IACPk2H,EAAMl2H,EAAKk8H,GAASh4K,OAASmK,EAAK,IAIlCyuD,GACF94D,KAAKkkH,YAAYqrC,GACZ2iB,CACT,CAKA,EAAE3oK,OAAOe,kBACAtK,KAAK62K,WACd,EAWF,MAAMO,WAAqC,GAAAj4J,SACzC,WAAAnQ,CAAYspK,EAASvtJ,EAASH,EAAWI,EAAQY,GAC/CvM,MAAM,CAAEyiJ,YAAY,IACpB1gK,OAAOoU,OAAOxV,KAAM,CAAEs4K,UAASvtJ,UAASH,YAAWI,SAAQY,SAC7D,CAEA,YAAI2sJ,GACF,IAAKv4K,KAAKw4K,UAAW,CACnB,MAAM,QAAEF,EAAO,MAAE1sJ,EAAK,OAAEZ,EAAM,UAAEJ,EAAS,QAAEG,GAAY/qB,KACjDy4K,EAAWz4K,KAAKw4K,UAAY,IAAItE,GAAQ,CAAEt+I,QAAS0iJ,EAAQ7D,WACjE,IAAK,MAAM//I,KAAQ4jJ,EAAQzB,UAAU9rJ,EAASH,EAAWI,EAAQY,GAC/D6sJ,EAASjF,QAAQ9+I,EACrB,CACA,OAAO10B,KAAKw4K,SACd,CAEA,QAAI14K,GACF,OAAOE,KAAKu4K,SAASz4K,IACvB,CAEA,KAAA2f,GACE,IAAK,MAAMiV,KAAQ10B,KACjBA,KAAKuD,KAAKmxB,GACZ10B,KAAKuD,KAAK,KACZ,CAEA,GAAAkb,CAAIiW,GACF,OAAO10B,KAAKu4K,SAAS95J,IAAIiW,EAC3B,CAEA,OAAOA,GACL,OAAO10B,KAAKu4K,SAAS1nJ,OAAO6D,EAC9B,CAEA,GAAAvnB,CAAIunB,GACF,OAAO10B,KAAKu4K,SAASprK,IAAIunB,EAC3B,CAEA,KAAA1wB,CAAM+mB,EAASH,EAAWI,EAAQY,GAChC,OAAO,IAAIwrJ,GAA6Bp3K,KAAKu4K,SAAUxtJ,EAASH,EAAWI,EAAQY,EACrF,CAEA,EAAEriB,OAAOe,kBACAtK,KAAKw4K,WAAax4K,KAAKs4K,QAAQzB,UAAU72K,KAAK+qB,QAAS/qB,KAAK4qB,UAAW5qB,KAAKgrB,OAAQhrB,KAAK4rB,MAClG,ECh0Ba,MAAM8sJ,WAAuB,GAAA7W,UAC1C,WAAA7yJ,CAAYlI,GAMV,IAAI6xK,EAAQC,EALZv5J,MAAM,CAAEw5J,eAAe,IACvB74K,KAAKw4J,eAAesJ,YAAa,EAGlB,IAAIiJ,EAASjkK,GAErBmG,MAAM,CACX8N,GAAI,CAACqF,EAAOhT,KACV,OAAQgT,GACR,IAAK,OAAQu4J,EAASvrK,EAAU,MAChC,IAAK,MAASwrK,EAAQxrK,EACtB,IAIF,CAACjK,EAAOuxB,KAAWvxB,GAASnD,KAAK0D,KAAK,QAASP,IAAUuxB,GAAQ10B,KAAKuD,KAAKmxB,EAAK,IAEhF,CAACxtB,EAAQL,KAAU7G,KAAK0D,KAAK,SAAUwD,EAAQL,EAAI,IAIrD7G,KAAK+hE,WAAa,CAACzoD,EAAOmB,EAAUpU,KAAWsyK,EAAOr/J,GAAQjT,GAAM,EACpErG,KAAK6uC,OAASxoC,IAAUuyK,IAASvyK,GAAM,CACzC,CAGA,MAAAohD,CAAOroC,GAIL,OAHAA,EAAOrE,GAAG,QAASzB,IAAWtZ,KAAK2C,MAAM2W,EAAM,IAC/C8F,EAAOrE,GAAG,OAAS,KAAa/a,KAAKyC,KAAK,IAC1C2c,EAAOrE,GAAG,SAAS5X,IAAWnD,KAAK0D,KAAK,QAASP,EAAM,IAChDnD,IACT,ECjCa,MAAM84K,WAAuB,GAAAjX,UAC1C,WAAA7yJ,CAAYlI,GACVuY,MAAM,CAAE5E,SAAU,OAAQs+J,oBAAoB,IAG9C,MAAMnhH,EAAS53D,KAAKg5K,QAAU,IAAIlH,EAAS,CACzCnvK,MAAO,CAAC+xB,EAAMja,EAAUrN,KAAepN,KAAKuD,KAAKmxB,GAAOtnB,GAAYA,GAAU,EAC9E3K,IAAK2K,IAAcpN,KAAKuD,KAAK,MAAO6J,GAAYA,GAAU,GACzDtG,GAGH9G,KAAK+hE,WAAa,CAACrtC,EAAMja,EAAUpU,KAAWuxD,EAAO47G,QAAQ9+I,EAAMruB,EAAK,EACxErG,KAAK6uC,OAASxoC,IAAUuxD,EAAOn1D,IAAI4D,EAAK,CAC1C,CAGA,MAAAohD,CAAOroC,GAKL,OAJAA,EAAOrE,GAAG,QAAU2Z,IAAU10B,KAAK2C,MAAM+xB,EAAK,IAC9CtV,EAAOrE,GAAG,OAAU,KAAQ/a,KAAKyC,KAAK,IACtC2c,EAAOrE,GAAG,SAAU5X,IAAWnD,KAAK0D,KAAK,QAASP,EAAM,IACxDic,EAAOrE,GAAG,UAAU,CAAC7T,EAAQg+B,KAAUllC,KAAKg5K,QAAQtF,UAAUxsK,EAAQg+B,EAAI,IACnEllC,IACT,ECuBF,UACEu1H,MAAK,EACLx1H,OAAM,EACNk5K,OAAM,EACNC,MAAK,GACLljE,aAAY,GACZ79C,aAAY,GACZ3iC,KAAI,EAEJlL,YAAW,EAEXkjD,KAAI,EACJgT,UAAS,EACTrQ,QAAO,EACPyY,UAAS,EACTlb,SAAQ,EACRsiB,aAAY,EACZ/K,KAAI,EACJk0F,OAAM,EAEN5O,WAAU,EACVG,SAAQ,cCtEV,IAOI0O,EACAC,EARAphJ,EAAUh0B,EAAOC,QAAU,CAAC,EAUhC,SAASo1K,IACL,MAAM,IAAIv3K,MAAM,kCACpB,CACA,SAASw3K,IACL,MAAM,IAAIx3K,MAAM,oCACpB,CAqBA,SAASy3K,EAAWC,GAChB,GAAIL,IAAqB5+H,WAErB,OAAOA,WAAWi/H,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqB5+H,WAEhE,OADA4+H,EAAmB5+H,WACZA,WAAWi/H,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,EACjC,CAAE,MAAMtzK,GACJ,IAEI,OAAOizK,EAAiBzwK,KAAK,KAAM8wK,EAAK,EAC5C,CAAE,MAAMtzK,GAEJ,OAAOizK,EAAiBzwK,KAAK3I,KAAMy5K,EAAK,EAC5C,CACJ,CAGJ,EA5CC,WACG,IAEQL,EADsB,mBAAf5+H,WACYA,WAEA8+H,CAE3B,CAAE,MAAOnzK,GACLizK,EAAmBE,CACvB,CACA,IAEQD,EADwB,mBAAjB13H,aACcA,aAEA43H,CAE7B,CAAE,MAAOpzK,GACLkzK,EAAqBE,CACzB,CACJ,CAnBA,GAwEA,IAEIG,EAFAC,EAAQ,GACRC,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaF,IAGlBE,GAAW,EACPF,EAAan4K,OACbo4K,EAAQD,EAAaxyI,OAAOyyI,GAE5BE,GAAc,EAEdF,EAAMp4K,QACNw4K,IAER,CAEA,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAIvkE,EAAUmkE,EAAWM,GACzBF,GAAW,EAGX,IADA,IAAI9gF,EAAM6gF,EAAMp4K,OACVu3F,GAAK,CAGP,IAFA4gF,EAAeC,EACfA,EAAQ,KACCE,EAAa/gF,GACd4gF,GACAA,EAAaG,GAAYvxJ,MAGjCuxJ,GAAc,EACd/gF,EAAM6gF,EAAMp4K,MAChB,CACAm4K,EAAe,KACfE,GAAW,EAnEf,SAAyBI,GACrB,GAAIX,IAAuB13H,aAEvB,OAAOA,aAAaq4H,GAGxB,IAAKX,IAAuBE,IAAwBF,IAAuB13H,aAEvE,OADA03H,EAAqB13H,aACdA,aAAaq4H,GAExB,IAEI,OAAOX,EAAmBW,EAC9B,CAAE,MAAO7zK,GACL,IAEI,OAAOkzK,EAAmB1wK,KAAK,KAAMqxK,EACzC,CAAE,MAAO7zK,GAGL,OAAOkzK,EAAmB1wK,KAAK3I,KAAMg6K,EACzC,CACJ,CAIJ,CA0CIC,CAAgB5kE,EAlBhB,CAmBJ,CAgBA,SAAS6kE,EAAKT,EAAKt5J,GACfngB,KAAKy5K,IAAMA,EACXz5K,KAAKmgB,MAAQA,CACjB,CAWA,SAAS2wJ,IAAQ,CA5BjB74I,EAAQkiJ,SAAW,SAAUV,GACzB,IAAIh1K,EAAO,IAAIkG,MAAMgY,UAAUphB,OAAS,GACxC,GAAIohB,UAAUphB,OAAS,EACnB,IAAK,IAAIF,EAAI,EAAGA,EAAIshB,UAAUphB,OAAQF,IAClCoD,EAAKpD,EAAI,GAAKshB,UAAUthB,GAGhCs4K,EAAMp2K,KAAK,IAAI22K,EAAKT,EAAKh1K,IACJ,IAAjBk1K,EAAMp4K,QAAiBq4K,GACvBJ,EAAWO,EAEnB,EAOAG,EAAKx4K,UAAU4mB,IAAM,WACjBtoB,KAAKy5K,IAAIlzK,MAAM,KAAMvG,KAAKmgB,MAC9B,EACA8X,EAAQmiJ,MAAQ,UAChBniJ,EAAQoiJ,SAAU,EAClBpiJ,EAAQqiJ,IAAM,CAAC,EACfriJ,EAAQsiJ,KAAO,GACftiJ,EAAQzd,QAAU,GAClByd,EAAQuiJ,SAAW,CAAC,EAIpBviJ,EAAQld,GAAK+1J,EACb74I,EAAQo7E,YAAcy9D,EACtB74I,EAAQwhC,KAAOq3G,EACf74I,EAAQhd,IAAM61J,EACd74I,EAAQymC,eAAiBoyG,EACzB74I,EAAQy7E,mBAAqBo9D,EAC7B74I,EAAQv0B,KAAOotK,EACf74I,EAAQq7E,gBAAkBw9D,EAC1B74I,EAAQs7E,oBAAsBu9D,EAE9B74I,EAAQm7E,UAAY,SAAUppG,GAAQ,MAAO,EAAG,EAEhDiuB,EAAQ6pB,QAAU,SAAU93C,GACxB,MAAM,IAAIjI,MAAM,mCACpB,EAEAk2B,EAAQwiJ,IAAM,WAAc,MAAO,GAAI,EACvCxiJ,EAAQyiJ,MAAQ,SAAUzzE,GACtB,MAAM,IAAIllG,MAAM,iCACpB,EACAk2B,EAAQ0iJ,MAAQ,WAAa,OAAO,CAAG,oBCvLvC,WACI,IAAI7xC,EAGNA,EADqB,iBAAX5oH,QAAuBA,OAC1BA,OAEA,EAAAgqG,EAG6BjmH,EAAOC,QAC3CD,EAAOC,QAAU4kI,EAAKjjI,QAAUijI,EAAKjjI,QAAUA,EACpCijI,EAAKjjI,UAChBijI,EAAKjjI,QAAUA,GAIhB,IAAI+0K,EAAO9xC,EAAK+xC,cAAgB,SAAS5gH,GAAMzf,WAAWyf,EAAI,EAAI,EAGlE,SAASl4C,EAAKk4C,EAAIx0D,GACjB,OAAO,WACNw0D,EAAG1zD,MAAMd,EAASkd,UACnB,CACD,CAEA,IAAI/X,EAAUD,MAAMC,SAAW,SAAS1K,GAAS,MAAiD,mBAA1CkB,OAAOM,UAAUF,SAASmH,KAAKzI,EAA4B,EAEnH,SAAS2F,EAAQo0D,GAChB,GAAoB,iBAATj6D,KAAmB,MAAM,IAAIkK,UAAU,wCAClD,GAAkB,mBAAP+vD,EAAmB,MAAM,IAAI/vD,UAAU,kBAClDlK,KAAK86K,OAAS,KACd96K,KAAK43J,OAAS,KACd53J,KAAK+6K,WAAa,GAElBC,EAAU/gH,EAAIl4C,EAAKjc,EAAS9F,MAAO+hB,EAAKhc,EAAQ/F,MACjD,CAEA,SAASyoB,EAAOwyJ,GACf,IAAIC,EAAKl7K,KACW,OAAhBA,KAAK86K,OAITF,GAAK,WACJ,IAAIx+H,EAAK8+H,EAAGJ,OAASG,EAASE,YAAcF,EAASG,WACrD,GAAW,OAAPh/H,EAAJ,CAIA,IAAI9mB,EACJ,IACCA,EAAM8mB,EAAG8+H,EAAGtjB,OACb,CACA,MAAOzxJ,GAEN,YADA80K,EAASl1K,OAAOI,EAEjB,CACA80K,EAASn1K,QAAQwvB,EATjB,MAFE4lJ,EAAGJ,OAASG,EAASn1K,QAAUm1K,EAASl1K,QAAQm1K,EAAGtjB,OAYtD,IAlBC53J,KAAK+6K,WAAWx3K,KAAK03K,EAmBvB,CAEA,SAASn1K,EAAQ28I,GAChB,IACC,GAAIA,IAAaziJ,KAAM,MAAM,IAAIkK,UAAU,6CAC3C,GAAIu4I,IAAiC,iBAAbA,GAA6C,mBAAbA,GAA0B,CACjF,IAAIn8I,EAAOm8I,EAASn8I,KACpB,GAAoB,mBAATA,EAEV,YADA00K,EAAUj5J,EAAKzb,EAAMm8I,GAAW1gI,EAAKjc,EAAS9F,MAAO+hB,EAAKhc,EAAQ/F,MAGpE,CACAA,KAAK86K,QAAS,EACd96K,KAAK43J,OAASnV,EACd44B,EAAO1yK,KAAK3I,KACb,CAAE,MAAOmG,GAAKJ,EAAO4C,KAAK3I,KAAMmG,EAAI,CACrC,CAEA,SAASJ,EAAO08I,GACfziJ,KAAK86K,QAAS,EACd96K,KAAK43J,OAASnV,EACd44B,EAAO1yK,KAAK3I,KACb,CAEA,SAASq7K,IACR,IAAK,IAAIh6K,EAAI,EAAGy3F,EAAM94F,KAAK+6K,WAAWx5K,OAAQF,EAAIy3F,EAAKz3F,IACtDonB,EAAO9f,KAAK3I,KAAMA,KAAK+6K,WAAW15K,IAEnCrB,KAAK+6K,WAAa,IACnB,CAEA,SAASO,EAAQH,EAAaC,EAAYt1K,EAASC,GAClD/F,KAAKm7K,YAAqC,mBAAhBA,EAA6BA,EAAc,KACrEn7K,KAAKo7K,WAAmC,mBAAfA,EAA4BA,EAAa,KAClEp7K,KAAK8F,QAAUA,EACf9F,KAAK+F,OAASA,CACf,CAQA,SAASi1K,EAAU/gH,EAAIkhH,EAAaC,GACnC,IAAI/0K,GAAO,EACX,IACC4zD,GAAG,SAAU/5D,GACRmG,IACJA,GAAO,EACP80K,EAAYj7K,GACb,IAAG,SAAUq7K,GACRl1K,IACJA,GAAO,EACP+0K,EAAWG,GACZ,GACD,CAAE,MAAOC,GACR,GAAIn1K,EAAM,OACVA,GAAO,EACP+0K,EAAWI,EACZ,CACD,CAEA31K,EAAQnE,UAAiB,MAAI,SAAU05K,GACtC,OAAOp7K,KAAKsG,KAAK,KAAM80K,EACxB,EAEAv1K,EAAQnE,UAAU4E,KAAO,SAAS60K,EAAaC,GAC9C,IAAIF,EAAKl7K,KACT,OAAO,IAAI6F,GAAQ,SAASC,EAASC,GACpC0iB,EAAO9f,KAAKuyK,EAAI,IAAII,EAAQH,EAAaC,EAAYt1K,EAASC,GAC/D,GACD,EAEAF,EAAQ4rB,IAAM,WACb,IAAIhtB,EAAOkG,MAAMjJ,UAAU8C,MAAMmE,KAA0B,IAArBga,UAAUphB,QAAgBqJ,EAAQ+X,UAAU,IAAMA,UAAU,GAAKA,WAEvG,OAAO,IAAI9c,GAAQ,SAAUC,EAASC,GACrC,GAAoB,IAAhBtB,EAAKlD,OAAc,OAAOuE,EAAQ,IACtC,IAAIgqD,EAAYrrD,EAAKlD,OACrB,SAASwD,EAAI1D,EAAGqhD,GACf,IACC,GAAIA,IAAuB,iBAARA,GAAmC,mBAARA,GAAqB,CAClE,IAAIp8C,EAAOo8C,EAAIp8C,KACf,GAAoB,mBAATA,EAEV,YADAA,EAAKqC,KAAK+5C,GAAK,SAAUA,GAAO39C,EAAI1D,EAAGqhD,EAAK,GAAG38C,EAGjD,CACAtB,EAAKpD,GAAKqhD,EACU,KAAdoN,GACLhqD,EAAQrB,EAEV,CAAE,MAAO+2K,GACRz1K,EAAOy1K,EACR,CACD,CACA,IAAK,IAAIn6K,EAAI,EAAGA,EAAIoD,EAAKlD,OAAQF,IAChC0D,EAAI1D,EAAGoD,EAAKpD,GAEd,GACD,EAEAwE,EAAQC,QAAU,SAAU5F,GAC3B,OAAIA,GAA0B,iBAAVA,GAAsBA,EAAM8O,cAAgBnJ,EACxD3F,EAGD,IAAI2F,GAAQ,SAAUC,GAC5BA,EAAQ5F,EACT,GACD,EAEA2F,EAAQE,OAAS,SAAU7F,GAC1B,OAAO,IAAI2F,GAAQ,SAAUC,EAASC,GACrCA,EAAO7F,EACR,GACD,EAEA2F,EAAQ41K,KAAO,SAAUpuK,GACxB,OAAO,IAAIxH,GAAQ,SAAUC,EAASC,GACrC,IAAI,IAAI1E,EAAI,EAAGy3F,EAAMzrF,EAAO9L,OAAQF,EAAIy3F,EAAKz3F,IAC5CgM,EAAOhM,GAAGiF,KAAKR,EAASC,EAE1B,GACD,CACA,CAzLD,oBCCA,IAAI0F,EAEJxH,EAAOC,QAAoC,mBAAnBw3K,eACpBA,eAAe35J,KAAuB,oBAAX7B,OAAyBA,OAAS,EAAAgqG,GAE7D9tE,IAAO3wC,IAAYA,EAAU5F,QAAQC,YACpCQ,KAAK81C,GACLxQ,OAAMhqC,GAAO44C,YAAW,KAAQ,MAAM54C,IAAO,yCCPlD,IAAIkG,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B3B,OAAO+C,eAAe6D,EAAGE,EAAI,CAAEb,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,GACnF,EAAI,SAAUiF,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAAoBtE,GACzCsE,EAAa,EAAQ,OAAsBtE,GAC3CsE,EAAa,EAAQ,OAAuBtE,GAC5CsE,EAAa,EAAQ,OAAkBtE,GACvCsE,EAAa,EAAQ,OAAoBtE,GACzCsE,EAAa,EAAQ,OAAetE,GACpCsE,EAAa,EAAQ,MAAmBtE,+BCjBxC9C,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ0kF,eAAY,EAapB1kF,EAAQ0kF,UATR,MACI,WAAA55E,CAAY9O,GACRF,KAAKwtB,SAAW,YAChBxtB,KAAKE,MAAQA,CACjB,CACA,MAAAwgC,CAAOw5B,GACH,QAASA,GAA4B,cAAnBA,EAAM1sC,UAA4B0sC,EAAMh6D,QAAUF,KAAKE,KAC7E,iCCZJkB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQomB,iBAAc,EACtB,MAAMqxJ,EAAc,EAAQ,OACtBC,EAAiB,EAAQ,OACzBC,EAAY,EAAQ,OACpBC,EAAc,EAAQ,OACtBC,EAAS,EAAQ,OACjBC,EAAa,EAAQ,MAC3B,IAAIC,EAAqB,EA+GzB/3K,EAAQomB,YA3GR,MACI,WAAAtb,CAAYlI,GACR9G,KAAKwnC,iBAAmB,EACxB1gC,EAAUA,GAAW,CAAC,EACtB9G,KAAK8qK,gBAAkBhkK,EAAQgkK,iBAAmB,MAAMmR,MAC5D,CAMA,SAAA1nJ,CAAUr0B,GACN,OAAO,IAAI47K,EAAYt7F,UAAUtgF,EACrC,CAQA,SAAAg1B,CAAUh1B,GACN,OAAO,IAAIy7K,EAAY/yF,UAAU1oF,GAAS,GAAGF,KAAK8qK,kBAAkB9qK,KAAKwnC,qBAC7E,CAWA,OAAAsU,CAAQ57C,EAAOg8K,GACX,OAAO,IAAIL,EAAU1rG,QAAQjwE,EAAOg8K,EACxC,CAOA,QAAAjxJ,CAAS/qB,GACL,OAAO,IAAI87K,EAAWtuG,SAASxtE,EACnC,CAIA,YAAA+lC,GACI,OAAO21I,EAAe5rF,aAAamsF,QACvC,CASA,IAAAznJ,CAAK3J,EAASH,EAAWI,EAAQY,GAC7B,OAAO,IAAImwJ,EAAO92F,KAAKl6D,EAASH,EAAWI,EAAQY,GAAS5rB,KAAKimC,eACrE,CAMA,QAAAm2I,CAASC,GAGL,OAAQA,EAAS7uJ,UACb,IAAK,YACD,OAAOxtB,KAAKu0B,UAAU8nJ,EAASn8K,OACnC,IAAK,YACD,OAAOF,KAAKk1B,UAAUmnJ,EAASn8K,OACnC,IAAK,UACD,OAAIm8K,EAAS1lJ,SACF32B,KAAK87C,QAAQugI,EAASn8K,MAAOm8K,EAAS1lJ,UAE5C0lJ,EAASv6I,SAASpB,OAAOm7I,EAAU1rG,QAAQmB,YAGzCtxE,KAAK87C,QAAQugI,EAASn8K,OAFlBF,KAAK87C,QAAQugI,EAASn8K,MAAOF,KAAKo8K,SAASC,EAASv6I,WAGnE,IAAK,WACD,OAAO9hC,KAAKirB,SAASoxJ,EAASn8K,OAClC,IAAK,eACD,OAAOF,KAAKimC,eAChB,IAAK,OACD,OAAOjmC,KAAK00B,KAAK10B,KAAKo8K,SAASC,EAAStxJ,SAAU/qB,KAAKo8K,SAASC,EAASzxJ,WAAY5qB,KAAKo8K,SAASC,EAASrxJ,QAAShrB,KAAKo8K,SAASC,EAASzwJ,QAExJ,CAMA,QAAA0wJ,CAASD,GACL,OAAOr8K,KAAKo8K,SAASC,EACzB,CAIA,qBAAAE,GACIv8K,KAAKwnC,iBAAmB,CAC5B,+BCrHJpmC,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ8rF,kBAAe,EAKvB,MAAMA,EACF,WAAAhhF,GACIhP,KAAKwtB,SAAW,eAChBxtB,KAAKE,MAAQ,EAEjB,CACA,MAAAwgC,CAAOw5B,GACH,QAASA,GAA4B,iBAAnBA,EAAM1sC,QAC5B,EAEJtpB,EAAQ8rF,aAAeA,EACvBA,EAAamsF,SAAW,IAAInsF,gCCjB5B5uF,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQisE,aAAU,EAClB,MAAM2rG,EAAc,EAAQ,OAI5B,MAAM3rG,EACF,WAAAnhE,CAAY9O,EAAOg8K,GACfl8K,KAAKwtB,SAAW,UAChBxtB,KAAKE,MAAQA,EACqB,iBAAvBg8K,GACPl8K,KAAK22B,SAAWulJ,EAChBl8K,KAAK8hC,SAAWquC,EAAQqsG,qBAEnBN,GACLl8K,KAAK22B,SAAW,GAChB32B,KAAK8hC,SAAWo6I,IAGhBl8K,KAAK22B,SAAW,GAChB32B,KAAK8hC,SAAWquC,EAAQmB,WAEhC,CACA,MAAA5wC,CAAOw5B,GACH,QAASA,GAA4B,YAAnBA,EAAM1sC,UAA0B0sC,EAAMh6D,QAAUF,KAAKE,OACnEg6D,EAAMvjC,WAAa32B,KAAK22B,UAAY32B,KAAK8hC,SAASpB,OAAOw5B,EAAMp4B,SACvE,EAEJ59B,EAAQisE,QAAUA,EAClBA,EAAQqsG,oBAAsB,IAAIV,EAAYt7F,UAAU,yDACxDrQ,EAAQmB,WAAa,IAAIwqG,EAAYt7F,UAAU,uEC9B/Cp/E,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQs8E,eAAY,EAapBt8E,EAAQs8E,UATR,MACI,WAAAxxE,CAAY9O,GACRF,KAAKwtB,SAAW,YAChBxtB,KAAKE,MAAQA,CACjB,CACA,MAAAwgC,CAAOw5B,GACH,QAASA,GAA4B,cAAnBA,EAAM1sC,UAA4B0sC,EAAMh6D,QAAUF,KAAKE,KAC7E,+BCZJkB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ+gF,UAAO,EAuBf/gF,EAAQ+gF,KAlBR,MACI,WAAAj2E,CAAY+b,EAASH,EAAWI,EAAQY,GACpC5rB,KAAKwtB,SAAW,OAChBxtB,KAAKE,MAAQ,GACbF,KAAK+qB,QAAUA,EACf/qB,KAAK4qB,UAAYA,EACjB5qB,KAAKgrB,OAASA,EACdhrB,KAAK4rB,MAAQA,CACjB,CACA,MAAA8U,CAAOw5B,GAEH,QAASA,IAA6B,SAAnBA,EAAM1sC,WAAwB0sC,EAAM1sC,WACnDxtB,KAAK+qB,QAAQ2V,OAAOw5B,EAAMnvC,UAC1B/qB,KAAK4qB,UAAU8V,OAAOw5B,EAAMtvC,YAC5B5qB,KAAKgrB,OAAO0V,OAAOw5B,EAAMlvC,SACzBhrB,KAAK4rB,MAAM8U,OAAOw5B,EAAMtuC,MAChC,8BCtBJxqB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQwpE,cAAW,EAanBxpE,EAAQwpE,SATR,MACI,WAAA1+D,CAAY9O,GACRF,KAAKwtB,SAAW,WAChBxtB,KAAKE,MAAQA,CACjB,CACA,MAAAwgC,CAAOw5B,GACH,QAASA,GAA4B,aAAnBA,EAAM1sC,UAA2B0sC,EAAMh6D,QAAUF,KAAKE,KAC5E,uCCZJ,IAAI4H,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B3B,OAAO+C,eAAe6D,EAAGE,EAAI,CAAEb,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,GACnF,EAAI,SAAUiF,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,MAAwBtE,gCCX7C9C,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQu4K,eAAiBv4K,EAAQw4K,gBAAkBx4K,EAAQy4K,gBAAkBz4K,EAAQ04K,QAAU14K,EAAQ2tD,SAAW3tD,EAAQ24K,UAAY34K,EAAQ44K,mBAAqB54K,EAAQ64K,UAAY74K,EAAQ84K,aAAe94K,EAAQ+4K,WAAa/4K,EAAQg5K,0BAA4Bh5K,EAAQi5K,uBAAyBj5K,EAAQk5K,SAAWl5K,EAAQm5K,WAAan5K,EAAQo5K,kBAAoBp5K,EAAQq5K,aAAer5K,EAAQ+hH,gBAAa,EACxZ,MAAMhvF,EAAY,EAAQ,OACpB/M,EAAe,EAAQ,OACvBiK,EAAc,EAAQ,OAoB5B,SAASopJ,EAAaC,EAAQC,GAG1B,MAAMC,EAAiBT,EAAWC,EAA0BM,IACtDG,EAAiBV,EAAWC,EAA0BO,IAC5D,GAAIr8K,OAAOD,KAAKu8K,GAAgBn8K,SAAWH,OAAOD,KAAKw8K,GAAgBp8K,OACnE,OAAO,KAEX,IAAK,MAAMd,KAAOi9K,EACd,GAAIA,EAAej9K,KAASk9K,EAAel9K,GACvC,OAAO,KAQf,OAAO68K,EAJaP,EAAUI,EAAuBK,IACjCT,EAAUI,EAAuBM,IACjCX,EAAmBU,GACnBV,EAAmBW,GAE3C,CAEA,SAASH,EAAkBM,EAAaC,EAAaC,EAAaC,EAAaC,EAAiBC,GACvFD,IACDA,EAAkB,CAAC,GAElBC,IACDA,EAAkB,CAAC,GAGvB,MAAOC,EAASC,GAAqBtB,EAAUe,EAAaE,EAAaE,IAClEI,EAASC,GAAqBxB,EAAUgB,EAAaE,EAAaE,GAEzE,GAAI78K,OAAOD,KAAK+8K,GAAS38K,SAAWH,OAAOD,KAAKi9K,GAAS78K,OACrD,OAAO,KAEX,IAAK,MAAM+8K,KAAYJ,EACnB,IAAKd,EAASgB,EAASF,EAAQI,IAC3B,OAAO,KAMf,IAAIC,EAAY,CAAC,EACjB,IAAK,MAAMC,KAAcV,EAAa,CAClC,MAAMW,EAAmBv0J,EAAa8D,aAAawwJ,GAC7CE,EAAiBP,EAAkBM,GACzC,IAAK,MAAME,KAAoBN,EAC3B,GAAIA,EAAkBM,KAAsBD,EAAgB,CACxDH,EAAUE,GAAoBE,SACvBN,EAAkBM,GACzB,KACJ,CAER,CAGA,IAAKC,EAAYx9K,OAAOD,KAAKo9K,GAAWhwI,OAAQuvI,EAAY34K,IAAI+kB,EAAa8D,cAAcugB,UACnFqwI,EAAYvB,EAAWkB,GAAWhwI,OAAQwvI,EAAY54K,IAAI+kB,EAAa8D,cAAcugB,QAAS,CAGlGgwI,EAAY,KACZ,IAAK,MAAMC,KAAcV,EAAa,CAElC,MAAMW,EAAmBv0J,EAAa8D,aAAawwJ,GACnD,IAAKN,EAAQO,GACT,IAAK,MAAMI,KAAcd,EAAa,CAElC,MAAMY,EAAmBz0J,EAAa8D,aAAa6wJ,GACnD,IAAKT,EAAQO,IACLR,EAAkBM,KAAsBJ,EAAkBM,GAAmB,CAC7E,MAAMv8J,EAAOw6J,EAAQ6B,GACrBF,EAAYjB,EAAkBM,EAAaC,EAAaC,EAAaC,EAAa38K,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG0oK,GAAU,CAAE,CAACO,GAAmBr8J,IAAShhB,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAG4oK,GAAU,CAAE,CAACO,GAAmBv8J,IAC/N,CAER,CAER,CACJ,CACA,OAAOm8J,CACX,CAEA,SAASK,EAAYE,EAAQC,GACzB,GAAID,EAAOv9K,SAAWw9K,EAAOx9K,OACzB,OAAO,EAEX,IAAK,IAAIF,EAAIy9K,EAAOv9K,OAAQF,KACxB,GAAIy9K,EAAOz9K,KAAO09K,EAAO19K,GACrB,OAAO,EAGf,OAAO,CACX,CAMA,SAASg8K,EAAWj7J,GAChB,MAAMs2E,EAAM,GACZ,IAAK,MAAMvyF,KAAKic,EACZs2E,EAAIn1F,KAAK6e,EAAKjc,IAElB,OAAOuyF,CACX,CAQA,SAAS0kF,EAASh7J,EAAMliB,GACpB,IAAK,MAAM8+K,KAAa58J,EACpB,GAAIA,EAAK48J,KAAe9+K,EACpB,OAAO,EAGf,OAAO,CACX,CAOA,SAASi9K,EAAuBvxJ,GAC5B,OAAOA,EAAM3mB,QAAQyvB,GAASP,EAAYs2B,UAAU/1B,GAAOx0B,GAC7B,cAAnBA,EAAMstB,UACc,SAAnBttB,EAAMstB,UAAuB2G,EAAYgT,eAAejnC,GAAOi+B,MAAK9J,GAA0B,cAAlBA,EAAK7G,cAEjG,CAOA,SAAS0vJ,EAA0BtxJ,GAC/B,OAAOA,EAAM3mB,QAAQyvB,GAASP,EAAY8qJ,WAAWvqJ,GAAOx0B,GAC9B,cAAnBA,EAAMstB,YACe,SAAnBttB,EAAMstB,UAAuB2G,EAAYgT,eAAejnC,GAAOi+B,MAAK9J,GAA0B,cAAlBA,EAAK7G,eAElG,CAOA,SAASyvJ,EAAWrxJ,GAChB,MAAMzN,EAAQ,CAAC,EACf,IAAK,MAAMuW,KAAQ9I,EACfzN,EAAMnc,KAAKC,UAAUioB,EAAa6N,iBAAiBrD,MAAU,EAEjE,OAAOvW,CACX,CAOA,SAAS6+J,EAAakC,GAClB,OAAO99K,OAAOD,KAAK+9K,GAAc/5K,KAAKd,GAAQ6lB,EAAai1J,iBAAiBn9K,KAAKiL,MAAM5I,KAC3F,CAQA,SAAS04K,EAAUnxJ,GACf,OAAOoxJ,EAAaC,EAAWrxJ,GACnC,CAOA,SAASkxJ,EAAmBlxJ,GACxB,OAAOuI,EAAYyK,UAAUhT,EAAMzmB,KAAKuvB,GAASP,EAAYirJ,cAAcjrJ,EAAYgT,eAAezS,MACjGsI,QAAO,CAACk0B,EAAKxO,IAAQwO,EAAIhqB,OAAOwb,IAAM,IAC/C,CAWA,SAASm6H,EAAUzmI,EAAOja,EAAOkjJ,GAC7B,MAAM52I,EAASrnC,OAAOoU,OAAO,CAAC,EAAG6pK,GAC3BC,EAAmB,CAAC,EAC1B,IAAIC,GAAa,EAGjB,KAAOA,GAAY,CACf,MAAMC,EAA4Bp+K,OAAOD,KAAKsnC,GAAQlnC,OACtD,IAAK,MAAM8yB,KAAQ8H,EAAO,CACtB,MAAMpO,EAAa7D,EAAa8D,aAAaqG,GAC7C,IAAKoU,EAAO1a,GAAa,CACrB,MAAO0xJ,EAAUr9J,GAAQyvC,EAASx9B,EAAM+hB,EAAO3N,GAC3Cg3I,IACAh3I,EAAO1a,GAAc3L,GAEzBk9J,EAAiBvxJ,GAAc3L,CACnC,CACJ,CAEA,MAAMs9J,EAAU,CAAC,EACjB,IAAK,MAAMC,KAAWL,EAAkB,CACpC,MAAMl9J,EAAOk9J,EAAiBK,QACRx/K,IAAlBu/K,EAAQt9J,GACRs9J,EAAQt9J,GAAQu9J,EAGhBD,EAAQt9J,IAAQ,CAExB,CACA,IAAK,MAAMA,KAAQs9J,EAAS,CACxB,MAAMx/K,EAAQw/K,EAAQt9J,GAClBliB,IACAuoC,EAAOvoC,GAASkiB,EAExB,CAEAm9J,EAAaC,IAA8Bp+K,OAAOD,KAAKsnC,GAAQlnC,MACnE,CACA,MAAO,CAACknC,EAAQ62I,EACpB,CAiBA,SAASztH,EAASx9B,EAAM+hB,EAAO3N,GAC3B,MAAMm3I,EAAiB,GACvB,IAAIH,GAAW,EACf,IAAK,MAAM/qJ,KAAQ0hB,EAAO,CACtB,MAAMja,EAAQhI,EAAYgT,eAAezS,GACzC,GAAIyH,EAAMgC,MAAM0hJ,GAAaA,EAASn/I,OAAOrM,KAAQ,CACjDurJ,EAAer8K,KAAKo5K,EAAgBjoJ,EAAM+T,EAAQpU,IAClD,IAAK,MAAMwrJ,KAAY1jJ,EACdsgJ,EAAeoD,EAAUp3I,IAAYo3I,EAASn/I,OAAOrM,KACtDorJ,GAAW,EAGvB,CACJ,CAEA,MAAO,CAACA,EADK7C,EAAQgD,EAAerxI,OAAOlpC,KAAK,KAEpD,CAOA,SAASu3K,EAAQh9J,GACb,OAAOqX,EAAUM,OAAOC,OAAO5X,GAAM8X,OAAO,MAChD,CASA,SAASilJ,EAAgBjoJ,EAAM+T,EAAQpU,GACnC,OAAOF,EAAYoqB,SAAS7pB,GAAMvvB,KAAK06K,GAAanD,EAAgBmD,EAAUp3I,EAAQpU,KAAOhvB,KAAK,IACtG,CASA,SAASq3K,EAAgBroJ,EAAMoU,EAAQtrB,GACnC,OAAIkX,EAAKqM,OAAOvjB,GACL,QAEgB,cAAlBkX,EAAK7G,SACHib,EAAOve,EAAa8D,aAAaqG,KAAU,SAE3B,SAAlBA,EAAK7G,SACH,IAAImvJ,EAAgBtoJ,EAAMoU,EAAQtrB,MAGlC+M,EAAa8D,aAAaqG,EAEzC,CAYA,SAASooJ,EAAepoJ,EAAMoU,GAC1B,MAA0B,cAAlBpU,EAAK7G,YACc,SAAlB6G,EAAK7G,UAAuB2G,EAAYgT,eAAe9S,GAAM8J,MAAK/I,IAAYqnJ,EAAernJ,EAASqT,SAAgBA,EAAOve,EAAa8D,aAAaqG,GACpK,CA9UAnwB,EAAQ+hH,WAHR,SAAoBu3D,EAAQC,GACxB,QAASF,EAAaC,EAAQC,EAClC,EA8BAv5K,EAAQq5K,aAAeA,EA6DvBr5K,EAAQo5K,kBAAoBA,EAwB5Bp5K,EAAQm5K,WAAaA,EAerBn5K,EAAQk5K,SAAWA,EAYnBl5K,EAAQi5K,uBAAyBA,EAYjCj5K,EAAQg5K,0BAA4BA,EAapCh5K,EAAQ+4K,WAAaA,EASrB/4K,EAAQ84K,aAAeA,EAUvB94K,EAAQ64K,UAAYA,EAUpB74K,EAAQ44K,mBAAqBA,EAkD7B54K,EAAQ24K,UAAYA,EAiCpB34K,EAAQ2tD,SAAWA,EASnB3tD,EAAQ04K,QAAUA,EAWlB14K,EAAQy4K,gBAAkBA,EAsB1Bz4K,EAAQw4K,gBAAkBA,EAe1Bx4K,EAAQu4K,eAAiBA,sCC9VzB,IAAI30K,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ47K,iCAAmC57K,EAAQ67K,yBAA2B77K,EAAQ87K,WAAa97K,EAAQ+7K,MAAQ/7K,EAAQg8K,aAAU,EACrI,MAAMj2J,EAAqB,EAAQ,OAC7B4sF,EAAY,EAAQ,OACpBspE,EAAe,EAAQ,OAC7B33K,EAAa,EAAQ,OAAkBtE,GACvCsE,EAAa,EAAQ,OAAuBtE,GAC5CsE,EAAa,EAAQ,OAAqBtE,GAC1C,MAAMmmB,EAAK,IAAIJ,EAAmBK,YAE5B81J,EAAa,IAAID,EAAaE,WAYpC,SAASH,EAAQpkI,EAASkgH,GACtB,OAAOokB,EAAWF,QAAQpkI,EAASkgH,EACvC,CAbAokB,EAAWE,gBAAgB,IAAIzpE,EAAU0pE,kBAAqB1pE,EAAU0pE,kBAAkBC,MAAMr7K,KAAIu9F,GAAKr4E,EAAGkK,UAAUmuE,KAAK,CAAC,WAC5H09E,EAAWE,gBAAgB,IAAIzpE,EAAU4pE,mBAAsB,CAAC5pE,EAAU4pE,mBAAmBC,MAAMv7K,KAAIu9F,GAAKr4E,EAAGkK,UAAUmuE,KAAK,CAAC,YAC/H09E,EAAWE,gBAAgB,IAAIzpE,EAAU8pE,wBAA2B9pE,EAAU8pE,wBAAwBH,MAAMr7K,KAAIu9F,GAAKr4E,EAAGkK,UAAUmuE,KAAK,CAAC,WACxI09E,EAAWE,gBAAgB,IAAIzpE,EAAU+pE,yBAA4B/pE,EAAU+pE,yBAAyBJ,MAAMr7K,KAAIu9F,GAAKr4E,EAAGkK,UAAUmuE,KAAK,CAAC,WAC1I09E,EAAWE,gBAAgB,IAAIzpE,EAAUgqE,gBAAmBhqE,EAAUgqE,gBAAgBL,MAAMr7K,KAAIu9F,GAAKr4E,EAAGkK,UAAUmuE,KAAK,CAAC,WAUxHx+F,EAAQg8K,QAAUA,EAmBlBh8K,EAAQ+7K,MAZR,SAAe//K,EAAO4G,GAUlB,OARIA,GAAW,cAAeA,IAC1BA,EAAU,CAAE+yD,YAAa/yD,KAG7BA,EAAUA,GAAW,CAAC,KACNA,EAAQ+yD,cACpB/yD,EAAQ+yD,YAAcxvC,GAEnB+1J,EAAWH,MAAM//K,EAAO4G,EACnC,EAgBA5C,EAAQ87K,WANR,SAAoB3rJ,EAAM2nI,GACtB,MAAsB,YAAlB3nI,EAAK7G,SACE0yJ,EAAQ7rJ,EAAM2nI,GAElB3nI,EAAKn0B,KAChB,EAQAgE,EAAQ67K,yBAHR,WACI,OAAOK,EAAWL,0BACtB,EAQA77K,EAAQ47K,iCAHR,WACI,OAAOM,EAAWN,kCACtB,8BCtFA1+K,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,gCCAtDkB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQm8K,gBAAa,EA4DrBn8K,EAAQm8K,WAxDR,MACI,WAAArxK,GACIhP,KAAK8gL,sBAAwB,GAC7B9gL,KAAK+gL,gBAAkB,CAAC,EACxB/gL,KAAKghL,cAAgB,CAAC,CAC1B,CACA,2BAAOC,CAAqBnlI,GACxB,MAAM,IAAI/5C,MAAM,eAAe+5C,EAAQha,SAAS5hC,iBAAiB47C,EAAQ57C,SAC7E,CACA,eAAAogL,CAAgBtlK,EAASkmK,EAAcC,GACnC,IAAK,MAAMC,KAAeF,EACtBlhL,KAAK8gL,sBAAsBv9K,KAAK69K,GAChCphL,KAAK+gL,gBAAgBK,EAAYlhL,OAAS8a,EAE9C,IAAK,MAAMqmK,KAAsBF,EAAqB,CAClD,IAAIG,EAAwBthL,KAAKghL,cAAcK,GAC1CC,IACDthL,KAAKghL,cAAcK,GAAsBC,EAAwB,IAErEA,EAAsB/9K,KAAKyX,EAC/B,CACJ,CACA,OAAAklK,CAAQpkI,EAASkgH,GACb,MAAMhhJ,EAAUhb,KAAK+gL,gBAAgBjlI,EAAQha,SAAS5hC,OACtD,OAAI8a,EACOA,EAAQklK,QAAQpkI,EAASkgH,GAGzBlgH,EAAQ57C,KAEvB,CACA,KAAA+/K,CAAM//K,EAAO4G,GACT,MAAMy6K,EAAWvhL,KAAKghL,qBAAqB9gL,GAC3C,GAAIqhL,EACA,IAAK,MAAMvmK,KAAWumK,EAAU,CAC5B,MAAMjsJ,EAAMta,EAAQilK,MAAM//K,EAAO4G,GACjC,GAAIwuB,EACA,OAAOA,CAEf,CAEJ,MAAM,IAAIvzB,MAAM,8BAA8B7B,KAClD,CAIA,wBAAA6/K,GACI,OAAO//K,KAAK8gL,qBAChB,CAIA,gCAAAhB,GACI,OAAO1+K,OAAOD,KAAKnB,KAAKghL,cAC5B,iCC3DJ5/K,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQu8K,wBAAqB,EAC7B,MAAMN,EAAe,EAAQ,OAI7B,MAAMM,EACF,OAAAP,CAAQpkI,EAASkgH,GACb,OAAQlgH,EAAQ57C,OACZ,IAAK,OAIL,IAAK,IACD,OAAO,EAHX,IAAK,QAIL,IAAK,IACD,OAAO,EAKf,OAHI87J,GACAmkB,EAAaE,WAAWY,qBAAqBnlI,IAE1C,CACX,CACA,KAAAmkI,CAAM//K,GAAO,SAAE4hC,EAAQ,YAAE+3B,IACrB,OAAOA,EAAY/d,QAAQ57C,EAAQ,OAAS,QAAS4hC,GAAY+3B,EAAYtlC,UAAUksJ,EAAmBC,MAC9G,EAEJD,EAAmBC,KAAO,2CAC1Bx8K,EAAQu8K,mBAAqBA,+BC5B7Br/K,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ28K,qBAAkB,EAC1B,MAAMV,EAAe,EAAQ,OAI7B,MAAMU,EACF,OAAAX,CAAQpkI,EAASkgH,GAKb,OAJIA,IAAalgH,EAAQ57C,MAAM8D,MAAM68K,EAChCW,WAAW1lI,EAAQha,SAAS5hC,MAAM+lF,OAAO,GAAInqC,EAAQha,SAAS5hC,MAAMqB,WACrE4+K,EAAaE,WAAWY,qBAAqBnlI,GAEzCA,EAAQha,SAAS5hC,OACrB,IAAK,wCACD,OAAO,IAAIk2B,KAAK,EAAG,EAAGlzB,SAAS44C,EAAQ57C,MAAO,KAClD,IAAK,6CACD,MAAMuhL,EAAgB3lI,EAAQ57C,MAAM8E,MAAM,KAC1C,OAAO,IAAIoxB,KAAK,EAAGlzB,SAASu+K,EAAc,GAAI,IAAM,EAAGv+K,SAASu+K,EAAc,GAAI,KACtF,IAAK,yCACD,OAAO,IAAIrrJ,KAAK0lB,EAAQ57C,MAAQ,UACpC,IAAK,8CACD,OAAO,IAAIk2B,KAAK0lB,EAAQ57C,MAAQ,OACpC,QACI,OAAO,IAAIk2B,KAAK0lB,EAAQ57C,OAEpC,CACA,KAAA+/K,CAAM//K,GAAO,SAAE4hC,EAAQ,YAAE+3B,IAGrB,GAFA/3B,EAAWA,GAAY+3B,EAAYtlC,UAAUssJ,EAAgBL,MAAM,MAE7DtgL,aAAiBk2B,MACnB,OAAO,KAEX,MAAM4gD,EAAO92E,EACb,IAAIwhL,EACJ,OAAQ5/I,EAAS5hC,OACb,IAAK,wCACDwhL,EAAcx/K,OAAO80E,EAAK2qG,cAC1B,MACJ,IAAK,6CACDD,EAAe1qG,EAAK4qG,cAAgB,EAAK,IAAM5qG,EAAK2qG,aACpD,MACJ,IAAK,yCACDD,EAAcx/K,OAAO80E,EAAK6qG,kBAC1B,MACJ,IAAK,8CACDH,EAAc1qG,EAAK6qG,iBAAmB,KAAO7qG,EAAK4qG,cAAgB,GAClE,MACJ,IAAK,wCACDF,EAAc1qG,EAAK8qG,cAAc5zK,QAAQ,OAAQ,IACjD,MACJ,QACIwzK,EAAc1qG,EAAK8qG,cAE3B,OAAOjoH,EAAY/d,QAAQ4lI,EAAa5/I,EAC5C,EAEJ++I,EAAgBL,MAAQ,CACpB,4CACA,wCACA,wCACA,6CACA,yCACA,+CAEJK,EAAgBW,WAAa,CACzBxqG,KAAM,mCACNe,SAAU,yHACVgqG,KAAM,WACNC,UAAW,sBACXC,MAAO,WACPC,WAAY,uBAEhBh+K,EAAQ28K,gBAAkBA,gCCxE1Bz/K,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQy8K,6BAA0B,EAClC,MAAMR,EAAe,EAAQ,OAI7B,MAAMQ,EACF,OAAAT,CAAQpkI,EAASkgH,GACb,MAAMp/I,EAAS8oJ,WAAW5pH,EAAQ57C,OAOlC,OANI87J,GACIj4J,MAAM6Y,IACNujK,EAAaE,WAAWY,qBAAqBnlI,GAI9Cl/B,CACX,CACA,KAAAqjK,CAAM//K,GAAO,SAAE4hC,EAAQ,YAAE+3B,IAErB,OADA/3B,EAAWA,GAAY+3B,EAAYtlC,UAAUosJ,EAAwBH,MAAM,IACvEz8K,MAAM7D,GACC25D,EAAY/d,QAAQ,MAAOha,GAEjC2M,SAASvuC,GAGVA,EAAQ,GAAM,EACP,KAEJ25D,EAAY/d,QAAQ57C,EAAM8wE,cAAc,IAAI9iE,QAAQ,aAAc,OAAQ4zB,GALtE+3B,EAAY/d,QAAQ57C,EAAQ,EAAI,MAAQ,OAAQ4hC,EAM/D,EAEJ6+I,EAAwBH,MAAQ,CAC5B,0CACA,2CACA,0CAEJt8K,EAAQy8K,wBAA0BA,gCCpClCv/K,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ08K,8BAA2B,EACnC,MAAMT,EAAe,EAAQ,OAI7B,MAAMS,EACF,OAAAV,CAAQpkI,EAASkgH,GACb,MAAMp/I,EAAS1Z,SAAS44C,EAAQ57C,MAAO,IAOvC,OANI87J,IACIj4J,MAAM6Y,IAAWk/B,EAAQ57C,MAAM4J,QAAQ,MAAQ,IAC/Cq2K,EAAaE,WAAWY,qBAAqBnlI,GAI9Cl/B,CACX,CACA,KAAAqjK,CAAM//K,GAAO,SAAE4hC,EAAQ,YAAE+3B,IACrB,OAAOA,EAAY/d,QAAQ55C,OAAOhC,GAAQ4hC,IAClC5hC,GAAS0gL,EAAyBuB,SAAWjiL,GAAS0gL,EAAyBwB,QAC7EvoH,EAAYtlC,UAAUqsJ,EAAyBJ,MAAM,IACrD3mH,EAAYtlC,UAAUqsJ,EAAyBJ,MAAM,KACnE,EAEJI,EAAyBJ,MAAQ,CAC7B,2CACA,wCACA,uCACA,wCACA,yCACA,mDACA,sDACA,sDACA,mDACA,gDACA,+CACA,gDACA,kDAEJI,EAAyBuB,QAAU,WACnCvB,EAAyBwB,SAAW,WACpCl+K,EAAQ08K,yBAA2BA,6BCzCnCx/K,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQq8K,uBAAoB,EAI5B,MAAMA,EACF,OAAAL,CAAQpkI,GACJ,OAAOA,EAAQ57C,KACnB,CACA,KAAA+/K,CAAM//K,GAAO,SAAE4hC,EAAQ,YAAE+3B,IACrB,OAAOA,EAAY/d,QAAQ57C,EAAO4hC,EACtC,EAEJy+I,EAAkBC,MAAQ,CACtB,0CACA,oDACA,0CACA,gDACA,4CACA,wCACA,0CACA,2CACA,yCACA,6CACA,wDACA,wCACA,6CAEJt8K,EAAQq8K,kBAAoBA,sCC5B5B,IAAIz4K,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAAyBtE,GAC9CsE,EAAa,EAAQ,MAAsBtE,GAC3CsE,EAAa,EAAQ,OAA8BtE,GACnDsE,EAAa,EAAQ,OAA+BtE,GACpDsE,EAAa,EAAQ,MAAwBtE,sCCnB7C,IAAI4D,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAA8BtE,GACnDsE,EAAa,EAAQ,OAAyBtE,iCChB9C9C,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQm+K,yBAAsB,EAC9B,MAAMn4J,EAAe,EAAQ,OACvBiK,EAAc,EAAQ,OAI5B,MAAMkuJ,EACF,WAAArzK,GACIhP,KAAKsiL,eAAiB,IAAI9gK,IAC1BxhB,KAAKuiL,WAAa,EACtB,CACA,YAAAv0J,CAAaqG,GACT,OAAOA,GAA0B,aAAlBA,EAAK7G,UAA0B,EAAItD,EAAa8D,cAAcqG,GAAQguJ,EAAoBG,WAC7G,CASA,kBAAAC,CAAmBC,EAAe33J,EAASH,EAAWI,EAAQY,GAE1D5rB,KAAKuiL,WAAWh/K,KAAKm/K,GAErB,MAAMjiL,EAAM,GAAGT,KAAKguB,aAAajD,KAAWs3J,EAAoBM,eAAe3iL,KAAKguB,aAAapD,KAAay3J,EAAoBM,eAAe3iL,KAAKguB,aAAahD,KAAUq3J,EAAoBM,eAAe3iL,KAAKguB,aAAapC,KAClO,IAAIg3J,EAAoB5iL,KAAKsiL,eAAeh7K,IAAI7G,GAC3CmiL,IACDA,EAAoB,GACpB5iL,KAAKsiL,eAAex2K,IAAIrL,EAAKmiL,IAEjCA,EAAkBr/K,KAAKm/K,EAC3B,CAKA,wBAAAG,CAAyBnuJ,GAErB,IAAIvzB,EAAO,EAAC,EAAIgzB,EAAYoqB,UAAU7pB,GAAMvvB,KAAIkvB,IAAQ,EAAInK,EAAa8D,cAAcqG,MACvF,IAAK,IAAIhzB,EAAI,EAAGA,EAAI8yB,EAAY4pB,gBAAgBx8C,OAAQF,IAAK,CACzD,MAAMyhL,EAAU3hL,EAChBA,EAAO,GACP,IAAK,MAAMV,KAAOqiL,EAAS,CACvB3hL,EAAKoC,KAAK9C,GACV,MAAMsiL,EAAc,IAAItiL,GACxBsiL,EAAY1hL,GAAKghL,EAAoBG,YACrCrhL,EAAKoC,KAAKw/K,EACd,CACJ,CAEA,MAAMC,EAAiB,GACvB,IAAK,MAAMviL,KAAOU,EAAM,CACpB,MAAMqmG,EAAQxnG,KAAKsiL,eAAeh7K,IAAI7G,EAAI4E,KAAKg9K,EAAoBM,eAC/Dn7E,GACAw7E,EAAez/K,QAAQikG,EAE/B,CACA,OAAOw7E,CACX,EAEJX,EAAoBG,YAAc,IAClCH,EAAoBM,aAAe,IACnCz+K,EAAQm+K,oBAAsBA,gCCjE9BjhL,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ+kD,oBAAiB,EACzB,MAAMgP,EAAO,EAAQ,OACf/4C,EAAoB,EAAQ,OAC5B+jK,EAAwB,EAAQ,OA8EtC/+K,EAAQ+kD,eApER,MACI,WAAAj6C,CAAYk6C,EAAQ,IAAI+O,EAAKihH,OACzBl5K,KAAKgjL,eAAiB,IAAIC,EAAsBZ,oBAChDriL,KAAKkiB,OAAQ,EACbliB,KAAKkpD,MAAQA,CACjB,CAOA,GAAAzmD,GACIzC,KAAKkiB,OAAQ,EAEb,IAAK,MAAMwgK,KAAiB1iL,KAAKgjL,eAAeT,WAC5CG,EAAcn/K,KAAK,MACnBm/K,EAAcQ,YAAYC,QAElC,CACA,iBAAAC,CAAkBhkK,GACdA,EAAOrE,GAAG,QAAS2Z,IACf,IAAK10B,KAAKkiB,QAAUliB,KAAKkpD,MAAMQ,WAAWh1B,EAAK3J,QAAS2J,EAAK9J,UAAW8J,EAAK1J,OAAQ0J,EAAK9I,OACtF,IAAK,MAAM82J,KAAiB1iL,KAAKgjL,eAAeH,yBAAyBnuJ,GACjEguJ,EAAcW,gBACdX,EAAcn/K,KAAKmxB,GACnBguJ,EAAch/K,KAAK,OAAQgxB,GAGvC,GAER,CACA,MAAA+yB,CAAOroC,GACH,GAAIpf,KAAKkiB,MACL,MAAM,IAAIngB,MAAM,oDAGpB,OADA/B,KAAKojL,kBAAkBhkK,GAChBpf,KAAKkpD,MAAMzB,OAAOroC,EAC7B,CACA,KAAApb,CAAM+mB,EAASH,EAAWI,EAAQY,GAC9B,MAAM03J,EAActjL,KAAKkpD,MAAMllD,MAAM+mB,EAASH,EAAWI,EAAQY,GACjE,IAAIxM,EAASkkK,EAEb,IAAKtjL,KAAKkiB,MAAO,CAEb,MAAMwgK,EAAgB,IAAIxjK,EAAkB8iJ,YAAY,CAAEF,YAAY,IACtE9hK,KAAKgjL,eAAeP,mBAAmBC,EAAe33J,EAASH,EAAWI,EAAQY,GAClFxM,EAASkkK,EAAYtrH,KAAK0qH,EAAe,CAAEjgL,KAAK,IAChD2c,EAAO8jK,YAAcI,EAKrB,MAAMnhH,EAAUmhH,EAAY7jK,MAC5B6jK,EAAY7jK,MAAS3f,IACjB4iL,EAAcW,eAAgB,EAC9BlhH,EAAQx5D,KAAK26K,EAAaxjL,EAAK,CAEvC,CACA,OAAOsf,CACX,CAIA,QAAAqqC,GACI,OAAOzpD,KAAKkpD,KAChB,iCChFJ9nD,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ8pB,aAAe9pB,EAAQq1D,aAAer1D,EAAQi7K,iBAAmBj7K,EAAQ6zB,iBAAmB7zB,EAAQq/K,gBAAkBr/K,EAAQs/K,eAAiBt/K,EAAQu/K,wBAAqB,EACpL,MAAMC,EAAa,EAAQ,OAC3BtiL,OAAO+C,eAAeD,EAAS,qBAAsB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAWD,kBAAoB,IAClIriL,OAAO+C,eAAeD,EAAS,iBAAkB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAWF,cAAgB,IAC1HpiL,OAAO+C,eAAeD,EAAS,kBAAmB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAWH,eAAiB,IAC5HniL,OAAO+C,eAAeD,EAAS,mBAAoB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAW3rJ,gBAAkB,IAC9H32B,OAAO+C,eAAeD,EAAS,mBAAoB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAWvE,gBAAkB,IAC9H/9K,OAAO+C,eAAeD,EAAS,eAAgB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAWnqH,YAAc,IACtHn4D,OAAO+C,eAAeD,EAAS,eAAgB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAW11J,YAAc,kCCTtH5sB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQi7K,iBAAmBj7K,EAAQ6zB,iBAAmB7zB,EAAQq1D,aAAer1D,EAAQu/K,mBAAqBv/K,EAAQs/K,eAAiBt/K,EAAQq/K,gBAAkBr/K,EAAQ8pB,kBAAe,EACpL,MACMvC,EAAU,IADW,EAAQ,OACInB,aAkBvC,SAAS0D,EAAaqG,GA4JtB,IAAmBsvJ,EAGM1oI,EA7JrB,GAAK5mB,EAGL,OAAQA,EAAK7G,UACT,IAAK,YAAa,MAAO,IAsJdm2J,EAtJ6BtvJ,EAAKn0B,MAuJ1CyjL,EAASz1K,QAAQ01K,EAAeC,MAtJnC,IAAK,YAAa,MAAO,KAAMxvJ,EAAKn0B,QACpC,IAAK,UAAW,CACZ,MAAM4jL,EAAezvJ,EACrB,MAAO,IAqJM4mB,EArJe6oI,EAAa5jL,MAsJ7C0jL,EAAc35K,KAAKgxC,KACnBA,EAAcA,EAAY/sC,QAAQ01K,EAAeC,IAE9C5oI,KAzJoD6oI,EAAahiJ,UAC5B,4CAAhCgiJ,EAAahiJ,SAAS5hC,OACU,0DAAhC4jL,EAAahiJ,SAAS5hC,MACtB,MAAM4jL,EAAahiJ,SAAS5hC,SAC5B,KAAK4jL,EAAantJ,SAAW,IAAImtJ,EAAantJ,WAAa,IACnE,CACA,IAAK,OAAQ,MAAO,KAAM3I,EAAaqG,EAAKtJ,YAAYiD,EAAaqG,EAAKzJ,cAAcoD,EAAaqG,EAAKrJ,UAAkC,iBAAxBqJ,EAAKzI,MAAM4B,SAA8B,GAAK,IAAIQ,EAAaqG,EAAKzI,aACxL,IAAK,WAAY,MAAO,IAAKyI,EAAKn0B,QAClC,IAAK,eAAgB,OAAOm0B,EAAKn0B,MAEzC,CAOA,SAASqjL,EAAgBO,GACrB,MAAM9/K,EAAQ,+BAA+BqqF,KAAKy1F,GAClD,IAAK9/K,EACD,MAAM,IAAIjC,MAAM,GAAG+hL,sBAEvB,OAAO9/K,EAAM,GAAGkK,QAAQ,QAAS,IACrC,CAOA,SAASs1K,EAAeM,GACpB,MAAM9/K,EAAQ,wCAAwCqqF,KAAKy1F,GAC3D,IAAK9/K,EACD,MAAM,IAAIjC,MAAM,GAAG+hL,sBAEvB,OAAO9/K,EAAM,KAAOA,EAAM,GACtB,wDACA,0CACR,CAOA,SAASy/K,EAAmBK,GACxB,MAAM9/K,EAAQ,oCAAoCqqF,KAAKy1F,GACvD,IAAK9/K,EACD,MAAM,IAAIjC,MAAM,GAAG+hL,sBAEvB,OAAO9/K,EAAM,GAAKA,EAAM,GAAGsB,cAAgB,EAC/C,CAQA,SAASi0D,EAAar5D,EAAO25D,GAEzB,GADAA,EAAcA,GAAepuC,GACxBvrB,GAA2B,IAAjBA,EAAMqB,OACjB,OAAOs4D,EAAY5zB,eAEvB,OAAQ/lC,EAAM,IACV,IAAK,IAAK,OAAO25D,EAAY3kC,UAAUh1B,EAAMsE,MAAM,IACnD,IAAK,IACD,IAAKq1D,EAAY5uC,SACb,MAAM,IAAIlpB,MAAM,wDAEpB,OAAO83D,EAAY5uC,SAAS/qB,EAAMsE,MAAM,IAC5C,IAAK,IAAK,CACN,MAAMmyB,EAAW8sJ,EAAmBvjL,GAC9BwM,EAAOmtD,EAAYtlC,UAAUivJ,EAAetjL,IAClD,OAAO25D,EAAY/d,QAAQynI,EAAgBrjL,GAAQy2B,GAAYjqB,EACnE,CAEA,QACI,GAAIxM,EAAM60B,WAAW,OAAS70B,EAAMqE,SAAS,MAAO,CAEhD,MAAM43B,EAAQj8B,EAAMsE,MAAM,GAAI,GACxBu/K,EAAc,GACpB,IAAIC,EAAa,EACbC,EAAY,EAChB,IAAK,IAAI5iL,EAAI,EAAGA,EAAI86B,EAAM56B,OAAQF,IAAK,CACnC,MAAMgB,EAAO85B,EAAM96B,GAInB,GAHa,MAATgB,GACA2hL,IAES,MAAT3hL,EAAc,CACd,GAAmB,IAAf2hL,EACA,MAAM,IAAIjiL,MAAM,4CAA4C7B,KAG5D8jL,GAER,CACa,MAAT3hL,GAA+B,IAAf2hL,IAChBD,EAAYxgL,KAAK44B,EAAM33B,MAAMy/K,EAAW5iL,IACxC4iL,EAAY5iL,EAAI,EAExB,CACA,GAAmB,IAAf2iL,EACA,MAAM,IAAIjiL,MAAM,4CAA4C7B,KAIhE,GAFA6jL,EAAYxgL,KAAK44B,EAAM33B,MAAMy/K,EAAW9nJ,EAAM56B,SAEnB,IAAvBwiL,EAAYxiL,QAAuC,IAAvBwiL,EAAYxiL,OACxC,MAAM,IAAIQ,MAAM,4BAA4B7B,KAEhD,OAAO25D,EAAYnlC,KAAK6kC,EAAawqH,EAAY,IAAKxqH,EAAawqH,EAAY,IAAKxqH,EAAawqH,EAAY,IAAKA,EAAY,GAAKxqH,EAAawqH,EAAY,SAAM5jL,EACtK,CACA,IAAKD,EAAM60B,WAAW,OAAS70B,EAAMqE,SAAS,KAC1C,MAAM,IAAIxC,MAAM,gEAAgE7B,KAEpF,OAAO25D,EAAYtlC,UAAUr0B,EAAMsE,MAAM,GAAI,IAEzD,CA1GAN,EAAQ8pB,aAAeA,EAavB9pB,EAAQq/K,gBAAkBA,EAe1Br/K,EAAQs/K,eAAiBA,EAazBt/K,EAAQu/K,mBAAqBA,EAkE7Bv/K,EAAQq1D,aAAeA,EAevBr1D,EAAQ6zB,iBARR,SAA0BrD,GACtB,MAAO,CACH3J,QAASiD,EAAa0G,EAAK3J,SAC3BH,UAAWoD,EAAa0G,EAAK9J,WAC7BI,OAAQgD,EAAa0G,EAAK1J,QAC1BY,MAAOoC,EAAa0G,EAAK9I,OAEjC,EAaA1nB,EAAQi7K,iBAJR,SAA0B+E,EAAYrqH,GAElC,OADAA,EAAcA,GAAepuC,GACViJ,KAAK6kC,EAAa2qH,EAAWn5J,QAAS8uC,GAAcN,EAAa2qH,EAAWt5J,UAAWivC,GAAcN,EAAa2qH,EAAWl5J,OAAQ6uC,GAAcN,EAAa2qH,EAAWt4J,MAAOiuC,GACzM,EAcA,MAAM+pH,EAAgB,+DAEhBO,EAAU,IAAI3iK,IAAI,CACpB,CAAC,KAAM,QACP,CAAC,IAAK,OACN,CAAC,KAAM,OACP,CAAC,KAAM,OACP,CAAC,KAAM,OACP,CAAC,KAAM,OACP,CAAC,KAAM,SAEX,SAASqiK,EAAwB5P,GAE7B,MAAMpwK,EAASsgL,EAAQ78K,IAAI2sK,GAC3B,IAAKpwK,EAAQ,CACT,GAAyB,IAArBowK,EAAU1yK,OAAc,CAExB,MAAML,EAAO+yK,EAAU50K,WAAW,GAAGmC,SAAS,IAC9C,MAAO,GAAG,UAAUgD,MAAM,GAAItD,EAAKK,UAAUL,GACjD,CAEA,MAAMA,GAA4C,MAAnC+yK,EAAU50K,WAAW,GAAK,OAAgB40K,EAAU50K,WAAW,GAAK,MAAMmC,SAAS,IAClG,MAAO,GAAG,cAAcgD,MAAM,GAAItD,EAAKK,UAAUL,GACrD,CACA,OAAO2C,CACX,gCCtNAzC,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ8pB,aAAe9pB,EAAQq1D,aAAer1D,EAAQi7K,iBAAmBj7K,EAAQ6zB,iBAAmB7zB,EAAQq/K,gBAAkBr/K,EAAQs/K,eAAiBt/K,EAAQu/K,wBAAqB,EACpL,MAAMC,EAAa,EAAQ,OAC3BtiL,OAAO+C,eAAeD,EAAS,qBAAsB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAWD,kBAAoB,IAClIriL,OAAO+C,eAAeD,EAAS,iBAAkB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAWF,cAAgB,IAC1HpiL,OAAO+C,eAAeD,EAAS,kBAAmB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAWH,eAAiB,IAC5HniL,OAAO+C,eAAeD,EAAS,mBAAoB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAW3rJ,gBAAkB,IAC9H32B,OAAO+C,eAAeD,EAAS,mBAAoB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAWvE,gBAAkB,IAC9H/9K,OAAO+C,eAAeD,EAAS,eAAgB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAWnqH,YAAc,IACtHn4D,OAAO+C,eAAeD,EAAS,eAAgB,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOo8K,EAAW11J,YAAc,kCCTtH5sB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQi7K,iBAAmBj7K,EAAQ6zB,iBAAmB7zB,EAAQq1D,aAAer1D,EAAQu/K,mBAAqBv/K,EAAQs/K,eAAiBt/K,EAAQq/K,gBAAkBr/K,EAAQ8pB,kBAAe,EACpL,MACMvC,EAAU,IADW,EAAQ,OACInB,aAkBvC,SAAS0D,EAAaqG,GAElB,GAAKA,EAGL,OAAQA,EAAK7G,UACT,IAAK,YAYL,IAAK,eAAgB,OAAO6G,EAAKn0B,MAXjC,IAAK,YAAa,MAAQ,KAAOm0B,EAAKn0B,MACtC,IAAK,UACD,MAAM4jL,EAAezvJ,EACrB,MAAQ,IAAMyvJ,EAAa5jL,MAAQ,KAC9B4jL,EAAahiJ,UACsB,4CAAhCgiJ,EAAahiJ,SAAS5hC,OACU,0DAAhC4jL,EAAahiJ,SAAS5hC,MACtB,KAAO4jL,EAAahiJ,SAAS5hC,MAAQ,KACxC4jL,EAAantJ,SAAW,IAAMmtJ,EAAantJ,SAAW,IAC/D,IAAK,OAAQ,MAAO,KAAK3I,EAAaqG,EAAKtJ,YAAYiD,EAAaqG,EAAKzJ,cAAcoD,EAAaqG,EAAKrJ,UAAkC,iBAAxBqJ,EAAKzI,MAAM4B,SAA8B,GAAK,IAAMQ,EAAaqG,EAAKzI,WACzL,IAAK,WAAY,MAAQ,IAAMyI,EAAKn0B,MAG5C,CAOA,SAASqjL,EAAgBO,GACrB,MAAM9/K,EAAQ,YAAYqqF,KAAKy1F,GAC/B,IAAK9/K,EACD,MAAM,IAAIjC,MAAM+hL,EAAe,qBAEnC,OAAO9/K,EAAM,EACjB,CAOA,SAASw/K,EAAeM,GACpB,MAAM9/K,EAAQ,qCAAqCqqF,KAAKy1F,GACxD,IAAK9/K,EACD,MAAM,IAAIjC,MAAM+hL,EAAe,qBAEnC,OAAO9/K,EAAM,KAAOA,EAAM,GACpB,wDAA0D,0CACpE,CAOA,SAASy/K,EAAmBK,GACxB,MAAM9/K,EAAQ,mCAAmCqqF,KAAKy1F,GACtD,IAAK9/K,EACD,MAAM,IAAIjC,MAAM+hL,EAAe,qBAEnC,OAAO9/K,EAAM,GAAKA,EAAM,GAAGsB,cAAgB,EAC/C,CAQA,SAASi0D,EAAar5D,EAAO25D,GAEzB,GADAA,EAAcA,GAAepuC,GACxBvrB,IAAUA,EAAMqB,OACjB,OAAOs4D,EAAY5zB,eAEvB,OAAQ/lC,EAAM,IACV,IAAK,IAAK,OAAO25D,EAAY3kC,UAAUh1B,EAAM+lF,OAAO,IACpD,IAAK,IACD,IAAKpsB,EAAY5uC,SACb,MAAM,IAAIlpB,MAAM,wDAEpB,OAAO83D,EAAY5uC,SAAS/qB,EAAM+lF,OAAO,IAC7C,IAAK,IACD,MAAMtvD,EAAW8sJ,EAAmBvjL,GAC9BwM,EAAOmtD,EAAYtlC,UAAUivJ,EAAetjL,IAClD,OAAO25D,EAAY/d,QAAQynI,EAAgBrjL,GAAQy2B,GAAYjqB,GAEnE,QACI,GAAiB,MAAbxM,EAAM,IAAcA,EAAMqB,OAAS,GAAkB,MAAbrB,EAAM,IAA0C,MAA5BA,EAAMA,EAAMqB,OAAS,IAA0C,MAA5BrB,EAAMA,EAAMqB,OAAS,GAAY,CAEhI,MAAM46B,EAAQj8B,EAAMsE,MAAM,GAAI,GAAGwJ,OACjC,IAAI+1K,EAAc,GACdC,EAAa,EACbC,EAAY,EACZG,GAAU,EACd,IAAK,IAAI/iL,EAAI,EAAGA,EAAI86B,EAAM56B,OAAQF,IAAK,CACnC,MAAMgB,EAAO85B,EAAM96B,GAGnB,GAFa,MAATgB,GACA2hL,IACS,MAAT3hL,EAAc,CACd,GAAmB,IAAf2hL,EACA,MAAM,IAAIjiL,MAAM,4CAA8C7B,GAG9D8jL,GAER,CACA,GAAa,MAAT3hL,EAAc,CACd,IAAIgiL,GAAU,EACVvhL,EAAIzB,EACR,KAAOyB,KAAM,GAAkB,OAAbq5B,EAAMr5B,IACpBuhL,GAAWA,EAEVA,IAEDD,GAAWA,EAEnB,CACA,GAAa,MAAT/hL,IAAiB+hL,GAA0B,IAAfJ,EAAkB,CAE9C,IADAD,EAAYxgL,KAAK44B,EAAM33B,MAAMy/K,EAAW5iL,IAChB,MAAjB86B,EAAM96B,EAAI,IACbA,GAAK,EAET4iL,EAAY5iL,EAAI,CACpB,CACJ,CACA,GAAmB,IAAf2iL,EACA,MAAM,IAAIjiL,MAAM,4CAA8C7B,GAIlE,GAFA6jL,EAAYxgL,KAAK44B,EAAM33B,MAAMy/K,EAAW9nJ,EAAM56B,SAEnB,IAAvBwiL,EAAYxiL,QAAuC,IAAvBwiL,EAAYxiL,OACxC,MAAM,IAAIQ,MAAM,4BAA8B7B,GAGlD,OADA6jL,EAAcA,EAAY5+K,KAAIkvB,GAAQA,EAAKU,WAAW,OAASV,EAAKrY,SAAS,KAAOqY,EAAK7vB,MAAM,GAAI,GAAK6vB,IACjGwlC,EAAYnlC,KAAK6kC,EAAawqH,EAAY,IAAKxqH,EAAawqH,EAAY,IAAKxqH,EAAawqH,EAAY,IAAKA,EAAY,GAAKxqH,EAAawqH,EAAY,SAAM5jL,EACtK,CACA,OAAO05D,EAAYtlC,UAAUr0B,GAEzC,CApHAgE,EAAQ8pB,aAAeA,EAavB9pB,EAAQq/K,gBAAkBA,EAc1Br/K,EAAQs/K,eAAiBA,EAazBt/K,EAAQu/K,mBAAqBA,EA6E7Bv/K,EAAQq1D,aAAeA,EAiBvBr1D,EAAQ6zB,iBAVR,SAA0B7e,GAEtB,MAAO,CACH6R,QAASiD,EAAa9U,EAAE6R,SACxBH,UAAWoD,EAAa9U,EAAE0R,WAC1BI,OAAQgD,EAAa9U,EAAE8R,QACvBY,MAAOoC,EAAa9U,EAAE0S,OAG9B,EAaA1nB,EAAQi7K,iBAJR,SAA0B+E,EAAYrqH,GAElC,OADAA,EAAcA,GAAepuC,GACViJ,KAAK6kC,EAAa2qH,EAAWn5J,QAAS8uC,GAAcN,EAAa2qH,EAAWt5J,UAAWivC,GAAcN,EAAa2qH,EAAWl5J,OAAQ6uC,GAAcN,EAAa2qH,EAAWt4J,MAAOiuC,GACzM,sCC3LA,IAAI/xD,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAAuBtE,GAC5CsE,EAAa,EAAQ,OAAmBtE,iCChBxC9C,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQy8D,qBAAuBz8D,EAAQogL,qBAAuBpgL,EAAQqgL,aAAergL,EAAQsgL,UAAYtgL,EAAQu8D,mBAAqBv8D,EAAQ+lD,gBAAkB/lD,EAAQumD,UAAYvmD,EAAQugL,iBAAmBvgL,EAAQ+6K,WAAa/6K,EAAQk8D,kBAAoBl8D,EAAQwgL,YAAcxgL,EAAQywB,eAAiBzwB,EAAQygL,SAAWzgL,EAAQ0gL,0BAA4B1gL,EAAQ2gL,oBAAsB3gL,EAAQimD,kBAAoBjmD,EAAQ4gL,YAAc5gL,EAAQg7D,mBAAqBh7D,EAAQ6gL,aAAe7gL,EAAQ8gL,kBAAoB9gL,EAAQ+gL,cAAgB/gL,EAAQijC,eAAiBjjC,EAAQq6C,SAAWr6C,EAAQghL,kBAAoBhhL,EAAQ65C,qBAAkB,EAChoB,MACM1zB,EAAK,IADgB,EAAQ,OACDC,aAmBlC,SAASi0B,EAAS7pB,EAAMywJ,GACpB,OAAIA,GAA8C,iBAAxBzwJ,EAAK9I,MAAM4B,SAC1B,CAACkH,EAAK3J,QAAS2J,EAAK9J,UAAW8J,EAAK1J,QAExC,CAAC0J,EAAK3J,QAAS2J,EAAK9J,UAAW8J,EAAK1J,OAAQ0J,EAAK9I,MAC5D,CA8UA,SAASqzJ,EAAWvqJ,EAAM0wJ,GACtB,OAAOA,EAAQ1wJ,EAAK3J,QAAS,YACtBq6J,EAAQ1wJ,EAAK9J,UAAW,cACxBw6J,EAAQ1wJ,EAAK1J,OAAQ,WACrBo6J,EAAQ1wJ,EAAK9I,MAAO,QAC/B,CAsFA,SAAS44J,EAAUz1F,EAAOC,GACtB,OAAQA,GACkB,aAAnBA,EAAMxhE,UACc,SAAnBwhE,EAAMxhE,UAA0C,SAAnBuhE,EAAMvhE,UAAuB82J,EAAqBv1F,EAAOC,IACvFA,EAAMtuD,OAAOquD,EACxB,CAkBA,SAASw1F,EAAa7vJ,EAAM3J,EAASH,EAAWI,EAAQY,GACpD,OAAO44J,EAAU9vJ,EAAK3J,QAASA,IACxBy5J,EAAU9vJ,EAAK9J,UAAWA,IAC1B45J,EAAU9vJ,EAAK1J,OAAQA,IACvBw5J,EAAU9vJ,EAAK9I,MAAOA,EACjC,CAaA,SAAS04J,EAAqB5vJ,EAAMhF,GAChC,OAAO60J,EAAa7vJ,EAAMhF,EAAQ3E,QAAS2E,EAAQ9E,UAAW8E,EAAQ1E,OAAQ0E,EAAQ9D,MAC1F,CAveA1nB,EAAQ65C,gBAAkB,CAAC,UAAW,YAAa,SAAU,SAK7D75C,EAAQghL,kBAAoB,CAAC,UAAW,YAAa,UAerDhhL,EAAQq6C,SAAWA,EAqBnBr6C,EAAQijC,eAZR,SAASA,EAAezS,EAAMywJ,GAC1B,MAAMhpJ,EAAQ,GACd,IAAK,MAAM9H,KAAQkqB,EAAS7pB,EAAMywJ,GACR,SAAlB9wJ,EAAK7G,SACL2Z,EAAe9S,EAAM8wJ,GAAoBz6K,SAAQ0qB,GAAW+G,EAAM54B,KAAK6xB,KAGvE+G,EAAM54B,KAAK8wB,GAGnB,OAAO8H,CACX,EAgBAj4B,EAAQ+gL,cARR,SAAuBvwJ,GACnB,MAAO,CACH,CAAEj0B,IAAK,UAAWP,MAAOw0B,EAAK3J,SAC9B,CAAEtqB,IAAK,YAAaP,MAAOw0B,EAAK9J,WAChC,CAAEnqB,IAAK,SAAUP,MAAOw0B,EAAK1J,QAC7B,CAAEvqB,IAAK,QAASP,MAAOw0B,EAAK9I,OAEpC,EAuBA1nB,EAAQ8gL,kBAXR,SAA2BK,EAAYC,EAAWzrH,GAC9C,MAAMuF,EAAW,CAAC,EAQlB,OAPAimH,EAAW36K,SAAS66K,GAAcnmH,EAASmmH,EAAU9kL,KAAO8kL,EAAUrlL,QAClEolL,IACAlmH,EAASr0C,QAAUq0C,EAASr0C,SAAWu6J,EAAU,WACjDlmH,EAASx0C,UAAYw0C,EAASx0C,WAAa06J,EAAU,aACrDlmH,EAASp0C,OAASo0C,EAASp0C,QAAUs6J,EAAU,UAC/ClmH,EAASxzC,MAAQwzC,EAASxzC,OAAS05J,EAAU,WAEzCzrH,GAAexvC,GAAIqK,KAAK0qC,EAASr0C,QAASq0C,EAASx0C,UAAWw0C,EAASp0C,OAAQo0C,EAASxzC,MACpG,EAaA1nB,EAAQ6gL,aANR,SAAsBrwJ,EAAM0nB,GACxBA,EAAG1nB,EAAK3J,QAAS,WACjBqxB,EAAG1nB,EAAK9J,UAAW,aACnBwxB,EAAG1nB,EAAK1J,OAAQ,UAChBoxB,EAAG1nB,EAAK9I,MAAO,QACnB,EAkCA1nB,EAAQg7D,mBA1BR,SAASA,EAAmBxqC,EAAM0nB,EAAIj7C,EAAO,IACX,SAA1BuzB,EAAK3J,QAAQyC,SACb0xC,EAAmBxqC,EAAK3J,QAASqxB,EAAI,IAAIj7C,EAAM,YAG/Ci7C,EAAG1nB,EAAK3J,QAAS,IAAI5pB,EAAM,YAEC,SAA5BuzB,EAAK9J,UAAU4C,SACf0xC,EAAmBxqC,EAAK9J,UAAWwxB,EAAI,IAAIj7C,EAAM,cAGjDi7C,EAAG1nB,EAAK9J,UAAW,IAAIzpB,EAAM,cAEJ,SAAzBuzB,EAAK1J,OAAOwC,SACZ0xC,EAAmBxqC,EAAK1J,OAAQoxB,EAAI,IAAIj7C,EAAM,WAG9Ci7C,EAAG1nB,EAAK1J,OAAQ,IAAI7pB,EAAM,WAEF,SAAxBuzB,EAAK9I,MAAM4B,SACX0xC,EAAmBxqC,EAAK9I,MAAOwwB,EAAI,IAAIj7C,EAAM,UAG7Ci7C,EAAG1nB,EAAK9I,MAAO,IAAIzqB,EAAM,SAEjC,EAwBA+C,EAAQ4gL,YAhBR,SAAqBpwJ,EAAMzvB,GACvB,MAAMk3B,EAAQ,GAad,OAZIl3B,EAAOyvB,EAAK3J,QAAS,YACrBoR,EAAM54B,KAAKmxB,EAAK3J,SAEhB9lB,EAAOyvB,EAAK9J,UAAW,cACvBuR,EAAM54B,KAAKmxB,EAAK9J,WAEhB3lB,EAAOyvB,EAAK1J,OAAQ,WACpBmR,EAAM54B,KAAKmxB,EAAK1J,QAEhB/lB,EAAOyvB,EAAK9I,MAAO,UACnBuQ,EAAM54B,KAAKmxB,EAAK9I,OAEbuQ,CACX,EA6CAj4B,EAAQimD,kBApCR,SAASA,EAAkBz1B,EAAMzvB,EAAQ9D,EAAO,IAC5C,IAAIg7B,EAAQ,GAiCZ,MAhC8B,SAA1BzH,EAAK3J,QAAQyC,SACb2O,EAAQ,IAAIA,KAAUguB,EAAkBz1B,EAAK3J,QAAS9lB,EAAQ,IAAI9D,EAAM,aAGpE8D,EAAOyvB,EAAK3J,QAAS,IAAI5pB,EAAM,aAC/Bg7B,EAAM54B,KAAKmxB,EAAK3J,SAGQ,SAA5B2J,EAAK9J,UAAU4C,SACf2O,EAAQ,IAAIA,KAAUguB,EAAkBz1B,EAAK9J,UAAW3lB,EAAQ,IAAI9D,EAAM,eAGtE8D,EAAOyvB,EAAK9J,UAAW,IAAIzpB,EAAM,eACjCg7B,EAAM54B,KAAKmxB,EAAK9J,WAGK,SAAzB8J,EAAK1J,OAAOwC,SACZ2O,EAAQ,IAAIA,KAAUguB,EAAkBz1B,EAAK1J,OAAQ/lB,EAAQ,IAAI9D,EAAM,YAGnE8D,EAAOyvB,EAAK1J,OAAQ,IAAI7pB,EAAM,YAC9Bg7B,EAAM54B,KAAKmxB,EAAK1J,QAGI,SAAxB0J,EAAK9I,MAAM4B,SACX2O,EAAQ,IAAIA,KAAUguB,EAAkBz1B,EAAK9I,MAAO3mB,EAAQ,IAAI9D,EAAM,WAGlE8D,EAAOyvB,EAAK9I,MAAO,IAAIzqB,EAAM,WAC7Bg7B,EAAM54B,KAAKmxB,EAAK9I,OAGjBuQ,CACX,EAwBAj4B,EAAQ2gL,oBAhBR,SAA6BnwJ,EAAMzvB,GAC/B,MAAMugL,EAAQ,GAad,OAZIvgL,EAAOyvB,EAAK3J,QAAS,YACrBy6J,EAAMjiL,KAAK,WAEX0B,EAAOyvB,EAAK9J,UAAW,cACvB46J,EAAMjiL,KAAK,aAEX0B,EAAOyvB,EAAK1J,OAAQ,WACpBw6J,EAAMjiL,KAAK,UAEX0B,EAAOyvB,EAAK9I,MAAO,UACnB45J,EAAMjiL,KAAK,SAERiiL,CACX,EAiDAthL,EAAQ0gL,0BAxCR,SAASA,EAA0BlwJ,EAAMzvB,EAAQ9D,EAAO,IACpD,IAAIqkL,EAAQ,GACZ,MAAMC,EAAQ,IAAItkL,EAAM,WACM,SAA1BuzB,EAAK3J,QAAQyC,SACbg4J,EAAQ,IAAIA,KAAUZ,EAA0BlwJ,EAAK3J,QAAS9lB,EAAQwgL,IAGlExgL,EAAOyvB,EAAK3J,QAAS06J,IACrBD,EAAMjiL,KAAKkiL,GAGnB,MAAMC,EAAQ,IAAIvkL,EAAM,aACQ,SAA5BuzB,EAAK9J,UAAU4C,SACfg4J,EAAQ,IAAIA,KAAUZ,EAA0BlwJ,EAAK9J,UAAW3lB,EAAQygL,IAGpEzgL,EAAOyvB,EAAK9J,UAAW86J,IACvBF,EAAMjiL,KAAKmiL,GAGnB,MAAMC,EAAQ,IAAIxkL,EAAM,UACK,SAAzBuzB,EAAK1J,OAAOwC,SACZg4J,EAAQ,IAAIA,KAAUZ,EAA0BlwJ,EAAK1J,OAAQ/lB,EAAQ0gL,IAGjE1gL,EAAOyvB,EAAK1J,OAAQ26J,IACpBH,EAAMjiL,KAAKoiL,GAGnB,MAAMC,EAAQ,IAAIzkL,EAAM,SASxB,MAR4B,SAAxBuzB,EAAK9I,MAAM4B,SACXg4J,EAAQ,IAAIA,KAAUZ,EAA0BlwJ,EAAK9I,MAAO3mB,EAAQ2gL,IAGhE3gL,EAAOyvB,EAAK9I,MAAOg6J,IACnBJ,EAAMjiL,KAAKqiL,GAGZJ,CACX,EAaAthL,EAAQygL,SAHR,SAAkBjwJ,EAAMypH,EAAQtkF,GAC5B,OAAQA,GAAexvC,GAAIqK,KAAKypH,EAAOzpH,EAAK3J,QAAS,WAAYozH,EAAOzpH,EAAK9J,UAAW,aAAcuzH,EAAOzpH,EAAK1J,OAAQ,UAAWmzH,EAAOzpH,EAAK9I,MAAO,SAC5J,EAsBA1nB,EAAQywB,eAXR,SAASA,EAAeD,EAAMypH,EAAQtkF,EAAa14D,EAAO,IACtD,OAAQ04D,GAAexvC,GAAIqK,KAA+B,SAA1BA,EAAK3J,QAAQyC,SACzCmH,EAAeD,EAAK3J,QAASozH,EAAQtkF,EAAa,IAAI14D,EAAM,YAC5Dg9I,EAAOzpH,EAAK3J,QAAS,IAAI5pB,EAAM,YAAyC,SAA5BuzB,EAAK9J,UAAU4C,SAC3DmH,EAAeD,EAAK9J,UAAWuzH,EAAQtkF,EAAa,IAAI14D,EAAM,cAC9Dg9I,EAAOzpH,EAAK9J,UAAW,IAAIzpB,EAAM,cAAwC,SAAzBuzB,EAAK1J,OAAOwC,SAC5DmH,EAAeD,EAAK1J,OAAQmzH,EAAQtkF,EAAa,IAAI14D,EAAM,WAC3Dg9I,EAAOzpH,EAAK1J,OAAQ,IAAI7pB,EAAM,WAAoC,SAAxBuzB,EAAK9I,MAAM4B,SACrDmH,EAAeD,EAAK9I,MAAOuyH,EAAQtkF,EAAa,IAAI14D,EAAM,UAC1Dg9I,EAAOzpH,EAAK9I,MAAO,IAAIzqB,EAAM,UACrC,EAgBA+C,EAAQwgL,YAPR,SAAqBhwJ,EAAMk9H,EAASi0B,GAChC,IAAI3lL,EAAQ2lL,EAIZ,OAHA3lL,EAAQ0xJ,EAAQ1xJ,EAAOw0B,EAAK3J,QAAS,WACrC7qB,EAAQ0xJ,EAAQ1xJ,EAAOw0B,EAAK9J,UAAW,aACvC1qB,EAAQ0xJ,EAAQ1xJ,EAAOw0B,EAAK1J,OAAQ,UAC7B4mI,EAAQ1xJ,EAAOw0B,EAAK9I,MAAO,QACtC,EAsCA1nB,EAAQk8D,kBA5BR,SAASA,EAAkB1rC,EAAMk9H,EAASi0B,EAAc1kL,EAAO,IAC3D,IAAIjB,EAAQ2lL,EAyBZ,OAvBI3lL,EAD0B,SAA1Bw0B,EAAK3J,QAAQyC,SACL4yC,EAAkB1rC,EAAK3J,QAAS6mI,EAAS1xJ,EAAO,IAAIiB,EAAM,YAG1DywJ,EAAQ1xJ,EAAOw0B,EAAK3J,QAAS,IAAI5pB,EAAM,YAG/CjB,EAD4B,SAA5Bw0B,EAAK9J,UAAU4C,SACP4yC,EAAkB1rC,EAAK9J,UAAWgnI,EAAS1xJ,EAAO,IAAIiB,EAAM,cAG5DywJ,EAAQ1xJ,EAAOw0B,EAAK9J,UAAW,IAAIzpB,EAAM,cAGjDjB,EADyB,SAAzBw0B,EAAK1J,OAAOwC,SACJ4yC,EAAkB1rC,EAAK1J,OAAQ4mI,EAAS1xJ,EAAO,IAAIiB,EAAM,WAGzDywJ,EAAQ1xJ,EAAOw0B,EAAK1J,OAAQ,IAAI7pB,EAAM,WAG9CjB,EADwB,SAAxBw0B,EAAK9I,MAAM4B,SACH4yC,EAAkB1rC,EAAK9I,MAAOgmI,EAAS1xJ,EAAO,IAAIiB,EAAM,UAGxDywJ,EAAQ1xJ,EAAOw0B,EAAK9I,MAAO,IAAIzqB,EAAM,UAE1CjB,CACX,EAcAgE,EAAQ+6K,WAAaA,EAsBrB/6K,EAAQugL,iBAdR,SAASA,EAAiB/vJ,EAAM0wJ,EAASjkL,EAAO,IAC5C,OAAkC,SAA1BuzB,EAAK3J,QAAQyC,SACjBi3J,EAAiB/vJ,EAAK3J,QAASq6J,EAAS,IAAIjkL,EAAM,YAClDikL,EAAQ1wJ,EAAK3J,QAAS,IAAI5pB,EAAM,eACA,SAA5BuzB,EAAK9J,UAAU4C,SACfi3J,EAAiB/vJ,EAAK9J,UAAWw6J,EAAS,IAAIjkL,EAAM,cACpDikL,EAAQ1wJ,EAAK9J,UAAW,IAAIzpB,EAAM,iBACT,SAAzBuzB,EAAK1J,OAAOwC,SACZi3J,EAAiB/vJ,EAAK1J,OAAQo6J,EAAS,IAAIjkL,EAAM,WACjDikL,EAAQ1wJ,EAAK1J,OAAQ,IAAI7pB,EAAM,cACP,SAAxBuzB,EAAK9I,MAAM4B,SACXi3J,EAAiB/vJ,EAAK9I,MAAOw5J,EAAS,IAAIjkL,EAAM,UAChDikL,EAAQ1wJ,EAAK9I,MAAO,IAAIzqB,EAAM,UAC1C,EAcA+C,EAAQumD,UANR,SAAmB/1B,EAAM0wJ,GACrB,OAAOA,EAAQ1wJ,EAAK3J,QAAS,YACtBq6J,EAAQ1wJ,EAAK9J,UAAW,cACxBw6J,EAAQ1wJ,EAAK1J,OAAQ,WACrBo6J,EAAQ1wJ,EAAK9I,MAAO,QAC/B,EAuBA1nB,EAAQ+lD,gBAdR,SAASA,EAAgBv1B,EAAM0wJ,EAASjkL,EAAO,IAC3C,OAAkC,SAA1BuzB,EAAK3J,QAAQyC,SACjBy8B,EAAgBv1B,EAAK3J,QAASq6J,EAAS,IAAIjkL,EAAM,YACjDikL,EAAQ1wJ,EAAK3J,QAAS,IAAI5pB,EAAM,eACA,SAA5BuzB,EAAK9J,UAAU4C,SACfy8B,EAAgBv1B,EAAK9J,UAAWw6J,EAAS,IAAIjkL,EAAM,cACnDikL,EAAQ1wJ,EAAK9J,UAAW,IAAIzpB,EAAM,iBACT,SAAzBuzB,EAAK1J,OAAOwC,SACZy8B,EAAgBv1B,EAAK1J,OAAQo6J,EAAS,IAAIjkL,EAAM,WAChDikL,EAAQ1wJ,EAAK1J,OAAQ,IAAI7pB,EAAM,cACP,SAAxBuzB,EAAK9I,MAAM4B,SACXy8B,EAAgBv1B,EAAK9I,MAAOw5J,EAAS,IAAIjkL,EAAM,UAC/CikL,EAAQ1wJ,EAAK9I,MAAO,IAAIzqB,EAAM,UAC1C,EAgBA+C,EAAQu8D,mBATR,SAASA,EAAmBpsC,EAAMlzB,GAC9B,GAAoB,IAAhBA,EAAKI,OACL,OAAO8yB,EAEX,GAAsB,SAAlBA,EAAK7G,SACL,OAAOizC,EAAmBpsC,EAAKlzB,EAAK,IAAKA,EAAKqD,MAAM,IAExD,MAAM,IAAIzC,MAAM,gBAAgBZ,EAAK,wBAAwBkzB,EAAK7G,WACtE,EAoBAtpB,EAAQsgL,UAAYA,EAuBpBtgL,EAAQqgL,aAAeA,EAevBrgL,EAAQogL,qBAAuBA,EAoB/BpgL,EAAQy8D,qBAnBR,SAA8BjsC,EAAMhF,EAAS/a,EAAM,CAAC,GAChD,MAAMxP,EAAM,CAAC,EAgBb,OAfA,SAASnB,EAAM8hL,EAAUp9I,GACrB,OAAOu2I,EAAW6G,GAAU,CAAC/wG,EAAIt0E,KAC7B,IAAIqE,EAAImZ,EACR,MAAM+2D,EAAKtsC,EAAMjoC,GACjB,OAAQs0E,EAAGvnD,UACP,IAAK,WACD,OAAQ7Y,EAAIoxK,gBAAkC,aAAhB/wG,EAAGxnD,WAC0D,QAAlFvP,EAA8B,QAAxBnZ,EAAKK,EAAI4vE,EAAG70E,cAA2B,IAAP4E,OAAgB,EAASA,EAAG47B,OAAOs0C,UAAwB,IAAP/2D,EAAgBA,GAAM9Y,EAAI4vE,EAAG70E,OAAS80E,GAAI,IACjJ,IAAK,OACD,MAAuB,SAAhBA,EAAGxnD,UAAuBxpB,EAAM+wE,EAAIC,GAC/C,QACI,OAAOD,EAAGr0C,OAAOs0C,GACzB,GAER,CACOhxE,CAAM0rB,EAASgF,MAAU/f,EAAIqxK,gBAAiB7gL,EACzD,gCCngBA/D,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ6yK,SAAW7yK,EAAQ+hL,iBAAmB/hL,EAAQ+iC,aAAe/iC,EAAQgiL,YAAchiL,EAAQk7K,cAAgBl7K,EAAQiiL,cAAgBjiL,EAAQkiL,eAAiBliL,EAAQ06B,UAAY16B,EAAQmiL,gBAAa,EAC7M,MAAMn8J,EAAe,EAAQ,OA6B7B,SAASk8J,EAAejqJ,EAAO3O,GAC3B,OAAO2O,EAAMl3B,QAAQovB,GAASA,EAAK7G,WAAaA,GACpD,CAzBAtpB,EAAQmiL,WAAa,CAAC,YAAa,YAAa,UAAW,WAAY,eAAgB,QAgBvFniL,EAAQ06B,UAPR,SAAmBzC,GACf,MAAM/Z,EAAO,CAAC,EACd,OAAO+Z,EAAMl3B,QAAOovB,IAChB,MAAMtG,GAAa,EAAI7D,EAAa8D,cAAcqG,GAClD,QAAStG,KAAc3L,KAAUA,EAAK2L,IAAc,EAAK,GAEjE,EAWA7pB,EAAQkiL,eAAiBA,EASzBliL,EAAQiiL,cAHR,SAAuBhqJ,GACnB,OAAOiqJ,EAAejqJ,EAAO,YACjC,EAUAj4B,EAAQk7K,cAHR,SAAuBjjJ,GACnB,OAAOiqJ,EAAejqJ,EAAO,YACjC,EAUAj4B,EAAQgiL,YAHR,SAAqB/pJ,GACjB,OAAOiqJ,EAAejqJ,EAAO,UACjC,EAUAj4B,EAAQ+iC,aAHR,SAAsB9K,GAClB,OAAOiqJ,EAAejqJ,EAAO,WACjC,EAUAj4B,EAAQ+hL,iBAHR,SAA0B9pJ,GACtB,OAAOiqJ,EAAejqJ,EAAO,eACjC,EAUAj4B,EAAQ6yK,SAHR,SAAkB56I,GACd,OAAOiqJ,EAAejqJ,EAAO,OACjC,gCCtFA,MAAM,cAAEmqJ,GAAkB,EAAQ,QAC5B,WAAEC,EAAU,MAAEC,GAAU,EAAQ,QAChC,aAAEC,EAAY,YAAEC,EAAW,yBAAEC,GAA6B,EAAQ,OAClEC,EAAM,EAAQ,QACd,qBAAEp3E,GAAyBg3E,EACjC,IAAIK,EAUJ5iL,EAAOC,QAAQ4iL,eAAiB,SAAwBj5K,EAAQuR,GAE9D,GAP0B,EAACvR,EAAQ7D,KACnC,GAAsB,iBAAX6D,KAAyB,YAAaA,GAC/C,MAAM,IAAI2hG,EAIgB,SAJW,cAAe3hG,EACtD,EAGAk5K,CAAoBl5K,IACf44K,EAAarnK,KAAYsnK,EAAYtnK,GACxC,MAAM,IAAIowF,EAAqB,SAAU,CAAC,iBAAkB,iBAAkB,UAAWpwF,GAE3F,OAAOnb,EAAOC,QAAQ8iL,yBAAyBn5K,EAAQuR,EACzD,EACAnb,EAAOC,QAAQ8iL,yBAA2B,SAAUn5K,EAAQuR,GAC1D,GAAsB,iBAAXvR,KAAyB,YAAaA,GAC/C,OAAOuR,EAET,MAAM6nK,EAAUR,EAAarnK,GACzB,KACEA,EAAOuC,QACL,IAAI4kK,OAAWpmL,EAAW,CACxB8mD,MAAOp5C,EAAO0tK,SAElB,EAEF,KACEn8J,EAAOunK,GACL,IAAIJ,OAAWpmL,EAAW,CACxB8mD,MAAOp5C,EAAO0tK,SAElB,EAEN,GAAI1tK,EAAOsB,QACT83K,QACK,CACLJ,EAAmBA,GAAoB,0BACvC,MAAMK,EAAaL,EAAiBh5K,EAAQo5K,GAC5CL,EAAIxnK,EAAQ8nK,EAAWZ,GACzB,CACA,OAAOlnK,CACT,6BCjDA,MAAM,qBAAE+nK,EAAoB,eAAEC,EAAc,uBAAEC,EAAsB,WAAEx7K,GAAe,EAAQ,QACvF,OAAE9O,GAAW,EAAQ,OACrB,QAAE+sG,GAAY,EAAQ,OAC5B7lG,EAAOC,QAAU,MACf,WAAA8K,GACEhP,KAAKg8C,KAAO,KACZh8C,KAAKsrJ,KAAO,KACZtrJ,KAAKuB,OAAS,CAChB,CACA,IAAAgC,CAAK++C,GACH,MAAMje,EAAQ,CACZzkB,KAAM0iC,EACNp8C,KAAM,MAEJlG,KAAKuB,OAAS,EAAGvB,KAAKsrJ,KAAKplJ,KAAOm+B,EACjCrkC,KAAKg8C,KAAO3X,EACjBrkC,KAAKsrJ,KAAOjnH,IACVrkC,KAAKuB,MACT,CACA,OAAAkvD,CAAQnO,GACN,MAAMje,EAAQ,CACZzkB,KAAM0iC,EACNp8C,KAAMlG,KAAKg8C,MAEO,IAAhBh8C,KAAKuB,SAAcvB,KAAKsrJ,KAAOjnH,GACnCrkC,KAAKg8C,KAAO3X,IACVrkC,KAAKuB,MACT,CACA,KAAAgJ,GACE,GAAoB,IAAhBvK,KAAKuB,OAAc,OACvB,MAAM+zB,EAAMt1B,KAAKg8C,KAAKp8B,KAItB,OAHoB,IAAhB5f,KAAKuB,OAAcvB,KAAKg8C,KAAOh8C,KAAKsrJ,KAAO,KAC1CtrJ,KAAKg8C,KAAOh8C,KAAKg8C,KAAK91C,OACzBlG,KAAKuB,OACA+zB,CACT,CACA,KAAAjE,GACErxB,KAAKg8C,KAAOh8C,KAAKsrJ,KAAO,KACxBtrJ,KAAKuB,OAAS,CAChB,CACA,IAAA8D,CAAKH,GACH,GAAoB,IAAhBlF,KAAKuB,OAAc,MAAO,GAC9B,IAAIkH,EAAIzI,KAAKg8C,KACT1mB,EAAM,GAAK7sB,EAAEmX,KACjB,KAAwB,QAAhBnX,EAAIA,EAAEvC,OAAgBovB,GAAOpwB,EAAIuD,EAAEmX,KAC3C,OAAO0V,CACT,CACA,MAAA4R,CAAOtkC,GACL,GAAoB,IAAhB5C,KAAKuB,OAAc,OAAOxE,EAAO8C,MAAM,GAC3C,MAAMy1B,EAAMv4B,EAAOooG,YAAYviG,IAAM,GACrC,IAAI6F,EAAIzI,KAAKg8C,KACT36C,EAAI,EACR,KAAOoH,GACL4+K,EAAuB/xJ,EAAK7sB,EAAEmX,KAAMve,GACpCA,GAAKoH,EAAEmX,KAAKre,OACZkH,EAAIA,EAAEvC,KAER,OAAOovB,CACT,CAGA,OAAAgyJ,CAAQ1kL,EAAG2kL,GACT,MAAM3nK,EAAO5f,KAAKg8C,KAAKp8B,KACvB,GAAIhd,EAAIgd,EAAKre,OAAQ,CAEnB,MAAMiD,EAAQob,EAAKpb,MAAM,EAAG5B,GAE5B,OADA5C,KAAKg8C,KAAKp8B,KAAOA,EAAKpb,MAAM5B,GACrB4B,CACT,CACA,OAAI5B,IAAMgd,EAAKre,OAENvB,KAAKuK,QAGPg9K,EAAavnL,KAAKwnL,WAAW5kL,GAAK5C,KAAKynL,WAAW7kL,EAC3D,CACA,KAAAu5C,GACE,OAAOn8C,KAAKg8C,KAAKp8B,IACnB,CACA,EAAEwnK,KACA,IAAK,IAAI3+K,EAAIzI,KAAKg8C,KAAMvzC,EAAGA,EAAIA,EAAEvC,WACzBuC,EAAEmX,IAEZ,CAGA,UAAA4nK,CAAW5kL,GACT,IAAI0yB,EAAM,GACN7sB,EAAIzI,KAAKg8C,KACT7oC,EAAI,EACR,EAAG,CACD,MAAM9O,EAAMoE,EAAEmX,KACd,KAAIhd,EAAIyB,EAAI9C,QAGL,CACDqB,IAAMyB,EAAI9C,QACZ+zB,GAAOjxB,IACL8O,EACE1K,EAAEvC,KAAMlG,KAAKg8C,KAAOvzC,EAAEvC,KACrBlG,KAAKg8C,KAAOh8C,KAAKsrJ,KAAO,OAE7Bh2H,GAAO6xJ,EAAqB9iL,EAAK,EAAGzB,GACpC5C,KAAKg8C,KAAOvzC,EACZA,EAAEmX,KAAOunK,EAAqB9iL,EAAKzB,IAErC,KACF,CAdE0yB,GAAOjxB,EACPzB,GAAKyB,EAAI9C,SAcT4R,CACJ,OAA0B,QAAhB1K,EAAIA,EAAEvC,OAEhB,OADAlG,KAAKuB,QAAU4R,EACRmiB,CACT,CAGA,UAAAmyJ,CAAW7kL,GACT,MAAM0yB,EAAMv4B,EAAOooG,YAAYviG,GACzB8kL,EAAS9kL,EACf,IAAI6F,EAAIzI,KAAKg8C,KACT7oC,EAAI,EACR,EAAG,CACD,MAAM5Q,EAAMkG,EAAEmX,KACd,KAAIhd,EAAIL,EAAIhB,QAGL,CACDqB,IAAML,EAAIhB,QACZ8lL,EAAuB/xJ,EAAK/yB,EAAKmlL,EAAS9kL,KACxCuQ,EACE1K,EAAEvC,KAAMlG,KAAKg8C,KAAOvzC,EAAEvC,KACrBlG,KAAKg8C,KAAOh8C,KAAKsrJ,KAAO,OAE7B+7B,EAAuB/xJ,EAAK,IAAIzpB,EAAWtJ,EAAIT,OAAQS,EAAImjG,WAAY9iG,GAAI8kL,EAAS9kL,GACpF5C,KAAKg8C,KAAOvzC,EACZA,EAAEmX,KAAOrd,EAAIiC,MAAM5B,IAErB,KACF,CAdEykL,EAAuB/xJ,EAAK/yB,EAAKmlL,EAAS9kL,GAC1CA,GAAKL,EAAIhB,SAcT4R,CACJ,OAA0B,QAAhB1K,EAAIA,EAAEvC,OAEhB,OADAlG,KAAKuB,QAAU4R,EACRmiB,CACT,CAGA,CAAC/rB,OAAOg7D,IAAI,+BAA+Bn4B,EAAGtlC,GAC5C,OAAOgjG,EAAQ9pG,KAAM,IAChB8G,EAEHuyE,MAAO,EAEPsuG,eAAe,GAEnB,iCCzJF,MAAM,SAAEC,GAAa,EAAQ,OACvBC,EAAS,EAAQ,QACjB,UAAEC,GAAc,EAAQ,QACxB,aACJrB,EAAY,WACZsB,EAAU,WACVC,EAAU,YACVtB,EAAW,kBACXuB,EAAiB,iBACjBC,EAAgB,iBAChBC,GACE,EAAQ,QACN,WACJ5B,EACAC,OAAO,sBAAE4B,EAAqB,iBAAEC,IAC9B,EAAQ,OACNzB,EAAM,EAAQ,OACpB3iL,EAAOC,QAAU,YAAoBwe,GACnC,GAAuB,IAAnBA,EAAQnhB,OACV,MAAM,IAAI8mL,EAAiB,WAE7B,GAAuB,IAAnB3lK,EAAQnhB,OACV,OAAOsmL,EAAOh0G,KAAKnxD,EAAQ,IAE7B,MAAM4lK,EAAa,IAAI5lK,GAIvB,GAH0B,mBAAfA,EAAQ,KACjBA,EAAQ,GAAKmlK,EAAOh0G,KAAKnxD,EAAQ,KAEQ,mBAAhCA,EAAQA,EAAQnhB,OAAS,GAAmB,CACrD,MAAMshB,EAAMH,EAAQnhB,OAAS,EAC7BmhB,EAAQG,GAAOglK,EAAOh0G,KAAKnxD,EAAQG,GACrC,CACA,IAAK,IAAIjgB,EAAI,EAAGA,EAAI8f,EAAQnhB,SAAUqB,EACpC,GAAK6jL,EAAa/jK,EAAQ9f,KAAQ8jL,EAAYhkK,EAAQ9f,IAAtD,CAIA,GACEA,EAAI8f,EAAQnhB,OAAS,KACnBwmL,EAAWrlK,EAAQ9f,KAAOulL,EAAiBzlK,EAAQ9f,KAAOqlL,EAAkBvlK,EAAQ9f,KAEtF,MAAM,IAAIwlL,EAAsB,WAAWxlL,KAAM0lL,EAAW1lL,GAAI,oBAElE,GAAIA,EAAI,KAAOolL,EAAWtlK,EAAQ9f,KAAOslL,EAAiBxlK,EAAQ9f,KAAOqlL,EAAkBvlK,EAAQ9f,KACjG,MAAM,IAAIwlL,EAAsB,WAAWxlL,KAAM0lL,EAAW1lL,GAAI,mBARlE,CAWF,IAAI2lL,EACAC,EACAC,EACAC,EACAjrF,EAYJ,MAAMzhD,EAAOt5B,EAAQ,GACf4oI,EAAOs8B,EAASllK,GAZtB,SAAoB9gB,GAClB,MAAMw6C,EAAKssI,EACXA,EAAU,KACNtsI,EACFA,EAAGx6C,GACMA,EACT67F,EAAE97E,QAAQ/f,GACAggB,GAAatZ,GACvBm1F,EAAE97E,SAEN,IAGMrZ,KAAc0/K,EAAWhsI,IAASksI,EAAiBlsI,IAASisI,EAAkBjsI,IAC9Ep6B,KAAcmmK,EAAWz8B,IAAS68B,EAAiB78B,IAAS28B,EAAkB38B,IAYpF,GAPA7tD,EAAI,IAAIoqF,EAAO,CAEb9O,qBAAuB/8H,UAAuCA,EAAK+8H,oBACnE4P,qBAAuBr9B,UAAuCA,EAAKq9B,oBACnErgL,WACAsZ,aAEEtZ,EAAU,CACZ,GAAIm+K,EAAazqI,GACfyhD,EAAE66D,OAAS,SAAUh/I,EAAOmB,EAAUrN,GAChC4uC,EAAKr5C,MAAM2W,EAAOmB,GACpBrN,IAEAm7K,EAAUn7K,CAEd,EACAqwF,EAAEmrF,OAAS,SAAUx7K,GACnB4uC,EAAKv5C,MACL+lL,EAAWp7K,CACb,EACA4uC,EAAKjhC,GAAG,SAAS,WACf,GAAIwtK,EAAS,CACX,MAAMnsI,EAAKmsI,EACXA,EAAU,KACVnsI,GACF,CACF,SACK,GAAIsqI,EAAY1qI,GAAO,CAC5B,MACM4b,GADWqwH,EAAkBjsI,GAAQA,EAAK1zC,SAAW0zC,GACnC6sI,YACxBprF,EAAE66D,OAASxrI,eAAgBxT,EAAOmB,EAAUrN,GAC1C,UACQwqD,EAAOpjD,MACbojD,EAAOj1D,MAAM2W,GAAOsyB,OAAM,SAC1Bx+B,GACF,CAAE,MAAOxL,GACPwL,EAASxL,EACX,CACF,EACA67F,EAAEmrF,OAAS97J,eAAgB1f,GACzB,UACQwqD,EAAOpjD,MACbojD,EAAOr8C,QAAQqwB,OAAM,SACrB48I,EAAWp7K,CACb,CAAE,MAAOxL,GACPwL,EAASxL,EACX,CACF,CACF,CACA,MAAMknL,EAASb,EAAkB38B,GAAQA,EAAK1pI,SAAW0pI,EACzDs7B,EAAIkC,GAAQ,KACV,GAAIN,EAAU,CACZ,MAAMpsI,EAAKosI,EACXA,EAAW,KACXpsI,GACF,IAEJ,CACA,GAAIx6B,EACF,GAAI6kK,EAAan7B,GACfA,EAAKvwI,GAAG,YAAY,WAClB,GAAI0tK,EAAY,CACd,MAAMrsI,EAAKqsI,EACXA,EAAa,KACbrsI,GACF,CACF,IACAkvG,EAAKvwI,GAAG,OAAO,WACb0iF,EAAEl6F,KAAK,KACT,IACAk6F,EAAEh+E,MAAQ,WACR,OAAa,CACX,MAAMld,EAAM+oJ,EAAK3rI,OACjB,GAAY,OAARpd,EAEF,YADAkmL,EAAahrF,EAAEh+E,OAGjB,IAAKg+E,EAAEl6F,KAAKhB,GACV,MAEJ,CACF,OACK,GAAImkL,EAAYp7B,GAAO,CAC5B,MACMngJ,GADW88K,EAAkB38B,GAAQA,EAAK1pI,SAAW0pI,GACnC9rI,YACxBi+E,EAAEh+E,MAAQqN,iBACR,OACE,IACE,MAAM,MAAE5sB,EAAK,KAAEmG,SAAe8E,EAAOwU,OACrC,IAAK89E,EAAEl6F,KAAKrD,GACV,OAEF,GAAImG,EAEF,YADAo3F,EAAEl6F,KAAK,KAGX,CAAE,MACA,MACF,CAEJ,CACF,CAkBF,OAhBAk6F,EAAEsrF,SAAW,SAAUnnL,EAAKwL,GACrBxL,GAAmB,OAAZ8mL,IACV9mL,EAAM,IAAI2kL,GAEZkC,EAAa,KACbF,EAAU,KACVC,EAAW,KACK,OAAZE,EACFt7K,EAASxL,IAET8mL,EAAUt7K,EACNq5K,EAAan7B,IACfw8B,EAAUx8B,EAAM1pJ,GAGtB,EACO67F,CACT,gCC7LA,MAAMxlE,EAAU,EAAQ,QAIlB,mBACJ+wJ,EACAxC,OAAO,sBAAEyC,GAAuB,WAChC1C,GACE,EAAQ,QACN,OAAEh9K,GAAW,EAAQ,QACrB,aAAE2/K,EAAY,YAAEC,EAAW,WAAEC,EAAU,gBAAEC,GAAoB,EAAQ,OACrEC,EAAW//K,EAAO,YAClBggL,EAAahgL,EAAO,cAC1B,SAASigL,EAAW5nL,EAAKswG,EAAG7X,GACtBz4F,IAEFA,EAAIjB,MAEAuxG,IAAMA,EAAEu3E,UACVv3E,EAAEu3E,QAAU7nL,GAEVy4F,IAAMA,EAAEovF,UACVpvF,EAAEovF,QAAU7nL,GAGlB,CAoCA,SAASmnL,EAAS7/K,EAAMtH,EAAKw6C,GAC3B,IAAIstI,GAAS,EACb,SAASC,EAAU/nL,GACjB,GAAI8nL,EACF,OAEFA,GAAS,EACT,MAAMrvF,EAAInxF,EAAKsvJ,eACTtmD,EAAIhpG,EAAKqvJ,eACfixB,EAAW5nL,EAAKswG,EAAG7X,GACf6X,IACFA,EAAEz9F,QAAS,GAET4lF,IACFA,EAAE5lF,QAAS,GAEK,mBAAP2nC,GACTA,EAAGx6C,GAEDA,EACFq2B,EAAQkiJ,SAASyP,EAAkB1gL,EAAMtH,GAEzCq2B,EAAQkiJ,SAAS0P,EAAa3gL,EAElC,CACA,IACEA,EAAK6/K,SAASnnL,GAAO,KAAM+nL,EAC7B,CAAE,MAAO/nL,GACP+nL,EAAU/nL,EACZ,CACF,CACA,SAASgoL,EAAiB1gL,EAAMtH,GAC9BkoL,EAAY5gL,EAAMtH,GAClBioL,EAAY3gL,EACd,CACA,SAAS2gL,EAAY3gL,GACnB,MAAMmxF,EAAInxF,EAAKsvJ,eACTtmD,EAAIhpG,EAAKqvJ,eACXrmD,IACFA,EAAE63E,cAAe,GAEf1vF,IACFA,EAAE0vF,cAAe,IAEd73E,SAAiCA,EAAE83E,WAAe3vF,SAAiCA,EAAE2vF,YACxF9gL,EAAKxF,KAAK,QAEd,CACA,SAASomL,EAAY5gL,EAAMtH,GACzB,MAAMy4F,EAAInxF,EAAKsvJ,eACTtmD,EAAIhpG,EAAKqvJ,eACVrmD,SAAiCA,EAAE+3E,cAAkB5vF,SAAiCA,EAAE4vF,eAGzF/3E,IACFA,EAAE+3E,cAAe,GAEf5vF,IACFA,EAAE4vF,cAAe,GAEnB/gL,EAAKxF,KAAK,QAAS9B,GACrB,CA6BA,SAASsoL,EAAe9qK,EAAQxd,EAAKuoL,GAOnC,MAAM9vF,EAAIj7E,EAAOo5I,eACXtmD,EAAI9yF,EAAOm5I,eACjB,GAAKrmD,SAAiCA,EAAEk4E,WAAe/vF,SAAiCA,EAAE+vF,UACxF,OAAOpqL,KAEJq6F,SAAiCA,EAAEgwF,aAAiBn4E,SAAiCA,EAAEm4E,YAC1FjrK,EAAOuC,QAAQ/f,GACRA,IAEPA,EAAIjB,MAEAuxG,IAAMA,EAAEu3E,UACVv3E,EAAEu3E,QAAU7nL,GAEVy4F,IAAMA,EAAEovF,UACVpvF,EAAEovF,QAAU7nL,GAEVuoL,EACFlyJ,EAAQkiJ,SAAS2P,EAAa1qK,EAAQxd,GAEtCkoL,EAAY1qK,EAAQxd,GAG1B,CAoBA,SAAS0oL,EAAYlrK,GACnB,IAAIsqK,GAAS,EACb,SAASa,EAAY3oL,GACnB,GAAI8nL,EAEF,YADAQ,EAAe9qK,EAAQxd,QAAoCA,EAAM,IAAIqnL,GAGvES,GAAS,EACT,MAAMrvF,EAAIj7E,EAAOo5I,eACXtmD,EAAI9yF,EAAOm5I,eACXrzJ,EAAIgtG,GAAK7X,EACXA,IACFA,EAAEmwF,aAAc,GAEdt4E,IACFA,EAAEs4E,aAAc,GAEdtlL,EAAEklL,UACJhrK,EAAO1b,KAAK4lL,EAAU1nL,GACbA,EACTsoL,EAAe9qK,EAAQxd,GAAK,GAE5Bq2B,EAAQkiJ,SAASsQ,EAAiBrrK,EAEtC,CACA,IACEA,EAAO+uG,YAAYvsH,IACjBq2B,EAAQkiJ,SAASoQ,EAAa3oL,EAAG,GAErC,CAAE,MAAOA,GACPq2B,EAAQkiJ,SAASoQ,EAAa3oL,EAChC,CACF,CACA,SAAS6oL,EAAgBrrK,GACvBA,EAAO1b,KAAK6lL,EACd,CACA,SAASmB,EAAUtrK,GACjB,OAAQA,aAA0Cjf,EAAYif,EAAOurK,YAAsC,mBAAjBvrK,EAAO7P,KACnG,CACA,SAASq7K,EAAgBxrK,GACvBA,EAAO1b,KAAK,QACd,CACA,SAASmnL,EAAqBzrK,EAAQxd,GACpCwd,EAAO1b,KAAK,QAAS9B,GACrBq2B,EAAQkiJ,SAASyQ,EAAiBxrK,EACpC,CAiCAnb,EAAOC,QAAU,CACf23B,UAlGF,SAAmBzc,EAAQg9B,GACzB,GAAiC,mBAAtBh9B,EAAO+uG,WAChB,OAEF,MAAM9zB,EAAIj7E,EAAOo5I,eACXtmD,EAAI9yF,EAAOm5I,eACbl+D,IACFA,EAAEmwF,aAAc,GAEdt4E,IACFA,EAAEs4E,aAAc,GAElBprK,EAAOq6C,KAAK8vH,EAAYntI,GACpBh9B,EAAOyzF,cAAc02E,GAAc,GAIvCtxJ,EAAQkiJ,SAASmQ,EAAalrK,EAChC,EAiFE0oK,UAhCF,SAAmB1oK,EAAQxd,GACpBwd,IAAU+pK,EAAY/pK,KAGtBxd,GAAQwnL,EAAWhqK,KACtBxd,EAAM,IAAI2kL,GAIR8C,EAAgBjqK,IAClBA,EAAO0rK,OAAS,KAChB1rK,EAAOuC,QAAQ/f,IACN8oL,EAAUtrK,GACnBA,EAAO7P,QACEm7K,EAAUtrK,EAAO2rK,KAC1B3rK,EAAO2rK,IAAIx7K,QACwB,mBAAnB6P,EAAOuC,QACvBvC,EAAOuC,QAAQ/f,GACkB,mBAAjBwd,EAAO7D,MAEvB6D,EAAO7D,QACE3Z,EACTq2B,EAAQkiJ,SAAS0Q,EAAsBzrK,EAAQxd,GAE/Cq2B,EAAQkiJ,SAASyQ,EAAiBxrK,GAE/BA,EAAOgrK,YACVhrK,EAAO8pK,IAAgB,GAE3B,EAIEvnK,QA7PF,SAAiB/f,EAAKw6C,GACpB,MAAMi+C,EAAIr6F,KAAKw4J,eACTtmD,EAAIlyG,KAAKu4J,eAETrzJ,EAAIgtG,GAAK7X,EACf,OAAK6X,SAAiCA,EAAEk4E,WAAe/vF,SAAiCA,EAAE+vF,WACtE,mBAAPhuI,GACTA,IAEKp8C,OAKTwpL,EAAW5nL,EAAKswG,EAAG7X,GACf6X,IACFA,EAAEk4E,WAAY,GAEZ/vF,IACFA,EAAE+vF,WAAY,GAIXllL,EAAEslL,YAKLzB,EAAS/oL,KAAM4B,EAAKw6C,GAJpBp8C,KAAKy5D,KAAK6vH,GAAU,SAAUn2E,GAC5B41E,EAAS/oL,KAAMgpL,EAAmB71E,EAAIvxG,GAAMw6C,EAC9C,IAIKp8C,KACT,EA+NEgrL,UAhKF,WACE,MAAM3wF,EAAIr6F,KAAKw4J,eACTtmD,EAAIlyG,KAAKu4J,eACXl+D,IACFA,EAAEmwF,aAAc,EAChBnwF,EAAE5lF,QAAS,EACX4lF,EAAE0vF,cAAe,EACjB1vF,EAAE+vF,WAAY,EACd/vF,EAAEovF,QAAU,KACZpvF,EAAE4vF,cAAe,EACjB5vF,EAAE4wF,SAAU,EACZ5wF,EAAEn4E,OAAuB,IAAfm4E,EAAEz4E,SACZy4E,EAAE6wF,YAA4B,IAAf7wF,EAAEz4E,UAEfswF,IACFA,EAAEs4E,aAAc,EAChBt4E,EAAEk4E,WAAY,EACdl4E,EAAEz9F,QAAS,EACXy9F,EAAE63E,cAAe,EACjB73E,EAAEu3E,QAAU,KACZv3E,EAAE+3E,cAAe,EACjB/3E,EAAEi5E,aAAc,EAChBj5E,EAAEk5E,aAAc,EAChBl5E,EAAEhwF,OAAuB,IAAfgwF,EAAE5pG,SACZ4pG,EAAEm5E,QAAwB,IAAfn5E,EAAE5pG,SACb4pG,EAAEo5E,UAA0B,IAAfp5E,EAAE5pG,SAEnB,EAsIE4hL,gDCpQF,MAAM,uBACJqB,EAAsB,+BACtBC,EAA8B,WAC9BC,EAAU,qBACVC,GACE,EAAQ,OACZznL,EAAOC,QAAU2jL,EACjB,MAAM1oK,EAAW,EAAQ,OACnBwsK,EAAW,EAAQ,OACzBD,EAAqB7D,EAAOnmL,UAAWyd,EAASzd,WAChDgqL,EAAqB7D,EAAQ1oK,GAC7B,CACE,MAAMhe,EAAOsqL,EAAWE,EAASjqL,WAEjC,IAAK,IAAIL,EAAI,EAAGA,EAAIF,EAAKI,OAAQF,IAAK,CACpC,MAAMqM,EAASvM,EAAKE,GACfwmL,EAAOnmL,UAAUgM,KAASm6K,EAAOnmL,UAAUgM,GAAUi+K,EAASjqL,UAAUgM,GAC/E,CACF,CACA,SAASm6K,EAAO/gL,GACd,KAAM9G,gBAAgB6nL,GAAS,OAAO,IAAIA,EAAO/gL,GACjDqY,EAASxW,KAAK3I,KAAM8G,GACpB6kL,EAAShjL,KAAK3I,KAAM8G,GAChBA,GACF9G,KAAK4rL,eAA0C,IAA1B9kL,EAAQ8kL,eACJ,IAArB9kL,EAAQ8a,WACV5hB,KAAKw4J,eAAe52I,UAAW,EAC/B5hB,KAAKw4J,eAAet2I,OAAQ,EAC5BliB,KAAKw4J,eAAe0yB,YAAa,IAEV,IAArBpkL,EAAQwB,WACVtI,KAAKu4J,eAAejwJ,UAAW,EAC/BtI,KAAKu4J,eAAe8yB,QAAS,EAC7BrrL,KAAKu4J,eAAer2I,OAAQ,EAC5BliB,KAAKu4J,eAAe+yB,UAAW,IAGjCtrL,KAAK4rL,eAAgB,CAEzB,CAwDA,IAAIC,EAaAC,EAVJ,SAASC,IAEP,YAD2B5rL,IAAvB0rL,IAAkCA,EAAqB,CAAC,GACrDA,CACT,CA7DAN,EAAuB1D,EAAOnmL,UAAW,CACvC4G,SAAU,CACRyJ,UAAW,QACRy5K,EAA+BG,EAASjqL,UAAW,aAExDsqL,sBAAuB,CACrBj6K,UAAW,QACRy5K,EAA+BG,EAASjqL,UAAW,0BAExDq3K,mBAAoB,CAClBhnK,UAAW,QACRy5K,EAA+BG,EAASjqL,UAAW,uBAExDuqL,eAAgB,CACdl6K,UAAW,QACRy5K,EAA+BG,EAASjqL,UAAW,mBAExDwqL,eAAgB,CACdn6K,UAAW,QACRy5K,EAA+BG,EAASjqL,UAAW,mBAExDyqL,iBAAkB,CAChBp6K,UAAW,QACRy5K,EAA+BG,EAASjqL,UAAW,qBAExD0qL,eAAgB,CACdr6K,UAAW,QACRy5K,EAA+BG,EAASjqL,UAAW,mBAExD2qL,cAAe,CACbt6K,UAAW,QACRy5K,EAA+BG,EAASjqL,UAAW,kBAExD4qL,kBAAmB,CACjBv6K,UAAW,QACRy5K,EAA+BG,EAASjqL,UAAW,sBAExD0oL,UAAW,CACTr4K,UAAW,KACX,GAAAzK,GACE,YAA4BnH,IAAxBH,KAAKw4J,qBAAwDr4J,IAAxBH,KAAKu4J,gBAGvCv4J,KAAKw4J,eAAe4xB,WAAapqL,KAAKu4J,eAAe6xB,SAC9D,EACA,GAAAt+K,CAAI5L,GAGEF,KAAKw4J,gBAAkBx4J,KAAKu4J,iBAC9Bv4J,KAAKw4J,eAAe4xB,UAAYlqL,EAChCF,KAAKu4J,eAAe6xB,UAAYlqL,EAEpC,KAUJ2nL,EAAO0E,QAAU,SAAUC,EAAM1lL,GAC/B,OAAOilL,IAAiBU,wCAAwCD,EAAM1lL,EACxE,EACA+gL,EAAO6E,MAAQ,SAAUj0B,GACvB,OAAOszB,IAAiBY,kCAAkCl0B,EAC5D,EAEAovB,EAAOh0G,KAAO,SAAU7oE,GAItB,OAHK8gL,IACHA,EAAY,EAAQ,QAEfA,EAAU9gL,EAAM,OACzB,mBC5IA,MAAMitB,EAAU,EAAQ,OAKlB20J,EAAe,EAAQ,OACvB,WACJ7E,EAAU,WACVC,EAAU,WACVv3B,EAAU,aACVg2B,EAAY,qBACZoG,EAAoB,qBACpBC,EAAoB,mBACpBC,EAAkB,iBAClB5E,EAAgB,iBAChBD,GACE,EAAQ,OACNtB,EAAM,EAAQ,QACd,WACJL,EACAC,OAAO,qBAAEh3E,EAAoB,yBAAEw9E,IAC7B,EAAQ,QACN,UAAElF,GAAc,EAAQ,OACxBD,EAAS,EAAQ,OACjB1oK,EAAW,EAAQ,OACnBwsK,EAAW,EAAQ,QACnB,sBAAEsB,GAA0B,EAAQ,OACpCp5G,EAAO,EAAQ,OACfrqE,EAAO0uB,WAAW1uB,MAAQojL,EAAapjL,KACvC0jL,OACY,IAAT1jL,EACH,SAAgBg5C,GACd,OAAOA,aAAah5C,CACtB,EACA,SAAgBg5C,GACd,OAAO,CACT,EACAxiC,EAAkBkY,WAAWlY,iBAAmB,0BAChD,sBAAEmtK,GAA0B,EAAQ,OAG1C,MAAMC,UAAkBvF,EACtB,WAAA74K,CAAYlI,GACVuY,MAAMvY,IAI6E,KAA9EA,aAA4C3G,EAAY2G,EAAQ8a,YACnE5hB,KAAKw4J,eAAe52I,UAAW,EAC/B5hB,KAAKw4J,eAAet2I,OAAQ,EAC5BliB,KAAKw4J,eAAe0yB,YAAa,IAEgD,KAA9EpkL,aAA4C3G,EAAY2G,EAAQwB,YACnEtI,KAAKu4J,eAAejwJ,UAAW,EAC/BtI,KAAKu4J,eAAe8yB,QAAS,EAC7BrrL,KAAKu4J,eAAer2I,OAAQ,EAC5BliB,KAAKu4J,eAAe+yB,UAAW,EAEnC,EA8MF,SAAS+B,EAAWb,GAClB,MAAMnyF,EAAImyF,EAAK5qK,UAA0C,mBAAvB4qK,EAAK5qK,SAASjC,KAAsBR,EAASk7B,KAAKmyI,EAAK5qK,UAAY4qK,EAAK5qK,SACpGswF,EAAIs6E,EAAKlkL,SACf,IAEIigL,EACAC,EACAC,EACAC,EACAjrF,EANA77E,IAAammK,EAAW1tF,GACxB/xF,IAAa0/K,EAAW91E,GAM5B,SAASo7E,EAAW1rL,GAClB,MAAMw6C,EAAKssI,EACXA,EAAU,KACNtsI,EACFA,EAAGx6C,GACMA,GACT67F,EAAE97E,QAAQ/f,EAEd,CA4FA,OAvFA67F,EAAI,IAAI2vF,EAAU,CAEhBzE,qBAAuBtuF,UAAiCA,EAAEsuF,oBAC1D5P,qBAAuB7mE,UAAiCA,EAAE6mE,oBAC1Dn3J,WACAtZ,aAEEA,IACFs+K,EAAI10E,GAAItwG,IACN0G,GAAW,EACP1G,GACFkmL,EAAUztF,EAAGz4F,GAEf0rL,EAAW1rL,EAAG,IAEhB67F,EAAE66D,OAAS,SAAUh/I,EAAOmB,EAAUrN,GAChC8kG,EAAEvvG,MAAM2W,EAAOmB,GACjBrN,IAEAm7K,EAAUn7K,CAEd,EACAqwF,EAAEmrF,OAAS,SAAUx7K,GACnB8kG,EAAEzvG,MACF+lL,EAAWp7K,CACb,EACA8kG,EAAEn3F,GAAG,SAAS,WACZ,GAAIwtK,EAAS,CACX,MAAMnsI,EAAKmsI,EACXA,EAAU,KACVnsI,GACF,CACF,IACA81D,EAAEn3F,GAAG,UAAU,WACb,GAAIytK,EAAU,CACZ,MAAMpsI,EAAKosI,EACXA,EAAW,KACXpsI,GACF,CACF,KAEEx6B,IACFglK,EAAIvsF,GAAIz4F,IACNggB,GAAW,EACPhgB,GACFkmL,EAAUztF,EAAGz4F,GAEf0rL,EAAW1rL,EAAG,IAEhBy4F,EAAEt/E,GAAG,YAAY,WACf,GAAI0tK,EAAY,CACd,MAAMrsI,EAAKqsI,EACXA,EAAa,KACbrsI,GACF,CACF,IACAi+C,EAAEt/E,GAAG,OAAO,WACV0iF,EAAEl6F,KAAK,KACT,IACAk6F,EAAEh+E,MAAQ,WACR,OAAa,CACX,MAAMld,EAAM83F,EAAE16E,OACd,GAAY,OAARpd,EAEF,YADAkmL,EAAahrF,EAAEh+E,OAGjB,IAAKg+E,EAAEl6F,KAAKhB,GACV,MAEJ,CACF,GAEFk7F,EAAEsrF,SAAW,SAAUnnL,EAAKwL,GACrBxL,GAAmB,OAAZ8mL,IACV9mL,EAAM,IAAI2kL,GAEZkC,EAAa,KACbF,EAAU,KACVC,EAAW,KACK,OAAZE,EACFt7K,EAASxL,IAET8mL,EAAUt7K,EACV06K,EAAU51E,EAAGtwG,GACbkmL,EAAUztF,EAAGz4F,GAEjB,EACO67F,CACT,CA3TAx5F,EAAOC,QAAU,SAAS4nL,EAAU9gL,EAAMhB,GACxC,GAAI+iL,EAAmB/hL,GACrB,OAAOA,EAET,GAAI6hL,EAAqB7hL,GACvB,OAAOqiL,EAAW,CAChBzrK,SAAU5W,IAGd,GAAI8hL,EAAqB9hL,GACvB,OAAOqiL,EAAW,CAChB/kL,SAAU0C,IAGd,GAAIy7K,EAAaz7K,GACf,OAAOqiL,EAAW,CAChB/kL,UAAU,EACVsZ,UAAU,IAGd,GAAIumK,EAAiBn9K,GACnB,OAAOqiL,EAAW,CAChBzrK,SAAUzC,EAASotK,QAAQvhL,KAG/B,GAAIk9K,EAAiBl9K,GACnB,OAAOqiL,EAAW,CAChB/kL,SAAUqjL,EAASY,QAAQvhL,KAG/B,GAAoB,mBAATA,EAAqB,CAC9B,MAAM,MAAE9K,EAAK,MAAEyC,EAAK,MAAE8Y,EAAK,QAAEkG,GA4HjC,SAAsBs4C,GACpB,IAAI,QAAExuD,EAAO,QAAE3F,GAAYmnL,IAC3B,MAAMM,EAAK,IAAIvtK,EACTnS,EAAS0/K,EAAG1/K,OAqBlB,MAAO,CACL3N,MArBY+5D,EACZ,kBACE,OAAa,CACX,MAAMuzH,EAAW/hL,EACjBA,EAAU,KACV,MAAM,MAAE6N,EAAK,KAAEjT,EAAI,GAAE+1C,SAAaoxI,EAElC,GADAv1J,EAAQkiJ,SAAS/9H,GACb/1C,EAAM,OACV,GAAIwH,EAAOsB,QACT,MAAM,IAAIo3K,OAAWpmL,EAAW,CAC9B8mD,MAAOp5C,EAAO0tK,WAEd9vK,UAAS3F,WAAYmnL,WACnB3zK,CACR,CACD,CAdD,GAeA,CACEzL,WAKF,KAAAlL,CAAM2W,EAAOmB,EAAU2hC,GACrB,MAAMqxI,EAAW3nL,EACjBA,EAAU,KACV2nL,EAAS,CACPn0K,QACAjT,MAAM,EACN+1C,MAEJ,EACA,KAAA3gC,CAAM2gC,GACJ,MAAMqxI,EAAW3nL,EACjBA,EAAU,KACV2nL,EAAS,CACPpnL,MAAM,EACN+1C,MAEJ,EACA,OAAAz6B,CAAQ/f,EAAKw6C,GACXmxI,EAAGh+K,QACH6sC,EAAGx6C,EACL,EAEJ,CA5K6C8rL,CAAa1iL,GACtD,GAAIylJ,EAAWvwJ,GACb,OAAO2zE,EAAKu5G,EAAWltL,EAAO,CAE5B4hK,YAAY,EACZn/J,QACA8Y,QACAkG,YAGJ,MAAMrb,EAAOpG,aAAwCC,EAAYD,EAAMoG,KACvE,GAAoB,mBAATA,EAAqB,CAC9B,IAAIm3F,EACJ,MAAMhyF,EAAU0hL,EACd7mL,EACApG,GACCwiD,IACC,GAAW,MAAPA,EACF,MAAM,IAAIsqI,EAAyB,QAAS,OAAQtqI,EACtD,IAED9gD,IACCkmL,EAAUrqF,EAAG77F,EAAG,IAGpB,OAAQ67F,EAAI,IAAI2vF,EAAU,CAExBtrB,YAAY,EACZlgJ,UAAU,EACVjf,QACA,KAAA8Y,CAAM2gC,GACJ3gC,GAAMqR,UACJ,UACQrhB,EACNwsB,EAAQkiJ,SAAS/9H,EAAI,KACvB,CAAE,MAAOx6C,GACPq2B,EAAQkiJ,SAAS/9H,EAAIx6C,EACvB,IAEJ,EACA+f,WAEJ,CACA,MAAM,IAAIqrK,EAAyB,2CAA4ChjL,EAAM9J,EACvF,CACA,GAAIgtL,EAAOliL,GACT,OAAO8gL,EAAU9gL,EAAK2B,eAExB,GAAI8jJ,EAAWzlJ,GACb,OAAO6oE,EAAKu5G,EAAWpiL,EAAM,CAE3B82J,YAAY,EACZx5J,UAAU,IAGd,GACE6/K,EAAiBn9K,aAAsC7K,EAAY6K,EAAK4W,WACxEsmK,EAAiBl9K,aAAsC7K,EAAY6K,EAAK1C,UAExE,OAAO8kL,EAAUb,QAAQvhL,GAE3B,GAC+E,iBAArEA,aAAsC7K,EAAY6K,EAAK1C,WACc,iBAArE0C,aAAsC7K,EAAY6K,EAAK4W,UAkB/D,OAAOyrK,EAAW,CAChBzrK,SAhBA5W,SAAuCA,EAAK4W,SACxCirK,EAAqB7hL,aAAsC7K,EAAY6K,EAAK4W,UAC1E5W,aACE7K,EACA6K,EAAK4W,SACPkqK,EAAU9gL,EAAK4W,eACjBzhB,EAWJmI,SATA0C,SAAuCA,EAAK1C,SACxCwkL,EAAqB9hL,aAAsC7K,EAAY6K,EAAK1C,UAC1E0C,aACE7K,EACA6K,EAAK1C,SACPwjL,EAAU9gL,EAAK1C,eACjBnI,IAMR,MAAMmG,EAAO0E,aAAsC7K,EAAY6K,EAAK1E,KACpE,GAAoB,mBAATA,EAAqB,CAC9B,IAAIm3F,EAcJ,OAbA0vF,EACE7mL,EACA0E,GACC03C,IACY,MAAPA,GACF+6C,EAAEl6F,KAAKm/C,GAET+6C,EAAEl6F,KAAK,KAAI,IAEZ3B,IACCkmL,EAAUrqF,EAAG77F,EAAG,IAGZ67F,EAAI,IAAI2vF,EAAU,CACxBtrB,YAAY,EACZx5J,UAAU,EACV,IAAAqX,GAAQ,GAEZ,CACA,MAAM,IAAI6vF,EACRxlG,EACA,CACE,OACA,iBACA,iBACA,SACA,WACA,gBACA,WACA,8BACA,WAEFgB,EAEJ,mBCtNA,MAAMitB,EAAU,EAAQ,QAOlB,WAAEsuJ,EAAU,MAAEC,GAAU,EAAQ,QAChC,qBAAEh3E,EAAoB,2BAAEm+E,GAA+BnH,GACvD,aAAEoH,EAAY,KAAEn0H,GAAS,EAAQ,QACjC,oBAAEstH,EAAmB,iBAAE8G,EAAgB,eAAEC,EAAc,gBAAEC,GAAoB,EAAQ,QACrF,QAAEloL,EAAO,qBAAEmoL,EAAoB,cAAE1H,GAAkB,EAAQ,QAC3D,SACJ2H,EAAQ,WACRlG,EAAU,qBACV8E,EAAoB,iBACpB1E,EAAgB,mBAChB+F,EAAkB,kBAClBC,EAAiB,WACjBnG,EAAU,qBACV8E,EAAoB,iBACpB5E,EAAgB,mBAChBkG,EAAkB,kBAClBC,EAAiB,aACjB5H,EACA6H,cAAeC,EAAc,iBAC7BC,GACE,EAAQ,OACZ,IAAI3H,EAIJ,MAAM4H,EAAM,OACZ,SAAS7H,EAAIxnK,EAAQtY,EAASsG,GAC5B,IAAIshL,EAAmBC,EAYvB,GAXyB,IAArBhsK,UAAUphB,QACZ6L,EAAWtG,EACXA,EAAU8mL,GACU,MAAX9mL,EACTA,EAAU8mL,EAEVE,EAAehnL,EAAS,WAE1B+mL,EAAiBzgL,EAAU,YAC3B25K,EAAoBjgL,EAAQ+G,OAAQ,kBACpCT,EAAWqsD,EAAKrsD,GACZ+6K,EAAiB/oK,IAAW8oK,EAAiB9oK,GAC/C,OAiLJ,SAAgBA,EAAQtY,EAASsG,GAC/B,IAAIwhL,GAAY,EACZr/K,EAAQk/K,EACZ,GAAI3nL,EAAQ+G,OAUV,GATA0B,EAAQ,KACNq/K,GAAY,EACZxhL,EAASzE,KACPyW,EACA,IAAImnK,OAAWpmL,EAAW,CACxB8mD,MAAOngD,EAAQ+G,OAAO0tK,SAE1B,EAEEz0K,EAAQ+G,OAAOsB,QACjB8oB,EAAQkiJ,SAAS5qK,OACZ,CACLs3K,EAAmBA,GAAoB,0BACvC,MAAMK,EAAaL,EAAiB//K,EAAQ+G,OAAQ0B,GAC9Cs/K,EAAmBzhL,EACzBA,EAAWqsD,GAAK,IAAIh1D,KAClByiL,EAAWZ,KACXuI,EAAiBtoL,MAAM6Y,EAAQ3a,EAAI,GAEvC,CAEF,MAAMqqL,EAAa,IAAIrqL,KAChBmqL,GACH32J,EAAQkiJ,UAAS,IAAM/sK,EAAS7G,MAAM6Y,EAAQ3a,IAChD,EAGF,OADAupL,EAAqB5uK,EAAOovK,GAAkB/iL,QAASqjL,EAAYA,GAC5DL,CACT,CAjNWM,CAAO3vK,EAAQtY,EAASsG,GAEjC,IAAKq5K,EAAarnK,GAChB,MAAM,IAAIowF,EAAqB,SAAU,CAAC,iBAAkB,iBAAkB,UAAWpwF,GAE3F,MAAMwC,EACuC,QAA1C8sK,EAAoB5nL,EAAQ8a,gBAA4CzhB,IAAtBuuL,EAC/CA,EACA7B,EAAqBztK,GACrB9W,EACuC,QAA1CqmL,EAAoB7nL,EAAQwB,gBAA4CnI,IAAtBwuL,EAC/CA,EACA7B,EAAqB1tK,GACrB4vK,EAAS5vK,EAAOm5I,eAChB02B,EAAS7vK,EAAOo5I,eAChB02B,EAAiB,KAChB9vK,EAAO9W,UACVkgL,GACF,EAMF,IAAI8F,EACFC,EAAenvK,IAAWytK,EAAqBztK,KAAYwC,GAAYkrK,EAAqB1tK,KAAY9W,EACtG6jL,EAAmBiC,EAAmBhvK,GAAQ,GAClD,MAAMopK,EAAW,KACf2D,GAAmB,EAIf/sK,EAAOgrK,YACTkE,GAAgB,KAEdA,GAAmBlvK,EAAOwC,WAAYA,KAGrCA,IAAYutK,GACf/hL,EAASzE,KAAKyW,GAChB,EAEF,IAAI+vK,EAAmBjB,EAAmB9uK,GAAQ,GAClD,MAAMgwK,EAAQ,KACZD,GAAmB,EAIf/vK,EAAOgrK,YACTkE,GAAgB,KAEdA,GAAmBlvK,EAAO9W,WAAYA,KAGrCA,IAAY6jL,GACf/+K,EAASzE,KAAKyW,GAChB,EAEI/T,EAAWzJ,IACfwL,EAASzE,KAAKyW,EAAQxd,EAAG,EAE3B,IAAI6S,EAASw5K,EAAS7uK,GACtB,MAAMspK,EAAU,KACdj0K,GAAS,EACT,MAAMg1K,EAAU4E,EAAkBjvK,IAAW+uK,EAAkB/uK,GAC/D,OAAIqqK,GAA8B,kBAAZA,EACbr8K,EAASzE,KAAKyW,EAAQqqK,GAE3B7nK,IAAautK,GAAoBtC,EAAqBztK,GAAQ,KAC3D8uK,EAAmB9uK,GAAQ,GAAehS,EAASzE,KAAKyW,EAAQ,IAAIuuK,IAEvErlL,GAAa6jL,GACViC,EAAmBhvK,GAAQ,QAElChS,EAASzE,KAAKyW,GAFmChS,EAASzE,KAAKyW,EAAQ,IAAIuuK,EAEvD,EAEhB0B,EAAW,KACf56K,GAAS,EACT,MAAMg1K,EAAU4E,EAAkBjvK,IAAW+uK,EAAkB/uK,GAC/D,GAAIqqK,GAA8B,kBAAZA,EACpB,OAAOr8K,EAASzE,KAAKyW,EAAQqqK,GAE/Br8K,EAASzE,KAAKyW,EAAM,EAEhBkwK,EAAY,KAChBlwK,EAAO2rK,IAAIhwK,GAAG,SAAUytK,EAAQ,GAvGpC,SAAmBppK,GACjB,OAAOA,EAAOurK,WAAqC,mBAAjBvrK,EAAO7P,KAC3C,CAuGMm7K,CAAUtrK,GAUH9W,IAAa0mL,IAEtB5vK,EAAOrE,GAAG,MAAOm0K,GACjB9vK,EAAOrE,GAAG,QAASm0K,KAZnB9vK,EAAOrE,GAAG,WAAYytK,GACjB8F,GACHlvK,EAAOrE,GAAG,QAAS2tK,GAEjBtpK,EAAO2rK,IACTuE,IAEAlwK,EAAOrE,GAAG,UAAWu0K,IASpBhB,GAA2C,kBAAnBlvK,EAAOjQ,SAClCiQ,EAAOrE,GAAG,UAAW2tK,GAEvBtpK,EAAOrE,GAAG,MAAOq0K,GACjBhwK,EAAOrE,GAAG,SAAUytK,IACE,IAAlB1hL,EAAQ3D,OACVic,EAAOrE,GAAG,QAAS1P,GAErB+T,EAAOrE,GAAG,QAAS2tK,GACfj0K,EACFwjB,EAAQkiJ,SAASuO,GAEhBsG,SAA2CA,EAAO/E,cAClDgF,SAA2CA,EAAOhF,aAE9CqE,GACHr2J,EAAQkiJ,SAASkV,IAGlBztK,GACC0sK,IAAiBvG,EAAW3oK,KAC7B+sK,IAA2C,IAAvBnE,EAAW5oK,MAI/B9W,GACCgmL,IAAiBtG,EAAW5oK,KAC7B+vK,IAA2C,IAAvBpH,EAAW3oK,IAGvB6vK,GAAU7vK,EAAO2rK,KAAO3rK,EAAOjQ,SACxC8oB,EAAQkiJ,SAASkV,GARjBp3J,EAAQkiJ,SAASkV,GAUnB,MAAME,EAAU,KACdniL,EAAWqhL,EACXrvK,EAAOs/C,eAAe,UAAWgqH,GACjCtpK,EAAOs/C,eAAe,WAAY8pH,GAClCppK,EAAOs/C,eAAe,QAASgqH,GAC/BtpK,EAAOs/C,eAAe,UAAW4wH,GAC7BlwK,EAAO2rK,KAAK3rK,EAAO2rK,IAAIrsH,eAAe,SAAU8pH,GACpDppK,EAAOs/C,eAAe,MAAOwwH,GAC7B9vK,EAAOs/C,eAAe,QAASwwH,GAC/B9vK,EAAOs/C,eAAe,SAAU8pH,GAChCppK,EAAOs/C,eAAe,MAAO0wH,GAC7BhwK,EAAOs/C,eAAe,QAASrzD,GAC/B+T,EAAOs/C,eAAe,QAASgqH,EAAO,EAExC,GAAI5hL,EAAQ+G,SAAW4G,EAAQ,CAC7B,MAAMlF,EAAQ,KAEZ,MAAMigL,EAAcpiL,EACpBmiL,IACAC,EAAY7mL,KACVyW,EACA,IAAImnK,OAAWpmL,EAAW,CACxB8mD,MAAOngD,EAAQ+G,OAAO0tK,SAE1B,EAEF,GAAIz0K,EAAQ+G,OAAOsB,QACjB8oB,EAAQkiJ,SAAS5qK,OACZ,CACLs3K,EAAmBA,GAAoB,0BACvC,MAAMK,EAAaL,EAAiB//K,EAAQ+G,OAAQ0B,GAC9Cs/K,EAAmBzhL,EACzBA,EAAWqsD,GAAK,IAAIh1D,KAClByiL,EAAWZ,KACXuI,EAAiBtoL,MAAM6Y,EAAQ3a,EAAI,GAEvC,CACF,CACA,OAAO8qL,CACT,CAyDAtrL,EAAOC,QAAU0iL,EACjB3iL,EAAOC,QAAQonL,SAxBf,SAAkBlsK,EAAQqwK,GACxB,IAAIC,EACJ,IAAIC,GAAc,EAQlB,OAPa,OAATF,IACFA,EAAO7B,GAEc,QAAlB8B,EAAQD,SAA4BtvL,IAAVuvL,GAAuBA,EAAMH,UAC1DxB,EAAgB0B,EAAKF,QAAS,WAC9BI,EAAcF,EAAKF,SAEd,IAAI1pL,GAAQ,CAACC,EAASC,KAC3B,MAAMwpL,EAAU3I,EAAIxnK,EAAQqwK,GAAO7tL,IAC7B+tL,GACFJ,IAEE3tL,EACFmE,EAAOnE,GAEPkE,GACF,GACD,GAEL,gCCrRA,MAAMmyB,EAAU,EAAQ,QAIlB,qBAAE+1J,EAAoB,oBAAE4B,EAAmB,eAAExI,GAAmB,EAAQ,QACxE,OAAErqL,GAAW,EAAQ,OACrB,qBAAEyyG,EAAoB,uBAAEqgF,GAA2B,eAuFzD5rL,EAAOC,QAtFP,SAAcib,EAAUk8C,EAAUo0H,GAChC,IAAInlL,EAWAwlL,EAVJ,GAAwB,iBAAbz0H,GAAyBA,aAAoBt+D,EACtD,OAAO,IAAIoiB,EAAS,CAClB2iJ,YAAY,KACT2tB,EACH,IAAA9vK,GACE3f,KAAKuD,KAAK83D,GACVr7D,KAAKuD,KAAK,KACZ,IAIJ,GAAI83D,GAAYA,EAASu0H,GACvBE,GAAU,EACVxlL,EAAW+wD,EAASu0H,SACf,KAAIv0H,IAAYA,EAAS+rH,GAI9B,MAAM,IAAI53E,EAAqB,WAAY,CAAC,YAAan0C,GAHzDy0H,GAAU,EACVxlL,EAAW+wD,EAAS+rH,IAGtB,CACA,MAAMxlK,EAAW,IAAIzC,EAAS,CAC5B2iJ,YAAY,EACZiuB,cAAe,KAEZN,IAKL,IAAIxE,GAAU,EAqDd,OApDArpK,EAASnC,MAAQ,WACVwrK,IACHA,GAAU,EA2Bdn+J,iBACE,OAAS,CACP,IACE,MAAM,MAAE5sB,EAAK,KAAEmG,GAASypL,QAAgBxlL,EAASpE,OAASoE,EAASpE,OACnE,GAAIG,EACFub,EAASre,KAAK,UACT,CACL,MAAMwB,EAAM7E,GAA+B,mBAAfA,EAAMoG,WAA4BpG,EAAQA,EACtE,GAAY,OAAR6E,EAEF,MADAkmL,GAAU,EACJ,IAAI4E,EACL,GAAIjuK,EAASre,KAAKwB,GACvB,SAEAkmL,GAAU,CAEd,CACF,CAAE,MAAOrpL,GACPggB,EAASD,QAAQ/f,EACnB,CACA,KACF,CACF,CAhDIsE,GAEJ,EACA0b,EAASmnK,SAAW,SAAU5lL,EAAOi5C,GACnC4xI,EAOFlhK,eAAqB3pB,GACnB,MAAM6sL,EAAW7sL,QACX8sL,EAAqC,mBAAnB3lL,EAAS4lL,MACjC,GAAIF,GAAYC,EAAU,CACxB,MAAM,MAAE/vL,EAAK,KAAEmG,SAAeiE,EAAS4lL,MAAM/sL,GAE7C,SADMjD,EACFmG,EACF,MAEJ,CACA,GAA+B,mBAApBiE,EAAS6lL,OAAuB,CACzC,MAAM,MAAEjwL,SAAgBoK,EAAS6lL,eAC3BjwL,CACR,CACF,CApBIqb,CAAMpY,IACN,IAAM80B,EAAQkiJ,SAAS/9H,EAAIj5C,KAE1BgD,GAAM8xB,EAAQkiJ,SAAS/9H,EAAIj2C,GAAKhD,IAErC,EAuCOye,CACT,gCC9FA,MAAM,aAAEwuK,EAAY,qBAAE1E,GAAyB,EAAQ,QAC/C36E,aAAcs/E,GAAO,EAAQ,OACrC,SAASC,EAAOb,GACdY,EAAG1nL,KAAK3I,KAAMyvL,EAChB,CAkEA,SAASn8E,EAAgBtC,EAAS5wF,EAAO65C,GAGvC,GAAuC,mBAA5B+2C,EAAQsC,gBAAgC,OAAOtC,EAAQsC,gBAAgBlzF,EAAO65C,GAMpF+2C,EAAQK,SAAYL,EAAQK,QAAQjxF,GAChCgwK,EAAap/E,EAAQK,QAAQjxF,IAAS4wF,EAAQK,QAAQjxF,GAAOqwC,QAAQwJ,GACzE+2C,EAAQK,QAAQjxF,GAAS,CAAC65C,EAAI+2C,EAAQK,QAAQjxF,IAFF4wF,EAAQj2F,GAAGqF,EAAO65C,EAGrE,CA7EAyxH,EAAqB4E,EAAO5uL,UAAW2uL,EAAG3uL,WAC1CgqL,EAAqB4E,EAAQD,GAC7BC,EAAO5uL,UAAUs2D,KAAO,SAAUu4H,EAAMzpL,GACtC,MAAM0oB,EAASxvB,KACf,SAASwwL,EAAOl3K,GACVi3K,EAAKjoL,WAAkC,IAAtBioL,EAAK5tL,MAAM2W,IAAoBkW,EAAOihK,OACzDjhK,EAAOihK,OAEX,CAEA,SAASlI,IACH/4J,EAAO5N,UAAY4N,EAAOkhK,QAC5BlhK,EAAOkhK,QAEX,CALAlhK,EAAOzU,GAAG,OAAQy1K,GAMlBD,EAAKx1K,GAAG,QAASwtK,GAIZgI,EAAKI,UAAc7pL,IAA2B,IAAhBA,EAAQrE,MACzC+sB,EAAOzU,GAAG,MAAOq0K,GACjB5/J,EAAOzU,GAAG,QAAS2tK,IAErB,IAAIkI,GAAW,EACf,SAASxB,IACHwB,IACJA,GAAW,EACXL,EAAK9tL,MACP,CACA,SAASimL,IACHkI,IACJA,GAAW,EACiB,mBAAjBL,EAAK5uK,SAAwB4uK,EAAK5uK,UAC/C,CAGA,SAAStW,EAAQ8nG,GACfo8E,IACwC,IAApCc,EAAGx9E,cAAc7yG,KAAM,UACzBA,KAAK0D,KAAK,QAASyvG,EAEvB,CAKA,SAASo8E,IACP//J,EAAOkvC,eAAe,OAAQ8xH,GAC9BD,EAAK7xH,eAAe,QAAS6pH,GAC7B/4J,EAAOkvC,eAAe,MAAO0wH,GAC7B5/J,EAAOkvC,eAAe,QAASgqH,GAC/Bl5J,EAAOkvC,eAAe,QAASrzD,GAC/BklL,EAAK7xH,eAAe,QAASrzD,GAC7BmkB,EAAOkvC,eAAe,MAAO6wH,GAC7B//J,EAAOkvC,eAAe,QAAS6wH,GAC/BgB,EAAK7xH,eAAe,QAAS6wH,EAC/B,CAOA,OArBAj8E,EAAgB9jF,EAAQ,QAASnkB,GACjCioG,EAAgBi9E,EAAM,QAASllL,GAc/BmkB,EAAOzU,GAAG,MAAOw0K,GACjB//J,EAAOzU,GAAG,QAASw0K,GACnBgB,EAAKx1K,GAAG,QAASw0K,GACjBgB,EAAK7sL,KAAK,OAAQ8rB,GAGX+gK,CACT,EAcAtsL,EAAOC,QAAU,CACfosL,SACAh9E,iDCrFF,MAAMtzF,EAAkBkY,WAAWlY,iBAAmB,0BAEpDwmK,OAAO,sBAAE4B,EAAqB,qBAAE54E,EAAoB,iBAAE64E,EAAgB,iBAAE/4E,GAAkB,WAC1Fi3E,GACE,EAAQ,QACN,oBAAEQ,EAAmB,gBAAE8J,EAAe,eAAE/C,GAAmB,EAAQ,OACnEgD,EAAe,gBAAyC,SACxDC,EAAyB,gBAAyC,2BAClE,SAAEzF,GAAa,EAAQ,OACvB0F,EAAgB,EAAQ,QACxB,yBAAEhK,GAA6B,EAAQ,QACvC,WAAEgB,EAAU,aAAEvB,GAAiB,EAAQ,QACvC,UAAEwK,GAAc,EAAQ,QACxB,mBACJC,EAAkB,QAClBlpJ,EAAO,UACPmpJ,EAAS,OACTrtL,EAAM,YACNgtG,EAAW,QACXjrG,EAAO,cACPurL,EAAa,eACbC,EAAc,qBACdrD,EAAoB,OACpBzkL,GACE,EAAQ,OACN+nL,EAAS/nL,EAAO,UAChBgoL,EAAOhoL,EAAO,QAkBpB,SAASpE,EAAI80D,EAAInzD,GACf,GAAkB,mBAAPmzD,EACT,MAAM,IAAIu1C,EAAqB,KAAM,CAAC,WAAY,iBAAkBv1C,GAEvD,MAAXnzD,GACFgnL,EAAehnL,EAAS,WAEsD,OAA3EA,aAA4C3G,EAAY2G,EAAQ+G,SACnEk5K,EAAoBjgL,EAAQ+G,OAAQ,kBAEtC,IAAI2jL,EAAc,EACmE,OAAhF1qL,aAA4C3G,EAAY2G,EAAQ0qL,eACnEA,EAAcL,EAAUrqL,EAAQ0qL,cAElC,IAAIzB,EAAgByB,EAAc,EAOlC,OANuF,OAAlF1qL,aAA4C3G,EAAY2G,EAAQipL,iBACnEA,EAAgBoB,EAAUrqL,EAAQipL,gBAEpCc,EAAgBW,EAAa,sBAAuB,GACpDX,EAAgBd,EAAe,wBAAyB,GACxDA,GAAiByB,EACV1kK,kBACL,MAAMjf,EAAS,wBACb,CAAC/G,aAA4C3G,EAAY2G,EAAQ+G,QAAQ5I,OAAO+iC,IAE5E5oB,EAASpf,KACT25K,EAAQ,GACR8X,EAAY,CAChB5jL,UAEF,IAAI3H,EACAwqL,EACArqL,GAAO,EACPqrL,EAAM,EACV,SAASC,IACPtrL,GAAO,EACPurL,GACF,CACA,SAASA,IACPF,GAAO,EACPG,GACF,CACA,SAASA,IACHnB,IAAWrqL,GAAQqrL,EAAMF,GAAe7X,EAAMp4K,OAASwuL,IACzDW,IACAA,EAAS,KAEb,EACA5jK,iBACE,IACE,UAAW,IAAI41B,KAAOtjC,EAAQ,CAC5B,GAAI/Y,EACF,OAEF,GAAIwH,EAAOsB,QACT,MAAM,IAAIo3K,EAEZ,IAEE,GADA7jI,EAAMuX,EAAGvX,EAAK+uI,GACV/uI,IAAQ4uI,EACV,SAEF5uI,EAAM2uI,EAAe3uI,EACvB,CAAE,MAAO9gD,GACP8gD,EAAM0uI,EAAcxvL,EACtB,CACA8vL,GAAO,EACP1D,EAAqBtrI,EAAKkvI,EAAoBD,GAC9ChY,EAAMp2K,KAAKm/C,GACPx8C,IACFA,IACAA,EAAO,OAEJG,IAASszK,EAAMp4K,QAAUwuL,GAAiB2B,GAAOF,UAC9C,IAAI3rL,GAASC,IACjB4qL,EAAS5qL,IAGf,CACA6zK,EAAMp2K,KAAKguL,EACb,CAAE,MAAO3vL,GACP,MAAM8gD,EAAM0uI,EAAcxvL,GAC1BosL,EAAqBtrI,EAAKkvI,EAAoBD,GAC9ChY,EAAMp2K,KAAKm/C,EACb,CAAE,QACAr8C,GAAO,EACHH,IACFA,IACAA,EAAO,KAEX,CACF,CACA4rL,GACA,IACE,OAAa,CACX,KAAOnY,EAAMp4K,OAAS,GAAG,CACvB,MAAMmhD,QAAYi3H,EAAM,GACxB,GAAIj3H,IAAQ6uI,EACV,OAEF,GAAI1jL,EAAOsB,QACT,MAAM,IAAIo3K,EAER7jI,IAAQ4uI,UACJ5uI,GAERi3H,EAAMpvK,QACNsnL,GACF,OACM,IAAIhsL,GAASC,IACjBI,EAAOJ,IAEX,CACF,CAAE,QACAO,GAAO,EACHqqL,IACFA,IACAA,EAAS,KAEb,CACF,EAAE/nL,KAAK3I,KACT,CA2BA8sB,eAAeqR,EAAK87B,EAAInzD,OAAU3G,GAChC,UAAW,MAAM4xL,KAAU9sL,EAAO0D,KAAK3I,KAAMi6D,EAAInzD,GAC/C,OAAO,EAET,OAAO,CACT,CA+BA,SAAS7B,EAAOg1D,EAAInzD,GAClB,GAAkB,mBAAPmzD,EACT,MAAM,IAAIu1C,EAAqB,KAAM,CAAC,WAAY,iBAAkBv1C,GAQtE,OAAO90D,EAAIwD,KAAK3I,MANhB8sB,eAAwB5sB,EAAO4G,GAC7B,aAAUmzD,EAAG/5D,EAAO4G,GACX5G,EAEFoxL,CACT,GACgCxqL,EAClC,CAIA,MAAMkrL,UAAkC3J,EACtC,WAAAr5K,GACEqQ,MAAM,UACNrf,KAAK+O,QAAU,qDACjB,EAsGF,SAASkjL,EAAoBC,GAI3B,GADAA,EAASpuL,EAAOouL,GACZphF,EAAYohF,GACd,OAAO,EAET,GAAIA,EAAS,EACX,MAAM,IAAI5iF,EAAiB,SAAU,OAAQ4iF,GAE/C,OAAOA,CACT,CA8EAjuL,EAAOC,QAAQiuL,yBAA2B,CACxCC,eAAgBnB,GAjRlB,SAAwBnqL,OAAU3G,GAOhC,OANe,MAAX2G,GACFgnL,EAAehnL,EAAS,WAEsD,OAA3EA,aAA4C3G,EAAY2G,EAAQ+G,SACnEk5K,EAAoBjgL,EAAQ+G,OAAQ,kBAE/Bif,kBACL,IAAI3O,EAAQ,EACZ,UAAW,MAAMukC,KAAO1iD,KAAM,CAC5B,IAAIqyL,EACJ,GACEvrL,SAEuC,QAAtCurL,EAAkBvrL,EAAQ+G,cACP1N,IAApBkyL,GACAA,EAAgBljL,QAEhB,MAAM,IAAIo3K,EAAW,CACnBt/H,MAAOngD,EAAQ+G,OAAO0tK,cAGpB,CAACp9J,IAASukC,EAClB,CACF,EAAE/5C,KAAK3I,KACT,GAwP4C,gEAC1CsyL,KA/EF,SAAcJ,EAAQprL,OAAU3G,GAQ9B,OAPe,MAAX2G,GACFgnL,EAAehnL,EAAS,WAEsD,OAA3EA,aAA4C3G,EAAY2G,EAAQ+G,SACnEk5K,EAAoBjgL,EAAQ+G,OAAQ,kBAEtCqkL,EAASD,EAAoBC,GACtBplK,kBACL,IAAIylK,EACJ,GACEzrL,SAEwC,QAAvCyrL,EAAmBzrL,EAAQ+G,cACP1N,IAArBoyL,GACAA,EAAiBpjL,QAEjB,MAAM,IAAIo3K,EAEZ,UAAW,MAAM7jI,KAAO1iD,KAAM,CAC5B,IAAIwyL,EACJ,GACE1rL,SAEwC,QAAvC0rL,EAAmB1rL,EAAQ+G,cACP1N,IAArBqyL,GACAA,EAAiBrjL,QAEjB,MAAM,IAAIo3K,EAER2L,KAAY,UACRxvI,EAEV,CACF,EAAE/5C,KAAK3I,KACT,EA6CEiF,SACA+pB,QArGF,SAAiBirC,EAAInzD,GACnB,MAAMuG,EAASlI,EAAIwD,KAAK3I,KAAMi6D,EAAInzD,GAClC,OAAOgmB,kBACL,UAAW,MAAM41B,KAAOr1C,QACfq1C,CAEX,EAAE/5C,KAAK3I,KACT,EA+FEmF,MACAyhC,KA/CF,SAAcsrJ,EAAQprL,OAAU3G,GAQ9B,OAPe,MAAX2G,GACFgnL,EAAehnL,EAAS,WAEsD,OAA3EA,aAA4C3G,EAAY2G,EAAQ+G,SACnEk5K,EAAoBjgL,EAAQ+G,OAAQ,kBAEtCqkL,EAASD,EAAoBC,GACtBplK,kBACL,IAAI2lK,EACJ,GACE3rL,SAEwC,QAAvC2rL,EAAmB3rL,EAAQ+G,cACP1N,IAArBsyL,GACAA,EAAiBtjL,QAEjB,MAAM,IAAIo3K,EAEZ,UAAW,MAAM7jI,KAAO1iD,KAAM,CAC5B,IAAI0yL,EACJ,GACE5rL,SAEwC,QAAvC4rL,EAAmB5rL,EAAQ+G,cACP1N,IAArBuyL,GACAA,EAAiBvjL,QAEjB,MAAM,IAAIo3K,EAOZ,GALI2L,KAAW,UACPxvI,GAIJwvI,GAAU,EACZ,MAEJ,CACF,EAAEvpL,KAAK3I,KACT,EAQE2yL,QAlaF,SAAiBvzK,EAAQtY,GAOvB,GANe,MAAXA,GACFgnL,EAAehnL,EAAS,WAEsD,OAA3EA,aAA4C3G,EAAY2G,EAAQ+G,SACnEk5K,EAAoBjgL,EAAQ+G,OAAQ,kBAElC44K,EAAarnK,KAAY4oK,EAAW5oK,GACtC,MAAM,IAAIgpK,EAAsB,SAAUhpK,EAAQ,oBAEpD,MAAMwzK,EAAiB5B,EAAchxL,KAAMof,GAK3C,OAJItY,SAA6CA,EAAQ+G,QAEvDm5K,EAAyBlgL,EAAQ+G,OAAQ+kL,GAEpCA,CACT,GAoZA3uL,EAAOC,QAAQ2uL,0BAA4B,CACzCxwJ,MA1PFvV,eAAqBmtC,EAAInzD,OAAU3G,GACjC,GAAkB,mBAAP85D,EACT,MAAM,IAAIu1C,EAAqB,KAAM,CAAC,WAAY,iBAAkBv1C,GAGtE,aAAe97B,EAAKx1B,KAClB3I,MACA8sB,SAAUroB,WACOw1D,KAAMx1D,IAEvBqC,EAEJ,EA+OE4D,QAxOFoiB,eAAuBmtC,EAAInzD,GACzB,GAAkB,mBAAPmzD,EACT,MAAM,IAAIu1C,EAAqB,KAAM,CAAC,WAAY,iBAAkBv1C,GAOtE,UAAW,MAAM83H,KAAU5sL,EAAIwD,KAAK3I,MALpC8sB,eAAyB5sB,EAAO4G,GAE9B,aADMmzD,EAAG/5D,EAAO4G,GACTwqL,CACT,GAEqDxqL,IACvD,EA+NEk2B,OAzMFlQ,eAAsB8kI,EAASi0B,EAAc/+K,GAC3C,IAAIgsL,EACJ,GAAuB,mBAAZlhC,EACT,MAAM,IAAIpiD,EAAqB,UAAW,CAAC,WAAY,iBAAkBoiD,GAE5D,MAAX9qJ,GACFgnL,EAAehnL,EAAS,WAEsD,OAA3EA,aAA4C3G,EAAY2G,EAAQ+G,SACnEk5K,EAAoBjgL,EAAQ+G,OAAQ,kBAEtC,IAAIklL,EAAkBpwK,UAAUphB,OAAS,EACzC,GACEuF,SAEwC,QAAvCgsL,EAAmBhsL,EAAQ+G,cACP1N,IAArB2yL,GACAA,EAAiB3jL,QACjB,CACA,MAAMvN,EAAM,IAAI2kL,OAAWpmL,EAAW,CACpC8mD,MAAOngD,EAAQ+G,OAAO0tK,SAIxB,MAFAv7K,KAAKy5D,KAAK,SAAS,eACb6xH,EAAStrL,KAAK2hB,QAAQ/f,IACtBA,CACR,CACA,MAAM2rL,EAAK,IAAIvtK,EACTnS,EAAS0/K,EAAG1/K,OAClB,GAAI/G,SAA6CA,EAAQ+G,OAAQ,CAC/D,MAAM4hL,EAAO,CACXh2H,MAAM,EACN,CAACq3H,GAAe9wL,KAChB,CAAC+wL,IAAyB,GAE5BjqL,EAAQ+G,OAAOuC,iBAAiB,SAAS,IAAMm9K,EAAGh+K,SAASkgL,EAC7D,CACA,IAAIuD,GAAuB,EAC3B,IACE,UAAW,MAAM9yL,KAASF,KAAM,CAC9B,IAAIizL,EAEJ,GADAD,GAAuB,EAErBlsL,SAEwC,QAAvCmsL,EAAmBnsL,EAAQ+G,cACP1N,IAArB8yL,GACAA,EAAiB9jL,QAEjB,MAAM,IAAIo3K,EAEPwM,EAIHlN,QAAqBj0B,EAAQi0B,EAAc3lL,EAAO,CAChD2N,YAJFg4K,EAAe3lL,EACf6yL,GAAkB,EAMtB,CACA,IAAKC,IAAyBD,EAC5B,MAAM,IAAIf,CAEd,CAAE,QACAzE,EAAGh+K,OACL,CACA,OAAOs2K,CACT,EAwIEh/I,QAvIF/Z,eAAuBhmB,GACN,MAAXA,GACFgnL,EAAehnL,EAAS,WAEsD,OAA3EA,aAA4C3G,EAAY2G,EAAQ+G,SACnEk5K,EAAoBjgL,EAAQ+G,OAAQ,kBAEtC,MAAMhK,EAAS,GACf,UAAW,MAAM6+C,KAAO1iD,KAAM,CAC5B,IAAIkzL,EACJ,GACEpsL,SAEwC,QAAvCosL,EAAmBpsL,EAAQ+G,cACP1N,IAArB+yL,GACAA,EAAiB/jL,QAEjB,MAAM,IAAIo3K,OAAWpmL,EAAW,CAC9B8mD,MAAOngD,EAAQ+G,OAAO0tK,SAG1B2V,EAAmBrtL,EAAQ6+C,EAC7B,CACA,OAAO7+C,CACT,EAgHEs6B,OACA8tF,KAlPFn/F,eAAoBmtC,EAAInzD,GACtB,UAAW,MAAMjD,KAAUoB,EAAO0D,KAAK3I,KAAMi6D,EAAInzD,GAC/C,OAAOjD,CAGX,iCC/LA,MAAM,qBAAE6nL,GAAyB,EAAQ,OACzCznL,EAAOC,QAAU89J,EACjB,MAAMH,EAAY,EAAQ,OAG1B,SAASG,EAAYl7J,GACnB,KAAM9G,gBAAgBgiK,GAAc,OAAO,IAAIA,EAAYl7J,GAC3D+6J,EAAUl5J,KAAK3I,KAAM8G,EACvB,CALA4kL,EAAqB1pB,EAAYtgK,UAAWmgK,EAAUngK,WACtDgqL,EAAqB1pB,EAAaH,GAKlCG,EAAYtgK,UAAUqgE,WAAa,SAAUzoD,EAAOmB,EAAU2hC,GAC5DA,EAAG,KAAM9iC,EACX,mBCpCA,MAAM2e,EAAU,EAAQ,QAOlB,aAAEm4J,EAAY,QAAEvqL,EAAO,oBAAE+pL,EAAmB,cAAEtJ,GAAkB,EAAQ,OACxEM,EAAM,EAAQ,QACd,KAAEntH,GAAS,EAAQ,OACnB05H,EAAc,EAAQ,OACtBtL,EAAS,EAAQ,QACjB,mBACJmB,EACAxC,OAAO,qBACLh3E,EAAoB,yBACpBw9E,EAAwB,iBACxB3E,EAAgB,qBAChB+K,EAAoB,2BACpBzF,GACD,WACDpH,GACE,EAAQ,QACN,iBAAEsH,EAAgB,oBAAE9G,GAAwB,EAAQ,QACpD,WACJt2B,EAAU,WACVs3B,EAAU,qBACV8E,EAAoB,aACpBpG,EAAY,kBACZwB,EAAiB,YACjBvB,EAAW,iBACXyB,EAAgB,mBAChB+F,GACE,EAAQ,OACNluK,EAAkBkY,WAAWlY,iBAAmB,yBACtD,IAAIgiJ,EACA7iJ,EACA0nK,EACJ,SAASiB,EAAU1oK,EAAQ6rK,EAASoI,GAClC,IAAI/H,GAAW,EAcf,OAbAlsK,EAAOrE,GAAG,SAAS,KACjBuwK,GAAW,KAYN,CACL3pK,QAAU/f,IACJ0pL,IACJA,GAAW,EACX6H,EAAYrL,UAAU1oK,EAAQxd,GAAO,IAAIwxL,EAAqB,SAAO,EAEvE7D,QAhBc3I,EACdxnK,EACA,CACEwC,SAAUqpK,EACV3iL,SAAU+qL,IAEXzxL,IACC0pL,GAAY1pL,KAWlB,CAQA,SAAS0xL,EAAkB5wI,GACzB,GAAI+tG,EAAW/tG,GACb,OAAOA,EACF,GAAImqI,EAAqBnqI,GAE9B,OAIJ51B,gBAA6B41B,GACtBvjC,IACHA,EAAW,EAAQ,cAEdA,EAASzd,UAAUkuL,GAAqBjnL,KAAK+5C,EACtD,CATW6wI,CAAa7wI,GAEtB,MAAM,IAAI8sD,EAAqB,MAAO,CAAC,WAAY,WAAY,iBAAkB9sD,EACnF,CAOA51B,eAAe0mK,EAAWn4H,EAAU/yD,EAAUmrL,GAAQ,IAAEhxL,IACtD,IAAIU,EACAuwL,EAAY,KAChB,MAAMhD,EAAU9uL,IAId,GAHIA,IACFuB,EAAQvB,GAEN8xL,EAAW,CACb,MAAMtmL,EAAWsmL,EACjBA,EAAY,KACZtmL,GACF,GAEIumL,EAAO,IACX,IAAI9tL,GAAQ,CAACC,EAASC,KAChB5C,EACF4C,EAAO5C,GAEPuwL,EAAY,KACNvwL,EACF4C,EAAO5C,GAEP2C,GACF,CAEJ,IAEJwC,EAASyS,GAAG,QAAS21K,GACrB,MAAMnB,EAAU3I,EACdt+K,EACA,CACEsZ,UAAU,GAEZ8uK,GAEF,IACMpoL,EAASgkL,yBACLqH,IAER,UAAW,MAAMr6K,KAAS+hD,EACnB/yD,EAAS3F,MAAM2W,UACZq6K,IAGNlxL,IACF6F,EAAS7F,YACHkxL,KAERF,GACF,CAAE,MAAO7xL,GACP6xL,EAAOtwL,IAAUvB,EAAMonL,EAAmB7lL,EAAOvB,GAAOA,EAC1D,CAAE,QACA2tL,IACAjnL,EAAS2S,IAAI,QAASy1K,EACxB,CACF,CACA5jK,eAAe8mK,EAAUhyK,EAAUtZ,EAAUmrL,GAAQ,IAAEhxL,IACjDwlL,EAAkB3/K,KACpBA,EAAWA,EAASA,UAGtB,MAAMsvD,EAAStvD,EAASugL,YACxB,IACE,UAAW,MAAMvvK,KAASsI,QAClBg2C,EAAOpjD,MACbojD,EAAOj1D,MAAM2W,GAAOsyB,OAAM,eAEtBgsB,EAAOpjD,MACT/R,SACIm1D,EAAOr8C,QAEfk4K,GACF,CAAE,MAAO7xL,GACP,UACQg2D,EAAOroD,MAAM3N,GACnB6xL,EAAO7xL,EACT,CAAE,MAAOA,GACP6xL,EAAO7xL,EACT,CACF,CACF,CAIA,SAASiyL,EAAanxK,EAAStV,EAAUqiL,GAIvC,GAHuB,IAAnB/sK,EAAQnhB,QAAgB6uL,EAAa1tK,EAAQ,MAC/CA,EAAUA,EAAQ,IAEhBA,EAAQnhB,OAAS,EACnB,MAAM,IAAI8mL,EAAiB,WAE7B,MAAMkF,EAAK,IAAIvtK,EACTnS,EAAS0/K,EAAG1/K,OACZimL,EAAcrE,aAAsCtvL,EAAYsvL,EAAK5hL,OAIrEkmL,EAAoB,GAE1B,SAASxkL,IACPykL,EAAW,IAAIzN,EACjB,CAEA,IAAIW,EAIA/jL,EACAjD,EAVJ6mL,EAAoB+M,EAAa,kBAIjCjN,EAAmBA,GAAoB,0BAEnCiN,IACF5M,EAAaL,EAAiBiN,EAAavkL,IAI7C,MAAM0kL,EAAW,GACjB,IAwBI3+J,EAxBA4+J,EAAc,EAClB,SAAST,EAAO7xL,GACdoyL,EAAWpyL,EAAuB,KAAhBsyL,EACpB,CACA,SAASF,EAAWpyL,EAAK6Z,GACvB,IAAI04K,EAIJ,IAHIvyL,GAASuB,GAAwB,+BAAfA,EAAMjC,OAC1BiC,EAAQvB,GAELuB,GAAUsY,EAAf,CAGA,KAAOw4K,EAAS1yL,QACd0yL,EAAS1pL,OAAT0pL,CAAiB9wL,GAEa,QAA9BgxL,EAAcjN,SAAwC/mL,IAAhBg0L,GAAwCA,EAAY7N,KAC5FiH,EAAGh+K,QACCkM,IACGtY,GACH4wL,EAAkBrpL,SAASuvD,GAAOA,MAEpChiC,EAAQkiJ,SAAS/sK,EAAUjK,EAAOjD,GAVpC,CAYF,CAEA,IAAK,IAAImB,EAAI,EAAGA,EAAIqhB,EAAQnhB,OAAQF,IAAK,CACvC,MAAM+d,EAASsD,EAAQrhB,GACjB4pL,EAAU5pL,EAAIqhB,EAAQnhB,OAAS,EAC/B8xL,EAAUhyL,EAAI,EACdoB,EAAMwoL,IAA4E,KAAhEwE,aAAsCtvL,EAAYsvL,EAAKhtL,KACzE2xL,EAAe/yL,IAAMqhB,EAAQnhB,OAAS,EAC5C,GAAIklL,EAAarnK,GAAS,CACxB,GAAI3c,EAAK,CACP,MAAM,QAAEkf,EAAO,QAAE4tK,GAAYzH,EAAU1oK,EAAQ6rK,EAASoI,GACxDY,EAAS1wL,KAAKoe,GACVomK,EAAW3oK,IAAWg1K,GACxBL,EAAkBxwL,KAAKgsL,EAE3B,CAGA,SAAS5tL,EAAQC,GACXA,GAAoB,eAAbA,EAAIoI,MAAsC,+BAAbpI,EAAIV,MAC1CuyL,EAAO7xL,EAEX,CACAwd,EAAOrE,GAAG,QAASpZ,GACfomL,EAAW3oK,IAAWg1K,GACxBL,EAAkBxwL,MAAK,KACrB6b,EAAOs/C,eAAe,QAAS/8D,EAAO,GAG5C,CACA,GAAU,IAANN,EACF,GAAsB,mBAAX+d,GAIT,GAHAkW,EAAMlW,EAAO,CACXvR,YAEG4iJ,EAAWn7H,GACd,MAAM,IAAI03J,EAAyB,oCAAqC,SAAU13J,QAGpFA,EADSm7H,EAAWrxI,IAAWytK,EAAqBztK,IAAW6oK,EAAkB7oK,GAC3EA,EAEAyoK,EAAOh0G,KAAKz0D,QAEf,GAAsB,mBAAXA,EAAuB,CAErC,IAAIi1K,EAQN,GAPE/+J,EAFE2yJ,EAAkB3yJ,GAEdg+J,EAAmC,QAAhBe,EAAO/+J,SAA0Bn1B,IAATk0L,OAAqBl0L,EAAYk0L,EAAKzyK,UAEjF0xK,EAAkBh+J,GAE1BA,EAAMlW,EAAOkW,EAAK,CAChBznB,WAEEo9K,GACF,IAAKx6B,EAAWn7H,GAAK,GACnB,MAAM,IAAI03J,EAAyB,gBAAiB,aAAa3rL,EAAI,KAAMi0B,OAExE,CACL,IAAIg/J,EACCtyB,IACHA,EAAc,EAAQ,QAQxB,MAAMuyB,EAAK,IAAIvyB,EAAY,CACzBF,YAAY,IAKRx7J,EAAyB,QAAjBguL,EAAQh/J,SAA2Bn1B,IAAVm0L,OAAsBn0L,EAAYm0L,EAAMhuL,KAC/E,GAAoB,mBAATA,EACT4tL,IACA5tL,EAAKqC,KACH2sB,GACCotB,IACCxiD,EAAQwiD,EACG,MAAPA,GACF6xI,EAAG5xL,MAAM+/C,GAEPjgD,GACF8xL,EAAG9xL,MAELw1B,EAAQkiJ,SAASsZ,EAAM,IAExB7xL,IACC2yL,EAAG5yK,QAAQ/f,GACXq2B,EAAQkiJ,SAASsZ,EAAQ7xL,EAAG,SAG3B,GAAI6uJ,EAAWn7H,GAAK,GACzB4+J,IACAV,EAAWl+J,EAAKi/J,EAAId,EAAQ,CAC1BhxL,YAEG,KAAI0lL,EAAiB7yJ,KAAQ2yJ,EAAkB3yJ,GAOpD,MAAM,IAAI03J,EAAyB,2BAA4B,cAAe13J,GAPpB,CAC1D,MAAMwzJ,GAASxzJ,EAAI1T,UAAY0T,EAC/B4+J,IACAV,EAAW1K,GAAQyL,EAAId,EAAQ,CAC7BhxL,OAEJ,CAEA,CACA6yB,EAAMi/J,EACN,MAAM,QAAE5yK,GAAO,QAAE4tK,IAAYzH,EAAUxyJ,GAAK,GAAO,GACnD2+J,EAAS1wL,KAAKoe,IACVyyK,GACFL,EAAkBxwL,KAAKgsL,GAE3B,CACF,MAAO,GAAI9I,EAAarnK,GAAS,CAC/B,GAAIytK,EAAqBv3J,GAAM,CAC7B4+J,GAAe,EACf,MAAM3E,GAAUv3H,EAAK1iC,EAAKlW,EAAQq0K,EAAQ,CACxChxL,QAEEslL,EAAW3oK,IAAWg1K,GACxBL,EAAkBxwL,KAAKgsL,GAE3B,MAAO,GAAItH,EAAkB3yJ,IAAQ6yJ,EAAiB7yJ,GAAM,CAC1D,MAAMwzJ,GAASxzJ,EAAI1T,UAAY0T,EAC/B4+J,IACAV,EAAW1K,GAAQ1pK,EAAQq0K,EAAQ,CACjChxL,OAEJ,KAAO,KAAIguJ,EAAWn7H,GAMpB,MAAM,IAAIk6E,EACR,MACA,CAAC,WAAY,WAAY,gBAAiB,iBAAkB,mBAC5Dl6E,GARF4+J,IACAV,EAAWl+J,EAAKlW,EAAQq0K,EAAQ,CAC9BhxL,OAQJ,CACA6yB,EAAMlW,CACR,MAAO,GAAIsnK,EAAYtnK,GAAS,CAC9B,GAAIytK,EAAqBv3J,GACvB4+J,IACAN,EAAUN,EAAkBh+J,GAAMlW,EAAQq0K,EAAQ,CAChDhxL,aAEG,GAAI0lL,EAAiB7yJ,IAAQm7H,EAAWn7H,GAC7C4+J,IACAN,EAAUt+J,EAAKlW,EAAQq0K,EAAQ,CAC7BhxL,YAEG,KAAIwlL,EAAkB3yJ,GAM3B,MAAM,IAAIk6E,EACR,MACA,CAAC,WAAY,WAAY,gBAAiB,iBAAkB,mBAC5Dl6E,GARF4+J,IACAN,EAAUt+J,EAAI1T,SAAUxC,EAAQq0K,EAAQ,CACtChxL,OAQJ,CACA6yB,EAAMlW,CACR,MACEkW,EAAMuyJ,EAAOh0G,KAAKz0D,EAEtB,CAOA,OALGvR,SAA2CA,EAAOsB,SAClD2kL,SAAqDA,EAAY3kL,UAElE8oB,EAAQkiJ,SAAS5qK,GAEZ+lB,CACT,CACA,SAAS0iC,EAAK35B,EAAK0xE,EAAK0jF,GAAQ,IAAEhxL,IAChC,IAAIyf,GAAQ,EAWZ,GAVA6tF,EAAIh1F,GAAG,SAAS,KACTmH,GAEHuxK,EAAO,IAAI9F,EACb,IAEFtvJ,EAAI25B,KAAK+3C,EAAK,CACZttG,KAAK,IAGHA,EAAK,CAKP,SAAS+xL,IACPtyK,GAAQ,EACR6tF,EAAIttG,KACN,CACIyrL,EAAmB7vJ,GAErBpG,EAAQkiJ,SAASqa,GAEjBn2J,EAAIo7B,KAAK,MAAO+6H,EAEpB,MACEf,IAgCF,OA9BA7M,EACEvoJ,EACA,CACEzc,UAAU,EACVtZ,UAAU,IAEX1G,IACC,MAAMqtL,EAAS5wJ,EAAIm6H,eAEjB52J,GACa,+BAAbA,EAAIV,MACJ+tL,GACAA,EAAO/sK,QACN+sK,EAAOxF,UACPwF,EAAOhF,aAUR5rJ,EAAIo7B,KAAK,MAAOg6H,GAAQh6H,KAAK,QAASg6H,GAEtCA,EAAO7xL,EACT,IAGGglL,EACL72E,EACA,CACEnuF,UAAU,EACVtZ,UAAU,GAEZmrL,EAEJ,CACAxvL,EAAOC,QAAU,CACf2vL,eACAjM,SA9SF,YAAqBllK,GACnB,OAAOmxK,EAAanxK,EAAS+2C,EAxG/B,SAAqB/2C,GAKnB,OADAmrK,EAAiBnrK,EAAQA,EAAQnhB,OAAS,GAAI,8BACvCmhB,EAAQlf,KACjB,CAkGoCixL,CAAY/xK,IAChD,oBCvKA,MAAMuV,EAAU,EAAQ,QAyBlB,sBACJy8J,EAAqB,gBACrBC,EAAe,YACf7jF,EAAW,eACX8jF,EAAc,uBACdrJ,EAAsB,WACtBE,EAAU,qBACVC,EAAoB,QACpB7lL,EAAO,QACPgvL,EAAO,mBACPC,EAAkB,oBAClBlF,EAAmB,OACnBrmL,GACE,EAAQ,OACZtF,EAAOC,QAAUib,EACjBA,EAAS41K,cAAgBA,EACzB,MAAQhkF,aAAcs/E,GAAO,EAAQ,QAC/B,OAAEC,EAAM,gBAAEh9E,GAAoB,EAAQ,QACtC,OAAEv2G,GAAW,EAAQ,OACrB,eAAE+pL,GAAmB,EAAQ,OAC7BF,EAAM,EAAQ,OACpB,IAAIzhH,EAAQ,kBAAoC,UAAWlL,IACzDkL,EAAQlL,KAEV,MAAM+6H,EAAa,EAAQ,IACrB7B,EAAc,EAAQ,QACtB,iBAAE8B,EAAgB,wBAAEC,GAA4B,EAAQ,QACxD,mBACJlM,EACAxC,OAAO,qBACLh3E,EAAoB,2BACpB2lF,EAA0B,iBAC1B7lF,EAAgB,0BAChB8lF,EAAyB,mCACzBC,GACD,WACD9O,GACE,EAAQ,QACN,eAAEuH,GAAmB,EAAQ,OAC7BwH,EAAU/rL,EAAO,YACjB,cAAEgsL,GAAkB,EAAQ,OAC5B1hH,EAAO,EAAQ,OACrB63G,EAAqBvsK,EAASzd,UAAW4uL,EAAO5uL,WAChDgqL,EAAqBvsK,EAAUmxK,GAC/B,MAAM7B,EAAM,QACN,eAAEvE,GAAmBiJ,EACrBqC,EAAc,EAIdC,EAAe,GACfC,EAAQ,GACRC,EAAgB,GAKhBC,EAAa,KACbC,EAAe,KAIfC,EAAmB,MAKzB,SAASC,EAAqBpvC,GAC5B,MAAO,CACLt/I,YAAY,EACZ,GAAAC,GACE,SAAQtH,KAAKY,MAAQ+lJ,EACvB,EACA,GAAA76I,CAAI5L,GACEA,EAAOF,KAAKY,OAAS+lJ,EACpB3mJ,KAAKY,QAAU+lJ,CACtB,EAEJ,CAsCA,SAASouC,EAAcjuL,EAASsY,EAAQ42K,GAMd,kBAAbA,IAAwBA,EAAW52K,aAAkB,EAAQ,QAIxEpf,KAAKY,MAAQg1L,EAAaC,EAAeJ,EAAeC,EAGpD5uL,GAAWA,EAAQg7J,aAAY9hK,KAAKY,OAAS40L,GAC7CQ,GAAYlvL,GAAWA,EAAQ6hL,qBAAoB3oL,KAAKY,OAAS40L,GAIrEx1L,KAAK+vL,cAAgBjpL,EACjBmuL,EAAiBj1L,KAAM8G,EAAS,wBAAyBkvL,GACzDd,GAAwB,GAK5Bl1L,KAAK8B,OAAS,IAAIkzL,EAClBh1L,KAAKuB,OAAS,EACdvB,KAAKi2L,MAAQ,GACbj2L,KAAKk2L,QAAU,KACfl2L,KAAKs1L,GAAW,KAGZxuL,IAAiC,IAAtBA,EAAQkjL,YAAqBhqL,KAAKY,QAAUg1L,GAGvD9uL,IAAmC,IAAxBA,EAAQujL,cAAuBrqL,KAAKY,QAAUi1L,GAM7D71L,KAAKypL,QAAU,KAKfzpL,KAAKm2L,gBAAmBrvL,GAAWA,EAAQqvL,iBAAoB,OAI/Dn2L,KAAKo2L,kBAAoB,KACzBp2L,KAAKq2L,QAAU,KACfr2L,KAAKya,SAAW,KACZ3T,GAAWA,EAAQ2T,WACrBza,KAAKq2L,QAAU,IAAId,EAAczuL,EAAQ2T,UACzCza,KAAKya,SAAW3T,EAAQ2T,SAE5B,CACA,SAAS0E,EAASrY,GAChB,KAAM9G,gBAAgBmf,GAAW,OAAO,IAAIA,EAASrY,GAIrD,MAAMkvL,EAAWh2L,gBAAgB,EAAQ,OACzCA,KAAKw4J,eAAiB,IAAIu8B,EAAcjuL,EAAS9G,KAAMg2L,GACnDlvL,IAC0B,mBAAjBA,EAAQ6Y,OAAqB3f,KAAKyf,MAAQ3Y,EAAQ6Y,MAC9B,mBAApB7Y,EAAQ6a,UAAwB3hB,KAAK+oL,SAAWjiL,EAAQ6a,SAClC,mBAAtB7a,EAAQ+0B,YAA0B77B,KAAKmuH,WAAarnH,EAAQ+0B,WACnE/0B,EAAQ+G,SAAWmoL,GAAUlP,EAAehgL,EAAQ+G,OAAQ7N,OAElEswL,EAAO3nL,KAAK3I,KAAM8G,GAClBqsL,EAAYt3J,UAAU77B,MAAM,KACtBA,KAAKw4J,eAAe89B,cACtBC,GAAcv2L,KAAMA,KAAKw4J,eAC3B,GAEJ,CA8BA,SAASg+B,EAAiBp3K,EAAQ9F,EAAOmB,EAAUg8K,GACjDtxH,EAAM,mBAAoB7rD,GAC1B,MAAM1Y,EAAQwe,EAAOo5I,eACrB,IAAI52J,EAuBJ,GAtBKhB,EAAMA,MAAQ40L,IACI,iBAAVl8K,GACTmB,EAAWA,GAAY7Z,EAAMu1L,gBACzBv1L,EAAM6Z,WAAaA,IACjBg8K,GAAc71L,EAAM6Z,SAGtBnB,EAAQvc,EAAO82E,KAAKv6D,EAAOmB,GAAUjZ,SAASZ,EAAM6Z,WAEpDnB,EAAQvc,EAAO82E,KAAKv6D,EAAOmB,GAC3BA,EAAW,MAGNnB,aAAiBvc,EAC1B0d,EAAW,GACF61K,EAAOoG,cAAcp9K,IAC9BA,EAAQg3K,EAAOqG,oBAAoBr9K,GACnCmB,EAAW,IACO,MAATnB,IACT1X,EAAM,IAAI4tG,EAAqB,QAAS,CAAC,SAAU,SAAU,cAAel2F,KAG5E1X,EACFsoL,EAAe9qK,EAAQxd,QAClB,GAAc,OAAV0X,EACT1Y,EAAMA,QAAS,EAqOnB,SAAoBwe,EAAQxe,GAE1B,GADAukE,EAAM,eACFvkE,EAAMshB,MAAV,CACA,GAAIthB,EAAMy1L,QAAS,CACjB,MAAM/8K,EAAQ1Y,EAAMy1L,QAAQ5zL,MACxB6W,GAASA,EAAM/X,SACjBX,EAAMkB,OAAOyB,KAAK+V,GAClB1Y,EAAMW,QAAUX,EAAMkhK,WAAa,EAAIxoJ,EAAM/X,OAEjD,CACAX,EAAMshB,OAAQ,EACVthB,EAAMupL,KAIRyM,EAAax3K,IAGbxe,EAAM01L,cAAe,EACrB11L,EAAMi2L,iBAAkB,EAGxBC,GAAc13K,GApBC,CAsBnB,CA5PI23K,CAAW33K,EAAQxe,QACd,GAAKA,EAAMA,MAAQ40L,GAAuBl8K,GAASA,EAAM/X,OAAS,EACvE,GAAIk1L,EACF,GAhNc,EAgNT71L,EAAMA,MAA4BspL,EAAe9qK,EAAQ,IAAIi2K,OAC7D,IAAIz0L,EAAMwpL,WAAaxpL,EAAM6oL,QAAS,OAAO,EAC7CuN,EAAS53K,EAAQxe,EAAO0Y,GAAO,EAAI,MACnC,GAAI1Y,EAAMshB,MACfgoK,EAAe9qK,EAAQ,IAAIg2K,OACtB,IAAIx0L,EAAMwpL,WAAaxpL,EAAM6oL,QAClC,OAAO,EAEP7oL,EAAMA,QAAS,EACXA,EAAMy1L,UAAY57K,GACpBnB,EAAQ1Y,EAAMy1L,QAAQ1zL,MAAM2W,GACxB1Y,EAAMkhK,YAA+B,IAAjBxoJ,EAAM/X,OAAcy1L,EAAS53K,EAAQxe,EAAO0Y,GAAO,GACtEi9K,GAAcn3K,EAAQxe,IAE3Bo2L,EAAS53K,EAAQxe,EAAO0Y,GAAO,EAEnC,MACUm9K,IACV71L,EAAMA,QAAS,EACf21L,GAAcn3K,EAAQxe,IAMxB,OAAQA,EAAMshB,QAAUthB,EAAMW,OAASX,EAAMmvL,eAAkC,IAAjBnvL,EAAMW,OACtE,CACA,SAASy1L,EAAS53K,EAAQxe,EAAO0Y,EAAOm9K,GAClC71L,EAAMs1L,SAA4B,IAAjBt1L,EAAMW,SAAiBX,EAAMupL,MAAQ/qK,EAAOyzF,cAAc,QAAU,GAGlFjyG,EAAMA,MAAQk1L,EACjBl1L,EAAMw1L,kBAAkB/kK,QAExBzwB,EAAMw1L,kBAAoB,KAE5Bx1L,EAAMq2L,aAAc,EACpB73K,EAAO1b,KAAK,OAAQ4V,KAGpB1Y,EAAMW,QAAUX,EAAMkhK,WAAa,EAAIxoJ,EAAM/X,OACzCk1L,EAAY71L,EAAMkB,OAAO2uD,QAAQn3C,GAChC1Y,EAAMkB,OAAOyB,KAAK+V,GAClB1Y,EAAMA,MAAQ+0L,GAAsBiB,EAAax3K,IAExDm3K,GAAcn3K,EAAQxe,EACxB,CA6CA,SAASs2L,EAAct0L,EAAGhC,GACxB,OAAIgC,GAAK,GAAuB,IAAjBhC,EAAMW,QAAgBX,EAAMshB,MAAe,EACrDthB,EAAMA,MAAQ40L,EAA2B,EAC1C1kF,EAAYluG,GAEVhC,EAAMs1L,SAAWt1L,EAAMW,OAAeX,EAAMkB,OAAOq6C,QAAQ56C,OACxDX,EAAMW,OAEXqB,GAAKhC,EAAMW,OAAeqB,EACvBhC,EAAMshB,MAAQthB,EAAMW,OAAS,CACtC,CAyJA,SAASq1L,EAAax3K,GACpB,MAAMxe,EAAQwe,EAAOo5I,eACrBrzF,EAAM,eAAgBvkE,EAAM01L,aAAc11L,EAAMi2L,iBAChDj2L,EAAM01L,cAAe,EAChB11L,EAAMi2L,kBACT1xH,EAAM,eAAgBvkE,EAAMs1L,SAC5Bt1L,EAAMi2L,iBAAkB,EACxB5+J,EAAQkiJ,SAAS2c,GAAe13K,GAEpC,CACA,SAAS03K,GAAc13K,GACrB,MAAMxe,EAAQwe,EAAOo5I,eACrBrzF,EAAM,gBAAiBvkE,EAAMwpL,UAAWxpL,EAAMW,OAAQX,EAAMshB,OACvDthB,EAAMwpL,WAAcxpL,EAAM6oL,UAAY7oL,EAAMW,SAAUX,EAAMshB,QAC/D9C,EAAO1b,KAAK,YACZ9C,EAAMi2L,iBAAkB,GAS1Bj2L,EAAM01L,cAAgB11L,EAAMs1L,UAAYt1L,EAAMshB,OAASthB,EAAMW,QAAUX,EAAMmvL,cAC7EoH,GAAK/3K,EACP,CAQA,SAASm3K,GAAcn3K,EAAQxe,IACxBA,EAAMw2L,aAAex2L,EAAM4pL,cAC9B5pL,EAAMw2L,aAAc,EACpBn/J,EAAQkiJ,SAASkd,GAAgBj4K,EAAQxe,GAE7C,CACA,SAASy2L,GAAej4K,EAAQxe,GAwB9B,MACGA,EAAMqqL,UACNrqL,EAAMshB,QACNthB,EAAMW,OAASX,EAAMmvL,eAAkBnvL,EAAMs1L,SAA4B,IAAjBt1L,EAAMW,SAC/D,CACA,MAAMu3F,EAAMl4F,EAAMW,OAGlB,GAFA4jE,EAAM,wBACN/lD,EAAOO,KAAK,GACRm5E,IAAQl4F,EAAMW,OAEhB,KACJ,CACAX,EAAMw2L,aAAc,CACtB,CA0PA,SAASE,GAAwBpuL,GAC/B,MAAMtI,EAAQsI,EAAKsvJ,eACnB53J,EAAM22L,kBAAoBruL,EAAK2pG,cAAc,YAAc,EACvDjyG,EAAM42L,kBAAsC,IAAnB52L,EAAM00L,GAGjC10L,EAAMs1L,SAAU,EAGPhtL,EAAK2pG,cAAc,QAAU,EACtC3pG,EAAKwnL,SACK9vL,EAAM22L,oBAChB32L,EAAMs1L,QAAU,KAEpB,CACA,SAASuB,GAAiBvuL,GACxBi8D,EAAM,4BACNj8D,EAAKyW,KAAK,EACZ,CAuBA,SAAS+3K,GAAQt4K,EAAQxe,GACvBukE,EAAM,SAAUvkE,EAAMqqL,SACjBrqL,EAAMqqL,SACT7rK,EAAOO,KAAK,GAEd/e,EAAM42L,iBAAkB,EACxBp4K,EAAO1b,KAAK,UACZyzL,GAAK/3K,GACDxe,EAAMs1L,UAAYt1L,EAAMqqL,SAAS7rK,EAAOO,KAAK,EACnD,CAWA,SAASw3K,GAAK/3K,GACZ,MAAMxe,EAAQwe,EAAOo5I,eAErB,IADArzF,EAAM,OAAQvkE,EAAMs1L,SACbt1L,EAAMs1L,SAA6B,OAAlB92K,EAAOO,SACjC,CAwDA,SAASg4K,GAAsBv4K,EAAQtY,GACV,mBAAhBsY,EAAOO,OAChBP,EAASD,EAASk7B,KAAKj7B,EAAQ,CAC7B0iJ,YAAY,KAGhB,MAAMvsB,EAIRzoH,gBAAoC1N,EAAQtY,GAC1C,IAUI3D,EAVAiK,EAAWqhL,EACf,SAASvoL,EAAKJ,GACR9F,OAASof,GACXhS,IACAA,EAAWqhL,GAEXrhL,EAAWtH,CAEf,CACAsZ,EAAOrE,GAAG,WAAY7U,GAEtB,MAAMqpL,EAAU3I,EACdxnK,EACA,CACE9W,UAAU,IAEX1G,IACCuB,EAAQvB,EAAMonL,EAAmB7lL,EAAOvB,GAAO,KAC/CwL,IACAA,EAAWqhL,KAGf,IACE,OAAa,CACX,MAAMn1K,EAAQ8F,EAAOgrK,UAAY,KAAOhrK,EAAOO,OAC/C,GAAc,OAAVrG,QACIA,MACD,IAAInW,EACT,MAAMA,EACD,GAAc,OAAVA,EACT,aAEM,IAAI0C,EAAQK,EACpB,CACF,CACF,CAAE,MAAOtE,GAEP,MADAuB,EAAQ6lL,EAAmB7lL,EAAOvB,GAC5BuB,CACR,CAAE,SAEGA,IAA+F,KAArF2D,aAA4C3G,EAAY2G,EAAQ8wL,uBAChEz3L,IAAVgD,IAAuBic,EAAOo5I,eAAe6xB,aAI9CjrK,EAAOnE,IAAI,WAAY/U,GACvBqpL,KAHA4D,EAAYrL,UAAU1oK,EAAQ,KAKlC,CACF,CAtDey4K,CAAoBz4K,EAAQtY,GAEzC,OADAyuI,EAAKn2H,OAASA,EACPm2H,CACT,CA6MA,SAASuiD,GAASl1L,EAAGhC,GAEnB,GAAqB,IAAjBA,EAAMW,OAAc,OAAO,KAC/B,IAAI+zB,EAYJ,OAXI10B,EAAMkhK,WAAYxsI,EAAM10B,EAAMkB,OAAOyI,SAC/B3H,GAAKA,GAAKhC,EAAMW,QAEL+zB,EAAf10B,EAAMy1L,QAAez1L,EAAMkB,OAAOuD,KAAK,IACV,IAAxBzE,EAAMkB,OAAOP,OAAoBX,EAAMkB,OAAOq6C,QAC5Cv7C,EAAMkB,OAAOolC,OAAOtmC,EAAMW,QACrCX,EAAMkB,OAAOuvB,SAGbiE,EAAM10B,EAAMkB,OAAOwlL,QAAQ1kL,EAAGhC,EAAMy1L,SAE/B/gK,CACT,CACA,SAASyiK,GAAY34K,GACnB,MAAMxe,EAAQwe,EAAOo5I,eACrBrzF,EAAM,cAAevkE,EAAMsqL,YACtBtqL,EAAMsqL,aACTtqL,EAAMshB,OAAQ,EACd+V,EAAQkiJ,SAAS6d,GAAep3L,EAAOwe,GAE3C,CACA,SAAS44K,GAAcp3L,EAAOwe,GAI5B,GAHA+lD,EAAM,gBAAiBvkE,EAAMsqL,WAAYtqL,EAAMW,SAG1CX,EAAM6oL,UAAY7oL,EAAMmpL,eAAiBnpL,EAAMsqL,YAA+B,IAAjBtqL,EAAMW,OAGtE,GAFAX,EAAMsqL,YAAa,EACnB9rK,EAAO1b,KAAK,OACR0b,EAAO9W,WAAqC,IAAzB8W,EAAOwsK,cAC5B3zJ,EAAQkiJ,SAAS8d,GAAe74K,QAC3B,GAAIxe,EAAMypL,YAAa,CAG5B,MAAM2E,EAAS5vK,EAAOm5I,iBAEnBy2B,GACAA,EAAO3E,cAGL2E,EAAO1D,WAAgC,IAApB0D,EAAO1mL,YAE7B8W,EAAOuC,SAEX,CAEJ,CACA,SAASs2K,GAAc74K,GACJA,EAAO9W,WAAa8W,EAAOitK,gBAAkBjtK,EAAOgrK,WAEnEhrK,EAAO3c,KAEX,CAIA,IAAIopL,GAGJ,SAASE,KAEP,YAD2B5rL,IAAvB0rL,KAAkCA,GAAqB,CAAC,GACrDA,EACT,CAtoCAN,EAAuBwJ,EAAcrzL,UAAW,CAC9CogK,WAAYi0B,EAAqBP,GACjCtzK,MAAO6zK,EAlCM,GAmCb7K,WAAY6K,EAlCM,GAmClB9K,QAAS8K,EAlCM,GAuCfvL,YAAauL,EAAqBN,GAKlCtL,KAAM4L,EAAqBL,GAG3BY,aAAcP,EAAqBJ,GACnCkB,gBAAiBd,EA5CM,KA6CvBwB,kBAAmBxB,EA5CM,KA6CzByB,gBAAiBzB,EA5CM,KA8CvB9L,aAAc8L,EA7CM,MA8CpB/L,UAAW+L,EAAqBH,GAChCvL,YAAa0L,EAAqBF,GAElCzL,UAAW2L,EA9CM,MAgDjBthL,OAAQshL,EA/CM,OAkDdhM,aAAcgM,EAjDM,OAkDpBmC,gBAAiBnC,EAAqBD,GAEtCsB,YAAarB,EAlDM,GAAK,IAmDxBkB,YAAalB,EAlDM,GAAK,MAkI1B52K,EAASzd,UAAUigB,QAAUwxK,EAAYxxK,QACzCxC,EAASzd,UAAUy2L,WAAahF,EAAYnI,UAC5C7rK,EAASzd,UAAUqnL,SAAW,SAAUnnL,EAAKw6C,GAC3CA,EAAGx6C,EACL,EACAud,EAASzd,UAAU2uL,EAAG+H,wBAA0B,SAAUx2L,GACxD5B,KAAK2hB,QAAQ/f,EACf,EACAud,EAASzd,UAAUozL,GAAsB,WACvC,IAAI3xL,EAKJ,OAJKnD,KAAKoqL,YACRjnL,EAAQnD,KAAKq4L,cAAgB,KAAO,IAAI9R,EACxCvmL,KAAK2hB,QAAQxe,IAER,IAAI0C,GAAQ,CAACC,EAASC,IAAW6gL,EAAI5mL,MAAO4B,GAASA,GAAOA,IAAQuB,EAAQ4C,EAAOnE,GAAOkE,EAAQ,SAC3G,EAMAqZ,EAASzd,UAAU6B,KAAO,SAAU+V,EAAOmB,GACzC,OAAO+7K,EAAiBx2L,KAAMsZ,EAAOmB,GAAU,EACjD,EAGA0E,EAASzd,UAAU+uD,QAAU,SAAUn3C,EAAOmB,GAC5C,OAAO+7K,EAAiBx2L,KAAMsZ,EAAOmB,GAAU,EACjD,EAiFA0E,EAASzd,UAAU42L,SAAW,WAC5B,MAAM13L,EAAQZ,KAAKw4J,eACnB,OAA0B,IAAnB53J,EAAM00L,KAAuC,IAAlB10L,EAAMs1L,OAC1C,EAGA/2K,EAASzd,UAAUsoK,YAAc,SAAUr+B,GACzC,MAAM0qD,EAAU,IAAId,EAAc5pD,GAClC3rI,KAAKw4J,eAAe69B,QAAUA,EAE9Br2L,KAAKw4J,eAAe/9I,SAAWza,KAAKw4J,eAAe69B,QAAQ57K,SAC3D,MAAM3Y,EAAS9B,KAAKw4J,eAAe12J,OAEnC,IAAIk1K,EAAU,GACd,IAAK,MAAMp3J,KAAQ9d,EACjBk1K,GAAWqf,EAAQ1zL,MAAMid,GAK3B,OAHA9d,EAAOuvB,QACS,KAAZ2lJ,GAAgBl1K,EAAOyB,KAAKyzK,GAChCh3K,KAAKw4J,eAAej3J,OAASy1K,EAAQz1K,OAC9BvB,IACT,EAoCAmf,EAASzd,UAAUie,KAAO,SAAU/c,GAClCuiE,EAAM,OAAQviE,QAGJzC,IAANyC,EACFA,EAAIoc,IACM21K,EAAgB/xL,KAC1BA,EAAIgyL,EAAehyL,EAAG,KAExB,MAAMhC,EAAQZ,KAAKw4J,eACb+/B,EAAQ31L,EASd,GANIA,EAAIhC,EAAMmvL,gBAAenvL,EAAMmvL,cA7CrC,SAAiCntL,GAC/B,GAAIA,EAFU,WAGZ,MAAM,IAAI0sG,EAAiB,OAAQ,UAAW1sG,GAYhD,OAREA,IACAA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,KACXA,CAGJ,CA8BqD41L,CAAwB51L,IACjE,IAANA,IAAShC,EAAMA,QAAS,KAMpB,IAANgC,GACAhC,EAAM01L,gBACoB,IAAxB11L,EAAMmvL,cAAsBnvL,EAAMW,QAAUX,EAAMmvL,cAAgBnvL,EAAMW,OAAS,IAAMX,EAAMshB,OAK/F,OAHAijD,EAAM,qBAAsBvkE,EAAMW,OAAQX,EAAMshB,OAC3B,IAAjBthB,EAAMW,QAAgBX,EAAMshB,MAAO61K,GAAY/3L,MAC9C42L,EAAa52L,MACX,KAKT,GAAU,KAHV4C,EAAIs0L,EAAct0L,EAAGhC,KAGNA,EAAMshB,MAEnB,OADqB,IAAjBthB,EAAMW,QAAcw2L,GAAY/3L,MAC7B,KA0BT,IAiCIs1B,EAjCAmjK,KAAU73L,EAAMA,MAAQ+0L,GAY5B,GAXAxwH,EAAM,gBAAiBszH,IAGF,IAAjB73L,EAAMW,QAAgBX,EAAMW,OAASqB,EAAIhC,EAAMmvL,iBACjD0I,GAAS,EACTtzH,EAAM,6BAA8BszH,IAMlC73L,EAAMshB,OAASthB,EAAMqqL,SAAWrqL,EAAMwpL,WAAaxpL,EAAM6oL,UAAY7oL,EAAM4pL,YAC7EiO,GAAS,EACTtzH,EAAM,iCAAkCszH,QACnC,GAAIA,EAAQ,CACjBtzH,EAAM,WACNvkE,EAAMA,OApYO,EAoYa80L,EAEL,IAAjB90L,EAAMW,SAAcX,EAAMA,OAAS+0L,GAGvC,IACE31L,KAAKyf,MAAM7e,EAAMmvL,cACnB,CAAE,MAAOnuL,GACPsoL,EAAelqL,KAAM4B,EACvB,CACAhB,EAAMA,QAAU80L,EAIX90L,EAAMqqL,UAASroL,EAAIs0L,EAAcqB,EAAO33L,GAC/C,CA2BA,OAzBW00B,EAAP1yB,EAAI,EAASk1L,GAASl1L,EAAGhC,GAClB,KACC,OAAR00B,GACF10B,EAAM01L,aAAe11L,EAAMW,QAAUX,EAAMmvL,cAC3CntL,EAAI,IAEJhC,EAAMW,QAAUqB,EACZhC,EAAMs3L,gBACRt3L,EAAMw1L,kBAAkB/kK,QAExBzwB,EAAMw1L,kBAAoB,MAGT,IAAjBx1L,EAAMW,SAGHX,EAAMshB,QAAOthB,EAAM01L,cAAe,GAGnCiC,IAAU31L,GAAKhC,EAAMshB,OAAO61K,GAAY/3L,OAElC,OAARs1B,GAAiB10B,EAAMqpL,cAAiBrpL,EAAMmpL,eAChDnpL,EAAMq2L,aAAc,EACpBj3L,KAAK0D,KAAK,OAAQ4xB,IAEbA,CACT,EAiHAnW,EAASzd,UAAU+d,MAAQ,SAAU7c,GACnC,MAAM,IAAIuyL,EAA2B,UACvC,EACAh2K,EAASzd,UAAUs2D,KAAO,SAAUu4H,EAAMmI,GACxC,MAAMr6J,EAAMr+B,KACNY,EAAQZ,KAAKw4J,eACQ,IAAvB53J,EAAMq1L,MAAM10L,SACTX,EAAMs3L,kBACTt3L,EAAMs3L,iBAAkB,EACxBt3L,EAAMw1L,kBAAoB,IAAIvB,EAAQj0L,EAAMw1L,kBAAoB,CAACx1L,EAAMw1L,mBAAqB,MAGhGx1L,EAAMq1L,MAAM1yL,KAAKgtL,GACjBprH,EAAM,wBAAyBvkE,EAAMq1L,MAAM10L,OAAQm3L,GACnD,MACMlE,EADUkE,IAA6B,IAAjBA,EAASj2L,KAAkB8tL,IAASt4J,EAAQ0gK,QAAUpI,IAASt4J,EAAQ2gK,OACrEzV,EAARiM,EAatB,SAASA,IACPjqH,EAAM,SACNorH,EAAK9tL,KACP,CACA,IAAI8lL,EAhBA3nL,EAAMsqL,WAAYjzJ,EAAQkiJ,SAASqa,GAClCn2J,EAAIo7B,KAAK,MAAO+6H,GACrBjE,EAAKx1K,GAAG,UACR,SAAS89K,EAASj3K,EAAUk3K,GAC1B3zH,EAAM,YACFvjD,IAAayc,GACXy6J,IAAwC,IAA1BA,EAAWC,aAC3BD,EAAWC,YAAa,EAY5B5zH,EAAM,WAENorH,EAAK7xH,eAAe,QAASgqH,GAC7B6H,EAAK7xH,eAAe,SAAU8pH,GAC1BD,GACFgI,EAAK7xH,eAAe,QAAS6pH,GAE/BgI,EAAK7xH,eAAe,QAASrzD,GAC7BklL,EAAK7xH,eAAe,SAAUm6H,GAC9Bx6J,EAAIqgC,eAAe,MAAO0wH,GAC1B/wJ,EAAIqgC,eAAe,MAAOykH,GAC1B9kJ,EAAIqgC,eAAe,OAAQ8xH,GAC3BwI,GAAY,EAORzQ,GAAW3nL,EAAMw1L,qBAAuB7F,EAAKh4B,gBAAkBg4B,EAAKh4B,eAAe0gC,YAAY1Q,IA3BrG,IAMA,IAAIyQ,GAAY,EAuBhB,SAASvI,IAKFuI,IACwB,IAAvBp4L,EAAMq1L,MAAM10L,QAAgBX,EAAMq1L,MAAM,KAAO1F,GACjDprH,EAAM,8BAA+B,GACrCvkE,EAAMw1L,kBAAoB7F,EAC1B3vL,EAAMs3L,iBAAkB,GACft3L,EAAMq1L,MAAM10L,OAAS,GAAKX,EAAMq1L,MAAMj6K,SAASu0K,KACxDprH,EAAM,8BAA+BvkE,EAAMw1L,kBAAkBt2L,MAC7Dc,EAAMw1L,kBAAkB33K,IAAI8xK,IAE9BlyJ,EAAIoyJ,SAEDlI,IAKHA,EAgEN,SAAqBlqJ,EAAKkyJ,GACxB,OAAO,WACL,MAAM3vL,EAAQy9B,EAAIm6H,eAKd53J,EAAMw1L,oBAAsB7F,GAC9BprH,EAAM,cAAe,GACrBvkE,EAAMw1L,kBAAoB,MACjBx1L,EAAMs3L,kBACf/yH,EAAM,cAAevkE,EAAMw1L,kBAAkBt2L,MAC7Cc,EAAMw1L,kBAAkBvlK,OAAO0/J,IAE3B3vL,EAAMw1L,mBAAsD,IAAjCx1L,EAAMw1L,kBAAkBt2L,OAAeu+B,EAAIw0E,cAAc,SACxFx0E,EAAIqyJ,QAER,CACF,CAlFgBwI,CAAY76J,EAAKkyJ,GAC3BA,EAAKx1K,GAAG,QAASwtK,GAErB,CAEA,SAASiI,EAAOl3K,GACd6rD,EAAM,UACN,MAAM7vC,EAAMi7J,EAAK5tL,MAAM2W,GACvB6rD,EAAM,aAAc7vC,IACR,IAARA,GACFm7J,GAEJ,CAIA,SAASplL,EAAQ8nG,GAIf,GAHAhuC,EAAM,UAAWguC,GACjBgwE,IACAoN,EAAK7xH,eAAe,QAASrzD,GACO,IAAhCklL,EAAK19E,cAAc,SAAgB,CACrC,MAAM3tG,EAAIqrL,EAAKh4B,gBAAkBg4B,EAAK/3B,eAClCtzJ,IAAMA,EAAE+kL,aAEVC,EAAeqG,EAAMp9E,GAErBo9E,EAAK7sL,KAAK,QAASyvG,EAEvB,CACF,CAMA,SAASu1E,IACP6H,EAAK7xH,eAAe,SAAU8pH,GAC9BrF,GACF,CAEA,SAASqF,IACPrjH,EAAM,YACNorH,EAAK7xH,eAAe,QAASgqH,GAC7BvF,GACF,CAEA,SAASA,IACPh+G,EAAM,UACN9mC,EAAI8kJ,OAAOoN,EACb,CAaA,OA1DAlyJ,EAAItjB,GAAG,OAAQy1K,GA4Bfl9E,EAAgBi9E,EAAM,QAASllL,GAO/BklL,EAAK92H,KAAK,QAASivH,GAMnB6H,EAAK92H,KAAK,SAAU+uH,GAOpB+H,EAAK7sL,KAAK,OAAQ26B,IAIa,IAA3BkyJ,EAAKjE,kBACPmE,IACU7vL,EAAMs1L,UAChB/wH,EAAM,eACN9mC,EAAIqyJ,UAECH,CACT,EAoBApxK,EAASzd,UAAUyhL,OAAS,SAAUoN,GACpC,MAAM3vL,EAAQZ,KAAKw4J,eAMnB,GAA2B,IAAvB53J,EAAMq1L,MAAM10L,OAAc,OAAOvB,KACrC,IAAKuwL,EAAM,CAET,MAAM4I,EAAQv4L,EAAMq1L,MACpBr1L,EAAMq1L,MAAQ,GACdj2L,KAAKywL,QACL,IAAK,IAAIpvL,EAAI,EAAGA,EAAI83L,EAAM53L,OAAQF,IAChC83L,EAAM93L,GAAGqC,KAAK,SAAU1D,KAAM,CAC5B+4L,YAAY,IAEhB,OAAO/4L,IACT,CAGA,MAAMme,EAAQu2K,EAAsB9zL,EAAMq1L,MAAO1F,GACjD,OAAe,IAAXpyK,IACJvd,EAAMq1L,MAAMnzK,OAAO3E,EAAO,GACC,IAAvBvd,EAAMq1L,MAAM10L,QAAcvB,KAAKywL,QACnCF,EAAK7sL,KAAK,SAAU1D,KAvBD,CACjB+4L,YAAY,KAmBW/4L,IAK3B,EAIAmf,EAASzd,UAAUqZ,GAAK,SAAUq+K,EAAIn/H,GACpC,MAAMl1D,EAAMurL,EAAO5uL,UAAUqZ,GAAGpS,KAAK3I,KAAMo5L,EAAIn/H,GACzCr5D,EAAQZ,KAAKw4J,eAqBnB,MApBW,SAAP4gC,GAGFx4L,EAAM22L,kBAAoBv3L,KAAK6yG,cAAc,YAAc,GAGrC,IAAlBjyG,EAAMs1L,SAAmBl2L,KAAK0wL,UAClB,aAAP0I,IACJx4L,EAAMsqL,YAAetqL,EAAM22L,oBAC9B32L,EAAM22L,kBAAoB32L,EAAM01L,cAAe,EAC/C11L,EAAMs1L,SAAU,EAChBt1L,EAAMi2L,iBAAkB,EACxB1xH,EAAM,cAAevkE,EAAMW,OAAQX,EAAMqqL,SACrCrqL,EAAMW,OACRq1L,EAAa52L,MACHY,EAAMqqL,SAChBhzJ,EAAQkiJ,SAASsd,GAAkBz3L,QAIlC+E,CACT,EACAoa,EAASzd,UAAU2xG,YAAcl0F,EAASzd,UAAUqZ,GACpDoE,EAASzd,UAAUg9D,eAAiB,SAAU06H,EAAIn/H,GAChD,MAAMl1D,EAAMurL,EAAO5uL,UAAUg9D,eAAe/1D,KAAK3I,KAAMo5L,EAAIn/H,GAU3D,MATW,aAAPm/H,GAOFnhK,EAAQkiJ,SAASmd,GAAyBt3L,MAErC+E,CACT,EACAoa,EAASzd,UAAUuZ,IAAMkE,EAASzd,UAAUg9D,eAC5Cv/C,EAASzd,UAAUgyG,mBAAqB,SAAU0lF,GAChD,MAAMr0L,EAAMurL,EAAO5uL,UAAUgyG,mBAAmBntG,MAAMvG,KAAM2iB,WAU5D,MATW,aAAPy2K,QAA4Bj5L,IAAPi5L,GAOvBnhK,EAAQkiJ,SAASmd,GAAyBt3L,MAErC+E,CACT,EAuBAoa,EAASzd,UAAUgvL,OAAS,WAC1B,MAAM9vL,EAAQZ,KAAKw4J,eAUnB,OATK53J,EAAMs1L,UACT/wH,EAAM,UAINvkE,EAAMs1L,SAAWt1L,EAAM22L,kBAM3B,SAAgBn4K,EAAQxe,GACjBA,EAAM42L,kBACT52L,EAAM42L,iBAAkB,EACxBv/J,EAAQkiJ,SAASud,GAASt4K,EAAQxe,GAEtC,CAVI8vL,CAAO1wL,KAAMY,IAEfA,EAAM00L,IAAW,EACVt1L,IACT,EAiBAmf,EAASzd,UAAU+uL,MAAQ,WAQzB,OAPAtrH,EAAM,wBAAyBnlE,KAAKw4J,eAAe09B,UACf,IAAhCl2L,KAAKw4J,eAAe09B,UACtB/wH,EAAM,SACNnlE,KAAKw4J,eAAe09B,SAAU,EAC9Bl2L,KAAK0D,KAAK,UAEZ1D,KAAKw4J,eAAe88B,IAAW,EACxBt1L,IACT,EAUAmf,EAASzd,UAAU24C,KAAO,SAAUj7B,GAClC,IAAIi6K,GAAS,EAMbj6K,EAAOrE,GAAG,QAASzB,KACZtZ,KAAKuD,KAAK+V,IAAU8F,EAAOqxK,QAC9B4I,GAAS,EACTj6K,EAAOqxK,QACT,IAEFrxK,EAAOrE,GAAG,OAAO,KACf/a,KAAKuD,KAAK,KAAI,IAEhB6b,EAAOrE,GAAG,SAAUnZ,IAClBsoL,EAAelqL,KAAM4B,EAAG,IAE1Bwd,EAAOrE,GAAG,SAAS,KACjB/a,KAAK2hB,SAAQ,IAEfvC,EAAOrE,GAAG,WAAW,KACnB/a,KAAK2hB,SAAQ,IAEf3hB,KAAKyf,MAAQ,KACP45K,GAAUj6K,EAAOsxK,SACnB2I,GAAS,EACTj6K,EAAOsxK,SACT,EAIF,MAAM4I,EAAa7N,EAAWrsK,GAC9B,IAAK,IAAItc,EAAI,EAAGA,EAAIw2L,EAAW/3L,OAAQuB,IAAK,CAC1C,MAAMzB,EAAIi4L,EAAWx2L,QACL3C,IAAZH,KAAKqB,IAAyC,mBAAd+d,EAAO/d,KACzCrB,KAAKqB,GAAK+d,EAAO/d,GAAG0gB,KAAK3C,GAE7B,CACA,OAAOpf,IACT,EACAmf,EAASzd,UAAUkuL,GAAuB,WACxC,OAAO+H,GAAsB33L,KAC/B,EACAmf,EAASzd,UAAU4I,SAAW,SAAUxD,GAItC,YAHgB3G,IAAZ2G,GACFgnL,EAAehnL,EAAS,WAEnB6wL,GAAsB33L,KAAM8G,EACrC,EAkEAykL,EAAuBpsK,EAASzd,UAAW,CACzCkgB,SAAU,CACR7P,UAAW,KACX,GAAAzK,GACE,MAAM+yF,EAAIr6F,KAAKw4J,eAKf,SAASn+D,IAAoB,IAAfA,EAAEz4E,UAAuBy4E,EAAE+vF,WAAc/vF,EAAE4vF,cAAiB5vF,EAAE6wF,WAC9E,EACA,GAAAp/K,CAAI42C,GAEE1iD,KAAKw4J,iBACPx4J,KAAKw4J,eAAe52I,WAAa8gC,EAErC,GAEF62I,gBAAiB,CACfxnL,UAAW,KACX1K,YAAY,EACZC,IAAK,WACH,OAAOtH,KAAKw4J,eAAey+B,WAC7B,GAEFuC,gBAAiB,CACfznL,UAAW,KACX1K,YAAY,EACZC,IAAK,WACH,SACmC,IAAjCtH,KAAKw4J,eAAe52I,WACnB5hB,KAAKw4J,eAAe4xB,YAAapqL,KAAKw4J,eAAeixB,SACrDzpL,KAAKw4J,eAAe0yB,WAEzB,GAEFuO,sBAAuB,CACrB1nL,UAAW,KACX1K,YAAY,EACZC,IAAK,WACH,OAAOtH,KAAKw4J,eAAeu3B,aAC7B,GAEF2J,eAAgB,CACd3nL,UAAW,KACX1K,YAAY,EACZC,IAAK,WACH,OAAOtH,KAAKw4J,gBAAkBx4J,KAAKw4J,eAAe12J,MACpD,GAEF63L,gBAAiB,CACf5nL,UAAW,KACX1K,YAAY,EACZC,IAAK,WACH,OAAOtH,KAAKw4J,eAAe09B,OAC7B,EACApqL,IAAK,SAAUlL,GACTZ,KAAKw4J,iBACPx4J,KAAKw4J,eAAe09B,QAAUt1L,EAElC,GAEFg5L,eAAgB,CACd7nL,UAAW,KACX1K,YAAY,EACZ,GAAAC,GACE,OAAOtH,KAAKw4J,eAAej3J,MAC7B,GAEFonL,mBAAoB,CAClB52K,UAAW,KACX1K,YAAY,EACZ,GAAAC,GACE,QAAOtH,KAAKw4J,gBAAiBx4J,KAAKw4J,eAAesJ,UACnD,GAEF+3B,iBAAkB,CAChB9nL,UAAW,KACX1K,YAAY,EACZ,GAAAC,GACE,OAAOtH,KAAKw4J,eAAiBx4J,KAAKw4J,eAAe/9I,SAAW,IAC9D,GAEFgvK,QAAS,CACP13K,UAAW,KACX1K,YAAY,EACZ,GAAAC,GACE,OAAOtH,KAAKw4J,eAAiBx4J,KAAKw4J,eAAeixB,QAAU,IAC7D,GAEFh1K,OAAQ,CACN1C,UAAW,KACX,GAAAzK,GACE,QAAOtH,KAAKw4J,gBAAiBx4J,KAAKw4J,eAAe/jJ,MACnD,GAEF21K,UAAW,CACTr4K,UAAW,KACX1K,YAAY,EACZ,GAAAC,GACE,QAAOtH,KAAKw4J,gBAAiBx4J,KAAKw4J,eAAe4xB,SACnD,EACA,GAAAt+K,CAAI5L,GAGGF,KAAKw4J,iBAMVx4J,KAAKw4J,eAAe4xB,UAAYlqL,EAClC,GAEFm4L,cAAe,CACbtmL,UAAW,KACX1K,YAAY,EACZ,GAAAC,GACE,QAAOtH,KAAKw4J,gBAAiBx4J,KAAKw4J,eAAe0yB,UACnD,KAGJK,EAAuBwJ,EAAcrzL,UAAW,CAE9Co4L,WAAY,CACV/nL,UAAW,KACX,GAAAzK,GACE,OAAOtH,KAAKi2L,MAAM10L,MACpB,GAGF83L,OAAQ,CACNtnL,UAAW,KACX,GAAAzK,GACE,OAAyB,IAAlBtH,KAAKs1L,EACd,EACA,GAAAxpL,CAAI5L,GACFF,KAAKs1L,KAAap1L,CACpB,KAKJif,EAAS46K,UAAYjC,GA8DrB34K,EAAS00D,KAAO,SAAUxY,EAAUo0H,GAClC,OAAO57G,EAAK10D,EAAUk8C,EAAUo0H,EAClC,EAQAtwK,EAASotK,QAAU,SAAUyN,EAAgBlzL,GAC3C,OAAOilL,KAAiBkO,oCAAoCD,EAAgBlzL,EAC9E,EACAqY,EAASutK,MAAQ,SAAUwN,EAAgBpzL,GACzC,OAAOilL,KAAiBoO,oCAAoCD,EAAgBpzL,EAC9E,EACAqY,EAASk7B,KAAO,SAAUhc,EAAKv3B,GAC7B,IAAIk8H,EAAMo3D,EACV,OAAO,IAAIj7K,EAAS,CAClB2iJ,WAI4B,QAHzB9+B,EACsD,QAApDo3D,EAAwB/7J,EAAIsqJ,0BAA0DxoL,IAA1Bi6L,EACzDA,EACA/7J,EAAIyjI,kBAAiC3hK,IAAT6iI,GAC9BA,KAEHl8H,EACH,OAAA6a,CAAQ/f,EAAKwL,GACX+lL,EAAYrL,UAAUzpJ,EAAKz8B,GAC3BwL,EAASxL,EACX,IACCy4C,KAAKhc,EACV,gCCrwCA,MAAM,UAAE8yJ,EAAS,gBAAEwD,GAAoB,EAAQ,QACzC,gBAAE9D,GAAoB,EAAQ,QAC9B,sBAAEzI,GAA0B,eAClC,IAAIiS,EAA4B,MAC5BC,EAAiC,GAIrC,SAASpF,EAAwBpzB,GAC/B,OAAOA,EAAaw4B,EAAiCD,CACvD,CAsBAp2L,EAAOC,QAAU,CACf+wL,iBAdF,SAA0Br0L,EAAOkG,EAASyzL,EAAWvE,GACnD,MAAMwE,EAfR,SAA2B1zL,EAASkvL,EAAUuE,GAC5C,OAAgC,MAAzBzzL,EAAQipL,cAAwBjpL,EAAQipL,cAAgBiG,EAAWlvL,EAAQyzL,GAAa,IACjG,CAacE,CAAkB3zL,EAASkvL,EAAUuE,GACjD,GAAW,MAAPC,EAAa,CACf,IAAK7F,EAAgB6F,IAAQA,EAAM,EAEjC,MAAM,IAAIpS,EADG4N,EAAW,WAAWuE,IAAc,wBACXC,GAExC,OAAOrJ,EAAUqJ,EACnB,CAGA,OAAOtF,EAAwBt0L,EAAMkhK,WACvC,EAGEozB,0BACAwF,wBAxBF,SAAiC54B,EAAY5hK,GAC3C2wL,EAAgB3wL,EAAO,QAAS,GAC5B4hK,EACFw4B,EAAiCp6L,EAEjCm6L,EAA4Bn6L,CAEhC,iCC6CA,MAAM,qBAAEwrL,EAAoB,OAAEniL,GAAW,EAAQ,OACjDtF,EAAOC,QAAU29J,EACjB,MAAM,2BAAEszB,GAA+B,eACjCtN,EAAS,EAAQ,QACjB,iBAAEoN,GAAqB,EAAQ,OACrCvJ,EAAqB7pB,EAAUngK,UAAWmmL,EAAOnmL,WACjDgqL,EAAqB7pB,EAAWgmB,GAChC,MAAM8S,EAAYpxL,EAAO,aACzB,SAASs4J,EAAU/6J,GACjB,KAAM9G,gBAAgB6hK,GAAY,OAAO,IAAIA,EAAU/6J,GAKvD,MAAM2yL,EAAwB3yL,EAAUmuL,EAAiBj1L,KAAM8G,EAAS,yBAAyB,GAAQ,KAC3E,IAA1B2yL,IAIF3yL,EAAU,IACLA,EACHipL,cAAe,KACf0J,wBAKAzN,sBAAuBllL,EAAQklL,uBAAyB,IAG5DnE,EAAOl/K,KAAK3I,KAAM8G,GAKlB9G,KAAKw4J,eAAe2xB,MAAO,EAC3BnqL,KAAK26L,GAAa,KACd7zL,IAC+B,mBAAtBA,EAAQoa,YAA0BlhB,KAAK+hE,WAAaj7D,EAAQoa,WAC1C,mBAAlBpa,EAAQ8zL,QAAsB56L,KAAK6uC,OAAS/nC,EAAQ8zL,QAOjE56L,KAAK+a,GAAG,YAAa8/K,EACvB,CACA,SAASp/K,EAAM2gC,GACc,mBAAhBp8C,KAAK6uC,QAA0B7uC,KAAKoqL,WAmB7CpqL,KAAKuD,KAAK,MACN64C,GACFA,KApBFp8C,KAAK6uC,QAAO,CAACskE,EAAIvzF,KACXuzF,EACE/2D,EACFA,EAAG+2D,GAEHnzG,KAAK2hB,QAAQwxF,IAIL,MAARvzF,GACF5f,KAAKuD,KAAKqc,GAEZ5f,KAAKuD,KAAK,MACN64C,GACFA,IACF,GAQN,CACA,SAASy+I,IACH76L,KAAK4oL,SAAWntK,GAClBA,EAAM9S,KAAK3I,KAEf,CACA6hK,EAAUngK,UAAUknL,OAASntK,EAC7BomJ,EAAUngK,UAAUqgE,WAAa,SAAUzoD,EAAOmB,EAAUrN,GAC1D,MAAM,IAAI+nL,EAA2B,eACvC,EACAtzB,EAAUngK,UAAU42J,OAAS,SAAUh/I,EAAOmB,EAAUrN,GACtD,MAAM6hL,EAASjvL,KAAKw4J,eACdw2B,EAAShvL,KAAKu4J,eACdh3J,EAAS0tL,EAAO1tL,OACtBvB,KAAK+hE,WAAWzoD,EAAOmB,GAAU,CAAC7Y,EAAK8gD,KACjC9gD,EACFwL,EAASxL,IAGA,MAAP8gD,GACF1iD,KAAKuD,KAAKm/C,GAGVssI,EAAO9sK,OAEP3gB,IAAW0tL,EAAO1tL,QAElB0tL,EAAO1tL,OAAS0tL,EAAOc,cAEvB3iL,IAEApN,KAAK26L,GAAavtL,EACpB,GAEJ,EACAy0J,EAAUngK,UAAU+d,MAAQ,WAC1B,GAAIzf,KAAK26L,GAAY,CACnB,MAAMvtL,EAAWpN,KAAK26L,GACtB36L,KAAK26L,GAAa,KAClBvtL,GACF,CACF,gCCjLA,MAAM,oBAAEwiL,EAAmB,eAAExI,EAAc,UAAE0T,GAAc,EAAQ,OAM7D5R,EAAe4R,EAAU,2BACzBC,EAAaD,EAAU,yBACvBE,EAAcF,EAAU,0BACxBG,EAAcH,EAAU,0BACxBI,EAAeJ,EAAU,2BACzBtM,EAAmBsM,EAAU,oCAC7BnU,EAA2BmU,EAAU,4CAC3C,SAASjO,EAAqBhjL,EAAKolF,GAAS,GAC1C,IAAIksG,EACJ,SAEItxL,GACoB,mBAAbA,EAAImuD,MACO,mBAAXnuD,EAAIkR,IACTk0E,IAAgC,mBAAdplF,EAAI4mL,OAA8C,mBAAf5mL,EAAI6mL,SACzD7mL,EAAI0uJ,iBAGkC,KAFU,QAA9C4iC,EAAsBtxL,EAAI2uJ,sBAAoDr4J,IAAxBg7L,OACpDh7L,EACAg7L,EAAoBv5K,WAExB/X,EAAI0uJ,iBAAkB1uJ,EAAI2uJ,eAGlC,CAEA,SAASs0B,EAAqBjjL,GAC5B,IAAIuxL,EACJ,SAEIvxL,GACqB,mBAAdA,EAAIlH,OACO,mBAAXkH,EAAIkR,IACTlR,EAAI2uJ,iBAGkC,KAFU,QAA9C4iC,EAAsBvxL,EAAI0uJ,sBAAoDp4J,IAAxBi7L,OACpDj7L,EACAi7L,EAAoB9yL,UAGhC,CAWA,SAASm+K,EAAa58K,GACpB,OACEA,IACCA,EAAI2uJ,gBACH3uJ,EAAI0uJ,gBACkB,mBAAd1uJ,EAAIlH,OAA0C,mBAAXkH,EAAIkR,IAC1B,mBAAblR,EAAImuD,MAAyC,mBAAXnuD,EAAIkR,GAEpD,CACA,SAASotK,EAAiBt+K,GACxB,SACEA,GACC48K,EAAa58K,IACa,mBAApBA,EAAIwxL,aACc,mBAAlBxxL,EAAI2V,WACW,mBAAf3V,EAAIyxL,OAEf,CACA,SAASpT,EAAiBr+K,GACxB,SAAUA,GAAQ48K,EAAa58K,IAAiC,mBAAlBA,EAAIg/K,WAAiD,mBAAdh/K,EAAI0F,MAC3F,CACA,SAAS04K,EAAkBp+K,GACzB,SAAUA,GAAQ48K,EAAa58K,IAAgC,iBAAjBA,EAAI+X,UAAiD,iBAAjB/X,EAAIvB,SACxF,CAUA,SAAS6gL,EAAY/pK,GACnB,IAAKqnK,EAAarnK,GAAS,OAAO,KAClC,MAAM4vK,EAAS5vK,EAAOm5I,eAChB02B,EAAS7vK,EAAOo5I,eAChB53J,EAAQouL,GAAUC,EACxB,SAAU7vK,EAAOgrK,WAAahrK,EAAO8pK,IAAkBtoL,SAAyCA,EAAMwpL,UACxG,CAGA,SAASmR,EAAgBn8K,GACvB,IAAK0tK,EAAqB1tK,GAAS,OAAO,KAC1C,IAA6B,IAAzBA,EAAOitK,cAAwB,OAAO,EAC1C,MAAM2C,EAAS5vK,EAAOm5I,eACtB,OAAIy2B,UAA2CA,EAAOvF,WAC8B,kBAAxEuF,aAA0C7uL,EAAY6uL,EAAO9sK,OAA6B,KAC/F8sK,EAAO9sK,MAChB,CAuBA,SAASgsK,EAAmB9uK,EAAQ6vE,GAClC,IAAK49F,EAAqBztK,GAAS,OAAO,KAC1C,MAAM6vK,EAAS7vK,EAAOo5I,eACtB,OAAIy2B,UAA2CA,EAAOxF,WACmC,kBAA7EwF,aAA0C9uL,EAAY8uL,EAAO/D,YAAkC,QACjG+D,EAAO/D,aAA0B,IAAXj8F,IAAqC,IAAjBggG,EAAO/sK,OAAoC,IAAlB+sK,EAAO1tL,QACtF,CACA,SAASwmL,EAAW3oK,GAClB,OAAIA,GAAiC,MAAvBA,EAAO47K,GAA6B57K,EAAO47K,GAC8B,kBAA3E57K,aAA0Cjf,EAAYif,EAAOwC,UAAgC,MACrGunK,EAAY/pK,IACTytK,EAAqBztK,IAAWA,EAAOwC,WAAassK,EAAmB9uK,EAChF,CACA,SAAS4oK,EAAW5oK,GAClB,OAAIA,GAAiC,MAAvBA,EAAO67K,GAA6B77K,EAAO67K,GAC8B,kBAA3E77K,aAA0Cjf,EAAYif,EAAO9W,UAAgC,MACrG6gL,EAAY/pK,IACT0tK,EAAqB1tK,IAAWA,EAAO9W,WAAaizL,EAAgBn8K,EAC7E,CAqEA,SAASo8K,EAAkBp8K,GACzB,MAC4B,kBAAnBA,EAAO1K,SACsB,kBAA7B0K,EAAOq8K,mBACuB,kBAA9Br8K,EAAOs8K,oBACoB,kBAA3Bt8K,EAAOu8K,eAElB,CACA,SAASC,EAAiBx8K,GACxB,MAAkC,kBAApBA,EAAOy8K,UAA0BL,EAAkBp8K,EACnE,CAqEAnb,EAAOC,QAAU,CACfilL,cACAD,eACA4S,YArDF,SAAqB18K,GACnB,IAAI28K,EACJ,SACE38K,KACmD,QAAjD28K,EAAuB38K,EAAO87K,UAAoD/6L,IAAzB47L,EACvDA,EACA38K,EAAOm6K,iBAAmBn6K,EAAOo6K,iBAEzC,EA8CE0B,eACAc,UA9CF,SAAmB58K,GACjB,IAAI4jH,EACFE,EACAjT,EACA8T,EACAE,EACAg4D,EACAC,EACAC,EACAC,EACAC,EACF,SACEj9K,KAsB0C,QArBxC4jH,EAiB+C,QAhB9CE,EAYgD,QAX9CjT,EAOmC,QANjC8T,EAImC,QAHjCE,EAC+C,QAA7Cg4D,EAAqB78K,EAAO27K,UAAgD56L,IAAvB87L,EAClDA,EACA78K,EAAOk9K,uBAAuCn8L,IAAV8jI,EACtCA,EACA7kH,EAAOm9K,uBAAuCp8L,IAAV4jI,EACtCA,EACqD,QAApDm4D,EAAyB98K,EAAOo5I,sBAAuDr4J,IAA3B+7L,OAC7D/7L,EACA+7L,EAAuBjS,oBAAoC9pL,IAAV8vH,EACnDA,EACqD,QAApDksE,EAAyB/8K,EAAOm5I,sBAAuDp4J,IAA3Bg8L,OAC7Dh8L,EACAg8L,EAAuBlS,oBAAoC9pL,IAAV+iI,EACnDA,EACqD,QAApDk5D,EAAyBh9K,EAAOo5I,sBAAuDr4J,IAA3Bi8L,OAC7Dj8L,EACAi8L,EAAuB3S,eAA8BtpL,IAAT6iI,EAC9CA,EACqD,QAApDq5D,EAAyBj9K,EAAOm5I,sBAAuDp4J,IAA3Bk8L,OAC7Dl8L,EACAk8L,EAAuB5S,SAE/B,EAOEsR,aACAhT,aACAiT,cACAxM,mBACA7H,2BACAsU,cACAhN,SAlHF,SAAkB7uK,GAChB,IAAKqnK,EAAarnK,GAChB,OAAO,KAET,GAA6B,kBAAlBA,EAAO3K,OAChB,OAAO2K,EAAO3K,OAEhB,MAAMu6K,EAAS5vK,EAAOm5I,eAChB02B,EAAS7vK,EAAOo5I,eACtB,MACmF,kBAAzEw2B,aAA0C7uL,EAAY6uL,EAAOv6K,SACY,kBAAzEw6K,aAA0C9uL,EAAY8uL,EAAOx6K,SAGlEu6K,aAA0C7uL,EAAY6uL,EAAOv6K,UAC7Dw6K,aAA0C9uL,EAAY8uL,EAAOx6K,QAGpC,kBAAnB2K,EAAO1K,SAAyB8mL,EAAkBp8K,GACpDA,EAAO1K,QAET,IACT,EA6FEq4K,mBApQF,SAA4BljL,GAC1B,SACEA,GACoB,mBAAbA,EAAImuD,OACXnuD,EAAI2uJ,gBACc,mBAAX3uJ,EAAIkR,IACU,mBAAdlR,EAAIlH,MAEf,EA6PEymL,WAjKF,SAAoBhqK,EAAQqwK,GAC1B,OAAKhJ,EAAarnK,MAGd+pK,EAAY/pK,MAG0D,KAArEqwK,aAAsCtvL,EAAYsvL,EAAK7tK,WAAuBmmK,EAAW3oK,KAGpB,KAArEqwK,aAAsCtvL,EAAYsvL,EAAKnnL,WAAuB0/K,EAAW5oK,KARrF,IAYX,EAoJEqxI,WAlOF,SAAoB5mJ,EAAKimL,GACvB,OAAW,MAAPjmL,KACY,IAAZimL,EAA6D,mBAA7BjmL,EAAI+lL,IACxB,IAAZE,EAAyD,mBAAxBjmL,EAAIu9K,GACE,mBAA7Bv9K,EAAI+lL,IAAsE,mBAAxB/lL,EAAIu9K,GACtE,EA8NEyF,uBACA1E,mBACAqU,gBAlMF,SAAyBp9K,GACvB,IAAKytK,EAAqBztK,GAAS,OAAO,KAC1C,IAA6B,IAAzBA,EAAOi5K,cAAwB,OAAO,EAC1C,MAAMpJ,EAAS7vK,EAAOo5I,eACtB,SAAKy2B,GAAUA,EAAOxF,WAC8D,kBAAxEwF,aAA0C9uL,EAAY8uL,EAAO/sK,OAA6B,KAC/F+sK,EAAO/sK,MAChB,EA4LEgsK,qBACAC,kBAzIF,SAA2B/uK,GACzB,IAAIq9K,EAAuBC,EAC3B,OAAKjW,EAAarnK,GAGdA,EAAOk9K,gBACFl9K,EAAOk9K,gBAK0B,QAHlCG,EAC+C,QAApDC,EAAyBt9K,EAAOo5I,sBAAuDr4J,IAA3Bu8L,OACzDv8L,EACAu8L,EAAuBjT,eAA+CtpL,IAA1Bs8L,EAC9CA,EACA,KAVK,IAWX,EA4HEhW,eACAC,YA5OF,SAAqB78K,GACnB,OAAOs+K,EAAiBt+K,IAAQq+K,EAAiBr+K,IAAQo+K,EAAkBp+K,EAC7E,EA2OEm+K,aACA8E,uBACA5E,mBACAqT,kBACAnN,mBArNF,SAA4BhvK,EAAQ6vE,GAClC,IAAK69F,EAAqB1tK,GAAS,OAAO,KAC1C,IAAgC,IAA5BA,EAAO+sK,iBAA2B,OAAO,EAC7C,MAAM6C,EAAS5vK,EAAOm5I,eACtB,OAAIy2B,UAA2CA,EAAOvF,WACiC,kBAA3EuF,aAA0C7uL,EAAY6uL,EAAO1D,UAAgC,QAC/F0D,EAAO1D,WAAwB,IAAXr8F,IAAqC,IAAjB+/F,EAAO9sK,OAAoC,IAAlB8sK,EAAOztL,QACpF,EA+ME8sL,kBAhKF,SAA2BjvK,GACzB,IAAIu9K,EAAuBC,EAC3B,OAAKnW,EAAarnK,GAGdA,EAAOm9K,gBACFn9K,EAAOm9K,gBAK0B,QAHlCI,EAC+C,QAApDC,EAAyBx9K,EAAOm5I,sBAAuDp4J,IAA3By8L,OACzDz8L,EACAy8L,EAAuBnT,eAA+CtpL,IAA1Bw8L,EAC9CA,EACA,KAVK,IAWX,EAmJEtT,gBAjGF,SAAyBjqK,GACvB,IAAIy9K,EACJ,MAC+B,kBAAtBz9K,EAAO09K,YACY,kBAAnB19K,EAAO29K,cAEZ58L,KAD8B,QAA9B08L,EAAcz9K,EAAO2rK,WAAiC5qL,IAAhB08L,OAA4B18L,EAAY08L,EAAYG,iBAGhG,EA0FEpB,mBACAtN,cA1FF,SAAuBlvK,GACrB,IAAKqnK,EAAarnK,GAAS,OAAO,KAClC,MAAM4vK,EAAS5vK,EAAOm5I,eAChB02B,EAAS7vK,EAAOo5I,eAChB53J,EAAQouL,GAAUC,EACxB,OACIruL,GAASg7L,EAAiBx8K,OAAexe,GAASA,EAAMypL,aAAezpL,EAAMopL,YAA8B,IAAjBppL,EAAM6T,OAEtG,EAmFEwzK,sCCrUF,MAAMhwJ,EAAU,EAAQ,QA6BlB,oBACJglK,EAAmB,MACnBl7L,EAAK,mCACLm7L,EAAkC,qBAClCC,EAAoB,uBACpB5R,EAAsB,qBACtBG,EAAoB,2BACpB0R,EAA0B,OAC1B7zL,EAAM,kBACN8zL,GACE,EAAQ,OACZp5L,EAAOC,QAAUynL,EACjBA,EAAS2R,cAAgBA,EACzB,MAAQvsF,aAAcs/E,GAAO,EAAQ,OAC/BC,EAAS,iBACT,OAAEvzL,GAAW,EAAQ,MACrBo2L,EAAc,EAAQ,QACtB,eAAErM,GAAmB,EAAQ,QAC7B,iBAAEmO,EAAgB,wBAAEC,GAA4B,EAAQ,QACxD,qBACJ1lF,EAAoB,2BACpB2lF,EAA0B,sBAC1BlM,EAAqB,uBACrBsU,EAAsB,qBACtBnK,EAAoB,4BACpBoK,EAA2B,uBAC3B3N,EAAsB,2BACtB4N,EAA0B,qBAC1BC,GACE,gBACE,eAAExT,GAAmBiJ,EAG3B,SAAS1E,IAAO,CAFhB/C,EAAqBC,EAASjqL,UAAW4uL,EAAO5uL,WAChDgqL,EAAqBC,EAAU2E,GAE/B,MAAMqN,EAAcp0L,EAAO,eAC3B,SAAS+zL,EAAcx2L,EAASsY,EAAQ42K,GAMd,kBAAbA,IAAwBA,EAAW52K,aAAkB,EAAQ,QAIxEpf,KAAK8hK,cAAgBh7J,IAAWA,EAAQg7J,YACpCk0B,IAAUh2L,KAAK8hK,WAAa9hK,KAAK8hK,eAAiBh7J,IAAWA,EAAQiyK,qBAKzE/4K,KAAK+vL,cAAgBjpL,EACjBmuL,EAAiBj1L,KAAM8G,EAAS,wBAAyBkvL,GACzDd,GAAwB,GAG5Bl1L,KAAKmrL,aAAc,EAGnBnrL,KAAKi5L,WAAY,EAEjBj5L,KAAKqrL,QAAS,EAEdrrL,KAAKkiB,OAAQ,EAEbliB,KAAKsrL,UAAW,EAGhBtrL,KAAKoqL,WAAY,EAKjB,MAAMwT,KAAc92L,IAAqC,IAA1BA,EAAQ+xK,eACvC74K,KAAK64K,eAAiB+kB,EAKtB59L,KAAKm2L,gBAAmBrvL,GAAWA,EAAQqvL,iBAAoB,OAK/Dn2L,KAAKuB,OAAS,EAGdvB,KAAKqzL,SAAU,EAGfrzL,KAAK69L,OAAS,EAMd79L,KAAKmqL,MAAO,EAKZnqL,KAAK89L,kBAAmB,EAGxB99L,KAAK+9L,QAAUA,EAAQh8K,UAAK5hB,EAAWif,GAGvCpf,KAAKg+L,QAAU,KAGfh+L,KAAKi+L,SAAW,EAIhBj+L,KAAKk+L,mBAAqB,KAC1BC,EAAYn+L,MAIZA,KAAKo+L,UAAY,EAMjBp+L,KAAKwqL,aAAc,EAInBxqL,KAAKorL,aAAc,EAGnBprL,KAAKiqL,cAAe,EAGpBjqL,KAAKgqL,WAAaljL,IAAiC,IAAtBA,EAAQkjL,UAGrChqL,KAAKqqL,aAAevjL,IAAmC,IAAxBA,EAAQujL,YAKvCrqL,KAAKypL,QAAU,KAGfzpL,KAAKyU,QAAS,EAIdzU,KAAK+pL,cAAe,EACpB/pL,KAAK29L,GAAe,EACtB,CACA,SAASQ,EAAYv9L,GACnBA,EAAMy9L,SAAW,GACjBz9L,EAAM09L,cAAgB,EACtB19L,EAAM29L,YAAa,EACnB39L,EAAM49L,SAAU,CAClB,CAUA,SAAS7S,EAAS7kL,GAWhB,MAAMkvL,EAAWh2L,gBAAgB,EAAQ,OACzC,IAAKg2L,IAAakH,EAAmCvR,EAAU3rL,MAAO,OAAO,IAAI2rL,EAAS7kL,GAC1F9G,KAAKu4J,eAAiB,IAAI+kC,EAAcx2L,EAAS9G,KAAMg2L,GACnDlvL,IAC2B,mBAAlBA,EAAQnE,QAAsB3C,KAAKs4J,OAASxxJ,EAAQnE,OACjC,mBAAnBmE,EAAQ23L,SAAuBz+L,KAAK0+L,QAAU53L,EAAQ23L,QAClC,mBAApB33L,EAAQ6a,UAAwB3hB,KAAK+oL,SAAWjiL,EAAQ6a,SACtC,mBAAlB7a,EAAQ2U,QAAsBzb,KAAK4oL,OAAS9hL,EAAQ2U,OAC9B,mBAAtB3U,EAAQ+0B,YAA0B77B,KAAKmuH,WAAarnH,EAAQ+0B,WACnE/0B,EAAQ+G,QAAQi5K,EAAehgL,EAAQ+G,OAAQ7N,OAErDswL,EAAO3nL,KAAK3I,KAAM8G,GAClBqsL,EAAYt3J,UAAU77B,MAAM,KAC1B,MAAMY,EAAQZ,KAAKu4J,eACd33J,EAAMyyL,SACTsL,EAAY3+L,KAAMY,GAEpBg+L,EAAY5+L,KAAMY,EAAK,GAE3B,CAcA,SAAS03J,EAAOl5I,EAAQ9F,EAAOmB,EAAU2hC,GACvC,MAAMx7C,EAAQwe,EAAOm5I,eACrB,GAAwB,mBAAb99I,EACT2hC,EAAK3hC,EACLA,EAAW7Z,EAAMu1L,oBACZ,CACL,GAAK17K,GACA,GAAiB,WAAbA,IAA0B1d,EAAOqoG,WAAW3qF,GAAW,MAAM,IAAIijL,EAAqBjjL,QADhFA,EAAW7Z,EAAMu1L,gBAEd,mBAAP/5I,IAAmBA,EAAKqyI,EACrC,CACA,GAAc,OAAVn1K,EACF,MAAM,IAAIu2K,EACL,IAAKjvL,EAAMkhK,WAChB,GAAqB,iBAAVxoJ,GACmB,IAAxB1Y,EAAMi4K,gBACRv/J,EAAQvc,EAAO82E,KAAKv6D,EAAOmB,GAC3BA,EAAW,eAER,GAAInB,aAAiBvc,EAC1B0d,EAAW,aACN,KAAI61K,EAAOoG,cAAcp9K,GAI9B,MAAM,IAAIk2F,EAAqB,QAAS,CAAC,SAAU,SAAU,cAAel2F,GAH5EA,EAAQg3K,EAAOqG,oBAAoBr9K,GACnCmB,EAAW,QAGb,CAEF,IAAI7Y,EAMJ,OALIhB,EAAMyqL,OACRzpL,EAAM,IAAI67L,EACD78L,EAAMwpL,YACfxoL,EAAM,IAAIwxL,EAAqB,UAE7BxxL,GACFq2B,EAAQkiJ,SAAS/9H,EAAIx6C,GACrBsoL,EAAe9qK,EAAQxd,GAAK,GACrBA,IAEThB,EAAMw9L,YA2BR,SAAuBh/K,EAAQxe,EAAO0Y,EAAOmB,EAAUrN,GACrD,MAAM0rF,EAAMl4F,EAAMkhK,WAAa,EAAIxoJ,EAAM/X,OACzCX,EAAMW,QAAUu3F,EAGhB,MAAMxjE,EAAM10B,EAAMW,OAASX,EAAMmvL,cA0BjC,OAxBKz6J,IAAK10B,EAAMq4L,WAAY,GACxBr4L,EAAMyyL,SAAWzyL,EAAMi9L,QAAUj9L,EAAM6oL,UAAY7oL,EAAM4pL,aAC3D5pL,EAAMy9L,SAAS96L,KAAK,CAClB+V,QACAmB,WACArN,aAEExM,EAAM29L,YAA2B,WAAb9jL,IACtB7Z,EAAM29L,YAAa,GAEjB39L,EAAM49L,SAAWpxL,IAAaqhL,IAChC7tL,EAAM49L,SAAU,KAGlB59L,EAAMq9L,SAAWnlG,EACjBl4F,EAAMo9L,QAAU5wL,EAChBxM,EAAMyyL,SAAU,EAChBzyL,EAAMupL,MAAO,EACb/qK,EAAOk5I,OAAOh/I,EAAOmB,EAAU7Z,EAAMm9L,SACrCn9L,EAAMupL,MAAO,GAKR70J,IAAQ10B,EAAM6oL,UAAY7oL,EAAMwpL,SACzC,CA1DSyU,CAAcz/K,EAAQxe,EAAO0Y,EAAOmB,EAAU2hC,GACvD,CA0DA,SAAS0iJ,EAAQ1/K,EAAQxe,EAAO69L,EAAQ3lG,EAAKx/E,EAAOmB,EAAU2hC,GAC5Dx7C,EAAMq9L,SAAWnlG,EACjBl4F,EAAMo9L,QAAU5hJ,EAChBx7C,EAAMyyL,SAAU,EAChBzyL,EAAMupL,MAAO,EACTvpL,EAAMwpL,UAAWxpL,EAAMm9L,QAAQ,IAAI3K,EAAqB,UACnDqL,EAAQr/K,EAAOs/K,QAAQplL,EAAO1Y,EAAMm9L,SACxC3+K,EAAOk5I,OAAOh/I,EAAOmB,EAAU7Z,EAAMm9L,SAC1Cn9L,EAAMupL,MAAO,CACf,CACA,SAAS4U,EAAa3/K,EAAQxe,EAAOuyG,EAAI/2D,KACrCx7C,EAAMw9L,UACRhiJ,EAAG+2D,GAKH6rF,EAAYp+L,GAEZspL,EAAe9qK,EAAQ+zF,EACzB,CACA,SAAS4qF,EAAQ3+K,EAAQ+zF,GACvB,MAAMvyG,EAAQwe,EAAOm5I,eACf4xB,EAAOvpL,EAAMupL,KACb/tI,EAAKx7C,EAAMo9L,QACC,mBAAP5hJ,GAIXx7C,EAAMyyL,SAAU,EAChBzyL,EAAMo9L,QAAU,KAChBp9L,EAAMW,QAAUX,EAAMq9L,SACtBr9L,EAAMq9L,SAAW,EACb9qF,GAEFA,EAAGxyG,MAEEC,EAAM6oL,UACT7oL,EAAM6oL,QAAUt2E,GAKd/zF,EAAOo5I,iBAAmBp5I,EAAOo5I,eAAeixB,UAClDrqK,EAAOo5I,eAAeixB,QAAUt2E,GAE9Bg3E,EACFlyJ,EAAQkiJ,SAAS4kB,EAAc3/K,EAAQxe,EAAOuyG,EAAI/2D,GAElD2iJ,EAAa3/K,EAAQxe,EAAOuyG,EAAI/2D,KAG9Bx7C,EAAMy9L,SAAS98L,OAASX,EAAM09L,eAChCK,EAAYv/K,EAAQxe,GAElBupL,EAK+B,OAA7BvpL,EAAMs9L,oBAA+Bt9L,EAAMs9L,mBAAmB9hJ,KAAOA,EACvEx7C,EAAMs9L,mBAAmBhxK,SAEzBtsB,EAAMs9L,mBAAqB,CACzBhxK,MAAO,EACPkvB,KACAh9B,SACAxe,SAEFq3B,EAAQkiJ,SAAS8kB,EAAgBr+L,EAAMs9L,qBAGzCgB,EAAW9/K,EAAQxe,EAAO,EAAGw7C,KA9C/B8tI,EAAe9qK,EAAQ,IAAI6pK,EAiD/B,CACA,SAASgW,GAAe,OAAE7/K,EAAM,MAAExe,EAAK,MAAEssB,EAAK,GAAEkvB,IAE9C,OADAx7C,EAAMs9L,mBAAqB,KACpBgB,EAAW9/K,EAAQxe,EAAOssB,EAAOkvB,EAC1C,CACA,SAAS8iJ,EAAW9/K,EAAQxe,EAAOssB,EAAOkvB,GAMxC,KALmBx7C,EAAMyqL,SAAWjsK,EAAOgrK,WAA8B,IAAjBxpL,EAAMW,QAAgBX,EAAMq4L,YAElFr4L,EAAMq4L,WAAY,EAClB75K,EAAO1b,KAAK,UAEPwpB,KAAU,GACftsB,EAAMw9L,YACNhiJ,IAEEx7C,EAAMwpL,WACR4U,EAAYp+L,GAEdg+L,EAAYx/K,EAAQxe,EACtB,CAGA,SAASo+L,EAAYp+L,GACnB,GAAIA,EAAMyyL,QACR,OAEF,IAAK,IAAIzwL,EAAIhC,EAAM09L,cAAe17L,EAAIhC,EAAMy9L,SAAS98L,SAAUqB,EAAG,CAChE,IAAIu8L,EACJ,MAAM,MAAE7lL,EAAK,SAAElM,GAAaxM,EAAMy9L,SAASz7L,GACrCk2F,EAAMl4F,EAAMkhK,WAAa,EAAIxoJ,EAAM/X,OACzCX,EAAMW,QAAUu3F,EAChB1rF,EACuC,QAApC+xL,EAAiBv+L,EAAM6oL,eAAwCtpL,IAAnBg/L,EACzCA,EACA,IAAI/L,EAAqB,SAEjC,CACA,MAAMgM,EAAoBx+L,EAAM+8L,GAAa76K,OAAO,GACpD,IAAK,IAAIzhB,EAAI,EAAGA,EAAI+9L,EAAkB79L,OAAQF,IAAK,CACjD,IAAIg+L,EACJD,EAAkB/9L,GACsB,QAArCg+L,EAAkBz+L,EAAM6oL,eAAyCtpL,IAApBk/L,EAC1CA,EACA,IAAIjM,EAAqB,OAEjC,CACA+K,EAAYv9L,EACd,CAGA,SAAS+9L,EAAYv/K,EAAQxe,GAC3B,GAAIA,EAAMi9L,QAAUj9L,EAAMk9L,kBAAoBl9L,EAAMwpL,YAAcxpL,EAAM4pL,YACtE,OAEF,MAAM,SAAE6T,EAAQ,cAAEC,EAAa,WAAEx8B,GAAelhK,EAC1C0+L,EAAiBjB,EAAS98L,OAAS+8L,EACzC,IAAKgB,EACH,OAEF,IAAIj+L,EAAIi9L,EAER,GADA19L,EAAMk9L,kBAAmB,EACrBwB,EAAiB,GAAKlgL,EAAOs/K,QAAS,CACxC99L,EAAMw9L,WAAakB,EAAiB,EACpC,MAAMlyL,EAAWxM,EAAM49L,QACnB/P,EACC7sL,IACC,IAAK,IAAIgB,EAAIvB,EAAGuB,EAAIy7L,EAAS98L,SAAUqB,EACrCy7L,EAASz7L,GAAGwK,SAASxL,EACvB,EAIA29L,EAAS3+L,EAAM49L,SAAiB,IAANn9L,EAAUg9L,EAAWpB,EAAoBoB,EAAUh9L,GACnFk+L,EAAOhB,WAAa39L,EAAM29L,WAC1BO,EAAQ1/K,EAAQxe,GAAO,EAAMA,EAAMW,OAAQg+L,EAAQ,GAAInyL,GACvD+wL,EAAYv9L,EACd,KAAO,CACL,EAAG,CACD,MAAM,MAAE0Y,EAAK,SAAEmB,EAAQ,SAAErN,GAAaixL,EAASh9L,GAC/Cg9L,EAASh9L,KAAO,KAEhBy9L,EAAQ1/K,EAAQxe,GAAO,EADXkhK,EAAa,EAAIxoJ,EAAM/X,OACA+X,EAAOmB,EAAUrN,EACtD,OAAS/L,EAAIg9L,EAAS98L,SAAWX,EAAMyyL,SACnChyL,IAAMg9L,EAAS98L,OACjB48L,EAAYv9L,GACHS,EAAI,KACbg9L,EAASv7K,OAAO,EAAGzhB,GACnBT,EAAM09L,cAAgB,GAEtB19L,EAAM09L,cAAgBj9L,CAE1B,CACAT,EAAMk9L,kBAAmB,CAC3B,CAkEA,SAAS0B,EAAW5+L,GAClB,OACEA,EAAMyqL,SACLzqL,EAAMwpL,WACPxpL,EAAM4pL,aACW,IAAjB5pL,EAAMW,SACLX,EAAM6oL,SACmB,IAA1B7oL,EAAMy9L,SAAS98L,SACdX,EAAM0qL,WACN1qL,EAAMyyL,UACNzyL,EAAMqpL,eACNrpL,EAAMmpL,YAEX,CA8CA,SAAS6U,EAAYx/K,EAAQxe,EAAOupL,GAC9BqV,EAAW5+L,KAZjB,SAAmBwe,EAAQxe,GACpBA,EAAMwqL,aAAgBxqL,EAAMuqL,cACF,mBAAlB/rK,EAAOwpK,QAA0BhoL,EAAMwpL,WAIhDxpL,EAAMwqL,aAAc,EACpBhsK,EAAO1b,KAAK,eAJZ9C,EAAMuqL,aAAc,EArC1B,SAAmB/rK,EAAQxe,GACzB,IAAI8oL,GAAS,EACb,SAAS+V,EAAS79L,GAChB,GAAI8nL,EACFQ,EAAe9qK,EAAQxd,QAAoCA,EAAMqnL,UAKnE,GAFAS,GAAS,EACT9oL,EAAMw9L,YACFx8L,EAAK,CACP,MAAMw9L,EAAoBx+L,EAAM+8L,GAAa76K,OAAO,GACpD,IAAK,IAAIzhB,EAAI,EAAGA,EAAI+9L,EAAkB79L,OAAQF,IAC5C+9L,EAAkB/9L,GAAGO,GAEvBsoL,EAAe9qK,EAAQxd,EAAKhB,EAAMupL,KACpC,MAAWqV,EAAW5+L,KACpBA,EAAMwqL,aAAc,EACpBhsK,EAAO1b,KAAK,aAIZ9C,EAAMw9L,YACNnmK,EAAQkiJ,SAASsZ,EAAQr0K,EAAQxe,GAErC,CACAA,EAAMupL,MAAO,EACbvpL,EAAMw9L,YACN,IACEh/K,EAAOwpK,OAAO6W,EAChB,CAAE,MAAO79L,GACP69L,EAAS79L,EACX,CACAhB,EAAMupL,MAAO,CACf,CAKMuV,CAAUtgL,EAAQxe,IAMxB,CAGIi6L,CAAUz7K,EAAQxe,GACM,IAApBA,EAAMw9L,YACJjU,GACFvpL,EAAMw9L,YACNnmK,EAAQkiJ,UACN,CAAC/6J,EAAQxe,KACH4+L,EAAW5+L,GACb6yL,EAAOr0K,EAAQxe,GAEfA,EAAMw9L,WACR,GAEFh/K,EACAxe,IAEO4+L,EAAW5+L,KACpBA,EAAMw9L,YACN3K,EAAOr0K,EAAQxe,KAIvB,CACA,SAAS6yL,EAAOr0K,EAAQxe,GACtBA,EAAMw9L,YACNx9L,EAAM0qL,UAAW,EACjB,MAAM8T,EAAoBx+L,EAAM+8L,GAAa76K,OAAO,GACpD,IAAK,IAAIzhB,EAAI,EAAGA,EAAI+9L,EAAkB79L,OAAQF,IAC5C+9L,EAAkB/9L,KAGpB,GADA+d,EAAO1b,KAAK,UACR9C,EAAMypL,YAAa,CAGrB,MAAM4E,EAAS7vK,EAAOo5I,iBAEnBy2B,GACAA,EAAO5E,cAGL4E,EAAO/D,aAAkC,IAApB+D,EAAOrtK,YAE/BxC,EAAOuC,SAEX,CACF,CA1eA27K,EAAc57L,UAAUi+L,UAAY,WAClC,OAAO1C,EAAoBj9L,KAAKq+L,SAAUr+L,KAAKs+L,cACjD,EACAnB,EAAqBG,EAAc57L,UAAW,uBAAwB,CACpEqQ,UAAW,KACX,GAAAzK,GACE,OAAOtH,KAAKq+L,SAAS98L,OAASvB,KAAKs+L,aACrC,IAiCFnB,EAAqBxR,EAAU0R,EAAmB,CAChDtrL,UAAW,KACX7R,MAAO,SAAU8qB,GACf,QAAIkyK,EAAmCl9L,KAAMgrB,IACzChrB,OAAS2rL,GACN3gK,GAAUA,EAAOutI,0BAA0B+kC,CACpD,IAIF3R,EAASjqL,UAAUs2D,KAAO,WACxBkyH,EAAelqL,KAAM,IAAIu9L,EAC3B,EA0CA5R,EAASjqL,UAAUiB,MAAQ,SAAU2W,EAAOmB,EAAU2hC,GACpD,OAA6C,IAAtCk8G,EAAOt4J,KAAMsZ,EAAOmB,EAAU2hC,EACvC,EACAuvI,EAASjqL,UAAUk+L,KAAO,WACxB5/L,KAAKu4J,eAAeslC,QACtB,EACAlS,EAASjqL,UAAUm+L,OAAS,WAC1B,MAAMj/L,EAAQZ,KAAKu4J,eACf33J,EAAMi9L,SACRj9L,EAAMi9L,SACDj9L,EAAMyyL,SAASsL,EAAY3+L,KAAMY,GAE1C,EACA+qL,EAASjqL,UAAUo+L,mBAAqB,SAA4BrlL,GAGlE,GADwB,iBAAbA,IAAuBA,EAAW2iL,EAA2B3iL,KACnE1d,EAAOqoG,WAAW3qF,GAAW,MAAM,IAAIijL,EAAqBjjL,GAEjE,OADAza,KAAKu4J,eAAe49B,gBAAkB17K,EAC/Bza,IACT,EA+MA2rL,EAASjqL,UAAU42J,OAAS,SAAUh/I,EAAOmB,EAAU2hC,GACrD,IAAIp8C,KAAK0+L,QAWP,MAAM,IAAIvJ,EAA2B,YAVrCn1L,KAAK0+L,QACH,CACE,CACEplL,QACAmB,aAGJ2hC,EAKN,EACAuvI,EAASjqL,UAAUg9L,QAAU,KAC7B/S,EAASjqL,UAAUe,IAAM,SAAU6W,EAAOmB,EAAU2hC,GAClD,MAAMx7C,EAAQZ,KAAKu4J,eASnB,IAAI32J,EACJ,GATqB,mBAAV0X,GACT8iC,EAAK9iC,EACLA,EAAQ,KACRmB,EAAW,MACkB,mBAAbA,IAChB2hC,EAAK3hC,EACLA,EAAW,MAGTnB,QAAuC,CACzC,MAAMgc,EAAMgjI,EAAOt4J,KAAMsZ,EAAOmB,GAC5B6a,aAAevzB,IACjBH,EAAM0zB,EAEV,CA+BA,OA5BI10B,EAAMi9L,SACRj9L,EAAMi9L,OAAS,EACf79L,KAAK6/L,UAEHj+L,IAEQhB,EAAM6oL,SAAY7oL,EAAMyqL,OAUzBzqL,EAAM0qL,SACf1pL,EAAM,IAAI47L,EAA4B,OAC7B58L,EAAMwpL,YACfxoL,EAAM,IAAIwxL,EAAqB,SAN/BxyL,EAAMyqL,QAAS,EACfuT,EAAY5+L,KAAMY,GAAO,GACzBA,EAAMshB,OAAQ,IAME,mBAAPk6B,IACLx6C,GAAOhB,EAAM0qL,SACfrzJ,EAAQkiJ,SAAS/9H,EAAIx6C,GAErBhB,EAAM+8L,GAAap6L,KAAK64C,IAGrBp8C,IACT,EA2GAurL,EAAuBI,EAASjqL,UAAW,CACzC+S,OAAQ,CACN1C,UAAW,KACX,GAAAzK,GACE,QAAOtH,KAAKu4J,gBAAiBv4J,KAAKu4J,eAAe9jJ,MACnD,GAEF21K,UAAW,CACTr4K,UAAW,KACX,GAAAzK,GACE,QAAOtH,KAAKu4J,gBAAiBv4J,KAAKu4J,eAAe6xB,SACnD,EACA,GAAAt+K,CAAI5L,GAEEF,KAAKu4J,iBACPv4J,KAAKu4J,eAAe6xB,UAAYlqL,EAEpC,GAEFoI,SAAU,CACRyJ,UAAW,KACX,GAAAzK,GACE,MAAM4qG,EAAIlyG,KAAKu4J,eAKf,SAASrmD,IAAoB,IAAfA,EAAE5pG,UAAuB4pG,EAAEk4E,WAAcl4E,EAAEu3E,SAAYv3E,EAAEm5E,QAAWn5E,EAAEhwF,MACtF,EACA,GAAApW,CAAI42C,GAEE1iD,KAAKu4J,iBACPv4J,KAAKu4J,eAAejwJ,WAAao6C,EAErC,GAEFypI,iBAAkB,CAChBp6K,UAAW,KACX,GAAAzK,GACE,QAAOtH,KAAKu4J,gBAAiBv4J,KAAKu4J,eAAe+yB,QACnD,GAEFvS,mBAAoB,CAClBhnK,UAAW,KACX,GAAAzK,GACE,QAAOtH,KAAKu4J,gBAAiBv4J,KAAKu4J,eAAeuJ,UACnD,GAEFmqB,eAAgB,CACdl6K,UAAW,KACX,GAAAzK,GACE,OAAOtH,KAAKu4J,gBAAkBv4J,KAAKu4J,eAAeonC,WACpD,GAEFtT,cAAe,CACbt6K,UAAW,KACX,GAAAzK,GACE,QAAOtH,KAAKu4J,gBAAiBv4J,KAAKu4J,eAAe8yB,MACnD,GAEFiB,kBAAmB,CACjBv6K,UAAW,KACX,GAAAzK,GACE,MAAM0nL,EAAShvL,KAAKu4J,eACpB,QAAKy2B,IACGA,EAAO5E,YAAc4E,EAAO3D,QAAU2D,EAAOiK,SACvD,GAEFjN,sBAAuB,CACrBj6K,UAAW,KACX,GAAAzK,GACE,OAAOtH,KAAKu4J,gBAAkBv4J,KAAKu4J,eAAew3B,aACpD,GAEF3D,eAAgB,CACdr6K,UAAW,KACX,GAAAzK,GACE,OAAOtH,KAAKu4J,eAAiBv4J,KAAKu4J,eAAeslC,OAAS,CAC5D,GAEF3R,eAAgB,CACdn6K,UAAW,KACX,GAAAzK,GACE,OAAOtH,KAAKu4J,gBAAkBv4J,KAAKu4J,eAAeh3J,MACpD,GAEFkoL,QAAS,CACP13K,UAAW,KACX1K,YAAY,EACZ,GAAAC,GACE,OAAOtH,KAAKu4J,eAAiBv4J,KAAKu4J,eAAekxB,QAAU,IAC7D,GAEFsW,gBAAiB,CACfhuL,UAAW,KACX1K,YAAY,EACZC,IAAK,WACH,SACmC,IAAjCtH,KAAKu4J,eAAejwJ,WACnBtI,KAAKu4J,eAAe6xB,YAAapqL,KAAKu4J,eAAekxB,SACrDzpL,KAAKu4J,eAAe+yB,SAEzB,KAGJ,MAAM3pK,EAAUwxK,EAAYxxK,QAkB5B,IAAIkqK,EAGJ,SAASE,IAEP,YAD2B5rL,IAAvB0rL,IAAkCA,EAAqB,CAAC,GACrDA,CACT,CAvBAF,EAASjqL,UAAUigB,QAAU,SAAU/f,EAAKw6C,GAC1C,MAAMx7C,EAAQZ,KAAKu4J,eAOnB,OAJK33J,EAAMwpL,YAAcxpL,EAAM09L,cAAgB19L,EAAMy9L,SAAS98L,QAAUX,EAAM+8L,GAAap8L,SACzF02B,EAAQkiJ,SAAS6kB,EAAap+L,GAEhC+gB,EAAQhZ,KAAK3I,KAAM4B,EAAKw6C,GACjBp8C,IACT,EACA2rL,EAASjqL,UAAUy2L,WAAahF,EAAYnI,UAC5CW,EAASjqL,UAAUqnL,SAAW,SAAUnnL,EAAKw6C,GAC3CA,EAAGx6C,EACL,EACA+pL,EAASjqL,UAAU2uL,EAAG+H,wBAA0B,SAAUx2L,GACxD5B,KAAK2hB,QAAQ/f,EACf,EAQA+pL,EAASY,QAAU,SAAUyT,EAAgBl5L,GAC3C,OAAOilL,IAAiBkU,oCAAoCD,EAAgBl5L,EAC9E,EACA6kL,EAASe,MAAQ,SAAUwT,GACzB,OAAOnU,IAAiBoU,oCAAoCD,EAC9D,gCC5yBA,MAAM,aACJ9P,EAAY,uBACZgQ,EAAsB,mBACtBC,EAAkB,kBAClBC,EAAiB,gBACjB3L,EAAe,YACf7jF,EAAW,uBACXyvF,EAAsB,uBACtBC,EAAsB,eACtB5L,EAAc,8BACd6L,EAA6B,oBAC7BC,EAAmB,OACnBx+L,EAAM,2BACNy+L,EAA0B,oBAC1BC,GACE,EAAQ,QACN,gBACJC,EACAra,OAAO,oBAAEsa,EAAmB,qBAAEtxF,EAAoB,sBAAE44E,EAAqB,iBAAE94E,EAAgB,mBAAEyxF,IAC3F,EAAQ,QACN,kBAAEC,GAAsB,EAAQ,QAChC,gBAAEC,EAAe,kBAAEv3L,GAAsB,eACzCw3L,EAAU,CAAC,EAiBXC,EAAW,WAsCXtQ,EAAkBgQ,GAAgB,CAAC3gM,EAAO8J,EAAMuoC,EAAMiuJ,EAAwB57L,EAAM27L,KACxF,GAAqB,iBAAVrgM,EAAoB,MAAM,IAAIsvG,EAAqBxlG,EAAM,SAAU9J,GAC9E,IAAKy0L,EAAgBz0L,GAAQ,MAAM,IAAIovG,EAAiBtlG,EAAM,aAAc9J,GAC5E,GAAIA,EAAQqyC,GAAOryC,EAAQ0E,EAAK,MAAM,IAAI0qG,EAAiBtlG,EAAM,MAAMuoC,WAAa3tC,IAAO1E,EAAK,IAa5FkhM,EAAgBP,GAAgB,CAAC3gM,EAAO8J,EAAMuoC,GAAM,WAAa3tC,EAAM,cAE3E,GAAqB,iBAAV1E,EACT,MAAM,IAAIsvG,EAAqBxlG,EAAM,SAAU9J,GAEjD,IAAKy0L,EAAgBz0L,GACnB,MAAM,IAAIovG,EAAiBtlG,EAAM,aAAc9J,GAEjD,GAAIA,EAAQqyC,GAAOryC,EAAQ0E,EACzB,MAAM,IAAI0qG,EAAiBtlG,EAAM,MAAMuoC,WAAa3tC,IAAO1E,EAC7D,IAYImhM,EAAiBR,GAAgB,CAAC3gM,EAAO8J,EAAMs3L,GAAW,KAC9D,GAAqB,iBAAVphM,EACT,MAAM,IAAIsvG,EAAqBxlG,EAAM,SAAU9J,GAEjD,IAAKy0L,EAAgBz0L,GACnB,MAAM,IAAIovG,EAAiBtlG,EAAM,aAAc9J,GAEjD,MAAMqyC,EAAM+uJ,EAAW,EAAI,EAErB18L,EAAM,WACZ,GAAI1E,EAAQqyC,GAAOryC,EAAQ0E,EACzB,MAAM,IAAI0qG,EAAiBtlG,EAAM,MAAMuoC,WAAa3tC,IAAO1E,EAC7D,IAWF,SAASqhM,EAAerhM,EAAO8J,GAC7B,GAAqB,iBAAV9J,EAAoB,MAAM,IAAIsvG,EAAqBxlG,EAAM,SAAU9J,EAChF,CAoCA,MAAMshM,EAAgBX,GAAgB,CAAC3gM,EAAO8J,EAAMy3L,KAClD,IAAKrB,EAAuBqB,EAAOvhM,GAAQ,CACzC,MAAMwhM,EAAUrB,EACdC,EAAkBmB,GAAQn/I,GAAoB,iBAANA,EAAiB,IAAIA,KAAOpgD,EAAOogD,KAC3E,MAGF,MAAM,IAAI8lI,EAAsBp+K,EAAM9J,EADvB,mBAAqBwhM,EAEtC,KAWF,SAAS3T,EAAgB7tL,EAAO8J,GAC9B,GAAqB,kBAAV9J,EAAqB,MAAM,IAAIsvG,EAAqBxlG,EAAM,UAAW9J,EAClF,CAQA,SAASyhM,EAA6B76L,EAASrG,EAAK+2F,GAClD,OAAkB,MAAX1wF,GAAoB25L,EAA8B35L,EAASrG,GAAsBqG,EAAQrG,GAAvB+2F,CAC3E,CAcA,MAAMs2F,EAAiB+S,GAAgB,CAAC3gM,EAAO8J,EAAMlD,EAAU,QAC7D,MAAM86L,EAAaD,EAA6B76L,EAAS,cAAc,GACjE+6L,EAAgBF,EAA6B76L,EAAS,iBAAiB,GAE7E,IADiB66L,EAA6B76L,EAAS,YAAY,IAEzC,OAAV5G,IACZ0hM,GAAcxR,EAAalwL,IACX,iBAAVA,KAAwB2hM,GAAkC,mBAAV3hM,GAExD,MAAM,IAAIsvG,EAAqBxlG,EAAM,SAAU9J,EACjD,IAeI4hM,EAAqBjB,GAAgB,CAAC3gM,EAAO8J,KACjD,GAAa,MAAT9J,GAAkC,iBAAVA,GAAuC,mBAAVA,EACvD,MAAM,IAAIsvG,EAAqBxlG,EAAM,eAAgB9J,EACvD,IAYI6hM,EAAgBlB,GAAgB,CAAC3gM,EAAO8J,EAAMg4L,EAAY,KAC9D,IAAK5R,EAAalwL,GAChB,MAAM,IAAIsvG,EAAqBxlG,EAAM,QAAS9J,GAEhD,GAAIA,EAAMqB,OAASygM,EAEjB,MAAM,IAAI5Z,EAAsBp+K,EAAM9J,EADvB,uBAAuB8hM,IAExC,IA4EIC,EAAiBpB,GAAgB,CAAC/+L,EAAQkI,EAAO,YACrD,IAAKN,EAAkB5H,GACrB,MAAM,IAAI0tG,EAAqBxlG,EAAM,CAAC,SAAU,aAAc,YAAalI,EAC7E,IA2CIilL,EAAsB8Z,GAAgB,CAAChzL,EAAQ7D,KACnD,QAAe7J,IAAX0N,IAAoC,OAAXA,GAAqC,iBAAXA,KAAyB,YAAaA,IAC3F,MAAM,IAAI2hG,EAAqBxlG,EAAM,cAAe6D,EACtD,IAWIggL,EAAmBgT,GAAgB,CAAC3gM,EAAO8J,KAC/C,GAAqB,mBAAV9J,EAAsB,MAAM,IAAIsvG,EAAqBxlG,EAAM,WAAY9J,EAAK,IAWnFgiM,EAAwBrB,GAAgB,CAAC3gM,EAAO8J,KACpD,GAAqB,mBAAV9J,GAAwB+gM,EAAgB/gM,GAAQ,MAAM,IAAIsvG,EAAqBxlG,EAAM,WAAY9J,EAAK,IAW7GiiM,EAAoBtB,GAAgB,CAAC3gM,EAAO8J,KAChD,QAAc7J,IAAVD,EAAqB,MAAM,IAAIsvG,EAAqBxlG,EAAM,YAAa9J,EAAK,IAuB5EkiM,EAAkB,wDAMxB,SAASC,EAAyBniM,EAAO8J,GACvC,QAAqB,IAAV9J,IAA0BwgM,EAAoB0B,EAAiBliM,GACxE,MAAM,IAAIkoL,EACRp+K,EACA9J,EACA,8EAGN,CAgCA+D,EAAOC,QAAU,CACfo+L,QAvdF,SAAiBpiM,GACf,OAAOA,KAAmB,EAARA,EACpB,EAsdEqiM,SAhdF,SAAkBriM,GAChB,OAAOA,IAAUA,IAAU,CAC7B,EA+cEsiM,cAhcF,SAAuBtiM,EAAO8J,EAAMu4G,GAIlC,QAHqB,IAAVriH,IACTA,EAAQqiH,GAEW,iBAAVriH,EAAoB,CAC7B,GAA6C,OAAzCwgM,EAAoBS,EAAUjhM,GAChC,MAAM,IAAIkoL,EAAsBp+K,EAAM9J,EAnB3B,wDAqBbA,EAAQ00L,EAAe10L,EAAO,EAChC,CAEA,OADAmhM,EAAenhM,EAAO8J,GACf9J,CACT,EAqbE6hM,gBACAU,oBAhOF,SAA6BviM,EAAO8J,GAClC+3L,EAAc7hM,EAAO8J,GACrB,IAAK,IAAI3I,EAAI,EAAGA,EAAInB,EAAMqB,OAAQF,IAChCkgM,EAAerhM,EAAMmB,GAAI,GAAG2I,KAAQ3I,KAExC,EA4NEqhM,qBAlNF,SAA8BxiM,EAAO8J,GACnC+3L,EAAc7hM,EAAO8J,GACrB,IAAK,IAAI3I,EAAI,EAAGA,EAAInB,EAAMqB,OAAQF,IAChC0sL,EAAgB7tL,EAAMmB,GAAI,GAAG2I,KAAQ3I,KAEzC,EA8MEshM,yBApMF,SAAkCziM,EAAO8J,GACvC+3L,EAAc7hM,EAAO8J,GACrB,IAAK,IAAI3I,EAAI,EAAGA,EAAInB,EAAMqB,OAAQF,IAAK,CACrC,MAAMwM,EAAS3N,EAAMmB,GACfuhM,EAAc,GAAG54L,KAAQ3I,KAC/B,GAAc,MAAVwM,EACF,MAAM,IAAI2hG,EAAqBozF,EAAa,cAAe/0L,GAE7Dk5K,EAAoBl5K,EAAQ+0L,EAC9B,CACF,EA2LE7U,kBACAkU,iBACAH,qBACAe,iBA3JF,SAA0BjjL,EAAMnF,GAC9B,MAAMqoL,EAAqB9B,EAAkBvmL,GACvClZ,EAASqe,EAAKre,OACpB,GAA2B,QAAvBuhM,GAAgCvhM,EAAS,GAAM,EACjD,MAAM,IAAI6mL,EAAsB,WAAY3tK,EAAU,iCAAiClZ,IAE3F,EAsJEssL,mBACAuT,gBACAvQ,kBACA3kF,eAzWF,SAAwBhsG,EAAO8J,EAAMuoC,OAAMpyC,EAAWyE,GACpD,GAAqB,iBAAV1E,EAAoB,MAAM,IAAIsvG,EAAqBxlG,EAAM,SAAU9J,GAC9E,GACU,MAAPqyC,GAAeryC,EAAQqyC,GAChB,MAAP3tC,GAAe1E,EAAQ0E,IACf,MAAP2tC,GAAsB,MAAP3tC,IAAgBksG,EAAY5wG,GAE7C,MAAM,IAAIovG,EACRtlG,EACA,GAAU,MAAPuoC,EAAc,MAAMA,IAAQ,KAAY,MAAPA,GAAsB,MAAP3tC,EAAc,OAAS,KAAY,MAAPA,EAAc,MAAMA,IAAQ,KAC3G1E,EAGN,EA6VE4tL,iBACA0T,gBACAU,wBACAa,aAnJF,SAAsBC,EAAMh5L,EAAO,OAAQi5L,GAAY,GACrD,GACmB,iBAATD,GAAqC,iBAATA,GACnB,iBAATA,GAA0D,IAArCpC,EAAoBoC,GAAMzhM,SACtDyhM,IAAUA,IAAS,GACpBA,EAAO,OACG,IAATA,IAAeC,EAEhB,MAAM,IAAInC,EAAoB92L,EAAMg5L,EAAMC,GAE5C,OAAc,EAAPD,CACT,EAyIEE,mBAhMF,SAA4Br1L,EAAQ7D,EAAO,UAEzC,GADAu3L,EAAe1zL,EAAQ7D,QACC7J,IAApB+gM,EAAQrzL,GAAuB,CACjC,QAAoD1N,IAAhD+gM,EAAQP,EAA2B9yL,IACrC,MAAM,IAAIkzL,EAAmBlzL,EAAS,2CAExC,MAAM,IAAIkzL,EAAmBlzL,EAC/B,CACF,EAyLE0zL,iBACAF,iBACAc,oBACAgB,cApFF,SAAuBjjM,EAAO8J,EAAMo4C,GAClC,IAAKg+I,EAAuBh+I,EAAOliD,GACjC,MAAM,IAAIsvG,EAAqBxlG,EAAM,KAAKq2L,EAAmBj+I,EAAO,SAAUliD,EAElF,EAiFE6mL,sBACAqc,wBApDF,SAAiCC,GAC/B,GAAqB,iBAAVA,EAET,OADAhB,EAAyBgB,EAAO,SACzBA,EACF,GAAIjT,EAAaiT,GAAQ,CAC9B,MAAMC,EAAcD,EAAM9hM,OAC1B,IAAIsC,EAAS,GACb,GAAoB,IAAhBy/L,EACF,OAAOz/L,EAET,IAAK,IAAIxC,EAAI,EAAGA,EAAIiiM,EAAajiM,IAAK,CACpC,MAAM4kD,EAAOo9I,EAAMhiM,GACnBghM,EAAyBp8I,EAAM,SAC/BpiD,GAAUoiD,EACN5kD,IAAMiiM,EAAc,IACtBz/L,GAAU,KAEd,CACA,OAAOA,CACT,CACA,MAAM,IAAIukL,EACR,QACAib,EACA,8EAEJ,iCCnfA,MAAME,EAAe,EAAQ,OACvBltG,EAAW,EAAQ,MACnBmtG,EAAkBD,EAAapkL,SAASwC,QAC9C1d,EAAOC,QAAUq/L,EAAapkL,SAG9Blb,EAAOC,QAAQyyL,oBAAsB4M,EAAa5M,oBAClD1yL,EAAOC,QAAQwyL,cAAgB6M,EAAa7M,cAC5CzyL,EAAOC,QAAQ43L,YAAcyH,EAAazH,YAC1C73L,EAAOC,QAAQ83L,UAAYuH,EAAavH,UACxC/3L,EAAOC,QAAQ6jL,WAAawb,EAAaxb,WACzC9jL,EAAOC,QAAQib,SAAWokL,EAAapkL,SACvClb,EAAOC,QAAQynL,SAAW4X,EAAa5X,SACvC1nL,EAAOC,QAAQ2jL,OAAS0b,EAAa1b,OACrC5jL,EAAOC,QAAQ29J,UAAY0hC,EAAa1hC,UACxC59J,EAAOC,QAAQ89J,YAAcuhC,EAAavhC,YAC1C/9J,EAAOC,QAAQ4iL,eAAiByc,EAAazc,eAC7C7iL,EAAOC,QAAQonL,SAAWiY,EAAajY,SACvCrnL,EAAOC,QAAQyd,QAAU4hL,EAAa5hL,QACtC1d,EAAOC,QAAQyd,QAAU6hL,EACzBv/L,EAAOC,QAAQ0jL,SAAW2b,EAAa3b,SACvC3jL,EAAOC,QAAQyuL,QAAU4Q,EAAa5Q,QACtCvxL,OAAO+C,eAAeo/L,EAAc,WAAY,CAC9Ch7L,cAAc,EACdlB,YAAY,EACZC,IAAG,IACM+uF,IAGXpyF,EAAOC,QAAQosL,OAASiT,EAAajT,OAGrCrsL,EAAOC,QAAP,QAAyBD,EAAOC,sCChChC,MAAM,OAAEk0D,EAAM,QAAE0xC,EAAS25F,eAAgBC,GAAyB,EAAQ,OAWpED,EAAiBvrK,WAAWurK,gBAAkBC,EAC9CC,EAAep6L,OAAO,gBACtBq6L,EAAS,CACb,SACA,WACA,SACA,SAEA,WACA,SACA,UACA,SACA,UAEIC,EAAc,sBAEdrd,EAAQ,CAAC,EACf,SAASv7C,EAAO/qI,EAAO6O,GACrB,IAAK7O,EACH,MAAM,IAAIsmL,EAAMsd,uBAAuB/0L,EAE3C,CAGA,SAASsgG,EAAsB3sD,GAC7B,IAAI39C,EAAM,GACN1D,EAAIqhD,EAAInhD,OACZ,MAAMiB,EAAmB,MAAXkgD,EAAI,GAAa,EAAI,EACnC,KAAOrhD,GAAKmB,EAAQ,EAAGnB,GAAK,EAC1B0D,EAAM,IAAI29C,EAAIl+C,MAAMnD,EAAI,EAAGA,KAAK0D,IAElC,MAAO,GAAG29C,EAAIl+C,MAAM,EAAGnD,KAAK0D,GAC9B,CAoBA,SAAS2jE,EAAExnE,EAAM6N,EAASqgG,GACnBA,IACHA,EAAOrtG,OAET,MAAMgiM,UAAkB30F,EACtB,WAAApgG,IAAevK,GACb4a,MAzBN,SAAoB5e,EAAK0a,EAAK1W,GAC5B,GAAmB,mBAAR0W,EAMT,OALA8vH,EACE9vH,EAAI5Z,QAAUkD,EAAKlD,OAEnB,SAASd,qCAAuCgE,EAAKlD,6CAA6C4Z,EAAI5Z,YAEjG4Z,KAAO1W,GAEhB,MAAMu/L,GAAkB7oL,EAAInX,MAAM,gBAAkB,IAAIzC,OAKxD,OAJA0pI,EACE+4D,IAAmBv/L,EAAKlD,OACxB,SAASd,qCAAuCgE,EAAKlD,6CAA6CyiM,OAEhF,IAAhBv/L,EAAKlD,OACA4Z,EAEFi9C,EAAOj9C,KAAQ1W,EACxB,CAOY0qG,CAAWjuG,EAAM6N,EAAStK,GAClC,CACA,QAAAjD,GACE,MAAO,GAAGxB,KAAKgK,SAAS9I,OAAUlB,KAAK+O,SACzC,EAEF3N,OAAOovH,iBAAiBuzE,EAAUriM,UAAW,CAC3CsI,KAAM,CACJ9J,MAAOkvG,EAAKplG,KACZ1B,UAAU,EACVjB,YAAY,EACZkB,cAAc,GAEhB/G,SAAU,CACR,KAAAtB,GACE,MAAO,GAAGF,KAAKgK,SAAS9I,OAAUlB,KAAK+O,SACzC,EACAzG,UAAU,EACVjB,YAAY,EACZkB,cAAc,KAGlBw7L,EAAUriM,UAAUR,KAAOA,EAC3B6iM,EAAUriM,UAAUiiM,IAAgB,EACpCnd,EAAMtlL,GAAQ6iM,CAChB,CACA,SAASlD,EAAgB5mI,GAGvB,MAAMgqI,EAxEmB,mBAwEWhqI,EAAGjwD,KAIvC,OAHA5I,OAAO+C,eAAe81D,EAAI,OAAQ,CAChC/5D,MAAO+jM,IAEFhqI,CACT,CAcA,MAAMssH,UAAmBxkL,MACvB,WAAAiN,CAAYD,EAAU,4BAA6BjI,OAAU3G,GAC3D,QAAgBA,IAAZ2G,GAA4C,iBAAZA,EAClC,MAAM,IAAI0/K,EAAMh3E,qBAAqB,UAAW,SAAU1oG,GAE5DuY,MAAMtQ,EAASjI,GACf9G,KAAKkB,KAAO,YACZlB,KAAKgK,KAAO,YACd,EAEF0+D,EAAE,gBAAiB,KAAM3mE,OACzB2mE,EACE,wBACA,CAAC1+D,EAAMk6L,EAAU7+F,KACf4lC,EAAuB,iBAATjhI,EAAmB,2BAC5BW,MAAMC,QAAQs5L,KACjBA,EAAW,CAACA,IAEd,IAAI/oL,EAAM,OACNnR,EAAKzF,SAAS,aAEhB4W,GAAO,GAAGnR,KAEVmR,GAAO,IAAInR,MAASA,EAAKgS,SAAS,KAAO,WAAa,cAExDb,GAAO,WACP,MAAM0T,EAAQ,GACRs1K,EAAY,GACZjqI,EAAQ,GACd,IAAK,MAAMh6D,KAASgkM,EAClBj5D,EAAwB,iBAAV/qI,EAAoB,kDAC9B0jM,EAAO5nL,SAAS9b,GAClB2uB,EAAMtrB,KAAKrD,EAAMoF,eACRu+L,EAAY55L,KAAK/J,GAC1BikM,EAAU5gM,KAAKrD,IAEf+qI,EAAiB,WAAV/qI,EAAoB,oDAC3Bg6D,EAAM32D,KAAKrD,IAMf,GAAIikM,EAAU5iM,OAAS,EAAG,CACxB,MAAMmoG,EAAM76E,EAAM/kB,QAAQ,WACb,IAAT4/F,IACF76E,EAAM/L,OAAO+L,EAAO66E,EAAK,GACzBy6F,EAAU5gM,KAAK,UAEnB,CACA,GAAIsrB,EAAMttB,OAAS,EAAG,CACpB,OAAQstB,EAAMttB,QACZ,KAAK,EACH4Z,GAAO,WAAW0T,EAAM,KACxB,MACF,KAAK,EACH1T,GAAO,eAAe0T,EAAM,SAASA,EAAM,KAC3C,MACF,QAAS,CACP,MAAMs9E,EAAOt9E,EAAMrrB,MACnB2X,GAAO,eAAe0T,EAAMxpB,KAAK,aAAa8mG,GAChD,GAEEg4F,EAAU5iM,OAAS,GAAK24D,EAAM34D,OAAS,KACzC4Z,GAAO,OAEX,CACA,GAAIgpL,EAAU5iM,OAAS,EAAG,CACxB,OAAQ4iM,EAAU5iM,QAChB,KAAK,EACH4Z,GAAO,kBAAkBgpL,EAAU,KACnC,MACF,KAAK,EACHhpL,GAAO,kBAAkBgpL,EAAU,SAASA,EAAU,KACtD,MACF,QAAS,CACP,MAAMh4F,EAAOg4F,EAAU3gM,MACvB2X,GAAO,kBAAkBgpL,EAAU9+L,KAAK,aAAa8mG,GACvD,EAEEjyC,EAAM34D,OAAS,IACjB4Z,GAAO,OAEX,CACA,OAAQ++C,EAAM34D,QACZ,KAAK,EACH,MACF,KAAK,EACC24D,EAAM,GAAG50D,gBAAkB40D,EAAM,KACnC/+C,GAAO,OAETA,GAAO,GAAG++C,EAAM,KAChB,MACF,KAAK,EACH/+C,GAAO,UAAU++C,EAAM,SAASA,EAAM,KACtC,MACF,QAAS,CACP,MAAMiyC,EAAOjyC,EAAM12D,MACnB2X,GAAO,UAAU++C,EAAM70D,KAAK,aAAa8mG,GAC3C,EAEF,GAAc,MAAV9G,EACFlqF,GAAO,cAAckqF,SAChB,GAAsB,mBAAXA,GAAyBA,EAAOr7F,KAChDmR,GAAO,uBAAuBkqF,EAAOr7F,YAChC,GAAsB,iBAAXq7F,EAAqB,CACrC,IAAI++F,EAE6C,QAA9CA,EAAsB/+F,EAAOr2F,mBACN7O,IAAxBikM,GACAA,EAAoBp6L,KAEpBmR,GAAO,6BAA6BkqF,EAAOr2F,YAAYhF,OAKvDmR,GAAO,cAHW2uF,EAAQzE,EAAQ,CAChChsB,OAAQ,KAId,KAAO,CACL,IAAIgrH,EAAYv6F,EAAQzE,EAAQ,CAC9Bi/F,QAAQ,IAEND,EAAU9iM,OAAS,KACrB8iM,EAAY,GAAGA,EAAU7/L,MAAM,EAAG,UAEpC2W,GAAO,0BAA0BkqF,MAAWg/F,IAC9C,CACA,OAAOlpL,IAETjR,WAEFw+D,EACE,yBACA,CAAC1+D,EAAM9J,EAAOq7K,EAAS,gBACrB,IAAI8oB,EAAYv6F,EAAQ5pG,GAKxB,OAJImkM,EAAU9iM,OAAS,MACrB8iM,EAAYA,EAAU7/L,MAAM,EAAG,KAAO,OAGjC,OADMwF,EAAKgS,SAAS,KAAO,WAAa,eACxBhS,MAASuxK,eAAoB8oB,GAAS,GAE/Dn6L,WAEFw+D,EACE,4BACA,CAACj7D,EAAOzD,EAAM9J,KACZ,IAAIqkM,EASJ,MAAO,YAAY92L,8BAAkCzD,uBAPnD9J,SAE6C,QAA5CqkM,EAAqBrkM,EAAM8O,mBACL7O,IAAvBokM,GACAA,EAAmBv6L,KACf,eAAe9J,EAAM8O,YAAYhF,OACjC,eAAe9J,IACmE,GAE1FgK,WAEFw+D,EACE,oBACA,IAAIjkE,KAEF,IAAI0W,EADJ8vH,EAAOxmI,EAAKlD,OAAS,EAAG,0CAExB,MAAMu3F,EAAMr0F,EAAKlD,OAEjB,OADAkD,GAAQkG,MAAMC,QAAQnG,GAAQA,EAAO,CAACA,IAAOU,KAAKo9C,GAAM,IAAIA,OAAMl9C,KAAK,QAC/DyzF,GACN,KAAK,EACH39E,GAAO,OAAO1W,EAAK,cACnB,MACF,KAAK,EACH0W,GAAO,OAAO1W,EAAK,UAAUA,EAAK,eAClC,MACF,QACE,CACE,MAAM0nG,EAAO1nG,EAAKjB,MAClB2X,GAAO,OAAO1W,EAAKY,KAAK,cAAc8mG,aACxC,EAGJ,MAAO,GAAGhxF,qBAAG,GAEfjR,WAEFw+D,EACE,oBACA,CAACrkE,EAAK49E,EAAOx0E,KAEX,IAAIiiG,EAYJ,OAbAu7B,EAAOhpD,EAAO,4BAEVn+E,OAAO89F,UAAUn0F,IAAU9I,KAAK49E,IAAI90E,GAAS,GAAK,GACpDiiG,EAAWL,EAAsBntG,OAAOuL,IACd,iBAAVA,GAChBiiG,EAAWxtG,OAAOuL,IACdA,EAAQ,IAAM,KAAOA,IAAU,IAAM,QACvCiiG,EAAWL,EAAsBK,IAEnCA,GAAY,KAEZA,EAAW5F,EAAQr8F,GAEd,iBAAiBpJ,kCAAoC49E,eAAmBytB,GAAQ,GAEzF7gG,YAEF65D,EAAE,wBAAyB,iCAAkC3mE,OAC7D2mE,EAAE,6BAA8B,mCAAoC3mE,OACpE2mE,EAAE,8BAA+B,6CAA8C3mE,OAC/E2mE,EAAE,yBAA0B,4BAA6B3mE,OACzD2mE,EAAE,uBAAwB,8CAA+C3mE,OACzE2mE,EAAE,yBAA0B,sCAAuCx+D,WACnEw+D,EAAE,6BAA8B,kBAAmB3mE,OACnD2mE,EAAE,4BAA6B,0BAA2B3mE,OAC1D2mE,EAAE,qCAAsC,mCAAoC3mE,OAC5E2mE,EAAE,6BAA8B,kBAAmB3mE,OACnD2mE,EAAE,uBAAwB,uBAAwBx+D,WAClDjG,EAAOC,QAAU,CACfqiL,aACAyC,mBAAoB6X,GAvOtB,SAA4B2D,EAAYC,GACtC,GAAID,GAAcC,GAAcD,IAAeC,EAAY,CACzD,GAAI95L,MAAMC,QAAQ65L,EAAWx9G,QAG3B,OADAw9G,EAAWx9G,OAAO1jF,KAAKihM,GAChBC,EAET,MAAM7iM,EAAM,IAAI6hM,EAAe,CAACgB,EAAYD,GAAaC,EAAW11L,SAEpE,OADAnN,EAAIV,KAAOujM,EAAWvjM,KACfU,CACT,CACA,OAAO4iM,GAAcC,CACvB,IA4NE5D,kBACAra,iCC1UFviL,EAAOC,QAAU,CACfksL,aAAalnL,GACJyB,MAAMC,QAAQ1B,GAEvBk3L,uBAAsB,CAACl3L,EAAM43D,IACpB53D,EAAK8S,SAAS8kD,GAEvB4zH,sBAAqB,CAACxrL,EAAM43D,IACnB53D,EAAKY,QAAQg3D,GAEtBu/H,mBAAkB,CAACn3L,EAAMw7L,IAChBx7L,EAAK7D,KAAKq/L,GAEnBpE,kBAAiB,CAACp3L,EAAM+wD,IACf/wD,EAAK/D,IAAI80D,GAElB0qI,kBAAiB,CAACz7L,EAAM43D,IACf53D,EAAK1F,IAAIs9D,GAElBowH,mBAAkB,CAAChoL,EAAM43D,IAChB53D,EAAK3F,KAAKu9D,GAEnBm8H,oBAAmB,CAAC/zL,EAAM1G,EAAOC,IACxByG,EAAK1E,MAAMhC,EAAOC,GAE3BV,MACAorL,sBAAqB,CAAClzH,EAAI2qI,KAAangM,IAC9Bw1D,EAAGtxD,KAAKi8L,KAAangM,GAE9By4L,mCAAkC,CAACh0L,EAAMslH,IAChCpe,SAAS1uG,UAAU6H,OAAOs7L,aAAal8L,KAAKO,EAAMslH,GAE3D2iE,UAAWxsL,KAAKk+E,MAChB/+E,OACA6wL,gBAAiB7wL,OAAO89F,UACxBkP,YAAahtG,OAAOC,MACpBw8L,uBAAwBz8L,OAAOg2F,iBAC/B0mG,uBAAwB18L,OAAOghM,iBAC/BlQ,eAAgB9wL,OAAOZ,SACvBqoL,uBAAsB,CAACriL,EAAMwkH,IACpBtsH,OAAOovH,iBAAiBtnH,EAAMwkH,GAEvCyvE,qBAAoB,CAACj0L,EAAMc,EAAM+6L,IACxB3jM,OAAO+C,eAAe+E,EAAMc,EAAM+6L,GAE3CvZ,+BAA8B,CAACtiL,EAAMc,IAC5B5I,OAAOgH,yBAAyBc,EAAMc,GAE/CyhL,WAAW5hL,GACFzI,OAAOD,KAAK0I,GAErB6hL,qBAAoB,CAACvuK,EAAQ1b,IACpBL,OAAO6jG,eAAe9nF,EAAQ1b,GAEvCoE,QACAm/L,sBAAqB,CAAC97L,EAAM+wD,IACnB/wD,EAAK0iC,MAAMquB,GAEpB+zH,qBAAoB,CAAC9kL,EAAM+7L,EAAQC,IAC1Bh8L,EAAK5C,KAAK2+L,EAAQC,GAE3B9T,cAAcxvL,GACLiE,QAAQE,OAAOnE,GAExByvL,eAAe3uI,GACN78C,QAAQC,QAAQ48C,GAEzBguD,aAAcD,QAAQlqG,MACtB4+L,oBAAmB,CAACj8L,EAAMhJ,IACjBgJ,EAAKe,KAAK/J,GAEnB20L,QAASt2K,IACTrc,OACAilL,qBAAoB,CAACj+K,EAAM1G,EAAOC,IACzByG,EAAK1E,MAAMhC,EAAOC,GAE3B26L,2BAA2Bl0L,GAClBA,EAAK5D,cAEdq7L,2BAA2Bz3L,GAClBA,EAAK9D,cAEdw7L,oBAAoB13L,GACXA,EAAK8E,OAEdzE,OACAuxL,UAAWvxL,OAAOg7D,IAClBqrH,oBAAqBrmL,OAAOihI,cAC5B6yD,kBAAmB9zL,OAAOs7L,YAC1Bzd,eAAgB79K,OAAOe,SACvBg8K,cAAe/8K,OAAO67L,SAAW77L,OAAO,kBACxCurL,mBAAoBvrL,OAAO87L,cAAgB97L,OAAO,uBAClD89K,uBAAsB,CAACn+K,EAAM3G,EAAKu2F,IACzB5vF,EAAK4C,IAAIvJ,EAAKu2F,GAEvB9wD,QACAn8B,0CCvGF,MAAM+gL,EAAe,EAAQ,OACvB,uBAAEmE,EAAsB,cAAEzK,GAAkB,EAAQ,OACpDrmK,EAAciY,WAAWjY,aAAe,qBACxCD,EAAkBkY,WAAWlY,iBAAmB,yBAChDslL,EAAgBlkM,OAAO2xG,gBAAejmF,iBAAmB,IAAG9d,YAC5DxF,EAAO0uB,WAAW1uB,MAAQojL,EAAapjL,KAEvC0jL,OACY,IAAT1jL,EACH,SAAgBg5C,GAEd,OAAOA,aAAah5C,CACtB,EACA,SAAgBg5C,GACd,OAAO,CACT,EAGAukI,EAAsB,CAACl5K,EAAQ7D,KACnC,QAAe7J,IAAX0N,IAAoC,OAAXA,GAAqC,iBAAXA,KAAyB,YAAaA,IAC3F,MAAM,IAAI2hG,qBAAqBxlG,EAAM,cAAe6D,EACtD,EAOF,MAAM41L,UAAuB1hM,MAC3B,WAAAiN,CAAYi4E,GACV,IAAKt8E,MAAMC,QAAQq8E,GACjB,MAAM,IAAI/8E,UAAU,6CAA6C+8E,GAEnE,IAAIl4E,EAAU,GACd,IAAK,IAAI1N,EAAI,EAAGA,EAAI4lF,EAAO1lF,OAAQF,IACjC0N,GAAW,OAAOk4E,EAAO5lF,GAAGV,UAE9B0e,MAAMtQ,GACN/O,KAAKgK,KAAO,iBACZhK,KAAKinF,OAASA,CAChB,EAEFhjF,EAAOC,QAAU,CACfu/L,iBACA7V,aAAcxsL,OAAOsoB,OAAO,CAAC,GAC7B,IAAA+vC,CAAKrsD,GACH,IAAIs8K,GAAS,EACb,OAAO,YAAajlL,GACdilL,IAGJA,GAAS,EACTt8K,EAAS7G,MAAMvG,KAAMyE,GACvB,CACF,EACAwoL,sBAAuB,WACrB,IAAInnL,EACAC,EAOJ,MAAO,CACL0F,QALc,IAAI5F,SAAQ,CAACd,EAAKwgM,KAChCz/L,EAAUf,EACVgB,EAASw/L,KAITz/L,UACAC,SAEJ,EACAy/L,UAAUvrI,GACD,IAAIp0D,SAAQ,CAACC,EAASC,KAC3Bk0D,GAAG,CAACr4D,KAAQ6C,IACN7C,EACKmE,EAAOnE,GAETkE,KAAWrB,IACnB,IAGLghM,SAAQ,IACC,WAAa,EAEtBrtI,OAAM,CAACA,KAAW3zD,IAET2zD,EAAOlqD,QAAQ,eAAe,aAAcw3L,EAASh5L,IAC1D,MAAM41E,EAAc79E,EAAK8F,QACzB,MAAa,MAATmC,EACK41E,EAAY3R,QAAQ,GACT,MAATjkE,EACF1K,KAAKC,UAAUqgF,GACJ,MAAT51E,GAAuC,iBAAhB41E,EAEzB,GADMA,EAAYtzE,cAAgB5N,OAASkhF,EAAYtzE,YAAYhF,KAAO,QAC7DgE,OAEbs0E,EAAY9gF,UAEvB,IAEF,OAAAsoG,CAAQ5pG,GAEN,cAAeA,GACb,IAAK,SACH,GAAIA,EAAM8b,SAAS,KAAM,CACvB,IAAK9b,EAAM8b,SAAS,KAClB,MAAO,IAAI9b,KACN,IAAKA,EAAM8b,SAAS,OAAS9b,EAAM8b,SAAS,MACjD,MAAO,KAAK9b,KAEhB,CACA,MAAO,IAAIA,KACb,IAAK,SACH,OAAI6D,MAAM7D,GACD,MACEkB,OAAOw6I,GAAG17I,GAAQ,GACpBgC,OAAOhC,GAETA,EACT,IAAK,SACH,MAAO,GAAGgC,OAAOhC,MACnB,IAAK,UACL,IAAK,YACH,OAAOgC,OAAOhC,GAChB,IAAK,SACH,MAAO,KAEb,EACA2uB,MAAO,CACLoyK,gBAAgBhnI,GACPA,aAAcqrI,EAEvB57L,kBAAkBgvF,GACT/uF,YAAYC,OAAO8uF,IAG9Bw0F,SACA+D,UAAS,CAACh3H,EAAIlrD,IACLkrD,EAET4sH,iBACE,2BACA,SAA0Bh5K,EAAQw6C,GAChC,QAAeloD,IAAX0N,EACF,MAAM,IAAI2hG,qBAAqB,SAAU,cAAe3hG,GAI1D,IAAI0C,EAaJ,OAfAw2K,EAAoBl5K,EAAQ,UA1HT,EAAC3N,EAAO8J,KAC/B,GAAqB,mBAAV9J,EAAsB,MAAM,IAAIsvG,qBA0HZ,WA1HuC,WAAYtvG,EAAK,EA0HnF2tL,CAAiBxlI,GAEbx6C,EAAOsB,QACTusK,gBAAe,IAAMrzH,OAErBx6C,EAAOuC,iBAAiB,QAASi4C,EAAU,CACzCt2C,UAAW,KACX0nD,MAAM,EACN,CAACs3H,IAAyB,IAE5BxgL,EAAsB,KACpB1C,EAAO0C,oBAAoB,QAAS83C,EAAQ,GAGzC,CACLt2C,UAAW,KACX,CAACu0K,KACC,IAAIqf,EAC8C,QAAhDA,EAAuBp1L,SAA0DpQ,IAAzBwlM,GAEtDA,GACN,EAEJ,EACFC,eACE3lL,EAAY4+G,KACZ,SAAwBqiE,GAEtB,GAAuB,IAAnBA,EAAQ3/L,OACV,OAAO2/L,EAAQ,GAEjB,MAAM3T,EAAK,IAAIvtK,EACTzQ,EAAQ,IAAMg+K,EAAGh+K,QAgBvB,OAfA2xL,EAAQx2L,SAASmD,IACfk5K,EAAoBl5K,EAAQ,WAC5BA,EAAOuC,iBAAiB,QAASb,EAAO,CACtCkqD,MAAM,GACP,IAEH8zH,EAAG1/K,OAAOuC,iBACR,SACA,KACE8wL,EAAQx2L,SAASmD,GAAWA,EAAO0C,oBAAoB,QAAShB,IAAM,GAExE,CACEkqD,MAAM,IAGH8zH,EAAG1/K,MACZ,GAEJ5J,EAAOC,QAAQshM,UAAUK,OAASt8L,OAAOg7D,IAAI,iDCrM7C,MAAM,OAAExnE,GAAW,EAAQ,OAyBrB,qBAAEogM,EAAoB,WAAE1R,EAAU,aAAE/6E,GAAiB,EAAQ,QAEjE80F,WAAaK,OAAQC,IACnB,EAAQ,QACN,yBAAE3T,EAAwB,0BAAEU,GAA8B,EAAQ,QAEtErM,OAAO,wBAAEuf,IACP,EAAQ,OACNpT,EAAU,EAAQ,QAClB,wBAAE+H,EAAuB,wBAAExF,GAA4B,EAAQ,QAC/D,SAAEtN,GAAa,EAAQ,QACvB,UAAEE,GAAc,EAAQ,OACxBlB,EAAM,EAAQ,OAEdvwF,EAAW,EAAQ,MACnBq0C,EAAQ,EAAQ,OAChB4lD,EAAUrsL,EAAOC,QAAU,EAAjB,cAChBosL,EAAOnH,YAAcz+C,EAAMy+C,YAC3BmH,EAAOwL,YAAcpxD,EAAMoxD,YAC3BxL,EAAO0L,UAAYtxD,EAAMsxD,UACzB1L,EAAOvI,WAAar9C,EAAMq9C,WAC1BuI,EAAOtI,WAAat9C,EAAMs9C,WAC1BsI,EAAOnxK,SAAW,EAAQ,OAC1B,IAAK,MAAM1e,KAAOgrL,EAAW0G,GAA2B,CACtD,MAAMx8J,EAAKw8J,EAAyB1xL,GACpC,SAASw5D,KAAMx1D,GACb,cACE,MAAMshM,IAER,OAAOzV,EAAOnxK,SAAS00D,KAAK68B,EAAa/6E,EAAI31B,KAAMyE,GACrD,CACA04L,EAAqBljI,EAAI,OAAQ,CAC/BloD,UAAW,KACX7R,MAAOy1B,EAAG3rB,OAEZmzL,EAAqBljI,EAAI,SAAU,CACjCloD,UAAW,KACX7R,MAAOy1B,EAAGp0B,SAEZ47L,EAAqB7M,EAAOnxK,SAASzd,UAAWjB,EAAK,CACnDsR,UAAW,KACX7R,MAAO+5D,EACP5yD,YAAY,EACZkB,cAAc,EACdD,UAAU,GAEd,CACA,IAAK,MAAM7H,KAAOgrL,EAAWoH,GAA4B,CACvD,MAAMl9J,EAAKk9J,EAA0BpyL,GACrC,SAASw5D,KAAMx1D,GACb,cACE,MAAMshM,IAER,OAAOr1F,EAAa/6E,EAAI31B,KAAMyE,EAChC,CACA04L,EAAqBljI,EAAI,OAAQ,CAC/BloD,UAAW,KACX7R,MAAOy1B,EAAG3rB,OAEZmzL,EAAqBljI,EAAI,SAAU,CACjCloD,UAAW,KACX7R,MAAOy1B,EAAGp0B,SAEZ47L,EAAqB7M,EAAOnxK,SAASzd,UAAWjB,EAAK,CACnDsR,UAAW,KACX7R,MAAO+5D,EACP5yD,YAAY,EACZkB,cAAc,EACdD,UAAU,GAEd,CACAgoL,EAAO3E,SAAW,EAAQ,OAC1B2E,EAAOzI,OAAS,EAAQ,OACxByI,EAAOzuB,UAAY,EAAQ,OAC3ByuB,EAAOtuB,YAAc,EAAQ,OAC7BsuB,EAAO1I,SAAWA,EAClB,MAAM,eAAEd,GAAmB,EAAQ,OACnCwJ,EAAOxJ,eAAiBA,EACxBwJ,EAAOhF,SAAW1E,EAClB0J,EAAO3uK,QAAUmmK,EACjBwI,EAAOqC,QAAUA,EACjBrC,EAAOoK,wBAA0BA,EACjCpK,EAAO4E,wBAA0BA,EACjCiI,EAAqB7M,EAAQ,WAAY,CACvCv+K,UAAW,KACXxJ,cAAc,EACdlB,YAAY,EACZC,IAAG,IACM+uF,IAGX8mG,EAAqBvV,EAAUke,EAAiB,CAC9C/zL,UAAW,KACX1K,YAAY,EACZC,IAAG,IACM+uF,EAASuxF,WAGpBuV,EAAqBvW,EAAKkf,EAAiB,CACzC/zL,UAAW,KACX1K,YAAY,EACZC,IAAG,IACM+uF,EAASi1F,WAKpBgF,EAAOA,OAASA,EAChBA,EAAOoG,cAAgB,SAAsBx2L,GAC3C,OAAOA,aAAiB2L,UAC1B,EACAykL,EAAOqG,oBAAsB,SAA6Br9K,GACxD,OAAOvc,EAAO82E,KAAKv6D,EAAMxX,OAAQwX,EAAMosF,WAAYpsF,EAAMtW,WAC3D,+BC1IA,MAAM,kBAAE2hM,EAAiB,QAAE9+L,GAAY,EAAQ,QACzC,WAAE4qJ,EAAU,aAAEg2B,EAAY,YAAEC,GAAgB,EAAQ,QAClDmN,aAAcmS,GAAO,EAAQ,QAC/B,SAAE1a,GAAa,EAAQ,OAC7B,EAAQ,OAiCRrnL,EAAOC,QAAU,CACfonL,WACA1D,SAlCF,YAAqBllK,GACnB,OAAO,IAAI7c,GAAQ,CAACC,EAASC,KAC3B,IAAI8H,EACApL,EACJ,MAAMwjM,EAAUvjL,EAAQA,EAAQnhB,OAAS,GACzC,GACE0kM,GACmB,iBAAZA,IACNxf,EAAawf,KACbx1C,EAAWw1C,KACXvf,EAAYuf,GACb,CACA,MAAMn/L,EAAU69L,EAAkBjiL,GAClC7U,EAAS/G,EAAQ+G,OACjBpL,EAAMqE,EAAQrE,GAChB,CACAujM,EACEtjL,GACA,CAAC9gB,EAAK1B,KACA0B,EACFmE,EAAOnE,GAEPkE,EAAQ5F,EACV,GAEF,CACE2N,SACApL,OAEJ,GAEJ,sCCrCA,IAAIqF,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B3B,OAAO+C,eAAe6D,EAAGE,EAAI,CAAEb,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,GACnF,EAAI,SAAUiF,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGyF,EAAgBxI,MAAQA,KAAKwI,cAAiB,SAASP,EAAG/D,GAC1D,IAAK,IAAIuE,KAAKR,EAAa,YAANQ,GAAoBrH,OAAOM,UAAUgH,eAAeC,KAAKzE,EAASuE,IAAIX,EAAgB5D,EAAS+D,EAAGQ,EAC3H,EACArH,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDsI,EAAa,EAAQ,OAAkBtE,+BCuGvC,SAASgiM,EAAkBp7K,GAGvB,MAAMq7K,EAAiB,GACvB,IAAI9kM,EAAI,EACR,KAAOA,EAAIypB,EAAKvpB,QAEZ,OAAQupB,EAAKzpB,IACT,IAAK,IACD,GAAoB,MAAhBypB,EAAKzpB,EAAI,GACT,GAAoB,MAAhBypB,EAAKzpB,EAAI,GAAY,CAErB,IAAK+kM,EAA2Ct7K,EAAKzpB,EAAI,IAAK,CAC1D8kM,EAAe5iM,KAAK,IACpBlC,IACA,KACJ,CAGA8kM,EAAe3iM,MAEVsnB,EAAKzpB,EAAI,IACV8kM,EAAe5iM,KAAK,IAExBlC,GAAK,CACT,KACK,CAED,IAAK+kM,EAA2Ct7K,EAAKzpB,EAAI,IAAK,CAC1D8kM,EAAe5iM,KAAK,IACpBlC,IACA,KACJ,CAEKypB,EAAKzpB,EAAI,IACV8kM,EAAe5iM,KAAK,IAIxBlC,GAAK,CACT,MAIA8kM,EAAe5iM,KAAK,IACpBlC,IAEJ,MACJ,IAAK,IACL,IAAK,IAEI8kM,EAAe5kM,QAChB4kM,EAAe5iM,KAAK,IAExB4iM,EAAeA,EAAe5kM,OAAS,GAAGgC,KAAKunB,EAAKm7D,OAAO5kF,IAE3DA,EAAIypB,EAAKvpB,OACT,MACJ,QAES4kM,EAAe5kM,QAChB4kM,EAAe5iM,KAAK,IAExB4iM,EAAeA,EAAe5kM,OAAS,GAAGgC,KAAKunB,EAAKzpB,IACpDA,IAIZ,MAAO,IAAM8kM,EAAehhM,KAAKrD,GAAWA,EAAOuD,KAAK,MAAKA,KAAK,IACtE,CAQA,SAASghM,EAAwBnhK,EAAKohK,GAElC,IAAIC,EAAeD,EAAgB,EAC/BA,GAAiB,EACc,MAA3BphK,EAAIohK,EAAgB,IAAyC,MAA3BphK,EAAIohK,EAAgB,KACtDC,EAAeD,EAAgB,GAIpB,MAAXphK,EAAI,IAAyB,MAAXA,EAAI,KACtBqhK,EAAe,GAIvB,MAAMC,EAAgBthK,EAAIp7B,QAAQ,IAAKy8L,GACvC,OAAIC,EAAgB,EACTthK,EAEEA,EAAI+gD,OAAO,EAAGugH,GAGbN,EAFDhhK,EAAI+gD,OAAOugH,GAG5B,CAEA,SAASJ,EAA2CnyB,GAChD,OAAQA,GAA2B,MAAdA,GAAmC,MAAdA,GAAmC,MAAdA,CACnE,CAzNA7yK,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQmiM,wBAA0BniM,EAAQgiM,kBAAoBhiM,EAAQ4B,aAAU,EA0GhF5B,EAAQ4B,QAjGR,SAAiB2gM,EAAazwJ,GAE1B,MAAM0wJ,GADN1wJ,EAAUA,GAAW,IACWlsC,QAAQ,KAMxC,GAJI48L,EAAkB,IAClB1wJ,EAAUA,EAAQiwC,OAAO,EAAGygH,KAG3BD,EAAYllM,OAAQ,CAErB,GAAIy0C,EAAQlsC,QAAQ,KAAO,EACvB,MAAM,IAAI/H,MAAM,0BAA0Bi0C,iBAAuBywJ,MAErE,OAAOzwJ,CACX,CAEA,GAAIywJ,EAAY1xK,WAAW,KAAM,CAC7B,MAAM4xK,EAAe3wJ,EAAQlsC,QAAQ,KAIrC,OAHI68L,EAAe,IACf3wJ,EAAUA,EAAQiwC,OAAO,EAAG0gH,IAEzB3wJ,EAAUywJ,CACrB,CAEA,GAAIA,EAAY1xK,WAAW,KACvB,OAAOihB,EAAUywJ,EAGrB,IAAKzwJ,EAAQz0C,OAAQ,CACjB,MAAMqlM,EAAmBH,EAAY38L,QAAQ,KAC7C,GAAI88L,EAAmB,EACnB,MAAM,IAAI7kM,MAAM,+BAA+B0kM,4BAEnD,OAAOJ,EAAwBI,EAAaG,EAChD,CAEA,MAAMC,EAAgBJ,EAAY38L,QAAQ,KAC1C,GAAI+8L,GAAiB,EACjB,OAAOR,EAAwBI,EAAaI,GAGhD,MAAMC,EAAe9wJ,EAAQlsC,QAAQ,KACrC,GAAIg9L,EAAe,EACf,MAAM,IAAI/kM,MAAM,0BAA0Bi0C,iBAAuBywJ,MAErE,MAAMM,EAAgB/wJ,EAAQiwC,OAAO,EAAG6gH,EAAe,GAEvD,GAAkC,IAA9BL,EAAY38L,QAAQ,MACpB,OAAOi9L,EAAgBV,EAAwBI,EAAaI,GAGhE,IAAIG,EACJ,GAAIhxJ,EAAQlsC,QAAQ,KAAMg9L,KAAkBA,EAAe,GAGvD,GADAE,EAAyBhxJ,EAAQlsC,QAAQ,IAAKg9L,EAAe,GACzDE,EAAyB,EAGzB,OAAIhxJ,EAAQz0C,OAASulM,EAAe,EACzB9wJ,EAAU,IAAMqwJ,EAAwBI,EAAaI,GAGrDE,EAAgBV,EAAwBI,EAAaI,QAOpE,GADAG,EAAyBhxJ,EAAQlsC,QAAQ,IAAKg9L,EAAe,GACzDE,EAAyB,EAGzB,OAAOD,EAAgBV,EAAwBI,EAAaI,GAIpE,GAAiC,IAA7BJ,EAAY38L,QAAQ,KACpB,OAAOksC,EAAQiwC,OAAO,EAAG+gH,GAA0Bd,EAAkBO,GAEzE,IAAIQ,EAAcjxJ,EAAQiwC,OAAO+gH,GACjC,MAAME,EAAsBD,EAAYviM,YAAY,KAepD,OAbIwiM,GAAuB,GAAKA,EAAsBD,EAAY1lM,OAAS,IACvE0lM,EAAcA,EAAYhhH,OAAO,EAAGihH,EAAsB,GAGnC,MAAnBT,EAAY,IAAiC,MAAnBA,EAAY,IAAiC,MAAnBA,EAAY,IAAcA,EAAY,KAC1FA,EAAcA,EAAYxgH,OAAO,KAMzCwgH,EAAcP,EAFdO,EAAcQ,EAAcR,GAIrBzwJ,EAAQiwC,OAAO,EAAG+gH,GAA0BP,CACvD,EA8EAviM,EAAQgiM,kBAAoBA,EA8B5BhiM,EAAQmiM,wBAA0BA,mBCrNlC,IAAIvkM,EAAS,EAAQ,MACjB/E,EAAS+E,EAAO/E,OAGpB,SAASoqM,EAAW9oK,EAAK0xE,GACvB,IAAK,IAAItvG,KAAO49B,EACd0xE,EAAItvG,GAAO49B,EAAI59B,EAEnB,CASA,SAAS2mM,EAAYvoK,EAAKqmE,EAAkB3jG,GAC1C,OAAOxE,EAAO8hC,EAAKqmE,EAAkB3jG,EACvC,CAVIxE,EAAO82E,MAAQ92E,EAAO8C,OAAS9C,EAAOooG,aAAepoG,EAAOwsG,gBAC9DtlG,EAAOC,QAAUpC,GAGjBqlM,EAAUrlM,EAAQoC,GAClBA,EAAQnH,OAASqqM,GAOnBA,EAAW1lM,UAAYN,OAAO2G,OAAOhL,EAAO2E,WAG5CylM,EAAUpqM,EAAQqqM,GAElBA,EAAWvzH,KAAO,SAAUh1C,EAAKqmE,EAAkB3jG,GACjD,GAAmB,iBAARs9B,EACT,MAAM,IAAI30B,UAAU,iCAEtB,OAAOnN,EAAO8hC,EAAKqmE,EAAkB3jG,EACvC,EAEA6lM,EAAWvnM,MAAQ,SAAUC,EAAMwpG,EAAM7uF,GACvC,GAAoB,iBAAT3a,EACT,MAAM,IAAIoK,UAAU,6BAEtB,IAAI3H,EAAMxF,EAAO+C,GAUjB,YATaK,IAATmpG,EACsB,iBAAb7uF,EACTlY,EAAI+mG,KAAKA,EAAM7uF,GAEflY,EAAI+mG,KAAKA,GAGX/mG,EAAI+mG,KAAK,GAEJ/mG,CACT,EAEA6kM,EAAWjiG,YAAc,SAAUrlG,GACjC,GAAoB,iBAATA,EACT,MAAM,IAAIoK,UAAU,6BAEtB,OAAOnN,EAAO+C,EAChB,EAEAsnM,EAAW79F,gBAAkB,SAAUzpG,GACrC,GAAoB,iBAATA,EACT,MAAM,IAAIoK,UAAU,6BAEtB,OAAOpI,EAAO+iG,WAAW/kG,EAC3B,sCC/DA,IAAI0F,EAAaxF,MAAQA,KAAKwF,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU9F,GAAS,IAAM+F,EAAKL,EAAUM,KAAKhG,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASlG,GAAS,IAAM+F,EAAKL,EAAiB,MAAE1F,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKpC,GAJlB,IAAe3D,EAIa2D,EAAOwC,KAAOP,EAAQjC,EAAO3D,QAJ1CA,EAIyD2D,EAAO3D,MAJhDA,aAAiByF,EAAIzF,EAAQ,IAAIyF,GAAE,SAAUG,GAAWA,EAAQ5F,EAAQ,KAIjBoG,KAAKN,EAAWI,EAAW,CAC7GH,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,OAClE,GACJ,EACIw7G,EAAmB1hH,MAAQA,KAAK0hH,iBAAoB,SAAU7f,GAC9D,OAAQA,GAAOA,EAAIx5F,WAAcw5F,EAAM,CAAE,QAAWA,EACxD,EACAzgG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IAStD,MAAM+3D,EAAO,EAAQ,OACfovI,EAAa,EAAQ,OACrB9qJ,EAAmB,EAAQ,OAC3B5pB,EAAU,EAAQ,OAClB20K,EAAmB5lF,EAAgB,EAAQ,QAC3C6lF,EAAkB7lF,EAAgB,EAAQ,QAC1C8lF,EAAe9lF,EAAgB,EAAQ,QAC7C,SAAS+lF,EAAapjM,GAClB,IAAIS,EACJ,OAAwC,QAAhCA,EAAK,YAAYupF,KAAKhqF,UAAyB,IAAPS,OAAgB,EAASA,EAAG,EAChF,CACA,MAAM4iM,EAAkB,CACpB,8CAA+C,MAC/C,wCAAyC,OACzC,8BAA+B,KAC/B,oCAAqC,OAEnCC,EAAgB,CAClB5hC,IAAK,8CACL6hC,KAAM,wCACNr6D,GAAI,8BACJs4B,IAAK,qCA8sBT3hK,EAAA,QA5sBA,MACI,WAAA8K,CAEAk6C,EAEA0O,EAAQ5uD,EAAW,CAAC,EAEpBktC,OAAO/1C,EAAW0nM,GAAoB,EAAMC,GAA0B,EAAOlgM,EAAO6wD,GAAiB,GACjGz4D,KAAKkpD,MAAQA,EACblpD,KAAKk2C,KAAOA,EACZl2C,KAAK6nM,kBAAoBA,EACzB7nM,KAAK8nM,wBAA0BA,EAC/B9nM,KAAK4H,MAAQA,EACb5H,KAAKy4D,eAAiBA,EACtBz4D,KAAKgJ,SAAW,CAAC,EACjBhJ,KAAK+nM,UAAY,CAAC,EAClB,IAAK,MAAMtnM,KAAOW,OAAOD,KAAK6H,GAAW,CACrC,MAAMk8B,EAAMl8B,EAASvI,GACfP,EAAuB,iBAARglC,EAAmBA,EAAMA,EAAIhlC,MAC5CA,KAASwnM,GAAsBjnM,KAAOknM,IACxC3nM,KAAK+nM,UAAU7nM,GAASO,EACxBT,KAAKgJ,SAASvI,GAAOP,EAE7B,CACAF,KAAK43D,OAASA,CAClB,CAKA,KAAAj1D,GACI,OAAO6C,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,MAAMgoM,EAAYhoM,KAAKkpD,MAAM6tH,SAAS,KAAM,kDAAkE,yCAA6D,MAC3K,GAAyB,IAArBixB,EAAUzmM,QAAkD,cAAlCymM,EAAU,GAAGj9K,QAAQyC,SAS/C,MAAM,IAAIzrB,MAAM,iBATyD,CACzE,MAAMm0C,EAAO8xJ,EAAU,GAAGj9K,QAC1B/qB,KAAKkpD,MAAMg7D,YAAY8jF,GAElB9xJ,EAAKxV,OAAO,IAAIu3B,EAAKuoB,UAAU,wBAChCxgF,KAAK43D,OAAOn5C,IAAI,SAAQ,EAAI89B,EAAiBvuB,cAAckoB,YACzDl2C,KAAKioM,aAAa/xJ,EAC5B,CAIA,GAAIl2C,KAAK8nM,wBAAyB,CAC9B,MAAMI,EAAa,IAAI3pL,IACvB,IAAK,MAAM8V,IAAQ,IACZr0B,KAAKkpD,MAAMmuH,YAAY,KAAM,KAAM,SACnCr3K,KAAKkpD,MAAMquH,cAAc,KAAM,KAAM,SACrCv3K,KAAKkpD,MAAMuuH,WAAW,KAAM,KAAM,OAErC,GAAsB,cAAlBpjJ,EAAK7G,SAA0B,CAC/B,MAAM26K,EAAYV,EAAapzK,EAAKn0B,QAChCioM,GAAeA,KAAanoM,KAAK+nM,WAAgBI,KAAaT,GAC9DQ,EAAWzpL,IAAI0pL,EAEvB,CAEJ,MAAMlhM,EAAmB7F,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGxV,KAAKgJ,UAAW2+L,SACnE9hM,QAAQ4rB,IAAI,IAAIy2K,GAAY/iM,KAAKoQ,IAAO,EAAI8xL,EAAW3gM,aAAa6O,EAAI,CAC1E3N,MAAO5H,KAAK4H,MACZZ,eAAe,EACfC,qBACDX,MAAM8hM,IACLpoM,KAAKgJ,SAASo/L,GAAQ7yL,EACtBtO,EAAiBmhM,GAAQ7yL,EACzBvV,KAAK+nM,UAAUxyL,GAAM6yL,CAAI,MAEjC,CACA,MAAMC,EAAgB,IAAI9pL,IAAI,IACvBve,KAAKkpD,MAAMmuH,YAAY,KAAM,KAAM,SACnCr3K,KAAKkpD,MAAMquH,cAAc,KAAM,KAAM,SACrCv3K,KAAKkpD,MAAMuuH,WAAW,KAAM,KAAM,OAEpCxyK,QAAQovB,GAA2B,cAAlBA,EAAK7G,WACtBroB,KAAKkvB,GAASozK,EAAapzK,EAAKn0B,SAChC+E,QAAQZ,GAAuB,iBAARA,KAC5B,IAAK,MAAM5D,KAAOT,KAAK+nM,UACdM,EAAcl7L,IAAI1M,YACZT,KAAKgJ,SAAShJ,KAAK+nM,UAAUtnM,WAC7BT,KAAK+nM,UAAUtnM,IAQ9B,SALMT,KAAKsoM,gBACXtoM,KAAKgJ,SAAW5H,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGxV,KAAKgJ,UAAW2+L,GAChE3nM,KAAK+nM,UAAY3mM,OAAOoU,OAAOpU,OAAOoU,OAAO,CAAC,EAAGxV,KAAK+nM,WAAYL,GAClE1nM,KAAK43D,OAAO2wI,gBACNvoM,KAAKwoM,cACPxoM,KAAKy4D,eAAgB,CACrB,MAAMo8G,EAAW70K,KAAKkpD,MAAMmuH,YAAY,KAAM,KAAM,MAChDxC,EAAStzK,OAAS,GAClBvB,KAAK43D,OAAO2wI,QAAQ,GAExB,IAAK,MAAMx9K,KAAW8pJ,EAClB70K,KAAK43D,OAAOn5C,UAAUze,KAAKguB,aAAajD,GAAS,GAAM,IACvD/qB,KAAK43D,OAAOn5C,IAAI,KAChBze,KAAK43D,OAAOxe,eACNp5C,KAAKyoM,sBAAsB19K,GACjC/qB,KAAK43D,OAAO8wI,WAEZ7zB,EAAStzK,OAAS,IAClBvB,KAAK43D,OAAOn5C,IAAI,MAChBze,KAAK43D,OAAO2wI,UAEpB,CACA,GAAIvoM,KAAK6nM,mBAAqB7nM,KAAKkpD,MAAMppD,KAAO,EAC5C,MAAM,IAAIiC,MAAM,2DAEpB/B,KAAK43D,OAAOn1D,KAEhB,GACJ,CACA,YAAAwlM,CAAa/xJ,GACT,OAAO1wC,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,MAAM2oM,EAAU3oM,KAAKkpD,MAAM0/I,eAAe1yJ,EAAM,IAAI+hB,EAAKuoB,UAAU,yCAA4D,MAC/H,GAAImoH,EAAQpnM,OAAS,EACjB,IAAK,MAAMsnM,KAAOF,EACd3oM,KAAK43D,OAAOn5C,IAAI,YAAYoqL,EAAI3oM,UAAU,EAGtD,GACJ,CACA,aAAAooM,GACI,OAAO9iM,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,MAAMmB,EAAOC,OAAOD,KAAKnB,KAAKgJ,UAAU/D,QAAQxE,KAAUA,KAAO8mM,EAAgBx8J,WAAUwD,OAC3F,GAAIptC,EAAKI,OAAS,EACd,IAAK,MAAMd,KAAOU,EACdnB,KAAK43D,OAAOn5C,IAAI,UAAUhe,OAAST,KAAKgJ,SAASvI,OAAS,EAGtE,GACJ,CACA,YAAAutB,CAAaqG,EAAMy0K,GAAmB,EAAOC,GAAkB,GAC3D,OAAOvjM,EAAUxF,UAAM,OAAQ,GAAQ,YAEnC,IACI,GAAI8oM,EACA,MAAM,IAAI/mM,MAAM,uBAEpB,OAAO,EAAI4wB,EAAQq2K,cAAc30K,EAErC,CACA,MAAOluB,GAAK,CACZ,GAAsB,cAAlBkuB,EAAK7G,SAA0B,CAC/B,MAAM26K,EAAYV,EAAapzK,EAAKn0B,OACpC,OAAIioM,GAAaA,KAAanoM,KAAK+nM,WAC3BI,KAAanoM,KAAK+nM,UACX,GAAG/nM,KAAK+nM,UAAUI,MAAc9zK,EAAKn0B,MAAMsE,MAAM2jM,EAAU5mM,WAGnE,EAAIg7C,EAAiBvuB,cAAcqG,EAC9C,CACA,GAAsB,YAAlBA,EAAK7G,SACL,MAA4B,6CAAxB6G,EAAKg2I,gBACsB,6CAAxBh2I,EAAKg2I,eACDh2I,EAAKn0B,OAET,EAAIq8C,EAAiBvuB,cAAcqG,GAK9C,KAHsB,cAAlBA,EAAK7G,UAA4Bu7K,IACjC,EAAIxsJ,EAAiBvuB,cAAcqG,GAEjC,IAAItyB,MAAM,yCAAyCsyB,EAAKn0B,UAAUm0B,EAAK7G,YACjF,GACJ,CACA,WAAAg7K,GACI,OAAOhjM,EAAUxF,UAAM,OAAQ,GAAQ,YAKnC,IAAK,MAAM+qB,KAAW/qB,KAAKkpD,MAAM+/I,gBAAgB,IAAIhxI,EAAKuoB,UAAU,mDAAmE,IAAIvoB,EAAKuoB,UAAU,wCAA4D,MAAO,CACrNxgF,KAAKkpD,MAAMggJ,aAAan+K,EAAS,IAAIktC,EAAKuoB,UAAU,mDAAmE,IAAIvoB,EAAKuoB,UAAU,8CAAgE,MAAMj/E,OAAS,EACzNvB,KAAK43D,OAAOn5C,IAAI,eAGhBze,KAAK43D,OAAOn5C,IAAI,UAEpBze,KAAK43D,OAAOn5C,UAAUze,KAAKguB,aAAajD,IACxC/qB,KAAK43D,OAAOn5C,IAAI,KAChB,MAAM0qL,EAAgBnpM,KAAKkpD,MAAM0/I,eAAe79K,EAAS,IAAIktC,EAAKuoB,UAAU,0CAAgE,MAC5I,GAAI2oH,EAAc5nM,OAAS,EAAG,CAC1BvB,KAAK43D,OAAOn5C,IAAI,OAChB,IAAK,MAAM2qL,KAAeD,EACO,cAAzBC,EAAY57K,SACZxtB,KAAK43D,OAAOn5C,UAAUze,KAAKguB,aAAao7K,KAGxCppM,KAAK43D,OAAOn5C,IAAI,KAChBze,KAAK43D,OAAOn5C,UAAUze,KAAKguB,aAAahuB,KAAKqpM,aAAaD,EAAa,IAAInxI,EAAKuoB,UAAU,mCAAgD,MAE9IxgF,KAAK43D,OAAOn5C,IAAI,IAExB,CACA,MAAM6qL,EAAmBtpM,KAAKkpD,MAAMquH,cAAcxsJ,EAAS,KAAM,MAC5D9lB,QAAQ6+J,GAAa,CACtB,IAAI7rG,EAAKuoB,UAAU,0CACnB,IAAIvoB,EAAKuoB,UAAU,uCAEnB,IAAIvoB,EAAKuoB,UAAU,oCAChBp/E,OAAOD,KAAKqmM,EAAaz8J,SAAS5lC,KAAK1E,GAAQ,IAAIw3D,EAAKuoB,UAAU,8BAA2C//E,MAClH4hC,OAAOyzD,IAAUguE,EAASpjI,OAAOo1D,OAC/BwzG,EAAiB/nM,OAAS,IAC1BvB,KAAK43D,OAAOn5C,IAAI,KAChBze,KAAK43D,OAAOxe,SACZp5C,KAAK43D,OAAO2wI,QAAQ,IAEpBvoM,KAAKy4D,uBACCz4D,KAAKupM,2BAA2Bx+K,EAASu+K,IAE/CA,EAAiB/nM,OAAS,IAC1BvB,KAAK43D,OAAOn5C,IAAI,KAChBze,KAAK43D,OAAO8wI,kBAEV1oM,KAAKwpM,eAAez+K,GAAS,EACvC,CACJ,GACJ,CACA,iBAAA0+K,CAAkB/0K,EAAMg1K,GAEpB,IAAIC,EAAY,CAACj1K,GACjB,IACI,IAAI1qB,GAAO,EAAI2oB,EAAQq2K,cAAct0K,EAAK9J,WACtCle,EAAO,OACX,GAAa,QAAT1C,EAAgB,CAChB,MAAMosC,EAAQp2C,KAAKkpD,MAAMggJ,aAAax0K,EAAK1J,OAAQ,KAAM,KAAM,MAG/D,GADA2+K,EAAYA,EAAUziK,OAAOkP,GACR,IAAjBA,EAAM70C,OACN,MAAM,IAAIQ,MAAM,kDAGnB2yB,GAAQ0hB,EACTpsC,GAAO,EAAI2oB,EAAQq2K,cAAct0K,EAAK9J,WACtCle,EAAO,KACX,CACA,KAAM1C,KAAQ0/L,GACV,MAAM,IAAI3nM,MAAM,GAAGiI,oBAEvB,MAAO,CAAEA,OAAM0C,OAAMse,OAAQ0J,EAAK1J,OACtC,CACA,MAAO7kB,GACHnG,KAAKkpD,MAAMuqH,SAASk2B,EACxB,CAEJ,CACA,yBAAAC,CAA0Bv1K,EAAMq1K,GAC5B,MAAM7lM,EAAS,GACf,IAAK,MAAM6wB,KAAQ10B,KAAKkpD,MAAMggJ,aAAa70K,EAAM,KAAM,KAAM,MAAO,CAChE,MAAMyvI,EAAW9jK,KAAKypM,kBAAkB/0K,EAAMg1K,GAC1C5lC,GACAjgK,EAAON,KAAKugK,EAEpB,CACA,OAAOjgK,CACX,CACA,iBAAAgmM,CAAkBx1K,EAAMq1K,GACpB,MAAMtzJ,EAAQp2C,KAAKkpD,MAAMggJ,aAAa70K,EAAM,KAAM,KAAM,MACxD,GAAqB,IAAjB+hB,EAAM70C,OAAc,CACpB,MAAMqe,EAAO5f,KAAKypM,kBAAkBrzJ,EAAM,GAAIszJ,GAC9C,GAAI9pL,EACA,OAAOA,CAEf,CACA5f,KAAKkpD,MAAMuqH,SAASr9H,EAExB,CACA,YAAA0zJ,CAAaz1K,EAAMq1K,GACf,MAAMI,EAAe,GACrB,IAAK,MAAMp1K,KAAQ10B,KAAKkpD,MAAMggJ,aAAa70K,EAAM,IAAI4jC,EAAKuoB,UAAU,iCAA8C,KAAM,MAAO,CAC3H,MAAMupH,EAAY,GAClB,IAAK,MAAM5nL,KAAQniB,KAAKgqM,QAAQt1K,EAAK1J,QAAS,CAC1C,MAAM84I,EAAW9jK,KAAK6pM,kBAAkB1nL,EAAMunL,GAC9C,IAAK5lC,EAGD,MADA9jK,KAAKkpD,MAAMsqH,QAAQ9+I,GACb,IAAI3yB,MAAM,sEAEpBgoM,EAAUxmM,KAAKugK,EACnB,CACAgmC,EAAavmM,KAAKwmM,EACtB,CACA,OAAOD,CACX,CAIA,OAAAE,CAAQ31K,GAEJ,IAAI41K,EAAW51K,EACf,MAAMo1E,EAAO,GAEb,MAAQwgG,EAASvpK,OAAO,IAAIu3B,EAAKuoB,UAAU,oDACvCipB,EAAKlmG,KAAKvD,KAAKqpM,aAAaY,EAAU,IAAIhyI,EAAKuoB,UAAU,qDAAqE,IAC9HypH,EAAWjqM,KAAKqpM,aAAaY,EAAU,IAAIhyI,EAAKuoB,UAAU,oDAAmE,GAEjI,OAAOipB,CACX,CACA,sBAAAygG,CAAuBl/K,GACnB,OAAOxlB,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,GAAwB,cAApBgrB,EAAOwC,SAA0B,CACjCxtB,KAAK43D,OAAOn5C,IAAI,KAChB,IAAI09B,GAAQ,EACZ,IAAK,MAAM9nB,KAAQr0B,KAAKgqM,QAAQh/K,GACxBmxB,EACAA,GAAQ,EAGRn8C,KAAK43D,OAAOn5C,IAAI,KAEpBze,KAAK43D,OAAOn5C,UAAUze,KAAKguB,aAAaqG,IAE5Cr0B,KAAK43D,OAAOn5C,IAAI,IACpB,MAEIze,KAAK43D,OAAOn5C,UAAUze,KAAKguB,aAAahD,GAEhD,GACJ,CACA,YAAAq+K,CAAat+K,EAASH,EAAWqkE,GAC7B,IAAInqF,EACJ,OAA8D,QAAtDA,EAAK9E,KAAKmqM,WAAWp/K,EAASH,EAAWqkE,UAA4B,IAAPnqF,OAAgB,EAASA,EAAGkmB,MACtG,CACA,UAAAm/K,CAAWp/K,EAASH,EAAWqkE,GAAS,GACpC,MAAMvgE,EAAU1uB,KAAKkpD,MAAMggJ,aAAan+K,EAASH,EAAW,KAAM,MAClE,GAAIqkE,GAA6B,IAAnBvgE,EAAQntB,OAElB,MADAvB,KAAKkpD,MAAMuqH,SAAS/kJ,GACd,IAAI3sB,MAAM,6BAA6BgpB,aAAyC,EAASA,EAAQ7qB,SAAS0qB,aAA6C,EAASA,EAAU1qB,mDAAmDwuB,EAAQntB,UAE/O,GAAImtB,EAAQntB,OAAS,EAEjB,MADAvB,KAAKkpD,MAAMuqH,SAAS/kJ,GACd,IAAI3sB,MAAM,6BAA6BgpB,aAAyC,EAASA,EAAQ7qB,SAAS0qB,aAA6C,EAASA,EAAU1qB,kDAAkDwuB,EAAQntB,UAE9O,OAA0B,IAAnBmtB,EAAQntB,OAAemtB,EAAQ,QAAKvuB,CAC/C,CACA,cAAAiqM,EAAe,KAAEpgM,EAAI,KAAE0C,EAAI,OAAEse,IACzB,OAAOxlB,EAAUxF,UAAM,OAAQ,GAAQ,YACtB,QAAT0M,GACA1M,KAAK43D,OAAOn5C,IAAI,KAGpBze,KAAK43D,OAAOn5C,IAAIzU,GAChBhK,KAAK43D,OAAOn5C,IAAI,WACVze,KAAKkqM,uBAAuBl/K,EACtC,GACJ,CACA,SAAAq/K,EAAU,KAAErgM,EAAI,KAAE0C,EAAI,OAAEse,IACpB,OAAOxlB,EAAUxF,UAAM,OAAQ,GAAQ,YAInC,OAHa,QAAT0M,GACA1M,KAAK43D,OAAOn5C,IAAI,KAEZzU,GACJ,IAAK,OACD,GAAwB,cAApBghB,EAAOwC,SACPxtB,KAAK43D,OAAOn5C,IAAI,UAAUze,KAAKguB,aAAahD,UAE3C,IAAwB,cAApBA,EAAOwC,SAIZ,MAAM,IAAIzrB,MAAM,yDAHV/B,KAAKwpM,eAAex+K,EAI9B,CACA,OAEJ,IAAK,WAED,YADAhrB,KAAK43D,OAAOn5C,KAAI,EAAIkU,EAAQq2K,cAAch+K,IAG9C,IAAK,QAIL,IAAK,WAED,YADAhrB,KAAK43D,OAAOn5C,UAAUze,KAAKguB,aAAahD,IAG5C,QACIhrB,KAAK43D,OAAOn5C,IAAIzU,GAChBhK,KAAK43D,OAAOn5C,IAAI,WACVze,KAAKkqM,uBAAuBl/K,GAE9C,GACJ,CACA,eAAAs/K,CAAgBC,EAAanhI,EAAU,IAAKjtB,GAAQ,EAAMquJ,GACtD,OAAOhlM,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,IAAK,MAAMyqM,KAAcF,EACjBpuJ,EAEAA,GAAQ,EAGRn8C,KAAK43D,OAAOn5C,IAAI2qD,GAEhBohI,QACMxqM,KAAKqqM,UAAUI,SAGfzqM,KAAKoqM,eAAeK,EAGtC,GACJ,CACA,WAAAC,CAAYr2K,EAAM8nB,GAAQ,EAAMwuJ,EAAcH,GAAY,EAAOI,GAAe,GAC5E,OAAOplM,EAAUxF,UAAM,OAAQ,GAAQ,YAEnC,MAAM6qM,EAAK7qM,KAAK8pM,aAAaz1K,EAAMs2K,GAC7BG,EAAS9qM,KAAK4pM,0BAA0Bv1K,EAAMs2K,GAChDC,IAAiBC,EAAGtpM,OAAS,GAAKupM,EAAOvpM,OAAS,IAClDvB,KAAK43D,OAAO2wI,QAAQ,GAExB,IAAK,MAAMwB,KAAac,EAChB1uJ,EAEAA,GAAQ,EAGRn8C,KAAK43D,OAAOn5C,IAAI,WAEdze,KAAKsqM,gBAAgBP,EAAW,KAAK,EAAMS,SAE/CxqM,KAAKsqM,gBAAgBQ,EAAQ,IAAK3uJ,EAAOquJ,GAC3CI,IAAiBC,EAAGtpM,OAAS,GAAKupM,EAAOvpM,OAAS,IAClDvB,KAAK43D,OAAOn5C,IAAI,KAExB,GACJ,CACA,cAAA+qL,CAAen1K,EAAMm2I,GAAS,GAC1B,OAAOhlK,EAAUxF,UAAM,OAAQ,GAAQ,YACnCA,KAAK43D,OAAOn5C,IAAI,KAAK26B,SACrB,MAAM2xJ,EAAa/qM,KAAKkpD,MAAM0/I,eAAev0K,EAAM,IAAI4jC,EAAKuoB,UAAU,uCAA0D,YAC1HxgF,KAAK0qM,YAAYr2K,GAAM,EAAMmzK,EAAaz8J,SAAS,GAAO,GAChE,IAAK,MAAM+4H,KAAYinC,EACnB/qM,KAAK43D,OAAO2wI,QAAQ,SACdvoM,KAAKgrM,cAAclnC,GAE7B9jK,KAAK43D,OAAO8wI,WAAWH,QAAQ,GAC3B/9B,EACAxqK,KAAK43D,OAAOn5C,IAAI,OAGhBze,KAAK43D,OAAOn5C,IAAI,KAAK8pL,QAAQ,EAErC,GACJ,CACA,aAAAyC,CAAclnC,GACV,OAAOt+J,EAAUxF,UAAM,OAAQ,GAAQ,kBAC7BA,KAAKirM,UAAUjrM,KAAKqpM,aAAavlC,EAAU,IAAI7rG,EAAKuoB,UAAU,oCAAkD,IACtH,MAAMjuC,EAAMvyC,KAAKqpM,aAAavlC,EAAU,IAAI7rG,EAAKuoB,UAAU,wCACrD57E,EAAM5E,KAAKqpM,aAAavlC,EAAU,IAAI7rG,EAAKuoB,UAAU,wCACrD0qH,EAAWlrM,KAAKqpM,aAAavlC,EAAU,IAAI7rG,EAAKuoB,UAAU,wCAE1D2qH,EAAgBnrM,KAAKqpM,aAAavlC,EAAU,IAAI7rG,EAAKuoB,UAAU,qCAC/D1+C,EAAW9hC,KAAKqpM,aAAavlC,EAAU,IAAI7rG,EAAKuoB,UAAU,wCAC1D4qH,EAAaprM,KAAKkpD,MAAM0/I,eAAe9kC,EAAU,IAAI7rG,EAAKuoB,UAAU,mCAAkD,MAa5H,GAZI0qH,IACAlrM,KAAK43D,OAAOn5C,IAAI,KAChBze,KAAK43D,OAAOn5C,KAAI,EAAIkU,EAAQq2K,cAAckC,KAE1CC,IACAnrM,KAAK43D,OAAOn5C,IAAI,KAChBze,KAAK43D,OAAOn5C,UAAUze,KAAKguB,aAAam9K,KAExCrpK,IACA9hC,KAAK43D,OAAOn5C,IAAI,KAChBze,KAAK43D,OAAOn5C,UAAUze,KAAKguB,aAAa8T,UAEhC3hC,IAARoyC,QAA6BpyC,IAARyE,EAAmB,CAExC,GADA5E,KAAK43D,OAAOn5C,IAAI,MACZ8zB,EAAK,CACL,GAAqB,YAAjBA,EAAI/kB,UAAiD,6CAAvB+kB,EAAI83H,eAClC,MAAM,IAAItoK,MAAM,iDAEpB/B,KAAK43D,OAAOn5C,IAAI8zB,EAAIryC,MACxB,MAEIF,KAAK43D,OAAOn5C,IAAI,KAGpB,GADAze,KAAK43D,OAAOn5C,IAAI,MACZ7Z,EAAK,CACL,GAAqB,YAAjBA,EAAI4oB,UAAiD,6CAAvB5oB,EAAIylK,eAClC,MAAM,IAAItoK,MAAM,iDAEpB/B,KAAKkpD,MAAM4tH,cAAchT,EAAU,IAAI7rG,EAAKuoB,UAAU,4CAA0DrgF,OAAWA,GAC3HH,KAAK43D,OAAOn5C,IAAI7Z,EAAI1E,MACxB,MAEIF,KAAK43D,OAAOn5C,IAAI,KAEpBze,KAAK43D,OAAOn5C,IAAI,IACpB,OACMze,KAAK0qM,YAAY5mC,GAAU,EAAOwjC,EAAiBv8J,SAAS,GAClE,MAAMsgK,EAAe,GACrB,IAAK,MAAM7zJ,KAAQ4zJ,EACf,GAAsB,cAAlB5zJ,EAAKhqB,SACLxtB,KAAK43D,OAAOn5C,IAAI,KAChBze,KAAK43D,OAAOn5C,IAAI,UAAUze,KAAKguB,aAAawpB,UAE3C,IAAsB,cAAlBA,EAAKhqB,SAIV,MAAM,IAAIzrB,MAAM,mDAHhBspM,EAAa9nM,KAAKi0C,EAItB,CAEJ,IAAK,MAAMhd,KAAS6wK,EAChBrrM,KAAK43D,OAAOn5C,IAAI,WACVze,KAAKwpM,eAAehvK,GAE1Bx6B,KAAKy4D,gBAAkBz4D,KAAKkpD,MAAM6tH,SAASjT,EAAU,KAAM,KAAM,MAAMviK,OAAS,IAChFvB,KAAK43D,OAAOn5C,IAAI,MAChBze,KAAK43D,OAAOxe,SACZp5C,KAAK43D,OAAO2wI,QAAQ,SACdvoM,KAAKyoM,sBAAsB3kC,GACjC9jK,KAAK43D,OAAO8wI,WACZ1oM,KAAK43D,OAAO2wI,QAAQ,GACpBvoM,KAAK43D,OAAOn5C,IAAI,MAEQ,IAAxB4sL,EAAa9pM,QACbvB,KAAK43D,OAAOn5C,IAAI,KAExB,GACJ,CACA,qBAAAgqL,CAAsBp0K,GAClB,OAAO7uB,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,OAAOA,KAAKupM,2BAA2Bl1K,EAAMr0B,KAAKkpD,MAAMquH,cAAcljJ,EAAM,KAAM,MACtF,GACJ,CACA,0BAAAk1K,CAA2Bl1K,EAAMqiJ,GAC7B,OAAOlxK,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,IAAIsrM,GAAO,EACX,GAAI50B,EAAWv4I,MAAMvT,GAAcA,EAAU8V,OAAOu3B,EAAK3tC,YAAYiK,UAAU,sDAAsD,CACjI,MAAM1F,EAAQ7uB,KAAKkpD,MAAM0/I,eAAev0K,EAAM4jC,EAAK3tC,YAAYiK,UAAU,mDAAoD,MACzH1F,EAAMttB,OAAS,IACf+pM,GAAO,EACPtrM,KAAK43D,OAAOn5C,IAAI,YACVze,KAAKurM,mBAAmB18K,GAEtC,CACA,IAAK,MAAMjE,KAAa8rJ,EACf9rJ,EAAU8V,OAAOu3B,EAAK3tC,YAAYiK,UAAU,sDACzC+2K,GACAtrM,KAAK43D,OAAOn5C,IAAI,MAChBze,KAAK43D,OAAO2wI,QAAQ,IAGpB+C,GAAO,EAEXtrM,KAAK43D,OAAOn5C,UAAUze,KAAKguB,aAAapD,GAAW,IACnD5qB,KAAK43D,OAAOn5C,IAAI,WACVze,KAAKurM,mBAAmBvrM,KAAKkpD,MAAM0/I,eAAev0K,EAAMzJ,EAAW,OAGrF,GACJ,CACA,kBAAA2gL,CAAmB78K,GACf,OAAOlpB,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,MAAMwrM,EAAe,GACfC,EAAkB,GACxB,IAAK,MAAMzgL,KAAU0D,EACO,cAApB1D,EAAOwC,UAC0F,IAA9F,IAAIxtB,KAAKkpD,MAAMllD,MAAM,KAAM,KAAMgnB,MAAYhrB,KAAKkpD,MAAMllD,MAAM,KAAMgnB,EAAQ,OAAOzpB,OACtFiqM,EAAajoM,KAAKynB,GAGlBygL,EAAgBloM,KAAKynB,GAG7BhrB,KAAK43D,OAAOn5C,WAAW5Y,QAAQ4rB,IAAIg6K,EAAgBtmM,KAAK6lB,GAAWhrB,KAAKguB,aAAahD,GAAQ,GAAM,OAAS3lB,KAAK,OACjH,IAAIs/J,EAAQ8mC,EAAgBlqM,OAAS,EACrC,GAAIiqM,EAAajqM,OAAS,EACtB,IAAK,MAAMquC,KAAS47J,EACZ7mC,EACA3kK,KAAK43D,OAAOn5C,IAAI,MAGhBkmJ,GAAQ,SAEA3kK,KAAK0rM,UAAU97J,MACvB5vC,KAAK43D,OAAOn5C,IAAI,KAChBze,KAAK43D,OAAOxe,SACZp5C,KAAK43D,OAAO2wI,QAAQ,SACdvoM,KAAKyoM,sBAAsB74J,GACjC5vC,KAAK43D,OAAO8wI,WACZ1oM,KAAK43D,OAAO2wI,QAAQ,GACpBvoM,KAAK43D,OAAOn5C,IAAI,KAIhC,GACJ,CACA,SAAAitL,CAAU1gL,GACN,OAAOxlB,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,IAAIw3C,EAAOxsB,EACX,MAAM2gL,EAAQ,GACRv1J,EAAQ,GACd,MAAQoB,EAAK9W,OAAOu3B,EAAK3tC,YAAYiK,UAAU,oDAAoD,CAC/F,MAAM4nB,EAAQn8C,KAAKkpD,MAAMggJ,aAAa1xJ,EAAMygB,EAAK3tC,YAAYiK,UAAU,oDAAqD,KAAM,MAC5Hg/H,EAAOvzJ,KAAKkpD,MAAMggJ,aAAa1xJ,EAAMygB,EAAK3tC,YAAYiK,UAAU,mDAAoD,KAAM,MAEhI,GADA6hB,EAAM7yC,QAAQ44C,KAAUo3G,GACH,IAAjBp3G,EAAM56C,QAAgC,IAAhBgyJ,EAAKhyJ,QAAuE,IAAvDvB,KAAKkpD,MAAM6tH,SAASv/H,EAAM,KAAM,KAAM,MAAMj2C,OAEvF,OADAvB,KAAKkpD,MAAMuqH,SAASr9H,IACb,EAEXu1J,EAAMpoM,KAAK44C,EAAM,GAAGnxB,QACpBwsB,EAAO+7G,EAAK,GAAGvoI,MACnB,CACA,IAAI8sC,GAAQ,EACZ93D,KAAK43D,OAAOn5C,IAAI,KAChB,IAAK,MAAMq3E,KAAQ61G,EACX7zI,EACA93D,KAAK43D,OAAOn5C,IAAI,KAGhBq5C,GAAQ,QAEN93D,KAAKurM,mBAAmB,CAACz1G,IAGnC,OADA91F,KAAK43D,OAAOn5C,IAAI,MACT,CACX,GACJ,CACA,SAAAwsL,CAAU52K,EAAMu3K,GAAS,GACrB,OAAOpmM,EAAUxF,UAAM,OAAQ,GAAQ,YACnC,GAAsB,cAAlBq0B,EAAK7G,SACLxtB,KAAK43D,OAAOn5C,UAAUze,KAAKguB,aAAaqG,QAEvC,IAAsB,cAAlBA,EAAK7G,SAqFV,MAAM,IAAIzrB,MAAM,2CArFoB,CACpC,MAAMq0C,EAAQp2C,KAAKkpD,MAAMggJ,aAAa70K,EAAM,KAAM,KAAM,MACxD,GAAqB,IAAjB+hB,EAAM70C,OAAc,CACpB,MAAM,UAAEqpB,EAAS,OAAEI,GAAWorB,EAAM,GACpC,OAAQxrB,EAAU1qB,OACd,IAAK,yCAGD,OAFAF,KAAK43D,OAAOn5C,IAAI,gBACVze,KAAKirM,UAAUjgL,GAAQ,IAEjC,IAAK,6CAAuE,CACxE,MAAM6gL,EAAe7rM,KAAKgqM,QAAQh/K,GAClC,GAA4B,IAAxB6gL,EAAatqM,OACb,MAAM,IAAIQ,MAAM,yCAEf,GAA4B,IAAxB8pM,EAAatqM,aACZvB,KAAKirM,UAAUY,EAAa,QAEjC,CACGD,GACA5rM,KAAK43D,OAAOn5C,IAAI,KAEpB,IAAI09B,GAAQ,EACZ,IAAK,MAAM2vJ,KAAOD,EACV1vJ,EACAA,GAAQ,EAGRn8C,KAAK43D,OAAOn5C,IAAI,WAEdze,KAAKirM,UAAUa,GAAK,GAE1BF,GACA5rM,KAAK43D,OAAOn5C,IAAI,IAExB,CACA,MACJ,CACA,IAAK,4CAGD,aAFMze,KAAKirM,UAAUjgL,GAAQ,QAC7BhrB,KAAK43D,OAAOn5C,IAAI,KAEpB,IAAK,2CAGD,aAFMze,KAAKirM,UAAUjgL,GAAQ,QAC7BhrB,KAAK43D,OAAOn5C,IAAI,KAEpB,IAAK,2CAGD,aAFMze,KAAKirM,UAAUjgL,GAAQ,QAC7BhrB,KAAK43D,OAAOn5C,IAAI,KAEpB,QACI,MAAM,IAAI1c,MAAM,qBAAqBsyB,EAAKn0B,SAEtD,KACK,CAEDF,KAAKkpD,MAAMuqH,SAASr9H,GACpB,MAAM+yH,EAAWnpK,KAAKgqM,QAAQ31K,GAC9B,GAAwB,IAApB80I,EAAS5nK,OACT,MAAM,IAAIQ,MAAM,gBAMf,CACG6pM,GACA5rM,KAAK43D,OAAOn5C,IAAI,KAEpB,IAAI09B,GAAQ,EACZ,IAAK,MAAM2vJ,KAAO3iC,EACVhtH,EACAA,GAAQ,EAGRn8C,KAAK43D,OAAOn5C,IAAI,WAEdze,KAAKirM,UAAUa,GAAK,GAE1BF,GACA5rM,KAAK43D,OAAOn5C,IAAI,IAExB,CACJ,CACJ,CAGA,CACJ,GACJ,+BCtvBJrd,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IAKtDgE,EAAA,QAAkB,CACd8hK,IAAK,iCACLD,IAAK,8CACL6hC,KAAM,wCACNr6D,GAAI,8BACJs4B,IAAK,yECVT,IAAIrgK,EAAaxF,MAAQA,KAAKwF,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU9F,GAAS,IAAM+F,EAAKL,EAAUM,KAAKhG,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASlG,GAAS,IAAM+F,EAAKL,EAAiB,MAAE1F,GAAS,CAAE,MAAOiG,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKpC,GAJlB,IAAe3D,EAIa2D,EAAOwC,KAAOP,EAAQjC,EAAO3D,QAJ1CA,EAIyD2D,EAAO3D,MAJhDA,aAAiByF,EAAIzF,EAAQ,IAAIyF,GAAE,SAAUG,GAAWA,EAAQ5F,EAAQ,KAIjBoG,KAAKN,EAAWI,EAAW,CAC7GH,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,OAClE,GACJ,EACIw7G,EAAmB1hH,MAAQA,KAAK0hH,iBAAoB,SAAU7f,GAC9D,OAAQA,GAAOA,EAAIx5F,WAAcw5F,EAAM,CAAE,QAAWA,EACxD,EACAzgG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQvB,WAAQ,EAChB,MAAMs1D,EAAO,EAAQ,OACf8zI,EAAoBrqF,EAAgB,EAAQ,QAC5CsqF,EAAWtqF,EAAgB,EAAQ,QACnCuqF,EAAmBvqF,EAAgB,EAAQ,QAuCjDx9G,EAAQvB,MAtCR,SAAeyzC,EAAOtvC,GAClB,OAAOtB,EAAUxF,UAAM,OAAQ,GAAQ,YAEnC,OAAO,IAAI6F,SAAQ,CAACC,EAASC,IAAWP,EAAUxF,UAAM,OAAQ,GAAQ,YACpE,IACI,IAAIkF,EAAI,GACR,MAAMgnM,EAAgB,IAAID,EAAiBlhK,QAAQqL,GAC7CvC,EAASq4J,EAAcv0B,UAAU,KAAM,KAAM,MACnD,GAAI9jI,EAAOtyC,OAAS,EAChB,MAAM,IAAIQ,MAAM,kEAEpB,GAAsB,IAAlB8xC,EAAOtyC,SAAiBsyC,EAAO,GAAGnT,OAAOu3B,EAAK3tC,YAAY2b,gBAC1D,MAAM,IAAIlkC,MAAM,4EAA4E8xC,EAAO,GAAG3zC,SAE1G,MAAMgyG,EAAI,IAAI85F,EAASjhK,QAAQ,CAC3BpoC,MAAQ2W,IACJpU,GAAKoU,CAAK,EAEd7W,IAAK,KACD,IAAI0pM,EAAaD,EAAcn1B,SAAS,KAAM,KAAM,KAAM,MAChC,IAAtBo1B,EAAW5qM,SACX4qM,OAAahsM,GAEjB2F,EAAQ,CACJlC,KAAMsB,EACNinM,cACF,IAGJv0I,EAAS,IAAIm0I,EAAkBhhK,QAAQmhK,EAAeh6F,EAAGprG,aAAyC,EAASA,EAAQkC,cAAU7I,GAAyF,KAA7E2G,aAAyC,EAASA,EAAQ0xD,eAA0B1xD,aAAyC,EAASA,EAAQslM,aAActlM,aAAyC,EAASA,EAAQc,MAAOd,aAAyC,EAASA,EAAQ2xD,sBAChab,EAAOj1D,OACjB,CACA,MAAOwD,GACHJ,EAAOI,EACX,CACJ,KACJ,GACJ,8BCvDA/E,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IAItDgE,EAAA,QAAkB,CACdmoM,YAAY,EACZC,iBAAiB,EACjBC,kBAAkB,EAClBC,aAAa,EACbC,UAAU,EACV19L,SAAS,EACT29L,OAAO,EACP5qK,UAAU,EACVopK,UAAU,EACVyB,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,cAAc,EACd9K,WAAW,EACX+K,WAAW,EACXr9K,SAAS,EACT0yD,OAAO,EACP4qH,YAAY,EACZtsK,QAAQ,EACRusK,UAAU,EACVx4L,QAAQ,EACRy4L,mBAAmB,EACnB9vB,UAAU,EACVp0F,IAAI,+BC5BR5nF,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IAItDgE,EAAA,QAAkB,CACdsoM,aAAa,EACbC,UAAU,EACV19L,SAAS,EACT29L,OAAO,EACP5qK,UAAU,EACVopK,UAAU,EACVyB,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,cAAc,EACd9K,WAAW,EACX+K,WAAW,EACXr9K,SAAS,EACT0yD,OAAO,EACP4qH,YAAY,EACZG,YAAY,EACZzsK,QAAQ,EACRusK,UAAU,EACVG,UAAU,EACVC,kBAAkB,EAClBC,qBAAqB,EACrBC,mBAAmB,EACnBC,mBAAmB,EACnBC,8BAA8B,EAC9Bh5L,QAAQ,EACRy4L,mBAAmB,EACnB9vB,UAAU,EACVp0F,IAAI,EAEJxxC,MAAM,+BC/BVp2C,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ8kM,kBAAe,EAQvB9kM,EAAQ8kM,aANR,SAAsB30K,GAClB,GAAsB,cAAlBA,EAAK7G,WAA6B6G,EAAKn0B,MAAM60B,WAAW,+BACxD,MAAM,IAAIhzB,MAAM,QAAQsyB,EAAKn0B,4CAEjC,OAAOm0B,EAAKn0B,MAAMsE,MAAM,GAC5B,gCCXApD,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IAMtD,MAAM+3D,EAAO,EAAQ,OACrB,MAAMy1I,UAAsBz1I,EAAKihH,MAC7B,YAAAgwB,CAAahkM,EAAGuD,EAAGT,EAAGkiH,GAClB,MAAM9zE,EAAQp2C,KAAK+2K,SAAS7xK,EAAGuD,EAAGT,EAAGkiH,GAErC,OADAlqH,KAAKkkH,YAAY9tE,GACVA,CACX,CACA,eAAA6yJ,CAAgBxgM,EAAGT,EAAGkiH,GAClB,OAAOlqH,KAAKkpM,aAAa,KAAMzgM,EAAGT,EAAGkiH,GAAG/kH,KAAKkvB,GAASA,EAAKtJ,SAC/D,CACA,cAAA69K,CAAe1jM,EAAGuD,EAAGyhH,GACjB,OAAOlqH,KAAKkpM,aAAahkM,EAAGuD,EAAG,KAAMyhH,GAAG/kH,KAAKkvB,GAASA,EAAKrJ,QAC/D,EAEJ9mB,EAAA,QAAkBwpM,8BCpBlBtsM,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IA8BtDgE,EAAA,QA1BA,MACI,WAAA8K,CAAYlI,GACR9G,KAAK2tM,QAAU,EACf3tM,KAAK2C,MAAQmE,EAAQnE,MACrB3C,KAAKyC,IAAMqE,EAAQrE,GACvB,CACA,MAAA22C,GAEI,OADAp5C,KAAK2tM,SAAW,EACT3tM,IACX,CACA,QAAA0oM,GACI,GAAI1oM,KAAK2tM,QAAU,EACf,MAAM,IAAI5rM,MAAM,0CAA0C/B,KAAK2tM,WAGnE,OADA3tM,KAAK2tM,SAAW,EACT3tM,IACX,CACA,GAAAye,CAAIvZ,EAAGqjM,GAAU,GAEb,OADAvoM,KAAK2C,MAAM4lM,EAAU,KAAK,KAAKnrK,OAAOp9B,KAAK2tM,WAAWzoM,IAAMA,EAAG,SACxDlF,IACX,CACA,OAAAuoM,CAAQqF,EAAK,GAET,OADA5tM,KAAK2C,MAAM,KAAKy6B,OAAOwwK,GAAM,KAAKxwK,OAAOp9B,KAAK2tM,SAAU,SACjD3tM,IACX,cC1BIiE,EAAOC,QAgBb,SAAU/D,GAER,aAeA,IAGI0tM,EAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAQ1F,SAASC,EAAS/lK,EAAGhlC,GACjB,IAAIw/C,EAAIxa,EAAE,GACNya,EAAIza,EAAE,GACN50B,EAAI40B,EAAE,GACN01D,EAAI11D,EAAE,GASVya,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIrvC,GAAKqvC,EAAIi7C,GAAK16F,EAAE,GAAK,UAAY,IAChC,EAAIw/C,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIpvC,GAAKpQ,EAAE,GAAK,UAAY,IAChC,GAAK06F,IAAM,IAAMl7C,EAAI,GACtBA,GAAKk7C,EAAIj7C,GAAKz/C,EAAE,GAAK,UAAY,IAChC,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBA,GAAKtqF,EAAIovC,GAAKx/C,EAAE,GAAK,WAAa,IACjC,GAAKy/C,IAAM,IAAMrvC,EAAI,EAQhCqvC,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIrvC,GAAKqvC,EAAIi7C,GAAK16F,EAAE,GAAK,UAAY,IAChC,EAAIw/C,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIpvC,GAAKpQ,EAAE,GAAK,WAAa,IACjC,GAAK06F,IAAM,IAAMl7C,EAAI,GACtBA,GAAKk7C,EAAIj7C,GAAKz/C,EAAE,GAAK,WAAa,IACjC,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBA,GAAKtqF,EAAIovC,GAAKx/C,EAAE,GAAK,SAAW,IAC/B,GAAKy/C,IAAM,IAAMrvC,EAAI,EAQhCqvC,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIrvC,GAAKqvC,EAAIi7C,GAAK16F,EAAE,GAAK,WAAa,IACjC,EAAIw/C,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIpvC,GAAKpQ,EAAE,GAAK,WAAa,IACjC,GAAK06F,IAAM,IAAMl7C,EAAI,GACtBA,GAAKk7C,EAAIj7C,GAAKz/C,EAAE,IAAM,MAAQ,IAC7B,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBA,GAAKtqF,EAAIovC,GAAKx/C,EAAE,IAAM,WAAa,IAClC,GAAKy/C,IAAM,IAAMrvC,EAAI,EAQhCqvC,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIrvC,GAAKqvC,EAAIi7C,GAAK16F,EAAE,IAAM,WAAa,IAClC,EAAIw/C,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIpvC,GAAKpQ,EAAE,IAAM,SAAW,IAChC,GAAK06F,IAAM,IAAMl7C,EAAI,GACtBA,GAAKk7C,EAAIj7C,GAAKz/C,EAAE,IAAM,WAAa,IAClC,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBA,GAAKtqF,EAAIovC,GAAKx/C,EAAE,IAAM,WAAa,IAClC,GAAKy/C,IAAM,IAAMrvC,EAAI,EAShCqvC,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIi7C,EAAItqF,GAAKsqF,GAAK16F,EAAE,GAAK,UAAY,IAChC,EAAIw/C,IAAM,IAAMC,EAAI,GACrBrvC,EAAIqvC,GAAKrvC,GAAKpQ,EAAE,GAAK,WAAa,IACjC,EAAI06F,IAAM,IAAMl7C,EAAI,GACrBC,EAAID,GAAKC,GAAKz/C,EAAE,IAAM,UAAY,IACjC,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBl7C,EAAIk7C,GAAKl7C,GAAKx/C,EAAE,GAAK,UAAY,IAChC,GAAKy/C,IAAM,IAAMrvC,EAAI,EAQhCqvC,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIi7C,EAAItqF,GAAKsqF,GAAK16F,EAAE,GAAK,UAAY,IAChC,EAAIw/C,IAAM,IAAMC,EAAI,GACrBrvC,EAAIqvC,GAAKrvC,GAAKpQ,EAAE,IAAM,SAAW,IAChC,EAAI06F,IAAM,IAAMl7C,EAAI,GACrBC,EAAID,GAAKC,GAAKz/C,EAAE,IAAM,UAAY,IACjC,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBl7C,EAAIk7C,GAAKl7C,GAAKx/C,EAAE,GAAK,UAAY,IAChC,GAAKy/C,IAAM,IAAMrvC,EAAI,EAQhCqvC,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIi7C,EAAItqF,GAAKsqF,GAAK16F,EAAE,GAAK,UAAY,IAChC,EAAIw/C,IAAM,IAAMC,EAAI,GACrBrvC,EAAIqvC,GAAKrvC,GAAKpQ,EAAE,IAAM,WAAa,IAClC,EAAI06F,IAAM,IAAMl7C,EAAI,GACrBC,EAAID,GAAKC,GAAKz/C,EAAE,GAAK,UAAY,IAChC,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBl7C,EAAIk7C,GAAKl7C,GAAKx/C,EAAE,GAAK,WAAa,IACjC,GAAKy/C,IAAM,IAAMrvC,EAAI,EAQhCqvC,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIi7C,EAAItqF,GAAKsqF,GAAK16F,EAAE,IAAM,WAAa,IAClC,EAAIw/C,IAAM,IAAMC,EAAI,GACrBrvC,EAAIqvC,GAAKrvC,GAAKpQ,EAAE,GAAK,SAAW,IAC/B,EAAI06F,IAAM,IAAMl7C,EAAI,GACrBC,EAAID,GAAKC,GAAKz/C,EAAE,GAAK,WAAa,IACjC,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBl7C,EAAIk7C,GAAKl7C,GAAKx/C,EAAE,IAAM,WAAa,IAClC,GAAKy/C,IAAM,IAAMrvC,EAAI,EAShCqvC,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIrvC,EAAIsqF,GAAK16F,EAAE,GAAK,OAAS,IACxB,EAAIw/C,IAAM,IAAMC,EAAI,GACrBA,EAAIrvC,GAAKpQ,EAAE,GAAK,WAAa,IAC5B,GAAK06F,IAAM,IAAMl7C,EAAI,GACtBA,EAAIC,GAAKz/C,EAAE,IAAM,WAAa,IAC7B,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBA,EAAIl7C,GAAKx/C,EAAE,IAAM,SAAW,IAC3B,GAAKy/C,IAAM,GAAKrvC,EAAI,EAQ/BqvC,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIrvC,EAAIsqF,GAAK16F,EAAE,GAAK,WAAa,IAC5B,EAAIw/C,IAAM,IAAMC,EAAI,GACrBA,EAAIrvC,GAAKpQ,EAAE,GAAK,WAAa,IAC5B,GAAK06F,IAAM,IAAMl7C,EAAI,GACtBA,EAAIC,GAAKz/C,EAAE,GAAK,UAAY,IAC3B,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBA,EAAIl7C,GAAKx/C,EAAE,IAAM,WAAa,IAC7B,GAAKy/C,IAAM,GAAKrvC,EAAI,EAQ/BqvC,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIrvC,EAAIsqF,GAAK16F,EAAE,IAAM,UAAY,IAC5B,EAAIw/C,IAAM,IAAMC,EAAI,GACrBA,EAAIrvC,GAAKpQ,EAAE,GAAK,UAAY,IAC3B,GAAK06F,IAAM,IAAMl7C,EAAI,GACtBA,EAAIC,GAAKz/C,EAAE,GAAK,UAAY,IAC3B,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBA,EAAIl7C,GAAKx/C,EAAE,GAAK,SAAW,IAC1B,GAAKy/C,IAAM,GAAKrvC,EAAI,EAQ/BqvC,IADAA,KADArvC,IADAA,KADAsqF,IADAA,KADAl7C,IADAA,IAAMC,EAAIrvC,EAAIsqF,GAAK16F,EAAE,GAAK,UAAY,IAC3B,EAAIw/C,IAAM,IAAMC,EAAI,GACrBA,EAAIrvC,GAAKpQ,EAAE,IAAM,UAAY,IAC5B,GAAK06F,IAAM,IAAMl7C,EAAI,GACtBA,EAAIC,GAAKz/C,EAAE,IAAM,UAAY,IAC5B,GAAKoQ,IAAM,IAAMsqF,EAAI,GACtBA,EAAIl7C,GAAKx/C,EAAE,GAAK,UAAY,IAC3B,GAAKy/C,IAAM,GAAKrvC,EAAI,EAS/BqvC,IADAA,KAHAi7C,IADAA,IAAMj7C,IADND,IADAA,IAAMpvC,GAAKqvC,GAAKi7C,IAAM16F,EAAE,GAAK,UAAY,IAC9B,EAAIw/C,IAAM,IAAMC,EAAI,IACfrvC,IAAMpQ,EAAE,GAAK,WAAa,IAC/B,GAAK06F,IAAM,IAAMl7C,EAAI,KAEhCpvC,IADAA,IAAMovC,GAAKk7C,GAAKj7C,IAAMz/C,EAAE,IAAM,WAAa,IAChC,GAAKoQ,IAAM,IAAMsqF,EAAI,IAChBl7C,IAAMx/C,EAAE,GAAK,SAAW,IAC7B,GAAIy/C,IAAM,IAAMrvC,EAAI,EAQ/BqvC,IADAA,KAHAi7C,IADAA,IAAMj7C,IADND,IADAA,IAAMpvC,GAAKqvC,GAAKi7C,IAAM16F,EAAE,IAAM,WAAa,IAChC,EAAIw/C,IAAM,IAAMC,EAAI,IACfrvC,IAAMpQ,EAAE,GAAK,WAAa,IAC/B,GAAK06F,IAAM,IAAMl7C,EAAI,KAEhCpvC,IADAA,IAAMovC,GAAKk7C,GAAKj7C,IAAMz/C,EAAE,IAAM,QAAU,IAC7B,GAAKoQ,IAAM,IAAMsqF,EAAI,IAChBl7C,IAAMx/C,EAAE,GAAK,WAAa,IAC/B,GAAIy/C,IAAM,IAAMrvC,EAAI,EAQ/BqvC,IADAA,KAHAi7C,IADAA,IAAMj7C,IADND,IADAA,IAAMpvC,GAAKqvC,GAAKi7C,IAAM16F,EAAE,GAAK,WAAa,IAC/B,EAAIw/C,IAAM,IAAMC,EAAI,IACfrvC,IAAMpQ,EAAE,IAAM,SAAW,IAC9B,GAAK06F,IAAM,IAAMl7C,EAAI,KAEhCpvC,IADAA,IAAMovC,GAAKk7C,GAAKj7C,IAAMz/C,EAAE,GAAK,WAAa,IAC/B,GAAKoQ,IAAM,IAAMsqF,EAAI,IAChBl7C,IAAMx/C,EAAE,IAAM,WAAa,IAChC,GAAIy/C,IAAM,IAAMrvC,EAAI,EAQ/BqvC,IADAA,KAHAi7C,IADAA,IAAMj7C,IADND,IADAA,IAAMpvC,GAAKqvC,GAAKi7C,IAAM16F,EAAE,GAAK,UAAY,IAC9B,EAAIw/C,IAAM,IAAMC,EAAI,IACfrvC,IAAMpQ,EAAE,IAAM,WAAa,IAChC,GAAK06F,IAAM,IAAMl7C,EAAI,KAEhCpvC,IADAA,IAAMovC,GAAKk7C,GAAKj7C,IAAMz/C,EAAE,GAAK,UAAY,IAC9B,GAAKoQ,IAAM,IAAMsqF,EAAI,IAChBl7C,IAAMx/C,EAAE,GAAK,UAAY,IAC9B,GAAKy/C,IAAM,IAAMrvC,EAAI,EAEhC40B,EAAE,GAAKwa,EAAIxa,EAAE,GAAK,EAClBA,EAAE,GAAKya,EAAIza,EAAE,GAAK,EAClBA,EAAE,GAAK50B,EAAI40B,EAAE,GAAK,EAClBA,EAAE,GAAK01D,EAAI11D,EAAE,GAAK,CACtB,CAEA,SAASgmK,EAAO7oM,GACZ,IACI7D,EADA2sM,EAAU,GAGd,IAAK3sM,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrB2sM,EAAQ3sM,GAAK,GAAK6D,EAAE7F,WAAWgC,IAAM6D,EAAE7F,WAAWgC,EAAI,IAAM,IAAM6D,EAAE7F,WAAWgC,EAAI,IAAM,KAAO6D,EAAE7F,WAAWgC,EAAI,IAAM,IAE3H,OAAO2sM,CACX,CAEA,SAASC,EAAa1rJ,GAClB,IACIlhD,EADA2sM,EAAU,GAGd,IAAK3sM,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrB2sM,EAAQ3sM,GAAK,GAAKkhD,EAAElhD,IAAMkhD,EAAElhD,EAAI,IAAM,IAAMkhD,EAAElhD,EAAI,IAAM,KAAOkhD,EAAElhD,EAAI,IAAM,IAE/E,OAAO2sM,CACX,CAEA,SAASE,EAAKhpM,GACV,IAEI7D,EACAE,EACA+pJ,EACA7yD,EACA2P,EACAD,EAPAvlG,EAAIsC,EAAE3D,OACNX,EAAQ,CAAC,YAAa,WAAY,WAAY,WAQlD,IAAKS,EAAI,GAAIA,GAAKuB,EAAGvB,GAAK,GACtBysM,EAASltM,EAAOmtM,EAAO7oM,EAAE+3F,UAAU57F,EAAI,GAAIA,KAK/C,IAFAE,GADA2D,EAAIA,EAAE+3F,UAAU57F,EAAI,KACTE,OACX+pJ,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChDjqJ,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EACzBiqJ,EAAKjqJ,GAAK,IAAM6D,EAAE7F,WAAWgC,KAAQA,EAAI,GAAM,GAGnD,GADAiqJ,EAAKjqJ,GAAK,IAAM,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADAysM,EAASltM,EAAO0qJ,GACXjqJ,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBiqJ,EAAKjqJ,GAAK,EAclB,OARAo3F,GADAA,EAAU,EAAJ71F,GACIpB,SAAS,IAAIwC,MAAM,kBAC7BokG,EAAKllG,SAASu1F,EAAI,GAAI,IACtB0P,EAAKjlG,SAASu1F,EAAI,GAAI,KAAO,EAE7B6yD,EAAK,IAAMljD,EACXkjD,EAAK,IAAMnjD,EAEX2lG,EAASltM,EAAO0qJ,GACT1qJ,CACX,CAkDA,SAASutM,EAAKvrM,GACV,IACIE,EADAoC,EAAI,GAER,IAAKpC,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACpBoC,GAAK2oM,EAASjrM,GAAU,EAAJE,EAAQ,EAAM,IAAQ+qM,EAASjrM,GAAU,EAAJE,EAAU,IAEvE,OAAOoC,CACX,CAEA,SAASkpM,EAAIrmK,GACT,IAAI1mC,EACJ,IAAKA,EAAI,EAAGA,EAAI0mC,EAAExmC,OAAQF,GAAK,EAC3B0mC,EAAE1mC,GAAK8sM,EAAKpmK,EAAE1mC,IAElB,OAAO0mC,EAAE1iC,KAAK,GAClB,CAkEA,SAASgpM,EAAOhqM,GAKZ,MAJI,kBAAkB4F,KAAK5F,KACvBA,EAAMiqM,SAASh4F,mBAAmBjyG,KAG/BA,CACX,CA4BA,SAASkqM,EAAkBH,GACvB,IAEIrmK,EAFA95B,EAAQ,GACR1M,EAAS6sM,EAAI7sM,OAGjB,IAAKwmC,EAAI,EAAGA,EAAIxmC,EAAS,EAAGwmC,GAAK,EAC7B95B,EAAM1K,KAAKL,SAASkrM,EAAInoH,OAAOl+C,EAAG,GAAI,KAG1C,OAAO7lC,OAAOC,aAAaoE,MAAMrE,OAAQ+L,EAC7C,CAWA,SAASugM,IAELxuM,KAAKyuM,OACT,CAuTA,OAhbIL,EAAIF,EAAK,UAgBc,oBAAhBvkM,aAAgCA,YAAYjI,UAAU8C,OAC7D,WACI,SAASkqM,EAAMhsJ,EAAKnhD,GAGhB,OAFAmhD,EAAa,EAANA,GAAY,GAET,EACC/9C,KAAKC,IAAI89C,EAAMnhD,EAAQ,GAG3BoD,KAAK4tC,IAAImQ,EAAKnhD,EACzB,CAEAoI,YAAYjI,UAAU8C,MAAQ,SAAUqvE,EAAMC,GAC1C,IAGI/0D,EACA5B,EACAwxL,EACAC,EANArtM,EAASvB,KAAKgD,WACd6yI,EAAQ64D,EAAM76H,EAAMtyE,GACpBkB,EAAMlB,EAUV,OAnWSq0B,YA+VLk+C,IACArxE,EAAMisM,EAAM56H,EAAIvyE,IAGhBs0I,EAAQpzI,EACD,IAAIkH,YAAY,IAG3BoV,EAAMtc,EAAMozI,EACZ14H,EAAS,IAAIxT,YAAYoV,GACzB4vL,EAAc,IAAI9iM,WAAWsR,GAE7ByxL,EAAc,IAAI/iM,WAAW7L,KAAM61I,EAAO92H,GAC1C4vL,EAAY7iM,IAAI8iM,GAETzxL,EACX,CACH,CArCD,GAkHJqxL,EAAS9sM,UAAUqH,OAAS,SAAU1E,GAKlC,OAFArE,KAAK6uM,aAAaR,EAAOhqM,IAElBrE,IACX,EASAwuM,EAAS9sM,UAAUmtM,aAAe,SAAU96B,GACxC/zK,KAAK8uM,OAAS/6B,EACd/zK,KAAK+uM,SAAWh7B,EAASxyK,OAEzB,IACIF,EADAE,EAASvB,KAAK8uM,MAAMvtM,OAGxB,IAAKF,EAAI,GAAIA,GAAKE,EAAQF,GAAK,GAC3BysM,EAAS9tM,KAAKgvM,MAAOjB,EAAO/tM,KAAK8uM,MAAM7xG,UAAU57F,EAAI,GAAIA,KAK7D,OAFArB,KAAK8uM,MAAQ9uM,KAAK8uM,MAAM7xG,UAAU57F,EAAI,IAE/BrB,IACX,EAUAwuM,EAAS9sM,UAAUe,IAAM,SAAUk5D,GAC/B,IAEIt6D,EAEAi0B,EAJA25K,EAAOjvM,KAAK8uM,MACZvtM,EAAS0tM,EAAK1tM,OAEd+pJ,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGzD,IAAKjqJ,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EACzBiqJ,EAAKjqJ,GAAK,IAAM4tM,EAAK5vM,WAAWgC,KAAQA,EAAI,GAAM,GAYtD,OATArB,KAAKkvM,QAAQ5jD,EAAM/pJ,GACnB+zB,EAAM84K,EAAIpuM,KAAKgvM,OAEXrzI,IACArmC,EAAMi5K,EAAkBj5K,IAG5Bt1B,KAAKyuM,QAEEn5K,CACX,EAOAk5K,EAAS9sM,UAAU+sM,MAAQ,WAKvB,OAJAzuM,KAAK8uM,MAAQ,GACb9uM,KAAK+uM,QAAU,EACf/uM,KAAKgvM,MAAQ,CAAC,YAAa,WAAY,WAAY,WAE5ChvM,IACX,EAOAwuM,EAAS9sM,UAAUytM,SAAW,WAC1B,MAAO,CACHF,KAAMjvM,KAAK8uM,MACXvtM,OAAQvB,KAAK+uM,QACb3sL,KAAMpiB,KAAKgvM,MAAMxqM,QAEzB,EASAgqM,EAAS9sM,UAAU0tM,SAAW,SAAUxuM,GAKpC,OAJAZ,KAAK8uM,MAAQluM,EAAMquM,KACnBjvM,KAAK+uM,QAAUnuM,EAAMW,OACrBvB,KAAKgvM,MAAQpuM,EAAMwhB,KAEZpiB,IACX,EAMAwuM,EAAS9sM,UAAUigB,QAAU,kBAClB3hB,KAAKgvM,aACLhvM,KAAK8uM,aACL9uM,KAAK+uM,OAChB,EAQAP,EAAS9sM,UAAUwtM,QAAU,SAAU5jD,EAAM/pJ,GACzC,IACIk3F,EACA2P,EACAD,EAHA9mG,EAAIE,EAMR,GADA+pJ,EAAKjqJ,GAAK,IAAM,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADAysM,EAAS9tM,KAAKgvM,MAAO1jD,GAChBjqJ,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBiqJ,EAAKjqJ,GAAK,EAOlBo3F,GADAA,EAAqB,EAAfz4F,KAAK+uM,SACDvtM,SAAS,IAAIwC,MAAM,kBAC7BokG,EAAKllG,SAASu1F,EAAI,GAAI,IACtB0P,EAAKjlG,SAASu1F,EAAI,GAAI,KAAO,EAE7B6yD,EAAK,IAAMljD,EACXkjD,EAAK,IAAMnjD,EACX2lG,EAAS9tM,KAAKgvM,MAAO1jD,EACzB,EAWAkjD,EAASpsL,KAAO,SAAU/d,EAAKs3D,GAG3B,OAAO6yI,EAASa,WAAWhB,EAAOhqM,GAAMs3D,EAC5C,EAUA6yI,EAASa,WAAa,SAAUr4B,EAASr7G,GACrC,IACIrmC,EAAM84K,EADCF,EAAKl3B,IAGhB,OAAOr7G,EAAM4yI,EAAkBj5K,GAAOA,CAC1C,EASAk5K,EAAS7kM,YAAc,WAEnB3J,KAAKyuM,OACT,EASAD,EAAS7kM,YAAYjI,UAAUqH,OAAS,SAAU2vF,GAC9C,IAEIr3F,EAhPyB86C,EAAOqT,EAAQ8/I,EACxCzrM,EA6OAorM,GA9OyB9yJ,EA8OMn8C,KAAK8uM,MAAMhtM,OA9OV0tD,EA8OkBkpC,EA9OV42G,GA8Oe,GA7OvDzrM,EAAS,IAAIgI,WAAWswC,EAAMn5C,WAAawsD,EAAOxsD,aAE/C8I,IAAI,IAAID,WAAWswC,IAC1Bt4C,EAAOiI,IAAI,IAAID,WAAW2jD,GAASrT,EAAMn5C,YAElCssM,EAAmBzrM,EAASA,EAAO/B,QAyOtCP,EAAS0tM,EAAK1tM,OAKlB,IAFAvB,KAAK+uM,SAAWr2G,EAAI11F,WAEf3B,EAAI,GAAIA,GAAKE,EAAQF,GAAK,GAC3BysM,EAAS9tM,KAAKgvM,MAAOf,EAAagB,EAAK/jG,SAAS7pG,EAAI,GAAIA,KAK5D,OAFArB,KAAK8uM,MAASztM,EAAI,GAAME,EAAS,IAAIsK,WAAWojM,EAAKntM,OAAO0C,MAAMnD,EAAI,KAAO,IAAIwK,WAAW,GAErF7L,IACX,EAUAwuM,EAAS7kM,YAAYjI,UAAUe,IAAM,SAAUk5D,GAC3C,IAGIt6D,EACAi0B,EAJA25K,EAAOjvM,KAAK8uM,MACZvtM,EAAS0tM,EAAK1tM,OACd+pJ,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAIzD,IAAKjqJ,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EACzBiqJ,EAAKjqJ,GAAK,IAAM4tM,EAAK5tM,KAAQA,EAAI,GAAM,GAY3C,OATArB,KAAKkvM,QAAQ5jD,EAAM/pJ,GACnB+zB,EAAM84K,EAAIpuM,KAAKgvM,OAEXrzI,IACArmC,EAAMi5K,EAAkBj5K,IAG5Bt1B,KAAKyuM,QAEEn5K,CACX,EAOAk5K,EAAS7kM,YAAYjI,UAAU+sM,MAAQ,WAKnC,OAJAzuM,KAAK8uM,MAAQ,IAAIjjM,WAAW,GAC5B7L,KAAK+uM,QAAU,EACf/uM,KAAKgvM,MAAQ,CAAC,YAAa,WAAY,WAAY,WAE5ChvM,IACX,EAOAwuM,EAAS7kM,YAAYjI,UAAUytM,SAAW,WACtC,IAnTyBF,EAmTrBruM,EAAQ4tM,EAAS9sM,UAAUytM,SAASxmM,KAAK3I,MAK7C,OAFAY,EAAMquM,MAtTmBA,EAsTQruM,EAAMquM,KArThC/sM,OAAOC,aAAaoE,MAAM,KAAM,IAAIsF,WAAWojM,KAuT/CruM,CACX,EASA4tM,EAAS7kM,YAAYjI,UAAU0tM,SAAW,SAAUxuM,GAIhD,OAFAA,EAAMquM,KAjVV,SAA6B5qM,EAAKirM,GAC9B,IAGGjuM,EAHCE,EAAS8C,EAAI9C,OACd0tM,EAAO,IAAItlM,YAAYpI,GACvBm3F,EAAM,IAAI7sF,WAAWojM,GAGxB,IAAK5tM,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EACzBq3F,EAAIr3F,GAAKgD,EAAIhF,WAAWgC,GAG5B,OAAOiuM,EAAmB52G,EAAMu2G,CACpC,CAsUiBM,CAAoB3uM,EAAMquM,MAAM,GAEtCT,EAAS9sM,UAAU0tM,SAASzmM,KAAK3I,KAAMY,EAClD,EAEA4tM,EAAS7kM,YAAYjI,UAAUigB,QAAU6sL,EAAS9sM,UAAUigB,QAE5D6sL,EAAS7kM,YAAYjI,UAAUwtM,QAAUV,EAAS9sM,UAAUwtM,QAU5DV,EAAS7kM,YAAYyY,KAAO,SAAUs2E,EAAK/8B,GACvC,IACIrmC,EAAM84K,EA7ed,SAAoB7rJ,GAChB,IAEIlhD,EACAE,EACA+pJ,EACA7yD,EACA2P,EACAD,EAPAvlG,EAAI2/C,EAAEhhD,OACNX,EAAQ,CAAC,YAAa,WAAY,WAAY,WAQlD,IAAKS,EAAI,GAAIA,GAAKuB,EAAGvB,GAAK,GACtBysM,EAASltM,EAAOqtM,EAAa1rJ,EAAE2oD,SAAS7pG,EAAI,GAAIA,KAWpD,IAFAE,GAFAghD,EAAKlhD,EAAI,GAAMuB,EAAI2/C,EAAE2oD,SAAS7pG,EAAI,IAAM,IAAIwK,WAAW,IAE5CtK,OACX+pJ,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChDjqJ,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EACzBiqJ,EAAKjqJ,GAAK,IAAMkhD,EAAElhD,KAAQA,EAAI,GAAM,GAIxC,GADAiqJ,EAAKjqJ,GAAK,IAAM,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADAysM,EAASltM,EAAO0qJ,GACXjqJ,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBiqJ,EAAKjqJ,GAAK,EAelB,OATAo3F,GADAA,EAAU,EAAJ71F,GACIpB,SAAS,IAAIwC,MAAM,kBAC7BokG,EAAKllG,SAASu1F,EAAI,GAAI,IACtB0P,EAAKjlG,SAASu1F,EAAI,GAAI,KAAO,EAE7B6yD,EAAK,IAAMljD,EACXkjD,EAAK,IAAMnjD,EAEX2lG,EAASltM,EAAO0qJ,GAET1qJ,CACX,CA8be4uM,CAAW,IAAI3jM,WAAW6sF,KAGrC,OAAO/8B,EAAM4yI,EAAkBj5K,GAAOA,CAC1C,EAEOk5K,CACX,CA3uByB54K,uCCFzB,IAAI9tB,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGy+G,EAAsBxhH,MAAQA,KAAKwhH,qBAAwBpgH,OAAO2G,OAAS,SAAUC,EAAGs6C,GACxFlhD,OAAO+C,eAAe6D,EAAG,UAAW,CAAEX,YAAY,EAAMnH,MAAOoiD,GAClE,EAAI,SAASt6C,EAAGs6C,GACbt6C,EAAW,QAAIs6C,CACnB,GACIm/D,EAAgBzhH,MAAQA,KAAKyhH,cAAiB,SAAU5f,GACxD,GAAIA,GAAOA,EAAIx5F,WAAY,OAAOw5F,EAClC,IAAIh+F,EAAS,CAAC,EACd,GAAW,MAAPg+F,EAAa,IAAK,IAAI9+F,KAAK8+F,EAAe,YAAN9+F,GAAmB3B,OAAOM,UAAUgH,eAAeC,KAAKk5F,EAAK9+F,IAAI+E,EAAgBjE,EAAQg+F,EAAK9+F,GAEtI,OADAy+G,EAAmB39G,EAAQg+F,GACpBh+F,CACX,EACI69G,EAAmB1hH,MAAQA,KAAK0hH,iBAAoB,SAAU7f,GAC9D,OAAQA,GAAOA,EAAIx5F,WAAcw5F,EAAM,CAAE,QAAWA,EACxD,EACAzgG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQsxB,KAAOtxB,EAAQy9G,WAAaz9G,EAAQg+C,SAAWh+C,EAAQ0rB,QAAU1rB,EAAQ0qB,QAAU1qB,EAAQiyC,eAAY,EAC/G,MAAMyrE,EAAkBF,EAAgB,EAAQ,QAChDx9G,EAAQiyC,UAAYyrE,EAAgB72E,QACpC,MAAMnc,EAAU6yF,EAAa,EAAQ,QACrCv9G,EAAQ0qB,QAAUA,EAClB,MAAMizF,EAAYH,EAAgB,EAAQ,MAC1Cx9G,EAAQ0rB,QAAUiyF,EAAU92E,QAC5B,MAAM+2E,EAAW,EAAQ,OACzB1gH,OAAO+C,eAAeD,EAAS,WAAY,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOw6G,EAAS5/D,QAAU,IAC5G9gD,OAAO+C,eAAeD,EAAS,aAAc,CAAEmD,YAAY,EAAMC,IAAK,WAAc,OAAOw6G,EAASH,UAAY,IAChH,MAAMI,EAASL,EAAgB,EAAQ,QACvCx9G,EAAQsxB,KAAOusF,EAAOh3E,oCCStB,IAAWnO,EA5CA/N,EAHXztB,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQ04B,gBAAkB14B,EAAQ2qB,WAAQ,GAE/BA,EA0CA3qB,EAAQ2qB,QAAU3qB,EAAQ2qB,MAAQ,CAAC,IAzC/B,IAAI,MACfA,EAAW,IAAI,MACfA,EAAW,IAAI,MACfA,EAAiB,UAAI,YACrBA,EAAgB,SAAI,WACpBA,EAAgB,SAAI,WACpBA,EAAkB,WAAI,aACtBA,EAAc,OAAI,SAClBA,EAAc,OAAI,SAClBA,EAAY,KAAI,OAChBA,EAAa,MAAI,QACjBA,EAAa,MAAI,QACjBA,EAAW,IAAI,MACfA,EAAY,KAAI,OAChBA,EAAiB,UAAI,WACrBA,EAAY,KAAI,OAChBA,EAAa,MAAI,QACjBA,EAAW,IAAI,MACfA,EAAW,IAAI,MACfA,EAAwB,iBAAI,gBAC5BA,EAAgB,SAAI,UACpBA,EAAY,KAAI,OAChBA,EAAe,QAAI,UACnBA,EAAe,QAAI,UACnBA,EAAe,QAAI,UACnBA,EAAW,IAAI,MACfA,EAAe,QAAI,UACnBA,EAAa,MAAI,QACjBA,EAAa,MAAI,QACjBA,EAAc,OAAI,SAClBA,EAAyB,kBAAI,iBAC7BA,EAAwB,iBAAI,gBAC5BA,EAAwB,iBAAI,kBAC5BA,EAAqB,cAAI,eACzBA,EAAY,KAAI,OAChBA,EAAa,MAAI,QACjBA,EAAc,OAAI,SAClBA,EAAY,KAAI,OAChBA,EAAW,IAAI,MACfA,EAAY,KAAI,OAChBA,EAAY,KAAI,QAGT+N,EAOU14B,EAAQ04B,kBAAoB14B,EAAQ04B,gBAAkB,CAAC,IAN7C,UAAI,YAC/BA,EAA2B,UAAI,YAC/BA,EAAuB,MAAI,QAC3BA,EAA0B,SAAI,WAC9BA,EAAsB,KAAI,OAC1BA,EAA0B,SAAI,6CCrDlC,IAAI90B,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGy+G,EAAsBxhH,MAAQA,KAAKwhH,qBAAwBpgH,OAAO2G,OAAS,SAAUC,EAAGs6C,GACxFlhD,OAAO+C,eAAe6D,EAAG,UAAW,CAAEX,YAAY,EAAMnH,MAAOoiD,GAClE,EAAI,SAASt6C,EAAGs6C,GACbt6C,EAAW,QAAIs6C,CACnB,GACIm/D,EAAgBzhH,MAAQA,KAAKyhH,cAAiB,SAAU5f,GACxD,GAAIA,GAAOA,EAAIx5F,WAAY,OAAOw5F,EAClC,IAAIh+F,EAAS,CAAC,EACd,GAAW,MAAPg+F,EAAa,IAAK,IAAI9+F,KAAK8+F,EAAe,YAAN9+F,GAAmB3B,OAAOM,UAAUgH,eAAeC,KAAKk5F,EAAK9+F,IAAI+E,EAAgBjE,EAAQg+F,EAAK9+F,GAEtI,OADAy+G,EAAmB39G,EAAQg+F,GACpBh+F,CACX,EACAzC,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtD,MAAM8hH,EAAIP,EAAa,EAAQ,QACzBx3F,EAAqB,EAAQ,OAC7BC,EAAe,EAAQ,OACvB2rB,EAAa,EAAQ,OAuI3B3xC,EAAA,QAtIA,MACI,WAAA8K,CAAY6qD,GACR75D,KAAK65D,YAAcA,GAAe,IAAI5vC,EAAmBK,YACzDtqB,KAAKiiH,WAAajiH,KAAKkiH,WAAW,0CACtC,CACA,SAAArnF,CAAUptB,EAAO61B,GAAU,GAAQ,OAAOtjC,KAAKmiH,aAAa,CAAEz1G,KAAMs1G,EAAEnzF,MAAMC,IAAKrhB,SAAS61B,EAAU,CACpG,SAAAyC,CAAUt4B,GAAS,MAAO,CAAEf,KAAMs1G,EAAEnzF,MAAMgS,IAAKpzB,QAAS,CACxD,oBAAAu0C,CAAqB/2B,EAAUkgB,EAAWzO,EAAYqT,EAAU63B,GAC5D,MAAM/jE,EAAS7D,KAAKoiH,0BAA0Bj3E,EAAWzO,EAAYqT,EAAU63B,GAE/E,OADA/jE,EAAOonB,SAAWA,EACXpnB,CACX,CACA,SAAAigC,CAAUrI,GAAY,MAAO,CAAE/uB,KAAMs1G,EAAEnzF,MAAMwN,IAAKZ,WAAY,CAC9D,eAAAT,CAAgBvtB,EAAOwtB,GAAY,MAAO,CAAEvuB,KAAMs1G,EAAEnzF,MAAMkM,UAAWttB,QAAOwtB,WAAY,CACxF,cAAAonF,CAAe50G,EAAO0uB,GAAS,MAAO,CAAEzvB,KAAMs1G,EAAEnzF,MAAMmN,SAAUvuB,QAAO0uB,QAAS,CAChF,cAAAzQ,CAAeje,GAAS,MAAO,CAAEf,KAAMs1G,EAAEnzF,MAAMiS,SAAUrzB,QAAS,CAClE,YAAAiyB,CAAajyB,EAAOwd,EAAUyR,GAAc,MAAO,CAAEhwB,KAAMs1G,EAAEnzF,MAAM4Q,OAAQhyB,QAAOwd,WAAUyR,aAAc,CAC1G,UAAA4lF,CAAW70G,EAAO80G,EAAKv3E,GAAS,MAAO,CAAEt+B,KAAMs1G,EAAEnzF,MAAMkS,KAAMtzB,QAAOs9B,QAASw3E,EAAKv3E,QAAS,CAC3F,YAAA/N,CAAaxvB,EAAOivB,GAAc,MAAO,CAAEhwB,KAAMs1G,EAAEnzF,MAAM+O,OAAQnwB,QAAOivB,aAAc,CACtF,WAAA8lF,CAAY/0G,EAAOzD,GAAQ,MAAO,CAAE0C,KAAMs1G,EAAEnzF,MAAMmS,MAAOvzB,QAAOzD,OAAQ,CACxE,WAAA+3C,CAAYt0C,EAAOuV,EAAWooB,GAAc,MAAO,CAAE1+B,KAAMs1G,EAAEnzF,MAAMoS,MAAOxzB,QAAOuV,YAAWooB,aAAc,CAC1G,SAAA8E,CAAUplB,GAAQ,MAAO,CAAEpe,KAAMs1G,EAAEnzF,MAAMK,IAAKpE,OAAQ,CACtD,UAAA0Q,CAAW/tB,EAAO61B,GAAU,GAAQ,OAAOtjC,KAAKmiH,aAAa,CAAEz1G,KAAMs1G,EAAEnzF,MAAM0N,KAAM9uB,SAAS61B,EAAU,CACtG,cAAAjD,CAAexf,EAAMO,EAAOsb,GACxB,OAAIA,EACO,CAAEhwB,KAAMs1G,EAAEnzF,MAAMqR,UAAWzyB,MAAO,CAACoT,EAAMO,GAAQsb,cACrD,CAAEhwB,KAAMs1G,EAAEnzF,MAAMqR,UAAWzyB,MAAO,CAACoT,EAAMO,GACpD,CACA,UAAAk7F,CAAWp3E,GAAO,MAAO,CAAEx4B,KAAMs1G,EAAEnzF,MAAMS,KAAM4V,MAAO,CACtD,WAAAu9E,CAAY5hG,EAAMO,GAAS,MAAO,CAAE1U,KAAMs1G,EAAEnzF,MAAM+R,MAAOnzB,MAAO,CAACoT,EAAMO,GAAU,CACjF,SAAAshG,GAAc,MAAO,CAAEh2G,KAAMs1G,EAAEnzF,MAAM+Q,IAAO,CAC5C,SAAA+iF,CAAU9yE,GAAQ,MAAO,CAAEnjC,KAAMs1G,EAAEnzF,MAAMU,IAAKsgB,OAAQ,CACtD,mBAAAI,CAAoBnlB,GAAQ,MAAO,CAAEpe,KAAMs1G,EAAEnzF,MAAMM,iBAAkBrE,OAAQ,CAC7E,aAAA83F,CAAcn1G,EAAOsgC,GAAe,MAAO,CAAErhC,KAAMs1G,EAAEnzF,MAAMqS,SAAUzzB,QAAOsgC,cAAe,CAC3F,UAAA9hB,CAAWlB,EAASH,EAAWI,EAAQY,GACnC,OAAIA,EACO,CAAElf,KAAMs1G,EAAEnzF,MAAMiH,KAAM/K,UAASH,YAAWI,SAAQY,SACtD,CAAElf,KAAMs1G,EAAEnzF,MAAMiH,KAAM/K,UAASH,YAAWI,SAAQY,MAAO5rB,KAAK65D,YAAY5zB,eACrF,CACA,aAAA5Z,CAActB,EAASH,EAAWI,EAAQY,GACtC,MAAM8D,EAAU1vB,KAAK65D,YAAYnlC,KAAK3J,EAASH,EAAWI,EAAQY,GAElE,OADA8D,EAAQhjB,KAAOs1G,EAAEnzF,MAAM6G,QAChBhG,CACX,CACA,aAAAoQ,CAAcryB,EAAOuV,GAAa,MAAO,CAAEtW,KAAMs1G,EAAEnzF,MAAMgR,QAASpyB,QAAOuV,YAAa,CACtF,aAAA6/F,CAAcp1G,GAAS,MAAO,CAAEf,KAAMs1G,EAAEnzF,MAAMsS,QAAS1zB,QAAS,CAChE,SAAA01B,CAAU11B,EAAO61B,GAAU,GAAQ,OAAOtjC,KAAKmiH,aAAa,CAAEz1G,KAAMs1G,EAAEnzF,MAAME,IAAKthB,SAAS61B,EAAU,CACpG,aAAAw/E,CAAcr1G,EAAOzD,EAAMs8B,GAAU,MAAO,CAAE55B,KAAMs1G,EAAEnzF,MAAMiM,QAASrtB,QAAOzD,OAAMs8B,OAAQ0B,QAAQ1B,GAAW,CAC7G,WAAAu5E,CAAYpyG,EAAOjL,EAAOjB,GAEtB,OADAiB,EAAQA,GAAS,OACFrC,IAAXoB,EACO,CAAEmL,KAAMs1G,EAAEnzF,MAAMuS,MAAO3zB,QAAOjL,QAAOjB,UACzC,CAAEmL,KAAMs1G,EAAEnzF,MAAMuS,MAAO3zB,QAAOjL,QACzC,CACA,WAAA2pB,CAAY1e,EAAO61B,GAAU,GAAQ,OAAOtjC,KAAKmiH,aAAa,CAAEz1G,KAAMs1G,EAAEnzF,MAAMkR,MAAOtyB,SAAS61B,EAAU,CACxG,YAAA3C,CAAa3d,EAAW0J,GAAY,MAAO,CAAEhgB,KAAMs1G,EAAEnzF,MAAMoR,OAAQjd,YAAW0J,WAAY,CAC1F,oBAAAq2F,CAAqBj4F,GAAQ,MAAO,CAAEpe,KAAMs1G,EAAEnzF,MAAMO,kBAAmBtE,OAAQ,CAC/E,mBAAAk4F,CAAoBl4F,GAAQ,MAAO,CAAEpe,KAAMs1G,EAAEnzF,MAAMQ,iBAAkBvE,OAAQ,CAC7E,yBAAAs3F,CAA0BrkD,EAAYrhC,EAAYqT,EAAU63B,GACxD,OAAIA,EACO,CAAEl7D,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgB2B,UAAWw/B,WAAYA,EAAYrhC,aAAYkrC,YAAW73B,YAC5H,CAAErjC,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgB2B,UAAWw/B,WAAYA,EAAYrhC,aAAYqT,WACxH,CACA,yBAAAkzE,CAA0BtmD,EAAKlvD,GAAS,MAAO,CAAEf,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgB6B,UAAWk+B,MAAKlvD,QAAS,CACtI,qBAAAy1G,CAAsBl5G,EAAMvF,GAAQ,MAAO,CAAEiI,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgB+B,MAAO30B,OAAMvF,OAAQ,CAC9H,wBAAAw5B,CAAyBnB,EAAUr4B,GAAQ,MAAO,CAAEiI,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgBC,SAAUC,WAAUr4B,OAAQ,CAC5I,oBAAA4sC,CAAqBhd,GAAQ,MAAO,CAAE3nB,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgBkC,KAAMzK,OAAQ,CAChH,wBAAA4tB,GAA6B,MAAO,CAAEv1C,KAAMs1G,EAAEnzF,MAAM2Q,WAAY7C,eAAgBqlF,EAAEplF,gBAAgB4B,SAAUqsD,SAAU,IAAIh1C,EAAWstE,SAAc,CACnJ,UAAAjB,CAAW79G,GAIP,MAHe,MAAXA,EAAI,KACJA,EAAMA,EAAI6J,QAAQ,IAAK,OAEpB,EAAIgc,EAAaqvC,cAAcl1D,EAAKrE,KAAK65D,YACpD,CAEA,qBAAA1zB,CAAsBK,GAAW,MAAO,CAAE95B,KAAMs1G,EAAEnzF,MAAMwS,iBAAkBmF,UAAW,CACrF,kBAAArL,CAAmBioF,EAAaC,EAAahoF,GACzC,MAAMx3B,EAAS,CAAE6I,KAAMs1G,EAAEnzF,MAAMqM,eAO/B,OANIkoF,IACAv/G,EAAOgtB,OAASuyF,GAChBC,IACAx/G,EAAOu3B,OAASioF,GAChBhoF,IACAx3B,EAAOw3B,MAAQA,GACZx3B,CACX,CACA,UAAAy/G,CAAW9zF,EAAQuH,EAAauP,GAC5B,MAAMziC,EAAS,CAAE6I,KAAMs1G,EAAEnzF,MAAMyS,KAAM9R,UAGrC,OAFIuH,IACAlzB,EAAOkzB,YAAcA,GAClB/2B,KAAKujH,UAAU1/G,EAAQmkC,QAAQ1B,GAC1C,CACA,WAAAk9E,CAAYh0F,EAAQ8W,GAChB,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM0S,MAAO/R,UAAUwY,QAAQ1B,GACnE,CACA,YAAAm9E,CAAaj0F,EAAQ8W,GACjB,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM2S,OAAQhS,UAAUwY,QAAQ1B,GACpE,CACA,UAAAF,CAAW5W,EAAQ8W,GACf,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM4S,KAAMjS,UAAUwY,QAAQ1B,GAClE,CACA,SAAAD,CAAU7W,EAAQuH,EAAauP,GAC3B,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM6S,IAAKlS,SAAQuH,eAAeiR,QAAQ1B,GAC9E,CACA,UAAAo9E,CAAWl0F,EAAQuH,EAAauP,GAC5B,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM8S,KAAMnS,SAAQuH,eAAeiR,QAAQ1B,GAC/E,CACA,UAAAq9E,CAAWn0F,EAAQuH,EAAauP,GAC5B,OAAOtmC,KAAKujH,UAAU,CAAE72G,KAAMs1G,EAAEnzF,MAAM+S,KAAMpS,SAAQuH,eAAeiR,QAAQ1B,GAC/E,CACA,SAAAi9E,CAAU91G,EAAO64B,GAGb,OAFIA,IACA74B,EAAM64B,OAASA,GACZ74B,CACX,CACA,YAAA00G,CAAa10G,EAAO61B,GAChB,IAAKA,EACD,OAAO71B,EAEX,MAAMf,EAAOe,EAAMf,KACb24B,EAAW53B,EAAMA,MACvB,IAAIm2G,EAAc,GAClB,IAAK,MAAMrrE,KAASlT,EACZkT,EAAM7rC,OAASA,EACfk3G,EAAYrgH,QAAQg1C,EAAM9qC,OAG1Bm2G,EAAYrgH,KAAKg1C,GAIzB,OADA9qC,EAAMA,MAAQm2G,EACPn2G,CACX,uCChKJ,IAAI3F,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGy+G,EAAsBxhH,MAAQA,KAAKwhH,qBAAwBpgH,OAAO2G,OAAS,SAAUC,EAAGs6C,GACxFlhD,OAAO+C,eAAe6D,EAAG,UAAW,CAAEX,YAAY,EAAMnH,MAAOoiD,GAClE,EAAI,SAASt6C,EAAGs6C,GACbt6C,EAAW,QAAIs6C,CACnB,GACIm/D,EAAgBzhH,MAAQA,KAAKyhH,cAAiB,SAAU5f,GACxD,GAAIA,GAAOA,EAAIx5F,WAAY,OAAOw5F,EAClC,IAAIh+F,EAAS,CAAC,EACd,GAAW,MAAPg+F,EAAa,IAAK,IAAI9+F,KAAK8+F,EAAe,YAAN9+F,GAAmB3B,OAAOM,UAAUgH,eAAeC,KAAKk5F,EAAK9+F,IAAI+E,EAAgBjE,EAAQg+F,EAAK9+F,GAEtI,OADAy+G,EAAmB39G,EAAQg+F,GACpBh+F,CACX,EACI69G,EAAmB1hH,MAAQA,KAAK0hH,iBAAoB,SAAU7f,GAC9D,OAAQA,GAAOA,EAAIx5F,WAAcw5F,EAAM,CAAE,QAAWA,EACxD,EACAzgG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQy9G,WAAaz9G,EAAQg+C,cAAW,EACxC,MAAM2hE,EAAmB,EAAQ,OAC3B35F,EAAe,EAAQ,OACvB2rB,EAAa,EAAQ,OACrBjnB,EAAU6yF,EAAa,EAAQ,QAC/BI,EAAYH,EAAgB,EAAQ,MACpCK,EAASL,EAAgB,EAAQ,QACjC7yF,EAAQD,EAAQC,MAChBi1F,EAASl1F,EAAQgO,gBACvB,IAAIhU,EACJ,MAAMgN,EAAU,IAAIisF,EAAU92E,QAM9B,SAAS42E,EAAWhsF,GAChBouF,IAEA,IAAIlgH,EAASmgH,EADbruF,EAmrBJ,SAAqBA,GACjB,OAAOsuF,EAAqBtuF,EAAI,GACpC,CArrBSuuF,CAAYvuF,IAEjB,MAAoB,UAAhB9xB,EAAO6I,KACA7I,EAAO43B,SAAS,GACpB53B,CACX,CAEA,SAASkgH,IACLn7F,EAAU,CAAE20C,SAAS,EAAOD,OAAQ,GAAI7wB,MAAO,GAAIrB,WAAY,GAAI/D,MAAO,GAC9E,CACA,SAAS28E,EAAmBruF,GAMxB,OAFIA,EAAGjpB,OAASmiB,EAAM4Q,QAAU9J,EAAGjpB,OAASmiB,EAAMqS,UAAYvL,EAAGjpB,OAASmiB,EAAMmS,QAC5EpY,EAAQ20C,SAAU,GACd5nC,EAAGjpB,MACP,KAAKmiB,EAAM2Q,WAAY,OAAO2kF,EAAoBxuF,GAClD,KAAK9G,EAAMgS,IAAK,OAAOujF,EAAiBzuF,EAAI9G,EAAMgS,KAClD,KAAKhS,EAAMwN,IAAK,OAgIxB,SAAsB1G,GAClB,IAAI8F,EAAW9F,EAAG8F,SAASt2B,IAAIk/G,GAC/B,OAAwB,IAApB5oF,EAASl6B,OACF,KACJ,CACHmL,KAAM,MACNi8C,QAASltB,EAEjB,CAxI+B6oF,CAAa3uF,GACpC,KAAK9G,EAAMkM,UAAW,OAwI9B,SAA4BpF,GACxB,MAAO,CACHjpB,KAAM,QACN1D,SAAU,CAAC,EACXwsG,UAAW,YACXv6E,SAAUtF,EAAGsF,SAAS91B,IAAIk/G,GAC1BhpF,MAAO0mF,EAAOh3E,QAAQzH,QAAQ,CAC1B0gF,EAAmBruF,EAAGloB,SAGlC,CAlJqC82G,CAAmB5uF,GAChD,KAAK9G,EAAMmN,SAAU,OAAOooF,EAAiBzuF,EAAI9G,EAAMmN,UACvD,KAAKnN,EAAMiS,SAAU,OAiJ7B,SAA2BnL,GACvB,IAAI9xB,EAASmgH,EAAmBruF,EAAGloB,OAGnC,OADA5J,EAAO43B,SAAS,GAAGsU,UAAW,EACvBlsC,CACX,CAtJoC2gH,CAAkB7uF,GAC9C,KAAK9G,EAAM4Q,OAAQ,OAsJ3B,SAAyB9J,GACrB,OAAI/M,EAAQ20C,SACR30C,EAAQ00C,OAAO/5D,KAAKoyB,GACbquF,EAAmBruF,EAAGloB,QAE1Bs0G,EAAOh3E,QAAQzH,QAAQ,CAC1B0gF,EAAmBruF,EAAGloB,OACtB,CACIf,KAAM,OACNue,SAAU0K,EAAG1K,SACbyR,WAAYynF,EAAoBxuF,EAAG+G,cAG/C,CAnKkC+nF,CAAgB9uF,GAC1C,KAAK9G,EAAMkS,KAAM,OAmKzB,SAAuBpL,GACnB,MAAM9xB,EAASmgH,EAAmBruF,EAAGloB,OAErC,IAAI5D,EAAMhG,EASV,MAPoB,UAAhBA,EAAO6I,OACP7C,EAAMhG,EAAO43B,SAAS,IAE1B5xB,EAAIgqE,KAAO,CACP9oC,QAASpV,EAAGoV,QACZC,MAAOrV,EAAGqV,OAEPnnC,CACX,CAhLgC6gH,CAAc/uF,GACtC,KAAK9G,EAAM+O,OAAQ,OAgL3B,SAAyBjI,GACrB,MAAO,CACHjpB,KAAM,QACN+uB,SAAUsmF,EAAOh3E,QAAQzH,QAAQ,CAC7B0gF,EAAmBruF,EAAGloB,OACtB,CAAEf,KAAM,SAAUgwB,WAAYynF,EAAoBxuF,EAAG+G,eAGjE,CAxLkCioF,CAAgBhvF,GAC1C,KAAK9G,EAAMmS,MAAO,OAwL1B,SAAwBrL,GACpB,MAAO,CACHjpB,KAAM,QACN+uB,SAAUsmF,EAAOh3E,QAAQzH,QAAQ,CAAC0gF,EAAmBruF,EAAGloB,SACxDzD,KAAM2rB,EAAG3rB,KAEjB,CA9LiC46G,CAAejvF,GACxC,KAAK9G,EAAMoS,MAAO,OA8L1B,SAAwBtL,GACpB,MAAMloB,EAAQu2G,EAAmBruF,EAAGloB,OAC9Bo3G,EAAOlvF,EAAGyV,WAAWjmC,IAAI2/G,GAI/B,OAHAl8F,EAAQwiB,WAAW7nC,QAAQshH,GAE3Bj8F,EAAQ6jB,MAAMlpC,QAAQoyB,EAAG3S,WAClBvV,CACX,CArMiCs3G,CAAepvF,GACxC,KAAK9G,EAAM0N,KAAM,OAqMzB,SAAuB5G,GAInB,OAHYosF,EAAOh3E,QAAQzH,QAAQ3N,EAAGloB,MAAMtI,IAAI6+G,IAGrChnF,QAAO,CAACn5B,EAAQ6+C,KACN,QAAbA,EAAIh2C,MAAmC,GAAjB7I,EAAOtC,QAAkD,QAAnCsC,EAAOA,EAAOtC,OAAS,GAAGmL,KACtE7I,EAAON,KAAKm/C,GAGZ7+C,EAAOA,EAAOtC,OAAS,GAAGonD,QAAQplD,QAAQm/C,EAAIiG,SAE3C9kD,IACR,GACP,CAlNgCmhH,CAAcrvF,GACtC,KAAK9G,EAAMqR,UAAW,OAkN9B,SAA2BvK,GACvB,MAAMwsB,EAAW,CACbz1C,KAAM,WACN+uB,SAAU,CACNuoF,EAAmBruF,EAAGloB,MAAM,MAUpC,OAPIkoB,EAAG+G,YACHylB,EAAS1mB,SAASl4B,KAAK,CACnBmJ,KAAM,SACNgwB,WAAYynF,EAAoBxuF,EAAG+G,cAG3CylB,EAAS1mB,SAAWsmF,EAAOh3E,QAAQzH,QAAQ6e,EAAS1mB,UAC7CsmF,EAAOh3E,QAAQzH,QAAQ,CAC1B0gF,EAAmBruF,EAAGloB,MAAM,IAC5B00C,GAER,CApOqC8iE,CAAkBtvF,GAC/C,KAAK9G,EAAM+R,MAAO,OAoO1B,SAAwBjL,GACpB,IAAI8F,EAAWuoF,EAAmBruF,EAAGloB,MAAM,IAK3C,MAJsB,UAAlBguB,EAAS/uB,OACT+uB,EAAWA,EAASA,UACnB9wB,MAAMC,QAAQ6wB,KACfA,EAAW,CAACA,IACTsmF,EAAOh3E,QAAQzH,QAAQ,CAC1B0gF,EAAmBruF,EAAGloB,MAAM,IAC5B,CACIf,KAAM,QACN+uB,SAAUA,IAGtB,CAjPiCypF,CAAevvF,GACxC,KAAK9G,EAAM+Q,IAAK,MAAO,CAAC,EACxB,KAAK/Q,EAAMqS,SAAU,OAgP7B,SAA0BvL,GAEtB,OADA/M,EAAQye,MAAM9jC,QAAQoyB,EAAGoY,aAClBi2E,EAAmBruF,EAAGloB,MACjC,CAnPoC03G,CAAiBxvF,GAC7C,KAAK9G,EAAMiH,KAAM,OAmPzB,SAAuBH,GACnB,MAAO,CACHjpB,KAAM,MACNi8C,QAAS,CAAC,CACF59B,QAAS4K,EAAG5K,QACZH,UAAWw6F,EAAuBzvF,EAAG/K,WACrCI,OAAQ2K,EAAG3K,SAG3B,CA5PgCq6F,CAAc1vF,GACtC,KAAK9G,EAAM6G,QAAS,OAAO2uF,EAAiB1uF,GAC5C,KAAK9G,EAAMgR,QAAS,OAAOukF,EAAiBzuF,EAAI9G,EAAMgR,SACtD,KAAKhR,EAAMsS,QAAS,OAiX5B,SAA0BxL,GACtB,IAAI9xB,EAASmgH,EAAmBruF,EAAGloB,OAGnC,OADA5J,EAAO43B,SAAS,GAAG6pF,SAAU,EACtBzhH,CACX,CAtXmC0hH,CAAiB5vF,GAC5C,KAAK9G,EAAMiM,QAAS,OAsX5B,SAA0BnF,GACtB,IAAI8F,EAAWuoF,EAAmBruF,EAAGloB,OAKrC,MAJsB,UAAlBguB,EAAS/uB,OACT+uB,EAAWA,EAASA,UACnB9wB,MAAMC,QAAQ6wB,KACfA,EAAW,CAACA,IACT,CACH/uB,KAAM,UAEN1C,KAAM2rB,EAAG3rB,KACTs8B,OAAQ3Q,EAAG2Q,OACX7K,WAER,CAnYmC+pF,CAAiB7vF,GAC5C,KAAK9G,EAAMuS,MAAO,OAmY1B,SAAwBzL,GACpB,IAAI9xB,EAASmgH,EAAmBruF,EAAGloB,OAE/B5D,EAAMhG,EAOV,OANIA,EAAO6I,MAAwB,UAAhB7I,EAAO6I,OACtB7C,EAAMhG,EAAO43B,SAAS,IACT,IAAb9F,EAAGnzB,QACHqH,EAAI7I,OAAS20B,EAAGnzB,YACFrC,IAAdw1B,EAAGp0B,SACHsI,EAAIwR,MAAQsa,EAAGp0B,QACZsC,CACX,CA9YiC4hH,CAAe9vF,GACxC,KAAK9G,EAAMkR,MAAO,OA8Y1B,SAAwBpK,GACpB,MAAO,CACHjpB,KAAM,QACN+uB,SAAU9F,EAAGloB,MAAMtI,IAAI6+G,GAAoB7+G,IAAIugH,GAEvD,CAnZiCC,CAAehwF,GACxC,KAAK9G,EAAMoR,OAAQ,OAmZ3B,SAAyBtK,GAErB,MAAO,CACHjpB,KAAM,SACNW,OAAQsoB,EAAGjJ,SAASvnB,KAAI28C,IACpB,IAAIj+C,EAAS,CAAC,EACd,IAAK,IAAIy+C,KAAK3sB,EAAG3S,UAAW,CACxB,IAAI9d,EAAI,IAAIo9C,EAAEpiD,QACV4hD,EAAQ58C,GACRrB,EAAOqB,GAAK48C,EAAQ58C,GAEpBrB,EAAOqB,QAAK/E,CACpB,CACA,OAAO0D,CAAM,IAGzB,CAnakC+hH,CAAgBjwF,GAE1C,KAAK9G,EAAMwS,iBAAkB,OAwgBrC,SAAkC1L,GAK9B,MAAO,CAAE3sB,SAAU,CAAC,EAAG0D,KAAM,SAAU85B,QAJvB7Q,EAAG6Q,QAAQrhC,KAAIqyB,GACZwsF,EAAmBxsF,GACpBgP,QAAQ,KAG9B,CA9gB4Cq/E,CAAyBlwF,GAC7D,KAAK9G,EAAMqM,cAAe,OA8gBlC,SAA+BvF,GAC3B,IAAI7wB,EACJ,IACIghH,EADAzqF,EAAQ1F,EAAG0F,MAEf,GAAIA,GAASA,EAAM3uB,OAASmiB,EAAMkS,KAAM,CACpC,IAAI8yC,EAAOx4C,EACXA,EAAQw4C,EAAKpmE,MACbq4G,EAAM,CAAE/6E,QAAS8oC,EAAK9oC,QAASC,MAAO6oC,EAAK7oC,MAC/C,CACA,MAAMxE,EAAU,CAAC,CACTkvE,WAAY,eACZ7kF,OAAQk1F,EAAsBpwF,EAAG9E,QAAU,IAC3CuK,OAAQ2qF,EAAsBpwF,EAAGyF,QAAU,MAMnD,GAHI0qF,IACAt/E,EAAQ,GAAGw/E,MAAQF,IAElBzqF,GAAUA,EAAM3uB,OAASmiB,EAAMwN,KAAiC,IAA1BhB,EAAMI,SAASl6B,OACtDilC,EAAQ,GAAGnL,MAAQ,OAClB,CACD,MAAMwY,EAAS,GACf,IAAIhwC,EAASmgH,EAAmBC,EAAqB5oF,EAAOwY,IAO5D,GANoB,UAAhBhwC,EAAO6I,KACP85B,EAAQ,GAAGnL,MAAQx3B,EAAO43B,SAE1B+K,EAAQ,GAAGnL,MAAQ,CAACx3B,GAGpBgwC,EAAOtyC,OAAS,EAAG,CACnB,GAAsB,IAAlBsyC,EAAOtyC,OACP,MAAM,IAAIQ,MAAM,iFAEqD,MAA/C,QAApB+C,EAAK+uC,EAAO,UAAuB,IAAP/uC,OAAgB,EAASA,EAAG5E,SAC1DsmC,EAAQ,GAAGnL,MAAQ,CAAC,CAAE3uB,KAAM,QAAS+uB,SAAU+K,EAAQ,GAAGnL,MAAOrxB,KAAM6pC,EAAO,KACtF,CACJ,CAuBA,OArBKle,EAAG9E,QAAW8E,EAAG0F,MAKZ1F,EAAGyF,QAAWzF,EAAG0F,OAUjB1F,EAAGyF,QAAUzF,EAAG0F,OAA2B,QAAlB1F,EAAG0F,MAAM3uB,OACpC,EAAIm3G,EAAiBoC,YAAYtwF,EAAG9E,OAAQ8E,EAAG0F,MAAMI,mBAC9C+K,EAAQ,GAAGnL,MAClBmL,EAAQ,GAAGkvE,WAAa,uBAZrBlvE,EAAQ,GAAGpL,cACXoL,EAAQ,GAAGnL,MACd1F,EAAG9E,OAAOsN,MAAKzO,GAAwC,aAA7BA,EAAQ3E,QAAQyC,UACX,aAA/BkC,EAAQ9E,UAAU4C,UACU,aAA5BkC,EAAQ1E,OAAOwC,WACfgZ,EAAQ,GAAGkvE,WAAa,cAExBlvE,EAAQ,GAAGkvE,WAAa,WAZ5BlvE,EAAQ,GAAGkvE,WAAa,gBACjBlvE,EAAQ,GAAG3V,cACX2V,EAAQ,GAAGnL,OAkBf,CAAEryB,SAAU,CAAC,EAAG0D,KAAM,SAAU85B,UAC3C,CA1kByC0/E,CAAsBvwF,GACvD,KAAK9G,EAAMyS,KAAM,OA0kBzB,SAAuB3L,GAEnB,MAAM6Q,EAAU,CAAC,CAAE95B,KAAM,OAAQ45B,OAAQ0B,QAAQrS,EAAG2Q,QAAS9W,OAAQmG,EAAGnG,SAGxE,OAFImG,EAAGoB,cACHyP,EAAQ,GAAGzP,YAAcpB,EAAGoB,aACzB,CAAE/tB,SAAU,CAAC,EAAG0D,KAAM,SAAU85B,UAC3C,CAhlBgC2/E,CAAcxwF,GACtC,KAAK9G,EAAM0S,MAAO,OAglB1B,SAAwB5L,GACpB,OAAOywF,EAAyBzwF,EAAI,QACxC,CAllBiC0wF,CAAe1wF,GACxC,KAAK9G,EAAM2S,OAAQ,OAklB3B,SAAyB7L,GACrB,OAAOywF,EAAyBzwF,EAAI,SACxC,CAplBkC2wF,CAAgB3wF,GAC1C,KAAK9G,EAAM4S,KAAM,OAolBzB,SAAuB9L,GACnB,OAAOywF,EAAyBzwF,EAAI,OACxC,CAtlBgC4wF,CAAc5wF,GACtC,KAAK9G,EAAM6S,IAAK,OAmmBxB,SAAsB/L,GAClB,OAAO6wF,EAA6B7wF,EAAI,MAC5C,CArmB+B8wF,CAAa9wF,GACpC,KAAK9G,EAAM8S,KAAM,OAqmBzB,SAAuBhM,GACnB,OAAO6wF,EAA6B7wF,EAAI,OAC5C,CAvmBgC+wF,CAAc/wF,GACtC,KAAK9G,EAAM+S,KAAM,OAumBzB,SAAuBjM,GACnB,OAAO6wF,EAA6B7wF,EAAI,OAC5C,CAzmBgCgxF,CAAchxF,GAE1C,MAAM,IAAI5zB,MAAM,0BAA0B4zB,EAAGjpB,OACjD,CACA,SAASy3G,EAAoBr2E,GACzB,OAAQA,EAAKnR,gBACT,KAAKmnF,EAAOvlF,UAAW,OA0B/B,SAAsCuP,GAClC,MAAMjqC,EAAS,CACX64B,WAAYynF,EAAoBr2E,EAAKpR,YACrChwB,KAAM,YACNk6G,YAAa94E,EAAKiwB,WAClBhuB,SAAUjC,EAAKiC,UAInB,OAFIjC,EAAK85B,YACL/jE,EAAO+jE,UAAY95B,EAAK85B,WACrB/jE,CACX,CApCsCgjH,CAA6B/4E,GAC3D,KAAKg2E,EAAOrlF,UAAW,OAoC/B,SAAsCqP,GAClC,MAAO,CACHphC,KAAM,YACNowB,SAAUgR,EAAK6uB,IAAM,YAAc,SACnCl4D,KAAM,CAAC,CACCiI,KAAM,QACN+uB,SAAUsmF,EAAOh3E,QAAQzH,QAAQ,CAAC0gF,EAAmBl2E,EAAKrgC,WAG1E,CA7CsCq5G,CAA6Bh5E,GAC3D,KAAKg2E,EAAOnlF,MAAO,OA6C3B,SAAkCmP,GAC9B,MAAO,CACHphC,KAAM,eAENq6G,SAAUj5E,EAAK9jC,KACfvF,KAAMqpC,EAAKrpC,KAAKU,IAAIg/G,GAE5B,CApDkC6C,CAAyBl5E,GACnD,KAAKg2E,EAAOjnF,SAAU,OAoD9B,SAAqCiR,GACjC,GAAsB,SAAlBA,EAAKhR,SAAqB,CAG1B,MAFe,CAAEJ,WAAYynF,EAAoBr2E,EAAKrpC,KAAK,IAC3DZ,YAAoB,EAExB,CACA,MAAMA,EAAS,CACX6I,KAAM,YACNowB,SAAUgR,EAAKhR,SACfr4B,KAAMqpC,EAAKrpC,KAAKU,IAAIg/G,IAIxB,MAFwB,OAApBtgH,EAAOi5B,UAAyC,UAApBj5B,EAAOi5B,WACnCj5B,EAAOY,KAAO,CAACZ,EAAOY,KAAK,IAAIyiC,OAAO,CAACrjC,EAAOY,KAAKD,MAAM,MACtDX,CACX,CAlEqCojH,CAA4Bn5E,GACzD,KAAKg2E,EAAOhlF,KAAM,OAkE1B,SAAiCgP,GAC7B,OAAOA,EAAKzZ,IAChB,CApEiC6yF,CAAwBp5E,GACjD,KAAKg2E,EAAOtlF,SAAU,OAoE9B,SAAqCsP,GACjC,OAAOA,EAAK+8C,QAChB,CAtEqCs8B,CAA4Br5E,GAE7D,MAAM,IAAI/rC,MAAM,qCAAqC+rC,EAAKnR,iBAC9D,CACA,SAASyoF,EAAuBt6F,GAC5B,OAAQA,EAAKpe,MACT,KAAKmiB,EAAMC,IAAK,OA0YxB,SAAsBhE,GAClB,MAAMs8F,EAASt8F,EAAKrd,MAAMtI,IAAIigH,GAC9B,OAAIgC,EAAO/kF,OAAMgC,GAAS,aAAcA,GAA4B,MAAnBA,EAAMgjF,WAC5C,CACH36G,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC,CACAqC,KAAM,OACN26G,SAAU,IACVh9G,MAAO03G,EAAOh3E,QAAQzH,QAAQ8jF,EAAOjiH,KAAIk/B,GAASA,EAAMh6B,YAIjE,CACHqC,KAAM,OACN26G,SAAU,IACVh9G,MAAO+8G,EAEf,CA5Z+BE,CAAax8F,GACpC,KAAK+D,EAAMK,IAAK,OA4ZxB,SAAsBpE,GAClB,GAAIA,EAAKA,KAAKpe,OAASmiB,EAAMU,IAAK,CAC9B,MAAMg4F,EAAMz8F,EAAKA,KAAK+kB,KAAK1qC,KAAK+/B,IACrB,CACHx4B,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC66B,OAGhB,OAAIqiF,EAAIhmH,QAAU,EACP,CACHmL,KAAM,OACN26G,SAAU,IACVh9G,MAAOk9G,GAER,CACH76G,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC,CACAqC,KAAM,OACN26G,SAAU,IACVh9G,MAAOk9G,IAGvB,CACA,MAAO,CACH76G,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC+6G,EAAuBt6F,EAAKA,OAE5C,CA1b+B08F,CAAa18F,GACpC,KAAK+D,EAAMS,KAAM,OA0bzB,SAAuBxE,GACnB,OAAOA,EAAKoa,GAChB,CA5bgCuiF,CAAc38F,GACtC,KAAK+D,EAAMU,IAAK,OA4bxB,SAAsBzE,GAClB,OAAIA,EAAK+kB,KAAKtuC,QAAU,EACb,CACHmL,KAAM,OACN26G,SAAU,IACVh9G,MAAOygB,EAAK+kB,MAEb,CACHnjC,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC,CACAqC,KAAM,OACN26G,SAAU,IACVh9G,MAAOygB,EAAK+kB,OAG5B,CA5c+B63E,CAAa58F,GACpC,KAAK+D,EAAMM,iBAAkB,OA4crC,SAAgCrE,GAC5B,MAAO,CACHpe,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC+6G,EAAuBt6F,EAAKA,OAE5C,CAld4C68F,CAAuB78F,GAC3D,KAAK+D,EAAME,IAAK,OAkdxB,SAAsBjE,GAClB,MAAO,CACHpe,KAAM,OACN26G,SAAU,IACVh9G,MAAOygB,EAAKrd,MAAMtI,IAAIigH,GAE9B,CAxd+BwC,CAAa98F,GACpC,KAAK+D,EAAMO,kBAAmB,OAwdtC,SAAiCtE,GAC7B,MAAO,CACHpe,KAAM,OACN26G,SAAU,IACVh9G,MAAO,CAAC+6G,EAAuBt6F,EAAKA,OAE5C,CA9d6C+8F,CAAwB/8F,GAC7D,KAAK+D,EAAMQ,iBAAkB,OA8drC,SAAgCvE,GAE5B,MAAO,CACHpe,KAAM,OAEN26G,SAAU,IACVh9G,MAAO,CAAC+6G,EAAuBt6F,EAAKA,OAE5C,CAte4Cg9F,CAAuBh9F,GAE/D,MAAM,IAAI/oB,MAAM,qBAAqB+oB,EAAKpe,OAC9C,CACA,SAASq7G,EAAc1zF,GACnB,OAAO,EAAInK,EAAa8D,cAAcqG,EAC1C,CAoDA,SAASqxF,EAAej4G,GACpB,OAAK9C,MAAMC,QAAQ6C,GAEE,IAAjBA,EAAMlM,OACCkM,EAAM,GACV,CACHf,KAAM,QACN+uB,SAAUhuB,GALHA,CAOf,CAGA,SAASq3G,EAAwBnvF,GAC7B,OAAOA,CACX,CA4IA,SAAS0uF,EAAiB1uF,GACtB,MAAO,CACH5K,QAAS4K,EAAG5K,QACZH,UAAW+K,EAAG/K,UACdI,OAAQ2K,EAAG3K,OAEnB,CACA,SAASg9F,EAA2B9iH,EAAGC,GACnC,IAAI8iH,EAAKlG,EAAOh3E,QAAQm9E,aAAahjH,GAAK6iH,EAAc7iH,GAAKA,EAC7D,GAAkB,iBAAP+iH,GACP,GAAI9iH,EAAI8iH,GACJ,OAAO9iH,EAAI8iH,QAEd,GAAIt9G,MAAMC,QAAQ1F,GACnBA,EAAIA,EAAEC,KAAIgB,GAAK6hH,EAA2B7hH,EAAGhB,UAG7C,IAAK,IAAI1E,KAAOW,OAAOD,KAAK+D,GACxBA,EAAEzE,GAAOunH,EAA2B9iH,EAAEzE,GAAM0E,GAEpD,OAAOD,CACX,CACA,SAASk/G,EAAiBzuF,EAAIjpB,GAC1B,MAAM7I,EAAS,CACX6I,KAAM,QACN1D,SAAU,CAAC,GAGTm/G,EAAStkH,EACf,IAAImf,EACAtW,IAASmiB,EAAMgR,SACfh8B,EAAO2xG,UAAY,SACnBxyF,EAAY2S,EAAG3S,WAEVtW,IAASmiB,EAAMgS,IACpBh9B,EAAO2xG,UAAY,MAEd9oG,IAASmiB,EAAMmN,WACpBn4B,EAAO2xG,UAAY,WACnBxyF,EAAY2S,EAAGwG,OAInB,MAAMmhC,EAAS10C,EAAQ00C,OACjB7wB,EAAQ7jB,EAAQ6jB,MAChBrB,EAAaxiB,EAAQwiB,WACrB/D,EAAQze,EAAQye,MACtB08E,IACAn7F,EAAQ20C,SAAU,EAClB,IAAI9vD,EAAQs0G,EAAOh3E,QAAQzH,QAAQ,CAAC0gF,EAAmBruF,EAAGloB,SACrC,IAAjBA,EAAMlM,QAAkC,UAAlBkM,EAAM,GAAGf,OAC/Be,EAAQA,EAAM,GAAGguB,UACrB53B,EAAOw3B,MAAQ5tB,EACf,IAAIi/B,EAAc,CAAC,EAEnB,IAAK,IAAIrB,KAAOziB,EAAQwiB,WACpBsB,EAAYq7E,EAAc18E,EAAIpgB,WAAak5F,EAAoB94E,GAEnE,IAAI+8E,EAAa,CAAC,EAClB,IAAK,IAAI/mH,EAAIunB,EAAQ00C,OAAO/7D,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACjD,IAAI8E,EAAIyiB,EAAQ00C,OAAOj8D,GACvB+mH,EAAWL,EAAc5hH,EAAE8kB,WAAa+8F,EAA2B7D,EAAoBh+G,EAAEu2B,YAAagQ,EAC1G,CAkCA,GAjCI9jB,EAAQ6jB,MAAMlrC,OAAS,IACvB4mH,EAAO17E,MAAQ7jB,EAAQ6jB,MAAMtnC,KAAI8lB,IAC7B,IAAIq3B,EAAIylE,EAAc98F,GACtB,GAAIm9F,EAAW9lE,GAAI,CACf,IAAIz+C,EAASukH,EAAW9lE,GAExB,cADO8lE,EAAW9lE,GACX,CACHr3B,WACAyR,WAAY74B,EAEpB,CACA,MAAO,CAAE64B,WAAYzR,EAAU,KAGnCrC,EAAQye,MAAM9lC,OAAS,IACvB4mH,EAAO9gF,MAAQze,EAAQye,MAAMliC,IAAI6+G,GAAoB7+G,KAAI6C,GAAKA,EAAEqgH,WAAargH,EAAI,CAAG00B,WAAY10B,MAEhGgb,IACAmlG,EAAOnlG,UAAYA,EAAU7d,KAAKkvB,IAC9B,IAAIiuB,EAAIylE,EAAc1zF,GACtB,OAAI+zF,EAAW9lE,GACJ,CACHr3B,SAAUoJ,EACVqI,WAAY0rF,EAAW9lE,IAExBjuB,CAAI,IAGiB,IAA5B8zF,EAAOnlG,UAAUzhB,SACjB4mH,EAAOnlG,UAAY,CAAC,IAAI6yB,EAAWstE,YAIvCt/G,EAAOw3B,MAAM95B,OAAS,GAAoD,WAA/CsC,EAAOw3B,MAAMx3B,EAAOw3B,MAAM95B,OAAS,GAAGmL,KAAmB,CACpF,MAAMzH,EAASpB,EAAOw3B,MAAMx3B,EAAOw3B,MAAM95B,OAAS,GAC9C+mH,EAAqBrjH,EAAQ7D,OAAOD,KAAKurC,MACzCy7E,EAAOI,OAASxG,EAAOh3E,QAAQzH,QAAQ,CAAC0kF,EAA2B/iH,EAAOy3B,WAAYgQ,KACtF7oC,EAAOw3B,MAAMvY,QAAQ,GAE7B,CAMA,OALA8F,EAAQ00C,OAASA,EACjB10C,EAAQ6jB,MAAQA,EAChB7jB,EAAQwiB,WAAaA,EACrBxiB,EAAQye,MAAQA,EAET,CAAE36B,KAAM,QAAS+uB,SAAU,CAAC0sF,GACvC,CACA,SAASG,EAAqBtgH,EAAGwgH,GAC7B,OAAIzG,EAAOh3E,QAAQm9E,aAAalgH,GACrBwgH,EAAK1+G,QAAQi+G,EAAc//G,KAAO,EACzC2C,MAAMC,QAAQ5C,GACPA,EAAEm2B,MAAKh4B,GAAKmiH,EAAqBniH,EAAGqiH,KAC3CxgH,IAAM5G,OAAO4G,GACN5G,OAAOD,KAAK6G,GAAGm2B,MAAK19B,GAAO6nH,EAAqBtgH,EAAEvH,GAAM+nH,KAC5DA,EAAK1+G,QAAQ9B,IAAM,CAC9B,CAkPA,SAASo+G,EAAyBzwF,EAAIjpB,GAClC,MAAM85B,EAAU,CAAC,CAAE95B,OAAM45B,OAAQ0B,QAAQrS,EAAG2Q,UAU5C,MARkB,YAAd3Q,EAAGnG,OACHgX,EAAQ,GAAG5a,MAAQ,CAAEmf,SAAS,GACX,UAAdpV,EAAGnG,OACRgX,EAAQ,GAAG5a,MAAQ,CAAEof,OAAO,GACT,QAAdrV,EAAGnG,OACRgX,EAAQ,GAAG5a,MAAQ,CAAE6F,KAAK,GAE1B+U,EAAQ,GAAG5a,MAAQ,CAAElf,KAAM,QAAS1C,KAAM2rB,EAAGnG,QAC1C,CAAExmB,SAAU,CAAC,EAAG0D,KAAM,SAAU85B,UAC3C,CAUA,SAASggF,EAA6B7wF,EAAIjpB,GACtC,MAAM85B,EAAU,CAAC,CAAE95B,OAAM45B,OAAQ0B,QAAQrS,EAAG2Q,UAG5C,OAFAE,EAAQ,GAAGhX,OAAuB,YAAdmG,EAAGnG,OAAuB,CAAE9iB,KAAM,QAASq+B,SAAS,GAAS,CAAEr+B,KAAM,QAAS1C,KAAM2rB,EAAGnG,QAC3GgX,EAAQ,GAAGzP,YAAiC,YAAnBpB,EAAGoB,YAA4B,CAAErqB,KAAM,QAASq+B,SAAS,GAAS,CAAEr+B,KAAM,QAAS1C,KAAM2rB,EAAGoB,aAC9G,CAAE/tB,SAAU,CAAC,EAAG0D,KAAM,SAAU85B,UAC3C,CAEA,SAASu/E,EAAsBtqF,GAC3B,IAAKA,EACD,MAAO,GACX,MAAMoY,EAAS,CAAC,EAOhB,OANApY,EAAS/wB,SAAQglB,IACb,MAAM9D,EAAQ8D,EAAQ9D,MAAM1rB,MACvB2zC,EAAOjoB,KACRioB,EAAOjoB,GAAS,IACpBioB,EAAOjoB,GAAOroB,KAAKmsB,EAAQ,IAExBtuB,OAAOD,KAAK0yC,GAAQ1uC,KAAIymB,GACb,KAAVA,EACO,CAAElf,KAAM,MAAOi8C,QAAS9U,EAAOjoB,GAAOzmB,IAAIk/G,IAC9C,CAAE33G,KAAM,QAASi8C,QAAS9U,EAAOjoB,GAAOzmB,IAAIk/G,GAAmBr6G,KAAM6pC,EAAOjoB,GAAO,GAAGA,QAErG,CAKA,SAASq4F,EAAqBtuF,EAAIke,GAC9B,GAAIlpC,MAAMC,QAAQ+qB,GACd,OAAOA,EAAGxwB,KAAI+7E,GAAO+iC,EAAqB/iC,EAAKrtC,KACnD,IAAKle,EAAGjpB,KACJ,OAAOipB,EAEX,GAAIA,EAAGjpB,OAASmiB,EAAMqM,cAClB,OAAOvF,EACX,IAAKA,EAAGjpB,OAASmiB,EAAM6G,SAAWC,EAAGjpB,OAASmiB,EAAMiH,OAASH,EAAG/J,MAG5D,OAFAioB,EAAOtwC,KAAKoyB,EAAG/J,OAEO,KAAlB+J,EAAG/J,MAAM5hB,KACF2rB,EAAGjpB,OAASmiB,EAAM6G,QACrBE,EAAQvJ,cAAcsJ,EAAG5K,QAAS4K,EAAG/K,UAAW+K,EAAG3K,QACnD4K,EAAQ3J,WAAW0J,EAAG5K,QAAS4K,EAAG/K,UAAW+K,EAAG3K,QACjD2K,EAEX,MAAM9xB,EAAS,CAAC,EACV4kH,EAAY,CAAC,EACbC,EAAc,CAAC,EACrB,IAAK,IAAIjoH,KAAOW,OAAOD,KAAKw0B,GAAK,CAC7B,MAAMgzF,EAAY,GAElB,GADA9kH,EAAOpD,GAAOwjH,EAAqBtuF,EAAGl1B,GAAMkoH,GACxCA,EAAUpnH,OAAS,EAAG,CACtBknH,EAAUhoH,GAAOkoH,EACjB,IAAK,MAAM/8F,KAAS+8F,EAChBD,EAAY98F,EAAM1rB,OAAS0rB,CAEnC,CACJ,CACA,MAAMg9F,EAAexnH,OAAOD,KAAKunH,GACjC,GAAIE,EAAarnH,OAAS,EAEtB,GAA4B,IAAxBqnH,EAAarnH,QAAiB,CAACstB,EAAMgR,QAAShR,EAAMiM,SAAS9e,SAAS2Z,EAAGjpB,MAExE,IAAIipB,EAAGjpB,OAASmiB,EAAMwN,IAEvB,OAgBZ,SAA0B1G,EAAIke,GAC1B,IAAI/uC,EAEJ,MAAM+jH,EAAgB,CAAC,EACvB,IAAK,IAAIxnH,EAAI,EAAGA,EAAIs0B,EAAG8F,SAASl6B,SAAUF,EAAG,CACzC,MAAMquB,EAAUiG,EAAG8F,SAASp6B,GACtBynH,EAAYj1E,EAAOxyC,GAAGnB,MAC5B2oH,EAAcC,GAAiD,QAAnChkH,EAAK+jH,EAAcC,UAA+B,IAAPhkH,EAAgBA,EAAK,CAAE22B,SAAU,GAAI7P,MAAOioB,EAAOxyC,IAC1HwnH,EAAcC,GAAWrtF,SAASl4B,KAAKmsB,EAC3C,CAEA,IAAI2V,EAAW,GACf,IAAK,MAAOyjF,GAAW,SAAErtF,EAAQ,MAAE7P,MAAYxqB,OAAOkM,QAAQu7G,GAAgB,CAC1E,MAAMttF,EAAM3F,EAAQkO,UAAUrI,GAC9B4J,EAAS9hC,KAAmB,KAAdulH,EAAmBvtF,EAAM3F,EAAQ4sF,YAAYjnF,EAAK3P,GACpE,CAEA,IAAIvmB,EAAOggC,EAAS,GACpB,IAAK,IAAIhkC,EAAI,EAAGA,EAAIgkC,EAAS9jC,SAAUF,EACnCgE,EAAOuwB,EAAQ4F,WAAW,CAACn2B,EAAMggC,EAAShkC,KAC9C,OAAOgE,CACX,CArCmB0jH,CAAiBpzF,EAAI8yF,EAAUhtF,UAItC,IAAK,IAAIh7B,KAAOW,OAAOD,KAAKsnH,GAAY,CACpC,MAAMvoH,EAAQ2D,EAAOpD,GACjBkK,MAAMC,QAAQ1K,GACd2D,EAAOpD,GAAOP,EAAMiF,KAAI,CAACozC,EAAO11B,IAAoC,KAA5B4lG,EAAUhoH,GAAK,GAAGP,MAAeq4C,EAAQ3iB,EAAQ4sF,YAAYjqE,EAAOkwE,EAAUhoH,GAAKoiB,MAC1F,KAA5B4lG,EAAUhoH,GAAK,GAAGP,QACvB2D,EAAOpD,GAAOm1B,EAAQ4sF,YAAYtiH,EAAOuoH,EAAUhoH,GAAK,IAChE,CACJ,MAdIozC,EAAOtwC,KAAKmlH,EAAYE,EAAa,KAgB7C,OAAO/kH,CACX,CA7uBAK,EAAQg+C,SAJR,SAAkBvsB,EAAI7uB,EAAU,CAAC,GAE7B,OADgB,IAAI+uC,EAAWmzE,UAAUliH,GACxB7E,UAAU0/G,EAAWhsF,GAC1C,EAUAzxB,EAAQy9G,WAAaA,sCCnDrB,IAAI75G,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO2G,OAAS,SAAUC,EAAGC,EAAGlF,EAAGmF,QAC7E/H,IAAP+H,IAAkBA,EAAKnF,GAC3B,IAAIoF,EAAO/G,OAAOgH,yBAAyBH,EAAGlF,GACzCoF,KAAS,QAASA,GAAQF,EAAEI,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEd,YAAY,EAAMC,IAAK,WAAa,OAAOW,EAAElF,EAAI,IAE5D3B,OAAO+C,eAAe6D,EAAGE,EAAIC,EAChC,EAAI,SAAUH,EAAGC,EAAGlF,EAAGmF,QACT/H,IAAP+H,IAAkBA,EAAKnF,GAC3BiF,EAAEE,GAAMD,EAAElF,EACb,GACGy+G,EAAsBxhH,MAAQA,KAAKwhH,qBAAwBpgH,OAAO2G,OAAS,SAAUC,EAAGs6C,GACxFlhD,OAAO+C,eAAe6D,EAAG,UAAW,CAAEX,YAAY,EAAMnH,MAAOoiD,GAClE,EAAI,SAASt6C,EAAGs6C,GACbt6C,EAAW,QAAIs6C,CACnB,GACIm/D,EAAgBzhH,MAAQA,KAAKyhH,cAAiB,SAAU5f,GACxD,GAAIA,GAAOA,EAAIx5F,WAAY,OAAOw5F,EAClC,IAAIh+F,EAAS,CAAC,EACd,GAAW,MAAPg+F,EAAa,IAAK,IAAI9+F,KAAK8+F,EAAe,YAAN9+F,GAAmB3B,OAAOM,UAAUgH,eAAeC,KAAKk5F,EAAK9+F,IAAI+E,EAAgBjE,EAAQg+F,EAAK9+F,GAEtI,OADAy+G,EAAmB39G,EAAQg+F,GACpBh+F,CACX,EACI69G,EAAmB1hH,MAAQA,KAAK0hH,iBAAoB,SAAU7f,GAC9D,OAAQA,GAAOA,EAAIx5F,WAAcw5F,EAAM,CAAE,QAAWA,EACxD,EACAzgG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtD,MAAM2zG,EAAQ,EAAQ,OAChB3pF,EAAe,EAAQ,OACvB0E,EAAU6yF,EAAa,EAAQ,QAC/BI,EAAYH,EAAgB,EAAQ,MACpCK,EAASL,EAAgB,EAAQ,QACjC3hH,EAAS,gBACT8uB,EAAQD,EAAQC,MACtB,IAGI+G,EAHA5S,EAAY,IAAIzE,IAChB0qG,EAAW,EACXC,GAAW,EA6Bf,SAASC,EAAeC,EAAQhzE,EAAOC,GAMnC,GAJArzB,EAAY,IAAIzE,IAChB0qG,EAAW,EACXC,EAAWlhF,QAAQoO,IAEdgzE,EAAO18G,KACR,OAAOkpB,EAAQ8sF,YACnB,GAAoB,UAAhB0G,EAAO18G,MAAoC,WAAhB08G,EAAO18G,KAClC,MAAM,IAAI3K,MAAM,6DACpB,IAAIgD,EAujBR,IAAyBskH,EAxiBrB,OAbAC,EAAiBF,GACG,UAAhBA,EAAO18G,MAGP3H,EAAMwkH,EADQ,CAAE78G,KAAM,QAAS+uB,SAAU2tF,EAAO/tF,OAAS,KAEzDt2B,EAgbR,SAA6ByzB,EAAOzzB,GAEhC,MAAMojH,EAAS3vF,EAETkwC,EAAI,GACJs5C,EAAI,CAAC,EAKX,GAJAmG,EAAOnlG,UAAYmlG,EAAOnlG,WAAamlG,EAAOnlG,UAAU7d,KAAIu9C,GAAO8mE,EAAa9mE,EAAKs/D,KACrFmG,EAAOI,OAASJ,EAAOI,QAAUJ,EAAOI,OAAOpjH,KAAIu9C,GAAO8mE,EAAa9mE,EAAKs/D,KAC5EmG,EAAO9gF,MAAQ8gF,EAAO9gF,OAAS8gF,EAAO9gF,MAAMliC,KAAIu9C,GAAO8mE,EAAa9mE,EAAKs/D,KAErEmG,EAAO17E,OAASrrC,OAAOD,KAAK6gH,GAAGzgH,OAAS,EAAG,CAC3C,MAAM6pC,EAAahqC,OAAOD,KAAK6gH,GAAG78G,KAAIm9C,GA8G9C,SAAiC+mE,EAAQ/mE,GACrC,GAAoB,cAAhB+mE,EAAO38G,OAAyB28G,EAAOzC,YACvC,MAAM,IAAI7kH,MAAM,qBAAqBC,KAAKC,UAAUonH,MACxD,MAAMrH,EAAImC,EAAoBkF,GAE9B,OADArH,EAAE/2F,SAAWq3B,EACN0/D,CACX,CApHmD8C,CAAwB9C,EAAE1/D,GAAI1sB,EAAQssF,WAAW5/D,MACtFrG,EAAO,GACb,GAAIksE,EAAO17E,MACP,IAAK,MAAMtmC,KAAKgiH,EAAO17E,MACnB,GAAIs1E,EAAOh3E,QAAQm9E,aAAa/hH,EAAEu2B,YAC9Buf,EAAK14C,KAAK4C,EAAEu2B,gBAEX,CAED,MAAM4lB,EAAI,aAAcn8C,EAAIA,EAAE8kB,SAAWw+F,IACzC1kH,EAAM6wB,EAAQ8J,aAAa36B,EAAKu9C,EAAG6hE,EAAoBh+G,EAAEu2B,aACzDuf,EAAK14C,KAAK++C,EACd,CAGRv9C,EAAM6wB,EAAQmsB,YAAYh9C,EAAKk3C,EAAM7Q,EACzC,CAEA,GAAI+8E,EAAOI,OACP,IAAK,IAAItjH,KAAUkjH,EAAOI,OACtBxjH,EAAM6wB,EAAQqH,aAAal4B,EAAKo/G,EAAoBl/G,IAExDuzB,EAAMnrB,SACNtI,EAAM6wB,EAAQ4F,WAAW,CAACz2B,EAAK2kH,EAAoBlxF,MAEvD,IAAImxF,EAAK,GACT,GAAwB,WAApBnxF,EAAMg9E,WAA8C,aAApBh9E,EAAMg9E,UAEtC,GAAIh9E,EAAMxV,UAAUmb,MAAMh4B,GAAMA,GAAK47G,EAAOh3E,QAAQ4gC,WAAWxlE,KAC3DwjH,EAAKvoH,OAAOiM,OAAOqxB,EAAiBlG,IAC/B+V,MAAK,CAAC1tB,EAAMO,IAAUP,EAAK3gB,MAAMuiD,cAAcrhC,EAAMlhB,cAG1D,IAAK,IAAIoiD,KAAK9pB,EAAMxV,UAEZ4mG,EAAWtnE,MAAQ,aAAcA,GACjCqnE,EAAGpmH,KAAK++C,GACHA,EAAEr3B,WAEP0+F,EAAGpmH,KAAK++C,EAAEr3B,UACVy9C,EAAEnlE,KAAK++C,IAMvB,IAAK,IAAIA,KAAKomB,EACV3jE,EAAM6wB,EAAQ8J,aAAa36B,EAAKu9C,EAAEr3B,SAAUk5F,EAAoB7hE,EAAE5lB,aAmCtE,OA/BIyrF,EAAO9gF,QACPtiC,EAAM6wB,EAAQgtF,cAAc79G,EAAKojH,EAAO9gF,MAAMliC,KAAKk/F,IAC/C,IAAIxgG,EAASsgH,EAAoB9f,EAAI3nE,YAGrC,OAFI2nE,EAAIgkB,aACJxkH,EAAS+xB,EAAQqI,yBAAyB,OAAQ,CAACp6B,KAChDA,CAAM,MAIG,WAApB20B,EAAMg9E,YAENzwG,EAAM6wB,EAAQkK,cAAc/6B,EAAK4kH,IAEjCxB,EAAOp4E,WACPhrC,EAAM6wB,EAAQlK,eAAe3mB,IAE7BojH,EAAO7C,UACPvgH,EAAM6wB,EAAQitF,cAAc99G,IAER,cAApByzB,EAAMg9E,UACNzwG,EAAM6wB,EAAQoF,gBAAgBj2B,GAAMyzB,EAAMyC,UAAY,IAAI91B,IAAI0kH,IACrC,QAApBrxF,EAAMg9E,UACXzwG,EAAM6wB,EAAQmQ,UAAUhhC,GACC,aAApByzB,EAAMg9E,YACXzwG,EAAM6wB,EAAQysF,eAAet9G,EAAK4kH,KAGlCxB,EAAOnnH,QAAUmnH,EAAO9sG,SACxBtW,EAAM6wB,EAAQiqF,YAAY96G,EAAKojH,EAAOnnH,QAAU,EAAGmnH,EAAO9sG,QAC1D8sG,EAAOt0C,OACP9uE,EAAM6wB,EAAQ0sF,WAAWv9G,EAAKojH,EAAOt0C,KAAK9oC,QAASo9E,EAAOt0C,KAAK7oC,QAC5DjmC,CACX,CA9gBc+kH,CAAoBV,EAAQrkH,IAEb,WAAhBqkH,EAAO18G,OACZ3H,EA8iB0B,KADTskH,EA7iBKD,GA8iBf5iF,QAAQjlC,OACRwoH,EAAsBV,EAAO7iF,QAAQ,IACzC5Q,EAAQuQ,sBAAsBkjF,EAAO7iF,QAAQrhC,IAAI4kH,KA9iBpD1zE,IACAtxC,EAAMy5G,EAA+Bz5G,IAElCA,CACX,CAIA,SAASilH,EAAO31F,GACZ,OAAO2T,QAAQ3T,aAAmC,EAASA,EAAK7G,SACpE,CAKA,SAASo8F,EAAWv1F,GAChB,MAAuE,cAA/DA,aAAmC,EAASA,EAAK7G,SAC7D,CAEA,SAAS87F,EAAiBD,GACtB,GAAIW,EAAOX,GACHO,EAAWP,IAEXrmG,EAAUvE,IAAI,IAAI4qG,EAAOnpH,cAG5B,GAAIyK,MAAMC,QAAQy+G,GACnB,IAAK,MAAMhlF,KAASglF,EAChBC,EAAiBjlF,QAEpB,GAAIglF,GAA4B,iBAAXA,EACtB,IAAK,IAAI5oH,KAAOW,OAAOD,KAAKkoH,GAEpB5oH,EAAIs0B,WAAW,KACf/R,EAAUvE,IAAIhe,GAETA,EAAIs0B,WAAW,MACpB/R,EAAUvE,IAAI,IAAIhe,EAAI+D,MAAM,MAEhC8kH,EAAiBD,EAAO5oH,GAGpC,CAEA,SAASi+B,EAAiB2qF,GACtB,IAAIY,EAAU,CAAC,EACf,IAlCcllC,EAkCDskC,GAjCCt+F,SAAWg6D,EAAOn6D,WAAam6D,EAAO/5D,OAiC9B,CAElB,MAAMnnB,EAAS,CACX66B,EAAiB2qF,EAAOt+F,SACxB2T,EAAiB2qF,EAAOz+F,WACxB8T,EAAiB2qF,EAAOr+F,QACxBq+F,EAAOz9F,MAAQ8S,EAAiB2qF,EAAOz9F,OAAS,CAAC,GAErDxqB,OAAOoU,OAAOy0G,KAAYpmH,EAC9B,MACK,GAAImmH,EAAOX,GACRO,EAAWP,KACXY,EAAQZ,EAAOnpH,OAASmpH,QAE3B,GAAoB,QAAhBA,EAAO38G,KAAgB,CAE5B,MAAM0pC,EAAQizE,EAAO1gE,QACrBvnD,OAAOoU,OAAOy0G,KAAY7zE,EAAMjxC,IAAIu5B,GACxC,MACK,GAAoB,SAAhB2qF,EAAO38G,KAEZtL,OAAOoU,OAAOy0G,KAAYZ,EAAOh/G,MAAMlF,IAAIu5B,SAE1C,GAAoB,UAAhB2qF,EAAO38G,MAAoC,UAAhB28G,EAAO38G,MAAoC,aAAhB28G,EAAO38G,KAClEtL,OAAOoU,OAAOy0G,KAAYZ,EAAO5tF,SAASt2B,IAAIu5B,SAE7C,GAAoB,YAAhB2qF,EAAO38G,MAAsC,UAAhB28G,EAAO38G,KACzCtL,OAAOoU,OAAOy0G,EAASvrF,EAAiB2qF,EAAOr/G,OAC/C5I,OAAOoU,OAAOy0G,KAAYZ,EAAO5tF,SAASt2B,IAAIu5B,SAE7C,GAAoB,SAAhB2qF,EAAO38G,KACZtL,OAAOoU,OAAOy0G,EAASvrF,EAAiB2qF,EAAOp+F,gBAE9C,GAAoB,WAAhBo+F,EAAO38G,MACZ,GAAI28G,EAAOh8G,OAAO9L,OAAS,EAAG,CAC1B,MAAM06C,EAAO76C,OAAOD,KAAKkoH,EAAOh8G,OAAO,IAAIlI,KAAIm9C,GAAK1sB,EAAQssF,WAAW5/D,KACvElhD,OAAOoU,OAAOy0G,KAAYhuE,EAAK92C,IAAIu5B,GACvC,OAEC,GAAoB,UAAhB2qF,EAAO38G,OACa,WAArB28G,EAAO7T,WAA+C,aAArB6T,EAAO7T,WAA0B,CAC9D6T,EAAOhuF,OAASguF,EAAOrmG,UAAUmb,KAAK4jF,EAAOh3E,QAAQ4gC,aACrDvqE,OAAOoU,OAAOy0G,KAAYZ,EAAOhuF,MAAMl2B,IAAIu5B,IAC/C,IAAK,MAAM4jB,KAAK+mE,EAAOrmG,UACf4mG,EAAWtnE,GACXlhD,OAAOoU,OAAOy0G,EAASvrF,EAAiB4jB,IACnCA,EAAEr3B,UACP7pB,OAAOoU,OAAOy0G,EAASvrF,EAAiB4jB,EAAEr3B,WAElD,GAAyB,WAArBo+F,EAAO7T,UAAwB,CAC/B,GAAI6T,EAAO58E,MAEP,IAAK,MAAMy9E,KAAKb,EAAO58E,MACfy9E,EAAEj/F,UACF7pB,OAAOoU,OAAOy0G,EAASvrF,EAAiBwrF,EAAEj/F,WAGtD,GAAIo+F,EAAOh8G,OAAQ,CACf,MAAMA,EAAS,CAAEX,KAAM,SAAUW,OAAQg8G,EAAOh8G,QAChDjM,OAAOoU,OAAOy0G,EAASvrF,EAAiBrxB,GAC5C,CACJ,CACJ,CAhGR,IAAkB03E,EAkGd,OAAOklC,CACX,CACA,SAASV,EAAsBF,GAO3B,GAAoB,QAAhBA,EAAO38G,KACP,OA0ER,SAAsB28G,GAClB,IAAI5tF,EAAW,GACXkE,EAAQ,GACZ,IAAK,IAAI+iE,KAAK2mB,EAAO1gE,QACjB,GAAI,aAAc+5C,EAAE93E,UAAW,CAE3B,IAAIE,EAyBLq/F,GAJYplC,EArBc2d,GAsBhB33E,QACNq/F,EAAuBrlC,EAAOn6D,WAC/Bm6D,EAAO/5D,QAvBT,IAAK,IAAIviB,KAAKqiB,EACNriB,EAAEiE,OAASmiB,EAAMiH,MACb2F,EAASl6B,OAAS,GAClBo+B,EAAMp8B,KAAKqyB,EAAQkO,UAAUrI,IACjCA,EAAW,GACXkE,EAAMp8B,KAAKkF,IAGXgzB,EAASl4B,KAAKkF,EAE1B,MAEIgzB,EAASl4B,KAAKsmH,EAAcnnB,IAQxC,IAAuB3d,EAJnB,OAFItpD,EAASl6B,OAAS,GAClBo+B,EAAMp8B,KAAKqyB,EAAQkO,UAAUrI,IACZ,IAAjBkE,EAAMp+B,OACCo+B,EAAM,GACV/J,EAAQ4F,WAAWmE,EAC9B,CApGe2kF,CAAa+E,GAGxB,GAAoB,UAAhBA,EAAO38G,KACP,OAAOkpB,EAAQzJ,YAAYk9F,EAAO5tF,SAASt2B,KAAKsD,IAE7B,UAAXA,EAAEiE,OACFjE,EAAI,CAAEiE,KAAM,QAAS+uB,SAAU,CAAChzB,KAC7B8gH,EAAsB9gH,OAGrC,GAAoB,UAAhB4gH,EAAO38G,KAAkB,CAIzB,IAAI7I,EAAS0lH,EADC,CAAE78G,KAAM,QAAS+uB,SAAU4tF,EAAO5tF,WAOhD,OAHI53B,EADAqlH,EACSmB,EAAaxmH,EAAQwlH,EAAOr/G,MAE5B4rB,EAAQ4sF,YAAY3+G,EAAQwlH,EAAOr/G,MACzCnG,CACX,CAEA,GAAoB,WAAhBwlH,EAAO38G,KACP,OAAOg9G,EAAoBL,GAE/B,GAAoB,UAAhBA,EAAO38G,KACP,OAAOy8G,EAAeE,EAAQH,GAAU,GAC5C,GAAoB,UAAhBG,EAAO38G,KAAkB,CAEzB,IAAI49G,EAAU,GACVC,EAAa,GACjB,IAAK,IAAI76F,KAAW25F,EAAO5tF,UACL,WAAjB/L,EAAQhjB,KAAoB49G,EAAUC,GAAYhnH,KAAKmsB,GAE5D,IAAI7rB,EAAS0mH,EAAWvtF,OAAOwtF,EAA6B50F,EAAQkO,UAAU,KAE1EiK,EAAcu8E,EAAQnlH,KAAIF,GAAUk/G,EAAoBl/G,EAAOy3B,cAGnE,OAFIqR,EAAYxsC,OAAS,IACrBsC,EAAS+xB,EAAQqH,aAAap5B,EAAQkqC,EAAY/Q,QAAO,CAACk0B,EAAKmzC,IAAQzuE,EAAQqI,yBAAyB,KAAM,CAACizB,EAAKmzC,QACjHxgG,CACX,CACA,MAAM,IAAI9B,MAAM,oBAAoBsnH,EAAO38G,OAC/C,CACA,SAASy3G,EAAoB9f,GACzB,GAAI0d,EAAOh3E,QAAQm9E,aAAa7jB,GAC5B,OAAOzuE,EAAQyb,qBAAqBgzD,GACxC,GAAI0d,EAAOh3E,QAAQ0/E,OAAOpmB,GACtB,OAAI0d,EAAOh3E,QAAQ2/E,iBAAiBrmB,GACzBzuE,EAAQqI,yBAAyB,SAAU,CAC9CkmF,EAAoB9f,EAAIt5E,SACxBo5F,EAAoB9f,EAAIz5E,WACxBu5F,EAAoB9f,EAAIr5E,UAGrB4K,EAAQyb,qBAAqBgzD,GAE5C,GAAI0d,EAAOh3E,QAAQ4gC,WAAW04B,GAC1B,OAAOzuE,EAAQqsB,2BACnB,GAAI,gBAAiBoiD,EACjB,OAAOzuE,EAAQwsF,0BAA0B/d,EAAIuiB,YAAazC,EAAoB9f,EAAI3nE,YAAasL,QAAQq8D,EAAIt0D,UAAWs0D,EAAIz8B,WAC9H,GAAI,aAAcy8B,EAEd,OAAOzuE,EAAQstF,sBAAsB7e,EAAI0iB,SAAU1iB,EAAI5/F,KAAKU,IAAIg/G,IACpE,GAAI,aAAc9f,EACd,MAAqB,WAAjBA,EAAIvnE,UAA0C,cAAjBunE,EAAIvnE,SAC1BlH,EAAQqtF,0BAA2C,cAAjB5e,EAAIvnE,SAA0BysF,EAAsBllB,EAAI5/F,KAAK,MACrF,OAAjB4/F,EAAIvnE,UAAsC,UAAjBunE,EAAIvnE,WAC7BunE,EAAI5/F,KAAO,CAAC4/F,EAAI5/F,KAAK,IAAIyiC,OAAOm9D,EAAI5/F,KAAK,KACtCmxB,EAAQqI,yBAAyBomE,EAAIvnE,SAAUunE,EAAI5/F,KAAKU,IAAIg/G,KAEvE,MAAM,IAAIpiH,MAAM,uBAAuBC,KAAKC,UAAUoiG,KAC1D,CAkCA,SAAS+lB,EAAuBx/F,GAC5B,GAAIm3F,EAAOh3E,QAAQm9E,aAAat9F,GAAY,CACxC,GAA2B,cAAvBA,EAAU4C,SACV,OAAOoI,EAAQ0mF,WAAW1xF,GAE1B,MAAM,IAAI7oB,MAAM,6CAA6CC,KAAKC,UAAU2oB,KACpF,CACA,GAA2B,MAAvBA,EAAUy8F,SACV,OAAOzxF,EAAQsa,UAAUk6E,EAAuBx/F,EAAUvgB,MAAM,KACpE,GAA2B,MAAvBugB,EAAUy8F,SAAkB,CAE5B,IAEIh9G,EAFAsgH,EAAU,GACVC,EAAW,GAGXvgH,EADA,aAAcugB,EAAUvgB,MAAM,IAAsC,MAAhCugB,EAAUvgB,MAAM,GAAGg9G,SAC/Cz8F,EAAUvgB,MAAM,GAAGA,MAEnBugB,EAAUvgB,MACtB,IAAK,IAAI8X,KAAQ9X,EACb,GAAI03G,EAAOh3E,QAAQm9E,aAAa/lG,GAC5BwoG,EAAQpnH,KAAK4e,OACZ,IAAsB,MAAlBA,EAAKklG,SAGV,MAAM,IAAItlH,MAAM,oBAAoBC,KAAKC,UAAUkgB,MAFnDyoG,EAASrnH,KAAK4e,EAAK9X,MAAM,GAEkC,CAGnE,IAAIwgH,EAAgBj1F,EAAQ+sF,UAAUgI,GAClCG,EAAkBl1F,EAAQsa,UAAUta,EAAQ+sF,UAAUiI,IAC1D,OAAwB,IAApBA,EAASrpH,OACFspH,EACY,IAAnBF,EAAQppH,OACDupH,EACJl1F,EAAQiF,UAAU,CAACgwF,EAAeC,GAC7C,CACA,GAA2B,MAAvBlgG,EAAUy8F,SACV,OAAOzxF,EAAQuN,UAAUvY,EAAUvgB,MAAMlF,IAAIilH,IACjD,GAA2B,MAAvBx/F,EAAUy8F,SACV,OAAOzxF,EAAQiF,UAAUjQ,EAAUvgB,MAAMlF,IAAIilH,IACjD,GAA2B,MAAvBx/F,EAAUy8F,SACV,OAAOzxF,EAAQmtF,qBAAqBqH,EAAuBx/F,EAAUvgB,MAAM,KAC/E,GAA2B,MAAvBugB,EAAUy8F,SACV,OAAOzxF,EAAQqa,oBAAoBm6E,EAAuBx/F,EAAUvgB,MAAM,KAC9E,GAA2B,MAAvBugB,EAAUy8F,SACV,OAAOzxF,EAAQotF,oBAAoBoH,EAAuBx/F,EAAUvgB,MAAM,KAC9E,MAAM,IAAItI,MAAM,uCAAuCC,KAAKC,UAAU2oB,KAC1E,CACA,SAASu/F,EAAap/F,EAASH,EAAWI,GACtC,GAAIJ,EAAUle,OAASmiB,EAAMS,KACzB,MAAO,CAACsG,EAAQvJ,cAActB,EAASH,EAAUsa,IAAKla,IAC1D,GAAIJ,EAAUle,OAASmiB,EAAMK,IACzB,OAAOi7F,EAAan/F,EAAQJ,EAAUE,KAAMC,GAChD,GAAIH,EAAUle,OAASmiB,EAAME,IAAK,CAC9B,IAAIqhB,EAASrlB,EACb,OAAOg3F,EAAOh3E,QAAQzH,QAAQ1Y,EAAUnd,MAAMtI,KAAI,CAAC8pB,EAAO5tB,KACtD,MAAMivC,EAAajvC,IAAMupB,EAAUnd,MAAMlM,OAAS,EAAIypB,EAASy+F,IACzDsB,EAAiBZ,EAAa/5E,EAAQnhB,EAAOqhB,GAInD,MAH4B,aAAxBA,EAAW9iB,WACX4iB,EAASE,GAENy6E,CAAc,IAE7B,CACA,MAAO,CAACn1F,EAAQ3J,WAAWlB,EAASH,EAAWI,GACnD,CACA,SAASy+F,IACL,IAAInnE,EAAI,OAAO2mE,IACf,OAAIjmG,EAAU7V,IAAIm1C,GACPmnE,KACXzmG,EAAUvE,IAAI6jC,GACP1sB,EAAQssF,WAAW5/D,GAC9B,CACA,SAASunE,EAAcn1F,GACnB,GAAI,aAAcA,EAAK9J,UACnB,MAAM,IAAI7oB,MAAM,8CAIpB,OAAO6zB,EAAQvJ,cAAcqI,EAAK3J,QAAS2J,EAAK9J,UAAW8J,EAAK1J,OAAQ0J,EAAK9I,MACjF,CAzUA1nB,EAAA,QAhBA,SAAmBklH,EAAQtiH,GAGvB,IAAI0xB,EACJ,GAHA1xB,EAAUA,GAAW,CAAC,EACtB8uB,EAAU,IAAIisF,EAAU92E,QAAQjkC,EAAQ+yD,aA2ClB,iBAzCTuvD,EAAS,CAClB,IAAI11G,EAAS,IAAI3T,EAAO+G,GAGxB4M,EAAOs3G,eACPxyF,EAAQ9kB,EAAOzG,MAAMm8G,EACzB,MAEI5wF,EAAQ4wF,EAEZ,OAAOD,EAAe3wF,EAAO1xB,EAAQsvC,MAAOtvC,EAAQuvC,gBACxD,EA2UA,IAAI40E,EAAW7pH,OAAOiM,OAAOwhB,GAC7B,SAASw7F,EAAahB,EAAQz9F,EAAO02D,GACjC,GAAI+mC,EAAO38G,OAASmiB,EAAMmS,MAAO,CAC7B,GAAIshD,EAGA,MAAM,IAAIvgF,MAAM,+EAGpBsnH,EAASgB,EAAahB,EAAO57G,MAAO47G,EAAOr/G,KAC/C,MACK,GAAIq/G,EAAO38G,OAASmiB,EAAMiM,cAI1B,GAAIuuF,EAAO38G,OAASmiB,EAAMwN,IAC3BgtF,EAAO5tF,SAAW4tF,EAAO5tF,SAASt2B,KAAIuvB,IAC9B4tD,IACI5tD,EAAK3J,QAAQ2V,OAAO9U,KACpB8I,EAAK3J,QAAUu3D,GACf5tD,EAAK9J,UAAU8V,OAAO9U,KACtB8I,EAAK9J,UAAY03D,GACjB5tD,EAAK1J,OAAO0V,OAAO9U,KACnB8I,EAAK1J,OAASs3D,IAEM,iBAAxB5tD,EAAK9I,MAAM4B,WACXkH,EAAK9I,MAAQA,GACV8I,UAEV,GAAI20F,EAAO38G,OAASmiB,EAAMiH,KACvBwsD,IACI+mC,EAAOt+F,QAAQ2V,OAAO9U,KACtBy9F,EAAOt+F,QAAUu3D,GACjB+mC,EAAOr+F,OAAO0V,OAAO9U,KACrBy9F,EAAOr+F,OAASs3D,IAEM,iBAA1B+mC,EAAOz9F,MAAM4B,WACb67F,EAAOz9F,MAAQA,QAIlB,GAAIy9F,EAAO38G,OAASmiB,EAAMgR,SAAYyiD,EAQtC,GAAI+mC,EAAO38G,OAASmiB,EAAM4Q,QAAW6iD,EAMtC,IAAK,IAAI7hF,KAAOW,OAAOD,KAAKkoH,GACpB1+G,MAAMC,QAAQy+G,EAAO5oH,IACrB4oH,EAAO5oH,GAAO4oH,EAAO5oH,GAAK0E,KAAK4iC,GAAMsiF,EAAatiF,EAAGnc,EAAO02D,KACvD2oC,EAASnhH,QAAQu/G,EAAO5oH,GAAKiM,OAAS,EAC3C28G,EAAO5oH,GAAO4pH,EAAahB,EAAO5oH,GAAMmrB,EAAO02D,GAC1CA,GAAesnC,EAAWP,EAAO5oH,KAAS4oH,EAAO5oH,GAAKigC,OAAO9U,KAClEy9F,EAAO5oH,GAAO6hF,QAXlB+mC,EAAOp+F,SAASyV,OAAO9U,KACvB02D,EAAcmnC,KAClBJ,EAAO57G,MAAQ48G,EAAahB,EAAO57G,MAAOme,EAAO02D,QAV5C+mC,EAAOrmG,UAAUmb,MAAKmkB,GAAKA,EAAE5hB,OAAO9U,OACrC02D,EAAcmnC,KAClBJ,EAAO57G,MAAQ48G,EAAahB,EAAO57G,MAAOme,EAAO02D,GAoBrD,OAAO+mC,CACX,CACA,SAASmB,EAA4BU,EAAGxiD,GACpC,GAAe,aAAXA,EAAEh8D,KAAqB,CAEvB,MAAMs1G,EAAIuH,EAAsB,CAAE78G,KAAM,QAAS+uB,SAAUitC,EAAEjtC,WAEzDyvF,EADAlJ,EAAEt1G,OAASmiB,EAAM+O,OACbhI,EAAQyK,eAAe6qF,EAAGlJ,EAAEv0G,MAAOu0G,EAAEtlF,YAGrC9G,EAAQyK,eAAe6qF,EAAGlJ,EACtC,MACK,GAAe,UAAXt5C,EAAEh8D,KAAkB,CAEzB,MAAMs1G,EAAIuH,EAAsB,CAAE78G,KAAM,QAAS+uB,SAAUitC,EAAEjtC,WAC7DyvF,EAAIt1F,EAAQ6sF,YAAYyI,EAAGlJ,EAC/B,MACK,GAAe,SAAXt5C,EAAEh8D,KACPw+G,EAAIt1F,EAAQ8J,aAAawrF,EAAGxiD,EAAEz9C,SAAUk5F,EAAoBz7C,EAAEhsC,kBAC7D,GAAe,YAAXgsC,EAAEh8D,KAAoB,CAE3B,MAAM+/B,EAAQ,CAAE//B,KAAM,QAAS+uB,SAAUitC,EAAEjtC,UAE3CyvF,EAAIC,EAAeD,EADTt1F,EAAQktF,cAAcyG,EAAsB98E,GAAQi8B,EAAE1+D,KAAM0+D,EAAEpiC,QAE5E,MAGI4kF,EAAIC,EAAeD,EADT3B,EAAsB7gD,IAGpC,OAAOwiD,CACX,CACA,SAASC,EAAeD,EAAGlJ,GAUvB,OARIkJ,EAAEx+G,OAASmiB,EAAMwN,KAAO2lF,EAAEt1G,OAASmiB,EAAMwN,IACzC6uF,EAAIt1F,EAAQkO,UAAU,IAAIonF,EAAEzvF,YAAaumF,EAAEvmF,WAEtCyvF,EAAEx+G,OAASmiB,EAAMwN,KAA6B,IAAtB6uF,EAAEzvF,SAASl6B,OACxC2pH,EAAIlJ,EACCA,EAAEt1G,OAASmiB,EAAMwN,KAA6B,IAAtB2lF,EAAEvmF,SAASl6B,SAExC2pH,EAAIt1F,EAAQ4F,WAAW,CAAC0vF,EAAGlJ,KACxBkJ,CACX,CACA,SAASxB,EAAoBr8G,GACzB,IAAI2V,GAAsC,IAAzB3V,EAAOA,OAAO9L,OAAe,GAAKH,OAAOD,KAAKkM,EAAOA,OAAO,KAAKlI,IAAIywB,EAAQssF,WAAWngG,KAAK6T,IAC1GlJ,EAAWrf,EAAOA,OAAOlI,KAAK28C,IAC9B,IAAI3gD,EAAOC,OAAOD,KAAK2gD,GACvB3gD,EAAOA,EAAK8D,QAAOlC,QAAoB5C,IAAf2hD,EAAQ/+C,KAChC,IAAIoC,EAAM,CAAC,EACX,IAAK,IAAI1E,KAAOU,EACZgE,EAAI1E,GAAOqhD,EAAQrhD,GACvB,OAAO0E,CAAG,IAEd,OAAOywB,EAAQ+K,aAAa3d,EAAW0J,EAC3C,CAkGA,SAAS88F,EAAaH,EAAQj+E,GAC1B,GAAI,SAAUi+E,GAA0B,cAAhBA,EAAO38G,KAAsB,CACjD,IACI41C,EADAklD,GAAQ,EAEZ,IAAK,IAAI/mG,KAAOW,OAAOD,KAAKiqC,GACxB,GAAIyoE,EAAMzoE,EAAW3qC,GAAM4oH,GAAS,CAChC/mE,EAAI1sB,EAAQssF,WAAWzhH,GACvB+mG,GAAQ,EACR,KACJ,CAMJ,OAJKA,IACDllD,EAAImnE,IACJr+E,GAAW,EAAIlhB,EAAa8D,cAAcs0B,IAAM+mE,GAE7C/mE,CACX,CAEA,MAAI,eAAgB+mE,GAAUA,EAAO3sF,WAC1B,IAAK2sF,EAAQ3sF,WAAY8sF,EAAaH,EAAO3sF,WAAY0O,IAChE,SAAUi+E,GAAUA,EAAO5kH,KACpB,IAAK4kH,EAAQ5kH,KAAM4kH,EAAO5kH,KAAKU,KAAIimH,GAAa5B,EAAa4B,EAAWhgF,MAE5Ei+E,CACX,CAaA,SAASU,EAAsBV,GAC3B,GAAI,SAAUA,EAAQ,CAClB,GAAoB,SAAhBA,EAAO38G,KACP,OA+DZ,SAAkC28G,GAC9B,OAAOzzF,EAAQ0tF,WAAW+F,EAAO75F,OAAQ65F,EAAOtyF,YAAasyF,EAAO/iF,OACxE,CAjEmB+kF,CAAyBhC,GACpC,GAAoB,UAAhBA,EAAO38G,MAAoC,WAAhB28G,EAAO38G,MAAqC,SAAhB28G,EAAO38G,KAC9D,OA2CZ,SAA8B28G,GAC1B,IAAI75F,EAWJ,OATIA,EADAuyF,EAAOh3E,QAAQm9E,aAAamB,EAAOz9F,OAC1By9F,EAAOz9F,MACXy9F,EAAOz9F,MAAM6F,IACT,MACJ43F,EAAOz9F,MAAMmf,QACT,UACJs+E,EAAOz9F,MAAMof,MACT,QAEAq+E,EAAOz9F,MAAM5hB,KAClBq/G,EAAO38G,MACX,IAAK,QAAS,OAAOkpB,EAAQ4tF,YAAYh0F,EAAQ65F,EAAO/iF,QACxD,IAAK,SAAU,OAAO1Q,EAAQ6tF,aAAaj0F,EAAQ65F,EAAO/iF,QAC1D,IAAK,OAAQ,OAAO1Q,EAAQwQ,WAAW5W,EAAQ65F,EAAO/iF,QAE9D,CA5DmBglF,CAAqBjC,GAChC,GAAoB,QAAhBA,EAAO38G,MAAkC,SAAhB28G,EAAO38G,MAAmC,SAAhB28G,EAAO38G,KAC1D,OA8DZ,SAAsC28G,GAClC,MAAM75F,EAAS65F,EAAO75F,OAAOub,QAAU,UAAYs+E,EAAO75F,OAAOxlB,KAC3D+sB,EAAcsyF,EAAOtyF,YAAYgU,QAAU,UAAYs+E,EAAOtyF,YAAY/sB,KAChF,OAAQq/G,EAAO38G,MACX,IAAK,OAAQ,OAAOkpB,EAAQ+tF,WAAWn0F,EAAQuH,EAAasyF,EAAO/iF,QACnE,IAAK,OAAQ,OAAO1Q,EAAQ8tF,WAAWl0F,EAAQuH,EAAasyF,EAAO/iF,QACnE,IAAK,MAAO,OAAO1Q,EAAQyQ,UAAU7W,EAAQuH,EAAasyF,EAAO/iF,QAEzE,CAtEmBkgF,CAA6B6C,EAC5C,MACK,GAA0B,iBAAtBA,EAAO3T,YAAuD,gBAAtB2T,EAAO3T,YAAsD,WAAtB2T,EAAO3T,YAAiD,WAAtB2T,EAAO3T,WAC7H,OAGR,SAA+B2T,GAC3B,IAAKH,EACD,MAAM,IAAInnH,MAAM,yEACpB,IAEIs5B,EAFAkwF,EAAgB,GAChBC,EAAgB,GAMpB,GAJInC,EAAOx4F,SACP06F,EAAgBxJ,EAAOh3E,QAAQzH,QAAQ+lF,EAAOx4F,OAAO1rB,KAAIsI,GAASg+G,EAA4Bh+G,EAAO47G,EAAOz9F,WAC5Gy9F,EAAOjuF,SACPowF,EAAgBzJ,EAAOh3E,QAAQzH,QAAQ+lF,EAAOjuF,OAAOj2B,KAAIsI,GAASg+G,EAA4Bh+G,EAAO47G,EAAOz9F,WAC5Gy9F,EAAOhuF,OAASguF,EAAOhuF,MAAM95B,OAAS,EAAG,CACzC85B,EAAQkuF,EAAsB,CAAE78G,KAAM,QAAS+uB,SAAU4tF,EAAOhuF,QAEhE,MAAMyqF,EAAMuD,EAAOrD,MACfF,EACAzqF,EAAQzF,EAAQ0sF,WAAWjnF,EAAOyqF,EAAI/6E,QAAS+6E,EAAI96E,OAC9Cq+E,EAAOz9F,QAEZyP,EAAQgvF,EAAahvF,EAAOguF,EAAOz9F,OAC3C,KAC+B,gBAAtBy9F,EAAO3T,YAAgC6V,EAAchqH,OAAS,IACnE85B,EAAQzF,EAAQkO,UAAUynF,IAE9B,OAAO31F,EAAQuF,mBAAmBowF,EAAchqH,OAAS,EAAIgqH,OAAgBprH,EAAWqrH,EAAcjqH,OAAS,EAAIiqH,OAAgBrrH,EAAWk7B,EAClJ,CA3BeqwF,CAAsBrC,GACjC,MAAM,IAAItnH,MAAM,uBAAuBC,KAAKC,UAAUonH,KAC1D,CA2BA,SAASoC,EAA4BpC,EAAQz9F,GACzC,IAAI+/F,EAAe//F,EACC,UAAhBy9F,EAAO38G,OACPi/G,EAAetC,EAAOr/G,MAC1B,IAAI4hH,EAAiBvC,EAAO1gE,QAG5B,OAFIgjE,IACAC,EAAiBA,EAAezmH,KAAI4/E,GAAU3jF,OAAOoU,OAAOuvE,EAAQ,CAAEn5D,MAAO+/F,OAC1EC,EAAezmH,IAAI0kH,EAC9B,CA+BA,SAASrL,EAA+Bz5G,GACpC,MAAM05G,EAAyB,CAAC,EAC1BC,EAAe/zG,MAAMkpE,KAAK7wD,GAAWga,QAAO,CAACk0B,EAAKjmC,KACpDimC,EAAIjmC,IAAY,EACTimC,IACR,CAAC,GACJ,OAAO6wD,EAAOh3E,QAAQtV,aAAa1wB,EAAK,CACpC,CAAC6pB,EAAQC,MAAMqM,eAAiBvF,IAErB,CACH9xB,OAAQ+xB,EAAQuF,mBAAmBxF,EAAG9E,OAAQ8E,EAAGyF,OAAQzF,EAAG0F,OAASmjF,EAA+B7oF,EAAG0F,QACvGxF,SAAS,IAGjB,CAACjH,EAAQC,MAAMiH,MAAO,CAACH,EAAIC,KAChB,CACH/xB,OAAQ+xB,EAAQ3J,WAAWoqB,EAAgB1gB,EAAG5K,SAAU4K,EAAG/K,UAAWyrB,EAAgB1gB,EAAG3K,QAASqrB,EAAgB1gB,EAAG/J,QACrHiK,SAAS,IAGjB,CAACjH,EAAQC,MAAM6G,SAAU,CAACC,EAAIC,KACnB,CACH/xB,OAAQ+xB,EAAQvJ,cAAcgqB,EAAgB1gB,EAAG5K,SAAUsrB,EAAgB1gB,EAAG/K,WAAYyrB,EAAgB1gB,EAAG3K,QAASqrB,EAAgB1gB,EAAG/J,QACzIiK,SAAS,IAGjB,CAACjH,EAAQC,MAAMkM,WAAapF,IAEjB,CACH9xB,OAAQ+xB,EAAQoF,gBAAgBwjF,EAA+B7oF,EAAGloB,OAAQkoB,EAAGsF,UAC7EpF,SAAS,MAIrB,SAASwgB,EAAgBhiB,GACrB,GAAsB,cAAlBA,EAAK7G,SAA0B,CAC/B,IAAIvC,EAAWwzF,EAAuBpqF,EAAKn0B,OAM3C,OALK+qB,IACDA,EAAW82F,EAAOh3E,QAAQ4zE,qBAAqBtqF,EAAKn0B,MAAOw+G,EAAc9oF,EAAQikC,aACjF6kD,EAAazzF,EAAS/qB,QAAS,EAC/Bu+G,EAAuBpqF,EAAKn0B,OAAS+qB,GAElCA,CACX,CACA,OAAOoJ,CACX,CACJ,sCCnwBA,IAAIqtF,EAAmB1hH,MAAQA,KAAK0hH,iBAAoB,SAAU7f,GAC9D,OAAQA,GAAOA,EAAIx5F,WAAcw5F,EAAM,CAAE,QAAWA,EACxD,EACAzgG,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtD,MAAM2rH,EAAY,EAAQ,OACpBhK,EAAYH,EAAgB,EAAQ,MACpCvtF,EAAc,EAAQ,OAC5B,MAAMqB,EAKF,cAAO8N,CAAQo1D,GACX,OAAO/tF,MAAMjJ,UAAUwlC,UAAUwxD,GAAKzzF,QAAO8iC,GAAKA,GACtD,CAIA,gBAAO+jF,CAAUC,GACb,GAAIA,EAAQv+F,SAAU,CAClB,GAAyB,SAArBu+F,EAAQv+F,SACR,MAAO,CACH9gB,KAAM,UACN8gB,SAAU,OACVzC,QAASyK,EAAKs2F,UAAUC,EAAQhhG,SAChCH,UAAW4K,EAAKs2F,UAAUC,EAAQnhG,WAClCI,OAAQwK,EAAKs2F,UAAUC,EAAQ/gG,QAC/BY,MAAO4J,EAAKs2F,UAAUC,EAAQngG,QAGjC,CACD,IAAI/nB,EAAS,CAAE2pB,SAAUu+F,EAAQv+F,SAAUttB,MAAO6rH,EAAQ7rH,OAK1D,OAJI6rH,EAAQp1F,WACR9yB,EAAO8yB,SAAWo1F,EAAQp1F,UAC1Bo1F,EAAQjqF,WACRj+B,EAAOi+B,SAAWtM,EAAKs2F,UAAUC,EAAQjqF,WACtCj+B,CACX,CACJ,CACA,GAAI8G,MAAMC,QAAQmhH,GACd,OAAOA,EAAQ5mH,KAAIgB,GAAKqvB,EAAKs2F,UAAU3lH,KAC3C,GAAI4lH,IAAY3qH,OAAO2qH,GAAU,CAC7B,IAAIloH,EAAS,CAAC,EACd,IAAK,IAAIpD,KAAOW,OAAOD,KAAK4qH,GACxBloH,EAAOpD,GAAO+0B,EAAKs2F,UAAUC,EAAQtrH,IACzC,OAAOoD,CACX,CACA,OAAOkoH,CACX,CAQA,uBAAOrtF,CAAiB/I,GACpB,MAAM3S,EAAY,GAClB,SAASgpG,EAAY1pE,GACZt/B,EAAUipG,MAAKC,GAAM5pE,EAAEpiD,QAAUgsH,EAAGhsH,SACrC8iB,EAAUzf,KAAK++C,EACvB,CACA,SAAS6pE,EAAYz3F,GACa,aAA1BA,EAAK3J,QAAQyC,UACbw+F,EAAYt3F,EAAK3J,SACW,aAA5B2J,EAAK9J,UAAU4C,UACfw+F,EAAYt3F,EAAK9J,WACQ,aAAzB8J,EAAK1J,OAAOwC,UACZw+F,EAAYt3F,EAAK1J,QACO,aAAxB0J,EAAK9I,MAAM4B,UACXw+F,EAAYt3F,EAAK9I,OACS,SAA1B8I,EAAK3J,QAAQyC,UACb2+F,EAAYz3F,EAAK3J,SACW,SAA5B2J,EAAK9J,UAAU4C,UACf2+F,EAAYz3F,EAAK9J,WACQ,SAAzB8J,EAAK1J,OAAOwC,UACZ2+F,EAAYz3F,EAAK1J,QACO,SAAxB0J,EAAK9I,MAAM4B,UACX2+F,EAAYz3F,EAAK9I,MACzB,CAuDA,OArDA4J,EAAK8I,iBAAiB3I,EAAI,CACtB,CAACk2F,EAAUh9F,MAAM2Q,YAAc7J,IACvBA,EAAGgH,iBAAmBkvF,EAAUjvF,gBAAgB2B,WAAa5I,EAAG1K,UAChE+gG,EAAYr2F,EAAG1K,WAEZ,GAEX,CAAC4gG,EAAUh9F,MAAM4Q,QAAU9J,IACvBq2F,EAAYr2F,EAAG1K,WACR,GAEX,CAAC4gG,EAAUh9F,MAAMmS,OAASrL,IACG,aAArBA,EAAG3rB,KAAKwjB,UACRw+F,EAAYr2F,EAAG3rB,OACZ,GAEX,CAAC6hH,EAAUh9F,MAAMoS,OAAStL,IACtBA,EAAG3S,UAAUtY,QAAQshH,IACd,GAEX,CAACH,EAAUh9F,MAAMiH,MAAQH,IACO,aAAxBA,EAAG5K,QAAQyC,UACXw+F,EAAYr2F,EAAG5K,SACQ,aAAvB4K,EAAG3K,OAAOwC,UACVw+F,EAAYr2F,EAAG3K,QACO,aAAtB2K,EAAG/J,MAAM4B,UACTw+F,EAAYr2F,EAAG/J,OACS,SAAxB+J,EAAG5K,QAAQyC,UACX2+F,EAAYx2F,EAAG5K,SACQ,SAAvB4K,EAAG3K,OAAOwC,UACV2+F,EAAYx2F,EAAG3K,QACO,SAAtB2K,EAAG/J,MAAM4B,UACT2+F,EAAYx2F,EAAG/J,QACZ,GAEX,CAACigG,EAAUh9F,MAAM6G,SAAWC,IACxBw2F,EAAYx2F,IACL,GAEX,CAACk2F,EAAUh9F,MAAMgR,SAAWlK,IACxBA,EAAG3S,UAAUtY,QAAQshH,IACd,GAEX,CAACH,EAAUh9F,MAAMiM,SAAWnF,IACC,aAArBA,EAAG3rB,KAAKwjB,UACRw+F,EAAYr2F,EAAG3rB,OACZ,GAEX,CAAC6hH,EAAUh9F,MAAMoR,QAAUtK,IACvBA,EAAG3S,UAAUtY,QAAQshH,IACd,KAGRhpG,CACX,CASA,uBAAOsb,CAAiB3I,EAAIy2F,GACxB,IAAIvoH,EAAS8xB,EACT02F,GAAc,EAClB,MAAMj/G,EAAWg/G,EAAUz2F,EAAGjpB,MAI9B,GAHIU,IAEAi/G,EAAcj/G,EAASuoB,KACtB02F,EACD,OACJ,IAAIC,EAAa32F,GAAOH,EAAK8I,iBAAiB3I,EAAIy2F,GAClD,OAAQvoH,EAAO6I,MACX,KAAKm/G,EAAUh9F,MAAMC,IACjBjrB,EAAO4J,MAAMtI,IAAImnH,GACjB,MACJ,KAAKT,EAAUh9F,MAAMgS,IACjByrF,EAAUzoH,EAAO4J,OACjB,MACJ,KAAKo+G,EAAUh9F,MAAMwN,IACjBx4B,EAAO43B,SAAS/wB,QAAQ4hH,GACxB,MACJ,KAAKT,EAAUh9F,MAAMkM,UACjBuxF,EAAUzoH,EAAO4J,OACjB5J,EAAOo3B,SAAS91B,IAAImnH,GACpB,MACJ,KAAKT,EAAUh9F,MAAMmN,SAGrB,KAAK6vF,EAAUh9F,MAAMiS,SACjBwrF,EAAUzoH,EAAO4J,OACjB,MACJ,KAAKo+G,EAAUh9F,MAAM2Q,WACb37B,EAAO84B,iBAAmBkvF,EAAUjvF,gBAAgB6B,WACpD6tF,EAAUzoH,EAAO4J,OAErB,MACJ,KAAKo+G,EAAUh9F,MAAM4Q,OAIrB,KAAKosF,EAAUh9F,MAAM+O,OACjB0uF,EAAUzoH,EAAO4J,OACjB6+G,EAAUzoH,EAAO64B,YACjB,MACJ,KAAKmvF,EAAUh9F,MAAMkS,KAGrB,KAAK8qF,EAAUh9F,MAAMmS,MACjBsrF,EAAUzoH,EAAO4J,OACjB,MACJ,KAAKo+G,EAAUh9F,MAAMoS,MACjBqrF,EAAUzoH,EAAO4J,OACjB5J,EAAOunC,WAAW1gC,QAAQ4hH,GAC1B,MACJ,KAAKT,EAAUh9F,MAAMK,IACjBo9F,EAAUzoH,EAAOinB,MACjB,MACJ,KAAK+gG,EAAUh9F,MAAM0N,KACjB14B,EAAO4J,MAAMtI,IAAImnH,GACjB,MACJ,KAAKT,EAAUh9F,MAAMqR,UACjBr8B,EAAO4J,MAAMtI,IAAImnH,GACbzoH,EAAO64B,YACP4vF,EAAUzoH,EAAO64B,YACrB,MACJ,KAAKmvF,EAAUh9F,MAAMS,KACjB,MACJ,KAAKu8F,EAAUh9F,MAAM+R,MACjB/8B,EAAO4J,MAAMtI,IAAImnH,GACjB,MACJ,KAAKT,EAAUh9F,MAAM+Q,IAErB,KAAKisF,EAAUh9F,MAAMU,IACjB,MACJ,KAAKs8F,EAAUh9F,MAAMM,iBACjBm9F,EAAUzoH,EAAOinB,MACjB,MACJ,KAAK+gG,EAAUh9F,MAAMqS,SACjBorF,EAAUzoH,EAAO4J,OACjB5J,EAAOkqC,YAAYrjC,QAAQ4hH,GAC3B,MACJ,KAAKT,EAAUh9F,MAAMiH,KACjBw2F,EAAUzoH,EAAO+mB,WACjB,MACJ,KAAKihG,EAAUh9F,MAAM6G,QACjB,MACJ,KAAKm2F,EAAUh9F,MAAMgR,QAGrB,KAAKgsF,EAAUh9F,MAAMsS,QACjBmrF,EAAUzoH,EAAO4J,OACjB,MACJ,KAAKo+G,EAAUh9F,MAAME,IACjBlrB,EAAO4J,MAAMtI,IAAImnH,GACjB,MACJ,KAAKT,EAAUh9F,MAAMiM,QAGrB,KAAK+wF,EAAUh9F,MAAMuS,MACjBkrF,EAAUzoH,EAAO4J,OACjB,MACJ,KAAKo+G,EAAUh9F,MAAMkR,MACjBl8B,EAAO4J,MAAMtI,IAAImnH,GACjB,MACJ,KAAKT,EAAUh9F,MAAMoR,OACjB,MACJ,KAAK4rF,EAAUh9F,MAAMO,kBAGrB,KAAKy8F,EAAUh9F,MAAMQ,iBACjBi9F,EAAUzoH,EAAOinB,MACjB,MAEJ,KAAK+gG,EAAUh9F,MAAMwS,iBACjBx9B,EAAO2iC,QAAQ97B,SAAQ8sB,GAAU80F,EAAU90F,KAC3C,MACJ,KAAKq0F,EAAUh9F,MAAMqM,cACbr3B,EAAOgtB,QACPhtB,EAAOgtB,OAAOnmB,SAAQglB,GAAW48F,EAAU58F,KAC3C7rB,EAAOu3B,QACPv3B,EAAOu3B,OAAO1wB,SAAQglB,GAAW48F,EAAU58F,KAC3C7rB,EAAOw3B,OACPixF,EAAUzoH,EAAOw3B,OACrB,MAEJ,KAAKwwF,EAAUh9F,MAAMyS,KACrB,KAAKuqF,EAAUh9F,MAAM0S,MACrB,KAAKsqF,EAAUh9F,MAAM2S,OACrB,KAAKqqF,EAAUh9F,MAAM4S,KACrB,KAAKoqF,EAAUh9F,MAAM6S,IACrB,KAAKmqF,EAAUh9F,MAAM8S,KACrB,KAAKkqF,EAAUh9F,MAAM+S,KAAM,MAC3B,QAAS,MAAM,IAAI7/B,MAAM,0BAA0B8B,EAAO6I,QAElE,CAYA,mBAAO+oB,CAAaE,EAAIy2F,EAAWx2F,GAC/B,IAAI/xB,EAAS8xB,EACT02F,GAAc,EACdE,GAAe,EACnB32F,EAAUA,GAAW,IAAIisF,EAAU92E,QACnC,MAAM39B,EAAWg/G,EAAUz2F,EAAGjpB,MAC9B,GAAIU,EAAU,CAEV,MAAMo/G,EAAgBp/G,EAASuoB,EAAIC,GACnC/xB,EAAS2oH,EAAc3oH,OACvBwoH,EAAcG,EAAc32F,QAC5B02F,GAA8C,IAA/BC,EAAcD,YACjC,CACA,IAAIE,EAIJ,GAHIF,IAAiB1oH,EAAOwpB,UAAYsI,EAAGtI,YACvCo/F,EAAiB,IAAK5oH,EAAOwpB,YAAasI,EAAGtI,YAE5Cg/F,EAKD,OAHII,IACA5oH,EAAOwpB,SAAWo/F,GAEf5oH,EAEX,IAAI6oH,EAAS/2F,GAAOH,EAAKC,aAAaE,EAAIy2F,EAAWx2F,GAErD,OAAQ/xB,EAAO6I,MACX,KAAKm/G,EAAUh9F,MAAMC,IACjBjrB,EAAS+xB,EAAQiF,UAAUh3B,EAAO4J,MAAMtI,IAAIunH,IAC5C,MACJ,KAAKb,EAAUh9F,MAAMgS,IACjBh9B,EAAS+xB,EAAQmQ,UAAU2mF,EAAM7oH,EAAO4J,QACxC,MACJ,KAAKo+G,EAAUh9F,MAAMwN,IACjBx4B,EAAS+xB,EAAQkO,UAAUjgC,EAAO43B,SAASt2B,IAAIunH,IAC/C,MACJ,KAAKb,EAAUh9F,MAAMkM,UACjBl3B,EAAS+xB,EAAQoF,gBAAgB0xF,EAAM7oH,EAAO4J,OAAQ5J,EAAOo3B,SAAS91B,IAAIunH,IAC1E,MACJ,KAAKb,EAAUh9F,MAAMmN,SACjBn4B,EAAS+xB,EAAQysF,eAAeqK,EAAM7oH,EAAO4J,OAAQ5J,EAAOs4B,OAC5D,MACJ,KAAK0vF,EAAUh9F,MAAMiS,SACjBj9B,EAAS+xB,EAAQlK,eAAeghG,EAAM7oH,EAAO4J,QAC7C,MACJ,KAAKo+G,EAAUh9F,MAAM2Q,WACjB37B,EAAS2xB,EAAKm3F,cAAc9oH,EAAQuoH,EAAWx2F,GAC/C,MACJ,KAAKi2F,EAAUh9F,MAAM4Q,OACjB57B,EAAS+xB,EAAQ8J,aAAagtF,EAAM7oH,EAAO4J,OAAQ5J,EAAOonB,SAAUyhG,EAAM7oH,EAAO64B,aACjF,MACJ,KAAKmvF,EAAUh9F,MAAM+O,OACjB/5B,EAAS+xB,EAAQqH,aAAayvF,EAAM7oH,EAAO4J,OAAQi/G,EAAM7oH,EAAO64B,aAChE,MACJ,KAAKmvF,EAAUh9F,MAAMkS,KACjBl9B,EAAS+xB,EAAQ0sF,WAAWoK,EAAM7oH,EAAO4J,OAAQ,IAAI5J,EAAOknC,SAAU,IAAIlnC,EAAOmnC,QACjF,MACJ,KAAK6gF,EAAUh9F,MAAMmS,MACjBn9B,EAAS+xB,EAAQ4sF,YAAYkK,EAAM7oH,EAAO4J,OAAQ5J,EAAOmG,MACzD,MACJ,KAAK6hH,EAAUh9F,MAAMoS,MACjBp9B,EAAS+xB,EAAQmsB,YAAY2qE,EAAM7oH,EAAO4J,OAAQ,GAAGy5B,OAAOrjC,EAAOmf,WAAYnf,EAAOunC,WAAWjmC,IAAIunH,IACrG,MACJ,KAAKb,EAAUh9F,MAAMK,IACjBrrB,EAAS+xB,EAAQsa,UAAUw8E,EAAM7oH,EAAOinB,OACxC,MACJ,KAAK+gG,EAAUh9F,MAAM0N,KACjB14B,EAAS+xB,EAAQ4F,WAAW33B,EAAO4J,MAAMtI,IAAIunH,IAC7C,MACJ,KAAKb,EAAUh9F,MAAMqR,UACjBr8B,EAAS+xB,EAAQyK,eAAeqsF,EAAM7oH,EAAO4J,MAAM,IAAKi/G,EAAM7oH,EAAO4J,MAAM,IAAK5J,EAAO64B,WAAagwF,EAAM7oH,EAAO64B,iBAAcv8B,GAC/H,MACJ,KAAK0rH,EAAUh9F,MAAMS,KACjBzrB,EAAS+xB,EAAQ0mF,WAAWz4G,EAAOqhC,KACnC,MACJ,KAAK2mF,EAAUh9F,MAAM+R,MACjB/8B,EAAS+xB,EAAQ6sF,YAAYiK,EAAM7oH,EAAO4J,MAAM,IAAKi/G,EAAM7oH,EAAO4J,MAAM,KACxE,MACJ,KAAKo+G,EAAUh9F,MAAM+Q,IACjB/7B,EAAS+xB,EAAQ8sF,YACjB,MACJ,KAAKmJ,EAAUh9F,MAAMU,IACjB1rB,EAAS+xB,EAAQ+sF,UAAU,GAAGz7E,OAAOrjC,EAAOgsC,OAC5C,MACJ,KAAKg8E,EAAUh9F,MAAMM,iBACjBtrB,EAAS+xB,EAAQqa,oBAAoBy8E,EAAM7oH,EAAOinB,OAClD,MACJ,KAAK+gG,EAAUh9F,MAAMqS,SACjBr9B,EAAS+xB,EAAQgtF,cAAc8J,EAAM7oH,EAAO4J,OAAQ5J,EAAOkqC,YAAY5oC,IAAIunH,IAC3E,MACJ,KAAKb,EAAUh9F,MAAMiH,KACjBjyB,EAAS+xB,EAAQ3J,WAAWpoB,EAAOknB,QAAS2hG,EAAM7oH,EAAO+mB,WAAY/mB,EAAOmnB,OAAQnnB,EAAO+nB,OAC3F,MACJ,KAAKigG,EAAUh9F,MAAM6G,QACjB7xB,EAAS+xB,EAAQvJ,cAAcxoB,EAAOknB,QAASlnB,EAAO+mB,UAAW/mB,EAAOmnB,OAAQnnB,EAAO+nB,OACvF,MACJ,KAAKigG,EAAUh9F,MAAMgR,QACjBh8B,EAAS+xB,EAAQkK,cAAc4sF,EAAM7oH,EAAO4J,OAAQ,IAAI5J,EAAOmf,YAC/D,MACJ,KAAK6oG,EAAUh9F,MAAMsS,QACjBt9B,EAAS+xB,EAAQitF,cAAc6J,EAAM7oH,EAAO4J,QAC5C,MACJ,KAAKo+G,EAAUh9F,MAAME,IACjBlrB,EAAS+xB,EAAQuN,UAAUt/B,EAAO4J,MAAMtI,IAAIunH,IAC5C,MACJ,KAAKb,EAAUh9F,MAAMiM,QACjBj3B,EAAS+xB,EAAQktF,cAAc4J,EAAM7oH,EAAO4J,OAAQ5J,EAAOmG,KAAMnG,EAAOyiC,QACxE,MACJ,KAAKulF,EAAUh9F,MAAMuS,MACjBv9B,EAAS+xB,EAAQiqF,YAAY6M,EAAM7oH,EAAO4J,OAAQ5J,EAAOrB,MAAOqB,EAAOtC,QACvE,MACJ,KAAKsqH,EAAUh9F,MAAMkR,MACjBl8B,EAAS+xB,EAAQzJ,YAAYtoB,EAAO4J,MAAMtI,IAAIunH,IAC9C,MACJ,KAAKb,EAAUh9F,MAAMoR,OACjBp8B,EAAS+xB,EAAQ+K,aAAa,GAAGuG,OAAOrjC,EAAOmf,WAAYnf,EAAO6oB,SAASvnB,KAAIq9C,GAAKphD,OAAOoU,OAAO,CAAC,EAAGgtC,MACtG,MACJ,KAAKqpE,EAAUh9F,MAAMO,kBACjBvrB,EAAS+xB,EAAQmtF,qBAAqB2J,EAAM7oH,EAAOinB,OACnD,MACJ,KAAK+gG,EAAUh9F,MAAMQ,iBACjBxrB,EAAS+xB,EAAQotF,oBAAoB0J,EAAM7oH,EAAOinB,OAClD,MAEJ,KAAK+gG,EAAUh9F,MAAMwS,iBACjBx9B,EAAS+xB,EAAQuQ,sBAAsBtiC,EAAO2iC,QAAQrhC,IAAIunH,IAC1D,MACJ,KAAKb,EAAUh9F,MAAMqM,cACjBr3B,EAAS+xB,EAAQuF,mBAAmBt3B,EAAOgtB,OAAShtB,EAAOgtB,OAAO1rB,IAAIunH,QAASvsH,EAAW0D,EAAOu3B,OAASv3B,EAAOu3B,OAAOj2B,IAAIunH,QAASvsH,EAAW0D,EAAOw3B,MAAQqxF,EAAM7oH,EAAOw3B,YAASl7B,GACrL,MACJ,KAAK0rH,EAAUh9F,MAAMyS,KACjBz9B,EAAS+xB,EAAQ0tF,WAAWz/G,EAAO2rB,OAAQ3rB,EAAOkzB,YAAalzB,EAAOyiC,QACtE,MACJ,KAAKulF,EAAUh9F,MAAM0S,MACjB19B,EAAS+xB,EAAQ4tF,YAAY3/G,EAAO2rB,OAAQ3rB,EAAOyiC,QACnD,MACJ,KAAKulF,EAAUh9F,MAAM2S,OACjB39B,EAAS+xB,EAAQ6tF,aAAa5/G,EAAO2rB,OAAQ3rB,EAAOyiC,QACpD,MACJ,KAAKulF,EAAUh9F,MAAM4S,KACjB59B,EAAS+xB,EAAQwQ,WAAWviC,EAAO2rB,OAAQ3rB,EAAOyiC,QAClD,MACJ,KAAKulF,EAAUh9F,MAAM6S,IACjB79B,EAAS+xB,EAAQyQ,UAAUxiC,EAAO2rB,OAAQ3rB,EAAOkzB,aACjD,MACJ,KAAK80F,EAAUh9F,MAAM8S,KACjB99B,EAAS+xB,EAAQ8tF,WAAW7/G,EAAO2rB,OAAQ3rB,EAAOkzB,aAClD,MACJ,KAAK80F,EAAUh9F,MAAM+S,KACjB/9B,EAAS+xB,EAAQ+tF,WAAW9/G,EAAO2rB,OAAQ3rB,EAAOkzB,aAClD,MACJ,QAAS,MAAM,IAAIh1B,MAAM,0BAA0B8B,EAAO6I,QAM9D,OAHI+/G,IACA5oH,EAAOwpB,SAAWo/F,GAEf5oH,CACX,CAUA,oBAAO8oH,CAAc7+E,EAAMs+E,EAAWx2F,GAClC,IAAI/xB,EAASiqC,EACTu+E,GAAc,EAClBz2F,EAAUA,GAAW,IAAIisF,EAAU92E,QACnC,MAAM39B,EAAWg/G,EAAUt+E,EAAKnR,gBAGhC,GAFIvvB,KACGvJ,SAAQgyB,QAASw2F,GAAgBj/G,EAAS0gC,EAAMlY,KAClDy2F,EACD,OAAOxoH,EACX,IAAI6oH,EAAS/2F,GAAOH,EAAKC,aAAaE,EAAIy2F,EAAWx2F,GACrD,OAAQkY,EAAKnR,gBACT,KAAKkvF,EAAUjvF,gBAAgB2B,UAC3B,OAAIuP,EAAK7iB,SACE2K,EAAQosB,qBAAqBlU,EAAK7iB,SAAU6iB,EAAKiwB,WAAY2uD,EAAM5+E,EAAKpR,YAAaoR,EAAKiC,SAAUjC,EAAK85B,WAE7GhyC,EAAQwsF,0BAA0Bt0E,EAAKiwB,WAAY2uD,EAAM5+E,EAAKpR,YAAaoR,EAAKiC,SAAUjC,EAAK85B,WAC1G,KAAKikD,EAAUjvF,gBAAgB6B,UAC3B,OAAO7I,EAAQqtF,0BAA0Bn1E,EAAK6uB,IAAK+vD,EAAM5+E,EAAKrgC,QAClE,KAAKo+G,EAAUjvF,gBAAgB+B,MAC3B,OAAO/I,EAAQstF,sBAAsBp1E,EAAK9jC,KAAM8jC,EAAKrpC,KAAKU,IAAIunH,IAClE,KAAKb,EAAUjvF,gBAAgBC,SAC3B,OAAOjH,EAAQqI,yBAAyB6P,EAAKhR,SAAUgR,EAAKrpC,KAAKU,IAAIunH,IACzE,KAAKb,EAAUjvF,gBAAgBkC,KAC3B,OAAOlJ,EAAQyb,qBAAqBvD,EAAKzZ,MAC7C,KAAKw3F,EAAUjvF,gBAAgB4B,SAC3B,OAAO5I,EAAQqsB,2BACnB,QAAS,MAAM,IAAIlgD,MAAM,2BAA2B+rC,EAAKnR,kBAEjE,CAOA,qBAAOiwF,CAAej3F,GAClB,OAAOH,EAAKC,aAAaE,EAAI,CAAC,EAClC,CAOA,sBAAOk3F,CAAgB/+E,GACnB,OAAOtY,EAAKm3F,cAAc7+E,EAAM,CAAC,EACrC,CACA,2BAAO6wE,CAAqBtgE,EAAOr7B,EAAW62C,GAC1C,IAAI/rC,EAAU,EACVg/F,EAAYzuE,EAChB,KAAOr7B,EAAU8pG,IACbA,EAAY,GAAGzuE,IAAQvwB,MAE3B,OAAO+rC,EAAY5uC,SAAS6hG,EAChC,CAEA,mBAAO5E,CAAa7zF,GAChB,YAAyBl0B,IAAlBk0B,EAAK7G,UAA4C,SAAlB6G,EAAK7G,UAAyC,aAAlB6G,EAAK7G,QAC3E,CACA,aAAOi9F,CAAOp2F,GACV,MAAyB,SAAlBA,EAAK7G,QAChB,CACA,uBAAOk9F,CAAiBh2F,GACpB,OAAO,EAAIP,EAAY81B,iBAAiBv1B,GAAML,GAA0B,aAAlBA,EAAK7G,UAC/D,CACA,iBAAOm+C,CAAWt3C,GACd,MAAyB,aAAlBA,EAAK7G,QAChB,EAEJtpB,EAAA,QAAkBsxB,aC5gBlB,SAASwzF,EAAUliH,GACjB9G,KAAKs8H,SAAWx1H,EAAUA,GAAW,CAAC,EAEtC,IAAIkC,EAAWlC,EAAQkC,UAAY,CAAC,EACpChJ,KAAKyvM,aAAe,CAAC,EACrB,IAAIC,EAAa,GACjB,IAAK,IAAIxoM,KAAU8B,EAAU,CAC3B,IAAIk8B,EAAMl8B,EAAS9B,GACfyoM,EAASzqK,KACXllC,KAAKyvM,aAAavqK,GAAOh+B,EACzBwoM,EAAWnsM,KAAK2hC,GAEpB,CACA,IAAI0qK,EAAUF,EAAWrqM,KAAK,KAAK6I,QAAQ,0BAA2B,QACtElO,KAAKgyK,aAAe,IAAI5oF,OAAO,KAAOwmH,EAAU,gCAChD5vM,KAAK6vM,cAAgB,CAAC,EACtB7vM,KAAK8vM,YAAchpM,EAAQmvC,WAC3Bj2C,KAAK+vM,QAAWJ,EAAS7oM,EAAQsyC,QAAWtyC,EAAQsyC,OAAU,KAC9Dp5C,KAAK8mK,SAAW6oC,EAAS7oM,EAAQkpM,SAAWlpM,EAAQkpM,QAAU,KAC9DhwM,KAAKiwM,kBAAoBjoK,QAAQlhC,EAAQopM,iBAC3C,CAGAlnF,EAAUtnH,UAAUyuM,QAAU,SAAUj3L,GACtC,IAAIsf,EAAQ,GAmDZ,OAjDItf,EAAEs8F,YACJh9E,GAAStf,EAAEs8F,UAAUpwG,cAAgB,KACnC8T,EAAEosG,UACJ9sF,GAAS,YACPtf,EAAE62B,WACJvX,GAAS,aAEPtf,EAAE8J,UACJwV,GAAS43K,EAAQl3L,EAAE8J,eAAW7iB,GAAW,SAAU8qB,GACjD,OAAO++F,EAAO/+F,GAAYjrB,KAAKqwM,SAASplL,GACjC,IAAMjrB,KAAKswM,aAAarlL,EAASyR,YAAc,OAAS6zK,EAAiBtlL,EAASA,UAAY,GACvG,GAAGjrB,MAAQ,IAEJkZ,EAAE+hB,WACTzC,GAASx4B,KAAKysC,MAAMvzB,EAAE+hB,UAAU,GAAQj7B,KAAK8mK,UAE3C5tJ,EAAE26D,OACJr7C,GAASx4B,KAAK6zC,OAAO,QAAS36B,EAAE26D,KAAK9oC,SAAW/qC,KAAK6zC,OAAO,cAAe36B,EAAE26D,KAAK7oC,QAChF9xB,EAAEmiB,QACJ7C,GAAS,SAAWx4B,KAAKysC,MAAMvzB,EAAEmiB,OAAO,GAAQr7B,KAAK8mK,UAEnD5tJ,EAAEstB,UACJhO,GAAS43K,EAAQl3L,EAAEstB,QAAS,IAAMxmC,KAAK8mK,SAAU9mK,KAAKwwM,SAAUxwM,OAE9DkZ,EAAEuzB,QACJjU,GAAS,YAAc43K,EAAQl3L,EAAEuzB,WAAOtsC,GAAW,SAAU4sB,GAC3D,IAAIlpB,EAASmmH,EAAOj9F,EAAG2P,YACnB18B,KAAKqwM,SAAStjL,EAAG2P,YACjB,IAAM18B,KAAKswM,aAAavjL,EAAG2P,YAAc,IAC7C,OAAO3P,EAAG9B,SAAW,IAAMpnB,EAAS,OAAS0sM,EAAiBxjL,EAAG9B,UAAY,IAAMpnB,CACrF,GAAG7D,MAAQA,KAAK8mK,UACd5tJ,EAAEqvG,SACJ/vF,GAAS,WAAa43K,EAAQl3L,EAAEqvG,YAAQpoH,EAAWH,KAAKswM,aAActwM,MAAQ,IAAMA,KAAK8mK,UACvF5tJ,EAAEmuB,QACJ7O,GAAS,YAAc43K,EAAQl3L,EAAEmuB,WAAOlnC,GAAW,SAAU4sB,GAC3D,IAAI+gB,EAAO,IAAM9tC,KAAKswM,aAAavjL,EAAG2P,YAAc,IACpD,OAAQ3P,EAAGs7F,WAAoB,QAAUv6E,EAAjBA,CAC1B,GAAG9tC,MAAQA,KAAK8mK,UAEd5tJ,EAAElY,SACJw3B,GAAS,UAAYtf,EAAElY,OAAShB,KAAK8mK,UACnC5tJ,EAAEmC,QACJmd,GAAS,SAAWtf,EAAEmC,MAAQrb,KAAK8mK,UAEjC5tJ,EAAE7L,SACJmrB,GAASx4B,KAAKqN,OAAO6L,KAGvBsf,EAAQx4B,KAAKywM,gBAAgBv3L,GAAKsf,GACrBxqB,MACf,EAEAg7G,EAAUtnH,UAAU+uM,gBAAkB,SAAUv3L,GAC9C,IAAIg9B,EAAOh9B,EAAEg9B,KAAQ,SAAWh9B,EAAEg9B,KAAO,IAAMl2C,KAAK8mK,SAAY,GAC5D99J,EAAW,GACf,IAAK,IAAIvI,KAAOyY,EAAElQ,UACZhJ,KAAKs8H,SAASo0E,aAAe1wM,KAAK6vM,cAAcpvM,MAClDuI,GAAY,UAAYvI,EAAM,MAAQyY,EAAElQ,SAASvI,GAAO,IAAMT,KAAK8mK,UAEvE,OAAO5wH,EAAOltC,CAChB,EAGAggH,EAAUtnH,UAAUivM,UAAY,SAAUjhL,GACxC,IAAIhjB,EAAOgjB,EAAQhjB,MAASgjB,aAAmB/kB,OAAU,UAC7C+kB,EAAQ3E,SAAW2E,EAAQ9E,WAAa8E,EAAQ1E,OAAS,SAAW,IAChF,KAAMte,KAAQ1M,MACZ,MAAM,IAAI+B,MAAM,uBAAyB2K,GAC3C,OAAO1M,KAAK0M,GAAMgjB,EACpB,EAEAs5F,EAAUtnH,UAAUqjF,OAAS,SAAU2d,GACrC,OAAO1iG,KAAKqwM,SAAS3tG,EAAE33E,SAAW,IAAM/qB,KAAKqwM,SAAS3tG,EAAE93E,WAAa,IAAM5qB,KAAKqwM,SAAS3tG,EAAE13E,QAAU,GACvG,EAEAg+F,EAAUtnH,UAAUye,MAAQ,SAAU9V,GACpC,OAAO+lM,EAAQ/lM,EAAOrK,KAAK8mK,SAAU9mK,KAAK2wM,UAAW3wM,KACvD,EAEAgpH,EAAUtnH,UAAU65B,IAAM,SAAUA,GAClC,OAAOv7B,KAAK4wM,cAAcr1K,EAAIotB,QAChC,EAEAqgE,EAAUtnH,UAAUkvM,cAAgB,SAAUjoJ,GAC5C,IAAKA,EAAQpnD,OACX,MAAO,GAGT,IADA,IAAIoO,EAAQ,GAAIob,OAAU5qB,EAAWyqB,OAAYzqB,EACxCkB,EAAI,EAAGA,EAAIsnD,EAAQpnD,OAAQF,IAAK,CACvC,IAAI0jF,EAASp8B,EAAQtnD,GAEhBwvM,EAAW9rH,EAAOh6D,QAASA,GAStB8lL,EAAW9rH,EAAOn6D,UAAWA,GAMrCjb,EAAMpM,KAAK,MALXqnB,EAAYm6D,EAAOn6D,UACnBjb,EAAMpM,KAAK,IAAMvD,KAAK8mK,SAAU9mK,KAAK+vM,QAAS/vM,KAAKqwM,SAASzlL,MATxDG,GACFpb,EAAMpM,KAAK,IAAMvD,KAAK8mK,UACxB/7I,EAAUg6D,EAAOh6D,QACjBH,EAAYm6D,EAAOn6D,UACnBjb,EAAMpM,KAAKvD,KAAKqwM,SAAStlL,GAAU,IAAK/qB,KAAKqwM,SAASzlL,KAWxDjb,EAAMpM,KAAK,IAAKvD,KAAKqwM,SAAStrH,EAAO/5D,QACvC,CAGA,OAFArb,EAAMpM,KAAK,KAEJoM,EAAMtK,KAAK,GACpB,EAEA2jH,EAAUtnH,UAAUkqB,MAAQ,SAAUA,GACpC,MAAO,SAAW5rB,KAAKqwM,SAASzkL,EAAM5hB,MAAQ,IAAMhK,KAAKysC,MAAM7gB,EACjE,EAEAo9F,EAAUtnH,UAAUmyC,OAAS,SAAUotH,EAASptH,GAC9C,OAAQA,GAA4B,IAAlBA,EAAOtyC,OACvB6uM,EAAQv8J,EAAQ,IAAI,SAAUq2E,GAAK,OAAO+2C,EAAUjhK,KAAKqwM,SAASnmF,GAAKlqH,KAAK8mK,QAAU,GAAG9mK,MADnD,EAE1C,EAEAgpH,EAAUtnH,UAAU+qC,MAAQ,SAAUA,EAAOqkK,GAG3C,OAAyC,KAFzCrkK,GAAmB,IAAXqkK,EAAkB9wM,KAAKmgB,MAAMssB,EAAMhR,UAAYgR,EAAMkc,SACnC3oD,KAAK2wM,UAAyB,UAAflkK,EAAM//B,KAAmB+/B,EAAQA,EAAMhR,WACnE3xB,QAAQ9J,KAAK8mK,UAAmB,KAAOr6H,EAAQ,KAAO,IAAMzsC,KAAK8mK,SAAW9mK,KAAKo5C,OAAO3M,GAASzsC,KAAK8mK,SAAW,GAChI,EAEA99C,EAAUtnH,UAAU82B,MAAQ,SAAUA,GACpC,OAAOx4B,KAAKmwM,QAAQ33K,EACtB,EAEAwwF,EAAUtnH,UAAUuD,OAAS,SAAUA,GACrC,MAAO,UAAYjF,KAAKswM,aAAarrM,EAAOy3B,YAAc,GAC5D,EAEAssF,EAAUtnH,UAAUqgB,KAAO,SAAUA,GACnC,MAAO,QAAU/hB,KAAKswM,aAAavuL,EAAK2a,YAAc,OAAS6zK,EAAiBxuL,EAAKkJ,UAAY,GACnG,EAEA+9F,EAAUtnH,UAAU0sD,SAAW,SAAUA,GACvC,MAAO,YAAcpuD,KAAKysC,MAAM2hB,EAClC,EAEA46D,EAAUtnH,UAAU0gD,MAAQ,SAAUA,GACpC,OAAOguJ,EAAQhuJ,EAAM3mB,SAAUz7B,KAAK8mK,SAAW,QAAU9mK,KAAK8mK,UAAU,SAAUr+J,GAAK,OAAOzI,KAAKysC,MAAMhkC,GAAG,EAAO,GAAGzI,KACxH,EAEAgpH,EAAUtnH,UAAUm8E,MAAQ,SAAUA,GACpC,MAAO,SAAW79E,KAAKysC,MAAMoxC,EAC/B,EAEAmrC,EAAUtnH,UAAU2L,OAAS,SAAU0jM,GAErC,IAKIC,EAAQC,EALR9vM,EAAOC,OAAOD,KAAK4vM,EAAW1jM,OAAO2vB,QAAO,SAAUgpH,EAAS34I,GACjE,IAAK,IAAI5M,KAAO4M,EAAQ24I,EAAQvlJ,IAAO,EACvC,OAAOulJ,CACT,GAAG,CAAC,IAUJ,OAPoB,IAAhB7kJ,EAAKI,OACPyvM,EAASC,EAAS,IAElBD,EAAS,IACTC,EAAS,KAGJ,UAAYD,EAAS7vM,EAAKkE,KAAK,KAAO4rM,EAAS,KAAOjxM,KAAK8mK,SAChEspC,EAAQW,EAAW1jM,OAAQrN,KAAK8mK,UAAU,SAAUz5J,GAClD,MAAO,KAAO2jM,EAASZ,EAAQjvM,OAAMhB,GAAW,SAAUM,GACxD,OAAO4M,EAAO5M,GAAOT,KAAKqwM,SAAShjM,EAAO5M,IAAQ,OACpD,GAAGT,MAAQixM,CACb,GAAGjxM,MAAQA,KAAK8mK,SAAW,GAC/B,EAEA99C,EAAUtnH,UAAUwvM,QAAU,SAAUA,GACtC,MAAO,YAAcA,EAAQ5qK,OAAS,UAAY,IAAMtmC,KAAKqwM,SAASa,EAAQlnM,MAAQ,IAC/EhK,KAAKysC,MAAMykK,EACpB,EAGAloF,EAAUtnH,UAAU4uM,aAAe,SAAUxiK,GAC3C,GAAIk8E,EAAOl8E,GACT,OAAO9tC,KAAKqwM,SAASviK,GAEvB,OAAQA,EAAKphC,KAAKpH,eAChB,IAAK,YACH,OAAOwoC,EAAK84E,YAAYxhH,cACjB,KAAO0oC,EAAKiC,SAAW,YAAc,IAAM/vC,KAAKswM,aAAaxiK,EAAKpR,aACvC,iBAAnBoR,EAAK85B,UAAyB,kBAAyB95B,EAAK85B,UAAU15D,QAAQivC,EAAQg0J,GAAkB,IAAM,IAAM,IACrI,IAAK,eACH,OAAOnxM,KAAKqwM,SAASviK,EAAKi5E,UAAY,IAAMqpF,EAAQtiK,EAAKrpC,KAAM,KAAMzE,KAAKswM,aAActwM,MAAQ,IAClG,IAAK,YACH,IAAI88B,EAAWgR,EAAKhR,SAAS13B,cAAeX,EAAOqpC,EAAKrpC,MAAQ,GAChE,OAAQqpC,EAAKhR,SAASx3B,eAEtB,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAQ0kH,EAAOvlH,EAAK,IAAMzE,KAAKqwM,SAAS5rM,EAAK,IAAM,IAAMzE,KAAKswM,aAAa7rM,EAAK,IAAM,KAC/E,IAAMq4B,EAAW,KAChBktF,EAAOvlH,EAAK,IAAMzE,KAAKqwM,SAAS5rM,EAAK,IAAM,IAAMzE,KAAKswM,aAAa7rM,EAAK,IAAM,KAE1F,IAAK,IACH,MAAO,KAAOzE,KAAKswM,aAAa7rM,EAAK,IAAM,IAC7C,IAAK,QACH,MAAO,KAAOzE,KAAKswM,aAAa7rM,EAAK,IAAM,IAC7C,IAAK,SACH,MAAO,KAAOzE,KAAKswM,aAAa7rM,EAAK,IAAM,IAE7C,IAAK,QACHq4B,EAAW,SACb,IAAK,KACH,OAAO98B,KAAKswM,aAAa7rM,EAAK,IAAM,IAAMq4B,EACnC,KAAO6yK,EAASlrM,EAAK,IAAMA,EAAK,GAAK2rM,EAAQ3rM,EAAK,GAAI,KAAMzE,KAAKswM,aAActwM,OAAS,IAEjG,IAAK,YACH88B,EAAW,aACb,IAAK,SACH,OAAOA,EAAW,IAAM98B,KAAKysC,MAAMhoC,EAAK,IAAI,GAE9C,QACE,OAAOq4B,EAAW,IAAMszK,EAAQ3rM,EAAM,KAAMzE,KAAKswM,aAActwM,MAAQ,IAE3E,QACE,MAAM,IAAI+B,MAAM,4BAA8B+rC,EAAKphC,MAEzD,EAGAs8G,EAAUtnH,UAAU2uM,SAAW,SAAUnwM,GACvC,GAAI8pH,EAAO9pH,GACT,OAAQA,EAAMstB,UAEd,IAAK,WACH,MAAO,IACT,IAAK,WACH,OAAO+iL,EAAiBrwM,GAC1B,IAAK,YACH,MAAO,KAAOA,EAAMA,MAEtB,IAAK,UACH,IAAIkxM,EAAUlxM,EAAMA,OAAS,GAAIy2B,EAAWz2B,EAAMy2B,UAAY,GAAImL,EAAW5hC,EAAM4hC,SAEnF,GADA5hC,EAAQ,IAAMkxM,EAAQljM,QAAQivC,EAAQg0J,GAAkB,IACpDx6K,EACFz2B,GAAS,IAAMy2B,OACV,GAAImL,EAAU,CAEnB,IAAK9hC,KAAKiwM,kBACR,OAAQnuK,EAAS5hC,OACjB,IAjSO,0CAkSL,OAAOA,EACT,IApSQ,2CAqSN,GAAI,QAAQ+J,KAAKmnM,GAEf,OAAOA,EAAU,IAGvBlxM,GAAS,KAAOF,KAAKqxM,UAAUvvK,EAAS5hC,MAC1C,CACA,OAAOA,EACT,IAAK,OACH,IAAKF,KAAK8vM,YACN,MAAM,IAAI/tM,MAAM,kCAEpB,OAAI7B,EAAM0rB,OAAkC,iBAAzB1rB,EAAM0rB,MAAM4B,SACtB,YACLxtB,KAAKqwM,SAASnwM,EAAM0rB,OACpB,MACA5rB,KAAKqwM,SAASnwM,EAAM6qB,SAAW,IAC/B/qB,KAAKqwM,SAASnwM,EAAM0qB,WAAa,IACjC5qB,KAAKqwM,SAASnwM,EAAM8qB,QALf,SAWL,MACAhrB,KAAKqwM,SAASnwM,EAAM6qB,SAAW,IAC/B/qB,KAAKqwM,SAASnwM,EAAM0qB,WAAa,IACjC5qB,KAAKqwM,SAASnwM,EAAM8qB,QACpB,MAIN,QACE,OAAOhrB,KAAKqxM,UAAUnxM,EAAMA,WAI3B,CACH,IAAImK,EAAQnK,EAAMmK,MAAMlF,IAAInF,KAAKqwM,SAAUrwM,MAAO8qB,EAAO5qB,EAAMmnH,SAC/D,OAAQv8F,GAER,IAAK,IACL,IAAK,IACH,OAAOA,EAAOzgB,EAAM,GAEtB,IAAK,IACL,IAAK,IACL,IAAK,IACH,MAAO,IAAMA,EAAM,GAAKygB,EAAO,IAEjC,QACE,MAAO,IAAMzgB,EAAMhF,KAAKylB,GAAQ,IAEpC,CACF,EACA,IAAIqyB,EAAS,mBACTg0J,EAAiB,SAAUh+L,GAAK,OAAOmzJ,EAAmBnzJ,EAAI,EAC9DmzJ,EAAqB,CAAE,KAAM,OAAQ,IAAK,MAAO,KAAM,MAChC,KAAM,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,OAsDxE,SAASiqC,EAAiBtlL,GACxB,MAAO,IAAMA,EAAS/qB,KACxB,CAGA,SAASyvM,EAAS3kL,GAAU,MAAyB,iBAAXA,CAAqB,CAG/D,SAASg/F,EAAOh/F,GACd,MAAkC,iBAApBA,EAAOwC,QACvB,CAGA,SAASqjL,EAAWS,EAAOC,GACzB,IAAKD,IAAUtnF,EAAOsnF,GAAU,OAAO,EACvC,IAAKC,IAAUvnF,EAAOunF,GAAU,OAAO,EACvC,GAAID,EAAM9jL,WAAa+jL,EAAM/jL,SAAY,OAAO,EAChD,OAAQ8jL,EAAM9jL,UACZ,IAAK,UACH,OAAO8jL,EAAMpxM,QAAUqxM,EAAMrxM,OACtBoxM,EAAM36K,WAAa46K,EAAM56K,UACzBk6K,EAAWS,EAAMxvK,SAAUyvK,EAAMzvK,UAC1C,IAAK,OACH,OAAO+uK,EAAWS,EAAMvmL,QAASwmL,EAAMxmL,UAChC8lL,EAAWS,EAAM1mL,UAAW2mL,EAAM3mL,YAClCimL,EAAWS,EAAMtmL,OAAQumL,EAAMvmL,SAC/B6lL,EAAWS,EAAM1lL,MAAO2lL,EAAM3lL,OACvC,QACE,OAAO0lL,EAAMpxM,QAAUqxM,EAAMrxM,MAEnC,CAGA,SAASkwM,EAAQjwL,EAAOukL,EAAKlxH,EAAMtqE,GACjC,OAAOiX,EAAMhb,IAAIquE,EAAMtqE,GAAM7D,KAAKsqM,EAASjL,GAAOA,EAAM,IAC1D,CAtFA17E,EAAUtnH,UAAU2vM,UAAY,SAAUnsK,GACxC,IAAImuI,EAAcrzK,KAAKgyK,aAAa3jF,KAAKnpD,GACzC,GAAImuI,EAAa,CACf,IAAInsK,EAASlH,KAAKyvM,aAAap8B,EAAY,IAE3C,OADArzK,KAAK6vM,cAAc3oM,IAAU,EACtBA,EAAS,IAAMmsK,EAAY,EACpC,CACA,MAAO,IAAMnuI,EAAM,GACrB,EAGA8jF,EAAUtnH,UAAU8uM,SAAW,SAAUh5K,GACvC,OAAQA,EAAO9qB,MAAQ8qB,EAAOk+E,YAC9B,IAAK,OACH,MAAO,QAAUl+E,EAAOhI,OAAS,IAAMxvB,KAAKqwM,SAAS74K,EAAOhI,QAAU,KAC9DgI,EAAOT,YAAc,eAAiB/2B,KAAKqwM,SAAS74K,EAAOT,aAAe,IACpF,IAAK,SACH,MAAO,eAAkB/2B,KAAKysC,MAAMjV,EAAO4D,QAAQ,GACrD,IAAK,SACH,MAAO,eAAkBp7B,KAAKysC,MAAMjV,EAAO3G,QAAQ,GACrD,IAAK,cACH,MAAO,gBAAkB7wB,KAAKysC,MAAMjV,EAAO3G,QAAQ,GACrD,IAAK,eACH,OAAQ2G,EAAO5L,MAAQ,QAAU5rB,KAAKqwM,SAAS74K,EAAO5L,OAAS5rB,KAAK8mK,SAAW,KACvEtvI,EAAO3G,OAAOtvB,OAAS,UAAYvB,KAAKysC,MAAMjV,EAAO3G,QAAQ,GAAQ7wB,KAAK8mK,SAAW,KACrFtvI,EAAO4D,OAAO75B,OAAS,UAAYvB,KAAKysC,MAAMjV,EAAO4D,QAAQ,GAAQp7B,KAAK8mK,SAAW,KACrFtvI,EAAOwuF,MAAQhmH,KAAK6zC,OAAO,SAAUrc,EAAOwuF,MAAMj7E,SAAW,KAC7DvT,EAAOwuF,MAAQhmH,KAAK6zC,OAAO,eAAgBrc,EAAOwuF,MAAMh7E,OAAS,IAClE,SAAWhrC,KAAKysC,MAAMjV,EAAO6D,OAAO,GAC7C,IAAK,MACL,IAAK,OACL,IAAK,OACH,OAAO7D,EAAO9qB,KAAKtH,cAAe,KAAQoyB,EAAO8O,OAAS,UAAY,KAAO9O,EAAOhI,OAAOub,QAAU,UAAY/qC,KAAKqwM,SAAS74K,EAAOhI,OAAOxlB,OACtI,OAAShK,KAAKqwM,SAAS74K,EAAOT,YAAY/sB,MACnD,IAAK,SACL,IAAK,QACL,IAAK,OACH,OAAOwtB,EAAO9qB,KAAKtH,eAAiBoyB,EAAO8O,OAAS,WAAa,MAC/D9O,EAAO5L,MAAMmf,QAAU,UACvBvT,EAAO5L,MAAMof,MAAQ,QACrBxT,EAAO5L,MAAM6F,IAAM,MAClB,SAAWzxB,KAAKqwM,SAAS74K,EAAO5L,MAAM5hB,OAE3C,QACE,MAAM,IAAIjI,MAAM,8BAAgCy1B,EAAO9qB,MAE3D,EAGAs8G,EAAUtnH,UAAU03C,OAAS,SAASx1C,GAAQ,OAAOA,EAAKsK,QAAQ,MAAOlO,KAAK+vM,QAAU,EA8CxF9rM,EAAOC,QAAU,SAAyB4C,EAAU,CAAC,GACnD,MAAO,CACL7E,UAAW,SAAUu2B,GACnB,IAAIg5K,EAAiBpwM,OAAO2G,OAAOjB,GAEnC,OADA0qM,EAAexoM,SAAWwvB,EAAMxvB,SACzB,IAAIggH,EAAUwoF,GAAgBrB,QAAQ33K,EAC/C,EACAi5K,gBAAiB,WAAa,OAAO,IAAIzoF,EAAUliH,EAAU,EAEjE,mBCjYA,IAAI4qM,EAAe,WACnB,IAAI1pM,EAAE,SAASjF,EAAEu/C,EAAEt6C,EAAE1G,GAAG,IAAI0G,EAAEA,GAAG,CAAC,EAAE1G,EAAEyB,EAAExB,OAAOD,IAAI0G,EAAEjF,EAAEzB,IAAIghD,GAAG,OAAOt6C,CAAC,EAAE2pM,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAIC,EAAI,CAAC,GAAG,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,IAAI,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,IAAI,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,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IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,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f,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO,GAEhB,KAAK,IAAI,OAAO,GAEhB,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO,GAEhB,KAAK,IAAI,OA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","sources":["webpack://Comunica/../../node_modules/@bergos/jsonparse/jsonparse.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/fragment.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/index.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/fetchContext.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/index.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/lookupAllPrefixes.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/lookupNamespace.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/lookupPrefix.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://Comunica/../../node_modules/@rubensworks/saxes/saxes.js","webpack://Comunica/../../node_modules/@smessie/readable-web-to-node-stream/lib/index.js","webpack://Comunica/../../node_modules/abort-controller/browser.js","webpack://Comunica/../../node_modules/arrayify-stream/index.js","webpack://Comunica/../../node_modules/asyncjoin/index.js","webpack://Comunica/../../node_modules/asyncjoin/join/DynamicNestedLoopJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/HashJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/NestedLoopJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/SymmetricHashJoin.js","webpack://Comunica/../../node_modules/asyncjoin/util/MergeIterator.js","webpack://Comunica/./engine-default.js","webpack://Comunica/QueryEngine.ts","webpack://Comunica/index-browser.ts","webpack://Comunica/ActorAbstractMediaTyped.ts","webpack://Comunica/ActorAbstractMediaTypedFixed.ts","webpack://Comunica/index.ts","webpack://Comunica/ActorAbstractPath.ts","webpack://Comunica/PathVariableObjectIterator.ts","webpack://Comunica/ActorContextPreprocessConvertShortcuts.ts","webpack://Comunica/ActorContextPreprocessQuerySourceIdentify.ts","webpack://Comunica/ActorContextPreprocessQuerySourceSkolemize.ts","webpack://Comunica/QuerySourceSkolemized.ts","webpack://Comunica/utils.ts","webpack://Comunica/ActorContextPreprocessSetDefaults.ts","webpack://Comunica/ActorContextPreprocessSourceToDestination.ts","webpack://Comunica/ActorHashBindingsSha1.ts","webpack://Comunica/ActorHashQuadsSha1.ts","webpack://Comunica/ActorInitQuery-browser.ts","webpack://Comunica/ActorInitQueryBase.ts","webpack://Comunica/QueryEngineBase.ts","webpack://Comunica/ActorOptimizeQueryOperationAssignSourcesExhaustive.ts","webpack://Comunica/ActorOptimizeQueryOperationBgpToJoin.ts","webpack://Comunica/ActorOptimizeQueryOperationConstructDistinct.ts","webpack://Comunica/ActorOptimizeQueryOperationDescribeToConstructsSubject.ts","webpack://Comunica/ActorOptimizeQueryOperationFilterPushdown.ts","webpack://Comunica/ActorOptimizeQueryOperationGroupSources.ts","webpack://Comunica/ActorOptimizeQueryOperationJoinBgp.ts","webpack://Comunica/ActorOptimizeQueryOperationJoinConnected.ts","webpack://Comunica/ActorOptimizeQueryOperationPruneEmptySourceOperations.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteAdd.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteCopy.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteMove.ts","webpack://Comunica/ActorQueryOperationAsk.ts","webpack://Comunica/ActorQueryOperationBgpJoin.ts","webpack://Comunica/ActorQueryOperationConstruct.ts","webpack://Comunica/BindingsToQuadsIterator.ts","webpack://Comunica/ActorQueryOperationDistinctHash.ts","webpack://Comunica/ActorQueryOperationExtend.ts","webpack://Comunica/ActorQueryOperationFilter.ts","webpack://Comunica/ActorQueryOperationFromQuad.ts","webpack://Comunica/ActorQueryOperationGroup.ts","webpack://Comunica/GroupsState.ts","webpack://Comunica/ActorQueryOperationJoin.ts","webpack://Comunica/ActorQueryOperationLeftJoin.ts","webpack://Comunica/ActorQueryOperationMinus.ts","webpack://Comunica/ActorQueryOperationNop.ts","webpack://Comunica/ActorQueryOperationOrderBy.ts","webpack://Comunica/SortIterator.ts","webpack://Comunica/ActorQueryOperationPathAlt.ts","webpack://Comunica/ActorQueryOperationPathInv.ts","webpack://Comunica/ActorQueryOperationPathLink.ts","webpack://Comunica/ActorQueryOperationPathNps.ts","webpack://Comunica/ActorQueryOperationPathOneOrMore.ts","webpack://Comunica/ActorQueryOperationPathSeq.ts","webpack://Comunica/ActorQueryOperationPathZeroOrMore.ts","webpack://Comunica/ActorQueryOperationPathZeroOrOne.ts","webpack://Comunica/ActorQueryOperationProject.ts","webpack://Comunica/ActorQueryOperationReducedHash.ts","webpack://Comunica/ActorQueryOperationService.ts","webpack://Comunica/ActorQueryOperationSlice.ts","webpack://Comunica/ActorQueryOperationSource.ts","webpack://Comunica/ActorQueryOperationUnion.ts","webpack://Comunica/ActorQueryOperationClear.ts","webpack://Comunica/ActorQueryOperationUpdateCompositeUpdate.ts","webpack://Comunica/ActorQueryOperationCreate.ts","webpack://Comunica/ActorQueryOperationUpdateDeleteInsert.ts","webpack://Comunica/ActorQueryOperationDrop.ts","webpack://Comunica/ActorQueryOperationLoad.ts","webpack://Comunica/ActorQueryOperationValues.ts","webpack://Comunica/ActorQueryParseGraphql.ts","webpack://Comunica/ActorQueryParseSparql.ts","webpack://Comunica/ActorQueryProcessExplainLogical.ts","webpack://Comunica/ActorQueryProcessExplainParsed.ts","webpack://Comunica/ActorQueryProcessExplainPhysical.ts","webpack://Comunica/MemoryPhysicalQueryPlanLogger.ts","webpack://Comunica/ActorQueryProcessSequential.ts","webpack://Comunica/ActorQueryResultSerializeJson.ts","webpack://Comunica/ActorQueryResultSerializeRdf.ts","webpack://Comunica/ActorQueryResultSerializeSimple.ts","webpack://Comunica/ActorQueryResultSerializeSparqlCsv.ts","webpack://Comunica/ActionObserverHttp.ts","webpack://Comunica/ActorQueryResultSerializeSparqlJson.ts","webpack://Comunica/ActorQueryResultSerializeSparqlTsv.ts","webpack://Comunica/ActorQueryResultSerializeSparqlXml.ts","webpack://Comunica/XmlSerializer.ts","webpack://Comunica/ActorQueryResultSerializeStats.ts","webpack://Comunica/ActorQueryResultSerializeTable.ts","webpack://Comunica/ActorQueryResultSerializeTree.ts","webpack://Comunica/ActorQuerySourceIdentifyHypermediaSparql.ts","webpack://Comunica/QuerySourceSparql.ts","webpack://Comunica/ActorQuerySourceIdentifyHypermedia.ts","webpack://Comunica/LinkedRdfSourcesAsyncRdfIterator.ts","webpack://Comunica/MediatedLinkedRdfSourcesAsyncRdfIterator.ts","webpack://Comunica/QuerySourceHypermedia.ts","webpack://Comunica/StreamingStoreMetadata.ts","webpack://Comunica/ActorQuerySourceIdentifyRdfJs.ts","webpack://Comunica/QuerySourceRdfJs.ts","webpack://Comunica/ActorRdfJoinEntriesSortCardinality.ts","webpack://Comunica/ActorRdfJoinHash.ts","webpack://Comunica/ActorRdfJoinMultiBindSource.ts","webpack://Comunica/ActorRdfJoinMultiBind.ts","webpack://Comunica/ActorRdfJoinMultiEmpty.ts","webpack://Comunica/ActorRdfJoinMultiSmallestFilterBindings.ts","webpack://Comunica/ActorRdfJoinMultiSmallest.ts","webpack://Comunica/ActorRdfJoinNestedLoop.ts","webpack://Comunica/ActorRdfJoinNone.ts","webpack://Comunica/ActorRdfJoinSingle.ts","webpack://Comunica/ActorRdfJoinSymmetricHash.ts","webpack://Comunica/ActorRdfJoinMinusHashUndef.ts","webpack://Comunica/BindingsIndex.ts","webpack://Comunica/ActorRdfJoinMinusHash.ts","webpack://Comunica/ActorRdfJoinOptionalBind.ts","webpack://Comunica/ActorRdfJoinOptionalHash.ts","webpack://Comunica/BindingsIndexDef.ts","webpack://Comunica/BindingsIndexUndef.ts","webpack://Comunica/ActorRdfJoinOptionalNestedLoop.ts","webpack://Comunica/ActorRdfJoinSelectivityVariableCounting.ts","webpack://Comunica/ActorRdfMetadataAccumulateCanContainUndefs.ts","webpack://Comunica/ActorRdfMetadataAccumulateCardinality.ts","webpack://Comunica/ActorRdfMetadataAccumulatePageSize.ts","webpack://Comunica/ActorRdfMetadataAccumulateRequestTime.ts","webpack://Comunica/ActorRdfSerializeJsonLd.ts","webpack://Comunica/ActorRdfSerializeN3.ts","webpack://Comunica/ActorRdfSerializeShaclc.ts","webpack://Comunica/ActorRdfUpdateQuadsRdfJsStore.ts","webpack://Comunica/RdfJsQuadDestination.ts","webpack://Comunica/Bindings.ts","webpack://Comunica/BindingsFactory.ts","webpack://Comunica/bindingsToString.ts","webpack://Comunica/ActorContextPreprocess.ts","webpack://Comunica/ActorHashBindings.ts","webpack://Comunica/ActorHashQuads.ts","webpack://Comunica/ActorHttpInvalidate.ts","webpack://Comunica/ActorHttpInvalidateListenable.ts","webpack://Comunica/ActorInit.ts","webpack://Comunica/ActorOptimizeQueryOperation.ts","webpack://Comunica/ActorQueryOperation.ts","webpack://Comunica/ActorQueryOperationTyped.ts","webpack://Comunica/ActorQueryOperationTypedMediated.ts","webpack://Comunica/BusQueryOperation.ts","webpack://Comunica/ClosableIterator.ts","webpack://Comunica/ClosableTransformIterator.ts","webpack://Comunica/ActorQueryParse.ts","webpack://Comunica/ActorQueryProcess.ts","webpack://Comunica/ActorQueryResultSerialize.ts","webpack://Comunica/ActorQueryResultSerializeFixedMediaTypes.ts","webpack://Comunica/ActorQuerySourceIdentify.ts","webpack://Comunica/Utils.ts","webpack://Comunica/ActorRdfJoinEntriesSort.ts","webpack://Comunica/ActorRdfJoinSelectivity.ts","webpack://Comunica/ActorRdfJoin.ts","webpack://Comunica/ChunkedIterator.ts","webpack://Comunica/instrumentIterator.ts","webpack://Comunica/ActorRdfMetadataAccumulate.ts","webpack://Comunica/ActorRdfSerialize.ts","webpack://Comunica/ActorRdfSerializeFixedMediaTypes.ts","webpack://Comunica/ActorRdfUpdateQuads.ts","webpack://Comunica/ActorRdfUpdateQuadsDestination.ts","webpack://Comunica/Keys.ts","webpack://Comunica/ActionContext.ts","webpack://Comunica/ActionObserver.ts","webpack://Comunica/Actor.ts","webpack://Comunica/Bus.ts","webpack://Comunica/BusIndexed.ts","webpack://Comunica/ContextEntries.ts","webpack://Comunica/Mediator.ts","webpack://Comunica/BlankNodeBindingsScoped.ts","webpack://Comunica/BlankNodeScoped.ts","webpack://Comunica/Aggregator.ts","webpack://Comunica/Average.ts","webpack://Comunica/Count.ts","webpack://Comunica/GroupConcat.ts","webpack://Comunica/Max.ts","webpack://Comunica/Min.ts","webpack://Comunica/Sample.ts","webpack://Comunica/Sum.ts","webpack://Comunica/WildcardCountAggregator.ts","webpack://Comunica/AggregateEvaluator.ts","webpack://Comunica/AsyncAggregateEvaluator.ts","webpack://Comunica/AsyncEvaluator.ts","webpack://Comunica/SyncEvaluator.ts","webpack://Comunica/AsyncRecursiveEvaluator.ts","webpack://Comunica/BaseAggregateEvaluator.ts","webpack://Comunica/BaseExpressionEvaluator.ts","webpack://Comunica/SyncRecursiveEvaluator.ts","webpack://Comunica/Aggregate.ts","webpack://Comunica/AsyncExtension.ts","webpack://Comunica/Existence.ts","webpack://Comunica/Expressions.ts","webpack://Comunica/Named.ts","webpack://Comunica/Operator.ts","webpack://Comunica/SpecialOperator.ts","webpack://Comunica/SyncExtension.ts","webpack://Comunica/Term.ts","webpack://Comunica/Variable.ts","webpack://Comunica/Core.ts","webpack://Comunica/Helpers.ts","webpack://Comunica/NamedFunctions.ts","webpack://Comunica/OverloadTree.ts","webpack://Comunica/RegularFunctions.ts","webpack://Comunica/SpecialFunctions.ts","webpack://Comunica/XPathFunctions.ts","webpack://Comunica/AlgebraTransformer.ts","webpack://Comunica/TermTransformer.ts","webpack://Comunica/Consts.ts","webpack://Comunica/DateTimeHelpers.ts","webpack://Comunica/Errors.ts","webpack://Comunica/Ordering.ts","webpack://Comunica/Parsing.ts","webpack://Comunica/Serialization.ts","webpack://Comunica/SpecAlgos.ts","webpack://Comunica/TypeHandling.ts","webpack://Comunica/LoggerVoid.ts","webpack://Comunica/MediatorAll.ts","webpack://Comunica/MediatorCombinePipeline.ts","webpack://Comunica/MediatorCombineUnion.ts","webpack://Comunica/MediatorJoinCoefficientsFixed.ts","webpack://Comunica/MediatorNumber.ts","webpack://Comunica/MediatorRace.ts","webpack://Comunica/MetadataValidationState.ts","webpack://Comunica/Logger.ts","webpack://Comunica/../../node_modules/base64-js/index.js","webpack://Comunica/../../node_modules/bignumber.js/bignumber.js","webpack://Comunica/../../node_modules/buffer/index.js","webpack://Comunica/../../node_modules/canonicalize/lib/canonicalize.js","webpack://Comunica/../../node_modules/event-emitter-promisify/dist/index.js","webpack://Comunica/../../node_modules/events/events.js","webpack://Comunica/../../node_modules/fast-deep-equal/es6/index.js","webpack://Comunica/../../node_modules/fetch-sparql-endpoint/index.js","webpack://Comunica/../../node_modules/fetch-sparql-endpoint/lib/SparqlEndpointFetcher.js","webpack://Comunica/../../node_modules/fetch-sparql-endpoint/node_modules/cross-fetch/dist/browser-polyfill.js","webpack://Comunica/../../node_modules/graphql-to-sparql/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/Converter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/IConvertContext.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/IConvertSettings.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/Util.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionFragment.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionOperation.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDocument.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionField.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionFragmentSpread.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionInlineFragment.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerInclude.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerOptional.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerPlural.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerSingle.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerSkip.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerBoolean.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerEnum.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerFloat.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerInt.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerList.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerNull.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerObject.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerString.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerVariable.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/graphql/error/GraphQLError.js","webpack://Comunica/../../node_modules/graphql/error/syntaxError.js","webpack://Comunica/../../node_modules/graphql/jsutils/defineInspect.js","webpack://Comunica/../../node_modules/graphql/jsutils/devAssert.js","webpack://Comunica/../../node_modules/graphql/jsutils/inspect.js","webpack://Comunica/../../node_modules/graphql/jsutils/instanceOf.js","webpack://Comunica/../../node_modules/graphql/jsutils/invariant.js","webpack://Comunica/../../node_modules/graphql/jsutils/isObjectLike.js","webpack://Comunica/../../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.js","webpack://Comunica/../../node_modules/graphql/language/ast.js","webpack://Comunica/../../node_modules/graphql/language/blockString.js","webpack://Comunica/../../node_modules/graphql/language/directiveLocation.js","webpack://Comunica/../../node_modules/graphql/language/index.js","webpack://Comunica/../../node_modules/graphql/language/kinds.js","webpack://Comunica/../../node_modules/graphql/language/lexer.js","webpack://Comunica/../../node_modules/graphql/language/location.js","webpack://Comunica/../../node_modules/graphql/language/parser.js","webpack://Comunica/../../node_modules/graphql/language/predicates.js","webpack://Comunica/../../node_modules/graphql/language/printLocation.js","webpack://Comunica/../../node_modules/graphql/language/printer.js","webpack://Comunica/../../node_modules/graphql/language/source.js","webpack://Comunica/../../node_modules/graphql/language/tokenKind.js","webpack://Comunica/../../node_modules/graphql/language/visitor.js","webpack://Comunica/../../node_modules/graphql/polyfills/symbols.js","webpack://Comunica/../../node_modules/hash.js/lib/hash.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/common.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/hmac.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/ripemd.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/1.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/224.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/256.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/384.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/512.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/common.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/utils.js","webpack://Comunica/../../node_modules/http-link-header/lib/link.js","webpack://Comunica/../../node_modules/ieee754/index.js","webpack://Comunica/../../node_modules/immutable/dist/immutable.es.js","webpack://Comunica/../../node_modules/inherits/inherits_browser.js","webpack://Comunica/../../node_modules/is-stream/index.js","webpack://Comunica/../../node_modules/jsonld-context-parser/index.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/ContextParser.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/ErrorCoded.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/FetchDocumentLoader.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/IDocumentLoader.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/JsonLdContext.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/JsonLdContextNormalized.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/Util.js","webpack://Comunica/../../node_modules/jsonld-context-parser/node_modules/cross-fetch/dist/browser-polyfill.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/index.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/lib/JsonLdSerializer.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/lib/SeparatorType.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/lib/Util.js","webpack://Comunica/../../node_modules/minimalistic-assert/index.js","webpack://Comunica/../../node_modules/n3/src/IRIs.js","webpack://Comunica/../../node_modules/n3/src/N3Lexer.js","webpack://Comunica/../../node_modules/n3/src/N3DataFactory.js","webpack://Comunica/../../node_modules/n3/src/N3Parser.js","webpack://Comunica/../../node_modules/n3/src/N3Util.js","webpack://Comunica/../../node_modules/n3/src/N3Writer.js","webpack://Comunica/../../node_modules/n3/src/N3Store.js","webpack://Comunica/../../node_modules/n3/src/N3StreamParser.js","webpack://Comunica/../../node_modules/n3/src/N3StreamWriter.js","webpack://Comunica/../../node_modules/n3/src/index.js","webpack://Comunica/../../node_modules/process/browser.js","webpack://Comunica/../../node_modules/promise-polyfill/Promise.js","webpack://Comunica/../../node_modules/queue-microtask/index.js","webpack://Comunica/../../node_modules/rdf-data-factory/index.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/BlankNode.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/DataFactory.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/DefaultGraph.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Literal.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/NamedNode.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Quad.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Variable.js","webpack://Comunica/../../node_modules/rdf-isomorphic/index.js","webpack://Comunica/../../node_modules/rdf-isomorphic/lib/RdfIsomorphic.js","webpack://Comunica/../../node_modules/rdf-literal/index.js","webpack://Comunica/../../node_modules/rdf-literal/lib/ITypeHandler.js","webpack://Comunica/../../node_modules/rdf-literal/lib/Translator.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerBoolean.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerDate.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerNumberDouble.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerNumberInteger.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerString.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/index.js","webpack://Comunica/../../node_modules/rdf-streaming-store/index.js","webpack://Comunica/../../node_modules/rdf-streaming-store/lib/PendingStreamsIndex.js","webpack://Comunica/../../node_modules/rdf-streaming-store/lib/StreamingStore.js","webpack://Comunica/../../node_modules/rdf-string-ttl/index.js","webpack://Comunica/../../node_modules/rdf-string-ttl/lib/TermUtil.js","webpack://Comunica/../../node_modules/rdf-string/index.js","webpack://Comunica/../../node_modules/rdf-string/lib/TermUtil.js","webpack://Comunica/../../node_modules/rdf-terms/index.js","webpack://Comunica/../../node_modules/rdf-terms/lib/QuadTermUtil.js","webpack://Comunica/../../node_modules/rdf-terms/lib/TermUtil.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/add-abort-signal.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/compose.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/duplex.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/duplexify.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/from.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/legacy.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/operators.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/passthrough.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/readable.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/state.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/transform.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/utils.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/writable.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/validators.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/browser.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/errors.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/primordials.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/util.js","webpack://Comunica/../../node_modules/readable-stream/lib/stream.js","webpack://Comunica/../../node_modules/readable-stream/lib/stream/promises.js","webpack://Comunica/../../node_modules/relative-to-absolute-iri/index.js","webpack://Comunica/../../node_modules/relative-to-absolute-iri/lib/Resolve.js","webpack://Comunica/../../node_modules/safe-buffer/index.js","webpack://Comunica/../../node_modules/shaclc-write/dist/ShaclcGenerator.js","webpack://Comunica/../../node_modules/shaclc-write/dist/base-prefixes.js","webpack://Comunica/../../node_modules/shaclc-write/dist/index.js","webpack://Comunica/../../node_modules/shaclc-write/dist/node-param.js","webpack://Comunica/../../node_modules/shaclc-write/dist/property-param .js","webpack://Comunica/../../node_modules/shaclc-write/dist/utils.js","webpack://Comunica/../../node_modules/shaclc-write/dist/volatile-store.js","webpack://Comunica/../../node_modules/shaclc-write/dist/writer.js","webpack://Comunica/../../node_modules/spark-md5/spark-md5.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/sparqljs/lib/SparqlGenerator.js","webpack://Comunica/../../node_modules/sparqljs/lib/SparqlParser.js","webpack://Comunica/../../node_modules/sparqljs/lib/Wildcard.js","webpack://Comunica/../../node_modules/sparqljs/sparql.js","webpack://Comunica/../../node_modules/sparqljson-parse/index.js","webpack://Comunica/../../node_modules/sparqljson-parse/lib/SparqlJsonParser.js","webpack://Comunica/../../node_modules/sparqljson-to-tree/index.js","webpack://Comunica/../../node_modules/sparqljson-to-tree/lib/Converter.js","webpack://Comunica/../../node_modules/sparqlxml-parse/index.js","webpack://Comunica/../../node_modules/sparqlxml-parse/lib/SparqlXmlParser.js","webpack://Comunica/../../node_modules/stream-to-string/index.js","webpack://Comunica/../../node_modules/string_decoder/lib/string_decoder.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/index.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/md5.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/native.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/nil.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/parse.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/regex.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/rng.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/sha1.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/stringify.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v1.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v3.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v35.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v4.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v5.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/validate.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/version.js","webpack://Comunica/../../node_modules/xmlchars/xml/1.0/ed5.js","webpack://Comunica/../../node_modules/xmlchars/xml/1.1/ed2.js","webpack://Comunica/../../node_modules/xmlchars/xmlns/1.0/ed3.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/asynciterator/dist/asynciterator.js","webpack://Comunica/../../node_modules/asynciterator/dist/linkedlist.js","webpack://Comunica/../../node_modules/asynciterator/dist/taskscheduler.js","webpack://Comunica/../../node_modules/lru-cache/dist/commonjs/index.js","webpack://Comunica/webpack/bootstrap","webpack://Comunica/webpack/runtime/compat get default export","webpack://Comunica/webpack/runtime/define property getters","webpack://Comunica/webpack/runtime/global","webpack://Comunica/webpack/runtime/hasOwnProperty shorthand","webpack://Comunica/webpack/runtime/make namespace object","webpack://Comunica/webpack/startup"],"sourcesContent":["var { Buffer } = require('buffer')\n// Named constants with unique integer values\nvar C = {};\n// Tokens\nvar LEFT_BRACE = C.LEFT_BRACE = 0x1;\nvar RIGHT_BRACE = C.RIGHT_BRACE = 0x2;\nvar LEFT_BRACKET = C.LEFT_BRACKET = 0x3;\nvar RIGHT_BRACKET = C.RIGHT_BRACKET = 0x4;\nvar COLON = C.COLON = 0x5;\nvar COMMA = C.COMMA = 0x6;\nvar TRUE = C.TRUE = 0x7;\nvar FALSE = C.FALSE = 0x8;\nvar NULL = C.NULL = 0x9;\nvar STRING = C.STRING = 0xa;\nvar NUMBER = C.NUMBER = 0xb;\n// Tokenizer States\nvar START = C.START = 0x11;\nvar STOP = C.STOP = 0x12;\nvar TRUE1 = C.TRUE1 = 0x21;\nvar TRUE2 = C.TRUE2 = 0x22;\nvar TRUE3 = C.TRUE3 = 0x23;\nvar FALSE1 = C.FALSE1 = 0x31;\nvar FALSE2 = C.FALSE2 = 0x32;\nvar FALSE3 = C.FALSE3 = 0x33;\nvar FALSE4 = C.FALSE4 = 0x34;\nvar NULL1 = C.NULL1 = 0x41;\nvar NULL2 = C.NULL2 = 0x42;\nvar NULL3 = C.NULL3 = 0x43;\nvar NUMBER1 = C.NUMBER1 = 0x51;\nvar NUMBER3 = C.NUMBER3 = 0x53;\nvar STRING1 = C.STRING1 = 0x61;\nvar STRING2 = C.STRING2 = 0x62;\nvar STRING3 = C.STRING3 = 0x63;\nvar STRING4 = C.STRING4 = 0x64;\nvar STRING5 = C.STRING5 = 0x65;\nvar STRING6 = C.STRING6 = 0x66;\n// Parser States\nvar VALUE = C.VALUE = 0x71;\nvar KEY = C.KEY = 0x72;\n// Parser Modes\nvar OBJECT = C.OBJECT = 0x81;\nvar ARRAY = C.ARRAY = 0x82;\n// Character constants\nvar BACK_SLASH = \"\\\\\".charCodeAt(0);\nvar FORWARD_SLASH = \"\\/\".charCodeAt(0);\nvar BACKSPACE = \"\\b\".charCodeAt(0);\nvar FORM_FEED = \"\\f\".charCodeAt(0);\nvar NEWLINE = \"\\n\".charCodeAt(0);\nvar CARRIAGE_RETURN = \"\\r\".charCodeAt(0);\nvar TAB = \"\\t\".charCodeAt(0);\n\nvar STRING_BUFFER_SIZE = 64 * 1024;\n\nfunction alloc(size) {\n return Buffer.alloc ? Buffer.alloc(size) : new Buffer(size);\n}\n\nfunction Parser() {\n this.tState = START;\n this.value = undefined;\n\n this.string = undefined; // string data\n this.stringBuffer = alloc(STRING_BUFFER_SIZE);\n this.stringBufferOffset = 0;\n this.unicode = undefined; // unicode escapes\n this.highSurrogate = undefined;\n\n this.key = undefined;\n this.mode = undefined;\n this.stack = [];\n this.state = VALUE;\n this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n this.temp_buffs = { \"2\": alloc(2), \"3\": alloc(3), \"4\": alloc(4) }; // for rebuilding chars split before boundary is reached\n\n // Stream offset\n this.offset = -1;\n}\n\n// Slow code to string converter (only used when throwing syntax errors)\nParser.toknam = function (code) {\n var keys = Object.keys(C);\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n if (C[key] === code) { return key; }\n }\n return code && (\"0x\" + code.toString(16));\n};\n\nvar proto = Parser.prototype;\nproto.onError = function (err) { throw err; };\nproto.charError = function (buffer, i) {\n this.tState = STOP;\n this.onError(new Error(\"Unexpected \" + JSON.stringify(String.fromCharCode(buffer[i])) + \" at position \" + i + \" in state \" + Parser.toknam(this.tState)));\n};\nproto.appendStringChar = function (char) {\n if (this.stringBufferOffset >= STRING_BUFFER_SIZE) {\n this.string += this.stringBuffer.toString('utf8');\n this.stringBufferOffset = 0;\n }\n\n this.stringBuffer[this.stringBufferOffset++] = char;\n};\nproto.appendStringBuf = function (buf, start, end) {\n var size = buf.length;\n if (typeof start === 'number') {\n if (typeof end === 'number') {\n if (end < 0) {\n // adding a negative end decreeses the size\n size = buf.length - start + end;\n } else {\n size = end - start;\n }\n } else {\n size = buf.length - start;\n }\n }\n\n if (size < 0) {\n size = 0;\n }\n\n if (this.stringBufferOffset + size > STRING_BUFFER_SIZE) {\n this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset);\n this.stringBufferOffset = 0;\n }\n\n buf.copy(this.stringBuffer, this.stringBufferOffset, start, end);\n this.stringBufferOffset += size;\n};\nproto.write = function (buffer) {\n if (typeof buffer === \"string\") buffer = new Buffer(buffer);\n var n;\n for (var i = 0, l = buffer.length; i < l; i++) {\n if (this.tState === START){\n n = buffer[i];\n this.offset++;\n if(n === 0x7b){ this.onToken(LEFT_BRACE, \"{\"); // {\n }else if(n === 0x7d){ this.onToken(RIGHT_BRACE, \"}\"); // }\n }else if(n === 0x5b){ this.onToken(LEFT_BRACKET, \"[\"); // [\n }else if(n === 0x5d){ this.onToken(RIGHT_BRACKET, \"]\"); // ]\n }else if(n === 0x3a){ this.onToken(COLON, \":\"); // :\n }else if(n === 0x2c){ this.onToken(COMMA, \",\"); // ,\n }else if(n === 0x74){ this.tState = TRUE1; // t\n }else if(n === 0x66){ this.tState = FALSE1; // f\n }else if(n === 0x6e){ this.tState = NULL1; // n\n }else if(n === 0x22){ // \"\n this.string = \"\";\n this.stringBufferOffset = 0;\n this.tState = STRING1;\n }else if(n === 0x2d){ this.string = \"-\"; this.tState = NUMBER1; // -\n }else{\n if (n >= 0x30 && n < 0x40) { // 1-9\n this.string = String.fromCharCode(n); this.tState = NUMBER3;\n } else if (n === 0x20 || n === 0x09 || n === 0x0a || n === 0x0d) {\n // whitespace\n } else {\n return this.charError(buffer, i);\n }\n }\n }else if (this.tState === STRING1){ // After open quote\n n = buffer[i]; // get current byte from buffer\n // check for carry over of a multi byte char split between data chunks\n // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n if (this.bytes_remaining > 0) {\n for (var j = 0; j < this.bytes_remaining; j++) {\n this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = buffer[j];\n }\n\n this.appendStringBuf(this.temp_buffs[this.bytes_in_sequence]);\n this.bytes_in_sequence = this.bytes_remaining = 0;\n i = i + j - 1;\n } else if (this.bytes_remaining === 0 && n >= 128) { // else if no remainder bytes carried over, parse multi byte (>=128) chars one at a time\n if (n <= 193 || n > 244) {\n return this.onError(new Error(\"Invalid UTF-8 character at position \" + i + \" in state \" + Parser.toknam(this.tState)));\n }\n if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2;\n if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3;\n if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4;\n if ((this.bytes_in_sequence + i) > buffer.length) { // if bytes needed to complete char fall outside buffer length, we have a boundary split\n for (var k = 0; k <= (buffer.length - 1 - i); k++) {\n this.temp_buffs[this.bytes_in_sequence][k] = buffer[i + k]; // fill temp buffer of correct size with bytes available in this chunk\n }\n this.bytes_remaining = (i + this.bytes_in_sequence) - buffer.length;\n i = buffer.length - 1;\n } else {\n this.appendStringBuf(buffer, i, i + this.bytes_in_sequence);\n i = i + this.bytes_in_sequence - 1;\n }\n } else if (n === 0x22) {\n this.tState = START;\n this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset);\n this.stringBufferOffset = 0;\n this.onToken(STRING, this.string);\n this.offset += Buffer.byteLength(this.string, 'utf8') + 1;\n this.string = undefined;\n }\n else if (n === 0x5c) {\n this.tState = STRING2;\n }\n else if (n >= 0x20) { this.appendStringChar(n); }\n else {\n return this.charError(buffer, i);\n }\n }else if (this.tState === STRING2){ // After backslash\n n = buffer[i];\n if(n === 0x22){ this.appendStringChar(n); this.tState = STRING1;\n }else if(n === 0x5c){ this.appendStringChar(BACK_SLASH); this.tState = STRING1;\n }else if(n === 0x2f){ this.appendStringChar(FORWARD_SLASH); this.tState = STRING1;\n }else if(n === 0x62){ this.appendStringChar(BACKSPACE); this.tState = STRING1;\n }else if(n === 0x66){ this.appendStringChar(FORM_FEED); this.tState = STRING1;\n }else if(n === 0x6e){ this.appendStringChar(NEWLINE); this.tState = STRING1;\n }else if(n === 0x72){ this.appendStringChar(CARRIAGE_RETURN); this.tState = STRING1;\n }else if(n === 0x74){ this.appendStringChar(TAB); this.tState = STRING1;\n }else if(n === 0x75){ this.unicode = \"\"; this.tState = STRING3;\n }else{\n return this.charError(buffer, i);\n }\n }else if (this.tState === STRING3 || this.tState === STRING4 || this.tState === STRING5 || this.tState === STRING6){ // unicode hex codes\n n = buffer[i];\n // 0-9 A-F a-f\n if ((n >= 0x30 && n < 0x40) || (n > 0x40 && n <= 0x46) || (n > 0x60 && n <= 0x66)) {\n this.unicode += String.fromCharCode(n);\n if (this.tState++ === STRING6) {\n var intVal = parseInt(this.unicode, 16);\n this.unicode = undefined;\n if (this.highSurrogate !== undefined && intVal >= 0xDC00 && intVal < (0xDFFF + 1)) { //<56320,57343> - lowSurrogate\n this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate, intVal)));\n this.highSurrogate = undefined;\n } else if (this.highSurrogate === undefined && intVal >= 0xD800 && intVal < (0xDBFF + 1)) { //<55296,56319> - highSurrogate\n this.highSurrogate = intVal;\n } else {\n if (this.highSurrogate !== undefined) {\n this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate)));\n this.highSurrogate = undefined;\n }\n this.appendStringBuf(new Buffer(String.fromCharCode(intVal)));\n }\n this.tState = STRING1;\n }\n } else {\n return this.charError(buffer, i);\n }\n } else if (this.tState === NUMBER1 || this.tState === NUMBER3) {\n n = buffer[i];\n\n switch (n) {\n case 0x30: // 0\n case 0x31: // 1\n case 0x32: // 2\n case 0x33: // 3\n case 0x34: // 4\n case 0x35: // 5\n case 0x36: // 6\n case 0x37: // 7\n case 0x38: // 8\n case 0x39: // 9\n case 0x2e: // .\n case 0x65: // e\n case 0x45: // E\n case 0x2b: // +\n case 0x2d: // -\n this.string += String.fromCharCode(n);\n this.tState = NUMBER3;\n break;\n default:\n this.tState = START;\n var error = this.numberReviver(this.string);\n if (error){\n return error;\n }\n\n this.offset += this.string.length - 1;\n this.string = undefined;\n i--;\n break;\n }\n }else if (this.tState === TRUE1){ // r\n if (buffer[i] === 0x72) { this.tState = TRUE2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === TRUE2){ // u\n if (buffer[i] === 0x75) { this.tState = TRUE3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === TRUE3){ // e\n if (buffer[i] === 0x65) { this.tState = START; this.onToken(TRUE, true); this.offset+= 3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE1){ // a\n if (buffer[i] === 0x61) { this.tState = FALSE2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE2){ // l\n if (buffer[i] === 0x6c) { this.tState = FALSE3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE3){ // s\n if (buffer[i] === 0x73) { this.tState = FALSE4; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE4){ // e\n if (buffer[i] === 0x65) { this.tState = START; this.onToken(FALSE, false); this.offset+= 4; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL1){ // u\n if (buffer[i] === 0x75) { this.tState = NULL2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL2){ // l\n if (buffer[i] === 0x6c) { this.tState = NULL3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL3){ // l\n if (buffer[i] === 0x6c) { this.tState = START; this.onToken(NULL, null); this.offset += 3; }\n else { return this.charError(buffer, i); }\n }\n }\n};\nproto.onToken = function (token, value) {\n // Override this to get events\n};\n\nproto.parseError = function (token, value) {\n this.tState = STOP;\n this.onError(new Error(\"Unexpected \" + Parser.toknam(token) + (value ? (\"(\" + JSON.stringify(value) + \")\") : \"\") + \" in state \" + Parser.toknam(this.state)));\n};\nproto.push = function () {\n this.stack.push({value: this.value, key: this.key, mode: this.mode});\n};\nproto.pop = function () {\n var value = this.value;\n var parent = this.stack.pop();\n this.value = parent.value;\n this.key = parent.key;\n this.mode = parent.mode;\n this.emit(value);\n if (!this.mode) { this.state = VALUE; }\n};\nproto.emit = function (value) {\n if (this.mode) { this.state = COMMA; }\n this.onValue(value);\n};\nproto.onValue = function (value) {\n // Override me\n};\nproto.onToken = function (token, value) {\n if(this.state === VALUE){\n if(token === STRING || token === NUMBER || token === TRUE || token === FALSE || token === NULL){\n if (this.value) {\n this.value[this.key] = value;\n }\n this.emit(value);\n }else if(token === LEFT_BRACE){\n this.push();\n if (this.value) {\n this.value = this.value[this.key] = {};\n } else {\n this.value = {};\n }\n this.key = undefined;\n this.state = KEY;\n this.mode = OBJECT;\n }else if(token === LEFT_BRACKET){\n this.push();\n if (this.value) {\n this.value = this.value[this.key] = [];\n } else {\n this.value = [];\n }\n this.key = 0;\n this.mode = ARRAY;\n this.state = VALUE;\n }else if(token === RIGHT_BRACE){\n if (this.mode === OBJECT) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else if(token === RIGHT_BRACKET){\n if (this.mode === ARRAY) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else{\n return this.parseError(token, value);\n }\n }else if(this.state === KEY){\n if (token === STRING) {\n this.key = value;\n this.state = COLON;\n } else if (token === RIGHT_BRACE) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else if(this.state === COLON){\n if (token === COLON) { this.state = VALUE; }\n else { return this.parseError(token, value); }\n }else if(this.state === COMMA){\n if (token === COMMA) {\n if (this.mode === ARRAY) { this.key++; this.state = VALUE; }\n else if (this.mode === OBJECT) { this.state = KEY; }\n\n } else if (token === RIGHT_BRACKET && this.mode === ARRAY || token === RIGHT_BRACE && this.mode === OBJECT) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else{\n return this.parseError(token, value);\n }\n};\n\n// Override to implement your own number reviver.\n// Any value returned is treated as error and will interrupt parsing.\nproto.numberReviver = function (text) {\n var result = Number(text);\n\n if (isNaN(result)) {\n return this.charError(buffer, i);\n }\n\n if ((text.match(/[0-9]+/) == text) && (result.toString() != text)) {\n // Long string of digits which is an ID string and not valid and/or safe JavaScript integer Number\n this.onToken(STRING, text);\n } else {\n this.onToken(NUMBER, result);\n }\n}\n\nParser.C = C;\n\nmodule.exports = Parser;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragment = void 0;\nfunction getFragment(inputStr) {\n let str = inputStr;\n if (str.endsWith('/') || str.endsWith('#')) {\n str = str.slice(0, str.length - 1);\n }\n const args = [];\n if (str.lastIndexOf('/') > 0) {\n args.push(str.lastIndexOf('/'));\n }\n if (str.lastIndexOf('#') > 0) {\n args.push(str.lastIndexOf('#'));\n }\n const i = Math.max(...args);\n return str.slice(i + 1);\n}\nfunction camelize(str) {\n var _a;\n const res = (_a = str\n .split(/[^a-z0-9]+/ig)\n .filter((s) => s !== '')\n .map((s) => s[0].toUpperCase() + s.slice(1))\n .join('')\n // Make sure the prefix does not start with a number\n .match(/[a-z][a-z0-9]+/ig)) === null || _a === void 0 ? void 0 : _a[0];\n // Include 'v' so we always return something matching the pattern\n // [a-z][a-z0-9]+\n return typeof res === 'undefined' ? undefined : res[0].toLowerCase() + res.slice(1);\n}\nfunction fragment(str) {\n let value = getFragment(str);\n value = value ? camelize(value) : undefined;\n return value || 'v';\n}\nexports.fragment = fragment;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupAllPrefixes = exports.prefixToUri = exports.uriToPrefix = void 0;\nconst fragment_1 = require(\"./fragment\");\nconst lookup_1 = require(\"./lookup\");\nfunction uriToPrefix(uri, options) {\n return __awaiter(this, void 0, void 0, function* () {\n let result;\n // Collect the prefix\n try {\n result = yield (0, lookup_1.lookupPrefix)(uri, options);\n }\n catch (_a) {\n if (options === null || options === void 0 ? void 0 : options.mintOnUnknown) {\n // Keep prefixes at most 4 characters long when minting a new one\n result = (0, fragment_1.fragment)(uri).slice(0, 4);\n }\n }\n // If there is a bank of existing prefixes make sure to make a unique one\n // by postfixing a number\n if (typeof result !== 'undefined'\n && typeof (options === null || options === void 0 ? void 0 : options.existingPrefixes) === 'object'\n && result in options.existingPrefixes) {\n let i = 0;\n while (`${result}${i}` in options.existingPrefixes) {\n i += 1;\n }\n result = `${result}${i}`;\n }\n return result;\n });\n}\nexports.uriToPrefix = uriToPrefix;\n/**\n * Lookup the namespace commonly associated with a given prefix\n * @param prefix The prefix to lookup the namespace for\n * @param options You can optionally pass a custom fetch function\n */\nfunction prefixToUri(prefix, options) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // The await needs to be here so that we can return undefined on rejection\n return yield (0, lookup_1.lookupUri)(prefix, options);\n }\n catch (_a) {\n return undefined;\n }\n });\n}\nexports.prefixToUri = prefixToUri;\nvar lookup_2 = require(\"./lookup\");\nObject.defineProperty(exports, \"lookupAllPrefixes\", { enumerable: true, get: function () { return lookup_2.lookupAllPrefixes; } });\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchContext = exports.fetchJson = void 0;\n// TODO: Use universal fetch here\nconst cross_fetch_1 = require(\"cross-fetch\");\nfunction fetchJson(url, options) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n // Select the correct fetch function\n const fetchFn = (_a = options === null || options === void 0 ? void 0 : options.fetch) !== null && _a !== void 0 ? _a : cross_fetch_1.fetch;\n return (yield fetchFn(url)).json();\n });\n}\nexports.fetchJson = fetchJson;\nfunction fetchContext(url, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield fetchJson(url, options))['@context'];\n });\n}\nexports.fetchContext = fetchContext;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lookupNamespace\"), exports);\n__exportStar(require(\"./lookupPrefix\"), exports);\n__exportStar(require(\"./lookupAllPrefixes\"), exports);\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupAllPrefixes = void 0;\nconst fetchContext_1 = require(\"./fetchContext\");\n/**\n * Use prefix.cc to look up all recorded prefixes\n */\nfunction lookupAllPrefixes(options) {\n return __awaiter(this, void 0, void 0, function* () {\n return (0, fetchContext_1.fetchContext)('https://prefix.cc/context', options);\n });\n}\nexports.lookupAllPrefixes = lookupAllPrefixes;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupUri = void 0;\nconst fetchContext_1 = require(\"./fetchContext\");\n/**\n * Use prefix.cc to look up the namespace associated with a given prefix.\n * Errors if one cannot be found.\n *\n * @param prefix The prefix of which to obtain the namespace\n * @param options Optional fetch function to use\n */\nfunction lookupUri(prefix, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const uri = (yield (0, fetchContext_1.fetchContext)(`https://prefix.cc/${prefix}.file.jsonld`, options))[prefix];\n if (typeof uri !== 'string') {\n throw new Error(`Expected uri to be a string, received: ${uri} of type ${typeof uri}`);\n }\n return uri;\n });\n}\nexports.lookupUri = lookupUri;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupPrefix = void 0;\nconst fetchContext_1 = require(\"./fetchContext\");\n/**\n * Use prefix.cc to look up the prefix for a URI namespace, rejects if there is an error in\n * looking up the prefix, or if no prefixes are returned\n *\n * @param uri The URI to obtain a prefix for\n * @param options Optional fetch function to use\n */\nfunction lookupPrefix(uri, options) {\n return __awaiter(this, void 0, void 0, function* () {\n // Create the correct url to lookup including search parameters\n const url = new URL('https://prefix.cc/reverse');\n url.searchParams.append('uri', uri);\n url.searchParams.append('format', 'jsonld');\n const prefixes = Object.keys(yield (0, fetchContext_1.fetchContext)(url, options));\n if (prefixes.length === 0) {\n throw new Error('No prefixes returned');\n }\n return prefixes[0];\n });\n}\nexports.lookupPrefix = lookupPrefix;\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SaxesParser = exports.EVENTS = void 0;\nconst ed5 = require(\"xmlchars/xml/1.0/ed5\");\nconst ed2 = require(\"xmlchars/xml/1.1/ed2\");\nconst NSed3 = require(\"xmlchars/xmlns/1.0/ed3\");\nvar isS = ed5.isS;\nvar isChar10 = ed5.isChar;\nvar isNameStartChar = ed5.isNameStartChar;\nvar isNameChar = ed5.isNameChar;\nvar S_LIST = ed5.S_LIST;\nvar NAME_RE = ed5.NAME_RE;\nvar isChar11 = ed2.isChar;\nvar isNCNameStartChar = NSed3.isNCNameStartChar;\nvar isNCNameChar = NSed3.isNCNameChar;\nvar NC_NAME_RE = NSed3.NC_NAME_RE;\nconst XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\nconst XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\nconst rootNS = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n __proto__: null,\n xml: XML_NAMESPACE,\n xmlns: XMLNS_NAMESPACE,\n};\nconst XML_ENTITIES = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n __proto__: null,\n amp: \"&\",\n gt: \">\",\n lt: \"<\",\n quot: \"\\\"\",\n apos: \"'\",\n};\n// EOC: end-of-chunk\nconst EOC = -1;\nconst NL_LIKE = -2;\nconst S_BEGIN = 0; // Initial state.\nconst S_BEGIN_WHITESPACE = 1; // leading whitespace\nconst S_DOCTYPE = 2; // \nconst TAB = 9;\nconst NL = 0xA;\nconst CR = 0xD;\nconst SPACE = 0x20;\nconst BANG = 0x21;\nconst DQUOTE = 0x22;\nconst AMP = 0x26;\nconst SQUOTE = 0x27;\nconst MINUS = 0x2D;\nconst FORWARD_SLASH = 0x2F;\nconst SEMICOLON = 0x3B;\nconst LESS = 0x3C;\nconst EQUAL = 0x3D;\nconst GREATER = 0x3E;\nconst QUESTION = 0x3F;\nconst OPEN_BRACKET = 0x5B;\nconst CLOSE_BRACKET = 0x5D;\nconst NEL = 0x85;\nconst LS = 0x2028; // Line Separator\nconst isQuote = (c) => c === DQUOTE || c === SQUOTE;\nconst QUOTES = [DQUOTE, SQUOTE];\nconst DOCTYPE_TERMINATOR = [...QUOTES, OPEN_BRACKET, GREATER];\nconst DTD_TERMINATOR = [...QUOTES, LESS, CLOSE_BRACKET];\nconst XML_DECL_NAME_TERMINATOR = [EQUAL, QUESTION, ...S_LIST];\nconst ATTRIB_VALUE_UNQUOTED_TERMINATOR = [...S_LIST, GREATER, AMP, LESS];\nfunction nsPairCheck(parser, prefix, uri) {\n switch (prefix) {\n case \"xml\":\n if (uri !== XML_NAMESPACE) {\n parser.fail(`xml prefix must be bound to ${XML_NAMESPACE}.`);\n }\n break;\n case \"xmlns\":\n if (uri !== XMLNS_NAMESPACE) {\n parser.fail(`xmlns prefix must be bound to ${XMLNS_NAMESPACE}.`);\n }\n break;\n default:\n }\n switch (uri) {\n case XMLNS_NAMESPACE:\n parser.fail(prefix === \"\" ?\n `the default namespace may not be set to ${uri}.` :\n `may not assign a prefix (even \"xmlns\") to the URI \\\n${XMLNS_NAMESPACE}.`);\n break;\n case XML_NAMESPACE:\n switch (prefix) {\n case \"xml\":\n // Assinging the XML namespace to \"xml\" is fine.\n break;\n case \"\":\n parser.fail(`the default namespace may not be set to ${uri}.`);\n break;\n default:\n parser.fail(\"may not assign the xml namespace to another prefix.\");\n }\n break;\n default:\n }\n}\nfunction nsMappingCheck(parser, mapping) {\n for (const local of Object.keys(mapping)) {\n nsPairCheck(parser, local, mapping[local]);\n }\n}\nconst isNCName = (name) => NC_NAME_RE.test(name);\nconst isName = (name) => NAME_RE.test(name);\nconst FORBIDDEN_START = 0;\nconst FORBIDDEN_BRACKET = 1;\nconst FORBIDDEN_BRACKET_BRACKET = 2;\n/**\n * The list of supported events.\n */\nexports.EVENTS = [\n \"xmldecl\",\n \"text\",\n \"processinginstruction\",\n \"doctype\",\n \"comment\",\n \"opentagstart\",\n \"attribute\",\n \"opentag\",\n \"closetag\",\n \"cdata\",\n \"error\",\n \"end\",\n \"ready\",\n];\nconst EVENT_NAME_TO_HANDLER_NAME = {\n xmldecl: \"xmldeclHandler\",\n text: \"textHandler\",\n processinginstruction: \"piHandler\",\n doctype: \"doctypeHandler\",\n comment: \"commentHandler\",\n opentagstart: \"openTagStartHandler\",\n attribute: \"attributeHandler\",\n opentag: \"openTagHandler\",\n closetag: \"closeTagHandler\",\n cdata: \"cdataHandler\",\n error: \"errorHandler\",\n end: \"endHandler\",\n ready: \"readyHandler\",\n};\n// eslint-disable-next-line @typescript-eslint/ban-types\nclass SaxesParser {\n /**\n * Indicates whether or not the parser is closed. If ``true``, wait for\n * the ``ready`` event to write again.\n */\n get closed() {\n return this._closed;\n }\n /**\n * @param opt The parser options.\n */\n constructor(opt) {\n this.opt = opt !== null && opt !== void 0 ? opt : {};\n this.fragmentOpt = !!this.opt.fragment;\n const xmlnsOpt = this.xmlnsOpt = !!this.opt.xmlns;\n this.trackPosition = this.opt.position !== false;\n this.fileName = this.opt.fileName;\n if (xmlnsOpt) {\n // This is the function we use to perform name checks on PIs and entities.\n // When namespaces are used, colons are not allowed in PI target names or\n // entity names. So the check depends on whether namespaces are used. See:\n //\n // https://www.w3.org/XML/xml-names-19990114-errata.html\n // NE08\n //\n this.nameStartCheck = isNCNameStartChar;\n this.nameCheck = isNCNameChar;\n this.isName = isNCName;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.processAttribs = this.processAttribsNS;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.pushAttrib = this.pushAttribNS;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n this.ns = Object.assign({ __proto__: null }, rootNS);\n const additional = this.opt.additionalNamespaces;\n if (additional != null) {\n nsMappingCheck(this, additional);\n Object.assign(this.ns, additional);\n }\n }\n else {\n this.nameStartCheck = isNameStartChar;\n this.nameCheck = isNameChar;\n this.isName = isName;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.processAttribs = this.processAttribsPlain;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.pushAttrib = this.pushAttribPlain;\n }\n //\n // The order of the members in this table needs to correspond to the state\n // numbers given to the states that correspond to the methods being recorded\n // here.\n //\n this.stateTable = [\n /* eslint-disable @typescript-eslint/unbound-method */\n this.sBegin,\n this.sBeginWhitespace,\n this.sDoctype,\n this.sDoctypeQuote,\n this.sDTD,\n this.sDTDQuoted,\n this.sDTDOpenWaka,\n this.sDTDOpenWakaBang,\n this.sDTDComment,\n this.sDTDCommentEnding,\n this.sDTDCommentEnded,\n this.sDTDPI,\n this.sDTDPIEnding,\n this.sText,\n this.sEntity,\n this.sOpenWaka,\n this.sOpenWakaBang,\n this.sComment,\n this.sCommentEnding,\n this.sCommentEnded,\n this.sCData,\n this.sCDataEnding,\n this.sCDataEnding2,\n this.sPIFirstChar,\n this.sPIRest,\n this.sPIBody,\n this.sPIEnding,\n this.sXMLDeclNameStart,\n this.sXMLDeclName,\n this.sXMLDeclEq,\n this.sXMLDeclValueStart,\n this.sXMLDeclValue,\n this.sXMLDeclSeparator,\n this.sXMLDeclEnding,\n this.sOpenTag,\n this.sOpenTagSlash,\n this.sAttrib,\n this.sAttribName,\n this.sAttribNameSawWhite,\n this.sAttribValue,\n this.sAttribValueQuoted,\n this.sAttribValueClosed,\n this.sAttribValueUnquoted,\n this.sCloseTag,\n this.sCloseTagSawWhite,\n /* eslint-enable @typescript-eslint/unbound-method */\n ];\n this._init();\n }\n _init() {\n var _a;\n this.openWakaBang = \"\";\n this.text = \"\";\n this.name = \"\";\n this.piTarget = \"\";\n this.entity = \"\";\n this.q = null;\n this.tags = [];\n this.tag = null;\n this.topNS = null;\n this.chunk = \"\";\n this.chunkPosition = 0;\n this.i = 0;\n this.prevI = 0;\n this.carriedFromPrevious = undefined;\n this.forbiddenState = FORBIDDEN_START;\n this.attribList = [];\n // The logic is organized so as to minimize the need to check\n // this.opt.fragment while parsing.\n const { fragmentOpt } = this;\n this.state = fragmentOpt ? S_TEXT : S_BEGIN;\n // We want these to be all true if we are dealing with a fragment.\n this.reportedTextBeforeRoot = this.reportedTextAfterRoot = this.closedRoot =\n this.sawRoot = fragmentOpt;\n // An XML declaration is intially possible only when parsing whole\n // documents.\n this.xmlDeclPossible = !fragmentOpt;\n this.xmlDeclExpects = [\"version\"];\n this.entityReturnState = undefined;\n let { defaultXMLVersion } = this.opt;\n if (defaultXMLVersion === undefined) {\n if (this.opt.forceXMLVersion === true) {\n throw new Error(\"forceXMLVersion set but defaultXMLVersion is not set\");\n }\n defaultXMLVersion = \"1.0\";\n }\n this.setXMLVersion(defaultXMLVersion);\n this.positionAtNewLine = 0;\n this.doctype = false;\n this._closed = false;\n this.xmlDecl = {\n version: undefined,\n encoding: undefined,\n standalone: undefined,\n };\n this.line = 1;\n this.column = 0;\n this.ENTITIES = Object.create(XML_ENTITIES);\n (_a = this.readyHandler) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n /**\n * The stream position the parser is currently looking at. This field is\n * zero-based.\n *\n * This field is not based on counting Unicode characters but is to be\n * interpreted as a plain index into a JavaScript string.\n */\n get position() {\n return this.chunkPosition + this.i;\n }\n /**\n * The column number of the next character to be read by the parser. *\n * This field is zero-based. (The first column in a line is 0.)\n *\n * This field reports the index at which the next character would be in the\n * line if the line were represented as a JavaScript string. Note that this\n * *can* be different to a count based on the number of *Unicode characters*\n * due to how JavaScript handles astral plane characters.\n *\n * See [[column]] for a number that corresponds to a count of Unicode\n * characters.\n */\n get columnIndex() {\n return this.position - this.positionAtNewLine;\n }\n /**\n * Set an event listener on an event. The parser supports one handler per\n * event type. If you try to set an event handler over an existing handler,\n * the old handler is silently overwritten.\n *\n * @param name The event to listen to.\n *\n * @param handler The handler to set.\n */\n on(name, handler) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n this[EVENT_NAME_TO_HANDLER_NAME[name]] = handler;\n }\n /**\n * Unset an event handler.\n *\n * @parma name The event to stop listening to.\n */\n off(name) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n this[EVENT_NAME_TO_HANDLER_NAME[name]] = undefined;\n }\n /**\n * Make an error object. The error object will have a message that contains\n * the ``fileName`` option passed at the creation of the parser. If position\n * tracking was turned on, it will also have line and column number\n * information.\n *\n * @param message The message describing the error to report.\n *\n * @returns An error object with a properly formatted message.\n */\n makeError(message) {\n var _a;\n let msg = (_a = this.fileName) !== null && _a !== void 0 ? _a : \"\";\n if (this.trackPosition) {\n if (msg.length > 0) {\n msg += \":\";\n }\n msg += `${this.line}:${this.column}`;\n }\n if (msg.length > 0) {\n msg += \": \";\n }\n return new Error(msg + message);\n }\n /**\n * Report a parsing error. This method is made public so that client code may\n * check for issues that are outside the scope of this project and can report\n * errors.\n *\n * @param message The error to report.\n *\n * @returns this\n */\n fail(message) {\n const err = this.makeError(message);\n const handler = this.errorHandler;\n if (handler === undefined) {\n throw err;\n }\n else {\n handler(err);\n }\n return this;\n }\n /**\n * Write a XML data to the parser.\n *\n * @param chunk The XML data to write.\n *\n * @returns this\n */\n // We do need object for the type here. Yes, it often causes problems\n // but not in this case.\n write(chunk) {\n if (this.closed) {\n return this.fail(\"cannot write after close; assign an onready handler.\");\n }\n let end = false;\n if (chunk === null) {\n // We cannot return immediately because carriedFromPrevious may need\n // processing.\n end = true;\n chunk = \"\";\n }\n else if (typeof chunk === \"object\") {\n chunk = chunk.toString();\n }\n // We checked if performing a pre-decomposition of the string into an array\n // of single complete characters (``Array.from(chunk)``) would be faster\n // than the current repeated calls to ``charCodeAt``. As of August 2018, it\n // isn't. (There may be Node-specific code that would perform faster than\n // ``Array.from`` but don't want to be dependent on Node.)\n if (this.carriedFromPrevious !== undefined) {\n // The previous chunk had char we must carry over.\n chunk = `${this.carriedFromPrevious}${chunk}`;\n this.carriedFromPrevious = undefined;\n }\n let limit = chunk.length;\n const lastCode = chunk.charCodeAt(limit - 1);\n if (!end &&\n // A trailing CR or surrogate must be carried over to the next\n // chunk.\n (lastCode === CR || (lastCode >= 0xD800 && lastCode <= 0xDBFF))) {\n // The chunk ends with a character that must be carried over. We cannot\n // know how to handle it until we get the next chunk or the end of the\n // stream. So save it for later.\n this.carriedFromPrevious = chunk[limit - 1];\n limit--;\n chunk = chunk.slice(0, limit);\n }\n const { stateTable } = this;\n this.chunk = chunk;\n this.i = 0;\n while (this.i < limit) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n stateTable[this.state].call(this);\n }\n this.chunkPosition += limit;\n return end ? this.end() : this;\n }\n /**\n * Close the current stream. Perform final well-formedness checks and reset\n * the parser tstate.\n *\n * @returns this\n */\n close() {\n return this.write(null);\n }\n /**\n * Get a single code point out of the current chunk. This updates the current\n * position if we do position tracking.\n *\n * This is the algorithm to use for XML 1.0.\n *\n * @returns The character read.\n */\n getCode10() {\n const { chunk, i } = this;\n this.prevI = i;\n // Yes, we do this instead of doing this.i++. Doing it this way, we do not\n // read this.i again, which is a bit faster.\n this.i = i + 1;\n if (i >= chunk.length) {\n return EOC;\n }\n // Using charCodeAt and handling the surrogates ourselves is faster\n // than using codePointAt.\n const code = chunk.charCodeAt(i);\n this.column++;\n if (code < 0xD800) {\n if (code >= SPACE || code === TAB) {\n return code;\n }\n switch (code) {\n case NL:\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL;\n case CR:\n // We may get NaN if we read past the end of the chunk, which is fine.\n if (chunk.charCodeAt(i + 1) === NL) {\n // A \\r\\n sequence is converted to \\n so we have to skip over the\n // next character. We already know it has a size of 1 so ++ is fine\n // here.\n this.i = i + 2;\n }\n // Otherwise, a \\r is just converted to \\n, so we don't have to skip\n // ahead.\n // In either case, \\r becomes \\n.\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL_LIKE;\n default:\n // If we get here, then code < SPACE and it is not NL CR or TAB.\n this.fail(\"disallowed character.\");\n return code;\n }\n }\n if (code > 0xDBFF) {\n // This is a specialized version of isChar10 that takes into account\n // that in this context code > 0xDBFF and code <= 0xFFFF. So it does not\n // test cases that don't need testing.\n if (!(code >= 0xE000 && code <= 0xFFFD)) {\n this.fail(\"disallowed character.\");\n }\n return code;\n }\n const final = 0x10000 + ((code - 0xD800) * 0x400) +\n (chunk.charCodeAt(i + 1) - 0xDC00);\n this.i = i + 2;\n // This is a specialized version of isChar10 that takes into account that in\n // this context necessarily final >= 0x10000.\n if (final > 0x10FFFF) {\n this.fail(\"disallowed character.\");\n }\n return final;\n }\n /**\n * Get a single code point out of the current chunk. This updates the current\n * position if we do position tracking.\n *\n * This is the algorithm to use for XML 1.1.\n *\n * @returns {number} The character read.\n */\n getCode11() {\n const { chunk, i } = this;\n this.prevI = i;\n // Yes, we do this instead of doing this.i++. Doing it this way, we do not\n // read this.i again, which is a bit faster.\n this.i = i + 1;\n if (i >= chunk.length) {\n return EOC;\n }\n // Using charCodeAt and handling the surrogates ourselves is faster\n // than using codePointAt.\n const code = chunk.charCodeAt(i);\n this.column++;\n if (code < 0xD800) {\n if ((code > 0x1F && code < 0x7F) || (code > 0x9F && code !== LS) ||\n code === TAB) {\n return code;\n }\n switch (code) {\n case NL: // 0xA\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL;\n case CR: { // 0xD\n // We may get NaN if we read past the end of the chunk, which is\n // fine.\n const next = chunk.charCodeAt(i + 1);\n if (next === NL || next === NEL) {\n // A CR NL or CR NEL sequence is converted to NL so we have to skip\n // over the next character. We already know it has a size of 1.\n this.i = i + 2;\n }\n // Otherwise, a CR is just converted to NL, no skip.\n }\n /* yes, fall through */\n case NEL: // 0x85\n case LS: // Ox2028\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL_LIKE;\n default:\n this.fail(\"disallowed character.\");\n return code;\n }\n }\n if (code > 0xDBFF) {\n // This is a specialized version of isCharAndNotRestricted that takes into\n // account that in this context code > 0xDBFF and code <= 0xFFFF. So it\n // does not test cases that don't need testing.\n if (!(code >= 0xE000 && code <= 0xFFFD)) {\n this.fail(\"disallowed character.\");\n }\n return code;\n }\n const final = 0x10000 + ((code - 0xD800) * 0x400) +\n (chunk.charCodeAt(i + 1) - 0xDC00);\n this.i = i + 2;\n // This is a specialized version of isCharAndNotRestricted that takes into\n // account that in this context necessarily final >= 0x10000.\n if (final > 0x10FFFF) {\n this.fail(\"disallowed character.\");\n }\n return final;\n }\n /**\n * Like ``getCode`` but with the return value normalized so that ``NL`` is\n * returned for ``NL_LIKE``.\n */\n getCodeNorm() {\n const c = this.getCode();\n return c === NL_LIKE ? NL : c;\n }\n unget() {\n this.i = this.prevI;\n this.column--;\n }\n /**\n * Capture characters into a buffer until encountering one of a set of\n * characters.\n *\n * @param chars An array of codepoints. Encountering a character in the array\n * ends the capture. (``chars`` may safely contain ``NL``.)\n *\n * @return The character code that made the capture end, or ``EOC`` if we hit\n * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n * instead.\n */\n captureTo(chars) {\n let { i: start } = this;\n const { chunk } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCode();\n const isNLLike = c === NL_LIKE;\n const final = isNLLike ? NL : c;\n if (final === EOC || chars.includes(final)) {\n this.text += chunk.slice(start, this.prevI);\n return final;\n }\n if (isNLLike) {\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n start = this.i;\n }\n }\n }\n /**\n * Capture characters into a buffer until encountering a character.\n *\n * @param char The codepoint that ends the capture. **NOTE ``char`` MAY NOT\n * CONTAIN ``NL``.** Passing ``NL`` will result in buggy behavior.\n *\n * @return ``true`` if we ran into the character. Otherwise, we ran into the\n * end of the current chunk.\n */\n captureToChar(char) {\n let { i: start } = this;\n const { chunk } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let c = this.getCode();\n switch (c) {\n case NL_LIKE:\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n start = this.i;\n c = NL;\n break;\n case EOC:\n this.text += chunk.slice(start);\n return false;\n default:\n }\n if (c === char) {\n this.text += chunk.slice(start, this.prevI);\n return true;\n }\n }\n }\n /**\n * Capture characters that satisfy ``isNameChar`` into the ``name`` field of\n * this parser.\n *\n * @return The character code that made the test fail, or ``EOC`` if we hit\n * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n * instead.\n */\n captureNameChars() {\n const { chunk, i: start } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCode();\n if (c === EOC) {\n this.name += chunk.slice(start);\n return EOC;\n }\n // NL is not a name char so we don't have to test specifically for it.\n if (!isNameChar(c)) {\n this.name += chunk.slice(start, this.prevI);\n return c === NL_LIKE ? NL : c;\n }\n }\n }\n /**\n * Skip white spaces.\n *\n * @return The character that ended the skip, or ``EOC`` if we hit\n * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n * instead.\n */\n skipSpaces() {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCodeNorm();\n if (c === EOC || !isS(c)) {\n return c;\n }\n }\n }\n setXMLVersion(version) {\n this.currentXMLVersion = version;\n /* eslint-disable @typescript-eslint/unbound-method */\n if (version === \"1.0\") {\n this.isChar = isChar10;\n this.getCode = this.getCode10;\n }\n else {\n this.isChar = isChar11;\n this.getCode = this.getCode11;\n }\n /* eslint-enable @typescript-eslint/unbound-method */\n }\n // STATE ENGINE METHODS\n // This needs to be a state separate from S_BEGIN_WHITESPACE because we want\n // to be sure never to come back to this state later.\n sBegin() {\n // We are essentially peeking at the first character of the chunk. Since\n // S_BEGIN can be in effect only when we start working on the first chunk,\n // the index at which we must look is necessarily 0. Note also that the\n // following test does not depend on decoding surrogates.\n // If the initial character is 0xFEFF, ignore it.\n if (this.chunk.charCodeAt(0) === 0xFEFF) {\n this.i++;\n this.column++;\n }\n this.state = S_BEGIN_WHITESPACE;\n }\n sBeginWhitespace() {\n // We need to know whether we've encountered spaces or not because as soon\n // as we run into a space, an XML declaration is no longer possible. Rather\n // than slow down skipSpaces even in places where we don't care whether it\n // skipped anything or not, we check whether prevI is equal to the value of\n // i from before we skip spaces.\n const iBefore = this.i;\n const c = this.skipSpaces();\n if (this.prevI !== iBefore) {\n this.xmlDeclPossible = false;\n }\n switch (c) {\n case LESS:\n this.state = S_OPEN_WAKA;\n // We could naively call closeText but in this state, it is not normal\n // to have text be filled with any data.\n if (this.text.length !== 0) {\n throw new Error(\"no-empty text at start\");\n }\n break;\n case EOC:\n break;\n default:\n this.unget();\n this.state = S_TEXT;\n this.xmlDeclPossible = false;\n }\n }\n sDoctype() {\n var _a;\n const c = this.captureTo(DOCTYPE_TERMINATOR);\n switch (c) {\n case GREATER: {\n (_a = this.doctypeHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n this.text = \"\";\n this.state = S_TEXT;\n this.doctype = true; // just remember that we saw it.\n break;\n }\n case EOC:\n break;\n default:\n this.text += String.fromCodePoint(c);\n if (c === OPEN_BRACKET) {\n this.state = S_DTD;\n }\n else if (isQuote(c)) {\n this.state = S_DOCTYPE_QUOTE;\n this.q = c;\n }\n }\n }\n sDoctypeQuote() {\n const q = this.q;\n if (this.captureToChar(q)) {\n this.text += String.fromCodePoint(q);\n this.q = null;\n this.state = S_DOCTYPE;\n }\n }\n sDTD() {\n const c = this.captureTo(DTD_TERMINATOR);\n if (c === EOC) {\n return;\n }\n this.text += String.fromCodePoint(c);\n if (c === CLOSE_BRACKET) {\n this.state = S_DOCTYPE;\n }\n else if (c === LESS) {\n this.state = S_DTD_OPEN_WAKA;\n }\n else if (isQuote(c)) {\n this.state = S_DTD_QUOTED;\n this.q = c;\n }\n }\n sDTDQuoted() {\n const q = this.q;\n if (this.captureToChar(q)) {\n this.text += String.fromCodePoint(q);\n this.state = S_DTD;\n this.q = null;\n }\n }\n sDTDOpenWaka() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n switch (c) {\n case BANG:\n this.state = S_DTD_OPEN_WAKA_BANG;\n this.openWakaBang = \"\";\n break;\n case QUESTION:\n this.state = S_DTD_PI;\n break;\n default:\n this.state = S_DTD;\n }\n }\n sDTDOpenWakaBang() {\n const char = String.fromCodePoint(this.getCodeNorm());\n const owb = this.openWakaBang += char;\n this.text += char;\n if (owb !== \"-\") {\n this.state = owb === \"--\" ? S_DTD_COMMENT : S_DTD;\n this.openWakaBang = \"\";\n }\n }\n sDTDComment() {\n if (this.captureToChar(MINUS)) {\n this.text += \"-\";\n this.state = S_DTD_COMMENT_ENDING;\n }\n }\n sDTDCommentEnding() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n this.state = c === MINUS ? S_DTD_COMMENT_ENDED : S_DTD_COMMENT;\n }\n sDTDCommentEnded() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n if (c === GREATER) {\n this.state = S_DTD;\n }\n else {\n this.fail(\"malformed comment.\");\n // will be recorded as\n // a comment of \" blah -- bloo \"\n this.state = S_DTD_COMMENT;\n }\n }\n sDTDPI() {\n if (this.captureToChar(QUESTION)) {\n this.text += \"?\";\n this.state = S_DTD_PI_ENDING;\n }\n }\n sDTDPIEnding() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n if (c === GREATER) {\n this.state = S_DTD;\n }\n }\n sText() {\n //\n // We did try a version of saxes where the S_TEXT state was split in two\n // states: one for text inside the root element, and one for text\n // outside. This was avoiding having to test this.tags.length to decide\n // what implementation to actually use.\n //\n // Peformance testing on gigabyte-size files did not show any advantage to\n // using the two states solution instead of the current one. Conversely, it\n // made the code a bit more complicated elsewhere. For instance, a comment\n // can appear before the root element so when a comment ended it was\n // necessary to determine whether to return to the S_TEXT state or to the\n // new text-outside-root state.\n //\n if (this.tags.length !== 0) {\n this.handleTextInRoot();\n }\n else {\n this.handleTextOutsideRoot();\n }\n }\n sEntity() {\n // This is essentially a specialized version of captureToChar(SEMICOLON...)\n let { i: start } = this;\n const { chunk } = this;\n // eslint-disable-next-line no-labels, no-restricted-syntax\n loop: \n // eslint-disable-next-line no-constant-condition\n while (true) {\n switch (this.getCode()) {\n case NL_LIKE:\n this.entity += `${chunk.slice(start, this.prevI)}\\n`;\n start = this.i;\n break;\n case SEMICOLON: {\n const { entityReturnState } = this;\n const entity = this.entity + chunk.slice(start, this.prevI);\n this.state = entityReturnState;\n let parsed;\n if (entity === \"\") {\n this.fail(\"empty entity name.\");\n parsed = \"&;\";\n }\n else {\n parsed = this.parseEntity(entity);\n this.entity = \"\";\n }\n if (entityReturnState !== S_TEXT || this.textHandler !== undefined) {\n this.text += parsed;\n }\n // eslint-disable-next-line no-labels\n break loop;\n }\n case EOC:\n this.entity += chunk.slice(start);\n // eslint-disable-next-line no-labels\n break loop;\n default:\n }\n }\n }\n sOpenWaka() {\n // Reminder: a state handler is called with at least one character\n // available in the current chunk. So the first call to get code inside of\n // a state handler cannot return ``EOC``. That's why we don't test\n // for it.\n const c = this.getCode();\n // either a /, ?, !, or text is coming next.\n if (isNameStartChar(c)) {\n this.state = S_OPEN_TAG;\n this.unget();\n this.xmlDeclPossible = false;\n }\n else {\n switch (c) {\n case FORWARD_SLASH:\n this.state = S_CLOSE_TAG;\n this.xmlDeclPossible = false;\n break;\n case BANG:\n this.state = S_OPEN_WAKA_BANG;\n this.openWakaBang = \"\";\n this.xmlDeclPossible = false;\n break;\n case QUESTION:\n this.state = S_PI_FIRST_CHAR;\n break;\n default:\n this.fail(\"disallowed character in tag name\");\n this.state = S_TEXT;\n this.xmlDeclPossible = false;\n }\n }\n }\n sOpenWakaBang() {\n this.openWakaBang += String.fromCodePoint(this.getCodeNorm());\n switch (this.openWakaBang) {\n case \"[CDATA[\":\n if (!this.sawRoot && !this.reportedTextBeforeRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextBeforeRoot = true;\n }\n if (this.closedRoot && !this.reportedTextAfterRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextAfterRoot = true;\n }\n this.state = S_CDATA;\n this.openWakaBang = \"\";\n break;\n case \"--\":\n this.state = S_COMMENT;\n this.openWakaBang = \"\";\n break;\n case \"DOCTYPE\":\n this.state = S_DOCTYPE;\n if (this.doctype || this.sawRoot) {\n this.fail(\"inappropriately located doctype declaration.\");\n }\n this.openWakaBang = \"\";\n break;\n default:\n // 7 happens to be the maximum length of the string that can possibly\n // match one of the cases above.\n if (this.openWakaBang.length >= 7) {\n this.fail(\"incorrect syntax.\");\n }\n }\n }\n sComment() {\n if (this.captureToChar(MINUS)) {\n this.state = S_COMMENT_ENDING;\n }\n }\n sCommentEnding() {\n var _a;\n const c = this.getCodeNorm();\n if (c === MINUS) {\n this.state = S_COMMENT_ENDED;\n (_a = this.commentHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n this.text = \"\";\n }\n else {\n this.text += `-${String.fromCodePoint(c)}`;\n this.state = S_COMMENT;\n }\n }\n sCommentEnded() {\n const c = this.getCodeNorm();\n if (c !== GREATER) {\n this.fail(\"malformed comment.\");\n // will be recorded as\n // a comment of \" blah -- bloo \"\n this.text += `--${String.fromCodePoint(c)}`;\n this.state = S_COMMENT;\n }\n else {\n this.state = S_TEXT;\n }\n }\n sCData() {\n if (this.captureToChar(CLOSE_BRACKET)) {\n this.state = S_CDATA_ENDING;\n }\n }\n sCDataEnding() {\n const c = this.getCodeNorm();\n if (c === CLOSE_BRACKET) {\n this.state = S_CDATA_ENDING_2;\n }\n else {\n this.text += `]${String.fromCodePoint(c)}`;\n this.state = S_CDATA;\n }\n }\n sCDataEnding2() {\n var _a;\n const c = this.getCodeNorm();\n switch (c) {\n case GREATER: {\n (_a = this.cdataHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n this.text = \"\";\n this.state = S_TEXT;\n break;\n }\n case CLOSE_BRACKET:\n this.text += \"]\";\n break;\n default:\n this.text += `]]${String.fromCodePoint(c)}`;\n this.state = S_CDATA;\n }\n }\n // We need this separate state to check the first character fo the pi target\n // with this.nameStartCheck which allows less characters than this.nameCheck.\n sPIFirstChar() {\n const c = this.getCodeNorm();\n // This is first because in the case where the file is well-formed this is\n // the branch taken. We optimize for well-formedness.\n if (this.nameStartCheck(c)) {\n this.piTarget += String.fromCodePoint(c);\n this.state = S_PI_REST;\n }\n else if (c === QUESTION || isS(c)) {\n this.fail(\"processing instruction without a target.\");\n this.state = c === QUESTION ? S_PI_ENDING : S_PI_BODY;\n }\n else {\n this.fail(\"disallowed character in processing instruction name.\");\n this.piTarget += String.fromCodePoint(c);\n this.state = S_PI_REST;\n }\n }\n sPIRest() {\n // Capture characters into a piTarget while ``this.nameCheck`` run on the\n // character read returns true.\n const { chunk, i: start } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCodeNorm();\n if (c === EOC) {\n this.piTarget += chunk.slice(start);\n return;\n }\n // NL cannot satisfy this.nameCheck so we don't have to test specifically\n // for it.\n if (!this.nameCheck(c)) {\n this.piTarget += chunk.slice(start, this.prevI);\n const isQuestion = c === QUESTION;\n if (isQuestion || isS(c)) {\n if (this.piTarget === \"xml\") {\n if (!this.xmlDeclPossible) {\n this.fail(\"an XML declaration must be at the start of the document.\");\n }\n this.state = isQuestion ? S_XML_DECL_ENDING : S_XML_DECL_NAME_START;\n }\n else {\n this.state = isQuestion ? S_PI_ENDING : S_PI_BODY;\n }\n }\n else {\n this.fail(\"disallowed character in processing instruction name.\");\n this.piTarget += String.fromCodePoint(c);\n }\n break;\n }\n }\n }\n sPIBody() {\n if (this.text.length === 0) {\n const c = this.getCodeNorm();\n if (c === QUESTION) {\n this.state = S_PI_ENDING;\n }\n else if (!isS(c)) {\n this.text = String.fromCodePoint(c);\n }\n }\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n else if (this.captureToChar(QUESTION)) {\n this.state = S_PI_ENDING;\n }\n }\n sPIEnding() {\n var _a;\n const c = this.getCodeNorm();\n if (c === GREATER) {\n const { piTarget } = this;\n if (piTarget.toLowerCase() === \"xml\") {\n this.fail(\"the XML declaration must appear at the start of the document.\");\n }\n (_a = this.piHandler) === null || _a === void 0 ? void 0 : _a.call(this, {\n target: piTarget,\n body: this.text,\n });\n this.piTarget = this.text = \"\";\n this.state = S_TEXT;\n }\n else if (c === QUESTION) {\n // We ran into ?? as part of a processing instruction. We initially took\n // the first ? as a sign that the PI was ending, but it is not. So we have\n // to add it to the body but we take the new ? as a sign that the PI is\n // ending.\n this.text += \"?\";\n }\n else {\n this.text += `?${String.fromCodePoint(c)}`;\n this.state = S_PI_BODY;\n }\n this.xmlDeclPossible = false;\n }\n sXMLDeclNameStart() {\n const c = this.skipSpaces();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n // It is valid to go to S_XML_DECL_ENDING from this state.\n this.state = S_XML_DECL_ENDING;\n return;\n }\n if (c !== EOC) {\n this.state = S_XML_DECL_NAME;\n this.name = String.fromCodePoint(c);\n }\n }\n sXMLDeclName() {\n const c = this.captureTo(XML_DECL_NAME_TERMINATOR);\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.name += this.text;\n this.text = \"\";\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (!(isS(c) || c === EQUAL)) {\n return;\n }\n this.name += this.text;\n this.text = \"\";\n if (!this.xmlDeclExpects.includes(this.name)) {\n switch (this.name.length) {\n case 0:\n this.fail(\"did not expect any more name/value pairs.\");\n break;\n case 1:\n this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);\n break;\n default:\n this.fail(`expected one of ${this.xmlDeclExpects.join(\", \")}`);\n }\n }\n this.state = c === EQUAL ? S_XML_DECL_VALUE_START : S_XML_DECL_EQ;\n }\n sXMLDeclEq() {\n const c = this.getCodeNorm();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (isS(c)) {\n return;\n }\n if (c !== EQUAL) {\n this.fail(\"value required.\");\n }\n this.state = S_XML_DECL_VALUE_START;\n }\n sXMLDeclValueStart() {\n const c = this.getCodeNorm();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (isS(c)) {\n return;\n }\n if (!isQuote(c)) {\n this.fail(\"value must be quoted.\");\n this.q = SPACE;\n }\n else {\n this.q = c;\n }\n this.state = S_XML_DECL_VALUE;\n }\n sXMLDeclValue() {\n const c = this.captureTo([this.q, QUESTION]);\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.text = \"\";\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (c === EOC) {\n return;\n }\n const value = this.text;\n this.text = \"\";\n switch (this.name) {\n case \"version\": {\n this.xmlDeclExpects = [\"encoding\", \"standalone\"];\n const version = value;\n this.xmlDecl.version = version;\n // This is the test specified by XML 1.0 but it is fine for XML 1.1.\n if (!/^1\\.[0-9]+$/.test(version)) {\n this.fail(\"version number must match /^1\\\\.[0-9]+$/.\");\n }\n // When forceXMLVersion is set, the XML declaration is ignored.\n else if (!this.opt.forceXMLVersion) {\n this.setXMLVersion(version);\n }\n break;\n }\n case \"encoding\":\n if (!/^[A-Za-z][A-Za-z0-9._-]*$/.test(value)) {\n this.fail(\"encoding value must match \\\n/^[A-Za-z0-9][A-Za-z0-9._-]*$/.\");\n }\n this.xmlDeclExpects = [\"standalone\"];\n this.xmlDecl.encoding = value;\n break;\n case \"standalone\":\n if (value !== \"yes\" && value !== \"no\") {\n this.fail(\"standalone value must match \\\"yes\\\" or \\\"no\\\".\");\n }\n this.xmlDeclExpects = [];\n this.xmlDecl.standalone = value;\n break;\n default:\n // We don't need to raise an error here since we've already raised one\n // when checking what name was expected.\n }\n this.name = \"\";\n this.state = S_XML_DECL_SEPARATOR;\n }\n sXMLDeclSeparator() {\n const c = this.getCodeNorm();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n // It is valid to go to S_XML_DECL_ENDING from this state.\n this.state = S_XML_DECL_ENDING;\n return;\n }\n if (!isS(c)) {\n this.fail(\"whitespace required.\");\n this.unget();\n }\n this.state = S_XML_DECL_NAME_START;\n }\n sXMLDeclEnding() {\n var _a;\n const c = this.getCodeNorm();\n if (c === GREATER) {\n if (this.piTarget !== \"xml\") {\n this.fail(\"processing instructions are not allowed before root.\");\n }\n else if (this.name !== \"version\" &&\n this.xmlDeclExpects.includes(\"version\")) {\n this.fail(\"XML declaration must contain a version.\");\n }\n (_a = this.xmldeclHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.xmlDecl);\n this.name = \"\";\n this.piTarget = this.text = \"\";\n this.state = S_TEXT;\n }\n else {\n // We got here because the previous character was a ?, but the question\n // mark character is not valid inside any of the XML declaration\n // name/value pairs.\n this.fail(\"The character ? is disallowed anywhere in XML declarations.\");\n }\n this.xmlDeclPossible = false;\n }\n sOpenTag() {\n var _a;\n const c = this.captureNameChars();\n if (c === EOC) {\n return;\n }\n const tag = this.tag = {\n name: this.name,\n attributes: Object.create(null),\n };\n this.name = \"\";\n if (this.xmlnsOpt) {\n this.topNS = tag.ns = Object.create(null);\n }\n (_a = this.openTagStartHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n this.sawRoot = true;\n if (!this.fragmentOpt && this.closedRoot) {\n this.fail(\"documents may contain only one root.\");\n }\n switch (c) {\n case GREATER:\n this.openTag();\n break;\n case FORWARD_SLASH:\n this.state = S_OPEN_TAG_SLASH;\n break;\n default:\n if (!isS(c)) {\n this.fail(\"disallowed character in tag name.\");\n }\n this.state = S_ATTRIB;\n }\n }\n sOpenTagSlash() {\n if (this.getCode() === GREATER) {\n this.openSelfClosingTag();\n }\n else {\n this.fail(\"forward-slash in opening tag not followed by >.\");\n this.state = S_ATTRIB;\n }\n }\n sAttrib() {\n const c = this.skipSpaces();\n if (c === EOC) {\n return;\n }\n if (isNameStartChar(c)) {\n this.unget();\n this.state = S_ATTRIB_NAME;\n }\n else if (c === GREATER) {\n this.openTag();\n }\n else if (c === FORWARD_SLASH) {\n this.state = S_OPEN_TAG_SLASH;\n }\n else {\n this.fail(\"disallowed character in attribute name.\");\n }\n }\n sAttribName() {\n const c = this.captureNameChars();\n if (c === EQUAL) {\n this.state = S_ATTRIB_VALUE;\n }\n else if (isS(c)) {\n this.state = S_ATTRIB_NAME_SAW_WHITE;\n }\n else if (c === GREATER) {\n this.fail(\"attribute without value.\");\n this.pushAttrib(this.name, this.name);\n this.name = this.text = \"\";\n this.openTag();\n }\n else if (c !== EOC) {\n this.fail(\"disallowed character in attribute name.\");\n }\n }\n sAttribNameSawWhite() {\n const c = this.skipSpaces();\n switch (c) {\n case EOC:\n return;\n case EQUAL:\n this.state = S_ATTRIB_VALUE;\n break;\n default:\n this.fail(\"attribute without value.\");\n // Should we do this???\n // this.tag.attributes[this.name] = \"\";\n this.text = \"\";\n this.name = \"\";\n if (c === GREATER) {\n this.openTag();\n }\n else if (isNameStartChar(c)) {\n this.unget();\n this.state = S_ATTRIB_NAME;\n }\n else {\n this.fail(\"disallowed character in attribute name.\");\n this.state = S_ATTRIB;\n }\n }\n }\n sAttribValue() {\n const c = this.getCodeNorm();\n if (isQuote(c)) {\n this.q = c;\n this.state = S_ATTRIB_VALUE_QUOTED;\n }\n else if (!isS(c)) {\n this.fail(\"unquoted attribute value.\");\n this.state = S_ATTRIB_VALUE_UNQUOTED;\n this.unget();\n }\n }\n sAttribValueQuoted() {\n // We deliberately do not use captureTo here. The specialized code we use\n // here is faster than using captureTo.\n const { q, chunk } = this;\n let { i: start } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n switch (this.getCode()) {\n case q:\n this.pushAttrib(this.name, this.text + chunk.slice(start, this.prevI));\n this.name = this.text = \"\";\n this.q = null;\n this.state = S_ATTRIB_VALUE_CLOSED;\n return;\n case AMP:\n this.text += chunk.slice(start, this.prevI);\n this.state = S_ENTITY;\n this.entityReturnState = S_ATTRIB_VALUE_QUOTED;\n return;\n case NL:\n case NL_LIKE:\n case TAB:\n this.text += `${chunk.slice(start, this.prevI)} `;\n start = this.i;\n break;\n case LESS:\n this.text += chunk.slice(start, this.prevI);\n this.fail(\"disallowed character.\");\n return;\n case EOC:\n this.text += chunk.slice(start);\n return;\n default:\n }\n }\n }\n sAttribValueClosed() {\n const c = this.getCodeNorm();\n if (isS(c)) {\n this.state = S_ATTRIB;\n }\n else if (c === GREATER) {\n this.openTag();\n }\n else if (c === FORWARD_SLASH) {\n this.state = S_OPEN_TAG_SLASH;\n }\n else if (isNameStartChar(c)) {\n this.fail(\"no whitespace between attributes.\");\n this.unget();\n this.state = S_ATTRIB_NAME;\n }\n else {\n this.fail(\"disallowed character in attribute name.\");\n }\n }\n sAttribValueUnquoted() {\n // We don't do anything regarding EOL or space handling for unquoted\n // attributes. We already have failed by the time we get here, and the\n // contract that saxes upholds states that upon failure, it is not safe to\n // rely on the data passed to event handlers (other than\n // ``onerror``). Passing \"bad\" data is not a problem.\n const c = this.captureTo(ATTRIB_VALUE_UNQUOTED_TERMINATOR);\n switch (c) {\n case AMP:\n this.state = S_ENTITY;\n this.entityReturnState = S_ATTRIB_VALUE_UNQUOTED;\n break;\n case LESS:\n this.fail(\"disallowed character.\");\n break;\n case EOC:\n break;\n default:\n if (this.text.includes(\"]]>\")) {\n this.fail(\"the string \\\"]]>\\\" is disallowed in char data.\");\n }\n this.pushAttrib(this.name, this.text);\n this.name = this.text = \"\";\n if (c === GREATER) {\n this.openTag();\n }\n else {\n this.state = S_ATTRIB;\n }\n }\n }\n sCloseTag() {\n const c = this.captureNameChars();\n if (c === GREATER) {\n this.closeTag();\n }\n else if (isS(c)) {\n this.state = S_CLOSE_TAG_SAW_WHITE;\n }\n else if (c !== EOC) {\n this.fail(\"disallowed character in closing tag.\");\n }\n }\n sCloseTagSawWhite() {\n switch (this.skipSpaces()) {\n case GREATER:\n this.closeTag();\n break;\n case EOC:\n break;\n default:\n this.fail(\"disallowed character in closing tag.\");\n }\n }\n // END OF STATE ENGINE METHODS\n handleTextInRoot() {\n // This is essentially a specialized version of captureTo which is optimized\n // for performing the ]]> check. A previous version of this code, checked\n // ``this.text`` for the presence of ]]>. It simplified the code but was\n // very costly when character data contained a lot of entities to be parsed.\n //\n // Since we are using a specialized loop, we also keep track of the presence\n // of ]]> in text data. The sequence ]]> is forbidden to appear as-is.\n //\n let { i: start, forbiddenState } = this;\n const { chunk, textHandler: handler } = this;\n // eslint-disable-next-line no-labels, no-restricted-syntax\n scanLoop: \n // eslint-disable-next-line no-constant-condition\n while (true) {\n switch (this.getCode()) {\n case LESS: {\n this.state = S_OPEN_WAKA;\n if (handler !== undefined) {\n const { text } = this;\n const slice = chunk.slice(start, this.prevI);\n if (text.length !== 0) {\n handler(text + slice);\n this.text = \"\";\n }\n else if (slice.length !== 0) {\n handler(slice);\n }\n }\n forbiddenState = FORBIDDEN_START;\n // eslint-disable-next-line no-labels\n break scanLoop;\n }\n case AMP:\n this.state = S_ENTITY;\n this.entityReturnState = S_TEXT;\n if (handler !== undefined) {\n this.text += chunk.slice(start, this.prevI);\n }\n forbiddenState = FORBIDDEN_START;\n // eslint-disable-next-line no-labels\n break scanLoop;\n case CLOSE_BRACKET:\n switch (forbiddenState) {\n case FORBIDDEN_START:\n forbiddenState = FORBIDDEN_BRACKET;\n break;\n case FORBIDDEN_BRACKET:\n forbiddenState = FORBIDDEN_BRACKET_BRACKET;\n break;\n case FORBIDDEN_BRACKET_BRACKET:\n break;\n default:\n throw new Error(\"impossible state\");\n }\n break;\n case GREATER:\n if (forbiddenState === FORBIDDEN_BRACKET_BRACKET) {\n this.fail(\"the string \\\"]]>\\\" is disallowed in char data.\");\n }\n forbiddenState = FORBIDDEN_START;\n break;\n case NL_LIKE:\n if (handler !== undefined) {\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n }\n start = this.i;\n forbiddenState = FORBIDDEN_START;\n break;\n case EOC:\n if (handler !== undefined) {\n this.text += chunk.slice(start);\n }\n // eslint-disable-next-line no-labels\n break scanLoop;\n default:\n forbiddenState = FORBIDDEN_START;\n }\n }\n this.forbiddenState = forbiddenState;\n }\n handleTextOutsideRoot() {\n // This is essentially a specialized version of captureTo which is optimized\n // for a specialized task. We keep track of the presence of non-space\n // characters in the text since these are errors when appearing outside the\n // document root element.\n let { i: start } = this;\n const { chunk, textHandler: handler } = this;\n let nonSpace = false;\n // eslint-disable-next-line no-labels, no-restricted-syntax\n outRootLoop: \n // eslint-disable-next-line no-constant-condition\n while (true) {\n const code = this.getCode();\n switch (code) {\n case LESS: {\n this.state = S_OPEN_WAKA;\n if (handler !== undefined) {\n const { text } = this;\n const slice = chunk.slice(start, this.prevI);\n if (text.length !== 0) {\n handler(text + slice);\n this.text = \"\";\n }\n else if (slice.length !== 0) {\n handler(slice);\n }\n }\n // eslint-disable-next-line no-labels\n break outRootLoop;\n }\n case AMP:\n this.state = S_ENTITY;\n this.entityReturnState = S_TEXT;\n if (handler !== undefined) {\n this.text += chunk.slice(start, this.prevI);\n }\n nonSpace = true;\n // eslint-disable-next-line no-labels\n break outRootLoop;\n case NL_LIKE:\n if (handler !== undefined) {\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n }\n start = this.i;\n break;\n case EOC:\n if (handler !== undefined) {\n this.text += chunk.slice(start);\n }\n // eslint-disable-next-line no-labels\n break outRootLoop;\n default:\n if (!isS(code)) {\n nonSpace = true;\n }\n }\n }\n if (!nonSpace) {\n return;\n }\n // We use the reportedTextBeforeRoot and reportedTextAfterRoot flags\n // to avoid reporting errors for every single character that is out of\n // place.\n if (!this.sawRoot && !this.reportedTextBeforeRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextBeforeRoot = true;\n }\n if (this.closedRoot && !this.reportedTextAfterRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextAfterRoot = true;\n }\n }\n pushAttribNS(name, value) {\n var _a;\n const { prefix, local } = this.qname(name);\n const attr = { name, prefix, local, value };\n this.attribList.push(attr);\n (_a = this.attributeHandler) === null || _a === void 0 ? void 0 : _a.call(this, attr);\n if (prefix === \"xmlns\") {\n const trimmed = value.trim();\n if (this.currentXMLVersion === \"1.0\" && trimmed === \"\") {\n this.fail(\"invalid attempt to undefine prefix in XML 1.0\");\n }\n this.topNS[local] = trimmed;\n nsPairCheck(this, local, trimmed);\n }\n else if (name === \"xmlns\") {\n const trimmed = value.trim();\n this.topNS[\"\"] = trimmed;\n nsPairCheck(this, \"\", trimmed);\n }\n }\n pushAttribPlain(name, value) {\n var _a;\n const attr = { name, value };\n this.attribList.push(attr);\n (_a = this.attributeHandler) === null || _a === void 0 ? void 0 : _a.call(this, attr);\n }\n /**\n * End parsing. This performs final well-formedness checks and resets the\n * parser to a clean state.\n *\n * @returns this\n */\n end() {\n var _a, _b;\n if (!this.sawRoot) {\n this.fail(\"document must contain a root element.\");\n }\n const { tags } = this;\n while (tags.length > 0) {\n const tag = tags.pop();\n this.fail(`unclosed tag: ${tag.name}`);\n }\n if ((this.state !== S_BEGIN) && (this.state !== S_TEXT)) {\n this.fail(\"unexpected end.\");\n }\n const { text } = this;\n if (text.length !== 0) {\n (_a = this.textHandler) === null || _a === void 0 ? void 0 : _a.call(this, text);\n this.text = \"\";\n }\n this._closed = true;\n (_b = this.endHandler) === null || _b === void 0 ? void 0 : _b.call(this);\n this._init();\n return this;\n }\n /**\n * Resolve a namespace prefix.\n *\n * @param prefix The prefix to resolve.\n *\n * @returns The namespace URI or ``undefined`` if the prefix is not defined.\n */\n resolve(prefix) {\n var _a, _b;\n let uri = this.topNS[prefix];\n if (uri !== undefined) {\n return uri;\n }\n const { tags } = this;\n for (let index = tags.length - 1; index >= 0; index--) {\n uri = tags[index].ns[prefix];\n if (uri !== undefined) {\n return uri;\n }\n }\n uri = this.ns[prefix];\n if (uri !== undefined) {\n return uri;\n }\n return (_b = (_a = this.opt).resolvePrefix) === null || _b === void 0 ? void 0 : _b.call(_a, prefix);\n }\n /**\n * Parse a qname into its prefix and local name parts.\n *\n * @param name The name to parse\n *\n * @returns\n */\n qname(name) {\n // This is faster than using name.split(\":\").\n const colon = name.indexOf(\":\");\n if (colon === -1) {\n return { prefix: \"\", local: name };\n }\n const local = name.slice(colon + 1);\n const prefix = name.slice(0, colon);\n if (prefix === \"\" || local === \"\" || local.includes(\":\")) {\n this.fail(`malformed name: ${name}.`);\n }\n return { prefix, local };\n }\n processAttribsNS() {\n var _a;\n const { attribList } = this;\n const tag = this.tag;\n {\n // add namespace info to tag\n const { prefix, local } = this.qname(tag.name);\n tag.prefix = prefix;\n tag.local = local;\n const uri = tag.uri = (_a = this.resolve(prefix)) !== null && _a !== void 0 ? _a : \"\";\n if (prefix !== \"\") {\n if (prefix === \"xmlns\") {\n this.fail(\"tags may not have \\\"xmlns\\\" as prefix.\");\n }\n if (uri === \"\") {\n this.fail(`unbound namespace prefix: ${JSON.stringify(prefix)}.`);\n tag.uri = prefix;\n }\n }\n }\n if (attribList.length === 0) {\n return;\n }\n const { attributes } = tag;\n const seen = new Set();\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (const attr of attribList) {\n const { name, prefix, local } = attr;\n let uri;\n let eqname;\n if (prefix === \"\") {\n uri = name === \"xmlns\" ? XMLNS_NAMESPACE : \"\";\n eqname = name;\n }\n else {\n uri = this.resolve(prefix);\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (uri === undefined) {\n this.fail(`unbound namespace prefix: ${JSON.stringify(prefix)}.`);\n uri = prefix;\n }\n eqname = `{${uri}}${local}`;\n }\n if (seen.has(eqname)) {\n this.fail(`duplicate attribute: ${eqname}.`);\n }\n seen.add(eqname);\n attr.uri = uri;\n attributes[name] = attr;\n }\n this.attribList = [];\n }\n processAttribsPlain() {\n const { attribList } = this;\n // eslint-disable-next-line prefer-destructuring\n const attributes = this.tag.attributes;\n for (const { name, value } of attribList) {\n if (attributes[name] !== undefined) {\n this.fail(`duplicate attribute: ${name}.`);\n }\n attributes[name] = value;\n }\n this.attribList = [];\n }\n /**\n * Handle a complete open tag. This parser code calls this once it has seen\n * the whole tag. This method checks for well-formeness and then emits\n * ``onopentag``.\n */\n openTag() {\n var _a;\n this.processAttribs();\n const { tags } = this;\n const tag = this.tag;\n tag.isSelfClosing = false;\n // There cannot be any pending text here due to the onopentagstart that was\n // necessarily emitted before we get here. So we do not check text.\n (_a = this.openTagHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n tags.push(tag);\n this.state = S_TEXT;\n this.name = \"\";\n }\n /**\n * Handle a complete self-closing tag. This parser code calls this once it has\n * seen the whole tag. This method checks for well-formeness and then emits\n * ``onopentag`` and ``onclosetag``.\n */\n openSelfClosingTag() {\n var _a, _b, _c;\n this.processAttribs();\n const { tags } = this;\n const tag = this.tag;\n tag.isSelfClosing = true;\n // There cannot be any pending text here due to the onopentagstart that was\n // necessarily emitted before we get here. So we do not check text.\n (_a = this.openTagHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n (_b = this.closeTagHandler) === null || _b === void 0 ? void 0 : _b.call(this, tag);\n const top = this.tag = (_c = tags[tags.length - 1]) !== null && _c !== void 0 ? _c : null;\n if (top === null) {\n this.closedRoot = true;\n }\n this.state = S_TEXT;\n this.name = \"\";\n }\n /**\n * Handle a complete close tag. This parser code calls this once it has seen\n * the whole tag. This method checks for well-formeness and then emits\n * ``onclosetag``.\n */\n closeTag() {\n const { tags, name } = this;\n // Our state after this will be S_TEXT, no matter what, and we can clear\n // tagName now.\n this.state = S_TEXT;\n this.name = \"\";\n if (name === \"\") {\n this.fail(\"weird empty close tag.\");\n this.text += \"\";\n return;\n }\n const handler = this.closeTagHandler;\n let l = tags.length;\n while (l-- > 0) {\n const tag = this.tag = tags.pop();\n this.topNS = tag.ns;\n handler === null || handler === void 0 ? void 0 : handler(tag);\n if (tag.name === name) {\n break;\n }\n this.fail(\"unexpected close tag.\");\n }\n if (l === 0) {\n this.closedRoot = true;\n }\n else if (l < 0) {\n this.fail(`unmatched closing tag: ${name}.`);\n this.text += ``;\n }\n }\n /**\n * Resolves an entity. Makes any necessary well-formedness checks.\n *\n * @param entity The entity to resolve.\n *\n * @returns The parsed entity.\n */\n parseEntity(entity) {\n // startsWith would be significantly slower for this test.\n if (entity[0] !== \"#\") {\n const defined = this.ENTITIES[entity];\n if (defined !== undefined) {\n return defined;\n }\n this.fail(this.isName(entity) ? \"undefined entity.\" :\n \"disallowed character in entity name.\");\n return `&${entity};`;\n }\n let num = NaN;\n if (entity[1] === \"x\" && /^#x[0-9a-f]+$/i.test(entity)) {\n num = parseInt(entity.slice(2), 16);\n }\n else if (/^#[0-9]+$/.test(entity)) {\n num = parseInt(entity.slice(1), 10);\n }\n // The character reference is required to match the CHAR production.\n if (!this.isChar(num)) {\n this.fail(\"malformed character entity.\");\n return `&${entity};`;\n }\n return String.fromCodePoint(num);\n }\n}\nexports.SaxesParser = SaxesParser;\n//# sourceMappingURL=saxes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableWebToNodeStream = void 0;\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * Converts a Web-API stream into Node stream.Readable class\n * Node stream readable: https://nodejs.org/api/stream.html#stream_readable_streams\n * Web API readable-stream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n * Node readable stream: https://nodejs.org/api/stream.html#stream_readable_streams\n */\nclass ReadableWebToNodeStream extends readable_stream_1.Readable {\n /**\n *\n * @param stream ReadableStream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n */\n constructor(stream) {\n super();\n this.bytesRead = 0;\n this.released = false;\n this.reader = stream.getReader();\n }\n /**\n * Implementation of readable._read(size).\n * When readable._read() is called, if data is available from the resource,\n * the implementation should begin pushing that data into the read queue\n * https://nodejs.org/api/stream.html#stream_readable_read_size_1\n */\n async _read() {\n // Should start pushing data into the queue\n // Read data from the underlying Web-API-readable-stream\n if (this.released) {\n this.push(null); // Signal EOF\n return;\n }\n this.pendingRead = this.reader.read();\n const data = await this.pendingRead;\n // clear the promise before pushing pushing new data to the queue and allow sequential calls to _read()\n delete this.pendingRead;\n if (data.done || this.released) {\n this.push(null); // Signal EOF\n }\n else {\n this.bytesRead += data.value.length;\n this.push(data.value); // Push new data to the queue\n }\n }\n /**\n * If there is no unresolved read call to Web-API Readable​Stream immediately returns;\n * otherwise will wait until the read is resolved.\n */\n async waitForReadToComplete() {\n if (this.pendingRead) {\n await this.pendingRead;\n }\n }\n /**\n * Close wrapper\n */\n async close() {\n await this.syncAndRelease();\n }\n async syncAndRelease() {\n this.released = true;\n await this.waitForReadToComplete();\n await this.reader.releaseLock();\n }\n}\nexports.ReadableWebToNodeStream = ReadableWebToNodeStream;\n//# sourceMappingURL=index.js.map","/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction promisifyEventEmitter(event, result) {\n return new Promise((resolve, reject) => {\n event.on('end', () => resolve(result));\n event.on('error', reject);\n });\n}\nfunction arrayifyStream(stream) {\n const array = [];\n return promisifyEventEmitter(stream.on('data', data => array.push(data)), array);\n}\nexports.default = arrayifyStream;\n//# sourceMappingURL=index.js.map","\nconst DynamicNestedLoopJoin = require('./join/DynamicNestedLoopJoin');\nconst HashJoin = require('./join/HashJoin');\nconst NestedLoopJoin = require('./join/NestedLoopJoin');\nconst SymmetricHashJoin = require('./join/SymmetricHashJoin');\n\nconst MergeStream = require('./util/MergeIterator');\n\nmodule.exports = {\n DynamicNestedLoopJoin,\n HashJoin,\n NestedLoopJoin,\n SymmetricHashJoin,\n\n MergeStream\n};","\nlet AsyncIterator = require('asynciterator');\nlet MultiTransformIterator = AsyncIterator.MultiTransformIterator;\nlet SimpleTransformIterator = AsyncIterator.SimpleTransformIterator;\n\n// Nested Loop Join, but the values of the inner loop are determined by each value of the outer loop, possibly reducing the number of necessary checks\nclass DynamicNestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, funRight, funJoin, options)\n {\n super(left, options);\n\n this.funRight = funRight;\n this.funJoin = funJoin;\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.funRight(leftItem), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = DynamicNestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Hash_join\nclass HashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.addedDataListener = false;\n this.left = left;\n this.right = right;\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.leftMap = new Map();\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.readable = false;\n\n this.left.on('end', allowJoining.bind(this));\n\n function allowJoining ()\n {\n this.readable = true;\n this.right.on('readable', () => this.readable = true);\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n this.on('newListener', (eventName) =>\n {\n if (eventName === 'data')\n {\n this._addDataListenerIfNeeded();\n }\n });\n if (this.left.readable)\n this._addDataListenerIfNeeded();\n this.left.on('readable', () => this._addDataListenerIfNeeded());\n }\n\n hasResults ()\n {\n return !this.right.ended || this.matchIdx < this.matches.length;\n }\n\n _end ()\n {\n super._end();\n this.left.destroy();\n this.right.destroy();\n }\n\n read ()\n {\n this._addDataListenerIfNeeded();\n\n while(true) {\n if (this.ended || !this.readable)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n this.match = this.right.read();\n\n if (this.match === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(this.match);\n this.matches = this.leftMap.get(hash) || [];\n this.matchIdx = 0;\n }\n }\n\n _addDataListenerIfNeeded() {\n if (!this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n }\n\n _addDataListener()\n {\n this.left.on('data', addItem.bind(this));\n\n function addItem(item)\n {\n let hash = this.funHash(item);\n if (!this.leftMap.has(hash))\n this.leftMap.set(hash, []);\n let arr = this.leftMap.get(hash);\n arr.push(item);\n }\n }\n}\n\nmodule.exports = HashJoin;\n","\nconst { MultiTransformIterator, SimpleTransformIterator, scheduleTask } = require('asynciterator');\n\n// https://en.wikipedia.org/wiki/Nested_loop_join\nclass NestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, right, funJoin, options)\n {\n super(left, options);\n\n this.right = right;\n this.funJoin = funJoin; // function that joins 2 elements or returns null if join is not possible\n this.on('end', () => this.right.close());\n }\n\n _end ()\n {\n super._end();\n scheduleTask(() => this.right.destroy());\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.right.clone(), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = NestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Symmetric_Hash_Join\nclass SymmetricHashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.left = left;\n this.right = right;\n\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.usedLeft = false;\n this.leftMap = new Map();\n this.rightMap = new Map();\n\n this.on('end', () => this._cleanup() );\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n if (this.left.readable || this.right.readable)\n {\n this.readable = true;\n }\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.left.on('readable', () => this.readable = true);\n this.right.on('readable', () => this.readable = true);\n\n // this needs to be here since it's possible the left/right streams only get ended after there are no more results left\n this.left.on ('end', () => { if (!this.hasResults()) this._end(); });\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n hasResults()\n {\n // The \"!!this.match\" condition was added as a workaround to race\n // conditions and/or duplicate \"end\" events that may lead to premature\n // cleanups of the \"this.matches\" array.\n // See https://github.com/joachimvh/asyncjoin/issues/7\n return !this.left.ended || !this.right.ended || (!!this.matches && this.matchIdx < this.matches.length);\n }\n\n _cleanup ()\n {\n // motivate garbage collector to remove these\n this.leftMap = null;\n this.rightMap = null;\n this.matches = null;\n }\n\n _end ()\n {\n super._end();\n this.left.destroy();\n this.right.destroy();\n }\n\n read ()\n {\n while(true){\n if (this.ended)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.usedLeft ? this.funJoin(this.match, item) : this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n let item = null;\n // try both streams if the first one has no value\n for (let i = 0; i < 2; ++i)\n {\n item = this.usedLeft ? this.right.read() : this.left.read();\n this.usedLeft = !this.usedLeft; // try other stream next time\n\n // found a result, no need to check the other stream this run\n if (item !== null)\n break;\n }\n\n if (this.done || item === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(item);\n\n if (this.usedLeft && this.right.done) {\n this.leftMap = null;\n } else if (this.left.done) {\n this.rightMap = null;\n } else {\n let map = this.usedLeft ? this.leftMap : this.rightMap;\n if (!map.has(hash))\n map.set(hash, []);\n let arr = map.get(hash);\n arr.push(item);\n }\n\n this.match = item;\n this.matches = (this.usedLeft ? this.rightMap : this.leftMap).get(hash) || [];\n this.matchIdx = 0;\n }\n }\n}\n\nmodule.exports = SymmetricHashJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// merges the contents of multiple streams\nclass MergeIterator extends AsyncIterator\n{\n constructor (streams)\n {\n super();\n \n if (!Array.isArray(streams))\n streams = Array.prototype.slice.call(arguments);\n \n this.streams = streams;\n \n for (let stream of streams)\n {\n stream.on('readable', () => this.emit('readable'));\n stream.on('end', () => this._removeStream(stream));\n }\n \n if (this.streams.length === 0)\n this.close();\n \n this.idx = this.streams.length-1;\n }\n \n _removeStream (stream)\n {\n let idx = this.streams.indexOf(stream);\n if (idx < 0)\n return;\n \n this.streams.splice(idx, 1);\n if (this.idx >= this.streams.length)\n --this.idx;\n \n if (this.streams.length === 0)\n this._end();\n }\n \n close ()\n {\n super.close();\n for (let stream of this.streams)\n stream.close();\n }\n \n read ()\n {\n for (let attempts = 0; attempts < this.streams.length; ++attempts)\n {\n this.idx = (this.idx + 1) % this.streams.length;\n let item = this.streams[this.idx].read();\n if (item !== null)\n return item;\n }\n \n return null;\n }\n}\n\nmodule.exports = MergeIterator;","module.exports = function(variables) {\nfunction getVariableValue(name) {\n if (!variables || !(name in variables)) {\n throw new Error('Undefined variable: ' + name);\n }\n return variables[name];\n}\nconst df_475_1 = new (require('@comunica/logger-void').LoggerVoid)();\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-init/^3.0.0/components/ActorInit.jsonld#ActorInit_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-context-preprocess/^3.0.0/components/ActorContextPreprocess.jsonld#ActorContextPreprocess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-bindings/^3.0.0/components/ActorHashBindings.jsonld#ActorHashBindings_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-quads/^3.0.0/components/ActorHashQuads.jsonld#ActorHashQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-query-operation/^3.0.0/components/ActorOptimizeQueryOperation.jsonld#ActorOptimizeQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-parse/^3.0.0/components/ActorQueryParse.jsonld#ActorQueryParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-result-serialize/^3.0.0/components/ActorQueryResultSerialize.jsonld#ActorQueryResultSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify-hypermedia/^3.0.0/components/ActorQuerySourceIdentifyHypermedia.jsonld#ActorQuerySourceIdentifyHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-entries-sort/^3.0.0/components/ActorRdfJoinEntriesSort.jsonld#ActorRdfJoinEntriesSort_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-selectivity/^3.0.0/components/ActorRdfJoinSelectivity.jsonld#ActorRdfJoinSelectivity_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-accumulate/^3.0.0/components/ActorRdfMetadataAccumulate.jsonld#ActorRdfMetadataAccumulate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-serialize/^3.0.0/components/ActorRdfSerialize.jsonld#ActorRdfSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads/^3.0.0/components/ActorRdfUpdateQuads.jsonld#ActorRdfUpdateQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus = new (require('@comunica/bus-query-operation').BusQueryOperation)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^3.0.0/components/ActorQueryOperation.jsonld#ActorQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-process/^3.0.0/components/ActorQueryProcess.jsonld#ActorQueryProcess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify/^3.0.0/components/ActorQuerySourceIdentify.jsonld#ActorQuerySourceIdentify_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^3.0.0/components/ActorRdfJoin.jsonld#ActorRdfJoin_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http-invalidate/^3.0.0/components/ActorHttpInvalidate.jsonld#ActorHttpInvalidate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^3.0.0/components/ActorHttp.jsonld#ActorHttp_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_fallback_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^3.0.0/components/ActorHttp.jsonld#ActorHttp_fallback_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-merge-bindings-context/^3.0.0/components/ActorMergeBindingsContext.jsonld#ActorMergeBindingsContext_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__3_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference-rdf/^3.0.0/components/ActorDereferenceRdf.jsonld#ActorDereferenceRdf_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__3_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata/^3.0.0/components/ActorRdfMetadata.jsonld#ActorRdfMetadata_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-extract/^3.0.0/components/ActorRdfMetadataExtract.jsonld#ActorRdfMetadataExtract_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__3_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links/^3.0.0/components/ActorRdfResolveHypermediaLinks.jsonld#ActorRdfResolveHypermediaLinks_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__3_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links-queue/^3.0.0/components/ActorRdfResolveHypermediaLinksQueue.jsonld#ActorRdfResolveHypermediaLinksQueue_default_bus'\n});\nconst urn_comunica_default_context_preprocess_actors_convert_shortcuts = new (require('@comunica/actor-context-preprocess-convert-shortcuts').ActorContextPreprocessConvertShortcuts)({\n 'contextKeyShortcuts': {\"baseIRI\":\"@comunica/actor-init-query:baseIRI\",\"datetime\":\"@comunica/actor-http-memento:datetime\",\"destination\":\"@comunica/bus-rdf-update-quads:destination\",\"distinctConstruct\":\"@comunica/actor-init-query:distinctConstruct\",\"explain\":\"@comunica/actor-init-query:explain\",\"extensionFunctionCreator\":\"@comunica/actor-init-query:extensionFunctionCreator\",\"extensionFunctions\":\"@comunica/actor-init-query:extensionFunctions\",\"fetch\":\"@comunica/bus-http:fetch\",\"functionArgumentsCache\":\"@comunica/actor-init-query:functionArgumentsCache\",\"httpAuth\":\"@comunica/bus-http:auth\",\"httpBodyTimeout\":\"@comunica/bus-http:http-body-timeout\",\"httpIncludeCredentials\":\"@comunica/bus-http:include-credentials\",\"httpProxyHandler\":\"@comunica/actor-http-proxy:httpProxyHandler\",\"httpRetryCount\":\"@comunica/bus-http:http-retry-count\",\"httpRetryDelay\":\"@comunica/bus-http:http-retry-delay\",\"httpRetryOnServerError\":\"@comunica/bus-http:http-retry-on-server-error\",\"httpTimeout\":\"@comunica/bus-http:http-timeout\",\"initialBindings\":\"@comunica/actor-init-query:initialBindings\",\"lenient\":\"@comunica/actor-init-query:lenient\",\"log\":\"@comunica/core:log\",\"noCache\":\"@comunica/actor-init-query:noCache\",\"queryFormat\":\"@comunica/actor-init-query:queryFormat\",\"queryTimestamp\":\"@comunica/actor-init-query:queryTimestamp\",\"readOnly\":\"@comunica/bus-query-operation:readOnly\",\"recoverBrokenLinks\":\"@comunica/bus-http-wayback:recover-broken-links\",\"sources\":\"@comunica/actor-init-query:querySourcesUnidentified\",\"traverse\":\"@comunica/bus-query-source-identify:traverse\",\"unionDefaultGraph\":\"@comunica/bus-query-operation:unionDefaultGraph\"},\n 'name': 'urn:comunica:default:context-preprocess/actors#convert-shortcuts',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_set_defaults = new (require('@comunica/actor-context-preprocess-set-defaults').ActorContextPreprocessSetDefaults)({\n 'logger': df_475_1,\n 'name': 'urn:comunica:default:context-preprocess/actors#set-defaults',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_source_to_destination = new (require('@comunica/actor-context-preprocess-source-to-destination').ActorContextPreprocessSourceToDestination)({\n 'name': 'urn:comunica:default:context-preprocess/actors#source-to-destination',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_query_source_skolemize = new (require('@comunica/actor-context-preprocess-query-source-skolemize').ActorContextPreprocessQuerySourceSkolemize)({\n 'name': 'urn:comunica:default:context-preprocess/actors#query-source-skolemize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:context-preprocess/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_hash_bindings_actors_sha1 = new (require('@comunica/actor-hash-bindings-sha1').ActorHashBindingsSha1)({\n 'name': 'urn:comunica:default:hash-bindings/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_bindings_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-bindings/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_quads_actors_sha1 = new (require('@comunica/actor-hash-quads-sha1').ActorHashQuadsSha1)({\n 'name': 'urn:comunica:default:hash-quads/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus\n});\nconst urn_comunica_default_hash_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_copy = new (require('@comunica/actor-optimize-query-operation-rewrite-copy').ActorOptimizeQueryOperationRewriteCopy)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-copy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_move = new (require('@comunica/actor-optimize-query-operation-rewrite-move').ActorOptimizeQueryOperationRewriteMove)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-move',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_add = new (require('@comunica/actor-optimize-query-operation-rewrite-add').ActorOptimizeQueryOperationRewriteAdd)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-add',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_group_sources = new (require('@comunica/actor-optimize-query-operation-group-sources').ActorOptimizeQueryOperationGroupSources)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#group-sources',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_construct_distinct = new (require('@comunica/actor-optimize-query-operation-construct-distinct').ActorOptimizeQueryOperationConstructDistinct)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#construct-distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'filterErrors': true,\n 'name': 'urn:comunica:default:optimize-query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_query_parse_actors_sparql = new (require('@comunica/actor-query-parse-sparql').ActorQueryParseSparql)({\n 'prefixes': {\"dbpedia\":\"http://dbpedia.org/resource/\",\"dbpedia-owl\":\"http://dbpedia.org/ontology/\",\"dbpprop\":\"http://dbpedia.org/property/\",\"dc\":\"http://purl.org/dc/terms/\",\"dc11\":\"http://purl.org/dc/elements/1.1/\",\"dcterms\":\"http://purl.org/dc/terms/\",\"foaf\":\"http://xmlns.com/foaf/0.1/\",\"geo\":\"http://www.w3.org/2003/01/geo/wgs84_pos#\",\"owl\":\"http://www.w3.org/2002/07/owl#\",\"rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"rdfs\":\"http://www.w3.org/2000/01/rdf-schema#\",\"schema\":\"http://schema.org/\",\"skos\":\"http://www.w3.org/2008/05/skos#\",\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"},\n 'name': 'urn:comunica:default:query-parse/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_actors_graphql = new (require('@comunica/actor-query-parse-graphql').ActorQueryParseGraphql)({\n 'name': 'urn:comunica:default:query-parse/actors#graphql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-parse/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_json = new (require('@comunica/actor-query-result-serialize-json').ActorQueryResultSerializeJson)({\n 'mediaTypePriorities': {\"application/json\":1},\n 'mediaTypeFormats': {\"application/json\":\"https://comunica.linkeddatafragments.org/#results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_simple = new (require('@comunica/actor-query-result-serialize-simple').ActorQueryResultSerializeSimple)({\n 'mediaTypePriorities': {\"simple\":0.9},\n 'mediaTypeFormats': {\"simple\":\"https://comunica.linkeddatafragments.org/#results_simple\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#simple',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_csv = new (require('@comunica/actor-query-result-serialize-sparql-csv').ActorQueryResultSerializeSparqlCsv)({\n 'mediaTypePriorities': {\"text/csv\":0.75},\n 'mediaTypeFormats': {\"text/csv\":\"http://www.w3.org/ns/formats/SPARQL_Results_CSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#csv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_tsv = new (require('@comunica/actor-query-result-serialize-sparql-tsv').ActorQueryResultSerializeSparqlTsv)({\n 'mediaTypePriorities': {\"text/tab-separated-values\":0.75},\n 'mediaTypeFormats': {\"text/tab-separated-values\":\"http://www.w3.org/ns/formats/SPARQL_Results_TSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-tsv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_xml = new (require('@comunica/actor-query-result-serialize-sparql-xml').ActorQueryResultSerializeSparqlXml)({\n 'mediaTypePriorities': {\"application/sparql-results+xml\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+xml\":\"http://www.w3.org/ns/formats/SPARQL_Results_XML\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-xml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_table = new (require('@comunica/actor-query-result-serialize-table').ActorQueryResultSerializeTable)({\n 'columnWidth': 50,\n 'mediaTypePriorities': {\"table\":0.6},\n 'mediaTypeFormats': {\"table\":\"https://comunica.linkeddatafragments.org/#results_table\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#table',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_tree = new (require('@comunica/actor-query-result-serialize-tree').ActorQueryResultSerializeTree)({\n 'mediaTypePriorities': {\"tree\":0.5},\n 'mediaTypeFormats': {\"tree\":\"https://comunica.linkeddatafragments.org/#results_tree\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#tree',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-result-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_source_identify_hypermedia_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'filterFactor',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-source-identify-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_actors_cardinality = new (require('@comunica/actor-rdf-join-entries-sort-cardinality').ActorRdfJoinEntriesSortCardinality)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_actors_variable_counting = new (require('@comunica/actor-rdf-join-selectivity-variable-counting').ActorRdfJoinSelectivityVariableCounting)({\n 'name': 'urn:comunica:default:rdf-join-selectivity/actors#variable-counting',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'accuracy',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-join-selectivity/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_cancontainundefs = new (require('@comunica/actor-rdf-metadata-accumulate-cancontainundefs').ActorRdfMetadataAccumulateCanContainUndefs)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#cancontainundefs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_cardinality = new (require('@comunica/actor-rdf-metadata-accumulate-cardinality').ActorRdfMetadataAccumulateCardinality)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_pagesize = new (require('@comunica/actor-rdf-metadata-accumulate-pagesize').ActorRdfMetadataAccumulatePageSize)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#pagesize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_requesttime = new (require('@comunica/actor-rdf-metadata-accumulate-requesttime').ActorRdfMetadataAccumulateRequestTime)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#requesttime',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_n3 = new (require('@comunica/actor-rdf-serialize-n3').ActorRdfSerializeN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'name': 'urn:comunica:default:rdf-serialize/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_jsonld = new (require('@comunica/actor-rdf-serialize-jsonld').ActorRdfSerializeJsonLd)({\n 'jsonStringifyIndentSpaces': 2,\n 'mediaTypePriorities': {\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-serialize/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_shaclc = new (require('@comunica/actor-rdf-serialize-shaclc').ActorRdfSerializeShaclc)({\n 'mediaTypePriorities': {\"text/shaclc\":1,\"text/shaclc-ext\":0.5},\n 'mediaTypeFormats': {\"text/shaclc\":\"http://www.w3.org/ns/formats/Shaclc\",\"text/shaclc-ext\":\"http://www.w3.org/ns/formats/ShaclcExtended\"},\n 'priorityScale': 0.1,\n 'name': 'urn:comunica:default:rdf-serialize/actors#shaclc',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_rdfjs_store = new (require('@comunica/actor-rdf-update-quads-rdfjs-store').ActorRdfUpdateQuadsRdfJsStore)({\n 'name': 'urn:comunica:default:rdf-update-quads/actors#rdfjs-store',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_query_operation_actors_source = new (require('@comunica/actor-query-operation-source').ActorQueryOperationSource)({\n 'name': 'urn:comunica:default:query-operation/actors#source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'httpRequests',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_process_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-process/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_source_identify_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-source-identify/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus\n});\nconst urn_comunica_default_rdf_join_mediators_main = new (require('@comunica/mediator-join-coefficients-fixed').MediatorJoinCoefficientsFixed)({\n 'cpuWeight': 10,\n 'memoryWeight': 1,\n 'timeWeight': 2,\n 'ioWeight': 10,\n 'name': 'urn:comunica:default:rdf-join/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-context-preprocess-query-source-identify/^3.0.0/components/ActorContextPreprocessQuerySourceIdentify.jsonld#IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_http_invalidate_mediators_main = new (require('@comunica/mediator-all').MediatorAll)({\n 'name': 'urn:comunica:default:http-invalidate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-sparql-json/^3.0.0/components/ActionObserverHttp.jsonld#IActionObserverHttpArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^3.0.0/components/ActionObserverHttp.jsonld#IActionObserverHttpArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_http_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'time',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:http/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_fallback_bus\n});\nconst urn_comunica_default_merge_bindings_context_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mergeHandlers',\n 'name': 'urn:comunica:default:merge-bindings-context/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus\n});\nconst urn_comunica_default_dereference_rdf_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference-rdf/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__3_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_metadata_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-metadata/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__3_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'filterErrors': true,\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-extract/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__3_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__3_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_single = new (require('@comunica/actor-rdf-join-inner-single').ActorRdfJoinSingle)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-single',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_empty = new (require('@comunica/actor-rdf-join-inner-multi-empty').ActorRdfJoinMultiEmpty)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-empty',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_hash = new (require('@comunica/actor-rdf-join-inner-hash').ActorRdfJoinHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_symmetric_hash = new (require('@comunica/actor-rdf-join-inner-symmetrichash').ActorRdfJoinSymmetricHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-symmetric-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_nested_loop = new (require('@comunica/actor-rdf-join-inner-nestedloop').ActorRdfJoinNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash = new (require('@comunica/actor-rdf-join-minus-hash').ActorRdfJoinMinusHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash_undef = new (require('@comunica/actor-rdf-join-minus-hash-undef').ActorRdfJoinMinusHashUndef)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash-undef',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_def_nonblocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': false,\n 'blocking': false,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-def-nonblocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_def_blocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': false,\n 'blocking': true,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-def-blocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_undef_nonblocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': true,\n 'blocking': false,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-undef-nonblocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_undef_blocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': true,\n 'blocking': true,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-undef-blocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_nested_loop = new (require('@comunica/actor-rdf-join-optional-nestedloop').ActorRdfJoinOptionalNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_rdf = new (require('@comunica/actor-query-result-serialize-rdf').ActorQueryResultSerializeRdf)({\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'mediatorMediaTypeCombiner': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorMediaTypeFormatCombiner': urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat,\n 'name': 'urn:comunica:default:query-result-serialize/actors#rdf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_operation_actors_ask = new (require('@comunica/actor-query-operation-ask').ActorQueryOperationAsk)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#ask',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_bgp = new (require('@comunica/actor-query-operation-bgp-join').ActorQueryOperationBgpJoin)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_construct = new (require('@comunica/actor-query-operation-construct').ActorQueryOperationConstruct)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#construct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_distinct = new (require('@comunica/actor-query-operation-distinct-hash').ActorQueryOperationDistinctHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorHashQuads': urn_comunica_default_hash_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_from = new (require('@comunica/actor-query-operation-from-quad').ActorQueryOperationFromQuad)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#from',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_project = new (require('@comunica/actor-query-operation-project').ActorQueryOperationProject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#project',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_reduced = new (require('@comunica/actor-query-operation-reduced-hash').ActorQueryOperationReducedHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'cacheSize': 100,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#reduced',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_slice = new (require('@comunica/actor-query-operation-slice').ActorQueryOperationSlice)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#slice',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_union = new (require('@comunica/actor-query-operation-union').ActorQueryOperationUnion)({\n 'mediatorRdfMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#union',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_alt = new (require('@comunica/actor-query-operation-path-alt').ActorQueryOperationPathAlt)({\n 'mediatorRdfMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-alt',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_inv = new (require('@comunica/actor-query-operation-path-inv').ActorQueryOperationPathInv)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-inv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_link = new (require('@comunica/actor-query-operation-path-link').ActorQueryOperationPathLink)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-link',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_nps = new (require('@comunica/actor-query-operation-path-nps').ActorQueryOperationPathNps)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-nps',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_clear = new (require('@comunica/actor-query-operation-update-clear').ActorQueryOperationClear)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-clear',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_composite = new (require('@comunica/actor-query-operation-update-compositeupdate').ActorQueryOperationUpdateCompositeUpdate)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-composite',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_create = new (require('@comunica/actor-query-operation-update-create').ActorQueryOperationCreate)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-create',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_drop = new (require('@comunica/actor-query-operation-update-drop').ActorQueryOperationDrop)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-drop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_load = new (require('@comunica/actor-query-operation-update-load').ActorQueryOperationLoad)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-load',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_join = new (require('@comunica/actor-query-operation-join').ActorQueryOperationJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_minus = new (require('@comunica/actor-query-operation-minus').ActorQueryOperationMinus)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#minus',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_seq = new (require('@comunica/actor-query-operation-path-seq').ActorQueryOperationPathSeq)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-seq',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest = new (require('@comunica/actor-rdf-join-inner-multi-smallest').ActorRdfJoinMultiSmallest)({\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_filter_pushdown = new (require('@comunica/actor-optimize-query-operation-filter-pushdown').ActorOptimizeQueryOperationFilterPushdown)({\n 'aggressivePushdown': false,\n 'maxIterations': 10,\n 'splitConjunctive': true,\n 'mergeConjunctive': true,\n 'pushIntoLeftJoins': true,\n 'pushEqualityIntoPatterns': true,\n 'name': 'urn:comunica:default:optimize-query-operation/actors#filter-pushdown',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_group_sources\n]\n});\nconst urn_comunica_default_context_preprocess_actors_query_source_identify = new (require('@comunica/actor-context-preprocess-query-source-identify').ActorContextPreprocessQuerySourceIdentify)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'name': 'urn:comunica:default:context-preprocess/actors#query-source-identify',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus,\n 'beforeActors': [\n urn_comunica_default_context_preprocess_actors_query_source_skolemize\n]\n});\nconst urn_comunica_default_init_actors_query = new (require('@comunica/actor-init-query').ActorInitQuery)({\n 'mediatorQueryProcess': urn_comunica_default_query_process_mediators_main,\n 'mediatorQueryResultSerialize': urn_comunica_default_query_result_serialize_mediators_serialize,\n 'mediatorQueryResultSerializeMediaTypeCombiner': urn_comunica_default_query_result_serialize_mediators_mediaType,\n 'mediatorQueryResultSerializeMediaTypeFormatCombiner': urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat,\n 'mediatorHttpInvalidate': urn_comunica_default_http_invalidate_mediators_main,\n 'defaultQueryInputFormat': 'sparql',\n 'allowNoSources': false,\n 'name': 'urn:comunica:default:init/actors#query',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActorQueryResultSerializeSparqlJson_jsonld_ActorQueryResultSerializeSparqlJson_default_observer = new (require('@comunica/actor-query-result-serialize-sparql-json').ActionObserverHttp)({\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator,\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-sparql-json/^3.0.0/components/ActorQueryResultSerializeSparqlJson.jsonld#ActorQueryResultSerializeSparqlJson_default_observer',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer = new (require('@comunica/actor-query-result-serialize-stats').ActionObserverHttp)({\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator,\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^3.0.0/components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats_default_observer',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql = new (require('@comunica/actor-query-source-identify-hypermedia-sparql').ActorQuerySourceIdentifyHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'checkUrlSuffix': true,\n 'forceHttpGet': false,\n 'cacheSize': 1024,\n 'bindMethod': 'values',\n 'countTimeout': 3000,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus\n});\nconst urn_comunica_default_query_operation_actors_extend = new (require('@comunica/actor-query-operation-extend').ActorQueryOperationExtend)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#extend',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_filter = new (require('@comunica/actor-query-operation-filter').ActorQueryOperationFilter)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#filter',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_group = new (require('@comunica/actor-query-operation-group').ActorQueryOperationGroup)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#group',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_leftjoin = new (require('@comunica/actor-query-operation-leftjoin').ActorQueryOperationLeftJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#leftjoin',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_nop = new (require('@comunica/actor-query-operation-nop').ActorQueryOperationNop)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#nop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_orderby = new (require('@comunica/actor-query-operation-orderby').ActorQueryOperationOrderBy)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#orderby',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_service = new (require('@comunica/actor-query-operation-service').ActorQueryOperationService)({\n 'forceSparqlEndpoint': false,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_values = new (require('@comunica/actor-query-operation-values').ActorQueryOperationValues)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#values',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_one_or_more = new (require('@comunica/actor-query-operation-path-one-or-more').ActorQueryOperationPathOneOrMore)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-one-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_more = new (require('@comunica/actor-query-operation-path-zero-or-more').ActorQueryOperationPathZeroOrMore)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_one = new (require('@comunica/actor-query-operation-path-zero-or-one').ActorQueryOperationPathZeroOrOne)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-one',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_delete_insert = new (require('@comunica/actor-query-operation-update-deleteinsert').ActorQueryOperationUpdateDeleteInsert)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-delete-insert',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_process_actors_sequential = new (require('@comunica/actor-query-process-sequential').ActorQueryProcessSequential)({\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'mediatorQueryParse': urn_comunica_default_query_parse_mediators_main,\n 'mediatorOptimizeQueryOperation': urn_comunica_default_optimize_query_operation_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-process/actors#sequential',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_none = new (require('@comunica/actor-rdf-join-inner-none').ActorRdfJoinNone)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_bind = new (require('@comunica/actor-rdf-join-optional-bind').ActorRdfJoinOptionalBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.000001,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_query_source_identify_actors_hypermedia = new (require('@comunica/actor-query-source-identify-hypermedia').ActorQuerySourceIdentifyHypermedia)({\n 'cacheSize': 100,\n 'maxIterators': 64,\n 'aggregateTraversalStore': true,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQuerySourceIdentifyHypermedia': urn_comunica_default_query_source_identify_hypermedia_mediators_main,\n 'mediatorRdfResolveHypermediaLinks': urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main,\n 'mediatorRdfResolveHypermediaLinksQueue': urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-source-identify/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind = new (require('@comunica/actor-rdf-join-inner-multi-bind').ActorRdfJoinMultiBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'minMaxCardinalityRatio': 60,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest_filter_bindings = new (require('@comunica/actor-rdf-join-inner-multi-smallest-filter-bindings').ActorRdfJoinMultiSmallestFilterBindings)({\n 'selectivityModifier': 0.0001,\n 'blockSize': 64,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest-filter-bindings',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_json = new (require('@comunica/actor-query-result-serialize-sparql-json').ActorQueryResultSerializeSparqlJson)({\n 'emitMetadata': true,\n 'httpObserver': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActorQueryResultSerializeSparqlJson_jsonld_ActorQueryResultSerializeSparqlJson_default_observer,\n 'mediaTypePriorities': {\"application/sparql-results+json\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+json\":\"http://www.w3.org/ns/formats/SPARQL_Results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_stats = new (require('@comunica/actor-query-result-serialize-stats').ActorQueryResultSerializeStats)({\n 'httpObserver': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer,\n 'mediaTypePriorities': {\"stats\":0.5},\n 'mediaTypeFormats': {\"stats\":\"https://comunica.linkeddatafragments.org/#results_stats\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#stats',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_process_actors_explain_parsed = new (require('@comunica/actor-query-process-explain-parsed').ActorQueryProcessExplainParsed)({\n 'queryProcessor': urn_comunica_default_query_process_actors_sequential,\n 'name': 'urn:comunica:default:query-process/actors#explain-parsed',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_process_actors_explain_logical = new (require('@comunica/actor-query-process-explain-logical').ActorQueryProcessExplainLogical)({\n 'queryProcessor': urn_comunica_default_query_process_actors_sequential,\n 'name': 'urn:comunica:default:query-process/actors#explain-logical',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_process_actors_explain_physical = new (require('@comunica/actor-query-process-explain-physical').ActorQueryProcessExplainPhysical)({\n 'queryProcessor': urn_comunica_default_query_process_actors_sequential,\n 'name': 'urn:comunica:default:query-process/actors#explain-physical',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations = new (require('@comunica/actor-optimize-query-operation-prune-empty-source-operations').ActorOptimizeQueryOperationPruneEmptySourceOperations)({\n 'useAskIfSupported': false,\n 'name': 'urn:comunica:default:optimize-query-operation/actors#prune-empty-source-operations',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_filter_pushdown\n]\n});\nconst urn_comunica_default_query_source_identify_actors_rdfjs = new (require('@comunica/actor-query-source-identify-rdfjs').ActorQuerySourceIdentifyRdfJs)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-source-identify/actors#rdfjs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus,\n 'beforeActors': [\n urn_comunica_default_query_source_identify_actors_hypermedia\n]\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind_source = new (require('@comunica/actor-rdf-join-inner-multi-bind-source').ActorRdfJoinMultiBindSource)({\n 'selectivityModifier': 0.0001,\n 'blockSize': 16,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind-source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_connected = new (require('@comunica/actor-optimize-query-operation-join-connected').ActorOptimizeQueryOperationJoinConnected)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-connected',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_bgp_to_join = new (require('@comunica/actor-optimize-query-operation-bgp-to-join').ActorOptimizeQueryOperationBgpToJoin)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#bgp-to-join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_join_connected\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_bgp = new (require('@comunica/actor-optimize-query-operation-join-bgp').ActorOptimizeQueryOperationJoinBgp)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive = new (require('@comunica/actor-optimize-query-operation-assign-sources-exhaustive').ActorOptimizeQueryOperationAssignSourcesExhaustive)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#assign-sources-exhaustive',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_join_bgp\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_describe_to_constructs_subject = new (require('@comunica/actor-optimize-query-operation-describe-to-constructs-subject').ActorOptimizeQueryOperationDescribeToConstructsSubject)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#describe-to-constructs-subject',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive\n]\n});\nconst urn_comunica_default_Runner = (https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus, [\n urn_comunica_default_context_preprocess_actors_convert_shortcuts,\n urn_comunica_default_context_preprocess_actors_set_defaults,\n urn_comunica_default_context_preprocess_actors_source_to_destination,\n urn_comunica_default_context_preprocess_actors_query_source_identify,\n urn_comunica_default_context_preprocess_actors_query_source_skolemize,\n urn_comunica_default_hash_bindings_actors_sha1,\n urn_comunica_default_hash_quads_actors_sha1,\n urn_comunica_default_init_actors_query,\n urn_comunica_default_optimize_query_operation_actors_rewrite_copy,\n urn_comunica_default_optimize_query_operation_actors_rewrite_move,\n urn_comunica_default_optimize_query_operation_actors_rewrite_add,\n urn_comunica_default_optimize_query_operation_actors_describe_to_constructs_subject,\n urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive,\n urn_comunica_default_optimize_query_operation_actors_join_bgp,\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join,\n urn_comunica_default_optimize_query_operation_actors_join_connected,\n urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations,\n urn_comunica_default_optimize_query_operation_actors_filter_pushdown,\n urn_comunica_default_optimize_query_operation_actors_group_sources,\n urn_comunica_default_optimize_query_operation_actors_construct_distinct,\n urn_comunica_default_query_parse_actors_sparql,\n urn_comunica_default_query_parse_actors_graphql,\n urn_comunica_default_query_result_serialize_actors_json,\n urn_comunica_default_query_result_serialize_actors_rdf,\n urn_comunica_default_query_result_serialize_actors_simple,\n urn_comunica_default_query_result_serialize_actors_csv,\n urn_comunica_default_query_result_serialize_actors_sparql_json,\n urn_comunica_default_query_result_serialize_actors_sparql_tsv,\n urn_comunica_default_query_result_serialize_actors_sparql_xml,\n urn_comunica_default_query_result_serialize_actors_stats,\n urn_comunica_default_query_result_serialize_actors_table,\n urn_comunica_default_query_result_serialize_actors_tree,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql,\n urn_comunica_default_rdf_join_entries_sort_actors_cardinality,\n urn_comunica_default_rdf_join_selectivity_actors_variable_counting,\n urn_comunica_default_rdf_metadata_accumulate_actors_cancontainundefs,\n urn_comunica_default_rdf_metadata_accumulate_actors_cardinality,\n urn_comunica_default_rdf_metadata_accumulate_actors_pagesize,\n urn_comunica_default_rdf_metadata_accumulate_actors_requesttime,\n urn_comunica_default_rdf_serialize_actors_n3,\n urn_comunica_default_rdf_serialize_actors_jsonld,\n urn_comunica_default_rdf_serialize_actors_shaclc,\n urn_comunica_default_rdf_update_quads_actors_rdfjs_store,\n urn_comunica_default_query_operation_actors_ask,\n urn_comunica_default_query_operation_actors_bgp,\n urn_comunica_default_query_operation_actors_construct,\n urn_comunica_default_query_operation_actors_distinct,\n urn_comunica_default_query_operation_actors_extend,\n urn_comunica_default_query_operation_actors_filter,\n urn_comunica_default_query_operation_actors_from,\n urn_comunica_default_query_operation_actors_group,\n urn_comunica_default_query_operation_actors_join,\n urn_comunica_default_query_operation_actors_leftjoin,\n urn_comunica_default_query_operation_actors_minus,\n urn_comunica_default_query_operation_actors_nop,\n urn_comunica_default_query_operation_actors_orderby,\n urn_comunica_default_query_operation_actors_project,\n urn_comunica_default_query_operation_actors_reduced,\n urn_comunica_default_query_operation_actors_service,\n urn_comunica_default_query_operation_actors_slice,\n urn_comunica_default_query_operation_actors_source,\n urn_comunica_default_query_operation_actors_union,\n urn_comunica_default_query_operation_actors_values,\n urn_comunica_default_query_operation_actors_path_alt,\n urn_comunica_default_query_operation_actors_path_inv,\n urn_comunica_default_query_operation_actors_path_link,\n urn_comunica_default_query_operation_actors_path_nps,\n urn_comunica_default_query_operation_actors_path_one_or_more,\n urn_comunica_default_query_operation_actors_path_seq,\n urn_comunica_default_query_operation_actors_path_zero_or_more,\n urn_comunica_default_query_operation_actors_path_zero_or_one,\n urn_comunica_default_query_operation_actors_update_clear,\n urn_comunica_default_query_operation_actors_update_composite,\n urn_comunica_default_query_operation_actors_update_create,\n urn_comunica_default_query_operation_actors_update_delete_insert,\n urn_comunica_default_query_operation_actors_update_drop,\n urn_comunica_default_query_operation_actors_update_load,\n urn_comunica_default_query_process_actors_sequential,\n urn_comunica_default_query_process_actors_explain_parsed,\n urn_comunica_default_query_process_actors_explain_logical,\n urn_comunica_default_query_process_actors_explain_physical,\n urn_comunica_default_query_source_identify_actors_hypermedia,\n urn_comunica_default_query_source_identify_actors_rdfjs,\n urn_comunica_default_rdf_join_actors_inner_none,\n urn_comunica_default_rdf_join_actors_inner_single,\n urn_comunica_default_rdf_join_actors_inner_multi_empty,\n urn_comunica_default_rdf_join_actors_inner_multi_bind_source,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest_filter_bindings,\n urn_comunica_default_rdf_join_actors_minus_hash,\n urn_comunica_default_rdf_join_actors_minus_hash_undef,\n urn_comunica_default_rdf_join_actors_optional_bind,\n urn_comunica_default_rdf_join_actors_optional_hash_def_nonblocking,\n urn_comunica_default_rdf_join_actors_optional_hash_def_blocking,\n urn_comunica_default_rdf_join_actors_optional_hash_undef_nonblocking,\n urn_comunica_default_rdf_join_actors_optional_hash_undef_blocking,\n urn_comunica_default_rdf_join_actors_optional_nested_loop\n]);\nreturn urn_comunica_default_init_actors_query;\n}\n\n","import { QueryEngineBase } from '@comunica/actor-init-query';\nimport type { ActorInitQueryBase } from '@comunica/actor-init-query';\nimport type { IQueryContextCommon } from '@comunica/types';\n\n// eslint-disable-next-line import/extensions,ts/no-require-imports,ts/no-var-requires\nconst engineDefault = require('../engine-default.js');\n\n/**\n * A Comunica SPARQL query engine.\n */\nexport class QueryEngine\n extends QueryEngineBase {\n public constructor(engine: ActorInitQueryBase = engineDefault()) {\n super(engine);\n }\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nexport * from './QueryEngine';\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * An abstract actor that handles media-typed actions.\n *\n * It splits up a action between a 'handle' and a 'mediaTypes' action.\n * A 'mediaTypes' action is used to retrieve the available media types from this actor.\n * A 'handle' action is abstract, and can be implemented to do anything,\n * such as parsing, serializing, etc.\n * @see IActionAbstractMediaTyped\n *\n * @see ActorAbstractMediaTypedFixed\n */\nexport abstract class ActorAbstractMediaTyped\n extends Actor, IActorTestAbstractMediaTyped, IActorOutputAbstractMediaTyped> {\n public constructor(args: IActorArgsMediaTyped) {\n super(args);\n }\n\n public async run(action: IActionAbstractMediaTyped): Promise> {\n if ('handle' in action) {\n const typedAction: IActionAbstractMediaTypedHandle = action;\n return { handle: await this.runHandle(typedAction.handle, typedAction.handleMediaType, action.context) };\n }\n if ('mediaTypes' in action) {\n return { mediaTypes: await this.getMediaTypes(action.context) };\n }\n if ('mediaTypeFormats' in action) {\n return { mediaTypeFormats: await this.getMediaTypeFormats(action.context) };\n }\n throw new Error('Either a handle, mediaTypes or mediaTypeFormats action needs to be provided');\n }\n\n public async test(action: IActionAbstractMediaTyped): Promise> {\n if ('handle' in action) {\n const typedAction: IActionAbstractMediaTypedHandle = action;\n return { handle: await this.testHandle(typedAction.handle, typedAction.handleMediaType, action.context) };\n }\n if ('mediaTypes' in action) {\n return { mediaTypes: await this.testMediaType(action.context) };\n }\n if ('mediaTypeFormats' in action) {\n return { mediaTypeFormats: await this.testMediaTypeFormats(action.context) };\n }\n throw new Error('Either a handle, mediaTypes or mediaTypeFormats action needs to be provided');\n }\n\n /**\n * Check if this actor can run the given handle action,\n * without actually running it.\n *\n * @param {HI} action The handle action to test.\n * @param {string} mediaType The media type to test.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the handle test result.\n */\n public abstract testHandle(action: HI, mediaType: string | undefined, context: IActionContext): Promise;\n\n /**\n * Run the given handle action on this actor.\n *\n * @param {HI} action The handle action to run.\n * @param {string} mediaType The media type to run with.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the handle run result.\n */\n public abstract runHandle(action: HI, mediaType: string | undefined, context: IActionContext): Promise;\n\n /**\n * Check if this actor can emit its media types.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the media type run result.\n */\n public abstract testMediaType(context: IActionContext): Promise;\n\n /**\n * Get the media type of this given actor.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise<{[id: string]: number}>} A promise that resolves to the media types.\n */\n public abstract getMediaTypes(context: IActionContext): Promise>;\n\n /**\n * Check if this actor can emit its media type formats.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the media type run result.\n */\n public abstract testMediaTypeFormats(context: IActionContext): Promise;\n\n /**\n * Get the media type formats of this given actor.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise<{[id: string]: string}>} A promise that resolves to the media types.\n */\n public abstract getMediaTypeFormats(context: IActionContext): Promise>;\n}\n\nexport interface IActorArgsMediaTyped extends IActorArgs<\n IActionAbstractMediaTyped,\nIActorTestAbstractMediaTyped,\nIActorOutputAbstractMediaTyped\n> {}\n\nexport type IActionAbstractMediaTyped = IActionAbstractMediaTypedHandle | IActionAbstractMediaTypedMediaTypes\n| IActionAbstractMediaTypedMediaTypeFormats;\nexport interface IActionAbstractMediaTypedHandle extends IAction {\n /**\n * The handle action input.\n */\n handle: HI;\n /**\n * The handle media type that should be used when 'handle' is truthy.\n */\n handleMediaType?: string;\n}\n\nexport interface IActionAbstractMediaTypedMediaTypes extends IAction {\n /**\n * True if media types should be retrieved.\n */\n mediaTypes: boolean;\n}\n\nexport interface IActionAbstractMediaTypedMediaTypeFormats extends IAction {\n /**\n * True if media type formats should be retrieved.\n */\n mediaTypeFormats: boolean;\n}\n\n/**\n * Either 'handle', or 'mediaTypes' or 'mediaTypeFormats' must be truthy.\n * Groups may not be truthy at the same time.\n */\nexport type IActorTestAbstractMediaTyped = IActorTestAbstractMediaTypedHandle\n| IActorTestAbstractMediaTypedMediaTypes | IActorTestAbstractMediaTypedMediaTypeFormats;\nexport interface IActorTestAbstractMediaTypedHandle extends IActorTest {\n /**\n * The handle test output.\n */\n handle: HT;\n}\nexport interface IActorTestAbstractMediaTypedMediaTypes extends IActorTest {\n /**\n * True if media types can be retrieved.\n */\n mediaTypes: boolean;\n}\nexport interface IActorTestAbstractMediaTypedMediaTypeFormats extends IActorTest {\n /**\n * True if media type formats can be retrieved.\n */\n mediaTypeFormats?: boolean;\n}\n\n/**\n * Either 'handle', or 'mediaTypes' or 'mediaTypeFormats' must be truthy.\n * Groups may not be truthy at the same time.\n */\nexport type IActorOutputAbstractMediaTyped = IActorOutputAbstractMediaTypedHandle\n| IActorOutputAbstractMediaTypedMediaTypes | IActorOutputAbstractMediaTypedMediaTypeFormats;\nexport interface IActorOutputAbstractMediaTypedHandle extends IActorOutput {\n /**\n * The handle action output.\n */\n handle: HO;\n}\nexport interface IActorOutputAbstractMediaTypedMediaTypes extends IActorOutput {\n /**\n * An object containing media types as keys,\n * and preferences as values, with values ranging from 0 to 1.\n */\n mediaTypes: Record;\n}\nexport interface IActorOutputAbstractMediaTypedMediaTypeFormats extends IActorOutput {\n /**\n * An object containing media types as keys,\n * and format IRIs as values.\n */\n mediaTypeFormats: Record;\n}\n\nexport type MediateMediaTypes = Mediate<\nIActionAbstractMediaTypedMediaTypes,\nIActorOutputAbstractMediaTypedMediaTypes,\nIActorTestAbstractMediaTypedMediaTypes\n>;\n\nexport type MediateMediaTyped = Mediate<\nIActionAbstractMediaTypedHandle,\nIActorOutputAbstractMediaTypedHandle,\nIActorTestAbstractMediaTypedHandle\n>;\n","import type { IActionContext } from '@comunica/types';\nimport type { IActorArgsMediaTyped } from './ActorAbstractMediaTyped';\nimport { ActorAbstractMediaTyped } from './ActorAbstractMediaTyped';\n\nexport abstract class ActorAbstractMediaTypedFixed extends ActorAbstractMediaTyped {\n public readonly mediaTypePriorities: Record;\n public readonly mediaTypeFormats: Record;\n public readonly priorityScale: number;\n\n public constructor(args: IActorArgsMediaTypedFixed) {\n super(args);\n const scale: number = this.priorityScale || this.priorityScale === 0 ? this.priorityScale : 1;\n if (this.mediaTypePriorities) {\n for (const [ _index, [ key, value ]] of Object.entries(this.mediaTypePriorities).entries()) {\n this.mediaTypePriorities[key] = scale * value;\n }\n }\n this.mediaTypePriorities = Object.freeze(this.mediaTypePriorities);\n this.mediaTypeFormats = Object.freeze(this.mediaTypeFormats);\n }\n\n public async testHandle(action: HI, mediaType: string | undefined, context: IActionContext): Promise {\n if (!mediaType || !(mediaType in this.mediaTypePriorities)) {\n throw new Error(`Unrecognized media type: ${mediaType}`);\n }\n return await this.testHandleChecked(action, context);\n }\n\n /**\n * Check to see if this actor can handle the given action.\n * The media type has already been checked before this is called.\n *\n * @param {ActionContext} context An optional context.\n * @param {HI} action The action to test.\n */\n public abstract testHandleChecked(action: HI, context: IActionContext): Promise;\n\n public async testMediaType(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypes(_context: IActionContext): Promise> {\n return this.mediaTypePriorities;\n }\n\n public async testMediaTypeFormats(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypeFormats(_context: IActionContext): Promise> {\n return this.mediaTypeFormats;\n }\n}\n\nexport interface IActorArgsMediaTypedFixed extends IActorArgsMediaTyped {\n /**\n * A record of media types, with media type name as key, and its priority as value.\n * Priorities are numbers between [0, 1].\n * @range {json}\n */\n mediaTypePriorities: Record;\n /**\n * A record of media types, with media type name as key, and its format IRI as value.\n * @range {json}\n */\n mediaTypeFormats: Record;\n /**\n * A multiplier for media type priorities.\n * This can be used for keeping the original media types in place,\n * but scaling all of their scores with a certain value.\n * @range {double}\n */\n priorityScale?: number;\n}\n","export * from './ActorAbstractMediaTyped';\nexport * from './ActorAbstractMediaTypedFixed';\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResultBindings,\n Bindings,\n IActionContext,\n MetadataBindings,\n IQuerySourceWrapper,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport {\n BufferedIterator,\n MultiTransformIterator,\n TransformIterator,\n EmptyIterator,\n} from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\nimport { PathVariableObjectIterator } from './PathVariableObjectIterator';\n\nconst DF = new DataFactory();\n\n/**\n * An abstract actor that handles Path operations.\n *\n * Provides multiple helper functions used by the Path operation actors.\n */\nexport abstract class ActorAbstractPath extends ActorQueryOperationTypedMediated {\n protected static readonly FACTORY: Factory = new Factory();\n\n protected readonly predicateType: string;\n\n protected constructor(args: IActorQueryOperationTypedMediatedArgs, predicateType: string) {\n super(args, 'path');\n this.predicateType = predicateType;\n }\n\n public async testOperation(operation: Algebra.Path, _context: IActionContext): Promise {\n if (operation.predicate.type !== this.predicateType) {\n throw new Error(`This Actor only supports ${this.predicateType} Path operations.`);\n }\n\n return true;\n }\n\n // Generates a variable that does not yet occur in the path\n public generateVariable(path?: Algebra.Path, name?: string): RDF.Variable {\n if (!name) {\n return this.generateVariable(path, 'b');\n }\n\n // Path predicates can't contain variables\n if (path && (path.subject.value === name || path.object.value === name)) {\n return this.generateVariable(path, `${name}b`);\n }\n\n return DF.variable(name);\n }\n\n // Such connectivity matching does not introduce duplicates (it does not incorporate any count of the number\n // of ways the connection can be made) even if the repeated path itself would otherwise result in duplicates.\n // https://www.w3.org/TR/sparql11-query/#propertypaths\n public async isPathArbitraryLengthDistinct(context: IActionContext, path: Algebra.Path):\n Promise<{ context: IActionContext; operation: IQueryOperationResultBindings | undefined }> {\n if (!context.get(KeysQueryOperation.isPathArbitraryLengthDistinctKey)) {\n context = context.set(KeysQueryOperation.isPathArbitraryLengthDistinctKey, true);\n return { context, operation: ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n operation: ActorAbstractPath.FACTORY.createDistinct(path),\n context,\n })) };\n }\n\n context = context.set(KeysQueryOperation.isPathArbitraryLengthDistinctKey, false);\n return { context, operation: undefined };\n }\n\n private async predicateStarGraphVariable(\n subject: RDF.Term,\n object: RDF.Variable,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Variable,\n context: IActionContext,\n bindingsFactory: BindingsFactory,\n ): Promise {\n const sources = this.getPathSources(predicate);\n // TODO: refactor this with an iterator just like PathVariableObjectIterator so we handle backpressure correctly\n // Construct path to obtain all graphs where subject exists\n const predVar = this.generateVariable(ActorAbstractPath.FACTORY\n .createPath(subject, predicate, object, graph));\n const findGraphs = ActorAbstractPath.FACTORY.createUnion([\n this.assignPatternSources(ActorAbstractPath.FACTORY.createPattern(subject, predVar, object, graph), sources),\n this.assignPatternSources(ActorAbstractPath.FACTORY.createPattern(object, predVar, subject, graph), sources),\n ]);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: findGraphs }),\n );\n\n const passedGraphs: Set = new Set();\n\n const bindingsStream = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n // Extract the graph and start a predicate* search starting from subject in each graph\n const graphValue: RDF.Term = bindings.get(graph)!;\n if (passedGraphs.has(graphValue.value)) {\n return new EmptyIterator();\n }\n passedGraphs.add(graphValue.value);\n return new TransformIterator(\n async() => {\n const it = new BufferedIterator();\n await this.getObjectsPredicateStar(subject, predicate, graphValue, context, {}, it, { count: 0 });\n return it.transform({\n transform(item, next, push) {\n push(bindingsFactory.bindings([\n [ object, item ],\n [ graph, graphValue ],\n ]));\n next();\n },\n });\n },\n { maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n\n return {\n bindingsStream,\n metadata: results.metadata,\n };\n }\n\n /**\n * Returns an iterator with Bindings of the query subject predicate* ?o or subject predicate+ ?o\n * If graph is a variable, it will also be in those bindings\n * @param {Term} subject Term of where we start the predicate* search.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Variable} object Variable of the zeroOrMore-query.\n * @param {Term} graph The graph in which we search for the pattern. (Possibly a variable)\n * @param {ActionContext} context The context to pass to sub-opertations\n * @param emitFirstSubject If the path operation is predicate*, otherwise it is predicate+.\n * @return {Promise} Iterator to where all bindings of query should have been pushed.\n */\n public async getObjectsPredicateStarEval(\n subject: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n object: RDF.Variable,\n graph: RDF.Term,\n context: IActionContext,\n emitFirstSubject: boolean,\n bindingsFactory: BindingsFactory,\n ): Promise {\n if (graph.termType === 'Variable') {\n return this.predicateStarGraphVariable(subject, object, predicate, graph, context, bindingsFactory);\n }\n\n const it = new PathVariableObjectIterator(\n subject,\n predicate,\n graph,\n context,\n this.mediatorQueryOperation,\n emitFirstSubject,\n );\n\n const bindingsStream = it.transform({\n autoStart: false,\n transform(item, next, push) {\n push(bindingsFactory.bindings([[ object, item ]]));\n next();\n },\n });\n\n return {\n bindingsStream,\n async metadata() {\n const metadata: MetadataBindings = await new Promise((resolve) => {\n it.getProperty('metadata', (metadataInner: any) => resolve(metadataInner()));\n });\n // Increment cardinality by one, because we always have at least one result once we reach this stage.\n // See the transformation above where we push a single binding.\n metadata.cardinality.value++;\n return metadata;\n },\n };\n }\n\n /**\n * Pushes all terms to iterator `it` that are a solution of object predicate* ?o.\n * @param {Term} object Term of where we start the predicate* search.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {Record} termHashes Remembers the objects we've already searched for.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} The results metadata.\n */\n public async getObjectsPredicateStar(\n object: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Term,\n context: IActionContext,\n termHashes: Record,\n it: BufferedIterator,\n counter: any,\n ): Promise {\n const termString = termToString(object);\n if (termHashes[termString]) {\n return;\n }\n\n ( it)._push(object);\n termHashes[termString] = object;\n counter.count++;\n\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(object, predicate, thisVariable, graph);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: path, context }),\n );\n // TODO: fixme\n // eslint-disable-next-line ts/no-misused-promises\n results.bindingsStream.on('data', async(bindings: Bindings) => {\n const result = bindings.get(thisVariable);\n await this.getObjectsPredicateStar(result!, predicate, graph, context, termHashes, it, counter);\n });\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n });\n\n return results.metadata;\n }\n\n /**\n * Pushes all terms to iterator `it` that are a solution of ?s predicate* ?o.\n * @param {string} subjectVar String representation of subjectVariable\n * @param {string} objectVar String representation of objectVariable\n * @param {Term} subjectVal Term of where we start the predicate* search.\n * @param {Term} objectVal Found solution for an object, start for the new step.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {{[id: string]: Promise}} termHashesGlobal\n * Remembers solutions for when objectVal is already been calculated, can be reused when same objectVal occurs\n * @param {{[id: string]: Term}} termHashesCurrentSubject\n * Remembers the pairs we've already searched for, can stop searching if so.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} All solutions of query should have been pushed to it by then.\n */\n // Let the iterator `it` emit all bindings of size 2, with subjectStringVariable as value subjectVal\n // and objectStringVariable as value all nodes reachable through predicate* beginning at objectVal\n public async getSubjectAndObjectBindingsPredicateStar(\n subjectVar: RDF.Variable,\n objectVar: RDF.Variable,\n subjectVal: RDF.Term,\n objectVal: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Term,\n context: IActionContext,\n termHashesGlobal: Record>,\n termHashesCurrentSubject: Record,\n it: BufferedIterator,\n counter: any,\n bindingsFactory: BindingsFactory,\n ): Promise {\n const termString = termToString(objectVal) + termToString(graph);\n\n // If this combination of subject and object already done, return nothing\n if (termHashesCurrentSubject[termString]) {\n return;\n }\n\n counter.count++;\n termHashesCurrentSubject[termString] = true;\n ( it)._push(bindingsFactory.bindings([\n [ subjectVar, subjectVal ],\n [ objectVar, objectVal ],\n ]));\n\n // If every reachable node from object has already been calculated, use these for current subject too\n if (termString in termHashesGlobal) {\n const objects = await termHashesGlobal[termString];\n for (const object of objects) {\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subjectVal,\n object,\n predicate,\n graph,\n context,\n termHashesGlobal,\n termHashesCurrentSubject,\n it,\n counter,\n bindingsFactory,\n );\n }\n if (--counter.count === 0) {\n it.close();\n }\n\n return;\n }\n\n // Construct promise to calculate all reachable nodes from this object\n // TODO: fixme\n // eslint-disable-next-line no-async-promise-executor,ts/no-misused-promises\n const promise = new Promise(async(resolve, reject) => {\n const objectsArray: RDF.Term[] = [];\n\n // Construct path that leads us one step through predicate\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(objectVal, predicate, thisVariable, graph);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: path, context }),\n );\n\n // Recursive call on all neighbours\n // TODO: fixme\n // eslint-disable-next-line ts/no-misused-promises\n results.bindingsStream.on('data', async(bindings: RDF.Bindings) => {\n const result: RDF.Term = bindings.get(thisVariable)!;\n objectsArray.push(result);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subjectVal,\n result,\n predicate,\n graph,\n context,\n termHashesGlobal,\n termHashesCurrentSubject,\n it,\n counter,\n bindingsFactory,\n );\n });\n results.bindingsStream.on('error', reject);\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n resolve(objectsArray);\n });\n });\n\n // Set it in the termHashesGlobal when this object occurs again they can wait for this promise\n termHashesGlobal[termString] = promise;\n }\n\n /**\n * Find all sources recursively contained in the given path operation.\n * @param operation\n */\n public getPathSources(operation: Algebra.PropertyPathSymbol): IQuerySourceWrapper[] {\n switch (operation.type) {\n case Algebra.types.ALT:\n case Algebra.types.SEQ:\n return operation.input\n .flatMap((subOp: Algebra.PropertyPathSymbol) => this.getPathSources(subOp));\n case Algebra.types.INV:\n case Algebra.types.ONE_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_ONE_PATH:\n return this.getPathSources(operation.path);\n case Algebra.types.LINK:\n case Algebra.types.NPS: {\n const source = ActorQueryOperation.getOperationSource(operation);\n if (!source) {\n throw new Error(`Could not find a required source on a link path operation`);\n }\n return [ source ];\n }\n }\n }\n\n public assignPatternSources(pattern: Algebra.Pattern, sources: IQuerySourceWrapper[]): Algebra.Operation {\n if (sources.length === 0) {\n throw new Error(`Attempted to assign zero sources to a pattern during property path handling`);\n }\n if (sources.length === 1) {\n return ActorQueryOperation.assignOperationSource(pattern, sources[0]);\n }\n return ActorAbstractPath.FACTORY.createUnion(sources\n .map(source => ActorQueryOperation.assignOperationSource(pattern, source)), true);\n }\n}\n\nexport interface IPathResultStream {\n bindingsStream: AsyncIterator;\n metadata: () => Promise;\n}\n","import type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { BufferedIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\nconst FACTORY = new Factory();\n\n/**\n * An iterator that implements the multi-length property path operation (* and +)\n * for a fixed subject and predicate, and a variable object.\n */\nexport class PathVariableObjectIterator extends BufferedIterator {\n private readonly termHashes: Map = new Map();\n private readonly runningOperations: AsyncIterator[] = [];\n private readonly pendingOperations: { variable: RDF.Variable; operation: Algebra.Path }[] = [];\n\n public constructor(\n private readonly subject: RDF.Term,\n private readonly predicate: Algebra.PropertyPathSymbol,\n private readonly graph: RDF.Term,\n private readonly context: IActionContext,\n private readonly mediatorQueryOperation: MediatorQueryOperation,\n emitFirstSubject: boolean,\n private readonly maxRunningOperations = 16,\n ) {\n // The autoStart flag must be true to kickstart metadata collection\n super({ autoStart: true });\n\n // Push the subject as starting point\n this._push(this.subject, emitFirstSubject);\n }\n\n protected override _end(destroy?: boolean): void {\n // Close all running iterators\n for (const it of this.runningOperations) {\n it.destroy();\n }\n\n super._end(destroy);\n }\n\n protected override _push(item: RDF.Term, pushAsResult = true): void {\n let termString;\n if (pushAsResult) {\n // Don't push if this subject was already found\n termString = termToString(item);\n if (this.termHashes.has(termString)) {\n return;\n }\n }\n\n // Add a pending path operation for this item\n const variable = DF.variable('b');\n this.pendingOperations.push({\n variable,\n operation: FACTORY.createPath(item, this.predicate, variable, this.graph),\n });\n\n // Otherwise, push the subject\n if (termString) {\n this.termHashes.set(termString, item);\n super._push(item);\n }\n }\n\n protected override _read(count: number, done: () => void): void {\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n (async function() {\n // Open as many operations as possible\n while (self.runningOperations.length < self.maxRunningOperations) {\n if (self.pendingOperations.length === 0) {\n break;\n }\n\n const pendingOperation = self.pendingOperations.pop()!;\n const results = ActorQueryOperation.getSafeBindings(\n await self.mediatorQueryOperation.mediate({ operation: pendingOperation.operation, context: self.context }),\n );\n const runningOperation = results.bindingsStream.transform({\n autoStart: false,\n transform(bindings, next, push) {\n const newTerm: RDF.Term = bindings.get(pendingOperation.variable)!;\n push(newTerm);\n next();\n },\n });\n if (!runningOperation.done) {\n self.runningOperations.push(runningOperation);\n runningOperation.on('error', error => self.destroy(error));\n runningOperation.on('readable', () => {\n self.readable = true;\n self._fillBufferAsync();\n });\n runningOperation.on('end', () => {\n self.runningOperations.splice(self.runningOperations.indexOf(runningOperation), 1);\n self.readable = true;\n self._fillBufferAsync();\n });\n }\n\n self.setProperty('metadata', results.metadata);\n }\n\n // Try to read `count` items (based on UnionIterator)\n let lastCount = 0;\n let item: RDF.Term | null;\n // eslint-disable-next-line no-cond-assign\n while (lastCount !== (lastCount = count)) {\n // Prioritize the operations that have been added first\n for (let i = 0; i < self.runningOperations.length && count > 0; i++) {\n // eslint-disable-next-line no-cond-assign\n if ((item = self.runningOperations[i].read()) !== null) {\n count--;\n self._push(item);\n }\n }\n }\n\n // Close if everything has been read\n if (self.runningOperations.length === 0 && self.pendingOperations.length === 0) {\n self.close();\n }\n })().then(() => {\n done();\n }, error => this.destroy(error));\n }\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica Convert Shortcuts Context Preprocess Actor.\n */\nexport class ActorContextPreprocessConvertShortcuts extends ActorContextPreprocess {\n public readonly contextKeyShortcuts: Record;\n\n public constructor(args: IActorContextPreprocessConvertShortcutsArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n return {\n context: ActorContextPreprocessConvertShortcuts.expandShortcuts(action.context, this.contextKeyShortcuts),\n };\n }\n\n public static expandShortcuts(context: IActionContext, contextKeyShortcuts: Record): IActionContext {\n for (const key of context.keys()) {\n if (contextKeyShortcuts[key.name]) {\n context = context\n .set(new ActionContextKey(contextKeyShortcuts[key.name]), context.get(key))\n .delete(key);\n }\n }\n return context;\n }\n}\n\nexport interface IActorContextPreprocessConvertShortcutsArgs extends IActorContextPreprocessArgs {\n /**\n * A record of context shortcuts to full context keys (as defined in @comunica/context-entries).\n * @range {json}\n * @default {{\n * \"sources\": \"@comunica/actor-init-query:querySourcesUnidentified\",\n * \"destination\": \"@comunica/bus-rdf-update-quads:destination\",\n * \"initialBindings\": \"@comunica/actor-init-query:initialBindings\",\n * \"queryFormat\": \"@comunica/actor-init-query:queryFormat\",\n * \"baseIRI\": \"@comunica/actor-init-query:baseIRI\",\n * \"log\": \"@comunica/core:log\",\n * \"datetime\": \"@comunica/actor-http-memento:datetime\",\n * \"queryTimestamp\": \"@comunica/actor-init-query:queryTimestamp\",\n * \"httpProxyHandler\": \"@comunica/actor-http-proxy:httpProxyHandler\",\n * \"lenient\": \"@comunica/actor-init-query:lenient\",\n * \"httpIncludeCredentials\": \"@comunica/bus-http:include-credentials\",\n * \"httpAuth\": \"@comunica/bus-http:auth\",\n * \"httpTimeout\": \"@comunica/bus-http:http-timeout\",\n * \"httpBodyTimeout\": \"@comunica/bus-http:http-body-timeout\",\n * \"httpRetryCount\": \"@comunica/bus-http:http-retry-count\",\n * \"httpRetryDelay\": \"@comunica/bus-http:http-retry-delay\",\n * \"httpRetryOnServerError\": \"@comunica/bus-http:http-retry-on-server-error\",\n * \"fetch\": \"@comunica/bus-http:fetch\",\n * \"recoverBrokenLinks\": \"@comunica/bus-http-wayback:recover-broken-links\",\n * \"readOnly\": \"@comunica/bus-query-operation:readOnly\",\n * \"extensionFunctions\": \"@comunica/actor-init-query:extensionFunctions\",\n * \"extensionFunctionCreator\": \"@comunica/actor-init-query:extensionFunctionCreator\",\n * \"functionArgumentsCache\": \"@comunica/actor-init-query:functionArgumentsCache\",\n * \"explain\": \"@comunica/actor-init-query:explain\",\n * \"unionDefaultGraph\": \"@comunica/bus-query-operation:unionDefaultGraph\",\n * \"traverse\": \"@comunica/bus-query-source-identify:traverse\",\n * \"noCache\": \"@comunica/actor-init-query:noCache\",\n * \"distinctConstruct\": \"@comunica/actor-init-query:distinctConstruct\"\n * }}\n */\n contextKeyShortcuts: Record;\n}\n","import type {\n IActorContextPreprocessOutput,\n IActorContextPreprocessArgs,\n MediatorContextPreprocess,\n} from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { ActorHttpInvalidateListenable, IActionHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport { KeysInitQuery, KeysQueryOperation, KeysStatistics }\n from '@comunica/context-entries';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport { ActionContext } from '@comunica/core';\nimport type {\n ILink,\n IQuerySourceWrapper,\n QuerySourceUnidentified,\n QuerySourceUnidentifiedExpanded,\n IActionContext,\n IQuerySourceUnidentifiedExpanded,\n IStatisticBase,\n} from '@comunica/types';\nimport { LRUCache } from 'lru-cache';\n\n/**\n * A comunica Query Source Identify Context Preprocess Actor.\n */\nexport class ActorContextPreprocessQuerySourceIdentify extends ActorContextPreprocess {\n public readonly cacheSize: number;\n public readonly httpInvalidator: ActorHttpInvalidateListenable;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly cache?: LRUCache>;\n\n public constructor(args: IActorContextPreprocessQuerySourceIdentifyArgs) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(\n ({ url }: IActionHttpInvalidate) => url ? cache.delete(url) : cache.clear(),\n );\n }\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n let context = action.context;\n\n // Rewrite sources\n if (context.has(KeysInitQuery.querySourcesUnidentified)) {\n const querySourcesUnidentified: QuerySourceUnidentified[] = action.context\n .get(KeysInitQuery.querySourcesUnidentified)!;\n const querySourcesUnidentifiedExpanded = await Promise.all(querySourcesUnidentified\n .map(querySource => this.expandSource(querySource)));\n const querySources: IQuerySourceWrapper[] = await Promise.all(querySourcesUnidentifiedExpanded\n .map(async querySourceUnidentified => this.identifySource(querySourceUnidentified, action.context)));\n\n // When identifying sources in preprocess actor, we record this as a dereference seed document event\n const statisticDereferenceLinks: IStatisticBase | undefined = action.context\n .get(KeysStatistics.dereferencedLinks);\n if (statisticDereferenceLinks) {\n for (const querySource of querySources) {\n statisticDereferenceLinks.updateStatistic({\n url: querySource.source.referenceValue,\n metadata: {\n seed: true,\n },\n }, querySource.source);\n }\n }\n\n context = action.context\n .delete(KeysInitQuery.querySourcesUnidentified)\n .set(KeysQueryOperation.querySources, querySources);\n }\n\n return { context };\n }\n\n public async expandSource(querySource: QuerySourceUnidentified): Promise {\n if (typeof querySource === 'string' || 'match' in querySource) {\n return { value: querySource };\n }\n return {\n ...>querySource,\n context: (await this.mediatorContextPreprocess.mediate({\n context: ActionContext.ensureActionContext(querySource.context ?? {}),\n })).context,\n };\n }\n\n public identifySource(\n querySourceUnidentified: QuerySourceUnidentifiedExpanded,\n context: IActionContext,\n ): Promise {\n let sourcePromise: Promise | undefined;\n\n // Try to read from cache\n // Only sources based on string values (e.g. URLs) are supported!\n if (typeof querySourceUnidentified.value === 'string' && this.cache) {\n sourcePromise = this.cache.get(querySourceUnidentified.value)!;\n }\n\n // If not in cache, identify the source\n if (!sourcePromise) {\n sourcePromise = this.mediatorQuerySourceIdentify.mediate({ querySourceUnidentified, context })\n .then(({ querySource }) => querySource);\n\n // Set in cache\n if (typeof querySourceUnidentified.value === 'string' && this.cache) {\n this.cache.set(querySourceUnidentified.value, sourcePromise);\n }\n }\n\n return sourcePromise;\n }\n}\n\nexport interface IActorContextPreprocessQuerySourceIdentifyArgs extends IActorContextPreprocessArgs {\n /**\n * The maximum number of entries in the LRU cache, set to 0 to disable.\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n /* eslint-disable max-len */\n /**\n * An actor that listens to HTTP invalidation events\n * @default { a }\n */\n httpInvalidator: ActorHttpInvalidateListenable;\n /* eslint-enable max-len */\n /**\n * Mediator for identifying query sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysQueryOperation, KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IActorTest, IAction } from '@comunica/core';\nimport type { IQuerySourceWrapper, QuerySourceReference } from '@comunica/types';\nimport { QuerySourceSkolemized } from './QuerySourceSkolemized';\nimport { getSourceId } from './utils';\n\n/**\n * A comunica Query Source Skolemize Context Preprocess Actor.\n */\nexport class ActorContextPreprocessQuerySourceSkolemize extends ActorContextPreprocess {\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n let context = action.context;\n\n // Wrap sources in skolemized sources\n if (context.has(KeysQueryOperation.querySources)) {\n // Determine map of source id's\n if (!context.has(KeysQuerySourceIdentify.sourceIds)) {\n context = context.set(KeysQuerySourceIdentify.sourceIds, new Map());\n }\n const sourceIds: Map = context.getSafe(KeysQuerySourceIdentify.sourceIds);\n\n let sources: IQuerySourceWrapper[] = context.getSafe(KeysQueryOperation.querySources);\n sources = sources.map(sourceWrapper => ({\n source: new QuerySourceSkolemized(sourceWrapper.source, getSourceId(sourceIds, sourceWrapper.source)),\n context: sourceWrapper.context,\n }));\n context = context.set(KeysQueryOperation.querySources, sources);\n }\n\n return { context };\n }\n}\n","import { MetadataValidationState } from '@comunica/metadata';\nimport type {\n BindingsStream,\n FragmentSelectorShape,\n IActionContext,\n IQueryBindingsOptions,\n IQuerySource,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { deskolemizeOperation, skolemizeBindingsStream, skolemizeQuadStream } from './utils';\n\n/**\n * A IQuerySource wrapper that skolemizes outgoing quads and bindings.\n */\nexport class QuerySourceSkolemized implements IQuerySource {\n /**\n * The query source to wrap over.\n */\n public readonly innerSource: IQuerySource;\n /**\n * ID of the inner source, see KeysQuerySourceIdentify.sourceIds.\n */\n public readonly sourceId: string;\n\n public constructor(innerSource: IQuerySource, sourceId: string) {\n this.innerSource = innerSource;\n this.sourceId = sourceId;\n }\n\n public async getSelectorShape(context: IActionContext): Promise {\n return this.innerSource.getSelectorShape(context);\n }\n\n public queryBindings(\n operation: Algebra.Operation,\n context: IActionContext,\n options: IQueryBindingsOptions | undefined,\n ): BindingsStream {\n const operationMapped = deskolemizeOperation(operation, this.sourceId);\n if (!operationMapped) {\n const it: BindingsStream = new ArrayIterator([], { autoStart: false });\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: [],\n });\n return it;\n }\n return skolemizeBindingsStream(this.innerSource.queryBindings(operationMapped, context, options), this.sourceId);\n }\n\n public queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise {\n return this.innerSource.queryBoolean(operation, context);\n }\n\n public queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator {\n const operationMapped = deskolemizeOperation(operation, this.sourceId);\n if (!operationMapped) {\n const it: AsyncIterator = new ArrayIterator([], { autoStart: false });\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n });\n return it;\n }\n return skolemizeQuadStream(this.innerSource.queryQuads(operationMapped, context), this.sourceId);\n }\n\n public queryVoid(operation: Algebra.Update, context: IActionContext): Promise {\n return this.innerSource.queryVoid(operation, context);\n }\n\n public get referenceValue(): string | RDF.Source {\n return this.innerSource.referenceValue;\n }\n\n public toString(): string {\n return `${this.innerSource.toString()}(SkolemID:${this.sourceId})`;\n }\n}\n","import { BlankNodeScoped } from '@comunica/data-factory';\nimport type {\n BindingsStream,\n IQuerySource,\n MetadataBindings,\n MetadataQuads,\n QuerySourceReference,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { mapTermsNested } from 'rdf-terms';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\nexport const SKOLEM_PREFIX = 'urn:comunica_skolem:source_';\n\n/**\n * Get the unique, deterministic id for the given source.\n * @param sourceIds ID's of datasources, see KeysRdfResolveQuadPattern.sourceIds.\n * @param source A data source.\n * @return The id of the given source.\n */\nexport function getSourceId(sourceIds: Map, source: IQuerySource): string {\n let sourceId = sourceIds.get(source.referenceValue);\n if (sourceId === undefined) {\n sourceId = `${sourceIds.size}`;\n sourceIds.set(source.referenceValue, sourceId);\n }\n return sourceId;\n}\n\n/**\n * If the given term is a blank node, return a deterministic named node for it\n * based on the source id and the blank node value.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n * @return If the given term was a blank node, this will return a skolemized named node, otherwise the original term.\n */\nexport function skolemizeTerm(term: RDF.Term, sourceId: string): RDF.Term | BlankNodeScoped {\n if (term.termType === 'BlankNode') {\n return new BlankNodeScoped(`bc_${sourceId}_${term.value}`, DF.namedNode(`${SKOLEM_PREFIX}${sourceId}:${term.value}`));\n }\n return term;\n}\n\n/**\n * Skolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The skolemized quad.\n */\nexport function skolemizeQuad(quad: Q, sourceId: string): Q {\n return mapTermsNested(quad, term => skolemizeTerm(term, sourceId));\n}\n\n/**\n * Skolemize all terms in the given bindings.\n * @param bindings An RDF bindings object.\n * @param sourceId A source identifier.\n * @return The skolemized bindings.\n */\nexport function skolemizeBindings(bindings: RDF.Bindings, sourceId: string): RDF.Bindings {\n return bindings.map((term) => {\n if (term.termType === 'Quad') {\n return skolemizeQuad(term, sourceId);\n }\n return skolemizeTerm(term, sourceId);\n });\n}\n\n/**\n * Skolemize all terms in the given quad stream.\n * @param iterator An RDF quad stream.\n * @param sourceId A source identifier.\n * @return The skolemized quad stream.\n */\nexport function skolemizeQuadStream(iterator: AsyncIterator, sourceId: string): AsyncIterator {\n const ret = iterator.map(quad => skolemizeQuad(quad, sourceId));\n function inheritMetadata(): void {\n iterator.getProperty('metadata', (metadata: MetadataQuads) => {\n ret.setProperty('metadata', metadata);\n metadata.state.addInvalidateListener(inheritMetadata);\n });\n }\n inheritMetadata();\n return ret;\n}\n\n/**\n * Skolemize all terms in the given bindings stream.\n * @param iterator An RDF bindings stream.\n * @param sourceId A source identifier.\n * @return The skolemized bindings stream.\n */\nexport function skolemizeBindingsStream(iterator: BindingsStream, sourceId: string): BindingsStream {\n const ret = iterator.map(bindings => skolemizeBindings(bindings, sourceId));\n function inheritMetadata(): void {\n iterator.getProperty('metadata', (metadata: MetadataBindings) => {\n ret.setProperty('metadata', metadata);\n metadata.state.addInvalidateListener(inheritMetadata);\n });\n }\n inheritMetadata();\n return ret;\n}\n\n/**\n * If a given term was a skolemized named node for the given source id,\n * deskolemize it again to a blank node.\n * If the given term was a skolemized named node for another source, return false.\n * If the given term was not a skolemized named node, return the original term.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n */\nexport function deskolemizeTerm(term: RDF.Term, sourceId: string): RDF.Term | null {\n if (term.termType === 'BlankNode' && 'skolemized' in term) {\n term = ( term).skolemized;\n }\n if (term.termType === 'NamedNode' && term.value.startsWith(SKOLEM_PREFIX)) {\n const colonSeparator = term.value.indexOf(':', SKOLEM_PREFIX.length);\n const termSourceId = term.value.slice(SKOLEM_PREFIX.length, colonSeparator);\n // We had a skolemized term\n if (termSourceId === sourceId) {\n // It came from the correct source\n const termLabel = term.value.slice(colonSeparator + 1, term.value.length);\n return DF.blankNode(termLabel);\n }\n // It came from a different source\n return null;\n }\n return term;\n}\n\nexport function deskolemizeTermNestedThrowing(term: RDF.Term, sourceId: string): RDF.Term {\n if (term.termType === 'Quad') {\n return mapTermsNested(term, (subTerm) => {\n const deskolemized = deskolemizeTerm(subTerm, sourceId);\n if (!deskolemized) {\n throw new Error(`Skolemized term is not in scope for this source`);\n }\n return deskolemized;\n });\n }\n const ret = deskolemizeTerm(term, sourceId);\n if (ret === null) {\n throw new Error(`Skolemized term is not in scope for this source`);\n }\n return ret;\n}\n\n/**\n * Deskolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The deskolemized quad.\n */\nexport function deskolemizeQuad(quad: Q, sourceId: string): Q {\n return mapTermsNested(quad, (term: RDF.Term): RDF.Term => {\n const newTerm = deskolemizeTerm(term, sourceId);\n // If the term was skolemized in a different source then don't deskolemize it\n return newTerm ?? term;\n });\n}\n\n/**\n * Deskolemize all terms in the given quad.\n * Will return undefined if there is at least one blank node not in scope for this sourceId.\n * @param operation An algebra operation.\n * @param sourceId A source identifier.\n */\nexport function deskolemizeOperation(operation: O, sourceId: string): O | undefined {\n try {\n return Util.mapOperation(operation, {\n [Algebra.types.PATTERN](op, factory) {\n return {\n result: Object.assign(factory.createPattern(\n deskolemizeTermNestedThrowing(op.subject, sourceId),\n deskolemizeTermNestedThrowing(op.predicate, sourceId),\n deskolemizeTermNestedThrowing(op.object, sourceId),\n deskolemizeTermNestedThrowing(op.graph, sourceId),\n ), { metadata: op.metadata }),\n recurse: false,\n };\n },\n [Algebra.types.PATH](op, factory) {\n return {\n result: Object.assign(factory.createPath(\n deskolemizeTermNestedThrowing(op.subject, sourceId),\n op.predicate,\n deskolemizeTermNestedThrowing(op.object, sourceId),\n deskolemizeTermNestedThrowing(op.graph, sourceId),\n ), { metadata: op.metadata }),\n recurse: false,\n };\n },\n });\n } catch {\n // Return undefined for skolemized terms not in scope for this source\n }\n}\n","import type {\n IActorContextPreprocessOutput,\n IActorContextPreprocessArgs,\n IActionContextPreprocess,\n} from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysCore, KeysInitQuery, KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport type { FunctionArgumentsCache, Logger } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica Set Defaults Context Preprocess Actor.\n */\nexport class ActorContextPreprocessSetDefaults extends ActorContextPreprocess {\n private readonly defaultFunctionArgumentsCache: FunctionArgumentsCache;\n public readonly logger: Logger;\n\n public constructor(args: IActorContextPreprocessSetDefaultsArgs) {\n super(args);\n this.defaultFunctionArgumentsCache = {};\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IActionContextPreprocess): Promise {\n let context = action.context;\n\n if (action.initialize) {\n // Set default values\n context = context\n .setDefault(KeysInitQuery.queryTimestamp, new Date())\n .setDefault(KeysQuerySourceIdentify.sourceIds, new Map())\n .setDefault(KeysCore.log, this.logger)\n .setDefault(KeysInitQuery.functionArgumentsCache, this.defaultFunctionArgumentsCache)\n .setDefault(KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores, new Map());\n\n // Handle default query format\n let queryFormat: RDF.QueryFormat = { language: 'sparql', version: '1.1' };\n if (context.has(KeysInitQuery.queryFormat)) {\n queryFormat = context.get(KeysInitQuery.queryFormat)!;\n if (queryFormat.language === 'graphql') {\n context = context.setDefault(KeysInitQuery.graphqlSingularizeVariables, {});\n }\n } else {\n context = context.set(KeysInitQuery.queryFormat, queryFormat);\n }\n }\n\n return { context };\n }\n}\n\nexport interface IActorContextPreprocessSetDefaultsArgs extends IActorContextPreprocessArgs {\n /**\n * The logger of this actor\n * @default {a }\n */\n logger: Logger;\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysInitQuery, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest, IAction } from '@comunica/core';\nimport type { QuerySourceUnidentified } from '@comunica/types';\n\n/**\n * A comunica Source To Destination Context Preprocess Actor.\n */\nexport class ActorContextPreprocessSourceToDestination extends ActorContextPreprocess {\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n if (action.context.get(KeysInitQuery.querySourcesUnidentified) &&\n !action.context.get(KeysRdfUpdateQuads.destination)) {\n const sources: QuerySourceUnidentified[] = action.context.get(KeysInitQuery.querySourcesUnidentified)!;\n if (sources.length === 1) {\n return { context: action.context.set(KeysRdfUpdateQuads.destination, sources[0]) };\n }\n }\n return action;\n }\n}\n","import type { IActionHashBindings, IActorHashBindingsOutput } from '@comunica/bus-hash-bindings';\nimport { ActorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { IActorTest } from '@comunica/core';\nimport { sha1 } from 'hash.js';\nimport { termToString } from 'rdf-string';\n\n// eslint-disable-next-line ts/no-require-imports,ts/no-var-requires\nconst canonicalize = require('canonicalize');\n\n/**\n * A comunica Memento Http Actor.\n */\nexport class ActorHashBindingsSha1 extends ActorHashBindings {\n public async test(action: IActionHashBindings): Promise {\n if (!action.allowHashCollisions) {\n throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);\n }\n return true;\n }\n\n public async run(_action: IActionHashBindings): Promise {\n return {\n hashFunction: bindings => sha1()\n .update(canonicalize(Object.fromEntries([ ...bindings ]\n .map(([ key, value ]) => [ termToString(key), termToString(value) ]))))\n .digest('hex'),\n hashCollisions: true,\n };\n }\n}\n","import type { IActionHashQuads, IActorHashQuadsOutput } from '@comunica/bus-hash-quads';\nimport { ActorHashQuads } from '@comunica/bus-hash-quads';\nimport type { IActorTest } from '@comunica/core';\nimport { sha1 } from 'hash.js';\nimport { quadToStringQuad } from 'rdf-string';\n\n/**\n * A comunica Memento Http Actor.\n */\nexport class ActorHashQuadsSha1 extends ActorHashQuads {\n public async test(action: IActionHashQuads): Promise {\n if (!action.allowHashCollisions) {\n throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);\n }\n return true;\n }\n\n public async run(_action: IActionHashQuads): Promise {\n return {\n hashFunction: quad => sha1()\n .update(JSON.stringify(quadToStringQuad(quad)))\n .digest('hex'),\n hashCollisions: true,\n };\n }\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nimport { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/* istanbul ignore next */\nif (typeof process === 'undefined') {\n // Polyfills process.nextTick for readable-stream\n globalThis.process = require('process/');\n}\n\nexport class ActorInitQuery extends ActorInitQueryBase {}\n","import type { MediatorHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { IActionInit, IActorInitArgs, IActorOutputInit } from '@comunica/bus-init';\nimport { ActorInit } from '@comunica/bus-init';\nimport type { MediatorQueryProcess } from '@comunica/bus-query-process';\nimport type {\n MediatorQueryResultSerializeHandle,\n MediatorQueryResultSerializeMediaTypes,\n MediatorQueryResultSerializeMediaTypeFormats,\n} from '@comunica/bus-query-result-serialize';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A browser-safe comunica Query Init Actor.\n */\nexport class ActorInitQueryBase extends ActorInit implements IActorInitQueryBaseArgs {\n public readonly mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n public readonly mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n public readonly mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n public readonly mediatorHttpInvalidate: MediatorHttpInvalidate;\n public readonly mediatorQueryProcess: MediatorQueryProcess;\n\n public readonly queryString?: string;\n public readonly defaultQueryInputFormat?: string;\n public readonly allowNoSources?: boolean;\n public readonly context?: string;\n\n public async test(_action: IActionInit): Promise {\n return true;\n }\n\n public async run(_action: IActionInit): Promise {\n throw new Error('ActorInitSparql#run is not supported in the browser.');\n }\n}\n\nexport interface IActorInitQueryBaseArgs extends IActorInitArgs {\n /**\n * The query process mediator\n */\n mediatorQueryProcess: MediatorQueryProcess;\n /**\n * The query serialize mediator\n */\n mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n /**\n * The query serialize media type combinator\n */\n mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n /**\n * The query serialize media type format combinator\n */\n mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n /**\n * The HTTP cache invalidation mediator\n */\n mediatorHttpInvalidate: MediatorHttpInvalidate;\n\n /**\n * A SPARQL query string\n */\n queryString?: string;\n /**\n * The default query input format\n * @default {sparql}\n */\n defaultQueryInputFormat?: string;\n /**\n * If it should be allowed that the user passes no sources.\n * @default {false}\n */\n allowNoSources?: boolean;\n /**\n * A JSON string of a query operation context\n */\n context?: string;\n}\n","import type { IActionSparqlSerialize, IActorQueryResultSerializeOutput } from '@comunica/bus-query-result-serialize';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryEngine,\n IQueryExplained,\n QueryFormatType,\n QueryType,\n QueryExplainMode,\n BindingsStream,\n QueryAlgebraContext,\n QueryStringContext,\n IQueryBindingsEnhanced,\n IQueryQuadsEnhanced,\n QueryEnhanced,\n IQueryContextCommon,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/**\n * Base implementation of a Comunica query engine.\n */\nexport class QueryEngineBase<\n // eslint-disable-next-line unused-imports/no-unused-vars\n QueryContext extends IQueryContextCommon = IQueryContextCommon,\n QueryStringContextInner extends RDF.QueryStringContext = QueryStringContext,\n QueryAlgebraContextInner extends RDF.QueryAlgebraContext = QueryAlgebraContext,\n>\nimplements IQueryEngine {\n private readonly actorInitQuery: ActorInitQueryBase;\n\n public constructor(actorInitQuery: ActorInitQueryBase) {\n this.actorInitQuery = actorInitQuery;\n }\n\n public async queryBindings(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'bindings');\n }\n\n public async queryQuads(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise & RDF.ResultStream> {\n return this.queryOfType(query, context, 'quads');\n }\n\n public async queryBoolean(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'boolean');\n }\n\n public async queryVoid(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'void');\n }\n\n protected async queryOfType(\n query: QueryFormatTypeInner,\n context: undefined | (QueryFormatTypeInner extends string ?\n QueryStringContextInner : QueryAlgebraContextInner),\n expectedType: QueryTypeOut['resultType'],\n ): Promise> {\n const result = await this.query(query, context);\n if (result.resultType === expectedType) {\n return > await result.execute();\n }\n throw new Error(`Query result type '${expectedType}' was expected, while '${result.resultType}' was found.`);\n }\n\n /**\n * Evaluate the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to the query output.\n */\n public async query(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n const output = await this.queryOrExplain(query, context);\n if ('explain' in output) {\n throw new Error(`Tried to explain a query when in query-only mode`);\n }\n return output;\n }\n\n /**\n * Explain the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @param explainMode The explain mode.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n public async explain(\n query: QueryFormatTypeInner,\n context: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n explainMode: QueryExplainMode,\n ): Promise {\n context.explain = explainMode;\n const output = await this.queryOrExplain(query, context);\n return output;\n }\n\n /**\n * Evaluate or explain the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n public async queryOrExplain(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n const actionContext: IActionContext = ActionContext.ensureActionContext(context);\n\n // Invalidate caches if cache argument is set to false\n if (actionContext.get(KeysInitQuery.noCache)) {\n await this.invalidateHttpCache();\n }\n\n // Invoke query process\n const { result } = await this.actorInitQuery.mediatorQueryProcess.mediate({ query, context: actionContext });\n if ('explain' in result) {\n return result;\n }\n return QueryEngineBase.internalToFinalResult(result);\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL (weighted) result media types.\n */\n public async getResultMediaTypes(context?: any): Promise> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeCombiner\n .mediate({ context, mediaTypes: true })).mediaTypes;\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL result media type formats.\n */\n public async getResultMediaTypeFormats(context?: any): Promise> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeFormatCombiner\n .mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n\n /**\n * Convert a query result to a string stream based on a certain media type.\n * @param {IQueryOperationResult} queryResult A query result.\n * @param {string} mediaType A media type.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A text stream.\n */\n public async resultToString(queryResult: RDF.Query, mediaType?: string, context?: any):\n Promise {\n context = ActionContext.ensureActionContext(context);\n if (!mediaType) {\n switch (queryResult.resultType) {\n case 'bindings':\n mediaType = 'application/json';\n break;\n case 'quads':\n mediaType = 'application/trig';\n break;\n default:\n mediaType = 'simple';\n break;\n }\n }\n const handle: IActionSparqlSerialize = { ...await QueryEngineBase.finalToInternalResult(queryResult), context };\n return (await this.actorInitQuery.mediatorQueryResultSerialize\n .mediate({ context, handle, handleMediaType: mediaType })).handle;\n }\n\n /**\n * Invalidate all internal caches related to the given page URL.\n * If no page URL is given, then all pages will be invalidated.\n * @param {string} url The page URL to invalidate.\n * @param context An optional ActionContext to pass to the actors.\n * @return {Promise} A promise resolving when the caches have been invalidated.\n */\n public invalidateHttpCache(url?: string, context?: any): Promise {\n context = ActionContext.ensureActionContext(context);\n return this.actorInitQuery.mediatorHttpInvalidate.mediate({ url, context });\n }\n\n /**\n * Convert an internal query result to a final one.\n * @param internalResult An intermediary query result.\n */\n public static internalToFinalResult(internalResult: IQueryOperationResult): QueryType {\n switch (internalResult.type) {\n case 'bindings':\n return {\n resultType: 'bindings',\n execute: async() => internalResult.bindingsStream,\n metadata: async() => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'quads':\n return {\n resultType: 'quads',\n execute: async() => internalResult.quadStream,\n metadata: async() => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'boolean':\n return {\n resultType: 'boolean',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n case 'void':\n return {\n resultType: 'void',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n }\n }\n\n /**\n * Convert a final query result to an internal one.\n * @param finalResult A final query result.\n */\n public static async finalToInternalResult(finalResult: RDF.Query): Promise {\n switch (finalResult.resultType) {\n case 'bindings':\n return {\n type: 'bindings',\n bindingsStream: await finalResult.execute(),\n metadata: async() => await finalResult.metadata(),\n };\n case 'quads':\n return {\n type: 'quads',\n quadStream: > await finalResult.execute(),\n metadata: async() => await finalResult.metadata(),\n };\n case 'boolean':\n return {\n type: 'boolean',\n execute: () => finalResult.execute(),\n };\n case 'void':\n return {\n type: 'void',\n execute: () => finalResult.execute(),\n };\n }\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { getDataDestinationValue } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery, KeysQueryOperation, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IDataDestination, IQuerySourceWrapper } from '@comunica/types';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Assign Sources Exhaustive Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationAssignSourcesExhaustive extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const sources: IQuerySourceWrapper[] = action.context.get(KeysQueryOperation.querySources) ?? [];\n if (sources.length === 0) {\n return { operation: action.operation, context: action.context };\n }\n if (sources.length === 1) {\n const sourceWrapper = sources[0];\n const destination: IDataDestination | undefined = action.context.get(KeysRdfUpdateQuads.destination);\n if (!destination || sourceWrapper.source.referenceValue === getDataDestinationValue(destination)) {\n try {\n const shape = await sourceWrapper.source.getSelectorShape(action.context);\n if (ActorQueryOperation.doesShapeAcceptOperation(shape, action.operation)) {\n return {\n operation: ActorQueryOperation.assignOperationSource(action.operation, sourceWrapper),\n context: action.context,\n };\n }\n } catch {\n // Fallback to the default case when the selector shape does not exist,\n // which can occur for a non-existent destination.\n }\n }\n }\n return {\n operation: this.assignExhaustive(action.operation, sources),\n // We only keep queryString in the context if we only have a single source that accepts the full operation.\n // In that case, the queryString can be sent to the source as-is.\n context: action.context\n .delete(KeysInitQuery.queryString),\n };\n }\n\n /**\n * Assign the given sources to the leaves in the given query operation.\n * Leaves will be wrapped in a union operation and duplicated for every source.\n * The input operation will not be modified.\n * @param operation The input operation.\n * @param sources The sources to assign.\n */\n public assignExhaustive(operation: Algebra.Operation, sources: IQuerySourceWrapper[]): Algebra.Operation {\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n return Util.mapOperation(operation, {\n [Algebra.types.PATTERN](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createUnion(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.LINK](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.NPS](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.SERVICE](subOperation) {\n return {\n result: subOperation,\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT](subOperation, factory) {\n return {\n result: factory.createConstruct(\n self.assignExhaustive(subOperation.input, sources),\n subOperation.template,\n ),\n recurse: false,\n };\n },\n [Algebra.types.DELETE_INSERT](subOperation, factory) {\n return {\n result: factory.createDeleteInsert(\n subOperation.delete,\n subOperation.insert,\n subOperation.where ? self.assignExhaustive(subOperation.where, sources) : undefined,\n ),\n recurse: false,\n };\n },\n });\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica BGP to Join Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationBgpToJoin extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n bgp(op: Algebra.Bgp, factory: Factory) {\n return {\n recurse: false,\n result: factory.createJoin(op.patterns),\n };\n },\n });\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries/lib/Keys';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Construct Distinct Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationConstructDistinct extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (!action.context.has(KeysInitQuery.distinctConstruct)) {\n throw new Error(`${this.name} was not enabled by the query.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n construct(op: Algebra.Construct, factory: Factory) {\n return {\n recurse: false,\n result: factory.createDistinct(factory.createConstruct(op.input, op.template)),\n };\n },\n });\n return { operation, context: action.context.delete(KeysInitQuery.distinctConstruct) };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\nconst AF = new Factory();\n\n/**\n * A comunica Describe To Constructs Subject Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationDescribeToConstructsSubject extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (action.operation.type !== Algebra.types.DESCRIBE) {\n throw new Error(`Actor ${this.name} only supports describe operations, but got ${action.operation.type}`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operationOriginal: Algebra.Describe = action.operation;\n\n // Create separate construct queries for all non-variable terms\n const operations: Algebra.Construct[] = operationOriginal.terms\n .filter(term => term.termType !== 'Variable')\n .map((term: RDF.Term) => {\n // Transform each term to a separate construct operation with S ?p ?o patterns (BGP) for all terms\n const patterns: RDF.BaseQuad[] = [\n DF.quad(term, DF.variable('__predicate'), DF.variable('__object')),\n ];\n\n // eslint-disable-next-line unicorn/no-array-for-each\n patterns.forEach((templatePattern: any) => templatePattern.type = 'pattern');\n const templateOperation: Algebra.Operation = {\n type: Algebra.types.BGP,\n patterns: patterns,\n };\n\n // Create a construct query\n return {\n input: templateOperation,\n template: patterns,\n type: 'construct',\n };\n });\n\n // If we have variables in the term list,\n // create one separate construct operation to determine these variables using the input pattern.\n if (operations.length !== operationOriginal.terms.length) {\n let variablePatterns: Algebra.Pattern[] = [];\n operationOriginal.terms\n .filter(term => term.termType === 'Variable')\n // eslint-disable-next-line unicorn/no-array-for-each\n .forEach((term: RDF.Term, i: number) => {\n // Transform each term to an S ?p ?o pattern in a non-conflicting way\n const patterns: RDF.BaseQuad[] = [\n DF.quad(term, DF.variable(`__predicate${i}`), DF.variable(`__object${i}`)),\n ];\n\n // eslint-disable-next-line unicorn/no-array-for-each\n patterns.forEach((templatePattern: any) => templatePattern.type = 'pattern');\n variablePatterns = [ ...variablePatterns, ... patterns ];\n });\n\n // Add a single construct for the variables\n // This requires a join between the input pattern and our variable patterns that form a simple BGP\n operations.push({\n input: {\n type: Algebra.types.JOIN,\n input: [\n operationOriginal.input,\n { type: Algebra.types.BGP, patterns: variablePatterns },\n ],\n },\n template: variablePatterns,\n type: Algebra.types.CONSTRUCT,\n });\n }\n\n // Union the construct operations\n const operation = AF.createUnion(operations, false);\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationArgs,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { FragmentSelectorShape, IActionContext, IQuerySourceWrapper } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { mapTermsNested, uniqTerms } from 'rdf-terms';\nimport type { Factory } from 'sparqlalgebrajs';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Filter Pushdown Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationFilterPushdown extends ActorOptimizeQueryOperation {\n private readonly aggressivePushdown: boolean;\n private readonly maxIterations: number;\n private readonly splitConjunctive: boolean;\n private readonly mergeConjunctive: boolean;\n private readonly pushIntoLeftJoins: boolean;\n private readonly pushEqualityIntoPatterns: boolean;\n\n public constructor(args: IActorOptimizeQueryOperationFilterPushdownArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n let operation: Algebra.Operation = action.operation;\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n\n // Split conjunctive filters into nested filters\n if (this.splitConjunctive) {\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n // Split conjunctive filters into separate filters\n if (op.expression.expressionType === Algebra.expressionTypes.OPERATOR && op.expression.operator === '&&') {\n self.logDebug(action.context, `Split conjunctive filter into ${op.expression.args.length} nested filters`);\n return {\n recurse: true,\n result: op.expression.args\n .reduce((operation, expression) => factory.createFilter(operation, expression), op.input),\n };\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n }\n\n // Collect selector shapes of all operations\n const sources = this.getSources(operation);\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n const sourceShapes = new Map(<[IQuerySourceWrapper, FragmentSelectorShape][]> await Promise.all(sources\n .map(async source => [ source, await source.source.getSelectorShape(action.context) ])));\n\n // Push down all filters\n // We loop until no more filters can be pushed down.\n let repeat = true;\n let iterations = 0;\n while (repeat && iterations < this.maxIterations) {\n repeat = false;\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n // Check if the filter must be pushed down\n if (!self.shouldAttemptPushDown(op, sources, sourceShapes)) {\n return {\n recurse: true,\n result: op,\n };\n }\n\n // For all filter expressions in the operation,\n // we attempt to push them down as deep as possible into the algebra.\n const variables = self.getExpressionVariables(op.expression);\n const [ isModified, result ] = self\n .filterPushdown(op.expression, variables, op.input, factory, action.context);\n if (isModified) {\n repeat = true;\n }\n return {\n recurse: true,\n result,\n };\n },\n });\n iterations++;\n }\n\n if (iterations > 1) {\n self.logDebug(action.context, `Pushed down filters in ${iterations} iterations`);\n }\n\n // Merge nested filters into conjunctive filters\n if (this.mergeConjunctive) {\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n if (op.input.type === Algebra.types.FILTER) {\n const { nestedExpressions, input } = self.getNestedFilterExpressions(op);\n self.logDebug(action.context, `Merge ${nestedExpressions.length} nested filters into conjunctive filter`);\n return {\n recurse: true,\n result: factory.createFilter(\n input,\n nestedExpressions.slice(1).reduce((previous, current) =>\n factory.createOperatorExpression('&&', [ previous, current ]), nestedExpressions[0]),\n ),\n };\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n }\n\n return { operation, context: action.context };\n }\n\n /**\n * Check if the given filter operation must be attempted to push down, based on the following criteria:\n * - Always push down if aggressive mode is enabled\n * - Push down if the filter is extremely selective\n * - Push down if federated and at least one accepts the filter\n * @param operation The filter operation\n * @param sources The query sources in the operation\n * @param sourceShapes A mapping of sources to selector shapes.\n */\n public shouldAttemptPushDown(\n operation: Algebra.Filter,\n sources: IQuerySourceWrapper[],\n sourceShapes: Map,\n ): boolean {\n // Always push down if aggressive mode is enabled\n if (this.aggressivePushdown) {\n return true;\n }\n\n // Push down if the filter is extremely selective\n const expression = operation.expression;\n if (expression.expressionType === Algebra.expressionTypes.OPERATOR &&\n expression.operator === '=' &&\n ((expression.args[0].expressionType === 'term' && expression.args[0].term.termType !== 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType === 'Variable') ||\n (expression.args[0].expressionType === 'term' && expression.args[0].term.termType === 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType !== 'Variable'))) {\n return true;\n }\n\n // Push down if federated and at least one accepts the filter\n if (sources.some(source => ActorQueryOperation.doesShapeAcceptOperation(sourceShapes.get(source)!, operation))) {\n return true;\n }\n\n // Don't push down in all other cases\n return false;\n }\n\n /**\n * Collected all sources that are defined within the given operation of children recursively.\n * @param operation An operation.\n */\n public getSources(operation: Algebra.Operation): IQuerySourceWrapper[] {\n const sources = new Set();\n const sourceAdder = (subOperation: Algebra.Operation): boolean => {\n const src = ActorQueryOperation.getOperationSource(subOperation);\n if (src) {\n sources.add(src);\n }\n return false;\n };\n Util.recurseOperation(operation, {\n [Algebra.types.PATTERN]: sourceAdder,\n [Algebra.types.LINK]: sourceAdder,\n [Algebra.types.NPS]: sourceAdder,\n [Algebra.types.SERVICE]: sourceAdder,\n });\n return [ ...sources ];\n }\n\n /**\n * Get all variables inside the given expression.\n * @param expression An expression.\n * @return An array of variables, or undefined if the expression is unsupported for pushdown.\n */\n public getExpressionVariables(expression: Algebra.Expression): RDF.Variable[] {\n switch (expression.expressionType) {\n case Algebra.expressionTypes.AGGREGATE:\n case Algebra.expressionTypes.WILDCARD:\n throw new Error(`Getting expression variables is not supported for ${expression.expressionType}`);\n case Algebra.expressionTypes.EXISTENCE:\n return Util.inScopeVariables(expression.input);\n case Algebra.expressionTypes.NAMED:\n return [];\n case Algebra.expressionTypes.OPERATOR:\n return uniqTerms(expression.args.flatMap(arg => this.getExpressionVariables(arg)));\n case Algebra.expressionTypes.TERM:\n if (expression.term.termType === 'Variable') {\n return [ expression.term ];\n }\n return [];\n }\n }\n\n protected getOverlappingOperations(\n operation: Algebra.Operation,\n expressionVariables: RDF.Variable[],\n ): {\n fullyOverlapping: Algebra.Operation[];\n partiallyOverlapping: Algebra.Operation[];\n notOverlapping: Algebra.Operation[];\n } {\n const fullyOverlapping: Algebra.Operation[] = [];\n const partiallyOverlapping: Algebra.Operation[] = [];\n const notOverlapping: Algebra.Operation[] = [];\n for (const input of operation.input) {\n const inputVariables = Util.inScopeVariables(input);\n if (this.variablesSubSetOf(expressionVariables, inputVariables)) {\n fullyOverlapping.push(input);\n } else if (this.variablesIntersect(expressionVariables, inputVariables)) {\n partiallyOverlapping.push(input);\n } else {\n notOverlapping.push(input);\n }\n }\n\n return {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n };\n }\n\n /**\n * Recursively push down the given expression into the given operation if possible.\n * Different operators have different semantics for choosing whether or not to push down,\n * and how this pushdown is done.\n * For every passed operator, it is checked whether or not the filter will have any effect on the operation.\n * If not, the filter is voided.\n * @param expression An expression to push down.\n * @param expressionVariables The variables inside the given expression.\n * @param operation The operation to push down into.\n * @param factory An algebra factory.\n * @param context The action context.\n * @return A tuple indicating if the operation was modified and the modified operation.\n */\n public filterPushdown(\n expression: Algebra.Expression,\n expressionVariables: RDF.Variable[],\n operation: Algebra.Operation,\n factory: Factory,\n context: IActionContext,\n ): [ boolean, Algebra.Operation ] {\n // Void false expressions\n if (this.isExpressionFalse(expression)) {\n return [ true, factory.createUnion([]) ];\n }\n\n // Don't push down (NOT) EXISTS\n if (expression.type === Algebra.types.EXPRESSION &&\n expression.expressionType === Algebra.expressionTypes.EXISTENCE) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n\n switch (operation.type) {\n case Algebra.types.EXTEND:\n // Pass if the variable is not part of the expression\n if (!this.variablesIntersect([ operation.variable ], expressionVariables)) {\n return [ true, factory.createExtend(\n this.filterPushdown(expression, expressionVariables, operation.input, factory, context)[1],\n operation.variable,\n operation.expression,\n ) ];\n }\n return [ false, factory.createFilter(operation, expression) ];\n case Algebra.types.FILTER: {\n // Always pass\n const [ isModified, result ] = this\n .filterPushdown(expression, expressionVariables, operation.input, factory, context);\n return [ isModified, factory.createFilter(result, operation.expression) ];\n }\n case Algebra.types.JOIN: {\n // Don't push down for empty join\n if (operation.input.length === 0) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n\n // Determine overlapping operations\n const {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n } = this.getOverlappingOperations(operation, expressionVariables);\n\n const joins: Algebra.Operation[] = [];\n let isModified = false;\n if (fullyOverlapping.length > 0) {\n isModified = true;\n joins.push(factory.createJoin(fullyOverlapping\n .map(input => this.filterPushdown(expression, expressionVariables, input, factory, context)[1])));\n }\n if (partiallyOverlapping.length > 0) {\n joins.push(factory.createFilter(factory.createJoin(partiallyOverlapping, false), expression));\n }\n if (notOverlapping.length > 0) {\n joins.push(...notOverlapping);\n }\n\n if (joins.length > 1) {\n isModified = true;\n }\n\n if (isModified) {\n this.logDebug(context, `Push down filter across join entries with ${fullyOverlapping.length} fully overlapping, ${partiallyOverlapping.length} partially overlapping, and ${notOverlapping.length} not overlapping`);\n }\n\n return [ isModified, joins.length === 1 ? joins[0] : factory.createJoin(joins) ];\n }\n case Algebra.types.NOP:\n return [ true, operation ];\n case Algebra.types.PROJECT:\n // Push down if variables overlap\n if (this.variablesIntersect(operation.variables, expressionVariables)) {\n return [ true, factory.createProject(\n this.filterPushdown(expression, expressionVariables, operation.input, factory, context)[1],\n operation.variables,\n ) ];\n }\n // Void expression otherwise\n return [ true, operation ];\n case Algebra.types.UNION: {\n // Determine overlapping operations\n const {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n } = this.getOverlappingOperations(operation, expressionVariables);\n\n const unions: Algebra.Operation[] = [];\n let isModified = false;\n if (fullyOverlapping.length > 0) {\n isModified = true;\n unions.push(factory.createUnion(fullyOverlapping\n .map(input => this.filterPushdown(expression, expressionVariables, input, factory, context)[1])));\n }\n if (partiallyOverlapping.length > 0) {\n unions.push(factory.createFilter(factory.createUnion(partiallyOverlapping, false), expression));\n }\n if (notOverlapping.length > 0) {\n unions.push(...notOverlapping);\n }\n\n if (unions.length > 1) {\n isModified = true;\n }\n\n if (isModified) {\n this.logDebug(context, `Push down filter across union entries with ${fullyOverlapping.length} fully overlapping, ${partiallyOverlapping.length} partially overlapping, and ${notOverlapping.length} not overlapping`);\n }\n\n return [ isModified, unions.length === 1 ? unions[0] : factory.createUnion(unions) ];\n }\n case Algebra.types.VALUES:\n // Only keep filter if it overlaps with the variables\n if (this.variablesIntersect(operation.variables, expressionVariables)) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n return [ true, operation ];\n case Algebra.types.LEFT_JOIN: {\n if (this.pushIntoLeftJoins) {\n const rightVariables = Util.inScopeVariables(operation.input[1]);\n if (!this.variablesIntersect(expressionVariables, rightVariables)) {\n // If filter *only* applies to left entry of optional, push it down into that.\n this.logDebug(context, `Push down filter into left join`);\n return [ true, factory.createLeftJoin(\n this.filterPushdown(expression, expressionVariables, operation.input[0], factory, context)[1],\n operation.input[1],\n operation.expression,\n ) ];\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.PATTERN: {\n if (this.pushEqualityIntoPatterns) {\n // Try to push simple FILTER(?s = ) expressions into the pattern\n const pushableResult = this.getEqualityExpressionPushableIntoPattern(expression);\n if (pushableResult) {\n let isModified = false;\n const originalMetadata = operation.metadata;\n operation = mapTermsNested(operation, (value) => {\n if (value.equals(pushableResult.variable)) {\n isModified = true;\n return pushableResult.term;\n }\n return value;\n });\n operation.type = Algebra.types.PATTERN;\n operation.metadata = originalMetadata;\n if (isModified) {\n this.logDebug(context, `Push down filter into pattern for ?${pushableResult.variable.value}`);\n return [ true, factory.createJoin([\n operation,\n factory.createValues(\n [ pushableResult.variable ],\n [{ [`?${pushableResult.variable.value}`]: pushableResult.term }],\n ),\n ]) ];\n }\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.PATH: {\n if (this.pushEqualityIntoPatterns) {\n // Try to push simple FILTER(?s = ) expressions into the path\n const pushableResult = this.getEqualityExpressionPushableIntoPattern(expression);\n if (pushableResult &&\n (operation.subject.equals(pushableResult.variable) || operation.object.equals(pushableResult.variable))) {\n this.logDebug(context, `Push down filter into path for ?${pushableResult.variable.value}`);\n const originalMetadata = operation.metadata;\n operation = factory.createPath(\n operation.subject.equals(pushableResult.variable) ? pushableResult.term : operation.subject,\n operation.predicate,\n operation.object.equals(pushableResult.variable) ? pushableResult.term : operation.object,\n );\n operation.metadata = originalMetadata;\n return [ true, factory.createJoin([\n operation,\n factory.createValues(\n [ pushableResult.variable ],\n [{ [`?${pushableResult.variable.value}`]: pushableResult.term }],\n ),\n ]) ];\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.MINUS:\n case Algebra.types.ALT:\n case Algebra.types.ASK:\n case Algebra.types.BGP:\n case Algebra.types.CONSTRUCT:\n case Algebra.types.DESCRIBE:\n case Algebra.types.DISTINCT:\n case Algebra.types.EXPRESSION:\n case Algebra.types.FROM:\n case Algebra.types.GRAPH:\n case Algebra.types.GROUP:\n case Algebra.types.INV:\n case Algebra.types.LINK:\n case Algebra.types.NPS:\n case Algebra.types.ONE_OR_MORE_PATH:\n case Algebra.types.ORDER_BY:\n case Algebra.types.REDUCED:\n case Algebra.types.SEQ:\n case Algebra.types.SERVICE:\n case Algebra.types.SLICE:\n case Algebra.types.ZERO_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_ONE_PATH:\n case Algebra.types.COMPOSITE_UPDATE:\n case Algebra.types.DELETE_INSERT:\n case Algebra.types.LOAD:\n case Algebra.types.CLEAR:\n case Algebra.types.CREATE:\n case Algebra.types.DROP:\n case Algebra.types.ADD:\n case Algebra.types.MOVE:\n case Algebra.types.COPY:\n // Operations that do not support pushing down\n // Left-join and minus might be possible to support in the future.\n return [ false, factory.createFilter(operation, expression) ];\n }\n }\n\n /**\n * Check if the given expression is a simple equals operation with one variable and one non-literal\n * (or literal with canonical lexical form) term that can be pushed into a pattern.\n * @param expression The current expression.\n * @return The variable and term to fill into the pattern, or undefined.\n */\n public getEqualityExpressionPushableIntoPattern(\n expression: Algebra.Expression,\n ): { variable: RDF.Variable; term: RDF.Term } | undefined {\n if (expression.expressionType === Algebra.expressionTypes.OPERATOR && expression.operator === '=') {\n if (expression.args[0].expressionType === 'term' && expression.args[0].term.termType !== 'Variable' &&\n (expression.args[0].term.termType !== 'Literal' ||\n this.isLiteralWithCanonicalLexicalForm(expression.args[0].term)) &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType === 'Variable') {\n return {\n variable: expression.args[1].term,\n term: expression.args[0].term,\n };\n }\n if (expression.args[0].expressionType === 'term' && expression.args[0].term.termType === 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType !== 'Variable' &&\n (expression.args[1].term.termType !== 'Literal' ||\n this.isLiteralWithCanonicalLexicalForm(expression.args[1].term))) {\n return {\n variable: expression.args[0].term,\n term: expression.args[1].term,\n };\n }\n }\n }\n\n /**\n * Check if the given term is a literal with datatype that where all values\n * can only have one possible lexical representation.\n * In other words, no variants of values exist that should be considered equal.\n * For example: \"01\"^xsd:number and \"1\"^xsd:number will return false.\n * @param term An RDF term.\n * @protected\n */\n protected isLiteralWithCanonicalLexicalForm(term: RDF.Term): boolean {\n if (term.termType === 'Literal') {\n switch (term.datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#string':\n case 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString':\n case 'http://www.w3.org/2001/XMLSchema#normalizedString':\n case 'http://www.w3.org/2001/XMLSchema#anyURI':\n case 'http://www.w3.org/2001/XMLSchema#base64Binary':\n case 'http://www.w3.org/2001/XMLSchema#language':\n case 'http://www.w3.org/2001/XMLSchema#Name':\n case 'http://www.w3.org/2001/XMLSchema#NCName':\n case 'http://www.w3.org/2001/XMLSchema#NMTOKEN':\n case 'http://www.w3.org/2001/XMLSchema#token':\n case 'http://www.w3.org/2001/XMLSchema#hexBinary':\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check if there is an overlap between the two given lists of variables.\n * @param varsA A list of variables.\n * @param varsB A list of variables.\n */\n public variablesIntersect(varsA: RDF.Variable[], varsB: RDF.Variable[]): boolean {\n return varsA.some(varA => varsB.some(varB => varA.equals(varB)));\n }\n\n /**\n * Check if all variables from the first list are included in the second list.\n * The second list may contain other variables as well.\n * @param varsNeedles A list of variables to search for.\n * @param varsHaystack A list of variables to search in.\n */\n public variablesSubSetOf(varsNeedles: RDF.Variable[], varsHaystack: RDF.Variable[]): boolean {\n return varsNeedles.length <= varsHaystack.length &&\n varsNeedles.every(varA => varsHaystack.some(varB => varA.equals(varB)));\n }\n\n /**\n * Check if an expression is simply 'false'.\n * @param expression An expression.\n */\n public isExpressionFalse(expression: Algebra.Expression): boolean {\n return (expression.term && expression.term.termType === 'Literal' && expression.term.value === 'false');\n }\n\n /**\n * Get all directly nested filter expressions.\n * As soon as a non-filter is found, it is returned as the input field.\n * @param op A filter expression.\n */\n public getNestedFilterExpressions(\n op: Algebra.Filter,\n ): { nestedExpressions: Algebra.Expression[]; input: Algebra.Operation } {\n if (op.input.type === Algebra.types.FILTER) {\n const childData = this.getNestedFilterExpressions(op.input);\n return { nestedExpressions: [ op.expression, ...childData.nestedExpressions ], input: childData.input };\n }\n return { nestedExpressions: [ op.expression ], input: op.input };\n }\n}\n\nexport interface IActorOptimizeQueryOperationFilterPushdownArgs extends IActorOptimizeQueryOperationArgs {\n /**\n * If filters should be pushed down as deep as possible.\n * If false, filters will only be pushed down if the source(s) accept them,\n * or if the filter is very selective.\n * @range {boolean}\n * @default {false}\n */\n aggressivePushdown: boolean;\n /**\n * The maximum number of full iterations across the query can be done for attempting to push down filters.\n * @default {10}\n */\n maxIterations: number;\n /**\n * If conjunctive filters should be split into nested filters before applying filter pushdown.\n * This can enable pushing down deeper.\n * @range {boolean}\n * @default {true}\n */\n splitConjunctive: boolean;\n /**\n * If nested filters should be merged into conjunctive filters after applying filter pushdown.\n * @range {boolean}\n * @default {true}\n */\n mergeConjunctive: boolean;\n /**\n * If filters should be pushed into left-joins.\n * @range {boolean}\n * @default {true}\n */\n pushIntoLeftJoins: boolean;\n /**\n * If simple equality filters should be pushed into patterns and paths.\n * This only applies to equality filters with terms that are not literals that have no canonical lexical form.\n * @range {boolean}\n * @default {true}\n */\n pushEqualityIntoPatterns: boolean;\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQuerySourceWrapper } from '@comunica/types';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\n\n/**\n * A comunica Group Sources Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationGroupSources extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n return { operation: await this.groupOperation(action.operation, action.context), context: action.context };\n }\n\n /**\n * Group operations belonging to the same source together, only if that source accepts the grouped operations.\n * This grouping will be done recursively for the whole operation tree.\n * Operations annotated with sources are considered leaves in the tree.\n * @param operation An operation to group.\n * @param context The action context.\n */\n public async groupOperation(operation: Algebra.Operation, context: IActionContext): Promise {\n // Return operation as-is if the operation already has a single source, or if the operation has no children.\n if (ActorQueryOperation.getOperationSource(operation) ?? !('input' in operation)) {\n return operation;\n }\n\n // If operation has a single input, move source annotation upwards if the source can handle it.\n if (!Array.isArray(operation.input)) {\n const groupedInput = await this.groupOperation(operation.input, context);\n if (groupedInput.metadata?.scopedSource) {\n const source: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(groupedInput)!;\n if (ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), operation)) {\n this.logDebug(context, `Hoist 1 source-specific operation into a single ${operation.type} operation for ${source.source.toString()}`);\n ActorQueryOperation.removeOperationSource(groupedInput);\n operation = ActorQueryOperation.assignOperationSource(operation, source);\n }\n }\n return { ...operation, input: groupedInput };\n }\n\n // If operation has multiple inputs, cluster source annotations.\n const inputs: Algebra.Operation[] = await Promise.all(operation.input\n .map(subInput => this.groupOperation(subInput, context)));\n const clusters = this.clusterOperationsWithEqualSources(inputs);\n\n // If we just have a single cluster, move the source annotation upwards\n if (clusters.length === 1) {\n const newInputs = clusters[0];\n const source = ActorQueryOperation.getOperationSource(clusters[0][0])!;\n return {\n ...await this.moveSourceAnnotationUpwardsIfPossible(operation, newInputs, source, context),\n input: newInputs,\n };\n }\n\n // If the number of clusters is equal to the number of original inputs, do nothing.\n if (clusters.length === inputs.length) {\n return { ...operation, input: inputs };\n }\n\n // If we have multiple clusters, created nested multi-operations\n let multiFactoryMethod: (children: Algebra.Operation[], flatten: boolean) => Algebra.Operation;\n switch (operation.type) {\n case Algebra.types.JOIN:\n multiFactoryMethod = AF.createJoin.bind(AF);\n break;\n case Algebra.types.UNION:\n multiFactoryMethod = AF.createUnion.bind(AF);\n break;\n case Algebra.types.ALT:\n multiFactoryMethod = AF.createAlt.bind(AF);\n break;\n case Algebra.types.SEQ:\n multiFactoryMethod = AF.createSeq.bind(AF);\n break;\n default:\n // While LeftJoin and Minus are also multi-operations,\n // these can never occur because they only have 2 inputs,\n // so these cases will always be captured by one of the 2 if-cases above\n // (clusters.length === 1 or clusters.length === input.length)\n\n // In all other cases, error\n throw new Error(`Unsupported operation '${operation.type}' detected while grouping sources`);\n }\n return await this.groupOperationMulti(clusters, multiFactoryMethod, context);\n }\n\n protected async groupOperationMulti(\n clusters: Algebra.Operation[][],\n factoryMethod: (children: Algebra.Operation[], flatten: boolean) => Algebra.Operation,\n context: IActionContext,\n ): Promise {\n let flatten = true;\n const nestedMerges = await Promise.all(clusters.map(async(cluster) => {\n const source = ActorQueryOperation.getOperationSource(cluster[0])!;\n const merged = await this\n .moveSourceAnnotationUpwardsIfPossible(factoryMethod(cluster, true), cluster, source, context);\n if (ActorQueryOperation.getOperationSource(merged)) {\n flatten = false;\n }\n return merged;\n }));\n return factoryMethod(nestedMerges, flatten);\n }\n\n /**\n * Cluster the given operations by equal source annotations.\n * @param operationsIn An array of operations to cluster.\n */\n public clusterOperationsWithEqualSources(operationsIn: Algebra.Operation[]): Algebra.Operation[][] {\n // Operations can have a source, or no source at all\n const sourceOperations: Map = new Map();\n const sourcelessOperations: Algebra.Operation[] = [];\n\n // Cluster by source\n for (const operation of operationsIn) {\n const source: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(operation)!;\n if (source) {\n if (!sourceOperations.has(source)) {\n sourceOperations.set(source, []);\n }\n sourceOperations.get(source)!.push(operation);\n } else {\n sourcelessOperations.push(operation);\n }\n }\n\n // Return clusters\n const clusters: Algebra.Operation[][] = [];\n if (sourcelessOperations.length > 0) {\n clusters.push(sourcelessOperations);\n }\n for (const [ source, operations ] of sourceOperations.entries()) {\n clusters.push(operations\n .map(operation => ActorQueryOperation.assignOperationSource(operation, source)));\n }\n return clusters;\n }\n\n /**\n * If the given source accepts the grouped operation, annotate the grouped operation with the source,\n * and remove the source annotation from the seperate input operations.\n * Otherwise, return the grouped operation unchanged.\n * @param operation A grouped operation consisting of all given input operations.\n * @param inputs An array of operations that share the same source annotation.\n * @param source The common source.\n * @param context The action context.\n */\n public async moveSourceAnnotationUpwardsIfPossible(\n operation: O,\n inputs: Algebra.Operation[],\n source: IQuerySourceWrapper | undefined,\n context: IActionContext,\n ): Promise {\n if (source && ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), operation)) {\n this.logDebug(context, `Hoist ${inputs.length} source-specific operations into a single ${operation.type} operation for ${source.source.toString()}`);\n operation = ActorQueryOperation.assignOperationSource(operation, source);\n for (const input of inputs) {\n ActorQueryOperation.removeOperationSource(input);\n }\n }\n return operation;\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join BGP Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationJoinBgp extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n join(op: Algebra.Join, factory: Factory) {\n if (op.input.every(subInput => subInput.type === 'bgp')) {\n return {\n recurse: false,\n result: factory.createBgp(op.input.flatMap(subInput => subInput.patterns)),\n };\n }\n return {\n recurse: false,\n result: op,\n };\n },\n });\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join Connected Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationJoinConnected extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n join(op: Algebra.Join, factory: Factory) {\n return {\n recurse: false,\n result: ActorOptimizeQueryOperationJoinConnected.cluster(op, factory),\n };\n },\n });\n return { operation, context: action.context };\n }\n\n /**\n * Iteratively cluster join entries based on their overlapping variables.\n * @param op A join operation.\n * @param factory An algebra factory.\n */\n public static cluster(op: Algebra.Join, factory: Factory): Algebra.Operation {\n // Initialize each entry to be in a separate cluster\n const initialClusters: IJoinCluster[] = op.input.map(subOp => ({\n inScopeVariables: Object.fromEntries(Util.inScopeVariables(subOp).map(variable => [ variable.value, true ])),\n entries: [ subOp ],\n }));\n\n // Iteratively merge clusters until they don't change anymore\n let oldClusters: IJoinCluster[];\n let newClusters: IJoinCluster[] = initialClusters;\n do {\n oldClusters = newClusters;\n newClusters = ActorOptimizeQueryOperationJoinConnected.clusterIteration(oldClusters);\n } while (oldClusters.length !== newClusters.length);\n\n // Create new join operation of latest clusters\n const subJoins = newClusters\n .map(cluster => cluster.entries.length === 1 ? cluster.entries[0] : factory.createJoin(cluster.entries));\n return subJoins.length === 1 ? subJoins[0] : factory.createJoin(subJoins, false);\n }\n\n /**\n * Perform a single clustering iteration.\n * Clusters will be joined if they have overlapping variables.\n * @param oldCluster\n */\n public static clusterIteration(oldCluster: IJoinCluster[]): IJoinCluster[] {\n const newClusters: IJoinCluster[] = [];\n\n for (const entry of oldCluster) {\n // Try to add entry to a join cluster\n let joined = false;\n for (const newEntry of newClusters) {\n if (ActorOptimizeQueryOperationJoinConnected\n .haveOverlappingVariables(entry.inScopeVariables, newEntry.inScopeVariables)) {\n newEntry.entries = [ ...newEntry.entries, ...entry.entries ];\n newEntry.inScopeVariables = { ...newEntry.inScopeVariables, ...entry.inScopeVariables };\n joined = true;\n break;\n }\n }\n\n // If none was found, create new cluster\n if (!joined) {\n newClusters.push({\n inScopeVariables: entry.inScopeVariables,\n entries: entry.entries,\n });\n }\n }\n\n return newClusters;\n }\n\n /**\n * Check if the two given variable objects are overlapping.\n * @param variablesA A variables objects.\n * @param variablesB A variables objects.\n */\n public static haveOverlappingVariables(\n variablesA: Record,\n variablesB: Record,\n ): boolean {\n for (const variableA of Object.keys(variablesA)) {\n if (variablesB[variableA]) {\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * A cluster of join entries.\n */\nexport interface IJoinCluster {\n /**\n * Union of all variables in scope within the join entries.\n */\n inScopeVariables: Record;\n /**\n * Join entries\n */\n entries: Algebra.Operation[];\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQuerySourceWrapper, MetadataBindings } from '@comunica/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory, Util } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\n\n/**\n * A comunica Prune Empty Source Operations Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationPruneEmptySourceOperations extends ActorOptimizeQueryOperation {\n private readonly useAskIfSupported: boolean;\n\n public constructor(args: IActorOptimizeQueryOperationPruneEmptySourceOperationsArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n let operation = action.operation;\n\n // Collect all operations with source types\n // Only consider unions of patterns or alts of links, since these are created during exhaustive source assignment.\n const collectedOperations: (Algebra.Pattern | Algebra.Link)[] = [];\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n Util.recurseOperation(operation, {\n [Algebra.types.UNION](subOperation) {\n self.collectMultiOperationInputs(subOperation.input, collectedOperations, Algebra.types.PATTERN);\n return true;\n },\n [Algebra.types.ALT](subOperation) {\n self.collectMultiOperationInputs(subOperation.input, collectedOperations, Algebra.types.LINK);\n return false;\n },\n [Algebra.types.SERVICE]() {\n return false;\n },\n });\n\n // Determine in an async manner whether or not these sources return non-empty results\n const emptyOperations: Set = new Set();\n await Promise.all(collectedOperations.map(async(collectedOperation) => {\n const checkOperation = collectedOperation.type === 'link' ?\n AF.createPattern(DF.variable('?s'), collectedOperation.iri, DF.variable('?o')) :\n collectedOperation;\n if (!await this.hasSourceResults(\n ActorQueryOperation.getOperationSource(collectedOperation)!,\n checkOperation,\n action.context,\n )) {\n emptyOperations.add(collectedOperation);\n }\n }));\n\n // Only perform next mapping if we have at least one empty operation\n if (emptyOperations.size > 0) {\n this.logDebug(action.context, `Pruning ${emptyOperations.size} source-specific operations`);\n // Rewrite operations by removing the empty children\n operation = Util.mapOperation(operation, {\n [Algebra.types.UNION](subOperation, factory) {\n return self.mapMultiOperation(subOperation, emptyOperations, children => factory.createUnion(children));\n },\n [Algebra.types.ALT](subOperation, factory) {\n return self.mapMultiOperation(subOperation, emptyOperations, children => factory.createAlt(children));\n },\n });\n\n // Identify and remove operations that have become empty now due to missing variables\n operation = Util.mapOperation(operation, {\n [Algebra.types.PROJECT](subOperation, factory) {\n // Remove projections that have become empty now due to missing variables\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation)) {\n return {\n recurse: false,\n result: factory.createUnion([]),\n };\n }\n return {\n recurse: true,\n result: subOperation,\n };\n },\n [Algebra.types.LEFT_JOIN](subOperation) {\n // Remove left joins with empty right operation\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation.input[1])) {\n return {\n recurse: true,\n result: subOperation.input[0],\n };\n }\n return {\n recurse: true,\n result: subOperation,\n };\n },\n });\n }\n\n return { operation, context: action.context };\n }\n\n protected static hasEmptyOperation(operation: Algebra.Operation): boolean {\n // If union (or alt) is empty, consider it empty (`Array.every` on an empty array always returns true)\n // But if we find a union with multiple children,\n // *all* of the children must be empty before the full operation is considered empty.\n let emptyOperation = false;\n Util.recurseOperation(operation, {\n [Algebra.types.UNION](subOperation) {\n if (subOperation.input.every(subSubOperation => ActorOptimizeQueryOperationPruneEmptySourceOperations\n .hasEmptyOperation(subSubOperation))) {\n emptyOperation = true;\n }\n return false;\n },\n [Algebra.types.ALT](subOperation) {\n if (subOperation.input.length === 0) {\n emptyOperation = true;\n }\n return false;\n },\n [Algebra.types.LEFT_JOIN](subOperation) {\n // Only recurse into left part of left-join\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation.input[0])) {\n emptyOperation = true;\n }\n return false;\n },\n });\n return emptyOperation;\n }\n\n protected collectMultiOperationInputs(\n inputs: Algebra.Operation[],\n collectedOperations: (Algebra.Pattern | Algebra.Link)[],\n inputType: (Algebra.Pattern | Algebra.Link)['type'],\n ): void {\n for (const input of inputs) {\n if (ActorQueryOperation.getOperationSource(input) && input.type === inputType) {\n collectedOperations.push(input);\n }\n }\n }\n\n protected mapMultiOperation(\n operation: O,\n emptyOperations: Set,\n multiOperationFactory: (input: O['input']) => Algebra.Operation,\n ): {\n result: Algebra.Operation;\n recurse: boolean;\n } {\n // Determine which operations return non-empty results\n const nonEmptyInputs = operation.input.filter(input => !emptyOperations.has(input));\n\n // Remove empty operations\n if (nonEmptyInputs.length === operation.input.length) {\n return { result: operation, recurse: true };\n }\n if (nonEmptyInputs.length === 0) {\n return { result: multiOperationFactory([]), recurse: false };\n }\n if (nonEmptyInputs.length === 1) {\n return { result: nonEmptyInputs[0], recurse: true };\n }\n return { result: multiOperationFactory(nonEmptyInputs), recurse: true };\n }\n\n /**\n * Check if the given query operation will produce at least one result in the given source.\n * @param source A query source.\n * @param input A query operation.\n * @param context The query context.\n */\n public async hasSourceResults(\n source: IQuerySourceWrapper,\n input: Algebra.Operation,\n context: IActionContext,\n ): Promise {\n // Traversal sources should never be considered empty at optimization time.\n if (source.context?.get(KeysQuerySourceIdentify.traverse)) {\n return true;\n }\n\n // Send an ASK query\n if (this.useAskIfSupported) {\n const askOperation = AF.createAsk(input);\n if (ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), askOperation)) {\n return source.source.queryBoolean(askOperation, context);\n }\n }\n\n // Send the operation as-is and check the response cardinality\n const bindingsStream = source.source.queryBindings(input, context);\n return new Promise((resolve, reject) => {\n bindingsStream.on('error', reject);\n bindingsStream.getProperty('metadata', (metadata: MetadataBindings) => {\n bindingsStream.destroy();\n resolve(metadata.cardinality.value > 0);\n });\n });\n }\n}\n\nexport interface IActorOptimizeQueryOperationPruneEmptySourceOperationsArgs extends IActorOptimizeQueryOperationArgs {\n /**\n * If true, ASK queries will be sent to the source instead of COUNT queries to check emptiness for patterns.\n * This will only be done for sources that accept ASK queries.\n * @default {false}\n */\n useAskIfSupported: boolean;\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Rewrite Add Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteAdd extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.ADD](operationOriginal, factory) {\n // CONSTRUCT all quads from the source, and INSERT them into the destination\n const destination = operationOriginal.destination === 'DEFAULT' ?\n DF.defaultGraph() :\n operationOriginal.destination;\n const source = operationOriginal.source === 'DEFAULT' ? DF.defaultGraph() : operationOriginal.source;\n\n const result = factory.createDeleteInsert(undefined, [\n factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), destination),\n ], factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), source));\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Rewrite Copy Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteCopy extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.COPY](operationOriginal, factory) {\n // No-op if source === destination\n let result: Algebra.CompositeUpdate;\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n result = factory.createCompositeUpdate([]);\n } else {\n // COPY is equivalent to drop destination, and add\n result = factory.createCompositeUpdate([\n factory.createDrop(operationOriginal.destination, true),\n factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n ]);\n }\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Rewrite Move Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteMove extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.MOVE](operationOriginal, factory) {\n // No-op if source === destination\n let result: Algebra.CompositeUpdate;\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n result = factory.createCompositeUpdate([]);\n } else {\n // MOVE is equivalent to drop destination, add, and drop source\n const updates = [\n factory.createDrop(operationOriginal.destination, true),\n factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n factory.createDrop(operationOriginal.source),\n ];\n result = factory.createCompositeUpdate(updates);\n }\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Ask Query Operation Actor.\n */\nexport class ActorQueryOperationAsk extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'ask');\n }\n\n public async testOperation(_operation: Algebra.Ask, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Ask, context: IActionContext): Promise {\n // Call other query operations like this:\n const output: IQueryOperationResult = await this.mediatorQueryOperation.mediate(\n { operation: operation.input, context },\n );\n const { bindingsStream }: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(output);\n return { type: 'boolean', execute: async() => (await bindingsStream.take(1).toArray()).length === 1 };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL BGP operations by rewriting it as a join operator.\n */\nexport class ActorQueryOperationBgpJoin extends ActorQueryOperationTypedMediated {\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'bgp');\n }\n\n public async testOperation(_operation: Algebra.Bgp, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Bgp, context: IActionContext):\n Promise {\n return this.mediatorQueryOperation.mediate({\n operation: ActorQueryOperationBgpJoin.FACTORY.createJoin(operation.patterns),\n context,\n });\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { getTermsNested, getVariables, uniqTerms } from 'rdf-terms';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { BindingsToQuadsIterator } from './BindingsToQuadsIterator';\n\n/**\n * A comunica Construct Query Operation Actor.\n */\nexport class ActorQueryOperationConstruct extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'construct');\n }\n\n /**\n * Find all variables in a list of triple patterns.\n * @param {Algebra.Pattern[]} patterns An array of triple patterns.\n * @return {RDF.Variable[]} The variables in the triple patterns.\n */\n public static getVariables(patterns: RDF.BaseQuad[]): RDF.Variable[] {\n return uniqTerms(( []).concat\n .apply([], patterns.map(pattern => getVariables(getTermsNested(pattern)))));\n }\n\n public async testOperation(_operation: Algebra.Construct, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.Construct, context: IActionContext):\n Promise {\n // Apply a projection on our CONSTRUCT variables first, as the query may contain other variables as well.\n const variables: RDF.Variable[] = ActorQueryOperationConstruct.getVariables(operationOriginal.template);\n const operation: Algebra.Operation = { type: Algebra.types.PROJECT, input: operationOriginal.input, variables };\n\n // Evaluate the input query\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation, context }),\n );\n\n // Construct triples using the result based on the pattern.\n // If it's a DESCRIBE query don't apply the blank node localisation.\n const quadStream: AsyncIterator = new BindingsToQuadsIterator(\n operationOriginal.template,\n output.bindingsStream,\n );\n\n // Let the final metadata contain the estimated number of triples\n const metadata: (() => Promise) = () => output.metadata().then(meta => ({\n ...meta,\n order: undefined,\n cardinality: {\n type: meta.cardinality.type,\n value: meta.cardinality.value * operationOriginal.template.length,\n },\n canContainUndefs: false,\n availableOrders: undefined,\n }));\n\n return {\n metadata,\n quadStream,\n type: 'quads',\n };\n }\n}\n","import type { Bindings, BindingsStream } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator, MultiTransformIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { mapTermsNested } from 'rdf-terms';\n\nconst DF = new DataFactory();\n\n/**\n * Transforms a bindings stream into a quad stream given a quad template.\n *\n * This conforms to the SPARQL 1.1 spec on constructing triples:\n * https://www.w3.org/TR/sparql11-query/#rConstructTriples\n */\nexport class BindingsToQuadsIterator extends MultiTransformIterator {\n protected readonly template: RDF.BaseQuad[];\n protected blankNodeCounter: number;\n\n public constructor(template: RDF.BaseQuad[], bindingsStream: BindingsStream) {\n super(bindingsStream, { autoStart: false });\n this.template = template;\n this.blankNodeCounter = 0;\n }\n\n /**\n * Bind the given term.\n * If the term is a variable and the variable is bound in the bindings object,\n * return the bindings value.\n * If the term is a variable and the variable is not bound in the bindings object,\n * a falsy value is returned..\n * Otherwise, the term itself is returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Term} term An RDF term.\n * @return {RDF.Term} If the given term is not a variable, the term itself is returned.\n * If the given term is a variable, then the bound term is returned,\n * or a falsy value if it did not exist in the bindings.\n */\n public static bindTerm(bindings: Bindings, term: RDF.Term): RDF.Term | undefined {\n if (term.termType === 'Variable') {\n return bindings.get(term);\n }\n return term;\n }\n\n /**\n * Bind the given quad pattern.\n * If one of the terms was a variable AND is not bound in the bindings,\n * a falsy value will be returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad} pattern An RDF quad.\n * @return {RDF.Quad} A bound RDF quad or undefined.\n */\n public static bindQuad(bindings: Bindings, pattern: RDF.BaseQuad): RDF.Quad | undefined {\n try {\n return mapTermsNested( pattern, (term) => {\n const boundTerm = BindingsToQuadsIterator.bindTerm(bindings, term);\n if (!boundTerm) {\n throw new Error('Unbound term');\n }\n return boundTerm;\n });\n } catch {\n // Do nothing\n }\n }\n\n /**\n * Convert a blank node to a unique blank node in the given context.\n * If the given term is not a blank node, the term itself will be returned.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.Term} term The term that should be localized.\n * @return {RDF.Term} A term.\n */\n public static localizeBlankNode(blankNodeCounter: number, term: RDF.Term): RDF.Term {\n if (term.termType === 'BlankNode') {\n return DF.blankNode(`${term.value}${blankNodeCounter}`);\n }\n return term;\n }\n\n /**\n * Convert the given quad to a quad that only contains unique blank nodes.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.BaseQuad} pattern The pattern that should be localized.\n * @return {RDF.BaseQuad} A quad.\n */\n public static localizeQuad(blankNodeCounter: number, pattern: RDF.BaseQuad): RDF.BaseQuad {\n return mapTermsNested(pattern, term => BindingsToQuadsIterator.localizeBlankNode(blankNodeCounter, term));\n }\n\n /**\n * Convert the given template to a list of quads based on the given bindings.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad[]} template A list of quad patterns.\n * @param blankNodeCounter A counter value for the blank node.\n * @return {RDF.Quad[]} A list of quads.\n */\n public bindTemplate(bindings: Bindings, template: RDF.BaseQuad[], blankNodeCounter: number): RDF.Quad[] {\n const quads: RDF.BaseQuad[] = template\n // Make sure the multiple instantiations of the template contain different blank nodes, as required by SPARQL 1.1.\n .map(BindingsToQuadsIterator.localizeQuad.bind(null, blankNodeCounter))\n // Bind variables to bound terms\n .map(x => BindingsToQuadsIterator.bindQuad.bind(null, bindings)(x))\n // Remove quads that contained unbound terms, i.e., variables.\n .filter(Boolean);\n return quads;\n }\n\n public override _createTransformer(bindings: Bindings): AsyncIterator {\n return new ArrayIterator(this.bindTemplate(\n bindings,\n this.template,\n this.blankNodeCounter++,\n ), { autoStart: false });\n }\n}\n","import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { MediatorHashQuads } from '@comunica/bus-hash-quads';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Distinct Hash Query Operation Actor.\n */\nexport class ActorQueryOperationDistinctHash extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly mediatorHashQuads: MediatorHashQuads;\n\n public constructor(args: IActorQueryOperationDistinctHashArgs) {\n super(args, 'distinct');\n }\n\n public async testOperation(_operation: Algebra.Distinct, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Distinct, context: IActionContext): Promise {\n const output = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n\n // TODO: In next/major, remove undefined check when mediatorHashQuads is made required\n if (output.type === 'quads' && this.mediatorHashQuads !== undefined) {\n const outputQuads: IQueryOperationResultQuads = ActorQueryOperation.getSafeQuads(\n output,\n );\n\n const quadStream: AsyncIterator = outputQuads.quadStream.filter(await this.newHashFilterQuads(context));\n return {\n type: 'quads',\n quadStream,\n metadata: outputQuads.metadata,\n };\n }\n\n const outputBindings: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n output,\n );\n\n const bindingsStream: BindingsStream = outputBindings.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: outputBindings.metadata,\n };\n }\n\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n public async newHashFilter(context: IActionContext): Promise<(bindings: Bindings) => boolean> {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes: Record = {};\n return (bindings: Bindings) => {\n const hash: string = hashFunction(bindings);\n\n return !(hash in hashes) && (hashes[hash] = true);\n };\n }\n\n /**\n * Create a new distinct filter function to hash quads.\n * This will maintain an internal hash datastructure so that every quad object only returns true once.\n * @param context The action context.\n * @return {(quad: RDF.Quad) => boolean} A distinct filter for quads.\n */\n public async newHashFilterQuads(context: IActionContext): Promise<(quad: RDF.Quad) => boolean> {\n // TODO: In next/major, this check can be removed when mediatorHashQuads is made required\n if (this.mediatorHashQuads === undefined) {\n return _quad => true;\n }\n const { hashFunction } = await this.mediatorHashQuads.mediate({ allowHashCollisions: true, context });\n const hashes: Record = {};\n return (quad: RDF.Quad) => {\n const hash: string = hashFunction(quad);\n\n return !(hash in hashes) && (hashes[hash] = true);\n };\n }\n}\n\nexport interface IActorQueryOperationDistinctHashArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n // TODO: In next/major, this field should be made required in the next major update\n mediatorHashQuads?: MediatorHashQuads;\n}\n","import { BindingsFactory, bindingsToString } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { ExpressionError } from '@comunica/expression-evaluator';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult, IQueryOperationResultBindings } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Extend Query Operation Actor.\n *\n * See https://www.w3.org/TR/sparql11-query/#sparqlAlgebra;\n */\nexport class ActorQueryOperationExtend extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationExtendArgs) {\n super(args, 'extend');\n }\n\n public async testOperation(operation: Algebra.Extend, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Will throw error for unsupported opperations\n const _ = Boolean(new AsyncEvaluator(\n operation.expression,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n ));\n return true;\n }\n\n public async runOperation(operation: Algebra.Extend, context: IActionContext):\n Promise {\n const { expression, input, variable } = operation;\n\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: input, context }),\n );\n\n // Throw if the variable has already been bound\n if ((await output.metadata()).variables.some(innerVariable => innerVariable.equals(variable))) {\n throw new Error(`Illegal binding to variable '${variable.value}' that has already been bound`);\n }\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(expression, config);\n\n // Transform the stream by extending each Bindings with the expression result\n const transform = async(bindings: Bindings, next: any, push: (pusbBindings: Bindings) => void): Promise => {\n try {\n const result = await evaluator.evaluate(bindings);\n // Extend operation is undefined when the key already exists\n // We just override it here.\n const extended = bindings.set(variable, result);\n push(extended);\n } catch (error: unknown) {\n if (isExpressionError( error)) {\n // Errors silently don't actually extend according to the spec\n push(bindings);\n // But let's warn anyway\n this.logWarn(context, `Expression error for extend operation (${( error).message})` +\n `with bindings '${bindingsToString(bindings)}'`);\n } else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n\n // eslint-disable-next-line ts/no-misused-promises\n const bindingsStream = output.bindingsStream.transform({ autoStart: false, transform });\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const outputMetadata = await output.metadata();\n return { ...outputMetadata, variables: [ ...outputMetadata.variables, variable ]};\n },\n };\n }\n}\n\nexport interface IActorQueryOperationExtendArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory, bindingsToString } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Filter Sparqlee Query Operation Actor.\n */\nexport class ActorQueryOperationFilter extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationFilterSparqleeArgs) {\n super(args, 'filter');\n }\n\n public async testOperation(operation: Algebra.Filter, context: IActionContext): Promise {\n // Will throw error for unsupported operators\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const _ = new AsyncEvaluator(operation.expression, config);\n return true;\n }\n\n public async runOperation(operation: Algebra.Filter, context: IActionContext):\n Promise {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(operation.expression, config);\n\n const transform = async(item: Bindings, next: any, push: (bindings: Bindings) => void): Promise => {\n try {\n const result = await evaluator.evaluateAsEBV(item);\n if (result) {\n push(item);\n }\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n //\n // > Specifically, FILTERs eliminate any solutions that,\n // > when substituted into the expression, either result in\n // > an effective boolean value of false or produce an error.\n // > ...\n // > These errors have no effect outside of FILTER evaluation.\n // https://www.w3.org/TR/sparql11-query/#expressions\n if (isExpressionError( error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings: bindingsToString(item) }));\n } else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n\n // eslint-disable-next-line ts/no-misused-promises\n const bindingsStream = output.bindingsStream.transform({ transform, autoStart: false });\n return { type: 'bindings', bindingsStream, metadata: output.metadata };\n }\n}\n\nexport interface IActorQueryOperationFilterSparqleeArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica From Query Operation Actor.\n */\nexport class ActorQueryOperationFromQuad extends ActorQueryOperationTypedMediated {\n private static readonly FACTORY: Factory = new Factory();\n private static readonly ALGEBRA_TYPES: string[] = Object.keys(Algebra.types).map(key => ( Algebra.types)[key]);\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'from');\n }\n\n /**\n * Create a deep copy of the given operation.\n * @param {Operation} operation An operation.\n * @param {(subOperation: Operation) => Operation} recursiveCb A callback for recursive operation calls.\n * @return {Operation} The copied operation.\n */\n public static copyOperation(\n operation: Algebra.Operation,\n recursiveCb: (subOperation: Algebra.Operation) => Algebra.Operation,\n ): Algebra.Operation {\n const copiedOperation: Algebra.Operation = {};\n for (const key of Object.keys(operation)) {\n if (Array.isArray(operation[key]) && key !== 'template') {\n // We exclude the 'template' entry, as we don't want to modify the template value of construct operations\n if (key === 'variables') {\n copiedOperation[key] = operation[key];\n } else {\n copiedOperation[key] = operation[key].map(recursiveCb);\n }\n } else if (ActorQueryOperationFromQuad.ALGEBRA_TYPES.includes(operation[key].type)) {\n copiedOperation[key] = recursiveCb(operation[key]);\n } else {\n copiedOperation[key] = operation[key];\n }\n }\n return copiedOperation;\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as default graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} defaultGraphs Graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationDefaultGraph(operation: Algebra.Operation, defaultGraphs: RDF.Term[]): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n if (operation.type === 'bgp') {\n return ActorQueryOperationFromQuad.joinOperations(operation.patterns.map((pattern: Algebra.Pattern) => {\n if (pattern.graph.termType !== 'DefaultGraph') {\n return ActorQueryOperationFromQuad.FACTORY.createBgp([ pattern ]);\n }\n const bgps = defaultGraphs.map((graph: RDF.Term) =>\n ActorQueryOperationFromQuad.FACTORY.createBgp([ Object.assign(\n ActorQueryOperationFromQuad.FACTORY\n .createPattern(pattern.subject, pattern.predicate, pattern.object, graph),\n { metadata: pattern.metadata },\n ) ]));\n return ActorQueryOperationFromQuad.unionOperations(bgps);\n }));\n }\n if (operation.graph.termType !== 'DefaultGraph') {\n return operation;\n }\n const paths = defaultGraphs.map(\n (graph: RDF.Term) => {\n if (operation.type === 'path') {\n return ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n }\n return Object.assign(ActorQueryOperationFromQuad.FACTORY\n .createPattern(\n operation.subject,\n operation.predicate,\n operation.object,\n graph,\n ), { metadata: operation.metadata });\n },\n );\n return ActorQueryOperationFromQuad.unionOperations(paths);\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this.applyOperationDefaultGraph(subOperation, defaultGraphs),\n );\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as named graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} namedGraphs Graph terms.\n * @param {RDF.Term[]} defaultGraphs Default graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationNamedGraph(\n operation: Algebra.Operation,\n namedGraphs: RDF.NamedNode[],\n defaultGraphs: RDF.Term[],\n ): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n const patternGraph: RDF.Term = operation.type === 'bgp' ? operation.patterns[0].graph : operation.graph;\n if (patternGraph.termType === 'DefaultGraph') {\n // SPARQL spec (8.2) describes that when FROM NAMED's are used without a FROM, the default graph must be empty.\n // The FROMs are transformed before this step to a named node, so this will not apply to this case anymore.\n return { type: Algebra.types.BGP, patterns: []};\n }\n if (patternGraph.termType === 'Variable') {\n if (namedGraphs.length === 1) {\n const graph: RDF.NamedNode = namedGraphs[0];\n // If the pattern graph is a variable, replace the graph and bind the variable using VALUES\n const bindings: Record = {};\n bindings[`?${patternGraph.value}`] = graph;\n const values: Algebra.Values = ActorQueryOperationFromQuad.FACTORY\n .createValues([ patternGraph ], [ bindings ]);\n\n let pattern: Algebra.Operation;\n if (operation.type === 'bgp') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createBgp(operation.patterns.map((pat: Algebra.Pattern) => ActorQueryOperationFromQuad.FACTORY\n .createPattern(pat.subject, pat.predicate, pat.object, graph)));\n } else if (operation.type === 'path') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n } else {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPattern(operation.subject, operation.predicate, operation.object, graph);\n }\n\n return ActorQueryOperationFromQuad.FACTORY.createJoin([ values, pattern ]);\n }\n // If the pattern graph is a variable, take the union of the pattern applied to each available named graph\n return ActorQueryOperationFromQuad.unionOperations(namedGraphs.map(\n (graph: RDF.NamedNode) => ActorQueryOperationFromQuad.applyOperationNamedGraph(\n operation,\n [ graph ],\n defaultGraphs,\n ),\n ));\n }\n // The pattern's graph is defined (including the default graphs)\n const isNamedGraphAvailable: boolean = [ ...namedGraphs, ...defaultGraphs ].some(\n (namedGraph: RDF.Term) => namedGraph.equals(patternGraph),\n );\n if (isNamedGraphAvailable) {\n // Return the pattern as-is if the pattern's graph was selected in a FROM NAMED\n return operation;\n }\n // No-op if the pattern's graph was not selected in a FROM NAMED.\n return { type: Algebra.types.BGP, patterns: []};\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this.applyOperationNamedGraph(subOperation, namedGraphs, defaultGraphs),\n );\n }\n\n /**\n * Transform the given array of operations into a join operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Join} A join operation.\n */\n public static joinOperations(operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createJoin(operations);\n }\n throw new Error('A join can only be applied on at least one operation');\n }\n\n /**\n * Transform the given array of operations into a union operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Union} A union operation.\n */\n public static unionOperations(operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createUnion(operations);\n }\n throw new Error('A union can only be applied on at least one operation');\n }\n\n /**\n * Transform an operation based on the default and named graphs in the pattern.\n *\n * FROM sets the default graph.\n * If multiple are available, take the union of the operation for all of them at quad-pattern level.\n *\n * FROM NAMED indicates which named graphs are available.\n * This will rewrite the query so that only triples from the given named graphs can be selected.\n *\n * @param {From} pattern A from operation.\n * @return {Operation} The transformed operation.\n */\n public static createOperation(pattern: Algebra.From): Algebra.Operation {\n let operation: Algebra.Operation = pattern.input;\n if (pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationDefaultGraph(operation, pattern.default);\n }\n if (pattern.named.length > 0 || pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationNamedGraph(operation, pattern.named, pattern.default);\n }\n return operation;\n }\n\n public async testOperation(_operation: Algebra.From, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.From,\n context: IActionContext,\n ): Promise {\n const operation: Algebra.Operation = ActorQueryOperationFromQuad.createOperation(operationOriginal);\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator } from '@comunica/expression-evaluator';\nimport type { BindingsStream, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { ArrayIterator, TransformIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { GroupsState } from './GroupsState';\n\n/**\n * A comunica Group Query Operation Actor.\n */\nexport class ActorQueryOperationGroup extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationGroupArgs) {\n super(args, 'group');\n }\n\n public async testOperation(operation: Algebra.Group, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n for (const aggregate of operation.aggregates) {\n // Will throw for unsupported expressions\n const _ = new AsyncEvaluator(\n aggregate.expression,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n );\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.Group, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Create a hash function\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n\n // Get result stream for the input query\n const { input, aggregates } = operation;\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n\n // The variables in scope are the variables on which we group, i.e. pattern.variables.\n // For 'GROUP BY ?x, ?z', this is [?x, ?z], for 'GROUP by expr(?x) as ?e' this is [?e].\n // But also in scope are the variables defined by the aggregations, since GROUP has to handle this.\n const variables = [\n ...operation.variables,\n ...aggregates.map(agg => agg.variable),\n ];\n\n const sparqleeConfig = ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n );\n\n // Wrap a new promise inside an iterator that completes when the stream has ended or when an error occurs\n const bindingsStream = new TransformIterator(() => new Promise((resolve, reject) => {\n const groups = new GroupsState(hashFunction, operation, sparqleeConfig, bindingsFactory);\n\n // Phase 2: Collect aggregator results\n // We can only return when the binding stream ends, when that happens\n // we return the identified groups. Which are nothing more than Bindings\n // of the grouping variables merged with the aggregate variables\n // eslint-disable-next-line ts/no-misused-promises\n output.bindingsStream.on('end', async() => {\n try {\n const bindingsStreamInner = new ArrayIterator(await groups.collectResults(), { autoStart: false });\n resolve(bindingsStreamInner);\n } catch (error: unknown) {\n reject(error);\n }\n });\n\n // Make sure to propagate any errors in the binding stream\n output.bindingsStream.on('error', reject);\n\n // Phase 1: Consume the stream, identify the groups and populate the aggregators.\n // We need to bind this after the 'error' and 'end' listeners to avoid the\n // stream having ended before those listeners are bound.\n output.bindingsStream.on('data', (bindings) => {\n groups.consumeBindings(bindings).catch(reject);\n });\n }), { autoStart: false });\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await output.metadata(), variables }),\n };\n }\n}\n\nexport interface IActorQueryOperationGroupArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { HashFunction } from '@comunica/bus-hash-bindings';\nimport type { IAsyncEvaluatorContext } from '@comunica/expression-evaluator';\nimport { AsyncAggregateEvaluator } from '@comunica/expression-evaluator';\nimport type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A simple type alias for strings that should be hashes of Bindings\n */\nexport type BindingsHash = string;\n\n/**\n * A state container for a single group\n *\n * @property {Bindings} bindings - The binding entries on which we group\n */\nexport interface IGroup {\n bindings: Bindings;\n aggregators: Record;\n}\n\n/**\n * A state manager for the groups constructed by consuming the bindings-stream.\n */\nexport class GroupsState {\n private readonly groups: Map;\n // We need to the promises of a group so we can await the initialisation/ creation of them.\n // Without this we could have duplicate work/ override precious work.\n private readonly groupsInitializer: Map>;\n private readonly groupVariables: Set;\n private readonly distinctHashes: null | Map>;\n private waitCounter: number;\n // Function that resolves the promise given by collectResults\n private waitResolver: (bindings: Bindings[]) => void;\n private resultHasBeenCalled: boolean;\n\n public constructor(\n private readonly hashFunction: HashFunction,\n private readonly pattern: Algebra.Group,\n private readonly sparqleeConfig: IAsyncEvaluatorContext,\n private readonly bindingsFactory: BindingsFactory,\n ) {\n this.groups = new Map();\n this.groupsInitializer = new Map();\n this.groupVariables = new Set(this.pattern.variables.map(x => x.value));\n this.waitCounter = 1;\n this.resultHasBeenCalled = false;\n }\n\n /**\n * - Consumes a stream binding\n * - Find the corresponding group and create one if need be\n * - Feeds the binding to the group's aggregators\n *\n * @param {Bindings} bindings - The Bindings to consume\n */\n public consumeBindings(bindings: Bindings): Promise {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n // We increment the counter and decrement him when put action is performed.\n this.waitCounter++;\n\n // Select the bindings on which we group\n const grouper = bindings\n .filter((_, variable) => this.groupVariables.has(variable.value));\n const groupHash = this.hashBindings(grouper);\n\n // First member of group -> create new group\n let groupInitializer: Promise | undefined = this.groupsInitializer.get(groupHash);\n\n let res: Promise;\n if (groupInitializer) {\n const groupInitializerDefined = groupInitializer;\n res = (async() => {\n const group = await groupInitializerDefined;\n await Promise.all(this.pattern.aggregates.map(async(aggregate) => {\n // Distinct handling is done in the aggregator.\n const variable = aggregate.variable.value;\n await group.aggregators[variable].put(bindings);\n }));\n })().then(async() => {\n this.subtractWaitCounterAndCollect();\n });\n } else {\n // Initialize state for all aggregators for new group\n groupInitializer = (async() => {\n const aggregators: Record = {};\n await Promise.all(this.pattern.aggregates.map(async(aggregate) => {\n const key = aggregate.variable.value;\n aggregators[key] = new AsyncAggregateEvaluator(aggregate, this.sparqleeConfig);\n await aggregators[key].put(bindings);\n }));\n\n const group = { aggregators, bindings: grouper };\n this.groups.set(groupHash, group);\n this.subtractWaitCounterAndCollect();\n return group;\n })();\n this.groupsInitializer.set(groupHash, groupInitializer);\n res = groupInitializer;\n }\n return res;\n }\n\n private subtractWaitCounterAndCollect(): void {\n if (--this.waitCounter === 0) {\n this.handleResultCollection();\n }\n }\n\n private handleResultCollection(): void {\n // Collect groups\n let rows: Bindings[] = [ ...this.groups ].map(([ _, group ]) => {\n const { bindings: groupBindings, aggregators } = group;\n\n // Collect aggregator bindings\n // If the aggregate errorred, the result will be undefined\n let returnBindings = groupBindings;\n for (const variable in aggregators) {\n const value = aggregators[variable].result();\n if (value) {\n // Filter undefined\n returnBindings = returnBindings.set(DF.variable(variable), value);\n }\n }\n\n // Merge grouping bindings and aggregator bindings\n return returnBindings;\n });\n\n // Case: No Input\n // Some aggregators still define an output on the empty input\n // Result is a single Bindings\n if (rows.length === 0 && this.groupVariables.size === 0) {\n const single: [RDF.Variable, RDF.Term][] = [];\n for (const aggregate of this.pattern.aggregates) {\n const key = aggregate.variable;\n const value = AsyncAggregateEvaluator.emptyValue(aggregate);\n if (value !== undefined) {\n single.push([ key, value ]);\n }\n }\n rows = [ this.bindingsFactory.bindings(single) ];\n }\n this.waitResolver(rows);\n }\n\n private resultCheck(): Promise | undefined {\n if (this.resultHasBeenCalled) {\n return Promise.reject(new Error('Calling any function after calling collectResult is invalid.'));\n }\n }\n\n /**\n * Collect the result of the final state. This returns a Bindings per group,\n * and a (possibly empty) Bindings in case no Bindings have been consumed yet.\n * You can only call this method once, after calling this method,\n * calling any function on this will result in an error being thrown.\n */\n public collectResults(): Promise {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n this.resultHasBeenCalled = true;\n const res = new Promise((resolve) => {\n this.waitResolver = resolve;\n });\n this.subtractWaitCounterAndCollect();\n return res;\n }\n\n /**\n * @param {Bindings} bindings - Bindings to hash\n */\n private hashBindings(bindings: Bindings): BindingsHash {\n return this.hashFunction(bindings);\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryOperationResult, IActionContext, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join Query Operation Actor.\n */\nexport class ActorQueryOperationJoin extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationJoinArgs) {\n super(args, 'join');\n }\n\n public async testOperation(_operation: Algebra.Join, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.Join,\n context: IActionContext,\n ): Promise {\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n\n return this.mediatorJoin.mediate({ type: 'inner', entries, context });\n }\n}\n\nexport interface IActorQueryOperationJoinArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { IQueryOperationResult, Bindings, IActionContext, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica LeftJoin Query Operation Actor.\n */\nexport class ActorQueryOperationLeftJoin extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationLeftJoinArgs) {\n super(args, 'leftjoin');\n }\n\n public async testOperation(_operation: Algebra.LeftJoin, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.LeftJoin, context: IActionContext):\n Promise {\n // Delegate to join bus\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n const joined = await this.mediatorJoin.mediate({ type: 'optional', entries, context });\n\n // If the pattern contains an expression, filter the resulting stream\n if (operationOriginal.expression) {\n const rightMetadata = await entries[1].output.metadata();\n const expressionVariables = rightMetadata.variables;\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(operationOriginal.expression, config);\n const bindingsStream = joined.bindingsStream\n .transform({\n autoStart: false,\n // eslint-disable-next-line ts/no-misused-promises\n transform: async(bindings: Bindings, done: () => void, push: (item: Bindings) => void) => {\n // If variables of the right-hand entry are missing, we skip expression evaluation\n if (!expressionVariables.every(variable => bindings.has(variable.value))) {\n push(bindings);\n return done();\n }\n\n try {\n const result = await evaluator.evaluateAsEBV(bindings);\n if (result) {\n push(bindings);\n }\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // Left Join is defined in terms of Filter (https://www.w3.org/TR/sparql11-query/#defn_algJoin),\n // and Filter requires this (https://www.w3.org/TR/sparql11-query/#expressions).\n if (isExpressionError(error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings }));\n } else {\n bindingsStream.emit('error', error);\n }\n }\n done();\n },\n });\n joined.bindingsStream = bindingsStream;\n }\n\n return joined;\n }\n}\n\nexport interface IActorQueryOperationLeftJoinArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Minus Query Operation Actor.\n */\nexport class ActorQueryOperationMinus extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationMinusArgs) {\n super(args, 'minus');\n }\n\n public async testOperation(_operation: Algebra.Minus, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.Minus,\n context: IActionContext,\n ): Promise {\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n\n return this.mediatorJoin.mediate({ type: 'minus', entries, context });\n }\n}\n\nexport interface IActorQueryOperationMinusArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { SingletonIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation)\n * actor that handles SPARQL nop operations.\n */\nexport class ActorQueryOperationNop extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationNopArgs) {\n super(args, 'nop');\n }\n\n public async testOperation(_operation: Algebra.Nop, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Nop, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n return {\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n };\n }\n}\n\nexport interface IActorQueryOperationNopArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError, orderTypes } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Term } from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { SortIterator } from './SortIterator';\n\n/**\n * A comunica OrderBy Sparqlee Query Operation Actor.\n */\nexport class ActorQueryOperationOrderBy extends ActorQueryOperationTypedMediated {\n private readonly window: number;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationOrderBySparqleeArgs) {\n super(args, 'orderby');\n this.window = args.window ?? Number.POSITIVE_INFINITY;\n }\n\n public async testOperation(operation: Algebra.OrderBy, context: IActionContext): Promise {\n // Will throw error for unsupported operators\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n for (let expr of operation.expressions) {\n expr = this.extractSortExpression(expr);\n const _ = new AsyncEvaluator(\n expr,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n );\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.OrderBy, context: IActionContext):\n Promise {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n\n const options = { window: this.window };\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const sparqleeConfig = {\n ...ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n };\n let { bindingsStream } = output;\n\n // Sorting backwards since the first one is the most important therefore should be ordered last.\n for (let i = operation.expressions.length - 1; i >= 0; i--) {\n let expr = operation.expressions[i];\n const isAscending = this.isAscending(expr);\n expr = this.extractSortExpression(expr);\n // Transform the stream by annotating it with the expr result\n const evaluator = new AsyncEvaluator(expr, sparqleeConfig);\n interface IAnnotatedBinding {\n bindings: Bindings;\n result: Term | undefined;\n }\n\n const transform = async(bindings: Bindings, next: any, push: (result: IAnnotatedBinding) => void):\n Promise => {\n try {\n const result = await evaluator.evaluate(bindings);\n push({ bindings, result });\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // I can't recall where this is defined in the spec.\n if (!isExpressionError( error)) {\n bindingsStream.emit('error', error);\n }\n push({ bindings, result: undefined });\n }\n next();\n };\n // eslint-disable-next-line ts/no-misused-promises\n const transformedStream = bindingsStream.transform({ transform });\n\n // Sort the annoted stream\n const sortedStream = new SortIterator(transformedStream, (left, right) => {\n let compare = orderTypes(left.result, right.result);\n if (!isAscending) {\n compare *= -1;\n }\n return compare;\n }, options);\n\n // Remove the annotation\n bindingsStream = sortedStream.map(({ bindings }) => bindings);\n }\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n\n // Remove descending operator if necessary\n private extractSortExpression(expr: Algebra.Expression): Algebra.Expression {\n const { expressionType, operator } = expr;\n if (expressionType !== Algebra.expressionTypes.OPERATOR) {\n return expr;\n }\n return operator === 'desc' ?\n expr.args[0] :\n expr;\n }\n\n private isAscending(expr: Algebra.Expression): boolean {\n const { expressionType, operator } = expr;\n if (expressionType !== Algebra.expressionTypes.OPERATOR) {\n return true;\n }\n return operator !== 'desc';\n }\n}\n\n/**\n * The window parameter determines how many of the elements to consider when sorting.\n */\nexport interface IActorQueryOperationOrderBySparqleeArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The size of the window for the sort iterator.\n * @range {integer}\n */\n window?: number;\n}\n","import type { AsyncIterator } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\n\n// Based on https://github.com/LinkedDataFragments/Client.js/blob/master/lib/sparql/SortIterator.js\nexport class SortIterator extends TransformIterator {\n private readonly windowLength: number;\n private readonly sort: (left: T, right: T) => number;\n private readonly sorted: T[];\n\n public constructor(source: AsyncIterator, sort: (left: T, right: T) => number, options?: any) {\n super(source, options);\n\n // The `window` parameter indicates the length of the sliding window to apply sorting\n const window: number = options && options.window;\n this.windowLength = Number.isFinite(window) && window > 0 ? window : Number.POSITIVE_INFINITY;\n this.sort = sort;\n this.sorted = [];\n }\n\n // Reads the smallest item in the current sorting window\n public override _read(count: number, done: () => void): void {\n let item;\n let { length } = this.sorted;\n // Try to read items until we reach the desired window length\n while (length !== this.windowLength) {\n item = this.source!.read();\n if (item === null) {\n break;\n }\n // Insert the item in the sorted window (smallest last)\n let left = 0;\n let right = length - 1;\n let mid;\n let order;\n while (left <= right) {\n mid = Math.trunc((left + right) / 2);\n order = this.sort(item, this.sorted[mid]);\n if (order < 0) {\n left = mid + 1;\n } else if (order > 0) {\n right = mid - 1;\n } else {\n left = mid;\n right = -1;\n }\n }\n this.sorted.splice(left, 0, item);\n length++;\n }\n // Push the smallest item in the window\n if (length === this.windowLength) {\n this._push(this.sorted.pop()!);\n }\n done();\n }\n\n // Flushes remaining data after the source has ended\n public override _flush(done: () => void): void {\n let { length } = this.sorted;\n while (length--) {\n this._push(this.sorted.pop()!);\n }\n done();\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { ActorQueryOperationUnion } from '@comunica/actor-query-operation-union';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type {\n IQueryOperationResultBindings,\n IQueryOperationResult,\n IActionContext,\n MetadataBindings,\n} from '@comunica/types';\nimport { UnionIterator } from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Alt Query Operation Actor.\n */\nexport class ActorQueryOperationPathAlt extends ActorAbstractPath {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationPathAltArgs) {\n super(args, Algebra.types.ALT);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n\n const subOperations: IQueryOperationResultBindings[] = (await Promise.all(predicate.input\n .map(subPredicate => this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY\n .createPath(operation.subject, subPredicate, operation.object, operation.graph),\n }))))\n .map(ActorQueryOperation.getSafeBindings);\n\n const bindingsStream = new UnionIterator(subOperations.map(op => op.bindingsStream), { autoStart: false });\n const metadata: (() => Promise) = () =>\n Promise.all(subOperations.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\n\nexport interface IActorQueryOperationPathAltArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Inv Query Operation Actor.\n */\nexport class ActorQueryOperationPathInv extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.INV);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n const invPath = ActorAbstractPath.FACTORY\n .createPath(operation.object, predicate.path, operation.subject, operation.graph);\n return this.mediatorQueryOperation.mediate({ operation: invPath, context });\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Link Query Operation Actor.\n */\nexport class ActorQueryOperationPathLink extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.LINK);\n }\n\n public async runOperation(\n operationOriginal: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const predicate = operationOriginal.predicate;\n const operation = Object.assign(ActorAbstractPath.FACTORY.createPattern(\n operationOriginal.subject,\n predicate.iri,\n operationOriginal.object,\n operationOriginal.graph,\n ), { metadata: predicate.metadata });\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Nps Query Operation Actor.\n */\nexport class ActorQueryOperationPathNps extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.NPS);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n const blank = this.generateVariable(operation);\n\n const pattern = Object.assign(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, blank, operation.object, operation.graph), { metadata: predicate.metadata });\n const output = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: pattern, context }),\n );\n\n // Remove the generated blank nodes from the bindings\n const bindingsStream = output.bindingsStream\n .map(bindings => predicate.iris.some(iri => iri.equals(bindings.get(blank))) ? null : bindings.delete(blank));\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IQueryOperationResultBindings, Bindings, IQueryOperationResult, IActionContext } from '@comunica/types';\nimport { BufferedIterator, MultiTransformIterator, TransformIterator } from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path OneOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathOneOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathOneOrMoreArgs) {\n super(args, Algebra.types.ONE_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = operation.predicate;\n\n if (operation.subject.termType !== 'Variable' && operation.object.termType === 'Variable') {\n const objectVar = operation.object;\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n objectVar,\n operation.graph,\n context,\n false,\n bindingsFactory,\n );\n const variables = operation.graph.termType === 'Variable' ? [ objectVar, operation.graph ] : [ objectVar ];\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Get all the results of subjects with same predicate, but once, then fill in first variable for those\n const single = ActorAbstractPath.FACTORY.createDistinct(\n ActorAbstractPath.FACTORY\n .createPath(operation.subject, operation.predicate.path, operation.object, operation.graph),\n );\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n const subject = bindings.get(subjectVar);\n const object = bindings.get(objectVar);\n const graph = operation.graph.termType === 'Variable' ? bindings.get(operation.graph) : operation.graph;\n return new TransformIterator(\n async() => {\n const it = new BufferedIterator();\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject!,\n object!,\n predicate.path,\n graph!,\n context,\n termHashes,\n {},\n it,\n { count: 0 },\n bindingsFactory,\n );\n return it.transform({\n transform(item, next, push) {\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph!);\n }\n push(item);\n next();\n },\n });\n },\n { maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n const variables = operation.graph.termType === 'Variable' ?\n [ subjectVar, objectVar, operation.graph ] :\n [ subjectVar, objectVar ];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType !== 'Variable') {\n return > this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createPath(\n operation.object,\n ActorAbstractPath.FACTORY.createOneOrMorePath(\n ActorAbstractPath.FACTORY.createInv(predicate.path),\n ),\n operation.subject,\n operation.graph,\n ),\n });\n }\n // If (!sVar && !oVar)\n const variable = this.generateVariable();\n const results = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createPath(operation.subject, predicate, variable, operation.graph),\n }));\n const bindingsStream = results.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n const binding = operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await results.metadata(),\n variables: operation.graph.termType === 'Variable' ? [ operation.graph ] : [],\n }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathOneOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { Bindings, IActionContext, IQueryOperationResult, IJoinEntry } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Seq Query Operation Actor.\n */\nexport class ActorQueryOperationPathSeq extends ActorAbstractPath {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationPathSeq) {\n super(args, Algebra.types.SEQ);\n }\n\n public async runOperation(\n operationOriginal: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const predicate = operationOriginal.predicate;\n\n let joiner: RDF.Term = operationOriginal.subject;\n const generatedVariableNames: RDF.Variable[] = [];\n const entries: IJoinEntry[] = await Promise.all(predicate.input\n .map((subPredicate, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? operationOriginal.object : this.generateVariable(operationOriginal, `b${i}`);\n const operation = ActorAbstractPath.FACTORY\n .createPath(joiner, subPredicate, nextJoiner, operationOriginal.graph);\n const output = this.mediatorQueryOperation.mediate({\n context,\n operation,\n });\n\n joiner = nextJoiner;\n if (i < predicate.input.length - 1) {\n generatedVariableNames.push(nextJoiner);\n }\n\n return { output, operation };\n })\n .map(async({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(await output),\n operation,\n })));\n\n const join = ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: 'inner', entries, context }));\n // Remove the generated variable from the bindings\n const bindingsStream = join.bindingsStream.transform({\n transform(item, next, push) {\n for (const generatedVariableName of generatedVariableNames) {\n item = item.delete(generatedVariableName);\n }\n push(item);\n next();\n },\n });\n\n // Remove the generated variable from the list of variables\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const joinMetadata = await join.metadata();\n const variables = joinMetadata.variables.filter(variable => !generatedVariableNames\n .some(generatedVariableName => generatedVariableName.value === variable.value));\n return { ...joinMetadata, variables };\n },\n };\n }\n}\n\nexport interface IActorQueryOperationPathSeq extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { Bindings, IQueryOperationResult, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { MultiTransformIterator, TransformIterator, EmptyIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path ZeroOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathZeroOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathZeroOrMoreArgs) {\n super(args, Algebra.types.ZERO_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = operation.predicate;\n const sources = this.getPathSources(predicate);\n\n const sVar = operation.subject.termType === 'Variable';\n const oVar = operation.object.termType === 'Variable';\n\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Query ?s ?p ?o, to get all possible namedNodes in de the db\n const predVar = this.generateVariable(operation);\n const single = this.assignPatternSources(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, predVar, operation.object, operation.graph), sources);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n // Set with all namedNodes we have already started a predicate* search from\n const entities: Set = new Set();\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n // Get the subject and object of the triples (?s ?p ?o) and extract graph if it was a variable\n const subject: RDF.Term = bindings.get(subjectVar)!;\n const object: RDF.Term = bindings.get(objectVar)!;\n const graph: RDF.Term = operation.graph.termType === 'Variable' ?\n bindings.get(operation.graph)! :\n operation.graph;\n // Make a hash of namedNode + graph to remember from where we already started a search\n const subjectGraphHash = termToString(subject) + termToString(graph);\n const objectGraphHash = termToString(object) + termToString(graph);\n return new TransformIterator(\n async() => {\n // If no new namedNodes in this triple, return nothing\n if (entities.has(subjectGraphHash) && entities.has(objectGraphHash)) {\n return new EmptyIterator();\n }\n // Set up an iterator to which getSubjectAndObjectBindingsPredicateStar will push solutions\n const it = new BufferedIterator();\n const counter = { count: 0 };\n // If not started from this namedNode (subject in triple) in this graph, start a search\n if (!entities.has(subjectGraphHash)) {\n entities.add(subjectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject,\n subject,\n predicate.path,\n graph,\n context,\n termHashes,\n {},\n it,\n counter,\n bindingsFactory,\n );\n }\n // If not started from this namedNode (object in triple) in this graph, start a search\n if (!entities.has(objectGraphHash)) {\n entities.add(objectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n object,\n object,\n predicate.path,\n graph,\n context,\n termHashes,\n {},\n it,\n counter,\n bindingsFactory,\n );\n }\n return it.transform({\n transform(item, next, push) {\n // If the graph was a variable, fill in it's binding (we got it from the ?s ?p ?o binding)\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph);\n }\n push(item);\n next();\n },\n });\n },\n );\n },\n },\n );\n const variables: RDF.Variable[] = operation.graph.termType === 'Variable' ?\n [ subjectVar, operation.object, operation.graph ] :\n [ subjectVar, operation.object ];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (!sVar && !oVar) {\n const variable = this.generateVariable();\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n variable,\n operation.graph,\n context,\n true,\n bindingsFactory,\n );\n // Check this\n const bindingsStream = starEval.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n // Return graph binding if graph was a variable, otherwise empty binding\n const binding = operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await starEval.metadata(),\n variables: operation.graph.termType === 'Variable' ? [ operation.graph ] : [],\n }),\n };\n }\n // If (sVar || oVar)\n const subject = sVar ? operation.object : operation.subject;\n const value: RDF.Variable = (sVar ? operation.subject : operation.object);\n const pred = sVar ? ActorAbstractPath.FACTORY.createInv(predicate.path) : predicate.path;\n const starEval = await this.getObjectsPredicateStarEval(\n subject,\n pred,\n value,\n operation.graph,\n context,\n true,\n bindingsFactory,\n );\n const variables: RDF.Variable[] = operation.graph.termType === 'Variable' ? [ value, operation.graph ] : [ value ];\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathZeroOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { Bindings, IQueryOperationResult, IActionContext, BindingsStream } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport {\n SingletonIterator,\n UnionIterator,\n} from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path ZeroOrOne Query Operation Actor.\n */\nexport class ActorQueryOperationPathZeroOrOne extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathZeroOrOneArgs) {\n super(args, Algebra.types.ZERO_OR_ONE_PATH);\n }\n\n public async runOperation(\n operation: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const predicate = operation.predicate;\n const sources = this.getPathSources(predicate);\n\n const extra: Bindings[] = [];\n\n // Both subject and object non-variables\n if (operation.subject.termType !== 'Variable' &&\n operation.object.termType !== 'Variable' &&\n operation.subject.equals(operation.object)) {\n return {\n type: 'bindings',\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n };\n }\n\n // Check if we require a distinct path operation\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n context = distinct.context;\n\n // Create an operator that resolve to the \"One\" part\n const bindingsOne = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY\n .createPath(operation.subject, predicate.path, operation.object, operation.graph),\n }));\n\n // Determine the bindings stream based on the variable-ness of subject and object\n let bindingsStream: BindingsStream;\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Both subject and object are variables\n // To determine the \"Zero\" part, we\n // query ?s ?p ?o. FILTER ?s = ?0, to get all possible namedNodes in de the db\n const varP = this.generateVariable(operation);\n const bindingsZero = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createFilter(\n this.assignPatternSources(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, varP, operation.object, operation.graph), sources),\n ActorAbstractPath.FACTORY.createOperatorExpression('=', [\n ActorAbstractPath.FACTORY.createTermExpression(operation.subject),\n ActorAbstractPath.FACTORY.createTermExpression(operation.object),\n ]),\n ),\n }),\n ).bindingsStream.map(bindings => bindings.delete(varP));\n bindingsStream = new UnionIterator([\n bindingsZero,\n bindingsOne.bindingsStream,\n ], { autoStart: false });\n } else {\n // If subject or object is not a variable, then determining the \"Zero\" part is simple.\n if (operation.subject.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.subject, operation.object ]]));\n }\n if (operation.object.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.object, operation.subject ]]));\n }\n\n bindingsStream = bindingsOne.bindingsStream.prepend(extra);\n }\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: bindingsOne.metadata,\n };\n }\n}\nexport interface IActorQueryOperationPathZeroOrOneArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { BlankNodeBindingsScoped } from '@comunica/data-factory';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Project Query Operation Actor.\n */\nexport class ActorQueryOperationProject extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'project');\n }\n\n public async testOperation(_operation: Algebra.Project, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Project, context: IActionContext):\n Promise {\n // Resolve the input\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: operation.input, context }),\n );\n\n // Find all variables that should be deleted from the input stream.\n const outputMetadata = await output.metadata();\n const variables = operation.variables;\n const deleteVariables = outputMetadata.variables\n .filter(variable => !variables.some(subVariable => variable.value === subVariable.value));\n\n // Error if there are variables that are not bound in the input stream.\n const missingVariables = variables\n .filter(variable => !outputMetadata.variables.some(subVariable => variable.value === subVariable.value));\n if (missingVariables.length > 0) {\n outputMetadata.canContainUndefs = true;\n }\n\n // Make sure the project variables are the only variables that are present in the bindings.\n let bindingsStream: BindingsStream = deleteVariables.length === 0 ?\n output.bindingsStream :\n output.bindingsStream.map((bindings: Bindings) => {\n for (const deleteVariable of deleteVariables) {\n bindings = bindings.delete(deleteVariable);\n }\n return bindings;\n });\n\n // Make sure that blank nodes with same labels are not reused over different bindings, as required by SPARQL 1.1.\n // Required for the BNODE() function: https://www.w3.org/TR/sparql11-query/#func-bnode\n // When we have a scoped blank node, make sure the skolemized value is maintained.\n let blankNodeCounter = 0;\n bindingsStream = bindingsStream.map((bindings: Bindings) => {\n blankNodeCounter++;\n const scopedBlankNodesCache = new Map();\n return bindings.map((term) => {\n if (term instanceof BlankNodeBindingsScoped) {\n let scopedBlankNode = scopedBlankNodesCache.get(term.value);\n if (!scopedBlankNode) {\n scopedBlankNode = DF.blankNode(`${term.value}${blankNodeCounter}`);\n scopedBlankNodesCache.set(term.value, scopedBlankNode);\n }\n return scopedBlankNode;\n }\n return term;\n });\n });\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...outputMetadata, variables }),\n };\n }\n}\n","import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Reduced Hash Query Operation Actor.\n */\nexport class ActorQueryOperationReducedHash extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly cacheSize: number;\n\n public constructor(args: IActorQueryOperationReducedHashArgs) {\n super(args, 'reduced');\n }\n\n public async testOperation(_operation: Algebra.Reduced, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Reduced, context: IActionContext): Promise {\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: operation.input, context }),\n );\n const bindingsStream: BindingsStream = output.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n public async newHashFilter(context: IActionContext): Promise<(bindings: Bindings) => boolean> {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes = new LRUCache({ max: this.cacheSize });\n return (bindings: Bindings) => {\n const hash: string = hashFunction(bindings);\n if (hashes.has(hash)) {\n return false;\n }\n hashes.set(hash, true);\n return true;\n };\n }\n}\n\nexport interface IActorQueryOperationReducedHashArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n /**\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IActionContext, IQueryOperationResult, IQueryOperationResultBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { SingletonIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Service Query Operation Actor.\n * It unwraps the SERVICE operation and executes it on the given source.\n */\nexport class ActorQueryOperationService extends ActorQueryOperationTypedMediated {\n public readonly forceSparqlEndpoint: boolean;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n\n public constructor(args: IActorQueryOperationServiceArgs) {\n super(args, 'service');\n }\n\n public async testOperation(operation: Algebra.Service, _context: IActionContext): Promise {\n if (operation.name.termType !== 'NamedNode') {\n throw new Error(`${this.name} can only query services by IRI, while a ${operation.name.termType} was given.`);\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.Service, context: IActionContext):\n Promise {\n // Identify the SERVICE target as query source\n const { querySource } = await this.mediatorQuerySourceIdentify.mediate({\n querySourceUnidentified: {\n value: operation.name.value,\n type: this.forceSparqlEndpoint ? 'sparql' : undefined,\n },\n context,\n });\n\n // Attach the source to the operation, and execute\n let output: IQueryOperationResultBindings;\n try {\n output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n operation: ActorQueryOperation.assignOperationSource(operation.input, querySource),\n context,\n }));\n } catch (error: unknown) {\n if (operation.silent) {\n // Emit a single empty binding\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n output = {\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n type: 'bindings',\n metadata: async() => ({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n };\n this.logWarn(context, `An error occurred when executing a SERVICE clause: ${( error).message}`);\n } else {\n throw error;\n }\n }\n\n return output;\n }\n}\n\nexport interface IActorQueryOperationServiceArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * If the SERVICE target should be assumed to be a SPARQL endpoint.\n * @default {false}\n */\n forceSparqlEndpoint: boolean;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The mediator for identifying query sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n IQueryOperationResultStream,\n IMetadata,\n IActionContext,\n} from '@comunica/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Slice Query Operation Actor.\n */\nexport class ActorQueryOperationSlice extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'slice');\n }\n\n public async testOperation(_operation: Algebra.Slice, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Slice, context: IActionContext):\n Promise {\n // Add limit indicator to the context, which can be used for query planning\n // eslint-disable-next-line unicorn/explicit-length-check\n if (operation.length) {\n context = context.set(KeysQueryOperation.limitIndicator, operation.length);\n }\n\n // Resolve the input\n const output: IQueryOperationResult = await this.mediatorQueryOperation\n .mediate({ operation: operation.input, context });\n\n if (output.type === 'bindings') {\n const bindingsStream = this.sliceStream(output.bindingsStream, operation);\n return {\n type: 'bindings',\n bindingsStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n\n if (output.type === 'quads') {\n const quadStream = this.sliceStream(output.quadStream, operation);\n return {\n type: 'quads',\n quadStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n\n // In all other cases, return the result as-is.\n return output;\n }\n\n // Slice the stream based on the pattern values\n private sliceStream(stream: AsyncIterator, pattern: Algebra.Slice): AsyncIterator {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength: boolean = Boolean(pattern.length) || pattern.length === 0;\n const { start } = pattern;\n const end = hasLength ? pattern.start + pattern.length! - 1 : Number.POSITIVE_INFINITY;\n return stream.transform({ offset: start, limit: Math.max(end - start + 1, 0), autoStart: false });\n }\n\n // If we find metadata, apply slicing on the total number of items\n private sliceMetadata(\n output: IQueryOperationResultStream,\n pattern: Algebra.Slice,\n ): () => Promise> {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength: boolean = Boolean(pattern.length) || pattern.length === 0;\n return () => (<() => Promise>>output.metadata)()\n .then((subMetadata) => {\n const cardinality = { ...subMetadata.cardinality };\n if (Number.isFinite(cardinality.value)) {\n cardinality.value = Math.max(0, cardinality.value - pattern.start);\n if (hasLength) {\n cardinality.value = Math.min(cardinality.value, pattern.length!);\n }\n }\n return { ...subMetadata, cardinality };\n });\n }\n}\n","import type { IActionQueryOperation, IActorQueryOperationArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { getMetadataBindings, getMetadataQuads } from '@comunica/metadata';\nimport type {\n IPhysicalQueryPlanLogger,\n IQueryOperationResult,\n IQuerySourceWrapper,\n} from '@comunica/types';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Source Query Operation Actor.\n */\nexport class ActorQueryOperationSource extends ActorQueryOperation {\n public constructor(args: IActorQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryOperation): Promise {\n if (!ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} requires an operation with source annotation.`);\n }\n return { httpRequests: 1 };\n }\n\n public async run(action: IActionQueryOperation): Promise {\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context\n .get(KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(\n action.operation.type,\n undefined,\n action.operation,\n action.context.get(KeysInitQuery.physicalQueryPlanNode),\n this.name,\n {},\n );\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(action.operation)!;\n const mergedContext = sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context;\n\n // Check if the operation is a CONSTRUCT query\n // We recurse because it may be wrapped in other operations such as SLICE and FROM\n let construct = false;\n Util.recurseOperation(action.operation, {\n construct(): boolean {\n construct = true;\n return false;\n },\n });\n // If so, delegate to queryQuads\n if (construct) {\n const quadStream = sourceWrapper.source.queryQuads(action.operation, mergedContext);\n const metadata = getMetadataQuads(quadStream);\n return {\n type: 'quads',\n quadStream,\n metadata,\n };\n }\n\n // eslint-disable-next-line ts/switch-exhaustiveness-check\n switch (action.operation.type) {\n case Algebra.types.ASK:\n return {\n type: 'boolean',\n execute: () => sourceWrapper.source.queryBoolean(action.operation, mergedContext),\n };\n case Algebra.types.COMPOSITE_UPDATE:\n case Algebra.types.DELETE_INSERT:\n case Algebra.types.LOAD:\n case Algebra.types.CLEAR:\n case Algebra.types.CREATE:\n case Algebra.types.DROP:\n case Algebra.types.ADD:\n case Algebra.types.MOVE:\n case Algebra.types.COPY:\n return {\n type: 'void',\n execute: () => sourceWrapper.source.queryVoid(action.operation, mergedContext),\n };\n }\n\n const bindingsStream = sourceWrapper.source.queryBindings(action.operation, mergedContext);\n const metadata = getMetadataBindings(bindingsStream);\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n BindingsStream,\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataBindings,\n MetadataQuads,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { UnionIterator } from 'asynciterator';\nimport { uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Union Query Operation Actor.\n */\nexport class ActorQueryOperationUnion extends ActorQueryOperationTypedMediated {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationUnionArgs) {\n super(args, 'union');\n }\n\n /**\n * Takes the union of the given double array variables.\n * Uniqueness is guaranteed.\n * @param {string[][]} variables Double array of variables to take the union of.\n * @return {string[]} The union of the given variables.\n */\n public static unionVariables(variables: RDF.Variable[][]): RDF.Variable[] {\n return uniqTerms(variables.flat());\n }\n\n /**\n * Takes the union of the given metadata array.\n * It will ensure that the cardinality metadata value is properly calculated.\n * @param {{[p: string]: any}[]} metadatas Array of metadata.\n * @param bindings If the union of the variables field should also be taken.\n * @param context The action context\n * @param mediatorRdfMetadataAccumulate Mediator for metadata accumulation\n * @return {{[p: string]: any}} Union of the metadata.\n */\n public static async unionMetadata<\n Bindings extends boolean,\n M extends (Bindings extends true ? MetadataBindings : MetadataQuads),\n >(\n metadatas: M[],\n bindings: Bindings,\n context: IActionContext,\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate,\n // eslint-disable-next-line function-paren-newline\n ): Promise {\n let accumulatedMetadata: M = (await mediatorRdfMetadataAccumulate\n .mediate({ mode: 'initialize', context })).metadata;\n\n // Accumulate cardinality\n for (const appendingMetadata of metadatas) {\n accumulatedMetadata = {\n ...appendingMetadata,\n ...(await mediatorRdfMetadataAccumulate\n .mediate({\n mode: 'append',\n accumulatedMetadata: accumulatedMetadata,\n appendingMetadata: appendingMetadata,\n context,\n })).metadata,\n };\n }\n\n // Create new metadata state\n accumulatedMetadata.state = new MetadataValidationState();\n\n // Propagate metadata invalidations\n const invalidateListener = (): void => accumulatedMetadata.state.invalidate();\n for (const metadata of metadatas) {\n metadata.state.addInvalidateListener(invalidateListener);\n }\n\n // Union variables\n if (bindings) {\n accumulatedMetadata.variables = ActorQueryOperationUnion\n .unionVariables(metadatas.map(metadata => metadata.variables));\n }\n\n return accumulatedMetadata;\n }\n\n public async testOperation(_operation: Algebra.Union, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Union, context: IActionContext):\n Promise {\n // Determine the type over which we are taking a union\n const outputsRaw = await Promise.all(operation.input\n .map(subOperation => this.mediatorQueryOperation.mediate({ operation: subOperation, context })));\n let outputType: string | undefined;\n for (const output of outputsRaw) {\n if (outputType === undefined) {\n outputType = output.type;\n } else if (outputType !== output.type) {\n throw new Error(`Unable to union ${outputType} and ${output.type}`);\n }\n }\n\n // Handle bindings\n if (outputType === 'bindings' || operation.input.length === 0) {\n const outputs: IQueryOperationResultBindings[] = outputsRaw.map(ActorQueryOperation.getSafeBindings);\n\n const bindingsStream: BindingsStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultBindings) => output.bindingsStream,\n ), { autoStart: false });\n\n const metadata: () => Promise = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'bindings', bindingsStream, metadata };\n }\n\n // Handle quads\n if (outputType === 'quads') {\n const outputs: IQueryOperationResultQuads[] = outputsRaw.map(ActorQueryOperation.getSafeQuads);\n\n const quadStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultQuads) => output.quadStream,\n ), { autoStart: false });\n\n const metadata: () => Promise = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, false, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'quads', quadStream, metadata };\n }\n\n // Throw otherwise\n throw new Error(`Unable to union ${outputType}`);\n }\n}\n\nexport interface IActorQueryOperationUnionArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type {\n MediatorRdfUpdateQuads,\n} from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL clear operations.\n */\nexport class ActorQueryOperationClear extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationClearArgs) {\n super(args, 'clear');\n }\n\n public async testOperation(operation: Algebra.Clear, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Clear, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n let graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n } else if (typeof operation.source === 'string') {\n graphs = operation.source;\n } else {\n graphs = [ operation.source ];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: false,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationClearArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Update CompositeUpdate Query Operation Actor.\n */\nexport class ActorQueryOperationUpdateCompositeUpdate\n extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'compositeupdate');\n }\n\n public async testOperation(\n operation: Algebra.CompositeUpdate,\n context: IActionContext,\n ): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.CompositeUpdate, context: IActionContext):\n Promise {\n const execute = (): Promise => (async(): Promise => {\n // Execute update operations in sequence\n for (const operation of operationOriginal.updates) {\n const subResult = ActorQueryOperation\n .getSafeVoid(await this.mediatorQueryOperation.mediate({ operation, context }));\n await subResult.execute();\n }\n })();\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor that\n * handles SPARQL create operations.\n */\nexport class ActorQueryOperationCreate extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationCreateArgs) {\n super(args, 'create');\n }\n\n public async testOperation(operation: Algebra.Create, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Create, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n const { execute } = await this.mediatorUpdateQuads.mediate({\n createGraphs: {\n graphs: [ operation.source ],\n requireNonExistence: !operation.silent,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationCreateArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import { BindingsToQuadsIterator } from '@comunica/actor-query-operation-construct';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryOperationResult, BindingsStream, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Update DeleteInsert Query Operation Actor.\n */\nexport class ActorQueryOperationUpdateDeleteInsert extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n protected blankNodeCounter = 0;\n\n public constructor(args: IActorQueryOperationUpdateDeleteInsertArgs) {\n super(args, 'deleteinsert');\n }\n\n public async testOperation(\n operation: Algebra.DeleteInsert,\n context: IActionContext,\n ): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.DeleteInsert, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Evaluate the where clause\n const whereBindings: BindingsStream = operation.where ?\n ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation\n .mediate({ operation: operation.where, context })).bindingsStream :\n new ArrayIterator([ bindingsFactory.bindings() ], { autoStart: false });\n\n // Construct triples using the result based on the pattern.\n let quadStreamInsert: AsyncIterator | undefined;\n let quadStreamDelete: AsyncIterator | undefined;\n if (operation.insert) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamInsert = new BindingsToQuadsIterator(\n operation.insert.map(BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)),\n whereBindings.clone(),\n );\n this.blankNodeCounter++;\n }\n if (operation.delete) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamDelete = new BindingsToQuadsIterator(\n operation.delete.map(BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)),\n whereBindings.clone(),\n );\n this.blankNodeCounter++;\n }\n\n // Evaluate the required modifications\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert,\n quadStreamDelete,\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationUpdateDeleteInsertArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL drop operations.\n */\nexport class ActorQueryOperationDrop extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationDropArgs) {\n super(args, 'drop');\n }\n\n public async testOperation(operation: Algebra.Drop, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Drop, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n let graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n } else if (typeof operation.source === 'string') {\n graphs = operation.source;\n } else {\n graphs = [ operation.source ];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: true,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationDropArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL load operations.\n */\nexport class ActorQueryOperationLoad extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n\n private readonly factory: Factory;\n private readonly constructOperation: Algebra.Construct;\n\n public constructor(args: IActorQueryOperationLoadArgs) {\n super(args, 'load');\n this.factory = new Factory();\n }\n\n public async testOperation(operation: Algebra.Load, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Load, context: IActionContext):\n Promise {\n // Determine query source\n let subContext = context;\n if (operation.silent) {\n subContext = subContext.set(KeysInitQuery.lenient, true);\n }\n const { querySource } = await this.mediatorQuerySourceIdentify.mediate({\n querySourceUnidentified: { value: operation.source.value },\n context: subContext,\n });\n\n // Create CONSTRUCT query on the given source\n const output = ActorQueryOperationLoad.getSafeQuads(await this.mediatorQueryOperation.mediate({\n operation: this.factory.createConstruct(\n ActorQueryOperation.assignOperationSource(\n this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')),\n querySource,\n ),\n [ this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')) ],\n ),\n context: subContext,\n }));\n\n // Determine quad stream to insert\n let quadStream = output.quadStream;\n if (operation.destination) {\n quadStream = quadStream.map(quad => DF.quad(quad.subject, quad.predicate, quad.object, operation.destination));\n }\n\n // Insert quad stream\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert: quadStream,\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationLoadArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n /**\n * Mediator for identifying load sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTyped } from '@comunica/bus-query-operation';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQueryOperationResult,\n BindingsStream,\n Bindings,\n IActionContext,\n MetadataBindings,\n} from '@comunica/types';\nimport { ArrayIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Values Query Operation Actor.\n */\nexport class ActorQueryOperationValues extends ActorQueryOperationTyped {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationUpdateDeleteInsertArgs) {\n super(args, 'values');\n }\n\n public async testOperation(_operation: Algebra.Values, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Values, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const bindingsStream: BindingsStream = new ArrayIterator(operation.bindings\n .map(x => bindingsFactory.bindings(Object.entries(x)\n .map(([ key, value ]) => [ DF.variable(key.slice(1)), value ]))));\n const variables = operation.variables;\n const metadata = (): Promise => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: operation.bindings.length },\n canContainUndefs: operation.bindings.some(bindings => variables.some(variable => !(`?${variable.value}` in bindings))),\n variables,\n });\n return { type: 'bindings', bindingsStream, metadata };\n }\n}\n\nexport interface IActorQueryOperationUpdateDeleteInsertArgs extends\n IActorArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActionQueryParse, IActorQueryParseArgs, IActorQueryParseOutput } from '@comunica/bus-query-parse';\nimport { ActorQueryParse } from '@comunica/bus-query-parse';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { Converter } from 'graphql-to-sparql';\n\n/**\n * A comunica GraphQL SPARQL Parse Actor.\n */\nexport class ActorQueryParseGraphql extends ActorQueryParse {\n private readonly graphqlToSparql: Converter;\n\n public constructor(args: IActorQueryParseArgs) {\n super(args);\n this.graphqlToSparql = new Converter({ requireContext: true });\n }\n\n public async test(action: IActionQueryParse): Promise {\n if (action.queryFormat?.language !== 'graphql') {\n throw new Error('This actor can only parse GraphQL queries');\n }\n return true;\n }\n\n public async run(action: IActionQueryParse): Promise {\n const context: any = action.context.get(KeysInitQuery.jsonLdContext) || {};\n const options = {\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n singularizeVariables: action.context.get(KeysInitQuery.graphqlSingularizeVariables),\n };\n return { operation: await this.graphqlToSparql.graphqlToSparqlAlgebra(action.query, context, options) };\n }\n}\n","import type { IActionQueryParse, IActorQueryParseArgs, IActorQueryParseOutput } from '@comunica/bus-query-parse';\nimport { ActorQueryParse } from '@comunica/bus-query-parse';\nimport type { IActorTest } from '@comunica/core';\nimport { translate } from 'sparqlalgebrajs';\nimport { Parser as SparqlParser } from 'sparqljs';\n\n/**\n * A comunica Algebra SPARQL Parse Actor.\n */\nexport class ActorQueryParseSparql extends ActorQueryParse {\n public readonly prefixes: Record;\n\n public constructor(args: IActorQueryParseSparqlArgs) {\n super(args);\n this.prefixes = Object.freeze(this.prefixes);\n }\n\n public async test(action: IActionQueryParse): Promise {\n if (action.queryFormat && action.queryFormat.language !== 'sparql') {\n throw new Error('This actor can only parse SPARQL queries');\n }\n return true;\n }\n\n public async run(action: IActionQueryParse): Promise {\n const parser = new SparqlParser({ prefixes: this.prefixes, baseIRI: action.baseIRI, sparqlStar: true });\n const parsedSyntax = parser.parse(action.query);\n const baseIRI = parsedSyntax.type === 'query' ? parsedSyntax.base : undefined;\n return {\n baseIRI,\n operation: translate(parsedSyntax, {\n quads: true,\n prefixes: this.prefixes,\n blankToVariable: true,\n baseIRI: action.baseIRI,\n }),\n };\n }\n}\n\nexport interface IActorQueryParseSparqlArgs extends IActorQueryParseArgs {\n /**\n * Default prefixes to use\n * @range {json}\n * @default {{\n * \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\n * \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\",\n * \"owl\": \"http://www.w3.org/2002/07/owl#\",\n * \"xsd\": \"http://www.w3.org/2001/XMLSchema#\",\n * \"dc\": \"http://purl.org/dc/terms/\",\n * \"dcterms\": \"http://purl.org/dc/terms/\",\n * \"dc11\": \"http://purl.org/dc/elements/1.1/\",\n * \"foaf\": \"http://xmlns.com/foaf/0.1/\",\n * \"geo\": \"http://www.w3.org/2003/01/geo/wgs84_pos#\",\n * \"dbpedia\": \"http://dbpedia.org/resource/\",\n * \"dbpedia-owl\": \"http://dbpedia.org/ontology/\",\n * \"dbpprop\": \"http://dbpedia.org/property/\",\n * \"schema\": \"http://schema.org/\",\n * \"skos\": \"http://www.w3.org/2008/05/skos#\"\n * }}\n */\n prefixes?: Record;\n}\n","import type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\n\n/**\n * A comunica Explain Logical Query Process Actor.\n */\nexport class ActorQueryProcessExplainLogical extends ActorQueryProcess {\n public readonly queryProcessor: IQueryProcessSequential;\n\n public constructor(args: IActorQueryProcessExplainLogicalArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n if ((action.context.get(KeysInitQuery.explain) ||\n action.context.get(new ActionContextKey('explain'))) !== 'logical') {\n throw new Error(`${this.name} can only explain in 'logical' mode.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Parse and optimize the query\n let { operation, context } = await this.queryProcessor.parse(action.query, action.context);\n ({ operation, context } = await this.queryProcessor.optimize(operation, context));\n\n return {\n result: {\n explain: true,\n type: 'logical',\n data: operation,\n },\n };\n }\n}\n\nexport interface IActorQueryProcessExplainLogicalArgs extends IActorQueryProcessArgs {\n queryProcessor: IQueryProcessSequential;\n}\n","import type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\n\n/**\n * A comunica Explain Parsed Query Process Actor.\n */\nexport class ActorQueryProcessExplainParsed extends ActorQueryProcess {\n public readonly queryProcessor: IQueryProcessSequential;\n\n public constructor(args: IActorQueryProcessExplainParsedArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n if ((action.context.get(KeysInitQuery.explain) ||\n action.context.get(new ActionContextKey('explain'))) !== 'parsed') {\n throw new Error(`${this.name} can only explain in 'parsed' mode.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Parse the query\n const { operation } = await this.queryProcessor.parse(action.query, action.context);\n\n return {\n result: {\n explain: true,\n type: 'parsed',\n data: operation,\n },\n };\n }\n}\n\nexport interface IActorQueryProcessExplainParsedArgs extends IActorQueryProcessArgs {\n queryProcessor: IQueryProcessSequential;\n}\n","import type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport { MemoryPhysicalQueryPlanLogger } from './MemoryPhysicalQueryPlanLogger';\n\n/**\n * A comunica Explain Physical Query Process Actor.\n */\nexport class ActorQueryProcessExplainPhysical extends ActorQueryProcess {\n public readonly queryProcessor: IQueryProcessSequential;\n\n public constructor(args: IActorQueryProcessExplainPhysicalArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n const mode = (action.context.get(KeysInitQuery.explain) || action.context.get(new ActionContextKey('explain')));\n if (mode !== 'physical' && mode !== 'physical-json') {\n throw new Error(`${this.name} can only explain in 'physical' or 'physical-json' mode.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Run all query processing steps in sequence\n\n let { operation, context } = await this.queryProcessor.parse(action.query, action.context);\n ({ operation, context } = await this.queryProcessor.optimize(operation, context));\n\n // If we need a physical query plan, store a physical query plan logger in the context, and collect it after exec\n const physicalQueryPlanLogger = new MemoryPhysicalQueryPlanLogger();\n context = context.set(KeysInitQuery.physicalQueryPlanLogger, physicalQueryPlanLogger);\n\n const output = await this.queryProcessor.evaluate(operation, context);\n\n // Make sure the whole result is produced\n switch (output.type) {\n case 'bindings':\n await output.bindingsStream.toArray();\n break;\n case 'quads':\n await output.quadStream.toArray();\n break;\n case 'boolean':\n await output.execute();\n break;\n case 'void':\n await output.execute();\n break;\n }\n\n const mode: 'physical' | 'physical-json' = (action.context.get(KeysInitQuery.explain) ??\n action.context.getSafe(new ActionContextKey('explain')));\n return {\n result: {\n explain: true,\n type: mode,\n data: mode === 'physical' ? physicalQueryPlanLogger.toCompactString() : physicalQueryPlanLogger.toJson(),\n },\n };\n }\n}\n\nexport interface IActorQueryProcessExplainPhysicalArgs extends IActorQueryProcessArgs {\n queryProcessor: IQueryProcessSequential;\n}\n","import type { IPhysicalQueryPlanLogger, IPlanNode } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A physical query plan logger that stores everything in memory.\n */\nexport class MemoryPhysicalQueryPlanLogger implements IPhysicalQueryPlanLogger {\n private readonly planNodes: Map;\n private rootNode: IPlanNode | undefined;\n\n public constructor() {\n this.planNodes = new Map();\n }\n\n public logOperation(\n logicalOperator: string,\n physicalOperator: string | undefined,\n node: any,\n parentNode: any,\n actor: string,\n metadata: any,\n ): void {\n const planNode: IPlanNode = {\n actor,\n logicalOperator,\n physicalOperator,\n rawNode: node,\n children: [],\n metadata,\n };\n this.planNodes.set(node, planNode);\n\n if (this.rootNode) {\n if (!parentNode) {\n throw new Error(`Detected more than one parent-less node`);\n }\n const planParentNode = this.planNodes.get(parentNode);\n if (!planParentNode) {\n throw new Error(`Could not find parent node`);\n }\n planParentNode.children.push(planNode);\n } else {\n if (parentNode) {\n throw new Error(`No root node has been set yet, while a parent is being referenced`);\n }\n this.rootNode = planNode;\n }\n }\n\n public stashChildren(node: any, filter?: (planNodeFilter: IPlanNode) => boolean): void {\n const planNode = this.planNodes.get(node);\n if (!planNode) {\n throw new Error(`Could not find plan node`);\n }\n planNode.children = filter ? planNode.children.filter(filter) : [];\n }\n\n public unstashChild(\n node: any,\n parentNode: any,\n ): void {\n const planNode = this.planNodes.get(node);\n if (planNode) {\n const planParentNode = this.planNodes.get(parentNode);\n if (!planParentNode) {\n throw new Error(`Could not find plan parent node`);\n }\n planParentNode.children.push(planNode);\n }\n }\n\n public appendMetadata(\n node: any,\n metadata: any,\n ): void {\n const planNode = this.planNodes.get(node);\n if (planNode) {\n planNode.metadata = {\n ...planNode.metadata,\n ...metadata,\n };\n }\n }\n\n public toJson(): IPlanNodeJson | Record {\n return this.rootNode ? this.planNodeToJson(this.rootNode) : {};\n }\n\n private planNodeToJson(node: IPlanNode): IPlanNodeJson {\n const data: IPlanNodeJson = {\n logical: node.logicalOperator,\n physical: node.physicalOperator,\n ...this.getLogicalMetadata(node.rawNode),\n ...this.compactMetadata(node.metadata),\n };\n\n if (node.children.length > 0) {\n data.children = node.children.map(child => this.planNodeToJson(child));\n }\n\n // Special case: compact children for bind joins.\n if (data.physical === 'bind' && data.children) {\n // Group children by query plan format\n const childrenGrouped: Record = {};\n for (const child of data.children) {\n const lastSubChild = child.children?.at(-1) ?? child;\n const key = this.getPlanHash(lastSubChild).join(',');\n if (!childrenGrouped[key]) {\n childrenGrouped[key] = [];\n }\n childrenGrouped[key].push(child);\n }\n\n // Compact query plan occurrences\n const childrenCompact: IPlanNodeJsonChildCompact[] = [];\n for (const children of Object.values(childrenGrouped)) {\n childrenCompact.push({\n occurrences: children.length,\n firstOccurrence: children[0],\n });\n }\n\n // Replace children with compacted representation\n data.childrenCompact = childrenCompact;\n delete data.children;\n }\n\n return data;\n }\n\n private getPlanHash(node: IPlanNodeJson): string[] {\n let entries = [ `${node.logical}-${node.physical}` ];\n if (node.children) {\n entries = [\n ...entries,\n ...node.children.flatMap(child => this.getPlanHash(child)),\n ];\n } else if (node.childrenCompact) {\n entries = [\n ...entries,\n ...node.childrenCompact.flatMap(child => this.getPlanHash(child.firstOccurrence)),\n ];\n }\n return entries;\n }\n\n private compactMetadata(metadata: any): any {\n return Object.fromEntries(Object.entries(metadata)\n .map(([ key, value ]) => [ key, this.compactMetadataValue(value) ]));\n }\n\n private compactMetadataValue(value: any): any {\n return value && typeof value === 'object' && 'termType' in value ? this.getLogicalMetadata(value) : value;\n }\n\n private getLogicalMetadata(rawNode: any): IPlanNodeJsonLogicalMetadata {\n const data: IPlanNodeJsonLogicalMetadata = {};\n\n if ('type' in rawNode) {\n const operation: Algebra.Operation = rawNode;\n\n if (operation.metadata?.scopedSource) {\n data.source = ( operation.metadata.scopedSource).source.toString();\n }\n\n // eslint-disable-next-line ts/switch-exhaustiveness-check\n switch (operation.type) {\n case 'pattern':\n data.pattern = this.quadToString(operation);\n break;\n case 'project':\n data.variables = operation.variables.map(variable => variable.value);\n break;\n }\n }\n\n return data;\n }\n\n private quadToString(quad: RDF.BaseQuad): string {\n return `${termToString(quad.subject)} ${termToString(quad.predicate)} ${termToString(quad.object)}${quad.graph.termType === 'DefaultGraph' ? '' : ` ${termToString(quad.graph)}`}`;\n }\n\n public toCompactString(): string {\n const node = this.toJson();\n const lines: string[] = [];\n const sources: Map = new Map();\n\n if ('logical' in node) {\n this.nodeToCompactString(lines, sources, '', node);\n } else {\n lines.push('Empty');\n }\n\n if (sources.size > 0) {\n lines.push('');\n lines.push('sources:');\n for (const [ key, id ] of sources.entries()) {\n lines.push(` ${id}: ${key}`);\n }\n }\n\n return lines.join('\\n');\n }\n\n public nodeToCompactString(\n lines: string[],\n sources: Map,\n indent: string,\n node: IPlanNodeJson,\n metadata?: string,\n ): void {\n let sourceId: number | undefined;\n if (node.source) {\n sourceId = sources.get(node.source);\n if (sourceId === undefined) {\n sourceId = sources.size;\n sources.set(node.source, sourceId);\n }\n }\n\n lines.push(`${\n indent}${\n node.logical}${\n node.physical ? `(${node.physical})` : ''}${\n node.pattern ? ` (${node.pattern})` : ''}${\n node.variables ? ` (${node.variables.join(',')})` : ''}${\n node.bindOperation ? ` bindOperation:(${node.bindOperation.pattern}) bindCardEst:${node.bindOperationCardinality.type === 'estimate' ? '~' : ''}${numberToString(node.bindOperationCardinality.value)}` : ''}${\n node.cardinality ? ` cardEst:${node.cardinality.type === 'estimate' ? '~' : ''}${numberToString(node.cardinality.value)}` : ''}${\n node.source ? ` src:${sourceId}` : ''}${\n node.cardinalityReal ? ` cardReal:${node.cardinalityReal}` : ''}${\n node.timeSelf ? ` timeSelf:${numberToString(node.timeSelf)}ms` : ''}${\n node.timeLife ? ` timeLife:${numberToString(node.timeLife)}ms` : ''}${\n metadata ? ` ${metadata}` : ''}`);\n for (const child of node.children ?? []) {\n this.nodeToCompactString(lines, sources, `${indent} `, child);\n }\n for (const child of node.childrenCompact ?? []) {\n this.nodeToCompactString(lines, sources, `${indent} `, child.firstOccurrence, `compacted-occurrences:${child.occurrences}`);\n }\n }\n}\n\nexport function numberToString(value: number): string {\n return value.toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 3 });\n}\n\ninterface IPlanNodeJson extends IPlanNodeJsonLogicalMetadata {\n logical: string;\n physical?: string;\n [metadataKey: string]: any;\n children?: IPlanNodeJson[];\n childrenCompact?: IPlanNodeJsonChildCompact[];\n}\n\ninterface IPlanNodeJsonChildCompact {\n occurrences: number;\n firstOccurrence: IPlanNodeJson;\n}\n\ninterface IPlanNodeJsonLogicalMetadata {\n pattern?: string;\n source?: string;\n variables?: string[];\n cardinality?: RDF.QueryResultCardinality;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { materializeOperation } from '@comunica/bus-query-operation';\nimport type { MediatorQueryParse } from '@comunica/bus-query-parse';\nimport type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n IQueryProcessSequentialOutput,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n QueryFormatType,\n} from '@comunica/types';\n\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Sequential Query Process Actor.\n */\nexport class ActorQueryProcessSequential extends ActorQueryProcess implements IQueryProcessSequential {\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly mediatorQueryParse: MediatorQueryParse;\n public readonly mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryProcessSequentialArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n if (action.context.get(KeysInitQuery.explain) || action.context.get(new ActionContextKey('explain'))) {\n throw new Error(`${this.name} is not able to explain queries.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Run all query processing steps in sequence\n let { operation, context } = await this.parse(action.query, action.context);\n ({ operation, context } = await this.optimize(operation, context));\n const output = await this.evaluate(operation, context);\n\n return { result: output };\n }\n\n public async parse(query: QueryFormatType, context: IActionContext): Promise {\n // Pre-processing the context\n context = (await this.mediatorContextPreprocess.mediate({ context, initialize: true })).context;\n\n // Parse query\n let operation: Algebra.Operation;\n if (typeof query === 'string') {\n // Save the original query string in the context\n context = context.set(KeysInitQuery.queryString, query);\n\n const baseIRI: string | undefined = context.get(KeysInitQuery.baseIRI);\n const queryFormat: RDF.QueryFormat = context.get(KeysInitQuery.queryFormat)!;\n const queryParseOutput = await this.mediatorQueryParse.mediate({ context, query, queryFormat, baseIRI });\n operation = queryParseOutput.operation;\n // Update the baseIRI in the context if the query modified it.\n if (queryParseOutput.baseIRI) {\n context = context.set(KeysInitQuery.baseIRI, queryParseOutput.baseIRI);\n }\n } else {\n operation = query;\n }\n\n // Apply initial bindings in context\n if (context.has(KeysInitQuery.initialBindings)) {\n const bindingsFactory = await BindingsFactory\n .create(this.mediatorMergeBindingsContext, context);\n operation = materializeOperation(operation, context.get(KeysInitQuery.initialBindings)!, bindingsFactory);\n\n // Delete the query string from the context, since our initial query might have changed\n context = context.delete(KeysInitQuery.queryString);\n }\n\n return { operation, context };\n }\n\n public async optimize(operation: Algebra.Operation, context: IActionContext): Promise {\n // Save initial query in context\n context = context.set(KeysInitQuery.query, operation);\n\n ({ operation, context } = await this.mediatorOptimizeQueryOperation.mediate({ context, operation }));\n\n // Save original query in context\n context = context.set(KeysInitQuery.query, operation);\n\n return { operation, context };\n }\n\n public async evaluate(operation: Algebra.Operation, context: IActionContext): Promise {\n const output = await this.mediatorQueryOperation.mediate({ context, operation });\n output.context = context;\n return output;\n }\n}\n\nexport interface IActorQueryProcessSequentialArgs extends IActorQueryProcessArgs {\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n /**\n * The query parse mediator\n */\n mediatorQueryParse: MediatorQueryParse;\n /**\n * The query operation optimize mediator\n */\n mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport { wrap } from 'asynciterator';\nimport * as RdfString from 'rdf-string';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica JSON Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeJson extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/json\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/json\": \"https://comunica.linkeddatafragments.org/#results_JSON\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads', 'boolean' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings or quad streams.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n data._read = () => {\n // Do nothing\n };\n\n if (action.type === 'bindings' || action.type === 'quads') {\n let stream = action.type === 'bindings' ?\n wrap(( action).bindingsStream)\n .map(element => JSON.stringify(Object.fromEntries([ ...element ]\n .map(([ key, value ]) => [ key.value, RdfString.termToString(value) ])))) :\n wrap(( action).quadStream)\n .map(element => JSON.stringify(RdfString.quadToStringQuad(element)));\n\n let empty = true;\n stream = stream.map((element) => {\n const ret = `${empty ? '' : ','}\\n${element}`;\n empty = false;\n return ret;\n }).prepend([ '[' ]).append([ '\\n]\\n' ]);\n\n data.wrap( stream);\n } else {\n try {\n data.push(`${JSON.stringify(await ( action).execute())}\\n`);\n data.push(null);\n } catch (error: unknown) {\n setTimeout(() => data.emit('error', error));\n }\n }\n\n return { data };\n }\n}\n","import type {\n IActorQueryResultSerializeArgs,\n IActorQueryResultSerializeOutput,\n IActionSparqlSerialize,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerialize } from '@comunica/bus-query-result-serialize';\nimport type {\n MediatorRdfSerializeHandle,\n MediatorRdfSerializeMediaTypeFormats,\n MediatorRdfSerializeMediaTypes,\n} from '@comunica/bus-rdf-serialize';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResultQuads } from '@comunica/types';\n\n/**\n * A comunica RDF Query Result Serialize Actor.\n *\n * It serializes quad streams (for example resulting from a CONSTRUCT query)\n * to an RDF syntax.\n */\nexport class ActorQueryResultSerializeRdf extends ActorQueryResultSerialize\n implements IActorQueryResultSerializeRdfArgs {\n public readonly mediatorRdfSerialize: MediatorRdfSerializeHandle;\n public readonly mediatorMediaTypeCombiner: MediatorRdfSerializeMediaTypes;\n public readonly mediatorMediaTypeFormatCombiner: MediatorRdfSerializeMediaTypeFormats;\n\n public constructor(args: IActorQueryResultSerializeRdfArgs) {\n super(args);\n }\n\n public async testHandle(action: IActionSparqlSerialize, mediaType: string, context: IActionContext):\n Promise {\n // Check if we are provided with a quad stream\n if (action.type !== 'quads') {\n throw new Error(`Actor ${this.name} can only handle quad streams`);\n }\n\n // Check if the given media type can be handled\n const { mediaTypes } = await this.mediatorMediaTypeCombiner.mediate(\n { context, mediaTypes: true },\n );\n if (!(mediaType in mediaTypes)) {\n throw new Error(`Actor ${this.name} can not handle media type ${mediaType}. All available types: ${\n // eslint-disable-next-line ts/restrict-template-expressions\n Object.keys(mediaTypes)}`);\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, mediaType: string, context: IActionContext):\n Promise {\n // Delegate handling to the mediator\n return (await this.mediatorRdfSerialize.mediate({\n context,\n handle: {\n context,\n quadStream: ( action).quadStream,\n },\n handleMediaType: mediaType,\n })).handle;\n }\n\n public async testMediaType(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypes(context: IActionContext): Promise> {\n return (await this.mediatorMediaTypeCombiner.mediate({ context, mediaTypes: true })).mediaTypes;\n }\n\n public async testMediaTypeFormats(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypeFormats(context: IActionContext): Promise> {\n return (await this.mediatorMediaTypeFormatCombiner.mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n}\n\nexport interface IActorQueryResultSerializeRdfArgs extends IActorQueryResultSerializeArgs {\n mediatorRdfSerialize: MediatorRdfSerializeHandle;\n mediatorMediaTypeCombiner: MediatorRdfSerializeMediaTypes;\n mediatorMediaTypeFormatCombiner: MediatorRdfSerializeMediaTypeFormats;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n IQueryOperationResultQuads,\n IQueryOperationResultVoid,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica Simple Sparql Serialize Actor.\n */\nexport class ActorQueryResultSerializeSimple extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{ \"simple\": 0.9 }} mediaTypePriorities\n * \\ @defaultNested {{ \"simple\": \"https://comunica.linkeddatafragments.org/#results_simple\" }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads', 'boolean', 'void' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams, quad streams, booleans, or updates.');\n }\n return true;\n }\n\n protected static termToString(term: RDF.Term): string {\n return term.termType === 'Quad' ? termToString(term) : term.value;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n if (action.type === 'bindings') {\n data.wrap( (action).bindingsStream.map((bindings: RDF.Bindings) => `${[ ...bindings ].map(\n ([ key, value ]) => `?${key.value}: ${ActorQueryResultSerializeSimple.termToString(value)}`,\n ).join('\\n')}\\n\\n`));\n } else if (action.type === 'quads') {\n data.wrap( (action).quadStream.map(quad =>\n `subject: ${ActorQueryResultSerializeSimple.termToString(quad.subject)}\\n` +\n `predicate: ${ActorQueryResultSerializeSimple.termToString(quad.predicate)}\\n` +\n `object: ${ActorQueryResultSerializeSimple.termToString(quad.object)}\\n` +\n `graph: ${ActorQueryResultSerializeSimple.termToString(quad.graph)}\\n\\n`));\n } else {\n data.wrap( wrap(\n action.type === 'boolean' ?\n ( action).execute().then(value => [ `${value}\\n` ]) :\n (action).execute().then(() => [ 'ok\\n' ]),\n ));\n }\n\n return { data };\n }\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport {\n ActorQueryResultSerializeFixedMediaTypes,\n} from '@comunica/bus-query-result-serialize';\nimport type { Bindings, IActionContext, IQueryOperationResultBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica SPARQL CSV Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlCsv extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"text/csv\": 0.75\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/csv\": \"http://www.w3.org/ns/formats/SPARQL_Results_CSV\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n * Converts an RDF term to its CSV representation.\n * @param {RDF.Term} value An RDF term.\n * @return {string} A string representation of the given value.\n */\n public static bindingToCsvBindings(value?: RDF.Term): string {\n if (!value) {\n return '';\n }\n\n let stringValue = value.value;\n\n if (value.termType === 'Literal') {\n // This is a lossy representation, since language and datatype are not encoded in here.\n stringValue = `${stringValue}`;\n } else if (value.termType === 'BlankNode') {\n stringValue = `_:${stringValue}`;\n } else if (value.termType === 'Quad') {\n let object = ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(value.object);\n if (value.object.termType === 'Literal') {\n // If object is a literal, it must be put in quotes, and internal quotes must be escaped\n object = `\"${object.replaceAll('\"', '\"\"')}\"`;\n }\n stringValue = `<< ${ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(value.subject)} ${ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(value.predicate)} ${object} >>`;\n } else {\n stringValue = `<${stringValue}>`;\n }\n\n // If a value contains certain characters, put it between double quotes\n if (/[\",\\n\\r]/u.test(stringValue)) {\n // Within quote strings, \" is written using a pair of quotation marks \"\".\n stringValue = `\"${stringValue.replaceAll('\"', '\"\"')}\"`;\n }\n\n return stringValue;\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string | undefined, _context: IActionContext):\n Promise {\n const bindingsAction = action;\n\n const data = new Readable();\n\n const metadata = await bindingsAction.metadata();\n\n // Write head\n data.push(`${metadata.variables.map(variable => variable.value).join(',')}\\r\\n`);\n\n // Write body\n data.wrap( bindingsAction.bindingsStream.map((bindings: Bindings) => `${metadata.variables\n .map(key => ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(bindings.get(key)))\n .join(',')}\\r\\n`));\n\n return { data };\n }\n}\n","import type { IActionHttp, IActorHttpOutput } from '@comunica/bus-http';\nimport type { ActorHttpInvalidateListenable } from '@comunica/bus-http-invalidate';\nimport type { Actor, IActionObserverArgs, IActorTest } from '@comunica/core';\nimport { ActionObserver } from '@comunica/core';\n\n/**\n * Observes HTTP actions, and maintains a counter of the number of requests.\n */\nexport class ActionObserverHttp extends ActionObserver {\n public readonly httpInvalidator: ActorHttpInvalidateListenable;\n public requests = 0;\n\n /* eslint-disable max-len */\n /**\n * @param args - @defaultNested {} bus\n */\n public constructor(args: IActionObserverHttpArgs) {\n super(args);\n this.bus.subscribeObserver(this);\n this.httpInvalidator.addInvalidateListener(() => {\n this.requests = 0;\n });\n }\n /* eslint-enable max-len */\n\n public onRun(\n _actor: Actor,\n _action: IActionHttp,\n _output: Promise,\n ): void {\n this.requests++;\n }\n}\n\nexport interface IActionObserverHttpArgs extends IActionObserverArgs {\n /* eslint-disable max-len */\n /**\n * An actor that listens to HTTP invalidation events\n * @default { a }\n */\n httpInvalidator: ActorHttpInvalidateListenable;\n /* eslint-enable max-len */\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap } from 'asynciterator';\nimport { Readable } from 'readable-stream';\nimport type { ActionObserverHttp } from './ActionObserverHttp';\n\n/**\n * A comunica sparql-results+xml Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlJson extends ActorQueryResultSerializeFixedMediaTypes {\n private readonly emitMetadata: boolean;\n public readonly httpObserver: ActionObserverHttp;\n\n /* eslint-disable max-len */\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/sparql-results+json\": 0.8\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/sparql-results+json\": \"http://www.w3.org/ns/formats/SPARQL_Results_JSON\"\n * }} mediaTypeFormats\n * \\ @defaultNested {true} emitMetadata\n * \\ @defaultNested { a } httpObserver\n */\n public constructor(args: IActorQueryResultSerializeSparqlJsonArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n /**\n * Converts an RDF term to its JSON representation.\n * @param {RDF.Term} value An RDF term.\n * @return {any} A JSON object.\n */\n public static bindingToJsonBindings(value: RDF.Term): any {\n if (value.termType === 'Literal') {\n const literal: RDF.Literal = value;\n const jsonValue: any = { value: literal.value, type: 'literal' };\n const { language, datatype } = literal;\n if (language) {\n jsonValue['xml:lang'] = language;\n } else if (datatype && datatype.value !== 'http://www.w3.org/2001/XMLSchema#string') {\n jsonValue.datatype = datatype.value;\n }\n return jsonValue;\n }\n if (value.termType === 'BlankNode') {\n return { value: value.value, type: 'bnode' };\n }\n if (value.termType === 'Quad') {\n return {\n value: {\n subject: ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value.subject),\n predicate: ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value.predicate),\n object: ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value.object),\n },\n type: 'triple',\n };\n }\n return { value: value.value, type: 'uri' };\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'boolean' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or booleans.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string | undefined, _context: IActionContext):\n Promise {\n const data = new Readable();\n // Write head\n const head: any = {};\n if (action.type === 'bindings') {\n const metadata = await ( action).metadata();\n if (metadata.variables.length > 0) {\n head.vars = metadata.variables.map(variable => variable.value);\n }\n }\n data.push(`{\"head\": ${JSON.stringify(head)},\\n`);\n\n if (action.type === 'bindings') {\n const resultStream = ( action).bindingsStream;\n data.push('\"results\": { \"bindings\": [\\n');\n\n let first = true;\n\n function* end(cb: () => string): Generator {\n yield cb();\n }\n\n // Write bindings\n data.wrap(\n // JSON SPARQL results spec does not allow unbound variables and blank node bindings\n wrap(resultStream).map((bindings) => {\n const res = `${first ? '' : ',\\n'}${JSON.stringify(Object.fromEntries([ ...bindings ]\n .map(([ key, value ]) => [ key.value, ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value) ])))}`;\n first = false;\n return res;\n }).append(wrap(end(() => `\\n]}${this.emitMetadata ? `,\\n\"metadata\": { \"httpRequests\": ${this.httpObserver.requests} }` : ''}}\\n`))),\n );\n } else {\n data.wrap( wrap(( action).execute().then(value => [ `\"boolean\":${value}\\n}\\n` ])));\n }\n\n return { data };\n }\n}\n\nexport interface IActorQueryResultSerializeSparqlJsonArgs extends IActorQueryResultSerializeFixedMediaTypesArgs {\n emitMetadata: boolean;\n httpObserver: ActionObserverHttp;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport {\n ActorQueryResultSerializeFixedMediaTypes,\n} from '@comunica/bus-query-result-serialize';\nimport type { IActionContext, IQueryOperationResultBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string-ttl';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica SPARQL TSV Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlTsv extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"text/tab-separated-values\": 0.75\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/tab-separated-values\": \"http://www.w3.org/ns/formats/SPARQL_Results_TSV\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n * Converts an RDF term to its TSV representation.\n * @param {RDF.Term} value An RDF term.\n * @return {string} A string representation of the given value.\n */\n public static bindingToTsvBindings(value?: RDF.Term): string {\n if (!value) {\n return '';\n }\n\n // Escape tab, newline and carriage return characters\n return termToString(value)\n .replaceAll('\\t', '\\\\t')\n .replaceAll('\\n', '\\\\n')\n .replaceAll('\\r', '\\\\r');\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string | undefined, _context: IActionContext):\n Promise {\n const bindingsAction = action;\n\n const data = new Readable();\n // Write head\n const metadata = await bindingsAction.metadata();\n data.push(`${metadata.variables.map((variable: RDF.Variable) => variable.value).join('\\t')}\\n`);\n\n // Write Bindings\n data.wrap( bindingsAction.bindingsStream.map((bindings: RDF.Bindings) => `${metadata.variables\n .map((key: RDF.Variable) => ActorQueryResultSerializeSparqlTsv\n .bindingToTsvBindings(bindings.get(key)))\n .join('\\t')}\\n`));\n\n return { data };\n }\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap } from 'asynciterator';\nimport { Readable } from 'readable-stream';\nimport { XmlSerializer, type IXmlNode } from './XmlSerializer';\n\n/**\n * A comunica sparql-results+xml Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlXml extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/sparql-results+xml\": 0.8\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/sparql-results+xml\": \"http://www.w3.org/ns/formats/SPARQL_Results_XML\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n * Converts an RDF term to its object-based XML representation.\n * @param {RDF.Term} value An RDF term.\n * @param {string} key A variable name, '?' must be included as a prefix.\n * @return {IXmlNode} An object-based XML tag.\n */\n public static bindingToXmlBindings(value: RDF.Term, key: RDF.Variable): IXmlNode {\n return { name: 'binding', attributes: { name: key.value }, children: [ this.valueToXmlValue(value) ]};\n }\n\n public static valueToXmlValue(value: RDF.Term): IXmlNode {\n let attributes;\n switch (value.termType) {\n case 'Literal':\n if (value.language) {\n attributes = { 'xml:lang': value.language };\n } else if (value.datatype && value.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string') {\n attributes = { datatype: value.datatype.value };\n } else {\n attributes = {};\n }\n return { name: 'literal', attributes, children: value.value };\n case 'BlankNode':\n return { name: 'bnode', children: value.value };\n case 'Quad':\n return {\n name: 'triple',\n children: [\n { name: 'subject', children: [ this.valueToXmlValue(value.subject) ]},\n { name: 'predicate', children: [ this.valueToXmlValue(value.predicate) ]},\n { name: 'object', children: [ this.valueToXmlValue(value.object) ]},\n ],\n };\n default:\n return { name: 'uri', children: value.value };\n }\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'boolean' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or booleans.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n data._read = () => {\n // Do nothing\n };\n\n const serializer = new XmlSerializer();\n const metadata = await ( action).metadata();\n\n data.push(XmlSerializer.header);\n data.push(serializer.open('sparql', { xmlns: 'http://www.w3.org/2005/sparql-results#' }));\n data.push(\n serializer.serializeNode({\n name: 'head',\n children: metadata.variables.map(variable => ({ name: 'variable', attributes: { name: variable.value }})),\n }),\n );\n\n if (action.type === 'bindings') {\n function* end(): Generator {\n yield serializer.close();\n yield serializer.close();\n }\n data.push(serializer.open('results'));\n const stream = wrap(( action).bindingsStream).map(\n (bindings: RDF.Bindings) => serializer.serializeNode({\n name: 'result',\n children: [ ...bindings ].map(\n ([ key, value ]) => ActorQueryResultSerializeSparqlXml.bindingToXmlBindings(value, key),\n ),\n }),\n ).append(wrap(end()));\n data.wrap( stream);\n } else {\n try {\n const result = await ( action).execute();\n data.push(serializer.serializeNode({ name: 'boolean', children: result.toString() }));\n data.push(serializer.close());\n setTimeout(() => data.push(null));\n } catch (error: unknown) {\n setTimeout(() => data.emit('error', error));\n }\n }\n\n return { data };\n }\n}\n","/**\n * A very simple XML serializer\n */\nexport class XmlSerializer {\n private readonly stack: string[] = [];\n\n public static header = `\\n`;\n\n public constructor() {}\n\n /**\n *\n * @param name should be a valid XML tag name\n * @param attributes keys should be valid attribute names\n */\n public open(name: string, attributes?: Record): string {\n const res = `${this.identation() + this.formatTag(name, attributes, 'open')}\\n`;\n this.stack.push(name);\n return res;\n }\n\n public close(): string {\n const name = this.stack.pop();\n if (name === undefined) {\n throw new Error('There is no tag left to close');\n }\n return `${this.identation() + this.formatTag(name, {}, 'close')}\\n`;\n }\n\n public serializeNode(node: IXmlNode): string {\n if (node.children === undefined) {\n return `${this.identation() + this.formatTag(node.name, node.attributes, 'self-closing')}\\n`;\n }\n if (typeof node.children === 'string') {\n return `${this.identation() + this.formatTag(node.name, node.attributes, 'open') + this.escape(node.children) + this.formatTag(node.name, {}, 'close')}\\n`;\n }\n const parts = [];\n parts.push(`${this.identation() + this.formatTag(node.name, node.attributes, 'open')}\\n`);\n this.stack.push(node.name);\n for (const child of node.children) {\n parts.push(this.serializeNode(child));\n }\n this.stack.pop();\n parts.push(`${this.identation() + this.formatTag(node.name, {}, 'close')}\\n`);\n return parts.join('');\n }\n\n private identation(): string {\n return this.stack.map(_ => ' ').join('');\n }\n\n private formatTag(\n name: string,\n attributes: Record | undefined,\n state: 'open' | 'close' | 'self-closing',\n ): string {\n // eslint-disable-next-line ts/restrict-template-expressions\n return `<${state === 'close' ? '/' : ''}${name}${Object.entries(attributes ?? {}).map(attr => ` ${attr[0]}=\"${this.escape(attr[1])}\"`)}${state === 'self-closing' ? '/' : ''}>`;\n }\n\n private escape(text: string): string {\n return text.replaceAll(/[\"&'<>]/gu, <(substring: string) => string> ((char: '\"' | '&' | '\\'' | '<' | '>') => {\n switch (char) {\n case '<': return '<';\n case '>': return '>';\n case '&': return '&';\n case '\\'': return ''';\n case '\"': return '"';\n }\n }));\n }\n}\n\nexport interface IXmlNode {\n name: string;\n attributes?: Record;\n children?: (IXmlNode[]) | string;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport { wrap } from 'asynciterator';\nimport { Readable } from 'readable-stream';\nimport type { ActionObserverHttp } from './ActionObserverHttp';\n\nconst process: NodeJS.Process = require('process/');\n\n/**\n * Serializes SPARQL results for testing and debugging.\n */\nexport class ActorQueryResultSerializeStats extends ActorQueryResultSerializeFixedMediaTypes {\n public readonly httpObserver: ActionObserverHttp;\n\n /* eslint-disable max-len */\n /**\n * @param args -\n * \\ @defaultNested {{ \"stats\": 0.5 }} mediaTypePriorities\n * \\ @defaultNested {{ \"stats\": \"https://comunica.linkeddatafragments.org/#results_stats\" }} mediaTypeFormats\n * \\ @defaultNested { a } httpObserver\n */\n public constructor(args: IActorQueryResultSerializeStatsArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or quad streams.');\n }\n return true;\n }\n\n public pushHeader(data: Readable): void {\n const header: string = [ 'Result', 'Delay (ms)', 'HTTP requests',\n ].join(',');\n data.push(`${header}\\n`);\n }\n\n public createStat(startTime: number, result: number): string {\n const row: string = [ result, this.delay(startTime), this.httpObserver.requests,\n ].join(',');\n return `${row}\\n`;\n }\n\n public createFooter(startTime: number): string {\n const footer: string = [ 'TOTAL', this.delay(startTime), this.httpObserver.requests,\n ].join(',');\n return `${footer}\\n`;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n\n const resultStream = action.type === 'bindings' ?\n ( action).bindingsStream :\n ( action).quadStream;\n\n const startTime = this.now();\n let result = 1;\n\n function* end(cb: () => string): Generator {\n yield cb();\n }\n const stream = wrap(resultStream)\n .map(() => this.createStat(startTime, result++))\n .append(wrap(end(() => this.createFooter(startTime))));\n\n this.pushHeader(data);\n data.wrap( stream);\n\n return { data };\n }\n\n /* istanbul ignore next */\n public now(): number {\n // TODO: remove when we will drop support of Node 14\n if (typeof performance === 'undefined') {\n const time: [number, number] = process.hrtime();\n return time[0] * 1_000 + (time[1] / 1_000_000);\n }\n return performance.now();\n }\n\n public delay(startTime: number): number {\n return this.now() - startTime;\n }\n}\n\nexport interface IActorQueryResultSerializeStatsArgs extends IActorQueryResultSerializeFixedMediaTypesArgs {\n httpObserver: ActionObserverHttp;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n Bindings,\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { getTerms, QUAD_TERM_NAMES } from 'rdf-terms';\nimport { Readable } from 'readable-stream';\n\nconst DF = new DataFactory();\nconst QUAD_TERM_NAMES_VARS = QUAD_TERM_NAMES.map(name => DF.variable(name));\n\n/**\n * A comunica Table Sparql Serialize Actor.\n */\nexport class ActorQueryResultSerializeTable extends ActorQueryResultSerializeFixedMediaTypes\n implements IActorQueryResultSerializeTableArgs {\n public readonly columnWidth: number;\n public readonly padding: string;\n\n /**\n * @param args -\n * \\ @defaultNested {{ \"table\": 0.6 }} mediaTypePriorities\n * \\ @defaultNested {{ \"table\": \"https://comunica.linkeddatafragments.org/#results_table\" }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeTableArgs) {\n super(args);\n this.padding = ActorQueryResultSerializeTable.repeat(' ', this.columnWidth);\n }\n\n public static repeat(str: string, count: number): string {\n return str.repeat(count);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings or quad streams.');\n }\n return true;\n }\n\n public termToString(term: RDF.Term): string {\n return term.termType === 'Quad' ? termToString(term) : term.value;\n }\n\n public pad(str: string): string {\n if (str.length <= this.columnWidth) {\n return str + this.padding.slice(str.length);\n }\n return `${str.slice(0, this.columnWidth - 1)}…`;\n }\n\n public pushHeader(data: Readable, labels: RDF.Variable[]): void {\n const header: string = labels.map(label => this.pad(label.value)).join(' ');\n data.push(`${header}\\n${ActorQueryResultSerializeTable.repeat('-', header.length)}\\n`);\n }\n\n public createRow(labels: RDF.Variable[], bindings: Bindings): string {\n return `${labels\n .map(label => bindings.has(label) ? this.termToString(bindings.get(label)!) : '')\n .map(label => this.pad(label))\n .join(' ')}\\n`;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n\n let resultStream: NodeJS.EventEmitter;\n if (action.type === 'bindings') {\n resultStream = (action).bindingsStream.map(\n bindings => this.createRow(labels, bindings),\n );\n const labels = (await (action).metadata()).variables;\n this.pushHeader(data, labels);\n } else {\n resultStream = (action).quadStream.map(quad => `${getTerms(quad).map(term => this.pad(this.termToString(term))).join(' ')}\\n`);\n this.pushHeader(data, QUAD_TERM_NAMES_VARS);\n }\n data.wrap( resultStream);\n\n return { data };\n }\n}\n\nexport interface IActorQueryResultSerializeTableArgs extends IActorQueryResultSerializeFixedMediaTypesArgs {\n /**\n * The table column width in number of characters\n * @range {integer}\n * @default {50}\n */\n columnWidth: number;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type { IQueryOperationResultBindings, BindingsStream, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Readable } from 'readable-stream';\nimport type { IConverterSettings, ISchema } from 'sparqljson-to-tree';\nimport { Converter } from 'sparqljson-to-tree';\n\n/**\n * A comunica Tree Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeTree extends ActorQueryResultSerializeFixedMediaTypes\n implements IActorQueryResultSerializeFixedMediaTypesArgs {\n /**\n * @param args -\n * \\ @defaultNested {{ \"tree\": 0.5 }} mediaTypePriorities\n * \\ @defaultNested {{ \"tree\": \"https://comunica.linkeddatafragments.org/#results_tree\" }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n *\n * @param {BindingsStream} bindingsStream\n * @param context\n * @param {IConverterSettings} converterSettings\n * @return {Promise}\n */\n public static async bindingsStreamToGraphQl(\n bindingsStream: BindingsStream,\n context: IActionContext | Record | undefined,\n converterSettings?: IConverterSettings,\n ): Promise {\n const actionContext: IActionContext = ActionContext.ensureActionContext(context);\n const converter: Converter = new Converter(converterSettings);\n const schema: ISchema = {\n singularizeVariables: actionContext.get(KeysInitQuery.graphqlSingularizeVariables) ?? {},\n };\n\n return converter.bindingsToTree(await bindingsStream.map((bindings: RDF.Bindings) =>\n Object.fromEntries([ ...bindings ]\n .map(([ key, value ]) => [ key.value, value ]))).toArray(), schema);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize): Promise {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n\n public async runHandle(\n action: IActionSparqlSerialize,\n _mediaType: string,\n ): Promise {\n const data = new Readable();\n data._read = () => {\n data._read = () => { /* Do nothing */ };\n ActorQueryResultSerializeTree.bindingsStreamToGraphQl(\n ( action).bindingsStream,\n action.context,\n { materializeRdfJsTerms: true },\n )\n .then((result: any) => {\n data.push(JSON.stringify(result, null, ' '));\n data.push(null);\n })\n .catch(error => data.emit('error', error));\n };\n\n return { data };\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorHttp } from '@comunica/bus-http';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentifyHypermedia,\n IActorQuerySourceIdentifyHypermediaOutput,\n IActorQuerySourceIdentifyHypermediaArgs,\n IActorQuerySourceIdentifyHypermediaTest,\n} from '@comunica/bus-query-source-identify-hypermedia';\nimport {\n ActorQuerySourceIdentifyHypermedia,\n} from '@comunica/bus-query-source-identify-hypermedia';\nimport { QuerySourceSparql } from './QuerySourceSparql';\n\n/**\n * A comunica SPARQL Query Source Identify Hypermedia Actor.\n */\nexport class ActorQuerySourceIdentifyHypermediaSparql extends ActorQuerySourceIdentifyHypermedia {\n public readonly mediatorHttp: MediatorHttp;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly checkUrlSuffix: boolean;\n public readonly forceHttpGet: boolean;\n public readonly cacheSize: number;\n public readonly bindMethod: BindMethod;\n public readonly countTimeout: number;\n\n public constructor(args: IActorQuerySourceIdentifyHypermediaSparqlArgs) {\n super(args, 'sparql');\n }\n\n public async testMetadata(\n action: IActionQuerySourceIdentifyHypermedia,\n ): Promise {\n if (!action.forceSourceType && !action.metadata.sparqlService &&\n !(this.checkUrlSuffix && action.url.endsWith('/sparql'))) {\n throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql.`);\n }\n return { filterFactor: 1 };\n }\n\n public async run(action: IActionQuerySourceIdentifyHypermedia): Promise {\n this.logInfo(action.context, `Identified ${action.url} as sparql source with service URL: ${action.metadata.sparqlService || action.url}`);\n const source = new QuerySourceSparql(\n action.forceSourceType ? action.url : action.metadata.sparqlService || action.url,\n action.context,\n this.mediatorHttp,\n this.bindMethod,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n this.forceHttpGet,\n this.cacheSize,\n this.countTimeout,\n );\n return { source };\n }\n}\n\nexport interface IActorQuerySourceIdentifyHypermediaSparqlArgs extends IActorQuerySourceIdentifyHypermediaArgs {\n /**\n * The HTTP mediator\n */\n mediatorHttp: MediatorHttp;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * If URLs ending with '/sparql' should also be considered SPARQL endpoints.\n * @default {true}\n */\n checkUrlSuffix: boolean;\n /**\n * If non-update queries should be sent via HTTP GET instead of POST\n * @default {false}\n */\n forceHttpGet: boolean;\n /**\n * The cache size for COUNT queries.\n * @range {integer}\n * @default {1024}\n */\n cacheSize?: number;\n /**\n * The query operation for communicating bindings.\n * @default {values}\n */\n bindMethod: BindMethod;\n /**\n * Timeout in ms of how long count queries are allowed to take.\n * If the timeout is reached, an infinity cardinality is returned.\n * @default {3000}\n */\n countTimeout: number;\n}\n\nexport type BindMethod = 'values' | 'union' | 'filter';\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorHttp } from '@comunica/bus-http';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { Actor } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQuerySource,\n BindingsStream,\n IActionContext,\n FragmentSelectorShape,\n Bindings,\n MetadataBindings,\n IQueryBindingsOptions,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { wrap, TransformIterator } from 'asynciterator';\nimport { SparqlEndpointFetcher } from 'fetch-sparql-endpoint';\nimport { LRUCache } from 'lru-cache';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory, toSparql, Util } from 'sparqlalgebrajs';\nimport type { BindMethod } from './ActorQuerySourceIdentifyHypermediaSparql';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\nconst VAR_COUNT = DF.variable('count');\nconst COUNT_INFINITY: RDF.QueryResultCardinality = { type: 'estimate', value: Number.POSITIVE_INFINITY };\n\nexport class QuerySourceSparql implements IQuerySource {\n protected static readonly SELECTOR_SHAPE: FragmentSelectorShape = {\n type: 'disjunction',\n children: [\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.PROJECT },\n joinBindings: true,\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.CONSTRUCT },\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.DESCRIBE },\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.ASK },\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.COMPOSITE_UPDATE },\n },\n ],\n };\n\n public readonly referenceValue: string;\n private readonly url: string;\n private readonly context: IActionContext;\n private readonly mediatorHttp: MediatorHttp;\n private readonly bindMethod: BindMethod;\n private readonly countTimeout: number;\n private readonly bindingsFactory: BindingsFactory;\n\n private readonly endpointFetcher: SparqlEndpointFetcher;\n private readonly cache: LRUCache | undefined;\n\n private lastSourceContext: IActionContext | undefined;\n\n public constructor(\n url: string,\n context: IActionContext,\n mediatorHttp: MediatorHttp,\n bindMethod: BindMethod,\n bindingsFactory: BindingsFactory,\n forceHttpGet: boolean,\n cacheSize: number,\n countTimeout: number,\n ) {\n this.referenceValue = url;\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n this.bindMethod = bindMethod;\n this.bindingsFactory = bindingsFactory;\n this.endpointFetcher = new SparqlEndpointFetcher({\n method: forceHttpGet ? 'GET' : 'POST',\n fetch: (input: Request | string, init?: RequestInit) => this.mediatorHttp.mediate(\n { input, init, context: this.lastSourceContext! },\n ),\n prefixVariableQuestionMark: true,\n });\n this.cache = cacheSize > 0 ?\n new LRUCache({ max: cacheSize }) :\n undefined;\n this.countTimeout = countTimeout;\n }\n\n public async getSelectorShape(): Promise {\n return QuerySourceSparql.SELECTOR_SHAPE;\n }\n\n public queryBindings(\n operationIn: Algebra.Operation,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): BindingsStream {\n // If bindings are passed, modify the operations\n let operationPromise: Promise;\n if (options?.joinBindings) {\n operationPromise = QuerySourceSparql.addBindingsToOperation(this.bindMethod, operationIn, options.joinBindings);\n } else {\n operationPromise = Promise.resolve(operationIn);\n }\n\n const bindings: BindingsStream = new TransformIterator(async() => {\n // Prepare queries\n const operation = await operationPromise;\n const variables: RDF.Variable[] = Util.inScopeVariables(operation);\n const queryString = context.get(KeysInitQuery.queryString);\n const selectQuery: string = !options?.joinBindings && queryString ?\n queryString :\n QuerySourceSparql.operationToSelectQuery(operation, variables);\n const canContainUndefs = QuerySourceSparql.operationCanContainUndefs(operation);\n\n return this.queryBindingsRemote(this.url, selectQuery, variables, context, canContainUndefs);\n }, { autoStart: false });\n this.attachMetadata(bindings, context, operationPromise);\n\n return bindings;\n }\n\n public queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator {\n this.lastSourceContext = this.context.merge(context);\n const rawStream = this.endpointFetcher.fetchTriples(\n this.url,\n context.get(KeysInitQuery.queryString) ?? QuerySourceSparql.operationToQuery(operation),\n );\n this.lastSourceContext = undefined;\n const quads = wrap(rawStream, { autoStart: false, maxBufferSize: Number.POSITIVE_INFINITY });\n this.attachMetadata(quads, context, Promise.resolve(operation.input));\n return quads;\n }\n\n public queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise {\n this.lastSourceContext = this.context.merge(context);\n const promise = this.endpointFetcher.fetchAsk(\n this.url,\n context.get(KeysInitQuery.queryString) ?? QuerySourceSparql.operationToQuery(operation),\n );\n this.lastSourceContext = undefined;\n return promise;\n }\n\n public queryVoid(operation: Algebra.Update, context: IActionContext): Promise {\n this.lastSourceContext = this.context.merge(context);\n const promise = this.endpointFetcher.fetchUpdate(\n this.url,\n context.get(KeysInitQuery.queryString) ?? QuerySourceSparql.operationToQuery(operation),\n );\n this.lastSourceContext = undefined;\n return promise;\n }\n\n protected attachMetadata(\n target: AsyncIterator,\n context: IActionContext,\n operationPromise: Promise,\n ): void {\n // Emit metadata containing the estimated count\n let variablesCount: RDF.Variable[] = [];\n let canContainUndefs = false;\n // eslint-disable-next-line no-async-promise-executor,ts/no-misused-promises\n new Promise(async(resolve, reject) => {\n // Prepare queries\n let countQuery: string;\n try {\n const operation = await operationPromise;\n variablesCount = Util.inScopeVariables(operation);\n countQuery = QuerySourceSparql.operationToCountQuery(operation);\n canContainUndefs = QuerySourceSparql.operationCanContainUndefs(operation);\n\n const cachedCardinality = this.cache?.get(countQuery);\n if (cachedCardinality !== undefined) {\n return resolve(cachedCardinality);\n }\n\n const timeoutHandler = setTimeout(() => resolve(COUNT_INFINITY), this.countTimeout);\n const bindingsStream: BindingsStream = await this\n .queryBindingsRemote(this.url, countQuery, [ VAR_COUNT ], context, false);\n bindingsStream.on('data', (bindings: Bindings) => {\n clearTimeout(timeoutHandler);\n const count = bindings.get(VAR_COUNT);\n const cardinality: RDF.QueryResultCardinality = { type: 'estimate', value: Number.POSITIVE_INFINITY };\n if (count) {\n const cardinalityValue: number = Number.parseInt(count.value, 10);\n if (!Number.isNaN(cardinalityValue)) {\n cardinality.type = 'exact';\n cardinality.value = cardinalityValue;\n this.cache?.set(countQuery, cardinality);\n }\n }\n return resolve(cardinality);\n });\n bindingsStream.on('error', () => {\n clearTimeout(timeoutHandler);\n resolve(COUNT_INFINITY);\n });\n bindingsStream.on('end', () => {\n clearTimeout(timeoutHandler);\n resolve(COUNT_INFINITY);\n });\n } catch (error: unknown) {\n return reject(error);\n }\n })\n .then((cardinality) => {\n target.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality,\n canContainUndefs,\n variables: variablesCount,\n });\n })\n .catch(() => target.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: COUNT_INFINITY,\n canContainUndefs,\n variables: variablesCount,\n }));\n }\n\n /**\n * Create an operation that includes the bindings from the given bindings stream.\n * @param bindMethod A method for adding bindings to an operation.\n * @param operation The operation to bind to.\n * @param addBindings The bindings to add.\n * @param addBindings.bindings The bindings stream.\n * @param addBindings.metadata The bindings metadata.\n */\n public static async addBindingsToOperation(\n bindMethod: BindMethod,\n operation: Algebra.Operation,\n addBindings: { bindings: BindingsStream; metadata: MetadataBindings },\n ): Promise {\n const bindings = await addBindings.bindings.toArray();\n\n switch (bindMethod) {\n case 'values':\n return AF.createJoin([\n AF.createValues(\n addBindings.metadata.variables,\n bindings.map(binding => Object.fromEntries([ ...binding ]\n .map(([ key, value ]) => [ `?${key.value}`, value ]))),\n ),\n operation,\n ], false);\n case 'union': { throw new Error('Not implemented yet: \"union\" case'); }\n case 'filter': { throw new Error('Not implemented yet: \"filter\" case'); }\n }\n }\n\n /**\n * Convert an operation to a select query for this pattern.\n * @param {Algebra.Operation} operation A query operation.\n * @param {RDF.Variable[]} variables The variables in scope for the operation.\n * @return {string} A select query string.\n */\n public static operationToSelectQuery(operation: Algebra.Operation, variables: RDF.Variable[]): string {\n return QuerySourceSparql.operationToQuery(AF.createProject(operation, variables));\n }\n\n /**\n * Convert an operation to a count query for the number of matching triples for this pattern.\n * @param {Algebra.Operation} operation A query operation.\n * @return {string} A count query string.\n */\n public static operationToCountQuery(operation: Algebra.Operation): string {\n return QuerySourceSparql.operationToQuery(AF.createProject(\n AF.createExtend(\n AF.createGroup(\n operation,\n [],\n [ AF.createBoundAggregate(\n DF.variable('var0'),\n 'count',\n AF.createWildcardExpression(),\n false,\n ) ],\n ),\n DF.variable('count'),\n AF.createTermExpression(DF.variable('var0')),\n ),\n [ DF.variable('count') ],\n ));\n }\n\n /**\n * Convert an operation to a query for this pattern.\n * @param {Algebra.Operation} operation A query operation.\n * @return {string} A query string.\n */\n public static operationToQuery(operation: Algebra.Operation): string {\n return toSparql(operation, { sparqlStar: true });\n }\n\n /**\n * Check if the given operation may produce undefined values.\n * @param operation\n */\n public static operationCanContainUndefs(operation: Algebra.Operation): boolean {\n let canContainUndefs = false;\n Util.recurseOperation(operation, {\n leftjoin(): boolean {\n canContainUndefs = true;\n return false;\n },\n values(values: Algebra.Values): boolean {\n canContainUndefs = values.bindings.some(bindings => values.variables.some(variable => !(`?${variable.value}` in bindings)));\n return false;\n },\n union(union: Algebra.Union): boolean {\n // Determine variables in scope of the union branches\n const scopedVariables = union.input\n .map(Util.inScopeVariables)\n .map(variables => variables.map(v => v.value))\n .map(variables => variables.sort((a, b) => a.localeCompare(b)))\n .map(variables => variables.join(','));\n\n // If not all scoped variables in union branches are equal, then we definitely can have undefs\n if (!scopedVariables.every(val => val === scopedVariables[0])) {\n canContainUndefs = true;\n return false;\n }\n\n return true;\n },\n });\n return canContainUndefs;\n }\n\n /**\n * Send a SPARQL query to a SPARQL endpoint and retrieve its bindings as a stream.\n * @param {string} endpoint A SPARQL endpoint URL.\n * @param {string} query A SPARQL query string.\n * @param {RDF.Variable[]} variables The expected variables.\n * @param {IActionContext} context The source context.\n * @param canContainUndefs If the operation may contain undefined variables.\n * @return {BindingsStream} A stream of bindings.\n */\n public async queryBindingsRemote(\n endpoint: string,\n query: string,\n variables: RDF.Variable[],\n context: IActionContext,\n canContainUndefs: boolean,\n ): Promise {\n this.lastSourceContext = this.context.merge(context);\n const rawStream = await this.endpointFetcher.fetchBindings(endpoint, query);\n this.lastSourceContext = undefined;\n\n const it = wrap(rawStream, { autoStart: false, maxBufferSize: Number.POSITIVE_INFINITY })\n .map((rawData: Record) => this.bindingsFactory.bindings(variables\n .map((variable) => {\n const value = rawData[`?${variable.value}`];\n if (!canContainUndefs && !value) {\n Actor.getContextLogger(this.context)?.warn(`The endpoint ${endpoint} failed to provide a binding for ${variable.value}.`);\n }\n return <[RDF.Variable, RDF.Term]> [ variable, value ];\n })\n .filter(([ _, v ]) => Boolean(v))));\n return it;\n }\n\n public toString(): string {\n return `QuerySourceSparql(${this.url})`;\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport { ActorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type {\n IActionQuerySourceIdentify,\n IActorQuerySourceIdentifyOutput,\n IActorQuerySourceIdentifyArgs,\n} from '@comunica/bus-query-source-identify';\nimport type { MediatorQuerySourceIdentifyHypermedia } from '@comunica/bus-query-source-identify-hypermedia';\nimport type { MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { MediatorRdfResolveHypermediaLinks } from '@comunica/bus-rdf-resolve-hypermedia-links';\nimport type { MediatorRdfResolveHypermediaLinksQueue } from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type { IActorTest } from '@comunica/core';\nimport { QuerySourceHypermedia } from './QuerySourceHypermedia';\n\n/**\n * A comunica Hypermedia Query Source Identify Actor.\n */\nexport class ActorQuerySourceIdentifyHypermedia extends ActorQuerySourceIdentify {\n public readonly mediatorDereferenceRdf: MediatorDereferenceRdf;\n public readonly mediatorMetadata: MediatorRdfMetadata;\n public readonly mediatorMetadataExtract: MediatorRdfMetadataExtract;\n public readonly mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n public readonly mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n public readonly mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n public readonly mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly cacheSize: number;\n public readonly maxIterators: number;\n public readonly aggregateTraversalStore: boolean;\n\n public constructor(args: IActorQuerySourceIdentifyHypermediaArgs) {\n super(args);\n }\n\n public async test(action: IActionQuerySourceIdentify): Promise {\n if (typeof action.querySourceUnidentified.value !== 'string') {\n throw new TypeError(`${this.name} requires a single query source with a URL value to be present in the context.`);\n }\n return true;\n }\n\n public async run(action: IActionQuerySourceIdentify): Promise {\n return {\n querySource: {\n source: new QuerySourceHypermedia(\n this.cacheSize,\n action.querySourceUnidentified.value,\n action.querySourceUnidentified.type,\n this.maxIterators,\n this.aggregateTraversalStore &&\n Boolean(action.querySourceUnidentified.context?.get(KeysQuerySourceIdentify.traverse)),\n {\n mediatorMetadata: this.mediatorMetadata,\n mediatorMetadataExtract: this.mediatorMetadataExtract,\n mediatorMetadataAccumulate: this.mediatorMetadataAccumulate,\n mediatorDereferenceRdf: this.mediatorDereferenceRdf,\n mediatorQuerySourceIdentifyHypermedia: this.mediatorQuerySourceIdentifyHypermedia,\n mediatorRdfResolveHypermediaLinks: this.mediatorRdfResolveHypermediaLinks,\n mediatorRdfResolveHypermediaLinksQueue: this.mediatorRdfResolveHypermediaLinksQueue,\n },\n warningMessage => this.logWarn(action.context, warningMessage),\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n ),\n context: action.querySourceUnidentified.context ?? new ActionContext(),\n },\n };\n }\n}\n\nexport interface IActorQuerySourceIdentifyHypermediaArgs extends IActorQuerySourceIdentifyArgs {\n /**\n * The maximum number of entries in the LRU cache, set to 0 to disable.\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n /**\n * The maximum number of links that can be followed in parallel.\n * @default {64}\n */\n maxIterators: number;\n /**\n * If all discovered quads across all links from a traversal source should be indexed in an aggregated store,\n * to speed up later calls.\n * This only applies to sources annotated with KeysQuerySourceIdentify.traverse.\n * @default {true}\n */\n aggregateTraversalStore: boolean;\n /**\n * The RDF dereference mediator\n */\n mediatorDereferenceRdf: MediatorDereferenceRdf;\n /**\n * The metadata mediator\n */\n mediatorMetadata: MediatorRdfMetadata;\n /**\n * The metadata extract mediator\n */\n mediatorMetadataExtract: MediatorRdfMetadataExtract;\n /**\n * The metadata accumulate mediator\n */\n mediatorMetadataAccumulate?: MediatorRdfMetadataAccumulate;\n /**\n * The hypermedia resolve mediator\n */\n mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n /**\n * The hypermedia links resolve mediator\n */\n mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n /**\n * The hypermedia links queue resolve mediator\n */\n mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { ILinkQueue } from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysStatistics } from '@comunica/context-entries';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n ILink,\n IQuerySource,\n IActionContext,\n MetadataBindings,\n IQueryBindingsOptions,\n IStatisticBase,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator, BufferedIteratorOptions } from 'asynciterator';\nimport { BufferedIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nexport abstract class LinkedRdfSourcesAsyncRdfIterator extends BufferedIterator {\n protected readonly operation: Algebra.Operation;\n protected readonly queryBindingsOptions: IQueryBindingsOptions | undefined;\n protected readonly context: IActionContext;\n\n private readonly cacheSize: number;\n protected readonly firstUrl: string;\n private readonly maxIterators: number;\n private readonly sourceStateGetter: SourceStateGetter;\n\n protected started = false;\n private readonly currentIterators: AsyncIterator[] = [];\n private iteratorsPendingCreation = 0;\n private iteratorsPendingTermination = 0;\n // eslint-disable-next-line unicorn/no-useless-undefined\n private accumulatedMetadata: Promise = Promise.resolve(undefined);\n private preflightMetadata: Promise | undefined;\n\n public constructor(\n cacheSize: number,\n operation: Algebra.Operation,\n queryBindingsOptions: IQueryBindingsOptions | undefined,\n context: IActionContext,\n firstUrl: string,\n maxIterators: number,\n sourceStateGetter: SourceStateGetter,\n options?: BufferedIteratorOptions,\n ) {\n super({ autoStart: false, ...options });\n this._reading = false;\n this.cacheSize = cacheSize;\n this.operation = operation;\n this.queryBindingsOptions = queryBindingsOptions;\n this.context = context;\n this.firstUrl = firstUrl;\n this.maxIterators = maxIterators;\n this.sourceStateGetter = sourceStateGetter;\n\n if (this.maxIterators <= 0) {\n throw new Error(`LinkedRdfSourcesAsyncRdfIterator.maxIterators must be larger than zero, but got ${this.maxIterators}`);\n }\n }\n\n /**\n * Start filling the buffer of this iterator.\n */\n public kickstart(): void {\n if (!this.started) {\n this._fillBufferAsync();\n }\n }\n\n public override getProperty

(propertyName: string, callback?: (value: P) => void): P | undefined {\n if (propertyName === 'metadata' && !this.started) {\n // If the iterator has not started yet, forcefully fetch the metadata from the source without starting the\n // iterator. This way, we keep the iterator lazy.\n if (!this.preflightMetadata) {\n this.preflightMetadata = new Promise((resolve, reject) => {\n this.sourceStateGetter({ url: this.firstUrl }, {})\n .then((sourceState) => {\n // Don't pass query options, as we don't want to consume any passed iterators\n const bindingsStream = sourceState.source.queryBindings(this.operation, this.context);\n bindingsStream.getProperty('metadata', (metadata: MetadataBindings) => {\n metadata.state = new MetadataValidationState();\n bindingsStream.destroy();\n this.accumulateMetadata(sourceState.metadata, metadata)\n .then((accumulatedMetadata) => {\n // Also merge fields that were not explicitly accumulated\n const returnMetadata = { ...sourceState.metadata, ...metadata, ...accumulatedMetadata };\n resolve(returnMetadata);\n })\n .catch(() => {\n resolve({\n ...sourceState.metadata,\n state: new MetadataValidationState(),\n });\n });\n });\n })\n .catch(reject);\n });\n }\n this.preflightMetadata\n .then(metadata => this.setProperty('metadata', metadata))\n .catch(() => {\n // Ignore errors\n });\n }\n return super.getProperty(propertyName, callback);\n }\n\n protected override _end(destroy?: boolean): void {\n // Close all running iterators\n for (const it of this.currentIterators) {\n it.destroy();\n }\n\n super._end(destroy);\n }\n\n /**\n * Get the internal link queue.\n * The returned instance must always be the same.\n */\n public abstract getLinkQueue(): Promise;\n\n /**\n * Determine the links to be followed from the current source given its metadata.\n * @param metadata The metadata of a source.\n */\n protected abstract getSourceLinks(metadata: Record, startSource: ISourceState): Promise;\n\n public override _read(count: number, done: () => void): void {\n if (this.started) {\n // Read from all current iterators\n for (const iterator of this.currentIterators) {\n while (count > 0) {\n const read = iterator.read();\n if (read === null) {\n break;\n } else {\n count--;\n this._push(read);\n }\n }\n if (count <= 0) {\n break;\n }\n }\n\n // Schedule new iterators if needed\n if (count >= 0 && this.canStartNewIterator()) {\n // We can safely ignore skip catching the error, since we are guaranteed to have\n // successfully got the source for this.firstUrl before.\n // eslint-disable-next-line ts/no-floating-promises\n this.sourceStateGetter({ url: this.firstUrl }, {})\n .then((sourceState) => {\n this.startIteratorsForNextUrls(sourceState.handledDatasets, false);\n done();\n });\n } else {\n done();\n }\n } else {\n // The first time this is called, prepare the first source\n this.started = true;\n\n // Await the source to be set, and start the source iterator\n this.sourceStateGetter({ url: this.firstUrl }, {})\n .then((sourceState) => {\n this.startIterator(sourceState);\n done();\n })\n // Destroy should be async because it can be called before it is listened to\n .catch(error => setTimeout(() => this.destroy(error)));\n }\n }\n\n protected canStartNewIterator(): boolean {\n return (this.currentIterators.length + this.iteratorsPendingCreation + this.iteratorsPendingTermination) <\n this.maxIterators && (!this.canStartNewIteratorConsiderReadable() || !this.readable);\n }\n\n protected canStartNewIteratorConsiderReadable(): boolean {\n return true;\n }\n\n protected areIteratorsRunning(): boolean {\n return (this.currentIterators.length + this.iteratorsPendingCreation + this.iteratorsPendingTermination) > 0;\n }\n\n /**\n * Append the fields from appendingMetadata into accumulatedMetadata.\n * @param accumulatedMetadata The fields to append to.\n * @param appendingMetadata The fields to append.\n * @protected\n */\n protected abstract accumulateMetadata(\n accumulatedMetadata: MetadataBindings,\n appendingMetadata: MetadataBindings,\n ): Promise;\n\n /**\n * Start a new iterator for the given source.\n * Once the iterator is done, it will either determine a new source, or it will close the linked iterator.\n * @param {ISourceState} startSource The start source state.\n */\n protected startIterator(startSource: ISourceState): void {\n // Delegate the quad pattern query to the given source\n try {\n const iterator = startSource.source.queryBindings(this.operation, this.context, this.queryBindingsOptions);\n this.currentIterators.push(iterator);\n let receivedEndEvent = false;\n let receivedMetadata = false;\n\n // Attach readers to the newly created iterator\n (iterator)._destination = this;\n iterator.on('error', (error: Error) => this.destroy(error));\n iterator.on('readable', () => this._fillBuffer());\n iterator.on('end', () => {\n this.currentIterators.splice(this.currentIterators.indexOf(iterator), 1);\n\n // Indicate that this iterator still needs to flush its next-links.\n // Without this, the linked iterator could sometimes be closed before next-links are obtained.\n receivedEndEvent = true;\n if (!receivedMetadata) {\n this.iteratorsPendingTermination++;\n }\n\n // If the metadata was already received, handle the next URL in the queue\n if (receivedMetadata) {\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }\n });\n\n // Listen for the metadata of the source\n // The metadata property is guaranteed to be set\n iterator.getProperty('metadata', (metadata: MetadataBindings) => {\n // Accumulate the metadata object\n this.accumulatedMetadata = this.accumulatedMetadata\n .then(previousMetadata => (async() => {\n if (!previousMetadata) {\n previousMetadata = startSource.metadata;\n }\n return this.accumulateMetadata(previousMetadata, metadata);\n })()\n .then((accumulatedMetadata) => {\n // Also merge fields that were not explicitly accumulated\n const returnMetadata = { ...startSource.metadata, ...metadata, ...accumulatedMetadata };\n\n // Create new metadata state\n returnMetadata.state = new MetadataValidationState();\n\n // Emit metadata, and invalidate any metadata that was set before\n this.updateMetadata(returnMetadata);\n\n // Invalidate any preflight metadata\n if (this.preflightMetadata) {\n this.preflightMetadata\n .then(metadataIn => metadataIn.state.invalidate())\n .catch(() => {\n // Ignore errors\n });\n }\n\n // Determine next urls, which will eventually become a next-next source.\n this.getSourceLinks(returnMetadata, startSource)\n .then((nextUrls: ILink[]) => Promise.all(nextUrls))\n .then(async(nextUrls: ILink[]) => {\n // Append all next URLs to our queue\n const linkQueue = await this.getLinkQueue();\n for (const nextUrl of nextUrls) {\n linkQueue.push(nextUrl, startSource.link);\n }\n\n receivedMetadata = true;\n if (receivedEndEvent) {\n this.iteratorsPendingTermination--;\n }\n\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }).catch(error => this.destroy(error));\n\n return returnMetadata;\n })).catch((error) => {\n this.destroy(error);\n return {};\n });\n });\n } catch (syncError: unknown) {\n this.destroy( syncError);\n }\n }\n\n protected updateMetadata(metadataNew: MetadataBindings): void {\n const metadataToInvalidate = this.getProperty('metadata');\n this.setProperty('metadata', metadataNew);\n metadataToInvalidate?.state.invalidate();\n }\n\n protected isRunning(): boolean {\n return !this.done;\n }\n\n /**\n * Check if a next URL is in the queue.\n * If yes, start a new iterator.\n * If no, close this iterator.\n * @param handledDatasets\n * @param canClose\n */\n protected startIteratorsForNextUrls(handledDatasets: Record, canClose: boolean): void {\n this.getLinkQueue()\n .then((linkQueue) => {\n // Create as many new iterators as possible\n while (this.canStartNewIterator() && this.isRunning()) {\n const nextLink = linkQueue.pop();\n if (nextLink) {\n this.iteratorsPendingCreation++;\n this.sourceStateGetter(nextLink, handledDatasets)\n .then((nextSourceState) => {\n // If we find a statistic tracking dereference events we emit the relevant data\n const statisticDereferenceLinks: IStatisticBase | undefined = this.context.get(\n KeysStatistics.dereferencedLinks,\n );\n if (statisticDereferenceLinks) {\n statisticDereferenceLinks.updateStatistic(\n {\n url: nextSourceState.link.url,\n metadata: { ...nextSourceState.metadata, ...nextSourceState.link.metadata },\n },\n nextSourceState.source,\n );\n }\n\n this.iteratorsPendingCreation--;\n this.startIterator(nextSourceState);\n })\n .catch(error => this.emit('error', error));\n } else {\n break;\n }\n }\n\n // Close, only if no other iterators are still running\n if (canClose && this.isCloseable(linkQueue, true)) {\n this.close();\n }\n })\n .catch(error => this.destroy(error));\n }\n\n protected isCloseable(linkQueue: ILinkQueue, _requireQueueEmpty: boolean): boolean {\n return linkQueue.isEmpty() && !this.areIteratorsRunning();\n }\n}\n\n/**\n * The current state of a source.\n * This is needed for following links within a source.\n */\nexport interface ISourceState {\n /**\n * The link to this source.\n */\n link: ILink;\n /**\n * A source.\n */\n source: IQuerySource;\n /**\n * The source's initial metadata.\n */\n metadata: MetadataBindings;\n /**\n * All dataset identifiers that have been passed for this source.\n */\n handledDatasets: Record;\n}\n\nexport type SourceStateGetter = (link: ILink, handledDatasets: Record) => Promise;\n","import type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { MediatorRdfResolveHypermediaLinks } from '@comunica/bus-rdf-resolve-hypermedia-links';\nimport type {\n ILinkQueue,\n MediatorRdfResolveHypermediaLinksQueue,\n} from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysQueryOperation, KeysStatistics } from '@comunica/context-entries';\nimport type {\n IActionContext,\n IAggregatedStore,\n IQueryBindingsOptions,\n MetadataBindings,\n ILink,\n IStatisticBase,\n IDiscoverEventData,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { SourceStateGetter, ISourceState } from './LinkedRdfSourcesAsyncRdfIterator';\nimport { LinkedRdfSourcesAsyncRdfIterator } from './LinkedRdfSourcesAsyncRdfIterator';\n\nconst DF = new DataFactory();\nconst AF = new Factory();\n\n/**\n * An quad iterator that can iterate over consecutive RDF sources\n * that are determined using the rdf-resolve-hypermedia-links bus.\n *\n * @see LinkedRdfSourcesAsyncRdfIterator\n */\nexport class MediatedLinkedRdfSourcesAsyncRdfIterator extends LinkedRdfSourcesAsyncRdfIterator {\n private readonly mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n private readonly mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n private readonly mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n private readonly forceSourceType?: string;\n private readonly handledUrls: Record;\n private readonly aggregatedStore: IAggregatedStore | undefined;\n private linkQueue: Promise | undefined;\n private wasForcefullyClosed = false;\n\n public constructor(\n cacheSize: number,\n operation: Algebra.Operation,\n queryBindingsOptions: IQueryBindingsOptions | undefined,\n context: IActionContext,\n forceSourceType: string | undefined,\n firstUrl: string,\n maxIterators: number,\n sourceStateGetter: SourceStateGetter,\n aggregatedStore: IAggregatedStore | undefined,\n mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate,\n mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks,\n mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue,\n ) {\n super(\n cacheSize,\n operation,\n queryBindingsOptions,\n context,\n firstUrl,\n maxIterators,\n sourceStateGetter,\n // Buffersize must be infinite for an aggregated store because it must keep filling until there are no more\n // derived iterators in the aggregated store.\n aggregatedStore ? { maxBufferSize: Number.POSITIVE_INFINITY } : undefined,\n );\n this.forceSourceType = forceSourceType;\n this.mediatorMetadataAccumulate = mediatorMetadataAccumulate;\n this.mediatorRdfResolveHypermediaLinks = mediatorRdfResolveHypermediaLinks;\n this.mediatorRdfResolveHypermediaLinksQueue = mediatorRdfResolveHypermediaLinksQueue;\n this.handledUrls = { [firstUrl]: true };\n this.aggregatedStore = aggregatedStore;\n }\n\n // Mark the aggregated store as ended once we trigger the closing or destroying of this iterator.\n // We don't override _end, because that would mean that we have to wait\n // until the buffer of this iterator must be fully consumed, which will not always be the case.\n\n public override close(): void {\n if (!this.aggregatedStore) {\n super.close();\n return;\n }\n\n this.getLinkQueue()\n .then((linkQueue) => {\n if (this.isCloseable(linkQueue, false)) {\n // Wait a tick before ending the aggregatedStore, to ensure that pending match() calls to it have started.\n if (this.aggregatedStore) {\n setTimeout(() => this.aggregatedStore!.end());\n }\n super.close();\n } else {\n this.wasForcefullyClosed = true;\n }\n })\n .catch(error => super.destroy(error));\n }\n\n public override destroy(cause?: Error): void {\n if (!this.aggregatedStore) {\n super.destroy(cause);\n return;\n }\n\n this.getLinkQueue()\n .then((linkQueue) => {\n if (cause ?? this.isCloseable(linkQueue, false)) {\n // Wait a tick before ending the aggregatedStore, to ensure that pending match() calls to it have started.\n if (this.aggregatedStore) {\n setTimeout(() => this.aggregatedStore!.end());\n }\n super.destroy(cause);\n } else {\n this.wasForcefullyClosed = true;\n }\n })\n .catch(error => super.destroy(error));\n }\n\n protected override isCloseable(linkQueue: ILinkQueue, requireQueueEmpty: boolean): boolean {\n return (requireQueueEmpty ? linkQueue.isEmpty() : this.wasForcefullyClosed || linkQueue.isEmpty()) &&\n !this.areIteratorsRunning();\n }\n\n protected override canStartNewIterator(): boolean {\n // Also allow sub-iterators to be started if the aggregated store has at least one running iterator.\n // We need this because there are cases where these running iterators will be consumed before this linked iterator.\n return (!this.wasForcefullyClosed &&\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n (this.aggregatedStore && this.aggregatedStore.hasRunningIterators())) || super.canStartNewIterator();\n }\n\n protected override canStartNewIteratorConsiderReadable(): boolean {\n return !this.aggregatedStore;\n }\n\n protected override isRunning(): boolean {\n // Same as above\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n return (this.aggregatedStore && this.aggregatedStore.hasRunningIterators()) || !this.done;\n }\n\n public getLinkQueue(): Promise {\n if (!this.linkQueue) {\n this.linkQueue = this.mediatorRdfResolveHypermediaLinksQueue\n .mediate({ firstUrl: this.firstUrl, context: this.context })\n .then(result => result.linkQueue);\n }\n return this.linkQueue;\n }\n\n protected async getSourceLinks(metadata: Record, startSource: ISourceState): Promise {\n try {\n const { links } = await this.mediatorRdfResolveHypermediaLinks.mediate({ context: this.context, metadata });\n // Update discovery event statistic if available\n const traversalTracker: IStatisticBase | undefined =\n this.context.get(KeysStatistics.discoveredLinks);\n if (traversalTracker) {\n for (const link of links) {\n traversalTracker.updateStatistic({ url: link.url, metadata: { ...link.metadata }}, startSource.link);\n }\n }\n\n // Filter URLs to avoid cyclic next-page loops\n return links.filter((link) => {\n if (this.handledUrls[link.url]) {\n return false;\n }\n this.handledUrls[link.url] = true;\n return true;\n });\n } catch {\n // No next URLs may be available, for example when we've reached the end of a Hydra next-page sequence.\n return [];\n }\n }\n\n protected override startIterator(startSource: ISourceState): void {\n if (this.aggregatedStore && !this.aggregatedStore.containedSources.has(startSource.link.url)) {\n // A source that has been cached due to earlier query executions may not be part of the aggregated store yet.\n // In that case, we add all quads from that source to the aggregated store.\n this.aggregatedStore?.containedSources.add(startSource.link.url);\n const stream = startSource.source.queryBindings(\n AF.createPattern(\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n DF.variable('g'),\n ),\n this.context.set(KeysQueryOperation.unionDefaultGraph, true),\n ).map(bindings => DF.quad(\n bindings.get('s')!,\n bindings.get('p')!,\n bindings.get('o')!,\n bindings.get('g'),\n ));\n this.aggregatedStore.import( stream)\n .on('end', () => {\n super.startIterator(startSource);\n });\n } else {\n super.startIterator(startSource);\n }\n }\n\n public async accumulateMetadata(\n accumulatedMetadata: MetadataBindings,\n appendingMetadata: MetadataBindings,\n ): Promise {\n return (await this.mediatorMetadataAccumulate.mediate({\n mode: 'append',\n accumulatedMetadata,\n appendingMetadata,\n context: this.context,\n })).metadata;\n }\n\n protected override updateMetadata(metadataNew: MetadataBindings): void {\n super.updateMetadata(metadataNew);\n this.aggregatedStore?.setBaseMetadata(metadataNew, true);\n }\n}\n","import { QuerySourceRdfJs } from '@comunica/actor-query-source-identify-rdfjs';\nimport type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { IActorDereferenceRdfOutput, MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport type { MediatorQuerySourceIdentifyHypermedia } from '@comunica/bus-query-source-identify-hypermedia';\nimport type { IActorRdfMetadataOutput, MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { MediatorRdfResolveHypermediaLinks } from '@comunica/bus-rdf-resolve-hypermedia-links';\nimport type { MediatorRdfResolveHypermediaLinksQueue } from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type {\n BindingsStream,\n FragmentSelectorShape,\n IActionContext,\n IAggregatedStore,\n IQueryBindingsOptions,\n IQuerySource,\n MetadataBindings,\n ILink,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\nimport { LRUCache } from 'lru-cache';\nimport { Readable } from 'readable-stream';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { ISourceState } from './LinkedRdfSourcesAsyncRdfIterator';\nimport { MediatedLinkedRdfSourcesAsyncRdfIterator } from './MediatedLinkedRdfSourcesAsyncRdfIterator';\nimport { StreamingStoreMetadata } from './StreamingStoreMetadata';\n\nexport class QuerySourceHypermedia implements IQuerySource {\n public readonly referenceValue: string;\n public readonly firstUrl: string;\n public readonly forceSourceType?: string;\n public readonly aggregateStore: boolean;\n public readonly mediators: IMediatorArgs;\n public readonly logWarning: (warningMessage: string) => void;\n public readonly bindingsFactory: BindingsFactory;\n\n /**\n * A cache for source URLs to source states.\n */\n public sourcesState: LRUCache>;\n\n private readonly cacheSize: number;\n private readonly maxIterators: number;\n\n public constructor(\n cacheSize: number,\n firstUrl: string,\n forceSourceType: string | undefined,\n maxIterators: number,\n aggregateStore: boolean,\n mediators: IMediatorArgs,\n logWarning: (warningMessage: string) => void,\n bindingsFactory: BindingsFactory,\n ) {\n this.referenceValue = firstUrl;\n this.cacheSize = cacheSize;\n this.firstUrl = firstUrl;\n this.forceSourceType = forceSourceType;\n this.maxIterators = maxIterators;\n this.mediators = mediators;\n this.aggregateStore = aggregateStore;\n this.logWarning = logWarning;\n this.bindingsFactory = bindingsFactory;\n this.sourcesState = new LRUCache>({ max: this.cacheSize });\n }\n\n public async getSelectorShape(context: IActionContext): Promise {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return source.source.getSelectorShape(context);\n }\n\n public queryBindings(\n operation: Algebra.Operation,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): BindingsStream {\n // Optimized match with aggregated store if enabled and started.\n const aggregatedStore: IAggregatedStore | undefined = this.getAggregateStore(context);\n if (aggregatedStore && operation.type === 'pattern' && aggregatedStore.started) {\n return new QuerySourceRdfJs(aggregatedStore, this.bindingsFactory).queryBindings(operation, context);\n }\n\n // Initialize the sources state on first call\n if (this.sourcesState.size === 0) {\n this.getSourceCached({ url: this.firstUrl }, {}, context, aggregatedStore)\n .catch(error => it.destroy(error));\n }\n\n const it: MediatedLinkedRdfSourcesAsyncRdfIterator = new MediatedLinkedRdfSourcesAsyncRdfIterator(\n this.cacheSize,\n operation,\n options,\n context,\n this.forceSourceType,\n this.firstUrl,\n this.maxIterators,\n (link, handledDatasets) => this.getSourceCached(link, handledDatasets, context, aggregatedStore),\n aggregatedStore,\n this.mediators.mediatorMetadataAccumulate,\n this.mediators.mediatorRdfResolveHypermediaLinks,\n this.mediators.mediatorRdfResolveHypermediaLinksQueue,\n );\n if (aggregatedStore) {\n aggregatedStore.started = true;\n\n // Kickstart this iterator when derived iterators are created from the aggregatedStore,\n // otherwise the traversal process will not start if this iterator is not the first one to be consumed.\n const listener = (): void => it.kickstart();\n aggregatedStore.addIteratorCreatedListener(listener);\n it.on('end', () => aggregatedStore.removeIteratorCreatedListener(listener));\n }\n\n return it;\n }\n\n public queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator {\n return new TransformIterator(async() => {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return source.source.queryQuads(operation, context);\n });\n }\n\n public async queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return await source.source.queryBoolean(operation, context);\n }\n\n public async queryVoid(operation: Algebra.Update, context: IActionContext): Promise {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return await source.source.queryVoid(operation, context);\n }\n\n /**\n * Resolve a source for the given URL.\n * @param link A source link.\n * @param handledDatasets A hash of dataset identifiers that have already been handled.\n * @param context The action context.\n * @param aggregatedStore An optional aggregated store.\n */\n public async getSource(\n link: ILink,\n handledDatasets: Record,\n context: IActionContext,\n aggregatedStore: IAggregatedStore | undefined,\n ): Promise {\n // Include context entries from link\n if (link.context) {\n context = context.merge(link.context);\n }\n\n // Get the RDF representation of the given document\n let url = link.url;\n let quads: RDF.Stream;\n let metadata: Record;\n try {\n const dereferenceRdfOutput: IActorDereferenceRdfOutput = await this.mediators.mediatorDereferenceRdf\n .mediate({ context, url });\n url = dereferenceRdfOutput.url;\n\n // Determine the metadata\n const rdfMetadataOutput: IActorRdfMetadataOutput = await this.mediators.mediatorMetadata.mediate(\n { context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples },\n );\n\n rdfMetadataOutput.data.on('error', () => {\n // Silence errors in the data stream,\n // as they will be emitted again in the metadata stream,\n // and will result in a promise rejection anyways.\n // If we don't do this, we end up with an unhandled error message\n });\n\n metadata = (await this.mediators.mediatorMetadataExtract.mediate({\n context,\n url,\n // The problem appears to be conflicting metadata keys here\n metadata: rdfMetadataOutput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n quads = rdfMetadataOutput.data;\n\n // Optionally filter the resulting data\n if (link.transform) {\n quads = await link.transform(quads);\n }\n } catch (error: unknown) {\n // Make sure that dereference errors are only emitted once an actor really needs the read quads\n // This for example allows SPARQL endpoints that error on service description fetching to still be source-forcible\n quads = new Readable();\n quads.read = () => {\n setTimeout(() => quads.emit('error', error));\n return null;\n };\n ({ metadata } = await this.mediators.mediatorMetadataAccumulate.mediate({ context, mode: 'initialize' }));\n\n // Log as warning, because the quads above may not always be consumed (e.g. for SPARQL endpoints),\n // so the user would not be notified of something going wrong otherwise.\n this.logWarning(`Metadata extraction for ${url} failed: ${( error).message}`);\n }\n\n // Aggregate all discovered quads into a store.\n aggregatedStore?.setBaseMetadata( metadata, false);\n aggregatedStore?.containedSources.add(link.url);\n aggregatedStore?.import(quads);\n\n // Determine the source\n const { source, dataset } = await this.mediators.mediatorQuerySourceIdentifyHypermedia.mediate({\n context,\n forceSourceType: link.url === this.firstUrl ? this.forceSourceType : undefined,\n handledDatasets,\n metadata,\n quads,\n url,\n });\n\n if (dataset) {\n // Mark the dataset as applied\n // This is needed to make sure that things like QPF search forms are only applied once,\n // and next page links are followed after that.\n handledDatasets[dataset] = true;\n }\n\n return { link, source, metadata: metadata, handledDatasets };\n }\n\n /**\n * Resolve a source for the given URL.\n * This will first try to retrieve the source from cache.\n * @param link A source ILink.\n * @param handledDatasets A hash of dataset identifiers that have already been handled.\n * @param context The action context.\n * @param aggregatedStore An optional aggregated store.\n */\n protected getSourceCached(\n link: ILink,\n handledDatasets: Record,\n context: IActionContext,\n aggregatedStore: IAggregatedStore | undefined,\n ): Promise {\n let source = this.sourcesState.get(link.url);\n if (source) {\n return source;\n }\n source = this.getSource(link, handledDatasets, context, aggregatedStore);\n if (link.url === this.firstUrl || aggregatedStore === undefined) {\n this.sourcesState.set(link.url, source);\n }\n return source;\n }\n\n public getAggregateStore(context: IActionContext): IAggregatedStore | undefined {\n let aggregatedStore: IAggregatedStore | undefined;\n if (this.aggregateStore) {\n const aggregatedStores: Map | undefined = context\n .get(KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores);\n if (aggregatedStores) {\n aggregatedStore = aggregatedStores.get(this.firstUrl);\n if (!aggregatedStore) {\n aggregatedStore = new StreamingStoreMetadata(\n undefined,\n async(accumulatedMetadata, appendingMetadata) => \n (await this.mediators.mediatorMetadataAccumulate.mediate({\n mode: 'append',\n accumulatedMetadata,\n appendingMetadata,\n context,\n })).metadata,\n );\n aggregatedStores.set(this.firstUrl, aggregatedStore);\n }\n return aggregatedStore;\n }\n }\n }\n\n public toString(): string {\n return `QuerySourceHypermedia(${this.firstUrl})`;\n }\n}\n\nexport interface IMediatorArgs {\n mediatorDereferenceRdf: MediatorDereferenceRdf;\n mediatorMetadata: MediatorRdfMetadata;\n mediatorMetadataExtract: MediatorRdfMetadataExtract;\n mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n}\n","// eslint-disable-next-line import/no-nodejs-modules\nimport type { EventEmitter } from 'node:events';\nimport { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { MetadataQuads, IAggregatedStore, MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { StreamingStore } from 'rdf-streaming-store';\n\n/**\n * A StreamingStore that returns an AsyncIterator with a valid MetadataQuads property.\n */\nexport class StreamingStoreMetadata extends StreamingStore implements IAggregatedStore {\n public started = false;\n public containedSources = new Set();\n public readonly runningIterators: Set> = new Set>();\n protected readonly iteratorCreatedListeners: Set<() => void> = new Set();\n protected readonly metadataAccumulator:\n (accumulatedMetadata: MetadataBindings, appendingMetadata: MetadataBindings) => Promise;\n\n protected baseMetadata: MetadataBindings = {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: [],\n };\n\n public constructor(\n store: RDF.Store | undefined,\n metadataAccumulator:\n (accumulatedMetadata: MetadataBindings, appendingMetadata: MetadataBindings) => Promise,\n ) {\n super(store);\n this.metadataAccumulator = metadataAccumulator;\n }\n\n public override import(stream: RDF.Stream): EventEmitter {\n if (!this.ended) {\n super.import(stream);\n }\n return stream;\n }\n\n public hasRunningIterators(): boolean {\n return this.runningIterators.size > 0;\n }\n\n public override match(\n subject?: RDF.Term | null,\n predicate?: RDF.Term | null,\n object?: RDF.Term | null,\n graph?: RDF.Term | null,\n ): AsyncIterator {\n // Wrap the raw stream in an AsyncIterator\n const rawStream = super.match(subject, predicate, object, graph);\n const iterator = new ClosableTransformIterator(\n rawStream,\n {\n autoStart: false,\n onClose: () => {\n // Running iterators are deleted once closed or destroyed\n this.runningIterators.delete(iterator);\n },\n },\n );\n\n // Expose the metadata property containing the cardinality\n let count = this.getStore().countQuads(subject!, predicate!, object!, graph!);\n const metadata: MetadataQuads = {\n state: new MetadataValidationState(),\n cardinality: {\n type: 'estimate',\n value: count,\n },\n canContainUndefs: false,\n };\n iterator.setProperty('metadata', metadata);\n iterator.setProperty('lastCount', count);\n\n // Every time a new quad is pushed into the iterator, update the metadata\n rawStream.on('quad', () => {\n iterator.setProperty('lastCount', ++count);\n this.updateMetadataState(iterator, count);\n });\n\n // Store all running iterators until they close or are destroyed\n this.runningIterators.add(iterator);\n\n // Invoke creation listeners\n for (const listener of this.iteratorCreatedListeners) {\n listener();\n }\n\n return iterator;\n }\n\n public setBaseMetadata(metadata: MetadataBindings, updateStates: boolean): void {\n this.baseMetadata = { ...metadata };\n this.baseMetadata.cardinality = { type: 'exact', value: 0 };\n\n if (updateStates) {\n for (const iterator of this.runningIterators) {\n const count: number = iterator.getProperty('lastCount')!;\n this.updateMetadataState(iterator, count);\n }\n }\n }\n\n protected updateMetadataState(iterator: AsyncIterator, count: number): void {\n // Append the given cardinality to the base metadata\n const metadataNew: MetadataBindings = {\n state: new MetadataValidationState(),\n cardinality: {\n type: 'estimate',\n value: count,\n },\n canContainUndefs: false,\n variables: [],\n };\n\n this.metadataAccumulator(this.baseMetadata, metadataNew)\n .then((accumulatedMetadata) => {\n accumulatedMetadata.state = new MetadataValidationState();\n\n // Set the new metadata, and invalidate the previous state\n const metadataToInvalidate = iterator.getProperty('metadata');\n iterator.setProperty('metadata', accumulatedMetadata);\n metadataToInvalidate?.state.invalidate();\n })\n .catch(() => {\n // Void errors\n });\n }\n\n public addIteratorCreatedListener(listener: () => void): void {\n this.iteratorCreatedListeners.add(listener);\n }\n\n public removeIteratorCreatedListener(listener: () => void): void {\n this.iteratorCreatedListeners.delete(listener);\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentify,\n IActorQuerySourceIdentifyOutput,\n IActorQuerySourceIdentifyArgs,\n} from '@comunica/bus-query-source-identify';\nimport { ActorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContext } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { QuerySourceRdfJs } from './QuerySourceRdfJs';\n\n/**\n * A comunica RDFJS Query Source Identify Actor.\n */\nexport class ActorQuerySourceIdentifyRdfJs extends ActorQuerySourceIdentify {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQuerySourceIdentifyRdfJsArgs) {\n super(args);\n }\n\n public async test(action: IActionQuerySourceIdentify): Promise {\n const source = action.querySourceUnidentified;\n if (source.type !== undefined && source.type !== 'rdfjs') {\n throw new Error(`${this.name} requires a single query source with rdfjs type to be present in the context.`);\n }\n if (typeof source.value === 'string' || !('match' in source.value)) {\n throw new Error(`${this.name} received an invalid rdfjs query source.`);\n }\n return true;\n }\n\n public async run(action: IActionQuerySourceIdentify): Promise {\n return {\n querySource: {\n source: new QuerySourceRdfJs(\n action.querySourceUnidentified.value,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n ),\n context: action.querySourceUnidentified.context ?? new ActionContext(),\n },\n };\n }\n}\n\nexport interface IActorQuerySourceIdentifyRdfJsArgs extends IActorQuerySourceIdentifyArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { filterMatchingQuotedQuads, quadsToBindings } from '@comunica/bus-query-source-identify';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IQuerySource, BindingsStream, IActionContext, FragmentSelectorShape } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { AsyncIterator, wrap as wrapAsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { someTermsNested, filterTermsNested, someTerms, uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { IRdfJsSourceExtended } from './IRdfJsSourceExtended';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\n\nexport class QuerySourceRdfJs implements IQuerySource {\n protected static readonly SELECTOR_SHAPE: FragmentSelectorShape = {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: AF.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')),\n },\n variablesOptional: [\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n ],\n };\n\n public referenceValue: string | RDF.Source;\n protected readonly source: IRdfJsSourceExtended;\n private readonly bindingsFactory: BindingsFactory;\n\n public constructor(source: RDF.Source, bindingsFactory: BindingsFactory) {\n this.source = source;\n this.referenceValue = source;\n this.bindingsFactory = bindingsFactory;\n }\n\n public static nullifyVariables(term: RDF.Term | undefined, quotedTripleFiltering: boolean): RDF.Term | undefined {\n return !term || term.termType === 'Variable' || (!quotedTripleFiltering &&\n term.termType === 'Quad' && someTermsNested(term, value => value.termType === 'Variable')) ?\n undefined :\n term;\n }\n\n public static hasDuplicateVariables(pattern: RDF.BaseQuad): boolean {\n const variables = filterTermsNested(pattern, term => term.termType === 'Variable');\n return variables.length > 1 && uniqTerms(variables).length < variables.length;\n }\n\n public async getSelectorShape(): Promise {\n return QuerySourceRdfJs.SELECTOR_SHAPE;\n }\n\n public queryBindings(operation: Algebra.Operation, context: IActionContext): BindingsStream {\n if (operation.type !== 'pattern') {\n throw new Error(`Attempted to pass non-pattern operation '${operation.type}' to QuerySourceRdfJs`);\n }\n\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n // Create an async iterator from the matched quad stream\n const rawStream = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n let it: AsyncIterator = rawStream instanceof AsyncIterator ?\n rawStream :\n wrapAsyncIterator(rawStream, { autoStart: false });\n\n // Perform post-match-filtering if the source does not support quoted triple filtering.\n if (!quotedTripleFiltering) {\n it = filterMatchingQuotedQuads(operation, it);\n }\n\n // Determine metadata\n if (!it.getProperty('metadata')) {\n this.setMetadata(it, operation)\n .catch(error => it.destroy(error));\n }\n\n return quadsToBindings(\n it,\n operation,\n this.bindingsFactory,\n Boolean(context.get(KeysQueryOperation.unionDefaultGraph)),\n );\n }\n\n protected async setMetadata(\n it: AsyncIterator,\n operation: Algebra.Pattern,\n ): Promise {\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n let cardinality: number;\n if (this.source.countQuads) {\n // If the source provides a dedicated method for determining cardinality, use that.\n cardinality = await this.source.countQuads(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n } else {\n // Otherwise, fallback to a sub-optimal alternative where we just call match again to count the quads.\n // WARNING: we can NOT reuse the original data stream here,\n // because we may lose data elements due to things happening async.\n let i = 0;\n cardinality = await new Promise((resolve, reject) => {\n const matches = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n matches.on('error', reject);\n matches.on('end', () => resolve(i));\n matches.on('data', () => i++);\n });\n }\n\n // If `match` would require filtering afterwards, our count will be an over-estimate.\n const wouldRequirePostFiltering = (!quotedTripleFiltering &&\n someTerms(operation, term => term.termType === 'Quad')) ||\n QuerySourceRdfJs.hasDuplicateVariables(operation);\n\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: wouldRequirePostFiltering ? 'estimate' : 'exact', value: cardinality },\n canContainUndefs: false,\n });\n }\n\n public queryQuads(\n _operation: Algebra.Operation,\n _context: IActionContext,\n ): AsyncIterator {\n throw new Error('queryQuads is not implemented in QuerySourceRdfJs');\n }\n\n public queryBoolean(\n _operation: Algebra.Ask,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryBoolean is not implemented in QuerySourceRdfJs');\n }\n\n public queryVoid(\n _operation: Algebra.Update,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryVoid is not implemented in QuerySourceRdfJs');\n }\n\n public toString(): string {\n return `QuerySourceRdfJs(${this.source.constructor.name})`;\n }\n}\n","import type { IActionRdfJoinEntriesSort, IActorRdfJoinEntriesSortOutput } from '@comunica/bus-rdf-join-entries-sort';\nimport { ActorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\n\n/**\n * An actor that sorts join entries by increasing cardinality.\n */\nexport class ActorRdfJoinEntriesSortCardinality extends ActorRdfJoinEntriesSort {\n public constructor(\n args: IActorArgs,\n ) {\n super(args);\n }\n\n public async test(_action: IActionRdfJoinEntriesSort): Promise {\n return true;\n }\n\n public async run(action: IActionRdfJoinEntriesSort): Promise {\n const entries = [ ...action.entries ]\n .sort((entryLeft, entryRight) => entryLeft.metadata.cardinality.value - entryRight.metadata.cardinality.value);\n return { entries };\n }\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { HashJoin } from 'asyncjoin';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'hash',\n limitEntries: 2,\n requiresVariableOverlap: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n let metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Ensure the left build stream is the smallest\n // TODO: in the next major version, use ActorRdfJoin.sortJoinEntries, which requires mediatorJoinEntriesSort\n if (metadatas[1].cardinality.value < metadatas[0].cardinality.value) {\n metadatas = [ metadatas[1], metadatas[0] ];\n action = { ...action, entries: [ action.entries[1], action.entries[0] ]};\n }\n\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n const join = new HashJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n entry => ActorRdfJoin.hash(entry, variables),\n ActorRdfJoin.joinBindings,\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Ensure the left build stream is the smallest\n if (metadatas[1].cardinality.value < metadatas[0].cardinality.value) {\n metadatas = [ metadatas[1], metadatas[0] ];\n }\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinArgs, IActorRdfJoinOutputInner } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin, ChunkedIterator } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type {\n IJoinEntryWithMetadata,\n IQueryOperationResultBindings,\n IQuerySourceWrapper,\n MetadataBindings,\n IActionContext,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\n\n/**\n * A comunica Inner Multi Bind Source RDF Join Actor.\n */\nexport class ActorRdfJoinMultiBindSource extends ActorRdfJoin {\n public readonly selectivityModifier: number;\n public readonly blockSize: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n\n public constructor(args: IActorRdfJoinInnerMultiBindSourceArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'bind-source',\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas(action.entries);\n const entries = await this.sortJoinEntries(entriesUnsorted, action.context);\n\n this.logDebug(\n action.context,\n 'First entry for Bind Join Source: ',\n () => ({ entry: entries[0].operation, metadata: entries[0].metadata }),\n );\n\n // Close the non-smallest streams\n for (const [ i, element ] of entries.entries()) {\n if (i !== 0) {\n element.output.bindingsStream.close();\n }\n }\n\n // Take the stream with the lowest cardinality\n const smallestStream: IQueryOperationResultBindings = entries[0].output;\n const smallestMetadata = entries[0].metadata;\n const remainingEntries = [ ...entries ];\n remainingEntries.splice(0, 1);\n\n // Get source for remaining entries (guaranteed thanks to prior check in getJoinCoefficients())\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(remainingEntries[0].operation)!;\n\n // Determine the operation to pass\n const operation = this.createOperationFromEntries(remainingEntries);\n\n // Slice the smallest stream into chunks according to the block size, so we avoid blocking too long.\n const chunkedStreams: AsyncIterator> = new ChunkedIterator(\n smallestStream.bindingsStream,\n this.blockSize,\n { autoStart: false },\n );\n\n // For each chunk, pass the query and the bindings to the source for execution\n const bindingsStream = new UnionIterator(chunkedStreams.map(chunk => sourceWrapper.source.queryBindings(\n operation,\n sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context,\n { joinBindings: { bindings: chunk, metadata: smallestMetadata }},\n )));\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: () => this.constructResultMetadata(entries, entries.map(entry => entry.metadata), action.context),\n },\n physicalPlanMetadata: {\n bindIndex: entriesUnsorted.indexOf(entries[0]),\n },\n };\n }\n\n protected async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, entries, context);\n\n // Prioritize entries with modified operations, so these are not re-executed\n entries = entries.sort((entryLeft, entryRight) => {\n if (entryLeft.operationModified && !entryRight.operationModified) {\n return -1;\n }\n return 0;\n });\n\n return entries;\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entries = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entries.map(entry => entry.metadata);\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Determine first stream and remaining ones\n const remainingEntries = [ ...entries ];\n const remainingRequestInitialTimes = [ ...requestInitialTimes ];\n const remainingRequestItemTimes = [ ...requestItemTimes ];\n remainingEntries.splice(0, 1);\n remainingRequestInitialTimes.splice(0, 1);\n remainingRequestItemTimes.splice(0, 1);\n\n // Reject binding on operations without sources\n const sources = remainingEntries.map(entry => ActorQueryOperation.getOperationSource(entry.operation));\n if (sources.some(source => !source)) {\n throw new Error(`Actor ${this.name} can not bind on remaining operations without source annotation`);\n }\n\n // Reject binding on operations with un-equal sources\n if (sources.some(source => source !== sources[0])) {\n throw new Error(`Actor ${this.name} can not bind on remaining operations with non-equal source annotation`);\n }\n\n // Reject if the source can not handle bindings\n const sourceWrapper: IQuerySourceWrapper = sources[0]!;\n const testingOperation = this.createOperationFromEntries(remainingEntries);\n const selectorShape = await sourceWrapper.source.getSelectorShape(action.context);\n if (!ActorQueryOperation\n .doesShapeAcceptOperation(selectorShape, testingOperation, { joinBindings: true })) {\n throw new Error(`Actor ${this.name} detected a source that can not handle passing down join bindings`);\n }\n\n // Determine selectivities of smallest entry with all other entries\n const selectivities = await Promise.all(remainingEntries\n .map(async entry => (await this.mediatorJoinSelectivity.mediate({\n entries: [ entries[0], entry ],\n context: action.context,\n })).selectivity * this.selectivityModifier));\n\n // Determine coefficients for remaining entries\n const cardinalityRemaining = remainingEntries\n .map((entry, i) => entry.metadata.cardinality.value * selectivities[i])\n .reduce((sum, element) => sum + element, 0);\n\n return {\n iterations: 1,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + cardinalityRemaining * requestItemTimes[1],\n };\n }\n\n public createOperationFromEntries(remainingEntries: IJoinEntryWithMetadata[]): Algebra.Operation {\n if (remainingEntries.length === 1) {\n return remainingEntries[0].operation;\n }\n return AF.createJoin(remainingEntries.map(entry => entry.operation), true);\n }\n}\n\nexport interface IActorRdfJoinInnerMultiBindSourceArgs extends IActorRdfJoinArgs {\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The maximum amount of bindings to send to the source per block.\n * @default {16}\n */\n blockSize: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, materializeOperation } from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, BindingsStream, IQueryOperationResultBindings, MetadataBindings } from '@comunica/types';\nimport { MultiTransformIterator, TransformIterator, UnionIterator } from 'asynciterator';\nimport { Factory, Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Multi-way Bind RDF Join Actor.\n */\nexport class ActorRdfJoinMultiBind extends ActorRdfJoin {\n public readonly bindOrder: BindOrder;\n public readonly selectivityModifier: number;\n public readonly minMaxCardinalityRatio: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorRdfJoinMultiBindArgs) {\n // TODO: remove this fallback in the next major update\n if (args.minMaxCardinalityRatio === undefined) {\n args.minMaxCardinalityRatio = 60;\n }\n super(args, {\n logicalType: 'inner',\n physicalName: 'bind',\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n /**\n * Create a new bindings stream that takes every binding of the base stream\n * and binds it to the remaining patterns, evaluates those patterns, and emits all their bindings.\n *\n * @param bindOrder The order in which elements should be bound.\n * @param baseStream The base stream.\n * @param operations The operations to bind with each binding of the base stream.\n * @param operationBinder A callback to retrieve the bindings stream of bound operations.\n * @param optional If the original bindings should be emitted when the resulting bindings stream is empty.\n * @return {BindingsStream}\n */\n public static createBindStream(\n bindOrder: BindOrder,\n baseStream: BindingsStream,\n operations: Algebra.Operation[],\n operationBinder: (boundOperations: Algebra.Operation[], operationBindings: Bindings)\n => Promise,\n optional: boolean,\n bindingsFactory: BindingsFactory,\n ): BindingsStream {\n // Enable auto-start on sub-bindings during depth-first binding for best performance.\n const autoStartSubBindings = bindOrder === 'depth-first';\n\n // Create bindings function\n const binder = (bindings: Bindings): BindingsStream => {\n // We don't bind the filter because filters are always handled last,\n // and we need to avoid binding filters of sub-queries, which are to be handled first. (see spec test bind10)\n const subOperations = operations\n .map(operation => materializeOperation(operation, bindings, bindingsFactory, { bindFilter: true }));\n const bindingsMerger = (subBindings: Bindings): Bindings | undefined => subBindings.merge(bindings);\n return new TransformIterator(async() => (await operationBinder(subOperations, bindings))\n .transform({ map: bindingsMerger }), { maxBufferSize: 128, autoStart: autoStartSubBindings });\n };\n\n // Create an iterator that binds elements from the base stream in different orders\n switch (bindOrder) {\n case 'depth-first':\n return new MultiTransformIterator(baseStream, { autoStart: false, multiTransform: binder, optional });\n case 'breadth-first':\n return new UnionIterator(baseStream.transform({\n map: binder,\n optional,\n }), { autoStart: false });\n default:\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`Received request for unknown bind order: ${bindOrder}`);\n }\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas(action.entries);\n const entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, entriesUnsorted, action.context);\n\n this.logDebug(\n action.context,\n 'First entry for Bind Join: ',\n () => ({ entry: entries[0].operation, metadata: entries[0].metadata }),\n );\n\n // Close the non-smallest streams\n for (const [ i, element ] of entries.entries()) {\n if (i !== 0) {\n element.output.bindingsStream.close();\n }\n }\n\n // Take the stream with the lowest cardinality\n const smallestStream: IQueryOperationResultBindings = entries[0].output;\n const remainingEntries = [ ...entries ];\n remainingEntries.splice(0, 1);\n\n // Bind the remaining patterns for each binding in the stream\n const subContext = action.context\n .set(KeysQueryOperation.joinLeftMetadata, entries[0].metadata)\n .set(KeysQueryOperation.joinRightMetadatas, remainingEntries.map(entry => entry.metadata));\n const bindingsStream: BindingsStream = ActorRdfJoinMultiBind.createBindStream(\n this.bindOrder,\n smallestStream.bindingsStream,\n remainingEntries.map(entry => entry.operation),\n async(operations: Algebra.Operation[], operationBindings: Bindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n const operation = operations.length === 1 ?\n operations[0] :\n ActorRdfJoinMultiBind.FACTORY.createJoin(operations);\n const output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate(\n { operation, context: subContext?.set(KeysQueryOperation.joinBindings, operationBindings) },\n ));\n return output.bindingsStream;\n },\n false,\n bindingsFactory,\n );\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: () => this.constructResultMetadata(entries, entries.map(entry => entry.metadata), action.context),\n },\n physicalPlanMetadata: {\n bindIndex: entriesUnsorted.indexOf(entries[0]),\n bindOperation: entries[0].operation,\n bindOperationCardinality: entries[0].metadata.cardinality,\n bindOrder: this.bindOrder,\n },\n };\n }\n\n public canBindWithOperation(operation: Algebra.Operation): boolean {\n let valid = true;\n Util.recurseOperation(operation, {\n [Algebra.types.EXTEND](): boolean {\n valid = false;\n return false;\n },\n [Algebra.types.GROUP](): boolean {\n valid = false;\n return false;\n },\n });\n\n return valid;\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entries.map(entry => entry.metadata);\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Determine first stream and remaining ones\n const remainingEntries = [ ...entries ];\n const remainingRequestInitialTimes = [ ...requestInitialTimes ];\n const remainingRequestItemTimes = [ ...requestItemTimes ];\n remainingEntries.splice(0, 1);\n remainingRequestInitialTimes.splice(0, 1);\n remainingRequestItemTimes.splice(0, 1);\n\n // Reject binding on some operation types\n if (remainingEntries\n .some(entry => !this.canBindWithOperation(entry.operation))) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n\n // Reject binding on modified operations, since using the output directly would be significantly more efficient.\n if (remainingEntries.some(entry => entry.operationModified)) {\n throw new Error(`Actor ${this.name} can not be used over remaining entries with modified operations`);\n }\n\n // Only run this actor if the smallest stream is significantly smaller than the largest stream.\n // We must use Math.max, because the last metadata is not necessarily the biggest, but it's the least preferred.\n if (metadatas[0].cardinality.value * this.minMaxCardinalityRatio >\n Math.max(...metadatas.map(metadata => metadata.cardinality.value))) {\n throw new Error(`Actor ${this.name} can only run if the smallest stream is much smaller than largest stream`);\n }\n\n // Determine selectivities of smallest entry with all other entries\n const selectivities = await Promise.all(remainingEntries\n .map(async entry => (await this.mediatorJoinSelectivity.mediate({\n entries: [ entries[0], entry ],\n context: action.context,\n })).selectivity * this.selectivityModifier));\n\n // Determine coefficients for remaining entries\n const cardinalityRemaining = remainingEntries\n .map((entry, i) => entry.metadata.cardinality.value * selectivities[i])\n .reduce((sum, element) => sum + element, 0);\n const receiveInitialCostRemaining = remainingRequestInitialTimes\n .reduce((sum, element) => sum + element, 0);\n const receiveItemCostRemaining = remainingRequestItemTimes\n .reduce((sum, element) => sum + element, 0);\n\n return {\n iterations: metadatas[0].cardinality.value * cardinalityRemaining,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * (\n requestItemTimes[0] +\n receiveInitialCostRemaining +\n cardinalityRemaining * receiveItemCostRemaining\n ),\n };\n }\n}\n\nexport interface IActorRdfJoinMultiBindArgs extends IActorRdfJoinArgs {\n /**\n * The order in which elements should be bound\n * @default {depth-first}\n */\n bindOrder: BindOrder;\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The number of times the smallest cardinality should fit in the maximum cardinality.\n * @range {double}\n * @default {60}\n */\n minMaxCardinalityRatio?: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n\nexport type BindOrder = 'depth-first' | 'breadth-first';\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator } from 'asynciterator';\n\n/**\n * A comunica Multi Empty RDF Join Actor.\n */\nexport class ActorRdfJoinMultiEmpty extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-empty',\n canHandleUndefs: true,\n });\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n if ((await ActorRdfJoin.getMetadatas(action.entries))\n .every(metadata => ActorRdfJoin.getCardinality(metadata).value > 0)) {\n throw new Error(`Actor ${this.name} can only join entries where at least one is empty`);\n }\n return super.test(action);\n }\n\n protected override async getOutput(action: IActionRdfJoin): Promise {\n // Close all entries\n for (const entry of action.entries) {\n entry.output.bindingsStream.close();\n }\n\n return {\n result: {\n bindingsStream: new ArrayIterator([], { autoStart: false }),\n metadata: async() => ({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: ActorRdfJoin.joinVariables(await ActorRdfJoin.getMetadatas(action.entries)),\n }),\n type: 'bindings',\n },\n };\n }\n\n protected async getJoinCoefficients(\n _action: IActionRdfJoin,\n _metadatas: MetadataBindings[],\n ): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n","import { bindingsToString } from '@comunica/bindings-factory';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n MediatorRdfJoin,\n IActorRdfJoinOutputInner,\n} from '@comunica/bus-rdf-join';\nimport { ChunkedIterator, ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport { KeysRdfJoin } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type {\n BindingsStream,\n IActionContext,\n IJoinEntry,\n IJoinEntryWithMetadata,\n IQuerySourceWrapper,\n MetadataBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport { Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica Inner Multi Smallest Filter Bindings RDF Join Actor.\n */\nexport class ActorRdfJoinMultiSmallestFilterBindings extends ActorRdfJoin {\n public readonly selectivityModifier: number;\n public readonly blockSize: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public static readonly FACTORY = new Factory();\n public constructor(args: IActorRdfJoinMultiSmallestFilterBindingsArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-smallest-filter-bindings',\n limitEntries: 2,\n limitEntriesMin: true,\n isLeaf: false,\n });\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise<{ first: IJoinEntryWithMetadata; second: IJoinEntryWithMetadata; remaining: IJoinEntryWithMetadata[] }> {\n let { entries: entriesSorted } = await this.mediatorJoinEntriesSort.mediate({ entries, context });\n\n // Prioritize entries with modified operations, so these are not re-executed\n entriesSorted = entriesSorted.sort((entryLeft, entryRight) => {\n if (entryLeft.operationModified && !entryRight.operationModified) {\n return -1;\n }\n return 0;\n });\n\n const first = entriesSorted.splice(0, 1)[0];\n\n // Let second entry first be prioritized for sharing as many variables with first as possible,\n // then having the fewest variables,\n // and then having the lowest cardinality.\n let second: IJoinEntryWithMetadata | undefined;\n let secondIndex = -1;\n let secondSharedVariables = 0;\n for (const [ i, entry ] of entriesSorted.entries()) {\n const sharedVariables = first.metadata.variables\n .filter(variableFirst => entry.metadata.variables\n .some(variableSecond => variableFirst.equals(variableSecond))).length;\n if (!second || (sharedVariables > secondSharedVariables ||\n (sharedVariables === secondSharedVariables &&\n (entry.metadata.variables.length < second.metadata.variables.length ||\n (entry.metadata.variables.length === second.metadata.variables.length &&\n entry.metadata.cardinality.value < second.metadata.cardinality.value))))) {\n second = entry;\n secondIndex = i;\n secondSharedVariables = sharedVariables;\n }\n }\n\n if (secondSharedVariables === 0) {\n throw new Error(`Actor ${this.name} can only join with common variables`);\n }\n\n const remaining = entriesSorted;\n remaining.splice(secondIndex, 1);\n return { first, second: second!, remaining };\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas([ ...action.entries ]);\n const { first, second: secondIn, remaining: remainingIn } = await this.sortJoinEntries(\n entriesUnsorted,\n action.context,\n );\n\n // Clone first stream, because we will use it twice\n const smallestStream1 = first.output.bindingsStream;\n first.output.bindingsStream = smallestStream1.clone();\n\n // Project the first stream on common variables, and filter out duplicates\n // The common variables array is guaranteed to be non-empty, due to the way the test of this actor is implemented.\n const commonVariables = first.metadata.variables\n .filter(variableFirst => secondIn.metadata.variables\n .some(variableSecond => variableFirst.equals(variableSecond)));\n const hashes: Record = {};\n const smallestStream1Projected: BindingsStream = smallestStream1.clone()\n .map(binding => binding.filter((value, key) =>\n commonVariables.some(commonVariable => commonVariable.equals(key))))\n .filter((binding) => {\n const hash: string = bindingsToString(binding);\n return !(hash in hashes) && (hashes[hash] = true);\n });\n\n // Slice the first stream into chunks according to the block size, so we avoid blocking too long.\n const chunkedStreams: AsyncIterator> = new ChunkedIterator(\n smallestStream1Projected,\n this.blockSize,\n { autoStart: false },\n );\n\n // Push down bindings of first stream when querying for second stream\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(secondIn.operation)!;\n const secondStream = new UnionIterator(chunkedStreams.map(chunk => sourceWrapper.source.queryBindings(\n secondIn.operation,\n sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context,\n { filterBindings: { bindings: chunk, metadata: first.metadata }},\n )));\n const second: IJoinEntry = {\n output: {\n type: 'bindings',\n bindingsStream: secondStream,\n metadata: secondIn.output.metadata,\n },\n operation: secondIn.operation,\n operationModified: true,\n };\n\n // Destroy the unused original second stream\n secondIn.output.bindingsStream.destroy();\n\n // Join the two selected streams\n const joinedEntry: IJoinEntry = {\n output: ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({\n type: action.type,\n entries: [ first, second ],\n context: action.context.set(KeysRdfJoin.lastPhysicalJoin, this.physicalName),\n })),\n operation: ActorRdfJoinMultiSmallestFilterBindings.FACTORY\n .createJoin([ first.operation, second.operation ], false),\n operationModified: true,\n };\n\n // And then join the result with the remaining streams\n const remaining: IJoinEntry[] = remainingIn;\n remaining.unshift(joinedEntry);\n\n return {\n result: await this.mediatorJoin.mediate({\n type: action.type,\n entries: remaining,\n context: action.context,\n }),\n physicalPlanMetadata: {\n firstIndex: entriesUnsorted.indexOf(first),\n secondIndex: entriesUnsorted.indexOf(secondIn),\n },\n };\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Avoid infinite recursion\n if (action.context.get(KeysRdfJoin.lastPhysicalJoin) === this.physicalName) {\n throw new Error(`Actor ${this.name} can not be called recursively`);\n }\n\n metadatas = [ ...metadatas ];\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const { first, second, remaining } = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n\n // Only pass if the second entry accepts filterBindings\n const sourceWrapper: IQuerySourceWrapper | undefined = ActorQueryOperation.getOperationSource(second.operation);\n if (!sourceWrapper) {\n throw new Error(`Actor ${this.name} can only process if entries[1] has a source`);\n }\n const testingOperation = second.operation;\n const selectorShape = await sourceWrapper.source.getSelectorShape(action.context);\n if (!ActorQueryOperation\n .doesShapeAcceptOperation(selectorShape, testingOperation, { filterBindings: true })) {\n throw new Error(`Actor ${this.name} can only process if entries[1] accept filterBindings`);\n }\n\n // Determine cost coefficients\n metadatas = [ first.metadata, second.metadata, ...remaining.map(remain => remain.metadata) ];\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n const { selectivity } = await this.mediatorJoinSelectivity.mediate({\n entries: [ first, second ],\n context: action.context,\n });\n const cardinalityRemaining = remaining\n .reduce((mul, remain) => mul * remain.metadata.cardinality.value * this.selectivityModifier, 1);\n\n return {\n iterations: selectivity * this.selectivityModifier *\n second.metadata.cardinality.value * cardinalityRemaining,\n persistedItems: first.metadata.cardinality.value,\n blockingItems: first.metadata.cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + cardinalityRemaining * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinMultiSmallestFilterBindingsArgs extends IActorRdfJoinArgs {\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The maximum amount of bindings to send to the source per block.\n * @default {64}\n */\n blockSize: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n MediatorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings, IJoinEntry, IActionContext, IJoinEntryWithMetadata } from '@comunica/types';\nimport { Factory } from 'sparqlalgebrajs';\n\n/**\n * A Multi Smallest RDF Join Actor.\n * It accepts 3 or more streams, joins the smallest two, and joins the result with the remaining streams.\n */\nexport class ActorRdfJoinMultiSmallest extends ActorRdfJoin {\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorRdfJoinMultiSmallestArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-smallest',\n limitEntries: 3,\n limitEntriesMin: true,\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n return (await this.mediatorJoinEntriesSort.mediate({ entries, context })).entries;\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entries: IJoinEntry[] = await this.sortJoinEntries(\n await ActorRdfJoin.getEntriesWithMetadatas([ ...action.entries ]),\n action.context,\n );\n const smallestEntry1 = entries[0];\n const smallestEntry2 = entries[1];\n entries.splice(0, 2);\n\n // Join the two selected streams, and then join the result with the remaining streams\n const firstEntry: IJoinEntry = {\n output: ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: action.type, entries: [ smallestEntry1, smallestEntry2 ], context: action.context })),\n operation: ActorRdfJoinMultiSmallest.FACTORY\n .createJoin([ smallestEntry1.operation, smallestEntry2.operation ], false),\n };\n entries.push(firstEntry);\n return {\n result: await this.mediatorJoin.mediate({\n type: action.type,\n entries,\n context: action.context,\n }),\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n metadatas = [ ...metadatas ];\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entriesWithMetadata = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entriesWithMetadata.map(entry => entry.metadata);\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value *\n metadatas.slice(2).reduce((acc, metadata) => acc * metadata.cardinality.value, 1),\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1] +\n metadatas.slice(2).reduce((sum, metadata, i) => sum + requestInitialTimes.slice(2)[i] +\n metadata.cardinality.value * requestItemTimes.slice(2)[i], 0),\n };\n }\n}\n\nexport interface IActorRdfJoinMultiSmallestArgs extends IActorRdfJoinArgs {\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { NestedLoopJoin } from 'asyncjoin';\n\n/**\n * A comunica NestedLoop RDF Join Actor.\n */\nexport class ActorRdfJoinNestedLoop extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const join = new NestedLoopJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n ActorRdfJoin.joinBindings,\n { autoStart: false },\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator } from 'asynciterator';\n\n/**\n * A comunica None RDF Join Actor.\n */\nexport class ActorRdfJoinNone extends ActorRdfJoin {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorRdfJoinNoneArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'none',\n limitEntries: 0,\n });\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n // Allow joining of one or zero streams\n if (action.entries.length > 0) {\n throw new Error(`Actor ${this.name} can only join zero entries`);\n }\n return await this.getJoinCoefficients();\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n return {\n result: {\n bindingsStream: new ArrayIterator([ bindingsFactory.bindings() ], { autoStart: false }),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n },\n };\n }\n\n protected async getJoinCoefficients(): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n\nexport interface IActorRdfJoinNoneArgs extends IActorRdfJoinArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\n\n/**\n * A comunica Single RDF Join Actor.\n */\nexport class ActorRdfJoinSingle extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'single',\n limitEntries: 1,\n });\n this.includeInLogs = false;\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n // Allow joining of one or zero streams\n if (action.entries.length !== 1) {\n throw new Error(`Actor ${this.name} can only join a single entry`);\n }\n return await this.getJoinCoefficients();\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n return {\n result: action.entries[0].output,\n };\n }\n\n protected async getJoinCoefficients(): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { SymmetricHashJoin } from 'asyncjoin';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinSymmetricHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinSymmetricHashArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'symmetric-hash',\n limitEntries: 2,\n requiresVariableOverlap: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n const join = new SymmetricHashJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n entry => ActorRdfJoinSymmetricHash.hash(entry, variables),\n ActorRdfJoin.joinBindings,\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinSymmetricHashArgs extends IActorRdfJoinArgs {\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { BindingsIndex } from './BindingsIndex';\n\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nexport class ActorRdfJoinMinusHashUndef extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash-undef',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index: BindingsIndex = new BindingsIndex(commonVariables);\n const bindingsStream = new ClosableTransformIterator(async() => {\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', data => index.add(data));\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n return output.bindingsStream.filter(data => !index.contains(data));\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const bufferMetadata = await output.metadata();\n const outputMetadata = await output.metadata();\n return {\n ...outputMetadata,\n canContainUndefs: bufferMetadata.canContainUndefs || outputMetadata.canContainUndefs,\n };\n },\n },\n };\n }\n // Destroy the buffer stream since it is not needed when\n // there are no common variables.\n buffer.bindingsStream.destroy();\n return {\n result: output,\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n // Slightly increase iteration cost, as operations in our BindingsIndex do not happen in constant time\n // This enables the mediator to favor other minus actors,\n // while this one will only be selected when streams contain undefs.\n iterations: (metadatas[0].cardinality.value + metadatas[1].cardinality.value) * 1.01,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\n\n/**\n * A simple efficient tree-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This will consider bindings with a variable term or a missing term\n * as a 'match-all' with other terms.\n */\nexport class BindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly data: IDataIndex = {};\n\n public constructor(keys: RDF.Variable[]) {\n this.keys = keys;\n }\n\n protected static hashTerm(term: RDF.Term | undefined): string {\n return term && term.termType !== 'Variable' ? termToString(term) : '';\n }\n\n /**\n * Add the given bindings to the index.\n * @param {Bindings} bindings A bindings.\n */\n public add(bindings: Bindings): void {\n if (this.isBindingsValid(bindings)) {\n let dataIt = this.data;\n for (const key of this.keys) {\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n let subDataIt = dataIt[dataKey];\n if (!subDataIt) {\n subDataIt = dataIt[dataKey] = {};\n }\n dataIt = subDataIt;\n }\n }\n }\n\n /**\n * Check if the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {boolean} If it exists in the index.\n */\n public contains(bindings: Bindings): boolean {\n // Always return false if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return false;\n }\n\n return this.containsRecursive(bindings, this.keys, [ this.data ]);\n }\n\n protected isBindingsValid(bindings: Bindings): boolean {\n let validKeys = false;\n for (const key of this.keys) {\n if (bindings.get(key)) {\n validKeys = true;\n break;\n }\n }\n return validKeys;\n }\n\n protected containsRecursive(bindings: Bindings, keys: RDF.Variable[], dataIndexes: IDataIndex[]): boolean {\n if (keys.length === 0) {\n return true;\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n } else {\n // Iterate over all entries\n let subDatas = Object.keys(data).map(subKey => data[subKey]);\n if (subDatas.length === 0) {\n subDatas = [{}];\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n }\n }\n return false;\n }\n}\n\nexport interface IDataIndex {\n [key: string]: IDataIndex;\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nexport class ActorRdfJoinMinusHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash',\n limitEntries: 2,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index: Record = {};\n const bindingsStream = new ClosableTransformIterator(async() => {\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (data) => {\n index[ActorRdfJoin.hashNonClashing(data, commonVariables)] = true;\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n return output.bindingsStream.filter(data => !index[ActorRdfJoin.hashNonClashing(data, commonVariables)]);\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n },\n };\n }\n // Destroy the buffer stream since it is not needed when\n // there are no common variables.\n buffer.bindingsStream.destroy();\n return {\n result: output,\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { BindOrder } from '@comunica/actor-rdf-join-inner-multi-bind';\nimport { ActorRdfJoinMultiBind } from '@comunica/actor-rdf-join-inner-multi-bind';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, BindingsStream, MetadataBindings } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Optional Bind RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalBind extends ActorRdfJoin {\n public readonly bindOrder: BindOrder;\n public readonly selectivityModifier: number;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorRdfJoinOptionalBindArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'bind',\n limitEntries: 2,\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n // Close the right stream, since we don't need that one\n action.entries[1].output.bindingsStream.close();\n\n // Bind the right pattern for each binding in the stream\n const subContext = action.context\n .set(KeysQueryOperation.joinLeftMetadata, await action.entries[0].output.metadata())\n .set(KeysQueryOperation.joinRightMetadatas, [ await action.entries[1].output.metadata() ]);\n const bindingsStream: BindingsStream = ActorRdfJoinMultiBind.createBindStream(\n this.bindOrder,\n action.entries[0].output.bindingsStream,\n [ action.entries[1].operation ],\n async(operations: Algebra.Operation[], operationBindings: Bindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n // Length of operations will always be 1\n const operation = operations[0];\n const output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate(\n { operation, context: subContext?.set(KeysQueryOperation.joinBindings, operationBindings) },\n ));\n return output.bindingsStream;\n },\n true,\n bindingsFactory,\n );\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // This actor only works well with common variables\n if (ActorRdfJoin.overlappingVariables(metadatas).length === 0) {\n throw new Error(`Actor ${this.name} only join entries with at least one common variable`);\n }\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Reject binding on some operation types\n if (action.entries[1].operation.type === Algebra.types.EXTEND ||\n action.entries[1].operation.type === Algebra.types.GROUP) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n\n // Determine selectivity of join\n const selectivity = (await this.mediatorJoinSelectivity.mediate({\n entries: action.entries,\n context: action.context,\n })).selectivity * this.selectivityModifier;\n\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value * selectivity,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * (\n requestItemTimes[0] +\n requestInitialTimes[1] +\n selectivity * metadatas[1].cardinality.value * requestItemTimes[1]\n ),\n };\n }\n}\n\nexport interface IActorRdfJoinOptionalBindArgs extends IActorRdfJoinArgs {\n /**\n * The order in which elements should be bound\n * @default {depth-first}\n */\n bindOrder: BindOrder;\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.000001}\n */\n selectivityModifier: number;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n IActorRdfJoinOutputInner,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { BindingsStream, MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator, ArrayIterator, MultiTransformIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { BindingsIndexDef } from './BindingsIndexDef';\nimport { BindingsIndexUndef } from './BindingsIndexUndef';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A comunica Optional Hash RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalHash extends ActorRdfJoin {\n private readonly blocking: boolean;\n\n public constructor(args: IActorRdfJoinOptionalHashArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: `hash-${args.canHandleUndefs ? 'undef' : 'def'}-${args.blocking ? 'blocking' : 'nonblocking'}`,\n limitEntries: 2,\n canHandleUndefs: args.canHandleUndefs,\n requiresVariableOverlap: true,\n });\n }\n\n public static constructIndex(undef: boolean, commonVariables: RDF.Variable[]): IBindingsIndex {\n return undef ?\n new BindingsIndexUndef(\n commonVariables,\n (term: RDF.Term | undefined) => term && term.termType !== 'Variable' ? termToString(term) : '',\n ) :\n new BindingsIndexDef(commonVariables, ActorRdfJoin.hashNonClashing);\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n\n let bindingsStream: BindingsStream;\n if (this.blocking) {\n // -- Blocking optional ---\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator first in a blocking manner.\n const index: IBindingsIndex = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings) ?? index.put(bindings, []);\n iterator.push(bindings);\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator => new ArrayIterator(\n (index.get(bindings).flat())\n .map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings))\n .filter(b => b !== null),\n { autoStart: false },\n ),\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n } else {\n // -- Non-blocking optional ---\n // This can be slightly slower than the blocking one above, due to the streaming overhead.\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator.\n // They are indexed with iterator values, so our main stream can already get started.\n const index: IBindingsIndex> = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n let indexActive = true;\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings) ??\n index.put(bindings, new BufferedIterator({ autoStart: false }));\n ( iterator)._push(bindings);\n });\n buffer.bindingsStream.on('end', () => {\n for (const iterator of index.values()) {\n iterator.close();\n }\n indexActive = false;\n });\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator => {\n // Find iterators from the index\n let iterators: AsyncIterator[] = index.get(bindings);\n\n // If no index entry was found, set an empty iterator.\n // If we index has been closed already, don't modify the index, but just use an empty dummy iterator.\n if (iterators.length === 0) {\n if (indexActive) {\n iterators = [ index.put(bindings, new BufferedIterator({ autoStart: false })) ];\n } else {\n iterators = [];\n }\n }\n\n // Merge all iterators in a single one,\n // and clone each one to make sure we can still use them in the future.\n const iterator = new UnionIterator(iterators.map(it => it.clone()), { autoStart: false });\n return iterator.map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings));\n },\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n }\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n let iterations = metadatas[0].cardinality.value + metadatas[1].cardinality.value;\n if (!this.canHandleUndefs) {\n // Our non-undef implementation is slightly more performant.\n iterations *= 0.8;\n }\n if (this.blocking) {\n // Our blocking implementation is slightly more performant.\n iterations *= 0.9;\n }\n return {\n iterations,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: this.blocking ? metadatas[0].cardinality.value : 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinOptionalHashArgs extends IActorRdfJoinArgs {\n /**\n * If this actor can handle undefined values.\n * If false, performance will be slightly better.\n */\n canHandleUndefs: boolean;\n /**\n * If the join will block when collecting the optional stream.\n * If true, performance will be better.\n */\n blocking: boolean;\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A simple efficient hash-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This can not handle bindings with undefined values.\n */\nexport class BindingsIndexDef implements IBindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly hashFn: (term: RDF.Bindings, keys: RDF.Variable[]) => string;\n private readonly index: Record;\n\n public constructor(keys: RDF.Variable[], hashFn: (term: RDF.Bindings, keys: RDF.Variable[]) => string) {\n this.keys = keys;\n this.hashFn = hashFn;\n this.index = {};\n }\n\n public put(bindings: RDF.Bindings, value: V): V {\n return this.index[this.hashFn(bindings, this.keys)] = value;\n }\n\n public get(bindings: RDF.Bindings): V[] {\n const v = this.getFirst(bindings);\n return v ? [ v ] : [];\n }\n\n public getFirst(bindings: RDF.Bindings): V | undefined {\n return this.index[this.hashFn(bindings, this.keys)];\n }\n\n public values(): V[] {\n return Object.values(this.index);\n }\n}\n","import type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A simple efficient tree-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This will consider bindings with a variable term or an undefined term\n * as a 'match-all' with other terms.\n */\nexport class BindingsIndexUndef implements IBindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly data: IDataIndex = {};\n private readonly hashFn: (term: RDF.Term | undefined) => string;\n\n public constructor(keys: RDF.Variable[], hashFn: (term: RDF.Term | undefined) => string) {\n this.keys = keys;\n this.hashFn = hashFn;\n }\n\n /**\n * Add the given bindings to the index.\n * @param {Bindings} bindings A bindings.\n * @param {V} value The value to put.\n */\n public put(bindings: Bindings, value: V): V {\n if (this.isBindingsValid(bindings)) {\n let dataIt: IDataIndex | V = this.data;\n for (let i = 0; i < this.keys.length; i++) {\n const key = this.keys[i];\n const dataKey = this.hashFn(bindings.get(key));\n let subDataIt: IDataIndex | V | undefined = (> dataIt)[dataKey];\n if (!subDataIt) {\n subDataIt = ((> dataIt))[dataKey] = i === this.keys.length - 1 ? value : {};\n }\n dataIt = subDataIt;\n }\n }\n return value;\n }\n\n protected isBindingsValid(bindings: Bindings): boolean {\n let validKeys = false;\n for (const key of this.keys) {\n if (bindings.has(key)) {\n validKeys = true;\n break;\n }\n }\n return validKeys;\n }\n\n /**\n * Get the value of the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {V[]} The values.\n */\n public get(bindings: Bindings): V[] {\n // Always return undefined if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return [];\n }\n\n return this.getRecursive(bindings, this.keys, [ this.data ]);\n }\n\n protected getRecursive(bindings: Bindings | undefined, keys: RDF.Variable[], dataIndexes: IDataIndex[]): V[] {\n if (keys.length === 0) {\n return dataIndexes;\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n const matchingRecursive: V[][] = [];\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = this.hashFn(bindings?.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = []> [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n matchingRecursive.push(this.getRecursive(bindings, keys, subDatas));\n } else {\n // Iterate over all entries\n const subDatas = []> Object.values(data);\n if (subDatas.length === 0) {\n continue;\n }\n matchingRecursive.push(this.getRecursive(bindings, keys, subDatas));\n }\n }\n return matchingRecursive.flat();\n }\n\n /**\n * Get the first value of the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {V | undefined} The value.\n */\n public getFirst(bindings: Bindings): V | undefined {\n // Always return undefined if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return undefined;\n }\n\n return this.getRecursiveFirst(bindings, this.keys, [ this.data ]);\n }\n\n protected getRecursiveFirst(bindings: Bindings, keys: RDF.Variable[], dataIndexes: IDataIndex[]): V | undefined {\n if (keys.length === 0) {\n return dataIndexes[0];\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = this.hashFn(bindings.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = []> [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n const ret = this.getRecursiveFirst(bindings, keys, subDatas);\n if (ret) {\n return ret;\n }\n } else {\n // Iterate over all entries\n const subDatas = []> Object.values(data);\n if (subDatas.length === 0) {\n continue;\n }\n const ret = this.getRecursiveFirst(bindings, keys, subDatas);\n if (ret) {\n return ret;\n }\n }\n }\n return undefined;\n }\n\n public values(): V[] {\n return this.keys.length === 0 ? [] : this.getRecursive(undefined, this.keys, [ this.data ]);\n }\n}\n\nexport interface IDataIndex {\n [key: string]: IDataIndex | V;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { NestedLoopJoin } from 'asyncjoin';\n\n/**\n * A comunica Optional Nested Loop RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalNestedLoop extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const join = new NestedLoopJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n ActorRdfJoin.joinBindings,\n { optional: true, autoStart: false },\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { IActionRdfJoinSelectivity, IActorRdfJoinSelectivityOutput } from '@comunica/bus-rdf-join-selectivity';\nimport { ActorRdfJoinSelectivity } from '@comunica/bus-rdf-join-selectivity';\nimport type { IActorArgs } from '@comunica/core';\nimport type { IMediatorTypeAccuracy } from '@comunica/mediatortype-accuracy';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Variable Counting RDF Join Selectivity Actor.\n * Based on the \"variable counting predicates\" heuristic from\n * \"SPARQL basic graph pattern optimization using selectivity estimation.\"\n */\nexport class ActorRdfJoinSelectivityVariableCounting extends ActorRdfJoinSelectivity {\n // Calculated as sum of unbound join type costs times 2 (best-case)\n public static MAX_PAIRWISE_COST = 41 * 2;\n\n public constructor(\n args: IActorArgs,\n ) {\n super(args);\n }\n\n public async test(_action: IActionRdfJoinSelectivity): Promise {\n return { accuracy: 0.5 };\n }\n\n public static getPatternCost(pattern: Algebra.Pattern | Algebra.Path): number {\n let cost = 1;\n if (pattern.subject.termType === 'Variable') {\n cost += 4;\n }\n if (pattern.predicate.termType === 'Variable' || pattern.type === Algebra.types.PATH) {\n cost += 1;\n }\n if (pattern.object.termType === 'Variable') {\n cost += 2;\n }\n if (pattern.graph.termType === 'Variable') {\n cost += 1;\n }\n return cost / 9;\n }\n\n public static getJoinTypes(\n operation1: Algebra.Pattern | Algebra.Path,\n operation2: Algebra.Pattern | Algebra.Path,\n ): JoinTypes[] {\n const joinTypes: JoinTypes[] = [];\n\n // Check operation1.subject\n if (operation1.subject.termType === 'Variable') {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundSG);\n }\n } else {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundSG);\n }\n }\n\n // Check operation1.predicate\n if (operation1.type === 'pattern') {\n if (operation1.predicate.termType === 'Variable') {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundPG);\n }\n } else {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundPG);\n }\n }\n }\n\n // Check operation1.object\n if (operation1.object.termType === 'Variable') {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundOG);\n }\n } else {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundOG);\n }\n }\n\n // Check operation1.graph\n if (operation1.graph.termType === 'Variable') {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundGG);\n }\n } else {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundGG);\n }\n }\n\n return joinTypes;\n }\n\n public static getOperationsPairwiseJoinCost(\n operation1: Algebra.Pattern | Algebra.Path,\n operation2: Algebra.Pattern | Algebra.Path,\n ): number {\n let cost = ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n\n for (const joinType of ActorRdfJoinSelectivityVariableCounting.getJoinTypes(operation1, operation2)) {\n switch (joinType) {\n case JoinTypes.boundSS:\n cost -= 2 * 2;\n break;\n case JoinTypes.boundSP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundSO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundSG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPP:\n // Special case: patterns with equal (bound) predicates have the highest cost\n return 1;\n case JoinTypes.boundPO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOS:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGG:\n cost -= 3 * 2;\n break;\n case JoinTypes.unboundSS:\n cost -= 2;\n break;\n case JoinTypes.unboundSP:\n cost -= 3;\n break;\n case JoinTypes.unboundSO:\n cost -= 1;\n break;\n case JoinTypes.unboundSG:\n cost -= 3;\n break;\n case JoinTypes.unboundPS:\n cost -= 3;\n break;\n case JoinTypes.unboundPP:\n cost -= 3;\n break;\n case JoinTypes.unboundPO:\n cost -= 3;\n break;\n case JoinTypes.unboundPG:\n cost -= 3;\n break;\n case JoinTypes.unboundOS:\n cost -= 1;\n break;\n case JoinTypes.unboundOP:\n cost -= 3;\n break;\n case JoinTypes.unboundOO:\n cost -= 1;\n break;\n case JoinTypes.unboundOG:\n cost -= 3;\n break;\n case JoinTypes.unboundGS:\n cost -= 3;\n break;\n case JoinTypes.unboundGP:\n cost -= 3;\n break;\n case JoinTypes.unboundGO:\n cost -= 3;\n break;\n case JoinTypes.unboundGG:\n cost -= 3;\n break;\n }\n }\n\n return cost / ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n }\n\n public static getOperationsJoinCost(operations: Algebra.Operation[]): number {\n // Determine all operations that select values (patterns and paths)\n const patterns: (Algebra.Pattern | Algebra.Path)[] = [];\n for (const operation of operations) {\n Util.recurseOperation(operation, {\n [Algebra.types.PATTERN](pattern: Algebra.Pattern): boolean {\n patterns.push(pattern);\n return false;\n },\n [Algebra.types.PATH](path: Algebra.Path): boolean {\n patterns.push(path);\n return false;\n },\n });\n }\n\n // Determine pairwise costs\n let totalCost = 0;\n let costEntries = 0;\n for (const pattern1 of patterns) {\n for (const pattern2 of patterns) {\n if (pattern1 !== pattern2) {\n totalCost += ActorRdfJoinSelectivityVariableCounting.getOperationsPairwiseJoinCost(pattern1, pattern2);\n costEntries++;\n }\n }\n }\n\n // If there are no overlapping patterns, the cost is 1\n if (costEntries === 0) {\n return 1;\n }\n\n // Combine all pairwise costs, and multiply with costs of each pattern separately\n return totalCost / costEntries * patterns\n .reduce((factor, pattern) => factor * ActorRdfJoinSelectivityVariableCounting.getPatternCost(pattern), 1);\n }\n\n public async run(action: IActionRdfJoinSelectivity): Promise {\n if (action.entries.length <= 1) {\n return { selectivity: 1 };\n }\n return {\n selectivity: ActorRdfJoinSelectivityVariableCounting\n .getOperationsJoinCost(action.entries.map(entry => entry.operation)),\n };\n }\n}\n\nexport enum JoinTypes {\n boundSS,\n boundSP,\n boundSO,\n boundSG,\n boundPS,\n boundPP,\n boundPO,\n boundPG,\n boundOS,\n boundOP,\n boundOO,\n boundOG,\n boundGS,\n boundGP,\n boundGO,\n boundGG,\n\n unboundSS,\n unboundSP,\n unboundSO,\n unboundSG,\n unboundPS,\n unboundPP,\n unboundPO,\n unboundPG,\n unboundOS,\n unboundOP,\n unboundOO,\n unboundOG,\n unboundGS,\n unboundGP,\n unboundGO,\n unboundGG,\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica CanContainUndefs RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateCanContainUndefs extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return default value on initialize\n if (action.mode === 'initialize') {\n return { metadata: { canContainUndefs: false }};\n }\n\n // Otherwise, attempt to increment existing value\n let canContainUndefs = action.accumulatedMetadata.canContainUndefs;\n if (action.appendingMetadata.canContainUndefs) {\n canContainUndefs = true;\n }\n return { metadata: { canContainUndefs }};\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\nimport type { QueryResultCardinality } from '@comunica/types';\n\n/**\n * A comunica Cardinality RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateCardinality extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return default value on initialize\n if (action.mode === 'initialize') {\n return { metadata: { cardinality: { type: 'exact', value: 0 }}};\n }\n\n // Otherwise, attempt to update existing value\n const cardinality: QueryResultCardinality = { ...action.accumulatedMetadata.cardinality };\n\n if (cardinality.dataset) {\n // If the accumulated cardinality refers to that of the full default graph (applicable for SPARQL endpoints)\n if (action.accumulatedMetadata.defaultGraph === cardinality.dataset &&\n cardinality.dataset !== action.appendingMetadata.cardinality.dataset) {\n // Use the cardinality of the appending metadata.\n return { metadata: { cardinality: action.appendingMetadata.cardinality }};\n }\n\n if (action.appendingMetadata.cardinality.dataset) {\n // If the accumulated cardinality is dataset-wide\n if (cardinality.dataset !== action.appendingMetadata.cardinality.dataset &&\n action.appendingMetadata.subsetOf === cardinality.dataset) {\n // If the appending cardinality refers to the subset of a dataset,\n // use the cardinality of the subset.\n return { metadata: { cardinality: action.appendingMetadata.cardinality }};\n }\n if (cardinality.dataset === action.appendingMetadata.cardinality.dataset) {\n // If the appending cardinality is for the same dataset,\n // keep the accumulated cardinality unchanged.\n return { metadata: { cardinality }};\n }\n // If the appending cardinality refers to another dataset,\n // remove the dataset scopes.\n delete cardinality.dataset;\n } else {\n // If the appending cardinality refers to a dataset subset,\n // keep the accumulated cardinality unchanged.\n return { metadata: { cardinality }};\n }\n }\n\n if (!action.appendingMetadata.cardinality || !Number.isFinite(action.appendingMetadata.cardinality.value)) {\n // We're already at infinite, so ignore any later metadata\n cardinality.type = 'estimate';\n cardinality.value = Number.POSITIVE_INFINITY;\n } else {\n if (action.appendingMetadata.cardinality.type === 'estimate') {\n cardinality.type = 'estimate';\n }\n cardinality.value += action.appendingMetadata.cardinality.value;\n }\n\n return { metadata: { cardinality }};\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica PageSize RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulatePageSize extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return nothing on initialize\n if (action.mode === 'initialize') {\n return { metadata: {}};\n }\n\n // Otherwise, attempt to increment existing value\n return {\n metadata: {\n ...('pageSize' in action.accumulatedMetadata) || ('pageSize' in action.appendingMetadata) ?\n {\n pageSize: (action.accumulatedMetadata.pageSize ?? 0) + (action.appendingMetadata.pageSize ?? 0),\n } :\n {},\n },\n };\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica RequestTime RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateRequestTime extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return nothing on initialize\n if (action.mode === 'initialize') {\n return { metadata: {}};\n }\n\n // Otherwise, attempt to increment existing value\n return {\n metadata: {\n ...('requestTime' in action.accumulatedMetadata) || ('requestTime' in action.appendingMetadata) ?\n {\n requestTime: (action.accumulatedMetadata.requestTime ?? 0) + (action.appendingMetadata.requestTime ?? 0),\n } :\n {},\n },\n };\n }\n}\n","import type {\n IActionRdfSerialize,\n IActorRdfSerializeFixedMediaTypesArgs,\n IActorRdfSerializeOutput,\n} from '@comunica/bus-rdf-serialize';\nimport {\n ActorRdfSerializeFixedMediaTypes,\n} from '@comunica/bus-rdf-serialize';\nimport type { IActionContext } from '@comunica/types';\nimport { JsonLdSerializer } from 'jsonld-streaming-serializer';\n\n/**\n * A comunica Jsonld RDF Serialize Actor.\n */\nexport class ActorRdfSerializeJsonLd extends ActorRdfSerializeFixedMediaTypes {\n /**\n * The number of spaces that should be used to indent stringified JSON.\n */\n public readonly jsonStringifyIndentSpaces: number;\n\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/ld+json\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/ld+json\": \"http://www.w3.org/ns/formats/JSON-LD\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorRdfSerializeJsonLdArgs) {\n super(args);\n }\n\n public async runHandle(action: IActionRdfSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const writer = new JsonLdSerializer(\n { space: ' '.repeat(this.jsonStringifyIndentSpaces) },\n );\n let data: NodeJS.ReadableStream;\n if ('pipe' in action.quadStream) {\n // Prefer piping if possible, to maintain backpressure\n action.quadStream.on('error', error => writer.emit('error', error));\n data = ( action.quadStream).pipe(writer);\n } else {\n data = writer.import(action.quadStream);\n }\n return { data };\n }\n}\n\nexport interface IActorRdfSerializeJsonLdArgs extends IActorRdfSerializeFixedMediaTypesArgs {\n /**\n * The number of spaces that should be used to indent stringified JSON.\n * @range {integer}\n * @default {2}\n */\n jsonStringifyIndentSpaces: number;\n}\n","import type {\n IActionRdfSerialize,\n IActorRdfSerializeFixedMediaTypesArgs,\n IActorRdfSerializeOutput,\n} from '@comunica/bus-rdf-serialize';\nimport {\n ActorRdfSerializeFixedMediaTypes,\n} from '@comunica/bus-rdf-serialize';\nimport { StreamWriter } from 'n3';\n\n/**\n * A comunica N3 RDF Serialize Actor.\n */\nexport class ActorRdfSerializeN3 extends ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/n-quads\": 1.0,\n * \"application/trig\": 0.95,\n * \"application/n-triples\": 0.8,\n * \"text/turtle\": 0.6,\n * \"text/n3\": 0.35\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/n-quads\": \"http://www.w3.org/ns/formats/N-Quads\",\n * \"application/trig\": \"http://www.w3.org/ns/formats/TriG\",\n * \"application/n-triples\": \"http://www.w3.org/ns/formats/N-Triples\",\n * \"text/turtle\": \"http://www.w3.org/ns/formats/Turtle\",\n * \"text/n3\": \"http://www.w3.org/ns/formats/N3\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorRdfSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n public async runHandle(action: IActionRdfSerialize, mediaType: string):\n Promise {\n const writer = new StreamWriter({ format: mediaType });\n let data: NodeJS.ReadableStream;\n if ('pipe' in action.quadStream) {\n // Prefer piping if possible, to maintain backpressure\n action.quadStream.on('error', error => writer.emit('error', error));\n data = ( action.quadStream).pipe(writer);\n } else {\n data = writer.import(action.quadStream);\n }\n return { data, triples: mediaType === 'text/turtle' ||\n mediaType === 'application/n-triples' ||\n mediaType === 'text/n3' };\n }\n}\n","import type {\n IActionRdfSerialize,\n IActorRdfSerializeFixedMediaTypesArgs,\n IActorRdfSerializeOutput,\n} from '@comunica/bus-rdf-serialize';\nimport {\n ActorRdfSerializeFixedMediaTypes,\n} from '@comunica/bus-rdf-serialize';\nimport arrayifyStream from 'arrayify-stream';\nimport { Readable } from 'readable-stream';\nimport { write } from 'shaclc-write';\n\n/**\n * A comunica SHACL Compact Syntax RDF Serialize Actor.\n */\nexport class ActorRdfSerializeShaclc extends ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"text/shaclc\": 1.0,\n * \"text/shaclc-ext\": 0.5\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/shaclc\": \"http://www.w3.org/ns/formats/Shaclc\",\n * \"text/shaclc-ext\": \"http://www.w3.org/ns/formats/ShaclcExtended\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorRdfSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n public async runHandle(action: IActionRdfSerialize, mediaType: string): Promise {\n const data = new Readable();\n data._read = () => {\n // Do nothing\n };\n\n try {\n const prefixes: Record = {};\n action.quadStream.on('prefix', (prefix, iri) => {\n prefixes[prefix] = iri;\n });\n\n const { text } = await write(\n await arrayifyStream(action.quadStream),\n { errorOnUnused: true, extendedSyntax: mediaType === 'text/shaclc-ext', prefixes },\n );\n data.push(text);\n data.push(null);\n } catch (error: unknown) {\n // Push the error into the stream\n data._read = () => {\n data.emit('error', error);\n };\n }\n\n return {\n data,\n triples: true,\n };\n }\n}\n","import type {\n IActionRdfUpdateQuads,\n IActorRdfUpdateQuadsArgs,\n IQuadDestination,\n} from '@comunica/bus-rdf-update-quads';\nimport { ActorRdfUpdateQuadsDestination, getContextDestination } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { RdfJsQuadDestination } from './RdfJsQuadDestination';\n\n/**\n * A comunica RDFJS Store RDF Update Quads Actor.\n */\nexport class ActorRdfUpdateQuadsRdfJsStore extends ActorRdfUpdateQuadsDestination {\n public constructor(args: IActorRdfUpdateQuadsArgs) {\n super(args);\n }\n\n public override async test(action: IActionRdfUpdateQuads): Promise {\n const destination = getContextDestination(action.context);\n if (!destination || typeof destination === 'string' ||\n (!('remove' in destination) && 'value' in destination && !( destination.value).remove)) {\n throw new Error(`${this.name} received an invalid rdfjsStore.`);\n }\n return true;\n }\n\n protected async getDestination(context: IActionContext): Promise {\n const destination: any = getContextDestination(context);\n return new RdfJsQuadDestination('remove' in destination ? destination : destination.value);\n }\n}\n","import type { IQuadDestination } from '@comunica/bus-rdf-update-quads';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { promisifyEventEmitter } from 'event-emitter-promisify';\nimport { DataFactory } from 'rdf-data-factory';\nimport { stringToTerm, termToString } from 'rdf-string';\n\nconst DF = new DataFactory();\n\n/**\n * A quad destination that wraps around an {@link RDF.Store}.\n */\nexport class RdfJsQuadDestination implements IQuadDestination {\n private readonly store: RDF.Store;\n\n public constructor(store: RDF.Store) {\n this.store = store;\n }\n\n public delete(quads: AsyncIterator): Promise {\n return promisifyEventEmitter(this.store.remove(quads));\n }\n\n public insert(quads: AsyncIterator): Promise {\n return promisifyEventEmitter(this.store.import(quads));\n }\n\n public async deleteGraphs(\n graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[],\n _requireExistence: boolean,\n _dropGraphs: boolean,\n ): Promise {\n switch (graphs) {\n case 'ALL':\n /* eslint-disable no-fallthrough */\n // Remove the default graph\n await promisifyEventEmitter(this.store.deleteGraph(DF.defaultGraph()));\n // Drop through to remove all named graphs\n case 'NAMED':\n /* eslint-enable no-fallthrough */\n // Warning: this is sub-optimal!\n // Query ALL quads to determine all named graphs\n // eslint-disable-next-line no-case-declarations\n const allQuads = this.store.match();\n // eslint-disable-next-line no-case-declarations\n const namedGraphs: Record = {};\n allQuads.on('data', (quad: RDF.Quad) => {\n if (quad.graph.termType !== 'DefaultGraph') {\n namedGraphs[termToString(quad.graph)] = true;\n }\n });\n await promisifyEventEmitter(allQuads);\n\n // Delete all named graphs\n await Promise.all(Object.keys(namedGraphs)\n .map(namedGraph => promisifyEventEmitter(this.store\n .deleteGraph( stringToTerm(namedGraph)))));\n break;\n default:\n // Delete the default graph or a named graph\n for (const graph of Array.isArray(graphs) ? graphs : [ graphs ]) {\n await promisifyEventEmitter(this.store.deleteGraph(graph));\n }\n }\n }\n\n public async createGraphs(graphs: RDF.NamedNode[], requireNonExistence: boolean): Promise {\n // We don't have to create anything, since RDF/JS stores don't record empty graphs.\n\n // The only check we have to do is error on existence\n if (requireNonExistence) {\n for (const graph of graphs) {\n const eventEmitter = this.store.match(undefined, undefined, undefined, graph);\n await new Promise((resolve, reject) => {\n eventEmitter.once('data', () => {\n reject(new Error(`Unable to create graph ${graph.value} as it already exists`));\n });\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n }\n }\n}\n","import type { IBindingsContextMergeHandler } from '@comunica/bus-merge-bindings-context';\nimport { ActionContext } from '@comunica/core';\nimport type { IActionContext, IActionContextKey } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Map } from 'immutable';\nimport { bindingsToString } from './bindingsToString';\n\n/**\n * An immutable.js-based Bindings object.\n */\nexport class Bindings implements RDF.Bindings {\n public readonly type = 'bindings';\n\n private readonly dataFactory: RDF.DataFactory;\n private readonly entries: Map;\n private readonly contextHolder: IContextHolder | undefined;\n\n public constructor(dataFactory: RDF.DataFactory, entries: Map, contextHolder?: IContextHolder) {\n this.dataFactory = dataFactory;\n this.entries = entries;\n this.contextHolder = contextHolder;\n }\n\n public has(key: RDF.Variable | string): boolean {\n return this.entries.has(typeof key === 'string' ? key : key.value);\n }\n\n public get(key: RDF.Variable | string): RDF.Term | undefined {\n return this.entries.get(typeof key === 'string' ? key : key.value);\n }\n\n public set(key: RDF.Variable | string, value: RDF.Term): Bindings {\n return new Bindings(\n this.dataFactory,\n this.entries.set(typeof key === 'string' ? key : key.value, value),\n this.contextHolder,\n );\n }\n\n public delete(key: RDF.Variable | string): Bindings {\n return new Bindings(\n this.dataFactory,\n this.entries.delete(typeof key === 'string' ? key : key.value),\n this.contextHolder,\n );\n }\n\n public keys(): Iterable {\n return this.mapIterable(\n this.iteratorToIterable(this.entries.keys()),\n key => this.dataFactory.variable!(key),\n );\n }\n\n public values(): Iterable {\n return this.iteratorToIterable(this.entries.values());\n }\n\n public forEach(fn: (value: RDF.Term, key: RDF.Variable) => any): void {\n for (const [ key, value ] of this.entries.entries()) {\n fn(value, this.dataFactory.variable!(key));\n }\n }\n\n public get size(): number {\n return this.entries.size;\n }\n\n public [Symbol.iterator](): Iterator<[RDF.Variable, RDF.Term]> {\n return this.mapIterable<[string, RDF.Term], [RDF.Variable, RDF.Term]>(\n this.iteratorToIterable(> this.entries.entries()),\n ([ key, value ]) => [ this.dataFactory.variable!(key), value ],\n )[Symbol.iterator]();\n }\n\n public equals(other: RDF.Bindings | null | undefined): boolean {\n if (!other) {\n return false;\n }\n if (this === other) {\n return true;\n }\n\n // First check if size is equal\n if (this.size !== other.size) {\n return false;\n }\n\n // Then check if keys and values are equal\n for (const key of this.keys()) {\n if (!this.get(key)?.equals(other.get(key))) {\n return false;\n }\n }\n\n return true;\n }\n\n public filter(fn: (value: RDF.Term, key: RDF.Variable) => boolean): Bindings {\n return new Bindings(this.dataFactory, Map( this.entries\n .filter((value, key) => fn(value, this.dataFactory.variable!(key)))), this.contextHolder);\n }\n\n public map(fn: (value: RDF.Term, key: RDF.Variable) => RDF.Term): Bindings {\n return new Bindings(this.dataFactory, Map( this.entries\n .map((value, key) => fn(value, this.dataFactory.variable!(key)))), this.contextHolder);\n }\n\n public merge(other: RDF.Bindings | Bindings): Bindings | undefined {\n if (this.size < other.size && other instanceof Bindings) {\n return other.merge(this);\n }\n let entries = this.entries;\n\n // Check if other is of type Bindings, in that case we can access entries immediately.\n // This skips the unnecessary conversion from string to variable.\n if (other instanceof Bindings) {\n for (const [ variable, right ] of other.entries) {\n const left = this.entries.get(variable);\n if (left && !left.equals(right)) {\n return;\n }\n entries = entries.set(variable, right);\n }\n } else {\n for (const [ variable, right ] of other) {\n const left = this.entries.get(variable.value);\n if (left && !left.equals(right)) {\n return;\n }\n entries = entries.set(variable.value, right);\n }\n }\n\n return this.createBindingsWithContexts(entries, other);\n }\n\n public mergeWith(\n merger: (self: RDF.Term, other: RDF.Term, key: RDF.Variable) => RDF.Term,\n other: RDF.Bindings | Bindings,\n ): Bindings {\n if (this.size < other.size && other instanceof Bindings) {\n return other.mergeWith(merger, this);\n }\n let entries = this.entries;\n\n // For code comments see Bindings.merge function\n if (other instanceof Bindings) {\n for (const [ variable, right ] of other.entries) {\n const left = this.entries.get(variable);\n let value: RDF.Term;\n if (left && !left.equals(right)) {\n value = merger(left, right, this.dataFactory.variable!(variable));\n } else {\n value = right;\n }\n entries = entries.set(variable, value);\n }\n } else {\n for (const [ variable, right ] of other) {\n const left = this.entries.get(variable.value);\n let value: RDF.Term;\n if (left && !left.equals(right)) {\n value = merger(left, right, variable);\n } else {\n value = right;\n }\n entries = entries.set(variable.value, value);\n }\n }\n\n return this.createBindingsWithContexts(entries, other);\n }\n\n protected createBindingsWithContexts(entries: Map, other: RDF.Bindings | Bindings): Bindings {\n // If any context is empty, we skip merging contexts\n if (this.contextHolder && this.contextHolder.context) {\n let mergedContext = this.contextHolder.context;\n // Only merge if the other has a context\n if ('contextHolder' in other && other.contextHolder && other.contextHolder.context) {\n mergedContext = Bindings\n .mergeContext(this.contextHolder.contextMergeHandlers, mergedContext, other.contextHolder.context);\n }\n return new Bindings(\n this.dataFactory,\n entries,\n { contextMergeHandlers: this.contextHolder.contextMergeHandlers, context: mergedContext },\n );\n }\n\n // Otherwise, use optional context from other\n return new Bindings(this.dataFactory, entries, ( other).contextHolder);\n }\n\n private static mergeContext(\n contextMergeHandlers: Record>,\n context: IActionContext,\n otherContext: IActionContext,\n ): IActionContext {\n // All keys can contain duplicates, we prevent this by checking our built datamap for duplicates\n const allKeys = [ ...context.keys(), ...otherContext.keys() ];\n // Map we build up with merged context values\n const newContextData: Record = {};\n const handledKeys: Record = {};\n\n // Set of names of keys in other context to allow for constant time lookup\n const keysSetOtherContext = new Set(\n otherContext.keys().map(key => key.name),\n );\n const keysBothContext = context.keys().filter(\n key => keysSetOtherContext.has(key.name),\n );\n\n for (const key of allKeys) {\n // If duplicate key, we continue iterating\n if (handledKeys[key.name] === 1) {\n continue;\n }\n\n // We've processed this key and shouldn't repeat it\n handledKeys[key.name] = 1;\n\n // Determine whether this key occurs in both contexts\n const occursInBoth = keysBothContext.some(x => x.name === key.name);\n\n // If we execute this function, we already check for existence of context merge handlers\n // This if statement is first as the most likely case for non-empty contexts is that we have mergehandlers\n // and both contexts have an entry\n if (contextMergeHandlers[key.name] && occursInBoth) {\n newContextData[key.name] = contextMergeHandlers[key.name]\n .run(context.get(key), otherContext.get(key));\n continue;\n }\n // If we have no merge handler, but both contexts have entries for key, we don't add it to new context\n if (!contextMergeHandlers[key.name] && occursInBoth) {\n continue;\n }\n\n // If key doesn't occur in own context, it must be in other context\n // (if we get to this point, the key doesn't occur in both)\n if (!context.get(key)) {\n newContextData[key.name] = otherContext.get(key);\n continue;\n }\n // This could likely be else statement, but don't want to risk it\n if (!otherContext.get(key)) {\n newContextData[key.name] = context.get(key);\n }\n }\n return new ActionContext(newContextData);\n }\n\n public setContextEntry(key: IActionContextKey, value: any): Bindings {\n return this.setContextEntryRaw(key, value);\n }\n\n public setContextEntryRaw(key: IActionContextKey, value: any): Bindings {\n if (this.contextHolder && this.contextHolder.context) {\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder.contextMergeHandlers,\n context: this.contextHolder.context.set(key, value),\n },\n );\n }\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder?.contextMergeHandlers ?? {},\n context: new ActionContext().set(key, value),\n },\n );\n }\n\n public deleteContextEntry(key: IActionContextKey): Bindings {\n return this.deleteContextEntryRaw(key);\n }\n\n public deleteContextEntryRaw(key: IActionContextKey): Bindings {\n if (this.contextHolder) {\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder.contextMergeHandlers,\n context: this.contextHolder.context?.delete(key),\n },\n );\n }\n return new Bindings(this.dataFactory, this.entries);\n }\n\n public getContext(): IActionContext | undefined {\n return this.contextHolder?.context;\n }\n\n public getContextEntry(key: IActionContextKey): V | undefined {\n return this.getContext()?.get(key);\n }\n\n public toString(): string {\n return bindingsToString(this);\n }\n\n protected* mapIterable(iterable: Iterable, callback: (value: T) => U): Iterable {\n for (const x of iterable) {\n yield callback(x);\n }\n }\n\n protected iteratorToIterable(iterator: Iterator): Iterable {\n return {\n [Symbol.iterator]: () => iterator,\n };\n }\n}\n\nexport interface IContextHolder {\n contextMergeHandlers: Record>;\n context?: IActionContext;\n}\n","import type { IBindingsContextMergeHandler, MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Map } from 'immutable';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Bindings } from './Bindings';\n\n/**\n * A Bindings factory that provides Bindings backed by immutable.js.\n */\nexport class BindingsFactory implements RDF.BindingsFactory {\n private readonly dataFactory: RDF.DataFactory;\n private readonly contextMergeHandlers: Record> | undefined;\n\n public constructor(\n dataFactory: DataFactory = new DataFactory(),\n contextMergeHandlers?: Record>,\n ) {\n this.dataFactory = dataFactory;\n this.contextMergeHandlers = contextMergeHandlers;\n }\n\n public static async create(\n mediatorMergeBindingsContext: MediatorMergeBindingsContext,\n context: IActionContext,\n ): Promise {\n return new BindingsFactory(\n new DataFactory(),\n (await mediatorMergeBindingsContext.mediate({ context })).mergeHandlers,\n );\n }\n\n public bindings(entries: [RDF.Variable, RDF.Term][] = []): Bindings {\n return new Bindings(\n this.dataFactory,\n Map(entries.map(([ key, value ]) => [ key.value, value ])),\n this.contextMergeHandlers ? { contextMergeHandlers: this.contextMergeHandlers } : undefined,\n );\n }\n\n public fromBindings(bindings: RDF.Bindings): Bindings {\n return this.bindings([ ...bindings ]);\n }\n\n public fromRecord(record: Record): Bindings {\n return this.bindings(Object.entries(record).map(([ key, value ]) => [ this.dataFactory.variable!(key), value ]));\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\n\n/**\n * Stringify a bindings object.\n * @param bindings A bindings object.\n */\nexport function bindingsToString(bindings: RDF.Bindings): string {\n const raw: Record = {};\n for (const key of bindings.keys()) {\n raw[key.value] = termToString(bindings.get(key))!;\n }\n return JSON.stringify(raw, null, ' ');\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica actor for context-preprocess events.\n *\n * Actor types:\n * * Input: IAction: A context that will be processed.\n * * Test: \n * * Output: IActorContextPreprocessOutput: The resulting context.\n *\n * @see IActionContextPreprocess\n * @see IActorContextPreprocessOutput\n */\nexport abstract class ActorContextPreprocess\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n}\n\nexport interface IActionContextPreprocess extends IAction {\n /**\n * If the query processing is being initialized.\n * This is typically used for setting query-wide defaults.\n * This will be false for initializing source-specific contexts.\n */\n initialize?: boolean;\n}\n\nexport interface IActorContextPreprocessOutput extends IActorOutput {\n /**\n * A context object.\n * Can be null.\n */\n context: IActionContext;\n}\n\nexport type IActorContextPreprocessArgs = IActorArgs<\nIActionContextPreprocess,\nIActorTest,\nIActorContextPreprocessOutput\n>;\n\nexport type MediatorContextPreprocess = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediator } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { Bindings } from '@comunica/types';\n\n/**\n * A comunica actor for hash-bindings events.\n *\n * Actor types:\n * * Input: IActionHashBindings: Metadata for selecting a hash function.\n * * Test: IActorTest:\n * * Output: IActorHashBindingsOutput: The resulting hash function.\n *\n * @see IActionHashBindings\n * @see IActorHashBindingsTest\n * @see IActorHashBindingsOutput\n */\nexport abstract class ActorHashBindings\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHashBindingsArgs) {\n super(args);\n }\n}\n\nexport interface IActionHashBindings extends IAction {\n /**\n * If hash collisions are allowed.\n */\n allowHashCollisions: boolean;\n}\n\nexport interface IActorHashBindingsOutput extends IActorOutput {\n /**\n * A string-based hash of the given object.\n * @param {Bindings} bindings The bindings to hash.\n * @return {string} The object's hash.\n */\n hashFunction: HashFunction;\n\n /**\n * If hash collisions are possible with the given hash function.\n */\n hashCollisions: boolean;\n}\n\nexport type HashFunction = (bindings: Bindings) => string;\n\nexport type IActorHashBindingsArgs = IActorArgs;\n\nexport type MediatorHashBindings = Mediator<\nActor,\nIActionHashBindings,\nIActorTest,\nIActorHashBindingsOutput\n>;\n","import { Actor } from '@comunica/core';\nimport type { IAction, IActorArgs, IActorOutput, IActorTest, Mediator } from '@comunica/core';\nimport type { Quad } from 'rdf-data-factory';\n\n/**\n * A comunica actor for hash-quads events.\n *\n * Actor types:\n * * Input: IActionHashQuads: Metadata for selecting a hash function.\n * * Test: \n * * Output: IActorHashQuadsOutput: The resulting hash function.\n *\n * @see IActionHashQuads\n * @see IActorHashQuadsOutput\n */\nexport abstract class ActorHashQuads extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHashQuadsArgs) {\n super(args);\n }\n}\n\nexport interface IActionHashQuads extends IAction {\n /**\n * If hash collisions are allowed.\n */\n allowHashCollisions: boolean;\n}\n\nexport interface IActorHashQuadsOutput extends IActorOutput {\n /**\n * A string-based hash of the given object.\n * @param {Quads} quads The quads to hash.\n * @return {string} The object's hash.\n */\n hashFunction: HashFunction;\n\n /**\n * If hash collisions are possible with the given hash function.\n */\n hashCollisions: boolean;\n}\n\nexport type HashFunction = (quad: Quad) => string;\n\nexport type IActorHashQuadsArgs = IActorArgs<\nIActionHashQuads,\nIActorTest,\nIActorHashQuadsOutput\n>;\n\nexport type MediatorHashQuads = Mediator<\nActor,\nIActionHashQuads,\nIActorTest,\nIActorHashQuadsOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\n\n/**\n * A comunica actor for http-invalidate events.\n *\n * Actor types:\n * * Input: IActionHttpInvalidate: An action for invalidating the cached contents of given URL.\n * * Test: \n * * Output: IActorHttpInvalidateOutput: An empty response.\n *\n * @see IActionHttpInvalidate\n * @see IActorHttpInvalidateOutput\n */\nexport abstract class ActorHttpInvalidate extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHttpInvalidateArgs) {\n super(args);\n }\n}\n\nexport interface IActionHttpInvalidate extends IAction {\n /**\n * The URL that requires invalidation.\n * If not provided, then _all_ URLs need to be invalidated.\n */\n url?: string;\n}\n\nexport interface IActorHttpInvalidateOutput extends IActorOutput {\n\n}\n\nexport type IActorHttpInvalidateArgs = IActorArgs;\n\nexport type MediatorHttpInvalidate = Mediate;\n","import type { IActorTest } from '@comunica/core';\nimport type {\n IActionHttpInvalidate,\n IActorHttpInvalidateOutput,\n IActorHttpInvalidateArgs,\n} from './ActorHttpInvalidate';\nimport { ActorHttpInvalidate } from './ActorHttpInvalidate';\n\n/**\n * An ActorHttpInvalidate actor that allows listeners to be attached.\n *\n * @see ActorHttpInvalidate\n */\nexport class ActorHttpInvalidateListenable extends ActorHttpInvalidate {\n private readonly invalidateListeners: IInvalidateListener[] = [];\n\n public constructor(args: IActorHttpInvalidateArgs) {\n super(args);\n this.invalidateListeners = [];\n }\n\n public addInvalidateListener(listener: IInvalidateListener): void {\n this.invalidateListeners.push(listener);\n }\n\n public async test(_action: IActionHttpInvalidate): Promise {\n return true;\n }\n\n public async run(action: IActionHttpInvalidate): Promise {\n for (const listener of this.invalidateListeners) {\n listener(action);\n }\n return {};\n }\n}\n\n/**\n * Called when a {@link IActionHttpInvalidate} is received.\n */\nexport type IInvalidateListener = (action: IActionHttpInvalidate) => void;\n","import type { IAction, IActorOutput, IActorTest, IActorArgs, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { Readable } from 'readable-stream';\n\n/**\n * A base actor for listening to init events.\n *\n * Actor types:\n * * Input: IActionInit: Contains process information\n * such as the list of arguments,\n * environment variables and input stream.\n * * Test: \n * * Output: IActorOutputInit: Contains process output streams.\n *\n * @see IActionInit\n */\nexport abstract class ActorInit extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorInitArgs) {\n super(args);\n }\n}\n\n/**\n * The init input, which contains the program arguments.\n */\nexport interface IActionInit extends IAction {\n /**\n * The list of program arguments.\n */\n argv: string[];\n /**\n * The mapping of environment variables.\n */\n env: Record;\n /**\n * A standard input stream.\n */\n stdin: Readable;\n}\n\nexport interface IActorOutputInit extends IActorOutput {\n /**\n * A standard error output stream.\n */\n stderr?: Readable;\n /**\n * A standard output stream.\n */\n stdout?: Readable;\n}\n\nexport type IActorInitArgs = IActorArgs;\n\nexport type MediatorInit = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for optimize-query-operation events.\n *\n * Actor types:\n * * Input: IActionOptimizeQueryOperation: An incoming SPARQL operation.\n * * Test: \n * * Output: IActorOptimizeQueryOperationOutput: A (possibly optimized) outgoing SPARQL operation.\n *\n * @see IActionOptimizeQueryOperation\n * @see IActorOptimizeQueryOperationOutput\n */\nexport abstract class ActorOptimizeQueryOperation\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n}\n\nexport interface IActionOptimizeQueryOperation extends IAction {\n operation: Algebra.Operation;\n}\n\nexport interface IActorOptimizeQueryOperationOutput extends IActorOutput {\n operation: Algebra.Operation;\n context: IActionContext;\n}\n\nexport type IActorOptimizeQueryOperationArgs = IActorArgs<\nIActionOptimizeQueryOperation,\nIActorTest,\nIActorOptimizeQueryOperationOutput\n>;\n\nexport type MediatorOptimizeQueryOperation = Mediate<\nIActionOptimizeQueryOperation,\nIActorOptimizeQueryOperationOutput\n>;\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { KeysInitQuery, KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorArgs, IActorTest, IAction, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport { BlankNodeBindingsScoped } from '@comunica/data-factory';\nimport type {\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n IQueryOperationResultQuads,\n IQueryOperationResultVoid,\n Bindings,\n IActionContext,\n FunctionArgumentsCache,\n IQuerySourceWrapper,\n FragmentSelectorShape,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { materializeOperation } from './Bindings';\n\n/**\n * A counter that keeps track blank node generated through BNODE() SPARQL\n * expressions.\n *\n * @type {number}\n */\nlet bnodeCounter = 0;\n\n/**\n * A comunica actor for query-operation events.\n *\n * Actor types:\n * * Input: IActionQueryOperation: A SPARQL Algebra operation.\n * * Test: \n * * Output: IActorQueryOperationOutput: A bindings stream.\n *\n * @see IActionQueryOperation\n * @see IQueryOperationResult\n */\nexport abstract class ActorQueryOperation extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n protected constructor(args: IActorQueryOperationArgs) {\n super(args);\n }\n\n /**\n * Safely cast a query operation output to a bindings output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBindings} A bindings query operation output.\n */\n public static getSafeBindings(output: IQueryOperationResult): IQueryOperationResultBindings {\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a quads output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultQuads} A quads query operation output.\n */\n public static getSafeQuads(output: IQueryOperationResult): IQueryOperationResultQuads {\n ActorQueryOperation.validateQueryOutput(output, 'quads');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a boolean output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBoolean} A boolean query operation output.\n */\n public static getSafeBoolean(output: IQueryOperationResult): IQueryOperationResultBoolean {\n ActorQueryOperation.validateQueryOutput(output, 'boolean');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a void output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultVoid} A void query operation output.\n */\n public static getSafeVoid(output: IQueryOperationResult): IQueryOperationResultVoid {\n ActorQueryOperation.validateQueryOutput(output, 'void');\n return output;\n }\n\n /**\n * Throw an error if the output type does not match the expected type.\n * @param {IQueryOperationResult} output A query operation output.\n * @param {string} expectedType The expected output type.\n */\n public static validateQueryOutput(output: IQueryOperationResult, expectedType: IQueryOperationResult['type']): void {\n if (output.type !== expectedType) {\n throw new Error(`Invalid query output type: Expected '${expectedType}' but got '${output.type}'`);\n }\n }\n\n protected static getBaseExpressionContext(context: IActionContext): IBaseExpressionContext {\n const now: Date | undefined = context.get(KeysInitQuery.queryTimestamp);\n const baseIRI: string | undefined = context.get(KeysInitQuery.baseIRI);\n const functionArgumentsCache: FunctionArgumentsCache = context.get(KeysInitQuery.functionArgumentsCache) ?? {};\n\n // Handle two variants of providing extension functions\n if (context.has(KeysInitQuery.extensionFunctionCreator) && context.has(KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n let extensionFunctionCreator: ((functionNamedNode: RDF.NamedNode) =>\n ((args: RDF.Term[]) => Promise) | undefined) | undefined = context\n .get(KeysInitQuery.extensionFunctionCreator);\n // Convert dictionary-based variant to callback\n const extensionFunctions: (Record Promise>) | undefined = context\n .get(KeysInitQuery.extensionFunctions);\n if (extensionFunctions) {\n extensionFunctionCreator = functionNamedNode => extensionFunctions[functionNamedNode.value];\n }\n\n return { now, baseIRI, extensionFunctionCreator, functionArgumentsCache };\n }\n\n /**\n * Create an options object that can be used to construct a expression-evaluator synchronous evaluator.\n * @param context An action context.\n * @param _mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n public static getExpressionContext(context: IActionContext, _mediatorQueryOperation?: MediatorQueryOperation):\n ISyncExpressionContext {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input?: string) => new BlankNodeBindingsScoped(input ?? `BNODE_${bnodeCounter++}`),\n };\n }\n\n /**\n * Create an options object that can be used to construct a expression-evaluator asynchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation A query query operation mediator for resolving `exists`.\n * @param bindingsFactory The bindings factory.\n */\n public static getAsyncExpressionContext(\n context: IActionContext,\n mediatorQueryOperation: MediatorQueryOperation,\n bindingsFactory: BindingsFactory,\n ):\n IAsyncExpressionContext {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input?: string) => Promise.resolve(new BlankNodeBindingsScoped(input ?? `BNODE_${bnodeCounter++}`)),\n exists: ActorQueryOperation.createExistenceResolver(context, mediatorQueryOperation, bindingsFactory),\n };\n }\n\n /**\n * Create an existence resolver for usage within an expression context.\n * @param context An action context.\n * @param mediatorQueryOperation A query operation mediator.\n * @param bindingsFactory The bindings factory.\n */\n public static createExistenceResolver(\n context: IActionContext,\n mediatorQueryOperation: MediatorQueryOperation,\n bindingsFactory: BindingsFactory,\n ):\n (expr: Algebra.ExistenceExpression, bindings: Bindings) => Promise {\n return async(expr, bindings) => {\n const operation = materializeOperation(expr.input, bindings, bindingsFactory);\n\n const outputRaw = await mediatorQueryOperation.mediate({ operation, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n return expr.not !== ((await output.bindingsStream.take(1).toArray()).length === 1);\n };\n }\n\n /**\n * Throw an error if the context contains the readOnly flag.\n * @param context An action context.\n */\n public static throwOnReadOnly(context: IActionContext): void {\n if (context.get(KeysQueryOperation.readOnly)) {\n throw new Error(`Attempted a write operation in read-only mode`);\n }\n }\n\n /**\n * Obtain the query source attached to the given operation.\n * @param operation An algebra operation.\n */\n public static getOperationSource(operation: Algebra.Operation): IQuerySourceWrapper | undefined {\n return operation.metadata?.scopedSource;\n }\n\n /**\n * Assign a source wrapper to the given operation.\n * The operation is copied and returned.\n * @param operation An operation.\n * @param source A source wrapper.\n */\n public static assignOperationSource(operation: O, source: IQuerySourceWrapper): O {\n operation = { ...operation };\n operation.metadata = operation.metadata ? { ...operation.metadata } : {};\n operation.metadata.scopedSource = source;\n return operation;\n }\n\n /**\n * Remove the source wrapper from the given operation.\n * The operation is mutated.\n * @param operation An operation.\n */\n public static removeOperationSource(operation: Algebra.Operation): void {\n delete operation.metadata?.scopedSource;\n if (operation.metadata && Object.keys(operation.metadata).length === 0) {\n delete operation.metadata;\n }\n }\n\n /**\n * Check if the given shape accepts the given query operation.\n * @param shape A shape to test the query operation against.\n * @param operation A query operation to test.\n * @param options Additional options to consider.\n * @param options.joinBindings If additional bindings will be pushed down to the source for joining.\n * @param options.filterBindings If additional bindings will be pushed down to the source for filtering.\n */\n public static doesShapeAcceptOperation(\n shape: FragmentSelectorShape,\n operation: Algebra.Operation,\n options?: {\n joinBindings?: boolean;\n filterBindings?: boolean;\n },\n ): boolean {\n if (shape.type === 'conjunction') {\n return shape.children.every(child => ActorQueryOperation.doesShapeAcceptOperation(child, operation, options));\n }\n if (shape.type === 'disjunction') {\n return shape.children.some(child => ActorQueryOperation.doesShapeAcceptOperation(child, operation, options));\n }\n if (shape.type === 'arity') {\n return ActorQueryOperation.doesShapeAcceptOperation(shape.child, operation, options);\n }\n\n if ((options?.joinBindings && !shape.joinBindings) ?? (options?.filterBindings && !shape.filterBindings)) {\n return false;\n }\n\n if (shape.operation.operationType === 'type') {\n return shape.operation.type === 'project' || shape.operation.type === operation.type;\n }\n return shape.operation.pattern.type === operation.type;\n }\n}\n\nexport interface IActionQueryOperation extends IAction {\n /**\n * The query operation to handle.\n */\n operation: Algebra.Operation;\n}\n\nexport type IActorQueryOperationArgs = IActorArgs;\n\nexport type MediatorQueryOperation = Mediate;\n\nexport interface IBaseExpressionContext {\n now?: Date;\n baseIRI?: string;\n extensionFunctionCreator?: (functionNamedNode: RDF.NamedNode) =>\n ((args: RDF.Term[]) => Promise) | undefined;\n functionArgumentsCache?: FunctionArgumentsCache;\n}\n\nexport interface ISyncExpressionContext extends IBaseExpressionContext {\n bnode: (input?: string | undefined) => RDF.BlankNode;\n}\n\nexport interface IAsyncExpressionContext extends IBaseExpressionContext {\n bnode: (input?: string | undefined) => Promise;\n exists?: (expr: Algebra.ExistenceExpression, bindings: Bindings) => Promise;\n}\n","import { KeysInitQuery, KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { cachifyMetadata } from '@comunica/metadata';\nimport type {\n IQueryOperationResult,\n IPhysicalQueryPlanLogger,\n IActionContext,\n IMetadata,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { IActionQueryOperation, IActorQueryOperationArgs } from './ActorQueryOperation';\nimport { ActorQueryOperation } from './ActorQueryOperation';\n\n/**\n * A base implementation for query operation actors for a specific operation type.\n */\nexport abstract class ActorQueryOperationTyped extends ActorQueryOperation {\n public readonly operationName: string;\n\n protected constructor(args: IActorQueryOperationArgs, operationName: string) {\n super( { ...args, operationName });\n if (!this.operationName) {\n throw new Error('A valid \"operationName\" argument must be provided.');\n }\n }\n\n public async test(action: IActionQueryOperation): Promise {\n if (!action.operation) {\n throw new Error('Missing field \\'operation\\' in a query operation action.');\n }\n if (action.operation.type !== this.operationName) {\n throw new Error(`Actor ${this.name} only supports ${this.operationName} operations, but got ${\n action.operation.type}`);\n }\n const operation: O = action.operation;\n return this.testOperation(operation, action.context);\n }\n\n public async run(action: IActionQueryOperation): Promise {\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context\n .get(KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(\n action.operation.type,\n undefined,\n action.operation,\n action.context.get(KeysInitQuery.physicalQueryPlanNode),\n this.name,\n {},\n );\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n\n const operation: O = action.operation;\n const subContext = action.context.set(KeysQueryOperation.operation, operation);\n const output: IQueryOperationResult = await this.runOperation(operation, subContext);\n if ('metadata' in output) {\n output.metadata = \n cachifyMetadata, RDF.QuadTermName | RDF.Variable>(output.metadata);\n }\n return output;\n }\n\n protected abstract testOperation(operation: O, context: IActionContext): Promise;\n\n protected abstract runOperation(operation: O, context: IActionContext):\n Promise;\n}\n","import type { Algebra } from 'sparqlalgebrajs';\nimport type { IActorQueryOperationArgs, MediatorQueryOperation } from './ActorQueryOperation';\nimport { ActorQueryOperationTyped } from './ActorQueryOperationTyped';\n\n/**\n * A base implementation for query operation actors for a specific operation type that have a query operation mediator.\n */\nexport abstract class ActorQueryOperationTypedMediated extends ActorQueryOperationTyped\n implements IActorQueryOperationTypedMediatedArgs {\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs, operationName: string) {\n super(args, operationName);\n }\n}\n\nexport interface IActorQueryOperationTypedMediatedArgs extends IActorQueryOperationArgs {\n mediatorQueryOperation: MediatorQueryOperation;\n}\n","import type { IActorTest, IBusArgs } from '@comunica/core';\nimport { BusIndexed } from '@comunica/core';\nimport type { IQueryOperationResult } from '@comunica/types';\nimport type { ActorQueryOperation, IActionQueryOperation } from './ActorQueryOperation';\n\n/**\n * Indexed bus for query operations.\n */\nexport class BusQueryOperation\n extends BusIndexed {\n public constructor(args: IBusArgs) {\n super({\n ...args,\n actorIdentifierFields: [ 'operationName' ],\n actionIdentifierFields: [ 'operation', 'type' ],\n });\n }\n}\n","import { AsyncIterator, DESTINATION } from 'asynciterator';\n\ntype InternalSource =\n AsyncIterator & { [DESTINATION]?: AsyncIterator };\n\n/**\n * An AsyncIterator with a callback for when this iterator is closed in any way.\n * In contrast to ClosableTransformIterator, this does not add the overhead of a TransformIterator.\n */\nexport class ClosableIterator extends AsyncIterator {\n protected readonly _source: InternalSource;\n private readonly onClose: () => void;\n\n public constructor(source: AsyncIterator, options: { onClose: () => void }) {\n super();\n this.onClose = options.onClose;\n this._source = > source;\n\n // Wire up the source for reading\n this._source[DESTINATION] = this;\n this._source.on('end', destinationClose);\n this._source.on('error', destinationEmitError);\n this._source.on('readable', destinationSetReadable);\n this.readable = this._source.readable;\n }\n\n public override read(): S | null {\n const ret = this._source.read();\n if (!ret) {\n // Mark as non-readable if ret was null\n this.readable = false;\n\n // Close this iterator if the source is empty\n if (this._source.done) {\n this.close();\n }\n }\n return ret;\n }\n\n protected override _end(destroy: boolean): void {\n this.onClose();\n\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[DESTINATION];\n this._source.destroy();\n super._end(destroy);\n }\n}\n\n// Helpers below are copied from AsyncIterator, as they are not exported from there.\n\nfunction destinationSetReadable(this: InternalSource): void {\n this[DESTINATION]!.readable = true;\n}\nfunction destinationEmitError(this: InternalSource, error: Error): void {\n this[DESTINATION]!.emit('error', error);\n}\nfunction destinationClose(this: InternalSource): void {\n this[DESTINATION]!.close();\n}\n","import type { AsyncIterator, TransformIteratorOptions } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\n\ndeclare type MaybePromise = T | Promise;\ndeclare type SourceExpression = MaybePromise> | (() => MaybePromise>);\n\n/**\n * A TransformIterator with a callback for when this iterator is closed in any way.\n */\nexport class ClosableTransformIterator extends TransformIterator {\n private readonly onClose: () => void;\n\n public constructor(source: SourceExpression, options: TransformIteratorOptions & { onClose: () => void }) {\n super(source, options);\n this.onClose = options.onClose;\n }\n\n protected override _end(destroy: boolean): void {\n this.onClose();\n super._end(destroy);\n }\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for query-parse events.\n *\n * Actor types:\n * * Input: IActionSparqlParse: A SPARQL query string.\n * * Test: \n * * Output: IActorSparqlParseOutput: A parsed query in SPARQL query algebra.\n *\n * @see IActionQueryParse\n * @see IActorQueryParseOutput\n */\nexport abstract class ActorQueryParse extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryParseArgs) {\n super(args);\n }\n}\n\nexport interface IActionQueryParse extends IAction {\n /**\n * A query.\n */\n query: string;\n /**\n * The query format.\n */\n queryFormat?: RDF.QueryFormat;\n /**\n * The query's default base IRI.\n */\n baseIRI?: string;\n}\n\nexport interface IActorQueryParseOutput extends IActorOutput {\n /**\n * A parsed query in SPARQL algebra.\n */\n operation: Algebra.Operation;\n /**\n * An optionally overridden base IRI.\n */\n baseIRI?: string;\n}\n\nexport type IActorQueryParseArgs = IActorArgs;\n\nexport type MediatorQueryParse = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { QueryFormatType, IQueryExplained, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for query-process events.\n *\n * Actor types:\n * * Input: IActionQueryProcess: The input query to process.\n * * Test: \n * * Output: IActorQueryProcessOutput: Output of the query processing.\n *\n * @see IActionQueryProcess\n * @see IActorQueryProcessOutput\n */\nexport abstract class ActorQueryProcess extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryProcessArgs) {\n super(args);\n }\n}\n\nexport interface IActionQueryProcess extends IAction {\n /**\n * The query to process.\n */\n query: QueryFormatType;\n}\n\nexport interface IActorQueryProcessOutput extends IActorOutput {\n /**\n * Result of the query processing.\n */\n result: IQueryOperationResult | IQueryExplained;\n}\n\nexport type IActorQueryProcessArgs = IActorArgs<\nIActionQueryProcess,\nIActorTest,\nIActorQueryProcessOutput\n>;\n\nexport type MediatorQueryProcess = Mediate<\nIActionQueryProcess,\nIActorQueryProcessOutput\n>;\n\nexport interface IQueryProcessSequential {\n parse: (query: QueryFormatType, context: IActionContext) => Promise;\n optimize: (operation: Algebra.Operation, context: IActionContext) => Promise;\n evaluate: (operation: Algebra.Operation, context: IActionContext) => Promise;\n}\n\nexport interface IQueryProcessSequentialOutput {\n operation: Algebra.Operation;\n context: IActionContext;\n}\n","import type {\n IActionAbstractMediaTyped,\n IActionAbstractMediaTypedHandle,\n IActionAbstractMediaTypedMediaTypeFormats,\n IActionAbstractMediaTypedMediaTypes,\n IActorArgsMediaTyped,\n IActorOutputAbstractMediaTyped,\n IActorOutputAbstractMediaTypedHandle,\n IActorOutputAbstractMediaTypedMediaTypeFormats,\n IActorOutputAbstractMediaTypedMediaTypes,\n IActorTestAbstractMediaTyped,\n IActorTestAbstractMediaTypedHandle,\n IActorTestAbstractMediaTypedMediaTypeFormats,\n IActorTestAbstractMediaTypedMediaTypes,\n} from '@comunica/actor-abstract-mediatyped';\nimport {\n ActorAbstractMediaTyped,\n} from '@comunica/actor-abstract-mediatyped';\nimport type { IAction, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport type { IQueryOperationResultBase, IActionContext } from '@comunica/types';\n\n/**\n * A comunica actor for query-result-serialize events.\n *\n * Actor types:\n * * Input: IActionSparqlSerialize: SPARQL bindings or a quad stream.\n * * Test: \n * * Output: IActorQueryResultSerializeOutput: A text stream.\n *\n * @see IActionSparqlSerialize\n * @see IActorQueryResultSerializeOutput\n */\nexport abstract class ActorQueryResultSerialize\n extends ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryResultSerializeArgs) {\n super(args);\n }\n}\n\nexport type IActionRootQueryResultSerialize = IActionAbstractMediaTyped;\nexport type IActorTestRootQueryResultSerialize = IActorTestAbstractMediaTyped;\nexport type IActorOutputRootQueryResultSerialize = IActorOutputAbstractMediaTyped;\n\nexport type IActionQueryResultSerializeHandle = IActionAbstractMediaTypedHandle;\nexport type IActorTestQueryResultSerializeHandle = IActorTestAbstractMediaTypedHandle;\nexport type IActorOutputQueryResultSerializeHandle = IActorOutputAbstractMediaTypedHandle<\nIActorQueryResultSerializeOutput\n>;\n\nexport type IActionQueryResultSerializeMediaTypes = IActionAbstractMediaTypedMediaTypes;\nexport type IActorTestQueryResultSerializeMediaTypes = IActorTestAbstractMediaTypedMediaTypes;\nexport type IActorOutputQueryResultSerializeMediaTypes = IActorOutputAbstractMediaTypedMediaTypes;\n\nexport type IActionQueryResultSerializeMediaTypeFormats = IActionAbstractMediaTypedMediaTypeFormats;\nexport type IActorTestQueryResultSerializeMediaTypeFormats = IActorTestAbstractMediaTypedMediaTypeFormats;\nexport type IActorOutputQueryResultSerializeMediaTypeFormats = IActorOutputAbstractMediaTypedMediaTypeFormats;\n\nexport interface IActionSparqlSerialize extends IAction, IQueryOperationResultBase {\n context: IActionContext;\n}\n\nexport interface IActorQueryResultSerializeOutput extends IActorOutput {\n /**\n * A readable string stream in a certain SPARQL serialization that was serialized.\n */\n data: NodeJS.ReadableStream;\n}\n\nexport type IActorQueryResultSerializeArgs = IActorArgsMediaTyped<\nIActionSparqlSerialize,\nIActorTest,\nIActorQueryResultSerializeOutput\n>;\n\nexport type MediatorQueryResultSerializeHandle = Mediate<\nIActionQueryResultSerializeHandle,\nIActorOutputQueryResultSerializeHandle,\nIActorTestQueryResultSerializeHandle\n>;\n\nexport type MediatorQueryResultSerializeMediaTypes = Mediate<\nIActionQueryResultSerializeMediaTypes,\nIActorOutputQueryResultSerializeMediaTypes,\nIActorTestQueryResultSerializeMediaTypes\n>;\n\nexport type MediatorQueryResultSerializeMediaTypeFormats = Mediate<\n IActionQueryResultSerializeMediaTypeFormats,\nIActorOutputQueryResultSerializeMediaTypeFormats,\nIActorTestQueryResultSerializeMediaTypeFormats\n>;\n","import type { IActorArgsMediaTypedFixed } from '@comunica/actor-abstract-mediatyped';\nimport { ActorAbstractMediaTypedFixed } from '@comunica/actor-abstract-mediatyped';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeOutput,\n ActorQueryResultSerialize,\n} from './ActorQueryResultSerialize';\n\n/**\n * A base actor for listening to SPARQL serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionSparqlSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorQueryResultSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nexport abstract class ActorQueryResultSerializeFixedMediaTypes extends ActorAbstractMediaTypedFixed<\nIActionSparqlSerialize,\nIActorTest,\nIActorQueryResultSerializeOutput\n>\n implements IActorQueryResultSerializeFixedMediaTypesArgs, ActorQueryResultSerialize {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n public async testHandleChecked(_action: IActionSparqlSerialize, _context: IActionContext): Promise {\n return true;\n }\n}\n\nexport interface IActorQueryResultSerializeFixedMediaTypesArgs\n extends IActorArgsMediaTypedFixed {}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IQuerySourceWrapper, QuerySourceUnidentifiedExpanded } from '@comunica/types';\n\n/**\n * A comunica actor for query-source-identify events.\n *\n * Actor types:\n * * Input: IActionQuerySourceIdentify: An unidentified query source.\n * * Test: \n * * Output: IActorQuerySourceIdentifyOutput: An identified query source.\n *\n * @see IActionQuerySourceIdentify\n * @see IActorQuerySourceIdentifyOutput\n */\nexport abstract class ActorQuerySourceIdentify\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQuerySourceIdentifyArgs) {\n super(args);\n }\n}\n\nexport interface IActionQuerySourceIdentify extends IAction {\n /**\n * An unidentified query source.\n */\n querySourceUnidentified: QuerySourceUnidentifiedExpanded;\n}\n\nexport interface IActorQuerySourceIdentifyOutput extends IActorOutput {\n /**\n * An identified query source.\n */\n querySource: IQuerySourceWrapper;\n}\n\nexport type IActorQuerySourceIdentifyArgs = IActorArgs<\nIActionQuerySourceIdentify,\nIActorTest,\nIActorQuerySourceIdentifyOutput\n>;\n\nexport type MediatorQuerySourceIdentify = Mediate<\nIActionQuerySourceIdentify,\nIActorQuerySourceIdentifyOutput\n>;\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { ClosableIterator } from '@comunica/bus-query-operation';\nimport { validateMetadataQuads } from '@comunica/metadata';\nimport type { BindingsStream, MetadataBindings, MetadataQuads, TermsOrder } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport type { QuadTermName } from 'rdf-terms';\nimport {\n forEachTermsNested,\n getTermsNested,\n getValueNestedPath,\n reduceTermsNested,\n someTerms,\n uniqTerms,\n} from 'rdf-terms';\nimport { matchPatternMappings } from 'rdf-terms/lib/QuadTermUtil';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * Convert an iterator of quads to an iterator of bindings.\n * @param quads The quads to convert.\n * @param pattern The pattern to get variables from to determine bindings.\n * All quads are also assumed to match the pattern.\n * @param bindingsFactory The factory for creating bindings.\n * @param unionDefaultGraph If union default graph mode is enabled.\n * If true, variable graphs will match all graphs, including the default graph.\n * If false, variable graphs will only match named graphs, and not the default graph.\n */\nexport function quadsToBindings(\n quads: AsyncIterator,\n pattern: Algebra.Pattern,\n bindingsFactory: BindingsFactory,\n unionDefaultGraph: boolean,\n): BindingsStream {\n const variables = getVariables(pattern);\n\n // If non-default-graph triples need to be filtered out\n const filterNonDefaultQuads = pattern.graph.termType === 'Variable' && !unionDefaultGraph;\n\n // Detect duplicate variables in the pattern\n const duplicateElementLinks: Record | undefined = getDuplicateElementLinks(pattern);\n\n // Convenience datastructure for mapping quad elements to variables\n const elementVariables: Record = reduceTermsNested(\n pattern,\n (acc: Record, term: RDF.Term, keys: QuadTermName[]) => {\n if (term.termType === 'Variable') {\n acc[keys.join('_')] = term.value;\n }\n return acc;\n },\n {},\n );\n\n // Optionally filter, and construct bindings\n let filteredOutput = quads;\n\n // SPARQL query semantics allow graph variables to only match with named graphs, excluding the default graph\n // But this is not the case when using union default graph semantics\n if (filterNonDefaultQuads) {\n filteredOutput = filteredOutput.filter(quad => quad.graph.termType !== 'DefaultGraph');\n }\n\n // If there are duplicate variables in the search pattern,\n // make sure that we filter out the triples that don't have equal values for those triple elements,\n // as the rdf-resolve-quad-pattern bus ignores variable names.\n if (duplicateElementLinks) {\n filteredOutput = filteredOutput.filter((quad) => {\n for (const keyLeft in duplicateElementLinks) {\n const keysLeft: QuadTermName[] = keyLeft.split('_');\n const valueLeft = getValueNestedPath(quad, keysLeft);\n for (const keysRight of duplicateElementLinks[keyLeft]) {\n if (!valueLeft.equals(getValueNestedPath(quad, keysRight))) {\n return false;\n }\n }\n }\n return true;\n });\n }\n\n // Wrap it in a ClosableIterator, so we can propagate destroy calls\n const it = new ClosableIterator(filteredOutput.map(quad => bindingsFactory\n .bindings(Object.keys(elementVariables).map((key) => {\n const keys: QuadTermName[] = key.split('_');\n const variable = elementVariables[key];\n const term = getValueNestedPath(quad, keys);\n return [ DF.variable(variable), term ];\n }))), {\n onClose: () => quads.destroy(),\n });\n\n // Set the metadata property\n setMetadata(it, quads, elementVariables, variables, filterNonDefaultQuads || Boolean(duplicateElementLinks));\n\n return it;\n}\n\n/**\n * Check if a term is a variable.\n * @param {RDF.Term} term An RDF term.\n * @return {any} If the term is a variable or blank node.\n */\nexport function isTermVariable(term: RDF.Term): term is RDF.Variable {\n return term.termType === 'Variable';\n}\n\n/**\n * Get all variables in the given pattern.\n * No duplicates are returned.\n * @param {RDF.BaseQuad} pattern A quad pattern.\n */\nexport function getVariables(pattern: RDF.BaseQuad): RDF.Variable[] {\n return uniqTerms(getTermsNested(pattern).filter(isTermVariable));\n}\n\n/**\n * A helper function to find a hash with quad elements that have duplicate variables.\n *\n * @param {RDF.Quad} pattern A quad pattern.\n *\n * @return {{[p: string]: string[]}} If no equal variable names are present in the four terms, this returns undefined.\n * Otherwise, this maps quad elements paths (['subject'], ['predicate'], ['object'],\n * ['graph'])\n * to the list of quad elements it shares a variable name with.\n * For quoted triples, paths such as ['subject', 'object'] may occur.\n * If no links for a certain element exist, this element will\n * not be included in the hash.\n * Note 1: Quad elements will never have a link to themselves.\n * So this can never occur: { subject: [[ 'subject']] },\n * instead 'null' would be returned.\n * Note 2: Links only exist in one direction,\n * this means that { subject: [[ 'predicate']], predicate: [[ 'subject' ]] }\n * will not occur, instead only { subject: [[ 'predicate']] }\n * will be returned.\n * Note 3: Keys can also be paths, but they are delimited by '_', such as:\n * { subject_object_subject: [[ 'predicate']] }\n */\nexport function getDuplicateElementLinks(pattern: RDF.BaseQuad): Record | undefined {\n // Collect a variable to quad elements mapping.\n const variableElements: Record = {};\n let duplicateVariables = false;\n forEachTermsNested(pattern, (value, keys) => {\n if (value.termType === 'Variable') {\n const val = termToString(value);\n const length = (variableElements[val] || (variableElements[val] = [])).push(keys);\n duplicateVariables = duplicateVariables || length > 1;\n }\n });\n\n if (!duplicateVariables) {\n return;\n }\n\n // Collect quad element to elements with equal variables mapping.\n const duplicateElementLinks: Record = {};\n for (const variable in variableElements) {\n const elements = variableElements[variable];\n const remainingElements = elements.slice(1);\n // Only store the elements that have at least one equal element.\n if (remainingElements.length > 0) {\n duplicateElementLinks[elements[0].join('_')] = remainingElements;\n }\n }\n\n return duplicateElementLinks;\n}\n\n/**\n * Set the metadata of the bindings stream derived from the metadata of the quads stream.\n *\n * @param {BindingsStream} bindings The bindings stream that will receive the metadata property.\n * @param {AsyncIterator} quads The quads stream that is guaranteed to emit the metadata property.\n * @param elementVariables Mapping of quad term name to variable name.\n * @param variables Variables to include in the metadata\n * @param forceEstimateCardinality Set the cardinality to estimate\n * @return {() => Promise<{[p: string]: any}>} A lazy promise behind a callback resolving to a metadata object.\n */\nexport function setMetadata(\n bindings: BindingsStream,\n quads: AsyncIterator,\n elementVariables: Record,\n variables: RDF.Variable[],\n forceEstimateCardinality: boolean,\n): void {\n const getMetadataCb = (metadataRaw: Record): void => {\n if (!('canContainUndefs' in metadataRaw)) {\n metadataRaw.canContainUndefs = false;\n }\n if (forceEstimateCardinality) {\n metadataRaw.cardinality.type = 'estimate';\n }\n bindings.setProperty(\n 'metadata',\n quadsMetadataToBindingsMetadata(validateMetadataQuads(metadataRaw), elementVariables, variables),\n );\n\n // Propagate metadata invalidations\n if (metadataRaw.state) {\n metadataRaw.state.addInvalidateListener(() => {\n setMetadata(bindings, quads, elementVariables, variables, forceEstimateCardinality);\n });\n }\n };\n\n const metadata = quads.getProperty('metadata');\n if (metadata) {\n // This is to enforce sync metadata setting, because AsyncIterator will always call it async,\n // even if the property was already defined.\n getMetadataCb(metadata);\n } else {\n quads.getProperty('metadata', getMetadataCb);\n }\n}\n\n/**\n * Convert the metadata of quads to the metadata of bindings.\n * @param metadataQuads Quads metadata.\n * @param elementVariables A mapping from quad elements to variables.\n * @param variables The variables in the bindings.\n */\nexport function quadsMetadataToBindingsMetadata(\n metadataQuads: MetadataQuads,\n elementVariables: Record,\n variables: RDF.Variable[],\n): MetadataBindings {\n return {\n ...metadataQuads,\n canContainUndefs: false,\n order: metadataQuads.order ?\n quadsOrderToBindingsOrder(metadataQuads.order, elementVariables) :\n undefined,\n availableOrders: metadataQuads.availableOrders ?\n metadataQuads.availableOrders.map(orderDef => ({\n cost: orderDef.cost,\n terms: quadsOrderToBindingsOrder(orderDef.terms, elementVariables),\n })) :\n undefined,\n variables,\n };\n}\n\n/**\n * Convert the quads order metadata element to a bindings order metadata element.\n * @param quadsOrder Quads order.\n * @param elementVariables A mapping from quad elements to variables.\n */\nexport function quadsOrderToBindingsOrder(\n quadsOrder: TermsOrder,\n elementVariables: Record,\n): TermsOrder {\n const mappedVariables: Record = {};\n return > quadsOrder.map((entry) => {\n // Omit entries that do not map to a variable\n const variableName = elementVariables[entry.term];\n if (!variableName) {\n // eslint-disable-next-line array-callback-return\n return;\n }\n\n // Omit entries that have been mapped already\n if (mappedVariables[variableName]) {\n // eslint-disable-next-line array-callback-return\n return;\n }\n\n mappedVariables[variableName] = true;\n return {\n term: DF.variable(variableName),\n direction: entry.direction,\n };\n }).filter(Boolean);\n}\n\n/**\n * Perform post-match-filtering if the source does not support quoted triple filtering,\n * but we have a variable inside a quoted triple.\n * @param pattern The current quad pattern operation.\n * @param it The iterator to filter.\n */\nexport function filterMatchingQuotedQuads(pattern: RDF.BaseQuad, it: AsyncIterator): AsyncIterator {\n if (someTerms(pattern, term => term.termType === 'Quad')) {\n it = it.filter(quad => matchPatternMappings(quad, pattern));\n }\n return it;\n}\n","import type { IAction, IActorArgs, IActorOutput, Mediate, IActorTest } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IJoinEntryWithMetadata } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-join-entries-sort events.\n *\n * Actor types:\n * * Input: IActionRdfJoinEntriesSort: Join entries.\n * * Test: IActorTest: Test result.\n * * Output: IActorRdfJoinEntriesSortOutput: The sorted join entries.\n *\n * @see IActionRdfJoinEntriesSort\n * @see IActorTest\n * @see IActorRdfJoinEntriesSortOutput\n */\nexport abstract class ActorRdfJoinEntriesSort\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfJoinEntriesSortArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfJoinEntriesSort extends IAction {\n /**\n * The array of streams to join.\n */\n entries: IJoinEntryWithMetadata[];\n}\n\nexport interface IActorRdfJoinEntriesSortOutput extends IActorOutput {\n /**\n * The array of sorted streams.\n */\n entries: IJoinEntryWithMetadata[];\n}\n\nexport type IActorRdfJoinEntriesSortArgs = IActorArgs<\nIActionRdfJoinEntriesSort,\nIActorTest,\nIActorRdfJoinEntriesSortOutput\n>;\n\nexport type MediatorRdfJoinEntriesSort = Mediate<\nIActionRdfJoinEntriesSort,\nIActorRdfJoinEntriesSortOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IMediatorTypeAccuracy } from '@comunica/mediatortype-accuracy';\nimport type { IJoinEntry } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-join-selectivity events.\n *\n * Actor types:\n * * Input: IActionRdfJoinSelectivity: Join entries.\n * * Test: IMediatorTypeAccuracy: The accuracy of the selectivity calculator.\n * * Output: IActorRdfJoinSelectivityOutput: The calculated join selectivity.\n *\n * @see IActionRdfJoinSelectivity\n * @see IActorRdfJoinSelectivityTest\n * @see IActorRdfJoinSelectivityOutput\n */\nexport abstract class ActorRdfJoinSelectivity\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfJoinSelectivityArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfJoinSelectivity extends IAction {\n /**\n * The array of streams to join.\n */\n entries: IJoinEntry[];\n}\n\nexport interface IActorRdfJoinSelectivityOutput extends IActorOutput {\n /**\n * A selectivity factor in the range [0, 1].\n * A value close to 1 indicates a low selectivity,\n * which means that the operations in the join entries are highly unrelated.\n * A value close to 0 indicates a high selectivity,\n * which means that the operations in the join entries are highly related, and have a high chance of reducing .\n */\n selectivity: number;\n}\n\nexport type IActorRdfJoinSelectivityArgs = IActorArgs<\nIActionRdfJoinSelectivity,\nIMediatorTypeAccuracy,\nIActorRdfJoinSelectivityOutput\n>;\n\nexport type MediatorRdfJoinSelectivity = Mediate<\nIActionRdfJoinSelectivity,\nIActorRdfJoinSelectivityOutput,\nIMediatorTypeAccuracy\n>;\n","import type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type {\n MediatorRdfJoinSelectivity,\n} from '@comunica/bus-rdf-join-selectivity';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IAction, IActorArgs, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { cachifyMetadata, MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQueryOperationResultBindings,\n MetadataBindings,\n IPhysicalQueryPlanLogger,\n Bindings,\n IActionContext,\n IJoinEntry,\n IJoinEntryWithMetadata,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { instrumentIterator } from './instrumentIterator';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica actor for joining 2 binding streams.\n *\n * Actor types:\n * * Input: IActionRdfJoin: The streams that need to be joined.\n * * Test: IMediatorTypeJoinCoefficients: Join coefficients.\n * * Output: IActorRdfJoinOutput: The resulting joined stream.\n *\n * @see IActionRdfJoin\n * @see IActorQueryOperationOutput\n */\nexport abstract class ActorRdfJoin\n extends Actor {\n public readonly mediatorJoinSelectivity: MediatorRdfJoinSelectivity;\n\n /**\n * If this actor will be logged in the debugger and physical query plan logger\n */\n public includeInLogs = true;\n public readonly logicalType: LogicalJoinType;\n public readonly physicalName: string;\n /**\n * Can be used by subclasses to indicate the max or min number of streams that can be joined.\n * 0 for infinity.\n * By default, this indicates the max number, but can be inverted by setting limitEntriesMin to true.\n */\n protected readonly limitEntries: number;\n /**\n * If true, the limitEntries field is a lower limit,\n * otherwise, it is an upper limit.\n */\n protected readonly limitEntriesMin: boolean;\n /**\n * If this actor can handle undefs in the bindings.\n */\n protected readonly canHandleUndefs: boolean;\n /**\n * If this join operator will not invoke any other join or query operations below,\n * and can therefore be considered a leaf of the join plan.\n */\n protected readonly isLeaf: boolean;\n /**\n * If this join operator must only be used for join entries with (at least partially) common variables.\n */\n protected readonly requiresVariableOverlap?: boolean;\n\n /**\n * @param args - @defaultNested { a } bus\n * @param options - Actor-specific join options.\n */\n public constructor(args: IActorRdfJoinArgs, options: IActorRdfJoinInternalOptions) {\n super(args);\n this.logicalType = options.logicalType;\n this.physicalName = options.physicalName;\n this.limitEntries = options.limitEntries ?? Number.POSITIVE_INFINITY;\n this.limitEntriesMin = options.limitEntriesMin ?? false;\n this.canHandleUndefs = options.canHandleUndefs ?? false;\n this.isLeaf = options.isLeaf ?? true;\n this.requiresVariableOverlap = options.requiresVariableOverlap ?? false;\n }\n\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This can cause clashes for equal terms.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string} A hash string.\n */\n public static hash(bindings: Bindings, variables: RDF.Variable[]): string {\n return variables\n .map((variable) => {\n const term = bindings.get(variable);\n if (term) {\n return term.value;\n }\n return '';\n })\n .join('');\n }\n\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This is guaranteed to not produce clashing bindings for unequal terms.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string} A hash string.\n */\n public static hashNonClashing(bindings: RDF.Bindings, variables: RDF.Variable[]): string {\n return variables\n .map((variable) => {\n const term = bindings.get(variable);\n if (term) {\n return termToString(term);\n }\n return '';\n })\n .join('');\n }\n\n /**\n * Returns an array containing all the variable names that occur in all bindings streams.\n * @param {MetadataBindings[]} metadatas An array of optional metadata objects for the entries.\n * @returns {RDF.Variable[]} An array of variables.\n */\n public static overlappingVariables(metadatas: MetadataBindings[]): RDF.Variable[] {\n const variables = metadatas.map(metadata => metadata.variables);\n let baseArray = variables[0];\n for (const array of variables.slice(1)) {\n baseArray = baseArray.filter(el => array.some(value => value.value === el.value));\n }\n return baseArray;\n }\n\n /**\n * Returns the variables that will occur in the joined bindings.\n * @param {MetadataBindings[]} metadatas An array of metadata objects for the entries.\n * @returns {RDF.Variable[]} An array of joined variables.\n */\n public static joinVariables(metadatas: MetadataBindings[]): RDF.Variable[] {\n return [ ...new Set(metadatas.flatMap(metadata => metadata.variables.map(variable => variable.value))) ]\n .map(variable => DF.variable(variable));\n }\n\n /**\n * Returns the result of joining bindings, or `null` if no join is possible.\n * @param {Bindings[]} bindings\n * @returns {Bindings}\n */\n\n public static joinBindings(...bindings: Bindings[]): Bindings | null {\n if (bindings.length === 0) {\n return null;\n }\n if (bindings.length === 1) {\n return bindings[0];\n }\n\n let acc: Bindings = bindings[0];\n for (const binding of bindings.slice(1)) {\n const merged = acc.merge(binding);\n if (!merged) {\n return null;\n }\n acc = merged;\n }\n return acc;\n }\n\n /**\n * Get the estimated number of items from the given metadata.\n * @param {Record} metadata A metadata object.\n * @return {number} The estimated number of items, or `Infinity` if cardinality is falsy.\n */\n public static getCardinality(metadata: MetadataBindings): RDF.QueryResultCardinality {\n return metadata.cardinality;\n }\n\n /**\n * Obtain the metadata from all given join entries.\n * @param entries Join entries.\n */\n public static async getMetadatas(entries: IJoinEntry[]): Promise {\n return await Promise.all(entries.map(entry => entry.output.metadata()));\n }\n\n /**\n * Obtain the join entries witt metadata from all given join entries.\n * @param entries Join entries.\n */\n public static async getEntriesWithMetadatas(entries: IJoinEntry[]): Promise {\n const metadatas = await ActorRdfJoin.getMetadatas(entries);\n return entries.map((entry, i) => ({ ...entry, metadata: metadatas[i] }));\n }\n\n /**\n * Calculate the time to initiate a request for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public static getRequestInitialTimes(metadatas: MetadataBindings[]): number[] {\n return metadatas.map(metadata => metadata.pageSize ? 0 : metadata.requestTime ?? 0);\n }\n\n /**\n * Calculate the time to receive a single item for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public static getRequestItemTimes(metadatas: MetadataBindings[]): number[] {\n return metadatas\n .map(metadata => metadata.pageSize ? (metadata.requestTime ?? 0) / metadata.pageSize : 0);\n }\n\n /**\n * Construct a metadata validation state for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public constructState(metadatas: MetadataBindings[]): MetadataValidationState {\n // Propagate metadata invalidations\n const state = new MetadataValidationState();\n const invalidateListener = (): void => state.invalidate();\n for (const metadata of metadatas) {\n metadata.state.addInvalidateListener(invalidateListener);\n }\n return state;\n }\n\n /**\n * Helper function to create a new metadata object for the join result.\n * For required metadata entries that are not provided, sane defaults are calculated.\n * @param entries Join entries.\n * @param metadatas Metadata of the join entries.\n * @param context The action context.\n * @param partialMetadata Partial metadata entries.\n * @param optional If metadata for an optional operation must be calculated.\n */\n public async constructResultMetadata(\n entries: IJoinEntry[],\n metadatas: MetadataBindings[],\n context: IActionContext,\n partialMetadata: Partial = {},\n optional = false,\n ): Promise {\n let cardinalityJoined: RDF.QueryResultCardinality;\n if (partialMetadata.cardinality) {\n cardinalityJoined = partialMetadata.cardinality;\n } else {\n cardinalityJoined = metadatas\n .reduce((acc: RDF.QueryResultCardinality, metadata) => {\n const cardinalityThis = ActorRdfJoin.getCardinality(metadata);\n return {\n type: cardinalityThis.type === 'estimate' ? 'estimate' : acc.type,\n value: acc.value * (optional ? Math.max(1, cardinalityThis.value) : cardinalityThis.value),\n };\n }, { type: 'exact', value: 1 });\n cardinalityJoined.value *= (await this.mediatorJoinSelectivity.mediate({ entries, context })).selectivity;\n }\n\n return {\n state: this.constructState(metadatas),\n ...partialMetadata,\n cardinality: {\n type: cardinalityJoined.type,\n value: cardinalityJoined.value,\n },\n canContainUndefs: partialMetadata.canContainUndefs ?? metadatas.some(metadata => metadata.canContainUndefs),\n variables: ActorRdfJoin.joinVariables(metadatas),\n };\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {MediatorRdfJoinEntriesSort} mediatorJoinEntriesSort A mediator for sorting join entries.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public static async sortJoinEntries(\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort,\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n // If there is a stream that can contain undefs, we don't modify the join order.\n const canContainUndefs = entries.some(entry => entry.metadata.canContainUndefs);\n if (canContainUndefs) {\n return entries;\n }\n\n // Calculate number of occurrences of each variable\n const variableOccurrences: Record = {};\n for (const entry of entries) {\n for (const variable of entry.metadata.variables) {\n let counter = variableOccurrences[variable.value];\n if (!counter) {\n counter = 0;\n }\n variableOccurrences[variable.value] = ++counter;\n }\n }\n\n // Determine variables that occur in at least two join entries\n const multiOccurrenceVariables: string[] = [];\n for (const [ variable, count ] of Object.entries(variableOccurrences)) {\n if (count >= 2) {\n multiOccurrenceVariables.push(variable);\n }\n }\n\n // Reject if no entries have common variables\n if (multiOccurrenceVariables.length === 0) {\n throw new Error(`Bind join can only join entries with at least one common variable`);\n }\n\n // Determine entries without common variables\n // These will be placed in the back of the sorted array\n const entriesWithoutCommonVariables: IJoinEntryWithMetadata[] = [];\n for (const entry of entries) {\n let hasCommon = false;\n for (const variable of entry.metadata.variables) {\n if (multiOccurrenceVariables.includes(variable.value)) {\n hasCommon = true;\n break;\n }\n }\n if (!hasCommon) {\n entriesWithoutCommonVariables.push(entry);\n }\n }\n\n return (await mediatorJoinEntriesSort.mediate({ entries, context })).entries\n .sort((entryLeft, entryRight) => {\n // Sort to make sure that entries without common variables come last in the array.\n // For all other entries, the original order is kept.\n const leftWithoutCommonVariables = entriesWithoutCommonVariables.includes(entryLeft);\n const rightWithoutCommonVariables = entriesWithoutCommonVariables.includes(entryRight);\n if (leftWithoutCommonVariables === rightWithoutCommonVariables) {\n return 0;\n }\n return leftWithoutCommonVariables ?\n 1 :\n -1;\n });\n }\n\n /**\n * Default test function for join actors.\n * Checks whether all iterators have metadata.\n * If yes: call the abstract getIterations method, if not: return Infinity.\n * @param {IActionRdfJoin} action The input action containing the relevant iterators\n * @returns {Promise} The join coefficients.\n */\n public async test(action: IActionRdfJoin): Promise {\n // Validate logical join type\n if (action.type !== this.logicalType) {\n throw new Error(`${this.name} can only handle logical joins of type '${this.logicalType}', while '${action.type}' was given.`);\n }\n\n // Don't allow joining of one or zero streams\n if (action.entries.length <= 1) {\n throw new Error(`${this.name} requires at least two join entries.`);\n }\n\n // Check if this actor can handle the given number of streams\n if (this.limitEntriesMin ? action.entries.length < this.limitEntries : action.entries.length > this.limitEntries) {\n throw new Error(`${this.name} requires ${this.limitEntries\n } join entries at ${this.limitEntriesMin ? 'least' : 'most'\n }. The input contained ${action.entries.length}.`);\n }\n\n // Check if all streams are bindings streams\n for (const entry of action.entries) {\n if (entry.output.type !== 'bindings') {\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`Invalid type of a join entry: Expected 'bindings' but got '${entry.output.type}'`);\n }\n }\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Check if this actor can handle undefs\n if (!this.canHandleUndefs) {\n for (const metadata of metadatas) {\n if (metadata.canContainUndefs) {\n throw new Error(`Actor ${this.name} can not join streams containing undefs`);\n }\n }\n }\n\n // This actor only works with common variables\n if (this.requiresVariableOverlap && ActorRdfJoin.overlappingVariables(metadatas).length === 0) {\n throw new Error(`Actor ${this.name} can only join entries with at least one common variable`);\n }\n\n return await this.getJoinCoefficients(action, metadatas);\n }\n\n /**\n * Returns default input for 0 or 1 entries. Calls the getOutput function otherwise\n * @param {IActionRdfJoin} action\n * @returns {Promise} A bindings result.\n */\n public async run(action: IActionRdfJoin): Promise {\n // Prepare logging to physical plan\n // This must be called before getOutput, because we need to override the plan node in the context\n let parentPhysicalQueryPlanNode;\n if (action.context.has(KeysInitQuery.physicalQueryPlanLogger)) {\n parentPhysicalQueryPlanNode = action.context.get(KeysInitQuery.physicalQueryPlanNode);\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action);\n }\n\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context.get(KeysInitQuery\n .physicalQueryPlanLogger);\n let planMetadata: any;\n if (this.includeInLogs && physicalQueryPlanLogger) {\n planMetadata = {};\n // Stash non-join children, as they will be unstashed later in sub-joins.\n physicalQueryPlanLogger.stashChildren(\n parentPhysicalQueryPlanNode,\n node => node.logicalOperator.startsWith('join'),\n );\n physicalQueryPlanLogger.logOperation(\n `join-${this.logicalType}`,\n this.physicalName,\n action,\n parentPhysicalQueryPlanNode,\n this.name,\n planMetadata,\n );\n }\n\n // Get action output\n const { result, physicalPlanMetadata } = await this.getOutput(action);\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Fill in the physical plan metadata after determining action output\n if (planMetadata) {\n // eslint-disable-next-line ts/no-floating-promises\n instrumentIterator(result.bindingsStream)\n .then((counters) => {\n physicalQueryPlanLogger!.appendMetadata(action, {\n cardinalityReal: counters.count,\n timeSelf: counters.timeSelf,\n timeLife: counters.timeLife,\n });\n });\n\n Object.assign(planMetadata, physicalPlanMetadata);\n const cardinalities = metadatas.map(ActorRdfJoin.getCardinality);\n planMetadata.cardinalities = cardinalities;\n planMetadata.joinCoefficients = await this.getJoinCoefficients(action, metadatas);\n\n // If this is a leaf operation, include join entries in plan metadata.\n if (this.isLeaf) {\n for (let i = 0; i < action.entries.length; i++) {\n const entry = action.entries[i];\n physicalQueryPlanLogger!.unstashChild(\n entry.operation,\n action,\n );\n physicalQueryPlanLogger!.appendMetadata(entry.operation, { cardinality: cardinalities[i] });\n }\n }\n }\n\n // Cache metadata\n result.metadata = cachifyMetadata(result.metadata);\n\n return result;\n }\n\n /**\n * Returns the resulting output for joining the given entries.\n * This is called after removing the trivial cases in run.\n * @param {IActionRdfJoin} action\n * @returns {Promise}\n */\n protected abstract getOutput(action: IActionRdfJoin): Promise;\n\n /**\n * Calculate the join coefficients.\n * @param {IActionRdfJoin} action Join action\n * @param metadatas Array of resolved metadata objects.\n * @returns {IMediatorTypeJoinCoefficients} The join coefficient estimates.\n */\n protected abstract getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise;\n}\n\nexport interface IActorRdfJoinArgs\n extends IActorArgs {\n mediatorJoinSelectivity: MediatorRdfJoinSelectivity;\n}\n\nexport interface IActorRdfJoinInternalOptions {\n /**\n * The logical join type this actor can handle.\n */\n logicalType: LogicalJoinType;\n /**\n * The physical name of join operation this actor implements.\n * This is used for debug and query plan logs.\n */\n physicalName: string;\n /**\n * Can be used by subclasses to indicate the max or min number of streams that can be joined.\n * 0 for infinity.\n * By default, this indicates the max number, but can be inverted by setting limitEntriesMin to true.\n */\n limitEntries?: number;\n /**\n * If true, the limitEntries field is a lower limit,\n * otherwise, it is an upper limit.\n * Defaults to false.\n */\n limitEntriesMin?: boolean;\n /**\n * If this actor can handle undefs in the bindings.\n * Defaults to false.\n */\n canHandleUndefs?: boolean;\n /**\n * If this join operator will not invoke any other join or query operations below,\n * and can therefore be considered a leaf of the join plan.\n * Defaults to true.\n */\n isLeaf?: boolean;\n /**\n * If this join operator must only be used for join entries with (at least partially) common variables.\n */\n requiresVariableOverlap?: boolean;\n}\n\n/**\n * Represents a logical join type.\n */\nexport type LogicalJoinType = 'inner' | 'optional' | 'minus';\n\nexport interface IActionRdfJoin extends IAction {\n /**\n * The logical join type.\n */\n type: LogicalJoinType;\n /**\n * The array of streams to join.\n */\n entries: IJoinEntry[];\n}\n\nexport interface IActorRdfJoinOutputInner {\n /**\n * The join result.\n */\n result: IQueryOperationResultBindings;\n /**\n * Optional metadata that will be included as metadata within the physical query plan output.\n */\n physicalPlanMetadata?: any;\n}\n\nexport type MediatorRdfJoin = Mediate;\n","import type { AsyncIterator, TransformIteratorOptions } from 'asynciterator';\nimport { ArrayIterator, TransformIterator } from 'asynciterator';\n\n/**\n * Splits an iterator into chunks based on a given block size.\n */\nexport class ChunkedIterator extends TransformIterator> {\n protected readonly blockSize: number;\n protected chunk: T[] = [];\n\n public constructor(source: AsyncIterator, blockSize: number, options?: TransformIteratorOptions) {\n super(source, options);\n this.blockSize = blockSize;\n }\n\n protected consumeChunkAsIterator(): AsyncIterator {\n const it = new ArrayIterator(this.chunk, { autoStart: false });\n this.chunk = [];\n return it;\n }\n\n protected override _transform(item: T, done: () => void, push: (i: AsyncIterator) => void): void {\n this.chunk.push(item);\n if (this.chunk.length >= this.blockSize) {\n push(this.consumeChunkAsIterator());\n }\n done();\n }\n\n protected override _flush(done: () => void): void {\n if (this.chunk.length > 0) {\n this._push(this.consumeChunkAsIterator());\n }\n super._flush(done);\n }\n}\n","import type { AsyncIterator } from 'asynciterator';\n\nexport type IteratorCounters = {\n /**\n * The total time spent within `_read` and `read`.\n */\n timeSelf: number;\n /**\n * The time between creation and ending.\n */\n timeLife: number;\n /**\n * The number of elements produced.\n */\n count: number;\n};\n\n/**\n * Profile an iterator by monkey-patching its `_read` and `read` methods.\n * @param iterator\n */\nexport function instrumentIterator(iterator: AsyncIterator): Promise {\n const counters: IteratorCounters = {\n count: 0,\n timeSelf: 0,\n timeLife: 0,\n };\n instrumentIteratorInner(iterator, counters, true);\n return new Promise((resolve) => {\n iterator.on('end', () => {\n resolve(counters);\n });\n });\n}\n\nfunction instrumentIteratorInner(\n iterator: AsyncIterator,\n counter: { timeSelf: number; timeLife: number; count: number },\n top: boolean,\n): void {\n if (!('_profileInstrumented' in iterator)) {\n // Only patch an iterator once.\n (iterator)._profileInstrumented = true;\n\n // Patch _read\n if ('_read' in iterator) {\n const readOld: any = iterator._read;\n iterator._read = (count: number, done: () => void) => {\n const startTime = performance.now();\n readOld.call(iterator, count, () => {\n counter.timeSelf += performance.now() - startTime;\n done();\n });\n };\n }\n\n // Patch read\n if ('read' in iterator) {\n // eslint-disable-next-line ts/unbound-method\n const readOld: any = iterator.read;\n iterator.read = () => {\n const startTime = performance.now();\n const ret = readOld.call(iterator);\n if (top && ret) {\n counter.count++;\n }\n counter.timeSelf += performance.now() - startTime;\n return ret;\n };\n }\n\n // Measure total time\n if (top) {\n const startTime = performance.now();\n iterator.on('end', () => {\n counter.timeLife = performance.now() - startTime;\n });\n }\n\n // Also patch children\n if ('_source' in iterator) {\n instrumentIteratorInner(iterator._source, counter, false);\n }\n }\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { MetadataBindings } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-metadata-accumulate events.\n *\n * Actor types:\n * * Input: IActionRdfMetadataAccumulate: The metadata objects to accumulate,\n * or a trigger for initializing a new value.\n * * Test: \n * * Output: IActorRdfMetadataAccumulateOutput: The accumulated metadata object.\n *\n * @see IActionRdfMetadataAccumulate\n * @see IActorRdfMetadataAccumulateOutput\n */\nexport abstract class ActorRdfMetadataAccumulate\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n}\n\nexport type IActionRdfMetadataAccumulate = IActionRdfMetadataAccumulateInitialize | IActionRdfMetadataAccumulateAppend;\n\nexport interface IActionRdfMetadataAccumulateInitialize extends IAction {\n /**\n * Indicates that metadata fields should be initialized to default values.\n */\n mode: 'initialize';\n}\n\nexport interface IActionRdfMetadataAccumulateAppend extends IAction {\n /**\n * Indicates that metadata fields should be accumulated.\n * The initialize step is guaranteed to have been called before this on the `accumulatedMetadata` object.\n */\n mode: 'append';\n /**\n * The metadata object that already has some accumulated fields.\n * This object should not be mutated.\n */\n accumulatedMetadata: MetadataBindings;\n /**\n * The metadata object with fields to append.\n * This object should not be mutated.\n */\n appendingMetadata: MetadataBindings;\n}\n\nexport interface IActorRdfMetadataAccumulateOutput extends IActorOutput {\n /**\n * The initialized or accumulated metadata object.\n * This should only contain those fields that are applicable to this actor.\n */\n metadata: Partial;\n}\n\nexport type IActorRdfMetadataAccumulateArgs = IActorArgs<\nIActionRdfMetadataAccumulate,\nIActorTest,\nIActorRdfMetadataAccumulateOutput\n>;\n\nexport type MediatorRdfMetadataAccumulate = Mediate<\nIActionRdfMetadataAccumulate,\nIActorRdfMetadataAccumulateOutput\n>;\n","import type {\n IActionAbstractMediaTyped,\n IActorArgsMediaTyped,\n IActorTestAbstractMediaTyped,\n IActorOutputAbstractMediaTypedHandle,\n IActionAbstractMediaTypedHandle,\n IActionAbstractMediaTypedMediaTypeFormats,\n IActionAbstractMediaTypedMediaTypes,\n IActorOutputAbstractMediaTypedMediaTypeFormats,\n IActorOutputAbstractMediaTypedMediaTypes,\n IActorTestAbstractMediaTypedHandle,\n IActorTestAbstractMediaTypedMediaTypeFormats,\n IActorTestAbstractMediaTypedMediaTypes,\n} from '@comunica/actor-abstract-mediatyped';\nimport {\n ActorAbstractMediaTyped,\n} from '@comunica/actor-abstract-mediatyped';\nimport type { IAction, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica actor for RDF parse events.\n *\n * Actor types:\n * * Input: IActionRdfSerialize: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutput: The serialized quads.\n *\n * @see IActionRdfSerialize\n * @see IActorRdfSerializeOutput\n */\nexport abstract class ActorRdfSerialize extends\n ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfSerializeArgs) {\n super(args);\n }\n}\n\nexport type IActionRootRdfSerialize = IActionAbstractMediaTyped;\nexport type IActorTestRootRdfSerialize = IActorTestAbstractMediaTyped;\nexport type IActorOutputRootRdfSerialize = IActorOutputAbstractMediaTypedHandle;\n\nexport type IActionRdfSerializeHandle = IActionAbstractMediaTypedHandle;\nexport type IActorTestRdfSerializeHandle = IActorTestAbstractMediaTypedHandle;\nexport type IActorOutputRdfSerializeHandle = IActorOutputAbstractMediaTypedHandle;\n\nexport type IActionRdfSerializeMediaTypes = IActionAbstractMediaTypedMediaTypes;\nexport type IActorTestRdfSerializeMediaTypes = IActorTestAbstractMediaTypedMediaTypes;\nexport type IActorOutputRdfSerializeMediaTypes = IActorOutputAbstractMediaTypedMediaTypes;\n\nexport type IActionRdfSerializeMediaTypeFormats = IActionAbstractMediaTypedMediaTypeFormats;\nexport type IActorTestRdfSerializeMediaTypeFormats = IActorTestAbstractMediaTypedMediaTypeFormats;\nexport type IActorOutputRdfSerializeMediaTypeFormats = IActorOutputAbstractMediaTypedMediaTypeFormats;\n\nexport interface IActionRdfSerialize extends IAction {\n /**\n * The stream of quads.\n */\n quadStream: RDF.Stream;\n}\n\nexport interface IActorRdfSerializeOutput extends IActorOutput {\n /**\n * A readable string stream in a certain RDF serialization that was serialized.\n */\n data: NodeJS.ReadableStream;\n /**\n * An optional field indicating if the given output stream uses a triple-based serialization,\n * in which everything is serialized in the default graph.\n * If falsy, the quad stream contain actual quads, otherwise they should be interpreted as triples.\n */\n triples?: boolean;\n}\n\nexport type IActorRdfSerializeArgs = IActorArgsMediaTyped;\n\nexport type MediatorRdfSerializeHandle = Mediate<\nIActionRdfSerializeHandle,\nIActorOutputRdfSerializeHandle,\nIActorTestRdfSerializeHandle\n>;\n\nexport type MediatorRdfSerialize = Mediate<\nIActionRootRdfSerialize,\nIActorOutputRootRdfSerialize,\nIActorTestRootRdfSerialize\n>;\n\nexport type MediatorRdfSerializeMediaTypes = Mediate<\nIActionRdfSerializeMediaTypes,\nIActorOutputRdfSerializeMediaTypes,\nIActorTestRdfSerializeMediaTypes\n>;\n\nexport type MediatorRdfSerializeMediaTypeFormats = Mediate<\nIActionRdfSerializeMediaTypeFormats,\nIActorOutputRdfSerializeMediaTypeFormats,\nIActorTestRdfSerializeMediaTypeFormats\n>;\n","import type { IActorArgsMediaTypedFixed } from '@comunica/actor-abstract-mediatyped';\nimport { ActorAbstractMediaTypedFixed } from '@comunica/actor-abstract-mediatyped';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionRdfSerialize, IActorRdfSerializeOutput, ActorRdfSerialize } from './ActorRdfSerialize';\n\n/**\n * A base actor for listening to RDF serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRdfSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nexport abstract class ActorRdfSerializeFixedMediaTypes extends ActorAbstractMediaTypedFixed<\nIActionRdfSerialize,\nIActorTest,\nIActorRdfSerializeOutput\n>\n implements IActorRdfSerializeFixedMediaTypesArgs, ActorRdfSerialize {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfSerializeFixedMediaTypesArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n public async testHandleChecked(): Promise {\n return true;\n }\n}\n\nexport type IActorRdfSerializeFixedMediaTypesArgs = IActorArgsMediaTypedFixed<\nIActionRdfSerialize,\nIActorTest,\nIActorRdfSerializeOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\n\n/**\n * A comunica actor for rdf-update-quads events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateQuads: Quad insertion and deletion streams.\n * * Test: \n * * Output: IActorRdfUpdateQuadsOutput: A promise resolving when the update operation is done.\n *\n * @see IActionRdfUpdateQuads\n * @see IActorRdfUpdateQuadsOutput\n */\nexport abstract class ActorRdfUpdateQuads extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfUpdateQuadsArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfUpdateQuads extends IAction {\n /**\n * An optional stream of quads to insert.\n */\n quadStreamInsert?: AsyncIterator;\n /**\n * An optional stream of quads to delete.\n */\n quadStreamDelete?: AsyncIterator;\n /**\n * An optional deletion of graphs.\n */\n deleteGraphs?: {\n /**\n * The graph(s) in which all triples must be removed.\n */\n graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n /**\n * If true, and the graph does not exist, an error must be emitted.\n *\n * Should only be considered on destinations that record empty graphs.\n */\n requireExistence: boolean;\n /**\n * If the graph itself should also be dropped.\n * Should not happen on the 'DEFAULT' graph.\n *\n * Should only be considered on destinations that record empty graphs.\n */\n dropGraphs: boolean;\n };\n /**\n * An optional creation of (empty) graphs.\n */\n createGraphs?: {\n /**\n * The graph names to create.\n */\n graphs: RDF.NamedNode[];\n /**\n * If true, an error MUST be thrown when the graph already exists.\n *\n * For destinations that do not record empty graphs,\n * this should only throw if at least one quad with the given quad already exists.\n */\n requireNonExistence: boolean;\n };\n}\n\nexport interface IActorRdfUpdateQuadsOutput extends IActorOutput {\n /**\n * Async function that resolves when the update operation is done.\n */\n execute: () => Promise;\n}\n\nexport type IActorRdfUpdateQuadsArgs = IActorArgs;\n\nexport type MediatorRdfUpdateQuads = Mediate;\n","import { deskolemizeQuad } from '@comunica/actor-context-preprocess-query-source-skolemize';\nimport { KeysQuerySourceIdentify, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { IActionRdfUpdateQuads, IActorRdfUpdateQuadsOutput } from './ActorRdfUpdateQuads';\nimport { ActorRdfUpdateQuads } from './ActorRdfUpdateQuads';\nimport type { IQuadDestination } from './IQuadDestination';\n\nexport function deskolemizeStream(stream: AsyncIterator | undefined, id: string):\nAsyncIterator | undefined {\n return stream?.map(quad => deskolemizeQuad(quad, id));\n}\n\nexport function deskolemize(action: IActionRdfUpdateQuads): IActionRdfUpdateQuads {\n const destination = action.context.get(KeysRdfUpdateQuads.destination);\n const id = action.context.get>(KeysQuerySourceIdentify.sourceIds)?.get(destination);\n if (!id) {\n return action;\n }\n return {\n ...action,\n quadStreamInsert: deskolemizeStream(action.quadStreamInsert, id),\n quadStreamDelete: deskolemizeStream(action.quadStreamDelete, id),\n };\n}\n\n/**\n * A base implementation for rdf-update-quads events\n * that wraps around an {@link IQuadDestination}.\n *\n * @see IQuadDestination\n */\nexport abstract class ActorRdfUpdateQuadsDestination extends ActorRdfUpdateQuads {\n public async test(_action: IActionRdfUpdateQuads): Promise {\n return true;\n }\n\n public async run(action: IActionRdfUpdateQuads): Promise {\n const destination = await this.getDestination(action.context);\n return await this.getOutput(destination, deskolemize(action));\n }\n\n /**\n * Get the output of the given action on a destination.\n * @param {IQuadDestination} destination A quad destination, possibly lazy.\n * @param {IActionRdfUpdateQuads} action The action.\n */\n protected async getOutput(\n destination: IQuadDestination,\n action: IActionRdfUpdateQuads,\n ): Promise {\n const execute = async(): Promise => {\n await (action.quadStreamDelete ? destination.delete(action.quadStreamDelete) : Promise.resolve());\n await (action.deleteGraphs ?\n destination.deleteGraphs(\n action.deleteGraphs.graphs,\n action.deleteGraphs.requireExistence,\n action.deleteGraphs.dropGraphs,\n ) :\n Promise.resolve());\n await (action.createGraphs ?\n destination.createGraphs(action.createGraphs.graphs, action.createGraphs.requireNonExistence) :\n Promise.resolve());\n await (action.quadStreamInsert ? destination.insert(action.quadStreamInsert) : Promise.resolve());\n };\n return { execute };\n }\n\n /**\n * Get a destination instance for the given context.\n * @param {ActionContext} context Optional context data.\n * @return {Promise} A promise that resolves to a destination.\n */\n protected abstract getDestination(context: IActionContext): Promise;\n}\n","import { ActionContextKey, CONTEXT_KEY_LOGGER } from '@comunica/core';\nimport type {\n Bindings,\n IPhysicalQueryPlanLogger,\n QueryExplainMode,\n IProxyHandler,\n ICliArgsHandler,\n IDataDestination,\n MetadataBindings,\n FunctionArgumentsCache,\n IAggregatedStore,\n QuerySourceUnidentified,\n IQuerySourceWrapper,\n QuerySourceReference,\n IStatisticBase,\n IDiscoverEventData,\n ILink,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { IDocumentLoader } from 'jsonld-context-parser';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * When adding entries to this file, also add a shortcut for them in the contextKeyShortcuts TSDoc comment in\n * ActorInitQueryBase in @comunica/actor-init-query if it makes sense to use this entry externally.\n * Also, add this shortcut to IQueryContextCommon in @comunica/types.\n */\n\nexport const KeysCore = {\n // We create the core context keys in @comunica/core to avoid a cyclic dependency\n /**\n * A logger instance.\n */\n log: CONTEXT_KEY_LOGGER,\n};\n\nexport const KeysHttp = {\n /**\n * Include credentials flags.\n */\n includeCredentials: new ActionContextKey('@comunica/bus-http:include-credentials'),\n /**\n * Authentication for a source as a \"username:password\"-pair.\n */\n auth: new ActionContextKey('@comunica/bus-http:auth'),\n /**\n * Fetch function implementation.\n */\n fetch: new ActionContextKey('@comunica/bus-http:fetch'),\n /**\n * HTTP request timeout in milliseconds.\n */\n httpTimeout: new ActionContextKey('@comunica/bus-http:http-timeout'),\n /**\n * Makes the HTTP timeout not only apply until the response starts streaming in\n * but until the response is fully consumed.\n */\n httpBodyTimeout: new ActionContextKey('@comunica/bus-http:http-body-timeout'),\n /**\n * Number of retries to make on failed network calls. This only takes effect\n * on errors thrown during the initial fetch() call and not while streaming the body.\n */\n httpRetryCount: new ActionContextKey('@comunica/bus-http:http-retry-count'),\n /**\n * Delay in milliseconds to wait between fetch retries. Requires httpRetryCount to be set.\n */\n httpRetryDelay: new ActionContextKey('@comunica/bus-http:http-retry-delay'),\n /**\n * Retry fetch, if server replies with a 5xx error response. Requires httpRetryCount to be set.\n */\n httpRetryOnServerError: new ActionContextKey('@comunica/bus-http:http-retry-on-server-error'),\n};\n\nexport const KeysHttpWayback = {\n /**\n * Use the WayBack machine to get the most recent representation of a file if a link is broken.\n * @default false\n */\n recoverBrokenLinks: new ActionContextKey('@comunica/bus-http:recover-broken-links'),\n};\n\nexport const KeysHttpMemento = {\n /**\n * The desired datetime for Memento datetime-negotiation.\n */\n datetime: new ActionContextKey('@comunica/actor-http-memento:datetime'),\n};\n\nexport const KeysHttpProxy = {\n /**\n * Interface.\n */\n httpProxyHandler: new ActionContextKey('@comunica/actor-http-proxy:httpProxyHandler'),\n};\n\nexport const KeysInitQuery = {\n /**\n * The unidentified sources to query over.\n */\n querySourcesUnidentified: new ActionContextKey(\n '@comunica/actor-init-query:querySourcesUnidentified',\n ),\n /**\n * Variables that have to be pre-bound to values in the query.\n */\n initialBindings: new ActionContextKey('@comunica/actor-init-query:initialBindings'),\n /**\n * The provided query's format.\n * Defaults to { language: 'sparql', version: '1.1' }\n */\n queryFormat: new ActionContextKey('@comunica/actor-init-query:queryFormat'),\n /**\n * Which GraphQL bindings should be singularized.\n */\n graphqlSingularizeVariables: new ActionContextKey('@comunica/actor-init-query:singularizeVariables'),\n /**\n * If HTTP and parsing failures are ignored.\n */\n lenient: new ActionContextKey('@comunica/actor-init-query:lenient'),\n /**\n * The original query string.\n */\n queryString: new ActionContextKey('@comunica/actor-init-query:queryString'),\n /**\n * The original parsed query.\n */\n query: new ActionContextKey('@comunica/actor-init-query:query'),\n /**\n * The query's base IRI.\n */\n baseIRI: new ActionContextKey('@comunica/actor-init-query:baseIRI'),\n /**\n * Object to cache function argument overload resolutions.\n * Defaults to an object that is reused across query executions.\n */\n functionArgumentsCache: new ActionContextKey(\n '@comunica/actor-init-query:functionArgumentsCache',\n ),\n /**\n * A timestamp representing the current time.\n * This is required for certain SPARQL operations such as NOW().\n */\n queryTimestamp: new ActionContextKey('@comunica/actor-init-query:queryTimestamp'),\n /**\n * @range {functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined}\n * Extension function creator for a given function IRI.\n * Returned value should be an async function implementation.\n * Undefined may be returned if no implementation exists for the given function IRI.\n *\n * The dictionary-based extensionFunctions context entry may be used instead, but not simultaneously.\n */\n extensionFunctionCreator: new ActionContextKey<\n (functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined\n >('@comunica/actor-init-query:extensionFunctionCreator'),\n /**\n * Dictionary of extension functions.\n * Key is the IRI of the function, and value is the async function implementation.\n *\n * The callback-based extensionFunctionCreator context entry may be used instead, but not simultaneously.\n */\n extensionFunctions: new ActionContextKey<\n Record Promise>\n >('@comunica/actor-init-query:extensionFunctions'),\n /**\n * Enables manipulation of the CLI arguments and their processing.\n */\n cliArgsHandlers: new ActionContextKey('@comunica/actor-init-query:cliArgsHandlers'),\n /**\n * Explain mode of the query. Can be 'parsed', 'logical', 'physical', or 'physical-json'.\n */\n explain: new ActionContextKey('@comunica/actor-init-query:explain'),\n /**\n * Logs the used physical operators\n */\n physicalQueryPlanLogger: new ActionContextKey(\n '@comunica/actor-init-query:physicalQueryPlanLogger',\n ),\n /**\n * The current physical operator within the query plan.\n * This is used to pass parent-child relationships for invoking the query plan logger.\n */\n physicalQueryPlanNode: new ActionContextKey('@comunica/actor-init-query:physicalQueryPlanNode'),\n /**\n * A JSON-LD context\n */\n jsonLdContext: new ActionContextKey('@context'),\n /**\n * A boolean value denoting whether caching is disabled or not.\n */\n noCache: new ActionContextKey('@comunica/actor-init-query:noCache'),\n /**\n * A boolean value denoting whether results should be deduplicated or not.\n */\n distinctConstruct: new ActionContextKey('@comunica/actor-init-query:distinctConstruct'),\n};\n\nexport const KeysQueryOperation = {\n /**\n * Context entry for the current query operation.\n */\n operation: new ActionContextKey('@comunica/bus-query-operation:operation'),\n /**\n * @type {any} The metadata from the left streams within a join operation.\n */\n joinLeftMetadata: new ActionContextKey('@comunica/bus-query-operation:joinLeftMetadata'),\n /**\n * An array of metadata from the right streams within a join operation.\n */\n joinRightMetadatas: new ActionContextKey('@comunica/bus-query-operation:joinRightMetadatas'),\n /**\n * Indicates the bindings that were used to bind the operation.\n */\n joinBindings: new ActionContextKey('@comunica/bus-query-operation:joinBindings'),\n /**\n * Flag for indicating that only read operations are allowed, defaults to false.\n */\n readOnly: new ActionContextKey('@comunica/bus-query-operation:readOnly'),\n /**\n * An internal context entry to mark that a property path with arbitrary length and a distinct key is being processed.\n */\n isPathArbitraryLengthDistinctKey: new ActionContextKey(\n '@comunica/bus-query-operation:isPathArbitraryLengthDistinct',\n ),\n /**\n * An indicator that the stream will be limited to the given number of elements afterwards.\n */\n limitIndicator: new ActionContextKey('@comunica/bus-query-operation:limitIndicator'),\n /**\n * If the default graph should also contain the union of all named graphs.\n */\n unionDefaultGraph: new ActionContextKey('@comunica/bus-query-operation:unionDefaultGraph'),\n /**\n * The sources to query over.\n */\n querySources: new ActionContextKey('@comunica/bus-query-operation:querySources'),\n};\n\nexport const KeysRdfParseJsonLd = {\n /**\n * @range {IDocumentLoader}\n */\n documentLoader: new ActionContextKey('@comunica/actor-rdf-parse-jsonld:documentLoader'),\n /**\n * @range {boolean}\n */\n strictValues: new ActionContextKey('@comunica/actor-rdf-parse-jsonld:strictValues'),\n /**\n * @range {Record}\n */\n parserOptions: new ActionContextKey>('@comunica/actor-rdf-parse-jsonld:parserOptions'),\n};\n\nexport const KeysRdfParseHtmlScript = {\n /**\n * An internal context flag to determine if the engine is already processing an HTML script tag.\n */\n processingHtmlScript: new ActionContextKey('@comunica/actor-rdf-parse-html-script:processingHtmlScript'),\n /**\n * If all HTML script tags must be considered.\n */\n extractAllScripts: new ActionContextKey('extractAllScripts'),\n};\n\nexport const KeysQuerySourceIdentify = {\n /**\n * A map containing unique IDs for each source\n */\n sourceIds: new ActionContextKey>(\n '@comunica/bus-query-source-identify:sourceIds',\n ),\n /**\n * Hypermedia sources mapping to their aggregated store.\n */\n hypermediaSourcesAggregatedStores: new ActionContextKey>(\n '@comunica/bus-query-source-identify:hypermediaSourcesAggregatedStores',\n ),\n /**\n * If links may be traversed from this source.\n * This means that sources annotated with this flag are considered incomplete until all links have been traversed.\n */\n traverse: new ActionContextKey('@comunica/bus-query-source-identify:traverse'),\n};\n\nexport const KeysRdfUpdateQuads = {\n /**\n * A data destination.\n */\n destination: new ActionContextKey('@comunica/bus-rdf-update-quads:destination'),\n};\n\nexport const KeysMergeBindingsContext = {\n /**\n * The data sources required to produce the binding\n */\n sourcesBinding: new ActionContextKey('@comunica/bus-merge-bindings-context:sourcesBinding'),\n};\n\nexport const KeysRdfJoin = {\n /**\n * The last physical join actor that was executed.\n */\n lastPhysicalJoin: new ActionContextKey('@comunica/bus-rdf-join:lastPhysicalJoin'),\n};\n\nexport const KeysStatistics = {\n /**\n * All discovered links during query execution. Not all of them will necessarily be dereferenced.\n */\n discoveredLinks: new ActionContextKey>(\n '@comunica/bus-context-preprocess:discoveredLinks',\n ),\n /**\n * Information about what links are dereferenced and when\n */\n dereferencedLinks: new ActionContextKey>(\n '@comunica/bus-context-preprocess:dereferencedLinks',\n ),\n};\n","import type { IActionContext, IActionContextKey } from '@comunica/types';\nimport { Map } from 'immutable';\n\n/**\n * Implementation of {@link IActionContext} using Immutable.js.\n */\nexport class ActionContext implements IActionContext {\n private readonly map: Map;\n\n public constructor(data: Record = {}) {\n this.map = Map(data);\n }\n\n /**\n * Will only set the value if the key is not already set.\n */\n public setDefault(key: IActionContextKey, value: V): IActionContext {\n return this.has(key) ? this : this.set(key, value);\n }\n\n public set(key: IActionContextKey, value: V): IActionContext {\n return this.setRaw(key.name, value);\n }\n\n public setRaw(key: string, value: any): IActionContext {\n return new ActionContext(this.map.set(key, value));\n }\n\n public delete(key: IActionContextKey): IActionContext {\n return new ActionContext(this.map.delete(key.name));\n }\n\n public get(key: IActionContextKey): V | undefined {\n return this.getRaw(key.name);\n }\n\n public getRaw(key: string): any | undefined {\n return this.map.get(key);\n }\n\n public getSafe(key: IActionContextKey): V {\n if (!this.has(key)) {\n throw new Error(`Context entry ${key.name} is required but not available`);\n }\n return this.get(key);\n }\n\n public has(key: IActionContextKey): boolean {\n return this.hasRaw(key.name);\n }\n\n public hasRaw(key: string): boolean {\n return this.map.has(key);\n }\n\n public merge(...contexts: IActionContext[]): IActionContext {\n // eslint-disable-next-line ts/no-this-alias\n let context: IActionContext = this;\n for (const source of contexts) {\n for (const key of source.keys()) {\n context = context.set(key, source.get(key));\n }\n }\n return context;\n }\n\n public keys(): IActionContextKey[] {\n return [ ... this.map.keys() ]\n .map(keyName => new ActionContextKey(keyName));\n }\n\n public toJS(): any {\n return this.map.toJS();\n }\n\n public toString(): string {\n return `ActionContext(${JSON.stringify(this.map.toJS())})`;\n }\n\n public [Symbol.for('nodejs.util.inspect.custom')](): string {\n return `ActionContext(${JSON.stringify(this.map.toJS(), null, ' ')})`;\n }\n\n /**\n * Convert the given object to an action context object if it is not an action context object yet.\n * If it already is an action context object, return the object as-is.\n * @param maybeActionContext An action context or record.\n * @return {ActionContext} An action context object.\n */\n public static ensureActionContext(maybeActionContext?: IActionContext | Record): IActionContext {\n return maybeActionContext instanceof ActionContext ?\n maybeActionContext :\n new ActionContext(Map(maybeActionContext ?? {}));\n }\n}\n\n/**\n * Simple implementation of {@link IActionContextKey}.\n */\nexport class ActionContextKey implements IActionContextKey {\n /**\n * A unique context key name.\n */\n public readonly name: string;\n\n public constructor(name: string) {\n this.name = name;\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { Bus } from './Bus';\n\n/**\n * An ActionObserver can passively listen to {@link Actor#run} inputs and outputs for all actors on a certain bus.\n *\n * ActionObserver should not edit inputs and outputs,\n * they should be considered immutable.\n *\n * @see Actor\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class ActionObserver {\n public readonly name: string;\n public readonly bus: Bus, I, IActorTest, O>;\n\n /**\n * All enumerable properties from the `args` object are inherited to this observer.\n *\n * The observer will NOT automatically subscribe to the given bus when this constructor is called.\n *\n * @param {IActionObserverArgs} args Arguments object\n * @throws When required arguments are missing.\n */\n protected constructor(args: IActionObserverArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n public abstract onRun(actor: Actor, action: I, output: Promise): void;\n}\n\nexport interface IActionObserverArgs {\n\n /**\n * The name for this observer.\n * @default {}\n */\n name: string;\n\n /**\n * The bus this observer can subscribe to.\n */\n bus: Bus, I, IActorTest, O>;\n}\n","import type { IActionContext, Logger } from '@comunica/types';\nimport type { Bus } from './Bus';\nimport { CONTEXT_KEY_LOGGER } from './ContextEntries';\n\n/**\n * An actor can act on messages of certain types and provide output of a certain type.\n *\n * The flow of an actor is as follows:\n * 1. Send a message to {@link Actor#test} to test if an actor can run that action.\n * 2. If the actor can reply to the message, let the actor run the action using {@link Actor#run}.\n *\n * An actor is typically subscribed to a bus,\n * using which the applicability to an action can be tested.\n *\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class Actor implements\n IActorArgs {\n public readonly name: string;\n public readonly bus: Bus, I, T, O>;\n public readonly beforeActors: Actor[] = [];\n\n /**\n * All enumerable properties from the `args` object are inherited to this actor.\n *\n * The actor will subscribe to the given bus when this constructor is called.\n *\n * @param {IActorArgs} args Arguments object\n * @param {string} args.name The name for this actor.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this actor subscribes to.\n * @throws When required arguments are missing.\n */\n protected constructor(args: IActorArgs) {\n Object.assign(this, args);\n this.bus.subscribe(this);\n if (this.beforeActors.length > 0) {\n this.bus.addDependencies(this, this.beforeActors);\n }\n }\n\n /**\n * Get the logger from the given context.\n * @param {ActionContext} context An optional context.\n * @return {Logger} The logger or undefined.\n */\n public static getContextLogger(context: IActionContext): Logger | undefined {\n return context.get(CONTEXT_KEY_LOGGER);\n }\n\n /**\n * Check if this actor can run the given action,\n * without actually running it.\n *\n * @param {I} action The action to test.\n * @return {Promise} A promise that resolves to the test result.\n */\n public abstract test(action: I): Promise;\n\n /**\n * Run the given action on this actor.\n *\n * In most cases, this method should not be called directly.\n * Instead, {@link #runObservable} should be called.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n public abstract run(action: I): Promise;\n\n /**\n * Run the given action on this actor\n * AND invokes the {@link Bus#onRun} method.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n public runObservable(action: I): Promise {\n const output: Promise = this.run(action);\n this.bus.onRun(this, action, output);\n return output;\n }\n\n /**\n * Initialize this actor.\n * This should be used for doing things that take a while,\n * such as opening files.\n *\n * @return {Promise} A promise that resolves when the actor has been initialized.\n */\n public async initialize(): Promise {\n return true;\n }\n\n /**\n * Deinitialize this actor.\n * This should be used for cleaning up things when the application is shut down,\n * such as closing files and removing temporary files.\n *\n * @return {Promise} A promise that resolves when the actor has been deinitialized.\n */\n public async deinitialize(): Promise {\n return true;\n }\n\n /* Proxy methods for the (optional) logger that is defined in the context */\n\n protected getDefaultLogData(context: IActionContext, data?: (() => any)): any {\n const dataActual = data ? data() : {};\n dataActual.actor = this.name;\n return dataActual;\n }\n\n protected logTrace(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.trace(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logDebug(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.debug(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logInfo(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.info(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logWarn(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.warn(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logError(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.error(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logFatal(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.fatal(message, this.getDefaultLogData(context, data));\n }\n }\n}\n\nexport interface IActorArgs {\n /**\n * The name for this actor.\n * @default {}\n */\n name: string;\n /**\n * The bus this actor subscribes to.\n */\n bus: Bus, I, T, O>;\n /**\n * Actor that must be registered in the bus before this actor.\n */\n beforeActors?: Actor[];\n}\n\n/**\n * Data interface for the type of action.\n */\nexport interface IAction {\n /**\n * The input context that is passed through by actors.\n */\n context: IActionContext;\n}\n\n/**\n * Data interface for the type of an actor test result.\n */\nexport interface IActorTest {\n\n}\n\n/**\n * Data interface for the type of an actor run result.\n */\nexport interface IActorOutput {\n\n}\n","import type { ActionObserver } from './ActionObserver';\nimport type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\n\n/**\n * A publish-subscribe bus for sending actions to actors\n * to test whether or not they can run an action.\n *\n * This bus does not run the action itself,\n * for that a {@link Mediator} can be used.\n *\n * @see Actor\n * @see Mediator\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport class Bus, I extends IAction, T extends IActorTest, O extends IActorOutput> implements\n IBusArgs {\n public readonly name: string;\n protected readonly actors: A[] = [];\n protected readonly observers: ActionObserver[] = [];\n // Mapping from dependency (after) to dependents (before)\n protected readonly dependencyLinks: Map = new Map();\n\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n public constructor(args: IBusArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Subscribe the given actor to the bus.\n * After this, the given actor can be unsubscribed from the bus by calling {@link Bus#unsubscribe}.\n *\n * An actor that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {A} actor The actor to subscribe.\n */\n public subscribe(actor: A): void {\n this.actors.push(actor);\n this.reorderForDependencies();\n }\n\n /**\n * Subscribe the given observer to the bus.\n * After this, the given observer can be unsubscribed from the bus by calling {@link Bus#unsubscribeObserver}.\n *\n * An observer that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {ActionObserver} observer The observer to subscribe.\n */\n public subscribeObserver(observer: ActionObserver): void {\n this.observers.push(observer);\n }\n\n /**\n * Unsubscribe the given actor from the bus.\n *\n * An actor that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {A} actor The actor to unsubscribe\n * @return {boolean} If the given actor was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n public unsubscribe(actor: A): boolean {\n const index: number = this.actors.indexOf(actor);\n if (index >= 0) {\n this.actors.splice(index, 1);\n return true;\n }\n return false;\n }\n\n /**\n * Unsubscribe the given observer from the bus.\n *\n * An observer that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {ActionObserver} observer The observer to unsubscribe.\n * @return {boolean} If the given observer was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n public unsubscribeObserver(observer: ActionObserver): boolean {\n const index: number = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n return true;\n }\n return false;\n }\n\n /**\n * Publish an action to all actors in the bus to test if they can run the action.\n *\n * @param {I} action An action to publish\n * @return {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]}\n * An array of reply objects. Each object contains a reference to the actor,\n * and a promise to its {@link Actor#test} result.\n */\n public publish(action: I): IActorReply[] {\n return this.actors.map((actor: A): IActorReply => ({ actor, reply: actor.test(action) }));\n }\n\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n public onRun(actor: Actor, action: I, output: Promise): void {\n for (const observer of this.observers) {\n observer.onRun(actor, action, output);\n }\n }\n\n /**\n * Indicate that the given actor has the given actor dependencies.\n *\n * This will ensure that the given actor will be present in the bus *before* the given dependencies.\n *\n * @param {A} dependent A dependent actor that will be placed before the given actors.\n * @param {A[]} dependencies Actor dependencies that will be placed after the given actor.\n */\n public addDependencies(dependent: A, dependencies: A[]): void {\n for (const dependency of dependencies) {\n let existingDependencies = this.dependencyLinks.get(dependency);\n if (!existingDependencies) {\n existingDependencies = [];\n this.dependencyLinks.set(dependency, existingDependencies);\n }\n existingDependencies.push(dependent);\n }\n this.reorderForDependencies();\n }\n\n /**\n * Reorder the bus based on all present dependencies.\n */\n public reorderForDependencies(): void {\n if (this.dependencyLinks.size > 0) {\n const actorsAfter = [];\n\n // Temporarily remove all actors that have dependencies\n for (const actorAfter of this.dependencyLinks.keys()) {\n const dependentPos = this.actors.indexOf(actorAfter);\n if (dependentPos >= 0) {\n this.actors.splice(dependentPos, 1);\n actorsAfter.push(actorAfter);\n }\n }\n\n // Iteratively append actors based on the first dependency link\n // that has all of its dependencies available in the array\n while (actorsAfter.length > 0) {\n // Find the first actor that has all of its dependencies available.\n let activeActorAfterId = -1;\n for (let i = 0; i < actorsAfter.length; i++) {\n let validLink = true;\n for (const dependency of this.dependencyLinks.get(actorsAfter[i])!) {\n if (!this.actors.includes(dependency) && actorsAfter.includes(dependency)) {\n validLink = false;\n break;\n }\n }\n if (validLink) {\n activeActorAfterId = i;\n break;\n }\n }\n\n // If none of the pending links are possible, there must be a cyclic dependency\n if (activeActorAfterId < 0) {\n throw new Error(`Cyclic dependency links detected in bus ${this.name}`);\n }\n\n // The dependent may not be available (yet), so we don't add it to the array (yet).\n const activeActorAfter = actorsAfter.splice(activeActorAfterId, 1)[0];\n this.actors.push(activeActorAfter);\n }\n }\n }\n}\n\nexport interface IBusArgs {\n /**\n * The name for this bus.\n * @default {}\n */\n name: string;\n}\n\n/**\n * Data interface for holding an actor and a promise to a reply from that actor.\n */\nexport interface IActorReply<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> {\n actor: A;\n reply: Promise;\n}\n\nexport type IReply<\n I extends IAction = IAction,\n O extends IActorOutput = IActorOutput,\n T extends IActorTest = IActorTest,\n> = IActorReply, I, T, O>;\n\nexport type IBus\n= Bus, I, T, O>;\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { IActorReply, IBusArgs } from './Bus';\nimport { Bus } from './Bus';\n\n/**\n * A bus that indexes identified actors,\n * so that actions with a corresponding identifier can be published more efficiently.\n *\n * Multiple actors with the same identifier can be subscribed.\n *\n * If actors or actions do not have a valid identifier,\n * then this will fallback to the normal bus behaviour.\n *\n * @see Bus\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport class BusIndexed, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Bus {\n protected readonly actorsIndex: Record = {};\n protected readonly actorIdentifierFields: string[];\n protected readonly actionIdentifierFields: string[];\n\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusIndexedArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n public constructor(args: IBusIndexedArgs) {\n super(args);\n }\n\n public override subscribe(actor: A): void {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n let actors = this.actorsIndex[actorId];\n if (!actors) {\n actors = this.actorsIndex[actorId] = [];\n }\n actors.push(actor);\n super.subscribe(actor);\n }\n\n public override unsubscribe(actor: A): boolean {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n const actors = this.actorsIndex[actorId];\n if (actors) {\n const i = actors.indexOf(actor);\n if (i >= 0) {\n actors.splice(i, 1);\n }\n if (actors.length === 0) {\n delete this.actorsIndex[actorId];\n }\n }\n return super.unsubscribe(actor);\n }\n\n public override publish(action: I): IActorReply[] {\n const actionId = this.getActionIdentifier(action);\n if (actionId) {\n const actors = [ ...this.actorsIndex[actionId] || [], ...this.actorsIndex._undefined_ || [] ];\n return actors.map((actor: A): IActorReply => ({ actor, reply: actor.test(action) }));\n }\n return super.publish(action);\n }\n\n protected getActorIdentifier(actor: A): string {\n return this.actorIdentifierFields.reduce((object: any, field): A => object[field], actor);\n }\n\n protected getActionIdentifier(action: I): string {\n return this.actionIdentifierFields.reduce((object: any, field): A => object[field], action);\n }\n}\n\nexport interface IBusIndexedArgs extends IBusArgs {\n actorIdentifierFields: string[];\n actionIdentifierFields: string[];\n}\n","import type { Logger } from '@comunica/types';\nimport { ActionContextKey } from './ActionContext';\n\nexport const CONTEXT_KEY_LOGGER = new ActionContextKey('@comunica/core:log');\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { Bus, IActorReply } from './Bus';\n\n/**\n * A mediator can mediate an action over a bus of actors.\n *\n * It does the following:\n * 1. Accepts an action in {@link Mediator#mediate}.\n * 2. Sends the action to the bus to test its applicability on all actors.\n * 3. It _mediates_ over these test results.\n * 4. It selects the _best_ actor.\n * 5. The action is run by the _best_ actor, and the result if returned.\n *\n * The _mediates_ and _best_ parts are filled in by subclasses of this abstract Mediator class.\n *\n * @template A The type of actor to mediator over.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class Mediator<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> implements IMediatorArgs {\n public readonly name: string;\n public readonly bus: Bus;\n\n /**\n * All enumerable properties from the `args` object are inherited to this mediator.\n *\n * @param {IMediatorArgs, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>} args Arguments object\n * @param {string} args.name The name for this mediator.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this mediator will mediate over.\n * @throws When required arguments are missing.\n */\n protected constructor(args: IMediatorArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Publish the given action in the bus.\n *\n * This will send the test action on all actors in the bus.\n * All actor replies will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {IActorReply, I extends IAction, T extends IActorTest, O extends IActorOutput>[]}\n * The list of actor replies.\n */\n public publish(action: I): IActorReply[] {\n // Test all actors in the bus\n const actors: IActorReply[] = this.bus.publish(action);\n if (actors.length === 0) {\n throw new Error(`No actors are able to reply to a message in the bus ${this.bus.name}`);\n }\n return actors;\n }\n\n /**\n * Mediate for the given action to get an actor.\n *\n * This will send the test action on all actors in the bus.\n * The actor that tests _best_ will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the _best_ actor.\n */\n public async mediateActor(action: I): Promise {\n // Mediate to one actor and run that actor.\n return await this.mediateWith(action, this.publish(action));\n }\n\n /**\n * Mediate for the given action.\n *\n * This will send the test action on all actors in the bus.\n * The action will be run on the actor that tests _best_,\n * of which the result will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the mediation result.\n */\n public async mediate(action: I): Promise {\n // Mediate to one actor and run the action on it\n const actor: A = await this.mediateActor(action);\n return actor.runObservable(action);\n }\n\n /**\n * Mediate for the given action with the given actor test results for the action.\n *\n * One actor must be returned that provided the _best_ test result.\n * How '_best_' is interpreted, depends on the implementation of the Mediator.\n *\n * @param {I} action The action to mediate for.\n * @param {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]} testResults The actor test results for the action.\n * @return {Promise>} A promise that resolves to the _best_ actor.\n */\n protected abstract mediateWith(action: I, testResults: IActorReply[]): Promise;\n}\n\nexport interface IMediatorArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> {\n /**\n * The name for this mediator.\n * @default {}\n */\n name: string;\n /**\n * The bus this mediator will mediate over.\n */\n bus: Bus;\n}\n\nexport type Mediate =\nMediator, I, T, O>;\n","import type * as RDF from '@rdfjs/types';\n\n/**\n * A blank node that is scoped to a set of bindings.\n */\nexport class BlankNodeBindingsScoped implements RDF.BlankNode {\n public readonly termType = 'BlankNode';\n public readonly singleBindingsScope = true;\n public readonly value: string;\n\n public constructor(value: string) {\n this.value = value;\n }\n\n public equals(other: RDF.Term | null | undefined): boolean {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\n","import type * as RDF from '@rdfjs/types';\n\n/**\n * A blank node that is scoped to a certain source.\n */\nexport class BlankNodeScoped implements RDF.BlankNode {\n public readonly termType = 'BlankNode';\n public readonly value: string;\n /**\n * This value can be obtained by consumers in query results,\n * so that this can be passed into another query as an IRI,\n * in order to obtain more results relating to this (blank) node.\n */\n public readonly skolemized: RDF.NamedNode;\n\n public constructor(value: string, skolemized: RDF.NamedNode) {\n this.value = value;\n this.skolemized = skolemized;\n }\n\n public equals(other: RDF.Term | null | undefined): boolean {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RdfString from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport type { ITermTransformer } from '../transformers/TermTransformer';\nimport { TypeAlias } from '../util/Consts';\nimport { isSubTypeOf } from '../util/TypeHandling';\nimport type { IAggregatorComponentClass } from '.';\n\nexport abstract class AggregatorComponent {\n public abstract put(bindings: RDF.Term | undefined): void;\n public abstract result(): RDF.Term | undefined;\n\n protected separator: string;\n protected termTransformer: ITermTransformer;\n\n public static emptyValue(): RDF.Term | undefined {\n return undefined;\n }\n\n public constructor(expr: Algebra.AggregateExpression, protected sharedContext: ICompleteSharedContext) {\n this.separator = expr.separator || ' ';\n this.termTransformer = new TermTransformer(sharedContext.superTypeProvider);\n }\n\n protected termToNumericOrError(term: RDF.Term): E.NumericLiteral {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a numeric literal`);\n } else if (\n !isSubTypeOf(term.datatype.value, TypeAlias.SPARQL_NUMERIC, this.sharedContext.superTypeProvider)\n ) {\n throw new Error(`Term datatype ${term.datatype.value} with value ${term.value} has type ${term.termType} and is not a numeric literal`);\n }\n return this.termTransformer.transformLiteral(term);\n }\n}\n\n/**\n * A base aggregator that can handle distinct and possibly wildcards.\n */\nexport class Aggregator {\n protected distinct: boolean;\n protected variableValues: Map> = new Map();\n\n public constructor(expr: Algebra.AggregateExpression, protected aggregatorComponent: AggregatorComponent) {\n this.distinct = expr.distinct;\n }\n\n public static emptyValue(component: IAggregatorComponentClass): RDF.Term | undefined {\n return component.emptyValue();\n }\n\n public result(): RDF.Term | undefined {\n return this.aggregatorComponent.result();\n }\n\n public put(bindings: RDF.Term, variable = ''): void {\n if (!this.canSkip(bindings, variable)) {\n this.aggregatorComponent.put(bindings);\n this.addSeen(bindings, variable);\n }\n }\n\n private canSkip(term: RDF.Term, variable: string): boolean {\n const set = this.variableValues.get(variable);\n return this.distinct && set !== undefined && set.has(RdfString.termToString(term));\n }\n\n private addSeen(term: RDF.Term, variable: string): void {\n if (this.distinct) {\n if (!this.variableValues.has(variable)) {\n this.variableValues.set(variable, new Set());\n }\n this.variableValues.get(variable)!.add(RdfString.termToString(term));\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { integer } from '../functions/Helpers';\nimport * as C from '../util/Consts';\nimport { AggregatorComponent } from './Aggregator';\n\ninterface IAverageState {\n sum: E.NumericLiteral;\n count: number;\n}\n\nexport class Average extends AggregatorComponent {\n private readonly summer = regularFunctions[C.RegularOperator.ADDITION];\n private readonly divider = regularFunctions[C.RegularOperator.DIVISION];\n private state: IAverageState | undefined = undefined;\n\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n const sum = this.termToNumericOrError(term);\n this.state = { sum, count: 1 };\n } else {\n const internalTerm = this.termToNumericOrError(term);\n this.state.sum = this.summer.apply([ this.state.sum, internalTerm ], this.sharedContext);\n this.state.count++;\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Average.emptyValue();\n }\n const count = new E.IntegerLiteral(this.state.count);\n const result = this.divider.apply([ this.state.sum, count ], this.sharedContext);\n return result.toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { integer } from '../functions/Helpers';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Count extends AggregatorComponent {\n private state: number | undefined = undefined;\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(): void {\n if (this.state === undefined) {\n this.state = 0;\n }\n this.state++;\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Count.emptyValue();\n }\n return integer(this.state).toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { langString, string } from '../functions/Helpers';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class GroupConcat extends AggregatorComponent {\n private state: string | undefined = undefined;\n private lastLanguageValid = true;\n private lastLanguage: string | undefined = undefined;\n\n public static override emptyValue(): RDF.Term {\n return string('').toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n this.state = term.value;\n if (term.termType === 'Literal') {\n this.lastLanguage = term.language;\n }\n } else {\n this.state += this.separator + term.value;\n if (this.lastLanguageValid && term.termType === 'Literal' && this.lastLanguage !== term.language) {\n this.lastLanguageValid = false;\n this.lastLanguage = undefined;\n }\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return GroupConcat.emptyValue();\n }\n if (this.lastLanguageValid && this.lastLanguage) {\n return langString(this.state, this.lastLanguage).toRDF();\n }\n return string(this.state).toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { orderTypes } from '../util/Ordering';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Max extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a literal`);\n }\n if (this.state === undefined) {\n this.state = term;\n } else if (orderTypes(this.state, term) === -1) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Max.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { orderTypes } from '../util/Ordering';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Min extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a literal`);\n }\n if (this.state === undefined) {\n this.state = term;\n } else if (orderTypes(this.state, term) === 1) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Min.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Sample extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n // First value is our sample\n if (this.state === undefined) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Sample.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { integer } from '../functions/Helpers';\nimport * as C from '../util/Consts';\nimport { AggregatorComponent } from './Aggregator';\n\ntype SumState = E.NumericLiteral;\n\nexport class Sum extends AggregatorComponent {\n private state: SumState | undefined = undefined;\n private readonly summer = regularFunctions[C.RegularOperator.ADDITION];\n\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n this.state = this.termToNumericOrError(term);\n } else {\n const internalTerm = this.termToNumericOrError(term);\n this.state = this.summer.apply([ this.state, internalTerm ], this.sharedContext);\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Sum.emptyValue();\n }\n return this.state.toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RdfString from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { integer } from '../functions/Helpers';\n\n/**\n * Implementation of the COUNT aggregator on a wildcard.\n * We choose to make this is separate class, because it would pollute the code of the other aggregators.\n */\nexport class WildcardCountAggregator {\n private readonly distinct: boolean;\n\n // Key: string representation of a ',' separated list of terms.\n // Value: string representation of a ',' separated list of variables sorted by name.\n private readonly bindingValues: Map> = new Map();\n private counter = 0;\n\n public constructor(expr: Algebra.AggregateExpression) {\n this.distinct = expr.distinct;\n }\n\n public putBindings(bindings: RDF.Bindings): void {\n if (!this.handleDistinct(bindings)) {\n this.counter += 1;\n }\n }\n\n public static emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public result(): RDF.Term {\n return integer(this.counter).toRDF();\n }\n\n /**\n * Returns true if the given bindings should be skipped.\n * @param bindings\n * @private\n */\n private handleDistinct(bindings: RDF.Bindings): boolean {\n if (this.distinct) {\n const bindingList: [RDF.Variable, RDF.Term][] = [ ...bindings ];\n bindingList.sort((first, snd) => first[0].value.localeCompare(snd[0].value));\n const variables = bindingList.map(([ variable ]) => variable.value).join(',');\n const terms = bindingList.map(([ , term ]) => RdfString.termToString(term)).join(',');\n\n const set = this.bindingValues.get(variables);\n const result = set !== undefined && set.has(terms);\n\n // Add to the set:\n if (!set) {\n this.bindingValues.set(variables, new Set());\n }\n this.bindingValues.get(variables)!.add(terms);\n\n return result;\n }\n return false;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { BaseAggregateEvaluator } from './evaluatorHelpers/BaseAggregateEvaluator';\nimport type { ISyncEvaluatorContext } from './SyncEvaluator';\nimport { SyncEvaluator } from './SyncEvaluator';\n\n// TODO: Support hooks & change name to SyncAggregateEvaluator\nexport class AggregateEvaluator extends BaseAggregateEvaluator {\n private readonly evaluator: SyncEvaluator;\n\n public constructor(expr: Algebra.AggregateExpression, context?: ISyncEvaluatorContext, throwError?: boolean) {\n super(expr, SyncEvaluator.completeContext(context ?? {}), throwError);\n this.evaluator = new SyncEvaluator(expr.expression, context);\n }\n\n public put(bindings: RDF.Bindings): void {\n if (this.errorOccurred) {\n return;\n }\n if (this.isWildcard) {\n this.wildcardAggregator!.putBindings(bindings);\n } else {\n try {\n const startTerm = this.evaluator.evaluate(bindings);\n this.aggregator.put(startTerm);\n } catch (error: unknown) {\n this.safeThrow(error);\n }\n }\n }\n\n protected safeThrow(err: unknown): void {\n if (this.throwError) {\n throw err;\n } else {\n this.errorOccurred = true;\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { IAsyncEvaluatorContext } from './AsyncEvaluator';\nimport { AsyncEvaluator } from './AsyncEvaluator';\nimport { BaseAggregateEvaluator } from './evaluatorHelpers/BaseAggregateEvaluator';\n\nexport class AsyncAggregateEvaluator extends BaseAggregateEvaluator {\n private readonly evaluator: AsyncEvaluator;\n\n public constructor(expr: Algebra.AggregateExpression, context?: IAsyncEvaluatorContext, throwError?: boolean) {\n super(expr, AsyncEvaluator.completeContext(context ?? {}), throwError);\n this.evaluator = new AsyncEvaluator(expr.expression, context);\n this.errorOccurred = false;\n }\n\n public async put(bindings: RDF.Bindings): Promise {\n if (this.errorOccurred) {\n return;\n }\n if (this.isWildcard) {\n this.wildcardAggregator!.putBindings(bindings);\n } else {\n try {\n const startTerm = await this.evaluator.evaluate(bindings);\n if (!startTerm || this.errorOccurred) {\n return;\n }\n this.aggregator.put(startTerm);\n } catch (error: unknown) {\n this.safeThrow(error);\n }\n }\n }\n\n protected safeThrow(err: unknown): void {\n if (this.throwError) {\n throw err;\n } else {\n this.errorOccurred = true;\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport type * as E from '../expressions/Expressions';\nimport { AlgebraTransformer } from '../transformers/AlgebraTransformer';\nimport type { IExpressionEvaluator } from '../Types';\nimport { extractTimeZone } from '../util/DateTimeHelpers';\nimport type { ICompleteAsyncEvaluatorContext } from './evaluatorHelpers/AsyncRecursiveEvaluator';\nimport { AsyncRecursiveEvaluator } from './evaluatorHelpers/AsyncRecursiveEvaluator';\nimport type { ISharedContext } from './evaluatorHelpers/BaseExpressionEvaluator';\n\nexport type AsyncExtensionFunction = (args: RDF.Term[]) => Promise;\nexport type AsyncExtensionFunctionCreator = (functionNamedNode: RDF.NamedNode) => AsyncExtensionFunction | undefined;\n\nexport interface IAsyncEvaluatorContext extends ISharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => Promise;\n aggregate?: (expression: Alg.AggregateExpression) => Promise;\n bnode?: (input?: string) => Promise;\n extensionFunctionCreator?: AsyncExtensionFunctionCreator;\n}\n\nexport class AsyncEvaluator {\n private readonly expr: E.Expression;\n private readonly evaluator: IExpressionEvaluator>;\n\n public static completeContext(context: IAsyncEvaluatorContext): ICompleteAsyncEvaluatorContext {\n const now = context.now ?? new Date(Date.now());\n return {\n now,\n baseIRI: context.baseIRI ?? undefined,\n functionArgumentsCache: context.functionArgumentsCache ?? {},\n superTypeProvider: {\n cache: context.typeCache ?? new LRUCache({ max: 1_000 }),\n discoverer: context.getSuperType ?? (() => 'term'),\n },\n extensionFunctionCreator: context.extensionFunctionCreator,\n exists: context.exists,\n aggregate: context.aggregate,\n bnode: context.bnode,\n defaultTimeZone: context.defaultTimeZone ?? extractTimeZone(now),\n };\n }\n\n public constructor(public algExpr: Alg.Expression, context: IAsyncEvaluatorContext = {}) {\n // eslint-disable-next-line unicorn/no-useless-undefined\n const creator = context.extensionFunctionCreator ?? (() => undefined);\n const baseContext = AsyncEvaluator.completeContext(context);\n\n const transformer = new AlgebraTransformer({\n type: 'async',\n creator,\n ...baseContext,\n });\n this.expr = transformer.transformAlgebra(algExpr);\n\n this.evaluator = new AsyncRecursiveEvaluator(baseContext, transformer);\n }\n\n public async evaluate(mapping: RDF.Bindings): Promise {\n const result = await this.evaluator.evaluate(this.expr, mapping);\n return result.toRDF();\n }\n\n public async evaluateAsEBV(mapping: RDF.Bindings): Promise {\n const result = await this.evaluator.evaluate(this.expr, mapping);\n return result.coerceEBV();\n }\n\n public async evaluateAsInternal(mapping: RDF.Bindings): Promise {\n return await this.evaluator.evaluate(this.expr, mapping);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport type * as E from '../expressions/Expressions';\nimport { AlgebraTransformer } from '../transformers/AlgebraTransformer';\nimport type { IExpressionEvaluator } from '../Types';\nimport { extractTimeZone } from '../util/DateTimeHelpers';\nimport type { ISharedContext } from './evaluatorHelpers/BaseExpressionEvaluator';\nimport type { ICompleteSyncEvaluatorContext } from './evaluatorHelpers/SyncRecursiveEvaluator';\nimport { SyncRecursiveEvaluator } from './evaluatorHelpers/SyncRecursiveEvaluator';\n\nexport interface ISyncEvaluatorContext extends ISharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => boolean;\n aggregate?: (expression: Alg.AggregateExpression) => RDF.Term;\n bnode?: (input?: string) => RDF.BlankNode;\n extensionFunctionCreator?: SyncExtensionFunctionCreator;\n}\n\nexport type SyncExtensionFunction = (args: RDF.Term[]) => RDF.Term;\nexport type SyncExtensionFunctionCreator = (functionNamedNode: RDF.NamedNode) => SyncExtensionFunction | undefined;\n\nexport class SyncEvaluator {\n private readonly expr: E.Expression;\n private readonly evaluator: IExpressionEvaluator;\n\n public static completeContext(context: ISyncEvaluatorContext): ICompleteSyncEvaluatorContext {\n const now = context.now ?? new Date(Date.now());\n return {\n now,\n baseIRI: context.baseIRI ?? undefined,\n functionArgumentsCache: context.functionArgumentsCache ?? {},\n superTypeProvider: {\n cache: context.typeCache ?? new LRUCache({ max: 1_000 }),\n discoverer: context.getSuperType ?? (() => 'term'),\n },\n extensionFunctionCreator: context.extensionFunctionCreator,\n exists: context.exists,\n aggregate: context.aggregate,\n bnode: context.bnode,\n defaultTimeZone: context.defaultTimeZone ?? extractTimeZone(now),\n };\n }\n\n public constructor(public algExpr: Alg.Expression, public context: ISyncEvaluatorContext = {}) {\n // eslint-disable-next-line unicorn/no-useless-undefined\n const creator = context.extensionFunctionCreator ?? (() => undefined);\n const baseContext = SyncEvaluator.completeContext(context);\n\n const transformer = new AlgebraTransformer({\n type: 'sync',\n creator,\n ...baseContext,\n });\n this.expr = transformer.transformAlgebra(algExpr);\n\n this.evaluator = new SyncRecursiveEvaluator(baseContext, transformer);\n }\n\n public evaluate(mapping: RDF.Bindings): RDF.Term {\n const result = this.evaluator.evaluate(this.expr, mapping);\n return result.toRDF();\n }\n\n public evaluateAsEBV(mapping: RDF.Bindings): boolean {\n const result = this.evaluator.evaluate(this.expr, mapping);\n return result.coerceEBV();\n }\n\n public evaluateAsInternal(mapping: RDF.Bindings): E.TermExpression {\n return this.evaluator.evaluate(this.expr, mapping);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport * as E from '../../expressions';\nimport type { AsyncExtension } from '../../expressions';\nimport type { EvalContextAsync } from '../../functions';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport { TermTransformer } from '../../transformers/TermTransformer';\nimport type { IExpressionEvaluator } from '../../Types';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider } from '../../util/TypeHandling';\nimport type { AsyncExtensionFunctionCreator } from '../AsyncEvaluator';\nimport { BaseExpressionEvaluator } from './BaseExpressionEvaluator';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\n\nexport interface ICompleteAsyncEvaluatorContext extends ICompleteSharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => Promise;\n aggregate?: (expression: Alg.AggregateExpression) => Promise;\n bnode?: (input?: string) => Promise;\n extensionFunctionCreator?: AsyncExtensionFunctionCreator;\n}\n\nexport class AsyncRecursiveEvaluator extends BaseExpressionEvaluator\n implements IExpressionEvaluator> {\n protected openWorldType: ISuperTypeProvider;\n private readonly subEvaluators: Record\n Promise | E.Term> = {\n // Shared\n [E.ExpressionType.Term]: (expr, _mapping) => this.term( expr),\n [E.ExpressionType.Variable]: (expr, mapping) => this.variable( expr, mapping),\n\n // Sync\n [E.ExpressionType.Operator]: (expr, mapping) => this.evalOperator( expr, mapping),\n [E.ExpressionType.SpecialOperator]: (expr, mapping) => this\n .evalSpecialOperator( expr, mapping),\n [E.ExpressionType.Named]: (expr, mapping) => this.evalNamed( expr, mapping),\n [E.ExpressionType.Existence]: (expr, mapping) => this.evalExistence( expr, mapping),\n [E.ExpressionType.Aggregate]: (expr, _mapping) => this.evalAggregate( expr),\n [E.ExpressionType.AsyncExtension]: (expr, mapping) => this.evalAsyncExtension( expr, mapping),\n };\n\n public constructor(private readonly context: ICompleteAsyncEvaluatorContext, termTransformer?: ITermTransformer) {\n super(termTransformer ?? new TermTransformer(context.superTypeProvider));\n }\n\n public async evaluate(expr: E.Expression, mapping: RDF.Bindings): Promise {\n const evaluator = this.subEvaluators[expr.expressionType];\n if (!evaluator) {\n throw new Err.InvalidExpressionType(expr);\n }\n return evaluator.bind(this)(expr, mapping);\n }\n\n private async evalOperator(expr: E.Operator, mapping: RDF.Bindings): Promise {\n const argPromises = expr.args.map(arg => this.evaluate(arg, mapping));\n const argResults = await Promise.all(argPromises);\n return expr.apply(argResults);\n }\n\n private async evalSpecialOperator(expr: E.SpecialOperator, mapping: RDF.Bindings): Promise {\n const evaluate = this.evaluate.bind(this);\n const context: EvalContextAsync = {\n args: expr.args,\n mapping,\n\n superTypeProvider: this.context.superTypeProvider,\n now: this.context.now,\n baseIRI: this.context.baseIRI,\n functionArgumentsCache: this.context.functionArgumentsCache,\n\n evaluate,\n bnode: this.context.bnode,\n defaultTimeZone: this.context.defaultTimeZone,\n };\n return expr.applyAsync(context);\n }\n\n private async _evalAsyncArgs(args: E.Expression[], mapping: RDF.Bindings): Promise {\n const argPromises = args.map(arg => this.evaluate(arg, mapping));\n return await Promise.all(argPromises);\n }\n\n private async evalNamed(expr: E.Named, mapping: RDF.Bindings): Promise {\n return expr.apply(await this._evalAsyncArgs(expr.args, mapping));\n }\n\n private async evalAsyncExtension(expr: AsyncExtension, mapping: RDF.Bindings): Promise {\n return await expr.apply(await this._evalAsyncArgs(expr.args, mapping));\n }\n\n private async evalExistence(expr: E.Existence, mapping: RDF.Bindings): Promise {\n if (!this.context.exists) {\n throw new Err.NoExistenceHook();\n }\n\n return new E.BooleanLiteral(await this.context.exists(expr.expression, mapping));\n }\n\n // TODO: Remove?\n private async evalAggregate(expr: E.Aggregate): Promise {\n if (!this.context.aggregate) {\n throw new Err.NoAggregator();\n }\n\n return this.termTransformer.transformRDFTermUnsafe(await this.context.aggregate(expr.expression));\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { aggregators } from '../../aggregators';\nimport { Aggregator } from '../../aggregators/Aggregator';\nimport { WildcardCountAggregator } from '../../aggregators/WildcardCountAggregator';\nimport type { SetFunction } from '../../util/Consts';\nimport * as Err from '../../util/Errors';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\n\nexport abstract class BaseAggregateEvaluator {\n protected expression: Algebra.AggregateExpression;\n protected aggregator: Aggregator;\n protected throwError = false;\n protected isWildcard = false;\n protected wildcardAggregator: WildcardCountAggregator | undefined;\n protected errorOccurred = false;\n\n protected constructor(\n expr: Algebra.AggregateExpression,\n sharedContext: ICompleteSharedContext,\n throwError?: boolean,\n ) {\n this.expression = expr;\n this.aggregator = new Aggregator(expr, new aggregators[ expr.aggregator](expr, sharedContext));\n this.throwError = throwError ?? false;\n this.isWildcard = expr.expression.expressionType === Algebra.expressionTypes.WILDCARD;\n if (this.isWildcard) {\n this.wildcardAggregator = new WildcardCountAggregator(expr);\n }\n }\n\n /**\n * The spec says to throw an error when a set function is called on an empty\n * set (unless explicitly mentioned otherwise like COUNT).\n * However, aggregate error handling says to not bind the result in case of an\n * error. So to simplify logic in the caller, we return undefined by default.\n *\n * @param expr the aggregate expression\n * @param throwError whether this function should respect the spec and throw an error if no empty value is defined\n */\n public static emptyValue(expr: Algebra.AggregateExpression, throwError = false): RDF.Term | undefined {\n let val: RDF.Term | undefined;\n if (expr.expression.expressionType === Algebra.expressionTypes.WILDCARD) {\n val = WildcardCountAggregator.emptyValue();\n } else {\n val = Aggregator.emptyValue(aggregators[ expr.aggregator]);\n }\n if (val === undefined && throwError) {\n throw new Err.EmptyAggregateError();\n }\n return val;\n }\n\n public result(): RDF.Term | undefined {\n if (this.errorOccurred) {\n return undefined;\n }\n if (this.isWildcard) {\n return this.wildcardAggregator!.result();\n }\n return this.aggregator.result();\n }\n\n /**\n * Put a binding from the result stream in the aggregate state.\n *\n * If any binding evaluation errors, the corresponding aggregate variable should be unbound.\n * If this happens, calling @see result() will return @constant undefined\n *\n * @param bindings the bindings to pass to the expression\n */\n public abstract put(bindings: RDF.Bindings): void | Promise;\n\n protected abstract safeThrow(err: unknown): void;\n}\n","import type * as RDF from '@rdfjs/types';\nimport type * as E from '../../expressions';\nimport { expressionToVar } from '../../functions/Helpers';\nimport type { FunctionArgumentsCache } from '../../functions/OverloadTree';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport type { ITimeZoneRepresentation } from '../../util/DateTimeHelpers';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider, SuperTypeCallback, TypeCache } from '../../util/TypeHandling';\n\nexport interface ISharedContext {\n now?: Date;\n baseIRI?: string;\n typeCache?: TypeCache;\n getSuperType?: SuperTypeCallback;\n functionArgumentsCache?: FunctionArgumentsCache;\n defaultTimeZone?: ITimeZoneRepresentation;\n}\n\nexport interface ICompleteSharedContext {\n now: Date;\n baseIRI?: string;\n functionArgumentsCache: FunctionArgumentsCache;\n superTypeProvider: ISuperTypeProvider;\n defaultTimeZone: ITimeZoneRepresentation;\n}\n\nexport class BaseExpressionEvaluator {\n public constructor(protected readonly termTransformer: ITermTransformer) {}\n\n protected term(expr: E.Term): E.Term {\n return expr;\n }\n\n protected variable(expr: E.Variable, mapping: RDF.Bindings): E.Term {\n const term = mapping.get(expressionToVar(expr));\n if (!term) {\n throw new Err.UnboundVariableError(expr.name, mapping);\n }\n return this.termTransformer.transformRDFTermUnsafe(term);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport * as E from '../../expressions';\nimport type { SyncExtension } from '../../expressions';\nimport type { EvalContextSync } from '../../functions';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport { TermTransformer } from '../../transformers/TermTransformer';\nimport type { IExpressionEvaluator } from '../../Types';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider } from '../../util/TypeHandling';\nimport type { SyncExtensionFunctionCreator } from '../SyncEvaluator';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\nimport { BaseExpressionEvaluator } from './BaseExpressionEvaluator';\n\nexport interface ICompleteSyncEvaluatorContext extends ICompleteSharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => boolean;\n aggregate?: (expression: Alg.AggregateExpression) => RDF.Term;\n bnode?: (input?: string) => RDF.BlankNode;\n extensionFunctionCreator?: SyncExtensionFunctionCreator;\n}\n\nexport class SyncRecursiveEvaluator extends BaseExpressionEvaluator\n implements IExpressionEvaluator {\n protected openWorldType: ISuperTypeProvider;\n private readonly subEvaluators: Record E.Term> = {\n // Shared\n [E.ExpressionType.Term]: (expr, _mapping) => this.term( expr),\n [E.ExpressionType.Variable]: (expr, mapping) => this.variable( expr, mapping),\n\n // Sync\n [E.ExpressionType.Operator]: (expr, mapping) => this.evalOperator( expr, mapping),\n [E.ExpressionType.SpecialOperator]: (expr, mapping) => this.evalSpecialOperator( expr, mapping),\n [E.ExpressionType.Named]: (expr, mapping) => this.evalNamed( expr, mapping),\n [E.ExpressionType.Existence]: (expr, mapping) => this.evalExistence( expr, mapping),\n [E.ExpressionType.Aggregate]: (expr, _mapping) => this.evalAggregate( expr),\n [E.ExpressionType.SyncExtension]: (expr, mapping) => this.evalSyncExtension( expr, mapping),\n };\n\n public constructor(private readonly context: ICompleteSyncEvaluatorContext, termTransformer?: ITermTransformer) {\n super(termTransformer ?? new TermTransformer(context.superTypeProvider));\n }\n\n public evaluate(expr: E.Expression, mapping: RDF.Bindings): E.Term {\n const evaluator = this.subEvaluators[expr.expressionType];\n if (!evaluator) {\n throw new Err.InvalidExpressionType(expr);\n }\n return evaluator.bind(this)(expr, mapping);\n }\n\n private evalOperator(expr: E.Operator, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalSpecialOperator(expr: E.SpecialOperator, mapping: RDF.Bindings): E.Term {\n const evaluate = this.evaluate.bind(this);\n const context: EvalContextSync = {\n args: expr.args,\n mapping,\n\n superTypeProvider: this.context.superTypeProvider,\n now: this.context.now,\n baseIRI: this.context.baseIRI,\n functionArgumentsCache: this.context.functionArgumentsCache,\n\n evaluate,\n bnode: this.context.bnode,\n defaultTimeZone: this.context.defaultTimeZone,\n };\n return expr.applySynchronously(context);\n }\n\n private evalNamed(expr: E.Named, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalSyncExtension(expr: SyncExtension, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalExistence(expr: E.Existence, mapping: RDF.Bindings): E.Term {\n if (!this.context.exists) {\n throw new Err.NoExistenceHook();\n }\n\n return new E.BooleanLiteral(this.context.exists(expr.expression, mapping));\n }\n\n private evalAggregate(expr: E.Aggregate): E.Term {\n if (!this.context.aggregate) {\n throw new Err.NoAggregator();\n }\n\n return this.termTransformer.transformRDFTermUnsafe(this.context.aggregate(expr.expression));\n }\n}\n","import type { Algebra as Alg } from 'sparqlalgebrajs';\n\nimport type { AggregateExpression } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Aggregate implements AggregateExpression {\n public expressionType: ExpressionType.Aggregate = ExpressionType.Aggregate;\n\n public constructor(\n public name: string,\n public expression: Alg.AggregateExpression,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { AsyncExtensionApplication, AsyncExtensionExpression, Expression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class AsyncExtension implements AsyncExtensionExpression {\n public expressionType: ExpressionType.AsyncExtension = ExpressionType.AsyncExtension;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: AsyncExtensionApplication,\n ) {}\n}\n","import type { Algebra as Alg } from 'sparqlalgebrajs';\n\nimport type { ExistenceExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class Existence implements ExistenceExpression {\n public expressionType: ExpressionType.Existence = ExpressionType.Existence;\n public constructor(public expression: Alg.ExistenceExpression) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { EvalContextAsync, EvalContextSync } from '../functions';\n\nexport enum ExpressionType {\n Aggregate = 'aggregate',\n Existence = 'existence',\n Named = 'named',\n Operator = 'operator',\n SpecialOperator = 'specialOperator',\n Term = 'term',\n Variable = 'variable',\n AsyncExtension = 'asyncExtension',\n SyncExtension = 'syncExtension',\n}\n\nexport type Expression =\n AggregateExpression |\n ExistenceExpression |\n NamedExpression |\n OperatorExpression |\n SpecialOperatorExpression |\n TermExpression |\n VariableExpression |\n AsyncExtensionExpression |\n SyncExtensionExpression;\n\nexport interface IExpressionProps {\n expressionType: ExpressionType;\n}\n\nexport type AggregateExpression = IExpressionProps & {\n expressionType: ExpressionType.Aggregate;\n name: string;\n expression: Algebra.AggregateExpression;\n};\n\nexport type ExistenceExpression = IExpressionProps & {\n expressionType: ExpressionType.Existence;\n expression: Algebra.ExistenceExpression;\n};\n\nexport type NamedExpression = IExpressionProps & {\n expressionType: ExpressionType.Named;\n name: RDF.NamedNode;\n apply: SimpleApplication;\n args: Expression[];\n};\n\nexport type AsyncExtensionExpression = IExpressionProps & {\n expressionType: ExpressionType.AsyncExtension;\n name: RDF.NamedNode;\n apply: AsyncExtensionApplication;\n args: Expression[];\n};\n\nexport type SyncExtensionExpression = IExpressionProps & {\n expressionType: ExpressionType.SyncExtension;\n name: RDF.NamedNode;\n apply: SimpleApplication;\n args: Expression[];\n};\n\nexport type OperatorExpression = IExpressionProps & {\n expressionType: ExpressionType.Operator;\n args: Expression[];\n apply: SimpleApplication;\n};\n\nexport type SpecialOperatorExpression = IExpressionProps & {\n expressionType: ExpressionType.SpecialOperator;\n args: Expression[];\n applyAsync: SpecialApplicationAsync;\n applySynchronously: SpecialApplicationSync;\n};\n\n// TODO: Create alias Term = TermExpression\nexport function asTermType(type: string): TermType | undefined {\n if (type === 'namedNode' || type === 'literal' || type === 'blankNode' || type === 'quad') {\n return type;\n }\n return undefined;\n}\nexport type TermType = 'namedNode' | 'literal' | 'blankNode' | 'quad';\nexport type TermExpression = IExpressionProps & {\n expressionType: ExpressionType.Term;\n termType: TermType;\n str: () => string;\n coerceEBV: () => boolean;\n toRDF: () => RDF.Term;\n};\n\nexport type VariableExpression = IExpressionProps & {\n expressionType: ExpressionType.Variable;\n name: string;\n};\n\n// Export type Application = SimpleApplication | SpecialApplication;\nexport type SimpleApplication = (args: TermExpression[]) => TermExpression;\nexport type SimpleApplicationTuple = (args: T) => TermExpression;\nexport type AsyncExtensionApplication = (args: TermExpression[]) => Promise;\n\nexport type SpecialApplicationAsync = (context: EvalContextAsync) => Promise;\n\nexport type SpecialApplicationSync = (context: EvalContextSync) => TermExpression;\n","import type * as RDF from '@rdfjs/types';\n\nimport type { Expression, NamedExpression, SimpleApplication } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Named implements NamedExpression {\n public expressionType: ExpressionType.Named = ExpressionType.Named;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: SimpleApplication,\n ) {}\n}\n","import type { Expression, OperatorExpression, SimpleApplication } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Operator implements OperatorExpression {\n public expressionType: ExpressionType.Operator = ExpressionType.Operator;\n\n public constructor(public args: Expression[], public apply: SimpleApplication) {}\n}\n","import type {\n Expression,\n SpecialApplicationAsync,\n SpecialApplicationSync,\n SpecialOperatorExpression,\n} from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class SpecialOperator implements SpecialOperatorExpression {\n public expressionType: ExpressionType.SpecialOperator = ExpressionType.SpecialOperator;\n\n public constructor(\n public args: Expression[],\n public applyAsync: SpecialApplicationAsync,\n public applySynchronously: SpecialApplicationSync,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Expression, SimpleApplication, SyncExtensionExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class SyncExtension implements SyncExtensionExpression {\n public expressionType: ExpressionType.SyncExtension = ExpressionType.SyncExtension;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: SimpleApplication,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from '../util/Consts';\nimport { TypeAlias, TypeURL } from '../util/Consts';\n\nimport type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n IYearMonthDurationRepresentation,\n} from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport { serializeDateTime, serializeDuration, serializeTime, serializeDate } from '../util/Serialization';\nimport type { ISuperTypeProvider } from '../util/TypeHandling';\nimport { isSubTypeOf } from '../util/TypeHandling';\nimport type { TermExpression, TermType } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nconst DF = new DataFactory();\n\nexport abstract class Term implements TermExpression {\n public expressionType: ExpressionType.Term = ExpressionType.Term;\n public abstract termType: TermType;\n\n public abstract toRDF(): RDF.Term;\n\n public str(): string {\n throw new Err.InvalidArgumentTypes([ this ], C.RegularOperator.STR);\n }\n\n public coerceEBV(): boolean {\n throw new Err.EBVCoercionError(this);\n }\n}\n\n// NamedNodes -----------------------------------------------------------------\nexport class NamedNode extends Term {\n public termType: TermType = 'namedNode';\n public constructor(public value: string) {\n super();\n }\n\n public toRDF(): RDF.Term {\n return DF.namedNode(this.value);\n }\n\n public override str(): string {\n return this.value;\n }\n}\n\n// BlankNodes -----------------------------------------------------------------\n\nexport class BlankNode extends Term {\n public value: RDF.BlankNode;\n public termType: TermType = 'blankNode';\n\n public constructor(value: RDF.BlankNode | string) {\n super();\n this.value = typeof value === 'string' ? DF.blankNode(value) : value;\n }\n\n public toRDF(): RDF.Term {\n return this.value;\n }\n}\n\n// Quads -----------------------------------------------------------------\nexport class Quad extends Term {\n public termType: TermType = 'quad';\n private readonly transformer: TermTransformer;\n private readonly valueTerm: RDF.BaseQuad;\n\n public constructor(input: RDF.BaseQuad, superTypeProvider: ISuperTypeProvider) {\n super();\n this.transformer = new TermTransformer(superTypeProvider);\n this.valueTerm = input;\n }\n\n public toRDF(): RDF.BaseQuad {\n return this.valueTerm;\n }\n\n public get subject(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFsubject);\n }\n\n public get predicate(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFpredicate);\n }\n\n public get object(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFobject);\n }\n\n public get RDFsubject(): RDF.Term {\n return this.toRDF().subject;\n }\n\n public get RDFpredicate(): RDF.Term {\n return this.toRDF().predicate;\n }\n\n public get RDFobject(): RDF.Term {\n return this.toRDF().object;\n }\n}\n\n// Literals-- -----------------------------------------------------------------\nexport function isLiteralTermExpression(expr: TermExpression): Literal | undefined {\n if (expr.termType === 'literal') {\n return > expr;\n }\n return undefined;\n}\n\nexport interface ISerializable {\n toString: () => string;\n}\n\nexport class Literal extends Term {\n public termType = 'literal';\n /**\n * @param typedValue internal representation of this literal's value\n * @param dataType a string representing the datatype. Can be of type @see LiteralTypes or any URI\n * @param strValue the string value of this literal. In other words, the string representing the RDF.literal value.\n * @param language the language, mainly for language enabled strings like RDF_LANG_STRING\n */\n public constructor(\n public typedValue: T,\n public dataType: string,\n public strValue?: string,\n public language?: string,\n ) {\n super();\n }\n\n public toRDF(): RDF.Literal {\n return DF.literal(\n this.strValue ?? this.str(),\n this.language ?? DF.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? this.typedValue.toString();\n }\n}\n\nexport abstract class NumericLiteral extends Literal {\n protected constructor(\n public override typedValue: number,\n dataType: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType, strValue, language);\n }\n\n protected abstract specificFormatter(val: number): string;\n\n public override coerceEBV(): boolean {\n return Boolean(this.typedValue);\n }\n\n public override toRDF(): RDF.Literal {\n const term = super.toRDF();\n if (!Number.isFinite(this.typedValue)) {\n term.value = term.value.replace('Infinity', 'INF');\n }\n return term;\n }\n\n public override str(): string {\n return this.strValue ??\n this.specificFormatter(this.typedValue);\n }\n}\n\nexport class IntegerLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_INTEGER, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toFixed(0);\n }\n}\n\nexport class DecimalLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DECIMAL, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class FloatLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_FLOAT, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class DoubleLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DOUBLE, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n if (!Number.isFinite(val)) {\n if (val > 0) {\n return 'INF';\n }\n if (val < 0) {\n return '-INF';\n }\n return 'NaN';\n }\n\n const jsExponential = val.toExponential();\n const [ jsMantisse, jsExponent ] = jsExponential.split('e');\n\n // Leading + must be removed for integer\n // https://www.w3.org/TR/xmlschema-2/#integer\n const exponent = jsExponent.replace(/\\+/u, '');\n\n // SPARQL test suite prefers trailing zero's\n const mantisse = jsMantisse.includes('.') ?\n jsMantisse :\n `${jsMantisse}.0`;\n\n return `${mantisse}E${exponent}`;\n }\n}\n\nexport class BooleanLiteral extends Literal {\n public constructor(public override typedValue: boolean, public override strValue?: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_BOOLEAN, strValue);\n }\n\n public override coerceEBV(): boolean {\n return this.typedValue;\n }\n}\n\nexport class LangStringLiteral extends Literal {\n public constructor(public override typedValue: string, public override language: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.RDF_LANG_STRING, typedValue, language);\n }\n\n public override coerceEBV(): boolean {\n return this.str().length > 0;\n }\n}\n\n// https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal\n// https://www.w3.org/TR/sparql11-query/#defn_SimpleLiteral\n// https://www.w3.org/TR/sparql11-query/#func-strings\n// This does not include language tagged literals\nexport class StringLiteral extends Literal {\n /**\n * @param typedValue\n * @param dataType Should be type that implements XSD_STRING\n */\n public constructor(public override typedValue: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_STRING, typedValue);\n }\n\n public override coerceEBV(): boolean {\n return this.str().length > 0;\n }\n}\n\nexport class DateTimeLiteral extends Literal {\n public constructor(\n public override typedValue: IDateTimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE_TIME, strValue);\n }\n\n public override str(): string {\n return serializeDateTime(this.typedValue);\n }\n}\n\nexport class TimeLiteral extends Literal {\n public constructor(\n public override typedValue: ITimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_TIME, strValue);\n }\n\n public override str(): string {\n return serializeTime(this.typedValue);\n }\n}\n\nexport class DateLiteral extends Literal {\n public constructor(\n public override typedValue: IDateRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE, strValue);\n }\n\n public override str(): string {\n return serializeDate(this.typedValue);\n }\n}\n\nexport class DurationLiteral extends Literal> {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue);\n }\n}\n\nexport class DayTimeDurationLiteral extends DurationLiteral {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, strValue, dataType ?? TypeURL.XSD_DAY_TIME_DURATION);\n }\n}\n\nexport class YearMonthDurationLiteral extends Literal> {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_YEAR_MONTH_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue, 'P0M');\n }\n}\n\n/**\n * This class is used when a literal is parsed, and it's value is\n * an invalid lexical form for it's datatype. The spec defines value with\n * invalid lexical form are still valid terms, and as such we can not error\n * immediately. This class makes sure that the typedValue will remain undefined,\n * and the category 'nonlexical'. This way, only when operators apply to the\n * 'nonlexical' category, they will keep working, otherwise they will throw a\n * type error.\n * This seems to match the spec, except maybe for functions that accept\n * non-lexical values for their datatype.\n *\n * See:\n * - https://www.w3.org/TR/xquery/#dt-type-error\n * - https://www.w3.org/TR/rdf-concepts/#section-Literal-Value\n * - https://www.w3.org/TR/xquery/#dt-ebv\n * - ... some other more precise thing i can't find...\n */\nexport class NonLexicalLiteral extends Literal<{ toString: () => 'undefined' }> {\n public constructor(\n typedValue: undefined,\n dataType: string,\n private readonly openWorldType: ISuperTypeProvider,\n strValue?: string,\n language?: string,\n ) {\n super({ toString: () => 'undefined' }, dataType, strValue, language);\n }\n\n public override coerceEBV(): boolean {\n const isNumericOrBool =\n isSubTypeOf(this.dataType, TypeURL.XSD_BOOLEAN, this.openWorldType) ||\n isSubTypeOf(this.dataType, TypeAlias.SPARQL_NUMERIC, this.openWorldType);\n if (isNumericOrBool) {\n return false;\n }\n throw new Err.EBVCoercionError(this);\n }\n\n public override toRDF(): RDF.Literal {\n return DF.literal(\n this.str(),\n this.language ?? DF.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? '';\n }\n}\n\nexport function isNonLexicalLiteral(lit: Literal): NonLexicalLiteral | undefined {\n if (lit instanceof NonLexicalLiteral) {\n return lit;\n }\n return undefined;\n}\n","import type { VariableExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class Variable implements VariableExpression {\n public expressionType: ExpressionType.Variable = ExpressionType.Variable;\n public name: string;\n public constructor(name: string) {\n this.name = name;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport type * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport type { ISuperTypeProvider } from '../util/TypeHandling';\nimport type { ImplementationFunction, OverloadTree, FunctionArgumentsCache } from './OverloadTree';\n\nexport interface IEvalSharedContext extends ICompleteSharedContext {\n args: E.Expression[];\n mapping: RDF.Bindings;\n}\nexport interface IEvalContext extends IEvalSharedContext {\n bnode?: (input?: string) => BNode;\n evaluate: (expr: E.Expression, mapping: RDF.Bindings) => Term;\n}\n\nexport type EvalContextAsync = IEvalContext, Promise>;\nexport type EvalContextSync = IEvalContext;\n\n// ----------------------------------------------------------------------------\n// Overloaded Functions\n// ----------------------------------------------------------------------------\n\n// Function and operator arguments are 'flattened' in the SPARQL spec.\n// If the argument is a literal, the datatype often also matters.\nexport type ArgumentType = 'term' | E.TermType | C.TypeURL | C.TypeAlias;\n\nexport interface IOverloadedDefinition {\n arity: number | number[];\n overloads: OverloadTree;\n}\n\nexport abstract class BaseFunction {\n public arity: number | number[];\n private readonly overloads: OverloadTree;\n\n protected constructor(public operator: Operator, definition: IOverloadedDefinition) {\n this.arity = definition.arity;\n this.overloads = definition.overloads;\n }\n\n /**\n * A function application works by monomorphing the function to a specific\n * instance depending on the runtime types. We then just apply this function\n * to the args.\n */\n public apply = (args: E.TermExpression[], context: ICompleteSharedContext):\n E.TermExpression => {\n const concreteFunction =\n this.monomorph(args, context.superTypeProvider, context.functionArgumentsCache) ??\n this.handleInvalidTypes(args);\n return concreteFunction(context)(args);\n };\n\n protected abstract handleInvalidTypes(args: E.TermExpression[]): never;\n\n /**\n * We monomorph by checking the map of overloads for keys corresponding\n * to the runtime types. We start by checking for an implementation for the\n * most concrete types (integer, string, date, IRI), if we find none,\n * we consider their term types (literal, blank, IRI), and lastly we consider\n * all arguments as generic terms.\n *\n * Another option would be to populate the overloads with an implementation\n * for every concrete type when the function is generic over termtypes or\n * terms.\n */\n private monomorph(\n args: E.TermExpression[],\n superTypeProvider: ISuperTypeProvider,\n functionArgumentsCache: FunctionArgumentsCache,\n ): ImplementationFunction | undefined {\n return this.overloads.search(args, superTypeProvider, functionArgumentsCache);\n }\n}\n\n// Regular Functions ----------------------------------------------------------\n\n/**\n * Varying kinds of functions take arguments of different types on which the\n * specific behaviour is dependant. Although their behaviour is often varying,\n * it is always relatively simple, and better suited for synced behaviour.\n * The types of their arguments are always terms, but might differ in\n * their term-type (eg: iri, literal),\n * their specific literal type (eg: string, integer),\n * their arity (see BNODE),\n * or even their specific numeric type (eg: integer, float).\n *\n * Examples include:\n * - Arithmetic operations such as: *, -, /, +\n * - Bool operators such as: =, !=, <=, <, ...\n * - Functions such as: str, IRI\n *\n * See also: https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n * and https://www.w3.org/TR/sparql11-query/#OperatorMapping\n */\nexport class RegularFunction extends BaseFunction {\n protected functionClass = 'regular';\n\n public constructor(op: C.RegularOperator, definition: IOverloadedDefinition) {\n super(op, definition);\n }\n\n protected handleInvalidTypes(args: E.TermExpression[]): never {\n throw new Err.InvalidArgumentTypes(args, this.operator);\n }\n}\n\n// Named Functions ------------------------------------------------------------\nexport class NamedFunction extends BaseFunction {\n protected functionClass = 'named';\n\n public constructor(op: C.NamedOperator, definition: IOverloadedDefinition) {\n super(op, definition);\n }\n\n protected handleInvalidTypes(args: E.TermExpression[]): never {\n throw new Err.InvalidArgumentTypes(args, this.operator);\n }\n}\n\n// Special Functions ----------------------------------------------------------\n/**\n * Special Functions are those that don't really fit in sensible categories and\n * have extremely heterogeneous signatures that make them impossible to abstract\n * over. They are small in number, and their behaviour is often complex and open\n * for multiple correct implementations with different trade-offs.\n *\n * Due to their varying nature, they need all available information present\n * during evaluation. This reflects in the signature of the apply() method.\n *\n * They need access to an evaluator to be able to even implement their logic.\n * Especially relevant for IF, and the logical connectives.\n *\n * They can have both sync and async implementations, and both would make sense\n * in some contexts.\n */\nexport class SpecialFunction {\n public functionClass = 'special';\n public arity: number;\n public applySynchronously: E.SpecialApplicationSync;\n public applyAsync: E.SpecialApplicationAsync;\n public checkArity: (args: E.Expression[]) => boolean;\n\n public constructor(public operator: C.SpecialOperator, definition: ISpecialDefinition) {\n this.arity = definition.arity;\n this.applySynchronously = definition.applySynchronously;\n this.applyAsync = definition.applyAsync;\n this.checkArity = definition.checkArity ?? defaultArityCheck(this.arity);\n }\n}\n\nfunction defaultArityCheck(arity: number): (args: E.Expression[]) => boolean {\n return (args: E.Expression[]): boolean => {\n // Infinity is used to represent var-args, so it's always correct.\n if (arity === Number.POSITIVE_INFINITY) {\n return true;\n }\n\n return args.length === arity;\n };\n}\n\nexport interface ISpecialDefinition {\n arity: number;\n applyAsync: E.SpecialApplicationAsync;\n applySynchronously: E.SpecialApplicationSync;\n checkArity?: (args: E.Expression[]) => boolean;\n}\n","/**\n * These helpers provide a (albeit inflexible) DSL for writing function\n * definitions for the SPARQL functions.\n */\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type { Literal, TermExpression, Quad, ISerializable } from '../expressions';\nimport * as E from '../expressions';\nimport { NonLexicalLiteral } from '../expressions';\nimport * as C from '../util/Consts';\nimport { TypeURL } from '../util/Consts';\nimport type { IDateTimeRepresentation } from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport type { ArgumentType } from './Core';\nimport type { ImplementationFunction, ImplementationFunctionTuple } from './OverloadTree';\nimport { OverloadTree } from './OverloadTree';\n\ntype Term = E.TermExpression;\n\nconst DF = new DataFactory();\n\nexport function declare(identifier: string): Builder {\n return new Builder(identifier);\n}\n\nexport class Builder {\n private readonly overloadTree: OverloadTree;\n private collected: boolean;\n\n public constructor(identifier: string) {\n this.overloadTree = new OverloadTree(identifier);\n this.collected = false;\n }\n\n public collect(): OverloadTree {\n if (this.collected) {\n // Only 1 time allowed because we can't copy a tree. (And we don't need this).\n throw new Error('Builders can only be collected once!');\n }\n this.collected = true;\n return this.overloadTree;\n }\n\n private static wrapInvalidLexicalProtected(func: ImplementationFunction): ImplementationFunction {\n return (context: ICompleteSharedContext) => (args: TermExpression[]) => {\n for (const [ index, arg ] of args.entries()) {\n if (arg instanceof NonLexicalLiteral) {\n throw new Err.InvalidLexicalForm(args[index].toRDF());\n }\n }\n return func(context)(args);\n };\n }\n\n public set(\n argTypes: [],\n func: ImplementationFunctionTuple<[]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType],\n func: ImplementationFunctionTuple<[T1]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<\n T1 extends TermExpression,\n T2 extends TermExpression,\n T3 extends TermExpression,\n T4 extends TermExpression,\n >(\n argTypes: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3, T4]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling?: boolean): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling = true): Builder {\n this.overloadTree.addOverload(argTypes, addInvalidHandling ? Builder.wrapInvalidLexicalProtected(func) : func);\n return this;\n }\n\n public copy({ from, to }: { from: ArgumentType[]; to: ArgumentType[] }): Builder {\n const impl = this.overloadTree.getImplementationExact(from);\n if (!impl) {\n throw new Err.UnexpectedError(\n 'Tried to copy implementation, but types not found',\n { from, to },\n );\n }\n return this.set(to, impl);\n }\n\n public onUnary(type: ArgumentType, op: (context: ICompleteSharedContext) =>\n (val: T) => Term, addInvalidHandling = true): Builder {\n return this.set([ type ], context => ([ val ]: [T]) => op(context)(val), addInvalidHandling);\n }\n\n public onUnaryTyped(\n type: ArgumentType,\n op: (context: ICompleteSharedContext) => (val: T) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set([ type ], context => ([ val ]: [E.Literal]) => op(context)(val.typedValue), addInvalidHandling);\n }\n\n public onBinary(\n types: [ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ left, right ]: [L, R]) => op(context)(left, right), addInvalidHandling);\n }\n\n public onBinaryTyped(\n types: [ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n types,\n context => ([ left, right ]: [E.Literal, E.Literal]) => op(context)(left.typedValue, right.typedValue),\n addInvalidHandling,\n );\n }\n\n public onTernaryTyped(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext)\n => (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ a1, a2, a3 ]: [E.Literal, E.Literal, E.Literal]) =>\n op(context)(a1.typedValue, a2.typedValue, a3.typedValue), addInvalidHandling);\n }\n\n public onTernary(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ a1, a2, a3 ]: [A1, A2, A3]) => op(context)(a1, a2, a3), addInvalidHandling);\n }\n\n public onQuaternaryTyped<\n A1 extends ISerializable,\nA2 extends ISerializable,\nA3 extends ISerializable,\nA4 extends ISerializable,\n>(\n types: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (a1: A1, a2: A2, a3: A3, a4: A4) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context =>\n ([ a1, a2, a3, a4 ]: [E.Literal, E.Literal, E.Literal, E.Literal]) =>\n op(context)(a1.typedValue, a2.typedValue, a3.typedValue, a4.typedValue), addInvalidHandling);\n }\n\n public onTerm1(\n op: (context: ICompleteSharedContext) => (term: T) => Term,\naddInvalidHandling = false,\n ): Builder {\n return this.set(\n [ 'term' ],\n context => ([ term ]: [T]) => op(context)(term),\n addInvalidHandling,\n );\n }\n\n public onTerm3(op: (context: ICompleteSharedContext) => (t1: Term, t2: Term, t3: Term) => Term): Builder {\n return this.set(\n [ 'term', 'term', 'term' ],\n context => ([ t1, t2, t3 ]: [Term, Term, Term]) => op(context)(t1, t2, t3),\n );\n }\n\n public onQuad1(op: (context: ICompleteSharedContext) => (term: Term & Quad) => Term): Builder {\n return this.set([ 'quad' ], context => ([ term ]: [Term & Quad]) => op(context)(term));\n }\n\n public onLiteral1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ 'literal' ],\n context => ([ term ]: [E.Literal]) => op(context)(term),\n addInvalidHandling,\n );\n }\n\n public onBoolean1(\n op: (context: ICompleteSharedContext) => (lit: E.BooleanLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n context => ([ lit ]: [E.BooleanLiteral]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onBoolean1Typed(\n op: (context: ICompleteSharedContext) => (lit: boolean) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n context => ([ lit ]: [E.BooleanLiteral]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onString1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onString1Typed(\n op: (context: ICompleteSharedContext) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onLangString1(\n op: (context: ICompleteSharedContext) => (lit: E.LangStringLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.RDF_LANG_STRING ],\n context => ([ lit ]: [E.LangStringLiteral]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1Typed(\n op: (context: ICompleteSharedContext) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onNumeric1(\n op: (context: ICompleteSharedContext) => (val: E.NumericLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_NUMERIC ],\n context => ([ val ]: [E.NumericLiteral]) => op(context)(val),\n addInvalidHandling,\n );\n }\n\n public onDateTime1(\n op: (context: ICompleteSharedContext) => (date: E.DateTimeLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME ],\n context => ([ val ]: [E.DateTimeLiteral]) => op(context)(val),\n addInvalidHandling,\n );\n }\n\n /**\n * We return the base types and not the provided types because we don't want to create invalid terms.\n * Providing negative number to a function unary - for example should not\n * return a term of type negative number having a positive value.\n * @param op the numeric operator performed\n * @param addInvalidHandling whether to add invalid handling,\n * whether to add @param op in @see wrapInvalidLexicalProtected\n */\n public numericConverter(\n op: (context: ICompleteSharedContext) => (val: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (context: ICompleteSharedContext) => (arg: Term): number =>\n op(context)((>arg).typedValue);\n return this.onUnary(TypeURL.XSD_INTEGER, context => arg =>\n integer(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DECIMAL, context => arg =>\n decimal(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_FLOAT, context => arg =>\n float(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DOUBLE, context => arg =>\n double(evalHelper(context)(arg)), addInvalidHandling);\n }\n\n /**\n * !!! Be aware when using this function, it will create different overloads with different return types !!!\n * Arithmetic operators take 2 numeric arguments, and return a single numerical\n * value. The type of the return value is heavily dependent on the types of the\n * input arguments. In JS everything is a double, but in SPARQL it is not.\n *\n * The different arguments are handled by type promotion and subtype substitution.\n * The way numeric function arguments work is described here:\n * https://www.w3.org/TR/xpath20/#mapping\n * Above url is referenced in the sparql spec: https://www.w3.org/TR/sparql11-query/#OperatorMapping\n */\n public arithmetic(\n op: (context: ICompleteSharedContext) => (left: number, right: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (context: ICompleteSharedContext) => (left: Term, right: Term): number =>\n op(context)((>left).typedValue, (>right).typedValue);\n return this.onBinary([ TypeURL.XSD_INTEGER, TypeURL.XSD_INTEGER ], context => (left, right) =>\n integer(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DECIMAL, TypeURL.XSD_DECIMAL ], context => (left, right) =>\n decimal(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_FLOAT, TypeURL.XSD_FLOAT ], context => (left, right) =>\n float(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DOUBLE, TypeURL.XSD_DOUBLE ], context => (left, right) =>\n double(evalHelper(context)(left, right)), addInvalidHandling);\n }\n\n public numberTest(test: (context: ICompleteSharedContext) => (left: number, right: number) => boolean): Builder {\n return this.numeric(context => ([ left, right ]: E.NumericLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n });\n }\n\n public stringTest(\n test: (context: ICompleteSharedContext) => (left: string, right: string) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_STRING, C.TypeURL.XSD_STRING ],\n context => ([ left, right ]: E.StringLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public booleanTest(\n test: (context: ICompleteSharedContext) => (left: boolean, right: boolean) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_BOOLEAN, C.TypeURL.XSD_BOOLEAN ],\n context => ([ left, right ]: E.BooleanLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public dateTimeTest(test: (context: ICompleteSharedContext)\n => (left: IDateTimeRepresentation, right: IDateTimeRepresentation) => boolean, addInvalidHandling = true): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME, C.TypeURL.XSD_DATE_TIME ],\n context => ([ left, right ]: E.DateTimeLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public numeric(op: ImplementationFunctionTuple<[T, T]>): Builder {\n return this.set([ C.TypeAlias.SPARQL_NUMERIC, C.TypeAlias.SPARQL_NUMERIC ], op);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Literal Construction helpers\n// ----------------------------------------------------------------------------\n\nexport function bool(val: boolean): E.BooleanLiteral {\n return new E.BooleanLiteral(val);\n}\n\nexport function integer(num: number): E.IntegerLiteral {\n return new E.IntegerLiteral(num);\n}\n\nexport function decimal(num: number): E.DecimalLiteral {\n return new E.DecimalLiteral(num);\n}\n\nexport function float(num: number): E.FloatLiteral {\n return new E.FloatLiteral(num);\n}\n\nexport function double(num: number): E.DoubleLiteral {\n return new E.DoubleLiteral(num);\n}\n\nexport function string(str: string): E.StringLiteral {\n return new E.StringLiteral(str);\n}\n\nexport function langString(str: string, lang: string): E.LangStringLiteral {\n return new E.LangStringLiteral(str, lang);\n}\n\nexport function dateTime(date: IDateTimeRepresentation, str: string): E.DateTimeLiteral {\n return new E.DateTimeLiteral(date, str);\n}\n\nexport function expressionToVar(variableExpression: E.VariableExpression): RDF.Variable {\n return DF.variable(variableExpression.name.slice(1));\n}\n","import type { DateLiteral, DateTimeLiteral, TimeLiteral } from '../expressions';\nimport * as E from '../expressions';\nimport { DurationLiteral } from '../expressions';\nimport type * as C from '../util/Consts';\nimport { TypeURL } from '../util/Consts';\nimport { trimToDayTimeDuration, trimToYearMonthDuration } from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport {\n parseDate,\n parseDateTime,\n parseDayTimeDuration,\n parseDuration,\n parseTime,\n parseYearMonthDuration,\n parseXSDDecimal,\n parseXSDFloat,\n parseXSDInteger,\n} from '../util/Parsing';\n\nimport type { IOverloadedDefinition } from './Core';\nimport { bool, dateTime, decimal, declare, double, float, integer, string } from './Helpers';\n\ntype Term = E.TermExpression;\n\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// Begin definitions.\n\n// ----------------------------------------------------------------------------\n// XPath Constructor functions\n// https://www.w3.org/TR/sparql11-query/#\n// https://www.w3.org/TR/xpath-functions/#casting-from-primitive-to-primitive\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/xpath-functions/#casting-to-string\n */\nconst xsdToString = {\n arity: 1,\n overloads: declare(TypeURL.XSD_STRING)\n .onNumeric1(() => (val: E.NumericLiteral) => string(float(val.typedValue).str()))\n .onBoolean1Typed(() => val => string(bool(val).str()))\n .onTerm1(() => (val: E.StringLiteral) => string(val.str()))\n .collect(),\n};\n\nconst xsdToFloat = {\n arity: 1,\n overloads: declare(TypeURL.XSD_FLOAT)\n .onNumeric1(() => (val: E.NumericLiteral) => float(val.typedValue))\n .onBoolean1Typed(() => val => float(val ? 1 : 0))\n .onUnary(TypeURL.XSD_STRING, () => (val: E.StringLiteral) => {\n const result = parseXSDFloat(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_FLOAT);\n }\n return float(result);\n }, false)\n .collect(),\n};\n\nconst xsdToDouble = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DOUBLE)\n .onNumeric1(() => (val: E.NumericLiteral) => double(val.typedValue))\n .onBoolean1Typed(() => val => double(val ? 1 : 0))\n .onUnary(TypeURL.XSD_STRING, () => (val: E.Term) => {\n const result = parseXSDFloat(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DOUBLE);\n }\n return double(result);\n }, false)\n .collect(),\n};\n\nconst xsdToDecimal = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DECIMAL)\n .onNumeric1(() => (val: E.Term) => {\n const result = parseXSDDecimal(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DECIMAL);\n }\n return decimal(result);\n })\n .onString1(() => (val: E.Term) => {\n const str = val.str();\n const result = /^([+-])?(\\d+(\\.\\d+)?)$/u.test(str) ? parseXSDDecimal(str) : undefined;\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DECIMAL);\n }\n return decimal(result);\n }, false)\n .onBoolean1Typed(() => val => decimal(val ? 1 : 0))\n .collect(),\n};\n\nconst xsdToInteger = {\n arity: 1,\n overloads: declare(TypeURL.XSD_INTEGER)\n .onBoolean1Typed(() => val => integer(val ? 1 : 0))\n .onNumeric1(() => (val: E.Term) => {\n const result = parseXSDInteger(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_INTEGER);\n }\n return integer(result);\n }, false)\n .onString1(() => (val: E.Term) => {\n const str = val.str();\n const result = /^\\d+$/u.test(str) ? parseXSDInteger(str) : undefined;\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_INTEGER);\n }\n return integer(result);\n })\n .collect(),\n};\n\nconst xsdToDatetime = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DATE_TIME)\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: E.DateTimeLiteral) => val)\n .onUnary(TypeURL.XSD_STRING, () => (val: Term) =>\n dateTime(parseDateTime(val.str()), val.str()), false)\n .onUnary(TypeURL.XSD_DATE, () => (val: E.DateLiteral) =>\n new E.DateTimeLiteral({ ...val.typedValue, hours: 0, minutes: 0, seconds: 0 }))\n .collect(),\n};\n\nconst xsdToBoolean = {\n arity: 1,\n overloads: declare(TypeURL.XSD_BOOLEAN)\n .onNumeric1(() => (val: E.NumericLiteral) => bool(val.coerceEBV()), true)\n .onUnary(TypeURL.XSD_BOOLEAN, () => (val: Term) => bool(val.coerceEBV()), true)\n .onUnary(TypeURL.XSD_STRING, () => (val: Term) => {\n switch (val.str()) {\n case 'true':\n return bool(true);\n case 'false':\n return bool(false);\n case '1':\n return bool(true);\n case '0':\n return bool(false);\n default:\n throw new Err.CastError(val, TypeURL.XSD_BOOLEAN);\n }\n }, false)\n .collect(),\n};\n\n// End definitions.\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n\n// Additional definitions to implement https://github.com/w3c/sparql-12/blob/main/SEP/SEP-0002/sep-0002.md\n// The additional casts are listed in https://www.w3.org/TR/xpath-functions/#casting-from-primitive-to-primitive\nconst xsdToTime = {\n arity: 1,\n overloads: declare(TypeURL.XSD_TIME)\n .onUnary(TypeURL.XSD_TIME, () => (val: TimeLiteral) => new E.TimeLiteral(val.typedValue, val.strValue))\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: DateTimeLiteral) =>\n new E.TimeLiteral(val.typedValue))\n .onStringly1(() => (val: Term) => new E.TimeLiteral(parseTime(val.str())))\n .collect(),\n};\n\nconst xsdToDate = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DATE)\n .onUnary(TypeURL.XSD_DATE, () => (val: DateLiteral) => new E.DateLiteral(val.typedValue, val.strValue))\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: DateTimeLiteral) =>\n new E.DateLiteral(val.typedValue))\n .onStringly1(() => (val: E.Term) => new E.DateLiteral(parseDate(val.str())))\n .collect(),\n};\n\nconst xsdToDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.DurationLiteral(val.typedValue, val.strValue))\n .onStringly1(() => (val: Term) =>\n new DurationLiteral(parseDuration(val.str())))\n .collect(),\n};\n\nconst xsdToDayTimeDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DAY_TIME_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.DayTimeDurationLiteral(trimToDayTimeDuration(val.typedValue)))\n .onStringly1(() => (val: Term) =>\n new E.DayTimeDurationLiteral(parseDayTimeDuration(val.str())))\n .collect(),\n};\n\nconst xsdToYearMonthDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_YEAR_MONTH_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.YearMonthDurationLiteral(trimToYearMonthDuration(val.typedValue)))\n .onStringly1(() => (val: Term) =>\n new E.YearMonthDurationLiteral(parseYearMonthDuration(val.str())))\n .collect(),\n};\n\nexport const namedDefinitions: Record = {\n // --------------------------------------------------------------------------\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // --------------------------------------------------------------------------\n [TypeURL.XSD_STRING]: xsdToString,\n [TypeURL.XSD_FLOAT]: xsdToFloat,\n [TypeURL.XSD_DOUBLE]: xsdToDouble,\n [TypeURL.XSD_DECIMAL]: xsdToDecimal,\n [TypeURL.XSD_INTEGER]: xsdToInteger,\n [TypeURL.XSD_DATE_TIME]: xsdToDatetime,\n [TypeURL.XSD_DATE]: xsdToDate,\n [TypeURL.XSD_BOOLEAN]: xsdToBoolean,\n [TypeURL.XSD_TIME]: xsdToTime,\n [TypeURL.XSD_DURATION]: xsdToDuration,\n [TypeURL.XSD_DAY_TIME_DURATION]: xsdToDayTimeDuration,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: xsdToYearMonthDuration,\n};\n","import type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport { isLiteralTermExpression, TermExpression } from '../expressions';\nimport type { KnownLiteralTypes } from '../util/Consts';\nimport type { GeneralSuperTypeDict, ISuperTypeProvider, OverrideType } from '../util/TypeHandling';\nimport {\n asGeneralType,\n asKnownLiteralType,\n asOverrideType,\n getSuperTypes,\n superTypeDictTable,\n typePromotion,\n} from '../util/TypeHandling';\nimport type { ArgumentType } from './Core';\n\nexport type SearchStack = OverloadTree[];\nexport type ImplementationFunction = (sharedContext: ICompleteSharedContext) => E.SimpleApplication;\nexport type ImplementationFunctionTuple = (sharedContext: ICompleteSharedContext) => E.SimpleApplicationTuple;\ninterface IFunctionArgumentsCacheObj {\n func?: ImplementationFunction;\n cache?: FunctionArgumentsCache;\n}\nexport type FunctionArgumentsCache = Record;\n/**\n * Maps argument types on their specific implementation in a tree like structure.\n * When adding any functionality to this class, make sure you add it to SpecialFunctions as well.\n */\nexport class OverloadTree {\n private implementation?: ImplementationFunction | undefined;\n // We need this field. e.g. decimal decimal should be kept even when double double is added.\n // We use promotion count to check priority.\n private promotionCount?: number | undefined;\n private readonly generalOverloads: Record<'term' | E.TermType, OverloadTree>;\n private readonly literalOverLoads: [OverrideType, OverloadTree][];\n private readonly depth: number;\n\n public constructor(private readonly identifier: string, depth?: number) {\n this.implementation = undefined;\n this.generalOverloads = Object.create(null);\n this.literalOverLoads = [];\n this.depth = depth ?? 0;\n this.promotionCount = undefined;\n }\n\n private getSubtree(overrideType: ArgumentType): OverloadTree | undefined {\n const generalType = asGeneralType(overrideType);\n if (generalType) {\n return this.generalOverloads[generalType];\n }\n for (const [ type, overloadTree ] of this.literalOverLoads) {\n if (overrideType === type) {\n return overloadTree;\n }\n }\n return undefined;\n }\n\n /**\n * Get the implementation for the types that exactly match @param args .\n */\n public getImplementationExact(args: ArgumentType[]): ImplementationFunction | undefined {\n // eslint-disable-next-line ts/no-this-alias\n let node: OverloadTree | undefined = this;\n for (const expression of args) {\n node = node.getSubtree(expression);\n if (!node) {\n return undefined;\n }\n }\n return node.implementation;\n }\n\n /**\n * Searches in a depth first way for the best matching overload. considering this a the tree's root.\n * @param args the arguments to the function.\n * @param superTypeProvider\n * @param functionArgumentsCache\n */\n public search(\n args: E.TermExpression[],\n superTypeProvider: ISuperTypeProvider,\n functionArgumentsCache: FunctionArgumentsCache,\n ):\n ImplementationFunction | undefined {\n let cacheIter: IFunctionArgumentsCacheObj | undefined = functionArgumentsCache[this.identifier];\n let searchIndex = 0;\n while (searchIndex < args.length && cacheIter?.cache) {\n const term = args[searchIndex];\n const literalExpression = isLiteralTermExpression(term);\n cacheIter = cacheIter.cache[literalExpression ? literalExpression.dataType : term.termType];\n searchIndex++;\n }\n if (searchIndex === args.length && cacheIter?.func) {\n return cacheIter.func;\n }\n\n // SearchStack is a stack of all node's that need to be checked for implementation.\n // It provides an easy way to keep order in our search.\n const searchStack: { node: OverloadTree; index: number }[] = [];\n const startIndex = 0;\n if (args.length === 0) {\n return this.implementation;\n }\n // GetSubTreeWithArg return a SearchStack containing the node's that should be contacted next.\n // We also log the index since there is no other way to remember this index.\n // the provided stack should be pushed on top of our search stack since it also has it's order.\n searchStack.push(...this.getSubTreeWithArg(args[startIndex], superTypeProvider).map(node =>\n ({ node, index: startIndex + 1 })));\n while (searchStack.length > 0) {\n const { index, node } = <{ node: OverloadTree; index: number }>searchStack.pop();\n // We check the implementation because it would be possible a path is created but not implemented.\n // ex: f(double, double, double) and f(term, term). and calling f(double, double).\n if (index === args.length && node.implementation) {\n this.addToCache(functionArgumentsCache, args, node.implementation);\n return node.implementation;\n }\n searchStack.push(...node.getSubTreeWithArg(args[index], superTypeProvider).map(item =>\n ({ node: item, index: index + 1 })));\n }\n // Calling a function with one argument but finding no implementation should return no implementation.\n // Not even the one with no arguments.\n return undefined;\n }\n\n private addToCache(\n functionArgumentsCache: FunctionArgumentsCache,\n args: E.TermExpression[],\n func?: ImplementationFunction | undefined,\n ): void {\n function getDefault(lruCache: FunctionArgumentsCache, key: string): IFunctionArgumentsCacheObj {\n if (!(key in lruCache)) {\n lruCache[key] = {};\n }\n return lruCache[key];\n }\n let cache = getDefault(functionArgumentsCache, this.identifier);\n for (const term of args) {\n const literalExpression = isLiteralTermExpression(term);\n const key = literalExpression ? literalExpression.dataType : term.termType;\n cache.cache = cache.cache ?? {};\n cache = getDefault(cache.cache, key);\n }\n cache.func = func;\n }\n\n /**\n * Adds an overload to the tree structure considering this as the tree's root.\n * @param argumentTypes a list of argumentTypes that would need to be provided in\n * the same order to get the implementation.\n * @param func the implementation for this overload.\n */\n public addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction): void {\n this._addOverload([ ...argumentTypes ], func, 0);\n }\n\n private _addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction, promotionCount: number): void {\n const [ argumentType, ..._argumentTypes ] = argumentTypes;\n if (!argumentType) {\n if (this.promotionCount === undefined || promotionCount <= this.promotionCount) {\n this.promotionCount = promotionCount;\n this.implementation = func;\n }\n return;\n }\n let nextTree = this.getSubtree(argumentType);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n const generalType = asGeneralType(argumentType);\n if (generalType) {\n this.generalOverloads[generalType] = newNode;\n }\n const overrideType = asOverrideType(argumentType);\n if (overrideType) {\n this.literalOverLoads.push([ overrideType, newNode ]);\n }\n nextTree = newNode;\n }\n nextTree._addOverload(_argumentTypes, func, promotionCount);\n\n if (typePromotion[argumentType]) {\n for (const ret of typePromotion[argumentType]!) {\n this.addPromotedOverload(\n ret.typeToPromote,\n func,\n ret.conversionFunction,\n _argumentTypes,\n promotionCount,\n );\n }\n }\n }\n\n private addPromotedOverload(\n typeToPromote: OverrideType,\n func: ImplementationFunction,\n conversionFunction: (arg: E.TermExpression) => E.TermExpression,\n argumentTypes: ArgumentType[],\n promotionCount: number,\n ): void {\n let nextTree = this.getSubtree(typeToPromote);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n this.literalOverLoads.push([ typeToPromote, newNode ]);\n nextTree = newNode;\n }\n nextTree._addOverload(argumentTypes, funcConf => args => func(funcConf)([\n ...args.slice(0, this.depth),\n conversionFunction(args[this.depth]),\n ...args.slice(this.depth + 1, args.length),\n ]), promotionCount + 1);\n }\n\n /**\n * @param arg term to try and match to possible overloads of this node.\n * @param openWorldType interface allowing to discover relations between types.\n * @returns SearchStack a stack with top element the next node that should be asked for implementation or overload.\n */\n private getSubTreeWithArg(arg: E.TermExpression, openWorldType: ISuperTypeProvider): SearchStack {\n const res: SearchStack = [];\n const literalExpression = isLiteralTermExpression(arg);\n // These types refer to Type exported by lib/util/Consts.ts\n if (this.generalOverloads.term) {\n res.push(this.generalOverloads.term);\n }\n // TermTypes are defined in E.TermType.\n if (this.generalOverloads[arg.termType]) {\n res.push(this.generalOverloads[arg.termType]);\n }\n if (literalExpression) {\n // Defending implementation. Mainly the scary sort.\n // This function has cost O(n) + O(m * log(m)) with n = amount of overloads and m = amount of matched overloads\n // We map over each of the overloads, filter only the once that can be used (this is normally 1 or 2).\n // The sort function on an array with 1 or 2 arguments will be negligible.\n const concreteType = asKnownLiteralType(literalExpression.dataType);\n let subExtensionTable: GeneralSuperTypeDict;\n if (concreteType) {\n // Concrete dataType is known by expression-evaluator.\n subExtensionTable = superTypeDictTable[concreteType];\n } else {\n // Datatype is a custom datatype\n subExtensionTable = getSuperTypes(literalExpression.dataType, openWorldType);\n }\n const matches: [number, OverloadTree][] = this.literalOverLoads.filter(([ matchType, _ ]) =>\n matchType in subExtensionTable)\n .map(([ matchType, tree ]) => [ subExtensionTable[ matchType], tree ]);\n // eslint-disable-next-line unused-imports/no-unused-vars\n matches.sort(([ prioA, matchTypeA ], [ prioB, matchTypeB ]) => prioA - prioB);\n res.push(...matches.map(([ _, sortedType ]) => sortedType));\n }\n return res;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { BigNumber } from 'bignumber.js';\nimport { sha1, sha256, sha384, sha512 } from 'hash.js';\nimport { DataFactory } from 'rdf-data-factory';\nimport { resolve as resolveRelativeIri } from 'relative-to-absolute-iri';\nimport { hash as md5 } from 'spark-md5';\nimport * as uuid from 'uuid';\n\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport * as E from '../expressions';\nimport type { Quad } from '../expressions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from '../util/Consts';\nimport { RegularOperator, TypeAlias, TypeURL } from '../util/Consts';\nimport type { IDayTimeDurationRepresentation } from '../util/DateTimeHelpers';\nimport {\n dayTimeDurationsToSeconds,\n defaultedDateTimeRepresentation,\n defaultedDayTimeDurationRepresentation,\n defaultedDurationRepresentation,\n defaultedYearMonthDurationRepresentation,\n extractRawTimeZone,\n negateDuration,\n toDateTimeRepresentation,\n toUTCDate,\n yearMonthDurationsToMonths,\n} from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport { orderTypes } from '../util/Ordering';\nimport { addDurationToDateTime, elapsedDuration } from '../util/SpecAlgos';\nimport type { IOverloadedDefinition } from './Core';\nimport { RegularFunction } from './Core';\nimport { bool, decimal, declare, double, integer, langString, string } from './Helpers';\nimport * as X from './XPathFunctions';\nimport { regularFunctions } from '.';\n\nconst DF = new DataFactory();\n\ntype Term = E.TermExpression;\n\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// Begin definitions\n\n// ----------------------------------------------------------------------------\n// Operator Mapping\n// https://www.w3.org/TR/sparql11-query/#OperatorMapping\n// ----------------------------------------------------------------------------\n\nconst not = {\n arity: 1,\n overloads: declare(C.RegularOperator.NOT)\n .onTerm1(() => val => bool(!val.coerceEBV()))\n .collect(),\n};\n\nconst unaryPlus = {\n arity: 1,\n overloads: declare(C.RegularOperator.UPLUS)\n .numericConverter(() => val => val)\n .collect(),\n};\n\nconst unaryMinus = {\n arity: 1,\n overloads: declare(C.RegularOperator.UMINUS)\n .numericConverter(() => val => -val)\n .collect(),\n};\n\nconst multiplication = {\n arity: 2,\n overloads: declare(C.RegularOperator.MULTIPLICATION)\n .arithmetic(() => (left, right) => new BigNumber(left).times(right).toNumber())\n .collect(),\n};\n\nconst division = {\n arity: 2,\n overloads: declare(C.RegularOperator.DIVISION)\n .arithmetic(() => (left, right) => new BigNumber(left).div(right).toNumber())\n .onBinaryTyped(\n [ TypeURL.XSD_INTEGER, TypeURL.XSD_INTEGER ],\n () => (left: number, right: number) => {\n if (right === 0) {\n throw new Err.ExpressionError('Integer division by 0');\n }\n return decimal(new BigNumber(left).div(right).toNumber());\n },\n )\n .collect(),\n};\n\nconst addition = {\n arity: 2,\n overloads: declare(C.RegularOperator.ADDITION)\n .arithmetic(() => (left, right) => new BigNumber(left).plus(right).toNumber())\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateTimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-dateTime\n new E.DateTimeLiteral(addDurationToDateTime(date.typedValue, defaultedDurationRepresentation(dur.typedValue))))\n .copy({\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [E.DateLiteral, E.DurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-date\n new E.DateLiteral(\n addDurationToDateTime(\n defaultedDateTimeRepresentation(date.typedValue),\n defaultedDurationRepresentation(dur.typedValue),\n ),\n ))\n .copy({\n from: [ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ time, dur ]: [E.TimeLiteral, E.DurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-time\n new E.TimeLiteral(\n addDurationToDateTime(\n defaultedDateTimeRepresentation(time.typedValue),\n defaultedDurationRepresentation(dur.typedValue),\n ),\n ))\n .copy({\n from: [ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .collect(),\n};\n\nconst subtraction = {\n arity: 2,\n overloads: declare(C.RegularOperator.SUBTRACTION)\n .arithmetic(() => (left, right) => new BigNumber(left).minus(right).toNumber())\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], ({ defaultTimeZone }) =>\n ([ date1, date2 ]: [ E.DateTimeLiteral, E.DateTimeLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dateTimes;\n new E.DayTimeDurationLiteral(elapsedDuration(date1.typedValue, date2.typedValue, defaultTimeZone)))\n .copy({ from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME, TypeURL.XSD_TIME ]})\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateTimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-dateTime\n new E.DateTimeLiteral(addDurationToDateTime(\n date.typedValue,\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .copy({\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-date\n new E.DateLiteral(addDurationToDateTime(\n defaultedDateTimeRepresentation(date.typedValue),\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .copy({\n from: [ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ time, dur ]: [ E.TimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-date\n new E.TimeLiteral(addDurationToDateTime(\n defaultedDateTimeRepresentation(time.typedValue),\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .collect(),\n};\n\n// https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal\nconst equality = {\n arity: 2,\n overloads: declare(C.RegularOperator.EQUAL)\n .numberTest(() => (left, right) => left === right)\n .stringTest(() => (left, right) => left.localeCompare(right) === 0)\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => ([ left, right ]: E.LangStringLiteral[]) => bool(left.str() === right.str() &&\n left.language === right.language),\n )\n // Fall through: a TypeURL.XSD_STRING is never equal to a TypeURL.RDF_LANG_STRING.\n .set([ TypeAlias.SPARQL_STRINGLY, TypeAlias.SPARQL_STRINGLY ], () => () => bool(false))\n .booleanTest(() => (left, right) => left === right)\n .dateTimeTest(({ defaultTimeZone }) => (left, right) =>\n toUTCDate(left, defaultTimeZone).getTime() === toUTCDate(right, defaultTimeZone).getTime())\n .copy({\n // https://www.w3.org/TR/xpath-functions/#func-date-equal\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ],\n })\n .set(\n [ 'quad', 'quad' ],\n context => ([ left, right ]) => {\n const op: RegularFunction = new RegularFunction(RegularOperator.EQUAL, equality);\n return bool(\n ( op.apply([ ( left).subject, ( right).subject ], context)).coerceEBV() &&\n ( op.apply([ ( left).predicate, ( right).predicate ], context)).coerceEBV() &&\n ( op.apply([ ( left).object, ( right).object ], context)).coerceEBV(),\n );\n },\n false,\n )\n .set(\n [ 'term', 'term' ],\n () => ([ left, right ]) => bool(RDFTermEqual(left, right)),\n false,\n )\n .set([ TypeURL.XSD_DURATION, TypeURL.XSD_DURATION ], () =>\n ([ dur1, dur2 ]: [ E.DurationLiteral, E.DurationLiteral ]) =>\n bool(yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur1.typedValue)) ===\n yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur2.typedValue)) &&\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur1.typedValue)) ===\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur2.typedValue))))\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_TIME ], ({ defaultTimeZone }) =>\n ([ time1, time2 ]: [E.TimeLiteral, E.TimeLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-time-equal\n bool(toUTCDate(defaultedDateTimeRepresentation(time1.typedValue), defaultTimeZone).getTime() ===\n toUTCDate(defaultedDateTimeRepresentation(time2.typedValue), defaultTimeZone).getTime()))\n .collect(),\n};\n\nfunction RDFTermEqual(_left: Term, _right: Term): boolean {\n const left = _left.toRDF();\n const right = _right.toRDF();\n const val = left.equals(right);\n if (!val && (left.termType === 'Literal') && (right.termType === 'Literal')) {\n throw new Err.RDFEqualTypeError([ _left, _right ]);\n }\n return val;\n}\n\nconst inequality = {\n arity: 2,\n overloads: declare(C.RegularOperator.NOT_EQUAL)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n bool(!( regularFunctions[C.RegularOperator.EQUAL]\n .apply([ first, second ], context)).typedValue))\n .collect(),\n};\n\nconst lesserThan = {\n arity: 2,\n overloads: declare(C.RegularOperator.LT)\n .numberTest(() => (left, right) => left < right)\n .stringTest(() => (left, right) => left.localeCompare(right) === -1)\n .booleanTest(() => (left, right) => left < right)\n .set(\n [ 'quad', 'quad' ],\n () => ([ left, right ]) => bool(orderTypes(left.toRDF(), right.toRDF(), true) === -1),\n false,\n )\n .dateTimeTest(({ defaultTimeZone }) => (left, right) =>\n toUTCDate(left, defaultTimeZone).getTime() < toUTCDate(right, defaultTimeZone).getTime())\n .copy({\n // https://www.w3.org/TR/xpath-functions/#func-date-less-than\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ],\n })\n .set([ TypeURL.XSD_YEAR_MONTH_DURATION, TypeURL.XSD_YEAR_MONTH_DURATION ], () =>\n ([ dur1L, dur2L ]: [E.YearMonthDurationLiteral, E.YearMonthDurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-yearMonthDuration-less-than\n bool(yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur1L.typedValue)) <\n yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur2L.typedValue))))\n .set([ TypeURL.XSD_DAY_TIME_DURATION, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ dur1, dur2 ]: [E.DayTimeDurationLiteral, E.DayTimeDurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-dayTimeDuration-greater-than\n bool(dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur1.typedValue)) <\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur2.typedValue))))\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_TIME ], ({ defaultTimeZone }) =>\n ([ time1, time2 ]: [E.TimeLiteral, E.TimeLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-time-less-than\n bool(toUTCDate(defaultedDateTimeRepresentation(time1.typedValue), defaultTimeZone).getTime() <\n toUTCDate(defaultedDateTimeRepresentation(time2.typedValue), defaultTimeZone).getTime()))\n .collect(),\n};\n\nconst greaterThan = {\n arity: 2,\n overloads: declare(C.RegularOperator.GT)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X < Y -> Y > X\n regularFunctions[C.RegularOperator.LT].apply([ second, first ], context))\n .collect(),\n};\n\nconst lesserThanEqual = {\n arity: 2,\n overloads: declare(C.RegularOperator.LTE)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X <= Y -> X < Y || X = Y\n // First check if the first is lesser than the second, then check if they are equal.\n // Doing this, the correct error will be thrown, each type that has a lesserThanEqual has a matching lesserThan.\n bool(\n ( regularFunctions[C.RegularOperator.LT].apply([ first, second ], context)).typedValue ||\n ( regularFunctions[C.RegularOperator.EQUAL].apply([ first, second ], context)).typedValue,\n ))\n .collect(),\n};\n\nconst greaterThanEqual = {\n arity: 2,\n overloads: declare(C.RegularOperator.GTE)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X >= Y -> Y <= X\n regularFunctions[C.RegularOperator.LTE].apply([ second, first ], context))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on RDF Terms\n// https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isIRI\n */\nconst isIRI = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_IRI)\n .onTerm1(() => term => bool(term.termType === 'namedNode'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isBlank\n */\nconst isBlank = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_BLANK)\n .onTerm1(() => term => bool(term.termType === 'blankNode'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isLiteral\n */\nconst isLiteral = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_LITERAL)\n .onTerm1(() => term => bool(term.termType === 'literal'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isNumeric\n */\nconst isNumeric = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_NUMERIC)\n .onNumeric1(() => () => bool(true))\n .onTerm1(() => () => bool(false))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-str\n */\nconst STR = {\n arity: 1,\n overloads: declare(C.RegularOperator.STR)\n .onTerm1(() => term => string(term.str()))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-lang\n */\nconst lang = {\n arity: 1,\n overloads: declare(C.RegularOperator.LANG)\n .onLiteral1(() => lit => string(lit.language ?? ''))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-datatype\n */\nconst datatype = {\n arity: 1,\n overloads: declare(C.RegularOperator.DATATYPE)\n .onLiteral1(() => lit => new E.NamedNode(lit.dataType))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-iri\n */\nconst IRI = {\n arity: 1,\n overloads: declare(C.RegularOperator.IRI)\n .set([ 'namedNode' ], context => (args) => {\n const lit = args[0];\n const iri = resolveRelativeIri(lit.str(), context.baseIRI ?? '');\n return new E.NamedNode(iri);\n })\n .onString1(context => (lit) => {\n const iri = resolveRelativeIri(lit.str(), context.baseIRI ?? '');\n return new E.NamedNode(iri);\n })\n .collect(),\n};\n\n// See special functions\n// const BNODE = {};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strdt\n */\nconst STRDT = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRDT).set(\n [ TypeURL.XSD_STRING, 'namedNode' ],\n ({ superTypeProvider }) => ([ str, iri ]: [E.StringLiteral, E.NamedNode]) => {\n const lit = DF.literal(str.typedValue, DF.namedNode(iri.value));\n return new TermTransformer(superTypeProvider).transformLiteral(lit);\n },\n ).collect(),\n};\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strlang\n */\nconst STRLANG = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRLANG)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (val: string, language: string) => new E.LangStringLiteral(val, language.toLowerCase()),\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-uuid\n */\nconst UUID = {\n arity: 0,\n overloads: declare(C.RegularOperator.UUID)\n .set([], () => () => new E.NamedNode(`urn:uuid:${uuid.v4()}`))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-struuid\n */\nconst STRUUID = {\n arity: 0,\n overloads: declare(C.RegularOperator.STRUUID)\n .set([], () => () => string(uuid.v4()))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on strings\n// https://www.w3.org/TR/sparql11-query/#func-forms\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strlen\n */\nconst STRLEN = {\n arity: 1,\n overloads: declare(C.RegularOperator.STRLEN)\n .onStringly1(() => str => integer([ ...str.typedValue ].length))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-substr\n */\nconst SUBSTR = {\n arity: [ 2, 3 ],\n overloads: declare(C.RegularOperator.SUBSTR)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_INTEGER ],\n () => (source: string, startingLoc: number) => string([ ...source ].slice(startingLoc - 1).join('')),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_INTEGER ],\n () => (source: E.LangStringLiteral, startingLoc: E.NumericLiteral) => {\n const sub = [ ...source.typedValue ].slice(startingLoc.typedValue - 1).join('');\n return langString(sub, source.language);\n },\n )\n .onTernaryTyped([\n TypeURL.XSD_STRING,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_INTEGER,\n ], () => (source: string, startingLoc: number, length: number) =>\n string([ ...source ].slice(startingLoc - 1, length + startingLoc - 1).join('')))\n .onTernary([\n TypeURL.RDF_LANG_STRING,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_INTEGER,\n ], () => (source: E.LangStringLiteral, startingLoc: E.NumericLiteral, length: E.NumericLiteral) => {\n const sub = [ ...source.typedValue ]\n .slice(startingLoc.typedValue - 1, length.typedValue + startingLoc.typedValue - 1).join('');\n return langString(sub, source.language);\n })\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-ucase\n */\nconst UCASE = {\n arity: 1,\n overloads: declare(C.RegularOperator.UCASE)\n .onString1Typed(() => lit => string(lit.toUpperCase()))\n .onLangString1(() => lit => langString(lit.typedValue.toUpperCase(), lit.language))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-lcase\n */\nconst LCASE = {\n arity: 1,\n overloads: declare(C.RegularOperator.LCASE)\n .onString1Typed(() => lit => string(lit.toLowerCase()))\n .onLangString1(() => lit => langString(lit.typedValue.toLowerCase(), lit.language))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strstarts\n * for this and the following functions you'll see (string, langstring) is not allowed. This behaviour is defined in:\n * https://www.w3.org/TR/sparql11-query/#func-arg-compatibility\n */\nconst STRSTARTS = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRSTARTS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.startsWith(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.startsWith(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strends\n */\nconst STRENDS = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRENDS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.endsWith(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.endsWith(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-contains\n */\nconst CONTAINS = {\n arity: 2,\n overloads: declare(C.RegularOperator.CONTAINS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.includes(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.includes(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strbefore\n */\nconst STRBEFORE = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRBEFORE)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => string(arg1.slice(0, Math.max(0, arg1.indexOf(arg2)))),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.StringLiteral) => {\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = arg1.typedValue.slice(0, Math.max(0, a1.indexOf(a2)));\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = arg1.typedValue.slice(0, Math.max(0, a1.indexOf(a2)));\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strafter\n */\nconst STRAFTER = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRAFTER)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => string(arg1.slice(arg1.indexOf(arg2)).slice(arg2.length)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.StringLiteral) => {\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = a1.slice(a1.indexOf(a2)).slice(a2.length);\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = a1.slice(a1.indexOf(a2)).slice(a2.length);\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-encode\n */\nconst ENCODE_FOR_URI = {\n arity: 1,\n overloads: declare(C.RegularOperator.ENCODE_FOR_URI)\n .onStringly1Typed(() => val => string(encodeURI(val))).collect(),\n};\n\n// See special operators\n// const CONCAT = {}\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-langMatches\n */\nconst langmatches = {\n arity: 2,\n overloads: declare(C.RegularOperator.LANG_MATCHES)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (tag: string, range: string) => bool(X.langMatches(tag, range)),\n ).collect(),\n};\n\nfunction regex2(): (text: string, pattern: string) => E.BooleanLiteral {\n return (text: string, pattern: string) => bool(X.matches(text, pattern));\n}\nfunction regex3(): (text: string, pattern: string, flags: string) => E.BooleanLiteral {\n return (text: string, pattern: string, flags: string) => bool(X.matches(text, pattern, flags));\n}\n/**\n * https://www.w3.org/TR/sparql11-query/#func-regex\n */\nconst REGEX = {\n arity: [ 2, 3 ],\n overloads: declare(C.RegularOperator.REGEX)\n .onBinaryTyped([ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ], regex2)\n .onTernaryTyped([ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING, TypeURL.XSD_STRING ], regex3)\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-replace\n */\nconst REPLACE = {\n arity: [ 3, 4 ],\n overloads: declare(C.RegularOperator.REPLACE)\n .onTernaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg: string, pattern: string, replacement: string) =>\n string(X.replace(arg, pattern, replacement)),\n )\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => ([ arg, pattern, replacement ]: [E.LangStringLiteral, E.StringLiteral, E.StringLiteral]) => {\n const result = X.replace(arg.typedValue, pattern.typedValue, replacement.typedValue);\n return langString(result, arg.language);\n },\n )\n .onQuaternaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg: string, pattern: string, replacement: string, flags: string) =>\n string(X.replace(arg, pattern, replacement, flags)),\n )\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => ([ arg, pattern, replacement, flags ]:\n [E.LangStringLiteral, E.StringLiteral, E.StringLiteral, E.StringLiteral]) => {\n const result = X.replace(arg.typedValue, pattern.typedValue, replacement.typedValue, flags.typedValue);\n return langString(result, arg.language);\n },\n )\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on numerics\n// https://www.w3.org/TR/sparql11-query/#func-numerics\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-abs\n */\nconst abs = {\n arity: 1,\n overloads: declare(C.RegularOperator.ABS)\n .numericConverter(() => num => Math.abs(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-round\n */\nconst round = {\n arity: 1,\n overloads: declare(C.RegularOperator.ROUND)\n .numericConverter(() => num => Math.round(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-ceil\n */\nconst ceil = {\n arity: 1,\n overloads: declare(C.RegularOperator.CEIL)\n .numericConverter(() => num => Math.ceil(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-floor\n */\nconst floor = {\n arity: 1,\n overloads: declare(C.RegularOperator.FLOOR)\n .numericConverter(() => num => Math.floor(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#idp2130040\n */\nconst rand = {\n arity: 0,\n overloads: declare(C.RegularOperator.RAND)\n .set([], () => () => double(Math.random()))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on Dates and Times\n// https://www.w3.org/TR/sparql11-query/#func-date-time\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-now\n */\nconst now = {\n arity: 0,\n overloads: declare(C.RegularOperator.NOW).set([], (sharedContext: ICompleteSharedContext) => () =>\n new E.DateTimeLiteral(toDateTimeRepresentation(\n { date: sharedContext.now, timeZone: sharedContext.defaultTimeZone },\n ))).collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-year\n */\nconst year = {\n arity: 1,\n overloads: declare(C.RegularOperator.YEAR)\n .onDateTime1(\n () => date => integer(date.typedValue.year),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [E.DateLiteral ]) => integer(date.typedValue.year))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-month\n */\nconst month = {\n arity: 1,\n overloads: declare(C.RegularOperator.MONTH)\n .onDateTime1(\n () => date => integer(date.typedValue.month),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [ E.DateLiteral]) => integer(date.typedValue.month))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-day\n */\nconst day = {\n arity: 1,\n overloads: declare(C.RegularOperator.DAY)\n .onDateTime1(\n () => date => integer(date.typedValue.day),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [ E.DateLiteral]) => integer(date.typedValue.day))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-hours\n */\nconst hours = {\n arity: 1,\n overloads: declare(C.RegularOperator.HOURS)\n .onDateTime1(\n () => date => integer(date.typedValue.hours),\n )\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.hours))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-minutes\n */\nconst minutes = {\n arity: 1,\n overloads: declare(C.RegularOperator.MINUTES)\n .onDateTime1(() => date => integer(date.typedValue.minutes))\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.minutes))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-seconds\n */\nconst seconds = {\n arity: 1,\n overloads: declare(C.RegularOperator.SECONDS)\n .onDateTime1(() => date => decimal(date.typedValue.seconds))\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.seconds))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-timezone\n */\nconst timezone = {\n arity: 1,\n overloads: declare(C.RegularOperator.TIMEZONE)\n .onDateTime1(\n () => (date) => {\n const duration: Partial = {\n hours: date.typedValue.zoneHours,\n minutes: date.typedValue.zoneMinutes,\n };\n if (duration.hours === undefined && duration.minutes === undefined) {\n throw new Err.InvalidTimezoneCall(date.str());\n }\n return new E.DayTimeDurationLiteral(duration);\n },\n )\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME ]})\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-tz\n */\nconst tz = {\n arity: 1,\n overloads: declare(C.RegularOperator.TZ)\n .onDateTime1(\n () => date => string(extractRawTimeZone(date.str())),\n )\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME ]})\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Hash functions\n// https://www.w3.org/TR/sparql11-query/#func-hash\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-md5\n */\nconst MD5 = {\n arity: 1,\n overloads: declare(C.RegularOperator.MD5)\n .onString1Typed(() => str => string(md5(str)))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha1\n */\nconst SHA1 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA1)\n .onString1Typed(() => str => string(sha1().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha256\n */\nconst SHA256 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA256)\n .onString1Typed(() => str => string(sha256().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha384\n */\nconst SHA384 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA384)\n .onString1Typed(() => str => string(sha384().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha512\n */\nconst SHA512 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA512)\n .onString1Typed(() => str => string(sha512().update(str).digest('hex')))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions for quoted triples\n// https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n// ----------------------------------------------------------------------------\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n */\nconst triple = {\n arity: 3,\n overloads: declare(C.RegularOperator.TRIPLE)\n .onTerm3(\n context => (...args) => new E.Quad(\n DF.quad(args[0].toRDF(), args[1].toRDF(), args[2].toRDF()),\n context.superTypeProvider,\n ),\n )\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#subject\n */\nconst subject = {\n arity: 1,\n overloads: declare(C.RegularOperator.SUBJECT)\n .onQuad1(() => quad => quad.subject)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#predicate\n */\nconst predicate = {\n arity: 1,\n overloads: declare(C.RegularOperator.PREDICATE)\n .onQuad1(() => quad => quad.predicate)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#object\n */\nconst object = {\n arity: 1,\n overloads: declare(C.RegularOperator.OBJECT)\n .onQuad1(() => quad => quad.object)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#istriple\n */\nconst istriple = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_TRIPLE)\n .onTerm1(() => term => bool(term.termType === 'quad'))\n .collect(),\n};\n\n// End definitions.\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n\n/**\n * Collect all the definitions from above into an object\n */\nexport const definitions: Record = {\n // --------------------------------------------------------------------------\n // Operator Mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n // --------------------------------------------------------------------------\n '!': not,\n uplus: unaryPlus,\n uminus: unaryMinus,\n '*': multiplication,\n '/': division,\n '+': addition,\n '-': subtraction,\n '=': equality,\n '!=': inequality,\n '<': lesserThan,\n '>': greaterThan,\n '<=': lesserThanEqual,\n '>=': greaterThanEqual,\n\n // --------------------------------------------------------------------------\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n // --------------------------------------------------------------------------\n isiri: isIRI,\n isuri: isIRI,\n isblank: isBlank,\n isliteral: isLiteral,\n isnumeric: isNumeric,\n str: STR,\n lang,\n datatype,\n iri: IRI,\n uri: IRI,\n // 'BNODE': BNODE (see special operators),\n strdt: STRDT,\n strlang: STRLANG,\n uuid: UUID,\n struuid: STRUUID,\n\n // --------------------------------------------------------------------------\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // --------------------------------------------------------------------------\n strlen: STRLEN,\n substr: SUBSTR,\n ucase: UCASE,\n lcase: LCASE,\n strstarts: STRSTARTS,\n strends: STRENDS,\n contains: CONTAINS,\n strbefore: STRBEFORE,\n strafter: STRAFTER,\n encode_for_uri: ENCODE_FOR_URI,\n // 'concat': CONCAT (see special operators)\n langmatches,\n regex: REGEX,\n replace: REPLACE,\n\n // --------------------------------------------------------------------------\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n // --------------------------------------------------------------------------\n abs,\n round,\n ceil,\n floor,\n rand,\n\n // --------------------------------------------------------------------------\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n // --------------------------------------------------------------------------\n now,\n year,\n month,\n day,\n hours,\n minutes,\n seconds,\n timezone,\n tz,\n\n // --------------------------------------------------------------------------\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n // --------------------------------------------------------------------------\n md5: MD5,\n sha1: SHA1,\n sha256: SHA256,\n sha384: SHA384,\n sha512: SHA512,\n\n // --------------------------------------------------------------------------\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n // --------------------------------------------------------------------------\n triple,\n subject,\n predicate,\n object,\n istriple,\n};\n","import type * as RDF from '@rdfjs/types';\nimport * as uuid from 'uuid';\nimport * as E from '../expressions';\nimport * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { bool, declare, expressionToVar, langString, string } from './Helpers';\nimport type { EvalContextAsync, EvalContextSync, OverloadTree } from '.';\nimport { regularFunctions, specialFunctions } from '.';\n\ntype Term = E.TermExpression;\ntype PTerm = Promise;\n\n// ----------------------------------------------------------------------------\n// Functional forms\n// ----------------------------------------------------------------------------\n\n// BOUND ----------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-bound\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst bound: ISpecialDefinition = {\n arity: 1,\n async applyAsync({ args, mapping }: EvalContextAsync): PTerm {\n return bound_({ args, mapping });\n },\n applySynchronously({ args, mapping }: EvalContextSync): Term {\n return bound_({ args, mapping });\n },\n};\n\nfunction bound_({ args, mapping }: { args: E.Expression[]; mapping: RDF.Bindings }): E.BooleanLiteral {\n const variable = args[0];\n if (variable.expressionType !== E.ExpressionType.Variable) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BOUND);\n }\n const val = mapping.has(expressionToVar(variable));\n return bool(val);\n}\n\n// IF -------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-if\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst ifSPARQL: ISpecialDefinition = {\n arity: 3,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const valFirst = await evaluate(args[0], mapping);\n const ebv = valFirst.coerceEBV();\n return ebv ?\n evaluate(args[1], mapping) :\n evaluate(args[2], mapping);\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const valFirst = evaluate(args[0], mapping);\n const ebv = valFirst.coerceEBV();\n return ebv ?\n evaluate(args[1], mapping) :\n evaluate(args[2], mapping);\n },\n};\n\n// COALESCE -------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-coalesce\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst coalesce: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const errors: Error[] = [];\n for (const expr of args) {\n try {\n return await evaluate(expr, mapping);\n } catch (error: unknown) {\n errors.push( error);\n }\n }\n throw new Err.CoalesceError(errors);\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const errors: Error[] = [];\n for (const expr of args) {\n try {\n return evaluate(expr, mapping);\n } catch (error: unknown) {\n errors.push( error);\n }\n }\n throw new Err.CoalesceError(errors);\n },\n};\n\n// Logical-or (||) ------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-logical-or\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst logicalOr: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = await evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (left) {\n return bool(true);\n }\n const rightTerm = await evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = await evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (!rightError) {\n throw error;\n }\n return bool(true);\n }\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (left) {\n return bool(true);\n }\n const rightTerm = evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (!rightError) {\n throw error;\n }\n return bool(true);\n }\n },\n};\n\n// Logical-and (&&) -----------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-logical-and\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst logicalAnd: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = await evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (!left) {\n return bool(false);\n }\n const rightTerm = await evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = await evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (rightError) {\n throw error;\n }\n return bool(false);\n }\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (!left) {\n return bool(false);\n }\n const rightTerm = evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (rightError) {\n throw error;\n }\n return bool(false);\n }\n },\n};\n\n// SameTerm -------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sameTerm\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst sameTerm: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args.map(arg => evaluate(arg, mapping));\n const [ left, right ] = await Promise.all([ leftExpr, rightExpr ]);\n return bool(left.toRDF().equals(right.toRDF()));\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ left, right ] = args.map(arg => evaluate(arg, mapping));\n return bool(left.toRDF().equals(right.toRDF()));\n },\n};\n\n// IN -------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-in\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst inSPARQL: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length > 0;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate } = context;\n const [ leftExpr, ...remaining ] = args;\n const left = await evaluate(leftExpr, mapping);\n return inRecursiveAsync(left, { ...context, args: remaining }, []);\n },\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate } = context;\n const [ leftExpr, ...remaining ] = args;\n const left = evaluate(leftExpr, mapping);\n return inRecursiveSync(left, { ...context, args: remaining }, []);\n },\n};\n\nasync function inRecursiveAsync(\n needle: Term,\n context: EvalContextAsync,\n results: (Error | false)[],\n): PTerm {\n const { args, mapping, evaluate } = context;\n if (args.length === 0) {\n const noErrors = results.every(val => !val);\n return noErrors ? bool(false) : Promise.reject(new Err.InError(results));\n }\n\n try {\n const nextExpression = args.shift();\n // We know this will not be undefined because we check args.length === 0\n const next = await evaluate(nextExpression!, mapping);\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n if (( isEqual.apply([ needle, next ], context)).typedValue) {\n return bool(true);\n }\n return inRecursiveAsync(needle, context, [ ...results, false ]);\n } catch (error: unknown) {\n return inRecursiveAsync(needle, context, [ ...results, error ]);\n }\n}\n\nfunction inRecursiveSync(\n needle: Term,\n context: EvalContextSync,\n results: (Error | false)[],\n): Term {\n const { args, mapping, evaluate } = context;\n if (args.length === 0) {\n const noErrors = results.every(val => !val);\n if (noErrors) {\n return bool(false);\n }\n throw new Err.InError(results);\n }\n\n try {\n const nextExpression = args.shift();\n // We know this will not be undefined because we check args.length === 0\n const next = evaluate(nextExpression!, mapping);\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n if (( isEqual.apply([ needle, next ], context)).typedValue) {\n return bool(true);\n }\n return inRecursiveSync(needle, context, [ ...results, false ]);\n } catch (error: unknown) {\n return inRecursiveSync(needle, context, [ ...results, error ]);\n }\n}\n\n// NOT IN ---------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-not-in\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst notInSPARQL: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length > 0;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const _in = specialFunctions[C.SpecialOperator.IN];\n const isIn = await _in.applyAsync(context);\n return bool(!( isIn).typedValue);\n },\n applySynchronously(context: EvalContextSync): Term {\n const _in = specialFunctions[C.SpecialOperator.IN];\n const isIn = _in.applySynchronously(context);\n return bool(!( isIn).typedValue);\n },\n};\n\n// ----------------------------------------------------------------------------\n// Annoying functions\n// ----------------------------------------------------------------------------\n\n// CONCAT ---------------------------------------------------------------------\n\n/**\n * This OverloadTree with the constant function will handle both type promotion and subtype-substitution\n */\nconst concatTree: OverloadTree = declare(C.SpecialOperator.CONCAT).onStringly1(() => expr => expr)\n .collect();\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-concat\n */\nconst concat: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate, functionArgumentsCache, superTypeProvider } = context;\n const pLits: Promise>[] = args\n .map(async expr => evaluate(expr, mapping))\n .map(async(pTerm) => {\n const operation = concatTree.search([ await pTerm ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.CONCAT);\n }\n return > operation(context)([ await pTerm ]);\n });\n const lits = await Promise.all(pLits);\n const strings = lits.map(lit => lit.typedValue);\n const joined = strings.join('');\n const lang = langAllEqual(lits) ? lits[0].language : undefined;\n return lang ? langString(joined, lang) : string(joined);\n },\n\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const lits = args\n .map(expr => evaluate(expr, mapping))\n .map((pTerm) => {\n const operation = concatTree.search([ pTerm ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.CONCAT);\n }\n return > operation(context)([ pTerm ]);\n });\n const strings = lits.map(lit => lit.typedValue);\n const joined = strings.join('');\n const lang = langAllEqual(lits) ? lits[0].language : undefined;\n return lang ? langString(joined, lang) : string(joined);\n },\n};\n\nfunction langAllEqual(lits: E.Literal[]): boolean {\n return lits.length > 0 && lits.every(lit => lit.language === lits[0].language);\n}\n\n// ----------------------------------------------------------------------------\n// Context dependant functions\n// ----------------------------------------------------------------------------\n\n// BNODE ---------------------------------------------------------------------\n\n/**\n * This OverloadTree with the constant function will handle both type promotion and subtype-substitution\n */\nconst bnodeTree = declare(C.SpecialOperator.BNODE).onString1(() => arg => arg).collect();\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-bnode\n * id has to be distinct over all id's in dataset\n */\nconst BNODE: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length === 0 || args.length === 1;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const input = args.length === 1 ?\n await evaluate(args[0], mapping) :\n undefined;\n\n let strInput: string | undefined;\n if (input) {\n const operation = bnodeTree.search([ input ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BNODE);\n }\n strInput = operation(context)([ input ]).str();\n }\n\n if (context.bnode) {\n const bnode = await context.bnode(strInput);\n return new E.BlankNode(bnode);\n }\n\n return BNODE_(strInput);\n },\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const input = args.length === 1 ?\n evaluate(args[0], mapping) :\n undefined;\n\n let strInput: string | undefined;\n if (input) {\n const operation = bnodeTree.search([ input ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BNODE);\n }\n strInput = operation(context)([ input ]).str();\n }\n\n if (context.bnode) {\n const bnode = context.bnode(strInput);\n return new E.BlankNode(bnode);\n }\n\n return BNODE_(strInput);\n },\n};\n\nfunction BNODE_(input?: string): E.BlankNode {\n return new E.BlankNode(input ?? uuid.v4());\n}\n\n// ----------------------------------------------------------------------------\n// Wrap these declarations into functions\n// ----------------------------------------------------------------------------\n\nexport interface ISpecialDefinition {\n arity: number;\n applyAsync: E.SpecialApplicationAsync;\n applySynchronously: E.SpecialApplicationSync;\n checkArity?: (args: E.Expression[]) => boolean;\n}\n\nexport const specialDefinitions: Record = {\n // --------------------------------------------------------------------------\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // --------------------------------------------------------------------------\n bound,\n if: ifSPARQL,\n coalesce,\n '&&': logicalAnd,\n '||': logicalOr,\n sameterm: sameTerm,\n in: inSPARQL,\n notin: notInSPARQL,\n\n // Annoying functions\n concat,\n\n // Context dependent functions\n bnode: BNODE,\n};\n","// https://www.w3.org/TR/xpath-functions/#func-matches\n// https://www.w3.org/TR/xpath-functions/#flags\nexport function matches(text: string, pattern: string, flags?: string): boolean {\n // TODO: Only flags 'i' and 'm' match between XPath and JS.\n // 's', 'x', 'q', would need proper implementation.\n const reg = new RegExp(pattern, flags);\n return reg.test(text);\n}\n\n// TODO: Fix flags\n// https://www.w3.org/TR/xpath-functions/#func-replace\nexport function replace(arg: string, pattern: string, replacement: string, flags?: string): string {\n let reg = new RegExp(pattern, flags);\n if (!reg.global) {\n const flags_ = flags ?? '';\n reg = new RegExp(pattern, `${flags_}g`);\n }\n return arg.replace(reg, replacement);\n}\n\n// TODO: Not an XPath function\n// TODO: Publish as package\n// https://www.ietf.org/rfc/rfc4647.txt\n// https://www.w3.org/TR/sparql11-query/#func-langMatches\nexport function langMatches(tag: string, range: string): boolean {\n const langTags = tag.split('-');\n const rangeTags = range.split('-');\n\n if (!_matchLangTag(rangeTags[0], langTags[0]) &&\n !_isWildCard(langTags[0])) {\n return false;\n }\n\n let lI = 1;\n let rI = 1;\n while (rI < rangeTags.length) {\n if (_isWildCard(rangeTags[rI])) {\n rI++;\n continue;\n }\n if (lI === langTags.length) {\n return false;\n }\n if (_matchLangTag(rangeTags[rI], langTags[lI])) {\n lI++;\n rI++;\n continue;\n }\n if (langTags[lI].length === 1) {\n return false;\n }\n lI++;\n }\n return true;\n}\n\nfunction _isWildCard(tag: string): boolean {\n return tag === '*';\n}\n\nfunction _matchLangTag(left: string, right: string): boolean {\n const matchInitial = new RegExp(`/${left}/`, 'iu');\n return matchInitial.test(`/${right}/`);\n}\n","import { Algebra as Alg } from 'sparqlalgebrajs';\nimport type { AsyncExtensionFunction, AsyncExtensionFunctionCreator } from '../evaluators/AsyncEvaluator';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type { SyncExtensionFunction, SyncExtensionFunctionCreator } from '../evaluators/SyncEvaluator';\nimport * as E from '../expressions';\nimport type { AsyncExtensionApplication, SimpleApplication } from '../expressions';\nimport { namedFunctions, regularFunctions, specialFunctions } from '../functions';\nimport * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { ExtensionFunctionError } from '../util/Errors';\nimport type { ITermTransformer } from './TermTransformer';\nimport { TermTransformer } from './TermTransformer';\n\ntype FunctionCreatorConfig = { type: 'sync'; creator: SyncExtensionFunctionCreator } |\n{ type: 'async'; creator: AsyncExtensionFunctionCreator };\n\ntype AlgebraTransformConfig = ICompleteSharedContext & FunctionCreatorConfig;\n\nexport interface IAlgebraTransformer extends ITermTransformer {\n transformAlgebra: (expr: Alg.Expression) => E.Expression;\n}\n\nexport class AlgebraTransformer extends TermTransformer implements IAlgebraTransformer {\n private readonly creatorConfig: FunctionCreatorConfig;\n public constructor(protected readonly algebraConfig: AlgebraTransformConfig) {\n super(algebraConfig.superTypeProvider);\n this.creatorConfig = { type: algebraConfig.type, creator: algebraConfig.creator };\n }\n\n public transformAlgebra(expr: Alg.Expression): E.Expression {\n const types = Alg.expressionTypes;\n\n switch (expr.expressionType) {\n case types.TERM:\n return this.transformTerm(expr);\n case types.OPERATOR:\n return this.transformOperator(expr);\n case types.NAMED:\n return this.transformNamed(expr);\n case types.EXISTENCE:\n return AlgebraTransformer.transformExistence(expr);\n case types.AGGREGATE:\n return AlgebraTransformer.transformAggregate(expr);\n case types.WILDCARD:\n return AlgebraTransformer.transformWildcard(expr);\n }\n }\n\n private static transformWildcard(term: Alg.WildcardExpression): E.Expression {\n return new E.NamedNode(term.wildcard.value);\n }\n\n private transformOperator(expr: Alg.OperatorExpression): E.OperatorExpression | E.SpecialOperatorExpression {\n const operator = expr.operator.toLowerCase();\n if (C.SpecialOperators.has(operator)) {\n const specialOp = operator;\n const specialArgs = expr.args.map(arg => this.transformAlgebra(arg));\n const specialFunc = specialFunctions[specialOp];\n if (!specialFunc.checkArity(specialArgs)) {\n throw new Err.InvalidArity(specialArgs, specialOp);\n }\n return new E.SpecialOperator(specialArgs, specialFunc.applyAsync, specialFunc.applySynchronously);\n }\n if (!C.Operators.has(operator)) {\n throw new Err.UnknownOperator(expr.operator);\n }\n const regularOp = operator;\n const regularArgs = expr.args.map(arg => this.transformAlgebra(arg));\n const regularFunc = regularFunctions[regularOp];\n if (!AlgebraTransformer.hasCorrectArity(regularArgs, regularFunc.arity)) {\n throw new Err.InvalidArity(regularArgs, regularOp);\n }\n return new E.Operator(regularArgs, args => regularFunc.apply(args, this.algebraConfig));\n }\n\n private wrapSyncFunction(func: SyncExtensionFunction, name: string): SimpleApplication {\n return (args) => {\n try {\n const res = func(args.map(arg => arg.toRDF()));\n return this.transformRDFTermUnsafe(res);\n } catch (error: unknown) {\n throw new ExtensionFunctionError(name, error);\n }\n };\n }\n\n private wrapAsyncFunction(func: AsyncExtensionFunction, name: string): AsyncExtensionApplication {\n return async(args) => {\n try {\n const res = await func(args.map(arg => arg.toRDF()));\n return this.transformRDFTermUnsafe(res);\n } catch (error: unknown) {\n throw new ExtensionFunctionError(name, error);\n }\n };\n }\n\n // TODO: Support passing functions to override default behaviour;\n private transformNamed(expr: Alg.NamedExpression):\n E.NamedExpression | E.AsyncExtensionExpression | E.SyncExtensionExpression {\n const funcName = expr.name.value;\n const namedArgs = expr.args.map(arg => this.transformAlgebra(arg));\n if (C.NamedOperators.has(funcName)) {\n // Return a basic named expression\n const op = expr.name.value;\n const namedFunc = namedFunctions[op];\n return new E.Named(expr.name, namedArgs, args => namedFunc.apply(args, this.algebraConfig));\n }\n if (this.creatorConfig.type === 'sync') {\n // Expression might be extension function, check this for the sync\n const syncExtensionFunc = this.creatorConfig.creator(expr.name);\n if (syncExtensionFunc) {\n const simpleAppl = this.wrapSyncFunction(syncExtensionFunc, expr.name.value);\n return new E.SyncExtension(expr.name, namedArgs, simpleAppl);\n }\n } else {\n // The expression might be an extension function, check this for the async case\n const asyncExtensionFunc = this.creatorConfig.creator(expr.name);\n if (asyncExtensionFunc) {\n const asyncAppl = this.wrapAsyncFunction(asyncExtensionFunc, expr.name.value);\n return new E.AsyncExtension(expr.name, namedArgs, asyncAppl);\n }\n }\n throw new Err.UnknownNamedOperator(expr.name.value);\n }\n\n private static hasCorrectArity(args: E.Expression[], arity: number | number[]): boolean {\n // If the function has overloaded arity, the actual arity needs to be present.\n if (Array.isArray(arity)) {\n return arity.includes(args.length);\n }\n\n return args.length === arity;\n }\n\n public static transformAggregate(expr: Alg.AggregateExpression): E.Aggregate {\n const name = expr.aggregator;\n return new E.Aggregate(name, expr);\n }\n\n public static transformExistence(expr: Alg.ExistenceExpression): E.Existence {\n return new E.Existence(expr);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RDFString from 'rdf-string';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport { Algebra } from 'sparqlalgebrajs';\nimport * as E from '../expressions';\nimport { TypeURL } from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { isExpressionError } from '../util/Errors';\nimport {\n parseDate,\n parseDateTime,\n parseDayTimeDuration,\n parseDuration,\n parseTime,\n parseYearMonthDuration,\n} from '../util/Parsing';\nimport * as P from '../util/Parsing';\nimport { getSuperTypeDict } from '../util/TypeHandling';\nimport type { ISuperTypeProvider, GeneralSuperTypeDict } from '../util/TypeHandling';\n\nexport interface ITermTransformer {\n transformRDFTermUnsafe: (term: RDF.Term) => E.Term;\n transformLiteral: (lit: RDF.Literal) => E.Literal;\n}\n\nexport class TermTransformer implements ITermTransformer {\n public constructor(protected readonly superTypeProvider: ISuperTypeProvider) {}\n\n /**\n * Transforms an RDF term to the internal representation of a term,\n * assuming it is not a variable, which would be an expression (internally).\n *\n * @param term RDF term to transform into internal representation of a term\n */\n public transformRDFTermUnsafe(term: RDF.Term): E.Term {\n return this.transformTerm({\n term,\n type: Algebra.types.EXPRESSION,\n expressionType: Algebra.expressionTypes.TERM,\n });\n }\n\n protected transformTerm(term: Alg.TermExpression): E.Expression {\n if (!term.term) {\n throw new Err.InvalidExpression(term);\n }\n\n switch (term.term.termType) {\n case 'Variable':\n return new E.Variable(RDFString.termToString(term.term));\n case 'Literal':\n return this.transformLiteral(term.term);\n case 'NamedNode':\n return new E.NamedNode(term.term.value);\n case 'BlankNode':\n return new E.BlankNode(term.term.value);\n case 'Quad':\n return new E.Quad(term.term, this.superTypeProvider);\n default:\n throw new Err.InvalidTermType(term);\n }\n }\n\n /**\n * @param lit the rdf literal we want to transform to an internal Literal expression.\n */\n public transformLiteral(lit: RDF.Literal): E.Literal {\n // Both here and within the switch we transform to LangStringLiteral or StringLiteral.\n // We do this when we detect a simple literal being used.\n // Original issue regarding this behaviour: https://github.com/w3c/sparql-12/issues/112\n if (!lit.datatype || [ null, undefined, '' ].includes(lit.datatype.value)) {\n return lit.language ?\n new E.LangStringLiteral(lit.value, lit.language) :\n new E.StringLiteral(lit.value);\n }\n\n const dataType = lit.datatype.value;\n const superTypeDict: GeneralSuperTypeDict = getSuperTypeDict(dataType, this.superTypeProvider);\n\n // The order of checking matters! Check most specific types first!\n try {\n if (TypeURL.XSD_STRING in superTypeDict) {\n return new E.StringLiteral(lit.value, dataType);\n }\n if (TypeURL.RDF_LANG_STRING in superTypeDict) {\n return new E.LangStringLiteral(lit.value, lit.language);\n }\n if (TypeURL.XSD_YEAR_MONTH_DURATION in superTypeDict) {\n return new E.YearMonthDurationLiteral(parseYearMonthDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DAY_TIME_DURATION in superTypeDict) {\n return new E.DayTimeDurationLiteral(parseDayTimeDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DURATION in superTypeDict) {\n return new E.DurationLiteral(parseDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE_TIME in superTypeDict) {\n const dateVal: Date = new Date(lit.value);\n if (Number.isNaN(dateVal.getTime())) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.DateTimeLiteral(parseDateTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE in superTypeDict) {\n return new E.DateLiteral(parseDate(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_TIME in superTypeDict) {\n return new E.TimeLiteral(parseTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_BOOLEAN in superTypeDict) {\n if (lit.value !== 'true' && lit.value !== 'false' && lit.value !== '1' && lit.value !== '0') {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.BooleanLiteral(lit.value === 'true' || lit.value === '1', lit.value);\n }\n if (TypeURL.XSD_DECIMAL in superTypeDict) {\n const intVal: number | undefined = P.parseXSDDecimal(lit.value);\n if (intVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (TypeURL.XSD_INTEGER in superTypeDict) {\n return new E.IntegerLiteral(intVal, dataType, lit.value);\n }\n // If type is not an integer it's just a decimal.\n return new E.DecimalLiteral(intVal, dataType, lit.value);\n }\n const isFloat = TypeURL.XSD_FLOAT in superTypeDict;\n const isDouble = TypeURL.XSD_DOUBLE in superTypeDict;\n if (isFloat || isDouble) {\n const doubleVal: number | undefined = P.parseXSDFloat(lit.value);\n if (doubleVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (isFloat) {\n return new E.FloatLiteral(doubleVal, dataType, lit.value);\n }\n return new E.DoubleLiteral(doubleVal, dataType, lit.value);\n }\n return new E.Literal(lit.value, dataType, lit.value);\n } catch (error: unknown) {\n if (error instanceof Error && isExpressionError(error)) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n throw error;\n }\n }\n}\n","export type KnownLiteralTypes = TypeAlias | TypeURL;\n\nexport enum TypeAlias {\n // Numeric is everything defined in https://www.w3.org/TR/sparql11-query/#operandDataTypes\n SPARQL_NUMERIC = 'SPARQL_NUMERIC',\n /**\n * Stringly is everything defined in https://www.w3.org/TR/sparql11-query/#func-strings\n * In other words it is a simple literal, a plain literal with language tag, or a literal with datatype xsd:string\n * In other words, since expression-evaluator transforms a simple literal to xsd_string.\n * It is RDF_LANG_STRING or XSD_STRING.\n * Reasons for this are mentioned here: w3c/sparql-12#112\n */\n SPARQL_STRINGLY = 'SPARQL_STRINGLY',\n}\n\nexport enum TypeURL {\n XSD_ANY_URI = 'http://www.w3.org/2001/XMLSchema#anyURI',\n XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string',\n RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n\n XSD_BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n\n XSD_DATE_TIME = 'http://www.w3.org/2001/XMLSchema#dateTime',\n XSD_DATE_TIME_STAMP = 'http://www.w3.org/2001/XMLSchema#dateTimeStamp',\n XSD_DATE = 'http://www.w3.org/2001/XMLSchema#date',\n\n XSD_G_MONTH = 'http://www.w3.org/2001/XMLSchema#gMonth',\n XSD_G_MONTHDAY = 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n XSD_G_YEAR = 'http://www.w3.org/2001/XMLSchema#gYear',\n XSD_G_YEAR_MONTH = 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n XSD_TIME = 'http://www.w3.org/2001/XMLSchema#time',\n XSD_G_DAY = 'http://www.w3.org/2001/XMLSchema#gDay',\n\n // Numeric types\n XSD_DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n XSD_FLOAT = 'http://www.w3.org/2001/XMLSchema#float',\n XSD_DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n\n // Derived numeric types\n XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n\n XSD_NON_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n XSD_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n\n XSD_LONG = 'http://www.w3.org/2001/XMLSchema#long',\n XSD_INT = 'http://www.w3.org/2001/XMLSchema#int',\n XSD_SHORT = 'http://www.w3.org/2001/XMLSchema#short',\n XSD_BYTE = 'http://www.w3.org/2001/XMLSchema#byte',\n\n XSD_NON_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n XSD_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n XSD_UNSIGNED_LONG = 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n XSD_UNSIGNED_INT = 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n XSD_UNSIGNED_SHORT = 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n XSD_UNSIGNED_BYTE = 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n\n // Derived String Type\n XSD_NORMALIZED_STRING = 'http://www.w3.org/2001/XMLSchema#normalizedString',\n XSD_TOKEN = 'http://www.w3.org/2001/XMLSchema#token',\n XSD_LANGUAGE = 'http://www.w3.org/2001/XMLSchema#language',\n XSD_NM_TOKEN = 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n\n XSD_NAME = 'http://www.w3.org/2001/XMLSchema#name',\n XSD_NC_NAME = 'http://www.w3.org/2001/XMLSchema#NCName',\n XSD_ENTITY = 'http://www.w3.org/2001/XMLSchema#ENTITY',\n XSD_ID = 'http://www.w3.org/2001/XMLSchema#ID',\n XSD_ID_REF = 'http://www.w3.org/2001/XMLSchema#IDREF',\n\n // Other types\n XSD_DURATION = 'http://www.w3.org/2001/XMLSchema#duration',\n XSD_YEAR_MONTH_DURATION = 'http://www.w3.org/2001/XMLSchema#yearMonthDuration',\n XSD_DAY_TIME_DURATION = 'http://www.w3.org/2001/XMLSchema#dayTimeDuration',\n}\n\n// ----------------------------------------------------------------------------\n// Operators\n// ----------------------------------------------------------------------------\n\nexport type Operator = RegularOperator | SpecialOperator;\n\n// TODO: Remove unneeded double typing\nexport enum RegularOperator {\n // Operator mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n NOT = '!',\n UMINUS = 'uminus',\n UPLUS = 'uplus',\n // LOGICAL_AND // See SpecialOperators\n // LOGICAL_OR // See SpecialOperators\n\n EQUAL = '=',\n NOT_EQUAL = '!=',\n LT = '<',\n GT = '>',\n LTE = '<=',\n GTE = '>=',\n\n MULTIPLICATION = '*',\n DIVISION = '/',\n ADDITION = '+',\n SUBTRACTION = '-',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // See SpecialOperators\n\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n IS_IRI = 'isiri',\n IS_URI = 'isuri',\n IS_BLANK = 'isblank',\n IS_LITERAL = 'isliteral',\n IS_NUMERIC = 'isnumeric',\n STR = 'str',\n LANG = 'lang',\n DATATYPE = 'datatype',\n IRI = 'iri',\n URI = 'uri',\n // BNODE = 'BNODE', (see special operators)\n STRDT = 'strdt',\n STRLANG = 'strlang',\n UUID = 'uuid',\n STRUUID = 'struuid',\n\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-strings\n STRLEN = 'strlen',\n SUBSTR = 'substr',\n UCASE = 'ucase',\n LCASE = 'lcase',\n STRSTARTS = 'strstarts',\n STRENDS = 'strends',\n CONTAINS = 'contains',\n STRBEFORE = 'strbefore',\n STRAFTER = 'strafter',\n ENCODE_FOR_URI = 'encode_for_uri',\n // CONCAT = 'concat' (see special operators)\n LANG_MATCHES = 'langmatches',\n REGEX = 'regex',\n REPLACE = 'replace',\n\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n ABS = 'abs',\n ROUND = 'round',\n CEIL = 'ceil',\n FLOOR = 'floor',\n RAND = 'rand',\n\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n NOW = 'now',\n YEAR = 'year',\n MONTH = 'month',\n DAY = 'day',\n HOURS = 'hours',\n MINUTES = 'minutes',\n SECONDS = 'seconds',\n TIMEZONE = 'timezone',\n TZ = 'tz',\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n MD5 = 'md5',\n SHA1 = 'sha1',\n SHA256 = 'sha256',\n SHA384 = 'sha384',\n SHA512 = 'sha512',\n\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // See Named Operators\n\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n TRIPLE = 'triple',\n SUBJECT = 'subject',\n PREDICATE = 'predicate',\n OBJECT = 'object',\n IS_TRIPLE = 'istriple',\n}\n\nexport enum SpecialOperator {\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n BOUND = 'bound',\n IF = 'if',\n COALESCE = 'coalesce',\n // EXISTENCE = 'existence',\n LOGICAL_OR = '||',\n LOGICAL_AND = '&&',\n // EQUAL = '=', // See RegularOperators\n SAME_TERM = 'sameterm',\n IN = 'in',\n NOT_IN = 'notin',\n\n // Annoying functions - Has variable arity\n CONCAT = 'concat',\n\n // Context dependant functions\n BNODE = 'bnode',\n}\n\nexport const RegularOperators: Set = new Set(Object.values(RegularOperator));\nexport const SpecialOperators: Set = new Set(Object.values(SpecialOperator));\nexport const Operators = new Set([ ...RegularOperators, ...SpecialOperators ]);\n\nexport enum SetFunction {\n COUNT = 'count',\n SUM = 'sum',\n MIN = 'min',\n MAX = 'max',\n AVG = 'avg',\n GROUP_CONCAT = 'group_concat',\n SAMPLE = 'sample',\n}\nexport const SetFunctions = new Set(Object.values(SetFunction));\n\nexport type NamedOperator =\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n TypeURL.XSD_STRING\n | TypeURL.XSD_FLOAT\n | TypeURL.XSD_DOUBLE\n | TypeURL.XSD_DECIMAL\n | TypeURL.XSD_INTEGER\n | TypeURL.XSD_DATE_TIME\n | TypeURL.XSD_DATE\n | TypeURL.XSD_BOOLEAN\n | TypeURL.XSD_TIME\n | TypeURL.XSD_DURATION\n | TypeURL.XSD_DAY_TIME_DURATION\n | TypeURL.XSD_YEAR_MONTH_DURATION;\n\nexport const NamedOperators = new Set([\n TypeURL.XSD_STRING,\n TypeURL.XSD_FLOAT,\n TypeURL.XSD_DOUBLE,\n TypeURL.XSD_DECIMAL,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_DATE_TIME,\n TypeURL.XSD_DATE,\n TypeURL.XSD_BOOLEAN,\n TypeURL.XSD_TIME,\n TypeURL.XSD_DURATION,\n TypeURL.XSD_DAY_TIME_DURATION,\n TypeURL.XSD_YEAR_MONTH_DURATION,\n]);\n","export interface ITimeZoneRepresentation {\n // https://www.w3.org/TR/xpath-functions/#func-implicit-timezone\n // Type is a dayTimeDuration.\n // We use a separate dataType since it makes TS type modifications and JS object copying easier.\n zoneHours: number;\n zoneMinutes: number;\n}\n\nexport interface IDateRepresentation extends Partial {\n year: number;\n month: number;\n day: number;\n}\n\nexport interface ITimeRepresentation extends Partial {\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nexport interface IDayTimeDurationRepresentation {\n hours: number;\n minutes: number;\n seconds: number;\n day: number;\n}\n\nexport interface IYearMonthDurationRepresentation {\n year: number;\n month: number;\n}\n\nexport type IDurationRepresentation = IYearMonthDurationRepresentation & IDayTimeDurationRepresentation;\nexport type IDateTimeRepresentation = IDateRepresentation & ITimeRepresentation;\n\n// Important is to notice JS and XSD datatypes have different defaulted values\n// | Field | Default in JS | Default in XSD_DayTime | Default in XSD_Duration |\n// | Month | 0 | 1 | 0 |\n// | Day | 1 | 1 | 0 |\n\nexport function defaultedDayTimeDurationRepresentation(rep: Partial):\nIDayTimeDurationRepresentation {\n return {\n day: rep.day ?? 0,\n hours: rep.hours ?? 0,\n minutes: rep.minutes ?? 0,\n seconds: rep.seconds ?? 0,\n };\n}\n\nexport function defaultedYearMonthDurationRepresentation(rep: Partial):\nIYearMonthDurationRepresentation {\n return {\n year: rep.year ?? 0,\n month: rep.month ?? 0,\n };\n}\n\nexport function defaultedDurationRepresentation(\n rep: Partial,\n): IDurationRepresentation {\n return {\n ...defaultedDayTimeDurationRepresentation(rep),\n ...defaultedYearMonthDurationRepresentation(rep),\n };\n}\n\nexport function simplifyDurationRepresentation(rep: Partial):\nPartial {\n const temp = defaultedDurationRepresentation(rep);\n const res: Partial = {};\n\n // Simplify year part\n const years = temp.year + Math.trunc(temp.month / 12);\n if (years) {\n res.year = years;\n temp.month %= 12;\n }\n if (temp.month) {\n res.month = temp.month;\n }\n\n // Simplify day part\n const days = temp.day + Math.trunc(temp.hours / 24) +\n Math.trunc(temp.minutes / (24 * 60)) + Math.trunc(temp.seconds / (24 * 60 * 60));\n if (days) {\n res.day = days;\n temp.hours %= 24;\n temp.minutes %= 24 * 60;\n temp.seconds %= 24 * 60 * 60;\n }\n const hours = temp.hours + Math.trunc(temp.minutes / 60) +\n Math.trunc(temp.seconds / (60 * 60));\n if (hours) {\n res.hours = hours;\n temp.minutes %= 60;\n temp.seconds %= 60 * 60;\n }\n const minutes = temp.minutes + Math.trunc(temp.seconds / 60);\n if (minutes) {\n res.minutes = minutes;\n temp.seconds %= 60;\n }\n if (temp.seconds) {\n res.seconds = temp.seconds;\n }\n return res;\n}\n\nexport function defaultedDateTimeRepresentation(rep: Partial): IDateTimeRepresentation {\n return {\n ...rep,\n day: rep.day ?? 1,\n hours: rep.hours ?? 0,\n month: rep.month ?? 1,\n year: rep.year ?? 0,\n seconds: rep.seconds ?? 0,\n minutes: rep.minutes ?? 0,\n };\n}\n\nexport function toDateTimeRepresentation({ date, timeZone }:\n{ date: Date; timeZone: ITimeZoneRepresentation }): IDateTimeRepresentation {\n return {\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n zoneHours: timeZone.zoneHours,\n zoneMinutes: timeZone.zoneMinutes,\n };\n}\n\nexport function negateDuration(dur: Partial): Partial {\n return {\n year: dur.year === undefined ? undefined : -1 * dur.year,\n month: dur.month === undefined ? undefined : -1 * dur.month,\n day: dur.day === undefined ? undefined : -1 * dur.day,\n hours: dur.hours === undefined ? undefined : -1 * dur.hours,\n minutes: dur.minutes === undefined ? undefined : -1 * dur.minutes,\n seconds: dur.seconds === undefined ? undefined : -1 * dur.seconds,\n };\n}\n\nexport function toJSDate(date: IDateTimeRepresentation): Date {\n // The given hours will be assumed to be local time.\n const res = new Date(\n date.year,\n date.month - 1,\n date.day,\n date.hours,\n date.minutes,\n Math.trunc(date.seconds),\n (date.seconds % 1) * 1_000,\n );\n if (date.year >= 0 && date.year < 100) {\n // Special rule of date has gone int action:\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date#individual_date_and_time_component_values\n\n const jumpDeltaOfDate = 1_900;\n res.setFullYear(res.getFullYear() - jumpDeltaOfDate);\n }\n return res;\n}\n\nexport function toUTCDate(date: Partial, defaultTimezone: ITimeZoneRepresentation): Date {\n const localTime = toJSDate(defaultedDateTimeRepresentation(date));\n // This date has been constructed in machine local time, now we alter it to become UTC and convert to correct timezone\n\n // Correction needed from local machine timezone to UTC\n const minutesCorrectionLocal = localTime.getTimezoneOffset();\n // Correction needed from UTC to provided timeZone\n const hourCorrectionUTC = date.zoneHours ?? defaultTimezone.zoneHours;\n const minutesCorrectionUTC = date.zoneMinutes ?? defaultTimezone.zoneMinutes;\n return new Date(\n localTime.getTime() - (minutesCorrectionLocal + hourCorrectionUTC * 60 + minutesCorrectionUTC) * 60 * 1_000,\n );\n}\n\nexport function trimToYearMonthDuration(dur: Partial):\nPartial {\n return {\n year: dur.year,\n month: dur.month,\n };\n}\n\nexport function trimToDayTimeDuration(dur: Partial): Partial {\n return {\n day: dur.day,\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n };\n}\n\nexport function yearMonthDurationsToMonths(dur: IYearMonthDurationRepresentation): number {\n return dur.year * 12 + dur.month;\n}\n\nexport function dayTimeDurationsToSeconds(dur: IDayTimeDurationRepresentation): number {\n return (((dur.day * 24) + dur.hours) * 60 + dur.minutes) * 60 + dur.seconds;\n}\n\nexport function extractRawTimeZone(zoneContained: string): string {\n const extraction = /(Z|([+-]\\d\\d:\\d\\d))?$/u.exec(zoneContained);\n // It is safe to cast here because the empty string can always match.\n return extraction![0];\n}\n\nexport function extractTimeZone(date: Date): ITimeZoneRepresentation {\n return {\n zoneHours: date.getTimezoneOffset() / 60,\n zoneMinutes: date.getTimezoneOffset() % 60,\n };\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type * as E from '../expressions';\nimport type * as C from './Consts';\n\n/**\n * This class of error will be thrown when an expression errors.\n * Various reasons this could happen are:\n * - invalid types for the given operator\n * - unbound variables\n * - invalid lexical forms\n * - ...\n *\n * The distinction is made so that one can catch this specific type\n * and handle it accordingly to the SPARQL spec (relevant for e.g. FILTER, EXTEND),\n * while others (programming errors) can be re-thrown.\n *\n * @see isExpressionError\n */\nexport class ExpressionError extends Error {}\n\n/**\n * Checks whether a given error is an {@link ExpressionError}.\n * Also useful for mocking in tests for covering all branches.\n *\n * @see ExpressionError\n */\nexport function isExpressionError(error: Error): boolean {\n return error instanceof ExpressionError;\n}\n\n/**\n * A literal has an invalid lexical form for the datatype it is accompanied by.\n * This error is only thrown when the term is as function argument that requires\n * a valid lexical form.\n */\nexport class InvalidLexicalForm extends ExpressionError {\n public constructor(public arg: RDF.Term) {\n super(`Invalid lexical form '${pp(arg)}'`);\n }\n}\n\n/**\n * A variable in the expression was not bound.\n */\nexport class UnboundVariableError extends ExpressionError {\n public constructor(public variable: string, public bindings: RDF.Bindings) {\n super(`Unbound variable '${pp(variable)}'`);\n }\n}\n\n/**\n * An invalid term was being coerced to an Effective Boolean Value.\n *\n * See the {@link https://www.w3.org/TR/sparql11-query/#ebv | SPARQL docs}\n * on EBVs.\n */\nexport class EBVCoercionError extends ExpressionError {\n public constructor(public arg: E.Term) {\n super(`Cannot coerce term to EBV '${pp(arg)}'`);\n }\n}\n\n/**\n * An equality test was done on literals with unsupported datatypes.\n *\n * See {@link https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal | term equality spec}.\n */\nexport class RDFEqualTypeError extends ExpressionError {\n public constructor(public args: E.Expression[]) {\n super('Equality test for literals with unsupported datatypes');\n }\n}\n\n/**\n * All the expressions in a COALESCE call threw errors.\n */\nexport class CoalesceError extends ExpressionError {\n public constructor(public errors: Error[]) {\n super('All COALESCE arguments threw errors');\n }\n}\n\n/**\n * No arguments to an IN call where equal, and at least one threw an error.\n */\nexport class InError extends ExpressionError {\n public constructor(public errors: (Error | false)[]) {\n super(\n `Some argument to IN errorred and none where equal. ${\n\n errors.map(err => `(${err.toString()}) `).join('and ')}`,\n );\n }\n}\n\n/**\n * Literals were passed to an operator that doesn't support their datatypes.\n */\nexport class InvalidArgumentTypes extends ExpressionError {\n public constructor(public args: E.Expression[], public op: C.Operator | C.NamedOperator) {\n super(`Argument types not valid for operator: '${pp(op)}' with '${pp(args)}`);\n }\n}\n\n/**\n * Terms were being compared that are not supported.\n */\nexport class InvalidCompareArgumentTypes extends ExpressionError {\n public constructor(public arg0: RDF.Term, public arg1: RDF.Term) {\n super(`Compared argument types are supported: '${arg0.termType}' and '${arg1.termType}'`);\n }\n}\n\n/**\n * An invalid typecast happened.\n */\nexport class CastError extends ExpressionError {\n public constructor(public arg: T, cast: C.TypeURL) {\n super(`Invalid cast: '${pp(arg)}' to '${pp(cast)}'`);\n }\n}\n\nexport class InvalidTimezoneCall extends ExpressionError {\n public constructor(public dateString: string) {\n super(`TIMEZONE call on ${dateString} which has no timezone`);\n }\n}\n\nexport class IncompatibleLanguageOperation extends ExpressionError {\n public constructor(public arg1: E.LangStringLiteral, public arg2: E.LangStringLiteral) {\n super(`Operation on incompatible language literals '${pp(arg1)}' and '${pp(arg2)}'`);\n }\n}\n\nexport class EmptyAggregateError extends ExpressionError {\n public constructor() {\n super('Empty aggregate expression');\n }\n}\n\nexport class ParseError extends ExpressionError {\n public constructor(str: string, type: string) {\n super(`Failed to parse ${str} as ${type}.`);\n }\n}\n\n// Non Expression Errors ------------------------------------------------------\n\n/**\n * An error that arises when we detect a 'should-be-impossible' state.\n * Given that this error is thrown, it clearly wasn't impossible, and some\n * mistake has been made.\n */\nexport class UnexpectedError extends Error {\n public constructor(message: string, public payload?: T) {\n super(`Programmer Error '${message}'`);\n }\n}\n\nexport class InvalidArity extends Error {\n public constructor(public args: E.Expression[], public op: C.Operator) {\n super(`The number of args does not match the arity of the operator '${pp(op)}'.`);\n }\n}\n\nexport class InvalidExpression extends Error {\n public constructor(expr: T) {\n super(`Invalid SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class InvalidExpressionType extends Error {\n public constructor(public expr: T) {\n super(`Invalid expression type for SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class InvalidTermType extends Error {\n public constructor(public term: Algebra.TermExpression) {\n super(`Invalid term type for term '${pp(term)}'`);\n }\n}\n\nexport class UnknownOperator extends Error {\n public constructor(name: string) {\n super(`Unknown operator: '${pp(name)}`);\n }\n}\n\nexport class UnknownNamedOperator extends Error {\n public constructor(name: string) {\n super(`Unknown named operator: '${pp(name)}'`);\n }\n}\n\nexport class ExtensionFunctionError extends Error {\n public constructor(name: string, functionError: unknown) {\n if (functionError instanceof Error) {\n super(`Error thrown in ${name}: ${functionError.message}${functionError.stack ? `\\n${functionError.stack}` : ''}`);\n } else {\n super(`Error thrown in ${name}`);\n }\n }\n}\n\nexport class NoAggregator extends Error {\n public constructor(name?: string) {\n super(`Aggregate expression ${pp(name)} found, but no aggregate hook provided.`);\n }\n}\n\nexport class NoExistenceHook extends Error {\n public constructor() {\n super('EXISTS found, but no existence hook provided.');\n }\n}\n\nfunction pp(object: T): string {\n return JSON.stringify(object);\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from './Consts';\nimport * as Err from './Errors';\nimport type { SuperTypeCallback, TypeCache } from './TypeHandling';\n\n// Determine the relative numerical order of the two given terms.\n// In accordance with https://www.w3.org/TR/sparql11-query/#modOrderBy\nexport function orderTypes(\n termA: RDF.Term | undefined,\n termB: RDF.Term | undefined,\n strict = false,\n typeDiscoveryCallback?: SuperTypeCallback,\n typeCache?: TypeCache,\n): -1 | 0 | 1 {\n // Check if terms are the same by reference\n if (termA === termB) {\n return 0;\n }\n\n // We handle undefined that is lower than everything else.\n if (termA === undefined) {\n return -1;\n }\n if (termB === undefined) {\n return 1;\n }\n\n //\n if (termA.termType !== termB.termType) {\n return _TERM_ORDERING_PRIORITY[termA.termType] < _TERM_ORDERING_PRIORITY[termB.termType] ? -1 : 1;\n }\n\n // Check exact term equality\n if (termA.equals(termB)) {\n return 0;\n }\n\n // Handle quoted triples\n if (termA.termType === 'Quad' && termB.termType === 'Quad') {\n const orderSubject = orderTypes(\n termA.subject,\n termB.subject,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderSubject !== 0) {\n return orderSubject;\n }\n const orderPredicate = orderTypes(\n termA.predicate,\n termB.predicate,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderPredicate !== 0) {\n return orderPredicate;\n }\n const orderObject = orderTypes(\n termA.object,\n termB.object,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderObject !== 0) {\n return orderObject;\n }\n return orderTypes(\n termA.graph,\n termB.graph,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n }\n\n // Handle literals\n if (termA.termType === 'Literal') {\n return orderLiteralTypes(termA, termB, typeDiscoveryCallback, typeCache);\n }\n\n // Handle all other types\n if (strict) {\n throw new Err.InvalidCompareArgumentTypes(termA, termB);\n }\n return comparePrimitives(termA.value, termB.value);\n}\n\nfunction orderLiteralTypes(\n litA: RDF.Literal,\n litB: RDF.Literal,\n typeDiscoveryCallback?: SuperTypeCallback,\n typeCache?: TypeCache,\n): -1 | 0 | 1 {\n const isGreater = regularFunctions[C.RegularOperator.GT];\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n const context = {\n now: new Date(),\n functionArgumentsCache: {},\n superTypeProvider: {\n discoverer: typeDiscoveryCallback ?? (() => 'term'),\n cache: typeCache ?? new LRUCache({ max: 1_000 }),\n },\n defaultTimeZone: { zoneHours: 0, zoneMinutes: 0 },\n };\n\n const termTransformer = new TermTransformer(context.superTypeProvider);\n const myLitA = termTransformer.transformLiteral(litA);\n const myLitB = termTransformer.transformLiteral(litB);\n\n try {\n if (( isEqual.apply([ myLitA, myLitB ], context)).typedValue) {\n return 0;\n }\n if (( isGreater.apply([ myLitA, myLitB ], context)).typedValue) {\n return 1;\n }\n return -1;\n } catch {\n // Fallback to string-based comparison\n const compareType = comparePrimitives(myLitA.dataType, myLitB.dataType);\n if (compareType !== 0) {\n return compareType;\n }\n return comparePrimitives(myLitA.str(), myLitB.str());\n }\n}\n\nfunction comparePrimitives(valueA: any, valueB: any): -1 | 0 | 1 {\n return valueA === valueB ? 0 : (valueA < valueB ? -1 : 1);\n}\n\n// SPARQL specifies that blankNode < namedNode < literal.\nconst _TERM_ORDERING_PRIORITY = {\n Variable: 0,\n BlankNode: 1,\n NamedNode: 2,\n Literal: 3,\n Quad: 4,\n DefaultGraph: 5,\n};\n","// TODO: Find a library for this, because this is basically an xsd datatypes parser\n\nimport type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDayTimeDurationRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n IYearMonthDurationRepresentation,\n} from './DateTimeHelpers';\n\nimport { simplifyDurationRepresentation } from './DateTimeHelpers';\nimport { ParseError } from './Errors';\nimport { maximumDayInMonthFor } from './SpecAlgos';\n\n/**\n * TODO: Fix decently\n * Parses float datatypes (double, float).\n *\n * All invalid lexical values return undefined.\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDFloat(value: string): number | undefined {\n const numb = Number(value);\n if (Number.isNaN(numb)) {\n if (value === 'NaN') {\n return Number.NaN;\n }\n if (value === 'INF' || value === '+INF') {\n return Number.POSITIVE_INFINITY;\n }\n if (value === '-INF') {\n return Number.NEGATIVE_INFINITY;\n }\n return undefined;\n }\n return numb;\n}\n\n/**\n * Parses decimal datatypes (decimal, int, byte, nonPositiveInteger, etc...).\n *\n * All other values, including NaN, INF, and floating point numbers all\n * return undefined;\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDDecimal(value: string): number | undefined {\n const numb = Number(value);\n return Number.isNaN(numb) ? undefined : numb;\n}\n\n/**\n * Parses integer datatypes (decimal, int, byte, nonPositiveInteger, etc...).\n *\n * All other values, including NaN, INF, and floating point numbers all\n * return undefined;\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDInteger(value: string): number | undefined {\n const numb: number = Number.parseInt(value, 10);\n return Number.isNaN(numb) ? undefined : numb;\n}\n\nexport function parseDateTime(dateTimeStr: string): IDateTimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n const [ date, time ] = dateTimeStr.split('T');\n return { ...parseDate(date), ...__parseTime(time) };\n}\n\nfunction parseTimeZone(timeZoneStr: string): Partial {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (timeZoneStr === '') {\n return { zoneHours: undefined, zoneMinutes: undefined };\n }\n if (timeZoneStr === 'Z') {\n return { zoneHours: 0, zoneMinutes: 0 };\n }\n const timeZoneStrings = timeZoneStr.replaceAll(/^([+|-])(\\d\\d):(\\d\\d)$/gu, '$11!$2!$3').split('!');\n const timeZone = timeZoneStrings.map(Number);\n return {\n zoneHours: timeZone[0] * timeZone[1],\n zoneMinutes: timeZone[0] * timeZone[2],\n };\n}\n\nexport function parseDate(dateStr: string): IDateRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n const formatted = dateStr.replaceAll(\n /^(-)?([123456789]*\\d{4})-(\\d\\d)-(\\d\\d)(Z|([+-]\\d\\d:\\d\\d))?$/gu,\n '$11!$2!$3!$4!$5',\n );\n if (formatted === dateStr) {\n throw new ParseError(dateStr, 'date');\n }\n const dateStrings = formatted.split('!');\n const date = dateStrings.slice(0, -1).map(Number);\n\n const res = {\n year: date[0] * date[1],\n month: date[2],\n day: date[3],\n ...parseTimeZone(dateStrings[4]),\n };\n if (!(res.month >= 1 && res.month <= 12) || !(res.day >= 1 && res.day <= maximumDayInMonthFor(res.year, res.month))) {\n throw new ParseError(dateStr, 'date');\n }\n return res;\n}\n\nfunction __parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const formatted = timeStr.replaceAll(/^(\\d\\d):(\\d\\d):(\\d\\d(\\.\\d+)?)(Z|([+-]\\d\\d:\\d\\d))?$/gu, '$1!$2!$3!$5');\n if (formatted === timeStr) {\n throw new ParseError(timeStr, 'time');\n }\n const timeStrings = formatted.split('!');\n const time = timeStrings.slice(0, -1).map(Number);\n\n const res = {\n hours: time[0],\n minutes: time[1],\n seconds: time[2],\n ...parseTimeZone(timeStrings[3]),\n };\n\n if (res.seconds >= 60 || res.minutes >= 60 || res.hours > 24 ||\n (res.hours === 24 && (res.minutes !== 0 || res.seconds !== 0))) {\n throw new ParseError(timeStr, 'time');\n }\n return res;\n}\n\n// We make a separation in internal and external since dateTime will have hour-date rollover,\n// but time just does modulo the time.\nexport function parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const res = __parseTime(timeStr);\n res.hours %= 24;\n return res;\n}\n\nexport function parseDuration(durationStr: string): Partial {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n const [ dayNotation, timeNotation ] = durationStr.split('T');\n\n // Handle date part\n const formattedDayDur = dayNotation.replaceAll(/^(-)?P(\\d+Y)?(\\d+M)?(\\d+D)?$/gu, '$11S!$2!$3!$4');\n if (formattedDayDur === dayNotation) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const durationStrings = formattedDayDur.split('!');\n if (timeNotation !== undefined) {\n const formattedTimeDur = timeNotation.replaceAll(/^(\\d+H)?(\\d+M)?(\\d+(\\.\\d+)?S)?$/gu, '$1!$2!$3');\n\n if (timeNotation === '' || timeNotation === formattedTimeDur) {\n throw new ParseError(durationStr, 'duration');\n }\n durationStrings.push(...formattedTimeDur.split('!'));\n }\n const duration = durationStrings.map(str => str.slice(0, -1));\n if (!duration.slice(1).some(Boolean)) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const sign = <-1 | 1> Number(duration[0]);\n return simplifyDurationRepresentation({\n year: duration[1] ? sign * Number(duration[1]) : undefined,\n month: duration[2] ? sign * Number(duration[2]) : undefined,\n day: duration[3] ? sign * Number(duration[3]) : undefined,\n hours: duration[4] ? sign * Number(duration[4]) : undefined,\n minutes: duration[5] ? sign * Number(duration[5]) : undefined,\n seconds: duration[6] ? sign * Number(duration[6]) : undefined,\n });\n}\n\nexport function parseYearMonthDuration(durationStr: string): Partial {\n const res = parseDuration(durationStr);\n if ([ 'hours', 'minutes', 'seconds', 'day' ].some(key => Boolean(( res)[key]))) {\n throw new ParseError(durationStr, 'yearMonthDuration');\n }\n return res;\n}\n\nexport function parseDayTimeDuration(durationStr: string): Partial {\n const res = parseDuration(durationStr);\n if ([ 'year', 'month' ].some(key => Boolean(( res)[key]))) {\n throw new ParseError(durationStr, 'dayTimeDuration');\n }\n return res;\n}\n","import type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n} from './DateTimeHelpers';\n\nfunction numSerializer(num: number, min = 2): string {\n return num.toLocaleString(undefined, { minimumIntegerDigits: min, useGrouping: false });\n}\n\nexport function serializeDateTime(date: IDateTimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n // Extraction is needed because the date serializer can not add timezone y\n return `${serializeDate({ year: date.year, month: date.month, day: date.day })}T${serializeTime(date)}`;\n}\n\nfunction serializeTimeZone(tz: Partial): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (tz.zoneHours === undefined || tz.zoneMinutes === undefined) {\n return '';\n }\n if (tz.zoneHours === 0 && tz.zoneMinutes === 0) {\n return 'Z';\n }\n // SerializeTimeZone({ zoneHours: 5, zoneMinutes: 4 }) returns +05:04\n return `${tz.zoneHours >= 0 ? `+${numSerializer(tz.zoneHours)}` : numSerializer(tz.zoneHours)}:${numSerializer(Math.abs(tz.zoneMinutes))}`;\n}\n\nexport function serializeDate(date: IDateRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n return `${numSerializer(date.year, 4)}-${numSerializer(date.month)}-${numSerializer(date.day)}${serializeTimeZone(date)}`;\n}\n\nexport function serializeTime(time: ITimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n return `${numSerializer(time.hours)}:${numSerializer(time.minutes)}:${numSerializer(time.seconds)}${serializeTimeZone(time)}`;\n}\n\nexport function serializeDuration(dur: Partial, zeroString: 'PT0S' | 'P0M' = 'PT0S'): string {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n if (!Object.values(dur).some(val => (val || 0) !== 0)) {\n return zeroString;\n }\n\n const sign = Object.values(dur).some(val => (val || 0) < 0) ? '-' : '';\n const year = dur.year ? `${Math.abs(dur.year)}Y` : '';\n const month = dur.month ? `${Math.abs(dur.month)}M` : '';\n const day = dur.day ? `${Math.abs(dur.day)}D` : '';\n\n const dayNotation = `${sign}P${year}${month}${day}`;\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n if (!(dur.hours || dur.minutes || dur.seconds)) {\n return dayNotation;\n }\n\n const hour = dur.hours ? `${Math.abs(dur.hours)}H` : '';\n const minute = dur.minutes ? `${Math.abs(dur.minutes)}M` : '';\n const second = dur.seconds ? `${Math.abs(dur.seconds)}S` : '';\n\n return `${dayNotation}T${hour}${minute}${second}`;\n}\n","import type {\n IDurationRepresentation,\n IDateTimeRepresentation,\n ITimeZoneRepresentation,\n} from './DateTimeHelpers';\nimport { toUTCDate } from './DateTimeHelpers';\n\nfunction fDiv(arg: number, high: number, low = 0): { intDiv: number; remainder: number } {\n // Adds the 4 spec functions into one since they are highly related,\n // and fQuotient and modulo are almost always called in pairs.\n const first = arg - low;\n const second = high - low;\n const intDiv = Math.floor(first / second);\n return { intDiv, remainder: arg - intDiv * second };\n}\n\nexport function maximumDayInMonthFor(yearValue: number, monthValue: number): number {\n const { intDiv: additionalYears, remainder: month } = fDiv(monthValue, 13, 1);\n const year = yearValue + additionalYears;\n\n if ([ 1, 3, 5, 7, 8, 10, 12 ].includes(month)) {\n return 31;\n }\n if ([ 4, 6, 9, 11 ].includes(month)) {\n return 30;\n }\n if (month === 2 && (\n fDiv(year, 400).remainder === 0 ||\n (fDiv(year, 100).remainder !== 0 && fDiv(year, 4).remainder === 0))) {\n return 29;\n }\n return 28;\n}\n\n// https://www.w3.org/TR/xmlschema-2/#adding-durations-to-dateTimes\nexport function addDurationToDateTime(date: IDateTimeRepresentation, duration: IDurationRepresentation):\nIDateTimeRepresentation {\n // Used to cary over optional fields like timezone\n const newDate: IDateTimeRepresentation = { ...date };\n\n // Month\n let tempDiv = fDiv(date.month + duration.month, 13, 1);\n newDate.month = tempDiv.remainder;\n // Year\n newDate.year = date.year + duration.year + tempDiv.intDiv;\n // Seconds\n tempDiv = fDiv(date.seconds + duration.seconds, 60);\n newDate.seconds = tempDiv.remainder;\n // Minutes\n tempDiv = fDiv(date.minutes + duration.minutes + tempDiv.intDiv, 60);\n newDate.minutes = tempDiv.remainder;\n // Hours\n tempDiv = fDiv(date.hours + duration.hours + tempDiv.intDiv, 24);\n newDate.hours = tempDiv.remainder;\n\n // We skip a part of the spec code since: Defined spec code can not happen since it would be an invalid literal\n\n newDate.day = date.day + duration.day + tempDiv.intDiv;\n\n while (true) {\n let carry;\n if (newDate.day < 1) {\n newDate.day += maximumDayInMonthFor(newDate.year, newDate.month - 1);\n carry = -1;\n } else if (newDate.day > maximumDayInMonthFor(newDate.year, newDate.month)) {\n newDate.day -= maximumDayInMonthFor(newDate.year, newDate.month);\n carry = 1;\n } else {\n break;\n }\n tempDiv = fDiv(newDate.month + carry, 13, 1);\n newDate.month = tempDiv.remainder;\n newDate.year += tempDiv.intDiv;\n }\n return newDate;\n}\n\nexport function elapsedDuration(\n first: IDateTimeRepresentation,\n second: IDateTimeRepresentation,\n defaultTimeZone: ITimeZoneRepresentation,\n): Partial {\n const d1 = toUTCDate(first, defaultTimeZone);\n const d2 = toUTCDate(second, defaultTimeZone);\n const diff = d1.getTime() - d2.getTime();\n return {\n day: Math.floor(diff / (1_000 * 60 * 60 * 24)),\n hours: Math.floor((diff % (1_000 * 60 * 60 * 24)) / (1_000 * 60 * 60)),\n minutes: Math.floor(diff % (1_000 * 60 * 60) / (1_000 * 60)),\n seconds: diff % (1_000 * 60),\n };\n}\n","import type { LRUCache } from 'lru-cache';\nimport type * as E from '../expressions';\nimport { asTermType } from '../expressions';\nimport type { ArgumentType } from '../functions';\nimport { double, float, string } from '../functions/Helpers';\nimport type { KnownLiteralTypes } from './Consts';\nimport { TypeAlias, TypeURL } from './Consts';\n\nexport type OverrideType = KnownLiteralTypes | 'term';\n\n/**\n * Types that are not mentioned just map to 'term'.\n * When editing this, make sure type promotion and substitution don't start interfering.\n * e.g. when saying something like string -> stringly -> anyUri -> term.\n * This would make substitution on types that promote to each other possible. We and the specs don't want that!\n * A DAG will be created based on this. Make sure it doesn't have any cycles!\n */\nexport const extensionTableInput: Record = {\n // Datetime types\n [TypeURL.XSD_DATE_TIME_STAMP]: TypeURL.XSD_DATE_TIME,\n\n // Duration types\n [TypeURL.XSD_DAY_TIME_DURATION]: TypeURL.XSD_DURATION,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: TypeURL.XSD_DURATION,\n\n // Stringly types\n [TypeURL.RDF_LANG_STRING]: TypeAlias.SPARQL_STRINGLY,\n [TypeURL.XSD_STRING]: TypeAlias.SPARQL_STRINGLY,\n\n // String types\n [TypeURL.XSD_NORMALIZED_STRING]: TypeURL.XSD_STRING,\n [TypeURL.XSD_TOKEN]: TypeURL.XSD_NORMALIZED_STRING,\n [TypeURL.XSD_LANGUAGE]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NM_TOKEN]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NAME]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NC_NAME]: TypeURL.XSD_NAME,\n [TypeURL.XSD_ENTITY]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID_REF]: TypeURL.XSD_NC_NAME,\n\n // Numeric types\n // https://www.w3.org/TR/sparql11-query/#operandDataTypes\n // > numeric denotes typed literals with datatypes xsd:integer, xsd:decimal, xsd:float, and xsd:double\n [TypeURL.XSD_DOUBLE]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_FLOAT]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_DECIMAL]: TypeAlias.SPARQL_NUMERIC,\n\n // Decimal types\n [TypeURL.XSD_INTEGER]: TypeURL.XSD_DECIMAL,\n\n [TypeURL.XSD_NON_POSITIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_NEGATIVE_INTEGER]: TypeURL.XSD_NON_POSITIVE_INTEGER,\n\n [TypeURL.XSD_LONG]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_INT]: TypeURL.XSD_LONG,\n [TypeURL.XSD_SHORT]: TypeURL.XSD_INT,\n [TypeURL.XSD_BYTE]: TypeURL.XSD_SHORT,\n\n [TypeURL.XSD_NON_NEGATIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_POSITIVE_INTEGER]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_LONG]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_INT]: TypeURL.XSD_UNSIGNED_LONG,\n [TypeURL.XSD_UNSIGNED_SHORT]: TypeURL.XSD_UNSIGNED_INT,\n [TypeURL.XSD_UNSIGNED_BYTE]: TypeURL.XSD_UNSIGNED_SHORT,\n\n [TypeURL.XSD_DATE_TIME]: 'term',\n [TypeURL.XSD_BOOLEAN]: 'term',\n [TypeURL.XSD_DATE]: 'term',\n [TypeURL.XSD_G_MONTH]: 'term',\n [TypeURL.XSD_G_MONTHDAY]: 'term',\n [TypeURL.XSD_G_YEAR]: 'term',\n [TypeURL.XSD_G_YEAR_MONTH]: 'term',\n [TypeURL.XSD_TIME]: 'term',\n [TypeURL.XSD_G_DAY]: 'term',\n [TypeURL.XSD_DURATION]: 'term',\n [TypeAlias.SPARQL_NUMERIC]: 'term',\n [TypeAlias.SPARQL_STRINGLY]: 'term',\n [TypeURL.XSD_ANY_URI]: 'term',\n};\ntype SuperTypeDict = Record & { __depth: number };\ntype SuperTypeDictTable = Record;\n// The key 'term' is not included in these keys. Something that is just a term will map to number 0.\nexport type GeneralSuperTypeDict = Record & { __depth: number };\nexport const superTypeDictTable: SuperTypeDictTable = Object.create(null);\n\n/**\n * This will return the super types of a type and cache them.\n * @param type IRI we will decide the super types of.\n * @param openWorldType the enabler that provides a way to find super types.\n */\nexport function getSuperTypes(type: string, openWorldType: ISuperTypeProvider): GeneralSuperTypeDict {\n const cached = openWorldType.cache.get(type);\n if (cached) {\n return cached;\n }\n const value = openWorldType.discoverer(type);\n if (value === 'term') {\n const res: GeneralSuperTypeDict = Object.create(null);\n res.__depth = 0;\n res[type] = 0;\n openWorldType.cache.set(type, res);\n return res;\n }\n let subExtension: GeneralSuperTypeDict;\n const knownValue = asKnownLiteralType(value);\n if (knownValue) {\n subExtension = { ...superTypeDictTable[knownValue] };\n } else {\n subExtension = { ...getSuperTypes(value, openWorldType) };\n }\n subExtension.__depth++;\n subExtension[type] = subExtension.__depth;\n openWorldType.cache.set(type, subExtension);\n return subExtension;\n}\n\n// No circular structure allowed! & No other keys allowed!\nexport function extensionTableInit(): void {\n for (const [ _key, value ] of Object.entries(extensionTableInput)) {\n const key = _key;\n if (superTypeDictTable[key]) {\n continue;\n }\n extensionTableBuilderInitKey(key, value, superTypeDictTable);\n }\n}\nextensionTableInit();\n\nfunction extensionTableBuilderInitKey(key: KnownLiteralTypes, value: OverrideType, res: SuperTypeDictTable): void {\n if (value === 'term' || value === undefined) {\n const baseRes: SuperTypeDict = Object.create(null);\n baseRes.__depth = 0;\n baseRes[key] = 0;\n res[key] = baseRes;\n return;\n }\n if (!res[value]) {\n extensionTableBuilderInitKey(value, extensionTableInput[value], res);\n }\n res[key] = { ...res[value], [key]: res[value].__depth + 1, __depth: res[value].__depth + 1 };\n}\n\nexport const typeAliasCheck: Record = Object.create(null);\nfunction initTypeAliasCheck(): void {\n for (const val of Object.values(TypeAlias)) {\n typeAliasCheck[val] = true;\n }\n}\ninitTypeAliasCheck();\n\nexport function asTypeAlias(type: string): TypeAlias | undefined {\n if (type in typeAliasCheck) {\n return type;\n }\n return undefined;\n}\n\nexport function asKnownLiteralType(type: string): KnownLiteralTypes | undefined {\n if (type in superTypeDictTable) {\n return type;\n }\n return undefined;\n}\n\nexport function asOverrideType(type: string): OverrideType | undefined {\n if (asKnownLiteralType(type) ?? type === 'term') {\n return type;\n }\n return undefined;\n}\n\nexport function asGeneralType(type: string): 'term' | E.TermType | undefined {\n if (type === 'term' || asTermType(type)) {\n return <'term' | E.TermType> type;\n }\n return undefined;\n}\n\nexport type TypeCache = LRUCache;\nexport type SuperTypeCallback = (unknownType: string) => string;\nexport interface ISuperTypeProvider {\n cache: TypeCache;\n discoverer: SuperTypeCallback;\n}\n\n/**\n * Internal type of @see isSubTypeOf This only takes knownTypes but doesn't need an enabler\n */\nexport function isInternalSubType(baseType: OverrideType, argumentType: KnownLiteralTypes): boolean {\n return baseType !== 'term' &&\n (superTypeDictTable[baseType] && superTypeDictTable[baseType][argumentType] !== undefined);\n}\n\n/**\n * This function can be used to check the base type is a restriction on a type in the dict.\n * If we want to check if type x is a restriction on string we do this by calling:\n * 'http://www.w3.org/2001/XMLSchema#string' in getSuperTypeDict(X, superTypeProvider)\n * @param baseType\n * @param superTypeProvider\n */\nexport function getSuperTypeDict(baseType: string, superTypeProvider: ISuperTypeProvider): GeneralSuperTypeDict {\n const concreteType: KnownLiteralTypes | undefined = asKnownLiteralType(baseType);\n if (concreteType) {\n // Concrete dataType is known by expression-evaluator.\n return superTypeDictTable[concreteType];\n }\n // Datatype is a custom datatype\n return getSuperTypes(baseType, superTypeProvider);\n}\n\n/**\n * This function needs to be O(1)! The execution time of this function is vital!\n * We define typeA isSubtypeOf typeA as true.\n * If you find yourself using this function a lot (e.g. in a case) please use getSuperTypeDict instead.\n * @param baseType type you want to provide.\n * @param argumentType type you want to provide @param baseType to.\n * @param superTypeProvider the enabler to discover super types of unknown types.\n */\nexport function isSubTypeOf(\n baseType: string,\n argumentType: KnownLiteralTypes,\n superTypeProvider: ISuperTypeProvider,\n): boolean {\n if (baseType === 'term') {\n return false;\n }\n return getSuperTypeDict(baseType, superTypeProvider)[argumentType] !== undefined;\n}\n\n// Defined by https://www.w3.org/TR/xpath-31/#promotion .\n// e.g. When a function takes a string, it can also accept a XSD_ANY_URI if it's cast first.\nexport const typePromotion: Partial E.TermExpression;\n}[]>> = {\n [TypeURL.XSD_STRING]: [\n { typeToPromote: TypeURL.XSD_ANY_URI, conversionFunction: arg => string(arg.str()) },\n ],\n [TypeURL.XSD_DOUBLE]: [\n { typeToPromote: TypeURL.XSD_FLOAT, conversionFunction: arg => double((arg).typedValue) },\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => double((arg).typedValue) },\n ],\n [TypeURL.XSD_FLOAT]: [\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => float((arg).typedValue) },\n ],\n};\n","import { Logger } from '@comunica/types';\n\n/**\n * A logger that voids everything.\n */\nexport class LoggerVoid extends Logger {\n public debug(): void {\n // Void\n }\n\n public error(): void {\n // Void\n }\n\n public fatal(): void {\n // Void\n }\n\n public info(): void {\n // Void\n }\n\n public trace(): void {\n // Void\n }\n\n public warn(): void {\n // Void\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A comunica mediator that runs all actors that resolve their test.\n * This mediator will always resolve to the first actor's output.\n */\nexport class MediatorAll, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator {\n public constructor(args: IMediatorArgs) {\n super(args);\n }\n\n public override async mediate(action: I): Promise {\n // Collect all actors that resolve their test\n const validActors: A[] = [];\n let testResults: IActorReply[];\n try {\n testResults = this.publish(action);\n } catch {\n testResults = [];\n }\n for (const testResult of testResults) {\n try {\n await testResult.reply;\n validActors.push(testResult.actor);\n } catch {\n // Ignore errors\n }\n }\n\n // Send action to all valid actors\n const outputs = await Promise.all(validActors.map(actor => actor.runObservable(action)));\n\n return outputs[0];\n }\n\n protected async mediateWith(): Promise {\n throw new Error('Unsupported operation: MediatorAll#mediateWith');\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica mediator that goes over all actors in sequence and forwards I/O.\n * This required the action input and the actor output to be of the same type.\n */\nexport class MediatorCombinePipeline<\n A extends Actor,\nH extends IAction | (IActorOutput & { context: IActionContext }),\nT extends IActorTest,\n>\n extends Mediator {\n public readonly filterErrors: boolean | undefined;\n public readonly order: 'increasing' | 'decreasing' | undefined;\n public readonly field: string | undefined;\n\n public constructor(args: IMediatorCombinePipelineArgs) {\n super(args);\n }\n\n public override async mediate(action: H): Promise {\n let testResults: IActorReply[] | { actor: A; reply: T }[];\n try {\n testResults = this.publish(action);\n } catch {\n // If no actors are available, just return the input as output\n return action;\n }\n\n if (this.filterErrors) {\n const _testResults: IActorReply[] = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n } catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n\n // Delegate test errors.\n testResults = await Promise.all(testResults.map(async({ actor, reply }) => ({ actor, reply: await reply })));\n\n // Order the test results if ordering is enabled\n if (this.order) {\n // A function used to extract an ordering value from a test result\n const getOrder = (elem: T): number => {\n // If there is a field key use it, otherwise use the input\n // element for ordering\n const value = this.field ? ( elem)[this.field] : elem;\n\n // Check the ordering value is a number\n if (typeof value !== 'number') {\n throw new TypeError('Cannot order elements that are not numbers.');\n }\n return value;\n };\n\n testResults = testResults.sort((actor1, actor2) =>\n (this.order === 'increasing' ? 1 : -1) *\n (getOrder(actor1.reply) - getOrder(actor2.reply)));\n }\n\n // Pass action to first actor,\n // and each actor output as input to the following actor.\n let handle: H = action;\n for (const { actor } of testResults) {\n handle = { ...handle, ...await actor.runObservable(handle) };\n }\n\n // Return the final actor output\n return handle;\n }\n\n protected mediateWith(): Promise {\n throw new Error('Method not supported.');\n }\n}\n\nexport interface IMediatorCombinePipelineArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * If actors that throw test errors should be ignored\n */\n filterErrors?: boolean;\n /**\n * The field to use for ordering (if the ordering strategy is chosen).\n * Leave undefined if the test output is a number rather than an object.\n */\n field?: string;\n /**\n * The strategy of ordering the pipeline (increasing or decreasing).\n * For choosing to leave the order of the pipeline unchanged, leave this undefined.\n * For choosing to order by increasing values: 'increasing'.\n * For choosing to order by decreasing values: 'decreasing'.\n */\n order?: 'increasing' | 'decreasing' | undefined;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A comunica mediator that takes the union of all actor results.\n *\n * The actors that are registered first will have priority on setting overlapping fields.\n */\nexport class MediatorCombineUnion<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends Mediator\n implements IMediatorCombineUnionArgs {\n public readonly filterErrors: boolean | undefined;\n public readonly field: string;\n public readonly combiner: (results: O[]) => O;\n\n public constructor(args: IMediatorCombineUnionArgs) {\n super(args);\n this.combiner = this.createCombiner();\n }\n\n public override async mediate(action: I): Promise {\n let testResults: IActorReply[];\n try {\n testResults = this.publish(action);\n } catch {\n testResults = [];\n }\n\n if (this.filterErrors) {\n const _testResults: IActorReply[] = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n } catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n\n // Delegate test errors.\n await Promise.all(testResults.map(({ reply }) => reply));\n\n // Run action on all actors.\n const results: O[] = await Promise.all(testResults.map(result => result.actor.runObservable(action)));\n\n // Return the combined results.\n return this.combiner(results);\n }\n\n protected mediateWith(): Promise {\n throw new Error('Method not supported.');\n }\n\n protected createCombiner(): (results: O[]) => O {\n return (results: O[]) => {\n const data: any = {};\n data[this.field] = {};\n // eslint-disable-next-line unicorn/prefer-spread\n [{}].concat(results.map((result: any) => result[this.field]))\n // eslint-disable-next-line unicorn/no-array-for-each\n .forEach((value) => {\n data[this.field] = { ...value, ...data[this.field] };\n });\n return data;\n };\n }\n}\n\nexport interface IMediatorCombineUnionArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * If actors that throw test errors should be ignored\n */\n filterErrors?: boolean;\n /**\n * The field name of the test result field over which must be mediated.\n */\n field: string;\n}\n","import type { ActorRdfJoin, IActionRdfJoin } from '@comunica/bus-rdf-join';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorReply, IMediatorArgs } from '@comunica/core';\nimport { Actor, Mediator } from '@comunica/core';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { IQueryOperationResult } from '@comunica/types';\n\n/**\n * A mediator that mediates over actors implementing the Join Coefficients mediator type and assigns fixed weights\n * to calculate an overall score and pick the actor with the lowest score.\n */\nexport class MediatorJoinCoefficientsFixed\n extends Mediator {\n public readonly cpuWeight: number;\n public readonly memoryWeight: number;\n public readonly timeWeight: number;\n public readonly ioWeight: number;\n\n public constructor(args: IMediatorJoinCoefficientsFixedArgs) {\n super(args);\n }\n\n protected async mediateWith(\n action: IActionRdfJoin,\n testResults: IActorReply[],\n ): Promise {\n // Obtain test results\n const errors: Error[] = [];\n const promises = testResults\n .map(({ reply }) => reply)\n .map(promise => promise.catch((error) => {\n errors.push(error);\n }));\n const coefficients = await Promise.all(promises);\n\n // Calculate costs\n let costs: (number | undefined)[] = coefficients\n // eslint-disable-next-line array-callback-return\n .map((coeff) => {\n if (coeff) {\n return coeff.iterations * this.cpuWeight +\n coeff.persistedItems * this.memoryWeight +\n coeff.blockingItems * this.timeWeight +\n coeff.requestTime * this.ioWeight;\n }\n });\n const maxCost = Math.max(...( costs.filter(cost => cost !== undefined)));\n\n // If we have a limit indicator in the context,\n // increase cost of entries that have a number of iterations that is higher than the limit AND block items.\n // In these cases, join operators that produce results early on will be preferred.\n const limitIndicator: number | undefined = action.context.get(KeysQueryOperation.limitIndicator);\n if (limitIndicator) {\n costs = costs.map((cost, i) => {\n if (cost !== undefined && ( coefficients[i]).blockingItems > 0 &&\n\n ( coefficients[i]).iterations > limitIndicator) {\n return cost + maxCost;\n }\n return cost;\n });\n }\n\n // Determine index with lowest cost\n let minIndex = -1;\n let minValue = Number.POSITIVE_INFINITY;\n for (const [ i, cost ] of costs.entries()) {\n if (cost !== undefined && (minIndex === -1 || cost < minValue)) {\n minIndex = i;\n minValue = cost;\n }\n }\n\n // Reject if all actors rejected\n if (minIndex < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${\n errors.map(error => error.message).join('\\n')}`);\n }\n\n // Return actor with lowest cost\n const bestActor = testResults[minIndex].actor;\n\n // Emit calculations in logger\n if (bestActor.includeInLogs) {\n Actor.getContextLogger(action.context)?.debug(`Determined physical join operator '${bestActor.logicalType}-${bestActor.physicalName}'`, {\n entries: action.entries.length,\n variables: await Promise.all(action.entries\n .map(async entry => (await entry.output.metadata()).variables.map(variable => variable.value))),\n costs: Object.fromEntries(costs.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ]).filter(entry => entry[1] !== undefined)),\n coefficients: Object.fromEntries(coefficients.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ]).filter(entry => entry[1] !== undefined)),\n });\n }\n\n return bestActor;\n }\n}\n\nexport interface IMediatorJoinCoefficientsFixedArgs\n extends IMediatorArgs {\n /**\n * Weight for the CPU cost\n */\n cpuWeight: number;\n /**\n * Weight for the memory cost\n */\n memoryWeight: number;\n /**\n * Weight for the execution time cost\n */\n timeWeight: number;\n /**\n * Weight for the I/O cost\n */\n ioWeight: number;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A mediator that can mediate over a single number field.\n *\n * It takes the required 'field' and 'type' parameters.\n * The 'field' parameter represents the field name of the test result field over which must be mediated.\n * The 'type' parameter\n */\nexport class MediatorNumber, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator implements IMediatorNumberArgs {\n public readonly field: string;\n public readonly type: 'min' | 'max';\n public readonly ignoreErrors: boolean;\n public readonly indexPicker: (tests: T[]) => number;\n\n public constructor(args: IMediatorNumberArgs) {\n super(args);\n this.indexPicker = this.createIndexPicker();\n }\n\n /**\n * @return {(tests: T[]) => number} A function that returns the index of the test result\n * that has been chosen by this mediator.\n */\n protected createIndexPicker(): (tests: (T | undefined)[]) => number {\n switch (this.type) {\n case 'min':\n return (tests: (T | undefined)[]): number => tests.reduce((prev, curr, i) => {\n const val: number = this.getOrDefault(( curr)[this.field], Number.POSITIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] > val) ? [ val, i ] : prev;\n }, [ Number.NaN, -1 ])[1];\n case 'max':\n return (tests: (T | undefined)[]): number => tests.reduce((prev, curr, i) => {\n const val: number = this.getOrDefault(( curr)[this.field], Number.NEGATIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] < val) ? [ val, i ] : prev;\n }, [ Number.NaN, -1 ])[1];\n default:\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`No valid \"type\" value was given, must be either 'min' or 'max', but got: ${this.type}`);\n }\n }\n\n protected getOrDefault(value: number | undefined, defaultValue: number): number {\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n return value === undefined ? defaultValue : value;\n }\n\n protected async mediateWith(action: I, testResults: IActorReply[]): Promise {\n let promises = testResults.map(({ reply }) => reply);\n const errors: Error[] = [];\n if (this.ignoreErrors) {\n const dummy: any = {};\n dummy[this.field] = null;\n // eslint-disable-next-line ts/no-floating-promises\n promises = promises.map(promise => promise.catch((error) => {\n errors.push(error);\n return dummy;\n }));\n }\n const results = await Promise.all(promises);\n const index = this.indexPicker(results);\n if (index < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${\n errors.map(error => error.message).join('\\n')}`);\n }\n return testResults[index].actor;\n }\n}\n\nexport interface IMediatorNumberArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * The field name of the test result field over which must be mediated.\n */\n field: string;\n /**\n * The way how the index should be selected.\n * For choosing the minimum value: 'min'.\n * For choosing the maximum value: 'max'.\n */\n type: 'min' | 'max';\n\n /**\n * If actors that throw test errors should be ignored\n */\n ignoreErrors?: boolean;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A mediator that picks the first actor that resolves its test.\n */\nexport class MediatorRace, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator {\n public constructor(args: IMediatorArgs) {\n super(args);\n }\n\n protected mediateWith(action: I, testResults: IActorReply[]): Promise {\n return new Promise((resolve, reject) => {\n const errors: Error[] = [];\n for (const testResult of testResults) {\n testResult.reply.then(() => {\n resolve(testResult.actor);\n }).catch((error) => {\n // Reject if all replies were rejected\n errors.push(error);\n if (errors.length === testResults.length) {\n reject(new Error(`${this.name} mediated over all rejecting actors:\\n${\n errors.map(subError => subError.message).join('\\n')}`));\n }\n });\n }\n });\n }\n}\n","import type { IMetadataValidationState } from '@comunica/types';\n\n/**\n * Reusable implementation for metadata validation states.\n */\nexport class MetadataValidationState implements IMetadataValidationState {\n private readonly invalidateListeners: (() => void)[] = [];\n public valid = true;\n\n public addInvalidateListener(listener: () => void): void {\n this.invalidateListeners.push(listener);\n }\n\n public invalidate(): void {\n if (this.valid) {\n this.valid = false;\n for (const invalidateListener of this.invalidateListeners) {\n invalidateListener();\n }\n }\n }\n}\n","/**\n * A logger accepts messages from different levels\n * and emits them in a certain way.\n */\nexport abstract class Logger {\n /**\n * All available logging levels.\n * @type {{trace: number; debug: number; info: number; warn: number; error: number; fatal: number}}\n */\n\n public static readonly LEVELS: Record = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n };\n\n /**\n * Convert a string-based logging level to a numerical logging level.\n * @param level A string-based logging level\n * @return The numerical logging level, or undefined.\n */\n public static getLevelOrdinal(level: string): number {\n return Logger.LEVELS[level];\n }\n\n public abstract trace(message: string, data?: any): void;\n public abstract debug(message: string, data?: any): void;\n public abstract info(message: string, data?: any): void;\n public abstract warn(message: string, data?: any): void;\n public abstract error(message: string, data?: any): void;\n public abstract fatal(message: string, data?: any): void;\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (typeof object === 'number' && isNaN(object)) {\n throw new Error('NaN is not allowed');\n }\n\n if (typeof object === 'number' && !isFinite(object)) {\n throw new Error('Infinity is not allowed');\n }\n\n if (object === null || typeof object !== 'object') {\n return JSON.stringify(object);\n }\n\n if (object.toJSON instanceof Function) {\n return serialize(object.toJSON());\n }\n\n if (Array.isArray(object)) {\n const values = object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return `${t}${comma}${serialize(value)}`;\n }, '');\n return `[${values}]`;\n }\n\n const values = Object.keys(object).sort().reduce((t, cv) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return `${t}${comma}${serialize(cv)}:${serialize(object[cv])}`;\n }, '');\n return `{${values}}`;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.promisifyEventEmitter = void 0;\nfunction promisifyEventEmitter(event, result) {\n return new Promise((resolve, reject) => {\n event.on('end', () => resolve(result));\n event.on('error', reject);\n });\n}\nexports.promisifyEventEmitter = promisifyEventEmitter;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n if ((a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n for (i of a.entries())\n if (!equal(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if ((a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/SparqlEndpointFetcher\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SparqlEndpointFetcher = void 0;\nrequire(\"cross-fetch/polyfill\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst sparqljson_parse_1 = require(\"sparqljson-parse\");\nconst sparqlxml_parse_1 = require(\"sparqlxml-parse\");\nconst stringifyStream = require(\"stream-to-string\");\nconst readable_web_to_node_stream_1 = require(\"@smessie/readable-web-to-node-stream\");\n// tslint:disable:no-var-requires\nconst n3 = require('n3');\nconst isStream = require('is-stream');\n/**\n * A SparqlEndpointFetcher can send queries to SPARQL endpoints,\n * and retrieve and parse the results.\n */\nclass SparqlEndpointFetcher {\n constructor(args) {\n args = args || {};\n this.method = args.method || 'POST';\n this.additionalUrlParams = args.additionalUrlParams || new URLSearchParams();\n this.defaultHeaders = args.defaultHeaders || new Headers();\n this.fetchCb = args.fetch;\n this.sparqlJsonParser = new sparqljson_parse_1.SparqlJsonParser(args);\n this.sparqlXmlParser = new sparqlxml_parse_1.SparqlXmlParser(args);\n this.sparqlParsers = {\n [SparqlEndpointFetcher.CONTENTTYPE_SPARQL_JSON]: {\n parseBooleanStream: (sparqlResponseStream) => this.sparqlJsonParser.parseJsonBooleanStream(sparqlResponseStream),\n parseResultsStream: (sparqlResponseStream) => this.sparqlJsonParser.parseJsonResultsStream(sparqlResponseStream),\n },\n [SparqlEndpointFetcher.CONTENTTYPE_SPARQL_XML]: {\n parseBooleanStream: (sparqlResponseStream) => this.sparqlXmlParser.parseXmlBooleanStream(sparqlResponseStream),\n parseResultsStream: (sparqlResponseStream) => this.sparqlXmlParser.parseXmlResultsStream(sparqlResponseStream),\n },\n };\n this.timeout = args.timeout;\n }\n /**\n * Get the query type of the given query.\n *\n * This will parse the query and thrown an exception on syntax errors.\n *\n * @param {string} query A query.\n * @return {\"SELECT\" | \"ASK\" | \"CONSTRUCT\" | \"UNKNOWN\"} The query type.\n */\n getQueryType(query) {\n const parsedQuery = new sparqljs_1.Parser({ sparqlStar: true }).parse(query);\n return parsedQuery.type === 'query'\n ? (parsedQuery.queryType === 'DESCRIBE' ? 'CONSTRUCT' : parsedQuery.queryType) : \"UNKNOWN\";\n }\n /**\n * Get the query type of the given update query.\n *\n * This will parse the update query and thrown an exception on syntax errors.\n *\n * @param {string} query An update query.\n * @return {'UNKNOWN' | UpdateTypes} The included update operations.\n */\n getUpdateTypes(query) {\n const parsedQuery = new sparqljs_1.Parser({ sparqlStar: true }).parse(query);\n if (parsedQuery.type === 'update') {\n const operations = {};\n for (const update of parsedQuery.updates) {\n if ('type' in update) {\n operations[update.type] = true;\n }\n else {\n operations[update.updateType] = true;\n }\n }\n return operations;\n }\n else {\n return \"UNKNOWN\";\n }\n ;\n }\n ;\n /**\n * Send a SELECT query to the given endpoint URL and return the resulting bindings stream.\n * @see IBindings\n * @param {string} endpoint A SPARQL endpoint URL. (without the `?query=` suffix).\n * @param {string} query A SPARQL query string.\n * @return {Promise} A stream of {@link IBindings}.\n */\n async fetchBindings(endpoint, query) {\n const [contentType, responseStream] = await this\n .fetchRawStream(endpoint, query, SparqlEndpointFetcher.CONTENTTYPE_SPARQL);\n const parser = this.sparqlParsers[contentType];\n if (!parser) {\n throw new Error('Unknown SPARQL results content type: ' + contentType);\n }\n return parser.parseResultsStream(responseStream);\n }\n /**\n * Send an ASK query to the given endpoint URL and return a promise resolving to the boolean answer.\n * @param {string} endpoint A SPARQL endpoint URL. (without the `?query=` suffix).\n * @param {string} query A SPARQL query string.\n * @return {Promise} A boolean resolving to the answer.\n */\n async fetchAsk(endpoint, query) {\n const [contentType, responseStream] = await this\n .fetchRawStream(endpoint, query, SparqlEndpointFetcher.CONTENTTYPE_SPARQL);\n const parser = this.sparqlParsers[contentType];\n if (!parser) {\n throw new Error('Unknown SPARQL results content type: ' + contentType);\n }\n return parser.parseBooleanStream(responseStream);\n }\n /**\n * Send a CONSTRUCT/DESCRIBE query to the given endpoint URL and return the resulting triple stream.\n * @param {string} endpoint A SPARQL endpoint URL. (without the `?query=` suffix).\n * @param {string} query A SPARQL query string.\n * @return {Promise} A stream of triples.\n */\n async fetchTriples(endpoint, query) {\n const rawStream = (await this.fetchRawStream(endpoint, query, SparqlEndpointFetcher.CONTENTTYPE_TURTLE))[1];\n return rawStream.pipe(new n3.StreamParser({ format: SparqlEndpointFetcher.CONTENTTYPE_TURTLE }));\n }\n /**\n * Send an update query to the given endpoint URL using POST.\n *\n * @param {string} endpoint A SPARQL endpoint URL. (without the `?query=` suffix).\n * @param {string} query A SPARQL query string.\n */\n async fetchUpdate(endpoint, query) {\n const AbortController = globalThis.AbortController || await Promise.resolve().then(() => require('abort-controller'));\n const abortController = new AbortController();\n const defaultHeadersRaw = {};\n this.defaultHeaders.forEach((value, key) => {\n defaultHeadersRaw[key] = value;\n });\n const init = {\n method: 'POST',\n headers: Object.assign(Object.assign({}, defaultHeadersRaw), { 'content-type': 'application/sparql-update' }),\n body: query,\n signal: abortController.signal,\n };\n await this.handleFetchCall(endpoint, init, { ignoreBody: true });\n abortController.abort();\n }\n /**\n * Send a query to the given endpoint URL and return the resulting stream.\n *\n * This will only accept responses with the application/sparql-results+json content type.\n *\n * @param {string} endpoint A SPARQL endpoint URL. (without the `?query=` suffix).\n * @param {string} query A SPARQL query string.\n * @param {string} acceptHeader The HTTP accept to use.\n * @return {Promise<[string, NodeJS.ReadableStream]>} The content type and SPARQL endpoint response stream.\n */\n async fetchRawStream(endpoint, query, acceptHeader) {\n let url = this.method === 'POST' ? endpoint : endpoint + '?query=' + encodeURIComponent(query);\n // Initiate request\n const headers = new Headers(this.defaultHeaders);\n let body;\n headers.append('Accept', acceptHeader);\n if (this.method === 'POST') {\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n body = new URLSearchParams();\n body.set('query', query);\n this.additionalUrlParams.forEach((value, key) => {\n body.set(key, value);\n });\n headers.append('Content-Length', body.toString().length.toString());\n }\n else if (this.additionalUrlParams.toString() !== '') {\n url += `&${this.additionalUrlParams.toString()}`;\n }\n return this.handleFetchCall(url, { headers, method: this.method, body });\n }\n /**\n * Helper function to generalize internal fetch calls.\n *\n * @param {string} url The URL to call.\n * @param {RequestInit} init Options to pass along to the fetch call.\n * @param {any} options Other specific fetch options.\n * @return {Promise<[string, NodeJS.ReadableStream]>} The content type and SPARQL endpoint response stream.\n */\n async handleFetchCall(url, init, options = {}) {\n let timeoutId;\n if (this.timeout) {\n const controller = new AbortController();\n init.signal = controller.signal;\n timeoutId = setTimeout(() => controller.abort(), this.timeout);\n }\n const httpResponse = await (this.fetchCb || fetch)(url, init);\n clearTimeout(timeoutId);\n let responseStream;\n // Handle response body\n if (!options.ignoreBody) {\n // Wrap WhatWG readable stream into a Node.js readable stream\n // If the body already is a Node.js stream (in the case of node-fetch), don't do explicit conversion.\n responseStream = isStream(httpResponse.body)\n ? httpResponse.body : new readable_web_to_node_stream_1.ReadableWebToNodeStream(httpResponse.body);\n }\n // Determine the content type and emit it to the stream\n let contentType = httpResponse.headers.get('Content-Type') || '';\n if (contentType.indexOf(';') > 0) {\n contentType = contentType.substr(0, contentType.indexOf(';'));\n }\n // Emit an error if the server returned an invalid response\n if (!httpResponse.ok) {\n const simpleUrl = /^[^?]*/u.exec(url)[0];\n let bodyString = 'empty response';\n if (responseStream) {\n bodyString = await stringifyStream(responseStream);\n }\n throw new Error(`Invalid SPARQL endpoint response from ${simpleUrl} (HTTP status ${httpResponse.status}):\\n${bodyString}`);\n }\n return [contentType, responseStream];\n }\n}\nSparqlEndpointFetcher.CONTENTTYPE_SPARQL_JSON = 'application/sparql-results+json';\nSparqlEndpointFetcher.CONTENTTYPE_SPARQL_XML = 'application/sparql-results+xml';\nSparqlEndpointFetcher.CONTENTTYPE_SPARQL = `${SparqlEndpointFetcher.CONTENTTYPE_SPARQL_JSON};q=1.0,${SparqlEndpointFetcher.CONTENTTYPE_SPARQL_XML};q=0.7`;\nSparqlEndpointFetcher.CONTENTTYPE_TURTLE = 'text/turtle';\nexports.SparqlEndpointFetcher = SparqlEndpointFetcher;\n//# sourceMappingURL=SparqlEndpointFetcher.js.map","(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(typeof self !== 'undefined' ? self : this);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/handler\"), exports);\n__exportStar(require(\"./lib/Converter\"), exports);\n__exportStar(require(\"./lib/IConvertContext\"), exports);\n__exportStar(require(\"./lib/IConvertSettings\"), exports);\n__exportStar(require(\"./lib/Util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Converter = void 0;\nconst language_1 = require(\"graphql/language\");\nconst handler_1 = require(\"./handler\");\nconst directivenode_1 = require(\"./handler/directivenode\");\nconst IConvertContext_1 = require(\"./IConvertContext\");\nconst Util_1 = require(\"./Util\");\n/**\n * Translate GraphQL queries into SPARQL algebra.\n */\nclass Converter {\n constructor(settings) {\n settings = settings || {};\n settings.variableDelimiter = settings.variableDelimiter || '_';\n settings.expressionVariableCounter = settings.expressionVariableCounter || 0;\n this.util = new Util_1.Util(settings);\n this.initializeNodeHandlers(settings);\n }\n static registerNodeHandlers(util, settings) {\n util.registerNodeHandler(new handler_1.NodeHandlerDocument(util, settings));\n util.registerNodeHandler(new handler_1.NodeHandlerDefinitionOperation(util, settings));\n util.registerNodeHandler(new handler_1.NodeHandlerDefinitionFragment(util, settings));\n util.registerNodeHandler(new handler_1.NodeHandlerSelectionFragmentSpread(util, settings));\n util.registerNodeHandler(new handler_1.NodeHandlerSelectionInlineFragment(util, settings));\n util.registerNodeHandler(new handler_1.NodeHandlerSelectionField(util, settings));\n }\n static registerNodeValueHandlers(util, settings) {\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerVariable(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerInt(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerFloat(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerString(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerBoolean(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerNull(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerEnum(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerList(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerObject(util, settings));\n }\n static registerDirectiveNodeHandlers(util, settings) {\n util.registerDirectiveNodeHandler(new directivenode_1.DirectiveNodeHandlerInclude(util, settings));\n util.registerDirectiveNodeHandler(new directivenode_1.DirectiveNodeHandlerOptional(util, settings));\n util.registerDirectiveNodeHandler(new directivenode_1.DirectiveNodeHandlerPlural(util, settings));\n util.registerDirectiveNodeHandler(new directivenode_1.DirectiveNodeHandlerSingle(util, settings));\n util.registerDirectiveNodeHandler(new directivenode_1.DirectiveNodeHandlerSkip(util, settings));\n }\n /**\n * Translates a GraphQL query into SPARQL algebra.\n * @param {string | DocumentNode} graphqlQuery A GraphQL query string or node.\n * @param {IContext} context A JSON-LD context.\n * @param {IConvertOptions} options An options object.\n * @return {Promise} A promise resolving to an operation.\n */\n graphqlToSparqlAlgebra(graphqlQuery, context, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.graphqlToSparqlAlgebraRawContext(graphqlQuery, yield this.util.contextParser.parse(context), options);\n });\n }\n /**\n * Translates a GraphQL query into SPARQL algebra.\n * @param {string | DocumentNode} graphqlQuery A GraphQL query string or node.\n * @param {IContext} context A JSON-LD context.\n * @param {IConvertOptions} options An options object.\n * @return {Operation} An operation.\n */\n graphqlToSparqlAlgebraRawContext(graphqlQuery, context, options) {\n options = options || {};\n const document = typeof graphqlQuery === 'string' ? (0, language_1.parse)(graphqlQuery) : graphqlQuery;\n const fragmentDefinitions = this.indexFragments(document);\n const convertContext = {\n context,\n fragmentDefinitions,\n graph: this.util.dataFactory.defaultGraph(),\n path: [],\n singularizeState: IConvertContext_1.SingularizeState.PLURAL,\n singularizeVariables: options.singularizeVariables || {},\n subject: null,\n terminalVariables: [],\n variablesDict: options.variablesDict || {},\n variablesMetaDict: {},\n };\n return this.util.handleNode(document, convertContext);\n }\n /**\n * Create an index of all fragment definitions in the given document.\n *\n * This will assign a new array of definition nodes without fragment definition.\n *\n * @param {DocumentNode} document A document node.\n * @return {{[p: string]: FragmentDefinitionNode}} An index of fragment definition nodes.\n */\n indexFragments(document) {\n const fragmentDefinitions = {};\n const newDefinitions = [];\n for (const definition of document.definitions) {\n if (definition.kind === 'FragmentDefinition') {\n fragmentDefinitions[definition.name.value] = definition;\n }\n else {\n newDefinitions.push(definition);\n }\n }\n document.definitions = newDefinitions;\n return fragmentDefinitions;\n }\n initializeNodeHandlers(settings) {\n Converter.registerNodeHandlers(this.util, settings);\n Converter.registerNodeValueHandlers(this.util, settings);\n Converter.registerDirectiveNodeHandlers(this.util, settings);\n }\n}\nexports.Converter = Converter;\n//# sourceMappingURL=Converter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SingularizeState = void 0;\n/**\n * A singularization state for variable values.\n */\nvar SingularizeState;\n(function (SingularizeState) {\n /**\n * If only a first matching value should be picked.\n */\n SingularizeState[SingularizeState[\"SINGLE\"] = 0] = \"SINGLE\";\n /**\n * If all matching values should be picked.\n */\n SingularizeState[SingularizeState[\"PLURAL\"] = 1] = \"PLURAL\";\n})(SingularizeState = exports.SingularizeState || (exports.SingularizeState = {}));\n//# sourceMappingURL=IConvertContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IConvertSettings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * Utilities for conversion.\n */\nclass Util {\n constructor(settings) {\n this.nodeHandlers = {};\n this.nodeValueHandlers = {};\n this.directiveNodeHandlers = {};\n this.settings = settings;\n this.dataFactory = settings.dataFactory || new rdf_data_factory_1.DataFactory();\n this.operationFactory = new sparqlalgebrajs_1.Factory(this.dataFactory);\n this.contextParser = new jsonld_context_parser_1.ContextParser();\n }\n /**\n * Register a new {@link NodeHandlerAdapter}.\n * @param {NodeHandlerAdapter} nodeHandler A handler for converting GraphQL nodes to operations.\n */\n registerNodeHandler(nodeHandler) {\n this.nodeHandlers[nodeHandler.targetKind] = nodeHandler;\n }\n /**\n * Register a new {@link NodeValueHandlerAdapter}\n * @param {NodeValueHandlerAdapter} nodeValueHandler A handler for converting GraphQL value nodes\n * to terms and patterns.\n */\n registerNodeValueHandler(nodeValueHandler) {\n this.nodeValueHandlers[nodeValueHandler.targetKind] = nodeValueHandler;\n }\n /**\n * Register a new {@link DirectiveNodeHandlerAdapter}\n * @param {DirectiveNodeHandlerAdapter} directiveNodeHandler A handler for handling GraphQL directives.\n */\n registerDirectiveNodeHandler(directiveNodeHandler) {\n this.directiveNodeHandlers[directiveNodeHandler.targetKind] = directiveNodeHandler;\n }\n /**\n * Get the operation for the given GraphQL node.\n * @param {T} node A GraphQL node.\n * @param {IConvertContext} convertContext A conversion context.\n * @return {Operation} A SPARQL algebra operation.\n */\n handleNode(node, convertContext) {\n const nodeHandler = this.nodeHandlers[node.kind];\n if (!nodeHandler) {\n throw new Error(`Unsupported GraphQL node '${node.kind}'`);\n }\n return nodeHandler.handle(node, convertContext);\n }\n /**\n * Get the terms and patterns for the given value node.\n * @param {T} node A GraphQL node.\n * @param {string} fieldName The name of the field or argument in which the value was encapsulated.\n * @param {IConvertContext} convertContext A conversion context.\n * @return {IValueNodeHandlerOutput} The RDF terms and patterns.\n */\n handleNodeValue(node, fieldName, convertContext) {\n const nodeValueHandler = this.nodeValueHandlers[node.kind];\n if (!nodeValueHandler) {\n throw new Error(`Unsupported GraphQL value node '${node.kind}'`);\n }\n return nodeValueHandler.handle(node, fieldName, convertContext);\n }\n /**\n * Get the handler output for the given directive.\n * @param {IDirectiveContext} directiveContext The current directive context.\n * @param {IConvertContext} convertContext A conversion context.\n * @return {IDirectiveNodeHandlerOutput} The directive node handler output or null.\n */\n handleDirectiveNode(directiveContext, convertContext) {\n const directiveNodeHandler = this.directiveNodeHandlers[directiveContext.directive.name.value];\n if (!directiveNodeHandler) {\n return null;\n }\n return directiveNodeHandler.handle(directiveContext, convertContext);\n }\n /**\n * Join the given array of operations.\n * If all operations are BGPs, then a single big BGP with all patterns from the given BGPs will be created.\n * @param {Operation[]} operations An array of operations.\n * @return {Operation} A single joined operation.\n */\n joinOperations(operations) {\n if (operations.length === 1) {\n return operations[0];\n }\n // Check if which operations are BGPs\n const bgps = [];\n const nonBgps = [];\n for (const operation of operations) {\n if (operation.type === 'bgp') {\n bgps.push(operation);\n }\n else {\n nonBgps.push(operation);\n }\n }\n if (bgps.length === operations.length) {\n // Create a big BGP from all BGPs\n return this.joinOperationsAsBgp(bgps);\n }\n else if (bgps.length === operations.length - 1\n && nonBgps[0].type === 'leftjoin'\n && nonBgps[0].input[0].type === 'bgp') {\n // Check if we have one left-join (with a BGP on the left), and the rest are BGPs.\n // If so, merge the BGPS within the left-hand-side of the left-join.\n const originalLeftJoin = nonBgps[0];\n bgps.push(originalLeftJoin.input[0]);\n return this.operationFactory.createLeftJoin(this.joinOperationsAsBgp(bgps), originalLeftJoin.input[1]);\n }\n else if (nonBgps.length === operations.length) {\n // Create nested joins\n return this.joinOperationsAsNestedJoin(nonBgps);\n }\n else {\n // Join as much BGPs together as possible, and join with the other operations\n return this.joinOperationsAsNestedJoin([\n this.joinOperationsAsBgp(bgps),\n this.joinOperationsAsNestedJoin(nonBgps),\n ]);\n }\n }\n joinOperationsAsBgp(operations) {\n return this.operationFactory.createBgp([].concat.apply([], operations\n .map((op) => op.patterns)));\n }\n joinOperationsAsNestedJoin(operations) {\n return this.operationFactory.createJoin(operations);\n }\n /**\n * Append a field's label to a path.\n * @param {string[]} path A path.\n * @param {string} fieldLabel A field label.\n * @return {string[]} A new path array.\n */\n appendFieldToPath(path, fieldLabel) {\n return path.concat([fieldLabel]);\n }\n /**\n * Get the label of a field by taking into account the alias.\n * @param {FieldNode} field A field node.\n * @return {string} The field name or alias.\n */\n getFieldLabel(field) {\n return (field.alias ? field.alias : field.name).value;\n }\n /**\n * Convert a field node to a variable built from the node name and the current path inside the context.\n * @param {string} fieldLabel A field label.\n * @param {IConvertContext} convertContext A convert context.\n * @param {string} variableDelimiter A variable delimiter.\n * @return {Variable} A variable.\n */\n nameToVariable(fieldLabel, convertContext) {\n return this.dataFactory.variable((convertContext.path.length\n ? convertContext.path.join(this.settings.variableDelimiter) + this.settings.variableDelimiter : '') + fieldLabel);\n }\n /**\n * Convert a GraphQL term into a URI using the given context.\n * @param {string} value A GraphQL term.\n * @param {IContext} context A JSON-LD context.\n * @return {NamedNode} A named node.\n */\n valueToNamedNode(value, context) {\n const contextValue = context.expandTerm(value, true);\n if (this.settings.requireContext && !contextValue) {\n throw new Error('No context entry was found for ' + value);\n }\n return this.dataFactory.namedNode(contextValue || value);\n }\n /**\n * Get an argument by name.\n * This will return null if the argument could not be found.\n * @param {ReadonlyArray} args Arguments or null.\n * @param {string} name The name of an argument.\n * @return {ArgumentNode} The named argument.\n */\n getArgument(args, name) {\n if (args) {\n for (const argument of args) {\n if (argument.name.value === name) {\n return argument;\n }\n }\n }\n }\n /**\n * Create a pattern with an rdf:type predicate.\n * @param {Term} subject The subject.\n * @param {NamedTypeNode} typeCondition The object name.\n * @param {IConvertContext} convertContext A convert context.\n * @return {Pattern} A pattern.\n */\n newTypePattern(subject, typeCondition, convertContext) {\n return this.operationFactory.createPattern(subject, this.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), this.valueToNamedNode(typeCondition.name.value, convertContext.context), convertContext.graph);\n }\n /**\n * Create a quad pattern when the predicate is a name node that needs to be translated using the context.\n * @param {Term} subject The subject.\n * @param {NameNode} predicateName The name node for the predicate.\n * @param {Term} object The object.\n * @param {Term} graph The graph.\n * @param {IContext} context A context.\n * @return {Pattern} A quad pattern.\n */\n createQuadPattern(subject, predicateName, object, graph, context) {\n const predicate = this.valueToNamedNode(predicateName.value, context);\n if (context && context.getContextRaw()[predicateName.value]\n && context.getContextRaw()[predicateName.value]['@reverse']) {\n return this.operationFactory.createPattern(object, predicate, subject, graph);\n }\n return this.operationFactory.createPattern(subject, predicate, object, graph);\n }\n /**\n * Create a quad path when the predicate is a list node with field alternatives\n * that need to be translated using the context.\n * @param {Term} subject The subject.\n * @param {NameNode} predicateName The name node for the predicate.\n * @param {Term} object The object.\n * @param {Term} graph The graph.\n * @param {IContext} context A context.\n * @return {Path} A quad property path.\n */\n createQuadPath(subject, predicateName, predicateAlternatives, object, graph, context) {\n const predicateInitial = this.valueToNamedNode(predicateName.value, context);\n let pathSymbol = this.operationFactory.createLink(predicateInitial);\n // Add all fields in the list as predicate alternatives\n for (const predicateAlternative of predicateAlternatives.values) {\n if (predicateAlternative.kind !== 'EnumValue') {\n throw new Error('Invalid value type for \\'alt\\' argument, must be EnumValue, but got '\n + predicateAlternative.kind);\n }\n pathSymbol = this.operationFactory.createAlt([\n pathSymbol,\n this.operationFactory.createLink(this.valueToNamedNode(predicateAlternative.value, context)),\n ]);\n }\n // Reverse the path based on the initial predicate\n if (context && context.getContextRaw()[predicateName.value]\n && context.getContextRaw()[predicateName.value]['@reverse']) {\n return this.operationFactory.createPath(object, pathSymbol, subject, graph);\n }\n return this.operationFactory.createPath(subject, pathSymbol, object, graph);\n }\n}\nexports.Util = Util;\n//# sourceMappingURL=Util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerAdapter = void 0;\n/**\n * A handler for converting GraphQL nodes to operations.\n */\nclass NodeHandlerAdapter {\n constructor(targetKind, util, settings) {\n this.targetKind = targetKind;\n this.util = util;\n this.settings = settings;\n }\n /* ----- Node quad context ----- */\n /**\n * Get the quad context of a selection set node that should be used for the whole definition node.\n *\n * This is a pre-processing step of selection sets.\n * Its only purpose is to determine the subject within a selection set,\n * because this subject is needed to link with its parent.\n * In a later phase, the selection set will be processed using the discovered subject,\n * and the field identifying the subject will be ignored.\n *\n * @param {SelectionSetNode} selectionSet A selection set node.\n * @param {string} fieldLabel A field label.\n * @param {IConvertContext} convertContext A convert context.\n * @return {INodeQuadContext} The subject, graph and auxiliary patterns.\n */\n getNodeQuadContextSelectionSet(selectionSet, fieldLabel, convertContext) {\n const nodeQuadContext = {};\n if (selectionSet) {\n for (const selectionNode of selectionSet.selections) {\n if (selectionNode.kind === 'Field') {\n const fieldNode = selectionNode;\n this.handleNodeQuadContextField(fieldNode, convertContext, nodeQuadContext, 'id', 'subject');\n this.handleNodeQuadContextField(fieldNode, convertContext, nodeQuadContext, 'graph', 'graph');\n }\n }\n }\n return nodeQuadContext;\n }\n /**\n * Handles a single field for determining the node quad context.\n * @param {FieldNode} fieldNode A field node.\n * @param {IConvertContext} convertContext A convert context.\n * @param {INodeQuadContext} nodeQuadContext The node quad context to populate.\n * @param {string} fieldName The field name to check for.\n * @param {'subject' | 'graph'} nodeQuadContextKey The key to fill into the node quad context.\n */\n handleNodeQuadContextField(fieldNode, convertContext, nodeQuadContext, fieldName, nodeQuadContextKey) {\n if (!nodeQuadContext[nodeQuadContextKey] && fieldNode.name.value === fieldName) {\n // Get (or set) the nodeQuadContextKey for fieldName fields\n if (!nodeQuadContext[nodeQuadContextKey]) {\n const argument = this.util.getArgument(fieldNode.arguments, '_');\n if (argument) {\n const valueOutput = this.util.handleNodeValue(argument.value, fieldNode.name.value, convertContext);\n if (valueOutput.terms.length !== 1) {\n throw new Error(`Only single values can be set as ${fieldName}, but got ${valueOutput.terms\n .length} at ${fieldNode.name.value}`);\n }\n nodeQuadContext[nodeQuadContextKey] = valueOutput.terms[0];\n if (valueOutput.auxiliaryPatterns) {\n if (!nodeQuadContext.auxiliaryPatterns) {\n nodeQuadContext.auxiliaryPatterns = [];\n }\n nodeQuadContext.auxiliaryPatterns.concat(valueOutput.auxiliaryPatterns);\n }\n }\n }\n if (!nodeQuadContext[nodeQuadContextKey]) {\n const term = this.util.nameToVariable(this.util.getFieldLabel(fieldNode), convertContext);\n convertContext.terminalVariables.push(term);\n nodeQuadContext[nodeQuadContextKey] = term;\n }\n }\n }\n /* ----- Directives ----- */\n /**\n * Get an operation override defined by one of the directives.\n *\n * This should be called before a sub-operation is handled.\n *\n * @param {ReadonlyArray} directives An option directives array.\n * @param {string} fieldLabel The current field label.\n * @param {IConvertContext} convertContext A convert context.\n * @return {IDirectiveNodeHandlerOutput[]} The directive node handler outputs, or null if it should be ignored.\n */\n getDirectiveOutputs(directives, fieldLabel, convertContext) {\n const outputs = [];\n if (directives) {\n for (const directive of directives) {\n const output = this.util.handleDirectiveNode({ directive, fieldLabel }, convertContext);\n if (output) {\n if (output.ignore) {\n return null;\n }\n outputs.push(output);\n }\n }\n }\n return outputs;\n }\n /**\n * Handle the directive outputs with respect to an operation.\n *\n * This should be called after a sub-operation was handled.\n *\n * @param {IDirectiveNodeHandlerOutput[]} directiveOutputs\n * @param {Operation} operation\n * @return {Operation}\n */\n handleDirectiveOutputs(directiveOutputs, operation) {\n for (const directiveOutput of directiveOutputs) {\n if (directiveOutput.ignore) {\n return this.util.operationFactory.createBgp([]);\n }\n if (directiveOutput.operationOverrider) {\n operation = directiveOutput.operationOverrider(operation);\n }\n }\n return operation;\n }\n}\nexports.NodeHandlerAdapter = NodeHandlerAdapter;\n//# sourceMappingURL=NodeHandlerAdapter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerDefinitionAdapter = void 0;\nconst NodeHandlerAdapter_1 = require(\"./NodeHandlerAdapter\");\n/**\n * A handler for converting GraphQL definition nodes to operations.\n */\nclass NodeHandlerDefinitionAdapter extends NodeHandlerAdapter_1.NodeHandlerAdapter {\n constructor(targetKind, util, settings) {\n super(targetKind, util, settings);\n }\n}\nexports.NodeHandlerDefinitionAdapter = NodeHandlerDefinitionAdapter;\n//# sourceMappingURL=NodeHandlerDefinitionAdapter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerDefinitionFragment = void 0;\nconst NodeHandlerDefinitionAdapter_1 = require(\"./NodeHandlerDefinitionAdapter\");\n/**\n * Errors if fragment definitions are found,\n * as these should have been processed away earlier.\n */\nclass NodeHandlerDefinitionFragment extends NodeHandlerDefinitionAdapter_1.NodeHandlerDefinitionAdapter {\n constructor(util, settings) {\n super('FragmentDefinition', util, settings);\n }\n handle(operationDefinition, convertContext) {\n throw new Error('Illegal state: fragment definitions must be indexed and removed before processing');\n }\n}\nexports.NodeHandlerDefinitionFragment = NodeHandlerDefinitionFragment;\n//# sourceMappingURL=NodeHandlerDefinitionFragment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerDefinitionOperation = void 0;\nconst NodeHandlerDefinitionAdapter_1 = require(\"./NodeHandlerDefinitionAdapter\");\n/**\n * Converts GraphQL definitions to joined operations for all its selections.\n */\nclass NodeHandlerDefinitionOperation extends NodeHandlerDefinitionAdapter_1.NodeHandlerDefinitionAdapter {\n constructor(util, settings) {\n super('OperationDefinition', util, settings);\n }\n handle(operationDefinition, convertContext) {\n if (operationDefinition.operation !== 'query') {\n throw new Error('Unsupported definition operation: ' + operationDefinition.operation);\n }\n // We ignore the query name, as SPARQL doesn't support naming queries.\n // Variables\n if (operationDefinition.variableDefinitions) {\n for (const variableDefinition of operationDefinition.variableDefinitions) {\n const name = variableDefinition.variable.name.value;\n // Put the default value in the context if it hasn't been defined yet.\n if (variableDefinition.defaultValue) {\n if (!convertContext.variablesDict[name]) {\n convertContext.variablesDict[name] = variableDefinition.defaultValue;\n }\n }\n // Handle type\n let typeNode = variableDefinition.type;\n const mandatory = typeNode.kind === 'NonNullType';\n if (mandatory) {\n typeNode = typeNode.type;\n }\n const list = typeNode.kind === 'ListType';\n if (list) {\n typeNode = typeNode.type;\n }\n const type = typeNode.name.value;\n convertContext.variablesMetaDict[name] = { mandatory, list, type };\n }\n }\n // Directives\n const directiveOutputs = this.getDirectiveOutputs(operationDefinition.directives, operationDefinition.name ? operationDefinition.name.value : '', convertContext);\n if (!directiveOutputs) {\n return this.util.operationFactory.createBgp([]);\n }\n // Handle the operation\n const operation = this.util.joinOperations(operationDefinition.selectionSet.selections\n .map((selectionNode) => this.util.handleNode(selectionNode, convertContext)));\n // Override operation if needed\n return this.handleDirectiveOutputs(directiveOutputs, operation);\n }\n}\nexports.NodeHandlerDefinitionOperation = NodeHandlerDefinitionOperation;\n//# sourceMappingURL=NodeHandlerDefinitionOperation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerDocument = void 0;\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst NodeHandlerAdapter_1 = require(\"./NodeHandlerAdapter\");\n/**\n * Converts GraphQL documents to joined operations for all its definitions.\n */\nclass NodeHandlerDocument extends NodeHandlerAdapter_1.NodeHandlerAdapter {\n constructor(util, settings) {\n super('Document', util, settings);\n }\n handle(document, convertContext) {\n const definitionOperations = document.definitions\n .map((definition) => {\n const subjectOutput = this.getNodeQuadContextDefinitionNode(definition, Object.assign(Object.assign({}, convertContext), { ignoreUnknownVariables: true }));\n const queryParseContext = Object.assign(Object.assign({}, convertContext), { graph: subjectOutput.graph || convertContext.graph, subject: subjectOutput.subject || this.util.dataFactory.blankNode() });\n let definitionOperation = this.util.handleNode(definition, queryParseContext);\n if (subjectOutput && subjectOutput.auxiliaryPatterns) {\n definitionOperation = this.util.joinOperations([\n definitionOperation,\n this.util.operationFactory.createBgp(subjectOutput.auxiliaryPatterns),\n ]);\n }\n return definitionOperation;\n });\n const operation = this.util.operationFactory.createProject(definitionOperations.length === 1 ? definitionOperations[0] : this.util.operationFactory.createUnion(definitionOperations), convertContext.terminalVariables);\n // Convert blank nodes to variables\n return this.translateBlankNodesToVariables(operation);\n }\n /**\n * Get the quad context of a definition node that should be used for the whole definition node.\n * @param {DefinitionNode} definition A definition node.\n * @param {IConvertContext} convertContext A convert context.\n * @return {INodeQuadContext} The subject and optional auxiliary patterns.\n */\n getNodeQuadContextDefinitionNode(definition, convertContext) {\n if (definition.kind === 'OperationDefinition') {\n return this.getNodeQuadContextSelectionSet(definition.selectionSet, definition.name ? definition.name.value : '', convertContext);\n }\n throw new Error(`Unsupported definition: ${definition.kind}`);\n }\n /**\n * Translates blank nodes inside the query to variables.\n * @param {Project} operation The operation to translate.\n * @return {Operation} The transformed operation.\n */\n translateBlankNodesToVariables(operation) {\n const self = this;\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(operation.variables)\n .reduce((acc, variable) => {\n acc[variable.value] = true;\n return acc;\n }, {});\n return sparqlalgebrajs_1.Util.mapOperation(operation, {\n path: (op, factory) => {\n return {\n recurse: false,\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n };\n },\n pattern: (op, factory) => {\n return {\n recurse: false,\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = sparqlalgebrajs_1.Util.createUniqueVariable(term.value, variablesRaw, self.util.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n }\n}\nexports.NodeHandlerDocument = NodeHandlerDocument;\n//# sourceMappingURL=NodeHandlerDocument.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerSelectionAdapter = void 0;\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst IConvertContext_1 = require(\"../IConvertContext\");\nconst NodeHandlerAdapter_1 = require(\"./NodeHandlerAdapter\");\n/**\n * A handler for converting GraphQL selection nodes to operations.\n */\nclass NodeHandlerSelectionAdapter extends NodeHandlerAdapter_1.NodeHandlerAdapter {\n constructor(targetKind, util, settings) {\n super(targetKind, util, settings);\n }\n /**\n * Get the quad context of a field node that should be used for the whole definition node.\n * @param {FieldNode} field A field node.\n * @param {string} fieldLabel A field label.\n * @param {IConvertContext} convertContext A convert context.\n * @return {INodeQuadContext} The subject and optional auxiliary patterns.\n */\n getNodeQuadContextFieldNode(field, fieldLabel, convertContext) {\n return this.getNodeQuadContextSelectionSet(field.selectionSet, fieldLabel, Object.assign(Object.assign({}, convertContext), { path: this.util.appendFieldToPath(convertContext.path, fieldLabel) }));\n }\n /**\n * Convert a field node to an operation.\n * @param {IConvertContext} convertContext A convert context.\n * @param {FieldNode} fieldNode The field node to convert.\n * @param {boolean} pushTerminalVariables If terminal variables should be created.\n * @param {Pattern[]} auxiliaryPatterns Optional patterns that should be part of the BGP.\n * @return {Operation} The reslting operation.\n */\n fieldToOperation(convertContext, fieldNode, pushTerminalVariables, auxiliaryPatterns) {\n // If a deeper node is being selected, and if the current object should become the next subject\n const nesting = pushTerminalVariables;\n // Offset and limit can be changed using the magic arguments 'first' and 'offset'.\n let offset = 0;\n let limit;\n // Ignore 'id' and 'graph' fields, because we have processed them earlier in getNodeQuadContextSelectionSet.\n if (fieldNode.name.value === 'id' || fieldNode.name.value === 'graph') {\n pushTerminalVariables = false;\n // Validate all _-arguments, because even though they were handled before,\n // the validity of variables could not be checked,\n // as variablesMetaDict wasn't populated at that time yet.\n if (fieldNode.arguments) {\n for (const argument of fieldNode.arguments) {\n if (argument.name.value === '_') {\n this.util.handleNodeValue(argument.value, fieldNode.name.value, convertContext);\n }\n }\n }\n }\n // Determine the field label for variable naming, taking into account aliases\n const fieldLabel = this.util.getFieldLabel(fieldNode);\n // Handle the singular/plural scope\n if (convertContext.singularizeState === IConvertContext_1.SingularizeState.SINGLE) {\n convertContext.singularizeVariables[this.util.nameToVariable(fieldLabel, convertContext).value] = true;\n }\n // Handle meta fields\n if (pushTerminalVariables) {\n const operationOverride = this.handleMetaField(convertContext, fieldLabel, auxiliaryPatterns);\n if (operationOverride) {\n return operationOverride;\n }\n }\n const operations = auxiliaryPatterns\n ? [this.util.operationFactory.createBgp(auxiliaryPatterns)] : [];\n // Define subject and object\n const subjectOutput = this.getNodeQuadContextFieldNode(fieldNode, fieldLabel, convertContext);\n let object = subjectOutput.subject || this.util.nameToVariable(fieldLabel, convertContext);\n let graph = subjectOutput.graph || convertContext.graph;\n if (subjectOutput.auxiliaryPatterns) {\n operations.push(this.util.operationFactory.createBgp(subjectOutput.auxiliaryPatterns));\n }\n // Check if there is a '_' argument\n // We do this before handling all other arguments so that the order of final triple patterns is sane.\n let createQuadPattern = true;\n let overrideObjectTerms = null;\n if (pushTerminalVariables && fieldNode.arguments && fieldNode.arguments.length) {\n for (const argument of fieldNode.arguments) {\n if (argument.name.value === '_') {\n // '_'-arguments do not create an additional predicate link, but set the value directly.\n const valueOutput = this.util.handleNodeValue(argument.value, fieldNode.name.value, convertContext);\n overrideObjectTerms = valueOutput.terms;\n operations.push(this.util.operationFactory.createBgp(valueOutput.terms.map((term) => this.util.createQuadPattern(convertContext.subject, fieldNode.name, term, convertContext.graph, convertContext.context))));\n if (valueOutput.auxiliaryPatterns) {\n operations.push(this.util.operationFactory.createBgp(valueOutput.auxiliaryPatterns));\n }\n pushTerminalVariables = false;\n break;\n }\n else if (argument.name.value === 'graph') {\n // 'graph'-arguments do not create an additional predicate link, but set the graph.\n const valueOutput = this.util.handleNodeValue(argument.value, fieldNode.name.value, convertContext);\n if (valueOutput.terms.length !== 1) {\n throw new Error(`Only single values can be set as graph, but got ${valueOutput.terms\n .length} at ${fieldNode.name.value}`);\n }\n graph = valueOutput.terms[0];\n convertContext = Object.assign(Object.assign({}, convertContext), { graph });\n if (valueOutput.auxiliaryPatterns) {\n operations.push(this.util.operationFactory.createBgp(valueOutput.auxiliaryPatterns));\n }\n break;\n }\n else if (argument.name.value === 'alt') {\n // 'alt'-arguments do not create an additional predicate link, but create alt-property paths.\n let pathValue = argument.value;\n if (pathValue.kind !== 'ListValue') {\n pathValue = { kind: 'ListValue', values: [pathValue] };\n }\n operations.push(this.util.createQuadPath(convertContext.subject, fieldNode.name, pathValue, object, convertContext.graph, convertContext.context));\n createQuadPattern = false;\n break;\n }\n }\n }\n // Create at least a pattern for the parent node and the current path.\n if (pushTerminalVariables && createQuadPattern) {\n operations.push(this.util.operationFactory.createBgp([\n this.util.createQuadPattern(convertContext.subject, fieldNode.name, object, convertContext.graph, convertContext.context),\n ]));\n }\n // Create patterns for the node's arguments\n if (fieldNode.arguments && fieldNode.arguments.length) {\n for (const argument of fieldNode.arguments) {\n if (argument.name.value === '_' || argument.name.value === 'graph' || argument.name.value === 'alt') {\n // no-op\n }\n else if (argument.name.value === 'first') {\n if (argument.value.kind !== 'IntValue') {\n throw new Error('Invalid value type for \\'first\\' argument: ' + argument.value.kind);\n }\n limit = parseInt(argument.value.value, 10);\n }\n else if (argument.name.value === 'offset') {\n if (argument.value.kind !== 'IntValue') {\n throw new Error('Invalid value type for \\'offset\\' argument: ' + argument.value.kind);\n }\n offset = parseInt(argument.value.value, 10);\n }\n else {\n const valueOutput = this.util.handleNodeValue(argument.value, argument.name.value, convertContext);\n operations.push(this.util.operationFactory.createBgp(valueOutput.terms.map((term) => this.util.createQuadPattern(object, argument.name, term, convertContext.graph, convertContext.context))));\n if (valueOutput.auxiliaryPatterns) {\n operations.push(this.util.operationFactory.createBgp(valueOutput.auxiliaryPatterns));\n }\n }\n }\n }\n // Directives\n const directiveOutputs = this.getDirectiveOutputs(fieldNode.directives, fieldLabel, convertContext);\n if (!directiveOutputs) {\n return this.util.operationFactory.createBgp([]);\n }\n // Recursive call for nested selection sets\n let operation = this.util.joinOperations(operations);\n if (fieldNode.selectionSet && fieldNode.selectionSet.selections.length) {\n // Override the object if needed\n if (overrideObjectTerms) {\n if (overrideObjectTerms.length !== 1) {\n throw new Error(`Only single values can be set as id, but got ${overrideObjectTerms\n .length} at ${fieldNode.name.value}`);\n }\n object = overrideObjectTerms[0];\n }\n // Change path value when there was an alias on this node.\n const subConvertContext = Object.assign(Object.assign(Object.assign({}, convertContext), nesting ? { path: this.util.appendFieldToPath(convertContext.path, fieldLabel) } : {}), { graph, subject: nesting ? object : convertContext.subject });\n // If the magic keyword 'totalCount' is present, include a count aggregator.\n let totalCount = false;\n const selections = fieldNode.selectionSet.selections\n .filter((selection) => {\n if (selection.kind === 'Field' && selection.name.value === 'totalCount') {\n totalCount = true;\n return false;\n }\n return true;\n });\n let joinedOperation = this.util.joinOperations(operations\n .concat(selections.map((selectionNode) => this.util.handleNode(selectionNode, subConvertContext))));\n // Modify the operation if there was a count selection\n if (totalCount) {\n // Create to a count aggregation\n const expressionVariable = this.util.dataFactory.variable('var' + this.settings.expressionVariableCounter++);\n const countOverVariable = this.util.dataFactory\n .variable(object.value + this.settings.variableDelimiter + 'totalCount');\n const aggregator = this.util.operationFactory.createBoundAggregate(expressionVariable, 'count', this.util.operationFactory.createTermExpression(object), false);\n const countProject = this.util.operationFactory.createProject(this.util.operationFactory.createExtend(this.util.operationFactory.createGroup(operation, [], [aggregator]), countOverVariable, this.util.operationFactory.createTermExpression(expressionVariable)), [countOverVariable]);\n convertContext.terminalVariables.push(countOverVariable);\n // If no other selections exist (next to totalCount),\n // then we just return the count operations as-is,\n // otherwise, we join the count operation with all other selections\n if (!selections.length) {\n joinedOperation = countProject;\n }\n else {\n joinedOperation = this.util.operationFactory.createJoin([\n this.util.operationFactory.createProject(joinedOperation, []),\n countProject,\n ]);\n }\n }\n operation = joinedOperation;\n }\n else if (pushTerminalVariables && object.termType === 'Variable') {\n // If no nested selection sets exist,\n // consider the object variable as a terminal variable that should be selected.\n convertContext.terminalVariables.push(object);\n }\n // Wrap the operation in a slice if a 'first' or 'offset' argument was provided.\n if (offset || limit) {\n operation = this.util.operationFactory.createSlice(this.util.operationFactory.createProject(operation, sparqlalgebrajs_1.Util.inScopeVariables(operation)), offset, limit);\n }\n // Override operation if needed\n return this.handleDirectiveOutputs(directiveOutputs, operation);\n }\n /**\n * Check if the given node is a meta field, for things like introspection.\n * If so, return a new operation for this, otherwise, null is returned.\n * @param {IConvertContext} convertContext A convert context.\n * @param {Term} subject The subject.\n * @param {string} fieldLabel The field label to convert.\n * @param {Pattern[]} auxiliaryPatterns Optional patterns that should be part of the BGP.\n * @return {Operation} An operation or undefined.\n */\n handleMetaField(convertContext, fieldLabel, auxiliaryPatterns) {\n // TODO: in the future, we should add support for GraphQL wide range of introspection features:\n // http://graphql.org/learn/introspection/\n if (fieldLabel === '__typename') {\n const object = this.util.nameToVariable(fieldLabel, convertContext);\n convertContext.terminalVariables.push(object);\n return this.util.operationFactory.createBgp([\n this.util.operationFactory.createPattern(convertContext.subject, this.util.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), this.util.nameToVariable(fieldLabel, convertContext), convertContext.graph),\n ].concat(auxiliaryPatterns || []));\n }\n }\n}\nexports.NodeHandlerSelectionAdapter = NodeHandlerSelectionAdapter;\n//# sourceMappingURL=NodeHandlerSelectionAdapter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerSelectionField = void 0;\nconst NodeHandlerSelectionAdapter_1 = require(\"./NodeHandlerSelectionAdapter\");\n/**\n * Converts GraphQL fields to one or more quad patterns.\n */\nclass NodeHandlerSelectionField extends NodeHandlerSelectionAdapter_1.NodeHandlerSelectionAdapter {\n constructor(util, settings) {\n super('Field', util, settings);\n }\n handle(fieldNode, convertContext) {\n return this.fieldToOperation(convertContext, fieldNode, true);\n }\n}\nexports.NodeHandlerSelectionField = NodeHandlerSelectionField;\n//# sourceMappingURL=NodeHandlerSelectionField.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerSelectionFragmentSpread = void 0;\nconst NodeHandlerSelectionAdapter_1 = require(\"./NodeHandlerSelectionAdapter\");\n/**\n * Converts GraphQL fragment spread to one or more quad patterns with a given type within an optional.\n */\nclass NodeHandlerSelectionFragmentSpread extends NodeHandlerSelectionAdapter_1.NodeHandlerSelectionAdapter {\n constructor(util, settings) {\n super('FragmentSpread', util, settings);\n }\n handle(fragmentSpreadNode, convertContext) {\n const fragmentDefinitionNode = convertContext\n .fragmentDefinitions[fragmentSpreadNode.name.value];\n if (!fragmentDefinitionNode) {\n throw new Error('Undefined fragment definition: ' + fragmentSpreadNode.name.value);\n }\n // Wrap in an OPTIONAL, as this pattern should only apply if the type applies\n const fieldNode = {\n alias: undefined,\n arguments: undefined,\n directives: fragmentDefinitionNode.directives,\n kind: 'Field',\n name: fragmentSpreadNode.name,\n selectionSet: fragmentDefinitionNode.selectionSet,\n };\n const auxiliaryPatterns = [\n this.util.newTypePattern(convertContext.subject, fragmentDefinitionNode.typeCondition, convertContext),\n ];\n return this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]), this.fieldToOperation(convertContext, fieldNode, false, auxiliaryPatterns));\n }\n}\nexports.NodeHandlerSelectionFragmentSpread = NodeHandlerSelectionFragmentSpread;\n//# sourceMappingURL=NodeHandlerSelectionFragmentSpread.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerSelectionInlineFragment = void 0;\nconst NodeHandlerSelectionAdapter_1 = require(\"./NodeHandlerSelectionAdapter\");\n/**\n * Converts GraphQL inline fragment to one or more quad patterns with a given type within an optional.\n */\nclass NodeHandlerSelectionInlineFragment extends NodeHandlerSelectionAdapter_1.NodeHandlerSelectionAdapter {\n constructor(util, settings) {\n super('InlineFragment', util, settings);\n }\n handle(inlineFragmentNode, convertContext) {\n // Wrap in an OPTIONAL, as this pattern should only apply if the type applies\n const fieldNode = {\n alias: undefined,\n arguments: undefined,\n directives: inlineFragmentNode.directives,\n kind: 'Field',\n name: { kind: 'Name', value: convertContext.subject.value },\n selectionSet: inlineFragmentNode.selectionSet,\n };\n const auxiliaryPatterns = inlineFragmentNode.typeCondition\n ? [this.util.newTypePattern(convertContext.subject, inlineFragmentNode.typeCondition, convertContext)] : [];\n return this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]), this.fieldToOperation(convertContext, fieldNode, false, auxiliaryPatterns));\n }\n}\nexports.NodeHandlerSelectionInlineFragment = NodeHandlerSelectionInlineFragment;\n//# sourceMappingURL=NodeHandlerSelectionInlineFragment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerAdapter = void 0;\n/**\n * An abstract handler for GraphQL directives.\n */\nclass DirectiveNodeHandlerAdapter {\n constructor(targetKind, util, settings) {\n this.targetKind = targetKind;\n this.util = util;\n this.settings = settings;\n }\n /**\n * Get the value of the 'if' argument in a directive.\n * @param {DirectiveNode} directive A directive.\n * @param {IConvertContext} convertContext A convert context.\n * @return {Term} The term.\n */\n getDirectiveConditionalValue(directive, convertContext) {\n const arg = this.util.getArgument(directive.arguments, 'if');\n if (!arg) {\n throw new Error(`The directive ${directive.name.value} is missing an if-argument.`);\n }\n const subValue = this.util.handleNodeValue(arg.value, arg.name.value, convertContext);\n if (subValue.terms.length !== 1) {\n throw new Error(`Can not apply the directive ${directive.name.value} with a list.`);\n }\n return subValue.terms[0];\n }\n /**\n * If a `scope: all` directive param is present.\n * @param {DirectiveNode} directive A directive.\n * @return {boolean} If `scope: all` is present.\n */\n isDirectiveScopeAll(directive) {\n const scopeArg = this.util.getArgument(directive.arguments, 'scope');\n return scopeArg && scopeArg.value.kind === 'EnumValue' && scopeArg.value.value === 'all';\n }\n}\nexports.DirectiveNodeHandlerAdapter = DirectiveNodeHandlerAdapter;\n//# sourceMappingURL=DirectiveNodeHandlerAdapter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerInclude = void 0;\nconst DirectiveNodeHandlerAdapter_1 = require(\"./DirectiveNodeHandlerAdapter\");\n/**\n * A handler for include directives.\n */\nclass DirectiveNodeHandlerInclude extends DirectiveNodeHandlerAdapter_1.DirectiveNodeHandlerAdapter {\n constructor(util, settings) {\n super('include', util, settings);\n }\n handle(directiveContext, convertContext) {\n const val = this.getDirectiveConditionalValue(directiveContext.directive, convertContext);\n if (val.termType === 'Literal' && val.value === 'false') {\n return { ignore: true };\n }\n return {};\n }\n}\nexports.DirectiveNodeHandlerInclude = DirectiveNodeHandlerInclude;\n//# sourceMappingURL=DirectiveNodeHandlerInclude.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerOptional = void 0;\nconst DirectiveNodeHandlerAdapter_1 = require(\"./DirectiveNodeHandlerAdapter\");\n/**\n * A handler for optional directives.\n */\nclass DirectiveNodeHandlerOptional extends DirectiveNodeHandlerAdapter_1.DirectiveNodeHandlerAdapter {\n constructor(util, settings) {\n super('optional', util, settings);\n }\n handle(directiveContext, convertContext) {\n return {\n operationOverrider: (operation) => this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]), operation),\n };\n }\n}\nexports.DirectiveNodeHandlerOptional = DirectiveNodeHandlerOptional;\n//# sourceMappingURL=DirectiveNodeHandlerOptional.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerPlural = void 0;\nconst IConvertContext_1 = require(\"../../IConvertContext\");\nconst DirectiveNodeHandlerAdapter_1 = require(\"./DirectiveNodeHandlerAdapter\");\n/**\n * A handler for plural directives.\n */\nclass DirectiveNodeHandlerPlural extends DirectiveNodeHandlerAdapter_1.DirectiveNodeHandlerAdapter {\n constructor(util, settings) {\n super('plural', util, settings);\n }\n handle(directiveContext, convertContext) {\n if (this.isDirectiveScopeAll(directiveContext.directive)) {\n convertContext.singularizeState = IConvertContext_1.SingularizeState.PLURAL;\n }\n // Delete the existing entry, as this may have already been set before if we were in a single scope.\n delete convertContext.singularizeVariables[this.util.nameToVariable(directiveContext.fieldLabel, convertContext).value];\n return {};\n }\n}\nexports.DirectiveNodeHandlerPlural = DirectiveNodeHandlerPlural;\n//# sourceMappingURL=DirectiveNodeHandlerPlural.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerSingle = void 0;\nconst IConvertContext_1 = require(\"../../IConvertContext\");\nconst DirectiveNodeHandlerAdapter_1 = require(\"./DirectiveNodeHandlerAdapter\");\n/**\n * A handler for single directives.\n */\nclass DirectiveNodeHandlerSingle extends DirectiveNodeHandlerAdapter_1.DirectiveNodeHandlerAdapter {\n constructor(util, settings) {\n super('single', util, settings);\n }\n handle(directiveContext, convertContext) {\n if (this.isDirectiveScopeAll(directiveContext.directive)) {\n convertContext.singularizeState = IConvertContext_1.SingularizeState.SINGLE;\n }\n convertContext.singularizeVariables[this.util.nameToVariable(directiveContext.fieldLabel, convertContext).value] = true;\n return {};\n }\n}\nexports.DirectiveNodeHandlerSingle = DirectiveNodeHandlerSingle;\n//# sourceMappingURL=DirectiveNodeHandlerSingle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerSkip = void 0;\nconst DirectiveNodeHandlerAdapter_1 = require(\"./DirectiveNodeHandlerAdapter\");\n/**\n * A handler for skip directives.\n */\nclass DirectiveNodeHandlerSkip extends DirectiveNodeHandlerAdapter_1.DirectiveNodeHandlerAdapter {\n constructor(util, settings) {\n super('skip', util, settings);\n }\n handle(directiveContext, convertContext) {\n const val = this.getDirectiveConditionalValue(directiveContext.directive, convertContext);\n if (val.termType === 'Literal' && val.value === 'true') {\n return { ignore: true };\n }\n return {};\n }\n}\nexports.DirectiveNodeHandlerSkip = DirectiveNodeHandlerSkip;\n//# sourceMappingURL=DirectiveNodeHandlerSkip.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./DirectiveNodeHandlerAdapter\"), exports);\n__exportStar(require(\"./DirectiveNodeHandlerInclude\"), exports);\n__exportStar(require(\"./DirectiveNodeHandlerOptional\"), exports);\n__exportStar(require(\"./DirectiveNodeHandlerPlural\"), exports);\n__exportStar(require(\"./DirectiveNodeHandlerSingle\"), exports);\n__exportStar(require(\"./DirectiveNodeHandlerSkip\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./directivenode\"), exports);\n__exportStar(require(\"./valuenode\"), exports);\n__exportStar(require(\"./NodeHandlerAdapter\"), exports);\n__exportStar(require(\"./NodeHandlerDefinitionAdapter\"), exports);\n__exportStar(require(\"./NodeHandlerDefinitionFragment\"), exports);\n__exportStar(require(\"./NodeHandlerDefinitionOperation\"), exports);\n__exportStar(require(\"./NodeHandlerDocument\"), exports);\n__exportStar(require(\"./NodeHandlerSelectionAdapter\"), exports);\n__exportStar(require(\"./NodeHandlerSelectionField\"), exports);\n__exportStar(require(\"./NodeHandlerSelectionFragmentSpread\"), exports);\n__exportStar(require(\"./NodeHandlerSelectionInlineFragment\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerAdapter = void 0;\n/**\n * A handler for converting GraphQL value nodes to terms and patterns.\n */\nclass NodeValueHandlerAdapter {\n constructor(targetKind, util, settings) {\n this.targetKind = targetKind;\n this.util = util;\n this.settings = settings;\n }\n}\nexports.NodeValueHandlerAdapter = NodeValueHandlerAdapter;\n//# sourceMappingURL=NodeValueHandlerAdapter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerBoolean = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL booleans to RDF boolean terms.\n */\nclass NodeValueHandlerBoolean extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('BooleanValue', util, settings);\n this.datatype = this.util.dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#boolean');\n }\n handle(valueNode, fieldName, convertContext) {\n return { terms: [this.util.dataFactory.literal(valueNode.value ? 'true' : 'false', this.datatype)] };\n }\n}\nexports.NodeValueHandlerBoolean = NodeValueHandlerBoolean;\n//# sourceMappingURL=NodeValueHandlerBoolean.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerEnum = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL enums to RDF named nodes.\n */\nclass NodeValueHandlerEnum extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('EnumValue', util, settings);\n }\n handle(valueNode, fieldName, convertContext) {\n return { terms: [this.util.valueToNamedNode(valueNode.value, convertContext.context)] };\n }\n}\nexports.NodeValueHandlerEnum = NodeValueHandlerEnum;\n//# sourceMappingURL=NodeValueHandlerEnum.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerFloat = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL floats to RDF float terms.\n */\nclass NodeValueHandlerFloat extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('FloatValue', util, settings);\n this.datatype = this.util.dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#float');\n }\n handle(valueNode, fieldName, convertContext) {\n return { terms: [this.util.dataFactory.literal(valueNode.value, this.datatype)] };\n }\n}\nexports.NodeValueHandlerFloat = NodeValueHandlerFloat;\n//# sourceMappingURL=NodeValueHandlerFloat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerInt = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL ints to RDF integer terms.\n */\nclass NodeValueHandlerInt extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('IntValue', util, settings);\n this.datatype = this.util.dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#integer');\n }\n handle(valueNode, fieldName, convertContext) {\n return { terms: [this.util.dataFactory.literal(valueNode.value, this.datatype)] };\n }\n}\nexports.NodeValueHandlerInt = NodeValueHandlerInt;\n//# sourceMappingURL=NodeValueHandlerInt.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerList = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL lists to RDF lists if settings.arraysToRdfLists is true, otherwise it converts to multiple values.\n */\nclass NodeValueHandlerList extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('ListValue', util, settings);\n this.nodeFirst = this.util.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#first');\n this.nodeRest = this.util.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#rest');\n this.nodeNil = this.util.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#nil');\n }\n handle(valueNode, fieldName, convertContext) {\n const listTerms = [];\n let auxiliaryPatterns = [];\n // Create terms for list values\n for (const v of valueNode.values) {\n const subValue = this.util.handleNodeValue(v, fieldName, convertContext);\n for (const term of subValue.terms) {\n listTerms.push(term);\n }\n if (subValue.auxiliaryPatterns) {\n auxiliaryPatterns = auxiliaryPatterns.concat(subValue.auxiliaryPatterns);\n }\n }\n if (this.settings.arraysToRdfLists) {\n // Convert array to RDF list\n // Create chained list structure\n const firstListNode = this.util.dataFactory.blankNode();\n let listNode = firstListNode;\n let remaining = listTerms.length;\n for (const term of listTerms) {\n auxiliaryPatterns.push(this.util.operationFactory.createPattern(listNode, this.nodeFirst, term, convertContext.graph));\n const nextListNode = --remaining === 0 ? this.nodeNil : this.util.dataFactory.blankNode();\n auxiliaryPatterns.push(this.util.operationFactory.createPattern(listNode, this.nodeRest, nextListNode, convertContext.graph));\n listNode = nextListNode;\n }\n return { terms: [firstListNode], auxiliaryPatterns };\n }\n else {\n // Convert array to multiple terms that will be linked via the same predicate.\n return { terms: listTerms, auxiliaryPatterns };\n }\n }\n}\nexports.NodeValueHandlerList = NodeValueHandlerList;\n//# sourceMappingURL=NodeValueHandlerList.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerNull = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL nulls to RDF nil terms.\n */\nclass NodeValueHandlerNull extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('NullValue', util, settings);\n this.nil = this.util.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#nil');\n }\n handle(valueNode, fieldName, convertContext) {\n return { terms: [this.nil] };\n }\n}\nexports.NodeValueHandlerNull = NodeValueHandlerNull;\n//# sourceMappingURL=NodeValueHandlerNull.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerObject = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL objects to triple patterns by converting keys to predicates and values to objects.\n */\nclass NodeValueHandlerObject extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('ObjectValue', util, settings);\n }\n handle(valueNode, fieldName, convertContext) {\n // Convert object keys to predicates and values to objects, and link them both with a new blank node.\n const subject = this.util.dataFactory.blankNode();\n let auxiliaryObjectPatterns = [];\n for (const field of valueNode.fields) {\n const subValue = this.util.handleNodeValue(field.value, fieldName, convertContext);\n for (const term of subValue.terms) {\n auxiliaryObjectPatterns.push(this.util.createQuadPattern(subject, field.name, term, convertContext.graph, convertContext.context));\n }\n if (subValue.auxiliaryPatterns) {\n auxiliaryObjectPatterns = auxiliaryObjectPatterns.concat(subValue.auxiliaryPatterns);\n }\n }\n return { terms: [subject], auxiliaryPatterns: auxiliaryObjectPatterns };\n }\n}\nexports.NodeValueHandlerObject = NodeValueHandlerObject;\n//# sourceMappingURL=NodeValueHandlerObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerString = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL strings to RDF string terms, which can have a custom language or datatype.\n */\nclass NodeValueHandlerString extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('StringValue', util, settings);\n }\n handle(valueNode, fieldName, convertContext) {\n const contextEntry = convertContext.context.getContextRaw()[fieldName];\n let language;\n let datatype;\n if (contextEntry && typeof contextEntry !== 'string') {\n if (contextEntry['@language']) {\n language = contextEntry['@language'];\n }\n else if (contextEntry['@type']) {\n datatype = this.util.dataFactory.namedNode(contextEntry['@type']);\n }\n }\n return { terms: [this.util.dataFactory.literal(valueNode.value, language || datatype)] };\n }\n}\nexports.NodeValueHandlerString = NodeValueHandlerString;\n//# sourceMappingURL=NodeValueHandlerString.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerVariable = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL variables to terms based on the contents of the variablesDict.\n */\nclass NodeValueHandlerVariable extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('Variable', util, settings);\n }\n handle(valueNode, fieldName, convertContext) {\n const id = valueNode.name.value;\n const value = convertContext.variablesDict[id];\n const meta = convertContext.variablesMetaDict[id];\n // Handle missing values\n if (!value) {\n if (!convertContext.ignoreUnknownVariables && (!meta || meta.mandatory)) {\n throw new Error(`Undefined variable: ${id}`);\n }\n else {\n const variable = this.util.dataFactory.variable(id);\n if (convertContext.terminalVariables.map((v) => v.value).indexOf(id) < 0) {\n convertContext.terminalVariables.push(variable);\n }\n return { terms: [variable] };\n }\n }\n // Don't allow variables that refer to other variables\n if (value.kind === 'Variable') {\n throw new Error(`Variable refers to another variable: ${id}`);\n }\n if (meta) {\n // Check the type\n if (meta.list) {\n // If we expect a list, check if we got a list.\n if (value.kind !== 'ListValue') {\n throw new Error(`Expected a list, but got ${value.kind} for ${id}`);\n }\n // Check the type in the list\n if (meta.type) {\n const listValue = value;\n for (const v of listValue.values) {\n if (v.kind !== meta.type) {\n throw new Error(`Expected ${meta.type}, but got ${v.kind} for ${id}`);\n }\n }\n }\n }\n else if (meta.type) {\n // This is allowed to be different (?)\n /*if (value.kind !== meta.type) {\n throw new Error(`Expected ${meta.type}, but got ${value.kind} for ${id}`);\n }*/\n }\n }\n return this.util.handleNodeValue(value, fieldName, convertContext);\n }\n}\nexports.NodeValueHandlerVariable = NodeValueHandlerVariable;\n//# sourceMappingURL=NodeValueHandlerVariable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./NodeValueHandlerAdapter\"), exports);\n__exportStar(require(\"./NodeValueHandlerBoolean\"), exports);\n__exportStar(require(\"./NodeValueHandlerEnum\"), exports);\n__exportStar(require(\"./NodeValueHandlerFloat\"), exports);\n__exportStar(require(\"./NodeValueHandlerInt\"), exports);\n__exportStar(require(\"./NodeValueHandlerList\"), exports);\n__exportStar(require(\"./NodeValueHandlerNull\"), exports);\n__exportStar(require(\"./NodeValueHandlerObject\"), exports);\n__exportStar(require(\"./NodeValueHandlerString\"), exports);\n__exportStar(require(\"./NodeValueHandlerVariable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.toSparqlJs = exports.toSparql = exports.Factory = exports.Algebra = exports.translate = void 0;\nconst sparqlAlgebra_1 = __importDefault(require(\"./lib/sparqlAlgebra\"));\nexports.translate = sparqlAlgebra_1.default;\nconst Algebra = __importStar(require(\"./lib/algebra\"));\nexports.Algebra = Algebra;\nconst factory_1 = __importDefault(require(\"./lib/factory\"));\nexports.Factory = factory_1.default;\nconst sparql_1 = require(\"./lib/sparql\");\nObject.defineProperty(exports, \"toSparql\", { enumerable: true, get: function () { return sparql_1.toSparql; } });\nObject.defineProperty(exports, \"toSparqlJs\", { enumerable: true, get: function () { return sparql_1.toSparqlJs; } });\nconst util_1 = __importDefault(require(\"./lib/util\"));\nexports.Util = util_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expressionTypes = exports.types = void 0;\nvar types;\n(function (types) {\n types[\"ALT\"] = \"alt\";\n types[\"ASK\"] = \"ask\";\n types[\"BGP\"] = \"bgp\";\n types[\"CONSTRUCT\"] = \"construct\";\n types[\"DESCRIBE\"] = \"describe\";\n types[\"DISTINCT\"] = \"distinct\";\n types[\"EXPRESSION\"] = \"expression\";\n types[\"EXTEND\"] = \"extend\";\n types[\"FILTER\"] = \"filter\";\n types[\"FROM\"] = \"from\";\n types[\"GRAPH\"] = \"graph\";\n types[\"GROUP\"] = \"group\";\n types[\"INV\"] = \"inv\";\n types[\"JOIN\"] = \"join\";\n types[\"LEFT_JOIN\"] = \"leftjoin\";\n types[\"LINK\"] = \"link\";\n types[\"MINUS\"] = \"minus\";\n types[\"NOP\"] = \"nop\";\n types[\"NPS\"] = \"nps\";\n types[\"ONE_OR_MORE_PATH\"] = \"OneOrMorePath\";\n types[\"ORDER_BY\"] = \"orderby\";\n types[\"PATH\"] = \"path\";\n types[\"PATTERN\"] = \"pattern\";\n types[\"PROJECT\"] = \"project\";\n types[\"REDUCED\"] = \"reduced\";\n types[\"SEQ\"] = \"seq\";\n types[\"SERVICE\"] = \"service\";\n types[\"SLICE\"] = \"slice\";\n types[\"UNION\"] = \"union\";\n types[\"VALUES\"] = \"values\";\n types[\"ZERO_OR_MORE_PATH\"] = \"ZeroOrMorePath\";\n types[\"ZERO_OR_ONE_PATH\"] = \"ZeroOrOnePath\";\n types[\"COMPOSITE_UPDATE\"] = \"compositeupdate\";\n types[\"DELETE_INSERT\"] = \"deleteinsert\";\n types[\"LOAD\"] = \"load\";\n types[\"CLEAR\"] = \"clear\";\n types[\"CREATE\"] = \"create\";\n types[\"DROP\"] = \"drop\";\n types[\"ADD\"] = \"add\";\n types[\"MOVE\"] = \"move\";\n types[\"COPY\"] = \"copy\";\n})(types = exports.types || (exports.types = {}));\nvar expressionTypes;\n(function (expressionTypes) {\n expressionTypes[\"AGGREGATE\"] = \"aggregate\";\n expressionTypes[\"EXISTENCE\"] = \"existence\";\n expressionTypes[\"NAMED\"] = \"named\";\n expressionTypes[\"OPERATOR\"] = \"operator\";\n expressionTypes[\"TERM\"] = \"term\";\n expressionTypes[\"WILDCARD\"] = \"wildcard\";\n})(expressionTypes = exports.expressionTypes || (exports.expressionTypes = {}));\n//# sourceMappingURL=algebra.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst A = __importStar(require(\"./algebra\"));\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nclass Factory {\n constructor(dataFactory) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.stringType = this.createTerm('http://www.w3.org/2001/XMLSchema#string');\n }\n createAlt(input, flatten = true) { return this.flattenMulti({ type: A.types.ALT, input }, flatten); }\n createAsk(input) { return { type: A.types.ASK, input }; }\n createBoundAggregate(variable, aggregate, expression, distinct, separator) {\n const result = this.createAggregateExpression(aggregate, expression, distinct, separator);\n result.variable = variable;\n return result;\n }\n createBgp(patterns) { return { type: A.types.BGP, patterns }; }\n createConstruct(input, template) { return { type: A.types.CONSTRUCT, input, template }; }\n createDescribe(input, terms) { return { type: A.types.DESCRIBE, input, terms }; }\n createDistinct(input) { return { type: A.types.DISTINCT, input }; }\n createExtend(input, variable, expression) { return { type: A.types.EXTEND, input, variable, expression }; }\n createFrom(input, def, named) { return { type: A.types.FROM, input, default: def, named }; }\n createFilter(input, expression) { return { type: A.types.FILTER, input, expression }; }\n createGraph(input, name) { return { type: A.types.GRAPH, input, name }; }\n createGroup(input, variables, aggregates) { return { type: A.types.GROUP, input, variables, aggregates }; }\n createInv(path) { return { type: A.types.INV, path }; }\n createJoin(input, flatten = true) { return this.flattenMulti({ type: A.types.JOIN, input }, flatten); }\n createLeftJoin(left, right, expression) {\n if (expression)\n return { type: A.types.LEFT_JOIN, input: [left, right], expression };\n return { type: A.types.LEFT_JOIN, input: [left, right] };\n }\n createLink(iri) { return { type: A.types.LINK, iri }; }\n createMinus(left, right) { return { type: A.types.MINUS, input: [left, right] }; }\n createNop() { return { type: A.types.NOP }; }\n createNps(iris) { return { type: A.types.NPS, iris }; }\n createOneOrMorePath(path) { return { type: A.types.ONE_OR_MORE_PATH, path }; }\n createOrderBy(input, expressions) { return { type: A.types.ORDER_BY, input, expressions }; }\n createPath(subject, predicate, object, graph) {\n if (graph)\n return { type: A.types.PATH, subject, predicate, object, graph };\n return { type: A.types.PATH, subject, predicate, object, graph: this.dataFactory.defaultGraph() };\n }\n createPattern(subject, predicate, object, graph) {\n const pattern = this.dataFactory.quad(subject, predicate, object, graph);\n pattern.type = A.types.PATTERN;\n return pattern;\n }\n createProject(input, variables) { return { type: A.types.PROJECT, input, variables }; }\n createReduced(input) { return { type: A.types.REDUCED, input }; }\n createSeq(input, flatten = true) { return this.flattenMulti({ type: A.types.SEQ, input }, flatten); }\n createService(input, name, silent) { return { type: A.types.SERVICE, input, name, silent: Boolean(silent) }; }\n createSlice(input, start, length) {\n start = start || 0;\n if (length !== undefined)\n return { type: A.types.SLICE, input, start, length };\n return { type: A.types.SLICE, input, start };\n }\n createUnion(input, flatten = true) { return this.flattenMulti({ type: A.types.UNION, input }, flatten); }\n createValues(variables, bindings) { return { type: A.types.VALUES, variables, bindings }; }\n createZeroOrMorePath(path) { return { type: A.types.ZERO_OR_MORE_PATH, path }; }\n createZeroOrOnePath(path) { return { type: A.types.ZERO_OR_ONE_PATH, path }; }\n createAggregateExpression(aggregator, expression, distinct, separator) {\n if (separator)\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, separator, distinct };\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, distinct };\n }\n createExistenceExpression(not, input) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.EXISTENCE, not, input }; }\n createNamedExpression(name, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.NAMED, name, args }; }\n createOperatorExpression(operator, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.OPERATOR, operator, args }; }\n createTermExpression(term) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.TERM, term }; }\n createWildcardExpression() { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.WILDCARD, wildcard: new sparqljs_1.Wildcard() }; }\n createTerm(str) {\n return (0, rdf_string_1.stringToTerm)(str, this.dataFactory);\n }\n // Update functions\n createCompositeUpdate(updates) { return { type: A.types.COMPOSITE_UPDATE, updates }; }\n createDeleteInsert(deleteQuads, insertQuads, where) {\n const result = { type: A.types.DELETE_INSERT };\n if (deleteQuads)\n result.delete = deleteQuads;\n if (insertQuads)\n result.insert = insertQuads;\n if (where)\n result.where = where;\n return result;\n }\n createLoad(source, destination, silent) {\n const result = { type: A.types.LOAD, source };\n if (destination)\n result.destination = destination;\n return this.addSilent(result, Boolean(silent));\n }\n createClear(source, silent) {\n return this.addSilent({ type: A.types.CLEAR, source }, Boolean(silent));\n }\n createCreate(source, silent) {\n return this.addSilent({ type: A.types.CREATE, source }, Boolean(silent));\n }\n createDrop(source, silent) {\n return this.addSilent({ type: A.types.DROP, source }, Boolean(silent));\n }\n createAdd(source, destination, silent) {\n return this.addSilent({ type: A.types.ADD, source, destination }, Boolean(silent));\n }\n createMove(source, destination, silent) {\n return this.addSilent({ type: A.types.MOVE, source, destination }, Boolean(silent));\n }\n createCopy(source, destination, silent) {\n return this.addSilent({ type: A.types.COPY, source, destination }, Boolean(silent));\n }\n addSilent(input, silent) {\n if (silent)\n input.silent = silent;\n return input;\n }\n flattenMulti(input, flatten) {\n if (!flatten) {\n return input;\n }\n const type = input.type;\n const children = input.input;\n let newChildren = [];\n for (const child of children) {\n if (child.type === type) {\n newChildren.push(...child.input);\n }\n else {\n newChildren.push(child);\n }\n }\n input.input = newChildren;\n return input;\n }\n}\nexports.default = Factory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toSparqlJs = exports.toSparql = void 0;\nconst rdf_isomorphic_1 = require(\"rdf-isomorphic\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst types = Algebra.types;\nconst eTypes = Algebra.expressionTypes;\nlet context;\nconst factory = new factory_1.default();\nfunction toSparql(op, options = {}) {\n let generator = new sparqljs_1.Generator(options);\n return generator.stringify(toSparqlJs(op));\n}\nexports.toSparql = toSparql;\nfunction toSparqlJs(op) {\n resetContext();\n op = removeQuads(op);\n let result = translateOperation(op);\n if (result.type === 'group')\n return result.patterns[0];\n return result;\n}\nexports.toSparqlJs = toSparqlJs;\nfunction resetContext() {\n context = { project: false, extend: [], group: [], aggregates: [], order: [] };\n}\nfunction translateOperation(op) {\n // this allows us to differentiate between BIND and SELECT when translating EXTEND\n // GRAPH was added because the way graphs get added back here is not the same as how they get added in the future\n // ^ seems fine but might have to be changed if problems get detected in the future\n if (op.type !== types.EXTEND && op.type !== types.ORDER_BY && op.type !== types.GRAPH)\n context.project = false;\n switch (op.type) {\n case types.EXPRESSION: return translateExpression(op);\n case types.ASK: return translateProject(op, types.ASK);\n case types.BGP: return translateBgp(op);\n case types.CONSTRUCT: return translateConstruct(op);\n case types.DESCRIBE: return translateProject(op, types.DESCRIBE);\n case types.DISTINCT: return translateDistinct(op);\n case types.EXTEND: return translateExtend(op);\n case types.FROM: return translateFrom(op);\n case types.FILTER: return translateFilter(op);\n case types.GRAPH: return translateGraph(op);\n case types.GROUP: return translateGroup(op);\n case types.JOIN: return translateJoin(op);\n case types.LEFT_JOIN: return translateLeftJoin(op);\n case types.MINUS: return translateMinus(op);\n case types.NOP: return {};\n case types.ORDER_BY: return translateOrderBy(op);\n case types.PATH: return translatePath(op);\n case types.PATTERN: return translatePattern(op);\n case types.PROJECT: return translateProject(op, types.PROJECT);\n case types.REDUCED: return translateReduced(op);\n case types.SERVICE: return translateService(op);\n case types.SLICE: return translateSlice(op);\n case types.UNION: return translateUnion(op);\n case types.VALUES: return translateValues(op);\n // UPDATE operations\n case types.COMPOSITE_UPDATE: return translateCompositeUpdate(op);\n case types.DELETE_INSERT: return translateDeleteInsert(op);\n case types.LOAD: return translateLoad(op);\n case types.CLEAR: return translateClear(op);\n case types.CREATE: return translateCreate(op);\n case types.DROP: return translateDrop(op);\n case types.ADD: return translateAdd(op);\n case types.MOVE: return translateMove(op);\n case types.COPY: return translateCopy(op);\n }\n throw new Error(`Unknown Operation type ${op.type}`);\n}\nfunction translateExpression(expr) {\n switch (expr.expressionType) {\n case eTypes.AGGREGATE: return translateAggregateExpression(expr);\n case eTypes.EXISTENCE: return translateExistenceExpression(expr);\n case eTypes.NAMED: return translateNamedExpression(expr);\n case eTypes.OPERATOR: return translateOperatorExpression(expr);\n case eTypes.TERM: return translateTermExpression(expr);\n case eTypes.WILDCARD: return translateWildcardExpression(expr);\n }\n throw new Error(`Unknown Expression Operation type ${expr.expressionType}`);\n}\nfunction translatePathComponent(path) {\n switch (path.type) {\n case types.ALT: return translateAlt(path);\n case types.INV: return translateInv(path);\n case types.LINK: return translateLink(path);\n case types.NPS: return translateNps(path);\n case types.ONE_OR_MORE_PATH: return translateOneOrMorePath(path);\n case types.SEQ: return translateSeq(path);\n case types.ZERO_OR_MORE_PATH: return translateZeroOrMorePath(path);\n case types.ZERO_OR_ONE_PATH: return translateZeroOrOnePath(path);\n }\n throw new Error(`Unknown Path type ${path.type}`);\n}\nfunction translateTerm(term) {\n return (0, rdf_string_1.termToString)(term);\n}\n// ------------------------- EXPRESSIONS -------------------------\nfunction translateAggregateExpression(expr) {\n const result = {\n expression: translateExpression(expr.expression),\n type: 'aggregate',\n aggregation: expr.aggregator,\n distinct: expr.distinct\n };\n if (expr.separator)\n result.separator = expr.separator;\n return result;\n}\nfunction translateExistenceExpression(expr) {\n return {\n type: 'operation',\n operator: expr.not ? 'notexists' : 'exists',\n args: util_1.default.flatten([\n translateOperation(expr.input)\n ])\n };\n}\nfunction translateNamedExpression(expr) {\n return {\n type: 'functionCall',\n // Wrong typings\n function: expr.name,\n args: expr.args.map(translateExpression)\n };\n}\nfunction translateOperatorExpression(expr) {\n if (expr.operator === 'desc') {\n const result = { expression: translateExpression(expr.args[0]) };\n result.descending = true;\n return result;\n }\n const result = {\n type: 'operation',\n operator: expr.operator,\n args: expr.args.map(translateExpression)\n };\n if (result.operator === 'in' || result.operator === 'notin')\n result.args = [result.args[0]].concat([result.args.slice(1)]);\n return result;\n}\nfunction translateTermExpression(expr) {\n return expr.term;\n}\nfunction translateWildcardExpression(expr) {\n return expr.wildcard;\n}\nfunction arrayToPattern(input) {\n if (!Array.isArray(input))\n return input;\n if (input.length === 1)\n return input[0];\n return {\n type: 'group',\n patterns: input,\n };\n}\n// ------------------------- OPERATIONS -------------------------\n// these get translated in the project function\nfunction translateBoundAggregate(op) {\n return op;\n}\nfunction translateBgp(op) {\n let patterns = op.patterns.map(translatePattern);\n if (patterns.length === 0)\n return null;\n return {\n type: 'bgp',\n triples: patterns\n };\n}\nfunction translateConstruct(op) {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: op.template.map(translatePattern),\n where: util_1.default.flatten([\n translateOperation(op.input)\n ])\n };\n}\nfunction translateDistinct(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].distinct = true;\n return result;\n}\nfunction translateExtend(op) {\n if (context.project) {\n context.extend.push(op);\n return translateOperation(op.input);\n }\n return util_1.default.flatten([\n translateOperation(op.input),\n {\n type: 'bind',\n variable: op.variable,\n expression: translateExpression(op.expression)\n }\n ]);\n}\nfunction translateFrom(op) {\n const result = translateOperation(op.input);\n // Can't type as CONSTRUCT queries do not have `from` field in their type\n let obj = result;\n // project is nested in group object\n if (result.type === 'group') {\n obj = result.patterns[0];\n }\n obj.from = {\n default: op.default,\n named: op.named\n };\n return result;\n}\nfunction translateFilter(op) {\n return {\n type: 'group',\n patterns: util_1.default.flatten([\n translateOperation(op.input),\n { type: 'filter', expression: translateExpression(op.expression) }\n ])\n };\n}\nfunction translateGraph(op) {\n return {\n type: 'graph',\n patterns: util_1.default.flatten([translateOperation(op.input)]),\n name: op.name\n };\n}\nfunction translateGroup(op) {\n const input = translateOperation(op.input);\n const aggs = op.aggregates.map(translateBoundAggregate);\n context.aggregates.push(...aggs);\n // TODO: apply possible extends\n context.group.push(...op.variables);\n return input;\n}\nfunction translateJoin(op) {\n const arr = util_1.default.flatten(op.input.map(translateOperation));\n // Merge bgps\n // This is possible if one side was a path and the other a bgp for example\n return arr.reduce((result, val) => {\n if (val.type !== 'bgp' || result.length == 0 || result[result.length - 1].type !== 'bgp') {\n result.push(val);\n }\n else {\n result[result.length - 1].triples.push(...val.triples);\n }\n return result;\n }, []);\n}\nfunction translateLeftJoin(op) {\n const leftjoin = {\n type: 'optional',\n patterns: [\n translateOperation(op.input[1])\n ]\n };\n if (op.expression) {\n leftjoin.patterns.push({\n type: 'filter',\n expression: translateExpression(op.expression)\n });\n }\n leftjoin.patterns = util_1.default.flatten(leftjoin.patterns);\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n leftjoin\n ]);\n}\nfunction translateMinus(op) {\n let patterns = translateOperation(op.input[1]);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n {\n type: 'minus',\n patterns: patterns\n }\n ]);\n}\nfunction translateOrderBy(op) {\n context.order.push(...op.expressions);\n return translateOperation(op.input);\n}\nfunction translatePath(op) {\n return {\n type: 'bgp',\n triples: [{\n subject: op.subject,\n predicate: translatePathComponent(op.predicate),\n object: op.object\n }]\n };\n}\nfunction translatePattern(op) {\n return {\n subject: op.subject,\n predicate: op.predicate,\n object: op.object\n };\n}\nfunction replaceAggregatorVariables(s, map) {\n let st = util_1.default.isSimpleTerm(s) ? translateTerm(s) : s;\n if (typeof st === 'string') {\n if (map[st])\n return map[st];\n }\n else if (Array.isArray(s)) {\n s = s.map(e => replaceAggregatorVariables(e, map));\n }\n else {\n for (let key of Object.keys(s))\n s[key] = replaceAggregatorVariables(s[key], map);\n }\n return s;\n}\nfunction translateProject(op, type) {\n const result = {\n type: 'query',\n prefixes: {}\n };\n // Makes typing easier in some places\n const select = result;\n let variables;\n if (type === types.PROJECT) {\n result.queryType = 'SELECT';\n variables = op.variables;\n }\n else if (type === types.ASK) {\n result.queryType = 'ASK';\n }\n else if (type === types.DESCRIBE) {\n result.queryType = 'DESCRIBE';\n variables = op.terms;\n }\n // backup values in case of nested queries\n // everything in extend, group, etc. is irrelevant for this project call\n const extend = context.extend;\n const group = context.group;\n const aggregates = context.aggregates;\n const order = context.order;\n resetContext();\n context.project = true;\n let input = util_1.default.flatten([translateOperation(op.input)]);\n if (input.length === 1 && input[0].type === 'group')\n input = input[0].patterns;\n result.where = input;\n let aggregators = {};\n // these can not reference each other\n for (let agg of context.aggregates)\n aggregators[translateTerm(agg.variable)] = translateExpression(agg);\n // do these in reverse order since variables in one extend might apply to an expression in an other extend\n let extensions = {};\n for (let i = context.extend.length - 1; i >= 0; --i) {\n let e = context.extend[i];\n extensions[translateTerm(e.variable)] = replaceAggregatorVariables(translateExpression(e.expression), aggregators);\n }\n if (context.group.length > 0)\n select.group = context.group.map(variable => {\n let v = translateTerm(variable);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // make sure there is only 1 'AS' statement\n return {\n variable,\n expression: result\n };\n }\n return { expression: variable };\n });\n // descending expressions will already be in the correct format due to the structure of those\n if (context.order.length > 0)\n select.order = context.order.map(translateOperation).map(o => o.descending ? o : ({ expression: o }));\n // this needs to happen after the group because it might depend on variables generated there\n if (variables) {\n select.variables = variables.map((term) => {\n let v = translateTerm(term);\n if (extensions[v])\n return {\n variable: term,\n expression: extensions[v]\n };\n return term;\n });\n // if the * didn't match any variables this would be empty\n if (select.variables.length === 0)\n select.variables = [new sparqljs_1.Wildcard()];\n }\n // convert filter to 'having' if it contains an aggregator variable\n // could always convert, but is nicer to use filter when possible\n if (result.where.length > 0 && result.where[result.where.length - 1].type === 'filter') {\n const filter = result.where[result.where.length - 1];\n if (objectContainsValues(filter, Object.keys(aggregators))) {\n select.having = util_1.default.flatten([replaceAggregatorVariables(filter.expression, aggregators)]);\n result.where.splice(-1);\n }\n }\n context.extend = extend;\n context.group = group;\n context.aggregates = aggregates;\n context.order = order;\n // subqueries need to be in a group, this will be removed again later for the root query\n return { type: 'group', patterns: [select] };\n}\nfunction objectContainsValues(o, vals) {\n if (util_1.default.isSimpleTerm(o))\n return vals.indexOf(translateTerm(o)) >= 0;\n if (Array.isArray(o))\n return o.some(e => objectContainsValues(e, vals));\n if (o === Object(o))\n return Object.keys(o).some(key => objectContainsValues(o[key], vals));\n return vals.indexOf(o) >= 0;\n}\nfunction translateReduced(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].reduced = true;\n return result;\n}\nfunction translateService(op) {\n let patterns = translateOperation(op.input);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return {\n type: 'service',\n // Typings are wrong, name can also be a variable\n name: op.name,\n silent: op.silent,\n patterns\n };\n}\nfunction translateSlice(op) {\n let result = translateOperation(op.input);\n // results can be nested in a group object\n let obj = result;\n if (result.type && result.type === 'group')\n obj = result.patterns[0];\n if (op.start !== 0)\n obj.offset = op.start;\n if (op.length !== undefined)\n obj.limit = op.length;\n return result;\n}\nfunction translateUnion(op) {\n return {\n type: 'union',\n patterns: op.input.map(translateOperation).map(arrayToPattern),\n };\n}\nfunction translateValues(op) {\n // TODO: check if handled correctly when outside of select block\n return {\n type: 'values',\n values: op.bindings.map(binding => {\n let result = {};\n for (let v of op.variables) {\n let s = `?${v.value}`;\n if (binding[s])\n result[s] = binding[s];\n else\n result[s] = undefined;\n }\n return result;\n })\n };\n}\n// PATH COMPONENTS\nfunction translateAlt(path) {\n const mapped = path.input.map(translatePathComponent);\n if (mapped.every(entry => 'pathType' in entry && entry.pathType === '!')) {\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: util_1.default.flatten(mapped.map(entry => entry.items))\n }]\n };\n }\n return {\n type: 'path',\n pathType: '|',\n items: mapped\n };\n}\nfunction translateInv(path) {\n if (path.path.type === types.NPS) {\n const inv = path.path.iris.map((iri) => {\n return {\n type: 'path',\n pathType: '^',\n items: [iri]\n };\n });\n if (inv.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: inv\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: inv\n }]\n };\n }\n return {\n type: 'path',\n pathType: '^',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateLink(path) {\n return path.iri;\n}\nfunction translateNps(path) {\n if (path.iris.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: path.iris\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: path.iris\n }]\n };\n}\nfunction translateOneOrMorePath(path) {\n return {\n type: 'path',\n pathType: '+',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateSeq(path) {\n return {\n type: 'path',\n pathType: '/',\n items: path.input.map(translatePathComponent)\n };\n}\nfunction translateZeroOrMorePath(path) {\n return {\n type: 'path',\n pathType: '*',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateZeroOrOnePath(path) {\n // Typings are missing '?' operator\n return {\n type: 'path',\n // Typings are missing this path\n pathType: '?',\n items: [translatePathComponent(path.path)]\n };\n}\n// UPDATE OPERATIONS\nfunction translateCompositeUpdate(op) {\n const updates = op.updates.map(update => {\n const result = translateOperation(update);\n return result.updates[0];\n });\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateDeleteInsert(op) {\n var _a;\n let where = op.where;\n let use = undefined;\n if (where && where.type === types.FROM) {\n let from = where;\n where = from.input;\n use = { default: from.default, named: from.named };\n }\n const updates = [{\n updateType: 'insertdelete',\n delete: convertUpdatePatterns(op.delete || []),\n insert: convertUpdatePatterns(op.insert || []),\n }];\n // Typings don't support 'using' yet\n if (use)\n updates[0].using = use;\n // corresponds to empty array in SPARQL.js\n if (!where || (where.type === types.BGP && where.patterns.length === 0))\n updates[0].where = [];\n else {\n const graphs = [];\n let result = translateOperation(removeQuadsRecursive(where, graphs));\n if (result.type === 'group')\n updates[0].where = result.patterns;\n else\n updates[0].where = [result];\n // graph might not be applied yet since there was no project\n // this can only happen if there was a single graph\n if (graphs.length > 0) {\n if (graphs.length !== 1)\n throw new Error('This is unexpected and might indicate an error in graph handling for updates.');\n // ignore if default graph\n if (((_a = graphs[0]) === null || _a === void 0 ? void 0 : _a.value) !== '')\n updates[0].where = [{ type: 'graph', patterns: updates[0].where, name: graphs[0] }];\n }\n }\n // not really necessary but can give cleaner looking queries\n if (!op.delete && !op.where) {\n updates[0].updateType = 'insert';\n delete updates[0].delete;\n delete updates[0].where;\n }\n else if (!op.insert && !op.where) {\n delete updates[0].insert;\n delete updates[0].where;\n if (op.delete.some(pattern => pattern.subject.termType === 'Variable' ||\n pattern.predicate.termType === 'Variable' ||\n pattern.object.termType === 'Variable'))\n updates[0].updateType = 'deletewhere';\n else\n updates[0].updateType = 'delete';\n }\n else if (!op.insert && op.where && op.where.type === 'bgp') {\n if ((0, rdf_isomorphic_1.isomorphic)(op.delete, op.where.patterns)) {\n delete updates[0].where;\n updates[0].updateType = 'deletewhere';\n }\n }\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateLoad(op) {\n // Typings are wrong, destiniation is optional\n const updates = [{ type: 'load', silent: Boolean(op.silent), source: op.source }];\n if (op.destination)\n updates[0].destination = op.destination;\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateClear(op) {\n return translateClearCreateDrop(op, 'clear');\n}\nfunction translateCreate(op) {\n return translateClearCreateDrop(op, 'create');\n}\nfunction translateDrop(op) {\n return translateClearCreateDrop(op, 'drop');\n}\nfunction translateClearCreateDrop(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n // Typings are wrong, type is not required, see for example \"clear-drop\" test\n if (op.source === 'DEFAULT')\n updates[0].graph = { default: true };\n else if (op.source === 'NAMED')\n updates[0].graph = { named: true };\n else if (op.source === 'ALL')\n updates[0].graph = { all: true };\n else\n updates[0].graph = { type: 'graph', name: op.source };\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateAdd(op) {\n return translateUpdateGraphShortcut(op, 'add');\n}\nfunction translateMove(op) {\n return translateUpdateGraphShortcut(op, 'move');\n}\nfunction translateCopy(op) {\n return translateUpdateGraphShortcut(op, 'copy');\n}\nfunction translateUpdateGraphShortcut(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n updates[0].source = op.source === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.source };\n updates[0].destination = op.destination === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.destination };\n return { prefixes: {}, type: 'update', updates };\n}\n// similar to removeQuads but more simplified for UPDATEs\nfunction convertUpdatePatterns(patterns) {\n if (!patterns)\n return [];\n const graphs = {};\n patterns.forEach(pattern => {\n const graph = pattern.graph.value;\n if (!graphs[graph])\n graphs[graph] = [];\n graphs[graph].push(pattern);\n });\n return Object.keys(graphs).map(graph => {\n if (graph === '')\n return { type: 'bgp', triples: graphs[graph].map(translatePattern) };\n return { type: 'graph', triples: graphs[graph].map(translatePattern), name: graphs[graph][0].graph };\n });\n}\nfunction removeQuads(op) {\n return removeQuadsRecursive(op, []);\n}\n// remove quads\nfunction removeQuadsRecursive(op, graphs) {\n if (Array.isArray(op))\n return op.map(sub => removeQuadsRecursive(sub, graphs));\n if (!op.type)\n return op;\n // UPDATE operations with Patterns handle graphs a bit differently\n if (op.type === types.DELETE_INSERT)\n return op;\n if ((op.type === types.PATTERN || op.type === types.PATH) && op.graph) {\n graphs.push(op.graph);\n // Remove non-default graphs\n if (op.graph.name !== '')\n return op.type === types.PATTERN ?\n factory.createPattern(op.subject, op.predicate, op.object) :\n factory.createPath(op.subject, op.predicate, op.object);\n return op;\n }\n const result = {};\n const keyGraphs = {}; // unique graph per key\n const globalNames = {}; // track all the unique graph names for the entire Operation\n for (let key of Object.keys(op)) {\n const newGraphs = [];\n result[key] = removeQuadsRecursive(op[key], newGraphs);\n if (newGraphs.length > 0) {\n keyGraphs[key] = newGraphs;\n for (const graph of newGraphs) {\n globalNames[graph.value] = graph;\n }\n }\n }\n const graphNameSet = Object.keys(globalNames);\n if (graphNameSet.length > 0) {\n // We also need to create graph statement if we are at the edge of certain operations\n if (graphNameSet.length === 1 && ![types.PROJECT, types.SERVICE].includes(op.type))\n graphs.push(globalNames[graphNameSet[0]]);\n else if (op.type === types.BGP) {\n // This is the specific case that got changed because of using quads.\n return splitBgpToGraphs(op, keyGraphs.patterns);\n }\n else {\n // multiple graphs (or project), need to create graph objects for them\n for (let key of Object.keys(keyGraphs)) {\n const value = result[key];\n if (Array.isArray(value))\n result[key] = value.map((child, idx) => keyGraphs[key][0].value === '' ? child : factory.createGraph(child, keyGraphs[key][idx]));\n else if (keyGraphs[key][0].value !== '')\n result[key] = factory.createGraph(value, keyGraphs[key][0]);\n }\n }\n }\n return result;\n}\n// `graphs` should be an array of length identical to `op.patterns`, containing the corresponding graph for each triple.\nfunction splitBgpToGraphs(op, graphs) {\n var _a;\n // Split patterns per graph\n const graphPatterns = {};\n for (let i = 0; i < op.patterns.length; ++i) {\n const pattern = op.patterns[i];\n const graphName = graphs[i].value;\n graphPatterns[graphName] = (_a = graphPatterns[graphName]) !== null && _a !== void 0 ? _a : { patterns: [], graph: graphs[i] };\n graphPatterns[graphName].patterns.push(pattern);\n }\n // Create graph objects for every cluster\n let children = [];\n for (const [graphName, { patterns, graph }] of Object.entries(graphPatterns)) {\n const bgp = factory.createBgp(patterns);\n children.push(graphName === '' ? bgp : factory.createGraph(bgp, graph));\n }\n // Join the graph objects\n let join = children[0];\n for (let i = 1; i < children.length; ++i)\n join = factory.createJoin([join, children[i]]);\n return join;\n}\n//# sourceMappingURL=sparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst equal = require(\"fast-deep-equal/es6\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst Parser = require('sparqljs').Parser;\nconst types = Algebra.types;\nlet variables = new Set();\nlet varCount = 0;\nlet useQuads = false;\nlet factory;\n/**\n * Translates the given SPARQL query to SPARQL Algebra.\n * @param sparql - Either a SPARQL string or an object generated by sparql.js\n * @param options - Optional options object. Current options:\n * * dataFactory: The Datafactory used to generate terms. Default @rdfjs/data-model.\n * * quads: Boolean indicating whether triples should be converted to Quads (consumes GRAPH statements). Default false.\n * * prefixes: Pre-defined prefixes for the given query. Default empty.\n * * baseIRI: Base IRI that should be used for the query. Default undefined (throws error if required).\n * @returns {Operation}\n */\nfunction translate(sparql, options) {\n options = options || {};\n factory = new factory_1.default(options.dataFactory);\n let query;\n if (isString(sparql)) {\n let parser = new Parser(options);\n // resets the identifier counter used for blank nodes\n // provides nicer and more consistent output if there are multiple calls\n parser._resetBlanks();\n query = parser.parse(sparql);\n }\n else {\n query = sparql;\n }\n return translateQuery(query, options.quads, options.blankToVariable);\n}\nexports.default = translate;\nfunction translateQuery(sparql, quads, blankToVariable) {\n // this set is filled in during the inScopeVariables call\n variables = new Set();\n varCount = 0;\n useQuads = Boolean(quads);\n // Assume this is an empty query\n if (!sparql.type)\n return factory.createNop();\n if (sparql.type !== 'query' && sparql.type !== 'update')\n throw new Error('Translate only works on complete query or update objects.');\n let res;\n // find ALL variables here to fill `variables` array\n findAllVariables(sparql);\n if (sparql.type === 'query') {\n // group and where are identical, having only 1 makes parsing easier, can be undefined in DESCRIBE\n const group = { type: 'group', patterns: sparql.where || [] };\n res = translateGraphPattern(group);\n res = translateAggregates(sparql, res);\n }\n else if (sparql.type === 'update') {\n res = translateUpdate(sparql);\n }\n if (blankToVariable) {\n res = translateBlankNodesToVariables(res);\n }\n return res;\n}\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isTerm(term) {\n return Boolean(term === null || term === void 0 ? void 0 : term.termType);\n}\n// This is not completely correct but this way we also catch SPARQL.js triples\nfunction isTriple(triple) {\n return triple.subject && triple.predicate && triple.object;\n}\nfunction isVariable(term) {\n return (term === null || term === void 0 ? void 0 : term.termType) === 'Variable';\n}\n// Will be used to make sure new variables don't overlap\nfunction findAllVariables(thingy) {\n if (isTerm(thingy)) {\n if (isVariable(thingy)) {\n // Variables don't store the `?`\n variables.add(`?${thingy.value}`);\n }\n }\n else if (Array.isArray(thingy)) {\n for (const entry of thingy)\n findAllVariables(entry);\n }\n else if (thingy && typeof thingy === 'object') {\n for (let key of Object.keys(thingy)) {\n // Some variables are hidden in keys (specifically for VALUES)\n if (key.startsWith('?'))\n variables.add(key);\n findAllVariables(thingy[key]);\n }\n }\n}\n// 18.2.1\nfunction inScopeVariables(thingy) {\n let inScope = {};\n if (isTriple(thingy)) {\n // Note that this could both be an actual Quad or a SPARQL.js triple (without graph)\n const result = [\n inScopeVariables(thingy.subject),\n inScopeVariables(thingy.predicate),\n inScopeVariables(thingy.object),\n thingy.graph ? inScopeVariables(thingy.graph) : {}\n ];\n Object.assign(inScope, ...result);\n }\n else if (isTerm(thingy)) {\n if (isVariable(thingy))\n inScope[thingy.value] = thingy;\n }\n else if (thingy.type === 'bgp') {\n // Slightly cheating but this is a subset of what we support so is fine\n const quads = thingy.triples;\n Object.assign(inScope, ...quads.map(inScopeVariables));\n }\n else if (thingy.type === 'path') {\n // A path predicate should not have variables but just iterating so we could theoretically support this\n Object.assign(inScope, ...thingy.items.map(inScopeVariables));\n }\n else if (thingy.type === 'group' || thingy.type === 'union' || thingy.type === 'optional') {\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'service' || thingy.type === 'graph') {\n Object.assign(inScope, inScopeVariables(thingy.name));\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'bind') {\n Object.assign(inScope, inScopeVariables(thingy.variable));\n }\n else if (thingy.type === 'values') {\n if (thingy.values.length > 0) {\n const vars = Object.keys(thingy.values[0]).map(v => factory.createTerm(v));\n Object.assign(inScope, ...vars.map(inScopeVariables));\n }\n }\n else if (thingy.type === 'query') {\n if (thingy.queryType === 'SELECT' || thingy.queryType === 'DESCRIBE') {\n if (thingy.where && thingy.variables.some(util_1.default.isWildcard))\n Object.assign(inScope, ...thingy.where.map(inScopeVariables));\n for (const v of thingy.variables) {\n if (isVariable(v))\n Object.assign(inScope, inScopeVariables(v));\n else if (v.variable)\n Object.assign(inScope, inScopeVariables(v.variable));\n }\n if (thingy.queryType === 'SELECT') {\n if (thingy.group) {\n // Grouping can be a VariableExpression, typings are wrong\n for (const g of thingy.group) {\n if (g.variable)\n Object.assign(inScope, inScopeVariables(g.variable));\n }\n }\n if (thingy.values) {\n const values = { type: 'values', values: thingy.values };\n Object.assign(inScope, inScopeVariables(values));\n }\n }\n }\n }\n return inScope;\n}\nfunction translateGraphPattern(thingy) {\n // 18.2.2.1\n // already done by sparql parser\n // 18.2.2.3\n // 18.2.2.4\n // 18.2.2.5\n // In Sparql.js, a group with a single BGP in it is a single object.\n if (thingy.type === 'bgp') {\n return translateBgp(thingy);\n }\n // 18.2.2.6 - GroupOrUnionGraphPattern\n if (thingy.type === 'union')\n return factory.createUnion(thingy.patterns.map((p) => {\n // sparqljs doesn't always indicate the children are groups\n if (p.type !== 'group')\n p = { type: 'group', patterns: [p] };\n return translateGraphPattern(p);\n }));\n // 18.2.2.6 - GraphGraphPattern\n if (thingy.type === 'graph') {\n // Sparql.js combines the group graph pattern and the graph itself in the same object.\n // We split here so the group graph pattern can be interpreted correctly.\n const group = { type: 'group', patterns: thingy.patterns };\n let result = translateGraphPattern(group);\n // Output depends on if we use quads or not\n if (useQuads)\n result = recurseGraph(result, thingy.name);\n else\n result = factory.createGraph(result, thingy.name);\n return result;\n }\n // 18.2.2.6 - InlineData\n if (thingy.type === 'values')\n return translateInlineData(thingy);\n // 18.2.2.6 - SubSelect\n if (thingy.type === 'query')\n return translateQuery(thingy, useQuads, false);\n if (thingy.type === 'group') {\n // 18.2.2.2\n let filters = [];\n let nonfilters = [];\n for (let pattern of thingy.patterns)\n (pattern.type === 'filter' ? filters : nonfilters).push(pattern);\n // 18.2.2.6 - GroupGraphPattern\n let result = nonfilters.reduce(accumulateGroupGraphPattern, factory.createBgp([]));\n // 18.2.2.7\n let expressions = filters.map(filter => translateExpression(filter.expression));\n if (expressions.length > 0)\n result = factory.createFilter(result, expressions.reduce((acc, exp) => factory.createOperatorExpression('&&', [acc, exp])));\n return result;\n }\n throw new Error(`Unexpected type: ${thingy.type}`);\n}\nfunction translateExpression(exp) {\n if (util_1.default.isSimpleTerm(exp))\n return factory.createTermExpression(exp);\n if (util_1.default.isQuad(exp)) {\n if (util_1.default.hasQuadVariables(exp))\n return factory.createOperatorExpression('triple', [\n translateExpression(exp.subject),\n translateExpression(exp.predicate),\n translateExpression(exp.object),\n ]);\n else\n return factory.createTermExpression(exp);\n }\n if (util_1.default.isWildcard(exp))\n return factory.createWildcardExpression();\n if ('aggregation' in exp)\n return factory.createAggregateExpression(exp.aggregation, translateExpression(exp.expression), Boolean(exp.distinct), exp.separator);\n if ('function' in exp)\n // Outdated typings\n return factory.createNamedExpression(exp.function, exp.args.map(translateExpression));\n if ('operator' in exp) {\n if (exp.operator === 'exists' || exp.operator === 'notexists')\n return factory.createExistenceExpression(exp.operator === 'notexists', translateGraphPattern(exp.args[0]));\n if (exp.operator === 'in' || exp.operator === 'notin')\n exp.args = [exp.args[0]].concat(exp.args[1]); // sparql.js uses 2 arguments with the second one being a list\n return factory.createOperatorExpression(exp.operator, exp.args.map(translateExpression));\n }\n throw new Error(`Unknown expression: ${JSON.stringify(exp)}`);\n}\nfunction translateBgp(thingy) {\n let patterns = [];\n let joins = [];\n for (let t of thingy.triples) {\n if ('pathType' in t.predicate) {\n // translatePath returns a mix of Quads and Paths\n let path = translatePath(t);\n for (let p of path) {\n if (p.type === types.PATH) {\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n patterns = [];\n joins.push(p);\n }\n else\n patterns.push(p);\n }\n }\n else\n patterns.push(translateQuad(t));\n }\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n if (joins.length === 1)\n return joins[0];\n return factory.createJoin(joins);\n}\nfunction translatePath(triple) {\n let sub = triple.subject;\n let pred = translatePathPredicate(triple.predicate);\n let obj = triple.object;\n return simplifyPath(sub, pred, obj);\n}\nfunction translatePathPredicate(predicate) {\n if (util_1.default.isSimpleTerm(predicate)) {\n if (predicate.termType === 'NamedNode')\n return factory.createLink(predicate);\n else\n throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(predicate)}`);\n }\n if (predicate.pathType === '^')\n return factory.createInv(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '!') {\n // negation is either over a single predicate or a list of disjuncted properties\n let normals = [];\n let inverted = [];\n let items;\n if ('pathType' in predicate.items[0] && predicate.items[0].pathType === '|')\n items = predicate.items[0].items; // the | element\n else\n items = predicate.items;\n for (let item of items) {\n if (util_1.default.isSimpleTerm(item))\n normals.push(item);\n else if (item.pathType === '^')\n inverted.push(item.items[0]);\n else\n throw new Error(`Unexpected item: ${JSON.stringify(item)}`);\n }\n // NPS elements do not have the LINK function\n let normalElement = factory.createNps(normals);\n let invertedElement = factory.createInv(factory.createNps(inverted));\n if (inverted.length === 0)\n return normalElement;\n if (normals.length === 0)\n return invertedElement;\n return factory.createAlt([normalElement, invertedElement,]);\n }\n if (predicate.pathType === '/')\n return factory.createSeq(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '|')\n return factory.createAlt(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '*')\n return factory.createZeroOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '+')\n return factory.createOneOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '?')\n return factory.createZeroOrOnePath(translatePathPredicate(predicate.items[0]));\n throw new Error(`Unable to translate path expression ${JSON.stringify(predicate)}`);\n}\nfunction simplifyPath(subject, predicate, object) {\n if (predicate.type === types.LINK)\n return [factory.createPattern(subject, predicate.iri, object)];\n if (predicate.type === types.INV)\n return simplifyPath(object, predicate.path, subject);\n if (predicate.type === types.SEQ) {\n let joiner = subject;\n return util_1.default.flatten(predicate.input.map((subOp, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? object : generateFreshVar();\n const simplifiedPath = simplifyPath(joiner, subOp, nextJoiner);\n if (nextJoiner.termType === 'Variable') {\n joiner = nextJoiner;\n }\n return simplifiedPath;\n }));\n }\n return [factory.createPath(subject, predicate, object)];\n}\nfunction generateFreshVar() {\n let v = `?var${varCount++}`;\n if (variables.has(v))\n return generateFreshVar();\n variables.add(v);\n return factory.createTerm(v);\n}\nfunction translateQuad(quad) {\n if ('pathType' in quad.predicate) {\n throw new Error('Trying to translate property path to quad.');\n }\n // Graphs are needed here\n // TODO: investigate if typings are wrong or if we internally add graphs to these\n return factory.createPattern(quad.subject, quad.predicate, quad.object, quad.graph);\n}\nlet typeVals = Object.values(types);\nfunction recurseGraph(thingy, graph, replacement) {\n if (thingy.type === types.GRAPH) {\n if (replacement) {\n // At this point we would lose track of the replacement which would result in incorrect results\n // This would indicate the library is not being used as intended though\n throw new Error('Recursing through nested GRAPH statements with a replacement is impossible.');\n }\n // In case there were nested GRAPH statements that were not recursed yet for some reason\n thingy = recurseGraph(thingy.input, thingy.name);\n }\n else if (thingy.type === types.SERVICE) {\n // Service blocks are not affected by enclosing GRAPH statements, so nothing is modified in this block.\n // See https://github.com/joachimvh/SPARQLAlgebra.js/pull/104#issuecomment-1838016303\n }\n else if (thingy.type === types.BGP)\n thingy.patterns = thingy.patterns.map(quad => {\n if (replacement) {\n if (quad.subject.equals(graph))\n quad.subject = replacement;\n if (quad.predicate.equals(graph))\n quad.predicate = replacement;\n if (quad.object.equals(graph))\n quad.object = replacement;\n }\n if (quad.graph.termType === 'DefaultGraph')\n quad.graph = graph;\n return quad;\n });\n else if (thingy.type === types.PATH) {\n if (replacement) {\n if (thingy.subject.equals(graph))\n thingy.subject = replacement;\n if (thingy.object.equals(graph))\n thingy.object = replacement;\n }\n if (thingy.graph.termType === 'DefaultGraph')\n thingy.graph = graph;\n }\n // need to replace variables in subqueries should the graph also be a variable of the same name\n // unless the subquery projects that variable\n else if (thingy.type === types.PROJECT && !replacement) {\n if (!thingy.variables.some(v => v.equals(graph)))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n // this can happen if the query extends an expression to the name of the graph\n // since the extend happens here there should be no further occurrences of this name\n // if there are it's the same situation as above\n else if (thingy.type === types.EXTEND && !replacement) {\n if (thingy.variable.equals(graph))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n else {\n for (let key of Object.keys(thingy)) {\n if (Array.isArray(thingy[key]))\n thingy[key] = thingy[key].map((x) => recurseGraph(x, graph, replacement));\n else if (typeVals.indexOf(thingy[key].type) >= 0) // can't do instanceof on an interface\n thingy[key] = recurseGraph(thingy[key], graph, replacement);\n else if (replacement && isVariable(thingy[key]) && thingy[key].equals(graph))\n thingy[key] = replacement;\n }\n }\n return thingy;\n}\nfunction accumulateGroupGraphPattern(G, E) {\n if (E.type === 'optional') {\n // optional input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n if (A.type === types.FILTER) {\n G = factory.createLeftJoin(G, A.input, A.expression);\n }\n else\n G = factory.createLeftJoin(G, A);\n }\n else if (E.type === 'minus') {\n // minus input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n G = factory.createMinus(G, A);\n }\n else if (E.type === 'bind')\n G = factory.createExtend(G, E.variable, translateExpression(E.expression));\n else if (E.type === 'service') {\n // transform to group so childnodes get parsed correctly\n const group = { type: 'group', patterns: E.patterns };\n const A = factory.createService(translateGraphPattern(group), E.name, E.silent);\n G = simplifiedJoin(G, A);\n }\n else {\n const A = translateGraphPattern(E);\n G = simplifiedJoin(G, A);\n }\n return G;\n}\nfunction simplifiedJoin(G, A) {\n // Note: this is more simplification than requested in 18.2.2.8, but no reason not to do it.\n if (G.type === types.BGP && A.type === types.BGP)\n G = factory.createBgp([...G.patterns, ...A.patterns]);\n // 18.2.2.8 (simplification)\n else if (G.type === types.BGP && G.patterns.length === 0)\n G = A;\n else if (A.type === types.BGP && A.patterns.length === 0) { } // do nothing\n else\n G = factory.createJoin([G, A]);\n return G;\n}\nfunction translateInlineData(values) {\n let variables = (values.values.length === 0 ? [] : Object.keys(values.values[0])).map(factory.createTerm.bind(factory));\n let bindings = values.values.map((binding) => {\n let keys = Object.keys(binding);\n keys = keys.filter(k => binding[k] !== undefined);\n let map = {};\n for (let key of keys)\n map[key] = binding[key];\n return map;\n });\n return factory.createValues(variables, bindings);\n}\n// --------------------------------------- AGGREGATES\nfunction translateAggregates(query, res) {\n // Typings for ConstructQuery are wrong and missing several fields so we will cast quite often to SelectQuery to have partial typings\n const select = query;\n // 18.2.4.1\n const E = [];\n const A = {};\n select.variables = select.variables && select.variables.map(val => mapAggregate(val, A));\n select.having = select.having && select.having.map(val => mapAggregate(val, A));\n select.order = select.order && select.order.map(val => mapAggregate(val, A));\n // if there are any aggregates or if we have a groupBy (both result in a GROUP)\n if (select.group || Object.keys(A).length > 0) {\n const aggregates = Object.keys(A).map(v => translateBoundAggregate(A[v], factory.createTerm(v)));\n const vars = [];\n if (select.group) {\n for (const e of select.group) {\n if (util_1.default.isSimpleTerm(e.expression)) {\n vars.push(e.expression); // this will always be a var, otherwise sparql would be invalid\n }\n else {\n // Incorrect typings, e can have a variable, see for example group-variable test in sparql.js\n const v = 'variable' in e ? e.variable : generateFreshVar();\n res = factory.createExtend(res, v, translateExpression(e.expression));\n vars.push(v);\n }\n }\n }\n res = factory.createGroup(res, vars, aggregates);\n }\n // 18.2.4.2\n if (select.having)\n for (let filter of select.having)\n res = factory.createFilter(res, translateExpression(filter));\n // 18.2.4.3\n if (query.values)\n res = factory.createJoin([res, translateInlineData(query)]);\n // 18.2.4.4\n let PV = [];\n if (query.queryType === 'SELECT' || query.queryType === 'DESCRIBE') {\n // Sort variables for consistent output\n if (query.variables.some((e) => e && util_1.default.isWildcard(e)))\n PV = Object.values(inScopeVariables(query))\n .sort((left, right) => left.value.localeCompare(right.value));\n else {\n // Wildcard has been filtered out above\n for (let v of query.variables) {\n // can have non-variables with DESCRIBE\n if (isVariable(v) || !('variable' in v))\n PV.push(v);\n else if (v.variable) // ... AS ?x\n {\n PV.push(v.variable);\n E.push(v);\n }\n }\n }\n }\n // TODO: Jena simplifies by having a list of extends\n for (let v of E)\n res = factory.createExtend(res, v.variable, translateExpression(v.expression));\n // 18.2.5\n // not using toList and toMultiset\n // 18.2.5.1\n if (select.order)\n res = factory.createOrderBy(res, select.order.map((exp) => {\n let result = translateExpression(exp.expression);\n if (exp.descending)\n result = factory.createOperatorExpression('desc', [result]);\n return result;\n }));\n // 18.2.5.2\n // construct does not need a project (select, ask and describe do)\n if (query.queryType === 'SELECT')\n // Named nodes are only possible in a DESCRIBE so this cast is safe\n res = factory.createProject(res, PV);\n // 18.2.5.3\n if (select.distinct)\n res = factory.createDistinct(res);\n // 18.2.5.4\n if (select.reduced)\n res = factory.createReduced(res);\n // NEW: support for ask/construct/describe queries\n if (query.queryType === 'CONSTRUCT')\n res = factory.createConstruct(res, (query.template || []).map(translateQuad));\n else if (query.queryType === 'ASK')\n res = factory.createAsk(res);\n else if (query.queryType === 'DESCRIBE')\n res = factory.createDescribe(res, PV);\n // Slicing needs to happen after construct/describe\n // 18.2.5.5\n if (select.offset || select.limit)\n res = factory.createSlice(res, select.offset || 0, select.limit);\n if (select.from)\n res = factory.createFrom(res, select.from.default, select.from.named);\n return res;\n}\n// rewrites some of the input sparql object to make use of aggregate variables\nfunction mapAggregate(thingy, aggregates) {\n if ('type' in thingy && thingy.type === 'aggregate') {\n let found = false;\n let v;\n for (let key of Object.keys(aggregates)) {\n if (equal(aggregates[key], thingy)) {\n v = factory.createTerm(key);\n found = true;\n break;\n }\n }\n if (!found) {\n v = generateFreshVar();\n aggregates[(0, rdf_string_1.termToString)(v)] = thingy;\n }\n return v;\n }\n // non-aggregate expression\n if ('expression' in thingy && thingy.expression)\n return { ...thingy, expression: mapAggregate(thingy.expression, aggregates) };\n if ('args' in thingy && thingy.args)\n return { ...thingy, args: thingy.args.map(subthingy => mapAggregate(subthingy, aggregates)) };\n // Normal variable/wildcard\n return thingy;\n}\nfunction translateBoundAggregate(thingy, v) {\n if (thingy.type !== 'aggregate' || !thingy.aggregation)\n throw new Error(`Unexpected input: ${JSON.stringify(thingy)}`);\n const A = translateExpression(thingy);\n A.variable = v;\n return A;\n}\nfunction translateUpdate(thingy) {\n if (thingy.updates.length === 1)\n return translateSingleUpdate(thingy.updates[0]);\n return factory.createCompositeUpdate(thingy.updates.map(translateSingleUpdate));\n}\nfunction translateSingleUpdate(thingy) {\n if ('type' in thingy) {\n if (thingy.type === 'load')\n return translateUpdateGraphLoad(thingy);\n if (thingy.type === 'clear' || thingy.type === 'create' || thingy.type === 'drop')\n return translateUpdateGraph(thingy);\n if (thingy.type === 'add' || thingy.type === 'copy' || thingy.type === 'move')\n return translateUpdateGraphShortcut(thingy);\n }\n else if (thingy.updateType === 'insertdelete' || thingy.updateType === 'deletewhere' || thingy.updateType === 'delete' || thingy.updateType === 'insert')\n return translateInsertDelete(thingy);\n throw new Error(`Unknown update type ${JSON.stringify(thingy)}`);\n}\nfunction translateInsertDelete(thingy) {\n if (!useQuads)\n throw new Error('INSERT/DELETE operations are only supported with quads option enabled');\n let deleteTriples = [];\n let insertTriples = [];\n let where;\n if (thingy.delete)\n deleteTriples = util_1.default.flatten(thingy.delete.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.insert)\n insertTriples = util_1.default.flatten(thingy.insert.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.where && thingy.where.length > 0) {\n where = translateGraphPattern({ type: 'group', patterns: thingy.where });\n // Wrong typings, see test \"using\" in Sparql.js\n const use = thingy.using;\n if (use)\n where = factory.createFrom(where, use.default, use.named);\n else if (thingy.graph)\n // This is equivalent\n where = recurseGraph(where, thingy.graph);\n }\n else if (thingy.updateType === 'deletewhere' && deleteTriples.length > 0) {\n where = factory.createBgp(deleteTriples);\n }\n return factory.createDeleteInsert(deleteTriples.length > 0 ? deleteTriples : undefined, insertTriples.length > 0 ? insertTriples : undefined, where);\n}\n// UPDATE parsing will always return quads and have no GRAPH elements\nfunction translateUpdateTriplesBlock(thingy, graph) {\n let currentGraph = graph;\n if (thingy.type === 'graph')\n currentGraph = thingy.name;\n let currentTriples = thingy.triples;\n if (currentGraph)\n currentTriples = currentTriples.map(triple => Object.assign(triple, { graph: currentGraph }));\n return currentTriples.map(translateQuad);\n}\nfunction translateUpdateGraph(thingy) {\n let source;\n if (util_1.default.isSimpleTerm(thingy.graph))\n source = thingy.graph;\n else if (thingy.graph.all)\n source = 'ALL';\n else if (thingy.graph.default)\n source = 'DEFAULT';\n else if (thingy.graph.named)\n source = 'NAMED';\n else\n source = thingy.graph.name;\n switch (thingy.type) {\n case 'clear': return factory.createClear(source, thingy.silent);\n case 'create': return factory.createCreate(source, thingy.silent);\n case 'drop': return factory.createDrop(source, thingy.silent);\n }\n}\nfunction translateUpdateGraphLoad(thingy) {\n return factory.createLoad(thingy.source, thingy.destination, thingy.silent);\n}\nfunction translateUpdateGraphShortcut(thingy) {\n const source = thingy.source.default ? 'DEFAULT' : thingy.source.name;\n const destination = thingy.destination.default ? 'DEFAULT' : thingy.destination.name;\n switch (thingy.type) {\n case 'copy': return factory.createCopy(source, destination, thingy.silent);\n case 'move': return factory.createMove(source, destination, thingy.silent);\n case 'add': return factory.createAdd(source, destination, thingy.silent);\n }\n}\nfunction translateBlankNodesToVariables(res) {\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(variables).reduce((acc, variable) => {\n acc[variable] = true;\n return acc;\n }, {});\n return util_1.default.mapOperation(res, {\n [Algebra.types.DELETE_INSERT]: (op) => {\n // Only relevant for INSERT operations as others should never contain blank nodes\n return { result: op, recurse: false };\n },\n [Algebra.types.PATH]: (op, factory) => {\n return {\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.PATTERN]: (op, factory) => {\n return {\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT]: (op) => {\n // Blank nodes in CONSTRUCT templates must be maintained\n return {\n result: factory.createConstruct(translateBlankNodesToVariables(op.input), op.template),\n recurse: false,\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = util_1.default.createUniqueVariable(term.value, variablesRaw, factory.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n}\n//# sourceMappingURL=sparqlAlgebra.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst algebra_1 = require(\"./algebra\");\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst rdf_terms_1 = require(\"rdf-terms\");\nclass Util {\n /**\n * Flattens an array of arrays to an array.\n * @param arr - Array of arrays\n */\n static flatten(arr) {\n return Array.prototype.concat(...arr).filter(x => x);\n }\n /**\n * Outputs a JSON object corresponding to the input algebra-like.\n */\n static objectify(algebra) {\n if (algebra.termType) {\n if (algebra.termType === 'Quad') {\n return {\n type: 'pattern',\n termType: 'Quad',\n subject: Util.objectify(algebra.subject),\n predicate: Util.objectify(algebra.predicate),\n object: Util.objectify(algebra.object),\n graph: Util.objectify(algebra.graph),\n };\n }\n else {\n let result = { termType: algebra.termType, value: algebra.value };\n if (algebra.language)\n result.language = algebra.language;\n if (algebra.datatype)\n result.datatype = Util.objectify(algebra.datatype);\n return result;\n }\n }\n if (Array.isArray(algebra))\n return algebra.map(e => Util.objectify(e));\n if (algebra === Object(algebra)) {\n let result = {};\n for (let key of Object.keys(algebra))\n result[key] = Util.objectify(algebra[key]);\n return result;\n }\n return algebra;\n }\n /**\n * Detects all in-scope variables.\n * In practice this means iterating through the entire algebra tree, finding all variables,\n * and stopping when a project function is found.\n * @param {Operation} op - Input algebra tree.\n * @returns {Variable[]} - List of unique in-scope variables.\n */\n static inScopeVariables(op) {\n const variables = [];\n function addVariable(v) {\n if (!variables.find(v2 => v.value === v2.value))\n variables.push(v);\n }\n function recurseTerm(quad) {\n if (quad.subject.termType === 'Variable')\n addVariable(quad.subject);\n if (quad.predicate.termType === 'Variable')\n addVariable(quad.predicate);\n if (quad.object.termType === 'Variable')\n addVariable(quad.object);\n if (quad.graph.termType === 'Variable')\n addVariable(quad.graph);\n if (quad.subject.termType === 'Quad')\n recurseTerm(quad.subject);\n if (quad.predicate.termType === 'Quad')\n recurseTerm(quad.predicate);\n if (quad.object.termType === 'Quad')\n recurseTerm(quad.object);\n if (quad.graph.termType === 'Quad')\n recurseTerm(quad.graph);\n }\n // https://www.w3.org/TR/sparql11-query/#variableScope\n Util.recurseOperation(op, {\n [algebra_1.types.EXPRESSION]: (op) => {\n if (op.expressionType === algebra_1.expressionTypes.AGGREGATE && op.variable) {\n addVariable(op.variable);\n }\n return true;\n },\n [algebra_1.types.EXTEND]: (op) => {\n addVariable(op.variable);\n return true;\n },\n [algebra_1.types.GRAPH]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.GROUP]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n [algebra_1.types.PATH]: (op) => {\n if (op.subject.termType === 'Variable')\n addVariable(op.subject);\n if (op.object.termType === 'Variable')\n addVariable(op.object);\n if (op.graph.termType === 'Variable')\n addVariable(op.graph);\n if (op.subject.termType === 'Quad')\n recurseTerm(op.subject);\n if (op.object.termType === 'Quad')\n recurseTerm(op.object);\n if (op.graph.termType === 'Quad')\n recurseTerm(op.graph);\n return true;\n },\n [algebra_1.types.PATTERN]: (op) => {\n recurseTerm(op);\n return true;\n },\n [algebra_1.types.PROJECT]: (op) => {\n op.variables.forEach(addVariable);\n return false;\n },\n [algebra_1.types.SERVICE]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.VALUES]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n });\n return variables;\n }\n /**\n * Recurses through the given algebra tree\n * A map of callback functions can be provided for individual Operation types to gather data.\n * The return value of those callbacks should indicate whether recursion should be applied or not.\n * Making modifications will change the original input object.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation) => boolean } callbacks - A map of required callback Operations.\n */\n static recurseOperation(op, callbacks) {\n let result = op;\n let doRecursion = true;\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n doRecursion = callback(op);\n if (!doRecursion)\n return;\n let recurseOp = (op) => Util.recurseOperation(op, callbacks);\n switch (result.type) {\n case algebra_1.types.ALT:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.ASK:\n recurseOp(result.input);\n break;\n case algebra_1.types.BGP:\n result.patterns.forEach(recurseOp);\n break;\n case algebra_1.types.CONSTRUCT:\n recurseOp(result.input);\n result.template.map(recurseOp);\n break;\n case algebra_1.types.DESCRIBE:\n recurseOp(result.input);\n break;\n case algebra_1.types.DISTINCT:\n recurseOp(result.input);\n break;\n case algebra_1.types.EXPRESSION:\n if (result.expressionType === algebra_1.expressionTypes.EXISTENCE) {\n recurseOp(result.input);\n }\n break;\n case algebra_1.types.EXTEND:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FILTER:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FROM:\n recurseOp(result.input);\n break;\n case algebra_1.types.GRAPH:\n recurseOp(result.input);\n break;\n case algebra_1.types.GROUP:\n recurseOp(result.input);\n result.aggregates.forEach(recurseOp);\n break;\n case algebra_1.types.INV:\n recurseOp(result.path);\n break;\n case algebra_1.types.JOIN:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.LEFT_JOIN:\n result.input.map(recurseOp);\n if (result.expression)\n recurseOp(result.expression);\n break;\n case algebra_1.types.LINK:\n break;\n case algebra_1.types.MINUS:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.NOP:\n break;\n case algebra_1.types.NPS:\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ORDER_BY:\n recurseOp(result.input);\n result.expressions.forEach(recurseOp);\n break;\n case algebra_1.types.PATH:\n recurseOp(result.predicate);\n break;\n case algebra_1.types.PATTERN:\n break;\n case algebra_1.types.PROJECT:\n recurseOp(result.input);\n break;\n case algebra_1.types.REDUCED:\n recurseOp(result.input);\n break;\n case algebra_1.types.SEQ:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.SERVICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.SLICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.UNION:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.VALUES:\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n recurseOp(result.path);\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result.updates.forEach(update => recurseOp(update));\n break;\n case algebra_1.types.DELETE_INSERT:\n if (result.delete)\n result.delete.forEach(pattern => recurseOp(pattern));\n if (result.insert)\n result.insert.forEach(pattern => recurseOp(pattern));\n if (result.where)\n recurseOp(result.where);\n break;\n // all of these only have graph IDs as values\n case algebra_1.types.LOAD: break;\n case algebra_1.types.CLEAR: break;\n case algebra_1.types.CREATE: break;\n case algebra_1.types.DROP: break;\n case algebra_1.types.ADD: break;\n case algebra_1.types.MOVE: break;\n case algebra_1.types.COPY: break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Creates a deep copy of the given Operation.\n * Creates shallow copies of the non-Operation values.\n * A map of callback functions can be provided for individual Operation types\n * to specifically modify the given objects before triggering recursion.\n * The return value of those callbacks should indicate whether recursion should be applied to this returned object or not.\n * @param {Operation} op - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapOperation(op, callbacks, factory) {\n let result = op;\n let doRecursion = true;\n let copyMetadata = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[op.type];\n if (callback) {\n // Not sure how to get typing correct for op here\n const recurseResult = callback(op, factory);\n result = recurseResult.result;\n doRecursion = recurseResult.recurse;\n copyMetadata = recurseResult.copyMetadata !== false;\n }\n let toCopyMetadata;\n if (copyMetadata && (result.metadata || op.metadata)) {\n toCopyMetadata = { ...result.metadata, ...op.metadata };\n }\n if (!doRecursion) {\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n // Several casts here might be wrong though depending on the callbacks output\n switch (result.type) {\n case algebra_1.types.ALT:\n result = factory.createAlt(result.input.map(mapOp));\n break;\n case algebra_1.types.ASK:\n result = factory.createAsk(mapOp(result.input));\n break;\n case algebra_1.types.BGP:\n result = factory.createBgp(result.patterns.map(mapOp));\n break;\n case algebra_1.types.CONSTRUCT:\n result = factory.createConstruct(mapOp(result.input), result.template.map(mapOp));\n break;\n case algebra_1.types.DESCRIBE:\n result = factory.createDescribe(mapOp(result.input), result.terms);\n break;\n case algebra_1.types.DISTINCT:\n result = factory.createDistinct(mapOp(result.input));\n break;\n case algebra_1.types.EXPRESSION:\n result = Util.mapExpression(result, callbacks, factory);\n break;\n case algebra_1.types.EXTEND:\n result = factory.createExtend(mapOp(result.input), result.variable, mapOp(result.expression));\n break;\n case algebra_1.types.FILTER:\n result = factory.createFilter(mapOp(result.input), mapOp(result.expression));\n break;\n case algebra_1.types.FROM:\n result = factory.createFrom(mapOp(result.input), [...result.default], [...result.named]);\n break;\n case algebra_1.types.GRAPH:\n result = factory.createGraph(mapOp(result.input), result.name);\n break;\n case algebra_1.types.GROUP:\n result = factory.createGroup(mapOp(result.input), [].concat(result.variables), result.aggregates.map(mapOp));\n break;\n case algebra_1.types.INV:\n result = factory.createInv(mapOp(result.path));\n break;\n case algebra_1.types.JOIN:\n result = factory.createJoin(result.input.map(mapOp));\n break;\n case algebra_1.types.LEFT_JOIN:\n result = factory.createLeftJoin(mapOp(result.input[0]), mapOp(result.input[1]), result.expression ? mapOp(result.expression) : undefined);\n break;\n case algebra_1.types.LINK:\n result = factory.createLink(result.iri);\n break;\n case algebra_1.types.MINUS:\n result = factory.createMinus(mapOp(result.input[0]), mapOp(result.input[1]));\n break;\n case algebra_1.types.NOP:\n result = factory.createNop();\n break;\n case algebra_1.types.NPS:\n result = factory.createNps([].concat(result.iris));\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n result = factory.createOneOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ORDER_BY:\n result = factory.createOrderBy(mapOp(result.input), result.expressions.map(mapOp));\n break;\n case algebra_1.types.PATH:\n result = factory.createPath(result.subject, mapOp(result.predicate), result.object, result.graph);\n break;\n case algebra_1.types.PATTERN:\n result = factory.createPattern(result.subject, result.predicate, result.object, result.graph);\n break;\n case algebra_1.types.PROJECT:\n result = factory.createProject(mapOp(result.input), [...result.variables]);\n break;\n case algebra_1.types.REDUCED:\n result = factory.createReduced(mapOp(result.input));\n break;\n case algebra_1.types.SEQ:\n result = factory.createSeq(result.input.map(mapOp));\n break;\n case algebra_1.types.SERVICE:\n result = factory.createService(mapOp(result.input), result.name, result.silent);\n break;\n case algebra_1.types.SLICE:\n result = factory.createSlice(mapOp(result.input), result.start, result.length);\n break;\n case algebra_1.types.UNION:\n result = factory.createUnion(result.input.map(mapOp));\n break;\n case algebra_1.types.VALUES:\n result = factory.createValues([].concat(result.variables), result.bindings.map(b => Object.assign({}, b)));\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n result = factory.createZeroOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n result = factory.createZeroOrOnePath(mapOp(result.path));\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result = factory.createCompositeUpdate(result.updates.map(mapOp));\n break;\n case algebra_1.types.DELETE_INSERT:\n result = factory.createDeleteInsert(result.delete ? result.delete.map(mapOp) : undefined, result.insert ? result.insert.map(mapOp) : undefined, result.where ? mapOp(result.where) : undefined);\n break;\n case algebra_1.types.LOAD:\n result = factory.createLoad(result.source, result.destination, result.silent);\n break;\n case algebra_1.types.CLEAR:\n result = factory.createClear(result.source, result.silent);\n break;\n case algebra_1.types.CREATE:\n result = factory.createCreate(result.source, result.silent);\n break;\n case algebra_1.types.DROP:\n result = factory.createDrop(result.source, result.silent);\n break;\n case algebra_1.types.ADD:\n result = factory.createAdd(result.source, result.destination);\n break;\n case algebra_1.types.MOVE:\n result = factory.createMove(result.source, result.destination);\n break;\n case algebra_1.types.COPY:\n result = factory.createCopy(result.source, result.destination);\n break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n /**\n * Similar to the {@link mapOperation} function but specifically for expressions.\n * Both functions call each other while copying.\n * Should not be called directly since it does not execute the callbacks, these happen in {@link mapOperation}.\n * @param {Expression} expr - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapExpression(expr, callbacks, factory) {\n let result = expr;\n let doRecursion = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[expr.expressionType];\n if (callback)\n ({ result, recurse: doRecursion } = callback(expr, factory));\n if (!doRecursion)\n return result;\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n switch (expr.expressionType) {\n case algebra_1.expressionTypes.AGGREGATE:\n if (expr.variable) {\n return factory.createBoundAggregate(expr.variable, expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n }\n return factory.createAggregateExpression(expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n case algebra_1.expressionTypes.EXISTENCE:\n return factory.createExistenceExpression(expr.not, mapOp(expr.input));\n case algebra_1.expressionTypes.NAMED:\n return factory.createNamedExpression(expr.name, expr.args.map(mapOp));\n case algebra_1.expressionTypes.OPERATOR:\n return factory.createOperatorExpression(expr.operator, expr.args.map(mapOp));\n case algebra_1.expressionTypes.TERM:\n return factory.createTermExpression(expr.term);\n case algebra_1.expressionTypes.WILDCARD:\n return factory.createWildcardExpression();\n default: throw new Error(`Unknown Expression type ${expr.expressionType}`);\n }\n }\n /**\n * Creates a deep clone of the operation.\n * This is syntactic sugar for calling {@link mapOperation} without callbacks.\n * @param {Operation} op - The operation to copy.\n * @returns {Operation} - The deep copy.\n */\n static cloneOperation(op) {\n return Util.mapOperation(op, {});\n }\n /**\n * Creates a deep clone of the expression.\n * This is syntactic sugar for calling {@link mapExpression} without callbacks.\n * @param {Expression} expr - The operation to copy.\n * @returns {Expression} - The deep copy.\n */\n static cloneExpression(expr) {\n return Util.mapExpression(expr, {});\n }\n static createUniqueVariable(label, variables, dataFactory) {\n let counter = 0;\n let labelLoop = label;\n while (variables[labelLoop]) {\n labelLoop = `${label}${counter++}`;\n }\n return dataFactory.variable(labelLoop);\n }\n // separate terms from wildcard since we handle them differently\n static isSimpleTerm(term) {\n return term.termType !== undefined && term.termType !== 'Quad' && term.termType !== 'Wildcard';\n }\n static isQuad(term) {\n return term.termType === 'Quad';\n }\n static hasQuadVariables(quad) {\n return (0, rdf_terms_1.someTermsNested)(quad, term => term.termType === 'Variable');\n }\n static isWildcard(term) {\n return term.termType === 'Wildcard';\n }\n}\nexports.default = Util;\n//# sourceMappingURL=util.js.map","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.printError = printError;\nexports.GraphQLError = void 0;\n\nvar _isObjectLike = _interopRequireDefault(require(\"../jsutils/isObjectLike.js\"));\n\nvar _symbols = require(\"../polyfills/symbols.js\");\n\nvar _location = require(\"../language/location.js\");\n\nvar _printLocation = require(\"../language/printLocation.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\nvar GraphQLError = /*#__PURE__*/function (_Error) {\n _inherits(GraphQLError, _Error);\n\n var _super = _createSuper(GraphQLError);\n\n /**\n * An array of { line, column } locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n var _nodeLocations, _nodeLocations2, _nodeLocations3;\n\n var _this;\n\n _classCallCheck(this, GraphQLError);\n\n _this = _super.call(this, message);\n _this.name = 'GraphQLError';\n _this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n\n _this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n var nodeLocations = [];\n\n for (var _i2 = 0, _ref3 = (_this$nodes = _this.nodes) !== null && _this$nodes !== void 0 ? _this$nodes : []; _i2 < _ref3.length; _i2++) {\n var _this$nodes;\n\n var _ref4 = _ref3[_i2];\n var loc = _ref4.loc;\n\n if (loc != null) {\n nodeLocations.push(loc);\n }\n }\n\n nodeLocations = undefinedIfEmpty(nodeLocations); // Compute locations in the source for the given nodes/positions.\n\n _this.source = source !== null && source !== void 0 ? source : (_nodeLocations = nodeLocations) === null || _nodeLocations === void 0 ? void 0 : _nodeLocations[0].source;\n _this.positions = positions !== null && positions !== void 0 ? positions : (_nodeLocations2 = nodeLocations) === null || _nodeLocations2 === void 0 ? void 0 : _nodeLocations2.map(function (loc) {\n return loc.start;\n });\n _this.locations = positions && source ? positions.map(function (pos) {\n return (0, _location.getLocation)(source, pos);\n }) : (_nodeLocations3 = nodeLocations) === null || _nodeLocations3 === void 0 ? void 0 : _nodeLocations3.map(function (loc) {\n return (0, _location.getLocation)(loc.source, loc.start);\n });\n _this.path = path !== null && path !== void 0 ? path : undefined;\n var originalExtensions = originalError === null || originalError === void 0 ? void 0 : originalError.extensions;\n\n if (extensions == null && (0, _isObjectLike.default)(originalExtensions)) {\n _this.extensions = _objectSpread({}, originalExtensions);\n } else {\n _this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};\n } // By being enumerable, JSON.stringify will include bellow properties in the resulting output.\n // This ensures that the simplest possible GraphQL service adheres to the spec.\n\n\n Object.defineProperties(_assertThisInitialized(_this), {\n message: {\n enumerable: true\n },\n locations: {\n enumerable: _this.locations != null\n },\n path: {\n enumerable: _this.path != null\n },\n extensions: {\n enumerable: _this.extensions != null && Object.keys(_this.extensions).length > 0\n },\n name: {\n enumerable: false\n },\n nodes: {\n enumerable: false\n },\n source: {\n enumerable: false\n },\n positions: {\n enumerable: false\n },\n originalError: {\n enumerable: false\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError !== null && originalError !== void 0 && originalError.stack) {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n return _possibleConstructorReturn(_this);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n } else {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n\n return _this;\n }\n\n _createClass(GraphQLError, [{\n key: \"toString\",\n value: function toString() {\n return printError(this);\n } // FIXME: workaround to not break chai comparisons, should be remove in v16\n // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n }, {\n key: _symbols.SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Object';\n }\n }]);\n\n return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexports.GraphQLError = GraphQLError;\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\n\nfunction printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i4 = 0, _error$nodes2 = error.nodes; _i4 < _error$nodes2.length; _i4++) {\n var node = _error$nodes2[_i4];\n\n if (node.loc) {\n output += '\\n\\n' + (0, _printLocation.printLocation)(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i6 = 0, _error$locations2 = error.locations; _i6 < _error$locations2.length; _i6++) {\n var location = _error$locations2[_i6];\n output += '\\n\\n' + (0, _printLocation.printSourceLocation)(error.source, location);\n }\n }\n\n return output;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.syntaxError = syntaxError;\n\nvar _GraphQLError = require(\"./GraphQLError.js\");\n\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\nfunction syntaxError(source, position, description) {\n return new _GraphQLError.GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = defineInspect;\n\nvar _invariant = _interopRequireDefault(require(\"./invariant.js\"));\n\nvar _nodejsCustomInspectSymbol = _interopRequireDefault(require(\"./nodejsCustomInspectSymbol.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The `defineInspect()` function defines `inspect()` prototype method as alias of `toJSON`\n */\nfunction defineInspect(classObject) {\n var fn = classObject.prototype.toJSON;\n typeof fn === 'function' || (0, _invariant.default)(0);\n classObject.prototype.inspect = fn; // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (_nodejsCustomInspectSymbol.default) {\n classObject.prototype[_nodejsCustomInspectSymbol.default] = fn;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = devAssert;\n\nfunction devAssert(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inspect;\n\nvar _nodejsCustomInspectSymbol = _interopRequireDefault(require(\"./nodejsCustomInspectSymbol.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(_nodejsCustomInspectSymbol.default)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _inspect = _interopRequireDefault(require(\"./inspect.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n// See: https://webpack.js.org/guides/production/\nvar _default = process.env.NODE_ENV === 'production' ? // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n// eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n return value instanceof constructor;\n} : // eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (_typeof(value) === 'object' && value !== null) {\n var _value$constructor;\n\n var className = constructor.prototype[Symbol.toStringTag];\n var valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name;\n\n if (className === valueClassName) {\n var stringifiedValue = (0, _inspect.default)(value);\n throw new Error(\"Cannot use \".concat(className, \" \\\"\").concat(stringifiedValue, \"\\\" from another module or realm.\\n\\nEnsure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory. If different versions of \\\"graphql\\\" are the dependencies of other\\nrelied on modules, use \\\"resolutions\\\" to ensure only one version is installed.\\n\\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\\n\\nDuplicate \\\"graphql\\\" modules cannot be used at the same time since different\\nversions may have different capabilities and behavior. The data from one\\nversion used in the function from another could produce confusing and\\nspurious results.\"));\n }\n }\n\n return false;\n};\n\nexports.default = _default;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = invariant;\n\nfunction invariant(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isObjectLike;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nfunction isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nvar _default = nodejsCustomInspectSymbol;\nexports.default = _default;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isNode = isNode;\nexports.Token = exports.Location = void 0;\n\nvar _defineInspect = _interopRequireDefault(require(\"../jsutils/defineInspect.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nvar Location = /*#__PURE__*/function () {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n function Location(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n var _proto = Location.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n };\n\n return Location;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\n\nexports.Location = Location;\n(0, _defineInspect.default)(Location);\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nvar Token = /*#__PURE__*/function () {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n function Token(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n }\n\n var _proto2 = Token.prototype;\n\n _proto2.toJSON = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n };\n\n return Token;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\n\nexports.Token = Token;\n(0, _defineInspect.default)(Token);\n/**\n * @internal\n */\n\nfunction isNode(maybeNode) {\n return maybeNode != null && typeof maybeNode.kind === 'string';\n}\n/**\n * The list of all possible AST node types.\n */\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dedentBlockStringValue = dedentBlockStringValue;\nexports.getBlockStringIndentation = getBlockStringIndentation;\nexports.printBlockString = printBlockString;\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nfunction dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(rawString);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n var startLine = 0;\n\n while (startLine < lines.length && isBlank(lines[startLine])) {\n ++startLine;\n }\n\n var endLine = lines.length;\n\n while (endLine > startLine && isBlank(lines[endLine - 1])) {\n --endLine;\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.slice(startLine, endLine).join('\\n');\n}\n\nfunction isBlank(str) {\n for (var i = 0; i < str.length; ++i) {\n if (str[i] !== ' ' && str[i] !== '\\t') {\n return false;\n }\n }\n\n return true;\n}\n/**\n * @internal\n */\n\n\nfunction getBlockStringIndentation(value) {\n var _commonIndent;\n\n var isFirstLine = true;\n var isEmptyLine = true;\n var indent = 0;\n var commonIndent = null;\n\n for (var i = 0; i < value.length; ++i) {\n switch (value.charCodeAt(i)) {\n case 13:\n // \\r\n if (value.charCodeAt(i + 1) === 10) {\n ++i; // skip \\r\\n as one symbol\n }\n\n // falls through\n\n case 10:\n // \\n\n isFirstLine = false;\n isEmptyLine = true;\n indent = 0;\n break;\n\n case 9: // \\t\n\n case 32:\n // \n ++indent;\n break;\n\n default:\n if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n }\n\n isEmptyLine = false;\n }\n }\n\n return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\n\nfunction printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var hasTrailingSlash = value[value.length - 1] === '\\\\';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectiveLocation = void 0;\n\n/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */\n\nexports.DirectiveLocation = DirectiveLocation;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Source\", {\n enumerable: true,\n get: function get() {\n return _source.Source;\n }\n});\nObject.defineProperty(exports, \"getLocation\", {\n enumerable: true,\n get: function get() {\n return _location.getLocation;\n }\n});\nObject.defineProperty(exports, \"printLocation\", {\n enumerable: true,\n get: function get() {\n return _printLocation.printLocation;\n }\n});\nObject.defineProperty(exports, \"printSourceLocation\", {\n enumerable: true,\n get: function get() {\n return _printLocation.printSourceLocation;\n }\n});\nObject.defineProperty(exports, \"Kind\", {\n enumerable: true,\n get: function get() {\n return _kinds.Kind;\n }\n});\nObject.defineProperty(exports, \"TokenKind\", {\n enumerable: true,\n get: function get() {\n return _tokenKind.TokenKind;\n }\n});\nObject.defineProperty(exports, \"Lexer\", {\n enumerable: true,\n get: function get() {\n return _lexer.Lexer;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parser.parse;\n }\n});\nObject.defineProperty(exports, \"parseValue\", {\n enumerable: true,\n get: function get() {\n return _parser.parseValue;\n }\n});\nObject.defineProperty(exports, \"parseType\", {\n enumerable: true,\n get: function get() {\n return _parser.parseType;\n }\n});\nObject.defineProperty(exports, \"print\", {\n enumerable: true,\n get: function get() {\n return _printer.print;\n }\n});\nObject.defineProperty(exports, \"visit\", {\n enumerable: true,\n get: function get() {\n return _visitor.visit;\n }\n});\nObject.defineProperty(exports, \"visitInParallel\", {\n enumerable: true,\n get: function get() {\n return _visitor.visitInParallel;\n }\n});\nObject.defineProperty(exports, \"getVisitFn\", {\n enumerable: true,\n get: function get() {\n return _visitor.getVisitFn;\n }\n});\nObject.defineProperty(exports, \"BREAK\", {\n enumerable: true,\n get: function get() {\n return _visitor.BREAK;\n }\n});\nObject.defineProperty(exports, \"Location\", {\n enumerable: true,\n get: function get() {\n return _ast.Location;\n }\n});\nObject.defineProperty(exports, \"Token\", {\n enumerable: true,\n get: function get() {\n return _ast.Token;\n }\n});\nObject.defineProperty(exports, \"isDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isExecutableDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isExecutableDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isSelectionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isSelectionNode;\n }\n});\nObject.defineProperty(exports, \"isValueNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isValueNode;\n }\n});\nObject.defineProperty(exports, \"isTypeNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeNode;\n }\n});\nObject.defineProperty(exports, \"isTypeSystemDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeSystemDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isTypeDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isTypeSystemExtensionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeSystemExtensionNode;\n }\n});\nObject.defineProperty(exports, \"isTypeExtensionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeExtensionNode;\n }\n});\nObject.defineProperty(exports, \"DirectiveLocation\", {\n enumerable: true,\n get: function get() {\n return _directiveLocation.DirectiveLocation;\n }\n});\n\nvar _source = require(\"./source.js\");\n\nvar _location = require(\"./location.js\");\n\nvar _printLocation = require(\"./printLocation.js\");\n\nvar _kinds = require(\"./kinds.js\");\n\nvar _tokenKind = require(\"./tokenKind.js\");\n\nvar _lexer = require(\"./lexer.js\");\n\nvar _parser = require(\"./parser.js\");\n\nvar _printer = require(\"./printer.js\");\n\nvar _visitor = require(\"./visitor.js\");\n\nvar _ast = require(\"./ast.js\");\n\nvar _predicates = require(\"./predicates.js\");\n\nvar _directiveLocation = require(\"./directiveLocation.js\");\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Kind = void 0;\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */\n\nexports.Kind = Kind;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isPunctuatorTokenKind = isPunctuatorTokenKind;\nexports.Lexer = void 0;\n\nvar _syntaxError = require(\"../error/syntaxError.js\");\n\nvar _ast = require(\"./ast.js\");\n\nvar _tokenKind = require(\"./tokenKind.js\");\n\nvar _blockString = require(\"./blockString.js\");\n\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\nvar Lexer = /*#__PURE__*/function () {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n function Lexer(source) {\n var startOfFileToken = new _ast.Token(_tokenKind.TokenKind.SOF, 0, 0, 0, 0, null);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n\n var _proto = Lexer.prototype;\n\n _proto.advance = function advance() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n ;\n\n _proto.lookahead = function lookahead() {\n var token = this.token;\n\n if (token.kind !== _tokenKind.TokenKind.EOF) {\n do {\n var _token$next;\n\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = (_token$next = token.next) !== null && _token$next !== void 0 ? _token$next : token.next = readToken(this, token);\n } while (token.kind === _tokenKind.TokenKind.COMMENT);\n }\n\n return token;\n };\n\n return Lexer;\n}();\n/**\n * @internal\n */\n\n\nexports.Lexer = Lexer;\n\nfunction isPunctuatorTokenKind(kind) {\n return kind === _tokenKind.TokenKind.BANG || kind === _tokenKind.TokenKind.DOLLAR || kind === _tokenKind.TokenKind.AMP || kind === _tokenKind.TokenKind.PAREN_L || kind === _tokenKind.TokenKind.PAREN_R || kind === _tokenKind.TokenKind.SPREAD || kind === _tokenKind.TokenKind.COLON || kind === _tokenKind.TokenKind.EQUALS || kind === _tokenKind.TokenKind.AT || kind === _tokenKind.TokenKind.BRACKET_L || kind === _tokenKind.TokenKind.BRACKET_R || kind === _tokenKind.TokenKind.BRACE_L || kind === _tokenKind.TokenKind.PIPE || kind === _tokenKind.TokenKind.BRACE_R;\n}\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? _tokenKind.TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = prev.end;\n\n while (pos < bodyLength) {\n var code = body.charCodeAt(pos);\n var _line = lexer.line;\n\n var _col = 1 + pos - lexer.lineStart; // SourceCharacter\n\n\n switch (code) {\n case 0xfeff: // \n\n case 9: // \\t\n\n case 32: // \n\n case 44:\n // ,\n ++pos;\n continue;\n\n case 10:\n // \\n\n ++pos;\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 13:\n // \\r\n if (body.charCodeAt(pos + 1) === 10) {\n pos += 2;\n } else {\n ++pos;\n }\n\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 33:\n // !\n return new _ast.Token(_tokenKind.TokenKind.BANG, pos, pos + 1, _line, _col, prev);\n\n case 35:\n // #\n return readComment(source, pos, _line, _col, prev);\n\n case 36:\n // $\n return new _ast.Token(_tokenKind.TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev);\n\n case 38:\n // &\n return new _ast.Token(_tokenKind.TokenKind.AMP, pos, pos + 1, _line, _col, prev);\n\n case 40:\n // (\n return new _ast.Token(_tokenKind.TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev);\n\n case 41:\n // )\n return new _ast.Token(_tokenKind.TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev);\n\n case 46:\n // .\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new _ast.Token(_tokenKind.TokenKind.SPREAD, pos, pos + 3, _line, _col, prev);\n }\n\n break;\n\n case 58:\n // :\n return new _ast.Token(_tokenKind.TokenKind.COLON, pos, pos + 1, _line, _col, prev);\n\n case 61:\n // =\n return new _ast.Token(_tokenKind.TokenKind.EQUALS, pos, pos + 1, _line, _col, prev);\n\n case 64:\n // @\n return new _ast.Token(_tokenKind.TokenKind.AT, pos, pos + 1, _line, _col, prev);\n\n case 91:\n // [\n return new _ast.Token(_tokenKind.TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev);\n\n case 93:\n // ]\n return new _ast.Token(_tokenKind.TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev);\n\n case 123:\n // {\n return new _ast.Token(_tokenKind.TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev);\n\n case 124:\n // |\n return new _ast.Token(_tokenKind.TokenKind.PIPE, pos, pos + 1, _line, _col, prev);\n\n case 125:\n // }\n return new _ast.Token(_tokenKind.TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev);\n\n case 34:\n // \"\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, _line, _col, prev, lexer);\n }\n\n return readString(source, pos, _line, _col, prev);\n\n case 45: // -\n\n case 48: // 0\n\n case 49: // 1\n\n case 50: // 2\n\n case 51: // 3\n\n case 52: // 4\n\n case 53: // 5\n\n case 54: // 6\n\n case 55: // 7\n\n case 56: // 8\n\n case 57:\n // 9\n return readNumber(source, pos, code, _line, _col, prev);\n\n case 65: // A\n\n case 66: // B\n\n case 67: // C\n\n case 68: // D\n\n case 69: // E\n\n case 70: // F\n\n case 71: // G\n\n case 72: // H\n\n case 73: // I\n\n case 74: // J\n\n case 75: // K\n\n case 76: // L\n\n case 77: // M\n\n case 78: // N\n\n case 79: // O\n\n case 80: // P\n\n case 81: // Q\n\n case 82: // R\n\n case 83: // S\n\n case 84: // T\n\n case 85: // U\n\n case 86: // V\n\n case 87: // W\n\n case 88: // X\n\n case 89: // Y\n\n case 90: // Z\n\n case 95: // _\n\n case 97: // a\n\n case 98: // b\n\n case 99: // c\n\n case 100: // d\n\n case 101: // e\n\n case 102: // f\n\n case 103: // g\n\n case 104: // h\n\n case 105: // i\n\n case 106: // j\n\n case 107: // k\n\n case 108: // l\n\n case 109: // m\n\n case 110: // n\n\n case 111: // o\n\n case 112: // p\n\n case 113: // q\n\n case 114: // r\n\n case 115: // s\n\n case 116: // t\n\n case 117: // u\n\n case 118: // v\n\n case 119: // w\n\n case 120: // x\n\n case 121: // y\n\n case 122:\n // z\n return readName(source, pos, _line, _col, prev);\n }\n\n throw (0, _syntaxError.syntaxError)(source, pos, unexpectedCharacterMessage(code));\n }\n\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n return new _ast.Token(_tokenKind.TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new _ast.Token(_tokenKind.TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n\n if (code >= 48 && code <= 57) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n\n if (code === 46 || isNameStart(code)) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n\n return new _ast.Token(isFloat ? _tokenKind.TokenKind.FLOAT : _tokenKind.TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new _ast.Token(_tokenKind.TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n\n default:\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw (0, _syntaxError.syntaxError)(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new _ast.Token(_tokenKind.TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, (0, _blockString.dedentBlockStringValue)(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else if ( // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw (0, _syntaxError.syntaxError)(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new _ast.Token(_tokenKind.TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n} // _ A-Z a-z\n\n\nfunction isNameStart(code) {\n return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLocation = getLocation;\n\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nfunction getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parse = parse;\nexports.parseValue = parseValue;\nexports.parseType = parseType;\nexports.Parser = void 0;\n\nvar _syntaxError = require(\"../error/syntaxError.js\");\n\nvar _kinds = require(\"./kinds.js\");\n\nvar _ast = require(\"./ast.js\");\n\nvar _tokenKind = require(\"./tokenKind.js\");\n\nvar _source = require(\"./source.js\");\n\nvar _directiveLocation = require(\"./directiveLocation.js\");\n\nvar _lexer = require(\"./lexer.js\");\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nfunction parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\n\nfunction parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(_tokenKind.TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(_tokenKind.TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\n\nfunction parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(_tokenKind.TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(_tokenKind.TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(source, options) {\n var sourceObj = (0, _source.isSource)(source) ? source : new _source.Source(source);\n this._lexer = new _lexer.Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.parseName = function parseName() {\n var token = this.expectToken(_tokenKind.TokenKind.NAME);\n return {\n kind: _kinds.Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n ;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.DOCUMENT,\n definitions: this.many(_tokenKind.TokenKind.SOF, this.parseDefinition, _tokenKind.TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n ;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(_tokenKind.TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n ;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n\n if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n return {\n kind: _kinds.Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n var operation = this.parseOperationType();\n var name;\n\n if (this.peek(_tokenKind.TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return {\n kind: _kinds.Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */\n ;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(_tokenKind.TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n ;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(_tokenKind.TokenKind.PAREN_L, this.parseVariableDefinition, _tokenKind.TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(_tokenKind.TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(_tokenKind.TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */\n ;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.DOLLAR);\n return {\n kind: _kinds.Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */\n ;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.SELECTION_SET,\n selections: this.many(_tokenKind.TokenKind.BRACE_L, this.parseSelection, _tokenKind.TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n ;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(_tokenKind.TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n ;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: _kinds.Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(_tokenKind.TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n ;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(_tokenKind.TokenKind.PAREN_L, item, _tokenKind.TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n return {\n kind: _kinds.Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(_tokenKind.TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n ;\n\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(_tokenKind.TokenKind.NAME)) {\n return {\n kind: _kinds.Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: _kinds.Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n ;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var _this$_options;\n\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {\n return {\n kind: _kinds.Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: _kinds.Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */\n ;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n ;\n\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n\n switch (token.kind) {\n case _tokenKind.TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case _tokenKind.TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case _tokenKind.TokenKind.INT:\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case _tokenKind.TokenKind.FLOAT:\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case _tokenKind.TokenKind.STRING:\n case _tokenKind.TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case _tokenKind.TokenKind.NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return {\n kind: _kinds.Kind.BOOLEAN,\n value: true,\n loc: this.loc(token)\n };\n\n case 'false':\n return {\n kind: _kinds.Kind.BOOLEAN,\n value: false,\n loc: this.loc(token)\n };\n\n case 'null':\n return {\n kind: _kinds.Kind.NULL,\n loc: this.loc(token)\n };\n\n default:\n return {\n kind: _kinds.Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n }\n\n case _tokenKind.TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n\n break;\n }\n\n throw this.unexpected();\n };\n\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.STRING,\n value: token.value,\n block: token.kind === _tokenKind.TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n ;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n\n return {\n kind: _kinds.Kind.LIST,\n values: this.any(_tokenKind.TokenKind.BRACKET_L, item, _tokenKind.TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n ;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n\n return {\n kind: _kinds.Kind.OBJECT,\n fields: this.any(_tokenKind.TokenKind.BRACE_L, item, _tokenKind.TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n return {\n kind: _kinds.Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n ;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n\n while (this.peek(_tokenKind.TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n ;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.AT);\n return {\n kind: _kinds.Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n ;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(_tokenKind.TokenKind.BRACKET_R);\n type = {\n kind: _kinds.Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.BANG)) {\n return {\n kind: _kinds.Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n ;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n\n throw this.unexpected(keywordToken);\n };\n\n _proto.peekDescription = function peekDescription() {\n return this.peek(_tokenKind.TokenKind.STRING) || this.peek(_tokenKind.TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n ;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n */\n ;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(_tokenKind.TokenKind.BRACE_L, this.parseOperationTypeDefinition, _tokenKind.TokenKind.BRACE_R);\n return {\n kind: _kinds.Kind.SCHEMA_DEFINITION,\n description: description,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n ;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(_tokenKind.TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: _kinds.Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n ;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: _kinds.Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n ;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var _this$_options2;\n\n if (!this.expectOptionalKeyword('implements')) {\n return [];\n }\n\n if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {\n var types = []; // Optional leading ampersand\n\n this.expectOptionalToken(_tokenKind.TokenKind.AMP);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(_tokenKind.TokenKind.AMP) || this.peek(_tokenKind.TokenKind.NAME));\n\n return types;\n }\n\n return this.delimitedMany(_tokenKind.TokenKind.AMP, this.parseNamedType);\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */\n ;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n var _this$_options3;\n\n // Legacy support for the SDL?\n if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(_tokenKind.TokenKind.BRACE_L) && this._lexer.lookahead().kind === _tokenKind.TokenKind.BRACE_R) {\n this._lexer.advance();\n\n this._lexer.advance();\n\n return [];\n }\n\n return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseFieldDefinition, _tokenKind.TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n ;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(_tokenKind.TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n ;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(_tokenKind.TokenKind.PAREN_L, this.parseInputValueDef, _tokenKind.TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: _kinds.Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n ;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: _kinds.Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n ;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n return this.expectOptionalToken(_tokenKind.TokenKind.EQUALS) ? this.delimitedMany(_tokenKind.TokenKind.PIPE, this.parseNamedType) : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n ;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: _kinds.Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n ;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseEnumValueDefinition, _tokenKind.TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n ;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n ;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n ;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseInputValueDef, _tokenKind.TokenKind.BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n ;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseOperationTypeDefinition, _tokenKind.TokenKind.BRACE_R);\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n ;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n ;\n\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n ;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n ;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n ;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n ;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */\n ;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(_tokenKind.TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: _kinds.Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n ;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n return this.delimitedMany(_tokenKind.TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n ;\n\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n\n if (_directiveLocation.DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in the source that created a given parsed object.\n */\n ;\n\n _proto.loc = function loc(startToken) {\n var _this$_options4;\n\n if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {\n return new _ast.Location(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */\n ;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw (0, _syntaxError.syntaxError)(this._lexer.source, token.start, \"Expected \".concat(getTokenKindDesc(kind), \", found \").concat(getTokenDesc(token), \".\"));\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and return undefined.\n */\n ;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw (0, _syntaxError.syntaxError)(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token), \".\"));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n ;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n ;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return (0, _syntaxError.syntaxError)(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token), \".\"));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n ;\n\n _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n };\n\n return Parser;\n}();\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\n\nexports.Parser = Parser;\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? \" \\\"\".concat(value, \"\\\"\") : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\n\nfunction getTokenKindDesc(kind) {\n return (0, _lexer.isPunctuatorTokenKind)(kind) ? \"\\\"\".concat(kind, \"\\\"\") : kind;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isDefinitionNode = isDefinitionNode;\nexports.isExecutableDefinitionNode = isExecutableDefinitionNode;\nexports.isSelectionNode = isSelectionNode;\nexports.isValueNode = isValueNode;\nexports.isTypeNode = isTypeNode;\nexports.isTypeSystemDefinitionNode = isTypeSystemDefinitionNode;\nexports.isTypeDefinitionNode = isTypeDefinitionNode;\nexports.isTypeSystemExtensionNode = isTypeSystemExtensionNode;\nexports.isTypeExtensionNode = isTypeExtensionNode;\n\nvar _kinds = require(\"./kinds.js\");\n\nfunction isDefinitionNode(node) {\n return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node);\n}\n\nfunction isExecutableDefinitionNode(node) {\n return node.kind === _kinds.Kind.OPERATION_DEFINITION || node.kind === _kinds.Kind.FRAGMENT_DEFINITION;\n}\n\nfunction isSelectionNode(node) {\n return node.kind === _kinds.Kind.FIELD || node.kind === _kinds.Kind.FRAGMENT_SPREAD || node.kind === _kinds.Kind.INLINE_FRAGMENT;\n}\n\nfunction isValueNode(node) {\n return node.kind === _kinds.Kind.VARIABLE || node.kind === _kinds.Kind.INT || node.kind === _kinds.Kind.FLOAT || node.kind === _kinds.Kind.STRING || node.kind === _kinds.Kind.BOOLEAN || node.kind === _kinds.Kind.NULL || node.kind === _kinds.Kind.ENUM || node.kind === _kinds.Kind.LIST || node.kind === _kinds.Kind.OBJECT;\n}\n\nfunction isTypeNode(node) {\n return node.kind === _kinds.Kind.NAMED_TYPE || node.kind === _kinds.Kind.LIST_TYPE || node.kind === _kinds.Kind.NON_NULL_TYPE;\n}\n\nfunction isTypeSystemDefinitionNode(node) {\n return node.kind === _kinds.Kind.SCHEMA_DEFINITION || isTypeDefinitionNode(node) || node.kind === _kinds.Kind.DIRECTIVE_DEFINITION;\n}\n\nfunction isTypeDefinitionNode(node) {\n return node.kind === _kinds.Kind.SCALAR_TYPE_DEFINITION || node.kind === _kinds.Kind.OBJECT_TYPE_DEFINITION || node.kind === _kinds.Kind.INTERFACE_TYPE_DEFINITION || node.kind === _kinds.Kind.UNION_TYPE_DEFINITION || node.kind === _kinds.Kind.ENUM_TYPE_DEFINITION || node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION;\n}\n\nfunction isTypeSystemExtensionNode(node) {\n return node.kind === _kinds.Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\n\nfunction isTypeExtensionNode(node) {\n return node.kind === _kinds.Kind.SCALAR_TYPE_EXTENSION || node.kind === _kinds.Kind.OBJECT_TYPE_EXTENSION || node.kind === _kinds.Kind.INTERFACE_TYPE_EXTENSION || node.kind === _kinds.Kind.UNION_TYPE_EXTENSION || node.kind === _kinds.Kind.ENUM_TYPE_EXTENSION || node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.printLocation = printLocation;\nexports.printSourceLocation = printSourceLocation;\n\nvar _location = require(\"./location.js\");\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nfunction printLocation(location) {\n return printSourceLocation(location.source, (0, _location.getLocation)(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\n\nfunction printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var subLineIndex = Math.floor(columnNum / 80);\n var subLineColumnNum = columnNum % 80;\n var subLines = [];\n\n for (var i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n return ['', subLine];\n }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n }\n\n return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction leftPad(len, str) {\n return whitespace(len - str.length) + str;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.print = print;\n\nvar _visitor = require(\"./visitor.js\");\n\nvar _blockString = require(\"./blockString.js\");\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nfunction print(ast) {\n return (0, _visitor.visit)(ast, {\n leave: printDocASTReducer\n });\n}\n\nvar MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n var prefix = wrap('', alias, ': ') + name;\n var argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? (0, _blockString.printBlockString)(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: addDescription(function (_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n }),\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n interfaces = _ref26.interfaces,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n interfaces = _ref35.interfaces,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray) {\n var _maybeArray$filter$jo;\n\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function (x) {\n return x;\n }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\n\nfunction wrap(start, maybeString) {\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction isMultiline(str) {\n return str.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray != null && maybeArray.some(isMultiline);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isSource = isSource;\nexports.Source = void 0;\n\nvar _symbols = require(\"../polyfills/symbols.js\");\n\nvar _inspect = _interopRequireDefault(require(\"../jsutils/inspect.js\"));\n\nvar _devAssert = _interopRequireDefault(require(\"../jsutils/devAssert.js\"));\n\nvar _instanceOf = _interopRequireDefault(require(\"../jsutils/instanceOf.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nvar Source = /*#__PURE__*/function () {\n function Source(body) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n line: 1,\n column: 1\n };\n typeof body === 'string' || (0, _devAssert.default)(0, \"Body must be a string. Received: \".concat((0, _inspect.default)(body), \".\"));\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 || (0, _devAssert.default)(0, 'line in locationOffset is 1-indexed and must be positive.');\n this.locationOffset.column > 0 || (0, _devAssert.default)(0, 'column in locationOffset is 1-indexed and must be positive.');\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n\n _createClass(Source, [{\n key: _symbols.SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Source';\n }\n }]);\n\n return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n\nexports.Source = Source;\n\n// eslint-disable-next-line no-redeclare\nfunction isSource(source) {\n return (0, _instanceOf.default)(source, Source);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TokenKind = void 0;\n\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n\nexports.TokenKind = TokenKind;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.visit = visit;\nexports.visitInParallel = visitInParallel;\nexports.getVisitFn = getVisitFn;\nexports.BREAK = exports.QueryDocumentKeys = void 0;\n\nvar _inspect = _interopRequireDefault(require(\"../jsutils/inspect.js\"));\n\nvar _ast = require(\"./ast.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexports.QueryDocumentKeys = QueryDocumentKeys;\nvar BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexports.BREAK = BREAK;\n\nfunction visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!(0, _ast.isNode)(node)) {\n throw new Error(\"Invalid AST Node: \".concat((0, _inspect.default)(node), \".\"));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if ((0, _ast.isNode)(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _visitorKeys$node$kin;\n\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\n\nfunction visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\n\nfunction getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SYMBOL_TO_STRING_TAG = exports.SYMBOL_ASYNC_ITERATOR = exports.SYMBOL_ITERATOR = void 0;\n// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexports.SYMBOL_ITERATOR = SYMBOL_ITERATOR;\nvar SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexports.SYMBOL_ASYNC_ITERATOR = SYMBOL_ASYNC_ITERATOR;\nvar SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';\nexports.SYMBOL_TO_STRING_TAG = SYMBOL_TO_STRING_TAG;\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict'\n\nvar COMPATIBLE_ENCODING_PATTERN = /^utf-?8|ascii|utf-?16-?le|ucs-?2|base-?64|latin-?1$/i\nvar WS_TRIM_PATTERN = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g\nvar WS_CHAR_PATTERN = /\\s|\\uFEFF|\\xA0/\nvar WS_FOLD_PATTERN = /\\r?\\n[\\x20\\x09]+/g\nvar DELIMITER_PATTERN = /[;,\"]/\nvar WS_DELIMITER_PATTERN = /[;,\"]|\\s/\n\n/**\n * Token character pattern\n * @type {RegExp}\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nvar TOKEN_PATTERN = /^[!#$%&'*+\\-\\.^_`|~\\da-zA-Z]+$/\n\nvar STATE = {\n IDLE: 1 << 0,\n URI: 1 << 1,\n ATTR: 1 << 2,\n}\n\nfunction trim( value ) {\n return value.replace( WS_TRIM_PATTERN, '' )\n}\n\nfunction hasWhitespace( value ) {\n return WS_CHAR_PATTERN.test( value )\n}\n\nfunction skipWhitespace( value, offset ) {\n while( hasWhitespace( value[offset] ) ) {\n offset++\n }\n return offset\n}\n\nfunction needsQuotes( value ) {\n return WS_DELIMITER_PATTERN.test( value ) ||\n !TOKEN_PATTERN.test( value )\n}\n\n/**\n * Shallow compares two objects to check if their properties match.\n * @param {object} object1 First object to compare.\n * @param {object} object2 Second object to compare.\n * @returns {boolean} Do the objects have matching properties.\n */\nfunction shallowCompareObjects( object1, object2 ) {\n return (\n Object.keys( object1 ).length === Object.keys( object2 ).length &&\n Object.keys( object1 ).every(\n ( key ) => key in object2 && object1[ key ] === object2[ key ]\n )\n );\n}\n\nclass Link {\n\n /**\n * Link\n * @constructor\n * @param {String} [value]\n * @returns {Link}\n */\n constructor( value ) {\n\n /** @type {Array} URI references */\n this.refs = []\n\n if( value ) {\n this.parse( value )\n }\n\n }\n\n /**\n * Get refs with given relation type\n * @param {String} value\n * @returns {Array}\n */\n rel( value ) {\n\n var links = []\n var type = value.toLowerCase()\n\n for( var i = 0; i < this.refs.length; i++ ) {\n if( typeof this.refs[ i ].rel === 'string' && this.refs[ i ].rel.toLowerCase() === type ) {\n links.push( this.refs[ i ] )\n }\n }\n\n return links\n\n }\n\n /**\n * Get refs where given attribute has a given value\n * @param {String} attr\n * @param {String} value\n * @returns {Array}\n */\n get( attr, value ) {\n\n attr = attr.toLowerCase()\n value = value.toLowerCase()\n\n var links = []\n\n for( var i = 0; i < this.refs.length; i++ ) {\n if( typeof this.refs[ i ][ attr ] === 'string' && this.refs[ i ][ attr ].toLowerCase() === value ) {\n links.push( this.refs[ i ] )\n }\n }\n\n return links\n\n }\n\n /** Sets a reference. */\n set( link ) {\n this.refs.push( link )\n return this\n }\n\n /**\n * Sets a reference if a reference with similar properties isn’t already set.\n */\n setUnique( link ) {\n\n if( !this.refs.some(( ref ) => shallowCompareObjects( ref, link )) ) {\n this.refs.push( link )\n }\n\n return this\n\n }\n\n has( attr, value ) {\n\n attr = attr.toLowerCase()\n value = value.toLowerCase()\n\n for( var i = 0; i < this.refs.length; i++ ) {\n if( typeof this.refs[ i ][ attr ] === 'string' && this.refs[ i ][ attr ].toLowerCase() === value ) {\n return true\n }\n }\n\n return false\n\n }\n\n parse( value, offset ) {\n\n offset = offset || 0\n value = offset ? value.slice( offset ) : value\n\n // Trim & unfold folded lines\n value = trim( value ).replace( WS_FOLD_PATTERN, '' )\n\n var state = STATE.IDLE\n var length = value.length\n var offset = 0\n var ref = null\n\n while( offset < length ) {\n if( state === STATE.IDLE ) {\n if( hasWhitespace( value[offset] ) ) {\n offset++\n continue\n } else if( value[offset] === '<' ) {\n if( ref != null ) {\n ref.rel != null ?\n this.refs.push( ...Link.expandRelations( ref ) ) :\n this.refs.push( ref )\n }\n var end = value.indexOf( '>', offset )\n if( end === -1 ) throw new Error( 'Expected end of URI delimiter at offset ' + offset )\n ref = { uri: value.slice( offset + 1, end ) }\n // this.refs.push( ref )\n offset = end\n state = STATE.URI\n } else {\n throw new Error( 'Unexpected character \"' + value[offset] + '\" at offset ' + offset )\n }\n offset++\n } else if( state === STATE.URI ) {\n if( hasWhitespace( value[offset] ) ) {\n offset++\n continue\n } else if( value[offset] === ';' ) {\n state = STATE.ATTR\n offset++\n } else if( value[offset] === ',' ) {\n state = STATE.IDLE\n offset++\n } else {\n throw new Error( 'Unexpected character \"' + value[offset] + '\" at offset ' + offset )\n }\n } else if( state === STATE.ATTR ) {\n if( value[offset] ===';' || hasWhitespace( value[offset] ) ) {\n offset++\n continue\n }\n var end = value.indexOf( '=', offset )\n if( end === -1 ) end = value.indexOf( ';', offset )\n if( end === -1 ) end = value.length\n var attr = trim( value.slice( offset, end ) ).toLowerCase()\n var attrValue = ''\n offset = end + 1\n offset = skipWhitespace( value, offset )\n if( value[offset] === '\"' ) {\n offset++\n while( offset < length ) {\n if( value[offset] === '\"' ) {\n offset++; break\n }\n if( value[offset] === '\\\\' ) {\n offset++\n }\n attrValue += value[offset]\n offset++\n }\n } else {\n var end = offset + 1\n while( !DELIMITER_PATTERN.test( value[end] ) && end < length ) {\n end++\n }\n attrValue = value.slice( offset, end )\n offset = end\n }\n if( ref[ attr ] && Link.isSingleOccurenceAttr( attr ) ) {\n // Ignore multiples of attributes which may only appear once\n } else if( attr[ attr.length - 1 ] === '*' ) {\n ref[ attr ] = Link.parseExtendedValue( attrValue )\n } else {\n attrValue = attr === 'type' ?\n attrValue.toLowerCase() : attrValue\n if( ref[ attr ] != null ) {\n if( Array.isArray( ref[ attr ] ) ) {\n ref[ attr ].push( attrValue )\n } else {\n ref[ attr ] = [ ref[ attr ], attrValue ]\n }\n } else {\n ref[ attr ] = attrValue\n }\n }\n switch( value[offset] ) {\n case ',': state = STATE.IDLE; break\n case ';': state = STATE.ATTR; break\n }\n offset++\n } else {\n throw new Error( 'Unknown parser state \"' + state + '\"' )\n }\n }\n\n if( ref != null ) {\n ref.rel != null ?\n this.refs.push( ...Link.expandRelations( ref ) ) :\n this.refs.push( ref )\n }\n\n ref = null\n\n return this\n\n }\n\n toString() {\n\n var refs = []\n var link = ''\n var ref = null\n\n for( var i = 0; i < this.refs.length; i++ ) {\n ref = this.refs[i]\n link = Object.keys( this.refs[i] ).reduce( function( link, attr ) {\n if( attr === 'uri' ) return link\n return link + '; ' + Link.formatAttribute( attr, ref[ attr ] )\n }, '<' + ref.uri + '>' )\n refs.push( link )\n }\n\n return refs.join( ', ' )\n\n }\n\n}\n\n/**\n * Determines whether an encoding can be\n * natively handled with a `Buffer`\n * @param {String} value\n * @returns {Boolean}\n */\nLink.isCompatibleEncoding = function( value ) {\n return COMPATIBLE_ENCODING_PATTERN.test( value )\n}\n\nLink.parse = function( value, offset ) {\n return new Link().parse( value, offset )\n}\n\nLink.isSingleOccurenceAttr = function( attr ) {\n return attr === 'rel' || attr === 'type' || attr === 'media' ||\n attr === 'title' || attr === 'title*'\n}\n\nLink.isTokenAttr = function( attr ) {\n return attr === 'rel' || attr === 'type' || attr === 'anchor'\n}\n\nLink.escapeQuotes = function( value ) {\n return value.replace( /\"/g, '\\\\\"' )\n}\n\nLink.expandRelations = function( ref ) {\n var rels = ref.rel.split( ' ' )\n return rels.map( function( rel ) {\n var value = Object.assign( {}, ref )\n value.rel = rel\n return value\n })\n}\n\n/**\n * Parses an extended value and attempts to decode it\n * @internal\n * @param {String} value\n * @return {Object}\n */\nLink.parseExtendedValue = function( value ) {\n var parts = /([^']+)?(?:'([^']*)')?(.+)/.exec( value )\n return {\n language: parts[2].toLowerCase(),\n encoding: Link.isCompatibleEncoding( parts[1] ) ?\n null : parts[1].toLowerCase(),\n value: Link.isCompatibleEncoding( parts[1] ) ?\n decodeURIComponent( parts[3] ) : parts[3]\n }\n}\n\n/**\n * Format a given extended attribute and it's value\n * @param {String} attr\n * @param {Object} data\n * @return {String}\n */\nLink.formatExtendedAttribute = function( attr, data ) {\n\n var encoding = ( data.encoding || 'utf-8' ).toUpperCase()\n var language = data.language || 'en'\n\n var encodedValue = ''\n\n if( Buffer.isBuffer( data.value ) && Link.isCompatibleEncoding( encoding ) ) {\n encodedValue = data.value.toString( encoding )\n } else if( Buffer.isBuffer( data.value ) ) {\n encodedValue = data.value.toString( 'hex' )\n .replace( /[0-9a-f]{2}/gi, '%$1' )\n } else {\n encodedValue = encodeURIComponent( data.value )\n }\n\n return attr + '=' + encoding + '\\'' +\n language + '\\'' + encodedValue\n\n}\n\n/**\n * Format a given attribute and it's value\n * @param {String} attr\n * @param {String|Object} value\n * @return {String}\n */\nLink.formatAttribute = function( attr, value ) {\n\n if( Array.isArray( value ) ) {\n return value.map(( item ) => {\n return Link.formatAttribute( attr, item )\n }).join( '; ' )\n }\n\n if( attr[ attr.length - 1 ] === '*' || typeof value !== 'string' ) {\n return Link.formatExtendedAttribute( attr, value )\n }\n\n if( Link.isTokenAttr( attr ) ) {\n value = needsQuotes( value ) ?\n '\"' + Link.escapeQuotes( value ) + '\"' :\n Link.escapeQuotes( value )\n } else if( needsQuotes( value ) ) {\n value = encodeURIComponent( value )\n // We don't need to escape <,> <;> within quotes\n value = value\n .replace( /%20/g, ' ' )\n .replace( /%2C/g, ',' )\n .replace( /%3B/g, ';' )\n\n value = '\"' + value + '\"'\n }\n\n return attr + '=' + value\n\n}\n\nmodule.exports = Link\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/**\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n return { value: false };\n}\n\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n}\n\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\n\nIterator.prototype.toString = function toString () {\n return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n}\n\nfunction iteratorDone() {\n return { value: undefined, done: true };\n}\n\nfunction hasIterator(maybeIterable) {\n if (Array.isArray(maybeIterable)) {\n // IE11 trick as it does not support `Symbol.iterator`\n return true;\n }\n\n return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nfunction isEntriesIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.entries;\n}\n\nfunction isKeysIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.keys;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n}\n\nvar Seq = /*@__PURE__*/(function (Collection) {\n function Seq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection ) Seq.__proto__ = Collection;\n Seq.prototype = Object.create( Collection && Collection.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === undefined || value === null\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (\n isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object).concat(\n Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []\n );\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n}\n\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n}\n\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return isEntriesIterable(value)\n ? seq.fromEntrySeq()\n : isKeysIterable(value)\n ? seq.toSetSeq()\n : seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n}\n\nvar imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n if (o == null) {\n return hashNullish(o);\n }\n\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n\n var v = valueOf(o);\n\n if (v == null) {\n return hashNullish(v);\n }\n\n switch (typeof v) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return v ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(v);\n case 'string':\n return v.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(v)\n : hashString(v);\n case 'object':\n case 'function':\n return hashJSObj(v);\n case 'symbol':\n return hashSymbol(v);\n default:\n if (typeof v.toString === 'function') {\n return hashString(v.toString());\n }\n throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n }\n}\n\nfunction hashNullish(nullish) {\n return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n}\n\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n}\n\nfunction hashSymbol(sym) {\n var hashed = symbolMap[sym];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = nextHash();\n\n symbolMap[sym] = hashed;\n\n return hashed;\n}\n\nfunction hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = nextHash();\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function () {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = (function () {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n}\n\nfunction valueOf(obj) {\n return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'\n ? obj.valueOf(obj)\n : obj;\n}\n\nfunction nextHash() {\n var nextHash = ++_objHashUID;\n if (_objHashUID & 0x40000000) {\n _objHashUID = 0;\n }\n return nextHash;\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\n\nvar symbolMap = Object.create(null);\n\nvar _objHashUID = 0;\n\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;\n ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;\n ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;\n ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;\n FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function () {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function (type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n var this$1$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction partitionFactory(collection, predicate, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = [[], []];\n collection.__iterate(function (v, k) {\n groups[predicate.call(context, v, k, collection) ? 1 : 0].push(\n isKeyedIter ? [k, v] : v\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); });\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function (type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&\n fn(v, iterations++, this$1$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries\n .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })\n .forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function (fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function (type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(\n null,\n steps.map(function (s) { return s.value; })\n )\n );\n });\n };\n return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\n\nfunction collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n}\n\nfunction makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n}\n\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n}\n\nfunction invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n}\n\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isPlainObject(value) {\n // The base prototype's toString deals with Argument objects and native namespaces like Math\n if (\n !value ||\n typeof value !== 'object' ||\n toString.call(value) !== '[object Object]'\n ) {\n return false;\n }\n\n var proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n\n // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n var parentProto = proto;\n var nextProto = Object.getPrototypeOf(proto);\n while (nextProto !== null) {\n parentProto = nextProto;\n nextProto = Object.getPrototypeOf(parentProto);\n }\n return parentProto === proto;\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObject(value))\n );\n}\n\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\n\nfunction has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n}\n\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n}\n\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\n\nfunction updateIn$1(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n}\n\nfunction setIn$1(collection, keyPath, value) {\n return updateIn$1(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn(keyPath, v) {\n return setIn$1(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n return updateIn$1(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\n\nfunction update$1(collection, key, notSetValue, updater) {\n return updateIn$1(collection, [key], notSetValue, updater);\n}\n\nfunction update(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update$1(this, key, notSetValue, updater);\n}\n\nfunction updateIn(keyPath, notSetValue, updater) {\n return updateIn$1(this, keyPath, notSetValue, updater);\n}\n\nfunction merge$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\n\nfunction merge(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection(sources[i]).forEach(mergeItem);\n }\n return merged;\n}\n\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) &&\n isDataStructure(newValue) &&\n areMergeable(oldValue, newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n}\n\n/**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\nfunction areMergeable(oldDataStructure, newDataStructure) {\n var oldSeq = Seq(oldDataStructure);\n var newSeq = Seq(newDataStructure);\n // This logic assumes that a sequence can only fall into one of the three\n // categories mentioned above (since there's no `isSetLike()` method).\n return (\n isIndexed(oldSeq) === isIndexed(newSeq) &&\n isKeyed(oldSeq) === isKeyed(newSeq)\n );\n}\n\nfunction mergeDeep() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\nfunction mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n}\n\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n return this.__altered;\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection) {\n function Map(value) {\n return value === undefined || value === null\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection ) Map.__proto__ = KeyedCollection;\n Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, this$1$1));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update;\nMapPrototype.updateIn = updateIn;\nMapPrototype.merge = MapPrototype.concat = merge$1;\nMapPrototype.mergeWith = mergeWith$1;\nMapPrototype.mergeDeep = mergeDeep;\nMapPrototype.mergeDeepWith = mergeDeepWith;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function (result, arr) {\n return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =\n function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n };\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =\n function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n };\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator ) MapIterator.__proto__ = Iterator;\n MapIterator.prototype = Object.create( Iterator && Iterator.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n}\n\nfunction makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n}\n\nfunction isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection) {\n function List(value) {\n var empty = emptyList();\n if (value === undefined || value === null) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection ) List.__proto__ = IndexedCollection;\n List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update;\nListPrototype.updateIn = updateIn;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function (result, arr) {\n return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\n\nvar EMPTY_LIST;\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n}\n\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map) {\n function OrderedMap(value) {\n return value === undefined || value === null\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map ) OrderedMap.__proto__ = Map;\n OrderedMap.prototype = Object.create( Map && Map.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n this.__altered = true;\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n omap.__altered = false;\n return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n omap.__altered = true;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection) {\n function Stack(value) {\n return value === undefined || value === null\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;\n Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function (result, arr) {\n return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n}\n\nfunction mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\n\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection) {\n function Set(value) {\n return value === undefined || value === null\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection ) Set.__proto__ = SetCollection;\n Set.prototype = Object.create( SetCollection && SetCollection.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n // keep track if the set is altered by the map function\n var didChanges = false;\n\n var newMap = updateSet(\n this,\n this._map.mapEntries(function (ref) {\n var v = ref[1];\n\n var mapped = mapper.call(context, v, v, this$1$1);\n\n if (mapped !== v) {\n didChanges = true;\n }\n\n return [mapped, mapped];\n }, context)\n );\n\n return didChanges ? newMap : this;\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n if (typeof iters[ii] === 'string') {\n set.add(iters[ii]);\n } else {\n SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function (result, arr) {\n return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq ) Range.__proto__ = IndexedSeq;\n Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nfunction getIn$1(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n}\n\nfunction getIn(searchKeyPath, notSetValue) {\n return getIn$1(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn$1(collection, keyPath) {\n return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn(searchKeyPath) {\n return hasIn$1(this, searchKeyPath);\n}\n\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq().map(this.__toStringMapper).join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n partition: function partition(predicate, context) {\n return partitionFactory(this, predicate, context);\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = false;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n returnValue = true;\n return false;\n }\n });\n return returnValue;\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq().reverse().first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })\n .flip()\n );\n },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n this.size === Infinity ||\n (this.size !== undefined && index > this.size)\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n});\n\nvar SetCollectionPrototype = SetCollection.prototype;\nSetCollectionPrototype.has = CollectionPrototype.includes;\nSetCollectionPrototype.contains = SetCollectionPrototype.includes;\nSetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollectionPrototype);\nmixin(IndexedSeq, IndexedCollectionPrototype);\nmixin(SetSeq, SetCollectionPrototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n}\n\nfunction keyMapper(v, k) {\n return k;\n}\n\nfunction entryMapper(v, k) {\n return [k, v];\n}\n\nfunction not(predicate) {\n return function () {\n return !predicate.apply(this, arguments);\n };\n}\n\nfunction neg(predicate) {\n return function () {\n return -predicate.apply(this, arguments);\n };\n}\n\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n}\n\nfunction hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set) {\n function OrderedSet(value) {\n return value === undefined || value === null\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set ) OrderedSet.__proto__ = Set;\n OrderedSet.prototype = Object.create( Set && Set.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n}\n\nvar PairSorting = {\n LeftThenRight: -1,\n RightThenLeft: +1,\n};\n\nfunction throwOnInvalidDefaultValues(defaultValues) {\n if (isRecord(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'\n );\n }\n\n if (isImmutable(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'\n );\n }\n\n if (defaultValues === null || typeof defaultValues !== 'object') {\n throw new Error(\n 'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'\n );\n }\n}\n\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n throwOnInvalidDefaultValues(defaultValues);\n\n var RecordType = function Record(values) {\n var this$1$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n });\n });\n return this;\n };\n\n var RecordTypePrototype = (RecordType.prototype =\n Object.create(RecordPrototype));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n return (\n this === other ||\n (isRecord(other) && recordSeq(this).equals(recordSeq(other)))\n );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge$1;\nRecordPrototype.mergeWith = mergeWith$1;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep;\nRecordPrototype.mergeDeepWith = mergeDeepWith;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn;\nRecordPrototype.update = update;\nRecordPrototype.updateIn = updateIn;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\n\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function () {\n return this.get(name);\n },\n set: function (value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;\n Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n if (\n typeof value !== 'string' &&\n !isImmutable(value) &&\n (isArrayLike(value) || hasIterator(value) || isPlainObject(value))\n ) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n}\n\nfunction defaultConverter(k, v) {\n // Effectively the opposite of \"Collection.toSeq()\"\n return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n}\n\nvar version = \"4.3.5\";\n\nvar Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n PairSorting: PairSorting,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isPlainObject: isPlainObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn$1,\n has: has,\n hasIn: hasIn$1,\n merge: merge,\n mergeDeep: mergeDeep$1,\n mergeWith: mergeWith,\n mergeDeepWith: mergeDeepWith$1,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn$1,\n update: update$1,\n updateIn: updateIn$1,\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport default Immutable;\nexport { Collection, Iterable, List, Map, OrderedMap, OrderedSet, PairSorting, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn$1 as getIn, has, hasIn$1 as hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep$1 as mergeDeep, mergeDeepWith$1 as mergeDeepWith, mergeWith, remove, removeIn, set, setIn$1 as setIn, update$1 as update, updateIn$1 as updateIn, version };\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/ContextParser\"), exports);\n__exportStar(require(\"./lib/ErrorCoded\"), exports);\n__exportStar(require(\"./lib/FetchDocumentLoader\"), exports);\n__exportStar(require(\"./lib/IDocumentLoader\"), exports);\n__exportStar(require(\"./lib/JsonLdContext\"), exports);\n__exportStar(require(\"./lib/JsonLdContextNormalized\"), exports);\n__exportStar(require(\"./lib/Util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextParser = void 0;\nrequire(\"cross-fetch/polyfill\");\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\nconst ErrorCoded_1 = require(\"./ErrorCoded\");\nconst FetchDocumentLoader_1 = require(\"./FetchDocumentLoader\");\nconst JsonLdContextNormalized_1 = require(\"./JsonLdContextNormalized\");\nconst Util_1 = require(\"./Util\");\n/**\n * Parses JSON-LD contexts.\n */\nclass ContextParser {\n constructor(options) {\n options = options || {};\n this.documentLoader = options.documentLoader || new FetchDocumentLoader_1.FetchDocumentLoader();\n this.documentCache = {};\n this.validateContext = !options.skipValidation;\n this.expandContentTypeToBase = !!options.expandContentTypeToBase;\n this.remoteContextsDepthLimit = options.remoteContextsDepthLimit || 32;\n this.redirectSchemaOrgHttps = 'redirectSchemaOrgHttps' in options ? !!options.redirectSchemaOrgHttps : true;\n }\n /**\n * Validate the given @language value.\n * An error will be thrown if it is invalid.\n * @param value An @language value.\n * @param {boolean} strictRange If the string value should be strictly checked against a regex.\n * @param {string} errorCode The error code to emit on errors.\n * @return {boolean} If validation passed.\n * Can only be false if strictRange is false and the string value did not pass the regex.\n */\n static validateLanguage(value, strictRange, errorCode) {\n if (typeof value !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@language' must be a string, got '${JSON.stringify(value)}'`, errorCode);\n }\n if (!Util_1.Util.REGEX_LANGUAGE_TAG.test(value)) {\n if (strictRange) {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@language' must be a valid language tag, got '${JSON.stringify(value)}'`, errorCode);\n }\n else {\n return false;\n }\n }\n return true;\n }\n /**\n * Validate the given @direction value.\n * An error will be thrown if it is invalid.\n * @param value An @direction value.\n * @param {boolean} strictValues If the string value should be strictly checked against a regex.\n * @return {boolean} If validation passed.\n * Can only be false if strictRange is false and the string value did not pass the regex.\n */\n static validateDirection(value, strictValues) {\n if (typeof value !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@direction' must be a string, got '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_BASE_DIRECTION);\n }\n if (!Util_1.Util.REGEX_DIRECTION_TAG.test(value)) {\n if (strictValues) {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@direction' must be 'ltr' or 'rtl', got '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_BASE_DIRECTION);\n }\n else {\n return false;\n }\n }\n return true;\n }\n /**\n * Add an @id term for all @reverse terms.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @return {IJsonLdContextNormalizedRaw} The mutated input context.\n */\n idifyReverseTerms(context) {\n for (const key of Object.keys(context)) {\n let value = context[key];\n if (value && typeof value === 'object') {\n if (value['@reverse'] && !value['@id']) {\n if (typeof value['@reverse'] !== 'string' || Util_1.Util.isValidKeyword(value['@reverse'])) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid @reverse value, must be absolute IRI or blank node: '${value['@reverse']}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n value = context[key] = Object.assign(Object.assign({}, value), { '@id': value['@reverse'] });\n value['@id'] = value['@reverse'];\n if (Util_1.Util.isPotentialKeyword(value['@reverse'])) {\n delete value['@reverse'];\n }\n else {\n value['@reverse'] = true;\n }\n }\n }\n }\n return context;\n }\n /**\n * Expand all prefixed terms in the given context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {boolean} expandContentTypeToBase If @type inside the context may be expanded\n * via @base if @vocab is set to null.\n * @param {string[]} keys Optional set of keys from the context to expand. If left undefined, all\n * keys in the context will be expanded.\n */\n expandPrefixedTerms(context, expandContentTypeToBase, keys) {\n const contextRaw = context.getContextRaw();\n for (const key of (keys || Object.keys(contextRaw))) {\n // Only expand allowed keys\n if (Util_1.Util.EXPAND_KEYS_BLACKLIST.indexOf(key) < 0 && !Util_1.Util.isReservedInternalKeyword(key)) {\n // Error if we try to alias a keyword to something else.\n const keyValue = contextRaw[key];\n if (Util_1.Util.isPotentialKeyword(key) && Util_1.Util.ALIAS_DOMAIN_BLACKLIST.indexOf(key) >= 0) {\n if (key !== '@type' || typeof contextRaw[key] === 'object'\n && !(contextRaw[key]['@protected'] || contextRaw[key]['@container'] === '@set')) {\n throw new ErrorCoded_1.ErrorCoded(`Keywords can not be aliased to something else.\nTried mapping ${key} to ${JSON.stringify(keyValue)}`, ErrorCoded_1.ERROR_CODES.KEYWORD_REDEFINITION);\n }\n }\n // Error if we try to alias to an illegal keyword\n if (Util_1.Util.ALIAS_RANGE_BLACKLIST.indexOf(Util_1.Util.getContextValueId(keyValue)) >= 0) {\n throw new ErrorCoded_1.ErrorCoded(`Aliasing to certain keywords is not allowed.\nTried mapping ${key} to ${JSON.stringify(keyValue)}`, ErrorCoded_1.ERROR_CODES.INVALID_KEYWORD_ALIAS);\n }\n // Error if this term was marked as prefix as well\n if (keyValue && Util_1.Util.isPotentialKeyword(Util_1.Util.getContextValueId(keyValue))\n && keyValue['@prefix'] === true) {\n throw new ErrorCoded_1.ErrorCoded(`Tried to use keyword aliases as prefix: '${key}': '${JSON.stringify(keyValue)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n // Loop because prefixes might be nested\n while (Util_1.Util.isPrefixValue(contextRaw[key])) {\n const value = contextRaw[key];\n let changed = false;\n if (typeof value === 'string') {\n contextRaw[key] = context.expandTerm(value, true);\n changed = changed || value !== contextRaw[key];\n }\n else {\n const id = value['@id'];\n const type = value['@type'];\n // If @id is missing, don't allow @id to be added if @prefix: true and key not being a valid IRI.\n const canAddIdEntry = !('@prefix' in value) || Util_1.Util.isValidIri(key);\n if ('@id' in value) {\n // Use @id value for expansion\n if (id !== undefined && id !== null && typeof id === 'string') {\n contextRaw[key] = Object.assign(Object.assign({}, contextRaw[key]), { '@id': context.expandTerm(id, true) });\n changed = changed || id !== contextRaw[key]['@id'];\n }\n }\n else if (!Util_1.Util.isPotentialKeyword(key) && canAddIdEntry) {\n // Add an explicit @id value based on the expanded key value\n const newId = context.expandTerm(key, true);\n if (newId !== key) {\n // Don't set @id if expansion failed\n contextRaw[key] = Object.assign(Object.assign({}, contextRaw[key]), { '@id': newId });\n changed = true;\n }\n }\n if (type && typeof type === 'string' && type !== '@vocab'\n && (!value['@container'] || !value['@container']['@type'])\n && canAddIdEntry) {\n // First check @vocab, then fallback to @base\n let expandedType = context.expandTerm(type, true);\n if (expandContentTypeToBase && type === expandedType) {\n expandedType = context.expandTerm(type, false);\n }\n if (expandedType !== type) {\n changed = true;\n contextRaw[key] = Object.assign(Object.assign({}, contextRaw[key]), { '@type': expandedType });\n }\n }\n }\n if (!changed) {\n break;\n }\n }\n }\n }\n }\n /**\n * Normalize the @language entries in the given context to lowercase.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {IParseOptions} parseOptions The parsing options.\n */\n normalize(context, { processingMode, normalizeLanguageTags }) {\n // Lowercase language keys in 1.0\n if (normalizeLanguageTags || processingMode === 1.0) {\n for (const key of Object.keys(context)) {\n if (key === '@language' && typeof context[key] === 'string') {\n context[key] = context[key].toLowerCase();\n }\n else {\n const value = context[key];\n if (value && typeof value === 'object') {\n if (typeof value['@language'] === 'string') {\n const lowercase = value['@language'].toLowerCase();\n if (lowercase !== value['@language']) {\n context[key] = Object.assign(Object.assign({}, value), { '@language': lowercase });\n }\n }\n }\n }\n }\n }\n }\n /**\n * Convert all @container strings and array values to hash-based values.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n */\n containersToHash(context) {\n for (const key of Object.keys(context)) {\n const value = context[key];\n if (value && typeof value === 'object') {\n if (typeof value['@container'] === 'string') {\n context[key] = Object.assign(Object.assign({}, value), { '@container': { [value['@container']]: true } });\n }\n else if (Array.isArray(value['@container'])) {\n const newValue = {};\n for (const containerValue of value['@container']) {\n newValue[containerValue] = true;\n }\n context[key] = Object.assign(Object.assign({}, value), { '@container': newValue });\n }\n }\n }\n }\n /**\n * Normalize and apply context-level @protected terms onto each term separately.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {number} processingMode The processing mode.\n */\n applyScopedProtected(context, { processingMode }, expandOptions) {\n if (processingMode && processingMode >= 1.1) {\n if (context['@protected']) {\n for (const key of Object.keys(context)) {\n if (Util_1.Util.isReservedInternalKeyword(key)) {\n continue;\n }\n if (!Util_1.Util.isPotentialKeyword(key) && !Util_1.Util.isTermProtected(context, key)) {\n const value = context[key];\n if (value && typeof value === 'object') {\n if (!('@protected' in context[key])) {\n // Mark terms with object values as protected if they don't have an @protected: false annotation\n context[key] = Object.assign(Object.assign({}, context[key]), { '@protected': true });\n }\n }\n else {\n // Convert string-based term values to object-based values with @protected: true\n context[key] = {\n '@id': value,\n '@protected': true,\n };\n if (Util_1.Util.isSimpleTermDefinitionPrefix(value, expandOptions)) {\n context[key] = Object.assign(Object.assign({}, context[key]), { '@prefix': true });\n }\n }\n }\n }\n delete context['@protected'];\n }\n }\n }\n /**\n * Check if the given context inheritance does not contain any overrides of protected terms.\n * @param {IJsonLdContextNormalizedRaw} contextBefore The context that may contain some protected terms.\n * @param {IJsonLdContextNormalizedRaw} contextAfter A new context that is being applied on the first one.\n * @param {IExpandOptions} expandOptions Options that are needed for any expansions during this validation.\n * @param {string[]} keys Optional set of keys from the context to validate. If left undefined, all\n * keys defined in contextAfter will be checked.\n */\n validateKeywordRedefinitions(contextBefore, contextAfter, expandOptions, keys) {\n for (const key of (keys !== null && keys !== void 0 ? keys : Object.keys(contextAfter))) {\n if (Util_1.Util.isTermProtected(contextBefore, key)) {\n // The entry in the context before will always be in object-mode\n // If the new entry is in string-mode, convert it to object-mode\n // before checking if it is identical.\n if (typeof contextAfter[key] === 'string') {\n contextAfter[key] = { '@id': contextAfter[key], '@protected': true };\n }\n else {\n // We modify this deliberately,\n // as we need it for the value comparison (they must be identical modulo '@protected')),\n // and for the fact that this new value will override the first one.\n contextAfter[key] = Object.assign(Object.assign({}, contextAfter[key]), { '@protected': true });\n }\n // Error if they are not identical\n if (!Util_1.Util.deepEqual(contextBefore[key], contextAfter[key])) {\n throw new ErrorCoded_1.ErrorCoded(`Attempted to override the protected keyword ${key} from ${JSON.stringify(Util_1.Util.getContextValueId(contextBefore[key]))} to ${JSON.stringify(Util_1.Util.getContextValueId(contextAfter[key]))}`, ErrorCoded_1.ERROR_CODES.PROTECTED_TERM_REDEFINITION);\n }\n }\n }\n }\n /**\n * Validate the entries of the given context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {IParseOptions} options The parse options.\n */\n validate(context, { processingMode }) {\n for (const key of Object.keys(context)) {\n // Ignore reserved internal keywords.\n if (Util_1.Util.isReservedInternalKeyword(key)) {\n continue;\n }\n // Do not allow empty term\n if (key === '') {\n throw new ErrorCoded_1.ErrorCoded(`The empty term is not allowed, got: '${key}': '${JSON.stringify(context[key])}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n const value = context[key];\n const valueType = typeof value;\n // First check if the key is a keyword\n if (Util_1.Util.isPotentialKeyword(key)) {\n switch (key.substr(1)) {\n case 'vocab':\n if (value !== null && valueType !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @vocab IRI: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_VOCAB_MAPPING);\n }\n break;\n case 'base':\n if (value !== null && valueType !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @base IRI: ${context[key]}`, ErrorCoded_1.ERROR_CODES.INVALID_BASE_IRI);\n }\n break;\n case 'language':\n if (value !== null) {\n ContextParser.validateLanguage(value, true, ErrorCoded_1.ERROR_CODES.INVALID_DEFAULT_LANGUAGE);\n }\n break;\n case 'version':\n if (value !== null && valueType !== 'number') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @version number: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_VERSION_VALUE);\n }\n break;\n case 'direction':\n if (value !== null) {\n ContextParser.validateDirection(value, true);\n }\n break;\n case 'propagate':\n if (processingMode === 1.0) {\n throw new ErrorCoded_1.ErrorCoded(`Found an illegal @propagate keyword: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_ENTRY);\n }\n if (value !== null && valueType !== 'boolean') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @propagate value: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_PROPAGATE_VALUE);\n }\n break;\n }\n // Don't allow keywords to be overridden\n if (Util_1.Util.isValidKeyword(key) && Util_1.Util.isValidKeyword(Util_1.Util.getContextValueId(value))) {\n throw new ErrorCoded_1.ErrorCoded(`Illegal keyword alias in term value, found: '${key}': '${Util_1.Util\n .getContextValueId(value)}'`, ErrorCoded_1.ERROR_CODES.KEYWORD_REDEFINITION);\n }\n continue;\n }\n // Otherwise, consider the key a term\n if (value !== null) {\n switch (valueType) {\n case 'string':\n if (Util_1.Util.getPrefix(value, context) === key) {\n throw new ErrorCoded_1.ErrorCoded(`Detected cyclical IRI mapping in context entry: '${key}': '${JSON\n .stringify(value)}'`, ErrorCoded_1.ERROR_CODES.CYCLIC_IRI_MAPPING);\n }\n if (Util_1.Util.isValidIriWeak(key)) {\n if (value === '@type') {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to @type, found: '${key}': '${value}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n else if (Util_1.Util.isValidIri(value) && value !== new JsonLdContextNormalized_1.JsonLdContextNormalized(context).expandTerm(key)) {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to other IRIs, found: '${key}': '${value}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n }\n break;\n case 'object':\n if (!Util_1.Util.isCompactIri(key) && !('@id' in value)\n && (value['@type'] === '@id' ? !context['@base'] : !context['@vocab'])) {\n throw new ErrorCoded_1.ErrorCoded(`Missing @id in context entry: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n for (const objectKey of Object.keys(value)) {\n const objectValue = value[objectKey];\n if (!objectValue) {\n continue;\n }\n switch (objectKey) {\n case '@id':\n if (Util_1.Util.isValidKeyword(objectValue)\n && objectValue !== '@type' && objectValue !== '@id' && objectValue !== '@graph' && objectValue !== '@nest') {\n throw new ErrorCoded_1.ErrorCoded(`Illegal keyword alias in term value, found: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n if (Util_1.Util.isValidIriWeak(key)) {\n if (objectValue === '@type') {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to @type, found: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n else if (Util_1.Util.isValidIri(objectValue)\n && objectValue !== new JsonLdContextNormalized_1.JsonLdContextNormalized(context).expandTerm(key)) {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to other IRIs, found: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n }\n if (typeof objectValue !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`Detected non-string @id in context entry: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n if (Util_1.Util.getPrefix(objectValue, context) === key) {\n throw new ErrorCoded_1.ErrorCoded(`Detected cyclical IRI mapping in context entry: '${key}': '${JSON\n .stringify(value)}'`, ErrorCoded_1.ERROR_CODES.CYCLIC_IRI_MAPPING);\n }\n break;\n case '@type':\n if (value['@container'] === '@type' && objectValue !== '@id' && objectValue !== '@vocab') {\n throw new ErrorCoded_1.ErrorCoded(`@container: @type only allows @type: @id or @vocab, but got: '${key}': '${objectValue}'`, ErrorCoded_1.ERROR_CODES.INVALID_TYPE_MAPPING);\n }\n if (typeof objectValue !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@type' must be a string, got '${JSON.stringify(valueType)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TYPE_MAPPING);\n }\n if (objectValue !== '@id' && objectValue !== '@vocab'\n && (processingMode === 1.0 || objectValue !== '@json')\n && (processingMode === 1.0 || objectValue !== '@none')\n && (objectValue[0] === '_' || !Util_1.Util.isValidIri(objectValue))) {\n throw new ErrorCoded_1.ErrorCoded(`A context @type must be an absolute IRI, found: '${key}': '${objectValue}'`, ErrorCoded_1.ERROR_CODES.INVALID_TYPE_MAPPING);\n }\n break;\n case '@reverse':\n if (typeof objectValue === 'string' && value['@id'] && value['@id'] !== objectValue) {\n throw new ErrorCoded_1.ErrorCoded(`Found non-matching @id and @reverse term values in '${key}':\\\n'${objectValue}' and '${value['@id']}'`, ErrorCoded_1.ERROR_CODES.INVALID_REVERSE_PROPERTY);\n }\n if ('@nest' in value) {\n throw new ErrorCoded_1.ErrorCoded(`@nest is not allowed in the reverse property '${key}'`, ErrorCoded_1.ERROR_CODES.INVALID_REVERSE_PROPERTY);\n }\n break;\n case '@container':\n if (processingMode === 1.0) {\n if (Object.keys(objectValue).length > 1\n || Util_1.Util.CONTAINERS_1_0.indexOf(Object.keys(objectValue)[0]) < 0) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid term @container for '${key}' ('${Object.keys(objectValue)}') in 1.0, \\\nmust be only one of ${Util_1.Util.CONTAINERS_1_0.join(', ')}`, ErrorCoded_1.ERROR_CODES.INVALID_CONTAINER_MAPPING);\n }\n }\n for (const containerValue of Object.keys(objectValue)) {\n if (containerValue === '@list' && value['@reverse']) {\n throw new ErrorCoded_1.ErrorCoded(`Term value can not be @container: @list and @reverse at the same time on '${key}'`, ErrorCoded_1.ERROR_CODES.INVALID_REVERSE_PROPERTY);\n }\n if (Util_1.Util.CONTAINERS.indexOf(containerValue) < 0) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid term @container for '${key}' ('${containerValue}'), \\\nmust be one of ${Util_1.Util.CONTAINERS.join(', ')}`, ErrorCoded_1.ERROR_CODES.INVALID_CONTAINER_MAPPING);\n }\n }\n break;\n case '@language':\n ContextParser.validateLanguage(objectValue, true, ErrorCoded_1.ERROR_CODES.INVALID_LANGUAGE_MAPPING);\n break;\n case '@direction':\n ContextParser.validateDirection(objectValue, true);\n break;\n case '@prefix':\n if (objectValue !== null && typeof objectValue !== 'boolean') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid term @prefix boolean in: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_PREFIX_VALUE);\n }\n if (!('@id' in value) && !Util_1.Util.isValidIri(key)) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid @prefix definition for '${key}' ('${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n break;\n case '@index':\n if (processingMode === 1.0 || !value['@container'] || !value['@container']['@index']) {\n throw new ErrorCoded_1.ErrorCoded(`Attempt to add illegal key to value object: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n break;\n case '@nest':\n if (Util_1.Util.isPotentialKeyword(objectValue) && objectValue !== '@nest') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid term @nest value in: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_NEST_VALUE);\n }\n }\n }\n break;\n default:\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid term value: '${key}': '${value}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n }\n }\n }\n /**\n * Apply the @base context entry to the given context under certain circumstances.\n * @param context A context.\n * @param options Parsing options.\n * @param inheritFromParent If the @base value from the parent context can be inherited.\n * @return The given context.\n */\n applyBaseEntry(context, options, inheritFromParent) {\n // In some special cases, this can be a string, so ignore those.\n if (typeof context === 'string') {\n return context;\n }\n // Give priority to @base in the parent context\n if (inheritFromParent && !('@base' in context) && options.parentContext\n && typeof options.parentContext === 'object' && '@base' in options.parentContext) {\n context['@base'] = options.parentContext['@base'];\n if (options.parentContext['@__baseDocument']) {\n context['@__baseDocument'] = true;\n }\n }\n // Override the base IRI if provided.\n if (options.baseIRI && !options.external) {\n if (!('@base' in context)) {\n // The context base is the document base\n context['@base'] = options.baseIRI;\n context['@__baseDocument'] = true;\n }\n else if (context['@base'] !== null && typeof context['@base'] === 'string'\n && !Util_1.Util.isValidIri(context['@base'])) {\n // The context base is relative to the document base\n context['@base'] = (0, relative_to_absolute_iri_1.resolve)(context['@base'], options.parentContext && options.parentContext['@base'] || options.baseIRI);\n }\n }\n return context;\n }\n /**\n * Resolve relative context IRIs, or return full IRIs as-is.\n * @param {string} contextIri A context IRI.\n * @param {string} baseIRI A base IRI.\n * @return {string} The normalized context IRI.\n */\n normalizeContextIri(contextIri, baseIRI) {\n if (!Util_1.Util.isValidIri(contextIri)) {\n try {\n contextIri = (0, relative_to_absolute_iri_1.resolve)(contextIri, baseIRI);\n }\n catch (_a) {\n throw new Error(`Invalid context IRI: ${contextIri}`);\n }\n }\n // TODO: Temporary workaround for fixing schema.org CORS issues (https://github.com/schemaorg/schemaorg/issues/2578#issuecomment-652324465)\n if (this.redirectSchemaOrgHttps && contextIri.startsWith('http://schema.org')) {\n contextIri = 'https://schema.org/';\n }\n return contextIri;\n }\n /**\n * Parse scoped contexts in the given context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {IParseOptions} options Parsing options.\n * @return {IJsonLdContextNormalizedRaw} The mutated input context.\n * @param {string[]} keys Optional set of keys from the context to parseInnerContexts of. If left undefined, all\n * keys in the context will be iterated over.\n */\n async parseInnerContexts(context, options, keys) {\n for (const key of (keys !== null && keys !== void 0 ? keys : Object.keys(context))) {\n const value = context[key];\n if (value && typeof value === 'object') {\n if ('@context' in value && value['@context'] !== null && !options.ignoreScopedContexts) {\n // Simulate a processing based on the parent context to check if there are any (potential errors).\n // Honestly, I find it a bit weird to do this here, as the context may be unused,\n // and the final effective context may differ based on any other embedded/scoped contexts.\n // But hey, it's part of the spec, so we have no choice...\n // https://w3c.github.io/json-ld-api/#h-note-10\n if (this.validateContext) {\n try {\n const parentContext = Object.assign(Object.assign({}, context), { [key]: Object.assign({}, context[key]) });\n delete parentContext[key]['@context'];\n await this.parse(value['@context'], Object.assign(Object.assign({}, options), { external: false, parentContext, ignoreProtection: true, ignoreRemoteScopedContexts: true, ignoreScopedContexts: true }));\n }\n catch (e) {\n throw new ErrorCoded_1.ErrorCoded(e.message, ErrorCoded_1.ERROR_CODES.INVALID_SCOPED_CONTEXT);\n }\n }\n context[key] = Object.assign(Object.assign({}, value), { '@context': (await this.parse(value['@context'], Object.assign(Object.assign({}, options), { external: false, minimalProcessing: true, ignoreRemoteScopedContexts: true, parentContext: context })))\n .getContextRaw() });\n }\n }\n }\n return context;\n }\n async parse(context, options = {}, \n // These options are only for internal use on recursive calls and should not be used by\n // libraries consuming this function\n internalOptions = {}) {\n const { baseIRI, parentContext, external, processingMode = ContextParser.DEFAULT_PROCESSING_MODE, normalizeLanguageTags, ignoreProtection, minimalProcessing, } = options;\n const remoteContexts = options.remoteContexts || {};\n // Avoid remote context overflows\n if (Object.keys(remoteContexts).length >= this.remoteContextsDepthLimit) {\n throw new ErrorCoded_1.ErrorCoded('Detected an overflow in remote context inclusions: ' + Object.keys(remoteContexts), ErrorCoded_1.ERROR_CODES.CONTEXT_OVERFLOW);\n }\n if (context === null || context === undefined) {\n // Don't allow context nullification and there are protected terms\n if (!ignoreProtection && parentContext && Util_1.Util.hasProtectedTerms(parentContext)) {\n throw new ErrorCoded_1.ErrorCoded('Illegal context nullification when terms are protected', ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_NULLIFICATION);\n }\n // Context that are explicitly set to null are empty.\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(this.applyBaseEntry({}, options, false));\n }\n else if (typeof context === 'string') {\n const contextIri = this.normalizeContextIri(context, baseIRI);\n const overriddenLoad = this.getOverriddenLoad(contextIri, options);\n if (overriddenLoad) {\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(overriddenLoad);\n }\n const parsedStringContext = await this.parse(await this.load(contextIri), Object.assign(Object.assign({}, options), { baseIRI: contextIri, external: true, remoteContexts: Object.assign(Object.assign({}, remoteContexts), { [contextIri]: true }) }));\n this.applyBaseEntry(parsedStringContext.getContextRaw(), options, true);\n return parsedStringContext;\n }\n else if (Array.isArray(context)) {\n // As a performance consideration, first load all external contexts in parallel.\n const contextIris = [];\n const contexts = await Promise.all(context.map((subContext, i) => {\n if (typeof subContext === 'string') {\n const contextIri = this.normalizeContextIri(subContext, baseIRI);\n contextIris[i] = contextIri;\n const overriddenLoad = this.getOverriddenLoad(contextIri, options);\n if (overriddenLoad) {\n return overriddenLoad;\n }\n return this.load(contextIri);\n }\n else {\n return subContext;\n }\n }));\n // Don't apply inheritance logic on minimal processing\n if (minimalProcessing) {\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(contexts);\n }\n const reducedContexts = await contexts.reduce((accContextPromise, contextEntry, i) => accContextPromise\n .then((accContext) => this.parse(contextEntry, Object.assign(Object.assign({}, options), { baseIRI: contextIris[i] || options.baseIRI, external: !!contextIris[i] || options.external, parentContext: accContext.getContextRaw(), remoteContexts: contextIris[i] ? Object.assign(Object.assign({}, remoteContexts), { [contextIris[i]]: true }) : remoteContexts }), \n // @ts-expect-error: This third argument causes a type error because we have hidden it from consumers\n {\n skipValidation: i < contexts.length - 1,\n })), Promise.resolve(new JsonLdContextNormalized_1.JsonLdContextNormalized(parentContext || {})));\n // Override the base IRI if provided.\n this.applyBaseEntry(reducedContexts.getContextRaw(), options, true);\n return reducedContexts;\n }\n else if (typeof context === 'object') {\n if ('@context' in context) {\n return await this.parse(context['@context'], options);\n }\n // Make a deep clone of the given context, to avoid modifying it.\n context = Object.assign({}, context);\n // According to the JSON-LD spec, @base must be ignored from external contexts.\n if (external) {\n delete context['@base'];\n }\n // Override the base IRI if provided.\n this.applyBaseEntry(context, options, true);\n // Hashify container entries\n // Do this before protected term validation as that influences term format\n this.containersToHash(context);\n // Don't perform any other modifications if only minimal processing is needed.\n if (minimalProcessing) {\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(context);\n }\n // In JSON-LD 1.1, load @import'ed context prior to processing.\n let importContext = {};\n if ('@import' in context) {\n if (processingMode >= 1.1) {\n // Only accept string values\n if (typeof context['@import'] !== 'string') {\n throw new ErrorCoded_1.ErrorCoded('An @import value must be a string, but got ' + typeof context['@import'], ErrorCoded_1.ERROR_CODES.INVALID_IMPORT_VALUE);\n }\n // Load context\n importContext = await this.loadImportContext(this.normalizeContextIri(context['@import'], baseIRI));\n delete context['@import'];\n }\n else {\n throw new ErrorCoded_1.ErrorCoded('Context importing is not supported in JSON-LD 1.0', ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_ENTRY);\n }\n }\n this.applyScopedProtected(importContext, { processingMode }, JsonLdContextNormalized_1.defaultExpandOptions);\n const newContext = Object.assign(importContext, context);\n // Handle terms (before protection checks)\n this.idifyReverseTerms(newContext);\n this.normalize(newContext, { processingMode, normalizeLanguageTags });\n this.applyScopedProtected(newContext, { processingMode }, JsonLdContextNormalized_1.defaultExpandOptions);\n const keys = Object.keys(newContext);\n const overlappingKeys = [];\n if (typeof parentContext === 'object') {\n // Merge different parts of the final context in order\n for (const key in parentContext) {\n if (key in newContext) {\n overlappingKeys.push(key);\n }\n else {\n newContext[key] = parentContext[key];\n }\n }\n }\n // Parse inner contexts with minimal processing\n await this.parseInnerContexts(newContext, options, keys);\n const newContextWrapped = new JsonLdContextNormalized_1.JsonLdContextNormalized(newContext);\n // In JSON-LD 1.1, @vocab can be relative to @vocab in the parent context, or a compact IRI.\n if ((newContext && newContext['@version'] || ContextParser.DEFAULT_PROCESSING_MODE) >= 1.1\n && ((context['@vocab'] && typeof context['@vocab'] === 'string') || context['@vocab'] === '')) {\n if (parentContext && '@vocab' in parentContext && context['@vocab'].indexOf(':') < 0) {\n newContext['@vocab'] = parentContext['@vocab'] + context['@vocab'];\n }\n else if (Util_1.Util.isCompactIri(context['@vocab']) || context['@vocab'] in newContext) {\n // @vocab is a compact IRI or refers exactly to a prefix\n newContext['@vocab'] = newContextWrapped.expandTerm(context['@vocab'], true);\n }\n }\n this.expandPrefixedTerms(newContextWrapped, this.expandContentTypeToBase, keys);\n // In JSON-LD 1.1, check if we are not redefining any protected keywords\n if (!ignoreProtection && parentContext && processingMode >= 1.1) {\n this.validateKeywordRedefinitions(parentContext, newContext, JsonLdContextNormalized_1.defaultExpandOptions, overlappingKeys);\n }\n if (this.validateContext && !internalOptions.skipValidation) {\n this.validate(newContext, { processingMode });\n }\n return newContextWrapped;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded(`Tried parsing a context that is not a string, array or object, but got ${context}`, ErrorCoded_1.ERROR_CODES.INVALID_LOCAL_CONTEXT);\n }\n }\n /**\n * Fetch the given URL as a raw JSON-LD context.\n * @param url An URL.\n * @return A promise resolving to a raw JSON-LD context.\n */\n async load(url) {\n // First try to retrieve the context from cache\n const cached = this.documentCache[url];\n if (cached) {\n return cached;\n }\n // If not in cache, load it\n let document;\n try {\n document = await this.documentLoader.load(url);\n }\n catch (e) {\n throw new ErrorCoded_1.ErrorCoded(`Failed to load remote context ${url}: ${e.message}`, ErrorCoded_1.ERROR_CODES.LOADING_REMOTE_CONTEXT_FAILED);\n }\n // Validate the context\n if (!('@context' in document)) {\n throw new ErrorCoded_1.ErrorCoded(`Missing @context in remote context at ${url}`, ErrorCoded_1.ERROR_CODES.INVALID_REMOTE_CONTEXT);\n }\n return this.documentCache[url] = document['@context'];\n }\n /**\n * Override the given context that may be loaded.\n *\n * This will check whether or not the url is recursively being loaded.\n * @param url An URL.\n * @param options Parsing options.\n * @return An overridden context, or null.\n * Optionally an error can be thrown if a cyclic context is detected.\n */\n getOverriddenLoad(url, options) {\n if (url in (options.remoteContexts || {})) {\n if (options.ignoreRemoteScopedContexts) {\n return url;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded('Detected a cyclic context inclusion of ' + url, ErrorCoded_1.ERROR_CODES.RECURSIVE_CONTEXT_INCLUSION);\n }\n }\n return null;\n }\n /**\n * Load an @import'ed context.\n * @param importContextIri The full URI of an @import value.\n */\n async loadImportContext(importContextIri) {\n // Load the context - and do a deep clone since we are about to mutate it\n let importContext = await this.load(importContextIri);\n // Require the context to be a non-array object\n if (typeof importContext !== 'object' || Array.isArray(importContext)) {\n throw new ErrorCoded_1.ErrorCoded('An imported context must be a single object: ' + importContextIri, ErrorCoded_1.ERROR_CODES.INVALID_REMOTE_CONTEXT);\n }\n // Error if the context contains another @import\n if ('@import' in importContext) {\n throw new ErrorCoded_1.ErrorCoded('An imported context can not import another context: ' + importContextIri, ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_ENTRY);\n }\n importContext = Object.assign({}, importContext);\n // Containers have to be converted into hash values the same way as for the importing context\n // Otherwise context validation will fail for container values\n this.containersToHash(importContext);\n return importContext;\n }\n}\nContextParser.DEFAULT_PROCESSING_MODE = 1.1;\nexports.ContextParser = ContextParser;\n//# sourceMappingURL=ContextParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ERROR_CODES = exports.ErrorCoded = void 0;\n/**\n * An error that has a certain error code.\n *\n * The error code can be any string.\n * All standardized error codes are listed in {@link ERROR_CODES}.\n */\nclass ErrorCoded extends Error {\n /* istanbul ignore next */\n constructor(message, code) {\n super(message);\n this.code = code;\n }\n}\nexports.ErrorCoded = ErrorCoded;\n/**\n * All standardized JSON-LD error codes.\n * @see https://w3c.github.io/json-ld-api/#dom-jsonlderrorcode\n */\n// tslint:disable:object-literal-sort-keys\nvar ERROR_CODES;\n(function (ERROR_CODES) {\n ERROR_CODES[\"COLLIDING_KEYWORDS\"] = \"colliding keywords\";\n ERROR_CODES[\"CONFLICTING_INDEXES\"] = \"conflicting indexes\";\n ERROR_CODES[\"CYCLIC_IRI_MAPPING\"] = \"cyclic IRI mapping\";\n ERROR_CODES[\"INVALID_ID_VALUE\"] = \"invalid @id value\";\n ERROR_CODES[\"INVALID_INDEX_VALUE\"] = \"invalid @index value\";\n ERROR_CODES[\"INVALID_NEST_VALUE\"] = \"invalid @nest value\";\n ERROR_CODES[\"INVALID_PREFIX_VALUE\"] = \"invalid @prefix value\";\n ERROR_CODES[\"INVALID_PROPAGATE_VALUE\"] = \"invalid @propagate value\";\n ERROR_CODES[\"INVALID_REVERSE_VALUE\"] = \"invalid @reverse value\";\n ERROR_CODES[\"INVALID_IMPORT_VALUE\"] = \"invalid @import value\";\n ERROR_CODES[\"INVALID_VERSION_VALUE\"] = \"invalid @version value\";\n ERROR_CODES[\"INVALID_BASE_IRI\"] = \"invalid base IRI\";\n ERROR_CODES[\"INVALID_CONTAINER_MAPPING\"] = \"invalid container mapping\";\n ERROR_CODES[\"INVALID_CONTEXT_ENTRY\"] = \"invalid context entry\";\n ERROR_CODES[\"INVALID_CONTEXT_NULLIFICATION\"] = \"invalid context nullification\";\n ERROR_CODES[\"INVALID_DEFAULT_LANGUAGE\"] = \"invalid default language\";\n ERROR_CODES[\"INVALID_INCLUDED_VALUE\"] = \"invalid @included value\";\n ERROR_CODES[\"INVALID_IRI_MAPPING\"] = \"invalid IRI mapping\";\n ERROR_CODES[\"INVALID_JSON_LITERAL\"] = \"invalid JSON literal\";\n ERROR_CODES[\"INVALID_KEYWORD_ALIAS\"] = \"invalid keyword alias\";\n ERROR_CODES[\"INVALID_LANGUAGE_MAP_VALUE\"] = \"invalid language map value\";\n ERROR_CODES[\"INVALID_LANGUAGE_MAPPING\"] = \"invalid language mapping\";\n ERROR_CODES[\"INVALID_LANGUAGE_TAGGED_STRING\"] = \"invalid language-tagged string\";\n ERROR_CODES[\"INVALID_LANGUAGE_TAGGED_VALUE\"] = \"invalid language-tagged value\";\n ERROR_CODES[\"INVALID_LOCAL_CONTEXT\"] = \"invalid local context\";\n ERROR_CODES[\"INVALID_REMOTE_CONTEXT\"] = \"invalid remote context\";\n ERROR_CODES[\"INVALID_REVERSE_PROPERTY\"] = \"invalid reverse property\";\n ERROR_CODES[\"INVALID_REVERSE_PROPERTY_MAP\"] = \"invalid reverse property map\";\n ERROR_CODES[\"INVALID_REVERSE_PROPERTY_VALUE\"] = \"invalid reverse property value\";\n ERROR_CODES[\"INVALID_SCOPED_CONTEXT\"] = \"invalid scoped context\";\n ERROR_CODES[\"INVALID_SCRIPT_ELEMENT\"] = \"invalid script element\";\n ERROR_CODES[\"INVALID_SET_OR_LIST_OBJECT\"] = \"invalid set or list object\";\n ERROR_CODES[\"INVALID_TERM_DEFINITION\"] = \"invalid term definition\";\n ERROR_CODES[\"INVALID_TYPE_MAPPING\"] = \"invalid type mapping\";\n ERROR_CODES[\"INVALID_TYPE_VALUE\"] = \"invalid type value\";\n ERROR_CODES[\"INVALID_TYPED_VALUE\"] = \"invalid typed value\";\n ERROR_CODES[\"INVALID_VALUE_OBJECT\"] = \"invalid value object\";\n ERROR_CODES[\"INVALID_VALUE_OBJECT_VALUE\"] = \"invalid value object value\";\n ERROR_CODES[\"INVALID_VOCAB_MAPPING\"] = \"invalid vocab mapping\";\n ERROR_CODES[\"IRI_CONFUSED_WITH_PREFIX\"] = \"IRI confused with prefix\";\n ERROR_CODES[\"KEYWORD_REDEFINITION\"] = \"keyword redefinition\";\n ERROR_CODES[\"LOADING_DOCUMENT_FAILED\"] = \"loading document failed\";\n ERROR_CODES[\"LOADING_REMOTE_CONTEXT_FAILED\"] = \"loading remote context failed\";\n ERROR_CODES[\"MULTIPLE_CONTEXT_LINK_HEADERS\"] = \"multiple context link headers\";\n ERROR_CODES[\"PROCESSING_MODE_CONFLICT\"] = \"processing mode conflict\";\n ERROR_CODES[\"PROTECTED_TERM_REDEFINITION\"] = \"protected term redefinition\";\n ERROR_CODES[\"CONTEXT_OVERFLOW\"] = \"context overflow\";\n ERROR_CODES[\"INVALID_BASE_DIRECTION\"] = \"invalid base direction\";\n ERROR_CODES[\"RECURSIVE_CONTEXT_INCLUSION\"] = \"recursive context inclusion\";\n ERROR_CODES[\"INVALID_STREAMING_KEY_ORDER\"] = \"invalid streaming key order\";\n /**\n * JSON-LD-star\n */\n ERROR_CODES[\"INVALID_EMBEDDED_NODE\"] = \"invalid embedded node\";\n ERROR_CODES[\"INVALID_ANNOTATION\"] = \"invalid annotation\";\n})(ERROR_CODES = exports.ERROR_CODES || (exports.ERROR_CODES = {}));\n//# sourceMappingURL=ErrorCoded.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FetchDocumentLoader = void 0;\nrequire(\"cross-fetch/polyfill\");\nconst ErrorCoded_1 = require(\"./ErrorCoded\");\nconst http_link_header_1 = require(\"http-link-header\");\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\n/**\n * Loads documents via the fetch API.\n */\nclass FetchDocumentLoader {\n constructor(fetcher) {\n this.fetcher = fetcher;\n }\n async load(url) {\n const response = await (this.fetcher || fetch)(url, { headers: new Headers({ accept: 'application/ld+json' }) });\n if (response.ok && response.headers) {\n let mediaType = response.headers.get('Content-Type');\n if (mediaType) {\n const colonPos = mediaType.indexOf(';');\n if (colonPos > 0) {\n mediaType = mediaType.substr(0, colonPos);\n }\n }\n if (mediaType === 'application/ld+json') {\n // Return JSON-LD if proper content type was returned\n return (await response.json());\n }\n else {\n // Check for alternate link for a non-JSON-LD response\n if (response.headers.has('Link')) {\n let alternateUrl;\n response.headers.forEach((value, key) => {\n if (key === 'link') {\n const linkHeader = (0, http_link_header_1.parse)(value);\n for (const link of linkHeader.get('type', 'application/ld+json')) {\n if (link.rel === 'alternate') {\n if (alternateUrl) {\n throw new Error('Multiple JSON-LD alternate links were found on ' + url);\n }\n alternateUrl = (0, relative_to_absolute_iri_1.resolve)(link.uri, url);\n }\n }\n }\n });\n if (alternateUrl) {\n return this.load(alternateUrl);\n }\n }\n throw new ErrorCoded_1.ErrorCoded(`Unsupported JSON-LD media type ${mediaType}`, ErrorCoded_1.ERROR_CODES.LOADING_DOCUMENT_FAILED);\n }\n }\n else {\n throw new Error(response.statusText || `Status code: ${response.status}`);\n }\n }\n}\nexports.FetchDocumentLoader = FetchDocumentLoader;\n//# sourceMappingURL=FetchDocumentLoader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IDocumentLoader.js.map","\"use strict\";\n// tslint:disable:max-line-length\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=JsonLdContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultExpandOptions = exports.JsonLdContextNormalized = void 0;\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\nconst ErrorCoded_1 = require(\"./ErrorCoded\");\nconst Util_1 = require(\"./Util\");\n/**\n * A class exposing operations over a normalized JSON-LD context.\n */\nclass JsonLdContextNormalized {\n constructor(contextRaw) {\n this.contextRaw = contextRaw;\n }\n /**\n * @return The raw inner context.\n */\n getContextRaw() {\n return this.contextRaw;\n }\n /**\n * Expand the term or prefix of the given term if it has one,\n * otherwise return the term as-is.\n *\n * This will try to expand the IRI as much as possible.\n *\n * Iff in vocab-mode, then other references to other terms in the context can be used,\n * such as to `myTerm`:\n * ```\n * {\n * \"myTerm\": \"http://example.org/myLongTerm\"\n * }\n * ```\n *\n * @param {string} term A term that is an URL or a prefixed URL.\n * @param {boolean} expandVocab If the term is a predicate or type and should be expanded based on @vocab,\n * otherwise it is considered a regular term that is expanded based on @base.\n * @param {IExpandOptions} options Options that define the way how expansion must be done.\n * @return {string} The expanded term, the term as-is, or null if it was explicitly disabled in the context.\n * @throws If the term is aliased to an invalid value (not a string, IRI or keyword).\n */\n expandTerm(term, expandVocab, options = exports.defaultExpandOptions) {\n const contextValue = this.contextRaw[term];\n // Immediately return if the term was disabled in the context\n if (contextValue === null || (contextValue && contextValue['@id'] === null)) {\n return null;\n }\n // Check the @id\n let validIriMapping = true;\n if (contextValue && expandVocab) {\n const value = Util_1.Util.getContextValueId(contextValue);\n if (value && value !== term) {\n if (typeof value !== 'string' || (!Util_1.Util.isValidIri(value) && !Util_1.Util.isValidKeyword(value))) {\n // Don't mark this mapping as invalid if we have an unknown keyword, but of the correct form.\n if (!Util_1.Util.isPotentialKeyword(value)) {\n validIriMapping = false;\n }\n }\n else {\n return value;\n }\n }\n }\n // Check if the term is prefixed\n const prefix = Util_1.Util.getPrefix(term, this.contextRaw);\n const vocab = this.contextRaw['@vocab'];\n const vocabRelative = (!!vocab || vocab === '') && vocab.indexOf(':') < 0;\n const base = this.contextRaw['@base'];\n const potentialKeyword = Util_1.Util.isPotentialKeyword(term);\n if (prefix) {\n const contextPrefixValue = this.contextRaw[prefix];\n const value = Util_1.Util.getContextValueId(contextPrefixValue);\n if (value) {\n if (typeof contextPrefixValue === 'string' || !options.allowPrefixForcing) {\n // If we have a simple term definition,\n // check the last character of the prefix to determine whether or not it is a prefix.\n // Validate that prefix ends with gen-delim character, unless @prefix is true\n if (!Util_1.Util.isSimpleTermDefinitionPrefix(value, options)) {\n // Treat the term as an absolute IRI\n return term;\n }\n }\n else {\n // If we have an expanded term definition, default to @prefix: false\n if (value[0] !== '_' && !potentialKeyword && !contextPrefixValue['@prefix'] && !(term in this.contextRaw)) {\n // Treat the term as an absolute IRI\n return term;\n }\n }\n return value + term.substr(prefix.length + 1);\n }\n }\n else if (expandVocab && ((vocab || vocab === '') || (options.allowVocabRelativeToBase && (base && vocabRelative)))\n && !potentialKeyword && !Util_1.Util.isCompactIri(term)) {\n if (vocabRelative) {\n if (options.allowVocabRelativeToBase) {\n return ((vocab || base) ? (0, relative_to_absolute_iri_1.resolve)(vocab, base) : '') + term;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded(`Relative vocab expansion for term '${term}' with vocab '${vocab}' is not allowed.`, ErrorCoded_1.ERROR_CODES.INVALID_VOCAB_MAPPING);\n }\n }\n else {\n return vocab + term;\n }\n }\n else if (!expandVocab && base && !potentialKeyword && !Util_1.Util.isCompactIri(term)) {\n return (0, relative_to_absolute_iri_1.resolve)(term, base);\n }\n // Return the term as-is, unless we discovered an invalid IRI mapping for this term in the context earlier.\n if (validIriMapping) {\n return term;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded(`Invalid IRI mapping found for context entry '${term}': '${JSON.stringify(contextValue)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n }\n /**\n * Compact the given term using @base, @vocab, an aliased term, or a prefixed term.\n *\n * This will try to compact the IRI as much as possible.\n *\n * @param {string} iri An IRI to compact.\n * @param {boolean} vocab If the term is a predicate or type and should be compacted based on @vocab,\n * otherwise it is considered a regular term that is compacted based on @base.\n * @return {string} The compacted term or the IRI as-is.\n */\n compactIri(iri, vocab) {\n // Try @vocab compacting\n if (vocab && this.contextRaw['@vocab'] && iri.startsWith(this.contextRaw['@vocab'])) {\n return iri.substr(this.contextRaw['@vocab'].length);\n }\n // Try @base compacting\n if (!vocab && this.contextRaw['@base'] && iri.startsWith(this.contextRaw['@base'])) {\n return iri.substr(this.contextRaw['@base'].length);\n }\n // Loop over all terms in the context\n // This will try to prefix as short as possible.\n // Once a fully compacted alias is found, return immediately, as we can not go any shorter.\n const shortestPrefixing = { prefix: '', suffix: iri };\n for (const key in this.contextRaw) {\n const value = this.contextRaw[key];\n if (value && !Util_1.Util.isPotentialKeyword(key)) {\n const contextIri = Util_1.Util.getContextValueId(value);\n if (iri.startsWith(contextIri)) {\n const suffix = iri.substr(contextIri.length);\n if (!suffix) {\n if (vocab) {\n // Immediately return on compacted alias\n return key;\n }\n }\n else if (suffix.length < shortestPrefixing.suffix.length) {\n // Overwrite the shortest prefix\n shortestPrefixing.prefix = key;\n shortestPrefixing.suffix = suffix;\n }\n }\n }\n }\n // Return the shortest prefix\n if (shortestPrefixing.prefix) {\n return shortestPrefixing.prefix + ':' + shortestPrefixing.suffix;\n }\n return iri;\n }\n}\nexports.JsonLdContextNormalized = JsonLdContextNormalized;\nexports.defaultExpandOptions = {\n allowPrefixForcing: true,\n allowPrefixNonGenDelims: false,\n allowVocabRelativeToBase: true,\n};\n//# sourceMappingURL=JsonLdContextNormalized.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = void 0;\nclass Util {\n /**\n * Check if the given term is a valid compact IRI.\n * Otherwise, it may be an IRI.\n * @param {string} term A term.\n * @return {boolean} If it is a compact IRI.\n */\n static isCompactIri(term) {\n return term.indexOf(':') > 0 && !(term && term[0] === '#');\n }\n /**\n * Get the prefix from the given term.\n * @see https://json-ld.org/spec/latest/json-ld/#compact-iris\n * @param {string} term A term that is an URL or a prefixed URL.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @return {string} The prefix or null.\n */\n static getPrefix(term, context) {\n // Do not consider relative IRIs starting with a hash as compact IRIs\n if (term && term[0] === '#') {\n return null;\n }\n const separatorPos = term.indexOf(':');\n if (separatorPos >= 0) {\n // Suffix can not begin with two slashes\n if (term.length > separatorPos + 1\n && term.charAt(separatorPos + 1) === '/'\n && term.charAt(separatorPos + 2) === '/') {\n return null;\n }\n const prefix = term.substr(0, separatorPos);\n // Prefix can not be an underscore (this is a blank node)\n if (prefix === '_') {\n return null;\n }\n // Prefix must match a term in the active context\n if (context[prefix]) {\n return prefix;\n }\n }\n return null;\n }\n /**\n * From a given context entry value, get the string value, or the @id field.\n * @param contextValue A value for a term in a context.\n * @return {string} The id value, or null.\n */\n static getContextValueId(contextValue) {\n if (contextValue === null || typeof contextValue === 'string') {\n return contextValue;\n }\n const id = contextValue['@id'];\n return id ? id : null;\n }\n /**\n * Check if the given simple term definition (string-based value of a context term)\n * should be considered a prefix.\n * @param value A simple term definition value.\n * @param options Options that define the way how expansion must be done.\n */\n static isSimpleTermDefinitionPrefix(value, options) {\n return !Util.isPotentialKeyword(value)\n && (options.allowPrefixNonGenDelims || (typeof value === 'string' && (value[0] === '_' || Util.isPrefixIriEndingWithGenDelim(value))));\n }\n /**\n * Check if the given keyword is of the keyword format \"@\"1*ALPHA.\n * @param {string} keyword A potential keyword.\n * @return {boolean} If the given keyword is of the keyword format.\n */\n static isPotentialKeyword(keyword) {\n return typeof keyword === 'string' && Util.KEYWORD_REGEX.test(keyword);\n }\n /**\n * Check if the given prefix ends with a gen-delim character.\n * @param {string} prefixIri A prefix IRI.\n * @return {boolean} If the given prefix IRI is valid.\n */\n static isPrefixIriEndingWithGenDelim(prefixIri) {\n return Util.ENDS_WITH_GEN_DELIM.test(prefixIri);\n }\n /**\n * Check if the given context value can be a prefix value.\n * @param value A context value.\n * @return {boolean} If it can be a prefix value.\n */\n static isPrefixValue(value) {\n return value && (typeof value === 'string' || (value && typeof value === 'object'));\n }\n /**\n * Check if the given IRI is valid.\n * @param {string} iri A potential IRI.\n * @return {boolean} If the given IRI is valid.\n */\n static isValidIri(iri) {\n return Boolean(iri && Util.IRI_REGEX.test(iri));\n }\n /**\n * Check if the given IRI is valid, this includes the possibility of being a relative IRI.\n * @param {string} iri A potential IRI.\n * @return {boolean} If the given IRI is valid.\n */\n static isValidIriWeak(iri) {\n return !!iri && iri[0] !== ':' && Util.IRI_REGEX_WEAK.test(iri);\n }\n /**\n * Check if the given keyword is a defined according to the JSON-LD specification.\n * @param {string} keyword A potential keyword.\n * @return {boolean} If the given keyword is valid.\n */\n static isValidKeyword(keyword) {\n return Util.VALID_KEYWORDS[keyword];\n }\n /**\n * Check if the given term is protected in the context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {string} key A context term.\n * @return {boolean} If the given term has an @protected flag.\n */\n static isTermProtected(context, key) {\n const value = context[key];\n return !(typeof value === 'string') && value && value['@protected'];\n }\n /**\n * Check if the given context has at least one protected term.\n * @param context A context.\n * @return If the context has a protected term.\n */\n static hasProtectedTerms(context) {\n for (const key of Object.keys(context)) {\n if (Util.isTermProtected(context, key)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Check if the given key is an internal reserved keyword.\n * @param key A context key.\n */\n static isReservedInternalKeyword(key) {\n return key.startsWith('@__');\n }\n /**\n * Check if two objects are deepEqual to on another.\n * @param object1 The first object to test.\n * @param object2 The second object to test.\n */\n static deepEqual(object1, object2) {\n const objKeys1 = Object.keys(object1);\n const objKeys2 = Object.keys(object2);\n if (objKeys1.length !== objKeys2.length)\n return false;\n return objKeys1.every((key) => {\n const value1 = object1[key];\n const value2 = object2[key];\n return (value1 === value2) || (value1 !== null &&\n value2 !== null &&\n typeof value1 === \"object\" &&\n typeof value2 === \"object\" &&\n this.deepEqual(value1, value2));\n });\n }\n ;\n}\n// Regex for valid IRIs\nUtil.IRI_REGEX = /^([A-Za-z][A-Za-z0-9+-.]*|_):[^ \"<>{}|\\\\\\[\\]`#]*(#[^#]*)?$/;\n// Weaker regex for valid IRIs, this includes relative IRIs\nUtil.IRI_REGEX_WEAK = /(?::[^:])|\\//;\n// Regex for keyword form\nUtil.KEYWORD_REGEX = /^@[a-z]+$/i;\n// Regex to see if an IRI ends with a gen-delim character (see RFC 3986)\nUtil.ENDS_WITH_GEN_DELIM = /[:/?#\\[\\]@]$/;\n// Regex for language tags\nUtil.REGEX_LANGUAGE_TAG = /^[a-zA-Z]+(-[a-zA-Z0-9]+)*$/;\n// Regex for base directions\nUtil.REGEX_DIRECTION_TAG = /^(ltr)|(rtl)$/;\n// All known valid JSON-LD keywords\n// @see https://www.w3.org/TR/json-ld11/#keywords\nUtil.VALID_KEYWORDS = {\n '@annotation': true,\n '@base': true,\n '@container': true,\n '@context': true,\n '@direction': true,\n '@graph': true,\n '@id': true,\n '@import': true,\n '@included': true,\n '@index': true,\n '@json': true,\n '@language': true,\n '@list': true,\n '@nest': true,\n '@none': true,\n '@prefix': true,\n '@propagate': true,\n '@protected': true,\n '@reverse': true,\n '@set': true,\n '@type': true,\n '@value': true,\n '@version': true,\n '@vocab': true,\n};\n// Keys in the contexts that will not be expanded based on the base IRI\nUtil.EXPAND_KEYS_BLACKLIST = [\n '@base',\n '@vocab',\n '@language',\n '@version',\n '@direction',\n];\n// Keys in the contexts that may not be aliased from\nUtil.ALIAS_DOMAIN_BLACKLIST = [\n '@container',\n '@graph',\n '@id',\n '@index',\n '@list',\n '@nest',\n '@none',\n '@prefix',\n '@reverse',\n '@set',\n '@type',\n '@value',\n '@version',\n];\n// Keys in the contexts that may not be aliased to\nUtil.ALIAS_RANGE_BLACKLIST = [\n '@context',\n '@preserve',\n];\n// All valid @container values\nUtil.CONTAINERS = [\n '@list',\n '@set',\n '@index',\n '@language',\n '@graph',\n '@id',\n '@type',\n];\n// All valid @container values under processing mode 1.0\nUtil.CONTAINERS_1_0 = [\n '@list',\n '@set',\n '@index',\n];\nexports.Util = Util;\n//# sourceMappingURL=Util.js.map","(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(typeof self !== 'undefined' ? self : this);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/JsonLdSerializer\"), exports);\n__exportStar(require(\"./lib/Util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonLdSerializer = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst SeparatorType_1 = require(\"./SeparatorType\");\nconst Util_1 = require(\"./Util\");\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * A stream transformer that transforms an {@link RDF.Stream} into a JSON-LD (text) stream.\n */\nclass JsonLdSerializer extends readable_stream_1.Transform {\n constructor(options = {}) {\n super({ objectMode: true });\n this.indentation = 0;\n this.options = options;\n // Parse the context\n if (this.options.baseIRI && !this.options.context) {\n this.options.context = { '@base': this.options.baseIRI };\n }\n if (this.options.context) {\n this.originalContext = this.options.context;\n this.context = new jsonld_context_parser_1.ContextParser().parse(this.options.context, { baseIRI: this.options.baseIRI });\n }\n else {\n this.context = Promise.resolve(new jsonld_context_parser_1.JsonLdContextNormalized({}));\n }\n }\n /**\n * Parses the given text stream into a quad stream.\n * @param {NodeJS.EventEmitter} stream A text stream.\n * @return {NodeJS.EventEmitter} A quad stream.\n */\n import(stream) {\n const output = new readable_stream_1.PassThrough({ objectMode: true });\n stream.on('error', (error) => parsed.emit('error', error));\n stream.on('data', (data) => output.push(data));\n stream.on('end', () => output.push(null));\n const parsed = output.pipe(new JsonLdSerializer(this.options));\n return parsed;\n }\n /**\n * Transforms a quad into the text stream.\n * @param {Quad} quad An RDF quad.\n * @param {string} encoding An (ignored) encoding.\n * @param {module:stream.internal.TransformCallback} callback Callback that is invoked when the transformation is done\n * @private\n */\n _transform(quad, encoding, callback) {\n this.context.then((context) => {\n this.transformQuad(quad, context);\n callback();\n }).catch(callback);\n }\n /**\n * Construct a list in an RDF.Term object that can be used\n * inside a quad's object to write into the serializer\n * as a list using the @list keyword.\n * @param {RDF.Quad_Object[]} values A list of values, can be empty.\n * @return {RDF.Quad_Object} A term that should be used in the object position of the quad that is written to the serializer.\n */\n async list(values) {\n const context = await this.context;\n return {\n '@list': values.map((value) => Util_1.Util.termToValue(value, context, this.options)),\n };\n }\n /**\n * Called when the incoming stream is closed.\n * @param {module:stream.internal.TransformCallback} callback Callback that is invoked when the flushing is done.\n * @private\n */\n _flush(callback) {\n // If the stream was empty, ensure that we push the opening array\n if (!this.opened) {\n this.pushDocumentStart();\n }\n if (this.lastPredicate) {\n this.endPredicate();\n }\n if (this.lastSubject) {\n this.endSubject();\n }\n if (this.lastGraph && this.lastGraph.termType !== 'DefaultGraph') {\n this.endGraph();\n }\n this.endDocument();\n return callback(null, null);\n }\n /**\n * Transforms a quad into the text stream.\n * @param {Quad} quad An RDF quad.\n * @param {JsonLdContextNormalized} context A context for compacting.\n */\n transformQuad(quad, context) {\n // Open the array before the first quad\n if (!this.opened) {\n this.pushDocumentStart();\n }\n // Check if the subject equals the last named graph\n // In that case, we can reuse the already-existing @id node\n const lastGraphMatchesSubject = this.lastGraph && this.lastGraph.termType !== 'DefaultGraph'\n && this.lastGraph.equals(quad.subject);\n // Write graph\n if (!lastGraphMatchesSubject && (!this.lastGraph || !quad.graph.equals(this.lastGraph))) {\n // Check if the named graph equals the last subject\n // In that case, we can reuse the already-existing @id node\n let lastSubjectMatchesGraph = quad.graph.termType !== 'DefaultGraph'\n && this.lastSubject && this.lastSubject.equals(quad.graph);\n if (this.lastGraph) {\n if (this.lastGraph.termType !== 'DefaultGraph') {\n // The last graph was named\n this.endPredicate();\n this.endSubject();\n this.endGraph(true);\n lastSubjectMatchesGraph = false; // Special-case to avoid deeper nesting\n }\n else {\n // The last graph was default\n if (!lastSubjectMatchesGraph) {\n this.endPredicate();\n this.endSubject(true);\n }\n else {\n this.endPredicate(true);\n this.lastSubject = null;\n }\n }\n }\n // Push the graph\n if (quad.graph.termType !== 'DefaultGraph') {\n if (!lastSubjectMatchesGraph) {\n this.pushId(quad.graph, true, context);\n }\n this.pushSeparator(this.options.space\n ? SeparatorType_1.SeparatorType.GRAPH_FIELD_NONCOMPACT : SeparatorType_1.SeparatorType.GRAPH_FIELD_COMPACT);\n this.indentation++;\n }\n this.lastGraph = quad.graph;\n }\n // Write subject\n if (!this.lastSubject || !quad.subject.equals(this.lastSubject)) {\n if (lastGraphMatchesSubject) {\n this.endPredicate();\n this.endSubject();\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END_COMMA);\n this.lastGraph = quad.graph;\n }\n else {\n if (this.lastSubject) {\n this.endPredicate();\n this.endSubject(true);\n }\n // Open a new node for the new subject\n this.pushId(quad.subject, true, context);\n }\n this.lastSubject = quad.subject;\n }\n // Write predicate\n if (!this.lastPredicate || !quad.predicate.equals(this.lastPredicate)) {\n if (this.lastPredicate) {\n this.endPredicate(true);\n }\n // Open a new array for the new predicate\n this.pushPredicate(quad.predicate, context);\n }\n // Write the object value\n this.pushObject(quad.object, context);\n }\n pushDocumentStart() {\n this.opened = true;\n if (this.originalContext && !this.options.excludeContext) {\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_START);\n this.indentation++;\n this.pushSeparator(SeparatorType_1.SeparatorType.CONTEXT_FIELD);\n this.pushIndented(JSON.stringify(this.originalContext, null, this.options.space) + ',');\n this.pushSeparator(this.options.space\n ? SeparatorType_1.SeparatorType.GRAPH_FIELD_NONCOMPACT : SeparatorType_1.SeparatorType.GRAPH_FIELD_COMPACT);\n this.indentation++;\n }\n else {\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_START);\n this.indentation++;\n }\n }\n /**\n * Push the given term as an @id field.\n * @param {Term} term An RDF term.\n * @param startOnNewLine If `{` should start on a new line\n * @param {JsonLdContextNormalized} context The context.\n */\n pushId(term, startOnNewLine, context) {\n if (term.termType === 'Quad') {\n this.pushNestedQuad(term, true, context);\n }\n else {\n const subjectValue = term.termType === 'BlankNode'\n ? '_:' + term.value : context.compactIri(term.value, false);\n if (startOnNewLine) {\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_START);\n }\n else {\n this.push(SeparatorType_1.SeparatorType.OBJECT_START.label);\n if (this.options.space) {\n this.push('\\n');\n }\n }\n this.indentation++;\n this.pushIndented(this.options.space ? `\"@id\": \"${subjectValue}\",` : `\"@id\":\"${subjectValue}\",`);\n }\n }\n /**\n * Push the given predicate field.\n * @param {Term} predicate An RDF term.\n * @param {JsonLdContextNormalized} context The context.\n */\n pushPredicate(predicate, context) {\n let property = predicate.value;\n // Convert rdf:type into @type if not disabled.\n if (!this.options.useRdfType && property === Util_1.Util.RDF_TYPE) {\n property = '@type';\n this.objectOptions = Object.assign(Object.assign({}, this.options), { compactIds: true, vocab: true });\n }\n // Open array for following objects\n const compactedProperty = context.compactIri(property, true);\n this.pushIndented(this.options.space ? `\"${compactedProperty}\": [` : `\"${compactedProperty}\":[`);\n this.indentation++;\n this.lastPredicate = predicate;\n }\n /**\n * Push the given object value.\n * @param {Term} object An RDF term.\n * @param {JsonLdContextNormalized} context The context.\n */\n pushObject(object, context) {\n // Add a comma if we already had an object for this predicate\n if (!this.hadObjectForPredicate) {\n this.hadObjectForPredicate = true;\n }\n else {\n this.pushSeparator(SeparatorType_1.SeparatorType.COMMA);\n }\n // Handle nested quad\n if (object.termType === 'Quad') {\n const lastLastSubject = this.lastSubject;\n const lastLastPredicate = this.lastPredicate;\n this.hadObjectForPredicate = false;\n this.pushNestedQuad(object, false, context);\n this.endSubject(false); // Terminate identifier node of nested quad again, since we won't attach additional information to it.\n this.hadObjectForPredicate = true;\n this.lastPredicate = lastLastPredicate;\n this.lastSubject = lastLastSubject;\n return;\n }\n // Convert the object into a value and push it\n let value;\n try {\n if (object['@list']) {\n value = object;\n }\n else {\n value = Util_1.Util.termToValue(object, context, this.objectOptions || this.options);\n }\n }\n catch (e) {\n return this.emit('error', e);\n }\n this.pushIndented(JSON.stringify(value, null, this.options.space));\n }\n pushNestedQuad(nestedQuad, commaAfterSubject, context) {\n // Start a nested quad\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_START);\n this.indentation++;\n this.pushIndented(this.options.space ? `\"@id\": ` : `\"@id\":`, false);\n // Print the nested quad\n if (nestedQuad.graph.termType !== 'DefaultGraph') {\n this.emit('error', new Error(`Found a nested quad with the non-default graph: ${nestedQuad.graph.value}`));\n }\n this.pushId(nestedQuad.subject, false, context);\n this.pushPredicate(nestedQuad.predicate, context);\n this.pushObject(nestedQuad.object, context);\n this.endPredicate(false);\n this.endSubject(commaAfterSubject);\n }\n endDocument() {\n this.opened = false;\n if (this.originalContext && !this.options.excludeContext) {\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END);\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_END);\n }\n else {\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END);\n }\n }\n /**\n * Push the end of a predicate and reset the buffers.\n * @param {boolean} comma If a comma should be appended.\n */\n endPredicate(comma) {\n // Close the predicate array\n this.indentation--;\n this.pushSeparator(comma ? SeparatorType_1.SeparatorType.ARRAY_END_COMMA : SeparatorType_1.SeparatorType.ARRAY_END);\n // Reset object buffer\n this.hadObjectForPredicate = false;\n this.objectOptions = null;\n // Reset predicate buffer\n this.lastPredicate = null;\n }\n /**\n * Push the end of a subject and reset the buffers.\n * @param {boolean} comma If a comma should be appended.\n */\n endSubject(comma) {\n // Close the last subject's node;\n this.indentation--;\n this.pushSeparator(comma ? SeparatorType_1.SeparatorType.OBJECT_END_COMMA : SeparatorType_1.SeparatorType.OBJECT_END);\n // Reset subject buffer\n this.lastSubject = null;\n }\n /**\n * Push the end of a graph and reset the buffers.\n * @param {boolean} comma If a comma should be appended.\n */\n endGraph(comma) {\n // Close the graph array\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END);\n // Close the graph id node\n this.indentation--;\n this.pushSeparator(comma ? SeparatorType_1.SeparatorType.OBJECT_END_COMMA : SeparatorType_1.SeparatorType.OBJECT_END);\n // Reset graph buffer\n this.lastGraph = null;\n }\n /**\n * Puh the given separator.\n * @param {SeparatorType} type A type of separator.\n */\n pushSeparator(type) {\n this.pushIndented(type.label);\n }\n /**\n * An indentation-aware variant of {@link #push}.\n * All strings that are pushed here will be prefixed by {@link #indentation} amount of spaces.\n * @param {string} data A string.\n * @param pushNewLine If a newline should be pushed afterwards.\n */\n pushIndented(data, pushNewLine = true) {\n const prefix = this.getIndentPrefix();\n const lines = data.split('\\n').map((line) => prefix + line).join('\\n');\n this.push(lines);\n if (this.options.space && pushNewLine) {\n this.push('\\n');\n }\n }\n /**\n * @return {string} Get the current indentation prefix based on {@link #indentation}.\n */\n getIndentPrefix() {\n return this.options.space ? this.options.space.repeat(this.indentation) : '';\n }\n}\nexports.JsonLdSerializer = JsonLdSerializer;\n//# sourceMappingURL=JsonLdSerializer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SeparatorType = void 0;\n/**\n * A type of JSON separator.\n */\nclass SeparatorType {\n constructor(label) {\n this.label = label;\n }\n}\nexports.SeparatorType = SeparatorType;\nSeparatorType.COMMA = new SeparatorType(',');\nSeparatorType.OBJECT_START = new SeparatorType('{');\nSeparatorType.OBJECT_END = new SeparatorType('}');\nSeparatorType.OBJECT_END_COMMA = new SeparatorType('},');\nSeparatorType.ARRAY_START = new SeparatorType('[');\nSeparatorType.ARRAY_END = new SeparatorType(']');\nSeparatorType.ARRAY_END_COMMA = new SeparatorType('],');\nSeparatorType.GRAPH_FIELD_NONCOMPACT = new SeparatorType('\"@graph\": [');\nSeparatorType.GRAPH_FIELD_COMPACT = new SeparatorType('\"@graph\":[');\nSeparatorType.CONTEXT_FIELD = new SeparatorType('\"@context\":');\n//# sourceMappingURL=SeparatorType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\n/**\n * Utility functions and methods.\n */\nclass Util {\n /**\n * Convert an RDF term to a JSON value.\n * @param {Term} term An RDF term.\n * @param {JsonLdContextNormalized} context The context.\n * @param {ITermToValueOptions} options Conversion options.\n * @return {any} A JSON value.\n */\n static termToValue(term, context, options = {\n compactIds: false,\n useNativeTypes: false,\n }) {\n switch (term.termType) {\n case 'NamedNode':\n const compacted = context.compactIri(term.value, options.vocab);\n return options.compactIds ? compacted : { '@id': compacted };\n case 'DefaultGraph':\n return options.compactIds ? term.value : { '@id': term.value };\n case 'BlankNode':\n const id = `_:${term.value}`;\n return options.compactIds ? id : { '@id': id };\n case 'Literal':\n // Handle JSON datatype\n if (term.datatype.value === Util.RDF_JSON) {\n let parsedJson;\n try {\n parsedJson = JSON.parse(term.value);\n }\n catch (e) {\n throw new jsonld_context_parser_1.ErrorCoded('Invalid JSON literal: ' + e.message, jsonld_context_parser_1.ERROR_CODES.INVALID_JSON_LITERAL);\n }\n return {\n '@value': parsedJson,\n '@type': '@json',\n };\n }\n // Handle rdfDirection: i18n-datatype\n if (options.rdfDirection === 'i18n-datatype' && term.datatype.value.startsWith(Util.I18N)) {\n const [language, direction] = term.datatype.value\n .substr(Util.I18N.length, term.datatype.value.length)\n .split('_');\n return Object.assign(Object.assign({ '@value': term.value }, language ? { '@language': language } : {}), direction ? { '@direction': direction } : {});\n }\n const stringType = term.datatype.value === Util.XSD_STRING;\n const rawValue = {\n '@value': !stringType && options.useNativeTypes\n ? Util.stringToNativeType(term.value, term.datatype.value) : term.value,\n };\n if (term.language) {\n return Object.assign(Object.assign({}, rawValue), { '@language': term.language });\n }\n else if (!stringType && typeof rawValue['@value'] === 'string') {\n return Object.assign(Object.assign({}, rawValue), { '@type': term.datatype.value });\n }\n else {\n return rawValue;\n }\n }\n }\n /**\n * Convert a string term to a native type.\n * If no conversion is possible, the original string will be returned.\n * @param {string} value An RDF term's string value.\n * @param {string} type\n * @return {any}\n */\n static stringToNativeType(value, type) {\n if (type.startsWith(Util.XSD)) {\n const xsdType = type.substr(Util.XSD.length);\n switch (xsdType) {\n case 'boolean':\n if (value === 'true') {\n return true;\n }\n else if (value === 'false') {\n return false;\n }\n throw new Error(`Invalid xsd:boolean value '${value}'`);\n case 'integer':\n case 'number':\n case 'int':\n case 'byte':\n case 'long':\n const parsedInt = parseInt(value, 10);\n if (isNaN(parsedInt)) {\n throw new Error(`Invalid xsd:integer value '${value}'`);\n }\n return parsedInt;\n case 'float':\n case 'double':\n const parsedFloat = parseFloat(value);\n if (isNaN(parsedFloat)) {\n throw new Error(`Invalid xsd:float value '${value}'`);\n }\n return parsedFloat;\n }\n }\n return value;\n }\n}\nexports.Util = Util;\nUtil.XSD = 'http://www.w3.org/2001/XMLSchema#';\nUtil.XSD_STRING = Util.XSD + 'string';\nUtil.RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';\nUtil.RDF_TYPE = Util.RDF + 'type';\nUtil.RDF_JSON = Util.RDF + 'JSON';\nUtil.I18N = 'https://www.w3.org/ns/i18n#';\n//# sourceMappingURL=Util.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","const RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n XSD = 'http://www.w3.org/2001/XMLSchema#',\n SWAP = 'http://www.w3.org/2000/10/swap/';\n\nexport default {\n xsd: {\n decimal: `${XSD}decimal`,\n boolean: `${XSD}boolean`,\n double: `${XSD}double`,\n integer: `${XSD}integer`,\n string: `${XSD}string`,\n },\n rdf: {\n type: `${RDF}type`,\n nil: `${RDF}nil`,\n first: `${RDF}first`,\n rest: `${RDF}rest`,\n langString: `${RDF}langString`,\n },\n owl: {\n sameAs: 'http://www.w3.org/2002/07/owl#sameAs',\n },\n r: {\n forSome: `${SWAP}reify#forSome`,\n forAll: `${SWAP}reify#forAll`,\n },\n log: {\n implies: `${SWAP}log#implies`,\n },\n};\n","// **N3Lexer** tokenizes N3 documents.\nimport queueMicrotask from 'queue-microtask';\nimport namespaces from './IRIs';\n\nconst { xsd } = namespaces;\n\n// Regular expression and replacement string to escape N3 strings\nconst escapeSequence = /\\\\u([a-fA-F0-9]{4})|\\\\U([a-fA-F0-9]{8})|\\\\([^])/g;\nconst escapeReplacements = {\n '\\\\': '\\\\', \"'\": \"'\", '\"': '\"',\n 'n': '\\n', 'r': '\\r', 't': '\\t', 'f': '\\f', 'b': '\\b',\n '_': '_', '~': '~', '.': '.', '-': '-', '!': '!', '$': '$', '&': '&',\n '(': '(', ')': ')', '*': '*', '+': '+', ',': ',', ';': ';', '=': '=',\n '/': '/', '?': '?', '#': '#', '@': '@', '%': '%',\n};\nconst illegalIriChars = /[\\x00-\\x20<>\\\\\"\\{\\}\\|\\^\\`]/;\n\nconst lineModeRegExps = {\n _iri: true,\n _unescapedIri: true,\n _simpleQuotedString: true,\n _langcode: true,\n _blank: true,\n _newline: true,\n _comment: true,\n _whitespace: true,\n _endOfFile: true,\n};\nconst invalidRegExp = /$0^/;\n\n// ## Constructor\nexport default class N3Lexer {\n constructor(options) {\n // ## Regular expressions\n // It's slightly faster to have these as properties than as in-scope variables\n this._iri = /^<((?:[^ <>{}\\\\]|\\\\[uU])+)>[ \\t]*/; // IRI with escape sequences; needs sanity check after unescaping\n this._unescapedIri = /^<([^\\x00-\\x20<>\\\\\"\\{\\}\\|\\^\\`]*)>[ \\t]*/; // IRI without escape sequences; no unescaping\n this._simpleQuotedString = /^\"([^\"\\\\\\r\\n]*)\"(?=[^\"])/; // string without escape sequences\n this._simpleApostropheString = /^'([^'\\\\\\r\\n]*)'(?=[^'])/;\n this._langcode = /^@([a-z]+(?:-[a-z0-9]+)*)(?=[^a-z0-9\\-])/i;\n this._prefix = /^((?:[A-Za-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)?:(?=[#\\s<])/;\n this._prefixed = /^((?:[A-Za-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)?:((?:(?:[0-:A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~])(?:(?:[\\.\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~])*(?:[\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~]))?)?)(?:[ \\t]+|(?=\\.?[,;!\\^\\s#()\\[\\]\\{\\}\"'<>]))/;\n this._variable = /^\\?(?:(?:[A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:[\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)(?=[.,;!\\^\\s#()\\[\\]\\{\\}\"'<>])/;\n this._blank = /^_:((?:[0-9A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)(?:[ \\t]+|(?=\\.?[,;:\\s#()\\[\\]\\{\\}\"'<>]))/;\n this._number = /^[\\-+]?(?:(\\d+\\.\\d*|\\.?\\d+)[eE][\\-+]?|\\d*(\\.)?)\\d+(?=\\.?[,;:\\s#()\\[\\]\\{\\}\"'<>])/;\n this._boolean = /^(?:true|false)(?=[.,;\\s#()\\[\\]\\{\\}\"'<>])/;\n this._keyword = /^@[a-z]+(?=[\\s#<:])/i;\n this._sparqlKeyword = /^(?:PREFIX|BASE|GRAPH)(?=[\\s#<])/i;\n this._shortPredicates = /^a(?=[\\s#()\\[\\]\\{\\}\"'<>])/;\n this._newline = /^[ \\t]*(?:#[^\\n\\r]*)?(?:\\r\\n|\\n|\\r)[ \\t]*/;\n this._comment = /#([^\\n\\r]*)/;\n this._whitespace = /^[ \\t]+/;\n this._endOfFile = /^(?:#[^\\n\\r]*)?$/;\n options = options || {};\n\n // In line mode (N-Triples or N-Quads), only simple features may be parsed\n if (this._lineMode = !!options.lineMode) {\n this._n3Mode = false;\n // Don't tokenize special literals\n for (const key in this) {\n if (!(key in lineModeRegExps) && this[key] instanceof RegExp)\n this[key] = invalidRegExp;\n }\n }\n // When not in line mode, enable N3 functionality by default\n else {\n this._n3Mode = options.n3 !== false;\n }\n // Don't output comment tokens by default\n this._comments = !!options.comments;\n // Cache the last tested closing position of long literals\n this._literalClosingPos = 0;\n }\n\n // ## Private methods\n\n // ### `_tokenizeToEnd` tokenizes as for as possible, emitting tokens through the callback\n _tokenizeToEnd(callback, inputFinished) {\n // Continue parsing as far as possible; the loop will return eventually\n let input = this._input;\n let currentLineLength = input.length;\n while (true) {\n // Count and skip whitespace lines\n let whiteSpaceMatch, comment;\n while (whiteSpaceMatch = this._newline.exec(input)) {\n // Try to find a comment\n if (this._comments && (comment = this._comment.exec(whiteSpaceMatch[0])))\n emitToken('comment', comment[1], '', this._line, whiteSpaceMatch[0].length);\n // Advance the input\n input = input.substr(whiteSpaceMatch[0].length, input.length);\n currentLineLength = input.length;\n this._line++;\n }\n // Skip whitespace on current line\n if (!whiteSpaceMatch && (whiteSpaceMatch = this._whitespace.exec(input)))\n input = input.substr(whiteSpaceMatch[0].length, input.length);\n\n // Stop for now if we're at the end\n if (this._endOfFile.test(input)) {\n // If the input is finished, emit EOF\n if (inputFinished) {\n // Try to find a final comment\n if (this._comments && (comment = this._comment.exec(input)))\n emitToken('comment', comment[1], '', this._line, input.length);\n input = null;\n emitToken('eof', '', '', this._line, 0);\n }\n return this._input = input;\n }\n\n // Look for specific token types based on the first character\n const line = this._line, firstChar = input[0];\n let type = '', value = '', prefix = '',\n match = null, matchLength = 0, inconclusive = false;\n switch (firstChar) {\n case '^':\n // We need at least 3 tokens lookahead to distinguish ^^ and ^^pre:fixed\n if (input.length < 3)\n break;\n // Try to match a type\n else if (input[1] === '^') {\n this._previousMarker = '^^';\n // Move to type IRI or prefixed name\n input = input.substr(2);\n if (input[0] !== '<') {\n inconclusive = true;\n break;\n }\n }\n // If no type, it must be a path expression\n else {\n if (this._n3Mode) {\n matchLength = 1;\n type = '^';\n }\n break;\n }\n // Fall through in case the type is an IRI\n case '<':\n // Try to find a full IRI without escape sequences\n if (match = this._unescapedIri.exec(input))\n type = 'IRI', value = match[1];\n // Try to find a full IRI with escape sequences\n else if (match = this._iri.exec(input)) {\n value = this._unescape(match[1]);\n if (value === null || illegalIriChars.test(value))\n return reportSyntaxError(this);\n type = 'IRI';\n }\n // Try to find a nested triple\n else if (input.length > 1 && input[1] === '<')\n type = '<<', matchLength = 2;\n // Try to find a backwards implication arrow\n else if (this._n3Mode && input.length > 1 && input[1] === '=')\n type = 'inverse', matchLength = 2, value = '>';\n break;\n\n case '>':\n if (input.length > 1 && input[1] === '>')\n type = '>>', matchLength = 2;\n break;\n\n case '_':\n // Try to find a blank node. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a blank node.\n // Therefore, try inserting a space if we're at the end of the input.\n if ((match = this._blank.exec(input)) ||\n inputFinished && (match = this._blank.exec(`${input} `)))\n type = 'blank', prefix = '_', value = match[1];\n break;\n\n case '\"':\n // Try to find a literal without escape sequences\n if (match = this._simpleQuotedString.exec(input))\n value = match[1];\n // Try to find a literal wrapped in three pairs of quotes\n else {\n ({ value, matchLength } = this._parseLiteral(input));\n if (value === null)\n return reportSyntaxError(this);\n }\n if (match !== null || matchLength !== 0) {\n type = 'literal';\n this._literalClosingPos = 0;\n }\n break;\n\n case \"'\":\n if (!this._lineMode) {\n // Try to find a literal without escape sequences\n if (match = this._simpleApostropheString.exec(input))\n value = match[1];\n // Try to find a literal wrapped in three pairs of quotes\n else {\n ({ value, matchLength } = this._parseLiteral(input));\n if (value === null)\n return reportSyntaxError(this);\n }\n if (match !== null || matchLength !== 0) {\n type = 'literal';\n this._literalClosingPos = 0;\n }\n }\n break;\n\n case '?':\n // Try to find a variable\n if (this._n3Mode && (match = this._variable.exec(input)))\n type = 'var', value = match[0];\n break;\n\n case '@':\n // Try to find a language code\n if (this._previousMarker === 'literal' && (match = this._langcode.exec(input)))\n type = 'langcode', value = match[1];\n // Try to find a keyword\n else if (match = this._keyword.exec(input))\n type = match[0];\n break;\n\n case '.':\n // Try to find a dot as punctuation\n if (input.length === 1 ? inputFinished : (input[1] < '0' || input[1] > '9')) {\n type = '.';\n matchLength = 1;\n break;\n }\n // Fall through to numerical case (could be a decimal dot)\n\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n case '+':\n case '-':\n // Try to find a number. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a number.\n // Therefore, try inserting a space if we're at the end of the input.\n if (match = this._number.exec(input) ||\n inputFinished && (match = this._number.exec(`${input} `))) {\n type = 'literal', value = match[0];\n prefix = (typeof match[1] === 'string' ? xsd.double :\n (typeof match[2] === 'string' ? xsd.decimal : xsd.integer));\n }\n break;\n\n case 'B':\n case 'b':\n case 'p':\n case 'P':\n case 'G':\n case 'g':\n // Try to find a SPARQL-style keyword\n if (match = this._sparqlKeyword.exec(input))\n type = match[0].toUpperCase();\n else\n inconclusive = true;\n break;\n\n case 'f':\n case 't':\n // Try to match a boolean\n if (match = this._boolean.exec(input))\n type = 'literal', value = match[0], prefix = xsd.boolean;\n else\n inconclusive = true;\n break;\n\n case 'a':\n // Try to find an abbreviated predicate\n if (match = this._shortPredicates.exec(input))\n type = 'abbreviation', value = 'a';\n else\n inconclusive = true;\n break;\n\n case '=':\n // Try to find an implication arrow or equals sign\n if (this._n3Mode && input.length > 1) {\n type = 'abbreviation';\n if (input[1] !== '>')\n matchLength = 1, value = '=';\n else\n matchLength = 2, value = '>';\n }\n break;\n\n case '!':\n if (!this._n3Mode)\n break;\n case ',':\n case ';':\n case '[':\n case ']':\n case '(':\n case ')':\n case '}':\n if (!this._lineMode) {\n matchLength = 1;\n type = firstChar;\n }\n break;\n case '{':\n // We need at least 2 tokens lookahead to distinguish \"{|\" and \"{ \"\n if (!this._lineMode && input.length >= 2) {\n // Try to find a quoted triple annotation start\n if (input[1] === '|')\n type = '{|', matchLength = 2;\n else\n type = firstChar, matchLength = 1;\n }\n break;\n case '|':\n // We need 2 tokens lookahead to parse \"|}\"\n // Try to find a quoted triple annotation end\n if (input.length >= 2 && input[1] === '}')\n type = '|}', matchLength = 2;\n break;\n\n default:\n inconclusive = true;\n }\n\n // Some first characters do not allow an immediate decision, so inspect more\n if (inconclusive) {\n // Try to find a prefix\n if ((this._previousMarker === '@prefix' || this._previousMarker === 'PREFIX') &&\n (match = this._prefix.exec(input)))\n type = 'prefix', value = match[1] || '';\n // Try to find a prefixed name. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a prefixed name.\n // Therefore, try inserting a space if we're at the end of the input.\n else if ((match = this._prefixed.exec(input)) ||\n inputFinished && (match = this._prefixed.exec(`${input} `)))\n type = 'prefixed', prefix = match[1] || '', value = this._unescape(match[2]);\n }\n\n // A type token is special: it can only be emitted after an IRI or prefixed name is read\n if (this._previousMarker === '^^') {\n switch (type) {\n case 'prefixed': type = 'type'; break;\n case 'IRI': type = 'typeIRI'; break;\n default: type = '';\n }\n }\n\n // What if nothing of the above was found?\n if (!type) {\n // We could be in streaming mode, and then we just wait for more input to arrive.\n // Otherwise, a syntax error has occurred in the input.\n // One exception: error on an unaccounted linebreak (= not inside a triple-quoted literal).\n if (inputFinished || (!/^'''|^\"\"\"/.test(input) && /\\n|\\r/.test(input)))\n return reportSyntaxError(this);\n else\n return this._input = input;\n }\n\n // Emit the parsed token\n const length = matchLength || match[0].length;\n const token = emitToken(type, value, prefix, line, length);\n this.previousToken = token;\n this._previousMarker = type;\n\n // Advance to next part to tokenize\n input = input.substr(length, input.length);\n }\n\n // Emits the token through the callback\n function emitToken(type, value, prefix, line, length) {\n const start = input ? currentLineLength - input.length : currentLineLength;\n const end = start + length;\n const token = { type, value, prefix, line, start, end };\n callback(null, token);\n return token;\n }\n // Signals the syntax error through the callback\n function reportSyntaxError(self) { callback(self._syntaxError(/^\\S*/.exec(input)[0])); }\n }\n\n // ### `_unescape` replaces N3 escape codes by their corresponding characters\n _unescape(item) {\n let invalid = false;\n const replaced = item.replace(escapeSequence, (sequence, unicode4, unicode8, escapedChar) => {\n // 4-digit unicode character\n if (typeof unicode4 === 'string')\n return String.fromCharCode(Number.parseInt(unicode4, 16));\n // 8-digit unicode character\n if (typeof unicode8 === 'string') {\n let charCode = Number.parseInt(unicode8, 16);\n return charCode <= 0xFFFF ? String.fromCharCode(Number.parseInt(unicode8, 16)) :\n String.fromCharCode(0xD800 + ((charCode -= 0x10000) >> 10), 0xDC00 + (charCode & 0x3FF));\n }\n // fixed escape sequence\n if (escapedChar in escapeReplacements)\n return escapeReplacements[escapedChar];\n // invalid escape sequence\n invalid = true;\n return '';\n });\n return invalid ? null : replaced;\n }\n\n // ### `_parseLiteral` parses a literal into an unescaped value\n _parseLiteral(input) {\n // Ensure we have enough lookahead to identify triple-quoted strings\n if (input.length >= 3) {\n // Identify the opening quote(s)\n const opening = input.match(/^(?:\"\"\"|\"|'''|'|)/)[0];\n const openingLength = opening.length;\n\n // Find the next candidate closing quotes\n let closingPos = Math.max(this._literalClosingPos, openingLength);\n while ((closingPos = input.indexOf(opening, closingPos)) > 0) {\n // Count backslashes right before the closing quotes\n let backslashCount = 0;\n while (input[closingPos - backslashCount - 1] === '\\\\')\n backslashCount++;\n\n // An even number of backslashes (in particular 0)\n // means these are actual, non-escaped closing quotes\n if (backslashCount % 2 === 0) {\n // Extract and unescape the value\n const raw = input.substring(openingLength, closingPos);\n const lines = raw.split(/\\r\\n|\\r|\\n/).length - 1;\n const matchLength = closingPos + openingLength;\n // Only triple-quoted strings can be multi-line\n if (openingLength === 1 && lines !== 0 ||\n openingLength === 3 && this._lineMode)\n break;\n this._line += lines;\n return { value: this._unescape(raw), matchLength };\n }\n closingPos++;\n }\n this._literalClosingPos = input.length - openingLength + 1;\n }\n return { value: '', matchLength: 0 };\n }\n\n // ### `_syntaxError` creates a syntax error for the given issue\n _syntaxError(issue) {\n this._input = null;\n const err = new Error(`Unexpected \"${issue}\" on line ${this._line}.`);\n err.context = {\n token: undefined,\n line: this._line,\n previousToken: this.previousToken,\n };\n return err;\n }\n\n // ### Strips off any starting UTF BOM mark.\n _readStartingBom(input) {\n return input.startsWith('\\ufeff') ? input.substr(1) : input;\n }\n\n // ## Public methods\n\n // ### `tokenize` starts the transformation of an N3 document into an array of tokens.\n // The input can be a string or a stream.\n tokenize(input, callback) {\n this._line = 1;\n\n // If the input is a string, continuously emit tokens through the callback until the end\n if (typeof input === 'string') {\n this._input = this._readStartingBom(input);\n // If a callback was passed, asynchronously call it\n if (typeof callback === 'function')\n queueMicrotask(() => this._tokenizeToEnd(callback, true));\n // If no callback was passed, tokenize synchronously and return\n else {\n const tokens = [];\n let error;\n this._tokenizeToEnd((e, t) => e ? (error = e) : tokens.push(t), true);\n if (error) throw error;\n return tokens;\n }\n }\n // Otherwise, the input must be a stream\n else {\n this._pendingBuffer = null;\n if (typeof input.setEncoding === 'function')\n input.setEncoding('utf8');\n // Adds the data chunk to the buffer and parses as far as possible\n input.on('data', data => {\n if (this._input !== null && data.length !== 0) {\n // Prepend any previous pending writes\n if (this._pendingBuffer) {\n data = Buffer.concat([this._pendingBuffer, data]);\n this._pendingBuffer = null;\n }\n // Hold if the buffer ends in an incomplete unicode sequence\n if (data[data.length - 1] & 0x80) {\n this._pendingBuffer = data;\n }\n // Otherwise, tokenize as far as possible\n else {\n // Only read a BOM at the start\n if (typeof this._input === 'undefined')\n this._input = this._readStartingBom(typeof data === 'string' ? data : data.toString());\n else\n this._input += data;\n this._tokenizeToEnd(callback, false);\n }\n }\n });\n // Parses until the end\n input.on('end', () => {\n if (typeof this._input === 'string')\n this._tokenizeToEnd(callback, true);\n });\n input.on('error', callback);\n }\n }\n}\n","// N3.js implementations of the RDF/JS core data types\n// See https://github.com/rdfjs/representation-task-force/blob/master/interface-spec.md\n\nimport namespaces from './IRIs';\n\nconst { rdf, xsd } = namespaces;\n\n// eslint-disable-next-line prefer-const\nlet DEFAULTGRAPH;\nlet _blankNodeCounter = 0;\n\nconst escapedLiteral = /^\"(.*\".*)(?=\"[^\"]*$)/;\n\n// ## DataFactory singleton\nconst DataFactory = {\n namedNode,\n blankNode,\n variable,\n literal,\n defaultGraph,\n quad,\n triple: quad,\n};\nexport default DataFactory;\n\n// ## Term constructor\nexport class Term {\n constructor(id) {\n this.id = id;\n }\n\n // ### The value of this term\n get value() {\n return this.id;\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both terms were created by this library,\n // equality can be computed through ids\n if (other instanceof Term)\n return this.id === other.id;\n // Otherwise, compare term type and value\n return !!other && this.termType === other.termType &&\n this.value === other.value;\n }\n\n // ### Implement hashCode for Immutable.js, since we implement `equals`\n // https://immutable-js.com/docs/v4.0.0/ValueObject/#hashCode()\n hashCode() {\n return 0;\n }\n\n // ### Returns a plain object representation of this term\n toJSON() {\n return {\n termType: this.termType,\n value: this.value,\n };\n }\n}\n\n\n// ## NamedNode constructor\nexport class NamedNode extends Term {\n // ### The term type of this term\n get termType() {\n return 'NamedNode';\n }\n}\n\n// ## Literal constructor\nexport class Literal extends Term {\n // ### The term type of this term\n get termType() {\n return 'Literal';\n }\n\n // ### The text value of this literal\n get value() {\n return this.id.substring(1, this.id.lastIndexOf('\"'));\n }\n\n // ### The language of this literal\n get language() {\n // Find the last quotation mark (e.g., '\"abc\"@en-us')\n const id = this.id;\n let atPos = id.lastIndexOf('\"') + 1;\n // If \"@\" it follows, return the remaining substring; empty otherwise\n return atPos < id.length && id[atPos++] === '@' ? id.substr(atPos).toLowerCase() : '';\n }\n\n // ### The datatype IRI of this literal\n get datatype() {\n return new NamedNode(this.datatypeString);\n }\n\n // ### The datatype string of this literal\n get datatypeString() {\n // Find the last quotation mark (e.g., '\"abc\"^^http://ex.org/types#t')\n const id = this.id, dtPos = id.lastIndexOf('\"') + 1;\n const char = dtPos < id.length ? id[dtPos] : '';\n // If \"^\" it follows, return the remaining substring\n return char === '^' ? id.substr(dtPos + 2) :\n // If \"@\" follows, return rdf:langString; xsd:string otherwise\n (char !== '@' ? xsd.string : rdf.langString);\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both literals were created by this library,\n // equality can be computed through ids\n if (other instanceof Literal)\n return this.id === other.id;\n // Otherwise, compare term type, value, language, and datatype\n return !!other && !!other.datatype &&\n this.termType === other.termType &&\n this.value === other.value &&\n this.language === other.language &&\n this.datatype.value === other.datatype.value;\n }\n\n toJSON() {\n return {\n termType: this.termType,\n value: this.value,\n language: this.language,\n datatype: { termType: 'NamedNode', value: this.datatypeString },\n };\n }\n}\n\n// ## BlankNode constructor\nexport class BlankNode extends Term {\n constructor(name) {\n super(`_:${name}`);\n }\n\n // ### The term type of this term\n get termType() {\n return 'BlankNode';\n }\n\n // ### The name of this blank node\n get value() {\n return this.id.substr(2);\n }\n}\n\nexport class Variable extends Term {\n constructor(name) {\n super(`?${name}`);\n }\n\n // ### The term type of this term\n get termType() {\n return 'Variable';\n }\n\n // ### The name of this variable\n get value() {\n return this.id.substr(1);\n }\n}\n\n// ## DefaultGraph constructor\nexport class DefaultGraph extends Term {\n constructor() {\n super('');\n return DEFAULTGRAPH || this;\n }\n\n // ### The term type of this term\n get termType() {\n return 'DefaultGraph';\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both terms were created by this library,\n // equality can be computed through strict equality;\n // otherwise, compare term types.\n return (this === other) || (!!other && (this.termType === other.termType));\n }\n}\n\n// ## DefaultGraph singleton\nDEFAULTGRAPH = new DefaultGraph();\n\n// ### Constructs a term from the given internal string ID\n// The third 'nested' parameter of this function is to aid\n// with recursion over nested terms. It should not be used\n// by consumers of this library.\n// See https://github.com/rdfjs/N3.js/pull/311#discussion_r1061042725\nexport function termFromId(id, factory, nested) {\n factory = factory || DataFactory;\n\n // Falsy value or empty string indicate the default graph\n if (!id)\n return factory.defaultGraph();\n\n // Identify the term type based on the first character\n switch (id[0]) {\n case '?':\n return factory.variable(id.substr(1));\n case '_':\n return factory.blankNode(id.substr(2));\n case '\"':\n // Shortcut for internal literals\n if (factory === DataFactory)\n return new Literal(id);\n // Literal without datatype or language\n if (id[id.length - 1] === '\"')\n return factory.literal(id.substr(1, id.length - 2));\n // Literal with datatype or language\n const endPos = id.lastIndexOf('\"', id.length - 1);\n return factory.literal(id.substr(1, endPos - 1),\n id[endPos + 1] === '@' ? id.substr(endPos + 2)\n : factory.namedNode(id.substr(endPos + 3)));\n case '[':\n id = JSON.parse(id);\n break;\n default:\n if (!nested || !Array.isArray(id)) {\n return factory.namedNode(id);\n }\n }\n return factory.quad(\n termFromId(id[0], factory, true),\n termFromId(id[1], factory, true),\n termFromId(id[2], factory, true),\n id[3] && termFromId(id[3], factory, true)\n );\n}\n\n// ### Constructs an internal string ID from the given term or ID string\n// The third 'nested' parameter of this function is to aid\n// with recursion over nested terms. It should not be used\n// by consumers of this library.\n// See https://github.com/rdfjs/N3.js/pull/311#discussion_r1061042725\nexport function termToId(term, nested) {\n if (typeof term === 'string')\n return term;\n if (term instanceof Term && term.termType !== 'Quad')\n return term.id;\n if (!term)\n return DEFAULTGRAPH.id;\n\n // Term instantiated with another library\n switch (term.termType) {\n case 'NamedNode': return term.value;\n case 'BlankNode': return `_:${term.value}`;\n case 'Variable': return `?${term.value}`;\n case 'DefaultGraph': return '';\n case 'Literal': return `\"${term.value}\"${\n term.language ? `@${term.language}` :\n (term.datatype && term.datatype.value !== xsd.string ? `^^${term.datatype.value}` : '')}`;\n case 'Quad':\n const res = [\n termToId(term.subject, true),\n termToId(term.predicate, true),\n termToId(term.object, true),\n ];\n if (term.graph && term.graph.termType !== 'DefaultGraph') {\n res.push(termToId(term.graph, true));\n }\n return nested ? res : JSON.stringify(res);\n default: throw new Error(`Unexpected termType: ${term.termType}`);\n }\n}\n\n\n// ## Quad constructor\nexport class Quad extends Term {\n constructor(subject, predicate, object, graph) {\n super('');\n this._subject = subject;\n this._predicate = predicate;\n this._object = object;\n this._graph = graph || DEFAULTGRAPH;\n }\n\n // ### The term type of this term\n get termType() {\n return 'Quad';\n }\n\n get subject() {\n return this._subject;\n }\n\n get predicate() {\n return this._predicate;\n }\n\n get object() {\n return this._object;\n }\n\n get graph() {\n return this._graph;\n }\n\n // ### Returns a plain object representation of this quad\n toJSON() {\n return {\n termType: this.termType,\n subject: this._subject.toJSON(),\n predicate: this._predicate.toJSON(),\n object: this._object.toJSON(),\n graph: this._graph.toJSON(),\n };\n }\n\n // ### Returns whether this object represents the same quad as the other\n equals(other) {\n return !!other && this._subject.equals(other.subject) &&\n this._predicate.equals(other.predicate) &&\n this._object.equals(other.object) &&\n this._graph.equals(other.graph);\n }\n}\nexport { Quad as Triple };\n\n// ### Escapes the quotes within the given literal\nexport function escapeQuotes(id) {\n return id.replace(escapedLiteral, (_, quoted) => `\"${quoted.replace(/\"/g, '\"\"')}`);\n}\n\n// ### Unescapes the quotes within the given literal\nexport function unescapeQuotes(id) {\n return id.replace(escapedLiteral, (_, quoted) => `\"${quoted.replace(/\"\"/g, '\"')}`);\n}\n\n// ### Creates an IRI\nfunction namedNode(iri) {\n return new NamedNode(iri);\n}\n\n// ### Creates a blank node\nfunction blankNode(name) {\n return new BlankNode(name || `n3-${_blankNodeCounter++}`);\n}\n\n// ### Creates a literal\nfunction literal(value, languageOrDataType) {\n // Create a language-tagged string\n if (typeof languageOrDataType === 'string')\n return new Literal(`\"${value}\"@${languageOrDataType.toLowerCase()}`);\n\n // Automatically determine datatype for booleans and numbers\n let datatype = languageOrDataType ? languageOrDataType.value : '';\n if (datatype === '') {\n // Convert a boolean\n if (typeof value === 'boolean')\n datatype = xsd.boolean;\n // Convert an integer or double\n else if (typeof value === 'number') {\n if (Number.isFinite(value))\n datatype = Number.isInteger(value) ? xsd.integer : xsd.double;\n else {\n datatype = xsd.double;\n if (!Number.isNaN(value))\n value = value > 0 ? 'INF' : '-INF';\n }\n }\n }\n\n // Create a datatyped literal\n return (datatype === '' || datatype === xsd.string) ?\n new Literal(`\"${value}\"`) :\n new Literal(`\"${value}\"^^${datatype}`);\n}\n\n// ### Creates a variable\nfunction variable(name) {\n return new Variable(name);\n}\n\n// ### Returns the default graph\nfunction defaultGraph() {\n return DEFAULTGRAPH;\n}\n\n// ### Creates a quad\nfunction quad(subject, predicate, object, graph) {\n return new Quad(subject, predicate, object, graph);\n}\n","// **N3Parser** parses N3 documents.\nimport N3Lexer from './N3Lexer';\nimport N3DataFactory from './N3DataFactory';\nimport namespaces from './IRIs';\n\nlet blankNodePrefix = 0;\n\n// ## Constructor\nexport default class N3Parser {\n constructor(options) {\n this._contextStack = [];\n this._graph = null;\n\n // Set the document IRI\n options = options || {};\n this._setBase(options.baseIRI);\n options.factory && initDataFactory(this, options.factory);\n\n // Set supported features depending on the format\n const format = (typeof options.format === 'string') ?\n options.format.match(/\\w*$/)[0].toLowerCase() : '',\n isTurtle = /turtle/.test(format), isTriG = /trig/.test(format),\n isNTriples = /triple/.test(format), isNQuads = /quad/.test(format),\n isN3 = this._n3Mode = /n3/.test(format),\n isLineMode = isNTriples || isNQuads;\n if (!(this._supportsNamedGraphs = !(isTurtle || isN3)))\n this._readPredicateOrNamedGraph = this._readPredicate;\n // Support triples in other graphs\n this._supportsQuads = !(isTurtle || isTriG || isNTriples || isN3);\n // Support nesting of triples\n this._supportsRDFStar = format === '' || /star|\\*$/.test(format);\n // Disable relative IRIs in N-Triples or N-Quads mode\n if (isLineMode)\n this._resolveRelativeIRI = iri => { return null; };\n this._blankNodePrefix = typeof options.blankNodePrefix !== 'string' ? '' :\n options.blankNodePrefix.replace(/^(?!_:)/, '_:');\n this._lexer = options.lexer || new N3Lexer({ lineMode: isLineMode, n3: isN3 });\n // Disable explicit quantifiers by default\n this._explicitQuantifiers = !!options.explicitQuantifiers;\n }\n\n // ## Static class methods\n\n // ### `_resetBlankNodePrefix` restarts blank node prefix identification\n static _resetBlankNodePrefix() {\n blankNodePrefix = 0;\n }\n\n // ## Private methods\n\n // ### `_setBase` sets the base IRI to resolve relative IRIs\n _setBase(baseIRI) {\n if (!baseIRI) {\n this._base = '';\n this._basePath = '';\n }\n else {\n // Remove fragment if present\n const fragmentPos = baseIRI.indexOf('#');\n if (fragmentPos >= 0)\n baseIRI = baseIRI.substr(0, fragmentPos);\n // Set base IRI and its components\n this._base = baseIRI;\n this._basePath = baseIRI.indexOf('/') < 0 ? baseIRI :\n baseIRI.replace(/[^\\/?]*(?:\\?.*)?$/, '');\n baseIRI = baseIRI.match(/^(?:([a-z][a-z0-9+.-]*:))?(?:\\/\\/[^\\/]*)?/i);\n this._baseRoot = baseIRI[0];\n this._baseScheme = baseIRI[1];\n }\n }\n\n // ### `_saveContext` stores the current parsing context\n // when entering a new scope (list, blank node, formula)\n _saveContext(type, graph, subject, predicate, object) {\n const n3Mode = this._n3Mode;\n this._contextStack.push({\n type,\n subject, predicate, object, graph,\n inverse: n3Mode ? this._inversePredicate : false,\n blankPrefix: n3Mode ? this._prefixes._ : '',\n quantified: n3Mode ? this._quantified : null,\n });\n // The settings below only apply to N3 streams\n if (n3Mode) {\n // Every new scope resets the predicate direction\n this._inversePredicate = false;\n // In N3, blank nodes are scoped to a formula\n // (using a dot as separator, as a blank node label cannot start with it)\n this._prefixes._ = (this._graph ? `${this._graph.value}.` : '.');\n // Quantifiers are scoped to a formula\n this._quantified = Object.create(this._quantified);\n }\n }\n\n // ### `_restoreContext` restores the parent context\n // when leaving a scope (list, blank node, formula)\n _restoreContext(type, token) {\n // Obtain the previous context\n const context = this._contextStack.pop();\n if (!context || context.type !== type)\n return this._error(`Unexpected ${token.type}`, token);\n\n // Restore the quad of the previous context\n this._subject = context.subject;\n this._predicate = context.predicate;\n this._object = context.object;\n this._graph = context.graph;\n\n // Restore N3 context settings\n if (this._n3Mode) {\n this._inversePredicate = context.inverse;\n this._prefixes._ = context.blankPrefix;\n this._quantified = context.quantified;\n }\n }\n\n // ### `_readInTopContext` reads a token when in the top context\n _readInTopContext(token) {\n switch (token.type) {\n // If an EOF token arrives in the top context, signal that we're done\n case 'eof':\n if (this._graph !== null)\n return this._error('Unclosed graph', token);\n delete this._prefixes._;\n return this._callback(null, null, this._prefixes);\n // It could be a prefix declaration\n case 'PREFIX':\n this._sparqlStyle = true;\n case '@prefix':\n return this._readPrefix;\n // It could be a base declaration\n case 'BASE':\n this._sparqlStyle = true;\n case '@base':\n return this._readBaseIRI;\n // It could be a graph\n case '{':\n if (this._supportsNamedGraphs) {\n this._graph = '';\n this._subject = null;\n return this._readSubject;\n }\n case 'GRAPH':\n if (this._supportsNamedGraphs)\n return this._readNamedGraphLabel;\n // Otherwise, the next token must be a subject\n default:\n return this._readSubject(token);\n }\n }\n\n // ### `_readEntity` reads an IRI, prefixed name, blank node, or variable\n _readEntity(token, quantifier) {\n let value;\n switch (token.type) {\n // Read a relative or absolute IRI\n case 'IRI':\n case 'typeIRI':\n const iri = this._resolveIRI(token.value);\n if (iri === null)\n return this._error('Invalid IRI', token);\n value = this._namedNode(iri);\n break;\n // Read a prefixed name\n case 'type':\n case 'prefixed':\n const prefix = this._prefixes[token.prefix];\n if (prefix === undefined)\n return this._error(`Undefined prefix \"${token.prefix}:\"`, token);\n value = this._namedNode(prefix + token.value);\n break;\n // Read a blank node\n case 'blank':\n value = this._blankNode(this._prefixes[token.prefix] + token.value);\n break;\n // Read a variable\n case 'var':\n value = this._variable(token.value.substr(1));\n break;\n // Everything else is not an entity\n default:\n return this._error(`Expected entity but got ${token.type}`, token);\n }\n // In N3 mode, replace the entity if it is quantified\n if (!quantifier && this._n3Mode && (value.id in this._quantified))\n value = this._quantified[value.id];\n return value;\n }\n\n // ### `_readSubject` reads a quad's subject\n _readSubject(token) {\n this._predicate = null;\n switch (token.type) {\n case '[':\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph,\n this._subject = this._blankNode(), null, null);\n return this._readBlankNodeHead;\n case '(':\n // Start a new list\n this._saveContext('list', this._graph, this.RDF_NIL, null, null);\n this._subject = null;\n return this._readListItem;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph,\n this._graph = this._blankNode(), null, null);\n return this._readSubject;\n case '}':\n // No subject; the graph in which we are reading is closed instead\n return this._readPunctuation(token);\n case '@forSome':\n if (!this._n3Mode)\n return this._error('Unexpected \"@forSome\"', token);\n this._subject = null;\n this._predicate = this.N3_FORSOME;\n this._quantifier = this._blankNode;\n return this._readQuantifierList;\n case '@forAll':\n if (!this._n3Mode)\n return this._error('Unexpected \"@forAll\"', token);\n this._subject = null;\n this._predicate = this.N3_FORALL;\n this._quantifier = this._variable;\n return this._readQuantifierList;\n case 'literal':\n if (!this._n3Mode)\n return this._error('Unexpected literal', token);\n\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n return this._completeSubjectLiteral;\n }\n else\n this._subject = this._literal(token.value, this._namedNode(token.prefix));\n\n break;\n case '<<':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n this._saveContext('<<', this._graph, null, null, null);\n this._graph = null;\n return this._readSubject;\n default:\n // Read the subject entity\n if ((this._subject = this._readEntity(token)) === undefined)\n return;\n // In N3 mode, the subject might be a path\n if (this._n3Mode)\n return this._getPathReader(this._readPredicateOrNamedGraph);\n }\n\n // The next token must be a predicate,\n // or, if the subject was actually a graph IRI, a named graph\n return this._readPredicateOrNamedGraph;\n }\n\n // ### `_readPredicate` reads a quad's predicate\n _readPredicate(token) {\n const type = token.type;\n switch (type) {\n case 'inverse':\n this._inversePredicate = true;\n case 'abbreviation':\n this._predicate = this.ABBREVIATIONS[token.value];\n break;\n case '.':\n case ']':\n case '}':\n // Expected predicate didn't come, must have been trailing semicolon\n if (this._predicate === null)\n return this._error(`Unexpected ${type}`, token);\n this._subject = null;\n return type === ']' ? this._readBlankNodeTail(token) : this._readPunctuation(token);\n case ';':\n // Additional semicolons can be safely ignored\n return this._predicate !== null ? this._readPredicate :\n this._error('Expected predicate but got ;', token);\n case '[':\n if (this._n3Mode) {\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph, this._subject,\n this._subject = this._blankNode(), null);\n return this._readBlankNodeHead;\n }\n case 'blank':\n if (!this._n3Mode)\n return this._error('Disallowed blank node as predicate', token);\n default:\n if ((this._predicate = this._readEntity(token)) === undefined)\n return;\n }\n // The next token must be an object\n return this._readObject;\n }\n\n // ### `_readObject` reads a quad's object\n _readObject(token) {\n switch (token.type) {\n case 'literal':\n // Regular literal, can still get a datatype or language\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n return this._readDataTypeOrLang;\n }\n // Pre-datatyped string literal (prefix stores the datatype)\n else\n this._object = this._literal(token.value, this._namedNode(token.prefix));\n break;\n case '[':\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph, this._subject, this._predicate,\n this._subject = this._blankNode());\n return this._readBlankNodeHead;\n case '(':\n // Start a new list\n this._saveContext('list', this._graph, this._subject, this._predicate, this.RDF_NIL);\n this._subject = null;\n return this._readListItem;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph, this._subject, this._predicate,\n this._graph = this._blankNode());\n return this._readSubject;\n case '<<':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n this._saveContext('<<', this._graph, this._subject, this._predicate, null);\n this._graph = null;\n return this._readSubject;\n default:\n // Read the object entity\n if ((this._object = this._readEntity(token)) === undefined)\n return;\n // In N3 mode, the object might be a path\n if (this._n3Mode)\n return this._getPathReader(this._getContextEndReader());\n }\n return this._getContextEndReader();\n }\n\n // ### `_readPredicateOrNamedGraph` reads a quad's predicate, or a named graph\n _readPredicateOrNamedGraph(token) {\n return token.type === '{' ? this._readGraph(token) : this._readPredicate(token);\n }\n\n // ### `_readGraph` reads a graph\n _readGraph(token) {\n if (token.type !== '{')\n return this._error(`Expected graph but got ${token.type}`, token);\n // The \"subject\" we read is actually the GRAPH's label\n this._graph = this._subject, this._subject = null;\n return this._readSubject;\n }\n\n // ### `_readBlankNodeHead` reads the head of a blank node\n _readBlankNodeHead(token) {\n if (token.type === ']') {\n this._subject = null;\n return this._readBlankNodeTail(token);\n }\n else {\n this._predicate = null;\n return this._readPredicate(token);\n }\n }\n\n // ### `_readBlankNodeTail` reads the end of a blank node\n _readBlankNodeTail(token) {\n if (token.type !== ']')\n return this._readBlankNodePunctuation(token);\n\n // Store blank node quad\n if (this._subject !== null)\n this._emit(this._subject, this._predicate, this._object, this._graph);\n\n // Restore the parent context containing this blank node\n const empty = this._predicate === null;\n this._restoreContext('blank', token);\n // If the blank node was the object, restore previous context and read punctuation\n if (this._object !== null)\n return this._getContextEndReader();\n // If the blank node was the predicate, continue reading the object\n else if (this._predicate !== null)\n return this._readObject;\n // If the blank node was the subject, continue reading the predicate\n else\n // If the blank node was empty, it could be a named graph label\n return empty ? this._readPredicateOrNamedGraph : this._readPredicateAfterBlank;\n }\n\n // ### `_readPredicateAfterBlank` reads a predicate after an anonymous blank node\n _readPredicateAfterBlank(token) {\n switch (token.type) {\n case '.':\n case '}':\n // No predicate is coming if the triple is terminated here\n this._subject = null;\n return this._readPunctuation(token);\n default:\n return this._readPredicate(token);\n }\n }\n\n // ### `_readListItem` reads items from a list\n _readListItem(token) {\n let item = null, // The item of the list\n list = null, // The list itself\n next = this._readListItem; // The next function to execute\n const previousList = this._subject, // The previous list that contains this list\n stack = this._contextStack, // The stack of parent contexts\n parent = stack[stack.length - 1]; // The parent containing the current list\n\n switch (token.type) {\n case '[':\n // Stack the current list quad and start a new quad with a blank node as subject\n this._saveContext('blank', this._graph,\n list = this._blankNode(), this.RDF_FIRST,\n this._subject = item = this._blankNode());\n next = this._readBlankNodeHead;\n break;\n case '(':\n // Stack the current list quad and start a new list\n this._saveContext('list', this._graph,\n list = this._blankNode(), this.RDF_FIRST, this.RDF_NIL);\n this._subject = null;\n break;\n case ')':\n // Closing the list; restore the parent context\n this._restoreContext('list', token);\n // If this list is contained within a parent list, return the membership quad here.\n // This will be ` rdf:first .`.\n if (stack.length !== 0 && stack[stack.length - 1].type === 'list')\n this._emit(this._subject, this._predicate, this._object, this._graph);\n // Was this list the parent's subject?\n if (this._predicate === null) {\n // The next token is the predicate\n next = this._readPredicate;\n // No list tail if this was an empty list\n if (this._subject === this.RDF_NIL)\n return next;\n }\n // The list was in the parent context's object\n else {\n next = this._getContextEndReader();\n // No list tail if this was an empty list\n if (this._object === this.RDF_NIL)\n return next;\n }\n // Close the list by making the head nil\n list = this.RDF_NIL;\n break;\n case 'literal':\n // Regular literal, can still get a datatype or language\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n next = this._readListItemDataTypeOrLang;\n }\n // Pre-datatyped string literal (prefix stores the datatype)\n else {\n item = this._literal(token.value, this._namedNode(token.prefix));\n next = this._getContextEndReader();\n }\n break;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph, this._subject, this._predicate,\n this._graph = this._blankNode());\n return this._readSubject;\n default:\n if ((item = this._readEntity(token)) === undefined)\n return;\n }\n\n // Create a new blank node if no item head was assigned yet\n if (list === null)\n this._subject = list = this._blankNode();\n\n // Is this the first element of the list?\n if (previousList === null) {\n // This list is either the subject or the object of its parent\n if (parent.predicate === null)\n parent.subject = list;\n else\n parent.object = list;\n }\n else {\n // Continue the previous list with the current list\n this._emit(previousList, this.RDF_REST, list, this._graph);\n }\n // If an item was read, add it to the list\n if (item !== null) {\n // In N3 mode, the item might be a path\n if (this._n3Mode && (token.type === 'IRI' || token.type === 'prefixed')) {\n // Create a new context to add the item's path\n this._saveContext('item', this._graph, list, this.RDF_FIRST, item);\n this._subject = item, this._predicate = null;\n // _readPath will restore the context and output the item\n return this._getPathReader(this._readListItem);\n }\n // Output the item\n this._emit(list, this.RDF_FIRST, item, this._graph);\n }\n return next;\n }\n\n // ### `_readDataTypeOrLang` reads an _optional_ datatype or language\n _readDataTypeOrLang(token) {\n return this._completeObjectLiteral(token, false);\n }\n\n\n // ### `_readListItemDataTypeOrLang` reads an _optional_ datatype or language in a list\n _readListItemDataTypeOrLang(token) {\n return this._completeObjectLiteral(token, true);\n }\n\n // ### `_completeLiteral` completes a literal with an optional datatype or language\n _completeLiteral(token) {\n // Create a simple string literal by default\n let literal = this._literal(this._literalValue);\n\n switch (token.type) {\n // Create a datatyped literal\n case 'type':\n case 'typeIRI':\n const datatype = this._readEntity(token);\n if (datatype === undefined) return; // No datatype means an error occurred\n literal = this._literal(this._literalValue, datatype);\n token = null;\n break;\n // Create a language-tagged string\n case 'langcode':\n literal = this._literal(this._literalValue, token.value);\n token = null;\n break;\n }\n\n return { token, literal };\n }\n\n // Completes a literal in subject position\n _completeSubjectLiteral(token) {\n this._subject = this._completeLiteral(token).literal;\n return this._readPredicateOrNamedGraph;\n }\n\n // Completes a literal in object position\n _completeObjectLiteral(token, listItem) {\n const completed = this._completeLiteral(token);\n if (!completed)\n return;\n this._object = completed.literal;\n\n // If this literal was part of a list, write the item\n // (we could also check the context stack, but passing in a flag is faster)\n if (listItem)\n this._emit(this._subject, this.RDF_FIRST, this._object, this._graph);\n // If the token was consumed, continue with the rest of the input\n if (completed.token === null)\n return this._getContextEndReader();\n // Otherwise, consume the token now\n else {\n this._readCallback = this._getContextEndReader();\n return this._readCallback(completed.token);\n }\n }\n\n // ### `_readFormulaTail` reads the end of a formula\n _readFormulaTail(token) {\n if (token.type !== '}')\n return this._readPunctuation(token);\n\n // Store the last quad of the formula\n if (this._subject !== null)\n this._emit(this._subject, this._predicate, this._object, this._graph);\n\n // Restore the parent context containing this formula\n this._restoreContext('formula', token);\n // If the formula was the subject, continue reading the predicate.\n // If the formula was the object, read punctuation.\n return this._object === null ? this._readPredicate : this._getContextEndReader();\n }\n\n // ### `_readPunctuation` reads punctuation between quads or quad parts\n _readPunctuation(token) {\n let next, graph = this._graph;\n const subject = this._subject, inversePredicate = this._inversePredicate;\n switch (token.type) {\n // A closing brace ends a graph\n case '}':\n if (this._graph === null)\n return this._error('Unexpected graph closing', token);\n if (this._n3Mode)\n return this._readFormulaTail(token);\n this._graph = null;\n // A dot just ends the statement, without sharing anything with the next\n case '.':\n this._subject = null;\n next = this._contextStack.length ? this._readSubject : this._readInTopContext;\n if (inversePredicate) this._inversePredicate = false;\n break;\n // Semicolon means the subject is shared; predicate and object are different\n case ';':\n next = this._readPredicate;\n break;\n // Comma means both the subject and predicate are shared; the object is different\n case ',':\n next = this._readObject;\n break;\n // {| means that the current triple is annotated with predicate-object pairs.\n case '{|':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n // Continue using the last triple as quoted triple subject for the predicate-object pairs.\n const predicate = this._predicate, object = this._object;\n this._subject = this._quad(subject, predicate, object, this.DEFAULTGRAPH);\n next = this._readPredicate;\n break;\n // |} means that the current quoted triple in annotation syntax is finalized.\n case '|}':\n if (this._subject.termType !== 'Quad')\n return this._error('Unexpected asserted triple closing', token);\n this._subject = null;\n next = this._readPunctuation;\n break;\n default:\n // An entity means this is a quad (only allowed if not already inside a graph)\n if (this._supportsQuads && this._graph === null && (graph = this._readEntity(token)) !== undefined) {\n next = this._readQuadPunctuation;\n break;\n }\n return this._error(`Expected punctuation to follow \"${this._object.id}\"`, token);\n }\n // A quad has been completed now, so return it\n if (subject !== null) {\n const predicate = this._predicate, object = this._object;\n if (!inversePredicate)\n this._emit(subject, predicate, object, graph);\n else\n this._emit(object, predicate, subject, graph);\n }\n return next;\n }\n\n // ### `_readBlankNodePunctuation` reads punctuation in a blank node\n _readBlankNodePunctuation(token) {\n let next;\n switch (token.type) {\n // Semicolon means the subject is shared; predicate and object are different\n case ';':\n next = this._readPredicate;\n break;\n // Comma means both the subject and predicate are shared; the object is different\n case ',':\n next = this._readObject;\n break;\n default:\n return this._error(`Expected punctuation to follow \"${this._object.id}\"`, token);\n }\n // A quad has been completed now, so return it\n this._emit(this._subject, this._predicate, this._object, this._graph);\n return next;\n }\n\n // ### `_readQuadPunctuation` reads punctuation after a quad\n _readQuadPunctuation(token) {\n if (token.type !== '.')\n return this._error('Expected dot to follow quad', token);\n return this._readInTopContext;\n }\n\n // ### `_readPrefix` reads the prefix of a prefix declaration\n _readPrefix(token) {\n if (token.type !== 'prefix')\n return this._error('Expected prefix to follow @prefix', token);\n this._prefix = token.value;\n return this._readPrefixIRI;\n }\n\n // ### `_readPrefixIRI` reads the IRI of a prefix declaration\n _readPrefixIRI(token) {\n if (token.type !== 'IRI')\n return this._error(`Expected IRI to follow prefix \"${this._prefix}:\"`, token);\n const prefixNode = this._readEntity(token);\n this._prefixes[this._prefix] = prefixNode.value;\n this._prefixCallback(this._prefix, prefixNode);\n return this._readDeclarationPunctuation;\n }\n\n // ### `_readBaseIRI` reads the IRI of a base declaration\n _readBaseIRI(token) {\n const iri = token.type === 'IRI' && this._resolveIRI(token.value);\n if (!iri)\n return this._error('Expected valid IRI to follow base declaration', token);\n this._setBase(iri);\n return this._readDeclarationPunctuation;\n }\n\n // ### `_readNamedGraphLabel` reads the label of a named graph\n _readNamedGraphLabel(token) {\n switch (token.type) {\n case 'IRI':\n case 'blank':\n case 'prefixed':\n return this._readSubject(token), this._readGraph;\n case '[':\n return this._readNamedGraphBlankLabel;\n default:\n return this._error('Invalid graph label', token);\n }\n }\n\n // ### `_readNamedGraphLabel` reads a blank node label of a named graph\n _readNamedGraphBlankLabel(token) {\n if (token.type !== ']')\n return this._error('Invalid graph label', token);\n this._subject = this._blankNode();\n return this._readGraph;\n }\n\n // ### `_readDeclarationPunctuation` reads the punctuation of a declaration\n _readDeclarationPunctuation(token) {\n // SPARQL-style declarations don't have punctuation\n if (this._sparqlStyle) {\n this._sparqlStyle = false;\n return this._readInTopContext(token);\n }\n\n if (token.type !== '.')\n return this._error('Expected declaration to end with a dot', token);\n return this._readInTopContext;\n }\n\n // Reads a list of quantified symbols from a @forSome or @forAll statement\n _readQuantifierList(token) {\n let entity;\n switch (token.type) {\n case 'IRI':\n case 'prefixed':\n if ((entity = this._readEntity(token, true)) !== undefined)\n break;\n default:\n return this._error(`Unexpected ${token.type}`, token);\n }\n // Without explicit quantifiers, map entities to a quantified entity\n if (!this._explicitQuantifiers)\n this._quantified[entity.id] = this._quantifier(this._blankNode().value);\n // With explicit quantifiers, output the reified quantifier\n else {\n // If this is the first item, start a new quantifier list\n if (this._subject === null)\n this._emit(this._graph || this.DEFAULTGRAPH, this._predicate,\n this._subject = this._blankNode(), this.QUANTIFIERS_GRAPH);\n // Otherwise, continue the previous list\n else\n this._emit(this._subject, this.RDF_REST,\n this._subject = this._blankNode(), this.QUANTIFIERS_GRAPH);\n // Output the list item\n this._emit(this._subject, this.RDF_FIRST, entity, this.QUANTIFIERS_GRAPH);\n }\n return this._readQuantifierPunctuation;\n }\n\n // Reads punctuation from a @forSome or @forAll statement\n _readQuantifierPunctuation(token) {\n // Read more quantifiers\n if (token.type === ',')\n return this._readQuantifierList;\n // End of the quantifier list\n else {\n // With explicit quantifiers, close the quantifier list\n if (this._explicitQuantifiers) {\n this._emit(this._subject, this.RDF_REST, this.RDF_NIL, this.QUANTIFIERS_GRAPH);\n this._subject = null;\n }\n // Read a dot\n this._readCallback = this._getContextEndReader();\n return this._readCallback(token);\n }\n }\n\n // ### `_getPathReader` reads a potential path and then resumes with the given function\n _getPathReader(afterPath) {\n this._afterPath = afterPath;\n return this._readPath;\n }\n\n // ### `_readPath` reads a potential path\n _readPath(token) {\n switch (token.type) {\n // Forward path\n case '!': return this._readForwardPath;\n // Backward path\n case '^': return this._readBackwardPath;\n // Not a path; resume reading where we left off\n default:\n const stack = this._contextStack, parent = stack.length && stack[stack.length - 1];\n // If we were reading a list item, we still need to output it\n if (parent && parent.type === 'item') {\n // The list item is the remaining subejct after reading the path\n const item = this._subject;\n // Switch back to the context of the list\n this._restoreContext('item', token);\n // Output the list item\n this._emit(this._subject, this.RDF_FIRST, item, this._graph);\n }\n return this._afterPath(token);\n }\n }\n\n // ### `_readForwardPath` reads a '!' path\n _readForwardPath(token) {\n let subject, predicate;\n const object = this._blankNode();\n // The next token is the predicate\n if ((predicate = this._readEntity(token)) === undefined)\n return;\n // If we were reading a subject, replace the subject by the path's object\n if (this._predicate === null)\n subject = this._subject, this._subject = object;\n // If we were reading an object, replace the subject by the path's object\n else\n subject = this._object, this._object = object;\n // Emit the path's current quad and read its next section\n this._emit(subject, predicate, object, this._graph);\n return this._readPath;\n }\n\n // ### `_readBackwardPath` reads a '^' path\n _readBackwardPath(token) {\n const subject = this._blankNode();\n let predicate, object;\n // The next token is the predicate\n if ((predicate = this._readEntity(token)) === undefined)\n return;\n // If we were reading a subject, replace the subject by the path's subject\n if (this._predicate === null)\n object = this._subject, this._subject = subject;\n // If we were reading an object, replace the subject by the path's subject\n else\n object = this._object, this._object = subject;\n // Emit the path's current quad and read its next section\n this._emit(subject, predicate, object, this._graph);\n return this._readPath;\n }\n\n // ### `_readRDFStarTailOrGraph` reads the graph of a nested RDF* quad or the end of a nested RDF* triple\n _readRDFStarTailOrGraph(token) {\n if (token.type !== '>>') {\n // An entity means this is a quad (only allowed if not already inside a graph)\n if (this._supportsQuads && this._graph === null && (this._graph = this._readEntity(token)) !== undefined)\n return this._readRDFStarTail;\n return this._error(`Expected >> to follow \"${this._object.id}\"`, token);\n }\n return this._readRDFStarTail(token);\n }\n\n // ### `_readRDFStarTail` reads the end of a nested RDF* triple\n _readRDFStarTail(token) {\n if (token.type !== '>>')\n return this._error(`Expected >> but got ${token.type}`, token);\n // Read the quad and restore the previous context\n const quad = this._quad(this._subject, this._predicate, this._object,\n this._graph || this.DEFAULTGRAPH);\n this._restoreContext('<<', token);\n // If the triple was the subject, continue by reading the predicate.\n if (this._subject === null) {\n this._subject = quad;\n return this._readPredicate;\n }\n // If the triple was the object, read context end.\n else {\n this._object = quad;\n return this._getContextEndReader();\n }\n }\n\n // ### `_getContextEndReader` gets the next reader function at the end of a context\n _getContextEndReader() {\n const contextStack = this._contextStack;\n if (!contextStack.length)\n return this._readPunctuation;\n\n switch (contextStack[contextStack.length - 1].type) {\n case 'blank':\n return this._readBlankNodeTail;\n case 'list':\n return this._readListItem;\n case 'formula':\n return this._readFormulaTail;\n case '<<':\n return this._readRDFStarTailOrGraph;\n }\n }\n\n // ### `_emit` sends a quad through the callback\n _emit(subject, predicate, object, graph) {\n this._callback(null, this._quad(subject, predicate, object, graph || this.DEFAULTGRAPH));\n }\n\n // ### `_error` emits an error message through the callback\n _error(message, token) {\n const err = new Error(`${message} on line ${token.line}.`);\n err.context = {\n token: token,\n line: token.line,\n previousToken: this._lexer.previousToken,\n };\n this._callback(err);\n this._callback = noop;\n }\n\n // ### `_resolveIRI` resolves an IRI against the base path\n _resolveIRI(iri) {\n return /^[a-z][a-z0-9+.-]*:/i.test(iri) ? iri : this._resolveRelativeIRI(iri);\n }\n\n // ### `_resolveRelativeIRI` resolves an IRI against the base path,\n // assuming that a base path has been set and that the IRI is indeed relative\n _resolveRelativeIRI(iri) {\n // An empty relative IRI indicates the base IRI\n if (!iri.length)\n return this._base;\n // Decide resolving strategy based in the first character\n switch (iri[0]) {\n // Resolve relative fragment IRIs against the base IRI\n case '#': return this._base + iri;\n // Resolve relative query string IRIs by replacing the query string\n case '?': return this._base.replace(/(?:\\?.*)?$/, iri);\n // Resolve root-relative IRIs at the root of the base IRI\n case '/':\n // Resolve scheme-relative IRIs to the scheme\n return (iri[1] === '/' ? this._baseScheme : this._baseRoot) + this._removeDotSegments(iri);\n // Resolve all other IRIs at the base IRI's path\n default:\n // Relative IRIs cannot contain a colon in the first path segment\n return (/^[^/:]*:/.test(iri)) ? null : this._removeDotSegments(this._basePath + iri);\n }\n }\n\n // ### `_removeDotSegments` resolves './' and '../' path segments in an IRI as per RFC3986\n _removeDotSegments(iri) {\n // Don't modify the IRI if it does not contain any dot segments\n if (!/(^|\\/)\\.\\.?($|[/#?])/.test(iri))\n return iri;\n\n // Start with an imaginary slash before the IRI in order to resolve trailing './' and '../'\n const length = iri.length;\n let result = '', i = -1, pathStart = -1, segmentStart = 0, next = '/';\n\n while (i < length) {\n switch (next) {\n // The path starts with the first slash after the authority\n case ':':\n if (pathStart < 0) {\n // Skip two slashes before the authority\n if (iri[++i] === '/' && iri[++i] === '/')\n // Skip to slash after the authority\n while ((pathStart = i + 1) < length && iri[pathStart] !== '/')\n i = pathStart;\n }\n break;\n // Don't modify a query string or fragment\n case '?':\n case '#':\n i = length;\n break;\n // Handle '/.' or '/..' path segments\n case '/':\n if (iri[i + 1] === '.') {\n next = iri[++i + 1];\n switch (next) {\n // Remove a '/.' segment\n case '/':\n result += iri.substring(segmentStart, i - 1);\n segmentStart = i + 1;\n break;\n // Remove a trailing '/.' segment\n case undefined:\n case '?':\n case '#':\n return result + iri.substring(segmentStart, i) + iri.substr(i + 1);\n // Remove a '/..' segment\n case '.':\n next = iri[++i + 1];\n if (next === undefined || next === '/' || next === '?' || next === '#') {\n result += iri.substring(segmentStart, i - 2);\n // Try to remove the parent path from result\n if ((segmentStart = result.lastIndexOf('/')) >= pathStart)\n result = result.substr(0, segmentStart);\n // Remove a trailing '/..' segment\n if (next !== '/')\n return `${result}/${iri.substr(i + 1)}`;\n segmentStart = i + 1;\n }\n }\n }\n }\n next = iri[++i];\n }\n return result + iri.substring(segmentStart);\n }\n\n // ## Public methods\n\n // ### `parse` parses the N3 input and emits each parsed quad through the callback\n parse(input, quadCallback, prefixCallback) {\n // The read callback is the next function to be executed when a token arrives.\n // We start reading in the top context.\n this._readCallback = this._readInTopContext;\n this._sparqlStyle = false;\n this._prefixes = Object.create(null);\n this._prefixes._ = this._blankNodePrefix ? this._blankNodePrefix.substr(2)\n : `b${blankNodePrefix++}_`;\n this._prefixCallback = prefixCallback || noop;\n this._inversePredicate = false;\n this._quantified = Object.create(null);\n\n // Parse synchronously if no quad callback is given\n if (!quadCallback) {\n const quads = [];\n let error;\n this._callback = (e, t) => { e ? (error = e) : t && quads.push(t); };\n this._lexer.tokenize(input).every(token => {\n return this._readCallback = this._readCallback(token);\n });\n if (error) throw error;\n return quads;\n }\n\n // Parse asynchronously otherwise, executing the read callback when a token arrives\n this._callback = quadCallback;\n this._lexer.tokenize(input, (error, token) => {\n if (error !== null)\n this._callback(error), this._callback = noop;\n else if (this._readCallback)\n this._readCallback = this._readCallback(token);\n });\n }\n}\n\n// The empty function\nfunction noop() {}\n\n// Initializes the parser with the given data factory\nfunction initDataFactory(parser, factory) {\n // Set factory methods\n const namedNode = factory.namedNode;\n parser._namedNode = namedNode;\n parser._blankNode = factory.blankNode;\n parser._literal = factory.literal;\n parser._variable = factory.variable;\n parser._quad = factory.quad;\n parser.DEFAULTGRAPH = factory.defaultGraph();\n\n // Set common named nodes\n parser.RDF_FIRST = namedNode(namespaces.rdf.first);\n parser.RDF_REST = namedNode(namespaces.rdf.rest);\n parser.RDF_NIL = namedNode(namespaces.rdf.nil);\n parser.N3_FORALL = namedNode(namespaces.r.forAll);\n parser.N3_FORSOME = namedNode(namespaces.r.forSome);\n parser.ABBREVIATIONS = {\n 'a': namedNode(namespaces.rdf.type),\n '=': namedNode(namespaces.owl.sameAs),\n '>': namedNode(namespaces.log.implies),\n };\n parser.QUANTIFIERS_GRAPH = namedNode('urn:n3:quantifiers');\n}\ninitDataFactory(N3Parser.prototype, N3DataFactory);\n","// **N3Util** provides N3 utility functions.\n\nimport N3DataFactory from './N3DataFactory';\n\n// Tests whether the given term represents an IRI\nexport function isNamedNode(term) {\n return !!term && term.termType === 'NamedNode';\n}\n\n// Tests whether the given term represents a blank node\nexport function isBlankNode(term) {\n return !!term && term.termType === 'BlankNode';\n}\n\n// Tests whether the given term represents a literal\nexport function isLiteral(term) {\n return !!term && term.termType === 'Literal';\n}\n\n// Tests whether the given term represents a variable\nexport function isVariable(term) {\n return !!term && term.termType === 'Variable';\n}\n\n// Tests whether the given term represents the default graph\nexport function isDefaultGraph(term) {\n return !!term && term.termType === 'DefaultGraph';\n}\n\n// Tests whether the given quad is in the default graph\nexport function inDefaultGraph(quad) {\n return isDefaultGraph(quad.graph);\n}\n\n// Creates a function that prepends the given IRI to a local name\nexport function prefix(iri, factory) {\n return prefixes({ '': iri.value || iri }, factory)('');\n}\n\n// Creates a function that allows registering and expanding prefixes\nexport function prefixes(defaultPrefixes, factory) {\n // Add all of the default prefixes\n const prefixes = Object.create(null);\n for (const prefix in defaultPrefixes)\n processPrefix(prefix, defaultPrefixes[prefix]);\n // Set the default factory if none was specified\n factory = factory || N3DataFactory;\n\n // Registers a new prefix (if an IRI was specified)\n // or retrieves a function that expands an existing prefix (if no IRI was specified)\n function processPrefix(prefix, iri) {\n // Create a new prefix if an IRI is specified or the prefix doesn't exist\n if (typeof iri === 'string') {\n // Create a function that expands the prefix\n const cache = Object.create(null);\n prefixes[prefix] = local => {\n return cache[local] || (cache[local] = factory.namedNode(iri + local));\n };\n }\n else if (!(prefix in prefixes)) {\n throw new Error(`Unknown prefix: ${prefix}`);\n }\n return prefixes[prefix];\n }\n return processPrefix;\n}\n","// **N3Writer** writes N3 documents.\nimport namespaces from './IRIs';\nimport { default as N3DataFactory, Term } from './N3DataFactory';\nimport { isDefaultGraph } from './N3Util';\n\nconst DEFAULTGRAPH = N3DataFactory.defaultGraph();\n\nconst { rdf, xsd } = namespaces;\n\n// Characters in literals that require escaping\nconst escape = /[\"\\\\\\t\\n\\r\\b\\f\\u0000-\\u0019\\ud800-\\udbff]/,\n escapeAll = /[\"\\\\\\t\\n\\r\\b\\f\\u0000-\\u0019]|[\\ud800-\\udbff][\\udc00-\\udfff]/g,\n escapedCharacters = {\n '\\\\': '\\\\\\\\', '\"': '\\\\\"', '\\t': '\\\\t',\n '\\n': '\\\\n', '\\r': '\\\\r', '\\b': '\\\\b', '\\f': '\\\\f',\n };\n\n// ## Placeholder class to represent already pretty-printed terms\nclass SerializedTerm extends Term {\n // Pretty-printed nodes are not equal to any other node\n // (e.g., [] does not equal [])\n equals(other) {\n return other === this;\n }\n}\n\n// ## Constructor\nexport default class N3Writer {\n constructor(outputStream, options) {\n // ### `_prefixRegex` matches a prefixed name or IRI that begins with one of the added prefixes\n this._prefixRegex = /$0^/;\n\n // Shift arguments if the first argument is not a stream\n if (outputStream && typeof outputStream.write !== 'function')\n options = outputStream, outputStream = null;\n options = options || {};\n this._lists = options.lists;\n\n // If no output stream given, send the output as string through the end callback\n if (!outputStream) {\n let output = '';\n this._outputStream = {\n write(chunk, encoding, done) { output += chunk; done && done(); },\n end: done => { done && done(null, output); },\n };\n this._endStream = true;\n }\n else {\n this._outputStream = outputStream;\n this._endStream = options.end === undefined ? true : !!options.end;\n }\n\n // Initialize writer, depending on the format\n this._subject = null;\n if (!(/triple|quad/i).test(options.format)) {\n this._lineMode = false;\n this._graph = DEFAULTGRAPH;\n this._prefixIRIs = Object.create(null);\n options.prefixes && this.addPrefixes(options.prefixes);\n if (options.baseIRI) {\n this._baseMatcher = new RegExp(`^${escapeRegex(options.baseIRI)\n }${options.baseIRI.endsWith('/') ? '' : '[#?]'}`);\n this._baseLength = options.baseIRI.length;\n }\n }\n else {\n this._lineMode = true;\n this._writeQuad = this._writeQuadLine;\n }\n }\n\n // ## Private methods\n\n // ### Whether the current graph is the default graph\n get _inDefaultGraph() {\n return DEFAULTGRAPH.equals(this._graph);\n }\n\n // ### `_write` writes the argument to the output stream\n _write(string, callback) {\n this._outputStream.write(string, 'utf8', callback);\n }\n\n // ### `_writeQuad` writes the quad to the output stream\n _writeQuad(subject, predicate, object, graph, done) {\n try {\n // Write the graph's label if it has changed\n if (!graph.equals(this._graph)) {\n // Close the previous graph and start the new one\n this._write((this._subject === null ? '' : (this._inDefaultGraph ? '.\\n' : '\\n}\\n')) +\n (DEFAULTGRAPH.equals(graph) ? '' : `${this._encodeIriOrBlank(graph)} {\\n`));\n this._graph = graph;\n this._subject = null;\n }\n // Don't repeat the subject if it's the same\n if (subject.equals(this._subject)) {\n // Don't repeat the predicate if it's the same\n if (predicate.equals(this._predicate))\n this._write(`, ${this._encodeObject(object)}`, done);\n // Same subject, different predicate\n else\n this._write(`;\\n ${\n this._encodePredicate(this._predicate = predicate)} ${\n this._encodeObject(object)}`, done);\n }\n // Different subject; write the whole quad\n else\n this._write(`${(this._subject === null ? '' : '.\\n') +\n this._encodeSubject(this._subject = subject)} ${\n this._encodePredicate(this._predicate = predicate)} ${\n this._encodeObject(object)}`, done);\n }\n catch (error) { done && done(error); }\n }\n\n // ### `_writeQuadLine` writes the quad to the output stream as a single line\n _writeQuadLine(subject, predicate, object, graph, done) {\n // Write the quad without prefixes\n delete this._prefixMatch;\n this._write(this.quadToString(subject, predicate, object, graph), done);\n }\n\n // ### `quadToString` serializes a quad as a string\n quadToString(subject, predicate, object, graph) {\n return `${this._encodeSubject(subject)} ${\n this._encodeIriOrBlank(predicate)} ${\n this._encodeObject(object)\n }${graph && graph.value ? ` ${this._encodeIriOrBlank(graph)} .\\n` : ' .\\n'}`;\n }\n\n // ### `quadsToString` serializes an array of quads as a string\n quadsToString(quads) {\n return quads.map(t => {\n return this.quadToString(t.subject, t.predicate, t.object, t.graph);\n }).join('');\n }\n\n // ### `_encodeSubject` represents a subject\n _encodeSubject(entity) {\n return entity.termType === 'Quad' ?\n this._encodeQuad(entity) : this._encodeIriOrBlank(entity);\n }\n\n // ### `_encodeIriOrBlank` represents an IRI or blank node\n _encodeIriOrBlank(entity) {\n // A blank node or list is represented as-is\n if (entity.termType !== 'NamedNode') {\n // If it is a list head, pretty-print it\n if (this._lists && (entity.value in this._lists))\n entity = this.list(this._lists[entity.value]);\n return 'id' in entity ? entity.id : `_:${entity.value}`;\n }\n let iri = entity.value;\n // Use relative IRIs if requested and possible\n if (this._baseMatcher && this._baseMatcher.test(iri))\n iri = iri.substr(this._baseLength);\n // Escape special characters\n if (escape.test(iri))\n iri = iri.replace(escapeAll, characterReplacer);\n // Try to represent the IRI as prefixed name\n const prefixMatch = this._prefixRegex.exec(iri);\n return !prefixMatch ? `<${iri}>` :\n (!prefixMatch[1] ? iri : this._prefixIRIs[prefixMatch[1]] + prefixMatch[2]);\n }\n\n // ### `_encodeLiteral` represents a literal\n _encodeLiteral(literal) {\n // Escape special characters\n let value = literal.value;\n if (escape.test(value))\n value = value.replace(escapeAll, characterReplacer);\n\n // Write a language-tagged literal\n if (literal.language)\n return `\"${value}\"@${literal.language}`;\n\n // Write dedicated literals per data type\n if (this._lineMode) {\n // Only abbreviate strings in N-Triples or N-Quads\n if (literal.datatype.value === xsd.string)\n return `\"${value}\"`;\n }\n else {\n // Use common datatype abbreviations in Turtle or TriG\n switch (literal.datatype.value) {\n case xsd.string:\n return `\"${value}\"`;\n case xsd.boolean:\n if (value === 'true' || value === 'false')\n return value;\n break;\n case xsd.integer:\n if (/^[+-]?\\d+$/.test(value))\n return value;\n break;\n case xsd.decimal:\n if (/^[+-]?\\d*\\.\\d+$/.test(value))\n return value;\n break;\n case xsd.double:\n if (/^[+-]?(?:\\d+\\.\\d*|\\.?\\d+)[eE][+-]?\\d+$/.test(value))\n return value;\n break;\n }\n }\n\n // Write a regular datatyped literal\n return `\"${value}\"^^${this._encodeIriOrBlank(literal.datatype)}`;\n }\n\n // ### `_encodePredicate` represents a predicate\n _encodePredicate(predicate) {\n return predicate.value === rdf.type ? 'a' : this._encodeIriOrBlank(predicate);\n }\n\n // ### `_encodeObject` represents an object\n _encodeObject(object) {\n switch (object.termType) {\n case 'Quad':\n return this._encodeQuad(object);\n case 'Literal':\n return this._encodeLiteral(object);\n default:\n return this._encodeIriOrBlank(object);\n }\n }\n\n // ### `_encodeQuad` encodes an RDF* quad\n _encodeQuad({ subject, predicate, object, graph }) {\n return `<<${\n this._encodeSubject(subject)} ${\n this._encodePredicate(predicate)} ${\n this._encodeObject(object)}${\n isDefaultGraph(graph) ? '' : ` ${this._encodeIriOrBlank(graph)}`}>>`;\n }\n\n // ### `_blockedWrite` replaces `_write` after the writer has been closed\n _blockedWrite() {\n throw new Error('Cannot write because the writer has been closed.');\n }\n\n // ### `addQuad` adds the quad to the output stream\n addQuad(subject, predicate, object, graph, done) {\n // The quad was given as an object, so shift parameters\n if (object === undefined)\n this._writeQuad(subject.subject, subject.predicate, subject.object, subject.graph, predicate);\n // The optional `graph` parameter was not provided\n else if (typeof graph === 'function')\n this._writeQuad(subject, predicate, object, DEFAULTGRAPH, graph);\n // The `graph` parameter was provided\n else\n this._writeQuad(subject, predicate, object, graph || DEFAULTGRAPH, done);\n }\n\n // ### `addQuads` adds the quads to the output stream\n addQuads(quads) {\n for (let i = 0; i < quads.length; i++)\n this.addQuad(quads[i]);\n }\n\n // ### `addPrefix` adds the prefix to the output stream\n addPrefix(prefix, iri, done) {\n const prefixes = {};\n prefixes[prefix] = iri;\n this.addPrefixes(prefixes, done);\n }\n\n // ### `addPrefixes` adds the prefixes to the output stream\n addPrefixes(prefixes, done) {\n // Ignore prefixes if not supported by the serialization\n if (!this._prefixIRIs)\n return done && done();\n\n // Write all new prefixes\n let hasPrefixes = false;\n for (let prefix in prefixes) {\n let iri = prefixes[prefix];\n if (typeof iri !== 'string')\n iri = iri.value;\n hasPrefixes = true;\n // Finish a possible pending quad\n if (this._subject !== null) {\n this._write(this._inDefaultGraph ? '.\\n' : '\\n}\\n');\n this._subject = null, this._graph = '';\n }\n // Store and write the prefix\n this._prefixIRIs[iri] = (prefix += ':');\n this._write(`@prefix ${prefix} <${iri}>.\\n`);\n }\n // Recreate the prefix matcher\n if (hasPrefixes) {\n let IRIlist = '', prefixList = '';\n for (const prefixIRI in this._prefixIRIs) {\n IRIlist += IRIlist ? `|${prefixIRI}` : prefixIRI;\n prefixList += (prefixList ? '|' : '') + this._prefixIRIs[prefixIRI];\n }\n IRIlist = escapeRegex(IRIlist, /[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n this._prefixRegex = new RegExp(`^(?:${prefixList})[^\\/]*$|` +\n `^(${IRIlist})([_a-zA-Z][\\\\-_a-zA-Z0-9]*)$`);\n }\n // End a prefix block with a newline\n this._write(hasPrefixes ? '\\n' : '', done);\n }\n\n // ### `blank` creates a blank node with the given content\n blank(predicate, object) {\n let children = predicate, child, length;\n // Empty blank node\n if (predicate === undefined)\n children = [];\n // Blank node passed as blank(Term(\"predicate\"), Term(\"object\"))\n else if (predicate.termType)\n children = [{ predicate: predicate, object: object }];\n // Blank node passed as blank({ predicate: predicate, object: object })\n else if (!('length' in predicate))\n children = [predicate];\n\n switch (length = children.length) {\n // Generate an empty blank node\n case 0:\n return new SerializedTerm('[]');\n // Generate a non-nested one-triple blank node\n case 1:\n child = children[0];\n if (!(child.object instanceof SerializedTerm))\n return new SerializedTerm(`[ ${this._encodePredicate(child.predicate)} ${\n this._encodeObject(child.object)} ]`);\n // Generate a multi-triple or nested blank node\n default:\n let contents = '[';\n // Write all triples in order\n for (let i = 0; i < length; i++) {\n child = children[i];\n // Write only the object is the predicate is the same as the previous\n if (child.predicate.equals(predicate))\n contents += `, ${this._encodeObject(child.object)}`;\n // Otherwise, write the predicate and the object\n else {\n contents += `${(i ? ';\\n ' : '\\n ') +\n this._encodePredicate(child.predicate)} ${\n this._encodeObject(child.object)}`;\n predicate = child.predicate;\n }\n }\n return new SerializedTerm(`${contents}\\n]`);\n }\n }\n\n // ### `list` creates a list node with the given content\n list(elements) {\n const length = elements && elements.length || 0, contents = new Array(length);\n for (let i = 0; i < length; i++)\n contents[i] = this._encodeObject(elements[i]);\n return new SerializedTerm(`(${contents.join(' ')})`);\n }\n\n // ### `end` signals the end of the output stream\n end(done) {\n // Finish a possible pending quad\n if (this._subject !== null) {\n this._write(this._inDefaultGraph ? '.\\n' : '\\n}\\n');\n this._subject = null;\n }\n // Disallow further writing\n this._write = this._blockedWrite;\n\n // Try to end the underlying stream, ensuring done is called exactly one time\n let singleDone = done && ((error, result) => { singleDone = null, done(error, result); });\n if (this._endStream) {\n try { return this._outputStream.end(singleDone); }\n catch (error) { /* error closing stream */ }\n }\n singleDone && singleDone();\n }\n}\n\n// Replaces a character by its escaped version\nfunction characterReplacer(character) {\n // Replace a single character by its escaped version\n let result = escapedCharacters[character];\n if (result === undefined) {\n // Replace a single character with its 4-bit unicode escape sequence\n if (character.length === 1) {\n result = character.charCodeAt(0).toString(16);\n result = '\\\\u0000'.substr(0, 6 - result.length) + result;\n }\n // Replace a surrogate pair with its 8-bit unicode escape sequence\n else {\n result = ((character.charCodeAt(0) - 0xD800) * 0x400 +\n character.charCodeAt(1) + 0x2400).toString(16);\n result = '\\\\U00000000'.substr(0, 10 - result.length) + result;\n }\n }\n return result;\n}\n\nfunction escapeRegex(regex) {\n return regex.replace(/[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n}\n","// **N3Store** objects store N3 quads by graph in memory.\nimport { Readable } from 'readable-stream';\nimport { default as N3DataFactory, termToId, termFromId } from './N3DataFactory';\nimport namespaces from './IRIs';\nimport { isDefaultGraph } from './N3Util';\n\n// ## Constructor\nexport default class N3Store {\n constructor(quads, options) {\n // The number of quads is initially zero\n this._size = 0;\n // `_graphs` contains subject, predicate, and object indexes per graph\n this._graphs = Object.create(null);\n // `_ids` maps entities such as `http://xmlns.com/foaf/0.1/name` to numbers,\n // saving memory by using only numbers as keys in `_graphs`\n this._id = 0;\n this._ids = Object.create(null);\n this._entities = Object.create(null); // inverse of `_ids`\n // `_blankNodeIndex` is the index of the last automatically named blank node\n this._blankNodeIndex = 0;\n\n // Shift parameters if `quads` is not given\n if (!options && quads && !quads[0])\n options = quads, quads = null;\n options = options || {};\n this._factory = options.factory || N3DataFactory;\n\n // Add quads if passed\n if (quads)\n this.addQuads(quads);\n }\n\n _termFromId(id, factory) {\n if (id[0] === '.') {\n const entities = this._entities;\n const terms = id.split('.');\n const q = this._factory.quad(\n this._termFromId(entities[terms[1]]),\n this._termFromId(entities[terms[2]]),\n this._termFromId(entities[terms[3]]),\n terms[4] && this._termFromId(entities[terms[4]])\n );\n return q;\n }\n return termFromId(id, factory);\n }\n\n _termToNumericId(term) {\n if (term.termType === 'Quad') {\n const s = this._termToNumericId(term.subject),\n p = this._termToNumericId(term.predicate),\n o = this._termToNumericId(term.object);\n let g;\n\n return s && p && o && (isDefaultGraph(term.graph) || (g = this._termToNumericId(term.graph))) &&\n this._ids[g ? `.${s}.${p}.${o}.${g}` : `.${s}.${p}.${o}`];\n }\n return this._ids[termToId(term)];\n }\n\n _termToNewNumericId(term) {\n // This assumes that no graph term is present - we may wish to error if there is one\n const str = term && term.termType === 'Quad' ?\n `.${this._termToNewNumericId(term.subject)}.${this._termToNewNumericId(term.predicate)}.${this._termToNewNumericId(term.object)}${\n isDefaultGraph(term.graph) ? '' : `.${this._termToNewNumericId(term.graph)}`\n }`\n : termToId(term);\n\n return this._ids[str] || (this._ids[this._entities[++this._id] = str] = this._id);\n }\n\n // ## Public properties\n\n // ### `size` returns the number of quads in the store\n get size() {\n // Return the quad count if if was cached\n let size = this._size;\n if (size !== null)\n return size;\n\n // Calculate the number of quads by counting to the deepest level\n size = 0;\n const graphs = this._graphs;\n let subjects, subject;\n for (const graphKey in graphs)\n for (const subjectKey in (subjects = graphs[graphKey].subjects))\n for (const predicateKey in (subject = subjects[subjectKey]))\n size += Object.keys(subject[predicateKey]).length;\n return this._size = size;\n }\n\n // ## Private methods\n\n // ### `_addToIndex` adds a quad to a three-layered index.\n // Returns if the index has changed, if the entry did not already exist.\n _addToIndex(index0, key0, key1, key2) {\n // Create layers as necessary\n const index1 = index0[key0] || (index0[key0] = {});\n const index2 = index1[key1] || (index1[key1] = {});\n // Setting the key to _any_ value signals the presence of the quad\n const existed = key2 in index2;\n if (!existed)\n index2[key2] = null;\n return !existed;\n }\n\n // ### `_removeFromIndex` removes a quad from a three-layered index\n _removeFromIndex(index0, key0, key1, key2) {\n // Remove the quad from the index\n const index1 = index0[key0], index2 = index1[key1];\n delete index2[key2];\n\n // Remove intermediary index layers if they are empty\n for (const key in index2) return;\n delete index1[key1];\n for (const key in index1) return;\n delete index0[key0];\n }\n\n // ### `_findInIndex` finds a set of quads in a three-layered index.\n // The index base is `index0` and the keys at each level are `key0`, `key1`, and `key2`.\n // Any of these keys can be undefined, which is interpreted as a wildcard.\n // `name0`, `name1`, and `name2` are the names of the keys at each level,\n // used when reconstructing the resulting quad\n // (for instance: _subject_, _predicate_, and _object_).\n // Finally, `graphId` will be the graph of the created quads.\n *_findInIndex(index0, key0, key1, key2, name0, name1, name2, graphId) {\n let tmp, index1, index2;\n const entityKeys = this._entities;\n const graph = this._termFromId(graphId, this._factory);\n const parts = { subject: null, predicate: null, object: null };\n\n // If a key is specified, use only that part of index 0.\n if (key0) (tmp = index0, index0 = {})[key0] = tmp[key0];\n for (const value0 in index0) {\n if (index1 = index0[value0]) {\n parts[name0] = this._termFromId(entityKeys[value0], this._factory);\n // If a key is specified, use only that part of index 1.\n if (key1) (tmp = index1, index1 = {})[key1] = tmp[key1];\n for (const value1 in index1) {\n if (index2 = index1[value1]) {\n parts[name1] = this._termFromId(entityKeys[value1], this._factory);\n // If a key is specified, use only that part of index 2, if it exists.\n const values = key2 ? (key2 in index2 ? [key2] : []) : Object.keys(index2);\n // Create quads for all items found in index 2.\n for (let l = 0; l < values.length; l++) {\n parts[name2] = this._termFromId(entityKeys[values[l]], this._factory);\n yield this._factory.quad(parts.subject, parts.predicate, parts.object, graph);\n }\n }\n }\n }\n }\n }\n\n // ### `_loop` executes the callback on all keys of index 0\n _loop(index0, callback) {\n for (const key0 in index0)\n callback(key0);\n }\n\n // ### `_loopByKey0` executes the callback on all keys of a certain entry in index 0\n _loopByKey0(index0, key0, callback) {\n let index1, key1;\n if (index1 = index0[key0]) {\n for (key1 in index1)\n callback(key1);\n }\n }\n\n // ### `_loopByKey1` executes the callback on given keys of all entries in index 0\n _loopByKey1(index0, key1, callback) {\n let key0, index1;\n for (key0 in index0) {\n index1 = index0[key0];\n if (index1[key1])\n callback(key0);\n }\n }\n\n // ### `_loopBy2Keys` executes the callback on given keys of certain entries in index 2\n _loopBy2Keys(index0, key0, key1, callback) {\n let index1, index2, key2;\n if ((index1 = index0[key0]) && (index2 = index1[key1])) {\n for (key2 in index2)\n callback(key2);\n }\n }\n\n // ### `_countInIndex` counts matching quads in a three-layered index.\n // The index base is `index0` and the keys at each level are `key0`, `key1`, and `key2`.\n // Any of these keys can be undefined, which is interpreted as a wildcard.\n _countInIndex(index0, key0, key1, key2) {\n let count = 0, tmp, index1, index2;\n\n // If a key is specified, count only that part of index 0\n if (key0) (tmp = index0, index0 = {})[key0] = tmp[key0];\n for (const value0 in index0) {\n if (index1 = index0[value0]) {\n // If a key is specified, count only that part of index 1\n if (key1) (tmp = index1, index1 = {})[key1] = tmp[key1];\n for (const value1 in index1) {\n if (index2 = index1[value1]) {\n // If a key is specified, count the quad if it exists\n if (key2) (key2 in index2) && count++;\n // Otherwise, count all quads\n else count += Object.keys(index2).length;\n }\n }\n }\n }\n return count;\n }\n\n // ### `_getGraphs` returns an array with the given graph,\n // or all graphs if the argument is null or undefined.\n _getGraphs(graph) {\n if (!isString(graph))\n return this._graphs;\n const graphs = {};\n graphs[graph] = this._graphs[graph];\n return graphs;\n }\n\n // ### `_uniqueEntities` returns a function that accepts an entity ID\n // and passes the corresponding entity to callback if it hasn't occurred before.\n _uniqueEntities(callback) {\n const uniqueIds = Object.create(null);\n return id => {\n if (!(id in uniqueIds)) {\n uniqueIds[id] = true;\n callback(this._termFromId(this._entities[id], this._factory));\n }\n };\n }\n\n // ## Public methods\n\n // ### `add` adds the specified quad to the dataset.\n // Returns the dataset instance it was called on.\n // Existing quads, as defined in Quad.equals, will be ignored.\n add(quad) {\n this.addQuad(quad);\n return this;\n }\n\n // ### `addQuad` adds a new quad to the store.\n // Returns if the quad index has changed, if the quad did not already exist.\n addQuad(subject, predicate, object, graph) {\n // Shift arguments if a quad object is given instead of components\n if (!predicate)\n graph = subject.graph, object = subject.object,\n predicate = subject.predicate, subject = subject.subject;\n\n // Convert terms to internal string representation\n graph = termToId(graph);\n\n // Find the graph that will contain the triple\n let graphItem = this._graphs[graph];\n // Create the graph if it doesn't exist yet\n if (!graphItem) {\n graphItem = this._graphs[graph] = { subjects: {}, predicates: {}, objects: {} };\n // Freezing a graph helps subsequent `add` performance,\n // and properties will never be modified anyway\n Object.freeze(graphItem);\n }\n\n // Since entities can often be long IRIs, we avoid storing them in every index.\n // Instead, we have a separate index that maps entities to numbers,\n // which are then used as keys in the other indexes.\n subject = this._termToNewNumericId(subject);\n predicate = this._termToNewNumericId(predicate);\n object = this._termToNewNumericId(object);\n\n const changed = this._addToIndex(graphItem.subjects, subject, predicate, object);\n this._addToIndex(graphItem.predicates, predicate, object, subject);\n this._addToIndex(graphItem.objects, object, subject, predicate);\n\n // The cached quad count is now invalid\n this._size = null;\n return changed;\n }\n\n // ### `addQuads` adds multiple quads to the store\n addQuads(quads) {\n for (let i = 0; i < quads.length; i++)\n this.addQuad(quads[i]);\n }\n\n // ### `delete` removes the specified quad from the dataset.\n // Returns the dataset instance it was called on.\n delete(quad) {\n this.removeQuad(quad);\n return this;\n }\n\n // ### `has` determines whether a dataset includes a certain quad or quad pattern.\n has(subjectOrQuad, predicate, object, graph) {\n if (subjectOrQuad && subjectOrQuad.subject)\n ({ subject: subjectOrQuad, predicate, object, graph } = subjectOrQuad);\n return !this.readQuads(subjectOrQuad, predicate, object, graph).next().done;\n }\n\n // ### `import` adds a stream of quads to the store\n import(stream) {\n stream.on('data', quad => { this.addQuad(quad); });\n return stream;\n }\n\n // ### `removeQuad` removes a quad from the store if it exists\n removeQuad(subject, predicate, object, graph) {\n // Shift arguments if a quad object is given instead of components\n if (!predicate)\n graph = subject.graph, object = subject.object,\n predicate = subject.predicate, subject = subject.subject;\n\n // Convert terms to internal string representation\n graph = termToId(graph);\n\n // Find internal identifiers for all components\n // and verify the quad exists.\n const graphs = this._graphs;\n let graphItem, subjects, predicates;\n if (!(subject = subject && this._termToNumericId(subject)) || !(predicate = predicate && this._termToNumericId(predicate)) ||\n !(object = object && this._termToNumericId(object)) || !(graphItem = graphs[graph]) ||\n !(subjects = graphItem.subjects[subject]) ||\n !(predicates = subjects[predicate]) ||\n !(object in predicates))\n return false;\n\n // Remove it from all indexes\n this._removeFromIndex(graphItem.subjects, subject, predicate, object);\n this._removeFromIndex(graphItem.predicates, predicate, object, subject);\n this._removeFromIndex(graphItem.objects, object, subject, predicate);\n if (this._size !== null) this._size--;\n\n // Remove the graph if it is empty\n for (subject in graphItem.subjects) return true;\n delete graphs[graph];\n return true;\n }\n\n // ### `removeQuads` removes multiple quads from the store\n removeQuads(quads) {\n for (let i = 0; i < quads.length; i++)\n this.removeQuad(quads[i]);\n }\n\n // ### `remove` removes a stream of quads from the store\n remove(stream) {\n stream.on('data', quad => { this.removeQuad(quad); });\n return stream;\n }\n\n // ### `removeMatches` removes all matching quads from the store\n // Setting any field to `undefined` or `null` indicates a wildcard.\n removeMatches(subject, predicate, object, graph) {\n const stream = new Readable({ objectMode: true });\n\n stream._read = () => {\n for (const quad of this.readQuads(subject, predicate, object, graph))\n stream.push(quad);\n stream.push(null);\n };\n\n return this.remove(stream);\n }\n\n // ### `deleteGraph` removes all triples with the given graph from the store\n deleteGraph(graph) {\n return this.removeMatches(null, null, null, graph);\n }\n\n // ### `getQuads` returns an array of quads matching a pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getQuads(subject, predicate, object, graph) {\n return [...this.readQuads(subject, predicate, object, graph)];\n }\n\n // ### `readQuads` returns an generator of quads matching a pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n *readQuads(subject, predicate, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, subjectId, predicateId, objectId;\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n predicate && !(predicateId = this._termToNumericId(predicate)) ||\n object && !(objectId = this._termToNumericId(object)))\n return;\n\n for (const graphId in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graphId]) {\n // Choose the optimal index, based on what fields are present\n if (subjectId) {\n if (objectId)\n // If subject and object are given, the object index will be the fastest\n yield* this._findInIndex(content.objects, objectId, subjectId, predicateId,\n 'object', 'subject', 'predicate', graphId);\n else\n // If only subject and possibly predicate are given, the subject index will be the fastest\n yield* this._findInIndex(content.subjects, subjectId, predicateId, null,\n 'subject', 'predicate', 'object', graphId);\n }\n else if (predicateId)\n // If only predicate and possibly object are given, the predicate index will be the fastest\n yield* this._findInIndex(content.predicates, predicateId, objectId, null,\n 'predicate', 'object', 'subject', graphId);\n else if (objectId)\n // If only object is given, the object index will be the fastest\n yield* this._findInIndex(content.objects, objectId, null, null,\n 'object', 'subject', 'predicate', graphId);\n else\n // If nothing is given, iterate subjects and predicates first\n yield* this._findInIndex(content.subjects, null, null, null,\n 'subject', 'predicate', 'object', graphId);\n }\n }\n }\n\n // ### `match` returns a new dataset that is comprised of all quads in the current instance matching the given arguments.\n // The logic described in Quad Matching is applied for each quad in this dataset to check if it should be included in the output dataset.\n // Note: This method always returns a new DatasetCore, even if that dataset contains no quads.\n // Note: Since a DatasetCore is an unordered set, the order of the quads within the returned sequence is arbitrary.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n // For backwards compatibility, the object return also implements the Readable stream interface.\n match(subject, predicate, object, graph) {\n return new DatasetCoreAndReadableStream(this, subject, predicate, object, graph);\n }\n\n // ### `countQuads` returns the number of quads matching a pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n countQuads(subject, predicate, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let count = 0, content, subjectId, predicateId, objectId;\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n predicate && !(predicateId = this._termToNumericId(predicate)) ||\n object && !(objectId = this._termToNumericId(object)))\n return 0;\n\n for (const graphId in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graphId]) {\n // Choose the optimal index, based on what fields are present\n if (subject) {\n if (object)\n // If subject and object are given, the object index will be the fastest\n count += this._countInIndex(content.objects, objectId, subjectId, predicateId);\n else\n // If only subject and possibly predicate are given, the subject index will be the fastest\n count += this._countInIndex(content.subjects, subjectId, predicateId, objectId);\n }\n else if (predicate) {\n // If only predicate and possibly object are given, the predicate index will be the fastest\n count += this._countInIndex(content.predicates, predicateId, objectId, subjectId);\n }\n else {\n // If only object is possibly given, the object index will be the fastest\n count += this._countInIndex(content.objects, objectId, subjectId, predicateId);\n }\n }\n }\n return count;\n }\n\n // ### `forEach` executes the callback on all quads.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forEach(callback, subject, predicate, object, graph) {\n this.some(quad => {\n callback(quad);\n return false;\n }, subject, predicate, object, graph);\n }\n\n // ### `every` executes the callback on all quads,\n // and returns `true` if it returns truthy for all them.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n every(callback, subject, predicate, object, graph) {\n let some = false;\n const every = !this.some(quad => {\n some = true;\n return !callback(quad);\n }, subject, predicate, object, graph);\n return some && every;\n }\n\n // ### `some` executes the callback on all quads,\n // and returns `true` if it returns truthy for any of them.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n some(callback, subject, predicate, object, graph) {\n for (const quad of this.readQuads(subject, predicate, object, graph))\n if (callback(quad))\n return true;\n return false;\n }\n\n // ### `getSubjects` returns all subjects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getSubjects(predicate, object, graph) {\n const results = [];\n this.forSubjects(s => { results.push(s); }, predicate, object, graph);\n return results;\n }\n\n // ### `forSubjects` executes the callback on all subjects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forSubjects(callback, predicate, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, predicateId, objectId;\n callback = this._uniqueEntities(callback);\n\n // Translate IRIs to internal index keys.\n if (predicate && !(predicateId = this._termToNumericId(predicate)) ||\n object && !(objectId = this._termToNumericId(object)))\n return;\n\n for (graph in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graph]) {\n // Choose optimal index based on which fields are wildcards\n if (predicateId) {\n if (objectId)\n // If predicate and object are given, the POS index is best.\n this._loopBy2Keys(content.predicates, predicateId, objectId, callback);\n else\n // If only predicate is given, the SPO index is best.\n this._loopByKey1(content.subjects, predicateId, callback);\n }\n else if (objectId)\n // If only object is given, the OSP index is best.\n this._loopByKey0(content.objects, objectId, callback);\n else\n // If no params given, iterate all the subjects\n this._loop(content.subjects, callback);\n }\n }\n }\n\n // ### `getPredicates` returns all predicates that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getPredicates(subject, object, graph) {\n const results = [];\n this.forPredicates(p => { results.push(p); }, subject, object, graph);\n return results;\n }\n\n // ### `forPredicates` executes the callback on all predicates that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forPredicates(callback, subject, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, subjectId, objectId;\n callback = this._uniqueEntities(callback);\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n object && !(objectId = this._termToNumericId(object)))\n return;\n\n for (graph in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graph]) {\n // Choose optimal index based on which fields are wildcards\n if (subjectId) {\n if (objectId)\n // If subject and object are given, the OSP index is best.\n this._loopBy2Keys(content.objects, objectId, subjectId, callback);\n else\n // If only subject is given, the SPO index is best.\n this._loopByKey0(content.subjects, subjectId, callback);\n }\n else if (objectId)\n // If only object is given, the POS index is best.\n this._loopByKey1(content.predicates, objectId, callback);\n else\n // If no params given, iterate all the predicates.\n this._loop(content.predicates, callback);\n }\n }\n }\n\n // ### `getObjects` returns all objects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getObjects(subject, predicate, graph) {\n const results = [];\n this.forObjects(o => { results.push(o); }, subject, predicate, graph);\n return results;\n }\n\n // ### `forObjects` executes the callback on all objects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forObjects(callback, subject, predicate, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, subjectId, predicateId;\n callback = this._uniqueEntities(callback);\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n predicate && !(predicateId = this._termToNumericId(predicate)))\n return;\n\n for (graph in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graph]) {\n // Choose optimal index based on which fields are wildcards\n if (subjectId) {\n if (predicateId)\n // If subject and predicate are given, the SPO index is best.\n this._loopBy2Keys(content.subjects, subjectId, predicateId, callback);\n else\n // If only subject is given, the OSP index is best.\n this._loopByKey1(content.objects, subjectId, callback);\n }\n else if (predicateId)\n // If only predicate is given, the POS index is best.\n this._loopByKey0(content.predicates, predicateId, callback);\n else\n // If no params given, iterate all the objects.\n this._loop(content.objects, callback);\n }\n }\n }\n\n // ### `getGraphs` returns all graphs that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getGraphs(subject, predicate, object) {\n const results = [];\n this.forGraphs(g => { results.push(g); }, subject, predicate, object);\n return results;\n }\n\n // ### `forGraphs` executes the callback on all graphs that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forGraphs(callback, subject, predicate, object) {\n for (const graph in this._graphs) {\n this.some(quad => {\n callback(quad.graph);\n return true; // Halt iteration of some()\n }, subject, predicate, object, graph);\n }\n }\n\n // ### `createBlankNode` creates a new blank node, returning its name\n createBlankNode(suggestedName) {\n let name, index;\n // Generate a name based on the suggested name\n if (suggestedName) {\n name = suggestedName = `_:${suggestedName}`, index = 1;\n while (this._ids[name])\n name = suggestedName + index++;\n }\n // Generate a generic blank node name\n else {\n do { name = `_:b${this._blankNodeIndex++}`; }\n while (this._ids[name]);\n }\n // Add the blank node to the entities, avoiding the generation of duplicates\n this._ids[name] = ++this._id;\n this._entities[this._id] = name;\n return this._factory.blankNode(name.substr(2));\n }\n\n // ### `extractLists` finds and removes all list triples\n // and returns the items per list.\n extractLists({ remove = false, ignoreErrors = false } = {}) {\n const lists = {}; // has scalar keys so could be a simple Object\n const onError = ignoreErrors ? (() => true) :\n ((node, message) => { throw new Error(`${node.value} ${message}`); });\n\n // Traverse each list from its tail\n const tails = this.getQuads(null, namespaces.rdf.rest, namespaces.rdf.nil, null);\n const toRemove = remove ? [...tails] : [];\n tails.forEach(tailQuad => {\n const items = []; // the members found as objects of rdf:first quads\n let malformed = false; // signals whether the current list is malformed\n let head; // the head of the list (_:b1 in above example)\n let headPos; // set to subject or object when head is set\n const graph = tailQuad.graph; // make sure list is in exactly one graph\n\n // Traverse the list from tail to end\n let current = tailQuad.subject;\n while (current && !malformed) {\n const objectQuads = this.getQuads(null, null, current, null);\n const subjectQuads = this.getQuads(current, null, null, null);\n let quad, first = null, rest = null, parent = null;\n\n // Find the first and rest of this list node\n for (let i = 0; i < subjectQuads.length && !malformed; i++) {\n quad = subjectQuads[i];\n if (!quad.graph.equals(graph))\n malformed = onError(current, 'not confined to single graph');\n else if (head)\n malformed = onError(current, 'has non-list arcs out');\n\n // one rdf:first\n else if (quad.predicate.value === namespaces.rdf.first) {\n if (first)\n malformed = onError(current, 'has multiple rdf:first arcs');\n else\n toRemove.push(first = quad);\n }\n\n // one rdf:rest\n else if (quad.predicate.value === namespaces.rdf.rest) {\n if (rest)\n malformed = onError(current, 'has multiple rdf:rest arcs');\n else\n toRemove.push(rest = quad);\n }\n\n // alien triple\n else if (objectQuads.length)\n malformed = onError(current, 'can\\'t be subject and object');\n else {\n head = quad; // e.g. { (1 2 3) :p :o }\n headPos = 'subject';\n }\n }\n\n // { :s :p (1 2) } arrives here with no head\n // { (1 2) :p :o } arrives here with head set to the list.\n for (let i = 0; i < objectQuads.length && !malformed; ++i) {\n quad = objectQuads[i];\n if (head)\n malformed = onError(current, 'can\\'t have coreferences');\n // one rdf:rest\n else if (quad.predicate.value === namespaces.rdf.rest) {\n if (parent)\n malformed = onError(current, 'has incoming rdf:rest arcs');\n else\n parent = quad;\n }\n else {\n head = quad; // e.g. { :s :p (1 2) }\n headPos = 'object';\n }\n }\n\n // Store the list item and continue with parent\n if (!first)\n malformed = onError(current, 'has no list head');\n else\n items.unshift(first.object);\n current = parent && parent.subject;\n }\n\n // Don't remove any quads if the list is malformed\n if (malformed)\n remove = false;\n // Store the list under the value of its head\n else if (head)\n lists[head[headPos].value] = items;\n });\n\n // Remove list quads if requested\n if (remove)\n this.removeQuads(toRemove);\n return lists;\n }\n\n // ### Store is an iterable.\n // Can be used where iterables are expected: for...of loops, array spread operator,\n // `yield*`, and destructuring assignment (order is not guaranteed).\n *[Symbol.iterator]() {\n yield* this.readQuads();\n }\n}\n\n// Determines whether the argument is a string\nfunction isString(s) {\n return typeof s === 'string' || s instanceof String;\n}\n\n/**\n * A class that implements both DatasetCore and Readable.\n */\nclass DatasetCoreAndReadableStream extends Readable {\n constructor(n3Store, subject, predicate, object, graph) {\n super({ objectMode: true });\n Object.assign(this, { n3Store, subject, predicate, object, graph });\n }\n\n get filtered() {\n if (!this._filtered) {\n const { n3Store, graph, object, predicate, subject } = this;\n const newStore = this._filtered = new N3Store({ factory: n3Store._factory });\n for (const quad of n3Store.readQuads(subject, predicate, object, graph))\n newStore.addQuad(quad);\n }\n return this._filtered;\n }\n\n get size() {\n return this.filtered.size;\n }\n\n _read() {\n for (const quad of this)\n this.push(quad);\n this.push(null);\n }\n\n add(quad) {\n return this.filtered.add(quad);\n }\n\n delete(quad) {\n return this.filtered.delete(quad);\n }\n\n has(quad) {\n return this.filtered.has(quad);\n }\n\n match(subject, predicate, object, graph) {\n return new DatasetCoreAndReadableStream(this.filtered, subject, predicate, object, graph);\n }\n\n *[Symbol.iterator]() {\n yield* this._filtered || this.n3Store.readQuads(this.subject, this.predicate, this.object, this.graph);\n }\n}\n","// **N3StreamParser** parses a text stream into a quad stream.\nimport { Transform } from 'readable-stream';\nimport N3Parser from './N3Parser';\n\n// ## Constructor\nexport default class N3StreamParser extends Transform {\n constructor(options) {\n super({ decodeStrings: true });\n this._readableState.objectMode = true;\n\n // Set up parser with dummy stream to obtain `data` and `end` callbacks\n const parser = new N3Parser(options);\n let onData, onEnd;\n parser.parse({\n on: (event, callback) => {\n switch (event) {\n case 'data': onData = callback; break;\n case 'end': onEnd = callback; break;\n }\n },\n },\n // Handle quads by pushing them down the pipeline\n (error, quad) => { error && this.emit('error', error) || quad && this.push(quad); },\n // Emit prefixes through the `prefix` event\n (prefix, uri) => { this.emit('prefix', prefix, uri); }\n );\n\n // Implement Transform methods through parser callbacks\n this._transform = (chunk, encoding, done) => { onData(chunk); done(); };\n this._flush = done => { onEnd(); done(); };\n }\n\n // ### Parses a stream of strings\n import(stream) {\n stream.on('data', chunk => { this.write(chunk); });\n stream.on('end', () => { this.end(); });\n stream.on('error', error => { this.emit('error', error); });\n return this;\n }\n}\n","// **N3StreamWriter** serializes a quad stream into a text stream.\nimport { Transform } from 'readable-stream';\nimport N3Writer from './N3Writer';\n\n// ## Constructor\nexport default class N3StreamWriter extends Transform {\n constructor(options) {\n super({ encoding: 'utf8', writableObjectMode: true });\n\n // Set up writer with a dummy stream object\n const writer = this._writer = new N3Writer({\n write: (quad, encoding, callback) => { this.push(quad); callback && callback(); },\n end: callback => { this.push(null); callback && callback(); },\n }, options);\n\n // Implement Transform methods on top of writer\n this._transform = (quad, encoding, done) => { writer.addQuad(quad, done); };\n this._flush = done => { writer.end(done); };\n }\n\n// ### Serializes a stream of quads\n import(stream) {\n stream.on('data', quad => { this.write(quad); });\n stream.on('end', () => { this.end(); });\n stream.on('error', error => { this.emit('error', error); });\n stream.on('prefix', (prefix, iri) => { this._writer.addPrefix(prefix, iri); });\n return this;\n }\n}\n","import Lexer from './N3Lexer';\nimport Parser from './N3Parser';\nimport Writer from './N3Writer';\nimport Store from './N3Store';\nimport StreamParser from './N3StreamParser';\nimport StreamWriter from './N3StreamWriter';\nimport * as Util from './N3Util';\n\nimport {\n default as DataFactory,\n\n Term,\n NamedNode,\n Literal,\n BlankNode,\n Variable,\n DefaultGraph,\n Quad,\n Triple,\n\n termFromId,\n termToId,\n} from './N3DataFactory';\n\n// Named exports\nexport {\n Lexer,\n Parser,\n Writer,\n Store,\n StreamParser,\n StreamWriter,\n Util,\n\n DataFactory,\n\n Term,\n NamedNode,\n Literal,\n BlankNode,\n Variable,\n DefaultGraph,\n Quad,\n Triple,\n\n termFromId,\n termToId,\n};\n\n// Export all named exports as a default object for backward compatibility\nexport default {\n Lexer,\n Parser,\n Writer,\n Store,\n StreamParser,\n StreamWriter,\n Util,\n\n DataFactory,\n\n Term,\n NamedNode,\n Literal,\n BlankNode,\n Variable,\n DefaultGraph,\n Quad,\n Triple,\n\n termFromId,\n termToId,\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","(function() {\n var root;\n\n\tif (typeof window === 'object' && window) {\n\t\troot = window;\n\t} else {\n\t\troot = global;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = root.Promise ? root.Promise : Promise;\n\t} else if (!root.Promise) {\n\t\troot.Promise = Promise;\n\t}\n\n\t// Use polyfill for setImmediate for performance gains\n\tvar asap = root.setImmediate || function(fn) { setTimeout(fn, 1); };\n\n\t// Polyfill for Function.prototype.bind\n\tfunction bind(fn, thisArg) {\n\t\treturn function() {\n\t\t\tfn.apply(thisArg, arguments);\n\t\t}\n\t}\n\n\tvar isArray = Array.isArray || function(value) { return Object.prototype.toString.call(value) === \"[object Array]\" };\n\n\tfunction Promise(fn) {\n\t\tif (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n\t\tif (typeof fn !== 'function') throw new TypeError('not a function');\n\t\tthis._state = null;\n\t\tthis._value = null;\n\t\tthis._deferreds = []\n\n\t\tdoResolve(fn, bind(resolve, this), bind(reject, this))\n\t}\n\n\tfunction handle(deferred) {\n\t\tvar me = this;\n\t\tif (this._state === null) {\n\t\t\tthis._deferreds.push(deferred);\n\t\t\treturn\n\t\t}\n\t\tasap(function() {\n\t\t\tvar cb = me._state ? deferred.onFulfilled : deferred.onRejected\n\t\t\tif (cb === null) {\n\t\t\t\t(me._state ? deferred.resolve : deferred.reject)(me._value);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar ret;\n\t\t\ttry {\n\t\t\t\tret = cb(me._value);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tdeferred.reject(e);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdeferred.resolve(ret);\n\t\t})\n\t}\n\n\tfunction resolve(newValue) {\n\t\ttry { //Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n\t\t\tif (newValue === this) throw new TypeError('A promise cannot be resolved with itself.');\n\t\t\tif (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n\t\t\t\tvar then = newValue.then;\n\t\t\t\tif (typeof then === 'function') {\n\t\t\t\t\tdoResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._state = true;\n\t\t\tthis._value = newValue;\n\t\t\tfinale.call(this);\n\t\t} catch (e) { reject.call(this, e); }\n\t}\n\n\tfunction reject(newValue) {\n\t\tthis._state = false;\n\t\tthis._value = newValue;\n\t\tfinale.call(this);\n\t}\n\n\tfunction finale() {\n\t\tfor (var i = 0, len = this._deferreds.length; i < len; i++) {\n\t\t\thandle.call(this, this._deferreds[i]);\n\t\t}\n\t\tthis._deferreds = null;\n\t}\n\n\tfunction Handler(onFulfilled, onRejected, resolve, reject){\n\t\tthis.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n\t\tthis.onRejected = typeof onRejected === 'function' ? onRejected : null;\n\t\tthis.resolve = resolve;\n\t\tthis.reject = reject;\n\t}\n\n\t/**\n\t * Take a potentially misbehaving resolver function and make sure\n\t * onFulfilled and onRejected are only called once.\n\t *\n\t * Makes no guarantees about asynchrony.\n\t */\n\tfunction doResolve(fn, onFulfilled, onRejected) {\n\t\tvar done = false;\n\t\ttry {\n\t\t\tfn(function (value) {\n\t\t\t\tif (done) return;\n\t\t\t\tdone = true;\n\t\t\t\tonFulfilled(value);\n\t\t\t}, function (reason) {\n\t\t\t\tif (done) return;\n\t\t\t\tdone = true;\n\t\t\t\tonRejected(reason);\n\t\t\t})\n\t\t} catch (ex) {\n\t\t\tif (done) return;\n\t\t\tdone = true;\n\t\t\tonRejected(ex);\n\t\t}\n\t}\n\n\tPromise.prototype['catch'] = function (onRejected) {\n\t\treturn this.then(null, onRejected);\n\t};\n\n\tPromise.prototype.then = function(onFulfilled, onRejected) {\n\t\tvar me = this;\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\thandle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));\n\t\t})\n\t};\n\n\tPromise.all = function () {\n\t\tvar args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (args.length === 0) return resolve([]);\n\t\t\tvar remaining = args.length;\n\t\t\tfunction res(i, val) {\n\t\t\t\ttry {\n\t\t\t\t\tif (val && (typeof val === 'object' || typeof val === 'function')) {\n\t\t\t\t\t\tvar then = val.then;\n\t\t\t\t\t\tif (typeof then === 'function') {\n\t\t\t\t\t\t\tthen.call(val, function (val) { res(i, val) }, reject);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\targs[i] = val;\n\t\t\t\t\tif (--remaining === 0) {\n\t\t\t\t\t\tresolve(args);\n\t\t\t\t\t}\n\t\t\t\t} catch (ex) {\n\t\t\t\t\treject(ex);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i = 0; i < args.length; i++) {\n\t\t\t\tres(i, args[i]);\n\t\t\t}\n\t\t});\n\t};\n\n\tPromise.resolve = function (value) {\n\t\tif (value && typeof value === 'object' && value.constructor === Promise) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn new Promise(function (resolve) {\n\t\t\tresolve(value);\n\t\t});\n\t};\n\n\tPromise.reject = function (value) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\treject(value);\n\t\t});\n\t};\n\n\tPromise.race = function (values) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tfor(var i = 0, len = values.length; i < len; i++) {\n\t\t\t\tvalues[i].then(resolve, reject);\n\t\t\t}\n\t\t});\n\t};\n})();","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/BlankNode\"), exports);\n__exportStar(require(\"./lib/DataFactory\"), exports);\n__exportStar(require(\"./lib/DefaultGraph\"), exports);\n__exportStar(require(\"./lib/Literal\"), exports);\n__exportStar(require(\"./lib/NamedNode\"), exports);\n__exportStar(require(\"./lib/Quad\"), exports);\n__exportStar(require(\"./lib/Variable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNode = void 0;\n/**\n * A term that represents an RDF blank node with a label.\n */\nclass BlankNode {\n constructor(value) {\n this.termType = 'BlankNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNode = BlankNode;\n//# sourceMappingURL=BlankNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataFactory = void 0;\nconst BlankNode_1 = require(\"./BlankNode\");\nconst DefaultGraph_1 = require(\"./DefaultGraph\");\nconst Literal_1 = require(\"./Literal\");\nconst NamedNode_1 = require(\"./NamedNode\");\nconst Quad_1 = require(\"./Quad\");\nconst Variable_1 = require(\"./Variable\");\nlet dataFactoryCounter = 0;\n/**\n * A factory for instantiating RDF terms and quads.\n */\nclass DataFactory {\n constructor(options) {\n this.blankNodeCounter = 0;\n options = options || {};\n this.blankNodePrefix = options.blankNodePrefix || `df_${dataFactoryCounter++}_`;\n }\n /**\n * @param value The IRI for the named node.\n * @return A new instance of NamedNode.\n * @see NamedNode\n */\n namedNode(value) {\n return new NamedNode_1.NamedNode(value);\n }\n /**\n * @param value The optional blank node identifier.\n * @return A new instance of BlankNode.\n * If the `value` parameter is undefined a new identifier\n * for the blank node is generated for each call.\n * @see BlankNode\n */\n blankNode(value) {\n return new BlankNode_1.BlankNode(value || `${this.blankNodePrefix}${this.blankNodeCounter++}`);\n }\n /**\n * @param value The literal value.\n * @param languageOrDatatype The optional language or datatype.\n * If `languageOrDatatype` is a NamedNode,\n * then it is used for the value of `NamedNode.datatype`.\n * Otherwise `languageOrDatatype` is used for the value\n * of `NamedNode.language`.\n * @return A new instance of Literal.\n * @see Literal\n */\n literal(value, languageOrDatatype) {\n return new Literal_1.Literal(value, languageOrDatatype);\n }\n /**\n * This method is optional.\n * @param value The variable name\n * @return A new instance of Variable.\n * @see Variable\n */\n variable(value) {\n return new Variable_1.Variable(value);\n }\n /**\n * @return An instance of DefaultGraph.\n */\n defaultGraph() {\n return DefaultGraph_1.DefaultGraph.INSTANCE;\n }\n /**\n * @param subject The quad subject term.\n * @param predicate The quad predicate term.\n * @param object The quad object term.\n * @param graph The quad graph term.\n * @return A new instance of Quad.\n * @see Quad\n */\n quad(subject, predicate, object, graph) {\n return new Quad_1.Quad(subject, predicate, object, graph || this.defaultGraph());\n }\n /**\n * Create a deep copy of the given term using this data factory.\n * @param original An RDF term.\n * @return A deep copy of the given term.\n */\n fromTerm(original) {\n // TODO: remove nasty any casts when this TS bug has been fixed:\n // https://github.com/microsoft/TypeScript/issues/26933\n switch (original.termType) {\n case 'NamedNode':\n return this.namedNode(original.value);\n case 'BlankNode':\n return this.blankNode(original.value);\n case 'Literal':\n if (original.language) {\n return this.literal(original.value, original.language);\n }\n if (!original.datatype.equals(Literal_1.Literal.XSD_STRING)) {\n return this.literal(original.value, this.fromTerm(original.datatype));\n }\n return this.literal(original.value);\n case 'Variable':\n return this.variable(original.value);\n case 'DefaultGraph':\n return this.defaultGraph();\n case 'Quad':\n return this.quad(this.fromTerm(original.subject), this.fromTerm(original.predicate), this.fromTerm(original.object), this.fromTerm(original.graph));\n }\n }\n /**\n * Create a deep copy of the given quad using this data factory.\n * @param original An RDF quad.\n * @return A deep copy of the given quad.\n */\n fromQuad(original) {\n return this.fromTerm(original);\n }\n /**\n * Reset the internal blank node counter.\n */\n resetBlankNodeCounter() {\n this.blankNodeCounter = 0;\n }\n}\nexports.DataFactory = DataFactory;\n//# sourceMappingURL=DataFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultGraph = void 0;\n/**\n * A singleton term instance that represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass DefaultGraph {\n constructor() {\n this.termType = 'DefaultGraph';\n this.value = '';\n // Private constructor\n }\n equals(other) {\n return !!other && other.termType === 'DefaultGraph';\n }\n}\nexports.DefaultGraph = DefaultGraph;\nDefaultGraph.INSTANCE = new DefaultGraph();\n//# sourceMappingURL=DefaultGraph.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Literal = void 0;\nconst NamedNode_1 = require(\"./NamedNode\");\n/**\n * A term that represents an RDF literal, containing a string with an optional language tag or datatype.\n */\nclass Literal {\n constructor(value, languageOrDatatype) {\n this.termType = 'Literal';\n this.value = value;\n if (typeof languageOrDatatype === 'string') {\n this.language = languageOrDatatype;\n this.datatype = Literal.RDF_LANGUAGE_STRING;\n }\n else if (languageOrDatatype) {\n this.language = '';\n this.datatype = languageOrDatatype;\n }\n else {\n this.language = '';\n this.datatype = Literal.XSD_STRING;\n }\n }\n equals(other) {\n return !!other && other.termType === 'Literal' && other.value === this.value &&\n other.language === this.language && this.datatype.equals(other.datatype);\n }\n}\nexports.Literal = Literal;\nLiteral.RDF_LANGUAGE_STRING = new NamedNode_1.NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');\nLiteral.XSD_STRING = new NamedNode_1.NamedNode('http://www.w3.org/2001/XMLSchema#string');\n//# sourceMappingURL=Literal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NamedNode = void 0;\n/**\n * A term that contains an IRI.\n */\nclass NamedNode {\n constructor(value) {\n this.termType = 'NamedNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'NamedNode' && other.value === this.value;\n }\n}\nexports.NamedNode = NamedNode;\n//# sourceMappingURL=NamedNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Quad = void 0;\n/**\n * An instance of DefaultGraph represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass Quad {\n constructor(subject, predicate, object, graph) {\n this.termType = 'Quad';\n this.value = '';\n this.subject = subject;\n this.predicate = predicate;\n this.object = object;\n this.graph = graph;\n }\n equals(other) {\n // `|| !other.termType` is for backwards-compatibility with old factories without RDF* support.\n return !!other && (other.termType === 'Quad' || !other.termType) &&\n this.subject.equals(other.subject) &&\n this.predicate.equals(other.predicate) &&\n this.object.equals(other.object) &&\n this.graph.equals(other.graph);\n }\n}\nexports.Quad = Quad;\n//# sourceMappingURL=Quad.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Variable = void 0;\n/**\n * A term that represents a variable.\n */\nclass Variable {\n constructor(value) {\n this.termType = 'Variable';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'Variable' && other.value === this.value;\n }\n}\nexports.Variable = Variable;\n//# sourceMappingURL=Variable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/RdfIsomorphic\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTermGrounded = exports.termToSignature = exports.quadToSignature = exports.sha1hex = exports.hashTerm = exports.hashTerms = exports.getGraphBlankNodes = exports.uniqGraph = exports.deindexGraph = exports.indexGraph = exports.getQuadsWithoutBlankNodes = exports.getQuadsWithBlankNodes = exports.hasValue = exports.hashValues = exports.getBijectionInner = exports.getBijection = exports.isomorphic = void 0;\nconst hash_js_1 = require(\"hash.js\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\n/**\n * Determines if the two given graphs are isomorphic.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {boolean} If the two given graphs are isomorphic.\n */\nfunction isomorphic(graphA, graphB) {\n return !!getBijection(graphA, graphB);\n}\nexports.isomorphic = isomorphic;\n/**\n * Calculate a hash of graphA blank nodes to graphB blank nodes.\n * This represents a bijection from graphA's blank nodes to graphB's blank nodes.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {IBijection} A hash representing a bijection, or null if none could be found.\n */\nfunction getBijection(graphA, graphB) {\n // Check if all (non-blanknode-containing) quads in the two graphs are equal.\n // We do this by creating a hash-based index for both graphs.\n const nonBlankIndexA = indexGraph(getQuadsWithoutBlankNodes(graphA));\n const nonBlankIndexB = indexGraph(getQuadsWithoutBlankNodes(graphB));\n if (Object.keys(nonBlankIndexA).length !== Object.keys(nonBlankIndexB).length) {\n return null;\n }\n for (const key in nonBlankIndexA) {\n if (nonBlankIndexA[key] !== nonBlankIndexB[key]) {\n return null;\n }\n }\n // Pre-process data that needs to be present in each iteration of getBijectionInner.\n const blankQuadsA = uniqGraph(getQuadsWithBlankNodes(graphA));\n const blankQuadsB = uniqGraph(getQuadsWithBlankNodes(graphB));\n const blankNodesA = getGraphBlankNodes(graphA);\n const blankNodesB = getGraphBlankNodes(graphB);\n return getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB);\n}\nexports.getBijection = getBijection;\nfunction getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, groundedHashesA, groundedHashesB) {\n if (!groundedHashesA) {\n groundedHashesA = {};\n }\n if (!groundedHashesB) {\n groundedHashesB = {};\n }\n // Hash every term based on the signature of the quads if appears in.\n const [hashesA, ungroundedHashesA] = hashTerms(blankQuadsA, blankNodesA, groundedHashesA);\n const [hashesB, ungroundedHashesB] = hashTerms(blankQuadsB, blankNodesB, groundedHashesB);\n // Break quickly if a graph contains a grounded node that is not contained in the other graph.\n if (Object.keys(hashesA).length !== Object.keys(hashesB).length) {\n return null;\n }\n for (const hashKeyA in hashesA) {\n if (!hasValue(hashesB, hashesA[hashKeyA])) {\n return null;\n }\n }\n // Map the blank nodes from graph A to the blank nodes of graph B using the created hashes.\n // Grounded hashes will also be equal, but not needed here, we will need them in the next recursion\n // (as we only recurse on grounded nodes).\n let bijection = {};\n for (const blankNodeA of blankNodesA) {\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n const blankNodeAHash = ungroundedHashesA[blankNodeAString];\n for (const blankNodeBString in ungroundedHashesB) {\n if (ungroundedHashesB[blankNodeBString] === blankNodeAHash) {\n bijection[blankNodeAString] = blankNodeBString;\n delete ungroundedHashesB[blankNodeBString];\n break;\n }\n }\n }\n // Check if all nodes from graph A and B are present in the bijection,\n // if not, speculatively mark pairs with matching ungrounded hashes as bijected, and recurse.\n if (!arraysEqual(Object.keys(bijection).sort(), blankNodesA.map(rdf_string_1.termToString).sort())\n || !arraysEqual(hashValues(bijection).sort(), blankNodesB.map(rdf_string_1.termToString).sort())) {\n // I have not yet been able to find any pathological cases where this code is reached.\n // This may be removable, but let's wait until someone proves that.\n bijection = null;\n for (const blankNodeA of blankNodesA) {\n // Only replace ungrounded node hashes\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n if (!hashesA[blankNodeAString]) {\n for (const blankNodeB of blankNodesB) {\n // Only replace ungrounded node hashes\n const blankNodeBString = rdf_string_1.termToString(blankNodeB);\n if (!hashesB[blankNodeBString]) {\n if (ungroundedHashesA[blankNodeAString] === ungroundedHashesB[blankNodeBString]) {\n const hash = sha1hex(blankNodeAString);\n bijection = getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, Object.assign(Object.assign({}, hashesA), { [blankNodeAString]: hash }), Object.assign(Object.assign({}, hashesB), { [blankNodeBString]: hash }));\n }\n }\n }\n }\n }\n }\n return bijection;\n}\nexports.getBijectionInner = getBijectionInner;\nfunction arraysEqual(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = array1.length; i--;) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Get all values from the given hash\n * @param hash A hash.\n * @return {any[]} The array of values.\n */\nfunction hashValues(hash) {\n const arr = [];\n for (const e in hash) {\n arr.push(hash[e]);\n }\n return arr;\n}\nexports.hashValues = hashValues;\n/**\n * Check if the given hash contains the given value.\n * @param hash A hash.\n * @param {string} value A value.\n * @return {boolean} If it contains the value.\n */\nfunction hasValue(hash, value) {\n for (const hashValue in hash) {\n if (hash[hashValue] === value) {\n return true;\n }\n }\n return false;\n}\nexports.hasValue = hasValue;\n/**\n * Get all quads with blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads with blank nodes\n */\nfunction getQuadsWithBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.someTerms(quad, (value) => {\n return value.termType === 'BlankNode'\n || (value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithBlankNodes = getQuadsWithBlankNodes;\n/**\n * Get all quads without blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads without blank nodes\n */\nfunction getQuadsWithoutBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.everyTerms(quad, (value) => {\n return value.termType !== 'BlankNode'\n && !(value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithoutBlankNodes = getQuadsWithoutBlankNodes;\n/**\n * Create a hash-based index of the given graph.\n * @param {Quad[]} graph An array of quads, the order does not matter.\n * @return {{[p: string]: boolean}} A hash-based datastructure representing the graph.\n */\nfunction indexGraph(graph) {\n const index = {};\n for (const quad of graph) {\n index[JSON.stringify(rdf_string_1.quadToStringQuad(quad))] = true;\n }\n return index;\n}\nexports.indexGraph = indexGraph;\n/**\n * Create a graph from the given hash-based index.\n * @param {{[p: string]: boolean}} indexedGraph A hash-based datastructure representing the graph.\n * @return {Quad[]} An array of quads, the order does not matter.\n */\nfunction deindexGraph(indexedGraph) {\n return Object.keys(indexedGraph).map((str) => rdf_string_1.stringQuadToQuad(JSON.parse(str)));\n}\nexports.deindexGraph = deindexGraph;\n/**\n * Unique-ify the given RDF graph based on strict equality.\n * The output graph will consist of new quad and term instances.\n * @param {Quad[]} graph An input graph.\n * @return {Quad[]} The input graph without duplicates.\n */\nfunction uniqGraph(graph) {\n return deindexGraph(indexGraph(graph));\n}\nexports.uniqGraph = uniqGraph;\n/**\n * Find all blank nodes in the given graph.\n * @param {Quad[]} graph An array of quads.\n * @return {BlankNode[]} A list of (unique) blank nodes.\n */\nfunction getGraphBlankNodes(graph) {\n return rdf_terms_1.uniqTerms(graph.map((quad) => rdf_terms_1.getBlankNodes(rdf_terms_1.getTermsNested(quad)))\n .reduce((acc, val) => acc.concat(val), []));\n}\nexports.getGraphBlankNodes = getGraphBlankNodes;\n/**\n * Create term hashes for the given set of quads and blank node terms.\n *\n * @param {Quad[]} quads A set of quads.\n * @param {Term[]} terms Blank node terms.\n * @param {ITermHash} groundedHashes Grounded term hashes that are used to create more specific signatures\n * of other terms, because they are based on non-blank nodes and grounded blank nodes.\n * @return {[ITermHash]} A tuple of grounded and ungrounded hashes.\n */\nfunction hashTerms(quads, terms, groundedHashes) {\n const hashes = Object.assign({}, groundedHashes);\n const ungroundedHashes = {};\n let hashNeeded = true;\n // Iteratively mark nodes as grounded.\n // If a node is marked as grounded, then the next iteration can lead to new grounded states\n while (hashNeeded) {\n const initialGroundedNodesCount = Object.keys(hashes).length;\n for (const term of terms) {\n const termString = rdf_string_1.termToString(term);\n if (!hashes[termString]) {\n const [grounded, hash] = hashTerm(term, quads, hashes);\n if (grounded) {\n hashes[termString] = hash;\n }\n ungroundedHashes[termString] = hash;\n }\n }\n // All terms that have a unique hash at this point can be marked as grounded\n const uniques = {};\n for (const termKey in ungroundedHashes) {\n const hash = ungroundedHashes[termKey];\n if (uniques[hash] === undefined) {\n uniques[hash] = termKey;\n }\n else {\n uniques[hash] = false;\n }\n }\n for (const hash in uniques) {\n const value = uniques[hash];\n if (value) {\n hashes[value] = hash;\n }\n }\n // Check if the loop needs to terminate\n hashNeeded = initialGroundedNodesCount !== Object.keys(hashes).length;\n }\n return [hashes, ungroundedHashes];\n}\nexports.hashTerms = hashTerms;\n/**\n * Generate a hash for the given term based on the signature of the quads it appears in.\n *\n * Signatures are made up of grounded terms in quads that are associated with a term,\n * i.e., everything except for ungrounded blank nodes.\n * The hash is created by hashing a sorted list of each quad's signature,\n * where each quad signature is a concatenation of the signature of all grounded terms.\n *\n * Terms are considered grounded if they are a member in the given hash AND if they are not the given term.\n *\n * @param {Term} term The term to get the hash around.\n * @param {Quad[]} quads The quads to include in the hashing.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {[boolean , string]} A tuple indicating if the given term is grounded in all the given quads, and the hash.\n */\nfunction hashTerm(term, quads, hashes) {\n const quadSignatures = [];\n let grounded = true;\n for (const quad of quads) {\n const terms = rdf_terms_1.getTermsNested(quad);\n if (terms.some((quadTerm) => quadTerm.equals(term))) {\n quadSignatures.push(quadToSignature(quad, hashes, term));\n for (const quadTerm of terms) {\n if (!isTermGrounded(quadTerm, hashes) && !quadTerm.equals(term)) {\n grounded = false;\n }\n }\n }\n }\n const hash = sha1hex(quadSignatures.sort().join(''));\n return [grounded, hash];\n}\nexports.hashTerm = hashTerm;\n/**\n * Create a hash using sha1 as a hex digest.\n * @param {string | Buffer | NodeJS.TypedArray | DataView} data Something to hash.\n * @return {string} A hash string.\n */\nfunction sha1hex(data) {\n return hash_js_1.sha1().update(data).digest('hex');\n}\nexports.sha1hex = sha1hex;\n/**\n * Convert the given quad to a string signature so that it can be used in the hash structure.\n * @param {Quad} quad A quad.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} term A target term to compare with.\n * @return {string} A string signature.\n */\nfunction quadToSignature(quad, hashes, term) {\n return rdf_terms_1.getTerms(quad).map((quadTerm) => termToSignature(quadTerm, hashes, term)).join('|');\n}\nexports.quadToSignature = quadToSignature;\n/**\n * Convert the given term to a string signature so that it can be used in the hash structure.\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} target A target term to compare with.\n * @return {string} A string signature.\n */\nfunction termToSignature(term, hashes, target) {\n if (term.equals(target)) {\n return '@self';\n }\n else if (term.termType === 'BlankNode') {\n return hashes[rdf_string_1.termToString(term)] || '@blank';\n }\n else if (term.termType === 'Quad') {\n return `<${quadToSignature(term, hashes, target)}>`;\n }\n else {\n return rdf_string_1.termToString(term);\n }\n}\nexports.termToSignature = termToSignature;\n/**\n * Check if a term is grounded.\n *\n * A term is grounded if it is not a blank node\n * or if it included in the given hash of grounded nodes.\n *\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {boolean} If the given term is grounded.\n */\nfunction isTermGrounded(term, hashes) {\n return (term.termType !== 'BlankNode'\n && !(term.termType === 'Quad' && rdf_terms_1.getTermsNested(term).some(subTerm => !isTermGrounded(subTerm, hashes)))) || !!hashes[rdf_string_1.termToString(term)];\n}\nexports.isTermGrounded = isTermGrounded;\n//# sourceMappingURL=RdfIsomorphic.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSupportedJavaScriptPrimitives = exports.getSupportedRdfDatatypes = exports.getTermRaw = exports.toRdf = exports.fromRdf = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst handler_1 = require(\"./lib/handler\");\nconst Translator_1 = require(\"./lib/Translator\");\n__exportStar(require(\"./lib/handler\"), exports);\n__exportStar(require(\"./lib/ITypeHandler\"), exports);\n__exportStar(require(\"./lib/Translator\"), exports);\nconst DF = new rdf_data_factory_1.DataFactory();\n// Construct translator with built-in handlers\nconst translator = new Translator_1.Translator();\ntranslator.registerHandler(new handler_1.TypeHandlerString(), handler_1.TypeHandlerString.TYPES.map(t => DF.namedNode(t)), ['string']);\ntranslator.registerHandler(new handler_1.TypeHandlerBoolean(), [handler_1.TypeHandlerBoolean.TYPE].map(t => DF.namedNode(t)), ['boolean']);\ntranslator.registerHandler(new handler_1.TypeHandlerNumberDouble(), handler_1.TypeHandlerNumberDouble.TYPES.map(t => DF.namedNode(t)), ['number']);\ntranslator.registerHandler(new handler_1.TypeHandlerNumberInteger(), handler_1.TypeHandlerNumberInteger.TYPES.map(t => DF.namedNode(t)), ['number']);\ntranslator.registerHandler(new handler_1.TypeHandlerDate(), handler_1.TypeHandlerDate.TYPES.map(t => DF.namedNode(t)), ['object']);\n/**\n * Convert the given RDF literal to an JavaScript primitive.\n * @param {Literal} literal An RDF literal value.\n * @param {boolean} validate If the literal value should be validated against the datatype.\n * @return {any} A JavaScript primitive value.\n */\nfunction fromRdf(literal, validate) {\n return translator.fromRdf(literal, validate);\n}\nexports.fromRdf = fromRdf;\n/**\n * Convert the given JavaScript primitive to an RDF literal.\n * @param value A JavaScript primitive value.\n * @param options Options for RDF conversion. May also be a data factory.\n * @return {Literal} An RDF literal value.\n */\nfunction toRdf(value, options) {\n // Backwards-compatibility to accept data factory as option arg.\n if (options && 'namedNode' in options) {\n options = { dataFactory: options };\n }\n // Set default data factory\n options = options || {};\n if (options && !options.dataFactory) {\n options.dataFactory = DF;\n }\n return translator.toRdf(value, options);\n}\nexports.toRdf = toRdf;\n/**\n * Get the raw value of the given term.\n * If it is a literal, {@link fromRdf} will be called.\n * Otherwise {@link .value} will be returned.\n * @param {Term} term Any RDF term.\n * @param {boolean} validate If the literal value should be validated against the datatype.\n * @return {any} A JavaScript primitive value.\n */\nfunction getTermRaw(term, validate) {\n if (term.termType === 'Literal') {\n return fromRdf(term, validate);\n }\n return term.value;\n}\nexports.getTermRaw = getTermRaw;\n/**\n * @return {NamedNode[]} An array of all supported RDF datatypes.\n */\nfunction getSupportedRdfDatatypes() {\n return translator.getSupportedRdfDatatypes();\n}\nexports.getSupportedRdfDatatypes = getSupportedRdfDatatypes;\n/**\n * @return {string[]} An array of all supported JavaScript types.\n */\nfunction getSupportedJavaScriptPrimitives() {\n return translator.getSupportedJavaScriptPrimitives();\n}\nexports.getSupportedJavaScriptPrimitives = getSupportedJavaScriptPrimitives;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ITypeHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Translator = void 0;\n/**\n * Translates between an RDF literal and a JavaScript primitive.\n */\nclass Translator {\n constructor() {\n this.supportedRdfDatatypes = [];\n this.fromRdfHandlers = {};\n this.toRdfHandlers = {};\n }\n static incorrectRdfDataType(literal) {\n throw new Error(`Invalid RDF ${literal.datatype.value} value: '${literal.value}'`);\n }\n registerHandler(handler, rdfDatatypes, javaScriptDataTypes) {\n for (const rdfDatatype of rdfDatatypes) {\n this.supportedRdfDatatypes.push(rdfDatatype);\n this.fromRdfHandlers[rdfDatatype.value] = handler;\n }\n for (const javaScriptDataType of javaScriptDataTypes) {\n let existingToRdfHandlers = this.toRdfHandlers[javaScriptDataType];\n if (!existingToRdfHandlers) {\n this.toRdfHandlers[javaScriptDataType] = existingToRdfHandlers = [];\n }\n existingToRdfHandlers.push(handler);\n }\n }\n fromRdf(literal, validate) {\n const handler = this.fromRdfHandlers[literal.datatype.value];\n if (handler) {\n return handler.fromRdf(literal, validate);\n }\n else {\n return literal.value;\n }\n }\n toRdf(value, options) {\n const handlers = this.toRdfHandlers[typeof value];\n if (handlers) {\n for (const handler of handlers) {\n const ret = handler.toRdf(value, options);\n if (ret) {\n return ret;\n }\n }\n }\n throw new Error(`Invalid JavaScript value: '${value}'`);\n }\n /**\n * @return {NamedNode[]} An array of all supported RDF datatypes.\n */\n getSupportedRdfDatatypes() {\n return this.supportedRdfDatatypes;\n }\n /**\n * @return {string[]} An array of all supported JavaScript types.\n */\n getSupportedJavaScriptPrimitives() {\n return Object.keys(this.toRdfHandlers);\n }\n}\nexports.Translator = Translator;\n//# sourceMappingURL=Translator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerBoolean = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates booleans.\n */\nclass TypeHandlerBoolean {\n fromRdf(literal, validate) {\n switch (literal.value) {\n case 'true':\n return true;\n case 'false':\n return false;\n case '1':\n return true;\n case '0':\n return false;\n }\n if (validate) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n return false;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(value ? 'true' : 'false', datatype || dataFactory.namedNode(TypeHandlerBoolean.TYPE));\n }\n}\nTypeHandlerBoolean.TYPE = 'http://www.w3.org/2001/XMLSchema#boolean';\nexports.TypeHandlerBoolean = TypeHandlerBoolean;\n//# sourceMappingURL=TypeHandlerBoolean.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerDate = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates dates.\n */\nclass TypeHandlerDate {\n fromRdf(literal, validate) {\n if (validate && !literal.value.match(TypeHandlerDate\n .VALIDATORS[literal.datatype.value.substr(33, literal.datatype.value.length)])) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n switch (literal.datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#gDay':\n return new Date(0, 0, parseInt(literal.value, 10));\n case 'http://www.w3.org/2001/XMLSchema#gMonthDay':\n const partsMonthDay = literal.value.split('-');\n return new Date(0, parseInt(partsMonthDay[0], 10) - 1, parseInt(partsMonthDay[1], 10));\n case 'http://www.w3.org/2001/XMLSchema#gYear':\n return new Date(literal.value + '-01-01');\n case 'http://www.w3.org/2001/XMLSchema#gYearMonth':\n return new Date(literal.value + '-01');\n default:\n return new Date(literal.value);\n }\n }\n toRdf(value, { datatype, dataFactory }) {\n datatype = datatype || dataFactory.namedNode(TypeHandlerDate.TYPES[0]);\n // Assume date values\n if (!(value instanceof Date)) {\n return null;\n }\n const date = value;\n let valueString;\n switch (datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#gDay':\n valueString = String(date.getUTCDate());\n break;\n case 'http://www.w3.org/2001/XMLSchema#gMonthDay':\n valueString = (date.getUTCMonth() + 1) + '-' + date.getUTCDate();\n break;\n case 'http://www.w3.org/2001/XMLSchema#gYear':\n valueString = String(date.getUTCFullYear());\n break;\n case 'http://www.w3.org/2001/XMLSchema#gYearMonth':\n valueString = date.getUTCFullYear() + '-' + (date.getUTCMonth() + 1);\n break;\n case 'http://www.w3.org/2001/XMLSchema#date':\n valueString = date.toISOString().replace(/T.*$/, '');\n break;\n default:\n valueString = date.toISOString();\n }\n return dataFactory.literal(valueString, datatype);\n }\n}\nTypeHandlerDate.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#dateTime',\n 'http://www.w3.org/2001/XMLSchema#date',\n 'http://www.w3.org/2001/XMLSchema#gDay',\n 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n 'http://www.w3.org/2001/XMLSchema#gYear',\n 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n];\nTypeHandlerDate.VALIDATORS = {\n date: /^[0-9]+-[0-9][0-9]-[0-9][0-9]Z?$/,\n dateTime: /^[0-9]+-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9](\\.[0-9][0-9][0-9])?((Z?)|([\\+-][0-9][0-9]:[0-9][0-9]))$/,\n gDay: /^[0-9]+$/,\n gMonthDay: /^[0-9]+-[0-9][0-9]$/,\n gYear: /^[0-9]+$/,\n gYearMonth: /^[0-9]+-[0-9][0-9]$/,\n};\nexports.TypeHandlerDate = TypeHandlerDate;\n//# sourceMappingURL=TypeHandlerDate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerNumberDouble = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates double numbers.\n */\nclass TypeHandlerNumberDouble {\n fromRdf(literal, validate) {\n const parsed = parseFloat(literal.value);\n if (validate) {\n if (isNaN(parsed)) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n // TODO: validate more\n }\n return parsed;\n }\n toRdf(value, { datatype, dataFactory }) {\n datatype = datatype || dataFactory.namedNode(TypeHandlerNumberDouble.TYPES[0]);\n if (isNaN(value)) {\n return dataFactory.literal('NaN', datatype);\n }\n if (!isFinite(value)) {\n return dataFactory.literal(value > 0 ? 'INF' : '-INF', datatype);\n }\n if (value % 1 === 0) {\n return null;\n }\n return dataFactory.literal(value.toExponential(15).replace(/(\\d)0*e\\+?/, '$1E'), datatype);\n }\n}\nTypeHandlerNumberDouble.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#double',\n 'http://www.w3.org/2001/XMLSchema#decimal',\n 'http://www.w3.org/2001/XMLSchema#float',\n];\nexports.TypeHandlerNumberDouble = TypeHandlerNumberDouble;\n//# sourceMappingURL=TypeHandlerNumberDouble.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerNumberInteger = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates integer numbers.\n */\nclass TypeHandlerNumberInteger {\n fromRdf(literal, validate) {\n const parsed = parseInt(literal.value, 10);\n if (validate) {\n if (isNaN(parsed) || literal.value.indexOf('.') >= 0) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n // TODO: validate more\n }\n return parsed;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(String(value), datatype\n || (value <= TypeHandlerNumberInteger.MAX_INT && value >= TypeHandlerNumberInteger.MIN_INT\n ? dataFactory.namedNode(TypeHandlerNumberInteger.TYPES[0])\n : dataFactory.namedNode(TypeHandlerNumberInteger.TYPES[1])));\n }\n}\nTypeHandlerNumberInteger.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#integer',\n 'http://www.w3.org/2001/XMLSchema#long',\n 'http://www.w3.org/2001/XMLSchema#int',\n 'http://www.w3.org/2001/XMLSchema#byte',\n 'http://www.w3.org/2001/XMLSchema#short',\n 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n];\nTypeHandlerNumberInteger.MAX_INT = 2147483647;\nTypeHandlerNumberInteger.MIN_INT = -2147483648;\nexports.TypeHandlerNumberInteger = TypeHandlerNumberInteger;\n//# sourceMappingURL=TypeHandlerNumberInteger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerString = void 0;\n/**\n * Translates strings.\n */\nclass TypeHandlerString {\n fromRdf(literal) {\n return literal.value;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(value, datatype);\n }\n}\nTypeHandlerString.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#string',\n 'http://www.w3.org/2001/XMLSchema#normalizedString',\n 'http://www.w3.org/2001/XMLSchema#anyURI',\n 'http://www.w3.org/2001/XMLSchema#base64Binary',\n 'http://www.w3.org/2001/XMLSchema#language',\n 'http://www.w3.org/2001/XMLSchema#Name',\n 'http://www.w3.org/2001/XMLSchema#NCName',\n 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n 'http://www.w3.org/2001/XMLSchema#token',\n 'http://www.w3.org/2001/XMLSchema#hexBinary',\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n 'http://www.w3.org/2001/XMLSchema#time',\n 'http://www.w3.org/2001/XMLSchema#duration',\n];\nexports.TypeHandlerString = TypeHandlerString;\n//# sourceMappingURL=TypeHandlerString.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./TypeHandlerBoolean\"), exports);\n__exportStar(require(\"./TypeHandlerDate\"), exports);\n__exportStar(require(\"./TypeHandlerNumberDouble\"), exports);\n__exportStar(require(\"./TypeHandlerNumberInteger\"), exports);\n__exportStar(require(\"./TypeHandlerString\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/PendingStreamsIndex\"), exports);\n__exportStar(require(\"./lib/StreamingStore\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PendingStreamsIndex = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\n/**\n * A PendingStreamsIndex stores pending streams indexed by the quad pattern they have been created for.\n */\nclass PendingStreamsIndex {\n constructor() {\n this.indexedStreams = new Map();\n this.allStreams = [];\n }\n termToString(term) {\n return term && term.termType !== 'Variable' ? (0, rdf_string_1.termToString)(term) : PendingStreamsIndex.ID_VARIABLE;\n }\n /**\n * Add a new pending stream for the given quad pattern.\n * @param pendingStream A pending stream.\n * @param subject A term.\n * @param predicate A term.\n * @param object A term.\n * @param graph A term.\n */\n addPatternListener(pendingStream, subject, predicate, object, graph) {\n // Append to list of pendingStreams\n this.allStreams.push(pendingStream);\n // Append to index of pendingStreams\n const key = `${this.termToString(subject)}${PendingStreamsIndex.ID_SEPARATOR}${this.termToString(predicate)}${PendingStreamsIndex.ID_SEPARATOR}${this.termToString(object)}${PendingStreamsIndex.ID_SEPARATOR}${this.termToString(graph)}`;\n let existingListeners = this.indexedStreams.get(key);\n if (!existingListeners) {\n existingListeners = [];\n this.indexedStreams.set(key, existingListeners);\n }\n existingListeners.push(pendingStream);\n }\n /**\n * Find all the pending streams from which their quad pattern match the given quad.\n * @param quad The quad to match patterns to.\n */\n getPendingStreamsForQuad(quad) {\n // Determine the combinations of quad patterns to look up\n let keys = [(0, rdf_terms_1.getTerms)(quad).map(term => (0, rdf_string_1.termToString)(term))];\n for (let i = 0; i < rdf_terms_1.QUAD_TERM_NAMES.length; i++) {\n const keysOld = keys;\n keys = [];\n for (const key of keysOld) {\n keys.push(key);\n const keyModified = [...key];\n keyModified[i] = PendingStreamsIndex.ID_VARIABLE;\n keys.push(keyModified);\n }\n }\n // Fetch the pendingStreams for the quad pattern combinations\n const pendingStreams = [];\n for (const key of keys) {\n const found = this.indexedStreams.get(key.join(PendingStreamsIndex.ID_SEPARATOR));\n if (found) {\n pendingStreams.push(...found);\n }\n }\n return pendingStreams;\n }\n}\nPendingStreamsIndex.ID_VARIABLE = '?';\nPendingStreamsIndex.ID_SEPARATOR = ':';\nexports.PendingStreamsIndex = PendingStreamsIndex;\n//# sourceMappingURL=PendingStreamsIndex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamingStore = void 0;\nconst n3_1 = require(\"n3\");\nconst readable_stream_1 = require(\"readable-stream\");\nconst PendingStreamsIndex_1 = require(\"./PendingStreamsIndex\");\n/**\n * A StreamingStore allows data lookup and insertion to happen in parallel.\n * Concretely, this means that `match()` calls happening before `import()` calls, will still consider those triples that\n * are inserted later, which is done by keeping the response streams of `match()` open.\n * Only when the `end()` method is invoked, all response streams will close, and the StreamingStore will be considered\n * immutable.\n *\n * WARNING: `end()` MUST be called at some point, otherwise all `match` streams will remain unended.\n */\nclass StreamingStore {\n constructor(store = new n3_1.Store()) {\n this.pendingStreams = new PendingStreamsIndex_1.PendingStreamsIndex();\n this.ended = false;\n this.store = store;\n }\n /**\n * Mark this store as ended.\n *\n * This will make sure that all running and future `match` calls will end,\n * and all next `import` calls to this store will throw an error.\n */\n end() {\n this.ended = true;\n // Mark all pendingStreams as ended.\n for (const pendingStream of this.pendingStreams.allStreams) {\n pendingStream.push(null);\n pendingStream._pipeSource.unpipe();\n }\n }\n importToListeners(stream) {\n stream.on('data', (quad) => {\n if (!this.ended && !this.store.countQuads(quad.subject, quad.predicate, quad.object, quad.graph)) {\n for (const pendingStream of this.pendingStreams.getPendingStreamsForQuad(quad)) {\n if (pendingStream.isInitialized) {\n pendingStream.push(quad);\n pendingStream.emit('quad', quad);\n }\n }\n }\n });\n }\n import(stream) {\n if (this.ended) {\n throw new Error('Attempted to import into an ended StreamingStore');\n }\n this.importToListeners(stream);\n return this.store.import(stream);\n }\n match(subject, predicate, object, graph) {\n const storeResult = this.store.match(subject, predicate, object, graph);\n let stream = storeResult;\n // If the store hasn't ended yet, also create a new pendingStream\n if (!this.ended) {\n // The new pendingStream remains open, until the store is ended.\n const pendingStream = new readable_stream_1.PassThrough({ objectMode: true });\n this.pendingStreams.addPatternListener(pendingStream, subject, predicate, object, graph);\n stream = storeResult.pipe(pendingStream, { end: false });\n stream._pipeSource = storeResult;\n // This is an ugly hack to annotate pendingStream with the isInitialized once the store stream started being read.\n // This is necessary to avoid duplicate quads cases where match() is called but not yet read, an import is done,\n // and only then the match() stream is read.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const readOld = storeResult._read;\n storeResult._read = (size) => {\n pendingStream.isInitialized = true;\n readOld.call(storeResult, size);\n };\n }\n return stream;\n }\n /**\n * The internal store with all imported quads.\n */\n getStore() {\n return this.store;\n }\n}\nexports.StreamingStore = StreamingStore;\n//# sourceMappingURL=StreamingStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.termToString = exports.stringToTerm = exports.stringQuadToQuad = exports.quadToStringQuad = exports.getLiteralValue = exports.getLiteralType = exports.getLiteralLanguage = void 0;\nconst TermUtil_1 = require(\"./lib/TermUtil\");\nObject.defineProperty(exports, \"getLiteralLanguage\", { enumerable: true, get: function () { return TermUtil_1.getLiteralLanguage; } });\nObject.defineProperty(exports, \"getLiteralType\", { enumerable: true, get: function () { return TermUtil_1.getLiteralType; } });\nObject.defineProperty(exports, \"getLiteralValue\", { enumerable: true, get: function () { return TermUtil_1.getLiteralValue; } });\nObject.defineProperty(exports, \"quadToStringQuad\", { enumerable: true, get: function () { return TermUtil_1.quadToStringQuad; } });\nObject.defineProperty(exports, \"stringQuadToQuad\", { enumerable: true, get: function () { return TermUtil_1.stringQuadToQuad; } });\nObject.defineProperty(exports, \"stringToTerm\", { enumerable: true, get: function () { return TermUtil_1.stringToTerm; } });\nObject.defineProperty(exports, \"termToString\", { enumerable: true, get: function () { return TermUtil_1.termToString; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringQuadToQuad = exports.quadToStringQuad = exports.stringToTerm = exports.getLiteralLanguage = exports.getLiteralType = exports.getLiteralValue = exports.termToString = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst FACTORY = new rdf_data_factory_1.DataFactory();\n/**\n * Utility methods for converting between string-based RDF representations and RDFJS objects.\n *\n * RDF Terms are represented as follows:\n * * Blank nodes: '_:myBlankNode'\n * * Variables: '_myVariable'\n * * Literals: '\"myString\"', '\"myLanguageString\"@en-us', '\"

e

\"^^'\n * * URIs: ''\n *\n * Quads/triples are represented as hashes with 'subject', 'predicate', 'object' and 'graph' (optional)\n * as keys, and string-based RDF terms as values.\n */\n/**\n * Convert an RDFJS term to a string-based representation.\n * @param {RDF.Term} term An RDFJS term.\n * @return {string} A string-based term representation.\n */\nfunction termToString(term) {\n // TODO: remove nasty any casts when this TS bug has been fixed: https://github.com/microsoft/TypeScript/issues/26933\n if (!term) {\n return undefined;\n }\n switch (term.termType) {\n case 'NamedNode': return (`<${escapeIRI(term.value)}>`);\n case 'BlankNode': return (`_:${term.value}`);\n case 'Literal': {\n const literalValue = term;\n return (`\"${escapeStringRDF(literalValue.value)}\"${literalValue.datatype &&\n literalValue.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string' &&\n literalValue.datatype.value !== 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' ?\n `^^<${literalValue.datatype.value}>` :\n ''}${literalValue.language ? `@${literalValue.language}` : ''}`);\n }\n case 'Quad': return (`<<${termToString(term.subject)} ${termToString(term.predicate)} ${termToString(term.object)}${term.graph.termType === 'DefaultGraph' ? '' : ` ${termToString(term.graph)}`}>>`);\n case 'Variable': return (`?${term.value}`);\n case 'DefaultGraph': return term.value;\n }\n}\nexports.termToString = termToString;\n/**\n * Get the string value of a literal.\n * @param {string} literalValue An RDF literal enclosed by '\"'.\n * @return {string} The literal value inside the '\"'.\n */\nfunction getLiteralValue(literalValue) {\n const match = /^\"([^]*)\"((\\^\\^.*)|(@.*))?$/u.exec(literalValue);\n if (!match) {\n throw new Error(`${literalValue} is not a literal`);\n }\n return match[1].replace(/\\\\\"/ug, '\"');\n}\nexports.getLiteralValue = getLiteralValue;\n/**\n * Get the datatype of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The datatype of the literal.\n */\nfunction getLiteralType(literalValue) {\n const match = /^\"[^]*\"(?:\\^\\^<([^\"]+)>|(@)[^@\"]+)?$/u.exec(literalValue);\n if (!match) {\n throw new Error(`${literalValue} is not a literal`);\n }\n return match[1] || (match[2] ?\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' :\n 'http://www.w3.org/2001/XMLSchema#string');\n}\nexports.getLiteralType = getLiteralType;\n/**\n * Get the language of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The language of the literal.\n */\nfunction getLiteralLanguage(literalValue) {\n const match = /^\"[^]*\"(?:@([^@\"]+)|\\^\\^[^\"]+)?$/u.exec(literalValue);\n if (!match) {\n throw new Error(`${literalValue} is not a literal`);\n }\n return match[1] ? match[1].toLowerCase() : '';\n}\nexports.getLiteralLanguage = getLiteralLanguage;\n/**\n * Transform a string-based RDF term to an RDFJS term.\n * @param {string} value A string-based RDF-term.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {RDF.Term} An RDF-JS term.\n */\nfunction stringToTerm(value, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n if (!value || (value.length === 0)) {\n return dataFactory.defaultGraph();\n }\n switch (value[0]) {\n case '_': return dataFactory.blankNode(value.slice(2));\n case '?':\n if (!dataFactory.variable) {\n throw new Error(`Missing 'variable()' method on the given DataFactory`);\n }\n return dataFactory.variable(value.slice(1));\n case '\"': {\n const language = getLiteralLanguage(value);\n const type = dataFactory.namedNode(getLiteralType(value));\n return dataFactory.literal(getLiteralValue(value), language || type);\n }\n case '<':\n default:\n if (value.startsWith('<<') && value.endsWith('>>')) {\n // Iterate character-by-character to detect spaces that are *not* wrapped in <<>>\n const terms = value.slice(2, -2);\n const stringTerms = [];\n let ignoreTags = 0;\n let lastIndex = 0;\n for (let i = 0; i < terms.length; i++) {\n const char = terms[i];\n if (char === '<') {\n ignoreTags++;\n }\n if (char === '>') {\n if (ignoreTags === 0) {\n throw new Error(`Found closing tag without opening tag in ${value}`);\n }\n else {\n ignoreTags--;\n }\n }\n if (char === ' ' && ignoreTags === 0) {\n stringTerms.push(terms.slice(lastIndex, i));\n lastIndex = i + 1;\n }\n }\n if (ignoreTags !== 0) {\n throw new Error(`Found opening tag without closing tag in ${value}`);\n }\n stringTerms.push(terms.slice(lastIndex, terms.length));\n // We require 3 or 4 components\n if (stringTerms.length !== 3 && stringTerms.length !== 4) {\n throw new Error(`Nested quad syntax error ${value}`);\n }\n return dataFactory.quad(stringToTerm(stringTerms[0]), stringToTerm(stringTerms[1]), stringToTerm(stringTerms[2]), stringTerms[3] ? stringToTerm(stringTerms[3]) : undefined);\n }\n if (!value.startsWith('<') || !value.endsWith('>')) {\n throw new Error(`Detected invalid iri for named node (must be wrapped in <>): ${value}`);\n }\n return dataFactory.namedNode(value.slice(1, -1));\n }\n}\nexports.stringToTerm = stringToTerm;\n/**\n * Convert an RDFJS quad to a string-based quad representation.\n * @param {Quad} q An RDFJS quad.\n * @return {IStringQuad} A hash with string-based quad terms.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction quadToStringQuad(quad) {\n return {\n subject: termToString(quad.subject),\n predicate: termToString(quad.predicate),\n object: termToString(quad.object),\n graph: termToString(quad.graph),\n };\n}\nexports.quadToStringQuad = quadToStringQuad;\n/**\n * Convert a string-based quad representation to an RDFJS quad.\n * @param {IStringQuad} stringQuad A hash with string-based quad terms.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {Q} An RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction stringQuadToQuad(stringQuad, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n return dataFactory.quad(stringToTerm(stringQuad.subject, dataFactory), stringToTerm(stringQuad.predicate, dataFactory), stringToTerm(stringQuad.object, dataFactory), stringToTerm(stringQuad.graph, dataFactory));\n}\nexports.stringQuadToQuad = stringQuadToQuad;\nfunction escapeIRI(iriValue) {\n return iriValue.replace(escapePattern, replaceEscapedCharacter);\n}\nfunction escapeStringRDF(stringValue) {\n if (escapePattern.test(stringValue)) {\n stringValue = stringValue.replace(escapePattern, replaceEscapedCharacter);\n }\n return stringValue;\n}\n// Characters in literals and IRIs that require escaping\n// Also containing potential surrogate pairs\n/* eslint-disable require-unicode-regexp */ /* eslint-disable unicorn/better-regex */\nconst escapePattern = /[\"\\\\\\t\\n\\r\\b\\f\\u0000-\\u0019]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n/* eslint-enable require-unicode-regexp */ /* eslint-enable unicorn/better-regex */\nconst escapes = new Map([\n ['\\\\', '\\\\\\\\'],\n ['\"', '\\\\\"'],\n ['\\t', '\\\\t'],\n ['\\n', '\\\\n'],\n ['\\r', '\\\\r'],\n ['\\b', '\\\\b'],\n ['\\f', '\\\\f'],\n]);\nfunction replaceEscapedCharacter(character) {\n // Try simplest case first, get replacement for character\n const result = escapes.get(character);\n if (!result) {\n if (character.length === 1) {\n // Single unicode charachters, i.e. not a surrogate pair\n const code = character.charCodeAt(0).toString(16);\n return `${'\\\\u0000'.slice(0, -code.length)}${code}`;\n }\n // Surrogate pairs\n const code = ((character.charCodeAt(0) - 55296) * 1024 + character.charCodeAt(1) + 9216).toString(16);\n return `${'\\\\U00000000'.slice(0, -code.length)}${code}`;\n }\n return result;\n}\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.termToString = exports.stringToTerm = exports.stringQuadToQuad = exports.quadToStringQuad = exports.getLiteralValue = exports.getLiteralType = exports.getLiteralLanguage = void 0;\nconst TermUtil_1 = require(\"./lib/TermUtil\");\nObject.defineProperty(exports, \"getLiteralLanguage\", { enumerable: true, get: function () { return TermUtil_1.getLiteralLanguage; } });\nObject.defineProperty(exports, \"getLiteralType\", { enumerable: true, get: function () { return TermUtil_1.getLiteralType; } });\nObject.defineProperty(exports, \"getLiteralValue\", { enumerable: true, get: function () { return TermUtil_1.getLiteralValue; } });\nObject.defineProperty(exports, \"quadToStringQuad\", { enumerable: true, get: function () { return TermUtil_1.quadToStringQuad; } });\nObject.defineProperty(exports, \"stringQuadToQuad\", { enumerable: true, get: function () { return TermUtil_1.stringQuadToQuad; } });\nObject.defineProperty(exports, \"stringToTerm\", { enumerable: true, get: function () { return TermUtil_1.stringToTerm; } });\nObject.defineProperty(exports, \"termToString\", { enumerable: true, get: function () { return TermUtil_1.termToString; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringQuadToQuad = exports.quadToStringQuad = exports.stringToTerm = exports.getLiteralLanguage = exports.getLiteralType = exports.getLiteralValue = exports.termToString = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst FACTORY = new rdf_data_factory_1.DataFactory();\n/**\n * Utility methods for converting between string-based RDF representations and RDFJS objects.\n *\n * RDF Terms are represented as follows:\n * * Blank nodes: '_:myBlankNode'\n * * Variables: '?myVariable'\n * * Literals: '\"myString\"', '\"myLanguageString\"@en-us', '\"3\"^^xsd:number'\n * * URIs: 'http://example.org'\n *\n * Quads/triples are represented as hashes with 'subject', 'predicate', 'object' and 'graph' (optional)\n * as keys, and string-based RDF terms as values.\n */\n/**\n * Convert an RDFJS term to a string-based representation.\n * @param {RDF.Term} term An RDFJS term.\n * @return {string} A string-based term representation.\n */\nfunction termToString(term) {\n // TODO: remove nasty any casts when this TS bug has been fixed: https://github.com/microsoft/TypeScript/issues/26933\n if (!term) {\n return undefined;\n }\n switch (term.termType) {\n case 'NamedNode': return term.value;\n case 'BlankNode': return ('_:' + term.value);\n case 'Literal':\n const literalValue = term;\n return ('\"' + literalValue.value + '\"' +\n (literalValue.datatype &&\n literalValue.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string' &&\n literalValue.datatype.value !== 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' ?\n '^^' + literalValue.datatype.value : '') +\n (literalValue.language ? '@' + literalValue.language : ''));\n case 'Quad': return `<<${termToString(term.subject)} ${termToString(term.predicate)} ${termToString(term.object)}${term.graph.termType === 'DefaultGraph' ? '' : ' ' + termToString(term.graph)}>>`;\n case 'Variable': return ('?' + term.value);\n case 'DefaultGraph': return term.value;\n }\n}\nexports.termToString = termToString;\n/**\n * Get the string value of a literal.\n * @param {string} literalValue An RDF literal enclosed by '\"'.\n * @return {string} The literal value inside the '\"'.\n */\nfunction getLiteralValue(literalValue) {\n const match = /^\"([^]*)\"/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1];\n}\nexports.getLiteralValue = getLiteralValue;\n/**\n * Get the datatype of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The datatype of the literal.\n */\nfunction getLiteralType(literalValue) {\n const match = /^\"[^]*\"(?:\\^\\^([^\"]+)|(@)[^@\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] || (match[2]\n ? 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' : 'http://www.w3.org/2001/XMLSchema#string');\n}\nexports.getLiteralType = getLiteralType;\n/**\n * Get the language of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The language of the literal.\n */\nfunction getLiteralLanguage(literalValue) {\n const match = /^\"[^]*\"(?:@([^@\"]+)|\\^\\^[^\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] ? match[1].toLowerCase() : '';\n}\nexports.getLiteralLanguage = getLiteralLanguage;\n/**\n * Transform a string-based RDF term to an RDFJS term.\n * @param {string} value A string-based RDF-term.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {RDF.Term} An RDF-JS term.\n */\nfunction stringToTerm(value, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n if (!value || !value.length) {\n return dataFactory.defaultGraph();\n }\n switch (value[0]) {\n case '_': return dataFactory.blankNode(value.substr(2));\n case '?':\n if (!dataFactory.variable) {\n throw new Error(`Missing 'variable()' method on the given DataFactory`);\n }\n return dataFactory.variable(value.substr(1));\n case '\"':\n const language = getLiteralLanguage(value);\n const type = dataFactory.namedNode(getLiteralType(value));\n return dataFactory.literal(getLiteralValue(value), language || type);\n case '<':\n default:\n if (value[0] === '<' && value.length > 4 && value[1] === '<' && value[value.length - 1] === '>' && value[value.length - 2] === '>') {\n // Iterate character-by-character to detect spaces that are *not* wrapped in <<>>\n const terms = value.slice(2, -2).trim();\n let stringTerms = [];\n let ignoreTags = 0;\n let lastIndex = 0;\n let inQuote = false;\n for (let i = 0; i < terms.length; i++) {\n const char = terms[i];\n if (char === '<')\n ignoreTags++;\n if (char === '>') {\n if (ignoreTags === 0) {\n throw new Error('Found closing tag without opening tag in ' + value);\n }\n else {\n ignoreTags--;\n }\n }\n if (char === '\"') {\n let escaped = false;\n let j = i;\n while (j-- > 0 && terms[j] === '\\\\') {\n escaped = !escaped;\n }\n if (!escaped) {\n // We have reached an unescaped quote\n inQuote = !inQuote;\n }\n }\n if (char === ' ' && !inQuote && ignoreTags === 0) {\n stringTerms.push(terms.slice(lastIndex, i));\n while (terms[i + 1] === ' ') {\n i += 1;\n }\n lastIndex = i + 1;\n }\n }\n if (ignoreTags !== 0) {\n throw new Error('Found opening tag without closing tag in ' + value);\n }\n stringTerms.push(terms.slice(lastIndex, terms.length));\n // We require 3 or 4 components\n if (stringTerms.length !== 3 && stringTerms.length !== 4) {\n throw new Error('Nested quad syntax error ' + value);\n }\n stringTerms = stringTerms.map(term => term.startsWith('<') && !term.includes(' ') ? term.slice(1, -1) : term);\n return dataFactory.quad(stringToTerm(stringTerms[0]), stringToTerm(stringTerms[1]), stringToTerm(stringTerms[2]), stringTerms[3] ? stringToTerm(stringTerms[3]) : undefined);\n }\n return dataFactory.namedNode(value);\n }\n}\nexports.stringToTerm = stringToTerm;\n/**\n * Convert an RDFJS quad to a string-based quad representation.\n * @param {Quad} q An RDFJS quad.\n * @return {IStringQuad} A hash with string-based quad terms.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction quadToStringQuad(q) {\n // tslint:disable:object-literal-sort-keys\n return {\n subject: termToString(q.subject),\n predicate: termToString(q.predicate),\n object: termToString(q.object),\n graph: termToString(q.graph),\n };\n // tslint:enable:object-literal-sort-keys\n}\nexports.quadToStringQuad = quadToStringQuad;\n/**\n * Convert a string-based quad representation to an RDFJS quad.\n * @param {IStringQuad} stringQuad A hash with string-based quad terms.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {Q} An RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction stringQuadToQuad(stringQuad, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n return dataFactory.quad(stringToTerm(stringQuad.subject, dataFactory), stringToTerm(stringQuad.predicate, dataFactory), stringToTerm(stringQuad.object, dataFactory), stringToTerm(stringQuad.graph, dataFactory));\n}\nexports.stringQuadToQuad = stringQuadToQuad;\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/QuadTermUtil\"), exports);\n__exportStar(require(\"./lib/TermUtil\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchPatternMappings = exports.matchPatternComplete = exports.matchPattern = exports.matchTerm = exports.getValueNestedPath = exports.someTermsNested = exports.someTerms = exports.everyTermsNested = exports.everyTerms = exports.reduceTermsNested = exports.reduceTerms = exports.mapTermsNested = exports.mapTerms = exports.filterQuadTermNamesNested = exports.filterQuadTermNames = exports.filterTermsNested = exports.filterTerms = exports.forEachTermsNested = exports.forEachTerms = exports.collectNamedTerms = exports.getNamedTerms = exports.getTermsNested = exports.getTerms = exports.TRIPLE_TERM_NAMES = exports.QUAD_TERM_NAMES = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * All available quad term names.\n * @type {[string , string , string , string]}\n */\nexports.QUAD_TERM_NAMES = ['subject', 'predicate', 'object', 'graph'];\n/**\n * All available triple term names.\n * @type {[string , string , string]}\n */\nexports.TRIPLE_TERM_NAMES = ['subject', 'predicate', 'object'];\n/**\n * Get all terms in the given quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the quad.\n */\nfunction getTerms(quad, ignoreDefaultGraph) {\n if (ignoreDefaultGraph && quad.graph.termType === 'DefaultGraph') {\n return [quad.subject, quad.predicate, quad.object];\n }\n return [quad.subject, quad.predicate, quad.object, quad.graph];\n}\nexports.getTerms = getTerms;\n/**\n * Get all terms in the given quad, including nested quads.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the nested quad, excluding quad terms.\n */\nfunction getTermsNested(quad, ignoreDefaultGraph) {\n const terms = [];\n for (const term of getTerms(quad, ignoreDefaultGraph)) {\n if (term.termType === 'Quad') {\n getTermsNested(term, ignoreDefaultGraph).forEach(subTerm => terms.push(subTerm));\n }\n else {\n terms.push(term);\n }\n }\n return terms;\n}\nexports.getTermsNested = getTermsNested;\n/**\n * Convert the given quad to an array of named terms.\n * This is the reverse operation of {@link collectNamedTerms}.\n * @param {BaseQuad} quad An RDFJS quad.\n * @return {INamedTerm[]} An array of named terms.\n */\nfunction getNamedTerms(quad) {\n return [\n { key: 'subject', value: quad.subject },\n { key: 'predicate', value: quad.predicate },\n { key: 'object', value: quad.object },\n { key: 'graph', value: quad.graph },\n ];\n}\nexports.getNamedTerms = getNamedTerms;\n/**\n * Convert an array of named terms to an RDFJS quad.\n * This is the reverse operation of {@link getNamedTerms}.\n * @param {INamedTerm[]} namedTerms An array of named terms.\n * @param {(termName: QuadTermName) => Term} defaultCb An optional callback for when\n * certain terms are not available in the array.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Q} The resulting RDFJS quad.\n * @template Q The type of quad to output, defaults to RDF.Quad.\n */\nfunction collectNamedTerms(namedTerms, defaultCb, dataFactory) {\n const elements = {};\n namedTerms.forEach((namedTerm) => elements[namedTerm.key] = namedTerm.value);\n if (defaultCb) {\n elements.subject = elements.subject || defaultCb('subject');\n elements.predicate = elements.predicate || defaultCb('predicate');\n elements.object = elements.object || defaultCb('object');\n elements.graph = elements.graph || defaultCb('graph');\n }\n return (dataFactory || DF).quad(elements.subject, elements.predicate, elements.object, elements.graph);\n}\nexports.collectNamedTerms = collectNamedTerms;\n/**\n * Iterates over each term.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} cb A callback function.\n */\nfunction forEachTerms(quad, cb) {\n cb(quad.subject, 'subject');\n cb(quad.predicate, 'predicate');\n cb(quad.object, 'object');\n cb(quad.graph, 'graph');\n}\nexports.forEachTerms = forEachTerms;\n/**\n * Iterates over each leaf term, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} cb A callback function.\n * @param QuadTermName[] keys The current key path.\n */\nfunction forEachTermsNested(quad, cb, keys = []) {\n if (quad.subject.termType === 'Quad') {\n forEachTermsNested(quad.subject, cb, [...keys, 'subject']);\n }\n else {\n cb(quad.subject, [...keys, 'subject']);\n }\n if (quad.predicate.termType === 'Quad') {\n forEachTermsNested(quad.predicate, cb, [...keys, 'predicate']);\n }\n else {\n cb(quad.predicate, [...keys, 'predicate']);\n }\n if (quad.object.termType === 'Quad') {\n forEachTermsNested(quad.object, cb, [...keys, 'object']);\n }\n else {\n cb(quad.object, [...keys, 'object']);\n }\n if (quad.graph.termType === 'Quad') {\n forEachTermsNested(quad.graph, cb, [...keys, 'graph']);\n }\n else {\n cb(quad.graph, [...keys, 'graph']);\n }\n}\nexports.forEachTermsNested = forEachTermsNested;\n/**\n * Get all terms in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName) => boolean} filter A filter callback.\n * @return {Term[]} The list of matching terms.\n */\nfunction filterTerms(quad, filter) {\n const terms = [];\n if (filter(quad.subject, 'subject')) {\n terms.push(quad.subject);\n }\n if (filter(quad.predicate, 'predicate')) {\n terms.push(quad.predicate);\n }\n if (filter(quad.object, 'object')) {\n terms.push(quad.object);\n }\n if (filter(quad.graph, 'graph')) {\n terms.push(quad.graph);\n }\n return terms;\n}\nexports.filterTerms = filterTerms;\n/**\n * Get all terms in the given quad that return true on the given filter function, while recursing into quoted triples.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName) => boolean} filter A filter callback.\n * @param QuadTermName[] keys The current key path.\n * @return {Term[]} The list of matching terms.\n */\nfunction filterTermsNested(quad, filter, keys = []) {\n let terms = [];\n if (quad.subject.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.subject, filter, [...keys, 'subject'])];\n }\n else {\n if (filter(quad.subject, [...keys, 'subject'])) {\n terms.push(quad.subject);\n }\n }\n if (quad.predicate.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.predicate, filter, [...keys, 'predicate'])];\n }\n else {\n if (filter(quad.predicate, [...keys, 'predicate'])) {\n terms.push(quad.predicate);\n }\n }\n if (quad.object.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.object, filter, [...keys, 'object'])];\n }\n else {\n if (filter(quad.object, [...keys, 'object'])) {\n terms.push(quad.object);\n }\n }\n if (quad.graph.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.graph, filter, [...keys, 'graph'])];\n }\n else {\n if (filter(quad.graph, [...keys, 'graph'])) {\n terms.push(quad.graph);\n }\n }\n return terms;\n}\nexports.filterTermsNested = filterTermsNested;\n/**\n * Get all quad term names in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName, all: INamedTerm[]) => boolean} filter A filter callback.\n * @return {QuadTermName[]} The list of matching quad term names.\n */\nfunction filterQuadTermNames(quad, filter) {\n const names = [];\n if (filter(quad.subject, 'subject')) {\n names.push('subject');\n }\n if (filter(quad.predicate, 'predicate')) {\n names.push('predicate');\n }\n if (filter(quad.object, 'object')) {\n names.push('object');\n }\n if (filter(quad.graph, 'graph')) {\n names.push('graph');\n }\n return names;\n}\nexports.filterQuadTermNames = filterQuadTermNames;\n/**\n * Get all quad term names in the given quad that return true on the given filter function, while recursing into quoted triples.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName, all: INamedTerm[]) => boolean} filter A filter callback.\n * @param QuadTermName[] keys The current key path.\n * @return {QuadTermName[]} The list of matching quad term names.\n */\nfunction filterQuadTermNamesNested(quad, filter, keys = []) {\n let names = [];\n const keysS = [...keys, 'subject'];\n if (quad.subject.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.subject, filter, keysS)];\n }\n else {\n if (filter(quad.subject, keysS)) {\n names.push(keysS);\n }\n }\n const keysP = [...keys, 'predicate'];\n if (quad.predicate.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.predicate, filter, keysP)];\n }\n else {\n if (filter(quad.predicate, keysP)) {\n names.push(keysP);\n }\n }\n const keysO = [...keys, 'object'];\n if (quad.object.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.object, filter, keysO)];\n }\n else {\n if (filter(quad.object, keysO)) {\n names.push(keysO);\n }\n }\n const keysG = [...keys, 'graph'];\n if (quad.graph.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.graph, filter, keysG)];\n }\n else {\n if (filter(quad.graph, keysG)) {\n names.push(keysG);\n }\n }\n return names;\n}\nexports.filterQuadTermNamesNested = filterQuadTermNamesNested;\n/**\n * Map all terms of a quad.\n * @param {Quad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName) => Term} mapper A mapper function.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Quad} A new RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction mapTerms(quad, mapper, dataFactory) {\n return (dataFactory || DF).quad(mapper(quad.subject, 'subject'), mapper(quad.predicate, 'predicate'), mapper(quad.object, 'object'), mapper(quad.graph, 'graph'));\n}\nexports.mapTerms = mapTerms;\n/**\n * Map all terms of a quad, while recursing into quoted triples.\n * @param {Quad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName) => Term} mapper A mapper function.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @param QuadTermName[] keys The current key path.\n * @return {Quad} A new RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction mapTermsNested(quad, mapper, dataFactory, keys = []) {\n return (dataFactory || DF).quad(quad.subject.termType === 'Quad' ?\n mapTermsNested(quad.subject, mapper, dataFactory, [...keys, 'subject']) :\n mapper(quad.subject, [...keys, 'subject']), quad.predicate.termType === 'Quad' ?\n mapTermsNested(quad.predicate, mapper, dataFactory, [...keys, 'predicate']) :\n mapper(quad.predicate, [...keys, 'predicate']), quad.object.termType === 'Quad' ?\n mapTermsNested(quad.object, mapper, dataFactory, [...keys, 'object']) :\n mapper(quad.object, [...keys, 'object']), quad.graph.termType === 'Quad' ?\n mapTermsNested(quad.graph, mapper, dataFactory, [...keys, 'graph']) :\n mapper(quad.graph, [...keys, 'graph']));\n}\nexports.mapTermsNested = mapTermsNested;\n/**\n * Reduce all terms of a quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(previousValue: U, currentValue: Term, key: QuadTermName) => U} reducer A reduce function.\n * @param {U} initialValue The initial value.\n * @return {U} The final value.\n */\nfunction reduceTerms(quad, reducer, initialValue) {\n let value = initialValue;\n value = reducer(value, quad.subject, 'subject');\n value = reducer(value, quad.predicate, 'predicate');\n value = reducer(value, quad.object, 'object');\n return reducer(value, quad.graph, 'graph');\n}\nexports.reduceTerms = reduceTerms;\n/**\n * Reduce all terms of a quad, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(previousValue: U, currentValue: Term, key: QuadTermName) => U} reducer A reduce function.\n * @param {U} initialValue The initial value.\n * @param QuadTermName[] keys The current key path.\n * @return {U} The final value.\n */\nfunction reduceTermsNested(quad, reducer, initialValue, keys = []) {\n let value = initialValue;\n if (quad.subject.termType === 'Quad') {\n value = reduceTermsNested(quad.subject, reducer, value, [...keys, 'subject']);\n }\n else {\n value = reducer(value, quad.subject, [...keys, 'subject']);\n }\n if (quad.predicate.termType === 'Quad') {\n value = reduceTermsNested(quad.predicate, reducer, value, [...keys, 'predicate']);\n }\n else {\n value = reducer(value, quad.predicate, [...keys, 'predicate']);\n }\n if (quad.object.termType === 'Quad') {\n value = reduceTermsNested(quad.object, reducer, value, [...keys, 'object']);\n }\n else {\n value = reducer(value, quad.object, [...keys, 'object']);\n }\n if (quad.graph.termType === 'Quad') {\n value = reduceTermsNested(quad.graph, reducer, value, [...keys, 'graph']);\n }\n else {\n value = reducer(value, quad.graph, [...keys, 'graph']);\n }\n return value;\n}\nexports.reduceTermsNested = reduceTermsNested;\n/**\n * Determines whether all terms satisfy the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If all terms satisfy the specified test.\n */\nfunction everyTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n && checker(quad.predicate, 'predicate')\n && checker(quad.object, 'object')\n && checker(quad.graph, 'graph');\n}\nexports.everyTerms = everyTerms;\n/**\n * Determines whether all terms satisfy the specified test, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @param QuadTermName[] keys The current key path.\n * @return {boolean} If all terms satisfy the specified test.\n */\nfunction everyTermsNested(quad, checker, keys = []) {\n return (quad.subject.termType === 'Quad' ?\n everyTermsNested(quad.subject, checker, [...keys, 'subject']) :\n checker(quad.subject, [...keys, 'subject']))\n && (quad.predicate.termType === 'Quad' ?\n everyTermsNested(quad.predicate, checker, [...keys, 'predicate']) :\n checker(quad.predicate, [...keys, 'predicate']))\n && (quad.object.termType === 'Quad' ?\n everyTermsNested(quad.object, checker, [...keys, 'object']) :\n checker(quad.object, [...keys, 'object']))\n && (quad.graph.termType === 'Quad' ?\n everyTermsNested(quad.graph, checker, [...keys, 'graph']) :\n checker(quad.graph, [...keys, 'graph']));\n}\nexports.everyTermsNested = everyTermsNested;\n/**\n * Determines whether at least one term satisfies the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If at least one term satisfies the specified test.\n */\nfunction someTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n || checker(quad.predicate, 'predicate')\n || checker(quad.object, 'object')\n || checker(quad.graph, 'graph');\n}\nexports.someTerms = someTerms;\n/**\n * Determines whether at least one term satisfies the specified test, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @param QuadTermName[] keys The current key path.\n * @return {boolean} If at least one term satisfies the specified test.\n */\nfunction someTermsNested(quad, checker, keys = []) {\n return (quad.subject.termType === 'Quad' ?\n someTermsNested(quad.subject, checker, [...keys, 'subject']) :\n checker(quad.subject, [...keys, 'subject']))\n || (quad.predicate.termType === 'Quad' ?\n someTermsNested(quad.predicate, checker, [...keys, 'predicate']) :\n checker(quad.predicate, [...keys, 'predicate']))\n || (quad.object.termType === 'Quad' ?\n someTermsNested(quad.object, checker, [...keys, 'object']) :\n checker(quad.object, [...keys, 'object']))\n || (quad.graph.termType === 'Quad' ?\n someTermsNested(quad.graph, checker, [...keys, 'graph']) :\n checker(quad.graph, [...keys, 'graph']));\n}\nexports.someTermsNested = someTermsNested;\n/**\n * Get the nested value inside a quoted triple by the given path of quad keys.\n * @param term A term, that can be a quoted triple.\n * @param keys A path of quad term names.\n */\nfunction getValueNestedPath(term, keys) {\n if (keys.length === 0) {\n return term;\n }\n if (term.termType === 'Quad') {\n return getValueNestedPath(term[keys[0]], keys.slice(1));\n }\n throw new Error(`Tried to get ${keys[0]} from term of type ${term.termType}`);\n}\nexports.getValueNestedPath = getValueNestedPath;\n/**\n * Check if the given terms match.\n *\n * At least one of the following must be true:\n * * Term B is undefined.\n * * Term B is a variable.\n * * Term A and B are quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`termB.equals(termA)` return true)\n *\n * @param termA A term.\n * @param termB An optional term.\n */\nfunction matchTerm(termA, termB) {\n return !termB\n || termB.termType === 'Variable'\n || (termB.termType === 'Quad' && termA.termType === 'Quad' && matchPatternComplete(termA, termB))\n || termB.equals(termA);\n}\nexports.matchTerm = matchTerm;\n/**\n * Check if the given quad matches with the given quad terms.\n *\n * Each term must match at least one of the following:\n * * Term is undefined.\n * * Term is a variable.\n * * Quad term and term are both quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`quadTerm.equals(term)` return true)\n *\n * @param {BaseQuad} quad A quad to match with (can not contain variables).\n * @param {Term} subject An optional subject.\n * @param {Term} predicate An optional predicate.\n * @param {Term} object An optional object.\n * @param {Term} graph An optional graph.\n * @return {boolean} If the quad matches with the quad terms.\n */\nfunction matchPattern(quad, subject, predicate, object, graph) {\n return matchTerm(quad.subject, subject)\n && matchTerm(quad.predicate, predicate)\n && matchTerm(quad.object, object)\n && matchTerm(quad.graph, graph);\n}\nexports.matchPattern = matchPattern;\n/**\n * Check if the first quad matches with all terms from the second quad.\n *\n * Each term must match at least one of the following:\n * * Quad2 term is a variable.\n * * Quad1 term and Quad2 term are equal (`term1.equals(term2)` return true)\n *\n * @param {BaseQuad} quad A quad (can not contain variables).\n * @param {BaseQuad} pattern A quad pattern (can contain variables).\n * @return {boolean} If the quad terms match.\n */\nfunction matchPatternComplete(quad, pattern) {\n return matchPattern(quad, pattern.subject, pattern.predicate, pattern.object, pattern.graph);\n}\nexports.matchPatternComplete = matchPatternComplete;\nfunction matchPatternMappings(quad, pattern, opt = {}) {\n const map = {};\n function match(_pattern, _quad) {\n return everyTerms(_pattern, (t1, key) => {\n var _a, _b;\n const t2 = _quad[key];\n switch (t1.termType) {\n case 'Variable':\n return (opt.skipVarMapping && t2.termType === 'Variable')\n || ((_b = (_a = map[t1.value]) === null || _a === void 0 ? void 0 : _a.equals(t2)) !== null && _b !== void 0 ? _b : (map[t1.value] = t2, true));\n case 'Quad':\n return t2.termType === 'Quad' && match(t1, t2);\n default:\n return t1.equals(t2);\n }\n });\n }\n return match(pattern, quad) && (opt.returnMappings ? map : true);\n}\nexports.matchPatternMappings = matchPatternMappings;\n//# sourceMappingURL=QuadTermUtil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getQuads = exports.getDefaultGraphs = exports.getVariables = exports.getLiterals = exports.getBlankNodes = exports.getNamedNodes = exports.getTermsOfType = exports.uniqTerms = exports.TERM_TYPES = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * All known term types.\n * @see RDF.Term\n * @type {[string , string , string , string , string, string]}\n */\nexports.TERM_TYPES = ['NamedNode', 'BlankNode', 'Literal', 'Variable', 'DefaultGraph', 'Quad'];\n/*\n * Utility methods for handling RDFJS terms.\n */\n/**\n * Create an array of unique terms from the given array.\n * @param {T[]} terms An array of RDFJS terms.\n * @return {T[]} A new array of unique RDFJS terms.\n */\nfunction uniqTerms(terms) {\n const hash = {};\n return terms.filter(term => {\n const termString = (0, rdf_string_1.termToString)(term);\n return !(termString in hash) && (hash[termString] = true);\n });\n}\nexports.uniqTerms = uniqTerms;\n/**\n * Find all terms of the given type in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @param {\"NamedNode\" | \"BlankNode\" | \"Literal\" | \"Variable\" | \"DefaultGraph\" | \"Quad\"} termType A term type.\n * @return {Term[]} A new array with elements from the given array only containing elements of the given type.\n */\nfunction getTermsOfType(terms, termType) {\n return terms.filter((term) => term.termType === termType);\n}\nexports.getTermsOfType = getTermsOfType;\n/**\n * Find all named nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {NamedNode[]} A new array with elements from the given array only containing named nodes.\n */\nfunction getNamedNodes(terms) {\n return getTermsOfType(terms, 'NamedNode');\n}\nexports.getNamedNodes = getNamedNodes;\n/**\n * Find all blank nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BlankNode[]} A new array with elements from the given array only containing blank nodes.\n */\nfunction getBlankNodes(terms) {\n return getTermsOfType(terms, 'BlankNode');\n}\nexports.getBlankNodes = getBlankNodes;\n/**\n * Find all literals in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Literal[]} A new array with elements from the given array only containing literals.\n */\nfunction getLiterals(terms) {\n return getTermsOfType(terms, 'Literal');\n}\nexports.getLiterals = getLiterals;\n/**\n * Find all variables in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Variable[]} A new array with elements from the given array only containing variables.\n */\nfunction getVariables(terms) {\n return getTermsOfType(terms, 'Variable');\n}\nexports.getVariables = getVariables;\n/**\n * Find all default graphs in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {DefaultGraph[]} A new array with elements from the given array only containing default graphs.\n */\nfunction getDefaultGraphs(terms) {\n return getTermsOfType(terms, 'DefaultGraph');\n}\nexports.getDefaultGraphs = getDefaultGraphs;\n/**\n * Find all quads in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BaseQuad[]} A new array with elements from the given array only containing quads.\n */\nfunction getQuads(terms) {\n return getTermsOfType(terms, 'Quad');\n}\nexports.getQuads = getQuads;\n//# sourceMappingURL=TermUtil.js.map","'use strict'\n\nconst { SymbolDispose } = require('../../ours/primordials')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { isNodeStream, isWebStream, kControllerErrorFunction } = require('./utils')\nconst eos = require('./end-of-stream')\nconst { ERR_INVALID_ARG_TYPE } = codes\nlet addAbortListener\n\n// This method is inlined here for readable-stream\n// It also does not allow for signal to not exist on the stream\n// https://github.com/nodejs/node/pull/36061#discussion_r533718029\nconst validateAbortSignal = (signal, name) => {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n}\nmodule.exports.addAbortSignal = function addAbortSignal(signal, stream) {\n validateAbortSignal(signal, 'signal')\n if (!isNodeStream(stream) && !isWebStream(stream)) {\n throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n }\n return module.exports.addAbortSignalNoValidate(signal, stream)\n}\nmodule.exports.addAbortSignalNoValidate = function (signal, stream) {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n return stream\n }\n const onAbort = isNodeStream(stream)\n ? () => {\n stream.destroy(\n new AbortError(undefined, {\n cause: signal.reason\n })\n )\n }\n : () => {\n stream[kControllerErrorFunction](\n new AbortError(undefined, {\n cause: signal.reason\n })\n )\n }\n if (signal.aborted) {\n onAbort()\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(signal, onAbort)\n eos(stream, disposable[SymbolDispose])\n }\n return stream\n}\n","'use strict'\n\nconst { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { inspect } = require('../../ours/util')\nmodule.exports = class BufferList {\n constructor() {\n this.head = null\n this.tail = null\n this.length = 0\n }\n push(v) {\n const entry = {\n data: v,\n next: null\n }\n if (this.length > 0) this.tail.next = entry\n else this.head = entry\n this.tail = entry\n ++this.length\n }\n unshift(v) {\n const entry = {\n data: v,\n next: this.head\n }\n if (this.length === 0) this.tail = entry\n this.head = entry\n ++this.length\n }\n shift() {\n if (this.length === 0) return\n const ret = this.head.data\n if (this.length === 1) this.head = this.tail = null\n else this.head = this.head.next\n --this.length\n return ret\n }\n clear() {\n this.head = this.tail = null\n this.length = 0\n }\n join(s) {\n if (this.length === 0) return ''\n let p = this.head\n let ret = '' + p.data\n while ((p = p.next) !== null) ret += s + p.data\n return ret\n }\n concat(n) {\n if (this.length === 0) return Buffer.alloc(0)\n const ret = Buffer.allocUnsafe(n >>> 0)\n let p = this.head\n let i = 0\n while (p) {\n TypedArrayPrototypeSet(ret, p.data, i)\n i += p.data.length\n p = p.next\n }\n return ret\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n consume(n, hasStrings) {\n const data = this.head.data\n if (n < data.length) {\n // `slice` is the same for buffers and strings.\n const slice = data.slice(0, n)\n this.head.data = data.slice(n)\n return slice\n }\n if (n === data.length) {\n // First chunk is a perfect match.\n return this.shift()\n }\n // Result spans more than one buffer.\n return hasStrings ? this._getString(n) : this._getBuffer(n)\n }\n first() {\n return this.head.data\n }\n *[SymbolIterator]() {\n for (let p = this.head; p; p = p.next) {\n yield p.data\n }\n }\n\n // Consumes a specified amount of characters from the buffered data.\n _getString(n) {\n let ret = ''\n let p = this.head\n let c = 0\n do {\n const str = p.data\n if (n > str.length) {\n ret += str\n n -= str.length\n } else {\n if (n === str.length) {\n ret += str\n ++c\n if (p.next) this.head = p.next\n else this.head = this.tail = null\n } else {\n ret += StringPrototypeSlice(str, 0, n)\n this.head = p\n p.data = StringPrototypeSlice(str, n)\n }\n break\n }\n ++c\n } while ((p = p.next) !== null)\n this.length -= c\n return ret\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n _getBuffer(n) {\n const ret = Buffer.allocUnsafe(n)\n const retLen = n\n let p = this.head\n let c = 0\n do {\n const buf = p.data\n if (n > buf.length) {\n TypedArrayPrototypeSet(ret, buf, retLen - n)\n n -= buf.length\n } else {\n if (n === buf.length) {\n TypedArrayPrototypeSet(ret, buf, retLen - n)\n ++c\n if (p.next) this.head = p.next\n else this.head = this.tail = null\n } else {\n TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n)\n this.head = p\n p.data = buf.slice(n)\n }\n break\n }\n ++c\n } while ((p = p.next) !== null)\n this.length -= c\n return ret\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n [Symbol.for('nodejs.util.inspect.custom')](_, options) {\n return inspect(this, {\n ...options,\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n })\n }\n}\n","'use strict'\n\nconst { pipeline } = require('./pipeline')\nconst Duplex = require('./duplex')\nconst { destroyer } = require('./destroy')\nconst {\n isNodeStream,\n isReadable,\n isWritable,\n isWebStream,\n isTransformStream,\n isWritableStream,\n isReadableStream\n} = require('./utils')\nconst {\n AbortError,\n codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS }\n} = require('../../ours/errors')\nconst eos = require('./end-of-stream')\nmodule.exports = function compose(...streams) {\n if (streams.length === 0) {\n throw new ERR_MISSING_ARGS('streams')\n }\n if (streams.length === 1) {\n return Duplex.from(streams[0])\n }\n const orgStreams = [...streams]\n if (typeof streams[0] === 'function') {\n streams[0] = Duplex.from(streams[0])\n }\n if (typeof streams[streams.length - 1] === 'function') {\n const idx = streams.length - 1\n streams[idx] = Duplex.from(streams[idx])\n }\n for (let n = 0; n < streams.length; ++n) {\n if (!isNodeStream(streams[n]) && !isWebStream(streams[n])) {\n // TODO(ronag): Add checks for non streams.\n continue\n }\n if (\n n < streams.length - 1 &&\n !(isReadable(streams[n]) || isReadableStream(streams[n]) || isTransformStream(streams[n]))\n ) {\n throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable')\n }\n if (n > 0 && !(isWritable(streams[n]) || isWritableStream(streams[n]) || isTransformStream(streams[n]))) {\n throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable')\n }\n }\n let ondrain\n let onfinish\n let onreadable\n let onclose\n let d\n function onfinished(err) {\n const cb = onclose\n onclose = null\n if (cb) {\n cb(err)\n } else if (err) {\n d.destroy(err)\n } else if (!readable && !writable) {\n d.destroy()\n }\n }\n const head = streams[0]\n const tail = pipeline(streams, onfinished)\n const writable = !!(isWritable(head) || isWritableStream(head) || isTransformStream(head))\n const readable = !!(isReadable(tail) || isReadableStream(tail) || isTransformStream(tail))\n\n // TODO(ronag): Avoid double buffering.\n // Implement Writable/Readable/Duplex traits.\n // See, https://github.com/nodejs/node/pull/33515.\n d = new Duplex({\n // TODO (ronag): highWaterMark?\n writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode),\n readableObjectMode: !!(tail !== null && tail !== undefined && tail.readableObjectMode),\n writable,\n readable\n })\n if (writable) {\n if (isNodeStream(head)) {\n d._write = function (chunk, encoding, callback) {\n if (head.write(chunk, encoding)) {\n callback()\n } else {\n ondrain = callback\n }\n }\n d._final = function (callback) {\n head.end()\n onfinish = callback\n }\n head.on('drain', function () {\n if (ondrain) {\n const cb = ondrain\n ondrain = null\n cb()\n }\n })\n } else if (isWebStream(head)) {\n const writable = isTransformStream(head) ? head.writable : head\n const writer = writable.getWriter()\n d._write = async function (chunk, encoding, callback) {\n try {\n await writer.ready\n writer.write(chunk).catch(() => {})\n callback()\n } catch (err) {\n callback(err)\n }\n }\n d._final = async function (callback) {\n try {\n await writer.ready\n writer.close().catch(() => {})\n onfinish = callback\n } catch (err) {\n callback(err)\n }\n }\n }\n const toRead = isTransformStream(tail) ? tail.readable : tail\n eos(toRead, () => {\n if (onfinish) {\n const cb = onfinish\n onfinish = null\n cb()\n }\n })\n }\n if (readable) {\n if (isNodeStream(tail)) {\n tail.on('readable', function () {\n if (onreadable) {\n const cb = onreadable\n onreadable = null\n cb()\n }\n })\n tail.on('end', function () {\n d.push(null)\n })\n d._read = function () {\n while (true) {\n const buf = tail.read()\n if (buf === null) {\n onreadable = d._read\n return\n }\n if (!d.push(buf)) {\n return\n }\n }\n }\n } else if (isWebStream(tail)) {\n const readable = isTransformStream(tail) ? tail.readable : tail\n const reader = readable.getReader()\n d._read = async function () {\n while (true) {\n try {\n const { value, done } = await reader.read()\n if (!d.push(value)) {\n return\n }\n if (done) {\n d.push(null)\n return\n }\n } catch {\n return\n }\n }\n }\n }\n }\n d._destroy = function (err, callback) {\n if (!err && onclose !== null) {\n err = new AbortError()\n }\n onreadable = null\n ondrain = null\n onfinish = null\n if (onclose === null) {\n callback(err)\n } else {\n onclose = callback\n if (isNodeStream(tail)) {\n destroyer(tail, err)\n }\n }\n }\n return d\n}\n","'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n aggregateTwoErrors,\n codes: { ERR_MULTIPLE_CALLBACK },\n AbortError\n} = require('../../ours/errors')\nconst { Symbol } = require('../../ours/primordials')\nconst { kIsDestroyed, isDestroyed, isFinished, isServerRequest } = require('./utils')\nconst kDestroy = Symbol('kDestroy')\nconst kConstruct = Symbol('kConstruct')\nfunction checkError(err, w, r) {\n if (err) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n err.stack // eslint-disable-line no-unused-expressions\n\n if (w && !w.errored) {\n w.errored = err\n }\n if (r && !r.errored) {\n r.errored = err\n }\n }\n}\n\n// Backwards compat. cb() is undocumented and unused in core but\n// unfortunately might be used by modules.\nfunction destroy(err, cb) {\n const r = this._readableState\n const w = this._writableState\n // With duplex streams we use the writable side for state.\n const s = w || r\n if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n if (typeof cb === 'function') {\n cb()\n }\n return this\n }\n\n // We set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n checkError(err, w, r)\n if (w) {\n w.destroyed = true\n }\n if (r) {\n r.destroyed = true\n }\n\n // If still constructing then defer calling _destroy.\n if (!s.constructed) {\n this.once(kDestroy, function (er) {\n _destroy(this, aggregateTwoErrors(er, err), cb)\n })\n } else {\n _destroy(this, err, cb)\n }\n return this\n}\nfunction _destroy(self, err, cb) {\n let called = false\n function onDestroy(err) {\n if (called) {\n return\n }\n called = true\n const r = self._readableState\n const w = self._writableState\n checkError(err, w, r)\n if (w) {\n w.closed = true\n }\n if (r) {\n r.closed = true\n }\n if (typeof cb === 'function') {\n cb(err)\n }\n if (err) {\n process.nextTick(emitErrorCloseNT, self, err)\n } else {\n process.nextTick(emitCloseNT, self)\n }\n }\n try {\n self._destroy(err || null, onDestroy)\n } catch (err) {\n onDestroy(err)\n }\n}\nfunction emitErrorCloseNT(self, err) {\n emitErrorNT(self, err)\n emitCloseNT(self)\n}\nfunction emitCloseNT(self) {\n const r = self._readableState\n const w = self._writableState\n if (w) {\n w.closeEmitted = true\n }\n if (r) {\n r.closeEmitted = true\n }\n if ((w !== null && w !== undefined && w.emitClose) || (r !== null && r !== undefined && r.emitClose)) {\n self.emit('close')\n }\n}\nfunction emitErrorNT(self, err) {\n const r = self._readableState\n const w = self._writableState\n if ((w !== null && w !== undefined && w.errorEmitted) || (r !== null && r !== undefined && r.errorEmitted)) {\n return\n }\n if (w) {\n w.errorEmitted = true\n }\n if (r) {\n r.errorEmitted = true\n }\n self.emit('error', err)\n}\nfunction undestroy() {\n const r = this._readableState\n const w = this._writableState\n if (r) {\n r.constructed = true\n r.closed = false\n r.closeEmitted = false\n r.destroyed = false\n r.errored = null\n r.errorEmitted = false\n r.reading = false\n r.ended = r.readable === false\n r.endEmitted = r.readable === false\n }\n if (w) {\n w.constructed = true\n w.destroyed = false\n w.closed = false\n w.closeEmitted = false\n w.errored = null\n w.errorEmitted = false\n w.finalCalled = false\n w.prefinished = false\n w.ended = w.writable === false\n w.ending = w.writable === false\n w.finished = w.writable === false\n }\n}\nfunction errorOrDestroy(stream, err, sync) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n const r = stream._readableState\n const w = stream._writableState\n if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n return this\n }\n if ((r !== null && r !== undefined && r.autoDestroy) || (w !== null && w !== undefined && w.autoDestroy))\n stream.destroy(err)\n else if (err) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n err.stack // eslint-disable-line no-unused-expressions\n\n if (w && !w.errored) {\n w.errored = err\n }\n if (r && !r.errored) {\n r.errored = err\n }\n if (sync) {\n process.nextTick(emitErrorNT, stream, err)\n } else {\n emitErrorNT(stream, err)\n }\n }\n}\nfunction construct(stream, cb) {\n if (typeof stream._construct !== 'function') {\n return\n }\n const r = stream._readableState\n const w = stream._writableState\n if (r) {\n r.constructed = false\n }\n if (w) {\n w.constructed = false\n }\n stream.once(kConstruct, cb)\n if (stream.listenerCount(kConstruct) > 1) {\n // Duplex\n return\n }\n process.nextTick(constructNT, stream)\n}\nfunction constructNT(stream) {\n let called = false\n function onConstruct(err) {\n if (called) {\n errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK())\n return\n }\n called = true\n const r = stream._readableState\n const w = stream._writableState\n const s = w || r\n if (r) {\n r.constructed = true\n }\n if (w) {\n w.constructed = true\n }\n if (s.destroyed) {\n stream.emit(kDestroy, err)\n } else if (err) {\n errorOrDestroy(stream, err, true)\n } else {\n process.nextTick(emitConstructNT, stream)\n }\n }\n try {\n stream._construct((err) => {\n process.nextTick(onConstruct, err)\n })\n } catch (err) {\n process.nextTick(onConstruct, err)\n }\n}\nfunction emitConstructNT(stream) {\n stream.emit(kConstruct)\n}\nfunction isRequest(stream) {\n return (stream === null || stream === undefined ? undefined : stream.setHeader) && typeof stream.abort === 'function'\n}\nfunction emitCloseLegacy(stream) {\n stream.emit('close')\n}\nfunction emitErrorCloseLegacy(stream, err) {\n stream.emit('error', err)\n process.nextTick(emitCloseLegacy, stream)\n}\n\n// Normalize destroy for legacy.\nfunction destroyer(stream, err) {\n if (!stream || isDestroyed(stream)) {\n return\n }\n if (!err && !isFinished(stream)) {\n err = new AbortError()\n }\n\n // TODO: Remove isRequest branches.\n if (isServerRequest(stream)) {\n stream.socket = null\n stream.destroy(err)\n } else if (isRequest(stream)) {\n stream.abort()\n } else if (isRequest(stream.req)) {\n stream.req.abort()\n } else if (typeof stream.destroy === 'function') {\n stream.destroy(err)\n } else if (typeof stream.close === 'function') {\n // TODO: Don't lose err?\n stream.close()\n } else if (err) {\n process.nextTick(emitErrorCloseLegacy, stream, err)\n } else {\n process.nextTick(emitCloseLegacy, stream)\n }\n if (!stream.destroyed) {\n stream[kIsDestroyed] = true\n }\n}\nmodule.exports = {\n construct,\n destroyer,\n destroy,\n undestroy,\n errorOrDestroy\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototype inheritance, this class\n// prototypically inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict'\n\nconst {\n ObjectDefineProperties,\n ObjectGetOwnPropertyDescriptor,\n ObjectKeys,\n ObjectSetPrototypeOf\n} = require('../../ours/primordials')\nmodule.exports = Duplex\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nObjectSetPrototypeOf(Duplex.prototype, Readable.prototype)\nObjectSetPrototypeOf(Duplex, Readable)\n{\n const keys = ObjectKeys(Writable.prototype)\n // Allow the keys array to be GC'ed.\n for (let i = 0; i < keys.length; i++) {\n const method = keys[i]\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options)\n Readable.call(this, options)\n Writable.call(this, options)\n if (options) {\n this.allowHalfOpen = options.allowHalfOpen !== false\n if (options.readable === false) {\n this._readableState.readable = false\n this._readableState.ended = true\n this._readableState.endEmitted = true\n }\n if (options.writable === false) {\n this._writableState.writable = false\n this._writableState.ending = true\n this._writableState.ended = true\n this._writableState.finished = true\n }\n } else {\n this.allowHalfOpen = true\n }\n}\nObjectDefineProperties(Duplex.prototype, {\n writable: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable')\n },\n writableHighWaterMark: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark')\n },\n writableObjectMode: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode')\n },\n writableBuffer: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer')\n },\n writableLength: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength')\n },\n writableFinished: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished')\n },\n writableCorked: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked')\n },\n writableEnded: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded')\n },\n writableNeedDrain: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain')\n },\n destroyed: {\n __proto__: null,\n get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false\n }\n return this._readableState.destroyed && this._writableState.destroyed\n },\n set(value) {\n // Backward compatibility, the user is explicitly\n // managing destroyed.\n if (this._readableState && this._writableState) {\n this._readableState.destroyed = value\n this._writableState.destroyed = value\n }\n }\n }\n})\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nDuplex.fromWeb = function (pair, options) {\n return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options)\n}\nDuplex.toWeb = function (duplex) {\n return lazyWebStreams().newReadableWritablePairFromDuplex(duplex)\n}\nlet duplexify\nDuplex.from = function (body) {\n if (!duplexify) {\n duplexify = require('./duplexify')\n }\n return duplexify(body, 'body')\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\n;('use strict')\nconst bufferModule = require('buffer')\nconst {\n isReadable,\n isWritable,\n isIterable,\n isNodeStream,\n isReadableNodeStream,\n isWritableNodeStream,\n isDuplexNodeStream,\n isReadableStream,\n isWritableStream\n} = require('./utils')\nconst eos = require('./end-of-stream')\nconst {\n AbortError,\n codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE }\n} = require('../../ours/errors')\nconst { destroyer } = require('./destroy')\nconst Duplex = require('./duplex')\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nconst { createDeferredPromise } = require('../../ours/util')\nconst from = require('./from')\nconst Blob = globalThis.Blob || bufferModule.Blob\nconst isBlob =\n typeof Blob !== 'undefined'\n ? function isBlob(b) {\n return b instanceof Blob\n }\n : function isBlob(b) {\n return false\n }\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst { FunctionPrototypeCall } = require('../../ours/primordials')\n\n// This is needed for pre node 17.\nclass Duplexify extends Duplex {\n constructor(options) {\n super(options)\n\n // https://github.com/nodejs/node/pull/34385\n\n if ((options === null || options === undefined ? undefined : options.readable) === false) {\n this._readableState.readable = false\n this._readableState.ended = true\n this._readableState.endEmitted = true\n }\n if ((options === null || options === undefined ? undefined : options.writable) === false) {\n this._writableState.writable = false\n this._writableState.ending = true\n this._writableState.ended = true\n this._writableState.finished = true\n }\n }\n}\nmodule.exports = function duplexify(body, name) {\n if (isDuplexNodeStream(body)) {\n return body\n }\n if (isReadableNodeStream(body)) {\n return _duplexify({\n readable: body\n })\n }\n if (isWritableNodeStream(body)) {\n return _duplexify({\n writable: body\n })\n }\n if (isNodeStream(body)) {\n return _duplexify({\n writable: false,\n readable: false\n })\n }\n if (isReadableStream(body)) {\n return _duplexify({\n readable: Readable.fromWeb(body)\n })\n }\n if (isWritableStream(body)) {\n return _duplexify({\n writable: Writable.fromWeb(body)\n })\n }\n if (typeof body === 'function') {\n const { value, write, final, destroy } = fromAsyncGen(body)\n if (isIterable(value)) {\n return from(Duplexify, value, {\n // TODO (ronag): highWaterMark?\n objectMode: true,\n write,\n final,\n destroy\n })\n }\n const then = value === null || value === undefined ? undefined : value.then\n if (typeof then === 'function') {\n let d\n const promise = FunctionPrototypeCall(\n then,\n value,\n (val) => {\n if (val != null) {\n throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val)\n }\n },\n (err) => {\n destroyer(d, err)\n }\n )\n return (d = new Duplexify({\n // TODO (ronag): highWaterMark?\n objectMode: true,\n readable: false,\n write,\n final(cb) {\n final(async () => {\n try {\n await promise\n process.nextTick(cb, null)\n } catch (err) {\n process.nextTick(cb, err)\n }\n })\n },\n destroy\n }))\n }\n throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value)\n }\n if (isBlob(body)) {\n return duplexify(body.arrayBuffer())\n }\n if (isIterable(body)) {\n return from(Duplexify, body, {\n // TODO (ronag): highWaterMark?\n objectMode: true,\n writable: false\n })\n }\n if (\n isReadableStream(body === null || body === undefined ? undefined : body.readable) &&\n isWritableStream(body === null || body === undefined ? undefined : body.writable)\n ) {\n return Duplexify.fromWeb(body)\n }\n if (\n typeof (body === null || body === undefined ? undefined : body.writable) === 'object' ||\n typeof (body === null || body === undefined ? undefined : body.readable) === 'object'\n ) {\n const readable =\n body !== null && body !== undefined && body.readable\n ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable)\n ? body === null || body === undefined\n ? undefined\n : body.readable\n : duplexify(body.readable)\n : undefined\n const writable =\n body !== null && body !== undefined && body.writable\n ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable)\n ? body === null || body === undefined\n ? undefined\n : body.writable\n : duplexify(body.writable)\n : undefined\n return _duplexify({\n readable,\n writable\n })\n }\n const then = body === null || body === undefined ? undefined : body.then\n if (typeof then === 'function') {\n let d\n FunctionPrototypeCall(\n then,\n body,\n (val) => {\n if (val != null) {\n d.push(val)\n }\n d.push(null)\n },\n (err) => {\n destroyer(d, err)\n }\n )\n return (d = new Duplexify({\n objectMode: true,\n writable: false,\n read() {}\n }))\n }\n throw new ERR_INVALID_ARG_TYPE(\n name,\n [\n 'Blob',\n 'ReadableStream',\n 'WritableStream',\n 'Stream',\n 'Iterable',\n 'AsyncIterable',\n 'Function',\n '{ readable, writable } pair',\n 'Promise'\n ],\n body\n )\n}\nfunction fromAsyncGen(fn) {\n let { promise, resolve } = createDeferredPromise()\n const ac = new AbortController()\n const signal = ac.signal\n const value = fn(\n (async function* () {\n while (true) {\n const _promise = promise\n promise = null\n const { chunk, done, cb } = await _promise\n process.nextTick(cb)\n if (done) return\n if (signal.aborted)\n throw new AbortError(undefined, {\n cause: signal.reason\n })\n ;({ promise, resolve } = createDeferredPromise())\n yield chunk\n }\n })(),\n {\n signal\n }\n )\n return {\n value,\n write(chunk, encoding, cb) {\n const _resolve = resolve\n resolve = null\n _resolve({\n chunk,\n done: false,\n cb\n })\n },\n final(cb) {\n const _resolve = resolve\n resolve = null\n _resolve({\n done: true,\n cb\n })\n },\n destroy(err, cb) {\n ac.abort()\n cb(err)\n }\n }\n}\nfunction _duplexify(pair) {\n const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable\n const w = pair.writable\n let readable = !!isReadable(r)\n let writable = !!isWritable(w)\n let ondrain\n let onfinish\n let onreadable\n let onclose\n let d\n function onfinished(err) {\n const cb = onclose\n onclose = null\n if (cb) {\n cb(err)\n } else if (err) {\n d.destroy(err)\n }\n }\n\n // TODO(ronag): Avoid double buffering.\n // Implement Writable/Readable/Duplex traits.\n // See, https://github.com/nodejs/node/pull/33515.\n d = new Duplexify({\n // TODO (ronag): highWaterMark?\n readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode),\n writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode),\n readable,\n writable\n })\n if (writable) {\n eos(w, (err) => {\n writable = false\n if (err) {\n destroyer(r, err)\n }\n onfinished(err)\n })\n d._write = function (chunk, encoding, callback) {\n if (w.write(chunk, encoding)) {\n callback()\n } else {\n ondrain = callback\n }\n }\n d._final = function (callback) {\n w.end()\n onfinish = callback\n }\n w.on('drain', function () {\n if (ondrain) {\n const cb = ondrain\n ondrain = null\n cb()\n }\n })\n w.on('finish', function () {\n if (onfinish) {\n const cb = onfinish\n onfinish = null\n cb()\n }\n })\n }\n if (readable) {\n eos(r, (err) => {\n readable = false\n if (err) {\n destroyer(r, err)\n }\n onfinished(err)\n })\n r.on('readable', function () {\n if (onreadable) {\n const cb = onreadable\n onreadable = null\n cb()\n }\n })\n r.on('end', function () {\n d.push(null)\n })\n d._read = function () {\n while (true) {\n const buf = r.read()\n if (buf === null) {\n onreadable = d._read\n return\n }\n if (!d.push(buf)) {\n return\n }\n }\n }\n }\n d._destroy = function (err, callback) {\n if (!err && onclose !== null) {\n err = new AbortError()\n }\n onreadable = null\n ondrain = null\n onfinish = null\n if (onclose === null) {\n callback(err)\n } else {\n onclose = callback\n destroyer(w, err)\n destroyer(r, err)\n }\n }\n return d\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes\nconst { kEmptyObject, once } = require('../../ours/util')\nconst { validateAbortSignal, validateFunction, validateObject, validateBoolean } = require('../validators')\nconst { Promise, PromisePrototypeThen, SymbolDispose } = require('../../ours/primordials')\nconst {\n isClosed,\n isReadable,\n isReadableNodeStream,\n isReadableStream,\n isReadableFinished,\n isReadableErrored,\n isWritable,\n isWritableNodeStream,\n isWritableStream,\n isWritableFinished,\n isWritableErrored,\n isNodeStream,\n willEmitClose: _willEmitClose,\n kIsClosedPromise\n} = require('./utils')\nlet addAbortListener\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function'\n}\nconst nop = () => {}\nfunction eos(stream, options, callback) {\n var _options$readable, _options$writable\n if (arguments.length === 2) {\n callback = options\n options = kEmptyObject\n } else if (options == null) {\n options = kEmptyObject\n } else {\n validateObject(options, 'options')\n }\n validateFunction(callback, 'callback')\n validateAbortSignal(options.signal, 'options.signal')\n callback = once(callback)\n if (isReadableStream(stream) || isWritableStream(stream)) {\n return eosWeb(stream, options, callback)\n }\n if (!isNodeStream(stream)) {\n throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n }\n const readable =\n (_options$readable = options.readable) !== null && _options$readable !== undefined\n ? _options$readable\n : isReadableNodeStream(stream)\n const writable =\n (_options$writable = options.writable) !== null && _options$writable !== undefined\n ? _options$writable\n : isWritableNodeStream(stream)\n const wState = stream._writableState\n const rState = stream._readableState\n const onlegacyfinish = () => {\n if (!stream.writable) {\n onfinish()\n }\n }\n\n // TODO (ronag): Improve soft detection to include core modules and\n // common ecosystem modules that do properly emit 'close' but fail\n // this generic check.\n let willEmitClose =\n _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable\n let writableFinished = isWritableFinished(stream, false)\n const onfinish = () => {\n writableFinished = true\n // Stream should not be destroyed here. If it is that\n // means that user space is doing something differently and\n // we cannot trust willEmitClose.\n if (stream.destroyed) {\n willEmitClose = false\n }\n if (willEmitClose && (!stream.readable || readable)) {\n return\n }\n if (!readable || readableFinished) {\n callback.call(stream)\n }\n }\n let readableFinished = isReadableFinished(stream, false)\n const onend = () => {\n readableFinished = true\n // Stream should not be destroyed here. If it is that\n // means that user space is doing something differently and\n // we cannot trust willEmitClose.\n if (stream.destroyed) {\n willEmitClose = false\n }\n if (willEmitClose && (!stream.writable || writable)) {\n return\n }\n if (!writable || writableFinished) {\n callback.call(stream)\n }\n }\n const onerror = (err) => {\n callback.call(stream, err)\n }\n let closed = isClosed(stream)\n const onclose = () => {\n closed = true\n const errored = isWritableErrored(stream) || isReadableErrored(stream)\n if (errored && typeof errored !== 'boolean') {\n return callback.call(stream, errored)\n }\n if (readable && !readableFinished && isReadableNodeStream(stream, true)) {\n if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n }\n if (writable && !writableFinished) {\n if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n }\n callback.call(stream)\n }\n const onclosed = () => {\n closed = true\n const errored = isWritableErrored(stream) || isReadableErrored(stream)\n if (errored && typeof errored !== 'boolean') {\n return callback.call(stream, errored)\n }\n callback.call(stream)\n }\n const onrequest = () => {\n stream.req.on('finish', onfinish)\n }\n if (isRequest(stream)) {\n stream.on('complete', onfinish)\n if (!willEmitClose) {\n stream.on('abort', onclose)\n }\n if (stream.req) {\n onrequest()\n } else {\n stream.on('request', onrequest)\n }\n } else if (writable && !wState) {\n // legacy streams\n stream.on('end', onlegacyfinish)\n stream.on('close', onlegacyfinish)\n }\n\n // Not all streams will emit 'close' after 'aborted'.\n if (!willEmitClose && typeof stream.aborted === 'boolean') {\n stream.on('aborted', onclose)\n }\n stream.on('end', onend)\n stream.on('finish', onfinish)\n if (options.error !== false) {\n stream.on('error', onerror)\n }\n stream.on('close', onclose)\n if (closed) {\n process.nextTick(onclose)\n } else if (\n (wState !== null && wState !== undefined && wState.errorEmitted) ||\n (rState !== null && rState !== undefined && rState.errorEmitted)\n ) {\n if (!willEmitClose) {\n process.nextTick(onclosed)\n }\n } else if (\n !readable &&\n (!willEmitClose || isReadable(stream)) &&\n (writableFinished || isWritable(stream) === false)\n ) {\n process.nextTick(onclosed)\n } else if (\n !writable &&\n (!willEmitClose || isWritable(stream)) &&\n (readableFinished || isReadable(stream) === false)\n ) {\n process.nextTick(onclosed)\n } else if (rState && stream.req && stream.aborted) {\n process.nextTick(onclosed)\n }\n const cleanup = () => {\n callback = nop\n stream.removeListener('aborted', onclose)\n stream.removeListener('complete', onfinish)\n stream.removeListener('abort', onclose)\n stream.removeListener('request', onrequest)\n if (stream.req) stream.req.removeListener('finish', onfinish)\n stream.removeListener('end', onlegacyfinish)\n stream.removeListener('close', onlegacyfinish)\n stream.removeListener('finish', onfinish)\n stream.removeListener('end', onend)\n stream.removeListener('error', onerror)\n stream.removeListener('close', onclose)\n }\n if (options.signal && !closed) {\n const abort = () => {\n // Keep it because cleanup removes it.\n const endCallback = callback\n cleanup()\n endCallback.call(\n stream,\n new AbortError(undefined, {\n cause: options.signal.reason\n })\n )\n }\n if (options.signal.aborted) {\n process.nextTick(abort)\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(options.signal, abort)\n const originalCallback = callback\n callback = once((...args) => {\n disposable[SymbolDispose]()\n originalCallback.apply(stream, args)\n })\n }\n }\n return cleanup\n}\nfunction eosWeb(stream, options, callback) {\n let isAborted = false\n let abort = nop\n if (options.signal) {\n abort = () => {\n isAborted = true\n callback.call(\n stream,\n new AbortError(undefined, {\n cause: options.signal.reason\n })\n )\n }\n if (options.signal.aborted) {\n process.nextTick(abort)\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(options.signal, abort)\n const originalCallback = callback\n callback = once((...args) => {\n disposable[SymbolDispose]()\n originalCallback.apply(stream, args)\n })\n }\n }\n const resolverFn = (...args) => {\n if (!isAborted) {\n process.nextTick(() => callback.apply(stream, args))\n }\n }\n PromisePrototypeThen(stream[kIsClosedPromise].promise, resolverFn, resolverFn)\n return nop\n}\nfunction finished(stream, opts) {\n var _opts\n let autoCleanup = false\n if (opts === null) {\n opts = kEmptyObject\n }\n if ((_opts = opts) !== null && _opts !== undefined && _opts.cleanup) {\n validateBoolean(opts.cleanup, 'cleanup')\n autoCleanup = opts.cleanup\n }\n return new Promise((resolve, reject) => {\n const cleanup = eos(stream, opts, (err) => {\n if (autoCleanup) {\n cleanup()\n }\n if (err) {\n reject(err)\n } else {\n resolve()\n }\n })\n })\n}\nmodule.exports = eos\nmodule.exports.finished = finished\n","'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require('../../ours/errors').codes\nfunction from(Readable, iterable, opts) {\n let iterator\n if (typeof iterable === 'string' || iterable instanceof Buffer) {\n return new Readable({\n objectMode: true,\n ...opts,\n read() {\n this.push(iterable)\n this.push(null)\n }\n })\n }\n let isAsync\n if (iterable && iterable[SymbolAsyncIterator]) {\n isAsync = true\n iterator = iterable[SymbolAsyncIterator]()\n } else if (iterable && iterable[SymbolIterator]) {\n isAsync = false\n iterator = iterable[SymbolIterator]()\n } else {\n throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable)\n }\n const readable = new Readable({\n objectMode: true,\n highWaterMark: 1,\n // TODO(ronag): What options should be allowed?\n ...opts\n })\n\n // Flag to protect against _read\n // being called before last iteration completion.\n let reading = false\n readable._read = function () {\n if (!reading) {\n reading = true\n next()\n }\n }\n readable._destroy = function (error, cb) {\n PromisePrototypeThen(\n close(error),\n () => process.nextTick(cb, error),\n // nextTick is here in case cb throws\n (e) => process.nextTick(cb, e || error)\n )\n }\n async function close(error) {\n const hadError = error !== undefined && error !== null\n const hasThrow = typeof iterator.throw === 'function'\n if (hadError && hasThrow) {\n const { value, done } = await iterator.throw(error)\n await value\n if (done) {\n return\n }\n }\n if (typeof iterator.return === 'function') {\n const { value } = await iterator.return()\n await value\n }\n }\n async function next() {\n for (;;) {\n try {\n const { value, done } = isAsync ? await iterator.next() : iterator.next()\n if (done) {\n readable.push(null)\n } else {\n const res = value && typeof value.then === 'function' ? await value : value\n if (res === null) {\n reading = false\n throw new ERR_STREAM_NULL_VALUES()\n } else if (readable.push(res)) {\n continue\n } else {\n reading = false\n }\n }\n } catch (err) {\n readable.destroy(err)\n }\n break\n }\n }\n return readable\n}\nmodule.exports = from\n","'use strict'\n\nconst { ArrayIsArray, ObjectSetPrototypeOf } = require('../../ours/primordials')\nconst { EventEmitter: EE } = require('events')\nfunction Stream(opts) {\n EE.call(this, opts)\n}\nObjectSetPrototypeOf(Stream.prototype, EE.prototype)\nObjectSetPrototypeOf(Stream, EE)\nStream.prototype.pipe = function (dest, options) {\n const source = this\n function ondata(chunk) {\n if (dest.writable && dest.write(chunk) === false && source.pause) {\n source.pause()\n }\n }\n source.on('data', ondata)\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume()\n }\n }\n dest.on('drain', ondrain)\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend)\n source.on('close', onclose)\n }\n let didOnEnd = false\n function onend() {\n if (didOnEnd) return\n didOnEnd = true\n dest.end()\n }\n function onclose() {\n if (didOnEnd) return\n didOnEnd = true\n if (typeof dest.destroy === 'function') dest.destroy()\n }\n\n // Don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup()\n if (EE.listenerCount(this, 'error') === 0) {\n this.emit('error', er)\n }\n }\n prependListener(source, 'error', onerror)\n prependListener(dest, 'error', onerror)\n\n // Remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata)\n dest.removeListener('drain', ondrain)\n source.removeListener('end', onend)\n source.removeListener('close', onclose)\n source.removeListener('error', onerror)\n dest.removeListener('error', onerror)\n source.removeListener('end', cleanup)\n source.removeListener('close', cleanup)\n dest.removeListener('close', cleanup)\n }\n source.on('end', cleanup)\n source.on('close', cleanup)\n dest.on('close', cleanup)\n dest.emit('pipe', source)\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest\n}\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn)\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn)\n else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn)\n else emitter._events[event] = [fn, emitter._events[event]]\n}\nmodule.exports = {\n Stream,\n prependListener\n}\n","'use strict'\n\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst {\n codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE },\n AbortError\n} = require('../../ours/errors')\nconst { validateAbortSignal, validateInteger, validateObject } = require('../validators')\nconst kWeakHandler = require('../../ours/primordials').Symbol('kWeak')\nconst kResistStopPropagation = require('../../ours/primordials').Symbol('kResistStopPropagation')\nconst { finished } = require('./end-of-stream')\nconst staticCompose = require('./compose')\nconst { addAbortSignalNoValidate } = require('./add-abort-signal')\nconst { isWritable, isNodeStream } = require('./utils')\nconst { deprecate } = require('../../ours/util')\nconst {\n ArrayPrototypePush,\n Boolean,\n MathFloor,\n Number,\n NumberIsNaN,\n Promise,\n PromiseReject,\n PromiseResolve,\n PromisePrototypeThen,\n Symbol\n} = require('../../ours/primordials')\nconst kEmpty = Symbol('kEmpty')\nconst kEof = Symbol('kEof')\nfunction compose(stream, options) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n if (isNodeStream(stream) && !isWritable(stream)) {\n throw new ERR_INVALID_ARG_VALUE('stream', stream, 'must be writable')\n }\n const composedStream = staticCompose(this, stream)\n if (options !== null && options !== undefined && options.signal) {\n // Not validating as we already validated before\n addAbortSignalNoValidate(options.signal, composedStream)\n }\n return composedStream\n}\nfunction map(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n let concurrency = 1\n if ((options === null || options === undefined ? undefined : options.concurrency) != null) {\n concurrency = MathFloor(options.concurrency)\n }\n let highWaterMark = concurrency - 1\n if ((options === null || options === undefined ? undefined : options.highWaterMark) != null) {\n highWaterMark = MathFloor(options.highWaterMark)\n }\n validateInteger(concurrency, 'options.concurrency', 1)\n validateInteger(highWaterMark, 'options.highWaterMark', 0)\n highWaterMark += concurrency\n return async function* map() {\n const signal = require('../../ours/util').AbortSignalAny(\n [options === null || options === undefined ? undefined : options.signal].filter(Boolean)\n )\n const stream = this\n const queue = []\n const signalOpt = {\n signal\n }\n let next\n let resume\n let done = false\n let cnt = 0\n function onCatch() {\n done = true\n afterItemProcessed()\n }\n function afterItemProcessed() {\n cnt -= 1\n maybeResume()\n }\n function maybeResume() {\n if (resume && !done && cnt < concurrency && queue.length < highWaterMark) {\n resume()\n resume = null\n }\n }\n async function pump() {\n try {\n for await (let val of stream) {\n if (done) {\n return\n }\n if (signal.aborted) {\n throw new AbortError()\n }\n try {\n val = fn(val, signalOpt)\n if (val === kEmpty) {\n continue\n }\n val = PromiseResolve(val)\n } catch (err) {\n val = PromiseReject(err)\n }\n cnt += 1\n PromisePrototypeThen(val, afterItemProcessed, onCatch)\n queue.push(val)\n if (next) {\n next()\n next = null\n }\n if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) {\n await new Promise((resolve) => {\n resume = resolve\n })\n }\n }\n queue.push(kEof)\n } catch (err) {\n const val = PromiseReject(err)\n PromisePrototypeThen(val, afterItemProcessed, onCatch)\n queue.push(val)\n } finally {\n done = true\n if (next) {\n next()\n next = null\n }\n }\n }\n pump()\n try {\n while (true) {\n while (queue.length > 0) {\n const val = await queue[0]\n if (val === kEof) {\n return\n }\n if (signal.aborted) {\n throw new AbortError()\n }\n if (val !== kEmpty) {\n yield val\n }\n queue.shift()\n maybeResume()\n }\n await new Promise((resolve) => {\n next = resolve\n })\n }\n } finally {\n done = true\n if (resume) {\n resume()\n resume = null\n }\n }\n }.call(this)\n}\nfunction asIndexedPairs(options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n return async function* asIndexedPairs() {\n let index = 0\n for await (const val of this) {\n var _options$signal\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal = options.signal) !== null &&\n _options$signal !== undefined &&\n _options$signal.aborted\n ) {\n throw new AbortError({\n cause: options.signal.reason\n })\n }\n yield [index++, val]\n }\n }.call(this)\n}\nasync function some(fn, options = undefined) {\n for await (const unused of filter.call(this, fn, options)) {\n return true\n }\n return false\n}\nasync function every(fn, options = undefined) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n // https://en.wikipedia.org/wiki/De_Morgan%27s_laws\n return !(await some.call(\n this,\n async (...args) => {\n return !(await fn(...args))\n },\n options\n ))\n}\nasync function find(fn, options) {\n for await (const result of filter.call(this, fn, options)) {\n return result\n }\n return undefined\n}\nasync function forEach(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n async function forEachFn(value, options) {\n await fn(value, options)\n return kEmpty\n }\n // eslint-disable-next-line no-unused-vars\n for await (const unused of map.call(this, forEachFn, options));\n}\nfunction filter(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n async function filterFn(value, options) {\n if (await fn(value, options)) {\n return value\n }\n return kEmpty\n }\n return map.call(this, filterFn, options)\n}\n\n// Specific to provide better error to reduce since the argument is only\n// missing if the stream has no items in it - but the code is still appropriate\nclass ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS {\n constructor() {\n super('reduce')\n this.message = 'Reduce of an empty stream requires an initial value'\n }\n}\nasync function reduce(reducer, initialValue, options) {\n var _options$signal2\n if (typeof reducer !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer)\n }\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n let hasInitialValue = arguments.length > 1\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal2 = options.signal) !== null &&\n _options$signal2 !== undefined &&\n _options$signal2.aborted\n ) {\n const err = new AbortError(undefined, {\n cause: options.signal.reason\n })\n this.once('error', () => {}) // The error is already propagated\n await finished(this.destroy(err))\n throw err\n }\n const ac = new AbortController()\n const signal = ac.signal\n if (options !== null && options !== undefined && options.signal) {\n const opts = {\n once: true,\n [kWeakHandler]: this,\n [kResistStopPropagation]: true\n }\n options.signal.addEventListener('abort', () => ac.abort(), opts)\n }\n let gotAnyItemFromStream = false\n try {\n for await (const value of this) {\n var _options$signal3\n gotAnyItemFromStream = true\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal3 = options.signal) !== null &&\n _options$signal3 !== undefined &&\n _options$signal3.aborted\n ) {\n throw new AbortError()\n }\n if (!hasInitialValue) {\n initialValue = value\n hasInitialValue = true\n } else {\n initialValue = await reducer(initialValue, value, {\n signal\n })\n }\n }\n if (!gotAnyItemFromStream && !hasInitialValue) {\n throw new ReduceAwareErrMissingArgs()\n }\n } finally {\n ac.abort()\n }\n return initialValue\n}\nasync function toArray(options) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n const result = []\n for await (const val of this) {\n var _options$signal4\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal4 = options.signal) !== null &&\n _options$signal4 !== undefined &&\n _options$signal4.aborted\n ) {\n throw new AbortError(undefined, {\n cause: options.signal.reason\n })\n }\n ArrayPrototypePush(result, val)\n }\n return result\n}\nfunction flatMap(fn, options) {\n const values = map.call(this, fn, options)\n return async function* flatMap() {\n for await (const val of values) {\n yield* val\n }\n }.call(this)\n}\nfunction toIntegerOrInfinity(number) {\n // We coerce here to align with the spec\n // https://github.com/tc39/proposal-iterator-helpers/issues/169\n number = Number(number)\n if (NumberIsNaN(number)) {\n return 0\n }\n if (number < 0) {\n throw new ERR_OUT_OF_RANGE('number', '>= 0', number)\n }\n return number\n}\nfunction drop(number, options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n number = toIntegerOrInfinity(number)\n return async function* drop() {\n var _options$signal5\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal5 = options.signal) !== null &&\n _options$signal5 !== undefined &&\n _options$signal5.aborted\n ) {\n throw new AbortError()\n }\n for await (const val of this) {\n var _options$signal6\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal6 = options.signal) !== null &&\n _options$signal6 !== undefined &&\n _options$signal6.aborted\n ) {\n throw new AbortError()\n }\n if (number-- <= 0) {\n yield val\n }\n }\n }.call(this)\n}\nfunction take(number, options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n number = toIntegerOrInfinity(number)\n return async function* take() {\n var _options$signal7\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal7 = options.signal) !== null &&\n _options$signal7 !== undefined &&\n _options$signal7.aborted\n ) {\n throw new AbortError()\n }\n for await (const val of this) {\n var _options$signal8\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal8 = options.signal) !== null &&\n _options$signal8 !== undefined &&\n _options$signal8.aborted\n ) {\n throw new AbortError()\n }\n if (number-- > 0) {\n yield val\n }\n\n // Don't get another item from iterator in case we reached the end\n if (number <= 0) {\n return\n }\n }\n }.call(this)\n}\nmodule.exports.streamReturningOperators = {\n asIndexedPairs: deprecate(asIndexedPairs, 'readable.asIndexedPairs will be removed in a future version.'),\n drop,\n filter,\n flatMap,\n map,\n take,\n compose\n}\nmodule.exports.promiseReturningOperators = {\n every,\n forEach,\n reduce,\n toArray,\n some,\n find\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf } = require('../../ours/primordials')\nmodule.exports = PassThrough\nconst Transform = require('./transform')\nObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype)\nObjectSetPrototypeOf(PassThrough, Transform)\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options)\n Transform.call(this, options)\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk)\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { ArrayIsArray, Promise, SymbolAsyncIterator, SymbolDispose } = require('../../ours/primordials')\nconst eos = require('./end-of-stream')\nconst { once } = require('../../ours/util')\nconst destroyImpl = require('./destroy')\nconst Duplex = require('./duplex')\nconst {\n aggregateTwoErrors,\n codes: {\n ERR_INVALID_ARG_TYPE,\n ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED,\n ERR_STREAM_PREMATURE_CLOSE\n },\n AbortError\n} = require('../../ours/errors')\nconst { validateFunction, validateAbortSignal } = require('../validators')\nconst {\n isIterable,\n isReadable,\n isReadableNodeStream,\n isNodeStream,\n isTransformStream,\n isWebStream,\n isReadableStream,\n isReadableFinished\n} = require('./utils')\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nlet PassThrough\nlet Readable\nlet addAbortListener\nfunction destroyer(stream, reading, writing) {\n let finished = false\n stream.on('close', () => {\n finished = true\n })\n const cleanup = eos(\n stream,\n {\n readable: reading,\n writable: writing\n },\n (err) => {\n finished = !err\n }\n )\n return {\n destroy: (err) => {\n if (finished) return\n finished = true\n destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe'))\n },\n cleanup\n }\n}\nfunction popCallback(streams) {\n // Streams should never be an empty array. It should always contain at least\n // a single stream. Therefore optimize for the average case instead of\n // checking for length === 0 as well.\n validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]')\n return streams.pop()\n}\nfunction makeAsyncIterable(val) {\n if (isIterable(val)) {\n return val\n } else if (isReadableNodeStream(val)) {\n // Legacy streams are not Iterable.\n return fromReadable(val)\n }\n throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val)\n}\nasync function* fromReadable(val) {\n if (!Readable) {\n Readable = require('./readable')\n }\n yield* Readable.prototype[SymbolAsyncIterator].call(val)\n}\nasync function pumpToNode(iterable, writable, finish, { end }) {\n let error\n let onresolve = null\n const resume = (err) => {\n if (err) {\n error = err\n }\n if (onresolve) {\n const callback = onresolve\n onresolve = null\n callback()\n }\n }\n const wait = () =>\n new Promise((resolve, reject) => {\n if (error) {\n reject(error)\n } else {\n onresolve = () => {\n if (error) {\n reject(error)\n } else {\n resolve()\n }\n }\n }\n })\n writable.on('drain', resume)\n const cleanup = eos(\n writable,\n {\n readable: false\n },\n resume\n )\n try {\n if (writable.writableNeedDrain) {\n await wait()\n }\n for await (const chunk of iterable) {\n if (!writable.write(chunk)) {\n await wait()\n }\n }\n if (end) {\n writable.end()\n await wait()\n }\n finish()\n } catch (err) {\n finish(error !== err ? aggregateTwoErrors(error, err) : err)\n } finally {\n cleanup()\n writable.off('drain', resume)\n }\n}\nasync function pumpToWeb(readable, writable, finish, { end }) {\n if (isTransformStream(writable)) {\n writable = writable.writable\n }\n // https://streams.spec.whatwg.org/#example-manual-write-with-backpressure\n const writer = writable.getWriter()\n try {\n for await (const chunk of readable) {\n await writer.ready\n writer.write(chunk).catch(() => {})\n }\n await writer.ready\n if (end) {\n await writer.close()\n }\n finish()\n } catch (err) {\n try {\n await writer.abort(err)\n finish(err)\n } catch (err) {\n finish(err)\n }\n }\n}\nfunction pipeline(...streams) {\n return pipelineImpl(streams, once(popCallback(streams)))\n}\nfunction pipelineImpl(streams, callback, opts) {\n if (streams.length === 1 && ArrayIsArray(streams[0])) {\n streams = streams[0]\n }\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams')\n }\n const ac = new AbortController()\n const signal = ac.signal\n const outerSignal = opts === null || opts === undefined ? undefined : opts.signal\n\n // Need to cleanup event listeners if last stream is readable\n // https://github.com/nodejs/node/issues/35452\n const lastStreamCleanup = []\n validateAbortSignal(outerSignal, 'options.signal')\n function abort() {\n finishImpl(new AbortError())\n }\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n let disposable\n if (outerSignal) {\n disposable = addAbortListener(outerSignal, abort)\n }\n let error\n let value\n const destroys = []\n let finishCount = 0\n function finish(err) {\n finishImpl(err, --finishCount === 0)\n }\n function finishImpl(err, final) {\n var _disposable\n if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) {\n error = err\n }\n if (!error && !final) {\n return\n }\n while (destroys.length) {\n destroys.shift()(error)\n }\n ;(_disposable = disposable) === null || _disposable === undefined ? undefined : _disposable[SymbolDispose]()\n ac.abort()\n if (final) {\n if (!error) {\n lastStreamCleanup.forEach((fn) => fn())\n }\n process.nextTick(callback, error, value)\n }\n }\n let ret\n for (let i = 0; i < streams.length; i++) {\n const stream = streams[i]\n const reading = i < streams.length - 1\n const writing = i > 0\n const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false\n const isLastStream = i === streams.length - 1\n if (isNodeStream(stream)) {\n if (end) {\n const { destroy, cleanup } = destroyer(stream, reading, writing)\n destroys.push(destroy)\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n }\n\n // Catch stream errors that occur after pipe/pump has completed.\n function onError(err) {\n if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n finish(err)\n }\n }\n stream.on('error', onError)\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(() => {\n stream.removeListener('error', onError)\n })\n }\n }\n if (i === 0) {\n if (typeof stream === 'function') {\n ret = stream({\n signal\n })\n if (!isIterable(ret)) {\n throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret)\n }\n } else if (isIterable(stream) || isReadableNodeStream(stream) || isTransformStream(stream)) {\n ret = stream\n } else {\n ret = Duplex.from(stream)\n }\n } else if (typeof stream === 'function') {\n if (isTransformStream(ret)) {\n var _ret\n ret = makeAsyncIterable((_ret = ret) === null || _ret === undefined ? undefined : _ret.readable)\n } else {\n ret = makeAsyncIterable(ret)\n }\n ret = stream(ret, {\n signal\n })\n if (reading) {\n if (!isIterable(ret, true)) {\n throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret)\n }\n } else {\n var _ret2\n if (!PassThrough) {\n PassThrough = require('./passthrough')\n }\n\n // If the last argument to pipeline is not a stream\n // we must create a proxy stream so that pipeline(...)\n // always returns a stream which can be further\n // composed through `.pipe(stream)`.\n\n const pt = new PassThrough({\n objectMode: true\n })\n\n // Handle Promises/A+ spec, `then` could be a getter that throws on\n // second use.\n const then = (_ret2 = ret) === null || _ret2 === undefined ? undefined : _ret2.then\n if (typeof then === 'function') {\n finishCount++\n then.call(\n ret,\n (val) => {\n value = val\n if (val != null) {\n pt.write(val)\n }\n if (end) {\n pt.end()\n }\n process.nextTick(finish)\n },\n (err) => {\n pt.destroy(err)\n process.nextTick(finish, err)\n }\n )\n } else if (isIterable(ret, true)) {\n finishCount++\n pumpToNode(ret, pt, finish, {\n end\n })\n } else if (isReadableStream(ret) || isTransformStream(ret)) {\n const toRead = ret.readable || ret\n finishCount++\n pumpToNode(toRead, pt, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret)\n }\n ret = pt\n const { destroy, cleanup } = destroyer(ret, false, true)\n destroys.push(destroy)\n if (isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n }\n } else if (isNodeStream(stream)) {\n if (isReadableNodeStream(ret)) {\n finishCount += 2\n const cleanup = pipe(ret, stream, finish, {\n end\n })\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n } else if (isTransformStream(ret) || isReadableStream(ret)) {\n const toRead = ret.readable || ret\n finishCount++\n pumpToNode(toRead, stream, finish, {\n end\n })\n } else if (isIterable(ret)) {\n finishCount++\n pumpToNode(ret, stream, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_ARG_TYPE(\n 'val',\n ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n ret\n )\n }\n ret = stream\n } else if (isWebStream(stream)) {\n if (isReadableNodeStream(ret)) {\n finishCount++\n pumpToWeb(makeAsyncIterable(ret), stream, finish, {\n end\n })\n } else if (isReadableStream(ret) || isIterable(ret)) {\n finishCount++\n pumpToWeb(ret, stream, finish, {\n end\n })\n } else if (isTransformStream(ret)) {\n finishCount++\n pumpToWeb(ret.readable, stream, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_ARG_TYPE(\n 'val',\n ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n ret\n )\n }\n ret = stream\n } else {\n ret = Duplex.from(stream)\n }\n }\n if (\n (signal !== null && signal !== undefined && signal.aborted) ||\n (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted)\n ) {\n process.nextTick(abort)\n }\n return ret\n}\nfunction pipe(src, dst, finish, { end }) {\n let ended = false\n dst.on('close', () => {\n if (!ended) {\n // Finish if the destination closes before the source has completed.\n finish(new ERR_STREAM_PREMATURE_CLOSE())\n }\n })\n src.pipe(dst, {\n end: false\n }) // If end is true we already will have a listener to end dst.\n\n if (end) {\n // Compat. Before node v10.12.0 stdio used to throw an error so\n // pipe() did/does not end() stdio destinations.\n // Now they allow it but \"secretly\" don't close the underlying fd.\n\n function endFn() {\n ended = true\n dst.end()\n }\n if (isReadableFinished(src)) {\n // End the destination if the source has already ended.\n process.nextTick(endFn)\n } else {\n src.once('end', endFn)\n }\n } else {\n finish()\n }\n eos(\n src,\n {\n readable: true,\n writable: false\n },\n (err) => {\n const rState = src._readableState\n if (\n err &&\n err.code === 'ERR_STREAM_PREMATURE_CLOSE' &&\n rState &&\n rState.ended &&\n !rState.errored &&\n !rState.errorEmitted\n ) {\n // Some readable streams will emit 'close' before 'end'. However, since\n // this is on the readable side 'end' should still be emitted if the\n // stream has been ended and no error emitted. This should be allowed in\n // favor of backwards compatibility. Since the stream is piped to a\n // destination this should not result in any observable difference.\n // We don't need to check if this is a writable premature close since\n // eos will only fail with premature close on the reading side for\n // duplex streams.\n src.once('end', finish).once('error', finish)\n } else {\n finish(err)\n }\n }\n )\n return eos(\n dst,\n {\n readable: false,\n writable: true\n },\n finish\n )\n}\nmodule.exports = {\n pipelineImpl,\n pipeline\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n;('use strict')\nconst {\n ArrayPrototypeIndexOf,\n NumberIsInteger,\n NumberIsNaN,\n NumberParseInt,\n ObjectDefineProperties,\n ObjectKeys,\n ObjectSetPrototypeOf,\n Promise,\n SafeSet,\n SymbolAsyncDispose,\n SymbolAsyncIterator,\n Symbol\n} = require('../../ours/primordials')\nmodule.exports = Readable\nReadable.ReadableState = ReadableState\nconst { EventEmitter: EE } = require('events')\nconst { Stream, prependListener } = require('./legacy')\nconst { Buffer } = require('buffer')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst eos = require('./end-of-stream')\nlet debug = require('../../ours/util').debuglog('stream', (fn) => {\n debug = fn\n})\nconst BufferList = require('./buffer_list')\nconst destroyImpl = require('./destroy')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n aggregateTwoErrors,\n codes: {\n ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED,\n ERR_OUT_OF_RANGE,\n ERR_STREAM_PUSH_AFTER_EOF,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT\n },\n AbortError\n} = require('../../ours/errors')\nconst { validateObject } = require('../validators')\nconst kPaused = Symbol('kPaused')\nconst { StringDecoder } = require('string_decoder')\nconst from = require('./from')\nObjectSetPrototypeOf(Readable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Readable, Stream)\nconst nop = () => {}\nconst { errorOrDestroy } = destroyImpl\nconst kObjectMode = 1 << 0\nconst kEnded = 1 << 1\nconst kEndEmitted = 1 << 2\nconst kReading = 1 << 3\nconst kConstructed = 1 << 4\nconst kSync = 1 << 5\nconst kNeedReadable = 1 << 6\nconst kEmittedReadable = 1 << 7\nconst kReadableListening = 1 << 8\nconst kResumeScheduled = 1 << 9\nconst kErrorEmitted = 1 << 10\nconst kEmitClose = 1 << 11\nconst kAutoDestroy = 1 << 12\nconst kDestroyed = 1 << 13\nconst kClosed = 1 << 14\nconst kCloseEmitted = 1 << 15\nconst kMultiAwaitDrain = 1 << 16\nconst kReadingMore = 1 << 17\nconst kDataEmitted = 1 << 18\n\n// TODO(benjamingr) it is likely slower to do it this way than with free functions\nfunction makeBitMapDescriptor(bit) {\n return {\n enumerable: false,\n get() {\n return (this.state & bit) !== 0\n },\n set(value) {\n if (value) this.state |= bit\n else this.state &= ~bit\n }\n }\n}\nObjectDefineProperties(ReadableState.prototype, {\n objectMode: makeBitMapDescriptor(kObjectMode),\n ended: makeBitMapDescriptor(kEnded),\n endEmitted: makeBitMapDescriptor(kEndEmitted),\n reading: makeBitMapDescriptor(kReading),\n // Stream is still being constructed and cannot be\n // destroyed until construction finished or failed.\n // Async construction is opt in, therefore we start as\n // constructed.\n constructed: makeBitMapDescriptor(kConstructed),\n // A flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n sync: makeBitMapDescriptor(kSync),\n // Whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n needReadable: makeBitMapDescriptor(kNeedReadable),\n emittedReadable: makeBitMapDescriptor(kEmittedReadable),\n readableListening: makeBitMapDescriptor(kReadableListening),\n resumeScheduled: makeBitMapDescriptor(kResumeScheduled),\n // True if the error was already emitted and should not be thrown again.\n errorEmitted: makeBitMapDescriptor(kErrorEmitted),\n emitClose: makeBitMapDescriptor(kEmitClose),\n autoDestroy: makeBitMapDescriptor(kAutoDestroy),\n // Has it been destroyed.\n destroyed: makeBitMapDescriptor(kDestroyed),\n // Indicates whether the stream has finished destroying.\n closed: makeBitMapDescriptor(kClosed),\n // True if close has been emitted or would have been emitted\n // depending on emitClose.\n closeEmitted: makeBitMapDescriptor(kCloseEmitted),\n multiAwaitDrain: makeBitMapDescriptor(kMultiAwaitDrain),\n // If true, a maybeReadMore has been scheduled.\n readingMore: makeBitMapDescriptor(kReadingMore),\n dataEmitted: makeBitMapDescriptor(kDataEmitted)\n})\nfunction ReadableState(options, stream, isDuplex) {\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n // Bit map field to store ReadableState more effciently with 1 bit per field\n // instead of a V8 slot per field.\n this.state = kEmitClose | kAutoDestroy | kConstructed | kSync\n // Object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away.\n if (options && options.objectMode) this.state |= kObjectMode\n if (isDuplex && options && options.readableObjectMode) this.state |= kObjectMode\n\n // The point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = options\n ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex)\n : getDefaultHighWaterMark(false)\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift().\n this.buffer = new BufferList()\n this.length = 0\n this.pipes = []\n this.flowing = null\n this[kPaused] = null\n\n // Should close be emitted on destroy. Defaults to true.\n if (options && options.emitClose === false) this.state &= ~kEmitClose\n\n // Should .destroy() be called after 'end' (and potentially 'finish').\n if (options && options.autoDestroy === false) this.state &= ~kAutoDestroy\n\n // Indicates whether the stream has errored. When true no further\n // _read calls, 'data' or 'readable' events should occur. This is needed\n // since when autoDestroy is disabled we need a way to tell whether the\n // stream has failed.\n this.errored = null\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n // Ref the piped dest which we need a drain event on it\n // type: null | Writable | Set.\n this.awaitDrainWriters = null\n this.decoder = null\n this.encoding = null\n if (options && options.encoding) {\n this.decoder = new StringDecoder(options.encoding)\n this.encoding = options.encoding\n }\n}\nfunction Readable(options) {\n if (!(this instanceof Readable)) return new Readable(options)\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5.\n const isDuplex = this instanceof require('./duplex')\n this._readableState = new ReadableState(options, this, isDuplex)\n if (options) {\n if (typeof options.read === 'function') this._read = options.read\n if (typeof options.destroy === 'function') this._destroy = options.destroy\n if (typeof options.construct === 'function') this._construct = options.construct\n if (options.signal && !isDuplex) addAbortSignal(options.signal, this)\n }\n Stream.call(this, options)\n destroyImpl.construct(this, () => {\n if (this._readableState.needReadable) {\n maybeReadMore(this, this._readableState)\n }\n })\n}\nReadable.prototype.destroy = destroyImpl.destroy\nReadable.prototype._undestroy = destroyImpl.undestroy\nReadable.prototype._destroy = function (err, cb) {\n cb(err)\n}\nReadable.prototype[EE.captureRejectionSymbol] = function (err) {\n this.destroy(err)\n}\nReadable.prototype[SymbolAsyncDispose] = function () {\n let error\n if (!this.destroyed) {\n error = this.readableEnded ? null : new AbortError()\n this.destroy(error)\n }\n return new Promise((resolve, reject) => eos(this, (err) => (err && err !== error ? reject(err) : resolve(null))))\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n return readableAddChunk(this, chunk, encoding, false)\n}\n\n// Unshift should *always* be something directly out of read().\nReadable.prototype.unshift = function (chunk, encoding) {\n return readableAddChunk(this, chunk, encoding, true)\n}\nfunction readableAddChunk(stream, chunk, encoding, addToFront) {\n debug('readableAddChunk', chunk)\n const state = stream._readableState\n let err\n if ((state.state & kObjectMode) === 0) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding\n if (state.encoding !== encoding) {\n if (addToFront && state.encoding) {\n // When unshifting, if state.encoding is set, we have to save\n // the string in the BufferList with the state encoding.\n chunk = Buffer.from(chunk, encoding).toString(state.encoding)\n } else {\n chunk = Buffer.from(chunk, encoding)\n encoding = ''\n }\n }\n } else if (chunk instanceof Buffer) {\n encoding = ''\n } else if (Stream._isUint8Array(chunk)) {\n chunk = Stream._uint8ArrayToBuffer(chunk)\n encoding = ''\n } else if (chunk != null) {\n err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n }\n }\n if (err) {\n errorOrDestroy(stream, err)\n } else if (chunk === null) {\n state.state &= ~kReading\n onEofChunk(stream, state)\n } else if ((state.state & kObjectMode) !== 0 || (chunk && chunk.length > 0)) {\n if (addToFront) {\n if ((state.state & kEndEmitted) !== 0) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT())\n else if (state.destroyed || state.errored) return false\n else addChunk(stream, state, chunk, true)\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF())\n } else if (state.destroyed || state.errored) {\n return false\n } else {\n state.state &= ~kReading\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk)\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false)\n else maybeReadMore(stream, state)\n } else {\n addChunk(stream, state, chunk, false)\n }\n }\n } else if (!addToFront) {\n state.state &= ~kReading\n maybeReadMore(stream, state)\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0)\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) {\n // Use the guard to avoid creating `Set()` repeatedly\n // when we have multiple pipes.\n if ((state.state & kMultiAwaitDrain) !== 0) {\n state.awaitDrainWriters.clear()\n } else {\n state.awaitDrainWriters = null\n }\n state.dataEmitted = true\n stream.emit('data', chunk)\n } else {\n // Update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length\n if (addToFront) state.buffer.unshift(chunk)\n else state.buffer.push(chunk)\n if ((state.state & kNeedReadable) !== 0) emitReadable(stream)\n }\n maybeReadMore(stream, state)\n}\nReadable.prototype.isPaused = function () {\n const state = this._readableState\n return state[kPaused] === true || state.flowing === false\n}\n\n// Backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n const decoder = new StringDecoder(enc)\n this._readableState.decoder = decoder\n // If setEncoding(null), decoder.encoding equals utf8.\n this._readableState.encoding = this._readableState.decoder.encoding\n const buffer = this._readableState.buffer\n // Iterate over current buffer to convert already stored Buffers:\n let content = ''\n for (const data of buffer) {\n content += decoder.write(data)\n }\n buffer.clear()\n if (content !== '') buffer.push(content)\n this._readableState.length = content.length\n return this\n}\n\n// Don't raise the hwm > 1GB.\nconst MAX_HWM = 0x40000000\nfunction computeNewHighWaterMark(n) {\n if (n > MAX_HWM) {\n throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n)\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts.\n n--\n n |= n >>> 1\n n |= n >>> 2\n n |= n >>> 4\n n |= n >>> 8\n n |= n >>> 16\n n++\n }\n return n\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || (state.length === 0 && state.ended)) return 0\n if ((state.state & kObjectMode) !== 0) return 1\n if (NumberIsNaN(n)) {\n // Only flow one buffer at a time.\n if (state.flowing && state.length) return state.buffer.first().length\n return state.length\n }\n if (n <= state.length) return n\n return state.ended ? state.length : 0\n}\n\n// You can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n)\n // Same as parseInt(undefined, 10), however V8 7.3 performance regressed\n // in this scenario, so we are doing it manually.\n if (n === undefined) {\n n = NaN\n } else if (!NumberIsInteger(n)) {\n n = NumberParseInt(n, 10)\n }\n const state = this._readableState\n const nOrig = n\n\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n)\n if (n !== 0) state.state &= ~kEmittedReadable\n\n // If we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (\n n === 0 &&\n state.needReadable &&\n ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)\n ) {\n debug('read: emitReadable', state.length, state.ended)\n if (state.length === 0 && state.ended) endReadable(this)\n else emitReadable(this)\n return null\n }\n n = howMuchToRead(n, state)\n\n // If we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this)\n return null\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n let doRead = (state.state & kNeedReadable) !== 0\n debug('need readable', doRead)\n\n // If we currently have less than the highWaterMark, then also read some.\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true\n debug('length less than watermark', doRead)\n }\n\n // However, if we've ended, then there's no point, if we're already\n // reading, then it's unnecessary, if we're constructing we have to wait,\n // and if we're destroyed or errored, then it's not allowed,\n if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) {\n doRead = false\n debug('reading, ended or constructing', doRead)\n } else if (doRead) {\n debug('do read')\n state.state |= kReading | kSync\n // If the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.state |= kNeedReadable\n\n // Call internal read method\n try {\n this._read(state.highWaterMark)\n } catch (err) {\n errorOrDestroy(this, err)\n }\n state.state &= ~kSync\n\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state)\n }\n let ret\n if (n > 0) ret = fromList(n, state)\n else ret = null\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark\n n = 0\n } else {\n state.length -= n\n if (state.multiAwaitDrain) {\n state.awaitDrainWriters.clear()\n } else {\n state.awaitDrainWriters = null\n }\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this)\n }\n if (ret !== null && !state.errorEmitted && !state.closeEmitted) {\n state.dataEmitted = true\n this.emit('data', ret)\n }\n return ret\n}\nfunction onEofChunk(stream, state) {\n debug('onEofChunk')\n if (state.ended) return\n if (state.decoder) {\n const chunk = state.decoder.end()\n if (chunk && chunk.length) {\n state.buffer.push(chunk)\n state.length += state.objectMode ? 1 : chunk.length\n }\n }\n state.ended = true\n if (state.sync) {\n // If we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call.\n emitReadable(stream)\n } else {\n // Emit 'readable' now to make sure it gets picked up.\n state.needReadable = false\n state.emittedReadable = true\n // We have to emit readable now that we are EOF. Modules\n // in the ecosystem (e.g. dicer) rely on this event being sync.\n emitReadable_(stream)\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n const state = stream._readableState\n debug('emitReadable', state.needReadable, state.emittedReadable)\n state.needReadable = false\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing)\n state.emittedReadable = true\n process.nextTick(emitReadable_, stream)\n }\n}\nfunction emitReadable_(stream) {\n const state = stream._readableState\n debug('emitReadable_', state.destroyed, state.length, state.ended)\n if (!state.destroyed && !state.errored && (state.length || state.ended)) {\n stream.emit('readable')\n state.emittedReadable = false\n }\n\n // The stream needs another readable event if:\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark\n flow(stream)\n}\n\n// At this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore && state.constructed) {\n state.readingMore = true\n process.nextTick(maybeReadMore_, stream, state)\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (\n !state.reading &&\n !state.ended &&\n (state.length < state.highWaterMark || (state.flowing && state.length === 0))\n ) {\n const len = state.length\n debug('maybeReadMore read 0')\n stream.read(0)\n if (len === state.length)\n // Didn't get any data, stop spinning.\n break\n }\n state.readingMore = false\n}\n\n// Abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_read()')\n}\nReadable.prototype.pipe = function (dest, pipeOpts) {\n const src = this\n const state = this._readableState\n if (state.pipes.length === 1) {\n if (!state.multiAwaitDrain) {\n state.multiAwaitDrain = true\n state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : [])\n }\n }\n state.pipes.push(dest)\n debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts)\n const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr\n const endFn = doEnd ? onend : unpipe\n if (state.endEmitted) process.nextTick(endFn)\n else src.once('end', endFn)\n dest.on('unpipe', onunpipe)\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe')\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true\n cleanup()\n }\n }\n }\n function onend() {\n debug('onend')\n dest.end()\n }\n let ondrain\n let cleanedUp = false\n function cleanup() {\n debug('cleanup')\n // Cleanup event handlers once the pipe is broken.\n dest.removeListener('close', onclose)\n dest.removeListener('finish', onfinish)\n if (ondrain) {\n dest.removeListener('drain', ondrain)\n }\n dest.removeListener('error', onerror)\n dest.removeListener('unpipe', onunpipe)\n src.removeListener('end', onend)\n src.removeListener('end', unpipe)\n src.removeListener('data', ondata)\n cleanedUp = true\n\n // If the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain()\n }\n function pause() {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if (!cleanedUp) {\n if (state.pipes.length === 1 && state.pipes[0] === dest) {\n debug('false write response, pause', 0)\n state.awaitDrainWriters = dest\n state.multiAwaitDrain = false\n } else if (state.pipes.length > 1 && state.pipes.includes(dest)) {\n debug('false write response, pause', state.awaitDrainWriters.size)\n state.awaitDrainWriters.add(dest)\n }\n src.pause()\n }\n if (!ondrain) {\n // When the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n ondrain = pipeOnDrain(src, dest)\n dest.on('drain', ondrain)\n }\n }\n src.on('data', ondata)\n function ondata(chunk) {\n debug('ondata')\n const ret = dest.write(chunk)\n debug('dest.write', ret)\n if (ret === false) {\n pause()\n }\n }\n\n // If the dest has an error, then stop piping into it.\n // However, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er)\n unpipe()\n dest.removeListener('error', onerror)\n if (dest.listenerCount('error') === 0) {\n const s = dest._writableState || dest._readableState\n if (s && !s.errorEmitted) {\n // User incorrectly emitted 'error' directly on the stream.\n errorOrDestroy(dest, er)\n } else {\n dest.emit('error', er)\n }\n }\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror)\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish)\n unpipe()\n }\n dest.once('close', onclose)\n function onfinish() {\n debug('onfinish')\n dest.removeListener('close', onclose)\n unpipe()\n }\n dest.once('finish', onfinish)\n function unpipe() {\n debug('unpipe')\n src.unpipe(dest)\n }\n\n // Tell the dest that it's being piped to.\n dest.emit('pipe', src)\n\n // Start the flow if it hasn't been started already.\n\n if (dest.writableNeedDrain === true) {\n pause()\n } else if (!state.flowing) {\n debug('pipe resume')\n src.resume()\n }\n return dest\n}\nfunction pipeOnDrain(src, dest) {\n return function pipeOnDrainFunctionResult() {\n const state = src._readableState\n\n // `ondrain` will call directly,\n // `this` maybe not a reference to dest,\n // so we use the real dest here.\n if (state.awaitDrainWriters === dest) {\n debug('pipeOnDrain', 1)\n state.awaitDrainWriters = null\n } else if (state.multiAwaitDrain) {\n debug('pipeOnDrain', state.awaitDrainWriters.size)\n state.awaitDrainWriters.delete(dest)\n }\n if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) {\n src.resume()\n }\n }\n}\nReadable.prototype.unpipe = function (dest) {\n const state = this._readableState\n const unpipeInfo = {\n hasUnpiped: false\n }\n\n // If we're not piping anywhere, then do nothing.\n if (state.pipes.length === 0) return this\n if (!dest) {\n // remove all.\n const dests = state.pipes\n state.pipes = []\n this.pause()\n for (let i = 0; i < dests.length; i++)\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n })\n return this\n }\n\n // Try to find the right one.\n const index = ArrayPrototypeIndexOf(state.pipes, dest)\n if (index === -1) return this\n state.pipes.splice(index, 1)\n if (state.pipes.length === 0) this.pause()\n dest.emit('unpipe', this, unpipeInfo)\n return this\n}\n\n// Set up data events if they are asked for\n// Ensure readable listeners eventually get something.\nReadable.prototype.on = function (ev, fn) {\n const res = Stream.prototype.on.call(this, ev, fn)\n const state = this._readableState\n if (ev === 'data') {\n // Update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0\n\n // Try start flowing on next tick if stream isn't explicitly paused.\n if (state.flowing !== false) this.resume()\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true\n state.flowing = false\n state.emittedReadable = false\n debug('on readable', state.length, state.reading)\n if (state.length) {\n emitReadable(this)\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this)\n }\n }\n }\n return res\n}\nReadable.prototype.addListener = Readable.prototype.on\nReadable.prototype.removeListener = function (ev, fn) {\n const res = Stream.prototype.removeListener.call(this, ev, fn)\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this)\n }\n return res\n}\nReadable.prototype.off = Readable.prototype.removeListener\nReadable.prototype.removeAllListeners = function (ev) {\n const res = Stream.prototype.removeAllListeners.apply(this, arguments)\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this)\n }\n return res\n}\nfunction updateReadableListening(self) {\n const state = self._readableState\n state.readableListening = self.listenerCount('readable') > 0\n if (state.resumeScheduled && state[kPaused] === false) {\n // Flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true\n\n // Crude way to check if we should resume.\n } else if (self.listenerCount('data') > 0) {\n self.resume()\n } else if (!state.readableListening) {\n state.flowing = null\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0')\n self.read(0)\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n const state = this._readableState\n if (!state.flowing) {\n debug('resume')\n // We flow only if there is no one listening\n // for readable, but we still have to call\n // resume().\n state.flowing = !state.readableListening\n resume(this, state)\n }\n state[kPaused] = false\n return this\n}\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true\n process.nextTick(resume_, stream, state)\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading)\n if (!state.reading) {\n stream.read(0)\n }\n state.resumeScheduled = false\n stream.emit('resume')\n flow(stream)\n if (state.flowing && !state.reading) stream.read(0)\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing)\n if (this._readableState.flowing !== false) {\n debug('pause')\n this._readableState.flowing = false\n this.emit('pause')\n }\n this._readableState[kPaused] = true\n return this\n}\nfunction flow(stream) {\n const state = stream._readableState\n debug('flow', state.flowing)\n while (state.flowing && stream.read() !== null);\n}\n\n// Wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n let paused = false\n\n // TODO (ronag): Should this.destroy(err) emit\n // 'error' on the wrapped stream? Would require\n // a static factory method, e.g. Readable.wrap(stream).\n\n stream.on('data', (chunk) => {\n if (!this.push(chunk) && stream.pause) {\n paused = true\n stream.pause()\n }\n })\n stream.on('end', () => {\n this.push(null)\n })\n stream.on('error', (err) => {\n errorOrDestroy(this, err)\n })\n stream.on('close', () => {\n this.destroy()\n })\n stream.on('destroy', () => {\n this.destroy()\n })\n this._read = () => {\n if (paused && stream.resume) {\n paused = false\n stream.resume()\n }\n }\n\n // Proxy all the other methods. Important when wrapping filters and duplexes.\n const streamKeys = ObjectKeys(stream)\n for (let j = 1; j < streamKeys.length; j++) {\n const i = streamKeys[j]\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = stream[i].bind(stream)\n }\n }\n return this\n}\nReadable.prototype[SymbolAsyncIterator] = function () {\n return streamToAsyncIterator(this)\n}\nReadable.prototype.iterator = function (options) {\n if (options !== undefined) {\n validateObject(options, 'options')\n }\n return streamToAsyncIterator(this, options)\n}\nfunction streamToAsyncIterator(stream, options) {\n if (typeof stream.read !== 'function') {\n stream = Readable.wrap(stream, {\n objectMode: true\n })\n }\n const iter = createAsyncIterator(stream, options)\n iter.stream = stream\n return iter\n}\nasync function* createAsyncIterator(stream, options) {\n let callback = nop\n function next(resolve) {\n if (this === stream) {\n callback()\n callback = nop\n } else {\n callback = resolve\n }\n }\n stream.on('readable', next)\n let error\n const cleanup = eos(\n stream,\n {\n writable: false\n },\n (err) => {\n error = err ? aggregateTwoErrors(error, err) : null\n callback()\n callback = nop\n }\n )\n try {\n while (true) {\n const chunk = stream.destroyed ? null : stream.read()\n if (chunk !== null) {\n yield chunk\n } else if (error) {\n throw error\n } else if (error === null) {\n return\n } else {\n await new Promise(next)\n }\n }\n } catch (err) {\n error = aggregateTwoErrors(error, err)\n throw error\n } finally {\n if (\n (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) &&\n (error === undefined || stream._readableState.autoDestroy)\n ) {\n destroyImpl.destroyer(stream, null)\n } else {\n stream.off('readable', next)\n cleanup()\n }\n }\n}\n\n// Making it explicit these properties are not enumerable\n// because otherwise some prototype manipulation in\n// userland will fail.\nObjectDefineProperties(Readable.prototype, {\n readable: {\n __proto__: null,\n get() {\n const r = this._readableState\n // r.readable === false means that this is part of a Duplex stream\n // where the readable side was disabled upon construction.\n // Compat. The user might manually disable readable side through\n // deprecated setter.\n return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted\n },\n set(val) {\n // Backwards compat.\n if (this._readableState) {\n this._readableState.readable = !!val\n }\n }\n },\n readableDidRead: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.dataEmitted\n }\n },\n readableAborted: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return !!(\n this._readableState.readable !== false &&\n (this._readableState.destroyed || this._readableState.errored) &&\n !this._readableState.endEmitted\n )\n }\n },\n readableHighWaterMark: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark\n }\n },\n readableBuffer: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState && this._readableState.buffer\n }\n },\n readableFlowing: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.flowing\n },\n set: function (state) {\n if (this._readableState) {\n this._readableState.flowing = state\n }\n }\n },\n readableLength: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState.length\n }\n },\n readableObjectMode: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.objectMode : false\n }\n },\n readableEncoding: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.encoding : null\n }\n },\n errored: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.errored : null\n }\n },\n closed: {\n __proto__: null,\n get() {\n return this._readableState ? this._readableState.closed : false\n }\n },\n destroyed: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.destroyed : false\n },\n set(value) {\n // We ignore the value if the stream\n // has not been initialized yet.\n if (!this._readableState) {\n return\n }\n\n // Backward compatibility, the user is explicitly\n // managing destroyed.\n this._readableState.destroyed = value\n }\n },\n readableEnded: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.endEmitted : false\n }\n }\n})\nObjectDefineProperties(ReadableState.prototype, {\n // Legacy getter for `pipesCount`.\n pipesCount: {\n __proto__: null,\n get() {\n return this.pipes.length\n }\n },\n // Legacy property for `paused`.\n paused: {\n __proto__: null,\n get() {\n return this[kPaused] !== false\n },\n set(value) {\n this[kPaused] = !!value\n }\n }\n})\n\n// Exposed for testing purposes only.\nReadable._fromList = fromList\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered.\n if (state.length === 0) return null\n let ret\n if (state.objectMode) ret = state.buffer.shift()\n else if (!n || n >= state.length) {\n // Read it all, truncate the list.\n if (state.decoder) ret = state.buffer.join('')\n else if (state.buffer.length === 1) ret = state.buffer.first()\n else ret = state.buffer.concat(state.length)\n state.buffer.clear()\n } else {\n // read part of list.\n ret = state.buffer.consume(n, state.decoder)\n }\n return ret\n}\nfunction endReadable(stream) {\n const state = stream._readableState\n debug('endReadable', state.endEmitted)\n if (!state.endEmitted) {\n state.ended = true\n process.nextTick(endReadableNT, state, stream)\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length)\n\n // Check that we didn't get one last unshift.\n if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) {\n state.endEmitted = true\n stream.emit('end')\n if (stream.writable && stream.allowHalfOpen === false) {\n process.nextTick(endWritableNT, stream)\n } else if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well.\n const wState = stream._writableState\n const autoDestroy =\n !wState ||\n (wState.autoDestroy &&\n // We don't expect the writable to ever 'finish'\n // if writable is explicitly set to false.\n (wState.finished || wState.writable === false))\n if (autoDestroy) {\n stream.destroy()\n }\n }\n }\n}\nfunction endWritableNT(stream) {\n const writable = stream.writable && !stream.writableEnded && !stream.destroyed\n if (writable) {\n stream.end()\n }\n}\nReadable.from = function (iterable, opts) {\n return from(Readable, iterable, opts)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nReadable.fromWeb = function (readableStream, options) {\n return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options)\n}\nReadable.toWeb = function (streamReadable, options) {\n return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options)\n}\nReadable.wrap = function (src, options) {\n var _ref, _src$readableObjectMo\n return new Readable({\n objectMode:\n (_ref =\n (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined\n ? _src$readableObjectMo\n : src.objectMode) !== null && _ref !== undefined\n ? _ref\n : true,\n ...options,\n destroy(err, callback) {\n destroyImpl.destroyer(src, err)\n callback(err)\n }\n }).wrap(src)\n}\n","'use strict'\n\nconst { MathFloor, NumberIsInteger } = require('../../ours/primordials')\nconst { validateInteger } = require('../validators')\nconst { ERR_INVALID_ARG_VALUE } = require('../../ours/errors').codes\nlet defaultHighWaterMarkBytes = 16 * 1024\nlet defaultHighWaterMarkObjectMode = 16\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null\n}\nfunction getDefaultHighWaterMark(objectMode) {\n return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes\n}\nfunction setDefaultHighWaterMark(objectMode, value) {\n validateInteger(value, 'value', 0)\n if (objectMode) {\n defaultHighWaterMarkObjectMode = value\n } else {\n defaultHighWaterMarkBytes = value\n }\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n const hwm = highWaterMarkFrom(options, isDuplex, duplexKey)\n if (hwm != null) {\n if (!NumberIsInteger(hwm) || hwm < 0) {\n const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'\n throw new ERR_INVALID_ARG_VALUE(name, hwm)\n }\n return MathFloor(hwm)\n }\n\n // Default value\n return getDefaultHighWaterMark(state.objectMode)\n}\nmodule.exports = {\n getHighWaterMark,\n getDefaultHighWaterMark,\n setDefaultHighWaterMark\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf, Symbol } = require('../../ours/primordials')\nmodule.exports = Transform\nconst { ERR_METHOD_NOT_IMPLEMENTED } = require('../../ours/errors').codes\nconst Duplex = require('./duplex')\nconst { getHighWaterMark } = require('./state')\nObjectSetPrototypeOf(Transform.prototype, Duplex.prototype)\nObjectSetPrototypeOf(Transform, Duplex)\nconst kCallback = Symbol('kCallback')\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options)\n\n // TODO (ronag): This should preferably always be\n // applied but would be semver-major. Or even better;\n // make Transform a Readable with the Writable interface.\n const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null\n if (readableHighWaterMark === 0) {\n // A Duplex will buffer both on the writable and readable side while\n // a Transform just wants to buffer hwm number of elements. To avoid\n // buffering twice we disable buffering on the writable side.\n options = {\n ...options,\n highWaterMark: null,\n readableHighWaterMark,\n // TODO (ronag): 0 is not optimal since we have\n // a \"bug\" where we check needDrain before calling _write and not after.\n // Refs: https://github.com/nodejs/node/pull/32887\n // Refs: https://github.com/nodejs/node/pull/35941\n writableHighWaterMark: options.writableHighWaterMark || 0\n }\n }\n Duplex.call(this, options)\n\n // We have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false\n this[kCallback] = null\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform\n if (typeof options.flush === 'function') this._flush = options.flush\n }\n\n // When the writable side finishes, then flush out anything remaining.\n // Backwards compat. Some Transform streams incorrectly implement _final\n // instead of or in addition to _flush. By using 'prefinish' instead of\n // implementing _final we continue supporting this unfortunate use case.\n this.on('prefinish', prefinish)\n}\nfunction final(cb) {\n if (typeof this._flush === 'function' && !this.destroyed) {\n this._flush((er, data) => {\n if (er) {\n if (cb) {\n cb(er)\n } else {\n this.destroy(er)\n }\n return\n }\n if (data != null) {\n this.push(data)\n }\n this.push(null)\n if (cb) {\n cb()\n }\n })\n } else {\n this.push(null)\n if (cb) {\n cb()\n }\n }\n}\nfunction prefinish() {\n if (this._final !== final) {\n final.call(this)\n }\n}\nTransform.prototype._final = final\nTransform.prototype._transform = function (chunk, encoding, callback) {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()')\n}\nTransform.prototype._write = function (chunk, encoding, callback) {\n const rState = this._readableState\n const wState = this._writableState\n const length = rState.length\n this._transform(chunk, encoding, (err, val) => {\n if (err) {\n callback(err)\n return\n }\n if (val != null) {\n this.push(val)\n }\n if (\n wState.ended ||\n // Backwards compat.\n length === rState.length ||\n // Backwards compat.\n rState.length < rState.highWaterMark\n ) {\n callback()\n } else {\n this[kCallback] = callback\n }\n })\n}\nTransform.prototype._read = function () {\n if (this[kCallback]) {\n const callback = this[kCallback]\n this[kCallback] = null\n callback()\n }\n}\n","'use strict'\n\nconst { SymbolAsyncIterator, SymbolIterator, SymbolFor } = require('../../ours/primordials')\n\n// We need to use SymbolFor to make these globally available\n// for interopt with readable-stream, i.e. readable-stream\n// and node core needs to be able to read/write private state\n// from each other for proper interoperability.\nconst kIsDestroyed = SymbolFor('nodejs.stream.destroyed')\nconst kIsErrored = SymbolFor('nodejs.stream.errored')\nconst kIsReadable = SymbolFor('nodejs.stream.readable')\nconst kIsWritable = SymbolFor('nodejs.stream.writable')\nconst kIsDisturbed = SymbolFor('nodejs.stream.disturbed')\nconst kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise')\nconst kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction')\nfunction isReadableNodeStream(obj, strict = false) {\n var _obj$_readableState\n return !!(\n (\n obj &&\n typeof obj.pipe === 'function' &&\n typeof obj.on === 'function' &&\n (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) &&\n (!obj._writableState ||\n ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined\n ? undefined\n : _obj$_readableState.readable) !== false) &&\n // Duplex\n (!obj._writableState || obj._readableState)\n ) // Writable has .pipe.\n )\n}\n\nfunction isWritableNodeStream(obj) {\n var _obj$_writableState\n return !!(\n (\n obj &&\n typeof obj.write === 'function' &&\n typeof obj.on === 'function' &&\n (!obj._readableState ||\n ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined\n ? undefined\n : _obj$_writableState.writable) !== false)\n ) // Duplex\n )\n}\n\nfunction isDuplexNodeStream(obj) {\n return !!(\n obj &&\n typeof obj.pipe === 'function' &&\n obj._readableState &&\n typeof obj.on === 'function' &&\n typeof obj.write === 'function'\n )\n}\nfunction isNodeStream(obj) {\n return (\n obj &&\n (obj._readableState ||\n obj._writableState ||\n (typeof obj.write === 'function' && typeof obj.on === 'function') ||\n (typeof obj.pipe === 'function' && typeof obj.on === 'function'))\n )\n}\nfunction isReadableStream(obj) {\n return !!(\n obj &&\n !isNodeStream(obj) &&\n typeof obj.pipeThrough === 'function' &&\n typeof obj.getReader === 'function' &&\n typeof obj.cancel === 'function'\n )\n}\nfunction isWritableStream(obj) {\n return !!(obj && !isNodeStream(obj) && typeof obj.getWriter === 'function' && typeof obj.abort === 'function')\n}\nfunction isTransformStream(obj) {\n return !!(obj && !isNodeStream(obj) && typeof obj.readable === 'object' && typeof obj.writable === 'object')\n}\nfunction isWebStream(obj) {\n return isReadableStream(obj) || isWritableStream(obj) || isTransformStream(obj)\n}\nfunction isIterable(obj, isAsync) {\n if (obj == null) return false\n if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function'\n if (isAsync === false) return typeof obj[SymbolIterator] === 'function'\n return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function'\n}\nfunction isDestroyed(stream) {\n if (!isNodeStream(stream)) return null\n const wState = stream._writableState\n const rState = stream._readableState\n const state = wState || rState\n return !!(stream.destroyed || stream[kIsDestroyed] || (state !== null && state !== undefined && state.destroyed))\n}\n\n// Have been end():d.\nfunction isWritableEnded(stream) {\n if (!isWritableNodeStream(stream)) return null\n if (stream.writableEnded === true) return true\n const wState = stream._writableState\n if (wState !== null && wState !== undefined && wState.errored) return false\n if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null\n return wState.ended\n}\n\n// Have emitted 'finish'.\nfunction isWritableFinished(stream, strict) {\n if (!isWritableNodeStream(stream)) return null\n if (stream.writableFinished === true) return true\n const wState = stream._writableState\n if (wState !== null && wState !== undefined && wState.errored) return false\n if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null\n return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0))\n}\n\n// Have been push(null):d.\nfunction isReadableEnded(stream) {\n if (!isReadableNodeStream(stream)) return null\n if (stream.readableEnded === true) return true\n const rState = stream._readableState\n if (!rState || rState.errored) return false\n if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null\n return rState.ended\n}\n\n// Have emitted 'end'.\nfunction isReadableFinished(stream, strict) {\n if (!isReadableNodeStream(stream)) return null\n const rState = stream._readableState\n if (rState !== null && rState !== undefined && rState.errored) return false\n if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null\n return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0))\n}\nfunction isReadable(stream) {\n if (stream && stream[kIsReadable] != null) return stream[kIsReadable]\n if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null\n if (isDestroyed(stream)) return false\n return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream)\n}\nfunction isWritable(stream) {\n if (stream && stream[kIsWritable] != null) return stream[kIsWritable]\n if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null\n if (isDestroyed(stream)) return false\n return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream)\n}\nfunction isFinished(stream, opts) {\n if (!isNodeStream(stream)) {\n return null\n }\n if (isDestroyed(stream)) {\n return true\n }\n if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) {\n return false\n }\n if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) {\n return false\n }\n return true\n}\nfunction isWritableErrored(stream) {\n var _stream$_writableStat, _stream$_writableStat2\n if (!isNodeStream(stream)) {\n return null\n }\n if (stream.writableErrored) {\n return stream.writableErrored\n }\n return (_stream$_writableStat =\n (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined\n ? undefined\n : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined\n ? _stream$_writableStat\n : null\n}\nfunction isReadableErrored(stream) {\n var _stream$_readableStat, _stream$_readableStat2\n if (!isNodeStream(stream)) {\n return null\n }\n if (stream.readableErrored) {\n return stream.readableErrored\n }\n return (_stream$_readableStat =\n (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined\n ? undefined\n : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined\n ? _stream$_readableStat\n : null\n}\nfunction isClosed(stream) {\n if (!isNodeStream(stream)) {\n return null\n }\n if (typeof stream.closed === 'boolean') {\n return stream.closed\n }\n const wState = stream._writableState\n const rState = stream._readableState\n if (\n typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' ||\n typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean'\n ) {\n return (\n (wState === null || wState === undefined ? undefined : wState.closed) ||\n (rState === null || rState === undefined ? undefined : rState.closed)\n )\n }\n if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) {\n return stream._closed\n }\n return null\n}\nfunction isOutgoingMessage(stream) {\n return (\n typeof stream._closed === 'boolean' &&\n typeof stream._defaultKeepAlive === 'boolean' &&\n typeof stream._removedConnection === 'boolean' &&\n typeof stream._removedContLen === 'boolean'\n )\n}\nfunction isServerResponse(stream) {\n return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream)\n}\nfunction isServerRequest(stream) {\n var _stream$req\n return (\n typeof stream._consuming === 'boolean' &&\n typeof stream._dumped === 'boolean' &&\n ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) ===\n undefined\n )\n}\nfunction willEmitClose(stream) {\n if (!isNodeStream(stream)) return null\n const wState = stream._writableState\n const rState = stream._readableState\n const state = wState || rState\n return (\n (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false)\n )\n}\nfunction isDisturbed(stream) {\n var _stream$kIsDisturbed\n return !!(\n stream &&\n ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined\n ? _stream$kIsDisturbed\n : stream.readableDidRead || stream.readableAborted)\n )\n}\nfunction isErrored(stream) {\n var _ref,\n _ref2,\n _ref3,\n _ref4,\n _ref5,\n _stream$kIsErrored,\n _stream$_readableStat3,\n _stream$_writableStat3,\n _stream$_readableStat4,\n _stream$_writableStat4\n return !!(\n stream &&\n ((_ref =\n (_ref2 =\n (_ref3 =\n (_ref4 =\n (_ref5 =\n (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined\n ? _stream$kIsErrored\n : stream.readableErrored) !== null && _ref5 !== undefined\n ? _ref5\n : stream.writableErrored) !== null && _ref4 !== undefined\n ? _ref4\n : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined\n ? undefined\n : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined\n ? _ref3\n : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined\n ? undefined\n : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined\n ? _ref2\n : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined\n ? undefined\n : _stream$_readableStat4.errored) !== null && _ref !== undefined\n ? _ref\n : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined\n ? undefined\n : _stream$_writableStat4.errored)\n )\n}\nmodule.exports = {\n isDestroyed,\n kIsDestroyed,\n isDisturbed,\n kIsDisturbed,\n isErrored,\n kIsErrored,\n isReadable,\n kIsReadable,\n kIsClosedPromise,\n kControllerErrorFunction,\n kIsWritable,\n isClosed,\n isDuplexNodeStream,\n isFinished,\n isIterable,\n isReadableNodeStream,\n isReadableStream,\n isReadableEnded,\n isReadableFinished,\n isReadableErrored,\n isNodeStream,\n isWebStream,\n isWritable,\n isWritableNodeStream,\n isWritableStream,\n isWritableEnded,\n isWritableFinished,\n isWritableErrored,\n isServerRequest,\n isServerResponse,\n willEmitClose,\n isTransformStream\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n;('use strict')\nconst {\n ArrayPrototypeSlice,\n Error,\n FunctionPrototypeSymbolHasInstance,\n ObjectDefineProperty,\n ObjectDefineProperties,\n ObjectSetPrototypeOf,\n StringPrototypeToLowerCase,\n Symbol,\n SymbolHasInstance\n} = require('../../ours/primordials')\nmodule.exports = Writable\nWritable.WritableState = WritableState\nconst { EventEmitter: EE } = require('events')\nconst Stream = require('./legacy').Stream\nconst { Buffer } = require('buffer')\nconst destroyImpl = require('./destroy')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED,\n ERR_STREAM_ALREADY_FINISHED,\n ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING\n} = require('../../ours/errors').codes\nconst { errorOrDestroy } = destroyImpl\nObjectSetPrototypeOf(Writable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Writable, Stream)\nfunction nop() {}\nconst kOnFinished = Symbol('kOnFinished')\nfunction WritableState(options, stream, isDuplex) {\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n // Object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!(options && options.objectMode)\n if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode)\n\n // The point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write().\n this.highWaterMark = options\n ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex)\n : getDefaultHighWaterMark(false)\n\n // if _final has been called.\n this.finalCalled = false\n\n // drain event flag.\n this.needDrain = false\n // At the start of calling end()\n this.ending = false\n // When end() has been called, and returned.\n this.ended = false\n // When 'finish' is emitted.\n this.finished = false\n\n // Has it been destroyed\n this.destroyed = false\n\n // Should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n const noDecode = !!(options && options.decodeStrings === false)\n this.decodeStrings = !noDecode\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n // Not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0\n\n // A flag to see when we're in the middle of a write.\n this.writing = false\n\n // When true all writes will be buffered until .uncork() call.\n this.corked = 0\n\n // A flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true\n\n // A flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false\n\n // The callback that's passed to _write(chunk, cb).\n this.onwrite = onwrite.bind(undefined, stream)\n\n // The callback that the user supplies to write(chunk, encoding, cb).\n this.writecb = null\n\n // The amount that is being written when _write is called.\n this.writelen = 0\n\n // Storage for data passed to the afterWrite() callback in case of\n // synchronous _write() completion.\n this.afterWriteTickInfo = null\n resetBuffer(this)\n\n // Number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted.\n this.pendingcb = 0\n\n // Stream is still being constructed and cannot be\n // destroyed until construction finished or failed.\n // Async construction is opt in, therefore we start as\n // constructed.\n this.constructed = true\n\n // Emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams.\n this.prefinished = false\n\n // True if the error was already emitted and should not be thrown again.\n this.errorEmitted = false\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = !options || options.emitClose !== false\n\n // Should .destroy() be called after 'finish' (and potentially 'end').\n this.autoDestroy = !options || options.autoDestroy !== false\n\n // Indicates whether the stream has errored. When true all write() calls\n // should return false. This is needed since when autoDestroy\n // is disabled we need a way to tell whether the stream has failed.\n this.errored = null\n\n // Indicates whether the stream has finished destroying.\n this.closed = false\n\n // True if close has been emitted or would have been emitted\n // depending on emitClose.\n this.closeEmitted = false\n this[kOnFinished] = []\n}\nfunction resetBuffer(state) {\n state.buffered = []\n state.bufferedIndex = 0\n state.allBuffers = true\n state.allNoop = true\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n return ArrayPrototypeSlice(this.buffered, this.bufferedIndex)\n}\nObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', {\n __proto__: null,\n get() {\n return this.buffered.length - this.bufferedIndex\n }\n})\nfunction Writable(options) {\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5.\n const isDuplex = this instanceof require('./duplex')\n if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options)\n this._writableState = new WritableState(options, this, isDuplex)\n if (options) {\n if (typeof options.write === 'function') this._write = options.write\n if (typeof options.writev === 'function') this._writev = options.writev\n if (typeof options.destroy === 'function') this._destroy = options.destroy\n if (typeof options.final === 'function') this._final = options.final\n if (typeof options.construct === 'function') this._construct = options.construct\n if (options.signal) addAbortSignal(options.signal, this)\n }\n Stream.call(this, options)\n destroyImpl.construct(this, () => {\n const state = this._writableState\n if (!state.writing) {\n clearBuffer(this, state)\n }\n finishMaybe(this, state)\n })\n}\nObjectDefineProperty(Writable, SymbolHasInstance, {\n __proto__: null,\n value: function (object) {\n if (FunctionPrototypeSymbolHasInstance(this, object)) return true\n if (this !== Writable) return false\n return object && object._writableState instanceof WritableState\n }\n})\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE())\n}\nfunction _write(stream, chunk, encoding, cb) {\n const state = stream._writableState\n if (typeof encoding === 'function') {\n cb = encoding\n encoding = state.defaultEncoding\n } else {\n if (!encoding) encoding = state.defaultEncoding\n else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n if (typeof cb !== 'function') cb = nop\n }\n if (chunk === null) {\n throw new ERR_STREAM_NULL_VALUES()\n } else if (!state.objectMode) {\n if (typeof chunk === 'string') {\n if (state.decodeStrings !== false) {\n chunk = Buffer.from(chunk, encoding)\n encoding = 'buffer'\n }\n } else if (chunk instanceof Buffer) {\n encoding = 'buffer'\n } else if (Stream._isUint8Array(chunk)) {\n chunk = Stream._uint8ArrayToBuffer(chunk)\n encoding = 'buffer'\n } else {\n throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n }\n }\n let err\n if (state.ending) {\n err = new ERR_STREAM_WRITE_AFTER_END()\n } else if (state.destroyed) {\n err = new ERR_STREAM_DESTROYED('write')\n }\n if (err) {\n process.nextTick(cb, err)\n errorOrDestroy(stream, err, true)\n return err\n }\n state.pendingcb++\n return writeOrBuffer(stream, state, chunk, encoding, cb)\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n return _write(this, chunk, encoding, cb) === true\n}\nWritable.prototype.cork = function () {\n this._writableState.corked++\n}\nWritable.prototype.uncork = function () {\n const state = this._writableState\n if (state.corked) {\n state.corked--\n if (!state.writing) clearBuffer(this, state)\n }\n}\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding)\n if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n this._writableState.defaultEncoding = encoding\n return this\n}\n\n// If we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, callback) {\n const len = state.objectMode ? 1 : chunk.length\n state.length += len\n\n // stream._write resets state.length\n const ret = state.length < state.highWaterMark\n // We must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true\n if (state.writing || state.corked || state.errored || !state.constructed) {\n state.buffered.push({\n chunk,\n encoding,\n callback\n })\n if (state.allBuffers && encoding !== 'buffer') {\n state.allBuffers = false\n }\n if (state.allNoop && callback !== nop) {\n state.allNoop = false\n }\n } else {\n state.writelen = len\n state.writecb = callback\n state.writing = true\n state.sync = true\n stream._write(chunk, encoding, state.onwrite)\n state.sync = false\n }\n\n // Return false if errored or destroyed in order to break\n // any synchronous while(stream.write(data)) loops.\n return ret && !state.errored && !state.destroyed\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len\n state.writecb = cb\n state.writing = true\n state.sync = true\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'))\n else if (writev) stream._writev(chunk, state.onwrite)\n else stream._write(chunk, encoding, state.onwrite)\n state.sync = false\n}\nfunction onwriteError(stream, state, er, cb) {\n --state.pendingcb\n cb(er)\n // Ensure callbacks are invoked even when autoDestroy is\n // not enabled. Passing `er` here doesn't make sense since\n // it's related to one specific write, not to the buffered\n // writes.\n errorBuffer(state)\n // This can emit error, but error must always follow cb.\n errorOrDestroy(stream, er)\n}\nfunction onwrite(stream, er) {\n const state = stream._writableState\n const sync = state.sync\n const cb = state.writecb\n if (typeof cb !== 'function') {\n errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK())\n return\n }\n state.writing = false\n state.writecb = null\n state.length -= state.writelen\n state.writelen = 0\n if (er) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n er.stack // eslint-disable-line no-unused-expressions\n\n if (!state.errored) {\n state.errored = er\n }\n\n // In case of duplex streams we need to notify the readable side of the\n // error.\n if (stream._readableState && !stream._readableState.errored) {\n stream._readableState.errored = er\n }\n if (sync) {\n process.nextTick(onwriteError, stream, state, er, cb)\n } else {\n onwriteError(stream, state, er, cb)\n }\n } else {\n if (state.buffered.length > state.bufferedIndex) {\n clearBuffer(stream, state)\n }\n if (sync) {\n // It is a common case that the callback passed to .write() is always\n // the same. In that case, we do not schedule a new nextTick(), but\n // rather just increase a counter, to improve performance and avoid\n // memory allocations.\n if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) {\n state.afterWriteTickInfo.count++\n } else {\n state.afterWriteTickInfo = {\n count: 1,\n cb,\n stream,\n state\n }\n process.nextTick(afterWriteTick, state.afterWriteTickInfo)\n }\n } else {\n afterWrite(stream, state, 1, cb)\n }\n }\n}\nfunction afterWriteTick({ stream, state, count, cb }) {\n state.afterWriteTickInfo = null\n return afterWrite(stream, state, count, cb)\n}\nfunction afterWrite(stream, state, count, cb) {\n const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain\n if (needDrain) {\n state.needDrain = false\n stream.emit('drain')\n }\n while (count-- > 0) {\n state.pendingcb--\n cb()\n }\n if (state.destroyed) {\n errorBuffer(state)\n }\n finishMaybe(stream, state)\n}\n\n// If there's something in the buffer waiting, then invoke callbacks.\nfunction errorBuffer(state) {\n if (state.writing) {\n return\n }\n for (let n = state.bufferedIndex; n < state.buffered.length; ++n) {\n var _state$errored\n const { chunk, callback } = state.buffered[n]\n const len = state.objectMode ? 1 : chunk.length\n state.length -= len\n callback(\n (_state$errored = state.errored) !== null && _state$errored !== undefined\n ? _state$errored\n : new ERR_STREAM_DESTROYED('write')\n )\n }\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n var _state$errored2\n onfinishCallbacks[i](\n (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined\n ? _state$errored2\n : new ERR_STREAM_DESTROYED('end')\n )\n }\n resetBuffer(state)\n}\n\n// If there's something in the buffer waiting, then process it.\nfunction clearBuffer(stream, state) {\n if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) {\n return\n }\n const { buffered, bufferedIndex, objectMode } = state\n const bufferedLength = buffered.length - bufferedIndex\n if (!bufferedLength) {\n return\n }\n let i = bufferedIndex\n state.bufferProcessing = true\n if (bufferedLength > 1 && stream._writev) {\n state.pendingcb -= bufferedLength - 1\n const callback = state.allNoop\n ? nop\n : (err) => {\n for (let n = i; n < buffered.length; ++n) {\n buffered[n].callback(err)\n }\n }\n // Make a copy of `buffered` if it's going to be used by `callback` above,\n // since `doWrite` will mutate the array.\n const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i)\n chunks.allBuffers = state.allBuffers\n doWrite(stream, state, true, state.length, chunks, '', callback)\n resetBuffer(state)\n } else {\n do {\n const { chunk, encoding, callback } = buffered[i]\n buffered[i++] = null\n const len = objectMode ? 1 : chunk.length\n doWrite(stream, state, false, len, chunk, encoding, callback)\n } while (i < buffered.length && !state.writing)\n if (i === buffered.length) {\n resetBuffer(state)\n } else if (i > 256) {\n buffered.splice(0, i)\n state.bufferedIndex = 0\n } else {\n state.bufferedIndex = i\n }\n }\n state.bufferProcessing = false\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n if (this._writev) {\n this._writev(\n [\n {\n chunk,\n encoding\n }\n ],\n cb\n )\n } else {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_write()')\n }\n}\nWritable.prototype._writev = null\nWritable.prototype.end = function (chunk, encoding, cb) {\n const state = this._writableState\n if (typeof chunk === 'function') {\n cb = chunk\n chunk = null\n encoding = null\n } else if (typeof encoding === 'function') {\n cb = encoding\n encoding = null\n }\n let err\n if (chunk !== null && chunk !== undefined) {\n const ret = _write(this, chunk, encoding)\n if (ret instanceof Error) {\n err = ret\n }\n }\n\n // .end() fully uncorks.\n if (state.corked) {\n state.corked = 1\n this.uncork()\n }\n if (err) {\n // Do nothing...\n } else if (!state.errored && !state.ending) {\n // This is forgiving in terms of unnecessary calls to end() and can hide\n // logic errors. However, usually such errors are harmless and causing a\n // hard error can be disproportionately destructive. It is not always\n // trivial for the user to determine whether end() needs to be called\n // or not.\n\n state.ending = true\n finishMaybe(this, state, true)\n state.ended = true\n } else if (state.finished) {\n err = new ERR_STREAM_ALREADY_FINISHED('end')\n } else if (state.destroyed) {\n err = new ERR_STREAM_DESTROYED('end')\n }\n if (typeof cb === 'function') {\n if (err || state.finished) {\n process.nextTick(cb, err)\n } else {\n state[kOnFinished].push(cb)\n }\n }\n return this\n}\nfunction needFinish(state) {\n return (\n state.ending &&\n !state.destroyed &&\n state.constructed &&\n state.length === 0 &&\n !state.errored &&\n state.buffered.length === 0 &&\n !state.finished &&\n !state.writing &&\n !state.errorEmitted &&\n !state.closeEmitted\n )\n}\nfunction callFinal(stream, state) {\n let called = false\n function onFinish(err) {\n if (called) {\n errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK())\n return\n }\n called = true\n state.pendingcb--\n if (err) {\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n onfinishCallbacks[i](err)\n }\n errorOrDestroy(stream, err, state.sync)\n } else if (needFinish(state)) {\n state.prefinished = true\n stream.emit('prefinish')\n // Backwards compat. Don't check state.sync here.\n // Some streams assume 'finish' will be emitted\n // asynchronously relative to _final callback.\n state.pendingcb++\n process.nextTick(finish, stream, state)\n }\n }\n state.sync = true\n state.pendingcb++\n try {\n stream._final(onFinish)\n } catch (err) {\n onFinish(err)\n }\n state.sync = false\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.finalCalled = true\n callFinal(stream, state)\n } else {\n state.prefinished = true\n stream.emit('prefinish')\n }\n }\n}\nfunction finishMaybe(stream, state, sync) {\n if (needFinish(state)) {\n prefinish(stream, state)\n if (state.pendingcb === 0) {\n if (sync) {\n state.pendingcb++\n process.nextTick(\n (stream, state) => {\n if (needFinish(state)) {\n finish(stream, state)\n } else {\n state.pendingcb--\n }\n },\n stream,\n state\n )\n } else if (needFinish(state)) {\n state.pendingcb++\n finish(stream, state)\n }\n }\n }\n}\nfunction finish(stream, state) {\n state.pendingcb--\n state.finished = true\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n onfinishCallbacks[i]()\n }\n stream.emit('finish')\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well.\n const rState = stream._readableState\n const autoDestroy =\n !rState ||\n (rState.autoDestroy &&\n // We don't expect the readable to ever 'end'\n // if readable is explicitly set to false.\n (rState.endEmitted || rState.readable === false))\n if (autoDestroy) {\n stream.destroy()\n }\n }\n}\nObjectDefineProperties(Writable.prototype, {\n closed: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.closed : false\n }\n },\n destroyed: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.destroyed : false\n },\n set(value) {\n // Backward compatibility, the user is explicitly managing destroyed.\n if (this._writableState) {\n this._writableState.destroyed = value\n }\n }\n },\n writable: {\n __proto__: null,\n get() {\n const w = this._writableState\n // w.writable === false means that this is part of a Duplex stream\n // where the writable side was disabled upon construction.\n // Compat. The user might manually disable writable side through\n // deprecated setter.\n return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended\n },\n set(val) {\n // Backwards compatible.\n if (this._writableState) {\n this._writableState.writable = !!val\n }\n }\n },\n writableFinished: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.finished : false\n }\n },\n writableObjectMode: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.objectMode : false\n }\n },\n writableBuffer: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.getBuffer()\n }\n },\n writableEnded: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.ending : false\n }\n },\n writableNeedDrain: {\n __proto__: null,\n get() {\n const wState = this._writableState\n if (!wState) return false\n return !wState.destroyed && !wState.ending && wState.needDrain\n }\n },\n writableHighWaterMark: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.highWaterMark\n }\n },\n writableCorked: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.corked : 0\n }\n },\n writableLength: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.length\n }\n },\n errored: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._writableState ? this._writableState.errored : null\n }\n },\n writableAborted: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return !!(\n this._writableState.writable !== false &&\n (this._writableState.destroyed || this._writableState.errored) &&\n !this._writableState.finished\n )\n }\n }\n})\nconst destroy = destroyImpl.destroy\nWritable.prototype.destroy = function (err, cb) {\n const state = this._writableState\n\n // Invoke pending callbacks.\n if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) {\n process.nextTick(errorBuffer, state)\n }\n destroy.call(this, err, cb)\n return this\n}\nWritable.prototype._undestroy = destroyImpl.undestroy\nWritable.prototype._destroy = function (err, cb) {\n cb(err)\n}\nWritable.prototype[EE.captureRejectionSymbol] = function (err) {\n this.destroy(err)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nWritable.fromWeb = function (writableStream, options) {\n return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options)\n}\nWritable.toWeb = function (streamWritable) {\n return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable)\n}\n","/* eslint jsdoc/require-jsdoc: \"error\" */\n\n'use strict'\n\nconst {\n ArrayIsArray,\n ArrayPrototypeIncludes,\n ArrayPrototypeJoin,\n ArrayPrototypeMap,\n NumberIsInteger,\n NumberIsNaN,\n NumberMAX_SAFE_INTEGER,\n NumberMIN_SAFE_INTEGER,\n NumberParseInt,\n ObjectPrototypeHasOwnProperty,\n RegExpPrototypeExec,\n String,\n StringPrototypeToUpperCase,\n StringPrototypeTrim\n} = require('../ours/primordials')\nconst {\n hideStackFrames,\n codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL }\n} = require('../ours/errors')\nconst { normalizeEncoding } = require('../ours/util')\nconst { isAsyncFunction, isArrayBufferView } = require('../ours/util').types\nconst signals = {}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isInt32(value) {\n return value === (value | 0)\n}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isUint32(value) {\n return value === value >>> 0\n}\nconst octalReg = /^[0-7]+$/\nconst modeDesc = 'must be a 32-bit unsigned integer or an octal string'\n\n/**\n * Parse and validate values that will be converted into mode_t (the S_*\n * constants). Only valid numbers and octal strings are allowed. They could be\n * converted to 32-bit unsigned integers or non-negative signed integers in the\n * C++ land, but any value higher than 0o777 will result in platform-specific\n * behaviors.\n * @param {*} value Values to be validated\n * @param {string} name Name of the argument\n * @param {number} [def] If specified, will be returned for invalid values\n * @returns {number}\n */\nfunction parseFileMode(value, name, def) {\n if (typeof value === 'undefined') {\n value = def\n }\n if (typeof value === 'string') {\n if (RegExpPrototypeExec(octalReg, value) === null) {\n throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc)\n }\n value = NumberParseInt(value, 8)\n }\n validateUint32(value, name)\n return value\n}\n\n/**\n * @callback validateInteger\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInteger} */\nconst validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => {\n if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n})\n\n/**\n * @callback validateInt32\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInt32} */\nconst validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => {\n // The defaults for min and max correspond to the limits of 32-bit integers.\n if (typeof value !== 'number') {\n throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n if (!NumberIsInteger(value)) {\n throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n }\n if (value < min || value > max) {\n throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n }\n})\n\n/**\n * @callback validateUint32\n * @param {*} value\n * @param {string} name\n * @param {number|boolean} [positive=false]\n * @returns {asserts value is number}\n */\n\n/** @type {validateUint32} */\nconst validateUint32 = hideStackFrames((value, name, positive = false) => {\n if (typeof value !== 'number') {\n throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n if (!NumberIsInteger(value)) {\n throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n }\n const min = positive ? 1 : 0\n // 2 ** 32 === 4294967296\n const max = 4294967295\n if (value < min || value > max) {\n throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n }\n})\n\n/**\n * @callback validateString\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string}\n */\n\n/** @type {validateString} */\nfunction validateString(value, name) {\n if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value)\n}\n\n/**\n * @callback validateNumber\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateNumber} */\nfunction validateNumber(value, name, min = undefined, max) {\n if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n if (\n (min != null && value < min) ||\n (max != null && value > max) ||\n ((min != null || max != null) && NumberIsNaN(value))\n ) {\n throw new ERR_OUT_OF_RANGE(\n name,\n `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`,\n value\n )\n }\n}\n\n/**\n * @callback validateOneOf\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} oneOf\n */\n\n/** @type {validateOneOf} */\nconst validateOneOf = hideStackFrames((value, name, oneOf) => {\n if (!ArrayPrototypeIncludes(oneOf, value)) {\n const allowed = ArrayPrototypeJoin(\n ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))),\n ', '\n )\n const reason = 'must be one of: ' + allowed\n throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n }\n})\n\n/**\n * @callback validateBoolean\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean}\n */\n\n/** @type {validateBoolean} */\nfunction validateBoolean(value, name) {\n if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value)\n}\n\n/**\n * @param {any} options\n * @param {string} key\n * @param {boolean} defaultValue\n * @returns {boolean}\n */\nfunction getOwnPropertyValueOrDefault(options, key, defaultValue) {\n return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key]\n}\n\n/**\n * @callback validateObject\n * @param {*} value\n * @param {string} name\n * @param {{\n * allowArray?: boolean,\n * allowFunction?: boolean,\n * nullable?: boolean\n * }} [options]\n */\n\n/** @type {validateObject} */\nconst validateObject = hideStackFrames((value, name, options = null) => {\n const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false)\n const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false)\n const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false)\n if (\n (!nullable && value === null) ||\n (!allowArray && ArrayIsArray(value)) ||\n (typeof value !== 'object' && (!allowFunction || typeof value !== 'function'))\n ) {\n throw new ERR_INVALID_ARG_TYPE(name, 'Object', value)\n }\n})\n\n/**\n * @callback validateDictionary - We are using the Web IDL Standard definition\n * of \"dictionary\" here, which means any value\n * whose Type is either Undefined, Null, or\n * Object (which includes functions).\n * @param {*} value\n * @param {string} name\n * @see https://webidl.spec.whatwg.org/#es-dictionary\n * @see https://tc39.es/ecma262/#table-typeof-operator-results\n */\n\n/** @type {validateDictionary} */\nconst validateDictionary = hideStackFrames((value, name) => {\n if (value != null && typeof value !== 'object' && typeof value !== 'function') {\n throw new ERR_INVALID_ARG_TYPE(name, 'a dictionary', value)\n }\n})\n\n/**\n * @callback validateArray\n * @param {*} value\n * @param {string} name\n * @param {number} [minLength]\n * @returns {asserts value is any[]}\n */\n\n/** @type {validateArray} */\nconst validateArray = hideStackFrames((value, name, minLength = 0) => {\n if (!ArrayIsArray(value)) {\n throw new ERR_INVALID_ARG_TYPE(name, 'Array', value)\n }\n if (value.length < minLength) {\n const reason = `must be longer than ${minLength}`\n throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n }\n})\n\n/**\n * @callback validateStringArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string[]}\n */\n\n/** @type {validateStringArray} */\nfunction validateStringArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n validateString(value[i], `${name}[${i}]`)\n }\n}\n\n/**\n * @callback validateBooleanArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean[]}\n */\n\n/** @type {validateBooleanArray} */\nfunction validateBooleanArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n validateBoolean(value[i], `${name}[${i}]`)\n }\n}\n\n/**\n * @callback validateAbortSignalArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is AbortSignal[]}\n */\n\n/** @type {validateAbortSignalArray} */\nfunction validateAbortSignalArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n const signal = value[i]\n const indexedName = `${name}[${i}]`\n if (signal == null) {\n throw new ERR_INVALID_ARG_TYPE(indexedName, 'AbortSignal', signal)\n }\n validateAbortSignal(signal, indexedName)\n }\n}\n\n/**\n * @param {*} signal\n * @param {string} [name='signal']\n * @returns {asserts signal is keyof signals}\n */\nfunction validateSignalName(signal, name = 'signal') {\n validateString(signal, name)\n if (signals[signal] === undefined) {\n if (signals[StringPrototypeToUpperCase(signal)] !== undefined) {\n throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)')\n }\n throw new ERR_UNKNOWN_SIGNAL(signal)\n }\n}\n\n/**\n * @callback validateBuffer\n * @param {*} buffer\n * @param {string} [name='buffer']\n * @returns {asserts buffer is ArrayBufferView}\n */\n\n/** @type {validateBuffer} */\nconst validateBuffer = hideStackFrames((buffer, name = 'buffer') => {\n if (!isArrayBufferView(buffer)) {\n throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer)\n }\n})\n\n/**\n * @param {string} data\n * @param {string} encoding\n */\nfunction validateEncoding(data, encoding) {\n const normalizedEncoding = normalizeEncoding(encoding)\n const length = data.length\n if (normalizedEncoding === 'hex' && length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`)\n }\n}\n\n/**\n * Check that the port number is not NaN when coerced to a number,\n * is an integer and that it falls within the legal range of port numbers.\n * @param {*} port\n * @param {string} [name='Port']\n * @param {boolean} [allowZero=true]\n * @returns {number}\n */\nfunction validatePort(port, name = 'Port', allowZero = true) {\n if (\n (typeof port !== 'number' && typeof port !== 'string') ||\n (typeof port === 'string' && StringPrototypeTrim(port).length === 0) ||\n +port !== +port >>> 0 ||\n port > 0xffff ||\n (port === 0 && !allowZero)\n ) {\n throw new ERR_SOCKET_BAD_PORT(name, port, allowZero)\n }\n return port | 0\n}\n\n/**\n * @callback validateAbortSignal\n * @param {*} signal\n * @param {string} name\n */\n\n/** @type {validateAbortSignal} */\nconst validateAbortSignal = hideStackFrames((signal, name) => {\n if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n})\n\n/**\n * @callback validateFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validateFunction} */\nconst validateFunction = hideStackFrames((value, name) => {\n if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validatePlainFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validatePlainFunction} */\nconst validatePlainFunction = hideStackFrames((value, name) => {\n if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validateUndefined\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is undefined}\n */\n\n/** @type {validateUndefined} */\nconst validateUndefined = hideStackFrames((value, name) => {\n if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value)\n})\n\n/**\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} union\n */\nfunction validateUnion(value, name, union) {\n if (!ArrayPrototypeIncludes(union, value)) {\n throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value)\n }\n}\n\n/*\n The rules for the Link header field are described here:\n https://www.rfc-editor.org/rfc/rfc8288.html#section-3\n\n This regex validates any string surrounded by angle brackets\n (not necessarily a valid URI reference) followed by zero or more\n link-params separated by semicolons.\n*/\nconst linkValueRegExp = /^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/\n\n/**\n * @param {any} value\n * @param {string} name\n */\nfunction validateLinkHeaderFormat(value, name) {\n if (typeof value === 'undefined' || !RegExpPrototypeExec(linkValueRegExp, value)) {\n throw new ERR_INVALID_ARG_VALUE(\n name,\n value,\n 'must be an array or string of format \"; rel=preload; as=style\"'\n )\n }\n}\n\n/**\n * @param {any} hints\n * @return {string}\n */\nfunction validateLinkHeaderValue(hints) {\n if (typeof hints === 'string') {\n validateLinkHeaderFormat(hints, 'hints')\n return hints\n } else if (ArrayIsArray(hints)) {\n const hintsLength = hints.length\n let result = ''\n if (hintsLength === 0) {\n return result\n }\n for (let i = 0; i < hintsLength; i++) {\n const link = hints[i]\n validateLinkHeaderFormat(link, 'hints')\n result += link\n if (i !== hintsLength - 1) {\n result += ', '\n }\n }\n return result\n }\n throw new ERR_INVALID_ARG_VALUE(\n 'hints',\n hints,\n 'must be an array or string of format \"; rel=preload; as=style\"'\n )\n}\nmodule.exports = {\n isInt32,\n isUint32,\n parseFileMode,\n validateArray,\n validateStringArray,\n validateBooleanArray,\n validateAbortSignalArray,\n validateBoolean,\n validateBuffer,\n validateDictionary,\n validateEncoding,\n validateFunction,\n validateInt32,\n validateInteger,\n validateNumber,\n validateObject,\n validateOneOf,\n validatePlainFunction,\n validatePort,\n validateSignalName,\n validateString,\n validateUint32,\n validateUndefined,\n validateUnion,\n validateAbortSignal,\n validateLinkHeaderValue\n}\n","'use strict'\n\nconst CustomStream = require('../stream')\nconst promises = require('../stream/promises')\nconst originalDestroy = CustomStream.Readable.destroy\nmodule.exports = CustomStream.Readable\n\n// Explicit export naming is needed for ESM\nmodule.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer\nmodule.exports._isUint8Array = CustomStream._isUint8Array\nmodule.exports.isDisturbed = CustomStream.isDisturbed\nmodule.exports.isErrored = CustomStream.isErrored\nmodule.exports.isReadable = CustomStream.isReadable\nmodule.exports.Readable = CustomStream.Readable\nmodule.exports.Writable = CustomStream.Writable\nmodule.exports.Duplex = CustomStream.Duplex\nmodule.exports.Transform = CustomStream.Transform\nmodule.exports.PassThrough = CustomStream.PassThrough\nmodule.exports.addAbortSignal = CustomStream.addAbortSignal\nmodule.exports.finished = CustomStream.finished\nmodule.exports.destroy = CustomStream.destroy\nmodule.exports.destroy = originalDestroy\nmodule.exports.pipeline = CustomStream.pipeline\nmodule.exports.compose = CustomStream.compose\nObject.defineProperty(CustomStream, 'promises', {\n configurable: true,\n enumerable: true,\n get() {\n return promises\n }\n})\nmodule.exports.Stream = CustomStream.Stream\n\n// Allow default importing\nmodule.exports.default = module.exports\n","'use strict'\n\nconst { format, inspect, AggregateError: CustomAggregateError } = require('./util')\n\n/*\n This file is a reduced and adapted version of the main lib/internal/errors.js file defined at\n\n https://github.com/nodejs/node/blob/master/lib/internal/errors.js\n\n Don't try to replace with the original file and keep it up to date (starting from E(...) definitions)\n with the upstream file.\n*/\n\nconst AggregateError = globalThis.AggregateError || CustomAggregateError\nconst kIsNodeError = Symbol('kIsNodeError')\nconst kTypes = [\n 'string',\n 'function',\n 'number',\n 'object',\n // Accept 'Function' and 'Object' as alternative to the lower cased version.\n 'Function',\n 'Object',\n 'boolean',\n 'bigint',\n 'symbol'\n]\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/\nconst nodeInternalPrefix = '__node_internal_'\nconst codes = {}\nfunction assert(value, message) {\n if (!value) {\n throw new codes.ERR_INTERNAL_ASSERTION(message)\n }\n}\n\n// Only use this for integers! Decimal numbers do not work with this function.\nfunction addNumericalSeparator(val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\nfunction getMessage(key, msg, args) {\n if (typeof msg === 'function') {\n assert(\n msg.length <= args.length,\n // Default options do not count.\n `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`\n )\n return msg(...args)\n }\n const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length\n assert(\n expectedLength === args.length,\n `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`\n )\n if (args.length === 0) {\n return msg\n }\n return format(msg, ...args)\n}\nfunction E(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n class NodeError extends Base {\n constructor(...args) {\n super(getMessage(code, message, args))\n }\n toString() {\n return `${this.name} [${code}]: ${this.message}`\n }\n }\n Object.defineProperties(NodeError.prototype, {\n name: {\n value: Base.name,\n writable: true,\n enumerable: false,\n configurable: true\n },\n toString: {\n value() {\n return `${this.name} [${code}]: ${this.message}`\n },\n writable: true,\n enumerable: false,\n configurable: true\n }\n })\n NodeError.prototype.code = code\n NodeError.prototype[kIsNodeError] = true\n codes[code] = NodeError\n}\nfunction hideStackFrames(fn) {\n // We rename the functions that will be hidden to cut off the stacktrace\n // at the outermost one\n const hidden = nodeInternalPrefix + fn.name\n Object.defineProperty(fn, 'name', {\n value: hidden\n })\n return fn\n}\nfunction aggregateTwoErrors(innerError, outerError) {\n if (innerError && outerError && innerError !== outerError) {\n if (Array.isArray(outerError.errors)) {\n // If `outerError` is already an `AggregateError`.\n outerError.errors.push(innerError)\n return outerError\n }\n const err = new AggregateError([outerError, innerError], outerError.message)\n err.code = outerError.code\n return err\n }\n return innerError || outerError\n}\nclass AbortError extends Error {\n constructor(message = 'The operation was aborted', options = undefined) {\n if (options !== undefined && typeof options !== 'object') {\n throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options)\n }\n super(message, options)\n this.code = 'ABORT_ERR'\n this.name = 'AbortError'\n }\n}\nE('ERR_ASSERTION', '%s', Error)\nE(\n 'ERR_INVALID_ARG_TYPE',\n (name, expected, actual) => {\n assert(typeof name === 'string', \"'name' must be a string\")\n if (!Array.isArray(expected)) {\n expected = [expected]\n }\n let msg = 'The '\n if (name.endsWith(' argument')) {\n // For cases like 'first argument'\n msg += `${name} `\n } else {\n msg += `\"${name}\" ${name.includes('.') ? 'property' : 'argument'} `\n }\n msg += 'must be '\n const types = []\n const instances = []\n const other = []\n for (const value of expected) {\n assert(typeof value === 'string', 'All expected entries have to be of type string')\n if (kTypes.includes(value)) {\n types.push(value.toLowerCase())\n } else if (classRegExp.test(value)) {\n instances.push(value)\n } else {\n assert(value !== 'object', 'The value \"object\" should be written as \"Object\"')\n other.push(value)\n }\n }\n\n // Special handle `object` in case other instances are allowed to outline\n // the differences between each other.\n if (instances.length > 0) {\n const pos = types.indexOf('object')\n if (pos !== -1) {\n types.splice(types, pos, 1)\n instances.push('Object')\n }\n }\n if (types.length > 0) {\n switch (types.length) {\n case 1:\n msg += `of type ${types[0]}`\n break\n case 2:\n msg += `one of type ${types[0]} or ${types[1]}`\n break\n default: {\n const last = types.pop()\n msg += `one of type ${types.join(', ')}, or ${last}`\n }\n }\n if (instances.length > 0 || other.length > 0) {\n msg += ' or '\n }\n }\n if (instances.length > 0) {\n switch (instances.length) {\n case 1:\n msg += `an instance of ${instances[0]}`\n break\n case 2:\n msg += `an instance of ${instances[0]} or ${instances[1]}`\n break\n default: {\n const last = instances.pop()\n msg += `an instance of ${instances.join(', ')}, or ${last}`\n }\n }\n if (other.length > 0) {\n msg += ' or '\n }\n }\n switch (other.length) {\n case 0:\n break\n case 1:\n if (other[0].toLowerCase() !== other[0]) {\n msg += 'an '\n }\n msg += `${other[0]}`\n break\n case 2:\n msg += `one of ${other[0]} or ${other[1]}`\n break\n default: {\n const last = other.pop()\n msg += `one of ${other.join(', ')}, or ${last}`\n }\n }\n if (actual == null) {\n msg += `. Received ${actual}`\n } else if (typeof actual === 'function' && actual.name) {\n msg += `. Received function ${actual.name}`\n } else if (typeof actual === 'object') {\n var _actual$constructor\n if (\n (_actual$constructor = actual.constructor) !== null &&\n _actual$constructor !== undefined &&\n _actual$constructor.name\n ) {\n msg += `. Received an instance of ${actual.constructor.name}`\n } else {\n const inspected = inspect(actual, {\n depth: -1\n })\n msg += `. Received ${inspected}`\n }\n } else {\n let inspected = inspect(actual, {\n colors: false\n })\n if (inspected.length > 25) {\n inspected = `${inspected.slice(0, 25)}...`\n }\n msg += `. Received type ${typeof actual} (${inspected})`\n }\n return msg\n },\n TypeError\n)\nE(\n 'ERR_INVALID_ARG_VALUE',\n (name, value, reason = 'is invalid') => {\n let inspected = inspect(value)\n if (inspected.length > 128) {\n inspected = inspected.slice(0, 128) + '...'\n }\n const type = name.includes('.') ? 'property' : 'argument'\n return `The ${type} '${name}' ${reason}. Received ${inspected}`\n },\n TypeError\n)\nE(\n 'ERR_INVALID_RETURN_VALUE',\n (input, name, value) => {\n var _value$constructor\n const type =\n value !== null &&\n value !== undefined &&\n (_value$constructor = value.constructor) !== null &&\n _value$constructor !== undefined &&\n _value$constructor.name\n ? `instance of ${value.constructor.name}`\n : `type ${typeof value}`\n return `Expected ${input} to be returned from the \"${name}\"` + ` function but got ${type}.`\n },\n TypeError\n)\nE(\n 'ERR_MISSING_ARGS',\n (...args) => {\n assert(args.length > 0, 'At least one arg needs to be specified')\n let msg\n const len = args.length\n args = (Array.isArray(args) ? args : [args]).map((a) => `\"${a}\"`).join(' or ')\n switch (len) {\n case 1:\n msg += `The ${args[0]} argument`\n break\n case 2:\n msg += `The ${args[0]} and ${args[1]} arguments`\n break\n default:\n {\n const last = args.pop()\n msg += `The ${args.join(', ')}, and ${last} arguments`\n }\n break\n }\n return `${msg} must be specified`\n },\n TypeError\n)\nE(\n 'ERR_OUT_OF_RANGE',\n (str, range, input) => {\n assert(range, 'Missing \"range\" argument')\n let received\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > 2n ** 32n || input < -(2n ** 32n)) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n } else {\n received = inspect(input)\n }\n return `The value of \"${str}\" is out of range. It must be ${range}. Received ${received}`\n },\n RangeError\n)\nE('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error)\nE('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error)\nE('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error)\nE('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error)\nE('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error)\nE('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError)\nE('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error)\nE('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error)\nE('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error)\nE('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error)\nE('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError)\nmodule.exports = {\n AbortError,\n aggregateTwoErrors: hideStackFrames(aggregateTwoErrors),\n hideStackFrames,\n codes\n}\n","'use strict'\n\n/*\n This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at\n\n https://github.com/nodejs/node/blob/master/lib/internal/per_context/primordials.js\n\n Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\nmodule.exports = {\n ArrayIsArray(self) {\n return Array.isArray(self)\n },\n ArrayPrototypeIncludes(self, el) {\n return self.includes(el)\n },\n ArrayPrototypeIndexOf(self, el) {\n return self.indexOf(el)\n },\n ArrayPrototypeJoin(self, sep) {\n return self.join(sep)\n },\n ArrayPrototypeMap(self, fn) {\n return self.map(fn)\n },\n ArrayPrototypePop(self, el) {\n return self.pop(el)\n },\n ArrayPrototypePush(self, el) {\n return self.push(el)\n },\n ArrayPrototypeSlice(self, start, end) {\n return self.slice(start, end)\n },\n Error,\n FunctionPrototypeCall(fn, thisArgs, ...args) {\n return fn.call(thisArgs, ...args)\n },\n FunctionPrototypeSymbolHasInstance(self, instance) {\n return Function.prototype[Symbol.hasInstance].call(self, instance)\n },\n MathFloor: Math.floor,\n Number,\n NumberIsInteger: Number.isInteger,\n NumberIsNaN: Number.isNaN,\n NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER,\n NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER,\n NumberParseInt: Number.parseInt,\n ObjectDefineProperties(self, props) {\n return Object.defineProperties(self, props)\n },\n ObjectDefineProperty(self, name, prop) {\n return Object.defineProperty(self, name, prop)\n },\n ObjectGetOwnPropertyDescriptor(self, name) {\n return Object.getOwnPropertyDescriptor(self, name)\n },\n ObjectKeys(obj) {\n return Object.keys(obj)\n },\n ObjectSetPrototypeOf(target, proto) {\n return Object.setPrototypeOf(target, proto)\n },\n Promise,\n PromisePrototypeCatch(self, fn) {\n return self.catch(fn)\n },\n PromisePrototypeThen(self, thenFn, catchFn) {\n return self.then(thenFn, catchFn)\n },\n PromiseReject(err) {\n return Promise.reject(err)\n },\n PromiseResolve(val) {\n return Promise.resolve(val)\n },\n ReflectApply: Reflect.apply,\n RegExpPrototypeTest(self, value) {\n return self.test(value)\n },\n SafeSet: Set,\n String,\n StringPrototypeSlice(self, start, end) {\n return self.slice(start, end)\n },\n StringPrototypeToLowerCase(self) {\n return self.toLowerCase()\n },\n StringPrototypeToUpperCase(self) {\n return self.toUpperCase()\n },\n StringPrototypeTrim(self) {\n return self.trim()\n },\n Symbol,\n SymbolFor: Symbol.for,\n SymbolAsyncIterator: Symbol.asyncIterator,\n SymbolHasInstance: Symbol.hasInstance,\n SymbolIterator: Symbol.iterator,\n SymbolDispose: Symbol.dispose || Symbol('Symbol.dispose'),\n SymbolAsyncDispose: Symbol.asyncDispose || Symbol('Symbol.asyncDispose'),\n TypedArrayPrototypeSet(self, buf, len) {\n return self.set(buf, len)\n },\n Boolean: Boolean,\n Uint8Array\n}\n","'use strict'\n\nconst bufferModule = require('buffer')\nconst { kResistStopPropagation, SymbolDispose } = require('./primordials')\nconst AbortSignal = globalThis.AbortSignal || require('abort-controller').AbortSignal\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst AsyncFunction = Object.getPrototypeOf(async function () {}).constructor\nconst Blob = globalThis.Blob || bufferModule.Blob\n/* eslint-disable indent */\nconst isBlob =\n typeof Blob !== 'undefined'\n ? function isBlob(b) {\n // eslint-disable-next-line indent\n return b instanceof Blob\n }\n : function isBlob(b) {\n return false\n }\n/* eslint-enable indent */\n\nconst validateAbortSignal = (signal, name) => {\n if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n}\nconst validateFunction = (value, name) => {\n if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n}\n\n// This is a simplified version of AggregateError\nclass AggregateError extends Error {\n constructor(errors) {\n if (!Array.isArray(errors)) {\n throw new TypeError(`Expected input to be an Array, got ${typeof errors}`)\n }\n let message = ''\n for (let i = 0; i < errors.length; i++) {\n message += ` ${errors[i].stack}\\n`\n }\n super(message)\n this.name = 'AggregateError'\n this.errors = errors\n }\n}\nmodule.exports = {\n AggregateError,\n kEmptyObject: Object.freeze({}),\n once(callback) {\n let called = false\n return function (...args) {\n if (called) {\n return\n }\n called = true\n callback.apply(this, args)\n }\n },\n createDeferredPromise: function () {\n let resolve\n let reject\n\n // eslint-disable-next-line promise/param-names\n const promise = new Promise((res, rej) => {\n resolve = res\n reject = rej\n })\n return {\n promise,\n resolve,\n reject\n }\n },\n promisify(fn) {\n return new Promise((resolve, reject) => {\n fn((err, ...args) => {\n if (err) {\n return reject(err)\n }\n return resolve(...args)\n })\n })\n },\n debuglog() {\n return function () {}\n },\n format(format, ...args) {\n // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args\n return format.replace(/%([sdifj])/g, function (...[_unused, type]) {\n const replacement = args.shift()\n if (type === 'f') {\n return replacement.toFixed(6)\n } else if (type === 'j') {\n return JSON.stringify(replacement)\n } else if (type === 's' && typeof replacement === 'object') {\n const ctor = replacement.constructor !== Object ? replacement.constructor.name : ''\n return `${ctor} {}`.trim()\n } else {\n return replacement.toString()\n }\n })\n },\n inspect(value) {\n // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options\n switch (typeof value) {\n case 'string':\n if (value.includes(\"'\")) {\n if (!value.includes('\"')) {\n return `\"${value}\"`\n } else if (!value.includes('`') && !value.includes('${')) {\n return `\\`${value}\\``\n }\n }\n return `'${value}'`\n case 'number':\n if (isNaN(value)) {\n return 'NaN'\n } else if (Object.is(value, -0)) {\n return String(value)\n }\n return value\n case 'bigint':\n return `${String(value)}n`\n case 'boolean':\n case 'undefined':\n return String(value)\n case 'object':\n return '{}'\n }\n },\n types: {\n isAsyncFunction(fn) {\n return fn instanceof AsyncFunction\n },\n isArrayBufferView(arr) {\n return ArrayBuffer.isView(arr)\n }\n },\n isBlob,\n deprecate(fn, message) {\n return fn\n },\n addAbortListener:\n require('events').addAbortListener ||\n function addAbortListener(signal, listener) {\n if (signal === undefined) {\n throw new ERR_INVALID_ARG_TYPE('signal', 'AbortSignal', signal)\n }\n validateAbortSignal(signal, 'signal')\n validateFunction(listener, 'listener')\n let removeEventListener\n if (signal.aborted) {\n queueMicrotask(() => listener())\n } else {\n signal.addEventListener('abort', listener, {\n __proto__: null,\n once: true,\n [kResistStopPropagation]: true\n })\n removeEventListener = () => {\n signal.removeEventListener('abort', listener)\n }\n }\n return {\n __proto__: null,\n [SymbolDispose]() {\n var _removeEventListener\n ;(_removeEventListener = removeEventListener) === null || _removeEventListener === undefined\n ? undefined\n : _removeEventListener()\n }\n }\n },\n AbortSignalAny:\n AbortSignal.any ||\n function AbortSignalAny(signals) {\n // Fast path if there is only one signal.\n if (signals.length === 1) {\n return signals[0]\n }\n const ac = new AbortController()\n const abort = () => ac.abort()\n signals.forEach((signal) => {\n validateAbortSignal(signal, 'signals')\n signal.addEventListener('abort', abort, {\n once: true\n })\n })\n ac.signal.addEventListener(\n 'abort',\n () => {\n signals.forEach((signal) => signal.removeEventListener('abort', abort))\n },\n {\n once: true\n }\n )\n return ac.signal\n }\n}\nmodule.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom')\n","/* replacement start */\n\nconst { Buffer } = require('buffer')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n;('use strict')\nconst { ObjectDefineProperty, ObjectKeys, ReflectApply } = require('./ours/primordials')\nconst {\n promisify: { custom: customPromisify }\n} = require('./ours/util')\nconst { streamReturningOperators, promiseReturningOperators } = require('./internal/streams/operators')\nconst {\n codes: { ERR_ILLEGAL_CONSTRUCTOR }\n} = require('./ours/errors')\nconst compose = require('./internal/streams/compose')\nconst { setDefaultHighWaterMark, getDefaultHighWaterMark } = require('./internal/streams/state')\nconst { pipeline } = require('./internal/streams/pipeline')\nconst { destroyer } = require('./internal/streams/destroy')\nconst eos = require('./internal/streams/end-of-stream')\nconst internalBuffer = {}\nconst promises = require('./stream/promises')\nconst utils = require('./internal/streams/utils')\nconst Stream = (module.exports = require('./internal/streams/legacy').Stream)\nStream.isDestroyed = utils.isDestroyed\nStream.isDisturbed = utils.isDisturbed\nStream.isErrored = utils.isErrored\nStream.isReadable = utils.isReadable\nStream.isWritable = utils.isWritable\nStream.Readable = require('./internal/streams/readable')\nfor (const key of ObjectKeys(streamReturningOperators)) {\n const op = streamReturningOperators[key]\n function fn(...args) {\n if (new.target) {\n throw ERR_ILLEGAL_CONSTRUCTOR()\n }\n return Stream.Readable.from(ReflectApply(op, this, args))\n }\n ObjectDefineProperty(fn, 'name', {\n __proto__: null,\n value: op.name\n })\n ObjectDefineProperty(fn, 'length', {\n __proto__: null,\n value: op.length\n })\n ObjectDefineProperty(Stream.Readable.prototype, key, {\n __proto__: null,\n value: fn,\n enumerable: false,\n configurable: true,\n writable: true\n })\n}\nfor (const key of ObjectKeys(promiseReturningOperators)) {\n const op = promiseReturningOperators[key]\n function fn(...args) {\n if (new.target) {\n throw ERR_ILLEGAL_CONSTRUCTOR()\n }\n return ReflectApply(op, this, args)\n }\n ObjectDefineProperty(fn, 'name', {\n __proto__: null,\n value: op.name\n })\n ObjectDefineProperty(fn, 'length', {\n __proto__: null,\n value: op.length\n })\n ObjectDefineProperty(Stream.Readable.prototype, key, {\n __proto__: null,\n value: fn,\n enumerable: false,\n configurable: true,\n writable: true\n })\n}\nStream.Writable = require('./internal/streams/writable')\nStream.Duplex = require('./internal/streams/duplex')\nStream.Transform = require('./internal/streams/transform')\nStream.PassThrough = require('./internal/streams/passthrough')\nStream.pipeline = pipeline\nconst { addAbortSignal } = require('./internal/streams/add-abort-signal')\nStream.addAbortSignal = addAbortSignal\nStream.finished = eos\nStream.destroy = destroyer\nStream.compose = compose\nStream.setDefaultHighWaterMark = setDefaultHighWaterMark\nStream.getDefaultHighWaterMark = getDefaultHighWaterMark\nObjectDefineProperty(Stream, 'promises', {\n __proto__: null,\n configurable: true,\n enumerable: true,\n get() {\n return promises\n }\n})\nObjectDefineProperty(pipeline, customPromisify, {\n __proto__: null,\n enumerable: true,\n get() {\n return promises.pipeline\n }\n})\nObjectDefineProperty(eos, customPromisify, {\n __proto__: null,\n enumerable: true,\n get() {\n return promises.finished\n }\n})\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream\nStream._isUint8Array = function isUint8Array(value) {\n return value instanceof Uint8Array\n}\nStream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n}\n","'use strict'\n\nconst { ArrayPrototypePop, Promise } = require('../ours/primordials')\nconst { isIterable, isNodeStream, isWebStream } = require('../internal/streams/utils')\nconst { pipelineImpl: pl } = require('../internal/streams/pipeline')\nconst { finished } = require('../internal/streams/end-of-stream')\nrequire('../../lib/stream.js')\nfunction pipeline(...streams) {\n return new Promise((resolve, reject) => {\n let signal\n let end\n const lastArg = streams[streams.length - 1]\n if (\n lastArg &&\n typeof lastArg === 'object' &&\n !isNodeStream(lastArg) &&\n !isIterable(lastArg) &&\n !isWebStream(lastArg)\n ) {\n const options = ArrayPrototypePop(streams)\n signal = options.signal\n end = options.end\n }\n pl(\n streams,\n (err, value) => {\n if (err) {\n reject(err)\n } else {\n resolve(value)\n }\n },\n {\n signal,\n end\n }\n )\n })\n}\nmodule.exports = {\n finished,\n pipeline\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/Resolve\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.removeDotSegmentsOfPath = exports.removeDotSegments = exports.resolve = void 0;\n/**\n * Convert the given relative IRI to an absolute IRI\n * by taking into account the given optional baseIRI.\n *\n * @param {string} relativeIRI The relative IRI to convert to an absolute IRI.\n * @param {string} baseIRI The optional base IRI.\n * @return {string} an absolute IRI.\n */\nfunction resolve(relativeIRI, baseIRI) {\n baseIRI = baseIRI || '';\n const baseFragmentPos = baseIRI.indexOf('#');\n // Ignore any fragments in the base IRI\n if (baseFragmentPos > 0) {\n baseIRI = baseIRI.substr(0, baseFragmentPos);\n }\n // Convert empty value directly to base IRI\n if (!relativeIRI.length) {\n // At this point, the baseIRI MUST be absolute, otherwise we error\n if (baseIRI.indexOf(':') < 0) {\n throw new Error(`Found invalid baseIRI '${baseIRI}' for value '${relativeIRI}'`);\n }\n return baseIRI;\n }\n // If the value starts with a query character, concat directly (but strip the existing query)\n if (relativeIRI.startsWith('?')) {\n const baseQueryPos = baseIRI.indexOf('?');\n if (baseQueryPos > 0) {\n baseIRI = baseIRI.substr(0, baseQueryPos);\n }\n return baseIRI + relativeIRI;\n }\n // If the value starts with a fragment character, concat directly\n if (relativeIRI.startsWith('#')) {\n return baseIRI + relativeIRI;\n }\n // Ignore baseIRI if it is empty\n if (!baseIRI.length) {\n const relativeColonPos = relativeIRI.indexOf(':');\n if (relativeColonPos < 0) {\n throw new Error(`Found invalid relative IRI '${relativeIRI}' for a missing baseIRI`);\n }\n return removeDotSegmentsOfPath(relativeIRI, relativeColonPos);\n }\n // Ignore baseIRI if the value is absolute\n const valueColonPos = relativeIRI.indexOf(':');\n if (valueColonPos >= 0) {\n return removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n // At this point, the baseIRI MUST be absolute, otherwise we error\n const baseColonPos = baseIRI.indexOf(':');\n if (baseColonPos < 0) {\n throw new Error(`Found invalid baseIRI '${baseIRI}' for value '${relativeIRI}'`);\n }\n const baseIRIScheme = baseIRI.substr(0, baseColonPos + 1);\n // Inherit the baseIRI scheme if the value starts with '//'\n if (relativeIRI.indexOf('//') === 0) {\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n // Check cases where '://' occurs in the baseIRI, and where there is no '/' after a ':' anymore.\n let baseSlashAfterColonPos;\n if (baseIRI.indexOf('//', baseColonPos) === baseColonPos + 1) {\n // If there is no additional '/' after the '//'.\n baseSlashAfterColonPos = baseIRI.indexOf('/', baseColonPos + 3);\n if (baseSlashAfterColonPos < 0) {\n // If something other than a '/' follows the '://', append the value after a '/',\n // otherwise, prefix the value with only the baseIRI scheme.\n if (baseIRI.length > baseColonPos + 3) {\n return baseIRI + '/' + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n else {\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n }\n }\n else {\n // If there is not even a single '/' after the ':'\n baseSlashAfterColonPos = baseIRI.indexOf('/', baseColonPos + 1);\n if (baseSlashAfterColonPos < 0) {\n // If we don't have a '/' after the ':',\n // prefix the value with only the baseIRI scheme.\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n }\n // If the value starts with a '/', then prefix it with everything before the first effective slash of the base IRI.\n if (relativeIRI.indexOf('/') === 0) {\n return baseIRI.substr(0, baseSlashAfterColonPos) + removeDotSegments(relativeIRI);\n }\n let baseIRIPath = baseIRI.substr(baseSlashAfterColonPos);\n const baseIRILastSlashPos = baseIRIPath.lastIndexOf('/');\n // Ignore everything after the last '/' in the baseIRI path\n if (baseIRILastSlashPos >= 0 && baseIRILastSlashPos < baseIRIPath.length - 1) {\n baseIRIPath = baseIRIPath.substr(0, baseIRILastSlashPos + 1);\n // Also remove the first character of the relative path if it starts with '.' (and not '..' or './')\n // This change is only allowed if there is something else following the path\n if (relativeIRI[0] === '.' && relativeIRI[1] !== '.' && relativeIRI[1] !== '/' && relativeIRI[2]) {\n relativeIRI = relativeIRI.substr(1);\n }\n }\n // Prefix the value with the baseIRI path where\n relativeIRI = baseIRIPath + relativeIRI;\n // Remove dot segment from the IRI\n relativeIRI = removeDotSegments(relativeIRI);\n // Prefix our transformed value with the part of the baseIRI until the first '/' after the first ':'.\n return baseIRI.substr(0, baseSlashAfterColonPos) + relativeIRI;\n}\nexports.resolve = resolve;\n/**\n * Remove dot segments from the given path,\n * as described in https://www.ietf.org/rfc/rfc3986.txt (page 32).\n * @param {string} path An IRI path.\n * @return {string} A path, will always start with a '/'.\n */\nfunction removeDotSegments(path) {\n // Prepare a buffer with segments between each '/.\n // Each segment represents an array of characters.\n const segmentBuffers = [];\n let i = 0;\n while (i < path.length) {\n // Remove '/.' or '/..'\n switch (path[i]) {\n case '/':\n if (path[i + 1] === '.') {\n if (path[i + 2] === '.') {\n // Start a new segment if we find an invalid character after the '.'\n if (!isCharacterAllowedAfterRelativePathSegment(path[i + 3])) {\n segmentBuffers.push([]);\n i++;\n break;\n }\n // Go to parent directory,\n // so we remove a parent segment\n segmentBuffers.pop();\n // Ensure that we end with a slash if there is a trailing '/..'\n if (!path[i + 3]) {\n segmentBuffers.push([]);\n }\n i += 3;\n }\n else {\n // Start a new segment if we find an invalid character after the '.'\n if (!isCharacterAllowedAfterRelativePathSegment(path[i + 2])) {\n segmentBuffers.push([]);\n i++;\n break;\n }\n // Ensure that we end with a slash if there is a trailing '/.'\n if (!path[i + 2]) {\n segmentBuffers.push([]);\n }\n // Go to the current directory,\n // so we do nothing\n i += 2;\n }\n }\n else {\n // Start a new segment\n segmentBuffers.push([]);\n i++;\n }\n break;\n case '#':\n case '?':\n // Query and fragment string should be appended unchanged\n if (!segmentBuffers.length) {\n segmentBuffers.push([]);\n }\n segmentBuffers[segmentBuffers.length - 1].push(path.substr(i));\n // Break the while loop\n i = path.length;\n break;\n default:\n // Not a special character, just append it to our buffer\n if (!segmentBuffers.length) {\n segmentBuffers.push([]);\n }\n segmentBuffers[segmentBuffers.length - 1].push(path[i]);\n i++;\n break;\n }\n }\n return '/' + segmentBuffers.map((buffer) => buffer.join('')).join('/');\n}\nexports.removeDotSegments = removeDotSegments;\n/**\n * Removes dot segments of the given IRI.\n * @param {string} iri An IRI (or part of IRI).\n * @param {number} colonPosition The position of the first ':' in the IRI.\n * @return {string} The IRI where dot segments were removed.\n */\nfunction removeDotSegmentsOfPath(iri, colonPosition) {\n // Determine where we should start looking for the first '/' that indicates the start of the path\n let searchOffset = colonPosition + 1;\n if (colonPosition >= 0) {\n if (iri[colonPosition + 1] === '/' && iri[colonPosition + 2] === '/') {\n searchOffset = colonPosition + 3;\n }\n }\n else {\n if (iri[0] === '/' && iri[1] === '/') {\n searchOffset = 2;\n }\n }\n // Determine the path\n const pathSeparator = iri.indexOf('/', searchOffset);\n if (pathSeparator < 0) {\n return iri;\n }\n const base = iri.substr(0, pathSeparator);\n const path = iri.substr(pathSeparator);\n // Remove dot segments from the path\n return base + removeDotSegments(path);\n}\nexports.removeDotSegmentsOfPath = removeDotSegmentsOfPath;\nfunction isCharacterAllowedAfterRelativePathSegment(character) {\n return !character || character === '#' || character === '?' || character === '/';\n}\n//# sourceMappingURL=Resolve.js.map","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable no-unused-vars */\n/* eslint-disable lines-between-class-members */\n/* eslint-disable no-dupe-class-members */\n/**\n * Generates a SHACLC file stream from a quad stream, since SHACLC is\n * lossy with respect to N3, a stream of quads that could not be\n * written is also output.\n */\nconst n3_1 = require(\"n3\");\nconst prefixcc_1 = require(\"@jeswr/prefixcc\");\nconst rdf_string_ttl_1 = require(\"rdf-string-ttl\");\nconst utils_1 = require(\"./utils\");\nconst property_param_1 = __importDefault(require(\"./property-param \"));\nconst base_prefixes_1 = __importDefault(require(\"./base-prefixes\"));\nconst node_param_1 = __importDefault(require(\"./node-param\"));\nfunction getNamespace(str) {\n var _a;\n return (_a = /^[^]*[#/]/.exec(str)) === null || _a === void 0 ? void 0 : _a[0];\n}\nconst knownNamespaces = {\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#': 'rdf',\n 'http://www.w3.org/2000/01/rdf-schema#': 'rdfs',\n 'http://www.w3.org/ns/shacl#': 'sh',\n 'http://www.w3.org/2001/XMLSchema#': 'xsd',\n};\nconst knownPrefixes = {\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n rdfs: 'http://www.w3.org/2000/01/rdf-schema#',\n sh: 'http://www.w3.org/ns/shacl#',\n xsd: 'http://www.w3.org/2001/XMLSchema#',\n};\nclass SHACLCWriter {\n constructor(\n // eslint-disable-next-line no-unused-vars\n store, \n // eslint-disable-next-line no-unused-vars\n writer, prefixes = {}, \n // eslint-disable-next-line no-unused-vars\n base = undefined, errorOnExtraQuads = true, mintUnspecifiedPrefixes = false, fetch, extendedSyntax = false) {\n this.store = store;\n this.base = base;\n this.errorOnExtraQuads = errorOnExtraQuads;\n this.mintUnspecifiedPrefixes = mintUnspecifiedPrefixes;\n this.fetch = fetch;\n this.extendedSyntax = extendedSyntax;\n this.prefixes = {};\n this.prefixRev = {};\n for (const key of Object.keys(prefixes)) {\n const iri = prefixes[key];\n const value = typeof iri === 'string' ? iri : iri.value;\n if (!(value in knownNamespaces) && !(key in knownPrefixes)) {\n this.prefixRev[value] = key;\n this.prefixes[key] = value;\n }\n }\n this.writer = writer;\n }\n /**\n * Used to initiate the flow of data through the writer.\n */\n // TODO: Make initialisation async\n write() {\n return __awaiter(this, void 0, void 0, function* () {\n const onotology = this.store.getQuads(null, \"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\" /* rdf.type */, \"http://www.w3.org/2002/07/owl#Ontology\" /* owl.Ontology */, null);\n if (onotology.length === 1 && onotology[0].subject.termType === 'NamedNode') {\n const base = onotology[0].subject;\n this.store.removeQuads(onotology);\n // Don't write default\n if (!base.equals(new n3_1.NamedNode('urn:x-base:default')))\n this.writer.add(`BASE ${(0, rdf_string_ttl_1.termToString)(base)}`);\n yield this.writeImports(base);\n }\n else {\n throw new Error('Base expected');\n }\n if (this.mintUnspecifiedPrefixes) {\n const namespaces = new Set();\n for (const term of [\n ...this.store.getSubjects(null, null, null),\n ...this.store.getPredicates(null, null, null),\n ...this.store.getObjects(null, null, null),\n ]) {\n if (term.termType === 'NamedNode') {\n const namespace = getNamespace(term.value);\n if (namespace && !(namespace in this.prefixRev) && !(namespace in knownNamespaces)) {\n namespaces.add(namespace);\n }\n }\n }\n const existingPrefixes = Object.assign(Object.assign({}, this.prefixes), knownPrefixes);\n yield Promise.all([...namespaces].map((ns) => (0, prefixcc_1.uriToPrefix)(ns, {\n fetch: this.fetch,\n mintOnUnknown: true,\n existingPrefixes,\n }).then((pref) => {\n this.prefixes[pref] = ns;\n existingPrefixes[pref] = ns;\n this.prefixRev[ns] = pref;\n })));\n }\n const allNamespaces = new Set([\n ...this.store.getSubjects(null, null, null),\n ...this.store.getPredicates(null, null, null),\n ...this.store.getObjects(null, null, null),\n ]\n .filter((term) => term.termType === 'NamedNode')\n .map((term) => getNamespace(term.value))\n .filter((str) => typeof str === 'string'));\n for (const key in this.prefixRev) {\n if (!allNamespaces.has(key)) {\n delete this.prefixes[this.prefixRev[key]];\n delete this.prefixRev[key];\n }\n }\n yield this.writePrefixes();\n this.prefixes = Object.assign(Object.assign({}, this.prefixes), knownPrefixes);\n this.prefixRev = Object.assign(Object.assign({}, this.prefixRev), knownNamespaces);\n this.writer.newLine();\n yield this.writeShapes();\n if (this.extendedSyntax) {\n const subjects = this.store.getSubjects(null, null, null);\n if (subjects.length > 0) {\n this.writer.newLine(1);\n }\n for (const subject of subjects) {\n this.writer.add(yield this.termToString(subject, true, true));\n this.writer.add(' ');\n this.writer.indent();\n yield this.writeTurtlePredicates(subject);\n this.writer.deindent();\n }\n if (subjects.length > 0) {\n this.writer.add(' .');\n this.writer.newLine();\n }\n }\n if (this.errorOnExtraQuads && this.store.size > 0) {\n throw new Error('Dataset contains quads that cannot be written in SHACLC');\n }\n this.writer.end();\n // this.failedQuads.append(this.store.getQuads(null, null, null, null))\n });\n }\n writeImports(base) {\n return __awaiter(this, void 0, void 0, function* () {\n const imports = this.store.getObjectsOnce(base, new n3_1.NamedNode(\"http://www.w3.org/2002/07/owl#imports\" /* owl.imports */), null);\n if (imports.length > 0) {\n for (const imp of imports) {\n this.writer.add(`IMPORTS <${imp.value}>`, true);\n }\n }\n });\n }\n writePrefixes() {\n return __awaiter(this, void 0, void 0, function* () {\n const keys = Object.keys(this.prefixes).filter((key) => !(key in base_prefixes_1.default)).sort();\n if (keys.length > 0) {\n for (const key of keys) {\n this.writer.add(`PREFIX ${key}: <${this.prefixes[key]}>`, true);\n }\n }\n });\n }\n termToString(term, disableShaclName = false, allowBlankNodes = false) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: Make sure this does not introduce any errors\n try {\n if (disableShaclName) {\n throw new Error('Shacl name disabled');\n }\n return (0, utils_1.getShaclName)(term);\n // eslint-disable-next-line no-empty\n }\n catch (e) { }\n if (term.termType === 'NamedNode') {\n const namespace = getNamespace(term.value);\n if (namespace && namespace in this.prefixRev) {\n if (namespace in this.prefixRev) {\n return `${this.prefixRev[namespace]}:${term.value.slice(namespace.length)}`;\n }\n }\n return (0, rdf_string_ttl_1.termToString)(term);\n }\n if (term.termType === 'Literal') {\n if (term.datatypeString === 'http://www.w3.org/2001/XMLSchema#integer'\n || term.datatypeString === 'http://www.w3.org/2001/XMLSchema#boolean') {\n return term.value;\n }\n return (0, rdf_string_ttl_1.termToString)(term);\n }\n if (term.termType === 'BlankNode' && allowBlankNodes) {\n (0, rdf_string_ttl_1.termToString)(term);\n }\n throw new Error(`Invalid term type for extra statement ${term.value} (${term.termType})`);\n });\n }\n writeShapes() {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: Determine sorting\n /**\n * Get every nodeshape declared at the top level\n */\n for (const subject of this.store.getSubjectsOnce(new n3_1.NamedNode(\"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\" /* rdf.type */), new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#NodeShape\" /* sh.NodeShape */), null)) {\n if (this.store.getQuadsOnce(subject, new n3_1.NamedNode(\"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\" /* rdf.type */), new n3_1.NamedNode(\"http://www.w3.org/2000/01/rdf-schema#Class\" /* rdfs.Class */), null).length > 0) {\n this.writer.add('shapeClass ');\n }\n else {\n this.writer.add('shape ');\n }\n this.writer.add(yield this.termToString(subject));\n this.writer.add(' ');\n const targetClasses = this.store.getObjectsOnce(subject, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#targetClass\" /* sh.targetClass */), null);\n if (targetClasses.length > 0) {\n this.writer.add('-> ');\n for (const targetClass of targetClasses) {\n if (targetClass.termType === 'NamedNode') {\n this.writer.add(yield this.termToString(targetClass));\n }\n else {\n this.writer.add('!');\n this.writer.add(yield this.termToString(this.singleObject(targetClass, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#not\" /* sh.not */), true)));\n }\n this.writer.add(' ');\n }\n }\n const unusedPredicates = this.store.getPredicates(subject, null, null)\n .filter((property) => [\n new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#targetClass\" /* sh.targetClass */),\n new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#property\" /* sh.property */),\n // TODO: See if \"and\" should be here as well\n new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#or\" /* sh.or */),\n ...Object.keys(node_param_1.default).map((key) => new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#\" /* sh._ */ + key)),\n ].every((elem) => !property.equals(elem)));\n if (unusedPredicates.length > 0) {\n this.writer.add(';');\n this.writer.indent();\n this.writer.newLine(1);\n }\n if (this.extendedSyntax) {\n yield this.writeGivenTurtlePredicates(subject, unusedPredicates);\n }\n if (unusedPredicates.length > 0) {\n this.writer.add(' ');\n this.writer.deindent();\n }\n yield this.writeShapeBody(subject, false);\n }\n });\n }\n getSingleProperty(quad, allowedPredicates) {\n // let tempQuad = quad;\n let examining = [quad];\n try {\n let name = (0, utils_1.getShaclName)(quad.predicate);\n let type = 'pred';\n if (name === 'not') {\n const quads = this.store.getQuadsOnce(quad.object, null, null, null);\n // TODO: See if this line is necessary\n examining = examining.concat(quads);\n if (quads.length !== 1) {\n throw new Error('Can only handle having one predicate of \\'not\\'');\n }\n // eslint-disable-next-line no-param-reassign\n [quad] = quads;\n name = (0, utils_1.getShaclName)(quad.predicate);\n type = 'not';\n }\n if (!(name in allowedPredicates)) {\n throw new Error(`${name} is not allowed`);\n }\n return { name, type, object: quad.object };\n }\n catch (e) {\n this.store.addQuads(examining);\n }\n return undefined;\n }\n singleLayerPropertiesList(term, allowedPredicates) {\n const result = [];\n for (const quad of this.store.getQuadsOnce(term, null, null, null)) {\n const property = this.getSingleProperty(quad, allowedPredicates);\n if (property) {\n result.push(property);\n }\n }\n return result;\n }\n expectOneProperty(term, allowedPredicates) {\n const quads = this.store.getQuadsOnce(term, null, null, null);\n if (quads.length === 1) {\n const data = this.getSingleProperty(quads[0], allowedPredicates);\n if (data) {\n return data;\n }\n }\n this.store.addQuads(quads);\n return undefined;\n }\n orProperties(term, allowedPredicates) {\n const orProperties = [];\n for (const quad of this.store.getQuadsOnce(term, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#or\" /* sh.or */), null, null)) {\n const statement = [];\n for (const item of this.getList(quad.object)) {\n const property = this.expectOneProperty(item, allowedPredicates);\n if (!property) {\n // TODO HANDLE THIS CASE BY EXTENDING SHACLC SYNTAX\n this.store.addQuad(quad);\n throw new Error('Each entry of the \\'or\\' statement must declare exactly one property');\n }\n statement.push(property);\n }\n orProperties.push(statement);\n }\n return orProperties;\n }\n /**\n * Extract an rdf:list\n */\n getList(term) {\n // TODO: Fix gross type casting\n let termTemp = term;\n const list = [];\n // TODO: Handle poorly formed RDF lists\n while (!termTemp.equals(new n3_1.NamedNode(\"http://www.w3.org/1999/02/22-rdf-syntax-ns#nil\" /* rdf.nil */))) {\n list.push(this.singleObject(termTemp, new n3_1.NamedNode(\"http://www.w3.org/1999/02/22-rdf-syntax-ns#first\" /* rdf.first */), true));\n termTemp = this.singleObject(termTemp, new n3_1.NamedNode(\"http://www.w3.org/1999/02/22-rdf-syntax-ns#rest\" /* rdf.rest */), true);\n }\n return list;\n }\n writeIriLiteralOrArray(object) {\n return __awaiter(this, void 0, void 0, function* () {\n if (object.termType === 'BlankNode') {\n this.writer.add('[');\n let first = true;\n for (const term of this.getList(object)) {\n if (first) {\n first = false;\n }\n else {\n this.writer.add(' ');\n }\n this.writer.add(yield this.termToString(term));\n }\n this.writer.add(']');\n }\n else {\n this.writer.add(yield this.termToString(object));\n }\n });\n }\n singleObject(subject, predicate, strict) {\n var _a;\n return (_a = this.singleQuad(subject, predicate, strict)) === null || _a === void 0 ? void 0 : _a.object;\n }\n singleQuad(subject, predicate, strict = false) {\n const objects = this.store.getQuadsOnce(subject, predicate, null, null);\n if (strict && objects.length !== 1) {\n this.store.addQuads(objects);\n throw new Error(`The subject and predicate ${subject === null || subject === void 0 ? void 0 : subject.value} ${predicate === null || predicate === void 0 ? void 0 : predicate.value} must have exactly one object. Instead has ${objects.length}`);\n }\n if (objects.length > 1) {\n this.store.addQuads(objects);\n throw new Error(`The subject and predicate ${subject === null || subject === void 0 ? void 0 : subject.value} ${predicate === null || predicate === void 0 ? void 0 : predicate.value} can have at most one object. Instead has ${objects.length}`);\n }\n return objects.length === 1 ? objects[0] : undefined;\n }\n writeAssigment({ name, type, object }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (type === 'not') {\n this.writer.add('!');\n // object = this.singleObject(object, DataFactory.namedNode(sh._ + name), true)\n }\n this.writer.add(name);\n this.writer.add('=');\n yield this.writeIriLiteralOrArray(object);\n });\n }\n writeAtom({ name, type, object }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (type === 'not') {\n this.writer.add('!');\n }\n switch (name) {\n case 'node': {\n if (object.termType === 'NamedNode') {\n this.writer.add(`@${yield this.termToString(object)}`);\n }\n else if (object.termType === 'BlankNode') {\n yield this.writeShapeBody(object);\n }\n else {\n throw new Error('Invalid nested shape, must be blank node or IRI');\n }\n return;\n }\n case 'nodeKind': {\n this.writer.add((0, utils_1.getShaclName)(object));\n return;\n }\n case 'class': {\n this.writer.add(yield this.termToString(object));\n return;\n }\n case 'datatype': {\n this.writer.add(yield this.termToString(object));\n return;\n }\n default:\n this.writer.add(name);\n this.writer.add('=');\n yield this.writeIriLiteralOrArray(object);\n }\n });\n }\n writeAssigments(assignments, divider = ' ', first = true, shortcuts) {\n return __awaiter(this, void 0, void 0, function* () {\n for (const assignment of assignments) {\n if (first) {\n // eslint-disable-next-line no-param-reassign\n first = false;\n }\n else {\n this.writer.add(divider);\n }\n if (shortcuts) {\n yield this.writeAtom(assignment);\n }\n else {\n yield this.writeAssigment(assignment);\n }\n }\n });\n }\n writeParams(term, first = true, allowedParam, shortcuts = false, surroundings = false) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO Stream this part\n const or = this.orProperties(term, allowedParam);\n const params = this.singleLayerPropertiesList(term, allowedParam);\n if (surroundings && (or.length > 0 || params.length > 0)) {\n this.writer.newLine(1);\n }\n for (const statement of or) {\n if (first) {\n // eslint-disable-next-line no-param-reassign\n first = false;\n }\n else {\n this.writer.add(' ');\n }\n yield this.writeAssigments(statement, '|', true, shortcuts);\n }\n yield this.writeAssigments(params, ' ', first, shortcuts);\n if (surroundings && (or.length > 0 || params.length > 0)) {\n this.writer.add(' .');\n }\n });\n }\n writeShapeBody(term, nested = true) {\n return __awaiter(this, void 0, void 0, function* () {\n this.writer.add('{').indent();\n const properties = this.store.getObjectsOnce(term, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#property\" /* sh.property */), null);\n yield this.writeParams(term, true, node_param_1.default, false, true);\n for (const property of properties) {\n this.writer.newLine(1);\n yield this.writeProperty(property);\n }\n this.writer.deindent().newLine(1);\n if (nested) {\n this.writer.add('} .');\n }\n else {\n this.writer.add('}').newLine(1);\n }\n });\n }\n writeProperty(property) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.writePath(this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#path\" /* sh.path */), true));\n const min = this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#minCount\" /* sh.minCount */));\n const max = this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#maxCount\" /* sh.maxCount */));\n const nodeKind = this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#nodeKind\" /* sh.nodeKind */));\n // eslint-disable-next-line no-underscore-dangle\n const propertyClass = this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#class\" /* sh._class */));\n const datatype = this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#datatype\" /* sh.datatype */));\n const nodeShapes = this.store.getObjectsOnce(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#node\" /* sh.node */), null);\n if (nodeKind) {\n this.writer.add(' ');\n this.writer.add((0, utils_1.getShaclName)(nodeKind));\n }\n if (propertyClass) {\n this.writer.add(' ');\n this.writer.add(yield this.termToString(propertyClass));\n }\n if (datatype) {\n this.writer.add(' ');\n this.writer.add(yield this.termToString(datatype));\n }\n if (min !== undefined || max !== undefined) {\n this.writer.add(' [');\n if (min) {\n if (min.termType !== 'Literal' || min.datatypeString !== 'http://www.w3.org/2001/XMLSchema#integer') {\n throw new Error('Invalid min value, must me an integer literal');\n }\n this.writer.add(min.value);\n }\n else {\n this.writer.add('0');\n }\n this.writer.add('..');\n if (max) {\n if (max.termType !== 'Literal' || max.datatypeString !== 'http://www.w3.org/2001/XMLSchema#integer') {\n throw new Error('Invalid max value, must me an integer literal');\n }\n this.store.removeMatches(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#maxCount\" /* sh.maxCount */), undefined, undefined);\n this.writer.add(max.value);\n }\n else {\n this.writer.add('*');\n }\n this.writer.add(']');\n }\n yield this.writeParams(property, false, property_param_1.default, true);\n const nestedShapes = [];\n for (const node of nodeShapes) {\n if (node.termType === 'NamedNode') {\n this.writer.add(' ');\n this.writer.add(`@${yield this.termToString(node)}`);\n }\n else if (node.termType === 'BlankNode') {\n nestedShapes.push(node);\n }\n else {\n throw new Error('Invalid nested shape, must be blank node or IRI');\n }\n }\n for (const shape of nestedShapes) {\n this.writer.add(' ');\n yield this.writeShapeBody(shape);\n }\n if (this.extendedSyntax && this.store.getQuads(property, null, null, null).length > 0) {\n this.writer.add(' %');\n this.writer.indent();\n this.writer.newLine(1);\n yield this.writeTurtlePredicates(property);\n this.writer.deindent();\n this.writer.newLine(1);\n this.writer.add('%');\n }\n if (nestedShapes.length === 0) {\n this.writer.add(' .');\n }\n });\n }\n writeTurtlePredicates(term) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.writeGivenTurtlePredicates(term, this.store.getPredicates(term, null, null));\n });\n }\n writeGivenTurtlePredicates(term, predicates) {\n return __awaiter(this, void 0, void 0, function* () {\n let semi = false;\n if (predicates.some((predicate) => predicate.equals(n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')))) {\n const types = this.store.getObjectsOnce(term, n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), null);\n if (types.length > 0) {\n semi = true;\n this.writer.add('a ');\n yield this.writeTurtleObjects(types);\n }\n }\n for (const predicate of predicates) {\n if (!predicate.equals(n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'))) {\n if (semi) {\n this.writer.add(' ;');\n this.writer.newLine(1);\n }\n else {\n semi = true;\n }\n this.writer.add(yield this.termToString(predicate, true));\n this.writer.add(' ');\n yield this.writeTurtleObjects(this.store.getObjectsOnce(term, predicate, null));\n }\n }\n });\n }\n writeTurtleObjects(objects) {\n return __awaiter(this, void 0, void 0, function* () {\n const blankObjects = [];\n const nonBlankObjects = [];\n for (const object of objects) {\n if (object.termType === 'BlankNode'\n && [...this.store.match(null, null, object), ...this.store.match(null, object, null)].length === 0) {\n blankObjects.push(object);\n }\n else {\n nonBlankObjects.push(object);\n }\n }\n this.writer.add((yield Promise.all(nonBlankObjects.map((object) => this.termToString(object, true, true)))).join(', '));\n let comma = nonBlankObjects.length > 0;\n if (blankObjects.length > 0) {\n for (const blank of blankObjects) {\n if (comma) {\n this.writer.add(', ');\n }\n else {\n comma = true;\n }\n if (!(yield this.writeList(blank))) {\n this.writer.add('[');\n this.writer.indent();\n this.writer.newLine(1);\n yield this.writeTurtlePredicates(blank);\n this.writer.deindent();\n this.writer.newLine(1);\n this.writer.add(']');\n }\n }\n }\n });\n }\n writeList(object) {\n return __awaiter(this, void 0, void 0, function* () {\n let node = object;\n const elems = [];\n const quads = [];\n while (!node.equals(n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'))) {\n const first = this.store.getQuadsOnce(node, n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#first'), null, null);\n const rest = this.store.getQuadsOnce(node, n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#rest'), null, null);\n quads.push(...first, ...rest);\n if (first.length !== 1 || rest.length !== 1 || this.store.getQuads(node, null, null, null).length !== 0) {\n this.store.addQuads(quads);\n return false;\n }\n elems.push(first[0].object);\n node = rest[0].object;\n }\n let space = false;\n this.writer.add('(');\n for (const elem of elems) {\n if (space) {\n this.writer.add(' ');\n }\n else {\n space = true;\n }\n yield this.writeTurtleObjects([elem]);\n }\n this.writer.add(')');\n return true;\n });\n }\n writePath(term, braces = false) {\n return __awaiter(this, void 0, void 0, function* () {\n if (term.termType === 'NamedNode') {\n this.writer.add(yield this.termToString(term));\n }\n else if (term.termType === 'BlankNode') {\n const quads = this.store.getQuadsOnce(term, null, null, null);\n if (quads.length === 1) {\n const { predicate, object } = quads[0];\n switch (predicate.value) {\n case \"http://www.w3.org/ns/shacl#inversePath\" /* sh.inversePath */:\n this.writer.add('^');\n yield this.writePath(object, true);\n return;\n case \"http://www.w3.org/ns/shacl#alternativePath\" /* sh.alternativePath */: {\n const alternatives = this.getList(object);\n if (alternatives.length === 0) {\n throw new Error('Invalid Alternative Path - no options');\n }\n else if (alternatives.length === 1) {\n yield this.writePath(alternatives[0]);\n }\n else {\n if (braces) {\n this.writer.add('(');\n }\n let first = true;\n for (const alt of alternatives) {\n if (first) {\n first = false;\n }\n else {\n this.writer.add('|');\n }\n yield this.writePath(alt, true);\n }\n if (braces) {\n this.writer.add(')');\n }\n }\n return;\n }\n case \"http://www.w3.org/ns/shacl#zeroOrMorePath\" /* sh.zeroOrMorePath */:\n yield this.writePath(object, true);\n this.writer.add('*');\n return;\n case \"http://www.w3.org/ns/shacl#oneOrMorePath\" /* sh.oneOrMorePath */:\n yield this.writePath(object, true);\n this.writer.add('+');\n return;\n case \"http://www.w3.org/ns/shacl#zeroOrOnePath\" /* sh.zeroOrOnePath */:\n yield this.writePath(object, true);\n this.writer.add('?');\n return;\n default:\n throw new Error(`Invalid path type ${term.value}`);\n }\n }\n else {\n // TODO Make more efficient\n this.store.addQuads(quads);\n const sequence = this.getList(term);\n if (sequence.length === 0) {\n throw new Error('Invalid Path');\n // TODO: See if the following case is necessary\n // else if (sequence.length === 1) {\n // await this.writePath(sequence[0]);\n // }\n }\n else {\n if (braces) {\n this.writer.add('(');\n }\n let first = true;\n for (const alt of sequence) {\n if (first) {\n first = false;\n }\n else {\n this.writer.add('/');\n }\n yield this.writePath(alt, true);\n }\n if (braces) {\n this.writer.add(')');\n }\n }\n }\n }\n else {\n throw new Error('Path should be named node or blank node');\n }\n });\n }\n}\nexports.default = SHACLCWriter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * The base prefixes default to SHACLC syntax\n */\n// TODO: Double check the defaults\nexports.default = {\n owl: 'http://www.w3.org/2002/07/owl#',\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n rdfs: 'http://www.w3.org/2000/01/rdf-schema#',\n sh: 'http://www.w3.org/ns/shacl#',\n xsd: 'http://www.w3.org/2001/XMLSchema#',\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.write = void 0;\nconst n3_1 = require(\"n3\");\nconst ShaclcGenerator_1 = __importDefault(require(\"./ShaclcGenerator\"));\nconst writer_1 = __importDefault(require(\"./writer\"));\nconst volatile_store_1 = __importDefault(require(\"./volatile-store\"));\nfunction write(quads, options) {\n return __awaiter(this, void 0, void 0, function* () {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n try {\n let s = '';\n const volatileStore = new volatile_store_1.default(quads);\n const graphs = volatileStore.getGraphs(null, null, null);\n if (graphs.length > 1) {\n throw new Error('More than one graph found - can serialize in the default graph');\n }\n if (graphs.length === 1 && !graphs[0].equals(n3_1.DataFactory.defaultGraph())) {\n throw new Error(`Expected all triples to be in the default graph, instead triples were in ${graphs[0].value}`);\n }\n const w = new writer_1.default({\n write: (chunk) => {\n s += chunk;\n },\n end: () => {\n let extraQuads = volatileStore.getQuads(null, null, null, null);\n if (extraQuads.length === 0) {\n extraQuads = undefined;\n }\n resolve({\n text: s,\n extraQuads,\n });\n },\n });\n const writer = new ShaclcGenerator_1.default(volatileStore, w, options === null || options === void 0 ? void 0 : options.prefixes, undefined, (options === null || options === void 0 ? void 0 : options.errorOnUnused) !== false, options === null || options === void 0 ? void 0 : options.mintPrefixes, options === null || options === void 0 ? void 0 : options.fetch, options === null || options === void 0 ? void 0 : options.extendedSyntax);\n yield writer.write();\n }\n catch (e) {\n reject(e);\n }\n }));\n });\n}\nexports.write = write;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Allowed parameters for a NodeShape\n */\nexports.default = {\n targetNode: true,\n targetObjectsOf: true,\n targetSubjectsOf: true,\n deactivated: true,\n severity: true,\n message: true,\n class: true,\n datatype: true,\n nodeKind: true,\n minExclusive: true,\n minInclusive: true,\n maxExclusive: true,\n maxInclusive: true,\n minLength: true,\n maxLength: true,\n pattern: true,\n flags: true,\n languageIn: true,\n equals: true,\n disjoint: true,\n closed: true,\n ignoredProperties: true,\n hasValue: true,\n in: true,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Allowed parameters for a PropertyShape\n */\nexports.default = {\n deactivated: true,\n severity: true,\n message: true,\n class: true,\n datatype: true,\n nodeKind: true,\n minExclusive: true,\n minInclusive: true,\n maxExclusive: true,\n maxInclusive: true,\n minLength: true,\n maxLength: true,\n pattern: true,\n flags: true,\n languageIn: true,\n uniqueLang: true,\n equals: true,\n disjoint: true,\n lessThan: true,\n lessThanOrEquals: true,\n qualifiedValueShape: true,\n qualifiedMinCount: true,\n qualifiedMaxCount: true,\n qualifiedValueShapesDisjoint: true,\n closed: true,\n ignoredProperties: true,\n hasValue: true,\n in: true,\n // This is here so that we can exract it from alts\n node: true,\n};\n","\"use strict\";\n/**\n * Get the frame of an IRI that we expect to be in the SHACL namespace\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getShaclName = void 0;\n// eslint-disable-next-line import/prefer-default-export\nfunction getShaclName(term) {\n if (term.termType !== 'NamedNode' || !term.value.startsWith(\"http://www.w3.org/ns/shacl#\" /* sh._ */)) {\n throw new Error(`Term ${term.value} is not part of the SHACL namespace`);\n }\n return term.value.slice(27);\n}\nexports.getShaclName = getShaclName;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable camelcase */\n/**\n * Convenience class that extends the n3 store API that deletes\n * quads as they are extracted from the store\n */\nconst n3_1 = require(\"n3\");\nclass VolitileStore extends n3_1.Store {\n getQuadsOnce(s, p, o, g) {\n const quads = this.getQuads(s, p, o, g);\n this.removeQuads(quads);\n return quads;\n }\n getSubjectsOnce(p, o, g) {\n return this.getQuadsOnce(null, p, o, g).map((term) => term.subject);\n }\n getObjectsOnce(s, p, g) {\n return this.getQuadsOnce(s, p, null, g).map((term) => term.object);\n }\n}\nexports.default = VolitileStore;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Convenience class used to write chunks\n */\nclass Writer {\n constructor(options) {\n this.indents = 0;\n this.write = options.write;\n this.end = options.end;\n }\n indent() {\n this.indents += 1;\n return this;\n }\n deindent() {\n if (this.indents < 1) {\n throw new Error(`Trying to deindent when indent is only ${this.indents}`);\n }\n this.indents -= 1;\n return this;\n }\n add(s, newLine = false) {\n this.write(newLine ? `\\n${'\\t'.repeat(this.indents)}${s}` : s, 'utf-8');\n return this;\n }\n newLine(no = 2) {\n this.write('\\n'.repeat(no) + '\\t'.repeat(this.indents), 'utf-8');\n return this;\n }\n}\nexports.default = Writer;\n","(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} [raw] True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.toSparqlJs = exports.toSparql = exports.Factory = exports.Algebra = exports.translate = void 0;\nconst sparqlAlgebra_1 = __importDefault(require(\"./lib/sparqlAlgebra\"));\nexports.translate = sparqlAlgebra_1.default;\nconst Algebra = __importStar(require(\"./lib/algebra\"));\nexports.Algebra = Algebra;\nconst factory_1 = __importDefault(require(\"./lib/factory\"));\nexports.Factory = factory_1.default;\nconst sparql_1 = require(\"./lib/sparql\");\nObject.defineProperty(exports, \"toSparql\", { enumerable: true, get: function () { return sparql_1.toSparql; } });\nObject.defineProperty(exports, \"toSparqlJs\", { enumerable: true, get: function () { return sparql_1.toSparqlJs; } });\nconst util_1 = __importDefault(require(\"./lib/util\"));\nexports.Util = util_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expressionTypes = exports.types = void 0;\nvar types;\n(function (types) {\n types[\"ALT\"] = \"alt\";\n types[\"ASK\"] = \"ask\";\n types[\"BGP\"] = \"bgp\";\n types[\"CONSTRUCT\"] = \"construct\";\n types[\"DESCRIBE\"] = \"describe\";\n types[\"DISTINCT\"] = \"distinct\";\n types[\"EXPRESSION\"] = \"expression\";\n types[\"EXTEND\"] = \"extend\";\n types[\"FILTER\"] = \"filter\";\n types[\"FROM\"] = \"from\";\n types[\"GRAPH\"] = \"graph\";\n types[\"GROUP\"] = \"group\";\n types[\"INV\"] = \"inv\";\n types[\"JOIN\"] = \"join\";\n types[\"LEFT_JOIN\"] = \"leftjoin\";\n types[\"LINK\"] = \"link\";\n types[\"MINUS\"] = \"minus\";\n types[\"NOP\"] = \"nop\";\n types[\"NPS\"] = \"nps\";\n types[\"ONE_OR_MORE_PATH\"] = \"OneOrMorePath\";\n types[\"ORDER_BY\"] = \"orderby\";\n types[\"PATH\"] = \"path\";\n types[\"PATTERN\"] = \"pattern\";\n types[\"PROJECT\"] = \"project\";\n types[\"REDUCED\"] = \"reduced\";\n types[\"SEQ\"] = \"seq\";\n types[\"SERVICE\"] = \"service\";\n types[\"SLICE\"] = \"slice\";\n types[\"UNION\"] = \"union\";\n types[\"VALUES\"] = \"values\";\n types[\"ZERO_OR_MORE_PATH\"] = \"ZeroOrMorePath\";\n types[\"ZERO_OR_ONE_PATH\"] = \"ZeroOrOnePath\";\n types[\"COMPOSITE_UPDATE\"] = \"compositeupdate\";\n types[\"DELETE_INSERT\"] = \"deleteinsert\";\n types[\"LOAD\"] = \"load\";\n types[\"CLEAR\"] = \"clear\";\n types[\"CREATE\"] = \"create\";\n types[\"DROP\"] = \"drop\";\n types[\"ADD\"] = \"add\";\n types[\"MOVE\"] = \"move\";\n types[\"COPY\"] = \"copy\";\n})(types = exports.types || (exports.types = {}));\nvar expressionTypes;\n(function (expressionTypes) {\n expressionTypes[\"AGGREGATE\"] = \"aggregate\";\n expressionTypes[\"EXISTENCE\"] = \"existence\";\n expressionTypes[\"NAMED\"] = \"named\";\n expressionTypes[\"OPERATOR\"] = \"operator\";\n expressionTypes[\"TERM\"] = \"term\";\n expressionTypes[\"WILDCARD\"] = \"wildcard\";\n})(expressionTypes = exports.expressionTypes || (exports.expressionTypes = {}));\n//# sourceMappingURL=algebra.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst A = __importStar(require(\"./algebra\"));\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nclass Factory {\n constructor(dataFactory) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.stringType = this.createTerm('http://www.w3.org/2001/XMLSchema#string');\n }\n createAlt(input, flatten = true) { return this.flattenMulti({ type: A.types.ALT, input }, flatten); }\n createAsk(input) { return { type: A.types.ASK, input }; }\n createBoundAggregate(variable, aggregate, expression, distinct, separator) {\n const result = this.createAggregateExpression(aggregate, expression, distinct, separator);\n result.variable = variable;\n return result;\n }\n createBgp(patterns) { return { type: A.types.BGP, patterns }; }\n createConstruct(input, template) { return { type: A.types.CONSTRUCT, input, template }; }\n createDescribe(input, terms) { return { type: A.types.DESCRIBE, input, terms }; }\n createDistinct(input) { return { type: A.types.DISTINCT, input }; }\n createExtend(input, variable, expression) { return { type: A.types.EXTEND, input, variable, expression }; }\n createFrom(input, def, named) { return { type: A.types.FROM, input, default: def, named }; }\n createFilter(input, expression) { return { type: A.types.FILTER, input, expression }; }\n createGraph(input, name) { return { type: A.types.GRAPH, input, name }; }\n createGroup(input, variables, aggregates) { return { type: A.types.GROUP, input, variables, aggregates }; }\n createInv(path) { return { type: A.types.INV, path }; }\n createJoin(input, flatten = true) { return this.flattenMulti({ type: A.types.JOIN, input }, flatten); }\n createLeftJoin(left, right, expression) {\n if (expression)\n return { type: A.types.LEFT_JOIN, input: [left, right], expression };\n return { type: A.types.LEFT_JOIN, input: [left, right] };\n }\n createLink(iri) { return { type: A.types.LINK, iri }; }\n createMinus(left, right) { return { type: A.types.MINUS, input: [left, right] }; }\n createNop() { return { type: A.types.NOP }; }\n createNps(iris) { return { type: A.types.NPS, iris }; }\n createOneOrMorePath(path) { return { type: A.types.ONE_OR_MORE_PATH, path }; }\n createOrderBy(input, expressions) { return { type: A.types.ORDER_BY, input, expressions }; }\n createPath(subject, predicate, object, graph) {\n if (graph)\n return { type: A.types.PATH, subject, predicate, object, graph };\n return { type: A.types.PATH, subject, predicate, object, graph: this.dataFactory.defaultGraph() };\n }\n createPattern(subject, predicate, object, graph) {\n const pattern = this.dataFactory.quad(subject, predicate, object, graph);\n pattern.type = A.types.PATTERN;\n return pattern;\n }\n createProject(input, variables) { return { type: A.types.PROJECT, input, variables }; }\n createReduced(input) { return { type: A.types.REDUCED, input }; }\n createSeq(input, flatten = true) { return this.flattenMulti({ type: A.types.SEQ, input }, flatten); }\n createService(input, name, silent) { return { type: A.types.SERVICE, input, name, silent: Boolean(silent) }; }\n createSlice(input, start, length) {\n start = start || 0;\n if (length !== undefined)\n return { type: A.types.SLICE, input, start, length };\n return { type: A.types.SLICE, input, start };\n }\n createUnion(input, flatten = true) { return this.flattenMulti({ type: A.types.UNION, input }, flatten); }\n createValues(variables, bindings) { return { type: A.types.VALUES, variables, bindings }; }\n createZeroOrMorePath(path) { return { type: A.types.ZERO_OR_MORE_PATH, path }; }\n createZeroOrOnePath(path) { return { type: A.types.ZERO_OR_ONE_PATH, path }; }\n createAggregateExpression(aggregator, expression, distinct, separator) {\n if (separator)\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, separator, distinct };\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, distinct };\n }\n createExistenceExpression(not, input) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.EXISTENCE, not, input }; }\n createNamedExpression(name, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.NAMED, name, args }; }\n createOperatorExpression(operator, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.OPERATOR, operator, args }; }\n createTermExpression(term) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.TERM, term }; }\n createWildcardExpression() { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.WILDCARD, wildcard: new sparqljs_1.Wildcard() }; }\n createTerm(str) {\n if (str[0] === '$') {\n str = str.replace('$', '?');\n }\n return (0, rdf_string_1.stringToTerm)(str, this.dataFactory);\n }\n // Update functions\n createCompositeUpdate(updates) { return { type: A.types.COMPOSITE_UPDATE, updates }; }\n createDeleteInsert(deleteQuads, insertQuads, where) {\n const result = { type: A.types.DELETE_INSERT };\n if (deleteQuads)\n result.delete = deleteQuads;\n if (insertQuads)\n result.insert = insertQuads;\n if (where)\n result.where = where;\n return result;\n }\n createLoad(source, destination, silent) {\n const result = { type: A.types.LOAD, source };\n if (destination)\n result.destination = destination;\n return this.addSilent(result, Boolean(silent));\n }\n createClear(source, silent) {\n return this.addSilent({ type: A.types.CLEAR, source }, Boolean(silent));\n }\n createCreate(source, silent) {\n return this.addSilent({ type: A.types.CREATE, source }, Boolean(silent));\n }\n createDrop(source, silent) {\n return this.addSilent({ type: A.types.DROP, source }, Boolean(silent));\n }\n createAdd(source, destination, silent) {\n return this.addSilent({ type: A.types.ADD, source, destination }, Boolean(silent));\n }\n createMove(source, destination, silent) {\n return this.addSilent({ type: A.types.MOVE, source, destination }, Boolean(silent));\n }\n createCopy(source, destination, silent) {\n return this.addSilent({ type: A.types.COPY, source, destination }, Boolean(silent));\n }\n addSilent(input, silent) {\n if (silent)\n input.silent = silent;\n return input;\n }\n flattenMulti(input, flatten) {\n if (!flatten) {\n return input;\n }\n const type = input.type;\n const children = input.input;\n let newChildren = [];\n for (const child of children) {\n if (child.type === type) {\n newChildren.push(...child.input);\n }\n else {\n newChildren.push(child);\n }\n }\n input.input = newChildren;\n return input;\n }\n}\nexports.default = Factory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toSparqlJs = exports.toSparql = void 0;\nconst rdf_isomorphic_1 = require(\"rdf-isomorphic\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst types = Algebra.types;\nconst eTypes = Algebra.expressionTypes;\nlet context;\nconst factory = new factory_1.default();\nfunction toSparql(op, options = {}) {\n let generator = new sparqljs_1.Generator(options);\n return generator.stringify(toSparqlJs(op));\n}\nexports.toSparql = toSparql;\nfunction toSparqlJs(op) {\n resetContext();\n op = removeQuads(op);\n let result = translateOperation(op);\n if (result.type === 'group')\n return result.patterns[0];\n return result;\n}\nexports.toSparqlJs = toSparqlJs;\nfunction resetContext() {\n context = { project: false, extend: [], group: [], aggregates: [], order: [] };\n}\nfunction translateOperation(op) {\n // this allows us to differentiate between BIND and SELECT when translating EXTEND\n // GRAPH was added because the way graphs get added back here is not the same as how they get added in the future\n // ^ seems fine but might have to be changed if problems get detected in the future\n if (op.type !== types.EXTEND && op.type !== types.ORDER_BY && op.type !== types.GRAPH)\n context.project = false;\n switch (op.type) {\n case types.EXPRESSION: return translateExpression(op);\n case types.ASK: return translateProject(op, types.ASK);\n case types.BGP: return translateBgp(op);\n case types.CONSTRUCT: return translateConstruct(op);\n case types.DESCRIBE: return translateProject(op, types.DESCRIBE);\n case types.DISTINCT: return translateDistinct(op);\n case types.EXTEND: return translateExtend(op);\n case types.FROM: return translateFrom(op);\n case types.FILTER: return translateFilter(op);\n case types.GRAPH: return translateGraph(op);\n case types.GROUP: return translateGroup(op);\n case types.JOIN: return translateJoin(op);\n case types.LEFT_JOIN: return translateLeftJoin(op);\n case types.MINUS: return translateMinus(op);\n case types.NOP: return {};\n case types.ORDER_BY: return translateOrderBy(op);\n case types.PATH: return translatePath(op);\n case types.PATTERN: return translatePattern(op);\n case types.PROJECT: return translateProject(op, types.PROJECT);\n case types.REDUCED: return translateReduced(op);\n case types.SERVICE: return translateService(op);\n case types.SLICE: return translateSlice(op);\n case types.UNION: return translateUnion(op);\n case types.VALUES: return translateValues(op);\n // UPDATE operations\n case types.COMPOSITE_UPDATE: return translateCompositeUpdate(op);\n case types.DELETE_INSERT: return translateDeleteInsert(op);\n case types.LOAD: return translateLoad(op);\n case types.CLEAR: return translateClear(op);\n case types.CREATE: return translateCreate(op);\n case types.DROP: return translateDrop(op);\n case types.ADD: return translateAdd(op);\n case types.MOVE: return translateMove(op);\n case types.COPY: return translateCopy(op);\n }\n throw new Error(`Unknown Operation type ${op.type}`);\n}\nfunction translateExpression(expr) {\n switch (expr.expressionType) {\n case eTypes.AGGREGATE: return translateAggregateExpression(expr);\n case eTypes.EXISTENCE: return translateExistenceExpression(expr);\n case eTypes.NAMED: return translateNamedExpression(expr);\n case eTypes.OPERATOR: return translateOperatorExpression(expr);\n case eTypes.TERM: return translateTermExpression(expr);\n case eTypes.WILDCARD: return translateWildcardExpression(expr);\n }\n throw new Error(`Unknown Expression Operation type ${expr.expressionType}`);\n}\nfunction translatePathComponent(path) {\n switch (path.type) {\n case types.ALT: return translateAlt(path);\n case types.INV: return translateInv(path);\n case types.LINK: return translateLink(path);\n case types.NPS: return translateNps(path);\n case types.ONE_OR_MORE_PATH: return translateOneOrMorePath(path);\n case types.SEQ: return translateSeq(path);\n case types.ZERO_OR_MORE_PATH: return translateZeroOrMorePath(path);\n case types.ZERO_OR_ONE_PATH: return translateZeroOrOnePath(path);\n }\n throw new Error(`Unknown Path type ${path.type}`);\n}\nfunction translateTerm(term) {\n return (0, rdf_string_1.termToString)(term);\n}\n// ------------------------- EXPRESSIONS -------------------------\nfunction translateAggregateExpression(expr) {\n const result = {\n expression: translateExpression(expr.expression),\n type: 'aggregate',\n aggregation: expr.aggregator,\n distinct: expr.distinct\n };\n if (expr.separator)\n result.separator = expr.separator;\n return result;\n}\nfunction translateExistenceExpression(expr) {\n return {\n type: 'operation',\n operator: expr.not ? 'notexists' : 'exists',\n args: [{\n type: 'group',\n patterns: util_1.default.flatten([translateOperation(expr.input)])\n }]\n };\n}\nfunction translateNamedExpression(expr) {\n return {\n type: 'functionCall',\n // Wrong typings\n function: expr.name,\n args: expr.args.map(translateExpression)\n };\n}\nfunction translateOperatorExpression(expr) {\n if (expr.operator === 'desc') {\n const result = { expression: translateExpression(expr.args[0]) };\n result.descending = true;\n return result;\n }\n const result = {\n type: 'operation',\n operator: expr.operator,\n args: expr.args.map(translateExpression)\n };\n if (result.operator === 'in' || result.operator === 'notin')\n result.args = [result.args[0]].concat([result.args.slice(1)]);\n return result;\n}\nfunction translateTermExpression(expr) {\n return expr.term;\n}\nfunction translateWildcardExpression(expr) {\n return expr.wildcard;\n}\nfunction arrayToPattern(input) {\n if (!Array.isArray(input))\n return input;\n if (input.length === 1)\n return input[0];\n return {\n type: 'group',\n patterns: input,\n };\n}\n// ------------------------- OPERATIONS -------------------------\n// these get translated in the project function\nfunction translateBoundAggregate(op) {\n return op;\n}\nfunction translateBgp(op) {\n let patterns = op.patterns.map(translatePattern);\n if (patterns.length === 0)\n return null;\n return {\n type: 'bgp',\n triples: patterns\n };\n}\nfunction translateConstruct(op) {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: op.template.map(translatePattern),\n where: util_1.default.flatten([\n translateOperation(op.input)\n ])\n };\n}\nfunction translateDistinct(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].distinct = true;\n return result;\n}\nfunction translateExtend(op) {\n if (context.project) {\n context.extend.push(op);\n return translateOperation(op.input);\n }\n return util_1.default.flatten([\n translateOperation(op.input),\n {\n type: 'bind',\n variable: op.variable,\n expression: translateExpression(op.expression)\n }\n ]);\n}\nfunction translateFrom(op) {\n const result = translateOperation(op.input);\n // Can't type as CONSTRUCT queries do not have `from` field in their type\n let obj = result;\n // project is nested in group object\n if (result.type === 'group') {\n obj = result.patterns[0];\n }\n obj.from = {\n default: op.default,\n named: op.named\n };\n return result;\n}\nfunction translateFilter(op) {\n return {\n type: 'group',\n patterns: util_1.default.flatten([\n translateOperation(op.input),\n { type: 'filter', expression: translateExpression(op.expression) }\n ])\n };\n}\nfunction translateGraph(op) {\n return {\n type: 'graph',\n patterns: util_1.default.flatten([translateOperation(op.input)]),\n name: op.name\n };\n}\nfunction translateGroup(op) {\n const input = translateOperation(op.input);\n const aggs = op.aggregates.map(translateBoundAggregate);\n context.aggregates.push(...aggs);\n // TODO: apply possible extends\n context.group.push(...op.variables);\n return input;\n}\nfunction translateJoin(op) {\n const arr = util_1.default.flatten(op.input.map(translateOperation));\n // Merge bgps\n // This is possible if one side was a path and the other a bgp for example\n return arr.reduce((result, val) => {\n if (val.type !== 'bgp' || result.length == 0 || result[result.length - 1].type !== 'bgp') {\n result.push(val);\n }\n else {\n result[result.length - 1].triples.push(...val.triples);\n }\n return result;\n }, []);\n}\nfunction translateLeftJoin(op) {\n const leftjoin = {\n type: 'optional',\n patterns: [\n translateOperation(op.input[1])\n ]\n };\n if (op.expression) {\n leftjoin.patterns.push({\n type: 'filter',\n expression: translateExpression(op.expression)\n });\n }\n leftjoin.patterns = util_1.default.flatten(leftjoin.patterns);\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n leftjoin\n ]);\n}\nfunction translateMinus(op) {\n let patterns = translateOperation(op.input[1]);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n {\n type: 'minus',\n patterns: patterns\n }\n ]);\n}\nfunction translateOrderBy(op) {\n context.order.push(...op.expressions);\n return translateOperation(op.input);\n}\nfunction translatePath(op) {\n return {\n type: 'bgp',\n triples: [{\n subject: op.subject,\n predicate: translatePathComponent(op.predicate),\n object: op.object\n }]\n };\n}\nfunction translatePattern(op) {\n return {\n subject: op.subject,\n predicate: op.predicate,\n object: op.object\n };\n}\nfunction replaceAggregatorVariables(s, map) {\n let st = util_1.default.isSimpleTerm(s) ? translateTerm(s) : s;\n if (typeof st === 'string') {\n if (map[st])\n return map[st];\n }\n else if (Array.isArray(s)) {\n s = s.map(e => replaceAggregatorVariables(e, map));\n }\n else {\n for (let key of Object.keys(s))\n s[key] = replaceAggregatorVariables(s[key], map);\n }\n return s;\n}\nfunction translateProject(op, type) {\n const result = {\n type: 'query',\n prefixes: {}\n };\n // Makes typing easier in some places\n const select = result;\n let variables;\n if (type === types.PROJECT) {\n result.queryType = 'SELECT';\n variables = op.variables;\n }\n else if (type === types.ASK) {\n result.queryType = 'ASK';\n }\n else if (type === types.DESCRIBE) {\n result.queryType = 'DESCRIBE';\n variables = op.terms;\n }\n // backup values in case of nested queries\n // everything in extend, group, etc. is irrelevant for this project call\n const extend = context.extend;\n const group = context.group;\n const aggregates = context.aggregates;\n const order = context.order;\n resetContext();\n context.project = true;\n let input = util_1.default.flatten([translateOperation(op.input)]);\n if (input.length === 1 && input[0].type === 'group')\n input = input[0].patterns;\n result.where = input;\n let aggregators = {};\n // these can not reference each other\n for (let agg of context.aggregates)\n aggregators[translateTerm(agg.variable)] = translateExpression(agg);\n // do these in reverse order since variables in one extend might apply to an expression in an other extend\n let extensions = {};\n for (let i = context.extend.length - 1; i >= 0; --i) {\n let e = context.extend[i];\n extensions[translateTerm(e.variable)] = replaceAggregatorVariables(translateExpression(e.expression), aggregators);\n }\n if (context.group.length > 0)\n select.group = context.group.map(variable => {\n let v = translateTerm(variable);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // make sure there is only 1 'AS' statement\n return {\n variable,\n expression: result\n };\n }\n return { expression: variable };\n });\n // descending expressions will already be in the correct format due to the structure of those\n if (context.order.length > 0)\n select.order = context.order.map(translateOperation).map(o => o.descending ? o : ({ expression: o }));\n // this needs to happen after the group because it might depend on variables generated there\n if (variables) {\n select.variables = variables.map((term) => {\n let v = translateTerm(term);\n if (extensions[v])\n return {\n variable: term,\n expression: extensions[v]\n };\n return term;\n });\n // if the * didn't match any variables this would be empty\n if (select.variables.length === 0)\n select.variables = [new sparqljs_1.Wildcard()];\n }\n // convert filter to 'having' if it contains an aggregator variable\n // could always convert, but is nicer to use filter when possible\n if (result.where.length > 0 && result.where[result.where.length - 1].type === 'filter') {\n const filter = result.where[result.where.length - 1];\n if (objectContainsValues(filter, Object.keys(aggregators))) {\n select.having = util_1.default.flatten([replaceAggregatorVariables(filter.expression, aggregators)]);\n result.where.splice(-1);\n }\n }\n context.extend = extend;\n context.group = group;\n context.aggregates = aggregates;\n context.order = order;\n // subqueries need to be in a group, this will be removed again later for the root query\n return { type: 'group', patterns: [select] };\n}\nfunction objectContainsValues(o, vals) {\n if (util_1.default.isSimpleTerm(o))\n return vals.indexOf(translateTerm(o)) >= 0;\n if (Array.isArray(o))\n return o.some(e => objectContainsValues(e, vals));\n if (o === Object(o))\n return Object.keys(o).some(key => objectContainsValues(o[key], vals));\n return vals.indexOf(o) >= 0;\n}\nfunction translateReduced(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].reduced = true;\n return result;\n}\nfunction translateService(op) {\n let patterns = translateOperation(op.input);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return {\n type: 'service',\n // Typings are wrong, name can also be a variable\n name: op.name,\n silent: op.silent,\n patterns\n };\n}\nfunction translateSlice(op) {\n let result = translateOperation(op.input);\n // results can be nested in a group object\n let obj = result;\n if (result.type && result.type === 'group')\n obj = result.patterns[0];\n if (op.start !== 0)\n obj.offset = op.start;\n if (op.length !== undefined)\n obj.limit = op.length;\n return result;\n}\nfunction translateUnion(op) {\n return {\n type: 'union',\n patterns: op.input.map(translateOperation).map(arrayToPattern),\n };\n}\nfunction translateValues(op) {\n // TODO: check if handled correctly when outside of select block\n return {\n type: 'values',\n values: op.bindings.map(binding => {\n let result = {};\n for (let v of op.variables) {\n let s = `?${v.value}`;\n if (binding[s])\n result[s] = binding[s];\n else\n result[s] = undefined;\n }\n return result;\n })\n };\n}\n// PATH COMPONENTS\nfunction translateAlt(path) {\n const mapped = path.input.map(translatePathComponent);\n if (mapped.every(entry => 'pathType' in entry && entry.pathType === '!')) {\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: util_1.default.flatten(mapped.map(entry => entry.items))\n }]\n };\n }\n return {\n type: 'path',\n pathType: '|',\n items: mapped\n };\n}\nfunction translateInv(path) {\n if (path.path.type === types.NPS) {\n const inv = path.path.iris.map((iri) => {\n return {\n type: 'path',\n pathType: '^',\n items: [iri]\n };\n });\n if (inv.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: inv\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: inv\n }]\n };\n }\n return {\n type: 'path',\n pathType: '^',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateLink(path) {\n return path.iri;\n}\nfunction translateNps(path) {\n if (path.iris.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: path.iris\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: path.iris\n }]\n };\n}\nfunction translateOneOrMorePath(path) {\n return {\n type: 'path',\n pathType: '+',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateSeq(path) {\n return {\n type: 'path',\n pathType: '/',\n items: path.input.map(translatePathComponent)\n };\n}\nfunction translateZeroOrMorePath(path) {\n return {\n type: 'path',\n pathType: '*',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateZeroOrOnePath(path) {\n // Typings are missing '?' operator\n return {\n type: 'path',\n // Typings are missing this path\n pathType: '?',\n items: [translatePathComponent(path.path)]\n };\n}\n// UPDATE OPERATIONS\nfunction translateCompositeUpdate(op) {\n const updates = op.updates.map(update => {\n const result = translateOperation(update);\n return result.updates[0];\n });\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateDeleteInsert(op) {\n var _a;\n let where = op.where;\n let use = undefined;\n if (where && where.type === types.FROM) {\n let from = where;\n where = from.input;\n use = { default: from.default, named: from.named };\n }\n const updates = [{\n updateType: 'insertdelete',\n delete: convertUpdatePatterns(op.delete || []),\n insert: convertUpdatePatterns(op.insert || []),\n }];\n // Typings don't support 'using' yet\n if (use)\n updates[0].using = use;\n // corresponds to empty array in SPARQL.js\n if (!where || (where.type === types.BGP && where.patterns.length === 0))\n updates[0].where = [];\n else {\n const graphs = [];\n let result = translateOperation(removeQuadsRecursive(where, graphs));\n if (result.type === 'group')\n updates[0].where = result.patterns;\n else\n updates[0].where = [result];\n // graph might not be applied yet since there was no project\n // this can only happen if there was a single graph\n if (graphs.length > 0) {\n if (graphs.length !== 1)\n throw new Error('This is unexpected and might indicate an error in graph handling for updates.');\n // ignore if default graph\n if (((_a = graphs[0]) === null || _a === void 0 ? void 0 : _a.value) !== '')\n updates[0].where = [{ type: 'graph', patterns: updates[0].where, name: graphs[0] }];\n }\n }\n // not really necessary but can give cleaner looking queries\n if (!op.delete && !op.where) {\n updates[0].updateType = 'insert';\n delete updates[0].delete;\n delete updates[0].where;\n }\n else if (!op.insert && !op.where) {\n delete updates[0].insert;\n delete updates[0].where;\n if (op.delete.some(pattern => pattern.subject.termType === 'Variable' ||\n pattern.predicate.termType === 'Variable' ||\n pattern.object.termType === 'Variable'))\n updates[0].updateType = 'deletewhere';\n else\n updates[0].updateType = 'delete';\n }\n else if (!op.insert && op.where && op.where.type === 'bgp') {\n if ((0, rdf_isomorphic_1.isomorphic)(op.delete, op.where.patterns)) {\n delete updates[0].where;\n updates[0].updateType = 'deletewhere';\n }\n }\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateLoad(op) {\n // Typings are wrong, destiniation is optional\n const updates = [{ type: 'load', silent: Boolean(op.silent), source: op.source }];\n if (op.destination)\n updates[0].destination = op.destination;\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateClear(op) {\n return translateClearCreateDrop(op, 'clear');\n}\nfunction translateCreate(op) {\n return translateClearCreateDrop(op, 'create');\n}\nfunction translateDrop(op) {\n return translateClearCreateDrop(op, 'drop');\n}\nfunction translateClearCreateDrop(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n // Typings are wrong, type is not required, see for example \"clear-drop\" test\n if (op.source === 'DEFAULT')\n updates[0].graph = { default: true };\n else if (op.source === 'NAMED')\n updates[0].graph = { named: true };\n else if (op.source === 'ALL')\n updates[0].graph = { all: true };\n else\n updates[0].graph = { type: 'graph', name: op.source };\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateAdd(op) {\n return translateUpdateGraphShortcut(op, 'add');\n}\nfunction translateMove(op) {\n return translateUpdateGraphShortcut(op, 'move');\n}\nfunction translateCopy(op) {\n return translateUpdateGraphShortcut(op, 'copy');\n}\nfunction translateUpdateGraphShortcut(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n updates[0].source = op.source === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.source };\n updates[0].destination = op.destination === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.destination };\n return { prefixes: {}, type: 'update', updates };\n}\n// similar to removeQuads but more simplified for UPDATEs\nfunction convertUpdatePatterns(patterns) {\n if (!patterns)\n return [];\n const graphs = {};\n patterns.forEach(pattern => {\n const graph = pattern.graph.value;\n if (!graphs[graph])\n graphs[graph] = [];\n graphs[graph].push(pattern);\n });\n return Object.keys(graphs).map(graph => {\n if (graph === '')\n return { type: 'bgp', triples: graphs[graph].map(translatePattern) };\n return { type: 'graph', triples: graphs[graph].map(translatePattern), name: graphs[graph][0].graph };\n });\n}\nfunction removeQuads(op) {\n return removeQuadsRecursive(op, []);\n}\n// remove quads\nfunction removeQuadsRecursive(op, graphs) {\n if (Array.isArray(op))\n return op.map(sub => removeQuadsRecursive(sub, graphs));\n if (!op.type)\n return op;\n // UPDATE operations with Patterns handle graphs a bit differently\n if (op.type === types.DELETE_INSERT)\n return op;\n if ((op.type === types.PATTERN || op.type === types.PATH) && op.graph) {\n graphs.push(op.graph);\n // Remove non-default graphs\n if (op.graph.name !== '')\n return op.type === types.PATTERN ?\n factory.createPattern(op.subject, op.predicate, op.object) :\n factory.createPath(op.subject, op.predicate, op.object);\n return op;\n }\n const result = {};\n const keyGraphs = {}; // unique graph per key\n const globalNames = {}; // track all the unique graph names for the entire Operation\n for (let key of Object.keys(op)) {\n const newGraphs = [];\n result[key] = removeQuadsRecursive(op[key], newGraphs);\n if (newGraphs.length > 0) {\n keyGraphs[key] = newGraphs;\n for (const graph of newGraphs) {\n globalNames[graph.value] = graph;\n }\n }\n }\n const graphNameSet = Object.keys(globalNames);\n if (graphNameSet.length > 0) {\n // We also need to create graph statement if we are at the edge of certain operations\n if (graphNameSet.length === 1 && ![types.PROJECT, types.SERVICE].includes(op.type))\n graphs.push(globalNames[graphNameSet[0]]);\n else if (op.type === types.BGP) {\n // This is the specific case that got changed because of using quads.\n return splitBgpToGraphs(op, keyGraphs.patterns);\n }\n else {\n // multiple graphs (or project), need to create graph objects for them\n for (let key of Object.keys(keyGraphs)) {\n const value = result[key];\n if (Array.isArray(value))\n result[key] = value.map((child, idx) => keyGraphs[key][0].value === '' ? child : factory.createGraph(child, keyGraphs[key][idx]));\n else if (keyGraphs[key][0].value !== '')\n result[key] = factory.createGraph(value, keyGraphs[key][0]);\n }\n }\n }\n return result;\n}\n// `graphs` should be an array of length identical to `op.patterns`, containing the corresponding graph for each triple.\nfunction splitBgpToGraphs(op, graphs) {\n var _a;\n // Split patterns per graph\n const graphPatterns = {};\n for (let i = 0; i < op.patterns.length; ++i) {\n const pattern = op.patterns[i];\n const graphName = graphs[i].value;\n graphPatterns[graphName] = (_a = graphPatterns[graphName]) !== null && _a !== void 0 ? _a : { patterns: [], graph: graphs[i] };\n graphPatterns[graphName].patterns.push(pattern);\n }\n // Create graph objects for every cluster\n let children = [];\n for (const [graphName, { patterns, graph }] of Object.entries(graphPatterns)) {\n const bgp = factory.createBgp(patterns);\n children.push(graphName === '' ? bgp : factory.createGraph(bgp, graph));\n }\n // Join the graph objects\n let join = children[0];\n for (let i = 1; i < children.length; ++i)\n join = factory.createJoin([join, children[i]]);\n return join;\n}\n//# sourceMappingURL=sparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst equal = require(\"fast-deep-equal/es6\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst Parser = require('sparqljs').Parser;\nconst types = Algebra.types;\nlet variables = new Set();\nlet varCount = 0;\nlet useQuads = false;\nlet factory;\n/**\n * Translates the given SPARQL query to SPARQL Algebra.\n * @param sparql - Either a SPARQL string or an object generated by sparql.js\n * @param options - Optional options object. Current options:\n * * dataFactory: The Datafactory used to generate terms. Default @rdfjs/data-model.\n * * quads: Boolean indicating whether triples should be converted to Quads (consumes GRAPH statements). Default false.\n * * prefixes: Pre-defined prefixes for the given query. Default empty.\n * * baseIRI: Base IRI that should be used for the query. Default undefined (throws error if required).\n * @returns {Operation}\n */\nfunction translate(sparql, options) {\n options = options || {};\n factory = new factory_1.default(options.dataFactory);\n let query;\n if (isString(sparql)) {\n let parser = new Parser(options);\n // resets the identifier counter used for blank nodes\n // provides nicer and more consistent output if there are multiple calls\n parser._resetBlanks();\n query = parser.parse(sparql);\n }\n else {\n query = sparql;\n }\n return translateQuery(query, options.quads, options.blankToVariable);\n}\nexports.default = translate;\nfunction translateQuery(sparql, quads, blankToVariable) {\n // this set is filled in during the inScopeVariables call\n variables = new Set();\n varCount = 0;\n useQuads = Boolean(quads);\n // Assume this is an empty query\n if (!sparql.type)\n return factory.createNop();\n if (sparql.type !== 'query' && sparql.type !== 'update')\n throw new Error('Translate only works on complete query or update objects.');\n let res;\n // find ALL variables here to fill `variables` array\n findAllVariables(sparql);\n if (sparql.type === 'query') {\n // group and where are identical, having only 1 makes parsing easier, can be undefined in DESCRIBE\n const group = { type: 'group', patterns: sparql.where || [] };\n res = translateGraphPattern(group);\n res = translateAggregates(sparql, res);\n }\n else if (sparql.type === 'update') {\n res = translateUpdate(sparql);\n }\n if (blankToVariable) {\n res = translateBlankNodesToVariables(res);\n }\n return res;\n}\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isTerm(term) {\n return Boolean(term === null || term === void 0 ? void 0 : term.termType);\n}\n// This is not completely correct but this way we also catch SPARQL.js triples\nfunction isTriple(triple) {\n return triple.subject && triple.predicate && triple.object;\n}\nfunction isVariable(term) {\n return (term === null || term === void 0 ? void 0 : term.termType) === 'Variable';\n}\n// Will be used to make sure new variables don't overlap\nfunction findAllVariables(thingy) {\n if (isTerm(thingy)) {\n if (isVariable(thingy)) {\n // Variables don't store the `?`\n variables.add(`?${thingy.value}`);\n }\n }\n else if (Array.isArray(thingy)) {\n for (const entry of thingy)\n findAllVariables(entry);\n }\n else if (thingy && typeof thingy === 'object') {\n for (let key of Object.keys(thingy)) {\n // Some variables are hidden in keys (specifically for VALUES)\n if (key.startsWith('?')) {\n variables.add(key);\n }\n else if (key.startsWith('$')) {\n variables.add(`?${key.slice(1)}`);\n }\n findAllVariables(thingy[key]);\n }\n }\n}\n// 18.2.1\nfunction inScopeVariables(thingy) {\n let inScope = {};\n if (isTriple(thingy)) {\n // Note that this could both be an actual Quad or a SPARQL.js triple (without graph)\n const result = [\n inScopeVariables(thingy.subject),\n inScopeVariables(thingy.predicate),\n inScopeVariables(thingy.object),\n thingy.graph ? inScopeVariables(thingy.graph) : {}\n ];\n Object.assign(inScope, ...result);\n }\n else if (isTerm(thingy)) {\n if (isVariable(thingy))\n inScope[thingy.value] = thingy;\n }\n else if (thingy.type === 'bgp') {\n // Slightly cheating but this is a subset of what we support so is fine\n const quads = thingy.triples;\n Object.assign(inScope, ...quads.map(inScopeVariables));\n }\n else if (thingy.type === 'path') {\n // A path predicate should not have variables but just iterating so we could theoretically support this\n Object.assign(inScope, ...thingy.items.map(inScopeVariables));\n }\n else if (thingy.type === 'group' || thingy.type === 'union' || thingy.type === 'optional') {\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'service' || thingy.type === 'graph') {\n Object.assign(inScope, inScopeVariables(thingy.name));\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'bind') {\n Object.assign(inScope, inScopeVariables(thingy.variable));\n }\n else if (thingy.type === 'values') {\n if (thingy.values.length > 0) {\n const vars = Object.keys(thingy.values[0]).map(v => factory.createTerm(v));\n Object.assign(inScope, ...vars.map(inScopeVariables));\n }\n }\n else if (thingy.type === 'query') {\n if (thingy.queryType === 'SELECT' || thingy.queryType === 'DESCRIBE') {\n if (thingy.where && thingy.variables.some(util_1.default.isWildcard))\n Object.assign(inScope, ...thingy.where.map(inScopeVariables));\n for (const v of thingy.variables) {\n if (isVariable(v))\n Object.assign(inScope, inScopeVariables(v));\n else if (v.variable)\n Object.assign(inScope, inScopeVariables(v.variable));\n }\n if (thingy.queryType === 'SELECT') {\n if (thingy.group) {\n // Grouping can be a VariableExpression, typings are wrong\n for (const g of thingy.group) {\n if (g.variable)\n Object.assign(inScope, inScopeVariables(g.variable));\n }\n }\n if (thingy.values) {\n const values = { type: 'values', values: thingy.values };\n Object.assign(inScope, inScopeVariables(values));\n }\n }\n }\n }\n return inScope;\n}\nfunction translateGraphPattern(thingy) {\n // 18.2.2.1\n // already done by sparql parser\n // 18.2.2.3\n // 18.2.2.4\n // 18.2.2.5\n // In Sparql.js, a group with a single BGP in it is a single object.\n if (thingy.type === 'bgp') {\n return translateBgp(thingy);\n }\n // 18.2.2.6 - GroupOrUnionGraphPattern\n if (thingy.type === 'union')\n return factory.createUnion(thingy.patterns.map((p) => {\n // sparqljs doesn't always indicate the children are groups\n if (p.type !== 'group')\n p = { type: 'group', patterns: [p] };\n return translateGraphPattern(p);\n }));\n // 18.2.2.6 - GraphGraphPattern\n if (thingy.type === 'graph') {\n // Sparql.js combines the group graph pattern and the graph itself in the same object.\n // We split here so the group graph pattern can be interpreted correctly.\n const group = { type: 'group', patterns: thingy.patterns };\n let result = translateGraphPattern(group);\n // Output depends on if we use quads or not\n if (useQuads)\n result = recurseGraph(result, thingy.name);\n else\n result = factory.createGraph(result, thingy.name);\n return result;\n }\n // 18.2.2.6 - InlineData\n if (thingy.type === 'values')\n return translateInlineData(thingy);\n // 18.2.2.6 - SubSelect\n if (thingy.type === 'query')\n return translateQuery(thingy, useQuads, false);\n if (thingy.type === 'group') {\n // 18.2.2.2\n let filters = [];\n let nonfilters = [];\n for (let pattern of thingy.patterns)\n (pattern.type === 'filter' ? filters : nonfilters).push(pattern);\n // 18.2.2.6 - GroupGraphPattern\n let result = nonfilters.reduce(accumulateGroupGraphPattern, factory.createBgp([]));\n // 18.2.2.7\n let expressions = filters.map(filter => translateExpression(filter.expression));\n if (expressions.length > 0)\n result = factory.createFilter(result, expressions.reduce((acc, exp) => factory.createOperatorExpression('&&', [acc, exp])));\n return result;\n }\n throw new Error(`Unexpected type: ${thingy.type}`);\n}\nfunction translateExpression(exp) {\n if (util_1.default.isSimpleTerm(exp))\n return factory.createTermExpression(exp);\n if (util_1.default.isQuad(exp)) {\n if (util_1.default.hasQuadVariables(exp))\n return factory.createOperatorExpression('triple', [\n translateExpression(exp.subject),\n translateExpression(exp.predicate),\n translateExpression(exp.object),\n ]);\n else\n return factory.createTermExpression(exp);\n }\n if (util_1.default.isWildcard(exp))\n return factory.createWildcardExpression();\n if ('aggregation' in exp)\n return factory.createAggregateExpression(exp.aggregation, translateExpression(exp.expression), Boolean(exp.distinct), exp.separator);\n if ('function' in exp)\n // Outdated typings\n return factory.createNamedExpression(exp.function, exp.args.map(translateExpression));\n if ('operator' in exp) {\n if (exp.operator === 'exists' || exp.operator === 'notexists')\n return factory.createExistenceExpression(exp.operator === 'notexists', translateGraphPattern(exp.args[0]));\n if (exp.operator === 'in' || exp.operator === 'notin')\n exp.args = [exp.args[0]].concat(exp.args[1]); // sparql.js uses 2 arguments with the second one being a list\n return factory.createOperatorExpression(exp.operator, exp.args.map(translateExpression));\n }\n throw new Error(`Unknown expression: ${JSON.stringify(exp)}`);\n}\nfunction translateBgp(thingy) {\n let patterns = [];\n let joins = [];\n for (let t of thingy.triples) {\n if ('pathType' in t.predicate) {\n // translatePath returns a mix of Quads and Paths\n let path = translatePath(t);\n for (let p of path) {\n if (p.type === types.PATH) {\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n patterns = [];\n joins.push(p);\n }\n else\n patterns.push(p);\n }\n }\n else\n patterns.push(translateQuad(t));\n }\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n if (joins.length === 1)\n return joins[0];\n return factory.createJoin(joins);\n}\nfunction translatePath(triple) {\n let sub = triple.subject;\n let pred = translatePathPredicate(triple.predicate);\n let obj = triple.object;\n return simplifyPath(sub, pred, obj);\n}\nfunction translatePathPredicate(predicate) {\n if (util_1.default.isSimpleTerm(predicate)) {\n if (predicate.termType === 'NamedNode')\n return factory.createLink(predicate);\n else\n throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(predicate)}`);\n }\n if (predicate.pathType === '^')\n return factory.createInv(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '!') {\n // negation is either over a single predicate or a list of disjuncted properties\n let normals = [];\n let inverted = [];\n let items;\n if ('pathType' in predicate.items[0] && predicate.items[0].pathType === '|')\n items = predicate.items[0].items; // the | element\n else\n items = predicate.items;\n for (let item of items) {\n if (util_1.default.isSimpleTerm(item))\n normals.push(item);\n else if (item.pathType === '^')\n inverted.push(item.items[0]);\n else\n throw new Error(`Unexpected item: ${JSON.stringify(item)}`);\n }\n // NPS elements do not have the LINK function\n let normalElement = factory.createNps(normals);\n let invertedElement = factory.createInv(factory.createNps(inverted));\n if (inverted.length === 0)\n return normalElement;\n if (normals.length === 0)\n return invertedElement;\n return factory.createAlt([normalElement, invertedElement,]);\n }\n if (predicate.pathType === '/')\n return factory.createSeq(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '|')\n return factory.createAlt(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '*')\n return factory.createZeroOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '+')\n return factory.createOneOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '?')\n return factory.createZeroOrOnePath(translatePathPredicate(predicate.items[0]));\n throw new Error(`Unable to translate path expression ${JSON.stringify(predicate)}`);\n}\nfunction simplifyPath(subject, predicate, object) {\n if (predicate.type === types.LINK)\n return [factory.createPattern(subject, predicate.iri, object)];\n if (predicate.type === types.INV)\n return simplifyPath(object, predicate.path, subject);\n if (predicate.type === types.SEQ) {\n let joiner = subject;\n return util_1.default.flatten(predicate.input.map((subOp, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? object : generateFreshVar();\n const simplifiedPath = simplifyPath(joiner, subOp, nextJoiner);\n if (nextJoiner.termType === 'Variable') {\n joiner = nextJoiner;\n }\n return simplifiedPath;\n }));\n }\n return [factory.createPath(subject, predicate, object)];\n}\nfunction generateFreshVar() {\n let v = `?var${varCount++}`;\n if (variables.has(v))\n return generateFreshVar();\n variables.add(v);\n return factory.createTerm(v);\n}\nfunction translateQuad(quad) {\n if ('pathType' in quad.predicate) {\n throw new Error('Trying to translate property path to quad.');\n }\n // Graphs are needed here\n // TODO: investigate if typings are wrong or if we internally add graphs to these\n return factory.createPattern(quad.subject, quad.predicate, quad.object, quad.graph);\n}\nlet typeVals = Object.values(types);\nfunction recurseGraph(thingy, graph, replacement) {\n if (thingy.type === types.GRAPH) {\n if (replacement) {\n // At this point we would lose track of the replacement which would result in incorrect results\n // This would indicate the library is not being used as intended though\n throw new Error('Recursing through nested GRAPH statements with a replacement is impossible.');\n }\n // In case there were nested GRAPH statements that were not recursed yet for some reason\n thingy = recurseGraph(thingy.input, thingy.name);\n }\n else if (thingy.type === types.SERVICE) {\n // Service blocks are not affected by enclosing GRAPH statements, so nothing is modified in this block.\n // See https://github.com/joachimvh/SPARQLAlgebra.js/pull/104#issuecomment-1838016303\n }\n else if (thingy.type === types.BGP)\n thingy.patterns = thingy.patterns.map(quad => {\n if (replacement) {\n if (quad.subject.equals(graph))\n quad.subject = replacement;\n if (quad.predicate.equals(graph))\n quad.predicate = replacement;\n if (quad.object.equals(graph))\n quad.object = replacement;\n }\n if (quad.graph.termType === 'DefaultGraph')\n quad.graph = graph;\n return quad;\n });\n else if (thingy.type === types.PATH) {\n if (replacement) {\n if (thingy.subject.equals(graph))\n thingy.subject = replacement;\n if (thingy.object.equals(graph))\n thingy.object = replacement;\n }\n if (thingy.graph.termType === 'DefaultGraph')\n thingy.graph = graph;\n }\n // need to replace variables in subqueries should the graph also be a variable of the same name\n // unless the subquery projects that variable\n else if (thingy.type === types.PROJECT && !replacement) {\n if (!thingy.variables.some(v => v.equals(graph)))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n // this can happen if the query extends an expression to the name of the graph\n // since the extend happens here there should be no further occurrences of this name\n // if there are it's the same situation as above\n else if (thingy.type === types.EXTEND && !replacement) {\n if (thingy.variable.equals(graph))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n else {\n for (let key of Object.keys(thingy)) {\n if (Array.isArray(thingy[key]))\n thingy[key] = thingy[key].map((x) => recurseGraph(x, graph, replacement));\n else if (typeVals.indexOf(thingy[key].type) >= 0) // can't do instanceof on an interface\n thingy[key] = recurseGraph(thingy[key], graph, replacement);\n else if (replacement && isVariable(thingy[key]) && thingy[key].equals(graph))\n thingy[key] = replacement;\n }\n }\n return thingy;\n}\nfunction accumulateGroupGraphPattern(G, E) {\n if (E.type === 'optional') {\n // optional input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n if (A.type === types.FILTER) {\n G = factory.createLeftJoin(G, A.input, A.expression);\n }\n else\n G = factory.createLeftJoin(G, A);\n }\n else if (E.type === 'minus') {\n // minus input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n G = factory.createMinus(G, A);\n }\n else if (E.type === 'bind')\n G = factory.createExtend(G, E.variable, translateExpression(E.expression));\n else if (E.type === 'service') {\n // transform to group so childnodes get parsed correctly\n const group = { type: 'group', patterns: E.patterns };\n const A = factory.createService(translateGraphPattern(group), E.name, E.silent);\n G = simplifiedJoin(G, A);\n }\n else {\n const A = translateGraphPattern(E);\n G = simplifiedJoin(G, A);\n }\n return G;\n}\nfunction simplifiedJoin(G, A) {\n // Note: this is more simplification than requested in 18.2.2.8, but no reason not to do it.\n if (G.type === types.BGP && A.type === types.BGP)\n G = factory.createBgp([...G.patterns, ...A.patterns]);\n // 18.2.2.8 (simplification)\n else if (G.type === types.BGP && G.patterns.length === 0)\n G = A;\n else if (A.type === types.BGP && A.patterns.length === 0) { } // do nothing\n else\n G = factory.createJoin([G, A]);\n return G;\n}\nfunction translateInlineData(values) {\n let variables = (values.values.length === 0 ? [] : Object.keys(values.values[0])).map(factory.createTerm.bind(factory));\n let bindings = values.values.map((binding) => {\n let keys = Object.keys(binding);\n keys = keys.filter(k => binding[k] !== undefined);\n let map = {};\n for (let key of keys)\n map[key] = binding[key];\n return map;\n });\n return factory.createValues(variables, bindings);\n}\n// --------------------------------------- AGGREGATES\nfunction translateAggregates(query, res) {\n // Typings for ConstructQuery are wrong and missing several fields so we will cast quite often to SelectQuery to have partial typings\n const select = query;\n // 18.2.4.1\n const E = [];\n const A = {};\n select.variables = select.variables && select.variables.map(val => mapAggregate(val, A));\n select.having = select.having && select.having.map(val => mapAggregate(val, A));\n select.order = select.order && select.order.map(val => mapAggregate(val, A));\n // if there are any aggregates or if we have a groupBy (both result in a GROUP)\n if (select.group || Object.keys(A).length > 0) {\n const aggregates = Object.keys(A).map(v => translateBoundAggregate(A[v], factory.createTerm(v)));\n const vars = [];\n if (select.group) {\n for (const e of select.group) {\n if (util_1.default.isSimpleTerm(e.expression)) {\n vars.push(e.expression); // this will always be a var, otherwise sparql would be invalid\n }\n else {\n // Incorrect typings, e can have a variable, see for example group-variable test in sparql.js\n const v = 'variable' in e ? e.variable : generateFreshVar();\n res = factory.createExtend(res, v, translateExpression(e.expression));\n vars.push(v);\n }\n }\n }\n res = factory.createGroup(res, vars, aggregates);\n }\n // 18.2.4.2\n if (select.having)\n for (let filter of select.having)\n res = factory.createFilter(res, translateExpression(filter));\n // 18.2.4.3\n if (query.values)\n res = factory.createJoin([res, translateInlineData(query)]);\n // 18.2.4.4\n let PV = [];\n if (query.queryType === 'SELECT' || query.queryType === 'DESCRIBE') {\n // Sort variables for consistent output\n if (query.variables.some((e) => e && util_1.default.isWildcard(e)))\n PV = Object.values(inScopeVariables(query))\n .sort((left, right) => left.value.localeCompare(right.value));\n else {\n // Wildcard has been filtered out above\n for (let v of query.variables) {\n // can have non-variables with DESCRIBE\n if (isVariable(v) || !('variable' in v))\n PV.push(v);\n else if (v.variable) // ... AS ?x\n {\n PV.push(v.variable);\n E.push(v);\n }\n }\n }\n }\n // TODO: Jena simplifies by having a list of extends\n for (let v of E)\n res = factory.createExtend(res, v.variable, translateExpression(v.expression));\n // 18.2.5\n // not using toList and toMultiset\n // 18.2.5.1\n if (select.order)\n res = factory.createOrderBy(res, select.order.map((exp) => {\n let result = translateExpression(exp.expression);\n if (exp.descending)\n result = factory.createOperatorExpression('desc', [result]);\n return result;\n }));\n // 18.2.5.2\n // construct does not need a project (select, ask and describe do)\n if (query.queryType === 'SELECT')\n // Named nodes are only possible in a DESCRIBE so this cast is safe\n res = factory.createProject(res, PV);\n // 18.2.5.3\n if (select.distinct)\n res = factory.createDistinct(res);\n // 18.2.5.4\n if (select.reduced)\n res = factory.createReduced(res);\n // NEW: support for ask/construct/describe queries\n if (query.queryType === 'CONSTRUCT')\n res = factory.createConstruct(res, (query.template || []).map(translateQuad));\n else if (query.queryType === 'ASK')\n res = factory.createAsk(res);\n else if (query.queryType === 'DESCRIBE')\n res = factory.createDescribe(res, PV);\n // Slicing needs to happen after construct/describe\n // 18.2.5.5\n if (select.offset || select.limit)\n res = factory.createSlice(res, select.offset || 0, select.limit);\n if (select.from)\n res = factory.createFrom(res, select.from.default, select.from.named);\n return res;\n}\n// rewrites some of the input sparql object to make use of aggregate variables\nfunction mapAggregate(thingy, aggregates) {\n if ('type' in thingy && thingy.type === 'aggregate') {\n let found = false;\n let v;\n for (let key of Object.keys(aggregates)) {\n if (equal(aggregates[key], thingy)) {\n v = factory.createTerm(key);\n found = true;\n break;\n }\n }\n if (!found) {\n v = generateFreshVar();\n aggregates[(0, rdf_string_1.termToString)(v)] = thingy;\n }\n return v;\n }\n // non-aggregate expression\n if ('expression' in thingy && thingy.expression)\n return { ...thingy, expression: mapAggregate(thingy.expression, aggregates) };\n if ('args' in thingy && thingy.args)\n return { ...thingy, args: thingy.args.map(subthingy => mapAggregate(subthingy, aggregates)) };\n // Normal variable/wildcard\n return thingy;\n}\nfunction translateBoundAggregate(thingy, v) {\n if (thingy.type !== 'aggregate' || !thingy.aggregation)\n throw new Error(`Unexpected input: ${JSON.stringify(thingy)}`);\n const A = translateExpression(thingy);\n A.variable = v;\n return A;\n}\nfunction translateUpdate(thingy) {\n if (thingy.updates.length === 1)\n return translateSingleUpdate(thingy.updates[0]);\n return factory.createCompositeUpdate(thingy.updates.map(translateSingleUpdate));\n}\nfunction translateSingleUpdate(thingy) {\n if ('type' in thingy) {\n if (thingy.type === 'load')\n return translateUpdateGraphLoad(thingy);\n if (thingy.type === 'clear' || thingy.type === 'create' || thingy.type === 'drop')\n return translateUpdateGraph(thingy);\n if (thingy.type === 'add' || thingy.type === 'copy' || thingy.type === 'move')\n return translateUpdateGraphShortcut(thingy);\n }\n else if (thingy.updateType === 'insertdelete' || thingy.updateType === 'deletewhere' || thingy.updateType === 'delete' || thingy.updateType === 'insert')\n return translateInsertDelete(thingy);\n throw new Error(`Unknown update type ${JSON.stringify(thingy)}`);\n}\nfunction translateInsertDelete(thingy) {\n if (!useQuads)\n throw new Error('INSERT/DELETE operations are only supported with quads option enabled');\n let deleteTriples = [];\n let insertTriples = [];\n let where;\n if (thingy.delete)\n deleteTriples = util_1.default.flatten(thingy.delete.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.insert)\n insertTriples = util_1.default.flatten(thingy.insert.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.where && thingy.where.length > 0) {\n where = translateGraphPattern({ type: 'group', patterns: thingy.where });\n // Wrong typings, see test \"using\" in Sparql.js\n const use = thingy.using;\n if (use)\n where = factory.createFrom(where, use.default, use.named);\n else if (thingy.graph)\n // This is equivalent\n where = recurseGraph(where, thingy.graph);\n }\n else if (thingy.updateType === 'deletewhere' && deleteTriples.length > 0) {\n where = factory.createBgp(deleteTriples);\n }\n return factory.createDeleteInsert(deleteTriples.length > 0 ? deleteTriples : undefined, insertTriples.length > 0 ? insertTriples : undefined, where);\n}\n// UPDATE parsing will always return quads and have no GRAPH elements\nfunction translateUpdateTriplesBlock(thingy, graph) {\n let currentGraph = graph;\n if (thingy.type === 'graph')\n currentGraph = thingy.name;\n let currentTriples = thingy.triples;\n if (currentGraph)\n currentTriples = currentTriples.map(triple => Object.assign(triple, { graph: currentGraph }));\n return currentTriples.map(translateQuad);\n}\nfunction translateUpdateGraph(thingy) {\n let source;\n if (util_1.default.isSimpleTerm(thingy.graph))\n source = thingy.graph;\n else if (thingy.graph.all)\n source = 'ALL';\n else if (thingy.graph.default)\n source = 'DEFAULT';\n else if (thingy.graph.named)\n source = 'NAMED';\n else\n source = thingy.graph.name;\n switch (thingy.type) {\n case 'clear': return factory.createClear(source, thingy.silent);\n case 'create': return factory.createCreate(source, thingy.silent);\n case 'drop': return factory.createDrop(source, thingy.silent);\n }\n}\nfunction translateUpdateGraphLoad(thingy) {\n return factory.createLoad(thingy.source, thingy.destination, thingy.silent);\n}\nfunction translateUpdateGraphShortcut(thingy) {\n const source = thingy.source.default ? 'DEFAULT' : thingy.source.name;\n const destination = thingy.destination.default ? 'DEFAULT' : thingy.destination.name;\n switch (thingy.type) {\n case 'copy': return factory.createCopy(source, destination, thingy.silent);\n case 'move': return factory.createMove(source, destination, thingy.silent);\n case 'add': return factory.createAdd(source, destination, thingy.silent);\n }\n}\nfunction translateBlankNodesToVariables(res) {\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(variables).reduce((acc, variable) => {\n acc[variable] = true;\n return acc;\n }, {});\n return util_1.default.mapOperation(res, {\n [Algebra.types.DELETE_INSERT]: (op) => {\n // Make sure blank nodes remain in the INSERT block, but do update the WHERE block\n return {\n result: factory.createDeleteInsert(op.delete, op.insert, op.where && translateBlankNodesToVariables(op.where)),\n recurse: false,\n };\n },\n [Algebra.types.PATH]: (op, factory) => {\n return {\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.PATTERN]: (op, factory) => {\n return {\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT]: (op) => {\n // Blank nodes in CONSTRUCT templates must be maintained\n return {\n result: factory.createConstruct(translateBlankNodesToVariables(op.input), op.template),\n recurse: false,\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = util_1.default.createUniqueVariable(term.value, variablesRaw, factory.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n}\n//# sourceMappingURL=sparqlAlgebra.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst algebra_1 = require(\"./algebra\");\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst rdf_terms_1 = require(\"rdf-terms\");\nclass Util {\n /**\n * Flattens an array of arrays to an array.\n * @param arr - Array of arrays\n */\n static flatten(arr) {\n return Array.prototype.concat(...arr).filter(x => x);\n }\n /**\n * Outputs a JSON object corresponding to the input algebra-like.\n */\n static objectify(algebra) {\n if (algebra.termType) {\n if (algebra.termType === 'Quad') {\n return {\n type: 'pattern',\n termType: 'Quad',\n subject: Util.objectify(algebra.subject),\n predicate: Util.objectify(algebra.predicate),\n object: Util.objectify(algebra.object),\n graph: Util.objectify(algebra.graph),\n };\n }\n else {\n let result = { termType: algebra.termType, value: algebra.value };\n if (algebra.language)\n result.language = algebra.language;\n if (algebra.datatype)\n result.datatype = Util.objectify(algebra.datatype);\n return result;\n }\n }\n if (Array.isArray(algebra))\n return algebra.map(e => Util.objectify(e));\n if (algebra === Object(algebra)) {\n let result = {};\n for (let key of Object.keys(algebra))\n result[key] = Util.objectify(algebra[key]);\n return result;\n }\n return algebra;\n }\n /**\n * Detects all in-scope variables.\n * In practice this means iterating through the entire algebra tree, finding all variables,\n * and stopping when a project function is found.\n * @param {Operation} op - Input algebra tree.\n * @returns {Variable[]} - List of unique in-scope variables.\n */\n static inScopeVariables(op) {\n const variables = [];\n function addVariable(v) {\n if (!variables.find(v2 => v.value === v2.value))\n variables.push(v);\n }\n function recurseTerm(quad) {\n if (quad.subject.termType === 'Variable')\n addVariable(quad.subject);\n if (quad.predicate.termType === 'Variable')\n addVariable(quad.predicate);\n if (quad.object.termType === 'Variable')\n addVariable(quad.object);\n if (quad.graph.termType === 'Variable')\n addVariable(quad.graph);\n if (quad.subject.termType === 'Quad')\n recurseTerm(quad.subject);\n if (quad.predicate.termType === 'Quad')\n recurseTerm(quad.predicate);\n if (quad.object.termType === 'Quad')\n recurseTerm(quad.object);\n if (quad.graph.termType === 'Quad')\n recurseTerm(quad.graph);\n }\n // https://www.w3.org/TR/sparql11-query/#variableScope\n Util.recurseOperation(op, {\n [algebra_1.types.EXPRESSION]: (op) => {\n if (op.expressionType === algebra_1.expressionTypes.AGGREGATE && op.variable) {\n addVariable(op.variable);\n }\n return true;\n },\n [algebra_1.types.EXTEND]: (op) => {\n addVariable(op.variable);\n return true;\n },\n [algebra_1.types.GRAPH]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.GROUP]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n [algebra_1.types.PATH]: (op) => {\n if (op.subject.termType === 'Variable')\n addVariable(op.subject);\n if (op.object.termType === 'Variable')\n addVariable(op.object);\n if (op.graph.termType === 'Variable')\n addVariable(op.graph);\n if (op.subject.termType === 'Quad')\n recurseTerm(op.subject);\n if (op.object.termType === 'Quad')\n recurseTerm(op.object);\n if (op.graph.termType === 'Quad')\n recurseTerm(op.graph);\n return true;\n },\n [algebra_1.types.PATTERN]: (op) => {\n recurseTerm(op);\n return true;\n },\n [algebra_1.types.PROJECT]: (op) => {\n op.variables.forEach(addVariable);\n return false;\n },\n [algebra_1.types.SERVICE]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.VALUES]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n });\n return variables;\n }\n /**\n * Recurses through the given algebra tree\n * A map of callback functions can be provided for individual Operation types to gather data.\n * The return value of those callbacks should indicate whether recursion should be applied or not.\n * Making modifications will change the original input object.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation) => boolean } callbacks - A map of required callback Operations.\n */\n static recurseOperation(op, callbacks) {\n let result = op;\n let doRecursion = true;\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n doRecursion = callback(op);\n if (!doRecursion)\n return;\n let recurseOp = (op) => Util.recurseOperation(op, callbacks);\n switch (result.type) {\n case algebra_1.types.ALT:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.ASK:\n recurseOp(result.input);\n break;\n case algebra_1.types.BGP:\n result.patterns.forEach(recurseOp);\n break;\n case algebra_1.types.CONSTRUCT:\n recurseOp(result.input);\n result.template.map(recurseOp);\n break;\n case algebra_1.types.DESCRIBE:\n recurseOp(result.input);\n break;\n case algebra_1.types.DISTINCT:\n recurseOp(result.input);\n break;\n case algebra_1.types.EXPRESSION:\n if (result.expressionType === algebra_1.expressionTypes.EXISTENCE) {\n recurseOp(result.input);\n }\n break;\n case algebra_1.types.EXTEND:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FILTER:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FROM:\n recurseOp(result.input);\n break;\n case algebra_1.types.GRAPH:\n recurseOp(result.input);\n break;\n case algebra_1.types.GROUP:\n recurseOp(result.input);\n result.aggregates.forEach(recurseOp);\n break;\n case algebra_1.types.INV:\n recurseOp(result.path);\n break;\n case algebra_1.types.JOIN:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.LEFT_JOIN:\n result.input.map(recurseOp);\n if (result.expression)\n recurseOp(result.expression);\n break;\n case algebra_1.types.LINK:\n break;\n case algebra_1.types.MINUS:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.NOP:\n break;\n case algebra_1.types.NPS:\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ORDER_BY:\n recurseOp(result.input);\n result.expressions.forEach(recurseOp);\n break;\n case algebra_1.types.PATH:\n recurseOp(result.predicate);\n break;\n case algebra_1.types.PATTERN:\n break;\n case algebra_1.types.PROJECT:\n recurseOp(result.input);\n break;\n case algebra_1.types.REDUCED:\n recurseOp(result.input);\n break;\n case algebra_1.types.SEQ:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.SERVICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.SLICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.UNION:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.VALUES:\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n recurseOp(result.path);\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result.updates.forEach(update => recurseOp(update));\n break;\n case algebra_1.types.DELETE_INSERT:\n if (result.delete)\n result.delete.forEach(pattern => recurseOp(pattern));\n if (result.insert)\n result.insert.forEach(pattern => recurseOp(pattern));\n if (result.where)\n recurseOp(result.where);\n break;\n // all of these only have graph IDs as values\n case algebra_1.types.LOAD: break;\n case algebra_1.types.CLEAR: break;\n case algebra_1.types.CREATE: break;\n case algebra_1.types.DROP: break;\n case algebra_1.types.ADD: break;\n case algebra_1.types.MOVE: break;\n case algebra_1.types.COPY: break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Creates a deep copy of the given Operation.\n * Creates shallow copies of the non-Operation values.\n * A map of callback functions can be provided for individual Operation types\n * to specifically modify the given objects before triggering recursion.\n * The return value of those callbacks should indicate whether recursion should be applied to this returned object or not.\n * @param {Operation} op - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapOperation(op, callbacks, factory) {\n let result = op;\n let doRecursion = true;\n let copyMetadata = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[op.type];\n if (callback) {\n // Not sure how to get typing correct for op here\n const recurseResult = callback(op, factory);\n result = recurseResult.result;\n doRecursion = recurseResult.recurse;\n copyMetadata = recurseResult.copyMetadata !== false;\n }\n let toCopyMetadata;\n if (copyMetadata && (result.metadata || op.metadata)) {\n toCopyMetadata = { ...result.metadata, ...op.metadata };\n }\n if (!doRecursion) {\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n // Several casts here might be wrong though depending on the callbacks output\n switch (result.type) {\n case algebra_1.types.ALT:\n result = factory.createAlt(result.input.map(mapOp));\n break;\n case algebra_1.types.ASK:\n result = factory.createAsk(mapOp(result.input));\n break;\n case algebra_1.types.BGP:\n result = factory.createBgp(result.patterns.map(mapOp));\n break;\n case algebra_1.types.CONSTRUCT:\n result = factory.createConstruct(mapOp(result.input), result.template.map(mapOp));\n break;\n case algebra_1.types.DESCRIBE:\n result = factory.createDescribe(mapOp(result.input), result.terms);\n break;\n case algebra_1.types.DISTINCT:\n result = factory.createDistinct(mapOp(result.input));\n break;\n case algebra_1.types.EXPRESSION:\n result = Util.mapExpression(result, callbacks, factory);\n break;\n case algebra_1.types.EXTEND:\n result = factory.createExtend(mapOp(result.input), result.variable, mapOp(result.expression));\n break;\n case algebra_1.types.FILTER:\n result = factory.createFilter(mapOp(result.input), mapOp(result.expression));\n break;\n case algebra_1.types.FROM:\n result = factory.createFrom(mapOp(result.input), [...result.default], [...result.named]);\n break;\n case algebra_1.types.GRAPH:\n result = factory.createGraph(mapOp(result.input), result.name);\n break;\n case algebra_1.types.GROUP:\n result = factory.createGroup(mapOp(result.input), [].concat(result.variables), result.aggregates.map(mapOp));\n break;\n case algebra_1.types.INV:\n result = factory.createInv(mapOp(result.path));\n break;\n case algebra_1.types.JOIN:\n result = factory.createJoin(result.input.map(mapOp));\n break;\n case algebra_1.types.LEFT_JOIN:\n result = factory.createLeftJoin(mapOp(result.input[0]), mapOp(result.input[1]), result.expression ? mapOp(result.expression) : undefined);\n break;\n case algebra_1.types.LINK:\n result = factory.createLink(result.iri);\n break;\n case algebra_1.types.MINUS:\n result = factory.createMinus(mapOp(result.input[0]), mapOp(result.input[1]));\n break;\n case algebra_1.types.NOP:\n result = factory.createNop();\n break;\n case algebra_1.types.NPS:\n result = factory.createNps([].concat(result.iris));\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n result = factory.createOneOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ORDER_BY:\n result = factory.createOrderBy(mapOp(result.input), result.expressions.map(mapOp));\n break;\n case algebra_1.types.PATH:\n result = factory.createPath(result.subject, mapOp(result.predicate), result.object, result.graph);\n break;\n case algebra_1.types.PATTERN:\n result = factory.createPattern(result.subject, result.predicate, result.object, result.graph);\n break;\n case algebra_1.types.PROJECT:\n result = factory.createProject(mapOp(result.input), [...result.variables]);\n break;\n case algebra_1.types.REDUCED:\n result = factory.createReduced(mapOp(result.input));\n break;\n case algebra_1.types.SEQ:\n result = factory.createSeq(result.input.map(mapOp));\n break;\n case algebra_1.types.SERVICE:\n result = factory.createService(mapOp(result.input), result.name, result.silent);\n break;\n case algebra_1.types.SLICE:\n result = factory.createSlice(mapOp(result.input), result.start, result.length);\n break;\n case algebra_1.types.UNION:\n result = factory.createUnion(result.input.map(mapOp));\n break;\n case algebra_1.types.VALUES:\n result = factory.createValues([].concat(result.variables), result.bindings.map(b => Object.assign({}, b)));\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n result = factory.createZeroOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n result = factory.createZeroOrOnePath(mapOp(result.path));\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result = factory.createCompositeUpdate(result.updates.map(mapOp));\n break;\n case algebra_1.types.DELETE_INSERT:\n result = factory.createDeleteInsert(result.delete ? result.delete.map(mapOp) : undefined, result.insert ? result.insert.map(mapOp) : undefined, result.where ? mapOp(result.where) : undefined);\n break;\n case algebra_1.types.LOAD:\n result = factory.createLoad(result.source, result.destination, result.silent);\n break;\n case algebra_1.types.CLEAR:\n result = factory.createClear(result.source, result.silent);\n break;\n case algebra_1.types.CREATE:\n result = factory.createCreate(result.source, result.silent);\n break;\n case algebra_1.types.DROP:\n result = factory.createDrop(result.source, result.silent);\n break;\n case algebra_1.types.ADD:\n result = factory.createAdd(result.source, result.destination);\n break;\n case algebra_1.types.MOVE:\n result = factory.createMove(result.source, result.destination);\n break;\n case algebra_1.types.COPY:\n result = factory.createCopy(result.source, result.destination);\n break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n /**\n * Similar to the {@link mapOperation} function but specifically for expressions.\n * Both functions call each other while copying.\n * Should not be called directly since it does not execute the callbacks, these happen in {@link mapOperation}.\n * @param {Expression} expr - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapExpression(expr, callbacks, factory) {\n let result = expr;\n let doRecursion = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[expr.expressionType];\n if (callback)\n ({ result, recurse: doRecursion } = callback(expr, factory));\n if (!doRecursion)\n return result;\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n switch (expr.expressionType) {\n case algebra_1.expressionTypes.AGGREGATE:\n if (expr.variable) {\n return factory.createBoundAggregate(expr.variable, expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n }\n return factory.createAggregateExpression(expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n case algebra_1.expressionTypes.EXISTENCE:\n return factory.createExistenceExpression(expr.not, mapOp(expr.input));\n case algebra_1.expressionTypes.NAMED:\n return factory.createNamedExpression(expr.name, expr.args.map(mapOp));\n case algebra_1.expressionTypes.OPERATOR:\n return factory.createOperatorExpression(expr.operator, expr.args.map(mapOp));\n case algebra_1.expressionTypes.TERM:\n return factory.createTermExpression(expr.term);\n case algebra_1.expressionTypes.WILDCARD:\n return factory.createWildcardExpression();\n default: throw new Error(`Unknown Expression type ${expr.expressionType}`);\n }\n }\n /**\n * Creates a deep clone of the operation.\n * This is syntactic sugar for calling {@link mapOperation} without callbacks.\n * @param {Operation} op - The operation to copy.\n * @returns {Operation} - The deep copy.\n */\n static cloneOperation(op) {\n return Util.mapOperation(op, {});\n }\n /**\n * Creates a deep clone of the expression.\n * This is syntactic sugar for calling {@link mapExpression} without callbacks.\n * @param {Expression} expr - The operation to copy.\n * @returns {Expression} - The deep copy.\n */\n static cloneExpression(expr) {\n return Util.mapExpression(expr, {});\n }\n static createUniqueVariable(label, variables, dataFactory) {\n let counter = 0;\n let labelLoop = label;\n while (variables[labelLoop]) {\n labelLoop = `${label}${counter++}`;\n }\n return dataFactory.variable(labelLoop);\n }\n // separate terms from wildcard since we handle them differently\n static isSimpleTerm(term) {\n return term.termType !== undefined && term.termType !== 'Quad' && term.termType !== 'Wildcard';\n }\n static isQuad(term) {\n return term.termType === 'Quad';\n }\n static hasQuadVariables(quad) {\n return (0, rdf_terms_1.someTermsNested)(quad, term => term.termType === 'Variable');\n }\n static isWildcard(term) {\n return term.termType === 'Wildcard';\n }\n}\nexports.default = Util;\n//# sourceMappingURL=util.js.map","var XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer';\nvar XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';\n\nfunction Generator(options) {\n this._options = options = options || {};\n\n var prefixes = options.prefixes || {};\n this._prefixByIri = {};\n var prefixIris = [];\n for (var prefix in prefixes) {\n var iri = prefixes[prefix];\n if (isString(iri)) {\n this._prefixByIri[iri] = prefix;\n prefixIris.push(iri);\n }\n }\n var iriList = prefixIris.join('|').replace(/[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n this._prefixRegex = new RegExp('^(' + iriList + ')([a-zA-Z][\\\\-_a-zA-Z0-9]*)$');\n this._usedPrefixes = {};\n this._sparqlStar = options.sparqlStar;\n this._indent = isString(options.indent) ? options.indent : ' ';\n this._newline = isString(options.newline) ? options.newline : '\\n';\n this._explicitDatatype = Boolean(options.explicitDatatype);\n}\n\n// Converts the parsed query object into a SPARQL query\nGenerator.prototype.toQuery = function (q) {\n var query = '';\n\n if (q.queryType)\n query += q.queryType.toUpperCase() + ' ';\n if (q.reduced)\n query += 'REDUCED ';\n if (q.distinct)\n query += 'DISTINCT ';\n\n if (q.variables){\n query += mapJoin(q.variables, undefined, function (variable) {\n return isTerm(variable) ? this.toEntity(variable) :\n '(' + this.toExpression(variable.expression) + ' AS ' + variableToString(variable.variable) + ')';\n }, this) + ' ';\n }\n else if (q.template)\n query += this.group(q.template, true) + this._newline;\n\n if (q.from)\n query += this.graphs('FROM ', q.from.default) + this.graphs('FROM NAMED ', q.from.named);\n if (q.where)\n query += 'WHERE ' + this.group(q.where, true) + this._newline;\n\n if (q.updates)\n query += mapJoin(q.updates, ';' + this._newline, this.toUpdate, this);\n\n if (q.group)\n query += 'GROUP BY ' + mapJoin(q.group, undefined, function (it) {\n var result = isTerm(it.expression)\n ? this.toEntity(it.expression)\n : '(' + this.toExpression(it.expression) + ')';\n return it.variable ? '(' + result + ' AS ' + variableToString(it.variable) + ')' : result;\n }, this) + this._newline;\n if (q.having)\n query += 'HAVING (' + mapJoin(q.having, undefined, this.toExpression, this) + ')' + this._newline;\n if (q.order)\n query += 'ORDER BY ' + mapJoin(q.order, undefined, function (it) {\n var expr = '(' + this.toExpression(it.expression) + ')';\n return !it.descending ? expr : 'DESC ' + expr;\n }, this) + this._newline;\n\n if (q.offset)\n query += 'OFFSET ' + q.offset + this._newline;\n if (q.limit)\n query += 'LIMIT ' + q.limit + this._newline;\n\n if (q.values)\n query += this.values(q);\n\n // stringify prefixes at the end to mark used ones\n query = this.baseAndPrefixes(q) + query;\n return query.trim();\n};\n\nGenerator.prototype.baseAndPrefixes = function (q) {\n var base = q.base ? ('BASE <' + q.base + '>' + this._newline) : '';\n var prefixes = '';\n for (var key in q.prefixes) {\n if (this._options.allPrefixes || this._usedPrefixes[key])\n prefixes += 'PREFIX ' + key + ': <' + q.prefixes[key] + '>' + this._newline;\n }\n return base + prefixes;\n};\n\n// Converts the parsed SPARQL pattern into a SPARQL pattern\nGenerator.prototype.toPattern = function (pattern) {\n var type = pattern.type || (pattern instanceof Array) && 'array' ||\n (pattern.subject && pattern.predicate && pattern.object ? 'triple' : '');\n if (!(type in this))\n throw new Error('Unknown entry type: ' + type);\n return this[type](pattern);\n};\n\nGenerator.prototype.triple = function (t) {\n return this.toEntity(t.subject) + ' ' + this.toEntity(t.predicate) + ' ' + this.toEntity(t.object) + '.';\n};\n\nGenerator.prototype.array = function (items) {\n return mapJoin(items, this._newline, this.toPattern, this);\n};\n\nGenerator.prototype.bgp = function (bgp) {\n return this.encodeTriples(bgp.triples);\n};\n\nGenerator.prototype.encodeTriples = function (triples) {\n if (!triples.length)\n return '';\n\n var parts = [], subject = undefined, predicate = undefined;\n for (var i = 0; i < triples.length; i++) {\n var triple = triples[i];\n // Triple with different subject\n if (!equalTerms(triple.subject, subject)) {\n // Terminate previous triple\n if (subject)\n parts.push('.' + this._newline);\n subject = triple.subject;\n predicate = triple.predicate;\n parts.push(this.toEntity(subject), ' ', this.toEntity(predicate));\n }\n // Triple with same subject but different predicate\n else if (!equalTerms(triple.predicate, predicate)) {\n predicate = triple.predicate;\n parts.push(';' + this._newline, this._indent, this.toEntity(predicate));\n }\n // Triple with same subject and predicate\n else {\n parts.push(',');\n }\n parts.push(' ', this.toEntity(triple.object));\n }\n parts.push('.');\n\n return parts.join('');\n}\n\nGenerator.prototype.graph = function (graph) {\n return 'GRAPH ' + this.toEntity(graph.name) + ' ' + this.group(graph);\n};\n\nGenerator.prototype.graphs = function (keyword, graphs) {\n return !graphs || graphs.length === 0 ? '' :\n mapJoin(graphs, '', function (g) { return keyword + this.toEntity(g) + this._newline; }, this)\n}\n\nGenerator.prototype.group = function (group, inline) {\n group = inline !== true ? this.array(group.patterns || group.triples)\n : this.toPattern(group.type !== 'group' ? group : group.patterns);\n return group.indexOf(this._newline) === -1 ? '{ ' + group + ' }' : '{' + this._newline + this.indent(group) + this._newline + '}';\n};\n\nGenerator.prototype.query = function (query) {\n return this.toQuery(query);\n};\n\nGenerator.prototype.filter = function (filter) {\n return 'FILTER(' + this.toExpression(filter.expression) + ')';\n};\n\nGenerator.prototype.bind = function (bind) {\n return 'BIND(' + this.toExpression(bind.expression) + ' AS ' + variableToString(bind.variable) + ')';\n};\n\nGenerator.prototype.optional = function (optional) {\n return 'OPTIONAL ' + this.group(optional);\n};\n\nGenerator.prototype.union = function (union) {\n return mapJoin(union.patterns, this._newline + 'UNION' + this._newline, function (p) { return this.group(p, true); }, this);\n};\n\nGenerator.prototype.minus = function (minus) {\n return 'MINUS ' + this.group(minus);\n};\n\nGenerator.prototype.values = function (valuesList) {\n // Gather unique keys\n var keys = Object.keys(valuesList.values.reduce(function (keyHash, values) {\n for (var key in values) keyHash[key] = true;\n return keyHash;\n }, {}));\n // Check whether simple syntax can be used\n var lparen, rparen;\n if (keys.length === 1) {\n lparen = rparen = '';\n } else {\n lparen = '(';\n rparen = ')';\n }\n // Create value rows\n return 'VALUES ' + lparen + keys.join(' ') + rparen + ' {' + this._newline +\n mapJoin(valuesList.values, this._newline, function (values) {\n return ' ' + lparen + mapJoin(keys, undefined, function (key) {\n return values[key] ? this.toEntity(values[key]) : 'UNDEF';\n }, this) + rparen;\n }, this) + this._newline + '}';\n};\n\nGenerator.prototype.service = function (service) {\n return 'SERVICE ' + (service.silent ? 'SILENT ' : '') + this.toEntity(service.name) + ' ' +\n this.group(service);\n};\n\n// Converts the parsed expression object into a SPARQL expression\nGenerator.prototype.toExpression = function (expr) {\n if (isTerm(expr)) {\n return this.toEntity(expr);\n }\n switch (expr.type.toLowerCase()) {\n case 'aggregate':\n return expr.aggregation.toUpperCase() +\n '(' + (expr.distinct ? 'DISTINCT ' : '') + this.toExpression(expr.expression) +\n (typeof expr.separator === 'string' ? '; SEPARATOR = ' + '\"' + expr.separator.replace(escape, escapeReplacer) + '\"' : '') + ')';\n case 'functioncall':\n return this.toEntity(expr.function) + '(' + mapJoin(expr.args, ', ', this.toExpression, this) + ')';\n case 'operation':\n var operator = expr.operator.toUpperCase(), args = expr.args || [];\n switch (expr.operator.toLowerCase()) {\n // Infix operators\n case '<':\n case '>':\n case '>=':\n case '<=':\n case '&&':\n case '||':\n case '=':\n case '!=':\n case '+':\n case '-':\n case '*':\n case '/':\n return (isTerm(args[0]) ? this.toEntity(args[0]) : '(' + this.toExpression(args[0]) + ')') +\n ' ' + operator + ' ' +\n (isTerm(args[1]) ? this.toEntity(args[1]) : '(' + this.toExpression(args[1]) + ')');\n // Unary operators\n case '!':\n return '!(' + this.toExpression(args[0]) + ')';\n case 'uplus':\n return '+(' + this.toExpression(args[0]) + ')';\n case 'uminus':\n return '-(' + this.toExpression(args[0]) + ')';\n // IN and NOT IN\n case 'notin':\n operator = 'NOT IN';\n case 'in':\n return this.toExpression(args[0]) + ' ' + operator +\n '(' + (isString(args[1]) ? args[1] : mapJoin(args[1], ', ', this.toExpression, this)) + ')';\n // EXISTS and NOT EXISTS\n case 'notexists':\n operator = 'NOT EXISTS';\n case 'exists':\n return operator + ' ' + this.group(args[0], true);\n // Other expressions\n default:\n return operator + '(' + mapJoin(args, ', ', this.toExpression, this) + ')';\n }\n default:\n throw new Error('Unknown expression type: ' + expr.type);\n }\n};\n\n// Converts the parsed entity (or property path) into a SPARQL entity\nGenerator.prototype.toEntity = function (value) {\n if (isTerm(value)) {\n switch (value.termType) {\n // variable, * selector, or blank node\n case 'Wildcard':\n return '*';\n case 'Variable':\n return variableToString(value);\n case 'BlankNode':\n return '_:' + value.value;\n // literal\n case 'Literal':\n var lexical = value.value || '', language = value.language || '', datatype = value.datatype;\n value = '\"' + lexical.replace(escape, escapeReplacer) + '\"';\n if (language){\n value += '@' + language;\n } else if (datatype) {\n // Abbreviate literals when possible\n if (!this._explicitDatatype) {\n switch (datatype.value) {\n case XSD_STRING:\n return value;\n case XSD_INTEGER:\n if (/^\\d+$/.test(lexical))\n // Add space to avoid confusion with decimals in broken parsers\n return lexical + ' ';\n }\n }\n value += '^^' + this.encodeIRI(datatype.value);\n }\n return value;\n case 'Quad':\n if (!this._sparqlStar)\n throw new Error('SPARQL* support is not enabled');\n\n if (value.graph && value.graph.termType !== \"DefaultGraph\") {\n return '<< GRAPH ' +\n this.toEntity(value.graph) +\n ' { ' +\n this.toEntity(value.subject) + ' ' +\n this.toEntity(value.predicate) + ' ' +\n this.toEntity(value.object) +\n ' } ' +\n ' >>'\n }\n else {\n return (\n '<< ' +\n this.toEntity(value.subject) + ' ' +\n this.toEntity(value.predicate) + ' ' +\n this.toEntity(value.object) +\n ' >>'\n );\n }\n // IRI\n default:\n return this.encodeIRI(value.value);\n }\n }\n // property path\n else {\n var items = value.items.map(this.toEntity, this), path = value.pathType;\n switch (path) {\n // prefix operator\n case '^':\n case '!':\n return path + items[0];\n // postfix operator\n case '*':\n case '+':\n case '?':\n return '(' + items[0] + path + ')';\n // infix operator\n default:\n return '(' + items.join(path) + ')';\n }\n }\n};\nvar escape = /[\"\\\\\\t\\n\\r\\b\\f]/g,\n escapeReplacer = function (c) { return escapeReplacements[c]; },\n escapeReplacements = { '\\\\': '\\\\\\\\', '\"': '\\\\\"', '\\t': '\\\\t',\n '\\n': '\\\\n', '\\r': '\\\\r', '\\b': '\\\\b', '\\f': '\\\\f' };\n\n// Represent the IRI, as a prefixed name when possible\nGenerator.prototype.encodeIRI = function (iri) {\n var prefixMatch = this._prefixRegex.exec(iri);\n if (prefixMatch) {\n var prefix = this._prefixByIri[prefixMatch[1]];\n this._usedPrefixes[prefix] = true;\n return prefix + ':' + prefixMatch[2];\n }\n return '<' + iri + '>';\n};\n\n// Converts the parsed update object into a SPARQL update clause\nGenerator.prototype.toUpdate = function (update) {\n switch (update.type || update.updateType) {\n case 'load':\n return 'LOAD' + (update.source ? ' ' + this.toEntity(update.source) : '') +\n (update.destination ? ' INTO GRAPH ' + this.toEntity(update.destination) : '');\n case 'insert':\n return 'INSERT DATA ' + this.group(update.insert, true);\n case 'delete':\n return 'DELETE DATA ' + this.group(update.delete, true);\n case 'deletewhere':\n return 'DELETE WHERE ' + this.group(update.delete, true);\n case 'insertdelete':\n return (update.graph ? 'WITH ' + this.toEntity(update.graph) + this._newline : '') +\n (update.delete.length ? 'DELETE ' + this.group(update.delete, true) + this._newline : '') +\n (update.insert.length ? 'INSERT ' + this.group(update.insert, true) + this._newline : '') +\n (update.using ? this.graphs('USING ', update.using.default) : '') +\n (update.using ? this.graphs('USING NAMED ', update.using.named) : '') +\n 'WHERE ' + this.group(update.where, true);\n case 'add':\n case 'copy':\n case 'move':\n return update.type.toUpperCase()+ ' ' + (update.silent ? 'SILENT ' : '') + (update.source.default ? 'DEFAULT' : this.toEntity(update.source.name)) +\n ' TO ' + this.toEntity(update.destination.name);\n case 'create':\n case 'clear':\n case 'drop':\n return update.type.toUpperCase() + (update.silent ? ' SILENT ' : ' ') + (\n update.graph.default ? 'DEFAULT' :\n update.graph.named ? 'NAMED' :\n update.graph.all ? 'ALL' :\n ('GRAPH ' + this.toEntity(update.graph.name))\n );\n default:\n throw new Error('Unknown update query type: ' + update.type);\n }\n};\n\n// Indents each line of the string\nGenerator.prototype.indent = function(text) { return text.replace(/^/gm, this._indent); }\n\nfunction variableToString(variable){\n return '?' + variable.value;\n}\n\n// Checks whether the object is a string\nfunction isString(object) { return typeof object === 'string'; }\n\n// Checks whether the object is a Term\nfunction isTerm(object) {\n return typeof object.termType === 'string';\n}\n\n// Checks whether term1 and term2 are equivalent without `.equals()` prototype method\nfunction equalTerms(term1, term2) {\n if (!term1 || !isTerm(term1)) { return false; }\n if (!term2 || !isTerm(term2)) { return false; }\n if (term1.termType !== term2.termType) { return false; }\n switch (term1.termType) {\n case 'Literal':\n return term1.value === term2.value\n && term1.language === term2.language\n && equalTerms(term1.datatype, term2.datatype);\n case 'Quad':\n return equalTerms(term1.subject, term2.subject)\n && equalTerms(term1.predicate, term2.predicate)\n && equalTerms(term1.object, term2.object)\n && equalTerms(term1.graph, term2.graph);\n default:\n return term1.value === term2.value;\n }\n}\n\n// Maps the array with the given function, and joins the results using the separator\nfunction mapJoin(array, sep, func, self) {\n return array.map(func, self).join(isString(sep) ? sep : ' ');\n}\n\n/**\n * @param options {\n * allPrefixes: boolean,\n * indentation: string,\n * newline: string\n * }\n */\nmodule.exports = function SparqlGenerator(options = {}) {\n return {\n stringify: function (query) {\n var currentOptions = Object.create(options);\n currentOptions.prefixes = query.prefixes;\n return new Generator(currentOptions).toQuery(query);\n },\n createGenerator: function() { return new Generator(options); }\n };\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar SparqlParser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,12,13,15,16,24,32,36,41,45,100,110,113,115,116,123,126,131,197,224,229,308,329,330,331,332,333],$V1=[2,247],$V2=[100,110,113,115,116,123,126,131,329,330,331,332,333],$V3=[2,409],$V4=[1,18],$V5=[1,27],$V6=[13,16,45,197,224,229,308],$V7=[28,29,53],$V8=[28,53],$V9=[1,42],$Va=[1,45],$Vb=[1,41],$Vc=[1,44],$Vd=[123,126],$Ve=[1,67],$Vf=[39,45,87],$Vg=[13,16,45,197,224,308],$Vh=[1,87],$Vi=[2,281],$Vj=[1,86],$Vk=[13,16,45,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vl=[6,28,29,53,63,70,73,81,83,85],$Vm=[6,13,16,28,29,53,63,70,73,81,83,85,87,308],$Vn=[6,13,16,28,29,45,53,63,70,73,81,82,83,85,87,89,197,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314],$Vo=[6,13,16,28,29,31,39,45,47,48,53,63,70,73,81,82,83,85,87,89,109,112,121,123,126,128,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,337,338,340,341,342,343,344,345,346],$Vp=[13,16,308],$Vq=[112,132,327,334],$Vr=[13,16,112,132,308],$Vs=[1,111],$Vt=[1,117],$Vu=[112,132,327,328,334],$Vv=[13,16,112,132,308,328],$Vw=[28,29,45,53,87],$Vx=[1,138],$Vy=[1,151],$Vz=[1,128],$VA=[1,127],$VB=[1,129],$VC=[1,140],$VD=[1,141],$VE=[1,142],$VF=[1,143],$VG=[1,144],$VH=[1,145],$VI=[1,147],$VJ=[1,148],$VK=[2,457],$VL=[1,158],$VM=[1,159],$VN=[1,160],$VO=[1,152],$VP=[1,153],$VQ=[1,156],$VR=[1,171],$VS=[1,172],$VT=[1,173],$VU=[1,174],$VV=[1,175],$VW=[1,176],$VX=[1,167],$VY=[1,168],$VZ=[1,169],$V_=[1,170],$V$=[1,157],$V01=[1,166],$V11=[1,161],$V21=[1,162],$V31=[1,163],$V41=[1,164],$V51=[1,165],$V61=[6,13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],$V71=[1,195],$V81=[6,31,73,81,83,85],$V91=[2,285],$Va1=[1,199],$Vb1=[1,201],$Vc1=[6,31,70,73,81,83,85],$Vd1=[2,283],$Ve1=[1,207],$Vf1=[1,218],$Vg1=[1,223],$Vh1=[1,219],$Vi1=[1,225],$Vj1=[1,226],$Vk1=[1,224],$Vl1=[6,63,70,73,81,83,85],$Vm1=[1,236],$Vn1=[2,334],$Vo1=[1,243],$Vp1=[1,241],$Vq1=[6,193],$Vr1=[2,349],$Vs1=[2,339],$Vt1=[28,128],$Vu1=[47,48,193,272],$Vv1=[47,48,193,242,272],$Vw1=[47,48,193,242,246,272],$Vx1=[47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,341,342,343,344,345,346],$Vy1=[39,47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,338,341,342,343,344,345,346],$Vz1=[1,271],$VA1=[1,270],$VB1=[6,13,16,29,31,39,45,47,48,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,338,341,342,343,344,345,346,347,348,349,350,351],$VC1=[1,281],$VD1=[1,280],$VE1=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],$VF1=[45,89],$VG1=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],$VH1=[13,16,31,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$VI1=[31,89],$VJ1=[48,87],$VK1=[6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338],$VL1=[6,13,16,39,45,48,82,87,89,231,263,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338,340],$VM1=[1,313],$VN1=[6,85],$VO1=[6,31,81,83,85],$VP1=[2,361],$VQ1=[2,353],$VR1=[1,343],$VS1=[31,112,335],$VT1=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$VU1=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335],$VV1=[6,109,193],$VW1=[31,112],$VX1=[13,16,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],$VY1=[1,390],$VZ1=[1,391],$V_1=[13,16,87,197,308,314],$V$1=[13,16,39,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],$V02=[1,417],$V12=[1,418],$V22=[13,16,48,197,229,308],$V32=[6,31,85],$V42=[6,13,16,31,45,73,81,83,85,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$V52=[6,13,16,29,31,45,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,231,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,346,347,348,349,350,351],$V62=[29,31,85,112,159,160,161,163,164],$V72=[1,443],$V82=[1,444],$V92=[1,449],$Va2=[31,112,193,232,318,335],$Vb2=[13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vc2=[13,16,31,45,48,82,87,89,112,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Vd2=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Ve2=[13,16,31,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$Vf2=[31,45],$Vg2=[1,507],$Vh2=[1,508],$Vi2=[6,13,16,29,31,39,45,47,48,63,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,336,338,341,342,343,344,345,346,347,348,349,350,351],$Vj2=[29,31,85,112,159,160,161,163,164,335],$Vk2=[6,13,16,31,45,70,73,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$Vl2=[13,16,31,45,48,82,87,89,112,193,197,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Vm2=[2,352],$Vn2=[13,16,197,308,314],$Vo2=[1,565],$Vp2=[6,13,16,31,45,76,78,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$Vq2=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vr2=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],$Vs2=[13,16,87,308],$Vt2=[2,364],$Vu2=[29,31,85,112,159,160,161,163,164,193,232,318,335],$Vv2=[31,112,193,232,272,318,335],$Vw2=[2,359],$Vx2=[13,16,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$Vy2=[29,31,85,112,159,160,161,163,164,193,232,272,318,335],$Vz2=[13,16,31,45,82,87,89,112,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$VA2=[2,347];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"QueryOrUpdate\":3,\"Prologue\":4,\"QueryOrUpdate_group0\":5,\"EOF\":6,\"Query\":7,\"Qry\":8,\"Query_option0\":9,\"Prologue_repetition0\":10,\"BaseDecl\":11,\"BASE\":12,\"IRIREF\":13,\"PrefixDecl\":14,\"PREFIX\":15,\"PNAME_NS\":16,\"SelectClauseWildcard\":17,\"Qry_repetition0\":18,\"WhereClause\":19,\"SolutionModifierNoGroup\":20,\"SelectClauseVars\":21,\"Qry_repetition1\":22,\"SolutionModifier\":23,\"CONSTRUCT\":24,\"ConstructTemplate\":25,\"Qry_repetition2\":26,\"Qry_repetition3\":27,\"WHERE\":28,\"{\":29,\"Qry_option0\":30,\"}\":31,\"DESCRIBE\":32,\"Qry_group0\":33,\"Qry_repetition4\":34,\"Qry_option1\":35,\"ASK\":36,\"Qry_repetition5\":37,\"SelectClauseBase\":38,\"*\":39,\"SelectClauseVars_repetition_plus0\":40,\"SELECT\":41,\"SelectClauseBase_option0\":42,\"SelectClauseItem\":43,\"Var\":44,\"(\":45,\"Expression\":46,\"AS\":47,\")\":48,\"SubSelect\":49,\"SubSelect_option0\":50,\"SubSelect_option1\":51,\"DatasetClause\":52,\"FROM\":53,\"DatasetClause_option0\":54,\"iri\":55,\"WhereClause_option0\":56,\"GroupGraphPattern\":57,\"SolutionModifier_option0\":58,\"SolutionModifierNoGroup_option0\":59,\"SolutionModifierNoGroup_option1\":60,\"SolutionModifierNoGroup_option2\":61,\"GroupClause\":62,\"GROUP\":63,\"BY\":64,\"GroupClause_repetition_plus0\":65,\"GroupCondition\":66,\"BuiltInCall\":67,\"FunctionCall\":68,\"HavingClause\":69,\"HAVING\":70,\"HavingClause_repetition_plus0\":71,\"OrderClause\":72,\"ORDER\":73,\"OrderClause_repetition_plus0\":74,\"OrderCondition\":75,\"ASC\":76,\"BrackettedExpression\":77,\"DESC\":78,\"Constraint\":79,\"LimitOffsetClauses\":80,\"LIMIT\":81,\"INTEGER\":82,\"OFFSET\":83,\"ValuesClause\":84,\"VALUES\":85,\"InlineData\":86,\"VAR\":87,\"InlineData_repetition0\":88,\"NIL\":89,\"InlineData_repetition1\":90,\"InlineData_repetition_plus2\":91,\"InlineData_repetition3\":92,\"DataBlock\":93,\"DataBlockValueList\":94,\"DataBlockValueList_repetition_plus0\":95,\"Update\":96,\"Update_repetition0\":97,\"Update1\":98,\"Update_option0\":99,\"LOAD\":100,\"Update1_option0\":101,\"Update1_option1\":102,\"Update1_group0\":103,\"Update1_option2\":104,\"GraphRefAll\":105,\"Update1_group1\":106,\"Update1_option3\":107,\"GraphOrDefault\":108,\"TO\":109,\"CREATE\":110,\"Update1_option4\":111,\"GRAPH\":112,\"INSERTDATA\":113,\"QuadPattern\":114,\"DELETEDATA\":115,\"DELETEWHERE\":116,\"Update1_option5\":117,\"InsertDeleteClause\":118,\"Update1_repetition0\":119,\"IntoGraphClause\":120,\"INTO\":121,\"GraphRef\":122,\"DELETE\":123,\"InsertDeleteClause_option0\":124,\"InsertClause\":125,\"INSERT\":126,\"UsingClause\":127,\"USING\":128,\"UsingClause_option0\":129,\"WithClause\":130,\"WITH\":131,\"DEFAULT\":132,\"GraphOrDefault_option0\":133,\"GraphRefAll_group0\":134,\"Quads\":135,\"Quads_option0\":136,\"Quads_repetition0\":137,\"QuadsNotTriples\":138,\"VarOrIri\":139,\"QuadsNotTriples_option0\":140,\"QuadsNotTriples_option1\":141,\"QuadsNotTriples_option2\":142,\"TriplesTemplate\":143,\"TriplesTemplate_repetition0\":144,\"TriplesSameSubject\":145,\"TriplesTemplate_option0\":146,\"GroupGraphPatternSub\":147,\"GroupGraphPatternSub_option0\":148,\"GroupGraphPatternSub_repetition0\":149,\"GroupGraphPatternSubTail\":150,\"GraphPatternNotTriples\":151,\"GroupGraphPatternSubTail_option0\":152,\"GroupGraphPatternSubTail_option1\":153,\"TriplesBlock\":154,\"TriplesBlock_repetition0\":155,\"TriplesSameSubjectPath\":156,\"TriplesBlock_option0\":157,\"GroupOrUnionGraphPattern\":158,\"OPTIONAL\":159,\"MINUS\":160,\"SERVICE\":161,\"GraphPatternNotTriples_option0\":162,\"FILTER\":163,\"BIND\":164,\"InlineDataOneVar\":165,\"InlineDataFull\":166,\"InlineDataOneVar_repetition0\":167,\"InlineDataFull_repetition0\":168,\"InlineDataFull_repetition_plus1\":169,\"InlineDataFull_repetition2\":170,\"DataBlockValue\":171,\"Literal\":172,\"QuotedTriple\":173,\"UNDEF\":174,\"GroupOrUnionGraphPattern_repetition0\":175,\"ArgList\":176,\"ArgList_option0\":177,\"ArgList_repetition0\":178,\"ExpressionList\":179,\"ExpressionList_repetition0\":180,\"ConstructTemplate_option0\":181,\"ConstructTriples\":182,\"ConstructTriples_repetition0\":183,\"ConstructTriples_option0\":184,\"VarOrTermOrQuotedTP\":185,\"PropertyListNotEmpty\":186,\"TriplesNode\":187,\"PropertyList\":188,\"PropertyList_option0\":189,\"VerbObjectList\":190,\"PropertyListNotEmpty_repetition0\":191,\"SemiOptionalVerbObjectList\":192,\";\":193,\"SemiOptionalVerbObjectList_option0\":194,\"Verb\":195,\"ObjectList\":196,\"a\":197,\"ObjectList_repetition0\":198,\"Object\":199,\"GraphNode\":200,\"Object_option0\":201,\"PropertyListPathNotEmpty\":202,\"TriplesNodePath\":203,\"TriplesSameSubjectPath_option0\":204,\"O\":205,\"PropertyListPathNotEmpty_repetition0\":206,\"PropertyListPathNotEmptyTail\":207,\"O_group0\":208,\"ObjectListPath\":209,\"ObjectListPath_repetition0\":210,\"ObjectPath\":211,\"GraphNodePath\":212,\"ObjectPath_option0\":213,\"Path\":214,\"Path_repetition0\":215,\"PathSequence\":216,\"PathSequence_repetition0\":217,\"PathEltOrInverse\":218,\"PathElt\":219,\"PathPrimary\":220,\"PathElt_option0\":221,\"PathEltOrInverse_option0\":222,\"IriOrA\":223,\"!\":224,\"PathNegatedPropertySet\":225,\"PathOneInPropertySet\":226,\"PathNegatedPropertySet_repetition0\":227,\"PathNegatedPropertySet_option0\":228,\"^\":229,\"TriplesNode_repetition_plus0\":230,\"[\":231,\"]\":232,\"TriplesNodePath_repetition_plus0\":233,\"VarOrTermOrQuotedTPExpr\":234,\"VarOrTerm\":235,\"GraphTerm\":236,\"BlankNode\":237,\"ConditionalOrExpression\":238,\"ConditionalAndExpression\":239,\"ConditionalOrExpression_repetition0\":240,\"ConditionalOrExpressionTail\":241,\"||\":242,\"RelationalExpression\":243,\"ConditionalAndExpression_repetition0\":244,\"ConditionalAndExpressionTail\":245,\"&&\":246,\"NumericExpression\":247,\"RelationalExpression_group0\":248,\"RelationalExpression_option0\":249,\"IN\":250,\"MultiplicativeExpression\":251,\"NumericExpression_repetition0\":252,\"AdditiveExpressionTail\":253,\"AdditiveExpressionTail_group0\":254,\"NumericLiteralPositive\":255,\"AdditiveExpressionTail_repetition0\":256,\"NumericLiteralNegative\":257,\"AdditiveExpressionTail_repetition1\":258,\"UnaryExpression\":259,\"MultiplicativeExpression_repetition0\":260,\"MultiplicativeExpressionTail\":261,\"MultiplicativeExpressionTail_group0\":262,\"+\":263,\"PrimaryExpression\":264,\"-\":265,\"ExprQuotedTP\":266,\"Aggregate\":267,\"FUNC_ARITY0\":268,\"FUNC_ARITY1\":269,\"FUNC_ARITY1_SPARQL_STAR\":270,\"FUNC_ARITY2\":271,\",\":272,\"FUNC_ARITY3\":273,\"FUNC_ARITY3_SPARQL_STAR\":274,\"BuiltInCall_group0\":275,\"BOUND\":276,\"BNODE\":277,\"BuiltInCall_option0\":278,\"EXISTS\":279,\"COUNT\":280,\"Aggregate_option0\":281,\"Aggregate_group0\":282,\"FUNC_AGGREGATE\":283,\"Aggregate_option1\":284,\"GROUP_CONCAT\":285,\"Aggregate_option2\":286,\"Aggregate_option3\":287,\"GroupConcatSeparator\":288,\"SEPARATOR\":289,\"=\":290,\"String\":291,\"LANGTAG\":292,\"^^\":293,\"DECIMAL\":294,\"DOUBLE\":295,\"BOOLEAN\":296,\"INTEGER_POSITIVE\":297,\"DECIMAL_POSITIVE\":298,\"DOUBLE_POSITIVE\":299,\"INTEGER_NEGATIVE\":300,\"DECIMAL_NEGATIVE\":301,\"DOUBLE_NEGATIVE\":302,\"STRING_LITERAL1\":303,\"STRING_LITERAL2\":304,\"STRING_LITERAL_LONG1\":305,\"STRING_LITERAL_LONG2\":306,\"PrefixedName\":307,\"PNAME_LN\":308,\"BLANK_NODE_LABEL\":309,\"ANON\":310,\"QuotedTP\":311,\"<<\":312,\"qtSubjectOrObject\":313,\">>\":314,\"DataValueTerm\":315,\"AnnotationPattern\":316,\"{|\":317,\"|}\":318,\"AnnotationPatternPath\":319,\"ExprVarOrTerm\":320,\"QueryOrUpdate_group0_option0\":321,\"Prologue_repetition0_group0\":322,\"Qry_group0_repetition_plus0\":323,\"SelectClauseBase_option0_group0\":324,\"DISTINCT\":325,\"REDUCED\":326,\"NAMED\":327,\"SILENT\":328,\"CLEAR\":329,\"DROP\":330,\"ADD\":331,\"MOVE\":332,\"COPY\":333,\"ALL\":334,\".\":335,\"UNION\":336,\"|\":337,\"/\":338,\"PathElt_option0_group0\":339,\"?\":340,\"!=\":341,\"<\":342,\">\":343,\"<=\":344,\">=\":345,\"NOT\":346,\"CONCAT\":347,\"COALESCE\":348,\"SUBSTR\":349,\"REGEX\":350,\"REPLACE\":351,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"EOF\",12:\"BASE\",13:\"IRIREF\",15:\"PREFIX\",16:\"PNAME_NS\",24:\"CONSTRUCT\",28:\"WHERE\",29:\"{\",31:\"}\",32:\"DESCRIBE\",36:\"ASK\",39:\"*\",41:\"SELECT\",45:\"(\",47:\"AS\",48:\")\",53:\"FROM\",63:\"GROUP\",64:\"BY\",70:\"HAVING\",73:\"ORDER\",76:\"ASC\",78:\"DESC\",81:\"LIMIT\",82:\"INTEGER\",83:\"OFFSET\",85:\"VALUES\",87:\"VAR\",89:\"NIL\",100:\"LOAD\",109:\"TO\",110:\"CREATE\",112:\"GRAPH\",113:\"INSERTDATA\",115:\"DELETEDATA\",116:\"DELETEWHERE\",121:\"INTO\",123:\"DELETE\",126:\"INSERT\",128:\"USING\",131:\"WITH\",132:\"DEFAULT\",159:\"OPTIONAL\",160:\"MINUS\",161:\"SERVICE\",163:\"FILTER\",164:\"BIND\",174:\"UNDEF\",193:\";\",197:\"a\",224:\"!\",229:\"^\",231:\"[\",232:\"]\",242:\"||\",246:\"&&\",250:\"IN\",263:\"+\",265:\"-\",268:\"FUNC_ARITY0\",269:\"FUNC_ARITY1\",270:\"FUNC_ARITY1_SPARQL_STAR\",271:\"FUNC_ARITY2\",272:\",\",273:\"FUNC_ARITY3\",274:\"FUNC_ARITY3_SPARQL_STAR\",276:\"BOUND\",277:\"BNODE\",279:\"EXISTS\",280:\"COUNT\",283:\"FUNC_AGGREGATE\",285:\"GROUP_CONCAT\",289:\"SEPARATOR\",290:\"=\",292:\"LANGTAG\",293:\"^^\",294:\"DECIMAL\",295:\"DOUBLE\",296:\"BOOLEAN\",297:\"INTEGER_POSITIVE\",298:\"DECIMAL_POSITIVE\",299:\"DOUBLE_POSITIVE\",300:\"INTEGER_NEGATIVE\",301:\"DECIMAL_NEGATIVE\",302:\"DOUBLE_NEGATIVE\",303:\"STRING_LITERAL1\",304:\"STRING_LITERAL2\",305:\"STRING_LITERAL_LONG1\",306:\"STRING_LITERAL_LONG2\",308:\"PNAME_LN\",309:\"BLANK_NODE_LABEL\",310:\"ANON\",312:\"<<\",314:\">>\",317:\"{|\",318:\"|}\",325:\"DISTINCT\",326:\"REDUCED\",327:\"NAMED\",328:\"SILENT\",329:\"CLEAR\",330:\"DROP\",331:\"ADD\",332:\"MOVE\",333:\"COPY\",334:\"ALL\",335:\".\",336:\"UNION\",337:\"|\",338:\"/\",340:\"?\",341:\"!=\",342:\"<\",343:\">\",344:\"<=\",345:\">=\",346:\"NOT\",347:\"CONCAT\",348:\"COALESCE\",349:\"SUBSTR\",350:\"REGEX\",351:\"REPLACE\"},\nproductions_: [0,[3,3],[7,2],[4,1],[11,2],[14,3],[8,4],[8,4],[8,5],[8,7],[8,5],[8,4],[17,2],[21,2],[38,2],[43,1],[43,5],[49,4],[49,4],[52,3],[19,2],[23,2],[20,3],[62,3],[66,1],[66,1],[66,3],[66,5],[66,1],[69,2],[72,3],[75,2],[75,2],[75,1],[75,1],[80,2],[80,2],[80,4],[80,4],[84,2],[86,4],[86,4],[86,6],[86,2],[94,3],[96,3],[98,4],[98,3],[98,5],[98,4],[98,2],[98,2],[98,2],[98,5],[120,2],[118,3],[118,1],[125,2],[127,3],[130,2],[108,1],[108,2],[122,2],[105,1],[105,1],[114,3],[135,2],[138,7],[143,3],[57,3],[57,3],[147,2],[150,3],[154,3],[151,1],[151,2],[151,2],[151,3],[151,4],[151,2],[151,6],[151,1],[93,1],[93,1],[165,4],[166,4],[166,6],[171,1],[171,1],[171,1],[171,1],[158,2],[79,1],[79,1],[79,1],[68,2],[176,1],[176,5],[179,1],[179,4],[25,3],[182,3],[145,2],[145,2],[188,1],[186,2],[192,2],[190,2],[195,1],[195,1],[196,2],[199,2],[156,2],[156,2],[202,2],[207,1],[207,2],[205,2],[209,2],[211,2],[214,2],[216,2],[219,2],[218,2],[220,1],[220,2],[220,3],[225,1],[225,1],[225,4],[226,1],[226,2],[187,3],[187,3],[203,3],[203,3],[200,1],[200,1],[212,1],[212,1],[234,1],[235,1],[235,1],[139,1],[139,1],[44,1],[236,1],[236,1],[236,1],[236,1],[46,1],[238,2],[241,2],[239,2],[245,2],[243,1],[243,3],[243,4],[247,2],[253,2],[253,2],[253,2],[251,2],[261,2],[259,2],[259,2],[259,2],[259,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[77,3],[67,1],[67,2],[67,4],[67,4],[67,6],[67,8],[67,8],[67,2],[67,4],[67,2],[67,4],[67,3],[267,5],[267,5],[267,6],[288,4],[172,1],[172,2],[172,3],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[255,1],[255,1],[255,1],[257,1],[257,1],[257,1],[291,1],[291,1],[291,1],[291,1],[55,1],[55,1],[307,1],[307,1],[237,1],[237,1],[311,5],[173,5],[313,1],[313,1],[313,1],[313,1],[313,1],[315,1],[315,1],[315,1],[185,1],[185,1],[185,1],[316,3],[319,3],[266,5],[320,1],[320,1],[320,1],[223,1],[223,1],[321,0],[321,1],[5,1],[5,1],[5,1],[9,0],[9,1],[322,1],[322,1],[10,0],[10,2],[18,0],[18,2],[22,0],[22,2],[26,0],[26,2],[27,0],[27,2],[30,0],[30,1],[323,1],[323,2],[33,1],[33,1],[34,0],[34,2],[35,0],[35,1],[37,0],[37,2],[40,1],[40,2],[324,1],[324,1],[42,0],[42,1],[50,0],[50,1],[51,0],[51,1],[54,0],[54,1],[56,0],[56,1],[58,0],[58,1],[59,0],[59,1],[60,0],[60,1],[61,0],[61,1],[65,1],[65,2],[71,1],[71,2],[74,1],[74,2],[88,0],[88,2],[90,0],[90,2],[91,1],[91,2],[92,0],[92,2],[95,1],[95,2],[97,0],[97,4],[99,0],[99,2],[101,0],[101,1],[102,0],[102,1],[103,1],[103,1],[104,0],[104,1],[106,1],[106,1],[106,1],[107,0],[107,1],[111,0],[111,1],[117,0],[117,1],[119,0],[119,2],[124,0],[124,1],[129,0],[129,1],[133,0],[133,1],[134,1],[134,1],[134,1],[136,0],[136,1],[137,0],[137,2],[140,0],[140,1],[141,0],[141,1],[142,0],[142,1],[144,0],[144,3],[146,0],[146,1],[148,0],[148,1],[149,0],[149,2],[152,0],[152,1],[153,0],[153,1],[155,0],[155,3],[157,0],[157,1],[162,0],[162,1],[167,0],[167,2],[168,0],[168,2],[169,1],[169,2],[170,0],[170,2],[175,0],[175,3],[177,0],[177,1],[178,0],[178,3],[180,0],[180,3],[181,0],[181,1],[183,0],[183,3],[184,0],[184,1],[189,0],[189,1],[191,0],[191,2],[194,0],[194,1],[198,0],[198,3],[201,0],[201,1],[204,0],[204,1],[206,0],[206,2],[208,1],[208,1],[210,0],[210,3],[213,0],[213,1],[215,0],[215,3],[217,0],[217,3],[339,1],[339,1],[339,1],[221,0],[221,1],[222,0],[222,1],[227,0],[227,3],[228,0],[228,1],[230,1],[230,2],[233,1],[233,2],[240,0],[240,2],[244,0],[244,2],[248,1],[248,1],[248,1],[248,1],[248,1],[248,1],[249,0],[249,1],[252,0],[252,2],[254,1],[254,1],[256,0],[256,2],[258,0],[258,2],[260,0],[260,2],[262,1],[262,1],[275,1],[275,1],[275,1],[275,1],[275,1],[278,0],[278,1],[281,0],[281,1],[282,1],[282,1],[284,0],[284,1],[286,0],[286,1],[287,0],[287,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n\n // Set parser options\n $$[$0-1] = $$[$0-1] || {};\n if (Parser.base)\n $$[$0-1].base = Parser.base;\n Parser.base = '';\n $$[$0-1].prefixes = Parser.prefixes;\n Parser.prefixes = null;\n\n if (Parser.pathOnly) {\n if ($$[$0-1].type === 'path' || 'termType' in $$[$0-1]) {\n return $$[$0-1]\n }\n throw new Error('Received full SPARQL query in path only mode');\n } else if ($$[$0-1].type === 'path' || 'termType' in $$[$0-1]) {\n throw new Error('Received only path in full SPARQL mode');\n }\n\n // Ensure that blank nodes are not used across INSERT DATA clauses\n if ($$[$0-1].type === 'update') {\n const insertBnodesAll = {};\n for (const update of $$[$0-1].updates) {\n if (update.updateType === 'insert') {\n // Collect bnodes for current insert clause\n const insertBnodes = {};\n for (const operation of update.insert) {\n if (operation.type === 'bgp' || operation.type === 'graph') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'BlankNode')\n insertBnodes[triple.subject.value] = true;\n if (triple.predicate.termType === 'BlankNode')\n insertBnodes[triple.predicate.value] = true;\n if (triple.object.termType === 'BlankNode')\n insertBnodes[triple.object.value] = true;\n }\n }\n }\n\n // Check if the inserting bnodes don't clash with bnodes from a previous insert clause\n for (const bnode of Object.keys(insertBnodes)) {\n if (insertBnodesAll[bnode]) {\n throw new Error('Detected reuse blank node across different INSERT DATA clauses');\n }\n insertBnodesAll[bnode] = true;\n }\n }\n }\n }\n return $$[$0-1];\n \nbreak;\ncase 2:\nthis.$ = { ...$$[$0-1], ...$$[$0], type: 'query' };\nbreak;\ncase 4:\n\n Parser.base = resolveIRI($$[$0])\n \nbreak;\ncase 5:\n\n if (!Parser.prefixes) Parser.prefixes = {};\n $$[$0-1] = $$[$0-1].substr(0, $$[$0-1].length - 1);\n $$[$0] = resolveIRI($$[$0]);\n Parser.prefixes[$$[$0-1]] = $$[$0];\n \nbreak;\ncase 6:\nthis.$ = { ...$$[$0-3], ...groupDatasets($$[$0-2]), ...$$[$0-1], ...$$[$0] };\nbreak;\ncase 7:\n\n // Check for projection of ungrouped variable\n if (!Parser.skipValidation) {\n const counts = flatten($$[$0-3].variables.map(vars => getAggregatesOfExpression(vars.expression)))\n .some(agg => agg.aggregation === \"count\" && !(agg.expression instanceof Wildcard));\n if (counts || $$[$0].group) {\n for (const selectVar of $$[$0-3].variables) {\n if (selectVar.termType === \"Variable\") {\n if (!$$[$0].group || !$$[$0].group.map(groupVar => getExpressionId(groupVar)).includes(getExpressionId(selectVar))) {\n throw Error(\"Projection of ungrouped variable (?\" + getExpressionId(selectVar) + \")\");\n }\n } else if (getAggregatesOfExpression(selectVar.expression).length === 0) {\n const usedVars = getVariablesFromExpression(selectVar.expression);\n for (const usedVar of usedVars) {\n if (!$$[$0].group || !$$[$0].group.map || !$$[$0].group.map(groupVar => getExpressionId(groupVar)).includes(getExpressionId(usedVar))) {\n throw Error(\"Use of ungrouped variable in projection of operation (?\" + getExpressionId(usedVar) + \")\");\n }\n }\n }\n }\n }\n }\n // Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = $$[$0-1].where.filter(w => w.type === \"query\");\n if (subqueries.length > 0) {\n const selectedVarIds = $$[$0-3].variables.filter(v => v.variable && v.variable.value).map(v => v.variable.value);\n const subqueryIds = flatten(subqueries.map(sub => sub.variables)).map(v => v.value || v.variable.value);\n for (const selectedVarId of selectedVarIds) {\n if (subqueryIds.indexOf(selectedVarId) >= 0) {\n throw Error(\"Target id of 'AS' (?\" + selectedVarId + \") already used in subquery\");\n }\n }\n }\n this.$ = extend($$[$0-3], groupDatasets($$[$0-2]), $$[$0-1], $$[$0])\n \nbreak;\ncase 8:\nthis.$ = extend({ queryType: 'CONSTRUCT', template: $$[$0-3] }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 9:\nthis.$ = extend({ queryType: 'CONSTRUCT', template: $$[$0-2] = ($$[$0-2] ? $$[$0-2].triples : []) }, groupDatasets($$[$0-5]), { where: [ { type: 'bgp', triples: appendAllTo([], $$[$0-2]) } ] }, $$[$0]);\nbreak;\ncase 10:\nthis.$ = extend({ queryType: 'DESCRIBE', variables: $$[$0-3] === '*' ? [new Wildcard()] : $$[$0-3] }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 11:\nthis.$ = extend({ queryType: 'ASK' }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 12:\nthis.$ = extend($$[$0-1], {variables: [new Wildcard()]});\nbreak;\ncase 13:\n\n // Check if id of each selected column is different\n const selectedVarIds = $$[$0].map(v => v.value || v.variable.value);\n const duplicates = getDuplicatesInArray(selectedVarIds);\n if (duplicates.length > 0) {\n throw Error(\"Two or more of the resulting columns have the same name (?\" + duplicates[0] + \")\");\n }\n\n this.$ = extend($$[$0-1], { variables: $$[$0] })\n \nbreak;\ncase 14:\nthis.$ = extend({ queryType: 'SELECT'}, $$[$0] && ($$[$0-1] = lowercase($$[$0]), $$[$0] = {}, $$[$0][$$[$0-1]] = true, $$[$0]));\nbreak;\ncase 16: case 27:\nthis.$ = expression($$[$0-3], { variable: $$[$0-1] });\nbreak;\ncase 17: case 18:\nthis.$ = extend($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], { type: 'query' });\nbreak;\ncase 19: case 58:\nthis.$ = { iri: $$[$0], named: !!$$[$0-1] };\nbreak;\ncase 20:\nthis.$ = { where: $$[$0].patterns };\nbreak;\ncase 21:\nthis.$ = extend($$[$0-1], $$[$0]);\nbreak;\ncase 22:\nthis.$ = extend($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 23:\nthis.$ = { group: $$[$0] };\nbreak;\ncase 24: case 25: case 28: case 31: case 33: case 34:\nthis.$ = expression($$[$0]);\nbreak;\ncase 26:\nthis.$ = expression($$[$0-1]);\nbreak;\ncase 29:\nthis.$ = { having: $$[$0] };\nbreak;\ncase 30:\nthis.$ = { order: $$[$0] };\nbreak;\ncase 32:\nthis.$ = expression($$[$0], { descending: true });\nbreak;\ncase 35:\nthis.$ = { limit: toInt($$[$0]) };\nbreak;\ncase 36:\nthis.$ = { offset: toInt($$[$0]) };\nbreak;\ncase 37:\nthis.$ = { limit: toInt($$[$0-2]), offset: toInt($$[$0]) };\nbreak;\ncase 38:\nthis.$ = { limit: toInt($$[$0]), offset: toInt($$[$0-2]) };\nbreak;\ncase 39: case 43:\nthis.$ = { type: 'values', values: $$[$0] };\nbreak;\ncase 40: case 84:\nthis.$ = $$[$0-1].map(v => ({ [$$[$0-3]]: v }));\nbreak;\ncase 41: case 85:\nthis.$ = $$[$0-1].map(() => ({}));\nbreak;\ncase 42: case 86:\n\n var length = $$[$0-4].length;\n $$[$0-4] = $$[$0-4].map(toVar);\n this.$ = $$[$0-1].map(function (values) {\n if (values.length !== length)\n throw Error('Inconsistent VALUES length');\n var valuesObject = {};\n for(var i = 0; i el.type === \"bind\")) {\n const index = $$[$0-1].indexOf(binding);\n const boundVars = new Set();\n //Collect all bounded variables before the binding\n for (const el of $$[$0-1].slice(0, index)) {\n if (el.type === \"group\" || el.type === \"bgp\") {\n getBoundVarsFromGroupGraphPattern(el).forEach(boundVar => boundVars.add(boundVar));\n }\n }\n // If binding with a non-free variable, throw error\n if (boundVars.has(binding.variable.value)) {\n throw Error(\"Variable used to bind is already bound (?\" + binding.variable.value + \")\");\n }\n }\n this.$ = { type: 'group', patterns: $$[$0-1] }\n \nbreak;\ncase 71:\nthis.$ = $$[$0-1] ? unionAll([$$[$0-1]], $$[$0]) : unionAll($$[$0]);\nbreak;\ncase 72:\nthis.$ = $$[$0] ? [$$[$0-2], $$[$0]] : $$[$0-2];\nbreak;\ncase 75:\nthis.$ = extend($$[$0], { type: 'optional' });\nbreak;\ncase 76:\nthis.$ = extend($$[$0], { type: 'minus' });\nbreak;\ncase 77:\nthis.$ = extend($$[$0], { type: 'graph', name: $$[$0-1] });\nbreak;\ncase 78:\nthis.$ = extend($$[$0], { type: 'service', name: $$[$0-1], silent: !!$$[$0-2] });\nbreak;\ncase 79:\nthis.$ = { type: 'filter', expression: $$[$0] };\nbreak;\ncase 80:\nthis.$ = { type: 'bind', variable: $$[$0-1], expression: $$[$0-3] };\nbreak;\ncase 89:\nthis.$ = ensureSparqlStar($$[$0]);\nbreak;\ncase 90:\nthis.$ = undefined;\nbreak;\ncase 91:\nthis.$ = $$[$0-1].length ? { type: 'union', patterns: unionAll($$[$0-1].map(degroupSingle), [degroupSingle($$[$0])]) } : $$[$0];\nbreak;\ncase 95:\nthis.$ = { ...$$[$0], function: $$[$0-1] };\nbreak;\ncase 96:\nthis.$ = { type: 'functionCall', args: [] };\nbreak;\ncase 97:\nthis.$ = { type: 'functionCall', args: appendTo($$[$0-2], $$[$0-1]), distinct: !!$$[$0-3] };\nbreak;\ncase 98: case 115: case 128: case 247: case 249: case 251: case 253: case 255: case 263: case 267: case 297: case 299: case 303: case 307: case 328: case 341: case 349: case 355: case 361: case 367: case 369: case 373: case 375: case 379: case 381: case 385: case 391: case 395: case 401: case 405: case 409: case 411: case 420: case 428: case 430: case 440: case 444: case 446: case 448:\nthis.$ = [];\nbreak;\ncase 99:\nthis.$ = appendTo($$[$0-2], $$[$0-1]);\nbreak;\ncase 101:\nthis.$ = unionAll($$[$0-2], [$$[$0-1]]);\nbreak;\ncase 102: case 112:\nthis.$ = applyAnnotations($$[$0].map(t => extend(triple($$[$0-1]), t)));\nbreak;\ncase 103:\nthis.$ = applyAnnotations(appendAllTo($$[$0].map(t => extend(triple($$[$0-1].entity), t)), $$[$0-1].triples)) /* the subject is a blank node, possibly with more triples */;\nbreak;\ncase 105:\nthis.$ = unionAll([$$[$0-1]], $$[$0]);\nbreak;\ncase 106:\nthis.$ = unionAll($$[$0]);\nbreak;\ncase 107:\nthis.$ = objectListToTriples($$[$0-1], $$[$0]);\nbreak;\ncase 109: case 237:\nthis.$ = Parser.factory.namedNode(RDF_TYPE);\nbreak;\ncase 110: case 118:\nthis.$ = appendTo($$[$0-1], $$[$0]);\nbreak;\ncase 111:\nthis.$ = $$[$0] ? { annotation: $$[$0], object: $$[$0-1] } : $$[$0-1];\nbreak;\ncase 113:\nthis.$ = !$$[$0] ? $$[$0-1].triples : applyAnnotations(appendAllTo($$[$0].map(t => extend(triple($$[$0-1].entity), t)), $$[$0-1].triples)) /* the subject is a blank node, possibly with more triples */;\nbreak;\ncase 114:\nthis.$ = objectListToTriples(...$$[$0-1], $$[$0]);\nbreak;\ncase 116:\nthis.$ = objectListToTriples(...$$[$0]);\nbreak;\ncase 117: case 159: case 163:\nthis.$ = [$$[$0-1], $$[$0]];\nbreak;\ncase 119:\nthis.$ = $$[$0] ? { object: $$[$0-1], annotation: $$[$0] } : $$[$0-1];;\nbreak;\ncase 120:\nthis.$ = $$[$0-1].length ? path('|',appendTo($$[$0-1], $$[$0])) : $$[$0];\nbreak;\ncase 121:\nthis.$ = $$[$0-1].length ? path('/', appendTo($$[$0-1], $$[$0])) : $$[$0];\nbreak;\ncase 122:\nthis.$ = $$[$0] ? path($$[$0], [$$[$0-1]]) : $$[$0-1];\nbreak;\ncase 123:\nthis.$ = $$[$0-1] ? path($$[$0-1], [$$[$0]]) : $$[$0];;\nbreak;\ncase 125: case 131:\nthis.$ = path($$[$0-1], [$$[$0]]);\nbreak;\ncase 129:\nthis.$ = path('|', appendTo($$[$0-2], $$[$0-1]));\nbreak;\ncase 132: case 134:\nthis.$ = createList($$[$0-1]);\nbreak;\ncase 133: case 135:\nthis.$ = createAnonymousObject($$[$0-1]);\nbreak;\ncase 140:\nthis.$ = { entity: $$[$0], triples: [] };\nbreak;\ncase 145:\nthis.$ = toVar($$[$0]);\nbreak;\ncase 149:\nthis.$ = Parser.factory.namedNode(RDF_NIL);\nbreak;\ncase 151: case 153: case 158: case 162:\nthis.$ = createOperationTree($$[$0-1], $$[$0]);\nbreak;\ncase 152:\nthis.$ = ['||', $$[$0]];\nbreak;\ncase 154:\nthis.$ = ['&&', $$[$0]];\nbreak;\ncase 156:\nthis.$ = operation($$[$0-1], [$$[$0-2], $$[$0]]);\nbreak;\ncase 157:\nthis.$ = operation($$[$0-2] ? 'notin' : 'in', [$$[$0-3], $$[$0]]);\nbreak;\ncase 160:\nthis.$ = ['+', createOperationTree($$[$0-1], $$[$0])];\nbreak;\ncase 161:\n\n var negatedLiteral = createTypedLiteral($$[$0-1].value.replace('-', ''), $$[$0-1].datatype);\n this.$ = ['-', createOperationTree(negatedLiteral, $$[$0])];\n \nbreak;\ncase 164:\nthis.$ = operation('UPLUS', [$$[$0]]);\nbreak;\ncase 165:\nthis.$ = operation($$[$0-1], [$$[$0]]);\nbreak;\ncase 166:\nthis.$ = operation('UMINUS', [$$[$0]]);\nbreak;\ncase 177:\nthis.$ = operation(lowercase($$[$0-1]));\nbreak;\ncase 178:\nthis.$ = operation(lowercase($$[$0-3]), [$$[$0-1]]);\nbreak;\ncase 179:\nthis.$ = ensureSparqlStar(operation(lowercase($$[$0-3]), [$$[$0-1]]));\nbreak;\ncase 180:\nthis.$ = operation(lowercase($$[$0-5]), [$$[$0-3], $$[$0-1]]);\nbreak;\ncase 181:\nthis.$ = operation(lowercase($$[$0-7]), [$$[$0-5], $$[$0-3], $$[$0-1]]);\nbreak;\ncase 182:\nthis.$ = ensureSparqlStar(operation(lowercase($$[$0-7]), [$$[$0-5], $$[$0-3], $$[$0-1]]));\nbreak;\ncase 183:\nthis.$ = operation(lowercase($$[$0-1]), $$[$0]);\nbreak;\ncase 184:\nthis.$ = operation('bound', [toVar($$[$0-1])]);\nbreak;\ncase 185:\nthis.$ = operation($$[$0-1], []);\nbreak;\ncase 186:\nthis.$ = operation($$[$0-3], [$$[$0-1]]);\nbreak;\ncase 187:\nthis.$ = operation($$[$0-2] ? 'notexists' :'exists', [degroupSingle($$[$0])]);\nbreak;\ncase 188: case 189:\nthis.$ = expression($$[$0-1], { type: 'aggregate', aggregation: lowercase($$[$0-4]), distinct: !!$$[$0-2] });\nbreak;\ncase 190:\nthis.$ = expression($$[$0-2], { type: 'aggregate', aggregation: lowercase($$[$0-5]), distinct: !!$$[$0-3], separator: typeof $$[$0-1] === 'string' ? $$[$0-1] : ' ' });\nbreak;\ncase 192:\nthis.$ = createTypedLiteral($$[$0]);\nbreak;\ncase 193:\nthis.$ = createLangLiteral($$[$0-1], lowercase($$[$0].substr(1)));\nbreak;\ncase 194:\nthis.$ = createTypedLiteral($$[$0-2], $$[$0]);\nbreak;\ncase 195: case 204:\nthis.$ = createTypedLiteral($$[$0], XSD_INTEGER);\nbreak;\ncase 196: case 205:\nthis.$ = createTypedLiteral($$[$0], XSD_DECIMAL);\nbreak;\ncase 197: case 206:\nthis.$ = createTypedLiteral(lowercase($$[$0]), XSD_DOUBLE);\nbreak;\ncase 200:\nthis.$ = createTypedLiteral($$[$0].toLowerCase(), XSD_BOOLEAN);\nbreak;\ncase 201:\nthis.$ = createTypedLiteral($$[$0].substr(1), XSD_INTEGER);\nbreak;\ncase 202:\nthis.$ = createTypedLiteral($$[$0].substr(1), XSD_DECIMAL);\nbreak;\ncase 203:\nthis.$ = createTypedLiteral($$[$0].substr(1).toLowerCase(), XSD_DOUBLE);\nbreak;\ncase 207: case 208:\nthis.$ = unescapeString($$[$0], 1);\nbreak;\ncase 209: case 210:\nthis.$ = unescapeString($$[$0], 3);\nbreak;\ncase 211:\nthis.$ = Parser.factory.namedNode(resolveIRI($$[$0]));\nbreak;\ncase 213:\n\n var namePos = $$[$0].indexOf(':'),\n prefix = $$[$0].substr(0, namePos),\n expansion = Parser.prefixes[prefix];\n if (!expansion) throw new Error('Unknown prefix: ' + prefix);\n var uriString = resolveIRI(expansion + $$[$0].substr(namePos + 1));\n this.$ = Parser.factory.namedNode(uriString);\n \nbreak;\ncase 214:\n\n $$[$0] = $$[$0].substr(0, $$[$0].length - 1);\n if (!($$[$0] in Parser.prefixes)) throw new Error('Unknown prefix: ' + $$[$0]);\n var uriString = resolveIRI(Parser.prefixes[$$[$0]]);\n this.$ = Parser.factory.namedNode(uriString);\n \nbreak;\ncase 215:\nthis.$ = blank($$[$0].replace(/^(_:)/,''));;\nbreak;\ncase 216:\nthis.$ = blank();\nbreak;\ncase 217: case 218: case 232:\nthis.$ = ensureSparqlStar(nestedTriple($$[$0-3], $$[$0-2], $$[$0-1]));\nbreak;\ncase 230: case 231:\nthis.$ = ensureSparqlStar($$[$0-1]);\nbreak;\ncase 248: case 250: case 252: case 254: case 256: case 260: case 264: case 268: case 270: case 292: case 294: case 296: case 298: case 300: case 302: case 304: case 306: case 329: case 342: case 356: case 368: case 370: case 372: case 374: case 392: case 402: case 425: case 427: case 429: case 431: case 441: case 445: case 447: case 449:\n$$[$0-1].push($$[$0]);\nbreak;\ncase 259: case 269: case 291: case 293: case 295: case 301: case 305: case 371: case 424: case 426:\nthis.$ = [$$[$0]];\nbreak;\ncase 308:\n$$[$0-3].push($$[$0-2]);\nbreak;\ncase 350: case 362: case 376: case 380: case 382: case 386: case 396: case 406: case 410: case 412: case 421:\n$$[$0-2].push($$[$0-1]);\nbreak;\n}\n},\ntable: [o($V0,$V1,{3:1,4:2,10:3}),{1:[3]},o($V2,[2,307],{5:4,7:5,321:6,214:7,8:8,96:9,215:10,17:11,21:12,97:16,38:17,6:[2,238],13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,24:[1,13],32:[1,14],36:[1,15],41:$V4}),o([6,13,16,24,32,36,41,45,100,110,113,115,116,123,126,131,197,224,229,308,329,330,331,332,333],[2,3],{322:19,11:20,14:21,12:[1,22],15:[1,23]}),{6:[1,24]},{6:[2,240]},{6:[2,241]},{6:[2,242]},{6:[2,243],9:25,84:26,85:$V5},{6:[2,239]},o($V6,[2,411],{216:28,217:29}),o($V7,[2,249],{18:30}),o($V7,[2,251],{22:31}),o($V8,[2,255],{25:32,27:33,29:[1,34]}),{13:$V9,16:$Va,33:35,39:[1,37],44:39,55:40,87:$Vb,139:38,307:43,308:$Vc,323:36},o($V7,[2,267],{37:46}),o($Vd,[2,326],{98:47,103:49,106:50,117:55,130:61,100:[1,48],110:[1,51],113:[1,52],115:[1,53],116:[1,54],131:[1,62],329:[1,56],330:[1,57],331:[1,58],332:[1,59],333:[1,60]}),{39:[1,63],40:64,43:65,44:66,45:$Ve,87:$Vb},o($Vf,[2,273],{42:68,324:69,325:[1,70],326:[1,71]}),o($V0,[2,248]),o($V0,[2,245]),o($V0,[2,246]),{13:[1,72]},{16:[1,73]},{1:[2,1]},{6:[2,2]},{6:[2,244]},{45:[1,77],85:[1,78],86:74,87:[1,75],89:[1,76]},o([6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],[2,120],{337:[1,79]}),o($Vg,[2,418],{218:80,222:81,229:[1,82]}),{19:83,28:$Vh,29:$Vi,52:84,53:$Vj,56:85},{19:88,28:$Vh,29:$Vi,52:89,53:$Vj,56:85},o($V7,[2,253],{26:90}),{28:[1,91],52:92,53:$Vj},o($Vk,[2,385],{181:93,182:94,183:95,31:[2,383]}),o($Vl,[2,263],{34:96}),o($Vl,[2,261],{44:39,55:40,307:43,139:97,13:$V9,16:$Va,87:$Vb,308:$Vc}),o($Vl,[2,262]),o($Vm,[2,259]),o($Vn,[2,143]),o($Vn,[2,144]),o([6,13,16,28,29,31,39,45,47,48,53,63,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346,347,348,349,350,351],[2,145]),o($Vo,[2,211]),o($Vo,[2,212]),o($Vo,[2,213]),o($Vo,[2,214]),{19:98,28:$Vh,29:$Vi,52:99,53:$Vj,56:85},{6:[2,309],99:100,193:[1,101]},o($Vp,[2,311],{101:102,328:[1,103]}),o($Vq,[2,317],{104:104,328:[1,105]}),o($Vr,[2,322],{107:106,328:[1,107]}),{111:108,112:[2,324],328:[1,109]},{29:$Vs,114:110},{29:$Vs,114:112},{29:$Vs,114:113},{118:114,123:[1,115],125:116,126:$Vt},o($Vu,[2,315]),o($Vu,[2,316]),o($Vv,[2,319]),o($Vv,[2,320]),o($Vv,[2,321]),o($Vd,[2,327]),{13:$V9,16:$Va,55:118,307:43,308:$Vc},o($V7,[2,12]),o($V7,[2,13],{44:66,43:119,45:$Ve,87:$Vb}),o($Vw,[2,269]),o($Vw,[2,15]),{13:$V9,16:$Va,44:136,45:$Vx,46:120,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vf,[2,14]),o($Vf,[2,274]),o($Vf,[2,271]),o($Vf,[2,272]),o($V0,[2,4]),{13:[1,177]},o($V61,[2,39]),{29:[1,178]},{29:[1,179]},{87:[1,181],91:180},{45:[1,187],87:[1,185],89:[1,186],93:182,165:183,166:184},o($V6,[2,410]),o([6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337],[2,121],{338:[1,188]}),{13:$V9,16:$Va,45:[1,193],55:194,197:$V71,219:189,220:190,223:191,224:[1,192],307:43,308:$Vc},o($Vg,[2,419]),o($V81,$V91,{20:196,59:197,69:198,70:$Va1}),o($V7,[2,250]),{29:$Vb1,57:200},o($Vp,[2,279],{54:202,327:[1,203]}),{29:[2,282]},o($Vc1,$Vd1,{23:204,58:205,62:206,63:$Ve1}),o($V7,[2,252]),{19:208,28:$Vh,29:$Vi,52:209,53:$Vj,56:85},{29:[1,210]},o($V8,[2,256]),{31:[1,211]},{31:[2,384]},{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,145:212,172:221,185:213,187:214,231:$Vh1,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl1,[2,265],{56:85,35:227,52:228,19:229,28:$Vh,29:$Vi,53:$Vj}),o($Vm,[2,260]),o($Vc1,$Vd1,{58:205,62:206,23:230,63:$Ve1}),o($V7,[2,268]),{6:[2,45]},o($V0,$V1,{10:3,4:231}),{13:$V9,16:$Va,55:232,307:43,308:$Vc},o($Vp,[2,312]),{105:233,112:$Vm1,122:234,132:[1,237],134:235,327:[1,238],334:[1,239]},o($Vq,[2,318]),o($Vp,$Vn1,{108:240,133:242,112:$Vo1,132:$Vp1}),o($Vr,[2,323]),{112:[1,244]},{112:[2,325]},o($Vq1,[2,50]),o($Vk,$Vr1,{135:245,136:246,143:247,144:248,31:$Vs1,112:$Vs1}),o($Vq1,[2,51]),o($Vq1,[2,52]),o($Vt1,[2,328],{119:249}),{29:$Vs,114:250},o($Vt1,[2,56]),{29:$Vs,114:251},o($Vd,[2,59]),o($Vw,[2,270]),{47:[1,252]},o($Vu1,[2,150]),o($Vv1,[2,428],{240:253}),o($Vw1,[2,430],{244:254}),o($Vw1,[2,155],{248:255,249:256,250:[2,438],290:[1,257],341:[1,258],342:[1,259],343:[1,260],344:[1,261],345:[1,262],346:[1,263]}),o($Vx1,[2,440],{252:264}),o($Vy1,[2,448],{260:265}),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:266,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:267,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:268,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vy1,[2,167]),o($Vy1,[2,168]),o($Vy1,[2,169]),o($Vy1,[2,170],{176:269,45:$Vz1,89:$VA1}),o($Vy1,[2,171]),o($Vy1,[2,172]),o($Vy1,[2,173]),o($Vy1,[2,174]),{13:$V9,16:$Va,44:136,45:$Vx,46:272,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,176]),{89:[1,273]},{45:[1,274]},{45:[1,275]},{45:[1,276]},{45:[1,277]},{45:[1,278]},{45:$VC1,89:$VD1,179:279},{45:[1,282]},{45:[1,284],89:[1,283]},{279:[1,285]},o($VE1,[2,192],{292:[1,286],293:[1,287]}),o($VE1,[2,195]),o($VE1,[2,196]),o($VE1,[2,197]),o($VE1,[2,198]),o($VE1,[2,199]),o($VE1,[2,200]),{13:$V9,16:$Va,44:39,55:40,82:$Vy,87:$Vb,139:289,172:291,255:154,257:155,266:290,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,320:288},{45:[1,292]},{45:[1,293]},{45:[1,294]},o($VF1,[2,452]),o($VF1,[2,453]),o($VF1,[2,454]),o($VF1,[2,455]),o($VF1,[2,456]),{279:[2,458]},o($VG1,[2,207]),o($VG1,[2,208]),o($VG1,[2,209]),o($VG1,[2,210]),o($VE1,[2,201]),o($VE1,[2,202]),o($VE1,[2,203]),o($VE1,[2,204]),o($VE1,[2,205]),o($VE1,[2,206]),o($V0,[2,5]),o($VH1,[2,297],{88:295}),o($VI1,[2,299],{90:296}),{48:[1,297],87:[1,298]},o($VJ1,[2,301]),o($V61,[2,43]),o($V61,[2,82]),o($V61,[2,83]),{29:[1,299]},{29:[1,300]},{87:[1,302],169:301},o($V6,[2,412]),o($VK1,[2,123]),o($VK1,[2,416],{221:303,339:304,39:[1,306],263:[1,307],340:[1,305]}),o($VL1,[2,124]),{13:$V9,16:$Va,45:[1,311],55:194,89:[1,310],197:$V71,223:312,225:308,226:309,229:$VM1,307:43,308:$Vc},o($V6,$V3,{215:10,214:314}),o($VL1,[2,236]),o($VL1,[2,237]),o($VN1,[2,6]),o($VO1,[2,287],{60:315,72:316,73:[1,317]}),o($V81,[2,286]),{13:$V9,16:$Va,45:$Vx,55:323,67:321,68:322,71:318,77:320,79:319,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o([6,31,63,70,73,81,83,85],[2,20]),o($Vk,$VP1,{38:17,49:324,147:325,17:326,21:327,148:328,154:329,155:330,29:$VQ1,31:$VQ1,85:$VQ1,112:$VQ1,159:$VQ1,160:$VQ1,161:$VQ1,163:$VQ1,164:$VQ1,41:$V4}),{13:$V9,16:$Va,55:331,307:43,308:$Vc},o($Vp,[2,280]),o($VN1,[2,7]),o($V81,$V91,{59:197,69:198,20:332,70:$Va1}),o($Vc1,[2,284]),{64:[1,333]},o($Vc1,$Vd1,{58:205,62:206,23:334,63:$Ve1}),o($V7,[2,254]),o($Vk,$Vr1,{144:248,30:335,143:336,31:[2,257]}),o($V7,[2,100]),{31:[2,387],184:337,335:[1,338]},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:339,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VS1,[2,389],{44:39,55:40,307:43,190:340,195:341,139:342,188:344,189:345,186:346,13:$V9,16:$Va,87:$Vb,197:$VR1,308:$Vc}),o($VT1,[2,227]),o($VT1,[2,228]),o($VT1,[2,229]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,200:348,230:347,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:352,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VT1,[2,146]),o($VT1,[2,147]),o($VT1,[2,148]),o($VT1,[2,149]),{13:$V9,16:$Va,44:354,55:355,82:$Vy,87:$Vb,172:357,237:356,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:358,312:$Vk1,313:353},o($VU1,[2,215]),o($VU1,[2,216]),o($Vc1,$Vd1,{58:205,62:206,23:359,63:$Ve1}),o($Vl,[2,264]),o($Vl1,[2,266]),o($VN1,[2,11]),o($V2,[2,308],{6:[2,310]}),o($Vq1,[2,313],{102:360,120:361,121:[1,362]}),o($Vq1,[2,47]),o($Vq1,[2,63]),o($Vq1,[2,64]),{13:$V9,16:$Va,55:363,307:43,308:$Vc},o($Vq1,[2,336]),o($Vq1,[2,337]),o($Vq1,[2,338]),{109:[1,364]},o($VV1,[2,60]),{13:$V9,16:$Va,55:365,307:43,308:$Vc},o($Vp,[2,335]),{13:$V9,16:$Va,55:366,307:43,308:$Vc},{31:[1,367]},o($VW1,[2,341],{137:368}),o($VW1,[2,340]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,145:369,172:221,185:213,187:214,231:$Vh1,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},{28:[1,370],127:371,128:[1,372]},o($Vt1,[2,330],{124:373,125:374,126:$Vt}),o($Vt1,[2,57]),{44:375,87:$Vb},o($Vu1,[2,151],{241:376,242:[1,377]}),o($Vv1,[2,153],{245:378,246:[1,379]}),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,247:380,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{250:[1,381]},o($VX1,[2,432]),o($VX1,[2,433]),o($VX1,[2,434]),o($VX1,[2,435]),o($VX1,[2,436]),o($VX1,[2,437]),{250:[2,439]},o([47,48,193,242,246,250,272,290,341,342,343,344,345,346],[2,158],{253:382,254:383,255:384,257:385,263:[1,386],265:[1,387],297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW}),o($Vx1,[2,162],{261:388,262:389,39:$VY1,338:$VZ1}),o($Vy1,[2,164]),o($Vy1,[2,165]),o($Vy1,[2,166]),o($VB1,[2,95]),o($VB1,[2,96]),o($VX1,[2,377],{177:392,325:[1,393]}),{48:[1,394]},o($VB1,[2,177]),{13:$V9,16:$Va,44:136,45:$Vx,46:395,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:396,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:397,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:398,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:399,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,183]),o($VB1,[2,98]),o($VX1,[2,381],{180:400}),{87:[1,401]},o($VB1,[2,185]),{13:$V9,16:$Va,44:136,45:$Vx,46:402,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{29:$Vb1,57:403},o($VE1,[2,193]),{13:$V9,16:$Va,55:404,307:43,308:$Vc},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,195:405,197:$VR1,307:43,308:$Vc},o($V_1,[2,233]),o($V_1,[2,234]),o($V_1,[2,235]),o($V$1,[2,459],{281:406,325:[1,407]}),o($VX1,[2,463],{284:408,325:[1,409]}),o($VX1,[2,465],{286:410,325:[1,411]}),{13:$V9,16:$Va,31:[1,412],55:414,82:$Vy,171:413,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,419],89:[1,420]},{29:[1,421]},o($VJ1,[2,302]),o($VH1,[2,367],{167:422}),o($VI1,[2,369],{168:423}),{48:[1,424],87:[1,425]},o($VJ1,[2,371]),o($VK1,[2,122]),o($VK1,[2,417]),o($VK1,[2,413]),o($VK1,[2,414]),o($VK1,[2,415]),o($VL1,[2,125]),o($VL1,[2,127]),o($VL1,[2,128]),o($V22,[2,420],{227:426}),o($VL1,[2,130]),{13:$V9,16:$Va,55:194,197:$V71,223:427,307:43,308:$Vc},{48:[1,428]},o($V32,[2,289],{61:429,80:430,81:[1,431],83:[1,432]}),o($VO1,[2,288]),{64:[1,433]},o($V81,[2,29],{307:43,267:139,275:146,278:149,77:320,67:321,68:322,55:323,79:434,13:$V9,16:$Va,45:$Vx,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($V42,[2,293]),o($V52,[2,92]),o($V52,[2,93]),o($V52,[2,94]),{45:$Vz1,89:$VA1,176:269},{31:[1,435]},{31:[1,436]},{19:437,28:$Vh,29:$Vi,56:85},{19:438,28:$Vh,29:$Vi,56:85},o($V62,[2,355],{149:439}),o($V62,[2,354]),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,156:440,172:221,185:441,203:442,231:$V82,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl,[2,19]),o($V32,[2,21]),{13:$V9,16:$Va,44:450,45:$V92,55:323,65:445,66:446,67:447,68:448,87:$Vb,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VN1,[2,8]),{31:[1,451]},{31:[2,258]},{31:[2,101]},o($Vk,[2,386],{31:[2,388]}),o($VS1,[2,102]),o($Va2,[2,391],{191:452}),o($Vk,[2,395],{196:453,198:454}),o($Vk,[2,108]),o($Vk,[2,109]),o($VS1,[2,103]),o($VS1,[2,104]),o($VS1,[2,390]),{13:$V9,16:$Va,44:215,45:$Vf1,48:[1,455],55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,200:456,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vb2,[2,424]),o($Vc2,[2,136]),o($Vc2,[2,137]),o($Vd2,[2,140]),{232:[1,457]},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,195:458,197:$VR1,307:43,308:$Vc},o($V_1,[2,219]),o($V_1,[2,220]),o($V_1,[2,221]),o($V_1,[2,222]),o($V_1,[2,223]),o($VN1,[2,10]),o($Vq1,[2,46]),o($Vq1,[2,314]),{112:$Vm1,122:459},o($Vq1,[2,62]),o($Vp,$Vn1,{133:242,108:460,112:$Vo1,132:$Vp1}),o($VV1,[2,61]),o($Vq1,[2,49]),o([6,28,126,128,193],[2,65]),{31:[2,66],112:[1,462],138:461},o($VW1,[2,351],{146:463,335:[1,464]}),{29:$Vb1,57:465},o($Vt1,[2,329]),o($Vp,[2,332],{129:466,327:[1,467]}),o($Vt1,[2,55]),o($Vt1,[2,331]),{48:[1,468]},o($Vv1,[2,429]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,239:469,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vw1,[2,431]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,243:470,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vw1,[2,156]),{45:$VC1,89:$VD1,179:471},o($Vx1,[2,441]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,251:472,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vy1,[2,444],{256:473}),o($Vy1,[2,446],{258:474}),o($VX1,[2,442]),o($VX1,[2,443]),o($Vy1,[2,449]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,255:154,257:155,259:475,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,450]),o($VX1,[2,451]),o($VX1,[2,379],{178:476}),o($VX1,[2,378]),o([6,13,16,29,31,39,45,47,48,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,338,341,342,343,344,345,346,347,348,349,350,351],[2,175]),{48:[1,477]},{48:[1,478]},{272:[1,479]},{272:[1,480]},{272:[1,481]},{13:$V9,16:$Va,44:136,45:$Vx,46:482,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{48:[1,483]},{48:[1,484]},o($VB1,[2,187]),o($VE1,[2,194]),{13:$V9,16:$Va,44:39,55:40,82:$Vy,87:$Vb,139:289,172:291,255:154,257:155,266:290,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,320:485},{13:$V9,16:$Va,39:[1,487],44:136,45:$Vx,46:488,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,282:486,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($V$1,[2,460]),{13:$V9,16:$Va,44:136,45:$Vx,46:489,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,464]),{13:$V9,16:$Va,44:136,45:$Vx,46:490,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,466]),o($V61,[2,40]),o($VH1,[2,298]),o($Ve2,[2,87]),o($Ve2,[2,88]),o($Ve2,[2,89]),o($Ve2,[2,90]),{13:$V9,16:$Va,55:492,82:$Vy,172:493,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,311:494,312:$Vk1,315:491},o($V61,[2,41]),o($VI1,[2,300]),o($Vf2,[2,303],{92:495}),{13:$V9,16:$Va,31:[1,496],55:414,82:$Vy,171:497,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,498],89:[1,499]},{29:[1,500]},o($VJ1,[2,372]),{13:$V9,16:$Va,48:[2,422],55:194,197:$V71,223:312,226:502,228:501,229:$VM1,307:43,308:$Vc},o($VL1,[2,131]),o($VL1,[2,126]),o($V32,[2,22]),o($V32,[2,290]),{82:[1,503]},{82:[1,504]},{13:$V9,16:$Va,44:510,45:$Vx,55:323,67:321,68:322,74:505,75:506,76:$Vg2,77:320,78:$Vh2,79:509,87:$Vb,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($V42,[2,294]),o($Vi2,[2,69]),o($Vi2,[2,70]),o($V81,$V91,{59:197,69:198,20:511,70:$Va1}),o($Vc1,$Vd1,{58:205,62:206,23:512,63:$Ve1}),{29:[2,375],31:[2,71],84:522,85:$V5,112:[1,518],150:513,151:514,158:515,159:[1,516],160:[1,517],161:[1,519],163:[1,520],164:[1,521],175:523},o($V62,[2,363],{157:524,335:[1,525]}),o($V6,$V3,{215:10,202:526,205:527,208:528,214:529,44:530,87:$Vb}),o($Vj2,[2,399],{215:10,205:527,208:528,214:529,44:530,204:531,202:532,13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,87:$Vb}),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,212:534,231:$V82,233:533,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($V6,$V3,{215:10,205:527,208:528,214:529,44:530,202:537,87:$Vb}),o($Vc1,[2,23],{307:43,267:139,275:146,278:149,55:323,67:447,68:448,44:450,66:538,13:$V9,16:$Va,45:$V92,87:$Vb,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($Vk2,[2,291]),o($Vk2,[2,24]),o($Vk2,[2,25]),{13:$V9,16:$Va,44:136,45:$Vx,46:539,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vk2,[2,28]),o($Vc1,$Vd1,{58:205,62:206,23:540,63:$Ve1}),o([31,112,232,318,335],[2,105],{192:541,193:[1,542]}),o($Va2,[2,107]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,199:543,200:544,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl2,[2,132]),o($Vb2,[2,425]),o($Vl2,[2,133]),{13:$V9,16:$Va,44:354,55:355,82:$Vy,87:$Vb,172:357,237:356,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:358,312:$Vk1,313:545},o($Vq1,[2,54]),o($Vq1,[2,48]),o($VW1,[2,342]),{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:546,307:43,308:$Vc},o($VW1,[2,68]),o($Vk,[2,350],{31:$Vm2,112:$Vm2}),o($Vq1,[2,53]),{13:$V9,16:$Va,55:547,307:43,308:$Vc},o($Vp,[2,333]),o($Vw,[2,16]),o($Vv1,[2,152]),o($Vw1,[2,154]),o($Vw1,[2,157]),o($Vx1,[2,159]),o($Vx1,[2,160],{262:389,261:548,39:$VY1,338:$VZ1}),o($Vx1,[2,161],{262:389,261:549,39:$VY1,338:$VZ1}),o($Vy1,[2,163]),{13:$V9,16:$Va,44:136,45:$Vx,46:550,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,178]),o($VB1,[2,179]),{13:$V9,16:$Va,44:136,45:$Vx,46:551,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:552,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:553,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{48:[1,554],272:[1,555]},o($VB1,[2,184]),o($VB1,[2,186]),{314:[1,556]},{48:[1,557]},{48:[2,461]},{48:[2,462]},{48:[1,558]},{48:[2,467],193:[1,561],287:559,288:560},{13:$V9,16:$Va,55:194,197:$V71,223:562,307:43,308:$Vc},o($Vn2,[2,224]),o($Vn2,[2,225]),o($Vn2,[2,226]),{31:[1,563],45:$Vo2,94:564},o($V61,[2,84]),o($VH1,[2,368]),o($V61,[2,85]),o($VI1,[2,370]),o($Vf2,[2,373],{170:566}),{48:[1,567]},{48:[2,423],337:[1,568]},o($V32,[2,35],{83:[1,569]}),o($V32,[2,36],{81:[1,570]}),o($VO1,[2,30],{307:43,267:139,275:146,278:149,77:320,67:321,68:322,55:323,79:509,44:510,75:571,13:$V9,16:$Va,45:$Vx,76:$Vg2,78:$Vh2,87:$Vb,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($Vp2,[2,295]),{45:$Vx,77:572},{45:$Vx,77:573},o($Vp2,[2,33]),o($Vp2,[2,34]),{31:[2,275],50:574,84:575,85:$V5},{31:[2,277],51:576,84:577,85:$V5},o($V62,[2,356]),o($Vq2,[2,357],{152:578,335:[1,579]}),o($Vr2,[2,74]),{29:$Vb1,57:580},{29:$Vb1,57:581},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:582,307:43,308:$Vc},o($Vs2,[2,365],{162:583,328:[1,584]}),{13:$V9,16:$Va,45:$Vx,55:323,67:321,68:322,77:320,79:585,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{45:[1,586]},o($Vr2,[2,81]),{29:$Vb1,57:587},o($V62,[2,73]),o($Vk,[2,362],{29:$Vt2,31:$Vt2,85:$Vt2,112:$Vt2,159:$Vt2,160:$Vt2,161:$Vt2,163:$Vt2,164:$Vt2}),o($Vj2,[2,112]),o($Vu2,[2,401],{206:588}),o($Vk,[2,405],{209:589,210:590}),o($Vk,[2,403]),o($Vk,[2,404]),o($Vj2,[2,113]),o($Vj2,[2,400]),{13:$V9,16:$Va,44:215,45:$V72,48:[1,591],55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,212:592,231:$V82,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vb2,[2,426]),o($Vd2,[2,138]),o($Vd2,[2,139]),{232:[1,593]},o($Vk2,[2,292]),{47:[1,595],48:[1,594]},o($VN1,[2,9]),o($Va2,[2,392]),o($Va2,[2,393],{44:39,55:40,307:43,195:341,139:342,194:596,190:597,13:$V9,16:$Va,87:$Vb,197:$VR1,308:$Vc}),o($Va2,[2,110],{272:[1,598]}),o($Vv2,[2,397],{201:599,316:600,317:[1,601]}),{314:[1,602]},{29:[1,603]},o($Vt1,[2,58]),o($Vy1,[2,445]),o($Vy1,[2,447]),{48:[1,604],272:[1,605]},{48:[1,606]},{272:[1,607]},{272:[1,608]},o($VB1,[2,99]),o($VX1,[2,382]),o([13,16,39,47,48,87,193,197,242,246,250,263,265,272,290,297,298,299,300,301,302,308,314,338,341,342,343,344,345,346],[2,232]),o($VB1,[2,188]),o($VB1,[2,189]),{48:[1,609]},{48:[2,468]},{289:[1,610]},{13:$V9,16:$Va,55:492,82:$Vy,172:493,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,311:494,312:$Vk1,315:611},o($V61,[2,42]),o($Vf2,[2,304]),{13:$V9,16:$Va,55:414,82:$Vy,95:612,171:613,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,614],45:$Vo2,94:615},o($VL1,[2,129]),o($V22,[2,421]),{82:[1,616]},{82:[1,617]},o($Vp2,[2,296]),o($Vp2,[2,31]),o($Vp2,[2,32]),{31:[2,17]},{31:[2,276]},{31:[2,18]},{31:[2,278]},o($Vk,$VP1,{155:330,153:618,154:619,29:$Vw2,31:$Vw2,85:$Vw2,112:$Vw2,159:$Vw2,160:$Vw2,161:$Vw2,163:$Vw2,164:$Vw2}),o($Vq2,[2,358]),o($Vr2,[2,75]),o($Vr2,[2,76]),{29:$Vb1,57:620},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:621,307:43,308:$Vc},o($Vs2,[2,366]),o($Vr2,[2,79]),{13:$V9,16:$Va,44:136,45:$Vx,46:622,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vr2,[2,91],{336:[1,623]}),o([29,31,85,112,159,160,161,163,164,232,318,335],[2,114],{207:624,193:[1,625]}),o($Vu2,[2,117]),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,211:626,212:627,231:$V82,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($VT1,[2,134]),o($Vb2,[2,427]),o($VT1,[2,135]),o($Vk2,[2,26]),{44:628,87:$Vb},o($Va2,[2,106]),o($Va2,[2,394]),o($Vk,[2,396]),o($Vv2,[2,111]),o($Vv2,[2,398]),{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:629,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VU1,[2,217]),o($Vk,$Vr1,{144:248,140:630,143:631,31:[2,343]}),o($VB1,[2,97]),o($VX1,[2,380]),o($VB1,[2,180]),{13:$V9,16:$Va,44:136,45:$Vx,46:632,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:633,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,190]),{290:[1,634]},{314:[1,635]},{13:$V9,16:$Va,48:[1,636],55:414,82:$Vy,171:637,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},o($Vx2,[2,305]),o($V61,[2,86]),o($Vf2,[2,374]),o($V32,[2,37]),o($V32,[2,38]),o($V62,[2,72]),o($V62,[2,360]),o($Vr2,[2,77]),{29:$Vb1,57:638},{47:[1,639]},{29:[2,376]},o($Vu2,[2,402]),o($Vu2,[2,115],{215:10,208:528,214:529,44:530,205:640,13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,87:$Vb}),o($Vu2,[2,118],{272:[1,641]}),o($Vy2,[2,407],{213:642,319:643,317:[1,644]}),{48:[1,645]},{318:[1,646]},{31:[1,647]},{31:[2,344]},{48:[1,648]},{48:[1,649]},{291:650,303:$VX,304:$VY,305:$VZ,306:$V_},o($Ve2,[2,218]),o($Vf2,[2,44]),o($Vx2,[2,306]),o($Vr2,[2,78]),{44:651,87:$Vb},o($Vu2,[2,116]),o($Vk,[2,406]),o($Vy2,[2,119]),o($Vy2,[2,408]),o($V6,$V3,{215:10,205:527,208:528,214:529,44:530,202:652,87:$Vb}),o($Vk2,[2,27]),o($Vv2,[2,230]),o($Vz2,[2,345],{141:653,335:[1,654]}),o($VB1,[2,181]),o($VB1,[2,182]),{48:[2,191]},{48:[1,655]},{318:[1,656]},o($Vk,$Vr1,{144:248,142:657,143:658,31:$VA2,112:$VA2}),o($Vz2,[2,346]),o($Vr2,[2,80]),o($Vy2,[2,231]),o($VW1,[2,67]),o($VW1,[2,348])],\ndefaultActions: {5:[2,240],6:[2,241],7:[2,242],9:[2,239],24:[2,1],25:[2,2],26:[2,244],87:[2,282],94:[2,384],100:[2,45],109:[2,325],166:[2,458],263:[2,439],336:[2,258],337:[2,101],487:[2,461],488:[2,462],560:[2,468],574:[2,17],575:[2,276],576:[2,18],577:[2,278],623:[2,376],631:[2,344],650:[2,191]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n /*\n SPARQL parser in the Jison parser generator format.\n */\n\n var Wildcard = require('./Wildcard').Wildcard;\n\n // Common namespaces and entities\n var RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n RDF_TYPE = RDF + 'type',\n RDF_FIRST = RDF + 'first',\n RDF_REST = RDF + 'rest',\n RDF_NIL = RDF + 'nil',\n XSD = 'http://www.w3.org/2001/XMLSchema#',\n XSD_INTEGER = XSD + 'integer',\n XSD_DECIMAL = XSD + 'decimal',\n XSD_DOUBLE = XSD + 'double',\n XSD_BOOLEAN = XSD + 'boolean';\n\n var base = '', basePath = '', baseRoot = '';\n\n // Returns a lowercase version of the given string\n function lowercase(string) {\n return string.toLowerCase();\n }\n\n // Appends the item to the array and returns the array\n function appendTo(array, item) {\n return array.push(item), array;\n }\n\n // Appends the items to the array and returns the array\n function appendAllTo(array, items) {\n return array.push.apply(array, items), array;\n }\n\n // Extends a base object with properties of other objects\n function extend(base) {\n if (!base) base = {};\n for (var i = 1, l = arguments.length, arg; i < l && (arg = arguments[i] || {}); i++)\n for (var name in arg)\n base[name] = arg[name];\n return base;\n }\n\n // Creates an array that contains all items of the given arrays\n function unionAll() {\n var union = [];\n for (var i = 0, l = arguments.length; i < l; i++)\n union = union.concat.apply(union, arguments[i]);\n return union;\n }\n\n // Resolves an IRI against a base path\n function resolveIRI(iri) {\n // Strip off possible angular brackets\n if (iri[0] === '<')\n iri = iri.substring(1, iri.length - 1);\n // Return absolute IRIs unmodified\n if (/^[a-z]+:/i.test(iri))\n return iri;\n if (!Parser.base)\n throw new Error('Cannot resolve relative IRI ' + iri + ' because no base IRI was set.');\n if (base !== Parser.base) {\n base = Parser.base;\n basePath = base.replace(/[^\\/:]*$/, '');\n baseRoot = base.match(/^(?:[a-z]+:\\/*)?[^\\/]*/)[0];\n }\n switch (iri[0]) {\n // An empty relative IRI indicates the base IRI\n case undefined:\n return base;\n // Resolve relative fragment IRIs against the base IRI\n case '#':\n return base + iri;\n // Resolve relative query string IRIs by replacing the query string\n case '?':\n return base.replace(/(?:\\?.*)?$/, iri);\n // Resolve root relative IRIs at the root of the base IRI\n case '/':\n return baseRoot + iri;\n // Resolve all other IRIs at the base IRI's path\n default:\n return basePath + iri;\n }\n }\n\n // If the item is a variable, ensures it starts with a question mark\n function toVar(variable) {\n if (variable) {\n var first = variable[0];\n if (first === '?' || first === '$') return Parser.factory.variable(variable.substr(1));\n }\n return variable;\n }\n\n // Creates an operation with the given name and arguments\n function operation(operatorName, args) {\n return { type: 'operation', operator: operatorName, args: args || [] };\n }\n\n // Creates an expression with the given type and attributes\n function expression(expr, attr) {\n var expression = { expression: expr === '*'? new Wildcard() : expr };\n if (attr)\n for (var a in attr)\n expression[a] = attr[a];\n return expression;\n }\n\n // Creates a path with the given type and items\n function path(type, items) {\n return { type: 'path', pathType: type, items: items };\n }\n\n // Transforms a list of operations types and arguments into a tree of operations\n function createOperationTree(initialExpression, operationList) {\n for (var i = 0, l = operationList.length, item; i < l && (item = operationList[i]); i++)\n initialExpression = operation(item[0], [initialExpression, item[1]]);\n return initialExpression;\n }\n\n // Group datasets by default and named\n function groupDatasets(fromClauses, groupName) {\n var defaults = [], named = [], l = fromClauses.length, fromClause, group = {};\n if (!l)\n return null;\n for (var i = 0; i < l && (fromClause = fromClauses[i]); i++)\n (fromClause.named ? named : defaults).push(fromClause.iri);\n group[groupName || 'from'] = { default: defaults, named: named };\n return group;\n }\n\n // Converts the string to a number\n function toInt(string) {\n return parseInt(string, 10);\n }\n\n // Transforms a possibly single group into its patterns\n function degroupSingle(group) {\n return group.type === 'group' && group.patterns.length === 1 ? group.patterns[0] : group;\n }\n\n // Creates a literal with the given value and type\n function createTypedLiteral(value, type) {\n if (type && type.termType !== 'NamedNode'){\n type = Parser.factory.namedNode(type);\n }\n return Parser.factory.literal(value, type);\n }\n\n // Creates a literal with the given value and language\n function createLangLiteral(value, lang) {\n return Parser.factory.literal(value, lang);\n }\n\n function nestedTriple(subject, predicate, object) {\n\n // TODO: Remove this when it is caught by the grammar\n if (!('termType' in predicate)) {\n throw new Error('Nested triples cannot contain paths');\n }\n\n return Parser.factory.quad(subject, predicate, object);\n }\n\n // Creates a triple with the given subject, predicate, and object\n function triple(subject, predicate, object, annotations) {\n var triple = {};\n if (subject != null) triple.subject = subject;\n if (predicate != null) triple.predicate = predicate;\n if (object != null) triple.object = object;\n if (annotations != null) triple.annotations = annotations;\n return triple;\n }\n\n // Creates a new blank node\n function blank(name) {\n if (typeof name === 'string') { // Only use name if a name is given\n if (name.startsWith('e_')) return Parser.factory.blankNode(name);\n return Parser.factory.blankNode('e_' + name);\n }\n return Parser.factory.blankNode('g_' + blankId++);\n };\n var blankId = 0;\n Parser._resetBlanks = function () { blankId = 0; }\n\n // Regular expression and replacement strings to escape strings\n var escapeSequence = /\\\\u([a-fA-F0-9]{4})|\\\\U([a-fA-F0-9]{8})|\\\\(.)/g,\n escapeReplacements = { '\\\\': '\\\\', \"'\": \"'\", '\"': '\"',\n 't': '\\t', 'b': '\\b', 'n': '\\n', 'r': '\\r', 'f': '\\f' },\n partialSurrogatesWithoutEndpoint = /[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/,\n fromCharCode = String.fromCharCode;\n\n // Translates escape codes in the string into their textual equivalent\n function unescapeString(string, trimLength) {\n string = string.substring(trimLength, string.length - trimLength);\n try {\n string = string.replace(escapeSequence, function (sequence, unicode4, unicode8, escapedChar) {\n var charCode;\n if (unicode4) {\n charCode = parseInt(unicode4, 16);\n if (isNaN(charCode)) throw new Error(); // can never happen (regex), but helps performance\n return fromCharCode(charCode);\n }\n else if (unicode8) {\n charCode = parseInt(unicode8, 16);\n if (isNaN(charCode)) throw new Error(); // can never happen (regex), but helps performance\n if (charCode < 0xFFFF) return fromCharCode(charCode);\n return fromCharCode(0xD800 + ((charCode -= 0x10000) >> 10), 0xDC00 + (charCode & 0x3FF));\n }\n else {\n var replacement = escapeReplacements[escapedChar];\n if (!replacement) throw new Error();\n return replacement;\n }\n });\n }\n catch (error) { return ''; }\n\n // Test for invalid unicode surrogate pairs\n if (partialSurrogatesWithoutEndpoint.exec(string)) {\n throw new Error('Invalid unicode codepoint of surrogate pair without corresponding codepoint in ' + string);\n }\n\n return string;\n }\n\n // Creates a list, collecting its (possibly blank) items and triples associated with those items\n function createList(objects) {\n var list = blank(), head = list, listItems = [], listTriples, triples = [];\n objects.forEach(function (o) { listItems.push(o.entity); appendAllTo(triples, o.triples); });\n\n // Build an RDF list out of the items\n for (var i = 0, j = 0, l = listItems.length, listTriples = Array(l * 2); i < l;)\n listTriples[j++] = triple(head, Parser.factory.namedNode(RDF_FIRST), listItems[i]),\n listTriples[j++] = triple(head, Parser.factory.namedNode(RDF_REST), head = ++i < l ? blank() : Parser.factory.namedNode(RDF_NIL));\n\n // Return the list's identifier, its triples, and the triples associated with its items\n return { entity: list, triples: appendAllTo(listTriples, triples) };\n }\n\n // Creates a blank node identifier, collecting triples with that blank node as subject\n function createAnonymousObject(propertyList) {\n var entity = blank();\n return {\n entity: entity,\n triples: propertyList.map(function (t) { return extend(triple(entity), t); })\n };\n }\n\n // Collects all (possibly blank) objects, and triples that have them as subject\n function objectListToTriples(predicate, objectList, otherTriples) {\n var objects = [], triples = [];\n objectList.forEach(function (l) {\n let annotation = null;\n if (l.annotation) {\n annotation = l.annotation\n l = l.object;\n }\n objects.push(triple(null, predicate, l.entity, annotation));\n appendAllTo(triples, l.triples);\n });\n return unionAll(objects, otherTriples || [], triples);\n }\n\n // Simplifies groups by merging adjacent BGPs\n function mergeAdjacentBGPs(groups) {\n var merged = [], currentBgp;\n for (var i = 0, group; group = groups[i]; i++) {\n switch (group.type) {\n // Add a BGP's triples to the current BGP\n case 'bgp':\n if (group.triples.length) {\n if (!currentBgp)\n appendTo(merged, currentBgp = group);\n else\n appendAllTo(currentBgp.triples, group.triples);\n }\n break;\n // All other groups break up a BGP\n default:\n // Only add the group if its pattern is non-empty\n if (!group.patterns || group.patterns.length > 0) {\n appendTo(merged, group);\n currentBgp = null;\n }\n }\n }\n return merged;\n }\n\n // Return the id of an expression\n function getExpressionId(expression) {\n return expression.variable ? expression.variable.value : expression.value || expression.expression.value;\n }\n\n // Get all \"aggregate\"'s from an expression\n function getAggregatesOfExpression(expression) {\n if (!expression) {\n return [];\n }\n if (expression.type === 'aggregate') {\n return [expression];\n } else if (expression.type === \"operation\") {\n const aggregates = [];\n for (const arg of expression.args) {\n aggregates.push(...getAggregatesOfExpression(arg));\n }\n return aggregates;\n }\n return [];\n }\n\n // Get all variables used in an expression\n function getVariablesFromExpression(expression) {\n const variables = new Set();\n const visitExpression = function (expr) {\n if (!expr) { return; }\n if (expr.termType === \"Variable\") {\n variables.add(expr);\n } else if (expr.type === \"operation\") {\n expr.args.forEach(visitExpression);\n }\n };\n visitExpression(expression);\n return variables;\n }\n\n // Helper function to flatten arrays\n function flatten(input, depth = 1, stack = []) {\n for (const item of input) {\n if (depth > 0 && item instanceof Array) {\n flatten(item, depth - 1, stack);\n } else {\n stack.push(item);\n }\n }\n return stack;\n }\n\n function isVariable(term) {\n return term.termType === 'Variable';\n }\n\n function getBoundVarsFromGroupGraphPattern(pattern) {\n if (pattern.triples) {\n const boundVars = [];\n for (const triple of pattern.triples) {\n if (isVariable(triple.subject)) boundVars.push(triple.subject.value);\n if (isVariable(triple.predicate)) boundVars.push(triple.predicate.value);\n if (isVariable(triple.object)) boundVars.push(triple.object.value);\n }\n return boundVars;\n } else if (pattern.patterns) {\n const boundVars = [];\n for (const pat of pattern.patterns) {\n boundVars.push(...getBoundVarsFromGroupGraphPattern(pat));\n }\n return boundVars;\n }\n return [];\n }\n\n // Helper function to find duplicates in array\n function getDuplicatesInArray(array) {\n const sortedArray = array.slice().sort();\n const duplicates = [];\n for (let i = 0; i < sortedArray.length - 1; i++) {\n if (sortedArray[i + 1] == sortedArray[i]) {\n duplicates.push(sortedArray[i]);\n }\n }\n return duplicates;\n }\n\n function ensureSparqlStar(value) {\n if (!Parser.sparqlStar) {\n throw new Error('SPARQL-star support is not enabled');\n }\n return value;\n }\n\n function _applyAnnotations(subject, annotations, arr) {\n for (const annotation of annotations) {\n const t = triple(\n // If the annotation already has a subject then just push the\n // annotation to the upper scope as it is a blank node introduced\n // from a pattern like :s :p :o {| :p1 [ :p2 :o2; :p3 :o3 ] |}\n 'subject' in annotation ? annotation.subject : subject,\n annotation.predicate,\n annotation.object\n )\n\n arr.push(t);\n\n if (annotation.annotations) {\n _applyAnnotations(nestedTriple(\n subject,\n annotation.predicate,\n annotation.object\n ), annotation.annotations, arr)\n }\n }\n }\n\n function applyAnnotations(triples) {\n if (Parser.sparqlStar) {\n const newTriples = [];\n\n triples.forEach(t => {\n const s = triple(t.subject, t.predicate, t.object);\n\n newTriples.push(s);\n\n if (t.annotations) {\n _applyAnnotations(nestedTriple(t.subject, t.predicate, t.object), t.annotations, newTriples);\n }\n });\n\n return newTriples;\n }\n return triples;\n }\n\n function ensureSparqlStarNestedQuads(value) {\n if (!Parser.sparqlStarNestedQuads) {\n throw new Error('Lenient SPARQL-star support with nested quads is not enabled');\n }\n return value;\n }\n\n function ensureNoVariables(operations) {\n for (const operation of operations) {\n if (operation.type === 'graph' && operation.name.termType === 'Variable') {\n throw new Error('Detected illegal variable in GRAPH');\n }\n if (operation.type === 'bgp' || operation.type === 'graph') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'Variable' ||\n triple.predicate.termType === 'Variable' ||\n triple.object.termType === 'Variable') {\n throw new Error('Detected illegal variable in BGP');\n }\n }\n }\n }\n return operations;\n }\n\n function ensureNoBnodes(operations) {\n for (const operation of operations) {\n if (operation.type === 'bgp') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'BlankNode' ||\n triple.predicate.termType === 'BlankNode' ||\n triple.object.termType === 'BlankNode') {\n throw new Error('Detected illegal blank node in BGP');\n }\n }\n }\n }\n return operations;\n }\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"flex\":true,\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* ignore */\nbreak;\ncase 1:return 12\nbreak;\ncase 2:return 15\nbreak;\ncase 3:return 41\nbreak;\ncase 4:return 325\nbreak;\ncase 5:return 326\nbreak;\ncase 6:return 45\nbreak;\ncase 7:return 47\nbreak;\ncase 8:return 48\nbreak;\ncase 9:return 39\nbreak;\ncase 10:return 24\nbreak;\ncase 11:return 28\nbreak;\ncase 12:return 29\nbreak;\ncase 13:return 31\nbreak;\ncase 14:return 32\nbreak;\ncase 15:return 36\nbreak;\ncase 16:return 53\nbreak;\ncase 17:return 327\nbreak;\ncase 18:return 63\nbreak;\ncase 19:return 64\nbreak;\ncase 20:return 70\nbreak;\ncase 21:return 73\nbreak;\ncase 22:return 76\nbreak;\ncase 23:return 78\nbreak;\ncase 24:return 81\nbreak;\ncase 25:return 83\nbreak;\ncase 26:return 85\nbreak;\ncase 27:return 193\nbreak;\ncase 28:return 100\nbreak;\ncase 29:return 328\nbreak;\ncase 30:return 121\nbreak;\ncase 31:return 329\nbreak;\ncase 32:return 330\nbreak;\ncase 33:return 110\nbreak;\ncase 34:return 331\nbreak;\ncase 35:return 109\nbreak;\ncase 36:return 332\nbreak;\ncase 37:return 333\nbreak;\ncase 38:return 113\nbreak;\ncase 39:return 115\nbreak;\ncase 40:return 116\nbreak;\ncase 41:return 131\nbreak;\ncase 42:return 123\nbreak;\ncase 43:return 126\nbreak;\ncase 44:return 128\nbreak;\ncase 45:return 132\nbreak;\ncase 46:return 112\nbreak;\ncase 47:return 334\nbreak;\ncase 48:return 335\nbreak;\ncase 49:return 159\nbreak;\ncase 50:return 161\nbreak;\ncase 51:return 164\nbreak;\ncase 52:return 174\nbreak;\ncase 53:return 160\nbreak;\ncase 54:return 336\nbreak;\ncase 55:return 163\nbreak;\ncase 56:return 312\nbreak;\ncase 57:return 314\nbreak;\ncase 58:return 317\nbreak;\ncase 59:return 318\nbreak;\ncase 60:return 272\nbreak;\ncase 61:return 197\nbreak;\ncase 62:return 337\nbreak;\ncase 63:return 338\nbreak;\ncase 64:return 229\nbreak;\ncase 65:return 340\nbreak;\ncase 66:return 263\nbreak;\ncase 67:return 224\nbreak;\ncase 68:return 231\nbreak;\ncase 69:return 232\nbreak;\ncase 70:return 242\nbreak;\ncase 71:return 246\nbreak;\ncase 72:return 290\nbreak;\ncase 73:return 341\nbreak;\ncase 74:return 342\nbreak;\ncase 75:return 343\nbreak;\ncase 76:return 344\nbreak;\ncase 77:return 345\nbreak;\ncase 78:return 250\nbreak;\ncase 79:return 346\nbreak;\ncase 80:return 265\nbreak;\ncase 81:return 276\nbreak;\ncase 82:return 277\nbreak;\ncase 83:return 268\nbreak;\ncase 84:return 269\nbreak;\ncase 85:return 270\nbreak;\ncase 86:return 271\nbreak;\ncase 87:return 347\nbreak;\ncase 88:return 348\nbreak;\ncase 89:return 273\nbreak;\ncase 90:return 274\nbreak;\ncase 91:return 350\nbreak;\ncase 92:return 349\nbreak;\ncase 93:return 351\nbreak;\ncase 94:return 279\nbreak;\ncase 95:return 280\nbreak;\ncase 96:return 283\nbreak;\ncase 97:return 285\nbreak;\ncase 98:return 289\nbreak;\ncase 99:return 293\nbreak;\ncase 100:return 296\nbreak;\ncase 101:return 13\nbreak;\ncase 102:return 16\nbreak;\ncase 103:return 308\nbreak;\ncase 104:return 309\nbreak;\ncase 105:return 87\nbreak;\ncase 106:return 292\nbreak;\ncase 107:return 82\nbreak;\ncase 108:return 294\nbreak;\ncase 109:return 295\nbreak;\ncase 110:return 297\nbreak;\ncase 111:return 298\nbreak;\ncase 112:return 299\nbreak;\ncase 113:return 300\nbreak;\ncase 114:return 301\nbreak;\ncase 115:return 302\nbreak;\ncase 116:return 'EXPONENT'\nbreak;\ncase 117:return 303\nbreak;\ncase 118:return 304\nbreak;\ncase 119:return 305\nbreak;\ncase 120:return 306\nbreak;\ncase 121:return 89\nbreak;\ncase 122:return 310\nbreak;\ncase 123:return 6\nbreak;\ncase 124:return 'INVALID'\nbreak;\ncase 125:console.log(yy_.yytext);\nbreak;\n}\n},\nrules: [/^(?:\\s+|(#[^\\n\\r]*))/i,/^(?:BASE)/i,/^(?:PREFIX)/i,/^(?:SELECT)/i,/^(?:DISTINCT)/i,/^(?:REDUCED)/i,/^(?:\\()/i,/^(?:AS)/i,/^(?:\\))/i,/^(?:\\*)/i,/^(?:CONSTRUCT)/i,/^(?:WHERE)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:DESCRIBE)/i,/^(?:ASK)/i,/^(?:FROM)/i,/^(?:NAMED)/i,/^(?:GROUP)/i,/^(?:BY)/i,/^(?:HAVING)/i,/^(?:ORDER)/i,/^(?:ASC)/i,/^(?:DESC)/i,/^(?:LIMIT)/i,/^(?:OFFSET)/i,/^(?:VALUES)/i,/^(?:;)/i,/^(?:LOAD)/i,/^(?:SILENT)/i,/^(?:INTO)/i,/^(?:CLEAR)/i,/^(?:DROP)/i,/^(?:CREATE)/i,/^(?:ADD)/i,/^(?:TO)/i,/^(?:MOVE)/i,/^(?:COPY)/i,/^(?:INSERT((\\s+|(#[^\\n\\r]*)\\n\\r?)+)DATA)/i,/^(?:DELETE((\\s+|(#[^\\n\\r]*)\\n\\r?)+)DATA)/i,/^(?:DELETE((\\s+|(#[^\\n\\r]*)\\n\\r?)+)WHERE)/i,/^(?:WITH)/i,/^(?:DELETE)/i,/^(?:INSERT)/i,/^(?:USING)/i,/^(?:DEFAULT)/i,/^(?:GRAPH)/i,/^(?:ALL)/i,/^(?:\\.)/i,/^(?:OPTIONAL)/i,/^(?:SERVICE)/i,/^(?:BIND)/i,/^(?:UNDEF)/i,/^(?:MINUS)/i,/^(?:UNION)/i,/^(?:FILTER)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:\\{\\|)/i,/^(?:\\|\\})/i,/^(?:,)/i,/^(?:a)/i,/^(?:\\|)/i,/^(?:\\/)/i,/^(?:\\^)/i,/^(?:\\?)/i,/^(?:\\+)/i,/^(?:!)/i,/^(?:\\[)/i,/^(?:\\])/i,/^(?:\\|\\|)/i,/^(?:&&)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:<)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:>=)/i,/^(?:IN)/i,/^(?:NOT)/i,/^(?:-)/i,/^(?:BOUND)/i,/^(?:BNODE)/i,/^(?:(RAND|NOW|UUID|STRUUID))/i,/^(?:(LANG|DATATYPE|IRI|URI|ABS|CEIL|FLOOR|ROUND|STRLEN|STR|UCASE|LCASE|ENCODE_FOR_URI|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|MD5|SHA1|SHA256|SHA384|SHA512|isIRI|isURI|isBLANK|isLITERAL|isNUMERIC))/i,/^(?:(SUBJECT|PREDICATE|OBJECT|isTRIPLE))/i,/^(?:(LANGMATCHES|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|STRLANG|STRDT|sameTerm))/i,/^(?:CONCAT)/i,/^(?:COALESCE)/i,/^(?:IF)/i,/^(?:TRIPLE)/i,/^(?:REGEX)/i,/^(?:SUBSTR)/i,/^(?:REPLACE)/i,/^(?:EXISTS)/i,/^(?:COUNT)/i,/^(?:SUM|MIN|MAX|AVG|SAMPLE)/i,/^(?:GROUP_CONCAT)/i,/^(?:SEPARATOR)/i,/^(?:\\^\\^)/i,/^(?:true|false)/i,/^(?:(<(?:[^<>\\\"\\{\\}\\|\\^`\\\\\\u0000-\\u0020])*>))/i,/^(?:((([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?)?:))/i,/^(?:(((([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?)?:)((?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|:|[0-9]|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%))))(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%))))*(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%)))))?)))/i,/^(?:(_:(?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?))/i,/^(?:([\\?\\$]((?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9])(?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])*)))/i,/^(?:(@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*))/i,/^(?:([0-9]+))/i,/^(?:([0-9]*\\.[0-9]+))/i,/^(?:([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+)))/i,/^(?:(\\+([0-9]+)))/i,/^(?:(\\+([0-9]*\\.[0-9]+)))/i,/^(?:(\\+([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:(-([0-9]+)))/i,/^(?:(-([0-9]*\\.[0-9]+)))/i,/^(?:(-([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:([eE][+-]?[0-9]+))/i,/^(?:('(?:(?:[^\\u0027\\u005C\\u000A\\u000D])|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*'))/i,/^(?:(\"(?:(?:[^\\u0022\\u005C\\u000A\\u000D])|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*\"))/i,/^(?:('''(?:(?:'|'')?(?:[^'\\\\]|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*'''))/i,/^(?:(\"\"\"(?:(?:\"|\"\")?(?:[^\\\"\\\\]|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*\"\"\"))/i,/^(?:(\\((\\u0020|\\u0009|\\u000D|\\u000A)*\\)))/i,/^(?:(\\[(\\u0020|\\u0009|\\u000D|\\u000A)*\\]))/i,/^(?:$)/i,/^(?:.)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();module.exports=SparqlParser\n","\n// Wildcard constructor\nclass Wildcard {\n constructor() {\n return WILDCARD || this;\n }\n\n equals(other) {\n return other && (this.termType === other.termType);\n }\n}\n\nObject.defineProperty(Wildcard.prototype, 'value', {\n enumerable: true,\n value: '*',\n});\n\nObject.defineProperty(Wildcard.prototype, 'termType', {\n enumerable: true,\n value: 'Wildcard',\n});\n\n\n// Wildcard singleton\nvar WILDCARD = new Wildcard();\n\nmodule.exports.Wildcard = Wildcard;\n","var Parser = require('./lib/SparqlParser').Parser;\nvar Generator = require('./lib/SparqlGenerator');\nvar Wildcard = require(\"./lib/Wildcard\").Wildcard;\nvar { DataFactory } = require('rdf-data-factory');\n\nmodule.exports = {\n /**\n * Creates a SPARQL parser with the given pre-defined prefixes and base IRI\n * @param options {\n * prefixes?: { [prefix: string]: string },\n * baseIRI?: string,\n * factory?: import('rdf-js').DataFactory,\n * sparqlStar?: boolean,\n * skipValidation?: boolean,\n * skipUngroupedVariableCheck?: boolean\n * }\n */\n Parser: function ({ prefixes, baseIRI, factory, sparqlStar, skipValidation, skipUngroupedVariableCheck, pathOnly } = {}) {\n\n // Create a copy of the prefixes\n var prefixesCopy = {};\n for (var prefix in prefixes || {})\n prefixesCopy[prefix] = prefixes[prefix];\n\n // Create a new parser with the given prefixes\n // (Workaround for https://github.com/zaach/jison/issues/241)\n var parser = new Parser();\n parser.parse = function () {\n Parser.base = baseIRI || '';\n Parser.prefixes = Object.create(prefixesCopy);\n Parser.factory = factory || new DataFactory();\n Parser.sparqlStar = Boolean(sparqlStar);\n Parser.pathOnly = Boolean(pathOnly);\n // We keep skipUngroupedVariableCheck for compatibility reasons.\n Parser.skipValidation = Boolean(skipValidation) || Boolean(skipUngroupedVariableCheck)\n return Parser.prototype.parse.apply(parser, arguments);\n };\n parser._resetBlanks = Parser._resetBlanks;\n return parser;\n },\n Generator: Generator,\n Wildcard: Wildcard,\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/SparqlJsonParser\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SparqlJsonParser = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst readable_stream_1 = require(\"readable-stream\");\n// tslint:disable-next-line:no-var-requires\nconst JsonParser = require('@bergos/jsonparse');\n/**\n * Parser for the SPARQL 1.1 Query Results JSON format.\n * @see https://www.w3.org/TR/sparql11-results-json/\n */\nclass SparqlJsonParser {\n constructor(settings) {\n var _a;\n settings = settings || {};\n this.dataFactory = settings.dataFactory || new rdf_data_factory_1.DataFactory();\n this.prefixVariableQuestionMark = !!settings.prefixVariableQuestionMark;\n this.suppressMissingStreamResultsError = (_a = settings.suppressMissingStreamResultsError) !== null && _a !== void 0 ? _a : true;\n }\n /**\n * Convert a SPARQL JSON bindings response to an array of bindings objects.\n * @param sparqlResponse A SPARQL JSON response.\n * @return {IBindings[]} An array of bindings.\n */\n parseJsonResults(sparqlResponse) {\n return sparqlResponse.results.bindings.map((rawBindings) => this.parseJsonBindings(rawBindings));\n }\n /**\n * Convert a SPARQL JSON bindings response stream to a stream of bindings objects.\n *\n * The bindings stream will emit a 'variables' event that will contain\n * the array of variables (as RDF.Variable[]), as defined in the response head.\n *\n * @param {NodeJS.ReadableStream} sparqlResponseStream A SPARQL JSON response stream.\n * @return {NodeJS.ReadableStream} A stream of bindings.\n */\n parseJsonResultsStream(sparqlResponseStream) {\n const errorListener = (error) => resultStream.emit('error', error);\n sparqlResponseStream.on('error', errorListener);\n const jsonParser = new JsonParser();\n jsonParser.onError = errorListener;\n let variablesFound = false;\n let resultsFound = false;\n jsonParser.onValue = (value) => {\n if (jsonParser.key === \"vars\" && jsonParser.stack.length === 2 && jsonParser.stack[1].key === 'head') {\n resultStream.emit('variables', value.map((v) => this.dataFactory.variable(v)));\n variablesFound = true;\n }\n else if (jsonParser.key === \"results\" && jsonParser.stack.length === 1) {\n resultsFound = true;\n }\n else if (typeof jsonParser.key === 'number' && jsonParser.stack.length === 3 && jsonParser.stack[1].key === 'results' && jsonParser.stack[2].key === 'bindings') {\n try {\n resultStream.push(this.parseJsonBindings(value));\n }\n catch (error) {\n resultStream.emit(\"error\", error);\n }\n }\n else if (jsonParser.key === \"metadata\" && jsonParser.stack.length === 1) {\n resultStream.emit('metadata', value);\n }\n };\n const resultStream = sparqlResponseStream\n .on(\"end\", _ => {\n if (!resultsFound && !this.suppressMissingStreamResultsError) {\n resultStream.emit(\"error\", new Error(\"No valid SPARQL query results were found.\"));\n }\n else if (!variablesFound) {\n resultStream.emit('variables', []);\n }\n })\n .pipe(new readable_stream_1.Transform({\n objectMode: true,\n transform(chunk, encoding, callback) {\n jsonParser.write(chunk);\n callback();\n }\n }));\n return resultStream;\n }\n /**\n * Convert a SPARQL JSON result binding to a bindings object.\n * @param rawBindings A SPARQL JSON result binding.\n * @return {IBindings} A bindings object.\n */\n parseJsonBindings(rawBindings) {\n const bindings = {};\n for (const key in rawBindings) {\n const rawValue = rawBindings[key];\n bindings[this.prefixVariableQuestionMark ? ('?' + key) : key] = this.parseJsonValue(rawValue);\n }\n return bindings;\n }\n /**\n * Convert a SPARQL JSON result value to an RDF term.\n * @param rawValue A SPARQL JSON result value\n * @return {RDF.Term} An RDF term.\n */\n parseJsonValue(rawValue) {\n let value;\n switch (rawValue.type) {\n case 'bnode':\n value = this.dataFactory.blankNode(rawValue.value);\n break;\n case 'literal':\n if (rawValue['xml:lang']) {\n value = this.dataFactory.literal(rawValue.value, rawValue['xml:lang']);\n }\n else if (rawValue.datatype) {\n value = this.dataFactory.literal(rawValue.value, this.dataFactory.namedNode(rawValue.datatype));\n }\n else {\n value = this.dataFactory.literal(rawValue.value);\n }\n break;\n case 'typed-literal':\n // Virtuoso uses this non-spec-compliant way of defining typed literals\n value = this.dataFactory.literal(rawValue.value, this.dataFactory.namedNode(rawValue.datatype));\n break;\n case 'triple':\n const tripleValue = rawValue.value;\n if (!tripleValue || !tripleValue.subject || !tripleValue.predicate || !tripleValue.object) {\n throw new Error('Invalid quoted triple: ' + JSON.stringify(rawValue));\n }\n value = this.dataFactory.quad(this.parseJsonValue(tripleValue.subject), this.parseJsonValue(tripleValue.predicate), this.parseJsonValue(tripleValue.object));\n break;\n default:\n value = this.dataFactory.namedNode(rawValue.value);\n break;\n }\n return value;\n }\n /**\n * Convert a SPARQL JSON boolean response to a boolean.\n * This will throw an error if the given reponse was not a valid boolean response.\n * @param sparqlResponse A SPARQL JSON response.\n * @return {IBindings[]} An array of bindings.\n */\n parseJsonBoolean(sparqlResponse) {\n if ('boolean' in sparqlResponse) {\n return sparqlResponse.boolean;\n }\n throw new Error('No valid ASK response was found.');\n }\n /**\n * Convert a SPARQL JSON boolean response stream to a promise resolving to a boolean.\n * This will reject if the given reponse was not a valid boolean response.\n * @param {NodeJS.ReadableStream} sparqlResponseStream A SPARQL JSON response stream.\n * @return {Promise} The response boolean.\n */\n parseJsonBooleanStream(sparqlResponseStream) {\n return new Promise((resolve, reject) => {\n const parser = new JsonParser();\n parser.onError = reject;\n parser.onValue = (value) => {\n if (parser.key === \"boolean\" && typeof value === 'boolean' && parser.stack.length === 1) {\n resolve(value);\n }\n };\n sparqlResponseStream\n .on('error', reject)\n .on('data', d => parser.write(d))\n .on('end', () => reject(new Error('No valid ASK response was found.')));\n });\n }\n}\nexports.SparqlJsonParser = SparqlJsonParser;\n//# sourceMappingURL=SparqlJsonParser.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/Converter\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Converter = void 0;\nconst rdf_literal_1 = require(\"rdf-literal\");\nconst sparqljson_parse_1 = require(\"sparqljson-parse\");\n/**\n * Converts SPARQL JSON results to a tree-based structure by splitting variables on a certain delimiter.\n */\nclass Converter {\n constructor(settings) {\n settings = settings || { delimiter: '_' };\n settings.prefixVariableQuestionMark = false;\n this.delimiter = settings.delimiter || '_';\n this.parser = new sparqljson_parse_1.SparqlJsonParser(settings);\n this.materializeRdfJsTerms = settings.materializeRdfJsTerms;\n }\n /**\n * Adds a value to a tree.\n * @param tree A tree datastructure.\n * @param {string[]} path The path of keys in the tree.\n * @param {Term} value A value to add.\n * @param {string} lastKeyPath The accumulated key path (separated by the given delimiter)\n * through recursive calls, can be empty.\n * @param {ISchema} schema A schema.\n * @param {string} delimiter The string to join key paths by.\n */\n static addValueToTree(tree, path, value, lastKeyPath, schema, delimiter) {\n const key = path[0];\n const keyPath = lastKeyPath ? (lastKeyPath + delimiter + key) : key;\n const singularize = schema.singularizeVariables[keyPath];\n if (path.length === 1) {\n // Leaf nodes\n if (singularize) {\n if (!tree[key]) {\n tree[key] = value;\n }\n }\n else {\n if (!tree[key]) {\n tree[key] = [];\n }\n tree[key].push(value);\n }\n }\n else {\n // Inner nodes\n let nextNode;\n if (singularize) {\n if (!tree[key]) {\n tree[key] = {};\n }\n nextNode = tree[key];\n }\n else {\n if (!tree[key]) {\n tree[key] = [{}];\n }\n nextNode = tree[key][0];\n }\n Converter.addValueToTree(nextNode, path.slice(1), value, keyPath, schema, delimiter);\n }\n }\n /**\n * Recursively merge the two given trees.\n * @param tree1 A first tree (has key priority on literals).\n * @param tree2 A second tree. All arrays will/should only have a single element.\n * @return {any} The merged tree.\n */\n static mergeTrees(tree1, tree2) {\n if (typeof tree1 !== typeof tree2) {\n throw new Error(`Two incompatible tree nodes were found: ${typeof tree1} and ${typeof tree2}`);\n }\n if (Array.isArray(tree1) !== Array.isArray(tree2)) {\n throw new Error(`Two incompatible tree nodes were found: Array?${Array.isArray(tree1)} and Array?${Array.isArray(tree2)}`);\n }\n if (typeof tree1 === 'object' && typeof tree2 === 'object') {\n if (tree1.termType && tree2.termType) {\n if (tree1.equals(tree2)) {\n return { valid: true, result: tree1 };\n }\n else {\n return { valid: false, result: tree1 };\n }\n }\n if (Array.isArray(tree1) && Array.isArray(tree2)) {\n if (tree1.length > 0) {\n const merged = [];\n let valid = false;\n for (const tree1Element of tree1) {\n const mergedElement = Converter.mergeTrees(tree1Element, tree2[0]);\n if (mergedElement.valid) {\n valid = true;\n merged.push(mergedElement.result);\n }\n else {\n merged.push(tree1Element);\n }\n }\n if (valid) {\n return { valid: true, result: merged };\n }\n }\n return { valid: true, result: tree1.concat(tree2) };\n }\n else {\n const merged = {};\n for (const key2 in tree2) {\n merged[key2] = tree2[key2];\n }\n for (const key1 in tree1) {\n if (merged[key1]) {\n const mergedElement = Converter.mergeTrees(tree1[key1], merged[key1]);\n if (mergedElement.valid) {\n merged[key1] = mergedElement.result;\n }\n else {\n return { valid: false, result: tree1 };\n }\n }\n else {\n merged[key1] = tree1[key1];\n }\n }\n return { valid: true, result: merged };\n }\n }\n else {\n throw new Error(`Unmergable tree types: ${typeof tree1} and ${typeof tree2}`);\n }\n }\n /**\n * Materialize all RDF terms in the given tree to raw values.\n * This does not mutate the original tree.\n * @param tree A tree.\n * @return {any} A materialized tree.\n */\n static materializeTree(tree) {\n if (tree.termType) {\n return (0, rdf_literal_1.getTermRaw)(tree);\n }\n else if (Array.isArray(tree)) {\n return tree.map(Converter.materializeTree);\n }\n else {\n const materialized = {};\n for (const key in tree) {\n materialized[key] = Converter.materializeTree(tree[key]);\n }\n return materialized;\n }\n }\n /**\n * Convert a complete SPARQL JSON response to a GraphQL results tree.\n * @param sparqlResponse A SPARQL JSON response.\n * @param {ISchema} schema A schema.\n * @return {any} A GraphQL results tree.\n */\n sparqlJsonResultsToTree(sparqlResponse, schema) {\n return this.bindingsToTree(this.parser.parseJsonResults(sparqlResponse), schema || { singularizeVariables: {} });\n }\n /**\n * Convert an array of bindings to a GraphQL results tree.\n * @param {IBindings[]} bindingsArray An array of bindings.\n * @param {ISchema} schema A schema.\n * @return {any} A GraphQL results tree.\n */\n bindingsToTree(bindingsArray, schema) {\n const singularRoot = schema && schema.singularizeVariables[''];\n let tree = singularRoot ? {} : [];\n for (const bindings of bindingsArray) {\n const subTree = singularRoot ? {} : [{}];\n for (const key in bindings) {\n const path = key.split(this.delimiter);\n const value = bindings[key];\n Converter.addValueToTree(singularRoot ? subTree : subTree[0], path, value, '', schema, this.delimiter);\n }\n tree = Converter.mergeTrees(tree, subTree).result;\n }\n if (this.materializeRdfJsTerms) {\n tree = Converter.materializeTree(tree);\n }\n return tree;\n }\n}\nexports.Converter = Converter;\n//# sourceMappingURL=Converter.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/SparqlXmlParser\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SparqlXmlParser = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst saxes_1 = require(\"@rubensworks/saxes\");\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * Parser for the SPARQL Query Results XML format.\n * @see https://www.w3.org/TR/rdf-sparql-XMLres/\n */\nclass SparqlXmlParser {\n constructor(settings) {\n settings = settings || {};\n this.dataFactory = settings.dataFactory || new rdf_data_factory_1.DataFactory();\n this.prefixVariableQuestionMark = !!settings.prefixVariableQuestionMark;\n }\n /**\n * Convert a SPARQL XML bindings response stream to a stream of bindings objects.\n *\n * The bindings stream will emit a 'variables' event that will contain\n * the array of variables (as RDF.Variable[]), as defined in the response head.\n *\n * @param {NodeJS.ReadableStream} sparqlResponseStream A SPARQL XML response stream.\n * @return {NodeJS.ReadableStream} A stream of bindings.\n */\n parseXmlResultsStream(sparqlResponseStream) {\n const errorListener = (error) => resultStream.emit('error', error);\n sparqlResponseStream.on('error', errorListener);\n const parser = new saxes_1.SaxesParser();\n const stack = [];\n let variablesFound = false;\n let resultsFound = false;\n const variables = [];\n let currentBindings = {};\n let currentBindingName = '';\n let currentBindingType = '';\n let currentBindingAnnotation;\n let currentText = '';\n let currentQuotedTriples = [];\n parser.on(\"error\", errorListener);\n parser.on(\"opentag\", tag => {\n if (tag.name === \"variable\" && this.stackEquals(stack, ['sparql', 'head'])) {\n variables.push(this.dataFactory.variable(tag.attributes.name));\n }\n else if (tag.name === \"results\" && this.stackEquals(stack, ['sparql'])) {\n resultsFound = true;\n }\n else if (tag.name === 'result' && this.stackEquals(stack, ['sparql', 'results'])) {\n currentBindings = {};\n }\n else if (tag.name === 'binding' && this.stackEquals(stack, ['sparql', 'results', 'result'])) {\n currentBindingName = tag.attributes.name || '';\n currentBindingType = '';\n currentBindingAnnotation = '';\n currentText = '';\n currentQuotedTriples = [];\n }\n else if (tag.name === 'triple' && this.stackBeginsWith(stack, ['sparql', 'results', 'result'])) {\n currentQuotedTriples.push({ components: {} });\n }\n else if (stack[stack.length - 1] === 'triple' && this.stackBeginsWith(stack, ['sparql', 'results', 'result', 'binding'])) {\n currentBindingType = '';\n currentBindingAnnotation = '';\n currentText = '';\n if (!['subject', 'predicate', 'object'].includes(tag.name)) {\n errorListener(new Error(`Illegal quoted triple component '${tag.name}' found on line ${parser.line + 1}`));\n }\n else {\n currentQuotedTriples[currentQuotedTriples.length - 1].currentComponent = tag.name;\n }\n }\n else if (this.stackBeginsWith(stack, ['sparql', 'results', 'result', 'binding'])) {\n currentBindingType = tag.name;\n if ('xml:lang' in tag.attributes) {\n currentBindingAnnotation = tag.attributes['xml:lang'];\n }\n else if ('datatype' in tag.attributes) {\n currentBindingAnnotation = this.dataFactory.namedNode(tag.attributes.datatype);\n }\n else {\n currentBindingAnnotation = undefined;\n }\n }\n stack.push(tag.name);\n });\n parser.on(\"closetag\", tag => {\n if (this.stackEquals(stack, ['sparql', 'head'])) {\n resultStream.emit(\"variables\", variables);\n variablesFound = true;\n }\n if (this.stackEquals(stack, ['sparql', 'results', 'result'])) {\n resultStream.push(currentBindings);\n }\n if (this.stackBeginsWith(stack, ['sparql', 'results', 'result', 'binding'])) {\n // Determine current RDF term value\n let term;\n if (!currentBindingName && currentBindingType) {\n errorListener(new Error(`Terms should have a name on line ${parser.line + 1}`));\n }\n else if (currentBindingType === 'uri') {\n term = this.dataFactory.namedNode(currentText);\n }\n else if (currentBindingType === 'bnode') {\n term = this.dataFactory.blankNode(currentText);\n }\n else if (currentBindingType === 'literal') {\n term = this.dataFactory.literal(currentText, currentBindingAnnotation);\n }\n else if (stack[stack.length - 1] === 'triple') {\n const currentQuotedTriple = currentQuotedTriples.pop();\n if (currentQuotedTriple && currentQuotedTriple.components.subject && currentQuotedTriple.components.predicate && currentQuotedTriple.components.object) {\n term = this.dataFactory.quad(currentQuotedTriple.components.subject, currentQuotedTriple.components.predicate, currentQuotedTriple.components.object);\n }\n else {\n errorListener(new Error(`Incomplete quoted triple on line ${parser.line + 1}`));\n }\n }\n else if (currentBindingType) {\n errorListener(new Error(`Invalid term type '${currentBindingType}' on line ${parser.line + 1}`));\n }\n if (term) {\n if (currentQuotedTriples.length > 0) {\n // If we're in a quoted triple, store the term inside the active quoted triple\n const currentQuotedTriple = currentQuotedTriples[currentQuotedTriples.length - 1];\n if (currentQuotedTriple.components[currentQuotedTriple.currentComponent]) {\n errorListener(new Error(`The ${currentQuotedTriple.currentComponent} in a quoted triple on line ${parser.line + 1} was already defined before`));\n }\n currentQuotedTriple.components[currentQuotedTriple.currentComponent] = term;\n }\n else {\n // Store the value in the current bindings object\n const key = this.prefixVariableQuestionMark ? ('?' + currentBindingName) : currentBindingName;\n currentBindings[key] = term;\n }\n }\n currentBindingType = undefined;\n }\n stack.pop();\n });\n parser.on(\"text\", text => {\n if (this.stackBeginsWith(stack, ['sparql', 'results', 'result', 'binding']) && stack[stack.length - 1] === currentBindingType) {\n currentText = text;\n }\n });\n const resultStream = sparqlResponseStream\n .on(\"end\", _ => {\n if (!resultsFound) {\n resultStream.emit(\"error\", new Error(\"No valid SPARQL query results were found.\"));\n }\n else if (!variablesFound) {\n resultStream.emit('variables', []);\n }\n })\n .pipe(new readable_stream_1.Transform({\n objectMode: true,\n transform(chunk, encoding, callback) {\n parser.write(chunk);\n callback();\n }\n }));\n return resultStream;\n }\n /**\n * Convert a SPARQL XML boolean response stream to a promise resolving to a boolean.\n * This will reject if the given response was not a valid boolean response.\n * @param {NodeJS.ReadableStream} sparqlResponseStream A SPARQL XML response stream.\n * @return {Promise} The response boolean.\n */\n parseXmlBooleanStream(sparqlResponseStream) {\n return new Promise((resolve, reject) => {\n const parser = new saxes_1.SaxesParser();\n const stack = [];\n parser.on(\"error\", reject);\n parser.on(\"opentag\", tag => {\n stack.push(tag.name);\n });\n parser.on(\"closetag\", _ => {\n stack.pop();\n });\n parser.on(\"text\", text => {\n if (this.stackEquals(stack, ['sparql', 'boolean'])) {\n resolve(text === 'true');\n }\n });\n sparqlResponseStream\n .on('error', reject)\n .on('data', d => parser.write(d))\n .on('end', () => reject(new Error('No valid ASK response was found.')));\n });\n }\n stackEquals(a, b) {\n return a.length === b.length && a.every((v, i) => b[i] === v);\n }\n stackBeginsWith(a, b) {\n return a.length >= b.length && b.every((v, i) => a[i] === v);\n }\n}\nexports.SparqlXmlParser = SparqlXmlParser;\n//# sourceMappingURL=SparqlXmlParser.js.map","var Promise = require('promise-polyfill')\n\nmodule.exports = function (stream, enc, cb) {\n if (typeof enc === 'function') {\n cb = enc\n enc = null\n }\n\n var str = ''\n\n var p = new Promise (function (resolve, reject) {\n stream.on('data', function (data) {\n str += (typeof enc === 'string') ? data.toString(enc) : data.toString()\n })\n stream.on('end', function () {\n resolve(str)\n })\n stream.on('error', reject)\n })\n if (cb) {\n p.then(function (str) { cb(null, str) }, cb)\n }\n return p\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\n/**\n * Character classes and associated utilities for the 5th edition of XML 1.0.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//\n// Fragments.\n//\nexports.CHAR = \"\\t\\n\\r -\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\";\nexports.S = \" \\t\\r\\n\";\n// tslint:disable-next-line:max-line-length\nexports.NAME_START_CHAR = \":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\uD800\\uDC00-\\uDB7F\\uDFFF\";\nexports.NAME_CHAR = \"-\" + exports.NAME_START_CHAR + \".0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040\";\n//\n// Regular expressions.\n//\nexports.CHAR_RE = new RegExp(\"^[\" + exports.CHAR + \"]$\", \"u\");\nexports.S_RE = new RegExp(\"^[\" + exports.S + \"]+$\", \"u\");\nexports.NAME_START_CHAR_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"]$\", \"u\");\nexports.NAME_CHAR_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]$\", \"u\");\nexports.NAME_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"][\" + exports.NAME_CHAR + \"]*$\", \"u\");\nexports.NMTOKEN_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]+$\", \"u\");\nvar TAB = 9;\nvar NL = 0xA;\nvar CR = 0xD;\nvar SPACE = 0x20;\n//\n// Lists.\n//\n/** All characters in the ``S`` production. */\nexports.S_LIST = [SPACE, NL, CR, TAB];\n/**\n * Determines whether a codepoint matches the ``CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``CHAR``.\n */\nfunction isChar(c) {\n return (c >= SPACE && c <= 0xD7FF) ||\n c === NL || c === CR || c === TAB ||\n (c >= 0xE000 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0x10FFFF);\n}\nexports.isChar = isChar;\n/**\n * Determines whether a codepoint matches the ``S`` (space) production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``S``.\n */\nfunction isS(c) {\n return c === SPACE || c === NL || c === CR || c === TAB;\n}\nexports.isS = isS;\n/**\n * Determines whether a codepoint matches the ``NAME_START_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_START_CHAR``.\n */\nfunction isNameStartChar(c) {\n return ((c >= 0x41 && c <= 0x5A) ||\n (c >= 0x61 && c <= 0x7A) ||\n c === 0x3A ||\n c === 0x5F ||\n c === 0x200C ||\n c === 0x200D ||\n (c >= 0xC0 && c <= 0xD6) ||\n (c >= 0xD8 && c <= 0xF6) ||\n (c >= 0x00F8 && c <= 0x02FF) ||\n (c >= 0x0370 && c <= 0x037D) ||\n (c >= 0x037F && c <= 0x1FFF) ||\n (c >= 0x2070 && c <= 0x218F) ||\n (c >= 0x2C00 && c <= 0x2FEF) ||\n (c >= 0x3001 && c <= 0xD7FF) ||\n (c >= 0xF900 && c <= 0xFDCF) ||\n (c >= 0xFDF0 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0xEFFFF));\n}\nexports.isNameStartChar = isNameStartChar;\n/**\n * Determines whether a codepoint matches the ``NAME_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_CHAR``.\n */\nfunction isNameChar(c) {\n return isNameStartChar(c) ||\n (c >= 0x30 && c <= 0x39) ||\n c === 0x2D ||\n c === 0x2E ||\n c === 0xB7 ||\n (c >= 0x0300 && c <= 0x036F) ||\n (c >= 0x203F && c <= 0x2040);\n}\nexports.isNameChar = isNameChar;\n//# sourceMappingURL=ed5.js.map","\"use strict\";\n/**\n * Character classes and associated utilities for the 2nd edition of XML 1.1.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//\n// Fragments.\n//\nexports.CHAR = \"\\u0001-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\";\nexports.RESTRICTED_CHAR = \"\\u0001-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F-\\u0084\\u0086-\\u009F\";\nexports.S = \" \\t\\r\\n\";\n// tslint:disable-next-line:max-line-length\nexports.NAME_START_CHAR = \":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\uD800\\uDC00-\\uDB7F\\uDFFF\";\nexports.NAME_CHAR = \"-\" + exports.NAME_START_CHAR + \".0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040\";\n//\n// Regular expressions.\n//\nexports.CHAR_RE = new RegExp(\"^[\" + exports.CHAR + \"]$\", \"u\");\nexports.RESTRICTED_CHAR_RE = new RegExp(\"^[\" + exports.RESTRICTED_CHAR + \"]$\", \"u\");\nexports.S_RE = new RegExp(\"^[\" + exports.S + \"]+$\", \"u\");\nexports.NAME_START_CHAR_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"]$\", \"u\");\nexports.NAME_CHAR_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]$\", \"u\");\nexports.NAME_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"][\" + exports.NAME_CHAR + \"]*$\", \"u\");\nexports.NMTOKEN_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]+$\", \"u\");\nvar TAB = 9;\nvar NL = 0xA;\nvar CR = 0xD;\nvar SPACE = 0x20;\n//\n// Lists.\n//\n/** All characters in the ``S`` production. */\nexports.S_LIST = [SPACE, NL, CR, TAB];\n/**\n * Determines whether a codepoint matches the ``CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``CHAR``.\n */\nfunction isChar(c) {\n return (c >= 0x0001 && c <= 0xD7FF) ||\n (c >= 0xE000 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0x10FFFF);\n}\nexports.isChar = isChar;\n/**\n * Determines whether a codepoint matches the ``RESTRICTED_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``RESTRICTED_CHAR``.\n */\nfunction isRestrictedChar(c) {\n return (c >= 0x1 && c <= 0x8) ||\n c === 0xB ||\n c === 0xC ||\n (c >= 0xE && c <= 0x1F) ||\n (c >= 0x7F && c <= 0x84) ||\n (c >= 0x86 && c <= 0x9F);\n}\nexports.isRestrictedChar = isRestrictedChar;\n/**\n * Determines whether a codepoint matches the ``CHAR`` production and does not\n * match the ``RESTRICTED_CHAR`` production. ``isCharAndNotRestricted(x)`` is\n * equivalent to ``isChar(x) && !isRestrictedChar(x)``. This function is faster\n * than running the two-call equivalent.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``CHAR`` and does not match\n * ``RESTRICTED_CHAR``.\n */\nfunction isCharAndNotRestricted(c) {\n return (c === 0x9) ||\n (c === 0xA) ||\n (c === 0xD) ||\n (c > 0x1F && c < 0x7F) ||\n (c === 0x85) ||\n (c > 0x9F && c <= 0xD7FF) ||\n (c >= 0xE000 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0x10FFFF);\n}\nexports.isCharAndNotRestricted = isCharAndNotRestricted;\n/**\n * Determines whether a codepoint matches the ``S`` (space) production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``S``.\n */\nfunction isS(c) {\n return c === SPACE || c === NL || c === CR || c === TAB;\n}\nexports.isS = isS;\n/**\n * Determines whether a codepoint matches the ``NAME_START_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_START_CHAR``.\n */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction isNameStartChar(c) {\n return ((c >= 0x41 && c <= 0x5A) ||\n (c >= 0x61 && c <= 0x7A) ||\n c === 0x3A ||\n c === 0x5F ||\n c === 0x200C ||\n c === 0x200D ||\n (c >= 0xC0 && c <= 0xD6) ||\n (c >= 0xD8 && c <= 0xF6) ||\n (c >= 0x00F8 && c <= 0x02FF) ||\n (c >= 0x0370 && c <= 0x037D) ||\n (c >= 0x037F && c <= 0x1FFF) ||\n (c >= 0x2070 && c <= 0x218F) ||\n (c >= 0x2C00 && c <= 0x2FEF) ||\n (c >= 0x3001 && c <= 0xD7FF) ||\n (c >= 0xF900 && c <= 0xFDCF) ||\n (c >= 0xFDF0 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0xEFFFF));\n}\nexports.isNameStartChar = isNameStartChar;\n/**\n * Determines whether a codepoint matches the ``NAME_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_CHAR``.\n */\nfunction isNameChar(c) {\n return isNameStartChar(c) ||\n (c >= 0x30 && c <= 0x39) ||\n c === 0x2D ||\n c === 0x2E ||\n c === 0xB7 ||\n (c >= 0x0300 && c <= 0x036F) ||\n (c >= 0x203F && c <= 0x2040);\n}\nexports.isNameChar = isNameChar;\n//# sourceMappingURL=ed2.js.map","\"use strict\";\n/**\n * Character class utilities for XML NS 1.0 edition 3.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//\n// Fragments.\n//\n// tslint:disable-next-line:max-line-length\nexports.NC_NAME_START_CHAR = \"A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\uD800\\uDC00-\\uDB7F\\uDFFF\";\nexports.NC_NAME_CHAR = \"-\" + exports.NC_NAME_START_CHAR + \".0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040\";\n//\n// Regular expressions.\n//\nexports.NC_NAME_START_CHAR_RE = new RegExp(\"^[\" + exports.NC_NAME_START_CHAR + \"]$\", \"u\");\nexports.NC_NAME_CHAR_RE = new RegExp(\"^[\" + exports.NC_NAME_CHAR + \"]$\", \"u\");\nexports.NC_NAME_RE = new RegExp(\"^[\" + exports.NC_NAME_START_CHAR + \"][\" + exports.NC_NAME_CHAR + \"]*$\", \"u\");\n/**\n * Determines whether a codepoint matches [[NC_NAME_START_CHAR]].\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches.\n */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction isNCNameStartChar(c) {\n return ((c >= 0x41 && c <= 0x5A) ||\n c === 0x5F ||\n (c >= 0x61 && c <= 0x7A) ||\n (c >= 0xC0 && c <= 0xD6) ||\n (c >= 0xD8 && c <= 0xF6) ||\n (c >= 0x00F8 && c <= 0x02FF) ||\n (c >= 0x0370 && c <= 0x037D) ||\n (c >= 0x037F && c <= 0x1FFF) ||\n (c >= 0x200C && c <= 0x200D) ||\n (c >= 0x2070 && c <= 0x218F) ||\n (c >= 0x2C00 && c <= 0x2FEF) ||\n (c >= 0x3001 && c <= 0xD7FF) ||\n (c >= 0xF900 && c <= 0xFDCF) ||\n (c >= 0xFDF0 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0xEFFFF));\n}\nexports.isNCNameStartChar = isNCNameStartChar;\n/**\n * Determines whether a codepoint matches [[NC_NAME_CHAR]].\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches.\n */\nfunction isNCNameChar(c) {\n return isNCNameStartChar(c) ||\n (c === 0x2D ||\n c === 0x2E ||\n (c >= 0x30 && c <= 0x39) ||\n c === 0x00B7 ||\n (c >= 0x0300 && c <= 0x036F) ||\n (c >= 0x203F && c <= 0x2040));\n}\nexports.isNCNameChar = isNCNameChar;\n//# sourceMappingURL=ed3.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.toSparqlJs = exports.toSparql = exports.Factory = exports.Algebra = exports.translate = void 0;\nconst sparqlAlgebra_1 = __importDefault(require(\"./lib/sparqlAlgebra\"));\nexports.translate = sparqlAlgebra_1.default;\nconst Algebra = __importStar(require(\"./lib/algebra\"));\nexports.Algebra = Algebra;\nconst factory_1 = __importDefault(require(\"./lib/factory\"));\nexports.Factory = factory_1.default;\nconst sparql_1 = require(\"./lib/sparql\");\nObject.defineProperty(exports, \"toSparql\", { enumerable: true, get: function () { return sparql_1.toSparql; } });\nObject.defineProperty(exports, \"toSparqlJs\", { enumerable: true, get: function () { return sparql_1.toSparqlJs; } });\nconst util_1 = __importDefault(require(\"./lib/util\"));\nexports.Util = util_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expressionTypes = exports.types = void 0;\nvar types;\n(function (types) {\n types[\"ALT\"] = \"alt\";\n types[\"ASK\"] = \"ask\";\n types[\"BGP\"] = \"bgp\";\n types[\"CONSTRUCT\"] = \"construct\";\n types[\"DESCRIBE\"] = \"describe\";\n types[\"DISTINCT\"] = \"distinct\";\n types[\"EXPRESSION\"] = \"expression\";\n types[\"EXTEND\"] = \"extend\";\n types[\"FILTER\"] = \"filter\";\n types[\"FROM\"] = \"from\";\n types[\"GRAPH\"] = \"graph\";\n types[\"GROUP\"] = \"group\";\n types[\"INV\"] = \"inv\";\n types[\"JOIN\"] = \"join\";\n types[\"LEFT_JOIN\"] = \"leftjoin\";\n types[\"LINK\"] = \"link\";\n types[\"MINUS\"] = \"minus\";\n types[\"NOP\"] = \"nop\";\n types[\"NPS\"] = \"nps\";\n types[\"ONE_OR_MORE_PATH\"] = \"OneOrMorePath\";\n types[\"ORDER_BY\"] = \"orderby\";\n types[\"PATH\"] = \"path\";\n types[\"PATTERN\"] = \"pattern\";\n types[\"PROJECT\"] = \"project\";\n types[\"REDUCED\"] = \"reduced\";\n types[\"SEQ\"] = \"seq\";\n types[\"SERVICE\"] = \"service\";\n types[\"SLICE\"] = \"slice\";\n types[\"UNION\"] = \"union\";\n types[\"VALUES\"] = \"values\";\n types[\"ZERO_OR_MORE_PATH\"] = \"ZeroOrMorePath\";\n types[\"ZERO_OR_ONE_PATH\"] = \"ZeroOrOnePath\";\n types[\"COMPOSITE_UPDATE\"] = \"compositeupdate\";\n types[\"DELETE_INSERT\"] = \"deleteinsert\";\n types[\"LOAD\"] = \"load\";\n types[\"CLEAR\"] = \"clear\";\n types[\"CREATE\"] = \"create\";\n types[\"DROP\"] = \"drop\";\n types[\"ADD\"] = \"add\";\n types[\"MOVE\"] = \"move\";\n types[\"COPY\"] = \"copy\";\n})(types = exports.types || (exports.types = {}));\nvar expressionTypes;\n(function (expressionTypes) {\n expressionTypes[\"AGGREGATE\"] = \"aggregate\";\n expressionTypes[\"EXISTENCE\"] = \"existence\";\n expressionTypes[\"NAMED\"] = \"named\";\n expressionTypes[\"OPERATOR\"] = \"operator\";\n expressionTypes[\"TERM\"] = \"term\";\n expressionTypes[\"WILDCARD\"] = \"wildcard\";\n})(expressionTypes = exports.expressionTypes || (exports.expressionTypes = {}));\n//# sourceMappingURL=algebra.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst A = __importStar(require(\"./algebra\"));\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nclass Factory {\n constructor(dataFactory) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.stringType = this.createTerm('http://www.w3.org/2001/XMLSchema#string');\n }\n createAlt(input, flatten = true) { return this.flattenMulti({ type: A.types.ALT, input }, flatten); }\n createAsk(input) { return { type: A.types.ASK, input }; }\n createBoundAggregate(variable, aggregate, expression, distinct, separator) {\n const result = this.createAggregateExpression(aggregate, expression, distinct, separator);\n result.variable = variable;\n return result;\n }\n createBgp(patterns) { return { type: A.types.BGP, patterns }; }\n createConstruct(input, template) { return { type: A.types.CONSTRUCT, input, template }; }\n createDescribe(input, terms) { return { type: A.types.DESCRIBE, input, terms }; }\n createDistinct(input) { return { type: A.types.DISTINCT, input }; }\n createExtend(input, variable, expression) { return { type: A.types.EXTEND, input, variable, expression }; }\n createFrom(input, def, named) { return { type: A.types.FROM, input, default: def, named }; }\n createFilter(input, expression) { return { type: A.types.FILTER, input, expression }; }\n createGraph(input, name) { return { type: A.types.GRAPH, input, name }; }\n createGroup(input, variables, aggregates) { return { type: A.types.GROUP, input, variables, aggregates }; }\n createInv(path) { return { type: A.types.INV, path }; }\n createJoin(input, flatten = true) { return this.flattenMulti({ type: A.types.JOIN, input }, flatten); }\n createLeftJoin(left, right, expression) {\n if (expression)\n return { type: A.types.LEFT_JOIN, input: [left, right], expression };\n return { type: A.types.LEFT_JOIN, input: [left, right] };\n }\n createLink(iri) { return { type: A.types.LINK, iri }; }\n createMinus(left, right) { return { type: A.types.MINUS, input: [left, right] }; }\n createNop() { return { type: A.types.NOP }; }\n createNps(iris) { return { type: A.types.NPS, iris }; }\n createOneOrMorePath(path) { return { type: A.types.ONE_OR_MORE_PATH, path }; }\n createOrderBy(input, expressions) { return { type: A.types.ORDER_BY, input, expressions }; }\n createPath(subject, predicate, object, graph) {\n if (graph)\n return { type: A.types.PATH, subject, predicate, object, graph };\n return { type: A.types.PATH, subject, predicate, object, graph: this.dataFactory.defaultGraph() };\n }\n createPattern(subject, predicate, object, graph) {\n const pattern = this.dataFactory.quad(subject, predicate, object, graph);\n pattern.type = A.types.PATTERN;\n return pattern;\n }\n createProject(input, variables) { return { type: A.types.PROJECT, input, variables }; }\n createReduced(input) { return { type: A.types.REDUCED, input }; }\n createSeq(input, flatten = true) { return this.flattenMulti({ type: A.types.SEQ, input }, flatten); }\n createService(input, name, silent) { return { type: A.types.SERVICE, input, name, silent: Boolean(silent) }; }\n createSlice(input, start, length) {\n start = start || 0;\n if (length !== undefined)\n return { type: A.types.SLICE, input, start, length };\n return { type: A.types.SLICE, input, start };\n }\n createUnion(input, flatten = true) { return this.flattenMulti({ type: A.types.UNION, input }, flatten); }\n createValues(variables, bindings) { return { type: A.types.VALUES, variables, bindings }; }\n createZeroOrMorePath(path) { return { type: A.types.ZERO_OR_MORE_PATH, path }; }\n createZeroOrOnePath(path) { return { type: A.types.ZERO_OR_ONE_PATH, path }; }\n createAggregateExpression(aggregator, expression, distinct, separator) {\n if (separator)\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, separator, distinct };\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, distinct };\n }\n createExistenceExpression(not, input) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.EXISTENCE, not, input }; }\n createNamedExpression(name, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.NAMED, name, args }; }\n createOperatorExpression(operator, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.OPERATOR, operator, args }; }\n createTermExpression(term) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.TERM, term }; }\n createWildcardExpression() { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.WILDCARD, wildcard: new sparqljs_1.Wildcard() }; }\n createTerm(str) {\n if (str[0] === '$') {\n str = str.replace('$', '?');\n }\n return (0, rdf_string_1.stringToTerm)(str, this.dataFactory);\n }\n // Update functions\n createCompositeUpdate(updates) { return { type: A.types.COMPOSITE_UPDATE, updates }; }\n createDeleteInsert(deleteQuads, insertQuads, where) {\n const result = { type: A.types.DELETE_INSERT };\n if (deleteQuads)\n result.delete = deleteQuads;\n if (insertQuads)\n result.insert = insertQuads;\n if (where)\n result.where = where;\n return result;\n }\n createLoad(source, destination, silent) {\n const result = { type: A.types.LOAD, source };\n if (destination)\n result.destination = destination;\n return this.addSilent(result, Boolean(silent));\n }\n createClear(source, silent) {\n return this.addSilent({ type: A.types.CLEAR, source }, Boolean(silent));\n }\n createCreate(source, silent) {\n return this.addSilent({ type: A.types.CREATE, source }, Boolean(silent));\n }\n createDrop(source, silent) {\n return this.addSilent({ type: A.types.DROP, source }, Boolean(silent));\n }\n createAdd(source, destination, silent) {\n return this.addSilent({ type: A.types.ADD, source, destination }, Boolean(silent));\n }\n createMove(source, destination, silent) {\n return this.addSilent({ type: A.types.MOVE, source, destination }, Boolean(silent));\n }\n createCopy(source, destination, silent) {\n return this.addSilent({ type: A.types.COPY, source, destination }, Boolean(silent));\n }\n addSilent(input, silent) {\n if (silent)\n input.silent = silent;\n return input;\n }\n flattenMulti(input, flatten) {\n if (!flatten) {\n return input;\n }\n const type = input.type;\n const children = input.input;\n let newChildren = [];\n for (const child of children) {\n if (child.type === type) {\n newChildren.push(...child.input);\n }\n else {\n newChildren.push(child);\n }\n }\n input.input = newChildren;\n return input;\n }\n}\nexports.default = Factory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toSparqlJs = exports.toSparql = void 0;\nconst rdf_isomorphic_1 = require(\"rdf-isomorphic\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst types = Algebra.types;\nconst eTypes = Algebra.expressionTypes;\nlet context;\nconst factory = new factory_1.default();\nfunction toSparql(op, options = {}) {\n let generator = new sparqljs_1.Generator(options);\n return generator.stringify(toSparqlJs(op));\n}\nexports.toSparql = toSparql;\nfunction toSparqlJs(op) {\n resetContext();\n op = removeQuads(op);\n let result = translateOperation(op);\n if (result.type === 'group')\n return result.patterns[0];\n return result;\n}\nexports.toSparqlJs = toSparqlJs;\nfunction resetContext() {\n context = { project: false, extend: [], group: [], aggregates: [], order: [] };\n}\nfunction translateOperation(op) {\n // this allows us to differentiate between BIND and SELECT when translating EXTEND\n // GRAPH was added because the way graphs get added back here is not the same as how they get added in the future\n // ^ seems fine but might have to be changed if problems get detected in the future\n if (op.type !== types.EXTEND && op.type !== types.ORDER_BY && op.type !== types.GRAPH)\n context.project = false;\n switch (op.type) {\n case types.EXPRESSION: return translateExpression(op);\n case types.ASK: return translateProject(op, types.ASK);\n case types.BGP: return translateBgp(op);\n case types.CONSTRUCT: return translateConstruct(op);\n case types.DESCRIBE: return translateProject(op, types.DESCRIBE);\n case types.DISTINCT: return translateDistinct(op);\n case types.EXTEND: return translateExtend(op);\n case types.FROM: return translateFrom(op);\n case types.FILTER: return translateFilter(op);\n case types.GRAPH: return translateGraph(op);\n case types.GROUP: return translateGroup(op);\n case types.JOIN: return translateJoin(op);\n case types.LEFT_JOIN: return translateLeftJoin(op);\n case types.MINUS: return translateMinus(op);\n case types.NOP: return {};\n case types.ORDER_BY: return translateOrderBy(op);\n case types.PATH: return translatePath(op);\n case types.PATTERN: return translatePattern(op);\n case types.PROJECT: return translateProject(op, types.PROJECT);\n case types.REDUCED: return translateReduced(op);\n case types.SERVICE: return translateService(op);\n case types.SLICE: return translateSlice(op);\n case types.UNION: return translateUnion(op);\n case types.VALUES: return translateValues(op);\n // UPDATE operations\n case types.COMPOSITE_UPDATE: return translateCompositeUpdate(op);\n case types.DELETE_INSERT: return translateDeleteInsert(op);\n case types.LOAD: return translateLoad(op);\n case types.CLEAR: return translateClear(op);\n case types.CREATE: return translateCreate(op);\n case types.DROP: return translateDrop(op);\n case types.ADD: return translateAdd(op);\n case types.MOVE: return translateMove(op);\n case types.COPY: return translateCopy(op);\n }\n throw new Error(`Unknown Operation type ${op.type}`);\n}\nfunction translateExpression(expr) {\n switch (expr.expressionType) {\n case eTypes.AGGREGATE: return translateAggregateExpression(expr);\n case eTypes.EXISTENCE: return translateExistenceExpression(expr);\n case eTypes.NAMED: return translateNamedExpression(expr);\n case eTypes.OPERATOR: return translateOperatorExpression(expr);\n case eTypes.TERM: return translateTermExpression(expr);\n case eTypes.WILDCARD: return translateWildcardExpression(expr);\n }\n throw new Error(`Unknown Expression Operation type ${expr.expressionType}`);\n}\nfunction translatePathComponent(path) {\n switch (path.type) {\n case types.ALT: return translateAlt(path);\n case types.INV: return translateInv(path);\n case types.LINK: return translateLink(path);\n case types.NPS: return translateNps(path);\n case types.ONE_OR_MORE_PATH: return translateOneOrMorePath(path);\n case types.SEQ: return translateSeq(path);\n case types.ZERO_OR_MORE_PATH: return translateZeroOrMorePath(path);\n case types.ZERO_OR_ONE_PATH: return translateZeroOrOnePath(path);\n }\n throw new Error(`Unknown Path type ${path.type}`);\n}\nfunction translateTerm(term) {\n return (0, rdf_string_1.termToString)(term);\n}\n// ------------------------- EXPRESSIONS -------------------------\nfunction translateAggregateExpression(expr) {\n const result = {\n expression: translateExpression(expr.expression),\n type: 'aggregate',\n aggregation: expr.aggregator,\n distinct: expr.distinct\n };\n if (expr.separator)\n result.separator = expr.separator;\n return result;\n}\nfunction translateExistenceExpression(expr) {\n return {\n type: 'operation',\n operator: expr.not ? 'notexists' : 'exists',\n args: [{\n type: 'group',\n patterns: util_1.default.flatten([translateOperation(expr.input)])\n }]\n };\n}\nfunction translateNamedExpression(expr) {\n return {\n type: 'functionCall',\n // Wrong typings\n function: expr.name,\n args: expr.args.map(translateExpression)\n };\n}\nfunction translateOperatorExpression(expr) {\n if (expr.operator === 'desc') {\n const result = { expression: translateExpression(expr.args[0]) };\n result.descending = true;\n return result;\n }\n const result = {\n type: 'operation',\n operator: expr.operator,\n args: expr.args.map(translateExpression)\n };\n if (result.operator === 'in' || result.operator === 'notin')\n result.args = [result.args[0]].concat([result.args.slice(1)]);\n return result;\n}\nfunction translateTermExpression(expr) {\n return expr.term;\n}\nfunction translateWildcardExpression(expr) {\n return expr.wildcard;\n}\nfunction arrayToPattern(input) {\n if (!Array.isArray(input))\n return input;\n if (input.length === 1)\n return input[0];\n return {\n type: 'group',\n patterns: input,\n };\n}\n// ------------------------- OPERATIONS -------------------------\n// these get translated in the project function\nfunction translateBoundAggregate(op) {\n return op;\n}\nfunction translateBgp(op) {\n let patterns = op.patterns.map(translatePattern);\n if (patterns.length === 0)\n return null;\n return {\n type: 'bgp',\n triples: patterns\n };\n}\nfunction translateConstruct(op) {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: op.template.map(translatePattern),\n where: util_1.default.flatten([\n translateOperation(op.input)\n ])\n };\n}\nfunction translateDistinct(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].distinct = true;\n return result;\n}\nfunction translateExtend(op) {\n if (context.project) {\n context.extend.push(op);\n return translateOperation(op.input);\n }\n return util_1.default.flatten([\n translateOperation(op.input),\n {\n type: 'bind',\n variable: op.variable,\n expression: translateExpression(op.expression)\n }\n ]);\n}\nfunction translateFrom(op) {\n const result = translateOperation(op.input);\n // Can't type as CONSTRUCT queries do not have `from` field in their type\n let obj = result;\n // project is nested in group object\n if (result.type === 'group') {\n obj = result.patterns[0];\n }\n obj.from = {\n default: op.default,\n named: op.named\n };\n return result;\n}\nfunction translateFilter(op) {\n return {\n type: 'group',\n patterns: util_1.default.flatten([\n translateOperation(op.input),\n { type: 'filter', expression: translateExpression(op.expression) }\n ])\n };\n}\nfunction translateGraph(op) {\n return {\n type: 'graph',\n patterns: util_1.default.flatten([translateOperation(op.input)]),\n name: op.name\n };\n}\nfunction translateGroup(op) {\n const input = translateOperation(op.input);\n const aggs = op.aggregates.map(translateBoundAggregate);\n context.aggregates.push(...aggs);\n // TODO: apply possible extends\n context.group.push(...op.variables);\n return input;\n}\nfunction translateJoin(op) {\n const arr = util_1.default.flatten(op.input.map(translateOperation));\n // Merge bgps\n // This is possible if one side was a path and the other a bgp for example\n return arr.reduce((result, val) => {\n if (val.type !== 'bgp' || result.length == 0 || result[result.length - 1].type !== 'bgp') {\n result.push(val);\n }\n else {\n result[result.length - 1].triples.push(...val.triples);\n }\n return result;\n }, []);\n}\nfunction translateLeftJoin(op) {\n const leftjoin = {\n type: 'optional',\n patterns: [\n translateOperation(op.input[1])\n ]\n };\n if (op.expression) {\n leftjoin.patterns.push({\n type: 'filter',\n expression: translateExpression(op.expression)\n });\n }\n leftjoin.patterns = util_1.default.flatten(leftjoin.patterns);\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n leftjoin\n ]);\n}\nfunction translateMinus(op) {\n let patterns = translateOperation(op.input[1]);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n {\n type: 'minus',\n patterns: patterns\n }\n ]);\n}\nfunction translateOrderBy(op) {\n context.order.push(...op.expressions);\n return translateOperation(op.input);\n}\nfunction translatePath(op) {\n return {\n type: 'bgp',\n triples: [{\n subject: op.subject,\n predicate: translatePathComponent(op.predicate),\n object: op.object\n }]\n };\n}\nfunction translatePattern(op) {\n return {\n subject: op.subject,\n predicate: op.predicate,\n object: op.object\n };\n}\nfunction replaceAggregatorVariables(s, map) {\n let st = util_1.default.isSimpleTerm(s) ? translateTerm(s) : s;\n if (typeof st === 'string') {\n if (map[st])\n return map[st];\n }\n else if (Array.isArray(s)) {\n s = s.map(e => replaceAggregatorVariables(e, map));\n }\n else {\n for (let key of Object.keys(s))\n s[key] = replaceAggregatorVariables(s[key], map);\n }\n return s;\n}\nfunction translateProject(op, type) {\n const result = {\n type: 'query',\n prefixes: {}\n };\n // Makes typing easier in some places\n const select = result;\n let variables;\n if (type === types.PROJECT) {\n result.queryType = 'SELECT';\n variables = op.variables;\n }\n else if (type === types.ASK) {\n result.queryType = 'ASK';\n }\n else if (type === types.DESCRIBE) {\n result.queryType = 'DESCRIBE';\n variables = op.terms;\n }\n // backup values in case of nested queries\n // everything in extend, group, etc. is irrelevant for this project call\n const extend = context.extend;\n const group = context.group;\n const aggregates = context.aggregates;\n const order = context.order;\n resetContext();\n context.project = true;\n let input = util_1.default.flatten([translateOperation(op.input)]);\n if (input.length === 1 && input[0].type === 'group')\n input = input[0].patterns;\n result.where = input;\n let aggregators = {};\n // these can not reference each other\n for (let agg of context.aggregates)\n aggregators[translateTerm(agg.variable)] = translateExpression(agg);\n // do these in reverse order since variables in one extend might apply to an expression in an other extend\n let extensions = {};\n for (let i = context.extend.length - 1; i >= 0; --i) {\n let e = context.extend[i];\n extensions[translateTerm(e.variable)] = replaceAggregatorVariables(translateExpression(e.expression), aggregators);\n }\n if (context.group.length > 0)\n select.group = context.group.map(variable => {\n let v = translateTerm(variable);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // make sure there is only 1 'AS' statement\n return {\n variable,\n expression: result\n };\n }\n return { expression: variable };\n });\n // descending expressions will already be in the correct format due to the structure of those\n if (context.order.length > 0)\n select.order = context.order.map(translateOperation).map(o => o.descending ? o : ({ expression: o }));\n // this needs to happen after the group because it might depend on variables generated there\n if (variables) {\n select.variables = variables.map((term) => {\n let v = translateTerm(term);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // remove used extensions so only unused ones remain\n return {\n variable: term,\n expression: result,\n };\n }\n return term;\n });\n // if the * didn't match any variables this would be empty\n if (select.variables.length === 0)\n select.variables = [new sparqljs_1.Wildcard()];\n }\n // It is possible that at this point some extensions have not yet been resolved.\n // These would be bind operations that are not used in a GROUP BY or SELECT body.\n // We still need to add them though, as they could be relevant to the other extensions.\n const extensionEntries = Object.entries(extensions);\n if (extensionEntries.length > 0) {\n select.where = select.where || [];\n for (const [key, value] of extensionEntries) {\n select.where.push({\n type: 'bind',\n variable: (0, rdf_string_1.stringToTerm)(key),\n expression: value\n });\n }\n }\n // convert filter to 'having' if it contains an aggregator variable\n // could always convert, but is nicer to use filter when possible\n if (result.where.length > 0 && result.where[result.where.length - 1].type === 'filter') {\n const filter = result.where[result.where.length - 1];\n if (objectContainsValues(filter, Object.keys(aggregators))) {\n select.having = util_1.default.flatten([replaceAggregatorVariables(filter.expression, aggregators)]);\n result.where.splice(-1);\n }\n }\n context.extend = extend;\n context.group = group;\n context.aggregates = aggregates;\n context.order = order;\n // subqueries need to be in a group, this will be removed again later for the root query\n return { type: 'group', patterns: [select] };\n}\nfunction objectContainsValues(o, vals) {\n if (util_1.default.isSimpleTerm(o))\n return vals.indexOf(translateTerm(o)) >= 0;\n if (Array.isArray(o))\n return o.some(e => objectContainsValues(e, vals));\n if (o === Object(o))\n return Object.keys(o).some(key => objectContainsValues(o[key], vals));\n return vals.indexOf(o) >= 0;\n}\nfunction translateReduced(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].reduced = true;\n return result;\n}\nfunction translateService(op) {\n let patterns = translateOperation(op.input);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return {\n type: 'service',\n // Typings are wrong, name can also be a variable\n name: op.name,\n silent: op.silent,\n patterns\n };\n}\nfunction translateSlice(op) {\n let result = translateOperation(op.input);\n // results can be nested in a group object\n let obj = result;\n if (result.type && result.type === 'group')\n obj = result.patterns[0];\n if (op.start !== 0)\n obj.offset = op.start;\n if (op.length !== undefined)\n obj.limit = op.length;\n return result;\n}\nfunction translateUnion(op) {\n return {\n type: 'union',\n patterns: op.input.map(translateOperation).map(arrayToPattern),\n };\n}\nfunction translateValues(op) {\n // TODO: check if handled correctly when outside of select block\n return {\n type: 'values',\n values: op.bindings.map(binding => {\n let result = {};\n for (let v of op.variables) {\n let s = `?${v.value}`;\n if (binding[s])\n result[s] = binding[s];\n else\n result[s] = undefined;\n }\n return result;\n })\n };\n}\n// PATH COMPONENTS\nfunction translateAlt(path) {\n const mapped = path.input.map(translatePathComponent);\n if (mapped.every(entry => 'pathType' in entry && entry.pathType === '!')) {\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: util_1.default.flatten(mapped.map(entry => entry.items))\n }]\n };\n }\n return {\n type: 'path',\n pathType: '|',\n items: mapped\n };\n}\nfunction translateInv(path) {\n if (path.path.type === types.NPS) {\n const inv = path.path.iris.map((iri) => {\n return {\n type: 'path',\n pathType: '^',\n items: [iri]\n };\n });\n if (inv.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: inv\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: inv\n }]\n };\n }\n return {\n type: 'path',\n pathType: '^',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateLink(path) {\n return path.iri;\n}\nfunction translateNps(path) {\n if (path.iris.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: path.iris\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: path.iris\n }]\n };\n}\nfunction translateOneOrMorePath(path) {\n return {\n type: 'path',\n pathType: '+',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateSeq(path) {\n return {\n type: 'path',\n pathType: '/',\n items: path.input.map(translatePathComponent)\n };\n}\nfunction translateZeroOrMorePath(path) {\n return {\n type: 'path',\n pathType: '*',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateZeroOrOnePath(path) {\n // Typings are missing '?' operator\n return {\n type: 'path',\n // Typings are missing this path\n pathType: '?',\n items: [translatePathComponent(path.path)]\n };\n}\n// UPDATE OPERATIONS\nfunction translateCompositeUpdate(op) {\n const updates = op.updates.map(update => {\n const result = translateOperation(update);\n return result.updates[0];\n });\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateDeleteInsert(op) {\n var _a;\n let where = op.where;\n let use = undefined;\n if (where && where.type === types.FROM) {\n let from = where;\n where = from.input;\n use = { default: from.default, named: from.named };\n }\n const updates = [{\n updateType: 'insertdelete',\n delete: convertUpdatePatterns(op.delete || []),\n insert: convertUpdatePatterns(op.insert || []),\n }];\n // Typings don't support 'using' yet\n if (use)\n updates[0].using = use;\n // corresponds to empty array in SPARQL.js\n if (!where || (where.type === types.BGP && where.patterns.length === 0))\n updates[0].where = [];\n else {\n const graphs = [];\n let result = translateOperation(removeQuadsRecursive(where, graphs));\n if (result.type === 'group')\n updates[0].where = result.patterns;\n else\n updates[0].where = [result];\n // graph might not be applied yet since there was no project\n // this can only happen if there was a single graph\n if (graphs.length > 0) {\n if (graphs.length !== 1)\n throw new Error('This is unexpected and might indicate an error in graph handling for updates.');\n // ignore if default graph\n if (((_a = graphs[0]) === null || _a === void 0 ? void 0 : _a.value) !== '')\n updates[0].where = [{ type: 'graph', patterns: updates[0].where, name: graphs[0] }];\n }\n }\n // not really necessary but can give cleaner looking queries\n if (!op.delete && !op.where) {\n updates[0].updateType = 'insert';\n delete updates[0].delete;\n delete updates[0].where;\n }\n else if (!op.insert && !op.where) {\n delete updates[0].insert;\n delete updates[0].where;\n if (op.delete.some(pattern => pattern.subject.termType === 'Variable' ||\n pattern.predicate.termType === 'Variable' ||\n pattern.object.termType === 'Variable'))\n updates[0].updateType = 'deletewhere';\n else\n updates[0].updateType = 'delete';\n }\n else if (!op.insert && op.where && op.where.type === 'bgp') {\n if ((0, rdf_isomorphic_1.isomorphic)(op.delete, op.where.patterns)) {\n delete updates[0].where;\n updates[0].updateType = 'deletewhere';\n }\n }\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateLoad(op) {\n // Typings are wrong, destiniation is optional\n const updates = [{ type: 'load', silent: Boolean(op.silent), source: op.source }];\n if (op.destination)\n updates[0].destination = op.destination;\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateClear(op) {\n return translateClearCreateDrop(op, 'clear');\n}\nfunction translateCreate(op) {\n return translateClearCreateDrop(op, 'create');\n}\nfunction translateDrop(op) {\n return translateClearCreateDrop(op, 'drop');\n}\nfunction translateClearCreateDrop(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n // Typings are wrong, type is not required, see for example \"clear-drop\" test\n if (op.source === 'DEFAULT')\n updates[0].graph = { default: true };\n else if (op.source === 'NAMED')\n updates[0].graph = { named: true };\n else if (op.source === 'ALL')\n updates[0].graph = { all: true };\n else\n updates[0].graph = { type: 'graph', name: op.source };\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateAdd(op) {\n return translateUpdateGraphShortcut(op, 'add');\n}\nfunction translateMove(op) {\n return translateUpdateGraphShortcut(op, 'move');\n}\nfunction translateCopy(op) {\n return translateUpdateGraphShortcut(op, 'copy');\n}\nfunction translateUpdateGraphShortcut(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n updates[0].source = op.source === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.source };\n updates[0].destination = op.destination === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.destination };\n return { prefixes: {}, type: 'update', updates };\n}\n// similar to removeQuads but more simplified for UPDATEs\nfunction convertUpdatePatterns(patterns) {\n if (!patterns)\n return [];\n const graphs = {};\n patterns.forEach(pattern => {\n const graph = pattern.graph.value;\n if (!graphs[graph])\n graphs[graph] = [];\n graphs[graph].push(pattern);\n });\n return Object.keys(graphs).map(graph => {\n if (graph === '')\n return { type: 'bgp', triples: graphs[graph].map(translatePattern) };\n return { type: 'graph', triples: graphs[graph].map(translatePattern), name: graphs[graph][0].graph };\n });\n}\nfunction removeQuads(op) {\n return removeQuadsRecursive(op, []);\n}\n// remove quads\nfunction removeQuadsRecursive(op, graphs) {\n if (Array.isArray(op))\n return op.map(sub => removeQuadsRecursive(sub, graphs));\n if (!op.type)\n return op;\n // UPDATE operations with Patterns handle graphs a bit differently\n if (op.type === types.DELETE_INSERT)\n return op;\n if ((op.type === types.PATTERN || op.type === types.PATH) && op.graph) {\n graphs.push(op.graph);\n // Remove non-default graphs\n if (op.graph.name !== '')\n return op.type === types.PATTERN ?\n factory.createPattern(op.subject, op.predicate, op.object) :\n factory.createPath(op.subject, op.predicate, op.object);\n return op;\n }\n const result = {};\n const keyGraphs = {}; // unique graph per key\n const globalNames = {}; // track all the unique graph names for the entire Operation\n for (let key of Object.keys(op)) {\n const newGraphs = [];\n result[key] = removeQuadsRecursive(op[key], newGraphs);\n if (newGraphs.length > 0) {\n keyGraphs[key] = newGraphs;\n for (const graph of newGraphs) {\n globalNames[graph.value] = graph;\n }\n }\n }\n const graphNameSet = Object.keys(globalNames);\n if (graphNameSet.length > 0) {\n // We also need to create graph statement if we are at the edge of certain operations\n if (graphNameSet.length === 1 && ![types.PROJECT, types.SERVICE].includes(op.type))\n graphs.push(globalNames[graphNameSet[0]]);\n else if (op.type === types.BGP) {\n // This is the specific case that got changed because of using quads.\n return splitBgpToGraphs(op, keyGraphs.patterns);\n }\n else {\n // multiple graphs (or project), need to create graph objects for them\n for (let key of Object.keys(keyGraphs)) {\n const value = result[key];\n if (Array.isArray(value))\n result[key] = value.map((child, idx) => keyGraphs[key][0].value === '' ? child : factory.createGraph(child, keyGraphs[key][idx]));\n else if (keyGraphs[key][0].value !== '')\n result[key] = factory.createGraph(value, keyGraphs[key][0]);\n }\n }\n }\n return result;\n}\n// `graphs` should be an array of length identical to `op.patterns`, containing the corresponding graph for each triple.\nfunction splitBgpToGraphs(op, graphs) {\n var _a;\n // Split patterns per graph\n const graphPatterns = {};\n for (let i = 0; i < op.patterns.length; ++i) {\n const pattern = op.patterns[i];\n const graphName = graphs[i].value;\n graphPatterns[graphName] = (_a = graphPatterns[graphName]) !== null && _a !== void 0 ? _a : { patterns: [], graph: graphs[i] };\n graphPatterns[graphName].patterns.push(pattern);\n }\n // Create graph objects for every cluster\n let children = [];\n for (const [graphName, { patterns, graph }] of Object.entries(graphPatterns)) {\n const bgp = factory.createBgp(patterns);\n children.push(graphName === '' ? bgp : factory.createGraph(bgp, graph));\n }\n // Join the graph objects\n let join = children[0];\n for (let i = 1; i < children.length; ++i)\n join = factory.createJoin([join, children[i]]);\n return join;\n}\n//# sourceMappingURL=sparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst equal = require(\"fast-deep-equal/es6\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst Parser = require('sparqljs').Parser;\nconst types = Algebra.types;\nlet variables = new Set();\nlet varCount = 0;\nlet useQuads = false;\nlet factory;\n/**\n * Translates the given SPARQL query to SPARQL Algebra.\n * @param sparql - Either a SPARQL string or an object generated by sparql.js\n * @param options - Optional options object. Current options:\n * * dataFactory: The Datafactory used to generate terms. Default @rdfjs/data-model.\n * * quads: Boolean indicating whether triples should be converted to Quads (consumes GRAPH statements). Default false.\n * * prefixes: Pre-defined prefixes for the given query. Default empty.\n * * baseIRI: Base IRI that should be used for the query. Default undefined (throws error if required).\n * @returns {Operation}\n */\nfunction translate(sparql, options) {\n options = options || {};\n factory = new factory_1.default(options.dataFactory);\n let query;\n if (isString(sparql)) {\n let parser = new Parser(options);\n // resets the identifier counter used for blank nodes\n // provides nicer and more consistent output if there are multiple calls\n parser._resetBlanks();\n query = parser.parse(sparql);\n }\n else {\n query = sparql;\n }\n return translateQuery(query, options.quads, options.blankToVariable);\n}\nexports.default = translate;\nfunction translateQuery(sparql, quads, blankToVariable) {\n // this set is filled in during the inScopeVariables call\n variables = new Set();\n varCount = 0;\n useQuads = Boolean(quads);\n // Assume this is an empty query\n if (!sparql.type)\n return factory.createNop();\n if (sparql.type !== 'query' && sparql.type !== 'update')\n throw new Error('Translate only works on complete query or update objects.');\n let res;\n // find ALL variables here to fill `variables` array\n findAllVariables(sparql);\n if (sparql.type === 'query') {\n // group and where are identical, having only 1 makes parsing easier, can be undefined in DESCRIBE\n const group = { type: 'group', patterns: sparql.where || [] };\n res = translateGraphPattern(group);\n res = translateAggregates(sparql, res);\n }\n else if (sparql.type === 'update') {\n res = translateUpdate(sparql);\n }\n if (blankToVariable) {\n res = translateBlankNodesToVariables(res);\n }\n return res;\n}\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isTerm(term) {\n return Boolean(term === null || term === void 0 ? void 0 : term.termType);\n}\n// This is not completely correct but this way we also catch SPARQL.js triples\nfunction isTriple(triple) {\n return triple.subject && triple.predicate && triple.object;\n}\nfunction isVariable(term) {\n return (term === null || term === void 0 ? void 0 : term.termType) === 'Variable';\n}\n// Will be used to make sure new variables don't overlap\nfunction findAllVariables(thingy) {\n if (isTerm(thingy)) {\n if (isVariable(thingy)) {\n // Variables don't store the `?`\n variables.add(`?${thingy.value}`);\n }\n }\n else if (Array.isArray(thingy)) {\n for (const entry of thingy)\n findAllVariables(entry);\n }\n else if (thingy && typeof thingy === 'object') {\n for (let key of Object.keys(thingy)) {\n // Some variables are hidden in keys (specifically for VALUES)\n if (key.startsWith('?')) {\n variables.add(key);\n }\n else if (key.startsWith('$')) {\n variables.add(`?${key.slice(1)}`);\n }\n findAllVariables(thingy[key]);\n }\n }\n}\n// 18.2.1\nfunction inScopeVariables(thingy) {\n let inScope = {};\n if (isTriple(thingy)) {\n // Note that this could both be an actual Quad or a SPARQL.js triple (without graph)\n const result = [\n inScopeVariables(thingy.subject),\n inScopeVariables(thingy.predicate),\n inScopeVariables(thingy.object),\n thingy.graph ? inScopeVariables(thingy.graph) : {}\n ];\n Object.assign(inScope, ...result);\n }\n else if (isTerm(thingy)) {\n if (isVariable(thingy))\n inScope[thingy.value] = thingy;\n }\n else if (thingy.type === 'bgp') {\n // Slightly cheating but this is a subset of what we support so is fine\n const quads = thingy.triples;\n Object.assign(inScope, ...quads.map(inScopeVariables));\n }\n else if (thingy.type === 'path') {\n // A path predicate should not have variables but just iterating so we could theoretically support this\n Object.assign(inScope, ...thingy.items.map(inScopeVariables));\n }\n else if (thingy.type === 'group' || thingy.type === 'union' || thingy.type === 'optional') {\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'service' || thingy.type === 'graph') {\n Object.assign(inScope, inScopeVariables(thingy.name));\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'bind') {\n Object.assign(inScope, inScopeVariables(thingy.variable));\n }\n else if (thingy.type === 'values') {\n if (thingy.values.length > 0) {\n const vars = Object.keys(thingy.values[0]).map(v => factory.createTerm(v));\n Object.assign(inScope, ...vars.map(inScopeVariables));\n }\n }\n else if (thingy.type === 'query') {\n if (thingy.queryType === 'SELECT' || thingy.queryType === 'DESCRIBE') {\n if (thingy.where && thingy.variables.some(util_1.default.isWildcard))\n Object.assign(inScope, ...thingy.where.map(inScopeVariables));\n for (const v of thingy.variables) {\n if (isVariable(v))\n Object.assign(inScope, inScopeVariables(v));\n else if (v.variable)\n Object.assign(inScope, inScopeVariables(v.variable));\n }\n if (thingy.queryType === 'SELECT') {\n if (thingy.group) {\n // Grouping can be a VariableExpression, typings are wrong\n for (const g of thingy.group) {\n if (g.variable)\n Object.assign(inScope, inScopeVariables(g.variable));\n }\n }\n if (thingy.values) {\n const values = { type: 'values', values: thingy.values };\n Object.assign(inScope, inScopeVariables(values));\n }\n }\n }\n }\n return inScope;\n}\nfunction translateGraphPattern(thingy) {\n // 18.2.2.1\n // already done by sparql parser\n // 18.2.2.3\n // 18.2.2.4\n // 18.2.2.5\n // In Sparql.js, a group with a single BGP in it is a single object.\n if (thingy.type === 'bgp') {\n return translateBgp(thingy);\n }\n // 18.2.2.6 - GroupOrUnionGraphPattern\n if (thingy.type === 'union')\n return factory.createUnion(thingy.patterns.map((p) => {\n // sparqljs doesn't always indicate the children are groups\n if (p.type !== 'group')\n p = { type: 'group', patterns: [p] };\n return translateGraphPattern(p);\n }));\n // 18.2.2.6 - GraphGraphPattern\n if (thingy.type === 'graph') {\n // Sparql.js combines the group graph pattern and the graph itself in the same object.\n // We split here so the group graph pattern can be interpreted correctly.\n const group = { type: 'group', patterns: thingy.patterns };\n let result = translateGraphPattern(group);\n // Output depends on if we use quads or not\n if (useQuads)\n result = recurseGraph(result, thingy.name);\n else\n result = factory.createGraph(result, thingy.name);\n return result;\n }\n // 18.2.2.6 - InlineData\n if (thingy.type === 'values')\n return translateInlineData(thingy);\n // 18.2.2.6 - SubSelect\n if (thingy.type === 'query')\n return translateQuery(thingy, useQuads, false);\n if (thingy.type === 'group') {\n // 18.2.2.2\n let filters = [];\n let nonfilters = [];\n for (let pattern of thingy.patterns)\n (pattern.type === 'filter' ? filters : nonfilters).push(pattern);\n // 18.2.2.6 - GroupGraphPattern\n let result = nonfilters.reduce(accumulateGroupGraphPattern, factory.createBgp([]));\n // 18.2.2.7\n let expressions = filters.map(filter => translateExpression(filter.expression));\n if (expressions.length > 0)\n result = factory.createFilter(result, expressions.reduce((acc, exp) => factory.createOperatorExpression('&&', [acc, exp])));\n return result;\n }\n throw new Error(`Unexpected type: ${thingy.type}`);\n}\nfunction translateExpression(exp) {\n if (util_1.default.isSimpleTerm(exp))\n return factory.createTermExpression(exp);\n if (util_1.default.isQuad(exp)) {\n if (util_1.default.hasQuadVariables(exp))\n return factory.createOperatorExpression('triple', [\n translateExpression(exp.subject),\n translateExpression(exp.predicate),\n translateExpression(exp.object),\n ]);\n else\n return factory.createTermExpression(exp);\n }\n if (util_1.default.isWildcard(exp))\n return factory.createWildcardExpression();\n if ('aggregation' in exp)\n return factory.createAggregateExpression(exp.aggregation, translateExpression(exp.expression), Boolean(exp.distinct), exp.separator);\n if ('function' in exp)\n // Outdated typings\n return factory.createNamedExpression(exp.function, exp.args.map(translateExpression));\n if ('operator' in exp) {\n if (exp.operator === 'exists' || exp.operator === 'notexists')\n return factory.createExistenceExpression(exp.operator === 'notexists', translateGraphPattern(exp.args[0]));\n if (exp.operator === 'in' || exp.operator === 'notin')\n exp.args = [exp.args[0]].concat(exp.args[1]); // sparql.js uses 2 arguments with the second one being a list\n return factory.createOperatorExpression(exp.operator, exp.args.map(translateExpression));\n }\n throw new Error(`Unknown expression: ${JSON.stringify(exp)}`);\n}\nfunction translateBgp(thingy) {\n let patterns = [];\n let joins = [];\n for (let t of thingy.triples) {\n if ('pathType' in t.predicate) {\n // translatePath returns a mix of Quads and Paths\n let path = translatePath(t);\n for (let p of path) {\n if (p.type === types.PATH) {\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n patterns = [];\n joins.push(p);\n }\n else\n patterns.push(p);\n }\n }\n else\n patterns.push(translateQuad(t));\n }\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n if (joins.length === 1)\n return joins[0];\n return factory.createJoin(joins);\n}\nfunction translatePath(triple) {\n let sub = triple.subject;\n let pred = translatePathPredicate(triple.predicate);\n let obj = triple.object;\n return simplifyPath(sub, pred, obj);\n}\nfunction translatePathPredicate(predicate) {\n if (util_1.default.isSimpleTerm(predicate)) {\n if (predicate.termType === 'NamedNode')\n return factory.createLink(predicate);\n else\n throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(predicate)}`);\n }\n if (predicate.pathType === '^')\n return factory.createInv(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '!') {\n // negation is either over a single predicate or a list of disjuncted properties\n let normals = [];\n let inverted = [];\n let items;\n if ('pathType' in predicate.items[0] && predicate.items[0].pathType === '|')\n items = predicate.items[0].items; // the | element\n else\n items = predicate.items;\n for (let item of items) {\n if (util_1.default.isSimpleTerm(item))\n normals.push(item);\n else if (item.pathType === '^')\n inverted.push(item.items[0]);\n else\n throw new Error(`Unexpected item: ${JSON.stringify(item)}`);\n }\n // NPS elements do not have the LINK function\n let normalElement = factory.createNps(normals);\n let invertedElement = factory.createInv(factory.createNps(inverted));\n if (inverted.length === 0)\n return normalElement;\n if (normals.length === 0)\n return invertedElement;\n return factory.createAlt([normalElement, invertedElement,]);\n }\n if (predicate.pathType === '/')\n return factory.createSeq(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '|')\n return factory.createAlt(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '*')\n return factory.createZeroOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '+')\n return factory.createOneOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '?')\n return factory.createZeroOrOnePath(translatePathPredicate(predicate.items[0]));\n throw new Error(`Unable to translate path expression ${JSON.stringify(predicate)}`);\n}\nfunction simplifyPath(subject, predicate, object) {\n if (predicate.type === types.LINK)\n return [factory.createPattern(subject, predicate.iri, object)];\n if (predicate.type === types.INV)\n return simplifyPath(object, predicate.path, subject);\n if (predicate.type === types.SEQ) {\n let joiner = subject;\n return util_1.default.flatten(predicate.input.map((subOp, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? object : generateFreshVar();\n const simplifiedPath = simplifyPath(joiner, subOp, nextJoiner);\n if (nextJoiner.termType === 'Variable') {\n joiner = nextJoiner;\n }\n return simplifiedPath;\n }));\n }\n return [factory.createPath(subject, predicate, object)];\n}\nfunction generateFreshVar() {\n let v = `?var${varCount++}`;\n if (variables.has(v))\n return generateFreshVar();\n variables.add(v);\n return factory.createTerm(v);\n}\nfunction translateQuad(quad) {\n if ('pathType' in quad.predicate) {\n throw new Error('Trying to translate property path to quad.');\n }\n // Graphs are needed here\n // TODO: investigate if typings are wrong or if we internally add graphs to these\n return factory.createPattern(quad.subject, quad.predicate, quad.object, quad.graph);\n}\nlet typeVals = Object.values(types);\nfunction recurseGraph(thingy, graph, replacement) {\n if (thingy.type === types.GRAPH) {\n if (replacement) {\n // At this point we would lose track of the replacement which would result in incorrect results\n // This would indicate the library is not being used as intended though\n throw new Error('Recursing through nested GRAPH statements with a replacement is impossible.');\n }\n // In case there were nested GRAPH statements that were not recursed yet for some reason\n thingy = recurseGraph(thingy.input, thingy.name);\n }\n else if (thingy.type === types.SERVICE) {\n // Service blocks are not affected by enclosing GRAPH statements, so nothing is modified in this block.\n // See https://github.com/joachimvh/SPARQLAlgebra.js/pull/104#issuecomment-1838016303\n }\n else if (thingy.type === types.BGP)\n thingy.patterns = thingy.patterns.map(quad => {\n if (replacement) {\n if (quad.subject.equals(graph))\n quad.subject = replacement;\n if (quad.predicate.equals(graph))\n quad.predicate = replacement;\n if (quad.object.equals(graph))\n quad.object = replacement;\n }\n if (quad.graph.termType === 'DefaultGraph')\n quad.graph = graph;\n return quad;\n });\n else if (thingy.type === types.PATH) {\n if (replacement) {\n if (thingy.subject.equals(graph))\n thingy.subject = replacement;\n if (thingy.object.equals(graph))\n thingy.object = replacement;\n }\n if (thingy.graph.termType === 'DefaultGraph')\n thingy.graph = graph;\n }\n // need to replace variables in subqueries should the graph also be a variable of the same name\n // unless the subquery projects that variable\n else if (thingy.type === types.PROJECT && !replacement) {\n if (!thingy.variables.some(v => v.equals(graph)))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n // this can happen if the query extends an expression to the name of the graph\n // since the extend happens here there should be no further occurrences of this name\n // if there are it's the same situation as above\n else if (thingy.type === types.EXTEND && !replacement) {\n if (thingy.variable.equals(graph))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n else {\n for (let key of Object.keys(thingy)) {\n if (Array.isArray(thingy[key]))\n thingy[key] = thingy[key].map((x) => recurseGraph(x, graph, replacement));\n else if (typeVals.indexOf(thingy[key].type) >= 0) // can't do instanceof on an interface\n thingy[key] = recurseGraph(thingy[key], graph, replacement);\n else if (replacement && isVariable(thingy[key]) && thingy[key].equals(graph))\n thingy[key] = replacement;\n }\n }\n return thingy;\n}\nfunction accumulateGroupGraphPattern(G, E) {\n if (E.type === 'optional') {\n // optional input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n if (A.type === types.FILTER) {\n G = factory.createLeftJoin(G, A.input, A.expression);\n }\n else\n G = factory.createLeftJoin(G, A);\n }\n else if (E.type === 'minus') {\n // minus input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n G = factory.createMinus(G, A);\n }\n else if (E.type === 'bind')\n G = factory.createExtend(G, E.variable, translateExpression(E.expression));\n else if (E.type === 'service') {\n // transform to group so childnodes get parsed correctly\n const group = { type: 'group', patterns: E.patterns };\n const A = factory.createService(translateGraphPattern(group), E.name, E.silent);\n G = simplifiedJoin(G, A);\n }\n else {\n const A = translateGraphPattern(E);\n G = simplifiedJoin(G, A);\n }\n return G;\n}\nfunction simplifiedJoin(G, A) {\n // Note: this is more simplification than requested in 18.2.2.8, but no reason not to do it.\n if (G.type === types.BGP && A.type === types.BGP)\n G = factory.createBgp([...G.patterns, ...A.patterns]);\n // 18.2.2.8 (simplification)\n else if (G.type === types.BGP && G.patterns.length === 0)\n G = A;\n else if (A.type === types.BGP && A.patterns.length === 0) { } // do nothing\n else\n G = factory.createJoin([G, A]);\n return G;\n}\nfunction translateInlineData(values) {\n let variables = (values.values.length === 0 ? [] : Object.keys(values.values[0])).map(factory.createTerm.bind(factory));\n let bindings = values.values.map((binding) => {\n let keys = Object.keys(binding);\n keys = keys.filter(k => binding[k] !== undefined);\n let map = {};\n for (let key of keys)\n map[key] = binding[key];\n return map;\n });\n return factory.createValues(variables, bindings);\n}\n// --------------------------------------- AGGREGATES\nfunction translateAggregates(query, res) {\n // Typings for ConstructQuery are wrong and missing several fields so we will cast quite often to SelectQuery to have partial typings\n const select = query;\n // 18.2.4.1\n const E = [];\n const A = {};\n select.variables = select.variables && select.variables.map(val => mapAggregate(val, A));\n select.having = select.having && select.having.map(val => mapAggregate(val, A));\n select.order = select.order && select.order.map(val => mapAggregate(val, A));\n // if there are any aggregates or if we have a groupBy (both result in a GROUP)\n if (select.group || Object.keys(A).length > 0) {\n const aggregates = Object.keys(A).map(v => translateBoundAggregate(A[v], factory.createTerm(v)));\n const vars = [];\n if (select.group) {\n for (const e of select.group) {\n if (util_1.default.isSimpleTerm(e.expression)) {\n vars.push(e.expression); // this will always be a var, otherwise sparql would be invalid\n }\n else {\n // Incorrect typings, e can have a variable, see for example group-variable test in sparql.js\n const v = 'variable' in e ? e.variable : generateFreshVar();\n res = factory.createExtend(res, v, translateExpression(e.expression));\n vars.push(v);\n }\n }\n }\n res = factory.createGroup(res, vars, aggregates);\n }\n // 18.2.4.2\n if (select.having)\n for (let filter of select.having)\n res = factory.createFilter(res, translateExpression(filter));\n // 18.2.4.3\n if (query.values)\n res = factory.createJoin([res, translateInlineData(query)]);\n // 18.2.4.4\n let PV = [];\n if (query.queryType === 'SELECT' || query.queryType === 'DESCRIBE') {\n // Sort variables for consistent output\n if (query.variables.some((e) => e && util_1.default.isWildcard(e)))\n PV = Object.values(inScopeVariables(query))\n .sort((left, right) => left.value.localeCompare(right.value));\n else {\n // Wildcard has been filtered out above\n for (let v of query.variables) {\n // can have non-variables with DESCRIBE\n if (isVariable(v) || !('variable' in v))\n PV.push(v);\n else if (v.variable) // ... AS ?x\n {\n PV.push(v.variable);\n E.push(v);\n }\n }\n }\n }\n // TODO: Jena simplifies by having a list of extends\n for (let v of E)\n res = factory.createExtend(res, v.variable, translateExpression(v.expression));\n // 18.2.5\n // not using toList and toMultiset\n // 18.2.5.1\n if (select.order)\n res = factory.createOrderBy(res, select.order.map((exp) => {\n let result = translateExpression(exp.expression);\n if (exp.descending)\n result = factory.createOperatorExpression('desc', [result]);\n return result;\n }));\n // 18.2.5.2\n // construct does not need a project (select, ask and describe do)\n if (query.queryType === 'SELECT')\n // Named nodes are only possible in a DESCRIBE so this cast is safe\n res = factory.createProject(res, PV);\n // 18.2.5.3\n if (select.distinct)\n res = factory.createDistinct(res);\n // 18.2.5.4\n if (select.reduced)\n res = factory.createReduced(res);\n // NEW: support for ask/construct/describe queries\n if (query.queryType === 'CONSTRUCT')\n res = factory.createConstruct(res, (query.template || []).map(translateQuad));\n else if (query.queryType === 'ASK')\n res = factory.createAsk(res);\n else if (query.queryType === 'DESCRIBE')\n res = factory.createDescribe(res, PV);\n // Slicing needs to happen after construct/describe\n // 18.2.5.5\n if (select.offset || select.limit)\n res = factory.createSlice(res, select.offset || 0, select.limit);\n if (select.from)\n res = factory.createFrom(res, select.from.default, select.from.named);\n return res;\n}\n// rewrites some of the input sparql object to make use of aggregate variables\nfunction mapAggregate(thingy, aggregates) {\n if ('type' in thingy && thingy.type === 'aggregate') {\n let found = false;\n let v;\n for (let key of Object.keys(aggregates)) {\n if (equal(aggregates[key], thingy)) {\n v = factory.createTerm(key);\n found = true;\n break;\n }\n }\n if (!found) {\n v = generateFreshVar();\n aggregates[(0, rdf_string_1.termToString)(v)] = thingy;\n }\n return v;\n }\n // non-aggregate expression\n if ('expression' in thingy && thingy.expression)\n return { ...thingy, expression: mapAggregate(thingy.expression, aggregates) };\n if ('args' in thingy && thingy.args)\n return { ...thingy, args: thingy.args.map(subthingy => mapAggregate(subthingy, aggregates)) };\n // Normal variable/wildcard\n return thingy;\n}\nfunction translateBoundAggregate(thingy, v) {\n if (thingy.type !== 'aggregate' || !thingy.aggregation)\n throw new Error(`Unexpected input: ${JSON.stringify(thingy)}`);\n const A = translateExpression(thingy);\n A.variable = v;\n return A;\n}\nfunction translateUpdate(thingy) {\n if (thingy.updates.length === 1)\n return translateSingleUpdate(thingy.updates[0]);\n return factory.createCompositeUpdate(thingy.updates.map(translateSingleUpdate));\n}\nfunction translateSingleUpdate(thingy) {\n if ('type' in thingy) {\n if (thingy.type === 'load')\n return translateUpdateGraphLoad(thingy);\n if (thingy.type === 'clear' || thingy.type === 'create' || thingy.type === 'drop')\n return translateUpdateGraph(thingy);\n if (thingy.type === 'add' || thingy.type === 'copy' || thingy.type === 'move')\n return translateUpdateGraphShortcut(thingy);\n }\n else if (thingy.updateType === 'insertdelete' || thingy.updateType === 'deletewhere' || thingy.updateType === 'delete' || thingy.updateType === 'insert')\n return translateInsertDelete(thingy);\n throw new Error(`Unknown update type ${JSON.stringify(thingy)}`);\n}\nfunction translateInsertDelete(thingy) {\n if (!useQuads)\n throw new Error('INSERT/DELETE operations are only supported with quads option enabled');\n let deleteTriples = [];\n let insertTriples = [];\n let where;\n if (thingy.delete)\n deleteTriples = util_1.default.flatten(thingy.delete.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.insert)\n insertTriples = util_1.default.flatten(thingy.insert.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.where && thingy.where.length > 0) {\n where = translateGraphPattern({ type: 'group', patterns: thingy.where });\n // Wrong typings, see test \"using\" in Sparql.js\n const use = thingy.using;\n if (use)\n where = factory.createFrom(where, use.default, use.named);\n else if (thingy.graph)\n // This is equivalent\n where = recurseGraph(where, thingy.graph);\n }\n else if (thingy.updateType === 'deletewhere' && deleteTriples.length > 0) {\n where = factory.createBgp(deleteTriples);\n }\n return factory.createDeleteInsert(deleteTriples.length > 0 ? deleteTriples : undefined, insertTriples.length > 0 ? insertTriples : undefined, where);\n}\n// UPDATE parsing will always return quads and have no GRAPH elements\nfunction translateUpdateTriplesBlock(thingy, graph) {\n let currentGraph = graph;\n if (thingy.type === 'graph')\n currentGraph = thingy.name;\n let currentTriples = thingy.triples;\n if (currentGraph)\n currentTriples = currentTriples.map(triple => Object.assign(triple, { graph: currentGraph }));\n return currentTriples.map(translateQuad);\n}\nfunction translateUpdateGraph(thingy) {\n let source;\n if (util_1.default.isSimpleTerm(thingy.graph))\n source = thingy.graph;\n else if (thingy.graph.all)\n source = 'ALL';\n else if (thingy.graph.default)\n source = 'DEFAULT';\n else if (thingy.graph.named)\n source = 'NAMED';\n else\n source = thingy.graph.name;\n switch (thingy.type) {\n case 'clear': return factory.createClear(source, thingy.silent);\n case 'create': return factory.createCreate(source, thingy.silent);\n case 'drop': return factory.createDrop(source, thingy.silent);\n }\n}\nfunction translateUpdateGraphLoad(thingy) {\n return factory.createLoad(thingy.source, thingy.destination, thingy.silent);\n}\nfunction translateUpdateGraphShortcut(thingy) {\n const source = thingy.source.default ? 'DEFAULT' : thingy.source.name;\n const destination = thingy.destination.default ? 'DEFAULT' : thingy.destination.name;\n switch (thingy.type) {\n case 'copy': return factory.createCopy(source, destination, thingy.silent);\n case 'move': return factory.createMove(source, destination, thingy.silent);\n case 'add': return factory.createAdd(source, destination, thingy.silent);\n }\n}\nfunction translateBlankNodesToVariables(res) {\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(variables).reduce((acc, variable) => {\n acc[variable] = true;\n return acc;\n }, {});\n return util_1.default.mapOperation(res, {\n [Algebra.types.DELETE_INSERT]: (op) => {\n // Make sure blank nodes remain in the INSERT block, but do update the WHERE block\n return {\n result: factory.createDeleteInsert(op.delete, op.insert, op.where && translateBlankNodesToVariables(op.where)),\n recurse: false,\n };\n },\n [Algebra.types.PATH]: (op, factory) => {\n return {\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.PATTERN]: (op, factory) => {\n return {\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT]: (op) => {\n // Blank nodes in CONSTRUCT templates must be maintained\n return {\n result: factory.createConstruct(translateBlankNodesToVariables(op.input), op.template),\n recurse: false,\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = util_1.default.createUniqueVariable(term.value, variablesRaw, factory.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n}\n//# sourceMappingURL=sparqlAlgebra.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst algebra_1 = require(\"./algebra\");\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst rdf_terms_1 = require(\"rdf-terms\");\nclass Util {\n /**\n * Flattens an array of arrays to an array.\n * @param arr - Array of arrays\n */\n static flatten(arr) {\n return Array.prototype.concat(...arr).filter(x => x);\n }\n /**\n * Outputs a JSON object corresponding to the input algebra-like.\n */\n static objectify(algebra) {\n if (algebra.termType) {\n if (algebra.termType === 'Quad') {\n return {\n type: 'pattern',\n termType: 'Quad',\n subject: Util.objectify(algebra.subject),\n predicate: Util.objectify(algebra.predicate),\n object: Util.objectify(algebra.object),\n graph: Util.objectify(algebra.graph),\n };\n }\n else {\n let result = { termType: algebra.termType, value: algebra.value };\n if (algebra.language)\n result.language = algebra.language;\n if (algebra.datatype)\n result.datatype = Util.objectify(algebra.datatype);\n return result;\n }\n }\n if (Array.isArray(algebra))\n return algebra.map(e => Util.objectify(e));\n if (algebra === Object(algebra)) {\n let result = {};\n for (let key of Object.keys(algebra))\n result[key] = Util.objectify(algebra[key]);\n return result;\n }\n return algebra;\n }\n /**\n * Detects all in-scope variables.\n * In practice this means iterating through the entire algebra tree, finding all variables,\n * and stopping when a project function is found.\n * @param {Operation} op - Input algebra tree.\n * @returns {Variable[]} - List of unique in-scope variables.\n */\n static inScopeVariables(op) {\n const variables = [];\n function addVariable(v) {\n if (!variables.find(v2 => v.value === v2.value))\n variables.push(v);\n }\n function recurseTerm(quad) {\n if (quad.subject.termType === 'Variable')\n addVariable(quad.subject);\n if (quad.predicate.termType === 'Variable')\n addVariable(quad.predicate);\n if (quad.object.termType === 'Variable')\n addVariable(quad.object);\n if (quad.graph.termType === 'Variable')\n addVariable(quad.graph);\n if (quad.subject.termType === 'Quad')\n recurseTerm(quad.subject);\n if (quad.predicate.termType === 'Quad')\n recurseTerm(quad.predicate);\n if (quad.object.termType === 'Quad')\n recurseTerm(quad.object);\n if (quad.graph.termType === 'Quad')\n recurseTerm(quad.graph);\n }\n // https://www.w3.org/TR/sparql11-query/#variableScope\n Util.recurseOperation(op, {\n [algebra_1.types.EXPRESSION]: (op) => {\n if (op.expressionType === algebra_1.expressionTypes.AGGREGATE && op.variable) {\n addVariable(op.variable);\n }\n return true;\n },\n [algebra_1.types.EXTEND]: (op) => {\n addVariable(op.variable);\n return true;\n },\n [algebra_1.types.GRAPH]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.GROUP]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n [algebra_1.types.PATH]: (op) => {\n if (op.subject.termType === 'Variable')\n addVariable(op.subject);\n if (op.object.termType === 'Variable')\n addVariable(op.object);\n if (op.graph.termType === 'Variable')\n addVariable(op.graph);\n if (op.subject.termType === 'Quad')\n recurseTerm(op.subject);\n if (op.object.termType === 'Quad')\n recurseTerm(op.object);\n if (op.graph.termType === 'Quad')\n recurseTerm(op.graph);\n return true;\n },\n [algebra_1.types.PATTERN]: (op) => {\n recurseTerm(op);\n return true;\n },\n [algebra_1.types.PROJECT]: (op) => {\n op.variables.forEach(addVariable);\n return false;\n },\n [algebra_1.types.SERVICE]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.VALUES]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n });\n return variables;\n }\n /**\n * Recurses through the given algebra tree\n * A map of callback functions can be provided for individual Operation types to gather data.\n * The return value of those callbacks should indicate whether recursion should be applied or not.\n * Making modifications will change the original input object.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation) => boolean } callbacks - A map of required callback Operations.\n */\n static recurseOperation(op, callbacks) {\n let result = op;\n let doRecursion = true;\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n doRecursion = callback(op);\n if (!doRecursion)\n return;\n let recurseOp = (op) => Util.recurseOperation(op, callbacks);\n switch (result.type) {\n case algebra_1.types.ALT:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.ASK:\n recurseOp(result.input);\n break;\n case algebra_1.types.BGP:\n result.patterns.forEach(recurseOp);\n break;\n case algebra_1.types.CONSTRUCT:\n recurseOp(result.input);\n result.template.map(recurseOp);\n break;\n case algebra_1.types.DESCRIBE:\n recurseOp(result.input);\n break;\n case algebra_1.types.DISTINCT:\n recurseOp(result.input);\n break;\n case algebra_1.types.EXPRESSION:\n if (result.expressionType === algebra_1.expressionTypes.EXISTENCE) {\n recurseOp(result.input);\n }\n break;\n case algebra_1.types.EXTEND:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FILTER:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FROM:\n recurseOp(result.input);\n break;\n case algebra_1.types.GRAPH:\n recurseOp(result.input);\n break;\n case algebra_1.types.GROUP:\n recurseOp(result.input);\n result.aggregates.forEach(recurseOp);\n break;\n case algebra_1.types.INV:\n recurseOp(result.path);\n break;\n case algebra_1.types.JOIN:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.LEFT_JOIN:\n result.input.map(recurseOp);\n if (result.expression)\n recurseOp(result.expression);\n break;\n case algebra_1.types.LINK:\n break;\n case algebra_1.types.MINUS:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.NOP:\n break;\n case algebra_1.types.NPS:\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ORDER_BY:\n recurseOp(result.input);\n result.expressions.forEach(recurseOp);\n break;\n case algebra_1.types.PATH:\n recurseOp(result.predicate);\n break;\n case algebra_1.types.PATTERN:\n break;\n case algebra_1.types.PROJECT:\n recurseOp(result.input);\n break;\n case algebra_1.types.REDUCED:\n recurseOp(result.input);\n break;\n case algebra_1.types.SEQ:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.SERVICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.SLICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.UNION:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.VALUES:\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n recurseOp(result.path);\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result.updates.forEach(update => recurseOp(update));\n break;\n case algebra_1.types.DELETE_INSERT:\n if (result.delete)\n result.delete.forEach(pattern => recurseOp(pattern));\n if (result.insert)\n result.insert.forEach(pattern => recurseOp(pattern));\n if (result.where)\n recurseOp(result.where);\n break;\n // all of these only have graph IDs as values\n case algebra_1.types.LOAD: break;\n case algebra_1.types.CLEAR: break;\n case algebra_1.types.CREATE: break;\n case algebra_1.types.DROP: break;\n case algebra_1.types.ADD: break;\n case algebra_1.types.MOVE: break;\n case algebra_1.types.COPY: break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Creates a deep copy of the given Operation.\n * Creates shallow copies of the non-Operation values.\n * A map of callback functions can be provided for individual Operation types\n * to specifically modify the given objects before triggering recursion.\n * The return value of those callbacks should indicate whether recursion should be applied to this returned object or not.\n * @param {Operation} op - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapOperation(op, callbacks, factory) {\n let result = op;\n let doRecursion = true;\n let copyMetadata = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[op.type];\n if (callback) {\n // Not sure how to get typing correct for op here\n const recurseResult = callback(op, factory);\n result = recurseResult.result;\n doRecursion = recurseResult.recurse;\n copyMetadata = recurseResult.copyMetadata !== false;\n }\n let toCopyMetadata;\n if (copyMetadata && (result.metadata || op.metadata)) {\n toCopyMetadata = { ...result.metadata, ...op.metadata };\n }\n if (!doRecursion) {\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n // Several casts here might be wrong though depending on the callbacks output\n switch (result.type) {\n case algebra_1.types.ALT:\n result = factory.createAlt(result.input.map(mapOp));\n break;\n case algebra_1.types.ASK:\n result = factory.createAsk(mapOp(result.input));\n break;\n case algebra_1.types.BGP:\n result = factory.createBgp(result.patterns.map(mapOp));\n break;\n case algebra_1.types.CONSTRUCT:\n result = factory.createConstruct(mapOp(result.input), result.template.map(mapOp));\n break;\n case algebra_1.types.DESCRIBE:\n result = factory.createDescribe(mapOp(result.input), result.terms);\n break;\n case algebra_1.types.DISTINCT:\n result = factory.createDistinct(mapOp(result.input));\n break;\n case algebra_1.types.EXPRESSION:\n result = Util.mapExpression(result, callbacks, factory);\n break;\n case algebra_1.types.EXTEND:\n result = factory.createExtend(mapOp(result.input), result.variable, mapOp(result.expression));\n break;\n case algebra_1.types.FILTER:\n result = factory.createFilter(mapOp(result.input), mapOp(result.expression));\n break;\n case algebra_1.types.FROM:\n result = factory.createFrom(mapOp(result.input), [...result.default], [...result.named]);\n break;\n case algebra_1.types.GRAPH:\n result = factory.createGraph(mapOp(result.input), result.name);\n break;\n case algebra_1.types.GROUP:\n result = factory.createGroup(mapOp(result.input), [].concat(result.variables), result.aggregates.map(mapOp));\n break;\n case algebra_1.types.INV:\n result = factory.createInv(mapOp(result.path));\n break;\n case algebra_1.types.JOIN:\n result = factory.createJoin(result.input.map(mapOp));\n break;\n case algebra_1.types.LEFT_JOIN:\n result = factory.createLeftJoin(mapOp(result.input[0]), mapOp(result.input[1]), result.expression ? mapOp(result.expression) : undefined);\n break;\n case algebra_1.types.LINK:\n result = factory.createLink(result.iri);\n break;\n case algebra_1.types.MINUS:\n result = factory.createMinus(mapOp(result.input[0]), mapOp(result.input[1]));\n break;\n case algebra_1.types.NOP:\n result = factory.createNop();\n break;\n case algebra_1.types.NPS:\n result = factory.createNps([].concat(result.iris));\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n result = factory.createOneOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ORDER_BY:\n result = factory.createOrderBy(mapOp(result.input), result.expressions.map(mapOp));\n break;\n case algebra_1.types.PATH:\n result = factory.createPath(result.subject, mapOp(result.predicate), result.object, result.graph);\n break;\n case algebra_1.types.PATTERN:\n result = factory.createPattern(result.subject, result.predicate, result.object, result.graph);\n break;\n case algebra_1.types.PROJECT:\n result = factory.createProject(mapOp(result.input), [...result.variables]);\n break;\n case algebra_1.types.REDUCED:\n result = factory.createReduced(mapOp(result.input));\n break;\n case algebra_1.types.SEQ:\n result = factory.createSeq(result.input.map(mapOp));\n break;\n case algebra_1.types.SERVICE:\n result = factory.createService(mapOp(result.input), result.name, result.silent);\n break;\n case algebra_1.types.SLICE:\n result = factory.createSlice(mapOp(result.input), result.start, result.length);\n break;\n case algebra_1.types.UNION:\n result = factory.createUnion(result.input.map(mapOp));\n break;\n case algebra_1.types.VALUES:\n result = factory.createValues([].concat(result.variables), result.bindings.map(b => Object.assign({}, b)));\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n result = factory.createZeroOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n result = factory.createZeroOrOnePath(mapOp(result.path));\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result = factory.createCompositeUpdate(result.updates.map(mapOp));\n break;\n case algebra_1.types.DELETE_INSERT:\n result = factory.createDeleteInsert(result.delete ? result.delete.map(mapOp) : undefined, result.insert ? result.insert.map(mapOp) : undefined, result.where ? mapOp(result.where) : undefined);\n break;\n case algebra_1.types.LOAD:\n result = factory.createLoad(result.source, result.destination, result.silent);\n break;\n case algebra_1.types.CLEAR:\n result = factory.createClear(result.source, result.silent);\n break;\n case algebra_1.types.CREATE:\n result = factory.createCreate(result.source, result.silent);\n break;\n case algebra_1.types.DROP:\n result = factory.createDrop(result.source, result.silent);\n break;\n case algebra_1.types.ADD:\n result = factory.createAdd(result.source, result.destination);\n break;\n case algebra_1.types.MOVE:\n result = factory.createMove(result.source, result.destination);\n break;\n case algebra_1.types.COPY:\n result = factory.createCopy(result.source, result.destination);\n break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n /**\n * Similar to the {@link mapOperation} function but specifically for expressions.\n * Both functions call each other while copying.\n * Should not be called directly since it does not execute the callbacks, these happen in {@link mapOperation}.\n * @param {Expression} expr - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapExpression(expr, callbacks, factory) {\n let result = expr;\n let doRecursion = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[expr.expressionType];\n if (callback)\n ({ result, recurse: doRecursion } = callback(expr, factory));\n if (!doRecursion)\n return result;\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n switch (expr.expressionType) {\n case algebra_1.expressionTypes.AGGREGATE:\n if (expr.variable) {\n return factory.createBoundAggregate(expr.variable, expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n }\n return factory.createAggregateExpression(expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n case algebra_1.expressionTypes.EXISTENCE:\n return factory.createExistenceExpression(expr.not, mapOp(expr.input));\n case algebra_1.expressionTypes.NAMED:\n return factory.createNamedExpression(expr.name, expr.args.map(mapOp));\n case algebra_1.expressionTypes.OPERATOR:\n return factory.createOperatorExpression(expr.operator, expr.args.map(mapOp));\n case algebra_1.expressionTypes.TERM:\n return factory.createTermExpression(expr.term);\n case algebra_1.expressionTypes.WILDCARD:\n return factory.createWildcardExpression();\n default: throw new Error(`Unknown Expression type ${expr.expressionType}`);\n }\n }\n /**\n * Creates a deep clone of the operation.\n * This is syntactic sugar for calling {@link mapOperation} without callbacks.\n * @param {Operation} op - The operation to copy.\n * @returns {Operation} - The deep copy.\n */\n static cloneOperation(op) {\n return Util.mapOperation(op, {});\n }\n /**\n * Creates a deep clone of the expression.\n * This is syntactic sugar for calling {@link mapExpression} without callbacks.\n * @param {Expression} expr - The operation to copy.\n * @returns {Expression} - The deep copy.\n */\n static cloneExpression(expr) {\n return Util.mapExpression(expr, {});\n }\n static createUniqueVariable(label, variables, dataFactory) {\n let counter = 0;\n let labelLoop = label;\n while (variables[labelLoop]) {\n labelLoop = `${label}${counter++}`;\n }\n return dataFactory.variable(labelLoop);\n }\n // separate terms from wildcard since we handle them differently\n static isSimpleTerm(term) {\n return term.termType !== undefined && term.termType !== 'Quad' && term.termType !== 'Wildcard';\n }\n static isQuad(term) {\n return term.termType === 'Quad';\n }\n static hasQuadVariables(quad) {\n return (0, rdf_terms_1.someTermsNested)(quad, term => term.termType === 'Variable');\n }\n static isWildcard(term) {\n return term.termType === 'Wildcard';\n }\n}\nexports.default = Util;\n//# sourceMappingURL=util.js.map","\"use strict\";\n/**\n * An asynchronous iterator library for advanced object pipelines\n * @module asynciterator\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIterator = exports.isIterable = exports.isSourceExpression = exports.isPromise = exports.isEventEmitter = exports.isFunction = exports.range = exports.union = exports.fromIterable = exports.fromIterator = exports.fromArray = exports.single = exports.empty = exports.wrap = exports.WrappingIterator = exports.ClonedIterator = exports.UnionIterator = exports.MultiTransformIterator = exports.SimpleTransformIterator = exports.TransformIterator = exports.BufferedIterator = exports.MappingIterator = exports.DESTINATION = exports.identity = exports.IntegerIterator = exports.ArrayIterator = exports.SingletonIterator = exports.EmptyIterator = exports.AsyncIterator = exports.DESTROYED = exports.ENDED = exports.CLOSED = exports.CLOSING = exports.OPEN = exports.INIT = exports.setTaskScheduler = exports.getTaskScheduler = exports.scheduleTask = exports.LinkedList = void 0;\nconst events_1 = require(\"events\");\nconst linkedlist_1 = require(\"./linkedlist.js\");\nObject.defineProperty(exports, \"LinkedList\", { enumerable: true, get: function () { return linkedlist_1.LinkedList; } });\nconst taskscheduler_1 = require(\"./taskscheduler.js\");\nlet taskScheduler = taskscheduler_1.createTaskScheduler();\n/** Schedules the given task for asynchronous execution. */\nfunction scheduleTask(task) {\n taskScheduler(task);\n}\nexports.scheduleTask = scheduleTask;\n/** Returns the asynchronous task scheduler. */\nfunction getTaskScheduler() {\n return taskScheduler;\n}\nexports.getTaskScheduler = getTaskScheduler;\n/** Sets the asynchronous task scheduler. */\nfunction setTaskScheduler(scheduler) {\n taskScheduler = scheduler;\n}\nexports.setTaskScheduler = setTaskScheduler;\n/**\n ID of the INIT state.\n An iterator is initializing if it is preparing main item generation.\n It can already produce items.\n @type integer\n*/\nexports.INIT = 1 << 0;\n/**\n ID of the OPEN state.\n An iterator is open if it can generate new items.\n @type integer\n*/\nexports.OPEN = 1 << 1;\n/**\n ID of the CLOSING state.\n An iterator is closing if item generation is pending but will not be scheduled again.\n @type integer\n*/\nexports.CLOSING = 1 << 2;\n/**\n ID of the CLOSED state.\n An iterator is closed if it no longer actively generates new items.\n Items might still be available.\n @type integer\n*/\nexports.CLOSED = 1 << 3;\n/**\n ID of the ENDED state.\n An iterator has ended if no further items will become available.\n The 'end' event is guaranteed to have been called when in this state.\n @type integer\n*/\nexports.ENDED = 1 << 4;\n/**\n ID of the DESTROYED state.\n An iterator has been destroyed\n after calling {@link module:asynciterator.AsyncIterator#destroy}.\n The 'end' event has not been called, as pending elements were voided.\n @type integer\n*/\nexports.DESTROYED = 1 << 5;\n/**\n An asynchronous iterator provides pull-based access to a stream of objects.\n @extends module:asynciterator.EventEmitter\n*/\nclass AsyncIterator extends events_1.EventEmitter {\n /** Creates a new `AsyncIterator`. */\n constructor(initialState = exports.OPEN) {\n super();\n this._readable = false;\n this._state = initialState;\n this.on('newListener', waitForDataListener);\n }\n /**\n Changes the iterator to the given state if possible and necessary,\n possibly emitting events to signal that change.\n @protected\n @param {integer} newState The ID of the new state\n @param {boolean} [eventAsync=false] Whether resulting events should be emitted asynchronously\n @returns {boolean} Whether the state was changed\n @emits module:asynciterator.AsyncIterator.end\n */\n _changeState(newState, eventAsync = false) {\n // Validate the state change\n const valid = newState > this._state && this._state < exports.ENDED;\n if (valid) {\n this._state = newState;\n // Emit the `end` event when changing to ENDED\n if (newState === exports.ENDED) {\n if (!eventAsync)\n this.emit('end');\n else\n taskScheduler(() => this.emit('end'));\n }\n }\n return valid;\n }\n /**\n Tries to read the next item from the iterator.\n This is the main method for reading the iterator in _on-demand mode_,\n where new items are only created when needed by consumers.\n If no items are currently available, this methods returns `null`.\n The {@link module:asynciterator.event:readable} event\n will then signal when new items might be ready.\n To read all items from the iterator,\n switch to _flow mode_ by subscribing\n to the {@link module:asynciterator.event:data} event.\n When in flow mode, do not use the `read` method.\n @returns {object?} The next item, or `null` if none is available\n */\n read() {\n return null;\n }\n /**\n The iterator emits a `readable` event when it might have new items available\n after having had no items available right before this event.\n If the iterator is not in flow mode, items can be retrieved\n by calling {@link module:asynciterator.AsyncIterator#read}.\n @event module:asynciterator.readable\n */\n /**\n The iterator emits a `data` event with a new item as soon as it becomes available.\n When one or more listeners are attached to the `data` event,\n the iterator switches to _flow mode_,\n generating and emitting new items as fast as possible.\n This drains the source and might create backpressure on the consumers,\n so only subscribe to this event if this behavior is intended.\n In flow mode, don't use {@link module:asynciterator.AsyncIterator#read}.\n To switch back to _on-demand mode_, remove all listeners from the `data` event.\n You can then obtain items through `read` again.\n @event module:asynciterator.data\n @param {object} item The new item\n */\n /**\n Invokes the callback for each remaining item in the iterator.\n Switches the iterator to flow mode.\n @param {Function} callback A function that will be called with each item\n @param {object?} self The `this` pointer for the callback\n */\n forEach(callback, self) {\n this.on('data', bind(callback, self));\n }\n /**\n Stops the iterator from generating new items.\n Already generated items or terminating items can still be emitted.\n After this, the iterator will end asynchronously.\n @emits module:asynciterator.AsyncIterator.end\n */\n close() {\n if (this._changeState(exports.CLOSED))\n this._endAsync();\n }\n /**\n Destroy the iterator and stop it from generating new items.\n This will not do anything if the iterator was already ended or destroyed.\n All internal resources will be released an no new items will be emitted,\n even not already generated items.\n Implementors should not override this method,\n but instead implement {@link module:asynciterator.AsyncIterator#_destroy}.\n @param {Error} [cause] An optional error to emit.\n @emits module:asynciterator.AsyncIterator.end\n @emits module:asynciterator.AsyncIterator.error Only if an error is passed.\n */\n destroy(cause) {\n if (!this.done) {\n this._destroy(cause, error => {\n cause = cause || error;\n if (cause)\n this.emit('error', cause);\n this._end(true);\n });\n }\n }\n /**\n Called by {@link module:asynciterator.AsyncIterator#destroy}.\n Implementers can override this, but this should not be called directly.\n @param {?Error} cause The reason why the iterator is destroyed.\n @param {Function} callback A callback function with an optional error argument.\n */\n _destroy(cause, callback) {\n callback();\n }\n /**\n Ends the iterator and cleans up.\n Should never be called before {@link module:asynciterator.AsyncIterator#close};\n typically, `close` is responsible for calling `_end`.\n @param {boolean} [destroy] If the iterator should be forcefully destroyed.\n @protected\n @emits module:asynciterator.AsyncIterator.end\n */\n _end(destroy = false) {\n if (this._changeState(destroy ? exports.DESTROYED : exports.ENDED)) {\n this._readable = false;\n this.removeAllListeners('readable');\n this.removeAllListeners('data');\n this.removeAllListeners('end');\n }\n }\n /**\n Asynchronously calls `_end`.\n @protected\n */\n _endAsync() {\n taskScheduler(() => this._end());\n }\n /**\n The `end` event is emitted after the last item of the iterator has been read.\n @event module:asynciterator.end\n */\n /**\n Gets or sets whether this iterator might have items available for read.\n A value of `false` means there are _definitely_ no items available;\n a value of `true` means items _might_ be available.\n @type boolean\n @emits module:asynciterator.AsyncIterator.readable\n */\n get readable() {\n return this._readable;\n }\n set readable(readable) {\n readable = Boolean(readable) && !this.done;\n // Set the readable value only if it has changed\n if (this._readable !== readable) {\n this._readable = readable;\n // If the iterator became readable, emit the `readable` event\n if (readable)\n taskScheduler(() => this.emit('readable'));\n }\n }\n /**\n Gets whether the iterator has stopped generating new items.\n @type boolean\n @readonly\n */\n get closed() {\n return this._state >= exports.CLOSING;\n }\n /**\n Gets whether the iterator has finished emitting items.\n @type boolean\n @readonly\n */\n get ended() {\n return this._state === exports.ENDED;\n }\n /**\n Gets whether the iterator has been destroyed.\n @type boolean\n @readonly\n */\n get destroyed() {\n return this._state === exports.DESTROYED;\n }\n /**\n Gets whether the iterator will not emit anymore items,\n either due to being closed or due to being destroyed.\n @type boolean\n @readonly\n */\n get done() {\n return this._state >= exports.ENDED;\n }\n /* Generates a textual representation of the iterator. */\n toString() {\n const details = this._toStringDetails();\n return `[${this.constructor.name}${details ? ` ${details}` : ''}]`;\n }\n /**\n Generates details for a textual representation of the iterator.\n @protected\n */\n _toStringDetails() {\n return '';\n }\n /**\n Consume all remaining items of the iterator into an array that will be returned asynchronously.\n @param {object} [options] Settings for array creation\n @param {integer} [options.limit] The maximum number of items to place in the array.\n */\n toArray(options) {\n const items = [];\n const limit = typeof (options === null || options === void 0 ? void 0 : options.limit) === 'number' ? options.limit : Infinity;\n return this.ended || limit <= 0 ? Promise.resolve(items) : new Promise((resolve, reject) => {\n // Collect and return all items up to the limit\n const resolveItems = () => resolve(items);\n const pushItem = (item) => {\n items.push(item);\n if (items.length >= limit) {\n this.removeListener('error', reject);\n this.removeListener('data', pushItem);\n this.removeListener('end', resolveItems);\n resolve(items);\n }\n };\n // Start item collection\n this.on('error', reject);\n this.on('data', pushItem);\n this.on('end', resolveItems);\n });\n }\n /**\n Retrieves the property with the given name from the iterator.\n If no callback is passed, it returns the value of the property\n or `undefined` if the property is not set.\n If a callback is passed, it returns `undefined`\n and calls the callback with the property the moment it is set.\n @param {string} propertyName The name of the property to retrieve\n @param {Function?} [callback] A one-argument callback to receive the property value\n @returns {object?} The value of the property (if set and no callback is given)\n */\n getProperty(propertyName, callback) {\n const properties = this._properties;\n // If no callback was passed, return the property value\n if (!callback)\n return properties && properties[propertyName];\n // If the value has been set, send it through the callback\n if (properties && (propertyName in properties)) {\n taskScheduler(() => callback(properties[propertyName]));\n }\n // If the value was not set, store the callback for when the value will be set\n else {\n let propertyCallbacks;\n if (!(propertyCallbacks = this._propertyCallbacks))\n this._propertyCallbacks = propertyCallbacks = Object.create(null);\n if (propertyName in propertyCallbacks)\n propertyCallbacks[propertyName].push(callback);\n else\n propertyCallbacks[propertyName] = [callback];\n }\n return undefined;\n }\n /**\n Sets the property with the given name to the value.\n @param {string} propertyName The name of the property to set\n @param {object?} value The new value of the property\n */\n setProperty(propertyName, value) {\n const properties = this._properties || (this._properties = Object.create(null));\n properties[propertyName] = value;\n // Execute getter callbacks that were waiting for this property to be set\n const propertyCallbacks = this._propertyCallbacks || {};\n const callbacks = propertyCallbacks[propertyName];\n if (callbacks) {\n delete propertyCallbacks[propertyName];\n taskScheduler(() => {\n for (const callback of callbacks)\n callback(value);\n });\n // Remove _propertyCallbacks if no pending callbacks are left\n for (propertyName in propertyCallbacks)\n return;\n delete this._propertyCallbacks;\n }\n }\n /**\n Retrieves all properties of the iterator.\n @returns {object} An object with property names as keys.\n */\n getProperties() {\n const properties = this._properties;\n const copy = {};\n for (const name in properties)\n copy[name] = properties[name];\n return copy;\n }\n /**\n Sets all of the given properties.\n @param {object} properties Key/value pairs of properties to set\n */\n setProperties(properties) {\n for (const propertyName in properties)\n this.setProperty(propertyName, properties[propertyName]);\n }\n /**\n Copies the given properties from the source iterator.\n @param {module:asynciterator.AsyncIterator} source The iterator to copy from\n @param {Array} propertyNames List of property names to copy\n */\n copyProperties(source, propertyNames) {\n for (const propertyName of propertyNames) {\n source.getProperty(propertyName, value => this.setProperty(propertyName, value));\n }\n }\n /**\n Transforms items from this iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n @returns {module:asynciterator.AsyncIterator} A new iterator that maps the items from this iterator\n */\n transform(options) {\n return new SimpleTransformIterator(this, options);\n }\n /**\n Maps items from this iterator using the given function.\n After this operation, only read the returned iterator instead of the current one.\n @param {Function} map A mapping function to call on this iterator's (remaining) items\n @param {object?} self The `this` pointer for the mapping function\n @returns {module:asynciterator.AsyncIterator} A new iterator that maps the items from this iterator\n */\n map(map, self) {\n return new MappingIterator(this, bind(map, self));\n }\n filter(filter, self) {\n return this.map(function (item) {\n return filter.call(self || this, item) ? item : null;\n });\n }\n /**\n * Returns a new iterator containing all of the unique items in the original iterator.\n * @param by - The derived value by which to determine uniqueness (e.g., stringification).\n Defaults to the identity function.\n * @returns An iterator with duplicates filtered out.\n */\n uniq(by = identity) {\n const uniques = new Set();\n return this.filter(function (item) {\n const hashed = by.call(this, item);\n if (!uniques.has(hashed)) {\n uniques.add(hashed);\n return true;\n }\n return false;\n });\n }\n /**\n Prepends the items after those of the current iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} items Items to insert before this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that prepends items to this iterator\n */\n prepend(items) {\n return this.transform({ prepend: items });\n }\n /**\n Appends the items after those of the current iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} items Items to insert after this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that appends items to this iterator\n */\n append(items) {\n return this.transform({ append: items });\n }\n /**\n Surrounds items of the current iterator with the given items.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} prepend Items to insert before this iterator's (remaining) items\n @param {Array|module:asynciterator.AsyncIterator} append Items to insert after this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that appends and prepends items to this iterator\n */\n surround(prepend, append) {\n return this.transform({ prepend, append });\n }\n /**\n Skips the given number of items from the current iterator.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} offset The number of items to skip\n @returns {module:asynciterator.AsyncIterator} A new iterator that skips the given number of items\n */\n skip(offset) {\n return this.map(item => offset-- > 0 ? null : item);\n }\n /**\n Limits the current iterator to the given number of items.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} limit The maximum number of items\n @returns {module:asynciterator.AsyncIterator} A new iterator with at most the given number of items\n */\n take(limit) {\n return this.transform({ limit });\n }\n /**\n Limits the current iterator to the given range.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} start Index of the first item to return\n @param {integer} end Index of the last item to return\n @returns {module:asynciterator.AsyncIterator} A new iterator with items in the given range\n */\n range(start, end) {\n return this.transform({ offset: start, limit: Math.max(end - start + 1, 0) });\n }\n /**\n Creates a copy of the current iterator,\n containing all items emitted from this point onward.\n Further copies can be created; they will all start from this same point.\n After this operation, only read the returned copies instead of the original iterator.\n @returns {module:asynciterator.AsyncIterator} A new iterator that contains all future items of this iterator\n */\n clone() {\n return new ClonedIterator(this);\n }\n /**\n * An AsyncIterator is async iterable.\n * This allows iterators to be used via the for-await syntax.\n *\n * In cases where the returned EcmaScript AsyncIterator will not be fully consumed,\n * it is recommended to manually listen for error events on the main AsyncIterator\n * to avoid uncaught error messages.\n *\n * @returns {ESAsyncIterator} An EcmaScript AsyncIterator\n */\n [Symbol.asyncIterator]() {\n const it = this;\n let currentResolve = null;\n let currentReject = null;\n let pendingError = null;\n it.addListener('readable', tryResolve);\n it.addListener('end', tryResolve);\n it.addListener('error', tryReject);\n // Tries to emit an item or signal the end of the iterator\n function tryResolve() {\n if (currentResolve !== null) {\n if (pendingError !== null) {\n tryReject(pendingError);\n }\n else if (it.done) {\n currentResolve({ done: true, value: undefined });\n currentResolve = currentReject = null;\n removeListeners();\n }\n else {\n const value = it.read();\n if (value !== null) {\n currentResolve({ done: false, value });\n currentResolve = currentReject = null;\n }\n }\n }\n }\n // Tries to emit an error\n function tryReject(error) {\n if (currentReject !== null) {\n currentReject(error);\n currentResolve = currentReject = pendingError = null;\n removeListeners();\n }\n else if (pendingError === null) {\n pendingError = error;\n }\n }\n // Cleans up all attached listeners\n function removeListeners() {\n it.removeListener('readable', tryResolve);\n it.removeListener('end', tryResolve);\n it.removeListener('error', tryReject);\n }\n // An EcmaScript AsyncIterator exposes the next() function that can be invoked repeatedly\n return {\n next() {\n return new Promise((resolve, reject) => {\n currentResolve = resolve;\n currentReject = reject;\n tryResolve();\n });\n },\n };\n }\n}\nexports.AsyncIterator = AsyncIterator;\n// Starts emitting `data` events when `data` listeners are added\nfunction waitForDataListener(eventName) {\n if (eventName === 'data') {\n this.removeListener('newListener', waitForDataListener);\n addSingleListener(this, 'readable', emitData);\n if (this.readable)\n taskScheduler(() => emitData.call(this));\n }\n}\n// Emits new items though `data` events as long as there are `data` listeners\nfunction emitData() {\n // While there are `data` listeners and items, emit them\n let item;\n while (this.listenerCount('data') !== 0 && (item = this.read()) !== null)\n this.emit('data', item);\n // Stop draining the source if there are no more `data` listeners\n if (this.listenerCount('data') === 0 && !this.done) {\n this.removeListener('readable', emitData);\n addSingleListener(this, 'newListener', waitForDataListener);\n }\n}\n// Adds the listener to the event, if it has not been added previously.\nfunction addSingleListener(source, eventName, listener) {\n if (!source.listeners(eventName).includes(listener))\n source.on(eventName, listener);\n}\n/**\n An iterator that doesn't emit any items.\n @extends module:asynciterator.AsyncIterator\n*/\nclass EmptyIterator extends AsyncIterator {\n /** Creates a new `EmptyIterator`. */\n constructor() {\n super();\n this._changeState(exports.ENDED, true);\n }\n}\nexports.EmptyIterator = EmptyIterator;\n/**\n An iterator that emits a single item.\n @extends module:asynciterator.AsyncIterator\n*/\nclass SingletonIterator extends AsyncIterator {\n /**\n Creates a new `SingletonIterator`.\n @param {object} item The item that will be emitted.\n */\n constructor(item) {\n super();\n this._item = item;\n if (item === null)\n this.close();\n else\n this.readable = true;\n }\n /* Reads the item from the iterator. */\n read() {\n const item = this._item;\n this._item = null;\n this.close();\n return item;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return this._item === null ? '' : `(${this._item})`;\n }\n}\nexports.SingletonIterator = SingletonIterator;\n/**\n An iterator that emits the items of a given array.\n @extends module:asynciterator.AsyncIterator\n*/\nclass ArrayIterator extends AsyncIterator {\n /**\n Creates a new `ArrayIterator`.\n @param {Array} items The items that will be emitted.\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {boolean} [options.preserve=true] If false, the passed array can be safely modified\n */\n constructor(items = [], { autoStart = true, preserve = true } = {}) {\n super();\n const buffer = preserve || !Array.isArray(items) ? [...items] : items;\n this._index = 0;\n this._sourceStarted = autoStart !== false;\n this._truncateThreshold = preserve ? -1 : 64;\n if (this._sourceStarted && buffer.length === 0)\n this.close();\n else\n this._buffer = buffer;\n this.readable = true;\n }\n /* Reads an item from the iterator. */\n read() {\n if (!this._sourceStarted)\n this._sourceStarted = true;\n let item = null;\n if (this._buffer) {\n // Emit the current item\n if (this._index < this._buffer.length)\n item = this._buffer[this._index++];\n // Close when all elements have been returned\n if (this._index === this._buffer.length) {\n delete this._buffer;\n this.close();\n }\n // Do need keep old items around indefinitely\n else if (this._index === this._truncateThreshold) {\n this._buffer.splice(0, this._truncateThreshold);\n this._index = 0;\n }\n }\n return item;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `(${this._buffer ? this._buffer.length - this._index : 0})`;\n }\n /* Called by {@link module:asynciterator.AsyncIterator#destroy} */\n _destroy(cause, callback) {\n delete this._buffer;\n callback();\n }\n /**\n Consume all remaining items of the iterator into an array that will be returned asynchronously.\n @param {object} [options] Settings for array creation\n @param {integer} [options.limit] The maximum number of items to place in the array.\n */\n toArray(options = {}) {\n if (!this._buffer)\n return Promise.resolve([]);\n // Determine start and end index\n const { length } = this._buffer;\n const start = this._index;\n const end = typeof options.limit !== 'number' ? length : start + options.limit;\n // Slice the items off the buffer\n const items = this._buffer.slice(start, end);\n this._index = end;\n // Close this iterator when we're past the end\n if (end >= length)\n this.close();\n return Promise.resolve(items);\n }\n}\nexports.ArrayIterator = ArrayIterator;\n/**\n An iterator that enumerates integers in a certain range.\n @extends module:asynciterator.AsyncIterator\n*/\nclass IntegerIterator extends AsyncIterator {\n /**\n Creates a new `IntegerIterator`.\n @param {object} [options] Settings of the iterator\n @param {integer} [options.start=0] The first number to emit\n @param {integer} [options.end=Infinity] The last number to emit\n @param {integer} [options.step=1] The increment between two numbers\n */\n constructor({ start = 0, step = 1, end } = {}) {\n super();\n // Determine the first number\n if (Number.isFinite(start))\n start = Math.trunc(start);\n this._next = start;\n // Determine step size\n if (Number.isFinite(step))\n step = Math.trunc(step);\n this._step = step;\n // Determine the last number\n const ascending = step >= 0;\n const direction = ascending ? Infinity : -Infinity;\n if (Number.isFinite(end))\n end = Math.trunc(end);\n else if (end !== -direction)\n end = direction;\n this._last = end;\n // Start iteration if there is at least one item; close otherwise\n if (!Number.isFinite(start) || (ascending ? start > end : start < end))\n this.close();\n else\n this.readable = true;\n }\n /* Reads an item from the iterator. */\n read() {\n if (this.closed)\n return null;\n const current = this._next, step = this._step, last = this._last, next = this._next += step;\n if (step >= 0 ? next > last : next < last)\n this.close();\n return current;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `(${this._next}...${this._last})`;\n }\n}\nexports.IntegerIterator = IntegerIterator;\n/** Function that maps an element to itself. */\nfunction identity(item) {\n return item;\n}\nexports.identity = identity;\n/** Key indicating the current consumer of a source. */\nexports.DESTINATION = Symbol('destination');\n/**\n An iterator that synchronously transforms every item from its source\n by applying a mapping function.\n @extends module:asynciterator.AsyncIterator\n*/\nclass MappingIterator extends AsyncIterator {\n /**\n * Applies the given mapping to the source iterator.\n */\n constructor(source, map = identity, options = {}) {\n super();\n this._map = map;\n this._source = ensureSourceAvailable(source);\n this._destroySource = options.destroySource !== false;\n // Close if the source is already empty\n if (source.done) {\n this.close();\n }\n // Otherwise, wire up the source for reading\n else {\n this._source[exports.DESTINATION] = this;\n this._source.on('end', destinationClose);\n this._source.on('error', destinationEmitError);\n this._source.on('readable', destinationSetReadable);\n this.readable = this._source.readable;\n }\n }\n /* Tries to read the next item from the iterator. */\n read() {\n if (!this.done) {\n // Try to read an item that maps to a non-null value\n if (this._source.readable) {\n let item, mapped;\n while ((item = this._source.read()) !== null) {\n if ((mapped = this._map(item)) !== null)\n return mapped;\n }\n }\n this.readable = false;\n // Close this iterator if the source is empty\n if (this._source.done)\n this.close();\n }\n return null;\n }\n /* Cleans up the source iterator and ends. */\n _end(destroy) {\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[exports.DESTINATION];\n if (this._destroySource)\n this._source.destroy();\n super._end(destroy);\n }\n}\nexports.MappingIterator = MappingIterator;\n// Validates an AsyncIterator for use as a source within another AsyncIterator\nfunction ensureSourceAvailable(source, allowDestination = false) {\n if (!source || !isFunction(source.read) || !isFunction(source.on))\n throw new TypeError(`Invalid source: ${source}`);\n if (!allowDestination && source[exports.DESTINATION])\n throw new Error('The source already has a destination');\n return source;\n}\n/**\n An iterator that maintains an internal buffer of items.\n This class serves as a base class for other iterators\n with a typically complex item generation process.\n @extends module:asynciterator.AsyncIterator\n*/\nclass BufferedIterator extends AsyncIterator {\n /**\n Creates a new `BufferedIterator`.\n @param {object} [options] Settings of the iterator\n @param {integer} [options.maxBufferSize=4] The number of items to preload in the internal buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n */\n constructor({ maxBufferSize = 4, autoStart = true } = {}) {\n super(exports.INIT);\n this._buffer = new linkedlist_1.LinkedList();\n this._maxBufferSize = 4;\n this._reading = true;\n this._pushedCount = 0;\n this.maxBufferSize = maxBufferSize;\n taskScheduler(() => this._init(autoStart));\n this._sourceStarted = autoStart !== false;\n }\n /**\n The maximum number of items to preload in the internal buffer.\n A `BufferedIterator` tries to fill its buffer as far as possible.\n Set to `Infinity` to fully drain the source.\n @type number\n */\n get maxBufferSize() {\n return this._maxBufferSize;\n }\n set maxBufferSize(maxBufferSize) {\n // Allow only positive integers and infinity\n if (maxBufferSize !== Infinity) {\n maxBufferSize = !Number.isFinite(maxBufferSize) ? 4 :\n Math.max(Math.trunc(maxBufferSize), 1);\n }\n // Only set the maximum buffer size if it changes\n if (this._maxBufferSize !== maxBufferSize) {\n this._maxBufferSize = maxBufferSize;\n // Ensure sufficient elements are buffered\n if (this._state === exports.OPEN)\n this._fillBuffer();\n }\n }\n /**\n Initializing the iterator by calling {@link BufferedIterator#_begin}\n and changing state from INIT to OPEN.\n @protected\n @param {boolean} autoStart Whether reading of items should immediately start after OPEN.\n */\n _init(autoStart) {\n // Perform initialization tasks\n let doneCalled = false;\n this._reading = true;\n this._begin(() => {\n if (doneCalled)\n throw new Error('done callback called multiple times');\n doneCalled = true;\n // Open the iterator and start buffering\n this._reading = false;\n this._changeState(exports.OPEN);\n if (autoStart)\n this._fillBufferAsync();\n // If reading should not start automatically, the iterator doesn't become readable.\n // Therefore, mark the iterator as (potentially) readable so consumers know it might be read.\n else\n this.readable = true;\n });\n }\n /**\n Writes beginning items and opens iterator resources.\n Should never be called before {@link BufferedIterator#_init};\n typically, `_init` is responsible for calling `_begin`.\n @protected\n @param {function} done To be called when initialization is complete\n */\n _begin(done) {\n done();\n }\n /**\n Tries to read the next item from the iterator.\n If the buffer is empty,\n this method calls {@link BufferedIterator#_read} to fetch items.\n @returns {object?} The next item, or `null` if none is available\n */\n read() {\n if (this.done)\n return null;\n // An explicit read kickstarts the source\n if (!this._sourceStarted)\n this._sourceStarted = true;\n // Try to retrieve an item from the buffer\n const buffer = this._buffer;\n let item;\n if (buffer.empty) {\n item = null;\n this.readable = false;\n }\n else {\n item = buffer.shift();\n }\n // If the buffer is becoming empty, either fill it or end the iterator\n if (!this._reading && buffer.length < this._maxBufferSize) {\n // If the iterator is not closed and thus may still generate new items, fill the buffer\n if (!this.closed)\n this._fillBufferAsync();\n // No new items will be generated, so if none are buffered, the iterator ends here\n else if (buffer.empty)\n this._endAsync();\n }\n return item;\n }\n /**\n Tries to generate the given number of items.\n Implementers should add `count` items through {@link BufferedIterator#_push}.\n @protected\n @param {integer} count The number of items to generate\n @param {function} done To be called when reading is complete\n */\n _read(count, done) {\n done();\n }\n /**\n Adds an item to the internal buffer.\n @protected\n @param {object} item The item to add\n @emits module:asynciterator.AsyncIterator.readable\n */\n _push(item) {\n if (!this.done) {\n this._pushedCount++;\n this._buffer.push(item);\n this.readable = true;\n }\n }\n /**\n Fills the internal buffer until `this._maxBufferSize` items are present.\n This method calls {@link BufferedIterator#_read} to fetch items.\n @protected\n @emits module:asynciterator.AsyncIterator.readable\n */\n _fillBuffer() {\n let neededItems;\n // Avoid recursive reads\n if (this._reading) {\n // Do nothing\n }\n // If iterator closing started in the meantime, don't generate new items anymore\n else if (this.closed) {\n this._completeClose();\n }\n // Otherwise, try to fill empty spaces in the buffer by generating new items\n else if ((neededItems = Math.min(this._maxBufferSize - this._buffer.length, 128)) > 0) {\n // Acquire reading lock and start reading, counting pushed items\n this._pushedCount = 0;\n this._reading = true;\n this._read(neededItems, () => {\n // Verify the callback is only called once\n if (!neededItems)\n throw new Error('done callback called multiple times');\n neededItems = 0;\n // Release reading lock\n this._reading = false;\n // If the iterator was closed while reading, complete closing\n if (this.closed) {\n this._completeClose();\n }\n // If the iterator pushed one or more items,\n // it might currently be able to generate additional items\n // (even though all pushed items might already have been read)\n else if (this._pushedCount) {\n this.readable = true;\n // If the buffer is insufficiently full, continue filling\n if (this._buffer.length < this._maxBufferSize / 2)\n this._fillBufferAsync();\n }\n });\n }\n }\n /**\n Schedules `_fillBuffer` asynchronously.\n */\n _fillBufferAsync() {\n // Acquire reading lock to avoid recursive reads\n if (!this._reading) {\n this._reading = true;\n taskScheduler(() => {\n // Release reading lock so _fillBuffer` can take it\n this._reading = false;\n this._fillBuffer();\n });\n }\n }\n /**\n Stops the iterator from generating new items\n after a possible pending read operation has finished.\n Already generated, pending, or terminating items can still be emitted.\n After this, the iterator will end asynchronously.\n @emits module:asynciterator.AsyncIterator.end\n */\n close() {\n // If the iterator is not currently reading, we can close immediately\n if (!this._reading)\n this._completeClose();\n // Closing cannot complete when reading, so temporarily assume CLOSING state\n // `_fillBuffer` becomes responsible for calling `_completeClose`\n else\n this._changeState(exports.CLOSING);\n }\n /**\n Stops the iterator from generating new items,\n switching from `CLOSING` state into `CLOSED` state.\n @protected\n @emits module:asynciterator.AsyncIterator.end\n */\n _completeClose() {\n if (this._changeState(exports.CLOSED)) {\n // Write possible terminating items\n this._reading = true;\n this._flush(() => {\n if (!this._reading)\n throw new Error('done callback called multiple times');\n this._reading = false;\n // If no items are left, end the iterator\n // Otherwise, `read` becomes responsible for ending the iterator\n if (this._buffer.empty)\n this._endAsync();\n });\n }\n }\n /* Called by {@link module:asynciterator.AsyncIterator#destroy} */\n _destroy(cause, callback) {\n this._buffer.clear();\n callback();\n }\n /**\n Writes terminating items and closes iterator resources.\n Should never be called before {@link BufferedIterator#close};\n typically, `close` is responsible for calling `_flush`.\n @protected\n @param {function} done To be called when termination is complete\n */\n _flush(done) {\n done();\n }\n /**\n Generates details for a textual representation of the iterator.\n @protected\n */\n _toStringDetails() {\n const buffer = this._buffer;\n return `{${buffer.empty ? '' : `next: ${buffer.first}, `}buffer: ${buffer.length}}`;\n }\n}\nexports.BufferedIterator = BufferedIterator;\n/**\n An iterator that generates items based on a source iterator.\n This class serves as a base class for other iterators.\n @extends module:asynciterator.BufferedIterator\n*/\nclass TransformIterator extends BufferedIterator {\n /**\n Creates a new `TransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object} [options] Settings of the iterator\n @param {integer} [options.maxBufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its transformation yields no items\n @param {boolean} [options.destroySource=true] Whether the source should be destroyed when this transformed iterator is closed or destroyed\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n */\n constructor(source, options = source || {}) {\n super(options);\n this._boundPush = (item) => this._push(item);\n // Shift parameters if needed\n if (!isSourceExpression(source))\n source = options.source;\n // The passed source is an AsyncIterator or readable stream\n if (isEventEmitter(source)) {\n this.source = source;\n }\n // The passed value is a promise or source creation function\n else if (source) {\n this._createSource = isPromise(source) ? () => source : source;\n if (this._sourceStarted)\n this._loadSourceAsync();\n }\n // Set other options\n this._optional = Boolean(options.optional);\n this._destroySource = options.destroySource !== false;\n }\n /**\n The source this iterator generates items from.\n @type module:asynciterator.AsyncIterator\n */\n get source() {\n if (isFunction(this._createSource))\n this._loadSourceAsync();\n return this._source;\n }\n set source(value) {\n // Validate and set source\n const source = this._source = this._validateSource(value);\n source[exports.DESTINATION] = this;\n // Do not read the source if this iterator already ended\n if (this.done) {\n if (this._destroySource)\n source.destroy();\n }\n // Close this iterator if the source already ended\n else if (source.done) {\n this.close();\n }\n // Otherwise, react to source events\n else {\n source.on('end', destinationCloseWhenDone);\n source.on('readable', destinationFillBuffer);\n source.on('error', destinationEmitError);\n }\n }\n /**\n Initializes a source that was set through a promise\n @protected\n */\n _loadSourceAsync() {\n if (isFunction(this._createSource)) {\n // Assign the source after resolving\n Promise.resolve(this._createSource()).then(source => {\n delete this._createSource;\n this.source = source;\n this._fillBuffer();\n }, error => this.emit('error', error));\n // Signal that source creation is pending\n this._createSource = null;\n }\n }\n /**\n Validates whether the given iterator can be used as a source.\n @protected\n @param {object} source The source to validate\n @param {boolean} allowDestination Whether the source can already have a destination\n */\n _validateSource(source, allowDestination = false) {\n if (this._source || typeof this._createSource !== 'undefined')\n throw new Error('The source cannot be changed after it has been set');\n return ensureSourceAvailable(source, allowDestination);\n }\n /**\n Tries to read transformed items.\n */\n _read(count, done) {\n const next = () => {\n // Continue transforming until at least `count` items have been pushed\n if (this._pushedCount < count && !this.closed)\n taskScheduler(() => this._readAndTransform(next, done));\n else\n done();\n };\n this._readAndTransform(next, done);\n }\n /**\n Reads a transforms an item\n */\n _readAndTransform(next, done) {\n // If the source exists and still can read items,\n // try to read and transform the next item.\n let item;\n const source = this.source;\n if (!source || source.done || (item = source.read()) === null)\n done();\n else if (!this._optional)\n this._transform(item, next, this._boundPush);\n else\n this._optionalTransform(item, next);\n }\n /**\n Tries to transform the item;\n if the transformation yields no items, pushes the original item.\n */\n _optionalTransform(item, done) {\n const pushedCount = this._pushedCount;\n this._transform(item, () => {\n if (pushedCount === this._pushedCount)\n this._push(item);\n done();\n }, this._boundPush);\n }\n /**\n Generates items based on the item from the source.\n Implementers should add items through {@link BufferedIterator#_push}.\n The default implementation pushes the source item as-is.\n @protected\n @param {object} item The last read item from the source\n @param {function} done To be called when reading is complete\n @param {function} push A callback to push zero or more transformation results.\n */\n _transform(item, done, push) {\n push(item);\n done();\n }\n /**\n Closes the iterator when pending items are transformed.\n @protected\n */\n _closeWhenDone() {\n this.close();\n }\n /* Cleans up the source iterator and ends. */\n _end(destroy) {\n const source = this._source;\n if (source) {\n source.removeListener('end', destinationCloseWhenDone);\n source.removeListener('error', destinationEmitError);\n source.removeListener('readable', destinationFillBuffer);\n delete source[exports.DESTINATION];\n if (this._destroySource)\n source.destroy();\n }\n super._end(destroy);\n }\n}\nexports.TransformIterator = TransformIterator;\nfunction destinationSetReadable() {\n this[exports.DESTINATION].readable = true;\n}\nfunction destinationEmitError(error) {\n this[exports.DESTINATION].emit('error', error);\n}\nfunction destinationClose() {\n this[exports.DESTINATION].close();\n}\nfunction destinationCloseWhenDone() {\n this[exports.DESTINATION]._closeWhenDone();\n}\nfunction destinationFillBuffer() {\n if (this[exports.DESTINATION]._sourceStarted !== false)\n this[exports.DESTINATION]._fillBuffer();\n}\n/**\n An iterator that generates items based on a source iterator\n and simple transformation steps passed as arguments.\n @extends module:asynciterator.TransformIterator\n*/\nclass SimpleTransformIterator extends TransformIterator {\n /**\n Creates a new `SimpleTransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n */\n constructor(source, options) {\n super(source, options);\n this._offset = 0;\n this._limit = Infinity;\n this._filter = (item) => true;\n // Set transformation steps from the options\n options = options || (!isSourceExpression(source) ? source : null);\n if (options) {\n const transform = isFunction(options) ? options : options.transform;\n const { limit, offset, filter, map, prepend, append } = options;\n // Don't emit any items when bounds are unreachable\n if (offset === Infinity || limit === -Infinity) {\n this._limit = 0;\n }\n else {\n if (Number.isFinite(offset))\n this._offset = Math.max(Math.trunc(offset), 0);\n if (Number.isFinite(limit))\n this._limit = Math.max(Math.trunc(limit), 0);\n if (isFunction(filter))\n this._filter = filter;\n if (isFunction(map))\n this._map = map;\n this._transform = isFunction(transform) ? transform : null;\n }\n if (prepend)\n this._prepender = isEventEmitter(prepend) ? prepend : fromArray(prepend);\n if (append)\n this._appender = isEventEmitter(append) ? append : fromArray(append);\n }\n }\n /* Tries to read and transform items */\n _read(count, done) {\n const next = () => this._readAndTransformSimple(count, nextAsync, done);\n this._readAndTransformSimple(count, nextAsync, done);\n function nextAsync() {\n taskScheduler(next);\n }\n }\n /* Reads and transform items */\n _readAndTransformSimple(count, next, done) {\n // Verify we have a readable source\n let item;\n const { source } = this;\n if (!source || source.done) {\n done();\n return;\n }\n // Verify we are still below the limit\n if (this._limit === 0)\n this.close();\n // Try to read the next item until at least `count` items have been pushed\n while (!this.closed && this._pushedCount < count && (item = source.read()) !== null) {\n // Verify the item passes the filter and we've reached the offset\n if (!this._filter(item) || this._offset !== 0 && this._offset--)\n continue;\n // Synchronously map the item\n const mappedItem = typeof this._map === 'undefined' ? item : this._map(item);\n // Skip `null` items, pushing the original item if the mapping was optional\n if (mappedItem === null) {\n if (this._optional)\n this._push(item);\n }\n // Skip the asynchronous phase if no transformation was specified\n else if (!isFunction(this._transform)) {\n this._push(mappedItem);\n }\n // Asynchronously transform the item, and wait for `next` to call back\n else {\n if (!this._optional)\n this._transform(mappedItem, next, this._boundPush);\n else\n this._optionalTransform(mappedItem, next);\n return;\n }\n // Stop when we've reached the limit\n if (--this._limit === 0)\n this.close();\n }\n done();\n }\n // Prepends items to the iterator\n _begin(done) {\n this._insert(this._prepender, done);\n delete this._prepender;\n }\n // Appends items to the iterator\n _flush(done) {\n this._insert(this._appender, done);\n delete this._appender;\n }\n // Inserts items in the iterator\n _insert(inserter, done) {\n const push = (item) => this._push(item);\n if (!inserter || inserter.done) {\n done();\n }\n else {\n inserter.on('data', push);\n inserter.on('end', end);\n }\n function end() {\n inserter.removeListener('data', push);\n inserter.removeListener('end', end);\n done();\n }\n }\n}\nexports.SimpleTransformIterator = SimpleTransformIterator;\n/**\n An iterator that generates items by transforming each item of a source\n with a different iterator.\n @extends module:asynciterator.TransformIterator\n*/\nclass MultiTransformIterator extends TransformIterator {\n /**\n Creates a new `MultiTransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Function} [options.multiTransform] A function to asynchronously transform items to iterators from the source\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n */\n constructor(source, options) {\n super(source, options);\n this._transformerQueue = [];\n // Set transformation steps from the options\n if (options) {\n const multiTransform = isFunction(options) ? options : options.multiTransform;\n if (multiTransform)\n this._createTransformer = multiTransform;\n }\n }\n /* Tries to read and transform items */\n _read(count, done) {\n // Remove transformers that have ended\n const transformerQueue = this._transformerQueue, optional = this._optional;\n let head, item;\n while ((head = transformerQueue[0]) && head.transformer.done) {\n // If transforming is optional, push the original item if none was pushed\n if (optional && head.item !== null) {\n count--;\n this._push(head.item);\n }\n // Remove listeners from the transformer\n transformerQueue.shift();\n const { transformer } = head;\n transformer.removeListener('end', destinationFillBuffer);\n transformer.removeListener('readable', destinationFillBuffer);\n transformer.removeListener('error', destinationEmitError);\n }\n // Create new transformers if there are less than the maximum buffer size\n const { source } = this;\n while (source && !source.done && transformerQueue.length < this.maxBufferSize) {\n // Read an item to create the next transformer\n item = source.read();\n if (item === null)\n break;\n // Create the transformer and listen to its events\n const transformer = (this._createTransformer(item) ||\n new EmptyIterator());\n transformer[exports.DESTINATION] = this;\n transformer.on('end', destinationFillBuffer);\n transformer.on('readable', destinationFillBuffer);\n transformer.on('error', destinationEmitError);\n transformerQueue.push({ transformer, item });\n }\n // Try to read `count` items from the transformer\n head = transformerQueue[0];\n if (head) {\n const { transformer } = head;\n while (count-- > 0 && (item = transformer.read()) !== null) {\n this._push(item);\n // If a transformed item was pushed, no need to push the original anymore\n if (optional)\n head.item = null;\n }\n }\n // End the iterator if the source has ended\n else if (source && source.done) {\n this.close();\n }\n done();\n }\n /**\n Creates a transformer for the given item.\n @param {object} item The last read item from the source\n @returns {module:asynciterator.AsyncIterator} An iterator that transforms the given item\n */\n _createTransformer(item) {\n return new SingletonIterator(item);\n }\n /* Closes the iterator when pending items are transformed. */\n _closeWhenDone() {\n // Only close if all transformers are read\n if (!this._transformerQueue.length)\n this.close();\n }\n _end(destroy) {\n super._end(destroy);\n // Also destroy the open transformers left in the queue\n if (this._destroySource) {\n for (const item of this._transformerQueue)\n item.transformer.destroy();\n }\n }\n}\nexports.MultiTransformIterator = MultiTransformIterator;\n/**\n An iterator that generates items by reading from multiple other iterators.\n @extends module:asynciterator.BufferedIterator\n*/\nclass UnionIterator extends BufferedIterator {\n /**\n Creates a new `UnionIterator`.\n @param {module:asynciterator.AsyncIterator|Array} [sources] The sources to read from\n @param {object} [options] Settings of the iterator\n @param {boolean} [options.destroySource=true] Whether the sources should be destroyed when transformed iterator is closed or destroyed\n */\n constructor(sources, options = {}) {\n super(options);\n this._sources = [];\n this._currentSource = -1;\n const autoStart = options.autoStart !== false;\n // Sources have been passed as an iterator\n if (isEventEmitter(sources)) {\n sources.on('error', error => this.emit('error', error));\n this._pending = { loading: false, sources: sources };\n if (autoStart)\n this._loadSources();\n }\n // Sources have been passed as a non-empty array\n else if (Array.isArray(sources) && sources.length > 0) {\n for (const source of sources)\n this._addSource(source);\n }\n // Sources are an empty list\n else if (autoStart) {\n this.close();\n }\n // Set other options\n this._destroySources = options.destroySources !== false;\n }\n // Loads pending sources into the sources list\n _loadSources() {\n // Obtain sources iterator\n const sources = this._pending.sources;\n this._pending.loading = true;\n // Close immediately if done\n if (sources.done) {\n delete this._pending;\n this.close();\n }\n // Otherwise, set up source reading\n else {\n sources.on('data', source => {\n this._addSource(source);\n this._fillBufferAsync();\n });\n sources.on('end', () => {\n delete this._pending;\n this._fillBuffer();\n });\n }\n }\n // Adds the given source to the internal sources array\n _addSource(source) {\n if (isPromise(source))\n source = wrap(source);\n if (!source.done) {\n this._sources.push(source);\n source[exports.DESTINATION] = this;\n source.on('error', destinationEmitError);\n source.on('readable', destinationFillBuffer);\n source.on('end', destinationRemoveEmptySources);\n }\n }\n // Removes sources that will no longer emit items\n _removeEmptySources() {\n this._sources = this._sources.filter((source, index) => {\n // Adjust the index of the current source if needed\n if (source.done && index <= this._currentSource)\n this._currentSource--;\n return !source.done;\n });\n this._fillBuffer();\n }\n // Reads items from the next sources\n _read(count, done) {\n var _a;\n // Start source loading if needed\n if (((_a = this._pending) === null || _a === void 0 ? void 0 : _a.loading) === false)\n this._loadSources();\n // Try to read `count` items\n let lastCount = 0, item;\n while (lastCount !== (lastCount = count)) {\n // Try every source at least once\n for (let i = 0; i < this._sources.length && count > 0; i++) {\n // Pick the next source\n this._currentSource = (this._currentSource + 1) % this._sources.length;\n const source = this._sources[this._currentSource];\n // Attempt to read an item from that source\n if ((item = source.read()) !== null) {\n count--;\n this._push(item);\n }\n }\n }\n // Close this iterator if all of its sources have been read\n if (!this._pending && this._sources.length === 0)\n this.close();\n done();\n }\n _end(destroy = false) {\n super._end(destroy);\n // Destroy all sources that are still readable\n if (this._destroySources) {\n for (const source of this._sources)\n source.destroy();\n // Also close the sources stream if applicable\n if (this._pending) {\n this._pending.sources.destroy();\n delete this._pending;\n }\n }\n }\n}\nexports.UnionIterator = UnionIterator;\nfunction destinationRemoveEmptySources() {\n this[exports.DESTINATION]._removeEmptySources();\n}\n/**\n An iterator that copies items from another iterator.\n @extends module:asynciterator.TransformIterator\n*/\nclass ClonedIterator extends TransformIterator {\n /**\n Creates a new `ClonedIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator copies items from\n */\n constructor(source) {\n super(source, { autoStart: false });\n this._readPosition = 0;\n this._reading = false;\n // As cloned iterators are not auto-started, they must always be marked as readable.\n if (source)\n this.readable = true;\n }\n _init() {\n // skip buffered iterator initialization, since we read from history\n }\n close() {\n // skip buffered iterator cleanup\n AsyncIterator.prototype.close.call(this);\n }\n // The source this iterator copies items from\n get source() {\n return super.source;\n }\n set source(value) {\n // Validate and set the source\n const source = this._source = this._validateSource(value);\n // Create a history reader for the source if none already existed\n const history = (source && source[exports.DESTINATION]) ||\n (source[exports.DESTINATION] = new HistoryReader(source));\n // Do not read the source if this iterator already ended\n if (this.done) {\n if (this._destroySource)\n source.destroy();\n }\n // Close this clone if history is empty and the source has ended\n else if (history.endsAt(0)) {\n this.close();\n }\n else {\n // Subscribe to history events\n history.register(this);\n // If there are already items in history, this clone is readable\n // If the source has a lazy start, always mark this iterator as readable without eagerly triggering a read.\n if (source._sourceStarted === false || history.readAt(0) !== null)\n this.readable = true;\n }\n // Hook pending property callbacks to the source\n const propertyCallbacks = this._propertyCallbacks;\n for (const propertyName in propertyCallbacks) {\n const callbacks = propertyCallbacks[propertyName];\n for (const callback of callbacks)\n this._getSourceProperty(propertyName, callback);\n }\n }\n /**\n Validates whether the given iterator can be used as a source.\n @protected\n @param {object} source The source to validate\n @param {boolean} allowDestination Whether the source can already have a destination\n */\n _validateSource(source, allowDestination = false) {\n const history = (source && source[exports.DESTINATION]);\n return super._validateSource(source, !history || history instanceof HistoryReader);\n }\n // Retrieves the property with the given name from the clone or its source.\n getProperty(propertyName, callback) {\n const { source } = this, properties = this._properties, hasProperty = properties && (propertyName in properties);\n // If no callback was passed, return the property value\n if (!callback) {\n return hasProperty ? properties && properties[propertyName] :\n source && source.getProperty(propertyName);\n }\n // Try to look up the property in this clone\n super.getProperty(propertyName, callback);\n // If the property is not set on this clone, it might become set on the source first\n if (source && !hasProperty)\n this._getSourceProperty(propertyName, callback);\n return undefined;\n }\n // Retrieves the property with the given name from the source\n _getSourceProperty(propertyName, callback) {\n this.source.getProperty(propertyName, value => {\n // Only send the source's property if it was not set on the clone in the meantime\n if (!this._properties || !(propertyName in this._properties))\n callback(value);\n });\n }\n // Retrieves all properties of the iterator and its source.\n getProperties() {\n const base = this.source ? this.source.getProperties() : {}, properties = this._properties;\n for (const name in properties)\n base[name] = properties[name];\n return base;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `{source: ${this.source ? this.source.toString() : 'none'}}`;\n }\n /* Tries to read an item */\n read() {\n // An explicit read kickstarts the source\n if (!this._sourceStarted)\n this._sourceStarted = true;\n const source = this.source;\n let item = null;\n if (!this.done && source) {\n // Try to read an item at the current point in history\n const history = source[exports.DESTINATION];\n if ((item = history.readAt(this._readPosition)) !== null)\n this._readPosition++;\n else\n this.readable = false;\n // Close the iterator if we are at the end of the source\n if (history.endsAt(this._readPosition))\n this.close();\n }\n return item;\n }\n /* End the iterator and cleans up. */\n _end(destroy) {\n // Unregister from a possible history reader\n const source = this.source;\n const history = source === null || source === void 0 ? void 0 : source[exports.DESTINATION];\n if (history)\n history.unregister(this);\n // Don't call TransformIterator#_end,\n // as it would make the source inaccessible for other clones\n BufferedIterator.prototype._end.call(this, destroy);\n }\n}\nexports.ClonedIterator = ClonedIterator;\n// Stores the history of a source, so it can be cloned\nclass HistoryReader {\n constructor(source) {\n this._history = [];\n this._trackers = new Set();\n this._source = source;\n // If the source is still live, set up clone tracking;\n // otherwise, the clones just read from the finished history\n if (!source.done) {\n // When the source becomes readable, makes all clones readable\n const setReadable = () => {\n for (const tracker of this._trackers)\n tracker.readable = true;\n };\n // When the source errors, re-emits the error\n const emitError = (error) => {\n for (const tracker of this._trackers)\n tracker.emit('error', error);\n };\n // When the source ends, closes all clones that are fully read\n const end = () => {\n // Close the clone if all items had been emitted\n for (const tracker of this._trackers) {\n if (tracker._sourceStarted !== false &&\n tracker._readPosition === this._history.length)\n tracker.close();\n }\n this._trackers.clear();\n // Remove source listeners, since no further events will be emitted\n source.removeListener('end', end);\n source.removeListener('error', emitError);\n source.removeListener('readable', setReadable);\n };\n // Listen to source events to trigger events in subscribed clones\n source.on('end', end);\n source.on('error', emitError);\n source.on('readable', setReadable);\n }\n }\n // Registers a clone for history updates\n register(clone) {\n // Tracking is only needed if the source is still live\n if (!this._source.done)\n this._trackers.add(clone);\n }\n // Unregisters a clone for history updates\n unregister(clone) {\n this._trackers.delete(clone);\n }\n // Tries to read the item at the given history position\n readAt(pos) {\n let item = null;\n // Retrieve an item from history when available\n if (pos < this._history.length)\n item = this._history[pos];\n // Read a new item from the source when possible\n else if (!this._source.done && (item = this._source.read()) !== null)\n this._history[pos] = item;\n return item;\n }\n // Determines whether the given position is the end of the source\n endsAt(pos) {\n return this._source.done && this._history.length === pos;\n }\n}\n/**\n * An iterator that takes a variety of iterable objects as a source.\n */\nclass WrappingIterator extends AsyncIterator {\n constructor(source, opts) {\n super();\n this._source = null;\n this._destroySource = (opts === null || opts === void 0 ? void 0 : opts.destroySource) !== false;\n // If promise, set up a temporary source and replace when ready\n if (isPromise(source)) {\n this._source = new AsyncIterator();\n source.then(value => {\n this._source = null;\n this.source = value;\n }).catch(error => this.emit('error', error));\n }\n // Otherwise, set the source synchronously\n else if (source) {\n this.source = source;\n }\n }\n set source(value) {\n let source = value;\n if (this._source !== null)\n throw new Error('The source cannot be changed after it has been set');\n // Process an iterable source\n if (isIterable(source))\n source = source[Symbol.iterator]();\n // Process an iterator source\n if (isIterator(source)) {\n let iterator = source;\n source = new events_1.EventEmitter();\n source.read = () => {\n if (iterator !== null) {\n // Skip any null values inside of the iterator\n let next;\n while (!(next = iterator.next()).done) {\n if (next.value !== null)\n return next.value;\n }\n // No remaining values, so stop iterating\n iterator = null;\n this.close();\n }\n return null;\n };\n }\n // Process any other readable source\n else {\n source = ensureSourceAvailable(source);\n }\n // Do not change sources if the iterator is already done\n if (this.done) {\n if (this._destroySource && isFunction(source.destroy))\n source.destroy();\n return;\n }\n // Set up event handling\n source[exports.DESTINATION] = this;\n source.on('end', destinationClose);\n source.on('error', destinationEmitError);\n source.on('readable', destinationSetReadable);\n // Enable reading from source\n this._source = source;\n this.readable = source.readable !== false;\n }\n read() {\n if (this._source !== null && this._source.readable !== false) {\n const item = this._source.read();\n if (item !== null)\n return item;\n this.readable = false;\n }\n return null;\n }\n _end(destroy = false) {\n if (this._source !== null) {\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[exports.DESTINATION];\n if (this._destroySource && isFunction(this._source.destroy))\n this._source.destroy();\n this._source = null;\n }\n super._end(destroy);\n }\n}\nexports.WrappingIterator = WrappingIterator;\n/**\n Creates an iterator that wraps around a given iterator or readable stream.\n Use this to convert an iterator-like object into a full-featured AsyncIterator.\n After this operation, only read the returned iterator instead of the given one.\n @function\n @param [source] The source this iterator generates items from\n @param {object} [options] Settings of the iterator\n @returns {module:asynciterator.AsyncIterator} A new iterator with the items from the given iterator\n*/\nfunction wrap(source, options) {\n // For backward compatibility, always use TransformIterator when options are specified\n if (options && ('autoStart' in options || 'optional' in options || 'source' in options || 'maxBufferSize' in options)) {\n if (source && !isEventEmitter(source))\n source = new WrappingIterator(source);\n return new TransformIterator(source, options);\n }\n // Empty iterator if no source specified\n if (!source)\n return empty();\n // Unwrap promised sources\n if (isPromise(source))\n return new WrappingIterator(source, options);\n // Directly return any AsyncIterator\n if (source instanceof AsyncIterator)\n return source;\n // Other iterable objects\n if (Array.isArray(source))\n return fromArray(source);\n if (isIterable(source) || isIterator(source) || isEventEmitter(source))\n return new WrappingIterator(source, options);\n // Other types are unsupported\n throw new TypeError(`Invalid source: ${source}`);\n}\nexports.wrap = wrap;\n/**\n Creates an empty iterator.\n */\nfunction empty() {\n return new EmptyIterator();\n}\nexports.empty = empty;\n/**\n Creates an iterator with a single item.\n @param {object} item the item\n */\nfunction single(item) {\n return new SingletonIterator(item);\n}\nexports.single = single;\n/**\n Creates an iterator for the given array.\n @param {Array} items the items\n */\nfunction fromArray(items) {\n return new ArrayIterator(items);\n}\nexports.fromArray = fromArray;\n/**\n Creates an iterator for the given Iterator.\n @param {Iterable} source the iterator\n */\nfunction fromIterator(source) {\n return new WrappingIterator(source);\n}\nexports.fromIterator = fromIterator;\n/**\n Creates an iterator for the given Iterable.\n @param {Iterable} source the iterable\n */\nfunction fromIterable(source) {\n return new WrappingIterator(source);\n}\nexports.fromIterable = fromIterable;\n/**\n Creates an iterator containing all items from the given iterators.\n @param {Array} items the items\n */\nfunction union(sources) {\n return new UnionIterator(sources);\n}\nexports.union = union;\n/**\n Creates an iterator of integers for the given numeric range.\n @param {Array} items the items\n */\nfunction range(start, end, step) {\n return new IntegerIterator({ start, end, step });\n}\nexports.range = range;\n// Returns a function that calls `fn` with `self` as `this` pointer. */\nfunction bind(fn, self) {\n return self ? fn.bind(self) : fn;\n}\n// Determines whether the given object is a function\nfunction isFunction(object) {\n return typeof object === 'function';\n}\nexports.isFunction = isFunction;\n// Determines whether the given object is an EventEmitter\nfunction isEventEmitter(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.on);\n}\nexports.isEventEmitter = isEventEmitter;\n// Determines whether the given object is a promise\nfunction isPromise(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.then);\n}\nexports.isPromise = isPromise;\n// Determines whether the given object is a source expression\nfunction isSourceExpression(object) {\n return object && (isEventEmitter(object) || isPromise(object) || isFunction(object));\n}\nexports.isSourceExpression = isSourceExpression;\n// Determines whether the given object supports the iterable protocol\nfunction isIterable(object) {\n return object && (Symbol.iterator in object);\n}\nexports.isIterable = isIterable;\n// Determines whether the given object supports the iterator protocol\nfunction isIterator(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.next);\n}\nexports.isIterator = isIterator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedList = void 0;\n/**\n * A list with O(1) push and shift operations.\n */\nclass LinkedList {\n constructor() {\n this._length = 0;\n this._head = null;\n this._tail = null;\n }\n get length() { return this._length; }\n get first() { var _a; return (_a = this._head) === null || _a === void 0 ? void 0 : _a.value; }\n get last() { var _a; return (_a = this._tail) === null || _a === void 0 ? void 0 : _a.value; }\n get empty() { return this._head === null; }\n push(value) {\n const node = { value, next: null };\n if (this._tail === null)\n this._head = this._tail = node;\n else\n this._tail.next = this._tail = node;\n this._length++;\n }\n shift() {\n if (this._head === null)\n return undefined;\n const { value, next } = this._head;\n this._head = next;\n if (next === null)\n this._tail = null;\n this._length--;\n return value;\n }\n clear() {\n this._length = 0;\n this._head = this._tail = null;\n }\n}\nexports.LinkedList = LinkedList;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTaskScheduler = void 0;\nconst resolved = Promise.resolve(undefined);\n// Returns a function that asynchronously schedules a task\nfunction createTaskScheduler() {\n // Use or create a microtask scheduler\n const scheduleMicrotask = typeof queueMicrotask === 'function' ?\n queueMicrotask : (task) => resolved.then(task);\n // Use or create a macrotask scheduler\n const scheduleMacrotask = typeof setImmediate === 'function' ?\n setImmediate : (task) => setTimeout(task, 0);\n // Interrupt with a macrotask every once in a while to avoid freezing\n let i = 0;\n let queue = null;\n return (task) => {\n // Tasks are currently being queued to avoid freezing\n if (queue !== null)\n queue.push(task);\n // Tasks are being scheduled normally as microtasks\n else if (++i < 100)\n scheduleMicrotask(task);\n // A macrotask interruption is needed\n else {\n // Hold all tasks in a queue, and reschedule them after a macrotask\n queue = [task];\n scheduleMacrotask(() => {\n // Work through the queue\n for (const queued of queue)\n scheduleMicrotask(queued);\n queue = null;\n // Reset the interruption schedule\n i = 0;\n });\n }\n };\n}\nexports.createTaskScheduler = createTaskScheduler;\n","\"use strict\";\n/**\n * @module LRUCache\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = void 0;\nconst perf = typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date;\nconst warned = new Set();\n/* c8 ignore start */\nconst PROCESS = (typeof process === 'object' && !!process ? process : {});\n/* c8 ignore start */\nconst emitWarning = (msg, type, code, fn) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`);\n};\nlet AC = globalThis.AbortController;\nlet AS = globalThis.AbortSignal;\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort;\n _onabort = [];\n reason;\n aborted = false;\n addEventListener(_, fn) {\n this._onabort.push(fn);\n }\n };\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill();\n }\n signal = new AS();\n abort(reason) {\n if (this.signal.aborted)\n return;\n //@ts-ignore\n this.signal.reason = reason;\n //@ts-ignore\n this.signal.aborted = true;\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason);\n }\n this.signal.onabort?.(reason);\n }\n };\n let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning)\n return;\n printACPolyfillWarning = false;\n emitWarning('AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);\n };\n}\n/* c8 ignore stop */\nconst shouldWarn = (code) => !warned.has(code);\nconst TYPE = Symbol('type');\nconst isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max) => !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null;\n/* c8 ignore stop */\nclass ZeroArray extends Array {\n constructor(size) {\n super(size);\n this.fill(0);\n }\n}\nclass Stack {\n heap;\n length;\n // private constructor\n static #constructing = false;\n static create(max) {\n const HeapCls = getUintArray(max);\n if (!HeapCls)\n return [];\n Stack.#constructing = true;\n const s = new Stack(max, HeapCls);\n Stack.#constructing = false;\n return s;\n }\n constructor(max, HeapCls) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)');\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max);\n this.length = 0;\n }\n push(n) {\n this.heap[this.length++] = n;\n }\n pop() {\n return this.heap[--this.length];\n }\n}\n/**\n * Default export, the thing you're using this module to get.\n *\n * All properties from the options object (with the exception of\n * {@link OptionsBase.max} and {@link OptionsBase.maxSize}) are added as\n * normal public members. (`max` and `maxBase` are read-only getters.)\n * Changing any of these will alter the defaults for subsequent method calls,\n * but is otherwise safe.\n */\nclass LRUCache {\n // properties coming in from the options of these, only max and maxSize\n // really *need* to be protected. The rest can be modified, as they just\n // set defaults for various methods.\n #max;\n #maxSize;\n #dispose;\n #disposeAfter;\n #fetchMethod;\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl;\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution;\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas;\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale;\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet;\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL;\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize;\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort;\n // computed properties\n #size;\n #calculatedSize;\n #keyMap;\n #keyList;\n #valList;\n #next;\n #prev;\n #head;\n #tail;\n #free;\n #disposed;\n #sizes;\n #starts;\n #ttls;\n #hasDispose;\n #hasFetchMethod;\n #hasDisposeAfter;\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals(c) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head;\n },\n get tail() {\n return c.#tail;\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p) => c.#isBackgroundFetch(p),\n backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),\n moveToTail: (index) => c.#moveToTail(index),\n indexes: (options) => c.#indexes(options),\n rindexes: (options) => c.#rindexes(options),\n isStale: (index) => c.#isStale(index),\n };\n }\n // Protected read-only members\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max() {\n return this.#max;\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize() {\n return this.#maxSize;\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize() {\n return this.#calculatedSize;\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size() {\n return this.#size;\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod() {\n return this.#fetchMethod;\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose;\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter;\n }\n constructor(options) {\n const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer');\n }\n const UintArray = max ? getUintArray(max) : Array;\n if (!UintArray) {\n throw new Error('invalid max value: ' + max);\n }\n this.#max = max;\n this.#maxSize = maxSize;\n this.maxEntrySize = maxEntrySize || this.#maxSize;\n this.sizeCalculation = sizeCalculation;\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function');\n }\n }\n if (fetchMethod !== undefined &&\n typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified');\n }\n this.#fetchMethod = fetchMethod;\n this.#hasFetchMethod = !!fetchMethod;\n this.#keyMap = new Map();\n this.#keyList = new Array(max).fill(undefined);\n this.#valList = new Array(max).fill(undefined);\n this.#next = new UintArray(max);\n this.#prev = new UintArray(max);\n this.#head = 0;\n this.#tail = 0;\n this.#free = Stack.create(max);\n this.#size = 0;\n this.#calculatedSize = 0;\n if (typeof dispose === 'function') {\n this.#dispose = dispose;\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter;\n this.#disposed = [];\n }\n else {\n this.#disposeAfter = undefined;\n this.#disposed = undefined;\n }\n this.#hasDispose = !!this.#dispose;\n this.#hasDisposeAfter = !!this.#disposeAfter;\n this.noDisposeOnSet = !!noDisposeOnSet;\n this.noUpdateTTL = !!noUpdateTTL;\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;\n this.ignoreFetchAbort = !!ignoreFetchAbort;\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError('maxSize must be a positive integer if specified');\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError('maxEntrySize must be a positive integer if specified');\n }\n this.#initializeSizeTracking();\n }\n this.allowStale = !!allowStale;\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;\n this.updateAgeOnGet = !!updateAgeOnGet;\n this.updateAgeOnHas = !!updateAgeOnHas;\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1;\n this.ttlAutopurge = !!ttlAutopurge;\n this.ttl = ttl || 0;\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified');\n }\n this.#initializeTTLTracking();\n }\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError('At least one of max, maxSize, or ttl is required');\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED';\n if (shouldWarn(code)) {\n warned.add(code);\n const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.';\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);\n }\n }\n }\n /**\n * Return the remaining TTL time for a given entry key\n */\n getRemainingTTL(key) {\n return this.#keyMap.has(key) ? Infinity : 0;\n }\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max);\n const starts = new ZeroArray(this.#max);\n this.#ttls = ttls;\n this.#starts = starts;\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0;\n ttls[index] = ttl;\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.delete(this.#keyList[index]);\n }\n }, ttl + 1);\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n };\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0;\n };\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index];\n const start = starts[index];\n /* c8 ignore next */\n if (!ttl || !start)\n return;\n status.ttl = ttl;\n status.start = start;\n status.now = cachedNow || getNow();\n const age = status.now - start;\n status.remainingTTL = ttl - age;\n }\n };\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0;\n const getNow = () => {\n const n = perf.now();\n if (this.ttlResolution > 0) {\n cachedNow = n;\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n return n;\n };\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key);\n if (index === undefined) {\n return 0;\n }\n const ttl = ttls[index];\n const start = starts[index];\n if (!ttl || !start) {\n return Infinity;\n }\n const age = (cachedNow || getNow()) - start;\n return ttl - age;\n };\n this.#isStale = index => {\n const s = starts[index];\n const t = ttls[index];\n return !!t && !!s && (cachedNow || getNow()) - s > t;\n };\n }\n // conditionally set private methods related to TTL\n #updateItemAge = () => { };\n #statusTTL = () => { };\n #setItemTTL = () => { };\n /* c8 ignore stop */\n #isStale = () => false;\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max);\n this.#calculatedSize = 0;\n this.#sizes = sizes;\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index];\n sizes[index] = 0;\n };\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0;\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function');\n }\n size = sizeCalculation(v, k);\n if (!isPosInt(size)) {\n throw new TypeError('sizeCalculation return invalid (expect positive integer)');\n }\n }\n else {\n throw new TypeError('invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.');\n }\n }\n return size;\n };\n this.#addItemSize = (index, size, status) => {\n sizes[index] = size;\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index];\n while (this.#calculatedSize > maxSize) {\n this.#evict(true);\n }\n }\n this.#calculatedSize += sizes[index];\n if (status) {\n status.entrySize = size;\n status.totalCalculatedSize = this.#calculatedSize;\n }\n };\n }\n #removeItemSize = _i => { };\n #addItemSize = (_i, _s, _st) => { };\n #requireSize = (_k, _v, size, sizeCalculation) => {\n if (size || sizeCalculation) {\n throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');\n }\n return 0;\n };\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#head) {\n break;\n }\n else {\n i = this.#prev[i];\n }\n }\n }\n }\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#tail) {\n break;\n }\n else {\n i = this.#next[i];\n }\n }\n }\n }\n #isValidIndex(index) {\n return (index !== undefined &&\n this.#keyMap.get(this.#keyList[index]) === index);\n }\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * A String value that is used in the creation of the default string description of an object.\n * Called by the built-in method Object.prototype.toString.\n */\n [Symbol.toStringTag] = 'LRUCache';\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to Array.find(). fn is called as fn(value, key, cache).\n */\n find(fn, getOptions = {}) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n if (fn(value, this.#keyList[i], this)) {\n return this.get(this.#keyList[i], getOptions);\n }\n }\n }\n /**\n * Call the supplied function on each item in the cache, in order from\n * most recently used to least recently used. fn is called as\n * fn(value, key, cache). Does not update age or recenty of use.\n * Does not iterate over stale values.\n */\n forEach(fn, thisp = this) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(fn, thisp = this) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false;\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.delete(this.#keyList[i]);\n deleted = true;\n }\n }\n return deleted;\n }\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Like {@link LRUCache#dump}, but just for a\n * single key. Always returns stale values, if their info is found in the\n * cache, so be sure to check for expired TTLs if relevant.\n */\n info(key) {\n const i = this.#keyMap.get(key);\n if (i === undefined)\n return undefined;\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n return undefined;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i];\n const start = this.#starts[i];\n if (ttl && start) {\n const remain = ttl - (perf.now() - start);\n entry.ttl = remain;\n entry.start = Date.now();\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n return entry;\n }\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to cache.load()\n */\n dump() {\n const arr = [];\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i];\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined || key === undefined)\n continue;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i];\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - this.#starts[i];\n entry.start = Math.floor(Date.now() - age);\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n arr.unshift([key, entry]);\n }\n return arr;\n }\n /**\n * Reset the cache and load in the items in entries in the order listed.\n * Note that the shape of the resulting cache may be different if the\n * same options are not used in both caches.\n */\n load(arr) {\n this.clear();\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start;\n entry.start = perf.now() - age;\n }\n this.set(key, entry.value, entry);\n }\n }\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n */\n set(k, v, setOptions = {}) {\n if (v === undefined) {\n this.delete(k);\n return this;\n }\n const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;\n let { noUpdateTTL = this.noUpdateTTL } = setOptions;\n const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss';\n status.maxEntrySizeExceeded = true;\n }\n // have to delete, in case something is there already.\n this.delete(k);\n return this;\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k);\n if (index === undefined) {\n // addition\n index = (this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size);\n this.#keyList[index] = k;\n this.#valList[index] = v;\n this.#keyMap.set(k, index);\n this.#next[this.#tail] = index;\n this.#prev[index] = this.#tail;\n this.#tail = index;\n this.#size++;\n this.#addItemSize(index, size, status);\n if (status)\n status.set = 'add';\n noUpdateTTL = false;\n }\n else {\n // update\n this.#moveToTail(index);\n const oldVal = this.#valList[index];\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'));\n const { __staleWhileFetching: s } = oldVal;\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set']);\n }\n }\n }\n else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set']);\n }\n }\n this.#removeItemSize(index);\n this.#addItemSize(index, size, status);\n this.#valList[index] = v;\n if (status) {\n status.set = 'replace';\n const oldValue = oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal;\n if (oldValue !== undefined)\n status.oldValue = oldValue;\n }\n }\n else if (status) {\n status.set = 'update';\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking();\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start);\n }\n if (status)\n this.#statusTTL(status, index);\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return this;\n }\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop() {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head];\n this.#evict(true);\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching;\n }\n }\n else if (val !== undefined) {\n return val;\n }\n }\n }\n finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n }\n #evict(free) {\n const head = this.#head;\n const k = this.#keyList[head];\n const v = this.#valList[head];\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict']);\n }\n }\n this.#removeItemSize(head);\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined;\n this.#valList[head] = undefined;\n this.#free.push(head);\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0;\n this.#free.length = 0;\n }\n else {\n this.#head = this.#next[head];\n }\n this.#keyMap.delete(k);\n this.#size--;\n return head;\n }\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k, hasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined) {\n return false;\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index);\n }\n if (status) {\n status.has = 'hit';\n this.#statusTTL(status, index);\n }\n return true;\n }\n else if (status) {\n status.has = 'stale';\n this.#statusTTL(status, index);\n }\n }\n else if (status) {\n status.has = 'miss';\n }\n return false;\n }\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k, peekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions;\n const index = this.#keyMap.get(k);\n if (index === undefined ||\n (!allowStale && this.#isStale(index))) {\n return;\n }\n const v = this.#valList[index];\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n }\n #backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n return v;\n }\n const ac = new AC();\n const { signal } = options;\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n });\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n };\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal;\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined;\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true;\n options.status.fetchError = ac.signal.reason;\n if (ignoreAbort)\n options.status.fetchAbortIgnored = true;\n }\n else {\n options.status.fetchResolved = true;\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason);\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p;\n if (this.#valList[index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index] = bf.__staleWhileFetching;\n }\n else {\n this.delete(k);\n }\n }\n else {\n if (options.status)\n options.status.fetchUpdated = true;\n this.set(k, v, fetchOpts.options);\n }\n }\n return v;\n };\n const eb = (er) => {\n if (options.status) {\n options.status.fetchRejected = true;\n options.status.fetchError = er;\n }\n return fetchFail(er);\n };\n const fetchFail = (er) => {\n const { aborted } = ac.signal;\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;\n const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;\n const noDelete = allowStale || options.noDeleteOnFetchRejection;\n const bf = p;\n if (this.#valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined;\n if (del) {\n this.delete(k);\n }\n else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index] = bf.__staleWhileFetching;\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true;\n }\n return bf.__staleWhileFetching;\n }\n else if (bf.__returned === bf) {\n throw er;\n }\n };\n const pcall = (res, rej) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts);\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej);\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort) {\n res(undefined);\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true);\n }\n }\n });\n };\n if (options.status)\n options.status.fetchDispatched = true;\n const p = new Promise(pcall).then(cb, eb);\n const bf = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n });\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined });\n index = this.#keyMap.get(k);\n }\n else {\n this.#valList[index] = bf;\n }\n return bf;\n }\n #isBackgroundFetch(p) {\n if (!this.#hasFetchMethod)\n return false;\n const b = p;\n return (!!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC);\n }\n async fetch(k, fetchOptions = {}) {\n const { \n // get options\n allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, \n // set options\n ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, \n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;\n if (!this.#hasFetchMethod) {\n if (status)\n status.fetch = 'get';\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n });\n }\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n };\n let index = this.#keyMap.get(k);\n if (index === undefined) {\n if (status)\n status.fetch = 'miss';\n const p = this.#backgroundFetch(k, index, options, context);\n return (p.__returned = p);\n }\n else {\n // in cache, maybe already fetching\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined;\n if (status) {\n status.fetch = 'inflight';\n if (stale)\n status.returnedStale = true;\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v);\n }\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index);\n if (!forceRefresh && !isStale) {\n if (status)\n status.fetch = 'hit';\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n if (status)\n this.#statusTTL(status, index);\n return v;\n }\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context);\n const hasStale = p.__staleWhileFetching !== undefined;\n const staleVal = hasStale && allowStale;\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh';\n if (staleVal && isStale)\n status.returnedStale = true;\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p);\n }\n }\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k, getOptions = {}) {\n const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const value = this.#valList[index];\n const fetching = this.#isBackgroundFetch(value);\n if (status)\n this.#statusTTL(status, index);\n if (this.#isStale(index)) {\n if (status)\n status.get = 'stale';\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.delete(k);\n }\n if (status && allowStale)\n status.returnedStale = true;\n return allowStale ? value : undefined;\n }\n else {\n if (status &&\n allowStale &&\n value.__staleWhileFetching !== undefined) {\n status.returnedStale = true;\n }\n return allowStale ? value.__staleWhileFetching : undefined;\n }\n }\n else {\n if (status)\n status.get = 'hit';\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching;\n }\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n return value;\n }\n }\n else if (status) {\n status.get = 'miss';\n }\n }\n #connect(p, n) {\n this.#prev[n] = p;\n this.#next[p] = n;\n }\n #moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n this.#connect(this.#prev[index], this.#next[index]);\n }\n this.#connect(this.#tail, index);\n this.#tail = index;\n }\n }\n /**\n * Deletes a key out of the cache.\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k) {\n let deleted = false;\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n deleted = true;\n if (this.#size === 1) {\n this.clear();\n }\n else {\n this.#removeItemSize(index);\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'delete');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'delete']);\n }\n }\n this.#keyMap.delete(k);\n this.#keyList[index] = undefined;\n this.#valList[index] = undefined;\n if (index === this.#tail) {\n this.#tail = this.#prev[index];\n }\n else if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n const pi = this.#prev[index];\n this.#next[pi] = this.#next[index];\n const ni = this.#next[index];\n this.#prev[ni] = this.#prev[index];\n }\n this.#size--;\n this.#free.push(index);\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return deleted;\n }\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else {\n const k = this.#keyList[index];\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'delete');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'delete']);\n }\n }\n }\n this.#keyMap.clear();\n this.#valList.fill(undefined);\n this.#keyList.fill(undefined);\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0);\n this.#starts.fill(0);\n }\n if (this.#sizes) {\n this.#sizes.fill(0);\n }\n this.#head = 0;\n this.#tail = 0;\n this.#free.length = 0;\n this.#calculatedSize = 0;\n this.#size = 0;\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n}\nexports.LRUCache = LRUCache;\n//# sourceMappingURL=index.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(90128);\n"],"names":["Buffer","C","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","COLON","COMMA","TRUE","FALSE","NULL","STRING","NUMBER","START","STOP","TRUE1","TRUE2","TRUE3","FALSE1","FALSE2","FALSE3","FALSE4","NULL1","NULL2","NULL3","NUMBER1","NUMBER3","STRING1","STRING2","STRING3","STRING4","STRING5","STRING6","VALUE","KEY","OBJECT","ARRAY","BACK_SLASH","charCodeAt","FORWARD_SLASH","BACKSPACE","FORM_FEED","NEWLINE","CARRIAGE_RETURN","TAB","STRING_BUFFER_SIZE","alloc","size","Parser","this","tState","value","undefined","string","stringBuffer","stringBufferOffset","unicode","highSurrogate","key","mode","stack","state","bytes_remaining","bytes_in_sequence","temp_buffs","offset","toknam","code","keys","Object","i","l","length","toString","proto","prototype","onError","err","charError","buffer","Error","JSON","stringify","String","fromCharCode","appendStringChar","char","appendStringBuf","buf","start","end","copy","write","n","onToken","j","k","byteLength","intVal","parseInt","error","numberReviver","token","parseError","push","pop","parent","emit","onValue","text","result","Number","isNaN","match","module","exports","defineProperty","fragment","str","inputStr","endsWith","slice","args","lastIndexOf","Math","max","getFragment","_a","res","split","filter","s","map","toUpperCase","join","toLowerCase","camelize","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","apply","lookupAllPrefixes","prefixToUri","uriToPrefix","fragment_1","lookup_1","uri","options","lookupPrefix","mintOnUnknown","existingPrefixes","prefix","lookupUri","lookup_2","enumerable","get","fetchContext","fetchJson","cross_fetch_1","url","fetchFn","fetch","json","__createBinding","create","o","m","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","__exportStar","p","hasOwnProperty","call","fetchContext_1","URL","searchParams","append","prefixes","global","self","__self__","F","DOMException","support","Symbol","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","obj","indexOf","normalizeName","name","test","TypeError","normalizeValue","iteratorFor","items","iterator","shift","Headers","headers","forEach","Array","isArray","header","getOwnPropertyNames","consumed","body","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","view","Uint8Array","set","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","type","arrayBuffer","readAsText","chars","readArrayBufferAsText","formData","decode","parse","oldValue","has","callback","values","entries","methods","Request","input","method","upcased","credentials","signal","referrer","form","trim","bytes","replace","decodeURIComponent","Response","bodyInit","status","ok","statusText","clone","response","redirectStatuses","redirect","RangeError","location","message","constructor","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","parts","responseURL","responseText","ontimeout","onabort","open","withCredentials","responseType","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","send","polyfill","ponyfill","ctx","SaxesParser","EVENTS","ed5","ed2","NSed3","isS","isChar10","isChar","isNameStartChar","isNameChar","S_LIST","NAME_RE","isChar11","isNCNameStartChar","isNCNameChar","NC_NAME_RE","XML_NAMESPACE","XMLNS_NAMESPACE","rootNS","__proto__","xml","xmlns","XML_ENTITIES","amp","gt","lt","quot","apos","EOC","NL_LIKE","S_TEXT","S_XML_DECL_ENDING","NL","LESS","EQUAL","GREATER","QUESTION","CLOSE_BRACKET","isQuote","c","QUOTES","DOCTYPE_TERMINATOR","DTD_TERMINATOR","XML_DECL_NAME_TERMINATOR","ATTRIB_VALUE_UNQUOTED_TERMINATOR","nsPairCheck","parser","fail","isNCName","isName","EVENT_NAME_TO_HANDLER_NAME","xmldecl","processinginstruction","doctype","comment","opentagstart","attribute","opentag","closetag","cdata","ready","closed","_closed","opt","fragmentOpt","xmlnsOpt","trackPosition","position","fileName","nameStartCheck","nameCheck","processAttribs","processAttribsNS","pushAttrib","pushAttribNS","ns","assign","additional","additionalNamespaces","mapping","local","nsMappingCheck","processAttribsPlain","pushAttribPlain","stateTable","sBegin","sBeginWhitespace","sDoctype","sDoctypeQuote","sDTD","sDTDQuoted","sDTDOpenWaka","sDTDOpenWakaBang","sDTDComment","sDTDCommentEnding","sDTDCommentEnded","sDTDPI","sDTDPIEnding","sText","sEntity","sOpenWaka","sOpenWakaBang","sComment","sCommentEnding","sCommentEnded","sCData","sCDataEnding","sCDataEnding2","sPIFirstChar","sPIRest","sPIBody","sPIEnding","sXMLDeclNameStart","sXMLDeclName","sXMLDeclEq","sXMLDeclValueStart","sXMLDeclValue","sXMLDeclSeparator","sXMLDeclEnding","sOpenTag","sOpenTagSlash","sAttrib","sAttribName","sAttribNameSawWhite","sAttribValue","sAttribValueQuoted","sAttribValueClosed","sAttribValueUnquoted","sCloseTag","sCloseTagSawWhite","_init","openWakaBang","piTarget","entity","q","tags","tag","topNS","chunk","chunkPosition","prevI","carriedFromPrevious","forbiddenState","attribList","reportedTextBeforeRoot","reportedTextAfterRoot","closedRoot","sawRoot","xmlDeclPossible","xmlDeclExpects","entityReturnState","defaultXMLVersion","forceXMLVersion","setXMLVersion","positionAtNewLine","xmlDecl","version","encoding","standalone","column","ENTITIES","readyHandler","columnIndex","on","handler","off","makeError","msg","errorHandler","limit","lastCode","close","getCode10","final","getCode11","getCodeNorm","getCode","unget","captureTo","isNLLike","includes","captureToChar","captureNameChars","skipSpaces","currentXMLVersion","iBefore","doctypeHandler","fromCodePoint","owb","handleTextInRoot","handleTextOutsideRoot","loop","parsed","parseEntity","textHandler","commentHandler","cdataHandler","isQuestion","piHandler","target","xmldeclHandler","attributes","openTagStartHandler","openTag","openSelfClosingTag","closeTag","scanLoop","nonSpace","outRootLoop","qname","attr","attributeHandler","trimmed","_b","endHandler","index","resolvePrefix","colon","seen","Set","eqname","add","isSelfClosing","openTagHandler","_c","closeTagHandler","defined","num","NaN","ReadableWebToNodeStream","readable_stream_1","Readable","stream","super","bytesRead","released","getReader","_read","pendingRead","read","data","waitForReadToComplete","syncAndRelease","releaseLock","AbortController","AbortSignal","window","array","event","DynamicNestedLoopJoin","HashJoin","NestedLoopJoin","SymmetricHashJoin","MergeStream","AsyncIterator","MultiTransformIterator","SimpleTransformIterator","left","funRight","funJoin","_createTransformer","leftItem","transform","rightItem","right","funHash","addedDataListener","leftMap","Map","matches","matchIdx","destroy","readable","hasResults","_end","bind","eventName","_addDataListenerIfNeeded","ended","item","hash","_addDataListener","scheduleTask","usedLeft","rightMap","_cleanup","streams","arguments","_removeStream","idx","splice","attempts","variables","df_475_1","require","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_fallback_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__3_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__3_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__3_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__3_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus","urn_comunica_default_context_preprocess_actors_query_source_skolemize","urn_comunica_default_context_preprocess_mediators_main","urn_comunica_default_hash_bindings_mediators_main","urn_comunica_default_hash_quads_mediators_main","urn_comunica_default_optimize_query_operation_actors_group_sources","urn_comunica_default_optimize_query_operation_mediators_main","urn_comunica_default_query_parse_mediators_main","urn_comunica_default_query_result_serialize_mediators_serialize","urn_comunica_default_query_result_serialize_mediators_mediaType","urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat","urn_comunica_default_query_source_identify_hypermedia_mediators_main","urn_comunica_default_rdf_join_entries_sort_mediators_main","urn_comunica_default_rdf_join_selectivity_mediators_main","urn_comunica_default_rdf_metadata_accumulate_mediators_main","urn_comunica_default_rdf_serialize_mediators_serialize","urn_comunica_default_rdf_serialize_mediators_mediaType","urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat","urn_comunica_default_rdf_update_quads_mediators_main","urn_comunica_default_query_operation_mediators_main","urn_comunica_default_query_process_mediators_main","urn_comunica_default_query_source_identify_mediators_main","urn_comunica_default_rdf_join_mediators_main","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator","urn_comunica_default_http_invalidate_mediators_main","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator","urn_comunica_default_http_mediators_main","urn_comunica_default_merge_bindings_context_mediators_main","urn_comunica_default_dereference_rdf_mediators_main","urn_comunica_default_rdf_metadata_mediators_main","urn_comunica_default_rdf_metadata_extract_mediators_main","urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main","urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main","urn_comunica_default_rdf_join_actors_inner_hash","urn_comunica_default_rdf_join_actors_inner_symmetric_hash","urn_comunica_default_rdf_join_actors_inner_nested_loop","urn_comunica_default_rdf_join_actors_inner_multi_smallest","urn_comunica_default_optimize_query_operation_actors_filter_pushdown","urn_comunica_default_init_actors_query","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActorQueryResultSerializeSparqlJson_jsonld_ActorQueryResultSerializeSparqlJson_default_observer","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer","urn_comunica_default_query_process_actors_sequential","urn_comunica_default_query_source_identify_actors_hypermedia","urn_comunica_default_rdf_join_actors_inner_multi_bind","urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations","urn_comunica_default_optimize_query_operation_actors_join_connected","urn_comunica_default_optimize_query_operation_actors_bgp_to_join","urn_comunica_default_optimize_query_operation_actors_join_bgp","urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive","actor_init_query_1","engineDefault","QueryEngine","QueryEngineBase","engine","core_1","ActorAbstractMediaTyped","Actor","run","action","typedAction","handle","runHandle","handleMediaType","context","mediaTypes","getMediaTypes","mediaTypeFormats","getMediaTypeFormats","testHandle","testMediaType","testMediaTypeFormats","ActorAbstractMediaTyped_1","ActorAbstractMediaTypedFixed","scale","priorityScale","mediaTypePriorities","_index","freeze","mediaType","testHandleChecked","_context","bus_query_operation_1","context_entries_1","asynciterator_1","rdf_data_factory_1","rdf_string_1","sparqlalgebrajs_1","PathVariableObjectIterator_1","DF","DataFactory","ActorAbstractPath","ActorQueryOperationTypedMediated","predicateType","testOperation","operation","predicate","generateVariable","path","subject","object","variable","isPathArbitraryLengthDistinct","KeysQueryOperation","isPathArbitraryLengthDistinctKey","ActorQueryOperation","getSafeBindings","mediatorQueryOperation","mediate","FACTORY","createDistinct","predicateStarGraphVariable","graph","bindingsFactory","sources","getPathSources","predVar","createPath","findGraphs","createUnion","assignPatternSources","createPattern","results","passedGraphs","bindingsStream","multiTransform","bindings","graphValue","EmptyIterator","TransformIterator","async","it","BufferedIterator","getObjectsPredicateStar","count","maxBufferSize","autoStart","metadata","getObjectsPredicateStarEval","emitFirstSubject","termType","PathVariableObjectIterator","getProperty","metadataInner","cardinality","termHashes","counter","termString","termToString","_push","thisVariable","getSubjectAndObjectBindingsPredicateStar","subjectVar","objectVar","subjectVal","objectVal","termHashesGlobal","termHashesCurrentSubject","objects","objectsArray","Algebra","types","ALT","SEQ","flatMap","subOp","INV","ONE_OR_MORE_PATH","ZERO_OR_MORE_PATH","ZERO_OR_ONE_PATH","LINK","NPS","source","getOperationSource","pattern","assignOperationSource","Factory","maxRunningOperations","runningOperations","pendingOperations","pushAsResult","pendingOperation","runningOperation","_fillBufferAsync","setProperty","lastCount","bus_context_preprocess_1","ActorContextPreprocessConvertShortcuts","ActorContextPreprocess","_action","expandShortcuts","contextKeyShortcuts","ActionContextKey","delete","lru_cache_1","ActorContextPreprocessQuerySourceIdentify","cache","cacheSize","LRUCache","httpInvalidator","addInvalidateListener","clear","KeysInitQuery","querySourcesUnidentified","querySourcesUnidentifiedExpanded","all","querySource","expandSource","querySources","identifySource","querySourceUnidentified","statisticDereferenceLinks","KeysStatistics","dereferencedLinks","updateStatistic","referenceValue","seed","mediatorContextPreprocess","ActionContext","ensureActionContext","sourcePromise","mediatorQuerySourceIdentify","QuerySourceSkolemized_1","utils_1","ActorContextPreprocessQuerySourceSkolemize","KeysQuerySourceIdentify","sourceIds","getSafe","sourceWrapper","QuerySourceSkolemized","getSourceId","metadata_1","innerSource","sourceId","getSelectorShape","queryBindings","operationMapped","deskolemizeOperation","ArrayIterator","MetadataValidationState","canContainUndefs","skolemizeBindingsStream","queryBoolean","queryQuads","skolemizeQuadStream","queryVoid","data_factory_1","rdf_terms_1","skolemizeTerm","term","BlankNodeScoped","namedNode","SKOLEM_PREFIX","skolemizeQuad","quad","mapTermsNested","skolemizeBindings","deskolemizeTerm","skolemized","startsWith","colonSeparator","termLabel","blankNode","deskolemizeTermNestedThrowing","subTerm","deskolemized","ret","inheritMetadata","Util","mapOperation","PATTERN","op","factory","recurse","PATH","ActorContextPreprocessSetDefaults","defaultFunctionArgumentsCache","initialize","setDefault","queryTimestamp","Date","KeysCore","log","logger","functionArgumentsCache","hypermediaSourcesAggregatedStores","queryFormat","language","graphqlSingularizeVariables","ActorContextPreprocessSourceToDestination","KeysRdfUpdateQuads","destination","bus_hash_bindings_1","hash_js_1","canonicalize","ActorHashBindingsSha1","ActorHashBindings","allowHashCollisions","hashFunction","sha1","update","fromEntries","digest","hashCollisions","bus_hash_quads_1","ActorHashQuadsSha1","ActorHashQuads","quadToStringQuad","ActorInitQueryBase_1","process","globalThis","ActorInitQuery","ActorInitQueryBase","bus_init_1","ActorInit","actorInitQuery","query","queryOfType","expectedType","resultType","execute","output","queryOrExplain","explain","explainMode","actionContext","noCache","invalidateHttpCache","mediatorQueryProcess","internalToFinalResult","getResultMediaTypes","mediatorQueryResultSerializeMediaTypeCombiner","getResultMediaTypeFormats","mediatorQueryResultSerializeMediaTypeFormatCombiner","resultToString","queryResult","finalToInternalResult","mediatorQueryResultSerialize","mediatorHttpInvalidate","internalResult","quadStream","finalResult","QueryEngineBase_1","bus_optimize_query_operation_1","bus_rdf_update_quads_1","ActorOptimizeQueryOperationAssignSourcesExhaustive","ActorOptimizeQueryOperation","getDataDestinationValue","shape","doesShapeAcceptOperation","assignExhaustive","queryString","subOperation","createAlt","SERVICE","CONSTRUCT","createConstruct","template","DELETE_INSERT","createDeleteInsert","insert","where","ActorOptimizeQueryOperationBgpToJoin","bgp","createJoin","patterns","Keys_1","ActorOptimizeQueryOperationConstructDistinct","distinctConstruct","construct","AF","ActorOptimizeQueryOperationDescribeToConstructsSubject","DESCRIBE","operationOriginal","operations","terms","templatePattern","BGP","variablePatterns","JOIN","ActorOptimizeQueryOperationFilterPushdown","splitConjunctive","expression","expressionType","expressionTypes","OPERATOR","operator","logDebug","reduce","createFilter","getSources","sourceShapes","repeat","iterations","maxIterations","shouldAttemptPushDown","getExpressionVariables","isModified","filterPushdown","mergeConjunctive","FILTER","nestedExpressions","getNestedFilterExpressions","previous","current","createOperatorExpression","aggressivePushdown","some","sourceAdder","src","recurseOperation","AGGREGATE","WILDCARD","EXISTENCE","inScopeVariables","NAMED","uniqTerms","arg","TERM","getOverlappingOperations","expressionVariables","fullyOverlapping","partiallyOverlapping","notOverlapping","inputVariables","variablesSubSetOf","variablesIntersect","isExpressionFalse","EXPRESSION","EXTEND","createExtend","joins","NOP","PROJECT","createProject","UNION","unions","VALUES","LEFT_JOIN","pushIntoLeftJoins","rightVariables","createLeftJoin","pushEqualityIntoPatterns","pushableResult","getEqualityExpressionPushableIntoPattern","originalMetadata","equals","createValues","MINUS","ASK","DISTINCT","FROM","GRAPH","GROUP","ORDER_BY","REDUCED","SLICE","COMPOSITE_UPDATE","LOAD","CLEAR","CREATE","DROP","ADD","MOVE","COPY","isLiteralWithCanonicalLexicalForm","datatype","varsA","varsB","varA","varB","varsNeedles","varsHaystack","every","childData","ActorOptimizeQueryOperationGroupSources","groupOperation","groupedInput","scopedSource","removeOperationSource","inputs","subInput","clusters","clusterOperationsWithEqualSources","newInputs","moveSourceAnnotationUpwardsIfPossible","multiFactoryMethod","createSeq","groupOperationMulti","factoryMethod","flatten","nestedMerges","cluster","merged","operationsIn","sourceOperations","sourcelessOperations","ActorOptimizeQueryOperationJoinBgp","createBgp","ActorOptimizeQueryOperationJoinConnected","oldClusters","newClusters","clusterIteration","subJoins","oldCluster","entry","joined","newEntry","haveOverlappingVariables","variablesA","variablesB","variableA","ActorOptimizeQueryOperationPruneEmptySourceOperations","collectedOperations","collectMultiOperationInputs","emptyOperations","checkOperation","collectedOperation","iri","hasSourceResults","mapMultiOperation","children","hasEmptyOperation","emptyOperation","subSubOperation","inputType","multiOperationFactory","nonEmptyInputs","traverse","useAskIfSupported","askOperation","createAsk","ActorOptimizeQueryOperationRewriteAdd","defaultGraph","ActorOptimizeQueryOperationRewriteCopy","createCompositeUpdate","createDrop","createAdd","silent","ActorOptimizeQueryOperationRewriteMove","updates","ActorQueryOperationAsk","_operation","runOperation","take","toArray","ActorQueryOperationBgpJoin","BindingsToQuadsIterator_1","ActorQueryOperationConstruct","getVariables","concat","getTermsNested","meta","order","availableOrders","BindingsToQuadsIterator","blankNodeCounter","bindTerm","bindQuad","boundTerm","localizeBlankNode","localizeQuad","bindTemplate","x","Boolean","ActorQueryOperationDistinctHash","mediatorHashQuads","outputQuads","getSafeQuads","newHashFilterQuads","outputBindings","newHashFilter","mediatorHashBindings","hashes","_quad","bindings_factory_1","expression_evaluator_1","ActorQueryOperationExtend","BindingsFactory","mediatorMergeBindingsContext","AsyncEvaluator","getAsyncExpressionContext","innerVariable","config","evaluator","evaluate","isExpressionError","logWarn","bindingsToString","outputMetadata","ActorQueryOperationFilter","outputRaw","validateQueryOutput","evaluateAsEBV","ActorQueryOperationFromQuad","copyOperation","recursiveCb","copiedOperation","ALGEBRA_TYPES","applyOperationDefaultGraph","defaultGraphs","joinOperations","bgps","unionOperations","paths","applyOperationNamedGraph","namedGraphs","patternGraph","pat","namedGraph","createOperation","default","named","GroupsState_1","ActorQueryOperationGroup","aggregate","aggregates","agg","sparqleeConfig","groups","GroupsState","bindingsStreamInner","collectResults","consumeBindings","catch","groupsInitializer","groupVariables","waitCounter","resultHasBeenCalled","check","resultCheck","grouper","_","groupHash","hashBindings","groupInitializer","groupInitializerDefined","group","aggregators","put","subtractWaitCounterAndCollect","AsyncAggregateEvaluator","handleResultCollection","rows","groupBindings","returnBindings","single","emptyValue","waitResolver","ActorQueryOperationJoin","mediatorJoin","ActorQueryOperationLeftJoin","ActorQueryOperationMinus","ActorQueryOperationNop","SingletonIterator","SortIterator_1","ActorQueryOperationOrderBy","POSITIVE_INFINITY","expr","expressions","extractSortExpression","isAscending","transformedStream","sortedStream","SortIterator","compare","orderTypes","sort","windowLength","isFinite","sorted","mid","trunc","_flush","actor_abstract_path_1","actor_query_operation_union_1","ActorQueryOperationPathAlt","subOperations","subPredicate","UnionIterator","subMeta","ActorQueryOperationUnion","unionMetadata","mediatorRdfMetadataAccumulate","ActorQueryOperationPathInv","invPath","ActorQueryOperationPathLink","ActorQueryOperationPathNps","blank","iris","ActorQueryOperationPathOneOrMore","distinct","starEval","createOneOrMorePath","createInv","ActorQueryOperationPathSeq","joiner","generatedVariableNames","nextJoiner","generatedVariableName","joinMetadata","ActorQueryOperationPathZeroOrMore","sVar","oVar","entities","subjectGraphHash","objectGraphHash","pred","ActorQueryOperationPathZeroOrOne","extra","bindingsOne","varP","bindingsZero","createTermExpression","prepend","ActorQueryOperationProject","deleteVariables","subVariable","deleteVariable","scopedBlankNodesCache","BlankNodeBindingsScoped","scopedBlankNode","ActorQueryOperationReducedHash","ActorQueryOperationService","forceSparqlEndpoint","ActorQueryOperationSlice","limitIndicator","sliceStream","sliceMetadata","hasLength","subMetadata","min","ActorQueryOperationSource","httpRequests","physicalQueryPlanLogger","logOperation","physicalQueryPlanNode","mergedContext","merge","getMetadataQuads","getMetadataBindings","unionVariables","flat","metadatas","accumulatedMetadata","appendingMetadata","invalidateListener","invalidate","outputsRaw","outputType","outputs","ActorQueryOperationClear","throwOnReadOnly","graphs","mediatorUpdateQuads","deleteGraphs","requireExistence","dropGraphs","ActorQueryOperationUpdateCompositeUpdate","subResult","getSafeVoid","ActorQueryOperationCreate","createGraphs","requireNonExistence","actor_query_operation_construct_1","ActorQueryOperationUpdateDeleteInsert","whereBindings","quadStreamInsert","quadStreamDelete","ActorQueryOperationDrop","ActorQueryOperationLoad","subContext","lenient","ActorQueryOperationValues","ActorQueryOperationTyped","bus_query_parse_1","graphql_to_sparql_1","ActorQueryParseGraphql","ActorQueryParse","graphqlToSparql","Converter","requireContext","jsonLdContext","singularizeVariables","graphqlToSparqlAlgebra","sparqljs_1","ActorQueryParseSparql","parsedSyntax","baseIRI","sparqlStar","base","translate","quads","blankToVariable","bus_query_process_1","ActorQueryProcessExplainLogical","ActorQueryProcess","queryProcessor","optimize","ActorQueryProcessExplainParsed","MemoryPhysicalQueryPlanLogger_1","ActorQueryProcessExplainPhysical","MemoryPhysicalQueryPlanLogger","toCompactString","toJson","numberToString","toLocaleString","minimumFractionDigits","maximumFractionDigits","planNodes","logicalOperator","physicalOperator","node","parentNode","actor","planNode","rawNode","rootNode","planParentNode","stashChildren","unstashChild","appendMetadata","planNodeToJson","logical","physical","getLogicalMetadata","compactMetadata","child","childrenGrouped","lastSubChild","at","getPlanHash","childrenCompact","occurrences","firstOccurrence","compactMetadataValue","quadToString","lines","nodeToCompactString","id","indent","bindOperation","bindOperationCardinality","cardinalityReal","timeSelf","timeLife","ActorQueryProcessSequential","queryParseOutput","mediatorQueryParse","initialBindings","materializeOperation","mediatorOptimizeQueryOperation","bus_query_result_serialize_1","RdfString","ActorQueryResultSerializeJson","ActorQueryResultSerializeFixedMediaTypes","_mediaType","wrap","element","empty","setTimeout","ActorQueryResultSerializeRdf","ActorQueryResultSerialize","mediatorMediaTypeCombiner","mediatorRdfSerialize","mediatorMediaTypeFormatCombiner","ActorQueryResultSerializeSimple","ActorQueryResultSerializeSparqlCsv","bindingToCsvBindings","stringValue","replaceAll","bindingsAction","ActionObserverHttp","ActionObserver","requests","bus","subscribeObserver","onRun","_actor","_output","ActorQueryResultSerializeSparqlJson","bindingToJsonBindings","literal","jsonValue","head","vars","resultStream","first","cb","emitMetadata","httpObserver","rdf_string_ttl_1","ActorQueryResultSerializeSparqlTsv","bindingToTsvBindings","XmlSerializer_1","ActorQueryResultSerializeSparqlXml","bindingToXmlBindings","valueToXmlValue","serializer","XmlSerializer","serializeNode","identation","formatTag","escape","ActorQueryResultSerializeStats","pushHeader","createStat","startTime","delay","createFooter","now","performance","time","hrtime","QUAD_TERM_NAMES_VARS","QUAD_TERM_NAMES","ActorQueryResultSerializeTable","padding","columnWidth","pad","labels","label","createRow","getTerms","sparqljson_to_tree_1","ActorQueryResultSerializeTree","bindingsStreamToGraphQl","converterSettings","converter","schema","bindingsToTree","materializeRdfJsTerms","ActorQueryResultSerializeTree_1","bus_query_source_identify_hypermedia_1","QuerySourceSparql_1","ActorQuerySourceIdentifyHypermediaSparql","ActorQuerySourceIdentifyHypermedia","testMetadata","forceSourceType","sparqlService","checkUrlSuffix","filterFactor","logInfo","QuerySourceSparql","mediatorHttp","bindMethod","forceHttpGet","countTimeout","fetch_sparql_endpoint_1","VAR_COUNT","COUNT_INFINITY","endpointFetcher","SparqlEndpointFetcher","lastSourceContext","prefixVariableQuestionMark","SELECTOR_SHAPE","operationIn","operationPromise","joinBindings","addBindingsToOperation","selectQuery","operationToSelectQuery","operationCanContainUndefs","queryBindingsRemote","attachMetadata","rawStream","fetchTriples","operationToQuery","fetchAsk","fetchUpdate","variablesCount","countQuery","operationToCountQuery","cachedCardinality","timeoutHandler","clearTimeout","cardinalityValue","addBindings","binding","createGroup","createBoundAggregate","createWildcardExpression","toSparql","leftjoin","union","scopedVariables","v","a","b","localeCompare","val","endpoint","fetchBindings","rawData","getContextLogger","warn","operationType","bus_query_source_identify_1","QuerySourceHypermedia_1","ActorQuerySourceIdentify","QuerySourceHypermedia","maxIterators","aggregateTraversalStore","mediatorMetadata","mediatorMetadataExtract","mediatorMetadataAccumulate","mediatorDereferenceRdf","mediatorQuerySourceIdentifyHypermedia","mediatorRdfResolveHypermediaLinks","mediatorRdfResolveHypermediaLinksQueue","warningMessage","LinkedRdfSourcesAsyncRdfIterator","queryBindingsOptions","firstUrl","sourceStateGetter","started","currentIterators","iteratorsPendingCreation","iteratorsPendingTermination","_reading","kickstart","propertyName","preflightMetadata","sourceState","accumulateMetadata","returnMetadata","canStartNewIterator","startIteratorsForNextUrls","handledDatasets","startIterator","canStartNewIteratorConsiderReadable","areIteratorsRunning","startSource","receivedEndEvent","receivedMetadata","_destination","_fillBuffer","previousMetadata","updateMetadata","metadataIn","getSourceLinks","nextUrls","linkQueue","getLinkQueue","nextUrl","link","syncError","metadataNew","metadataToInvalidate","isRunning","canClose","nextLink","nextSourceState","isCloseable","_requireQueueEmpty","isEmpty","LinkedRdfSourcesAsyncRdfIterator_1","MediatedLinkedRdfSourcesAsyncRdfIterator","aggregatedStore","wasForcefullyClosed","handledUrls","cause","requireQueueEmpty","hasRunningIterators","links","traversalTracker","discoveredLinks","containedSources","unionDefaultGraph","import","setBaseMetadata","actor_query_source_identify_rdfjs_1","MediatedLinkedRdfSourcesAsyncRdfIterator_1","StreamingStoreMetadata_1","aggregateStore","mediators","logWarning","sourcesState","getSourceCached","getAggregateStore","QuerySourceRdfJs","listener","addIteratorCreatedListener","removeIteratorCreatedListener","getSource","dereferenceRdfOutput","rdfMetadataOutput","triples","requestTime","dataset","aggregatedStores","StreamingStoreMetadata","rdf_streaming_store_1","StreamingStore","store","metadataAccumulator","runningIterators","iteratorCreatedListeners","baseMetadata","ClosableTransformIterator","onClose","getStore","countQuads","updateMetadataState","updateStates","QuerySourceRdfJs_1","ActorQuerySourceIdentifyRdfJs","nullifyVariables","quotedTripleFiltering","someTermsNested","hasDuplicateVariables","filterTermsNested","features","filterMatchingQuotedQuads","setMetadata","quadsToBindings","wouldRequirePostFiltering","someTerms","variablesOptional","bus_rdf_join_entries_sort_1","ActorRdfJoinEntriesSortCardinality","ActorRdfJoinEntriesSort","entryLeft","entryRight","bus_rdf_join_1","asyncjoin_1","ActorRdfJoinHash","ActorRdfJoin","logicalType","physicalName","limitEntries","requiresVariableOverlap","getOutput","getMetadatas","overlappingVariables","constructResultMetadata","getJoinCoefficients","requestInitialTimes","getRequestInitialTimes","requestItemTimes","getRequestItemTimes","persistedItems","blockingItems","ActorRdfJoinMultiBindSource","canHandleUndefs","entriesUnsorted","getEntriesWithMetadatas","sortJoinEntries","smallestStream","smallestMetadata","remainingEntries","createOperationFromEntries","chunkedStreams","ChunkedIterator","blockSize","physicalPlanMetadata","bindIndex","mediatorJoinEntriesSort","operationModified","remainingRequestInitialTimes","remainingRequestItemTimes","testingOperation","selectorShape","selectivities","mediatorJoinSelectivity","selectivity","selectivityModifier","cardinalityRemaining","sum","ActorRdfJoinMultiBind","minMaxCardinalityRatio","isLeaf","createBindStream","bindOrder","baseStream","operationBinder","optional","autoStartSubBindings","binder","bindFilter","bindingsMerger","subBindings","joinLeftMetadata","joinRightMetadatas","operationBindings","canBindWithOperation","valid","receiveInitialCostRemaining","receiveItemCostRemaining","ActorRdfJoinMultiEmpty","getCardinality","joinVariables","_metadatas","ActorRdfJoinMultiSmallestFilterBindings","limitEntriesMin","entriesSorted","second","secondIndex","secondSharedVariables","sharedVariables","variableFirst","variableSecond","remaining","secondIn","remainingIn","smallestStream1","commonVariables","smallestStream1Projected","commonVariable","filterBindings","joinedEntry","KeysRdfJoin","lastPhysicalJoin","unshift","firstIndex","remain","mul","ActorRdfJoinMultiSmallest","smallestEntry1","smallestEntry2","firstEntry","entriesWithMetadata","acc","ActorRdfJoinNestedLoop","ActorRdfJoinNone","ActorRdfJoinSingle","includeInLogs","ActorRdfJoinSymmetricHash","BindingsIndex_1","ActorRdfJoinMinusHashUndef","BindingsIndex","contains","bufferMetadata","hashTerm","isBindingsValid","dataIt","dataKey","subDataIt","containsRecursive","validKeys","dataIndexes","subDatas","subKey","ActorRdfJoinMinusHash","hashNonClashing","actor_rdf_join_inner_multi_bind_1","ActorRdfJoinOptionalBind","BindingsIndexDef_1","BindingsIndexUndef_1","ActorRdfJoinOptionalHash","blocking","constructIndex","undef","BindingsIndexUndef","BindingsIndexDef","getFirst","indexBindings","indexActive","iterators","hashFn","getRecursive","matchingRecursive","getRecursiveFirst","ActorRdfJoinOptionalNestedLoop","bus_rdf_join_selectivity_1","ActorRdfJoinSelectivityVariableCounting","ActorRdfJoinSelectivity","accuracy","getPatternCost","cost","getJoinTypes","operation1","operation2","joinTypes","JoinTypes","unboundSS","unboundSP","unboundSO","unboundSG","boundSS","boundSP","boundSO","boundSG","unboundPS","unboundPP","unboundPO","unboundPG","boundPS","boundPP","boundPO","boundPG","unboundOS","unboundOP","unboundOO","unboundOG","boundOS","boundOP","boundOO","boundOG","unboundGS","unboundGP","unboundGO","unboundGG","boundGS","boundGP","boundGO","boundGG","getOperationsPairwiseJoinCost","MAX_PAIRWISE_COST","joinType","getOperationsJoinCost","totalCost","costEntries","pattern1","pattern2","factor","bus_rdf_metadata_accumulate_1","ActorRdfMetadataAccumulateCanContainUndefs","ActorRdfMetadataAccumulate","ActorRdfMetadataAccumulateCardinality","subsetOf","ActorRdfMetadataAccumulatePageSize","pageSize","ActorRdfMetadataAccumulateRequestTime","bus_rdf_serialize_1","jsonld_streaming_serializer_1","ActorRdfSerializeJsonLd","ActorRdfSerializeFixedMediaTypes","writer","JsonLdSerializer","space","jsonStringifyIndentSpaces","pipe","n3_1","ActorRdfSerializeN3","StreamWriter","format","arrayify_stream_1","shaclc_write_1","ActorRdfSerializeShaclc","errorOnUnused","extendedSyntax","RdfJsQuadDestination_1","ActorRdfUpdateQuadsRdfJsStore","ActorRdfUpdateQuadsDestination","getContextDestination","remove","getDestination","RdfJsQuadDestination","event_emitter_promisify_1","promisifyEventEmitter","_requireExistence","_dropGraphs","deleteGraph","allQuads","stringToTerm","eventEmitter","once","immutable_1","bindingsToString_1","Bindings","dataFactory","contextHolder","mapIterable","iteratorToIterable","fn","other","createBindingsWithContexts","mergeWith","merger","mergeContext","contextMergeHandlers","otherContext","allKeys","newContextData","handledKeys","keysSetOtherContext","keysBothContext","occursInBoth","setContextEntry","setContextEntryRaw","deleteContextEntry","deleteContextEntryRaw","getContext","getContextEntry","iterable","Bindings_1","mergeHandlers","fromBindings","fromRecord","record","raw","ActorHttpInvalidate","ActorHttpInvalidate_1","ActorHttpInvalidateListenable","invalidateListeners","bnodeCounter","getSafeBoolean","getBaseExpressionContext","extensionFunctionCreator","extensionFunctions","functionNamedNode","getExpressionContext","_mediatorQueryOperation","bnode","exists","createExistenceResolver","not","readOnly","ActorQueryOperation_1","operationName","cachifyMetadata","ActorQueryOperationTyped_1","materializeTerm","createValuesFromBindings","newBinding","strictTargetVariables","originalBindings","extend","project","bindingKey","curVariable","recursionResult","recursionResultExpression","recursionResultInput","valueBindings","keyString","aggregator","BusQueryOperation","BusIndexed","actorIdentifierFields","actionIdentifierFields","ClosableIterator","_source","DESTINATION","destinationClose","destinationEmitError","destinationSetReadable","removeListener","actor_abstract_mediatyped_1","sourceType","QuadTermUtil_1","isTermVariable","getDuplicateElementLinks","variableElements","duplicateVariables","forEachTermsNested","duplicateElementLinks","elements","remainingElements","elementVariables","forceEstimateCardinality","getMetadataCb","metadataRaw","quadsMetadataToBindingsMetadata","validateMetadataQuads","metadataQuads","quadsOrderToBindingsOrder","orderDef","quadsOrder","mappedVariables","variableName","direction","filterNonDefaultQuads","reduceTermsNested","filteredOutput","keyLeft","keysLeft","valueLeft","getValueNestedPath","keysRight","matchPatternMappings","instrumentIterator_1","baseArray","el","constructState","partialMetadata","cardinalityJoined","cardinalityThis","variableOccurrences","multiOccurrenceVariables","entriesWithoutCommonVariables","hasCommon","leftWithoutCommonVariables","parentPhysicalQueryPlanNode","planMetadata","instrumentIterator","counters","cardinalities","joinCoefficients","consumeChunkAsIterator","_transform","instrumentIteratorInner","top","_profileInstrumented","readOld","ActorRdfSerialize","ActorRdfUpdateQuads","actor_context_preprocess_query_source_skolemize_1","ActorRdfUpdateQuads_1","deskolemizeStream","deskolemizeQuad","deskolemize","isDataDestinationRawType","dataDestination","fileUrl","hashPosition","CONTEXT_KEY_LOGGER","includeCredentials","auth","httpTimeout","httpBodyTimeout","httpRetryCount","httpRetryDelay","httpRetryOnServerError","recoverBrokenLinks","datetime","httpProxyHandler","cliArgsHandlers","documentLoader","strictValues","parserOptions","processingHtmlScript","extractAllScripts","sourcesBinding","setRaw","getRaw","hasRaw","contexts","keyName","toJS","for","maybeActionContext","ContextEntries_1","beforeActors","subscribe","addDependencies","runObservable","deinitialize","getDefaultLogData","dataActual","logTrace","trace","debug","info","logError","logFatal","fatal","actors","observers","dependencyLinks","reorderForDependencies","observer","unsubscribe","unsubscribeObserver","publish","reply","dependent","dependencies","dependency","existingDependencies","actorsAfter","actorAfter","dependentPos","activeActorAfterId","validLink","activeActorAfter","Bus_1","Bus","actorsIndex","actorId","getActorIdentifier","actionId","getActionIdentifier","_undefined_","field","ActionContext_1","mediateActor","mediateWith","singleBindingsScope","TermTransformer_1","Consts_1","TypeHandling_1","sharedContext","separator","termTransformer","TermTransformer","superTypeProvider","termToNumericOrError","isSubTypeOf","TypeAlias","SPARQL_NUMERIC","transformLiteral","aggregatorComponent","variableValues","component","canSkip","addSeen","E","functions_1","Helpers_1","Aggregator_1","Average","AggregatorComponent","summer","regularFunctions","RegularOperator","ADDITION","divider","DIVISION","integer","toRDF","internalTerm","IntegerLiteral","Count","GroupConcat","lastLanguageValid","lastLanguage","langString","Ordering_1","Max","Min","Sample","Sum","bindingValues","putBindings","handleDistinct","bindingList","snd","Average_1","Count_1","GroupConcat_1","Max_1","Min_1","Sample_1","Sum_1","avg","group_concat","sample","BaseAggregateEvaluator_1","SyncEvaluator_1","AggregateEvaluator","BaseAggregateEvaluator","throwError","SyncEvaluator","completeContext","errorOccurred","isWildcard","wildcardAggregator","startTerm","safeThrow","AsyncEvaluator_1","AlgebraTransformer_1","DateTimeHelpers_1","AsyncRecursiveEvaluator_1","typeCache","discoverer","getSuperType","defaultTimeZone","extractTimeZone","algExpr","creator","baseContext","transformer","AlgebraTransformer","transformAlgebra","AsyncRecursiveEvaluator","coerceEBV","evaluateAsInternal","SyncRecursiveEvaluator_1","SyncRecursiveEvaluator","Err","BaseExpressionEvaluator_1","BaseExpressionEvaluator","subEvaluators","ExpressionType","Term","_mapping","Variable","Operator","evalOperator","SpecialOperator","evalSpecialOperator","Named","evalNamed","Existence","evalExistence","Aggregate","evalAggregate","AsyncExtension","evalAsyncExtension","InvalidExpressionType","argPromises","argResults","applyAsync","_evalAsyncArgs","NoExistenceHook","BooleanLiteral","NoAggregator","transformRDFTermUnsafe","aggregators_1","WildcardCountAggregator_1","Aggregator","WildcardCountAggregator","EmptyAggregateError","expressionToVar","UnboundVariableError","SyncExtension","evalSyncExtension","applySynchronously","Expressions_1","Serialization_1","InvalidArgumentTypes","STR","EBVCoercionError","valueTerm","RDFsubject","RDFpredicate","RDFobject","Literal","typedValue","dataType","strValue","NumericLiteral","specificFormatter","TypeURL","XSD_INTEGER","toFixed","XSD_DECIMAL","XSD_FLOAT","XSD_DOUBLE","jsExponential","toExponential","jsMantisse","jsExponent","exponent","XSD_BOOLEAN","RDF_LANG_STRING","XSD_STRING","XSD_DATE_TIME","serializeDateTime","XSD_TIME","serializeTime","XSD_DATE","serializeDate","DurationLiteral","XSD_DURATION","serializeDuration","XSD_DAY_TIME_DURATION","XSD_YEAR_MONTH_DURATION","NonLexicalLiteral","openWorldType","lit","BaseFunction","definition","monomorph","handleInvalidTypes","concreteFunction","arity","overloads","search","functionClass","checkArity","expressions_1","OverloadTree_1","identifier","Builder","overloadTree","OverloadTree","collected","collect","wrapInvalidLexicalProtected","func","InvalidLexicalForm","argTypes","addInvalidHandling","addOverload","from","to","impl","getImplementationExact","UnexpectedError","onUnary","onUnaryTyped","onBinary","onBinaryTyped","onTernaryTyped","a1","a2","a3","onTernary","onQuaternaryTyped","a4","onTerm1","onTerm3","t1","t2","t3","onQuad1","onLiteral1","onBoolean1","onBoolean1Typed","onString1","onString1Typed","onLangString1","onStringly1","SPARQL_STRINGLY","onStringly1Typed","onNumeric1","onDateTime1","numericConverter","evalHelper","decimal","float","double","arithmetic","numberTest","numeric","bool","stringTest","booleanTest","dateTimeTest","DecimalLiteral","FloatLiteral","DoubleLiteral","StringLiteral","lang","LangStringLiteral","date","DateTimeLiteral","variableExpression","Parsing_1","xsdToString","declare","xsdToFloat","parseXSDFloat","CastError","xsdToDouble","xsdToDecimal","parseXSDDecimal","xsdToInteger","parseXSDInteger","xsdToDatetime","dateTime","parseDateTime","hours","minutes","seconds","xsdToBoolean","xsdToTime","TimeLiteral","parseTime","xsdToDate","DateLiteral","parseDate","xsdToDuration","parseDuration","xsdToDayTimeDuration","DayTimeDurationLiteral","trimToDayTimeDuration","parseDayTimeDuration","xsdToYearMonthDuration","YearMonthDurationLiteral","trimToYearMonthDuration","parseYearMonthDuration","depth","implementation","generalOverloads","literalOverLoads","promotionCount","getSubtree","overrideType","generalType","asGeneralType","cacheIter","searchIndex","literalExpression","isLiteralTermExpression","searchStack","getSubTreeWithArg","startIndex","addToCache","getDefault","lruCache","argumentTypes","_addOverload","argumentType","_argumentTypes","nextTree","newNode","asOverrideType","typePromotion","addPromotedOverload","typeToPromote","conversionFunction","funcConf","concreteType","asKnownLiteralType","subExtensionTable","superTypeDictTable","getSuperTypes","matchType","tree","prioA","matchTypeA","prioB","matchTypeB","sortedType","bignumber_js_1","relative_to_absolute_iri_1","spark_md5_1","uuid","SpecAlgos_1","Core_1","X","_1","NOT","unaryPlus","UPLUS","unaryMinus","UMINUS","multiplication","MULTIPLICATION","BigNumber","times","toNumber","division","div","ExpressionError","addition","plus","dur","addDurationToDateTime","defaultedDurationRepresentation","defaultedDateTimeRepresentation","subtraction","SUBTRACTION","minus","date1","date2","elapsedDuration","negateDuration","equality","toUTCDate","getTime","RegularFunction","_left","_right","RDFEqualTypeError","RDFTermEqual","dur1","dur2","yearMonthDurationsToMonths","defaultedYearMonthDurationRepresentation","dayTimeDurationsToSeconds","defaultedDayTimeDurationRepresentation","time1","time2","inequality","NOT_EQUAL","lesserThan","LT","dur1L","dur2L","greaterThan","GT","lesserThanEqual","LTE","greaterThanEqual","GTE","isIRI","IS_IRI","isBlank","IS_BLANK","isLiteral","IS_LITERAL","isNumeric","IS_NUMERIC","LANG","DATATYPE","NamedNode","IRI","STRDT","STRLANG","UUID","v4","STRUUID","STRLEN","SUBSTR","startingLoc","sub","UCASE","LCASE","STRSTARTS","arg1","arg2","IncompatibleLanguageOperation","STRENDS","CONTAINS","STRBEFORE","STRAFTER","ENCODE_FOR_URI","encodeURI","langmatches","LANG_MATCHES","range","langMatches","REGEX","flags","REPLACE","replacement","abs","ABS","round","ROUND","ceil","CEIL","floor","FLOOR","rand","RAND","random","NOW","toDateTimeRepresentation","timeZone","year","YEAR","month","MONTH","day","DAY","HOURS","MINUTES","SECONDS","timezone","TIMEZONE","duration","zoneHours","zoneMinutes","InvalidTimezoneCall","tz","TZ","extractRawTimeZone","MD5","SHA1","SHA256","sha256","SHA384","sha384","SHA512","sha512","triple","TRIPLE","Quad","SUBJECT","PREDICATE","istriple","IS_TRIPLE","uplus","uminus","isiri","isuri","isblank","isliteral","isnumeric","strdt","strlang","struuid","strlen","substr","ucase","lcase","strstarts","strends","strbefore","strafter","encode_for_uri","regex","md5","bound","bound_","BOUND","ifSPARQL","valFirst","coalesce","errors","CoalesceError","logicalOr","leftExpr","rightExpr","logicalAnd","sameTerm","inSPARQL","inRecursiveAsync","inRecursiveSync","needle","InError","nextExpression","notInSPARQL","_in","specialFunctions","IN","isIn","concatTree","CONCAT","pLits","pTerm","lits","langAllEqual","bnodeTree","BNODE","strInput","BlankNode","BNODE_","if","sameterm","in","notin","_isWildCard","_matchLangTag","RegExp","reg","langTags","rangeTags","lI","rI","NamedFunctions_1","RegularFunctions_1","SpecialFunctions_1","definitions","specialDefinitions","SpecialFunction","namedDefinitions","NamedFunction","AggregateEvaluator_1","Errors_1","AsyncAggregateEvaluator_1","algebraConfig","creatorConfig","transformTerm","transformOperator","transformNamed","transformExistence","transformAggregate","transformWildcard","wildcard","SpecialOperators","specialOp","specialArgs","specialFunc","InvalidArity","Operators","UnknownOperator","regularOp","regularArgs","regularFunc","hasCorrectArity","wrapSyncFunction","ExtensionFunctionError","wrapAsyncFunction","funcName","namedArgs","NamedOperators","namedFunc","namedFunctions","syncExtensionFunc","simpleAppl","asyncExtensionFunc","asyncAppl","UnknownNamedOperator","RDFString","InvalidExpression","InvalidTermType","superTypeDict","getSuperTypeDict","dateVal","isFloat","isDouble","doubleVal","SetFunction","RegularOperators","rep","toJSDate","jumpDeltaOfDate","setFullYear","getFullYear","temp","years","days","getMonth","getDate","getHours","getMinutes","getSeconds","defaultTimezone","localTime","minutesCorrectionLocal","getTimezoneOffset","hourCorrectionUTC","minutesCorrectionUTC","zoneContained","exec","pp","arg0","cast","dateString","payload","functionError","comparePrimitives","valueA","valueB","termA","termB","strict","typeDiscoveryCallback","_TERM_ORDERING_PRIORITY","orderSubject","orderPredicate","orderObject","litA","litB","isGreater","isEqual","myLitA","myLitB","compareType","orderLiteralTypes","InvalidCompareArgumentTypes","DefaultGraph","parseTimeZone","timeZoneStr","dateStr","formatted","ParseError","dateStrings","maximumDayInMonthFor","__parseTime","timeStr","timeStrings","durationStr","dayNotation","timeNotation","formattedDayDur","durationStrings","formattedTimeDur","sign","simplifyDurationRepresentation","numb","NEGATIVE_INFINITY","dateTimeStr","numSerializer","minimumIntegerDigits","useGrouping","serializeTimeZone","zeroString","fDiv","high","low","intDiv","remainder","yearValue","monthValue","additionalYears","newDate","tempDiv","carry","d1","d2","diff","cached","__depth","subExtension","knownValue","extensionTableInit","_key","extensionTableInput","extensionTableBuilderInitKey","baseRes","baseType","XSD_DATE_TIME_STAMP","XSD_NORMALIZED_STRING","XSD_TOKEN","XSD_LANGUAGE","XSD_NM_TOKEN","XSD_NAME","XSD_NC_NAME","XSD_ENTITY","XSD_ID","XSD_ID_REF","XSD_NON_POSITIVE_INTEGER","XSD_NEGATIVE_INTEGER","XSD_LONG","XSD_INT","XSD_SHORT","XSD_BYTE","XSD_NON_NEGATIVE_INTEGER","XSD_POSITIVE_INTEGER","XSD_UNSIGNED_LONG","XSD_UNSIGNED_INT","XSD_UNSIGNED_SHORT","XSD_UNSIGNED_BYTE","XSD_G_MONTH","XSD_G_MONTHDAY","XSD_G_YEAR","XSD_G_YEAR_MONTH","XSD_G_DAY","XSD_ANY_URI","typeAliasCheck","initTypeAliasCheck","asTermType","types_1","LoggerVoid","Logger","MediatorAll","Mediator","validActors","testResults","testResult","MediatorCombinePipeline","filterErrors","_testResults","getOrder","elem","actor1","actor2","MediatorCombineUnion","combiner","createCombiner","MediatorJoinCoefficientsFixed","promises","coefficients","costs","coeff","cpuWeight","memoryWeight","timeWeight","ioWeight","maxCost","minIndex","minValue","bestActor","MediatorNumber","indexPicker","createIndexPicker","tests","prev","curr","getOrDefault","defaultValue","ignoreErrors","dummy","MediatorRace","subError","validateMetadataBindings","lastReturn","lastReturnValue","getLevelOrdinal","level","LEVELS","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","len","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","globalObject","mathceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","z","r","y","xc","yc","intCheck","isOdd","charAt","toFixedPoint","zs","configObject","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","valueOf","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","alphabetHasNormalDecimalDigits","alphabet","caseChanged","isNum","_isBigNumber","substring","DEBUG","rm","c0","ne","maxOrMin","normalise","sd","d","ni","rd","pows10","out","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","minimum","dp","Uint32Array","toBaseOut","baseIn","baseOut","arrL","reverse","callerIsToString","pow","multiply","xlo","xhi","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","p1","p2","absoluteValue","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","mod","integerValue","isEqualTo","eq","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThan","isLessThanOrEqualTo","lte","isNegative","isPositive","isZero","t","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","toFormat","g1","g2","intPart","fractionPart","isNeg","intDigits","toFraction","md","d0","exp","n0","n1","toPrecision","toJSON","base64","ieee754","customInspectSymbol","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","setPrototypeOf","encodingOrOffset","allocUnsafe","isEncoding","actual","fromString","arrayView","isInstance","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","isBuffer","checked","numberIsNaN","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","foo","typedArraySupport","console","poolSize","fill","allocUnsafeSlow","_isBuffer","list","pos","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","_arr","hexSliceLookupTable","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","sym","getMessage","Base","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","received","INVALID_BASE64_RE","Infinity","leadSurrogate","base64clean","dst","table","i16","BufferBigIntNotDefined","serialize","Function","cv","ci","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","ownKeys","getOwnPropertySymbols","NumberIsNaN","EventEmitter","emitter","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","events","existing","warning","newListener","warned","w","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","listeners","addListener","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","equal","sparqljson_parse_1","sparqlxml_parse_1","stringifyStream","readable_web_to_node_stream_1","n3","isStream","additionalUrlParams","defaultHeaders","fetchCb","sparqlJsonParser","SparqlJsonParser","sparqlXmlParser","SparqlXmlParser","sparqlParsers","CONTENTTYPE_SPARQL_JSON","parseBooleanStream","sparqlResponseStream","parseJsonBooleanStream","parseResultsStream","parseJsonResultsStream","CONTENTTYPE_SPARQL_XML","parseXmlBooleanStream","parseXmlResultsStream","timeout","getQueryType","parsedQuery","queryType","getUpdateTypes","updateType","contentType","responseStream","fetchRawStream","CONTENTTYPE_SPARQL","CONTENTTYPE_TURTLE","StreamParser","abortController","defaultHeadersRaw","handleFetchCall","ignoreBody","acceptHeader","encodeURIComponent","timeoutId","controller","httpResponse","simpleUrl","bodyString","language_1","handler_1","directivenode_1","IConvertContext_1","Util_1","settings","variableDelimiter","expressionVariableCounter","util","initializeNodeHandlers","registerNodeHandlers","registerNodeHandler","NodeHandlerDocument","NodeHandlerDefinitionOperation","NodeHandlerDefinitionFragment","NodeHandlerSelectionFragmentSpread","NodeHandlerSelectionInlineFragment","NodeHandlerSelectionField","registerNodeValueHandlers","registerNodeValueHandler","NodeValueHandlerVariable","NodeValueHandlerInt","NodeValueHandlerFloat","NodeValueHandlerString","NodeValueHandlerBoolean","NodeValueHandlerNull","NodeValueHandlerEnum","NodeValueHandlerList","NodeValueHandlerObject","registerDirectiveNodeHandlers","registerDirectiveNodeHandler","DirectiveNodeHandlerInclude","DirectiveNodeHandlerOptional","DirectiveNodeHandlerPlural","DirectiveNodeHandlerSingle","DirectiveNodeHandlerSkip","graphqlQuery","graphqlToSparqlAlgebraRawContext","contextParser","document","convertContext","fragmentDefinitions","indexFragments","singularizeState","SingularizeState","PLURAL","terminalVariables","variablesDict","variablesMetaDict","handleNode","newDefinitions","kind","jsonld_context_parser_1","nodeHandlers","nodeValueHandlers","directiveNodeHandlers","operationFactory","ContextParser","nodeHandler","targetKind","nodeValueHandler","directiveNodeHandler","handleNodeValue","fieldName","handleDirectiveNode","directiveContext","directive","nonBgps","joinOperationsAsBgp","originalLeftJoin","joinOperationsAsNestedJoin","appendFieldToPath","fieldLabel","getFieldLabel","alias","nameToVariable","valueToNamedNode","contextValue","expandTerm","getArgument","argument","newTypePattern","typeCondition","createQuadPattern","predicateName","getContextRaw","createQuadPath","predicateAlternatives","predicateInitial","pathSymbol","createLink","predicateAlternative","NodeHandlerAdapter","getNodeQuadContextSelectionSet","selectionSet","nodeQuadContext","selectionNode","selections","fieldNode","handleNodeQuadContextField","nodeQuadContextKey","valueOutput","auxiliaryPatterns","getDirectiveOutputs","directives","ignore","handleDirectiveOutputs","directiveOutputs","directiveOutput","operationOverrider","NodeHandlerDefinitionAdapter","NodeHandlerAdapter_1","NodeHandlerDefinitionAdapter_1","operationDefinition","variableDefinitions","variableDefinition","typeNode","mandatory","definitionOperations","subjectOutput","getNodeQuadContextDefinitionNode","ignoreUnknownVariables","queryParseContext","definitionOperation","translateBlankNodesToVariables","blankToVariableMapping","variablesRaw","createUniqueVariable","NodeHandlerSelectionAdapter","getNodeQuadContextFieldNode","fieldToOperation","pushTerminalVariables","nesting","SINGLE","operationOverride","handleMetaField","overrideObjectTerms","pathValue","subConvertContext","totalCount","selection","joinedOperation","expressionVariable","countOverVariable","countProject","createSlice","NodeHandlerSelectionAdapter_1","fragmentSpreadNode","fragmentDefinitionNode","inlineFragmentNode","DirectiveNodeHandlerAdapter","getDirectiveConditionalValue","subValue","isDirectiveScopeAll","scopeArg","DirectiveNodeHandlerAdapter_1","NodeValueHandlerAdapter","NodeValueHandlerAdapter_1","valueNode","nodeFirst","nodeRest","nodeNil","listTerms","arraysToRdfLists","firstListNode","listNode","nextListNode","nil","auxiliaryObjectPatterns","fields","contextEntry","listValue","__setModuleDefault","__importStar","__importDefault","toSparqlJs","sparqlAlgebra_1","factory_1","sparql_1","util_1","A","stringType","createTerm","flattenMulti","createAggregateExpression","createDescribe","createFrom","def","createGraph","createMinus","createNop","createNps","createOrderBy","createReduced","createService","createZeroOrMorePath","createZeroOrOnePath","createExistenceExpression","createNamedExpression","Wildcard","deleteQuads","insertQuads","createLoad","addSilent","createClear","createCreate","createMove","createCopy","newChildren","rdf_isomorphic_1","eTypes","resetContext","translateOperation","removeQuadsRecursive","removeQuads","translateExpression","translateProject","translatePattern","translateBgp","translateConstruct","translateDistinct","translateExtend","translateFrom","translateFilter","translateGraph","aggs","translateBoundAggregate","translateGroup","translateJoin","translateLeftJoin","translateMinus","translateOrderBy","translatePathComponent","translatePath","reduced","translateReduced","translateService","translateSlice","arrayToPattern","translateUnion","translateValues","translateCompositeUpdate","use","convertUpdatePatterns","using","isomorphic","translateDeleteInsert","translateLoad","translateClearCreateDrop","translateClear","translateCreate","translateDrop","translateUpdateGraphShortcut","translateAdd","translateMove","translateCopy","aggregation","translateAggregateExpression","translateExistenceExpression","function","translateNamedExpression","translateOperatorExpression","translateTermExpression","translateWildcardExpression","mapped","pathType","translateAlt","inv","translateInv","translateLink","translateNps","translateOneOrMorePath","translateSeq","translateZeroOrMorePath","translateZeroOrOnePath","translateTerm","replaceAggregatorVariables","st","isSimpleTerm","select","extensions","descending","objectContainsValues","having","vals","keyGraphs","globalNames","newGraphs","graphNameSet","graphPatterns","graphName","splitBgpToGraphs","Generator","varCount","useQuads","translateQuery","sparql","thingy","findAllVariables","translateGraphPattern","mapAggregate","generateFreshVar","translateInlineData","PV","isVariable","translateQuad","translateAggregates","translateSingleUpdate","isTerm","inScope","g","simplifyPath","translatePathPredicate","recurseGraph","filters","nonfilters","accumulateGroupGraphPattern","isQuad","hasQuadVariables","normals","inverted","normalElement","invertedElement","simplifiedPath","_resetBlanks","typeVals","G","simplifiedJoin","subthingy","translateUpdateGraphLoad","translateUpdateGraph","deleteTriples","insertTriples","translateUpdateTriplesBlock","translateInsertDelete","currentGraph","currentTriples","algebra_1","objectify","algebra","addVariable","find","v2","recurseTerm","callbacks","doRecursion","recurseOp","copyMetadata","recurseResult","toCopyMetadata","mapOp","mapExpression","cloneOperation","cloneExpression","labelLoop","_typeof","printError","GraphQLError","_isObjectLike","_symbols","_location","_printLocation","enumerableOnly","symbols","_defineProperty","_defineProperties","props","descriptor","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","_isNativeReflectConstruct","instance","sham","Proxy","_Error","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","Constructor","protoProps","_super","Super","NewTarget","nodes","positions","originalError","_nodeLocations","_nodeLocations2","_nodeLocations3","_this","_classCallCheck","undefinedIfEmpty","nodeLocations","_i2","_ref3","_this$nodes","loc","locations","getLocation","originalExtensions","getOwnPropertyDescriptors","defineProperties","_objectSpread","captureStackTrace","SYMBOL_TO_STRING_TAG","_i4","_error$nodes2","printLocation","_i6","_error$locations2","printSourceLocation","syntaxError","description","_GraphQLError","classObject","_invariant","_nodejsCustomInspectSymbol","_interopRequireDefault","condition","formatValue","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","seenValues","previouslySeenValues","customInspectFn","getCustomFn","customValue","formatArray","getObjectTag","formatObject","formatObjectValue","_default","isNode","maybeNode","Token","Location","_defineInspect","startToken","endToken","getBlockStringIndentation","_commonIndent","isFirstLine","isEmptyLine","commonIndent","dedentBlockStringValue","rawString","startLine","endLine","printBlockString","indentation","preferMultipleLines","isSingleLine","hasLeadingSpace","hasTrailingQuote","hasTrailingSlash","printAsMultipleLines","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION","SCHEMA","SCALAR","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","Source","_kinds","Kind","_tokenKind","TokenKind","_lexer","Lexer","_parser","parseValue","parseType","_printer","print","_visitor","visit","visitInParallel","getVisitFn","BREAK","_ast","_predicates","isDefinitionNode","isExecutableDefinitionNode","isSelectionNode","isValueNode","isTypeNode","isTypeSystemDefinitionNode","isTypeDefinitionNode","isTypeSystemExtensionNode","isTypeExtensionNode","_directiveLocation","NAME","DOCUMENT","OPERATION_DEFINITION","SELECTION_SET","ARGUMENT","VARIABLE","INT","FLOAT","BOOLEAN","LIST","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","isPunctuatorTokenKind","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","_syntaxError","_blockString","startOfFileToken","SOF","lastToken","lineStart","_proto","advance","lookahead","EOF","_token$next","readToken","COMMENT","printCharCode","lexer","bodyLength","_line","_col","readComment","readBlockString","readString","readNumber","readName","unexpectedCharacterMessage","col","firstCode","readDigits","isNameStart","chunkStart","charCode","char2hex","invalidSequence","rawValue","BLOCK_STRING","lineRegexp","parseDocument","expectToken","parseValueLiteral","parseTypeReference","sourceObj","isSource","_options","parseName","many","parseDefinition","peek","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","parseVariable","expectOptionalToken","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","hasTypeCondition","expectOptionalKeyword","parseFragmentName","parseNamedType","_this$_options","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","block","any","_this2","parseObjectField","parseDirective","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","interfaces","parseImplementsInterfaces","parseFieldsDefinition","_this$_options2","allowLegacySDLImplementsInterfaces","delimitedMany","_this$_options3","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","repeatable","parseDirectiveLocations","parseDirectiveLocation","_this$_options4","noLocation","getTokenKindDesc","getTokenDesc","atToken","openKind","parseFn","closeKind","delimiterKind","sourceLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","_ref","padLen","_ref2","ast","leave","printDocASTReducer","Name","Document","OperationDefinition","varDefs","VariableDefinition","SelectionSet","Field","argsLine","Argument","_ref4","FragmentSpread","_ref5","InlineFragment","_ref6","FragmentDefinition","_ref7","IntValue","_ref8","FloatValue","_ref9","StringValue","_ref10","BooleanValue","_ref11","NullValue","EnumValue","_ref12","ListValue","_ref13","ObjectValue","_ref14","ObjectField","_ref15","Directive","_ref16","NamedType","_ref17","ListType","_ref18","NonNullType","_ref19","SchemaDefinition","addDescription","_ref20","OperationTypeDefinition","_ref21","ScalarTypeDefinition","_ref22","ObjectTypeDefinition","_ref23","FieldDefinition","_ref24","hasMultilineItems","InputValueDefinition","_ref25","InterfaceTypeDefinition","_ref26","UnionTypeDefinition","_ref27","EnumTypeDefinition","_ref28","EnumValueDefinition","_ref29","InputObjectTypeDefinition","_ref30","DirectiveDefinition","_ref31","SchemaExtension","_ref32","ScalarTypeExtension","_ref33","ObjectTypeExtension","_ref34","InterfaceTypeExtension","_ref35","UnionTypeExtension","_ref36","EnumTypeExtension","_ref37","InputObjectTypeExtension","_ref38","maybeArray","_maybeArray$filter$jo","maybeString","isMultiline","_instanceOf","_inspect","_devAssert","root","visitor","visitorKeys","QueryDocumentKeys","inArray","edits","ancestors","newRoot","isLeaving","isEdited","_Object$keys2","editOffset","ii","editKey","editValue","_visitorKeys$node$kin","visitFn","visitors","skipping","enter","kindVisitor","kindSpecificVisitor","specificVisitor","specificKindVisitor","SYMBOL_ASYNC_ITERATOR","SYMBOL_ITERATOR","asyncIterator","toStringTag","utils","common","sha","ripemd","hmac","sha224","ripemd160","assert","BlockHash","pending","pendingTotal","outSize","hmacStrength","padLength","endian","_delta8","_delta32","enc","join32","_update","_pad","_digest","Hmac","Hash","inner","outer","rotl32","sum32","sum32_3","sum32_4","RIPEMD160","h","f","K","Kh","inherits","B","D","Ah","Bh","Ch","Dh","Eh","T","rh","sh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","W","SHA224","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero2","word","zero8","toHex","COMPATIBLE_ENCODING_PATTERN","WS_TRIM_PATTERN","WS_CHAR_PATTERN","WS_FOLD_PATTERN","DELIMITER_PATTERN","WS_DELIMITER_PATTERN","TOKEN_PATTERN","hasWhitespace","skipWhitespace","needsQuotes","Link","refs","rel","setUnique","ref","shallowCompareObjects","object1","object2","expandRelations","attrValue","isSingleOccurenceAttr","parseExtendedValue","formatAttribute","isCompatibleEncoding","isTokenAttr","escapeQuotes","formatExtendedAttribute","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","DELETE","SHIFT","SIZE","MASK","NOT_SET","SetRef","OwnerID","ensureSize","iter","__iterate","returnTrue","wrapIndex","uint32Index","wholeSlice","begin","resolveBegin","resolveIndex","resolveEnd","defaultIndex","IS_COLLECTION_SYMBOL","isCollection","maybeCollection","IS_KEYED_SYMBOL","isKeyed","maybeKeyed","IS_INDEXED_SYMBOL","isIndexed","maybeIndexed","isAssociative","maybeAssociative","Collection","Seq","KeyedCollection","KeyedSeq","IndexedCollection","IndexedSeq","SetCollection","SetSeq","Keyed","Indexed","IS_SEQ_SYMBOL","isSeq","maybeSeq","IS_RECORD_SYMBOL","isRecord","maybeRecord","isImmutable","maybeImmutable","IS_ORDERED_SYMBOL","isOrdered","maybeOrdered","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorResult","iteratorDone","hasIterator","maybeIterable","getIteratorFn","isIterator","maybeIterator","getIterator","iteratorFn","KEYS","ENTRIES","toSource","isArrayLike","emptySequence","toSeq","seq","maybeIndexedSeqFromValue","fromEntrySeq","isKeysIterable","toSetSeq","ObjectSeq","seqFromValue","__toString","cacheResult","__iterateUncached","entrySeq","__iterator","__iteratorUncached","toKeyedSeq","keyedSeqFromValue","toIndexedSeq","indexedSeqFromValue","of","ArraySeq","_array","notSetValue","_object","_keys","EMPTY_SEQ","CollectionSeq","collection","_collection","IS_MAP_SYMBOL","isMap","maybeMap","isOrderedMap","maybeOrderedMap","isValueObject","maybeValue","hashCode","is","imul","smi","i32","defaultValueOf","hashNullish","hashed","hashNumber","STRING_HASH_CACHE_MIN_STRLEN","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","nodeType","uniqueID","documentElement","getIENodeHash","nextHash","isExtensible","hashJSObj","symbolMap","hashSymbol","nullish","_objHashUID","WeakMap","ToKeyedSequence","indexed","useKeys","_iter","_useKeys","valueSeq","this$1$1","reversedSequence","reverseFactory","mapper","mappedSequence","mapFactory","ToIndexedSequence","ToSetSequence","FromEntriesSequence","validateEntry","indexedCollection","flipFactory","flipSequence","makeSequence","flip","cacheResultThrough","filterFactory","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","flattenFactory","flatSequence","stopped","flatDeep","currentDepth","sortFactory","comparator","defaultComparator","isKeyedCollection","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","iters","zipAll","zipSequence","sizes","isDone","steps","reify","collectionClass","arrCopy","newArr","invariant","assertNotInfinite","coerceKeyPath","keyPath","isPlainObject","parentProto","nextProto","isDataStructure","quoteString","_ignoreError","shallowCopy","collectionCopy","updateIn$1","updater","updatedValue","updateInDeeply","inImmutable","wasNotSet","existingValue","newValue","nextExisting","nextUpdated","emptyMap","setIn$1","setIn","removeIn","deleteIn","update$1","updateIn","merge$1","mergeIntoKeyedWith","mergeWith$1","collections","collection$1","__ownerID","withMutations","mergeIntoCollection","oldVal","mergeWithSources","mergeDeep$1","mergeDeepWithSources","mergeDeepWith$1","deepMerger","newDataStructure","oldSeq","newSeq","deepMergerWith","mergeItem","hasVal","nextVal","mergeDeep","mergeDeepWith","mergeIn","mergeDeepIn","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","__altered","keyValues","_root","updateMap","deleteAll","__hash","OrderedMap","sortBy","MapIterator","iterate","ownerID","makeMap","MapPrototype","removeAll","ArrayMapNode","keyHash","didChangeSize","didAlter","removed","MAX_ARRAY_MAP_SIZE","ValueNode","createNodes","isEditable","newEntries","BitmapIndexedNode","bitmap","bit","popCount","keyHashFrag","updateNode","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","HashArrayMapNode","expandNodes","isLeafNode","newBitmap","newNodes","setAt","canEdit","newLen","newArray","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","HashCollisionNode","mergeIntoNode","keyMatch","maxIndex","EMPTY_MAP","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","subNode","__prev","newSize","idx1","idx2","IS_LIST_SYMBOL","isList","maybeList","List","emptyList","makeList","VNode","setSize","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","oldSize","arguments$1","seqs","iterateList","DONE","ListPrototype","removeBefore","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","tailPos","tail","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","EMPTY_ORDERED_MAP","emptyOrderedMap","_map","_list","updateOrderedMap","newMap","newList","makeOrderedMap","omap","toMap","IS_STACK_SYMBOL","isStack","maybeStack","Stack","emptyStack","pushAll","_head","makeStack","EMPTY_STACK","StackPrototype","unshiftAll","IS_SET_SYMBOL","isSet","maybeSet","isOrderedSet","maybeOrderedSet","deepEqual","notAssociative","flipped","allEqual","bSize","mixin","ctor","keyCopier","result$1","emptySet","fromKeys","keySeq","intersect","sets","SetPrototype","updateSet","didChanges","mapEntries","toRemove","OrderedSet","__make","__empty","EMPTY_SET","makeSet","EMPTY_RANGE","Range","_start","_step","searchValue","possibleIndex","offsetValue","getIn$1","searchKeyPath","getIn","hasIn$1","toObject","isIterable","useTuples","toOrderedMap","toOrderedSet","toSet","toStack","toList","__toStringMapper","singleton","concatSeq","concatFactory","returnValue","partition","isKeyedIter","coerce","partitionFactory","findEntry","sideEffect","isFirst","reducer","initialReduction","reduceRight","butLast","countBy","countByFactory","entriesSequence","entryMapper","filterNot","findKey","findLast","findLastEntry","findLastKey","flatMapFactory","searchKey","groupBy","groupByFactory","hasIn","isSubset","isSuperset","keyOf","keyMapper","lastKeyOf","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashCollection","CollectionPrototype","chain","mapKeys","KeyedCollectionPrototype","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","defaultZipper","zipWith","IndexedCollectionPrototype","SetCollectionPrototype","reduction","useFirst","emptyOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","PairSorting","LeftThenRight","RightThenLeft","Record","defaultValues","hasInitialized","throwOnInvalidDefaultValues","RecordType","indices","RecordTypePrototype","_indices","_name","_defaultValues","propName","recordName","setProp","_values","RecordPrototype","displayName","recordSeq","newValues","makeRecord","getDescriptiveName","likeRecord","EMPTY_REPEAT","Repeat","_value","fromJS","fromJSWith","defaultConverter","parentValue","converted","Iterable","superCtor","super_","TempCtor","_write","_writableState","_readableState","duplex","ErrorCoded_1","FetchDocumentLoader_1","JsonLdContextNormalized_1","FetchDocumentLoader","documentCache","validateContext","skipValidation","expandContentTypeToBase","remoteContextsDepthLimit","redirectSchemaOrgHttps","validateLanguage","strictRange","errorCode","ErrorCoded","REGEX_LANGUAGE_TAG","validateDirection","ERROR_CODES","INVALID_BASE_DIRECTION","REGEX_DIRECTION_TAG","idifyReverseTerms","isValidKeyword","INVALID_IRI_MAPPING","isPotentialKeyword","expandPrefixedTerms","contextRaw","EXPAND_KEYS_BLACKLIST","isReservedInternalKeyword","keyValue","ALIAS_DOMAIN_BLACKLIST","KEYWORD_REDEFINITION","ALIAS_RANGE_BLACKLIST","getContextValueId","INVALID_KEYWORD_ALIAS","INVALID_TERM_DEFINITION","isPrefixValue","changed","canAddIdEntry","isValidIri","newId","expandedType","normalize","processingMode","normalizeLanguageTags","lowercase","containersToHash","containerValue","applyScopedProtected","expandOptions","isTermProtected","isSimpleTermDefinitionPrefix","validateKeywordRedefinitions","contextBefore","contextAfter","PROTECTED_TERM_REDEFINITION","validate","valueType","INVALID_VOCAB_MAPPING","INVALID_BASE_IRI","INVALID_DEFAULT_LANGUAGE","INVALID_VERSION_VALUE","INVALID_CONTEXT_ENTRY","INVALID_PROPAGATE_VALUE","getPrefix","CYCLIC_IRI_MAPPING","isValidIriWeak","JsonLdContextNormalized","isCompactIri","objectKey","objectValue","INVALID_TYPE_MAPPING","INVALID_REVERSE_PROPERTY","CONTAINERS_1_0","INVALID_CONTAINER_MAPPING","CONTAINERS","INVALID_LANGUAGE_MAPPING","INVALID_PREFIX_VALUE","INVALID_NEST_VALUE","applyBaseEntry","inheritFromParent","parentContext","external","normalizeContextIri","contextIri","parseInnerContexts","ignoreScopedContexts","ignoreProtection","ignoreRemoteScopedContexts","INVALID_SCOPED_CONTEXT","minimalProcessing","internalOptions","DEFAULT_PROCESSING_MODE","remoteContexts","CONTEXT_OVERFLOW","hasProtectedTerms","INVALID_CONTEXT_NULLIFICATION","overriddenLoad","getOverriddenLoad","parsedStringContext","load","contextIris","reducedContexts","accContextPromise","accContext","importContext","INVALID_IMPORT_VALUE","loadImportContext","defaultExpandOptions","newContext","overlappingKeys","newContextWrapped","INVALID_LOCAL_CONTEXT","LOADING_REMOTE_CONTEXT_FAILED","INVALID_REMOTE_CONTEXT","RECURSIVE_CONTEXT_INCLUSION","importContextIri","http_link_header_1","fetcher","accept","colonPos","alternateUrl","linkHeader","LOADING_DOCUMENT_FAILED","expandVocab","validIriMapping","vocab","vocabRelative","potentialKeyword","contextPrefixValue","allowPrefixForcing","allowVocabRelativeToBase","compactIri","shortestPrefixing","allowPrefixNonGenDelims","separatorPos","isPrefixIriEndingWithGenDelim","keyword","KEYWORD_REGEX","prefixIri","ENDS_WITH_GEN_DELIM","IRI_REGEX","IRI_REGEX_WEAK","VALID_KEYWORDS","objKeys1","objKeys2","value1","value2","SeparatorType_1","Transform","objectMode","originalContext","PassThrough","transformQuad","termToValue","opened","pushDocumentStart","lastPredicate","endPredicate","lastSubject","endSubject","lastGraph","endGraph","endDocument","lastGraphMatchesSubject","lastSubjectMatchesGraph","pushId","pushSeparator","SeparatorType","GRAPH_FIELD_NONCOMPACT","GRAPH_FIELD_COMPACT","ARRAY_END_COMMA","pushPredicate","pushObject","excludeContext","OBJECT_START","CONTEXT_FIELD","pushIndented","ARRAY_START","startOnNewLine","pushNestedQuad","subjectValue","property","useRdfType","RDF_TYPE","objectOptions","compactIds","compactedProperty","hadObjectForPredicate","lastLastSubject","lastLastPredicate","nestedQuad","commaAfterSubject","ARRAY_END","OBJECT_END","comma","OBJECT_END_COMMA","pushNewLine","getIndentPrefix","useNativeTypes","compacted","RDF_JSON","parsedJson","INVALID_JSON_LITERAL","rdfDirection","I18N","stringToNativeType","XSD","parsedInt","parsedFloat","parseFloat","RDF","SWAP","xsd","boolean","rdf","owl","sameAs","forSome","forAll","implies","escapeSequence","escapeReplacements","illegalIriChars","lineModeRegExps","_iri","_unescapedIri","_simpleQuotedString","_langcode","_blank","_newline","_comment","_whitespace","_endOfFile","invalidRegExp","N3Lexer","_simpleApostropheString","_prefix","_prefixed","_variable","_number","_boolean","_keyword","_sparqlKeyword","_shortPredicates","_lineMode","lineMode","_n3Mode","_comments","comments","_literalClosingPos","_tokenizeToEnd","inputFinished","_input","currentLineLength","whiteSpaceMatch","emitToken","firstChar","matchLength","inconclusive","_previousMarker","_unescape","reportSyntaxError","_parseLiteral","previousToken","invalid","replaced","sequence","unicode4","unicode8","escapedChar","opening","openingLength","closingPos","backslashCount","issue","_readStartingBom","tokenize","tokens","_pendingBuffer","setEncoding","DEFAULTGRAPH","_blankNodeCounter","languageOrDataType","atPos","datatypeString","dtPos","termFromId","nested","endPos","termToId","_subject","_predicate","_graph","blankNodePrefix","N3Parser","_contextStack","_setBase","initDataFactory","isTurtle","isTriG","isNTriples","isNQuads","isN3","isLineMode","_supportsNamedGraphs","_readPredicateOrNamedGraph","_readPredicate","_supportsQuads","_supportsRDFStar","_resolveRelativeIRI","_blankNodePrefix","_explicitQuantifiers","explicitQuantifiers","_resetBlankNodePrefix","fragmentPos","_base","_basePath","_baseRoot","_baseScheme","_saveContext","n3Mode","inverse","_inversePredicate","blankPrefix","_prefixes","quantified","_quantified","_restoreContext","_error","_readInTopContext","_callback","_sparqlStyle","_readPrefix","_readBaseIRI","_readSubject","_readNamedGraphLabel","_readEntity","quantifier","_resolveIRI","_namedNode","_blankNode","_readBlankNodeHead","RDF_NIL","_readListItem","_readPunctuation","N3_FORSOME","_quantifier","_readQuantifierList","N3_FORALL","_literalValue","_completeSubjectLiteral","_literal","_getPathReader","ABBREVIATIONS","_readBlankNodeTail","_readObject","_readDataTypeOrLang","_getContextEndReader","_readGraph","_readBlankNodePunctuation","_emit","_readPredicateAfterBlank","previousList","RDF_FIRST","_readListItemDataTypeOrLang","RDF_REST","_completeObjectLiteral","_completeLiteral","listItem","completed","_readCallback","_readFormulaTail","inversePredicate","_readQuadPunctuation","_readPrefixIRI","prefixNode","_prefixCallback","_readDeclarationPunctuation","_readNamedGraphBlankLabel","QUANTIFIERS_GRAPH","_readQuantifierPunctuation","afterPath","_afterPath","_readPath","_readForwardPath","_readBackwardPath","_readRDFStarTailOrGraph","_readRDFStarTail","contextStack","noop","_removeDotSegments","pathStart","segmentStart","quadCallback","prefixCallback","isNamedNode","isBlankNode","isDefaultGraph","inDefaultGraph","defaultPrefixes","processPrefix","N3DataFactory","escapeAll","escapedCharacters","SerializedTerm","N3Writer","outputStream","_prefixRegex","_lists","lists","_outputStream","_endStream","_writeQuad","_writeQuadLine","_prefixIRIs","addPrefixes","_baseMatcher","escapeRegex","_baseLength","_inDefaultGraph","_encodeIriOrBlank","_encodeObject","_encodePredicate","_encodeSubject","_prefixMatch","quadsToString","_encodeQuad","characterReplacer","prefixMatch","_encodeLiteral","_blockedWrite","addQuad","addQuads","addPrefix","hasPrefixes","IRIlist","prefixList","prefixIRI","contents","singleDone","character","N3Store","_size","_graphs","_id","_ids","_entities","_blankNodeIndex","_factory","_termFromId","_termToNumericId","_termToNewNumericId","subjects","graphKey","subjectKey","predicateKey","_addToIndex","index0","key0","key1","key2","index1","index2","existed","_removeFromIndex","_findInIndex","name0","name1","name2","graphId","entityKeys","value0","_loop","_loopByKey0","_loopByKey1","_loopBy2Keys","_countInIndex","_getGraphs","_uniqueEntities","uniqueIds","graphItem","predicates","removeQuad","subjectOrQuad","readQuads","removeMatches","getQuads","content","subjectId","predicateId","objectId","DatasetCoreAndReadableStream","getSubjects","forSubjects","getPredicates","forPredicates","getObjects","forObjects","getGraphs","forGraphs","createBlankNode","suggestedName","extractLists","tails","tailQuad","headPos","malformed","objectQuads","subjectQuads","n3Store","filtered","_filtered","newStore","N3StreamParser","onData","onEnd","decodeStrings","N3StreamWriter","writableObjectMode","_writer","Writer","Store","Triple","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","title","browser","env","argv","versions","cwd","chdir","umask","asap","setImmediate","_state","_deferreds","doResolve","deferred","me","onFulfilled","onRejected","finale","Handler","reason","ex","race","queueMicrotask","BlankNode_1","DefaultGraph_1","Literal_1","NamedNode_1","Quad_1","Variable_1","dataFactoryCounter","languageOrDatatype","INSTANCE","fromTerm","original","fromQuad","resetBlankNodeCounter","RDF_LANGUAGE_STRING","isTermGrounded","termToSignature","quadToSignature","sha1hex","hashTerms","getGraphBlankNodes","uniqGraph","deindexGraph","indexGraph","getQuadsWithoutBlankNodes","getQuadsWithBlankNodes","hasValue","hashValues","getBijectionInner","getBijection","graphA","graphB","nonBlankIndexA","nonBlankIndexB","blankQuadsA","blankQuadsB","blankNodesA","blankNodesB","groundedHashesA","groundedHashesB","hashesA","ungroundedHashesA","hashesB","ungroundedHashesB","hashKeyA","bijection","blankNodeA","blankNodeAString","blankNodeAHash","blankNodeBString","arraysEqual","blankNodeB","array1","array2","hashValue","everyTerms","indexedGraph","stringQuadToQuad","getBlankNodes","groundedHashes","ungroundedHashes","hashNeeded","initialGroundedNodesCount","grounded","uniques","termKey","quadSignatures","quadTerm","getSupportedJavaScriptPrimitives","getSupportedRdfDatatypes","getTermRaw","toRdf","fromRdf","Translator_1","translator","Translator","registerHandler","TypeHandlerString","TYPES","TypeHandlerBoolean","TYPE","TypeHandlerNumberDouble","TypeHandlerNumberInteger","TypeHandlerDate","supportedRdfDatatypes","fromRdfHandlers","toRdfHandlers","incorrectRdfDataType","rdfDatatypes","javaScriptDataTypes","rdfDatatype","javaScriptDataType","existingToRdfHandlers","handlers","VALIDATORS","partsMonthDay","valueString","getUTCDate","getUTCMonth","getUTCFullYear","toISOString","gDay","gMonthDay","gYear","gYearMonth","MAX_INT","MIN_INT","PendingStreamsIndex","indexedStreams","allStreams","ID_VARIABLE","addPatternListener","pendingStream","ID_SEPARATOR","existingListeners","getPendingStreamsForQuad","keysOld","keyModified","pendingStreams","PendingStreamsIndex_1","_pipeSource","unpipe","importToListeners","isInitialized","storeResult","getLiteralValue","getLiteralType","getLiteralLanguage","TermUtil_1","iriValue","escapePattern","replaceEscapedCharacter","literalValue","stringTerms","ignoreTags","lastIndex","stringQuad","escapes","inQuote","escaped","matchPatternComplete","matchPattern","matchTerm","everyTermsNested","reduceTerms","mapTerms","filterQuadTermNamesNested","filterQuadTermNames","filterTerms","forEachTerms","collectNamedTerms","getNamedTerms","TRIPLE_TERM_NAMES","ignoreDefaultGraph","checker","namedTerms","defaultCb","namedTerm","names","keysS","keysP","keysO","keysG","initialValue","_pattern","skipVarMapping","returnMappings","getDefaultGraphs","getLiterals","getNamedNodes","getTermsOfType","TERM_TYPES","SymbolDispose","AbortError","codes","isNodeStream","isWebStream","kControllerErrorFunction","eos","addAbortListener","addAbortSignal","validateAbortSignal","addAbortSignalNoValidate","onAbort","disposable","StringPrototypeSlice","SymbolIterator","TypedArrayPrototypeSet","consume","hasStrings","_getString","_getBuffer","retLen","customInspect","pipeline","Duplex","destroyer","isReadable","isWritable","isTransformStream","isWritableStream","isReadableStream","ERR_INVALID_ARG_VALUE","ERR_MISSING_ARGS","orgStreams","ondrain","onfinish","onreadable","onclose","readableObjectMode","_final","getWriter","toRead","_destroy","aggregateTwoErrors","ERR_MULTIPLE_CALLBACK","kIsDestroyed","isDestroyed","isFinished","isServerRequest","kDestroy","kConstruct","checkError","errored","called","onDestroy","emitErrorCloseNT","emitCloseNT","emitErrorNT","closeEmitted","emitClose","errorEmitted","errorOrDestroy","sync","destroyed","autoDestroy","constructNT","onConstruct","constructed","emitConstructNT","isRequest","setHeader","emitCloseLegacy","emitErrorCloseLegacy","socket","req","undestroy","reading","endEmitted","finalCalled","prefinished","ending","finished","ObjectDefineProperties","ObjectGetOwnPropertyDescriptor","ObjectKeys","ObjectSetPrototypeOf","Writable","allowHalfOpen","webStreamsAdapters","duplexify","lazyWebStreams","writableHighWaterMark","writableBuffer","writableLength","writableFinished","writableCorked","writableEnded","writableNeedDrain","fromWeb","pair","newStreamDuplexFromReadableWritablePair","toWeb","newReadableWritablePairFromDuplex","bufferModule","isReadableNodeStream","isWritableNodeStream","isDuplexNodeStream","ERR_INVALID_RETURN_VALUE","createDeferredPromise","isBlob","FunctionPrototypeCall","Duplexify","_duplexify","onfinished","ac","_promise","_resolve","fromAsyncGen","ERR_STREAM_PREMATURE_CLOSE","kEmptyObject","validateFunction","validateObject","validateBoolean","PromisePrototypeThen","isClosed","isReadableFinished","isReadableErrored","isWritableFinished","isWritableErrored","willEmitClose","_willEmitClose","kIsClosedPromise","nop","_options$readable","_options$writable","isAborted","originalCallback","resolverFn","eosWeb","wState","rState","onlegacyfinish","readableFinished","onend","onclosed","onrequest","cleanup","endCallback","opts","_opts","autoCleanup","SymbolAsyncIterator","ERR_STREAM_NULL_VALUES","isAsync","highWaterMark","hadError","hasThrow","throw","return","ArrayIsArray","EE","Stream","dest","ondata","pause","resume","_isStdio","didOnEnd","validateInteger","kWeakHandler","kResistStopPropagation","staticCompose","deprecate","ArrayPrototypePush","MathFloor","PromiseReject","PromiseResolve","kEmpty","kEof","concurrency","signalOpt","cnt","onCatch","afterItemProcessed","maybeResume","pump","unused","ReduceAwareErrMissingArgs","toIntegerOrInfinity","number","streamReturningOperators","asIndexedPairs","_options$signal","drop","_options$signal5","_options$signal6","_options$signal7","_options$signal8","compose","composedStream","promiseReturningOperators","_options$signal2","hasInitialValue","gotAnyItemFromStream","_options$signal3","_options$signal4","destroyImpl","ERR_STREAM_DESTROYED","writing","makeAsyncIterable","fromReadable","pumpToNode","finish","onresolve","wait","pumpToWeb","pipelineImpl","outerSignal","lastStreamCleanup","finishImpl","destroys","finishCount","_disposable","isLastStream","_ret","_ret2","pt","endFn","popCallback","ArrayPrototypeIndexOf","NumberIsInteger","NumberParseInt","SafeSet","SymbolAsyncDispose","ReadableState","BufferList","getHighWaterMark","getDefaultHighWaterMark","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","kPaused","StringDecoder","kObjectMode","kConstructed","kSync","kNeedReadable","kEmitClose","kAutoDestroy","kMultiAwaitDrain","makeBitMapDescriptor","isDuplex","pipes","flowing","defaultEncoding","awaitDrainWriters","decoder","needReadable","maybeReadMore","readableAddChunk","addToFront","_isUint8Array","_uint8ArrayToBuffer","emitReadable","emittedReadable","emitReadable_","onEofChunk","addChunk","dataEmitted","howMuchToRead","flow","readingMore","maybeReadMore_","updateReadableListening","readableListening","resumeScheduled","nReadingNextTick","resume_","streamToAsyncIterator","destroyOnReturn","createAsyncIterator","fromList","endReadable","endReadableNT","endWritableNT","multiAwaitDrain","_undestroy","captureRejectionSymbol","readableEnded","isPaused","nOrig","computeNewHighWaterMark","doRead","pipeOpts","stdout","stderr","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","needDrain","pipeOnDrain","dests","ev","paused","streamKeys","readableDidRead","readableAborted","readableHighWaterMark","readableBuffer","readableFlowing","readableLength","readableEncoding","pipesCount","_fromList","readableStream","newStreamReadableFromReadableStream","streamReadable","newReadableStreamFromStreamReadable","_src$readableObjectMo","defaultHighWaterMarkBytes","defaultHighWaterMarkObjectMode","duplexKey","hwm","highWaterMarkFrom","setDefaultHighWaterMark","kCallback","flush","prefinish","SymbolFor","kIsErrored","kIsReadable","kIsWritable","kIsDisturbed","_obj$_readableState","_obj$_writableState","pipeThrough","cancel","isWritableEnded","isOutgoingMessage","_defaultKeepAlive","_removedConnection","_removedContLen","isServerResponse","_sent100","isDisturbed","_stream$kIsDisturbed","isErrored","_stream$kIsErrored","_stream$_readableStat3","_stream$_writableStat3","_stream$_readableStat4","_stream$_writableStat4","readableErrored","writableErrored","isReadableEnded","_stream$_readableStat","_stream$_readableStat2","_stream$_writableStat","_stream$_writableStat2","_stream$req","_consuming","_dumped","upgradeOrConnect","ArrayPrototypeSlice","FunctionPrototypeSymbolHasInstance","ObjectDefineProperty","StringPrototypeToLowerCase","SymbolHasInstance","WritableState","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_ALREADY_FINISHED","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","kOnFinished","noDecode","corked","bufferProcessing","onwrite","writecb","writelen","afterWriteTickInfo","resetBuffer","pendingcb","buffered","bufferedIndex","allBuffers","allNoop","writev","_writev","clearBuffer","finishMaybe","writeOrBuffer","doWrite","onwriteError","errorBuffer","afterWriteTick","afterWrite","_state$errored","onfinishCallbacks","_state$errored2","bufferedLength","chunks","needFinish","onFinish","callFinal","getBuffer","cork","uncork","setDefaultEncoding","writableAborted","writableStream","newStreamWritableFromWritableStream","streamWritable","newWritableStreamFromStreamWritable","ArrayPrototypeIncludes","ArrayPrototypeJoin","ArrayPrototypeMap","NumberMAX_SAFE_INTEGER","NumberMIN_SAFE_INTEGER","ObjectPrototypeHasOwnProperty","RegExpPrototypeExec","StringPrototypeToUpperCase","StringPrototypeTrim","hideStackFrames","ERR_SOCKET_BAD_PORT","ERR_UNKNOWN_SIGNAL","normalizeEncoding","isAsyncFunction","signals","octalReg","validateInt32","validateUint32","positive","validateString","validateOneOf","oneOf","allowed","getOwnPropertyValueOrDefault","allowArray","allowFunction","validateDictionary","validateArray","minLength","validateBuffer","validatePlainFunction","validateUndefined","linkValueRegExp","validateLinkHeaderFormat","isInt32","isUint32","parseFileMode","validateStringArray","validateBooleanArray","validateAbortSignalArray","indexedName","validateEncoding","normalizedEncoding","validatePort","port","allowZero","validateSignalName","validateUnion","validateLinkHeaderValue","hints","hintsLength","CustomStream","originalDestroy","AggregateError","CustomAggregateError","kIsNodeError","kTypes","classRegExp","ERR_INTERNAL_ASSERTION","NodeError","expectedLength","hidden","expected","instances","_actual$constructor","inspected","colors","_value$constructor","innerError","outerError","sep","ArrayPrototypePop","thisArgs","hasInstance","MIN_SAFE_INTEGER","prop","PromisePrototypeCatch","thenFn","catchFn","RegExpPrototypeTest","dispose","asyncDispose","AsyncFunction","rej","promisify","debuglog","_unused","_removeEventListener","AbortSignalAny","custom","customPromisify","ERR_ILLEGAL_CONSTRUCTOR","pl","lastArg","removeDotSegments","segmentBuffers","isCharacterAllowedAfterRelativePathSegment","removeDotSegmentsOfPath","colonPosition","searchOffset","pathSeparator","relativeIRI","baseFragmentPos","baseQueryPos","relativeColonPos","valueColonPos","baseColonPos","baseIRIScheme","baseSlashAfterColonPos","baseIRIPath","baseIRILastSlashPos","copyProps","SafeBuffer","prefixcc_1","property_param_1","base_prefixes_1","node_param_1","getNamespace","knownNamespaces","knownPrefixes","rdfs","errorOnExtraQuads","mintUnspecifiedPrefixes","prefixRev","onotology","writeImports","namespaces","namespace","pref","allNamespaces","writePrefixes","newLine","writeShapes","writeTurtlePredicates","deindent","imports","getObjectsOnce","imp","disableShaclName","allowBlankNodes","getShaclName","getSubjectsOnce","getQuadsOnce","targetClasses","targetClass","singleObject","unusedPredicates","writeGivenTurtlePredicates","writeShapeBody","getSingleProperty","allowedPredicates","examining","singleLayerPropertiesList","expectOneProperty","orProperties","statement","getList","termTemp","writeIriLiteralOrArray","singleQuad","writeAssigment","writeAtom","writeAssigments","assignments","shortcuts","assignment","writeParams","allowedParam","surroundings","or","params","properties","writeProperty","writePath","nodeKind","propertyClass","nodeShapes","nestedShapes","semi","writeTurtleObjects","blankObjects","nonBlankObjects","writeList","elems","braces","alternatives","alt","ShaclcGenerator_1","writer_1","volatile_store_1","volatileStore","extraQuads","mintPrefixes","targetNode","targetObjectsOf","targetSubjectsOf","deactivated","severity","class","minExclusive","minInclusive","maxExclusive","maxInclusive","maxLength","languageIn","disjoint","ignoredProperties","uniqueLang","lessThan","lessThanOrEquals","qualifiedValueShape","qualifiedMinCount","qualifiedMaxCount","qualifiedValueShapesDisjoint","VolitileStore","indents","no","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","rhex","hex","toUtf8","unescape","hexToBinaryString","SparkMD5","reset","clamp","targetArray","sourceArray","appendBinary","_buff","_length","_hash","buff","_finish","getState","setState","hashBinary","returnUInt8Array","utf8Str2ArrayBuffer","md51_array","_prefixByIri","prefixIris","isString","iriList","_usedPrefixes","_sparqlStar","_indent","newline","_explicitDatatype","explicitDatatype","toQuery","mapJoin","toEntity","toExpression","variableToString","toUpdate","baseAndPrefixes","allPrefixes","toPattern","encodeTriples","equalTerms","inline","valuesList","lparen","rparen","service","escapeReplacer","lexical","encodeIRI","term1","term2","currentOptions","createGenerator","SparqlParser","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","$VD","$VE","$VF","$VG","$VH","$VI","$VJ","$VK","$VL","$VM","$VN","$VO","$VP","$VQ","$VR","$VS","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","$Ve1","$Vf1","$Vg1","$Vh1","$Vi1","$Vj1","$Vk1","$Vl1","$Vm1","$Vn1","$Vo1","$Vp1","$Vq1","$Vr1","$Vs1","$Vt1","$Vu1","$Vv1","$Vw1","$Vx1","$Vy1","$Vz1","$VA1","$VB1","$VC1","$VD1","$VE1","$VF1","$VG1","$VH1","$VI1","$VJ1","$VK1","$VL1","$VM1","$VN1","$VO1","$VP1","$VQ1","$VR1","$VS1","$VT1","$VU1","$VV1","$VW1","$VX1","$VY1","$VZ1","$V_1","$V$1","$V02","$V12","$V22","$V32","$V42","$V52","$V62","$V72","$V82","$V92","$Va2","$Vb2","$Vc2","$Vd2","$Ve2","$Vf2","$Vg2","$Vh2","$Vi2","$Vj2","$Vk2","$Vl2","$Vm2","$Vn2","$Vo2","$Vp2","$Vq2","$Vr2","$Vs2","$Vt2","$Vu2","$Vv2","$Vw2","$Vx2","$Vy2","$Vz2","$VA2","yy","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","propertyList","$0","pathOnly","insertBnodesAll","insertBnodes","$","resolveIRI","groupDatasets","getAggregatesOfExpression","selectVar","groupVar","getExpressionId","usedVars","getVariablesFromExpression","usedVar","subqueries","selectedVarIds","subqueryIds","selectedVarId","appendAllTo","duplicates","sortedArray","getDuplicatesInArray","toInt","toVar","valuesObject","appendTo","ensureNoVariables","ensureNoBnodes","unionAll","boundVars","getBoundVarsFromGroupGraphPattern","boundVar","ensureSparqlStar","degroupSingle","applyAnnotations","objectListToTriples","annotation","listItems","listTriples","createList","createOperationTree","negatedLiteral","createTypedLiteral","unescapeString","namePos","expansion","uriString","nestedTriple","defaultActions","recoverable","vstack","lstack","recovering","sharedState","setInput","yylloc","yyloc","ranges","symbol","preErrorSymbol","newState","yyval","lex","errStr","showPosition","first_line","last_line","first_column","last_column","basePath","baseRoot","operatorName","initialExpression","operationList","fromClauses","groupName","fromClause","defaults","annotations","blankId","partialSurrogatesWithoutEndpoint","trimLength","objectList","otherTriples","visitExpression","_applyAnnotations","newTriples","_more","_backtrack","matched","conditionStack","unput","oldLines","backtrack_lexer","less","pastInput","past","upcomingInput","pre","test_match","indexed_rule","backup","tempMatch","rules","_currentRules","flex","popState","conditions","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","skipUngroupedVariableCheck","prefixesCopy","JsonParser","suppressMissingStreamResultsError","parseJsonResults","sparqlResponse","rawBindings","parseJsonBindings","jsonParser","variablesFound","resultsFound","parseJsonValue","tripleValue","parseJsonBoolean","rdf_literal_1","delimiter","addValueToTree","lastKeyPath","singularize","nextNode","mergeTrees","tree1","tree2","tree1Element","mergedElement","materializeTree","materialized","sparqlJsonResultsToTree","bindingsArray","singularRoot","subTree","saxes_1","currentBindingAnnotation","currentBindings","currentBindingName","currentBindingType","currentText","currentQuotedTriples","stackEquals","stackBeginsWith","components","currentComponent","currentQuotedTriple","nb","nenc","retried","_normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","total","utf8CheckIncomplete","_nil","_parse","_stringify","_v","_v2","_v3","_v4","_validate","_version","getOutputLength","inputLength8","safeAdd","lsw","md5cmn","md5ff","md5gg","md5hh","md5ii","length32","hexTab","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","bytesToWords","randomUUID","rnds8","ROTL","H","N","M","unsafeStringify","byteToHex","_rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","rng","msecs","nsecs","dt","tl","tmh","_md","DNS","hashfunc","generateUUID","_namespace","stringToBytes","_native","rnds","_sha","_regex","CHAR","S","NAME_START_CHAR","NAME_CHAR","CHAR_RE","S_RE","NAME_START_CHAR_RE","NAME_CHAR_RE","NMTOKEN_RE","RESTRICTED_CHAR","RESTRICTED_CHAR_RE","isRestrictedChar","isCharAndNotRestricted","NC_NAME_START_CHAR","NC_NAME_CHAR","NC_NAME_START_CHAR_RE","NC_NAME_CHAR_RE","extensionEntries","isSourceExpression","isPromise","isEventEmitter","isFunction","fromIterable","fromIterator","fromArray","WrappingIterator","ClonedIterator","MappingIterator","identity","IntegerIterator","DESTROYED","ENDED","CLOSED","CLOSING","OPEN","INIT","setTaskScheduler","getTaskScheduler","LinkedList","events_1","linkedlist_1","taskScheduler","createTaskScheduler","task","scheduler","initialState","_readable","waitForDataListener","_changeState","eventAsync","_endAsync","details","_toStringDetails","resolveItems","pushItem","_properties","propertyCallbacks","_propertyCallbacks","getProperties","setProperties","copyProperties","propertyNames","uniq","by","surround","currentResolve","currentReject","pendingError","tryResolve","tryReject","removeListeners","addSingleListener","emitData","_item","preserve","_sourceStarted","_truncateThreshold","_buffer","_next","ascending","_last","ensureSourceAvailable","_destroySource","destroySource","allowDestination","_maxBufferSize","_pushedCount","doneCalled","_begin","neededItems","_completeClose","_boundPush","_createSource","_loadSourceAsync","_optional","_validateSource","destinationCloseWhenDone","destinationFillBuffer","_readAndTransform","_optionalTransform","pushedCount","_closeWhenDone","_offset","_limit","_filter","_prepender","_appender","_readAndTransformSimple","nextAsync","mappedItem","_insert","inserter","_transformerQueue","transformerQueue","_sources","_currentSource","_pending","loading","_loadSources","_addSource","_destroySources","destroySources","destinationRemoveEmptySources","_removeEmptySources","_readPosition","history","HistoryReader","endsAt","register","readAt","_getSourceProperty","hasProperty","unregister","_history","_trackers","setReadable","tracker","emitError","resolved","scheduleMicrotask","scheduleMacrotask","queued","perf","PROCESS","emitWarning","AC","AS","_onabort","warnACPolyfill","printACPolyfillWarning","LRU_CACHE_IGNORE_AC_WARNING","isPosInt","getUintArray","Uint16Array","ZeroArray","heap","static","HeapCls","ttl","ttlResolution","ttlAutopurge","updateAgeOnGet","updateAgeOnHas","allowStale","noDisposeOnSet","noUpdateTTL","maxEntrySize","sizeCalculation","noDeleteOnFetchRejection","noDeleteOnStaleGet","allowStaleOnFetchAbort","allowStaleOnFetchRejection","ignoreFetchAbort","unsafeExposeInternals","starts","ttls","keyMap","keyList","valList","free","isBackgroundFetch","backgroundFetch","moveToTail","indexes","rindexes","isStale","maxSize","calculatedSize","fetchMethod","disposeAfter","UintArray","shouldWarn","getRemainingTTL","unref","cachedNow","getNow","age","remainingTTL","entrySize","totalCalculatedSize","_i","_s","_st","_k","rentries","rkeys","rvalues","getOptions","__staleWhileFetching","thisp","rforEach","purgeStale","deleted","dump","setOptions","maxEntrySizeExceeded","__abortController","hasOptions","peekOptions","fetchOpts","updateCache","ignoreAbort","fetchAborted","fetchError","fetchAbortIgnored","fetchResolved","fetchFail","bf","fetchUpdated","allowStaleAborted","noDelete","returnedStale","__returned","fetchDispatched","fmp","fetchRejected","fetchOptions","forceRefresh","stale","staleVal","fetching","pi","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"comunica-browser.js","mappings":"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AAIC,EAAI,CAAC,IAAI,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,IAAI,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,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IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,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f,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO,GAEhB,KAAK,IAAI,OAAO,GAEhB,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO,GAEhB,KAAK,IAAI,OA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","sources":["webpack://Comunica/../../node_modules/@bergos/jsonparse/jsonparse.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/fragment.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/index.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/fetchContext.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/index.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/lookupAllPrefixes.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/lookupNamespace.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/lookupPrefix.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://Comunica/../../node_modules/@rubensworks/saxes/saxes.js","webpack://Comunica/../../node_modules/@smessie/readable-web-to-node-stream/lib/index.js","webpack://Comunica/../../node_modules/abort-controller/browser.js","webpack://Comunica/../../node_modules/arrayify-stream/index.js","webpack://Comunica/../../node_modules/asyncjoin/index.js","webpack://Comunica/../../node_modules/asyncjoin/join/DynamicNestedLoopJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/HashJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/NestedLoopJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/SymmetricHashJoin.js","webpack://Comunica/../../node_modules/asyncjoin/util/MergeIterator.js","webpack://Comunica/./engine-default.js","webpack://Comunica/QueryEngine.ts","webpack://Comunica/index-browser.ts","webpack://Comunica/ActorAbstractMediaTyped.ts","webpack://Comunica/ActorAbstractMediaTypedFixed.ts","webpack://Comunica/index.ts","webpack://Comunica/ActorAbstractPath.ts","webpack://Comunica/PathVariableObjectIterator.ts","webpack://Comunica/ActorContextPreprocessConvertShortcuts.ts","webpack://Comunica/ActorContextPreprocessQuerySourceIdentify.ts","webpack://Comunica/ActorContextPreprocessQuerySourceSkolemize.ts","webpack://Comunica/QuerySourceSkolemized.ts","webpack://Comunica/utils.ts","webpack://Comunica/ActorContextPreprocessSetDefaults.ts","webpack://Comunica/ActorContextPreprocessSourceToDestination.ts","webpack://Comunica/ActorHashBindingsSha1.ts","webpack://Comunica/ActorHashQuadsSha1.ts","webpack://Comunica/ActorInitQuery-browser.ts","webpack://Comunica/ActorInitQueryBase.ts","webpack://Comunica/QueryEngineBase.ts","webpack://Comunica/ActorOptimizeQueryOperationAssignSourcesExhaustive.ts","webpack://Comunica/ActorOptimizeQueryOperationBgpToJoin.ts","webpack://Comunica/ActorOptimizeQueryOperationConstructDistinct.ts","webpack://Comunica/ActorOptimizeQueryOperationDescribeToConstructsSubject.ts","webpack://Comunica/ActorOptimizeQueryOperationFilterPushdown.ts","webpack://Comunica/ActorOptimizeQueryOperationGroupSources.ts","webpack://Comunica/ActorOptimizeQueryOperationJoinBgp.ts","webpack://Comunica/ActorOptimizeQueryOperationJoinConnected.ts","webpack://Comunica/ActorOptimizeQueryOperationPruneEmptySourceOperations.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteAdd.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteCopy.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteMove.ts","webpack://Comunica/ActorQueryOperationAsk.ts","webpack://Comunica/ActorQueryOperationBgpJoin.ts","webpack://Comunica/ActorQueryOperationConstruct.ts","webpack://Comunica/BindingsToQuadsIterator.ts","webpack://Comunica/ActorQueryOperationDistinctHash.ts","webpack://Comunica/ActorQueryOperationExtend.ts","webpack://Comunica/ActorQueryOperationFilter.ts","webpack://Comunica/ActorQueryOperationFromQuad.ts","webpack://Comunica/ActorQueryOperationGroup.ts","webpack://Comunica/GroupsState.ts","webpack://Comunica/ActorQueryOperationJoin.ts","webpack://Comunica/ActorQueryOperationLeftJoin.ts","webpack://Comunica/ActorQueryOperationMinus.ts","webpack://Comunica/ActorQueryOperationNop.ts","webpack://Comunica/ActorQueryOperationOrderBy.ts","webpack://Comunica/SortIterator.ts","webpack://Comunica/ActorQueryOperationPathAlt.ts","webpack://Comunica/ActorQueryOperationPathInv.ts","webpack://Comunica/ActorQueryOperationPathLink.ts","webpack://Comunica/ActorQueryOperationPathNps.ts","webpack://Comunica/ActorQueryOperationPathOneOrMore.ts","webpack://Comunica/ActorQueryOperationPathSeq.ts","webpack://Comunica/ActorQueryOperationPathZeroOrMore.ts","webpack://Comunica/ActorQueryOperationPathZeroOrOne.ts","webpack://Comunica/ActorQueryOperationProject.ts","webpack://Comunica/ActorQueryOperationReducedHash.ts","webpack://Comunica/ActorQueryOperationService.ts","webpack://Comunica/ActorQueryOperationSlice.ts","webpack://Comunica/ActorQueryOperationSource.ts","webpack://Comunica/ActorQueryOperationUnion.ts","webpack://Comunica/ActorQueryOperationClear.ts","webpack://Comunica/ActorQueryOperationUpdateCompositeUpdate.ts","webpack://Comunica/ActorQueryOperationCreate.ts","webpack://Comunica/ActorQueryOperationUpdateDeleteInsert.ts","webpack://Comunica/ActorQueryOperationDrop.ts","webpack://Comunica/ActorQueryOperationLoad.ts","webpack://Comunica/ActorQueryOperationValues.ts","webpack://Comunica/ActorQueryParseGraphql.ts","webpack://Comunica/ActorQueryParseSparql.ts","webpack://Comunica/ActorQueryProcessExplainLogical.ts","webpack://Comunica/ActorQueryProcessExplainParsed.ts","webpack://Comunica/ActorQueryProcessExplainPhysical.ts","webpack://Comunica/MemoryPhysicalQueryPlanLogger.ts","webpack://Comunica/ActorQueryProcessSequential.ts","webpack://Comunica/ActorQueryResultSerializeJson.ts","webpack://Comunica/ActorQueryResultSerializeRdf.ts","webpack://Comunica/ActorQueryResultSerializeSimple.ts","webpack://Comunica/ActorQueryResultSerializeSparqlCsv.ts","webpack://Comunica/ActionObserverHttp.ts","webpack://Comunica/ActorQueryResultSerializeSparqlJson.ts","webpack://Comunica/ActorQueryResultSerializeSparqlTsv.ts","webpack://Comunica/ActorQueryResultSerializeSparqlXml.ts","webpack://Comunica/XmlSerializer.ts","webpack://Comunica/ActorQueryResultSerializeStats.ts","webpack://Comunica/ActorQueryResultSerializeTable.ts","webpack://Comunica/ActorQueryResultSerializeTree.ts","webpack://Comunica/ActorQuerySourceIdentifyHypermediaSparql.ts","webpack://Comunica/QuerySourceSparql.ts","webpack://Comunica/ActorQuerySourceIdentifyHypermedia.ts","webpack://Comunica/LinkedRdfSourcesAsyncRdfIterator.ts","webpack://Comunica/MediatedLinkedRdfSourcesAsyncRdfIterator.ts","webpack://Comunica/QuerySourceHypermedia.ts","webpack://Comunica/StreamingStoreMetadata.ts","webpack://Comunica/ActorQuerySourceIdentifyRdfJs.ts","webpack://Comunica/QuerySourceRdfJs.ts","webpack://Comunica/ActorRdfJoinEntriesSortCardinality.ts","webpack://Comunica/ActorRdfJoinHash.ts","webpack://Comunica/ActorRdfJoinMultiBindSource.ts","webpack://Comunica/ActorRdfJoinMultiBind.ts","webpack://Comunica/ActorRdfJoinMultiEmpty.ts","webpack://Comunica/ActorRdfJoinMultiSmallestFilterBindings.ts","webpack://Comunica/ActorRdfJoinMultiSmallest.ts","webpack://Comunica/ActorRdfJoinNestedLoop.ts","webpack://Comunica/ActorRdfJoinNone.ts","webpack://Comunica/ActorRdfJoinSingle.ts","webpack://Comunica/ActorRdfJoinSymmetricHash.ts","webpack://Comunica/ActorRdfJoinMinusHashUndef.ts","webpack://Comunica/BindingsIndex.ts","webpack://Comunica/ActorRdfJoinMinusHash.ts","webpack://Comunica/ActorRdfJoinOptionalBind.ts","webpack://Comunica/ActorRdfJoinOptionalHash.ts","webpack://Comunica/BindingsIndexDef.ts","webpack://Comunica/BindingsIndexUndef.ts","webpack://Comunica/ActorRdfJoinOptionalNestedLoop.ts","webpack://Comunica/ActorRdfJoinSelectivityVariableCounting.ts","webpack://Comunica/ActorRdfMetadataAccumulateCanContainUndefs.ts","webpack://Comunica/ActorRdfMetadataAccumulateCardinality.ts","webpack://Comunica/ActorRdfMetadataAccumulatePageSize.ts","webpack://Comunica/ActorRdfMetadataAccumulateRequestTime.ts","webpack://Comunica/ActorRdfSerializeJsonLd.ts","webpack://Comunica/ActorRdfSerializeN3.ts","webpack://Comunica/ActorRdfSerializeShaclc.ts","webpack://Comunica/ActorRdfUpdateQuadsRdfJsStore.ts","webpack://Comunica/RdfJsQuadDestination.ts","webpack://Comunica/Bindings.ts","webpack://Comunica/BindingsFactory.ts","webpack://Comunica/bindingsToString.ts","webpack://Comunica/ActorContextPreprocess.ts","webpack://Comunica/ActorHashBindings.ts","webpack://Comunica/ActorHashQuads.ts","webpack://Comunica/ActorHttpInvalidate.ts","webpack://Comunica/ActorHttpInvalidateListenable.ts","webpack://Comunica/ActorInit.ts","webpack://Comunica/ActorOptimizeQueryOperation.ts","webpack://Comunica/ActorQueryOperation.ts","webpack://Comunica/ActorQueryOperationTyped.ts","webpack://Comunica/ActorQueryOperationTypedMediated.ts","webpack://Comunica/BusQueryOperation.ts","webpack://Comunica/ClosableIterator.ts","webpack://Comunica/ClosableTransformIterator.ts","webpack://Comunica/ActorQueryParse.ts","webpack://Comunica/ActorQueryProcess.ts","webpack://Comunica/ActorQueryResultSerialize.ts","webpack://Comunica/ActorQueryResultSerializeFixedMediaTypes.ts","webpack://Comunica/ActorQuerySourceIdentify.ts","webpack://Comunica/Utils.ts","webpack://Comunica/ActorRdfJoinEntriesSort.ts","webpack://Comunica/ActorRdfJoinSelectivity.ts","webpack://Comunica/ActorRdfJoin.ts","webpack://Comunica/ChunkedIterator.ts","webpack://Comunica/instrumentIterator.ts","webpack://Comunica/ActorRdfMetadataAccumulate.ts","webpack://Comunica/ActorRdfSerialize.ts","webpack://Comunica/ActorRdfSerializeFixedMediaTypes.ts","webpack://Comunica/ActorRdfUpdateQuads.ts","webpack://Comunica/ActorRdfUpdateQuadsDestination.ts","webpack://Comunica/Keys.ts","webpack://Comunica/ActionContext.ts","webpack://Comunica/ActionObserver.ts","webpack://Comunica/Actor.ts","webpack://Comunica/Bus.ts","webpack://Comunica/BusIndexed.ts","webpack://Comunica/ContextEntries.ts","webpack://Comunica/Mediator.ts","webpack://Comunica/BlankNodeBindingsScoped.ts","webpack://Comunica/BlankNodeScoped.ts","webpack://Comunica/Aggregator.ts","webpack://Comunica/Average.ts","webpack://Comunica/Count.ts","webpack://Comunica/GroupConcat.ts","webpack://Comunica/Max.ts","webpack://Comunica/Min.ts","webpack://Comunica/Sample.ts","webpack://Comunica/Sum.ts","webpack://Comunica/WildcardCountAggregator.ts","webpack://Comunica/AggregateEvaluator.ts","webpack://Comunica/AsyncAggregateEvaluator.ts","webpack://Comunica/AsyncEvaluator.ts","webpack://Comunica/SyncEvaluator.ts","webpack://Comunica/AsyncRecursiveEvaluator.ts","webpack://Comunica/BaseAggregateEvaluator.ts","webpack://Comunica/BaseExpressionEvaluator.ts","webpack://Comunica/SyncRecursiveEvaluator.ts","webpack://Comunica/Aggregate.ts","webpack://Comunica/AsyncExtension.ts","webpack://Comunica/Existence.ts","webpack://Comunica/Expressions.ts","webpack://Comunica/Named.ts","webpack://Comunica/Operator.ts","webpack://Comunica/SpecialOperator.ts","webpack://Comunica/SyncExtension.ts","webpack://Comunica/Term.ts","webpack://Comunica/Variable.ts","webpack://Comunica/Core.ts","webpack://Comunica/Helpers.ts","webpack://Comunica/NamedFunctions.ts","webpack://Comunica/OverloadTree.ts","webpack://Comunica/RegularFunctions.ts","webpack://Comunica/SpecialFunctions.ts","webpack://Comunica/XPathFunctions.ts","webpack://Comunica/AlgebraTransformer.ts","webpack://Comunica/TermTransformer.ts","webpack://Comunica/Consts.ts","webpack://Comunica/DateTimeHelpers.ts","webpack://Comunica/Errors.ts","webpack://Comunica/Ordering.ts","webpack://Comunica/Parsing.ts","webpack://Comunica/Serialization.ts","webpack://Comunica/SpecAlgos.ts","webpack://Comunica/TypeHandling.ts","webpack://Comunica/LoggerVoid.ts","webpack://Comunica/MediatorAll.ts","webpack://Comunica/MediatorCombinePipeline.ts","webpack://Comunica/MediatorCombineUnion.ts","webpack://Comunica/MediatorJoinCoefficientsFixed.ts","webpack://Comunica/MediatorNumber.ts","webpack://Comunica/MediatorRace.ts","webpack://Comunica/MetadataValidationState.ts","webpack://Comunica/Logger.ts","webpack://Comunica/../../node_modules/base64-js/index.js","webpack://Comunica/../../node_modules/bignumber.js/bignumber.js","webpack://Comunica/../../node_modules/buffer/index.js","webpack://Comunica/../../node_modules/canonicalize/lib/canonicalize.js","webpack://Comunica/../../node_modules/event-emitter-promisify/dist/index.js","webpack://Comunica/../../node_modules/events/events.js","webpack://Comunica/../../node_modules/fast-deep-equal/es6/index.js","webpack://Comunica/../../node_modules/fetch-sparql-endpoint/index.js","webpack://Comunica/../../node_modules/fetch-sparql-endpoint/lib/SparqlEndpointFetcher.js","webpack://Comunica/../../node_modules/fetch-sparql-endpoint/node_modules/cross-fetch/dist/browser-polyfill.js","webpack://Comunica/../../node_modules/graphql-to-sparql/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/Converter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/IConvertContext.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/IConvertSettings.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/Util.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionFragment.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionOperation.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDocument.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionField.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionFragmentSpread.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionInlineFragment.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerInclude.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerOptional.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerPlural.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerSingle.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerSkip.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerBoolean.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerEnum.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerFloat.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerInt.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerList.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerNull.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerObject.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerString.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerVariable.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/graphql/error/GraphQLError.js","webpack://Comunica/../../node_modules/graphql/error/syntaxError.js","webpack://Comunica/../../node_modules/graphql/jsutils/defineInspect.js","webpack://Comunica/../../node_modules/graphql/jsutils/devAssert.js","webpack://Comunica/../../node_modules/graphql/jsutils/inspect.js","webpack://Comunica/../../node_modules/graphql/jsutils/instanceOf.js","webpack://Comunica/../../node_modules/graphql/jsutils/invariant.js","webpack://Comunica/../../node_modules/graphql/jsutils/isObjectLike.js","webpack://Comunica/../../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.js","webpack://Comunica/../../node_modules/graphql/language/ast.js","webpack://Comunica/../../node_modules/graphql/language/blockString.js","webpack://Comunica/../../node_modules/graphql/language/directiveLocation.js","webpack://Comunica/../../node_modules/graphql/language/index.js","webpack://Comunica/../../node_modules/graphql/language/kinds.js","webpack://Comunica/../../node_modules/graphql/language/lexer.js","webpack://Comunica/../../node_modules/graphql/language/location.js","webpack://Comunica/../../node_modules/graphql/language/parser.js","webpack://Comunica/../../node_modules/graphql/language/predicates.js","webpack://Comunica/../../node_modules/graphql/language/printLocation.js","webpack://Comunica/../../node_modules/graphql/language/printer.js","webpack://Comunica/../../node_modules/graphql/language/source.js","webpack://Comunica/../../node_modules/graphql/language/tokenKind.js","webpack://Comunica/../../node_modules/graphql/language/visitor.js","webpack://Comunica/../../node_modules/graphql/polyfills/symbols.js","webpack://Comunica/../../node_modules/hash.js/lib/hash.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/common.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/hmac.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/ripemd.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/1.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/224.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/256.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/384.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/512.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/common.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/utils.js","webpack://Comunica/../../node_modules/http-link-header/lib/link.js","webpack://Comunica/../../node_modules/ieee754/index.js","webpack://Comunica/../../node_modules/immutable/dist/immutable.es.js","webpack://Comunica/../../node_modules/inherits/inherits_browser.js","webpack://Comunica/../../node_modules/is-stream/index.js","webpack://Comunica/../../node_modules/jsonld-context-parser/index.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/ContextParser.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/ErrorCoded.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/FetchDocumentLoader.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/IDocumentLoader.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/JsonLdContext.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/JsonLdContextNormalized.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/Util.js","webpack://Comunica/../../node_modules/jsonld-context-parser/node_modules/cross-fetch/dist/browser-polyfill.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/index.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/lib/JsonLdSerializer.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/lib/SeparatorType.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/lib/Util.js","webpack://Comunica/../../node_modules/minimalistic-assert/index.js","webpack://Comunica/../../node_modules/n3/src/IRIs.js","webpack://Comunica/../../node_modules/n3/src/N3Lexer.js","webpack://Comunica/../../node_modules/n3/src/N3DataFactory.js","webpack://Comunica/../../node_modules/n3/src/N3Parser.js","webpack://Comunica/../../node_modules/n3/src/N3Util.js","webpack://Comunica/../../node_modules/n3/src/N3Writer.js","webpack://Comunica/../../node_modules/n3/src/N3Store.js","webpack://Comunica/../../node_modules/n3/src/N3StreamParser.js","webpack://Comunica/../../node_modules/n3/src/N3StreamWriter.js","webpack://Comunica/../../node_modules/n3/src/index.js","webpack://Comunica/../../node_modules/process/browser.js","webpack://Comunica/../../node_modules/promise-polyfill/Promise.js","webpack://Comunica/../../node_modules/queue-microtask/index.js","webpack://Comunica/../../node_modules/rdf-data-factory/index.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/BlankNode.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/DataFactory.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/DefaultGraph.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Literal.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/NamedNode.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Quad.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Variable.js","webpack://Comunica/../../node_modules/rdf-isomorphic/index.js","webpack://Comunica/../../node_modules/rdf-isomorphic/lib/RdfIsomorphic.js","webpack://Comunica/../../node_modules/rdf-literal/index.js","webpack://Comunica/../../node_modules/rdf-literal/lib/ITypeHandler.js","webpack://Comunica/../../node_modules/rdf-literal/lib/Translator.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerBoolean.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerDate.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerNumberDouble.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerNumberInteger.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerString.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/index.js","webpack://Comunica/../../node_modules/rdf-streaming-store/index.js","webpack://Comunica/../../node_modules/rdf-streaming-store/lib/PendingStreamsIndex.js","webpack://Comunica/../../node_modules/rdf-streaming-store/lib/StreamingStore.js","webpack://Comunica/../../node_modules/rdf-string-ttl/index.js","webpack://Comunica/../../node_modules/rdf-string-ttl/lib/TermUtil.js","webpack://Comunica/../../node_modules/rdf-string/index.js","webpack://Comunica/../../node_modules/rdf-string/lib/TermUtil.js","webpack://Comunica/../../node_modules/rdf-terms/index.js","webpack://Comunica/../../node_modules/rdf-terms/lib/QuadTermUtil.js","webpack://Comunica/../../node_modules/rdf-terms/lib/TermUtil.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/add-abort-signal.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/compose.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/duplex.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/duplexify.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/from.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/legacy.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/operators.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/passthrough.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/readable.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/state.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/transform.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/utils.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/writable.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/validators.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/browser.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/errors.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/primordials.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/util.js","webpack://Comunica/../../node_modules/readable-stream/lib/stream.js","webpack://Comunica/../../node_modules/readable-stream/lib/stream/promises.js","webpack://Comunica/../../node_modules/relative-to-absolute-iri/index.js","webpack://Comunica/../../node_modules/relative-to-absolute-iri/lib/Resolve.js","webpack://Comunica/../../node_modules/safe-buffer/index.js","webpack://Comunica/../../node_modules/shaclc-write/dist/ShaclcGenerator.js","webpack://Comunica/../../node_modules/shaclc-write/dist/base-prefixes.js","webpack://Comunica/../../node_modules/shaclc-write/dist/index.js","webpack://Comunica/../../node_modules/shaclc-write/dist/node-param.js","webpack://Comunica/../../node_modules/shaclc-write/dist/property-param .js","webpack://Comunica/../../node_modules/shaclc-write/dist/utils.js","webpack://Comunica/../../node_modules/shaclc-write/dist/volatile-store.js","webpack://Comunica/../../node_modules/shaclc-write/dist/writer.js","webpack://Comunica/../../node_modules/spark-md5/spark-md5.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/sparqljs/lib/SparqlGenerator.js","webpack://Comunica/../../node_modules/sparqljs/lib/SparqlParser.js","webpack://Comunica/../../node_modules/sparqljs/lib/Wildcard.js","webpack://Comunica/../../node_modules/sparqljs/sparql.js","webpack://Comunica/../../node_modules/sparqljson-parse/index.js","webpack://Comunica/../../node_modules/sparqljson-parse/lib/SparqlJsonParser.js","webpack://Comunica/../../node_modules/sparqljson-to-tree/index.js","webpack://Comunica/../../node_modules/sparqljson-to-tree/lib/Converter.js","webpack://Comunica/../../node_modules/sparqlxml-parse/index.js","webpack://Comunica/../../node_modules/sparqlxml-parse/lib/SparqlXmlParser.js","webpack://Comunica/../../node_modules/stream-to-string/index.js","webpack://Comunica/../../node_modules/string_decoder/lib/string_decoder.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/index.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/md5.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/native.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/nil.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/parse.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/regex.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/rng.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/sha1.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/stringify.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v1.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v3.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v35.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v4.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v5.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/validate.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/version.js","webpack://Comunica/../../node_modules/xmlchars/xml/1.0/ed5.js","webpack://Comunica/../../node_modules/xmlchars/xml/1.1/ed2.js","webpack://Comunica/../../node_modules/xmlchars/xmlns/1.0/ed3.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/asynciterator/dist/asynciterator.js","webpack://Comunica/../../node_modules/asynciterator/dist/linkedlist.js","webpack://Comunica/../../node_modules/asynciterator/dist/taskscheduler.js","webpack://Comunica/../../node_modules/lru-cache/dist/commonjs/index.js","webpack://Comunica/webpack/bootstrap","webpack://Comunica/webpack/runtime/compat get default export","webpack://Comunica/webpack/runtime/define property getters","webpack://Comunica/webpack/runtime/global","webpack://Comunica/webpack/runtime/hasOwnProperty shorthand","webpack://Comunica/webpack/runtime/make namespace object","webpack://Comunica/webpack/startup"],"sourcesContent":["var { Buffer } = require('buffer')\n// Named constants with unique integer values\nvar C = {};\n// Tokens\nvar LEFT_BRACE = C.LEFT_BRACE = 0x1;\nvar RIGHT_BRACE = C.RIGHT_BRACE = 0x2;\nvar LEFT_BRACKET = C.LEFT_BRACKET = 0x3;\nvar RIGHT_BRACKET = C.RIGHT_BRACKET = 0x4;\nvar COLON = C.COLON = 0x5;\nvar COMMA = C.COMMA = 0x6;\nvar TRUE = C.TRUE = 0x7;\nvar FALSE = C.FALSE = 0x8;\nvar NULL = C.NULL = 0x9;\nvar STRING = C.STRING = 0xa;\nvar NUMBER = C.NUMBER = 0xb;\n// Tokenizer States\nvar START = C.START = 0x11;\nvar STOP = C.STOP = 0x12;\nvar TRUE1 = C.TRUE1 = 0x21;\nvar TRUE2 = C.TRUE2 = 0x22;\nvar TRUE3 = C.TRUE3 = 0x23;\nvar FALSE1 = C.FALSE1 = 0x31;\nvar FALSE2 = C.FALSE2 = 0x32;\nvar FALSE3 = C.FALSE3 = 0x33;\nvar FALSE4 = C.FALSE4 = 0x34;\nvar NULL1 = C.NULL1 = 0x41;\nvar NULL2 = C.NULL2 = 0x42;\nvar NULL3 = C.NULL3 = 0x43;\nvar NUMBER1 = C.NUMBER1 = 0x51;\nvar NUMBER3 = C.NUMBER3 = 0x53;\nvar STRING1 = C.STRING1 = 0x61;\nvar STRING2 = C.STRING2 = 0x62;\nvar STRING3 = C.STRING3 = 0x63;\nvar STRING4 = C.STRING4 = 0x64;\nvar STRING5 = C.STRING5 = 0x65;\nvar STRING6 = C.STRING6 = 0x66;\n// Parser States\nvar VALUE = C.VALUE = 0x71;\nvar KEY = C.KEY = 0x72;\n// Parser Modes\nvar OBJECT = C.OBJECT = 0x81;\nvar ARRAY = C.ARRAY = 0x82;\n// Character constants\nvar BACK_SLASH = \"\\\\\".charCodeAt(0);\nvar FORWARD_SLASH = \"\\/\".charCodeAt(0);\nvar BACKSPACE = \"\\b\".charCodeAt(0);\nvar FORM_FEED = \"\\f\".charCodeAt(0);\nvar NEWLINE = \"\\n\".charCodeAt(0);\nvar CARRIAGE_RETURN = \"\\r\".charCodeAt(0);\nvar TAB = \"\\t\".charCodeAt(0);\n\nvar STRING_BUFFER_SIZE = 64 * 1024;\n\nfunction alloc(size) {\n return Buffer.alloc ? Buffer.alloc(size) : new Buffer(size);\n}\n\nfunction Parser() {\n this.tState = START;\n this.value = undefined;\n\n this.string = undefined; // string data\n this.stringBuffer = alloc(STRING_BUFFER_SIZE);\n this.stringBufferOffset = 0;\n this.unicode = undefined; // unicode escapes\n this.highSurrogate = undefined;\n\n this.key = undefined;\n this.mode = undefined;\n this.stack = [];\n this.state = VALUE;\n this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n this.temp_buffs = { \"2\": alloc(2), \"3\": alloc(3), \"4\": alloc(4) }; // for rebuilding chars split before boundary is reached\n\n // Stream offset\n this.offset = -1;\n}\n\n// Slow code to string converter (only used when throwing syntax errors)\nParser.toknam = function (code) {\n var keys = Object.keys(C);\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n if (C[key] === code) { return key; }\n }\n return code && (\"0x\" + code.toString(16));\n};\n\nvar proto = Parser.prototype;\nproto.onError = function (err) { throw err; };\nproto.charError = function (buffer, i) {\n this.tState = STOP;\n this.onError(new Error(\"Unexpected \" + JSON.stringify(String.fromCharCode(buffer[i])) + \" at position \" + i + \" in state \" + Parser.toknam(this.tState)));\n};\nproto.appendStringChar = function (char) {\n if (this.stringBufferOffset >= STRING_BUFFER_SIZE) {\n this.string += this.stringBuffer.toString('utf8');\n this.stringBufferOffset = 0;\n }\n\n this.stringBuffer[this.stringBufferOffset++] = char;\n};\nproto.appendStringBuf = function (buf, start, end) {\n var size = buf.length;\n if (typeof start === 'number') {\n if (typeof end === 'number') {\n if (end < 0) {\n // adding a negative end decreeses the size\n size = buf.length - start + end;\n } else {\n size = end - start;\n }\n } else {\n size = buf.length - start;\n }\n }\n\n if (size < 0) {\n size = 0;\n }\n\n if (this.stringBufferOffset + size > STRING_BUFFER_SIZE) {\n this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset);\n this.stringBufferOffset = 0;\n }\n\n buf.copy(this.stringBuffer, this.stringBufferOffset, start, end);\n this.stringBufferOffset += size;\n};\nproto.write = function (buffer) {\n if (typeof buffer === \"string\") buffer = new Buffer(buffer);\n var n;\n for (var i = 0, l = buffer.length; i < l; i++) {\n if (this.tState === START){\n n = buffer[i];\n this.offset++;\n if(n === 0x7b){ this.onToken(LEFT_BRACE, \"{\"); // {\n }else if(n === 0x7d){ this.onToken(RIGHT_BRACE, \"}\"); // }\n }else if(n === 0x5b){ this.onToken(LEFT_BRACKET, \"[\"); // [\n }else if(n === 0x5d){ this.onToken(RIGHT_BRACKET, \"]\"); // ]\n }else if(n === 0x3a){ this.onToken(COLON, \":\"); // :\n }else if(n === 0x2c){ this.onToken(COMMA, \",\"); // ,\n }else if(n === 0x74){ this.tState = TRUE1; // t\n }else if(n === 0x66){ this.tState = FALSE1; // f\n }else if(n === 0x6e){ this.tState = NULL1; // n\n }else if(n === 0x22){ // \"\n this.string = \"\";\n this.stringBufferOffset = 0;\n this.tState = STRING1;\n }else if(n === 0x2d){ this.string = \"-\"; this.tState = NUMBER1; // -\n }else{\n if (n >= 0x30 && n < 0x40) { // 1-9\n this.string = String.fromCharCode(n); this.tState = NUMBER3;\n } else if (n === 0x20 || n === 0x09 || n === 0x0a || n === 0x0d) {\n // whitespace\n } else {\n return this.charError(buffer, i);\n }\n }\n }else if (this.tState === STRING1){ // After open quote\n n = buffer[i]; // get current byte from buffer\n // check for carry over of a multi byte char split between data chunks\n // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n if (this.bytes_remaining > 0) {\n for (var j = 0; j < this.bytes_remaining; j++) {\n this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = buffer[j];\n }\n\n this.appendStringBuf(this.temp_buffs[this.bytes_in_sequence]);\n this.bytes_in_sequence = this.bytes_remaining = 0;\n i = i + j - 1;\n } else if (this.bytes_remaining === 0 && n >= 128) { // else if no remainder bytes carried over, parse multi byte (>=128) chars one at a time\n if (n <= 193 || n > 244) {\n return this.onError(new Error(\"Invalid UTF-8 character at position \" + i + \" in state \" + Parser.toknam(this.tState)));\n }\n if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2;\n if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3;\n if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4;\n if ((this.bytes_in_sequence + i) > buffer.length) { // if bytes needed to complete char fall outside buffer length, we have a boundary split\n for (var k = 0; k <= (buffer.length - 1 - i); k++) {\n this.temp_buffs[this.bytes_in_sequence][k] = buffer[i + k]; // fill temp buffer of correct size with bytes available in this chunk\n }\n this.bytes_remaining = (i + this.bytes_in_sequence) - buffer.length;\n i = buffer.length - 1;\n } else {\n this.appendStringBuf(buffer, i, i + this.bytes_in_sequence);\n i = i + this.bytes_in_sequence - 1;\n }\n } else if (n === 0x22) {\n this.tState = START;\n this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset);\n this.stringBufferOffset = 0;\n this.onToken(STRING, this.string);\n this.offset += Buffer.byteLength(this.string, 'utf8') + 1;\n this.string = undefined;\n }\n else if (n === 0x5c) {\n this.tState = STRING2;\n }\n else if (n >= 0x20) { this.appendStringChar(n); }\n else {\n return this.charError(buffer, i);\n }\n }else if (this.tState === STRING2){ // After backslash\n n = buffer[i];\n if(n === 0x22){ this.appendStringChar(n); this.tState = STRING1;\n }else if(n === 0x5c){ this.appendStringChar(BACK_SLASH); this.tState = STRING1;\n }else if(n === 0x2f){ this.appendStringChar(FORWARD_SLASH); this.tState = STRING1;\n }else if(n === 0x62){ this.appendStringChar(BACKSPACE); this.tState = STRING1;\n }else if(n === 0x66){ this.appendStringChar(FORM_FEED); this.tState = STRING1;\n }else if(n === 0x6e){ this.appendStringChar(NEWLINE); this.tState = STRING1;\n }else if(n === 0x72){ this.appendStringChar(CARRIAGE_RETURN); this.tState = STRING1;\n }else if(n === 0x74){ this.appendStringChar(TAB); this.tState = STRING1;\n }else if(n === 0x75){ this.unicode = \"\"; this.tState = STRING3;\n }else{\n return this.charError(buffer, i);\n }\n }else if (this.tState === STRING3 || this.tState === STRING4 || this.tState === STRING5 || this.tState === STRING6){ // unicode hex codes\n n = buffer[i];\n // 0-9 A-F a-f\n if ((n >= 0x30 && n < 0x40) || (n > 0x40 && n <= 0x46) || (n > 0x60 && n <= 0x66)) {\n this.unicode += String.fromCharCode(n);\n if (this.tState++ === STRING6) {\n var intVal = parseInt(this.unicode, 16);\n this.unicode = undefined;\n if (this.highSurrogate !== undefined && intVal >= 0xDC00 && intVal < (0xDFFF + 1)) { //<56320,57343> - lowSurrogate\n this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate, intVal)));\n this.highSurrogate = undefined;\n } else if (this.highSurrogate === undefined && intVal >= 0xD800 && intVal < (0xDBFF + 1)) { //<55296,56319> - highSurrogate\n this.highSurrogate = intVal;\n } else {\n if (this.highSurrogate !== undefined) {\n this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate)));\n this.highSurrogate = undefined;\n }\n this.appendStringBuf(new Buffer(String.fromCharCode(intVal)));\n }\n this.tState = STRING1;\n }\n } else {\n return this.charError(buffer, i);\n }\n } else if (this.tState === NUMBER1 || this.tState === NUMBER3) {\n n = buffer[i];\n\n switch (n) {\n case 0x30: // 0\n case 0x31: // 1\n case 0x32: // 2\n case 0x33: // 3\n case 0x34: // 4\n case 0x35: // 5\n case 0x36: // 6\n case 0x37: // 7\n case 0x38: // 8\n case 0x39: // 9\n case 0x2e: // .\n case 0x65: // e\n case 0x45: // E\n case 0x2b: // +\n case 0x2d: // -\n this.string += String.fromCharCode(n);\n this.tState = NUMBER3;\n break;\n default:\n this.tState = START;\n var error = this.numberReviver(this.string);\n if (error){\n return error;\n }\n\n this.offset += this.string.length - 1;\n this.string = undefined;\n i--;\n break;\n }\n }else if (this.tState === TRUE1){ // r\n if (buffer[i] === 0x72) { this.tState = TRUE2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === TRUE2){ // u\n if (buffer[i] === 0x75) { this.tState = TRUE3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === TRUE3){ // e\n if (buffer[i] === 0x65) { this.tState = START; this.onToken(TRUE, true); this.offset+= 3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE1){ // a\n if (buffer[i] === 0x61) { this.tState = FALSE2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE2){ // l\n if (buffer[i] === 0x6c) { this.tState = FALSE3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE3){ // s\n if (buffer[i] === 0x73) { this.tState = FALSE4; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE4){ // e\n if (buffer[i] === 0x65) { this.tState = START; this.onToken(FALSE, false); this.offset+= 4; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL1){ // u\n if (buffer[i] === 0x75) { this.tState = NULL2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL2){ // l\n if (buffer[i] === 0x6c) { this.tState = NULL3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL3){ // l\n if (buffer[i] === 0x6c) { this.tState = START; this.onToken(NULL, null); this.offset += 3; }\n else { return this.charError(buffer, i); }\n }\n }\n};\nproto.onToken = function (token, value) {\n // Override this to get events\n};\n\nproto.parseError = function (token, value) {\n this.tState = STOP;\n this.onError(new Error(\"Unexpected \" + Parser.toknam(token) + (value ? (\"(\" + JSON.stringify(value) + \")\") : \"\") + \" in state \" + Parser.toknam(this.state)));\n};\nproto.push = function () {\n this.stack.push({value: this.value, key: this.key, mode: this.mode});\n};\nproto.pop = function () {\n var value = this.value;\n var parent = this.stack.pop();\n this.value = parent.value;\n this.key = parent.key;\n this.mode = parent.mode;\n this.emit(value);\n if (!this.mode) { this.state = VALUE; }\n};\nproto.emit = function (value) {\n if (this.mode) { this.state = COMMA; }\n this.onValue(value);\n};\nproto.onValue = function (value) {\n // Override me\n};\nproto.onToken = function (token, value) {\n if(this.state === VALUE){\n if(token === STRING || token === NUMBER || token === TRUE || token === FALSE || token === NULL){\n if (this.value) {\n this.value[this.key] = value;\n }\n this.emit(value);\n }else if(token === LEFT_BRACE){\n this.push();\n if (this.value) {\n this.value = this.value[this.key] = {};\n } else {\n this.value = {};\n }\n this.key = undefined;\n this.state = KEY;\n this.mode = OBJECT;\n }else if(token === LEFT_BRACKET){\n this.push();\n if (this.value) {\n this.value = this.value[this.key] = [];\n } else {\n this.value = [];\n }\n this.key = 0;\n this.mode = ARRAY;\n this.state = VALUE;\n }else if(token === RIGHT_BRACE){\n if (this.mode === OBJECT) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else if(token === RIGHT_BRACKET){\n if (this.mode === ARRAY) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else{\n return this.parseError(token, value);\n }\n }else if(this.state === KEY){\n if (token === STRING) {\n this.key = value;\n this.state = COLON;\n } else if (token === RIGHT_BRACE) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else if(this.state === COLON){\n if (token === COLON) { this.state = VALUE; }\n else { return this.parseError(token, value); }\n }else if(this.state === COMMA){\n if (token === COMMA) {\n if (this.mode === ARRAY) { this.key++; this.state = VALUE; }\n else if (this.mode === OBJECT) { this.state = KEY; }\n\n } else if (token === RIGHT_BRACKET && this.mode === ARRAY || token === RIGHT_BRACE && this.mode === OBJECT) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else{\n return this.parseError(token, value);\n }\n};\n\n// Override to implement your own number reviver.\n// Any value returned is treated as error and will interrupt parsing.\nproto.numberReviver = function (text) {\n var result = Number(text);\n\n if (isNaN(result)) {\n return this.charError(buffer, i);\n }\n\n if ((text.match(/[0-9]+/) == text) && (result.toString() != text)) {\n // Long string of digits which is an ID string and not valid and/or safe JavaScript integer Number\n this.onToken(STRING, text);\n } else {\n this.onToken(NUMBER, result);\n }\n}\n\nParser.C = C;\n\nmodule.exports = Parser;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragment = void 0;\nfunction getFragment(inputStr) {\n let str = inputStr;\n if (str.endsWith('/') || str.endsWith('#')) {\n str = str.slice(0, str.length - 1);\n }\n const args = [];\n if (str.lastIndexOf('/') > 0) {\n args.push(str.lastIndexOf('/'));\n }\n if (str.lastIndexOf('#') > 0) {\n args.push(str.lastIndexOf('#'));\n }\n const i = Math.max(...args);\n return str.slice(i + 1);\n}\nfunction camelize(str) {\n var _a;\n const res = (_a = str\n .split(/[^a-z0-9]+/ig)\n .filter((s) => s !== '')\n .map((s) => s[0].toUpperCase() + s.slice(1))\n .join('')\n // Make sure the prefix does not start with a number\n .match(/[a-z][a-z0-9]+/ig)) === null || _a === void 0 ? void 0 : _a[0];\n // Include 'v' so we always return something matching the pattern\n // [a-z][a-z0-9]+\n return typeof res === 'undefined' ? undefined : res[0].toLowerCase() + res.slice(1);\n}\nfunction fragment(str) {\n let value = getFragment(str);\n value = value ? camelize(value) : undefined;\n return value || 'v';\n}\nexports.fragment = fragment;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupAllPrefixes = exports.prefixToUri = exports.uriToPrefix = void 0;\nconst fragment_1 = require(\"./fragment\");\nconst lookup_1 = require(\"./lookup\");\nfunction uriToPrefix(uri, options) {\n return __awaiter(this, void 0, void 0, function* () {\n let result;\n // Collect the prefix\n try {\n result = yield (0, lookup_1.lookupPrefix)(uri, options);\n }\n catch (_a) {\n if (options === null || options === void 0 ? void 0 : options.mintOnUnknown) {\n // Keep prefixes at most 4 characters long when minting a new one\n result = (0, fragment_1.fragment)(uri).slice(0, 4);\n }\n }\n // If there is a bank of existing prefixes make sure to make a unique one\n // by postfixing a number\n if (typeof result !== 'undefined'\n && typeof (options === null || options === void 0 ? void 0 : options.existingPrefixes) === 'object'\n && result in options.existingPrefixes) {\n let i = 0;\n while (`${result}${i}` in options.existingPrefixes) {\n i += 1;\n }\n result = `${result}${i}`;\n }\n return result;\n });\n}\nexports.uriToPrefix = uriToPrefix;\n/**\n * Lookup the namespace commonly associated with a given prefix\n * @param prefix The prefix to lookup the namespace for\n * @param options You can optionally pass a custom fetch function\n */\nfunction prefixToUri(prefix, options) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // The await needs to be here so that we can return undefined on rejection\n return yield (0, lookup_1.lookupUri)(prefix, options);\n }\n catch (_a) {\n return undefined;\n }\n });\n}\nexports.prefixToUri = prefixToUri;\nvar lookup_2 = require(\"./lookup\");\nObject.defineProperty(exports, \"lookupAllPrefixes\", { enumerable: true, get: function () { return lookup_2.lookupAllPrefixes; } });\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchContext = exports.fetchJson = void 0;\n// TODO: Use universal fetch here\nconst cross_fetch_1 = require(\"cross-fetch\");\nfunction fetchJson(url, options) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n // Select the correct fetch function\n const fetchFn = (_a = options === null || options === void 0 ? void 0 : options.fetch) !== null && _a !== void 0 ? _a : cross_fetch_1.fetch;\n return (yield fetchFn(url)).json();\n });\n}\nexports.fetchJson = fetchJson;\nfunction fetchContext(url, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield fetchJson(url, options))['@context'];\n });\n}\nexports.fetchContext = fetchContext;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lookupNamespace\"), exports);\n__exportStar(require(\"./lookupPrefix\"), exports);\n__exportStar(require(\"./lookupAllPrefixes\"), exports);\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupAllPrefixes = void 0;\nconst fetchContext_1 = require(\"./fetchContext\");\n/**\n * Use prefix.cc to look up all recorded prefixes\n */\nfunction lookupAllPrefixes(options) {\n return __awaiter(this, void 0, void 0, function* () {\n return (0, fetchContext_1.fetchContext)('https://prefix.cc/context', options);\n });\n}\nexports.lookupAllPrefixes = lookupAllPrefixes;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupUri = void 0;\nconst fetchContext_1 = require(\"./fetchContext\");\n/**\n * Use prefix.cc to look up the namespace associated with a given prefix.\n * Errors if one cannot be found.\n *\n * @param prefix The prefix of which to obtain the namespace\n * @param options Optional fetch function to use\n */\nfunction lookupUri(prefix, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const uri = (yield (0, fetchContext_1.fetchContext)(`https://prefix.cc/${prefix}.file.jsonld`, options))[prefix];\n if (typeof uri !== 'string') {\n throw new Error(`Expected uri to be a string, received: ${uri} of type ${typeof uri}`);\n }\n return uri;\n });\n}\nexports.lookupUri = lookupUri;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupPrefix = void 0;\nconst fetchContext_1 = require(\"./fetchContext\");\n/**\n * Use prefix.cc to look up the prefix for a URI namespace, rejects if there is an error in\n * looking up the prefix, or if no prefixes are returned\n *\n * @param uri The URI to obtain a prefix for\n * @param options Optional fetch function to use\n */\nfunction lookupPrefix(uri, options) {\n return __awaiter(this, void 0, void 0, function* () {\n // Create the correct url to lookup including search parameters\n const url = new URL('https://prefix.cc/reverse');\n url.searchParams.append('uri', uri);\n url.searchParams.append('format', 'jsonld');\n const prefixes = Object.keys(yield (0, fetchContext_1.fetchContext)(url, options));\n if (prefixes.length === 0) {\n throw new Error('No prefixes returned');\n }\n return prefixes[0];\n });\n}\nexports.lookupPrefix = lookupPrefix;\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SaxesParser = exports.EVENTS = void 0;\nconst ed5 = require(\"xmlchars/xml/1.0/ed5\");\nconst ed2 = require(\"xmlchars/xml/1.1/ed2\");\nconst NSed3 = require(\"xmlchars/xmlns/1.0/ed3\");\nvar isS = ed5.isS;\nvar isChar10 = ed5.isChar;\nvar isNameStartChar = ed5.isNameStartChar;\nvar isNameChar = ed5.isNameChar;\nvar S_LIST = ed5.S_LIST;\nvar NAME_RE = ed5.NAME_RE;\nvar isChar11 = ed2.isChar;\nvar isNCNameStartChar = NSed3.isNCNameStartChar;\nvar isNCNameChar = NSed3.isNCNameChar;\nvar NC_NAME_RE = NSed3.NC_NAME_RE;\nconst XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\nconst XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\nconst rootNS = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n __proto__: null,\n xml: XML_NAMESPACE,\n xmlns: XMLNS_NAMESPACE,\n};\nconst XML_ENTITIES = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n __proto__: null,\n amp: \"&\",\n gt: \">\",\n lt: \"<\",\n quot: \"\\\"\",\n apos: \"'\",\n};\n// EOC: end-of-chunk\nconst EOC = -1;\nconst NL_LIKE = -2;\nconst S_BEGIN = 0; // Initial state.\nconst S_BEGIN_WHITESPACE = 1; // leading whitespace\nconst S_DOCTYPE = 2; // \nconst TAB = 9;\nconst NL = 0xA;\nconst CR = 0xD;\nconst SPACE = 0x20;\nconst BANG = 0x21;\nconst DQUOTE = 0x22;\nconst AMP = 0x26;\nconst SQUOTE = 0x27;\nconst MINUS = 0x2D;\nconst FORWARD_SLASH = 0x2F;\nconst SEMICOLON = 0x3B;\nconst LESS = 0x3C;\nconst EQUAL = 0x3D;\nconst GREATER = 0x3E;\nconst QUESTION = 0x3F;\nconst OPEN_BRACKET = 0x5B;\nconst CLOSE_BRACKET = 0x5D;\nconst NEL = 0x85;\nconst LS = 0x2028; // Line Separator\nconst isQuote = (c) => c === DQUOTE || c === SQUOTE;\nconst QUOTES = [DQUOTE, SQUOTE];\nconst DOCTYPE_TERMINATOR = [...QUOTES, OPEN_BRACKET, GREATER];\nconst DTD_TERMINATOR = [...QUOTES, LESS, CLOSE_BRACKET];\nconst XML_DECL_NAME_TERMINATOR = [EQUAL, QUESTION, ...S_LIST];\nconst ATTRIB_VALUE_UNQUOTED_TERMINATOR = [...S_LIST, GREATER, AMP, LESS];\nfunction nsPairCheck(parser, prefix, uri) {\n switch (prefix) {\n case \"xml\":\n if (uri !== XML_NAMESPACE) {\n parser.fail(`xml prefix must be bound to ${XML_NAMESPACE}.`);\n }\n break;\n case \"xmlns\":\n if (uri !== XMLNS_NAMESPACE) {\n parser.fail(`xmlns prefix must be bound to ${XMLNS_NAMESPACE}.`);\n }\n break;\n default:\n }\n switch (uri) {\n case XMLNS_NAMESPACE:\n parser.fail(prefix === \"\" ?\n `the default namespace may not be set to ${uri}.` :\n `may not assign a prefix (even \"xmlns\") to the URI \\\n${XMLNS_NAMESPACE}.`);\n break;\n case XML_NAMESPACE:\n switch (prefix) {\n case \"xml\":\n // Assinging the XML namespace to \"xml\" is fine.\n break;\n case \"\":\n parser.fail(`the default namespace may not be set to ${uri}.`);\n break;\n default:\n parser.fail(\"may not assign the xml namespace to another prefix.\");\n }\n break;\n default:\n }\n}\nfunction nsMappingCheck(parser, mapping) {\n for (const local of Object.keys(mapping)) {\n nsPairCheck(parser, local, mapping[local]);\n }\n}\nconst isNCName = (name) => NC_NAME_RE.test(name);\nconst isName = (name) => NAME_RE.test(name);\nconst FORBIDDEN_START = 0;\nconst FORBIDDEN_BRACKET = 1;\nconst FORBIDDEN_BRACKET_BRACKET = 2;\n/**\n * The list of supported events.\n */\nexports.EVENTS = [\n \"xmldecl\",\n \"text\",\n \"processinginstruction\",\n \"doctype\",\n \"comment\",\n \"opentagstart\",\n \"attribute\",\n \"opentag\",\n \"closetag\",\n \"cdata\",\n \"error\",\n \"end\",\n \"ready\",\n];\nconst EVENT_NAME_TO_HANDLER_NAME = {\n xmldecl: \"xmldeclHandler\",\n text: \"textHandler\",\n processinginstruction: \"piHandler\",\n doctype: \"doctypeHandler\",\n comment: \"commentHandler\",\n opentagstart: \"openTagStartHandler\",\n attribute: \"attributeHandler\",\n opentag: \"openTagHandler\",\n closetag: \"closeTagHandler\",\n cdata: \"cdataHandler\",\n error: \"errorHandler\",\n end: \"endHandler\",\n ready: \"readyHandler\",\n};\n// eslint-disable-next-line @typescript-eslint/ban-types\nclass SaxesParser {\n /**\n * Indicates whether or not the parser is closed. If ``true``, wait for\n * the ``ready`` event to write again.\n */\n get closed() {\n return this._closed;\n }\n /**\n * @param opt The parser options.\n */\n constructor(opt) {\n this.opt = opt !== null && opt !== void 0 ? opt : {};\n this.fragmentOpt = !!this.opt.fragment;\n const xmlnsOpt = this.xmlnsOpt = !!this.opt.xmlns;\n this.trackPosition = this.opt.position !== false;\n this.fileName = this.opt.fileName;\n if (xmlnsOpt) {\n // This is the function we use to perform name checks on PIs and entities.\n // When namespaces are used, colons are not allowed in PI target names or\n // entity names. So the check depends on whether namespaces are used. See:\n //\n // https://www.w3.org/XML/xml-names-19990114-errata.html\n // NE08\n //\n this.nameStartCheck = isNCNameStartChar;\n this.nameCheck = isNCNameChar;\n this.isName = isNCName;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.processAttribs = this.processAttribsNS;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.pushAttrib = this.pushAttribNS;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n this.ns = Object.assign({ __proto__: null }, rootNS);\n const additional = this.opt.additionalNamespaces;\n if (additional != null) {\n nsMappingCheck(this, additional);\n Object.assign(this.ns, additional);\n }\n }\n else {\n this.nameStartCheck = isNameStartChar;\n this.nameCheck = isNameChar;\n this.isName = isName;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.processAttribs = this.processAttribsPlain;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.pushAttrib = this.pushAttribPlain;\n }\n //\n // The order of the members in this table needs to correspond to the state\n // numbers given to the states that correspond to the methods being recorded\n // here.\n //\n this.stateTable = [\n /* eslint-disable @typescript-eslint/unbound-method */\n this.sBegin,\n this.sBeginWhitespace,\n this.sDoctype,\n this.sDoctypeQuote,\n this.sDTD,\n this.sDTDQuoted,\n this.sDTDOpenWaka,\n this.sDTDOpenWakaBang,\n this.sDTDComment,\n this.sDTDCommentEnding,\n this.sDTDCommentEnded,\n this.sDTDPI,\n this.sDTDPIEnding,\n this.sText,\n this.sEntity,\n this.sOpenWaka,\n this.sOpenWakaBang,\n this.sComment,\n this.sCommentEnding,\n this.sCommentEnded,\n this.sCData,\n this.sCDataEnding,\n this.sCDataEnding2,\n this.sPIFirstChar,\n this.sPIRest,\n this.sPIBody,\n this.sPIEnding,\n this.sXMLDeclNameStart,\n this.sXMLDeclName,\n this.sXMLDeclEq,\n this.sXMLDeclValueStart,\n this.sXMLDeclValue,\n this.sXMLDeclSeparator,\n this.sXMLDeclEnding,\n this.sOpenTag,\n this.sOpenTagSlash,\n this.sAttrib,\n this.sAttribName,\n this.sAttribNameSawWhite,\n this.sAttribValue,\n this.sAttribValueQuoted,\n this.sAttribValueClosed,\n this.sAttribValueUnquoted,\n this.sCloseTag,\n this.sCloseTagSawWhite,\n /* eslint-enable @typescript-eslint/unbound-method */\n ];\n this._init();\n }\n _init() {\n var _a;\n this.openWakaBang = \"\";\n this.text = \"\";\n this.name = \"\";\n this.piTarget = \"\";\n this.entity = \"\";\n this.q = null;\n this.tags = [];\n this.tag = null;\n this.topNS = null;\n this.chunk = \"\";\n this.chunkPosition = 0;\n this.i = 0;\n this.prevI = 0;\n this.carriedFromPrevious = undefined;\n this.forbiddenState = FORBIDDEN_START;\n this.attribList = [];\n // The logic is organized so as to minimize the need to check\n // this.opt.fragment while parsing.\n const { fragmentOpt } = this;\n this.state = fragmentOpt ? S_TEXT : S_BEGIN;\n // We want these to be all true if we are dealing with a fragment.\n this.reportedTextBeforeRoot = this.reportedTextAfterRoot = this.closedRoot =\n this.sawRoot = fragmentOpt;\n // An XML declaration is intially possible only when parsing whole\n // documents.\n this.xmlDeclPossible = !fragmentOpt;\n this.xmlDeclExpects = [\"version\"];\n this.entityReturnState = undefined;\n let { defaultXMLVersion } = this.opt;\n if (defaultXMLVersion === undefined) {\n if (this.opt.forceXMLVersion === true) {\n throw new Error(\"forceXMLVersion set but defaultXMLVersion is not set\");\n }\n defaultXMLVersion = \"1.0\";\n }\n this.setXMLVersion(defaultXMLVersion);\n this.positionAtNewLine = 0;\n this.doctype = false;\n this._closed = false;\n this.xmlDecl = {\n version: undefined,\n encoding: undefined,\n standalone: undefined,\n };\n this.line = 1;\n this.column = 0;\n this.ENTITIES = Object.create(XML_ENTITIES);\n (_a = this.readyHandler) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n /**\n * The stream position the parser is currently looking at. This field is\n * zero-based.\n *\n * This field is not based on counting Unicode characters but is to be\n * interpreted as a plain index into a JavaScript string.\n */\n get position() {\n return this.chunkPosition + this.i;\n }\n /**\n * The column number of the next character to be read by the parser. *\n * This field is zero-based. (The first column in a line is 0.)\n *\n * This field reports the index at which the next character would be in the\n * line if the line were represented as a JavaScript string. Note that this\n * *can* be different to a count based on the number of *Unicode characters*\n * due to how JavaScript handles astral plane characters.\n *\n * See [[column]] for a number that corresponds to a count of Unicode\n * characters.\n */\n get columnIndex() {\n return this.position - this.positionAtNewLine;\n }\n /**\n * Set an event listener on an event. The parser supports one handler per\n * event type. If you try to set an event handler over an existing handler,\n * the old handler is silently overwritten.\n *\n * @param name The event to listen to.\n *\n * @param handler The handler to set.\n */\n on(name, handler) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n this[EVENT_NAME_TO_HANDLER_NAME[name]] = handler;\n }\n /**\n * Unset an event handler.\n *\n * @parma name The event to stop listening to.\n */\n off(name) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n this[EVENT_NAME_TO_HANDLER_NAME[name]] = undefined;\n }\n /**\n * Make an error object. The error object will have a message that contains\n * the ``fileName`` option passed at the creation of the parser. If position\n * tracking was turned on, it will also have line and column number\n * information.\n *\n * @param message The message describing the error to report.\n *\n * @returns An error object with a properly formatted message.\n */\n makeError(message) {\n var _a;\n let msg = (_a = this.fileName) !== null && _a !== void 0 ? _a : \"\";\n if (this.trackPosition) {\n if (msg.length > 0) {\n msg += \":\";\n }\n msg += `${this.line}:${this.column}`;\n }\n if (msg.length > 0) {\n msg += \": \";\n }\n return new Error(msg + message);\n }\n /**\n * Report a parsing error. This method is made public so that client code may\n * check for issues that are outside the scope of this project and can report\n * errors.\n *\n * @param message The error to report.\n *\n * @returns this\n */\n fail(message) {\n const err = this.makeError(message);\n const handler = this.errorHandler;\n if (handler === undefined) {\n throw err;\n }\n else {\n handler(err);\n }\n return this;\n }\n /**\n * Write a XML data to the parser.\n *\n * @param chunk The XML data to write.\n *\n * @returns this\n */\n // We do need object for the type here. Yes, it often causes problems\n // but not in this case.\n write(chunk) {\n if (this.closed) {\n return this.fail(\"cannot write after close; assign an onready handler.\");\n }\n let end = false;\n if (chunk === null) {\n // We cannot return immediately because carriedFromPrevious may need\n // processing.\n end = true;\n chunk = \"\";\n }\n else if (typeof chunk === \"object\") {\n chunk = chunk.toString();\n }\n // We checked if performing a pre-decomposition of the string into an array\n // of single complete characters (``Array.from(chunk)``) would be faster\n // than the current repeated calls to ``charCodeAt``. As of August 2018, it\n // isn't. (There may be Node-specific code that would perform faster than\n // ``Array.from`` but don't want to be dependent on Node.)\n if (this.carriedFromPrevious !== undefined) {\n // The previous chunk had char we must carry over.\n chunk = `${this.carriedFromPrevious}${chunk}`;\n this.carriedFromPrevious = undefined;\n }\n let limit = chunk.length;\n const lastCode = chunk.charCodeAt(limit - 1);\n if (!end &&\n // A trailing CR or surrogate must be carried over to the next\n // chunk.\n (lastCode === CR || (lastCode >= 0xD800 && lastCode <= 0xDBFF))) {\n // The chunk ends with a character that must be carried over. We cannot\n // know how to handle it until we get the next chunk or the end of the\n // stream. So save it for later.\n this.carriedFromPrevious = chunk[limit - 1];\n limit--;\n chunk = chunk.slice(0, limit);\n }\n const { stateTable } = this;\n this.chunk = chunk;\n this.i = 0;\n while (this.i < limit) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n stateTable[this.state].call(this);\n }\n this.chunkPosition += limit;\n return end ? this.end() : this;\n }\n /**\n * Close the current stream. Perform final well-formedness checks and reset\n * the parser tstate.\n *\n * @returns this\n */\n close() {\n return this.write(null);\n }\n /**\n * Get a single code point out of the current chunk. This updates the current\n * position if we do position tracking.\n *\n * This is the algorithm to use for XML 1.0.\n *\n * @returns The character read.\n */\n getCode10() {\n const { chunk, i } = this;\n this.prevI = i;\n // Yes, we do this instead of doing this.i++. Doing it this way, we do not\n // read this.i again, which is a bit faster.\n this.i = i + 1;\n if (i >= chunk.length) {\n return EOC;\n }\n // Using charCodeAt and handling the surrogates ourselves is faster\n // than using codePointAt.\n const code = chunk.charCodeAt(i);\n this.column++;\n if (code < 0xD800) {\n if (code >= SPACE || code === TAB) {\n return code;\n }\n switch (code) {\n case NL:\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL;\n case CR:\n // We may get NaN if we read past the end of the chunk, which is fine.\n if (chunk.charCodeAt(i + 1) === NL) {\n // A \\r\\n sequence is converted to \\n so we have to skip over the\n // next character. We already know it has a size of 1 so ++ is fine\n // here.\n this.i = i + 2;\n }\n // Otherwise, a \\r is just converted to \\n, so we don't have to skip\n // ahead.\n // In either case, \\r becomes \\n.\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL_LIKE;\n default:\n // If we get here, then code < SPACE and it is not NL CR or TAB.\n this.fail(\"disallowed character.\");\n return code;\n }\n }\n if (code > 0xDBFF) {\n // This is a specialized version of isChar10 that takes into account\n // that in this context code > 0xDBFF and code <= 0xFFFF. So it does not\n // test cases that don't need testing.\n if (!(code >= 0xE000 && code <= 0xFFFD)) {\n this.fail(\"disallowed character.\");\n }\n return code;\n }\n const final = 0x10000 + ((code - 0xD800) * 0x400) +\n (chunk.charCodeAt(i + 1) - 0xDC00);\n this.i = i + 2;\n // This is a specialized version of isChar10 that takes into account that in\n // this context necessarily final >= 0x10000.\n if (final > 0x10FFFF) {\n this.fail(\"disallowed character.\");\n }\n return final;\n }\n /**\n * Get a single code point out of the current chunk. This updates the current\n * position if we do position tracking.\n *\n * This is the algorithm to use for XML 1.1.\n *\n * @returns {number} The character read.\n */\n getCode11() {\n const { chunk, i } = this;\n this.prevI = i;\n // Yes, we do this instead of doing this.i++. Doing it this way, we do not\n // read this.i again, which is a bit faster.\n this.i = i + 1;\n if (i >= chunk.length) {\n return EOC;\n }\n // Using charCodeAt and handling the surrogates ourselves is faster\n // than using codePointAt.\n const code = chunk.charCodeAt(i);\n this.column++;\n if (code < 0xD800) {\n if ((code > 0x1F && code < 0x7F) || (code > 0x9F && code !== LS) ||\n code === TAB) {\n return code;\n }\n switch (code) {\n case NL: // 0xA\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL;\n case CR: { // 0xD\n // We may get NaN if we read past the end of the chunk, which is\n // fine.\n const next = chunk.charCodeAt(i + 1);\n if (next === NL || next === NEL) {\n // A CR NL or CR NEL sequence is converted to NL so we have to skip\n // over the next character. We already know it has a size of 1.\n this.i = i + 2;\n }\n // Otherwise, a CR is just converted to NL, no skip.\n }\n /* yes, fall through */\n case NEL: // 0x85\n case LS: // Ox2028\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL_LIKE;\n default:\n this.fail(\"disallowed character.\");\n return code;\n }\n }\n if (code > 0xDBFF) {\n // This is a specialized version of isCharAndNotRestricted that takes into\n // account that in this context code > 0xDBFF and code <= 0xFFFF. So it\n // does not test cases that don't need testing.\n if (!(code >= 0xE000 && code <= 0xFFFD)) {\n this.fail(\"disallowed character.\");\n }\n return code;\n }\n const final = 0x10000 + ((code - 0xD800) * 0x400) +\n (chunk.charCodeAt(i + 1) - 0xDC00);\n this.i = i + 2;\n // This is a specialized version of isCharAndNotRestricted that takes into\n // account that in this context necessarily final >= 0x10000.\n if (final > 0x10FFFF) {\n this.fail(\"disallowed character.\");\n }\n return final;\n }\n /**\n * Like ``getCode`` but with the return value normalized so that ``NL`` is\n * returned for ``NL_LIKE``.\n */\n getCodeNorm() {\n const c = this.getCode();\n return c === NL_LIKE ? NL : c;\n }\n unget() {\n this.i = this.prevI;\n this.column--;\n }\n /**\n * Capture characters into a buffer until encountering one of a set of\n * characters.\n *\n * @param chars An array of codepoints. Encountering a character in the array\n * ends the capture. (``chars`` may safely contain ``NL``.)\n *\n * @return The character code that made the capture end, or ``EOC`` if we hit\n * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n * instead.\n */\n captureTo(chars) {\n let { i: start } = this;\n const { chunk } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCode();\n const isNLLike = c === NL_LIKE;\n const final = isNLLike ? NL : c;\n if (final === EOC || chars.includes(final)) {\n this.text += chunk.slice(start, this.prevI);\n return final;\n }\n if (isNLLike) {\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n start = this.i;\n }\n }\n }\n /**\n * Capture characters into a buffer until encountering a character.\n *\n * @param char The codepoint that ends the capture. **NOTE ``char`` MAY NOT\n * CONTAIN ``NL``.** Passing ``NL`` will result in buggy behavior.\n *\n * @return ``true`` if we ran into the character. Otherwise, we ran into the\n * end of the current chunk.\n */\n captureToChar(char) {\n let { i: start } = this;\n const { chunk } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let c = this.getCode();\n switch (c) {\n case NL_LIKE:\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n start = this.i;\n c = NL;\n break;\n case EOC:\n this.text += chunk.slice(start);\n return false;\n default:\n }\n if (c === char) {\n this.text += chunk.slice(start, this.prevI);\n return true;\n }\n }\n }\n /**\n * Capture characters that satisfy ``isNameChar`` into the ``name`` field of\n * this parser.\n *\n * @return The character code that made the test fail, or ``EOC`` if we hit\n * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n * instead.\n */\n captureNameChars() {\n const { chunk, i: start } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCode();\n if (c === EOC) {\n this.name += chunk.slice(start);\n return EOC;\n }\n // NL is not a name char so we don't have to test specifically for it.\n if (!isNameChar(c)) {\n this.name += chunk.slice(start, this.prevI);\n return c === NL_LIKE ? NL : c;\n }\n }\n }\n /**\n * Skip white spaces.\n *\n * @return The character that ended the skip, or ``EOC`` if we hit\n * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n * instead.\n */\n skipSpaces() {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCodeNorm();\n if (c === EOC || !isS(c)) {\n return c;\n }\n }\n }\n setXMLVersion(version) {\n this.currentXMLVersion = version;\n /* eslint-disable @typescript-eslint/unbound-method */\n if (version === \"1.0\") {\n this.isChar = isChar10;\n this.getCode = this.getCode10;\n }\n else {\n this.isChar = isChar11;\n this.getCode = this.getCode11;\n }\n /* eslint-enable @typescript-eslint/unbound-method */\n }\n // STATE ENGINE METHODS\n // This needs to be a state separate from S_BEGIN_WHITESPACE because we want\n // to be sure never to come back to this state later.\n sBegin() {\n // We are essentially peeking at the first character of the chunk. Since\n // S_BEGIN can be in effect only when we start working on the first chunk,\n // the index at which we must look is necessarily 0. Note also that the\n // following test does not depend on decoding surrogates.\n // If the initial character is 0xFEFF, ignore it.\n if (this.chunk.charCodeAt(0) === 0xFEFF) {\n this.i++;\n this.column++;\n }\n this.state = S_BEGIN_WHITESPACE;\n }\n sBeginWhitespace() {\n // We need to know whether we've encountered spaces or not because as soon\n // as we run into a space, an XML declaration is no longer possible. Rather\n // than slow down skipSpaces even in places where we don't care whether it\n // skipped anything or not, we check whether prevI is equal to the value of\n // i from before we skip spaces.\n const iBefore = this.i;\n const c = this.skipSpaces();\n if (this.prevI !== iBefore) {\n this.xmlDeclPossible = false;\n }\n switch (c) {\n case LESS:\n this.state = S_OPEN_WAKA;\n // We could naively call closeText but in this state, it is not normal\n // to have text be filled with any data.\n if (this.text.length !== 0) {\n throw new Error(\"no-empty text at start\");\n }\n break;\n case EOC:\n break;\n default:\n this.unget();\n this.state = S_TEXT;\n this.xmlDeclPossible = false;\n }\n }\n sDoctype() {\n var _a;\n const c = this.captureTo(DOCTYPE_TERMINATOR);\n switch (c) {\n case GREATER: {\n (_a = this.doctypeHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n this.text = \"\";\n this.state = S_TEXT;\n this.doctype = true; // just remember that we saw it.\n break;\n }\n case EOC:\n break;\n default:\n this.text += String.fromCodePoint(c);\n if (c === OPEN_BRACKET) {\n this.state = S_DTD;\n }\n else if (isQuote(c)) {\n this.state = S_DOCTYPE_QUOTE;\n this.q = c;\n }\n }\n }\n sDoctypeQuote() {\n const q = this.q;\n if (this.captureToChar(q)) {\n this.text += String.fromCodePoint(q);\n this.q = null;\n this.state = S_DOCTYPE;\n }\n }\n sDTD() {\n const c = this.captureTo(DTD_TERMINATOR);\n if (c === EOC) {\n return;\n }\n this.text += String.fromCodePoint(c);\n if (c === CLOSE_BRACKET) {\n this.state = S_DOCTYPE;\n }\n else if (c === LESS) {\n this.state = S_DTD_OPEN_WAKA;\n }\n else if (isQuote(c)) {\n this.state = S_DTD_QUOTED;\n this.q = c;\n }\n }\n sDTDQuoted() {\n const q = this.q;\n if (this.captureToChar(q)) {\n this.text += String.fromCodePoint(q);\n this.state = S_DTD;\n this.q = null;\n }\n }\n sDTDOpenWaka() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n switch (c) {\n case BANG:\n this.state = S_DTD_OPEN_WAKA_BANG;\n this.openWakaBang = \"\";\n break;\n case QUESTION:\n this.state = S_DTD_PI;\n break;\n default:\n this.state = S_DTD;\n }\n }\n sDTDOpenWakaBang() {\n const char = String.fromCodePoint(this.getCodeNorm());\n const owb = this.openWakaBang += char;\n this.text += char;\n if (owb !== \"-\") {\n this.state = owb === \"--\" ? S_DTD_COMMENT : S_DTD;\n this.openWakaBang = \"\";\n }\n }\n sDTDComment() {\n if (this.captureToChar(MINUS)) {\n this.text += \"-\";\n this.state = S_DTD_COMMENT_ENDING;\n }\n }\n sDTDCommentEnding() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n this.state = c === MINUS ? S_DTD_COMMENT_ENDED : S_DTD_COMMENT;\n }\n sDTDCommentEnded() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n if (c === GREATER) {\n this.state = S_DTD;\n }\n else {\n this.fail(\"malformed comment.\");\n // will be recorded as\n // a comment of \" blah -- bloo \"\n this.state = S_DTD_COMMENT;\n }\n }\n sDTDPI() {\n if (this.captureToChar(QUESTION)) {\n this.text += \"?\";\n this.state = S_DTD_PI_ENDING;\n }\n }\n sDTDPIEnding() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n if (c === GREATER) {\n this.state = S_DTD;\n }\n }\n sText() {\n //\n // We did try a version of saxes where the S_TEXT state was split in two\n // states: one for text inside the root element, and one for text\n // outside. This was avoiding having to test this.tags.length to decide\n // what implementation to actually use.\n //\n // Peformance testing on gigabyte-size files did not show any advantage to\n // using the two states solution instead of the current one. Conversely, it\n // made the code a bit more complicated elsewhere. For instance, a comment\n // can appear before the root element so when a comment ended it was\n // necessary to determine whether to return to the S_TEXT state or to the\n // new text-outside-root state.\n //\n if (this.tags.length !== 0) {\n this.handleTextInRoot();\n }\n else {\n this.handleTextOutsideRoot();\n }\n }\n sEntity() {\n // This is essentially a specialized version of captureToChar(SEMICOLON...)\n let { i: start } = this;\n const { chunk } = this;\n // eslint-disable-next-line no-labels, no-restricted-syntax\n loop: \n // eslint-disable-next-line no-constant-condition\n while (true) {\n switch (this.getCode()) {\n case NL_LIKE:\n this.entity += `${chunk.slice(start, this.prevI)}\\n`;\n start = this.i;\n break;\n case SEMICOLON: {\n const { entityReturnState } = this;\n const entity = this.entity + chunk.slice(start, this.prevI);\n this.state = entityReturnState;\n let parsed;\n if (entity === \"\") {\n this.fail(\"empty entity name.\");\n parsed = \"&;\";\n }\n else {\n parsed = this.parseEntity(entity);\n this.entity = \"\";\n }\n if (entityReturnState !== S_TEXT || this.textHandler !== undefined) {\n this.text += parsed;\n }\n // eslint-disable-next-line no-labels\n break loop;\n }\n case EOC:\n this.entity += chunk.slice(start);\n // eslint-disable-next-line no-labels\n break loop;\n default:\n }\n }\n }\n sOpenWaka() {\n // Reminder: a state handler is called with at least one character\n // available in the current chunk. So the first call to get code inside of\n // a state handler cannot return ``EOC``. That's why we don't test\n // for it.\n const c = this.getCode();\n // either a /, ?, !, or text is coming next.\n if (isNameStartChar(c)) {\n this.state = S_OPEN_TAG;\n this.unget();\n this.xmlDeclPossible = false;\n }\n else {\n switch (c) {\n case FORWARD_SLASH:\n this.state = S_CLOSE_TAG;\n this.xmlDeclPossible = false;\n break;\n case BANG:\n this.state = S_OPEN_WAKA_BANG;\n this.openWakaBang = \"\";\n this.xmlDeclPossible = false;\n break;\n case QUESTION:\n this.state = S_PI_FIRST_CHAR;\n break;\n default:\n this.fail(\"disallowed character in tag name\");\n this.state = S_TEXT;\n this.xmlDeclPossible = false;\n }\n }\n }\n sOpenWakaBang() {\n this.openWakaBang += String.fromCodePoint(this.getCodeNorm());\n switch (this.openWakaBang) {\n case \"[CDATA[\":\n if (!this.sawRoot && !this.reportedTextBeforeRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextBeforeRoot = true;\n }\n if (this.closedRoot && !this.reportedTextAfterRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextAfterRoot = true;\n }\n this.state = S_CDATA;\n this.openWakaBang = \"\";\n break;\n case \"--\":\n this.state = S_COMMENT;\n this.openWakaBang = \"\";\n break;\n case \"DOCTYPE\":\n this.state = S_DOCTYPE;\n if (this.doctype || this.sawRoot) {\n this.fail(\"inappropriately located doctype declaration.\");\n }\n this.openWakaBang = \"\";\n break;\n default:\n // 7 happens to be the maximum length of the string that can possibly\n // match one of the cases above.\n if (this.openWakaBang.length >= 7) {\n this.fail(\"incorrect syntax.\");\n }\n }\n }\n sComment() {\n if (this.captureToChar(MINUS)) {\n this.state = S_COMMENT_ENDING;\n }\n }\n sCommentEnding() {\n var _a;\n const c = this.getCodeNorm();\n if (c === MINUS) {\n this.state = S_COMMENT_ENDED;\n (_a = this.commentHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n this.text = \"\";\n }\n else {\n this.text += `-${String.fromCodePoint(c)}`;\n this.state = S_COMMENT;\n }\n }\n sCommentEnded() {\n const c = this.getCodeNorm();\n if (c !== GREATER) {\n this.fail(\"malformed comment.\");\n // will be recorded as\n // a comment of \" blah -- bloo \"\n this.text += `--${String.fromCodePoint(c)}`;\n this.state = S_COMMENT;\n }\n else {\n this.state = S_TEXT;\n }\n }\n sCData() {\n if (this.captureToChar(CLOSE_BRACKET)) {\n this.state = S_CDATA_ENDING;\n }\n }\n sCDataEnding() {\n const c = this.getCodeNorm();\n if (c === CLOSE_BRACKET) {\n this.state = S_CDATA_ENDING_2;\n }\n else {\n this.text += `]${String.fromCodePoint(c)}`;\n this.state = S_CDATA;\n }\n }\n sCDataEnding2() {\n var _a;\n const c = this.getCodeNorm();\n switch (c) {\n case GREATER: {\n (_a = this.cdataHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n this.text = \"\";\n this.state = S_TEXT;\n break;\n }\n case CLOSE_BRACKET:\n this.text += \"]\";\n break;\n default:\n this.text += `]]${String.fromCodePoint(c)}`;\n this.state = S_CDATA;\n }\n }\n // We need this separate state to check the first character fo the pi target\n // with this.nameStartCheck which allows less characters than this.nameCheck.\n sPIFirstChar() {\n const c = this.getCodeNorm();\n // This is first because in the case where the file is well-formed this is\n // the branch taken. We optimize for well-formedness.\n if (this.nameStartCheck(c)) {\n this.piTarget += String.fromCodePoint(c);\n this.state = S_PI_REST;\n }\n else if (c === QUESTION || isS(c)) {\n this.fail(\"processing instruction without a target.\");\n this.state = c === QUESTION ? S_PI_ENDING : S_PI_BODY;\n }\n else {\n this.fail(\"disallowed character in processing instruction name.\");\n this.piTarget += String.fromCodePoint(c);\n this.state = S_PI_REST;\n }\n }\n sPIRest() {\n // Capture characters into a piTarget while ``this.nameCheck`` run on the\n // character read returns true.\n const { chunk, i: start } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCodeNorm();\n if (c === EOC) {\n this.piTarget += chunk.slice(start);\n return;\n }\n // NL cannot satisfy this.nameCheck so we don't have to test specifically\n // for it.\n if (!this.nameCheck(c)) {\n this.piTarget += chunk.slice(start, this.prevI);\n const isQuestion = c === QUESTION;\n if (isQuestion || isS(c)) {\n if (this.piTarget === \"xml\") {\n if (!this.xmlDeclPossible) {\n this.fail(\"an XML declaration must be at the start of the document.\");\n }\n this.state = isQuestion ? S_XML_DECL_ENDING : S_XML_DECL_NAME_START;\n }\n else {\n this.state = isQuestion ? S_PI_ENDING : S_PI_BODY;\n }\n }\n else {\n this.fail(\"disallowed character in processing instruction name.\");\n this.piTarget += String.fromCodePoint(c);\n }\n break;\n }\n }\n }\n sPIBody() {\n if (this.text.length === 0) {\n const c = this.getCodeNorm();\n if (c === QUESTION) {\n this.state = S_PI_ENDING;\n }\n else if (!isS(c)) {\n this.text = String.fromCodePoint(c);\n }\n }\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n else if (this.captureToChar(QUESTION)) {\n this.state = S_PI_ENDING;\n }\n }\n sPIEnding() {\n var _a;\n const c = this.getCodeNorm();\n if (c === GREATER) {\n const { piTarget } = this;\n if (piTarget.toLowerCase() === \"xml\") {\n this.fail(\"the XML declaration must appear at the start of the document.\");\n }\n (_a = this.piHandler) === null || _a === void 0 ? void 0 : _a.call(this, {\n target: piTarget,\n body: this.text,\n });\n this.piTarget = this.text = \"\";\n this.state = S_TEXT;\n }\n else if (c === QUESTION) {\n // We ran into ?? as part of a processing instruction. We initially took\n // the first ? as a sign that the PI was ending, but it is not. So we have\n // to add it to the body but we take the new ? as a sign that the PI is\n // ending.\n this.text += \"?\";\n }\n else {\n this.text += `?${String.fromCodePoint(c)}`;\n this.state = S_PI_BODY;\n }\n this.xmlDeclPossible = false;\n }\n sXMLDeclNameStart() {\n const c = this.skipSpaces();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n // It is valid to go to S_XML_DECL_ENDING from this state.\n this.state = S_XML_DECL_ENDING;\n return;\n }\n if (c !== EOC) {\n this.state = S_XML_DECL_NAME;\n this.name = String.fromCodePoint(c);\n }\n }\n sXMLDeclName() {\n const c = this.captureTo(XML_DECL_NAME_TERMINATOR);\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.name += this.text;\n this.text = \"\";\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (!(isS(c) || c === EQUAL)) {\n return;\n }\n this.name += this.text;\n this.text = \"\";\n if (!this.xmlDeclExpects.includes(this.name)) {\n switch (this.name.length) {\n case 0:\n this.fail(\"did not expect any more name/value pairs.\");\n break;\n case 1:\n this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);\n break;\n default:\n this.fail(`expected one of ${this.xmlDeclExpects.join(\", \")}`);\n }\n }\n this.state = c === EQUAL ? S_XML_DECL_VALUE_START : S_XML_DECL_EQ;\n }\n sXMLDeclEq() {\n const c = this.getCodeNorm();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (isS(c)) {\n return;\n }\n if (c !== EQUAL) {\n this.fail(\"value required.\");\n }\n this.state = S_XML_DECL_VALUE_START;\n }\n sXMLDeclValueStart() {\n const c = this.getCodeNorm();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (isS(c)) {\n return;\n }\n if (!isQuote(c)) {\n this.fail(\"value must be quoted.\");\n this.q = SPACE;\n }\n else {\n this.q = c;\n }\n this.state = S_XML_DECL_VALUE;\n }\n sXMLDeclValue() {\n const c = this.captureTo([this.q, QUESTION]);\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.text = \"\";\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (c === EOC) {\n return;\n }\n const value = this.text;\n this.text = \"\";\n switch (this.name) {\n case \"version\": {\n this.xmlDeclExpects = [\"encoding\", \"standalone\"];\n const version = value;\n this.xmlDecl.version = version;\n // This is the test specified by XML 1.0 but it is fine for XML 1.1.\n if (!/^1\\.[0-9]+$/.test(version)) {\n this.fail(\"version number must match /^1\\\\.[0-9]+$/.\");\n }\n // When forceXMLVersion is set, the XML declaration is ignored.\n else if (!this.opt.forceXMLVersion) {\n this.setXMLVersion(version);\n }\n break;\n }\n case \"encoding\":\n if (!/^[A-Za-z][A-Za-z0-9._-]*$/.test(value)) {\n this.fail(\"encoding value must match \\\n/^[A-Za-z0-9][A-Za-z0-9._-]*$/.\");\n }\n this.xmlDeclExpects = [\"standalone\"];\n this.xmlDecl.encoding = value;\n break;\n case \"standalone\":\n if (value !== \"yes\" && value !== \"no\") {\n this.fail(\"standalone value must match \\\"yes\\\" or \\\"no\\\".\");\n }\n this.xmlDeclExpects = [];\n this.xmlDecl.standalone = value;\n break;\n default:\n // We don't need to raise an error here since we've already raised one\n // when checking what name was expected.\n }\n this.name = \"\";\n this.state = S_XML_DECL_SEPARATOR;\n }\n sXMLDeclSeparator() {\n const c = this.getCodeNorm();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n // It is valid to go to S_XML_DECL_ENDING from this state.\n this.state = S_XML_DECL_ENDING;\n return;\n }\n if (!isS(c)) {\n this.fail(\"whitespace required.\");\n this.unget();\n }\n this.state = S_XML_DECL_NAME_START;\n }\n sXMLDeclEnding() {\n var _a;\n const c = this.getCodeNorm();\n if (c === GREATER) {\n if (this.piTarget !== \"xml\") {\n this.fail(\"processing instructions are not allowed before root.\");\n }\n else if (this.name !== \"version\" &&\n this.xmlDeclExpects.includes(\"version\")) {\n this.fail(\"XML declaration must contain a version.\");\n }\n (_a = this.xmldeclHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.xmlDecl);\n this.name = \"\";\n this.piTarget = this.text = \"\";\n this.state = S_TEXT;\n }\n else {\n // We got here because the previous character was a ?, but the question\n // mark character is not valid inside any of the XML declaration\n // name/value pairs.\n this.fail(\"The character ? is disallowed anywhere in XML declarations.\");\n }\n this.xmlDeclPossible = false;\n }\n sOpenTag() {\n var _a;\n const c = this.captureNameChars();\n if (c === EOC) {\n return;\n }\n const tag = this.tag = {\n name: this.name,\n attributes: Object.create(null),\n };\n this.name = \"\";\n if (this.xmlnsOpt) {\n this.topNS = tag.ns = Object.create(null);\n }\n (_a = this.openTagStartHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n this.sawRoot = true;\n if (!this.fragmentOpt && this.closedRoot) {\n this.fail(\"documents may contain only one root.\");\n }\n switch (c) {\n case GREATER:\n this.openTag();\n break;\n case FORWARD_SLASH:\n this.state = S_OPEN_TAG_SLASH;\n break;\n default:\n if (!isS(c)) {\n this.fail(\"disallowed character in tag name.\");\n }\n this.state = S_ATTRIB;\n }\n }\n sOpenTagSlash() {\n if (this.getCode() === GREATER) {\n this.openSelfClosingTag();\n }\n else {\n this.fail(\"forward-slash in opening tag not followed by >.\");\n this.state = S_ATTRIB;\n }\n }\n sAttrib() {\n const c = this.skipSpaces();\n if (c === EOC) {\n return;\n }\n if (isNameStartChar(c)) {\n this.unget();\n this.state = S_ATTRIB_NAME;\n }\n else if (c === GREATER) {\n this.openTag();\n }\n else if (c === FORWARD_SLASH) {\n this.state = S_OPEN_TAG_SLASH;\n }\n else {\n this.fail(\"disallowed character in attribute name.\");\n }\n }\n sAttribName() {\n const c = this.captureNameChars();\n if (c === EQUAL) {\n this.state = S_ATTRIB_VALUE;\n }\n else if (isS(c)) {\n this.state = S_ATTRIB_NAME_SAW_WHITE;\n }\n else if (c === GREATER) {\n this.fail(\"attribute without value.\");\n this.pushAttrib(this.name, this.name);\n this.name = this.text = \"\";\n this.openTag();\n }\n else if (c !== EOC) {\n this.fail(\"disallowed character in attribute name.\");\n }\n }\n sAttribNameSawWhite() {\n const c = this.skipSpaces();\n switch (c) {\n case EOC:\n return;\n case EQUAL:\n this.state = S_ATTRIB_VALUE;\n break;\n default:\n this.fail(\"attribute without value.\");\n // Should we do this???\n // this.tag.attributes[this.name] = \"\";\n this.text = \"\";\n this.name = \"\";\n if (c === GREATER) {\n this.openTag();\n }\n else if (isNameStartChar(c)) {\n this.unget();\n this.state = S_ATTRIB_NAME;\n }\n else {\n this.fail(\"disallowed character in attribute name.\");\n this.state = S_ATTRIB;\n }\n }\n }\n sAttribValue() {\n const c = this.getCodeNorm();\n if (isQuote(c)) {\n this.q = c;\n this.state = S_ATTRIB_VALUE_QUOTED;\n }\n else if (!isS(c)) {\n this.fail(\"unquoted attribute value.\");\n this.state = S_ATTRIB_VALUE_UNQUOTED;\n this.unget();\n }\n }\n sAttribValueQuoted() {\n // We deliberately do not use captureTo here. The specialized code we use\n // here is faster than using captureTo.\n const { q, chunk } = this;\n let { i: start } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n switch (this.getCode()) {\n case q:\n this.pushAttrib(this.name, this.text + chunk.slice(start, this.prevI));\n this.name = this.text = \"\";\n this.q = null;\n this.state = S_ATTRIB_VALUE_CLOSED;\n return;\n case AMP:\n this.text += chunk.slice(start, this.prevI);\n this.state = S_ENTITY;\n this.entityReturnState = S_ATTRIB_VALUE_QUOTED;\n return;\n case NL:\n case NL_LIKE:\n case TAB:\n this.text += `${chunk.slice(start, this.prevI)} `;\n start = this.i;\n break;\n case LESS:\n this.text += chunk.slice(start, this.prevI);\n this.fail(\"disallowed character.\");\n return;\n case EOC:\n this.text += chunk.slice(start);\n return;\n default:\n }\n }\n }\n sAttribValueClosed() {\n const c = this.getCodeNorm();\n if (isS(c)) {\n this.state = S_ATTRIB;\n }\n else if (c === GREATER) {\n this.openTag();\n }\n else if (c === FORWARD_SLASH) {\n this.state = S_OPEN_TAG_SLASH;\n }\n else if (isNameStartChar(c)) {\n this.fail(\"no whitespace between attributes.\");\n this.unget();\n this.state = S_ATTRIB_NAME;\n }\n else {\n this.fail(\"disallowed character in attribute name.\");\n }\n }\n sAttribValueUnquoted() {\n // We don't do anything regarding EOL or space handling for unquoted\n // attributes. We already have failed by the time we get here, and the\n // contract that saxes upholds states that upon failure, it is not safe to\n // rely on the data passed to event handlers (other than\n // ``onerror``). Passing \"bad\" data is not a problem.\n const c = this.captureTo(ATTRIB_VALUE_UNQUOTED_TERMINATOR);\n switch (c) {\n case AMP:\n this.state = S_ENTITY;\n this.entityReturnState = S_ATTRIB_VALUE_UNQUOTED;\n break;\n case LESS:\n this.fail(\"disallowed character.\");\n break;\n case EOC:\n break;\n default:\n if (this.text.includes(\"]]>\")) {\n this.fail(\"the string \\\"]]>\\\" is disallowed in char data.\");\n }\n this.pushAttrib(this.name, this.text);\n this.name = this.text = \"\";\n if (c === GREATER) {\n this.openTag();\n }\n else {\n this.state = S_ATTRIB;\n }\n }\n }\n sCloseTag() {\n const c = this.captureNameChars();\n if (c === GREATER) {\n this.closeTag();\n }\n else if (isS(c)) {\n this.state = S_CLOSE_TAG_SAW_WHITE;\n }\n else if (c !== EOC) {\n this.fail(\"disallowed character in closing tag.\");\n }\n }\n sCloseTagSawWhite() {\n switch (this.skipSpaces()) {\n case GREATER:\n this.closeTag();\n break;\n case EOC:\n break;\n default:\n this.fail(\"disallowed character in closing tag.\");\n }\n }\n // END OF STATE ENGINE METHODS\n handleTextInRoot() {\n // This is essentially a specialized version of captureTo which is optimized\n // for performing the ]]> check. A previous version of this code, checked\n // ``this.text`` for the presence of ]]>. It simplified the code but was\n // very costly when character data contained a lot of entities to be parsed.\n //\n // Since we are using a specialized loop, we also keep track of the presence\n // of ]]> in text data. The sequence ]]> is forbidden to appear as-is.\n //\n let { i: start, forbiddenState } = this;\n const { chunk, textHandler: handler } = this;\n // eslint-disable-next-line no-labels, no-restricted-syntax\n scanLoop: \n // eslint-disable-next-line no-constant-condition\n while (true) {\n switch (this.getCode()) {\n case LESS: {\n this.state = S_OPEN_WAKA;\n if (handler !== undefined) {\n const { text } = this;\n const slice = chunk.slice(start, this.prevI);\n if (text.length !== 0) {\n handler(text + slice);\n this.text = \"\";\n }\n else if (slice.length !== 0) {\n handler(slice);\n }\n }\n forbiddenState = FORBIDDEN_START;\n // eslint-disable-next-line no-labels\n break scanLoop;\n }\n case AMP:\n this.state = S_ENTITY;\n this.entityReturnState = S_TEXT;\n if (handler !== undefined) {\n this.text += chunk.slice(start, this.prevI);\n }\n forbiddenState = FORBIDDEN_START;\n // eslint-disable-next-line no-labels\n break scanLoop;\n case CLOSE_BRACKET:\n switch (forbiddenState) {\n case FORBIDDEN_START:\n forbiddenState = FORBIDDEN_BRACKET;\n break;\n case FORBIDDEN_BRACKET:\n forbiddenState = FORBIDDEN_BRACKET_BRACKET;\n break;\n case FORBIDDEN_BRACKET_BRACKET:\n break;\n default:\n throw new Error(\"impossible state\");\n }\n break;\n case GREATER:\n if (forbiddenState === FORBIDDEN_BRACKET_BRACKET) {\n this.fail(\"the string \\\"]]>\\\" is disallowed in char data.\");\n }\n forbiddenState = FORBIDDEN_START;\n break;\n case NL_LIKE:\n if (handler !== undefined) {\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n }\n start = this.i;\n forbiddenState = FORBIDDEN_START;\n break;\n case EOC:\n if (handler !== undefined) {\n this.text += chunk.slice(start);\n }\n // eslint-disable-next-line no-labels\n break scanLoop;\n default:\n forbiddenState = FORBIDDEN_START;\n }\n }\n this.forbiddenState = forbiddenState;\n }\n handleTextOutsideRoot() {\n // This is essentially a specialized version of captureTo which is optimized\n // for a specialized task. We keep track of the presence of non-space\n // characters in the text since these are errors when appearing outside the\n // document root element.\n let { i: start } = this;\n const { chunk, textHandler: handler } = this;\n let nonSpace = false;\n // eslint-disable-next-line no-labels, no-restricted-syntax\n outRootLoop: \n // eslint-disable-next-line no-constant-condition\n while (true) {\n const code = this.getCode();\n switch (code) {\n case LESS: {\n this.state = S_OPEN_WAKA;\n if (handler !== undefined) {\n const { text } = this;\n const slice = chunk.slice(start, this.prevI);\n if (text.length !== 0) {\n handler(text + slice);\n this.text = \"\";\n }\n else if (slice.length !== 0) {\n handler(slice);\n }\n }\n // eslint-disable-next-line no-labels\n break outRootLoop;\n }\n case AMP:\n this.state = S_ENTITY;\n this.entityReturnState = S_TEXT;\n if (handler !== undefined) {\n this.text += chunk.slice(start, this.prevI);\n }\n nonSpace = true;\n // eslint-disable-next-line no-labels\n break outRootLoop;\n case NL_LIKE:\n if (handler !== undefined) {\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n }\n start = this.i;\n break;\n case EOC:\n if (handler !== undefined) {\n this.text += chunk.slice(start);\n }\n // eslint-disable-next-line no-labels\n break outRootLoop;\n default:\n if (!isS(code)) {\n nonSpace = true;\n }\n }\n }\n if (!nonSpace) {\n return;\n }\n // We use the reportedTextBeforeRoot and reportedTextAfterRoot flags\n // to avoid reporting errors for every single character that is out of\n // place.\n if (!this.sawRoot && !this.reportedTextBeforeRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextBeforeRoot = true;\n }\n if (this.closedRoot && !this.reportedTextAfterRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextAfterRoot = true;\n }\n }\n pushAttribNS(name, value) {\n var _a;\n const { prefix, local } = this.qname(name);\n const attr = { name, prefix, local, value };\n this.attribList.push(attr);\n (_a = this.attributeHandler) === null || _a === void 0 ? void 0 : _a.call(this, attr);\n if (prefix === \"xmlns\") {\n const trimmed = value.trim();\n if (this.currentXMLVersion === \"1.0\" && trimmed === \"\") {\n this.fail(\"invalid attempt to undefine prefix in XML 1.0\");\n }\n this.topNS[local] = trimmed;\n nsPairCheck(this, local, trimmed);\n }\n else if (name === \"xmlns\") {\n const trimmed = value.trim();\n this.topNS[\"\"] = trimmed;\n nsPairCheck(this, \"\", trimmed);\n }\n }\n pushAttribPlain(name, value) {\n var _a;\n const attr = { name, value };\n this.attribList.push(attr);\n (_a = this.attributeHandler) === null || _a === void 0 ? void 0 : _a.call(this, attr);\n }\n /**\n * End parsing. This performs final well-formedness checks and resets the\n * parser to a clean state.\n *\n * @returns this\n */\n end() {\n var _a, _b;\n if (!this.sawRoot) {\n this.fail(\"document must contain a root element.\");\n }\n const { tags } = this;\n while (tags.length > 0) {\n const tag = tags.pop();\n this.fail(`unclosed tag: ${tag.name}`);\n }\n if ((this.state !== S_BEGIN) && (this.state !== S_TEXT)) {\n this.fail(\"unexpected end.\");\n }\n const { text } = this;\n if (text.length !== 0) {\n (_a = this.textHandler) === null || _a === void 0 ? void 0 : _a.call(this, text);\n this.text = \"\";\n }\n this._closed = true;\n (_b = this.endHandler) === null || _b === void 0 ? void 0 : _b.call(this);\n this._init();\n return this;\n }\n /**\n * Resolve a namespace prefix.\n *\n * @param prefix The prefix to resolve.\n *\n * @returns The namespace URI or ``undefined`` if the prefix is not defined.\n */\n resolve(prefix) {\n var _a, _b;\n let uri = this.topNS[prefix];\n if (uri !== undefined) {\n return uri;\n }\n const { tags } = this;\n for (let index = tags.length - 1; index >= 0; index--) {\n uri = tags[index].ns[prefix];\n if (uri !== undefined) {\n return uri;\n }\n }\n uri = this.ns[prefix];\n if (uri !== undefined) {\n return uri;\n }\n return (_b = (_a = this.opt).resolvePrefix) === null || _b === void 0 ? void 0 : _b.call(_a, prefix);\n }\n /**\n * Parse a qname into its prefix and local name parts.\n *\n * @param name The name to parse\n *\n * @returns\n */\n qname(name) {\n // This is faster than using name.split(\":\").\n const colon = name.indexOf(\":\");\n if (colon === -1) {\n return { prefix: \"\", local: name };\n }\n const local = name.slice(colon + 1);\n const prefix = name.slice(0, colon);\n if (prefix === \"\" || local === \"\" || local.includes(\":\")) {\n this.fail(`malformed name: ${name}.`);\n }\n return { prefix, local };\n }\n processAttribsNS() {\n var _a;\n const { attribList } = this;\n const tag = this.tag;\n {\n // add namespace info to tag\n const { prefix, local } = this.qname(tag.name);\n tag.prefix = prefix;\n tag.local = local;\n const uri = tag.uri = (_a = this.resolve(prefix)) !== null && _a !== void 0 ? _a : \"\";\n if (prefix !== \"\") {\n if (prefix === \"xmlns\") {\n this.fail(\"tags may not have \\\"xmlns\\\" as prefix.\");\n }\n if (uri === \"\") {\n this.fail(`unbound namespace prefix: ${JSON.stringify(prefix)}.`);\n tag.uri = prefix;\n }\n }\n }\n if (attribList.length === 0) {\n return;\n }\n const { attributes } = tag;\n const seen = new Set();\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (const attr of attribList) {\n const { name, prefix, local } = attr;\n let uri;\n let eqname;\n if (prefix === \"\") {\n uri = name === \"xmlns\" ? XMLNS_NAMESPACE : \"\";\n eqname = name;\n }\n else {\n uri = this.resolve(prefix);\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (uri === undefined) {\n this.fail(`unbound namespace prefix: ${JSON.stringify(prefix)}.`);\n uri = prefix;\n }\n eqname = `{${uri}}${local}`;\n }\n if (seen.has(eqname)) {\n this.fail(`duplicate attribute: ${eqname}.`);\n }\n seen.add(eqname);\n attr.uri = uri;\n attributes[name] = attr;\n }\n this.attribList = [];\n }\n processAttribsPlain() {\n const { attribList } = this;\n // eslint-disable-next-line prefer-destructuring\n const attributes = this.tag.attributes;\n for (const { name, value } of attribList) {\n if (attributes[name] !== undefined) {\n this.fail(`duplicate attribute: ${name}.`);\n }\n attributes[name] = value;\n }\n this.attribList = [];\n }\n /**\n * Handle a complete open tag. This parser code calls this once it has seen\n * the whole tag. This method checks for well-formeness and then emits\n * ``onopentag``.\n */\n openTag() {\n var _a;\n this.processAttribs();\n const { tags } = this;\n const tag = this.tag;\n tag.isSelfClosing = false;\n // There cannot be any pending text here due to the onopentagstart that was\n // necessarily emitted before we get here. So we do not check text.\n (_a = this.openTagHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n tags.push(tag);\n this.state = S_TEXT;\n this.name = \"\";\n }\n /**\n * Handle a complete self-closing tag. This parser code calls this once it has\n * seen the whole tag. This method checks for well-formeness and then emits\n * ``onopentag`` and ``onclosetag``.\n */\n openSelfClosingTag() {\n var _a, _b, _c;\n this.processAttribs();\n const { tags } = this;\n const tag = this.tag;\n tag.isSelfClosing = true;\n // There cannot be any pending text here due to the onopentagstart that was\n // necessarily emitted before we get here. So we do not check text.\n (_a = this.openTagHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n (_b = this.closeTagHandler) === null || _b === void 0 ? void 0 : _b.call(this, tag);\n const top = this.tag = (_c = tags[tags.length - 1]) !== null && _c !== void 0 ? _c : null;\n if (top === null) {\n this.closedRoot = true;\n }\n this.state = S_TEXT;\n this.name = \"\";\n }\n /**\n * Handle a complete close tag. This parser code calls this once it has seen\n * the whole tag. This method checks for well-formeness and then emits\n * ``onclosetag``.\n */\n closeTag() {\n const { tags, name } = this;\n // Our state after this will be S_TEXT, no matter what, and we can clear\n // tagName now.\n this.state = S_TEXT;\n this.name = \"\";\n if (name === \"\") {\n this.fail(\"weird empty close tag.\");\n this.text += \"\";\n return;\n }\n const handler = this.closeTagHandler;\n let l = tags.length;\n while (l-- > 0) {\n const tag = this.tag = tags.pop();\n this.topNS = tag.ns;\n handler === null || handler === void 0 ? void 0 : handler(tag);\n if (tag.name === name) {\n break;\n }\n this.fail(\"unexpected close tag.\");\n }\n if (l === 0) {\n this.closedRoot = true;\n }\n else if (l < 0) {\n this.fail(`unmatched closing tag: ${name}.`);\n this.text += ``;\n }\n }\n /**\n * Resolves an entity. Makes any necessary well-formedness checks.\n *\n * @param entity The entity to resolve.\n *\n * @returns The parsed entity.\n */\n parseEntity(entity) {\n // startsWith would be significantly slower for this test.\n if (entity[0] !== \"#\") {\n const defined = this.ENTITIES[entity];\n if (defined !== undefined) {\n return defined;\n }\n this.fail(this.isName(entity) ? \"undefined entity.\" :\n \"disallowed character in entity name.\");\n return `&${entity};`;\n }\n let num = NaN;\n if (entity[1] === \"x\" && /^#x[0-9a-f]+$/i.test(entity)) {\n num = parseInt(entity.slice(2), 16);\n }\n else if (/^#[0-9]+$/.test(entity)) {\n num = parseInt(entity.slice(1), 10);\n }\n // The character reference is required to match the CHAR production.\n if (!this.isChar(num)) {\n this.fail(\"malformed character entity.\");\n return `&${entity};`;\n }\n return String.fromCodePoint(num);\n }\n}\nexports.SaxesParser = SaxesParser;\n//# sourceMappingURL=saxes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableWebToNodeStream = void 0;\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * Converts a Web-API stream into Node stream.Readable class\n * Node stream readable: https://nodejs.org/api/stream.html#stream_readable_streams\n * Web API readable-stream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n * Node readable stream: https://nodejs.org/api/stream.html#stream_readable_streams\n */\nclass ReadableWebToNodeStream extends readable_stream_1.Readable {\n /**\n *\n * @param stream ReadableStream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n */\n constructor(stream) {\n super();\n this.bytesRead = 0;\n this.released = false;\n this.reader = stream.getReader();\n }\n /**\n * Implementation of readable._read(size).\n * When readable._read() is called, if data is available from the resource,\n * the implementation should begin pushing that data into the read queue\n * https://nodejs.org/api/stream.html#stream_readable_read_size_1\n */\n async _read() {\n // Should start pushing data into the queue\n // Read data from the underlying Web-API-readable-stream\n if (this.released) {\n this.push(null); // Signal EOF\n return;\n }\n this.pendingRead = this.reader.read();\n const data = await this.pendingRead;\n // clear the promise before pushing pushing new data to the queue and allow sequential calls to _read()\n delete this.pendingRead;\n if (data.done || this.released) {\n this.push(null); // Signal EOF\n }\n else {\n this.bytesRead += data.value.length;\n this.push(data.value); // Push new data to the queue\n }\n }\n /**\n * If there is no unresolved read call to Web-API Readable​Stream immediately returns;\n * otherwise will wait until the read is resolved.\n */\n async waitForReadToComplete() {\n if (this.pendingRead) {\n await this.pendingRead;\n }\n }\n /**\n * Close wrapper\n */\n async close() {\n await this.syncAndRelease();\n }\n async syncAndRelease() {\n this.released = true;\n await this.waitForReadToComplete();\n await this.reader.releaseLock();\n }\n}\nexports.ReadableWebToNodeStream = ReadableWebToNodeStream;\n//# sourceMappingURL=index.js.map","/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction promisifyEventEmitter(event, result) {\n return new Promise((resolve, reject) => {\n event.on('end', () => resolve(result));\n event.on('error', reject);\n });\n}\nfunction arrayifyStream(stream) {\n const array = [];\n return promisifyEventEmitter(stream.on('data', data => array.push(data)), array);\n}\nexports.default = arrayifyStream;\n//# sourceMappingURL=index.js.map","\nconst DynamicNestedLoopJoin = require('./join/DynamicNestedLoopJoin');\nconst HashJoin = require('./join/HashJoin');\nconst NestedLoopJoin = require('./join/NestedLoopJoin');\nconst SymmetricHashJoin = require('./join/SymmetricHashJoin');\n\nconst MergeStream = require('./util/MergeIterator');\n\nmodule.exports = {\n DynamicNestedLoopJoin,\n HashJoin,\n NestedLoopJoin,\n SymmetricHashJoin,\n\n MergeStream\n};","\nlet AsyncIterator = require('asynciterator');\nlet MultiTransformIterator = AsyncIterator.MultiTransformIterator;\nlet SimpleTransformIterator = AsyncIterator.SimpleTransformIterator;\n\n// Nested Loop Join, but the values of the inner loop are determined by each value of the outer loop, possibly reducing the number of necessary checks\nclass DynamicNestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, funRight, funJoin, options)\n {\n super(left, options);\n\n this.funRight = funRight;\n this.funJoin = funJoin;\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.funRight(leftItem), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = DynamicNestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Hash_join\nclass HashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.addedDataListener = false;\n this.left = left;\n this.right = right;\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.leftMap = new Map();\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.readable = false;\n\n this.left.on('end', allowJoining.bind(this));\n\n function allowJoining ()\n {\n this.readable = true;\n this.right.on('readable', () => this.readable = true);\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n this.on('newListener', (eventName) =>\n {\n if (eventName === 'data')\n {\n this._addDataListenerIfNeeded();\n }\n });\n if (this.left.readable)\n this._addDataListenerIfNeeded();\n this.left.on('readable', () => this._addDataListenerIfNeeded());\n }\n\n hasResults ()\n {\n return !this.right.ended || this.matchIdx < this.matches.length;\n }\n\n _end ()\n {\n super._end();\n this.left.destroy();\n this.right.destroy();\n }\n\n read ()\n {\n this._addDataListenerIfNeeded();\n\n while(true) {\n if (this.ended || !this.readable)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n this.match = this.right.read();\n\n if (this.match === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(this.match);\n this.matches = this.leftMap.get(hash) || [];\n this.matchIdx = 0;\n }\n }\n\n _addDataListenerIfNeeded() {\n if (!this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n }\n\n _addDataListener()\n {\n this.left.on('data', addItem.bind(this));\n\n function addItem(item)\n {\n let hash = this.funHash(item);\n if (!this.leftMap.has(hash))\n this.leftMap.set(hash, []);\n let arr = this.leftMap.get(hash);\n arr.push(item);\n }\n }\n}\n\nmodule.exports = HashJoin;\n","\nconst { MultiTransformIterator, SimpleTransformIterator, scheduleTask } = require('asynciterator');\n\n// https://en.wikipedia.org/wiki/Nested_loop_join\nclass NestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, right, funJoin, options)\n {\n super(left, options);\n\n this.right = right;\n this.funJoin = funJoin; // function that joins 2 elements or returns null if join is not possible\n this.on('end', () => this.right.close());\n }\n\n _end ()\n {\n super._end();\n scheduleTask(() => this.right.destroy());\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.right.clone(), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = NestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Symmetric_Hash_Join\nclass SymmetricHashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.left = left;\n this.right = right;\n\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.usedLeft = false;\n this.leftMap = new Map();\n this.rightMap = new Map();\n\n this.on('end', () => this._cleanup() );\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n if (this.left.readable || this.right.readable)\n {\n this.readable = true;\n }\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.left.on('readable', () => this.readable = true);\n this.right.on('readable', () => this.readable = true);\n\n // this needs to be here since it's possible the left/right streams only get ended after there are no more results left\n this.left.on ('end', () => { if (!this.hasResults()) this._end(); });\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n hasResults()\n {\n // The \"!!this.match\" condition was added as a workaround to race\n // conditions and/or duplicate \"end\" events that may lead to premature\n // cleanups of the \"this.matches\" array.\n // See https://github.com/joachimvh/asyncjoin/issues/7\n return !this.left.ended || !this.right.ended || (!!this.matches && this.matchIdx < this.matches.length);\n }\n\n _cleanup ()\n {\n // motivate garbage collector to remove these\n this.leftMap = null;\n this.rightMap = null;\n this.matches = null;\n }\n\n _end ()\n {\n super._end();\n this.left.destroy();\n this.right.destroy();\n }\n\n read ()\n {\n while(true){\n if (this.ended)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.usedLeft ? this.funJoin(this.match, item) : this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n let item = null;\n // try both streams if the first one has no value\n for (let i = 0; i < 2; ++i)\n {\n item = this.usedLeft ? this.right.read() : this.left.read();\n this.usedLeft = !this.usedLeft; // try other stream next time\n\n // found a result, no need to check the other stream this run\n if (item !== null)\n break;\n }\n\n if (this.done || item === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(item);\n\n if (this.usedLeft && this.right.done) {\n this.leftMap = null;\n } else if (this.left.done) {\n this.rightMap = null;\n } else {\n let map = this.usedLeft ? this.leftMap : this.rightMap;\n if (!map.has(hash))\n map.set(hash, []);\n let arr = map.get(hash);\n arr.push(item);\n }\n\n this.match = item;\n this.matches = (this.usedLeft ? this.rightMap : this.leftMap).get(hash) || [];\n this.matchIdx = 0;\n }\n }\n}\n\nmodule.exports = SymmetricHashJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// merges the contents of multiple streams\nclass MergeIterator extends AsyncIterator\n{\n constructor (streams)\n {\n super();\n \n if (!Array.isArray(streams))\n streams = Array.prototype.slice.call(arguments);\n \n this.streams = streams;\n \n for (let stream of streams)\n {\n stream.on('readable', () => this.emit('readable'));\n stream.on('end', () => this._removeStream(stream));\n }\n \n if (this.streams.length === 0)\n this.close();\n \n this.idx = this.streams.length-1;\n }\n \n _removeStream (stream)\n {\n let idx = this.streams.indexOf(stream);\n if (idx < 0)\n return;\n \n this.streams.splice(idx, 1);\n if (this.idx >= this.streams.length)\n --this.idx;\n \n if (this.streams.length === 0)\n this._end();\n }\n \n close ()\n {\n super.close();\n for (let stream of this.streams)\n stream.close();\n }\n \n read ()\n {\n for (let attempts = 0; attempts < this.streams.length; ++attempts)\n {\n this.idx = (this.idx + 1) % this.streams.length;\n let item = this.streams[this.idx].read();\n if (item !== null)\n return item;\n }\n \n return null;\n }\n}\n\nmodule.exports = MergeIterator;","module.exports = function(variables) {\nfunction getVariableValue(name) {\n if (!variables || !(name in variables)) {\n throw new Error('Undefined variable: ' + name);\n }\n return variables[name];\n}\nconst df_471_1 = new (require('@comunica/logger-void').LoggerVoid)();\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-init/^3.0.0/components/ActorInit.jsonld#ActorInit_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-context-preprocess/^3.0.0/components/ActorContextPreprocess.jsonld#ActorContextPreprocess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-bindings/^3.0.0/components/ActorHashBindings.jsonld#ActorHashBindings_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-quads/^3.0.0/components/ActorHashQuads.jsonld#ActorHashQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-query-operation/^3.0.0/components/ActorOptimizeQueryOperation.jsonld#ActorOptimizeQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-parse/^3.0.0/components/ActorQueryParse.jsonld#ActorQueryParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-result-serialize/^3.0.0/components/ActorQueryResultSerialize.jsonld#ActorQueryResultSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify-hypermedia/^3.0.0/components/ActorQuerySourceIdentifyHypermedia.jsonld#ActorQuerySourceIdentifyHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-entries-sort/^3.0.0/components/ActorRdfJoinEntriesSort.jsonld#ActorRdfJoinEntriesSort_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-selectivity/^3.0.0/components/ActorRdfJoinSelectivity.jsonld#ActorRdfJoinSelectivity_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-accumulate/^3.0.0/components/ActorRdfMetadataAccumulate.jsonld#ActorRdfMetadataAccumulate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-serialize/^3.0.0/components/ActorRdfSerialize.jsonld#ActorRdfSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads/^3.0.0/components/ActorRdfUpdateQuads.jsonld#ActorRdfUpdateQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus = new (require('@comunica/bus-query-operation').BusQueryOperation)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^3.0.0/components/ActorQueryOperation.jsonld#ActorQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-process/^3.0.0/components/ActorQueryProcess.jsonld#ActorQueryProcess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify/^3.0.0/components/ActorQuerySourceIdentify.jsonld#ActorQuerySourceIdentify_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^3.0.0/components/ActorRdfJoin.jsonld#ActorRdfJoin_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http-invalidate/^3.0.0/components/ActorHttpInvalidate.jsonld#ActorHttpInvalidate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^3.0.0/components/ActorHttp.jsonld#ActorHttp_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_fallback_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^3.0.0/components/ActorHttp.jsonld#ActorHttp_fallback_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-merge-bindings-context/^3.0.0/components/ActorMergeBindingsContext.jsonld#ActorMergeBindingsContext_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__3_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference-rdf/^3.0.0/components/ActorDereferenceRdf.jsonld#ActorDereferenceRdf_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__3_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata/^3.0.0/components/ActorRdfMetadata.jsonld#ActorRdfMetadata_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-extract/^3.0.0/components/ActorRdfMetadataExtract.jsonld#ActorRdfMetadataExtract_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__3_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links/^3.0.0/components/ActorRdfResolveHypermediaLinks.jsonld#ActorRdfResolveHypermediaLinks_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__3_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links-queue/^3.0.0/components/ActorRdfResolveHypermediaLinksQueue.jsonld#ActorRdfResolveHypermediaLinksQueue_default_bus'\n});\nconst urn_comunica_default_context_preprocess_actors_convert_shortcuts = new (require('@comunica/actor-context-preprocess-convert-shortcuts').ActorContextPreprocessConvertShortcuts)({\n 'contextKeyShortcuts': {\"baseIRI\":\"@comunica/actor-init-query:baseIRI\",\"datetime\":\"@comunica/actor-http-memento:datetime\",\"destination\":\"@comunica/bus-rdf-update-quads:destination\",\"distinctConstruct\":\"@comunica/actor-init-query:distinctConstruct\",\"explain\":\"@comunica/actor-init-query:explain\",\"extensionFunctionCreator\":\"@comunica/actor-init-query:extensionFunctionCreator\",\"extensionFunctions\":\"@comunica/actor-init-query:extensionFunctions\",\"fetch\":\"@comunica/bus-http:fetch\",\"functionArgumentsCache\":\"@comunica/actor-init-query:functionArgumentsCache\",\"httpAuth\":\"@comunica/bus-http:auth\",\"httpBodyTimeout\":\"@comunica/bus-http:http-body-timeout\",\"httpIncludeCredentials\":\"@comunica/bus-http:include-credentials\",\"httpProxyHandler\":\"@comunica/actor-http-proxy:httpProxyHandler\",\"httpRetryCount\":\"@comunica/bus-http:http-retry-count\",\"httpRetryDelay\":\"@comunica/bus-http:http-retry-delay\",\"httpRetryOnServerError\":\"@comunica/bus-http:http-retry-on-server-error\",\"httpTimeout\":\"@comunica/bus-http:http-timeout\",\"initialBindings\":\"@comunica/actor-init-query:initialBindings\",\"lenient\":\"@comunica/actor-init-query:lenient\",\"log\":\"@comunica/core:log\",\"noCache\":\"@comunica/actor-init-query:noCache\",\"queryFormat\":\"@comunica/actor-init-query:queryFormat\",\"queryTimestamp\":\"@comunica/actor-init-query:queryTimestamp\",\"readOnly\":\"@comunica/bus-query-operation:readOnly\",\"recoverBrokenLinks\":\"@comunica/bus-http-wayback:recover-broken-links\",\"sources\":\"@comunica/actor-init-query:querySourcesUnidentified\",\"traverse\":\"@comunica/bus-query-source-identify:traverse\",\"unionDefaultGraph\":\"@comunica/bus-query-operation:unionDefaultGraph\"},\n 'name': 'urn:comunica:default:context-preprocess/actors#convert-shortcuts',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_set_defaults = new (require('@comunica/actor-context-preprocess-set-defaults').ActorContextPreprocessSetDefaults)({\n 'logger': df_471_1,\n 'name': 'urn:comunica:default:context-preprocess/actors#set-defaults',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_source_to_destination = new (require('@comunica/actor-context-preprocess-source-to-destination').ActorContextPreprocessSourceToDestination)({\n 'name': 'urn:comunica:default:context-preprocess/actors#source-to-destination',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_query_source_skolemize = new (require('@comunica/actor-context-preprocess-query-source-skolemize').ActorContextPreprocessQuerySourceSkolemize)({\n 'name': 'urn:comunica:default:context-preprocess/actors#query-source-skolemize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:context-preprocess/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_hash_bindings_actors_sha1 = new (require('@comunica/actor-hash-bindings-sha1').ActorHashBindingsSha1)({\n 'name': 'urn:comunica:default:hash-bindings/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_bindings_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-bindings/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_quads_actors_sha1 = new (require('@comunica/actor-hash-quads-sha1').ActorHashQuadsSha1)({\n 'name': 'urn:comunica:default:hash-quads/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus\n});\nconst urn_comunica_default_hash_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_copy = new (require('@comunica/actor-optimize-query-operation-rewrite-copy').ActorOptimizeQueryOperationRewriteCopy)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-copy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_move = new (require('@comunica/actor-optimize-query-operation-rewrite-move').ActorOptimizeQueryOperationRewriteMove)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-move',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_add = new (require('@comunica/actor-optimize-query-operation-rewrite-add').ActorOptimizeQueryOperationRewriteAdd)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-add',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_group_sources = new (require('@comunica/actor-optimize-query-operation-group-sources').ActorOptimizeQueryOperationGroupSources)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#group-sources',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_construct_distinct = new (require('@comunica/actor-optimize-query-operation-construct-distinct').ActorOptimizeQueryOperationConstructDistinct)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#construct-distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'filterErrors': true,\n 'name': 'urn:comunica:default:optimize-query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_query_parse_actors_sparql = new (require('@comunica/actor-query-parse-sparql').ActorQueryParseSparql)({\n 'prefixes': {\"dbpedia\":\"http://dbpedia.org/resource/\",\"dbpedia-owl\":\"http://dbpedia.org/ontology/\",\"dbpprop\":\"http://dbpedia.org/property/\",\"dc\":\"http://purl.org/dc/terms/\",\"dc11\":\"http://purl.org/dc/elements/1.1/\",\"dcterms\":\"http://purl.org/dc/terms/\",\"foaf\":\"http://xmlns.com/foaf/0.1/\",\"geo\":\"http://www.w3.org/2003/01/geo/wgs84_pos#\",\"owl\":\"http://www.w3.org/2002/07/owl#\",\"rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"rdfs\":\"http://www.w3.org/2000/01/rdf-schema#\",\"schema\":\"http://schema.org/\",\"skos\":\"http://www.w3.org/2008/05/skos#\",\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"},\n 'name': 'urn:comunica:default:query-parse/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_actors_graphql = new (require('@comunica/actor-query-parse-graphql').ActorQueryParseGraphql)({\n 'name': 'urn:comunica:default:query-parse/actors#graphql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-parse/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_json = new (require('@comunica/actor-query-result-serialize-json').ActorQueryResultSerializeJson)({\n 'mediaTypePriorities': {\"application/json\":1},\n 'mediaTypeFormats': {\"application/json\":\"https://comunica.linkeddatafragments.org/#results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_simple = new (require('@comunica/actor-query-result-serialize-simple').ActorQueryResultSerializeSimple)({\n 'mediaTypePriorities': {\"simple\":0.9},\n 'mediaTypeFormats': {\"simple\":\"https://comunica.linkeddatafragments.org/#results_simple\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#simple',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_csv = new (require('@comunica/actor-query-result-serialize-sparql-csv').ActorQueryResultSerializeSparqlCsv)({\n 'mediaTypePriorities': {\"text/csv\":0.75},\n 'mediaTypeFormats': {\"text/csv\":\"http://www.w3.org/ns/formats/SPARQL_Results_CSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#csv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_tsv = new (require('@comunica/actor-query-result-serialize-sparql-tsv').ActorQueryResultSerializeSparqlTsv)({\n 'mediaTypePriorities': {\"text/tab-separated-values\":0.75},\n 'mediaTypeFormats': {\"text/tab-separated-values\":\"http://www.w3.org/ns/formats/SPARQL_Results_TSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-tsv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_xml = new (require('@comunica/actor-query-result-serialize-sparql-xml').ActorQueryResultSerializeSparqlXml)({\n 'mediaTypePriorities': {\"application/sparql-results+xml\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+xml\":\"http://www.w3.org/ns/formats/SPARQL_Results_XML\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-xml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_table = new (require('@comunica/actor-query-result-serialize-table').ActorQueryResultSerializeTable)({\n 'columnWidth': 50,\n 'mediaTypePriorities': {\"table\":0.6},\n 'mediaTypeFormats': {\"table\":\"https://comunica.linkeddatafragments.org/#results_table\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#table',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_tree = new (require('@comunica/actor-query-result-serialize-tree').ActorQueryResultSerializeTree)({\n 'mediaTypePriorities': {\"tree\":0.5},\n 'mediaTypeFormats': {\"tree\":\"https://comunica.linkeddatafragments.org/#results_tree\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#tree',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-result-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_source_identify_hypermedia_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'filterFactor',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-source-identify-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_actors_cardinality = new (require('@comunica/actor-rdf-join-entries-sort-cardinality').ActorRdfJoinEntriesSortCardinality)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_actors_variable_counting = new (require('@comunica/actor-rdf-join-selectivity-variable-counting').ActorRdfJoinSelectivityVariableCounting)({\n 'name': 'urn:comunica:default:rdf-join-selectivity/actors#variable-counting',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'accuracy',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-join-selectivity/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_cancontainundefs = new (require('@comunica/actor-rdf-metadata-accumulate-cancontainundefs').ActorRdfMetadataAccumulateCanContainUndefs)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#cancontainundefs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_cardinality = new (require('@comunica/actor-rdf-metadata-accumulate-cardinality').ActorRdfMetadataAccumulateCardinality)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_pagesize = new (require('@comunica/actor-rdf-metadata-accumulate-pagesize').ActorRdfMetadataAccumulatePageSize)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#pagesize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_requesttime = new (require('@comunica/actor-rdf-metadata-accumulate-requesttime').ActorRdfMetadataAccumulateRequestTime)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#requesttime',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_n3 = new (require('@comunica/actor-rdf-serialize-n3').ActorRdfSerializeN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'name': 'urn:comunica:default:rdf-serialize/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_jsonld = new (require('@comunica/actor-rdf-serialize-jsonld').ActorRdfSerializeJsonLd)({\n 'jsonStringifyIndentSpaces': 2,\n 'mediaTypePriorities': {\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-serialize/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_shaclc = new (require('@comunica/actor-rdf-serialize-shaclc').ActorRdfSerializeShaclc)({\n 'mediaTypePriorities': {\"text/shaclc\":1,\"text/shaclc-ext\":0.5},\n 'mediaTypeFormats': {\"text/shaclc\":\"http://www.w3.org/ns/formats/Shaclc\",\"text/shaclc-ext\":\"http://www.w3.org/ns/formats/ShaclcExtended\"},\n 'priorityScale': 0.1,\n 'name': 'urn:comunica:default:rdf-serialize/actors#shaclc',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_rdfjs_store = new (require('@comunica/actor-rdf-update-quads-rdfjs-store').ActorRdfUpdateQuadsRdfJsStore)({\n 'name': 'urn:comunica:default:rdf-update-quads/actors#rdfjs-store',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_query_operation_actors_source = new (require('@comunica/actor-query-operation-source').ActorQueryOperationSource)({\n 'name': 'urn:comunica:default:query-operation/actors#source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'httpRequests',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_process_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-process/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_source_identify_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-source-identify/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus\n});\nconst urn_comunica_default_rdf_join_mediators_main = new (require('@comunica/mediator-join-coefficients-fixed').MediatorJoinCoefficientsFixed)({\n 'cpuWeight': 10,\n 'memoryWeight': 1,\n 'timeWeight': 2,\n 'ioWeight': 10,\n 'name': 'urn:comunica:default:rdf-join/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-context-preprocess-query-source-identify/^3.0.0/components/ActorContextPreprocessQuerySourceIdentify.jsonld#IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_http_invalidate_mediators_main = new (require('@comunica/mediator-all').MediatorAll)({\n 'name': 'urn:comunica:default:http-invalidate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-sparql-json/^3.0.0/components/ActionObserverHttp.jsonld#IActionObserverHttpArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^3.0.0/components/ActionObserverHttp.jsonld#IActionObserverHttpArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_http_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'time',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:http/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_fallback_bus\n});\nconst urn_comunica_default_merge_bindings_context_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mergeHandlers',\n 'name': 'urn:comunica:default:merge-bindings-context/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus\n});\nconst urn_comunica_default_dereference_rdf_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference-rdf/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__3_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_metadata_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-metadata/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__3_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'filterErrors': true,\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-extract/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__3_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__3_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_single = new (require('@comunica/actor-rdf-join-inner-single').ActorRdfJoinSingle)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-single',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_empty = new (require('@comunica/actor-rdf-join-inner-multi-empty').ActorRdfJoinMultiEmpty)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-empty',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_hash = new (require('@comunica/actor-rdf-join-inner-hash').ActorRdfJoinHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_symmetric_hash = new (require('@comunica/actor-rdf-join-inner-symmetrichash').ActorRdfJoinSymmetricHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-symmetric-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_nested_loop = new (require('@comunica/actor-rdf-join-inner-nestedloop').ActorRdfJoinNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash = new (require('@comunica/actor-rdf-join-minus-hash').ActorRdfJoinMinusHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash_undef = new (require('@comunica/actor-rdf-join-minus-hash-undef').ActorRdfJoinMinusHashUndef)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash-undef',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_def_nonblocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': false,\n 'blocking': false,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-def-nonblocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_def_blocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': false,\n 'blocking': true,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-def-blocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_undef_nonblocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': true,\n 'blocking': false,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-undef-nonblocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_undef_blocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': true,\n 'blocking': true,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-undef-blocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_nested_loop = new (require('@comunica/actor-rdf-join-optional-nestedloop').ActorRdfJoinOptionalNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_rdf = new (require('@comunica/actor-query-result-serialize-rdf').ActorQueryResultSerializeRdf)({\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'mediatorMediaTypeCombiner': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorMediaTypeFormatCombiner': urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat,\n 'name': 'urn:comunica:default:query-result-serialize/actors#rdf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_operation_actors_ask = new (require('@comunica/actor-query-operation-ask').ActorQueryOperationAsk)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#ask',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_bgp = new (require('@comunica/actor-query-operation-bgp-join').ActorQueryOperationBgpJoin)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_construct = new (require('@comunica/actor-query-operation-construct').ActorQueryOperationConstruct)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#construct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_distinct = new (require('@comunica/actor-query-operation-distinct-hash').ActorQueryOperationDistinctHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorHashQuads': urn_comunica_default_hash_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_from = new (require('@comunica/actor-query-operation-from-quad').ActorQueryOperationFromQuad)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#from',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_project = new (require('@comunica/actor-query-operation-project').ActorQueryOperationProject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#project',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_reduced = new (require('@comunica/actor-query-operation-reduced-hash').ActorQueryOperationReducedHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'cacheSize': 100,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#reduced',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_slice = new (require('@comunica/actor-query-operation-slice').ActorQueryOperationSlice)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#slice',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_union = new (require('@comunica/actor-query-operation-union').ActorQueryOperationUnion)({\n 'mediatorRdfMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#union',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_alt = new (require('@comunica/actor-query-operation-path-alt').ActorQueryOperationPathAlt)({\n 'mediatorRdfMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-alt',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_inv = new (require('@comunica/actor-query-operation-path-inv').ActorQueryOperationPathInv)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-inv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_link = new (require('@comunica/actor-query-operation-path-link').ActorQueryOperationPathLink)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-link',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_nps = new (require('@comunica/actor-query-operation-path-nps').ActorQueryOperationPathNps)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-nps',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_clear = new (require('@comunica/actor-query-operation-update-clear').ActorQueryOperationClear)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-clear',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_composite = new (require('@comunica/actor-query-operation-update-compositeupdate').ActorQueryOperationUpdateCompositeUpdate)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-composite',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_create = new (require('@comunica/actor-query-operation-update-create').ActorQueryOperationCreate)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-create',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_drop = new (require('@comunica/actor-query-operation-update-drop').ActorQueryOperationDrop)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-drop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_load = new (require('@comunica/actor-query-operation-update-load').ActorQueryOperationLoad)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-load',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_join = new (require('@comunica/actor-query-operation-join').ActorQueryOperationJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_minus = new (require('@comunica/actor-query-operation-minus').ActorQueryOperationMinus)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#minus',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_seq = new (require('@comunica/actor-query-operation-path-seq').ActorQueryOperationPathSeq)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-seq',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest = new (require('@comunica/actor-rdf-join-inner-multi-smallest').ActorRdfJoinMultiSmallest)({\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_filter_pushdown = new (require('@comunica/actor-optimize-query-operation-filter-pushdown').ActorOptimizeQueryOperationFilterPushdown)({\n 'aggressivePushdown': false,\n 'maxIterations': 10,\n 'splitConjunctive': true,\n 'mergeConjunctive': true,\n 'pushIntoLeftJoins': true,\n 'pushEqualityIntoPatterns': true,\n 'name': 'urn:comunica:default:optimize-query-operation/actors#filter-pushdown',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_group_sources\n]\n});\nconst urn_comunica_default_context_preprocess_actors_query_source_identify = new (require('@comunica/actor-context-preprocess-query-source-identify').ActorContextPreprocessQuerySourceIdentify)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'name': 'urn:comunica:default:context-preprocess/actors#query-source-identify',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus,\n 'beforeActors': [\n urn_comunica_default_context_preprocess_actors_query_source_skolemize\n]\n});\nconst urn_comunica_default_init_actors_query = new (require('@comunica/actor-init-query').ActorInitQuery)({\n 'mediatorQueryProcess': urn_comunica_default_query_process_mediators_main,\n 'mediatorQueryResultSerialize': urn_comunica_default_query_result_serialize_mediators_serialize,\n 'mediatorQueryResultSerializeMediaTypeCombiner': urn_comunica_default_query_result_serialize_mediators_mediaType,\n 'mediatorQueryResultSerializeMediaTypeFormatCombiner': urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat,\n 'mediatorHttpInvalidate': urn_comunica_default_http_invalidate_mediators_main,\n 'defaultQueryInputFormat': 'sparql',\n 'allowNoSources': false,\n 'name': 'urn:comunica:default:init/actors#query',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActorQueryResultSerializeSparqlJson_jsonld_ActorQueryResultSerializeSparqlJson_default_observer = new (require('@comunica/actor-query-result-serialize-sparql-json').ActionObserverHttp)({\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator,\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-sparql-json/^3.0.0/components/ActorQueryResultSerializeSparqlJson.jsonld#ActorQueryResultSerializeSparqlJson_default_observer',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer = new (require('@comunica/actor-query-result-serialize-stats').ActionObserverHttp)({\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator,\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^3.0.0/components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats_default_observer',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql = new (require('@comunica/actor-query-source-identify-hypermedia-sparql').ActorQuerySourceIdentifyHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'checkUrlSuffix': true,\n 'forceHttpGet': false,\n 'cacheSize': 1024,\n 'bindMethod': 'values',\n 'countTimeout': 3000,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus\n});\nconst urn_comunica_default_query_operation_actors_extend = new (require('@comunica/actor-query-operation-extend').ActorQueryOperationExtend)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#extend',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_filter = new (require('@comunica/actor-query-operation-filter').ActorQueryOperationFilter)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#filter',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_group = new (require('@comunica/actor-query-operation-group').ActorQueryOperationGroup)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#group',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_leftjoin = new (require('@comunica/actor-query-operation-leftjoin').ActorQueryOperationLeftJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#leftjoin',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_nop = new (require('@comunica/actor-query-operation-nop').ActorQueryOperationNop)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#nop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_orderby = new (require('@comunica/actor-query-operation-orderby').ActorQueryOperationOrderBy)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#orderby',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_service = new (require('@comunica/actor-query-operation-service').ActorQueryOperationService)({\n 'forceSparqlEndpoint': false,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_values = new (require('@comunica/actor-query-operation-values').ActorQueryOperationValues)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#values',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_one_or_more = new (require('@comunica/actor-query-operation-path-one-or-more').ActorQueryOperationPathOneOrMore)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-one-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_more = new (require('@comunica/actor-query-operation-path-zero-or-more').ActorQueryOperationPathZeroOrMore)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_one = new (require('@comunica/actor-query-operation-path-zero-or-one').ActorQueryOperationPathZeroOrOne)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-one',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_delete_insert = new (require('@comunica/actor-query-operation-update-deleteinsert').ActorQueryOperationUpdateDeleteInsert)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-delete-insert',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_process_actors_sequential = new (require('@comunica/actor-query-process-sequential').ActorQueryProcessSequential)({\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'mediatorQueryParse': urn_comunica_default_query_parse_mediators_main,\n 'mediatorOptimizeQueryOperation': urn_comunica_default_optimize_query_operation_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-process/actors#sequential',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_none = new (require('@comunica/actor-rdf-join-inner-none').ActorRdfJoinNone)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_bind = new (require('@comunica/actor-rdf-join-optional-bind').ActorRdfJoinOptionalBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.000001,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_query_source_identify_actors_hypermedia = new (require('@comunica/actor-query-source-identify-hypermedia').ActorQuerySourceIdentifyHypermedia)({\n 'cacheSize': 100,\n 'maxIterators': 64,\n 'aggregateTraversalStore': true,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQuerySourceIdentifyHypermedia': urn_comunica_default_query_source_identify_hypermedia_mediators_main,\n 'mediatorRdfResolveHypermediaLinks': urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main,\n 'mediatorRdfResolveHypermediaLinksQueue': urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-source-identify/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind = new (require('@comunica/actor-rdf-join-inner-multi-bind').ActorRdfJoinMultiBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'minMaxCardinalityRatio': 60,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest_filter_bindings = new (require('@comunica/actor-rdf-join-inner-multi-smallest-filter-bindings').ActorRdfJoinMultiSmallestFilterBindings)({\n 'selectivityModifier': 0.0001,\n 'blockSize': 64,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest-filter-bindings',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_json = new (require('@comunica/actor-query-result-serialize-sparql-json').ActorQueryResultSerializeSparqlJson)({\n 'emitMetadata': true,\n 'httpObserver': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActorQueryResultSerializeSparqlJson_jsonld_ActorQueryResultSerializeSparqlJson_default_observer,\n 'mediaTypePriorities': {\"application/sparql-results+json\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+json\":\"http://www.w3.org/ns/formats/SPARQL_Results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_stats = new (require('@comunica/actor-query-result-serialize-stats').ActorQueryResultSerializeStats)({\n 'httpObserver': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer,\n 'mediaTypePriorities': {\"stats\":0.5},\n 'mediaTypeFormats': {\"stats\":\"https://comunica.linkeddatafragments.org/#results_stats\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#stats',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_process_actors_explain_parsed = new (require('@comunica/actor-query-process-explain-parsed').ActorQueryProcessExplainParsed)({\n 'queryProcessor': urn_comunica_default_query_process_actors_sequential,\n 'name': 'urn:comunica:default:query-process/actors#explain-parsed',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_process_actors_explain_logical = new (require('@comunica/actor-query-process-explain-logical').ActorQueryProcessExplainLogical)({\n 'queryProcessor': urn_comunica_default_query_process_actors_sequential,\n 'name': 'urn:comunica:default:query-process/actors#explain-logical',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_process_actors_explain_physical = new (require('@comunica/actor-query-process-explain-physical').ActorQueryProcessExplainPhysical)({\n 'queryProcessor': urn_comunica_default_query_process_actors_sequential,\n 'name': 'urn:comunica:default:query-process/actors#explain-physical',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations = new (require('@comunica/actor-optimize-query-operation-prune-empty-source-operations').ActorOptimizeQueryOperationPruneEmptySourceOperations)({\n 'useAskIfSupported': false,\n 'name': 'urn:comunica:default:optimize-query-operation/actors#prune-empty-source-operations',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_filter_pushdown\n]\n});\nconst urn_comunica_default_query_source_identify_actors_rdfjs = new (require('@comunica/actor-query-source-identify-rdfjs').ActorQuerySourceIdentifyRdfJs)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-source-identify/actors#rdfjs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus,\n 'beforeActors': [\n urn_comunica_default_query_source_identify_actors_hypermedia\n]\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind_source = new (require('@comunica/actor-rdf-join-inner-multi-bind-source').ActorRdfJoinMultiBindSource)({\n 'selectivityModifier': 0.0001,\n 'blockSize': 16,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind-source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_connected = new (require('@comunica/actor-optimize-query-operation-join-connected').ActorOptimizeQueryOperationJoinConnected)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-connected',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_bgp_to_join = new (require('@comunica/actor-optimize-query-operation-bgp-to-join').ActorOptimizeQueryOperationBgpToJoin)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#bgp-to-join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_join_connected\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_bgp = new (require('@comunica/actor-optimize-query-operation-join-bgp').ActorOptimizeQueryOperationJoinBgp)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive = new (require('@comunica/actor-optimize-query-operation-assign-sources-exhaustive').ActorOptimizeQueryOperationAssignSourcesExhaustive)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#assign-sources-exhaustive',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_join_bgp\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_describe_to_constructs_subject = new (require('@comunica/actor-optimize-query-operation-describe-to-constructs-subject').ActorOptimizeQueryOperationDescribeToConstructsSubject)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#describe-to-constructs-subject',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive\n]\n});\nconst urn_comunica_default_Runner = (https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus, [\n urn_comunica_default_context_preprocess_actors_convert_shortcuts,\n urn_comunica_default_context_preprocess_actors_set_defaults,\n urn_comunica_default_context_preprocess_actors_source_to_destination,\n urn_comunica_default_context_preprocess_actors_query_source_identify,\n urn_comunica_default_context_preprocess_actors_query_source_skolemize,\n urn_comunica_default_hash_bindings_actors_sha1,\n urn_comunica_default_hash_quads_actors_sha1,\n urn_comunica_default_init_actors_query,\n urn_comunica_default_optimize_query_operation_actors_rewrite_copy,\n urn_comunica_default_optimize_query_operation_actors_rewrite_move,\n urn_comunica_default_optimize_query_operation_actors_rewrite_add,\n urn_comunica_default_optimize_query_operation_actors_describe_to_constructs_subject,\n urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive,\n urn_comunica_default_optimize_query_operation_actors_join_bgp,\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join,\n urn_comunica_default_optimize_query_operation_actors_join_connected,\n urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations,\n urn_comunica_default_optimize_query_operation_actors_filter_pushdown,\n urn_comunica_default_optimize_query_operation_actors_group_sources,\n urn_comunica_default_optimize_query_operation_actors_construct_distinct,\n urn_comunica_default_query_parse_actors_sparql,\n urn_comunica_default_query_parse_actors_graphql,\n urn_comunica_default_query_result_serialize_actors_json,\n urn_comunica_default_query_result_serialize_actors_rdf,\n urn_comunica_default_query_result_serialize_actors_simple,\n urn_comunica_default_query_result_serialize_actors_csv,\n urn_comunica_default_query_result_serialize_actors_sparql_json,\n urn_comunica_default_query_result_serialize_actors_sparql_tsv,\n urn_comunica_default_query_result_serialize_actors_sparql_xml,\n urn_comunica_default_query_result_serialize_actors_stats,\n urn_comunica_default_query_result_serialize_actors_table,\n urn_comunica_default_query_result_serialize_actors_tree,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql,\n urn_comunica_default_rdf_join_entries_sort_actors_cardinality,\n urn_comunica_default_rdf_join_selectivity_actors_variable_counting,\n urn_comunica_default_rdf_metadata_accumulate_actors_cancontainundefs,\n urn_comunica_default_rdf_metadata_accumulate_actors_cardinality,\n urn_comunica_default_rdf_metadata_accumulate_actors_pagesize,\n urn_comunica_default_rdf_metadata_accumulate_actors_requesttime,\n urn_comunica_default_rdf_serialize_actors_n3,\n urn_comunica_default_rdf_serialize_actors_jsonld,\n urn_comunica_default_rdf_serialize_actors_shaclc,\n urn_comunica_default_rdf_update_quads_actors_rdfjs_store,\n urn_comunica_default_query_operation_actors_ask,\n urn_comunica_default_query_operation_actors_bgp,\n urn_comunica_default_query_operation_actors_construct,\n urn_comunica_default_query_operation_actors_distinct,\n urn_comunica_default_query_operation_actors_extend,\n urn_comunica_default_query_operation_actors_filter,\n urn_comunica_default_query_operation_actors_from,\n urn_comunica_default_query_operation_actors_group,\n urn_comunica_default_query_operation_actors_join,\n urn_comunica_default_query_operation_actors_leftjoin,\n urn_comunica_default_query_operation_actors_minus,\n urn_comunica_default_query_operation_actors_nop,\n urn_comunica_default_query_operation_actors_orderby,\n urn_comunica_default_query_operation_actors_project,\n urn_comunica_default_query_operation_actors_reduced,\n urn_comunica_default_query_operation_actors_service,\n urn_comunica_default_query_operation_actors_slice,\n urn_comunica_default_query_operation_actors_source,\n urn_comunica_default_query_operation_actors_union,\n urn_comunica_default_query_operation_actors_values,\n urn_comunica_default_query_operation_actors_path_alt,\n urn_comunica_default_query_operation_actors_path_inv,\n urn_comunica_default_query_operation_actors_path_link,\n urn_comunica_default_query_operation_actors_path_nps,\n urn_comunica_default_query_operation_actors_path_one_or_more,\n urn_comunica_default_query_operation_actors_path_seq,\n urn_comunica_default_query_operation_actors_path_zero_or_more,\n urn_comunica_default_query_operation_actors_path_zero_or_one,\n urn_comunica_default_query_operation_actors_update_clear,\n urn_comunica_default_query_operation_actors_update_composite,\n urn_comunica_default_query_operation_actors_update_create,\n urn_comunica_default_query_operation_actors_update_delete_insert,\n urn_comunica_default_query_operation_actors_update_drop,\n urn_comunica_default_query_operation_actors_update_load,\n urn_comunica_default_query_process_actors_sequential,\n urn_comunica_default_query_process_actors_explain_parsed,\n urn_comunica_default_query_process_actors_explain_logical,\n urn_comunica_default_query_process_actors_explain_physical,\n urn_comunica_default_query_source_identify_actors_hypermedia,\n urn_comunica_default_query_source_identify_actors_rdfjs,\n urn_comunica_default_rdf_join_actors_inner_none,\n urn_comunica_default_rdf_join_actors_inner_single,\n urn_comunica_default_rdf_join_actors_inner_multi_empty,\n urn_comunica_default_rdf_join_actors_inner_multi_bind_source,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest_filter_bindings,\n urn_comunica_default_rdf_join_actors_minus_hash,\n urn_comunica_default_rdf_join_actors_minus_hash_undef,\n urn_comunica_default_rdf_join_actors_optional_bind,\n urn_comunica_default_rdf_join_actors_optional_hash_def_nonblocking,\n urn_comunica_default_rdf_join_actors_optional_hash_def_blocking,\n urn_comunica_default_rdf_join_actors_optional_hash_undef_nonblocking,\n urn_comunica_default_rdf_join_actors_optional_hash_undef_blocking,\n urn_comunica_default_rdf_join_actors_optional_nested_loop\n]);\nreturn urn_comunica_default_init_actors_query;\n}\n\n","import { QueryEngineBase } from '@comunica/actor-init-query';\nimport type { ActorInitQueryBase } from '@comunica/actor-init-query';\nimport type { IQueryContextCommon } from '@comunica/types';\n\n// eslint-disable-next-line import/extensions,ts/no-require-imports,ts/no-var-requires\nconst engineDefault = require('../engine-default.js');\n\n/**\n * A Comunica SPARQL query engine.\n */\nexport class QueryEngine\n extends QueryEngineBase {\n public constructor(engine: ActorInitQueryBase = engineDefault()) {\n super(engine);\n }\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nexport * from './QueryEngine';\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * An abstract actor that handles media-typed actions.\n *\n * It splits up a action between a 'handle' and a 'mediaTypes' action.\n * A 'mediaTypes' action is used to retrieve the available media types from this actor.\n * A 'handle' action is abstract, and can be implemented to do anything,\n * such as parsing, serializing, etc.\n * @see IActionAbstractMediaTyped\n *\n * @see ActorAbstractMediaTypedFixed\n */\nexport abstract class ActorAbstractMediaTyped\n extends Actor, IActorTestAbstractMediaTyped, IActorOutputAbstractMediaTyped> {\n public constructor(args: IActorArgsMediaTyped) {\n super(args);\n }\n\n public async run(action: IActionAbstractMediaTyped): Promise> {\n if ('handle' in action) {\n const typedAction: IActionAbstractMediaTypedHandle = action;\n return { handle: await this.runHandle(typedAction.handle, typedAction.handleMediaType, action.context) };\n }\n if ('mediaTypes' in action) {\n return { mediaTypes: await this.getMediaTypes(action.context) };\n }\n if ('mediaTypeFormats' in action) {\n return { mediaTypeFormats: await this.getMediaTypeFormats(action.context) };\n }\n throw new Error('Either a handle, mediaTypes or mediaTypeFormats action needs to be provided');\n }\n\n public async test(action: IActionAbstractMediaTyped): Promise> {\n if ('handle' in action) {\n const typedAction: IActionAbstractMediaTypedHandle = action;\n return { handle: await this.testHandle(typedAction.handle, typedAction.handleMediaType, action.context) };\n }\n if ('mediaTypes' in action) {\n return { mediaTypes: await this.testMediaType(action.context) };\n }\n if ('mediaTypeFormats' in action) {\n return { mediaTypeFormats: await this.testMediaTypeFormats(action.context) };\n }\n throw new Error('Either a handle, mediaTypes or mediaTypeFormats action needs to be provided');\n }\n\n /**\n * Check if this actor can run the given handle action,\n * without actually running it.\n *\n * @param {HI} action The handle action to test.\n * @param {string} mediaType The media type to test.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the handle test result.\n */\n public abstract testHandle(action: HI, mediaType: string | undefined, context: IActionContext): Promise;\n\n /**\n * Run the given handle action on this actor.\n *\n * @param {HI} action The handle action to run.\n * @param {string} mediaType The media type to run with.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the handle run result.\n */\n public abstract runHandle(action: HI, mediaType: string | undefined, context: IActionContext): Promise;\n\n /**\n * Check if this actor can emit its media types.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the media type run result.\n */\n public abstract testMediaType(context: IActionContext): Promise;\n\n /**\n * Get the media type of this given actor.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise<{[id: string]: number}>} A promise that resolves to the media types.\n */\n public abstract getMediaTypes(context: IActionContext): Promise>;\n\n /**\n * Check if this actor can emit its media type formats.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the media type run result.\n */\n public abstract testMediaTypeFormats(context: IActionContext): Promise;\n\n /**\n * Get the media type formats of this given actor.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise<{[id: string]: string}>} A promise that resolves to the media types.\n */\n public abstract getMediaTypeFormats(context: IActionContext): Promise>;\n}\n\nexport interface IActorArgsMediaTyped extends IActorArgs<\n IActionAbstractMediaTyped,\nIActorTestAbstractMediaTyped,\nIActorOutputAbstractMediaTyped\n> {}\n\nexport type IActionAbstractMediaTyped = IActionAbstractMediaTypedHandle | IActionAbstractMediaTypedMediaTypes\n| IActionAbstractMediaTypedMediaTypeFormats;\nexport interface IActionAbstractMediaTypedHandle extends IAction {\n /**\n * The handle action input.\n */\n handle: HI;\n /**\n * The handle media type that should be used when 'handle' is truthy.\n */\n handleMediaType?: string;\n}\n\nexport interface IActionAbstractMediaTypedMediaTypes extends IAction {\n /**\n * True if media types should be retrieved.\n */\n mediaTypes: boolean;\n}\n\nexport interface IActionAbstractMediaTypedMediaTypeFormats extends IAction {\n /**\n * True if media type formats should be retrieved.\n */\n mediaTypeFormats: boolean;\n}\n\n/**\n * Either 'handle', or 'mediaTypes' or 'mediaTypeFormats' must be truthy.\n * Groups may not be truthy at the same time.\n */\nexport type IActorTestAbstractMediaTyped = IActorTestAbstractMediaTypedHandle\n| IActorTestAbstractMediaTypedMediaTypes | IActorTestAbstractMediaTypedMediaTypeFormats;\nexport interface IActorTestAbstractMediaTypedHandle extends IActorTest {\n /**\n * The handle test output.\n */\n handle: HT;\n}\nexport interface IActorTestAbstractMediaTypedMediaTypes extends IActorTest {\n /**\n * True if media types can be retrieved.\n */\n mediaTypes: boolean;\n}\nexport interface IActorTestAbstractMediaTypedMediaTypeFormats extends IActorTest {\n /**\n * True if media type formats can be retrieved.\n */\n mediaTypeFormats?: boolean;\n}\n\n/**\n * Either 'handle', or 'mediaTypes' or 'mediaTypeFormats' must be truthy.\n * Groups may not be truthy at the same time.\n */\nexport type IActorOutputAbstractMediaTyped = IActorOutputAbstractMediaTypedHandle\n| IActorOutputAbstractMediaTypedMediaTypes | IActorOutputAbstractMediaTypedMediaTypeFormats;\nexport interface IActorOutputAbstractMediaTypedHandle extends IActorOutput {\n /**\n * The handle action output.\n */\n handle: HO;\n}\nexport interface IActorOutputAbstractMediaTypedMediaTypes extends IActorOutput {\n /**\n * An object containing media types as keys,\n * and preferences as values, with values ranging from 0 to 1.\n */\n mediaTypes: Record;\n}\nexport interface IActorOutputAbstractMediaTypedMediaTypeFormats extends IActorOutput {\n /**\n * An object containing media types as keys,\n * and format IRIs as values.\n */\n mediaTypeFormats: Record;\n}\n\nexport type MediateMediaTypes = Mediate<\nIActionAbstractMediaTypedMediaTypes,\nIActorOutputAbstractMediaTypedMediaTypes,\nIActorTestAbstractMediaTypedMediaTypes\n>;\n\nexport type MediateMediaTyped = Mediate<\nIActionAbstractMediaTypedHandle,\nIActorOutputAbstractMediaTypedHandle,\nIActorTestAbstractMediaTypedHandle\n>;\n","import type { IActionContext } from '@comunica/types';\nimport type { IActorArgsMediaTyped } from './ActorAbstractMediaTyped';\nimport { ActorAbstractMediaTyped } from './ActorAbstractMediaTyped';\n\nexport abstract class ActorAbstractMediaTypedFixed extends ActorAbstractMediaTyped {\n public readonly mediaTypePriorities: Record;\n public readonly mediaTypeFormats: Record;\n public readonly priorityScale: number;\n\n public constructor(args: IActorArgsMediaTypedFixed) {\n super(args);\n const scale: number = this.priorityScale || this.priorityScale === 0 ? this.priorityScale : 1;\n if (this.mediaTypePriorities) {\n for (const [ _index, [ key, value ]] of Object.entries(this.mediaTypePriorities).entries()) {\n this.mediaTypePriorities[key] = scale * value;\n }\n }\n this.mediaTypePriorities = Object.freeze(this.mediaTypePriorities);\n this.mediaTypeFormats = Object.freeze(this.mediaTypeFormats);\n }\n\n public async testHandle(action: HI, mediaType: string | undefined, context: IActionContext): Promise {\n if (!mediaType || !(mediaType in this.mediaTypePriorities)) {\n throw new Error(`Unrecognized media type: ${mediaType}`);\n }\n return await this.testHandleChecked(action, context);\n }\n\n /**\n * Check to see if this actor can handle the given action.\n * The media type has already been checked before this is called.\n *\n * @param {ActionContext} context An optional context.\n * @param {HI} action The action to test.\n */\n public abstract testHandleChecked(action: HI, context: IActionContext): Promise;\n\n public async testMediaType(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypes(_context: IActionContext): Promise> {\n return this.mediaTypePriorities;\n }\n\n public async testMediaTypeFormats(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypeFormats(_context: IActionContext): Promise> {\n return this.mediaTypeFormats;\n }\n}\n\nexport interface IActorArgsMediaTypedFixed extends IActorArgsMediaTyped {\n /**\n * A record of media types, with media type name as key, and its priority as value.\n * Priorities are numbers between [0, 1].\n * @range {json}\n */\n mediaTypePriorities: Record;\n /**\n * A record of media types, with media type name as key, and its format IRI as value.\n * @range {json}\n */\n mediaTypeFormats: Record;\n /**\n * A multiplier for media type priorities.\n * This can be used for keeping the original media types in place,\n * but scaling all of their scores with a certain value.\n * @range {double}\n */\n priorityScale?: number;\n}\n","export * from './ActorAbstractMediaTyped';\nexport * from './ActorAbstractMediaTypedFixed';\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResultBindings,\n Bindings,\n IActionContext,\n MetadataBindings,\n IQuerySourceWrapper,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport {\n BufferedIterator,\n MultiTransformIterator,\n TransformIterator,\n EmptyIterator,\n} from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\nimport { PathVariableObjectIterator } from './PathVariableObjectIterator';\n\nconst DF = new DataFactory();\n\n/**\n * An abstract actor that handles Path operations.\n *\n * Provides multiple helper functions used by the Path operation actors.\n */\nexport abstract class ActorAbstractPath extends ActorQueryOperationTypedMediated {\n protected static readonly FACTORY: Factory = new Factory();\n\n protected readonly predicateType: string;\n\n protected constructor(args: IActorQueryOperationTypedMediatedArgs, predicateType: string) {\n super(args, 'path');\n this.predicateType = predicateType;\n }\n\n public async testOperation(operation: Algebra.Path, _context: IActionContext): Promise {\n if (operation.predicate.type !== this.predicateType) {\n throw new Error(`This Actor only supports ${this.predicateType} Path operations.`);\n }\n\n return true;\n }\n\n // Generates a variable that does not yet occur in the path\n public generateVariable(path?: Algebra.Path, name?: string): RDF.Variable {\n if (!name) {\n return this.generateVariable(path, 'b');\n }\n\n // Path predicates can't contain variables\n if (path && (path.subject.value === name || path.object.value === name)) {\n return this.generateVariable(path, `${name}b`);\n }\n\n return DF.variable(name);\n }\n\n // Such connectivity matching does not introduce duplicates (it does not incorporate any count of the number\n // of ways the connection can be made) even if the repeated path itself would otherwise result in duplicates.\n // https://www.w3.org/TR/sparql11-query/#propertypaths\n public async isPathArbitraryLengthDistinct(context: IActionContext, path: Algebra.Path):\n Promise<{ context: IActionContext; operation: IQueryOperationResultBindings | undefined }> {\n if (!context.get(KeysQueryOperation.isPathArbitraryLengthDistinctKey)) {\n context = context.set(KeysQueryOperation.isPathArbitraryLengthDistinctKey, true);\n return { context, operation: ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n operation: ActorAbstractPath.FACTORY.createDistinct(path),\n context,\n })) };\n }\n\n context = context.set(KeysQueryOperation.isPathArbitraryLengthDistinctKey, false);\n return { context, operation: undefined };\n }\n\n private async predicateStarGraphVariable(\n subject: RDF.Term,\n object: RDF.Variable,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Variable,\n context: IActionContext,\n bindingsFactory: BindingsFactory,\n ): Promise {\n const sources = this.getPathSources(predicate);\n // TODO: refactor this with an iterator just like PathVariableObjectIterator so we handle backpressure correctly\n // Construct path to obtain all graphs where subject exists\n const predVar = this.generateVariable(ActorAbstractPath.FACTORY\n .createPath(subject, predicate, object, graph));\n const findGraphs = ActorAbstractPath.FACTORY.createUnion([\n this.assignPatternSources(ActorAbstractPath.FACTORY.createPattern(subject, predVar, object, graph), sources),\n this.assignPatternSources(ActorAbstractPath.FACTORY.createPattern(object, predVar, subject, graph), sources),\n ]);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: findGraphs }),\n );\n\n const passedGraphs: Set = new Set();\n\n const bindingsStream = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n // Extract the graph and start a predicate* search starting from subject in each graph\n const graphValue: RDF.Term = bindings.get(graph)!;\n if (passedGraphs.has(graphValue.value)) {\n return new EmptyIterator();\n }\n passedGraphs.add(graphValue.value);\n return new TransformIterator(\n async() => {\n const it = new BufferedIterator();\n await this.getObjectsPredicateStar(subject, predicate, graphValue, context, {}, it, { count: 0 });\n return it.transform({\n transform(item, next, push) {\n push(bindingsFactory.bindings([\n [ object, item ],\n [ graph, graphValue ],\n ]));\n next();\n },\n });\n },\n { maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n\n return {\n bindingsStream,\n metadata: results.metadata,\n };\n }\n\n /**\n * Returns an iterator with Bindings of the query subject predicate* ?o or subject predicate+ ?o\n * If graph is a variable, it will also be in those bindings\n * @param {Term} subject Term of where we start the predicate* search.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Variable} object Variable of the zeroOrMore-query.\n * @param {Term} graph The graph in which we search for the pattern. (Possibly a variable)\n * @param {ActionContext} context The context to pass to sub-opertations\n * @param emitFirstSubject If the path operation is predicate*, otherwise it is predicate+.\n * @return {Promise} Iterator to where all bindings of query should have been pushed.\n */\n public async getObjectsPredicateStarEval(\n subject: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n object: RDF.Variable,\n graph: RDF.Term,\n context: IActionContext,\n emitFirstSubject: boolean,\n bindingsFactory: BindingsFactory,\n ): Promise {\n if (graph.termType === 'Variable') {\n return this.predicateStarGraphVariable(subject, object, predicate, graph, context, bindingsFactory);\n }\n\n const it = new PathVariableObjectIterator(\n subject,\n predicate,\n graph,\n context,\n this.mediatorQueryOperation,\n emitFirstSubject,\n );\n\n const bindingsStream = it.transform({\n autoStart: false,\n transform(item, next, push) {\n push(bindingsFactory.bindings([[ object, item ]]));\n next();\n },\n });\n\n return {\n bindingsStream,\n async metadata() {\n const metadata: MetadataBindings = await new Promise((resolve) => {\n it.getProperty('metadata', (metadataInner: any) => resolve(metadataInner()));\n });\n // Increment cardinality by one, because we always have at least one result once we reach this stage.\n // See the transformation above where we push a single binding.\n metadata.cardinality.value++;\n return metadata;\n },\n };\n }\n\n /**\n * Pushes all terms to iterator `it` that are a solution of object predicate* ?o.\n * @param {Term} object Term of where we start the predicate* search.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {Record} termHashes Remembers the objects we've already searched for.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} The results metadata.\n */\n public async getObjectsPredicateStar(\n object: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Term,\n context: IActionContext,\n termHashes: Record,\n it: BufferedIterator,\n counter: any,\n ): Promise {\n const termString = termToString(object);\n if (termHashes[termString]) {\n return;\n }\n\n ( it)._push(object);\n termHashes[termString] = object;\n counter.count++;\n\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(object, predicate, thisVariable, graph);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: path, context }),\n );\n // TODO: fixme\n // eslint-disable-next-line ts/no-misused-promises\n results.bindingsStream.on('data', async(bindings: Bindings) => {\n const result = bindings.get(thisVariable);\n await this.getObjectsPredicateStar(result!, predicate, graph, context, termHashes, it, counter);\n });\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n });\n\n return results.metadata;\n }\n\n /**\n * Pushes all terms to iterator `it` that are a solution of ?s predicate* ?o.\n * @param {string} subjectVar String representation of subjectVariable\n * @param {string} objectVar String representation of objectVariable\n * @param {Term} subjectVal Term of where we start the predicate* search.\n * @param {Term} objectVal Found solution for an object, start for the new step.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {{[id: string]: Promise}} termHashesGlobal\n * Remembers solutions for when objectVal is already been calculated, can be reused when same objectVal occurs\n * @param {{[id: string]: Term}} termHashesCurrentSubject\n * Remembers the pairs we've already searched for, can stop searching if so.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} All solutions of query should have been pushed to it by then.\n */\n // Let the iterator `it` emit all bindings of size 2, with subjectStringVariable as value subjectVal\n // and objectStringVariable as value all nodes reachable through predicate* beginning at objectVal\n public async getSubjectAndObjectBindingsPredicateStar(\n subjectVar: RDF.Variable,\n objectVar: RDF.Variable,\n subjectVal: RDF.Term,\n objectVal: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Term,\n context: IActionContext,\n termHashesGlobal: Record>,\n termHashesCurrentSubject: Record,\n it: BufferedIterator,\n counter: any,\n bindingsFactory: BindingsFactory,\n ): Promise {\n const termString = termToString(objectVal) + termToString(graph);\n\n // If this combination of subject and object already done, return nothing\n if (termHashesCurrentSubject[termString]) {\n return;\n }\n\n counter.count++;\n termHashesCurrentSubject[termString] = true;\n ( it)._push(bindingsFactory.bindings([\n [ subjectVar, subjectVal ],\n [ objectVar, objectVal ],\n ]));\n\n // If every reachable node from object has already been calculated, use these for current subject too\n if (termString in termHashesGlobal) {\n const objects = await termHashesGlobal[termString];\n for (const object of objects) {\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subjectVal,\n object,\n predicate,\n graph,\n context,\n termHashesGlobal,\n termHashesCurrentSubject,\n it,\n counter,\n bindingsFactory,\n );\n }\n if (--counter.count === 0) {\n it.close();\n }\n\n return;\n }\n\n // Construct promise to calculate all reachable nodes from this object\n // TODO: fixme\n // eslint-disable-next-line no-async-promise-executor,ts/no-misused-promises\n const promise = new Promise(async(resolve, reject) => {\n const objectsArray: RDF.Term[] = [];\n\n // Construct path that leads us one step through predicate\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(objectVal, predicate, thisVariable, graph);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: path, context }),\n );\n\n // Recursive call on all neighbours\n // TODO: fixme\n // eslint-disable-next-line ts/no-misused-promises\n results.bindingsStream.on('data', async(bindings: RDF.Bindings) => {\n const result: RDF.Term = bindings.get(thisVariable)!;\n objectsArray.push(result);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subjectVal,\n result,\n predicate,\n graph,\n context,\n termHashesGlobal,\n termHashesCurrentSubject,\n it,\n counter,\n bindingsFactory,\n );\n });\n results.bindingsStream.on('error', reject);\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n resolve(objectsArray);\n });\n });\n\n // Set it in the termHashesGlobal when this object occurs again they can wait for this promise\n termHashesGlobal[termString] = promise;\n }\n\n /**\n * Find all sources recursively contained in the given path operation.\n * @param operation\n */\n public getPathSources(operation: Algebra.PropertyPathSymbol): IQuerySourceWrapper[] {\n switch (operation.type) {\n case Algebra.types.ALT:\n case Algebra.types.SEQ:\n return operation.input\n .flatMap((subOp: Algebra.PropertyPathSymbol) => this.getPathSources(subOp));\n case Algebra.types.INV:\n case Algebra.types.ONE_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_ONE_PATH:\n return this.getPathSources(operation.path);\n case Algebra.types.LINK:\n case Algebra.types.NPS: {\n const source = ActorQueryOperation.getOperationSource(operation);\n if (!source) {\n throw new Error(`Could not find a required source on a link path operation`);\n }\n return [ source ];\n }\n }\n }\n\n public assignPatternSources(pattern: Algebra.Pattern, sources: IQuerySourceWrapper[]): Algebra.Operation {\n if (sources.length === 0) {\n throw new Error(`Attempted to assign zero sources to a pattern during property path handling`);\n }\n if (sources.length === 1) {\n return ActorQueryOperation.assignOperationSource(pattern, sources[0]);\n }\n return ActorAbstractPath.FACTORY.createUnion(sources\n .map(source => ActorQueryOperation.assignOperationSource(pattern, source)), true);\n }\n}\n\nexport interface IPathResultStream {\n bindingsStream: AsyncIterator;\n metadata: () => Promise;\n}\n","import type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { BufferedIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\nconst FACTORY = new Factory();\n\n/**\n * An iterator that implements the multi-length property path operation (* and +)\n * for a fixed subject and predicate, and a variable object.\n */\nexport class PathVariableObjectIterator extends BufferedIterator {\n private readonly termHashes: Map = new Map();\n private readonly runningOperations: AsyncIterator[] = [];\n private readonly pendingOperations: { variable: RDF.Variable; operation: Algebra.Path }[] = [];\n\n public constructor(\n private readonly subject: RDF.Term,\n private readonly predicate: Algebra.PropertyPathSymbol,\n private readonly graph: RDF.Term,\n private readonly context: IActionContext,\n private readonly mediatorQueryOperation: MediatorQueryOperation,\n emitFirstSubject: boolean,\n private readonly maxRunningOperations = 16,\n ) {\n // The autoStart flag must be true to kickstart metadata collection\n super({ autoStart: true });\n\n // Push the subject as starting point\n this._push(this.subject, emitFirstSubject);\n }\n\n protected override _end(destroy?: boolean): void {\n // Close all running iterators\n for (const it of this.runningOperations) {\n it.destroy();\n }\n\n super._end(destroy);\n }\n\n protected override _push(item: RDF.Term, pushAsResult = true): void {\n let termString;\n if (pushAsResult) {\n // Don't push if this subject was already found\n termString = termToString(item);\n if (this.termHashes.has(termString)) {\n return;\n }\n }\n\n // Add a pending path operation for this item\n const variable = DF.variable('b');\n this.pendingOperations.push({\n variable,\n operation: FACTORY.createPath(item, this.predicate, variable, this.graph),\n });\n\n // Otherwise, push the subject\n if (termString) {\n this.termHashes.set(termString, item);\n super._push(item);\n }\n }\n\n protected override _read(count: number, done: () => void): void {\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n (async function() {\n // Open as many operations as possible\n while (self.runningOperations.length < self.maxRunningOperations) {\n if (self.pendingOperations.length === 0) {\n break;\n }\n\n const pendingOperation = self.pendingOperations.pop()!;\n const results = ActorQueryOperation.getSafeBindings(\n await self.mediatorQueryOperation.mediate({ operation: pendingOperation.operation, context: self.context }),\n );\n const runningOperation = results.bindingsStream.transform({\n autoStart: false,\n transform(bindings, next, push) {\n const newTerm: RDF.Term = bindings.get(pendingOperation.variable)!;\n push(newTerm);\n next();\n },\n });\n if (!runningOperation.done) {\n self.runningOperations.push(runningOperation);\n runningOperation.on('error', error => self.destroy(error));\n runningOperation.on('readable', () => {\n self.readable = true;\n self._fillBufferAsync();\n });\n runningOperation.on('end', () => {\n self.runningOperations.splice(self.runningOperations.indexOf(runningOperation), 1);\n self.readable = true;\n self._fillBufferAsync();\n });\n }\n\n self.setProperty('metadata', results.metadata);\n }\n\n // Try to read `count` items (based on UnionIterator)\n let lastCount = 0;\n let item: RDF.Term | null;\n // eslint-disable-next-line no-cond-assign\n while (lastCount !== (lastCount = count)) {\n // Prioritize the operations that have been added first\n for (let i = 0; i < self.runningOperations.length && count > 0; i++) {\n // eslint-disable-next-line no-cond-assign\n if ((item = self.runningOperations[i].read()) !== null) {\n count--;\n self._push(item);\n }\n }\n }\n\n // Close if everything has been read\n if (self.runningOperations.length === 0 && self.pendingOperations.length === 0) {\n self.close();\n }\n })().then(() => {\n done();\n }, error => this.destroy(error));\n }\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica Convert Shortcuts Context Preprocess Actor.\n */\nexport class ActorContextPreprocessConvertShortcuts extends ActorContextPreprocess {\n public readonly contextKeyShortcuts: Record;\n\n public constructor(args: IActorContextPreprocessConvertShortcutsArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n return {\n context: ActorContextPreprocessConvertShortcuts.expandShortcuts(action.context, this.contextKeyShortcuts),\n };\n }\n\n public static expandShortcuts(context: IActionContext, contextKeyShortcuts: Record): IActionContext {\n for (const key of context.keys()) {\n if (contextKeyShortcuts[key.name]) {\n context = context\n .set(new ActionContextKey(contextKeyShortcuts[key.name]), context.get(key))\n .delete(key);\n }\n }\n return context;\n }\n}\n\nexport interface IActorContextPreprocessConvertShortcutsArgs extends IActorContextPreprocessArgs {\n /**\n * A record of context shortcuts to full context keys (as defined in @comunica/context-entries).\n * @range {json}\n * @default {{\n * \"sources\": \"@comunica/actor-init-query:querySourcesUnidentified\",\n * \"destination\": \"@comunica/bus-rdf-update-quads:destination\",\n * \"initialBindings\": \"@comunica/actor-init-query:initialBindings\",\n * \"queryFormat\": \"@comunica/actor-init-query:queryFormat\",\n * \"baseIRI\": \"@comunica/actor-init-query:baseIRI\",\n * \"log\": \"@comunica/core:log\",\n * \"datetime\": \"@comunica/actor-http-memento:datetime\",\n * \"queryTimestamp\": \"@comunica/actor-init-query:queryTimestamp\",\n * \"httpProxyHandler\": \"@comunica/actor-http-proxy:httpProxyHandler\",\n * \"lenient\": \"@comunica/actor-init-query:lenient\",\n * \"httpIncludeCredentials\": \"@comunica/bus-http:include-credentials\",\n * \"httpAuth\": \"@comunica/bus-http:auth\",\n * \"httpTimeout\": \"@comunica/bus-http:http-timeout\",\n * \"httpBodyTimeout\": \"@comunica/bus-http:http-body-timeout\",\n * \"httpRetryCount\": \"@comunica/bus-http:http-retry-count\",\n * \"httpRetryDelay\": \"@comunica/bus-http:http-retry-delay\",\n * \"httpRetryOnServerError\": \"@comunica/bus-http:http-retry-on-server-error\",\n * \"fetch\": \"@comunica/bus-http:fetch\",\n * \"recoverBrokenLinks\": \"@comunica/bus-http-wayback:recover-broken-links\",\n * \"readOnly\": \"@comunica/bus-query-operation:readOnly\",\n * \"extensionFunctions\": \"@comunica/actor-init-query:extensionFunctions\",\n * \"extensionFunctionCreator\": \"@comunica/actor-init-query:extensionFunctionCreator\",\n * \"functionArgumentsCache\": \"@comunica/actor-init-query:functionArgumentsCache\",\n * \"explain\": \"@comunica/actor-init-query:explain\",\n * \"unionDefaultGraph\": \"@comunica/bus-query-operation:unionDefaultGraph\",\n * \"traverse\": \"@comunica/bus-query-source-identify:traverse\",\n * \"noCache\": \"@comunica/actor-init-query:noCache\",\n * \"distinctConstruct\": \"@comunica/actor-init-query:distinctConstruct\"\n * }}\n */\n contextKeyShortcuts: Record;\n}\n","import type {\n IActorContextPreprocessOutput,\n IActorContextPreprocessArgs,\n MediatorContextPreprocess,\n} from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { ActorHttpInvalidateListenable, IActionHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport { KeysInitQuery, KeysQueryOperation, KeysStatistics }\n from '@comunica/context-entries';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport { ActionContext } from '@comunica/core';\nimport type {\n ILink,\n IQuerySourceWrapper,\n QuerySourceUnidentified,\n QuerySourceUnidentifiedExpanded,\n IActionContext,\n IQuerySourceUnidentifiedExpanded,\n IStatisticBase,\n} from '@comunica/types';\nimport { LRUCache } from 'lru-cache';\n\n/**\n * A comunica Query Source Identify Context Preprocess Actor.\n */\nexport class ActorContextPreprocessQuerySourceIdentify extends ActorContextPreprocess {\n public readonly cacheSize: number;\n public readonly httpInvalidator: ActorHttpInvalidateListenable;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly cache?: LRUCache>;\n\n public constructor(args: IActorContextPreprocessQuerySourceIdentifyArgs) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(\n ({ url }: IActionHttpInvalidate) => url ? cache.delete(url) : cache.clear(),\n );\n }\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n let context = action.context;\n\n // Rewrite sources\n if (context.has(KeysInitQuery.querySourcesUnidentified)) {\n const querySourcesUnidentified: QuerySourceUnidentified[] = action.context\n .get(KeysInitQuery.querySourcesUnidentified)!;\n const querySourcesUnidentifiedExpanded = await Promise.all(querySourcesUnidentified\n .map(querySource => this.expandSource(querySource)));\n const querySources: IQuerySourceWrapper[] = await Promise.all(querySourcesUnidentifiedExpanded\n .map(async querySourceUnidentified => this.identifySource(querySourceUnidentified, action.context)));\n\n // When identifying sources in preprocess actor, we record this as a dereference seed document event\n const statisticDereferenceLinks: IStatisticBase | undefined = action.context\n .get(KeysStatistics.dereferencedLinks);\n if (statisticDereferenceLinks) {\n for (const querySource of querySources) {\n statisticDereferenceLinks.updateStatistic({\n url: querySource.source.referenceValue,\n metadata: {\n seed: true,\n },\n }, querySource.source);\n }\n }\n\n context = action.context\n .delete(KeysInitQuery.querySourcesUnidentified)\n .set(KeysQueryOperation.querySources, querySources);\n }\n\n return { context };\n }\n\n public async expandSource(querySource: QuerySourceUnidentified): Promise {\n if (typeof querySource === 'string' || 'match' in querySource) {\n return { value: querySource };\n }\n return {\n ...>querySource,\n context: (await this.mediatorContextPreprocess.mediate({\n context: ActionContext.ensureActionContext(querySource.context ?? {}),\n })).context,\n };\n }\n\n public identifySource(\n querySourceUnidentified: QuerySourceUnidentifiedExpanded,\n context: IActionContext,\n ): Promise {\n let sourcePromise: Promise | undefined;\n\n // Try to read from cache\n // Only sources based on string values (e.g. URLs) are supported!\n if (typeof querySourceUnidentified.value === 'string' && this.cache) {\n sourcePromise = this.cache.get(querySourceUnidentified.value)!;\n }\n\n // If not in cache, identify the source\n if (!sourcePromise) {\n sourcePromise = this.mediatorQuerySourceIdentify.mediate({ querySourceUnidentified, context })\n .then(({ querySource }) => querySource);\n\n // Set in cache\n if (typeof querySourceUnidentified.value === 'string' && this.cache) {\n this.cache.set(querySourceUnidentified.value, sourcePromise);\n }\n }\n\n return sourcePromise;\n }\n}\n\nexport interface IActorContextPreprocessQuerySourceIdentifyArgs extends IActorContextPreprocessArgs {\n /**\n * The maximum number of entries in the LRU cache, set to 0 to disable.\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n /* eslint-disable max-len */\n /**\n * An actor that listens to HTTP invalidation events\n * @default { a }\n */\n httpInvalidator: ActorHttpInvalidateListenable;\n /* eslint-enable max-len */\n /**\n * Mediator for identifying query sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysQueryOperation, KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IActorTest, IAction } from '@comunica/core';\nimport type { IQuerySourceWrapper, QuerySourceReference } from '@comunica/types';\nimport { QuerySourceSkolemized } from './QuerySourceSkolemized';\nimport { getSourceId } from './utils';\n\n/**\n * A comunica Query Source Skolemize Context Preprocess Actor.\n */\nexport class ActorContextPreprocessQuerySourceSkolemize extends ActorContextPreprocess {\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n let context = action.context;\n\n // Wrap sources in skolemized sources\n if (context.has(KeysQueryOperation.querySources)) {\n // Determine map of source id's\n if (!context.has(KeysQuerySourceIdentify.sourceIds)) {\n context = context.set(KeysQuerySourceIdentify.sourceIds, new Map());\n }\n const sourceIds: Map = context.getSafe(KeysQuerySourceIdentify.sourceIds);\n\n let sources: IQuerySourceWrapper[] = context.getSafe(KeysQueryOperation.querySources);\n sources = sources.map(sourceWrapper => ({\n source: new QuerySourceSkolemized(sourceWrapper.source, getSourceId(sourceIds, sourceWrapper.source)),\n context: sourceWrapper.context,\n }));\n context = context.set(KeysQueryOperation.querySources, sources);\n }\n\n return { context };\n }\n}\n","import { MetadataValidationState } from '@comunica/metadata';\nimport type {\n BindingsStream,\n FragmentSelectorShape,\n IActionContext,\n IQueryBindingsOptions,\n IQuerySource,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { deskolemizeOperation, skolemizeBindingsStream, skolemizeQuadStream } from './utils';\n\n/**\n * A IQuerySource wrapper that skolemizes outgoing quads and bindings.\n */\nexport class QuerySourceSkolemized implements IQuerySource {\n /**\n * The query source to wrap over.\n */\n public readonly innerSource: IQuerySource;\n /**\n * ID of the inner source, see KeysQuerySourceIdentify.sourceIds.\n */\n public readonly sourceId: string;\n\n public constructor(innerSource: IQuerySource, sourceId: string) {\n this.innerSource = innerSource;\n this.sourceId = sourceId;\n }\n\n public async getSelectorShape(context: IActionContext): Promise {\n return this.innerSource.getSelectorShape(context);\n }\n\n public queryBindings(\n operation: Algebra.Operation,\n context: IActionContext,\n options: IQueryBindingsOptions | undefined,\n ): BindingsStream {\n const operationMapped = deskolemizeOperation(operation, this.sourceId);\n if (!operationMapped) {\n const it: BindingsStream = new ArrayIterator([], { autoStart: false });\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: [],\n });\n return it;\n }\n return skolemizeBindingsStream(this.innerSource.queryBindings(operationMapped, context, options), this.sourceId);\n }\n\n public queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise {\n return this.innerSource.queryBoolean(operation, context);\n }\n\n public queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator {\n const operationMapped = deskolemizeOperation(operation, this.sourceId);\n if (!operationMapped) {\n const it: AsyncIterator = new ArrayIterator([], { autoStart: false });\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n });\n return it;\n }\n return skolemizeQuadStream(this.innerSource.queryQuads(operationMapped, context), this.sourceId);\n }\n\n public queryVoid(operation: Algebra.Update, context: IActionContext): Promise {\n return this.innerSource.queryVoid(operation, context);\n }\n\n public get referenceValue(): string | RDF.Source {\n return this.innerSource.referenceValue;\n }\n\n public toString(): string {\n return `${this.innerSource.toString()}(SkolemID:${this.sourceId})`;\n }\n}\n","import { BlankNodeScoped } from '@comunica/data-factory';\nimport type {\n BindingsStream,\n IQuerySource,\n MetadataBindings,\n MetadataQuads,\n QuerySourceReference,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { mapTermsNested } from 'rdf-terms';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\nexport const SKOLEM_PREFIX = 'urn:comunica_skolem:source_';\n\n/**\n * Get the unique, deterministic id for the given source.\n * @param sourceIds ID's of datasources, see KeysRdfResolveQuadPattern.sourceIds.\n * @param source A data source.\n * @return The id of the given source.\n */\nexport function getSourceId(sourceIds: Map, source: IQuerySource): string {\n let sourceId = sourceIds.get(source.referenceValue);\n if (sourceId === undefined) {\n sourceId = `${sourceIds.size}`;\n sourceIds.set(source.referenceValue, sourceId);\n }\n return sourceId;\n}\n\n/**\n * If the given term is a blank node, return a deterministic named node for it\n * based on the source id and the blank node value.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n * @return If the given term was a blank node, this will return a skolemized named node, otherwise the original term.\n */\nexport function skolemizeTerm(term: RDF.Term, sourceId: string): RDF.Term | BlankNodeScoped {\n if (term.termType === 'BlankNode') {\n return new BlankNodeScoped(`bc_${sourceId}_${term.value}`, DF.namedNode(`${SKOLEM_PREFIX}${sourceId}:${term.value}`));\n }\n return term;\n}\n\n/**\n * Skolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The skolemized quad.\n */\nexport function skolemizeQuad(quad: Q, sourceId: string): Q {\n return mapTermsNested(quad, term => skolemizeTerm(term, sourceId));\n}\n\n/**\n * Skolemize all terms in the given bindings.\n * @param bindings An RDF bindings object.\n * @param sourceId A source identifier.\n * @return The skolemized bindings.\n */\nexport function skolemizeBindings(bindings: RDF.Bindings, sourceId: string): RDF.Bindings {\n return bindings.map((term) => {\n if (term.termType === 'Quad') {\n return skolemizeQuad(term, sourceId);\n }\n return skolemizeTerm(term, sourceId);\n });\n}\n\n/**\n * Skolemize all terms in the given quad stream.\n * @param iterator An RDF quad stream.\n * @param sourceId A source identifier.\n * @return The skolemized quad stream.\n */\nexport function skolemizeQuadStream(iterator: AsyncIterator, sourceId: string): AsyncIterator {\n const ret = iterator.map(quad => skolemizeQuad(quad, sourceId));\n function inheritMetadata(): void {\n iterator.getProperty('metadata', (metadata: MetadataQuads) => {\n ret.setProperty('metadata', metadata);\n metadata.state.addInvalidateListener(inheritMetadata);\n });\n }\n inheritMetadata();\n return ret;\n}\n\n/**\n * Skolemize all terms in the given bindings stream.\n * @param iterator An RDF bindings stream.\n * @param sourceId A source identifier.\n * @return The skolemized bindings stream.\n */\nexport function skolemizeBindingsStream(iterator: BindingsStream, sourceId: string): BindingsStream {\n const ret = iterator.map(bindings => skolemizeBindings(bindings, sourceId));\n function inheritMetadata(): void {\n iterator.getProperty('metadata', (metadata: MetadataBindings) => {\n ret.setProperty('metadata', metadata);\n metadata.state.addInvalidateListener(inheritMetadata);\n });\n }\n inheritMetadata();\n return ret;\n}\n\n/**\n * If a given term was a skolemized named node for the given source id,\n * deskolemize it again to a blank node.\n * If the given term was a skolemized named node for another source, return false.\n * If the given term was not a skolemized named node, return the original term.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n */\nexport function deskolemizeTerm(term: RDF.Term, sourceId: string): RDF.Term | null {\n if (term.termType === 'BlankNode' && 'skolemized' in term) {\n term = ( term).skolemized;\n }\n if (term.termType === 'NamedNode' && term.value.startsWith(SKOLEM_PREFIX)) {\n const colonSeparator = term.value.indexOf(':', SKOLEM_PREFIX.length);\n const termSourceId = term.value.slice(SKOLEM_PREFIX.length, colonSeparator);\n // We had a skolemized term\n if (termSourceId === sourceId) {\n // It came from the correct source\n const termLabel = term.value.slice(colonSeparator + 1, term.value.length);\n return DF.blankNode(termLabel);\n }\n // It came from a different source\n return null;\n }\n return term;\n}\n\nexport function deskolemizeTermNestedThrowing(term: RDF.Term, sourceId: string): RDF.Term {\n if (term.termType === 'Quad') {\n return mapTermsNested(term, (subTerm) => {\n const deskolemized = deskolemizeTerm(subTerm, sourceId);\n if (!deskolemized) {\n throw new Error(`Skolemized term is not in scope for this source`);\n }\n return deskolemized;\n });\n }\n const ret = deskolemizeTerm(term, sourceId);\n if (ret === null) {\n throw new Error(`Skolemized term is not in scope for this source`);\n }\n return ret;\n}\n\n/**\n * Deskolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The deskolemized quad.\n */\nexport function deskolemizeQuad(quad: Q, sourceId: string): Q {\n return mapTermsNested(quad, (term: RDF.Term): RDF.Term => {\n const newTerm = deskolemizeTerm(term, sourceId);\n // If the term was skolemized in a different source then don't deskolemize it\n return newTerm ?? term;\n });\n}\n\n/**\n * Deskolemize all terms in the given quad.\n * Will return undefined if there is at least one blank node not in scope for this sourceId.\n * @param operation An algebra operation.\n * @param sourceId A source identifier.\n */\nexport function deskolemizeOperation(operation: O, sourceId: string): O | undefined {\n try {\n return Util.mapOperation(operation, {\n [Algebra.types.PATTERN](op, factory) {\n return {\n result: Object.assign(factory.createPattern(\n deskolemizeTermNestedThrowing(op.subject, sourceId),\n deskolemizeTermNestedThrowing(op.predicate, sourceId),\n deskolemizeTermNestedThrowing(op.object, sourceId),\n deskolemizeTermNestedThrowing(op.graph, sourceId),\n ), { metadata: op.metadata }),\n recurse: false,\n };\n },\n [Algebra.types.PATH](op, factory) {\n return {\n result: Object.assign(factory.createPath(\n deskolemizeTermNestedThrowing(op.subject, sourceId),\n op.predicate,\n deskolemizeTermNestedThrowing(op.object, sourceId),\n deskolemizeTermNestedThrowing(op.graph, sourceId),\n ), { metadata: op.metadata }),\n recurse: false,\n };\n },\n });\n } catch {\n // Return undefined for skolemized terms not in scope for this source\n }\n}\n","import type {\n IActorContextPreprocessOutput,\n IActorContextPreprocessArgs,\n IActionContextPreprocess,\n} from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysCore, KeysInitQuery, KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport type { FunctionArgumentsCache, Logger } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica Set Defaults Context Preprocess Actor.\n */\nexport class ActorContextPreprocessSetDefaults extends ActorContextPreprocess {\n private readonly defaultFunctionArgumentsCache: FunctionArgumentsCache;\n public readonly logger: Logger;\n\n public constructor(args: IActorContextPreprocessSetDefaultsArgs) {\n super(args);\n this.defaultFunctionArgumentsCache = {};\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IActionContextPreprocess): Promise {\n let context = action.context;\n\n if (action.initialize) {\n // Set default values\n context = context\n .setDefault(KeysInitQuery.queryTimestamp, new Date())\n .setDefault(KeysQuerySourceIdentify.sourceIds, new Map())\n .setDefault(KeysCore.log, this.logger)\n .setDefault(KeysInitQuery.functionArgumentsCache, this.defaultFunctionArgumentsCache)\n .setDefault(KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores, new Map());\n\n // Handle default query format\n let queryFormat: RDF.QueryFormat = { language: 'sparql', version: '1.1' };\n if (context.has(KeysInitQuery.queryFormat)) {\n queryFormat = context.get(KeysInitQuery.queryFormat)!;\n if (queryFormat.language === 'graphql') {\n context = context.setDefault(KeysInitQuery.graphqlSingularizeVariables, {});\n }\n } else {\n context = context.set(KeysInitQuery.queryFormat, queryFormat);\n }\n }\n\n return { context };\n }\n}\n\nexport interface IActorContextPreprocessSetDefaultsArgs extends IActorContextPreprocessArgs {\n /**\n * The logger of this actor\n * @default {a }\n */\n logger: Logger;\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysInitQuery, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest, IAction } from '@comunica/core';\nimport type { QuerySourceUnidentified } from '@comunica/types';\n\n/**\n * A comunica Source To Destination Context Preprocess Actor.\n */\nexport class ActorContextPreprocessSourceToDestination extends ActorContextPreprocess {\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n if (action.context.get(KeysInitQuery.querySourcesUnidentified) &&\n !action.context.get(KeysRdfUpdateQuads.destination)) {\n const sources: QuerySourceUnidentified[] = action.context.get(KeysInitQuery.querySourcesUnidentified)!;\n if (sources.length === 1) {\n return { context: action.context.set(KeysRdfUpdateQuads.destination, sources[0]) };\n }\n }\n return action;\n }\n}\n","import type { IActionHashBindings, IActorHashBindingsOutput } from '@comunica/bus-hash-bindings';\nimport { ActorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { IActorTest } from '@comunica/core';\nimport { sha1 } from 'hash.js';\nimport { termToString } from 'rdf-string';\n\n// eslint-disable-next-line ts/no-require-imports,ts/no-var-requires\nconst canonicalize = require('canonicalize');\n\n/**\n * A comunica Memento Http Actor.\n */\nexport class ActorHashBindingsSha1 extends ActorHashBindings {\n public async test(action: IActionHashBindings): Promise {\n if (!action.allowHashCollisions) {\n throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);\n }\n return true;\n }\n\n public async run(_action: IActionHashBindings): Promise {\n return {\n hashFunction: bindings => sha1()\n .update(canonicalize(Object.fromEntries([ ...bindings ]\n .map(([ key, value ]) => [ termToString(key), termToString(value) ]))))\n .digest('hex'),\n hashCollisions: true,\n };\n }\n}\n","import type { IActionHashQuads, IActorHashQuadsOutput } from '@comunica/bus-hash-quads';\nimport { ActorHashQuads } from '@comunica/bus-hash-quads';\nimport type { IActorTest } from '@comunica/core';\nimport { sha1 } from 'hash.js';\nimport { quadToStringQuad } from 'rdf-string';\n\n/**\n * A comunica Memento Http Actor.\n */\nexport class ActorHashQuadsSha1 extends ActorHashQuads {\n public async test(action: IActionHashQuads): Promise {\n if (!action.allowHashCollisions) {\n throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);\n }\n return true;\n }\n\n public async run(_action: IActionHashQuads): Promise {\n return {\n hashFunction: quad => sha1()\n .update(JSON.stringify(quadToStringQuad(quad)))\n .digest('hex'),\n hashCollisions: true,\n };\n }\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nimport { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/* istanbul ignore next */\nif (typeof process === 'undefined') {\n // Polyfills process.nextTick for readable-stream\n globalThis.process = require('process/');\n}\n\nexport class ActorInitQuery extends ActorInitQueryBase {}\n","import type { MediatorHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { IActionInit, IActorInitArgs, IActorOutputInit } from '@comunica/bus-init';\nimport { ActorInit } from '@comunica/bus-init';\nimport type { MediatorQueryProcess } from '@comunica/bus-query-process';\nimport type {\n MediatorQueryResultSerializeHandle,\n MediatorQueryResultSerializeMediaTypes,\n MediatorQueryResultSerializeMediaTypeFormats,\n} from '@comunica/bus-query-result-serialize';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A browser-safe comunica Query Init Actor.\n */\nexport class ActorInitQueryBase extends ActorInit implements IActorInitQueryBaseArgs {\n public readonly mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n public readonly mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n public readonly mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n public readonly mediatorHttpInvalidate: MediatorHttpInvalidate;\n public readonly mediatorQueryProcess: MediatorQueryProcess;\n\n public readonly queryString?: string;\n public readonly defaultQueryInputFormat?: string;\n public readonly allowNoSources?: boolean;\n public readonly context?: string;\n\n public async test(_action: IActionInit): Promise {\n return true;\n }\n\n public async run(_action: IActionInit): Promise {\n throw new Error('ActorInitSparql#run is not supported in the browser.');\n }\n}\n\nexport interface IActorInitQueryBaseArgs extends IActorInitArgs {\n /**\n * The query process mediator\n */\n mediatorQueryProcess: MediatorQueryProcess;\n /**\n * The query serialize mediator\n */\n mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n /**\n * The query serialize media type combinator\n */\n mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n /**\n * The query serialize media type format combinator\n */\n mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n /**\n * The HTTP cache invalidation mediator\n */\n mediatorHttpInvalidate: MediatorHttpInvalidate;\n\n /**\n * A SPARQL query string\n */\n queryString?: string;\n /**\n * The default query input format\n * @default {sparql}\n */\n defaultQueryInputFormat?: string;\n /**\n * If it should be allowed that the user passes no sources.\n * @default {false}\n */\n allowNoSources?: boolean;\n /**\n * A JSON string of a query operation context\n */\n context?: string;\n}\n","import type { IActionSparqlSerialize, IActorQueryResultSerializeOutput } from '@comunica/bus-query-result-serialize';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryEngine,\n IQueryExplained,\n QueryFormatType,\n QueryType,\n QueryExplainMode,\n BindingsStream,\n QueryAlgebraContext,\n QueryStringContext,\n IQueryBindingsEnhanced,\n IQueryQuadsEnhanced,\n QueryEnhanced,\n IQueryContextCommon,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/**\n * Base implementation of a Comunica query engine.\n */\nexport class QueryEngineBase<\n // eslint-disable-next-line unused-imports/no-unused-vars\n QueryContext extends IQueryContextCommon = IQueryContextCommon,\n QueryStringContextInner extends RDF.QueryStringContext = QueryStringContext,\n QueryAlgebraContextInner extends RDF.QueryAlgebraContext = QueryAlgebraContext,\n>\nimplements IQueryEngine {\n private readonly actorInitQuery: ActorInitQueryBase;\n\n public constructor(actorInitQuery: ActorInitQueryBase) {\n this.actorInitQuery = actorInitQuery;\n }\n\n public async queryBindings(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'bindings');\n }\n\n public async queryQuads(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise & RDF.ResultStream> {\n return this.queryOfType(query, context, 'quads');\n }\n\n public async queryBoolean(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'boolean');\n }\n\n public async queryVoid(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'void');\n }\n\n protected async queryOfType(\n query: QueryFormatTypeInner,\n context: undefined | (QueryFormatTypeInner extends string ?\n QueryStringContextInner : QueryAlgebraContextInner),\n expectedType: QueryTypeOut['resultType'],\n ): Promise> {\n const result = await this.query(query, context);\n if (result.resultType === expectedType) {\n return > await result.execute();\n }\n throw new Error(`Query result type '${expectedType}' was expected, while '${result.resultType}' was found.`);\n }\n\n /**\n * Evaluate the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to the query output.\n */\n public async query(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n const output = await this.queryOrExplain(query, context);\n if ('explain' in output) {\n throw new Error(`Tried to explain a query when in query-only mode`);\n }\n return output;\n }\n\n /**\n * Explain the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @param explainMode The explain mode.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n public async explain(\n query: QueryFormatTypeInner,\n context: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n explainMode: QueryExplainMode,\n ): Promise {\n context.explain = explainMode;\n const output = await this.queryOrExplain(query, context);\n return output;\n }\n\n /**\n * Evaluate or explain the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n public async queryOrExplain(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n const actionContext: IActionContext = ActionContext.ensureActionContext(context);\n\n // Invalidate caches if cache argument is set to false\n if (actionContext.get(KeysInitQuery.noCache)) {\n await this.invalidateHttpCache();\n }\n\n // Invoke query process\n const { result } = await this.actorInitQuery.mediatorQueryProcess.mediate({ query, context: actionContext });\n if ('explain' in result) {\n return result;\n }\n return QueryEngineBase.internalToFinalResult(result);\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL (weighted) result media types.\n */\n public async getResultMediaTypes(context?: any): Promise> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeCombiner\n .mediate({ context, mediaTypes: true })).mediaTypes;\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL result media type formats.\n */\n public async getResultMediaTypeFormats(context?: any): Promise> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeFormatCombiner\n .mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n\n /**\n * Convert a query result to a string stream based on a certain media type.\n * @param {IQueryOperationResult} queryResult A query result.\n * @param {string} mediaType A media type.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A text stream.\n */\n public async resultToString(queryResult: RDF.Query, mediaType?: string, context?: any):\n Promise {\n context = ActionContext.ensureActionContext(context);\n if (!mediaType) {\n switch (queryResult.resultType) {\n case 'bindings':\n mediaType = 'application/json';\n break;\n case 'quads':\n mediaType = 'application/trig';\n break;\n default:\n mediaType = 'simple';\n break;\n }\n }\n const handle: IActionSparqlSerialize = { ...await QueryEngineBase.finalToInternalResult(queryResult), context };\n return (await this.actorInitQuery.mediatorQueryResultSerialize\n .mediate({ context, handle, handleMediaType: mediaType })).handle;\n }\n\n /**\n * Invalidate all internal caches related to the given page URL.\n * If no page URL is given, then all pages will be invalidated.\n * @param {string} url The page URL to invalidate.\n * @param context An optional ActionContext to pass to the actors.\n * @return {Promise} A promise resolving when the caches have been invalidated.\n */\n public invalidateHttpCache(url?: string, context?: any): Promise {\n context = ActionContext.ensureActionContext(context);\n return this.actorInitQuery.mediatorHttpInvalidate.mediate({ url, context });\n }\n\n /**\n * Convert an internal query result to a final one.\n * @param internalResult An intermediary query result.\n */\n public static internalToFinalResult(internalResult: IQueryOperationResult): QueryType {\n switch (internalResult.type) {\n case 'bindings':\n return {\n resultType: 'bindings',\n execute: async() => internalResult.bindingsStream,\n metadata: async() => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'quads':\n return {\n resultType: 'quads',\n execute: async() => internalResult.quadStream,\n metadata: async() => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'boolean':\n return {\n resultType: 'boolean',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n case 'void':\n return {\n resultType: 'void',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n }\n }\n\n /**\n * Convert a final query result to an internal one.\n * @param finalResult A final query result.\n */\n public static async finalToInternalResult(finalResult: RDF.Query): Promise {\n switch (finalResult.resultType) {\n case 'bindings':\n return {\n type: 'bindings',\n bindingsStream: await finalResult.execute(),\n metadata: async() => await finalResult.metadata(),\n };\n case 'quads':\n return {\n type: 'quads',\n quadStream: > await finalResult.execute(),\n metadata: async() => await finalResult.metadata(),\n };\n case 'boolean':\n return {\n type: 'boolean',\n execute: () => finalResult.execute(),\n };\n case 'void':\n return {\n type: 'void',\n execute: () => finalResult.execute(),\n };\n }\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { getDataDestinationValue } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery, KeysQueryOperation, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IDataDestination, IQuerySourceWrapper } from '@comunica/types';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Assign Sources Exhaustive Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationAssignSourcesExhaustive extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const sources: IQuerySourceWrapper[] = action.context.get(KeysQueryOperation.querySources) ?? [];\n if (sources.length === 0) {\n return { operation: action.operation, context: action.context };\n }\n if (sources.length === 1) {\n const sourceWrapper = sources[0];\n const destination: IDataDestination | undefined = action.context.get(KeysRdfUpdateQuads.destination);\n if (!destination || sourceWrapper.source.referenceValue === getDataDestinationValue(destination)) {\n try {\n const shape = await sourceWrapper.source.getSelectorShape(action.context);\n if (ActorQueryOperation.doesShapeAcceptOperation(shape, action.operation)) {\n return {\n operation: ActorQueryOperation.assignOperationSource(action.operation, sourceWrapper),\n context: action.context,\n };\n }\n } catch {\n // Fallback to the default case when the selector shape does not exist,\n // which can occur for a non-existent destination.\n }\n }\n }\n return {\n operation: this.assignExhaustive(action.operation, sources),\n // We only keep queryString in the context if we only have a single source that accepts the full operation.\n // In that case, the queryString can be sent to the source as-is.\n context: action.context\n .delete(KeysInitQuery.queryString),\n };\n }\n\n /**\n * Assign the given sources to the leaves in the given query operation.\n * Leaves will be wrapped in a union operation and duplicated for every source.\n * The input operation will not be modified.\n * @param operation The input operation.\n * @param sources The sources to assign.\n */\n public assignExhaustive(operation: Algebra.Operation, sources: IQuerySourceWrapper[]): Algebra.Operation {\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n return Util.mapOperation(operation, {\n [Algebra.types.PATTERN](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createUnion(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.LINK](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.NPS](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.SERVICE](subOperation) {\n return {\n result: subOperation,\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT](subOperation, factory) {\n return {\n result: factory.createConstruct(\n self.assignExhaustive(subOperation.input, sources),\n subOperation.template,\n ),\n recurse: false,\n };\n },\n [Algebra.types.DELETE_INSERT](subOperation, factory) {\n return {\n result: factory.createDeleteInsert(\n subOperation.delete,\n subOperation.insert,\n subOperation.where ? self.assignExhaustive(subOperation.where, sources) : undefined,\n ),\n recurse: false,\n };\n },\n });\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica BGP to Join Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationBgpToJoin extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n bgp(op: Algebra.Bgp, factory: Factory) {\n return {\n recurse: false,\n result: factory.createJoin(op.patterns),\n };\n },\n });\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries/lib/Keys';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Construct Distinct Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationConstructDistinct extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (!action.context.has(KeysInitQuery.distinctConstruct)) {\n throw new Error(`${this.name} was not enabled by the query.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n construct(op: Algebra.Construct, factory: Factory) {\n return {\n recurse: false,\n result: factory.createDistinct(factory.createConstruct(op.input, op.template)),\n };\n },\n });\n return { operation, context: action.context.delete(KeysInitQuery.distinctConstruct) };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\nconst AF = new Factory();\n\n/**\n * A comunica Describe To Constructs Subject Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationDescribeToConstructsSubject extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (action.operation.type !== Algebra.types.DESCRIBE) {\n throw new Error(`Actor ${this.name} only supports describe operations, but got ${action.operation.type}`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operationOriginal: Algebra.Describe = action.operation;\n\n // Create separate construct queries for all non-variable terms\n const operations: Algebra.Construct[] = operationOriginal.terms\n .filter(term => term.termType !== 'Variable')\n .map((term: RDF.Term) => {\n // Transform each term to a separate construct operation with S ?p ?o patterns (BGP) for all terms\n const patterns: RDF.BaseQuad[] = [\n DF.quad(term, DF.variable('__predicate'), DF.variable('__object')),\n ];\n\n // eslint-disable-next-line unicorn/no-array-for-each\n patterns.forEach((templatePattern: any) => templatePattern.type = 'pattern');\n const templateOperation: Algebra.Operation = {\n type: Algebra.types.BGP,\n patterns: patterns,\n };\n\n // Create a construct query\n return {\n input: templateOperation,\n template: patterns,\n type: 'construct',\n };\n });\n\n // If we have variables in the term list,\n // create one separate construct operation to determine these variables using the input pattern.\n if (operations.length !== operationOriginal.terms.length) {\n let variablePatterns: Algebra.Pattern[] = [];\n operationOriginal.terms\n .filter(term => term.termType === 'Variable')\n // eslint-disable-next-line unicorn/no-array-for-each\n .forEach((term: RDF.Term, i: number) => {\n // Transform each term to an S ?p ?o pattern in a non-conflicting way\n const patterns: RDF.BaseQuad[] = [\n DF.quad(term, DF.variable(`__predicate${i}`), DF.variable(`__object${i}`)),\n ];\n\n // eslint-disable-next-line unicorn/no-array-for-each\n patterns.forEach((templatePattern: any) => templatePattern.type = 'pattern');\n variablePatterns = [ ...variablePatterns, ... patterns ];\n });\n\n // Add a single construct for the variables\n // This requires a join between the input pattern and our variable patterns that form a simple BGP\n operations.push({\n input: {\n type: Algebra.types.JOIN,\n input: [\n operationOriginal.input,\n { type: Algebra.types.BGP, patterns: variablePatterns },\n ],\n },\n template: variablePatterns,\n type: Algebra.types.CONSTRUCT,\n });\n }\n\n // Union the construct operations\n const operation = AF.createUnion(operations, false);\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationArgs,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { FragmentSelectorShape, IActionContext, IQuerySourceWrapper } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { mapTermsNested, uniqTerms } from 'rdf-terms';\nimport type { Factory } from 'sparqlalgebrajs';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Filter Pushdown Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationFilterPushdown extends ActorOptimizeQueryOperation {\n private readonly aggressivePushdown: boolean;\n private readonly maxIterations: number;\n private readonly splitConjunctive: boolean;\n private readonly mergeConjunctive: boolean;\n private readonly pushIntoLeftJoins: boolean;\n private readonly pushEqualityIntoPatterns: boolean;\n\n public constructor(args: IActorOptimizeQueryOperationFilterPushdownArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n let operation: Algebra.Operation = action.operation;\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n\n // Split conjunctive filters into nested filters\n if (this.splitConjunctive) {\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n // Split conjunctive filters into separate filters\n if (op.expression.expressionType === Algebra.expressionTypes.OPERATOR && op.expression.operator === '&&') {\n self.logDebug(action.context, `Split conjunctive filter into ${op.expression.args.length} nested filters`);\n return {\n recurse: true,\n result: op.expression.args\n .reduce((operation, expression) => factory.createFilter(operation, expression), op.input),\n };\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n }\n\n // Collect selector shapes of all operations\n const sources = this.getSources(operation);\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n const sourceShapes = new Map(<[IQuerySourceWrapper, FragmentSelectorShape][]> await Promise.all(sources\n .map(async source => [ source, await source.source.getSelectorShape(action.context) ])));\n\n // Push down all filters\n // We loop until no more filters can be pushed down.\n let repeat = true;\n let iterations = 0;\n while (repeat && iterations < this.maxIterations) {\n repeat = false;\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n // Check if the filter must be pushed down\n if (!self.shouldAttemptPushDown(op, sources, sourceShapes)) {\n return {\n recurse: true,\n result: op,\n };\n }\n\n // For all filter expressions in the operation,\n // we attempt to push them down as deep as possible into the algebra.\n const variables = self.getExpressionVariables(op.expression);\n const [ isModified, result ] = self\n .filterPushdown(op.expression, variables, op.input, factory, action.context);\n if (isModified) {\n repeat = true;\n }\n return {\n recurse: true,\n result,\n };\n },\n });\n iterations++;\n }\n\n if (iterations > 1) {\n self.logDebug(action.context, `Pushed down filters in ${iterations} iterations`);\n }\n\n // Merge nested filters into conjunctive filters\n if (this.mergeConjunctive) {\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n if (op.input.type === Algebra.types.FILTER) {\n const { nestedExpressions, input } = self.getNestedFilterExpressions(op);\n self.logDebug(action.context, `Merge ${nestedExpressions.length} nested filters into conjunctive filter`);\n return {\n recurse: true,\n result: factory.createFilter(\n input,\n nestedExpressions.slice(1).reduce((previous, current) =>\n factory.createOperatorExpression('&&', [ previous, current ]), nestedExpressions[0]),\n ),\n };\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n }\n\n return { operation, context: action.context };\n }\n\n /**\n * Check if the given filter operation must be attempted to push down, based on the following criteria:\n * - Always push down if aggressive mode is enabled\n * - Push down if the filter is extremely selective\n * - Push down if federated and at least one accepts the filter\n * @param operation The filter operation\n * @param sources The query sources in the operation\n * @param sourceShapes A mapping of sources to selector shapes.\n */\n public shouldAttemptPushDown(\n operation: Algebra.Filter,\n sources: IQuerySourceWrapper[],\n sourceShapes: Map,\n ): boolean {\n // Always push down if aggressive mode is enabled\n if (this.aggressivePushdown) {\n return true;\n }\n\n // Push down if the filter is extremely selective\n const expression = operation.expression;\n if (expression.expressionType === Algebra.expressionTypes.OPERATOR &&\n expression.operator === '=' &&\n ((expression.args[0].expressionType === 'term' && expression.args[0].term.termType !== 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType === 'Variable') ||\n (expression.args[0].expressionType === 'term' && expression.args[0].term.termType === 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType !== 'Variable'))) {\n return true;\n }\n\n // Push down if federated and at least one accepts the filter\n if (sources.some(source => ActorQueryOperation.doesShapeAcceptOperation(sourceShapes.get(source)!, operation))) {\n return true;\n }\n\n // Don't push down in all other cases\n return false;\n }\n\n /**\n * Collected all sources that are defined within the given operation of children recursively.\n * @param operation An operation.\n */\n public getSources(operation: Algebra.Operation): IQuerySourceWrapper[] {\n const sources = new Set();\n const sourceAdder = (subOperation: Algebra.Operation): boolean => {\n const src = ActorQueryOperation.getOperationSource(subOperation);\n if (src) {\n sources.add(src);\n }\n return false;\n };\n Util.recurseOperation(operation, {\n [Algebra.types.PATTERN]: sourceAdder,\n [Algebra.types.LINK]: sourceAdder,\n [Algebra.types.NPS]: sourceAdder,\n [Algebra.types.SERVICE]: sourceAdder,\n });\n return [ ...sources ];\n }\n\n /**\n * Get all variables inside the given expression.\n * @param expression An expression.\n * @return An array of variables, or undefined if the expression is unsupported for pushdown.\n */\n public getExpressionVariables(expression: Algebra.Expression): RDF.Variable[] {\n switch (expression.expressionType) {\n case Algebra.expressionTypes.AGGREGATE:\n case Algebra.expressionTypes.WILDCARD:\n throw new Error(`Getting expression variables is not supported for ${expression.expressionType}`);\n case Algebra.expressionTypes.EXISTENCE:\n return Util.inScopeVariables(expression.input);\n case Algebra.expressionTypes.NAMED:\n return [];\n case Algebra.expressionTypes.OPERATOR:\n return uniqTerms(expression.args.flatMap(arg => this.getExpressionVariables(arg)));\n case Algebra.expressionTypes.TERM:\n if (expression.term.termType === 'Variable') {\n return [ expression.term ];\n }\n return [];\n }\n }\n\n protected getOverlappingOperations(\n operation: Algebra.Operation,\n expressionVariables: RDF.Variable[],\n ): {\n fullyOverlapping: Algebra.Operation[];\n partiallyOverlapping: Algebra.Operation[];\n notOverlapping: Algebra.Operation[];\n } {\n const fullyOverlapping: Algebra.Operation[] = [];\n const partiallyOverlapping: Algebra.Operation[] = [];\n const notOverlapping: Algebra.Operation[] = [];\n for (const input of operation.input) {\n const inputVariables = Util.inScopeVariables(input);\n if (this.variablesSubSetOf(expressionVariables, inputVariables)) {\n fullyOverlapping.push(input);\n } else if (this.variablesIntersect(expressionVariables, inputVariables)) {\n partiallyOverlapping.push(input);\n } else {\n notOverlapping.push(input);\n }\n }\n\n return {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n };\n }\n\n /**\n * Recursively push down the given expression into the given operation if possible.\n * Different operators have different semantics for choosing whether or not to push down,\n * and how this pushdown is done.\n * For every passed operator, it is checked whether or not the filter will have any effect on the operation.\n * If not, the filter is voided.\n * @param expression An expression to push down.\n * @param expressionVariables The variables inside the given expression.\n * @param operation The operation to push down into.\n * @param factory An algebra factory.\n * @param context The action context.\n * @return A tuple indicating if the operation was modified and the modified operation.\n */\n public filterPushdown(\n expression: Algebra.Expression,\n expressionVariables: RDF.Variable[],\n operation: Algebra.Operation,\n factory: Factory,\n context: IActionContext,\n ): [ boolean, Algebra.Operation ] {\n // Void false expressions\n if (this.isExpressionFalse(expression)) {\n return [ true, factory.createUnion([]) ];\n }\n\n // Don't push down (NOT) EXISTS\n if (expression.type === Algebra.types.EXPRESSION &&\n expression.expressionType === Algebra.expressionTypes.EXISTENCE) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n\n switch (operation.type) {\n case Algebra.types.EXTEND:\n // Pass if the variable is not part of the expression\n if (!this.variablesIntersect([ operation.variable ], expressionVariables)) {\n return [ true, factory.createExtend(\n this.filterPushdown(expression, expressionVariables, operation.input, factory, context)[1],\n operation.variable,\n operation.expression,\n ) ];\n }\n return [ false, factory.createFilter(operation, expression) ];\n case Algebra.types.FILTER: {\n // Always pass\n const [ isModified, result ] = this\n .filterPushdown(expression, expressionVariables, operation.input, factory, context);\n return [ isModified, factory.createFilter(result, operation.expression) ];\n }\n case Algebra.types.JOIN: {\n // Don't push down for empty join\n if (operation.input.length === 0) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n\n // Determine overlapping operations\n const {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n } = this.getOverlappingOperations(operation, expressionVariables);\n\n const joins: Algebra.Operation[] = [];\n let isModified = false;\n if (fullyOverlapping.length > 0) {\n isModified = true;\n joins.push(factory.createJoin(fullyOverlapping\n .map(input => this.filterPushdown(expression, expressionVariables, input, factory, context)[1])));\n }\n if (partiallyOverlapping.length > 0) {\n joins.push(factory.createFilter(factory.createJoin(partiallyOverlapping, false), expression));\n }\n if (notOverlapping.length > 0) {\n joins.push(...notOverlapping);\n }\n\n if (joins.length > 1) {\n isModified = true;\n }\n\n if (isModified) {\n this.logDebug(context, `Push down filter across join entries with ${fullyOverlapping.length} fully overlapping, ${partiallyOverlapping.length} partially overlapping, and ${notOverlapping.length} not overlapping`);\n }\n\n return [ isModified, joins.length === 1 ? joins[0] : factory.createJoin(joins) ];\n }\n case Algebra.types.NOP:\n return [ true, operation ];\n case Algebra.types.PROJECT:\n // Push down if variables overlap\n if (this.variablesIntersect(operation.variables, expressionVariables)) {\n return [ true, factory.createProject(\n this.filterPushdown(expression, expressionVariables, operation.input, factory, context)[1],\n operation.variables,\n ) ];\n }\n // Void expression otherwise\n return [ true, operation ];\n case Algebra.types.UNION: {\n // Determine overlapping operations\n const {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n } = this.getOverlappingOperations(operation, expressionVariables);\n\n const unions: Algebra.Operation[] = [];\n let isModified = false;\n if (fullyOverlapping.length > 0) {\n isModified = true;\n unions.push(factory.createUnion(fullyOverlapping\n .map(input => this.filterPushdown(expression, expressionVariables, input, factory, context)[1])));\n }\n if (partiallyOverlapping.length > 0) {\n unions.push(factory.createFilter(factory.createUnion(partiallyOverlapping, false), expression));\n }\n if (notOverlapping.length > 0) {\n unions.push(...notOverlapping);\n }\n\n if (unions.length > 1) {\n isModified = true;\n }\n\n if (isModified) {\n this.logDebug(context, `Push down filter across union entries with ${fullyOverlapping.length} fully overlapping, ${partiallyOverlapping.length} partially overlapping, and ${notOverlapping.length} not overlapping`);\n }\n\n return [ isModified, unions.length === 1 ? unions[0] : factory.createUnion(unions) ];\n }\n case Algebra.types.VALUES:\n // Only keep filter if it overlaps with the variables\n if (this.variablesIntersect(operation.variables, expressionVariables)) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n return [ true, operation ];\n case Algebra.types.LEFT_JOIN: {\n if (this.pushIntoLeftJoins) {\n const rightVariables = Util.inScopeVariables(operation.input[1]);\n if (!this.variablesIntersect(expressionVariables, rightVariables)) {\n // If filter *only* applies to left entry of optional, push it down into that.\n this.logDebug(context, `Push down filter into left join`);\n return [ true, factory.createLeftJoin(\n this.filterPushdown(expression, expressionVariables, operation.input[0], factory, context)[1],\n operation.input[1],\n operation.expression,\n ) ];\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.PATTERN: {\n if (this.pushEqualityIntoPatterns) {\n // Try to push simple FILTER(?s = ) expressions into the pattern\n const pushableResult = this.getEqualityExpressionPushableIntoPattern(expression);\n if (pushableResult) {\n let isModified = false;\n const originalMetadata = operation.metadata;\n operation = mapTermsNested(operation, (value) => {\n if (value.equals(pushableResult.variable)) {\n isModified = true;\n return pushableResult.term;\n }\n return value;\n });\n operation.type = Algebra.types.PATTERN;\n operation.metadata = originalMetadata;\n if (isModified) {\n this.logDebug(context, `Push down filter into pattern for ?${pushableResult.variable.value}`);\n return [ true, factory.createJoin([\n operation,\n factory.createValues(\n [ pushableResult.variable ],\n [{ [`?${pushableResult.variable.value}`]: pushableResult.term }],\n ),\n ]) ];\n }\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.PATH: {\n if (this.pushEqualityIntoPatterns) {\n // Try to push simple FILTER(?s = ) expressions into the path\n const pushableResult = this.getEqualityExpressionPushableIntoPattern(expression);\n if (pushableResult &&\n (operation.subject.equals(pushableResult.variable) || operation.object.equals(pushableResult.variable))) {\n this.logDebug(context, `Push down filter into path for ?${pushableResult.variable.value}`);\n const originalMetadata = operation.metadata;\n operation = factory.createPath(\n operation.subject.equals(pushableResult.variable) ? pushableResult.term : operation.subject,\n operation.predicate,\n operation.object.equals(pushableResult.variable) ? pushableResult.term : operation.object,\n );\n operation.metadata = originalMetadata;\n return [ true, factory.createJoin([\n operation,\n factory.createValues(\n [ pushableResult.variable ],\n [{ [`?${pushableResult.variable.value}`]: pushableResult.term }],\n ),\n ]) ];\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.MINUS:\n case Algebra.types.ALT:\n case Algebra.types.ASK:\n case Algebra.types.BGP:\n case Algebra.types.CONSTRUCT:\n case Algebra.types.DESCRIBE:\n case Algebra.types.DISTINCT:\n case Algebra.types.EXPRESSION:\n case Algebra.types.FROM:\n case Algebra.types.GRAPH:\n case Algebra.types.GROUP:\n case Algebra.types.INV:\n case Algebra.types.LINK:\n case Algebra.types.NPS:\n case Algebra.types.ONE_OR_MORE_PATH:\n case Algebra.types.ORDER_BY:\n case Algebra.types.REDUCED:\n case Algebra.types.SEQ:\n case Algebra.types.SERVICE:\n case Algebra.types.SLICE:\n case Algebra.types.ZERO_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_ONE_PATH:\n case Algebra.types.COMPOSITE_UPDATE:\n case Algebra.types.DELETE_INSERT:\n case Algebra.types.LOAD:\n case Algebra.types.CLEAR:\n case Algebra.types.CREATE:\n case Algebra.types.DROP:\n case Algebra.types.ADD:\n case Algebra.types.MOVE:\n case Algebra.types.COPY:\n // Operations that do not support pushing down\n // Left-join and minus might be possible to support in the future.\n return [ false, factory.createFilter(operation, expression) ];\n }\n }\n\n /**\n * Check if the given expression is a simple equals operation with one variable and one non-literal\n * (or literal with canonical lexical form) term that can be pushed into a pattern.\n * @param expression The current expression.\n * @return The variable and term to fill into the pattern, or undefined.\n */\n public getEqualityExpressionPushableIntoPattern(\n expression: Algebra.Expression,\n ): { variable: RDF.Variable; term: RDF.Term } | undefined {\n if (expression.expressionType === Algebra.expressionTypes.OPERATOR && expression.operator === '=') {\n if (expression.args[0].expressionType === 'term' && expression.args[0].term.termType !== 'Variable' &&\n (expression.args[0].term.termType !== 'Literal' ||\n this.isLiteralWithCanonicalLexicalForm(expression.args[0].term)) &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType === 'Variable') {\n return {\n variable: expression.args[1].term,\n term: expression.args[0].term,\n };\n }\n if (expression.args[0].expressionType === 'term' && expression.args[0].term.termType === 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType !== 'Variable' &&\n (expression.args[1].term.termType !== 'Literal' ||\n this.isLiteralWithCanonicalLexicalForm(expression.args[1].term))) {\n return {\n variable: expression.args[0].term,\n term: expression.args[1].term,\n };\n }\n }\n }\n\n /**\n * Check if the given term is a literal with datatype that where all values\n * can only have one possible lexical representation.\n * In other words, no variants of values exist that should be considered equal.\n * For example: \"01\"^xsd:number and \"1\"^xsd:number will return false.\n * @param term An RDF term.\n * @protected\n */\n protected isLiteralWithCanonicalLexicalForm(term: RDF.Term): boolean {\n if (term.termType === 'Literal') {\n switch (term.datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#string':\n case 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString':\n case 'http://www.w3.org/2001/XMLSchema#normalizedString':\n case 'http://www.w3.org/2001/XMLSchema#anyURI':\n case 'http://www.w3.org/2001/XMLSchema#base64Binary':\n case 'http://www.w3.org/2001/XMLSchema#language':\n case 'http://www.w3.org/2001/XMLSchema#Name':\n case 'http://www.w3.org/2001/XMLSchema#NCName':\n case 'http://www.w3.org/2001/XMLSchema#NMTOKEN':\n case 'http://www.w3.org/2001/XMLSchema#token':\n case 'http://www.w3.org/2001/XMLSchema#hexBinary':\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check if there is an overlap between the two given lists of variables.\n * @param varsA A list of variables.\n * @param varsB A list of variables.\n */\n public variablesIntersect(varsA: RDF.Variable[], varsB: RDF.Variable[]): boolean {\n return varsA.some(varA => varsB.some(varB => varA.equals(varB)));\n }\n\n /**\n * Check if all variables from the first list are included in the second list.\n * The second list may contain other variables as well.\n * @param varsNeedles A list of variables to search for.\n * @param varsHaystack A list of variables to search in.\n */\n public variablesSubSetOf(varsNeedles: RDF.Variable[], varsHaystack: RDF.Variable[]): boolean {\n return varsNeedles.length <= varsHaystack.length &&\n varsNeedles.every(varA => varsHaystack.some(varB => varA.equals(varB)));\n }\n\n /**\n * Check if an expression is simply 'false'.\n * @param expression An expression.\n */\n public isExpressionFalse(expression: Algebra.Expression): boolean {\n return (expression.term && expression.term.termType === 'Literal' && expression.term.value === 'false');\n }\n\n /**\n * Get all directly nested filter expressions.\n * As soon as a non-filter is found, it is returned as the input field.\n * @param op A filter expression.\n */\n public getNestedFilterExpressions(\n op: Algebra.Filter,\n ): { nestedExpressions: Algebra.Expression[]; input: Algebra.Operation } {\n if (op.input.type === Algebra.types.FILTER) {\n const childData = this.getNestedFilterExpressions(op.input);\n return { nestedExpressions: [ op.expression, ...childData.nestedExpressions ], input: childData.input };\n }\n return { nestedExpressions: [ op.expression ], input: op.input };\n }\n}\n\nexport interface IActorOptimizeQueryOperationFilterPushdownArgs extends IActorOptimizeQueryOperationArgs {\n /**\n * If filters should be pushed down as deep as possible.\n * If false, filters will only be pushed down if the source(s) accept them,\n * or if the filter is very selective.\n * @range {boolean}\n * @default {false}\n */\n aggressivePushdown: boolean;\n /**\n * The maximum number of full iterations across the query can be done for attempting to push down filters.\n * @default {10}\n */\n maxIterations: number;\n /**\n * If conjunctive filters should be split into nested filters before applying filter pushdown.\n * This can enable pushing down deeper.\n * @range {boolean}\n * @default {true}\n */\n splitConjunctive: boolean;\n /**\n * If nested filters should be merged into conjunctive filters after applying filter pushdown.\n * @range {boolean}\n * @default {true}\n */\n mergeConjunctive: boolean;\n /**\n * If filters should be pushed into left-joins.\n * @range {boolean}\n * @default {true}\n */\n pushIntoLeftJoins: boolean;\n /**\n * If simple equality filters should be pushed into patterns and paths.\n * This only applies to equality filters with terms that are not literals that have no canonical lexical form.\n * @range {boolean}\n * @default {true}\n */\n pushEqualityIntoPatterns: boolean;\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQuerySourceWrapper } from '@comunica/types';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\n\n/**\n * A comunica Group Sources Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationGroupSources extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n return { operation: await this.groupOperation(action.operation, action.context), context: action.context };\n }\n\n /**\n * Group operations belonging to the same source together, only if that source accepts the grouped operations.\n * This grouping will be done recursively for the whole operation tree.\n * Operations annotated with sources are considered leaves in the tree.\n * @param operation An operation to group.\n * @param context The action context.\n */\n public async groupOperation(operation: Algebra.Operation, context: IActionContext): Promise {\n // Return operation as-is if the operation already has a single source, or if the operation has no children.\n if (ActorQueryOperation.getOperationSource(operation) ?? !('input' in operation)) {\n return operation;\n }\n\n // If operation has a single input, move source annotation upwards if the source can handle it.\n if (!Array.isArray(operation.input)) {\n const groupedInput = await this.groupOperation(operation.input, context);\n if (groupedInput.metadata?.scopedSource) {\n const source: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(groupedInput)!;\n if (ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), operation)) {\n this.logDebug(context, `Hoist 1 source-specific operation into a single ${operation.type} operation for ${source.source.toString()}`);\n ActorQueryOperation.removeOperationSource(groupedInput);\n operation = ActorQueryOperation.assignOperationSource(operation, source);\n }\n }\n return { ...operation, input: groupedInput };\n }\n\n // If operation has multiple inputs, cluster source annotations.\n const inputs: Algebra.Operation[] = await Promise.all(operation.input\n .map(subInput => this.groupOperation(subInput, context)));\n const clusters = this.clusterOperationsWithEqualSources(inputs);\n\n // If we just have a single cluster, move the source annotation upwards\n if (clusters.length === 1) {\n const newInputs = clusters[0];\n const source = ActorQueryOperation.getOperationSource(clusters[0][0])!;\n return {\n ...await this.moveSourceAnnotationUpwardsIfPossible(operation, newInputs, source, context),\n input: newInputs,\n };\n }\n\n // If the number of clusters is equal to the number of original inputs, do nothing.\n if (clusters.length === inputs.length) {\n return { ...operation, input: inputs };\n }\n\n // If we have multiple clusters, created nested multi-operations\n let multiFactoryMethod: (children: Algebra.Operation[], flatten: boolean) => Algebra.Operation;\n switch (operation.type) {\n case Algebra.types.JOIN:\n multiFactoryMethod = AF.createJoin.bind(AF);\n break;\n case Algebra.types.UNION:\n multiFactoryMethod = AF.createUnion.bind(AF);\n break;\n case Algebra.types.ALT:\n multiFactoryMethod = AF.createAlt.bind(AF);\n break;\n case Algebra.types.SEQ:\n multiFactoryMethod = AF.createSeq.bind(AF);\n break;\n default:\n // While LeftJoin and Minus are also multi-operations,\n // these can never occur because they only have 2 inputs,\n // so these cases will always be captured by one of the 2 if-cases above\n // (clusters.length === 1 or clusters.length === input.length)\n\n // In all other cases, error\n throw new Error(`Unsupported operation '${operation.type}' detected while grouping sources`);\n }\n return await this.groupOperationMulti(clusters, multiFactoryMethod, context);\n }\n\n protected async groupOperationMulti(\n clusters: Algebra.Operation[][],\n factoryMethod: (children: Algebra.Operation[], flatten: boolean) => Algebra.Operation,\n context: IActionContext,\n ): Promise {\n let flatten = true;\n const nestedMerges = await Promise.all(clusters.map(async(cluster) => {\n const source = ActorQueryOperation.getOperationSource(cluster[0])!;\n const merged = await this\n .moveSourceAnnotationUpwardsIfPossible(factoryMethod(cluster, true), cluster, source, context);\n if (ActorQueryOperation.getOperationSource(merged)) {\n flatten = false;\n }\n return merged;\n }));\n return factoryMethod(nestedMerges, flatten);\n }\n\n /**\n * Cluster the given operations by equal source annotations.\n * @param operationsIn An array of operations to cluster.\n */\n public clusterOperationsWithEqualSources(operationsIn: Algebra.Operation[]): Algebra.Operation[][] {\n // Operations can have a source, or no source at all\n const sourceOperations: Map = new Map();\n const sourcelessOperations: Algebra.Operation[] = [];\n\n // Cluster by source\n for (const operation of operationsIn) {\n const source: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(operation)!;\n if (source) {\n if (!sourceOperations.has(source)) {\n sourceOperations.set(source, []);\n }\n sourceOperations.get(source)!.push(operation);\n } else {\n sourcelessOperations.push(operation);\n }\n }\n\n // Return clusters\n const clusters: Algebra.Operation[][] = [];\n if (sourcelessOperations.length > 0) {\n clusters.push(sourcelessOperations);\n }\n for (const [ source, operations ] of sourceOperations.entries()) {\n clusters.push(operations\n .map(operation => ActorQueryOperation.assignOperationSource(operation, source)));\n }\n return clusters;\n }\n\n /**\n * If the given source accepts the grouped operation, annotate the grouped operation with the source,\n * and remove the source annotation from the seperate input operations.\n * Otherwise, return the grouped operation unchanged.\n * @param operation A grouped operation consisting of all given input operations.\n * @param inputs An array of operations that share the same source annotation.\n * @param source The common source.\n * @param context The action context.\n */\n public async moveSourceAnnotationUpwardsIfPossible(\n operation: O,\n inputs: Algebra.Operation[],\n source: IQuerySourceWrapper | undefined,\n context: IActionContext,\n ): Promise {\n if (source && ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), operation)) {\n this.logDebug(context, `Hoist ${inputs.length} source-specific operations into a single ${operation.type} operation for ${source.source.toString()}`);\n operation = ActorQueryOperation.assignOperationSource(operation, source);\n for (const input of inputs) {\n ActorQueryOperation.removeOperationSource(input);\n }\n }\n return operation;\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join BGP Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationJoinBgp extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n join(op: Algebra.Join, factory: Factory) {\n if (op.input.every(subInput => subInput.type === 'bgp')) {\n return {\n recurse: false,\n result: factory.createBgp(op.input.flatMap(subInput => subInput.patterns)),\n };\n }\n return {\n recurse: false,\n result: op,\n };\n },\n });\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join Connected Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationJoinConnected extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n join(op: Algebra.Join, factory: Factory) {\n return {\n recurse: false,\n result: ActorOptimizeQueryOperationJoinConnected.cluster(op, factory),\n };\n },\n });\n return { operation, context: action.context };\n }\n\n /**\n * Iteratively cluster join entries based on their overlapping variables.\n * @param op A join operation.\n * @param factory An algebra factory.\n */\n public static cluster(op: Algebra.Join, factory: Factory): Algebra.Operation {\n // Initialize each entry to be in a separate cluster\n const initialClusters: IJoinCluster[] = op.input.map(subOp => ({\n inScopeVariables: Object.fromEntries(Util.inScopeVariables(subOp).map(variable => [ variable.value, true ])),\n entries: [ subOp ],\n }));\n\n // Iteratively merge clusters until they don't change anymore\n let oldClusters: IJoinCluster[];\n let newClusters: IJoinCluster[] = initialClusters;\n do {\n oldClusters = newClusters;\n newClusters = ActorOptimizeQueryOperationJoinConnected.clusterIteration(oldClusters);\n } while (oldClusters.length !== newClusters.length);\n\n // Create new join operation of latest clusters\n const subJoins = newClusters\n .map(cluster => cluster.entries.length === 1 ? cluster.entries[0] : factory.createJoin(cluster.entries));\n return subJoins.length === 1 ? subJoins[0] : factory.createJoin(subJoins, false);\n }\n\n /**\n * Perform a single clustering iteration.\n * Clusters will be joined if they have overlapping variables.\n * @param oldCluster\n */\n public static clusterIteration(oldCluster: IJoinCluster[]): IJoinCluster[] {\n const newClusters: IJoinCluster[] = [];\n\n for (const entry of oldCluster) {\n // Try to add entry to a join cluster\n let joined = false;\n for (const newEntry of newClusters) {\n if (ActorOptimizeQueryOperationJoinConnected\n .haveOverlappingVariables(entry.inScopeVariables, newEntry.inScopeVariables)) {\n newEntry.entries = [ ...newEntry.entries, ...entry.entries ];\n newEntry.inScopeVariables = { ...newEntry.inScopeVariables, ...entry.inScopeVariables };\n joined = true;\n break;\n }\n }\n\n // If none was found, create new cluster\n if (!joined) {\n newClusters.push({\n inScopeVariables: entry.inScopeVariables,\n entries: entry.entries,\n });\n }\n }\n\n return newClusters;\n }\n\n /**\n * Check if the two given variable objects are overlapping.\n * @param variablesA A variables objects.\n * @param variablesB A variables objects.\n */\n public static haveOverlappingVariables(\n variablesA: Record,\n variablesB: Record,\n ): boolean {\n for (const variableA of Object.keys(variablesA)) {\n if (variablesB[variableA]) {\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * A cluster of join entries.\n */\nexport interface IJoinCluster {\n /**\n * Union of all variables in scope within the join entries.\n */\n inScopeVariables: Record;\n /**\n * Join entries\n */\n entries: Algebra.Operation[];\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQuerySourceWrapper, MetadataBindings } from '@comunica/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory, Util } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\n\n/**\n * A comunica Prune Empty Source Operations Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationPruneEmptySourceOperations extends ActorOptimizeQueryOperation {\n private readonly useAskIfSupported: boolean;\n\n public constructor(args: IActorOptimizeQueryOperationPruneEmptySourceOperationsArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n let operation = action.operation;\n\n // Collect all operations with source types\n // Only consider unions of patterns or alts of links, since these are created during exhaustive source assignment.\n const collectedOperations: (Algebra.Pattern | Algebra.Link)[] = [];\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n Util.recurseOperation(operation, {\n [Algebra.types.UNION](subOperation) {\n self.collectMultiOperationInputs(subOperation.input, collectedOperations, Algebra.types.PATTERN);\n return true;\n },\n [Algebra.types.ALT](subOperation) {\n self.collectMultiOperationInputs(subOperation.input, collectedOperations, Algebra.types.LINK);\n return false;\n },\n [Algebra.types.SERVICE]() {\n return false;\n },\n });\n\n // Determine in an async manner whether or not these sources return non-empty results\n const emptyOperations: Set = new Set();\n await Promise.all(collectedOperations.map(async(collectedOperation) => {\n const checkOperation = collectedOperation.type === 'link' ?\n AF.createPattern(DF.variable('?s'), collectedOperation.iri, DF.variable('?o')) :\n collectedOperation;\n if (!await this.hasSourceResults(\n ActorQueryOperation.getOperationSource(collectedOperation)!,\n checkOperation,\n action.context,\n )) {\n emptyOperations.add(collectedOperation);\n }\n }));\n\n // Only perform next mapping if we have at least one empty operation\n if (emptyOperations.size > 0) {\n this.logDebug(action.context, `Pruning ${emptyOperations.size} source-specific operations`);\n // Rewrite operations by removing the empty children\n operation = Util.mapOperation(operation, {\n [Algebra.types.UNION](subOperation, factory) {\n return self.mapMultiOperation(subOperation, emptyOperations, children => factory.createUnion(children));\n },\n [Algebra.types.ALT](subOperation, factory) {\n return self.mapMultiOperation(subOperation, emptyOperations, children => factory.createAlt(children));\n },\n });\n\n // Identify and remove operations that have become empty now due to missing variables\n operation = Util.mapOperation(operation, {\n [Algebra.types.PROJECT](subOperation, factory) {\n // Remove projections that have become empty now due to missing variables\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation)) {\n return {\n recurse: false,\n result: factory.createUnion([]),\n };\n }\n return {\n recurse: true,\n result: subOperation,\n };\n },\n [Algebra.types.LEFT_JOIN](subOperation) {\n // Remove left joins with empty right operation\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation.input[1])) {\n return {\n recurse: true,\n result: subOperation.input[0],\n };\n }\n return {\n recurse: true,\n result: subOperation,\n };\n },\n });\n }\n\n return { operation, context: action.context };\n }\n\n protected static hasEmptyOperation(operation: Algebra.Operation): boolean {\n // If union (or alt) is empty, consider it empty (`Array.every` on an empty array always returns true)\n // But if we find a union with multiple children,\n // *all* of the children must be empty before the full operation is considered empty.\n let emptyOperation = false;\n Util.recurseOperation(operation, {\n [Algebra.types.UNION](subOperation) {\n if (subOperation.input.every(subSubOperation => ActorOptimizeQueryOperationPruneEmptySourceOperations\n .hasEmptyOperation(subSubOperation))) {\n emptyOperation = true;\n }\n return false;\n },\n [Algebra.types.ALT](subOperation) {\n if (subOperation.input.length === 0) {\n emptyOperation = true;\n }\n return false;\n },\n [Algebra.types.LEFT_JOIN](subOperation) {\n // Only recurse into left part of left-join\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation.input[0])) {\n emptyOperation = true;\n }\n return false;\n },\n });\n return emptyOperation;\n }\n\n protected collectMultiOperationInputs(\n inputs: Algebra.Operation[],\n collectedOperations: (Algebra.Pattern | Algebra.Link)[],\n inputType: (Algebra.Pattern | Algebra.Link)['type'],\n ): void {\n for (const input of inputs) {\n if (ActorQueryOperation.getOperationSource(input) && input.type === inputType) {\n collectedOperations.push(input);\n }\n }\n }\n\n protected mapMultiOperation(\n operation: O,\n emptyOperations: Set,\n multiOperationFactory: (input: O['input']) => Algebra.Operation,\n ): {\n result: Algebra.Operation;\n recurse: boolean;\n } {\n // Determine which operations return non-empty results\n const nonEmptyInputs = operation.input.filter(input => !emptyOperations.has(input));\n\n // Remove empty operations\n if (nonEmptyInputs.length === operation.input.length) {\n return { result: operation, recurse: true };\n }\n if (nonEmptyInputs.length === 0) {\n return { result: multiOperationFactory([]), recurse: false };\n }\n if (nonEmptyInputs.length === 1) {\n return { result: nonEmptyInputs[0], recurse: true };\n }\n return { result: multiOperationFactory(nonEmptyInputs), recurse: true };\n }\n\n /**\n * Check if the given query operation will produce at least one result in the given source.\n * @param source A query source.\n * @param input A query operation.\n * @param context The query context.\n */\n public async hasSourceResults(\n source: IQuerySourceWrapper,\n input: Algebra.Operation,\n context: IActionContext,\n ): Promise {\n // Traversal sources should never be considered empty at optimization time.\n if (source.context?.get(KeysQuerySourceIdentify.traverse)) {\n return true;\n }\n\n // Send an ASK query\n if (this.useAskIfSupported) {\n const askOperation = AF.createAsk(input);\n if (ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), askOperation)) {\n return source.source.queryBoolean(askOperation, context);\n }\n }\n\n // Send the operation as-is and check the response cardinality\n const bindingsStream = source.source.queryBindings(input, context);\n return new Promise((resolve, reject) => {\n bindingsStream.on('error', reject);\n bindingsStream.getProperty('metadata', (metadata: MetadataBindings) => {\n bindingsStream.destroy();\n resolve(metadata.cardinality.value > 0);\n });\n });\n }\n}\n\nexport interface IActorOptimizeQueryOperationPruneEmptySourceOperationsArgs extends IActorOptimizeQueryOperationArgs {\n /**\n * If true, ASK queries will be sent to the source instead of COUNT queries to check emptiness for patterns.\n * This will only be done for sources that accept ASK queries.\n * @default {false}\n */\n useAskIfSupported: boolean;\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Rewrite Add Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteAdd extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.ADD](operationOriginal, factory) {\n // CONSTRUCT all quads from the source, and INSERT them into the destination\n const destination = operationOriginal.destination === 'DEFAULT' ?\n DF.defaultGraph() :\n operationOriginal.destination;\n const source = operationOriginal.source === 'DEFAULT' ? DF.defaultGraph() : operationOriginal.source;\n\n const result = factory.createDeleteInsert(undefined, [\n factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), destination),\n ], factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), source));\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Rewrite Copy Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteCopy extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.COPY](operationOriginal, factory) {\n // No-op if source === destination\n let result: Algebra.CompositeUpdate;\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n result = factory.createCompositeUpdate([]);\n } else {\n // COPY is equivalent to drop destination, and add\n result = factory.createCompositeUpdate([\n factory.createDrop(operationOriginal.destination, true),\n factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n ]);\n }\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Rewrite Move Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteMove extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.MOVE](operationOriginal, factory) {\n // No-op if source === destination\n let result: Algebra.CompositeUpdate;\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n result = factory.createCompositeUpdate([]);\n } else {\n // MOVE is equivalent to drop destination, add, and drop source\n const updates = [\n factory.createDrop(operationOriginal.destination, true),\n factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n factory.createDrop(operationOriginal.source),\n ];\n result = factory.createCompositeUpdate(updates);\n }\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Ask Query Operation Actor.\n */\nexport class ActorQueryOperationAsk extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'ask');\n }\n\n public async testOperation(_operation: Algebra.Ask, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Ask, context: IActionContext): Promise {\n // Call other query operations like this:\n const output: IQueryOperationResult = await this.mediatorQueryOperation.mediate(\n { operation: operation.input, context },\n );\n const { bindingsStream }: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(output);\n return { type: 'boolean', execute: async() => (await bindingsStream.take(1).toArray()).length === 1 };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL BGP operations by rewriting it as a join operator.\n */\nexport class ActorQueryOperationBgpJoin extends ActorQueryOperationTypedMediated {\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'bgp');\n }\n\n public async testOperation(_operation: Algebra.Bgp, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Bgp, context: IActionContext):\n Promise {\n return this.mediatorQueryOperation.mediate({\n operation: ActorQueryOperationBgpJoin.FACTORY.createJoin(operation.patterns),\n context,\n });\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { getTermsNested, getVariables, uniqTerms } from 'rdf-terms';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { BindingsToQuadsIterator } from './BindingsToQuadsIterator';\n\n/**\n * A comunica Construct Query Operation Actor.\n */\nexport class ActorQueryOperationConstruct extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'construct');\n }\n\n /**\n * Find all variables in a list of triple patterns.\n * @param {Algebra.Pattern[]} patterns An array of triple patterns.\n * @return {RDF.Variable[]} The variables in the triple patterns.\n */\n public static getVariables(patterns: RDF.BaseQuad[]): RDF.Variable[] {\n return uniqTerms(( []).concat\n .apply([], patterns.map(pattern => getVariables(getTermsNested(pattern)))));\n }\n\n public async testOperation(_operation: Algebra.Construct, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.Construct, context: IActionContext):\n Promise {\n // Apply a projection on our CONSTRUCT variables first, as the query may contain other variables as well.\n const variables: RDF.Variable[] = ActorQueryOperationConstruct.getVariables(operationOriginal.template);\n const operation: Algebra.Operation = { type: Algebra.types.PROJECT, input: operationOriginal.input, variables };\n\n // Evaluate the input query\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation, context }),\n );\n\n // Construct triples using the result based on the pattern.\n // If it's a DESCRIBE query don't apply the blank node localisation.\n const quadStream: AsyncIterator = new BindingsToQuadsIterator(\n operationOriginal.template,\n output.bindingsStream,\n );\n\n // Let the final metadata contain the estimated number of triples\n const metadata: (() => Promise) = () => output.metadata().then(meta => ({\n ...meta,\n order: undefined,\n cardinality: {\n type: meta.cardinality.type,\n value: meta.cardinality.value * operationOriginal.template.length,\n },\n canContainUndefs: false,\n availableOrders: undefined,\n }));\n\n return {\n metadata,\n quadStream,\n type: 'quads',\n };\n }\n}\n","import type { Bindings, BindingsStream } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator, MultiTransformIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { mapTermsNested } from 'rdf-terms';\n\nconst DF = new DataFactory();\n\n/**\n * Transforms a bindings stream into a quad stream given a quad template.\n *\n * This conforms to the SPARQL 1.1 spec on constructing triples:\n * https://www.w3.org/TR/sparql11-query/#rConstructTriples\n */\nexport class BindingsToQuadsIterator extends MultiTransformIterator {\n protected readonly template: RDF.BaseQuad[];\n protected blankNodeCounter: number;\n\n public constructor(template: RDF.BaseQuad[], bindingsStream: BindingsStream) {\n super(bindingsStream, { autoStart: false });\n this.template = template;\n this.blankNodeCounter = 0;\n }\n\n /**\n * Bind the given term.\n * If the term is a variable and the variable is bound in the bindings object,\n * return the bindings value.\n * If the term is a variable and the variable is not bound in the bindings object,\n * a falsy value is returned..\n * Otherwise, the term itself is returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Term} term An RDF term.\n * @return {RDF.Term} If the given term is not a variable, the term itself is returned.\n * If the given term is a variable, then the bound term is returned,\n * or a falsy value if it did not exist in the bindings.\n */\n public static bindTerm(bindings: Bindings, term: RDF.Term): RDF.Term | undefined {\n if (term.termType === 'Variable') {\n return bindings.get(term);\n }\n return term;\n }\n\n /**\n * Bind the given quad pattern.\n * If one of the terms was a variable AND is not bound in the bindings,\n * a falsy value will be returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad} pattern An RDF quad.\n * @return {RDF.Quad} A bound RDF quad or undefined.\n */\n public static bindQuad(bindings: Bindings, pattern: RDF.BaseQuad): RDF.Quad | undefined {\n try {\n return mapTermsNested( pattern, (term) => {\n const boundTerm = BindingsToQuadsIterator.bindTerm(bindings, term);\n if (!boundTerm) {\n throw new Error('Unbound term');\n }\n return boundTerm;\n });\n } catch {\n // Do nothing\n }\n }\n\n /**\n * Convert a blank node to a unique blank node in the given context.\n * If the given term is not a blank node, the term itself will be returned.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.Term} term The term that should be localized.\n * @return {RDF.Term} A term.\n */\n public static localizeBlankNode(blankNodeCounter: number, term: RDF.Term): RDF.Term {\n if (term.termType === 'BlankNode') {\n return DF.blankNode(`${term.value}${blankNodeCounter}`);\n }\n return term;\n }\n\n /**\n * Convert the given quad to a quad that only contains unique blank nodes.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.BaseQuad} pattern The pattern that should be localized.\n * @return {RDF.BaseQuad} A quad.\n */\n public static localizeQuad(blankNodeCounter: number, pattern: RDF.BaseQuad): RDF.BaseQuad {\n return mapTermsNested(pattern, term => BindingsToQuadsIterator.localizeBlankNode(blankNodeCounter, term));\n }\n\n /**\n * Convert the given template to a list of quads based on the given bindings.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad[]} template A list of quad patterns.\n * @param blankNodeCounter A counter value for the blank node.\n * @return {RDF.Quad[]} A list of quads.\n */\n public bindTemplate(bindings: Bindings, template: RDF.BaseQuad[], blankNodeCounter: number): RDF.Quad[] {\n const quads: RDF.BaseQuad[] = template\n // Make sure the multiple instantiations of the template contain different blank nodes, as required by SPARQL 1.1.\n .map(BindingsToQuadsIterator.localizeQuad.bind(null, blankNodeCounter))\n // Bind variables to bound terms\n .map(x => BindingsToQuadsIterator.bindQuad.bind(null, bindings)(x))\n // Remove quads that contained unbound terms, i.e., variables.\n .filter(Boolean);\n return quads;\n }\n\n public override _createTransformer(bindings: Bindings): AsyncIterator {\n return new ArrayIterator(this.bindTemplate(\n bindings,\n this.template,\n this.blankNodeCounter++,\n ), { autoStart: false });\n }\n}\n","import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { MediatorHashQuads } from '@comunica/bus-hash-quads';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Distinct Hash Query Operation Actor.\n */\nexport class ActorQueryOperationDistinctHash extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly mediatorHashQuads: MediatorHashQuads;\n\n public constructor(args: IActorQueryOperationDistinctHashArgs) {\n super(args, 'distinct');\n }\n\n public async testOperation(_operation: Algebra.Distinct, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Distinct, context: IActionContext): Promise {\n const output = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n\n // TODO: In next/major, remove undefined check when mediatorHashQuads is made required\n if (output.type === 'quads' && this.mediatorHashQuads !== undefined) {\n const outputQuads: IQueryOperationResultQuads = ActorQueryOperation.getSafeQuads(\n output,\n );\n\n const quadStream: AsyncIterator = outputQuads.quadStream.filter(await this.newHashFilterQuads(context));\n return {\n type: 'quads',\n quadStream,\n metadata: outputQuads.metadata,\n };\n }\n\n const outputBindings: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n output,\n );\n\n const bindingsStream: BindingsStream = outputBindings.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: outputBindings.metadata,\n };\n }\n\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n public async newHashFilter(context: IActionContext): Promise<(bindings: Bindings) => boolean> {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes: Record = {};\n return (bindings: Bindings) => {\n const hash: string = hashFunction(bindings);\n\n return !(hash in hashes) && (hashes[hash] = true);\n };\n }\n\n /**\n * Create a new distinct filter function to hash quads.\n * This will maintain an internal hash datastructure so that every quad object only returns true once.\n * @param context The action context.\n * @return {(quad: RDF.Quad) => boolean} A distinct filter for quads.\n */\n public async newHashFilterQuads(context: IActionContext): Promise<(quad: RDF.Quad) => boolean> {\n // TODO: In next/major, this check can be removed when mediatorHashQuads is made required\n if (this.mediatorHashQuads === undefined) {\n return _quad => true;\n }\n const { hashFunction } = await this.mediatorHashQuads.mediate({ allowHashCollisions: true, context });\n const hashes: Record = {};\n return (quad: RDF.Quad) => {\n const hash: string = hashFunction(quad);\n\n return !(hash in hashes) && (hashes[hash] = true);\n };\n }\n}\n\nexport interface IActorQueryOperationDistinctHashArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n // TODO: In next/major, this field should be made required in the next major update\n mediatorHashQuads?: MediatorHashQuads;\n}\n","import { BindingsFactory, bindingsToString } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { ExpressionError } from '@comunica/expression-evaluator';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult, IQueryOperationResultBindings } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Extend Query Operation Actor.\n *\n * See https://www.w3.org/TR/sparql11-query/#sparqlAlgebra;\n */\nexport class ActorQueryOperationExtend extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationExtendArgs) {\n super(args, 'extend');\n }\n\n public async testOperation(operation: Algebra.Extend, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Will throw error for unsupported opperations\n const _ = Boolean(new AsyncEvaluator(\n operation.expression,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n ));\n return true;\n }\n\n public async runOperation(operation: Algebra.Extend, context: IActionContext):\n Promise {\n const { expression, input, variable } = operation;\n\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: input, context }),\n );\n\n // Throw if the variable has already been bound\n if ((await output.metadata()).variables.some(innerVariable => innerVariable.equals(variable))) {\n throw new Error(`Illegal binding to variable '${variable.value}' that has already been bound`);\n }\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(expression, config);\n\n // Transform the stream by extending each Bindings with the expression result\n const transform = async(bindings: Bindings, next: any, push: (pusbBindings: Bindings) => void): Promise => {\n try {\n const result = await evaluator.evaluate(bindings);\n // Extend operation is undefined when the key already exists\n // We just override it here.\n const extended = bindings.set(variable, result);\n push(extended);\n } catch (error: unknown) {\n if (isExpressionError( error)) {\n // Errors silently don't actually extend according to the spec\n push(bindings);\n // But let's warn anyway\n this.logWarn(context, `Expression error for extend operation (${( error).message})` +\n `with bindings '${bindingsToString(bindings)}'`);\n } else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n\n // eslint-disable-next-line ts/no-misused-promises\n const bindingsStream = output.bindingsStream.transform({ autoStart: false, transform });\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const outputMetadata = await output.metadata();\n return { ...outputMetadata, variables: [ ...outputMetadata.variables, variable ]};\n },\n };\n }\n}\n\nexport interface IActorQueryOperationExtendArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory, bindingsToString } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Filter Sparqlee Query Operation Actor.\n */\nexport class ActorQueryOperationFilter extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationFilterSparqleeArgs) {\n super(args, 'filter');\n }\n\n public async testOperation(operation: Algebra.Filter, context: IActionContext): Promise {\n // Will throw error for unsupported operators\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const _ = new AsyncEvaluator(operation.expression, config);\n return true;\n }\n\n public async runOperation(operation: Algebra.Filter, context: IActionContext):\n Promise {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(operation.expression, config);\n\n const transform = async(item: Bindings, next: any, push: (bindings: Bindings) => void): Promise => {\n try {\n const result = await evaluator.evaluateAsEBV(item);\n if (result) {\n push(item);\n }\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n //\n // > Specifically, FILTERs eliminate any solutions that,\n // > when substituted into the expression, either result in\n // > an effective boolean value of false or produce an error.\n // > ...\n // > These errors have no effect outside of FILTER evaluation.\n // https://www.w3.org/TR/sparql11-query/#expressions\n if (isExpressionError( error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings: bindingsToString(item) }));\n } else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n\n // eslint-disable-next-line ts/no-misused-promises\n const bindingsStream = output.bindingsStream.transform({ transform, autoStart: false });\n return { type: 'bindings', bindingsStream, metadata: output.metadata };\n }\n}\n\nexport interface IActorQueryOperationFilterSparqleeArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica From Query Operation Actor.\n */\nexport class ActorQueryOperationFromQuad extends ActorQueryOperationTypedMediated {\n private static readonly FACTORY: Factory = new Factory();\n private static readonly ALGEBRA_TYPES: string[] = Object.keys(Algebra.types).map(key => ( Algebra.types)[key]);\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'from');\n }\n\n /**\n * Create a deep copy of the given operation.\n * @param {Operation} operation An operation.\n * @param {(subOperation: Operation) => Operation} recursiveCb A callback for recursive operation calls.\n * @return {Operation} The copied operation.\n */\n public static copyOperation(\n operation: Algebra.Operation,\n recursiveCb: (subOperation: Algebra.Operation) => Algebra.Operation,\n ): Algebra.Operation {\n const copiedOperation: Algebra.Operation = {};\n for (const key of Object.keys(operation)) {\n if (Array.isArray(operation[key]) && key !== 'template') {\n // We exclude the 'template' entry, as we don't want to modify the template value of construct operations\n if (key === 'variables') {\n copiedOperation[key] = operation[key];\n } else {\n copiedOperation[key] = operation[key].map(recursiveCb);\n }\n } else if (ActorQueryOperationFromQuad.ALGEBRA_TYPES.includes(operation[key].type)) {\n copiedOperation[key] = recursiveCb(operation[key]);\n } else {\n copiedOperation[key] = operation[key];\n }\n }\n return copiedOperation;\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as default graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} defaultGraphs Graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationDefaultGraph(operation: Algebra.Operation, defaultGraphs: RDF.Term[]): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n if (operation.type === 'bgp') {\n return ActorQueryOperationFromQuad.joinOperations(operation.patterns.map((pattern: Algebra.Pattern) => {\n if (pattern.graph.termType !== 'DefaultGraph') {\n return ActorQueryOperationFromQuad.FACTORY.createBgp([ pattern ]);\n }\n const bgps = defaultGraphs.map((graph: RDF.Term) =>\n ActorQueryOperationFromQuad.FACTORY.createBgp([ Object.assign(\n ActorQueryOperationFromQuad.FACTORY\n .createPattern(pattern.subject, pattern.predicate, pattern.object, graph),\n { metadata: pattern.metadata },\n ) ]));\n return ActorQueryOperationFromQuad.unionOperations(bgps);\n }));\n }\n if (operation.graph.termType !== 'DefaultGraph') {\n return operation;\n }\n const paths = defaultGraphs.map(\n (graph: RDF.Term) => {\n if (operation.type === 'path') {\n return ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n }\n return Object.assign(ActorQueryOperationFromQuad.FACTORY\n .createPattern(\n operation.subject,\n operation.predicate,\n operation.object,\n graph,\n ), { metadata: operation.metadata });\n },\n );\n return ActorQueryOperationFromQuad.unionOperations(paths);\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this.applyOperationDefaultGraph(subOperation, defaultGraphs),\n );\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as named graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} namedGraphs Graph terms.\n * @param {RDF.Term[]} defaultGraphs Default graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationNamedGraph(\n operation: Algebra.Operation,\n namedGraphs: RDF.NamedNode[],\n defaultGraphs: RDF.Term[],\n ): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n const patternGraph: RDF.Term = operation.type === 'bgp' ? operation.patterns[0].graph : operation.graph;\n if (patternGraph.termType === 'DefaultGraph') {\n // SPARQL spec (8.2) describes that when FROM NAMED's are used without a FROM, the default graph must be empty.\n // The FROMs are transformed before this step to a named node, so this will not apply to this case anymore.\n return { type: Algebra.types.BGP, patterns: []};\n }\n if (patternGraph.termType === 'Variable') {\n if (namedGraphs.length === 1) {\n const graph: RDF.NamedNode = namedGraphs[0];\n // If the pattern graph is a variable, replace the graph and bind the variable using VALUES\n const bindings: Record = {};\n bindings[`?${patternGraph.value}`] = graph;\n const values: Algebra.Values = ActorQueryOperationFromQuad.FACTORY\n .createValues([ patternGraph ], [ bindings ]);\n\n let pattern: Algebra.Operation;\n if (operation.type === 'bgp') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createBgp(operation.patterns.map((pat: Algebra.Pattern) => ActorQueryOperationFromQuad.FACTORY\n .createPattern(pat.subject, pat.predicate, pat.object, graph)));\n } else if (operation.type === 'path') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n } else {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPattern(operation.subject, operation.predicate, operation.object, graph);\n }\n\n return ActorQueryOperationFromQuad.FACTORY.createJoin([ values, pattern ]);\n }\n // If the pattern graph is a variable, take the union of the pattern applied to each available named graph\n return ActorQueryOperationFromQuad.unionOperations(namedGraphs.map(\n (graph: RDF.NamedNode) => ActorQueryOperationFromQuad.applyOperationNamedGraph(\n operation,\n [ graph ],\n defaultGraphs,\n ),\n ));\n }\n // The pattern's graph is defined (including the default graphs)\n const isNamedGraphAvailable: boolean = [ ...namedGraphs, ...defaultGraphs ].some(\n (namedGraph: RDF.Term) => namedGraph.equals(patternGraph),\n );\n if (isNamedGraphAvailable) {\n // Return the pattern as-is if the pattern's graph was selected in a FROM NAMED\n return operation;\n }\n // No-op if the pattern's graph was not selected in a FROM NAMED.\n return { type: Algebra.types.BGP, patterns: []};\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this.applyOperationNamedGraph(subOperation, namedGraphs, defaultGraphs),\n );\n }\n\n /**\n * Transform the given array of operations into a join operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Join} A join operation.\n */\n public static joinOperations(operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createJoin(operations);\n }\n throw new Error('A join can only be applied on at least one operation');\n }\n\n /**\n * Transform the given array of operations into a union operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Union} A union operation.\n */\n public static unionOperations(operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createUnion(operations);\n }\n throw new Error('A union can only be applied on at least one operation');\n }\n\n /**\n * Transform an operation based on the default and named graphs in the pattern.\n *\n * FROM sets the default graph.\n * If multiple are available, take the union of the operation for all of them at quad-pattern level.\n *\n * FROM NAMED indicates which named graphs are available.\n * This will rewrite the query so that only triples from the given named graphs can be selected.\n *\n * @param {From} pattern A from operation.\n * @return {Operation} The transformed operation.\n */\n public static createOperation(pattern: Algebra.From): Algebra.Operation {\n let operation: Algebra.Operation = pattern.input;\n if (pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationDefaultGraph(operation, pattern.default);\n }\n if (pattern.named.length > 0 || pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationNamedGraph(operation, pattern.named, pattern.default);\n }\n return operation;\n }\n\n public async testOperation(_operation: Algebra.From, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.From,\n context: IActionContext,\n ): Promise {\n const operation: Algebra.Operation = ActorQueryOperationFromQuad.createOperation(operationOriginal);\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator } from '@comunica/expression-evaluator';\nimport type { BindingsStream, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { ArrayIterator, TransformIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { GroupsState } from './GroupsState';\n\n/**\n * A comunica Group Query Operation Actor.\n */\nexport class ActorQueryOperationGroup extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationGroupArgs) {\n super(args, 'group');\n }\n\n public async testOperation(operation: Algebra.Group, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n for (const aggregate of operation.aggregates) {\n // Will throw for unsupported expressions\n const _ = new AsyncEvaluator(\n aggregate.expression,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n );\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.Group, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Create a hash function\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n\n // Get result stream for the input query\n const { input, aggregates } = operation;\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n\n // The variables in scope are the variables on which we group, i.e. pattern.variables.\n // For 'GROUP BY ?x, ?z', this is [?x, ?z], for 'GROUP by expr(?x) as ?e' this is [?e].\n // But also in scope are the variables defined by the aggregations, since GROUP has to handle this.\n const variables = [\n ...operation.variables,\n ...aggregates.map(agg => agg.variable),\n ];\n\n const sparqleeConfig = ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n );\n\n // Wrap a new promise inside an iterator that completes when the stream has ended or when an error occurs\n const bindingsStream = new TransformIterator(() => new Promise((resolve, reject) => {\n const groups = new GroupsState(hashFunction, operation, sparqleeConfig, bindingsFactory);\n\n // Phase 2: Collect aggregator results\n // We can only return when the binding stream ends, when that happens\n // we return the identified groups. Which are nothing more than Bindings\n // of the grouping variables merged with the aggregate variables\n // eslint-disable-next-line ts/no-misused-promises\n output.bindingsStream.on('end', async() => {\n try {\n const bindingsStreamInner = new ArrayIterator(await groups.collectResults(), { autoStart: false });\n resolve(bindingsStreamInner);\n } catch (error: unknown) {\n reject(error);\n }\n });\n\n // Make sure to propagate any errors in the binding stream\n output.bindingsStream.on('error', reject);\n\n // Phase 1: Consume the stream, identify the groups and populate the aggregators.\n // We need to bind this after the 'error' and 'end' listeners to avoid the\n // stream having ended before those listeners are bound.\n output.bindingsStream.on('data', (bindings) => {\n groups.consumeBindings(bindings).catch(reject);\n });\n }), { autoStart: false });\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await output.metadata(), variables }),\n };\n }\n}\n\nexport interface IActorQueryOperationGroupArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { HashFunction } from '@comunica/bus-hash-bindings';\nimport type { IAsyncEvaluatorContext } from '@comunica/expression-evaluator';\nimport { AsyncAggregateEvaluator } from '@comunica/expression-evaluator';\nimport type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A simple type alias for strings that should be hashes of Bindings\n */\nexport type BindingsHash = string;\n\n/**\n * A state container for a single group\n *\n * @property {Bindings} bindings - The binding entries on which we group\n */\nexport interface IGroup {\n bindings: Bindings;\n aggregators: Record;\n}\n\n/**\n * A state manager for the groups constructed by consuming the bindings-stream.\n */\nexport class GroupsState {\n private readonly groups: Map;\n // We need to the promises of a group so we can await the initialisation/ creation of them.\n // Without this we could have duplicate work/ override precious work.\n private readonly groupsInitializer: Map>;\n private readonly groupVariables: Set;\n private readonly distinctHashes: null | Map>;\n private waitCounter: number;\n // Function that resolves the promise given by collectResults\n private waitResolver: (bindings: Bindings[]) => void;\n private resultHasBeenCalled: boolean;\n\n public constructor(\n private readonly hashFunction: HashFunction,\n private readonly pattern: Algebra.Group,\n private readonly sparqleeConfig: IAsyncEvaluatorContext,\n private readonly bindingsFactory: BindingsFactory,\n ) {\n this.groups = new Map();\n this.groupsInitializer = new Map();\n this.groupVariables = new Set(this.pattern.variables.map(x => x.value));\n this.waitCounter = 1;\n this.resultHasBeenCalled = false;\n }\n\n /**\n * - Consumes a stream binding\n * - Find the corresponding group and create one if need be\n * - Feeds the binding to the group's aggregators\n *\n * @param {Bindings} bindings - The Bindings to consume\n */\n public consumeBindings(bindings: Bindings): Promise {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n // We increment the counter and decrement him when put action is performed.\n this.waitCounter++;\n\n // Select the bindings on which we group\n const grouper = bindings\n .filter((_, variable) => this.groupVariables.has(variable.value));\n const groupHash = this.hashBindings(grouper);\n\n // First member of group -> create new group\n let groupInitializer: Promise | undefined = this.groupsInitializer.get(groupHash);\n\n let res: Promise;\n if (groupInitializer) {\n const groupInitializerDefined = groupInitializer;\n res = (async() => {\n const group = await groupInitializerDefined;\n await Promise.all(this.pattern.aggregates.map(async(aggregate) => {\n // Distinct handling is done in the aggregator.\n const variable = aggregate.variable.value;\n await group.aggregators[variable].put(bindings);\n }));\n })().then(async() => {\n this.subtractWaitCounterAndCollect();\n });\n } else {\n // Initialize state for all aggregators for new group\n groupInitializer = (async() => {\n const aggregators: Record = {};\n await Promise.all(this.pattern.aggregates.map(async(aggregate) => {\n const key = aggregate.variable.value;\n aggregators[key] = new AsyncAggregateEvaluator(aggregate, this.sparqleeConfig);\n await aggregators[key].put(bindings);\n }));\n\n const group = { aggregators, bindings: grouper };\n this.groups.set(groupHash, group);\n this.subtractWaitCounterAndCollect();\n return group;\n })();\n this.groupsInitializer.set(groupHash, groupInitializer);\n res = groupInitializer;\n }\n return res;\n }\n\n private subtractWaitCounterAndCollect(): void {\n if (--this.waitCounter === 0) {\n this.handleResultCollection();\n }\n }\n\n private handleResultCollection(): void {\n // Collect groups\n let rows: Bindings[] = [ ...this.groups ].map(([ _, group ]) => {\n const { bindings: groupBindings, aggregators } = group;\n\n // Collect aggregator bindings\n // If the aggregate errorred, the result will be undefined\n let returnBindings = groupBindings;\n for (const variable in aggregators) {\n const value = aggregators[variable].result();\n if (value) {\n // Filter undefined\n returnBindings = returnBindings.set(DF.variable(variable), value);\n }\n }\n\n // Merge grouping bindings and aggregator bindings\n return returnBindings;\n });\n\n // Case: No Input\n // Some aggregators still define an output on the empty input\n // Result is a single Bindings\n if (rows.length === 0 && this.groupVariables.size === 0) {\n const single: [RDF.Variable, RDF.Term][] = [];\n for (const aggregate of this.pattern.aggregates) {\n const key = aggregate.variable;\n const value = AsyncAggregateEvaluator.emptyValue(aggregate);\n if (value !== undefined) {\n single.push([ key, value ]);\n }\n }\n rows = [ this.bindingsFactory.bindings(single) ];\n }\n this.waitResolver(rows);\n }\n\n private resultCheck(): Promise | undefined {\n if (this.resultHasBeenCalled) {\n return Promise.reject(new Error('Calling any function after calling collectResult is invalid.'));\n }\n }\n\n /**\n * Collect the result of the final state. This returns a Bindings per group,\n * and a (possibly empty) Bindings in case no Bindings have been consumed yet.\n * You can only call this method once, after calling this method,\n * calling any function on this will result in an error being thrown.\n */\n public collectResults(): Promise {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n this.resultHasBeenCalled = true;\n const res = new Promise((resolve) => {\n this.waitResolver = resolve;\n });\n this.subtractWaitCounterAndCollect();\n return res;\n }\n\n /**\n * @param {Bindings} bindings - Bindings to hash\n */\n private hashBindings(bindings: Bindings): BindingsHash {\n return this.hashFunction(bindings);\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryOperationResult, IActionContext, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join Query Operation Actor.\n */\nexport class ActorQueryOperationJoin extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationJoinArgs) {\n super(args, 'join');\n }\n\n public async testOperation(_operation: Algebra.Join, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.Join,\n context: IActionContext,\n ): Promise {\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n\n return this.mediatorJoin.mediate({ type: 'inner', entries, context });\n }\n}\n\nexport interface IActorQueryOperationJoinArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { IQueryOperationResult, Bindings, IActionContext, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica LeftJoin Query Operation Actor.\n */\nexport class ActorQueryOperationLeftJoin extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationLeftJoinArgs) {\n super(args, 'leftjoin');\n }\n\n public async testOperation(_operation: Algebra.LeftJoin, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.LeftJoin, context: IActionContext):\n Promise {\n // Delegate to join bus\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n const joined = await this.mediatorJoin.mediate({ type: 'optional', entries, context });\n\n // If the pattern contains an expression, filter the resulting stream\n if (operationOriginal.expression) {\n const rightMetadata = await entries[1].output.metadata();\n const expressionVariables = rightMetadata.variables;\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(operationOriginal.expression, config);\n const bindingsStream = joined.bindingsStream\n .transform({\n autoStart: false,\n // eslint-disable-next-line ts/no-misused-promises\n transform: async(bindings: Bindings, done: () => void, push: (item: Bindings) => void) => {\n // If variables of the right-hand entry are missing, we skip expression evaluation\n if (!expressionVariables.every(variable => bindings.has(variable.value))) {\n push(bindings);\n return done();\n }\n\n try {\n const result = await evaluator.evaluateAsEBV(bindings);\n if (result) {\n push(bindings);\n }\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // Left Join is defined in terms of Filter (https://www.w3.org/TR/sparql11-query/#defn_algJoin),\n // and Filter requires this (https://www.w3.org/TR/sparql11-query/#expressions).\n if (isExpressionError(error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings }));\n } else {\n bindingsStream.emit('error', error);\n }\n }\n done();\n },\n });\n joined.bindingsStream = bindingsStream;\n }\n\n return joined;\n }\n}\n\nexport interface IActorQueryOperationLeftJoinArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Minus Query Operation Actor.\n */\nexport class ActorQueryOperationMinus extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationMinusArgs) {\n super(args, 'minus');\n }\n\n public async testOperation(_operation: Algebra.Minus, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.Minus,\n context: IActionContext,\n ): Promise {\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n\n return this.mediatorJoin.mediate({ type: 'minus', entries, context });\n }\n}\n\nexport interface IActorQueryOperationMinusArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { SingletonIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation)\n * actor that handles SPARQL nop operations.\n */\nexport class ActorQueryOperationNop extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationNopArgs) {\n super(args, 'nop');\n }\n\n public async testOperation(_operation: Algebra.Nop, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Nop, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n return {\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n };\n }\n}\n\nexport interface IActorQueryOperationNopArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError, orderTypes } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Term } from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { SortIterator } from './SortIterator';\n\n/**\n * A comunica OrderBy Sparqlee Query Operation Actor.\n */\nexport class ActorQueryOperationOrderBy extends ActorQueryOperationTypedMediated {\n private readonly window: number;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationOrderBySparqleeArgs) {\n super(args, 'orderby');\n this.window = args.window ?? Number.POSITIVE_INFINITY;\n }\n\n public async testOperation(operation: Algebra.OrderBy, context: IActionContext): Promise {\n // Will throw error for unsupported operators\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n for (let expr of operation.expressions) {\n expr = this.extractSortExpression(expr);\n const _ = new AsyncEvaluator(\n expr,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n );\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.OrderBy, context: IActionContext):\n Promise {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n\n const options = { window: this.window };\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const sparqleeConfig = {\n ...ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n };\n let { bindingsStream } = output;\n\n // Sorting backwards since the first one is the most important therefore should be ordered last.\n for (let i = operation.expressions.length - 1; i >= 0; i--) {\n let expr = operation.expressions[i];\n const isAscending = this.isAscending(expr);\n expr = this.extractSortExpression(expr);\n // Transform the stream by annotating it with the expr result\n const evaluator = new AsyncEvaluator(expr, sparqleeConfig);\n interface IAnnotatedBinding {\n bindings: Bindings;\n result: Term | undefined;\n }\n\n const transform = async(bindings: Bindings, next: any, push: (result: IAnnotatedBinding) => void):\n Promise => {\n try {\n const result = await evaluator.evaluate(bindings);\n push({ bindings, result });\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // I can't recall where this is defined in the spec.\n if (!isExpressionError( error)) {\n bindingsStream.emit('error', error);\n }\n push({ bindings, result: undefined });\n }\n next();\n };\n // eslint-disable-next-line ts/no-misused-promises\n const transformedStream = bindingsStream.transform({ transform });\n\n // Sort the annoted stream\n const sortedStream = new SortIterator(transformedStream, (left, right) => {\n let compare = orderTypes(left.result, right.result);\n if (!isAscending) {\n compare *= -1;\n }\n return compare;\n }, options);\n\n // Remove the annotation\n bindingsStream = sortedStream.map(({ bindings }) => bindings);\n }\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n\n // Remove descending operator if necessary\n private extractSortExpression(expr: Algebra.Expression): Algebra.Expression {\n const { expressionType, operator } = expr;\n if (expressionType !== Algebra.expressionTypes.OPERATOR) {\n return expr;\n }\n return operator === 'desc' ?\n expr.args[0] :\n expr;\n }\n\n private isAscending(expr: Algebra.Expression): boolean {\n const { expressionType, operator } = expr;\n if (expressionType !== Algebra.expressionTypes.OPERATOR) {\n return true;\n }\n return operator !== 'desc';\n }\n}\n\n/**\n * The window parameter determines how many of the elements to consider when sorting.\n */\nexport interface IActorQueryOperationOrderBySparqleeArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The size of the window for the sort iterator.\n * @range {integer}\n */\n window?: number;\n}\n","import type { AsyncIterator } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\n\n// Based on https://github.com/LinkedDataFragments/Client.js/blob/master/lib/sparql/SortIterator.js\nexport class SortIterator extends TransformIterator {\n private readonly windowLength: number;\n private readonly sort: (left: T, right: T) => number;\n private readonly sorted: T[];\n\n public constructor(source: AsyncIterator, sort: (left: T, right: T) => number, options?: any) {\n super(source, options);\n\n // The `window` parameter indicates the length of the sliding window to apply sorting\n const window: number = options && options.window;\n this.windowLength = Number.isFinite(window) && window > 0 ? window : Number.POSITIVE_INFINITY;\n this.sort = sort;\n this.sorted = [];\n }\n\n // Reads the smallest item in the current sorting window\n public override _read(count: number, done: () => void): void {\n let item;\n let { length } = this.sorted;\n // Try to read items until we reach the desired window length\n while (length !== this.windowLength) {\n item = this.source!.read();\n if (item === null) {\n break;\n }\n // Insert the item in the sorted window (smallest last)\n let left = 0;\n let right = length - 1;\n let mid;\n let order;\n while (left <= right) {\n mid = Math.trunc((left + right) / 2);\n order = this.sort(item, this.sorted[mid]);\n if (order < 0) {\n left = mid + 1;\n } else if (order > 0) {\n right = mid - 1;\n } else {\n left = mid;\n right = -1;\n }\n }\n this.sorted.splice(left, 0, item);\n length++;\n }\n // Push the smallest item in the window\n if (length === this.windowLength) {\n this._push(this.sorted.pop()!);\n }\n done();\n }\n\n // Flushes remaining data after the source has ended\n public override _flush(done: () => void): void {\n let { length } = this.sorted;\n while (length--) {\n this._push(this.sorted.pop()!);\n }\n done();\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { ActorQueryOperationUnion } from '@comunica/actor-query-operation-union';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type {\n IQueryOperationResultBindings,\n IQueryOperationResult,\n IActionContext,\n MetadataBindings,\n} from '@comunica/types';\nimport { UnionIterator } from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Alt Query Operation Actor.\n */\nexport class ActorQueryOperationPathAlt extends ActorAbstractPath {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationPathAltArgs) {\n super(args, Algebra.types.ALT);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n\n const subOperations: IQueryOperationResultBindings[] = (await Promise.all(predicate.input\n .map(subPredicate => this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY\n .createPath(operation.subject, subPredicate, operation.object, operation.graph),\n }))))\n .map(ActorQueryOperation.getSafeBindings);\n\n const bindingsStream = new UnionIterator(subOperations.map(op => op.bindingsStream), { autoStart: false });\n const metadata: (() => Promise) = () =>\n Promise.all(subOperations.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\n\nexport interface IActorQueryOperationPathAltArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Inv Query Operation Actor.\n */\nexport class ActorQueryOperationPathInv extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.INV);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n const invPath = ActorAbstractPath.FACTORY\n .createPath(operation.object, predicate.path, operation.subject, operation.graph);\n return this.mediatorQueryOperation.mediate({ operation: invPath, context });\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Link Query Operation Actor.\n */\nexport class ActorQueryOperationPathLink extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.LINK);\n }\n\n public async runOperation(\n operationOriginal: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const predicate = operationOriginal.predicate;\n const operation = Object.assign(ActorAbstractPath.FACTORY.createPattern(\n operationOriginal.subject,\n predicate.iri,\n operationOriginal.object,\n operationOriginal.graph,\n ), { metadata: predicate.metadata });\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Nps Query Operation Actor.\n */\nexport class ActorQueryOperationPathNps extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.NPS);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n const blank = this.generateVariable(operation);\n\n const pattern = Object.assign(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, blank, operation.object, operation.graph), { metadata: predicate.metadata });\n const output = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: pattern, context }),\n );\n\n // Remove the generated blank nodes from the bindings\n const bindingsStream = output.bindingsStream\n .map(bindings => predicate.iris.some(iri => iri.equals(bindings.get(blank))) ? null : bindings.delete(blank));\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IQueryOperationResultBindings, Bindings, IQueryOperationResult, IActionContext } from '@comunica/types';\nimport { BufferedIterator, MultiTransformIterator, TransformIterator } from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path OneOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathOneOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathOneOrMoreArgs) {\n super(args, Algebra.types.ONE_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = operation.predicate;\n\n if (operation.subject.termType !== 'Variable' && operation.object.termType === 'Variable') {\n const objectVar = operation.object;\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n objectVar,\n operation.graph,\n context,\n false,\n bindingsFactory,\n );\n const variables = operation.graph.termType === 'Variable' ? [ objectVar, operation.graph ] : [ objectVar ];\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Get all the results of subjects with same predicate, but once, then fill in first variable for those\n const single = ActorAbstractPath.FACTORY.createDistinct(\n ActorAbstractPath.FACTORY\n .createPath(operation.subject, operation.predicate.path, operation.object, operation.graph),\n );\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n const subject = bindings.get(subjectVar);\n const object = bindings.get(objectVar);\n const graph = operation.graph.termType === 'Variable' ? bindings.get(operation.graph) : operation.graph;\n return new TransformIterator(\n async() => {\n const it = new BufferedIterator();\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject!,\n object!,\n predicate.path,\n graph!,\n context,\n termHashes,\n {},\n it,\n { count: 0 },\n bindingsFactory,\n );\n return it.transform({\n transform(item, next, push) {\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph!);\n }\n push(item);\n next();\n },\n });\n },\n { maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n const variables = operation.graph.termType === 'Variable' ?\n [ subjectVar, objectVar, operation.graph ] :\n [ subjectVar, objectVar ];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType !== 'Variable') {\n return > this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createPath(\n operation.object,\n ActorAbstractPath.FACTORY.createOneOrMorePath(\n ActorAbstractPath.FACTORY.createInv(predicate.path),\n ),\n operation.subject,\n operation.graph,\n ),\n });\n }\n // If (!sVar && !oVar)\n const variable = this.generateVariable();\n const results = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createPath(operation.subject, predicate, variable, operation.graph),\n }));\n const bindingsStream = results.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n const binding = operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await results.metadata(),\n variables: operation.graph.termType === 'Variable' ? [ operation.graph ] : [],\n }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathOneOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { Bindings, IActionContext, IQueryOperationResult, IJoinEntry } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Seq Query Operation Actor.\n */\nexport class ActorQueryOperationPathSeq extends ActorAbstractPath {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationPathSeq) {\n super(args, Algebra.types.SEQ);\n }\n\n public async runOperation(\n operationOriginal: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const predicate = operationOriginal.predicate;\n\n let joiner: RDF.Term = operationOriginal.subject;\n const generatedVariableNames: RDF.Variable[] = [];\n const entries: IJoinEntry[] = await Promise.all(predicate.input\n .map((subPredicate, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? operationOriginal.object : this.generateVariable(operationOriginal, `b${i}`);\n const operation = ActorAbstractPath.FACTORY\n .createPath(joiner, subPredicate, nextJoiner, operationOriginal.graph);\n const output = this.mediatorQueryOperation.mediate({\n context,\n operation,\n });\n\n joiner = nextJoiner;\n if (i < predicate.input.length - 1) {\n generatedVariableNames.push(nextJoiner);\n }\n\n return { output, operation };\n })\n .map(async({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(await output),\n operation,\n })));\n\n const join = ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: 'inner', entries, context }));\n // Remove the generated variable from the bindings\n const bindingsStream = join.bindingsStream.transform({\n transform(item, next, push) {\n for (const generatedVariableName of generatedVariableNames) {\n item = item.delete(generatedVariableName);\n }\n push(item);\n next();\n },\n });\n\n // Remove the generated variable from the list of variables\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const joinMetadata = await join.metadata();\n const variables = joinMetadata.variables.filter(variable => !generatedVariableNames\n .some(generatedVariableName => generatedVariableName.value === variable.value));\n return { ...joinMetadata, variables };\n },\n };\n }\n}\n\nexport interface IActorQueryOperationPathSeq extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { Bindings, IQueryOperationResult, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { MultiTransformIterator, TransformIterator, EmptyIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path ZeroOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathZeroOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathZeroOrMoreArgs) {\n super(args, Algebra.types.ZERO_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = operation.predicate;\n const sources = this.getPathSources(predicate);\n\n const sVar = operation.subject.termType === 'Variable';\n const oVar = operation.object.termType === 'Variable';\n\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Query ?s ?p ?o, to get all possible namedNodes in de the db\n const predVar = this.generateVariable(operation);\n const single = this.assignPatternSources(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, predVar, operation.object, operation.graph), sources);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n // Set with all namedNodes we have already started a predicate* search from\n const entities: Set = new Set();\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n // Get the subject and object of the triples (?s ?p ?o) and extract graph if it was a variable\n const subject: RDF.Term = bindings.get(subjectVar)!;\n const object: RDF.Term = bindings.get(objectVar)!;\n const graph: RDF.Term = operation.graph.termType === 'Variable' ?\n bindings.get(operation.graph)! :\n operation.graph;\n // Make a hash of namedNode + graph to remember from where we already started a search\n const subjectGraphHash = termToString(subject) + termToString(graph);\n const objectGraphHash = termToString(object) + termToString(graph);\n return new TransformIterator(\n async() => {\n // If no new namedNodes in this triple, return nothing\n if (entities.has(subjectGraphHash) && entities.has(objectGraphHash)) {\n return new EmptyIterator();\n }\n // Set up an iterator to which getSubjectAndObjectBindingsPredicateStar will push solutions\n const it = new BufferedIterator();\n const counter = { count: 0 };\n // If not started from this namedNode (subject in triple) in this graph, start a search\n if (!entities.has(subjectGraphHash)) {\n entities.add(subjectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject,\n subject,\n predicate.path,\n graph,\n context,\n termHashes,\n {},\n it,\n counter,\n bindingsFactory,\n );\n }\n // If not started from this namedNode (object in triple) in this graph, start a search\n if (!entities.has(objectGraphHash)) {\n entities.add(objectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n object,\n object,\n predicate.path,\n graph,\n context,\n termHashes,\n {},\n it,\n counter,\n bindingsFactory,\n );\n }\n return it.transform({\n transform(item, next, push) {\n // If the graph was a variable, fill in it's binding (we got it from the ?s ?p ?o binding)\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph);\n }\n push(item);\n next();\n },\n });\n },\n );\n },\n },\n );\n const variables: RDF.Variable[] = operation.graph.termType === 'Variable' ?\n [ subjectVar, operation.object, operation.graph ] :\n [ subjectVar, operation.object ];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (!sVar && !oVar) {\n const variable = this.generateVariable();\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n variable,\n operation.graph,\n context,\n true,\n bindingsFactory,\n );\n // Check this\n const bindingsStream = starEval.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n // Return graph binding if graph was a variable, otherwise empty binding\n const binding = operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await starEval.metadata(),\n variables: operation.graph.termType === 'Variable' ? [ operation.graph ] : [],\n }),\n };\n }\n // If (sVar || oVar)\n const subject = sVar ? operation.object : operation.subject;\n const value: RDF.Variable = (sVar ? operation.subject : operation.object);\n const pred = sVar ? ActorAbstractPath.FACTORY.createInv(predicate.path) : predicate.path;\n const starEval = await this.getObjectsPredicateStarEval(\n subject,\n pred,\n value,\n operation.graph,\n context,\n true,\n bindingsFactory,\n );\n const variables: RDF.Variable[] = operation.graph.termType === 'Variable' ? [ value, operation.graph ] : [ value ];\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathZeroOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { Bindings, IQueryOperationResult, IActionContext, BindingsStream } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport {\n SingletonIterator,\n UnionIterator,\n} from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path ZeroOrOne Query Operation Actor.\n */\nexport class ActorQueryOperationPathZeroOrOne extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathZeroOrOneArgs) {\n super(args, Algebra.types.ZERO_OR_ONE_PATH);\n }\n\n public async runOperation(\n operation: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const predicate = operation.predicate;\n const sources = this.getPathSources(predicate);\n\n const extra: Bindings[] = [];\n\n // Both subject and object non-variables\n if (operation.subject.termType !== 'Variable' &&\n operation.object.termType !== 'Variable' &&\n operation.subject.equals(operation.object)) {\n return {\n type: 'bindings',\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n };\n }\n\n // Check if we require a distinct path operation\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n context = distinct.context;\n\n // Create an operator that resolve to the \"One\" part\n const bindingsOne = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY\n .createPath(operation.subject, predicate.path, operation.object, operation.graph),\n }));\n\n // Determine the bindings stream based on the variable-ness of subject and object\n let bindingsStream: BindingsStream;\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Both subject and object are variables\n // To determine the \"Zero\" part, we\n // query ?s ?p ?o. FILTER ?s = ?0, to get all possible namedNodes in de the db\n const varP = this.generateVariable(operation);\n const bindingsZero = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createFilter(\n this.assignPatternSources(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, varP, operation.object, operation.graph), sources),\n ActorAbstractPath.FACTORY.createOperatorExpression('=', [\n ActorAbstractPath.FACTORY.createTermExpression(operation.subject),\n ActorAbstractPath.FACTORY.createTermExpression(operation.object),\n ]),\n ),\n }),\n ).bindingsStream.map(bindings => bindings.delete(varP));\n bindingsStream = new UnionIterator([\n bindingsZero,\n bindingsOne.bindingsStream,\n ], { autoStart: false });\n } else {\n // If subject or object is not a variable, then determining the \"Zero\" part is simple.\n if (operation.subject.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.subject, operation.object ]]));\n }\n if (operation.object.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.object, operation.subject ]]));\n }\n\n bindingsStream = bindingsOne.bindingsStream.prepend(extra);\n }\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: bindingsOne.metadata,\n };\n }\n}\nexport interface IActorQueryOperationPathZeroOrOneArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { BlankNodeBindingsScoped } from '@comunica/data-factory';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Project Query Operation Actor.\n */\nexport class ActorQueryOperationProject extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'project');\n }\n\n public async testOperation(_operation: Algebra.Project, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Project, context: IActionContext):\n Promise {\n // Resolve the input\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: operation.input, context }),\n );\n\n // Find all variables that should be deleted from the input stream.\n const outputMetadata = await output.metadata();\n const variables = operation.variables;\n const deleteVariables = outputMetadata.variables\n .filter(variable => !variables.some(subVariable => variable.value === subVariable.value));\n\n // Error if there are variables that are not bound in the input stream.\n const missingVariables = variables\n .filter(variable => !outputMetadata.variables.some(subVariable => variable.value === subVariable.value));\n if (missingVariables.length > 0) {\n outputMetadata.canContainUndefs = true;\n }\n\n // Make sure the project variables are the only variables that are present in the bindings.\n let bindingsStream: BindingsStream = deleteVariables.length === 0 ?\n output.bindingsStream :\n output.bindingsStream.map((bindings: Bindings) => {\n for (const deleteVariable of deleteVariables) {\n bindings = bindings.delete(deleteVariable);\n }\n return bindings;\n });\n\n // Make sure that blank nodes with same labels are not reused over different bindings, as required by SPARQL 1.1.\n // Required for the BNODE() function: https://www.w3.org/TR/sparql11-query/#func-bnode\n // When we have a scoped blank node, make sure the skolemized value is maintained.\n let blankNodeCounter = 0;\n bindingsStream = bindingsStream.map((bindings: Bindings) => {\n blankNodeCounter++;\n const scopedBlankNodesCache = new Map();\n return bindings.map((term) => {\n if (term instanceof BlankNodeBindingsScoped) {\n let scopedBlankNode = scopedBlankNodesCache.get(term.value);\n if (!scopedBlankNode) {\n scopedBlankNode = DF.blankNode(`${term.value}${blankNodeCounter}`);\n scopedBlankNodesCache.set(term.value, scopedBlankNode);\n }\n return scopedBlankNode;\n }\n return term;\n });\n });\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...outputMetadata, variables }),\n };\n }\n}\n","import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Reduced Hash Query Operation Actor.\n */\nexport class ActorQueryOperationReducedHash extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly cacheSize: number;\n\n public constructor(args: IActorQueryOperationReducedHashArgs) {\n super(args, 'reduced');\n }\n\n public async testOperation(_operation: Algebra.Reduced, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Reduced, context: IActionContext): Promise {\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: operation.input, context }),\n );\n const bindingsStream: BindingsStream = output.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n public async newHashFilter(context: IActionContext): Promise<(bindings: Bindings) => boolean> {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes = new LRUCache({ max: this.cacheSize });\n return (bindings: Bindings) => {\n const hash: string = hashFunction(bindings);\n if (hashes.has(hash)) {\n return false;\n }\n hashes.set(hash, true);\n return true;\n };\n }\n}\n\nexport interface IActorQueryOperationReducedHashArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n /**\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IActionContext, IQueryOperationResult, IQueryOperationResultBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { SingletonIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Service Query Operation Actor.\n * It unwraps the SERVICE operation and executes it on the given source.\n */\nexport class ActorQueryOperationService extends ActorQueryOperationTypedMediated {\n public readonly forceSparqlEndpoint: boolean;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n\n public constructor(args: IActorQueryOperationServiceArgs) {\n super(args, 'service');\n }\n\n public async testOperation(operation: Algebra.Service, _context: IActionContext): Promise {\n if (operation.name.termType !== 'NamedNode') {\n throw new Error(`${this.name} can only query services by IRI, while a ${operation.name.termType} was given.`);\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.Service, context: IActionContext):\n Promise {\n // Identify the SERVICE target as query source\n const { querySource } = await this.mediatorQuerySourceIdentify.mediate({\n querySourceUnidentified: {\n value: operation.name.value,\n type: this.forceSparqlEndpoint ? 'sparql' : undefined,\n },\n context,\n });\n\n // Attach the source to the operation, and execute\n let output: IQueryOperationResultBindings;\n try {\n output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n operation: ActorQueryOperation.assignOperationSource(operation.input, querySource),\n context,\n }));\n } catch (error: unknown) {\n if (operation.silent) {\n // Emit a single empty binding\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n output = {\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n type: 'bindings',\n metadata: async() => ({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n };\n this.logWarn(context, `An error occurred when executing a SERVICE clause: ${( error).message}`);\n } else {\n throw error;\n }\n }\n\n return output;\n }\n}\n\nexport interface IActorQueryOperationServiceArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * If the SERVICE target should be assumed to be a SPARQL endpoint.\n * @default {false}\n */\n forceSparqlEndpoint: boolean;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The mediator for identifying query sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n IQueryOperationResultStream,\n IMetadata,\n IActionContext,\n} from '@comunica/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Slice Query Operation Actor.\n */\nexport class ActorQueryOperationSlice extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'slice');\n }\n\n public async testOperation(_operation: Algebra.Slice, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Slice, context: IActionContext):\n Promise {\n // Add limit indicator to the context, which can be used for query planning\n // eslint-disable-next-line unicorn/explicit-length-check\n if (operation.length) {\n context = context.set(KeysQueryOperation.limitIndicator, operation.length);\n }\n\n // Resolve the input\n const output: IQueryOperationResult = await this.mediatorQueryOperation\n .mediate({ operation: operation.input, context });\n\n if (output.type === 'bindings') {\n const bindingsStream = this.sliceStream(output.bindingsStream, operation);\n return {\n type: 'bindings',\n bindingsStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n\n if (output.type === 'quads') {\n const quadStream = this.sliceStream(output.quadStream, operation);\n return {\n type: 'quads',\n quadStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n\n // In all other cases, return the result as-is.\n return output;\n }\n\n // Slice the stream based on the pattern values\n private sliceStream(stream: AsyncIterator, pattern: Algebra.Slice): AsyncIterator {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength: boolean = Boolean(pattern.length) || pattern.length === 0;\n const { start } = pattern;\n const end = hasLength ? pattern.start + pattern.length! - 1 : Number.POSITIVE_INFINITY;\n return stream.transform({ offset: start, limit: Math.max(end - start + 1, 0), autoStart: false });\n }\n\n // If we find metadata, apply slicing on the total number of items\n private sliceMetadata(\n output: IQueryOperationResultStream,\n pattern: Algebra.Slice,\n ): () => Promise> {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength: boolean = Boolean(pattern.length) || pattern.length === 0;\n return () => (<() => Promise>>output.metadata)()\n .then((subMetadata) => {\n const cardinality = { ...subMetadata.cardinality };\n if (Number.isFinite(cardinality.value)) {\n cardinality.value = Math.max(0, cardinality.value - pattern.start);\n if (hasLength) {\n cardinality.value = Math.min(cardinality.value, pattern.length!);\n }\n }\n return { ...subMetadata, cardinality };\n });\n }\n}\n","import type { IActionQueryOperation, IActorQueryOperationArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { getMetadataBindings, getMetadataQuads } from '@comunica/metadata';\nimport type {\n IPhysicalQueryPlanLogger,\n IQueryOperationResult,\n IQuerySourceWrapper,\n} from '@comunica/types';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Source Query Operation Actor.\n */\nexport class ActorQueryOperationSource extends ActorQueryOperation {\n public constructor(args: IActorQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryOperation): Promise {\n if (!ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} requires an operation with source annotation.`);\n }\n return { httpRequests: 1 };\n }\n\n public async run(action: IActionQueryOperation): Promise {\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context\n .get(KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(\n action.operation.type,\n undefined,\n action.operation,\n action.context.get(KeysInitQuery.physicalQueryPlanNode),\n this.name,\n {},\n );\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(action.operation)!;\n const mergedContext = sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context;\n\n // Check if the operation is a CONSTRUCT query\n // We recurse because it may be wrapped in other operations such as SLICE and FROM\n let construct = false;\n Util.recurseOperation(action.operation, {\n construct(): boolean {\n construct = true;\n return false;\n },\n });\n // If so, delegate to queryQuads\n if (construct) {\n const quadStream = sourceWrapper.source.queryQuads(action.operation, mergedContext);\n const metadata = getMetadataQuads(quadStream);\n return {\n type: 'quads',\n quadStream,\n metadata,\n };\n }\n\n // eslint-disable-next-line ts/switch-exhaustiveness-check\n switch (action.operation.type) {\n case Algebra.types.ASK:\n return {\n type: 'boolean',\n execute: () => sourceWrapper.source.queryBoolean(action.operation, mergedContext),\n };\n case Algebra.types.COMPOSITE_UPDATE:\n case Algebra.types.DELETE_INSERT:\n case Algebra.types.LOAD:\n case Algebra.types.CLEAR:\n case Algebra.types.CREATE:\n case Algebra.types.DROP:\n case Algebra.types.ADD:\n case Algebra.types.MOVE:\n case Algebra.types.COPY:\n return {\n type: 'void',\n execute: () => sourceWrapper.source.queryVoid(action.operation, mergedContext),\n };\n }\n\n const bindingsStream = sourceWrapper.source.queryBindings(action.operation, mergedContext);\n const metadata = getMetadataBindings(bindingsStream);\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n BindingsStream,\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataBindings,\n MetadataQuads,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { UnionIterator } from 'asynciterator';\nimport { uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Union Query Operation Actor.\n */\nexport class ActorQueryOperationUnion extends ActorQueryOperationTypedMediated {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationUnionArgs) {\n super(args, 'union');\n }\n\n /**\n * Takes the union of the given double array variables.\n * Uniqueness is guaranteed.\n * @param {string[][]} variables Double array of variables to take the union of.\n * @return {string[]} The union of the given variables.\n */\n public static unionVariables(variables: RDF.Variable[][]): RDF.Variable[] {\n return uniqTerms(variables.flat());\n }\n\n /**\n * Takes the union of the given metadata array.\n * It will ensure that the cardinality metadata value is properly calculated.\n * @param {{[p: string]: any}[]} metadatas Array of metadata.\n * @param bindings If the union of the variables field should also be taken.\n * @param context The action context\n * @param mediatorRdfMetadataAccumulate Mediator for metadata accumulation\n * @return {{[p: string]: any}} Union of the metadata.\n */\n public static async unionMetadata<\n Bindings extends boolean,\n M extends (Bindings extends true ? MetadataBindings : MetadataQuads),\n >(\n metadatas: M[],\n bindings: Bindings,\n context: IActionContext,\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate,\n // eslint-disable-next-line function-paren-newline\n ): Promise {\n let accumulatedMetadata: M = (await mediatorRdfMetadataAccumulate\n .mediate({ mode: 'initialize', context })).metadata;\n\n // Accumulate cardinality\n for (const appendingMetadata of metadatas) {\n accumulatedMetadata = {\n ...appendingMetadata,\n ...(await mediatorRdfMetadataAccumulate\n .mediate({\n mode: 'append',\n accumulatedMetadata: accumulatedMetadata,\n appendingMetadata: appendingMetadata,\n context,\n })).metadata,\n };\n }\n\n // Create new metadata state\n accumulatedMetadata.state = new MetadataValidationState();\n\n // Propagate metadata invalidations\n const invalidateListener = (): void => accumulatedMetadata.state.invalidate();\n for (const metadata of metadatas) {\n metadata.state.addInvalidateListener(invalidateListener);\n }\n\n // Union variables\n if (bindings) {\n accumulatedMetadata.variables = ActorQueryOperationUnion\n .unionVariables(metadatas.map(metadata => metadata.variables));\n }\n\n return accumulatedMetadata;\n }\n\n public async testOperation(_operation: Algebra.Union, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Union, context: IActionContext):\n Promise {\n // Determine the type over which we are taking a union\n const outputsRaw = await Promise.all(operation.input\n .map(subOperation => this.mediatorQueryOperation.mediate({ operation: subOperation, context })));\n let outputType: string | undefined;\n for (const output of outputsRaw) {\n if (outputType === undefined) {\n outputType = output.type;\n } else if (outputType !== output.type) {\n throw new Error(`Unable to union ${outputType} and ${output.type}`);\n }\n }\n\n // Handle bindings\n if (outputType === 'bindings' || operation.input.length === 0) {\n const outputs: IQueryOperationResultBindings[] = outputsRaw.map(ActorQueryOperation.getSafeBindings);\n\n const bindingsStream: BindingsStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultBindings) => output.bindingsStream,\n ), { autoStart: false });\n\n const metadata: () => Promise = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'bindings', bindingsStream, metadata };\n }\n\n // Handle quads\n if (outputType === 'quads') {\n const outputs: IQueryOperationResultQuads[] = outputsRaw.map(ActorQueryOperation.getSafeQuads);\n\n const quadStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultQuads) => output.quadStream,\n ), { autoStart: false });\n\n const metadata: () => Promise = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, false, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'quads', quadStream, metadata };\n }\n\n // Throw otherwise\n throw new Error(`Unable to union ${outputType}`);\n }\n}\n\nexport interface IActorQueryOperationUnionArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type {\n MediatorRdfUpdateQuads,\n} from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL clear operations.\n */\nexport class ActorQueryOperationClear extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationClearArgs) {\n super(args, 'clear');\n }\n\n public async testOperation(operation: Algebra.Clear, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Clear, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n let graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n } else if (typeof operation.source === 'string') {\n graphs = operation.source;\n } else {\n graphs = [ operation.source ];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: false,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationClearArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Update CompositeUpdate Query Operation Actor.\n */\nexport class ActorQueryOperationUpdateCompositeUpdate\n extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'compositeupdate');\n }\n\n public async testOperation(\n operation: Algebra.CompositeUpdate,\n context: IActionContext,\n ): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.CompositeUpdate, context: IActionContext):\n Promise {\n const execute = (): Promise => (async(): Promise => {\n // Execute update operations in sequence\n for (const operation of operationOriginal.updates) {\n const subResult = ActorQueryOperation\n .getSafeVoid(await this.mediatorQueryOperation.mediate({ operation, context }));\n await subResult.execute();\n }\n })();\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor that\n * handles SPARQL create operations.\n */\nexport class ActorQueryOperationCreate extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationCreateArgs) {\n super(args, 'create');\n }\n\n public async testOperation(operation: Algebra.Create, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Create, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n const { execute } = await this.mediatorUpdateQuads.mediate({\n createGraphs: {\n graphs: [ operation.source ],\n requireNonExistence: !operation.silent,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationCreateArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import { BindingsToQuadsIterator } from '@comunica/actor-query-operation-construct';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryOperationResult, BindingsStream, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Update DeleteInsert Query Operation Actor.\n */\nexport class ActorQueryOperationUpdateDeleteInsert extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n protected blankNodeCounter = 0;\n\n public constructor(args: IActorQueryOperationUpdateDeleteInsertArgs) {\n super(args, 'deleteinsert');\n }\n\n public async testOperation(\n operation: Algebra.DeleteInsert,\n context: IActionContext,\n ): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.DeleteInsert, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Evaluate the where clause\n const whereBindings: BindingsStream = operation.where ?\n ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation\n .mediate({ operation: operation.where, context })).bindingsStream :\n new ArrayIterator([ bindingsFactory.bindings() ], { autoStart: false });\n\n // Construct triples using the result based on the pattern.\n let quadStreamInsert: AsyncIterator | undefined;\n let quadStreamDelete: AsyncIterator | undefined;\n if (operation.insert) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamInsert = new BindingsToQuadsIterator(\n operation.insert.map(BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)),\n whereBindings.clone(),\n );\n this.blankNodeCounter++;\n }\n if (operation.delete) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamDelete = new BindingsToQuadsIterator(\n operation.delete.map(BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)),\n whereBindings.clone(),\n );\n this.blankNodeCounter++;\n }\n\n // Evaluate the required modifications\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert,\n quadStreamDelete,\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationUpdateDeleteInsertArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL drop operations.\n */\nexport class ActorQueryOperationDrop extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationDropArgs) {\n super(args, 'drop');\n }\n\n public async testOperation(operation: Algebra.Drop, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Drop, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n let graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n } else if (typeof operation.source === 'string') {\n graphs = operation.source;\n } else {\n graphs = [ operation.source ];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: true,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationDropArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL load operations.\n */\nexport class ActorQueryOperationLoad extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n\n private readonly factory: Factory;\n private readonly constructOperation: Algebra.Construct;\n\n public constructor(args: IActorQueryOperationLoadArgs) {\n super(args, 'load');\n this.factory = new Factory();\n }\n\n public async testOperation(operation: Algebra.Load, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Load, context: IActionContext):\n Promise {\n // Determine query source\n let subContext = context;\n if (operation.silent) {\n subContext = subContext.set(KeysInitQuery.lenient, true);\n }\n const { querySource } = await this.mediatorQuerySourceIdentify.mediate({\n querySourceUnidentified: { value: operation.source.value },\n context: subContext,\n });\n\n // Create CONSTRUCT query on the given source\n const output = ActorQueryOperationLoad.getSafeQuads(await this.mediatorQueryOperation.mediate({\n operation: this.factory.createConstruct(\n ActorQueryOperation.assignOperationSource(\n this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')),\n querySource,\n ),\n [ this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')) ],\n ),\n context: subContext,\n }));\n\n // Determine quad stream to insert\n let quadStream = output.quadStream;\n if (operation.destination) {\n quadStream = quadStream.map(quad => DF.quad(quad.subject, quad.predicate, quad.object, operation.destination));\n }\n\n // Insert quad stream\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert: quadStream,\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationLoadArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n /**\n * Mediator for identifying load sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTyped } from '@comunica/bus-query-operation';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQueryOperationResult,\n BindingsStream,\n Bindings,\n IActionContext,\n MetadataBindings,\n} from '@comunica/types';\nimport { ArrayIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Values Query Operation Actor.\n */\nexport class ActorQueryOperationValues extends ActorQueryOperationTyped {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationUpdateDeleteInsertArgs) {\n super(args, 'values');\n }\n\n public async testOperation(_operation: Algebra.Values, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Values, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const bindingsStream: BindingsStream = new ArrayIterator(operation.bindings\n .map(x => bindingsFactory.bindings(Object.entries(x)\n .map(([ key, value ]) => [ DF.variable(key.slice(1)), value ]))));\n const variables = operation.variables;\n const metadata = (): Promise => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: operation.bindings.length },\n canContainUndefs: operation.bindings.some(bindings => variables.some(variable => !(`?${variable.value}` in bindings))),\n variables,\n });\n return { type: 'bindings', bindingsStream, metadata };\n }\n}\n\nexport interface IActorQueryOperationUpdateDeleteInsertArgs extends\n IActorArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActionQueryParse, IActorQueryParseArgs, IActorQueryParseOutput } from '@comunica/bus-query-parse';\nimport { ActorQueryParse } from '@comunica/bus-query-parse';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { Converter } from 'graphql-to-sparql';\n\n/**\n * A comunica GraphQL SPARQL Parse Actor.\n */\nexport class ActorQueryParseGraphql extends ActorQueryParse {\n private readonly graphqlToSparql: Converter;\n\n public constructor(args: IActorQueryParseArgs) {\n super(args);\n this.graphqlToSparql = new Converter({ requireContext: true });\n }\n\n public async test(action: IActionQueryParse): Promise {\n if (action.queryFormat?.language !== 'graphql') {\n throw new Error('This actor can only parse GraphQL queries');\n }\n return true;\n }\n\n public async run(action: IActionQueryParse): Promise {\n const context: any = action.context.get(KeysInitQuery.jsonLdContext) || {};\n const options = {\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n singularizeVariables: action.context.get(KeysInitQuery.graphqlSingularizeVariables),\n };\n return { operation: await this.graphqlToSparql.graphqlToSparqlAlgebra(action.query, context, options) };\n }\n}\n","import type { IActionQueryParse, IActorQueryParseArgs, IActorQueryParseOutput } from '@comunica/bus-query-parse';\nimport { ActorQueryParse } from '@comunica/bus-query-parse';\nimport type { IActorTest } from '@comunica/core';\nimport { translate } from 'sparqlalgebrajs';\nimport { Parser as SparqlParser } from 'sparqljs';\n\n/**\n * A comunica Algebra SPARQL Parse Actor.\n */\nexport class ActorQueryParseSparql extends ActorQueryParse {\n public readonly prefixes: Record;\n\n public constructor(args: IActorQueryParseSparqlArgs) {\n super(args);\n this.prefixes = Object.freeze(this.prefixes);\n }\n\n public async test(action: IActionQueryParse): Promise {\n if (action.queryFormat && action.queryFormat.language !== 'sparql') {\n throw new Error('This actor can only parse SPARQL queries');\n }\n return true;\n }\n\n public async run(action: IActionQueryParse): Promise {\n const parser = new SparqlParser({ prefixes: this.prefixes, baseIRI: action.baseIRI, sparqlStar: true });\n const parsedSyntax = parser.parse(action.query);\n const baseIRI = parsedSyntax.type === 'query' ? parsedSyntax.base : undefined;\n return {\n baseIRI,\n operation: translate(parsedSyntax, {\n quads: true,\n prefixes: this.prefixes,\n blankToVariable: true,\n baseIRI: action.baseIRI,\n }),\n };\n }\n}\n\nexport interface IActorQueryParseSparqlArgs extends IActorQueryParseArgs {\n /**\n * Default prefixes to use\n * @range {json}\n * @default {{\n * \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\n * \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\",\n * \"owl\": \"http://www.w3.org/2002/07/owl#\",\n * \"xsd\": \"http://www.w3.org/2001/XMLSchema#\",\n * \"dc\": \"http://purl.org/dc/terms/\",\n * \"dcterms\": \"http://purl.org/dc/terms/\",\n * \"dc11\": \"http://purl.org/dc/elements/1.1/\",\n * \"foaf\": \"http://xmlns.com/foaf/0.1/\",\n * \"geo\": \"http://www.w3.org/2003/01/geo/wgs84_pos#\",\n * \"dbpedia\": \"http://dbpedia.org/resource/\",\n * \"dbpedia-owl\": \"http://dbpedia.org/ontology/\",\n * \"dbpprop\": \"http://dbpedia.org/property/\",\n * \"schema\": \"http://schema.org/\",\n * \"skos\": \"http://www.w3.org/2008/05/skos#\"\n * }}\n */\n prefixes?: Record;\n}\n","import type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\n\n/**\n * A comunica Explain Logical Query Process Actor.\n */\nexport class ActorQueryProcessExplainLogical extends ActorQueryProcess {\n public readonly queryProcessor: IQueryProcessSequential;\n\n public constructor(args: IActorQueryProcessExplainLogicalArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n if ((action.context.get(KeysInitQuery.explain) ||\n action.context.get(new ActionContextKey('explain'))) !== 'logical') {\n throw new Error(`${this.name} can only explain in 'logical' mode.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Parse and optimize the query\n let { operation, context } = await this.queryProcessor.parse(action.query, action.context);\n ({ operation, context } = await this.queryProcessor.optimize(operation, context));\n\n return {\n result: {\n explain: true,\n type: 'logical',\n data: operation,\n },\n };\n }\n}\n\nexport interface IActorQueryProcessExplainLogicalArgs extends IActorQueryProcessArgs {\n queryProcessor: IQueryProcessSequential;\n}\n","import type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\n\n/**\n * A comunica Explain Parsed Query Process Actor.\n */\nexport class ActorQueryProcessExplainParsed extends ActorQueryProcess {\n public readonly queryProcessor: IQueryProcessSequential;\n\n public constructor(args: IActorQueryProcessExplainParsedArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n if ((action.context.get(KeysInitQuery.explain) ||\n action.context.get(new ActionContextKey('explain'))) !== 'parsed') {\n throw new Error(`${this.name} can only explain in 'parsed' mode.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Parse the query\n const { operation } = await this.queryProcessor.parse(action.query, action.context);\n\n return {\n result: {\n explain: true,\n type: 'parsed',\n data: operation,\n },\n };\n }\n}\n\nexport interface IActorQueryProcessExplainParsedArgs extends IActorQueryProcessArgs {\n queryProcessor: IQueryProcessSequential;\n}\n","import type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport { MemoryPhysicalQueryPlanLogger } from './MemoryPhysicalQueryPlanLogger';\n\n/**\n * A comunica Explain Physical Query Process Actor.\n */\nexport class ActorQueryProcessExplainPhysical extends ActorQueryProcess {\n public readonly queryProcessor: IQueryProcessSequential;\n\n public constructor(args: IActorQueryProcessExplainPhysicalArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n const mode = (action.context.get(KeysInitQuery.explain) || action.context.get(new ActionContextKey('explain')));\n if (mode !== 'physical' && mode !== 'physical-json') {\n throw new Error(`${this.name} can only explain in 'physical' or 'physical-json' mode.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Run all query processing steps in sequence\n\n let { operation, context } = await this.queryProcessor.parse(action.query, action.context);\n ({ operation, context } = await this.queryProcessor.optimize(operation, context));\n\n // If we need a physical query plan, store a physical query plan logger in the context, and collect it after exec\n const physicalQueryPlanLogger = new MemoryPhysicalQueryPlanLogger();\n context = context.set(KeysInitQuery.physicalQueryPlanLogger, physicalQueryPlanLogger);\n\n const output = await this.queryProcessor.evaluate(operation, context);\n\n // Make sure the whole result is produced\n switch (output.type) {\n case 'bindings':\n await output.bindingsStream.toArray();\n break;\n case 'quads':\n await output.quadStream.toArray();\n break;\n case 'boolean':\n await output.execute();\n break;\n case 'void':\n await output.execute();\n break;\n }\n\n const mode: 'physical' | 'physical-json' = (action.context.get(KeysInitQuery.explain) ??\n action.context.getSafe(new ActionContextKey('explain')));\n return {\n result: {\n explain: true,\n type: mode,\n data: mode === 'physical' ? physicalQueryPlanLogger.toCompactString() : physicalQueryPlanLogger.toJson(),\n },\n };\n }\n}\n\nexport interface IActorQueryProcessExplainPhysicalArgs extends IActorQueryProcessArgs {\n queryProcessor: IQueryProcessSequential;\n}\n","import type { IPhysicalQueryPlanLogger, IPlanNode } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A physical query plan logger that stores everything in memory.\n */\nexport class MemoryPhysicalQueryPlanLogger implements IPhysicalQueryPlanLogger {\n private readonly planNodes: Map;\n private rootNode: IPlanNode | undefined;\n\n public constructor() {\n this.planNodes = new Map();\n }\n\n public logOperation(\n logicalOperator: string,\n physicalOperator: string | undefined,\n node: any,\n parentNode: any,\n actor: string,\n metadata: any,\n ): void {\n const planNode: IPlanNode = {\n actor,\n logicalOperator,\n physicalOperator,\n rawNode: node,\n children: [],\n metadata,\n };\n this.planNodes.set(node, planNode);\n\n if (this.rootNode) {\n if (!parentNode) {\n throw new Error(`Detected more than one parent-less node`);\n }\n const planParentNode = this.planNodes.get(parentNode);\n if (!planParentNode) {\n throw new Error(`Could not find parent node`);\n }\n planParentNode.children.push(planNode);\n } else {\n if (parentNode) {\n throw new Error(`No root node has been set yet, while a parent is being referenced`);\n }\n this.rootNode = planNode;\n }\n }\n\n public stashChildren(node: any, filter?: (planNodeFilter: IPlanNode) => boolean): void {\n const planNode = this.planNodes.get(node);\n if (!planNode) {\n throw new Error(`Could not find plan node`);\n }\n planNode.children = filter ? planNode.children.filter(filter) : [];\n }\n\n public unstashChild(\n node: any,\n parentNode: any,\n ): void {\n const planNode = this.planNodes.get(node);\n if (planNode) {\n const planParentNode = this.planNodes.get(parentNode);\n if (!planParentNode) {\n throw new Error(`Could not find plan parent node`);\n }\n planParentNode.children.push(planNode);\n }\n }\n\n public appendMetadata(\n node: any,\n metadata: any,\n ): void {\n const planNode = this.planNodes.get(node);\n if (planNode) {\n planNode.metadata = {\n ...planNode.metadata,\n ...metadata,\n };\n }\n }\n\n public toJson(): IPlanNodeJson | Record {\n return this.rootNode ? this.planNodeToJson(this.rootNode) : {};\n }\n\n private planNodeToJson(node: IPlanNode): IPlanNodeJson {\n const data: IPlanNodeJson = {\n logical: node.logicalOperator,\n physical: node.physicalOperator,\n ...this.getLogicalMetadata(node.rawNode),\n ...this.compactMetadata(node.metadata),\n };\n\n if (node.children.length > 0) {\n data.children = node.children.map(child => this.planNodeToJson(child));\n }\n\n // Special case: compact children for bind joins.\n if (data.physical === 'bind' && data.children) {\n // Group children by query plan format\n const childrenGrouped: Record = {};\n for (const child of data.children) {\n const lastSubChild = child.children?.at(-1) ?? child;\n const key = this.getPlanHash(lastSubChild).join(',');\n if (!childrenGrouped[key]) {\n childrenGrouped[key] = [];\n }\n childrenGrouped[key].push(child);\n }\n\n // Compact query plan occurrences\n const childrenCompact: IPlanNodeJsonChildCompact[] = [];\n for (const children of Object.values(childrenGrouped)) {\n childrenCompact.push({\n occurrences: children.length,\n firstOccurrence: children[0],\n });\n }\n\n // Replace children with compacted representation\n data.childrenCompact = childrenCompact;\n delete data.children;\n }\n\n return data;\n }\n\n private getPlanHash(node: IPlanNodeJson): string[] {\n let entries = [ `${node.logical}-${node.physical}` ];\n if (node.children) {\n entries = [\n ...entries,\n ...node.children.flatMap(child => this.getPlanHash(child)),\n ];\n } else if (node.childrenCompact) {\n entries = [\n ...entries,\n ...node.childrenCompact.flatMap(child => this.getPlanHash(child.firstOccurrence)),\n ];\n }\n return entries;\n }\n\n private compactMetadata(metadata: any): any {\n return Object.fromEntries(Object.entries(metadata)\n .map(([ key, value ]) => [ key, this.compactMetadataValue(value) ]));\n }\n\n private compactMetadataValue(value: any): any {\n return value && typeof value === 'object' && 'termType' in value ? this.getLogicalMetadata(value) : value;\n }\n\n private getLogicalMetadata(rawNode: any): IPlanNodeJsonLogicalMetadata {\n const data: IPlanNodeJsonLogicalMetadata = {};\n\n if ('type' in rawNode) {\n const operation: Algebra.Operation = rawNode;\n\n if (operation.metadata?.scopedSource) {\n data.source = ( operation.metadata.scopedSource).source.toString();\n }\n\n // eslint-disable-next-line ts/switch-exhaustiveness-check\n switch (operation.type) {\n case 'pattern':\n data.pattern = this.quadToString(operation);\n break;\n case 'project':\n data.variables = operation.variables.map(variable => variable.value);\n break;\n }\n }\n\n return data;\n }\n\n private quadToString(quad: RDF.BaseQuad): string {\n return `${termToString(quad.subject)} ${termToString(quad.predicate)} ${termToString(quad.object)}${quad.graph.termType === 'DefaultGraph' ? '' : ` ${termToString(quad.graph)}`}`;\n }\n\n public toCompactString(): string {\n const node = this.toJson();\n const lines: string[] = [];\n const sources: Map = new Map();\n\n if ('logical' in node) {\n this.nodeToCompactString(lines, sources, '', node);\n } else {\n lines.push('Empty');\n }\n\n if (sources.size > 0) {\n lines.push('');\n lines.push('sources:');\n for (const [ key, id ] of sources.entries()) {\n lines.push(` ${id}: ${key}`);\n }\n }\n\n return lines.join('\\n');\n }\n\n public nodeToCompactString(\n lines: string[],\n sources: Map,\n indent: string,\n node: IPlanNodeJson,\n metadata?: string,\n ): void {\n let sourceId: number | undefined;\n if (node.source) {\n sourceId = sources.get(node.source);\n if (sourceId === undefined) {\n sourceId = sources.size;\n sources.set(node.source, sourceId);\n }\n }\n\n lines.push(`${\n indent}${\n node.logical}${\n node.physical ? `(${node.physical})` : ''}${\n node.pattern ? ` (${node.pattern})` : ''}${\n node.variables ? ` (${node.variables.join(',')})` : ''}${\n node.bindOperation ? ` bindOperation:(${node.bindOperation.pattern}) bindCardEst:${node.bindOperationCardinality.type === 'estimate' ? '~' : ''}${numberToString(node.bindOperationCardinality.value)}` : ''}${\n node.cardinality ? ` cardEst:${node.cardinality.type === 'estimate' ? '~' : ''}${numberToString(node.cardinality.value)}` : ''}${\n node.source ? ` src:${sourceId}` : ''}${\n node.cardinalityReal ? ` cardReal:${node.cardinalityReal}` : ''}${\n node.timeSelf ? ` timeSelf:${numberToString(node.timeSelf)}ms` : ''}${\n node.timeLife ? ` timeLife:${numberToString(node.timeLife)}ms` : ''}${\n metadata ? ` ${metadata}` : ''}`);\n for (const child of node.children ?? []) {\n this.nodeToCompactString(lines, sources, `${indent} `, child);\n }\n for (const child of node.childrenCompact ?? []) {\n this.nodeToCompactString(lines, sources, `${indent} `, child.firstOccurrence, `compacted-occurrences:${child.occurrences}`);\n }\n }\n}\n\nexport function numberToString(value: number): string {\n return value.toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 3 });\n}\n\ninterface IPlanNodeJson extends IPlanNodeJsonLogicalMetadata {\n logical: string;\n physical?: string;\n [metadataKey: string]: any;\n children?: IPlanNodeJson[];\n childrenCompact?: IPlanNodeJsonChildCompact[];\n}\n\ninterface IPlanNodeJsonChildCompact {\n occurrences: number;\n firstOccurrence: IPlanNodeJson;\n}\n\ninterface IPlanNodeJsonLogicalMetadata {\n pattern?: string;\n source?: string;\n variables?: string[];\n cardinality?: RDF.QueryResultCardinality;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { materializeOperation } from '@comunica/bus-query-operation';\nimport type { MediatorQueryParse } from '@comunica/bus-query-parse';\nimport type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n IQueryProcessSequentialOutput,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n QueryFormatType,\n} from '@comunica/types';\n\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Sequential Query Process Actor.\n */\nexport class ActorQueryProcessSequential extends ActorQueryProcess implements IQueryProcessSequential {\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly mediatorQueryParse: MediatorQueryParse;\n public readonly mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryProcessSequentialArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n if (action.context.get(KeysInitQuery.explain) || action.context.get(new ActionContextKey('explain'))) {\n throw new Error(`${this.name} is not able to explain queries.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Run all query processing steps in sequence\n let { operation, context } = await this.parse(action.query, action.context);\n ({ operation, context } = await this.optimize(operation, context));\n const output = await this.evaluate(operation, context);\n\n return { result: output };\n }\n\n public async parse(query: QueryFormatType, context: IActionContext): Promise {\n // Pre-processing the context\n context = (await this.mediatorContextPreprocess.mediate({ context, initialize: true })).context;\n\n // Parse query\n let operation: Algebra.Operation;\n if (typeof query === 'string') {\n // Save the original query string in the context\n context = context.set(KeysInitQuery.queryString, query);\n\n const baseIRI: string | undefined = context.get(KeysInitQuery.baseIRI);\n const queryFormat: RDF.QueryFormat = context.get(KeysInitQuery.queryFormat)!;\n const queryParseOutput = await this.mediatorQueryParse.mediate({ context, query, queryFormat, baseIRI });\n operation = queryParseOutput.operation;\n // Update the baseIRI in the context if the query modified it.\n if (queryParseOutput.baseIRI) {\n context = context.set(KeysInitQuery.baseIRI, queryParseOutput.baseIRI);\n }\n } else {\n operation = query;\n }\n\n // Apply initial bindings in context\n if (context.has(KeysInitQuery.initialBindings)) {\n const bindingsFactory = await BindingsFactory\n .create(this.mediatorMergeBindingsContext, context);\n operation = materializeOperation(operation, context.get(KeysInitQuery.initialBindings)!, bindingsFactory);\n\n // Delete the query string from the context, since our initial query might have changed\n context = context.delete(KeysInitQuery.queryString);\n }\n\n return { operation, context };\n }\n\n public async optimize(operation: Algebra.Operation, context: IActionContext): Promise {\n // Save initial query in context\n context = context.set(KeysInitQuery.query, operation);\n\n ({ operation, context } = await this.mediatorOptimizeQueryOperation.mediate({ context, operation }));\n\n // Save original query in context\n context = context.set(KeysInitQuery.query, operation);\n\n return { operation, context };\n }\n\n public async evaluate(operation: Algebra.Operation, context: IActionContext): Promise {\n const output = await this.mediatorQueryOperation.mediate({ context, operation });\n output.context = context;\n return output;\n }\n}\n\nexport interface IActorQueryProcessSequentialArgs extends IActorQueryProcessArgs {\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n /**\n * The query parse mediator\n */\n mediatorQueryParse: MediatorQueryParse;\n /**\n * The query operation optimize mediator\n */\n mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport { wrap } from 'asynciterator';\nimport * as RdfString from 'rdf-string';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica JSON Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeJson extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/json\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/json\": \"https://comunica.linkeddatafragments.org/#results_JSON\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads', 'boolean' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings or quad streams.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n data._read = () => {\n // Do nothing\n };\n\n if (action.type === 'bindings' || action.type === 'quads') {\n let stream = action.type === 'bindings' ?\n wrap(( action).bindingsStream)\n .map(element => JSON.stringify(Object.fromEntries([ ...element ]\n .map(([ key, value ]) => [ key.value, RdfString.termToString(value) ])))) :\n wrap(( action).quadStream)\n .map(element => JSON.stringify(RdfString.quadToStringQuad(element)));\n\n let empty = true;\n stream = stream.map((element) => {\n const ret = `${empty ? '' : ','}\\n${element}`;\n empty = false;\n return ret;\n }).prepend([ '[' ]).append([ '\\n]\\n' ]);\n\n data.wrap( stream);\n } else {\n try {\n data.push(`${JSON.stringify(await ( action).execute())}\\n`);\n data.push(null);\n } catch (error: unknown) {\n setTimeout(() => data.emit('error', error));\n }\n }\n\n return { data };\n }\n}\n","import type {\n IActorQueryResultSerializeArgs,\n IActorQueryResultSerializeOutput,\n IActionSparqlSerialize,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerialize } from '@comunica/bus-query-result-serialize';\nimport type {\n MediatorRdfSerializeHandle,\n MediatorRdfSerializeMediaTypeFormats,\n MediatorRdfSerializeMediaTypes,\n} from '@comunica/bus-rdf-serialize';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResultQuads } from '@comunica/types';\n\n/**\n * A comunica RDF Query Result Serialize Actor.\n *\n * It serializes quad streams (for example resulting from a CONSTRUCT query)\n * to an RDF syntax.\n */\nexport class ActorQueryResultSerializeRdf extends ActorQueryResultSerialize\n implements IActorQueryResultSerializeRdfArgs {\n public readonly mediatorRdfSerialize: MediatorRdfSerializeHandle;\n public readonly mediatorMediaTypeCombiner: MediatorRdfSerializeMediaTypes;\n public readonly mediatorMediaTypeFormatCombiner: MediatorRdfSerializeMediaTypeFormats;\n\n public constructor(args: IActorQueryResultSerializeRdfArgs) {\n super(args);\n }\n\n public async testHandle(action: IActionSparqlSerialize, mediaType: string, context: IActionContext):\n Promise {\n // Check if we are provided with a quad stream\n if (action.type !== 'quads') {\n throw new Error(`Actor ${this.name} can only handle quad streams`);\n }\n\n // Check if the given media type can be handled\n const { mediaTypes } = await this.mediatorMediaTypeCombiner.mediate(\n { context, mediaTypes: true },\n );\n if (!(mediaType in mediaTypes)) {\n throw new Error(`Actor ${this.name} can not handle media type ${mediaType}. All available types: ${\n // eslint-disable-next-line ts/restrict-template-expressions\n Object.keys(mediaTypes)}`);\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, mediaType: string, context: IActionContext):\n Promise {\n // Delegate handling to the mediator\n return (await this.mediatorRdfSerialize.mediate({\n context,\n handle: {\n context,\n quadStream: ( action).quadStream,\n },\n handleMediaType: mediaType,\n })).handle;\n }\n\n public async testMediaType(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypes(context: IActionContext): Promise> {\n return (await this.mediatorMediaTypeCombiner.mediate({ context, mediaTypes: true })).mediaTypes;\n }\n\n public async testMediaTypeFormats(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypeFormats(context: IActionContext): Promise> {\n return (await this.mediatorMediaTypeFormatCombiner.mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n}\n\nexport interface IActorQueryResultSerializeRdfArgs extends IActorQueryResultSerializeArgs {\n mediatorRdfSerialize: MediatorRdfSerializeHandle;\n mediatorMediaTypeCombiner: MediatorRdfSerializeMediaTypes;\n mediatorMediaTypeFormatCombiner: MediatorRdfSerializeMediaTypeFormats;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n IQueryOperationResultQuads,\n IQueryOperationResultVoid,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica Simple Sparql Serialize Actor.\n */\nexport class ActorQueryResultSerializeSimple extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{ \"simple\": 0.9 }} mediaTypePriorities\n * \\ @defaultNested {{ \"simple\": \"https://comunica.linkeddatafragments.org/#results_simple\" }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads', 'boolean', 'void' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams, quad streams, booleans, or updates.');\n }\n return true;\n }\n\n protected static termToString(term: RDF.Term): string {\n return term.termType === 'Quad' ? termToString(term) : term.value;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n if (action.type === 'bindings') {\n data.wrap( (action).bindingsStream.map((bindings: RDF.Bindings) => `${[ ...bindings ].map(\n ([ key, value ]) => `?${key.value}: ${ActorQueryResultSerializeSimple.termToString(value)}`,\n ).join('\\n')}\\n\\n`));\n } else if (action.type === 'quads') {\n data.wrap( (action).quadStream.map(quad =>\n `subject: ${ActorQueryResultSerializeSimple.termToString(quad.subject)}\\n` +\n `predicate: ${ActorQueryResultSerializeSimple.termToString(quad.predicate)}\\n` +\n `object: ${ActorQueryResultSerializeSimple.termToString(quad.object)}\\n` +\n `graph: ${ActorQueryResultSerializeSimple.termToString(quad.graph)}\\n\\n`));\n } else {\n data.wrap( wrap(\n action.type === 'boolean' ?\n ( action).execute().then(value => [ `${value}\\n` ]) :\n (action).execute().then(() => [ 'ok\\n' ]),\n ));\n }\n\n return { data };\n }\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport {\n ActorQueryResultSerializeFixedMediaTypes,\n} from '@comunica/bus-query-result-serialize';\nimport type { Bindings, IActionContext, IQueryOperationResultBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica SPARQL CSV Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlCsv extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"text/csv\": 0.75\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/csv\": \"http://www.w3.org/ns/formats/SPARQL_Results_CSV\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n * Converts an RDF term to its CSV representation.\n * @param {RDF.Term} value An RDF term.\n * @return {string} A string representation of the given value.\n */\n public static bindingToCsvBindings(value?: RDF.Term): string {\n if (!value) {\n return '';\n }\n\n let stringValue = value.value;\n\n if (value.termType === 'Literal') {\n // This is a lossy representation, since language and datatype are not encoded in here.\n stringValue = `${stringValue}`;\n } else if (value.termType === 'BlankNode') {\n stringValue = `_:${stringValue}`;\n } else if (value.termType === 'Quad') {\n let object = ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(value.object);\n if (value.object.termType === 'Literal') {\n // If object is a literal, it must be put in quotes, and internal quotes must be escaped\n object = `\"${object.replaceAll('\"', '\"\"')}\"`;\n }\n stringValue = `<< ${ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(value.subject)} ${ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(value.predicate)} ${object} >>`;\n } else {\n stringValue = `<${stringValue}>`;\n }\n\n // If a value contains certain characters, put it between double quotes\n if (/[\",\\n\\r]/u.test(stringValue)) {\n // Within quote strings, \" is written using a pair of quotation marks \"\".\n stringValue = `\"${stringValue.replaceAll('\"', '\"\"')}\"`;\n }\n\n return stringValue;\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string | undefined, _context: IActionContext):\n Promise {\n const bindingsAction = action;\n\n const data = new Readable();\n\n const metadata = await bindingsAction.metadata();\n\n // Write head\n data.push(`${metadata.variables.map(variable => variable.value).join(',')}\\r\\n`);\n\n // Write body\n data.wrap( bindingsAction.bindingsStream.map((bindings: Bindings) => `${metadata.variables\n .map(key => ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(bindings.get(key)))\n .join(',')}\\r\\n`));\n\n return { data };\n }\n}\n","import type { IActionHttp, IActorHttpOutput } from '@comunica/bus-http';\nimport type { ActorHttpInvalidateListenable } from '@comunica/bus-http-invalidate';\nimport type { Actor, IActionObserverArgs, IActorTest } from '@comunica/core';\nimport { ActionObserver } from '@comunica/core';\n\n/**\n * Observes HTTP actions, and maintains a counter of the number of requests.\n */\nexport class ActionObserverHttp extends ActionObserver {\n public readonly httpInvalidator: ActorHttpInvalidateListenable;\n public requests = 0;\n\n /* eslint-disable max-len */\n /**\n * @param args - @defaultNested {} bus\n */\n public constructor(args: IActionObserverHttpArgs) {\n super(args);\n this.bus.subscribeObserver(this);\n this.httpInvalidator.addInvalidateListener(() => {\n this.requests = 0;\n });\n }\n /* eslint-enable max-len */\n\n public onRun(\n _actor: Actor,\n _action: IActionHttp,\n _output: Promise,\n ): void {\n this.requests++;\n }\n}\n\nexport interface IActionObserverHttpArgs extends IActionObserverArgs {\n /* eslint-disable max-len */\n /**\n * An actor that listens to HTTP invalidation events\n * @default { a }\n */\n httpInvalidator: ActorHttpInvalidateListenable;\n /* eslint-enable max-len */\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap } from 'asynciterator';\nimport { Readable } from 'readable-stream';\nimport type { ActionObserverHttp } from './ActionObserverHttp';\n\n/**\n * A comunica sparql-results+xml Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlJson extends ActorQueryResultSerializeFixedMediaTypes {\n private readonly emitMetadata: boolean;\n public readonly httpObserver: ActionObserverHttp;\n\n /* eslint-disable max-len */\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/sparql-results+json\": 0.8\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/sparql-results+json\": \"http://www.w3.org/ns/formats/SPARQL_Results_JSON\"\n * }} mediaTypeFormats\n * \\ @defaultNested {true} emitMetadata\n * \\ @defaultNested { a } httpObserver\n */\n public constructor(args: IActorQueryResultSerializeSparqlJsonArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n /**\n * Converts an RDF term to its JSON representation.\n * @param {RDF.Term} value An RDF term.\n * @return {any} A JSON object.\n */\n public static bindingToJsonBindings(value: RDF.Term): any {\n if (value.termType === 'Literal') {\n const literal: RDF.Literal = value;\n const jsonValue: any = { value: literal.value, type: 'literal' };\n const { language, datatype } = literal;\n if (language) {\n jsonValue['xml:lang'] = language;\n } else if (datatype && datatype.value !== 'http://www.w3.org/2001/XMLSchema#string') {\n jsonValue.datatype = datatype.value;\n }\n return jsonValue;\n }\n if (value.termType === 'BlankNode') {\n return { value: value.value, type: 'bnode' };\n }\n if (value.termType === 'Quad') {\n return {\n value: {\n subject: ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value.subject),\n predicate: ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value.predicate),\n object: ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value.object),\n },\n type: 'triple',\n };\n }\n return { value: value.value, type: 'uri' };\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'boolean' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or booleans.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string | undefined, _context: IActionContext):\n Promise {\n const data = new Readable();\n // Write head\n const head: any = {};\n if (action.type === 'bindings') {\n const metadata = await ( action).metadata();\n if (metadata.variables.length > 0) {\n head.vars = metadata.variables.map(variable => variable.value);\n }\n }\n data.push(`{\"head\": ${JSON.stringify(head)},\\n`);\n\n if (action.type === 'bindings') {\n const resultStream = ( action).bindingsStream;\n data.push('\"results\": { \"bindings\": [\\n');\n\n let first = true;\n\n function* end(cb: () => string): Generator {\n yield cb();\n }\n\n // Write bindings\n data.wrap(\n // JSON SPARQL results spec does not allow unbound variables and blank node bindings\n wrap(resultStream).map((bindings) => {\n const res = `${first ? '' : ',\\n'}${JSON.stringify(Object.fromEntries([ ...bindings ]\n .map(([ key, value ]) => [ key.value, ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value) ])))}`;\n first = false;\n return res;\n }).append(wrap(end(() => `\\n]}${this.emitMetadata ? `,\\n\"metadata\": { \"httpRequests\": ${this.httpObserver.requests} }` : ''}}\\n`))),\n );\n } else {\n data.wrap( wrap(( action).execute().then(value => [ `\"boolean\":${value}\\n}\\n` ])));\n }\n\n return { data };\n }\n}\n\nexport interface IActorQueryResultSerializeSparqlJsonArgs extends IActorQueryResultSerializeFixedMediaTypesArgs {\n emitMetadata: boolean;\n httpObserver: ActionObserverHttp;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport {\n ActorQueryResultSerializeFixedMediaTypes,\n} from '@comunica/bus-query-result-serialize';\nimport type { IActionContext, IQueryOperationResultBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string-ttl';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica SPARQL TSV Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlTsv extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"text/tab-separated-values\": 0.75\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/tab-separated-values\": \"http://www.w3.org/ns/formats/SPARQL_Results_TSV\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n * Converts an RDF term to its TSV representation.\n * @param {RDF.Term} value An RDF term.\n * @return {string} A string representation of the given value.\n */\n public static bindingToTsvBindings(value?: RDF.Term): string {\n if (!value) {\n return '';\n }\n\n // Escape tab, newline and carriage return characters\n return termToString(value)\n .replaceAll('\\t', '\\\\t')\n .replaceAll('\\n', '\\\\n')\n .replaceAll('\\r', '\\\\r');\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string | undefined, _context: IActionContext):\n Promise {\n const bindingsAction = action;\n\n const data = new Readable();\n // Write head\n const metadata = await bindingsAction.metadata();\n data.push(`${metadata.variables.map((variable: RDF.Variable) => variable.value).join('\\t')}\\n`);\n\n // Write Bindings\n data.wrap( bindingsAction.bindingsStream.map((bindings: RDF.Bindings) => `${metadata.variables\n .map((key: RDF.Variable) => ActorQueryResultSerializeSparqlTsv\n .bindingToTsvBindings(bindings.get(key)))\n .join('\\t')}\\n`));\n\n return { data };\n }\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap } from 'asynciterator';\nimport { Readable } from 'readable-stream';\nimport { XmlSerializer, type IXmlNode } from './XmlSerializer';\n\n/**\n * A comunica sparql-results+xml Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlXml extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/sparql-results+xml\": 0.8\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/sparql-results+xml\": \"http://www.w3.org/ns/formats/SPARQL_Results_XML\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n * Converts an RDF term to its object-based XML representation.\n * @param {RDF.Term} value An RDF term.\n * @param {string} key A variable name, '?' must be included as a prefix.\n * @return {IXmlNode} An object-based XML tag.\n */\n public static bindingToXmlBindings(value: RDF.Term, key: RDF.Variable): IXmlNode {\n return { name: 'binding', attributes: { name: key.value }, children: [ this.valueToXmlValue(value) ]};\n }\n\n public static valueToXmlValue(value: RDF.Term): IXmlNode {\n let attributes;\n switch (value.termType) {\n case 'Literal':\n if (value.language) {\n attributes = { 'xml:lang': value.language };\n } else if (value.datatype && value.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string') {\n attributes = { datatype: value.datatype.value };\n } else {\n attributes = {};\n }\n return { name: 'literal', attributes, children: value.value };\n case 'BlankNode':\n return { name: 'bnode', children: value.value };\n case 'Quad':\n return {\n name: 'triple',\n children: [\n { name: 'subject', children: [ this.valueToXmlValue(value.subject) ]},\n { name: 'predicate', children: [ this.valueToXmlValue(value.predicate) ]},\n { name: 'object', children: [ this.valueToXmlValue(value.object) ]},\n ],\n };\n default:\n return { name: 'uri', children: value.value };\n }\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'boolean' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or booleans.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n data._read = () => {\n // Do nothing\n };\n\n const serializer = new XmlSerializer();\n const metadata = await ( action).metadata();\n\n data.push(XmlSerializer.header);\n data.push(serializer.open('sparql', { xmlns: 'http://www.w3.org/2005/sparql-results#' }));\n data.push(\n serializer.serializeNode({\n name: 'head',\n children: metadata.variables.map(variable => ({ name: 'variable', attributes: { name: variable.value }})),\n }),\n );\n\n if (action.type === 'bindings') {\n function* end(): Generator {\n yield serializer.close();\n yield serializer.close();\n }\n data.push(serializer.open('results'));\n const stream = wrap(( action).bindingsStream).map(\n (bindings: RDF.Bindings) => serializer.serializeNode({\n name: 'result',\n children: [ ...bindings ].map(\n ([ key, value ]) => ActorQueryResultSerializeSparqlXml.bindingToXmlBindings(value, key),\n ),\n }),\n ).append(wrap(end()));\n data.wrap( stream);\n } else {\n try {\n const result = await ( action).execute();\n data.push(serializer.serializeNode({ name: 'boolean', children: result.toString() }));\n data.push(serializer.close());\n setTimeout(() => data.push(null));\n } catch (error: unknown) {\n setTimeout(() => data.emit('error', error));\n }\n }\n\n return { data };\n }\n}\n","/**\n * A very simple XML serializer\n */\nexport class XmlSerializer {\n private readonly stack: string[] = [];\n\n public static header = `\\n`;\n\n public constructor() {}\n\n /**\n *\n * @param name should be a valid XML tag name\n * @param attributes keys should be valid attribute names\n */\n public open(name: string, attributes?: Record): string {\n const res = `${this.identation() + this.formatTag(name, attributes, 'open')}\\n`;\n this.stack.push(name);\n return res;\n }\n\n public close(): string {\n const name = this.stack.pop();\n if (name === undefined) {\n throw new Error('There is no tag left to close');\n }\n return `${this.identation() + this.formatTag(name, {}, 'close')}\\n`;\n }\n\n public serializeNode(node: IXmlNode): string {\n if (node.children === undefined) {\n return `${this.identation() + this.formatTag(node.name, node.attributes, 'self-closing')}\\n`;\n }\n if (typeof node.children === 'string') {\n return `${this.identation() + this.formatTag(node.name, node.attributes, 'open') + this.escape(node.children) + this.formatTag(node.name, {}, 'close')}\\n`;\n }\n const parts = [];\n parts.push(`${this.identation() + this.formatTag(node.name, node.attributes, 'open')}\\n`);\n this.stack.push(node.name);\n for (const child of node.children) {\n parts.push(this.serializeNode(child));\n }\n this.stack.pop();\n parts.push(`${this.identation() + this.formatTag(node.name, {}, 'close')}\\n`);\n return parts.join('');\n }\n\n private identation(): string {\n return this.stack.map(_ => ' ').join('');\n }\n\n private formatTag(\n name: string,\n attributes: Record | undefined,\n state: 'open' | 'close' | 'self-closing',\n ): string {\n // eslint-disable-next-line ts/restrict-template-expressions\n return `<${state === 'close' ? '/' : ''}${name}${Object.entries(attributes ?? {}).map(attr => ` ${attr[0]}=\"${this.escape(attr[1])}\"`)}${state === 'self-closing' ? '/' : ''}>`;\n }\n\n private escape(text: string): string {\n return text.replaceAll(/[\"&'<>]/gu, <(substring: string) => string> ((char: '\"' | '&' | '\\'' | '<' | '>') => {\n switch (char) {\n case '<': return '<';\n case '>': return '>';\n case '&': return '&';\n case '\\'': return ''';\n case '\"': return '"';\n }\n }));\n }\n}\n\nexport interface IXmlNode {\n name: string;\n attributes?: Record;\n children?: (IXmlNode[]) | string;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport { wrap } from 'asynciterator';\nimport { Readable } from 'readable-stream';\nimport type { ActionObserverHttp } from './ActionObserverHttp';\n\nconst process: NodeJS.Process = require('process/');\n\n/**\n * Serializes SPARQL results for testing and debugging.\n */\nexport class ActorQueryResultSerializeStats extends ActorQueryResultSerializeFixedMediaTypes {\n public readonly httpObserver: ActionObserverHttp;\n\n /* eslint-disable max-len */\n /**\n * @param args -\n * \\ @defaultNested {{ \"stats\": 0.5 }} mediaTypePriorities\n * \\ @defaultNested {{ \"stats\": \"https://comunica.linkeddatafragments.org/#results_stats\" }} mediaTypeFormats\n * \\ @defaultNested { a } httpObserver\n */\n public constructor(args: IActorQueryResultSerializeStatsArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or quad streams.');\n }\n return true;\n }\n\n public pushHeader(data: Readable): void {\n const header: string = [ 'Result', 'Delay (ms)', 'HTTP requests',\n ].join(',');\n data.push(`${header}\\n`);\n }\n\n public createStat(startTime: number, result: number): string {\n const row: string = [ result, this.delay(startTime), this.httpObserver.requests,\n ].join(',');\n return `${row}\\n`;\n }\n\n public createFooter(startTime: number): string {\n const footer: string = [ 'TOTAL', this.delay(startTime), this.httpObserver.requests,\n ].join(',');\n return `${footer}\\n`;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n\n const resultStream = action.type === 'bindings' ?\n ( action).bindingsStream :\n ( action).quadStream;\n\n const startTime = this.now();\n let result = 1;\n\n function* end(cb: () => string): Generator {\n yield cb();\n }\n const stream = wrap(resultStream)\n .map(() => this.createStat(startTime, result++))\n .append(wrap(end(() => this.createFooter(startTime))));\n\n this.pushHeader(data);\n data.wrap( stream);\n\n return { data };\n }\n\n /* istanbul ignore next */\n public now(): number {\n // TODO: remove when we will drop support of Node 14\n if (typeof performance === 'undefined') {\n const time: [number, number] = process.hrtime();\n return time[0] * 1_000 + (time[1] / 1_000_000);\n }\n return performance.now();\n }\n\n public delay(startTime: number): number {\n return this.now() - startTime;\n }\n}\n\nexport interface IActorQueryResultSerializeStatsArgs extends IActorQueryResultSerializeFixedMediaTypesArgs {\n httpObserver: ActionObserverHttp;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n Bindings,\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { getTerms, QUAD_TERM_NAMES } from 'rdf-terms';\nimport { Readable } from 'readable-stream';\n\nconst DF = new DataFactory();\nconst QUAD_TERM_NAMES_VARS = QUAD_TERM_NAMES.map(name => DF.variable(name));\n\n/**\n * A comunica Table Sparql Serialize Actor.\n */\nexport class ActorQueryResultSerializeTable extends ActorQueryResultSerializeFixedMediaTypes\n implements IActorQueryResultSerializeTableArgs {\n public readonly columnWidth: number;\n public readonly padding: string;\n\n /**\n * @param args -\n * \\ @defaultNested {{ \"table\": 0.6 }} mediaTypePriorities\n * \\ @defaultNested {{ \"table\": \"https://comunica.linkeddatafragments.org/#results_table\" }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeTableArgs) {\n super(args);\n this.padding = ActorQueryResultSerializeTable.repeat(' ', this.columnWidth);\n }\n\n public static repeat(str: string, count: number): string {\n return str.repeat(count);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings or quad streams.');\n }\n return true;\n }\n\n public termToString(term: RDF.Term): string {\n return term.termType === 'Quad' ? termToString(term) : term.value;\n }\n\n public pad(str: string): string {\n if (str.length <= this.columnWidth) {\n return str + this.padding.slice(str.length);\n }\n return `${str.slice(0, this.columnWidth - 1)}…`;\n }\n\n public pushHeader(data: Readable, labels: RDF.Variable[]): void {\n const header: string = labels.map(label => this.pad(label.value)).join(' ');\n data.push(`${header}\\n${ActorQueryResultSerializeTable.repeat('-', header.length)}\\n`);\n }\n\n public createRow(labels: RDF.Variable[], bindings: Bindings): string {\n return `${labels\n .map(label => bindings.has(label) ? this.termToString(bindings.get(label)!) : '')\n .map(label => this.pad(label))\n .join(' ')}\\n`;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n\n let resultStream: NodeJS.EventEmitter;\n if (action.type === 'bindings') {\n resultStream = (action).bindingsStream.map(\n bindings => this.createRow(labels, bindings),\n );\n const labels = (await (action).metadata()).variables;\n this.pushHeader(data, labels);\n } else {\n resultStream = (action).quadStream.map(quad => `${getTerms(quad).map(term => this.pad(this.termToString(term))).join(' ')}\\n`);\n this.pushHeader(data, QUAD_TERM_NAMES_VARS);\n }\n data.wrap( resultStream);\n\n return { data };\n }\n}\n\nexport interface IActorQueryResultSerializeTableArgs extends IActorQueryResultSerializeFixedMediaTypesArgs {\n /**\n * The table column width in number of characters\n * @range {integer}\n * @default {50}\n */\n columnWidth: number;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type { IQueryOperationResultBindings, BindingsStream, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Readable } from 'readable-stream';\nimport type { IConverterSettings, ISchema } from 'sparqljson-to-tree';\nimport { Converter } from 'sparqljson-to-tree';\n\n/**\n * A comunica Tree Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeTree extends ActorQueryResultSerializeFixedMediaTypes\n implements IActorQueryResultSerializeFixedMediaTypesArgs {\n /**\n * @param args -\n * \\ @defaultNested {{ \"tree\": 0.5 }} mediaTypePriorities\n * \\ @defaultNested {{ \"tree\": \"https://comunica.linkeddatafragments.org/#results_tree\" }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n *\n * @param {BindingsStream} bindingsStream\n * @param context\n * @param {IConverterSettings} converterSettings\n * @return {Promise}\n */\n public static async bindingsStreamToGraphQl(\n bindingsStream: BindingsStream,\n context: IActionContext | Record | undefined,\n converterSettings?: IConverterSettings,\n ): Promise {\n const actionContext: IActionContext = ActionContext.ensureActionContext(context);\n const converter: Converter = new Converter(converterSettings);\n const schema: ISchema = {\n singularizeVariables: actionContext.get(KeysInitQuery.graphqlSingularizeVariables) ?? {},\n };\n\n return converter.bindingsToTree(await bindingsStream.map((bindings: RDF.Bindings) =>\n Object.fromEntries([ ...bindings ]\n .map(([ key, value ]) => [ key.value, value ]))).toArray(), schema);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize): Promise {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n\n public async runHandle(\n action: IActionSparqlSerialize,\n _mediaType: string,\n ): Promise {\n const data = new Readable();\n data._read = () => {\n data._read = () => { /* Do nothing */ };\n ActorQueryResultSerializeTree.bindingsStreamToGraphQl(\n ( action).bindingsStream,\n action.context,\n { materializeRdfJsTerms: true },\n )\n .then((result: any) => {\n data.push(JSON.stringify(result, null, ' '));\n data.push(null);\n })\n .catch(error => data.emit('error', error));\n };\n\n return { data };\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorHttp } from '@comunica/bus-http';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentifyHypermedia,\n IActorQuerySourceIdentifyHypermediaOutput,\n IActorQuerySourceIdentifyHypermediaArgs,\n IActorQuerySourceIdentifyHypermediaTest,\n} from '@comunica/bus-query-source-identify-hypermedia';\nimport {\n ActorQuerySourceIdentifyHypermedia,\n} from '@comunica/bus-query-source-identify-hypermedia';\nimport { QuerySourceSparql } from './QuerySourceSparql';\n\n/**\n * A comunica SPARQL Query Source Identify Hypermedia Actor.\n */\nexport class ActorQuerySourceIdentifyHypermediaSparql extends ActorQuerySourceIdentifyHypermedia {\n public readonly mediatorHttp: MediatorHttp;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly checkUrlSuffix: boolean;\n public readonly forceHttpGet: boolean;\n public readonly cacheSize: number;\n public readonly bindMethod: BindMethod;\n public readonly countTimeout: number;\n\n public constructor(args: IActorQuerySourceIdentifyHypermediaSparqlArgs) {\n super(args, 'sparql');\n }\n\n public async testMetadata(\n action: IActionQuerySourceIdentifyHypermedia,\n ): Promise {\n if (!action.forceSourceType && !action.metadata.sparqlService &&\n !(this.checkUrlSuffix && action.url.endsWith('/sparql'))) {\n throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql.`);\n }\n return { filterFactor: 1 };\n }\n\n public async run(action: IActionQuerySourceIdentifyHypermedia): Promise {\n this.logInfo(action.context, `Identified ${action.url} as sparql source with service URL: ${action.metadata.sparqlService || action.url}`);\n const source = new QuerySourceSparql(\n action.forceSourceType ? action.url : action.metadata.sparqlService || action.url,\n action.context,\n this.mediatorHttp,\n this.bindMethod,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n this.forceHttpGet,\n this.cacheSize,\n this.countTimeout,\n );\n return { source };\n }\n}\n\nexport interface IActorQuerySourceIdentifyHypermediaSparqlArgs extends IActorQuerySourceIdentifyHypermediaArgs {\n /**\n * The HTTP mediator\n */\n mediatorHttp: MediatorHttp;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * If URLs ending with '/sparql' should also be considered SPARQL endpoints.\n * @default {true}\n */\n checkUrlSuffix: boolean;\n /**\n * If non-update queries should be sent via HTTP GET instead of POST\n * @default {false}\n */\n forceHttpGet: boolean;\n /**\n * The cache size for COUNT queries.\n * @range {integer}\n * @default {1024}\n */\n cacheSize?: number;\n /**\n * The query operation for communicating bindings.\n * @default {values}\n */\n bindMethod: BindMethod;\n /**\n * Timeout in ms of how long count queries are allowed to take.\n * If the timeout is reached, an infinity cardinality is returned.\n * @default {3000}\n */\n countTimeout: number;\n}\n\nexport type BindMethod = 'values' | 'union' | 'filter';\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorHttp } from '@comunica/bus-http';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { Actor } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQuerySource,\n BindingsStream,\n IActionContext,\n FragmentSelectorShape,\n Bindings,\n MetadataBindings,\n IQueryBindingsOptions,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { wrap, TransformIterator } from 'asynciterator';\nimport { SparqlEndpointFetcher } from 'fetch-sparql-endpoint';\nimport { LRUCache } from 'lru-cache';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory, toSparql, Util } from 'sparqlalgebrajs';\nimport type { BindMethod } from './ActorQuerySourceIdentifyHypermediaSparql';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\nconst VAR_COUNT = DF.variable('count');\nconst COUNT_INFINITY: RDF.QueryResultCardinality = { type: 'estimate', value: Number.POSITIVE_INFINITY };\n\nexport class QuerySourceSparql implements IQuerySource {\n protected static readonly SELECTOR_SHAPE: FragmentSelectorShape = {\n type: 'disjunction',\n children: [\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.PROJECT },\n joinBindings: true,\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.CONSTRUCT },\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.DESCRIBE },\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.ASK },\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.COMPOSITE_UPDATE },\n },\n ],\n };\n\n public readonly referenceValue: string;\n private readonly url: string;\n private readonly context: IActionContext;\n private readonly mediatorHttp: MediatorHttp;\n private readonly bindMethod: BindMethod;\n private readonly countTimeout: number;\n private readonly bindingsFactory: BindingsFactory;\n\n private readonly endpointFetcher: SparqlEndpointFetcher;\n private readonly cache: LRUCache | undefined;\n\n private lastSourceContext: IActionContext | undefined;\n\n public constructor(\n url: string,\n context: IActionContext,\n mediatorHttp: MediatorHttp,\n bindMethod: BindMethod,\n bindingsFactory: BindingsFactory,\n forceHttpGet: boolean,\n cacheSize: number,\n countTimeout: number,\n ) {\n this.referenceValue = url;\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n this.bindMethod = bindMethod;\n this.bindingsFactory = bindingsFactory;\n this.endpointFetcher = new SparqlEndpointFetcher({\n method: forceHttpGet ? 'GET' : 'POST',\n fetch: (input: Request | string, init?: RequestInit) => this.mediatorHttp.mediate(\n { input, init, context: this.lastSourceContext! },\n ),\n prefixVariableQuestionMark: true,\n });\n this.cache = cacheSize > 0 ?\n new LRUCache({ max: cacheSize }) :\n undefined;\n this.countTimeout = countTimeout;\n }\n\n public async getSelectorShape(): Promise {\n return QuerySourceSparql.SELECTOR_SHAPE;\n }\n\n public queryBindings(\n operationIn: Algebra.Operation,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): BindingsStream {\n // If bindings are passed, modify the operations\n let operationPromise: Promise;\n if (options?.joinBindings) {\n operationPromise = QuerySourceSparql.addBindingsToOperation(this.bindMethod, operationIn, options.joinBindings);\n } else {\n operationPromise = Promise.resolve(operationIn);\n }\n\n const bindings: BindingsStream = new TransformIterator(async() => {\n // Prepare queries\n const operation = await operationPromise;\n const variables: RDF.Variable[] = Util.inScopeVariables(operation);\n const queryString = context.get(KeysInitQuery.queryString);\n const selectQuery: string = !options?.joinBindings && queryString ?\n queryString :\n QuerySourceSparql.operationToSelectQuery(operation, variables);\n const canContainUndefs = QuerySourceSparql.operationCanContainUndefs(operation);\n\n return this.queryBindingsRemote(this.url, selectQuery, variables, context, canContainUndefs);\n }, { autoStart: false });\n this.attachMetadata(bindings, context, operationPromise);\n\n return bindings;\n }\n\n public queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator {\n this.lastSourceContext = this.context.merge(context);\n const rawStream = this.endpointFetcher.fetchTriples(\n this.url,\n context.get(KeysInitQuery.queryString) ?? QuerySourceSparql.operationToQuery(operation),\n );\n this.lastSourceContext = undefined;\n const quads = wrap(rawStream, { autoStart: false, maxBufferSize: Number.POSITIVE_INFINITY });\n this.attachMetadata(quads, context, Promise.resolve(operation.input));\n return quads;\n }\n\n public queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise {\n this.lastSourceContext = this.context.merge(context);\n const promise = this.endpointFetcher.fetchAsk(\n this.url,\n context.get(KeysInitQuery.queryString) ?? QuerySourceSparql.operationToQuery(operation),\n );\n this.lastSourceContext = undefined;\n return promise;\n }\n\n public queryVoid(operation: Algebra.Update, context: IActionContext): Promise {\n this.lastSourceContext = this.context.merge(context);\n const promise = this.endpointFetcher.fetchUpdate(\n this.url,\n context.get(KeysInitQuery.queryString) ?? QuerySourceSparql.operationToQuery(operation),\n );\n this.lastSourceContext = undefined;\n return promise;\n }\n\n protected attachMetadata(\n target: AsyncIterator,\n context: IActionContext,\n operationPromise: Promise,\n ): void {\n // Emit metadata containing the estimated count\n let variablesCount: RDF.Variable[] = [];\n let canContainUndefs = false;\n // eslint-disable-next-line no-async-promise-executor,ts/no-misused-promises\n new Promise(async(resolve, reject) => {\n // Prepare queries\n let countQuery: string;\n try {\n const operation = await operationPromise;\n variablesCount = Util.inScopeVariables(operation);\n countQuery = QuerySourceSparql.operationToCountQuery(operation);\n canContainUndefs = QuerySourceSparql.operationCanContainUndefs(operation);\n\n const cachedCardinality = this.cache?.get(countQuery);\n if (cachedCardinality !== undefined) {\n return resolve(cachedCardinality);\n }\n\n const timeoutHandler = setTimeout(() => resolve(COUNT_INFINITY), this.countTimeout);\n const bindingsStream: BindingsStream = await this\n .queryBindingsRemote(this.url, countQuery, [ VAR_COUNT ], context, false);\n bindingsStream.on('data', (bindings: Bindings) => {\n clearTimeout(timeoutHandler);\n const count = bindings.get(VAR_COUNT);\n const cardinality: RDF.QueryResultCardinality = { type: 'estimate', value: Number.POSITIVE_INFINITY };\n if (count) {\n const cardinalityValue: number = Number.parseInt(count.value, 10);\n if (!Number.isNaN(cardinalityValue)) {\n cardinality.type = 'exact';\n cardinality.value = cardinalityValue;\n this.cache?.set(countQuery, cardinality);\n }\n }\n return resolve(cardinality);\n });\n bindingsStream.on('error', () => {\n clearTimeout(timeoutHandler);\n resolve(COUNT_INFINITY);\n });\n bindingsStream.on('end', () => {\n clearTimeout(timeoutHandler);\n resolve(COUNT_INFINITY);\n });\n } catch (error: unknown) {\n return reject(error);\n }\n })\n .then((cardinality) => {\n target.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality,\n canContainUndefs,\n variables: variablesCount,\n });\n })\n .catch(() => target.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: COUNT_INFINITY,\n canContainUndefs,\n variables: variablesCount,\n }));\n }\n\n /**\n * Create an operation that includes the bindings from the given bindings stream.\n * @param bindMethod A method for adding bindings to an operation.\n * @param operation The operation to bind to.\n * @param addBindings The bindings to add.\n * @param addBindings.bindings The bindings stream.\n * @param addBindings.metadata The bindings metadata.\n */\n public static async addBindingsToOperation(\n bindMethod: BindMethod,\n operation: Algebra.Operation,\n addBindings: { bindings: BindingsStream; metadata: MetadataBindings },\n ): Promise {\n const bindings = await addBindings.bindings.toArray();\n\n switch (bindMethod) {\n case 'values':\n return AF.createJoin([\n AF.createValues(\n addBindings.metadata.variables,\n bindings.map(binding => Object.fromEntries([ ...binding ]\n .map(([ key, value ]) => [ `?${key.value}`, value ]))),\n ),\n operation,\n ], false);\n case 'union': { throw new Error('Not implemented yet: \"union\" case'); }\n case 'filter': { throw new Error('Not implemented yet: \"filter\" case'); }\n }\n }\n\n /**\n * Convert an operation to a select query for this pattern.\n * @param {Algebra.Operation} operation A query operation.\n * @param {RDF.Variable[]} variables The variables in scope for the operation.\n * @return {string} A select query string.\n */\n public static operationToSelectQuery(operation: Algebra.Operation, variables: RDF.Variable[]): string {\n return QuerySourceSparql.operationToQuery(AF.createProject(operation, variables));\n }\n\n /**\n * Convert an operation to a count query for the number of matching triples for this pattern.\n * @param {Algebra.Operation} operation A query operation.\n * @return {string} A count query string.\n */\n public static operationToCountQuery(operation: Algebra.Operation): string {\n return QuerySourceSparql.operationToQuery(AF.createProject(\n AF.createExtend(\n AF.createGroup(\n operation,\n [],\n [ AF.createBoundAggregate(\n DF.variable('var0'),\n 'count',\n AF.createWildcardExpression(),\n false,\n ) ],\n ),\n DF.variable('count'),\n AF.createTermExpression(DF.variable('var0')),\n ),\n [ DF.variable('count') ],\n ));\n }\n\n /**\n * Convert an operation to a query for this pattern.\n * @param {Algebra.Operation} operation A query operation.\n * @return {string} A query string.\n */\n public static operationToQuery(operation: Algebra.Operation): string {\n return toSparql(operation, { sparqlStar: true });\n }\n\n /**\n * Check if the given operation may produce undefined values.\n * @param operation\n */\n public static operationCanContainUndefs(operation: Algebra.Operation): boolean {\n let canContainUndefs = false;\n Util.recurseOperation(operation, {\n leftjoin(): boolean {\n canContainUndefs = true;\n return false;\n },\n values(values: Algebra.Values): boolean {\n canContainUndefs = values.bindings.some(bindings => values.variables.some(variable => !(`?${variable.value}` in bindings)));\n return false;\n },\n union(union: Algebra.Union): boolean {\n // Determine variables in scope of the union branches\n const scopedVariables = union.input\n .map(Util.inScopeVariables)\n .map(variables => variables.map(v => v.value))\n .map(variables => variables.sort((a, b) => a.localeCompare(b)))\n .map(variables => variables.join(','));\n\n // If not all scoped variables in union branches are equal, then we definitely can have undefs\n if (!scopedVariables.every(val => val === scopedVariables[0])) {\n canContainUndefs = true;\n return false;\n }\n\n return true;\n },\n });\n return canContainUndefs;\n }\n\n /**\n * Send a SPARQL query to a SPARQL endpoint and retrieve its bindings as a stream.\n * @param {string} endpoint A SPARQL endpoint URL.\n * @param {string} query A SPARQL query string.\n * @param {RDF.Variable[]} variables The expected variables.\n * @param {IActionContext} context The source context.\n * @param canContainUndefs If the operation may contain undefined variables.\n * @return {BindingsStream} A stream of bindings.\n */\n public async queryBindingsRemote(\n endpoint: string,\n query: string,\n variables: RDF.Variable[],\n context: IActionContext,\n canContainUndefs: boolean,\n ): Promise {\n this.lastSourceContext = this.context.merge(context);\n const rawStream = await this.endpointFetcher.fetchBindings(endpoint, query);\n this.lastSourceContext = undefined;\n\n const it = wrap(rawStream, { autoStart: false, maxBufferSize: Number.POSITIVE_INFINITY })\n .map((rawData: Record) => this.bindingsFactory.bindings(variables\n .map((variable) => {\n const value = rawData[`?${variable.value}`];\n if (!canContainUndefs && !value) {\n Actor.getContextLogger(this.context)?.warn(`The endpoint ${endpoint} failed to provide a binding for ${variable.value}.`);\n }\n return <[RDF.Variable, RDF.Term]> [ variable, value ];\n })\n .filter(([ _, v ]) => Boolean(v))));\n return it;\n }\n\n public toString(): string {\n return `QuerySourceSparql(${this.url})`;\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport { ActorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type {\n IActionQuerySourceIdentify,\n IActorQuerySourceIdentifyOutput,\n IActorQuerySourceIdentifyArgs,\n} from '@comunica/bus-query-source-identify';\nimport type { MediatorQuerySourceIdentifyHypermedia } from '@comunica/bus-query-source-identify-hypermedia';\nimport type { MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { MediatorRdfResolveHypermediaLinks } from '@comunica/bus-rdf-resolve-hypermedia-links';\nimport type { MediatorRdfResolveHypermediaLinksQueue } from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type { IActorTest } from '@comunica/core';\nimport { QuerySourceHypermedia } from './QuerySourceHypermedia';\n\n/**\n * A comunica Hypermedia Query Source Identify Actor.\n */\nexport class ActorQuerySourceIdentifyHypermedia extends ActorQuerySourceIdentify {\n public readonly mediatorDereferenceRdf: MediatorDereferenceRdf;\n public readonly mediatorMetadata: MediatorRdfMetadata;\n public readonly mediatorMetadataExtract: MediatorRdfMetadataExtract;\n public readonly mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n public readonly mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n public readonly mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n public readonly mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly cacheSize: number;\n public readonly maxIterators: number;\n public readonly aggregateTraversalStore: boolean;\n\n public constructor(args: IActorQuerySourceIdentifyHypermediaArgs) {\n super(args);\n }\n\n public async test(action: IActionQuerySourceIdentify): Promise {\n if (typeof action.querySourceUnidentified.value !== 'string') {\n throw new TypeError(`${this.name} requires a single query source with a URL value to be present in the context.`);\n }\n return true;\n }\n\n public async run(action: IActionQuerySourceIdentify): Promise {\n return {\n querySource: {\n source: new QuerySourceHypermedia(\n this.cacheSize,\n action.querySourceUnidentified.value,\n action.querySourceUnidentified.type,\n this.maxIterators,\n this.aggregateTraversalStore &&\n Boolean(action.querySourceUnidentified.context?.get(KeysQuerySourceIdentify.traverse)),\n {\n mediatorMetadata: this.mediatorMetadata,\n mediatorMetadataExtract: this.mediatorMetadataExtract,\n mediatorMetadataAccumulate: this.mediatorMetadataAccumulate,\n mediatorDereferenceRdf: this.mediatorDereferenceRdf,\n mediatorQuerySourceIdentifyHypermedia: this.mediatorQuerySourceIdentifyHypermedia,\n mediatorRdfResolveHypermediaLinks: this.mediatorRdfResolveHypermediaLinks,\n mediatorRdfResolveHypermediaLinksQueue: this.mediatorRdfResolveHypermediaLinksQueue,\n },\n warningMessage => this.logWarn(action.context, warningMessage),\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n ),\n context: action.querySourceUnidentified.context ?? new ActionContext(),\n },\n };\n }\n}\n\nexport interface IActorQuerySourceIdentifyHypermediaArgs extends IActorQuerySourceIdentifyArgs {\n /**\n * The maximum number of entries in the LRU cache, set to 0 to disable.\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n /**\n * The maximum number of links that can be followed in parallel.\n * @default {64}\n */\n maxIterators: number;\n /**\n * If all discovered quads across all links from a traversal source should be indexed in an aggregated store,\n * to speed up later calls.\n * This only applies to sources annotated with KeysQuerySourceIdentify.traverse.\n * @default {true}\n */\n aggregateTraversalStore: boolean;\n /**\n * The RDF dereference mediator\n */\n mediatorDereferenceRdf: MediatorDereferenceRdf;\n /**\n * The metadata mediator\n */\n mediatorMetadata: MediatorRdfMetadata;\n /**\n * The metadata extract mediator\n */\n mediatorMetadataExtract: MediatorRdfMetadataExtract;\n /**\n * The metadata accumulate mediator\n */\n mediatorMetadataAccumulate?: MediatorRdfMetadataAccumulate;\n /**\n * The hypermedia resolve mediator\n */\n mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n /**\n * The hypermedia links resolve mediator\n */\n mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n /**\n * The hypermedia links queue resolve mediator\n */\n mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { ILinkQueue } from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysStatistics } from '@comunica/context-entries';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n ILink,\n IQuerySource,\n IActionContext,\n MetadataBindings,\n IQueryBindingsOptions,\n IStatisticBase,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator, BufferedIteratorOptions } from 'asynciterator';\nimport { BufferedIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nexport abstract class LinkedRdfSourcesAsyncRdfIterator extends BufferedIterator {\n protected readonly operation: Algebra.Operation;\n protected readonly queryBindingsOptions: IQueryBindingsOptions | undefined;\n protected readonly context: IActionContext;\n\n private readonly cacheSize: number;\n protected readonly firstUrl: string;\n private readonly maxIterators: number;\n private readonly sourceStateGetter: SourceStateGetter;\n\n protected started = false;\n private readonly currentIterators: AsyncIterator[] = [];\n private iteratorsPendingCreation = 0;\n private iteratorsPendingTermination = 0;\n // eslint-disable-next-line unicorn/no-useless-undefined\n private accumulatedMetadata: Promise = Promise.resolve(undefined);\n private preflightMetadata: Promise | undefined;\n\n public constructor(\n cacheSize: number,\n operation: Algebra.Operation,\n queryBindingsOptions: IQueryBindingsOptions | undefined,\n context: IActionContext,\n firstUrl: string,\n maxIterators: number,\n sourceStateGetter: SourceStateGetter,\n options?: BufferedIteratorOptions,\n ) {\n super({ autoStart: false, ...options });\n this._reading = false;\n this.cacheSize = cacheSize;\n this.operation = operation;\n this.queryBindingsOptions = queryBindingsOptions;\n this.context = context;\n this.firstUrl = firstUrl;\n this.maxIterators = maxIterators;\n this.sourceStateGetter = sourceStateGetter;\n\n if (this.maxIterators <= 0) {\n throw new Error(`LinkedRdfSourcesAsyncRdfIterator.maxIterators must be larger than zero, but got ${this.maxIterators}`);\n }\n }\n\n /**\n * Start filling the buffer of this iterator.\n */\n public kickstart(): void {\n if (!this.started) {\n this._fillBufferAsync();\n }\n }\n\n public override getProperty

(propertyName: string, callback?: (value: P) => void): P | undefined {\n if (propertyName === 'metadata' && !this.started) {\n // If the iterator has not started yet, forcefully fetch the metadata from the source without starting the\n // iterator. This way, we keep the iterator lazy.\n if (!this.preflightMetadata) {\n this.preflightMetadata = new Promise((resolve, reject) => {\n this.sourceStateGetter({ url: this.firstUrl }, {})\n .then((sourceState) => {\n // Don't pass query options, as we don't want to consume any passed iterators\n const bindingsStream = sourceState.source.queryBindings(this.operation, this.context);\n bindingsStream.getProperty('metadata', (metadata: MetadataBindings) => {\n metadata.state = new MetadataValidationState();\n bindingsStream.destroy();\n this.accumulateMetadata(sourceState.metadata, metadata)\n .then((accumulatedMetadata) => {\n // Also merge fields that were not explicitly accumulated\n const returnMetadata = { ...sourceState.metadata, ...metadata, ...accumulatedMetadata };\n resolve(returnMetadata);\n })\n .catch(() => {\n resolve({\n ...sourceState.metadata,\n state: new MetadataValidationState(),\n });\n });\n });\n })\n .catch(reject);\n });\n }\n this.preflightMetadata\n .then(metadata => this.setProperty('metadata', metadata))\n .catch(() => {\n // Ignore errors\n });\n }\n return super.getProperty(propertyName, callback);\n }\n\n protected override _end(destroy?: boolean): void {\n // Close all running iterators\n for (const it of this.currentIterators) {\n it.destroy();\n }\n\n super._end(destroy);\n }\n\n /**\n * Get the internal link queue.\n * The returned instance must always be the same.\n */\n public abstract getLinkQueue(): Promise;\n\n /**\n * Determine the links to be followed from the current source given its metadata.\n * @param metadata The metadata of a source.\n */\n protected abstract getSourceLinks(metadata: Record, startSource: ISourceState): Promise;\n\n public override _read(count: number, done: () => void): void {\n if (this.started) {\n // Read from all current iterators\n for (const iterator of this.currentIterators) {\n while (count > 0) {\n const read = iterator.read();\n if (read === null) {\n break;\n } else {\n count--;\n this._push(read);\n }\n }\n if (count <= 0) {\n break;\n }\n }\n\n // Schedule new iterators if needed\n if (count >= 0 && this.canStartNewIterator()) {\n // We can safely ignore skip catching the error, since we are guaranteed to have\n // successfully got the source for this.firstUrl before.\n // eslint-disable-next-line ts/no-floating-promises\n this.sourceStateGetter({ url: this.firstUrl }, {})\n .then((sourceState) => {\n this.startIteratorsForNextUrls(sourceState.handledDatasets, false);\n done();\n });\n } else {\n done();\n }\n } else {\n // The first time this is called, prepare the first source\n this.started = true;\n\n // Await the source to be set, and start the source iterator\n this.sourceStateGetter({ url: this.firstUrl }, {})\n .then((sourceState) => {\n this.startIterator(sourceState);\n done();\n })\n // Destroy should be async because it can be called before it is listened to\n .catch(error => setTimeout(() => this.destroy(error)));\n }\n }\n\n protected canStartNewIterator(): boolean {\n return (this.currentIterators.length + this.iteratorsPendingCreation + this.iteratorsPendingTermination) <\n this.maxIterators && (!this.canStartNewIteratorConsiderReadable() || !this.readable);\n }\n\n protected canStartNewIteratorConsiderReadable(): boolean {\n return true;\n }\n\n protected areIteratorsRunning(): boolean {\n return (this.currentIterators.length + this.iteratorsPendingCreation + this.iteratorsPendingTermination) > 0;\n }\n\n /**\n * Append the fields from appendingMetadata into accumulatedMetadata.\n * @param accumulatedMetadata The fields to append to.\n * @param appendingMetadata The fields to append.\n * @protected\n */\n protected abstract accumulateMetadata(\n accumulatedMetadata: MetadataBindings,\n appendingMetadata: MetadataBindings,\n ): Promise;\n\n /**\n * Start a new iterator for the given source.\n * Once the iterator is done, it will either determine a new source, or it will close the linked iterator.\n * @param {ISourceState} startSource The start source state.\n */\n protected startIterator(startSource: ISourceState): void {\n // Delegate the quad pattern query to the given source\n try {\n const iterator = startSource.source.queryBindings(this.operation, this.context, this.queryBindingsOptions);\n this.currentIterators.push(iterator);\n let receivedEndEvent = false;\n let receivedMetadata = false;\n\n // Attach readers to the newly created iterator\n (iterator)._destination = this;\n iterator.on('error', (error: Error) => this.destroy(error));\n iterator.on('readable', () => this._fillBuffer());\n iterator.on('end', () => {\n this.currentIterators.splice(this.currentIterators.indexOf(iterator), 1);\n\n // Indicate that this iterator still needs to flush its next-links.\n // Without this, the linked iterator could sometimes be closed before next-links are obtained.\n receivedEndEvent = true;\n if (!receivedMetadata) {\n this.iteratorsPendingTermination++;\n }\n\n // If the metadata was already received, handle the next URL in the queue\n if (receivedMetadata) {\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }\n });\n\n // Listen for the metadata of the source\n // The metadata property is guaranteed to be set\n iterator.getProperty('metadata', (metadata: MetadataBindings) => {\n // Accumulate the metadata object\n this.accumulatedMetadata = this.accumulatedMetadata\n .then(previousMetadata => (async() => {\n if (!previousMetadata) {\n previousMetadata = startSource.metadata;\n }\n return this.accumulateMetadata(previousMetadata, metadata);\n })()\n .then((accumulatedMetadata) => {\n // Also merge fields that were not explicitly accumulated\n const returnMetadata = { ...startSource.metadata, ...metadata, ...accumulatedMetadata };\n\n // Create new metadata state\n returnMetadata.state = new MetadataValidationState();\n\n // Emit metadata, and invalidate any metadata that was set before\n this.updateMetadata(returnMetadata);\n\n // Invalidate any preflight metadata\n if (this.preflightMetadata) {\n this.preflightMetadata\n .then(metadataIn => metadataIn.state.invalidate())\n .catch(() => {\n // Ignore errors\n });\n }\n\n // Determine next urls, which will eventually become a next-next source.\n this.getSourceLinks(returnMetadata, startSource)\n .then((nextUrls: ILink[]) => Promise.all(nextUrls))\n .then(async(nextUrls: ILink[]) => {\n // Append all next URLs to our queue\n const linkQueue = await this.getLinkQueue();\n for (const nextUrl of nextUrls) {\n linkQueue.push(nextUrl, startSource.link);\n }\n\n receivedMetadata = true;\n if (receivedEndEvent) {\n this.iteratorsPendingTermination--;\n }\n\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }).catch(error => this.destroy(error));\n\n return returnMetadata;\n })).catch((error) => {\n this.destroy(error);\n return {};\n });\n });\n } catch (syncError: unknown) {\n this.destroy( syncError);\n }\n }\n\n protected updateMetadata(metadataNew: MetadataBindings): void {\n const metadataToInvalidate = this.getProperty('metadata');\n this.setProperty('metadata', metadataNew);\n metadataToInvalidate?.state.invalidate();\n }\n\n protected isRunning(): boolean {\n return !this.done;\n }\n\n /**\n * Check if a next URL is in the queue.\n * If yes, start a new iterator.\n * If no, close this iterator.\n * @param handledDatasets\n * @param canClose\n */\n protected startIteratorsForNextUrls(handledDatasets: Record, canClose: boolean): void {\n this.getLinkQueue()\n .then((linkQueue) => {\n // Create as many new iterators as possible\n while (this.canStartNewIterator() && this.isRunning()) {\n const nextLink = linkQueue.pop();\n if (nextLink) {\n this.iteratorsPendingCreation++;\n this.sourceStateGetter(nextLink, handledDatasets)\n .then((nextSourceState) => {\n // If we find a statistic tracking dereference events we emit the relevant data\n const statisticDereferenceLinks: IStatisticBase | undefined = this.context.get(\n KeysStatistics.dereferencedLinks,\n );\n if (statisticDereferenceLinks) {\n statisticDereferenceLinks.updateStatistic(\n {\n url: nextSourceState.link.url,\n metadata: { ...nextSourceState.metadata, ...nextSourceState.link.metadata },\n },\n nextSourceState.source,\n );\n }\n\n this.iteratorsPendingCreation--;\n this.startIterator(nextSourceState);\n })\n .catch(error => this.emit('error', error));\n } else {\n break;\n }\n }\n\n // Close, only if no other iterators are still running\n if (canClose && this.isCloseable(linkQueue, true)) {\n this.close();\n }\n })\n .catch(error => this.destroy(error));\n }\n\n protected isCloseable(linkQueue: ILinkQueue, _requireQueueEmpty: boolean): boolean {\n return linkQueue.isEmpty() && !this.areIteratorsRunning();\n }\n}\n\n/**\n * The current state of a source.\n * This is needed for following links within a source.\n */\nexport interface ISourceState {\n /**\n * The link to this source.\n */\n link: ILink;\n /**\n * A source.\n */\n source: IQuerySource;\n /**\n * The source's initial metadata.\n */\n metadata: MetadataBindings;\n /**\n * All dataset identifiers that have been passed for this source.\n */\n handledDatasets: Record;\n}\n\nexport type SourceStateGetter = (link: ILink, handledDatasets: Record) => Promise;\n","import type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { MediatorRdfResolveHypermediaLinks } from '@comunica/bus-rdf-resolve-hypermedia-links';\nimport type {\n ILinkQueue,\n MediatorRdfResolveHypermediaLinksQueue,\n} from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysQueryOperation, KeysStatistics } from '@comunica/context-entries';\nimport type {\n IActionContext,\n IAggregatedStore,\n IQueryBindingsOptions,\n MetadataBindings,\n ILink,\n IStatisticBase,\n IDiscoverEventData,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { SourceStateGetter, ISourceState } from './LinkedRdfSourcesAsyncRdfIterator';\nimport { LinkedRdfSourcesAsyncRdfIterator } from './LinkedRdfSourcesAsyncRdfIterator';\n\nconst DF = new DataFactory();\nconst AF = new Factory();\n\n/**\n * An quad iterator that can iterate over consecutive RDF sources\n * that are determined using the rdf-resolve-hypermedia-links bus.\n *\n * @see LinkedRdfSourcesAsyncRdfIterator\n */\nexport class MediatedLinkedRdfSourcesAsyncRdfIterator extends LinkedRdfSourcesAsyncRdfIterator {\n private readonly mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n private readonly mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n private readonly mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n private readonly forceSourceType?: string;\n private readonly handledUrls: Record;\n private readonly aggregatedStore: IAggregatedStore | undefined;\n private linkQueue: Promise | undefined;\n private wasForcefullyClosed = false;\n\n public constructor(\n cacheSize: number,\n operation: Algebra.Operation,\n queryBindingsOptions: IQueryBindingsOptions | undefined,\n context: IActionContext,\n forceSourceType: string | undefined,\n firstUrl: string,\n maxIterators: number,\n sourceStateGetter: SourceStateGetter,\n aggregatedStore: IAggregatedStore | undefined,\n mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate,\n mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks,\n mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue,\n ) {\n super(\n cacheSize,\n operation,\n queryBindingsOptions,\n context,\n firstUrl,\n maxIterators,\n sourceStateGetter,\n // Buffersize must be infinite for an aggregated store because it must keep filling until there are no more\n // derived iterators in the aggregated store.\n aggregatedStore ? { maxBufferSize: Number.POSITIVE_INFINITY } : undefined,\n );\n this.forceSourceType = forceSourceType;\n this.mediatorMetadataAccumulate = mediatorMetadataAccumulate;\n this.mediatorRdfResolveHypermediaLinks = mediatorRdfResolveHypermediaLinks;\n this.mediatorRdfResolveHypermediaLinksQueue = mediatorRdfResolveHypermediaLinksQueue;\n this.handledUrls = { [firstUrl]: true };\n this.aggregatedStore = aggregatedStore;\n }\n\n // Mark the aggregated store as ended once we trigger the closing or destroying of this iterator.\n // We don't override _end, because that would mean that we have to wait\n // until the buffer of this iterator must be fully consumed, which will not always be the case.\n\n public override close(): void {\n if (!this.aggregatedStore) {\n super.close();\n return;\n }\n\n this.getLinkQueue()\n .then((linkQueue) => {\n if (this.isCloseable(linkQueue, false)) {\n // Wait a tick before ending the aggregatedStore, to ensure that pending match() calls to it have started.\n if (this.aggregatedStore) {\n setTimeout(() => this.aggregatedStore!.end());\n }\n super.close();\n } else {\n this.wasForcefullyClosed = true;\n }\n })\n .catch(error => super.destroy(error));\n }\n\n public override destroy(cause?: Error): void {\n if (!this.aggregatedStore) {\n super.destroy(cause);\n return;\n }\n\n this.getLinkQueue()\n .then((linkQueue) => {\n if (cause ?? this.isCloseable(linkQueue, false)) {\n // Wait a tick before ending the aggregatedStore, to ensure that pending match() calls to it have started.\n if (this.aggregatedStore) {\n setTimeout(() => this.aggregatedStore!.end());\n }\n super.destroy(cause);\n } else {\n this.wasForcefullyClosed = true;\n }\n })\n .catch(error => super.destroy(error));\n }\n\n protected override isCloseable(linkQueue: ILinkQueue, requireQueueEmpty: boolean): boolean {\n return (requireQueueEmpty ? linkQueue.isEmpty() : this.wasForcefullyClosed || linkQueue.isEmpty()) &&\n !this.areIteratorsRunning();\n }\n\n protected override canStartNewIterator(): boolean {\n // Also allow sub-iterators to be started if the aggregated store has at least one running iterator.\n // We need this because there are cases where these running iterators will be consumed before this linked iterator.\n return (!this.wasForcefullyClosed &&\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n (this.aggregatedStore && this.aggregatedStore.hasRunningIterators())) || super.canStartNewIterator();\n }\n\n protected override canStartNewIteratorConsiderReadable(): boolean {\n return !this.aggregatedStore;\n }\n\n protected override isRunning(): boolean {\n // Same as above\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n return (this.aggregatedStore && this.aggregatedStore.hasRunningIterators()) || !this.done;\n }\n\n public getLinkQueue(): Promise {\n if (!this.linkQueue) {\n this.linkQueue = this.mediatorRdfResolveHypermediaLinksQueue\n .mediate({ firstUrl: this.firstUrl, context: this.context })\n .then(result => result.linkQueue);\n }\n return this.linkQueue;\n }\n\n protected async getSourceLinks(metadata: Record, startSource: ISourceState): Promise {\n try {\n const { links } = await this.mediatorRdfResolveHypermediaLinks.mediate({ context: this.context, metadata });\n // Update discovery event statistic if available\n const traversalTracker: IStatisticBase | undefined =\n this.context.get(KeysStatistics.discoveredLinks);\n if (traversalTracker) {\n for (const link of links) {\n traversalTracker.updateStatistic({ url: link.url, metadata: { ...link.metadata }}, startSource.link);\n }\n }\n\n // Filter URLs to avoid cyclic next-page loops\n return links.filter((link) => {\n if (this.handledUrls[link.url]) {\n return false;\n }\n this.handledUrls[link.url] = true;\n return true;\n });\n } catch {\n // No next URLs may be available, for example when we've reached the end of a Hydra next-page sequence.\n return [];\n }\n }\n\n protected override startIterator(startSource: ISourceState): void {\n if (this.aggregatedStore && !this.aggregatedStore.containedSources.has(startSource.link.url)) {\n // A source that has been cached due to earlier query executions may not be part of the aggregated store yet.\n // In that case, we add all quads from that source to the aggregated store.\n this.aggregatedStore?.containedSources.add(startSource.link.url);\n const stream = startSource.source.queryBindings(\n AF.createPattern(\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n DF.variable('g'),\n ),\n this.context.set(KeysQueryOperation.unionDefaultGraph, true),\n ).map(bindings => DF.quad(\n bindings.get('s')!,\n bindings.get('p')!,\n bindings.get('o')!,\n bindings.get('g'),\n ));\n this.aggregatedStore.import( stream)\n .on('end', () => {\n super.startIterator(startSource);\n });\n } else {\n super.startIterator(startSource);\n }\n }\n\n public async accumulateMetadata(\n accumulatedMetadata: MetadataBindings,\n appendingMetadata: MetadataBindings,\n ): Promise {\n return (await this.mediatorMetadataAccumulate.mediate({\n mode: 'append',\n accumulatedMetadata,\n appendingMetadata,\n context: this.context,\n })).metadata;\n }\n\n protected override updateMetadata(metadataNew: MetadataBindings): void {\n super.updateMetadata(metadataNew);\n this.aggregatedStore?.setBaseMetadata(metadataNew, true);\n }\n}\n","import { QuerySourceRdfJs } from '@comunica/actor-query-source-identify-rdfjs';\nimport type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { IActorDereferenceRdfOutput, MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport type { MediatorQuerySourceIdentifyHypermedia } from '@comunica/bus-query-source-identify-hypermedia';\nimport type { IActorRdfMetadataOutput, MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { MediatorRdfResolveHypermediaLinks } from '@comunica/bus-rdf-resolve-hypermedia-links';\nimport type { MediatorRdfResolveHypermediaLinksQueue } from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type {\n BindingsStream,\n FragmentSelectorShape,\n IActionContext,\n IAggregatedStore,\n IQueryBindingsOptions,\n IQuerySource,\n MetadataBindings,\n ILink,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\nimport { LRUCache } from 'lru-cache';\nimport { Readable } from 'readable-stream';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { ISourceState } from './LinkedRdfSourcesAsyncRdfIterator';\nimport { MediatedLinkedRdfSourcesAsyncRdfIterator } from './MediatedLinkedRdfSourcesAsyncRdfIterator';\nimport { StreamingStoreMetadata } from './StreamingStoreMetadata';\n\nexport class QuerySourceHypermedia implements IQuerySource {\n public readonly referenceValue: string;\n public readonly firstUrl: string;\n public readonly forceSourceType?: string;\n public readonly aggregateStore: boolean;\n public readonly mediators: IMediatorArgs;\n public readonly logWarning: (warningMessage: string) => void;\n public readonly bindingsFactory: BindingsFactory;\n\n /**\n * A cache for source URLs to source states.\n */\n public sourcesState: LRUCache>;\n\n private readonly cacheSize: number;\n private readonly maxIterators: number;\n\n public constructor(\n cacheSize: number,\n firstUrl: string,\n forceSourceType: string | undefined,\n maxIterators: number,\n aggregateStore: boolean,\n mediators: IMediatorArgs,\n logWarning: (warningMessage: string) => void,\n bindingsFactory: BindingsFactory,\n ) {\n this.referenceValue = firstUrl;\n this.cacheSize = cacheSize;\n this.firstUrl = firstUrl;\n this.forceSourceType = forceSourceType;\n this.maxIterators = maxIterators;\n this.mediators = mediators;\n this.aggregateStore = aggregateStore;\n this.logWarning = logWarning;\n this.bindingsFactory = bindingsFactory;\n this.sourcesState = new LRUCache>({ max: this.cacheSize });\n }\n\n public async getSelectorShape(context: IActionContext): Promise {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return source.source.getSelectorShape(context);\n }\n\n public queryBindings(\n operation: Algebra.Operation,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): BindingsStream {\n // Optimized match with aggregated store if enabled and started.\n const aggregatedStore: IAggregatedStore | undefined = this.getAggregateStore(context);\n if (aggregatedStore && operation.type === 'pattern' && aggregatedStore.started) {\n return new QuerySourceRdfJs(aggregatedStore, this.bindingsFactory).queryBindings(operation, context);\n }\n\n // Initialize the sources state on first call\n if (this.sourcesState.size === 0) {\n this.getSourceCached({ url: this.firstUrl }, {}, context, aggregatedStore)\n .catch(error => it.destroy(error));\n }\n\n const it: MediatedLinkedRdfSourcesAsyncRdfIterator = new MediatedLinkedRdfSourcesAsyncRdfIterator(\n this.cacheSize,\n operation,\n options,\n context,\n this.forceSourceType,\n this.firstUrl,\n this.maxIterators,\n (link, handledDatasets) => this.getSourceCached(link, handledDatasets, context, aggregatedStore),\n aggregatedStore,\n this.mediators.mediatorMetadataAccumulate,\n this.mediators.mediatorRdfResolveHypermediaLinks,\n this.mediators.mediatorRdfResolveHypermediaLinksQueue,\n );\n if (aggregatedStore) {\n aggregatedStore.started = true;\n\n // Kickstart this iterator when derived iterators are created from the aggregatedStore,\n // otherwise the traversal process will not start if this iterator is not the first one to be consumed.\n const listener = (): void => it.kickstart();\n aggregatedStore.addIteratorCreatedListener(listener);\n it.on('end', () => aggregatedStore.removeIteratorCreatedListener(listener));\n }\n\n return it;\n }\n\n public queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator {\n return new TransformIterator(async() => {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return source.source.queryQuads(operation, context);\n });\n }\n\n public async queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return await source.source.queryBoolean(operation, context);\n }\n\n public async queryVoid(operation: Algebra.Update, context: IActionContext): Promise {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return await source.source.queryVoid(operation, context);\n }\n\n /**\n * Resolve a source for the given URL.\n * @param link A source link.\n * @param handledDatasets A hash of dataset identifiers that have already been handled.\n * @param context The action context.\n * @param aggregatedStore An optional aggregated store.\n */\n public async getSource(\n link: ILink,\n handledDatasets: Record,\n context: IActionContext,\n aggregatedStore: IAggregatedStore | undefined,\n ): Promise {\n // Include context entries from link\n if (link.context) {\n context = context.merge(link.context);\n }\n\n // Get the RDF representation of the given document\n let url = link.url;\n let quads: RDF.Stream;\n let metadata: Record;\n try {\n const dereferenceRdfOutput: IActorDereferenceRdfOutput = await this.mediators.mediatorDereferenceRdf\n .mediate({ context, url });\n url = dereferenceRdfOutput.url;\n\n // Determine the metadata\n const rdfMetadataOutput: IActorRdfMetadataOutput = await this.mediators.mediatorMetadata.mediate(\n { context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples },\n );\n\n rdfMetadataOutput.data.on('error', () => {\n // Silence errors in the data stream,\n // as they will be emitted again in the metadata stream,\n // and will result in a promise rejection anyways.\n // If we don't do this, we end up with an unhandled error message\n });\n\n metadata = (await this.mediators.mediatorMetadataExtract.mediate({\n context,\n url,\n // The problem appears to be conflicting metadata keys here\n metadata: rdfMetadataOutput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n quads = rdfMetadataOutput.data;\n\n // Optionally filter the resulting data\n if (link.transform) {\n quads = await link.transform(quads);\n }\n } catch (error: unknown) {\n // Make sure that dereference errors are only emitted once an actor really needs the read quads\n // This for example allows SPARQL endpoints that error on service description fetching to still be source-forcible\n quads = new Readable();\n quads.read = () => {\n setTimeout(() => quads.emit('error', error));\n return null;\n };\n ({ metadata } = await this.mediators.mediatorMetadataAccumulate.mediate({ context, mode: 'initialize' }));\n\n // Log as warning, because the quads above may not always be consumed (e.g. for SPARQL endpoints),\n // so the user would not be notified of something going wrong otherwise.\n this.logWarning(`Metadata extraction for ${url} failed: ${( error).message}`);\n }\n\n // Aggregate all discovered quads into a store.\n aggregatedStore?.setBaseMetadata( metadata, false);\n aggregatedStore?.containedSources.add(link.url);\n aggregatedStore?.import(quads);\n\n // Determine the source\n const { source, dataset } = await this.mediators.mediatorQuerySourceIdentifyHypermedia.mediate({\n context,\n forceSourceType: link.url === this.firstUrl ? this.forceSourceType : undefined,\n handledDatasets,\n metadata,\n quads,\n url,\n });\n\n if (dataset) {\n // Mark the dataset as applied\n // This is needed to make sure that things like QPF search forms are only applied once,\n // and next page links are followed after that.\n handledDatasets[dataset] = true;\n }\n\n return { link, source, metadata: metadata, handledDatasets };\n }\n\n /**\n * Resolve a source for the given URL.\n * This will first try to retrieve the source from cache.\n * @param link A source ILink.\n * @param handledDatasets A hash of dataset identifiers that have already been handled.\n * @param context The action context.\n * @param aggregatedStore An optional aggregated store.\n */\n protected getSourceCached(\n link: ILink,\n handledDatasets: Record,\n context: IActionContext,\n aggregatedStore: IAggregatedStore | undefined,\n ): Promise {\n let source = this.sourcesState.get(link.url);\n if (source) {\n return source;\n }\n source = this.getSource(link, handledDatasets, context, aggregatedStore);\n if (link.url === this.firstUrl || aggregatedStore === undefined) {\n this.sourcesState.set(link.url, source);\n }\n return source;\n }\n\n public getAggregateStore(context: IActionContext): IAggregatedStore | undefined {\n let aggregatedStore: IAggregatedStore | undefined;\n if (this.aggregateStore) {\n const aggregatedStores: Map | undefined = context\n .get(KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores);\n if (aggregatedStores) {\n aggregatedStore = aggregatedStores.get(this.firstUrl);\n if (!aggregatedStore) {\n aggregatedStore = new StreamingStoreMetadata(\n undefined,\n async(accumulatedMetadata, appendingMetadata) => \n (await this.mediators.mediatorMetadataAccumulate.mediate({\n mode: 'append',\n accumulatedMetadata,\n appendingMetadata,\n context,\n })).metadata,\n );\n aggregatedStores.set(this.firstUrl, aggregatedStore);\n }\n return aggregatedStore;\n }\n }\n }\n\n public toString(): string {\n return `QuerySourceHypermedia(${this.firstUrl})`;\n }\n}\n\nexport interface IMediatorArgs {\n mediatorDereferenceRdf: MediatorDereferenceRdf;\n mediatorMetadata: MediatorRdfMetadata;\n mediatorMetadataExtract: MediatorRdfMetadataExtract;\n mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n}\n","// eslint-disable-next-line import/no-nodejs-modules\nimport type { EventEmitter } from 'node:events';\nimport { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { MetadataQuads, IAggregatedStore, MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { StreamingStore } from 'rdf-streaming-store';\n\n/**\n * A StreamingStore that returns an AsyncIterator with a valid MetadataQuads property.\n */\nexport class StreamingStoreMetadata extends StreamingStore implements IAggregatedStore {\n public started = false;\n public containedSources = new Set();\n public readonly runningIterators: Set> = new Set>();\n protected readonly iteratorCreatedListeners: Set<() => void> = new Set();\n protected readonly metadataAccumulator:\n (accumulatedMetadata: MetadataBindings, appendingMetadata: MetadataBindings) => Promise;\n\n protected baseMetadata: MetadataBindings = {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: [],\n };\n\n public constructor(\n store: RDF.Store | undefined,\n metadataAccumulator:\n (accumulatedMetadata: MetadataBindings, appendingMetadata: MetadataBindings) => Promise,\n ) {\n super(store);\n this.metadataAccumulator = metadataAccumulator;\n }\n\n public override import(stream: RDF.Stream): EventEmitter {\n if (!this.ended) {\n super.import(stream);\n }\n return stream;\n }\n\n public hasRunningIterators(): boolean {\n return this.runningIterators.size > 0;\n }\n\n public override match(\n subject?: RDF.Term | null,\n predicate?: RDF.Term | null,\n object?: RDF.Term | null,\n graph?: RDF.Term | null,\n ): AsyncIterator {\n // Wrap the raw stream in an AsyncIterator\n const rawStream = super.match(subject, predicate, object, graph);\n const iterator = new ClosableTransformIterator(\n rawStream,\n {\n autoStart: false,\n onClose: () => {\n // Running iterators are deleted once closed or destroyed\n this.runningIterators.delete(iterator);\n },\n },\n );\n\n // Expose the metadata property containing the cardinality\n let count = this.getStore().countQuads(subject!, predicate!, object!, graph!);\n const metadata: MetadataQuads = {\n state: new MetadataValidationState(),\n cardinality: {\n type: 'estimate',\n value: count,\n },\n canContainUndefs: false,\n };\n iterator.setProperty('metadata', metadata);\n iterator.setProperty('lastCount', count);\n\n // Every time a new quad is pushed into the iterator, update the metadata\n rawStream.on('quad', () => {\n iterator.setProperty('lastCount', ++count);\n this.updateMetadataState(iterator, count);\n });\n\n // Store all running iterators until they close or are destroyed\n this.runningIterators.add(iterator);\n\n // Invoke creation listeners\n for (const listener of this.iteratorCreatedListeners) {\n listener();\n }\n\n return iterator;\n }\n\n public setBaseMetadata(metadata: MetadataBindings, updateStates: boolean): void {\n this.baseMetadata = { ...metadata };\n this.baseMetadata.cardinality = { type: 'exact', value: 0 };\n\n if (updateStates) {\n for (const iterator of this.runningIterators) {\n const count: number = iterator.getProperty('lastCount')!;\n this.updateMetadataState(iterator, count);\n }\n }\n }\n\n protected updateMetadataState(iterator: AsyncIterator, count: number): void {\n // Append the given cardinality to the base metadata\n const metadataNew: MetadataBindings = {\n state: new MetadataValidationState(),\n cardinality: {\n type: 'estimate',\n value: count,\n },\n canContainUndefs: false,\n variables: [],\n };\n\n this.metadataAccumulator(this.baseMetadata, metadataNew)\n .then((accumulatedMetadata) => {\n accumulatedMetadata.state = new MetadataValidationState();\n\n // Set the new metadata, and invalidate the previous state\n const metadataToInvalidate = iterator.getProperty('metadata');\n iterator.setProperty('metadata', accumulatedMetadata);\n metadataToInvalidate?.state.invalidate();\n })\n .catch(() => {\n // Void errors\n });\n }\n\n public addIteratorCreatedListener(listener: () => void): void {\n this.iteratorCreatedListeners.add(listener);\n }\n\n public removeIteratorCreatedListener(listener: () => void): void {\n this.iteratorCreatedListeners.delete(listener);\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentify,\n IActorQuerySourceIdentifyOutput,\n IActorQuerySourceIdentifyArgs,\n} from '@comunica/bus-query-source-identify';\nimport { ActorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContext } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { QuerySourceRdfJs } from './QuerySourceRdfJs';\n\n/**\n * A comunica RDFJS Query Source Identify Actor.\n */\nexport class ActorQuerySourceIdentifyRdfJs extends ActorQuerySourceIdentify {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQuerySourceIdentifyRdfJsArgs) {\n super(args);\n }\n\n public async test(action: IActionQuerySourceIdentify): Promise {\n const source = action.querySourceUnidentified;\n if (source.type !== undefined && source.type !== 'rdfjs') {\n throw new Error(`${this.name} requires a single query source with rdfjs type to be present in the context.`);\n }\n if (typeof source.value === 'string' || !('match' in source.value)) {\n throw new Error(`${this.name} received an invalid rdfjs query source.`);\n }\n return true;\n }\n\n public async run(action: IActionQuerySourceIdentify): Promise {\n return {\n querySource: {\n source: new QuerySourceRdfJs(\n action.querySourceUnidentified.value,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n ),\n context: action.querySourceUnidentified.context ?? new ActionContext(),\n },\n };\n }\n}\n\nexport interface IActorQuerySourceIdentifyRdfJsArgs extends IActorQuerySourceIdentifyArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { filterMatchingQuotedQuads, quadsToBindings } from '@comunica/bus-query-source-identify';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IQuerySource, BindingsStream, IActionContext, FragmentSelectorShape } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { AsyncIterator, wrap as wrapAsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { someTermsNested, filterTermsNested, someTerms, uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { IRdfJsSourceExtended } from './IRdfJsSourceExtended';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\n\nexport class QuerySourceRdfJs implements IQuerySource {\n protected static readonly SELECTOR_SHAPE: FragmentSelectorShape = {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: AF.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')),\n },\n variablesOptional: [\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n ],\n };\n\n public referenceValue: string | RDF.Source;\n protected readonly source: IRdfJsSourceExtended;\n private readonly bindingsFactory: BindingsFactory;\n\n public constructor(source: RDF.Source, bindingsFactory: BindingsFactory) {\n this.source = source;\n this.referenceValue = source;\n this.bindingsFactory = bindingsFactory;\n }\n\n public static nullifyVariables(term: RDF.Term | undefined, quotedTripleFiltering: boolean): RDF.Term | undefined {\n return !term || term.termType === 'Variable' || (!quotedTripleFiltering &&\n term.termType === 'Quad' && someTermsNested(term, value => value.termType === 'Variable')) ?\n undefined :\n term;\n }\n\n public static hasDuplicateVariables(pattern: RDF.BaseQuad): boolean {\n const variables = filterTermsNested(pattern, term => term.termType === 'Variable');\n return variables.length > 1 && uniqTerms(variables).length < variables.length;\n }\n\n public async getSelectorShape(): Promise {\n return QuerySourceRdfJs.SELECTOR_SHAPE;\n }\n\n public queryBindings(operation: Algebra.Operation, context: IActionContext): BindingsStream {\n if (operation.type !== 'pattern') {\n throw new Error(`Attempted to pass non-pattern operation '${operation.type}' to QuerySourceRdfJs`);\n }\n\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n // Create an async iterator from the matched quad stream\n const rawStream = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n let it: AsyncIterator = rawStream instanceof AsyncIterator ?\n rawStream :\n wrapAsyncIterator(rawStream, { autoStart: false });\n\n // Perform post-match-filtering if the source does not support quoted triple filtering.\n if (!quotedTripleFiltering) {\n it = filterMatchingQuotedQuads(operation, it);\n }\n\n // Determine metadata\n if (!it.getProperty('metadata')) {\n this.setMetadata(it, operation)\n .catch(error => it.destroy(error));\n }\n\n return quadsToBindings(\n it,\n operation,\n this.bindingsFactory,\n Boolean(context.get(KeysQueryOperation.unionDefaultGraph)),\n );\n }\n\n protected async setMetadata(\n it: AsyncIterator,\n operation: Algebra.Pattern,\n ): Promise {\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n let cardinality: number;\n if (this.source.countQuads) {\n // If the source provides a dedicated method for determining cardinality, use that.\n cardinality = await this.source.countQuads(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n } else {\n // Otherwise, fallback to a sub-optimal alternative where we just call match again to count the quads.\n // WARNING: we can NOT reuse the original data stream here,\n // because we may lose data elements due to things happening async.\n let i = 0;\n cardinality = await new Promise((resolve, reject) => {\n const matches = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n matches.on('error', reject);\n matches.on('end', () => resolve(i));\n matches.on('data', () => i++);\n });\n }\n\n // If `match` would require filtering afterwards, our count will be an over-estimate.\n const wouldRequirePostFiltering = (!quotedTripleFiltering &&\n someTerms(operation, term => term.termType === 'Quad')) ||\n QuerySourceRdfJs.hasDuplicateVariables(operation);\n\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: wouldRequirePostFiltering ? 'estimate' : 'exact', value: cardinality },\n canContainUndefs: false,\n });\n }\n\n public queryQuads(\n _operation: Algebra.Operation,\n _context: IActionContext,\n ): AsyncIterator {\n throw new Error('queryQuads is not implemented in QuerySourceRdfJs');\n }\n\n public queryBoolean(\n _operation: Algebra.Ask,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryBoolean is not implemented in QuerySourceRdfJs');\n }\n\n public queryVoid(\n _operation: Algebra.Update,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryVoid is not implemented in QuerySourceRdfJs');\n }\n\n public toString(): string {\n return `QuerySourceRdfJs(${this.source.constructor.name})`;\n }\n}\n","import type { IActionRdfJoinEntriesSort, IActorRdfJoinEntriesSortOutput } from '@comunica/bus-rdf-join-entries-sort';\nimport { ActorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\n\n/**\n * An actor that sorts join entries by increasing cardinality.\n */\nexport class ActorRdfJoinEntriesSortCardinality extends ActorRdfJoinEntriesSort {\n public constructor(\n args: IActorArgs,\n ) {\n super(args);\n }\n\n public async test(_action: IActionRdfJoinEntriesSort): Promise {\n return true;\n }\n\n public async run(action: IActionRdfJoinEntriesSort): Promise {\n const entries = [ ...action.entries ]\n .sort((entryLeft, entryRight) => entryLeft.metadata.cardinality.value - entryRight.metadata.cardinality.value);\n return { entries };\n }\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { HashJoin } from 'asyncjoin';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'hash',\n limitEntries: 2,\n requiresVariableOverlap: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n let metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Ensure the left build stream is the smallest\n // TODO: in the next major version, use ActorRdfJoin.sortJoinEntries, which requires mediatorJoinEntriesSort\n if (metadatas[1].cardinality.value < metadatas[0].cardinality.value) {\n metadatas = [ metadatas[1], metadatas[0] ];\n action = { ...action, entries: [ action.entries[1], action.entries[0] ]};\n }\n\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n const join = new HashJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n entry => ActorRdfJoin.hash(entry, variables),\n ActorRdfJoin.joinBindings,\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Ensure the left build stream is the smallest\n if (metadatas[1].cardinality.value < metadatas[0].cardinality.value) {\n metadatas = [ metadatas[1], metadatas[0] ];\n }\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinArgs, IActorRdfJoinOutputInner } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin, ChunkedIterator } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type {\n IJoinEntryWithMetadata,\n IQueryOperationResultBindings,\n IQuerySourceWrapper,\n MetadataBindings,\n IActionContext,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\n\n/**\n * A comunica Inner Multi Bind Source RDF Join Actor.\n */\nexport class ActorRdfJoinMultiBindSource extends ActorRdfJoin {\n public readonly selectivityModifier: number;\n public readonly blockSize: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n\n public constructor(args: IActorRdfJoinInnerMultiBindSourceArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'bind-source',\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas(action.entries);\n const entries = await this.sortJoinEntries(entriesUnsorted, action.context);\n\n this.logDebug(\n action.context,\n 'First entry for Bind Join Source: ',\n () => ({ entry: entries[0].operation, metadata: entries[0].metadata }),\n );\n\n // Close the non-smallest streams\n for (const [ i, element ] of entries.entries()) {\n if (i !== 0) {\n element.output.bindingsStream.close();\n }\n }\n\n // Take the stream with the lowest cardinality\n const smallestStream: IQueryOperationResultBindings = entries[0].output;\n const smallestMetadata = entries[0].metadata;\n const remainingEntries = [ ...entries ];\n remainingEntries.splice(0, 1);\n\n // Get source for remaining entries (guaranteed thanks to prior check in getJoinCoefficients())\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(remainingEntries[0].operation)!;\n\n // Determine the operation to pass\n const operation = this.createOperationFromEntries(remainingEntries);\n\n // Slice the smallest stream into chunks according to the block size, so we avoid blocking too long.\n const chunkedStreams: AsyncIterator> = new ChunkedIterator(\n smallestStream.bindingsStream,\n this.blockSize,\n { autoStart: false },\n );\n\n // For each chunk, pass the query and the bindings to the source for execution\n const bindingsStream = new UnionIterator(chunkedStreams.map(chunk => sourceWrapper.source.queryBindings(\n operation,\n sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context,\n { joinBindings: { bindings: chunk, metadata: smallestMetadata }},\n )));\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: () => this.constructResultMetadata(entries, entries.map(entry => entry.metadata), action.context),\n },\n physicalPlanMetadata: {\n bindIndex: entriesUnsorted.indexOf(entries[0]),\n },\n };\n }\n\n protected async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, entries, context);\n\n // Prioritize entries with modified operations, so these are not re-executed\n entries = entries.sort((entryLeft, entryRight) => {\n if (entryLeft.operationModified && !entryRight.operationModified) {\n return -1;\n }\n return 0;\n });\n\n return entries;\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entries = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entries.map(entry => entry.metadata);\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Determine first stream and remaining ones\n const remainingEntries = [ ...entries ];\n const remainingRequestInitialTimes = [ ...requestInitialTimes ];\n const remainingRequestItemTimes = [ ...requestItemTimes ];\n remainingEntries.splice(0, 1);\n remainingRequestInitialTimes.splice(0, 1);\n remainingRequestItemTimes.splice(0, 1);\n\n // Reject binding on operations without sources\n const sources = remainingEntries.map(entry => ActorQueryOperation.getOperationSource(entry.operation));\n if (sources.some(source => !source)) {\n throw new Error(`Actor ${this.name} can not bind on remaining operations without source annotation`);\n }\n\n // Reject binding on operations with un-equal sources\n if (sources.some(source => source !== sources[0])) {\n throw new Error(`Actor ${this.name} can not bind on remaining operations with non-equal source annotation`);\n }\n\n // Reject if the source can not handle bindings\n const sourceWrapper: IQuerySourceWrapper = sources[0]!;\n const testingOperation = this.createOperationFromEntries(remainingEntries);\n const selectorShape = await sourceWrapper.source.getSelectorShape(action.context);\n if (!ActorQueryOperation\n .doesShapeAcceptOperation(selectorShape, testingOperation, { joinBindings: true })) {\n throw new Error(`Actor ${this.name} detected a source that can not handle passing down join bindings`);\n }\n\n // Determine selectivities of smallest entry with all other entries\n const selectivities = await Promise.all(remainingEntries\n .map(async entry => (await this.mediatorJoinSelectivity.mediate({\n entries: [ entries[0], entry ],\n context: action.context,\n })).selectivity * this.selectivityModifier));\n\n // Determine coefficients for remaining entries\n const cardinalityRemaining = remainingEntries\n .map((entry, i) => entry.metadata.cardinality.value * selectivities[i])\n .reduce((sum, element) => sum + element, 0);\n\n return {\n iterations: 1,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + cardinalityRemaining * requestItemTimes[1],\n };\n }\n\n public createOperationFromEntries(remainingEntries: IJoinEntryWithMetadata[]): Algebra.Operation {\n if (remainingEntries.length === 1) {\n return remainingEntries[0].operation;\n }\n return AF.createJoin(remainingEntries.map(entry => entry.operation), true);\n }\n}\n\nexport interface IActorRdfJoinInnerMultiBindSourceArgs extends IActorRdfJoinArgs {\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The maximum amount of bindings to send to the source per block.\n * @default {16}\n */\n blockSize: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, materializeOperation } from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, BindingsStream, IQueryOperationResultBindings, MetadataBindings } from '@comunica/types';\nimport { MultiTransformIterator, TransformIterator, UnionIterator } from 'asynciterator';\nimport { Factory, Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Multi-way Bind RDF Join Actor.\n */\nexport class ActorRdfJoinMultiBind extends ActorRdfJoin {\n public readonly bindOrder: BindOrder;\n public readonly selectivityModifier: number;\n public readonly minMaxCardinalityRatio: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorRdfJoinMultiBindArgs) {\n // TODO: remove this fallback in the next major update\n if (args.minMaxCardinalityRatio === undefined) {\n args.minMaxCardinalityRatio = 60;\n }\n super(args, {\n logicalType: 'inner',\n physicalName: 'bind',\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n /**\n * Create a new bindings stream that takes every binding of the base stream\n * and binds it to the remaining patterns, evaluates those patterns, and emits all their bindings.\n *\n * @param bindOrder The order in which elements should be bound.\n * @param baseStream The base stream.\n * @param operations The operations to bind with each binding of the base stream.\n * @param operationBinder A callback to retrieve the bindings stream of bound operations.\n * @param optional If the original bindings should be emitted when the resulting bindings stream is empty.\n * @return {BindingsStream}\n */\n public static createBindStream(\n bindOrder: BindOrder,\n baseStream: BindingsStream,\n operations: Algebra.Operation[],\n operationBinder: (boundOperations: Algebra.Operation[], operationBindings: Bindings)\n => Promise,\n optional: boolean,\n bindingsFactory: BindingsFactory,\n ): BindingsStream {\n // Enable auto-start on sub-bindings during depth-first binding for best performance.\n const autoStartSubBindings = bindOrder === 'depth-first';\n\n // Create bindings function\n const binder = (bindings: Bindings): BindingsStream => {\n // We don't bind the filter because filters are always handled last,\n // and we need to avoid binding filters of sub-queries, which are to be handled first. (see spec test bind10)\n const subOperations = operations\n .map(operation => materializeOperation(operation, bindings, bindingsFactory, { bindFilter: true }));\n const bindingsMerger = (subBindings: Bindings): Bindings | undefined => subBindings.merge(bindings);\n return new TransformIterator(async() => (await operationBinder(subOperations, bindings))\n .transform({ map: bindingsMerger }), { maxBufferSize: 128, autoStart: autoStartSubBindings });\n };\n\n // Create an iterator that binds elements from the base stream in different orders\n switch (bindOrder) {\n case 'depth-first':\n return new MultiTransformIterator(baseStream, { autoStart: false, multiTransform: binder, optional });\n case 'breadth-first':\n return new UnionIterator(baseStream.transform({\n map: binder,\n optional,\n }), { autoStart: false });\n default:\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`Received request for unknown bind order: ${bindOrder}`);\n }\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas(action.entries);\n const entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, entriesUnsorted, action.context);\n\n this.logDebug(\n action.context,\n 'First entry for Bind Join: ',\n () => ({ entry: entries[0].operation, metadata: entries[0].metadata }),\n );\n\n // Close the non-smallest streams\n for (const [ i, element ] of entries.entries()) {\n if (i !== 0) {\n element.output.bindingsStream.close();\n }\n }\n\n // Take the stream with the lowest cardinality\n const smallestStream: IQueryOperationResultBindings = entries[0].output;\n const remainingEntries = [ ...entries ];\n remainingEntries.splice(0, 1);\n\n // Bind the remaining patterns for each binding in the stream\n const subContext = action.context\n .set(KeysQueryOperation.joinLeftMetadata, entries[0].metadata)\n .set(KeysQueryOperation.joinRightMetadatas, remainingEntries.map(entry => entry.metadata));\n const bindingsStream: BindingsStream = ActorRdfJoinMultiBind.createBindStream(\n this.bindOrder,\n smallestStream.bindingsStream,\n remainingEntries.map(entry => entry.operation),\n async(operations: Algebra.Operation[], operationBindings: Bindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n const operation = operations.length === 1 ?\n operations[0] :\n ActorRdfJoinMultiBind.FACTORY.createJoin(operations);\n const output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate(\n { operation, context: subContext?.set(KeysQueryOperation.joinBindings, operationBindings) },\n ));\n return output.bindingsStream;\n },\n false,\n bindingsFactory,\n );\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: () => this.constructResultMetadata(entries, entries.map(entry => entry.metadata), action.context),\n },\n physicalPlanMetadata: {\n bindIndex: entriesUnsorted.indexOf(entries[0]),\n bindOperation: entries[0].operation,\n bindOperationCardinality: entries[0].metadata.cardinality,\n bindOrder: this.bindOrder,\n },\n };\n }\n\n public canBindWithOperation(operation: Algebra.Operation): boolean {\n let valid = true;\n Util.recurseOperation(operation, {\n [Algebra.types.EXTEND](): boolean {\n valid = false;\n return false;\n },\n [Algebra.types.GROUP](): boolean {\n valid = false;\n return false;\n },\n });\n\n return valid;\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entries.map(entry => entry.metadata);\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Determine first stream and remaining ones\n const remainingEntries = [ ...entries ];\n const remainingRequestInitialTimes = [ ...requestInitialTimes ];\n const remainingRequestItemTimes = [ ...requestItemTimes ];\n remainingEntries.splice(0, 1);\n remainingRequestInitialTimes.splice(0, 1);\n remainingRequestItemTimes.splice(0, 1);\n\n // Reject binding on some operation types\n if (remainingEntries\n .some(entry => !this.canBindWithOperation(entry.operation))) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n\n // Reject binding on modified operations, since using the output directly would be significantly more efficient.\n if (remainingEntries.some(entry => entry.operationModified)) {\n throw new Error(`Actor ${this.name} can not be used over remaining entries with modified operations`);\n }\n\n // Only run this actor if the smallest stream is significantly smaller than the largest stream.\n // We must use Math.max, because the last metadata is not necessarily the biggest, but it's the least preferred.\n if (metadatas[0].cardinality.value * this.minMaxCardinalityRatio >\n Math.max(...metadatas.map(metadata => metadata.cardinality.value))) {\n throw new Error(`Actor ${this.name} can only run if the smallest stream is much smaller than largest stream`);\n }\n\n // Determine selectivities of smallest entry with all other entries\n const selectivities = await Promise.all(remainingEntries\n .map(async entry => (await this.mediatorJoinSelectivity.mediate({\n entries: [ entries[0], entry ],\n context: action.context,\n })).selectivity * this.selectivityModifier));\n\n // Determine coefficients for remaining entries\n const cardinalityRemaining = remainingEntries\n .map((entry, i) => entry.metadata.cardinality.value * selectivities[i])\n .reduce((sum, element) => sum + element, 0);\n const receiveInitialCostRemaining = remainingRequestInitialTimes\n .reduce((sum, element) => sum + element, 0);\n const receiveItemCostRemaining = remainingRequestItemTimes\n .reduce((sum, element) => sum + element, 0);\n\n return {\n iterations: metadatas[0].cardinality.value * cardinalityRemaining,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * (\n requestItemTimes[0] +\n receiveInitialCostRemaining +\n cardinalityRemaining * receiveItemCostRemaining\n ),\n };\n }\n}\n\nexport interface IActorRdfJoinMultiBindArgs extends IActorRdfJoinArgs {\n /**\n * The order in which elements should be bound\n * @default {depth-first}\n */\n bindOrder: BindOrder;\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The number of times the smallest cardinality should fit in the maximum cardinality.\n * @range {double}\n * @default {60}\n */\n minMaxCardinalityRatio?: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n\nexport type BindOrder = 'depth-first' | 'breadth-first';\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator } from 'asynciterator';\n\n/**\n * A comunica Multi Empty RDF Join Actor.\n */\nexport class ActorRdfJoinMultiEmpty extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-empty',\n canHandleUndefs: true,\n });\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n if ((await ActorRdfJoin.getMetadatas(action.entries))\n .every(metadata => ActorRdfJoin.getCardinality(metadata).value > 0)) {\n throw new Error(`Actor ${this.name} can only join entries where at least one is empty`);\n }\n return super.test(action);\n }\n\n protected override async getOutput(action: IActionRdfJoin): Promise {\n // Close all entries\n for (const entry of action.entries) {\n entry.output.bindingsStream.close();\n }\n\n return {\n result: {\n bindingsStream: new ArrayIterator([], { autoStart: false }),\n metadata: async() => ({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: ActorRdfJoin.joinVariables(await ActorRdfJoin.getMetadatas(action.entries)),\n }),\n type: 'bindings',\n },\n };\n }\n\n protected async getJoinCoefficients(\n _action: IActionRdfJoin,\n _metadatas: MetadataBindings[],\n ): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n","import { bindingsToString } from '@comunica/bindings-factory';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n MediatorRdfJoin,\n IActorRdfJoinOutputInner,\n} from '@comunica/bus-rdf-join';\nimport { ChunkedIterator, ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport { KeysRdfJoin } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type {\n BindingsStream,\n IActionContext,\n IJoinEntry,\n IJoinEntryWithMetadata,\n IQuerySourceWrapper,\n MetadataBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport { Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica Inner Multi Smallest Filter Bindings RDF Join Actor.\n */\nexport class ActorRdfJoinMultiSmallestFilterBindings extends ActorRdfJoin {\n public readonly selectivityModifier: number;\n public readonly blockSize: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public static readonly FACTORY = new Factory();\n public constructor(args: IActorRdfJoinMultiSmallestFilterBindingsArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-smallest-filter-bindings',\n limitEntries: 2,\n limitEntriesMin: true,\n isLeaf: false,\n });\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise<{ first: IJoinEntryWithMetadata; second: IJoinEntryWithMetadata; remaining: IJoinEntryWithMetadata[] }> {\n let { entries: entriesSorted } = await this.mediatorJoinEntriesSort.mediate({ entries, context });\n\n // Prioritize entries with modified operations, so these are not re-executed\n entriesSorted = entriesSorted.sort((entryLeft, entryRight) => {\n if (entryLeft.operationModified && !entryRight.operationModified) {\n return -1;\n }\n return 0;\n });\n\n const first = entriesSorted.splice(0, 1)[0];\n\n // Let second entry first be prioritized for sharing as many variables with first as possible,\n // then having the fewest variables,\n // and then having the lowest cardinality.\n let second: IJoinEntryWithMetadata | undefined;\n let secondIndex = -1;\n let secondSharedVariables = 0;\n for (const [ i, entry ] of entriesSorted.entries()) {\n const sharedVariables = first.metadata.variables\n .filter(variableFirst => entry.metadata.variables\n .some(variableSecond => variableFirst.equals(variableSecond))).length;\n if (!second || (sharedVariables > secondSharedVariables ||\n (sharedVariables === secondSharedVariables &&\n (entry.metadata.variables.length < second.metadata.variables.length ||\n (entry.metadata.variables.length === second.metadata.variables.length &&\n entry.metadata.cardinality.value < second.metadata.cardinality.value))))) {\n second = entry;\n secondIndex = i;\n secondSharedVariables = sharedVariables;\n }\n }\n\n if (secondSharedVariables === 0) {\n throw new Error(`Actor ${this.name} can only join with common variables`);\n }\n\n const remaining = entriesSorted;\n remaining.splice(secondIndex, 1);\n return { first, second: second!, remaining };\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas([ ...action.entries ]);\n const { first, second: secondIn, remaining: remainingIn } = await this.sortJoinEntries(\n entriesUnsorted,\n action.context,\n );\n\n // Clone first stream, because we will use it twice\n const smallestStream1 = first.output.bindingsStream;\n first.output.bindingsStream = smallestStream1.clone();\n\n // Project the first stream on common variables, and filter out duplicates\n // The common variables array is guaranteed to be non-empty, due to the way the test of this actor is implemented.\n const commonVariables = first.metadata.variables\n .filter(variableFirst => secondIn.metadata.variables\n .some(variableSecond => variableFirst.equals(variableSecond)));\n const hashes: Record = {};\n const smallestStream1Projected: BindingsStream = smallestStream1.clone()\n .map(binding => binding.filter((value, key) =>\n commonVariables.some(commonVariable => commonVariable.equals(key))))\n .filter((binding) => {\n const hash: string = bindingsToString(binding);\n return !(hash in hashes) && (hashes[hash] = true);\n });\n\n // Slice the first stream into chunks according to the block size, so we avoid blocking too long.\n const chunkedStreams: AsyncIterator> = new ChunkedIterator(\n smallestStream1Projected,\n this.blockSize,\n { autoStart: false },\n );\n\n // Push down bindings of first stream when querying for second stream\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(secondIn.operation)!;\n const secondStream = new UnionIterator(chunkedStreams.map(chunk => sourceWrapper.source.queryBindings(\n secondIn.operation,\n sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context,\n { filterBindings: { bindings: chunk, metadata: first.metadata }},\n )));\n const second: IJoinEntry = {\n output: {\n type: 'bindings',\n bindingsStream: secondStream,\n metadata: secondIn.output.metadata,\n },\n operation: secondIn.operation,\n operationModified: true,\n };\n\n // Destroy the unused original second stream\n secondIn.output.bindingsStream.destroy();\n\n // Join the two selected streams\n const joinedEntry: IJoinEntry = {\n output: ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({\n type: action.type,\n entries: [ first, second ],\n context: action.context.set(KeysRdfJoin.lastPhysicalJoin, this.physicalName),\n })),\n operation: ActorRdfJoinMultiSmallestFilterBindings.FACTORY\n .createJoin([ first.operation, second.operation ], false),\n operationModified: true,\n };\n\n // And then join the result with the remaining streams\n const remaining: IJoinEntry[] = remainingIn;\n remaining.unshift(joinedEntry);\n\n return {\n result: await this.mediatorJoin.mediate({\n type: action.type,\n entries: remaining,\n context: action.context,\n }),\n physicalPlanMetadata: {\n firstIndex: entriesUnsorted.indexOf(first),\n secondIndex: entriesUnsorted.indexOf(secondIn),\n },\n };\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Avoid infinite recursion\n if (action.context.get(KeysRdfJoin.lastPhysicalJoin) === this.physicalName) {\n throw new Error(`Actor ${this.name} can not be called recursively`);\n }\n\n metadatas = [ ...metadatas ];\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const { first, second, remaining } = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n\n // Only pass if the second entry accepts filterBindings\n const sourceWrapper: IQuerySourceWrapper | undefined = ActorQueryOperation.getOperationSource(second.operation);\n if (!sourceWrapper) {\n throw new Error(`Actor ${this.name} can only process if entries[1] has a source`);\n }\n const testingOperation = second.operation;\n const selectorShape = await sourceWrapper.source.getSelectorShape(action.context);\n if (!ActorQueryOperation\n .doesShapeAcceptOperation(selectorShape, testingOperation, { filterBindings: true })) {\n throw new Error(`Actor ${this.name} can only process if entries[1] accept filterBindings`);\n }\n\n // Determine cost coefficients\n metadatas = [ first.metadata, second.metadata, ...remaining.map(remain => remain.metadata) ];\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n const { selectivity } = await this.mediatorJoinSelectivity.mediate({\n entries: [ first, second ],\n context: action.context,\n });\n const cardinalityRemaining = remaining\n .reduce((mul, remain) => mul * remain.metadata.cardinality.value * this.selectivityModifier, 1);\n\n return {\n iterations: selectivity * this.selectivityModifier *\n second.metadata.cardinality.value * cardinalityRemaining,\n persistedItems: first.metadata.cardinality.value,\n blockingItems: first.metadata.cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + cardinalityRemaining * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinMultiSmallestFilterBindingsArgs extends IActorRdfJoinArgs {\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The maximum amount of bindings to send to the source per block.\n * @default {64}\n */\n blockSize: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n MediatorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings, IJoinEntry, IActionContext, IJoinEntryWithMetadata } from '@comunica/types';\nimport { Factory } from 'sparqlalgebrajs';\n\n/**\n * A Multi Smallest RDF Join Actor.\n * It accepts 3 or more streams, joins the smallest two, and joins the result with the remaining streams.\n */\nexport class ActorRdfJoinMultiSmallest extends ActorRdfJoin {\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorRdfJoinMultiSmallestArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-smallest',\n limitEntries: 3,\n limitEntriesMin: true,\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n return (await this.mediatorJoinEntriesSort.mediate({ entries, context })).entries;\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entries: IJoinEntry[] = await this.sortJoinEntries(\n await ActorRdfJoin.getEntriesWithMetadatas([ ...action.entries ]),\n action.context,\n );\n const smallestEntry1 = entries[0];\n const smallestEntry2 = entries[1];\n entries.splice(0, 2);\n\n // Join the two selected streams, and then join the result with the remaining streams\n const firstEntry: IJoinEntry = {\n output: ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: action.type, entries: [ smallestEntry1, smallestEntry2 ], context: action.context })),\n operation: ActorRdfJoinMultiSmallest.FACTORY\n .createJoin([ smallestEntry1.operation, smallestEntry2.operation ], false),\n };\n entries.push(firstEntry);\n return {\n result: await this.mediatorJoin.mediate({\n type: action.type,\n entries,\n context: action.context,\n }),\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n metadatas = [ ...metadatas ];\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entriesWithMetadata = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entriesWithMetadata.map(entry => entry.metadata);\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value *\n metadatas.slice(2).reduce((acc, metadata) => acc * metadata.cardinality.value, 1),\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1] +\n metadatas.slice(2).reduce((sum, metadata, i) => sum + requestInitialTimes.slice(2)[i] +\n metadata.cardinality.value * requestItemTimes.slice(2)[i], 0),\n };\n }\n}\n\nexport interface IActorRdfJoinMultiSmallestArgs extends IActorRdfJoinArgs {\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { NestedLoopJoin } from 'asyncjoin';\n\n/**\n * A comunica NestedLoop RDF Join Actor.\n */\nexport class ActorRdfJoinNestedLoop extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const join = new NestedLoopJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n ActorRdfJoin.joinBindings,\n { autoStart: false },\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator } from 'asynciterator';\n\n/**\n * A comunica None RDF Join Actor.\n */\nexport class ActorRdfJoinNone extends ActorRdfJoin {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorRdfJoinNoneArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'none',\n limitEntries: 0,\n });\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n // Allow joining of one or zero streams\n if (action.entries.length > 0) {\n throw new Error(`Actor ${this.name} can only join zero entries`);\n }\n return await this.getJoinCoefficients();\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n return {\n result: {\n bindingsStream: new ArrayIterator([ bindingsFactory.bindings() ], { autoStart: false }),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n },\n };\n }\n\n protected async getJoinCoefficients(): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n\nexport interface IActorRdfJoinNoneArgs extends IActorRdfJoinArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\n\n/**\n * A comunica Single RDF Join Actor.\n */\nexport class ActorRdfJoinSingle extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'single',\n limitEntries: 1,\n });\n this.includeInLogs = false;\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n // Allow joining of one or zero streams\n if (action.entries.length !== 1) {\n throw new Error(`Actor ${this.name} can only join a single entry`);\n }\n return await this.getJoinCoefficients();\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n return {\n result: action.entries[0].output,\n };\n }\n\n protected async getJoinCoefficients(): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { SymmetricHashJoin } from 'asyncjoin';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinSymmetricHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinSymmetricHashArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'symmetric-hash',\n limitEntries: 2,\n requiresVariableOverlap: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n const join = new SymmetricHashJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n entry => ActorRdfJoinSymmetricHash.hash(entry, variables),\n ActorRdfJoin.joinBindings,\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinSymmetricHashArgs extends IActorRdfJoinArgs {\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { BindingsIndex } from './BindingsIndex';\n\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nexport class ActorRdfJoinMinusHashUndef extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash-undef',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index: BindingsIndex = new BindingsIndex(commonVariables);\n const bindingsStream = new ClosableTransformIterator(async() => {\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', data => index.add(data));\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n return output.bindingsStream.filter(data => !index.contains(data));\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const bufferMetadata = await output.metadata();\n const outputMetadata = await output.metadata();\n return {\n ...outputMetadata,\n canContainUndefs: bufferMetadata.canContainUndefs || outputMetadata.canContainUndefs,\n };\n },\n },\n };\n }\n // Destroy the buffer stream since it is not needed when\n // there are no common variables.\n buffer.bindingsStream.destroy();\n return {\n result: output,\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n // Slightly increase iteration cost, as operations in our BindingsIndex do not happen in constant time\n // This enables the mediator to favor other minus actors,\n // while this one will only be selected when streams contain undefs.\n iterations: (metadatas[0].cardinality.value + metadatas[1].cardinality.value) * 1.01,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\n\n/**\n * A simple efficient tree-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This will consider bindings with a variable term or a missing term\n * as a 'match-all' with other terms.\n */\nexport class BindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly data: IDataIndex = {};\n\n public constructor(keys: RDF.Variable[]) {\n this.keys = keys;\n }\n\n protected static hashTerm(term: RDF.Term | undefined): string {\n return term && term.termType !== 'Variable' ? termToString(term) : '';\n }\n\n /**\n * Add the given bindings to the index.\n * @param {Bindings} bindings A bindings.\n */\n public add(bindings: Bindings): void {\n if (this.isBindingsValid(bindings)) {\n let dataIt = this.data;\n for (const key of this.keys) {\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n let subDataIt = dataIt[dataKey];\n if (!subDataIt) {\n subDataIt = dataIt[dataKey] = {};\n }\n dataIt = subDataIt;\n }\n }\n }\n\n /**\n * Check if the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {boolean} If it exists in the index.\n */\n public contains(bindings: Bindings): boolean {\n // Always return false if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return false;\n }\n\n return this.containsRecursive(bindings, this.keys, [ this.data ]);\n }\n\n protected isBindingsValid(bindings: Bindings): boolean {\n let validKeys = false;\n for (const key of this.keys) {\n if (bindings.get(key)) {\n validKeys = true;\n break;\n }\n }\n return validKeys;\n }\n\n protected containsRecursive(bindings: Bindings, keys: RDF.Variable[], dataIndexes: IDataIndex[]): boolean {\n if (keys.length === 0) {\n return true;\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n } else {\n // Iterate over all entries\n let subDatas = Object.keys(data).map(subKey => data[subKey]);\n if (subDatas.length === 0) {\n subDatas = [{}];\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n }\n }\n return false;\n }\n}\n\nexport interface IDataIndex {\n [key: string]: IDataIndex;\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nexport class ActorRdfJoinMinusHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash',\n limitEntries: 2,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index: Record = {};\n const bindingsStream = new ClosableTransformIterator(async() => {\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (data) => {\n index[ActorRdfJoin.hashNonClashing(data, commonVariables)] = true;\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n return output.bindingsStream.filter(data => !index[ActorRdfJoin.hashNonClashing(data, commonVariables)]);\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n },\n };\n }\n // Destroy the buffer stream since it is not needed when\n // there are no common variables.\n buffer.bindingsStream.destroy();\n return {\n result: output,\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { BindOrder } from '@comunica/actor-rdf-join-inner-multi-bind';\nimport { ActorRdfJoinMultiBind } from '@comunica/actor-rdf-join-inner-multi-bind';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, BindingsStream, MetadataBindings } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Optional Bind RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalBind extends ActorRdfJoin {\n public readonly bindOrder: BindOrder;\n public readonly selectivityModifier: number;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorRdfJoinOptionalBindArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'bind',\n limitEntries: 2,\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n // Close the right stream, since we don't need that one\n action.entries[1].output.bindingsStream.close();\n\n // Bind the right pattern for each binding in the stream\n const subContext = action.context\n .set(KeysQueryOperation.joinLeftMetadata, await action.entries[0].output.metadata())\n .set(KeysQueryOperation.joinRightMetadatas, [ await action.entries[1].output.metadata() ]);\n const bindingsStream: BindingsStream = ActorRdfJoinMultiBind.createBindStream(\n this.bindOrder,\n action.entries[0].output.bindingsStream,\n [ action.entries[1].operation ],\n async(operations: Algebra.Operation[], operationBindings: Bindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n // Length of operations will always be 1\n const operation = operations[0];\n const output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate(\n { operation, context: subContext?.set(KeysQueryOperation.joinBindings, operationBindings) },\n ));\n return output.bindingsStream;\n },\n true,\n bindingsFactory,\n );\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // This actor only works well with common variables\n if (ActorRdfJoin.overlappingVariables(metadatas).length === 0) {\n throw new Error(`Actor ${this.name} only join entries with at least one common variable`);\n }\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Reject binding on some operation types\n if (action.entries[1].operation.type === Algebra.types.EXTEND ||\n action.entries[1].operation.type === Algebra.types.GROUP) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n\n // Determine selectivity of join\n const selectivity = (await this.mediatorJoinSelectivity.mediate({\n entries: action.entries,\n context: action.context,\n })).selectivity * this.selectivityModifier;\n\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value * selectivity,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * (\n requestItemTimes[0] +\n requestInitialTimes[1] +\n selectivity * metadatas[1].cardinality.value * requestItemTimes[1]\n ),\n };\n }\n}\n\nexport interface IActorRdfJoinOptionalBindArgs extends IActorRdfJoinArgs {\n /**\n * The order in which elements should be bound\n * @default {depth-first}\n */\n bindOrder: BindOrder;\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.000001}\n */\n selectivityModifier: number;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n IActorRdfJoinOutputInner,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { BindingsStream, MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator, ArrayIterator, MultiTransformIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { BindingsIndexDef } from './BindingsIndexDef';\nimport { BindingsIndexUndef } from './BindingsIndexUndef';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A comunica Optional Hash RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalHash extends ActorRdfJoin {\n private readonly blocking: boolean;\n\n public constructor(args: IActorRdfJoinOptionalHashArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: `hash-${args.canHandleUndefs ? 'undef' : 'def'}-${args.blocking ? 'blocking' : 'nonblocking'}`,\n limitEntries: 2,\n canHandleUndefs: args.canHandleUndefs,\n requiresVariableOverlap: true,\n });\n }\n\n public static constructIndex(undef: boolean, commonVariables: RDF.Variable[]): IBindingsIndex {\n return undef ?\n new BindingsIndexUndef(\n commonVariables,\n (term: RDF.Term | undefined) => term && term.termType !== 'Variable' ? termToString(term) : '',\n ) :\n new BindingsIndexDef(commonVariables, ActorRdfJoin.hashNonClashing);\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n\n let bindingsStream: BindingsStream;\n if (this.blocking) {\n // -- Blocking optional ---\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator first in a blocking manner.\n const index: IBindingsIndex = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings) ?? index.put(bindings, []);\n iterator.push(bindings);\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator => new ArrayIterator(\n (index.get(bindings).flat())\n .map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings))\n .filter(b => b !== null),\n { autoStart: false },\n ),\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n } else {\n // -- Non-blocking optional ---\n // This can be slightly slower than the blocking one above, due to the streaming overhead.\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator.\n // They are indexed with iterator values, so our main stream can already get started.\n const index: IBindingsIndex> = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n let indexActive = true;\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings) ??\n index.put(bindings, new BufferedIterator({ autoStart: false }));\n ( iterator)._push(bindings);\n });\n buffer.bindingsStream.on('end', () => {\n for (const iterator of index.values()) {\n iterator.close();\n }\n indexActive = false;\n });\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator => {\n // Find iterators from the index\n let iterators: AsyncIterator[] = index.get(bindings);\n\n // If no index entry was found, set an empty iterator.\n // If we index has been closed already, don't modify the index, but just use an empty dummy iterator.\n if (iterators.length === 0) {\n if (indexActive) {\n iterators = [ index.put(bindings, new BufferedIterator({ autoStart: false })) ];\n } else {\n iterators = [];\n }\n }\n\n // Merge all iterators in a single one,\n // and clone each one to make sure we can still use them in the future.\n const iterator = new UnionIterator(iterators.map(it => it.clone()), { autoStart: false });\n return iterator.map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings));\n },\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n }\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n let iterations = metadatas[0].cardinality.value + metadatas[1].cardinality.value;\n if (!this.canHandleUndefs) {\n // Our non-undef implementation is slightly more performant.\n iterations *= 0.8;\n }\n if (this.blocking) {\n // Our blocking implementation is slightly more performant.\n iterations *= 0.9;\n }\n return {\n iterations,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: this.blocking ? metadatas[0].cardinality.value : 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinOptionalHashArgs extends IActorRdfJoinArgs {\n /**\n * If this actor can handle undefined values.\n * If false, performance will be slightly better.\n */\n canHandleUndefs: boolean;\n /**\n * If the join will block when collecting the optional stream.\n * If true, performance will be better.\n */\n blocking: boolean;\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A simple efficient hash-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This can not handle bindings with undefined values.\n */\nexport class BindingsIndexDef implements IBindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly hashFn: (term: RDF.Bindings, keys: RDF.Variable[]) => string;\n private readonly index: Record;\n\n public constructor(keys: RDF.Variable[], hashFn: (term: RDF.Bindings, keys: RDF.Variable[]) => string) {\n this.keys = keys;\n this.hashFn = hashFn;\n this.index = {};\n }\n\n public put(bindings: RDF.Bindings, value: V): V {\n return this.index[this.hashFn(bindings, this.keys)] = value;\n }\n\n public get(bindings: RDF.Bindings): V[] {\n const v = this.getFirst(bindings);\n return v ? [ v ] : [];\n }\n\n public getFirst(bindings: RDF.Bindings): V | undefined {\n return this.index[this.hashFn(bindings, this.keys)];\n }\n\n public values(): V[] {\n return Object.values(this.index);\n }\n}\n","import type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A simple efficient tree-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This will consider bindings with a variable term or an undefined term\n * as a 'match-all' with other terms.\n */\nexport class BindingsIndexUndef implements IBindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly data: IDataIndex = {};\n private readonly hashFn: (term: RDF.Term | undefined) => string;\n\n public constructor(keys: RDF.Variable[], hashFn: (term: RDF.Term | undefined) => string) {\n this.keys = keys;\n this.hashFn = hashFn;\n }\n\n /**\n * Add the given bindings to the index.\n * @param {Bindings} bindings A bindings.\n * @param {V} value The value to put.\n */\n public put(bindings: Bindings, value: V): V {\n if (this.isBindingsValid(bindings)) {\n let dataIt: IDataIndex | V = this.data;\n for (let i = 0; i < this.keys.length; i++) {\n const key = this.keys[i];\n const dataKey = this.hashFn(bindings.get(key));\n let subDataIt: IDataIndex | V | undefined = (> dataIt)[dataKey];\n if (!subDataIt) {\n subDataIt = ((> dataIt))[dataKey] = i === this.keys.length - 1 ? value : {};\n }\n dataIt = subDataIt;\n }\n }\n return value;\n }\n\n protected isBindingsValid(bindings: Bindings): boolean {\n let validKeys = false;\n for (const key of this.keys) {\n if (bindings.has(key)) {\n validKeys = true;\n break;\n }\n }\n return validKeys;\n }\n\n /**\n * Get the value of the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {V[]} The values.\n */\n public get(bindings: Bindings): V[] {\n // Always return undefined if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return [];\n }\n\n return this.getRecursive(bindings, this.keys, [ this.data ]);\n }\n\n protected getRecursive(bindings: Bindings | undefined, keys: RDF.Variable[], dataIndexes: IDataIndex[]): V[] {\n if (keys.length === 0) {\n return dataIndexes;\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n const matchingRecursive: V[][] = [];\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = this.hashFn(bindings?.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = []> [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n matchingRecursive.push(this.getRecursive(bindings, keys, subDatas));\n } else {\n // Iterate over all entries\n const subDatas = []> Object.values(data);\n if (subDatas.length === 0) {\n continue;\n }\n matchingRecursive.push(this.getRecursive(bindings, keys, subDatas));\n }\n }\n return matchingRecursive.flat();\n }\n\n /**\n * Get the first value of the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {V | undefined} The value.\n */\n public getFirst(bindings: Bindings): V | undefined {\n // Always return undefined if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return undefined;\n }\n\n return this.getRecursiveFirst(bindings, this.keys, [ this.data ]);\n }\n\n protected getRecursiveFirst(bindings: Bindings, keys: RDF.Variable[], dataIndexes: IDataIndex[]): V | undefined {\n if (keys.length === 0) {\n return dataIndexes[0];\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = this.hashFn(bindings.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = []> [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n const ret = this.getRecursiveFirst(bindings, keys, subDatas);\n if (ret) {\n return ret;\n }\n } else {\n // Iterate over all entries\n const subDatas = []> Object.values(data);\n if (subDatas.length === 0) {\n continue;\n }\n const ret = this.getRecursiveFirst(bindings, keys, subDatas);\n if (ret) {\n return ret;\n }\n }\n }\n return undefined;\n }\n\n public values(): V[] {\n return this.keys.length === 0 ? [] : this.getRecursive(undefined, this.keys, [ this.data ]);\n }\n}\n\nexport interface IDataIndex {\n [key: string]: IDataIndex | V;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { NestedLoopJoin } from 'asyncjoin';\n\n/**\n * A comunica Optional Nested Loop RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalNestedLoop extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const join = new NestedLoopJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n ActorRdfJoin.joinBindings,\n { optional: true, autoStart: false },\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { IActionRdfJoinSelectivity, IActorRdfJoinSelectivityOutput } from '@comunica/bus-rdf-join-selectivity';\nimport { ActorRdfJoinSelectivity } from '@comunica/bus-rdf-join-selectivity';\nimport type { IActorArgs } from '@comunica/core';\nimport type { IMediatorTypeAccuracy } from '@comunica/mediatortype-accuracy';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Variable Counting RDF Join Selectivity Actor.\n * Based on the \"variable counting predicates\" heuristic from\n * \"SPARQL basic graph pattern optimization using selectivity estimation.\"\n */\nexport class ActorRdfJoinSelectivityVariableCounting extends ActorRdfJoinSelectivity {\n // Calculated as sum of unbound join type costs times 2 (best-case)\n public static MAX_PAIRWISE_COST = 41 * 2;\n\n public constructor(\n args: IActorArgs,\n ) {\n super(args);\n }\n\n public async test(_action: IActionRdfJoinSelectivity): Promise {\n return { accuracy: 0.5 };\n }\n\n public static getPatternCost(pattern: Algebra.Pattern | Algebra.Path): number {\n let cost = 1;\n if (pattern.subject.termType === 'Variable') {\n cost += 4;\n }\n if (pattern.predicate.termType === 'Variable' || pattern.type === Algebra.types.PATH) {\n cost += 1;\n }\n if (pattern.object.termType === 'Variable') {\n cost += 2;\n }\n if (pattern.graph.termType === 'Variable') {\n cost += 1;\n }\n return cost / 9;\n }\n\n public static getJoinTypes(\n operation1: Algebra.Pattern | Algebra.Path,\n operation2: Algebra.Pattern | Algebra.Path,\n ): JoinTypes[] {\n const joinTypes: JoinTypes[] = [];\n\n // Check operation1.subject\n if (operation1.subject.termType === 'Variable') {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundSG);\n }\n } else {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundSG);\n }\n }\n\n // Check operation1.predicate\n if (operation1.type === 'pattern') {\n if (operation1.predicate.termType === 'Variable') {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundPG);\n }\n } else {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundPG);\n }\n }\n }\n\n // Check operation1.object\n if (operation1.object.termType === 'Variable') {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundOG);\n }\n } else {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundOG);\n }\n }\n\n // Check operation1.graph\n if (operation1.graph.termType === 'Variable') {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundGG);\n }\n } else {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundGG);\n }\n }\n\n return joinTypes;\n }\n\n public static getOperationsPairwiseJoinCost(\n operation1: Algebra.Pattern | Algebra.Path,\n operation2: Algebra.Pattern | Algebra.Path,\n ): number {\n let cost = ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n\n for (const joinType of ActorRdfJoinSelectivityVariableCounting.getJoinTypes(operation1, operation2)) {\n switch (joinType) {\n case JoinTypes.boundSS:\n cost -= 2 * 2;\n break;\n case JoinTypes.boundSP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundSO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundSG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPP:\n // Special case: patterns with equal (bound) predicates have the highest cost\n return 1;\n case JoinTypes.boundPO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOS:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGG:\n cost -= 3 * 2;\n break;\n case JoinTypes.unboundSS:\n cost -= 2;\n break;\n case JoinTypes.unboundSP:\n cost -= 3;\n break;\n case JoinTypes.unboundSO:\n cost -= 1;\n break;\n case JoinTypes.unboundSG:\n cost -= 3;\n break;\n case JoinTypes.unboundPS:\n cost -= 3;\n break;\n case JoinTypes.unboundPP:\n cost -= 3;\n break;\n case JoinTypes.unboundPO:\n cost -= 3;\n break;\n case JoinTypes.unboundPG:\n cost -= 3;\n break;\n case JoinTypes.unboundOS:\n cost -= 1;\n break;\n case JoinTypes.unboundOP:\n cost -= 3;\n break;\n case JoinTypes.unboundOO:\n cost -= 1;\n break;\n case JoinTypes.unboundOG:\n cost -= 3;\n break;\n case JoinTypes.unboundGS:\n cost -= 3;\n break;\n case JoinTypes.unboundGP:\n cost -= 3;\n break;\n case JoinTypes.unboundGO:\n cost -= 3;\n break;\n case JoinTypes.unboundGG:\n cost -= 3;\n break;\n }\n }\n\n return cost / ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n }\n\n public static getOperationsJoinCost(operations: Algebra.Operation[]): number {\n // Determine all operations that select values (patterns and paths)\n const patterns: (Algebra.Pattern | Algebra.Path)[] = [];\n for (const operation of operations) {\n Util.recurseOperation(operation, {\n [Algebra.types.PATTERN](pattern: Algebra.Pattern): boolean {\n patterns.push(pattern);\n return false;\n },\n [Algebra.types.PATH](path: Algebra.Path): boolean {\n patterns.push(path);\n return false;\n },\n });\n }\n\n // Determine pairwise costs\n let totalCost = 0;\n let costEntries = 0;\n for (const pattern1 of patterns) {\n for (const pattern2 of patterns) {\n if (pattern1 !== pattern2) {\n totalCost += ActorRdfJoinSelectivityVariableCounting.getOperationsPairwiseJoinCost(pattern1, pattern2);\n costEntries++;\n }\n }\n }\n\n // If there are no overlapping patterns, the cost is 1\n if (costEntries === 0) {\n return 1;\n }\n\n // Combine all pairwise costs, and multiply with costs of each pattern separately\n return totalCost / costEntries * patterns\n .reduce((factor, pattern) => factor * ActorRdfJoinSelectivityVariableCounting.getPatternCost(pattern), 1);\n }\n\n public async run(action: IActionRdfJoinSelectivity): Promise {\n if (action.entries.length <= 1) {\n return { selectivity: 1 };\n }\n return {\n selectivity: ActorRdfJoinSelectivityVariableCounting\n .getOperationsJoinCost(action.entries.map(entry => entry.operation)),\n };\n }\n}\n\nexport enum JoinTypes {\n boundSS,\n boundSP,\n boundSO,\n boundSG,\n boundPS,\n boundPP,\n boundPO,\n boundPG,\n boundOS,\n boundOP,\n boundOO,\n boundOG,\n boundGS,\n boundGP,\n boundGO,\n boundGG,\n\n unboundSS,\n unboundSP,\n unboundSO,\n unboundSG,\n unboundPS,\n unboundPP,\n unboundPO,\n unboundPG,\n unboundOS,\n unboundOP,\n unboundOO,\n unboundOG,\n unboundGS,\n unboundGP,\n unboundGO,\n unboundGG,\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica CanContainUndefs RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateCanContainUndefs extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return default value on initialize\n if (action.mode === 'initialize') {\n return { metadata: { canContainUndefs: false }};\n }\n\n // Otherwise, attempt to increment existing value\n let canContainUndefs = action.accumulatedMetadata.canContainUndefs;\n if (action.appendingMetadata.canContainUndefs) {\n canContainUndefs = true;\n }\n return { metadata: { canContainUndefs }};\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\nimport type { QueryResultCardinality } from '@comunica/types';\n\n/**\n * A comunica Cardinality RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateCardinality extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return default value on initialize\n if (action.mode === 'initialize') {\n return { metadata: { cardinality: { type: 'exact', value: 0 }}};\n }\n\n // Otherwise, attempt to update existing value\n const cardinality: QueryResultCardinality = { ...action.accumulatedMetadata.cardinality };\n\n if (cardinality.dataset) {\n // If the accumulated cardinality refers to that of the full default graph (applicable for SPARQL endpoints)\n if (action.accumulatedMetadata.defaultGraph === cardinality.dataset &&\n cardinality.dataset !== action.appendingMetadata.cardinality.dataset) {\n // Use the cardinality of the appending metadata.\n return { metadata: { cardinality: action.appendingMetadata.cardinality }};\n }\n\n if (action.appendingMetadata.cardinality.dataset) {\n // If the accumulated cardinality is dataset-wide\n if (cardinality.dataset !== action.appendingMetadata.cardinality.dataset &&\n action.appendingMetadata.subsetOf === cardinality.dataset) {\n // If the appending cardinality refers to the subset of a dataset,\n // use the cardinality of the subset.\n return { metadata: { cardinality: action.appendingMetadata.cardinality }};\n }\n if (cardinality.dataset === action.appendingMetadata.cardinality.dataset) {\n // If the appending cardinality is for the same dataset,\n // keep the accumulated cardinality unchanged.\n return { metadata: { cardinality }};\n }\n // If the appending cardinality refers to another dataset,\n // remove the dataset scopes.\n delete cardinality.dataset;\n } else {\n // If the appending cardinality refers to a dataset subset,\n // keep the accumulated cardinality unchanged.\n return { metadata: { cardinality }};\n }\n }\n\n if (!action.appendingMetadata.cardinality || !Number.isFinite(action.appendingMetadata.cardinality.value)) {\n // We're already at infinite, so ignore any later metadata\n cardinality.type = 'estimate';\n cardinality.value = Number.POSITIVE_INFINITY;\n } else {\n if (action.appendingMetadata.cardinality.type === 'estimate') {\n cardinality.type = 'estimate';\n }\n cardinality.value += action.appendingMetadata.cardinality.value;\n }\n\n return { metadata: { cardinality }};\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica PageSize RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulatePageSize extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return nothing on initialize\n if (action.mode === 'initialize') {\n return { metadata: {}};\n }\n\n // Otherwise, attempt to increment existing value\n return {\n metadata: {\n ...('pageSize' in action.accumulatedMetadata) || ('pageSize' in action.appendingMetadata) ?\n {\n pageSize: (action.accumulatedMetadata.pageSize ?? 0) + (action.appendingMetadata.pageSize ?? 0),\n } :\n {},\n },\n };\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica RequestTime RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateRequestTime extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return nothing on initialize\n if (action.mode === 'initialize') {\n return { metadata: {}};\n }\n\n // Otherwise, attempt to increment existing value\n return {\n metadata: {\n ...('requestTime' in action.accumulatedMetadata) || ('requestTime' in action.appendingMetadata) ?\n {\n requestTime: (action.accumulatedMetadata.requestTime ?? 0) + (action.appendingMetadata.requestTime ?? 0),\n } :\n {},\n },\n };\n }\n}\n","import type {\n IActionRdfSerialize,\n IActorRdfSerializeFixedMediaTypesArgs,\n IActorRdfSerializeOutput,\n} from '@comunica/bus-rdf-serialize';\nimport {\n ActorRdfSerializeFixedMediaTypes,\n} from '@comunica/bus-rdf-serialize';\nimport type { IActionContext } from '@comunica/types';\nimport { JsonLdSerializer } from 'jsonld-streaming-serializer';\n\n/**\n * A comunica Jsonld RDF Serialize Actor.\n */\nexport class ActorRdfSerializeJsonLd extends ActorRdfSerializeFixedMediaTypes {\n /**\n * The number of spaces that should be used to indent stringified JSON.\n */\n public readonly jsonStringifyIndentSpaces: number;\n\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/ld+json\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/ld+json\": \"http://www.w3.org/ns/formats/JSON-LD\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorRdfSerializeJsonLdArgs) {\n super(args);\n }\n\n public async runHandle(action: IActionRdfSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const writer = new JsonLdSerializer(\n { space: ' '.repeat(this.jsonStringifyIndentSpaces) },\n );\n let data: NodeJS.ReadableStream;\n if ('pipe' in action.quadStream) {\n // Prefer piping if possible, to maintain backpressure\n action.quadStream.on('error', error => writer.emit('error', error));\n data = ( action.quadStream).pipe(writer);\n } else {\n data = writer.import(action.quadStream);\n }\n return { data };\n }\n}\n\nexport interface IActorRdfSerializeJsonLdArgs extends IActorRdfSerializeFixedMediaTypesArgs {\n /**\n * The number of spaces that should be used to indent stringified JSON.\n * @range {integer}\n * @default {2}\n */\n jsonStringifyIndentSpaces: number;\n}\n","import type {\n IActionRdfSerialize,\n IActorRdfSerializeFixedMediaTypesArgs,\n IActorRdfSerializeOutput,\n} from '@comunica/bus-rdf-serialize';\nimport {\n ActorRdfSerializeFixedMediaTypes,\n} from '@comunica/bus-rdf-serialize';\nimport { StreamWriter } from 'n3';\n\n/**\n * A comunica N3 RDF Serialize Actor.\n */\nexport class ActorRdfSerializeN3 extends ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/n-quads\": 1.0,\n * \"application/trig\": 0.95,\n * \"application/n-triples\": 0.8,\n * \"text/turtle\": 0.6,\n * \"text/n3\": 0.35\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/n-quads\": \"http://www.w3.org/ns/formats/N-Quads\",\n * \"application/trig\": \"http://www.w3.org/ns/formats/TriG\",\n * \"application/n-triples\": \"http://www.w3.org/ns/formats/N-Triples\",\n * \"text/turtle\": \"http://www.w3.org/ns/formats/Turtle\",\n * \"text/n3\": \"http://www.w3.org/ns/formats/N3\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorRdfSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n public async runHandle(action: IActionRdfSerialize, mediaType: string):\n Promise {\n const writer = new StreamWriter({ format: mediaType });\n let data: NodeJS.ReadableStream;\n if ('pipe' in action.quadStream) {\n // Prefer piping if possible, to maintain backpressure\n action.quadStream.on('error', error => writer.emit('error', error));\n data = ( action.quadStream).pipe(writer);\n } else {\n data = writer.import(action.quadStream);\n }\n return { data, triples: mediaType === 'text/turtle' ||\n mediaType === 'application/n-triples' ||\n mediaType === 'text/n3' };\n }\n}\n","import type {\n IActionRdfSerialize,\n IActorRdfSerializeFixedMediaTypesArgs,\n IActorRdfSerializeOutput,\n} from '@comunica/bus-rdf-serialize';\nimport {\n ActorRdfSerializeFixedMediaTypes,\n} from '@comunica/bus-rdf-serialize';\nimport arrayifyStream from 'arrayify-stream';\nimport { Readable } from 'readable-stream';\nimport { write } from 'shaclc-write';\n\n/**\n * A comunica SHACL Compact Syntax RDF Serialize Actor.\n */\nexport class ActorRdfSerializeShaclc extends ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"text/shaclc\": 1.0,\n * \"text/shaclc-ext\": 0.5\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/shaclc\": \"http://www.w3.org/ns/formats/Shaclc\",\n * \"text/shaclc-ext\": \"http://www.w3.org/ns/formats/ShaclcExtended\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorRdfSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n public async runHandle(action: IActionRdfSerialize, mediaType: string): Promise {\n const data = new Readable();\n data._read = () => {\n // Do nothing\n };\n\n try {\n const prefixes: Record = {};\n action.quadStream.on('prefix', (prefix, iri) => {\n prefixes[prefix] = iri;\n });\n\n const { text } = await write(\n await arrayifyStream(action.quadStream),\n { errorOnUnused: true, extendedSyntax: mediaType === 'text/shaclc-ext', prefixes },\n );\n data.push(text);\n data.push(null);\n } catch (error: unknown) {\n // Push the error into the stream\n data._read = () => {\n data.emit('error', error);\n };\n }\n\n return {\n data,\n triples: true,\n };\n }\n}\n","import type {\n IActionRdfUpdateQuads,\n IActorRdfUpdateQuadsArgs,\n IQuadDestination,\n} from '@comunica/bus-rdf-update-quads';\nimport { ActorRdfUpdateQuadsDestination, getContextDestination } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { RdfJsQuadDestination } from './RdfJsQuadDestination';\n\n/**\n * A comunica RDFJS Store RDF Update Quads Actor.\n */\nexport class ActorRdfUpdateQuadsRdfJsStore extends ActorRdfUpdateQuadsDestination {\n public constructor(args: IActorRdfUpdateQuadsArgs) {\n super(args);\n }\n\n public override async test(action: IActionRdfUpdateQuads): Promise {\n const destination = getContextDestination(action.context);\n if (!destination || typeof destination === 'string' ||\n (!('remove' in destination) && 'value' in destination && !( destination.value).remove)) {\n throw new Error(`${this.name} received an invalid rdfjsStore.`);\n }\n return true;\n }\n\n protected async getDestination(context: IActionContext): Promise {\n const destination: any = getContextDestination(context);\n return new RdfJsQuadDestination('remove' in destination ? destination : destination.value);\n }\n}\n","import type { IQuadDestination } from '@comunica/bus-rdf-update-quads';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { promisifyEventEmitter } from 'event-emitter-promisify';\nimport { DataFactory } from 'rdf-data-factory';\nimport { stringToTerm, termToString } from 'rdf-string';\n\nconst DF = new DataFactory();\n\n/**\n * A quad destination that wraps around an {@link RDF.Store}.\n */\nexport class RdfJsQuadDestination implements IQuadDestination {\n private readonly store: RDF.Store;\n\n public constructor(store: RDF.Store) {\n this.store = store;\n }\n\n public delete(quads: AsyncIterator): Promise {\n return promisifyEventEmitter(this.store.remove(quads));\n }\n\n public insert(quads: AsyncIterator): Promise {\n return promisifyEventEmitter(this.store.import(quads));\n }\n\n public async deleteGraphs(\n graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[],\n _requireExistence: boolean,\n _dropGraphs: boolean,\n ): Promise {\n switch (graphs) {\n case 'ALL':\n /* eslint-disable no-fallthrough */\n // Remove the default graph\n await promisifyEventEmitter(this.store.deleteGraph(DF.defaultGraph()));\n // Drop through to remove all named graphs\n case 'NAMED':\n /* eslint-enable no-fallthrough */\n // Warning: this is sub-optimal!\n // Query ALL quads to determine all named graphs\n // eslint-disable-next-line no-case-declarations\n const allQuads = this.store.match();\n // eslint-disable-next-line no-case-declarations\n const namedGraphs: Record = {};\n allQuads.on('data', (quad: RDF.Quad) => {\n if (quad.graph.termType !== 'DefaultGraph') {\n namedGraphs[termToString(quad.graph)] = true;\n }\n });\n await promisifyEventEmitter(allQuads);\n\n // Delete all named graphs\n await Promise.all(Object.keys(namedGraphs)\n .map(namedGraph => promisifyEventEmitter(this.store\n .deleteGraph( stringToTerm(namedGraph)))));\n break;\n default:\n // Delete the default graph or a named graph\n for (const graph of Array.isArray(graphs) ? graphs : [ graphs ]) {\n await promisifyEventEmitter(this.store.deleteGraph(graph));\n }\n }\n }\n\n public async createGraphs(graphs: RDF.NamedNode[], requireNonExistence: boolean): Promise {\n // We don't have to create anything, since RDF/JS stores don't record empty graphs.\n\n // The only check we have to do is error on existence\n if (requireNonExistence) {\n for (const graph of graphs) {\n const eventEmitter = this.store.match(undefined, undefined, undefined, graph);\n await new Promise((resolve, reject) => {\n eventEmitter.once('data', () => {\n reject(new Error(`Unable to create graph ${graph.value} as it already exists`));\n });\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n }\n }\n}\n","import type { IBindingsContextMergeHandler } from '@comunica/bus-merge-bindings-context';\nimport { ActionContext } from '@comunica/core';\nimport type { IActionContext, IActionContextKey } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Map } from 'immutable';\nimport { bindingsToString } from './bindingsToString';\n\n/**\n * An immutable.js-based Bindings object.\n */\nexport class Bindings implements RDF.Bindings {\n public readonly type = 'bindings';\n\n private readonly dataFactory: RDF.DataFactory;\n private readonly entries: Map;\n private readonly contextHolder: IContextHolder | undefined;\n\n public constructor(dataFactory: RDF.DataFactory, entries: Map, contextHolder?: IContextHolder) {\n this.dataFactory = dataFactory;\n this.entries = entries;\n this.contextHolder = contextHolder;\n }\n\n public has(key: RDF.Variable | string): boolean {\n return this.entries.has(typeof key === 'string' ? key : key.value);\n }\n\n public get(key: RDF.Variable | string): RDF.Term | undefined {\n return this.entries.get(typeof key === 'string' ? key : key.value);\n }\n\n public set(key: RDF.Variable | string, value: RDF.Term): Bindings {\n return new Bindings(\n this.dataFactory,\n this.entries.set(typeof key === 'string' ? key : key.value, value),\n this.contextHolder,\n );\n }\n\n public delete(key: RDF.Variable | string): Bindings {\n return new Bindings(\n this.dataFactory,\n this.entries.delete(typeof key === 'string' ? key : key.value),\n this.contextHolder,\n );\n }\n\n public keys(): Iterable {\n return this.mapIterable(\n this.iteratorToIterable(this.entries.keys()),\n key => this.dataFactory.variable!(key),\n );\n }\n\n public values(): Iterable {\n return this.iteratorToIterable(this.entries.values());\n }\n\n public forEach(fn: (value: RDF.Term, key: RDF.Variable) => any): void {\n for (const [ key, value ] of this.entries.entries()) {\n fn(value, this.dataFactory.variable!(key));\n }\n }\n\n public get size(): number {\n return this.entries.size;\n }\n\n public [Symbol.iterator](): Iterator<[RDF.Variable, RDF.Term]> {\n return this.mapIterable<[string, RDF.Term], [RDF.Variable, RDF.Term]>(\n this.iteratorToIterable(> this.entries.entries()),\n ([ key, value ]) => [ this.dataFactory.variable!(key), value ],\n )[Symbol.iterator]();\n }\n\n public equals(other: RDF.Bindings | null | undefined): boolean {\n if (!other) {\n return false;\n }\n if (this === other) {\n return true;\n }\n\n // First check if size is equal\n if (this.size !== other.size) {\n return false;\n }\n\n // Then check if keys and values are equal\n for (const key of this.keys()) {\n if (!this.get(key)?.equals(other.get(key))) {\n return false;\n }\n }\n\n return true;\n }\n\n public filter(fn: (value: RDF.Term, key: RDF.Variable) => boolean): Bindings {\n return new Bindings(this.dataFactory, Map( this.entries\n .filter((value, key) => fn(value, this.dataFactory.variable!(key)))), this.contextHolder);\n }\n\n public map(fn: (value: RDF.Term, key: RDF.Variable) => RDF.Term): Bindings {\n return new Bindings(this.dataFactory, Map( this.entries\n .map((value, key) => fn(value, this.dataFactory.variable!(key)))), this.contextHolder);\n }\n\n public merge(other: RDF.Bindings | Bindings): Bindings | undefined {\n if (this.size < other.size && other instanceof Bindings) {\n return other.merge(this);\n }\n let entries = this.entries;\n\n // Check if other is of type Bindings, in that case we can access entries immediately.\n // This skips the unnecessary conversion from string to variable.\n if (other instanceof Bindings) {\n for (const [ variable, right ] of other.entries) {\n const left = this.entries.get(variable);\n if (left && !left.equals(right)) {\n return;\n }\n entries = entries.set(variable, right);\n }\n } else {\n for (const [ variable, right ] of other) {\n const left = this.entries.get(variable.value);\n if (left && !left.equals(right)) {\n return;\n }\n entries = entries.set(variable.value, right);\n }\n }\n\n return this.createBindingsWithContexts(entries, other);\n }\n\n public mergeWith(\n merger: (self: RDF.Term, other: RDF.Term, key: RDF.Variable) => RDF.Term,\n other: RDF.Bindings | Bindings,\n ): Bindings {\n if (this.size < other.size && other instanceof Bindings) {\n return other.mergeWith(merger, this);\n }\n let entries = this.entries;\n\n // For code comments see Bindings.merge function\n if (other instanceof Bindings) {\n for (const [ variable, right ] of other.entries) {\n const left = this.entries.get(variable);\n let value: RDF.Term;\n if (left && !left.equals(right)) {\n value = merger(left, right, this.dataFactory.variable!(variable));\n } else {\n value = right;\n }\n entries = entries.set(variable, value);\n }\n } else {\n for (const [ variable, right ] of other) {\n const left = this.entries.get(variable.value);\n let value: RDF.Term;\n if (left && !left.equals(right)) {\n value = merger(left, right, variable);\n } else {\n value = right;\n }\n entries = entries.set(variable.value, value);\n }\n }\n\n return this.createBindingsWithContexts(entries, other);\n }\n\n protected createBindingsWithContexts(entries: Map, other: RDF.Bindings | Bindings): Bindings {\n // If any context is empty, we skip merging contexts\n if (this.contextHolder && this.contextHolder.context) {\n let mergedContext = this.contextHolder.context;\n // Only merge if the other has a context\n if ('contextHolder' in other && other.contextHolder && other.contextHolder.context) {\n mergedContext = Bindings\n .mergeContext(this.contextHolder.contextMergeHandlers, mergedContext, other.contextHolder.context);\n }\n return new Bindings(\n this.dataFactory,\n entries,\n { contextMergeHandlers: this.contextHolder.contextMergeHandlers, context: mergedContext },\n );\n }\n\n // Otherwise, use optional context from other\n return new Bindings(this.dataFactory, entries, ( other).contextHolder);\n }\n\n private static mergeContext(\n contextMergeHandlers: Record>,\n context: IActionContext,\n otherContext: IActionContext,\n ): IActionContext {\n // All keys can contain duplicates, we prevent this by checking our built datamap for duplicates\n const allKeys = [ ...context.keys(), ...otherContext.keys() ];\n // Map we build up with merged context values\n const newContextData: Record = {};\n const handledKeys: Record = {};\n\n // Set of names of keys in other context to allow for constant time lookup\n const keysSetOtherContext = new Set(\n otherContext.keys().map(key => key.name),\n );\n const keysBothContext = context.keys().filter(\n key => keysSetOtherContext.has(key.name),\n );\n\n for (const key of allKeys) {\n // If duplicate key, we continue iterating\n if (handledKeys[key.name] === 1) {\n continue;\n }\n\n // We've processed this key and shouldn't repeat it\n handledKeys[key.name] = 1;\n\n // Determine whether this key occurs in both contexts\n const occursInBoth = keysBothContext.some(x => x.name === key.name);\n\n // If we execute this function, we already check for existence of context merge handlers\n // This if statement is first as the most likely case for non-empty contexts is that we have mergehandlers\n // and both contexts have an entry\n if (contextMergeHandlers[key.name] && occursInBoth) {\n newContextData[key.name] = contextMergeHandlers[key.name]\n .run(context.get(key), otherContext.get(key));\n continue;\n }\n // If we have no merge handler, but both contexts have entries for key, we don't add it to new context\n if (!contextMergeHandlers[key.name] && occursInBoth) {\n continue;\n }\n\n // If key doesn't occur in own context, it must be in other context\n // (if we get to this point, the key doesn't occur in both)\n if (!context.get(key)) {\n newContextData[key.name] = otherContext.get(key);\n continue;\n }\n // This could likely be else statement, but don't want to risk it\n if (!otherContext.get(key)) {\n newContextData[key.name] = context.get(key);\n }\n }\n return new ActionContext(newContextData);\n }\n\n public setContextEntry(key: IActionContextKey, value: any): Bindings {\n return this.setContextEntryRaw(key, value);\n }\n\n public setContextEntryRaw(key: IActionContextKey, value: any): Bindings {\n if (this.contextHolder && this.contextHolder.context) {\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder.contextMergeHandlers,\n context: this.contextHolder.context.set(key, value),\n },\n );\n }\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder?.contextMergeHandlers ?? {},\n context: new ActionContext().set(key, value),\n },\n );\n }\n\n public deleteContextEntry(key: IActionContextKey): Bindings {\n return this.deleteContextEntryRaw(key);\n }\n\n public deleteContextEntryRaw(key: IActionContextKey): Bindings {\n if (this.contextHolder) {\n return new Bindings(\n this.dataFactory,\n this.entries,\n {\n contextMergeHandlers: this.contextHolder.contextMergeHandlers,\n context: this.contextHolder.context?.delete(key),\n },\n );\n }\n return new Bindings(this.dataFactory, this.entries);\n }\n\n public getContext(): IActionContext | undefined {\n return this.contextHolder?.context;\n }\n\n public getContextEntry(key: IActionContextKey): V | undefined {\n return this.getContext()?.get(key);\n }\n\n public toString(): string {\n return bindingsToString(this);\n }\n\n protected* mapIterable(iterable: Iterable, callback: (value: T) => U): Iterable {\n for (const x of iterable) {\n yield callback(x);\n }\n }\n\n protected iteratorToIterable(iterator: Iterator): Iterable {\n return {\n [Symbol.iterator]: () => iterator,\n };\n }\n}\n\nexport interface IContextHolder {\n contextMergeHandlers: Record>;\n context?: IActionContext;\n}\n","import type { IBindingsContextMergeHandler, MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Map } from 'immutable';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Bindings } from './Bindings';\n\n/**\n * A Bindings factory that provides Bindings backed by immutable.js.\n */\nexport class BindingsFactory implements RDF.BindingsFactory {\n private readonly dataFactory: RDF.DataFactory;\n private readonly contextMergeHandlers: Record> | undefined;\n\n public constructor(\n dataFactory: DataFactory = new DataFactory(),\n contextMergeHandlers?: Record>,\n ) {\n this.dataFactory = dataFactory;\n this.contextMergeHandlers = contextMergeHandlers;\n }\n\n public static async create(\n mediatorMergeBindingsContext: MediatorMergeBindingsContext,\n context: IActionContext,\n ): Promise {\n return new BindingsFactory(\n new DataFactory(),\n (await mediatorMergeBindingsContext.mediate({ context })).mergeHandlers,\n );\n }\n\n public bindings(entries: [RDF.Variable, RDF.Term][] = []): Bindings {\n return new Bindings(\n this.dataFactory,\n Map(entries.map(([ key, value ]) => [ key.value, value ])),\n this.contextMergeHandlers ? { contextMergeHandlers: this.contextMergeHandlers } : undefined,\n );\n }\n\n public fromBindings(bindings: RDF.Bindings): Bindings {\n return this.bindings([ ...bindings ]);\n }\n\n public fromRecord(record: Record): Bindings {\n return this.bindings(Object.entries(record).map(([ key, value ]) => [ this.dataFactory.variable!(key), value ]));\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\n\n/**\n * Stringify a bindings object.\n * @param bindings A bindings object.\n */\nexport function bindingsToString(bindings: RDF.Bindings): string {\n const raw: Record = {};\n for (const key of bindings.keys()) {\n raw[key.value] = termToString(bindings.get(key))!;\n }\n return JSON.stringify(raw, null, ' ');\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica actor for context-preprocess events.\n *\n * Actor types:\n * * Input: IAction: A context that will be processed.\n * * Test: \n * * Output: IActorContextPreprocessOutput: The resulting context.\n *\n * @see IActionContextPreprocess\n * @see IActorContextPreprocessOutput\n */\nexport abstract class ActorContextPreprocess\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n}\n\nexport interface IActionContextPreprocess extends IAction {\n /**\n * If the query processing is being initialized.\n * This is typically used for setting query-wide defaults.\n * This will be false for initializing source-specific contexts.\n */\n initialize?: boolean;\n}\n\nexport interface IActorContextPreprocessOutput extends IActorOutput {\n /**\n * A context object.\n * Can be null.\n */\n context: IActionContext;\n}\n\nexport type IActorContextPreprocessArgs = IActorArgs<\nIActionContextPreprocess,\nIActorTest,\nIActorContextPreprocessOutput\n>;\n\nexport type MediatorContextPreprocess = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediator } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { Bindings } from '@comunica/types';\n\n/**\n * A comunica actor for hash-bindings events.\n *\n * Actor types:\n * * Input: IActionHashBindings: Metadata for selecting a hash function.\n * * Test: IActorTest:\n * * Output: IActorHashBindingsOutput: The resulting hash function.\n *\n * @see IActionHashBindings\n * @see IActorHashBindingsTest\n * @see IActorHashBindingsOutput\n */\nexport abstract class ActorHashBindings\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHashBindingsArgs) {\n super(args);\n }\n}\n\nexport interface IActionHashBindings extends IAction {\n /**\n * If hash collisions are allowed.\n */\n allowHashCollisions: boolean;\n}\n\nexport interface IActorHashBindingsOutput extends IActorOutput {\n /**\n * A string-based hash of the given object.\n * @param {Bindings} bindings The bindings to hash.\n * @return {string} The object's hash.\n */\n hashFunction: HashFunction;\n\n /**\n * If hash collisions are possible with the given hash function.\n */\n hashCollisions: boolean;\n}\n\nexport type HashFunction = (bindings: Bindings) => string;\n\nexport type IActorHashBindingsArgs = IActorArgs;\n\nexport type MediatorHashBindings = Mediator<\nActor,\nIActionHashBindings,\nIActorTest,\nIActorHashBindingsOutput\n>;\n","import { Actor } from '@comunica/core';\nimport type { IAction, IActorArgs, IActorOutput, IActorTest, Mediator } from '@comunica/core';\nimport type { Quad } from 'rdf-data-factory';\n\n/**\n * A comunica actor for hash-quads events.\n *\n * Actor types:\n * * Input: IActionHashQuads: Metadata for selecting a hash function.\n * * Test: \n * * Output: IActorHashQuadsOutput: The resulting hash function.\n *\n * @see IActionHashQuads\n * @see IActorHashQuadsOutput\n */\nexport abstract class ActorHashQuads extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHashQuadsArgs) {\n super(args);\n }\n}\n\nexport interface IActionHashQuads extends IAction {\n /**\n * If hash collisions are allowed.\n */\n allowHashCollisions: boolean;\n}\n\nexport interface IActorHashQuadsOutput extends IActorOutput {\n /**\n * A string-based hash of the given object.\n * @param {Quads} quads The quads to hash.\n * @return {string} The object's hash.\n */\n hashFunction: HashFunction;\n\n /**\n * If hash collisions are possible with the given hash function.\n */\n hashCollisions: boolean;\n}\n\nexport type HashFunction = (quad: Quad) => string;\n\nexport type IActorHashQuadsArgs = IActorArgs<\nIActionHashQuads,\nIActorTest,\nIActorHashQuadsOutput\n>;\n\nexport type MediatorHashQuads = Mediator<\nActor,\nIActionHashQuads,\nIActorTest,\nIActorHashQuadsOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\n\n/**\n * A comunica actor for http-invalidate events.\n *\n * Actor types:\n * * Input: IActionHttpInvalidate: An action for invalidating the cached contents of given URL.\n * * Test: \n * * Output: IActorHttpInvalidateOutput: An empty response.\n *\n * @see IActionHttpInvalidate\n * @see IActorHttpInvalidateOutput\n */\nexport abstract class ActorHttpInvalidate extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorHttpInvalidateArgs) {\n super(args);\n }\n}\n\nexport interface IActionHttpInvalidate extends IAction {\n /**\n * The URL that requires invalidation.\n * If not provided, then _all_ URLs need to be invalidated.\n */\n url?: string;\n}\n\nexport interface IActorHttpInvalidateOutput extends IActorOutput {\n\n}\n\nexport type IActorHttpInvalidateArgs = IActorArgs;\n\nexport type MediatorHttpInvalidate = Mediate;\n","import type { IActorTest } from '@comunica/core';\nimport type {\n IActionHttpInvalidate,\n IActorHttpInvalidateOutput,\n IActorHttpInvalidateArgs,\n} from './ActorHttpInvalidate';\nimport { ActorHttpInvalidate } from './ActorHttpInvalidate';\n\n/**\n * An ActorHttpInvalidate actor that allows listeners to be attached.\n *\n * @see ActorHttpInvalidate\n */\nexport class ActorHttpInvalidateListenable extends ActorHttpInvalidate {\n private readonly invalidateListeners: IInvalidateListener[] = [];\n\n public constructor(args: IActorHttpInvalidateArgs) {\n super(args);\n this.invalidateListeners = [];\n }\n\n public addInvalidateListener(listener: IInvalidateListener): void {\n this.invalidateListeners.push(listener);\n }\n\n public async test(_action: IActionHttpInvalidate): Promise {\n return true;\n }\n\n public async run(action: IActionHttpInvalidate): Promise {\n for (const listener of this.invalidateListeners) {\n listener(action);\n }\n return {};\n }\n}\n\n/**\n * Called when a {@link IActionHttpInvalidate} is received.\n */\nexport type IInvalidateListener = (action: IActionHttpInvalidate) => void;\n","import type { IAction, IActorOutput, IActorTest, IActorArgs, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { Readable } from 'readable-stream';\n\n/**\n * A base actor for listening to init events.\n *\n * Actor types:\n * * Input: IActionInit: Contains process information\n * such as the list of arguments,\n * environment variables and input stream.\n * * Test: \n * * Output: IActorOutputInit: Contains process output streams.\n *\n * @see IActionInit\n */\nexport abstract class ActorInit extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorInitArgs) {\n super(args);\n }\n}\n\n/**\n * The init input, which contains the program arguments.\n */\nexport interface IActionInit extends IAction {\n /**\n * The list of program arguments.\n */\n argv: string[];\n /**\n * The mapping of environment variables.\n */\n env: Record;\n /**\n * A standard input stream.\n */\n stdin: Readable;\n}\n\nexport interface IActorOutputInit extends IActorOutput {\n /**\n * A standard error output stream.\n */\n stderr?: Readable;\n /**\n * A standard output stream.\n */\n stdout?: Readable;\n}\n\nexport type IActorInitArgs = IActorArgs;\n\nexport type MediatorInit = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for optimize-query-operation events.\n *\n * Actor types:\n * * Input: IActionOptimizeQueryOperation: An incoming SPARQL operation.\n * * Test: \n * * Output: IActorOptimizeQueryOperationOutput: A (possibly optimized) outgoing SPARQL operation.\n *\n * @see IActionOptimizeQueryOperation\n * @see IActorOptimizeQueryOperationOutput\n */\nexport abstract class ActorOptimizeQueryOperation\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n}\n\nexport interface IActionOptimizeQueryOperation extends IAction {\n operation: Algebra.Operation;\n}\n\nexport interface IActorOptimizeQueryOperationOutput extends IActorOutput {\n operation: Algebra.Operation;\n context: IActionContext;\n}\n\nexport type IActorOptimizeQueryOperationArgs = IActorArgs<\nIActionOptimizeQueryOperation,\nIActorTest,\nIActorOptimizeQueryOperationOutput\n>;\n\nexport type MediatorOptimizeQueryOperation = Mediate<\nIActionOptimizeQueryOperation,\nIActorOptimizeQueryOperationOutput\n>;\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { KeysInitQuery, KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorArgs, IActorTest, IAction, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport { BlankNodeBindingsScoped } from '@comunica/data-factory';\nimport type {\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n IQueryOperationResultQuads,\n IQueryOperationResultVoid,\n Bindings,\n IActionContext,\n FunctionArgumentsCache,\n IQuerySourceWrapper,\n FragmentSelectorShape,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { materializeOperation } from './Bindings';\n\n/**\n * A counter that keeps track blank node generated through BNODE() SPARQL\n * expressions.\n *\n * @type {number}\n */\nlet bnodeCounter = 0;\n\n/**\n * A comunica actor for query-operation events.\n *\n * Actor types:\n * * Input: IActionQueryOperation: A SPARQL Algebra operation.\n * * Test: \n * * Output: IActorQueryOperationOutput: A bindings stream.\n *\n * @see IActionQueryOperation\n * @see IQueryOperationResult\n */\nexport abstract class ActorQueryOperation extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n protected constructor(args: IActorQueryOperationArgs) {\n super(args);\n }\n\n /**\n * Safely cast a query operation output to a bindings output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBindings} A bindings query operation output.\n */\n public static getSafeBindings(output: IQueryOperationResult): IQueryOperationResultBindings {\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a quads output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultQuads} A quads query operation output.\n */\n public static getSafeQuads(output: IQueryOperationResult): IQueryOperationResultQuads {\n ActorQueryOperation.validateQueryOutput(output, 'quads');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a boolean output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBoolean} A boolean query operation output.\n */\n public static getSafeBoolean(output: IQueryOperationResult): IQueryOperationResultBoolean {\n ActorQueryOperation.validateQueryOutput(output, 'boolean');\n return output;\n }\n\n /**\n * Safely cast a query operation output to a void output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultVoid} A void query operation output.\n */\n public static getSafeVoid(output: IQueryOperationResult): IQueryOperationResultVoid {\n ActorQueryOperation.validateQueryOutput(output, 'void');\n return output;\n }\n\n /**\n * Throw an error if the output type does not match the expected type.\n * @param {IQueryOperationResult} output A query operation output.\n * @param {string} expectedType The expected output type.\n */\n public static validateQueryOutput(output: IQueryOperationResult, expectedType: IQueryOperationResult['type']): void {\n if (output.type !== expectedType) {\n throw new Error(`Invalid query output type: Expected '${expectedType}' but got '${output.type}'`);\n }\n }\n\n protected static getBaseExpressionContext(context: IActionContext): IBaseExpressionContext {\n const now: Date | undefined = context.get(KeysInitQuery.queryTimestamp);\n const baseIRI: string | undefined = context.get(KeysInitQuery.baseIRI);\n const functionArgumentsCache: FunctionArgumentsCache = context.get(KeysInitQuery.functionArgumentsCache) ?? {};\n\n // Handle two variants of providing extension functions\n if (context.has(KeysInitQuery.extensionFunctionCreator) && context.has(KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n let extensionFunctionCreator: ((functionNamedNode: RDF.NamedNode) =>\n ((args: RDF.Term[]) => Promise) | undefined) | undefined = context\n .get(KeysInitQuery.extensionFunctionCreator);\n // Convert dictionary-based variant to callback\n const extensionFunctions: (Record Promise>) | undefined = context\n .get(KeysInitQuery.extensionFunctions);\n if (extensionFunctions) {\n extensionFunctionCreator = functionNamedNode => extensionFunctions[functionNamedNode.value];\n }\n\n return { now, baseIRI, extensionFunctionCreator, functionArgumentsCache };\n }\n\n /**\n * Create an options object that can be used to construct a expression-evaluator synchronous evaluator.\n * @param context An action context.\n * @param _mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n public static getExpressionContext(context: IActionContext, _mediatorQueryOperation?: MediatorQueryOperation):\n ISyncExpressionContext {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input?: string) => new BlankNodeBindingsScoped(input ?? `BNODE_${bnodeCounter++}`),\n };\n }\n\n /**\n * Create an options object that can be used to construct a expression-evaluator asynchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation A query query operation mediator for resolving `exists`.\n * @param bindingsFactory The bindings factory.\n */\n public static getAsyncExpressionContext(\n context: IActionContext,\n mediatorQueryOperation: MediatorQueryOperation,\n bindingsFactory: BindingsFactory,\n ):\n IAsyncExpressionContext {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input?: string) => Promise.resolve(new BlankNodeBindingsScoped(input ?? `BNODE_${bnodeCounter++}`)),\n exists: ActorQueryOperation.createExistenceResolver(context, mediatorQueryOperation, bindingsFactory),\n };\n }\n\n /**\n * Create an existence resolver for usage within an expression context.\n * @param context An action context.\n * @param mediatorQueryOperation A query operation mediator.\n * @param bindingsFactory The bindings factory.\n */\n public static createExistenceResolver(\n context: IActionContext,\n mediatorQueryOperation: MediatorQueryOperation,\n bindingsFactory: BindingsFactory,\n ):\n (expr: Algebra.ExistenceExpression, bindings: Bindings) => Promise {\n return async(expr, bindings) => {\n const operation = materializeOperation(expr.input, bindings, bindingsFactory);\n\n const outputRaw = await mediatorQueryOperation.mediate({ operation, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n return expr.not !== ((await output.bindingsStream.take(1).toArray()).length === 1);\n };\n }\n\n /**\n * Throw an error if the context contains the readOnly flag.\n * @param context An action context.\n */\n public static throwOnReadOnly(context: IActionContext): void {\n if (context.get(KeysQueryOperation.readOnly)) {\n throw new Error(`Attempted a write operation in read-only mode`);\n }\n }\n\n /**\n * Obtain the query source attached to the given operation.\n * @param operation An algebra operation.\n */\n public static getOperationSource(operation: Algebra.Operation): IQuerySourceWrapper | undefined {\n return operation.metadata?.scopedSource;\n }\n\n /**\n * Assign a source wrapper to the given operation.\n * The operation is copied and returned.\n * @param operation An operation.\n * @param source A source wrapper.\n */\n public static assignOperationSource(operation: O, source: IQuerySourceWrapper): O {\n operation = { ...operation };\n operation.metadata = operation.metadata ? { ...operation.metadata } : {};\n operation.metadata.scopedSource = source;\n return operation;\n }\n\n /**\n * Remove the source wrapper from the given operation.\n * The operation is mutated.\n * @param operation An operation.\n */\n public static removeOperationSource(operation: Algebra.Operation): void {\n delete operation.metadata?.scopedSource;\n if (operation.metadata && Object.keys(operation.metadata).length === 0) {\n delete operation.metadata;\n }\n }\n\n /**\n * Check if the given shape accepts the given query operation.\n * @param shape A shape to test the query operation against.\n * @param operation A query operation to test.\n * @param options Additional options to consider.\n * @param options.joinBindings If additional bindings will be pushed down to the source for joining.\n * @param options.filterBindings If additional bindings will be pushed down to the source for filtering.\n */\n public static doesShapeAcceptOperation(\n shape: FragmentSelectorShape,\n operation: Algebra.Operation,\n options?: {\n joinBindings?: boolean;\n filterBindings?: boolean;\n },\n ): boolean {\n if (shape.type === 'conjunction') {\n return shape.children.every(child => ActorQueryOperation.doesShapeAcceptOperation(child, operation, options));\n }\n if (shape.type === 'disjunction') {\n return shape.children.some(child => ActorQueryOperation.doesShapeAcceptOperation(child, operation, options));\n }\n if (shape.type === 'arity') {\n return ActorQueryOperation.doesShapeAcceptOperation(shape.child, operation, options);\n }\n\n if ((options?.joinBindings && !shape.joinBindings) ?? (options?.filterBindings && !shape.filterBindings)) {\n return false;\n }\n\n if (shape.operation.operationType === 'type') {\n return shape.operation.type === 'project' || shape.operation.type === operation.type;\n }\n return shape.operation.pattern.type === operation.type;\n }\n}\n\nexport interface IActionQueryOperation extends IAction {\n /**\n * The query operation to handle.\n */\n operation: Algebra.Operation;\n}\n\nexport type IActorQueryOperationArgs = IActorArgs;\n\nexport type MediatorQueryOperation = Mediate;\n\nexport interface IBaseExpressionContext {\n now?: Date;\n baseIRI?: string;\n extensionFunctionCreator?: (functionNamedNode: RDF.NamedNode) =>\n ((args: RDF.Term[]) => Promise) | undefined;\n functionArgumentsCache?: FunctionArgumentsCache;\n}\n\nexport interface ISyncExpressionContext extends IBaseExpressionContext {\n bnode: (input?: string | undefined) => RDF.BlankNode;\n}\n\nexport interface IAsyncExpressionContext extends IBaseExpressionContext {\n bnode: (input?: string | undefined) => Promise;\n exists?: (expr: Algebra.ExistenceExpression, bindings: Bindings) => Promise;\n}\n","import { KeysInitQuery, KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { cachifyMetadata } from '@comunica/metadata';\nimport type {\n IQueryOperationResult,\n IPhysicalQueryPlanLogger,\n IActionContext,\n IMetadata,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { IActionQueryOperation, IActorQueryOperationArgs } from './ActorQueryOperation';\nimport { ActorQueryOperation } from './ActorQueryOperation';\n\n/**\n * A base implementation for query operation actors for a specific operation type.\n */\nexport abstract class ActorQueryOperationTyped extends ActorQueryOperation {\n public readonly operationName: string;\n\n protected constructor(args: IActorQueryOperationArgs, operationName: string) {\n super( { ...args, operationName });\n if (!this.operationName) {\n throw new Error('A valid \"operationName\" argument must be provided.');\n }\n }\n\n public async test(action: IActionQueryOperation): Promise {\n if (!action.operation) {\n throw new Error('Missing field \\'operation\\' in a query operation action.');\n }\n if (action.operation.type !== this.operationName) {\n throw new Error(`Actor ${this.name} only supports ${this.operationName} operations, but got ${\n action.operation.type}`);\n }\n const operation: O = action.operation;\n return this.testOperation(operation, action.context);\n }\n\n public async run(action: IActionQueryOperation): Promise {\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context\n .get(KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(\n action.operation.type,\n undefined,\n action.operation,\n action.context.get(KeysInitQuery.physicalQueryPlanNode),\n this.name,\n {},\n );\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n\n const operation: O = action.operation;\n const subContext = action.context.set(KeysQueryOperation.operation, operation);\n const output: IQueryOperationResult = await this.runOperation(operation, subContext);\n if ('metadata' in output) {\n output.metadata = \n cachifyMetadata, RDF.QuadTermName | RDF.Variable>(output.metadata);\n }\n return output;\n }\n\n protected abstract testOperation(operation: O, context: IActionContext): Promise;\n\n protected abstract runOperation(operation: O, context: IActionContext):\n Promise;\n}\n","import type { Algebra } from 'sparqlalgebrajs';\nimport type { IActorQueryOperationArgs, MediatorQueryOperation } from './ActorQueryOperation';\nimport { ActorQueryOperationTyped } from './ActorQueryOperationTyped';\n\n/**\n * A base implementation for query operation actors for a specific operation type that have a query operation mediator.\n */\nexport abstract class ActorQueryOperationTypedMediated extends ActorQueryOperationTyped\n implements IActorQueryOperationTypedMediatedArgs {\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs, operationName: string) {\n super(args, operationName);\n }\n}\n\nexport interface IActorQueryOperationTypedMediatedArgs extends IActorQueryOperationArgs {\n mediatorQueryOperation: MediatorQueryOperation;\n}\n","import type { IActorTest, IBusArgs } from '@comunica/core';\nimport { BusIndexed } from '@comunica/core';\nimport type { IQueryOperationResult } from '@comunica/types';\nimport type { ActorQueryOperation, IActionQueryOperation } from './ActorQueryOperation';\n\n/**\n * Indexed bus for query operations.\n */\nexport class BusQueryOperation\n extends BusIndexed {\n public constructor(args: IBusArgs) {\n super({\n ...args,\n actorIdentifierFields: [ 'operationName' ],\n actionIdentifierFields: [ 'operation', 'type' ],\n });\n }\n}\n","import { AsyncIterator, DESTINATION } from 'asynciterator';\n\ntype InternalSource =\n AsyncIterator & { [DESTINATION]?: AsyncIterator };\n\n/**\n * An AsyncIterator with a callback for when this iterator is closed in any way.\n * In contrast to ClosableTransformIterator, this does not add the overhead of a TransformIterator.\n */\nexport class ClosableIterator extends AsyncIterator {\n protected readonly _source: InternalSource;\n private readonly onClose: () => void;\n\n public constructor(source: AsyncIterator, options: { onClose: () => void }) {\n super();\n this.onClose = options.onClose;\n this._source = > source;\n\n // Wire up the source for reading\n this._source[DESTINATION] = this;\n this._source.on('end', destinationClose);\n this._source.on('error', destinationEmitError);\n this._source.on('readable', destinationSetReadable);\n this.readable = this._source.readable;\n }\n\n public override read(): S | null {\n const ret = this._source.read();\n if (!ret) {\n // Mark as non-readable if ret was null\n this.readable = false;\n\n // Close this iterator if the source is empty\n if (this._source.done) {\n this.close();\n }\n }\n return ret;\n }\n\n protected override _end(destroy: boolean): void {\n this.onClose();\n\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[DESTINATION];\n this._source.destroy();\n super._end(destroy);\n }\n}\n\n// Helpers below are copied from AsyncIterator, as they are not exported from there.\n\nfunction destinationSetReadable(this: InternalSource): void {\n this[DESTINATION]!.readable = true;\n}\nfunction destinationEmitError(this: InternalSource, error: Error): void {\n this[DESTINATION]!.emit('error', error);\n}\nfunction destinationClose(this: InternalSource): void {\n this[DESTINATION]!.close();\n}\n","import type { AsyncIterator, TransformIteratorOptions } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\n\ndeclare type MaybePromise = T | Promise;\ndeclare type SourceExpression = MaybePromise> | (() => MaybePromise>);\n\n/**\n * A TransformIterator with a callback for when this iterator is closed in any way.\n */\nexport class ClosableTransformIterator extends TransformIterator {\n private readonly onClose: () => void;\n\n public constructor(source: SourceExpression, options: TransformIteratorOptions & { onClose: () => void }) {\n super(source, options);\n this.onClose = options.onClose;\n }\n\n protected override _end(destroy: boolean): void {\n this.onClose();\n super._end(destroy);\n }\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for query-parse events.\n *\n * Actor types:\n * * Input: IActionSparqlParse: A SPARQL query string.\n * * Test: \n * * Output: IActorSparqlParseOutput: A parsed query in SPARQL query algebra.\n *\n * @see IActionQueryParse\n * @see IActorQueryParseOutput\n */\nexport abstract class ActorQueryParse extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryParseArgs) {\n super(args);\n }\n}\n\nexport interface IActionQueryParse extends IAction {\n /**\n * A query.\n */\n query: string;\n /**\n * The query format.\n */\n queryFormat?: RDF.QueryFormat;\n /**\n * The query's default base IRI.\n */\n baseIRI?: string;\n}\n\nexport interface IActorQueryParseOutput extends IActorOutput {\n /**\n * A parsed query in SPARQL algebra.\n */\n operation: Algebra.Operation;\n /**\n * An optionally overridden base IRI.\n */\n baseIRI?: string;\n}\n\nexport type IActorQueryParseArgs = IActorArgs;\n\nexport type MediatorQueryParse = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { QueryFormatType, IQueryExplained, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for query-process events.\n *\n * Actor types:\n * * Input: IActionQueryProcess: The input query to process.\n * * Test: \n * * Output: IActorQueryProcessOutput: Output of the query processing.\n *\n * @see IActionQueryProcess\n * @see IActorQueryProcessOutput\n */\nexport abstract class ActorQueryProcess extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryProcessArgs) {\n super(args);\n }\n}\n\nexport interface IActionQueryProcess extends IAction {\n /**\n * The query to process.\n */\n query: QueryFormatType;\n}\n\nexport interface IActorQueryProcessOutput extends IActorOutput {\n /**\n * Result of the query processing.\n */\n result: IQueryOperationResult | IQueryExplained;\n}\n\nexport type IActorQueryProcessArgs = IActorArgs<\nIActionQueryProcess,\nIActorTest,\nIActorQueryProcessOutput\n>;\n\nexport type MediatorQueryProcess = Mediate<\nIActionQueryProcess,\nIActorQueryProcessOutput\n>;\n\nexport interface IQueryProcessSequential {\n parse: (query: QueryFormatType, context: IActionContext) => Promise;\n optimize: (operation: Algebra.Operation, context: IActionContext) => Promise;\n evaluate: (operation: Algebra.Operation, context: IActionContext) => Promise;\n}\n\nexport interface IQueryProcessSequentialOutput {\n operation: Algebra.Operation;\n context: IActionContext;\n}\n","import type {\n IActionAbstractMediaTyped,\n IActionAbstractMediaTypedHandle,\n IActionAbstractMediaTypedMediaTypeFormats,\n IActionAbstractMediaTypedMediaTypes,\n IActorArgsMediaTyped,\n IActorOutputAbstractMediaTyped,\n IActorOutputAbstractMediaTypedHandle,\n IActorOutputAbstractMediaTypedMediaTypeFormats,\n IActorOutputAbstractMediaTypedMediaTypes,\n IActorTestAbstractMediaTyped,\n IActorTestAbstractMediaTypedHandle,\n IActorTestAbstractMediaTypedMediaTypeFormats,\n IActorTestAbstractMediaTypedMediaTypes,\n} from '@comunica/actor-abstract-mediatyped';\nimport {\n ActorAbstractMediaTyped,\n} from '@comunica/actor-abstract-mediatyped';\nimport type { IAction, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport type { IQueryOperationResultBase, IActionContext } from '@comunica/types';\n\n/**\n * A comunica actor for query-result-serialize events.\n *\n * Actor types:\n * * Input: IActionSparqlSerialize: SPARQL bindings or a quad stream.\n * * Test: \n * * Output: IActorQueryResultSerializeOutput: A text stream.\n *\n * @see IActionSparqlSerialize\n * @see IActorQueryResultSerializeOutput\n */\nexport abstract class ActorQueryResultSerialize\n extends ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryResultSerializeArgs) {\n super(args);\n }\n}\n\nexport type IActionRootQueryResultSerialize = IActionAbstractMediaTyped;\nexport type IActorTestRootQueryResultSerialize = IActorTestAbstractMediaTyped;\nexport type IActorOutputRootQueryResultSerialize = IActorOutputAbstractMediaTyped;\n\nexport type IActionQueryResultSerializeHandle = IActionAbstractMediaTypedHandle;\nexport type IActorTestQueryResultSerializeHandle = IActorTestAbstractMediaTypedHandle;\nexport type IActorOutputQueryResultSerializeHandle = IActorOutputAbstractMediaTypedHandle<\nIActorQueryResultSerializeOutput\n>;\n\nexport type IActionQueryResultSerializeMediaTypes = IActionAbstractMediaTypedMediaTypes;\nexport type IActorTestQueryResultSerializeMediaTypes = IActorTestAbstractMediaTypedMediaTypes;\nexport type IActorOutputQueryResultSerializeMediaTypes = IActorOutputAbstractMediaTypedMediaTypes;\n\nexport type IActionQueryResultSerializeMediaTypeFormats = IActionAbstractMediaTypedMediaTypeFormats;\nexport type IActorTestQueryResultSerializeMediaTypeFormats = IActorTestAbstractMediaTypedMediaTypeFormats;\nexport type IActorOutputQueryResultSerializeMediaTypeFormats = IActorOutputAbstractMediaTypedMediaTypeFormats;\n\nexport interface IActionSparqlSerialize extends IAction, IQueryOperationResultBase {\n context: IActionContext;\n}\n\nexport interface IActorQueryResultSerializeOutput extends IActorOutput {\n /**\n * A readable string stream in a certain SPARQL serialization that was serialized.\n */\n data: NodeJS.ReadableStream;\n}\n\nexport type IActorQueryResultSerializeArgs = IActorArgsMediaTyped<\nIActionSparqlSerialize,\nIActorTest,\nIActorQueryResultSerializeOutput\n>;\n\nexport type MediatorQueryResultSerializeHandle = Mediate<\nIActionQueryResultSerializeHandle,\nIActorOutputQueryResultSerializeHandle,\nIActorTestQueryResultSerializeHandle\n>;\n\nexport type MediatorQueryResultSerializeMediaTypes = Mediate<\nIActionQueryResultSerializeMediaTypes,\nIActorOutputQueryResultSerializeMediaTypes,\nIActorTestQueryResultSerializeMediaTypes\n>;\n\nexport type MediatorQueryResultSerializeMediaTypeFormats = Mediate<\n IActionQueryResultSerializeMediaTypeFormats,\nIActorOutputQueryResultSerializeMediaTypeFormats,\nIActorTestQueryResultSerializeMediaTypeFormats\n>;\n","import type { IActorArgsMediaTypedFixed } from '@comunica/actor-abstract-mediatyped';\nimport { ActorAbstractMediaTypedFixed } from '@comunica/actor-abstract-mediatyped';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeOutput,\n ActorQueryResultSerialize,\n} from './ActorQueryResultSerialize';\n\n/**\n * A base actor for listening to SPARQL serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionSparqlSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorQueryResultSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nexport abstract class ActorQueryResultSerializeFixedMediaTypes extends ActorAbstractMediaTypedFixed<\nIActionSparqlSerialize,\nIActorTest,\nIActorQueryResultSerializeOutput\n>\n implements IActorQueryResultSerializeFixedMediaTypesArgs, ActorQueryResultSerialize {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n public async testHandleChecked(_action: IActionSparqlSerialize, _context: IActionContext): Promise {\n return true;\n }\n}\n\nexport interface IActorQueryResultSerializeFixedMediaTypesArgs\n extends IActorArgsMediaTypedFixed {}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IQuerySourceWrapper, QuerySourceUnidentifiedExpanded } from '@comunica/types';\n\n/**\n * A comunica actor for query-source-identify events.\n *\n * Actor types:\n * * Input: IActionQuerySourceIdentify: An unidentified query source.\n * * Test: \n * * Output: IActorQuerySourceIdentifyOutput: An identified query source.\n *\n * @see IActionQuerySourceIdentify\n * @see IActorQuerySourceIdentifyOutput\n */\nexport abstract class ActorQuerySourceIdentify\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorQuerySourceIdentifyArgs) {\n super(args);\n }\n}\n\nexport interface IActionQuerySourceIdentify extends IAction {\n /**\n * An unidentified query source.\n */\n querySourceUnidentified: QuerySourceUnidentifiedExpanded;\n}\n\nexport interface IActorQuerySourceIdentifyOutput extends IActorOutput {\n /**\n * An identified query source.\n */\n querySource: IQuerySourceWrapper;\n}\n\nexport type IActorQuerySourceIdentifyArgs = IActorArgs<\nIActionQuerySourceIdentify,\nIActorTest,\nIActorQuerySourceIdentifyOutput\n>;\n\nexport type MediatorQuerySourceIdentify = Mediate<\nIActionQuerySourceIdentify,\nIActorQuerySourceIdentifyOutput\n>;\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { ClosableIterator } from '@comunica/bus-query-operation';\nimport { validateMetadataQuads } from '@comunica/metadata';\nimport type { BindingsStream, MetadataBindings, MetadataQuads, TermsOrder } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport type { QuadTermName } from 'rdf-terms';\nimport {\n forEachTermsNested,\n getTermsNested,\n getValueNestedPath,\n reduceTermsNested,\n someTerms,\n uniqTerms,\n} from 'rdf-terms';\nimport { matchPatternMappings } from 'rdf-terms/lib/QuadTermUtil';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * Convert an iterator of quads to an iterator of bindings.\n * @param quads The quads to convert.\n * @param pattern The pattern to get variables from to determine bindings.\n * All quads are also assumed to match the pattern.\n * @param bindingsFactory The factory for creating bindings.\n * @param unionDefaultGraph If union default graph mode is enabled.\n * If true, variable graphs will match all graphs, including the default graph.\n * If false, variable graphs will only match named graphs, and not the default graph.\n */\nexport function quadsToBindings(\n quads: AsyncIterator,\n pattern: Algebra.Pattern,\n bindingsFactory: BindingsFactory,\n unionDefaultGraph: boolean,\n): BindingsStream {\n const variables = getVariables(pattern);\n\n // If non-default-graph triples need to be filtered out\n const filterNonDefaultQuads = pattern.graph.termType === 'Variable' && !unionDefaultGraph;\n\n // Detect duplicate variables in the pattern\n const duplicateElementLinks: Record | undefined = getDuplicateElementLinks(pattern);\n\n // Convenience datastructure for mapping quad elements to variables\n const elementVariables: Record = reduceTermsNested(\n pattern,\n (acc: Record, term: RDF.Term, keys: QuadTermName[]) => {\n if (term.termType === 'Variable') {\n acc[keys.join('_')] = term.value;\n }\n return acc;\n },\n {},\n );\n\n // Optionally filter, and construct bindings\n let filteredOutput = quads;\n\n // SPARQL query semantics allow graph variables to only match with named graphs, excluding the default graph\n // But this is not the case when using union default graph semantics\n if (filterNonDefaultQuads) {\n filteredOutput = filteredOutput.filter(quad => quad.graph.termType !== 'DefaultGraph');\n }\n\n // If there are duplicate variables in the search pattern,\n // make sure that we filter out the triples that don't have equal values for those triple elements,\n // as the rdf-resolve-quad-pattern bus ignores variable names.\n if (duplicateElementLinks) {\n filteredOutput = filteredOutput.filter((quad) => {\n for (const keyLeft in duplicateElementLinks) {\n const keysLeft: QuadTermName[] = keyLeft.split('_');\n const valueLeft = getValueNestedPath(quad, keysLeft);\n for (const keysRight of duplicateElementLinks[keyLeft]) {\n if (!valueLeft.equals(getValueNestedPath(quad, keysRight))) {\n return false;\n }\n }\n }\n return true;\n });\n }\n\n // Wrap it in a ClosableIterator, so we can propagate destroy calls\n const it = new ClosableIterator(filteredOutput.map(quad => bindingsFactory\n .bindings(Object.keys(elementVariables).map((key) => {\n const keys: QuadTermName[] = key.split('_');\n const variable = elementVariables[key];\n const term = getValueNestedPath(quad, keys);\n return [ DF.variable(variable), term ];\n }))), {\n onClose: () => quads.destroy(),\n });\n\n // Set the metadata property\n setMetadata(it, quads, elementVariables, variables, filterNonDefaultQuads || Boolean(duplicateElementLinks));\n\n return it;\n}\n\n/**\n * Check if a term is a variable.\n * @param {RDF.Term} term An RDF term.\n * @return {any} If the term is a variable or blank node.\n */\nexport function isTermVariable(term: RDF.Term): term is RDF.Variable {\n return term.termType === 'Variable';\n}\n\n/**\n * Get all variables in the given pattern.\n * No duplicates are returned.\n * @param {RDF.BaseQuad} pattern A quad pattern.\n */\nexport function getVariables(pattern: RDF.BaseQuad): RDF.Variable[] {\n return uniqTerms(getTermsNested(pattern).filter(isTermVariable));\n}\n\n/**\n * A helper function to find a hash with quad elements that have duplicate variables.\n *\n * @param {RDF.Quad} pattern A quad pattern.\n *\n * @return {{[p: string]: string[]}} If no equal variable names are present in the four terms, this returns undefined.\n * Otherwise, this maps quad elements paths (['subject'], ['predicate'], ['object'],\n * ['graph'])\n * to the list of quad elements it shares a variable name with.\n * For quoted triples, paths such as ['subject', 'object'] may occur.\n * If no links for a certain element exist, this element will\n * not be included in the hash.\n * Note 1: Quad elements will never have a link to themselves.\n * So this can never occur: { subject: [[ 'subject']] },\n * instead 'null' would be returned.\n * Note 2: Links only exist in one direction,\n * this means that { subject: [[ 'predicate']], predicate: [[ 'subject' ]] }\n * will not occur, instead only { subject: [[ 'predicate']] }\n * will be returned.\n * Note 3: Keys can also be paths, but they are delimited by '_', such as:\n * { subject_object_subject: [[ 'predicate']] }\n */\nexport function getDuplicateElementLinks(pattern: RDF.BaseQuad): Record | undefined {\n // Collect a variable to quad elements mapping.\n const variableElements: Record = {};\n let duplicateVariables = false;\n forEachTermsNested(pattern, (value, keys) => {\n if (value.termType === 'Variable') {\n const val = termToString(value);\n const length = (variableElements[val] || (variableElements[val] = [])).push(keys);\n duplicateVariables = duplicateVariables || length > 1;\n }\n });\n\n if (!duplicateVariables) {\n return;\n }\n\n // Collect quad element to elements with equal variables mapping.\n const duplicateElementLinks: Record = {};\n for (const variable in variableElements) {\n const elements = variableElements[variable];\n const remainingElements = elements.slice(1);\n // Only store the elements that have at least one equal element.\n if (remainingElements.length > 0) {\n duplicateElementLinks[elements[0].join('_')] = remainingElements;\n }\n }\n\n return duplicateElementLinks;\n}\n\n/**\n * Set the metadata of the bindings stream derived from the metadata of the quads stream.\n *\n * @param {BindingsStream} bindings The bindings stream that will receive the metadata property.\n * @param {AsyncIterator} quads The quads stream that is guaranteed to emit the metadata property.\n * @param elementVariables Mapping of quad term name to variable name.\n * @param variables Variables to include in the metadata\n * @param forceEstimateCardinality Set the cardinality to estimate\n * @return {() => Promise<{[p: string]: any}>} A lazy promise behind a callback resolving to a metadata object.\n */\nexport function setMetadata(\n bindings: BindingsStream,\n quads: AsyncIterator,\n elementVariables: Record,\n variables: RDF.Variable[],\n forceEstimateCardinality: boolean,\n): void {\n const getMetadataCb = (metadataRaw: Record): void => {\n if (!('canContainUndefs' in metadataRaw)) {\n metadataRaw.canContainUndefs = false;\n }\n if (forceEstimateCardinality) {\n metadataRaw.cardinality.type = 'estimate';\n }\n bindings.setProperty(\n 'metadata',\n quadsMetadataToBindingsMetadata(validateMetadataQuads(metadataRaw), elementVariables, variables),\n );\n\n // Propagate metadata invalidations\n if (metadataRaw.state) {\n metadataRaw.state.addInvalidateListener(() => {\n setMetadata(bindings, quads, elementVariables, variables, forceEstimateCardinality);\n });\n }\n };\n\n const metadata = quads.getProperty('metadata');\n if (metadata) {\n // This is to enforce sync metadata setting, because AsyncIterator will always call it async,\n // even if the property was already defined.\n getMetadataCb(metadata);\n } else {\n quads.getProperty('metadata', getMetadataCb);\n }\n}\n\n/**\n * Convert the metadata of quads to the metadata of bindings.\n * @param metadataQuads Quads metadata.\n * @param elementVariables A mapping from quad elements to variables.\n * @param variables The variables in the bindings.\n */\nexport function quadsMetadataToBindingsMetadata(\n metadataQuads: MetadataQuads,\n elementVariables: Record,\n variables: RDF.Variable[],\n): MetadataBindings {\n return {\n ...metadataQuads,\n canContainUndefs: false,\n order: metadataQuads.order ?\n quadsOrderToBindingsOrder(metadataQuads.order, elementVariables) :\n undefined,\n availableOrders: metadataQuads.availableOrders ?\n metadataQuads.availableOrders.map(orderDef => ({\n cost: orderDef.cost,\n terms: quadsOrderToBindingsOrder(orderDef.terms, elementVariables),\n })) :\n undefined,\n variables,\n };\n}\n\n/**\n * Convert the quads order metadata element to a bindings order metadata element.\n * @param quadsOrder Quads order.\n * @param elementVariables A mapping from quad elements to variables.\n */\nexport function quadsOrderToBindingsOrder(\n quadsOrder: TermsOrder,\n elementVariables: Record,\n): TermsOrder {\n const mappedVariables: Record = {};\n return > quadsOrder.map((entry) => {\n // Omit entries that do not map to a variable\n const variableName = elementVariables[entry.term];\n if (!variableName) {\n // eslint-disable-next-line array-callback-return\n return;\n }\n\n // Omit entries that have been mapped already\n if (mappedVariables[variableName]) {\n // eslint-disable-next-line array-callback-return\n return;\n }\n\n mappedVariables[variableName] = true;\n return {\n term: DF.variable(variableName),\n direction: entry.direction,\n };\n }).filter(Boolean);\n}\n\n/**\n * Perform post-match-filtering if the source does not support quoted triple filtering,\n * but we have a variable inside a quoted triple.\n * @param pattern The current quad pattern operation.\n * @param it The iterator to filter.\n */\nexport function filterMatchingQuotedQuads(pattern: RDF.BaseQuad, it: AsyncIterator): AsyncIterator {\n if (someTerms(pattern, term => term.termType === 'Quad')) {\n it = it.filter(quad => matchPatternMappings(quad, pattern));\n }\n return it;\n}\n","import type { IAction, IActorArgs, IActorOutput, Mediate, IActorTest } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IJoinEntryWithMetadata } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-join-entries-sort events.\n *\n * Actor types:\n * * Input: IActionRdfJoinEntriesSort: Join entries.\n * * Test: IActorTest: Test result.\n * * Output: IActorRdfJoinEntriesSortOutput: The sorted join entries.\n *\n * @see IActionRdfJoinEntriesSort\n * @see IActorTest\n * @see IActorRdfJoinEntriesSortOutput\n */\nexport abstract class ActorRdfJoinEntriesSort\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfJoinEntriesSortArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfJoinEntriesSort extends IAction {\n /**\n * The array of streams to join.\n */\n entries: IJoinEntryWithMetadata[];\n}\n\nexport interface IActorRdfJoinEntriesSortOutput extends IActorOutput {\n /**\n * The array of sorted streams.\n */\n entries: IJoinEntryWithMetadata[];\n}\n\nexport type IActorRdfJoinEntriesSortArgs = IActorArgs<\nIActionRdfJoinEntriesSort,\nIActorTest,\nIActorRdfJoinEntriesSortOutput\n>;\n\nexport type MediatorRdfJoinEntriesSort = Mediate<\nIActionRdfJoinEntriesSort,\nIActorRdfJoinEntriesSortOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IMediatorTypeAccuracy } from '@comunica/mediatortype-accuracy';\nimport type { IJoinEntry } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-join-selectivity events.\n *\n * Actor types:\n * * Input: IActionRdfJoinSelectivity: Join entries.\n * * Test: IMediatorTypeAccuracy: The accuracy of the selectivity calculator.\n * * Output: IActorRdfJoinSelectivityOutput: The calculated join selectivity.\n *\n * @see IActionRdfJoinSelectivity\n * @see IActorRdfJoinSelectivityTest\n * @see IActorRdfJoinSelectivityOutput\n */\nexport abstract class ActorRdfJoinSelectivity\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfJoinSelectivityArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfJoinSelectivity extends IAction {\n /**\n * The array of streams to join.\n */\n entries: IJoinEntry[];\n}\n\nexport interface IActorRdfJoinSelectivityOutput extends IActorOutput {\n /**\n * A selectivity factor in the range [0, 1].\n * A value close to 1 indicates a low selectivity,\n * which means that the operations in the join entries are highly unrelated.\n * A value close to 0 indicates a high selectivity,\n * which means that the operations in the join entries are highly related, and have a high chance of reducing .\n */\n selectivity: number;\n}\n\nexport type IActorRdfJoinSelectivityArgs = IActorArgs<\nIActionRdfJoinSelectivity,\nIMediatorTypeAccuracy,\nIActorRdfJoinSelectivityOutput\n>;\n\nexport type MediatorRdfJoinSelectivity = Mediate<\nIActionRdfJoinSelectivity,\nIActorRdfJoinSelectivityOutput,\nIMediatorTypeAccuracy\n>;\n","import type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type {\n MediatorRdfJoinSelectivity,\n} from '@comunica/bus-rdf-join-selectivity';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IAction, IActorArgs, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { cachifyMetadata, MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQueryOperationResultBindings,\n MetadataBindings,\n IPhysicalQueryPlanLogger,\n Bindings,\n IActionContext,\n IJoinEntry,\n IJoinEntryWithMetadata,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { instrumentIterator } from './instrumentIterator';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica actor for joining 2 binding streams.\n *\n * Actor types:\n * * Input: IActionRdfJoin: The streams that need to be joined.\n * * Test: IMediatorTypeJoinCoefficients: Join coefficients.\n * * Output: IActorRdfJoinOutput: The resulting joined stream.\n *\n * @see IActionRdfJoin\n * @see IActorQueryOperationOutput\n */\nexport abstract class ActorRdfJoin\n extends Actor {\n public readonly mediatorJoinSelectivity: MediatorRdfJoinSelectivity;\n\n /**\n * If this actor will be logged in the debugger and physical query plan logger\n */\n public includeInLogs = true;\n public readonly logicalType: LogicalJoinType;\n public readonly physicalName: string;\n /**\n * Can be used by subclasses to indicate the max or min number of streams that can be joined.\n * 0 for infinity.\n * By default, this indicates the max number, but can be inverted by setting limitEntriesMin to true.\n */\n protected readonly limitEntries: number;\n /**\n * If true, the limitEntries field is a lower limit,\n * otherwise, it is an upper limit.\n */\n protected readonly limitEntriesMin: boolean;\n /**\n * If this actor can handle undefs in the bindings.\n */\n protected readonly canHandleUndefs: boolean;\n /**\n * If this join operator will not invoke any other join or query operations below,\n * and can therefore be considered a leaf of the join plan.\n */\n protected readonly isLeaf: boolean;\n /**\n * If this join operator must only be used for join entries with (at least partially) common variables.\n */\n protected readonly requiresVariableOverlap?: boolean;\n\n /**\n * @param args - @defaultNested { a } bus\n * @param options - Actor-specific join options.\n */\n public constructor(args: IActorRdfJoinArgs, options: IActorRdfJoinInternalOptions) {\n super(args);\n this.logicalType = options.logicalType;\n this.physicalName = options.physicalName;\n this.limitEntries = options.limitEntries ?? Number.POSITIVE_INFINITY;\n this.limitEntriesMin = options.limitEntriesMin ?? false;\n this.canHandleUndefs = options.canHandleUndefs ?? false;\n this.isLeaf = options.isLeaf ?? true;\n this.requiresVariableOverlap = options.requiresVariableOverlap ?? false;\n }\n\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This can cause clashes for equal terms.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string} A hash string.\n */\n public static hash(bindings: Bindings, variables: RDF.Variable[]): string {\n return variables\n .map((variable) => {\n const term = bindings.get(variable);\n if (term) {\n return term.value;\n }\n return '';\n })\n .join('');\n }\n\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This is guaranteed to not produce clashing bindings for unequal terms.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string} A hash string.\n */\n public static hashNonClashing(bindings: RDF.Bindings, variables: RDF.Variable[]): string {\n return variables\n .map((variable) => {\n const term = bindings.get(variable);\n if (term) {\n return termToString(term);\n }\n return '';\n })\n .join('');\n }\n\n /**\n * Returns an array containing all the variable names that occur in all bindings streams.\n * @param {MetadataBindings[]} metadatas An array of optional metadata objects for the entries.\n * @returns {RDF.Variable[]} An array of variables.\n */\n public static overlappingVariables(metadatas: MetadataBindings[]): RDF.Variable[] {\n const variables = metadatas.map(metadata => metadata.variables);\n let baseArray = variables[0];\n for (const array of variables.slice(1)) {\n baseArray = baseArray.filter(el => array.some(value => value.value === el.value));\n }\n return baseArray;\n }\n\n /**\n * Returns the variables that will occur in the joined bindings.\n * @param {MetadataBindings[]} metadatas An array of metadata objects for the entries.\n * @returns {RDF.Variable[]} An array of joined variables.\n */\n public static joinVariables(metadatas: MetadataBindings[]): RDF.Variable[] {\n return [ ...new Set(metadatas.flatMap(metadata => metadata.variables.map(variable => variable.value))) ]\n .map(variable => DF.variable(variable));\n }\n\n /**\n * Returns the result of joining bindings, or `null` if no join is possible.\n * @param {Bindings[]} bindings\n * @returns {Bindings}\n */\n\n public static joinBindings(...bindings: Bindings[]): Bindings | null {\n if (bindings.length === 0) {\n return null;\n }\n if (bindings.length === 1) {\n return bindings[0];\n }\n\n let acc: Bindings = bindings[0];\n for (const binding of bindings.slice(1)) {\n const merged = acc.merge(binding);\n if (!merged) {\n return null;\n }\n acc = merged;\n }\n return acc;\n }\n\n /**\n * Get the estimated number of items from the given metadata.\n * @param {Record} metadata A metadata object.\n * @return {number} The estimated number of items, or `Infinity` if cardinality is falsy.\n */\n public static getCardinality(metadata: MetadataBindings): RDF.QueryResultCardinality {\n return metadata.cardinality;\n }\n\n /**\n * Obtain the metadata from all given join entries.\n * @param entries Join entries.\n */\n public static async getMetadatas(entries: IJoinEntry[]): Promise {\n return await Promise.all(entries.map(entry => entry.output.metadata()));\n }\n\n /**\n * Obtain the join entries witt metadata from all given join entries.\n * @param entries Join entries.\n */\n public static async getEntriesWithMetadatas(entries: IJoinEntry[]): Promise {\n const metadatas = await ActorRdfJoin.getMetadatas(entries);\n return entries.map((entry, i) => ({ ...entry, metadata: metadatas[i] }));\n }\n\n /**\n * Calculate the time to initiate a request for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public static getRequestInitialTimes(metadatas: MetadataBindings[]): number[] {\n return metadatas.map(metadata => metadata.pageSize ? 0 : metadata.requestTime ?? 0);\n }\n\n /**\n * Calculate the time to receive a single item for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public static getRequestItemTimes(metadatas: MetadataBindings[]): number[] {\n return metadatas\n .map(metadata => metadata.pageSize ? (metadata.requestTime ?? 0) / metadata.pageSize : 0);\n }\n\n /**\n * Construct a metadata validation state for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n public constructState(metadatas: MetadataBindings[]): MetadataValidationState {\n // Propagate metadata invalidations\n const state = new MetadataValidationState();\n const invalidateListener = (): void => state.invalidate();\n for (const metadata of metadatas) {\n metadata.state.addInvalidateListener(invalidateListener);\n }\n return state;\n }\n\n /**\n * Helper function to create a new metadata object for the join result.\n * For required metadata entries that are not provided, sane defaults are calculated.\n * @param entries Join entries.\n * @param metadatas Metadata of the join entries.\n * @param context The action context.\n * @param partialMetadata Partial metadata entries.\n * @param optional If metadata for an optional operation must be calculated.\n */\n public async constructResultMetadata(\n entries: IJoinEntry[],\n metadatas: MetadataBindings[],\n context: IActionContext,\n partialMetadata: Partial = {},\n optional = false,\n ): Promise {\n let cardinalityJoined: RDF.QueryResultCardinality;\n if (partialMetadata.cardinality) {\n cardinalityJoined = partialMetadata.cardinality;\n } else {\n cardinalityJoined = metadatas\n .reduce((acc: RDF.QueryResultCardinality, metadata) => {\n const cardinalityThis = ActorRdfJoin.getCardinality(metadata);\n return {\n type: cardinalityThis.type === 'estimate' ? 'estimate' : acc.type,\n value: acc.value * (optional ? Math.max(1, cardinalityThis.value) : cardinalityThis.value),\n };\n }, { type: 'exact', value: 1 });\n cardinalityJoined.value *= (await this.mediatorJoinSelectivity.mediate({ entries, context })).selectivity;\n }\n\n return {\n state: this.constructState(metadatas),\n ...partialMetadata,\n cardinality: {\n type: cardinalityJoined.type,\n value: cardinalityJoined.value,\n },\n canContainUndefs: partialMetadata.canContainUndefs ?? metadatas.some(metadata => metadata.canContainUndefs),\n variables: ActorRdfJoin.joinVariables(metadatas),\n };\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {MediatorRdfJoinEntriesSort} mediatorJoinEntriesSort A mediator for sorting join entries.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public static async sortJoinEntries(\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort,\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n // If there is a stream that can contain undefs, we don't modify the join order.\n const canContainUndefs = entries.some(entry => entry.metadata.canContainUndefs);\n if (canContainUndefs) {\n return entries;\n }\n\n // Calculate number of occurrences of each variable\n const variableOccurrences: Record = {};\n for (const entry of entries) {\n for (const variable of entry.metadata.variables) {\n let counter = variableOccurrences[variable.value];\n if (!counter) {\n counter = 0;\n }\n variableOccurrences[variable.value] = ++counter;\n }\n }\n\n // Determine variables that occur in at least two join entries\n const multiOccurrenceVariables: string[] = [];\n for (const [ variable, count ] of Object.entries(variableOccurrences)) {\n if (count >= 2) {\n multiOccurrenceVariables.push(variable);\n }\n }\n\n // Reject if no entries have common variables\n if (multiOccurrenceVariables.length === 0) {\n throw new Error(`Bind join can only join entries with at least one common variable`);\n }\n\n // Determine entries without common variables\n // These will be placed in the back of the sorted array\n const entriesWithoutCommonVariables: IJoinEntryWithMetadata[] = [];\n for (const entry of entries) {\n let hasCommon = false;\n for (const variable of entry.metadata.variables) {\n if (multiOccurrenceVariables.includes(variable.value)) {\n hasCommon = true;\n break;\n }\n }\n if (!hasCommon) {\n entriesWithoutCommonVariables.push(entry);\n }\n }\n\n return (await mediatorJoinEntriesSort.mediate({ entries, context })).entries\n .sort((entryLeft, entryRight) => {\n // Sort to make sure that entries without common variables come last in the array.\n // For all other entries, the original order is kept.\n const leftWithoutCommonVariables = entriesWithoutCommonVariables.includes(entryLeft);\n const rightWithoutCommonVariables = entriesWithoutCommonVariables.includes(entryRight);\n if (leftWithoutCommonVariables === rightWithoutCommonVariables) {\n return 0;\n }\n return leftWithoutCommonVariables ?\n 1 :\n -1;\n });\n }\n\n /**\n * Default test function for join actors.\n * Checks whether all iterators have metadata.\n * If yes: call the abstract getIterations method, if not: return Infinity.\n * @param {IActionRdfJoin} action The input action containing the relevant iterators\n * @returns {Promise} The join coefficients.\n */\n public async test(action: IActionRdfJoin): Promise {\n // Validate logical join type\n if (action.type !== this.logicalType) {\n throw new Error(`${this.name} can only handle logical joins of type '${this.logicalType}', while '${action.type}' was given.`);\n }\n\n // Don't allow joining of one or zero streams\n if (action.entries.length <= 1) {\n throw new Error(`${this.name} requires at least two join entries.`);\n }\n\n // Check if this actor can handle the given number of streams\n if (this.limitEntriesMin ? action.entries.length < this.limitEntries : action.entries.length > this.limitEntries) {\n throw new Error(`${this.name} requires ${this.limitEntries\n } join entries at ${this.limitEntriesMin ? 'least' : 'most'\n }. The input contained ${action.entries.length}.`);\n }\n\n // Check if all streams are bindings streams\n for (const entry of action.entries) {\n if (entry.output.type !== 'bindings') {\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`Invalid type of a join entry: Expected 'bindings' but got '${entry.output.type}'`);\n }\n }\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Check if this actor can handle undefs\n if (!this.canHandleUndefs) {\n for (const metadata of metadatas) {\n if (metadata.canContainUndefs) {\n throw new Error(`Actor ${this.name} can not join streams containing undefs`);\n }\n }\n }\n\n // This actor only works with common variables\n if (this.requiresVariableOverlap && ActorRdfJoin.overlappingVariables(metadatas).length === 0) {\n throw new Error(`Actor ${this.name} can only join entries with at least one common variable`);\n }\n\n return await this.getJoinCoefficients(action, metadatas);\n }\n\n /**\n * Returns default input for 0 or 1 entries. Calls the getOutput function otherwise\n * @param {IActionRdfJoin} action\n * @returns {Promise} A bindings result.\n */\n public async run(action: IActionRdfJoin): Promise {\n // Prepare logging to physical plan\n // This must be called before getOutput, because we need to override the plan node in the context\n let parentPhysicalQueryPlanNode;\n if (action.context.has(KeysInitQuery.physicalQueryPlanLogger)) {\n parentPhysicalQueryPlanNode = action.context.get(KeysInitQuery.physicalQueryPlanNode);\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action);\n }\n\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context.get(KeysInitQuery\n .physicalQueryPlanLogger);\n let planMetadata: any;\n if (this.includeInLogs && physicalQueryPlanLogger) {\n planMetadata = {};\n // Stash non-join children, as they will be unstashed later in sub-joins.\n physicalQueryPlanLogger.stashChildren(\n parentPhysicalQueryPlanNode,\n node => node.logicalOperator.startsWith('join'),\n );\n physicalQueryPlanLogger.logOperation(\n `join-${this.logicalType}`,\n this.physicalName,\n action,\n parentPhysicalQueryPlanNode,\n this.name,\n planMetadata,\n );\n }\n\n // Get action output\n const { result, physicalPlanMetadata } = await this.getOutput(action);\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Fill in the physical plan metadata after determining action output\n if (planMetadata) {\n // eslint-disable-next-line ts/no-floating-promises\n instrumentIterator(result.bindingsStream)\n .then((counters) => {\n physicalQueryPlanLogger!.appendMetadata(action, {\n cardinalityReal: counters.count,\n timeSelf: counters.timeSelf,\n timeLife: counters.timeLife,\n });\n });\n\n Object.assign(planMetadata, physicalPlanMetadata);\n const cardinalities = metadatas.map(ActorRdfJoin.getCardinality);\n planMetadata.cardinalities = cardinalities;\n planMetadata.joinCoefficients = await this.getJoinCoefficients(action, metadatas);\n\n // If this is a leaf operation, include join entries in plan metadata.\n if (this.isLeaf) {\n for (let i = 0; i < action.entries.length; i++) {\n const entry = action.entries[i];\n physicalQueryPlanLogger!.unstashChild(\n entry.operation,\n action,\n );\n physicalQueryPlanLogger!.appendMetadata(entry.operation, { cardinality: cardinalities[i] });\n }\n }\n }\n\n // Cache metadata\n result.metadata = cachifyMetadata(result.metadata);\n\n return result;\n }\n\n /**\n * Returns the resulting output for joining the given entries.\n * This is called after removing the trivial cases in run.\n * @param {IActionRdfJoin} action\n * @returns {Promise}\n */\n protected abstract getOutput(action: IActionRdfJoin): Promise;\n\n /**\n * Calculate the join coefficients.\n * @param {IActionRdfJoin} action Join action\n * @param metadatas Array of resolved metadata objects.\n * @returns {IMediatorTypeJoinCoefficients} The join coefficient estimates.\n */\n protected abstract getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise;\n}\n\nexport interface IActorRdfJoinArgs\n extends IActorArgs {\n mediatorJoinSelectivity: MediatorRdfJoinSelectivity;\n}\n\nexport interface IActorRdfJoinInternalOptions {\n /**\n * The logical join type this actor can handle.\n */\n logicalType: LogicalJoinType;\n /**\n * The physical name of join operation this actor implements.\n * This is used for debug and query plan logs.\n */\n physicalName: string;\n /**\n * Can be used by subclasses to indicate the max or min number of streams that can be joined.\n * 0 for infinity.\n * By default, this indicates the max number, but can be inverted by setting limitEntriesMin to true.\n */\n limitEntries?: number;\n /**\n * If true, the limitEntries field is a lower limit,\n * otherwise, it is an upper limit.\n * Defaults to false.\n */\n limitEntriesMin?: boolean;\n /**\n * If this actor can handle undefs in the bindings.\n * Defaults to false.\n */\n canHandleUndefs?: boolean;\n /**\n * If this join operator will not invoke any other join or query operations below,\n * and can therefore be considered a leaf of the join plan.\n * Defaults to true.\n */\n isLeaf?: boolean;\n /**\n * If this join operator must only be used for join entries with (at least partially) common variables.\n */\n requiresVariableOverlap?: boolean;\n}\n\n/**\n * Represents a logical join type.\n */\nexport type LogicalJoinType = 'inner' | 'optional' | 'minus';\n\nexport interface IActionRdfJoin extends IAction {\n /**\n * The logical join type.\n */\n type: LogicalJoinType;\n /**\n * The array of streams to join.\n */\n entries: IJoinEntry[];\n}\n\nexport interface IActorRdfJoinOutputInner {\n /**\n * The join result.\n */\n result: IQueryOperationResultBindings;\n /**\n * Optional metadata that will be included as metadata within the physical query plan output.\n */\n physicalPlanMetadata?: any;\n}\n\nexport type MediatorRdfJoin = Mediate;\n","import type { AsyncIterator, TransformIteratorOptions } from 'asynciterator';\nimport { ArrayIterator, TransformIterator } from 'asynciterator';\n\n/**\n * Splits an iterator into chunks based on a given block size.\n */\nexport class ChunkedIterator extends TransformIterator> {\n protected readonly blockSize: number;\n protected chunk: T[] = [];\n\n public constructor(source: AsyncIterator, blockSize: number, options?: TransformIteratorOptions) {\n super(source, options);\n this.blockSize = blockSize;\n }\n\n protected consumeChunkAsIterator(): AsyncIterator {\n const it = new ArrayIterator(this.chunk, { autoStart: false });\n this.chunk = [];\n return it;\n }\n\n protected override _transform(item: T, done: () => void, push: (i: AsyncIterator) => void): void {\n this.chunk.push(item);\n if (this.chunk.length >= this.blockSize) {\n push(this.consumeChunkAsIterator());\n }\n done();\n }\n\n protected override _flush(done: () => void): void {\n if (this.chunk.length > 0) {\n this._push(this.consumeChunkAsIterator());\n }\n super._flush(done);\n }\n}\n","import type { AsyncIterator } from 'asynciterator';\n\nexport type IteratorCounters = {\n /**\n * The total time spent within `_read` and `read`.\n */\n timeSelf: number;\n /**\n * The time between creation and ending.\n */\n timeLife: number;\n /**\n * The number of elements produced.\n */\n count: number;\n};\n\n/**\n * Profile an iterator by monkey-patching its `_read` and `read` methods.\n * @param iterator\n */\nexport function instrumentIterator(iterator: AsyncIterator): Promise {\n const counters: IteratorCounters = {\n count: 0,\n timeSelf: 0,\n timeLife: 0,\n };\n instrumentIteratorInner(iterator, counters, true);\n return new Promise((resolve) => {\n iterator.on('end', () => {\n resolve(counters);\n });\n });\n}\n\nfunction instrumentIteratorInner(\n iterator: AsyncIterator,\n counter: { timeSelf: number; timeLife: number; count: number },\n top: boolean,\n): void {\n if (!('_profileInstrumented' in iterator)) {\n // Only patch an iterator once.\n (iterator)._profileInstrumented = true;\n\n // Patch _read\n if ('_read' in iterator) {\n const readOld: any = iterator._read;\n iterator._read = (count: number, done: () => void) => {\n const startTime = performance.now();\n readOld.call(iterator, count, () => {\n counter.timeSelf += performance.now() - startTime;\n done();\n });\n };\n }\n\n // Patch read\n if ('read' in iterator) {\n // eslint-disable-next-line ts/unbound-method\n const readOld: any = iterator.read;\n iterator.read = () => {\n const startTime = performance.now();\n const ret = readOld.call(iterator);\n if (top && ret) {\n counter.count++;\n }\n counter.timeSelf += performance.now() - startTime;\n return ret;\n };\n }\n\n // Measure total time\n if (top) {\n const startTime = performance.now();\n iterator.on('end', () => {\n counter.timeLife = performance.now() - startTime;\n });\n }\n\n // Also patch children\n if ('_source' in iterator) {\n instrumentIteratorInner(iterator._source, counter, false);\n }\n }\n}\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { MetadataBindings } from '@comunica/types';\n\n/**\n * A comunica actor for rdf-metadata-accumulate events.\n *\n * Actor types:\n * * Input: IActionRdfMetadataAccumulate: The metadata objects to accumulate,\n * or a trigger for initializing a new value.\n * * Test: \n * * Output: IActorRdfMetadataAccumulateOutput: The accumulated metadata object.\n *\n * @see IActionRdfMetadataAccumulate\n * @see IActorRdfMetadataAccumulateOutput\n */\nexport abstract class ActorRdfMetadataAccumulate\n extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n}\n\nexport type IActionRdfMetadataAccumulate = IActionRdfMetadataAccumulateInitialize | IActionRdfMetadataAccumulateAppend;\n\nexport interface IActionRdfMetadataAccumulateInitialize extends IAction {\n /**\n * Indicates that metadata fields should be initialized to default values.\n */\n mode: 'initialize';\n}\n\nexport interface IActionRdfMetadataAccumulateAppend extends IAction {\n /**\n * Indicates that metadata fields should be accumulated.\n * The initialize step is guaranteed to have been called before this on the `accumulatedMetadata` object.\n */\n mode: 'append';\n /**\n * The metadata object that already has some accumulated fields.\n * This object should not be mutated.\n */\n accumulatedMetadata: MetadataBindings;\n /**\n * The metadata object with fields to append.\n * This object should not be mutated.\n */\n appendingMetadata: MetadataBindings;\n}\n\nexport interface IActorRdfMetadataAccumulateOutput extends IActorOutput {\n /**\n * The initialized or accumulated metadata object.\n * This should only contain those fields that are applicable to this actor.\n */\n metadata: Partial;\n}\n\nexport type IActorRdfMetadataAccumulateArgs = IActorArgs<\nIActionRdfMetadataAccumulate,\nIActorTest,\nIActorRdfMetadataAccumulateOutput\n>;\n\nexport type MediatorRdfMetadataAccumulate = Mediate<\nIActionRdfMetadataAccumulate,\nIActorRdfMetadataAccumulateOutput\n>;\n","import type {\n IActionAbstractMediaTyped,\n IActorArgsMediaTyped,\n IActorTestAbstractMediaTyped,\n IActorOutputAbstractMediaTypedHandle,\n IActionAbstractMediaTypedHandle,\n IActionAbstractMediaTypedMediaTypeFormats,\n IActionAbstractMediaTypedMediaTypes,\n IActorOutputAbstractMediaTypedMediaTypeFormats,\n IActorOutputAbstractMediaTypedMediaTypes,\n IActorTestAbstractMediaTypedHandle,\n IActorTestAbstractMediaTypedMediaTypeFormats,\n IActorTestAbstractMediaTypedMediaTypes,\n} from '@comunica/actor-abstract-mediatyped';\nimport {\n ActorAbstractMediaTyped,\n} from '@comunica/actor-abstract-mediatyped';\nimport type { IAction, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica actor for RDF parse events.\n *\n * Actor types:\n * * Input: IActionRdfSerialize: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutput: The serialized quads.\n *\n * @see IActionRdfSerialize\n * @see IActorRdfSerializeOutput\n */\nexport abstract class ActorRdfSerialize extends\n ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfSerializeArgs) {\n super(args);\n }\n}\n\nexport type IActionRootRdfSerialize = IActionAbstractMediaTyped;\nexport type IActorTestRootRdfSerialize = IActorTestAbstractMediaTyped;\nexport type IActorOutputRootRdfSerialize = IActorOutputAbstractMediaTypedHandle;\n\nexport type IActionRdfSerializeHandle = IActionAbstractMediaTypedHandle;\nexport type IActorTestRdfSerializeHandle = IActorTestAbstractMediaTypedHandle;\nexport type IActorOutputRdfSerializeHandle = IActorOutputAbstractMediaTypedHandle;\n\nexport type IActionRdfSerializeMediaTypes = IActionAbstractMediaTypedMediaTypes;\nexport type IActorTestRdfSerializeMediaTypes = IActorTestAbstractMediaTypedMediaTypes;\nexport type IActorOutputRdfSerializeMediaTypes = IActorOutputAbstractMediaTypedMediaTypes;\n\nexport type IActionRdfSerializeMediaTypeFormats = IActionAbstractMediaTypedMediaTypeFormats;\nexport type IActorTestRdfSerializeMediaTypeFormats = IActorTestAbstractMediaTypedMediaTypeFormats;\nexport type IActorOutputRdfSerializeMediaTypeFormats = IActorOutputAbstractMediaTypedMediaTypeFormats;\n\nexport interface IActionRdfSerialize extends IAction {\n /**\n * The stream of quads.\n */\n quadStream: RDF.Stream;\n}\n\nexport interface IActorRdfSerializeOutput extends IActorOutput {\n /**\n * A readable string stream in a certain RDF serialization that was serialized.\n */\n data: NodeJS.ReadableStream;\n /**\n * An optional field indicating if the given output stream uses a triple-based serialization,\n * in which everything is serialized in the default graph.\n * If falsy, the quad stream contain actual quads, otherwise they should be interpreted as triples.\n */\n triples?: boolean;\n}\n\nexport type IActorRdfSerializeArgs = IActorArgsMediaTyped;\n\nexport type MediatorRdfSerializeHandle = Mediate<\nIActionRdfSerializeHandle,\nIActorOutputRdfSerializeHandle,\nIActorTestRdfSerializeHandle\n>;\n\nexport type MediatorRdfSerialize = Mediate<\nIActionRootRdfSerialize,\nIActorOutputRootRdfSerialize,\nIActorTestRootRdfSerialize\n>;\n\nexport type MediatorRdfSerializeMediaTypes = Mediate<\nIActionRdfSerializeMediaTypes,\nIActorOutputRdfSerializeMediaTypes,\nIActorTestRdfSerializeMediaTypes\n>;\n\nexport type MediatorRdfSerializeMediaTypeFormats = Mediate<\nIActionRdfSerializeMediaTypeFormats,\nIActorOutputRdfSerializeMediaTypeFormats,\nIActorTestRdfSerializeMediaTypeFormats\n>;\n","import type { IActorArgsMediaTypedFixed } from '@comunica/actor-abstract-mediatyped';\nimport { ActorAbstractMediaTypedFixed } from '@comunica/actor-abstract-mediatyped';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionRdfSerialize, IActorRdfSerializeOutput, ActorRdfSerialize } from './ActorRdfSerialize';\n\n/**\n * A base actor for listening to RDF serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRdfSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nexport abstract class ActorRdfSerializeFixedMediaTypes extends ActorAbstractMediaTypedFixed<\nIActionRdfSerialize,\nIActorTest,\nIActorRdfSerializeOutput\n>\n implements IActorRdfSerializeFixedMediaTypesArgs, ActorRdfSerialize {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfSerializeFixedMediaTypesArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n public async testHandleChecked(): Promise {\n return true;\n }\n}\n\nexport type IActorRdfSerializeFixedMediaTypesArgs = IActorArgsMediaTypedFixed<\nIActionRdfSerialize,\nIActorTest,\nIActorRdfSerializeOutput\n>;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\n\n/**\n * A comunica actor for rdf-update-quads events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateQuads: Quad insertion and deletion streams.\n * * Test: \n * * Output: IActorRdfUpdateQuadsOutput: A promise resolving when the update operation is done.\n *\n * @see IActionRdfUpdateQuads\n * @see IActorRdfUpdateQuadsOutput\n */\nexport abstract class ActorRdfUpdateQuads extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfUpdateQuadsArgs) {\n super(args);\n }\n}\n\nexport interface IActionRdfUpdateQuads extends IAction {\n /**\n * An optional stream of quads to insert.\n */\n quadStreamInsert?: AsyncIterator;\n /**\n * An optional stream of quads to delete.\n */\n quadStreamDelete?: AsyncIterator;\n /**\n * An optional deletion of graphs.\n */\n deleteGraphs?: {\n /**\n * The graph(s) in which all triples must be removed.\n */\n graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n /**\n * If true, and the graph does not exist, an error must be emitted.\n *\n * Should only be considered on destinations that record empty graphs.\n */\n requireExistence: boolean;\n /**\n * If the graph itself should also be dropped.\n * Should not happen on the 'DEFAULT' graph.\n *\n * Should only be considered on destinations that record empty graphs.\n */\n dropGraphs: boolean;\n };\n /**\n * An optional creation of (empty) graphs.\n */\n createGraphs?: {\n /**\n * The graph names to create.\n */\n graphs: RDF.NamedNode[];\n /**\n * If true, an error MUST be thrown when the graph already exists.\n *\n * For destinations that do not record empty graphs,\n * this should only throw if at least one quad with the given quad already exists.\n */\n requireNonExistence: boolean;\n };\n}\n\nexport interface IActorRdfUpdateQuadsOutput extends IActorOutput {\n /**\n * Async function that resolves when the update operation is done.\n */\n execute: () => Promise;\n}\n\nexport type IActorRdfUpdateQuadsArgs = IActorArgs;\n\nexport type MediatorRdfUpdateQuads = Mediate;\n","import { deskolemizeQuad } from '@comunica/actor-context-preprocess-query-source-skolemize';\nimport { KeysQuerySourceIdentify, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { IActionRdfUpdateQuads, IActorRdfUpdateQuadsOutput } from './ActorRdfUpdateQuads';\nimport { ActorRdfUpdateQuads } from './ActorRdfUpdateQuads';\nimport type { IQuadDestination } from './IQuadDestination';\n\nexport function deskolemizeStream(stream: AsyncIterator | undefined, id: string):\nAsyncIterator | undefined {\n return stream?.map(quad => deskolemizeQuad(quad, id));\n}\n\nexport function deskolemize(action: IActionRdfUpdateQuads): IActionRdfUpdateQuads {\n const destination = action.context.get(KeysRdfUpdateQuads.destination);\n const id = action.context.get>(KeysQuerySourceIdentify.sourceIds)?.get(destination);\n if (!id) {\n return action;\n }\n return {\n ...action,\n quadStreamInsert: deskolemizeStream(action.quadStreamInsert, id),\n quadStreamDelete: deskolemizeStream(action.quadStreamDelete, id),\n };\n}\n\n/**\n * A base implementation for rdf-update-quads events\n * that wraps around an {@link IQuadDestination}.\n *\n * @see IQuadDestination\n */\nexport abstract class ActorRdfUpdateQuadsDestination extends ActorRdfUpdateQuads {\n public async test(_action: IActionRdfUpdateQuads): Promise {\n return true;\n }\n\n public async run(action: IActionRdfUpdateQuads): Promise {\n const destination = await this.getDestination(action.context);\n return await this.getOutput(destination, deskolemize(action));\n }\n\n /**\n * Get the output of the given action on a destination.\n * @param {IQuadDestination} destination A quad destination, possibly lazy.\n * @param {IActionRdfUpdateQuads} action The action.\n */\n protected async getOutput(\n destination: IQuadDestination,\n action: IActionRdfUpdateQuads,\n ): Promise {\n const execute = async(): Promise => {\n await (action.quadStreamDelete ? destination.delete(action.quadStreamDelete) : Promise.resolve());\n await (action.deleteGraphs ?\n destination.deleteGraphs(\n action.deleteGraphs.graphs,\n action.deleteGraphs.requireExistence,\n action.deleteGraphs.dropGraphs,\n ) :\n Promise.resolve());\n await (action.createGraphs ?\n destination.createGraphs(action.createGraphs.graphs, action.createGraphs.requireNonExistence) :\n Promise.resolve());\n await (action.quadStreamInsert ? destination.insert(action.quadStreamInsert) : Promise.resolve());\n };\n return { execute };\n }\n\n /**\n * Get a destination instance for the given context.\n * @param {ActionContext} context Optional context data.\n * @return {Promise} A promise that resolves to a destination.\n */\n protected abstract getDestination(context: IActionContext): Promise;\n}\n","import { ActionContextKey, CONTEXT_KEY_LOGGER } from '@comunica/core';\nimport type {\n Bindings,\n IPhysicalQueryPlanLogger,\n QueryExplainMode,\n IProxyHandler,\n ICliArgsHandler,\n IDataDestination,\n MetadataBindings,\n FunctionArgumentsCache,\n IAggregatedStore,\n QuerySourceUnidentified,\n IQuerySourceWrapper,\n QuerySourceReference,\n IStatisticBase,\n IDiscoverEventData,\n ILink,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { IDocumentLoader } from 'jsonld-context-parser';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * When adding entries to this file, also add a shortcut for them in the contextKeyShortcuts TSDoc comment in\n * ActorInitQueryBase in @comunica/actor-init-query if it makes sense to use this entry externally.\n * Also, add this shortcut to IQueryContextCommon in @comunica/types.\n */\n\nexport const KeysCore = {\n // We create the core context keys in @comunica/core to avoid a cyclic dependency\n /**\n * A logger instance.\n */\n log: CONTEXT_KEY_LOGGER,\n};\n\nexport const KeysHttp = {\n /**\n * Include credentials flags.\n */\n includeCredentials: new ActionContextKey('@comunica/bus-http:include-credentials'),\n /**\n * Authentication for a source as a \"username:password\"-pair.\n */\n auth: new ActionContextKey('@comunica/bus-http:auth'),\n /**\n * Fetch function implementation.\n */\n fetch: new ActionContextKey('@comunica/bus-http:fetch'),\n /**\n * HTTP request timeout in milliseconds.\n */\n httpTimeout: new ActionContextKey('@comunica/bus-http:http-timeout'),\n /**\n * Makes the HTTP timeout not only apply until the response starts streaming in\n * but until the response is fully consumed.\n */\n httpBodyTimeout: new ActionContextKey('@comunica/bus-http:http-body-timeout'),\n /**\n * Number of retries to make on failed network calls. This only takes effect\n * on errors thrown during the initial fetch() call and not while streaming the body.\n */\n httpRetryCount: new ActionContextKey('@comunica/bus-http:http-retry-count'),\n /**\n * Delay in milliseconds to wait between fetch retries. Requires httpRetryCount to be set.\n */\n httpRetryDelay: new ActionContextKey('@comunica/bus-http:http-retry-delay'),\n /**\n * Retry fetch, if server replies with a 5xx error response. Requires httpRetryCount to be set.\n */\n httpRetryOnServerError: new ActionContextKey('@comunica/bus-http:http-retry-on-server-error'),\n};\n\nexport const KeysHttpWayback = {\n /**\n * Use the WayBack machine to get the most recent representation of a file if a link is broken.\n * @default false\n */\n recoverBrokenLinks: new ActionContextKey('@comunica/bus-http:recover-broken-links'),\n};\n\nexport const KeysHttpMemento = {\n /**\n * The desired datetime for Memento datetime-negotiation.\n */\n datetime: new ActionContextKey('@comunica/actor-http-memento:datetime'),\n};\n\nexport const KeysHttpProxy = {\n /**\n * Interface.\n */\n httpProxyHandler: new ActionContextKey('@comunica/actor-http-proxy:httpProxyHandler'),\n};\n\nexport const KeysInitQuery = {\n /**\n * The unidentified sources to query over.\n */\n querySourcesUnidentified: new ActionContextKey(\n '@comunica/actor-init-query:querySourcesUnidentified',\n ),\n /**\n * Variables that have to be pre-bound to values in the query.\n */\n initialBindings: new ActionContextKey('@comunica/actor-init-query:initialBindings'),\n /**\n * The provided query's format.\n * Defaults to { language: 'sparql', version: '1.1' }\n */\n queryFormat: new ActionContextKey('@comunica/actor-init-query:queryFormat'),\n /**\n * Which GraphQL bindings should be singularized.\n */\n graphqlSingularizeVariables: new ActionContextKey('@comunica/actor-init-query:singularizeVariables'),\n /**\n * If HTTP and parsing failures are ignored.\n */\n lenient: new ActionContextKey('@comunica/actor-init-query:lenient'),\n /**\n * The original query string.\n */\n queryString: new ActionContextKey('@comunica/actor-init-query:queryString'),\n /**\n * The original parsed query.\n */\n query: new ActionContextKey('@comunica/actor-init-query:query'),\n /**\n * The query's base IRI.\n */\n baseIRI: new ActionContextKey('@comunica/actor-init-query:baseIRI'),\n /**\n * Object to cache function argument overload resolutions.\n * Defaults to an object that is reused across query executions.\n */\n functionArgumentsCache: new ActionContextKey(\n '@comunica/actor-init-query:functionArgumentsCache',\n ),\n /**\n * A timestamp representing the current time.\n * This is required for certain SPARQL operations such as NOW().\n */\n queryTimestamp: new ActionContextKey('@comunica/actor-init-query:queryTimestamp'),\n /**\n * @range {functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined}\n * Extension function creator for a given function IRI.\n * Returned value should be an async function implementation.\n * Undefined may be returned if no implementation exists for the given function IRI.\n *\n * The dictionary-based extensionFunctions context entry may be used instead, but not simultaneously.\n */\n extensionFunctionCreator: new ActionContextKey<\n (functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined\n >('@comunica/actor-init-query:extensionFunctionCreator'),\n /**\n * Dictionary of extension functions.\n * Key is the IRI of the function, and value is the async function implementation.\n *\n * The callback-based extensionFunctionCreator context entry may be used instead, but not simultaneously.\n */\n extensionFunctions: new ActionContextKey<\n Record Promise>\n >('@comunica/actor-init-query:extensionFunctions'),\n /**\n * Enables manipulation of the CLI arguments and their processing.\n */\n cliArgsHandlers: new ActionContextKey('@comunica/actor-init-query:cliArgsHandlers'),\n /**\n * Explain mode of the query. Can be 'parsed', 'logical', 'physical', or 'physical-json'.\n */\n explain: new ActionContextKey('@comunica/actor-init-query:explain'),\n /**\n * Logs the used physical operators\n */\n physicalQueryPlanLogger: new ActionContextKey(\n '@comunica/actor-init-query:physicalQueryPlanLogger',\n ),\n /**\n * The current physical operator within the query plan.\n * This is used to pass parent-child relationships for invoking the query plan logger.\n */\n physicalQueryPlanNode: new ActionContextKey('@comunica/actor-init-query:physicalQueryPlanNode'),\n /**\n * A JSON-LD context\n */\n jsonLdContext: new ActionContextKey('@context'),\n /**\n * A boolean value denoting whether caching is disabled or not.\n */\n noCache: new ActionContextKey('@comunica/actor-init-query:noCache'),\n /**\n * A boolean value denoting whether results should be deduplicated or not.\n */\n distinctConstruct: new ActionContextKey('@comunica/actor-init-query:distinctConstruct'),\n};\n\nexport const KeysQueryOperation = {\n /**\n * Context entry for the current query operation.\n */\n operation: new ActionContextKey('@comunica/bus-query-operation:operation'),\n /**\n * @type {any} The metadata from the left streams within a join operation.\n */\n joinLeftMetadata: new ActionContextKey('@comunica/bus-query-operation:joinLeftMetadata'),\n /**\n * An array of metadata from the right streams within a join operation.\n */\n joinRightMetadatas: new ActionContextKey('@comunica/bus-query-operation:joinRightMetadatas'),\n /**\n * Indicates the bindings that were used to bind the operation.\n */\n joinBindings: new ActionContextKey('@comunica/bus-query-operation:joinBindings'),\n /**\n * Flag for indicating that only read operations are allowed, defaults to false.\n */\n readOnly: new ActionContextKey('@comunica/bus-query-operation:readOnly'),\n /**\n * An internal context entry to mark that a property path with arbitrary length and a distinct key is being processed.\n */\n isPathArbitraryLengthDistinctKey: new ActionContextKey(\n '@comunica/bus-query-operation:isPathArbitraryLengthDistinct',\n ),\n /**\n * An indicator that the stream will be limited to the given number of elements afterwards.\n */\n limitIndicator: new ActionContextKey('@comunica/bus-query-operation:limitIndicator'),\n /**\n * If the default graph should also contain the union of all named graphs.\n */\n unionDefaultGraph: new ActionContextKey('@comunica/bus-query-operation:unionDefaultGraph'),\n /**\n * The sources to query over.\n */\n querySources: new ActionContextKey('@comunica/bus-query-operation:querySources'),\n};\n\nexport const KeysRdfParseJsonLd = {\n /**\n * @range {IDocumentLoader}\n */\n documentLoader: new ActionContextKey('@comunica/actor-rdf-parse-jsonld:documentLoader'),\n /**\n * @range {boolean}\n */\n strictValues: new ActionContextKey('@comunica/actor-rdf-parse-jsonld:strictValues'),\n /**\n * @range {Record}\n */\n parserOptions: new ActionContextKey>('@comunica/actor-rdf-parse-jsonld:parserOptions'),\n};\n\nexport const KeysRdfParseHtmlScript = {\n /**\n * An internal context flag to determine if the engine is already processing an HTML script tag.\n */\n processingHtmlScript: new ActionContextKey('@comunica/actor-rdf-parse-html-script:processingHtmlScript'),\n /**\n * If all HTML script tags must be considered.\n */\n extractAllScripts: new ActionContextKey('extractAllScripts'),\n};\n\nexport const KeysQuerySourceIdentify = {\n /**\n * A map containing unique IDs for each source\n */\n sourceIds: new ActionContextKey>(\n '@comunica/bus-query-source-identify:sourceIds',\n ),\n /**\n * Hypermedia sources mapping to their aggregated store.\n */\n hypermediaSourcesAggregatedStores: new ActionContextKey>(\n '@comunica/bus-query-source-identify:hypermediaSourcesAggregatedStores',\n ),\n /**\n * If links may be traversed from this source.\n * This means that sources annotated with this flag are considered incomplete until all links have been traversed.\n */\n traverse: new ActionContextKey('@comunica/bus-query-source-identify:traverse'),\n};\n\nexport const KeysRdfUpdateQuads = {\n /**\n * A data destination.\n */\n destination: new ActionContextKey('@comunica/bus-rdf-update-quads:destination'),\n};\n\nexport const KeysMergeBindingsContext = {\n /**\n * The data sources required to produce the binding\n */\n sourcesBinding: new ActionContextKey('@comunica/bus-merge-bindings-context:sourcesBinding'),\n};\n\nexport const KeysRdfJoin = {\n /**\n * The last physical join actor that was executed.\n */\n lastPhysicalJoin: new ActionContextKey('@comunica/bus-rdf-join:lastPhysicalJoin'),\n};\n\nexport const KeysStatistics = {\n /**\n * All discovered links during query execution. Not all of them will necessarily be dereferenced.\n */\n discoveredLinks: new ActionContextKey>(\n '@comunica/bus-context-preprocess:discoveredLinks',\n ),\n /**\n * Information about what links are dereferenced and when\n */\n dereferencedLinks: new ActionContextKey>(\n '@comunica/bus-context-preprocess:dereferencedLinks',\n ),\n};\n","import type { IActionContext, IActionContextKey } from '@comunica/types';\nimport { Map } from 'immutable';\n\n/**\n * Implementation of {@link IActionContext} using Immutable.js.\n */\nexport class ActionContext implements IActionContext {\n private readonly map: Map;\n\n public constructor(data: Record = {}) {\n this.map = Map(data);\n }\n\n /**\n * Will only set the value if the key is not already set.\n */\n public setDefault(key: IActionContextKey, value: V): IActionContext {\n return this.has(key) ? this : this.set(key, value);\n }\n\n public set(key: IActionContextKey, value: V): IActionContext {\n return this.setRaw(key.name, value);\n }\n\n public setRaw(key: string, value: any): IActionContext {\n return new ActionContext(this.map.set(key, value));\n }\n\n public delete(key: IActionContextKey): IActionContext {\n return new ActionContext(this.map.delete(key.name));\n }\n\n public get(key: IActionContextKey): V | undefined {\n return this.getRaw(key.name);\n }\n\n public getRaw(key: string): any | undefined {\n return this.map.get(key);\n }\n\n public getSafe(key: IActionContextKey): V {\n if (!this.has(key)) {\n throw new Error(`Context entry ${key.name} is required but not available`);\n }\n return this.get(key);\n }\n\n public has(key: IActionContextKey): boolean {\n return this.hasRaw(key.name);\n }\n\n public hasRaw(key: string): boolean {\n return this.map.has(key);\n }\n\n public merge(...contexts: IActionContext[]): IActionContext {\n // eslint-disable-next-line ts/no-this-alias\n let context: IActionContext = this;\n for (const source of contexts) {\n for (const key of source.keys()) {\n context = context.set(key, source.get(key));\n }\n }\n return context;\n }\n\n public keys(): IActionContextKey[] {\n return [ ... this.map.keys() ]\n .map(keyName => new ActionContextKey(keyName));\n }\n\n public toJS(): any {\n return this.map.toJS();\n }\n\n public toString(): string {\n return `ActionContext(${JSON.stringify(this.map.toJS())})`;\n }\n\n public [Symbol.for('nodejs.util.inspect.custom')](): string {\n return `ActionContext(${JSON.stringify(this.map.toJS(), null, ' ')})`;\n }\n\n /**\n * Convert the given object to an action context object if it is not an action context object yet.\n * If it already is an action context object, return the object as-is.\n * @param maybeActionContext An action context or record.\n * @return {ActionContext} An action context object.\n */\n public static ensureActionContext(maybeActionContext?: IActionContext | Record): IActionContext {\n return maybeActionContext instanceof ActionContext ?\n maybeActionContext :\n new ActionContext(Map(maybeActionContext ?? {}));\n }\n}\n\n/**\n * Simple implementation of {@link IActionContextKey}.\n */\nexport class ActionContextKey implements IActionContextKey {\n /**\n * A unique context key name.\n */\n public readonly name: string;\n\n public constructor(name: string) {\n this.name = name;\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { Bus } from './Bus';\n\n/**\n * An ActionObserver can passively listen to {@link Actor#run} inputs and outputs for all actors on a certain bus.\n *\n * ActionObserver should not edit inputs and outputs,\n * they should be considered immutable.\n *\n * @see Actor\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class ActionObserver {\n public readonly name: string;\n public readonly bus: Bus, I, IActorTest, O>;\n\n /**\n * All enumerable properties from the `args` object are inherited to this observer.\n *\n * The observer will NOT automatically subscribe to the given bus when this constructor is called.\n *\n * @param {IActionObserverArgs} args Arguments object\n * @throws When required arguments are missing.\n */\n protected constructor(args: IActionObserverArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n public abstract onRun(actor: Actor, action: I, output: Promise): void;\n}\n\nexport interface IActionObserverArgs {\n\n /**\n * The name for this observer.\n * @default {}\n */\n name: string;\n\n /**\n * The bus this observer can subscribe to.\n */\n bus: Bus, I, IActorTest, O>;\n}\n","import type { IActionContext, Logger } from '@comunica/types';\nimport type { Bus } from './Bus';\nimport { CONTEXT_KEY_LOGGER } from './ContextEntries';\n\n/**\n * An actor can act on messages of certain types and provide output of a certain type.\n *\n * The flow of an actor is as follows:\n * 1. Send a message to {@link Actor#test} to test if an actor can run that action.\n * 2. If the actor can reply to the message, let the actor run the action using {@link Actor#run}.\n *\n * An actor is typically subscribed to a bus,\n * using which the applicability to an action can be tested.\n *\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class Actor implements\n IActorArgs {\n public readonly name: string;\n public readonly bus: Bus, I, T, O>;\n public readonly beforeActors: Actor[] = [];\n\n /**\n * All enumerable properties from the `args` object are inherited to this actor.\n *\n * The actor will subscribe to the given bus when this constructor is called.\n *\n * @param {IActorArgs} args Arguments object\n * @param {string} args.name The name for this actor.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this actor subscribes to.\n * @throws When required arguments are missing.\n */\n protected constructor(args: IActorArgs) {\n Object.assign(this, args);\n this.bus.subscribe(this);\n if (this.beforeActors.length > 0) {\n this.bus.addDependencies(this, this.beforeActors);\n }\n }\n\n /**\n * Get the logger from the given context.\n * @param {ActionContext} context An optional context.\n * @return {Logger} The logger or undefined.\n */\n public static getContextLogger(context: IActionContext): Logger | undefined {\n return context.get(CONTEXT_KEY_LOGGER);\n }\n\n /**\n * Check if this actor can run the given action,\n * without actually running it.\n *\n * @param {I} action The action to test.\n * @return {Promise} A promise that resolves to the test result.\n */\n public abstract test(action: I): Promise;\n\n /**\n * Run the given action on this actor.\n *\n * In most cases, this method should not be called directly.\n * Instead, {@link #runObservable} should be called.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n public abstract run(action: I): Promise;\n\n /**\n * Run the given action on this actor\n * AND invokes the {@link Bus#onRun} method.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n public runObservable(action: I): Promise {\n const output: Promise = this.run(action);\n this.bus.onRun(this, action, output);\n return output;\n }\n\n /**\n * Initialize this actor.\n * This should be used for doing things that take a while,\n * such as opening files.\n *\n * @return {Promise} A promise that resolves when the actor has been initialized.\n */\n public async initialize(): Promise {\n return true;\n }\n\n /**\n * Deinitialize this actor.\n * This should be used for cleaning up things when the application is shut down,\n * such as closing files and removing temporary files.\n *\n * @return {Promise} A promise that resolves when the actor has been deinitialized.\n */\n public async deinitialize(): Promise {\n return true;\n }\n\n /* Proxy methods for the (optional) logger that is defined in the context */\n\n protected getDefaultLogData(context: IActionContext, data?: (() => any)): any {\n const dataActual = data ? data() : {};\n dataActual.actor = this.name;\n return dataActual;\n }\n\n protected logTrace(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.trace(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logDebug(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.debug(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logInfo(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.info(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logWarn(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.warn(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logError(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.error(message, this.getDefaultLogData(context, data));\n }\n }\n\n protected logFatal(context: IActionContext, message: string, data?: (() => any)): void {\n const logger: Logger | undefined = Actor.getContextLogger(context);\n if (logger) {\n logger.fatal(message, this.getDefaultLogData(context, data));\n }\n }\n}\n\nexport interface IActorArgs {\n /**\n * The name for this actor.\n * @default {}\n */\n name: string;\n /**\n * The bus this actor subscribes to.\n */\n bus: Bus, I, T, O>;\n /**\n * Actor that must be registered in the bus before this actor.\n */\n beforeActors?: Actor[];\n}\n\n/**\n * Data interface for the type of action.\n */\nexport interface IAction {\n /**\n * The input context that is passed through by actors.\n */\n context: IActionContext;\n}\n\n/**\n * Data interface for the type of an actor test result.\n */\nexport interface IActorTest {\n\n}\n\n/**\n * Data interface for the type of an actor run result.\n */\nexport interface IActorOutput {\n\n}\n","import type { ActionObserver } from './ActionObserver';\nimport type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\n\n/**\n * A publish-subscribe bus for sending actions to actors\n * to test whether or not they can run an action.\n *\n * This bus does not run the action itself,\n * for that a {@link Mediator} can be used.\n *\n * @see Actor\n * @see Mediator\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport class Bus, I extends IAction, T extends IActorTest, O extends IActorOutput> implements\n IBusArgs {\n public readonly name: string;\n protected readonly actors: A[] = [];\n protected readonly observers: ActionObserver[] = [];\n // Mapping from dependency (after) to dependents (before)\n protected readonly dependencyLinks: Map = new Map();\n\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n public constructor(args: IBusArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Subscribe the given actor to the bus.\n * After this, the given actor can be unsubscribed from the bus by calling {@link Bus#unsubscribe}.\n *\n * An actor that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {A} actor The actor to subscribe.\n */\n public subscribe(actor: A): void {\n this.actors.push(actor);\n this.reorderForDependencies();\n }\n\n /**\n * Subscribe the given observer to the bus.\n * After this, the given observer can be unsubscribed from the bus by calling {@link Bus#unsubscribeObserver}.\n *\n * An observer that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {ActionObserver} observer The observer to subscribe.\n */\n public subscribeObserver(observer: ActionObserver): void {\n this.observers.push(observer);\n }\n\n /**\n * Unsubscribe the given actor from the bus.\n *\n * An actor that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {A} actor The actor to unsubscribe\n * @return {boolean} If the given actor was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n public unsubscribe(actor: A): boolean {\n const index: number = this.actors.indexOf(actor);\n if (index >= 0) {\n this.actors.splice(index, 1);\n return true;\n }\n return false;\n }\n\n /**\n * Unsubscribe the given observer from the bus.\n *\n * An observer that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {ActionObserver} observer The observer to unsubscribe.\n * @return {boolean} If the given observer was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n public unsubscribeObserver(observer: ActionObserver): boolean {\n const index: number = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n return true;\n }\n return false;\n }\n\n /**\n * Publish an action to all actors in the bus to test if they can run the action.\n *\n * @param {I} action An action to publish\n * @return {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]}\n * An array of reply objects. Each object contains a reference to the actor,\n * and a promise to its {@link Actor#test} result.\n */\n public publish(action: I): IActorReply[] {\n return this.actors.map((actor: A): IActorReply => ({ actor, reply: actor.test(action) }));\n }\n\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n public onRun(actor: Actor, action: I, output: Promise): void {\n for (const observer of this.observers) {\n observer.onRun(actor, action, output);\n }\n }\n\n /**\n * Indicate that the given actor has the given actor dependencies.\n *\n * This will ensure that the given actor will be present in the bus *before* the given dependencies.\n *\n * @param {A} dependent A dependent actor that will be placed before the given actors.\n * @param {A[]} dependencies Actor dependencies that will be placed after the given actor.\n */\n public addDependencies(dependent: A, dependencies: A[]): void {\n for (const dependency of dependencies) {\n let existingDependencies = this.dependencyLinks.get(dependency);\n if (!existingDependencies) {\n existingDependencies = [];\n this.dependencyLinks.set(dependency, existingDependencies);\n }\n existingDependencies.push(dependent);\n }\n this.reorderForDependencies();\n }\n\n /**\n * Reorder the bus based on all present dependencies.\n */\n public reorderForDependencies(): void {\n if (this.dependencyLinks.size > 0) {\n const actorsAfter = [];\n\n // Temporarily remove all actors that have dependencies\n for (const actorAfter of this.dependencyLinks.keys()) {\n const dependentPos = this.actors.indexOf(actorAfter);\n if (dependentPos >= 0) {\n this.actors.splice(dependentPos, 1);\n actorsAfter.push(actorAfter);\n }\n }\n\n // Iteratively append actors based on the first dependency link\n // that has all of its dependencies available in the array\n while (actorsAfter.length > 0) {\n // Find the first actor that has all of its dependencies available.\n let activeActorAfterId = -1;\n for (let i = 0; i < actorsAfter.length; i++) {\n let validLink = true;\n for (const dependency of this.dependencyLinks.get(actorsAfter[i])!) {\n if (!this.actors.includes(dependency) && actorsAfter.includes(dependency)) {\n validLink = false;\n break;\n }\n }\n if (validLink) {\n activeActorAfterId = i;\n break;\n }\n }\n\n // If none of the pending links are possible, there must be a cyclic dependency\n if (activeActorAfterId < 0) {\n throw new Error(`Cyclic dependency links detected in bus ${this.name}`);\n }\n\n // The dependent may not be available (yet), so we don't add it to the array (yet).\n const activeActorAfter = actorsAfter.splice(activeActorAfterId, 1)[0];\n this.actors.push(activeActorAfter);\n }\n }\n }\n}\n\nexport interface IBusArgs {\n /**\n * The name for this bus.\n * @default {}\n */\n name: string;\n}\n\n/**\n * Data interface for holding an actor and a promise to a reply from that actor.\n */\nexport interface IActorReply<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> {\n actor: A;\n reply: Promise;\n}\n\nexport type IReply<\n I extends IAction = IAction,\n O extends IActorOutput = IActorOutput,\n T extends IActorTest = IActorTest,\n> = IActorReply, I, T, O>;\n\nexport type IBus\n= Bus, I, T, O>;\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { IActorReply, IBusArgs } from './Bus';\nimport { Bus } from './Bus';\n\n/**\n * A bus that indexes identified actors,\n * so that actions with a corresponding identifier can be published more efficiently.\n *\n * Multiple actors with the same identifier can be subscribed.\n *\n * If actors or actions do not have a valid identifier,\n * then this will fallback to the normal bus behaviour.\n *\n * @see Bus\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport class BusIndexed, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Bus {\n protected readonly actorsIndex: Record = {};\n protected readonly actorIdentifierFields: string[];\n protected readonly actionIdentifierFields: string[];\n\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusIndexedArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n public constructor(args: IBusIndexedArgs) {\n super(args);\n }\n\n public override subscribe(actor: A): void {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n let actors = this.actorsIndex[actorId];\n if (!actors) {\n actors = this.actorsIndex[actorId] = [];\n }\n actors.push(actor);\n super.subscribe(actor);\n }\n\n public override unsubscribe(actor: A): boolean {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n const actors = this.actorsIndex[actorId];\n if (actors) {\n const i = actors.indexOf(actor);\n if (i >= 0) {\n actors.splice(i, 1);\n }\n if (actors.length === 0) {\n delete this.actorsIndex[actorId];\n }\n }\n return super.unsubscribe(actor);\n }\n\n public override publish(action: I): IActorReply[] {\n const actionId = this.getActionIdentifier(action);\n if (actionId) {\n const actors = [ ...this.actorsIndex[actionId] || [], ...this.actorsIndex._undefined_ || [] ];\n return actors.map((actor: A): IActorReply => ({ actor, reply: actor.test(action) }));\n }\n return super.publish(action);\n }\n\n protected getActorIdentifier(actor: A): string {\n return this.actorIdentifierFields.reduce((object: any, field): A => object[field], actor);\n }\n\n protected getActionIdentifier(action: I): string {\n return this.actionIdentifierFields.reduce((object: any, field): A => object[field], action);\n }\n}\n\nexport interface IBusIndexedArgs extends IBusArgs {\n actorIdentifierFields: string[];\n actionIdentifierFields: string[];\n}\n","import type { Logger } from '@comunica/types';\nimport { ActionContextKey } from './ActionContext';\n\nexport const CONTEXT_KEY_LOGGER = new ActionContextKey('@comunica/core:log');\n","import type { Actor, IAction, IActorOutput, IActorTest } from './Actor';\nimport type { Bus, IActorReply } from './Bus';\n\n/**\n * A mediator can mediate an action over a bus of actors.\n *\n * It does the following:\n * 1. Accepts an action in {@link Mediator#mediate}.\n * 2. Sends the action to the bus to test its applicability on all actors.\n * 3. It _mediates_ over these test results.\n * 4. It selects the _best_ actor.\n * 5. The action is run by the _best_ actor, and the result if returned.\n *\n * The _mediates_ and _best_ parts are filled in by subclasses of this abstract Mediator class.\n *\n * @template A The type of actor to mediator over.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nexport abstract class Mediator<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> implements IMediatorArgs {\n public readonly name: string;\n public readonly bus: Bus;\n\n /**\n * All enumerable properties from the `args` object are inherited to this mediator.\n *\n * @param {IMediatorArgs, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>} args Arguments object\n * @param {string} args.name The name for this mediator.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this mediator will mediate over.\n * @throws When required arguments are missing.\n */\n protected constructor(args: IMediatorArgs) {\n Object.assign(this, args);\n }\n\n /**\n * Publish the given action in the bus.\n *\n * This will send the test action on all actors in the bus.\n * All actor replies will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {IActorReply, I extends IAction, T extends IActorTest, O extends IActorOutput>[]}\n * The list of actor replies.\n */\n public publish(action: I): IActorReply[] {\n // Test all actors in the bus\n const actors: IActorReply[] = this.bus.publish(action);\n if (actors.length === 0) {\n throw new Error(`No actors are able to reply to a message in the bus ${this.bus.name}`);\n }\n return actors;\n }\n\n /**\n * Mediate for the given action to get an actor.\n *\n * This will send the test action on all actors in the bus.\n * The actor that tests _best_ will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the _best_ actor.\n */\n public async mediateActor(action: I): Promise {\n // Mediate to one actor and run that actor.\n return await this.mediateWith(action, this.publish(action));\n }\n\n /**\n * Mediate for the given action.\n *\n * This will send the test action on all actors in the bus.\n * The action will be run on the actor that tests _best_,\n * of which the result will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the mediation result.\n */\n public async mediate(action: I): Promise {\n // Mediate to one actor and run the action on it\n const actor: A = await this.mediateActor(action);\n return actor.runObservable(action);\n }\n\n /**\n * Mediate for the given action with the given actor test results for the action.\n *\n * One actor must be returned that provided the _best_ test result.\n * How '_best_' is interpreted, depends on the implementation of the Mediator.\n *\n * @param {I} action The action to mediate for.\n * @param {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]} testResults The actor test results for the action.\n * @return {Promise>} A promise that resolves to the _best_ actor.\n */\n protected abstract mediateWith(action: I, testResults: IActorReply[]): Promise;\n}\n\nexport interface IMediatorArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n> {\n /**\n * The name for this mediator.\n * @default {}\n */\n name: string;\n /**\n * The bus this mediator will mediate over.\n */\n bus: Bus;\n}\n\nexport type Mediate =\nMediator, I, T, O>;\n","import type * as RDF from '@rdfjs/types';\n\n/**\n * A blank node that is scoped to a set of bindings.\n */\nexport class BlankNodeBindingsScoped implements RDF.BlankNode {\n public readonly termType = 'BlankNode';\n public readonly singleBindingsScope = true;\n public readonly value: string;\n\n public constructor(value: string) {\n this.value = value;\n }\n\n public equals(other: RDF.Term | null | undefined): boolean {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\n","import type * as RDF from '@rdfjs/types';\n\n/**\n * A blank node that is scoped to a certain source.\n */\nexport class BlankNodeScoped implements RDF.BlankNode {\n public readonly termType = 'BlankNode';\n public readonly value: string;\n /**\n * This value can be obtained by consumers in query results,\n * so that this can be passed into another query as an IRI,\n * in order to obtain more results relating to this (blank) node.\n */\n public readonly skolemized: RDF.NamedNode;\n\n public constructor(value: string, skolemized: RDF.NamedNode) {\n this.value = value;\n this.skolemized = skolemized;\n }\n\n public equals(other: RDF.Term | null | undefined): boolean {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RdfString from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport type { ITermTransformer } from '../transformers/TermTransformer';\nimport { TypeAlias } from '../util/Consts';\nimport { isSubTypeOf } from '../util/TypeHandling';\nimport type { IAggregatorComponentClass } from '.';\n\nexport abstract class AggregatorComponent {\n public abstract put(bindings: RDF.Term | undefined): void;\n public abstract result(): RDF.Term | undefined;\n\n protected separator: string;\n protected termTransformer: ITermTransformer;\n\n public static emptyValue(): RDF.Term | undefined {\n return undefined;\n }\n\n public constructor(expr: Algebra.AggregateExpression, protected sharedContext: ICompleteSharedContext) {\n this.separator = expr.separator || ' ';\n this.termTransformer = new TermTransformer(sharedContext.superTypeProvider);\n }\n\n protected termToNumericOrError(term: RDF.Term): E.NumericLiteral {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a numeric literal`);\n } else if (\n !isSubTypeOf(term.datatype.value, TypeAlias.SPARQL_NUMERIC, this.sharedContext.superTypeProvider)\n ) {\n throw new Error(`Term datatype ${term.datatype.value} with value ${term.value} has type ${term.termType} and is not a numeric literal`);\n }\n return this.termTransformer.transformLiteral(term);\n }\n}\n\n/**\n * A base aggregator that can handle distinct and possibly wildcards.\n */\nexport class Aggregator {\n protected distinct: boolean;\n protected variableValues: Map> = new Map();\n\n public constructor(expr: Algebra.AggregateExpression, protected aggregatorComponent: AggregatorComponent) {\n this.distinct = expr.distinct;\n }\n\n public static emptyValue(component: IAggregatorComponentClass): RDF.Term | undefined {\n return component.emptyValue();\n }\n\n public result(): RDF.Term | undefined {\n return this.aggregatorComponent.result();\n }\n\n public put(bindings: RDF.Term, variable = ''): void {\n if (!this.canSkip(bindings, variable)) {\n this.aggregatorComponent.put(bindings);\n this.addSeen(bindings, variable);\n }\n }\n\n private canSkip(term: RDF.Term, variable: string): boolean {\n const set = this.variableValues.get(variable);\n return this.distinct && set !== undefined && set.has(RdfString.termToString(term));\n }\n\n private addSeen(term: RDF.Term, variable: string): void {\n if (this.distinct) {\n if (!this.variableValues.has(variable)) {\n this.variableValues.set(variable, new Set());\n }\n this.variableValues.get(variable)!.add(RdfString.termToString(term));\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { integer } from '../functions/Helpers';\nimport * as C from '../util/Consts';\nimport { AggregatorComponent } from './Aggregator';\n\ninterface IAverageState {\n sum: E.NumericLiteral;\n count: number;\n}\n\nexport class Average extends AggregatorComponent {\n private readonly summer = regularFunctions[C.RegularOperator.ADDITION];\n private readonly divider = regularFunctions[C.RegularOperator.DIVISION];\n private state: IAverageState | undefined = undefined;\n\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n const sum = this.termToNumericOrError(term);\n this.state = { sum, count: 1 };\n } else {\n const internalTerm = this.termToNumericOrError(term);\n this.state.sum = this.summer.apply([ this.state.sum, internalTerm ], this.sharedContext);\n this.state.count++;\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Average.emptyValue();\n }\n const count = new E.IntegerLiteral(this.state.count);\n const result = this.divider.apply([ this.state.sum, count ], this.sharedContext);\n return result.toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { integer } from '../functions/Helpers';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Count extends AggregatorComponent {\n private state: number | undefined = undefined;\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(): void {\n if (this.state === undefined) {\n this.state = 0;\n }\n this.state++;\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Count.emptyValue();\n }\n return integer(this.state).toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { langString, string } from '../functions/Helpers';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class GroupConcat extends AggregatorComponent {\n private state: string | undefined = undefined;\n private lastLanguageValid = true;\n private lastLanguage: string | undefined = undefined;\n\n public static override emptyValue(): RDF.Term {\n return string('').toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n this.state = term.value;\n if (term.termType === 'Literal') {\n this.lastLanguage = term.language;\n }\n } else {\n this.state += this.separator + term.value;\n if (this.lastLanguageValid && term.termType === 'Literal' && this.lastLanguage !== term.language) {\n this.lastLanguageValid = false;\n this.lastLanguage = undefined;\n }\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return GroupConcat.emptyValue();\n }\n if (this.lastLanguageValid && this.lastLanguage) {\n return langString(this.state, this.lastLanguage).toRDF();\n }\n return string(this.state).toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { orderTypes } from '../util/Ordering';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Max extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a literal`);\n }\n if (this.state === undefined) {\n this.state = term;\n } else if (orderTypes(this.state, term) === -1) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Max.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { orderTypes } from '../util/Ordering';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Min extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n if (term.termType !== 'Literal') {\n throw new Error(`Term with value ${term.value} has type ${term.termType} and is not a literal`);\n }\n if (this.state === undefined) {\n this.state = term;\n } else if (orderTypes(this.state, term) === 1) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Min.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { AggregatorComponent } from './Aggregator';\n\nexport class Sample extends AggregatorComponent {\n private state: RDF.Term | undefined = undefined;\n\n public put(term: RDF.Term): void {\n // First value is our sample\n if (this.state === undefined) {\n this.state = term;\n }\n }\n\n public result(): RDF.Term | undefined {\n if (this.state === undefined) {\n return Sample.emptyValue();\n }\n return this.state;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { integer } from '../functions/Helpers';\nimport * as C from '../util/Consts';\nimport { AggregatorComponent } from './Aggregator';\n\ntype SumState = E.NumericLiteral;\n\nexport class Sum extends AggregatorComponent {\n private state: SumState | undefined = undefined;\n private readonly summer = regularFunctions[C.RegularOperator.ADDITION];\n\n public static override emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public put(term: RDF.Term): void {\n if (this.state === undefined) {\n this.state = this.termToNumericOrError(term);\n } else {\n const internalTerm = this.termToNumericOrError(term);\n this.state = this.summer.apply([ this.state, internalTerm ], this.sharedContext);\n }\n }\n\n public result(): RDF.Term {\n if (this.state === undefined) {\n return Sum.emptyValue();\n }\n return this.state.toRDF();\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RdfString from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { integer } from '../functions/Helpers';\n\n/**\n * Implementation of the COUNT aggregator on a wildcard.\n * We choose to make this is separate class, because it would pollute the code of the other aggregators.\n */\nexport class WildcardCountAggregator {\n private readonly distinct: boolean;\n\n // Key: string representation of a ',' separated list of terms.\n // Value: string representation of a ',' separated list of variables sorted by name.\n private readonly bindingValues: Map> = new Map();\n private counter = 0;\n\n public constructor(expr: Algebra.AggregateExpression) {\n this.distinct = expr.distinct;\n }\n\n public putBindings(bindings: RDF.Bindings): void {\n if (!this.handleDistinct(bindings)) {\n this.counter += 1;\n }\n }\n\n public static emptyValue(): RDF.Term {\n return integer(0).toRDF();\n }\n\n public result(): RDF.Term {\n return integer(this.counter).toRDF();\n }\n\n /**\n * Returns true if the given bindings should be skipped.\n * @param bindings\n * @private\n */\n private handleDistinct(bindings: RDF.Bindings): boolean {\n if (this.distinct) {\n const bindingList: [RDF.Variable, RDF.Term][] = [ ...bindings ];\n bindingList.sort((first, snd) => first[0].value.localeCompare(snd[0].value));\n const variables = bindingList.map(([ variable ]) => variable.value).join(',');\n const terms = bindingList.map(([ , term ]) => RdfString.termToString(term)).join(',');\n\n const set = this.bindingValues.get(variables);\n const result = set !== undefined && set.has(terms);\n\n // Add to the set:\n if (!set) {\n this.bindingValues.set(variables, new Set());\n }\n this.bindingValues.get(variables)!.add(terms);\n\n return result;\n }\n return false;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { BaseAggregateEvaluator } from './evaluatorHelpers/BaseAggregateEvaluator';\nimport type { ISyncEvaluatorContext } from './SyncEvaluator';\nimport { SyncEvaluator } from './SyncEvaluator';\n\n// TODO: Support hooks & change name to SyncAggregateEvaluator\nexport class AggregateEvaluator extends BaseAggregateEvaluator {\n private readonly evaluator: SyncEvaluator;\n\n public constructor(expr: Algebra.AggregateExpression, context?: ISyncEvaluatorContext, throwError?: boolean) {\n super(expr, SyncEvaluator.completeContext(context ?? {}), throwError);\n this.evaluator = new SyncEvaluator(expr.expression, context);\n }\n\n public put(bindings: RDF.Bindings): void {\n if (this.errorOccurred) {\n return;\n }\n if (this.isWildcard) {\n this.wildcardAggregator!.putBindings(bindings);\n } else {\n try {\n const startTerm = this.evaluator.evaluate(bindings);\n this.aggregator.put(startTerm);\n } catch (error: unknown) {\n this.safeThrow(error);\n }\n }\n }\n\n protected safeThrow(err: unknown): void {\n if (this.throwError) {\n throw err;\n } else {\n this.errorOccurred = true;\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { IAsyncEvaluatorContext } from './AsyncEvaluator';\nimport { AsyncEvaluator } from './AsyncEvaluator';\nimport { BaseAggregateEvaluator } from './evaluatorHelpers/BaseAggregateEvaluator';\n\nexport class AsyncAggregateEvaluator extends BaseAggregateEvaluator {\n private readonly evaluator: AsyncEvaluator;\n\n public constructor(expr: Algebra.AggregateExpression, context?: IAsyncEvaluatorContext, throwError?: boolean) {\n super(expr, AsyncEvaluator.completeContext(context ?? {}), throwError);\n this.evaluator = new AsyncEvaluator(expr.expression, context);\n this.errorOccurred = false;\n }\n\n public async put(bindings: RDF.Bindings): Promise {\n if (this.errorOccurred) {\n return;\n }\n if (this.isWildcard) {\n this.wildcardAggregator!.putBindings(bindings);\n } else {\n try {\n const startTerm = await this.evaluator.evaluate(bindings);\n if (!startTerm || this.errorOccurred) {\n return;\n }\n this.aggregator.put(startTerm);\n } catch (error: unknown) {\n this.safeThrow(error);\n }\n }\n }\n\n protected safeThrow(err: unknown): void {\n if (this.throwError) {\n throw err;\n } else {\n this.errorOccurred = true;\n }\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport type * as E from '../expressions/Expressions';\nimport { AlgebraTransformer } from '../transformers/AlgebraTransformer';\nimport type { IExpressionEvaluator } from '../Types';\nimport { extractTimeZone } from '../util/DateTimeHelpers';\nimport type { ICompleteAsyncEvaluatorContext } from './evaluatorHelpers/AsyncRecursiveEvaluator';\nimport { AsyncRecursiveEvaluator } from './evaluatorHelpers/AsyncRecursiveEvaluator';\nimport type { ISharedContext } from './evaluatorHelpers/BaseExpressionEvaluator';\n\nexport type AsyncExtensionFunction = (args: RDF.Term[]) => Promise;\nexport type AsyncExtensionFunctionCreator = (functionNamedNode: RDF.NamedNode) => AsyncExtensionFunction | undefined;\n\nexport interface IAsyncEvaluatorContext extends ISharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => Promise;\n aggregate?: (expression: Alg.AggregateExpression) => Promise;\n bnode?: (input?: string) => Promise;\n extensionFunctionCreator?: AsyncExtensionFunctionCreator;\n}\n\nexport class AsyncEvaluator {\n private readonly expr: E.Expression;\n private readonly evaluator: IExpressionEvaluator>;\n\n public static completeContext(context: IAsyncEvaluatorContext): ICompleteAsyncEvaluatorContext {\n const now = context.now ?? new Date(Date.now());\n return {\n now,\n baseIRI: context.baseIRI ?? undefined,\n functionArgumentsCache: context.functionArgumentsCache ?? {},\n superTypeProvider: {\n cache: context.typeCache ?? new LRUCache({ max: 1_000 }),\n discoverer: context.getSuperType ?? (() => 'term'),\n },\n extensionFunctionCreator: context.extensionFunctionCreator,\n exists: context.exists,\n aggregate: context.aggregate,\n bnode: context.bnode,\n defaultTimeZone: context.defaultTimeZone ?? extractTimeZone(now),\n };\n }\n\n public constructor(public algExpr: Alg.Expression, context: IAsyncEvaluatorContext = {}) {\n // eslint-disable-next-line unicorn/no-useless-undefined\n const creator = context.extensionFunctionCreator ?? (() => undefined);\n const baseContext = AsyncEvaluator.completeContext(context);\n\n const transformer = new AlgebraTransformer({\n type: 'async',\n creator,\n ...baseContext,\n });\n this.expr = transformer.transformAlgebra(algExpr);\n\n this.evaluator = new AsyncRecursiveEvaluator(baseContext, transformer);\n }\n\n public async evaluate(mapping: RDF.Bindings): Promise {\n const result = await this.evaluator.evaluate(this.expr, mapping);\n return result.toRDF();\n }\n\n public async evaluateAsEBV(mapping: RDF.Bindings): Promise {\n const result = await this.evaluator.evaluate(this.expr, mapping);\n return result.coerceEBV();\n }\n\n public async evaluateAsInternal(mapping: RDF.Bindings): Promise {\n return await this.evaluator.evaluate(this.expr, mapping);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport type * as E from '../expressions/Expressions';\nimport { AlgebraTransformer } from '../transformers/AlgebraTransformer';\nimport type { IExpressionEvaluator } from '../Types';\nimport { extractTimeZone } from '../util/DateTimeHelpers';\nimport type { ISharedContext } from './evaluatorHelpers/BaseExpressionEvaluator';\nimport type { ICompleteSyncEvaluatorContext } from './evaluatorHelpers/SyncRecursiveEvaluator';\nimport { SyncRecursiveEvaluator } from './evaluatorHelpers/SyncRecursiveEvaluator';\n\nexport interface ISyncEvaluatorContext extends ISharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => boolean;\n aggregate?: (expression: Alg.AggregateExpression) => RDF.Term;\n bnode?: (input?: string) => RDF.BlankNode;\n extensionFunctionCreator?: SyncExtensionFunctionCreator;\n}\n\nexport type SyncExtensionFunction = (args: RDF.Term[]) => RDF.Term;\nexport type SyncExtensionFunctionCreator = (functionNamedNode: RDF.NamedNode) => SyncExtensionFunction | undefined;\n\nexport class SyncEvaluator {\n private readonly expr: E.Expression;\n private readonly evaluator: IExpressionEvaluator;\n\n public static completeContext(context: ISyncEvaluatorContext): ICompleteSyncEvaluatorContext {\n const now = context.now ?? new Date(Date.now());\n return {\n now,\n baseIRI: context.baseIRI ?? undefined,\n functionArgumentsCache: context.functionArgumentsCache ?? {},\n superTypeProvider: {\n cache: context.typeCache ?? new LRUCache({ max: 1_000 }),\n discoverer: context.getSuperType ?? (() => 'term'),\n },\n extensionFunctionCreator: context.extensionFunctionCreator,\n exists: context.exists,\n aggregate: context.aggregate,\n bnode: context.bnode,\n defaultTimeZone: context.defaultTimeZone ?? extractTimeZone(now),\n };\n }\n\n public constructor(public algExpr: Alg.Expression, public context: ISyncEvaluatorContext = {}) {\n // eslint-disable-next-line unicorn/no-useless-undefined\n const creator = context.extensionFunctionCreator ?? (() => undefined);\n const baseContext = SyncEvaluator.completeContext(context);\n\n const transformer = new AlgebraTransformer({\n type: 'sync',\n creator,\n ...baseContext,\n });\n this.expr = transformer.transformAlgebra(algExpr);\n\n this.evaluator = new SyncRecursiveEvaluator(baseContext, transformer);\n }\n\n public evaluate(mapping: RDF.Bindings): RDF.Term {\n const result = this.evaluator.evaluate(this.expr, mapping);\n return result.toRDF();\n }\n\n public evaluateAsEBV(mapping: RDF.Bindings): boolean {\n const result = this.evaluator.evaluate(this.expr, mapping);\n return result.coerceEBV();\n }\n\n public evaluateAsInternal(mapping: RDF.Bindings): E.TermExpression {\n return this.evaluator.evaluate(this.expr, mapping);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport * as E from '../../expressions';\nimport type { AsyncExtension } from '../../expressions';\nimport type { EvalContextAsync } from '../../functions';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport { TermTransformer } from '../../transformers/TermTransformer';\nimport type { IExpressionEvaluator } from '../../Types';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider } from '../../util/TypeHandling';\nimport type { AsyncExtensionFunctionCreator } from '../AsyncEvaluator';\nimport { BaseExpressionEvaluator } from './BaseExpressionEvaluator';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\n\nexport interface ICompleteAsyncEvaluatorContext extends ICompleteSharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => Promise;\n aggregate?: (expression: Alg.AggregateExpression) => Promise;\n bnode?: (input?: string) => Promise;\n extensionFunctionCreator?: AsyncExtensionFunctionCreator;\n}\n\nexport class AsyncRecursiveEvaluator extends BaseExpressionEvaluator\n implements IExpressionEvaluator> {\n protected openWorldType: ISuperTypeProvider;\n private readonly subEvaluators: Record\n Promise | E.Term> = {\n // Shared\n [E.ExpressionType.Term]: (expr, _mapping) => this.term( expr),\n [E.ExpressionType.Variable]: (expr, mapping) => this.variable( expr, mapping),\n\n // Sync\n [E.ExpressionType.Operator]: (expr, mapping) => this.evalOperator( expr, mapping),\n [E.ExpressionType.SpecialOperator]: (expr, mapping) => this\n .evalSpecialOperator( expr, mapping),\n [E.ExpressionType.Named]: (expr, mapping) => this.evalNamed( expr, mapping),\n [E.ExpressionType.Existence]: (expr, mapping) => this.evalExistence( expr, mapping),\n [E.ExpressionType.Aggregate]: (expr, _mapping) => this.evalAggregate( expr),\n [E.ExpressionType.AsyncExtension]: (expr, mapping) => this.evalAsyncExtension( expr, mapping),\n };\n\n public constructor(private readonly context: ICompleteAsyncEvaluatorContext, termTransformer?: ITermTransformer) {\n super(termTransformer ?? new TermTransformer(context.superTypeProvider));\n }\n\n public async evaluate(expr: E.Expression, mapping: RDF.Bindings): Promise {\n const evaluator = this.subEvaluators[expr.expressionType];\n if (!evaluator) {\n throw new Err.InvalidExpressionType(expr);\n }\n return evaluator.bind(this)(expr, mapping);\n }\n\n private async evalOperator(expr: E.Operator, mapping: RDF.Bindings): Promise {\n const argPromises = expr.args.map(arg => this.evaluate(arg, mapping));\n const argResults = await Promise.all(argPromises);\n return expr.apply(argResults);\n }\n\n private async evalSpecialOperator(expr: E.SpecialOperator, mapping: RDF.Bindings): Promise {\n const evaluate = this.evaluate.bind(this);\n const context: EvalContextAsync = {\n args: expr.args,\n mapping,\n\n superTypeProvider: this.context.superTypeProvider,\n now: this.context.now,\n baseIRI: this.context.baseIRI,\n functionArgumentsCache: this.context.functionArgumentsCache,\n\n evaluate,\n bnode: this.context.bnode,\n defaultTimeZone: this.context.defaultTimeZone,\n };\n return expr.applyAsync(context);\n }\n\n private async _evalAsyncArgs(args: E.Expression[], mapping: RDF.Bindings): Promise {\n const argPromises = args.map(arg => this.evaluate(arg, mapping));\n return await Promise.all(argPromises);\n }\n\n private async evalNamed(expr: E.Named, mapping: RDF.Bindings): Promise {\n return expr.apply(await this._evalAsyncArgs(expr.args, mapping));\n }\n\n private async evalAsyncExtension(expr: AsyncExtension, mapping: RDF.Bindings): Promise {\n return await expr.apply(await this._evalAsyncArgs(expr.args, mapping));\n }\n\n private async evalExistence(expr: E.Existence, mapping: RDF.Bindings): Promise {\n if (!this.context.exists) {\n throw new Err.NoExistenceHook();\n }\n\n return new E.BooleanLiteral(await this.context.exists(expr.expression, mapping));\n }\n\n // TODO: Remove?\n private async evalAggregate(expr: E.Aggregate): Promise {\n if (!this.context.aggregate) {\n throw new Err.NoAggregator();\n }\n\n return this.termTransformer.transformRDFTermUnsafe(await this.context.aggregate(expr.expression));\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { aggregators } from '../../aggregators';\nimport { Aggregator } from '../../aggregators/Aggregator';\nimport { WildcardCountAggregator } from '../../aggregators/WildcardCountAggregator';\nimport type { SetFunction } from '../../util/Consts';\nimport * as Err from '../../util/Errors';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\n\nexport abstract class BaseAggregateEvaluator {\n protected expression: Algebra.AggregateExpression;\n protected aggregator: Aggregator;\n protected throwError = false;\n protected isWildcard = false;\n protected wildcardAggregator: WildcardCountAggregator | undefined;\n protected errorOccurred = false;\n\n protected constructor(\n expr: Algebra.AggregateExpression,\n sharedContext: ICompleteSharedContext,\n throwError?: boolean,\n ) {\n this.expression = expr;\n this.aggregator = new Aggregator(expr, new aggregators[ expr.aggregator](expr, sharedContext));\n this.throwError = throwError ?? false;\n this.isWildcard = expr.expression.expressionType === Algebra.expressionTypes.WILDCARD;\n if (this.isWildcard) {\n this.wildcardAggregator = new WildcardCountAggregator(expr);\n }\n }\n\n /**\n * The spec says to throw an error when a set function is called on an empty\n * set (unless explicitly mentioned otherwise like COUNT).\n * However, aggregate error handling says to not bind the result in case of an\n * error. So to simplify logic in the caller, we return undefined by default.\n *\n * @param expr the aggregate expression\n * @param throwError whether this function should respect the spec and throw an error if no empty value is defined\n */\n public static emptyValue(expr: Algebra.AggregateExpression, throwError = false): RDF.Term | undefined {\n let val: RDF.Term | undefined;\n if (expr.expression.expressionType === Algebra.expressionTypes.WILDCARD) {\n val = WildcardCountAggregator.emptyValue();\n } else {\n val = Aggregator.emptyValue(aggregators[ expr.aggregator]);\n }\n if (val === undefined && throwError) {\n throw new Err.EmptyAggregateError();\n }\n return val;\n }\n\n public result(): RDF.Term | undefined {\n if (this.errorOccurred) {\n return undefined;\n }\n if (this.isWildcard) {\n return this.wildcardAggregator!.result();\n }\n return this.aggregator.result();\n }\n\n /**\n * Put a binding from the result stream in the aggregate state.\n *\n * If any binding evaluation errors, the corresponding aggregate variable should be unbound.\n * If this happens, calling @see result() will return @constant undefined\n *\n * @param bindings the bindings to pass to the expression\n */\n public abstract put(bindings: RDF.Bindings): void | Promise;\n\n protected abstract safeThrow(err: unknown): void;\n}\n","import type * as RDF from '@rdfjs/types';\nimport type * as E from '../../expressions';\nimport { expressionToVar } from '../../functions/Helpers';\nimport type { FunctionArgumentsCache } from '../../functions/OverloadTree';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport type { ITimeZoneRepresentation } from '../../util/DateTimeHelpers';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider, SuperTypeCallback, TypeCache } from '../../util/TypeHandling';\n\nexport interface ISharedContext {\n now?: Date;\n baseIRI?: string;\n typeCache?: TypeCache;\n getSuperType?: SuperTypeCallback;\n functionArgumentsCache?: FunctionArgumentsCache;\n defaultTimeZone?: ITimeZoneRepresentation;\n}\n\nexport interface ICompleteSharedContext {\n now: Date;\n baseIRI?: string;\n functionArgumentsCache: FunctionArgumentsCache;\n superTypeProvider: ISuperTypeProvider;\n defaultTimeZone: ITimeZoneRepresentation;\n}\n\nexport class BaseExpressionEvaluator {\n public constructor(protected readonly termTransformer: ITermTransformer) {}\n\n protected term(expr: E.Term): E.Term {\n return expr;\n }\n\n protected variable(expr: E.Variable, mapping: RDF.Bindings): E.Term {\n const term = mapping.get(expressionToVar(expr));\n if (!term) {\n throw new Err.UnboundVariableError(expr.name, mapping);\n }\n return this.termTransformer.transformRDFTermUnsafe(term);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport * as E from '../../expressions';\nimport type { SyncExtension } from '../../expressions';\nimport type { EvalContextSync } from '../../functions';\nimport type { ITermTransformer } from '../../transformers/TermTransformer';\nimport { TermTransformer } from '../../transformers/TermTransformer';\nimport type { IExpressionEvaluator } from '../../Types';\nimport * as Err from '../../util/Errors';\nimport type { ISuperTypeProvider } from '../../util/TypeHandling';\nimport type { SyncExtensionFunctionCreator } from '../SyncEvaluator';\nimport type { ICompleteSharedContext } from './BaseExpressionEvaluator';\nimport { BaseExpressionEvaluator } from './BaseExpressionEvaluator';\n\nexport interface ICompleteSyncEvaluatorContext extends ICompleteSharedContext {\n exists?: (expression: Alg.ExistenceExpression, mapping: RDF.Bindings) => boolean;\n aggregate?: (expression: Alg.AggregateExpression) => RDF.Term;\n bnode?: (input?: string) => RDF.BlankNode;\n extensionFunctionCreator?: SyncExtensionFunctionCreator;\n}\n\nexport class SyncRecursiveEvaluator extends BaseExpressionEvaluator\n implements IExpressionEvaluator {\n protected openWorldType: ISuperTypeProvider;\n private readonly subEvaluators: Record E.Term> = {\n // Shared\n [E.ExpressionType.Term]: (expr, _mapping) => this.term( expr),\n [E.ExpressionType.Variable]: (expr, mapping) => this.variable( expr, mapping),\n\n // Sync\n [E.ExpressionType.Operator]: (expr, mapping) => this.evalOperator( expr, mapping),\n [E.ExpressionType.SpecialOperator]: (expr, mapping) => this.evalSpecialOperator( expr, mapping),\n [E.ExpressionType.Named]: (expr, mapping) => this.evalNamed( expr, mapping),\n [E.ExpressionType.Existence]: (expr, mapping) => this.evalExistence( expr, mapping),\n [E.ExpressionType.Aggregate]: (expr, _mapping) => this.evalAggregate( expr),\n [E.ExpressionType.SyncExtension]: (expr, mapping) => this.evalSyncExtension( expr, mapping),\n };\n\n public constructor(private readonly context: ICompleteSyncEvaluatorContext, termTransformer?: ITermTransformer) {\n super(termTransformer ?? new TermTransformer(context.superTypeProvider));\n }\n\n public evaluate(expr: E.Expression, mapping: RDF.Bindings): E.Term {\n const evaluator = this.subEvaluators[expr.expressionType];\n if (!evaluator) {\n throw new Err.InvalidExpressionType(expr);\n }\n return evaluator.bind(this)(expr, mapping);\n }\n\n private evalOperator(expr: E.Operator, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalSpecialOperator(expr: E.SpecialOperator, mapping: RDF.Bindings): E.Term {\n const evaluate = this.evaluate.bind(this);\n const context: EvalContextSync = {\n args: expr.args,\n mapping,\n\n superTypeProvider: this.context.superTypeProvider,\n now: this.context.now,\n baseIRI: this.context.baseIRI,\n functionArgumentsCache: this.context.functionArgumentsCache,\n\n evaluate,\n bnode: this.context.bnode,\n defaultTimeZone: this.context.defaultTimeZone,\n };\n return expr.applySynchronously(context);\n }\n\n private evalNamed(expr: E.Named, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalSyncExtension(expr: SyncExtension, mapping: RDF.Bindings): E.Term {\n const args = expr.args.map(arg => this.evaluate(arg, mapping));\n return expr.apply(args);\n }\n\n private evalExistence(expr: E.Existence, mapping: RDF.Bindings): E.Term {\n if (!this.context.exists) {\n throw new Err.NoExistenceHook();\n }\n\n return new E.BooleanLiteral(this.context.exists(expr.expression, mapping));\n }\n\n private evalAggregate(expr: E.Aggregate): E.Term {\n if (!this.context.aggregate) {\n throw new Err.NoAggregator();\n }\n\n return this.termTransformer.transformRDFTermUnsafe(this.context.aggregate(expr.expression));\n }\n}\n","import type { Algebra as Alg } from 'sparqlalgebrajs';\n\nimport type { AggregateExpression } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Aggregate implements AggregateExpression {\n public expressionType: ExpressionType.Aggregate = ExpressionType.Aggregate;\n\n public constructor(\n public name: string,\n public expression: Alg.AggregateExpression,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { AsyncExtensionApplication, AsyncExtensionExpression, Expression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class AsyncExtension implements AsyncExtensionExpression {\n public expressionType: ExpressionType.AsyncExtension = ExpressionType.AsyncExtension;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: AsyncExtensionApplication,\n ) {}\n}\n","import type { Algebra as Alg } from 'sparqlalgebrajs';\n\nimport type { ExistenceExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class Existence implements ExistenceExpression {\n public expressionType: ExpressionType.Existence = ExpressionType.Existence;\n public constructor(public expression: Alg.ExistenceExpression) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { EvalContextAsync, EvalContextSync } from '../functions';\n\nexport enum ExpressionType {\n Aggregate = 'aggregate',\n Existence = 'existence',\n Named = 'named',\n Operator = 'operator',\n SpecialOperator = 'specialOperator',\n Term = 'term',\n Variable = 'variable',\n AsyncExtension = 'asyncExtension',\n SyncExtension = 'syncExtension',\n}\n\nexport type Expression =\n AggregateExpression |\n ExistenceExpression |\n NamedExpression |\n OperatorExpression |\n SpecialOperatorExpression |\n TermExpression |\n VariableExpression |\n AsyncExtensionExpression |\n SyncExtensionExpression;\n\nexport interface IExpressionProps {\n expressionType: ExpressionType;\n}\n\nexport type AggregateExpression = IExpressionProps & {\n expressionType: ExpressionType.Aggregate;\n name: string;\n expression: Algebra.AggregateExpression;\n};\n\nexport type ExistenceExpression = IExpressionProps & {\n expressionType: ExpressionType.Existence;\n expression: Algebra.ExistenceExpression;\n};\n\nexport type NamedExpression = IExpressionProps & {\n expressionType: ExpressionType.Named;\n name: RDF.NamedNode;\n apply: SimpleApplication;\n args: Expression[];\n};\n\nexport type AsyncExtensionExpression = IExpressionProps & {\n expressionType: ExpressionType.AsyncExtension;\n name: RDF.NamedNode;\n apply: AsyncExtensionApplication;\n args: Expression[];\n};\n\nexport type SyncExtensionExpression = IExpressionProps & {\n expressionType: ExpressionType.SyncExtension;\n name: RDF.NamedNode;\n apply: SimpleApplication;\n args: Expression[];\n};\n\nexport type OperatorExpression = IExpressionProps & {\n expressionType: ExpressionType.Operator;\n args: Expression[];\n apply: SimpleApplication;\n};\n\nexport type SpecialOperatorExpression = IExpressionProps & {\n expressionType: ExpressionType.SpecialOperator;\n args: Expression[];\n applyAsync: SpecialApplicationAsync;\n applySynchronously: SpecialApplicationSync;\n};\n\n// TODO: Create alias Term = TermExpression\nexport function asTermType(type: string): TermType | undefined {\n if (type === 'namedNode' || type === 'literal' || type === 'blankNode' || type === 'quad') {\n return type;\n }\n return undefined;\n}\nexport type TermType = 'namedNode' | 'literal' | 'blankNode' | 'quad';\nexport type TermExpression = IExpressionProps & {\n expressionType: ExpressionType.Term;\n termType: TermType;\n str: () => string;\n coerceEBV: () => boolean;\n toRDF: () => RDF.Term;\n};\n\nexport type VariableExpression = IExpressionProps & {\n expressionType: ExpressionType.Variable;\n name: string;\n};\n\n// Export type Application = SimpleApplication | SpecialApplication;\nexport type SimpleApplication = (args: TermExpression[]) => TermExpression;\nexport type SimpleApplicationTuple = (args: T) => TermExpression;\nexport type AsyncExtensionApplication = (args: TermExpression[]) => Promise;\n\nexport type SpecialApplicationAsync = (context: EvalContextAsync) => Promise;\n\nexport type SpecialApplicationSync = (context: EvalContextSync) => TermExpression;\n","import type * as RDF from '@rdfjs/types';\n\nimport type { Expression, NamedExpression, SimpleApplication } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Named implements NamedExpression {\n public expressionType: ExpressionType.Named = ExpressionType.Named;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: SimpleApplication,\n ) {}\n}\n","import type { Expression, OperatorExpression, SimpleApplication } from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class Operator implements OperatorExpression {\n public expressionType: ExpressionType.Operator = ExpressionType.Operator;\n\n public constructor(public args: Expression[], public apply: SimpleApplication) {}\n}\n","import type {\n Expression,\n SpecialApplicationAsync,\n SpecialApplicationSync,\n SpecialOperatorExpression,\n} from './Expressions';\nimport {\n ExpressionType,\n} from './Expressions';\n\nexport class SpecialOperator implements SpecialOperatorExpression {\n public expressionType: ExpressionType.SpecialOperator = ExpressionType.SpecialOperator;\n\n public constructor(\n public args: Expression[],\n public applyAsync: SpecialApplicationAsync,\n public applySynchronously: SpecialApplicationSync,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Expression, SimpleApplication, SyncExtensionExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class SyncExtension implements SyncExtensionExpression {\n public expressionType: ExpressionType.SyncExtension = ExpressionType.SyncExtension;\n\n public constructor(\n public name: RDF.NamedNode,\n public args: Expression[],\n public apply: SimpleApplication,\n ) {}\n}\n","import type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from '../util/Consts';\nimport { TypeAlias, TypeURL } from '../util/Consts';\n\nimport type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n IYearMonthDurationRepresentation,\n} from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport { serializeDateTime, serializeDuration, serializeTime, serializeDate } from '../util/Serialization';\nimport type { ISuperTypeProvider } from '../util/TypeHandling';\nimport { isSubTypeOf } from '../util/TypeHandling';\nimport type { TermExpression, TermType } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nconst DF = new DataFactory();\n\nexport abstract class Term implements TermExpression {\n public expressionType: ExpressionType.Term = ExpressionType.Term;\n public abstract termType: TermType;\n\n public abstract toRDF(): RDF.Term;\n\n public str(): string {\n throw new Err.InvalidArgumentTypes([ this ], C.RegularOperator.STR);\n }\n\n public coerceEBV(): boolean {\n throw new Err.EBVCoercionError(this);\n }\n}\n\n// NamedNodes -----------------------------------------------------------------\nexport class NamedNode extends Term {\n public termType: TermType = 'namedNode';\n public constructor(public value: string) {\n super();\n }\n\n public toRDF(): RDF.Term {\n return DF.namedNode(this.value);\n }\n\n public override str(): string {\n return this.value;\n }\n}\n\n// BlankNodes -----------------------------------------------------------------\n\nexport class BlankNode extends Term {\n public value: RDF.BlankNode;\n public termType: TermType = 'blankNode';\n\n public constructor(value: RDF.BlankNode | string) {\n super();\n this.value = typeof value === 'string' ? DF.blankNode(value) : value;\n }\n\n public toRDF(): RDF.Term {\n return this.value;\n }\n}\n\n// Quads -----------------------------------------------------------------\nexport class Quad extends Term {\n public termType: TermType = 'quad';\n private readonly transformer: TermTransformer;\n private readonly valueTerm: RDF.BaseQuad;\n\n public constructor(input: RDF.BaseQuad, superTypeProvider: ISuperTypeProvider) {\n super();\n this.transformer = new TermTransformer(superTypeProvider);\n this.valueTerm = input;\n }\n\n public toRDF(): RDF.BaseQuad {\n return this.valueTerm;\n }\n\n public get subject(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFsubject);\n }\n\n public get predicate(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFpredicate);\n }\n\n public get object(): Term {\n return this.transformer.transformRDFTermUnsafe(this.RDFobject);\n }\n\n public get RDFsubject(): RDF.Term {\n return this.toRDF().subject;\n }\n\n public get RDFpredicate(): RDF.Term {\n return this.toRDF().predicate;\n }\n\n public get RDFobject(): RDF.Term {\n return this.toRDF().object;\n }\n}\n\n// Literals-- -----------------------------------------------------------------\nexport function isLiteralTermExpression(expr: TermExpression): Literal | undefined {\n if (expr.termType === 'literal') {\n return > expr;\n }\n return undefined;\n}\n\nexport interface ISerializable {\n toString: () => string;\n}\n\nexport class Literal extends Term {\n public termType = 'literal';\n /**\n * @param typedValue internal representation of this literal's value\n * @param dataType a string representing the datatype. Can be of type @see LiteralTypes or any URI\n * @param strValue the string value of this literal. In other words, the string representing the RDF.literal value.\n * @param language the language, mainly for language enabled strings like RDF_LANG_STRING\n */\n public constructor(\n public typedValue: T,\n public dataType: string,\n public strValue?: string,\n public language?: string,\n ) {\n super();\n }\n\n public toRDF(): RDF.Literal {\n return DF.literal(\n this.strValue ?? this.str(),\n this.language ?? DF.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? this.typedValue.toString();\n }\n}\n\nexport abstract class NumericLiteral extends Literal {\n protected constructor(\n public override typedValue: number,\n dataType: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType, strValue, language);\n }\n\n protected abstract specificFormatter(val: number): string;\n\n public override coerceEBV(): boolean {\n return Boolean(this.typedValue);\n }\n\n public override toRDF(): RDF.Literal {\n const term = super.toRDF();\n if (!Number.isFinite(this.typedValue)) {\n term.value = term.value.replace('Infinity', 'INF');\n }\n return term;\n }\n\n public override str(): string {\n return this.strValue ??\n this.specificFormatter(this.typedValue);\n }\n}\n\nexport class IntegerLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_INTEGER, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toFixed(0);\n }\n}\n\nexport class DecimalLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DECIMAL, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class FloatLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_FLOAT, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class DoubleLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DOUBLE, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n if (!Number.isFinite(val)) {\n if (val > 0) {\n return 'INF';\n }\n if (val < 0) {\n return '-INF';\n }\n return 'NaN';\n }\n\n const jsExponential = val.toExponential();\n const [ jsMantisse, jsExponent ] = jsExponential.split('e');\n\n // Leading + must be removed for integer\n // https://www.w3.org/TR/xmlschema-2/#integer\n const exponent = jsExponent.replace(/\\+/u, '');\n\n // SPARQL test suite prefers trailing zero's\n const mantisse = jsMantisse.includes('.') ?\n jsMantisse :\n `${jsMantisse}.0`;\n\n return `${mantisse}E${exponent}`;\n }\n}\n\nexport class BooleanLiteral extends Literal {\n public constructor(public override typedValue: boolean, public override strValue?: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_BOOLEAN, strValue);\n }\n\n public override coerceEBV(): boolean {\n return this.typedValue;\n }\n}\n\nexport class LangStringLiteral extends Literal {\n public constructor(public override typedValue: string, public override language: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.RDF_LANG_STRING, typedValue, language);\n }\n\n public override coerceEBV(): boolean {\n return this.str().length > 0;\n }\n}\n\n// https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal\n// https://www.w3.org/TR/sparql11-query/#defn_SimpleLiteral\n// https://www.w3.org/TR/sparql11-query/#func-strings\n// This does not include language tagged literals\nexport class StringLiteral extends Literal {\n /**\n * @param typedValue\n * @param dataType Should be type that implements XSD_STRING\n */\n public constructor(public override typedValue: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_STRING, typedValue);\n }\n\n public override coerceEBV(): boolean {\n return this.str().length > 0;\n }\n}\n\nexport class DateTimeLiteral extends Literal {\n public constructor(\n public override typedValue: IDateTimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE_TIME, strValue);\n }\n\n public override str(): string {\n return serializeDateTime(this.typedValue);\n }\n}\n\nexport class TimeLiteral extends Literal {\n public constructor(\n public override typedValue: ITimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_TIME, strValue);\n }\n\n public override str(): string {\n return serializeTime(this.typedValue);\n }\n}\n\nexport class DateLiteral extends Literal {\n public constructor(\n public override typedValue: IDateRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE, strValue);\n }\n\n public override str(): string {\n return serializeDate(this.typedValue);\n }\n}\n\nexport class DurationLiteral extends Literal> {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue);\n }\n}\n\nexport class DayTimeDurationLiteral extends DurationLiteral {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, strValue, dataType ?? TypeURL.XSD_DAY_TIME_DURATION);\n }\n}\n\nexport class YearMonthDurationLiteral extends Literal> {\n public constructor(\n public override typedValue: Partial,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_YEAR_MONTH_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue, 'P0M');\n }\n}\n\n/**\n * This class is used when a literal is parsed, and it's value is\n * an invalid lexical form for it's datatype. The spec defines value with\n * invalid lexical form are still valid terms, and as such we can not error\n * immediately. This class makes sure that the typedValue will remain undefined,\n * and the category 'nonlexical'. This way, only when operators apply to the\n * 'nonlexical' category, they will keep working, otherwise they will throw a\n * type error.\n * This seems to match the spec, except maybe for functions that accept\n * non-lexical values for their datatype.\n *\n * See:\n * - https://www.w3.org/TR/xquery/#dt-type-error\n * - https://www.w3.org/TR/rdf-concepts/#section-Literal-Value\n * - https://www.w3.org/TR/xquery/#dt-ebv\n * - ... some other more precise thing i can't find...\n */\nexport class NonLexicalLiteral extends Literal<{ toString: () => 'undefined' }> {\n public constructor(\n typedValue: undefined,\n dataType: string,\n private readonly openWorldType: ISuperTypeProvider,\n strValue?: string,\n language?: string,\n ) {\n super({ toString: () => 'undefined' }, dataType, strValue, language);\n }\n\n public override coerceEBV(): boolean {\n const isNumericOrBool =\n isSubTypeOf(this.dataType, TypeURL.XSD_BOOLEAN, this.openWorldType) ||\n isSubTypeOf(this.dataType, TypeAlias.SPARQL_NUMERIC, this.openWorldType);\n if (isNumericOrBool) {\n return false;\n }\n throw new Err.EBVCoercionError(this);\n }\n\n public override toRDF(): RDF.Literal {\n return DF.literal(\n this.str(),\n this.language ?? DF.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? '';\n }\n}\n\nexport function isNonLexicalLiteral(lit: Literal): NonLexicalLiteral | undefined {\n if (lit instanceof NonLexicalLiteral) {\n return lit;\n }\n return undefined;\n}\n","import type { VariableExpression } from './Expressions';\nimport { ExpressionType } from './Expressions';\n\nexport class Variable implements VariableExpression {\n public expressionType: ExpressionType.Variable = ExpressionType.Variable;\n public name: string;\n public constructor(name: string) {\n this.name = name;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport type * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport type { ISuperTypeProvider } from '../util/TypeHandling';\nimport type { ImplementationFunction, OverloadTree, FunctionArgumentsCache } from './OverloadTree';\n\nexport interface IEvalSharedContext extends ICompleteSharedContext {\n args: E.Expression[];\n mapping: RDF.Bindings;\n}\nexport interface IEvalContext extends IEvalSharedContext {\n bnode?: (input?: string) => BNode;\n evaluate: (expr: E.Expression, mapping: RDF.Bindings) => Term;\n}\n\nexport type EvalContextAsync = IEvalContext, Promise>;\nexport type EvalContextSync = IEvalContext;\n\n// ----------------------------------------------------------------------------\n// Overloaded Functions\n// ----------------------------------------------------------------------------\n\n// Function and operator arguments are 'flattened' in the SPARQL spec.\n// If the argument is a literal, the datatype often also matters.\nexport type ArgumentType = 'term' | E.TermType | C.TypeURL | C.TypeAlias;\n\nexport interface IOverloadedDefinition {\n arity: number | number[];\n overloads: OverloadTree;\n}\n\nexport abstract class BaseFunction {\n public arity: number | number[];\n private readonly overloads: OverloadTree;\n\n protected constructor(public operator: Operator, definition: IOverloadedDefinition) {\n this.arity = definition.arity;\n this.overloads = definition.overloads;\n }\n\n /**\n * A function application works by monomorphing the function to a specific\n * instance depending on the runtime types. We then just apply this function\n * to the args.\n */\n public apply = (args: E.TermExpression[], context: ICompleteSharedContext):\n E.TermExpression => {\n const concreteFunction =\n this.monomorph(args, context.superTypeProvider, context.functionArgumentsCache) ??\n this.handleInvalidTypes(args);\n return concreteFunction(context)(args);\n };\n\n protected abstract handleInvalidTypes(args: E.TermExpression[]): never;\n\n /**\n * We monomorph by checking the map of overloads for keys corresponding\n * to the runtime types. We start by checking for an implementation for the\n * most concrete types (integer, string, date, IRI), if we find none,\n * we consider their term types (literal, blank, IRI), and lastly we consider\n * all arguments as generic terms.\n *\n * Another option would be to populate the overloads with an implementation\n * for every concrete type when the function is generic over termtypes or\n * terms.\n */\n private monomorph(\n args: E.TermExpression[],\n superTypeProvider: ISuperTypeProvider,\n functionArgumentsCache: FunctionArgumentsCache,\n ): ImplementationFunction | undefined {\n return this.overloads.search(args, superTypeProvider, functionArgumentsCache);\n }\n}\n\n// Regular Functions ----------------------------------------------------------\n\n/**\n * Varying kinds of functions take arguments of different types on which the\n * specific behaviour is dependant. Although their behaviour is often varying,\n * it is always relatively simple, and better suited for synced behaviour.\n * The types of their arguments are always terms, but might differ in\n * their term-type (eg: iri, literal),\n * their specific literal type (eg: string, integer),\n * their arity (see BNODE),\n * or even their specific numeric type (eg: integer, float).\n *\n * Examples include:\n * - Arithmetic operations such as: *, -, /, +\n * - Bool operators such as: =, !=, <=, <, ...\n * - Functions such as: str, IRI\n *\n * See also: https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n * and https://www.w3.org/TR/sparql11-query/#OperatorMapping\n */\nexport class RegularFunction extends BaseFunction {\n protected functionClass = 'regular';\n\n public constructor(op: C.RegularOperator, definition: IOverloadedDefinition) {\n super(op, definition);\n }\n\n protected handleInvalidTypes(args: E.TermExpression[]): never {\n throw new Err.InvalidArgumentTypes(args, this.operator);\n }\n}\n\n// Named Functions ------------------------------------------------------------\nexport class NamedFunction extends BaseFunction {\n protected functionClass = 'named';\n\n public constructor(op: C.NamedOperator, definition: IOverloadedDefinition) {\n super(op, definition);\n }\n\n protected handleInvalidTypes(args: E.TermExpression[]): never {\n throw new Err.InvalidArgumentTypes(args, this.operator);\n }\n}\n\n// Special Functions ----------------------------------------------------------\n/**\n * Special Functions are those that don't really fit in sensible categories and\n * have extremely heterogeneous signatures that make them impossible to abstract\n * over. They are small in number, and their behaviour is often complex and open\n * for multiple correct implementations with different trade-offs.\n *\n * Due to their varying nature, they need all available information present\n * during evaluation. This reflects in the signature of the apply() method.\n *\n * They need access to an evaluator to be able to even implement their logic.\n * Especially relevant for IF, and the logical connectives.\n *\n * They can have both sync and async implementations, and both would make sense\n * in some contexts.\n */\nexport class SpecialFunction {\n public functionClass = 'special';\n public arity: number;\n public applySynchronously: E.SpecialApplicationSync;\n public applyAsync: E.SpecialApplicationAsync;\n public checkArity: (args: E.Expression[]) => boolean;\n\n public constructor(public operator: C.SpecialOperator, definition: ISpecialDefinition) {\n this.arity = definition.arity;\n this.applySynchronously = definition.applySynchronously;\n this.applyAsync = definition.applyAsync;\n this.checkArity = definition.checkArity ?? defaultArityCheck(this.arity);\n }\n}\n\nfunction defaultArityCheck(arity: number): (args: E.Expression[]) => boolean {\n return (args: E.Expression[]): boolean => {\n // Infinity is used to represent var-args, so it's always correct.\n if (arity === Number.POSITIVE_INFINITY) {\n return true;\n }\n\n return args.length === arity;\n };\n}\n\nexport interface ISpecialDefinition {\n arity: number;\n applyAsync: E.SpecialApplicationAsync;\n applySynchronously: E.SpecialApplicationSync;\n checkArity?: (args: E.Expression[]) => boolean;\n}\n","/**\n * These helpers provide a (albeit inflexible) DSL for writing function\n * definitions for the SPARQL functions.\n */\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type { Literal, TermExpression, Quad, ISerializable } from '../expressions';\nimport * as E from '../expressions';\nimport { NonLexicalLiteral } from '../expressions';\nimport * as C from '../util/Consts';\nimport { TypeURL } from '../util/Consts';\nimport type { IDateTimeRepresentation } from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport type { ArgumentType } from './Core';\nimport type { ImplementationFunction, ImplementationFunctionTuple } from './OverloadTree';\nimport { OverloadTree } from './OverloadTree';\n\ntype Term = E.TermExpression;\n\nconst DF = new DataFactory();\n\nexport function declare(identifier: string): Builder {\n return new Builder(identifier);\n}\n\nexport class Builder {\n private readonly overloadTree: OverloadTree;\n private collected: boolean;\n\n public constructor(identifier: string) {\n this.overloadTree = new OverloadTree(identifier);\n this.collected = false;\n }\n\n public collect(): OverloadTree {\n if (this.collected) {\n // Only 1 time allowed because we can't copy a tree. (And we don't need this).\n throw new Error('Builders can only be collected once!');\n }\n this.collected = true;\n return this.overloadTree;\n }\n\n private static wrapInvalidLexicalProtected(func: ImplementationFunction): ImplementationFunction {\n return (context: ICompleteSharedContext) => (args: TermExpression[]) => {\n for (const [ index, arg ] of args.entries()) {\n if (arg instanceof NonLexicalLiteral) {\n throw new Err.InvalidLexicalForm(args[index].toRDF());\n }\n }\n return func(context)(args);\n };\n }\n\n public set(\n argTypes: [],\n func: ImplementationFunctionTuple<[]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType],\n func: ImplementationFunctionTuple<[T1]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(\n argTypes: [ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<\n T1 extends TermExpression,\n T2 extends TermExpression,\n T3 extends TermExpression,\n T4 extends TermExpression,\n >(\n argTypes: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3, T4]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling?: boolean): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling = true): Builder {\n this.overloadTree.addOverload(argTypes, addInvalidHandling ? Builder.wrapInvalidLexicalProtected(func) : func);\n return this;\n }\n\n public copy({ from, to }: { from: ArgumentType[]; to: ArgumentType[] }): Builder {\n const impl = this.overloadTree.getImplementationExact(from);\n if (!impl) {\n throw new Err.UnexpectedError(\n 'Tried to copy implementation, but types not found',\n { from, to },\n );\n }\n return this.set(to, impl);\n }\n\n public onUnary(type: ArgumentType, op: (context: ICompleteSharedContext) =>\n (val: T) => Term, addInvalidHandling = true): Builder {\n return this.set([ type ], context => ([ val ]: [T]) => op(context)(val), addInvalidHandling);\n }\n\n public onUnaryTyped(\n type: ArgumentType,\n op: (context: ICompleteSharedContext) => (val: T) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set([ type ], context => ([ val ]: [E.Literal]) => op(context)(val.typedValue), addInvalidHandling);\n }\n\n public onBinary(\n types: [ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ left, right ]: [L, R]) => op(context)(left, right), addInvalidHandling);\n }\n\n public onBinaryTyped(\n types: [ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n types,\n context => ([ left, right ]: [E.Literal, E.Literal]) => op(context)(left.typedValue, right.typedValue),\n addInvalidHandling,\n );\n }\n\n public onTernaryTyped(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext)\n => (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ a1, a2, a3 ]: [E.Literal, E.Literal, E.Literal]) =>\n op(context)(a1.typedValue, a2.typedValue, a3.typedValue), addInvalidHandling);\n }\n\n public onTernary(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context => ([ a1, a2, a3 ]: [A1, A2, A3]) => op(context)(a1, a2, a3), addInvalidHandling);\n }\n\n public onQuaternaryTyped<\n A1 extends ISerializable,\nA2 extends ISerializable,\nA3 extends ISerializable,\nA4 extends ISerializable,\n>(\n types: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n op: (context: ICompleteSharedContext) => (a1: A1, a2: A2, a3: A3, a4: A4) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, context =>\n ([ a1, a2, a3, a4 ]: [E.Literal, E.Literal, E.Literal, E.Literal]) =>\n op(context)(a1.typedValue, a2.typedValue, a3.typedValue, a4.typedValue), addInvalidHandling);\n }\n\n public onTerm1(\n op: (context: ICompleteSharedContext) => (term: T) => Term,\naddInvalidHandling = false,\n ): Builder {\n return this.set(\n [ 'term' ],\n context => ([ term ]: [T]) => op(context)(term),\n addInvalidHandling,\n );\n }\n\n public onTerm3(op: (context: ICompleteSharedContext) => (t1: Term, t2: Term, t3: Term) => Term): Builder {\n return this.set(\n [ 'term', 'term', 'term' ],\n context => ([ t1, t2, t3 ]: [Term, Term, Term]) => op(context)(t1, t2, t3),\n );\n }\n\n public onQuad1(op: (context: ICompleteSharedContext) => (term: Term & Quad) => Term): Builder {\n return this.set([ 'quad' ], context => ([ term ]: [Term & Quad]) => op(context)(term));\n }\n\n public onLiteral1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ 'literal' ],\n context => ([ term ]: [E.Literal]) => op(context)(term),\n addInvalidHandling,\n );\n }\n\n public onBoolean1(\n op: (context: ICompleteSharedContext) => (lit: E.BooleanLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n context => ([ lit ]: [E.BooleanLiteral]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onBoolean1Typed(\n op: (context: ICompleteSharedContext) => (lit: boolean) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n context => ([ lit ]: [E.BooleanLiteral]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onString1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onString1Typed(\n op: (context: ICompleteSharedContext) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onLangString1(\n op: (context: ICompleteSharedContext) => (lit: E.LangStringLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.RDF_LANG_STRING ],\n context => ([ lit ]: [E.LangStringLiteral]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1(\n op: (context: ICompleteSharedContext) => (lit: E.Literal) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1Typed(\n op: (context: ICompleteSharedContext) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n context => ([ lit ]: [E.Literal]) => op(context)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onNumeric1(\n op: (context: ICompleteSharedContext) => (val: E.NumericLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_NUMERIC ],\n context => ([ val ]: [E.NumericLiteral]) => op(context)(val),\n addInvalidHandling,\n );\n }\n\n public onDateTime1(\n op: (context: ICompleteSharedContext) => (date: E.DateTimeLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME ],\n context => ([ val ]: [E.DateTimeLiteral]) => op(context)(val),\n addInvalidHandling,\n );\n }\n\n /**\n * We return the base types and not the provided types because we don't want to create invalid terms.\n * Providing negative number to a function unary - for example should not\n * return a term of type negative number having a positive value.\n * @param op the numeric operator performed\n * @param addInvalidHandling whether to add invalid handling,\n * whether to add @param op in @see wrapInvalidLexicalProtected\n */\n public numericConverter(\n op: (context: ICompleteSharedContext) => (val: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (context: ICompleteSharedContext) => (arg: Term): number =>\n op(context)((>arg).typedValue);\n return this.onUnary(TypeURL.XSD_INTEGER, context => arg =>\n integer(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DECIMAL, context => arg =>\n decimal(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_FLOAT, context => arg =>\n float(evalHelper(context)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DOUBLE, context => arg =>\n double(evalHelper(context)(arg)), addInvalidHandling);\n }\n\n /**\n * !!! Be aware when using this function, it will create different overloads with different return types !!!\n * Arithmetic operators take 2 numeric arguments, and return a single numerical\n * value. The type of the return value is heavily dependent on the types of the\n * input arguments. In JS everything is a double, but in SPARQL it is not.\n *\n * The different arguments are handled by type promotion and subtype substitution.\n * The way numeric function arguments work is described here:\n * https://www.w3.org/TR/xpath20/#mapping\n * Above url is referenced in the sparql spec: https://www.w3.org/TR/sparql11-query/#OperatorMapping\n */\n public arithmetic(\n op: (context: ICompleteSharedContext) => (left: number, right: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (context: ICompleteSharedContext) => (left: Term, right: Term): number =>\n op(context)((>left).typedValue, (>right).typedValue);\n return this.onBinary([ TypeURL.XSD_INTEGER, TypeURL.XSD_INTEGER ], context => (left, right) =>\n integer(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DECIMAL, TypeURL.XSD_DECIMAL ], context => (left, right) =>\n decimal(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_FLOAT, TypeURL.XSD_FLOAT ], context => (left, right) =>\n float(evalHelper(context)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DOUBLE, TypeURL.XSD_DOUBLE ], context => (left, right) =>\n double(evalHelper(context)(left, right)), addInvalidHandling);\n }\n\n public numberTest(test: (context: ICompleteSharedContext) => (left: number, right: number) => boolean): Builder {\n return this.numeric(context => ([ left, right ]: E.NumericLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n });\n }\n\n public stringTest(\n test: (context: ICompleteSharedContext) => (left: string, right: string) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_STRING, C.TypeURL.XSD_STRING ],\n context => ([ left, right ]: E.StringLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public booleanTest(\n test: (context: ICompleteSharedContext) => (left: boolean, right: boolean) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_BOOLEAN, C.TypeURL.XSD_BOOLEAN ],\n context => ([ left, right ]: E.BooleanLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public dateTimeTest(test: (context: ICompleteSharedContext)\n => (left: IDateTimeRepresentation, right: IDateTimeRepresentation) => boolean, addInvalidHandling = true): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME, C.TypeURL.XSD_DATE_TIME ],\n context => ([ left, right ]: E.DateTimeLiteral[]) => {\n const result = test(context)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public numeric(op: ImplementationFunctionTuple<[T, T]>): Builder {\n return this.set([ C.TypeAlias.SPARQL_NUMERIC, C.TypeAlias.SPARQL_NUMERIC ], op);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Literal Construction helpers\n// ----------------------------------------------------------------------------\n\nexport function bool(val: boolean): E.BooleanLiteral {\n return new E.BooleanLiteral(val);\n}\n\nexport function integer(num: number): E.IntegerLiteral {\n return new E.IntegerLiteral(num);\n}\n\nexport function decimal(num: number): E.DecimalLiteral {\n return new E.DecimalLiteral(num);\n}\n\nexport function float(num: number): E.FloatLiteral {\n return new E.FloatLiteral(num);\n}\n\nexport function double(num: number): E.DoubleLiteral {\n return new E.DoubleLiteral(num);\n}\n\nexport function string(str: string): E.StringLiteral {\n return new E.StringLiteral(str);\n}\n\nexport function langString(str: string, lang: string): E.LangStringLiteral {\n return new E.LangStringLiteral(str, lang);\n}\n\nexport function dateTime(date: IDateTimeRepresentation, str: string): E.DateTimeLiteral {\n return new E.DateTimeLiteral(date, str);\n}\n\nexport function expressionToVar(variableExpression: E.VariableExpression): RDF.Variable {\n return DF.variable(variableExpression.name.slice(1));\n}\n","import type { DateLiteral, DateTimeLiteral, TimeLiteral } from '../expressions';\nimport * as E from '../expressions';\nimport { DurationLiteral } from '../expressions';\nimport type * as C from '../util/Consts';\nimport { TypeURL } from '../util/Consts';\nimport { trimToDayTimeDuration, trimToYearMonthDuration } from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport {\n parseDate,\n parseDateTime,\n parseDayTimeDuration,\n parseDuration,\n parseTime,\n parseYearMonthDuration,\n parseXSDDecimal,\n parseXSDFloat,\n parseXSDInteger,\n} from '../util/Parsing';\n\nimport type { IOverloadedDefinition } from './Core';\nimport { bool, dateTime, decimal, declare, double, float, integer, string } from './Helpers';\n\ntype Term = E.TermExpression;\n\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// Begin definitions.\n\n// ----------------------------------------------------------------------------\n// XPath Constructor functions\n// https://www.w3.org/TR/sparql11-query/#\n// https://www.w3.org/TR/xpath-functions/#casting-from-primitive-to-primitive\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/xpath-functions/#casting-to-string\n */\nconst xsdToString = {\n arity: 1,\n overloads: declare(TypeURL.XSD_STRING)\n .onNumeric1(() => (val: E.NumericLiteral) => string(float(val.typedValue).str()))\n .onBoolean1Typed(() => val => string(bool(val).str()))\n .onTerm1(() => (val: E.StringLiteral) => string(val.str()))\n .collect(),\n};\n\nconst xsdToFloat = {\n arity: 1,\n overloads: declare(TypeURL.XSD_FLOAT)\n .onNumeric1(() => (val: E.NumericLiteral) => float(val.typedValue))\n .onBoolean1Typed(() => val => float(val ? 1 : 0))\n .onUnary(TypeURL.XSD_STRING, () => (val: E.StringLiteral) => {\n const result = parseXSDFloat(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_FLOAT);\n }\n return float(result);\n }, false)\n .collect(),\n};\n\nconst xsdToDouble = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DOUBLE)\n .onNumeric1(() => (val: E.NumericLiteral) => double(val.typedValue))\n .onBoolean1Typed(() => val => double(val ? 1 : 0))\n .onUnary(TypeURL.XSD_STRING, () => (val: E.Term) => {\n const result = parseXSDFloat(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DOUBLE);\n }\n return double(result);\n }, false)\n .collect(),\n};\n\nconst xsdToDecimal = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DECIMAL)\n .onNumeric1(() => (val: E.Term) => {\n const result = parseXSDDecimal(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DECIMAL);\n }\n return decimal(result);\n })\n .onString1(() => (val: E.Term) => {\n const str = val.str();\n const result = /^([+-])?(\\d+(\\.\\d+)?)$/u.test(str) ? parseXSDDecimal(str) : undefined;\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_DECIMAL);\n }\n return decimal(result);\n }, false)\n .onBoolean1Typed(() => val => decimal(val ? 1 : 0))\n .collect(),\n};\n\nconst xsdToInteger = {\n arity: 1,\n overloads: declare(TypeURL.XSD_INTEGER)\n .onBoolean1Typed(() => val => integer(val ? 1 : 0))\n .onNumeric1(() => (val: E.Term) => {\n const result = parseXSDInteger(val.str());\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_INTEGER);\n }\n return integer(result);\n }, false)\n .onString1(() => (val: E.Term) => {\n const str = val.str();\n const result = /^\\d+$/u.test(str) ? parseXSDInteger(str) : undefined;\n if (result === undefined) {\n throw new Err.CastError(val, TypeURL.XSD_INTEGER);\n }\n return integer(result);\n })\n .collect(),\n};\n\nconst xsdToDatetime = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DATE_TIME)\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: E.DateTimeLiteral) => val)\n .onUnary(TypeURL.XSD_STRING, () => (val: Term) =>\n dateTime(parseDateTime(val.str()), val.str()), false)\n .onUnary(TypeURL.XSD_DATE, () => (val: E.DateLiteral) =>\n new E.DateTimeLiteral({ ...val.typedValue, hours: 0, minutes: 0, seconds: 0 }))\n .collect(),\n};\n\nconst xsdToBoolean = {\n arity: 1,\n overloads: declare(TypeURL.XSD_BOOLEAN)\n .onNumeric1(() => (val: E.NumericLiteral) => bool(val.coerceEBV()), true)\n .onUnary(TypeURL.XSD_BOOLEAN, () => (val: Term) => bool(val.coerceEBV()), true)\n .onUnary(TypeURL.XSD_STRING, () => (val: Term) => {\n switch (val.str()) {\n case 'true':\n return bool(true);\n case 'false':\n return bool(false);\n case '1':\n return bool(true);\n case '0':\n return bool(false);\n default:\n throw new Err.CastError(val, TypeURL.XSD_BOOLEAN);\n }\n }, false)\n .collect(),\n};\n\n// End definitions.\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n\n// Additional definitions to implement https://github.com/w3c/sparql-12/blob/main/SEP/SEP-0002/sep-0002.md\n// The additional casts are listed in https://www.w3.org/TR/xpath-functions/#casting-from-primitive-to-primitive\nconst xsdToTime = {\n arity: 1,\n overloads: declare(TypeURL.XSD_TIME)\n .onUnary(TypeURL.XSD_TIME, () => (val: TimeLiteral) => new E.TimeLiteral(val.typedValue, val.strValue))\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: DateTimeLiteral) =>\n new E.TimeLiteral(val.typedValue))\n .onStringly1(() => (val: Term) => new E.TimeLiteral(parseTime(val.str())))\n .collect(),\n};\n\nconst xsdToDate = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DATE)\n .onUnary(TypeURL.XSD_DATE, () => (val: DateLiteral) => new E.DateLiteral(val.typedValue, val.strValue))\n .onUnary(TypeURL.XSD_DATE_TIME, () => (val: DateTimeLiteral) =>\n new E.DateLiteral(val.typedValue))\n .onStringly1(() => (val: E.Term) => new E.DateLiteral(parseDate(val.str())))\n .collect(),\n};\n\nconst xsdToDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.DurationLiteral(val.typedValue, val.strValue))\n .onStringly1(() => (val: Term) =>\n new DurationLiteral(parseDuration(val.str())))\n .collect(),\n};\n\nconst xsdToDayTimeDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_DAY_TIME_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.DayTimeDurationLiteral(trimToDayTimeDuration(val.typedValue)))\n .onStringly1(() => (val: Term) =>\n new E.DayTimeDurationLiteral(parseDayTimeDuration(val.str())))\n .collect(),\n};\n\nconst xsdToYearMonthDuration = {\n arity: 1,\n overloads: declare(TypeURL.XSD_YEAR_MONTH_DURATION)\n // https://www.w3.org/TR/xpath-functions/#casting-to-durations\n .onUnary(TypeURL.XSD_DURATION, () => (val: E.DurationLiteral) =>\n // Copy is needed to make sure the dataType is changed, even when the provided type was a subtype\n new E.YearMonthDurationLiteral(trimToYearMonthDuration(val.typedValue)))\n .onStringly1(() => (val: Term) =>\n new E.YearMonthDurationLiteral(parseYearMonthDuration(val.str())))\n .collect(),\n};\n\nexport const namedDefinitions: Record = {\n // --------------------------------------------------------------------------\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // --------------------------------------------------------------------------\n [TypeURL.XSD_STRING]: xsdToString,\n [TypeURL.XSD_FLOAT]: xsdToFloat,\n [TypeURL.XSD_DOUBLE]: xsdToDouble,\n [TypeURL.XSD_DECIMAL]: xsdToDecimal,\n [TypeURL.XSD_INTEGER]: xsdToInteger,\n [TypeURL.XSD_DATE_TIME]: xsdToDatetime,\n [TypeURL.XSD_DATE]: xsdToDate,\n [TypeURL.XSD_BOOLEAN]: xsdToBoolean,\n [TypeURL.XSD_TIME]: xsdToTime,\n [TypeURL.XSD_DURATION]: xsdToDuration,\n [TypeURL.XSD_DAY_TIME_DURATION]: xsdToDayTimeDuration,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: xsdToYearMonthDuration,\n};\n","import type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type * as E from '../expressions';\nimport { isLiteralTermExpression, TermExpression } from '../expressions';\nimport type { KnownLiteralTypes } from '../util/Consts';\nimport type { GeneralSuperTypeDict, ISuperTypeProvider, OverrideType } from '../util/TypeHandling';\nimport {\n asGeneralType,\n asKnownLiteralType,\n asOverrideType,\n getSuperTypes,\n superTypeDictTable,\n typePromotion,\n} from '../util/TypeHandling';\nimport type { ArgumentType } from './Core';\n\nexport type SearchStack = OverloadTree[];\nexport type ImplementationFunction = (sharedContext: ICompleteSharedContext) => E.SimpleApplication;\nexport type ImplementationFunctionTuple = (sharedContext: ICompleteSharedContext) => E.SimpleApplicationTuple;\ninterface IFunctionArgumentsCacheObj {\n func?: ImplementationFunction;\n cache?: FunctionArgumentsCache;\n}\nexport type FunctionArgumentsCache = Record;\n/**\n * Maps argument types on their specific implementation in a tree like structure.\n * When adding any functionality to this class, make sure you add it to SpecialFunctions as well.\n */\nexport class OverloadTree {\n private implementation?: ImplementationFunction | undefined;\n // We need this field. e.g. decimal decimal should be kept even when double double is added.\n // We use promotion count to check priority.\n private promotionCount?: number | undefined;\n private readonly generalOverloads: Record<'term' | E.TermType, OverloadTree>;\n private readonly literalOverLoads: [OverrideType, OverloadTree][];\n private readonly depth: number;\n\n public constructor(private readonly identifier: string, depth?: number) {\n this.implementation = undefined;\n this.generalOverloads = Object.create(null);\n this.literalOverLoads = [];\n this.depth = depth ?? 0;\n this.promotionCount = undefined;\n }\n\n private getSubtree(overrideType: ArgumentType): OverloadTree | undefined {\n const generalType = asGeneralType(overrideType);\n if (generalType) {\n return this.generalOverloads[generalType];\n }\n for (const [ type, overloadTree ] of this.literalOverLoads) {\n if (overrideType === type) {\n return overloadTree;\n }\n }\n return undefined;\n }\n\n /**\n * Get the implementation for the types that exactly match @param args .\n */\n public getImplementationExact(args: ArgumentType[]): ImplementationFunction | undefined {\n // eslint-disable-next-line ts/no-this-alias\n let node: OverloadTree | undefined = this;\n for (const expression of args) {\n node = node.getSubtree(expression);\n if (!node) {\n return undefined;\n }\n }\n return node.implementation;\n }\n\n /**\n * Searches in a depth first way for the best matching overload. considering this a the tree's root.\n * @param args the arguments to the function.\n * @param superTypeProvider\n * @param functionArgumentsCache\n */\n public search(\n args: E.TermExpression[],\n superTypeProvider: ISuperTypeProvider,\n functionArgumentsCache: FunctionArgumentsCache,\n ):\n ImplementationFunction | undefined {\n let cacheIter: IFunctionArgumentsCacheObj | undefined = functionArgumentsCache[this.identifier];\n let searchIndex = 0;\n while (searchIndex < args.length && cacheIter?.cache) {\n const term = args[searchIndex];\n const literalExpression = isLiteralTermExpression(term);\n cacheIter = cacheIter.cache[literalExpression ? literalExpression.dataType : term.termType];\n searchIndex++;\n }\n if (searchIndex === args.length && cacheIter?.func) {\n return cacheIter.func;\n }\n\n // SearchStack is a stack of all node's that need to be checked for implementation.\n // It provides an easy way to keep order in our search.\n const searchStack: { node: OverloadTree; index: number }[] = [];\n const startIndex = 0;\n if (args.length === 0) {\n return this.implementation;\n }\n // GetSubTreeWithArg return a SearchStack containing the node's that should be contacted next.\n // We also log the index since there is no other way to remember this index.\n // the provided stack should be pushed on top of our search stack since it also has it's order.\n searchStack.push(...this.getSubTreeWithArg(args[startIndex], superTypeProvider).map(node =>\n ({ node, index: startIndex + 1 })));\n while (searchStack.length > 0) {\n const { index, node } = <{ node: OverloadTree; index: number }>searchStack.pop();\n // We check the implementation because it would be possible a path is created but not implemented.\n // ex: f(double, double, double) and f(term, term). and calling f(double, double).\n if (index === args.length && node.implementation) {\n this.addToCache(functionArgumentsCache, args, node.implementation);\n return node.implementation;\n }\n searchStack.push(...node.getSubTreeWithArg(args[index], superTypeProvider).map(item =>\n ({ node: item, index: index + 1 })));\n }\n // Calling a function with one argument but finding no implementation should return no implementation.\n // Not even the one with no arguments.\n return undefined;\n }\n\n private addToCache(\n functionArgumentsCache: FunctionArgumentsCache,\n args: E.TermExpression[],\n func?: ImplementationFunction | undefined,\n ): void {\n function getDefault(lruCache: FunctionArgumentsCache, key: string): IFunctionArgumentsCacheObj {\n if (!(key in lruCache)) {\n lruCache[key] = {};\n }\n return lruCache[key];\n }\n let cache = getDefault(functionArgumentsCache, this.identifier);\n for (const term of args) {\n const literalExpression = isLiteralTermExpression(term);\n const key = literalExpression ? literalExpression.dataType : term.termType;\n cache.cache = cache.cache ?? {};\n cache = getDefault(cache.cache, key);\n }\n cache.func = func;\n }\n\n /**\n * Adds an overload to the tree structure considering this as the tree's root.\n * @param argumentTypes a list of argumentTypes that would need to be provided in\n * the same order to get the implementation.\n * @param func the implementation for this overload.\n */\n public addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction): void {\n this._addOverload([ ...argumentTypes ], func, 0);\n }\n\n private _addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction, promotionCount: number): void {\n const [ argumentType, ..._argumentTypes ] = argumentTypes;\n if (!argumentType) {\n if (this.promotionCount === undefined || promotionCount <= this.promotionCount) {\n this.promotionCount = promotionCount;\n this.implementation = func;\n }\n return;\n }\n let nextTree = this.getSubtree(argumentType);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n const generalType = asGeneralType(argumentType);\n if (generalType) {\n this.generalOverloads[generalType] = newNode;\n }\n const overrideType = asOverrideType(argumentType);\n if (overrideType) {\n this.literalOverLoads.push([ overrideType, newNode ]);\n }\n nextTree = newNode;\n }\n nextTree._addOverload(_argumentTypes, func, promotionCount);\n\n if (typePromotion[argumentType]) {\n for (const ret of typePromotion[argumentType]!) {\n this.addPromotedOverload(\n ret.typeToPromote,\n func,\n ret.conversionFunction,\n _argumentTypes,\n promotionCount,\n );\n }\n }\n }\n\n private addPromotedOverload(\n typeToPromote: OverrideType,\n func: ImplementationFunction,\n conversionFunction: (arg: E.TermExpression) => E.TermExpression,\n argumentTypes: ArgumentType[],\n promotionCount: number,\n ): void {\n let nextTree = this.getSubtree(typeToPromote);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n this.literalOverLoads.push([ typeToPromote, newNode ]);\n nextTree = newNode;\n }\n nextTree._addOverload(argumentTypes, funcConf => args => func(funcConf)([\n ...args.slice(0, this.depth),\n conversionFunction(args[this.depth]),\n ...args.slice(this.depth + 1, args.length),\n ]), promotionCount + 1);\n }\n\n /**\n * @param arg term to try and match to possible overloads of this node.\n * @param openWorldType interface allowing to discover relations between types.\n * @returns SearchStack a stack with top element the next node that should be asked for implementation or overload.\n */\n private getSubTreeWithArg(arg: E.TermExpression, openWorldType: ISuperTypeProvider): SearchStack {\n const res: SearchStack = [];\n const literalExpression = isLiteralTermExpression(arg);\n // These types refer to Type exported by lib/util/Consts.ts\n if (this.generalOverloads.term) {\n res.push(this.generalOverloads.term);\n }\n // TermTypes are defined in E.TermType.\n if (this.generalOverloads[arg.termType]) {\n res.push(this.generalOverloads[arg.termType]);\n }\n if (literalExpression) {\n // Defending implementation. Mainly the scary sort.\n // This function has cost O(n) + O(m * log(m)) with n = amount of overloads and m = amount of matched overloads\n // We map over each of the overloads, filter only the once that can be used (this is normally 1 or 2).\n // The sort function on an array with 1 or 2 arguments will be negligible.\n const concreteType = asKnownLiteralType(literalExpression.dataType);\n let subExtensionTable: GeneralSuperTypeDict;\n if (concreteType) {\n // Concrete dataType is known by expression-evaluator.\n subExtensionTable = superTypeDictTable[concreteType];\n } else {\n // Datatype is a custom datatype\n subExtensionTable = getSuperTypes(literalExpression.dataType, openWorldType);\n }\n const matches: [number, OverloadTree][] = this.literalOverLoads.filter(([ matchType, _ ]) =>\n matchType in subExtensionTable)\n .map(([ matchType, tree ]) => [ subExtensionTable[ matchType], tree ]);\n // eslint-disable-next-line unused-imports/no-unused-vars\n matches.sort(([ prioA, matchTypeA ], [ prioB, matchTypeB ]) => prioA - prioB);\n res.push(...matches.map(([ _, sortedType ]) => sortedType));\n }\n return res;\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport { BigNumber } from 'bignumber.js';\nimport { sha1, sha256, sha384, sha512 } from 'hash.js';\nimport { DataFactory } from 'rdf-data-factory';\nimport { resolve as resolveRelativeIri } from 'relative-to-absolute-iri';\nimport { hash as md5 } from 'spark-md5';\nimport * as uuid from 'uuid';\n\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport * as E from '../expressions';\nimport type { Quad } from '../expressions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from '../util/Consts';\nimport { RegularOperator, TypeAlias, TypeURL } from '../util/Consts';\nimport type { IDayTimeDurationRepresentation } from '../util/DateTimeHelpers';\nimport {\n dayTimeDurationsToSeconds,\n defaultedDateTimeRepresentation,\n defaultedDayTimeDurationRepresentation,\n defaultedDurationRepresentation,\n defaultedYearMonthDurationRepresentation,\n extractRawTimeZone,\n negateDuration,\n toDateTimeRepresentation,\n toUTCDate,\n yearMonthDurationsToMonths,\n} from '../util/DateTimeHelpers';\nimport * as Err from '../util/Errors';\nimport { orderTypes } from '../util/Ordering';\nimport { addDurationToDateTime, elapsedDuration } from '../util/SpecAlgos';\nimport type { IOverloadedDefinition } from './Core';\nimport { RegularFunction } from './Core';\nimport { bool, decimal, declare, double, integer, langString, string } from './Helpers';\nimport * as X from './XPathFunctions';\nimport { regularFunctions } from '.';\n\nconst DF = new DataFactory();\n\ntype Term = E.TermExpression;\n\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// Begin definitions\n\n// ----------------------------------------------------------------------------\n// Operator Mapping\n// https://www.w3.org/TR/sparql11-query/#OperatorMapping\n// ----------------------------------------------------------------------------\n\nconst not = {\n arity: 1,\n overloads: declare(C.RegularOperator.NOT)\n .onTerm1(() => val => bool(!val.coerceEBV()))\n .collect(),\n};\n\nconst unaryPlus = {\n arity: 1,\n overloads: declare(C.RegularOperator.UPLUS)\n .numericConverter(() => val => val)\n .collect(),\n};\n\nconst unaryMinus = {\n arity: 1,\n overloads: declare(C.RegularOperator.UMINUS)\n .numericConverter(() => val => -val)\n .collect(),\n};\n\nconst multiplication = {\n arity: 2,\n overloads: declare(C.RegularOperator.MULTIPLICATION)\n .arithmetic(() => (left, right) => new BigNumber(left).times(right).toNumber())\n .collect(),\n};\n\nconst division = {\n arity: 2,\n overloads: declare(C.RegularOperator.DIVISION)\n .arithmetic(() => (left, right) => new BigNumber(left).div(right).toNumber())\n .onBinaryTyped(\n [ TypeURL.XSD_INTEGER, TypeURL.XSD_INTEGER ],\n () => (left: number, right: number) => {\n if (right === 0) {\n throw new Err.ExpressionError('Integer division by 0');\n }\n return decimal(new BigNumber(left).div(right).toNumber());\n },\n )\n .collect(),\n};\n\nconst addition = {\n arity: 2,\n overloads: declare(C.RegularOperator.ADDITION)\n .arithmetic(() => (left, right) => new BigNumber(left).plus(right).toNumber())\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateTimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-dateTime\n new E.DateTimeLiteral(addDurationToDateTime(date.typedValue, defaultedDurationRepresentation(dur.typedValue))))\n .copy({\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [E.DateLiteral, E.DurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-date\n new E.DateLiteral(\n addDurationToDateTime(\n defaultedDateTimeRepresentation(date.typedValue),\n defaultedDurationRepresentation(dur.typedValue),\n ),\n ))\n .copy({\n from: [ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ time, dur ]: [E.TimeLiteral, E.DurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-add-dayTimeDuration-to-time\n new E.TimeLiteral(\n addDurationToDateTime(\n defaultedDateTimeRepresentation(time.typedValue),\n defaultedDurationRepresentation(dur.typedValue),\n ),\n ))\n .copy({\n from: [ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .collect(),\n};\n\nconst subtraction = {\n arity: 2,\n overloads: declare(C.RegularOperator.SUBTRACTION)\n .arithmetic(() => (left, right) => new BigNumber(left).minus(right).toNumber())\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], ({ defaultTimeZone }) =>\n ([ date1, date2 ]: [ E.DateTimeLiteral, E.DateTimeLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dateTimes;\n new E.DayTimeDurationLiteral(elapsedDuration(date1.typedValue, date2.typedValue, defaultTimeZone)))\n .copy({ from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME, TypeURL.XSD_TIME ]})\n .set([ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateTimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-dateTime\n new E.DateTimeLiteral(addDurationToDateTime(\n date.typedValue,\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .copy({\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ date, dur ]: [ E.DateLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-date\n new E.DateLiteral(addDurationToDateTime(\n defaultedDateTimeRepresentation(date.typedValue),\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .copy({\n from: [ TypeURL.XSD_DATE, TypeURL.XSD_DAY_TIME_DURATION ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_YEAR_MONTH_DURATION ],\n })\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ time, dur ]: [ E.TimeLiteral, E.DayTimeDurationLiteral ]) =>\n // https://www.w3.org/TR/xpath-functions/#func-subtract-dayTimeDuration-from-date\n new E.TimeLiteral(addDurationToDateTime(\n defaultedDateTimeRepresentation(time.typedValue),\n defaultedDurationRepresentation(negateDuration(dur.typedValue)),\n )))\n .collect(),\n};\n\n// https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal\nconst equality = {\n arity: 2,\n overloads: declare(C.RegularOperator.EQUAL)\n .numberTest(() => (left, right) => left === right)\n .stringTest(() => (left, right) => left.localeCompare(right) === 0)\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => ([ left, right ]: E.LangStringLiteral[]) => bool(left.str() === right.str() &&\n left.language === right.language),\n )\n // Fall through: a TypeURL.XSD_STRING is never equal to a TypeURL.RDF_LANG_STRING.\n .set([ TypeAlias.SPARQL_STRINGLY, TypeAlias.SPARQL_STRINGLY ], () => () => bool(false))\n .booleanTest(() => (left, right) => left === right)\n .dateTimeTest(({ defaultTimeZone }) => (left, right) =>\n toUTCDate(left, defaultTimeZone).getTime() === toUTCDate(right, defaultTimeZone).getTime())\n .copy({\n // https://www.w3.org/TR/xpath-functions/#func-date-equal\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ],\n })\n .set(\n [ 'quad', 'quad' ],\n context => ([ left, right ]) => {\n const op: RegularFunction = new RegularFunction(RegularOperator.EQUAL, equality);\n return bool(\n ( op.apply([ ( left).subject, ( right).subject ], context)).coerceEBV() &&\n ( op.apply([ ( left).predicate, ( right).predicate ], context)).coerceEBV() &&\n ( op.apply([ ( left).object, ( right).object ], context)).coerceEBV(),\n );\n },\n false,\n )\n .set(\n [ 'term', 'term' ],\n () => ([ left, right ]) => bool(RDFTermEqual(left, right)),\n false,\n )\n .set([ TypeURL.XSD_DURATION, TypeURL.XSD_DURATION ], () =>\n ([ dur1, dur2 ]: [ E.DurationLiteral, E.DurationLiteral ]) =>\n bool(yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur1.typedValue)) ===\n yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur2.typedValue)) &&\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur1.typedValue)) ===\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur2.typedValue))))\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_TIME ], ({ defaultTimeZone }) =>\n ([ time1, time2 ]: [E.TimeLiteral, E.TimeLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-time-equal\n bool(toUTCDate(defaultedDateTimeRepresentation(time1.typedValue), defaultTimeZone).getTime() ===\n toUTCDate(defaultedDateTimeRepresentation(time2.typedValue), defaultTimeZone).getTime()))\n .collect(),\n};\n\nfunction RDFTermEqual(_left: Term, _right: Term): boolean {\n const left = _left.toRDF();\n const right = _right.toRDF();\n const val = left.equals(right);\n if (!val && (left.termType === 'Literal') && (right.termType === 'Literal')) {\n throw new Err.RDFEqualTypeError([ _left, _right ]);\n }\n return val;\n}\n\nconst inequality = {\n arity: 2,\n overloads: declare(C.RegularOperator.NOT_EQUAL)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n bool(!( regularFunctions[C.RegularOperator.EQUAL]\n .apply([ first, second ], context)).typedValue))\n .collect(),\n};\n\nconst lesserThan = {\n arity: 2,\n overloads: declare(C.RegularOperator.LT)\n .numberTest(() => (left, right) => left < right)\n .stringTest(() => (left, right) => left.localeCompare(right) === -1)\n .booleanTest(() => (left, right) => left < right)\n .set(\n [ 'quad', 'quad' ],\n () => ([ left, right ]) => bool(orderTypes(left.toRDF(), right.toRDF(), true) === -1),\n false,\n )\n .dateTimeTest(({ defaultTimeZone }) => (left, right) =>\n toUTCDate(left, defaultTimeZone).getTime() < toUTCDate(right, defaultTimeZone).getTime())\n .copy({\n // https://www.w3.org/TR/xpath-functions/#func-date-less-than\n from: [ TypeURL.XSD_DATE_TIME, TypeURL.XSD_DATE_TIME ],\n to: [ TypeURL.XSD_DATE, TypeURL.XSD_DATE ],\n })\n .set([ TypeURL.XSD_YEAR_MONTH_DURATION, TypeURL.XSD_YEAR_MONTH_DURATION ], () =>\n ([ dur1L, dur2L ]: [E.YearMonthDurationLiteral, E.YearMonthDurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-yearMonthDuration-less-than\n bool(yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur1L.typedValue)) <\n yearMonthDurationsToMonths(defaultedYearMonthDurationRepresentation(dur2L.typedValue))))\n .set([ TypeURL.XSD_DAY_TIME_DURATION, TypeURL.XSD_DAY_TIME_DURATION ], () =>\n ([ dur1, dur2 ]: [E.DayTimeDurationLiteral, E.DayTimeDurationLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-dayTimeDuration-greater-than\n bool(dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur1.typedValue)) <\n dayTimeDurationsToSeconds(defaultedDayTimeDurationRepresentation(dur2.typedValue))))\n .set([ TypeURL.XSD_TIME, TypeURL.XSD_TIME ], ({ defaultTimeZone }) =>\n ([ time1, time2 ]: [E.TimeLiteral, E.TimeLiteral]) =>\n // https://www.w3.org/TR/xpath-functions/#func-time-less-than\n bool(toUTCDate(defaultedDateTimeRepresentation(time1.typedValue), defaultTimeZone).getTime() <\n toUTCDate(defaultedDateTimeRepresentation(time2.typedValue), defaultTimeZone).getTime()))\n .collect(),\n};\n\nconst greaterThan = {\n arity: 2,\n overloads: declare(C.RegularOperator.GT)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X < Y -> Y > X\n regularFunctions[C.RegularOperator.LT].apply([ second, first ], context))\n .collect(),\n};\n\nconst lesserThanEqual = {\n arity: 2,\n overloads: declare(C.RegularOperator.LTE)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X <= Y -> X < Y || X = Y\n // First check if the first is lesser than the second, then check if they are equal.\n // Doing this, the correct error will be thrown, each type that has a lesserThanEqual has a matching lesserThan.\n bool(\n ( regularFunctions[C.RegularOperator.LT].apply([ first, second ], context)).typedValue ||\n ( regularFunctions[C.RegularOperator.EQUAL].apply([ first, second ], context)).typedValue,\n ))\n .collect(),\n};\n\nconst greaterThanEqual = {\n arity: 2,\n overloads: declare(C.RegularOperator.GTE)\n .set([ 'term', 'term' ], context =>\n ([ first, second ]) =>\n // X >= Y -> Y <= X\n regularFunctions[C.RegularOperator.LTE].apply([ second, first ], context))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on RDF Terms\n// https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isIRI\n */\nconst isIRI = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_IRI)\n .onTerm1(() => term => bool(term.termType === 'namedNode'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isBlank\n */\nconst isBlank = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_BLANK)\n .onTerm1(() => term => bool(term.termType === 'blankNode'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isLiteral\n */\nconst isLiteral = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_LITERAL)\n .onTerm1(() => term => bool(term.termType === 'literal'))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-isNumeric\n */\nconst isNumeric = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_NUMERIC)\n .onNumeric1(() => () => bool(true))\n .onTerm1(() => () => bool(false))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-str\n */\nconst STR = {\n arity: 1,\n overloads: declare(C.RegularOperator.STR)\n .onTerm1(() => term => string(term.str()))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-lang\n */\nconst lang = {\n arity: 1,\n overloads: declare(C.RegularOperator.LANG)\n .onLiteral1(() => lit => string(lit.language ?? ''))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-datatype\n */\nconst datatype = {\n arity: 1,\n overloads: declare(C.RegularOperator.DATATYPE)\n .onLiteral1(() => lit => new E.NamedNode(lit.dataType))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-iri\n */\nconst IRI = {\n arity: 1,\n overloads: declare(C.RegularOperator.IRI)\n .set([ 'namedNode' ], context => (args) => {\n const lit = args[0];\n const iri = resolveRelativeIri(lit.str(), context.baseIRI ?? '');\n return new E.NamedNode(iri);\n })\n .onString1(context => (lit) => {\n const iri = resolveRelativeIri(lit.str(), context.baseIRI ?? '');\n return new E.NamedNode(iri);\n })\n .collect(),\n};\n\n// See special functions\n// const BNODE = {};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strdt\n */\nconst STRDT = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRDT).set(\n [ TypeURL.XSD_STRING, 'namedNode' ],\n ({ superTypeProvider }) => ([ str, iri ]: [E.StringLiteral, E.NamedNode]) => {\n const lit = DF.literal(str.typedValue, DF.namedNode(iri.value));\n return new TermTransformer(superTypeProvider).transformLiteral(lit);\n },\n ).collect(),\n};\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strlang\n */\nconst STRLANG = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRLANG)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (val: string, language: string) => new E.LangStringLiteral(val, language.toLowerCase()),\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-uuid\n */\nconst UUID = {\n arity: 0,\n overloads: declare(C.RegularOperator.UUID)\n .set([], () => () => new E.NamedNode(`urn:uuid:${uuid.v4()}`))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-struuid\n */\nconst STRUUID = {\n arity: 0,\n overloads: declare(C.RegularOperator.STRUUID)\n .set([], () => () => string(uuid.v4()))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on strings\n// https://www.w3.org/TR/sparql11-query/#func-forms\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strlen\n */\nconst STRLEN = {\n arity: 1,\n overloads: declare(C.RegularOperator.STRLEN)\n .onStringly1(() => str => integer([ ...str.typedValue ].length))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-substr\n */\nconst SUBSTR = {\n arity: [ 2, 3 ],\n overloads: declare(C.RegularOperator.SUBSTR)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_INTEGER ],\n () => (source: string, startingLoc: number) => string([ ...source ].slice(startingLoc - 1).join('')),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_INTEGER ],\n () => (source: E.LangStringLiteral, startingLoc: E.NumericLiteral) => {\n const sub = [ ...source.typedValue ].slice(startingLoc.typedValue - 1).join('');\n return langString(sub, source.language);\n },\n )\n .onTernaryTyped([\n TypeURL.XSD_STRING,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_INTEGER,\n ], () => (source: string, startingLoc: number, length: number) =>\n string([ ...source ].slice(startingLoc - 1, length + startingLoc - 1).join('')))\n .onTernary([\n TypeURL.RDF_LANG_STRING,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_INTEGER,\n ], () => (source: E.LangStringLiteral, startingLoc: E.NumericLiteral, length: E.NumericLiteral) => {\n const sub = [ ...source.typedValue ]\n .slice(startingLoc.typedValue - 1, length.typedValue + startingLoc.typedValue - 1).join('');\n return langString(sub, source.language);\n })\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-ucase\n */\nconst UCASE = {\n arity: 1,\n overloads: declare(C.RegularOperator.UCASE)\n .onString1Typed(() => lit => string(lit.toUpperCase()))\n .onLangString1(() => lit => langString(lit.typedValue.toUpperCase(), lit.language))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-lcase\n */\nconst LCASE = {\n arity: 1,\n overloads: declare(C.RegularOperator.LCASE)\n .onString1Typed(() => lit => string(lit.toLowerCase()))\n .onLangString1(() => lit => langString(lit.typedValue.toLowerCase(), lit.language))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strstarts\n * for this and the following functions you'll see (string, langstring) is not allowed. This behaviour is defined in:\n * https://www.w3.org/TR/sparql11-query/#func-arg-compatibility\n */\nconst STRSTARTS = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRSTARTS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.startsWith(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.startsWith(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strends\n */\nconst STRENDS = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRENDS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.endsWith(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.endsWith(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-contains\n */\nconst CONTAINS = {\n arity: 2,\n overloads: declare(C.RegularOperator.CONTAINS)\n .onBinaryTyped(\n [ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => bool(arg1.includes(arg2)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n return bool(arg1.typedValue.includes(arg2.typedValue));\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strbefore\n */\nconst STRBEFORE = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRBEFORE)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => string(arg1.slice(0, Math.max(0, arg1.indexOf(arg2)))),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.StringLiteral) => {\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = arg1.typedValue.slice(0, Math.max(0, a1.indexOf(a2)));\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = arg1.typedValue.slice(0, Math.max(0, a1.indexOf(a2)));\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-strafter\n */\nconst STRAFTER = {\n arity: 2,\n overloads: declare(C.RegularOperator.STRAFTER)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg1: string, arg2: string) => string(arg1.slice(arg1.indexOf(arg2)).slice(arg2.length)),\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.StringLiteral) => {\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = a1.slice(a1.indexOf(a2)).slice(a2.length);\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .onBinary(\n [ TypeURL.RDF_LANG_STRING, TypeURL.RDF_LANG_STRING ],\n () => (arg1: E.LangStringLiteral, arg2: E.LangStringLiteral) => {\n if (arg1.language !== arg2.language) {\n throw new Err.IncompatibleLanguageOperation(arg1, arg2);\n }\n const [ a1, a2 ] = [ arg1.typedValue, arg2.typedValue ];\n const sub = a1.slice(a1.indexOf(a2)).slice(a2.length);\n return sub || !a2 ? langString(sub, arg1.language) : string(sub);\n },\n )\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-encode\n */\nconst ENCODE_FOR_URI = {\n arity: 1,\n overloads: declare(C.RegularOperator.ENCODE_FOR_URI)\n .onStringly1Typed(() => val => string(encodeURI(val))).collect(),\n};\n\n// See special operators\n// const CONCAT = {}\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-langMatches\n */\nconst langmatches = {\n arity: 2,\n overloads: declare(C.RegularOperator.LANG_MATCHES)\n .onBinaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (tag: string, range: string) => bool(X.langMatches(tag, range)),\n ).collect(),\n};\n\nfunction regex2(): (text: string, pattern: string) => E.BooleanLiteral {\n return (text: string, pattern: string) => bool(X.matches(text, pattern));\n}\nfunction regex3(): (text: string, pattern: string, flags: string) => E.BooleanLiteral {\n return (text: string, pattern: string, flags: string) => bool(X.matches(text, pattern, flags));\n}\n/**\n * https://www.w3.org/TR/sparql11-query/#func-regex\n */\nconst REGEX = {\n arity: [ 2, 3 ],\n overloads: declare(C.RegularOperator.REGEX)\n .onBinaryTyped([ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING ], regex2)\n .onTernaryTyped([ TypeAlias.SPARQL_STRINGLY, TypeURL.XSD_STRING, TypeURL.XSD_STRING ], regex3)\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-replace\n */\nconst REPLACE = {\n arity: [ 3, 4 ],\n overloads: declare(C.RegularOperator.REPLACE)\n .onTernaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg: string, pattern: string, replacement: string) =>\n string(X.replace(arg, pattern, replacement)),\n )\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => ([ arg, pattern, replacement ]: [E.LangStringLiteral, E.StringLiteral, E.StringLiteral]) => {\n const result = X.replace(arg.typedValue, pattern.typedValue, replacement.typedValue);\n return langString(result, arg.language);\n },\n )\n .onQuaternaryTyped(\n [ TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => (arg: string, pattern: string, replacement: string, flags: string) =>\n string(X.replace(arg, pattern, replacement, flags)),\n )\n .set(\n [ TypeURL.RDF_LANG_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING, TypeURL.XSD_STRING ],\n () => ([ arg, pattern, replacement, flags ]:\n [E.LangStringLiteral, E.StringLiteral, E.StringLiteral, E.StringLiteral]) => {\n const result = X.replace(arg.typedValue, pattern.typedValue, replacement.typedValue, flags.typedValue);\n return langString(result, arg.language);\n },\n )\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on numerics\n// https://www.w3.org/TR/sparql11-query/#func-numerics\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-abs\n */\nconst abs = {\n arity: 1,\n overloads: declare(C.RegularOperator.ABS)\n .numericConverter(() => num => Math.abs(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-round\n */\nconst round = {\n arity: 1,\n overloads: declare(C.RegularOperator.ROUND)\n .numericConverter(() => num => Math.round(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-ceil\n */\nconst ceil = {\n arity: 1,\n overloads: declare(C.RegularOperator.CEIL)\n .numericConverter(() => num => Math.ceil(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-floor\n */\nconst floor = {\n arity: 1,\n overloads: declare(C.RegularOperator.FLOOR)\n .numericConverter(() => num => Math.floor(num))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#idp2130040\n */\nconst rand = {\n arity: 0,\n overloads: declare(C.RegularOperator.RAND)\n .set([], () => () => double(Math.random()))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions on Dates and Times\n// https://www.w3.org/TR/sparql11-query/#func-date-time\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-now\n */\nconst now = {\n arity: 0,\n overloads: declare(C.RegularOperator.NOW).set([], (sharedContext: ICompleteSharedContext) => () =>\n new E.DateTimeLiteral(toDateTimeRepresentation(\n { date: sharedContext.now, timeZone: sharedContext.defaultTimeZone },\n ))).collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-year\n */\nconst year = {\n arity: 1,\n overloads: declare(C.RegularOperator.YEAR)\n .onDateTime1(\n () => date => integer(date.typedValue.year),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [E.DateLiteral ]) => integer(date.typedValue.year))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-month\n */\nconst month = {\n arity: 1,\n overloads: declare(C.RegularOperator.MONTH)\n .onDateTime1(\n () => date => integer(date.typedValue.month),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [ E.DateLiteral]) => integer(date.typedValue.month))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-day\n */\nconst day = {\n arity: 1,\n overloads: declare(C.RegularOperator.DAY)\n .onDateTime1(\n () => date => integer(date.typedValue.day),\n )\n .set([ TypeURL.XSD_DATE ], () => ([ date ]: [ E.DateLiteral]) => integer(date.typedValue.day))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-hours\n */\nconst hours = {\n arity: 1,\n overloads: declare(C.RegularOperator.HOURS)\n .onDateTime1(\n () => date => integer(date.typedValue.hours),\n )\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.hours))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-minutes\n */\nconst minutes = {\n arity: 1,\n overloads: declare(C.RegularOperator.MINUTES)\n .onDateTime1(() => date => integer(date.typedValue.minutes))\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.minutes))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-seconds\n */\nconst seconds = {\n arity: 1,\n overloads: declare(C.RegularOperator.SECONDS)\n .onDateTime1(() => date => decimal(date.typedValue.seconds))\n .set([ TypeURL.XSD_TIME ], () => ([ time ]: [ E.TimeLiteral]) => integer(time.typedValue.seconds))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-timezone\n */\nconst timezone = {\n arity: 1,\n overloads: declare(C.RegularOperator.TIMEZONE)\n .onDateTime1(\n () => (date) => {\n const duration: Partial = {\n hours: date.typedValue.zoneHours,\n minutes: date.typedValue.zoneMinutes,\n };\n if (duration.hours === undefined && duration.minutes === undefined) {\n throw new Err.InvalidTimezoneCall(date.str());\n }\n return new E.DayTimeDurationLiteral(duration);\n },\n )\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME ]})\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-tz\n */\nconst tz = {\n arity: 1,\n overloads: declare(C.RegularOperator.TZ)\n .onDateTime1(\n () => date => string(extractRawTimeZone(date.str())),\n )\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_DATE ]})\n .copy({ from: [ TypeURL.XSD_DATE_TIME ], to: [ TypeURL.XSD_TIME ]})\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Hash functions\n// https://www.w3.org/TR/sparql11-query/#func-hash\n// ----------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-md5\n */\nconst MD5 = {\n arity: 1,\n overloads: declare(C.RegularOperator.MD5)\n .onString1Typed(() => str => string(md5(str)))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha1\n */\nconst SHA1 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA1)\n .onString1Typed(() => str => string(sha1().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha256\n */\nconst SHA256 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA256)\n .onString1Typed(() => str => string(sha256().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha384\n */\nconst SHA384 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA384)\n .onString1Typed(() => str => string(sha384().update(str).digest('hex')))\n .collect(),\n};\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sha512\n */\nconst SHA512 = {\n arity: 1,\n overloads: declare(C.RegularOperator.SHA512)\n .onString1Typed(() => str => string(sha512().update(str).digest('hex')))\n .collect(),\n};\n\n// ----------------------------------------------------------------------------\n// Functions for quoted triples\n// https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n// ----------------------------------------------------------------------------\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n */\nconst triple = {\n arity: 3,\n overloads: declare(C.RegularOperator.TRIPLE)\n .onTerm3(\n context => (...args) => new E.Quad(\n DF.quad(args[0].toRDF(), args[1].toRDF(), args[2].toRDF()),\n context.superTypeProvider,\n ),\n )\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#subject\n */\nconst subject = {\n arity: 1,\n overloads: declare(C.RegularOperator.SUBJECT)\n .onQuad1(() => quad => quad.subject)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#predicate\n */\nconst predicate = {\n arity: 1,\n overloads: declare(C.RegularOperator.PREDICATE)\n .onQuad1(() => quad => quad.predicate)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#object\n */\nconst object = {\n arity: 1,\n overloads: declare(C.RegularOperator.OBJECT)\n .onQuad1(() => quad => quad.object)\n .collect(),\n};\n\n/**\n * https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#istriple\n */\nconst istriple = {\n arity: 1,\n overloads: declare(C.RegularOperator.IS_TRIPLE)\n .onTerm1(() => term => bool(term.termType === 'quad'))\n .collect(),\n};\n\n// End definitions.\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n\n/**\n * Collect all the definitions from above into an object\n */\nexport const definitions: Record = {\n // --------------------------------------------------------------------------\n // Operator Mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n // --------------------------------------------------------------------------\n '!': not,\n uplus: unaryPlus,\n uminus: unaryMinus,\n '*': multiplication,\n '/': division,\n '+': addition,\n '-': subtraction,\n '=': equality,\n '!=': inequality,\n '<': lesserThan,\n '>': greaterThan,\n '<=': lesserThanEqual,\n '>=': greaterThanEqual,\n\n // --------------------------------------------------------------------------\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n // --------------------------------------------------------------------------\n isiri: isIRI,\n isuri: isIRI,\n isblank: isBlank,\n isliteral: isLiteral,\n isnumeric: isNumeric,\n str: STR,\n lang,\n datatype,\n iri: IRI,\n uri: IRI,\n // 'BNODE': BNODE (see special operators),\n strdt: STRDT,\n strlang: STRLANG,\n uuid: UUID,\n struuid: STRUUID,\n\n // --------------------------------------------------------------------------\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // --------------------------------------------------------------------------\n strlen: STRLEN,\n substr: SUBSTR,\n ucase: UCASE,\n lcase: LCASE,\n strstarts: STRSTARTS,\n strends: STRENDS,\n contains: CONTAINS,\n strbefore: STRBEFORE,\n strafter: STRAFTER,\n encode_for_uri: ENCODE_FOR_URI,\n // 'concat': CONCAT (see special operators)\n langmatches,\n regex: REGEX,\n replace: REPLACE,\n\n // --------------------------------------------------------------------------\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n // --------------------------------------------------------------------------\n abs,\n round,\n ceil,\n floor,\n rand,\n\n // --------------------------------------------------------------------------\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n // --------------------------------------------------------------------------\n now,\n year,\n month,\n day,\n hours,\n minutes,\n seconds,\n timezone,\n tz,\n\n // --------------------------------------------------------------------------\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n // --------------------------------------------------------------------------\n md5: MD5,\n sha1: SHA1,\n sha256: SHA256,\n sha384: SHA384,\n sha512: SHA512,\n\n // --------------------------------------------------------------------------\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n // --------------------------------------------------------------------------\n triple,\n subject,\n predicate,\n object,\n istriple,\n};\n","import type * as RDF from '@rdfjs/types';\nimport * as uuid from 'uuid';\nimport * as E from '../expressions';\nimport * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { bool, declare, expressionToVar, langString, string } from './Helpers';\nimport type { EvalContextAsync, EvalContextSync, OverloadTree } from '.';\nimport { regularFunctions, specialFunctions } from '.';\n\ntype Term = E.TermExpression;\ntype PTerm = Promise;\n\n// ----------------------------------------------------------------------------\n// Functional forms\n// ----------------------------------------------------------------------------\n\n// BOUND ----------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-bound\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst bound: ISpecialDefinition = {\n arity: 1,\n async applyAsync({ args, mapping }: EvalContextAsync): PTerm {\n return bound_({ args, mapping });\n },\n applySynchronously({ args, mapping }: EvalContextSync): Term {\n return bound_({ args, mapping });\n },\n};\n\nfunction bound_({ args, mapping }: { args: E.Expression[]; mapping: RDF.Bindings }): E.BooleanLiteral {\n const variable = args[0];\n if (variable.expressionType !== E.ExpressionType.Variable) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BOUND);\n }\n const val = mapping.has(expressionToVar(variable));\n return bool(val);\n}\n\n// IF -------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-if\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst ifSPARQL: ISpecialDefinition = {\n arity: 3,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const valFirst = await evaluate(args[0], mapping);\n const ebv = valFirst.coerceEBV();\n return ebv ?\n evaluate(args[1], mapping) :\n evaluate(args[2], mapping);\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const valFirst = evaluate(args[0], mapping);\n const ebv = valFirst.coerceEBV();\n return ebv ?\n evaluate(args[1], mapping) :\n evaluate(args[2], mapping);\n },\n};\n\n// COALESCE -------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-coalesce\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst coalesce: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const errors: Error[] = [];\n for (const expr of args) {\n try {\n return await evaluate(expr, mapping);\n } catch (error: unknown) {\n errors.push( error);\n }\n }\n throw new Err.CoalesceError(errors);\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const errors: Error[] = [];\n for (const expr of args) {\n try {\n return evaluate(expr, mapping);\n } catch (error: unknown) {\n errors.push( error);\n }\n }\n throw new Err.CoalesceError(errors);\n },\n};\n\n// Logical-or (||) ------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-logical-or\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst logicalOr: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = await evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (left) {\n return bool(true);\n }\n const rightTerm = await evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = await evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (!rightError) {\n throw error;\n }\n return bool(true);\n }\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (left) {\n return bool(true);\n }\n const rightTerm = evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (!rightError) {\n throw error;\n }\n return bool(true);\n }\n },\n};\n\n// Logical-and (&&) -----------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-logical-and\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst logicalAnd: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = await evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (!left) {\n return bool(false);\n }\n const rightTerm = await evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = await evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (rightError) {\n throw error;\n }\n return bool(false);\n }\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ leftExpr, rightExpr ] = args;\n try {\n const leftTerm = evaluate(leftExpr, mapping);\n const left = leftTerm.coerceEBV();\n if (!left) {\n return bool(false);\n }\n const rightTerm = evaluate(rightExpr, mapping);\n const right = rightTerm.coerceEBV();\n return bool(right);\n } catch (error: unknown) {\n const rightErrorTerm = evaluate(rightExpr, mapping);\n const rightError = rightErrorTerm.coerceEBV();\n if (rightError) {\n throw error;\n }\n return bool(false);\n }\n },\n};\n\n// SameTerm -------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-sameTerm\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst sameTerm: ISpecialDefinition = {\n arity: 2,\n async applyAsync({ args, mapping, evaluate }: EvalContextAsync): PTerm {\n const [ leftExpr, rightExpr ] = args.map(arg => evaluate(arg, mapping));\n const [ left, right ] = await Promise.all([ leftExpr, rightExpr ]);\n return bool(left.toRDF().equals(right.toRDF()));\n },\n applySynchronously({ args, mapping, evaluate }: EvalContextSync): Term {\n const [ left, right ] = args.map(arg => evaluate(arg, mapping));\n return bool(left.toRDF().equals(right.toRDF()));\n },\n};\n\n// IN -------------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-in\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst inSPARQL: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length > 0;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate } = context;\n const [ leftExpr, ...remaining ] = args;\n const left = await evaluate(leftExpr, mapping);\n return inRecursiveAsync(left, { ...context, args: remaining }, []);\n },\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate } = context;\n const [ leftExpr, ...remaining ] = args;\n const left = evaluate(leftExpr, mapping);\n return inRecursiveSync(left, { ...context, args: remaining }, []);\n },\n};\n\nasync function inRecursiveAsync(\n needle: Term,\n context: EvalContextAsync,\n results: (Error | false)[],\n): PTerm {\n const { args, mapping, evaluate } = context;\n if (args.length === 0) {\n const noErrors = results.every(val => !val);\n return noErrors ? bool(false) : Promise.reject(new Err.InError(results));\n }\n\n try {\n const nextExpression = args.shift();\n // We know this will not be undefined because we check args.length === 0\n const next = await evaluate(nextExpression!, mapping);\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n if (( isEqual.apply([ needle, next ], context)).typedValue) {\n return bool(true);\n }\n return inRecursiveAsync(needle, context, [ ...results, false ]);\n } catch (error: unknown) {\n return inRecursiveAsync(needle, context, [ ...results, error ]);\n }\n}\n\nfunction inRecursiveSync(\n needle: Term,\n context: EvalContextSync,\n results: (Error | false)[],\n): Term {\n const { args, mapping, evaluate } = context;\n if (args.length === 0) {\n const noErrors = results.every(val => !val);\n if (noErrors) {\n return bool(false);\n }\n throw new Err.InError(results);\n }\n\n try {\n const nextExpression = args.shift();\n // We know this will not be undefined because we check args.length === 0\n const next = evaluate(nextExpression!, mapping);\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n if (( isEqual.apply([ needle, next ], context)).typedValue) {\n return bool(true);\n }\n return inRecursiveSync(needle, context, [ ...results, false ]);\n } catch (error: unknown) {\n return inRecursiveSync(needle, context, [ ...results, error ]);\n }\n}\n\n// NOT IN ---------------------------------------------------------------------\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-not-in\n * This function doesn't require type promotion or subtype-substitution, everything works on TermExpression\n */\nconst notInSPARQL: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length > 0;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const _in = specialFunctions[C.SpecialOperator.IN];\n const isIn = await _in.applyAsync(context);\n return bool(!( isIn).typedValue);\n },\n applySynchronously(context: EvalContextSync): Term {\n const _in = specialFunctions[C.SpecialOperator.IN];\n const isIn = _in.applySynchronously(context);\n return bool(!( isIn).typedValue);\n },\n};\n\n// ----------------------------------------------------------------------------\n// Annoying functions\n// ----------------------------------------------------------------------------\n\n// CONCAT ---------------------------------------------------------------------\n\n/**\n * This OverloadTree with the constant function will handle both type promotion and subtype-substitution\n */\nconst concatTree: OverloadTree = declare(C.SpecialOperator.CONCAT).onStringly1(() => expr => expr)\n .collect();\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-concat\n */\nconst concat: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate, functionArgumentsCache, superTypeProvider } = context;\n const pLits: Promise>[] = args\n .map(async expr => evaluate(expr, mapping))\n .map(async(pTerm) => {\n const operation = concatTree.search([ await pTerm ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.CONCAT);\n }\n return > operation(context)([ await pTerm ]);\n });\n const lits = await Promise.all(pLits);\n const strings = lits.map(lit => lit.typedValue);\n const joined = strings.join('');\n const lang = langAllEqual(lits) ? lits[0].language : undefined;\n return lang ? langString(joined, lang) : string(joined);\n },\n\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const lits = args\n .map(expr => evaluate(expr, mapping))\n .map((pTerm) => {\n const operation = concatTree.search([ pTerm ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.CONCAT);\n }\n return > operation(context)([ pTerm ]);\n });\n const strings = lits.map(lit => lit.typedValue);\n const joined = strings.join('');\n const lang = langAllEqual(lits) ? lits[0].language : undefined;\n return lang ? langString(joined, lang) : string(joined);\n },\n};\n\nfunction langAllEqual(lits: E.Literal[]): boolean {\n return lits.length > 0 && lits.every(lit => lit.language === lits[0].language);\n}\n\n// ----------------------------------------------------------------------------\n// Context dependant functions\n// ----------------------------------------------------------------------------\n\n// BNODE ---------------------------------------------------------------------\n\n/**\n * This OverloadTree with the constant function will handle both type promotion and subtype-substitution\n */\nconst bnodeTree = declare(C.SpecialOperator.BNODE).onString1(() => arg => arg).collect();\n\n/**\n * https://www.w3.org/TR/sparql11-query/#func-bnode\n * id has to be distinct over all id's in dataset\n */\nconst BNODE: ISpecialDefinition = {\n arity: Number.POSITIVE_INFINITY,\n checkArity(args: E.Expression[]) {\n return args.length === 0 || args.length === 1;\n },\n async applyAsync(context: EvalContextAsync): PTerm {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const input = args.length === 1 ?\n await evaluate(args[0], mapping) :\n undefined;\n\n let strInput: string | undefined;\n if (input) {\n const operation = bnodeTree.search([ input ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BNODE);\n }\n strInput = operation(context)([ input ]).str();\n }\n\n if (context.bnode) {\n const bnode = await context.bnode(strInput);\n return new E.BlankNode(bnode);\n }\n\n return BNODE_(strInput);\n },\n applySynchronously(context: EvalContextSync): Term {\n const { args, mapping, evaluate, superTypeProvider, functionArgumentsCache } = context;\n const input = args.length === 1 ?\n evaluate(args[0], mapping) :\n undefined;\n\n let strInput: string | undefined;\n if (input) {\n const operation = bnodeTree.search([ input ], superTypeProvider, functionArgumentsCache);\n if (!operation) {\n throw new Err.InvalidArgumentTypes(args, C.SpecialOperator.BNODE);\n }\n strInput = operation(context)([ input ]).str();\n }\n\n if (context.bnode) {\n const bnode = context.bnode(strInput);\n return new E.BlankNode(bnode);\n }\n\n return BNODE_(strInput);\n },\n};\n\nfunction BNODE_(input?: string): E.BlankNode {\n return new E.BlankNode(input ?? uuid.v4());\n}\n\n// ----------------------------------------------------------------------------\n// Wrap these declarations into functions\n// ----------------------------------------------------------------------------\n\nexport interface ISpecialDefinition {\n arity: number;\n applyAsync: E.SpecialApplicationAsync;\n applySynchronously: E.SpecialApplicationSync;\n checkArity?: (args: E.Expression[]) => boolean;\n}\n\nexport const specialDefinitions: Record = {\n // --------------------------------------------------------------------------\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // --------------------------------------------------------------------------\n bound,\n if: ifSPARQL,\n coalesce,\n '&&': logicalAnd,\n '||': logicalOr,\n sameterm: sameTerm,\n in: inSPARQL,\n notin: notInSPARQL,\n\n // Annoying functions\n concat,\n\n // Context dependent functions\n bnode: BNODE,\n};\n","// https://www.w3.org/TR/xpath-functions/#func-matches\n// https://www.w3.org/TR/xpath-functions/#flags\nexport function matches(text: string, pattern: string, flags?: string): boolean {\n // TODO: Only flags 'i' and 'm' match between XPath and JS.\n // 's', 'x', 'q', would need proper implementation.\n const reg = new RegExp(pattern, flags);\n return reg.test(text);\n}\n\n// TODO: Fix flags\n// https://www.w3.org/TR/xpath-functions/#func-replace\nexport function replace(arg: string, pattern: string, replacement: string, flags?: string): string {\n let reg = new RegExp(pattern, flags);\n if (!reg.global) {\n const flags_ = flags ?? '';\n reg = new RegExp(pattern, `${flags_}g`);\n }\n return arg.replace(reg, replacement);\n}\n\n// TODO: Not an XPath function\n// TODO: Publish as package\n// https://www.ietf.org/rfc/rfc4647.txt\n// https://www.w3.org/TR/sparql11-query/#func-langMatches\nexport function langMatches(tag: string, range: string): boolean {\n const langTags = tag.split('-');\n const rangeTags = range.split('-');\n\n if (!_matchLangTag(rangeTags[0], langTags[0]) &&\n !_isWildCard(langTags[0])) {\n return false;\n }\n\n let lI = 1;\n let rI = 1;\n while (rI < rangeTags.length) {\n if (_isWildCard(rangeTags[rI])) {\n rI++;\n continue;\n }\n if (lI === langTags.length) {\n return false;\n }\n if (_matchLangTag(rangeTags[rI], langTags[lI])) {\n lI++;\n rI++;\n continue;\n }\n if (langTags[lI].length === 1) {\n return false;\n }\n lI++;\n }\n return true;\n}\n\nfunction _isWildCard(tag: string): boolean {\n return tag === '*';\n}\n\nfunction _matchLangTag(left: string, right: string): boolean {\n const matchInitial = new RegExp(`/${left}/`, 'iu');\n return matchInitial.test(`/${right}/`);\n}\n","import { Algebra as Alg } from 'sparqlalgebrajs';\nimport type { AsyncExtensionFunction, AsyncExtensionFunctionCreator } from '../evaluators/AsyncEvaluator';\nimport type { ICompleteSharedContext } from '../evaluators/evaluatorHelpers/BaseExpressionEvaluator';\nimport type { SyncExtensionFunction, SyncExtensionFunctionCreator } from '../evaluators/SyncEvaluator';\nimport * as E from '../expressions';\nimport type { AsyncExtensionApplication, SimpleApplication } from '../expressions';\nimport { namedFunctions, regularFunctions, specialFunctions } from '../functions';\nimport * as C from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { ExtensionFunctionError } from '../util/Errors';\nimport type { ITermTransformer } from './TermTransformer';\nimport { TermTransformer } from './TermTransformer';\n\ntype FunctionCreatorConfig = { type: 'sync'; creator: SyncExtensionFunctionCreator } |\n{ type: 'async'; creator: AsyncExtensionFunctionCreator };\n\ntype AlgebraTransformConfig = ICompleteSharedContext & FunctionCreatorConfig;\n\nexport interface IAlgebraTransformer extends ITermTransformer {\n transformAlgebra: (expr: Alg.Expression) => E.Expression;\n}\n\nexport class AlgebraTransformer extends TermTransformer implements IAlgebraTransformer {\n private readonly creatorConfig: FunctionCreatorConfig;\n public constructor(protected readonly algebraConfig: AlgebraTransformConfig) {\n super(algebraConfig.superTypeProvider);\n this.creatorConfig = { type: algebraConfig.type, creator: algebraConfig.creator };\n }\n\n public transformAlgebra(expr: Alg.Expression): E.Expression {\n const types = Alg.expressionTypes;\n\n switch (expr.expressionType) {\n case types.TERM:\n return this.transformTerm(expr);\n case types.OPERATOR:\n return this.transformOperator(expr);\n case types.NAMED:\n return this.transformNamed(expr);\n case types.EXISTENCE:\n return AlgebraTransformer.transformExistence(expr);\n case types.AGGREGATE:\n return AlgebraTransformer.transformAggregate(expr);\n case types.WILDCARD:\n return AlgebraTransformer.transformWildcard(expr);\n }\n }\n\n private static transformWildcard(term: Alg.WildcardExpression): E.Expression {\n return new E.NamedNode(term.wildcard.value);\n }\n\n private transformOperator(expr: Alg.OperatorExpression): E.OperatorExpression | E.SpecialOperatorExpression {\n const operator = expr.operator.toLowerCase();\n if (C.SpecialOperators.has(operator)) {\n const specialOp = operator;\n const specialArgs = expr.args.map(arg => this.transformAlgebra(arg));\n const specialFunc = specialFunctions[specialOp];\n if (!specialFunc.checkArity(specialArgs)) {\n throw new Err.InvalidArity(specialArgs, specialOp);\n }\n return new E.SpecialOperator(specialArgs, specialFunc.applyAsync, specialFunc.applySynchronously);\n }\n if (!C.Operators.has(operator)) {\n throw new Err.UnknownOperator(expr.operator);\n }\n const regularOp = operator;\n const regularArgs = expr.args.map(arg => this.transformAlgebra(arg));\n const regularFunc = regularFunctions[regularOp];\n if (!AlgebraTransformer.hasCorrectArity(regularArgs, regularFunc.arity)) {\n throw new Err.InvalidArity(regularArgs, regularOp);\n }\n return new E.Operator(regularArgs, args => regularFunc.apply(args, this.algebraConfig));\n }\n\n private wrapSyncFunction(func: SyncExtensionFunction, name: string): SimpleApplication {\n return (args) => {\n try {\n const res = func(args.map(arg => arg.toRDF()));\n return this.transformRDFTermUnsafe(res);\n } catch (error: unknown) {\n throw new ExtensionFunctionError(name, error);\n }\n };\n }\n\n private wrapAsyncFunction(func: AsyncExtensionFunction, name: string): AsyncExtensionApplication {\n return async(args) => {\n try {\n const res = await func(args.map(arg => arg.toRDF()));\n return this.transformRDFTermUnsafe(res);\n } catch (error: unknown) {\n throw new ExtensionFunctionError(name, error);\n }\n };\n }\n\n // TODO: Support passing functions to override default behaviour;\n private transformNamed(expr: Alg.NamedExpression):\n E.NamedExpression | E.AsyncExtensionExpression | E.SyncExtensionExpression {\n const funcName = expr.name.value;\n const namedArgs = expr.args.map(arg => this.transformAlgebra(arg));\n if (C.NamedOperators.has(funcName)) {\n // Return a basic named expression\n const op = expr.name.value;\n const namedFunc = namedFunctions[op];\n return new E.Named(expr.name, namedArgs, args => namedFunc.apply(args, this.algebraConfig));\n }\n if (this.creatorConfig.type === 'sync') {\n // Expression might be extension function, check this for the sync\n const syncExtensionFunc = this.creatorConfig.creator(expr.name);\n if (syncExtensionFunc) {\n const simpleAppl = this.wrapSyncFunction(syncExtensionFunc, expr.name.value);\n return new E.SyncExtension(expr.name, namedArgs, simpleAppl);\n }\n } else {\n // The expression might be an extension function, check this for the async case\n const asyncExtensionFunc = this.creatorConfig.creator(expr.name);\n if (asyncExtensionFunc) {\n const asyncAppl = this.wrapAsyncFunction(asyncExtensionFunc, expr.name.value);\n return new E.AsyncExtension(expr.name, namedArgs, asyncAppl);\n }\n }\n throw new Err.UnknownNamedOperator(expr.name.value);\n }\n\n private static hasCorrectArity(args: E.Expression[], arity: number | number[]): boolean {\n // If the function has overloaded arity, the actual arity needs to be present.\n if (Array.isArray(arity)) {\n return arity.includes(args.length);\n }\n\n return args.length === arity;\n }\n\n public static transformAggregate(expr: Alg.AggregateExpression): E.Aggregate {\n const name = expr.aggregator;\n return new E.Aggregate(name, expr);\n }\n\n public static transformExistence(expr: Alg.ExistenceExpression): E.Existence {\n return new E.Existence(expr);\n }\n}\n","import type * as RDF from '@rdfjs/types';\nimport * as RDFString from 'rdf-string';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport { Algebra } from 'sparqlalgebrajs';\nimport * as E from '../expressions';\nimport { TypeURL } from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { isExpressionError } from '../util/Errors';\nimport {\n parseDate,\n parseDateTime,\n parseDayTimeDuration,\n parseDuration,\n parseTime,\n parseYearMonthDuration,\n} from '../util/Parsing';\nimport * as P from '../util/Parsing';\nimport { getSuperTypeDict } from '../util/TypeHandling';\nimport type { ISuperTypeProvider, GeneralSuperTypeDict } from '../util/TypeHandling';\n\nexport interface ITermTransformer {\n transformRDFTermUnsafe: (term: RDF.Term) => E.Term;\n transformLiteral: (lit: RDF.Literal) => E.Literal;\n}\n\nexport class TermTransformer implements ITermTransformer {\n public constructor(protected readonly superTypeProvider: ISuperTypeProvider) {}\n\n /**\n * Transforms an RDF term to the internal representation of a term,\n * assuming it is not a variable, which would be an expression (internally).\n *\n * @param term RDF term to transform into internal representation of a term\n */\n public transformRDFTermUnsafe(term: RDF.Term): E.Term {\n return this.transformTerm({\n term,\n type: Algebra.types.EXPRESSION,\n expressionType: Algebra.expressionTypes.TERM,\n });\n }\n\n protected transformTerm(term: Alg.TermExpression): E.Expression {\n if (!term.term) {\n throw new Err.InvalidExpression(term);\n }\n\n switch (term.term.termType) {\n case 'Variable':\n return new E.Variable(RDFString.termToString(term.term));\n case 'Literal':\n return this.transformLiteral(term.term);\n case 'NamedNode':\n return new E.NamedNode(term.term.value);\n case 'BlankNode':\n return new E.BlankNode(term.term.value);\n case 'Quad':\n return new E.Quad(term.term, this.superTypeProvider);\n default:\n throw new Err.InvalidTermType(term);\n }\n }\n\n /**\n * @param lit the rdf literal we want to transform to an internal Literal expression.\n */\n public transformLiteral(lit: RDF.Literal): E.Literal {\n // Both here and within the switch we transform to LangStringLiteral or StringLiteral.\n // We do this when we detect a simple literal being used.\n // Original issue regarding this behaviour: https://github.com/w3c/sparql-12/issues/112\n if (!lit.datatype || [ null, undefined, '' ].includes(lit.datatype.value)) {\n return lit.language ?\n new E.LangStringLiteral(lit.value, lit.language) :\n new E.StringLiteral(lit.value);\n }\n\n const dataType = lit.datatype.value;\n const superTypeDict: GeneralSuperTypeDict = getSuperTypeDict(dataType, this.superTypeProvider);\n\n // The order of checking matters! Check most specific types first!\n try {\n if (TypeURL.XSD_STRING in superTypeDict) {\n return new E.StringLiteral(lit.value, dataType);\n }\n if (TypeURL.RDF_LANG_STRING in superTypeDict) {\n return new E.LangStringLiteral(lit.value, lit.language);\n }\n if (TypeURL.XSD_YEAR_MONTH_DURATION in superTypeDict) {\n return new E.YearMonthDurationLiteral(parseYearMonthDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DAY_TIME_DURATION in superTypeDict) {\n return new E.DayTimeDurationLiteral(parseDayTimeDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DURATION in superTypeDict) {\n return new E.DurationLiteral(parseDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE_TIME in superTypeDict) {\n const dateVal: Date = new Date(lit.value);\n if (Number.isNaN(dateVal.getTime())) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.DateTimeLiteral(parseDateTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE in superTypeDict) {\n return new E.DateLiteral(parseDate(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_TIME in superTypeDict) {\n return new E.TimeLiteral(parseTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_BOOLEAN in superTypeDict) {\n if (lit.value !== 'true' && lit.value !== 'false' && lit.value !== '1' && lit.value !== '0') {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.BooleanLiteral(lit.value === 'true' || lit.value === '1', lit.value);\n }\n if (TypeURL.XSD_DECIMAL in superTypeDict) {\n const intVal: number | undefined = P.parseXSDDecimal(lit.value);\n if (intVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (TypeURL.XSD_INTEGER in superTypeDict) {\n return new E.IntegerLiteral(intVal, dataType, lit.value);\n }\n // If type is not an integer it's just a decimal.\n return new E.DecimalLiteral(intVal, dataType, lit.value);\n }\n const isFloat = TypeURL.XSD_FLOAT in superTypeDict;\n const isDouble = TypeURL.XSD_DOUBLE in superTypeDict;\n if (isFloat || isDouble) {\n const doubleVal: number | undefined = P.parseXSDFloat(lit.value);\n if (doubleVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (isFloat) {\n return new E.FloatLiteral(doubleVal, dataType, lit.value);\n }\n return new E.DoubleLiteral(doubleVal, dataType, lit.value);\n }\n return new E.Literal(lit.value, dataType, lit.value);\n } catch (error: unknown) {\n if (error instanceof Error && isExpressionError(error)) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n throw error;\n }\n }\n}\n","export type KnownLiteralTypes = TypeAlias | TypeURL;\n\nexport enum TypeAlias {\n // Numeric is everything defined in https://www.w3.org/TR/sparql11-query/#operandDataTypes\n SPARQL_NUMERIC = 'SPARQL_NUMERIC',\n /**\n * Stringly is everything defined in https://www.w3.org/TR/sparql11-query/#func-strings\n * In other words it is a simple literal, a plain literal with language tag, or a literal with datatype xsd:string\n * In other words, since expression-evaluator transforms a simple literal to xsd_string.\n * It is RDF_LANG_STRING or XSD_STRING.\n * Reasons for this are mentioned here: w3c/sparql-12#112\n */\n SPARQL_STRINGLY = 'SPARQL_STRINGLY',\n}\n\nexport enum TypeURL {\n XSD_ANY_URI = 'http://www.w3.org/2001/XMLSchema#anyURI',\n XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string',\n RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n\n XSD_BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n\n XSD_DATE_TIME = 'http://www.w3.org/2001/XMLSchema#dateTime',\n XSD_DATE_TIME_STAMP = 'http://www.w3.org/2001/XMLSchema#dateTimeStamp',\n XSD_DATE = 'http://www.w3.org/2001/XMLSchema#date',\n\n XSD_G_MONTH = 'http://www.w3.org/2001/XMLSchema#gMonth',\n XSD_G_MONTHDAY = 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n XSD_G_YEAR = 'http://www.w3.org/2001/XMLSchema#gYear',\n XSD_G_YEAR_MONTH = 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n XSD_TIME = 'http://www.w3.org/2001/XMLSchema#time',\n XSD_G_DAY = 'http://www.w3.org/2001/XMLSchema#gDay',\n\n // Numeric types\n XSD_DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n XSD_FLOAT = 'http://www.w3.org/2001/XMLSchema#float',\n XSD_DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n\n // Derived numeric types\n XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n\n XSD_NON_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n XSD_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n\n XSD_LONG = 'http://www.w3.org/2001/XMLSchema#long',\n XSD_INT = 'http://www.w3.org/2001/XMLSchema#int',\n XSD_SHORT = 'http://www.w3.org/2001/XMLSchema#short',\n XSD_BYTE = 'http://www.w3.org/2001/XMLSchema#byte',\n\n XSD_NON_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n XSD_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n XSD_UNSIGNED_LONG = 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n XSD_UNSIGNED_INT = 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n XSD_UNSIGNED_SHORT = 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n XSD_UNSIGNED_BYTE = 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n\n // Derived String Type\n XSD_NORMALIZED_STRING = 'http://www.w3.org/2001/XMLSchema#normalizedString',\n XSD_TOKEN = 'http://www.w3.org/2001/XMLSchema#token',\n XSD_LANGUAGE = 'http://www.w3.org/2001/XMLSchema#language',\n XSD_NM_TOKEN = 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n\n XSD_NAME = 'http://www.w3.org/2001/XMLSchema#name',\n XSD_NC_NAME = 'http://www.w3.org/2001/XMLSchema#NCName',\n XSD_ENTITY = 'http://www.w3.org/2001/XMLSchema#ENTITY',\n XSD_ID = 'http://www.w3.org/2001/XMLSchema#ID',\n XSD_ID_REF = 'http://www.w3.org/2001/XMLSchema#IDREF',\n\n // Other types\n XSD_DURATION = 'http://www.w3.org/2001/XMLSchema#duration',\n XSD_YEAR_MONTH_DURATION = 'http://www.w3.org/2001/XMLSchema#yearMonthDuration',\n XSD_DAY_TIME_DURATION = 'http://www.w3.org/2001/XMLSchema#dayTimeDuration',\n}\n\n// ----------------------------------------------------------------------------\n// Operators\n// ----------------------------------------------------------------------------\n\nexport type Operator = RegularOperator | SpecialOperator;\n\n// TODO: Remove unneeded double typing\nexport enum RegularOperator {\n // Operator mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n NOT = '!',\n UMINUS = 'uminus',\n UPLUS = 'uplus',\n // LOGICAL_AND // See SpecialOperators\n // LOGICAL_OR // See SpecialOperators\n\n EQUAL = '=',\n NOT_EQUAL = '!=',\n LT = '<',\n GT = '>',\n LTE = '<=',\n GTE = '>=',\n\n MULTIPLICATION = '*',\n DIVISION = '/',\n ADDITION = '+',\n SUBTRACTION = '-',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // See SpecialOperators\n\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n IS_IRI = 'isiri',\n IS_URI = 'isuri',\n IS_BLANK = 'isblank',\n IS_LITERAL = 'isliteral',\n IS_NUMERIC = 'isnumeric',\n STR = 'str',\n LANG = 'lang',\n DATATYPE = 'datatype',\n IRI = 'iri',\n URI = 'uri',\n // BNODE = 'BNODE', (see special operators)\n STRDT = 'strdt',\n STRLANG = 'strlang',\n UUID = 'uuid',\n STRUUID = 'struuid',\n\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-strings\n STRLEN = 'strlen',\n SUBSTR = 'substr',\n UCASE = 'ucase',\n LCASE = 'lcase',\n STRSTARTS = 'strstarts',\n STRENDS = 'strends',\n CONTAINS = 'contains',\n STRBEFORE = 'strbefore',\n STRAFTER = 'strafter',\n ENCODE_FOR_URI = 'encode_for_uri',\n // CONCAT = 'concat' (see special operators)\n LANG_MATCHES = 'langmatches',\n REGEX = 'regex',\n REPLACE = 'replace',\n\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n ABS = 'abs',\n ROUND = 'round',\n CEIL = 'ceil',\n FLOOR = 'floor',\n RAND = 'rand',\n\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n NOW = 'now',\n YEAR = 'year',\n MONTH = 'month',\n DAY = 'day',\n HOURS = 'hours',\n MINUTES = 'minutes',\n SECONDS = 'seconds',\n TIMEZONE = 'timezone',\n TZ = 'tz',\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n MD5 = 'md5',\n SHA1 = 'sha1',\n SHA256 = 'sha256',\n SHA384 = 'sha384',\n SHA512 = 'sha512',\n\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // See Named Operators\n\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n TRIPLE = 'triple',\n SUBJECT = 'subject',\n PREDICATE = 'predicate',\n OBJECT = 'object',\n IS_TRIPLE = 'istriple',\n}\n\nexport enum SpecialOperator {\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n BOUND = 'bound',\n IF = 'if',\n COALESCE = 'coalesce',\n // EXISTENCE = 'existence',\n LOGICAL_OR = '||',\n LOGICAL_AND = '&&',\n // EQUAL = '=', // See RegularOperators\n SAME_TERM = 'sameterm',\n IN = 'in',\n NOT_IN = 'notin',\n\n // Annoying functions - Has variable arity\n CONCAT = 'concat',\n\n // Context dependant functions\n BNODE = 'bnode',\n}\n\nexport const RegularOperators: Set = new Set(Object.values(RegularOperator));\nexport const SpecialOperators: Set = new Set(Object.values(SpecialOperator));\nexport const Operators = new Set([ ...RegularOperators, ...SpecialOperators ]);\n\nexport enum SetFunction {\n COUNT = 'count',\n SUM = 'sum',\n MIN = 'min',\n MAX = 'max',\n AVG = 'avg',\n GROUP_CONCAT = 'group_concat',\n SAMPLE = 'sample',\n}\nexport const SetFunctions = new Set(Object.values(SetFunction));\n\nexport type NamedOperator =\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n TypeURL.XSD_STRING\n | TypeURL.XSD_FLOAT\n | TypeURL.XSD_DOUBLE\n | TypeURL.XSD_DECIMAL\n | TypeURL.XSD_INTEGER\n | TypeURL.XSD_DATE_TIME\n | TypeURL.XSD_DATE\n | TypeURL.XSD_BOOLEAN\n | TypeURL.XSD_TIME\n | TypeURL.XSD_DURATION\n | TypeURL.XSD_DAY_TIME_DURATION\n | TypeURL.XSD_YEAR_MONTH_DURATION;\n\nexport const NamedOperators = new Set([\n TypeURL.XSD_STRING,\n TypeURL.XSD_FLOAT,\n TypeURL.XSD_DOUBLE,\n TypeURL.XSD_DECIMAL,\n TypeURL.XSD_INTEGER,\n TypeURL.XSD_DATE_TIME,\n TypeURL.XSD_DATE,\n TypeURL.XSD_BOOLEAN,\n TypeURL.XSD_TIME,\n TypeURL.XSD_DURATION,\n TypeURL.XSD_DAY_TIME_DURATION,\n TypeURL.XSD_YEAR_MONTH_DURATION,\n]);\n","export interface ITimeZoneRepresentation {\n // https://www.w3.org/TR/xpath-functions/#func-implicit-timezone\n // Type is a dayTimeDuration.\n // We use a separate dataType since it makes TS type modifications and JS object copying easier.\n zoneHours: number;\n zoneMinutes: number;\n}\n\nexport interface IDateRepresentation extends Partial {\n year: number;\n month: number;\n day: number;\n}\n\nexport interface ITimeRepresentation extends Partial {\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nexport interface IDayTimeDurationRepresentation {\n hours: number;\n minutes: number;\n seconds: number;\n day: number;\n}\n\nexport interface IYearMonthDurationRepresentation {\n year: number;\n month: number;\n}\n\nexport type IDurationRepresentation = IYearMonthDurationRepresentation & IDayTimeDurationRepresentation;\nexport type IDateTimeRepresentation = IDateRepresentation & ITimeRepresentation;\n\n// Important is to notice JS and XSD datatypes have different defaulted values\n// | Field | Default in JS | Default in XSD_DayTime | Default in XSD_Duration |\n// | Month | 0 | 1 | 0 |\n// | Day | 1 | 1 | 0 |\n\nexport function defaultedDayTimeDurationRepresentation(rep: Partial):\nIDayTimeDurationRepresentation {\n return {\n day: rep.day ?? 0,\n hours: rep.hours ?? 0,\n minutes: rep.minutes ?? 0,\n seconds: rep.seconds ?? 0,\n };\n}\n\nexport function defaultedYearMonthDurationRepresentation(rep: Partial):\nIYearMonthDurationRepresentation {\n return {\n year: rep.year ?? 0,\n month: rep.month ?? 0,\n };\n}\n\nexport function defaultedDurationRepresentation(\n rep: Partial,\n): IDurationRepresentation {\n return {\n ...defaultedDayTimeDurationRepresentation(rep),\n ...defaultedYearMonthDurationRepresentation(rep),\n };\n}\n\nexport function simplifyDurationRepresentation(rep: Partial):\nPartial {\n const temp = defaultedDurationRepresentation(rep);\n const res: Partial = {};\n\n // Simplify year part\n const years = temp.year + Math.trunc(temp.month / 12);\n if (years) {\n res.year = years;\n temp.month %= 12;\n }\n if (temp.month) {\n res.month = temp.month;\n }\n\n // Simplify day part\n const days = temp.day + Math.trunc(temp.hours / 24) +\n Math.trunc(temp.minutes / (24 * 60)) + Math.trunc(temp.seconds / (24 * 60 * 60));\n if (days) {\n res.day = days;\n temp.hours %= 24;\n temp.minutes %= 24 * 60;\n temp.seconds %= 24 * 60 * 60;\n }\n const hours = temp.hours + Math.trunc(temp.minutes / 60) +\n Math.trunc(temp.seconds / (60 * 60));\n if (hours) {\n res.hours = hours;\n temp.minutes %= 60;\n temp.seconds %= 60 * 60;\n }\n const minutes = temp.minutes + Math.trunc(temp.seconds / 60);\n if (minutes) {\n res.minutes = minutes;\n temp.seconds %= 60;\n }\n if (temp.seconds) {\n res.seconds = temp.seconds;\n }\n return res;\n}\n\nexport function defaultedDateTimeRepresentation(rep: Partial): IDateTimeRepresentation {\n return {\n ...rep,\n day: rep.day ?? 1,\n hours: rep.hours ?? 0,\n month: rep.month ?? 1,\n year: rep.year ?? 0,\n seconds: rep.seconds ?? 0,\n minutes: rep.minutes ?? 0,\n };\n}\n\nexport function toDateTimeRepresentation({ date, timeZone }:\n{ date: Date; timeZone: ITimeZoneRepresentation }): IDateTimeRepresentation {\n return {\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n zoneHours: timeZone.zoneHours,\n zoneMinutes: timeZone.zoneMinutes,\n };\n}\n\nexport function negateDuration(dur: Partial): Partial {\n return {\n year: dur.year === undefined ? undefined : -1 * dur.year,\n month: dur.month === undefined ? undefined : -1 * dur.month,\n day: dur.day === undefined ? undefined : -1 * dur.day,\n hours: dur.hours === undefined ? undefined : -1 * dur.hours,\n minutes: dur.minutes === undefined ? undefined : -1 * dur.minutes,\n seconds: dur.seconds === undefined ? undefined : -1 * dur.seconds,\n };\n}\n\nexport function toJSDate(date: IDateTimeRepresentation): Date {\n // The given hours will be assumed to be local time.\n const res = new Date(\n date.year,\n date.month - 1,\n date.day,\n date.hours,\n date.minutes,\n Math.trunc(date.seconds),\n (date.seconds % 1) * 1_000,\n );\n if (date.year >= 0 && date.year < 100) {\n // Special rule of date has gone int action:\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date#individual_date_and_time_component_values\n\n const jumpDeltaOfDate = 1_900;\n res.setFullYear(res.getFullYear() - jumpDeltaOfDate);\n }\n return res;\n}\n\nexport function toUTCDate(date: Partial, defaultTimezone: ITimeZoneRepresentation): Date {\n const localTime = toJSDate(defaultedDateTimeRepresentation(date));\n // This date has been constructed in machine local time, now we alter it to become UTC and convert to correct timezone\n\n // Correction needed from local machine timezone to UTC\n const minutesCorrectionLocal = localTime.getTimezoneOffset();\n // Correction needed from UTC to provided timeZone\n const hourCorrectionUTC = date.zoneHours ?? defaultTimezone.zoneHours;\n const minutesCorrectionUTC = date.zoneMinutes ?? defaultTimezone.zoneMinutes;\n return new Date(\n localTime.getTime() - (minutesCorrectionLocal + hourCorrectionUTC * 60 + minutesCorrectionUTC) * 60 * 1_000,\n );\n}\n\nexport function trimToYearMonthDuration(dur: Partial):\nPartial {\n return {\n year: dur.year,\n month: dur.month,\n };\n}\n\nexport function trimToDayTimeDuration(dur: Partial): Partial {\n return {\n day: dur.day,\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n };\n}\n\nexport function yearMonthDurationsToMonths(dur: IYearMonthDurationRepresentation): number {\n return dur.year * 12 + dur.month;\n}\n\nexport function dayTimeDurationsToSeconds(dur: IDayTimeDurationRepresentation): number {\n return (((dur.day * 24) + dur.hours) * 60 + dur.minutes) * 60 + dur.seconds;\n}\n\nexport function extractRawTimeZone(zoneContained: string): string {\n const extraction = /(Z|([+-]\\d\\d:\\d\\d))?$/u.exec(zoneContained);\n // It is safe to cast here because the empty string can always match.\n return extraction![0];\n}\n\nexport function extractTimeZone(date: Date): ITimeZoneRepresentation {\n return {\n zoneHours: date.getTimezoneOffset() / 60,\n zoneMinutes: date.getTimezoneOffset() % 60,\n };\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type * as E from '../expressions';\nimport type * as C from './Consts';\n\n/**\n * This class of error will be thrown when an expression errors.\n * Various reasons this could happen are:\n * - invalid types for the given operator\n * - unbound variables\n * - invalid lexical forms\n * - ...\n *\n * The distinction is made so that one can catch this specific type\n * and handle it accordingly to the SPARQL spec (relevant for e.g. FILTER, EXTEND),\n * while others (programming errors) can be re-thrown.\n *\n * @see isExpressionError\n */\nexport class ExpressionError extends Error {}\n\n/**\n * Checks whether a given error is an {@link ExpressionError}.\n * Also useful for mocking in tests for covering all branches.\n *\n * @see ExpressionError\n */\nexport function isExpressionError(error: Error): boolean {\n return error instanceof ExpressionError;\n}\n\n/**\n * A literal has an invalid lexical form for the datatype it is accompanied by.\n * This error is only thrown when the term is as function argument that requires\n * a valid lexical form.\n */\nexport class InvalidLexicalForm extends ExpressionError {\n public constructor(public arg: RDF.Term) {\n super(`Invalid lexical form '${pp(arg)}'`);\n }\n}\n\n/**\n * A variable in the expression was not bound.\n */\nexport class UnboundVariableError extends ExpressionError {\n public constructor(public variable: string, public bindings: RDF.Bindings) {\n super(`Unbound variable '${pp(variable)}'`);\n }\n}\n\n/**\n * An invalid term was being coerced to an Effective Boolean Value.\n *\n * See the {@link https://www.w3.org/TR/sparql11-query/#ebv | SPARQL docs}\n * on EBVs.\n */\nexport class EBVCoercionError extends ExpressionError {\n public constructor(public arg: E.Term) {\n super(`Cannot coerce term to EBV '${pp(arg)}'`);\n }\n}\n\n/**\n * An equality test was done on literals with unsupported datatypes.\n *\n * See {@link https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal | term equality spec}.\n */\nexport class RDFEqualTypeError extends ExpressionError {\n public constructor(public args: E.Expression[]) {\n super('Equality test for literals with unsupported datatypes');\n }\n}\n\n/**\n * All the expressions in a COALESCE call threw errors.\n */\nexport class CoalesceError extends ExpressionError {\n public constructor(public errors: Error[]) {\n super('All COALESCE arguments threw errors');\n }\n}\n\n/**\n * No arguments to an IN call where equal, and at least one threw an error.\n */\nexport class InError extends ExpressionError {\n public constructor(public errors: (Error | false)[]) {\n super(\n `Some argument to IN errorred and none where equal. ${\n\n errors.map(err => `(${err.toString()}) `).join('and ')}`,\n );\n }\n}\n\n/**\n * Literals were passed to an operator that doesn't support their datatypes.\n */\nexport class InvalidArgumentTypes extends ExpressionError {\n public constructor(public args: E.Expression[], public op: C.Operator | C.NamedOperator) {\n super(`Argument types not valid for operator: '${pp(op)}' with '${pp(args)}`);\n }\n}\n\n/**\n * Terms were being compared that are not supported.\n */\nexport class InvalidCompareArgumentTypes extends ExpressionError {\n public constructor(public arg0: RDF.Term, public arg1: RDF.Term) {\n super(`Compared argument types are supported: '${arg0.termType}' and '${arg1.termType}'`);\n }\n}\n\n/**\n * An invalid typecast happened.\n */\nexport class CastError extends ExpressionError {\n public constructor(public arg: T, cast: C.TypeURL) {\n super(`Invalid cast: '${pp(arg)}' to '${pp(cast)}'`);\n }\n}\n\nexport class InvalidTimezoneCall extends ExpressionError {\n public constructor(public dateString: string) {\n super(`TIMEZONE call on ${dateString} which has no timezone`);\n }\n}\n\nexport class IncompatibleLanguageOperation extends ExpressionError {\n public constructor(public arg1: E.LangStringLiteral, public arg2: E.LangStringLiteral) {\n super(`Operation on incompatible language literals '${pp(arg1)}' and '${pp(arg2)}'`);\n }\n}\n\nexport class EmptyAggregateError extends ExpressionError {\n public constructor() {\n super('Empty aggregate expression');\n }\n}\n\nexport class ParseError extends ExpressionError {\n public constructor(str: string, type: string) {\n super(`Failed to parse ${str} as ${type}.`);\n }\n}\n\n// Non Expression Errors ------------------------------------------------------\n\n/**\n * An error that arises when we detect a 'should-be-impossible' state.\n * Given that this error is thrown, it clearly wasn't impossible, and some\n * mistake has been made.\n */\nexport class UnexpectedError extends Error {\n public constructor(message: string, public payload?: T) {\n super(`Programmer Error '${message}'`);\n }\n}\n\nexport class InvalidArity extends Error {\n public constructor(public args: E.Expression[], public op: C.Operator) {\n super(`The number of args does not match the arity of the operator '${pp(op)}'.`);\n }\n}\n\nexport class InvalidExpression extends Error {\n public constructor(expr: T) {\n super(`Invalid SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class InvalidExpressionType extends Error {\n public constructor(public expr: T) {\n super(`Invalid expression type for SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class InvalidTermType extends Error {\n public constructor(public term: Algebra.TermExpression) {\n super(`Invalid term type for term '${pp(term)}'`);\n }\n}\n\nexport class UnknownOperator extends Error {\n public constructor(name: string) {\n super(`Unknown operator: '${pp(name)}`);\n }\n}\n\nexport class UnknownNamedOperator extends Error {\n public constructor(name: string) {\n super(`Unknown named operator: '${pp(name)}'`);\n }\n}\n\nexport class ExtensionFunctionError extends Error {\n public constructor(name: string, functionError: unknown) {\n if (functionError instanceof Error) {\n super(`Error thrown in ${name}: ${functionError.message}${functionError.stack ? `\\n${functionError.stack}` : ''}`);\n } else {\n super(`Error thrown in ${name}`);\n }\n }\n}\n\nexport class NoAggregator extends Error {\n public constructor(name?: string) {\n super(`Aggregate expression ${pp(name)} found, but no aggregate hook provided.`);\n }\n}\n\nexport class NoExistenceHook extends Error {\n public constructor() {\n super('EXISTS found, but no existence hook provided.');\n }\n}\n\nfunction pp(object: T): string {\n return JSON.stringify(object);\n}\n","import type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport type * as E from '../expressions';\nimport { regularFunctions } from '../functions';\nimport { TermTransformer } from '../transformers/TermTransformer';\nimport * as C from './Consts';\nimport * as Err from './Errors';\nimport type { SuperTypeCallback, TypeCache } from './TypeHandling';\n\n// Determine the relative numerical order of the two given terms.\n// In accordance with https://www.w3.org/TR/sparql11-query/#modOrderBy\nexport function orderTypes(\n termA: RDF.Term | undefined,\n termB: RDF.Term | undefined,\n strict = false,\n typeDiscoveryCallback?: SuperTypeCallback,\n typeCache?: TypeCache,\n): -1 | 0 | 1 {\n // Check if terms are the same by reference\n if (termA === termB) {\n return 0;\n }\n\n // We handle undefined that is lower than everything else.\n if (termA === undefined) {\n return -1;\n }\n if (termB === undefined) {\n return 1;\n }\n\n //\n if (termA.termType !== termB.termType) {\n return _TERM_ORDERING_PRIORITY[termA.termType] < _TERM_ORDERING_PRIORITY[termB.termType] ? -1 : 1;\n }\n\n // Check exact term equality\n if (termA.equals(termB)) {\n return 0;\n }\n\n // Handle quoted triples\n if (termA.termType === 'Quad' && termB.termType === 'Quad') {\n const orderSubject = orderTypes(\n termA.subject,\n termB.subject,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderSubject !== 0) {\n return orderSubject;\n }\n const orderPredicate = orderTypes(\n termA.predicate,\n termB.predicate,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderPredicate !== 0) {\n return orderPredicate;\n }\n const orderObject = orderTypes(\n termA.object,\n termB.object,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n if (orderObject !== 0) {\n return orderObject;\n }\n return orderTypes(\n termA.graph,\n termB.graph,\n strict,\n typeDiscoveryCallback,\n typeCache,\n );\n }\n\n // Handle literals\n if (termA.termType === 'Literal') {\n return orderLiteralTypes(termA, termB, typeDiscoveryCallback, typeCache);\n }\n\n // Handle all other types\n if (strict) {\n throw new Err.InvalidCompareArgumentTypes(termA, termB);\n }\n return comparePrimitives(termA.value, termB.value);\n}\n\nfunction orderLiteralTypes(\n litA: RDF.Literal,\n litB: RDF.Literal,\n typeDiscoveryCallback?: SuperTypeCallback,\n typeCache?: TypeCache,\n): -1 | 0 | 1 {\n const isGreater = regularFunctions[C.RegularOperator.GT];\n const isEqual = regularFunctions[C.RegularOperator.EQUAL];\n const context = {\n now: new Date(),\n functionArgumentsCache: {},\n superTypeProvider: {\n discoverer: typeDiscoveryCallback ?? (() => 'term'),\n cache: typeCache ?? new LRUCache({ max: 1_000 }),\n },\n defaultTimeZone: { zoneHours: 0, zoneMinutes: 0 },\n };\n\n const termTransformer = new TermTransformer(context.superTypeProvider);\n const myLitA = termTransformer.transformLiteral(litA);\n const myLitB = termTransformer.transformLiteral(litB);\n\n try {\n if (( isEqual.apply([ myLitA, myLitB ], context)).typedValue) {\n return 0;\n }\n if (( isGreater.apply([ myLitA, myLitB ], context)).typedValue) {\n return 1;\n }\n return -1;\n } catch {\n // Fallback to string-based comparison\n const compareType = comparePrimitives(myLitA.dataType, myLitB.dataType);\n if (compareType !== 0) {\n return compareType;\n }\n return comparePrimitives(myLitA.str(), myLitB.str());\n }\n}\n\nfunction comparePrimitives(valueA: any, valueB: any): -1 | 0 | 1 {\n return valueA === valueB ? 0 : (valueA < valueB ? -1 : 1);\n}\n\n// SPARQL specifies that blankNode < namedNode < literal.\nconst _TERM_ORDERING_PRIORITY = {\n Variable: 0,\n BlankNode: 1,\n NamedNode: 2,\n Literal: 3,\n Quad: 4,\n DefaultGraph: 5,\n};\n","// TODO: Find a library for this, because this is basically an xsd datatypes parser\n\nimport type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDayTimeDurationRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n IYearMonthDurationRepresentation,\n} from './DateTimeHelpers';\n\nimport { simplifyDurationRepresentation } from './DateTimeHelpers';\nimport { ParseError } from './Errors';\nimport { maximumDayInMonthFor } from './SpecAlgos';\n\n/**\n * TODO: Fix decently\n * Parses float datatypes (double, float).\n *\n * All invalid lexical values return undefined.\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDFloat(value: string): number | undefined {\n const numb = Number(value);\n if (Number.isNaN(numb)) {\n if (value === 'NaN') {\n return Number.NaN;\n }\n if (value === 'INF' || value === '+INF') {\n return Number.POSITIVE_INFINITY;\n }\n if (value === '-INF') {\n return Number.NEGATIVE_INFINITY;\n }\n return undefined;\n }\n return numb;\n}\n\n/**\n * Parses decimal datatypes (decimal, int, byte, nonPositiveInteger, etc...).\n *\n * All other values, including NaN, INF, and floating point numbers all\n * return undefined;\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDDecimal(value: string): number | undefined {\n const numb = Number(value);\n return Number.isNaN(numb) ? undefined : numb;\n}\n\n/**\n * Parses integer datatypes (decimal, int, byte, nonPositiveInteger, etc...).\n *\n * All other values, including NaN, INF, and floating point numbers all\n * return undefined;\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDInteger(value: string): number | undefined {\n const numb: number = Number.parseInt(value, 10);\n return Number.isNaN(numb) ? undefined : numb;\n}\n\nexport function parseDateTime(dateTimeStr: string): IDateTimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n const [ date, time ] = dateTimeStr.split('T');\n return { ...parseDate(date), ...__parseTime(time) };\n}\n\nfunction parseTimeZone(timeZoneStr: string): Partial {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (timeZoneStr === '') {\n return { zoneHours: undefined, zoneMinutes: undefined };\n }\n if (timeZoneStr === 'Z') {\n return { zoneHours: 0, zoneMinutes: 0 };\n }\n const timeZoneStrings = timeZoneStr.replaceAll(/^([+|-])(\\d\\d):(\\d\\d)$/gu, '$11!$2!$3').split('!');\n const timeZone = timeZoneStrings.map(Number);\n return {\n zoneHours: timeZone[0] * timeZone[1],\n zoneMinutes: timeZone[0] * timeZone[2],\n };\n}\n\nexport function parseDate(dateStr: string): IDateRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n const formatted = dateStr.replaceAll(\n /^(-)?([123456789]*\\d{4})-(\\d\\d)-(\\d\\d)(Z|([+-]\\d\\d:\\d\\d))?$/gu,\n '$11!$2!$3!$4!$5',\n );\n if (formatted === dateStr) {\n throw new ParseError(dateStr, 'date');\n }\n const dateStrings = formatted.split('!');\n const date = dateStrings.slice(0, -1).map(Number);\n\n const res = {\n year: date[0] * date[1],\n month: date[2],\n day: date[3],\n ...parseTimeZone(dateStrings[4]),\n };\n if (!(res.month >= 1 && res.month <= 12) || !(res.day >= 1 && res.day <= maximumDayInMonthFor(res.year, res.month))) {\n throw new ParseError(dateStr, 'date');\n }\n return res;\n}\n\nfunction __parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const formatted = timeStr.replaceAll(/^(\\d\\d):(\\d\\d):(\\d\\d(\\.\\d+)?)(Z|([+-]\\d\\d:\\d\\d))?$/gu, '$1!$2!$3!$5');\n if (formatted === timeStr) {\n throw new ParseError(timeStr, 'time');\n }\n const timeStrings = formatted.split('!');\n const time = timeStrings.slice(0, -1).map(Number);\n\n const res = {\n hours: time[0],\n minutes: time[1],\n seconds: time[2],\n ...parseTimeZone(timeStrings[3]),\n };\n\n if (res.seconds >= 60 || res.minutes >= 60 || res.hours > 24 ||\n (res.hours === 24 && (res.minutes !== 0 || res.seconds !== 0))) {\n throw new ParseError(timeStr, 'time');\n }\n return res;\n}\n\n// We make a separation in internal and external since dateTime will have hour-date rollover,\n// but time just does modulo the time.\nexport function parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const res = __parseTime(timeStr);\n res.hours %= 24;\n return res;\n}\n\nexport function parseDuration(durationStr: string): Partial {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n const [ dayNotation, timeNotation ] = durationStr.split('T');\n\n // Handle date part\n const formattedDayDur = dayNotation.replaceAll(/^(-)?P(\\d+Y)?(\\d+M)?(\\d+D)?$/gu, '$11S!$2!$3!$4');\n if (formattedDayDur === dayNotation) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const durationStrings = formattedDayDur.split('!');\n if (timeNotation !== undefined) {\n const formattedTimeDur = timeNotation.replaceAll(/^(\\d+H)?(\\d+M)?(\\d+(\\.\\d+)?S)?$/gu, '$1!$2!$3');\n\n if (timeNotation === '' || timeNotation === formattedTimeDur) {\n throw new ParseError(durationStr, 'duration');\n }\n durationStrings.push(...formattedTimeDur.split('!'));\n }\n const duration = durationStrings.map(str => str.slice(0, -1));\n if (!duration.slice(1).some(Boolean)) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const sign = <-1 | 1> Number(duration[0]);\n return simplifyDurationRepresentation({\n year: duration[1] ? sign * Number(duration[1]) : undefined,\n month: duration[2] ? sign * Number(duration[2]) : undefined,\n day: duration[3] ? sign * Number(duration[3]) : undefined,\n hours: duration[4] ? sign * Number(duration[4]) : undefined,\n minutes: duration[5] ? sign * Number(duration[5]) : undefined,\n seconds: duration[6] ? sign * Number(duration[6]) : undefined,\n });\n}\n\nexport function parseYearMonthDuration(durationStr: string): Partial {\n const res = parseDuration(durationStr);\n if ([ 'hours', 'minutes', 'seconds', 'day' ].some(key => Boolean(( res)[key]))) {\n throw new ParseError(durationStr, 'yearMonthDuration');\n }\n return res;\n}\n\nexport function parseDayTimeDuration(durationStr: string): Partial {\n const res = parseDuration(durationStr);\n if ([ 'year', 'month' ].some(key => Boolean(( res)[key]))) {\n throw new ParseError(durationStr, 'dayTimeDuration');\n }\n return res;\n}\n","import type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n} from './DateTimeHelpers';\n\nfunction numSerializer(num: number, min = 2): string {\n return num.toLocaleString(undefined, { minimumIntegerDigits: min, useGrouping: false });\n}\n\nexport function serializeDateTime(date: IDateTimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n // Extraction is needed because the date serializer can not add timezone y\n return `${serializeDate({ year: date.year, month: date.month, day: date.day })}T${serializeTime(date)}`;\n}\n\nfunction serializeTimeZone(tz: Partial): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (tz.zoneHours === undefined || tz.zoneMinutes === undefined) {\n return '';\n }\n if (tz.zoneHours === 0 && tz.zoneMinutes === 0) {\n return 'Z';\n }\n // SerializeTimeZone({ zoneHours: 5, zoneMinutes: 4 }) returns +05:04\n return `${tz.zoneHours >= 0 ? `+${numSerializer(tz.zoneHours)}` : numSerializer(tz.zoneHours)}:${numSerializer(Math.abs(tz.zoneMinutes))}`;\n}\n\nexport function serializeDate(date: IDateRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n return `${numSerializer(date.year, 4)}-${numSerializer(date.month)}-${numSerializer(date.day)}${serializeTimeZone(date)}`;\n}\n\nexport function serializeTime(time: ITimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n return `${numSerializer(time.hours)}:${numSerializer(time.minutes)}:${numSerializer(time.seconds)}${serializeTimeZone(time)}`;\n}\n\nexport function serializeDuration(dur: Partial, zeroString: 'PT0S' | 'P0M' = 'PT0S'): string {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n if (!Object.values(dur).some(val => (val || 0) !== 0)) {\n return zeroString;\n }\n\n const sign = Object.values(dur).some(val => (val || 0) < 0) ? '-' : '';\n const year = dur.year ? `${Math.abs(dur.year)}Y` : '';\n const month = dur.month ? `${Math.abs(dur.month)}M` : '';\n const day = dur.day ? `${Math.abs(dur.day)}D` : '';\n\n const dayNotation = `${sign}P${year}${month}${day}`;\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n if (!(dur.hours || dur.minutes || dur.seconds)) {\n return dayNotation;\n }\n\n const hour = dur.hours ? `${Math.abs(dur.hours)}H` : '';\n const minute = dur.minutes ? `${Math.abs(dur.minutes)}M` : '';\n const second = dur.seconds ? `${Math.abs(dur.seconds)}S` : '';\n\n return `${dayNotation}T${hour}${minute}${second}`;\n}\n","import type {\n IDurationRepresentation,\n IDateTimeRepresentation,\n ITimeZoneRepresentation,\n} from './DateTimeHelpers';\nimport { toUTCDate } from './DateTimeHelpers';\n\nfunction fDiv(arg: number, high: number, low = 0): { intDiv: number; remainder: number } {\n // Adds the 4 spec functions into one since they are highly related,\n // and fQuotient and modulo are almost always called in pairs.\n const first = arg - low;\n const second = high - low;\n const intDiv = Math.floor(first / second);\n return { intDiv, remainder: arg - intDiv * second };\n}\n\nexport function maximumDayInMonthFor(yearValue: number, monthValue: number): number {\n const { intDiv: additionalYears, remainder: month } = fDiv(monthValue, 13, 1);\n const year = yearValue + additionalYears;\n\n if ([ 1, 3, 5, 7, 8, 10, 12 ].includes(month)) {\n return 31;\n }\n if ([ 4, 6, 9, 11 ].includes(month)) {\n return 30;\n }\n if (month === 2 && (\n fDiv(year, 400).remainder === 0 ||\n (fDiv(year, 100).remainder !== 0 && fDiv(year, 4).remainder === 0))) {\n return 29;\n }\n return 28;\n}\n\n// https://www.w3.org/TR/xmlschema-2/#adding-durations-to-dateTimes\nexport function addDurationToDateTime(date: IDateTimeRepresentation, duration: IDurationRepresentation):\nIDateTimeRepresentation {\n // Used to cary over optional fields like timezone\n const newDate: IDateTimeRepresentation = { ...date };\n\n // Month\n let tempDiv = fDiv(date.month + duration.month, 13, 1);\n newDate.month = tempDiv.remainder;\n // Year\n newDate.year = date.year + duration.year + tempDiv.intDiv;\n // Seconds\n tempDiv = fDiv(date.seconds + duration.seconds, 60);\n newDate.seconds = tempDiv.remainder;\n // Minutes\n tempDiv = fDiv(date.minutes + duration.minutes + tempDiv.intDiv, 60);\n newDate.minutes = tempDiv.remainder;\n // Hours\n tempDiv = fDiv(date.hours + duration.hours + tempDiv.intDiv, 24);\n newDate.hours = tempDiv.remainder;\n\n // We skip a part of the spec code since: Defined spec code can not happen since it would be an invalid literal\n\n newDate.day = date.day + duration.day + tempDiv.intDiv;\n\n while (true) {\n let carry;\n if (newDate.day < 1) {\n newDate.day += maximumDayInMonthFor(newDate.year, newDate.month - 1);\n carry = -1;\n } else if (newDate.day > maximumDayInMonthFor(newDate.year, newDate.month)) {\n newDate.day -= maximumDayInMonthFor(newDate.year, newDate.month);\n carry = 1;\n } else {\n break;\n }\n tempDiv = fDiv(newDate.month + carry, 13, 1);\n newDate.month = tempDiv.remainder;\n newDate.year += tempDiv.intDiv;\n }\n return newDate;\n}\n\nexport function elapsedDuration(\n first: IDateTimeRepresentation,\n second: IDateTimeRepresentation,\n defaultTimeZone: ITimeZoneRepresentation,\n): Partial {\n const d1 = toUTCDate(first, defaultTimeZone);\n const d2 = toUTCDate(second, defaultTimeZone);\n const diff = d1.getTime() - d2.getTime();\n return {\n day: Math.floor(diff / (1_000 * 60 * 60 * 24)),\n hours: Math.floor((diff % (1_000 * 60 * 60 * 24)) / (1_000 * 60 * 60)),\n minutes: Math.floor(diff % (1_000 * 60 * 60) / (1_000 * 60)),\n seconds: diff % (1_000 * 60),\n };\n}\n","import type { LRUCache } from 'lru-cache';\nimport type * as E from '../expressions';\nimport { asTermType } from '../expressions';\nimport type { ArgumentType } from '../functions';\nimport { double, float, string } from '../functions/Helpers';\nimport type { KnownLiteralTypes } from './Consts';\nimport { TypeAlias, TypeURL } from './Consts';\n\nexport type OverrideType = KnownLiteralTypes | 'term';\n\n/**\n * Types that are not mentioned just map to 'term'.\n * When editing this, make sure type promotion and substitution don't start interfering.\n * e.g. when saying something like string -> stringly -> anyUri -> term.\n * This would make substitution on types that promote to each other possible. We and the specs don't want that!\n * A DAG will be created based on this. Make sure it doesn't have any cycles!\n */\nexport const extensionTableInput: Record = {\n // Datetime types\n [TypeURL.XSD_DATE_TIME_STAMP]: TypeURL.XSD_DATE_TIME,\n\n // Duration types\n [TypeURL.XSD_DAY_TIME_DURATION]: TypeURL.XSD_DURATION,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: TypeURL.XSD_DURATION,\n\n // Stringly types\n [TypeURL.RDF_LANG_STRING]: TypeAlias.SPARQL_STRINGLY,\n [TypeURL.XSD_STRING]: TypeAlias.SPARQL_STRINGLY,\n\n // String types\n [TypeURL.XSD_NORMALIZED_STRING]: TypeURL.XSD_STRING,\n [TypeURL.XSD_TOKEN]: TypeURL.XSD_NORMALIZED_STRING,\n [TypeURL.XSD_LANGUAGE]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NM_TOKEN]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NAME]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NC_NAME]: TypeURL.XSD_NAME,\n [TypeURL.XSD_ENTITY]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID_REF]: TypeURL.XSD_NC_NAME,\n\n // Numeric types\n // https://www.w3.org/TR/sparql11-query/#operandDataTypes\n // > numeric denotes typed literals with datatypes xsd:integer, xsd:decimal, xsd:float, and xsd:double\n [TypeURL.XSD_DOUBLE]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_FLOAT]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_DECIMAL]: TypeAlias.SPARQL_NUMERIC,\n\n // Decimal types\n [TypeURL.XSD_INTEGER]: TypeURL.XSD_DECIMAL,\n\n [TypeURL.XSD_NON_POSITIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_NEGATIVE_INTEGER]: TypeURL.XSD_NON_POSITIVE_INTEGER,\n\n [TypeURL.XSD_LONG]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_INT]: TypeURL.XSD_LONG,\n [TypeURL.XSD_SHORT]: TypeURL.XSD_INT,\n [TypeURL.XSD_BYTE]: TypeURL.XSD_SHORT,\n\n [TypeURL.XSD_NON_NEGATIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_POSITIVE_INTEGER]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_LONG]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_INT]: TypeURL.XSD_UNSIGNED_LONG,\n [TypeURL.XSD_UNSIGNED_SHORT]: TypeURL.XSD_UNSIGNED_INT,\n [TypeURL.XSD_UNSIGNED_BYTE]: TypeURL.XSD_UNSIGNED_SHORT,\n\n [TypeURL.XSD_DATE_TIME]: 'term',\n [TypeURL.XSD_BOOLEAN]: 'term',\n [TypeURL.XSD_DATE]: 'term',\n [TypeURL.XSD_G_MONTH]: 'term',\n [TypeURL.XSD_G_MONTHDAY]: 'term',\n [TypeURL.XSD_G_YEAR]: 'term',\n [TypeURL.XSD_G_YEAR_MONTH]: 'term',\n [TypeURL.XSD_TIME]: 'term',\n [TypeURL.XSD_G_DAY]: 'term',\n [TypeURL.XSD_DURATION]: 'term',\n [TypeAlias.SPARQL_NUMERIC]: 'term',\n [TypeAlias.SPARQL_STRINGLY]: 'term',\n [TypeURL.XSD_ANY_URI]: 'term',\n};\ntype SuperTypeDict = Record & { __depth: number };\ntype SuperTypeDictTable = Record;\n// The key 'term' is not included in these keys. Something that is just a term will map to number 0.\nexport type GeneralSuperTypeDict = Record & { __depth: number };\nexport const superTypeDictTable: SuperTypeDictTable = Object.create(null);\n\n/**\n * This will return the super types of a type and cache them.\n * @param type IRI we will decide the super types of.\n * @param openWorldType the enabler that provides a way to find super types.\n */\nexport function getSuperTypes(type: string, openWorldType: ISuperTypeProvider): GeneralSuperTypeDict {\n const cached = openWorldType.cache.get(type);\n if (cached) {\n return cached;\n }\n const value = openWorldType.discoverer(type);\n if (value === 'term') {\n const res: GeneralSuperTypeDict = Object.create(null);\n res.__depth = 0;\n res[type] = 0;\n openWorldType.cache.set(type, res);\n return res;\n }\n let subExtension: GeneralSuperTypeDict;\n const knownValue = asKnownLiteralType(value);\n if (knownValue) {\n subExtension = { ...superTypeDictTable[knownValue] };\n } else {\n subExtension = { ...getSuperTypes(value, openWorldType) };\n }\n subExtension.__depth++;\n subExtension[type] = subExtension.__depth;\n openWorldType.cache.set(type, subExtension);\n return subExtension;\n}\n\n// No circular structure allowed! & No other keys allowed!\nexport function extensionTableInit(): void {\n for (const [ _key, value ] of Object.entries(extensionTableInput)) {\n const key = _key;\n if (superTypeDictTable[key]) {\n continue;\n }\n extensionTableBuilderInitKey(key, value, superTypeDictTable);\n }\n}\nextensionTableInit();\n\nfunction extensionTableBuilderInitKey(key: KnownLiteralTypes, value: OverrideType, res: SuperTypeDictTable): void {\n if (value === 'term' || value === undefined) {\n const baseRes: SuperTypeDict = Object.create(null);\n baseRes.__depth = 0;\n baseRes[key] = 0;\n res[key] = baseRes;\n return;\n }\n if (!res[value]) {\n extensionTableBuilderInitKey(value, extensionTableInput[value], res);\n }\n res[key] = { ...res[value], [key]: res[value].__depth + 1, __depth: res[value].__depth + 1 };\n}\n\nexport const typeAliasCheck: Record = Object.create(null);\nfunction initTypeAliasCheck(): void {\n for (const val of Object.values(TypeAlias)) {\n typeAliasCheck[val] = true;\n }\n}\ninitTypeAliasCheck();\n\nexport function asTypeAlias(type: string): TypeAlias | undefined {\n if (type in typeAliasCheck) {\n return type;\n }\n return undefined;\n}\n\nexport function asKnownLiteralType(type: string): KnownLiteralTypes | undefined {\n if (type in superTypeDictTable) {\n return type;\n }\n return undefined;\n}\n\nexport function asOverrideType(type: string): OverrideType | undefined {\n if (asKnownLiteralType(type) ?? type === 'term') {\n return type;\n }\n return undefined;\n}\n\nexport function asGeneralType(type: string): 'term' | E.TermType | undefined {\n if (type === 'term' || asTermType(type)) {\n return <'term' | E.TermType> type;\n }\n return undefined;\n}\n\nexport type TypeCache = LRUCache;\nexport type SuperTypeCallback = (unknownType: string) => string;\nexport interface ISuperTypeProvider {\n cache: TypeCache;\n discoverer: SuperTypeCallback;\n}\n\n/**\n * Internal type of @see isSubTypeOf This only takes knownTypes but doesn't need an enabler\n */\nexport function isInternalSubType(baseType: OverrideType, argumentType: KnownLiteralTypes): boolean {\n return baseType !== 'term' &&\n (superTypeDictTable[baseType] && superTypeDictTable[baseType][argumentType] !== undefined);\n}\n\n/**\n * This function can be used to check the base type is a restriction on a type in the dict.\n * If we want to check if type x is a restriction on string we do this by calling:\n * 'http://www.w3.org/2001/XMLSchema#string' in getSuperTypeDict(X, superTypeProvider)\n * @param baseType\n * @param superTypeProvider\n */\nexport function getSuperTypeDict(baseType: string, superTypeProvider: ISuperTypeProvider): GeneralSuperTypeDict {\n const concreteType: KnownLiteralTypes | undefined = asKnownLiteralType(baseType);\n if (concreteType) {\n // Concrete dataType is known by expression-evaluator.\n return superTypeDictTable[concreteType];\n }\n // Datatype is a custom datatype\n return getSuperTypes(baseType, superTypeProvider);\n}\n\n/**\n * This function needs to be O(1)! The execution time of this function is vital!\n * We define typeA isSubtypeOf typeA as true.\n * If you find yourself using this function a lot (e.g. in a case) please use getSuperTypeDict instead.\n * @param baseType type you want to provide.\n * @param argumentType type you want to provide @param baseType to.\n * @param superTypeProvider the enabler to discover super types of unknown types.\n */\nexport function isSubTypeOf(\n baseType: string,\n argumentType: KnownLiteralTypes,\n superTypeProvider: ISuperTypeProvider,\n): boolean {\n if (baseType === 'term') {\n return false;\n }\n return getSuperTypeDict(baseType, superTypeProvider)[argumentType] !== undefined;\n}\n\n// Defined by https://www.w3.org/TR/xpath-31/#promotion .\n// e.g. When a function takes a string, it can also accept a XSD_ANY_URI if it's cast first.\nexport const typePromotion: Partial E.TermExpression;\n}[]>> = {\n [TypeURL.XSD_STRING]: [\n { typeToPromote: TypeURL.XSD_ANY_URI, conversionFunction: arg => string(arg.str()) },\n ],\n [TypeURL.XSD_DOUBLE]: [\n { typeToPromote: TypeURL.XSD_FLOAT, conversionFunction: arg => double((arg).typedValue) },\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => double((arg).typedValue) },\n ],\n [TypeURL.XSD_FLOAT]: [\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => float((arg).typedValue) },\n ],\n};\n","import { Logger } from '@comunica/types';\n\n/**\n * A logger that voids everything.\n */\nexport class LoggerVoid extends Logger {\n public debug(): void {\n // Void\n }\n\n public error(): void {\n // Void\n }\n\n public fatal(): void {\n // Void\n }\n\n public info(): void {\n // Void\n }\n\n public trace(): void {\n // Void\n }\n\n public warn(): void {\n // Void\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A comunica mediator that runs all actors that resolve their test.\n * This mediator will always resolve to the first actor's output.\n */\nexport class MediatorAll, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator {\n public constructor(args: IMediatorArgs) {\n super(args);\n }\n\n public override async mediate(action: I): Promise {\n // Collect all actors that resolve their test\n const validActors: A[] = [];\n let testResults: IActorReply[];\n try {\n testResults = this.publish(action);\n } catch {\n testResults = [];\n }\n for (const testResult of testResults) {\n try {\n await testResult.reply;\n validActors.push(testResult.actor);\n } catch {\n // Ignore errors\n }\n }\n\n // Send action to all valid actors\n const outputs = await Promise.all(validActors.map(actor => actor.runObservable(action)));\n\n return outputs[0];\n }\n\n protected async mediateWith(): Promise {\n throw new Error('Unsupported operation: MediatorAll#mediateWith');\n }\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica mediator that goes over all actors in sequence and forwards I/O.\n * This required the action input and the actor output to be of the same type.\n */\nexport class MediatorCombinePipeline<\n A extends Actor,\nH extends IAction | (IActorOutput & { context: IActionContext }),\nT extends IActorTest,\n>\n extends Mediator {\n public readonly filterErrors: boolean | undefined;\n public readonly order: 'increasing' | 'decreasing' | undefined;\n public readonly field: string | undefined;\n\n public constructor(args: IMediatorCombinePipelineArgs) {\n super(args);\n }\n\n public override async mediate(action: H): Promise {\n let testResults: IActorReply[] | { actor: A; reply: T }[];\n try {\n testResults = this.publish(action);\n } catch {\n // If no actors are available, just return the input as output\n return action;\n }\n\n if (this.filterErrors) {\n const _testResults: IActorReply[] = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n } catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n\n // Delegate test errors.\n testResults = await Promise.all(testResults.map(async({ actor, reply }) => ({ actor, reply: await reply })));\n\n // Order the test results if ordering is enabled\n if (this.order) {\n // A function used to extract an ordering value from a test result\n const getOrder = (elem: T): number => {\n // If there is a field key use it, otherwise use the input\n // element for ordering\n const value = this.field ? ( elem)[this.field] : elem;\n\n // Check the ordering value is a number\n if (typeof value !== 'number') {\n throw new TypeError('Cannot order elements that are not numbers.');\n }\n return value;\n };\n\n testResults = testResults.sort((actor1, actor2) =>\n (this.order === 'increasing' ? 1 : -1) *\n (getOrder(actor1.reply) - getOrder(actor2.reply)));\n }\n\n // Pass action to first actor,\n // and each actor output as input to the following actor.\n let handle: H = action;\n for (const { actor } of testResults) {\n handle = { ...handle, ...await actor.runObservable(handle) };\n }\n\n // Return the final actor output\n return handle;\n }\n\n protected mediateWith(): Promise {\n throw new Error('Method not supported.');\n }\n}\n\nexport interface IMediatorCombinePipelineArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * If actors that throw test errors should be ignored\n */\n filterErrors?: boolean;\n /**\n * The field to use for ordering (if the ordering strategy is chosen).\n * Leave undefined if the test output is a number rather than an object.\n */\n field?: string;\n /**\n * The strategy of ordering the pipeline (increasing or decreasing).\n * For choosing to leave the order of the pipeline unchanged, leave this undefined.\n * For choosing to order by increasing values: 'increasing'.\n * For choosing to order by decreasing values: 'decreasing'.\n */\n order?: 'increasing' | 'decreasing' | undefined;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A comunica mediator that takes the union of all actor results.\n *\n * The actors that are registered first will have priority on setting overlapping fields.\n */\nexport class MediatorCombineUnion<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends Mediator\n implements IMediatorCombineUnionArgs {\n public readonly filterErrors: boolean | undefined;\n public readonly field: string;\n public readonly combiner: (results: O[]) => O;\n\n public constructor(args: IMediatorCombineUnionArgs) {\n super(args);\n this.combiner = this.createCombiner();\n }\n\n public override async mediate(action: I): Promise {\n let testResults: IActorReply[];\n try {\n testResults = this.publish(action);\n } catch {\n testResults = [];\n }\n\n if (this.filterErrors) {\n const _testResults: IActorReply[] = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n } catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n\n // Delegate test errors.\n await Promise.all(testResults.map(({ reply }) => reply));\n\n // Run action on all actors.\n const results: O[] = await Promise.all(testResults.map(result => result.actor.runObservable(action)));\n\n // Return the combined results.\n return this.combiner(results);\n }\n\n protected mediateWith(): Promise {\n throw new Error('Method not supported.');\n }\n\n protected createCombiner(): (results: O[]) => O {\n return (results: O[]) => {\n const data: any = {};\n data[this.field] = {};\n // eslint-disable-next-line unicorn/prefer-spread\n [{}].concat(results.map((result: any) => result[this.field]))\n // eslint-disable-next-line unicorn/no-array-for-each\n .forEach((value) => {\n data[this.field] = { ...value, ...data[this.field] };\n });\n return data;\n };\n }\n}\n\nexport interface IMediatorCombineUnionArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * If actors that throw test errors should be ignored\n */\n filterErrors?: boolean;\n /**\n * The field name of the test result field over which must be mediated.\n */\n field: string;\n}\n","import type { ActorRdfJoin, IActionRdfJoin } from '@comunica/bus-rdf-join';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorReply, IMediatorArgs } from '@comunica/core';\nimport { Actor, Mediator } from '@comunica/core';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { IQueryOperationResult } from '@comunica/types';\n\n/**\n * A mediator that mediates over actors implementing the Join Coefficients mediator type and assigns fixed weights\n * to calculate an overall score and pick the actor with the lowest score.\n */\nexport class MediatorJoinCoefficientsFixed\n extends Mediator {\n public readonly cpuWeight: number;\n public readonly memoryWeight: number;\n public readonly timeWeight: number;\n public readonly ioWeight: number;\n\n public constructor(args: IMediatorJoinCoefficientsFixedArgs) {\n super(args);\n }\n\n protected async mediateWith(\n action: IActionRdfJoin,\n testResults: IActorReply[],\n ): Promise {\n // Obtain test results\n const errors: Error[] = [];\n const promises = testResults\n .map(({ reply }) => reply)\n .map(promise => promise.catch((error) => {\n errors.push(error);\n }));\n const coefficients = await Promise.all(promises);\n\n // Calculate costs\n let costs: (number | undefined)[] = coefficients\n // eslint-disable-next-line array-callback-return\n .map((coeff) => {\n if (coeff) {\n return coeff.iterations * this.cpuWeight +\n coeff.persistedItems * this.memoryWeight +\n coeff.blockingItems * this.timeWeight +\n coeff.requestTime * this.ioWeight;\n }\n });\n const maxCost = Math.max(...( costs.filter(cost => cost !== undefined)));\n\n // If we have a limit indicator in the context,\n // increase cost of entries that have a number of iterations that is higher than the limit AND block items.\n // In these cases, join operators that produce results early on will be preferred.\n const limitIndicator: number | undefined = action.context.get(KeysQueryOperation.limitIndicator);\n if (limitIndicator) {\n costs = costs.map((cost, i) => {\n if (cost !== undefined && ( coefficients[i]).blockingItems > 0 &&\n\n ( coefficients[i]).iterations > limitIndicator) {\n return cost + maxCost;\n }\n return cost;\n });\n }\n\n // Determine index with lowest cost\n let minIndex = -1;\n let minValue = Number.POSITIVE_INFINITY;\n for (const [ i, cost ] of costs.entries()) {\n if (cost !== undefined && (minIndex === -1 || cost < minValue)) {\n minIndex = i;\n minValue = cost;\n }\n }\n\n // Reject if all actors rejected\n if (minIndex < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${\n errors.map(error => error.message).join('\\n')}`);\n }\n\n // Return actor with lowest cost\n const bestActor = testResults[minIndex].actor;\n\n // Emit calculations in logger\n if (bestActor.includeInLogs) {\n Actor.getContextLogger(action.context)?.debug(`Determined physical join operator '${bestActor.logicalType}-${bestActor.physicalName}'`, {\n entries: action.entries.length,\n variables: await Promise.all(action.entries\n .map(async entry => (await entry.output.metadata()).variables.map(variable => variable.value))),\n costs: Object.fromEntries(costs.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ]).filter(entry => entry[1] !== undefined)),\n coefficients: Object.fromEntries(coefficients.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ]).filter(entry => entry[1] !== undefined)),\n });\n }\n\n return bestActor;\n }\n}\n\nexport interface IMediatorJoinCoefficientsFixedArgs\n extends IMediatorArgs {\n /**\n * Weight for the CPU cost\n */\n cpuWeight: number;\n /**\n * Weight for the memory cost\n */\n memoryWeight: number;\n /**\n * Weight for the execution time cost\n */\n timeWeight: number;\n /**\n * Weight for the I/O cost\n */\n ioWeight: number;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A mediator that can mediate over a single number field.\n *\n * It takes the required 'field' and 'type' parameters.\n * The 'field' parameter represents the field name of the test result field over which must be mediated.\n * The 'type' parameter\n */\nexport class MediatorNumber, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator implements IMediatorNumberArgs {\n public readonly field: string;\n public readonly type: 'min' | 'max';\n public readonly ignoreErrors: boolean;\n public readonly indexPicker: (tests: T[]) => number;\n\n public constructor(args: IMediatorNumberArgs) {\n super(args);\n this.indexPicker = this.createIndexPicker();\n }\n\n /**\n * @return {(tests: T[]) => number} A function that returns the index of the test result\n * that has been chosen by this mediator.\n */\n protected createIndexPicker(): (tests: (T | undefined)[]) => number {\n switch (this.type) {\n case 'min':\n return (tests: (T | undefined)[]): number => tests.reduce((prev, curr, i) => {\n const val: number = this.getOrDefault(( curr)[this.field], Number.POSITIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] > val) ? [ val, i ] : prev;\n }, [ Number.NaN, -1 ])[1];\n case 'max':\n return (tests: (T | undefined)[]): number => tests.reduce((prev, curr, i) => {\n const val: number = this.getOrDefault(( curr)[this.field], Number.NEGATIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] < val) ? [ val, i ] : prev;\n }, [ Number.NaN, -1 ])[1];\n default:\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`No valid \"type\" value was given, must be either 'min' or 'max', but got: ${this.type}`);\n }\n }\n\n protected getOrDefault(value: number | undefined, defaultValue: number): number {\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n return value === undefined ? defaultValue : value;\n }\n\n protected async mediateWith(action: I, testResults: IActorReply[]): Promise {\n let promises = testResults.map(({ reply }) => reply);\n const errors: Error[] = [];\n if (this.ignoreErrors) {\n const dummy: any = {};\n dummy[this.field] = null;\n // eslint-disable-next-line ts/no-floating-promises\n promises = promises.map(promise => promise.catch((error) => {\n errors.push(error);\n return dummy;\n }));\n }\n const results = await Promise.all(promises);\n const index = this.indexPicker(results);\n if (index < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${\n errors.map(error => error.message).join('\\n')}`);\n }\n return testResults[index].actor;\n }\n}\n\nexport interface IMediatorNumberArgs<\n A extends Actor,\nI extends IAction,\nT extends IActorTest,\nO extends IActorOutput,\n>\n extends IMediatorArgs {\n /**\n * The field name of the test result field over which must be mediated.\n */\n field: string;\n /**\n * The way how the index should be selected.\n * For choosing the minimum value: 'min'.\n * For choosing the maximum value: 'max'.\n */\n type: 'min' | 'max';\n\n /**\n * If actors that throw test errors should be ignored\n */\n ignoreErrors?: boolean;\n}\n","import type { Actor, IAction, IActorOutput, IActorReply, IActorTest, IMediatorArgs } from '@comunica/core';\nimport { Mediator } from '@comunica/core';\n\n/**\n * A mediator that picks the first actor that resolves its test.\n */\nexport class MediatorRace, I extends IAction, T extends IActorTest, O extends IActorOutput>\n extends Mediator {\n public constructor(args: IMediatorArgs) {\n super(args);\n }\n\n protected mediateWith(action: I, testResults: IActorReply[]): Promise {\n return new Promise((resolve, reject) => {\n const errors: Error[] = [];\n for (const testResult of testResults) {\n testResult.reply.then(() => {\n resolve(testResult.actor);\n }).catch((error) => {\n // Reject if all replies were rejected\n errors.push(error);\n if (errors.length === testResults.length) {\n reject(new Error(`${this.name} mediated over all rejecting actors:\\n${\n errors.map(subError => subError.message).join('\\n')}`));\n }\n });\n }\n });\n }\n}\n","import type { IMetadataValidationState } from '@comunica/types';\n\n/**\n * Reusable implementation for metadata validation states.\n */\nexport class MetadataValidationState implements IMetadataValidationState {\n private readonly invalidateListeners: (() => void)[] = [];\n public valid = true;\n\n public addInvalidateListener(listener: () => void): void {\n this.invalidateListeners.push(listener);\n }\n\n public invalidate(): void {\n if (this.valid) {\n this.valid = false;\n for (const invalidateListener of this.invalidateListeners) {\n invalidateListener();\n }\n }\n }\n}\n","/**\n * A logger accepts messages from different levels\n * and emits them in a certain way.\n */\nexport abstract class Logger {\n /**\n * All available logging levels.\n * @type {{trace: number; debug: number; info: number; warn: number; error: number; fatal: number}}\n */\n\n public static readonly LEVELS: Record = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n };\n\n /**\n * Convert a string-based logging level to a numerical logging level.\n * @param level A string-based logging level\n * @return The numerical logging level, or undefined.\n */\n public static getLevelOrdinal(level: string): number {\n return Logger.LEVELS[level];\n }\n\n public abstract trace(message: string, data?: any): void;\n public abstract debug(message: string, data?: any): void;\n public abstract info(message: string, data?: any): void;\n public abstract warn(message: string, data?: any): void;\n public abstract error(message: string, data?: any): void;\n public abstract fatal(message: string, data?: any): void;\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (typeof object === 'number' && isNaN(object)) {\n throw new Error('NaN is not allowed');\n }\n\n if (typeof object === 'number' && !isFinite(object)) {\n throw new Error('Infinity is not allowed');\n }\n\n if (object === null || typeof object !== 'object') {\n return JSON.stringify(object);\n }\n\n if (object.toJSON instanceof Function) {\n return serialize(object.toJSON());\n }\n\n if (Array.isArray(object)) {\n const values = object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return `${t}${comma}${serialize(value)}`;\n }, '');\n return `[${values}]`;\n }\n\n const values = Object.keys(object).sort().reduce((t, cv) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return `${t}${comma}${serialize(cv)}:${serialize(object[cv])}`;\n }, '');\n return `{${values}}`;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.promisifyEventEmitter = void 0;\nfunction promisifyEventEmitter(event, result) {\n return new Promise((resolve, reject) => {\n event.on('end', () => resolve(result));\n event.on('error', reject);\n });\n}\nexports.promisifyEventEmitter = promisifyEventEmitter;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n if ((a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n for (i of a.entries())\n if (!equal(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if ((a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/SparqlEndpointFetcher\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SparqlEndpointFetcher = void 0;\nrequire(\"cross-fetch/polyfill\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst sparqljson_parse_1 = require(\"sparqljson-parse\");\nconst sparqlxml_parse_1 = require(\"sparqlxml-parse\");\nconst stringifyStream = require(\"stream-to-string\");\nconst readable_web_to_node_stream_1 = require(\"@smessie/readable-web-to-node-stream\");\n// tslint:disable:no-var-requires\nconst n3 = require('n3');\nconst isStream = require('is-stream');\n/**\n * A SparqlEndpointFetcher can send queries to SPARQL endpoints,\n * and retrieve and parse the results.\n */\nclass SparqlEndpointFetcher {\n constructor(args) {\n args = args || {};\n this.method = args.method || 'POST';\n this.additionalUrlParams = args.additionalUrlParams || new URLSearchParams();\n this.defaultHeaders = args.defaultHeaders || new Headers();\n this.fetchCb = args.fetch;\n this.sparqlJsonParser = new sparqljson_parse_1.SparqlJsonParser(args);\n this.sparqlXmlParser = new sparqlxml_parse_1.SparqlXmlParser(args);\n this.sparqlParsers = {\n [SparqlEndpointFetcher.CONTENTTYPE_SPARQL_JSON]: {\n parseBooleanStream: (sparqlResponseStream) => this.sparqlJsonParser.parseJsonBooleanStream(sparqlResponseStream),\n parseResultsStream: (sparqlResponseStream) => this.sparqlJsonParser.parseJsonResultsStream(sparqlResponseStream),\n },\n [SparqlEndpointFetcher.CONTENTTYPE_SPARQL_XML]: {\n parseBooleanStream: (sparqlResponseStream) => this.sparqlXmlParser.parseXmlBooleanStream(sparqlResponseStream),\n parseResultsStream: (sparqlResponseStream) => this.sparqlXmlParser.parseXmlResultsStream(sparqlResponseStream),\n },\n };\n this.timeout = args.timeout;\n }\n /**\n * Get the query type of the given query.\n *\n * This will parse the query and thrown an exception on syntax errors.\n *\n * @param {string} query A query.\n * @return {\"SELECT\" | \"ASK\" | \"CONSTRUCT\" | \"UNKNOWN\"} The query type.\n */\n getQueryType(query) {\n const parsedQuery = new sparqljs_1.Parser({ sparqlStar: true }).parse(query);\n return parsedQuery.type === 'query'\n ? (parsedQuery.queryType === 'DESCRIBE' ? 'CONSTRUCT' : parsedQuery.queryType) : \"UNKNOWN\";\n }\n /**\n * Get the query type of the given update query.\n *\n * This will parse the update query and thrown an exception on syntax errors.\n *\n * @param {string} query An update query.\n * @return {'UNKNOWN' | UpdateTypes} The included update operations.\n */\n getUpdateTypes(query) {\n const parsedQuery = new sparqljs_1.Parser({ sparqlStar: true }).parse(query);\n if (parsedQuery.type === 'update') {\n const operations = {};\n for (const update of parsedQuery.updates) {\n if ('type' in update) {\n operations[update.type] = true;\n }\n else {\n operations[update.updateType] = true;\n }\n }\n return operations;\n }\n else {\n return \"UNKNOWN\";\n }\n ;\n }\n ;\n /**\n * Send a SELECT query to the given endpoint URL and return the resulting bindings stream.\n * @see IBindings\n * @param {string} endpoint A SPARQL endpoint URL. (without the `?query=` suffix).\n * @param {string} query A SPARQL query string.\n * @return {Promise} A stream of {@link IBindings}.\n */\n async fetchBindings(endpoint, query) {\n const [contentType, responseStream] = await this\n .fetchRawStream(endpoint, query, SparqlEndpointFetcher.CONTENTTYPE_SPARQL);\n const parser = this.sparqlParsers[contentType];\n if (!parser) {\n throw new Error('Unknown SPARQL results content type: ' + contentType);\n }\n return parser.parseResultsStream(responseStream);\n }\n /**\n * Send an ASK query to the given endpoint URL and return a promise resolving to the boolean answer.\n * @param {string} endpoint A SPARQL endpoint URL. (without the `?query=` suffix).\n * @param {string} query A SPARQL query string.\n * @return {Promise} A boolean resolving to the answer.\n */\n async fetchAsk(endpoint, query) {\n const [contentType, responseStream] = await this\n .fetchRawStream(endpoint, query, SparqlEndpointFetcher.CONTENTTYPE_SPARQL);\n const parser = this.sparqlParsers[contentType];\n if (!parser) {\n throw new Error('Unknown SPARQL results content type: ' + contentType);\n }\n return parser.parseBooleanStream(responseStream);\n }\n /**\n * Send a CONSTRUCT/DESCRIBE query to the given endpoint URL and return the resulting triple stream.\n * @param {string} endpoint A SPARQL endpoint URL. (without the `?query=` suffix).\n * @param {string} query A SPARQL query string.\n * @return {Promise} A stream of triples.\n */\n async fetchTriples(endpoint, query) {\n const rawStream = (await this.fetchRawStream(endpoint, query, SparqlEndpointFetcher.CONTENTTYPE_TURTLE))[1];\n return rawStream.pipe(new n3.StreamParser({ format: SparqlEndpointFetcher.CONTENTTYPE_TURTLE }));\n }\n /**\n * Send an update query to the given endpoint URL using POST.\n *\n * @param {string} endpoint A SPARQL endpoint URL. (without the `?query=` suffix).\n * @param {string} query A SPARQL query string.\n */\n async fetchUpdate(endpoint, query) {\n const AbortController = globalThis.AbortController || await Promise.resolve().then(() => require('abort-controller'));\n const abortController = new AbortController();\n const defaultHeadersRaw = {};\n this.defaultHeaders.forEach((value, key) => {\n defaultHeadersRaw[key] = value;\n });\n const init = {\n method: 'POST',\n headers: Object.assign(Object.assign({}, defaultHeadersRaw), { 'content-type': 'application/sparql-update' }),\n body: query,\n signal: abortController.signal,\n };\n await this.handleFetchCall(endpoint, init, { ignoreBody: true });\n abortController.abort();\n }\n /**\n * Send a query to the given endpoint URL and return the resulting stream.\n *\n * This will only accept responses with the application/sparql-results+json content type.\n *\n * @param {string} endpoint A SPARQL endpoint URL. (without the `?query=` suffix).\n * @param {string} query A SPARQL query string.\n * @param {string} acceptHeader The HTTP accept to use.\n * @return {Promise<[string, NodeJS.ReadableStream]>} The content type and SPARQL endpoint response stream.\n */\n async fetchRawStream(endpoint, query, acceptHeader) {\n let url = this.method === 'POST' ? endpoint : endpoint + '?query=' + encodeURIComponent(query);\n // Initiate request\n const headers = new Headers(this.defaultHeaders);\n let body;\n headers.append('Accept', acceptHeader);\n if (this.method === 'POST') {\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n body = new URLSearchParams();\n body.set('query', query);\n this.additionalUrlParams.forEach((value, key) => {\n body.set(key, value);\n });\n headers.append('Content-Length', body.toString().length.toString());\n }\n else if (this.additionalUrlParams.toString() !== '') {\n url += `&${this.additionalUrlParams.toString()}`;\n }\n return this.handleFetchCall(url, { headers, method: this.method, body });\n }\n /**\n * Helper function to generalize internal fetch calls.\n *\n * @param {string} url The URL to call.\n * @param {RequestInit} init Options to pass along to the fetch call.\n * @param {any} options Other specific fetch options.\n * @return {Promise<[string, NodeJS.ReadableStream]>} The content type and SPARQL endpoint response stream.\n */\n async handleFetchCall(url, init, options = {}) {\n let timeoutId;\n if (this.timeout) {\n const controller = new AbortController();\n init.signal = controller.signal;\n timeoutId = setTimeout(() => controller.abort(), this.timeout);\n }\n const httpResponse = await (this.fetchCb || fetch)(url, init);\n clearTimeout(timeoutId);\n let responseStream;\n // Handle response body\n if (!options.ignoreBody) {\n // Wrap WhatWG readable stream into a Node.js readable stream\n // If the body already is a Node.js stream (in the case of node-fetch), don't do explicit conversion.\n responseStream = isStream(httpResponse.body)\n ? httpResponse.body : new readable_web_to_node_stream_1.ReadableWebToNodeStream(httpResponse.body);\n }\n // Determine the content type and emit it to the stream\n let contentType = httpResponse.headers.get('Content-Type') || '';\n if (contentType.indexOf(';') > 0) {\n contentType = contentType.substr(0, contentType.indexOf(';'));\n }\n // Emit an error if the server returned an invalid response\n if (!httpResponse.ok) {\n const simpleUrl = /^[^?]*/u.exec(url)[0];\n let bodyString = 'empty response';\n if (responseStream) {\n bodyString = await stringifyStream(responseStream);\n }\n throw new Error(`Invalid SPARQL endpoint response from ${simpleUrl} (HTTP status ${httpResponse.status}):\\n${bodyString}`);\n }\n return [contentType, responseStream];\n }\n}\nSparqlEndpointFetcher.CONTENTTYPE_SPARQL_JSON = 'application/sparql-results+json';\nSparqlEndpointFetcher.CONTENTTYPE_SPARQL_XML = 'application/sparql-results+xml';\nSparqlEndpointFetcher.CONTENTTYPE_SPARQL = `${SparqlEndpointFetcher.CONTENTTYPE_SPARQL_JSON};q=1.0,${SparqlEndpointFetcher.CONTENTTYPE_SPARQL_XML};q=0.7`;\nSparqlEndpointFetcher.CONTENTTYPE_TURTLE = 'text/turtle';\nexports.SparqlEndpointFetcher = SparqlEndpointFetcher;\n//# sourceMappingURL=SparqlEndpointFetcher.js.map","(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(typeof self !== 'undefined' ? self : this);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/handler\"), exports);\n__exportStar(require(\"./lib/Converter\"), exports);\n__exportStar(require(\"./lib/IConvertContext\"), exports);\n__exportStar(require(\"./lib/IConvertSettings\"), exports);\n__exportStar(require(\"./lib/Util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Converter = void 0;\nconst language_1 = require(\"graphql/language\");\nconst handler_1 = require(\"./handler\");\nconst directivenode_1 = require(\"./handler/directivenode\");\nconst IConvertContext_1 = require(\"./IConvertContext\");\nconst Util_1 = require(\"./Util\");\n/**\n * Translate GraphQL queries into SPARQL algebra.\n */\nclass Converter {\n constructor(settings) {\n settings = settings || {};\n settings.variableDelimiter = settings.variableDelimiter || '_';\n settings.expressionVariableCounter = settings.expressionVariableCounter || 0;\n this.util = new Util_1.Util(settings);\n this.initializeNodeHandlers(settings);\n }\n static registerNodeHandlers(util, settings) {\n util.registerNodeHandler(new handler_1.NodeHandlerDocument(util, settings));\n util.registerNodeHandler(new handler_1.NodeHandlerDefinitionOperation(util, settings));\n util.registerNodeHandler(new handler_1.NodeHandlerDefinitionFragment(util, settings));\n util.registerNodeHandler(new handler_1.NodeHandlerSelectionFragmentSpread(util, settings));\n util.registerNodeHandler(new handler_1.NodeHandlerSelectionInlineFragment(util, settings));\n util.registerNodeHandler(new handler_1.NodeHandlerSelectionField(util, settings));\n }\n static registerNodeValueHandlers(util, settings) {\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerVariable(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerInt(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerFloat(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerString(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerBoolean(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerNull(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerEnum(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerList(util, settings));\n util.registerNodeValueHandler(new handler_1.NodeValueHandlerObject(util, settings));\n }\n static registerDirectiveNodeHandlers(util, settings) {\n util.registerDirectiveNodeHandler(new directivenode_1.DirectiveNodeHandlerInclude(util, settings));\n util.registerDirectiveNodeHandler(new directivenode_1.DirectiveNodeHandlerOptional(util, settings));\n util.registerDirectiveNodeHandler(new directivenode_1.DirectiveNodeHandlerPlural(util, settings));\n util.registerDirectiveNodeHandler(new directivenode_1.DirectiveNodeHandlerSingle(util, settings));\n util.registerDirectiveNodeHandler(new directivenode_1.DirectiveNodeHandlerSkip(util, settings));\n }\n /**\n * Translates a GraphQL query into SPARQL algebra.\n * @param {string | DocumentNode} graphqlQuery A GraphQL query string or node.\n * @param {IContext} context A JSON-LD context.\n * @param {IConvertOptions} options An options object.\n * @return {Promise} A promise resolving to an operation.\n */\n graphqlToSparqlAlgebra(graphqlQuery, context, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.graphqlToSparqlAlgebraRawContext(graphqlQuery, yield this.util.contextParser.parse(context), options);\n });\n }\n /**\n * Translates a GraphQL query into SPARQL algebra.\n * @param {string | DocumentNode} graphqlQuery A GraphQL query string or node.\n * @param {IContext} context A JSON-LD context.\n * @param {IConvertOptions} options An options object.\n * @return {Operation} An operation.\n */\n graphqlToSparqlAlgebraRawContext(graphqlQuery, context, options) {\n options = options || {};\n const document = typeof graphqlQuery === 'string' ? (0, language_1.parse)(graphqlQuery) : graphqlQuery;\n const fragmentDefinitions = this.indexFragments(document);\n const convertContext = {\n context,\n fragmentDefinitions,\n graph: this.util.dataFactory.defaultGraph(),\n path: [],\n singularizeState: IConvertContext_1.SingularizeState.PLURAL,\n singularizeVariables: options.singularizeVariables || {},\n subject: null,\n terminalVariables: [],\n variablesDict: options.variablesDict || {},\n variablesMetaDict: {},\n };\n return this.util.handleNode(document, convertContext);\n }\n /**\n * Create an index of all fragment definitions in the given document.\n *\n * This will assign a new array of definition nodes without fragment definition.\n *\n * @param {DocumentNode} document A document node.\n * @return {{[p: string]: FragmentDefinitionNode}} An index of fragment definition nodes.\n */\n indexFragments(document) {\n const fragmentDefinitions = {};\n const newDefinitions = [];\n for (const definition of document.definitions) {\n if (definition.kind === 'FragmentDefinition') {\n fragmentDefinitions[definition.name.value] = definition;\n }\n else {\n newDefinitions.push(definition);\n }\n }\n document.definitions = newDefinitions;\n return fragmentDefinitions;\n }\n initializeNodeHandlers(settings) {\n Converter.registerNodeHandlers(this.util, settings);\n Converter.registerNodeValueHandlers(this.util, settings);\n Converter.registerDirectiveNodeHandlers(this.util, settings);\n }\n}\nexports.Converter = Converter;\n//# sourceMappingURL=Converter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SingularizeState = void 0;\n/**\n * A singularization state for variable values.\n */\nvar SingularizeState;\n(function (SingularizeState) {\n /**\n * If only a first matching value should be picked.\n */\n SingularizeState[SingularizeState[\"SINGLE\"] = 0] = \"SINGLE\";\n /**\n * If all matching values should be picked.\n */\n SingularizeState[SingularizeState[\"PLURAL\"] = 1] = \"PLURAL\";\n})(SingularizeState = exports.SingularizeState || (exports.SingularizeState = {}));\n//# sourceMappingURL=IConvertContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IConvertSettings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * Utilities for conversion.\n */\nclass Util {\n constructor(settings) {\n this.nodeHandlers = {};\n this.nodeValueHandlers = {};\n this.directiveNodeHandlers = {};\n this.settings = settings;\n this.dataFactory = settings.dataFactory || new rdf_data_factory_1.DataFactory();\n this.operationFactory = new sparqlalgebrajs_1.Factory(this.dataFactory);\n this.contextParser = new jsonld_context_parser_1.ContextParser();\n }\n /**\n * Register a new {@link NodeHandlerAdapter}.\n * @param {NodeHandlerAdapter} nodeHandler A handler for converting GraphQL nodes to operations.\n */\n registerNodeHandler(nodeHandler) {\n this.nodeHandlers[nodeHandler.targetKind] = nodeHandler;\n }\n /**\n * Register a new {@link NodeValueHandlerAdapter}\n * @param {NodeValueHandlerAdapter} nodeValueHandler A handler for converting GraphQL value nodes\n * to terms and patterns.\n */\n registerNodeValueHandler(nodeValueHandler) {\n this.nodeValueHandlers[nodeValueHandler.targetKind] = nodeValueHandler;\n }\n /**\n * Register a new {@link DirectiveNodeHandlerAdapter}\n * @param {DirectiveNodeHandlerAdapter} directiveNodeHandler A handler for handling GraphQL directives.\n */\n registerDirectiveNodeHandler(directiveNodeHandler) {\n this.directiveNodeHandlers[directiveNodeHandler.targetKind] = directiveNodeHandler;\n }\n /**\n * Get the operation for the given GraphQL node.\n * @param {T} node A GraphQL node.\n * @param {IConvertContext} convertContext A conversion context.\n * @return {Operation} A SPARQL algebra operation.\n */\n handleNode(node, convertContext) {\n const nodeHandler = this.nodeHandlers[node.kind];\n if (!nodeHandler) {\n throw new Error(`Unsupported GraphQL node '${node.kind}'`);\n }\n return nodeHandler.handle(node, convertContext);\n }\n /**\n * Get the terms and patterns for the given value node.\n * @param {T} node A GraphQL node.\n * @param {string} fieldName The name of the field or argument in which the value was encapsulated.\n * @param {IConvertContext} convertContext A conversion context.\n * @return {IValueNodeHandlerOutput} The RDF terms and patterns.\n */\n handleNodeValue(node, fieldName, convertContext) {\n const nodeValueHandler = this.nodeValueHandlers[node.kind];\n if (!nodeValueHandler) {\n throw new Error(`Unsupported GraphQL value node '${node.kind}'`);\n }\n return nodeValueHandler.handle(node, fieldName, convertContext);\n }\n /**\n * Get the handler output for the given directive.\n * @param {IDirectiveContext} directiveContext The current directive context.\n * @param {IConvertContext} convertContext A conversion context.\n * @return {IDirectiveNodeHandlerOutput} The directive node handler output or null.\n */\n handleDirectiveNode(directiveContext, convertContext) {\n const directiveNodeHandler = this.directiveNodeHandlers[directiveContext.directive.name.value];\n if (!directiveNodeHandler) {\n return null;\n }\n return directiveNodeHandler.handle(directiveContext, convertContext);\n }\n /**\n * Join the given array of operations.\n * If all operations are BGPs, then a single big BGP with all patterns from the given BGPs will be created.\n * @param {Operation[]} operations An array of operations.\n * @return {Operation} A single joined operation.\n */\n joinOperations(operations) {\n if (operations.length === 1) {\n return operations[0];\n }\n // Check if which operations are BGPs\n const bgps = [];\n const nonBgps = [];\n for (const operation of operations) {\n if (operation.type === 'bgp') {\n bgps.push(operation);\n }\n else {\n nonBgps.push(operation);\n }\n }\n if (bgps.length === operations.length) {\n // Create a big BGP from all BGPs\n return this.joinOperationsAsBgp(bgps);\n }\n else if (bgps.length === operations.length - 1\n && nonBgps[0].type === 'leftjoin'\n && nonBgps[0].input[0].type === 'bgp') {\n // Check if we have one left-join (with a BGP on the left), and the rest are BGPs.\n // If so, merge the BGPS within the left-hand-side of the left-join.\n const originalLeftJoin = nonBgps[0];\n bgps.push(originalLeftJoin.input[0]);\n return this.operationFactory.createLeftJoin(this.joinOperationsAsBgp(bgps), originalLeftJoin.input[1]);\n }\n else if (nonBgps.length === operations.length) {\n // Create nested joins\n return this.joinOperationsAsNestedJoin(nonBgps);\n }\n else {\n // Join as much BGPs together as possible, and join with the other operations\n return this.joinOperationsAsNestedJoin([\n this.joinOperationsAsBgp(bgps),\n this.joinOperationsAsNestedJoin(nonBgps),\n ]);\n }\n }\n joinOperationsAsBgp(operations) {\n return this.operationFactory.createBgp([].concat.apply([], operations\n .map((op) => op.patterns)));\n }\n joinOperationsAsNestedJoin(operations) {\n return this.operationFactory.createJoin(operations);\n }\n /**\n * Append a field's label to a path.\n * @param {string[]} path A path.\n * @param {string} fieldLabel A field label.\n * @return {string[]} A new path array.\n */\n appendFieldToPath(path, fieldLabel) {\n return path.concat([fieldLabel]);\n }\n /**\n * Get the label of a field by taking into account the alias.\n * @param {FieldNode} field A field node.\n * @return {string} The field name or alias.\n */\n getFieldLabel(field) {\n return (field.alias ? field.alias : field.name).value;\n }\n /**\n * Convert a field node to a variable built from the node name and the current path inside the context.\n * @param {string} fieldLabel A field label.\n * @param {IConvertContext} convertContext A convert context.\n * @param {string} variableDelimiter A variable delimiter.\n * @return {Variable} A variable.\n */\n nameToVariable(fieldLabel, convertContext) {\n return this.dataFactory.variable((convertContext.path.length\n ? convertContext.path.join(this.settings.variableDelimiter) + this.settings.variableDelimiter : '') + fieldLabel);\n }\n /**\n * Convert a GraphQL term into a URI using the given context.\n * @param {string} value A GraphQL term.\n * @param {IContext} context A JSON-LD context.\n * @return {NamedNode} A named node.\n */\n valueToNamedNode(value, context) {\n const contextValue = context.expandTerm(value, true);\n if (this.settings.requireContext && !contextValue) {\n throw new Error('No context entry was found for ' + value);\n }\n return this.dataFactory.namedNode(contextValue || value);\n }\n /**\n * Get an argument by name.\n * This will return null if the argument could not be found.\n * @param {ReadonlyArray} args Arguments or null.\n * @param {string} name The name of an argument.\n * @return {ArgumentNode} The named argument.\n */\n getArgument(args, name) {\n if (args) {\n for (const argument of args) {\n if (argument.name.value === name) {\n return argument;\n }\n }\n }\n }\n /**\n * Create a pattern with an rdf:type predicate.\n * @param {Term} subject The subject.\n * @param {NamedTypeNode} typeCondition The object name.\n * @param {IConvertContext} convertContext A convert context.\n * @return {Pattern} A pattern.\n */\n newTypePattern(subject, typeCondition, convertContext) {\n return this.operationFactory.createPattern(subject, this.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), this.valueToNamedNode(typeCondition.name.value, convertContext.context), convertContext.graph);\n }\n /**\n * Create a quad pattern when the predicate is a name node that needs to be translated using the context.\n * @param {Term} subject The subject.\n * @param {NameNode} predicateName The name node for the predicate.\n * @param {Term} object The object.\n * @param {Term} graph The graph.\n * @param {IContext} context A context.\n * @return {Pattern} A quad pattern.\n */\n createQuadPattern(subject, predicateName, object, graph, context) {\n const predicate = this.valueToNamedNode(predicateName.value, context);\n if (context && context.getContextRaw()[predicateName.value]\n && context.getContextRaw()[predicateName.value]['@reverse']) {\n return this.operationFactory.createPattern(object, predicate, subject, graph);\n }\n return this.operationFactory.createPattern(subject, predicate, object, graph);\n }\n /**\n * Create a quad path when the predicate is a list node with field alternatives\n * that need to be translated using the context.\n * @param {Term} subject The subject.\n * @param {NameNode} predicateName The name node for the predicate.\n * @param {Term} object The object.\n * @param {Term} graph The graph.\n * @param {IContext} context A context.\n * @return {Path} A quad property path.\n */\n createQuadPath(subject, predicateName, predicateAlternatives, object, graph, context) {\n const predicateInitial = this.valueToNamedNode(predicateName.value, context);\n let pathSymbol = this.operationFactory.createLink(predicateInitial);\n // Add all fields in the list as predicate alternatives\n for (const predicateAlternative of predicateAlternatives.values) {\n if (predicateAlternative.kind !== 'EnumValue') {\n throw new Error('Invalid value type for \\'alt\\' argument, must be EnumValue, but got '\n + predicateAlternative.kind);\n }\n pathSymbol = this.operationFactory.createAlt([\n pathSymbol,\n this.operationFactory.createLink(this.valueToNamedNode(predicateAlternative.value, context)),\n ]);\n }\n // Reverse the path based on the initial predicate\n if (context && context.getContextRaw()[predicateName.value]\n && context.getContextRaw()[predicateName.value]['@reverse']) {\n return this.operationFactory.createPath(object, pathSymbol, subject, graph);\n }\n return this.operationFactory.createPath(subject, pathSymbol, object, graph);\n }\n}\nexports.Util = Util;\n//# sourceMappingURL=Util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerAdapter = void 0;\n/**\n * A handler for converting GraphQL nodes to operations.\n */\nclass NodeHandlerAdapter {\n constructor(targetKind, util, settings) {\n this.targetKind = targetKind;\n this.util = util;\n this.settings = settings;\n }\n /* ----- Node quad context ----- */\n /**\n * Get the quad context of a selection set node that should be used for the whole definition node.\n *\n * This is a pre-processing step of selection sets.\n * Its only purpose is to determine the subject within a selection set,\n * because this subject is needed to link with its parent.\n * In a later phase, the selection set will be processed using the discovered subject,\n * and the field identifying the subject will be ignored.\n *\n * @param {SelectionSetNode} selectionSet A selection set node.\n * @param {string} fieldLabel A field label.\n * @param {IConvertContext} convertContext A convert context.\n * @return {INodeQuadContext} The subject, graph and auxiliary patterns.\n */\n getNodeQuadContextSelectionSet(selectionSet, fieldLabel, convertContext) {\n const nodeQuadContext = {};\n if (selectionSet) {\n for (const selectionNode of selectionSet.selections) {\n if (selectionNode.kind === 'Field') {\n const fieldNode = selectionNode;\n this.handleNodeQuadContextField(fieldNode, convertContext, nodeQuadContext, 'id', 'subject');\n this.handleNodeQuadContextField(fieldNode, convertContext, nodeQuadContext, 'graph', 'graph');\n }\n }\n }\n return nodeQuadContext;\n }\n /**\n * Handles a single field for determining the node quad context.\n * @param {FieldNode} fieldNode A field node.\n * @param {IConvertContext} convertContext A convert context.\n * @param {INodeQuadContext} nodeQuadContext The node quad context to populate.\n * @param {string} fieldName The field name to check for.\n * @param {'subject' | 'graph'} nodeQuadContextKey The key to fill into the node quad context.\n */\n handleNodeQuadContextField(fieldNode, convertContext, nodeQuadContext, fieldName, nodeQuadContextKey) {\n if (!nodeQuadContext[nodeQuadContextKey] && fieldNode.name.value === fieldName) {\n // Get (or set) the nodeQuadContextKey for fieldName fields\n if (!nodeQuadContext[nodeQuadContextKey]) {\n const argument = this.util.getArgument(fieldNode.arguments, '_');\n if (argument) {\n const valueOutput = this.util.handleNodeValue(argument.value, fieldNode.name.value, convertContext);\n if (valueOutput.terms.length !== 1) {\n throw new Error(`Only single values can be set as ${fieldName}, but got ${valueOutput.terms\n .length} at ${fieldNode.name.value}`);\n }\n nodeQuadContext[nodeQuadContextKey] = valueOutput.terms[0];\n if (valueOutput.auxiliaryPatterns) {\n if (!nodeQuadContext.auxiliaryPatterns) {\n nodeQuadContext.auxiliaryPatterns = [];\n }\n nodeQuadContext.auxiliaryPatterns.concat(valueOutput.auxiliaryPatterns);\n }\n }\n }\n if (!nodeQuadContext[nodeQuadContextKey]) {\n const term = this.util.nameToVariable(this.util.getFieldLabel(fieldNode), convertContext);\n convertContext.terminalVariables.push(term);\n nodeQuadContext[nodeQuadContextKey] = term;\n }\n }\n }\n /* ----- Directives ----- */\n /**\n * Get an operation override defined by one of the directives.\n *\n * This should be called before a sub-operation is handled.\n *\n * @param {ReadonlyArray} directives An option directives array.\n * @param {string} fieldLabel The current field label.\n * @param {IConvertContext} convertContext A convert context.\n * @return {IDirectiveNodeHandlerOutput[]} The directive node handler outputs, or null if it should be ignored.\n */\n getDirectiveOutputs(directives, fieldLabel, convertContext) {\n const outputs = [];\n if (directives) {\n for (const directive of directives) {\n const output = this.util.handleDirectiveNode({ directive, fieldLabel }, convertContext);\n if (output) {\n if (output.ignore) {\n return null;\n }\n outputs.push(output);\n }\n }\n }\n return outputs;\n }\n /**\n * Handle the directive outputs with respect to an operation.\n *\n * This should be called after a sub-operation was handled.\n *\n * @param {IDirectiveNodeHandlerOutput[]} directiveOutputs\n * @param {Operation} operation\n * @return {Operation}\n */\n handleDirectiveOutputs(directiveOutputs, operation) {\n for (const directiveOutput of directiveOutputs) {\n if (directiveOutput.ignore) {\n return this.util.operationFactory.createBgp([]);\n }\n if (directiveOutput.operationOverrider) {\n operation = directiveOutput.operationOverrider(operation);\n }\n }\n return operation;\n }\n}\nexports.NodeHandlerAdapter = NodeHandlerAdapter;\n//# sourceMappingURL=NodeHandlerAdapter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerDefinitionAdapter = void 0;\nconst NodeHandlerAdapter_1 = require(\"./NodeHandlerAdapter\");\n/**\n * A handler for converting GraphQL definition nodes to operations.\n */\nclass NodeHandlerDefinitionAdapter extends NodeHandlerAdapter_1.NodeHandlerAdapter {\n constructor(targetKind, util, settings) {\n super(targetKind, util, settings);\n }\n}\nexports.NodeHandlerDefinitionAdapter = NodeHandlerDefinitionAdapter;\n//# sourceMappingURL=NodeHandlerDefinitionAdapter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerDefinitionFragment = void 0;\nconst NodeHandlerDefinitionAdapter_1 = require(\"./NodeHandlerDefinitionAdapter\");\n/**\n * Errors if fragment definitions are found,\n * as these should have been processed away earlier.\n */\nclass NodeHandlerDefinitionFragment extends NodeHandlerDefinitionAdapter_1.NodeHandlerDefinitionAdapter {\n constructor(util, settings) {\n super('FragmentDefinition', util, settings);\n }\n handle(operationDefinition, convertContext) {\n throw new Error('Illegal state: fragment definitions must be indexed and removed before processing');\n }\n}\nexports.NodeHandlerDefinitionFragment = NodeHandlerDefinitionFragment;\n//# sourceMappingURL=NodeHandlerDefinitionFragment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerDefinitionOperation = void 0;\nconst NodeHandlerDefinitionAdapter_1 = require(\"./NodeHandlerDefinitionAdapter\");\n/**\n * Converts GraphQL definitions to joined operations for all its selections.\n */\nclass NodeHandlerDefinitionOperation extends NodeHandlerDefinitionAdapter_1.NodeHandlerDefinitionAdapter {\n constructor(util, settings) {\n super('OperationDefinition', util, settings);\n }\n handle(operationDefinition, convertContext) {\n if (operationDefinition.operation !== 'query') {\n throw new Error('Unsupported definition operation: ' + operationDefinition.operation);\n }\n // We ignore the query name, as SPARQL doesn't support naming queries.\n // Variables\n if (operationDefinition.variableDefinitions) {\n for (const variableDefinition of operationDefinition.variableDefinitions) {\n const name = variableDefinition.variable.name.value;\n // Put the default value in the context if it hasn't been defined yet.\n if (variableDefinition.defaultValue) {\n if (!convertContext.variablesDict[name]) {\n convertContext.variablesDict[name] = variableDefinition.defaultValue;\n }\n }\n // Handle type\n let typeNode = variableDefinition.type;\n const mandatory = typeNode.kind === 'NonNullType';\n if (mandatory) {\n typeNode = typeNode.type;\n }\n const list = typeNode.kind === 'ListType';\n if (list) {\n typeNode = typeNode.type;\n }\n const type = typeNode.name.value;\n convertContext.variablesMetaDict[name] = { mandatory, list, type };\n }\n }\n // Directives\n const directiveOutputs = this.getDirectiveOutputs(operationDefinition.directives, operationDefinition.name ? operationDefinition.name.value : '', convertContext);\n if (!directiveOutputs) {\n return this.util.operationFactory.createBgp([]);\n }\n // Handle the operation\n const operation = this.util.joinOperations(operationDefinition.selectionSet.selections\n .map((selectionNode) => this.util.handleNode(selectionNode, convertContext)));\n // Override operation if needed\n return this.handleDirectiveOutputs(directiveOutputs, operation);\n }\n}\nexports.NodeHandlerDefinitionOperation = NodeHandlerDefinitionOperation;\n//# sourceMappingURL=NodeHandlerDefinitionOperation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerDocument = void 0;\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst NodeHandlerAdapter_1 = require(\"./NodeHandlerAdapter\");\n/**\n * Converts GraphQL documents to joined operations for all its definitions.\n */\nclass NodeHandlerDocument extends NodeHandlerAdapter_1.NodeHandlerAdapter {\n constructor(util, settings) {\n super('Document', util, settings);\n }\n handle(document, convertContext) {\n const definitionOperations = document.definitions\n .map((definition) => {\n const subjectOutput = this.getNodeQuadContextDefinitionNode(definition, Object.assign(Object.assign({}, convertContext), { ignoreUnknownVariables: true }));\n const queryParseContext = Object.assign(Object.assign({}, convertContext), { graph: subjectOutput.graph || convertContext.graph, subject: subjectOutput.subject || this.util.dataFactory.blankNode() });\n let definitionOperation = this.util.handleNode(definition, queryParseContext);\n if (subjectOutput && subjectOutput.auxiliaryPatterns) {\n definitionOperation = this.util.joinOperations([\n definitionOperation,\n this.util.operationFactory.createBgp(subjectOutput.auxiliaryPatterns),\n ]);\n }\n return definitionOperation;\n });\n const operation = this.util.operationFactory.createProject(definitionOperations.length === 1 ? definitionOperations[0] : this.util.operationFactory.createUnion(definitionOperations), convertContext.terminalVariables);\n // Convert blank nodes to variables\n return this.translateBlankNodesToVariables(operation);\n }\n /**\n * Get the quad context of a definition node that should be used for the whole definition node.\n * @param {DefinitionNode} definition A definition node.\n * @param {IConvertContext} convertContext A convert context.\n * @return {INodeQuadContext} The subject and optional auxiliary patterns.\n */\n getNodeQuadContextDefinitionNode(definition, convertContext) {\n if (definition.kind === 'OperationDefinition') {\n return this.getNodeQuadContextSelectionSet(definition.selectionSet, definition.name ? definition.name.value : '', convertContext);\n }\n throw new Error(`Unsupported definition: ${definition.kind}`);\n }\n /**\n * Translates blank nodes inside the query to variables.\n * @param {Project} operation The operation to translate.\n * @return {Operation} The transformed operation.\n */\n translateBlankNodesToVariables(operation) {\n const self = this;\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(operation.variables)\n .reduce((acc, variable) => {\n acc[variable.value] = true;\n return acc;\n }, {});\n return sparqlalgebrajs_1.Util.mapOperation(operation, {\n path: (op, factory) => {\n return {\n recurse: false,\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n };\n },\n pattern: (op, factory) => {\n return {\n recurse: false,\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = sparqlalgebrajs_1.Util.createUniqueVariable(term.value, variablesRaw, self.util.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n }\n}\nexports.NodeHandlerDocument = NodeHandlerDocument;\n//# sourceMappingURL=NodeHandlerDocument.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerSelectionAdapter = void 0;\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst IConvertContext_1 = require(\"../IConvertContext\");\nconst NodeHandlerAdapter_1 = require(\"./NodeHandlerAdapter\");\n/**\n * A handler for converting GraphQL selection nodes to operations.\n */\nclass NodeHandlerSelectionAdapter extends NodeHandlerAdapter_1.NodeHandlerAdapter {\n constructor(targetKind, util, settings) {\n super(targetKind, util, settings);\n }\n /**\n * Get the quad context of a field node that should be used for the whole definition node.\n * @param {FieldNode} field A field node.\n * @param {string} fieldLabel A field label.\n * @param {IConvertContext} convertContext A convert context.\n * @return {INodeQuadContext} The subject and optional auxiliary patterns.\n */\n getNodeQuadContextFieldNode(field, fieldLabel, convertContext) {\n return this.getNodeQuadContextSelectionSet(field.selectionSet, fieldLabel, Object.assign(Object.assign({}, convertContext), { path: this.util.appendFieldToPath(convertContext.path, fieldLabel) }));\n }\n /**\n * Convert a field node to an operation.\n * @param {IConvertContext} convertContext A convert context.\n * @param {FieldNode} fieldNode The field node to convert.\n * @param {boolean} pushTerminalVariables If terminal variables should be created.\n * @param {Pattern[]} auxiliaryPatterns Optional patterns that should be part of the BGP.\n * @return {Operation} The reslting operation.\n */\n fieldToOperation(convertContext, fieldNode, pushTerminalVariables, auxiliaryPatterns) {\n // If a deeper node is being selected, and if the current object should become the next subject\n const nesting = pushTerminalVariables;\n // Offset and limit can be changed using the magic arguments 'first' and 'offset'.\n let offset = 0;\n let limit;\n // Ignore 'id' and 'graph' fields, because we have processed them earlier in getNodeQuadContextSelectionSet.\n if (fieldNode.name.value === 'id' || fieldNode.name.value === 'graph') {\n pushTerminalVariables = false;\n // Validate all _-arguments, because even though they were handled before,\n // the validity of variables could not be checked,\n // as variablesMetaDict wasn't populated at that time yet.\n if (fieldNode.arguments) {\n for (const argument of fieldNode.arguments) {\n if (argument.name.value === '_') {\n this.util.handleNodeValue(argument.value, fieldNode.name.value, convertContext);\n }\n }\n }\n }\n // Determine the field label for variable naming, taking into account aliases\n const fieldLabel = this.util.getFieldLabel(fieldNode);\n // Handle the singular/plural scope\n if (convertContext.singularizeState === IConvertContext_1.SingularizeState.SINGLE) {\n convertContext.singularizeVariables[this.util.nameToVariable(fieldLabel, convertContext).value] = true;\n }\n // Handle meta fields\n if (pushTerminalVariables) {\n const operationOverride = this.handleMetaField(convertContext, fieldLabel, auxiliaryPatterns);\n if (operationOverride) {\n return operationOverride;\n }\n }\n const operations = auxiliaryPatterns\n ? [this.util.operationFactory.createBgp(auxiliaryPatterns)] : [];\n // Define subject and object\n const subjectOutput = this.getNodeQuadContextFieldNode(fieldNode, fieldLabel, convertContext);\n let object = subjectOutput.subject || this.util.nameToVariable(fieldLabel, convertContext);\n let graph = subjectOutput.graph || convertContext.graph;\n if (subjectOutput.auxiliaryPatterns) {\n operations.push(this.util.operationFactory.createBgp(subjectOutput.auxiliaryPatterns));\n }\n // Check if there is a '_' argument\n // We do this before handling all other arguments so that the order of final triple patterns is sane.\n let createQuadPattern = true;\n let overrideObjectTerms = null;\n if (pushTerminalVariables && fieldNode.arguments && fieldNode.arguments.length) {\n for (const argument of fieldNode.arguments) {\n if (argument.name.value === '_') {\n // '_'-arguments do not create an additional predicate link, but set the value directly.\n const valueOutput = this.util.handleNodeValue(argument.value, fieldNode.name.value, convertContext);\n overrideObjectTerms = valueOutput.terms;\n operations.push(this.util.operationFactory.createBgp(valueOutput.terms.map((term) => this.util.createQuadPattern(convertContext.subject, fieldNode.name, term, convertContext.graph, convertContext.context))));\n if (valueOutput.auxiliaryPatterns) {\n operations.push(this.util.operationFactory.createBgp(valueOutput.auxiliaryPatterns));\n }\n pushTerminalVariables = false;\n break;\n }\n else if (argument.name.value === 'graph') {\n // 'graph'-arguments do not create an additional predicate link, but set the graph.\n const valueOutput = this.util.handleNodeValue(argument.value, fieldNode.name.value, convertContext);\n if (valueOutput.terms.length !== 1) {\n throw new Error(`Only single values can be set as graph, but got ${valueOutput.terms\n .length} at ${fieldNode.name.value}`);\n }\n graph = valueOutput.terms[0];\n convertContext = Object.assign(Object.assign({}, convertContext), { graph });\n if (valueOutput.auxiliaryPatterns) {\n operations.push(this.util.operationFactory.createBgp(valueOutput.auxiliaryPatterns));\n }\n break;\n }\n else if (argument.name.value === 'alt') {\n // 'alt'-arguments do not create an additional predicate link, but create alt-property paths.\n let pathValue = argument.value;\n if (pathValue.kind !== 'ListValue') {\n pathValue = { kind: 'ListValue', values: [pathValue] };\n }\n operations.push(this.util.createQuadPath(convertContext.subject, fieldNode.name, pathValue, object, convertContext.graph, convertContext.context));\n createQuadPattern = false;\n break;\n }\n }\n }\n // Create at least a pattern for the parent node and the current path.\n if (pushTerminalVariables && createQuadPattern) {\n operations.push(this.util.operationFactory.createBgp([\n this.util.createQuadPattern(convertContext.subject, fieldNode.name, object, convertContext.graph, convertContext.context),\n ]));\n }\n // Create patterns for the node's arguments\n if (fieldNode.arguments && fieldNode.arguments.length) {\n for (const argument of fieldNode.arguments) {\n if (argument.name.value === '_' || argument.name.value === 'graph' || argument.name.value === 'alt') {\n // no-op\n }\n else if (argument.name.value === 'first') {\n if (argument.value.kind !== 'IntValue') {\n throw new Error('Invalid value type for \\'first\\' argument: ' + argument.value.kind);\n }\n limit = parseInt(argument.value.value, 10);\n }\n else if (argument.name.value === 'offset') {\n if (argument.value.kind !== 'IntValue') {\n throw new Error('Invalid value type for \\'offset\\' argument: ' + argument.value.kind);\n }\n offset = parseInt(argument.value.value, 10);\n }\n else {\n const valueOutput = this.util.handleNodeValue(argument.value, argument.name.value, convertContext);\n operations.push(this.util.operationFactory.createBgp(valueOutput.terms.map((term) => this.util.createQuadPattern(object, argument.name, term, convertContext.graph, convertContext.context))));\n if (valueOutput.auxiliaryPatterns) {\n operations.push(this.util.operationFactory.createBgp(valueOutput.auxiliaryPatterns));\n }\n }\n }\n }\n // Directives\n const directiveOutputs = this.getDirectiveOutputs(fieldNode.directives, fieldLabel, convertContext);\n if (!directiveOutputs) {\n return this.util.operationFactory.createBgp([]);\n }\n // Recursive call for nested selection sets\n let operation = this.util.joinOperations(operations);\n if (fieldNode.selectionSet && fieldNode.selectionSet.selections.length) {\n // Override the object if needed\n if (overrideObjectTerms) {\n if (overrideObjectTerms.length !== 1) {\n throw new Error(`Only single values can be set as id, but got ${overrideObjectTerms\n .length} at ${fieldNode.name.value}`);\n }\n object = overrideObjectTerms[0];\n }\n // Change path value when there was an alias on this node.\n const subConvertContext = Object.assign(Object.assign(Object.assign({}, convertContext), nesting ? { path: this.util.appendFieldToPath(convertContext.path, fieldLabel) } : {}), { graph, subject: nesting ? object : convertContext.subject });\n // If the magic keyword 'totalCount' is present, include a count aggregator.\n let totalCount = false;\n const selections = fieldNode.selectionSet.selections\n .filter((selection) => {\n if (selection.kind === 'Field' && selection.name.value === 'totalCount') {\n totalCount = true;\n return false;\n }\n return true;\n });\n let joinedOperation = this.util.joinOperations(operations\n .concat(selections.map((selectionNode) => this.util.handleNode(selectionNode, subConvertContext))));\n // Modify the operation if there was a count selection\n if (totalCount) {\n // Create to a count aggregation\n const expressionVariable = this.util.dataFactory.variable('var' + this.settings.expressionVariableCounter++);\n const countOverVariable = this.util.dataFactory\n .variable(object.value + this.settings.variableDelimiter + 'totalCount');\n const aggregator = this.util.operationFactory.createBoundAggregate(expressionVariable, 'count', this.util.operationFactory.createTermExpression(object), false);\n const countProject = this.util.operationFactory.createProject(this.util.operationFactory.createExtend(this.util.operationFactory.createGroup(operation, [], [aggregator]), countOverVariable, this.util.operationFactory.createTermExpression(expressionVariable)), [countOverVariable]);\n convertContext.terminalVariables.push(countOverVariable);\n // If no other selections exist (next to totalCount),\n // then we just return the count operations as-is,\n // otherwise, we join the count operation with all other selections\n if (!selections.length) {\n joinedOperation = countProject;\n }\n else {\n joinedOperation = this.util.operationFactory.createJoin([\n this.util.operationFactory.createProject(joinedOperation, []),\n countProject,\n ]);\n }\n }\n operation = joinedOperation;\n }\n else if (pushTerminalVariables && object.termType === 'Variable') {\n // If no nested selection sets exist,\n // consider the object variable as a terminal variable that should be selected.\n convertContext.terminalVariables.push(object);\n }\n // Wrap the operation in a slice if a 'first' or 'offset' argument was provided.\n if (offset || limit) {\n operation = this.util.operationFactory.createSlice(this.util.operationFactory.createProject(operation, sparqlalgebrajs_1.Util.inScopeVariables(operation)), offset, limit);\n }\n // Override operation if needed\n return this.handleDirectiveOutputs(directiveOutputs, operation);\n }\n /**\n * Check if the given node is a meta field, for things like introspection.\n * If so, return a new operation for this, otherwise, null is returned.\n * @param {IConvertContext} convertContext A convert context.\n * @param {Term} subject The subject.\n * @param {string} fieldLabel The field label to convert.\n * @param {Pattern[]} auxiliaryPatterns Optional patterns that should be part of the BGP.\n * @return {Operation} An operation or undefined.\n */\n handleMetaField(convertContext, fieldLabel, auxiliaryPatterns) {\n // TODO: in the future, we should add support for GraphQL wide range of introspection features:\n // http://graphql.org/learn/introspection/\n if (fieldLabel === '__typename') {\n const object = this.util.nameToVariable(fieldLabel, convertContext);\n convertContext.terminalVariables.push(object);\n return this.util.operationFactory.createBgp([\n this.util.operationFactory.createPattern(convertContext.subject, this.util.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), this.util.nameToVariable(fieldLabel, convertContext), convertContext.graph),\n ].concat(auxiliaryPatterns || []));\n }\n }\n}\nexports.NodeHandlerSelectionAdapter = NodeHandlerSelectionAdapter;\n//# sourceMappingURL=NodeHandlerSelectionAdapter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerSelectionField = void 0;\nconst NodeHandlerSelectionAdapter_1 = require(\"./NodeHandlerSelectionAdapter\");\n/**\n * Converts GraphQL fields to one or more quad patterns.\n */\nclass NodeHandlerSelectionField extends NodeHandlerSelectionAdapter_1.NodeHandlerSelectionAdapter {\n constructor(util, settings) {\n super('Field', util, settings);\n }\n handle(fieldNode, convertContext) {\n return this.fieldToOperation(convertContext, fieldNode, true);\n }\n}\nexports.NodeHandlerSelectionField = NodeHandlerSelectionField;\n//# sourceMappingURL=NodeHandlerSelectionField.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerSelectionFragmentSpread = void 0;\nconst NodeHandlerSelectionAdapter_1 = require(\"./NodeHandlerSelectionAdapter\");\n/**\n * Converts GraphQL fragment spread to one or more quad patterns with a given type within an optional.\n */\nclass NodeHandlerSelectionFragmentSpread extends NodeHandlerSelectionAdapter_1.NodeHandlerSelectionAdapter {\n constructor(util, settings) {\n super('FragmentSpread', util, settings);\n }\n handle(fragmentSpreadNode, convertContext) {\n const fragmentDefinitionNode = convertContext\n .fragmentDefinitions[fragmentSpreadNode.name.value];\n if (!fragmentDefinitionNode) {\n throw new Error('Undefined fragment definition: ' + fragmentSpreadNode.name.value);\n }\n // Wrap in an OPTIONAL, as this pattern should only apply if the type applies\n const fieldNode = {\n alias: undefined,\n arguments: undefined,\n directives: fragmentDefinitionNode.directives,\n kind: 'Field',\n name: fragmentSpreadNode.name,\n selectionSet: fragmentDefinitionNode.selectionSet,\n };\n const auxiliaryPatterns = [\n this.util.newTypePattern(convertContext.subject, fragmentDefinitionNode.typeCondition, convertContext),\n ];\n return this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]), this.fieldToOperation(convertContext, fieldNode, false, auxiliaryPatterns));\n }\n}\nexports.NodeHandlerSelectionFragmentSpread = NodeHandlerSelectionFragmentSpread;\n//# sourceMappingURL=NodeHandlerSelectionFragmentSpread.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHandlerSelectionInlineFragment = void 0;\nconst NodeHandlerSelectionAdapter_1 = require(\"./NodeHandlerSelectionAdapter\");\n/**\n * Converts GraphQL inline fragment to one or more quad patterns with a given type within an optional.\n */\nclass NodeHandlerSelectionInlineFragment extends NodeHandlerSelectionAdapter_1.NodeHandlerSelectionAdapter {\n constructor(util, settings) {\n super('InlineFragment', util, settings);\n }\n handle(inlineFragmentNode, convertContext) {\n // Wrap in an OPTIONAL, as this pattern should only apply if the type applies\n const fieldNode = {\n alias: undefined,\n arguments: undefined,\n directives: inlineFragmentNode.directives,\n kind: 'Field',\n name: { kind: 'Name', value: convertContext.subject.value },\n selectionSet: inlineFragmentNode.selectionSet,\n };\n const auxiliaryPatterns = inlineFragmentNode.typeCondition\n ? [this.util.newTypePattern(convertContext.subject, inlineFragmentNode.typeCondition, convertContext)] : [];\n return this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]), this.fieldToOperation(convertContext, fieldNode, false, auxiliaryPatterns));\n }\n}\nexports.NodeHandlerSelectionInlineFragment = NodeHandlerSelectionInlineFragment;\n//# sourceMappingURL=NodeHandlerSelectionInlineFragment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerAdapter = void 0;\n/**\n * An abstract handler for GraphQL directives.\n */\nclass DirectiveNodeHandlerAdapter {\n constructor(targetKind, util, settings) {\n this.targetKind = targetKind;\n this.util = util;\n this.settings = settings;\n }\n /**\n * Get the value of the 'if' argument in a directive.\n * @param {DirectiveNode} directive A directive.\n * @param {IConvertContext} convertContext A convert context.\n * @return {Term} The term.\n */\n getDirectiveConditionalValue(directive, convertContext) {\n const arg = this.util.getArgument(directive.arguments, 'if');\n if (!arg) {\n throw new Error(`The directive ${directive.name.value} is missing an if-argument.`);\n }\n const subValue = this.util.handleNodeValue(arg.value, arg.name.value, convertContext);\n if (subValue.terms.length !== 1) {\n throw new Error(`Can not apply the directive ${directive.name.value} with a list.`);\n }\n return subValue.terms[0];\n }\n /**\n * If a `scope: all` directive param is present.\n * @param {DirectiveNode} directive A directive.\n * @return {boolean} If `scope: all` is present.\n */\n isDirectiveScopeAll(directive) {\n const scopeArg = this.util.getArgument(directive.arguments, 'scope');\n return scopeArg && scopeArg.value.kind === 'EnumValue' && scopeArg.value.value === 'all';\n }\n}\nexports.DirectiveNodeHandlerAdapter = DirectiveNodeHandlerAdapter;\n//# sourceMappingURL=DirectiveNodeHandlerAdapter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerInclude = void 0;\nconst DirectiveNodeHandlerAdapter_1 = require(\"./DirectiveNodeHandlerAdapter\");\n/**\n * A handler for include directives.\n */\nclass DirectiveNodeHandlerInclude extends DirectiveNodeHandlerAdapter_1.DirectiveNodeHandlerAdapter {\n constructor(util, settings) {\n super('include', util, settings);\n }\n handle(directiveContext, convertContext) {\n const val = this.getDirectiveConditionalValue(directiveContext.directive, convertContext);\n if (val.termType === 'Literal' && val.value === 'false') {\n return { ignore: true };\n }\n return {};\n }\n}\nexports.DirectiveNodeHandlerInclude = DirectiveNodeHandlerInclude;\n//# sourceMappingURL=DirectiveNodeHandlerInclude.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerOptional = void 0;\nconst DirectiveNodeHandlerAdapter_1 = require(\"./DirectiveNodeHandlerAdapter\");\n/**\n * A handler for optional directives.\n */\nclass DirectiveNodeHandlerOptional extends DirectiveNodeHandlerAdapter_1.DirectiveNodeHandlerAdapter {\n constructor(util, settings) {\n super('optional', util, settings);\n }\n handle(directiveContext, convertContext) {\n return {\n operationOverrider: (operation) => this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]), operation),\n };\n }\n}\nexports.DirectiveNodeHandlerOptional = DirectiveNodeHandlerOptional;\n//# sourceMappingURL=DirectiveNodeHandlerOptional.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerPlural = void 0;\nconst IConvertContext_1 = require(\"../../IConvertContext\");\nconst DirectiveNodeHandlerAdapter_1 = require(\"./DirectiveNodeHandlerAdapter\");\n/**\n * A handler for plural directives.\n */\nclass DirectiveNodeHandlerPlural extends DirectiveNodeHandlerAdapter_1.DirectiveNodeHandlerAdapter {\n constructor(util, settings) {\n super('plural', util, settings);\n }\n handle(directiveContext, convertContext) {\n if (this.isDirectiveScopeAll(directiveContext.directive)) {\n convertContext.singularizeState = IConvertContext_1.SingularizeState.PLURAL;\n }\n // Delete the existing entry, as this may have already been set before if we were in a single scope.\n delete convertContext.singularizeVariables[this.util.nameToVariable(directiveContext.fieldLabel, convertContext).value];\n return {};\n }\n}\nexports.DirectiveNodeHandlerPlural = DirectiveNodeHandlerPlural;\n//# sourceMappingURL=DirectiveNodeHandlerPlural.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerSingle = void 0;\nconst IConvertContext_1 = require(\"../../IConvertContext\");\nconst DirectiveNodeHandlerAdapter_1 = require(\"./DirectiveNodeHandlerAdapter\");\n/**\n * A handler for single directives.\n */\nclass DirectiveNodeHandlerSingle extends DirectiveNodeHandlerAdapter_1.DirectiveNodeHandlerAdapter {\n constructor(util, settings) {\n super('single', util, settings);\n }\n handle(directiveContext, convertContext) {\n if (this.isDirectiveScopeAll(directiveContext.directive)) {\n convertContext.singularizeState = IConvertContext_1.SingularizeState.SINGLE;\n }\n convertContext.singularizeVariables[this.util.nameToVariable(directiveContext.fieldLabel, convertContext).value] = true;\n return {};\n }\n}\nexports.DirectiveNodeHandlerSingle = DirectiveNodeHandlerSingle;\n//# sourceMappingURL=DirectiveNodeHandlerSingle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveNodeHandlerSkip = void 0;\nconst DirectiveNodeHandlerAdapter_1 = require(\"./DirectiveNodeHandlerAdapter\");\n/**\n * A handler for skip directives.\n */\nclass DirectiveNodeHandlerSkip extends DirectiveNodeHandlerAdapter_1.DirectiveNodeHandlerAdapter {\n constructor(util, settings) {\n super('skip', util, settings);\n }\n handle(directiveContext, convertContext) {\n const val = this.getDirectiveConditionalValue(directiveContext.directive, convertContext);\n if (val.termType === 'Literal' && val.value === 'true') {\n return { ignore: true };\n }\n return {};\n }\n}\nexports.DirectiveNodeHandlerSkip = DirectiveNodeHandlerSkip;\n//# sourceMappingURL=DirectiveNodeHandlerSkip.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./DirectiveNodeHandlerAdapter\"), exports);\n__exportStar(require(\"./DirectiveNodeHandlerInclude\"), exports);\n__exportStar(require(\"./DirectiveNodeHandlerOptional\"), exports);\n__exportStar(require(\"./DirectiveNodeHandlerPlural\"), exports);\n__exportStar(require(\"./DirectiveNodeHandlerSingle\"), exports);\n__exportStar(require(\"./DirectiveNodeHandlerSkip\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./directivenode\"), exports);\n__exportStar(require(\"./valuenode\"), exports);\n__exportStar(require(\"./NodeHandlerAdapter\"), exports);\n__exportStar(require(\"./NodeHandlerDefinitionAdapter\"), exports);\n__exportStar(require(\"./NodeHandlerDefinitionFragment\"), exports);\n__exportStar(require(\"./NodeHandlerDefinitionOperation\"), exports);\n__exportStar(require(\"./NodeHandlerDocument\"), exports);\n__exportStar(require(\"./NodeHandlerSelectionAdapter\"), exports);\n__exportStar(require(\"./NodeHandlerSelectionField\"), exports);\n__exportStar(require(\"./NodeHandlerSelectionFragmentSpread\"), exports);\n__exportStar(require(\"./NodeHandlerSelectionInlineFragment\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerAdapter = void 0;\n/**\n * A handler for converting GraphQL value nodes to terms and patterns.\n */\nclass NodeValueHandlerAdapter {\n constructor(targetKind, util, settings) {\n this.targetKind = targetKind;\n this.util = util;\n this.settings = settings;\n }\n}\nexports.NodeValueHandlerAdapter = NodeValueHandlerAdapter;\n//# sourceMappingURL=NodeValueHandlerAdapter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerBoolean = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL booleans to RDF boolean terms.\n */\nclass NodeValueHandlerBoolean extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('BooleanValue', util, settings);\n this.datatype = this.util.dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#boolean');\n }\n handle(valueNode, fieldName, convertContext) {\n return { terms: [this.util.dataFactory.literal(valueNode.value ? 'true' : 'false', this.datatype)] };\n }\n}\nexports.NodeValueHandlerBoolean = NodeValueHandlerBoolean;\n//# sourceMappingURL=NodeValueHandlerBoolean.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerEnum = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL enums to RDF named nodes.\n */\nclass NodeValueHandlerEnum extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('EnumValue', util, settings);\n }\n handle(valueNode, fieldName, convertContext) {\n return { terms: [this.util.valueToNamedNode(valueNode.value, convertContext.context)] };\n }\n}\nexports.NodeValueHandlerEnum = NodeValueHandlerEnum;\n//# sourceMappingURL=NodeValueHandlerEnum.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerFloat = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL floats to RDF float terms.\n */\nclass NodeValueHandlerFloat extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('FloatValue', util, settings);\n this.datatype = this.util.dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#float');\n }\n handle(valueNode, fieldName, convertContext) {\n return { terms: [this.util.dataFactory.literal(valueNode.value, this.datatype)] };\n }\n}\nexports.NodeValueHandlerFloat = NodeValueHandlerFloat;\n//# sourceMappingURL=NodeValueHandlerFloat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerInt = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL ints to RDF integer terms.\n */\nclass NodeValueHandlerInt extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('IntValue', util, settings);\n this.datatype = this.util.dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#integer');\n }\n handle(valueNode, fieldName, convertContext) {\n return { terms: [this.util.dataFactory.literal(valueNode.value, this.datatype)] };\n }\n}\nexports.NodeValueHandlerInt = NodeValueHandlerInt;\n//# sourceMappingURL=NodeValueHandlerInt.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerList = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL lists to RDF lists if settings.arraysToRdfLists is true, otherwise it converts to multiple values.\n */\nclass NodeValueHandlerList extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('ListValue', util, settings);\n this.nodeFirst = this.util.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#first');\n this.nodeRest = this.util.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#rest');\n this.nodeNil = this.util.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#nil');\n }\n handle(valueNode, fieldName, convertContext) {\n const listTerms = [];\n let auxiliaryPatterns = [];\n // Create terms for list values\n for (const v of valueNode.values) {\n const subValue = this.util.handleNodeValue(v, fieldName, convertContext);\n for (const term of subValue.terms) {\n listTerms.push(term);\n }\n if (subValue.auxiliaryPatterns) {\n auxiliaryPatterns = auxiliaryPatterns.concat(subValue.auxiliaryPatterns);\n }\n }\n if (this.settings.arraysToRdfLists) {\n // Convert array to RDF list\n // Create chained list structure\n const firstListNode = this.util.dataFactory.blankNode();\n let listNode = firstListNode;\n let remaining = listTerms.length;\n for (const term of listTerms) {\n auxiliaryPatterns.push(this.util.operationFactory.createPattern(listNode, this.nodeFirst, term, convertContext.graph));\n const nextListNode = --remaining === 0 ? this.nodeNil : this.util.dataFactory.blankNode();\n auxiliaryPatterns.push(this.util.operationFactory.createPattern(listNode, this.nodeRest, nextListNode, convertContext.graph));\n listNode = nextListNode;\n }\n return { terms: [firstListNode], auxiliaryPatterns };\n }\n else {\n // Convert array to multiple terms that will be linked via the same predicate.\n return { terms: listTerms, auxiliaryPatterns };\n }\n }\n}\nexports.NodeValueHandlerList = NodeValueHandlerList;\n//# sourceMappingURL=NodeValueHandlerList.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerNull = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL nulls to RDF nil terms.\n */\nclass NodeValueHandlerNull extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('NullValue', util, settings);\n this.nil = this.util.dataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#nil');\n }\n handle(valueNode, fieldName, convertContext) {\n return { terms: [this.nil] };\n }\n}\nexports.NodeValueHandlerNull = NodeValueHandlerNull;\n//# sourceMappingURL=NodeValueHandlerNull.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerObject = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL objects to triple patterns by converting keys to predicates and values to objects.\n */\nclass NodeValueHandlerObject extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('ObjectValue', util, settings);\n }\n handle(valueNode, fieldName, convertContext) {\n // Convert object keys to predicates and values to objects, and link them both with a new blank node.\n const subject = this.util.dataFactory.blankNode();\n let auxiliaryObjectPatterns = [];\n for (const field of valueNode.fields) {\n const subValue = this.util.handleNodeValue(field.value, fieldName, convertContext);\n for (const term of subValue.terms) {\n auxiliaryObjectPatterns.push(this.util.createQuadPattern(subject, field.name, term, convertContext.graph, convertContext.context));\n }\n if (subValue.auxiliaryPatterns) {\n auxiliaryObjectPatterns = auxiliaryObjectPatterns.concat(subValue.auxiliaryPatterns);\n }\n }\n return { terms: [subject], auxiliaryPatterns: auxiliaryObjectPatterns };\n }\n}\nexports.NodeValueHandlerObject = NodeValueHandlerObject;\n//# sourceMappingURL=NodeValueHandlerObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerString = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL strings to RDF string terms, which can have a custom language or datatype.\n */\nclass NodeValueHandlerString extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('StringValue', util, settings);\n }\n handle(valueNode, fieldName, convertContext) {\n const contextEntry = convertContext.context.getContextRaw()[fieldName];\n let language;\n let datatype;\n if (contextEntry && typeof contextEntry !== 'string') {\n if (contextEntry['@language']) {\n language = contextEntry['@language'];\n }\n else if (contextEntry['@type']) {\n datatype = this.util.dataFactory.namedNode(contextEntry['@type']);\n }\n }\n return { terms: [this.util.dataFactory.literal(valueNode.value, language || datatype)] };\n }\n}\nexports.NodeValueHandlerString = NodeValueHandlerString;\n//# sourceMappingURL=NodeValueHandlerString.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeValueHandlerVariable = void 0;\nconst NodeValueHandlerAdapter_1 = require(\"./NodeValueHandlerAdapter\");\n/**\n * Converts GraphQL variables to terms based on the contents of the variablesDict.\n */\nclass NodeValueHandlerVariable extends NodeValueHandlerAdapter_1.NodeValueHandlerAdapter {\n constructor(util, settings) {\n super('Variable', util, settings);\n }\n handle(valueNode, fieldName, convertContext) {\n const id = valueNode.name.value;\n const value = convertContext.variablesDict[id];\n const meta = convertContext.variablesMetaDict[id];\n // Handle missing values\n if (!value) {\n if (!convertContext.ignoreUnknownVariables && (!meta || meta.mandatory)) {\n throw new Error(`Undefined variable: ${id}`);\n }\n else {\n const variable = this.util.dataFactory.variable(id);\n if (convertContext.terminalVariables.map((v) => v.value).indexOf(id) < 0) {\n convertContext.terminalVariables.push(variable);\n }\n return { terms: [variable] };\n }\n }\n // Don't allow variables that refer to other variables\n if (value.kind === 'Variable') {\n throw new Error(`Variable refers to another variable: ${id}`);\n }\n if (meta) {\n // Check the type\n if (meta.list) {\n // If we expect a list, check if we got a list.\n if (value.kind !== 'ListValue') {\n throw new Error(`Expected a list, but got ${value.kind} for ${id}`);\n }\n // Check the type in the list\n if (meta.type) {\n const listValue = value;\n for (const v of listValue.values) {\n if (v.kind !== meta.type) {\n throw new Error(`Expected ${meta.type}, but got ${v.kind} for ${id}`);\n }\n }\n }\n }\n else if (meta.type) {\n // This is allowed to be different (?)\n /*if (value.kind !== meta.type) {\n throw new Error(`Expected ${meta.type}, but got ${value.kind} for ${id}`);\n }*/\n }\n }\n return this.util.handleNodeValue(value, fieldName, convertContext);\n }\n}\nexports.NodeValueHandlerVariable = NodeValueHandlerVariable;\n//# sourceMappingURL=NodeValueHandlerVariable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./NodeValueHandlerAdapter\"), exports);\n__exportStar(require(\"./NodeValueHandlerBoolean\"), exports);\n__exportStar(require(\"./NodeValueHandlerEnum\"), exports);\n__exportStar(require(\"./NodeValueHandlerFloat\"), exports);\n__exportStar(require(\"./NodeValueHandlerInt\"), exports);\n__exportStar(require(\"./NodeValueHandlerList\"), exports);\n__exportStar(require(\"./NodeValueHandlerNull\"), exports);\n__exportStar(require(\"./NodeValueHandlerObject\"), exports);\n__exportStar(require(\"./NodeValueHandlerString\"), exports);\n__exportStar(require(\"./NodeValueHandlerVariable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.toSparqlJs = exports.toSparql = exports.Factory = exports.Algebra = exports.translate = void 0;\nconst sparqlAlgebra_1 = __importDefault(require(\"./lib/sparqlAlgebra\"));\nexports.translate = sparqlAlgebra_1.default;\nconst Algebra = __importStar(require(\"./lib/algebra\"));\nexports.Algebra = Algebra;\nconst factory_1 = __importDefault(require(\"./lib/factory\"));\nexports.Factory = factory_1.default;\nconst sparql_1 = require(\"./lib/sparql\");\nObject.defineProperty(exports, \"toSparql\", { enumerable: true, get: function () { return sparql_1.toSparql; } });\nObject.defineProperty(exports, \"toSparqlJs\", { enumerable: true, get: function () { return sparql_1.toSparqlJs; } });\nconst util_1 = __importDefault(require(\"./lib/util\"));\nexports.Util = util_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expressionTypes = exports.types = void 0;\nvar types;\n(function (types) {\n types[\"ALT\"] = \"alt\";\n types[\"ASK\"] = \"ask\";\n types[\"BGP\"] = \"bgp\";\n types[\"CONSTRUCT\"] = \"construct\";\n types[\"DESCRIBE\"] = \"describe\";\n types[\"DISTINCT\"] = \"distinct\";\n types[\"EXPRESSION\"] = \"expression\";\n types[\"EXTEND\"] = \"extend\";\n types[\"FILTER\"] = \"filter\";\n types[\"FROM\"] = \"from\";\n types[\"GRAPH\"] = \"graph\";\n types[\"GROUP\"] = \"group\";\n types[\"INV\"] = \"inv\";\n types[\"JOIN\"] = \"join\";\n types[\"LEFT_JOIN\"] = \"leftjoin\";\n types[\"LINK\"] = \"link\";\n types[\"MINUS\"] = \"minus\";\n types[\"NOP\"] = \"nop\";\n types[\"NPS\"] = \"nps\";\n types[\"ONE_OR_MORE_PATH\"] = \"OneOrMorePath\";\n types[\"ORDER_BY\"] = \"orderby\";\n types[\"PATH\"] = \"path\";\n types[\"PATTERN\"] = \"pattern\";\n types[\"PROJECT\"] = \"project\";\n types[\"REDUCED\"] = \"reduced\";\n types[\"SEQ\"] = \"seq\";\n types[\"SERVICE\"] = \"service\";\n types[\"SLICE\"] = \"slice\";\n types[\"UNION\"] = \"union\";\n types[\"VALUES\"] = \"values\";\n types[\"ZERO_OR_MORE_PATH\"] = \"ZeroOrMorePath\";\n types[\"ZERO_OR_ONE_PATH\"] = \"ZeroOrOnePath\";\n types[\"COMPOSITE_UPDATE\"] = \"compositeupdate\";\n types[\"DELETE_INSERT\"] = \"deleteinsert\";\n types[\"LOAD\"] = \"load\";\n types[\"CLEAR\"] = \"clear\";\n types[\"CREATE\"] = \"create\";\n types[\"DROP\"] = \"drop\";\n types[\"ADD\"] = \"add\";\n types[\"MOVE\"] = \"move\";\n types[\"COPY\"] = \"copy\";\n})(types = exports.types || (exports.types = {}));\nvar expressionTypes;\n(function (expressionTypes) {\n expressionTypes[\"AGGREGATE\"] = \"aggregate\";\n expressionTypes[\"EXISTENCE\"] = \"existence\";\n expressionTypes[\"NAMED\"] = \"named\";\n expressionTypes[\"OPERATOR\"] = \"operator\";\n expressionTypes[\"TERM\"] = \"term\";\n expressionTypes[\"WILDCARD\"] = \"wildcard\";\n})(expressionTypes = exports.expressionTypes || (exports.expressionTypes = {}));\n//# sourceMappingURL=algebra.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst A = __importStar(require(\"./algebra\"));\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nclass Factory {\n constructor(dataFactory) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.stringType = this.createTerm('http://www.w3.org/2001/XMLSchema#string');\n }\n createAlt(input, flatten = true) { return this.flattenMulti({ type: A.types.ALT, input }, flatten); }\n createAsk(input) { return { type: A.types.ASK, input }; }\n createBoundAggregate(variable, aggregate, expression, distinct, separator) {\n const result = this.createAggregateExpression(aggregate, expression, distinct, separator);\n result.variable = variable;\n return result;\n }\n createBgp(patterns) { return { type: A.types.BGP, patterns }; }\n createConstruct(input, template) { return { type: A.types.CONSTRUCT, input, template }; }\n createDescribe(input, terms) { return { type: A.types.DESCRIBE, input, terms }; }\n createDistinct(input) { return { type: A.types.DISTINCT, input }; }\n createExtend(input, variable, expression) { return { type: A.types.EXTEND, input, variable, expression }; }\n createFrom(input, def, named) { return { type: A.types.FROM, input, default: def, named }; }\n createFilter(input, expression) { return { type: A.types.FILTER, input, expression }; }\n createGraph(input, name) { return { type: A.types.GRAPH, input, name }; }\n createGroup(input, variables, aggregates) { return { type: A.types.GROUP, input, variables, aggregates }; }\n createInv(path) { return { type: A.types.INV, path }; }\n createJoin(input, flatten = true) { return this.flattenMulti({ type: A.types.JOIN, input }, flatten); }\n createLeftJoin(left, right, expression) {\n if (expression)\n return { type: A.types.LEFT_JOIN, input: [left, right], expression };\n return { type: A.types.LEFT_JOIN, input: [left, right] };\n }\n createLink(iri) { return { type: A.types.LINK, iri }; }\n createMinus(left, right) { return { type: A.types.MINUS, input: [left, right] }; }\n createNop() { return { type: A.types.NOP }; }\n createNps(iris) { return { type: A.types.NPS, iris }; }\n createOneOrMorePath(path) { return { type: A.types.ONE_OR_MORE_PATH, path }; }\n createOrderBy(input, expressions) { return { type: A.types.ORDER_BY, input, expressions }; }\n createPath(subject, predicate, object, graph) {\n if (graph)\n return { type: A.types.PATH, subject, predicate, object, graph };\n return { type: A.types.PATH, subject, predicate, object, graph: this.dataFactory.defaultGraph() };\n }\n createPattern(subject, predicate, object, graph) {\n const pattern = this.dataFactory.quad(subject, predicate, object, graph);\n pattern.type = A.types.PATTERN;\n return pattern;\n }\n createProject(input, variables) { return { type: A.types.PROJECT, input, variables }; }\n createReduced(input) { return { type: A.types.REDUCED, input }; }\n createSeq(input, flatten = true) { return this.flattenMulti({ type: A.types.SEQ, input }, flatten); }\n createService(input, name, silent) { return { type: A.types.SERVICE, input, name, silent: Boolean(silent) }; }\n createSlice(input, start, length) {\n start = start || 0;\n if (length !== undefined)\n return { type: A.types.SLICE, input, start, length };\n return { type: A.types.SLICE, input, start };\n }\n createUnion(input, flatten = true) { return this.flattenMulti({ type: A.types.UNION, input }, flatten); }\n createValues(variables, bindings) { return { type: A.types.VALUES, variables, bindings }; }\n createZeroOrMorePath(path) { return { type: A.types.ZERO_OR_MORE_PATH, path }; }\n createZeroOrOnePath(path) { return { type: A.types.ZERO_OR_ONE_PATH, path }; }\n createAggregateExpression(aggregator, expression, distinct, separator) {\n if (separator)\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, separator, distinct };\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, distinct };\n }\n createExistenceExpression(not, input) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.EXISTENCE, not, input }; }\n createNamedExpression(name, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.NAMED, name, args }; }\n createOperatorExpression(operator, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.OPERATOR, operator, args }; }\n createTermExpression(term) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.TERM, term }; }\n createWildcardExpression() { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.WILDCARD, wildcard: new sparqljs_1.Wildcard() }; }\n createTerm(str) {\n return (0, rdf_string_1.stringToTerm)(str, this.dataFactory);\n }\n // Update functions\n createCompositeUpdate(updates) { return { type: A.types.COMPOSITE_UPDATE, updates }; }\n createDeleteInsert(deleteQuads, insertQuads, where) {\n const result = { type: A.types.DELETE_INSERT };\n if (deleteQuads)\n result.delete = deleteQuads;\n if (insertQuads)\n result.insert = insertQuads;\n if (where)\n result.where = where;\n return result;\n }\n createLoad(source, destination, silent) {\n const result = { type: A.types.LOAD, source };\n if (destination)\n result.destination = destination;\n return this.addSilent(result, Boolean(silent));\n }\n createClear(source, silent) {\n return this.addSilent({ type: A.types.CLEAR, source }, Boolean(silent));\n }\n createCreate(source, silent) {\n return this.addSilent({ type: A.types.CREATE, source }, Boolean(silent));\n }\n createDrop(source, silent) {\n return this.addSilent({ type: A.types.DROP, source }, Boolean(silent));\n }\n createAdd(source, destination, silent) {\n return this.addSilent({ type: A.types.ADD, source, destination }, Boolean(silent));\n }\n createMove(source, destination, silent) {\n return this.addSilent({ type: A.types.MOVE, source, destination }, Boolean(silent));\n }\n createCopy(source, destination, silent) {\n return this.addSilent({ type: A.types.COPY, source, destination }, Boolean(silent));\n }\n addSilent(input, silent) {\n if (silent)\n input.silent = silent;\n return input;\n }\n flattenMulti(input, flatten) {\n if (!flatten) {\n return input;\n }\n const type = input.type;\n const children = input.input;\n let newChildren = [];\n for (const child of children) {\n if (child.type === type) {\n newChildren.push(...child.input);\n }\n else {\n newChildren.push(child);\n }\n }\n input.input = newChildren;\n return input;\n }\n}\nexports.default = Factory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toSparqlJs = exports.toSparql = void 0;\nconst rdf_isomorphic_1 = require(\"rdf-isomorphic\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst types = Algebra.types;\nconst eTypes = Algebra.expressionTypes;\nlet context;\nconst factory = new factory_1.default();\nfunction toSparql(op, options = {}) {\n let generator = new sparqljs_1.Generator(options);\n return generator.stringify(toSparqlJs(op));\n}\nexports.toSparql = toSparql;\nfunction toSparqlJs(op) {\n resetContext();\n op = removeQuads(op);\n let result = translateOperation(op);\n if (result.type === 'group')\n return result.patterns[0];\n return result;\n}\nexports.toSparqlJs = toSparqlJs;\nfunction resetContext() {\n context = { project: false, extend: [], group: [], aggregates: [], order: [] };\n}\nfunction translateOperation(op) {\n // this allows us to differentiate between BIND and SELECT when translating EXTEND\n // GRAPH was added because the way graphs get added back here is not the same as how they get added in the future\n // ^ seems fine but might have to be changed if problems get detected in the future\n if (op.type !== types.EXTEND && op.type !== types.ORDER_BY && op.type !== types.GRAPH)\n context.project = false;\n switch (op.type) {\n case types.EXPRESSION: return translateExpression(op);\n case types.ASK: return translateProject(op, types.ASK);\n case types.BGP: return translateBgp(op);\n case types.CONSTRUCT: return translateConstruct(op);\n case types.DESCRIBE: return translateProject(op, types.DESCRIBE);\n case types.DISTINCT: return translateDistinct(op);\n case types.EXTEND: return translateExtend(op);\n case types.FROM: return translateFrom(op);\n case types.FILTER: return translateFilter(op);\n case types.GRAPH: return translateGraph(op);\n case types.GROUP: return translateGroup(op);\n case types.JOIN: return translateJoin(op);\n case types.LEFT_JOIN: return translateLeftJoin(op);\n case types.MINUS: return translateMinus(op);\n case types.NOP: return {};\n case types.ORDER_BY: return translateOrderBy(op);\n case types.PATH: return translatePath(op);\n case types.PATTERN: return translatePattern(op);\n case types.PROJECT: return translateProject(op, types.PROJECT);\n case types.REDUCED: return translateReduced(op);\n case types.SERVICE: return translateService(op);\n case types.SLICE: return translateSlice(op);\n case types.UNION: return translateUnion(op);\n case types.VALUES: return translateValues(op);\n // UPDATE operations\n case types.COMPOSITE_UPDATE: return translateCompositeUpdate(op);\n case types.DELETE_INSERT: return translateDeleteInsert(op);\n case types.LOAD: return translateLoad(op);\n case types.CLEAR: return translateClear(op);\n case types.CREATE: return translateCreate(op);\n case types.DROP: return translateDrop(op);\n case types.ADD: return translateAdd(op);\n case types.MOVE: return translateMove(op);\n case types.COPY: return translateCopy(op);\n }\n throw new Error(`Unknown Operation type ${op.type}`);\n}\nfunction translateExpression(expr) {\n switch (expr.expressionType) {\n case eTypes.AGGREGATE: return translateAggregateExpression(expr);\n case eTypes.EXISTENCE: return translateExistenceExpression(expr);\n case eTypes.NAMED: return translateNamedExpression(expr);\n case eTypes.OPERATOR: return translateOperatorExpression(expr);\n case eTypes.TERM: return translateTermExpression(expr);\n case eTypes.WILDCARD: return translateWildcardExpression(expr);\n }\n throw new Error(`Unknown Expression Operation type ${expr.expressionType}`);\n}\nfunction translatePathComponent(path) {\n switch (path.type) {\n case types.ALT: return translateAlt(path);\n case types.INV: return translateInv(path);\n case types.LINK: return translateLink(path);\n case types.NPS: return translateNps(path);\n case types.ONE_OR_MORE_PATH: return translateOneOrMorePath(path);\n case types.SEQ: return translateSeq(path);\n case types.ZERO_OR_MORE_PATH: return translateZeroOrMorePath(path);\n case types.ZERO_OR_ONE_PATH: return translateZeroOrOnePath(path);\n }\n throw new Error(`Unknown Path type ${path.type}`);\n}\nfunction translateTerm(term) {\n return (0, rdf_string_1.termToString)(term);\n}\n// ------------------------- EXPRESSIONS -------------------------\nfunction translateAggregateExpression(expr) {\n const result = {\n expression: translateExpression(expr.expression),\n type: 'aggregate',\n aggregation: expr.aggregator,\n distinct: expr.distinct\n };\n if (expr.separator)\n result.separator = expr.separator;\n return result;\n}\nfunction translateExistenceExpression(expr) {\n return {\n type: 'operation',\n operator: expr.not ? 'notexists' : 'exists',\n args: util_1.default.flatten([\n translateOperation(expr.input)\n ])\n };\n}\nfunction translateNamedExpression(expr) {\n return {\n type: 'functionCall',\n // Wrong typings\n function: expr.name,\n args: expr.args.map(translateExpression)\n };\n}\nfunction translateOperatorExpression(expr) {\n if (expr.operator === 'desc') {\n const result = { expression: translateExpression(expr.args[0]) };\n result.descending = true;\n return result;\n }\n const result = {\n type: 'operation',\n operator: expr.operator,\n args: expr.args.map(translateExpression)\n };\n if (result.operator === 'in' || result.operator === 'notin')\n result.args = [result.args[0]].concat([result.args.slice(1)]);\n return result;\n}\nfunction translateTermExpression(expr) {\n return expr.term;\n}\nfunction translateWildcardExpression(expr) {\n return expr.wildcard;\n}\nfunction arrayToPattern(input) {\n if (!Array.isArray(input))\n return input;\n if (input.length === 1)\n return input[0];\n return {\n type: 'group',\n patterns: input,\n };\n}\n// ------------------------- OPERATIONS -------------------------\n// these get translated in the project function\nfunction translateBoundAggregate(op) {\n return op;\n}\nfunction translateBgp(op) {\n let patterns = op.patterns.map(translatePattern);\n if (patterns.length === 0)\n return null;\n return {\n type: 'bgp',\n triples: patterns\n };\n}\nfunction translateConstruct(op) {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: op.template.map(translatePattern),\n where: util_1.default.flatten([\n translateOperation(op.input)\n ])\n };\n}\nfunction translateDistinct(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].distinct = true;\n return result;\n}\nfunction translateExtend(op) {\n if (context.project) {\n context.extend.push(op);\n return translateOperation(op.input);\n }\n return util_1.default.flatten([\n translateOperation(op.input),\n {\n type: 'bind',\n variable: op.variable,\n expression: translateExpression(op.expression)\n }\n ]);\n}\nfunction translateFrom(op) {\n const result = translateOperation(op.input);\n // Can't type as CONSTRUCT queries do not have `from` field in their type\n let obj = result;\n // project is nested in group object\n if (result.type === 'group') {\n obj = result.patterns[0];\n }\n obj.from = {\n default: op.default,\n named: op.named\n };\n return result;\n}\nfunction translateFilter(op) {\n return {\n type: 'group',\n patterns: util_1.default.flatten([\n translateOperation(op.input),\n { type: 'filter', expression: translateExpression(op.expression) }\n ])\n };\n}\nfunction translateGraph(op) {\n return {\n type: 'graph',\n patterns: util_1.default.flatten([translateOperation(op.input)]),\n name: op.name\n };\n}\nfunction translateGroup(op) {\n const input = translateOperation(op.input);\n const aggs = op.aggregates.map(translateBoundAggregate);\n context.aggregates.push(...aggs);\n // TODO: apply possible extends\n context.group.push(...op.variables);\n return input;\n}\nfunction translateJoin(op) {\n const arr = util_1.default.flatten(op.input.map(translateOperation));\n // Merge bgps\n // This is possible if one side was a path and the other a bgp for example\n return arr.reduce((result, val) => {\n if (val.type !== 'bgp' || result.length == 0 || result[result.length - 1].type !== 'bgp') {\n result.push(val);\n }\n else {\n result[result.length - 1].triples.push(...val.triples);\n }\n return result;\n }, []);\n}\nfunction translateLeftJoin(op) {\n const leftjoin = {\n type: 'optional',\n patterns: [\n translateOperation(op.input[1])\n ]\n };\n if (op.expression) {\n leftjoin.patterns.push({\n type: 'filter',\n expression: translateExpression(op.expression)\n });\n }\n leftjoin.patterns = util_1.default.flatten(leftjoin.patterns);\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n leftjoin\n ]);\n}\nfunction translateMinus(op) {\n let patterns = translateOperation(op.input[1]);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n {\n type: 'minus',\n patterns: patterns\n }\n ]);\n}\nfunction translateOrderBy(op) {\n context.order.push(...op.expressions);\n return translateOperation(op.input);\n}\nfunction translatePath(op) {\n return {\n type: 'bgp',\n triples: [{\n subject: op.subject,\n predicate: translatePathComponent(op.predicate),\n object: op.object\n }]\n };\n}\nfunction translatePattern(op) {\n return {\n subject: op.subject,\n predicate: op.predicate,\n object: op.object\n };\n}\nfunction replaceAggregatorVariables(s, map) {\n let st = util_1.default.isSimpleTerm(s) ? translateTerm(s) : s;\n if (typeof st === 'string') {\n if (map[st])\n return map[st];\n }\n else if (Array.isArray(s)) {\n s = s.map(e => replaceAggregatorVariables(e, map));\n }\n else {\n for (let key of Object.keys(s))\n s[key] = replaceAggregatorVariables(s[key], map);\n }\n return s;\n}\nfunction translateProject(op, type) {\n const result = {\n type: 'query',\n prefixes: {}\n };\n // Makes typing easier in some places\n const select = result;\n let variables;\n if (type === types.PROJECT) {\n result.queryType = 'SELECT';\n variables = op.variables;\n }\n else if (type === types.ASK) {\n result.queryType = 'ASK';\n }\n else if (type === types.DESCRIBE) {\n result.queryType = 'DESCRIBE';\n variables = op.terms;\n }\n // backup values in case of nested queries\n // everything in extend, group, etc. is irrelevant for this project call\n const extend = context.extend;\n const group = context.group;\n const aggregates = context.aggregates;\n const order = context.order;\n resetContext();\n context.project = true;\n let input = util_1.default.flatten([translateOperation(op.input)]);\n if (input.length === 1 && input[0].type === 'group')\n input = input[0].patterns;\n result.where = input;\n let aggregators = {};\n // these can not reference each other\n for (let agg of context.aggregates)\n aggregators[translateTerm(agg.variable)] = translateExpression(agg);\n // do these in reverse order since variables in one extend might apply to an expression in an other extend\n let extensions = {};\n for (let i = context.extend.length - 1; i >= 0; --i) {\n let e = context.extend[i];\n extensions[translateTerm(e.variable)] = replaceAggregatorVariables(translateExpression(e.expression), aggregators);\n }\n if (context.group.length > 0)\n select.group = context.group.map(variable => {\n let v = translateTerm(variable);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // make sure there is only 1 'AS' statement\n return {\n variable,\n expression: result\n };\n }\n return { expression: variable };\n });\n // descending expressions will already be in the correct format due to the structure of those\n if (context.order.length > 0)\n select.order = context.order.map(translateOperation).map(o => o.descending ? o : ({ expression: o }));\n // this needs to happen after the group because it might depend on variables generated there\n if (variables) {\n select.variables = variables.map((term) => {\n let v = translateTerm(term);\n if (extensions[v])\n return {\n variable: term,\n expression: extensions[v]\n };\n return term;\n });\n // if the * didn't match any variables this would be empty\n if (select.variables.length === 0)\n select.variables = [new sparqljs_1.Wildcard()];\n }\n // convert filter to 'having' if it contains an aggregator variable\n // could always convert, but is nicer to use filter when possible\n if (result.where.length > 0 && result.where[result.where.length - 1].type === 'filter') {\n const filter = result.where[result.where.length - 1];\n if (objectContainsValues(filter, Object.keys(aggregators))) {\n select.having = util_1.default.flatten([replaceAggregatorVariables(filter.expression, aggregators)]);\n result.where.splice(-1);\n }\n }\n context.extend = extend;\n context.group = group;\n context.aggregates = aggregates;\n context.order = order;\n // subqueries need to be in a group, this will be removed again later for the root query\n return { type: 'group', patterns: [select] };\n}\nfunction objectContainsValues(o, vals) {\n if (util_1.default.isSimpleTerm(o))\n return vals.indexOf(translateTerm(o)) >= 0;\n if (Array.isArray(o))\n return o.some(e => objectContainsValues(e, vals));\n if (o === Object(o))\n return Object.keys(o).some(key => objectContainsValues(o[key], vals));\n return vals.indexOf(o) >= 0;\n}\nfunction translateReduced(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].reduced = true;\n return result;\n}\nfunction translateService(op) {\n let patterns = translateOperation(op.input);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return {\n type: 'service',\n // Typings are wrong, name can also be a variable\n name: op.name,\n silent: op.silent,\n patterns\n };\n}\nfunction translateSlice(op) {\n let result = translateOperation(op.input);\n // results can be nested in a group object\n let obj = result;\n if (result.type && result.type === 'group')\n obj = result.patterns[0];\n if (op.start !== 0)\n obj.offset = op.start;\n if (op.length !== undefined)\n obj.limit = op.length;\n return result;\n}\nfunction translateUnion(op) {\n return {\n type: 'union',\n patterns: op.input.map(translateOperation).map(arrayToPattern),\n };\n}\nfunction translateValues(op) {\n // TODO: check if handled correctly when outside of select block\n return {\n type: 'values',\n values: op.bindings.map(binding => {\n let result = {};\n for (let v of op.variables) {\n let s = `?${v.value}`;\n if (binding[s])\n result[s] = binding[s];\n else\n result[s] = undefined;\n }\n return result;\n })\n };\n}\n// PATH COMPONENTS\nfunction translateAlt(path) {\n const mapped = path.input.map(translatePathComponent);\n if (mapped.every(entry => 'pathType' in entry && entry.pathType === '!')) {\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: util_1.default.flatten(mapped.map(entry => entry.items))\n }]\n };\n }\n return {\n type: 'path',\n pathType: '|',\n items: mapped\n };\n}\nfunction translateInv(path) {\n if (path.path.type === types.NPS) {\n const inv = path.path.iris.map((iri) => {\n return {\n type: 'path',\n pathType: '^',\n items: [iri]\n };\n });\n if (inv.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: inv\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: inv\n }]\n };\n }\n return {\n type: 'path',\n pathType: '^',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateLink(path) {\n return path.iri;\n}\nfunction translateNps(path) {\n if (path.iris.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: path.iris\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: path.iris\n }]\n };\n}\nfunction translateOneOrMorePath(path) {\n return {\n type: 'path',\n pathType: '+',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateSeq(path) {\n return {\n type: 'path',\n pathType: '/',\n items: path.input.map(translatePathComponent)\n };\n}\nfunction translateZeroOrMorePath(path) {\n return {\n type: 'path',\n pathType: '*',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateZeroOrOnePath(path) {\n // Typings are missing '?' operator\n return {\n type: 'path',\n // Typings are missing this path\n pathType: '?',\n items: [translatePathComponent(path.path)]\n };\n}\n// UPDATE OPERATIONS\nfunction translateCompositeUpdate(op) {\n const updates = op.updates.map(update => {\n const result = translateOperation(update);\n return result.updates[0];\n });\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateDeleteInsert(op) {\n var _a;\n let where = op.where;\n let use = undefined;\n if (where && where.type === types.FROM) {\n let from = where;\n where = from.input;\n use = { default: from.default, named: from.named };\n }\n const updates = [{\n updateType: 'insertdelete',\n delete: convertUpdatePatterns(op.delete || []),\n insert: convertUpdatePatterns(op.insert || []),\n }];\n // Typings don't support 'using' yet\n if (use)\n updates[0].using = use;\n // corresponds to empty array in SPARQL.js\n if (!where || (where.type === types.BGP && where.patterns.length === 0))\n updates[0].where = [];\n else {\n const graphs = [];\n let result = translateOperation(removeQuadsRecursive(where, graphs));\n if (result.type === 'group')\n updates[0].where = result.patterns;\n else\n updates[0].where = [result];\n // graph might not be applied yet since there was no project\n // this can only happen if there was a single graph\n if (graphs.length > 0) {\n if (graphs.length !== 1)\n throw new Error('This is unexpected and might indicate an error in graph handling for updates.');\n // ignore if default graph\n if (((_a = graphs[0]) === null || _a === void 0 ? void 0 : _a.value) !== '')\n updates[0].where = [{ type: 'graph', patterns: updates[0].where, name: graphs[0] }];\n }\n }\n // not really necessary but can give cleaner looking queries\n if (!op.delete && !op.where) {\n updates[0].updateType = 'insert';\n delete updates[0].delete;\n delete updates[0].where;\n }\n else if (!op.insert && !op.where) {\n delete updates[0].insert;\n delete updates[0].where;\n if (op.delete.some(pattern => pattern.subject.termType === 'Variable' ||\n pattern.predicate.termType === 'Variable' ||\n pattern.object.termType === 'Variable'))\n updates[0].updateType = 'deletewhere';\n else\n updates[0].updateType = 'delete';\n }\n else if (!op.insert && op.where && op.where.type === 'bgp') {\n if ((0, rdf_isomorphic_1.isomorphic)(op.delete, op.where.patterns)) {\n delete updates[0].where;\n updates[0].updateType = 'deletewhere';\n }\n }\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateLoad(op) {\n // Typings are wrong, destiniation is optional\n const updates = [{ type: 'load', silent: Boolean(op.silent), source: op.source }];\n if (op.destination)\n updates[0].destination = op.destination;\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateClear(op) {\n return translateClearCreateDrop(op, 'clear');\n}\nfunction translateCreate(op) {\n return translateClearCreateDrop(op, 'create');\n}\nfunction translateDrop(op) {\n return translateClearCreateDrop(op, 'drop');\n}\nfunction translateClearCreateDrop(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n // Typings are wrong, type is not required, see for example \"clear-drop\" test\n if (op.source === 'DEFAULT')\n updates[0].graph = { default: true };\n else if (op.source === 'NAMED')\n updates[0].graph = { named: true };\n else if (op.source === 'ALL')\n updates[0].graph = { all: true };\n else\n updates[0].graph = { type: 'graph', name: op.source };\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateAdd(op) {\n return translateUpdateGraphShortcut(op, 'add');\n}\nfunction translateMove(op) {\n return translateUpdateGraphShortcut(op, 'move');\n}\nfunction translateCopy(op) {\n return translateUpdateGraphShortcut(op, 'copy');\n}\nfunction translateUpdateGraphShortcut(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n updates[0].source = op.source === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.source };\n updates[0].destination = op.destination === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.destination };\n return { prefixes: {}, type: 'update', updates };\n}\n// similar to removeQuads but more simplified for UPDATEs\nfunction convertUpdatePatterns(patterns) {\n if (!patterns)\n return [];\n const graphs = {};\n patterns.forEach(pattern => {\n const graph = pattern.graph.value;\n if (!graphs[graph])\n graphs[graph] = [];\n graphs[graph].push(pattern);\n });\n return Object.keys(graphs).map(graph => {\n if (graph === '')\n return { type: 'bgp', triples: graphs[graph].map(translatePattern) };\n return { type: 'graph', triples: graphs[graph].map(translatePattern), name: graphs[graph][0].graph };\n });\n}\nfunction removeQuads(op) {\n return removeQuadsRecursive(op, []);\n}\n// remove quads\nfunction removeQuadsRecursive(op, graphs) {\n if (Array.isArray(op))\n return op.map(sub => removeQuadsRecursive(sub, graphs));\n if (!op.type)\n return op;\n // UPDATE operations with Patterns handle graphs a bit differently\n if (op.type === types.DELETE_INSERT)\n return op;\n if ((op.type === types.PATTERN || op.type === types.PATH) && op.graph) {\n graphs.push(op.graph);\n // Remove non-default graphs\n if (op.graph.name !== '')\n return op.type === types.PATTERN ?\n factory.createPattern(op.subject, op.predicate, op.object) :\n factory.createPath(op.subject, op.predicate, op.object);\n return op;\n }\n const result = {};\n const keyGraphs = {}; // unique graph per key\n const globalNames = {}; // track all the unique graph names for the entire Operation\n for (let key of Object.keys(op)) {\n const newGraphs = [];\n result[key] = removeQuadsRecursive(op[key], newGraphs);\n if (newGraphs.length > 0) {\n keyGraphs[key] = newGraphs;\n for (const graph of newGraphs) {\n globalNames[graph.value] = graph;\n }\n }\n }\n const graphNameSet = Object.keys(globalNames);\n if (graphNameSet.length > 0) {\n // We also need to create graph statement if we are at the edge of certain operations\n if (graphNameSet.length === 1 && ![types.PROJECT, types.SERVICE].includes(op.type))\n graphs.push(globalNames[graphNameSet[0]]);\n else if (op.type === types.BGP) {\n // This is the specific case that got changed because of using quads.\n return splitBgpToGraphs(op, keyGraphs.patterns);\n }\n else {\n // multiple graphs (or project), need to create graph objects for them\n for (let key of Object.keys(keyGraphs)) {\n const value = result[key];\n if (Array.isArray(value))\n result[key] = value.map((child, idx) => keyGraphs[key][0].value === '' ? child : factory.createGraph(child, keyGraphs[key][idx]));\n else if (keyGraphs[key][0].value !== '')\n result[key] = factory.createGraph(value, keyGraphs[key][0]);\n }\n }\n }\n return result;\n}\n// `graphs` should be an array of length identical to `op.patterns`, containing the corresponding graph for each triple.\nfunction splitBgpToGraphs(op, graphs) {\n var _a;\n // Split patterns per graph\n const graphPatterns = {};\n for (let i = 0; i < op.patterns.length; ++i) {\n const pattern = op.patterns[i];\n const graphName = graphs[i].value;\n graphPatterns[graphName] = (_a = graphPatterns[graphName]) !== null && _a !== void 0 ? _a : { patterns: [], graph: graphs[i] };\n graphPatterns[graphName].patterns.push(pattern);\n }\n // Create graph objects for every cluster\n let children = [];\n for (const [graphName, { patterns, graph }] of Object.entries(graphPatterns)) {\n const bgp = factory.createBgp(patterns);\n children.push(graphName === '' ? bgp : factory.createGraph(bgp, graph));\n }\n // Join the graph objects\n let join = children[0];\n for (let i = 1; i < children.length; ++i)\n join = factory.createJoin([join, children[i]]);\n return join;\n}\n//# sourceMappingURL=sparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst equal = require(\"fast-deep-equal/es6\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst Parser = require('sparqljs').Parser;\nconst types = Algebra.types;\nlet variables = new Set();\nlet varCount = 0;\nlet useQuads = false;\nlet factory;\n/**\n * Translates the given SPARQL query to SPARQL Algebra.\n * @param sparql - Either a SPARQL string or an object generated by sparql.js\n * @param options - Optional options object. Current options:\n * * dataFactory: The Datafactory used to generate terms. Default @rdfjs/data-model.\n * * quads: Boolean indicating whether triples should be converted to Quads (consumes GRAPH statements). Default false.\n * * prefixes: Pre-defined prefixes for the given query. Default empty.\n * * baseIRI: Base IRI that should be used for the query. Default undefined (throws error if required).\n * @returns {Operation}\n */\nfunction translate(sparql, options) {\n options = options || {};\n factory = new factory_1.default(options.dataFactory);\n let query;\n if (isString(sparql)) {\n let parser = new Parser(options);\n // resets the identifier counter used for blank nodes\n // provides nicer and more consistent output if there are multiple calls\n parser._resetBlanks();\n query = parser.parse(sparql);\n }\n else {\n query = sparql;\n }\n return translateQuery(query, options.quads, options.blankToVariable);\n}\nexports.default = translate;\nfunction translateQuery(sparql, quads, blankToVariable) {\n // this set is filled in during the inScopeVariables call\n variables = new Set();\n varCount = 0;\n useQuads = Boolean(quads);\n // Assume this is an empty query\n if (!sparql.type)\n return factory.createNop();\n if (sparql.type !== 'query' && sparql.type !== 'update')\n throw new Error('Translate only works on complete query or update objects.');\n let res;\n // find ALL variables here to fill `variables` array\n findAllVariables(sparql);\n if (sparql.type === 'query') {\n // group and where are identical, having only 1 makes parsing easier, can be undefined in DESCRIBE\n const group = { type: 'group', patterns: sparql.where || [] };\n res = translateGraphPattern(group);\n res = translateAggregates(sparql, res);\n }\n else if (sparql.type === 'update') {\n res = translateUpdate(sparql);\n }\n if (blankToVariable) {\n res = translateBlankNodesToVariables(res);\n }\n return res;\n}\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isTerm(term) {\n return Boolean(term === null || term === void 0 ? void 0 : term.termType);\n}\n// This is not completely correct but this way we also catch SPARQL.js triples\nfunction isTriple(triple) {\n return triple.subject && triple.predicate && triple.object;\n}\nfunction isVariable(term) {\n return (term === null || term === void 0 ? void 0 : term.termType) === 'Variable';\n}\n// Will be used to make sure new variables don't overlap\nfunction findAllVariables(thingy) {\n if (isTerm(thingy)) {\n if (isVariable(thingy)) {\n // Variables don't store the `?`\n variables.add(`?${thingy.value}`);\n }\n }\n else if (Array.isArray(thingy)) {\n for (const entry of thingy)\n findAllVariables(entry);\n }\n else if (thingy && typeof thingy === 'object') {\n for (let key of Object.keys(thingy)) {\n // Some variables are hidden in keys (specifically for VALUES)\n if (key.startsWith('?'))\n variables.add(key);\n findAllVariables(thingy[key]);\n }\n }\n}\n// 18.2.1\nfunction inScopeVariables(thingy) {\n let inScope = {};\n if (isTriple(thingy)) {\n // Note that this could both be an actual Quad or a SPARQL.js triple (without graph)\n const result = [\n inScopeVariables(thingy.subject),\n inScopeVariables(thingy.predicate),\n inScopeVariables(thingy.object),\n thingy.graph ? inScopeVariables(thingy.graph) : {}\n ];\n Object.assign(inScope, ...result);\n }\n else if (isTerm(thingy)) {\n if (isVariable(thingy))\n inScope[thingy.value] = thingy;\n }\n else if (thingy.type === 'bgp') {\n // Slightly cheating but this is a subset of what we support so is fine\n const quads = thingy.triples;\n Object.assign(inScope, ...quads.map(inScopeVariables));\n }\n else if (thingy.type === 'path') {\n // A path predicate should not have variables but just iterating so we could theoretically support this\n Object.assign(inScope, ...thingy.items.map(inScopeVariables));\n }\n else if (thingy.type === 'group' || thingy.type === 'union' || thingy.type === 'optional') {\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'service' || thingy.type === 'graph') {\n Object.assign(inScope, inScopeVariables(thingy.name));\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'bind') {\n Object.assign(inScope, inScopeVariables(thingy.variable));\n }\n else if (thingy.type === 'values') {\n if (thingy.values.length > 0) {\n const vars = Object.keys(thingy.values[0]).map(v => factory.createTerm(v));\n Object.assign(inScope, ...vars.map(inScopeVariables));\n }\n }\n else if (thingy.type === 'query') {\n if (thingy.queryType === 'SELECT' || thingy.queryType === 'DESCRIBE') {\n if (thingy.where && thingy.variables.some(util_1.default.isWildcard))\n Object.assign(inScope, ...thingy.where.map(inScopeVariables));\n for (const v of thingy.variables) {\n if (isVariable(v))\n Object.assign(inScope, inScopeVariables(v));\n else if (v.variable)\n Object.assign(inScope, inScopeVariables(v.variable));\n }\n if (thingy.queryType === 'SELECT') {\n if (thingy.group) {\n // Grouping can be a VariableExpression, typings are wrong\n for (const g of thingy.group) {\n if (g.variable)\n Object.assign(inScope, inScopeVariables(g.variable));\n }\n }\n if (thingy.values) {\n const values = { type: 'values', values: thingy.values };\n Object.assign(inScope, inScopeVariables(values));\n }\n }\n }\n }\n return inScope;\n}\nfunction translateGraphPattern(thingy) {\n // 18.2.2.1\n // already done by sparql parser\n // 18.2.2.3\n // 18.2.2.4\n // 18.2.2.5\n // In Sparql.js, a group with a single BGP in it is a single object.\n if (thingy.type === 'bgp') {\n return translateBgp(thingy);\n }\n // 18.2.2.6 - GroupOrUnionGraphPattern\n if (thingy.type === 'union')\n return factory.createUnion(thingy.patterns.map((p) => {\n // sparqljs doesn't always indicate the children are groups\n if (p.type !== 'group')\n p = { type: 'group', patterns: [p] };\n return translateGraphPattern(p);\n }));\n // 18.2.2.6 - GraphGraphPattern\n if (thingy.type === 'graph') {\n // Sparql.js combines the group graph pattern and the graph itself in the same object.\n // We split here so the group graph pattern can be interpreted correctly.\n const group = { type: 'group', patterns: thingy.patterns };\n let result = translateGraphPattern(group);\n // Output depends on if we use quads or not\n if (useQuads)\n result = recurseGraph(result, thingy.name);\n else\n result = factory.createGraph(result, thingy.name);\n return result;\n }\n // 18.2.2.6 - InlineData\n if (thingy.type === 'values')\n return translateInlineData(thingy);\n // 18.2.2.6 - SubSelect\n if (thingy.type === 'query')\n return translateQuery(thingy, useQuads, false);\n if (thingy.type === 'group') {\n // 18.2.2.2\n let filters = [];\n let nonfilters = [];\n for (let pattern of thingy.patterns)\n (pattern.type === 'filter' ? filters : nonfilters).push(pattern);\n // 18.2.2.6 - GroupGraphPattern\n let result = nonfilters.reduce(accumulateGroupGraphPattern, factory.createBgp([]));\n // 18.2.2.7\n let expressions = filters.map(filter => translateExpression(filter.expression));\n if (expressions.length > 0)\n result = factory.createFilter(result, expressions.reduce((acc, exp) => factory.createOperatorExpression('&&', [acc, exp])));\n return result;\n }\n throw new Error(`Unexpected type: ${thingy.type}`);\n}\nfunction translateExpression(exp) {\n if (util_1.default.isSimpleTerm(exp))\n return factory.createTermExpression(exp);\n if (util_1.default.isQuad(exp)) {\n if (util_1.default.hasQuadVariables(exp))\n return factory.createOperatorExpression('triple', [\n translateExpression(exp.subject),\n translateExpression(exp.predicate),\n translateExpression(exp.object),\n ]);\n else\n return factory.createTermExpression(exp);\n }\n if (util_1.default.isWildcard(exp))\n return factory.createWildcardExpression();\n if ('aggregation' in exp)\n return factory.createAggregateExpression(exp.aggregation, translateExpression(exp.expression), Boolean(exp.distinct), exp.separator);\n if ('function' in exp)\n // Outdated typings\n return factory.createNamedExpression(exp.function, exp.args.map(translateExpression));\n if ('operator' in exp) {\n if (exp.operator === 'exists' || exp.operator === 'notexists')\n return factory.createExistenceExpression(exp.operator === 'notexists', translateGraphPattern(exp.args[0]));\n if (exp.operator === 'in' || exp.operator === 'notin')\n exp.args = [exp.args[0]].concat(exp.args[1]); // sparql.js uses 2 arguments with the second one being a list\n return factory.createOperatorExpression(exp.operator, exp.args.map(translateExpression));\n }\n throw new Error(`Unknown expression: ${JSON.stringify(exp)}`);\n}\nfunction translateBgp(thingy) {\n let patterns = [];\n let joins = [];\n for (let t of thingy.triples) {\n if ('pathType' in t.predicate) {\n // translatePath returns a mix of Quads and Paths\n let path = translatePath(t);\n for (let p of path) {\n if (p.type === types.PATH) {\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n patterns = [];\n joins.push(p);\n }\n else\n patterns.push(p);\n }\n }\n else\n patterns.push(translateQuad(t));\n }\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n if (joins.length === 1)\n return joins[0];\n return factory.createJoin(joins);\n}\nfunction translatePath(triple) {\n let sub = triple.subject;\n let pred = translatePathPredicate(triple.predicate);\n let obj = triple.object;\n return simplifyPath(sub, pred, obj);\n}\nfunction translatePathPredicate(predicate) {\n if (util_1.default.isSimpleTerm(predicate)) {\n if (predicate.termType === 'NamedNode')\n return factory.createLink(predicate);\n else\n throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(predicate)}`);\n }\n if (predicate.pathType === '^')\n return factory.createInv(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '!') {\n // negation is either over a single predicate or a list of disjuncted properties\n let normals = [];\n let inverted = [];\n let items;\n if ('pathType' in predicate.items[0] && predicate.items[0].pathType === '|')\n items = predicate.items[0].items; // the | element\n else\n items = predicate.items;\n for (let item of items) {\n if (util_1.default.isSimpleTerm(item))\n normals.push(item);\n else if (item.pathType === '^')\n inverted.push(item.items[0]);\n else\n throw new Error(`Unexpected item: ${JSON.stringify(item)}`);\n }\n // NPS elements do not have the LINK function\n let normalElement = factory.createNps(normals);\n let invertedElement = factory.createInv(factory.createNps(inverted));\n if (inverted.length === 0)\n return normalElement;\n if (normals.length === 0)\n return invertedElement;\n return factory.createAlt([normalElement, invertedElement,]);\n }\n if (predicate.pathType === '/')\n return factory.createSeq(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '|')\n return factory.createAlt(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '*')\n return factory.createZeroOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '+')\n return factory.createOneOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '?')\n return factory.createZeroOrOnePath(translatePathPredicate(predicate.items[0]));\n throw new Error(`Unable to translate path expression ${JSON.stringify(predicate)}`);\n}\nfunction simplifyPath(subject, predicate, object) {\n if (predicate.type === types.LINK)\n return [factory.createPattern(subject, predicate.iri, object)];\n if (predicate.type === types.INV)\n return simplifyPath(object, predicate.path, subject);\n if (predicate.type === types.SEQ) {\n let joiner = subject;\n return util_1.default.flatten(predicate.input.map((subOp, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? object : generateFreshVar();\n const simplifiedPath = simplifyPath(joiner, subOp, nextJoiner);\n if (nextJoiner.termType === 'Variable') {\n joiner = nextJoiner;\n }\n return simplifiedPath;\n }));\n }\n return [factory.createPath(subject, predicate, object)];\n}\nfunction generateFreshVar() {\n let v = `?var${varCount++}`;\n if (variables.has(v))\n return generateFreshVar();\n variables.add(v);\n return factory.createTerm(v);\n}\nfunction translateQuad(quad) {\n if ('pathType' in quad.predicate) {\n throw new Error('Trying to translate property path to quad.');\n }\n // Graphs are needed here\n // TODO: investigate if typings are wrong or if we internally add graphs to these\n return factory.createPattern(quad.subject, quad.predicate, quad.object, quad.graph);\n}\nlet typeVals = Object.values(types);\nfunction recurseGraph(thingy, graph, replacement) {\n if (thingy.type === types.GRAPH) {\n if (replacement) {\n // At this point we would lose track of the replacement which would result in incorrect results\n // This would indicate the library is not being used as intended though\n throw new Error('Recursing through nested GRAPH statements with a replacement is impossible.');\n }\n // In case there were nested GRAPH statements that were not recursed yet for some reason\n thingy = recurseGraph(thingy.input, thingy.name);\n }\n else if (thingy.type === types.SERVICE) {\n // Service blocks are not affected by enclosing GRAPH statements, so nothing is modified in this block.\n // See https://github.com/joachimvh/SPARQLAlgebra.js/pull/104#issuecomment-1838016303\n }\n else if (thingy.type === types.BGP)\n thingy.patterns = thingy.patterns.map(quad => {\n if (replacement) {\n if (quad.subject.equals(graph))\n quad.subject = replacement;\n if (quad.predicate.equals(graph))\n quad.predicate = replacement;\n if (quad.object.equals(graph))\n quad.object = replacement;\n }\n if (quad.graph.termType === 'DefaultGraph')\n quad.graph = graph;\n return quad;\n });\n else if (thingy.type === types.PATH) {\n if (replacement) {\n if (thingy.subject.equals(graph))\n thingy.subject = replacement;\n if (thingy.object.equals(graph))\n thingy.object = replacement;\n }\n if (thingy.graph.termType === 'DefaultGraph')\n thingy.graph = graph;\n }\n // need to replace variables in subqueries should the graph also be a variable of the same name\n // unless the subquery projects that variable\n else if (thingy.type === types.PROJECT && !replacement) {\n if (!thingy.variables.some(v => v.equals(graph)))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n // this can happen if the query extends an expression to the name of the graph\n // since the extend happens here there should be no further occurrences of this name\n // if there are it's the same situation as above\n else if (thingy.type === types.EXTEND && !replacement) {\n if (thingy.variable.equals(graph))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n else {\n for (let key of Object.keys(thingy)) {\n if (Array.isArray(thingy[key]))\n thingy[key] = thingy[key].map((x) => recurseGraph(x, graph, replacement));\n else if (typeVals.indexOf(thingy[key].type) >= 0) // can't do instanceof on an interface\n thingy[key] = recurseGraph(thingy[key], graph, replacement);\n else if (replacement && isVariable(thingy[key]) && thingy[key].equals(graph))\n thingy[key] = replacement;\n }\n }\n return thingy;\n}\nfunction accumulateGroupGraphPattern(G, E) {\n if (E.type === 'optional') {\n // optional input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n if (A.type === types.FILTER) {\n G = factory.createLeftJoin(G, A.input, A.expression);\n }\n else\n G = factory.createLeftJoin(G, A);\n }\n else if (E.type === 'minus') {\n // minus input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n G = factory.createMinus(G, A);\n }\n else if (E.type === 'bind')\n G = factory.createExtend(G, E.variable, translateExpression(E.expression));\n else if (E.type === 'service') {\n // transform to group so childnodes get parsed correctly\n const group = { type: 'group', patterns: E.patterns };\n const A = factory.createService(translateGraphPattern(group), E.name, E.silent);\n G = simplifiedJoin(G, A);\n }\n else {\n const A = translateGraphPattern(E);\n G = simplifiedJoin(G, A);\n }\n return G;\n}\nfunction simplifiedJoin(G, A) {\n // Note: this is more simplification than requested in 18.2.2.8, but no reason not to do it.\n if (G.type === types.BGP && A.type === types.BGP)\n G = factory.createBgp([...G.patterns, ...A.patterns]);\n // 18.2.2.8 (simplification)\n else if (G.type === types.BGP && G.patterns.length === 0)\n G = A;\n else if (A.type === types.BGP && A.patterns.length === 0) { } // do nothing\n else\n G = factory.createJoin([G, A]);\n return G;\n}\nfunction translateInlineData(values) {\n let variables = (values.values.length === 0 ? [] : Object.keys(values.values[0])).map(factory.createTerm.bind(factory));\n let bindings = values.values.map((binding) => {\n let keys = Object.keys(binding);\n keys = keys.filter(k => binding[k] !== undefined);\n let map = {};\n for (let key of keys)\n map[key] = binding[key];\n return map;\n });\n return factory.createValues(variables, bindings);\n}\n// --------------------------------------- AGGREGATES\nfunction translateAggregates(query, res) {\n // Typings for ConstructQuery are wrong and missing several fields so we will cast quite often to SelectQuery to have partial typings\n const select = query;\n // 18.2.4.1\n const E = [];\n const A = {};\n select.variables = select.variables && select.variables.map(val => mapAggregate(val, A));\n select.having = select.having && select.having.map(val => mapAggregate(val, A));\n select.order = select.order && select.order.map(val => mapAggregate(val, A));\n // if there are any aggregates or if we have a groupBy (both result in a GROUP)\n if (select.group || Object.keys(A).length > 0) {\n const aggregates = Object.keys(A).map(v => translateBoundAggregate(A[v], factory.createTerm(v)));\n const vars = [];\n if (select.group) {\n for (const e of select.group) {\n if (util_1.default.isSimpleTerm(e.expression)) {\n vars.push(e.expression); // this will always be a var, otherwise sparql would be invalid\n }\n else {\n // Incorrect typings, e can have a variable, see for example group-variable test in sparql.js\n const v = 'variable' in e ? e.variable : generateFreshVar();\n res = factory.createExtend(res, v, translateExpression(e.expression));\n vars.push(v);\n }\n }\n }\n res = factory.createGroup(res, vars, aggregates);\n }\n // 18.2.4.2\n if (select.having)\n for (let filter of select.having)\n res = factory.createFilter(res, translateExpression(filter));\n // 18.2.4.3\n if (query.values)\n res = factory.createJoin([res, translateInlineData(query)]);\n // 18.2.4.4\n let PV = [];\n if (query.queryType === 'SELECT' || query.queryType === 'DESCRIBE') {\n // Sort variables for consistent output\n if (query.variables.some((e) => e && util_1.default.isWildcard(e)))\n PV = Object.values(inScopeVariables(query))\n .sort((left, right) => left.value.localeCompare(right.value));\n else {\n // Wildcard has been filtered out above\n for (let v of query.variables) {\n // can have non-variables with DESCRIBE\n if (isVariable(v) || !('variable' in v))\n PV.push(v);\n else if (v.variable) // ... AS ?x\n {\n PV.push(v.variable);\n E.push(v);\n }\n }\n }\n }\n // TODO: Jena simplifies by having a list of extends\n for (let v of E)\n res = factory.createExtend(res, v.variable, translateExpression(v.expression));\n // 18.2.5\n // not using toList and toMultiset\n // 18.2.5.1\n if (select.order)\n res = factory.createOrderBy(res, select.order.map((exp) => {\n let result = translateExpression(exp.expression);\n if (exp.descending)\n result = factory.createOperatorExpression('desc', [result]);\n return result;\n }));\n // 18.2.5.2\n // construct does not need a project (select, ask and describe do)\n if (query.queryType === 'SELECT')\n // Named nodes are only possible in a DESCRIBE so this cast is safe\n res = factory.createProject(res, PV);\n // 18.2.5.3\n if (select.distinct)\n res = factory.createDistinct(res);\n // 18.2.5.4\n if (select.reduced)\n res = factory.createReduced(res);\n // NEW: support for ask/construct/describe queries\n if (query.queryType === 'CONSTRUCT')\n res = factory.createConstruct(res, (query.template || []).map(translateQuad));\n else if (query.queryType === 'ASK')\n res = factory.createAsk(res);\n else if (query.queryType === 'DESCRIBE')\n res = factory.createDescribe(res, PV);\n // Slicing needs to happen after construct/describe\n // 18.2.5.5\n if (select.offset || select.limit)\n res = factory.createSlice(res, select.offset || 0, select.limit);\n if (select.from)\n res = factory.createFrom(res, select.from.default, select.from.named);\n return res;\n}\n// rewrites some of the input sparql object to make use of aggregate variables\nfunction mapAggregate(thingy, aggregates) {\n if ('type' in thingy && thingy.type === 'aggregate') {\n let found = false;\n let v;\n for (let key of Object.keys(aggregates)) {\n if (equal(aggregates[key], thingy)) {\n v = factory.createTerm(key);\n found = true;\n break;\n }\n }\n if (!found) {\n v = generateFreshVar();\n aggregates[(0, rdf_string_1.termToString)(v)] = thingy;\n }\n return v;\n }\n // non-aggregate expression\n if ('expression' in thingy && thingy.expression)\n return { ...thingy, expression: mapAggregate(thingy.expression, aggregates) };\n if ('args' in thingy && thingy.args)\n return { ...thingy, args: thingy.args.map(subthingy => mapAggregate(subthingy, aggregates)) };\n // Normal variable/wildcard\n return thingy;\n}\nfunction translateBoundAggregate(thingy, v) {\n if (thingy.type !== 'aggregate' || !thingy.aggregation)\n throw new Error(`Unexpected input: ${JSON.stringify(thingy)}`);\n const A = translateExpression(thingy);\n A.variable = v;\n return A;\n}\nfunction translateUpdate(thingy) {\n if (thingy.updates.length === 1)\n return translateSingleUpdate(thingy.updates[0]);\n return factory.createCompositeUpdate(thingy.updates.map(translateSingleUpdate));\n}\nfunction translateSingleUpdate(thingy) {\n if ('type' in thingy) {\n if (thingy.type === 'load')\n return translateUpdateGraphLoad(thingy);\n if (thingy.type === 'clear' || thingy.type === 'create' || thingy.type === 'drop')\n return translateUpdateGraph(thingy);\n if (thingy.type === 'add' || thingy.type === 'copy' || thingy.type === 'move')\n return translateUpdateGraphShortcut(thingy);\n }\n else if (thingy.updateType === 'insertdelete' || thingy.updateType === 'deletewhere' || thingy.updateType === 'delete' || thingy.updateType === 'insert')\n return translateInsertDelete(thingy);\n throw new Error(`Unknown update type ${JSON.stringify(thingy)}`);\n}\nfunction translateInsertDelete(thingy) {\n if (!useQuads)\n throw new Error('INSERT/DELETE operations are only supported with quads option enabled');\n let deleteTriples = [];\n let insertTriples = [];\n let where;\n if (thingy.delete)\n deleteTriples = util_1.default.flatten(thingy.delete.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.insert)\n insertTriples = util_1.default.flatten(thingy.insert.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.where && thingy.where.length > 0) {\n where = translateGraphPattern({ type: 'group', patterns: thingy.where });\n // Wrong typings, see test \"using\" in Sparql.js\n const use = thingy.using;\n if (use)\n where = factory.createFrom(where, use.default, use.named);\n else if (thingy.graph)\n // This is equivalent\n where = recurseGraph(where, thingy.graph);\n }\n else if (thingy.updateType === 'deletewhere' && deleteTriples.length > 0) {\n where = factory.createBgp(deleteTriples);\n }\n return factory.createDeleteInsert(deleteTriples.length > 0 ? deleteTriples : undefined, insertTriples.length > 0 ? insertTriples : undefined, where);\n}\n// UPDATE parsing will always return quads and have no GRAPH elements\nfunction translateUpdateTriplesBlock(thingy, graph) {\n let currentGraph = graph;\n if (thingy.type === 'graph')\n currentGraph = thingy.name;\n let currentTriples = thingy.triples;\n if (currentGraph)\n currentTriples = currentTriples.map(triple => Object.assign(triple, { graph: currentGraph }));\n return currentTriples.map(translateQuad);\n}\nfunction translateUpdateGraph(thingy) {\n let source;\n if (util_1.default.isSimpleTerm(thingy.graph))\n source = thingy.graph;\n else if (thingy.graph.all)\n source = 'ALL';\n else if (thingy.graph.default)\n source = 'DEFAULT';\n else if (thingy.graph.named)\n source = 'NAMED';\n else\n source = thingy.graph.name;\n switch (thingy.type) {\n case 'clear': return factory.createClear(source, thingy.silent);\n case 'create': return factory.createCreate(source, thingy.silent);\n case 'drop': return factory.createDrop(source, thingy.silent);\n }\n}\nfunction translateUpdateGraphLoad(thingy) {\n return factory.createLoad(thingy.source, thingy.destination, thingy.silent);\n}\nfunction translateUpdateGraphShortcut(thingy) {\n const source = thingy.source.default ? 'DEFAULT' : thingy.source.name;\n const destination = thingy.destination.default ? 'DEFAULT' : thingy.destination.name;\n switch (thingy.type) {\n case 'copy': return factory.createCopy(source, destination, thingy.silent);\n case 'move': return factory.createMove(source, destination, thingy.silent);\n case 'add': return factory.createAdd(source, destination, thingy.silent);\n }\n}\nfunction translateBlankNodesToVariables(res) {\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(variables).reduce((acc, variable) => {\n acc[variable] = true;\n return acc;\n }, {});\n return util_1.default.mapOperation(res, {\n [Algebra.types.DELETE_INSERT]: (op) => {\n // Only relevant for INSERT operations as others should never contain blank nodes\n return { result: op, recurse: false };\n },\n [Algebra.types.PATH]: (op, factory) => {\n return {\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.PATTERN]: (op, factory) => {\n return {\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT]: (op) => {\n // Blank nodes in CONSTRUCT templates must be maintained\n return {\n result: factory.createConstruct(translateBlankNodesToVariables(op.input), op.template),\n recurse: false,\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = util_1.default.createUniqueVariable(term.value, variablesRaw, factory.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n}\n//# sourceMappingURL=sparqlAlgebra.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst algebra_1 = require(\"./algebra\");\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst rdf_terms_1 = require(\"rdf-terms\");\nclass Util {\n /**\n * Flattens an array of arrays to an array.\n * @param arr - Array of arrays\n */\n static flatten(arr) {\n return Array.prototype.concat(...arr).filter(x => x);\n }\n /**\n * Outputs a JSON object corresponding to the input algebra-like.\n */\n static objectify(algebra) {\n if (algebra.termType) {\n if (algebra.termType === 'Quad') {\n return {\n type: 'pattern',\n termType: 'Quad',\n subject: Util.objectify(algebra.subject),\n predicate: Util.objectify(algebra.predicate),\n object: Util.objectify(algebra.object),\n graph: Util.objectify(algebra.graph),\n };\n }\n else {\n let result = { termType: algebra.termType, value: algebra.value };\n if (algebra.language)\n result.language = algebra.language;\n if (algebra.datatype)\n result.datatype = Util.objectify(algebra.datatype);\n return result;\n }\n }\n if (Array.isArray(algebra))\n return algebra.map(e => Util.objectify(e));\n if (algebra === Object(algebra)) {\n let result = {};\n for (let key of Object.keys(algebra))\n result[key] = Util.objectify(algebra[key]);\n return result;\n }\n return algebra;\n }\n /**\n * Detects all in-scope variables.\n * In practice this means iterating through the entire algebra tree, finding all variables,\n * and stopping when a project function is found.\n * @param {Operation} op - Input algebra tree.\n * @returns {Variable[]} - List of unique in-scope variables.\n */\n static inScopeVariables(op) {\n const variables = [];\n function addVariable(v) {\n if (!variables.find(v2 => v.value === v2.value))\n variables.push(v);\n }\n function recurseTerm(quad) {\n if (quad.subject.termType === 'Variable')\n addVariable(quad.subject);\n if (quad.predicate.termType === 'Variable')\n addVariable(quad.predicate);\n if (quad.object.termType === 'Variable')\n addVariable(quad.object);\n if (quad.graph.termType === 'Variable')\n addVariable(quad.graph);\n if (quad.subject.termType === 'Quad')\n recurseTerm(quad.subject);\n if (quad.predicate.termType === 'Quad')\n recurseTerm(quad.predicate);\n if (quad.object.termType === 'Quad')\n recurseTerm(quad.object);\n if (quad.graph.termType === 'Quad')\n recurseTerm(quad.graph);\n }\n // https://www.w3.org/TR/sparql11-query/#variableScope\n Util.recurseOperation(op, {\n [algebra_1.types.EXPRESSION]: (op) => {\n if (op.expressionType === algebra_1.expressionTypes.AGGREGATE && op.variable) {\n addVariable(op.variable);\n }\n return true;\n },\n [algebra_1.types.EXTEND]: (op) => {\n addVariable(op.variable);\n return true;\n },\n [algebra_1.types.GRAPH]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.GROUP]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n [algebra_1.types.PATH]: (op) => {\n if (op.subject.termType === 'Variable')\n addVariable(op.subject);\n if (op.object.termType === 'Variable')\n addVariable(op.object);\n if (op.graph.termType === 'Variable')\n addVariable(op.graph);\n if (op.subject.termType === 'Quad')\n recurseTerm(op.subject);\n if (op.object.termType === 'Quad')\n recurseTerm(op.object);\n if (op.graph.termType === 'Quad')\n recurseTerm(op.graph);\n return true;\n },\n [algebra_1.types.PATTERN]: (op) => {\n recurseTerm(op);\n return true;\n },\n [algebra_1.types.PROJECT]: (op) => {\n op.variables.forEach(addVariable);\n return false;\n },\n [algebra_1.types.SERVICE]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.VALUES]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n });\n return variables;\n }\n /**\n * Recurses through the given algebra tree\n * A map of callback functions can be provided for individual Operation types to gather data.\n * The return value of those callbacks should indicate whether recursion should be applied or not.\n * Making modifications will change the original input object.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation) => boolean } callbacks - A map of required callback Operations.\n */\n static recurseOperation(op, callbacks) {\n let result = op;\n let doRecursion = true;\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n doRecursion = callback(op);\n if (!doRecursion)\n return;\n let recurseOp = (op) => Util.recurseOperation(op, callbacks);\n switch (result.type) {\n case algebra_1.types.ALT:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.ASK:\n recurseOp(result.input);\n break;\n case algebra_1.types.BGP:\n result.patterns.forEach(recurseOp);\n break;\n case algebra_1.types.CONSTRUCT:\n recurseOp(result.input);\n result.template.map(recurseOp);\n break;\n case algebra_1.types.DESCRIBE:\n recurseOp(result.input);\n break;\n case algebra_1.types.DISTINCT:\n recurseOp(result.input);\n break;\n case algebra_1.types.EXPRESSION:\n if (result.expressionType === algebra_1.expressionTypes.EXISTENCE) {\n recurseOp(result.input);\n }\n break;\n case algebra_1.types.EXTEND:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FILTER:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FROM:\n recurseOp(result.input);\n break;\n case algebra_1.types.GRAPH:\n recurseOp(result.input);\n break;\n case algebra_1.types.GROUP:\n recurseOp(result.input);\n result.aggregates.forEach(recurseOp);\n break;\n case algebra_1.types.INV:\n recurseOp(result.path);\n break;\n case algebra_1.types.JOIN:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.LEFT_JOIN:\n result.input.map(recurseOp);\n if (result.expression)\n recurseOp(result.expression);\n break;\n case algebra_1.types.LINK:\n break;\n case algebra_1.types.MINUS:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.NOP:\n break;\n case algebra_1.types.NPS:\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ORDER_BY:\n recurseOp(result.input);\n result.expressions.forEach(recurseOp);\n break;\n case algebra_1.types.PATH:\n recurseOp(result.predicate);\n break;\n case algebra_1.types.PATTERN:\n break;\n case algebra_1.types.PROJECT:\n recurseOp(result.input);\n break;\n case algebra_1.types.REDUCED:\n recurseOp(result.input);\n break;\n case algebra_1.types.SEQ:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.SERVICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.SLICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.UNION:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.VALUES:\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n recurseOp(result.path);\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result.updates.forEach(update => recurseOp(update));\n break;\n case algebra_1.types.DELETE_INSERT:\n if (result.delete)\n result.delete.forEach(pattern => recurseOp(pattern));\n if (result.insert)\n result.insert.forEach(pattern => recurseOp(pattern));\n if (result.where)\n recurseOp(result.where);\n break;\n // all of these only have graph IDs as values\n case algebra_1.types.LOAD: break;\n case algebra_1.types.CLEAR: break;\n case algebra_1.types.CREATE: break;\n case algebra_1.types.DROP: break;\n case algebra_1.types.ADD: break;\n case algebra_1.types.MOVE: break;\n case algebra_1.types.COPY: break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Creates a deep copy of the given Operation.\n * Creates shallow copies of the non-Operation values.\n * A map of callback functions can be provided for individual Operation types\n * to specifically modify the given objects before triggering recursion.\n * The return value of those callbacks should indicate whether recursion should be applied to this returned object or not.\n * @param {Operation} op - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapOperation(op, callbacks, factory) {\n let result = op;\n let doRecursion = true;\n let copyMetadata = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[op.type];\n if (callback) {\n // Not sure how to get typing correct for op here\n const recurseResult = callback(op, factory);\n result = recurseResult.result;\n doRecursion = recurseResult.recurse;\n copyMetadata = recurseResult.copyMetadata !== false;\n }\n let toCopyMetadata;\n if (copyMetadata && (result.metadata || op.metadata)) {\n toCopyMetadata = { ...result.metadata, ...op.metadata };\n }\n if (!doRecursion) {\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n // Several casts here might be wrong though depending on the callbacks output\n switch (result.type) {\n case algebra_1.types.ALT:\n result = factory.createAlt(result.input.map(mapOp));\n break;\n case algebra_1.types.ASK:\n result = factory.createAsk(mapOp(result.input));\n break;\n case algebra_1.types.BGP:\n result = factory.createBgp(result.patterns.map(mapOp));\n break;\n case algebra_1.types.CONSTRUCT:\n result = factory.createConstruct(mapOp(result.input), result.template.map(mapOp));\n break;\n case algebra_1.types.DESCRIBE:\n result = factory.createDescribe(mapOp(result.input), result.terms);\n break;\n case algebra_1.types.DISTINCT:\n result = factory.createDistinct(mapOp(result.input));\n break;\n case algebra_1.types.EXPRESSION:\n result = Util.mapExpression(result, callbacks, factory);\n break;\n case algebra_1.types.EXTEND:\n result = factory.createExtend(mapOp(result.input), result.variable, mapOp(result.expression));\n break;\n case algebra_1.types.FILTER:\n result = factory.createFilter(mapOp(result.input), mapOp(result.expression));\n break;\n case algebra_1.types.FROM:\n result = factory.createFrom(mapOp(result.input), [...result.default], [...result.named]);\n break;\n case algebra_1.types.GRAPH:\n result = factory.createGraph(mapOp(result.input), result.name);\n break;\n case algebra_1.types.GROUP:\n result = factory.createGroup(mapOp(result.input), [].concat(result.variables), result.aggregates.map(mapOp));\n break;\n case algebra_1.types.INV:\n result = factory.createInv(mapOp(result.path));\n break;\n case algebra_1.types.JOIN:\n result = factory.createJoin(result.input.map(mapOp));\n break;\n case algebra_1.types.LEFT_JOIN:\n result = factory.createLeftJoin(mapOp(result.input[0]), mapOp(result.input[1]), result.expression ? mapOp(result.expression) : undefined);\n break;\n case algebra_1.types.LINK:\n result = factory.createLink(result.iri);\n break;\n case algebra_1.types.MINUS:\n result = factory.createMinus(mapOp(result.input[0]), mapOp(result.input[1]));\n break;\n case algebra_1.types.NOP:\n result = factory.createNop();\n break;\n case algebra_1.types.NPS:\n result = factory.createNps([].concat(result.iris));\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n result = factory.createOneOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ORDER_BY:\n result = factory.createOrderBy(mapOp(result.input), result.expressions.map(mapOp));\n break;\n case algebra_1.types.PATH:\n result = factory.createPath(result.subject, mapOp(result.predicate), result.object, result.graph);\n break;\n case algebra_1.types.PATTERN:\n result = factory.createPattern(result.subject, result.predicate, result.object, result.graph);\n break;\n case algebra_1.types.PROJECT:\n result = factory.createProject(mapOp(result.input), [...result.variables]);\n break;\n case algebra_1.types.REDUCED:\n result = factory.createReduced(mapOp(result.input));\n break;\n case algebra_1.types.SEQ:\n result = factory.createSeq(result.input.map(mapOp));\n break;\n case algebra_1.types.SERVICE:\n result = factory.createService(mapOp(result.input), result.name, result.silent);\n break;\n case algebra_1.types.SLICE:\n result = factory.createSlice(mapOp(result.input), result.start, result.length);\n break;\n case algebra_1.types.UNION:\n result = factory.createUnion(result.input.map(mapOp));\n break;\n case algebra_1.types.VALUES:\n result = factory.createValues([].concat(result.variables), result.bindings.map(b => Object.assign({}, b)));\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n result = factory.createZeroOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n result = factory.createZeroOrOnePath(mapOp(result.path));\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result = factory.createCompositeUpdate(result.updates.map(mapOp));\n break;\n case algebra_1.types.DELETE_INSERT:\n result = factory.createDeleteInsert(result.delete ? result.delete.map(mapOp) : undefined, result.insert ? result.insert.map(mapOp) : undefined, result.where ? mapOp(result.where) : undefined);\n break;\n case algebra_1.types.LOAD:\n result = factory.createLoad(result.source, result.destination, result.silent);\n break;\n case algebra_1.types.CLEAR:\n result = factory.createClear(result.source, result.silent);\n break;\n case algebra_1.types.CREATE:\n result = factory.createCreate(result.source, result.silent);\n break;\n case algebra_1.types.DROP:\n result = factory.createDrop(result.source, result.silent);\n break;\n case algebra_1.types.ADD:\n result = factory.createAdd(result.source, result.destination);\n break;\n case algebra_1.types.MOVE:\n result = factory.createMove(result.source, result.destination);\n break;\n case algebra_1.types.COPY:\n result = factory.createCopy(result.source, result.destination);\n break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n /**\n * Similar to the {@link mapOperation} function but specifically for expressions.\n * Both functions call each other while copying.\n * Should not be called directly since it does not execute the callbacks, these happen in {@link mapOperation}.\n * @param {Expression} expr - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapExpression(expr, callbacks, factory) {\n let result = expr;\n let doRecursion = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[expr.expressionType];\n if (callback)\n ({ result, recurse: doRecursion } = callback(expr, factory));\n if (!doRecursion)\n return result;\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n switch (expr.expressionType) {\n case algebra_1.expressionTypes.AGGREGATE:\n if (expr.variable) {\n return factory.createBoundAggregate(expr.variable, expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n }\n return factory.createAggregateExpression(expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n case algebra_1.expressionTypes.EXISTENCE:\n return factory.createExistenceExpression(expr.not, mapOp(expr.input));\n case algebra_1.expressionTypes.NAMED:\n return factory.createNamedExpression(expr.name, expr.args.map(mapOp));\n case algebra_1.expressionTypes.OPERATOR:\n return factory.createOperatorExpression(expr.operator, expr.args.map(mapOp));\n case algebra_1.expressionTypes.TERM:\n return factory.createTermExpression(expr.term);\n case algebra_1.expressionTypes.WILDCARD:\n return factory.createWildcardExpression();\n default: throw new Error(`Unknown Expression type ${expr.expressionType}`);\n }\n }\n /**\n * Creates a deep clone of the operation.\n * This is syntactic sugar for calling {@link mapOperation} without callbacks.\n * @param {Operation} op - The operation to copy.\n * @returns {Operation} - The deep copy.\n */\n static cloneOperation(op) {\n return Util.mapOperation(op, {});\n }\n /**\n * Creates a deep clone of the expression.\n * This is syntactic sugar for calling {@link mapExpression} without callbacks.\n * @param {Expression} expr - The operation to copy.\n * @returns {Expression} - The deep copy.\n */\n static cloneExpression(expr) {\n return Util.mapExpression(expr, {});\n }\n static createUniqueVariable(label, variables, dataFactory) {\n let counter = 0;\n let labelLoop = label;\n while (variables[labelLoop]) {\n labelLoop = `${label}${counter++}`;\n }\n return dataFactory.variable(labelLoop);\n }\n // separate terms from wildcard since we handle them differently\n static isSimpleTerm(term) {\n return term.termType !== undefined && term.termType !== 'Quad' && term.termType !== 'Wildcard';\n }\n static isQuad(term) {\n return term.termType === 'Quad';\n }\n static hasQuadVariables(quad) {\n return (0, rdf_terms_1.someTermsNested)(quad, term => term.termType === 'Variable');\n }\n static isWildcard(term) {\n return term.termType === 'Wildcard';\n }\n}\nexports.default = Util;\n//# sourceMappingURL=util.js.map","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.printError = printError;\nexports.GraphQLError = void 0;\n\nvar _isObjectLike = _interopRequireDefault(require(\"../jsutils/isObjectLike.js\"));\n\nvar _symbols = require(\"../polyfills/symbols.js\");\n\nvar _location = require(\"../language/location.js\");\n\nvar _printLocation = require(\"../language/printLocation.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\nvar GraphQLError = /*#__PURE__*/function (_Error) {\n _inherits(GraphQLError, _Error);\n\n var _super = _createSuper(GraphQLError);\n\n /**\n * An array of { line, column } locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n var _nodeLocations, _nodeLocations2, _nodeLocations3;\n\n var _this;\n\n _classCallCheck(this, GraphQLError);\n\n _this = _super.call(this, message);\n _this.name = 'GraphQLError';\n _this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n\n _this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n var nodeLocations = [];\n\n for (var _i2 = 0, _ref3 = (_this$nodes = _this.nodes) !== null && _this$nodes !== void 0 ? _this$nodes : []; _i2 < _ref3.length; _i2++) {\n var _this$nodes;\n\n var _ref4 = _ref3[_i2];\n var loc = _ref4.loc;\n\n if (loc != null) {\n nodeLocations.push(loc);\n }\n }\n\n nodeLocations = undefinedIfEmpty(nodeLocations); // Compute locations in the source for the given nodes/positions.\n\n _this.source = source !== null && source !== void 0 ? source : (_nodeLocations = nodeLocations) === null || _nodeLocations === void 0 ? void 0 : _nodeLocations[0].source;\n _this.positions = positions !== null && positions !== void 0 ? positions : (_nodeLocations2 = nodeLocations) === null || _nodeLocations2 === void 0 ? void 0 : _nodeLocations2.map(function (loc) {\n return loc.start;\n });\n _this.locations = positions && source ? positions.map(function (pos) {\n return (0, _location.getLocation)(source, pos);\n }) : (_nodeLocations3 = nodeLocations) === null || _nodeLocations3 === void 0 ? void 0 : _nodeLocations3.map(function (loc) {\n return (0, _location.getLocation)(loc.source, loc.start);\n });\n _this.path = path !== null && path !== void 0 ? path : undefined;\n var originalExtensions = originalError === null || originalError === void 0 ? void 0 : originalError.extensions;\n\n if (extensions == null && (0, _isObjectLike.default)(originalExtensions)) {\n _this.extensions = _objectSpread({}, originalExtensions);\n } else {\n _this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};\n } // By being enumerable, JSON.stringify will include bellow properties in the resulting output.\n // This ensures that the simplest possible GraphQL service adheres to the spec.\n\n\n Object.defineProperties(_assertThisInitialized(_this), {\n message: {\n enumerable: true\n },\n locations: {\n enumerable: _this.locations != null\n },\n path: {\n enumerable: _this.path != null\n },\n extensions: {\n enumerable: _this.extensions != null && Object.keys(_this.extensions).length > 0\n },\n name: {\n enumerable: false\n },\n nodes: {\n enumerable: false\n },\n source: {\n enumerable: false\n },\n positions: {\n enumerable: false\n },\n originalError: {\n enumerable: false\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError !== null && originalError !== void 0 && originalError.stack) {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n return _possibleConstructorReturn(_this);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n } else {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n\n return _this;\n }\n\n _createClass(GraphQLError, [{\n key: \"toString\",\n value: function toString() {\n return printError(this);\n } // FIXME: workaround to not break chai comparisons, should be remove in v16\n // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n }, {\n key: _symbols.SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Object';\n }\n }]);\n\n return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexports.GraphQLError = GraphQLError;\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\n\nfunction printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i4 = 0, _error$nodes2 = error.nodes; _i4 < _error$nodes2.length; _i4++) {\n var node = _error$nodes2[_i4];\n\n if (node.loc) {\n output += '\\n\\n' + (0, _printLocation.printLocation)(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i6 = 0, _error$locations2 = error.locations; _i6 < _error$locations2.length; _i6++) {\n var location = _error$locations2[_i6];\n output += '\\n\\n' + (0, _printLocation.printSourceLocation)(error.source, location);\n }\n }\n\n return output;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.syntaxError = syntaxError;\n\nvar _GraphQLError = require(\"./GraphQLError.js\");\n\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\nfunction syntaxError(source, position, description) {\n return new _GraphQLError.GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = defineInspect;\n\nvar _invariant = _interopRequireDefault(require(\"./invariant.js\"));\n\nvar _nodejsCustomInspectSymbol = _interopRequireDefault(require(\"./nodejsCustomInspectSymbol.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The `defineInspect()` function defines `inspect()` prototype method as alias of `toJSON`\n */\nfunction defineInspect(classObject) {\n var fn = classObject.prototype.toJSON;\n typeof fn === 'function' || (0, _invariant.default)(0);\n classObject.prototype.inspect = fn; // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (_nodejsCustomInspectSymbol.default) {\n classObject.prototype[_nodejsCustomInspectSymbol.default] = fn;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = devAssert;\n\nfunction devAssert(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inspect;\n\nvar _nodejsCustomInspectSymbol = _interopRequireDefault(require(\"./nodejsCustomInspectSymbol.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(_nodejsCustomInspectSymbol.default)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _inspect = _interopRequireDefault(require(\"./inspect.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n// See: https://webpack.js.org/guides/production/\nvar _default = process.env.NODE_ENV === 'production' ? // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n// eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n return value instanceof constructor;\n} : // eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (_typeof(value) === 'object' && value !== null) {\n var _value$constructor;\n\n var className = constructor.prototype[Symbol.toStringTag];\n var valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name;\n\n if (className === valueClassName) {\n var stringifiedValue = (0, _inspect.default)(value);\n throw new Error(\"Cannot use \".concat(className, \" \\\"\").concat(stringifiedValue, \"\\\" from another module or realm.\\n\\nEnsure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory. If different versions of \\\"graphql\\\" are the dependencies of other\\nrelied on modules, use \\\"resolutions\\\" to ensure only one version is installed.\\n\\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\\n\\nDuplicate \\\"graphql\\\" modules cannot be used at the same time since different\\nversions may have different capabilities and behavior. The data from one\\nversion used in the function from another could produce confusing and\\nspurious results.\"));\n }\n }\n\n return false;\n};\n\nexports.default = _default;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = invariant;\n\nfunction invariant(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isObjectLike;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nfunction isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nvar _default = nodejsCustomInspectSymbol;\nexports.default = _default;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isNode = isNode;\nexports.Token = exports.Location = void 0;\n\nvar _defineInspect = _interopRequireDefault(require(\"../jsutils/defineInspect.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nvar Location = /*#__PURE__*/function () {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n function Location(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n var _proto = Location.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n };\n\n return Location;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\n\nexports.Location = Location;\n(0, _defineInspect.default)(Location);\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nvar Token = /*#__PURE__*/function () {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n function Token(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n }\n\n var _proto2 = Token.prototype;\n\n _proto2.toJSON = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n };\n\n return Token;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\n\nexports.Token = Token;\n(0, _defineInspect.default)(Token);\n/**\n * @internal\n */\n\nfunction isNode(maybeNode) {\n return maybeNode != null && typeof maybeNode.kind === 'string';\n}\n/**\n * The list of all possible AST node types.\n */\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dedentBlockStringValue = dedentBlockStringValue;\nexports.getBlockStringIndentation = getBlockStringIndentation;\nexports.printBlockString = printBlockString;\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nfunction dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(rawString);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n var startLine = 0;\n\n while (startLine < lines.length && isBlank(lines[startLine])) {\n ++startLine;\n }\n\n var endLine = lines.length;\n\n while (endLine > startLine && isBlank(lines[endLine - 1])) {\n --endLine;\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.slice(startLine, endLine).join('\\n');\n}\n\nfunction isBlank(str) {\n for (var i = 0; i < str.length; ++i) {\n if (str[i] !== ' ' && str[i] !== '\\t') {\n return false;\n }\n }\n\n return true;\n}\n/**\n * @internal\n */\n\n\nfunction getBlockStringIndentation(value) {\n var _commonIndent;\n\n var isFirstLine = true;\n var isEmptyLine = true;\n var indent = 0;\n var commonIndent = null;\n\n for (var i = 0; i < value.length; ++i) {\n switch (value.charCodeAt(i)) {\n case 13:\n // \\r\n if (value.charCodeAt(i + 1) === 10) {\n ++i; // skip \\r\\n as one symbol\n }\n\n // falls through\n\n case 10:\n // \\n\n isFirstLine = false;\n isEmptyLine = true;\n indent = 0;\n break;\n\n case 9: // \\t\n\n case 32:\n // \n ++indent;\n break;\n\n default:\n if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n }\n\n isEmptyLine = false;\n }\n }\n\n return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\n\nfunction printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var hasTrailingSlash = value[value.length - 1] === '\\\\';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectiveLocation = void 0;\n\n/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */\n\nexports.DirectiveLocation = DirectiveLocation;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Source\", {\n enumerable: true,\n get: function get() {\n return _source.Source;\n }\n});\nObject.defineProperty(exports, \"getLocation\", {\n enumerable: true,\n get: function get() {\n return _location.getLocation;\n }\n});\nObject.defineProperty(exports, \"printLocation\", {\n enumerable: true,\n get: function get() {\n return _printLocation.printLocation;\n }\n});\nObject.defineProperty(exports, \"printSourceLocation\", {\n enumerable: true,\n get: function get() {\n return _printLocation.printSourceLocation;\n }\n});\nObject.defineProperty(exports, \"Kind\", {\n enumerable: true,\n get: function get() {\n return _kinds.Kind;\n }\n});\nObject.defineProperty(exports, \"TokenKind\", {\n enumerable: true,\n get: function get() {\n return _tokenKind.TokenKind;\n }\n});\nObject.defineProperty(exports, \"Lexer\", {\n enumerable: true,\n get: function get() {\n return _lexer.Lexer;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parser.parse;\n }\n});\nObject.defineProperty(exports, \"parseValue\", {\n enumerable: true,\n get: function get() {\n return _parser.parseValue;\n }\n});\nObject.defineProperty(exports, \"parseType\", {\n enumerable: true,\n get: function get() {\n return _parser.parseType;\n }\n});\nObject.defineProperty(exports, \"print\", {\n enumerable: true,\n get: function get() {\n return _printer.print;\n }\n});\nObject.defineProperty(exports, \"visit\", {\n enumerable: true,\n get: function get() {\n return _visitor.visit;\n }\n});\nObject.defineProperty(exports, \"visitInParallel\", {\n enumerable: true,\n get: function get() {\n return _visitor.visitInParallel;\n }\n});\nObject.defineProperty(exports, \"getVisitFn\", {\n enumerable: true,\n get: function get() {\n return _visitor.getVisitFn;\n }\n});\nObject.defineProperty(exports, \"BREAK\", {\n enumerable: true,\n get: function get() {\n return _visitor.BREAK;\n }\n});\nObject.defineProperty(exports, \"Location\", {\n enumerable: true,\n get: function get() {\n return _ast.Location;\n }\n});\nObject.defineProperty(exports, \"Token\", {\n enumerable: true,\n get: function get() {\n return _ast.Token;\n }\n});\nObject.defineProperty(exports, \"isDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isExecutableDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isExecutableDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isSelectionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isSelectionNode;\n }\n});\nObject.defineProperty(exports, \"isValueNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isValueNode;\n }\n});\nObject.defineProperty(exports, \"isTypeNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeNode;\n }\n});\nObject.defineProperty(exports, \"isTypeSystemDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeSystemDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isTypeDefinitionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeDefinitionNode;\n }\n});\nObject.defineProperty(exports, \"isTypeSystemExtensionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeSystemExtensionNode;\n }\n});\nObject.defineProperty(exports, \"isTypeExtensionNode\", {\n enumerable: true,\n get: function get() {\n return _predicates.isTypeExtensionNode;\n }\n});\nObject.defineProperty(exports, \"DirectiveLocation\", {\n enumerable: true,\n get: function get() {\n return _directiveLocation.DirectiveLocation;\n }\n});\n\nvar _source = require(\"./source.js\");\n\nvar _location = require(\"./location.js\");\n\nvar _printLocation = require(\"./printLocation.js\");\n\nvar _kinds = require(\"./kinds.js\");\n\nvar _tokenKind = require(\"./tokenKind.js\");\n\nvar _lexer = require(\"./lexer.js\");\n\nvar _parser = require(\"./parser.js\");\n\nvar _printer = require(\"./printer.js\");\n\nvar _visitor = require(\"./visitor.js\");\n\nvar _ast = require(\"./ast.js\");\n\nvar _predicates = require(\"./predicates.js\");\n\nvar _directiveLocation = require(\"./directiveLocation.js\");\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Kind = void 0;\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */\n\nexports.Kind = Kind;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isPunctuatorTokenKind = isPunctuatorTokenKind;\nexports.Lexer = void 0;\n\nvar _syntaxError = require(\"../error/syntaxError.js\");\n\nvar _ast = require(\"./ast.js\");\n\nvar _tokenKind = require(\"./tokenKind.js\");\n\nvar _blockString = require(\"./blockString.js\");\n\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\nvar Lexer = /*#__PURE__*/function () {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n function Lexer(source) {\n var startOfFileToken = new _ast.Token(_tokenKind.TokenKind.SOF, 0, 0, 0, 0, null);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n\n var _proto = Lexer.prototype;\n\n _proto.advance = function advance() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n ;\n\n _proto.lookahead = function lookahead() {\n var token = this.token;\n\n if (token.kind !== _tokenKind.TokenKind.EOF) {\n do {\n var _token$next;\n\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = (_token$next = token.next) !== null && _token$next !== void 0 ? _token$next : token.next = readToken(this, token);\n } while (token.kind === _tokenKind.TokenKind.COMMENT);\n }\n\n return token;\n };\n\n return Lexer;\n}();\n/**\n * @internal\n */\n\n\nexports.Lexer = Lexer;\n\nfunction isPunctuatorTokenKind(kind) {\n return kind === _tokenKind.TokenKind.BANG || kind === _tokenKind.TokenKind.DOLLAR || kind === _tokenKind.TokenKind.AMP || kind === _tokenKind.TokenKind.PAREN_L || kind === _tokenKind.TokenKind.PAREN_R || kind === _tokenKind.TokenKind.SPREAD || kind === _tokenKind.TokenKind.COLON || kind === _tokenKind.TokenKind.EQUALS || kind === _tokenKind.TokenKind.AT || kind === _tokenKind.TokenKind.BRACKET_L || kind === _tokenKind.TokenKind.BRACKET_R || kind === _tokenKind.TokenKind.BRACE_L || kind === _tokenKind.TokenKind.PIPE || kind === _tokenKind.TokenKind.BRACE_R;\n}\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? _tokenKind.TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = prev.end;\n\n while (pos < bodyLength) {\n var code = body.charCodeAt(pos);\n var _line = lexer.line;\n\n var _col = 1 + pos - lexer.lineStart; // SourceCharacter\n\n\n switch (code) {\n case 0xfeff: // \n\n case 9: // \\t\n\n case 32: // \n\n case 44:\n // ,\n ++pos;\n continue;\n\n case 10:\n // \\n\n ++pos;\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 13:\n // \\r\n if (body.charCodeAt(pos + 1) === 10) {\n pos += 2;\n } else {\n ++pos;\n }\n\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 33:\n // !\n return new _ast.Token(_tokenKind.TokenKind.BANG, pos, pos + 1, _line, _col, prev);\n\n case 35:\n // #\n return readComment(source, pos, _line, _col, prev);\n\n case 36:\n // $\n return new _ast.Token(_tokenKind.TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev);\n\n case 38:\n // &\n return new _ast.Token(_tokenKind.TokenKind.AMP, pos, pos + 1, _line, _col, prev);\n\n case 40:\n // (\n return new _ast.Token(_tokenKind.TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev);\n\n case 41:\n // )\n return new _ast.Token(_tokenKind.TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev);\n\n case 46:\n // .\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new _ast.Token(_tokenKind.TokenKind.SPREAD, pos, pos + 3, _line, _col, prev);\n }\n\n break;\n\n case 58:\n // :\n return new _ast.Token(_tokenKind.TokenKind.COLON, pos, pos + 1, _line, _col, prev);\n\n case 61:\n // =\n return new _ast.Token(_tokenKind.TokenKind.EQUALS, pos, pos + 1, _line, _col, prev);\n\n case 64:\n // @\n return new _ast.Token(_tokenKind.TokenKind.AT, pos, pos + 1, _line, _col, prev);\n\n case 91:\n // [\n return new _ast.Token(_tokenKind.TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev);\n\n case 93:\n // ]\n return new _ast.Token(_tokenKind.TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev);\n\n case 123:\n // {\n return new _ast.Token(_tokenKind.TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev);\n\n case 124:\n // |\n return new _ast.Token(_tokenKind.TokenKind.PIPE, pos, pos + 1, _line, _col, prev);\n\n case 125:\n // }\n return new _ast.Token(_tokenKind.TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev);\n\n case 34:\n // \"\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, _line, _col, prev, lexer);\n }\n\n return readString(source, pos, _line, _col, prev);\n\n case 45: // -\n\n case 48: // 0\n\n case 49: // 1\n\n case 50: // 2\n\n case 51: // 3\n\n case 52: // 4\n\n case 53: // 5\n\n case 54: // 6\n\n case 55: // 7\n\n case 56: // 8\n\n case 57:\n // 9\n return readNumber(source, pos, code, _line, _col, prev);\n\n case 65: // A\n\n case 66: // B\n\n case 67: // C\n\n case 68: // D\n\n case 69: // E\n\n case 70: // F\n\n case 71: // G\n\n case 72: // H\n\n case 73: // I\n\n case 74: // J\n\n case 75: // K\n\n case 76: // L\n\n case 77: // M\n\n case 78: // N\n\n case 79: // O\n\n case 80: // P\n\n case 81: // Q\n\n case 82: // R\n\n case 83: // S\n\n case 84: // T\n\n case 85: // U\n\n case 86: // V\n\n case 87: // W\n\n case 88: // X\n\n case 89: // Y\n\n case 90: // Z\n\n case 95: // _\n\n case 97: // a\n\n case 98: // b\n\n case 99: // c\n\n case 100: // d\n\n case 101: // e\n\n case 102: // f\n\n case 103: // g\n\n case 104: // h\n\n case 105: // i\n\n case 106: // j\n\n case 107: // k\n\n case 108: // l\n\n case 109: // m\n\n case 110: // n\n\n case 111: // o\n\n case 112: // p\n\n case 113: // q\n\n case 114: // r\n\n case 115: // s\n\n case 116: // t\n\n case 117: // u\n\n case 118: // v\n\n case 119: // w\n\n case 120: // x\n\n case 121: // y\n\n case 122:\n // z\n return readName(source, pos, _line, _col, prev);\n }\n\n throw (0, _syntaxError.syntaxError)(source, pos, unexpectedCharacterMessage(code));\n }\n\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n return new _ast.Token(_tokenKind.TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new _ast.Token(_tokenKind.TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n\n if (code >= 48 && code <= 57) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n\n if (code === 46 || isNameStart(code)) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n\n return new _ast.Token(isFloat ? _tokenKind.TokenKind.FLOAT : _tokenKind.TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new _ast.Token(_tokenKind.TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n\n default:\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw (0, _syntaxError.syntaxError)(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new _ast.Token(_tokenKind.TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, (0, _blockString.dedentBlockStringValue)(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw (0, _syntaxError.syntaxError)(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else if ( // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw (0, _syntaxError.syntaxError)(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new _ast.Token(_tokenKind.TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n} // _ A-Z a-z\n\n\nfunction isNameStart(code) {\n return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLocation = getLocation;\n\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nfunction getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parse = parse;\nexports.parseValue = parseValue;\nexports.parseType = parseType;\nexports.Parser = void 0;\n\nvar _syntaxError = require(\"../error/syntaxError.js\");\n\nvar _kinds = require(\"./kinds.js\");\n\nvar _ast = require(\"./ast.js\");\n\nvar _tokenKind = require(\"./tokenKind.js\");\n\nvar _source = require(\"./source.js\");\n\nvar _directiveLocation = require(\"./directiveLocation.js\");\n\nvar _lexer = require(\"./lexer.js\");\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nfunction parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\n\nfunction parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(_tokenKind.TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(_tokenKind.TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\n\nfunction parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(_tokenKind.TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(_tokenKind.TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(source, options) {\n var sourceObj = (0, _source.isSource)(source) ? source : new _source.Source(source);\n this._lexer = new _lexer.Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.parseName = function parseName() {\n var token = this.expectToken(_tokenKind.TokenKind.NAME);\n return {\n kind: _kinds.Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n ;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.DOCUMENT,\n definitions: this.many(_tokenKind.TokenKind.SOF, this.parseDefinition, _tokenKind.TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n ;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(_tokenKind.TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n ;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n\n if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n return {\n kind: _kinds.Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n var operation = this.parseOperationType();\n var name;\n\n if (this.peek(_tokenKind.TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return {\n kind: _kinds.Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */\n ;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(_tokenKind.TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n ;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(_tokenKind.TokenKind.PAREN_L, this.parseVariableDefinition, _tokenKind.TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(_tokenKind.TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(_tokenKind.TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */\n ;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.DOLLAR);\n return {\n kind: _kinds.Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */\n ;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.SELECTION_SET,\n selections: this.many(_tokenKind.TokenKind.BRACE_L, this.parseSelection, _tokenKind.TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n ;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(_tokenKind.TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n ;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: _kinds.Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(_tokenKind.TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n ;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(_tokenKind.TokenKind.PAREN_L, item, _tokenKind.TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n return {\n kind: _kinds.Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(_tokenKind.TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n ;\n\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(_tokenKind.TokenKind.NAME)) {\n return {\n kind: _kinds.Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: _kinds.Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n ;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var _this$_options;\n\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {\n return {\n kind: _kinds.Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: _kinds.Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */\n ;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n ;\n\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n\n switch (token.kind) {\n case _tokenKind.TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case _tokenKind.TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case _tokenKind.TokenKind.INT:\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case _tokenKind.TokenKind.FLOAT:\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case _tokenKind.TokenKind.STRING:\n case _tokenKind.TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case _tokenKind.TokenKind.NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return {\n kind: _kinds.Kind.BOOLEAN,\n value: true,\n loc: this.loc(token)\n };\n\n case 'false':\n return {\n kind: _kinds.Kind.BOOLEAN,\n value: false,\n loc: this.loc(token)\n };\n\n case 'null':\n return {\n kind: _kinds.Kind.NULL,\n loc: this.loc(token)\n };\n\n default:\n return {\n kind: _kinds.Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n }\n\n case _tokenKind.TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n\n break;\n }\n\n throw this.unexpected();\n };\n\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n\n this._lexer.advance();\n\n return {\n kind: _kinds.Kind.STRING,\n value: token.value,\n block: token.kind === _tokenKind.TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n ;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n\n return {\n kind: _kinds.Kind.LIST,\n values: this.any(_tokenKind.TokenKind.BRACKET_L, item, _tokenKind.TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n ;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n\n return {\n kind: _kinds.Kind.OBJECT,\n fields: this.any(_tokenKind.TokenKind.BRACE_L, item, _tokenKind.TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n return {\n kind: _kinds.Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n ;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n\n while (this.peek(_tokenKind.TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n ;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(_tokenKind.TokenKind.AT);\n return {\n kind: _kinds.Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n ;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(_tokenKind.TokenKind.BRACKET_R);\n type = {\n kind: _kinds.Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.BANG)) {\n return {\n kind: _kinds.Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n ;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: _kinds.Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n\n throw this.unexpected(keywordToken);\n };\n\n _proto.peekDescription = function peekDescription() {\n return this.peek(_tokenKind.TokenKind.STRING) || this.peek(_tokenKind.TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n ;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n */\n ;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(_tokenKind.TokenKind.BRACE_L, this.parseOperationTypeDefinition, _tokenKind.TokenKind.BRACE_R);\n return {\n kind: _kinds.Kind.SCHEMA_DEFINITION,\n description: description,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n ;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(_tokenKind.TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: _kinds.Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n ;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: _kinds.Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n ;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var _this$_options2;\n\n if (!this.expectOptionalKeyword('implements')) {\n return [];\n }\n\n if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {\n var types = []; // Optional leading ampersand\n\n this.expectOptionalToken(_tokenKind.TokenKind.AMP);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(_tokenKind.TokenKind.AMP) || this.peek(_tokenKind.TokenKind.NAME));\n\n return types;\n }\n\n return this.delimitedMany(_tokenKind.TokenKind.AMP, this.parseNamedType);\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */\n ;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n var _this$_options3;\n\n // Legacy support for the SDL?\n if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(_tokenKind.TokenKind.BRACE_L) && this._lexer.lookahead().kind === _tokenKind.TokenKind.BRACE_R) {\n this._lexer.advance();\n\n this._lexer.advance();\n\n return [];\n }\n\n return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseFieldDefinition, _tokenKind.TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n ;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(_tokenKind.TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n ;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(_tokenKind.TokenKind.PAREN_L, this.parseInputValueDef, _tokenKind.TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(_tokenKind.TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n\n if (this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: _kinds.Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n ;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: _kinds.Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n ;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n return this.expectOptionalToken(_tokenKind.TokenKind.EQUALS) ? this.delimitedMany(_tokenKind.TokenKind.PIPE, this.parseNamedType) : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n ;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: _kinds.Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n ;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseEnumValueDefinition, _tokenKind.TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n ;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds.Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n ;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n ;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseInputValueDef, _tokenKind.TokenKind.BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n ;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseOperationTypeDefinition, _tokenKind.TokenKind.BRACE_R);\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n ;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n ;\n\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n ;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n ;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n ;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n ;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */\n ;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(_tokenKind.TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: _kinds.Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n ;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n return this.delimitedMany(_tokenKind.TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n ;\n\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n\n if (_directiveLocation.DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in the source that created a given parsed object.\n */\n ;\n\n _proto.loc = function loc(startToken) {\n var _this$_options4;\n\n if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {\n return new _ast.Location(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */\n ;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw (0, _syntaxError.syntaxError)(this._lexer.source, token.start, \"Expected \".concat(getTokenKindDesc(kind), \", found \").concat(getTokenDesc(token), \".\"));\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and return undefined.\n */\n ;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw (0, _syntaxError.syntaxError)(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token), \".\"));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n ;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n ;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return (0, _syntaxError.syntaxError)(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token), \".\"));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n ;\n\n _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n };\n\n return Parser;\n}();\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\n\nexports.Parser = Parser;\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? \" \\\"\".concat(value, \"\\\"\") : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\n\nfunction getTokenKindDesc(kind) {\n return (0, _lexer.isPunctuatorTokenKind)(kind) ? \"\\\"\".concat(kind, \"\\\"\") : kind;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isDefinitionNode = isDefinitionNode;\nexports.isExecutableDefinitionNode = isExecutableDefinitionNode;\nexports.isSelectionNode = isSelectionNode;\nexports.isValueNode = isValueNode;\nexports.isTypeNode = isTypeNode;\nexports.isTypeSystemDefinitionNode = isTypeSystemDefinitionNode;\nexports.isTypeDefinitionNode = isTypeDefinitionNode;\nexports.isTypeSystemExtensionNode = isTypeSystemExtensionNode;\nexports.isTypeExtensionNode = isTypeExtensionNode;\n\nvar _kinds = require(\"./kinds.js\");\n\nfunction isDefinitionNode(node) {\n return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node);\n}\n\nfunction isExecutableDefinitionNode(node) {\n return node.kind === _kinds.Kind.OPERATION_DEFINITION || node.kind === _kinds.Kind.FRAGMENT_DEFINITION;\n}\n\nfunction isSelectionNode(node) {\n return node.kind === _kinds.Kind.FIELD || node.kind === _kinds.Kind.FRAGMENT_SPREAD || node.kind === _kinds.Kind.INLINE_FRAGMENT;\n}\n\nfunction isValueNode(node) {\n return node.kind === _kinds.Kind.VARIABLE || node.kind === _kinds.Kind.INT || node.kind === _kinds.Kind.FLOAT || node.kind === _kinds.Kind.STRING || node.kind === _kinds.Kind.BOOLEAN || node.kind === _kinds.Kind.NULL || node.kind === _kinds.Kind.ENUM || node.kind === _kinds.Kind.LIST || node.kind === _kinds.Kind.OBJECT;\n}\n\nfunction isTypeNode(node) {\n return node.kind === _kinds.Kind.NAMED_TYPE || node.kind === _kinds.Kind.LIST_TYPE || node.kind === _kinds.Kind.NON_NULL_TYPE;\n}\n\nfunction isTypeSystemDefinitionNode(node) {\n return node.kind === _kinds.Kind.SCHEMA_DEFINITION || isTypeDefinitionNode(node) || node.kind === _kinds.Kind.DIRECTIVE_DEFINITION;\n}\n\nfunction isTypeDefinitionNode(node) {\n return node.kind === _kinds.Kind.SCALAR_TYPE_DEFINITION || node.kind === _kinds.Kind.OBJECT_TYPE_DEFINITION || node.kind === _kinds.Kind.INTERFACE_TYPE_DEFINITION || node.kind === _kinds.Kind.UNION_TYPE_DEFINITION || node.kind === _kinds.Kind.ENUM_TYPE_DEFINITION || node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION;\n}\n\nfunction isTypeSystemExtensionNode(node) {\n return node.kind === _kinds.Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\n\nfunction isTypeExtensionNode(node) {\n return node.kind === _kinds.Kind.SCALAR_TYPE_EXTENSION || node.kind === _kinds.Kind.OBJECT_TYPE_EXTENSION || node.kind === _kinds.Kind.INTERFACE_TYPE_EXTENSION || node.kind === _kinds.Kind.UNION_TYPE_EXTENSION || node.kind === _kinds.Kind.ENUM_TYPE_EXTENSION || node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.printLocation = printLocation;\nexports.printSourceLocation = printSourceLocation;\n\nvar _location = require(\"./location.js\");\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nfunction printLocation(location) {\n return printSourceLocation(location.source, (0, _location.getLocation)(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\n\nfunction printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var subLineIndex = Math.floor(columnNum / 80);\n var subLineColumnNum = columnNum % 80;\n var subLines = [];\n\n for (var i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n return ['', subLine];\n }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n }\n\n return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction leftPad(len, str) {\n return whitespace(len - str.length) + str;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.print = print;\n\nvar _visitor = require(\"./visitor.js\");\n\nvar _blockString = require(\"./blockString.js\");\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nfunction print(ast) {\n return (0, _visitor.visit)(ast, {\n leave: printDocASTReducer\n });\n}\n\nvar MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n var prefix = wrap('', alias, ': ') + name;\n var argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? (0, _blockString.printBlockString)(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: addDescription(function (_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n }),\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n interfaces = _ref26.interfaces,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n interfaces = _ref35.interfaces,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray) {\n var _maybeArray$filter$jo;\n\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function (x) {\n return x;\n }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\n\nfunction wrap(start, maybeString) {\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction isMultiline(str) {\n return str.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray != null && maybeArray.some(isMultiline);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isSource = isSource;\nexports.Source = void 0;\n\nvar _symbols = require(\"../polyfills/symbols.js\");\n\nvar _inspect = _interopRequireDefault(require(\"../jsutils/inspect.js\"));\n\nvar _devAssert = _interopRequireDefault(require(\"../jsutils/devAssert.js\"));\n\nvar _instanceOf = _interopRequireDefault(require(\"../jsutils/instanceOf.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nvar Source = /*#__PURE__*/function () {\n function Source(body) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n line: 1,\n column: 1\n };\n typeof body === 'string' || (0, _devAssert.default)(0, \"Body must be a string. Received: \".concat((0, _inspect.default)(body), \".\"));\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 || (0, _devAssert.default)(0, 'line in locationOffset is 1-indexed and must be positive.');\n this.locationOffset.column > 0 || (0, _devAssert.default)(0, 'column in locationOffset is 1-indexed and must be positive.');\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n\n _createClass(Source, [{\n key: _symbols.SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Source';\n }\n }]);\n\n return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n\nexports.Source = Source;\n\n// eslint-disable-next-line no-redeclare\nfunction isSource(source) {\n return (0, _instanceOf.default)(source, Source);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TokenKind = void 0;\n\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n\nexports.TokenKind = TokenKind;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.visit = visit;\nexports.visitInParallel = visitInParallel;\nexports.getVisitFn = getVisitFn;\nexports.BREAK = exports.QueryDocumentKeys = void 0;\n\nvar _inspect = _interopRequireDefault(require(\"../jsutils/inspect.js\"));\n\nvar _ast = require(\"./ast.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexports.QueryDocumentKeys = QueryDocumentKeys;\nvar BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexports.BREAK = BREAK;\n\nfunction visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!(0, _ast.isNode)(node)) {\n throw new Error(\"Invalid AST Node: \".concat((0, _inspect.default)(node), \".\"));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if ((0, _ast.isNode)(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _visitorKeys$node$kin;\n\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\n\nfunction visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\n\nfunction getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SYMBOL_TO_STRING_TAG = exports.SYMBOL_ASYNC_ITERATOR = exports.SYMBOL_ITERATOR = void 0;\n// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexports.SYMBOL_ITERATOR = SYMBOL_ITERATOR;\nvar SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexports.SYMBOL_ASYNC_ITERATOR = SYMBOL_ASYNC_ITERATOR;\nvar SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';\nexports.SYMBOL_TO_STRING_TAG = SYMBOL_TO_STRING_TAG;\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict'\n\nvar COMPATIBLE_ENCODING_PATTERN = /^utf-?8|ascii|utf-?16-?le|ucs-?2|base-?64|latin-?1$/i\nvar WS_TRIM_PATTERN = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g\nvar WS_CHAR_PATTERN = /\\s|\\uFEFF|\\xA0/\nvar WS_FOLD_PATTERN = /\\r?\\n[\\x20\\x09]+/g\nvar DELIMITER_PATTERN = /[;,\"]/\nvar WS_DELIMITER_PATTERN = /[;,\"]|\\s/\n\n/**\n * Token character pattern\n * @type {RegExp}\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nvar TOKEN_PATTERN = /^[!#$%&'*+\\-\\.^_`|~\\da-zA-Z]+$/\n\nvar STATE = {\n IDLE: 1 << 0,\n URI: 1 << 1,\n ATTR: 1 << 2,\n}\n\nfunction trim( value ) {\n return value.replace( WS_TRIM_PATTERN, '' )\n}\n\nfunction hasWhitespace( value ) {\n return WS_CHAR_PATTERN.test( value )\n}\n\nfunction skipWhitespace( value, offset ) {\n while( hasWhitespace( value[offset] ) ) {\n offset++\n }\n return offset\n}\n\nfunction needsQuotes( value ) {\n return WS_DELIMITER_PATTERN.test( value ) ||\n !TOKEN_PATTERN.test( value )\n}\n\n/**\n * Shallow compares two objects to check if their properties match.\n * @param {object} object1 First object to compare.\n * @param {object} object2 Second object to compare.\n * @returns {boolean} Do the objects have matching properties.\n */\nfunction shallowCompareObjects( object1, object2 ) {\n return (\n Object.keys( object1 ).length === Object.keys( object2 ).length &&\n Object.keys( object1 ).every(\n ( key ) => key in object2 && object1[ key ] === object2[ key ]\n )\n );\n}\n\nclass Link {\n\n /**\n * Link\n * @constructor\n * @param {String} [value]\n * @returns {Link}\n */\n constructor( value ) {\n\n /** @type {Array} URI references */\n this.refs = []\n\n if( value ) {\n this.parse( value )\n }\n\n }\n\n /**\n * Get refs with given relation type\n * @param {String} value\n * @returns {Array}\n */\n rel( value ) {\n\n var links = []\n var type = value.toLowerCase()\n\n for( var i = 0; i < this.refs.length; i++ ) {\n if( typeof this.refs[ i ].rel === 'string' && this.refs[ i ].rel.toLowerCase() === type ) {\n links.push( this.refs[ i ] )\n }\n }\n\n return links\n\n }\n\n /**\n * Get refs where given attribute has a given value\n * @param {String} attr\n * @param {String} value\n * @returns {Array}\n */\n get( attr, value ) {\n\n attr = attr.toLowerCase()\n value = value.toLowerCase()\n\n var links = []\n\n for( var i = 0; i < this.refs.length; i++ ) {\n if( typeof this.refs[ i ][ attr ] === 'string' && this.refs[ i ][ attr ].toLowerCase() === value ) {\n links.push( this.refs[ i ] )\n }\n }\n\n return links\n\n }\n\n /** Sets a reference. */\n set( link ) {\n this.refs.push( link )\n return this\n }\n\n /**\n * Sets a reference if a reference with similar properties isn’t already set.\n */\n setUnique( link ) {\n\n if( !this.refs.some(( ref ) => shallowCompareObjects( ref, link )) ) {\n this.refs.push( link )\n }\n\n return this\n\n }\n\n has( attr, value ) {\n\n attr = attr.toLowerCase()\n value = value.toLowerCase()\n\n for( var i = 0; i < this.refs.length; i++ ) {\n if( typeof this.refs[ i ][ attr ] === 'string' && this.refs[ i ][ attr ].toLowerCase() === value ) {\n return true\n }\n }\n\n return false\n\n }\n\n parse( value, offset ) {\n\n offset = offset || 0\n value = offset ? value.slice( offset ) : value\n\n // Trim & unfold folded lines\n value = trim( value ).replace( WS_FOLD_PATTERN, '' )\n\n var state = STATE.IDLE\n var length = value.length\n var offset = 0\n var ref = null\n\n while( offset < length ) {\n if( state === STATE.IDLE ) {\n if( hasWhitespace( value[offset] ) ) {\n offset++\n continue\n } else if( value[offset] === '<' ) {\n if( ref != null ) {\n ref.rel != null ?\n this.refs.push( ...Link.expandRelations( ref ) ) :\n this.refs.push( ref )\n }\n var end = value.indexOf( '>', offset )\n if( end === -1 ) throw new Error( 'Expected end of URI delimiter at offset ' + offset )\n ref = { uri: value.slice( offset + 1, end ) }\n // this.refs.push( ref )\n offset = end\n state = STATE.URI\n } else {\n throw new Error( 'Unexpected character \"' + value[offset] + '\" at offset ' + offset )\n }\n offset++\n } else if( state === STATE.URI ) {\n if( hasWhitespace( value[offset] ) ) {\n offset++\n continue\n } else if( value[offset] === ';' ) {\n state = STATE.ATTR\n offset++\n } else if( value[offset] === ',' ) {\n state = STATE.IDLE\n offset++\n } else {\n throw new Error( 'Unexpected character \"' + value[offset] + '\" at offset ' + offset )\n }\n } else if( state === STATE.ATTR ) {\n if( value[offset] ===';' || hasWhitespace( value[offset] ) ) {\n offset++\n continue\n }\n var end = value.indexOf( '=', offset )\n if( end === -1 ) end = value.indexOf( ';', offset )\n if( end === -1 ) end = value.length\n var attr = trim( value.slice( offset, end ) ).toLowerCase()\n var attrValue = ''\n offset = end + 1\n offset = skipWhitespace( value, offset )\n if( value[offset] === '\"' ) {\n offset++\n while( offset < length ) {\n if( value[offset] === '\"' ) {\n offset++; break\n }\n if( value[offset] === '\\\\' ) {\n offset++\n }\n attrValue += value[offset]\n offset++\n }\n } else {\n var end = offset + 1\n while( !DELIMITER_PATTERN.test( value[end] ) && end < length ) {\n end++\n }\n attrValue = value.slice( offset, end )\n offset = end\n }\n if( ref[ attr ] && Link.isSingleOccurenceAttr( attr ) ) {\n // Ignore multiples of attributes which may only appear once\n } else if( attr[ attr.length - 1 ] === '*' ) {\n ref[ attr ] = Link.parseExtendedValue( attrValue )\n } else {\n attrValue = attr === 'type' ?\n attrValue.toLowerCase() : attrValue\n if( ref[ attr ] != null ) {\n if( Array.isArray( ref[ attr ] ) ) {\n ref[ attr ].push( attrValue )\n } else {\n ref[ attr ] = [ ref[ attr ], attrValue ]\n }\n } else {\n ref[ attr ] = attrValue\n }\n }\n switch( value[offset] ) {\n case ',': state = STATE.IDLE; break\n case ';': state = STATE.ATTR; break\n }\n offset++\n } else {\n throw new Error( 'Unknown parser state \"' + state + '\"' )\n }\n }\n\n if( ref != null ) {\n ref.rel != null ?\n this.refs.push( ...Link.expandRelations( ref ) ) :\n this.refs.push( ref )\n }\n\n ref = null\n\n return this\n\n }\n\n toString() {\n\n var refs = []\n var link = ''\n var ref = null\n\n for( var i = 0; i < this.refs.length; i++ ) {\n ref = this.refs[i]\n link = Object.keys( this.refs[i] ).reduce( function( link, attr ) {\n if( attr === 'uri' ) return link\n return link + '; ' + Link.formatAttribute( attr, ref[ attr ] )\n }, '<' + ref.uri + '>' )\n refs.push( link )\n }\n\n return refs.join( ', ' )\n\n }\n\n}\n\n/**\n * Determines whether an encoding can be\n * natively handled with a `Buffer`\n * @param {String} value\n * @returns {Boolean}\n */\nLink.isCompatibleEncoding = function( value ) {\n return COMPATIBLE_ENCODING_PATTERN.test( value )\n}\n\nLink.parse = function( value, offset ) {\n return new Link().parse( value, offset )\n}\n\nLink.isSingleOccurenceAttr = function( attr ) {\n return attr === 'rel' || attr === 'type' || attr === 'media' ||\n attr === 'title' || attr === 'title*'\n}\n\nLink.isTokenAttr = function( attr ) {\n return attr === 'rel' || attr === 'type' || attr === 'anchor'\n}\n\nLink.escapeQuotes = function( value ) {\n return value.replace( /\"/g, '\\\\\"' )\n}\n\nLink.expandRelations = function( ref ) {\n var rels = ref.rel.split( ' ' )\n return rels.map( function( rel ) {\n var value = Object.assign( {}, ref )\n value.rel = rel\n return value\n })\n}\n\n/**\n * Parses an extended value and attempts to decode it\n * @internal\n * @param {String} value\n * @return {Object}\n */\nLink.parseExtendedValue = function( value ) {\n var parts = /([^']+)?(?:'([^']*)')?(.+)/.exec( value )\n return {\n language: parts[2].toLowerCase(),\n encoding: Link.isCompatibleEncoding( parts[1] ) ?\n null : parts[1].toLowerCase(),\n value: Link.isCompatibleEncoding( parts[1] ) ?\n decodeURIComponent( parts[3] ) : parts[3]\n }\n}\n\n/**\n * Format a given extended attribute and it's value\n * @param {String} attr\n * @param {Object} data\n * @return {String}\n */\nLink.formatExtendedAttribute = function( attr, data ) {\n\n var encoding = ( data.encoding || 'utf-8' ).toUpperCase()\n var language = data.language || 'en'\n\n var encodedValue = ''\n\n if( Buffer.isBuffer( data.value ) && Link.isCompatibleEncoding( encoding ) ) {\n encodedValue = data.value.toString( encoding )\n } else if( Buffer.isBuffer( data.value ) ) {\n encodedValue = data.value.toString( 'hex' )\n .replace( /[0-9a-f]{2}/gi, '%$1' )\n } else {\n encodedValue = encodeURIComponent( data.value )\n }\n\n return attr + '=' + encoding + '\\'' +\n language + '\\'' + encodedValue\n\n}\n\n/**\n * Format a given attribute and it's value\n * @param {String} attr\n * @param {String|Object} value\n * @return {String}\n */\nLink.formatAttribute = function( attr, value ) {\n\n if( Array.isArray( value ) ) {\n return value.map(( item ) => {\n return Link.formatAttribute( attr, item )\n }).join( '; ' )\n }\n\n if( attr[ attr.length - 1 ] === '*' || typeof value !== 'string' ) {\n return Link.formatExtendedAttribute( attr, value )\n }\n\n if( Link.isTokenAttr( attr ) ) {\n value = needsQuotes( value ) ?\n '\"' + Link.escapeQuotes( value ) + '\"' :\n Link.escapeQuotes( value )\n } else if( needsQuotes( value ) ) {\n value = encodeURIComponent( value )\n // We don't need to escape <,> <;> within quotes\n value = value\n .replace( /%20/g, ' ' )\n .replace( /%2C/g, ',' )\n .replace( /%3B/g, ';' )\n\n value = '\"' + value + '\"'\n }\n\n return attr + '=' + value\n\n}\n\nmodule.exports = Link\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/**\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n return { value: false };\n}\n\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n}\n\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\n\nIterator.prototype.toString = function toString () {\n return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n}\n\nfunction iteratorDone() {\n return { value: undefined, done: true };\n}\n\nfunction hasIterator(maybeIterable) {\n if (Array.isArray(maybeIterable)) {\n // IE11 trick as it does not support `Symbol.iterator`\n return true;\n }\n\n return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nfunction isEntriesIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.entries;\n}\n\nfunction isKeysIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.keys;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n}\n\nvar Seq = /*@__PURE__*/(function (Collection) {\n function Seq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection ) Seq.__proto__ = Collection;\n Seq.prototype = Object.create( Collection && Collection.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === undefined || value === null\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (\n isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object).concat(\n Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []\n );\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n}\n\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n}\n\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return isEntriesIterable(value)\n ? seq.fromEntrySeq()\n : isKeysIterable(value)\n ? seq.toSetSeq()\n : seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n}\n\nvar imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n if (o == null) {\n return hashNullish(o);\n }\n\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n\n var v = valueOf(o);\n\n if (v == null) {\n return hashNullish(v);\n }\n\n switch (typeof v) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return v ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(v);\n case 'string':\n return v.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(v)\n : hashString(v);\n case 'object':\n case 'function':\n return hashJSObj(v);\n case 'symbol':\n return hashSymbol(v);\n default:\n if (typeof v.toString === 'function') {\n return hashString(v.toString());\n }\n throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n }\n}\n\nfunction hashNullish(nullish) {\n return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n}\n\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n}\n\nfunction hashSymbol(sym) {\n var hashed = symbolMap[sym];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = nextHash();\n\n symbolMap[sym] = hashed;\n\n return hashed;\n}\n\nfunction hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = nextHash();\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function () {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = (function () {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n}\n\nfunction valueOf(obj) {\n return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'\n ? obj.valueOf(obj)\n : obj;\n}\n\nfunction nextHash() {\n var nextHash = ++_objHashUID;\n if (_objHashUID & 0x40000000) {\n _objHashUID = 0;\n }\n return nextHash;\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\n\nvar symbolMap = Object.create(null);\n\nvar _objHashUID = 0;\n\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;\n ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;\n ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;\n ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;\n FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function () {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function (type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n var this$1$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction partitionFactory(collection, predicate, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = [[], []];\n collection.__iterate(function (v, k) {\n groups[predicate.call(context, v, k, collection) ? 1 : 0].push(\n isKeyedIter ? [k, v] : v\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); });\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function (type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&\n fn(v, iterations++, this$1$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries\n .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })\n .forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function (fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function (type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(\n null,\n steps.map(function (s) { return s.value; })\n )\n );\n });\n };\n return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\n\nfunction collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n}\n\nfunction makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n}\n\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n}\n\nfunction invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n}\n\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isPlainObject(value) {\n // The base prototype's toString deals with Argument objects and native namespaces like Math\n if (\n !value ||\n typeof value !== 'object' ||\n toString.call(value) !== '[object Object]'\n ) {\n return false;\n }\n\n var proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n\n // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n var parentProto = proto;\n var nextProto = Object.getPrototypeOf(proto);\n while (nextProto !== null) {\n parentProto = nextProto;\n nextProto = Object.getPrototypeOf(parentProto);\n }\n return parentProto === proto;\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObject(value))\n );\n}\n\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\n\nfunction has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n}\n\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n}\n\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\n\nfunction updateIn$1(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n}\n\nfunction setIn$1(collection, keyPath, value) {\n return updateIn$1(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn(keyPath, v) {\n return setIn$1(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n return updateIn$1(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\n\nfunction update$1(collection, key, notSetValue, updater) {\n return updateIn$1(collection, [key], notSetValue, updater);\n}\n\nfunction update(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update$1(this, key, notSetValue, updater);\n}\n\nfunction updateIn(keyPath, notSetValue, updater) {\n return updateIn$1(this, keyPath, notSetValue, updater);\n}\n\nfunction merge$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\n\nfunction merge(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection(sources[i]).forEach(mergeItem);\n }\n return merged;\n}\n\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) &&\n isDataStructure(newValue) &&\n areMergeable(oldValue, newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n}\n\n/**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\nfunction areMergeable(oldDataStructure, newDataStructure) {\n var oldSeq = Seq(oldDataStructure);\n var newSeq = Seq(newDataStructure);\n // This logic assumes that a sequence can only fall into one of the three\n // categories mentioned above (since there's no `isSetLike()` method).\n return (\n isIndexed(oldSeq) === isIndexed(newSeq) &&\n isKeyed(oldSeq) === isKeyed(newSeq)\n );\n}\n\nfunction mergeDeep() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\nfunction mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n}\n\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n return this.__altered;\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection) {\n function Map(value) {\n return value === undefined || value === null\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection ) Map.__proto__ = KeyedCollection;\n Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, this$1$1));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update;\nMapPrototype.updateIn = updateIn;\nMapPrototype.merge = MapPrototype.concat = merge$1;\nMapPrototype.mergeWith = mergeWith$1;\nMapPrototype.mergeDeep = mergeDeep;\nMapPrototype.mergeDeepWith = mergeDeepWith;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function (result, arr) {\n return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =\n function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n };\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =\n function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n };\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator ) MapIterator.__proto__ = Iterator;\n MapIterator.prototype = Object.create( Iterator && Iterator.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n}\n\nfunction makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n}\n\nfunction isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection) {\n function List(value) {\n var empty = emptyList();\n if (value === undefined || value === null) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection ) List.__proto__ = IndexedCollection;\n List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update;\nListPrototype.updateIn = updateIn;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function (result, arr) {\n return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\n\nvar EMPTY_LIST;\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n}\n\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map) {\n function OrderedMap(value) {\n return value === undefined || value === null\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map ) OrderedMap.__proto__ = Map;\n OrderedMap.prototype = Object.create( Map && Map.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n this.__altered = true;\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n omap.__altered = false;\n return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n omap.__altered = true;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection) {\n function Stack(value) {\n return value === undefined || value === null\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;\n Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function (result, arr) {\n return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n}\n\nfunction mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\n\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection) {\n function Set(value) {\n return value === undefined || value === null\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection ) Set.__proto__ = SetCollection;\n Set.prototype = Object.create( SetCollection && SetCollection.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n // keep track if the set is altered by the map function\n var didChanges = false;\n\n var newMap = updateSet(\n this,\n this._map.mapEntries(function (ref) {\n var v = ref[1];\n\n var mapped = mapper.call(context, v, v, this$1$1);\n\n if (mapped !== v) {\n didChanges = true;\n }\n\n return [mapped, mapped];\n }, context)\n );\n\n return didChanges ? newMap : this;\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n if (typeof iters[ii] === 'string') {\n set.add(iters[ii]);\n } else {\n SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function (result, arr) {\n return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq ) Range.__proto__ = IndexedSeq;\n Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nfunction getIn$1(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n}\n\nfunction getIn(searchKeyPath, notSetValue) {\n return getIn$1(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn$1(collection, keyPath) {\n return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn(searchKeyPath) {\n return hasIn$1(this, searchKeyPath);\n}\n\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq().map(this.__toStringMapper).join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n partition: function partition(predicate, context) {\n return partitionFactory(this, predicate, context);\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = false;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n returnValue = true;\n return false;\n }\n });\n return returnValue;\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq().reverse().first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })\n .flip()\n );\n },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n this.size === Infinity ||\n (this.size !== undefined && index > this.size)\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n});\n\nvar SetCollectionPrototype = SetCollection.prototype;\nSetCollectionPrototype.has = CollectionPrototype.includes;\nSetCollectionPrototype.contains = SetCollectionPrototype.includes;\nSetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollectionPrototype);\nmixin(IndexedSeq, IndexedCollectionPrototype);\nmixin(SetSeq, SetCollectionPrototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n}\n\nfunction keyMapper(v, k) {\n return k;\n}\n\nfunction entryMapper(v, k) {\n return [k, v];\n}\n\nfunction not(predicate) {\n return function () {\n return !predicate.apply(this, arguments);\n };\n}\n\nfunction neg(predicate) {\n return function () {\n return -predicate.apply(this, arguments);\n };\n}\n\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n}\n\nfunction hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set) {\n function OrderedSet(value) {\n return value === undefined || value === null\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set ) OrderedSet.__proto__ = Set;\n OrderedSet.prototype = Object.create( Set && Set.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n}\n\nvar PairSorting = {\n LeftThenRight: -1,\n RightThenLeft: +1,\n};\n\nfunction throwOnInvalidDefaultValues(defaultValues) {\n if (isRecord(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'\n );\n }\n\n if (isImmutable(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'\n );\n }\n\n if (defaultValues === null || typeof defaultValues !== 'object') {\n throw new Error(\n 'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'\n );\n }\n}\n\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n throwOnInvalidDefaultValues(defaultValues);\n\n var RecordType = function Record(values) {\n var this$1$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n });\n });\n return this;\n };\n\n var RecordTypePrototype = (RecordType.prototype =\n Object.create(RecordPrototype));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n return (\n this === other ||\n (isRecord(other) && recordSeq(this).equals(recordSeq(other)))\n );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge$1;\nRecordPrototype.mergeWith = mergeWith$1;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep;\nRecordPrototype.mergeDeepWith = mergeDeepWith;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn;\nRecordPrototype.update = update;\nRecordPrototype.updateIn = updateIn;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\n\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function () {\n return this.get(name);\n },\n set: function (value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;\n Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n if (\n typeof value !== 'string' &&\n !isImmutable(value) &&\n (isArrayLike(value) || hasIterator(value) || isPlainObject(value))\n ) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n}\n\nfunction defaultConverter(k, v) {\n // Effectively the opposite of \"Collection.toSeq()\"\n return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n}\n\nvar version = \"4.3.5\";\n\nvar Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n PairSorting: PairSorting,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isPlainObject: isPlainObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn$1,\n has: has,\n hasIn: hasIn$1,\n merge: merge,\n mergeDeep: mergeDeep$1,\n mergeWith: mergeWith,\n mergeDeepWith: mergeDeepWith$1,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn$1,\n update: update$1,\n updateIn: updateIn$1,\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport default Immutable;\nexport { Collection, Iterable, List, Map, OrderedMap, OrderedSet, PairSorting, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn$1 as getIn, has, hasIn$1 as hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep$1 as mergeDeep, mergeDeepWith$1 as mergeDeepWith, mergeWith, remove, removeIn, set, setIn$1 as setIn, update$1 as update, updateIn$1 as updateIn, version };\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/ContextParser\"), exports);\n__exportStar(require(\"./lib/ErrorCoded\"), exports);\n__exportStar(require(\"./lib/FetchDocumentLoader\"), exports);\n__exportStar(require(\"./lib/IDocumentLoader\"), exports);\n__exportStar(require(\"./lib/JsonLdContext\"), exports);\n__exportStar(require(\"./lib/JsonLdContextNormalized\"), exports);\n__exportStar(require(\"./lib/Util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextParser = void 0;\nrequire(\"cross-fetch/polyfill\");\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\nconst ErrorCoded_1 = require(\"./ErrorCoded\");\nconst FetchDocumentLoader_1 = require(\"./FetchDocumentLoader\");\nconst JsonLdContextNormalized_1 = require(\"./JsonLdContextNormalized\");\nconst Util_1 = require(\"./Util\");\n/**\n * Parses JSON-LD contexts.\n */\nclass ContextParser {\n constructor(options) {\n options = options || {};\n this.documentLoader = options.documentLoader || new FetchDocumentLoader_1.FetchDocumentLoader();\n this.documentCache = {};\n this.validateContext = !options.skipValidation;\n this.expandContentTypeToBase = !!options.expandContentTypeToBase;\n this.remoteContextsDepthLimit = options.remoteContextsDepthLimit || 32;\n this.redirectSchemaOrgHttps = 'redirectSchemaOrgHttps' in options ? !!options.redirectSchemaOrgHttps : true;\n }\n /**\n * Validate the given @language value.\n * An error will be thrown if it is invalid.\n * @param value An @language value.\n * @param {boolean} strictRange If the string value should be strictly checked against a regex.\n * @param {string} errorCode The error code to emit on errors.\n * @return {boolean} If validation passed.\n * Can only be false if strictRange is false and the string value did not pass the regex.\n */\n static validateLanguage(value, strictRange, errorCode) {\n if (typeof value !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@language' must be a string, got '${JSON.stringify(value)}'`, errorCode);\n }\n if (!Util_1.Util.REGEX_LANGUAGE_TAG.test(value)) {\n if (strictRange) {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@language' must be a valid language tag, got '${JSON.stringify(value)}'`, errorCode);\n }\n else {\n return false;\n }\n }\n return true;\n }\n /**\n * Validate the given @direction value.\n * An error will be thrown if it is invalid.\n * @param value An @direction value.\n * @param {boolean} strictValues If the string value should be strictly checked against a regex.\n * @return {boolean} If validation passed.\n * Can only be false if strictRange is false and the string value did not pass the regex.\n */\n static validateDirection(value, strictValues) {\n if (typeof value !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@direction' must be a string, got '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_BASE_DIRECTION);\n }\n if (!Util_1.Util.REGEX_DIRECTION_TAG.test(value)) {\n if (strictValues) {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@direction' must be 'ltr' or 'rtl', got '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_BASE_DIRECTION);\n }\n else {\n return false;\n }\n }\n return true;\n }\n /**\n * Add an @id term for all @reverse terms.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @return {IJsonLdContextNormalizedRaw} The mutated input context.\n */\n idifyReverseTerms(context) {\n for (const key of Object.keys(context)) {\n let value = context[key];\n if (value && typeof value === 'object') {\n if (value['@reverse'] && !value['@id']) {\n if (typeof value['@reverse'] !== 'string' || Util_1.Util.isValidKeyword(value['@reverse'])) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid @reverse value, must be absolute IRI or blank node: '${value['@reverse']}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n value = context[key] = Object.assign(Object.assign({}, value), { '@id': value['@reverse'] });\n value['@id'] = value['@reverse'];\n if (Util_1.Util.isPotentialKeyword(value['@reverse'])) {\n delete value['@reverse'];\n }\n else {\n value['@reverse'] = true;\n }\n }\n }\n }\n return context;\n }\n /**\n * Expand all prefixed terms in the given context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {boolean} expandContentTypeToBase If @type inside the context may be expanded\n * via @base if @vocab is set to null.\n * @param {string[]} keys Optional set of keys from the context to expand. If left undefined, all\n * keys in the context will be expanded.\n */\n expandPrefixedTerms(context, expandContentTypeToBase, keys) {\n const contextRaw = context.getContextRaw();\n for (const key of (keys || Object.keys(contextRaw))) {\n // Only expand allowed keys\n if (Util_1.Util.EXPAND_KEYS_BLACKLIST.indexOf(key) < 0 && !Util_1.Util.isReservedInternalKeyword(key)) {\n // Error if we try to alias a keyword to something else.\n const keyValue = contextRaw[key];\n if (Util_1.Util.isPotentialKeyword(key) && Util_1.Util.ALIAS_DOMAIN_BLACKLIST.indexOf(key) >= 0) {\n if (key !== '@type' || typeof contextRaw[key] === 'object'\n && !(contextRaw[key]['@protected'] || contextRaw[key]['@container'] === '@set')) {\n throw new ErrorCoded_1.ErrorCoded(`Keywords can not be aliased to something else.\nTried mapping ${key} to ${JSON.stringify(keyValue)}`, ErrorCoded_1.ERROR_CODES.KEYWORD_REDEFINITION);\n }\n }\n // Error if we try to alias to an illegal keyword\n if (Util_1.Util.ALIAS_RANGE_BLACKLIST.indexOf(Util_1.Util.getContextValueId(keyValue)) >= 0) {\n throw new ErrorCoded_1.ErrorCoded(`Aliasing to certain keywords is not allowed.\nTried mapping ${key} to ${JSON.stringify(keyValue)}`, ErrorCoded_1.ERROR_CODES.INVALID_KEYWORD_ALIAS);\n }\n // Error if this term was marked as prefix as well\n if (keyValue && Util_1.Util.isPotentialKeyword(Util_1.Util.getContextValueId(keyValue))\n && keyValue['@prefix'] === true) {\n throw new ErrorCoded_1.ErrorCoded(`Tried to use keyword aliases as prefix: '${key}': '${JSON.stringify(keyValue)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n // Loop because prefixes might be nested\n while (Util_1.Util.isPrefixValue(contextRaw[key])) {\n const value = contextRaw[key];\n let changed = false;\n if (typeof value === 'string') {\n contextRaw[key] = context.expandTerm(value, true);\n changed = changed || value !== contextRaw[key];\n }\n else {\n const id = value['@id'];\n const type = value['@type'];\n // If @id is missing, don't allow @id to be added if @prefix: true and key not being a valid IRI.\n const canAddIdEntry = !('@prefix' in value) || Util_1.Util.isValidIri(key);\n if ('@id' in value) {\n // Use @id value for expansion\n if (id !== undefined && id !== null && typeof id === 'string') {\n contextRaw[key] = Object.assign(Object.assign({}, contextRaw[key]), { '@id': context.expandTerm(id, true) });\n changed = changed || id !== contextRaw[key]['@id'];\n }\n }\n else if (!Util_1.Util.isPotentialKeyword(key) && canAddIdEntry) {\n // Add an explicit @id value based on the expanded key value\n const newId = context.expandTerm(key, true);\n if (newId !== key) {\n // Don't set @id if expansion failed\n contextRaw[key] = Object.assign(Object.assign({}, contextRaw[key]), { '@id': newId });\n changed = true;\n }\n }\n if (type && typeof type === 'string' && type !== '@vocab'\n && (!value['@container'] || !value['@container']['@type'])\n && canAddIdEntry) {\n // First check @vocab, then fallback to @base\n let expandedType = context.expandTerm(type, true);\n if (expandContentTypeToBase && type === expandedType) {\n expandedType = context.expandTerm(type, false);\n }\n if (expandedType !== type) {\n changed = true;\n contextRaw[key] = Object.assign(Object.assign({}, contextRaw[key]), { '@type': expandedType });\n }\n }\n }\n if (!changed) {\n break;\n }\n }\n }\n }\n }\n /**\n * Normalize the @language entries in the given context to lowercase.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {IParseOptions} parseOptions The parsing options.\n */\n normalize(context, { processingMode, normalizeLanguageTags }) {\n // Lowercase language keys in 1.0\n if (normalizeLanguageTags || processingMode === 1.0) {\n for (const key of Object.keys(context)) {\n if (key === '@language' && typeof context[key] === 'string') {\n context[key] = context[key].toLowerCase();\n }\n else {\n const value = context[key];\n if (value && typeof value === 'object') {\n if (typeof value['@language'] === 'string') {\n const lowercase = value['@language'].toLowerCase();\n if (lowercase !== value['@language']) {\n context[key] = Object.assign(Object.assign({}, value), { '@language': lowercase });\n }\n }\n }\n }\n }\n }\n }\n /**\n * Convert all @container strings and array values to hash-based values.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n */\n containersToHash(context) {\n for (const key of Object.keys(context)) {\n const value = context[key];\n if (value && typeof value === 'object') {\n if (typeof value['@container'] === 'string') {\n context[key] = Object.assign(Object.assign({}, value), { '@container': { [value['@container']]: true } });\n }\n else if (Array.isArray(value['@container'])) {\n const newValue = {};\n for (const containerValue of value['@container']) {\n newValue[containerValue] = true;\n }\n context[key] = Object.assign(Object.assign({}, value), { '@container': newValue });\n }\n }\n }\n }\n /**\n * Normalize and apply context-level @protected terms onto each term separately.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {number} processingMode The processing mode.\n */\n applyScopedProtected(context, { processingMode }, expandOptions) {\n if (processingMode && processingMode >= 1.1) {\n if (context['@protected']) {\n for (const key of Object.keys(context)) {\n if (Util_1.Util.isReservedInternalKeyword(key)) {\n continue;\n }\n if (!Util_1.Util.isPotentialKeyword(key) && !Util_1.Util.isTermProtected(context, key)) {\n const value = context[key];\n if (value && typeof value === 'object') {\n if (!('@protected' in context[key])) {\n // Mark terms with object values as protected if they don't have an @protected: false annotation\n context[key] = Object.assign(Object.assign({}, context[key]), { '@protected': true });\n }\n }\n else {\n // Convert string-based term values to object-based values with @protected: true\n context[key] = {\n '@id': value,\n '@protected': true,\n };\n if (Util_1.Util.isSimpleTermDefinitionPrefix(value, expandOptions)) {\n context[key] = Object.assign(Object.assign({}, context[key]), { '@prefix': true });\n }\n }\n }\n }\n delete context['@protected'];\n }\n }\n }\n /**\n * Check if the given context inheritance does not contain any overrides of protected terms.\n * @param {IJsonLdContextNormalizedRaw} contextBefore The context that may contain some protected terms.\n * @param {IJsonLdContextNormalizedRaw} contextAfter A new context that is being applied on the first one.\n * @param {IExpandOptions} expandOptions Options that are needed for any expansions during this validation.\n * @param {string[]} keys Optional set of keys from the context to validate. If left undefined, all\n * keys defined in contextAfter will be checked.\n */\n validateKeywordRedefinitions(contextBefore, contextAfter, expandOptions, keys) {\n for (const key of (keys !== null && keys !== void 0 ? keys : Object.keys(contextAfter))) {\n if (Util_1.Util.isTermProtected(contextBefore, key)) {\n // The entry in the context before will always be in object-mode\n // If the new entry is in string-mode, convert it to object-mode\n // before checking if it is identical.\n if (typeof contextAfter[key] === 'string') {\n contextAfter[key] = { '@id': contextAfter[key], '@protected': true };\n }\n else {\n // We modify this deliberately,\n // as we need it for the value comparison (they must be identical modulo '@protected')),\n // and for the fact that this new value will override the first one.\n contextAfter[key] = Object.assign(Object.assign({}, contextAfter[key]), { '@protected': true });\n }\n // Error if they are not identical\n if (!Util_1.Util.deepEqual(contextBefore[key], contextAfter[key])) {\n throw new ErrorCoded_1.ErrorCoded(`Attempted to override the protected keyword ${key} from ${JSON.stringify(Util_1.Util.getContextValueId(contextBefore[key]))} to ${JSON.stringify(Util_1.Util.getContextValueId(contextAfter[key]))}`, ErrorCoded_1.ERROR_CODES.PROTECTED_TERM_REDEFINITION);\n }\n }\n }\n }\n /**\n * Validate the entries of the given context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {IParseOptions} options The parse options.\n */\n validate(context, { processingMode }) {\n for (const key of Object.keys(context)) {\n // Ignore reserved internal keywords.\n if (Util_1.Util.isReservedInternalKeyword(key)) {\n continue;\n }\n // Do not allow empty term\n if (key === '') {\n throw new ErrorCoded_1.ErrorCoded(`The empty term is not allowed, got: '${key}': '${JSON.stringify(context[key])}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n const value = context[key];\n const valueType = typeof value;\n // First check if the key is a keyword\n if (Util_1.Util.isPotentialKeyword(key)) {\n switch (key.substr(1)) {\n case 'vocab':\n if (value !== null && valueType !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @vocab IRI: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_VOCAB_MAPPING);\n }\n break;\n case 'base':\n if (value !== null && valueType !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @base IRI: ${context[key]}`, ErrorCoded_1.ERROR_CODES.INVALID_BASE_IRI);\n }\n break;\n case 'language':\n if (value !== null) {\n ContextParser.validateLanguage(value, true, ErrorCoded_1.ERROR_CODES.INVALID_DEFAULT_LANGUAGE);\n }\n break;\n case 'version':\n if (value !== null && valueType !== 'number') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @version number: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_VERSION_VALUE);\n }\n break;\n case 'direction':\n if (value !== null) {\n ContextParser.validateDirection(value, true);\n }\n break;\n case 'propagate':\n if (processingMode === 1.0) {\n throw new ErrorCoded_1.ErrorCoded(`Found an illegal @propagate keyword: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_ENTRY);\n }\n if (value !== null && valueType !== 'boolean') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @propagate value: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_PROPAGATE_VALUE);\n }\n break;\n }\n // Don't allow keywords to be overridden\n if (Util_1.Util.isValidKeyword(key) && Util_1.Util.isValidKeyword(Util_1.Util.getContextValueId(value))) {\n throw new ErrorCoded_1.ErrorCoded(`Illegal keyword alias in term value, found: '${key}': '${Util_1.Util\n .getContextValueId(value)}'`, ErrorCoded_1.ERROR_CODES.KEYWORD_REDEFINITION);\n }\n continue;\n }\n // Otherwise, consider the key a term\n if (value !== null) {\n switch (valueType) {\n case 'string':\n if (Util_1.Util.getPrefix(value, context) === key) {\n throw new ErrorCoded_1.ErrorCoded(`Detected cyclical IRI mapping in context entry: '${key}': '${JSON\n .stringify(value)}'`, ErrorCoded_1.ERROR_CODES.CYCLIC_IRI_MAPPING);\n }\n if (Util_1.Util.isValidIriWeak(key)) {\n if (value === '@type') {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to @type, found: '${key}': '${value}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n else if (Util_1.Util.isValidIri(value) && value !== new JsonLdContextNormalized_1.JsonLdContextNormalized(context).expandTerm(key)) {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to other IRIs, found: '${key}': '${value}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n }\n break;\n case 'object':\n if (!Util_1.Util.isCompactIri(key) && !('@id' in value)\n && (value['@type'] === '@id' ? !context['@base'] : !context['@vocab'])) {\n throw new ErrorCoded_1.ErrorCoded(`Missing @id in context entry: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n for (const objectKey of Object.keys(value)) {\n const objectValue = value[objectKey];\n if (!objectValue) {\n continue;\n }\n switch (objectKey) {\n case '@id':\n if (Util_1.Util.isValidKeyword(objectValue)\n && objectValue !== '@type' && objectValue !== '@id' && objectValue !== '@graph' && objectValue !== '@nest') {\n throw new ErrorCoded_1.ErrorCoded(`Illegal keyword alias in term value, found: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n if (Util_1.Util.isValidIriWeak(key)) {\n if (objectValue === '@type') {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to @type, found: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n else if (Util_1.Util.isValidIri(objectValue)\n && objectValue !== new JsonLdContextNormalized_1.JsonLdContextNormalized(context).expandTerm(key)) {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to other IRIs, found: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n }\n if (typeof objectValue !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`Detected non-string @id in context entry: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n if (Util_1.Util.getPrefix(objectValue, context) === key) {\n throw new ErrorCoded_1.ErrorCoded(`Detected cyclical IRI mapping in context entry: '${key}': '${JSON\n .stringify(value)}'`, ErrorCoded_1.ERROR_CODES.CYCLIC_IRI_MAPPING);\n }\n break;\n case '@type':\n if (value['@container'] === '@type' && objectValue !== '@id' && objectValue !== '@vocab') {\n throw new ErrorCoded_1.ErrorCoded(`@container: @type only allows @type: @id or @vocab, but got: '${key}': '${objectValue}'`, ErrorCoded_1.ERROR_CODES.INVALID_TYPE_MAPPING);\n }\n if (typeof objectValue !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@type' must be a string, got '${JSON.stringify(valueType)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TYPE_MAPPING);\n }\n if (objectValue !== '@id' && objectValue !== '@vocab'\n && (processingMode === 1.0 || objectValue !== '@json')\n && (processingMode === 1.0 || objectValue !== '@none')\n && (objectValue[0] === '_' || !Util_1.Util.isValidIri(objectValue))) {\n throw new ErrorCoded_1.ErrorCoded(`A context @type must be an absolute IRI, found: '${key}': '${objectValue}'`, ErrorCoded_1.ERROR_CODES.INVALID_TYPE_MAPPING);\n }\n break;\n case '@reverse':\n if (typeof objectValue === 'string' && value['@id'] && value['@id'] !== objectValue) {\n throw new ErrorCoded_1.ErrorCoded(`Found non-matching @id and @reverse term values in '${key}':\\\n'${objectValue}' and '${value['@id']}'`, ErrorCoded_1.ERROR_CODES.INVALID_REVERSE_PROPERTY);\n }\n if ('@nest' in value) {\n throw new ErrorCoded_1.ErrorCoded(`@nest is not allowed in the reverse property '${key}'`, ErrorCoded_1.ERROR_CODES.INVALID_REVERSE_PROPERTY);\n }\n break;\n case '@container':\n if (processingMode === 1.0) {\n if (Object.keys(objectValue).length > 1\n || Util_1.Util.CONTAINERS_1_0.indexOf(Object.keys(objectValue)[0]) < 0) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid term @container for '${key}' ('${Object.keys(objectValue)}') in 1.0, \\\nmust be only one of ${Util_1.Util.CONTAINERS_1_0.join(', ')}`, ErrorCoded_1.ERROR_CODES.INVALID_CONTAINER_MAPPING);\n }\n }\n for (const containerValue of Object.keys(objectValue)) {\n if (containerValue === '@list' && value['@reverse']) {\n throw new ErrorCoded_1.ErrorCoded(`Term value can not be @container: @list and @reverse at the same time on '${key}'`, ErrorCoded_1.ERROR_CODES.INVALID_REVERSE_PROPERTY);\n }\n if (Util_1.Util.CONTAINERS.indexOf(containerValue) < 0) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid term @container for '${key}' ('${containerValue}'), \\\nmust be one of ${Util_1.Util.CONTAINERS.join(', ')}`, ErrorCoded_1.ERROR_CODES.INVALID_CONTAINER_MAPPING);\n }\n }\n break;\n case '@language':\n ContextParser.validateLanguage(objectValue, true, ErrorCoded_1.ERROR_CODES.INVALID_LANGUAGE_MAPPING);\n break;\n case '@direction':\n ContextParser.validateDirection(objectValue, true);\n break;\n case '@prefix':\n if (objectValue !== null && typeof objectValue !== 'boolean') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid term @prefix boolean in: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_PREFIX_VALUE);\n }\n if (!('@id' in value) && !Util_1.Util.isValidIri(key)) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid @prefix definition for '${key}' ('${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n break;\n case '@index':\n if (processingMode === 1.0 || !value['@container'] || !value['@container']['@index']) {\n throw new ErrorCoded_1.ErrorCoded(`Attempt to add illegal key to value object: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n break;\n case '@nest':\n if (Util_1.Util.isPotentialKeyword(objectValue) && objectValue !== '@nest') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid term @nest value in: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_NEST_VALUE);\n }\n }\n }\n break;\n default:\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid term value: '${key}': '${value}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n }\n }\n }\n /**\n * Apply the @base context entry to the given context under certain circumstances.\n * @param context A context.\n * @param options Parsing options.\n * @param inheritFromParent If the @base value from the parent context can be inherited.\n * @return The given context.\n */\n applyBaseEntry(context, options, inheritFromParent) {\n // In some special cases, this can be a string, so ignore those.\n if (typeof context === 'string') {\n return context;\n }\n // Give priority to @base in the parent context\n if (inheritFromParent && !('@base' in context) && options.parentContext\n && typeof options.parentContext === 'object' && '@base' in options.parentContext) {\n context['@base'] = options.parentContext['@base'];\n if (options.parentContext['@__baseDocument']) {\n context['@__baseDocument'] = true;\n }\n }\n // Override the base IRI if provided.\n if (options.baseIRI && !options.external) {\n if (!('@base' in context)) {\n // The context base is the document base\n context['@base'] = options.baseIRI;\n context['@__baseDocument'] = true;\n }\n else if (context['@base'] !== null && typeof context['@base'] === 'string'\n && !Util_1.Util.isValidIri(context['@base'])) {\n // The context base is relative to the document base\n context['@base'] = (0, relative_to_absolute_iri_1.resolve)(context['@base'], options.parentContext && options.parentContext['@base'] || options.baseIRI);\n }\n }\n return context;\n }\n /**\n * Resolve relative context IRIs, or return full IRIs as-is.\n * @param {string} contextIri A context IRI.\n * @param {string} baseIRI A base IRI.\n * @return {string} The normalized context IRI.\n */\n normalizeContextIri(contextIri, baseIRI) {\n if (!Util_1.Util.isValidIri(contextIri)) {\n try {\n contextIri = (0, relative_to_absolute_iri_1.resolve)(contextIri, baseIRI);\n }\n catch (_a) {\n throw new Error(`Invalid context IRI: ${contextIri}`);\n }\n }\n // TODO: Temporary workaround for fixing schema.org CORS issues (https://github.com/schemaorg/schemaorg/issues/2578#issuecomment-652324465)\n if (this.redirectSchemaOrgHttps && contextIri.startsWith('http://schema.org')) {\n contextIri = 'https://schema.org/';\n }\n return contextIri;\n }\n /**\n * Parse scoped contexts in the given context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {IParseOptions} options Parsing options.\n * @return {IJsonLdContextNormalizedRaw} The mutated input context.\n * @param {string[]} keys Optional set of keys from the context to parseInnerContexts of. If left undefined, all\n * keys in the context will be iterated over.\n */\n async parseInnerContexts(context, options, keys) {\n for (const key of (keys !== null && keys !== void 0 ? keys : Object.keys(context))) {\n const value = context[key];\n if (value && typeof value === 'object') {\n if ('@context' in value && value['@context'] !== null && !options.ignoreScopedContexts) {\n // Simulate a processing based on the parent context to check if there are any (potential errors).\n // Honestly, I find it a bit weird to do this here, as the context may be unused,\n // and the final effective context may differ based on any other embedded/scoped contexts.\n // But hey, it's part of the spec, so we have no choice...\n // https://w3c.github.io/json-ld-api/#h-note-10\n if (this.validateContext) {\n try {\n const parentContext = Object.assign(Object.assign({}, context), { [key]: Object.assign({}, context[key]) });\n delete parentContext[key]['@context'];\n await this.parse(value['@context'], Object.assign(Object.assign({}, options), { external: false, parentContext, ignoreProtection: true, ignoreRemoteScopedContexts: true, ignoreScopedContexts: true }));\n }\n catch (e) {\n throw new ErrorCoded_1.ErrorCoded(e.message, ErrorCoded_1.ERROR_CODES.INVALID_SCOPED_CONTEXT);\n }\n }\n context[key] = Object.assign(Object.assign({}, value), { '@context': (await this.parse(value['@context'], Object.assign(Object.assign({}, options), { external: false, minimalProcessing: true, ignoreRemoteScopedContexts: true, parentContext: context })))\n .getContextRaw() });\n }\n }\n }\n return context;\n }\n async parse(context, options = {}, \n // These options are only for internal use on recursive calls and should not be used by\n // libraries consuming this function\n internalOptions = {}) {\n const { baseIRI, parentContext, external, processingMode = ContextParser.DEFAULT_PROCESSING_MODE, normalizeLanguageTags, ignoreProtection, minimalProcessing, } = options;\n const remoteContexts = options.remoteContexts || {};\n // Avoid remote context overflows\n if (Object.keys(remoteContexts).length >= this.remoteContextsDepthLimit) {\n throw new ErrorCoded_1.ErrorCoded('Detected an overflow in remote context inclusions: ' + Object.keys(remoteContexts), ErrorCoded_1.ERROR_CODES.CONTEXT_OVERFLOW);\n }\n if (context === null || context === undefined) {\n // Don't allow context nullification and there are protected terms\n if (!ignoreProtection && parentContext && Util_1.Util.hasProtectedTerms(parentContext)) {\n throw new ErrorCoded_1.ErrorCoded('Illegal context nullification when terms are protected', ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_NULLIFICATION);\n }\n // Context that are explicitly set to null are empty.\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(this.applyBaseEntry({}, options, false));\n }\n else if (typeof context === 'string') {\n const contextIri = this.normalizeContextIri(context, baseIRI);\n const overriddenLoad = this.getOverriddenLoad(contextIri, options);\n if (overriddenLoad) {\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(overriddenLoad);\n }\n const parsedStringContext = await this.parse(await this.load(contextIri), Object.assign(Object.assign({}, options), { baseIRI: contextIri, external: true, remoteContexts: Object.assign(Object.assign({}, remoteContexts), { [contextIri]: true }) }));\n this.applyBaseEntry(parsedStringContext.getContextRaw(), options, true);\n return parsedStringContext;\n }\n else if (Array.isArray(context)) {\n // As a performance consideration, first load all external contexts in parallel.\n const contextIris = [];\n const contexts = await Promise.all(context.map((subContext, i) => {\n if (typeof subContext === 'string') {\n const contextIri = this.normalizeContextIri(subContext, baseIRI);\n contextIris[i] = contextIri;\n const overriddenLoad = this.getOverriddenLoad(contextIri, options);\n if (overriddenLoad) {\n return overriddenLoad;\n }\n return this.load(contextIri);\n }\n else {\n return subContext;\n }\n }));\n // Don't apply inheritance logic on minimal processing\n if (minimalProcessing) {\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(contexts);\n }\n const reducedContexts = await contexts.reduce((accContextPromise, contextEntry, i) => accContextPromise\n .then((accContext) => this.parse(contextEntry, Object.assign(Object.assign({}, options), { baseIRI: contextIris[i] || options.baseIRI, external: !!contextIris[i] || options.external, parentContext: accContext.getContextRaw(), remoteContexts: contextIris[i] ? Object.assign(Object.assign({}, remoteContexts), { [contextIris[i]]: true }) : remoteContexts }), \n // @ts-expect-error: This third argument causes a type error because we have hidden it from consumers\n {\n skipValidation: i < contexts.length - 1,\n })), Promise.resolve(new JsonLdContextNormalized_1.JsonLdContextNormalized(parentContext || {})));\n // Override the base IRI if provided.\n this.applyBaseEntry(reducedContexts.getContextRaw(), options, true);\n return reducedContexts;\n }\n else if (typeof context === 'object') {\n if ('@context' in context) {\n return await this.parse(context['@context'], options);\n }\n // Make a deep clone of the given context, to avoid modifying it.\n context = Object.assign({}, context);\n // According to the JSON-LD spec, @base must be ignored from external contexts.\n if (external) {\n delete context['@base'];\n }\n // Override the base IRI if provided.\n this.applyBaseEntry(context, options, true);\n // Hashify container entries\n // Do this before protected term validation as that influences term format\n this.containersToHash(context);\n // Don't perform any other modifications if only minimal processing is needed.\n if (minimalProcessing) {\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(context);\n }\n // In JSON-LD 1.1, load @import'ed context prior to processing.\n let importContext = {};\n if ('@import' in context) {\n if (processingMode >= 1.1) {\n // Only accept string values\n if (typeof context['@import'] !== 'string') {\n throw new ErrorCoded_1.ErrorCoded('An @import value must be a string, but got ' + typeof context['@import'], ErrorCoded_1.ERROR_CODES.INVALID_IMPORT_VALUE);\n }\n // Load context\n importContext = await this.loadImportContext(this.normalizeContextIri(context['@import'], baseIRI));\n delete context['@import'];\n }\n else {\n throw new ErrorCoded_1.ErrorCoded('Context importing is not supported in JSON-LD 1.0', ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_ENTRY);\n }\n }\n this.applyScopedProtected(importContext, { processingMode }, JsonLdContextNormalized_1.defaultExpandOptions);\n const newContext = Object.assign(importContext, context);\n // Handle terms (before protection checks)\n this.idifyReverseTerms(newContext);\n this.normalize(newContext, { processingMode, normalizeLanguageTags });\n this.applyScopedProtected(newContext, { processingMode }, JsonLdContextNormalized_1.defaultExpandOptions);\n const keys = Object.keys(newContext);\n const overlappingKeys = [];\n if (typeof parentContext === 'object') {\n // Merge different parts of the final context in order\n for (const key in parentContext) {\n if (key in newContext) {\n overlappingKeys.push(key);\n }\n else {\n newContext[key] = parentContext[key];\n }\n }\n }\n // Parse inner contexts with minimal processing\n await this.parseInnerContexts(newContext, options, keys);\n const newContextWrapped = new JsonLdContextNormalized_1.JsonLdContextNormalized(newContext);\n // In JSON-LD 1.1, @vocab can be relative to @vocab in the parent context, or a compact IRI.\n if ((newContext && newContext['@version'] || ContextParser.DEFAULT_PROCESSING_MODE) >= 1.1\n && ((context['@vocab'] && typeof context['@vocab'] === 'string') || context['@vocab'] === '')) {\n if (parentContext && '@vocab' in parentContext && context['@vocab'].indexOf(':') < 0) {\n newContext['@vocab'] = parentContext['@vocab'] + context['@vocab'];\n }\n else if (Util_1.Util.isCompactIri(context['@vocab']) || context['@vocab'] in newContext) {\n // @vocab is a compact IRI or refers exactly to a prefix\n newContext['@vocab'] = newContextWrapped.expandTerm(context['@vocab'], true);\n }\n }\n this.expandPrefixedTerms(newContextWrapped, this.expandContentTypeToBase, keys);\n // In JSON-LD 1.1, check if we are not redefining any protected keywords\n if (!ignoreProtection && parentContext && processingMode >= 1.1) {\n this.validateKeywordRedefinitions(parentContext, newContext, JsonLdContextNormalized_1.defaultExpandOptions, overlappingKeys);\n }\n if (this.validateContext && !internalOptions.skipValidation) {\n this.validate(newContext, { processingMode });\n }\n return newContextWrapped;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded(`Tried parsing a context that is not a string, array or object, but got ${context}`, ErrorCoded_1.ERROR_CODES.INVALID_LOCAL_CONTEXT);\n }\n }\n /**\n * Fetch the given URL as a raw JSON-LD context.\n * @param url An URL.\n * @return A promise resolving to a raw JSON-LD context.\n */\n async load(url) {\n // First try to retrieve the context from cache\n const cached = this.documentCache[url];\n if (cached) {\n return cached;\n }\n // If not in cache, load it\n let document;\n try {\n document = await this.documentLoader.load(url);\n }\n catch (e) {\n throw new ErrorCoded_1.ErrorCoded(`Failed to load remote context ${url}: ${e.message}`, ErrorCoded_1.ERROR_CODES.LOADING_REMOTE_CONTEXT_FAILED);\n }\n // Validate the context\n if (!('@context' in document)) {\n throw new ErrorCoded_1.ErrorCoded(`Missing @context in remote context at ${url}`, ErrorCoded_1.ERROR_CODES.INVALID_REMOTE_CONTEXT);\n }\n return this.documentCache[url] = document['@context'];\n }\n /**\n * Override the given context that may be loaded.\n *\n * This will check whether or not the url is recursively being loaded.\n * @param url An URL.\n * @param options Parsing options.\n * @return An overridden context, or null.\n * Optionally an error can be thrown if a cyclic context is detected.\n */\n getOverriddenLoad(url, options) {\n if (url in (options.remoteContexts || {})) {\n if (options.ignoreRemoteScopedContexts) {\n return url;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded('Detected a cyclic context inclusion of ' + url, ErrorCoded_1.ERROR_CODES.RECURSIVE_CONTEXT_INCLUSION);\n }\n }\n return null;\n }\n /**\n * Load an @import'ed context.\n * @param importContextIri The full URI of an @import value.\n */\n async loadImportContext(importContextIri) {\n // Load the context - and do a deep clone since we are about to mutate it\n let importContext = await this.load(importContextIri);\n // Require the context to be a non-array object\n if (typeof importContext !== 'object' || Array.isArray(importContext)) {\n throw new ErrorCoded_1.ErrorCoded('An imported context must be a single object: ' + importContextIri, ErrorCoded_1.ERROR_CODES.INVALID_REMOTE_CONTEXT);\n }\n // Error if the context contains another @import\n if ('@import' in importContext) {\n throw new ErrorCoded_1.ErrorCoded('An imported context can not import another context: ' + importContextIri, ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_ENTRY);\n }\n importContext = Object.assign({}, importContext);\n // Containers have to be converted into hash values the same way as for the importing context\n // Otherwise context validation will fail for container values\n this.containersToHash(importContext);\n return importContext;\n }\n}\nContextParser.DEFAULT_PROCESSING_MODE = 1.1;\nexports.ContextParser = ContextParser;\n//# sourceMappingURL=ContextParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ERROR_CODES = exports.ErrorCoded = void 0;\n/**\n * An error that has a certain error code.\n *\n * The error code can be any string.\n * All standardized error codes are listed in {@link ERROR_CODES}.\n */\nclass ErrorCoded extends Error {\n /* istanbul ignore next */\n constructor(message, code) {\n super(message);\n this.code = code;\n }\n}\nexports.ErrorCoded = ErrorCoded;\n/**\n * All standardized JSON-LD error codes.\n * @see https://w3c.github.io/json-ld-api/#dom-jsonlderrorcode\n */\n// tslint:disable:object-literal-sort-keys\nvar ERROR_CODES;\n(function (ERROR_CODES) {\n ERROR_CODES[\"COLLIDING_KEYWORDS\"] = \"colliding keywords\";\n ERROR_CODES[\"CONFLICTING_INDEXES\"] = \"conflicting indexes\";\n ERROR_CODES[\"CYCLIC_IRI_MAPPING\"] = \"cyclic IRI mapping\";\n ERROR_CODES[\"INVALID_ID_VALUE\"] = \"invalid @id value\";\n ERROR_CODES[\"INVALID_INDEX_VALUE\"] = \"invalid @index value\";\n ERROR_CODES[\"INVALID_NEST_VALUE\"] = \"invalid @nest value\";\n ERROR_CODES[\"INVALID_PREFIX_VALUE\"] = \"invalid @prefix value\";\n ERROR_CODES[\"INVALID_PROPAGATE_VALUE\"] = \"invalid @propagate value\";\n ERROR_CODES[\"INVALID_REVERSE_VALUE\"] = \"invalid @reverse value\";\n ERROR_CODES[\"INVALID_IMPORT_VALUE\"] = \"invalid @import value\";\n ERROR_CODES[\"INVALID_VERSION_VALUE\"] = \"invalid @version value\";\n ERROR_CODES[\"INVALID_BASE_IRI\"] = \"invalid base IRI\";\n ERROR_CODES[\"INVALID_CONTAINER_MAPPING\"] = \"invalid container mapping\";\n ERROR_CODES[\"INVALID_CONTEXT_ENTRY\"] = \"invalid context entry\";\n ERROR_CODES[\"INVALID_CONTEXT_NULLIFICATION\"] = \"invalid context nullification\";\n ERROR_CODES[\"INVALID_DEFAULT_LANGUAGE\"] = \"invalid default language\";\n ERROR_CODES[\"INVALID_INCLUDED_VALUE\"] = \"invalid @included value\";\n ERROR_CODES[\"INVALID_IRI_MAPPING\"] = \"invalid IRI mapping\";\n ERROR_CODES[\"INVALID_JSON_LITERAL\"] = \"invalid JSON literal\";\n ERROR_CODES[\"INVALID_KEYWORD_ALIAS\"] = \"invalid keyword alias\";\n ERROR_CODES[\"INVALID_LANGUAGE_MAP_VALUE\"] = \"invalid language map value\";\n ERROR_CODES[\"INVALID_LANGUAGE_MAPPING\"] = \"invalid language mapping\";\n ERROR_CODES[\"INVALID_LANGUAGE_TAGGED_STRING\"] = \"invalid language-tagged string\";\n ERROR_CODES[\"INVALID_LANGUAGE_TAGGED_VALUE\"] = \"invalid language-tagged value\";\n ERROR_CODES[\"INVALID_LOCAL_CONTEXT\"] = \"invalid local context\";\n ERROR_CODES[\"INVALID_REMOTE_CONTEXT\"] = \"invalid remote context\";\n ERROR_CODES[\"INVALID_REVERSE_PROPERTY\"] = \"invalid reverse property\";\n ERROR_CODES[\"INVALID_REVERSE_PROPERTY_MAP\"] = \"invalid reverse property map\";\n ERROR_CODES[\"INVALID_REVERSE_PROPERTY_VALUE\"] = \"invalid reverse property value\";\n ERROR_CODES[\"INVALID_SCOPED_CONTEXT\"] = \"invalid scoped context\";\n ERROR_CODES[\"INVALID_SCRIPT_ELEMENT\"] = \"invalid script element\";\n ERROR_CODES[\"INVALID_SET_OR_LIST_OBJECT\"] = \"invalid set or list object\";\n ERROR_CODES[\"INVALID_TERM_DEFINITION\"] = \"invalid term definition\";\n ERROR_CODES[\"INVALID_TYPE_MAPPING\"] = \"invalid type mapping\";\n ERROR_CODES[\"INVALID_TYPE_VALUE\"] = \"invalid type value\";\n ERROR_CODES[\"INVALID_TYPED_VALUE\"] = \"invalid typed value\";\n ERROR_CODES[\"INVALID_VALUE_OBJECT\"] = \"invalid value object\";\n ERROR_CODES[\"INVALID_VALUE_OBJECT_VALUE\"] = \"invalid value object value\";\n ERROR_CODES[\"INVALID_VOCAB_MAPPING\"] = \"invalid vocab mapping\";\n ERROR_CODES[\"IRI_CONFUSED_WITH_PREFIX\"] = \"IRI confused with prefix\";\n ERROR_CODES[\"KEYWORD_REDEFINITION\"] = \"keyword redefinition\";\n ERROR_CODES[\"LOADING_DOCUMENT_FAILED\"] = \"loading document failed\";\n ERROR_CODES[\"LOADING_REMOTE_CONTEXT_FAILED\"] = \"loading remote context failed\";\n ERROR_CODES[\"MULTIPLE_CONTEXT_LINK_HEADERS\"] = \"multiple context link headers\";\n ERROR_CODES[\"PROCESSING_MODE_CONFLICT\"] = \"processing mode conflict\";\n ERROR_CODES[\"PROTECTED_TERM_REDEFINITION\"] = \"protected term redefinition\";\n ERROR_CODES[\"CONTEXT_OVERFLOW\"] = \"context overflow\";\n ERROR_CODES[\"INVALID_BASE_DIRECTION\"] = \"invalid base direction\";\n ERROR_CODES[\"RECURSIVE_CONTEXT_INCLUSION\"] = \"recursive context inclusion\";\n ERROR_CODES[\"INVALID_STREAMING_KEY_ORDER\"] = \"invalid streaming key order\";\n /**\n * JSON-LD-star\n */\n ERROR_CODES[\"INVALID_EMBEDDED_NODE\"] = \"invalid embedded node\";\n ERROR_CODES[\"INVALID_ANNOTATION\"] = \"invalid annotation\";\n})(ERROR_CODES = exports.ERROR_CODES || (exports.ERROR_CODES = {}));\n//# sourceMappingURL=ErrorCoded.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FetchDocumentLoader = void 0;\nrequire(\"cross-fetch/polyfill\");\nconst ErrorCoded_1 = require(\"./ErrorCoded\");\nconst http_link_header_1 = require(\"http-link-header\");\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\n/**\n * Loads documents via the fetch API.\n */\nclass FetchDocumentLoader {\n constructor(fetcher) {\n this.fetcher = fetcher;\n }\n async load(url) {\n const response = await (this.fetcher || fetch)(url, { headers: new Headers({ accept: 'application/ld+json' }) });\n if (response.ok && response.headers) {\n let mediaType = response.headers.get('Content-Type');\n if (mediaType) {\n const colonPos = mediaType.indexOf(';');\n if (colonPos > 0) {\n mediaType = mediaType.substr(0, colonPos);\n }\n }\n if (mediaType === 'application/ld+json') {\n // Return JSON-LD if proper content type was returned\n return (await response.json());\n }\n else {\n // Check for alternate link for a non-JSON-LD response\n if (response.headers.has('Link')) {\n let alternateUrl;\n response.headers.forEach((value, key) => {\n if (key === 'link') {\n const linkHeader = (0, http_link_header_1.parse)(value);\n for (const link of linkHeader.get('type', 'application/ld+json')) {\n if (link.rel === 'alternate') {\n if (alternateUrl) {\n throw new Error('Multiple JSON-LD alternate links were found on ' + url);\n }\n alternateUrl = (0, relative_to_absolute_iri_1.resolve)(link.uri, url);\n }\n }\n }\n });\n if (alternateUrl) {\n return this.load(alternateUrl);\n }\n }\n throw new ErrorCoded_1.ErrorCoded(`Unsupported JSON-LD media type ${mediaType}`, ErrorCoded_1.ERROR_CODES.LOADING_DOCUMENT_FAILED);\n }\n }\n else {\n throw new Error(response.statusText || `Status code: ${response.status}`);\n }\n }\n}\nexports.FetchDocumentLoader = FetchDocumentLoader;\n//# sourceMappingURL=FetchDocumentLoader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IDocumentLoader.js.map","\"use strict\";\n// tslint:disable:max-line-length\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=JsonLdContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultExpandOptions = exports.JsonLdContextNormalized = void 0;\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\nconst ErrorCoded_1 = require(\"./ErrorCoded\");\nconst Util_1 = require(\"./Util\");\n/**\n * A class exposing operations over a normalized JSON-LD context.\n */\nclass JsonLdContextNormalized {\n constructor(contextRaw) {\n this.contextRaw = contextRaw;\n }\n /**\n * @return The raw inner context.\n */\n getContextRaw() {\n return this.contextRaw;\n }\n /**\n * Expand the term or prefix of the given term if it has one,\n * otherwise return the term as-is.\n *\n * This will try to expand the IRI as much as possible.\n *\n * Iff in vocab-mode, then other references to other terms in the context can be used,\n * such as to `myTerm`:\n * ```\n * {\n * \"myTerm\": \"http://example.org/myLongTerm\"\n * }\n * ```\n *\n * @param {string} term A term that is an URL or a prefixed URL.\n * @param {boolean} expandVocab If the term is a predicate or type and should be expanded based on @vocab,\n * otherwise it is considered a regular term that is expanded based on @base.\n * @param {IExpandOptions} options Options that define the way how expansion must be done.\n * @return {string} The expanded term, the term as-is, or null if it was explicitly disabled in the context.\n * @throws If the term is aliased to an invalid value (not a string, IRI or keyword).\n */\n expandTerm(term, expandVocab, options = exports.defaultExpandOptions) {\n const contextValue = this.contextRaw[term];\n // Immediately return if the term was disabled in the context\n if (contextValue === null || (contextValue && contextValue['@id'] === null)) {\n return null;\n }\n // Check the @id\n let validIriMapping = true;\n if (contextValue && expandVocab) {\n const value = Util_1.Util.getContextValueId(contextValue);\n if (value && value !== term) {\n if (typeof value !== 'string' || (!Util_1.Util.isValidIri(value) && !Util_1.Util.isValidKeyword(value))) {\n // Don't mark this mapping as invalid if we have an unknown keyword, but of the correct form.\n if (!Util_1.Util.isPotentialKeyword(value)) {\n validIriMapping = false;\n }\n }\n else {\n return value;\n }\n }\n }\n // Check if the term is prefixed\n const prefix = Util_1.Util.getPrefix(term, this.contextRaw);\n const vocab = this.contextRaw['@vocab'];\n const vocabRelative = (!!vocab || vocab === '') && vocab.indexOf(':') < 0;\n const base = this.contextRaw['@base'];\n const potentialKeyword = Util_1.Util.isPotentialKeyword(term);\n if (prefix) {\n const contextPrefixValue = this.contextRaw[prefix];\n const value = Util_1.Util.getContextValueId(contextPrefixValue);\n if (value) {\n if (typeof contextPrefixValue === 'string' || !options.allowPrefixForcing) {\n // If we have a simple term definition,\n // check the last character of the prefix to determine whether or not it is a prefix.\n // Validate that prefix ends with gen-delim character, unless @prefix is true\n if (!Util_1.Util.isSimpleTermDefinitionPrefix(value, options)) {\n // Treat the term as an absolute IRI\n return term;\n }\n }\n else {\n // If we have an expanded term definition, default to @prefix: false\n if (value[0] !== '_' && !potentialKeyword && !contextPrefixValue['@prefix'] && !(term in this.contextRaw)) {\n // Treat the term as an absolute IRI\n return term;\n }\n }\n return value + term.substr(prefix.length + 1);\n }\n }\n else if (expandVocab && ((vocab || vocab === '') || (options.allowVocabRelativeToBase && (base && vocabRelative)))\n && !potentialKeyword && !Util_1.Util.isCompactIri(term)) {\n if (vocabRelative) {\n if (options.allowVocabRelativeToBase) {\n return ((vocab || base) ? (0, relative_to_absolute_iri_1.resolve)(vocab, base) : '') + term;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded(`Relative vocab expansion for term '${term}' with vocab '${vocab}' is not allowed.`, ErrorCoded_1.ERROR_CODES.INVALID_VOCAB_MAPPING);\n }\n }\n else {\n return vocab + term;\n }\n }\n else if (!expandVocab && base && !potentialKeyword && !Util_1.Util.isCompactIri(term)) {\n return (0, relative_to_absolute_iri_1.resolve)(term, base);\n }\n // Return the term as-is, unless we discovered an invalid IRI mapping for this term in the context earlier.\n if (validIriMapping) {\n return term;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded(`Invalid IRI mapping found for context entry '${term}': '${JSON.stringify(contextValue)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n }\n /**\n * Compact the given term using @base, @vocab, an aliased term, or a prefixed term.\n *\n * This will try to compact the IRI as much as possible.\n *\n * @param {string} iri An IRI to compact.\n * @param {boolean} vocab If the term is a predicate or type and should be compacted based on @vocab,\n * otherwise it is considered a regular term that is compacted based on @base.\n * @return {string} The compacted term or the IRI as-is.\n */\n compactIri(iri, vocab) {\n // Try @vocab compacting\n if (vocab && this.contextRaw['@vocab'] && iri.startsWith(this.contextRaw['@vocab'])) {\n return iri.substr(this.contextRaw['@vocab'].length);\n }\n // Try @base compacting\n if (!vocab && this.contextRaw['@base'] && iri.startsWith(this.contextRaw['@base'])) {\n return iri.substr(this.contextRaw['@base'].length);\n }\n // Loop over all terms in the context\n // This will try to prefix as short as possible.\n // Once a fully compacted alias is found, return immediately, as we can not go any shorter.\n const shortestPrefixing = { prefix: '', suffix: iri };\n for (const key in this.contextRaw) {\n const value = this.contextRaw[key];\n if (value && !Util_1.Util.isPotentialKeyword(key)) {\n const contextIri = Util_1.Util.getContextValueId(value);\n if (iri.startsWith(contextIri)) {\n const suffix = iri.substr(contextIri.length);\n if (!suffix) {\n if (vocab) {\n // Immediately return on compacted alias\n return key;\n }\n }\n else if (suffix.length < shortestPrefixing.suffix.length) {\n // Overwrite the shortest prefix\n shortestPrefixing.prefix = key;\n shortestPrefixing.suffix = suffix;\n }\n }\n }\n }\n // Return the shortest prefix\n if (shortestPrefixing.prefix) {\n return shortestPrefixing.prefix + ':' + shortestPrefixing.suffix;\n }\n return iri;\n }\n}\nexports.JsonLdContextNormalized = JsonLdContextNormalized;\nexports.defaultExpandOptions = {\n allowPrefixForcing: true,\n allowPrefixNonGenDelims: false,\n allowVocabRelativeToBase: true,\n};\n//# sourceMappingURL=JsonLdContextNormalized.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = void 0;\nclass Util {\n /**\n * Check if the given term is a valid compact IRI.\n * Otherwise, it may be an IRI.\n * @param {string} term A term.\n * @return {boolean} If it is a compact IRI.\n */\n static isCompactIri(term) {\n return term.indexOf(':') > 0 && !(term && term[0] === '#');\n }\n /**\n * Get the prefix from the given term.\n * @see https://json-ld.org/spec/latest/json-ld/#compact-iris\n * @param {string} term A term that is an URL or a prefixed URL.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @return {string} The prefix or null.\n */\n static getPrefix(term, context) {\n // Do not consider relative IRIs starting with a hash as compact IRIs\n if (term && term[0] === '#') {\n return null;\n }\n const separatorPos = term.indexOf(':');\n if (separatorPos >= 0) {\n // Suffix can not begin with two slashes\n if (term.length > separatorPos + 1\n && term.charAt(separatorPos + 1) === '/'\n && term.charAt(separatorPos + 2) === '/') {\n return null;\n }\n const prefix = term.substr(0, separatorPos);\n // Prefix can not be an underscore (this is a blank node)\n if (prefix === '_') {\n return null;\n }\n // Prefix must match a term in the active context\n if (context[prefix]) {\n return prefix;\n }\n }\n return null;\n }\n /**\n * From a given context entry value, get the string value, or the @id field.\n * @param contextValue A value for a term in a context.\n * @return {string} The id value, or null.\n */\n static getContextValueId(contextValue) {\n if (contextValue === null || typeof contextValue === 'string') {\n return contextValue;\n }\n const id = contextValue['@id'];\n return id ? id : null;\n }\n /**\n * Check if the given simple term definition (string-based value of a context term)\n * should be considered a prefix.\n * @param value A simple term definition value.\n * @param options Options that define the way how expansion must be done.\n */\n static isSimpleTermDefinitionPrefix(value, options) {\n return !Util.isPotentialKeyword(value)\n && (options.allowPrefixNonGenDelims || (typeof value === 'string' && (value[0] === '_' || Util.isPrefixIriEndingWithGenDelim(value))));\n }\n /**\n * Check if the given keyword is of the keyword format \"@\"1*ALPHA.\n * @param {string} keyword A potential keyword.\n * @return {boolean} If the given keyword is of the keyword format.\n */\n static isPotentialKeyword(keyword) {\n return typeof keyword === 'string' && Util.KEYWORD_REGEX.test(keyword);\n }\n /**\n * Check if the given prefix ends with a gen-delim character.\n * @param {string} prefixIri A prefix IRI.\n * @return {boolean} If the given prefix IRI is valid.\n */\n static isPrefixIriEndingWithGenDelim(prefixIri) {\n return Util.ENDS_WITH_GEN_DELIM.test(prefixIri);\n }\n /**\n * Check if the given context value can be a prefix value.\n * @param value A context value.\n * @return {boolean} If it can be a prefix value.\n */\n static isPrefixValue(value) {\n return value && (typeof value === 'string' || (value && typeof value === 'object'));\n }\n /**\n * Check if the given IRI is valid.\n * @param {string} iri A potential IRI.\n * @return {boolean} If the given IRI is valid.\n */\n static isValidIri(iri) {\n return Boolean(iri && Util.IRI_REGEX.test(iri));\n }\n /**\n * Check if the given IRI is valid, this includes the possibility of being a relative IRI.\n * @param {string} iri A potential IRI.\n * @return {boolean} If the given IRI is valid.\n */\n static isValidIriWeak(iri) {\n return !!iri && iri[0] !== ':' && Util.IRI_REGEX_WEAK.test(iri);\n }\n /**\n * Check if the given keyword is a defined according to the JSON-LD specification.\n * @param {string} keyword A potential keyword.\n * @return {boolean} If the given keyword is valid.\n */\n static isValidKeyword(keyword) {\n return Util.VALID_KEYWORDS[keyword];\n }\n /**\n * Check if the given term is protected in the context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {string} key A context term.\n * @return {boolean} If the given term has an @protected flag.\n */\n static isTermProtected(context, key) {\n const value = context[key];\n return !(typeof value === 'string') && value && value['@protected'];\n }\n /**\n * Check if the given context has at least one protected term.\n * @param context A context.\n * @return If the context has a protected term.\n */\n static hasProtectedTerms(context) {\n for (const key of Object.keys(context)) {\n if (Util.isTermProtected(context, key)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Check if the given key is an internal reserved keyword.\n * @param key A context key.\n */\n static isReservedInternalKeyword(key) {\n return key.startsWith('@__');\n }\n /**\n * Check if two objects are deepEqual to on another.\n * @param object1 The first object to test.\n * @param object2 The second object to test.\n */\n static deepEqual(object1, object2) {\n const objKeys1 = Object.keys(object1);\n const objKeys2 = Object.keys(object2);\n if (objKeys1.length !== objKeys2.length)\n return false;\n return objKeys1.every((key) => {\n const value1 = object1[key];\n const value2 = object2[key];\n return (value1 === value2) || (value1 !== null &&\n value2 !== null &&\n typeof value1 === \"object\" &&\n typeof value2 === \"object\" &&\n this.deepEqual(value1, value2));\n });\n }\n ;\n}\n// Regex for valid IRIs\nUtil.IRI_REGEX = /^([A-Za-z][A-Za-z0-9+-.]*|_):[^ \"<>{}|\\\\\\[\\]`#]*(#[^#]*)?$/;\n// Weaker regex for valid IRIs, this includes relative IRIs\nUtil.IRI_REGEX_WEAK = /(?::[^:])|\\//;\n// Regex for keyword form\nUtil.KEYWORD_REGEX = /^@[a-z]+$/i;\n// Regex to see if an IRI ends with a gen-delim character (see RFC 3986)\nUtil.ENDS_WITH_GEN_DELIM = /[:/?#\\[\\]@]$/;\n// Regex for language tags\nUtil.REGEX_LANGUAGE_TAG = /^[a-zA-Z]+(-[a-zA-Z0-9]+)*$/;\n// Regex for base directions\nUtil.REGEX_DIRECTION_TAG = /^(ltr)|(rtl)$/;\n// All known valid JSON-LD keywords\n// @see https://www.w3.org/TR/json-ld11/#keywords\nUtil.VALID_KEYWORDS = {\n '@annotation': true,\n '@base': true,\n '@container': true,\n '@context': true,\n '@direction': true,\n '@graph': true,\n '@id': true,\n '@import': true,\n '@included': true,\n '@index': true,\n '@json': true,\n '@language': true,\n '@list': true,\n '@nest': true,\n '@none': true,\n '@prefix': true,\n '@propagate': true,\n '@protected': true,\n '@reverse': true,\n '@set': true,\n '@type': true,\n '@value': true,\n '@version': true,\n '@vocab': true,\n};\n// Keys in the contexts that will not be expanded based on the base IRI\nUtil.EXPAND_KEYS_BLACKLIST = [\n '@base',\n '@vocab',\n '@language',\n '@version',\n '@direction',\n];\n// Keys in the contexts that may not be aliased from\nUtil.ALIAS_DOMAIN_BLACKLIST = [\n '@container',\n '@graph',\n '@id',\n '@index',\n '@list',\n '@nest',\n '@none',\n '@prefix',\n '@reverse',\n '@set',\n '@type',\n '@value',\n '@version',\n];\n// Keys in the contexts that may not be aliased to\nUtil.ALIAS_RANGE_BLACKLIST = [\n '@context',\n '@preserve',\n];\n// All valid @container values\nUtil.CONTAINERS = [\n '@list',\n '@set',\n '@index',\n '@language',\n '@graph',\n '@id',\n '@type',\n];\n// All valid @container values under processing mode 1.0\nUtil.CONTAINERS_1_0 = [\n '@list',\n '@set',\n '@index',\n];\nexports.Util = Util;\n//# sourceMappingURL=Util.js.map","(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(typeof self !== 'undefined' ? self : this);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/JsonLdSerializer\"), exports);\n__exportStar(require(\"./lib/Util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonLdSerializer = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst SeparatorType_1 = require(\"./SeparatorType\");\nconst Util_1 = require(\"./Util\");\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * A stream transformer that transforms an {@link RDF.Stream} into a JSON-LD (text) stream.\n */\nclass JsonLdSerializer extends readable_stream_1.Transform {\n constructor(options = {}) {\n super({ objectMode: true });\n this.indentation = 0;\n this.options = options;\n // Parse the context\n if (this.options.baseIRI && !this.options.context) {\n this.options.context = { '@base': this.options.baseIRI };\n }\n if (this.options.context) {\n this.originalContext = this.options.context;\n this.context = new jsonld_context_parser_1.ContextParser().parse(this.options.context, { baseIRI: this.options.baseIRI });\n }\n else {\n this.context = Promise.resolve(new jsonld_context_parser_1.JsonLdContextNormalized({}));\n }\n }\n /**\n * Parses the given text stream into a quad stream.\n * @param {NodeJS.EventEmitter} stream A text stream.\n * @return {NodeJS.EventEmitter} A quad stream.\n */\n import(stream) {\n const output = new readable_stream_1.PassThrough({ objectMode: true });\n stream.on('error', (error) => parsed.emit('error', error));\n stream.on('data', (data) => output.push(data));\n stream.on('end', () => output.push(null));\n const parsed = output.pipe(new JsonLdSerializer(this.options));\n return parsed;\n }\n /**\n * Transforms a quad into the text stream.\n * @param {Quad} quad An RDF quad.\n * @param {string} encoding An (ignored) encoding.\n * @param {module:stream.internal.TransformCallback} callback Callback that is invoked when the transformation is done\n * @private\n */\n _transform(quad, encoding, callback) {\n this.context.then((context) => {\n this.transformQuad(quad, context);\n callback();\n }).catch(callback);\n }\n /**\n * Construct a list in an RDF.Term object that can be used\n * inside a quad's object to write into the serializer\n * as a list using the @list keyword.\n * @param {RDF.Quad_Object[]} values A list of values, can be empty.\n * @return {RDF.Quad_Object} A term that should be used in the object position of the quad that is written to the serializer.\n */\n async list(values) {\n const context = await this.context;\n return {\n '@list': values.map((value) => Util_1.Util.termToValue(value, context, this.options)),\n };\n }\n /**\n * Called when the incoming stream is closed.\n * @param {module:stream.internal.TransformCallback} callback Callback that is invoked when the flushing is done.\n * @private\n */\n _flush(callback) {\n // If the stream was empty, ensure that we push the opening array\n if (!this.opened) {\n this.pushDocumentStart();\n }\n if (this.lastPredicate) {\n this.endPredicate();\n }\n if (this.lastSubject) {\n this.endSubject();\n }\n if (this.lastGraph && this.lastGraph.termType !== 'DefaultGraph') {\n this.endGraph();\n }\n this.endDocument();\n return callback(null, null);\n }\n /**\n * Transforms a quad into the text stream.\n * @param {Quad} quad An RDF quad.\n * @param {JsonLdContextNormalized} context A context for compacting.\n */\n transformQuad(quad, context) {\n // Open the array before the first quad\n if (!this.opened) {\n this.pushDocumentStart();\n }\n // Check if the subject equals the last named graph\n // In that case, we can reuse the already-existing @id node\n const lastGraphMatchesSubject = this.lastGraph && this.lastGraph.termType !== 'DefaultGraph'\n && this.lastGraph.equals(quad.subject);\n // Write graph\n if (!lastGraphMatchesSubject && (!this.lastGraph || !quad.graph.equals(this.lastGraph))) {\n // Check if the named graph equals the last subject\n // In that case, we can reuse the already-existing @id node\n let lastSubjectMatchesGraph = quad.graph.termType !== 'DefaultGraph'\n && this.lastSubject && this.lastSubject.equals(quad.graph);\n if (this.lastGraph) {\n if (this.lastGraph.termType !== 'DefaultGraph') {\n // The last graph was named\n this.endPredicate();\n this.endSubject();\n this.endGraph(true);\n lastSubjectMatchesGraph = false; // Special-case to avoid deeper nesting\n }\n else {\n // The last graph was default\n if (!lastSubjectMatchesGraph) {\n this.endPredicate();\n this.endSubject(true);\n }\n else {\n this.endPredicate(true);\n this.lastSubject = null;\n }\n }\n }\n // Push the graph\n if (quad.graph.termType !== 'DefaultGraph') {\n if (!lastSubjectMatchesGraph) {\n this.pushId(quad.graph, true, context);\n }\n this.pushSeparator(this.options.space\n ? SeparatorType_1.SeparatorType.GRAPH_FIELD_NONCOMPACT : SeparatorType_1.SeparatorType.GRAPH_FIELD_COMPACT);\n this.indentation++;\n }\n this.lastGraph = quad.graph;\n }\n // Write subject\n if (!this.lastSubject || !quad.subject.equals(this.lastSubject)) {\n if (lastGraphMatchesSubject) {\n this.endPredicate();\n this.endSubject();\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END_COMMA);\n this.lastGraph = quad.graph;\n }\n else {\n if (this.lastSubject) {\n this.endPredicate();\n this.endSubject(true);\n }\n // Open a new node for the new subject\n this.pushId(quad.subject, true, context);\n }\n this.lastSubject = quad.subject;\n }\n // Write predicate\n if (!this.lastPredicate || !quad.predicate.equals(this.lastPredicate)) {\n if (this.lastPredicate) {\n this.endPredicate(true);\n }\n // Open a new array for the new predicate\n this.pushPredicate(quad.predicate, context);\n }\n // Write the object value\n this.pushObject(quad.object, context);\n }\n pushDocumentStart() {\n this.opened = true;\n if (this.originalContext && !this.options.excludeContext) {\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_START);\n this.indentation++;\n this.pushSeparator(SeparatorType_1.SeparatorType.CONTEXT_FIELD);\n this.pushIndented(JSON.stringify(this.originalContext, null, this.options.space) + ',');\n this.pushSeparator(this.options.space\n ? SeparatorType_1.SeparatorType.GRAPH_FIELD_NONCOMPACT : SeparatorType_1.SeparatorType.GRAPH_FIELD_COMPACT);\n this.indentation++;\n }\n else {\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_START);\n this.indentation++;\n }\n }\n /**\n * Push the given term as an @id field.\n * @param {Term} term An RDF term.\n * @param startOnNewLine If `{` should start on a new line\n * @param {JsonLdContextNormalized} context The context.\n */\n pushId(term, startOnNewLine, context) {\n if (term.termType === 'Quad') {\n this.pushNestedQuad(term, true, context);\n }\n else {\n const subjectValue = term.termType === 'BlankNode'\n ? '_:' + term.value : context.compactIri(term.value, false);\n if (startOnNewLine) {\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_START);\n }\n else {\n this.push(SeparatorType_1.SeparatorType.OBJECT_START.label);\n if (this.options.space) {\n this.push('\\n');\n }\n }\n this.indentation++;\n this.pushIndented(this.options.space ? `\"@id\": \"${subjectValue}\",` : `\"@id\":\"${subjectValue}\",`);\n }\n }\n /**\n * Push the given predicate field.\n * @param {Term} predicate An RDF term.\n * @param {JsonLdContextNormalized} context The context.\n */\n pushPredicate(predicate, context) {\n let property = predicate.value;\n // Convert rdf:type into @type if not disabled.\n if (!this.options.useRdfType && property === Util_1.Util.RDF_TYPE) {\n property = '@type';\n this.objectOptions = Object.assign(Object.assign({}, this.options), { compactIds: true, vocab: true });\n }\n // Open array for following objects\n const compactedProperty = context.compactIri(property, true);\n this.pushIndented(this.options.space ? `\"${compactedProperty}\": [` : `\"${compactedProperty}\":[`);\n this.indentation++;\n this.lastPredicate = predicate;\n }\n /**\n * Push the given object value.\n * @param {Term} object An RDF term.\n * @param {JsonLdContextNormalized} context The context.\n */\n pushObject(object, context) {\n // Add a comma if we already had an object for this predicate\n if (!this.hadObjectForPredicate) {\n this.hadObjectForPredicate = true;\n }\n else {\n this.pushSeparator(SeparatorType_1.SeparatorType.COMMA);\n }\n // Handle nested quad\n if (object.termType === 'Quad') {\n const lastLastSubject = this.lastSubject;\n const lastLastPredicate = this.lastPredicate;\n this.hadObjectForPredicate = false;\n this.pushNestedQuad(object, false, context);\n this.endSubject(false); // Terminate identifier node of nested quad again, since we won't attach additional information to it.\n this.hadObjectForPredicate = true;\n this.lastPredicate = lastLastPredicate;\n this.lastSubject = lastLastSubject;\n return;\n }\n // Convert the object into a value and push it\n let value;\n try {\n if (object['@list']) {\n value = object;\n }\n else {\n value = Util_1.Util.termToValue(object, context, this.objectOptions || this.options);\n }\n }\n catch (e) {\n return this.emit('error', e);\n }\n this.pushIndented(JSON.stringify(value, null, this.options.space));\n }\n pushNestedQuad(nestedQuad, commaAfterSubject, context) {\n // Start a nested quad\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_START);\n this.indentation++;\n this.pushIndented(this.options.space ? `\"@id\": ` : `\"@id\":`, false);\n // Print the nested quad\n if (nestedQuad.graph.termType !== 'DefaultGraph') {\n this.emit('error', new Error(`Found a nested quad with the non-default graph: ${nestedQuad.graph.value}`));\n }\n this.pushId(nestedQuad.subject, false, context);\n this.pushPredicate(nestedQuad.predicate, context);\n this.pushObject(nestedQuad.object, context);\n this.endPredicate(false);\n this.endSubject(commaAfterSubject);\n }\n endDocument() {\n this.opened = false;\n if (this.originalContext && !this.options.excludeContext) {\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END);\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_END);\n }\n else {\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END);\n }\n }\n /**\n * Push the end of a predicate and reset the buffers.\n * @param {boolean} comma If a comma should be appended.\n */\n endPredicate(comma) {\n // Close the predicate array\n this.indentation--;\n this.pushSeparator(comma ? SeparatorType_1.SeparatorType.ARRAY_END_COMMA : SeparatorType_1.SeparatorType.ARRAY_END);\n // Reset object buffer\n this.hadObjectForPredicate = false;\n this.objectOptions = null;\n // Reset predicate buffer\n this.lastPredicate = null;\n }\n /**\n * Push the end of a subject and reset the buffers.\n * @param {boolean} comma If a comma should be appended.\n */\n endSubject(comma) {\n // Close the last subject's node;\n this.indentation--;\n this.pushSeparator(comma ? SeparatorType_1.SeparatorType.OBJECT_END_COMMA : SeparatorType_1.SeparatorType.OBJECT_END);\n // Reset subject buffer\n this.lastSubject = null;\n }\n /**\n * Push the end of a graph and reset the buffers.\n * @param {boolean} comma If a comma should be appended.\n */\n endGraph(comma) {\n // Close the graph array\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END);\n // Close the graph id node\n this.indentation--;\n this.pushSeparator(comma ? SeparatorType_1.SeparatorType.OBJECT_END_COMMA : SeparatorType_1.SeparatorType.OBJECT_END);\n // Reset graph buffer\n this.lastGraph = null;\n }\n /**\n * Puh the given separator.\n * @param {SeparatorType} type A type of separator.\n */\n pushSeparator(type) {\n this.pushIndented(type.label);\n }\n /**\n * An indentation-aware variant of {@link #push}.\n * All strings that are pushed here will be prefixed by {@link #indentation} amount of spaces.\n * @param {string} data A string.\n * @param pushNewLine If a newline should be pushed afterwards.\n */\n pushIndented(data, pushNewLine = true) {\n const prefix = this.getIndentPrefix();\n const lines = data.split('\\n').map((line) => prefix + line).join('\\n');\n this.push(lines);\n if (this.options.space && pushNewLine) {\n this.push('\\n');\n }\n }\n /**\n * @return {string} Get the current indentation prefix based on {@link #indentation}.\n */\n getIndentPrefix() {\n return this.options.space ? this.options.space.repeat(this.indentation) : '';\n }\n}\nexports.JsonLdSerializer = JsonLdSerializer;\n//# sourceMappingURL=JsonLdSerializer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SeparatorType = void 0;\n/**\n * A type of JSON separator.\n */\nclass SeparatorType {\n constructor(label) {\n this.label = label;\n }\n}\nexports.SeparatorType = SeparatorType;\nSeparatorType.COMMA = new SeparatorType(',');\nSeparatorType.OBJECT_START = new SeparatorType('{');\nSeparatorType.OBJECT_END = new SeparatorType('}');\nSeparatorType.OBJECT_END_COMMA = new SeparatorType('},');\nSeparatorType.ARRAY_START = new SeparatorType('[');\nSeparatorType.ARRAY_END = new SeparatorType(']');\nSeparatorType.ARRAY_END_COMMA = new SeparatorType('],');\nSeparatorType.GRAPH_FIELD_NONCOMPACT = new SeparatorType('\"@graph\": [');\nSeparatorType.GRAPH_FIELD_COMPACT = new SeparatorType('\"@graph\":[');\nSeparatorType.CONTEXT_FIELD = new SeparatorType('\"@context\":');\n//# sourceMappingURL=SeparatorType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\n/**\n * Utility functions and methods.\n */\nclass Util {\n /**\n * Convert an RDF term to a JSON value.\n * @param {Term} term An RDF term.\n * @param {JsonLdContextNormalized} context The context.\n * @param {ITermToValueOptions} options Conversion options.\n * @return {any} A JSON value.\n */\n static termToValue(term, context, options = {\n compactIds: false,\n useNativeTypes: false,\n }) {\n switch (term.termType) {\n case 'NamedNode':\n const compacted = context.compactIri(term.value, options.vocab);\n return options.compactIds ? compacted : { '@id': compacted };\n case 'DefaultGraph':\n return options.compactIds ? term.value : { '@id': term.value };\n case 'BlankNode':\n const id = `_:${term.value}`;\n return options.compactIds ? id : { '@id': id };\n case 'Literal':\n // Handle JSON datatype\n if (term.datatype.value === Util.RDF_JSON) {\n let parsedJson;\n try {\n parsedJson = JSON.parse(term.value);\n }\n catch (e) {\n throw new jsonld_context_parser_1.ErrorCoded('Invalid JSON literal: ' + e.message, jsonld_context_parser_1.ERROR_CODES.INVALID_JSON_LITERAL);\n }\n return {\n '@value': parsedJson,\n '@type': '@json',\n };\n }\n // Handle rdfDirection: i18n-datatype\n if (options.rdfDirection === 'i18n-datatype' && term.datatype.value.startsWith(Util.I18N)) {\n const [language, direction] = term.datatype.value\n .substr(Util.I18N.length, term.datatype.value.length)\n .split('_');\n return Object.assign(Object.assign({ '@value': term.value }, language ? { '@language': language } : {}), direction ? { '@direction': direction } : {});\n }\n const stringType = term.datatype.value === Util.XSD_STRING;\n const rawValue = {\n '@value': !stringType && options.useNativeTypes\n ? Util.stringToNativeType(term.value, term.datatype.value) : term.value,\n };\n if (term.language) {\n return Object.assign(Object.assign({}, rawValue), { '@language': term.language });\n }\n else if (!stringType && typeof rawValue['@value'] === 'string') {\n return Object.assign(Object.assign({}, rawValue), { '@type': term.datatype.value });\n }\n else {\n return rawValue;\n }\n }\n }\n /**\n * Convert a string term to a native type.\n * If no conversion is possible, the original string will be returned.\n * @param {string} value An RDF term's string value.\n * @param {string} type\n * @return {any}\n */\n static stringToNativeType(value, type) {\n if (type.startsWith(Util.XSD)) {\n const xsdType = type.substr(Util.XSD.length);\n switch (xsdType) {\n case 'boolean':\n if (value === 'true') {\n return true;\n }\n else if (value === 'false') {\n return false;\n }\n throw new Error(`Invalid xsd:boolean value '${value}'`);\n case 'integer':\n case 'number':\n case 'int':\n case 'byte':\n case 'long':\n const parsedInt = parseInt(value, 10);\n if (isNaN(parsedInt)) {\n throw new Error(`Invalid xsd:integer value '${value}'`);\n }\n return parsedInt;\n case 'float':\n case 'double':\n const parsedFloat = parseFloat(value);\n if (isNaN(parsedFloat)) {\n throw new Error(`Invalid xsd:float value '${value}'`);\n }\n return parsedFloat;\n }\n }\n return value;\n }\n}\nexports.Util = Util;\nUtil.XSD = 'http://www.w3.org/2001/XMLSchema#';\nUtil.XSD_STRING = Util.XSD + 'string';\nUtil.RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';\nUtil.RDF_TYPE = Util.RDF + 'type';\nUtil.RDF_JSON = Util.RDF + 'JSON';\nUtil.I18N = 'https://www.w3.org/ns/i18n#';\n//# sourceMappingURL=Util.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","const RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n XSD = 'http://www.w3.org/2001/XMLSchema#',\n SWAP = 'http://www.w3.org/2000/10/swap/';\n\nexport default {\n xsd: {\n decimal: `${XSD}decimal`,\n boolean: `${XSD}boolean`,\n double: `${XSD}double`,\n integer: `${XSD}integer`,\n string: `${XSD}string`,\n },\n rdf: {\n type: `${RDF}type`,\n nil: `${RDF}nil`,\n first: `${RDF}first`,\n rest: `${RDF}rest`,\n langString: `${RDF}langString`,\n },\n owl: {\n sameAs: 'http://www.w3.org/2002/07/owl#sameAs',\n },\n r: {\n forSome: `${SWAP}reify#forSome`,\n forAll: `${SWAP}reify#forAll`,\n },\n log: {\n implies: `${SWAP}log#implies`,\n },\n};\n","// **N3Lexer** tokenizes N3 documents.\nimport queueMicrotask from 'queue-microtask';\nimport namespaces from './IRIs';\n\nconst { xsd } = namespaces;\n\n// Regular expression and replacement string to escape N3 strings\nconst escapeSequence = /\\\\u([a-fA-F0-9]{4})|\\\\U([a-fA-F0-9]{8})|\\\\([^])/g;\nconst escapeReplacements = {\n '\\\\': '\\\\', \"'\": \"'\", '\"': '\"',\n 'n': '\\n', 'r': '\\r', 't': '\\t', 'f': '\\f', 'b': '\\b',\n '_': '_', '~': '~', '.': '.', '-': '-', '!': '!', '$': '$', '&': '&',\n '(': '(', ')': ')', '*': '*', '+': '+', ',': ',', ';': ';', '=': '=',\n '/': '/', '?': '?', '#': '#', '@': '@', '%': '%',\n};\nconst illegalIriChars = /[\\x00-\\x20<>\\\\\"\\{\\}\\|\\^\\`]/;\n\nconst lineModeRegExps = {\n _iri: true,\n _unescapedIri: true,\n _simpleQuotedString: true,\n _langcode: true,\n _blank: true,\n _newline: true,\n _comment: true,\n _whitespace: true,\n _endOfFile: true,\n};\nconst invalidRegExp = /$0^/;\n\n// ## Constructor\nexport default class N3Lexer {\n constructor(options) {\n // ## Regular expressions\n // It's slightly faster to have these as properties than as in-scope variables\n this._iri = /^<((?:[^ <>{}\\\\]|\\\\[uU])+)>[ \\t]*/; // IRI with escape sequences; needs sanity check after unescaping\n this._unescapedIri = /^<([^\\x00-\\x20<>\\\\\"\\{\\}\\|\\^\\`]*)>[ \\t]*/; // IRI without escape sequences; no unescaping\n this._simpleQuotedString = /^\"([^\"\\\\\\r\\n]*)\"(?=[^\"])/; // string without escape sequences\n this._simpleApostropheString = /^'([^'\\\\\\r\\n]*)'(?=[^'])/;\n this._langcode = /^@([a-z]+(?:-[a-z0-9]+)*)(?=[^a-z0-9\\-])/i;\n this._prefix = /^((?:[A-Za-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)?:(?=[#\\s<])/;\n this._prefixed = /^((?:[A-Za-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)?:((?:(?:[0-:A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~])(?:(?:[\\.\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~])*(?:[\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~]))?)?)(?:[ \\t]+|(?=\\.?[,;!\\^\\s#()\\[\\]\\{\\}\"'<>]))/;\n this._variable = /^\\?(?:(?:[A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:[\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)(?=[.,;!\\^\\s#()\\[\\]\\{\\}\"'<>])/;\n this._blank = /^_:((?:[0-9A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)(?:[ \\t]+|(?=\\.?[,;:\\s#()\\[\\]\\{\\}\"'<>]))/;\n this._number = /^[\\-+]?(?:(\\d+\\.\\d*|\\.?\\d+)[eE][\\-+]?|\\d*(\\.)?)\\d+(?=\\.?[,;:\\s#()\\[\\]\\{\\}\"'<>])/;\n this._boolean = /^(?:true|false)(?=[.,;\\s#()\\[\\]\\{\\}\"'<>])/;\n this._keyword = /^@[a-z]+(?=[\\s#<:])/i;\n this._sparqlKeyword = /^(?:PREFIX|BASE|GRAPH)(?=[\\s#<])/i;\n this._shortPredicates = /^a(?=[\\s#()\\[\\]\\{\\}\"'<>])/;\n this._newline = /^[ \\t]*(?:#[^\\n\\r]*)?(?:\\r\\n|\\n|\\r)[ \\t]*/;\n this._comment = /#([^\\n\\r]*)/;\n this._whitespace = /^[ \\t]+/;\n this._endOfFile = /^(?:#[^\\n\\r]*)?$/;\n options = options || {};\n\n // In line mode (N-Triples or N-Quads), only simple features may be parsed\n if (this._lineMode = !!options.lineMode) {\n this._n3Mode = false;\n // Don't tokenize special literals\n for (const key in this) {\n if (!(key in lineModeRegExps) && this[key] instanceof RegExp)\n this[key] = invalidRegExp;\n }\n }\n // When not in line mode, enable N3 functionality by default\n else {\n this._n3Mode = options.n3 !== false;\n }\n // Don't output comment tokens by default\n this._comments = !!options.comments;\n // Cache the last tested closing position of long literals\n this._literalClosingPos = 0;\n }\n\n // ## Private methods\n\n // ### `_tokenizeToEnd` tokenizes as for as possible, emitting tokens through the callback\n _tokenizeToEnd(callback, inputFinished) {\n // Continue parsing as far as possible; the loop will return eventually\n let input = this._input;\n let currentLineLength = input.length;\n while (true) {\n // Count and skip whitespace lines\n let whiteSpaceMatch, comment;\n while (whiteSpaceMatch = this._newline.exec(input)) {\n // Try to find a comment\n if (this._comments && (comment = this._comment.exec(whiteSpaceMatch[0])))\n emitToken('comment', comment[1], '', this._line, whiteSpaceMatch[0].length);\n // Advance the input\n input = input.substr(whiteSpaceMatch[0].length, input.length);\n currentLineLength = input.length;\n this._line++;\n }\n // Skip whitespace on current line\n if (!whiteSpaceMatch && (whiteSpaceMatch = this._whitespace.exec(input)))\n input = input.substr(whiteSpaceMatch[0].length, input.length);\n\n // Stop for now if we're at the end\n if (this._endOfFile.test(input)) {\n // If the input is finished, emit EOF\n if (inputFinished) {\n // Try to find a final comment\n if (this._comments && (comment = this._comment.exec(input)))\n emitToken('comment', comment[1], '', this._line, input.length);\n input = null;\n emitToken('eof', '', '', this._line, 0);\n }\n return this._input = input;\n }\n\n // Look for specific token types based on the first character\n const line = this._line, firstChar = input[0];\n let type = '', value = '', prefix = '',\n match = null, matchLength = 0, inconclusive = false;\n switch (firstChar) {\n case '^':\n // We need at least 3 tokens lookahead to distinguish ^^ and ^^pre:fixed\n if (input.length < 3)\n break;\n // Try to match a type\n else if (input[1] === '^') {\n this._previousMarker = '^^';\n // Move to type IRI or prefixed name\n input = input.substr(2);\n if (input[0] !== '<') {\n inconclusive = true;\n break;\n }\n }\n // If no type, it must be a path expression\n else {\n if (this._n3Mode) {\n matchLength = 1;\n type = '^';\n }\n break;\n }\n // Fall through in case the type is an IRI\n case '<':\n // Try to find a full IRI without escape sequences\n if (match = this._unescapedIri.exec(input))\n type = 'IRI', value = match[1];\n // Try to find a full IRI with escape sequences\n else if (match = this._iri.exec(input)) {\n value = this._unescape(match[1]);\n if (value === null || illegalIriChars.test(value))\n return reportSyntaxError(this);\n type = 'IRI';\n }\n // Try to find a nested triple\n else if (input.length > 1 && input[1] === '<')\n type = '<<', matchLength = 2;\n // Try to find a backwards implication arrow\n else if (this._n3Mode && input.length > 1 && input[1] === '=')\n type = 'inverse', matchLength = 2, value = '>';\n break;\n\n case '>':\n if (input.length > 1 && input[1] === '>')\n type = '>>', matchLength = 2;\n break;\n\n case '_':\n // Try to find a blank node. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a blank node.\n // Therefore, try inserting a space if we're at the end of the input.\n if ((match = this._blank.exec(input)) ||\n inputFinished && (match = this._blank.exec(`${input} `)))\n type = 'blank', prefix = '_', value = match[1];\n break;\n\n case '\"':\n // Try to find a literal without escape sequences\n if (match = this._simpleQuotedString.exec(input))\n value = match[1];\n // Try to find a literal wrapped in three pairs of quotes\n else {\n ({ value, matchLength } = this._parseLiteral(input));\n if (value === null)\n return reportSyntaxError(this);\n }\n if (match !== null || matchLength !== 0) {\n type = 'literal';\n this._literalClosingPos = 0;\n }\n break;\n\n case \"'\":\n if (!this._lineMode) {\n // Try to find a literal without escape sequences\n if (match = this._simpleApostropheString.exec(input))\n value = match[1];\n // Try to find a literal wrapped in three pairs of quotes\n else {\n ({ value, matchLength } = this._parseLiteral(input));\n if (value === null)\n return reportSyntaxError(this);\n }\n if (match !== null || matchLength !== 0) {\n type = 'literal';\n this._literalClosingPos = 0;\n }\n }\n break;\n\n case '?':\n // Try to find a variable\n if (this._n3Mode && (match = this._variable.exec(input)))\n type = 'var', value = match[0];\n break;\n\n case '@':\n // Try to find a language code\n if (this._previousMarker === 'literal' && (match = this._langcode.exec(input)))\n type = 'langcode', value = match[1];\n // Try to find a keyword\n else if (match = this._keyword.exec(input))\n type = match[0];\n break;\n\n case '.':\n // Try to find a dot as punctuation\n if (input.length === 1 ? inputFinished : (input[1] < '0' || input[1] > '9')) {\n type = '.';\n matchLength = 1;\n break;\n }\n // Fall through to numerical case (could be a decimal dot)\n\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n case '+':\n case '-':\n // Try to find a number. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a number.\n // Therefore, try inserting a space if we're at the end of the input.\n if (match = this._number.exec(input) ||\n inputFinished && (match = this._number.exec(`${input} `))) {\n type = 'literal', value = match[0];\n prefix = (typeof match[1] === 'string' ? xsd.double :\n (typeof match[2] === 'string' ? xsd.decimal : xsd.integer));\n }\n break;\n\n case 'B':\n case 'b':\n case 'p':\n case 'P':\n case 'G':\n case 'g':\n // Try to find a SPARQL-style keyword\n if (match = this._sparqlKeyword.exec(input))\n type = match[0].toUpperCase();\n else\n inconclusive = true;\n break;\n\n case 'f':\n case 't':\n // Try to match a boolean\n if (match = this._boolean.exec(input))\n type = 'literal', value = match[0], prefix = xsd.boolean;\n else\n inconclusive = true;\n break;\n\n case 'a':\n // Try to find an abbreviated predicate\n if (match = this._shortPredicates.exec(input))\n type = 'abbreviation', value = 'a';\n else\n inconclusive = true;\n break;\n\n case '=':\n // Try to find an implication arrow or equals sign\n if (this._n3Mode && input.length > 1) {\n type = 'abbreviation';\n if (input[1] !== '>')\n matchLength = 1, value = '=';\n else\n matchLength = 2, value = '>';\n }\n break;\n\n case '!':\n if (!this._n3Mode)\n break;\n case ',':\n case ';':\n case '[':\n case ']':\n case '(':\n case ')':\n case '}':\n if (!this._lineMode) {\n matchLength = 1;\n type = firstChar;\n }\n break;\n case '{':\n // We need at least 2 tokens lookahead to distinguish \"{|\" and \"{ \"\n if (!this._lineMode && input.length >= 2) {\n // Try to find a quoted triple annotation start\n if (input[1] === '|')\n type = '{|', matchLength = 2;\n else\n type = firstChar, matchLength = 1;\n }\n break;\n case '|':\n // We need 2 tokens lookahead to parse \"|}\"\n // Try to find a quoted triple annotation end\n if (input.length >= 2 && input[1] === '}')\n type = '|}', matchLength = 2;\n break;\n\n default:\n inconclusive = true;\n }\n\n // Some first characters do not allow an immediate decision, so inspect more\n if (inconclusive) {\n // Try to find a prefix\n if ((this._previousMarker === '@prefix' || this._previousMarker === 'PREFIX') &&\n (match = this._prefix.exec(input)))\n type = 'prefix', value = match[1] || '';\n // Try to find a prefixed name. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a prefixed name.\n // Therefore, try inserting a space if we're at the end of the input.\n else if ((match = this._prefixed.exec(input)) ||\n inputFinished && (match = this._prefixed.exec(`${input} `)))\n type = 'prefixed', prefix = match[1] || '', value = this._unescape(match[2]);\n }\n\n // A type token is special: it can only be emitted after an IRI or prefixed name is read\n if (this._previousMarker === '^^') {\n switch (type) {\n case 'prefixed': type = 'type'; break;\n case 'IRI': type = 'typeIRI'; break;\n default: type = '';\n }\n }\n\n // What if nothing of the above was found?\n if (!type) {\n // We could be in streaming mode, and then we just wait for more input to arrive.\n // Otherwise, a syntax error has occurred in the input.\n // One exception: error on an unaccounted linebreak (= not inside a triple-quoted literal).\n if (inputFinished || (!/^'''|^\"\"\"/.test(input) && /\\n|\\r/.test(input)))\n return reportSyntaxError(this);\n else\n return this._input = input;\n }\n\n // Emit the parsed token\n const length = matchLength || match[0].length;\n const token = emitToken(type, value, prefix, line, length);\n this.previousToken = token;\n this._previousMarker = type;\n\n // Advance to next part to tokenize\n input = input.substr(length, input.length);\n }\n\n // Emits the token through the callback\n function emitToken(type, value, prefix, line, length) {\n const start = input ? currentLineLength - input.length : currentLineLength;\n const end = start + length;\n const token = { type, value, prefix, line, start, end };\n callback(null, token);\n return token;\n }\n // Signals the syntax error through the callback\n function reportSyntaxError(self) { callback(self._syntaxError(/^\\S*/.exec(input)[0])); }\n }\n\n // ### `_unescape` replaces N3 escape codes by their corresponding characters\n _unescape(item) {\n let invalid = false;\n const replaced = item.replace(escapeSequence, (sequence, unicode4, unicode8, escapedChar) => {\n // 4-digit unicode character\n if (typeof unicode4 === 'string')\n return String.fromCharCode(Number.parseInt(unicode4, 16));\n // 8-digit unicode character\n if (typeof unicode8 === 'string') {\n let charCode = Number.parseInt(unicode8, 16);\n return charCode <= 0xFFFF ? String.fromCharCode(Number.parseInt(unicode8, 16)) :\n String.fromCharCode(0xD800 + ((charCode -= 0x10000) >> 10), 0xDC00 + (charCode & 0x3FF));\n }\n // fixed escape sequence\n if (escapedChar in escapeReplacements)\n return escapeReplacements[escapedChar];\n // invalid escape sequence\n invalid = true;\n return '';\n });\n return invalid ? null : replaced;\n }\n\n // ### `_parseLiteral` parses a literal into an unescaped value\n _parseLiteral(input) {\n // Ensure we have enough lookahead to identify triple-quoted strings\n if (input.length >= 3) {\n // Identify the opening quote(s)\n const opening = input.match(/^(?:\"\"\"|\"|'''|'|)/)[0];\n const openingLength = opening.length;\n\n // Find the next candidate closing quotes\n let closingPos = Math.max(this._literalClosingPos, openingLength);\n while ((closingPos = input.indexOf(opening, closingPos)) > 0) {\n // Count backslashes right before the closing quotes\n let backslashCount = 0;\n while (input[closingPos - backslashCount - 1] === '\\\\')\n backslashCount++;\n\n // An even number of backslashes (in particular 0)\n // means these are actual, non-escaped closing quotes\n if (backslashCount % 2 === 0) {\n // Extract and unescape the value\n const raw = input.substring(openingLength, closingPos);\n const lines = raw.split(/\\r\\n|\\r|\\n/).length - 1;\n const matchLength = closingPos + openingLength;\n // Only triple-quoted strings can be multi-line\n if (openingLength === 1 && lines !== 0 ||\n openingLength === 3 && this._lineMode)\n break;\n this._line += lines;\n return { value: this._unescape(raw), matchLength };\n }\n closingPos++;\n }\n this._literalClosingPos = input.length - openingLength + 1;\n }\n return { value: '', matchLength: 0 };\n }\n\n // ### `_syntaxError` creates a syntax error for the given issue\n _syntaxError(issue) {\n this._input = null;\n const err = new Error(`Unexpected \"${issue}\" on line ${this._line}.`);\n err.context = {\n token: undefined,\n line: this._line,\n previousToken: this.previousToken,\n };\n return err;\n }\n\n // ### Strips off any starting UTF BOM mark.\n _readStartingBom(input) {\n return input.startsWith('\\ufeff') ? input.substr(1) : input;\n }\n\n // ## Public methods\n\n // ### `tokenize` starts the transformation of an N3 document into an array of tokens.\n // The input can be a string or a stream.\n tokenize(input, callback) {\n this._line = 1;\n\n // If the input is a string, continuously emit tokens through the callback until the end\n if (typeof input === 'string') {\n this._input = this._readStartingBom(input);\n // If a callback was passed, asynchronously call it\n if (typeof callback === 'function')\n queueMicrotask(() => this._tokenizeToEnd(callback, true));\n // If no callback was passed, tokenize synchronously and return\n else {\n const tokens = [];\n let error;\n this._tokenizeToEnd((e, t) => e ? (error = e) : tokens.push(t), true);\n if (error) throw error;\n return tokens;\n }\n }\n // Otherwise, the input must be a stream\n else {\n this._pendingBuffer = null;\n if (typeof input.setEncoding === 'function')\n input.setEncoding('utf8');\n // Adds the data chunk to the buffer and parses as far as possible\n input.on('data', data => {\n if (this._input !== null && data.length !== 0) {\n // Prepend any previous pending writes\n if (this._pendingBuffer) {\n data = Buffer.concat([this._pendingBuffer, data]);\n this._pendingBuffer = null;\n }\n // Hold if the buffer ends in an incomplete unicode sequence\n if (data[data.length - 1] & 0x80) {\n this._pendingBuffer = data;\n }\n // Otherwise, tokenize as far as possible\n else {\n // Only read a BOM at the start\n if (typeof this._input === 'undefined')\n this._input = this._readStartingBom(typeof data === 'string' ? data : data.toString());\n else\n this._input += data;\n this._tokenizeToEnd(callback, false);\n }\n }\n });\n // Parses until the end\n input.on('end', () => {\n if (typeof this._input === 'string')\n this._tokenizeToEnd(callback, true);\n });\n input.on('error', callback);\n }\n }\n}\n","// N3.js implementations of the RDF/JS core data types\n// See https://github.com/rdfjs/representation-task-force/blob/master/interface-spec.md\n\nimport namespaces from './IRIs';\n\nconst { rdf, xsd } = namespaces;\n\n// eslint-disable-next-line prefer-const\nlet DEFAULTGRAPH;\nlet _blankNodeCounter = 0;\n\nconst escapedLiteral = /^\"(.*\".*)(?=\"[^\"]*$)/;\n\n// ## DataFactory singleton\nconst DataFactory = {\n namedNode,\n blankNode,\n variable,\n literal,\n defaultGraph,\n quad,\n triple: quad,\n};\nexport default DataFactory;\n\n// ## Term constructor\nexport class Term {\n constructor(id) {\n this.id = id;\n }\n\n // ### The value of this term\n get value() {\n return this.id;\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both terms were created by this library,\n // equality can be computed through ids\n if (other instanceof Term)\n return this.id === other.id;\n // Otherwise, compare term type and value\n return !!other && this.termType === other.termType &&\n this.value === other.value;\n }\n\n // ### Implement hashCode for Immutable.js, since we implement `equals`\n // https://immutable-js.com/docs/v4.0.0/ValueObject/#hashCode()\n hashCode() {\n return 0;\n }\n\n // ### Returns a plain object representation of this term\n toJSON() {\n return {\n termType: this.termType,\n value: this.value,\n };\n }\n}\n\n\n// ## NamedNode constructor\nexport class NamedNode extends Term {\n // ### The term type of this term\n get termType() {\n return 'NamedNode';\n }\n}\n\n// ## Literal constructor\nexport class Literal extends Term {\n // ### The term type of this term\n get termType() {\n return 'Literal';\n }\n\n // ### The text value of this literal\n get value() {\n return this.id.substring(1, this.id.lastIndexOf('\"'));\n }\n\n // ### The language of this literal\n get language() {\n // Find the last quotation mark (e.g., '\"abc\"@en-us')\n const id = this.id;\n let atPos = id.lastIndexOf('\"') + 1;\n // If \"@\" it follows, return the remaining substring; empty otherwise\n return atPos < id.length && id[atPos++] === '@' ? id.substr(atPos).toLowerCase() : '';\n }\n\n // ### The datatype IRI of this literal\n get datatype() {\n return new NamedNode(this.datatypeString);\n }\n\n // ### The datatype string of this literal\n get datatypeString() {\n // Find the last quotation mark (e.g., '\"abc\"^^http://ex.org/types#t')\n const id = this.id, dtPos = id.lastIndexOf('\"') + 1;\n const char = dtPos < id.length ? id[dtPos] : '';\n // If \"^\" it follows, return the remaining substring\n return char === '^' ? id.substr(dtPos + 2) :\n // If \"@\" follows, return rdf:langString; xsd:string otherwise\n (char !== '@' ? xsd.string : rdf.langString);\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both literals were created by this library,\n // equality can be computed through ids\n if (other instanceof Literal)\n return this.id === other.id;\n // Otherwise, compare term type, value, language, and datatype\n return !!other && !!other.datatype &&\n this.termType === other.termType &&\n this.value === other.value &&\n this.language === other.language &&\n this.datatype.value === other.datatype.value;\n }\n\n toJSON() {\n return {\n termType: this.termType,\n value: this.value,\n language: this.language,\n datatype: { termType: 'NamedNode', value: this.datatypeString },\n };\n }\n}\n\n// ## BlankNode constructor\nexport class BlankNode extends Term {\n constructor(name) {\n super(`_:${name}`);\n }\n\n // ### The term type of this term\n get termType() {\n return 'BlankNode';\n }\n\n // ### The name of this blank node\n get value() {\n return this.id.substr(2);\n }\n}\n\nexport class Variable extends Term {\n constructor(name) {\n super(`?${name}`);\n }\n\n // ### The term type of this term\n get termType() {\n return 'Variable';\n }\n\n // ### The name of this variable\n get value() {\n return this.id.substr(1);\n }\n}\n\n// ## DefaultGraph constructor\nexport class DefaultGraph extends Term {\n constructor() {\n super('');\n return DEFAULTGRAPH || this;\n }\n\n // ### The term type of this term\n get termType() {\n return 'DefaultGraph';\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both terms were created by this library,\n // equality can be computed through strict equality;\n // otherwise, compare term types.\n return (this === other) || (!!other && (this.termType === other.termType));\n }\n}\n\n// ## DefaultGraph singleton\nDEFAULTGRAPH = new DefaultGraph();\n\n// ### Constructs a term from the given internal string ID\n// The third 'nested' parameter of this function is to aid\n// with recursion over nested terms. It should not be used\n// by consumers of this library.\n// See https://github.com/rdfjs/N3.js/pull/311#discussion_r1061042725\nexport function termFromId(id, factory, nested) {\n factory = factory || DataFactory;\n\n // Falsy value or empty string indicate the default graph\n if (!id)\n return factory.defaultGraph();\n\n // Identify the term type based on the first character\n switch (id[0]) {\n case '?':\n return factory.variable(id.substr(1));\n case '_':\n return factory.blankNode(id.substr(2));\n case '\"':\n // Shortcut for internal literals\n if (factory === DataFactory)\n return new Literal(id);\n // Literal without datatype or language\n if (id[id.length - 1] === '\"')\n return factory.literal(id.substr(1, id.length - 2));\n // Literal with datatype or language\n const endPos = id.lastIndexOf('\"', id.length - 1);\n return factory.literal(id.substr(1, endPos - 1),\n id[endPos + 1] === '@' ? id.substr(endPos + 2)\n : factory.namedNode(id.substr(endPos + 3)));\n case '[':\n id = JSON.parse(id);\n break;\n default:\n if (!nested || !Array.isArray(id)) {\n return factory.namedNode(id);\n }\n }\n return factory.quad(\n termFromId(id[0], factory, true),\n termFromId(id[1], factory, true),\n termFromId(id[2], factory, true),\n id[3] && termFromId(id[3], factory, true)\n );\n}\n\n// ### Constructs an internal string ID from the given term or ID string\n// The third 'nested' parameter of this function is to aid\n// with recursion over nested terms. It should not be used\n// by consumers of this library.\n// See https://github.com/rdfjs/N3.js/pull/311#discussion_r1061042725\nexport function termToId(term, nested) {\n if (typeof term === 'string')\n return term;\n if (term instanceof Term && term.termType !== 'Quad')\n return term.id;\n if (!term)\n return DEFAULTGRAPH.id;\n\n // Term instantiated with another library\n switch (term.termType) {\n case 'NamedNode': return term.value;\n case 'BlankNode': return `_:${term.value}`;\n case 'Variable': return `?${term.value}`;\n case 'DefaultGraph': return '';\n case 'Literal': return `\"${term.value}\"${\n term.language ? `@${term.language}` :\n (term.datatype && term.datatype.value !== xsd.string ? `^^${term.datatype.value}` : '')}`;\n case 'Quad':\n const res = [\n termToId(term.subject, true),\n termToId(term.predicate, true),\n termToId(term.object, true),\n ];\n if (term.graph && term.graph.termType !== 'DefaultGraph') {\n res.push(termToId(term.graph, true));\n }\n return nested ? res : JSON.stringify(res);\n default: throw new Error(`Unexpected termType: ${term.termType}`);\n }\n}\n\n\n// ## Quad constructor\nexport class Quad extends Term {\n constructor(subject, predicate, object, graph) {\n super('');\n this._subject = subject;\n this._predicate = predicate;\n this._object = object;\n this._graph = graph || DEFAULTGRAPH;\n }\n\n // ### The term type of this term\n get termType() {\n return 'Quad';\n }\n\n get subject() {\n return this._subject;\n }\n\n get predicate() {\n return this._predicate;\n }\n\n get object() {\n return this._object;\n }\n\n get graph() {\n return this._graph;\n }\n\n // ### Returns a plain object representation of this quad\n toJSON() {\n return {\n termType: this.termType,\n subject: this._subject.toJSON(),\n predicate: this._predicate.toJSON(),\n object: this._object.toJSON(),\n graph: this._graph.toJSON(),\n };\n }\n\n // ### Returns whether this object represents the same quad as the other\n equals(other) {\n return !!other && this._subject.equals(other.subject) &&\n this._predicate.equals(other.predicate) &&\n this._object.equals(other.object) &&\n this._graph.equals(other.graph);\n }\n}\nexport { Quad as Triple };\n\n// ### Escapes the quotes within the given literal\nexport function escapeQuotes(id) {\n return id.replace(escapedLiteral, (_, quoted) => `\"${quoted.replace(/\"/g, '\"\"')}`);\n}\n\n// ### Unescapes the quotes within the given literal\nexport function unescapeQuotes(id) {\n return id.replace(escapedLiteral, (_, quoted) => `\"${quoted.replace(/\"\"/g, '\"')}`);\n}\n\n// ### Creates an IRI\nfunction namedNode(iri) {\n return new NamedNode(iri);\n}\n\n// ### Creates a blank node\nfunction blankNode(name) {\n return new BlankNode(name || `n3-${_blankNodeCounter++}`);\n}\n\n// ### Creates a literal\nfunction literal(value, languageOrDataType) {\n // Create a language-tagged string\n if (typeof languageOrDataType === 'string')\n return new Literal(`\"${value}\"@${languageOrDataType.toLowerCase()}`);\n\n // Automatically determine datatype for booleans and numbers\n let datatype = languageOrDataType ? languageOrDataType.value : '';\n if (datatype === '') {\n // Convert a boolean\n if (typeof value === 'boolean')\n datatype = xsd.boolean;\n // Convert an integer or double\n else if (typeof value === 'number') {\n if (Number.isFinite(value))\n datatype = Number.isInteger(value) ? xsd.integer : xsd.double;\n else {\n datatype = xsd.double;\n if (!Number.isNaN(value))\n value = value > 0 ? 'INF' : '-INF';\n }\n }\n }\n\n // Create a datatyped literal\n return (datatype === '' || datatype === xsd.string) ?\n new Literal(`\"${value}\"`) :\n new Literal(`\"${value}\"^^${datatype}`);\n}\n\n// ### Creates a variable\nfunction variable(name) {\n return new Variable(name);\n}\n\n// ### Returns the default graph\nfunction defaultGraph() {\n return DEFAULTGRAPH;\n}\n\n// ### Creates a quad\nfunction quad(subject, predicate, object, graph) {\n return new Quad(subject, predicate, object, graph);\n}\n","// **N3Parser** parses N3 documents.\nimport N3Lexer from './N3Lexer';\nimport N3DataFactory from './N3DataFactory';\nimport namespaces from './IRIs';\n\nlet blankNodePrefix = 0;\n\n// ## Constructor\nexport default class N3Parser {\n constructor(options) {\n this._contextStack = [];\n this._graph = null;\n\n // Set the document IRI\n options = options || {};\n this._setBase(options.baseIRI);\n options.factory && initDataFactory(this, options.factory);\n\n // Set supported features depending on the format\n const format = (typeof options.format === 'string') ?\n options.format.match(/\\w*$/)[0].toLowerCase() : '',\n isTurtle = /turtle/.test(format), isTriG = /trig/.test(format),\n isNTriples = /triple/.test(format), isNQuads = /quad/.test(format),\n isN3 = this._n3Mode = /n3/.test(format),\n isLineMode = isNTriples || isNQuads;\n if (!(this._supportsNamedGraphs = !(isTurtle || isN3)))\n this._readPredicateOrNamedGraph = this._readPredicate;\n // Support triples in other graphs\n this._supportsQuads = !(isTurtle || isTriG || isNTriples || isN3);\n // Support nesting of triples\n this._supportsRDFStar = format === '' || /star|\\*$/.test(format);\n // Disable relative IRIs in N-Triples or N-Quads mode\n if (isLineMode)\n this._resolveRelativeIRI = iri => { return null; };\n this._blankNodePrefix = typeof options.blankNodePrefix !== 'string' ? '' :\n options.blankNodePrefix.replace(/^(?!_:)/, '_:');\n this._lexer = options.lexer || new N3Lexer({ lineMode: isLineMode, n3: isN3 });\n // Disable explicit quantifiers by default\n this._explicitQuantifiers = !!options.explicitQuantifiers;\n }\n\n // ## Static class methods\n\n // ### `_resetBlankNodePrefix` restarts blank node prefix identification\n static _resetBlankNodePrefix() {\n blankNodePrefix = 0;\n }\n\n // ## Private methods\n\n // ### `_setBase` sets the base IRI to resolve relative IRIs\n _setBase(baseIRI) {\n if (!baseIRI) {\n this._base = '';\n this._basePath = '';\n }\n else {\n // Remove fragment if present\n const fragmentPos = baseIRI.indexOf('#');\n if (fragmentPos >= 0)\n baseIRI = baseIRI.substr(0, fragmentPos);\n // Set base IRI and its components\n this._base = baseIRI;\n this._basePath = baseIRI.indexOf('/') < 0 ? baseIRI :\n baseIRI.replace(/[^\\/?]*(?:\\?.*)?$/, '');\n baseIRI = baseIRI.match(/^(?:([a-z][a-z0-9+.-]*:))?(?:\\/\\/[^\\/]*)?/i);\n this._baseRoot = baseIRI[0];\n this._baseScheme = baseIRI[1];\n }\n }\n\n // ### `_saveContext` stores the current parsing context\n // when entering a new scope (list, blank node, formula)\n _saveContext(type, graph, subject, predicate, object) {\n const n3Mode = this._n3Mode;\n this._contextStack.push({\n type,\n subject, predicate, object, graph,\n inverse: n3Mode ? this._inversePredicate : false,\n blankPrefix: n3Mode ? this._prefixes._ : '',\n quantified: n3Mode ? this._quantified : null,\n });\n // The settings below only apply to N3 streams\n if (n3Mode) {\n // Every new scope resets the predicate direction\n this._inversePredicate = false;\n // In N3, blank nodes are scoped to a formula\n // (using a dot as separator, as a blank node label cannot start with it)\n this._prefixes._ = (this._graph ? `${this._graph.value}.` : '.');\n // Quantifiers are scoped to a formula\n this._quantified = Object.create(this._quantified);\n }\n }\n\n // ### `_restoreContext` restores the parent context\n // when leaving a scope (list, blank node, formula)\n _restoreContext(type, token) {\n // Obtain the previous context\n const context = this._contextStack.pop();\n if (!context || context.type !== type)\n return this._error(`Unexpected ${token.type}`, token);\n\n // Restore the quad of the previous context\n this._subject = context.subject;\n this._predicate = context.predicate;\n this._object = context.object;\n this._graph = context.graph;\n\n // Restore N3 context settings\n if (this._n3Mode) {\n this._inversePredicate = context.inverse;\n this._prefixes._ = context.blankPrefix;\n this._quantified = context.quantified;\n }\n }\n\n // ### `_readInTopContext` reads a token when in the top context\n _readInTopContext(token) {\n switch (token.type) {\n // If an EOF token arrives in the top context, signal that we're done\n case 'eof':\n if (this._graph !== null)\n return this._error('Unclosed graph', token);\n delete this._prefixes._;\n return this._callback(null, null, this._prefixes);\n // It could be a prefix declaration\n case 'PREFIX':\n this._sparqlStyle = true;\n case '@prefix':\n return this._readPrefix;\n // It could be a base declaration\n case 'BASE':\n this._sparqlStyle = true;\n case '@base':\n return this._readBaseIRI;\n // It could be a graph\n case '{':\n if (this._supportsNamedGraphs) {\n this._graph = '';\n this._subject = null;\n return this._readSubject;\n }\n case 'GRAPH':\n if (this._supportsNamedGraphs)\n return this._readNamedGraphLabel;\n // Otherwise, the next token must be a subject\n default:\n return this._readSubject(token);\n }\n }\n\n // ### `_readEntity` reads an IRI, prefixed name, blank node, or variable\n _readEntity(token, quantifier) {\n let value;\n switch (token.type) {\n // Read a relative or absolute IRI\n case 'IRI':\n case 'typeIRI':\n const iri = this._resolveIRI(token.value);\n if (iri === null)\n return this._error('Invalid IRI', token);\n value = this._namedNode(iri);\n break;\n // Read a prefixed name\n case 'type':\n case 'prefixed':\n const prefix = this._prefixes[token.prefix];\n if (prefix === undefined)\n return this._error(`Undefined prefix \"${token.prefix}:\"`, token);\n value = this._namedNode(prefix + token.value);\n break;\n // Read a blank node\n case 'blank':\n value = this._blankNode(this._prefixes[token.prefix] + token.value);\n break;\n // Read a variable\n case 'var':\n value = this._variable(token.value.substr(1));\n break;\n // Everything else is not an entity\n default:\n return this._error(`Expected entity but got ${token.type}`, token);\n }\n // In N3 mode, replace the entity if it is quantified\n if (!quantifier && this._n3Mode && (value.id in this._quantified))\n value = this._quantified[value.id];\n return value;\n }\n\n // ### `_readSubject` reads a quad's subject\n _readSubject(token) {\n this._predicate = null;\n switch (token.type) {\n case '[':\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph,\n this._subject = this._blankNode(), null, null);\n return this._readBlankNodeHead;\n case '(':\n // Start a new list\n this._saveContext('list', this._graph, this.RDF_NIL, null, null);\n this._subject = null;\n return this._readListItem;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph,\n this._graph = this._blankNode(), null, null);\n return this._readSubject;\n case '}':\n // No subject; the graph in which we are reading is closed instead\n return this._readPunctuation(token);\n case '@forSome':\n if (!this._n3Mode)\n return this._error('Unexpected \"@forSome\"', token);\n this._subject = null;\n this._predicate = this.N3_FORSOME;\n this._quantifier = this._blankNode;\n return this._readQuantifierList;\n case '@forAll':\n if (!this._n3Mode)\n return this._error('Unexpected \"@forAll\"', token);\n this._subject = null;\n this._predicate = this.N3_FORALL;\n this._quantifier = this._variable;\n return this._readQuantifierList;\n case 'literal':\n if (!this._n3Mode)\n return this._error('Unexpected literal', token);\n\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n return this._completeSubjectLiteral;\n }\n else\n this._subject = this._literal(token.value, this._namedNode(token.prefix));\n\n break;\n case '<<':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n this._saveContext('<<', this._graph, null, null, null);\n this._graph = null;\n return this._readSubject;\n default:\n // Read the subject entity\n if ((this._subject = this._readEntity(token)) === undefined)\n return;\n // In N3 mode, the subject might be a path\n if (this._n3Mode)\n return this._getPathReader(this._readPredicateOrNamedGraph);\n }\n\n // The next token must be a predicate,\n // or, if the subject was actually a graph IRI, a named graph\n return this._readPredicateOrNamedGraph;\n }\n\n // ### `_readPredicate` reads a quad's predicate\n _readPredicate(token) {\n const type = token.type;\n switch (type) {\n case 'inverse':\n this._inversePredicate = true;\n case 'abbreviation':\n this._predicate = this.ABBREVIATIONS[token.value];\n break;\n case '.':\n case ']':\n case '}':\n // Expected predicate didn't come, must have been trailing semicolon\n if (this._predicate === null)\n return this._error(`Unexpected ${type}`, token);\n this._subject = null;\n return type === ']' ? this._readBlankNodeTail(token) : this._readPunctuation(token);\n case ';':\n // Additional semicolons can be safely ignored\n return this._predicate !== null ? this._readPredicate :\n this._error('Expected predicate but got ;', token);\n case '[':\n if (this._n3Mode) {\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph, this._subject,\n this._subject = this._blankNode(), null);\n return this._readBlankNodeHead;\n }\n case 'blank':\n if (!this._n3Mode)\n return this._error('Disallowed blank node as predicate', token);\n default:\n if ((this._predicate = this._readEntity(token)) === undefined)\n return;\n }\n // The next token must be an object\n return this._readObject;\n }\n\n // ### `_readObject` reads a quad's object\n _readObject(token) {\n switch (token.type) {\n case 'literal':\n // Regular literal, can still get a datatype or language\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n return this._readDataTypeOrLang;\n }\n // Pre-datatyped string literal (prefix stores the datatype)\n else\n this._object = this._literal(token.value, this._namedNode(token.prefix));\n break;\n case '[':\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph, this._subject, this._predicate,\n this._subject = this._blankNode());\n return this._readBlankNodeHead;\n case '(':\n // Start a new list\n this._saveContext('list', this._graph, this._subject, this._predicate, this.RDF_NIL);\n this._subject = null;\n return this._readListItem;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph, this._subject, this._predicate,\n this._graph = this._blankNode());\n return this._readSubject;\n case '<<':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n this._saveContext('<<', this._graph, this._subject, this._predicate, null);\n this._graph = null;\n return this._readSubject;\n default:\n // Read the object entity\n if ((this._object = this._readEntity(token)) === undefined)\n return;\n // In N3 mode, the object might be a path\n if (this._n3Mode)\n return this._getPathReader(this._getContextEndReader());\n }\n return this._getContextEndReader();\n }\n\n // ### `_readPredicateOrNamedGraph` reads a quad's predicate, or a named graph\n _readPredicateOrNamedGraph(token) {\n return token.type === '{' ? this._readGraph(token) : this._readPredicate(token);\n }\n\n // ### `_readGraph` reads a graph\n _readGraph(token) {\n if (token.type !== '{')\n return this._error(`Expected graph but got ${token.type}`, token);\n // The \"subject\" we read is actually the GRAPH's label\n this._graph = this._subject, this._subject = null;\n return this._readSubject;\n }\n\n // ### `_readBlankNodeHead` reads the head of a blank node\n _readBlankNodeHead(token) {\n if (token.type === ']') {\n this._subject = null;\n return this._readBlankNodeTail(token);\n }\n else {\n this._predicate = null;\n return this._readPredicate(token);\n }\n }\n\n // ### `_readBlankNodeTail` reads the end of a blank node\n _readBlankNodeTail(token) {\n if (token.type !== ']')\n return this._readBlankNodePunctuation(token);\n\n // Store blank node quad\n if (this._subject !== null)\n this._emit(this._subject, this._predicate, this._object, this._graph);\n\n // Restore the parent context containing this blank node\n const empty = this._predicate === null;\n this._restoreContext('blank', token);\n // If the blank node was the object, restore previous context and read punctuation\n if (this._object !== null)\n return this._getContextEndReader();\n // If the blank node was the predicate, continue reading the object\n else if (this._predicate !== null)\n return this._readObject;\n // If the blank node was the subject, continue reading the predicate\n else\n // If the blank node was empty, it could be a named graph label\n return empty ? this._readPredicateOrNamedGraph : this._readPredicateAfterBlank;\n }\n\n // ### `_readPredicateAfterBlank` reads a predicate after an anonymous blank node\n _readPredicateAfterBlank(token) {\n switch (token.type) {\n case '.':\n case '}':\n // No predicate is coming if the triple is terminated here\n this._subject = null;\n return this._readPunctuation(token);\n default:\n return this._readPredicate(token);\n }\n }\n\n // ### `_readListItem` reads items from a list\n _readListItem(token) {\n let item = null, // The item of the list\n list = null, // The list itself\n next = this._readListItem; // The next function to execute\n const previousList = this._subject, // The previous list that contains this list\n stack = this._contextStack, // The stack of parent contexts\n parent = stack[stack.length - 1]; // The parent containing the current list\n\n switch (token.type) {\n case '[':\n // Stack the current list quad and start a new quad with a blank node as subject\n this._saveContext('blank', this._graph,\n list = this._blankNode(), this.RDF_FIRST,\n this._subject = item = this._blankNode());\n next = this._readBlankNodeHead;\n break;\n case '(':\n // Stack the current list quad and start a new list\n this._saveContext('list', this._graph,\n list = this._blankNode(), this.RDF_FIRST, this.RDF_NIL);\n this._subject = null;\n break;\n case ')':\n // Closing the list; restore the parent context\n this._restoreContext('list', token);\n // If this list is contained within a parent list, return the membership quad here.\n // This will be ` rdf:first .`.\n if (stack.length !== 0 && stack[stack.length - 1].type === 'list')\n this._emit(this._subject, this._predicate, this._object, this._graph);\n // Was this list the parent's subject?\n if (this._predicate === null) {\n // The next token is the predicate\n next = this._readPredicate;\n // No list tail if this was an empty list\n if (this._subject === this.RDF_NIL)\n return next;\n }\n // The list was in the parent context's object\n else {\n next = this._getContextEndReader();\n // No list tail if this was an empty list\n if (this._object === this.RDF_NIL)\n return next;\n }\n // Close the list by making the head nil\n list = this.RDF_NIL;\n break;\n case 'literal':\n // Regular literal, can still get a datatype or language\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n next = this._readListItemDataTypeOrLang;\n }\n // Pre-datatyped string literal (prefix stores the datatype)\n else {\n item = this._literal(token.value, this._namedNode(token.prefix));\n next = this._getContextEndReader();\n }\n break;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph, this._subject, this._predicate,\n this._graph = this._blankNode());\n return this._readSubject;\n default:\n if ((item = this._readEntity(token)) === undefined)\n return;\n }\n\n // Create a new blank node if no item head was assigned yet\n if (list === null)\n this._subject = list = this._blankNode();\n\n // Is this the first element of the list?\n if (previousList === null) {\n // This list is either the subject or the object of its parent\n if (parent.predicate === null)\n parent.subject = list;\n else\n parent.object = list;\n }\n else {\n // Continue the previous list with the current list\n this._emit(previousList, this.RDF_REST, list, this._graph);\n }\n // If an item was read, add it to the list\n if (item !== null) {\n // In N3 mode, the item might be a path\n if (this._n3Mode && (token.type === 'IRI' || token.type === 'prefixed')) {\n // Create a new context to add the item's path\n this._saveContext('item', this._graph, list, this.RDF_FIRST, item);\n this._subject = item, this._predicate = null;\n // _readPath will restore the context and output the item\n return this._getPathReader(this._readListItem);\n }\n // Output the item\n this._emit(list, this.RDF_FIRST, item, this._graph);\n }\n return next;\n }\n\n // ### `_readDataTypeOrLang` reads an _optional_ datatype or language\n _readDataTypeOrLang(token) {\n return this._completeObjectLiteral(token, false);\n }\n\n\n // ### `_readListItemDataTypeOrLang` reads an _optional_ datatype or language in a list\n _readListItemDataTypeOrLang(token) {\n return this._completeObjectLiteral(token, true);\n }\n\n // ### `_completeLiteral` completes a literal with an optional datatype or language\n _completeLiteral(token) {\n // Create a simple string literal by default\n let literal = this._literal(this._literalValue);\n\n switch (token.type) {\n // Create a datatyped literal\n case 'type':\n case 'typeIRI':\n const datatype = this._readEntity(token);\n if (datatype === undefined) return; // No datatype means an error occurred\n literal = this._literal(this._literalValue, datatype);\n token = null;\n break;\n // Create a language-tagged string\n case 'langcode':\n literal = this._literal(this._literalValue, token.value);\n token = null;\n break;\n }\n\n return { token, literal };\n }\n\n // Completes a literal in subject position\n _completeSubjectLiteral(token) {\n this._subject = this._completeLiteral(token).literal;\n return this._readPredicateOrNamedGraph;\n }\n\n // Completes a literal in object position\n _completeObjectLiteral(token, listItem) {\n const completed = this._completeLiteral(token);\n if (!completed)\n return;\n this._object = completed.literal;\n\n // If this literal was part of a list, write the item\n // (we could also check the context stack, but passing in a flag is faster)\n if (listItem)\n this._emit(this._subject, this.RDF_FIRST, this._object, this._graph);\n // If the token was consumed, continue with the rest of the input\n if (completed.token === null)\n return this._getContextEndReader();\n // Otherwise, consume the token now\n else {\n this._readCallback = this._getContextEndReader();\n return this._readCallback(completed.token);\n }\n }\n\n // ### `_readFormulaTail` reads the end of a formula\n _readFormulaTail(token) {\n if (token.type !== '}')\n return this._readPunctuation(token);\n\n // Store the last quad of the formula\n if (this._subject !== null)\n this._emit(this._subject, this._predicate, this._object, this._graph);\n\n // Restore the parent context containing this formula\n this._restoreContext('formula', token);\n // If the formula was the subject, continue reading the predicate.\n // If the formula was the object, read punctuation.\n return this._object === null ? this._readPredicate : this._getContextEndReader();\n }\n\n // ### `_readPunctuation` reads punctuation between quads or quad parts\n _readPunctuation(token) {\n let next, graph = this._graph;\n const subject = this._subject, inversePredicate = this._inversePredicate;\n switch (token.type) {\n // A closing brace ends a graph\n case '}':\n if (this._graph === null)\n return this._error('Unexpected graph closing', token);\n if (this._n3Mode)\n return this._readFormulaTail(token);\n this._graph = null;\n // A dot just ends the statement, without sharing anything with the next\n case '.':\n this._subject = null;\n next = this._contextStack.length ? this._readSubject : this._readInTopContext;\n if (inversePredicate) this._inversePredicate = false;\n break;\n // Semicolon means the subject is shared; predicate and object are different\n case ';':\n next = this._readPredicate;\n break;\n // Comma means both the subject and predicate are shared; the object is different\n case ',':\n next = this._readObject;\n break;\n // {| means that the current triple is annotated with predicate-object pairs.\n case '{|':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n // Continue using the last triple as quoted triple subject for the predicate-object pairs.\n const predicate = this._predicate, object = this._object;\n this._subject = this._quad(subject, predicate, object, this.DEFAULTGRAPH);\n next = this._readPredicate;\n break;\n // |} means that the current quoted triple in annotation syntax is finalized.\n case '|}':\n if (this._subject.termType !== 'Quad')\n return this._error('Unexpected asserted triple closing', token);\n this._subject = null;\n next = this._readPunctuation;\n break;\n default:\n // An entity means this is a quad (only allowed if not already inside a graph)\n if (this._supportsQuads && this._graph === null && (graph = this._readEntity(token)) !== undefined) {\n next = this._readQuadPunctuation;\n break;\n }\n return this._error(`Expected punctuation to follow \"${this._object.id}\"`, token);\n }\n // A quad has been completed now, so return it\n if (subject !== null) {\n const predicate = this._predicate, object = this._object;\n if (!inversePredicate)\n this._emit(subject, predicate, object, graph);\n else\n this._emit(object, predicate, subject, graph);\n }\n return next;\n }\n\n // ### `_readBlankNodePunctuation` reads punctuation in a blank node\n _readBlankNodePunctuation(token) {\n let next;\n switch (token.type) {\n // Semicolon means the subject is shared; predicate and object are different\n case ';':\n next = this._readPredicate;\n break;\n // Comma means both the subject and predicate are shared; the object is different\n case ',':\n next = this._readObject;\n break;\n default:\n return this._error(`Expected punctuation to follow \"${this._object.id}\"`, token);\n }\n // A quad has been completed now, so return it\n this._emit(this._subject, this._predicate, this._object, this._graph);\n return next;\n }\n\n // ### `_readQuadPunctuation` reads punctuation after a quad\n _readQuadPunctuation(token) {\n if (token.type !== '.')\n return this._error('Expected dot to follow quad', token);\n return this._readInTopContext;\n }\n\n // ### `_readPrefix` reads the prefix of a prefix declaration\n _readPrefix(token) {\n if (token.type !== 'prefix')\n return this._error('Expected prefix to follow @prefix', token);\n this._prefix = token.value;\n return this._readPrefixIRI;\n }\n\n // ### `_readPrefixIRI` reads the IRI of a prefix declaration\n _readPrefixIRI(token) {\n if (token.type !== 'IRI')\n return this._error(`Expected IRI to follow prefix \"${this._prefix}:\"`, token);\n const prefixNode = this._readEntity(token);\n this._prefixes[this._prefix] = prefixNode.value;\n this._prefixCallback(this._prefix, prefixNode);\n return this._readDeclarationPunctuation;\n }\n\n // ### `_readBaseIRI` reads the IRI of a base declaration\n _readBaseIRI(token) {\n const iri = token.type === 'IRI' && this._resolveIRI(token.value);\n if (!iri)\n return this._error('Expected valid IRI to follow base declaration', token);\n this._setBase(iri);\n return this._readDeclarationPunctuation;\n }\n\n // ### `_readNamedGraphLabel` reads the label of a named graph\n _readNamedGraphLabel(token) {\n switch (token.type) {\n case 'IRI':\n case 'blank':\n case 'prefixed':\n return this._readSubject(token), this._readGraph;\n case '[':\n return this._readNamedGraphBlankLabel;\n default:\n return this._error('Invalid graph label', token);\n }\n }\n\n // ### `_readNamedGraphLabel` reads a blank node label of a named graph\n _readNamedGraphBlankLabel(token) {\n if (token.type !== ']')\n return this._error('Invalid graph label', token);\n this._subject = this._blankNode();\n return this._readGraph;\n }\n\n // ### `_readDeclarationPunctuation` reads the punctuation of a declaration\n _readDeclarationPunctuation(token) {\n // SPARQL-style declarations don't have punctuation\n if (this._sparqlStyle) {\n this._sparqlStyle = false;\n return this._readInTopContext(token);\n }\n\n if (token.type !== '.')\n return this._error('Expected declaration to end with a dot', token);\n return this._readInTopContext;\n }\n\n // Reads a list of quantified symbols from a @forSome or @forAll statement\n _readQuantifierList(token) {\n let entity;\n switch (token.type) {\n case 'IRI':\n case 'prefixed':\n if ((entity = this._readEntity(token, true)) !== undefined)\n break;\n default:\n return this._error(`Unexpected ${token.type}`, token);\n }\n // Without explicit quantifiers, map entities to a quantified entity\n if (!this._explicitQuantifiers)\n this._quantified[entity.id] = this._quantifier(this._blankNode().value);\n // With explicit quantifiers, output the reified quantifier\n else {\n // If this is the first item, start a new quantifier list\n if (this._subject === null)\n this._emit(this._graph || this.DEFAULTGRAPH, this._predicate,\n this._subject = this._blankNode(), this.QUANTIFIERS_GRAPH);\n // Otherwise, continue the previous list\n else\n this._emit(this._subject, this.RDF_REST,\n this._subject = this._blankNode(), this.QUANTIFIERS_GRAPH);\n // Output the list item\n this._emit(this._subject, this.RDF_FIRST, entity, this.QUANTIFIERS_GRAPH);\n }\n return this._readQuantifierPunctuation;\n }\n\n // Reads punctuation from a @forSome or @forAll statement\n _readQuantifierPunctuation(token) {\n // Read more quantifiers\n if (token.type === ',')\n return this._readQuantifierList;\n // End of the quantifier list\n else {\n // With explicit quantifiers, close the quantifier list\n if (this._explicitQuantifiers) {\n this._emit(this._subject, this.RDF_REST, this.RDF_NIL, this.QUANTIFIERS_GRAPH);\n this._subject = null;\n }\n // Read a dot\n this._readCallback = this._getContextEndReader();\n return this._readCallback(token);\n }\n }\n\n // ### `_getPathReader` reads a potential path and then resumes with the given function\n _getPathReader(afterPath) {\n this._afterPath = afterPath;\n return this._readPath;\n }\n\n // ### `_readPath` reads a potential path\n _readPath(token) {\n switch (token.type) {\n // Forward path\n case '!': return this._readForwardPath;\n // Backward path\n case '^': return this._readBackwardPath;\n // Not a path; resume reading where we left off\n default:\n const stack = this._contextStack, parent = stack.length && stack[stack.length - 1];\n // If we were reading a list item, we still need to output it\n if (parent && parent.type === 'item') {\n // The list item is the remaining subejct after reading the path\n const item = this._subject;\n // Switch back to the context of the list\n this._restoreContext('item', token);\n // Output the list item\n this._emit(this._subject, this.RDF_FIRST, item, this._graph);\n }\n return this._afterPath(token);\n }\n }\n\n // ### `_readForwardPath` reads a '!' path\n _readForwardPath(token) {\n let subject, predicate;\n const object = this._blankNode();\n // The next token is the predicate\n if ((predicate = this._readEntity(token)) === undefined)\n return;\n // If we were reading a subject, replace the subject by the path's object\n if (this._predicate === null)\n subject = this._subject, this._subject = object;\n // If we were reading an object, replace the subject by the path's object\n else\n subject = this._object, this._object = object;\n // Emit the path's current quad and read its next section\n this._emit(subject, predicate, object, this._graph);\n return this._readPath;\n }\n\n // ### `_readBackwardPath` reads a '^' path\n _readBackwardPath(token) {\n const subject = this._blankNode();\n let predicate, object;\n // The next token is the predicate\n if ((predicate = this._readEntity(token)) === undefined)\n return;\n // If we were reading a subject, replace the subject by the path's subject\n if (this._predicate === null)\n object = this._subject, this._subject = subject;\n // If we were reading an object, replace the subject by the path's subject\n else\n object = this._object, this._object = subject;\n // Emit the path's current quad and read its next section\n this._emit(subject, predicate, object, this._graph);\n return this._readPath;\n }\n\n // ### `_readRDFStarTailOrGraph` reads the graph of a nested RDF* quad or the end of a nested RDF* triple\n _readRDFStarTailOrGraph(token) {\n if (token.type !== '>>') {\n // An entity means this is a quad (only allowed if not already inside a graph)\n if (this._supportsQuads && this._graph === null && (this._graph = this._readEntity(token)) !== undefined)\n return this._readRDFStarTail;\n return this._error(`Expected >> to follow \"${this._object.id}\"`, token);\n }\n return this._readRDFStarTail(token);\n }\n\n // ### `_readRDFStarTail` reads the end of a nested RDF* triple\n _readRDFStarTail(token) {\n if (token.type !== '>>')\n return this._error(`Expected >> but got ${token.type}`, token);\n // Read the quad and restore the previous context\n const quad = this._quad(this._subject, this._predicate, this._object,\n this._graph || this.DEFAULTGRAPH);\n this._restoreContext('<<', token);\n // If the triple was the subject, continue by reading the predicate.\n if (this._subject === null) {\n this._subject = quad;\n return this._readPredicate;\n }\n // If the triple was the object, read context end.\n else {\n this._object = quad;\n return this._getContextEndReader();\n }\n }\n\n // ### `_getContextEndReader` gets the next reader function at the end of a context\n _getContextEndReader() {\n const contextStack = this._contextStack;\n if (!contextStack.length)\n return this._readPunctuation;\n\n switch (contextStack[contextStack.length - 1].type) {\n case 'blank':\n return this._readBlankNodeTail;\n case 'list':\n return this._readListItem;\n case 'formula':\n return this._readFormulaTail;\n case '<<':\n return this._readRDFStarTailOrGraph;\n }\n }\n\n // ### `_emit` sends a quad through the callback\n _emit(subject, predicate, object, graph) {\n this._callback(null, this._quad(subject, predicate, object, graph || this.DEFAULTGRAPH));\n }\n\n // ### `_error` emits an error message through the callback\n _error(message, token) {\n const err = new Error(`${message} on line ${token.line}.`);\n err.context = {\n token: token,\n line: token.line,\n previousToken: this._lexer.previousToken,\n };\n this._callback(err);\n this._callback = noop;\n }\n\n // ### `_resolveIRI` resolves an IRI against the base path\n _resolveIRI(iri) {\n return /^[a-z][a-z0-9+.-]*:/i.test(iri) ? iri : this._resolveRelativeIRI(iri);\n }\n\n // ### `_resolveRelativeIRI` resolves an IRI against the base path,\n // assuming that a base path has been set and that the IRI is indeed relative\n _resolveRelativeIRI(iri) {\n // An empty relative IRI indicates the base IRI\n if (!iri.length)\n return this._base;\n // Decide resolving strategy based in the first character\n switch (iri[0]) {\n // Resolve relative fragment IRIs against the base IRI\n case '#': return this._base + iri;\n // Resolve relative query string IRIs by replacing the query string\n case '?': return this._base.replace(/(?:\\?.*)?$/, iri);\n // Resolve root-relative IRIs at the root of the base IRI\n case '/':\n // Resolve scheme-relative IRIs to the scheme\n return (iri[1] === '/' ? this._baseScheme : this._baseRoot) + this._removeDotSegments(iri);\n // Resolve all other IRIs at the base IRI's path\n default:\n // Relative IRIs cannot contain a colon in the first path segment\n return (/^[^/:]*:/.test(iri)) ? null : this._removeDotSegments(this._basePath + iri);\n }\n }\n\n // ### `_removeDotSegments` resolves './' and '../' path segments in an IRI as per RFC3986\n _removeDotSegments(iri) {\n // Don't modify the IRI if it does not contain any dot segments\n if (!/(^|\\/)\\.\\.?($|[/#?])/.test(iri))\n return iri;\n\n // Start with an imaginary slash before the IRI in order to resolve trailing './' and '../'\n const length = iri.length;\n let result = '', i = -1, pathStart = -1, segmentStart = 0, next = '/';\n\n while (i < length) {\n switch (next) {\n // The path starts with the first slash after the authority\n case ':':\n if (pathStart < 0) {\n // Skip two slashes before the authority\n if (iri[++i] === '/' && iri[++i] === '/')\n // Skip to slash after the authority\n while ((pathStart = i + 1) < length && iri[pathStart] !== '/')\n i = pathStart;\n }\n break;\n // Don't modify a query string or fragment\n case '?':\n case '#':\n i = length;\n break;\n // Handle '/.' or '/..' path segments\n case '/':\n if (iri[i + 1] === '.') {\n next = iri[++i + 1];\n switch (next) {\n // Remove a '/.' segment\n case '/':\n result += iri.substring(segmentStart, i - 1);\n segmentStart = i + 1;\n break;\n // Remove a trailing '/.' segment\n case undefined:\n case '?':\n case '#':\n return result + iri.substring(segmentStart, i) + iri.substr(i + 1);\n // Remove a '/..' segment\n case '.':\n next = iri[++i + 1];\n if (next === undefined || next === '/' || next === '?' || next === '#') {\n result += iri.substring(segmentStart, i - 2);\n // Try to remove the parent path from result\n if ((segmentStart = result.lastIndexOf('/')) >= pathStart)\n result = result.substr(0, segmentStart);\n // Remove a trailing '/..' segment\n if (next !== '/')\n return `${result}/${iri.substr(i + 1)}`;\n segmentStart = i + 1;\n }\n }\n }\n }\n next = iri[++i];\n }\n return result + iri.substring(segmentStart);\n }\n\n // ## Public methods\n\n // ### `parse` parses the N3 input and emits each parsed quad through the callback\n parse(input, quadCallback, prefixCallback) {\n // The read callback is the next function to be executed when a token arrives.\n // We start reading in the top context.\n this._readCallback = this._readInTopContext;\n this._sparqlStyle = false;\n this._prefixes = Object.create(null);\n this._prefixes._ = this._blankNodePrefix ? this._blankNodePrefix.substr(2)\n : `b${blankNodePrefix++}_`;\n this._prefixCallback = prefixCallback || noop;\n this._inversePredicate = false;\n this._quantified = Object.create(null);\n\n // Parse synchronously if no quad callback is given\n if (!quadCallback) {\n const quads = [];\n let error;\n this._callback = (e, t) => { e ? (error = e) : t && quads.push(t); };\n this._lexer.tokenize(input).every(token => {\n return this._readCallback = this._readCallback(token);\n });\n if (error) throw error;\n return quads;\n }\n\n // Parse asynchronously otherwise, executing the read callback when a token arrives\n this._callback = quadCallback;\n this._lexer.tokenize(input, (error, token) => {\n if (error !== null)\n this._callback(error), this._callback = noop;\n else if (this._readCallback)\n this._readCallback = this._readCallback(token);\n });\n }\n}\n\n// The empty function\nfunction noop() {}\n\n// Initializes the parser with the given data factory\nfunction initDataFactory(parser, factory) {\n // Set factory methods\n const namedNode = factory.namedNode;\n parser._namedNode = namedNode;\n parser._blankNode = factory.blankNode;\n parser._literal = factory.literal;\n parser._variable = factory.variable;\n parser._quad = factory.quad;\n parser.DEFAULTGRAPH = factory.defaultGraph();\n\n // Set common named nodes\n parser.RDF_FIRST = namedNode(namespaces.rdf.first);\n parser.RDF_REST = namedNode(namespaces.rdf.rest);\n parser.RDF_NIL = namedNode(namespaces.rdf.nil);\n parser.N3_FORALL = namedNode(namespaces.r.forAll);\n parser.N3_FORSOME = namedNode(namespaces.r.forSome);\n parser.ABBREVIATIONS = {\n 'a': namedNode(namespaces.rdf.type),\n '=': namedNode(namespaces.owl.sameAs),\n '>': namedNode(namespaces.log.implies),\n };\n parser.QUANTIFIERS_GRAPH = namedNode('urn:n3:quantifiers');\n}\ninitDataFactory(N3Parser.prototype, N3DataFactory);\n","// **N3Util** provides N3 utility functions.\n\nimport N3DataFactory from './N3DataFactory';\n\n// Tests whether the given term represents an IRI\nexport function isNamedNode(term) {\n return !!term && term.termType === 'NamedNode';\n}\n\n// Tests whether the given term represents a blank node\nexport function isBlankNode(term) {\n return !!term && term.termType === 'BlankNode';\n}\n\n// Tests whether the given term represents a literal\nexport function isLiteral(term) {\n return !!term && term.termType === 'Literal';\n}\n\n// Tests whether the given term represents a variable\nexport function isVariable(term) {\n return !!term && term.termType === 'Variable';\n}\n\n// Tests whether the given term represents the default graph\nexport function isDefaultGraph(term) {\n return !!term && term.termType === 'DefaultGraph';\n}\n\n// Tests whether the given quad is in the default graph\nexport function inDefaultGraph(quad) {\n return isDefaultGraph(quad.graph);\n}\n\n// Creates a function that prepends the given IRI to a local name\nexport function prefix(iri, factory) {\n return prefixes({ '': iri.value || iri }, factory)('');\n}\n\n// Creates a function that allows registering and expanding prefixes\nexport function prefixes(defaultPrefixes, factory) {\n // Add all of the default prefixes\n const prefixes = Object.create(null);\n for (const prefix in defaultPrefixes)\n processPrefix(prefix, defaultPrefixes[prefix]);\n // Set the default factory if none was specified\n factory = factory || N3DataFactory;\n\n // Registers a new prefix (if an IRI was specified)\n // or retrieves a function that expands an existing prefix (if no IRI was specified)\n function processPrefix(prefix, iri) {\n // Create a new prefix if an IRI is specified or the prefix doesn't exist\n if (typeof iri === 'string') {\n // Create a function that expands the prefix\n const cache = Object.create(null);\n prefixes[prefix] = local => {\n return cache[local] || (cache[local] = factory.namedNode(iri + local));\n };\n }\n else if (!(prefix in prefixes)) {\n throw new Error(`Unknown prefix: ${prefix}`);\n }\n return prefixes[prefix];\n }\n return processPrefix;\n}\n","// **N3Writer** writes N3 documents.\nimport namespaces from './IRIs';\nimport { default as N3DataFactory, Term } from './N3DataFactory';\nimport { isDefaultGraph } from './N3Util';\n\nconst DEFAULTGRAPH = N3DataFactory.defaultGraph();\n\nconst { rdf, xsd } = namespaces;\n\n// Characters in literals that require escaping\nconst escape = /[\"\\\\\\t\\n\\r\\b\\f\\u0000-\\u0019\\ud800-\\udbff]/,\n escapeAll = /[\"\\\\\\t\\n\\r\\b\\f\\u0000-\\u0019]|[\\ud800-\\udbff][\\udc00-\\udfff]/g,\n escapedCharacters = {\n '\\\\': '\\\\\\\\', '\"': '\\\\\"', '\\t': '\\\\t',\n '\\n': '\\\\n', '\\r': '\\\\r', '\\b': '\\\\b', '\\f': '\\\\f',\n };\n\n// ## Placeholder class to represent already pretty-printed terms\nclass SerializedTerm extends Term {\n // Pretty-printed nodes are not equal to any other node\n // (e.g., [] does not equal [])\n equals(other) {\n return other === this;\n }\n}\n\n// ## Constructor\nexport default class N3Writer {\n constructor(outputStream, options) {\n // ### `_prefixRegex` matches a prefixed name or IRI that begins with one of the added prefixes\n this._prefixRegex = /$0^/;\n\n // Shift arguments if the first argument is not a stream\n if (outputStream && typeof outputStream.write !== 'function')\n options = outputStream, outputStream = null;\n options = options || {};\n this._lists = options.lists;\n\n // If no output stream given, send the output as string through the end callback\n if (!outputStream) {\n let output = '';\n this._outputStream = {\n write(chunk, encoding, done) { output += chunk; done && done(); },\n end: done => { done && done(null, output); },\n };\n this._endStream = true;\n }\n else {\n this._outputStream = outputStream;\n this._endStream = options.end === undefined ? true : !!options.end;\n }\n\n // Initialize writer, depending on the format\n this._subject = null;\n if (!(/triple|quad/i).test(options.format)) {\n this._lineMode = false;\n this._graph = DEFAULTGRAPH;\n this._prefixIRIs = Object.create(null);\n options.prefixes && this.addPrefixes(options.prefixes);\n if (options.baseIRI) {\n this._baseMatcher = new RegExp(`^${escapeRegex(options.baseIRI)\n }${options.baseIRI.endsWith('/') ? '' : '[#?]'}`);\n this._baseLength = options.baseIRI.length;\n }\n }\n else {\n this._lineMode = true;\n this._writeQuad = this._writeQuadLine;\n }\n }\n\n // ## Private methods\n\n // ### Whether the current graph is the default graph\n get _inDefaultGraph() {\n return DEFAULTGRAPH.equals(this._graph);\n }\n\n // ### `_write` writes the argument to the output stream\n _write(string, callback) {\n this._outputStream.write(string, 'utf8', callback);\n }\n\n // ### `_writeQuad` writes the quad to the output stream\n _writeQuad(subject, predicate, object, graph, done) {\n try {\n // Write the graph's label if it has changed\n if (!graph.equals(this._graph)) {\n // Close the previous graph and start the new one\n this._write((this._subject === null ? '' : (this._inDefaultGraph ? '.\\n' : '\\n}\\n')) +\n (DEFAULTGRAPH.equals(graph) ? '' : `${this._encodeIriOrBlank(graph)} {\\n`));\n this._graph = graph;\n this._subject = null;\n }\n // Don't repeat the subject if it's the same\n if (subject.equals(this._subject)) {\n // Don't repeat the predicate if it's the same\n if (predicate.equals(this._predicate))\n this._write(`, ${this._encodeObject(object)}`, done);\n // Same subject, different predicate\n else\n this._write(`;\\n ${\n this._encodePredicate(this._predicate = predicate)} ${\n this._encodeObject(object)}`, done);\n }\n // Different subject; write the whole quad\n else\n this._write(`${(this._subject === null ? '' : '.\\n') +\n this._encodeSubject(this._subject = subject)} ${\n this._encodePredicate(this._predicate = predicate)} ${\n this._encodeObject(object)}`, done);\n }\n catch (error) { done && done(error); }\n }\n\n // ### `_writeQuadLine` writes the quad to the output stream as a single line\n _writeQuadLine(subject, predicate, object, graph, done) {\n // Write the quad without prefixes\n delete this._prefixMatch;\n this._write(this.quadToString(subject, predicate, object, graph), done);\n }\n\n // ### `quadToString` serializes a quad as a string\n quadToString(subject, predicate, object, graph) {\n return `${this._encodeSubject(subject)} ${\n this._encodeIriOrBlank(predicate)} ${\n this._encodeObject(object)\n }${graph && graph.value ? ` ${this._encodeIriOrBlank(graph)} .\\n` : ' .\\n'}`;\n }\n\n // ### `quadsToString` serializes an array of quads as a string\n quadsToString(quads) {\n return quads.map(t => {\n return this.quadToString(t.subject, t.predicate, t.object, t.graph);\n }).join('');\n }\n\n // ### `_encodeSubject` represents a subject\n _encodeSubject(entity) {\n return entity.termType === 'Quad' ?\n this._encodeQuad(entity) : this._encodeIriOrBlank(entity);\n }\n\n // ### `_encodeIriOrBlank` represents an IRI or blank node\n _encodeIriOrBlank(entity) {\n // A blank node or list is represented as-is\n if (entity.termType !== 'NamedNode') {\n // If it is a list head, pretty-print it\n if (this._lists && (entity.value in this._lists))\n entity = this.list(this._lists[entity.value]);\n return 'id' in entity ? entity.id : `_:${entity.value}`;\n }\n let iri = entity.value;\n // Use relative IRIs if requested and possible\n if (this._baseMatcher && this._baseMatcher.test(iri))\n iri = iri.substr(this._baseLength);\n // Escape special characters\n if (escape.test(iri))\n iri = iri.replace(escapeAll, characterReplacer);\n // Try to represent the IRI as prefixed name\n const prefixMatch = this._prefixRegex.exec(iri);\n return !prefixMatch ? `<${iri}>` :\n (!prefixMatch[1] ? iri : this._prefixIRIs[prefixMatch[1]] + prefixMatch[2]);\n }\n\n // ### `_encodeLiteral` represents a literal\n _encodeLiteral(literal) {\n // Escape special characters\n let value = literal.value;\n if (escape.test(value))\n value = value.replace(escapeAll, characterReplacer);\n\n // Write a language-tagged literal\n if (literal.language)\n return `\"${value}\"@${literal.language}`;\n\n // Write dedicated literals per data type\n if (this._lineMode) {\n // Only abbreviate strings in N-Triples or N-Quads\n if (literal.datatype.value === xsd.string)\n return `\"${value}\"`;\n }\n else {\n // Use common datatype abbreviations in Turtle or TriG\n switch (literal.datatype.value) {\n case xsd.string:\n return `\"${value}\"`;\n case xsd.boolean:\n if (value === 'true' || value === 'false')\n return value;\n break;\n case xsd.integer:\n if (/^[+-]?\\d+$/.test(value))\n return value;\n break;\n case xsd.decimal:\n if (/^[+-]?\\d*\\.\\d+$/.test(value))\n return value;\n break;\n case xsd.double:\n if (/^[+-]?(?:\\d+\\.\\d*|\\.?\\d+)[eE][+-]?\\d+$/.test(value))\n return value;\n break;\n }\n }\n\n // Write a regular datatyped literal\n return `\"${value}\"^^${this._encodeIriOrBlank(literal.datatype)}`;\n }\n\n // ### `_encodePredicate` represents a predicate\n _encodePredicate(predicate) {\n return predicate.value === rdf.type ? 'a' : this._encodeIriOrBlank(predicate);\n }\n\n // ### `_encodeObject` represents an object\n _encodeObject(object) {\n switch (object.termType) {\n case 'Quad':\n return this._encodeQuad(object);\n case 'Literal':\n return this._encodeLiteral(object);\n default:\n return this._encodeIriOrBlank(object);\n }\n }\n\n // ### `_encodeQuad` encodes an RDF* quad\n _encodeQuad({ subject, predicate, object, graph }) {\n return `<<${\n this._encodeSubject(subject)} ${\n this._encodePredicate(predicate)} ${\n this._encodeObject(object)}${\n isDefaultGraph(graph) ? '' : ` ${this._encodeIriOrBlank(graph)}`}>>`;\n }\n\n // ### `_blockedWrite` replaces `_write` after the writer has been closed\n _blockedWrite() {\n throw new Error('Cannot write because the writer has been closed.');\n }\n\n // ### `addQuad` adds the quad to the output stream\n addQuad(subject, predicate, object, graph, done) {\n // The quad was given as an object, so shift parameters\n if (object === undefined)\n this._writeQuad(subject.subject, subject.predicate, subject.object, subject.graph, predicate);\n // The optional `graph` parameter was not provided\n else if (typeof graph === 'function')\n this._writeQuad(subject, predicate, object, DEFAULTGRAPH, graph);\n // The `graph` parameter was provided\n else\n this._writeQuad(subject, predicate, object, graph || DEFAULTGRAPH, done);\n }\n\n // ### `addQuads` adds the quads to the output stream\n addQuads(quads) {\n for (let i = 0; i < quads.length; i++)\n this.addQuad(quads[i]);\n }\n\n // ### `addPrefix` adds the prefix to the output stream\n addPrefix(prefix, iri, done) {\n const prefixes = {};\n prefixes[prefix] = iri;\n this.addPrefixes(prefixes, done);\n }\n\n // ### `addPrefixes` adds the prefixes to the output stream\n addPrefixes(prefixes, done) {\n // Ignore prefixes if not supported by the serialization\n if (!this._prefixIRIs)\n return done && done();\n\n // Write all new prefixes\n let hasPrefixes = false;\n for (let prefix in prefixes) {\n let iri = prefixes[prefix];\n if (typeof iri !== 'string')\n iri = iri.value;\n hasPrefixes = true;\n // Finish a possible pending quad\n if (this._subject !== null) {\n this._write(this._inDefaultGraph ? '.\\n' : '\\n}\\n');\n this._subject = null, this._graph = '';\n }\n // Store and write the prefix\n this._prefixIRIs[iri] = (prefix += ':');\n this._write(`@prefix ${prefix} <${iri}>.\\n`);\n }\n // Recreate the prefix matcher\n if (hasPrefixes) {\n let IRIlist = '', prefixList = '';\n for (const prefixIRI in this._prefixIRIs) {\n IRIlist += IRIlist ? `|${prefixIRI}` : prefixIRI;\n prefixList += (prefixList ? '|' : '') + this._prefixIRIs[prefixIRI];\n }\n IRIlist = escapeRegex(IRIlist, /[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n this._prefixRegex = new RegExp(`^(?:${prefixList})[^\\/]*$|` +\n `^(${IRIlist})([_a-zA-Z][\\\\-_a-zA-Z0-9]*)$`);\n }\n // End a prefix block with a newline\n this._write(hasPrefixes ? '\\n' : '', done);\n }\n\n // ### `blank` creates a blank node with the given content\n blank(predicate, object) {\n let children = predicate, child, length;\n // Empty blank node\n if (predicate === undefined)\n children = [];\n // Blank node passed as blank(Term(\"predicate\"), Term(\"object\"))\n else if (predicate.termType)\n children = [{ predicate: predicate, object: object }];\n // Blank node passed as blank({ predicate: predicate, object: object })\n else if (!('length' in predicate))\n children = [predicate];\n\n switch (length = children.length) {\n // Generate an empty blank node\n case 0:\n return new SerializedTerm('[]');\n // Generate a non-nested one-triple blank node\n case 1:\n child = children[0];\n if (!(child.object instanceof SerializedTerm))\n return new SerializedTerm(`[ ${this._encodePredicate(child.predicate)} ${\n this._encodeObject(child.object)} ]`);\n // Generate a multi-triple or nested blank node\n default:\n let contents = '[';\n // Write all triples in order\n for (let i = 0; i < length; i++) {\n child = children[i];\n // Write only the object is the predicate is the same as the previous\n if (child.predicate.equals(predicate))\n contents += `, ${this._encodeObject(child.object)}`;\n // Otherwise, write the predicate and the object\n else {\n contents += `${(i ? ';\\n ' : '\\n ') +\n this._encodePredicate(child.predicate)} ${\n this._encodeObject(child.object)}`;\n predicate = child.predicate;\n }\n }\n return new SerializedTerm(`${contents}\\n]`);\n }\n }\n\n // ### `list` creates a list node with the given content\n list(elements) {\n const length = elements && elements.length || 0, contents = new Array(length);\n for (let i = 0; i < length; i++)\n contents[i] = this._encodeObject(elements[i]);\n return new SerializedTerm(`(${contents.join(' ')})`);\n }\n\n // ### `end` signals the end of the output stream\n end(done) {\n // Finish a possible pending quad\n if (this._subject !== null) {\n this._write(this._inDefaultGraph ? '.\\n' : '\\n}\\n');\n this._subject = null;\n }\n // Disallow further writing\n this._write = this._blockedWrite;\n\n // Try to end the underlying stream, ensuring done is called exactly one time\n let singleDone = done && ((error, result) => { singleDone = null, done(error, result); });\n if (this._endStream) {\n try { return this._outputStream.end(singleDone); }\n catch (error) { /* error closing stream */ }\n }\n singleDone && singleDone();\n }\n}\n\n// Replaces a character by its escaped version\nfunction characterReplacer(character) {\n // Replace a single character by its escaped version\n let result = escapedCharacters[character];\n if (result === undefined) {\n // Replace a single character with its 4-bit unicode escape sequence\n if (character.length === 1) {\n result = character.charCodeAt(0).toString(16);\n result = '\\\\u0000'.substr(0, 6 - result.length) + result;\n }\n // Replace a surrogate pair with its 8-bit unicode escape sequence\n else {\n result = ((character.charCodeAt(0) - 0xD800) * 0x400 +\n character.charCodeAt(1) + 0x2400).toString(16);\n result = '\\\\U00000000'.substr(0, 10 - result.length) + result;\n }\n }\n return result;\n}\n\nfunction escapeRegex(regex) {\n return regex.replace(/[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n}\n","// **N3Store** objects store N3 quads by graph in memory.\nimport { Readable } from 'readable-stream';\nimport { default as N3DataFactory, termToId, termFromId } from './N3DataFactory';\nimport namespaces from './IRIs';\nimport { isDefaultGraph } from './N3Util';\n\n// ## Constructor\nexport default class N3Store {\n constructor(quads, options) {\n // The number of quads is initially zero\n this._size = 0;\n // `_graphs` contains subject, predicate, and object indexes per graph\n this._graphs = Object.create(null);\n // `_ids` maps entities such as `http://xmlns.com/foaf/0.1/name` to numbers,\n // saving memory by using only numbers as keys in `_graphs`\n this._id = 0;\n this._ids = Object.create(null);\n this._entities = Object.create(null); // inverse of `_ids`\n // `_blankNodeIndex` is the index of the last automatically named blank node\n this._blankNodeIndex = 0;\n\n // Shift parameters if `quads` is not given\n if (!options && quads && !quads[0])\n options = quads, quads = null;\n options = options || {};\n this._factory = options.factory || N3DataFactory;\n\n // Add quads if passed\n if (quads)\n this.addQuads(quads);\n }\n\n _termFromId(id, factory) {\n if (id[0] === '.') {\n const entities = this._entities;\n const terms = id.split('.');\n const q = this._factory.quad(\n this._termFromId(entities[terms[1]]),\n this._termFromId(entities[terms[2]]),\n this._termFromId(entities[terms[3]]),\n terms[4] && this._termFromId(entities[terms[4]])\n );\n return q;\n }\n return termFromId(id, factory);\n }\n\n _termToNumericId(term) {\n if (term.termType === 'Quad') {\n const s = this._termToNumericId(term.subject),\n p = this._termToNumericId(term.predicate),\n o = this._termToNumericId(term.object);\n let g;\n\n return s && p && o && (isDefaultGraph(term.graph) || (g = this._termToNumericId(term.graph))) &&\n this._ids[g ? `.${s}.${p}.${o}.${g}` : `.${s}.${p}.${o}`];\n }\n return this._ids[termToId(term)];\n }\n\n _termToNewNumericId(term) {\n // This assumes that no graph term is present - we may wish to error if there is one\n const str = term && term.termType === 'Quad' ?\n `.${this._termToNewNumericId(term.subject)}.${this._termToNewNumericId(term.predicate)}.${this._termToNewNumericId(term.object)}${\n isDefaultGraph(term.graph) ? '' : `.${this._termToNewNumericId(term.graph)}`\n }`\n : termToId(term);\n\n return this._ids[str] || (this._ids[this._entities[++this._id] = str] = this._id);\n }\n\n // ## Public properties\n\n // ### `size` returns the number of quads in the store\n get size() {\n // Return the quad count if if was cached\n let size = this._size;\n if (size !== null)\n return size;\n\n // Calculate the number of quads by counting to the deepest level\n size = 0;\n const graphs = this._graphs;\n let subjects, subject;\n for (const graphKey in graphs)\n for (const subjectKey in (subjects = graphs[graphKey].subjects))\n for (const predicateKey in (subject = subjects[subjectKey]))\n size += Object.keys(subject[predicateKey]).length;\n return this._size = size;\n }\n\n // ## Private methods\n\n // ### `_addToIndex` adds a quad to a three-layered index.\n // Returns if the index has changed, if the entry did not already exist.\n _addToIndex(index0, key0, key1, key2) {\n // Create layers as necessary\n const index1 = index0[key0] || (index0[key0] = {});\n const index2 = index1[key1] || (index1[key1] = {});\n // Setting the key to _any_ value signals the presence of the quad\n const existed = key2 in index2;\n if (!existed)\n index2[key2] = null;\n return !existed;\n }\n\n // ### `_removeFromIndex` removes a quad from a three-layered index\n _removeFromIndex(index0, key0, key1, key2) {\n // Remove the quad from the index\n const index1 = index0[key0], index2 = index1[key1];\n delete index2[key2];\n\n // Remove intermediary index layers if they are empty\n for (const key in index2) return;\n delete index1[key1];\n for (const key in index1) return;\n delete index0[key0];\n }\n\n // ### `_findInIndex` finds a set of quads in a three-layered index.\n // The index base is `index0` and the keys at each level are `key0`, `key1`, and `key2`.\n // Any of these keys can be undefined, which is interpreted as a wildcard.\n // `name0`, `name1`, and `name2` are the names of the keys at each level,\n // used when reconstructing the resulting quad\n // (for instance: _subject_, _predicate_, and _object_).\n // Finally, `graphId` will be the graph of the created quads.\n *_findInIndex(index0, key0, key1, key2, name0, name1, name2, graphId) {\n let tmp, index1, index2;\n const entityKeys = this._entities;\n const graph = this._termFromId(graphId, this._factory);\n const parts = { subject: null, predicate: null, object: null };\n\n // If a key is specified, use only that part of index 0.\n if (key0) (tmp = index0, index0 = {})[key0] = tmp[key0];\n for (const value0 in index0) {\n if (index1 = index0[value0]) {\n parts[name0] = this._termFromId(entityKeys[value0], this._factory);\n // If a key is specified, use only that part of index 1.\n if (key1) (tmp = index1, index1 = {})[key1] = tmp[key1];\n for (const value1 in index1) {\n if (index2 = index1[value1]) {\n parts[name1] = this._termFromId(entityKeys[value1], this._factory);\n // If a key is specified, use only that part of index 2, if it exists.\n const values = key2 ? (key2 in index2 ? [key2] : []) : Object.keys(index2);\n // Create quads for all items found in index 2.\n for (let l = 0; l < values.length; l++) {\n parts[name2] = this._termFromId(entityKeys[values[l]], this._factory);\n yield this._factory.quad(parts.subject, parts.predicate, parts.object, graph);\n }\n }\n }\n }\n }\n }\n\n // ### `_loop` executes the callback on all keys of index 0\n _loop(index0, callback) {\n for (const key0 in index0)\n callback(key0);\n }\n\n // ### `_loopByKey0` executes the callback on all keys of a certain entry in index 0\n _loopByKey0(index0, key0, callback) {\n let index1, key1;\n if (index1 = index0[key0]) {\n for (key1 in index1)\n callback(key1);\n }\n }\n\n // ### `_loopByKey1` executes the callback on given keys of all entries in index 0\n _loopByKey1(index0, key1, callback) {\n let key0, index1;\n for (key0 in index0) {\n index1 = index0[key0];\n if (index1[key1])\n callback(key0);\n }\n }\n\n // ### `_loopBy2Keys` executes the callback on given keys of certain entries in index 2\n _loopBy2Keys(index0, key0, key1, callback) {\n let index1, index2, key2;\n if ((index1 = index0[key0]) && (index2 = index1[key1])) {\n for (key2 in index2)\n callback(key2);\n }\n }\n\n // ### `_countInIndex` counts matching quads in a three-layered index.\n // The index base is `index0` and the keys at each level are `key0`, `key1`, and `key2`.\n // Any of these keys can be undefined, which is interpreted as a wildcard.\n _countInIndex(index0, key0, key1, key2) {\n let count = 0, tmp, index1, index2;\n\n // If a key is specified, count only that part of index 0\n if (key0) (tmp = index0, index0 = {})[key0] = tmp[key0];\n for (const value0 in index0) {\n if (index1 = index0[value0]) {\n // If a key is specified, count only that part of index 1\n if (key1) (tmp = index1, index1 = {})[key1] = tmp[key1];\n for (const value1 in index1) {\n if (index2 = index1[value1]) {\n // If a key is specified, count the quad if it exists\n if (key2) (key2 in index2) && count++;\n // Otherwise, count all quads\n else count += Object.keys(index2).length;\n }\n }\n }\n }\n return count;\n }\n\n // ### `_getGraphs` returns an array with the given graph,\n // or all graphs if the argument is null or undefined.\n _getGraphs(graph) {\n if (!isString(graph))\n return this._graphs;\n const graphs = {};\n graphs[graph] = this._graphs[graph];\n return graphs;\n }\n\n // ### `_uniqueEntities` returns a function that accepts an entity ID\n // and passes the corresponding entity to callback if it hasn't occurred before.\n _uniqueEntities(callback) {\n const uniqueIds = Object.create(null);\n return id => {\n if (!(id in uniqueIds)) {\n uniqueIds[id] = true;\n callback(this._termFromId(this._entities[id], this._factory));\n }\n };\n }\n\n // ## Public methods\n\n // ### `add` adds the specified quad to the dataset.\n // Returns the dataset instance it was called on.\n // Existing quads, as defined in Quad.equals, will be ignored.\n add(quad) {\n this.addQuad(quad);\n return this;\n }\n\n // ### `addQuad` adds a new quad to the store.\n // Returns if the quad index has changed, if the quad did not already exist.\n addQuad(subject, predicate, object, graph) {\n // Shift arguments if a quad object is given instead of components\n if (!predicate)\n graph = subject.graph, object = subject.object,\n predicate = subject.predicate, subject = subject.subject;\n\n // Convert terms to internal string representation\n graph = termToId(graph);\n\n // Find the graph that will contain the triple\n let graphItem = this._graphs[graph];\n // Create the graph if it doesn't exist yet\n if (!graphItem) {\n graphItem = this._graphs[graph] = { subjects: {}, predicates: {}, objects: {} };\n // Freezing a graph helps subsequent `add` performance,\n // and properties will never be modified anyway\n Object.freeze(graphItem);\n }\n\n // Since entities can often be long IRIs, we avoid storing them in every index.\n // Instead, we have a separate index that maps entities to numbers,\n // which are then used as keys in the other indexes.\n subject = this._termToNewNumericId(subject);\n predicate = this._termToNewNumericId(predicate);\n object = this._termToNewNumericId(object);\n\n const changed = this._addToIndex(graphItem.subjects, subject, predicate, object);\n this._addToIndex(graphItem.predicates, predicate, object, subject);\n this._addToIndex(graphItem.objects, object, subject, predicate);\n\n // The cached quad count is now invalid\n this._size = null;\n return changed;\n }\n\n // ### `addQuads` adds multiple quads to the store\n addQuads(quads) {\n for (let i = 0; i < quads.length; i++)\n this.addQuad(quads[i]);\n }\n\n // ### `delete` removes the specified quad from the dataset.\n // Returns the dataset instance it was called on.\n delete(quad) {\n this.removeQuad(quad);\n return this;\n }\n\n // ### `has` determines whether a dataset includes a certain quad or quad pattern.\n has(subjectOrQuad, predicate, object, graph) {\n if (subjectOrQuad && subjectOrQuad.subject)\n ({ subject: subjectOrQuad, predicate, object, graph } = subjectOrQuad);\n return !this.readQuads(subjectOrQuad, predicate, object, graph).next().done;\n }\n\n // ### `import` adds a stream of quads to the store\n import(stream) {\n stream.on('data', quad => { this.addQuad(quad); });\n return stream;\n }\n\n // ### `removeQuad` removes a quad from the store if it exists\n removeQuad(subject, predicate, object, graph) {\n // Shift arguments if a quad object is given instead of components\n if (!predicate)\n graph = subject.graph, object = subject.object,\n predicate = subject.predicate, subject = subject.subject;\n\n // Convert terms to internal string representation\n graph = termToId(graph);\n\n // Find internal identifiers for all components\n // and verify the quad exists.\n const graphs = this._graphs;\n let graphItem, subjects, predicates;\n if (!(subject = subject && this._termToNumericId(subject)) || !(predicate = predicate && this._termToNumericId(predicate)) ||\n !(object = object && this._termToNumericId(object)) || !(graphItem = graphs[graph]) ||\n !(subjects = graphItem.subjects[subject]) ||\n !(predicates = subjects[predicate]) ||\n !(object in predicates))\n return false;\n\n // Remove it from all indexes\n this._removeFromIndex(graphItem.subjects, subject, predicate, object);\n this._removeFromIndex(graphItem.predicates, predicate, object, subject);\n this._removeFromIndex(graphItem.objects, object, subject, predicate);\n if (this._size !== null) this._size--;\n\n // Remove the graph if it is empty\n for (subject in graphItem.subjects) return true;\n delete graphs[graph];\n return true;\n }\n\n // ### `removeQuads` removes multiple quads from the store\n removeQuads(quads) {\n for (let i = 0; i < quads.length; i++)\n this.removeQuad(quads[i]);\n }\n\n // ### `remove` removes a stream of quads from the store\n remove(stream) {\n stream.on('data', quad => { this.removeQuad(quad); });\n return stream;\n }\n\n // ### `removeMatches` removes all matching quads from the store\n // Setting any field to `undefined` or `null` indicates a wildcard.\n removeMatches(subject, predicate, object, graph) {\n const stream = new Readable({ objectMode: true });\n\n stream._read = () => {\n for (const quad of this.readQuads(subject, predicate, object, graph))\n stream.push(quad);\n stream.push(null);\n };\n\n return this.remove(stream);\n }\n\n // ### `deleteGraph` removes all triples with the given graph from the store\n deleteGraph(graph) {\n return this.removeMatches(null, null, null, graph);\n }\n\n // ### `getQuads` returns an array of quads matching a pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getQuads(subject, predicate, object, graph) {\n return [...this.readQuads(subject, predicate, object, graph)];\n }\n\n // ### `readQuads` returns an generator of quads matching a pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n *readQuads(subject, predicate, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, subjectId, predicateId, objectId;\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n predicate && !(predicateId = this._termToNumericId(predicate)) ||\n object && !(objectId = this._termToNumericId(object)))\n return;\n\n for (const graphId in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graphId]) {\n // Choose the optimal index, based on what fields are present\n if (subjectId) {\n if (objectId)\n // If subject and object are given, the object index will be the fastest\n yield* this._findInIndex(content.objects, objectId, subjectId, predicateId,\n 'object', 'subject', 'predicate', graphId);\n else\n // If only subject and possibly predicate are given, the subject index will be the fastest\n yield* this._findInIndex(content.subjects, subjectId, predicateId, null,\n 'subject', 'predicate', 'object', graphId);\n }\n else if (predicateId)\n // If only predicate and possibly object are given, the predicate index will be the fastest\n yield* this._findInIndex(content.predicates, predicateId, objectId, null,\n 'predicate', 'object', 'subject', graphId);\n else if (objectId)\n // If only object is given, the object index will be the fastest\n yield* this._findInIndex(content.objects, objectId, null, null,\n 'object', 'subject', 'predicate', graphId);\n else\n // If nothing is given, iterate subjects and predicates first\n yield* this._findInIndex(content.subjects, null, null, null,\n 'subject', 'predicate', 'object', graphId);\n }\n }\n }\n\n // ### `match` returns a new dataset that is comprised of all quads in the current instance matching the given arguments.\n // The logic described in Quad Matching is applied for each quad in this dataset to check if it should be included in the output dataset.\n // Note: This method always returns a new DatasetCore, even if that dataset contains no quads.\n // Note: Since a DatasetCore is an unordered set, the order of the quads within the returned sequence is arbitrary.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n // For backwards compatibility, the object return also implements the Readable stream interface.\n match(subject, predicate, object, graph) {\n return new DatasetCoreAndReadableStream(this, subject, predicate, object, graph);\n }\n\n // ### `countQuads` returns the number of quads matching a pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n countQuads(subject, predicate, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let count = 0, content, subjectId, predicateId, objectId;\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n predicate && !(predicateId = this._termToNumericId(predicate)) ||\n object && !(objectId = this._termToNumericId(object)))\n return 0;\n\n for (const graphId in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graphId]) {\n // Choose the optimal index, based on what fields are present\n if (subject) {\n if (object)\n // If subject and object are given, the object index will be the fastest\n count += this._countInIndex(content.objects, objectId, subjectId, predicateId);\n else\n // If only subject and possibly predicate are given, the subject index will be the fastest\n count += this._countInIndex(content.subjects, subjectId, predicateId, objectId);\n }\n else if (predicate) {\n // If only predicate and possibly object are given, the predicate index will be the fastest\n count += this._countInIndex(content.predicates, predicateId, objectId, subjectId);\n }\n else {\n // If only object is possibly given, the object index will be the fastest\n count += this._countInIndex(content.objects, objectId, subjectId, predicateId);\n }\n }\n }\n return count;\n }\n\n // ### `forEach` executes the callback on all quads.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forEach(callback, subject, predicate, object, graph) {\n this.some(quad => {\n callback(quad);\n return false;\n }, subject, predicate, object, graph);\n }\n\n // ### `every` executes the callback on all quads,\n // and returns `true` if it returns truthy for all them.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n every(callback, subject, predicate, object, graph) {\n let some = false;\n const every = !this.some(quad => {\n some = true;\n return !callback(quad);\n }, subject, predicate, object, graph);\n return some && every;\n }\n\n // ### `some` executes the callback on all quads,\n // and returns `true` if it returns truthy for any of them.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n some(callback, subject, predicate, object, graph) {\n for (const quad of this.readQuads(subject, predicate, object, graph))\n if (callback(quad))\n return true;\n return false;\n }\n\n // ### `getSubjects` returns all subjects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getSubjects(predicate, object, graph) {\n const results = [];\n this.forSubjects(s => { results.push(s); }, predicate, object, graph);\n return results;\n }\n\n // ### `forSubjects` executes the callback on all subjects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forSubjects(callback, predicate, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, predicateId, objectId;\n callback = this._uniqueEntities(callback);\n\n // Translate IRIs to internal index keys.\n if (predicate && !(predicateId = this._termToNumericId(predicate)) ||\n object && !(objectId = this._termToNumericId(object)))\n return;\n\n for (graph in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graph]) {\n // Choose optimal index based on which fields are wildcards\n if (predicateId) {\n if (objectId)\n // If predicate and object are given, the POS index is best.\n this._loopBy2Keys(content.predicates, predicateId, objectId, callback);\n else\n // If only predicate is given, the SPO index is best.\n this._loopByKey1(content.subjects, predicateId, callback);\n }\n else if (objectId)\n // If only object is given, the OSP index is best.\n this._loopByKey0(content.objects, objectId, callback);\n else\n // If no params given, iterate all the subjects\n this._loop(content.subjects, callback);\n }\n }\n }\n\n // ### `getPredicates` returns all predicates that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getPredicates(subject, object, graph) {\n const results = [];\n this.forPredicates(p => { results.push(p); }, subject, object, graph);\n return results;\n }\n\n // ### `forPredicates` executes the callback on all predicates that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forPredicates(callback, subject, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, subjectId, objectId;\n callback = this._uniqueEntities(callback);\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n object && !(objectId = this._termToNumericId(object)))\n return;\n\n for (graph in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graph]) {\n // Choose optimal index based on which fields are wildcards\n if (subjectId) {\n if (objectId)\n // If subject and object are given, the OSP index is best.\n this._loopBy2Keys(content.objects, objectId, subjectId, callback);\n else\n // If only subject is given, the SPO index is best.\n this._loopByKey0(content.subjects, subjectId, callback);\n }\n else if (objectId)\n // If only object is given, the POS index is best.\n this._loopByKey1(content.predicates, objectId, callback);\n else\n // If no params given, iterate all the predicates.\n this._loop(content.predicates, callback);\n }\n }\n }\n\n // ### `getObjects` returns all objects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getObjects(subject, predicate, graph) {\n const results = [];\n this.forObjects(o => { results.push(o); }, subject, predicate, graph);\n return results;\n }\n\n // ### `forObjects` executes the callback on all objects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forObjects(callback, subject, predicate, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, subjectId, predicateId;\n callback = this._uniqueEntities(callback);\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n predicate && !(predicateId = this._termToNumericId(predicate)))\n return;\n\n for (graph in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graph]) {\n // Choose optimal index based on which fields are wildcards\n if (subjectId) {\n if (predicateId)\n // If subject and predicate are given, the SPO index is best.\n this._loopBy2Keys(content.subjects, subjectId, predicateId, callback);\n else\n // If only subject is given, the OSP index is best.\n this._loopByKey1(content.objects, subjectId, callback);\n }\n else if (predicateId)\n // If only predicate is given, the POS index is best.\n this._loopByKey0(content.predicates, predicateId, callback);\n else\n // If no params given, iterate all the objects.\n this._loop(content.objects, callback);\n }\n }\n }\n\n // ### `getGraphs` returns all graphs that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getGraphs(subject, predicate, object) {\n const results = [];\n this.forGraphs(g => { results.push(g); }, subject, predicate, object);\n return results;\n }\n\n // ### `forGraphs` executes the callback on all graphs that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forGraphs(callback, subject, predicate, object) {\n for (const graph in this._graphs) {\n this.some(quad => {\n callback(quad.graph);\n return true; // Halt iteration of some()\n }, subject, predicate, object, graph);\n }\n }\n\n // ### `createBlankNode` creates a new blank node, returning its name\n createBlankNode(suggestedName) {\n let name, index;\n // Generate a name based on the suggested name\n if (suggestedName) {\n name = suggestedName = `_:${suggestedName}`, index = 1;\n while (this._ids[name])\n name = suggestedName + index++;\n }\n // Generate a generic blank node name\n else {\n do { name = `_:b${this._blankNodeIndex++}`; }\n while (this._ids[name]);\n }\n // Add the blank node to the entities, avoiding the generation of duplicates\n this._ids[name] = ++this._id;\n this._entities[this._id] = name;\n return this._factory.blankNode(name.substr(2));\n }\n\n // ### `extractLists` finds and removes all list triples\n // and returns the items per list.\n extractLists({ remove = false, ignoreErrors = false } = {}) {\n const lists = {}; // has scalar keys so could be a simple Object\n const onError = ignoreErrors ? (() => true) :\n ((node, message) => { throw new Error(`${node.value} ${message}`); });\n\n // Traverse each list from its tail\n const tails = this.getQuads(null, namespaces.rdf.rest, namespaces.rdf.nil, null);\n const toRemove = remove ? [...tails] : [];\n tails.forEach(tailQuad => {\n const items = []; // the members found as objects of rdf:first quads\n let malformed = false; // signals whether the current list is malformed\n let head; // the head of the list (_:b1 in above example)\n let headPos; // set to subject or object when head is set\n const graph = tailQuad.graph; // make sure list is in exactly one graph\n\n // Traverse the list from tail to end\n let current = tailQuad.subject;\n while (current && !malformed) {\n const objectQuads = this.getQuads(null, null, current, null);\n const subjectQuads = this.getQuads(current, null, null, null);\n let quad, first = null, rest = null, parent = null;\n\n // Find the first and rest of this list node\n for (let i = 0; i < subjectQuads.length && !malformed; i++) {\n quad = subjectQuads[i];\n if (!quad.graph.equals(graph))\n malformed = onError(current, 'not confined to single graph');\n else if (head)\n malformed = onError(current, 'has non-list arcs out');\n\n // one rdf:first\n else if (quad.predicate.value === namespaces.rdf.first) {\n if (first)\n malformed = onError(current, 'has multiple rdf:first arcs');\n else\n toRemove.push(first = quad);\n }\n\n // one rdf:rest\n else if (quad.predicate.value === namespaces.rdf.rest) {\n if (rest)\n malformed = onError(current, 'has multiple rdf:rest arcs');\n else\n toRemove.push(rest = quad);\n }\n\n // alien triple\n else if (objectQuads.length)\n malformed = onError(current, 'can\\'t be subject and object');\n else {\n head = quad; // e.g. { (1 2 3) :p :o }\n headPos = 'subject';\n }\n }\n\n // { :s :p (1 2) } arrives here with no head\n // { (1 2) :p :o } arrives here with head set to the list.\n for (let i = 0; i < objectQuads.length && !malformed; ++i) {\n quad = objectQuads[i];\n if (head)\n malformed = onError(current, 'can\\'t have coreferences');\n // one rdf:rest\n else if (quad.predicate.value === namespaces.rdf.rest) {\n if (parent)\n malformed = onError(current, 'has incoming rdf:rest arcs');\n else\n parent = quad;\n }\n else {\n head = quad; // e.g. { :s :p (1 2) }\n headPos = 'object';\n }\n }\n\n // Store the list item and continue with parent\n if (!first)\n malformed = onError(current, 'has no list head');\n else\n items.unshift(first.object);\n current = parent && parent.subject;\n }\n\n // Don't remove any quads if the list is malformed\n if (malformed)\n remove = false;\n // Store the list under the value of its head\n else if (head)\n lists[head[headPos].value] = items;\n });\n\n // Remove list quads if requested\n if (remove)\n this.removeQuads(toRemove);\n return lists;\n }\n\n // ### Store is an iterable.\n // Can be used where iterables are expected: for...of loops, array spread operator,\n // `yield*`, and destructuring assignment (order is not guaranteed).\n *[Symbol.iterator]() {\n yield* this.readQuads();\n }\n}\n\n// Determines whether the argument is a string\nfunction isString(s) {\n return typeof s === 'string' || s instanceof String;\n}\n\n/**\n * A class that implements both DatasetCore and Readable.\n */\nclass DatasetCoreAndReadableStream extends Readable {\n constructor(n3Store, subject, predicate, object, graph) {\n super({ objectMode: true });\n Object.assign(this, { n3Store, subject, predicate, object, graph });\n }\n\n get filtered() {\n if (!this._filtered) {\n const { n3Store, graph, object, predicate, subject } = this;\n const newStore = this._filtered = new N3Store({ factory: n3Store._factory });\n for (const quad of n3Store.readQuads(subject, predicate, object, graph))\n newStore.addQuad(quad);\n }\n return this._filtered;\n }\n\n get size() {\n return this.filtered.size;\n }\n\n _read() {\n for (const quad of this)\n this.push(quad);\n this.push(null);\n }\n\n add(quad) {\n return this.filtered.add(quad);\n }\n\n delete(quad) {\n return this.filtered.delete(quad);\n }\n\n has(quad) {\n return this.filtered.has(quad);\n }\n\n match(subject, predicate, object, graph) {\n return new DatasetCoreAndReadableStream(this.filtered, subject, predicate, object, graph);\n }\n\n *[Symbol.iterator]() {\n yield* this._filtered || this.n3Store.readQuads(this.subject, this.predicate, this.object, this.graph);\n }\n}\n","// **N3StreamParser** parses a text stream into a quad stream.\nimport { Transform } from 'readable-stream';\nimport N3Parser from './N3Parser';\n\n// ## Constructor\nexport default class N3StreamParser extends Transform {\n constructor(options) {\n super({ decodeStrings: true });\n this._readableState.objectMode = true;\n\n // Set up parser with dummy stream to obtain `data` and `end` callbacks\n const parser = new N3Parser(options);\n let onData, onEnd;\n parser.parse({\n on: (event, callback) => {\n switch (event) {\n case 'data': onData = callback; break;\n case 'end': onEnd = callback; break;\n }\n },\n },\n // Handle quads by pushing them down the pipeline\n (error, quad) => { error && this.emit('error', error) || quad && this.push(quad); },\n // Emit prefixes through the `prefix` event\n (prefix, uri) => { this.emit('prefix', prefix, uri); }\n );\n\n // Implement Transform methods through parser callbacks\n this._transform = (chunk, encoding, done) => { onData(chunk); done(); };\n this._flush = done => { onEnd(); done(); };\n }\n\n // ### Parses a stream of strings\n import(stream) {\n stream.on('data', chunk => { this.write(chunk); });\n stream.on('end', () => { this.end(); });\n stream.on('error', error => { this.emit('error', error); });\n return this;\n }\n}\n","// **N3StreamWriter** serializes a quad stream into a text stream.\nimport { Transform } from 'readable-stream';\nimport N3Writer from './N3Writer';\n\n// ## Constructor\nexport default class N3StreamWriter extends Transform {\n constructor(options) {\n super({ encoding: 'utf8', writableObjectMode: true });\n\n // Set up writer with a dummy stream object\n const writer = this._writer = new N3Writer({\n write: (quad, encoding, callback) => { this.push(quad); callback && callback(); },\n end: callback => { this.push(null); callback && callback(); },\n }, options);\n\n // Implement Transform methods on top of writer\n this._transform = (quad, encoding, done) => { writer.addQuad(quad, done); };\n this._flush = done => { writer.end(done); };\n }\n\n// ### Serializes a stream of quads\n import(stream) {\n stream.on('data', quad => { this.write(quad); });\n stream.on('end', () => { this.end(); });\n stream.on('error', error => { this.emit('error', error); });\n stream.on('prefix', (prefix, iri) => { this._writer.addPrefix(prefix, iri); });\n return this;\n }\n}\n","import Lexer from './N3Lexer';\nimport Parser from './N3Parser';\nimport Writer from './N3Writer';\nimport Store from './N3Store';\nimport StreamParser from './N3StreamParser';\nimport StreamWriter from './N3StreamWriter';\nimport * as Util from './N3Util';\n\nimport {\n default as DataFactory,\n\n Term,\n NamedNode,\n Literal,\n BlankNode,\n Variable,\n DefaultGraph,\n Quad,\n Triple,\n\n termFromId,\n termToId,\n} from './N3DataFactory';\n\n// Named exports\nexport {\n Lexer,\n Parser,\n Writer,\n Store,\n StreamParser,\n StreamWriter,\n Util,\n\n DataFactory,\n\n Term,\n NamedNode,\n Literal,\n BlankNode,\n Variable,\n DefaultGraph,\n Quad,\n Triple,\n\n termFromId,\n termToId,\n};\n\n// Export all named exports as a default object for backward compatibility\nexport default {\n Lexer,\n Parser,\n Writer,\n Store,\n StreamParser,\n StreamWriter,\n Util,\n\n DataFactory,\n\n Term,\n NamedNode,\n Literal,\n BlankNode,\n Variable,\n DefaultGraph,\n Quad,\n Triple,\n\n termFromId,\n termToId,\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","(function() {\n var root;\n\n\tif (typeof window === 'object' && window) {\n\t\troot = window;\n\t} else {\n\t\troot = global;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = root.Promise ? root.Promise : Promise;\n\t} else if (!root.Promise) {\n\t\troot.Promise = Promise;\n\t}\n\n\t// Use polyfill for setImmediate for performance gains\n\tvar asap = root.setImmediate || function(fn) { setTimeout(fn, 1); };\n\n\t// Polyfill for Function.prototype.bind\n\tfunction bind(fn, thisArg) {\n\t\treturn function() {\n\t\t\tfn.apply(thisArg, arguments);\n\t\t}\n\t}\n\n\tvar isArray = Array.isArray || function(value) { return Object.prototype.toString.call(value) === \"[object Array]\" };\n\n\tfunction Promise(fn) {\n\t\tif (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n\t\tif (typeof fn !== 'function') throw new TypeError('not a function');\n\t\tthis._state = null;\n\t\tthis._value = null;\n\t\tthis._deferreds = []\n\n\t\tdoResolve(fn, bind(resolve, this), bind(reject, this))\n\t}\n\n\tfunction handle(deferred) {\n\t\tvar me = this;\n\t\tif (this._state === null) {\n\t\t\tthis._deferreds.push(deferred);\n\t\t\treturn\n\t\t}\n\t\tasap(function() {\n\t\t\tvar cb = me._state ? deferred.onFulfilled : deferred.onRejected\n\t\t\tif (cb === null) {\n\t\t\t\t(me._state ? deferred.resolve : deferred.reject)(me._value);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar ret;\n\t\t\ttry {\n\t\t\t\tret = cb(me._value);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tdeferred.reject(e);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdeferred.resolve(ret);\n\t\t})\n\t}\n\n\tfunction resolve(newValue) {\n\t\ttry { //Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n\t\t\tif (newValue === this) throw new TypeError('A promise cannot be resolved with itself.');\n\t\t\tif (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n\t\t\t\tvar then = newValue.then;\n\t\t\t\tif (typeof then === 'function') {\n\t\t\t\t\tdoResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._state = true;\n\t\t\tthis._value = newValue;\n\t\t\tfinale.call(this);\n\t\t} catch (e) { reject.call(this, e); }\n\t}\n\n\tfunction reject(newValue) {\n\t\tthis._state = false;\n\t\tthis._value = newValue;\n\t\tfinale.call(this);\n\t}\n\n\tfunction finale() {\n\t\tfor (var i = 0, len = this._deferreds.length; i < len; i++) {\n\t\t\thandle.call(this, this._deferreds[i]);\n\t\t}\n\t\tthis._deferreds = null;\n\t}\n\n\tfunction Handler(onFulfilled, onRejected, resolve, reject){\n\t\tthis.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n\t\tthis.onRejected = typeof onRejected === 'function' ? onRejected : null;\n\t\tthis.resolve = resolve;\n\t\tthis.reject = reject;\n\t}\n\n\t/**\n\t * Take a potentially misbehaving resolver function and make sure\n\t * onFulfilled and onRejected are only called once.\n\t *\n\t * Makes no guarantees about asynchrony.\n\t */\n\tfunction doResolve(fn, onFulfilled, onRejected) {\n\t\tvar done = false;\n\t\ttry {\n\t\t\tfn(function (value) {\n\t\t\t\tif (done) return;\n\t\t\t\tdone = true;\n\t\t\t\tonFulfilled(value);\n\t\t\t}, function (reason) {\n\t\t\t\tif (done) return;\n\t\t\t\tdone = true;\n\t\t\t\tonRejected(reason);\n\t\t\t})\n\t\t} catch (ex) {\n\t\t\tif (done) return;\n\t\t\tdone = true;\n\t\t\tonRejected(ex);\n\t\t}\n\t}\n\n\tPromise.prototype['catch'] = function (onRejected) {\n\t\treturn this.then(null, onRejected);\n\t};\n\n\tPromise.prototype.then = function(onFulfilled, onRejected) {\n\t\tvar me = this;\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\thandle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));\n\t\t})\n\t};\n\n\tPromise.all = function () {\n\t\tvar args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (args.length === 0) return resolve([]);\n\t\t\tvar remaining = args.length;\n\t\t\tfunction res(i, val) {\n\t\t\t\ttry {\n\t\t\t\t\tif (val && (typeof val === 'object' || typeof val === 'function')) {\n\t\t\t\t\t\tvar then = val.then;\n\t\t\t\t\t\tif (typeof then === 'function') {\n\t\t\t\t\t\t\tthen.call(val, function (val) { res(i, val) }, reject);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\targs[i] = val;\n\t\t\t\t\tif (--remaining === 0) {\n\t\t\t\t\t\tresolve(args);\n\t\t\t\t\t}\n\t\t\t\t} catch (ex) {\n\t\t\t\t\treject(ex);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i = 0; i < args.length; i++) {\n\t\t\t\tres(i, args[i]);\n\t\t\t}\n\t\t});\n\t};\n\n\tPromise.resolve = function (value) {\n\t\tif (value && typeof value === 'object' && value.constructor === Promise) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn new Promise(function (resolve) {\n\t\t\tresolve(value);\n\t\t});\n\t};\n\n\tPromise.reject = function (value) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\treject(value);\n\t\t});\n\t};\n\n\tPromise.race = function (values) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tfor(var i = 0, len = values.length; i < len; i++) {\n\t\t\t\tvalues[i].then(resolve, reject);\n\t\t\t}\n\t\t});\n\t};\n})();","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/BlankNode\"), exports);\n__exportStar(require(\"./lib/DataFactory\"), exports);\n__exportStar(require(\"./lib/DefaultGraph\"), exports);\n__exportStar(require(\"./lib/Literal\"), exports);\n__exportStar(require(\"./lib/NamedNode\"), exports);\n__exportStar(require(\"./lib/Quad\"), exports);\n__exportStar(require(\"./lib/Variable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNode = void 0;\n/**\n * A term that represents an RDF blank node with a label.\n */\nclass BlankNode {\n constructor(value) {\n this.termType = 'BlankNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNode = BlankNode;\n//# sourceMappingURL=BlankNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataFactory = void 0;\nconst BlankNode_1 = require(\"./BlankNode\");\nconst DefaultGraph_1 = require(\"./DefaultGraph\");\nconst Literal_1 = require(\"./Literal\");\nconst NamedNode_1 = require(\"./NamedNode\");\nconst Quad_1 = require(\"./Quad\");\nconst Variable_1 = require(\"./Variable\");\nlet dataFactoryCounter = 0;\n/**\n * A factory for instantiating RDF terms and quads.\n */\nclass DataFactory {\n constructor(options) {\n this.blankNodeCounter = 0;\n options = options || {};\n this.blankNodePrefix = options.blankNodePrefix || `df_${dataFactoryCounter++}_`;\n }\n /**\n * @param value The IRI for the named node.\n * @return A new instance of NamedNode.\n * @see NamedNode\n */\n namedNode(value) {\n return new NamedNode_1.NamedNode(value);\n }\n /**\n * @param value The optional blank node identifier.\n * @return A new instance of BlankNode.\n * If the `value` parameter is undefined a new identifier\n * for the blank node is generated for each call.\n * @see BlankNode\n */\n blankNode(value) {\n return new BlankNode_1.BlankNode(value || `${this.blankNodePrefix}${this.blankNodeCounter++}`);\n }\n /**\n * @param value The literal value.\n * @param languageOrDatatype The optional language or datatype.\n * If `languageOrDatatype` is a NamedNode,\n * then it is used for the value of `NamedNode.datatype`.\n * Otherwise `languageOrDatatype` is used for the value\n * of `NamedNode.language`.\n * @return A new instance of Literal.\n * @see Literal\n */\n literal(value, languageOrDatatype) {\n return new Literal_1.Literal(value, languageOrDatatype);\n }\n /**\n * This method is optional.\n * @param value The variable name\n * @return A new instance of Variable.\n * @see Variable\n */\n variable(value) {\n return new Variable_1.Variable(value);\n }\n /**\n * @return An instance of DefaultGraph.\n */\n defaultGraph() {\n return DefaultGraph_1.DefaultGraph.INSTANCE;\n }\n /**\n * @param subject The quad subject term.\n * @param predicate The quad predicate term.\n * @param object The quad object term.\n * @param graph The quad graph term.\n * @return A new instance of Quad.\n * @see Quad\n */\n quad(subject, predicate, object, graph) {\n return new Quad_1.Quad(subject, predicate, object, graph || this.defaultGraph());\n }\n /**\n * Create a deep copy of the given term using this data factory.\n * @param original An RDF term.\n * @return A deep copy of the given term.\n */\n fromTerm(original) {\n // TODO: remove nasty any casts when this TS bug has been fixed:\n // https://github.com/microsoft/TypeScript/issues/26933\n switch (original.termType) {\n case 'NamedNode':\n return this.namedNode(original.value);\n case 'BlankNode':\n return this.blankNode(original.value);\n case 'Literal':\n if (original.language) {\n return this.literal(original.value, original.language);\n }\n if (!original.datatype.equals(Literal_1.Literal.XSD_STRING)) {\n return this.literal(original.value, this.fromTerm(original.datatype));\n }\n return this.literal(original.value);\n case 'Variable':\n return this.variable(original.value);\n case 'DefaultGraph':\n return this.defaultGraph();\n case 'Quad':\n return this.quad(this.fromTerm(original.subject), this.fromTerm(original.predicate), this.fromTerm(original.object), this.fromTerm(original.graph));\n }\n }\n /**\n * Create a deep copy of the given quad using this data factory.\n * @param original An RDF quad.\n * @return A deep copy of the given quad.\n */\n fromQuad(original) {\n return this.fromTerm(original);\n }\n /**\n * Reset the internal blank node counter.\n */\n resetBlankNodeCounter() {\n this.blankNodeCounter = 0;\n }\n}\nexports.DataFactory = DataFactory;\n//# sourceMappingURL=DataFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultGraph = void 0;\n/**\n * A singleton term instance that represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass DefaultGraph {\n constructor() {\n this.termType = 'DefaultGraph';\n this.value = '';\n // Private constructor\n }\n equals(other) {\n return !!other && other.termType === 'DefaultGraph';\n }\n}\nexports.DefaultGraph = DefaultGraph;\nDefaultGraph.INSTANCE = new DefaultGraph();\n//# sourceMappingURL=DefaultGraph.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Literal = void 0;\nconst NamedNode_1 = require(\"./NamedNode\");\n/**\n * A term that represents an RDF literal, containing a string with an optional language tag or datatype.\n */\nclass Literal {\n constructor(value, languageOrDatatype) {\n this.termType = 'Literal';\n this.value = value;\n if (typeof languageOrDatatype === 'string') {\n this.language = languageOrDatatype;\n this.datatype = Literal.RDF_LANGUAGE_STRING;\n }\n else if (languageOrDatatype) {\n this.language = '';\n this.datatype = languageOrDatatype;\n }\n else {\n this.language = '';\n this.datatype = Literal.XSD_STRING;\n }\n }\n equals(other) {\n return !!other && other.termType === 'Literal' && other.value === this.value &&\n other.language === this.language && this.datatype.equals(other.datatype);\n }\n}\nexports.Literal = Literal;\nLiteral.RDF_LANGUAGE_STRING = new NamedNode_1.NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');\nLiteral.XSD_STRING = new NamedNode_1.NamedNode('http://www.w3.org/2001/XMLSchema#string');\n//# sourceMappingURL=Literal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NamedNode = void 0;\n/**\n * A term that contains an IRI.\n */\nclass NamedNode {\n constructor(value) {\n this.termType = 'NamedNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'NamedNode' && other.value === this.value;\n }\n}\nexports.NamedNode = NamedNode;\n//# sourceMappingURL=NamedNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Quad = void 0;\n/**\n * An instance of DefaultGraph represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass Quad {\n constructor(subject, predicate, object, graph) {\n this.termType = 'Quad';\n this.value = '';\n this.subject = subject;\n this.predicate = predicate;\n this.object = object;\n this.graph = graph;\n }\n equals(other) {\n // `|| !other.termType` is for backwards-compatibility with old factories without RDF* support.\n return !!other && (other.termType === 'Quad' || !other.termType) &&\n this.subject.equals(other.subject) &&\n this.predicate.equals(other.predicate) &&\n this.object.equals(other.object) &&\n this.graph.equals(other.graph);\n }\n}\nexports.Quad = Quad;\n//# sourceMappingURL=Quad.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Variable = void 0;\n/**\n * A term that represents a variable.\n */\nclass Variable {\n constructor(value) {\n this.termType = 'Variable';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'Variable' && other.value === this.value;\n }\n}\nexports.Variable = Variable;\n//# sourceMappingURL=Variable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/RdfIsomorphic\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTermGrounded = exports.termToSignature = exports.quadToSignature = exports.sha1hex = exports.hashTerm = exports.hashTerms = exports.getGraphBlankNodes = exports.uniqGraph = exports.deindexGraph = exports.indexGraph = exports.getQuadsWithoutBlankNodes = exports.getQuadsWithBlankNodes = exports.hasValue = exports.hashValues = exports.getBijectionInner = exports.getBijection = exports.isomorphic = void 0;\nconst hash_js_1 = require(\"hash.js\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\n/**\n * Determines if the two given graphs are isomorphic.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {boolean} If the two given graphs are isomorphic.\n */\nfunction isomorphic(graphA, graphB) {\n return !!getBijection(graphA, graphB);\n}\nexports.isomorphic = isomorphic;\n/**\n * Calculate a hash of graphA blank nodes to graphB blank nodes.\n * This represents a bijection from graphA's blank nodes to graphB's blank nodes.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {IBijection} A hash representing a bijection, or null if none could be found.\n */\nfunction getBijection(graphA, graphB) {\n // Check if all (non-blanknode-containing) quads in the two graphs are equal.\n // We do this by creating a hash-based index for both graphs.\n const nonBlankIndexA = indexGraph(getQuadsWithoutBlankNodes(graphA));\n const nonBlankIndexB = indexGraph(getQuadsWithoutBlankNodes(graphB));\n if (Object.keys(nonBlankIndexA).length !== Object.keys(nonBlankIndexB).length) {\n return null;\n }\n for (const key in nonBlankIndexA) {\n if (nonBlankIndexA[key] !== nonBlankIndexB[key]) {\n return null;\n }\n }\n // Pre-process data that needs to be present in each iteration of getBijectionInner.\n const blankQuadsA = uniqGraph(getQuadsWithBlankNodes(graphA));\n const blankQuadsB = uniqGraph(getQuadsWithBlankNodes(graphB));\n const blankNodesA = getGraphBlankNodes(graphA);\n const blankNodesB = getGraphBlankNodes(graphB);\n return getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB);\n}\nexports.getBijection = getBijection;\nfunction getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, groundedHashesA, groundedHashesB) {\n if (!groundedHashesA) {\n groundedHashesA = {};\n }\n if (!groundedHashesB) {\n groundedHashesB = {};\n }\n // Hash every term based on the signature of the quads if appears in.\n const [hashesA, ungroundedHashesA] = hashTerms(blankQuadsA, blankNodesA, groundedHashesA);\n const [hashesB, ungroundedHashesB] = hashTerms(blankQuadsB, blankNodesB, groundedHashesB);\n // Break quickly if a graph contains a grounded node that is not contained in the other graph.\n if (Object.keys(hashesA).length !== Object.keys(hashesB).length) {\n return null;\n }\n for (const hashKeyA in hashesA) {\n if (!hasValue(hashesB, hashesA[hashKeyA])) {\n return null;\n }\n }\n // Map the blank nodes from graph A to the blank nodes of graph B using the created hashes.\n // Grounded hashes will also be equal, but not needed here, we will need them in the next recursion\n // (as we only recurse on grounded nodes).\n let bijection = {};\n for (const blankNodeA of blankNodesA) {\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n const blankNodeAHash = ungroundedHashesA[blankNodeAString];\n for (const blankNodeBString in ungroundedHashesB) {\n if (ungroundedHashesB[blankNodeBString] === blankNodeAHash) {\n bijection[blankNodeAString] = blankNodeBString;\n delete ungroundedHashesB[blankNodeBString];\n break;\n }\n }\n }\n // Check if all nodes from graph A and B are present in the bijection,\n // if not, speculatively mark pairs with matching ungrounded hashes as bijected, and recurse.\n if (!arraysEqual(Object.keys(bijection).sort(), blankNodesA.map(rdf_string_1.termToString).sort())\n || !arraysEqual(hashValues(bijection).sort(), blankNodesB.map(rdf_string_1.termToString).sort())) {\n // I have not yet been able to find any pathological cases where this code is reached.\n // This may be removable, but let's wait until someone proves that.\n bijection = null;\n for (const blankNodeA of blankNodesA) {\n // Only replace ungrounded node hashes\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n if (!hashesA[blankNodeAString]) {\n for (const blankNodeB of blankNodesB) {\n // Only replace ungrounded node hashes\n const blankNodeBString = rdf_string_1.termToString(blankNodeB);\n if (!hashesB[blankNodeBString]) {\n if (ungroundedHashesA[blankNodeAString] === ungroundedHashesB[blankNodeBString]) {\n const hash = sha1hex(blankNodeAString);\n bijection = getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, Object.assign(Object.assign({}, hashesA), { [blankNodeAString]: hash }), Object.assign(Object.assign({}, hashesB), { [blankNodeBString]: hash }));\n }\n }\n }\n }\n }\n }\n return bijection;\n}\nexports.getBijectionInner = getBijectionInner;\nfunction arraysEqual(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = array1.length; i--;) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Get all values from the given hash\n * @param hash A hash.\n * @return {any[]} The array of values.\n */\nfunction hashValues(hash) {\n const arr = [];\n for (const e in hash) {\n arr.push(hash[e]);\n }\n return arr;\n}\nexports.hashValues = hashValues;\n/**\n * Check if the given hash contains the given value.\n * @param hash A hash.\n * @param {string} value A value.\n * @return {boolean} If it contains the value.\n */\nfunction hasValue(hash, value) {\n for (const hashValue in hash) {\n if (hash[hashValue] === value) {\n return true;\n }\n }\n return false;\n}\nexports.hasValue = hasValue;\n/**\n * Get all quads with blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads with blank nodes\n */\nfunction getQuadsWithBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.someTerms(quad, (value) => {\n return value.termType === 'BlankNode'\n || (value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithBlankNodes = getQuadsWithBlankNodes;\n/**\n * Get all quads without blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads without blank nodes\n */\nfunction getQuadsWithoutBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.everyTerms(quad, (value) => {\n return value.termType !== 'BlankNode'\n && !(value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithoutBlankNodes = getQuadsWithoutBlankNodes;\n/**\n * Create a hash-based index of the given graph.\n * @param {Quad[]} graph An array of quads, the order does not matter.\n * @return {{[p: string]: boolean}} A hash-based datastructure representing the graph.\n */\nfunction indexGraph(graph) {\n const index = {};\n for (const quad of graph) {\n index[JSON.stringify(rdf_string_1.quadToStringQuad(quad))] = true;\n }\n return index;\n}\nexports.indexGraph = indexGraph;\n/**\n * Create a graph from the given hash-based index.\n * @param {{[p: string]: boolean}} indexedGraph A hash-based datastructure representing the graph.\n * @return {Quad[]} An array of quads, the order does not matter.\n */\nfunction deindexGraph(indexedGraph) {\n return Object.keys(indexedGraph).map((str) => rdf_string_1.stringQuadToQuad(JSON.parse(str)));\n}\nexports.deindexGraph = deindexGraph;\n/**\n * Unique-ify the given RDF graph based on strict equality.\n * The output graph will consist of new quad and term instances.\n * @param {Quad[]} graph An input graph.\n * @return {Quad[]} The input graph without duplicates.\n */\nfunction uniqGraph(graph) {\n return deindexGraph(indexGraph(graph));\n}\nexports.uniqGraph = uniqGraph;\n/**\n * Find all blank nodes in the given graph.\n * @param {Quad[]} graph An array of quads.\n * @return {BlankNode[]} A list of (unique) blank nodes.\n */\nfunction getGraphBlankNodes(graph) {\n return rdf_terms_1.uniqTerms(graph.map((quad) => rdf_terms_1.getBlankNodes(rdf_terms_1.getTermsNested(quad)))\n .reduce((acc, val) => acc.concat(val), []));\n}\nexports.getGraphBlankNodes = getGraphBlankNodes;\n/**\n * Create term hashes for the given set of quads and blank node terms.\n *\n * @param {Quad[]} quads A set of quads.\n * @param {Term[]} terms Blank node terms.\n * @param {ITermHash} groundedHashes Grounded term hashes that are used to create more specific signatures\n * of other terms, because they are based on non-blank nodes and grounded blank nodes.\n * @return {[ITermHash]} A tuple of grounded and ungrounded hashes.\n */\nfunction hashTerms(quads, terms, groundedHashes) {\n const hashes = Object.assign({}, groundedHashes);\n const ungroundedHashes = {};\n let hashNeeded = true;\n // Iteratively mark nodes as grounded.\n // If a node is marked as grounded, then the next iteration can lead to new grounded states\n while (hashNeeded) {\n const initialGroundedNodesCount = Object.keys(hashes).length;\n for (const term of terms) {\n const termString = rdf_string_1.termToString(term);\n if (!hashes[termString]) {\n const [grounded, hash] = hashTerm(term, quads, hashes);\n if (grounded) {\n hashes[termString] = hash;\n }\n ungroundedHashes[termString] = hash;\n }\n }\n // All terms that have a unique hash at this point can be marked as grounded\n const uniques = {};\n for (const termKey in ungroundedHashes) {\n const hash = ungroundedHashes[termKey];\n if (uniques[hash] === undefined) {\n uniques[hash] = termKey;\n }\n else {\n uniques[hash] = false;\n }\n }\n for (const hash in uniques) {\n const value = uniques[hash];\n if (value) {\n hashes[value] = hash;\n }\n }\n // Check if the loop needs to terminate\n hashNeeded = initialGroundedNodesCount !== Object.keys(hashes).length;\n }\n return [hashes, ungroundedHashes];\n}\nexports.hashTerms = hashTerms;\n/**\n * Generate a hash for the given term based on the signature of the quads it appears in.\n *\n * Signatures are made up of grounded terms in quads that are associated with a term,\n * i.e., everything except for ungrounded blank nodes.\n * The hash is created by hashing a sorted list of each quad's signature,\n * where each quad signature is a concatenation of the signature of all grounded terms.\n *\n * Terms are considered grounded if they are a member in the given hash AND if they are not the given term.\n *\n * @param {Term} term The term to get the hash around.\n * @param {Quad[]} quads The quads to include in the hashing.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {[boolean , string]} A tuple indicating if the given term is grounded in all the given quads, and the hash.\n */\nfunction hashTerm(term, quads, hashes) {\n const quadSignatures = [];\n let grounded = true;\n for (const quad of quads) {\n const terms = rdf_terms_1.getTermsNested(quad);\n if (terms.some((quadTerm) => quadTerm.equals(term))) {\n quadSignatures.push(quadToSignature(quad, hashes, term));\n for (const quadTerm of terms) {\n if (!isTermGrounded(quadTerm, hashes) && !quadTerm.equals(term)) {\n grounded = false;\n }\n }\n }\n }\n const hash = sha1hex(quadSignatures.sort().join(''));\n return [grounded, hash];\n}\nexports.hashTerm = hashTerm;\n/**\n * Create a hash using sha1 as a hex digest.\n * @param {string | Buffer | NodeJS.TypedArray | DataView} data Something to hash.\n * @return {string} A hash string.\n */\nfunction sha1hex(data) {\n return hash_js_1.sha1().update(data).digest('hex');\n}\nexports.sha1hex = sha1hex;\n/**\n * Convert the given quad to a string signature so that it can be used in the hash structure.\n * @param {Quad} quad A quad.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} term A target term to compare with.\n * @return {string} A string signature.\n */\nfunction quadToSignature(quad, hashes, term) {\n return rdf_terms_1.getTerms(quad).map((quadTerm) => termToSignature(quadTerm, hashes, term)).join('|');\n}\nexports.quadToSignature = quadToSignature;\n/**\n * Convert the given term to a string signature so that it can be used in the hash structure.\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} target A target term to compare with.\n * @return {string} A string signature.\n */\nfunction termToSignature(term, hashes, target) {\n if (term.equals(target)) {\n return '@self';\n }\n else if (term.termType === 'BlankNode') {\n return hashes[rdf_string_1.termToString(term)] || '@blank';\n }\n else if (term.termType === 'Quad') {\n return `<${quadToSignature(term, hashes, target)}>`;\n }\n else {\n return rdf_string_1.termToString(term);\n }\n}\nexports.termToSignature = termToSignature;\n/**\n * Check if a term is grounded.\n *\n * A term is grounded if it is not a blank node\n * or if it included in the given hash of grounded nodes.\n *\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {boolean} If the given term is grounded.\n */\nfunction isTermGrounded(term, hashes) {\n return (term.termType !== 'BlankNode'\n && !(term.termType === 'Quad' && rdf_terms_1.getTermsNested(term).some(subTerm => !isTermGrounded(subTerm, hashes)))) || !!hashes[rdf_string_1.termToString(term)];\n}\nexports.isTermGrounded = isTermGrounded;\n//# sourceMappingURL=RdfIsomorphic.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSupportedJavaScriptPrimitives = exports.getSupportedRdfDatatypes = exports.getTermRaw = exports.toRdf = exports.fromRdf = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst handler_1 = require(\"./lib/handler\");\nconst Translator_1 = require(\"./lib/Translator\");\n__exportStar(require(\"./lib/handler\"), exports);\n__exportStar(require(\"./lib/ITypeHandler\"), exports);\n__exportStar(require(\"./lib/Translator\"), exports);\nconst DF = new rdf_data_factory_1.DataFactory();\n// Construct translator with built-in handlers\nconst translator = new Translator_1.Translator();\ntranslator.registerHandler(new handler_1.TypeHandlerString(), handler_1.TypeHandlerString.TYPES.map(t => DF.namedNode(t)), ['string']);\ntranslator.registerHandler(new handler_1.TypeHandlerBoolean(), [handler_1.TypeHandlerBoolean.TYPE].map(t => DF.namedNode(t)), ['boolean']);\ntranslator.registerHandler(new handler_1.TypeHandlerNumberDouble(), handler_1.TypeHandlerNumberDouble.TYPES.map(t => DF.namedNode(t)), ['number']);\ntranslator.registerHandler(new handler_1.TypeHandlerNumberInteger(), handler_1.TypeHandlerNumberInteger.TYPES.map(t => DF.namedNode(t)), ['number']);\ntranslator.registerHandler(new handler_1.TypeHandlerDate(), handler_1.TypeHandlerDate.TYPES.map(t => DF.namedNode(t)), ['object']);\n/**\n * Convert the given RDF literal to an JavaScript primitive.\n * @param {Literal} literal An RDF literal value.\n * @param {boolean} validate If the literal value should be validated against the datatype.\n * @return {any} A JavaScript primitive value.\n */\nfunction fromRdf(literal, validate) {\n return translator.fromRdf(literal, validate);\n}\nexports.fromRdf = fromRdf;\n/**\n * Convert the given JavaScript primitive to an RDF literal.\n * @param value A JavaScript primitive value.\n * @param options Options for RDF conversion. May also be a data factory.\n * @return {Literal} An RDF literal value.\n */\nfunction toRdf(value, options) {\n // Backwards-compatibility to accept data factory as option arg.\n if (options && 'namedNode' in options) {\n options = { dataFactory: options };\n }\n // Set default data factory\n options = options || {};\n if (options && !options.dataFactory) {\n options.dataFactory = DF;\n }\n return translator.toRdf(value, options);\n}\nexports.toRdf = toRdf;\n/**\n * Get the raw value of the given term.\n * If it is a literal, {@link fromRdf} will be called.\n * Otherwise {@link .value} will be returned.\n * @param {Term} term Any RDF term.\n * @param {boolean} validate If the literal value should be validated against the datatype.\n * @return {any} A JavaScript primitive value.\n */\nfunction getTermRaw(term, validate) {\n if (term.termType === 'Literal') {\n return fromRdf(term, validate);\n }\n return term.value;\n}\nexports.getTermRaw = getTermRaw;\n/**\n * @return {NamedNode[]} An array of all supported RDF datatypes.\n */\nfunction getSupportedRdfDatatypes() {\n return translator.getSupportedRdfDatatypes();\n}\nexports.getSupportedRdfDatatypes = getSupportedRdfDatatypes;\n/**\n * @return {string[]} An array of all supported JavaScript types.\n */\nfunction getSupportedJavaScriptPrimitives() {\n return translator.getSupportedJavaScriptPrimitives();\n}\nexports.getSupportedJavaScriptPrimitives = getSupportedJavaScriptPrimitives;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ITypeHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Translator = void 0;\n/**\n * Translates between an RDF literal and a JavaScript primitive.\n */\nclass Translator {\n constructor() {\n this.supportedRdfDatatypes = [];\n this.fromRdfHandlers = {};\n this.toRdfHandlers = {};\n }\n static incorrectRdfDataType(literal) {\n throw new Error(`Invalid RDF ${literal.datatype.value} value: '${literal.value}'`);\n }\n registerHandler(handler, rdfDatatypes, javaScriptDataTypes) {\n for (const rdfDatatype of rdfDatatypes) {\n this.supportedRdfDatatypes.push(rdfDatatype);\n this.fromRdfHandlers[rdfDatatype.value] = handler;\n }\n for (const javaScriptDataType of javaScriptDataTypes) {\n let existingToRdfHandlers = this.toRdfHandlers[javaScriptDataType];\n if (!existingToRdfHandlers) {\n this.toRdfHandlers[javaScriptDataType] = existingToRdfHandlers = [];\n }\n existingToRdfHandlers.push(handler);\n }\n }\n fromRdf(literal, validate) {\n const handler = this.fromRdfHandlers[literal.datatype.value];\n if (handler) {\n return handler.fromRdf(literal, validate);\n }\n else {\n return literal.value;\n }\n }\n toRdf(value, options) {\n const handlers = this.toRdfHandlers[typeof value];\n if (handlers) {\n for (const handler of handlers) {\n const ret = handler.toRdf(value, options);\n if (ret) {\n return ret;\n }\n }\n }\n throw new Error(`Invalid JavaScript value: '${value}'`);\n }\n /**\n * @return {NamedNode[]} An array of all supported RDF datatypes.\n */\n getSupportedRdfDatatypes() {\n return this.supportedRdfDatatypes;\n }\n /**\n * @return {string[]} An array of all supported JavaScript types.\n */\n getSupportedJavaScriptPrimitives() {\n return Object.keys(this.toRdfHandlers);\n }\n}\nexports.Translator = Translator;\n//# sourceMappingURL=Translator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerBoolean = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates booleans.\n */\nclass TypeHandlerBoolean {\n fromRdf(literal, validate) {\n switch (literal.value) {\n case 'true':\n return true;\n case 'false':\n return false;\n case '1':\n return true;\n case '0':\n return false;\n }\n if (validate) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n return false;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(value ? 'true' : 'false', datatype || dataFactory.namedNode(TypeHandlerBoolean.TYPE));\n }\n}\nTypeHandlerBoolean.TYPE = 'http://www.w3.org/2001/XMLSchema#boolean';\nexports.TypeHandlerBoolean = TypeHandlerBoolean;\n//# sourceMappingURL=TypeHandlerBoolean.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerDate = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates dates.\n */\nclass TypeHandlerDate {\n fromRdf(literal, validate) {\n if (validate && !literal.value.match(TypeHandlerDate\n .VALIDATORS[literal.datatype.value.substr(33, literal.datatype.value.length)])) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n switch (literal.datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#gDay':\n return new Date(0, 0, parseInt(literal.value, 10));\n case 'http://www.w3.org/2001/XMLSchema#gMonthDay':\n const partsMonthDay = literal.value.split('-');\n return new Date(0, parseInt(partsMonthDay[0], 10) - 1, parseInt(partsMonthDay[1], 10));\n case 'http://www.w3.org/2001/XMLSchema#gYear':\n return new Date(literal.value + '-01-01');\n case 'http://www.w3.org/2001/XMLSchema#gYearMonth':\n return new Date(literal.value + '-01');\n default:\n return new Date(literal.value);\n }\n }\n toRdf(value, { datatype, dataFactory }) {\n datatype = datatype || dataFactory.namedNode(TypeHandlerDate.TYPES[0]);\n // Assume date values\n if (!(value instanceof Date)) {\n return null;\n }\n const date = value;\n let valueString;\n switch (datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#gDay':\n valueString = String(date.getUTCDate());\n break;\n case 'http://www.w3.org/2001/XMLSchema#gMonthDay':\n valueString = (date.getUTCMonth() + 1) + '-' + date.getUTCDate();\n break;\n case 'http://www.w3.org/2001/XMLSchema#gYear':\n valueString = String(date.getUTCFullYear());\n break;\n case 'http://www.w3.org/2001/XMLSchema#gYearMonth':\n valueString = date.getUTCFullYear() + '-' + (date.getUTCMonth() + 1);\n break;\n case 'http://www.w3.org/2001/XMLSchema#date':\n valueString = date.toISOString().replace(/T.*$/, '');\n break;\n default:\n valueString = date.toISOString();\n }\n return dataFactory.literal(valueString, datatype);\n }\n}\nTypeHandlerDate.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#dateTime',\n 'http://www.w3.org/2001/XMLSchema#date',\n 'http://www.w3.org/2001/XMLSchema#gDay',\n 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n 'http://www.w3.org/2001/XMLSchema#gYear',\n 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n];\nTypeHandlerDate.VALIDATORS = {\n date: /^[0-9]+-[0-9][0-9]-[0-9][0-9]Z?$/,\n dateTime: /^[0-9]+-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9](\\.[0-9][0-9][0-9])?((Z?)|([\\+-][0-9][0-9]:[0-9][0-9]))$/,\n gDay: /^[0-9]+$/,\n gMonthDay: /^[0-9]+-[0-9][0-9]$/,\n gYear: /^[0-9]+$/,\n gYearMonth: /^[0-9]+-[0-9][0-9]$/,\n};\nexports.TypeHandlerDate = TypeHandlerDate;\n//# sourceMappingURL=TypeHandlerDate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerNumberDouble = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates double numbers.\n */\nclass TypeHandlerNumberDouble {\n fromRdf(literal, validate) {\n const parsed = parseFloat(literal.value);\n if (validate) {\n if (isNaN(parsed)) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n // TODO: validate more\n }\n return parsed;\n }\n toRdf(value, { datatype, dataFactory }) {\n datatype = datatype || dataFactory.namedNode(TypeHandlerNumberDouble.TYPES[0]);\n if (isNaN(value)) {\n return dataFactory.literal('NaN', datatype);\n }\n if (!isFinite(value)) {\n return dataFactory.literal(value > 0 ? 'INF' : '-INF', datatype);\n }\n if (value % 1 === 0) {\n return null;\n }\n return dataFactory.literal(value.toExponential(15).replace(/(\\d)0*e\\+?/, '$1E'), datatype);\n }\n}\nTypeHandlerNumberDouble.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#double',\n 'http://www.w3.org/2001/XMLSchema#decimal',\n 'http://www.w3.org/2001/XMLSchema#float',\n];\nexports.TypeHandlerNumberDouble = TypeHandlerNumberDouble;\n//# sourceMappingURL=TypeHandlerNumberDouble.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerNumberInteger = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates integer numbers.\n */\nclass TypeHandlerNumberInteger {\n fromRdf(literal, validate) {\n const parsed = parseInt(literal.value, 10);\n if (validate) {\n if (isNaN(parsed) || literal.value.indexOf('.') >= 0) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n // TODO: validate more\n }\n return parsed;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(String(value), datatype\n || (value <= TypeHandlerNumberInteger.MAX_INT && value >= TypeHandlerNumberInteger.MIN_INT\n ? dataFactory.namedNode(TypeHandlerNumberInteger.TYPES[0])\n : dataFactory.namedNode(TypeHandlerNumberInteger.TYPES[1])));\n }\n}\nTypeHandlerNumberInteger.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#integer',\n 'http://www.w3.org/2001/XMLSchema#long',\n 'http://www.w3.org/2001/XMLSchema#int',\n 'http://www.w3.org/2001/XMLSchema#byte',\n 'http://www.w3.org/2001/XMLSchema#short',\n 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n];\nTypeHandlerNumberInteger.MAX_INT = 2147483647;\nTypeHandlerNumberInteger.MIN_INT = -2147483648;\nexports.TypeHandlerNumberInteger = TypeHandlerNumberInteger;\n//# sourceMappingURL=TypeHandlerNumberInteger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerString = void 0;\n/**\n * Translates strings.\n */\nclass TypeHandlerString {\n fromRdf(literal) {\n return literal.value;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(value, datatype);\n }\n}\nTypeHandlerString.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#string',\n 'http://www.w3.org/2001/XMLSchema#normalizedString',\n 'http://www.w3.org/2001/XMLSchema#anyURI',\n 'http://www.w3.org/2001/XMLSchema#base64Binary',\n 'http://www.w3.org/2001/XMLSchema#language',\n 'http://www.w3.org/2001/XMLSchema#Name',\n 'http://www.w3.org/2001/XMLSchema#NCName',\n 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n 'http://www.w3.org/2001/XMLSchema#token',\n 'http://www.w3.org/2001/XMLSchema#hexBinary',\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n 'http://www.w3.org/2001/XMLSchema#time',\n 'http://www.w3.org/2001/XMLSchema#duration',\n];\nexports.TypeHandlerString = TypeHandlerString;\n//# sourceMappingURL=TypeHandlerString.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./TypeHandlerBoolean\"), exports);\n__exportStar(require(\"./TypeHandlerDate\"), exports);\n__exportStar(require(\"./TypeHandlerNumberDouble\"), exports);\n__exportStar(require(\"./TypeHandlerNumberInteger\"), exports);\n__exportStar(require(\"./TypeHandlerString\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/PendingStreamsIndex\"), exports);\n__exportStar(require(\"./lib/StreamingStore\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PendingStreamsIndex = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\n/**\n * A PendingStreamsIndex stores pending streams indexed by the quad pattern they have been created for.\n */\nclass PendingStreamsIndex {\n constructor() {\n this.indexedStreams = new Map();\n this.allStreams = [];\n }\n termToString(term) {\n return term && term.termType !== 'Variable' ? (0, rdf_string_1.termToString)(term) : PendingStreamsIndex.ID_VARIABLE;\n }\n /**\n * Add a new pending stream for the given quad pattern.\n * @param pendingStream A pending stream.\n * @param subject A term.\n * @param predicate A term.\n * @param object A term.\n * @param graph A term.\n */\n addPatternListener(pendingStream, subject, predicate, object, graph) {\n // Append to list of pendingStreams\n this.allStreams.push(pendingStream);\n // Append to index of pendingStreams\n const key = `${this.termToString(subject)}${PendingStreamsIndex.ID_SEPARATOR}${this.termToString(predicate)}${PendingStreamsIndex.ID_SEPARATOR}${this.termToString(object)}${PendingStreamsIndex.ID_SEPARATOR}${this.termToString(graph)}`;\n let existingListeners = this.indexedStreams.get(key);\n if (!existingListeners) {\n existingListeners = [];\n this.indexedStreams.set(key, existingListeners);\n }\n existingListeners.push(pendingStream);\n }\n /**\n * Find all the pending streams from which their quad pattern match the given quad.\n * @param quad The quad to match patterns to.\n */\n getPendingStreamsForQuad(quad) {\n // Determine the combinations of quad patterns to look up\n let keys = [(0, rdf_terms_1.getTerms)(quad).map(term => (0, rdf_string_1.termToString)(term))];\n for (let i = 0; i < rdf_terms_1.QUAD_TERM_NAMES.length; i++) {\n const keysOld = keys;\n keys = [];\n for (const key of keysOld) {\n keys.push(key);\n const keyModified = [...key];\n keyModified[i] = PendingStreamsIndex.ID_VARIABLE;\n keys.push(keyModified);\n }\n }\n // Fetch the pendingStreams for the quad pattern combinations\n const pendingStreams = [];\n for (const key of keys) {\n const found = this.indexedStreams.get(key.join(PendingStreamsIndex.ID_SEPARATOR));\n if (found) {\n pendingStreams.push(...found);\n }\n }\n return pendingStreams;\n }\n}\nPendingStreamsIndex.ID_VARIABLE = '?';\nPendingStreamsIndex.ID_SEPARATOR = ':';\nexports.PendingStreamsIndex = PendingStreamsIndex;\n//# sourceMappingURL=PendingStreamsIndex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamingStore = void 0;\nconst n3_1 = require(\"n3\");\nconst readable_stream_1 = require(\"readable-stream\");\nconst PendingStreamsIndex_1 = require(\"./PendingStreamsIndex\");\n/**\n * A StreamingStore allows data lookup and insertion to happen in parallel.\n * Concretely, this means that `match()` calls happening before `import()` calls, will still consider those triples that\n * are inserted later, which is done by keeping the response streams of `match()` open.\n * Only when the `end()` method is invoked, all response streams will close, and the StreamingStore will be considered\n * immutable.\n *\n * WARNING: `end()` MUST be called at some point, otherwise all `match` streams will remain unended.\n */\nclass StreamingStore {\n constructor(store = new n3_1.Store()) {\n this.pendingStreams = new PendingStreamsIndex_1.PendingStreamsIndex();\n this.ended = false;\n this.store = store;\n }\n /**\n * Mark this store as ended.\n *\n * This will make sure that all running and future `match` calls will end,\n * and all next `import` calls to this store will throw an error.\n */\n end() {\n this.ended = true;\n // Mark all pendingStreams as ended.\n for (const pendingStream of this.pendingStreams.allStreams) {\n pendingStream.push(null);\n pendingStream._pipeSource.unpipe();\n }\n }\n importToListeners(stream) {\n stream.on('data', (quad) => {\n if (!this.ended && !this.store.countQuads(quad.subject, quad.predicate, quad.object, quad.graph)) {\n for (const pendingStream of this.pendingStreams.getPendingStreamsForQuad(quad)) {\n if (pendingStream.isInitialized) {\n pendingStream.push(quad);\n pendingStream.emit('quad', quad);\n }\n }\n }\n });\n }\n import(stream) {\n if (this.ended) {\n throw new Error('Attempted to import into an ended StreamingStore');\n }\n this.importToListeners(stream);\n return this.store.import(stream);\n }\n match(subject, predicate, object, graph) {\n const storeResult = this.store.match(subject, predicate, object, graph);\n let stream = storeResult;\n // If the store hasn't ended yet, also create a new pendingStream\n if (!this.ended) {\n // The new pendingStream remains open, until the store is ended.\n const pendingStream = new readable_stream_1.PassThrough({ objectMode: true });\n this.pendingStreams.addPatternListener(pendingStream, subject, predicate, object, graph);\n stream = storeResult.pipe(pendingStream, { end: false });\n stream._pipeSource = storeResult;\n // This is an ugly hack to annotate pendingStream with the isInitialized once the store stream started being read.\n // This is necessary to avoid duplicate quads cases where match() is called but not yet read, an import is done,\n // and only then the match() stream is read.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const readOld = storeResult._read;\n storeResult._read = (size) => {\n pendingStream.isInitialized = true;\n readOld.call(storeResult, size);\n };\n }\n return stream;\n }\n /**\n * The internal store with all imported quads.\n */\n getStore() {\n return this.store;\n }\n}\nexports.StreamingStore = StreamingStore;\n//# sourceMappingURL=StreamingStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.termToString = exports.stringToTerm = exports.stringQuadToQuad = exports.quadToStringQuad = exports.getLiteralValue = exports.getLiteralType = exports.getLiteralLanguage = void 0;\nconst TermUtil_1 = require(\"./lib/TermUtil\");\nObject.defineProperty(exports, \"getLiteralLanguage\", { enumerable: true, get: function () { return TermUtil_1.getLiteralLanguage; } });\nObject.defineProperty(exports, \"getLiteralType\", { enumerable: true, get: function () { return TermUtil_1.getLiteralType; } });\nObject.defineProperty(exports, \"getLiteralValue\", { enumerable: true, get: function () { return TermUtil_1.getLiteralValue; } });\nObject.defineProperty(exports, \"quadToStringQuad\", { enumerable: true, get: function () { return TermUtil_1.quadToStringQuad; } });\nObject.defineProperty(exports, \"stringQuadToQuad\", { enumerable: true, get: function () { return TermUtil_1.stringQuadToQuad; } });\nObject.defineProperty(exports, \"stringToTerm\", { enumerable: true, get: function () { return TermUtil_1.stringToTerm; } });\nObject.defineProperty(exports, \"termToString\", { enumerable: true, get: function () { return TermUtil_1.termToString; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringQuadToQuad = exports.quadToStringQuad = exports.stringToTerm = exports.getLiteralLanguage = exports.getLiteralType = exports.getLiteralValue = exports.termToString = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst FACTORY = new rdf_data_factory_1.DataFactory();\n/**\n * Utility methods for converting between string-based RDF representations and RDFJS objects.\n *\n * RDF Terms are represented as follows:\n * * Blank nodes: '_:myBlankNode'\n * * Variables: '_myVariable'\n * * Literals: '\"myString\"', '\"myLanguageString\"@en-us', '\"

e

\"^^'\n * * URIs: ''\n *\n * Quads/triples are represented as hashes with 'subject', 'predicate', 'object' and 'graph' (optional)\n * as keys, and string-based RDF terms as values.\n */\n/**\n * Convert an RDFJS term to a string-based representation.\n * @param {RDF.Term} term An RDFJS term.\n * @return {string} A string-based term representation.\n */\nfunction termToString(term) {\n // TODO: remove nasty any casts when this TS bug has been fixed: https://github.com/microsoft/TypeScript/issues/26933\n if (!term) {\n return undefined;\n }\n switch (term.termType) {\n case 'NamedNode': return (`<${escapeIRI(term.value)}>`);\n case 'BlankNode': return (`_:${term.value}`);\n case 'Literal': {\n const literalValue = term;\n return (`\"${escapeStringRDF(literalValue.value)}\"${literalValue.datatype &&\n literalValue.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string' &&\n literalValue.datatype.value !== 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' ?\n `^^<${literalValue.datatype.value}>` :\n ''}${literalValue.language ? `@${literalValue.language}` : ''}`);\n }\n case 'Quad': return (`<<${termToString(term.subject)} ${termToString(term.predicate)} ${termToString(term.object)}${term.graph.termType === 'DefaultGraph' ? '' : ` ${termToString(term.graph)}`}>>`);\n case 'Variable': return (`?${term.value}`);\n case 'DefaultGraph': return term.value;\n }\n}\nexports.termToString = termToString;\n/**\n * Get the string value of a literal.\n * @param {string} literalValue An RDF literal enclosed by '\"'.\n * @return {string} The literal value inside the '\"'.\n */\nfunction getLiteralValue(literalValue) {\n const match = /^\"([^]*)\"((\\^\\^.*)|(@.*))?$/u.exec(literalValue);\n if (!match) {\n throw new Error(`${literalValue} is not a literal`);\n }\n return match[1].replace(/\\\\\"/ug, '\"');\n}\nexports.getLiteralValue = getLiteralValue;\n/**\n * Get the datatype of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The datatype of the literal.\n */\nfunction getLiteralType(literalValue) {\n const match = /^\"[^]*\"(?:\\^\\^<([^\"]+)>|(@)[^@\"]+)?$/u.exec(literalValue);\n if (!match) {\n throw new Error(`${literalValue} is not a literal`);\n }\n return match[1] || (match[2] ?\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' :\n 'http://www.w3.org/2001/XMLSchema#string');\n}\nexports.getLiteralType = getLiteralType;\n/**\n * Get the language of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The language of the literal.\n */\nfunction getLiteralLanguage(literalValue) {\n const match = /^\"[^]*\"(?:@([^@\"]+)|\\^\\^[^\"]+)?$/u.exec(literalValue);\n if (!match) {\n throw new Error(`${literalValue} is not a literal`);\n }\n return match[1] ? match[1].toLowerCase() : '';\n}\nexports.getLiteralLanguage = getLiteralLanguage;\n/**\n * Transform a string-based RDF term to an RDFJS term.\n * @param {string} value A string-based RDF-term.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {RDF.Term} An RDF-JS term.\n */\nfunction stringToTerm(value, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n if (!value || (value.length === 0)) {\n return dataFactory.defaultGraph();\n }\n switch (value[0]) {\n case '_': return dataFactory.blankNode(value.slice(2));\n case '?':\n if (!dataFactory.variable) {\n throw new Error(`Missing 'variable()' method on the given DataFactory`);\n }\n return dataFactory.variable(value.slice(1));\n case '\"': {\n const language = getLiteralLanguage(value);\n const type = dataFactory.namedNode(getLiteralType(value));\n return dataFactory.literal(getLiteralValue(value), language || type);\n }\n case '<':\n default:\n if (value.startsWith('<<') && value.endsWith('>>')) {\n // Iterate character-by-character to detect spaces that are *not* wrapped in <<>>\n const terms = value.slice(2, -2);\n const stringTerms = [];\n let ignoreTags = 0;\n let lastIndex = 0;\n for (let i = 0; i < terms.length; i++) {\n const char = terms[i];\n if (char === '<') {\n ignoreTags++;\n }\n if (char === '>') {\n if (ignoreTags === 0) {\n throw new Error(`Found closing tag without opening tag in ${value}`);\n }\n else {\n ignoreTags--;\n }\n }\n if (char === ' ' && ignoreTags === 0) {\n stringTerms.push(terms.slice(lastIndex, i));\n lastIndex = i + 1;\n }\n }\n if (ignoreTags !== 0) {\n throw new Error(`Found opening tag without closing tag in ${value}`);\n }\n stringTerms.push(terms.slice(lastIndex, terms.length));\n // We require 3 or 4 components\n if (stringTerms.length !== 3 && stringTerms.length !== 4) {\n throw new Error(`Nested quad syntax error ${value}`);\n }\n return dataFactory.quad(stringToTerm(stringTerms[0]), stringToTerm(stringTerms[1]), stringToTerm(stringTerms[2]), stringTerms[3] ? stringToTerm(stringTerms[3]) : undefined);\n }\n if (!value.startsWith('<') || !value.endsWith('>')) {\n throw new Error(`Detected invalid iri for named node (must be wrapped in <>): ${value}`);\n }\n return dataFactory.namedNode(value.slice(1, -1));\n }\n}\nexports.stringToTerm = stringToTerm;\n/**\n * Convert an RDFJS quad to a string-based quad representation.\n * @param {Quad} q An RDFJS quad.\n * @return {IStringQuad} A hash with string-based quad terms.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction quadToStringQuad(quad) {\n return {\n subject: termToString(quad.subject),\n predicate: termToString(quad.predicate),\n object: termToString(quad.object),\n graph: termToString(quad.graph),\n };\n}\nexports.quadToStringQuad = quadToStringQuad;\n/**\n * Convert a string-based quad representation to an RDFJS quad.\n * @param {IStringQuad} stringQuad A hash with string-based quad terms.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {Q} An RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction stringQuadToQuad(stringQuad, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n return dataFactory.quad(stringToTerm(stringQuad.subject, dataFactory), stringToTerm(stringQuad.predicate, dataFactory), stringToTerm(stringQuad.object, dataFactory), stringToTerm(stringQuad.graph, dataFactory));\n}\nexports.stringQuadToQuad = stringQuadToQuad;\nfunction escapeIRI(iriValue) {\n return iriValue.replace(escapePattern, replaceEscapedCharacter);\n}\nfunction escapeStringRDF(stringValue) {\n if (escapePattern.test(stringValue)) {\n stringValue = stringValue.replace(escapePattern, replaceEscapedCharacter);\n }\n return stringValue;\n}\n// Characters in literals and IRIs that require escaping\n// Also containing potential surrogate pairs\n/* eslint-disable require-unicode-regexp */ /* eslint-disable unicorn/better-regex */\nconst escapePattern = /[\"\\\\\\t\\n\\r\\b\\f\\u0000-\\u0019]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n/* eslint-enable require-unicode-regexp */ /* eslint-enable unicorn/better-regex */\nconst escapes = new Map([\n ['\\\\', '\\\\\\\\'],\n ['\"', '\\\\\"'],\n ['\\t', '\\\\t'],\n ['\\n', '\\\\n'],\n ['\\r', '\\\\r'],\n ['\\b', '\\\\b'],\n ['\\f', '\\\\f'],\n]);\nfunction replaceEscapedCharacter(character) {\n // Try simplest case first, get replacement for character\n const result = escapes.get(character);\n if (!result) {\n if (character.length === 1) {\n // Single unicode charachters, i.e. not a surrogate pair\n const code = character.charCodeAt(0).toString(16);\n return `${'\\\\u0000'.slice(0, -code.length)}${code}`;\n }\n // Surrogate pairs\n const code = ((character.charCodeAt(0) - 55296) * 1024 + character.charCodeAt(1) + 9216).toString(16);\n return `${'\\\\U00000000'.slice(0, -code.length)}${code}`;\n }\n return result;\n}\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.termToString = exports.stringToTerm = exports.stringQuadToQuad = exports.quadToStringQuad = exports.getLiteralValue = exports.getLiteralType = exports.getLiteralLanguage = void 0;\nconst TermUtil_1 = require(\"./lib/TermUtil\");\nObject.defineProperty(exports, \"getLiteralLanguage\", { enumerable: true, get: function () { return TermUtil_1.getLiteralLanguage; } });\nObject.defineProperty(exports, \"getLiteralType\", { enumerable: true, get: function () { return TermUtil_1.getLiteralType; } });\nObject.defineProperty(exports, \"getLiteralValue\", { enumerable: true, get: function () { return TermUtil_1.getLiteralValue; } });\nObject.defineProperty(exports, \"quadToStringQuad\", { enumerable: true, get: function () { return TermUtil_1.quadToStringQuad; } });\nObject.defineProperty(exports, \"stringQuadToQuad\", { enumerable: true, get: function () { return TermUtil_1.stringQuadToQuad; } });\nObject.defineProperty(exports, \"stringToTerm\", { enumerable: true, get: function () { return TermUtil_1.stringToTerm; } });\nObject.defineProperty(exports, \"termToString\", { enumerable: true, get: function () { return TermUtil_1.termToString; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringQuadToQuad = exports.quadToStringQuad = exports.stringToTerm = exports.getLiteralLanguage = exports.getLiteralType = exports.getLiteralValue = exports.termToString = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst FACTORY = new rdf_data_factory_1.DataFactory();\n/**\n * Utility methods for converting between string-based RDF representations and RDFJS objects.\n *\n * RDF Terms are represented as follows:\n * * Blank nodes: '_:myBlankNode'\n * * Variables: '?myVariable'\n * * Literals: '\"myString\"', '\"myLanguageString\"@en-us', '\"3\"^^xsd:number'\n * * URIs: 'http://example.org'\n *\n * Quads/triples are represented as hashes with 'subject', 'predicate', 'object' and 'graph' (optional)\n * as keys, and string-based RDF terms as values.\n */\n/**\n * Convert an RDFJS term to a string-based representation.\n * @param {RDF.Term} term An RDFJS term.\n * @return {string} A string-based term representation.\n */\nfunction termToString(term) {\n // TODO: remove nasty any casts when this TS bug has been fixed: https://github.com/microsoft/TypeScript/issues/26933\n if (!term) {\n return undefined;\n }\n switch (term.termType) {\n case 'NamedNode': return term.value;\n case 'BlankNode': return ('_:' + term.value);\n case 'Literal':\n const literalValue = term;\n return ('\"' + literalValue.value + '\"' +\n (literalValue.datatype &&\n literalValue.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string' &&\n literalValue.datatype.value !== 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' ?\n '^^' + literalValue.datatype.value : '') +\n (literalValue.language ? '@' + literalValue.language : ''));\n case 'Quad': return `<<${termToString(term.subject)} ${termToString(term.predicate)} ${termToString(term.object)}${term.graph.termType === 'DefaultGraph' ? '' : ' ' + termToString(term.graph)}>>`;\n case 'Variable': return ('?' + term.value);\n case 'DefaultGraph': return term.value;\n }\n}\nexports.termToString = termToString;\n/**\n * Get the string value of a literal.\n * @param {string} literalValue An RDF literal enclosed by '\"'.\n * @return {string} The literal value inside the '\"'.\n */\nfunction getLiteralValue(literalValue) {\n const match = /^\"([^]*)\"/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1];\n}\nexports.getLiteralValue = getLiteralValue;\n/**\n * Get the datatype of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The datatype of the literal.\n */\nfunction getLiteralType(literalValue) {\n const match = /^\"[^]*\"(?:\\^\\^([^\"]+)|(@)[^@\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] || (match[2]\n ? 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' : 'http://www.w3.org/2001/XMLSchema#string');\n}\nexports.getLiteralType = getLiteralType;\n/**\n * Get the language of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The language of the literal.\n */\nfunction getLiteralLanguage(literalValue) {\n const match = /^\"[^]*\"(?:@([^@\"]+)|\\^\\^[^\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] ? match[1].toLowerCase() : '';\n}\nexports.getLiteralLanguage = getLiteralLanguage;\n/**\n * Transform a string-based RDF term to an RDFJS term.\n * @param {string} value A string-based RDF-term.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {RDF.Term} An RDF-JS term.\n */\nfunction stringToTerm(value, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n if (!value || !value.length) {\n return dataFactory.defaultGraph();\n }\n switch (value[0]) {\n case '_': return dataFactory.blankNode(value.substr(2));\n case '?':\n if (!dataFactory.variable) {\n throw new Error(`Missing 'variable()' method on the given DataFactory`);\n }\n return dataFactory.variable(value.substr(1));\n case '\"':\n const language = getLiteralLanguage(value);\n const type = dataFactory.namedNode(getLiteralType(value));\n return dataFactory.literal(getLiteralValue(value), language || type);\n case '<':\n default:\n if (value[0] === '<' && value.length > 4 && value[1] === '<' && value[value.length - 1] === '>' && value[value.length - 2] === '>') {\n // Iterate character-by-character to detect spaces that are *not* wrapped in <<>>\n const terms = value.slice(2, -2).trim();\n let stringTerms = [];\n let ignoreTags = 0;\n let lastIndex = 0;\n let inQuote = false;\n for (let i = 0; i < terms.length; i++) {\n const char = terms[i];\n if (char === '<')\n ignoreTags++;\n if (char === '>') {\n if (ignoreTags === 0) {\n throw new Error('Found closing tag without opening tag in ' + value);\n }\n else {\n ignoreTags--;\n }\n }\n if (char === '\"') {\n let escaped = false;\n let j = i;\n while (j-- > 0 && terms[j] === '\\\\') {\n escaped = !escaped;\n }\n if (!escaped) {\n // We have reached an unescaped quote\n inQuote = !inQuote;\n }\n }\n if (char === ' ' && !inQuote && ignoreTags === 0) {\n stringTerms.push(terms.slice(lastIndex, i));\n while (terms[i + 1] === ' ') {\n i += 1;\n }\n lastIndex = i + 1;\n }\n }\n if (ignoreTags !== 0) {\n throw new Error('Found opening tag without closing tag in ' + value);\n }\n stringTerms.push(terms.slice(lastIndex, terms.length));\n // We require 3 or 4 components\n if (stringTerms.length !== 3 && stringTerms.length !== 4) {\n throw new Error('Nested quad syntax error ' + value);\n }\n stringTerms = stringTerms.map(term => term.startsWith('<') && !term.includes(' ') ? term.slice(1, -1) : term);\n return dataFactory.quad(stringToTerm(stringTerms[0]), stringToTerm(stringTerms[1]), stringToTerm(stringTerms[2]), stringTerms[3] ? stringToTerm(stringTerms[3]) : undefined);\n }\n return dataFactory.namedNode(value);\n }\n}\nexports.stringToTerm = stringToTerm;\n/**\n * Convert an RDFJS quad to a string-based quad representation.\n * @param {Quad} q An RDFJS quad.\n * @return {IStringQuad} A hash with string-based quad terms.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction quadToStringQuad(q) {\n // tslint:disable:object-literal-sort-keys\n return {\n subject: termToString(q.subject),\n predicate: termToString(q.predicate),\n object: termToString(q.object),\n graph: termToString(q.graph),\n };\n // tslint:enable:object-literal-sort-keys\n}\nexports.quadToStringQuad = quadToStringQuad;\n/**\n * Convert a string-based quad representation to an RDFJS quad.\n * @param {IStringQuad} stringQuad A hash with string-based quad terms.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {Q} An RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction stringQuadToQuad(stringQuad, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n return dataFactory.quad(stringToTerm(stringQuad.subject, dataFactory), stringToTerm(stringQuad.predicate, dataFactory), stringToTerm(stringQuad.object, dataFactory), stringToTerm(stringQuad.graph, dataFactory));\n}\nexports.stringQuadToQuad = stringQuadToQuad;\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/QuadTermUtil\"), exports);\n__exportStar(require(\"./lib/TermUtil\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchPatternMappings = exports.matchPatternComplete = exports.matchPattern = exports.matchTerm = exports.getValueNestedPath = exports.someTermsNested = exports.someTerms = exports.everyTermsNested = exports.everyTerms = exports.reduceTermsNested = exports.reduceTerms = exports.mapTermsNested = exports.mapTerms = exports.filterQuadTermNamesNested = exports.filterQuadTermNames = exports.filterTermsNested = exports.filterTerms = exports.forEachTermsNested = exports.forEachTerms = exports.collectNamedTerms = exports.getNamedTerms = exports.getTermsNested = exports.getTerms = exports.TRIPLE_TERM_NAMES = exports.QUAD_TERM_NAMES = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * All available quad term names.\n * @type {[string , string , string , string]}\n */\nexports.QUAD_TERM_NAMES = ['subject', 'predicate', 'object', 'graph'];\n/**\n * All available triple term names.\n * @type {[string , string , string]}\n */\nexports.TRIPLE_TERM_NAMES = ['subject', 'predicate', 'object'];\n/**\n * Get all terms in the given quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the quad.\n */\nfunction getTerms(quad, ignoreDefaultGraph) {\n if (ignoreDefaultGraph && quad.graph.termType === 'DefaultGraph') {\n return [quad.subject, quad.predicate, quad.object];\n }\n return [quad.subject, quad.predicate, quad.object, quad.graph];\n}\nexports.getTerms = getTerms;\n/**\n * Get all terms in the given quad, including nested quads.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the nested quad, excluding quad terms.\n */\nfunction getTermsNested(quad, ignoreDefaultGraph) {\n const terms = [];\n for (const term of getTerms(quad, ignoreDefaultGraph)) {\n if (term.termType === 'Quad') {\n getTermsNested(term, ignoreDefaultGraph).forEach(subTerm => terms.push(subTerm));\n }\n else {\n terms.push(term);\n }\n }\n return terms;\n}\nexports.getTermsNested = getTermsNested;\n/**\n * Convert the given quad to an array of named terms.\n * This is the reverse operation of {@link collectNamedTerms}.\n * @param {BaseQuad} quad An RDFJS quad.\n * @return {INamedTerm[]} An array of named terms.\n */\nfunction getNamedTerms(quad) {\n return [\n { key: 'subject', value: quad.subject },\n { key: 'predicate', value: quad.predicate },\n { key: 'object', value: quad.object },\n { key: 'graph', value: quad.graph },\n ];\n}\nexports.getNamedTerms = getNamedTerms;\n/**\n * Convert an array of named terms to an RDFJS quad.\n * This is the reverse operation of {@link getNamedTerms}.\n * @param {INamedTerm[]} namedTerms An array of named terms.\n * @param {(termName: QuadTermName) => Term} defaultCb An optional callback for when\n * certain terms are not available in the array.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Q} The resulting RDFJS quad.\n * @template Q The type of quad to output, defaults to RDF.Quad.\n */\nfunction collectNamedTerms(namedTerms, defaultCb, dataFactory) {\n const elements = {};\n namedTerms.forEach((namedTerm) => elements[namedTerm.key] = namedTerm.value);\n if (defaultCb) {\n elements.subject = elements.subject || defaultCb('subject');\n elements.predicate = elements.predicate || defaultCb('predicate');\n elements.object = elements.object || defaultCb('object');\n elements.graph = elements.graph || defaultCb('graph');\n }\n return (dataFactory || DF).quad(elements.subject, elements.predicate, elements.object, elements.graph);\n}\nexports.collectNamedTerms = collectNamedTerms;\n/**\n * Iterates over each term.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} cb A callback function.\n */\nfunction forEachTerms(quad, cb) {\n cb(quad.subject, 'subject');\n cb(quad.predicate, 'predicate');\n cb(quad.object, 'object');\n cb(quad.graph, 'graph');\n}\nexports.forEachTerms = forEachTerms;\n/**\n * Iterates over each leaf term, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} cb A callback function.\n * @param QuadTermName[] keys The current key path.\n */\nfunction forEachTermsNested(quad, cb, keys = []) {\n if (quad.subject.termType === 'Quad') {\n forEachTermsNested(quad.subject, cb, [...keys, 'subject']);\n }\n else {\n cb(quad.subject, [...keys, 'subject']);\n }\n if (quad.predicate.termType === 'Quad') {\n forEachTermsNested(quad.predicate, cb, [...keys, 'predicate']);\n }\n else {\n cb(quad.predicate, [...keys, 'predicate']);\n }\n if (quad.object.termType === 'Quad') {\n forEachTermsNested(quad.object, cb, [...keys, 'object']);\n }\n else {\n cb(quad.object, [...keys, 'object']);\n }\n if (quad.graph.termType === 'Quad') {\n forEachTermsNested(quad.graph, cb, [...keys, 'graph']);\n }\n else {\n cb(quad.graph, [...keys, 'graph']);\n }\n}\nexports.forEachTermsNested = forEachTermsNested;\n/**\n * Get all terms in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName) => boolean} filter A filter callback.\n * @return {Term[]} The list of matching terms.\n */\nfunction filterTerms(quad, filter) {\n const terms = [];\n if (filter(quad.subject, 'subject')) {\n terms.push(quad.subject);\n }\n if (filter(quad.predicate, 'predicate')) {\n terms.push(quad.predicate);\n }\n if (filter(quad.object, 'object')) {\n terms.push(quad.object);\n }\n if (filter(quad.graph, 'graph')) {\n terms.push(quad.graph);\n }\n return terms;\n}\nexports.filterTerms = filterTerms;\n/**\n * Get all terms in the given quad that return true on the given filter function, while recursing into quoted triples.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName) => boolean} filter A filter callback.\n * @param QuadTermName[] keys The current key path.\n * @return {Term[]} The list of matching terms.\n */\nfunction filterTermsNested(quad, filter, keys = []) {\n let terms = [];\n if (quad.subject.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.subject, filter, [...keys, 'subject'])];\n }\n else {\n if (filter(quad.subject, [...keys, 'subject'])) {\n terms.push(quad.subject);\n }\n }\n if (quad.predicate.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.predicate, filter, [...keys, 'predicate'])];\n }\n else {\n if (filter(quad.predicate, [...keys, 'predicate'])) {\n terms.push(quad.predicate);\n }\n }\n if (quad.object.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.object, filter, [...keys, 'object'])];\n }\n else {\n if (filter(quad.object, [...keys, 'object'])) {\n terms.push(quad.object);\n }\n }\n if (quad.graph.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.graph, filter, [...keys, 'graph'])];\n }\n else {\n if (filter(quad.graph, [...keys, 'graph'])) {\n terms.push(quad.graph);\n }\n }\n return terms;\n}\nexports.filterTermsNested = filterTermsNested;\n/**\n * Get all quad term names in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName, all: INamedTerm[]) => boolean} filter A filter callback.\n * @return {QuadTermName[]} The list of matching quad term names.\n */\nfunction filterQuadTermNames(quad, filter) {\n const names = [];\n if (filter(quad.subject, 'subject')) {\n names.push('subject');\n }\n if (filter(quad.predicate, 'predicate')) {\n names.push('predicate');\n }\n if (filter(quad.object, 'object')) {\n names.push('object');\n }\n if (filter(quad.graph, 'graph')) {\n names.push('graph');\n }\n return names;\n}\nexports.filterQuadTermNames = filterQuadTermNames;\n/**\n * Get all quad term names in the given quad that return true on the given filter function, while recursing into quoted triples.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName, all: INamedTerm[]) => boolean} filter A filter callback.\n * @param QuadTermName[] keys The current key path.\n * @return {QuadTermName[]} The list of matching quad term names.\n */\nfunction filterQuadTermNamesNested(quad, filter, keys = []) {\n let names = [];\n const keysS = [...keys, 'subject'];\n if (quad.subject.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.subject, filter, keysS)];\n }\n else {\n if (filter(quad.subject, keysS)) {\n names.push(keysS);\n }\n }\n const keysP = [...keys, 'predicate'];\n if (quad.predicate.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.predicate, filter, keysP)];\n }\n else {\n if (filter(quad.predicate, keysP)) {\n names.push(keysP);\n }\n }\n const keysO = [...keys, 'object'];\n if (quad.object.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.object, filter, keysO)];\n }\n else {\n if (filter(quad.object, keysO)) {\n names.push(keysO);\n }\n }\n const keysG = [...keys, 'graph'];\n if (quad.graph.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.graph, filter, keysG)];\n }\n else {\n if (filter(quad.graph, keysG)) {\n names.push(keysG);\n }\n }\n return names;\n}\nexports.filterQuadTermNamesNested = filterQuadTermNamesNested;\n/**\n * Map all terms of a quad.\n * @param {Quad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName) => Term} mapper A mapper function.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Quad} A new RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction mapTerms(quad, mapper, dataFactory) {\n return (dataFactory || DF).quad(mapper(quad.subject, 'subject'), mapper(quad.predicate, 'predicate'), mapper(quad.object, 'object'), mapper(quad.graph, 'graph'));\n}\nexports.mapTerms = mapTerms;\n/**\n * Map all terms of a quad, while recursing into quoted triples.\n * @param {Quad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName) => Term} mapper A mapper function.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @param QuadTermName[] keys The current key path.\n * @return {Quad} A new RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction mapTermsNested(quad, mapper, dataFactory, keys = []) {\n return (dataFactory || DF).quad(quad.subject.termType === 'Quad' ?\n mapTermsNested(quad.subject, mapper, dataFactory, [...keys, 'subject']) :\n mapper(quad.subject, [...keys, 'subject']), quad.predicate.termType === 'Quad' ?\n mapTermsNested(quad.predicate, mapper, dataFactory, [...keys, 'predicate']) :\n mapper(quad.predicate, [...keys, 'predicate']), quad.object.termType === 'Quad' ?\n mapTermsNested(quad.object, mapper, dataFactory, [...keys, 'object']) :\n mapper(quad.object, [...keys, 'object']), quad.graph.termType === 'Quad' ?\n mapTermsNested(quad.graph, mapper, dataFactory, [...keys, 'graph']) :\n mapper(quad.graph, [...keys, 'graph']));\n}\nexports.mapTermsNested = mapTermsNested;\n/**\n * Reduce all terms of a quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(previousValue: U, currentValue: Term, key: QuadTermName) => U} reducer A reduce function.\n * @param {U} initialValue The initial value.\n * @return {U} The final value.\n */\nfunction reduceTerms(quad, reducer, initialValue) {\n let value = initialValue;\n value = reducer(value, quad.subject, 'subject');\n value = reducer(value, quad.predicate, 'predicate');\n value = reducer(value, quad.object, 'object');\n return reducer(value, quad.graph, 'graph');\n}\nexports.reduceTerms = reduceTerms;\n/**\n * Reduce all terms of a quad, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(previousValue: U, currentValue: Term, key: QuadTermName) => U} reducer A reduce function.\n * @param {U} initialValue The initial value.\n * @param QuadTermName[] keys The current key path.\n * @return {U} The final value.\n */\nfunction reduceTermsNested(quad, reducer, initialValue, keys = []) {\n let value = initialValue;\n if (quad.subject.termType === 'Quad') {\n value = reduceTermsNested(quad.subject, reducer, value, [...keys, 'subject']);\n }\n else {\n value = reducer(value, quad.subject, [...keys, 'subject']);\n }\n if (quad.predicate.termType === 'Quad') {\n value = reduceTermsNested(quad.predicate, reducer, value, [...keys, 'predicate']);\n }\n else {\n value = reducer(value, quad.predicate, [...keys, 'predicate']);\n }\n if (quad.object.termType === 'Quad') {\n value = reduceTermsNested(quad.object, reducer, value, [...keys, 'object']);\n }\n else {\n value = reducer(value, quad.object, [...keys, 'object']);\n }\n if (quad.graph.termType === 'Quad') {\n value = reduceTermsNested(quad.graph, reducer, value, [...keys, 'graph']);\n }\n else {\n value = reducer(value, quad.graph, [...keys, 'graph']);\n }\n return value;\n}\nexports.reduceTermsNested = reduceTermsNested;\n/**\n * Determines whether all terms satisfy the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If all terms satisfy the specified test.\n */\nfunction everyTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n && checker(quad.predicate, 'predicate')\n && checker(quad.object, 'object')\n && checker(quad.graph, 'graph');\n}\nexports.everyTerms = everyTerms;\n/**\n * Determines whether all terms satisfy the specified test, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @param QuadTermName[] keys The current key path.\n * @return {boolean} If all terms satisfy the specified test.\n */\nfunction everyTermsNested(quad, checker, keys = []) {\n return (quad.subject.termType === 'Quad' ?\n everyTermsNested(quad.subject, checker, [...keys, 'subject']) :\n checker(quad.subject, [...keys, 'subject']))\n && (quad.predicate.termType === 'Quad' ?\n everyTermsNested(quad.predicate, checker, [...keys, 'predicate']) :\n checker(quad.predicate, [...keys, 'predicate']))\n && (quad.object.termType === 'Quad' ?\n everyTermsNested(quad.object, checker, [...keys, 'object']) :\n checker(quad.object, [...keys, 'object']))\n && (quad.graph.termType === 'Quad' ?\n everyTermsNested(quad.graph, checker, [...keys, 'graph']) :\n checker(quad.graph, [...keys, 'graph']));\n}\nexports.everyTermsNested = everyTermsNested;\n/**\n * Determines whether at least one term satisfies the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If at least one term satisfies the specified test.\n */\nfunction someTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n || checker(quad.predicate, 'predicate')\n || checker(quad.object, 'object')\n || checker(quad.graph, 'graph');\n}\nexports.someTerms = someTerms;\n/**\n * Determines whether at least one term satisfies the specified test, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @param QuadTermName[] keys The current key path.\n * @return {boolean} If at least one term satisfies the specified test.\n */\nfunction someTermsNested(quad, checker, keys = []) {\n return (quad.subject.termType === 'Quad' ?\n someTermsNested(quad.subject, checker, [...keys, 'subject']) :\n checker(quad.subject, [...keys, 'subject']))\n || (quad.predicate.termType === 'Quad' ?\n someTermsNested(quad.predicate, checker, [...keys, 'predicate']) :\n checker(quad.predicate, [...keys, 'predicate']))\n || (quad.object.termType === 'Quad' ?\n someTermsNested(quad.object, checker, [...keys, 'object']) :\n checker(quad.object, [...keys, 'object']))\n || (quad.graph.termType === 'Quad' ?\n someTermsNested(quad.graph, checker, [...keys, 'graph']) :\n checker(quad.graph, [...keys, 'graph']));\n}\nexports.someTermsNested = someTermsNested;\n/**\n * Get the nested value inside a quoted triple by the given path of quad keys.\n * @param term A term, that can be a quoted triple.\n * @param keys A path of quad term names.\n */\nfunction getValueNestedPath(term, keys) {\n if (keys.length === 0) {\n return term;\n }\n if (term.termType === 'Quad') {\n return getValueNestedPath(term[keys[0]], keys.slice(1));\n }\n throw new Error(`Tried to get ${keys[0]} from term of type ${term.termType}`);\n}\nexports.getValueNestedPath = getValueNestedPath;\n/**\n * Check if the given terms match.\n *\n * At least one of the following must be true:\n * * Term B is undefined.\n * * Term B is a variable.\n * * Term A and B are quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`termB.equals(termA)` return true)\n *\n * @param termA A term.\n * @param termB An optional term.\n */\nfunction matchTerm(termA, termB) {\n return !termB\n || termB.termType === 'Variable'\n || (termB.termType === 'Quad' && termA.termType === 'Quad' && matchPatternComplete(termA, termB))\n || termB.equals(termA);\n}\nexports.matchTerm = matchTerm;\n/**\n * Check if the given quad matches with the given quad terms.\n *\n * Each term must match at least one of the following:\n * * Term is undefined.\n * * Term is a variable.\n * * Quad term and term are both quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`quadTerm.equals(term)` return true)\n *\n * @param {BaseQuad} quad A quad to match with (can not contain variables).\n * @param {Term} subject An optional subject.\n * @param {Term} predicate An optional predicate.\n * @param {Term} object An optional object.\n * @param {Term} graph An optional graph.\n * @return {boolean} If the quad matches with the quad terms.\n */\nfunction matchPattern(quad, subject, predicate, object, graph) {\n return matchTerm(quad.subject, subject)\n && matchTerm(quad.predicate, predicate)\n && matchTerm(quad.object, object)\n && matchTerm(quad.graph, graph);\n}\nexports.matchPattern = matchPattern;\n/**\n * Check if the first quad matches with all terms from the second quad.\n *\n * Each term must match at least one of the following:\n * * Quad2 term is a variable.\n * * Quad1 term and Quad2 term are equal (`term1.equals(term2)` return true)\n *\n * @param {BaseQuad} quad A quad (can not contain variables).\n * @param {BaseQuad} pattern A quad pattern (can contain variables).\n * @return {boolean} If the quad terms match.\n */\nfunction matchPatternComplete(quad, pattern) {\n return matchPattern(quad, pattern.subject, pattern.predicate, pattern.object, pattern.graph);\n}\nexports.matchPatternComplete = matchPatternComplete;\nfunction matchPatternMappings(quad, pattern, opt = {}) {\n const map = {};\n function match(_pattern, _quad) {\n return everyTerms(_pattern, (t1, key) => {\n var _a, _b;\n const t2 = _quad[key];\n switch (t1.termType) {\n case 'Variable':\n return (opt.skipVarMapping && t2.termType === 'Variable')\n || ((_b = (_a = map[t1.value]) === null || _a === void 0 ? void 0 : _a.equals(t2)) !== null && _b !== void 0 ? _b : (map[t1.value] = t2, true));\n case 'Quad':\n return t2.termType === 'Quad' && match(t1, t2);\n default:\n return t1.equals(t2);\n }\n });\n }\n return match(pattern, quad) && (opt.returnMappings ? map : true);\n}\nexports.matchPatternMappings = matchPatternMappings;\n//# sourceMappingURL=QuadTermUtil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getQuads = exports.getDefaultGraphs = exports.getVariables = exports.getLiterals = exports.getBlankNodes = exports.getNamedNodes = exports.getTermsOfType = exports.uniqTerms = exports.TERM_TYPES = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * All known term types.\n * @see RDF.Term\n * @type {[string , string , string , string , string, string]}\n */\nexports.TERM_TYPES = ['NamedNode', 'BlankNode', 'Literal', 'Variable', 'DefaultGraph', 'Quad'];\n/*\n * Utility methods for handling RDFJS terms.\n */\n/**\n * Create an array of unique terms from the given array.\n * @param {T[]} terms An array of RDFJS terms.\n * @return {T[]} A new array of unique RDFJS terms.\n */\nfunction uniqTerms(terms) {\n const hash = {};\n return terms.filter(term => {\n const termString = (0, rdf_string_1.termToString)(term);\n return !(termString in hash) && (hash[termString] = true);\n });\n}\nexports.uniqTerms = uniqTerms;\n/**\n * Find all terms of the given type in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @param {\"NamedNode\" | \"BlankNode\" | \"Literal\" | \"Variable\" | \"DefaultGraph\" | \"Quad\"} termType A term type.\n * @return {Term[]} A new array with elements from the given array only containing elements of the given type.\n */\nfunction getTermsOfType(terms, termType) {\n return terms.filter((term) => term.termType === termType);\n}\nexports.getTermsOfType = getTermsOfType;\n/**\n * Find all named nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {NamedNode[]} A new array with elements from the given array only containing named nodes.\n */\nfunction getNamedNodes(terms) {\n return getTermsOfType(terms, 'NamedNode');\n}\nexports.getNamedNodes = getNamedNodes;\n/**\n * Find all blank nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BlankNode[]} A new array with elements from the given array only containing blank nodes.\n */\nfunction getBlankNodes(terms) {\n return getTermsOfType(terms, 'BlankNode');\n}\nexports.getBlankNodes = getBlankNodes;\n/**\n * Find all literals in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Literal[]} A new array with elements from the given array only containing literals.\n */\nfunction getLiterals(terms) {\n return getTermsOfType(terms, 'Literal');\n}\nexports.getLiterals = getLiterals;\n/**\n * Find all variables in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Variable[]} A new array with elements from the given array only containing variables.\n */\nfunction getVariables(terms) {\n return getTermsOfType(terms, 'Variable');\n}\nexports.getVariables = getVariables;\n/**\n * Find all default graphs in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {DefaultGraph[]} A new array with elements from the given array only containing default graphs.\n */\nfunction getDefaultGraphs(terms) {\n return getTermsOfType(terms, 'DefaultGraph');\n}\nexports.getDefaultGraphs = getDefaultGraphs;\n/**\n * Find all quads in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BaseQuad[]} A new array with elements from the given array only containing quads.\n */\nfunction getQuads(terms) {\n return getTermsOfType(terms, 'Quad');\n}\nexports.getQuads = getQuads;\n//# sourceMappingURL=TermUtil.js.map","'use strict'\n\nconst { SymbolDispose } = require('../../ours/primordials')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { isNodeStream, isWebStream, kControllerErrorFunction } = require('./utils')\nconst eos = require('./end-of-stream')\nconst { ERR_INVALID_ARG_TYPE } = codes\nlet addAbortListener\n\n// This method is inlined here for readable-stream\n// It also does not allow for signal to not exist on the stream\n// https://github.com/nodejs/node/pull/36061#discussion_r533718029\nconst validateAbortSignal = (signal, name) => {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n}\nmodule.exports.addAbortSignal = function addAbortSignal(signal, stream) {\n validateAbortSignal(signal, 'signal')\n if (!isNodeStream(stream) && !isWebStream(stream)) {\n throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n }\n return module.exports.addAbortSignalNoValidate(signal, stream)\n}\nmodule.exports.addAbortSignalNoValidate = function (signal, stream) {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n return stream\n }\n const onAbort = isNodeStream(stream)\n ? () => {\n stream.destroy(\n new AbortError(undefined, {\n cause: signal.reason\n })\n )\n }\n : () => {\n stream[kControllerErrorFunction](\n new AbortError(undefined, {\n cause: signal.reason\n })\n )\n }\n if (signal.aborted) {\n onAbort()\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(signal, onAbort)\n eos(stream, disposable[SymbolDispose])\n }\n return stream\n}\n","'use strict'\n\nconst { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { inspect } = require('../../ours/util')\nmodule.exports = class BufferList {\n constructor() {\n this.head = null\n this.tail = null\n this.length = 0\n }\n push(v) {\n const entry = {\n data: v,\n next: null\n }\n if (this.length > 0) this.tail.next = entry\n else this.head = entry\n this.tail = entry\n ++this.length\n }\n unshift(v) {\n const entry = {\n data: v,\n next: this.head\n }\n if (this.length === 0) this.tail = entry\n this.head = entry\n ++this.length\n }\n shift() {\n if (this.length === 0) return\n const ret = this.head.data\n if (this.length === 1) this.head = this.tail = null\n else this.head = this.head.next\n --this.length\n return ret\n }\n clear() {\n this.head = this.tail = null\n this.length = 0\n }\n join(s) {\n if (this.length === 0) return ''\n let p = this.head\n let ret = '' + p.data\n while ((p = p.next) !== null) ret += s + p.data\n return ret\n }\n concat(n) {\n if (this.length === 0) return Buffer.alloc(0)\n const ret = Buffer.allocUnsafe(n >>> 0)\n let p = this.head\n let i = 0\n while (p) {\n TypedArrayPrototypeSet(ret, p.data, i)\n i += p.data.length\n p = p.next\n }\n return ret\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n consume(n, hasStrings) {\n const data = this.head.data\n if (n < data.length) {\n // `slice` is the same for buffers and strings.\n const slice = data.slice(0, n)\n this.head.data = data.slice(n)\n return slice\n }\n if (n === data.length) {\n // First chunk is a perfect match.\n return this.shift()\n }\n // Result spans more than one buffer.\n return hasStrings ? this._getString(n) : this._getBuffer(n)\n }\n first() {\n return this.head.data\n }\n *[SymbolIterator]() {\n for (let p = this.head; p; p = p.next) {\n yield p.data\n }\n }\n\n // Consumes a specified amount of characters from the buffered data.\n _getString(n) {\n let ret = ''\n let p = this.head\n let c = 0\n do {\n const str = p.data\n if (n > str.length) {\n ret += str\n n -= str.length\n } else {\n if (n === str.length) {\n ret += str\n ++c\n if (p.next) this.head = p.next\n else this.head = this.tail = null\n } else {\n ret += StringPrototypeSlice(str, 0, n)\n this.head = p\n p.data = StringPrototypeSlice(str, n)\n }\n break\n }\n ++c\n } while ((p = p.next) !== null)\n this.length -= c\n return ret\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n _getBuffer(n) {\n const ret = Buffer.allocUnsafe(n)\n const retLen = n\n let p = this.head\n let c = 0\n do {\n const buf = p.data\n if (n > buf.length) {\n TypedArrayPrototypeSet(ret, buf, retLen - n)\n n -= buf.length\n } else {\n if (n === buf.length) {\n TypedArrayPrototypeSet(ret, buf, retLen - n)\n ++c\n if (p.next) this.head = p.next\n else this.head = this.tail = null\n } else {\n TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n)\n this.head = p\n p.data = buf.slice(n)\n }\n break\n }\n ++c\n } while ((p = p.next) !== null)\n this.length -= c\n return ret\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n [Symbol.for('nodejs.util.inspect.custom')](_, options) {\n return inspect(this, {\n ...options,\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n })\n }\n}\n","'use strict'\n\nconst { pipeline } = require('./pipeline')\nconst Duplex = require('./duplex')\nconst { destroyer } = require('./destroy')\nconst {\n isNodeStream,\n isReadable,\n isWritable,\n isWebStream,\n isTransformStream,\n isWritableStream,\n isReadableStream\n} = require('./utils')\nconst {\n AbortError,\n codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS }\n} = require('../../ours/errors')\nconst eos = require('./end-of-stream')\nmodule.exports = function compose(...streams) {\n if (streams.length === 0) {\n throw new ERR_MISSING_ARGS('streams')\n }\n if (streams.length === 1) {\n return Duplex.from(streams[0])\n }\n const orgStreams = [...streams]\n if (typeof streams[0] === 'function') {\n streams[0] = Duplex.from(streams[0])\n }\n if (typeof streams[streams.length - 1] === 'function') {\n const idx = streams.length - 1\n streams[idx] = Duplex.from(streams[idx])\n }\n for (let n = 0; n < streams.length; ++n) {\n if (!isNodeStream(streams[n]) && !isWebStream(streams[n])) {\n // TODO(ronag): Add checks for non streams.\n continue\n }\n if (\n n < streams.length - 1 &&\n !(isReadable(streams[n]) || isReadableStream(streams[n]) || isTransformStream(streams[n]))\n ) {\n throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable')\n }\n if (n > 0 && !(isWritable(streams[n]) || isWritableStream(streams[n]) || isTransformStream(streams[n]))) {\n throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable')\n }\n }\n let ondrain\n let onfinish\n let onreadable\n let onclose\n let d\n function onfinished(err) {\n const cb = onclose\n onclose = null\n if (cb) {\n cb(err)\n } else if (err) {\n d.destroy(err)\n } else if (!readable && !writable) {\n d.destroy()\n }\n }\n const head = streams[0]\n const tail = pipeline(streams, onfinished)\n const writable = !!(isWritable(head) || isWritableStream(head) || isTransformStream(head))\n const readable = !!(isReadable(tail) || isReadableStream(tail) || isTransformStream(tail))\n\n // TODO(ronag): Avoid double buffering.\n // Implement Writable/Readable/Duplex traits.\n // See, https://github.com/nodejs/node/pull/33515.\n d = new Duplex({\n // TODO (ronag): highWaterMark?\n writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode),\n readableObjectMode: !!(tail !== null && tail !== undefined && tail.readableObjectMode),\n writable,\n readable\n })\n if (writable) {\n if (isNodeStream(head)) {\n d._write = function (chunk, encoding, callback) {\n if (head.write(chunk, encoding)) {\n callback()\n } else {\n ondrain = callback\n }\n }\n d._final = function (callback) {\n head.end()\n onfinish = callback\n }\n head.on('drain', function () {\n if (ondrain) {\n const cb = ondrain\n ondrain = null\n cb()\n }\n })\n } else if (isWebStream(head)) {\n const writable = isTransformStream(head) ? head.writable : head\n const writer = writable.getWriter()\n d._write = async function (chunk, encoding, callback) {\n try {\n await writer.ready\n writer.write(chunk).catch(() => {})\n callback()\n } catch (err) {\n callback(err)\n }\n }\n d._final = async function (callback) {\n try {\n await writer.ready\n writer.close().catch(() => {})\n onfinish = callback\n } catch (err) {\n callback(err)\n }\n }\n }\n const toRead = isTransformStream(tail) ? tail.readable : tail\n eos(toRead, () => {\n if (onfinish) {\n const cb = onfinish\n onfinish = null\n cb()\n }\n })\n }\n if (readable) {\n if (isNodeStream(tail)) {\n tail.on('readable', function () {\n if (onreadable) {\n const cb = onreadable\n onreadable = null\n cb()\n }\n })\n tail.on('end', function () {\n d.push(null)\n })\n d._read = function () {\n while (true) {\n const buf = tail.read()\n if (buf === null) {\n onreadable = d._read\n return\n }\n if (!d.push(buf)) {\n return\n }\n }\n }\n } else if (isWebStream(tail)) {\n const readable = isTransformStream(tail) ? tail.readable : tail\n const reader = readable.getReader()\n d._read = async function () {\n while (true) {\n try {\n const { value, done } = await reader.read()\n if (!d.push(value)) {\n return\n }\n if (done) {\n d.push(null)\n return\n }\n } catch {\n return\n }\n }\n }\n }\n }\n d._destroy = function (err, callback) {\n if (!err && onclose !== null) {\n err = new AbortError()\n }\n onreadable = null\n ondrain = null\n onfinish = null\n if (onclose === null) {\n callback(err)\n } else {\n onclose = callback\n if (isNodeStream(tail)) {\n destroyer(tail, err)\n }\n }\n }\n return d\n}\n","'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n aggregateTwoErrors,\n codes: { ERR_MULTIPLE_CALLBACK },\n AbortError\n} = require('../../ours/errors')\nconst { Symbol } = require('../../ours/primordials')\nconst { kIsDestroyed, isDestroyed, isFinished, isServerRequest } = require('./utils')\nconst kDestroy = Symbol('kDestroy')\nconst kConstruct = Symbol('kConstruct')\nfunction checkError(err, w, r) {\n if (err) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n err.stack // eslint-disable-line no-unused-expressions\n\n if (w && !w.errored) {\n w.errored = err\n }\n if (r && !r.errored) {\n r.errored = err\n }\n }\n}\n\n// Backwards compat. cb() is undocumented and unused in core but\n// unfortunately might be used by modules.\nfunction destroy(err, cb) {\n const r = this._readableState\n const w = this._writableState\n // With duplex streams we use the writable side for state.\n const s = w || r\n if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n if (typeof cb === 'function') {\n cb()\n }\n return this\n }\n\n // We set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n checkError(err, w, r)\n if (w) {\n w.destroyed = true\n }\n if (r) {\n r.destroyed = true\n }\n\n // If still constructing then defer calling _destroy.\n if (!s.constructed) {\n this.once(kDestroy, function (er) {\n _destroy(this, aggregateTwoErrors(er, err), cb)\n })\n } else {\n _destroy(this, err, cb)\n }\n return this\n}\nfunction _destroy(self, err, cb) {\n let called = false\n function onDestroy(err) {\n if (called) {\n return\n }\n called = true\n const r = self._readableState\n const w = self._writableState\n checkError(err, w, r)\n if (w) {\n w.closed = true\n }\n if (r) {\n r.closed = true\n }\n if (typeof cb === 'function') {\n cb(err)\n }\n if (err) {\n process.nextTick(emitErrorCloseNT, self, err)\n } else {\n process.nextTick(emitCloseNT, self)\n }\n }\n try {\n self._destroy(err || null, onDestroy)\n } catch (err) {\n onDestroy(err)\n }\n}\nfunction emitErrorCloseNT(self, err) {\n emitErrorNT(self, err)\n emitCloseNT(self)\n}\nfunction emitCloseNT(self) {\n const r = self._readableState\n const w = self._writableState\n if (w) {\n w.closeEmitted = true\n }\n if (r) {\n r.closeEmitted = true\n }\n if ((w !== null && w !== undefined && w.emitClose) || (r !== null && r !== undefined && r.emitClose)) {\n self.emit('close')\n }\n}\nfunction emitErrorNT(self, err) {\n const r = self._readableState\n const w = self._writableState\n if ((w !== null && w !== undefined && w.errorEmitted) || (r !== null && r !== undefined && r.errorEmitted)) {\n return\n }\n if (w) {\n w.errorEmitted = true\n }\n if (r) {\n r.errorEmitted = true\n }\n self.emit('error', err)\n}\nfunction undestroy() {\n const r = this._readableState\n const w = this._writableState\n if (r) {\n r.constructed = true\n r.closed = false\n r.closeEmitted = false\n r.destroyed = false\n r.errored = null\n r.errorEmitted = false\n r.reading = false\n r.ended = r.readable === false\n r.endEmitted = r.readable === false\n }\n if (w) {\n w.constructed = true\n w.destroyed = false\n w.closed = false\n w.closeEmitted = false\n w.errored = null\n w.errorEmitted = false\n w.finalCalled = false\n w.prefinished = false\n w.ended = w.writable === false\n w.ending = w.writable === false\n w.finished = w.writable === false\n }\n}\nfunction errorOrDestroy(stream, err, sync) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n const r = stream._readableState\n const w = stream._writableState\n if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n return this\n }\n if ((r !== null && r !== undefined && r.autoDestroy) || (w !== null && w !== undefined && w.autoDestroy))\n stream.destroy(err)\n else if (err) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n err.stack // eslint-disable-line no-unused-expressions\n\n if (w && !w.errored) {\n w.errored = err\n }\n if (r && !r.errored) {\n r.errored = err\n }\n if (sync) {\n process.nextTick(emitErrorNT, stream, err)\n } else {\n emitErrorNT(stream, err)\n }\n }\n}\nfunction construct(stream, cb) {\n if (typeof stream._construct !== 'function') {\n return\n }\n const r = stream._readableState\n const w = stream._writableState\n if (r) {\n r.constructed = false\n }\n if (w) {\n w.constructed = false\n }\n stream.once(kConstruct, cb)\n if (stream.listenerCount(kConstruct) > 1) {\n // Duplex\n return\n }\n process.nextTick(constructNT, stream)\n}\nfunction constructNT(stream) {\n let called = false\n function onConstruct(err) {\n if (called) {\n errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK())\n return\n }\n called = true\n const r = stream._readableState\n const w = stream._writableState\n const s = w || r\n if (r) {\n r.constructed = true\n }\n if (w) {\n w.constructed = true\n }\n if (s.destroyed) {\n stream.emit(kDestroy, err)\n } else if (err) {\n errorOrDestroy(stream, err, true)\n } else {\n process.nextTick(emitConstructNT, stream)\n }\n }\n try {\n stream._construct((err) => {\n process.nextTick(onConstruct, err)\n })\n } catch (err) {\n process.nextTick(onConstruct, err)\n }\n}\nfunction emitConstructNT(stream) {\n stream.emit(kConstruct)\n}\nfunction isRequest(stream) {\n return (stream === null || stream === undefined ? undefined : stream.setHeader) && typeof stream.abort === 'function'\n}\nfunction emitCloseLegacy(stream) {\n stream.emit('close')\n}\nfunction emitErrorCloseLegacy(stream, err) {\n stream.emit('error', err)\n process.nextTick(emitCloseLegacy, stream)\n}\n\n// Normalize destroy for legacy.\nfunction destroyer(stream, err) {\n if (!stream || isDestroyed(stream)) {\n return\n }\n if (!err && !isFinished(stream)) {\n err = new AbortError()\n }\n\n // TODO: Remove isRequest branches.\n if (isServerRequest(stream)) {\n stream.socket = null\n stream.destroy(err)\n } else if (isRequest(stream)) {\n stream.abort()\n } else if (isRequest(stream.req)) {\n stream.req.abort()\n } else if (typeof stream.destroy === 'function') {\n stream.destroy(err)\n } else if (typeof stream.close === 'function') {\n // TODO: Don't lose err?\n stream.close()\n } else if (err) {\n process.nextTick(emitErrorCloseLegacy, stream, err)\n } else {\n process.nextTick(emitCloseLegacy, stream)\n }\n if (!stream.destroyed) {\n stream[kIsDestroyed] = true\n }\n}\nmodule.exports = {\n construct,\n destroyer,\n destroy,\n undestroy,\n errorOrDestroy\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototype inheritance, this class\n// prototypically inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict'\n\nconst {\n ObjectDefineProperties,\n ObjectGetOwnPropertyDescriptor,\n ObjectKeys,\n ObjectSetPrototypeOf\n} = require('../../ours/primordials')\nmodule.exports = Duplex\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nObjectSetPrototypeOf(Duplex.prototype, Readable.prototype)\nObjectSetPrototypeOf(Duplex, Readable)\n{\n const keys = ObjectKeys(Writable.prototype)\n // Allow the keys array to be GC'ed.\n for (let i = 0; i < keys.length; i++) {\n const method = keys[i]\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options)\n Readable.call(this, options)\n Writable.call(this, options)\n if (options) {\n this.allowHalfOpen = options.allowHalfOpen !== false\n if (options.readable === false) {\n this._readableState.readable = false\n this._readableState.ended = true\n this._readableState.endEmitted = true\n }\n if (options.writable === false) {\n this._writableState.writable = false\n this._writableState.ending = true\n this._writableState.ended = true\n this._writableState.finished = true\n }\n } else {\n this.allowHalfOpen = true\n }\n}\nObjectDefineProperties(Duplex.prototype, {\n writable: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable')\n },\n writableHighWaterMark: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark')\n },\n writableObjectMode: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode')\n },\n writableBuffer: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer')\n },\n writableLength: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength')\n },\n writableFinished: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished')\n },\n writableCorked: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked')\n },\n writableEnded: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded')\n },\n writableNeedDrain: {\n __proto__: null,\n ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain')\n },\n destroyed: {\n __proto__: null,\n get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false\n }\n return this._readableState.destroyed && this._writableState.destroyed\n },\n set(value) {\n // Backward compatibility, the user is explicitly\n // managing destroyed.\n if (this._readableState && this._writableState) {\n this._readableState.destroyed = value\n this._writableState.destroyed = value\n }\n }\n }\n})\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nDuplex.fromWeb = function (pair, options) {\n return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options)\n}\nDuplex.toWeb = function (duplex) {\n return lazyWebStreams().newReadableWritablePairFromDuplex(duplex)\n}\nlet duplexify\nDuplex.from = function (body) {\n if (!duplexify) {\n duplexify = require('./duplexify')\n }\n return duplexify(body, 'body')\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\n;('use strict')\nconst bufferModule = require('buffer')\nconst {\n isReadable,\n isWritable,\n isIterable,\n isNodeStream,\n isReadableNodeStream,\n isWritableNodeStream,\n isDuplexNodeStream,\n isReadableStream,\n isWritableStream\n} = require('./utils')\nconst eos = require('./end-of-stream')\nconst {\n AbortError,\n codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE }\n} = require('../../ours/errors')\nconst { destroyer } = require('./destroy')\nconst Duplex = require('./duplex')\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nconst { createDeferredPromise } = require('../../ours/util')\nconst from = require('./from')\nconst Blob = globalThis.Blob || bufferModule.Blob\nconst isBlob =\n typeof Blob !== 'undefined'\n ? function isBlob(b) {\n return b instanceof Blob\n }\n : function isBlob(b) {\n return false\n }\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst { FunctionPrototypeCall } = require('../../ours/primordials')\n\n// This is needed for pre node 17.\nclass Duplexify extends Duplex {\n constructor(options) {\n super(options)\n\n // https://github.com/nodejs/node/pull/34385\n\n if ((options === null || options === undefined ? undefined : options.readable) === false) {\n this._readableState.readable = false\n this._readableState.ended = true\n this._readableState.endEmitted = true\n }\n if ((options === null || options === undefined ? undefined : options.writable) === false) {\n this._writableState.writable = false\n this._writableState.ending = true\n this._writableState.ended = true\n this._writableState.finished = true\n }\n }\n}\nmodule.exports = function duplexify(body, name) {\n if (isDuplexNodeStream(body)) {\n return body\n }\n if (isReadableNodeStream(body)) {\n return _duplexify({\n readable: body\n })\n }\n if (isWritableNodeStream(body)) {\n return _duplexify({\n writable: body\n })\n }\n if (isNodeStream(body)) {\n return _duplexify({\n writable: false,\n readable: false\n })\n }\n if (isReadableStream(body)) {\n return _duplexify({\n readable: Readable.fromWeb(body)\n })\n }\n if (isWritableStream(body)) {\n return _duplexify({\n writable: Writable.fromWeb(body)\n })\n }\n if (typeof body === 'function') {\n const { value, write, final, destroy } = fromAsyncGen(body)\n if (isIterable(value)) {\n return from(Duplexify, value, {\n // TODO (ronag): highWaterMark?\n objectMode: true,\n write,\n final,\n destroy\n })\n }\n const then = value === null || value === undefined ? undefined : value.then\n if (typeof then === 'function') {\n let d\n const promise = FunctionPrototypeCall(\n then,\n value,\n (val) => {\n if (val != null) {\n throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val)\n }\n },\n (err) => {\n destroyer(d, err)\n }\n )\n return (d = new Duplexify({\n // TODO (ronag): highWaterMark?\n objectMode: true,\n readable: false,\n write,\n final(cb) {\n final(async () => {\n try {\n await promise\n process.nextTick(cb, null)\n } catch (err) {\n process.nextTick(cb, err)\n }\n })\n },\n destroy\n }))\n }\n throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value)\n }\n if (isBlob(body)) {\n return duplexify(body.arrayBuffer())\n }\n if (isIterable(body)) {\n return from(Duplexify, body, {\n // TODO (ronag): highWaterMark?\n objectMode: true,\n writable: false\n })\n }\n if (\n isReadableStream(body === null || body === undefined ? undefined : body.readable) &&\n isWritableStream(body === null || body === undefined ? undefined : body.writable)\n ) {\n return Duplexify.fromWeb(body)\n }\n if (\n typeof (body === null || body === undefined ? undefined : body.writable) === 'object' ||\n typeof (body === null || body === undefined ? undefined : body.readable) === 'object'\n ) {\n const readable =\n body !== null && body !== undefined && body.readable\n ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable)\n ? body === null || body === undefined\n ? undefined\n : body.readable\n : duplexify(body.readable)\n : undefined\n const writable =\n body !== null && body !== undefined && body.writable\n ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable)\n ? body === null || body === undefined\n ? undefined\n : body.writable\n : duplexify(body.writable)\n : undefined\n return _duplexify({\n readable,\n writable\n })\n }\n const then = body === null || body === undefined ? undefined : body.then\n if (typeof then === 'function') {\n let d\n FunctionPrototypeCall(\n then,\n body,\n (val) => {\n if (val != null) {\n d.push(val)\n }\n d.push(null)\n },\n (err) => {\n destroyer(d, err)\n }\n )\n return (d = new Duplexify({\n objectMode: true,\n writable: false,\n read() {}\n }))\n }\n throw new ERR_INVALID_ARG_TYPE(\n name,\n [\n 'Blob',\n 'ReadableStream',\n 'WritableStream',\n 'Stream',\n 'Iterable',\n 'AsyncIterable',\n 'Function',\n '{ readable, writable } pair',\n 'Promise'\n ],\n body\n )\n}\nfunction fromAsyncGen(fn) {\n let { promise, resolve } = createDeferredPromise()\n const ac = new AbortController()\n const signal = ac.signal\n const value = fn(\n (async function* () {\n while (true) {\n const _promise = promise\n promise = null\n const { chunk, done, cb } = await _promise\n process.nextTick(cb)\n if (done) return\n if (signal.aborted)\n throw new AbortError(undefined, {\n cause: signal.reason\n })\n ;({ promise, resolve } = createDeferredPromise())\n yield chunk\n }\n })(),\n {\n signal\n }\n )\n return {\n value,\n write(chunk, encoding, cb) {\n const _resolve = resolve\n resolve = null\n _resolve({\n chunk,\n done: false,\n cb\n })\n },\n final(cb) {\n const _resolve = resolve\n resolve = null\n _resolve({\n done: true,\n cb\n })\n },\n destroy(err, cb) {\n ac.abort()\n cb(err)\n }\n }\n}\nfunction _duplexify(pair) {\n const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable\n const w = pair.writable\n let readable = !!isReadable(r)\n let writable = !!isWritable(w)\n let ondrain\n let onfinish\n let onreadable\n let onclose\n let d\n function onfinished(err) {\n const cb = onclose\n onclose = null\n if (cb) {\n cb(err)\n } else if (err) {\n d.destroy(err)\n }\n }\n\n // TODO(ronag): Avoid double buffering.\n // Implement Writable/Readable/Duplex traits.\n // See, https://github.com/nodejs/node/pull/33515.\n d = new Duplexify({\n // TODO (ronag): highWaterMark?\n readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode),\n writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode),\n readable,\n writable\n })\n if (writable) {\n eos(w, (err) => {\n writable = false\n if (err) {\n destroyer(r, err)\n }\n onfinished(err)\n })\n d._write = function (chunk, encoding, callback) {\n if (w.write(chunk, encoding)) {\n callback()\n } else {\n ondrain = callback\n }\n }\n d._final = function (callback) {\n w.end()\n onfinish = callback\n }\n w.on('drain', function () {\n if (ondrain) {\n const cb = ondrain\n ondrain = null\n cb()\n }\n })\n w.on('finish', function () {\n if (onfinish) {\n const cb = onfinish\n onfinish = null\n cb()\n }\n })\n }\n if (readable) {\n eos(r, (err) => {\n readable = false\n if (err) {\n destroyer(r, err)\n }\n onfinished(err)\n })\n r.on('readable', function () {\n if (onreadable) {\n const cb = onreadable\n onreadable = null\n cb()\n }\n })\n r.on('end', function () {\n d.push(null)\n })\n d._read = function () {\n while (true) {\n const buf = r.read()\n if (buf === null) {\n onreadable = d._read\n return\n }\n if (!d.push(buf)) {\n return\n }\n }\n }\n }\n d._destroy = function (err, callback) {\n if (!err && onclose !== null) {\n err = new AbortError()\n }\n onreadable = null\n ondrain = null\n onfinish = null\n if (onclose === null) {\n callback(err)\n } else {\n onclose = callback\n destroyer(w, err)\n destroyer(r, err)\n }\n }\n return d\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes\nconst { kEmptyObject, once } = require('../../ours/util')\nconst { validateAbortSignal, validateFunction, validateObject, validateBoolean } = require('../validators')\nconst { Promise, PromisePrototypeThen, SymbolDispose } = require('../../ours/primordials')\nconst {\n isClosed,\n isReadable,\n isReadableNodeStream,\n isReadableStream,\n isReadableFinished,\n isReadableErrored,\n isWritable,\n isWritableNodeStream,\n isWritableStream,\n isWritableFinished,\n isWritableErrored,\n isNodeStream,\n willEmitClose: _willEmitClose,\n kIsClosedPromise\n} = require('./utils')\nlet addAbortListener\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function'\n}\nconst nop = () => {}\nfunction eos(stream, options, callback) {\n var _options$readable, _options$writable\n if (arguments.length === 2) {\n callback = options\n options = kEmptyObject\n } else if (options == null) {\n options = kEmptyObject\n } else {\n validateObject(options, 'options')\n }\n validateFunction(callback, 'callback')\n validateAbortSignal(options.signal, 'options.signal')\n callback = once(callback)\n if (isReadableStream(stream) || isWritableStream(stream)) {\n return eosWeb(stream, options, callback)\n }\n if (!isNodeStream(stream)) {\n throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n }\n const readable =\n (_options$readable = options.readable) !== null && _options$readable !== undefined\n ? _options$readable\n : isReadableNodeStream(stream)\n const writable =\n (_options$writable = options.writable) !== null && _options$writable !== undefined\n ? _options$writable\n : isWritableNodeStream(stream)\n const wState = stream._writableState\n const rState = stream._readableState\n const onlegacyfinish = () => {\n if (!stream.writable) {\n onfinish()\n }\n }\n\n // TODO (ronag): Improve soft detection to include core modules and\n // common ecosystem modules that do properly emit 'close' but fail\n // this generic check.\n let willEmitClose =\n _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable\n let writableFinished = isWritableFinished(stream, false)\n const onfinish = () => {\n writableFinished = true\n // Stream should not be destroyed here. If it is that\n // means that user space is doing something differently and\n // we cannot trust willEmitClose.\n if (stream.destroyed) {\n willEmitClose = false\n }\n if (willEmitClose && (!stream.readable || readable)) {\n return\n }\n if (!readable || readableFinished) {\n callback.call(stream)\n }\n }\n let readableFinished = isReadableFinished(stream, false)\n const onend = () => {\n readableFinished = true\n // Stream should not be destroyed here. If it is that\n // means that user space is doing something differently and\n // we cannot trust willEmitClose.\n if (stream.destroyed) {\n willEmitClose = false\n }\n if (willEmitClose && (!stream.writable || writable)) {\n return\n }\n if (!writable || writableFinished) {\n callback.call(stream)\n }\n }\n const onerror = (err) => {\n callback.call(stream, err)\n }\n let closed = isClosed(stream)\n const onclose = () => {\n closed = true\n const errored = isWritableErrored(stream) || isReadableErrored(stream)\n if (errored && typeof errored !== 'boolean') {\n return callback.call(stream, errored)\n }\n if (readable && !readableFinished && isReadableNodeStream(stream, true)) {\n if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n }\n if (writable && !writableFinished) {\n if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n }\n callback.call(stream)\n }\n const onclosed = () => {\n closed = true\n const errored = isWritableErrored(stream) || isReadableErrored(stream)\n if (errored && typeof errored !== 'boolean') {\n return callback.call(stream, errored)\n }\n callback.call(stream)\n }\n const onrequest = () => {\n stream.req.on('finish', onfinish)\n }\n if (isRequest(stream)) {\n stream.on('complete', onfinish)\n if (!willEmitClose) {\n stream.on('abort', onclose)\n }\n if (stream.req) {\n onrequest()\n } else {\n stream.on('request', onrequest)\n }\n } else if (writable && !wState) {\n // legacy streams\n stream.on('end', onlegacyfinish)\n stream.on('close', onlegacyfinish)\n }\n\n // Not all streams will emit 'close' after 'aborted'.\n if (!willEmitClose && typeof stream.aborted === 'boolean') {\n stream.on('aborted', onclose)\n }\n stream.on('end', onend)\n stream.on('finish', onfinish)\n if (options.error !== false) {\n stream.on('error', onerror)\n }\n stream.on('close', onclose)\n if (closed) {\n process.nextTick(onclose)\n } else if (\n (wState !== null && wState !== undefined && wState.errorEmitted) ||\n (rState !== null && rState !== undefined && rState.errorEmitted)\n ) {\n if (!willEmitClose) {\n process.nextTick(onclosed)\n }\n } else if (\n !readable &&\n (!willEmitClose || isReadable(stream)) &&\n (writableFinished || isWritable(stream) === false)\n ) {\n process.nextTick(onclosed)\n } else if (\n !writable &&\n (!willEmitClose || isWritable(stream)) &&\n (readableFinished || isReadable(stream) === false)\n ) {\n process.nextTick(onclosed)\n } else if (rState && stream.req && stream.aborted) {\n process.nextTick(onclosed)\n }\n const cleanup = () => {\n callback = nop\n stream.removeListener('aborted', onclose)\n stream.removeListener('complete', onfinish)\n stream.removeListener('abort', onclose)\n stream.removeListener('request', onrequest)\n if (stream.req) stream.req.removeListener('finish', onfinish)\n stream.removeListener('end', onlegacyfinish)\n stream.removeListener('close', onlegacyfinish)\n stream.removeListener('finish', onfinish)\n stream.removeListener('end', onend)\n stream.removeListener('error', onerror)\n stream.removeListener('close', onclose)\n }\n if (options.signal && !closed) {\n const abort = () => {\n // Keep it because cleanup removes it.\n const endCallback = callback\n cleanup()\n endCallback.call(\n stream,\n new AbortError(undefined, {\n cause: options.signal.reason\n })\n )\n }\n if (options.signal.aborted) {\n process.nextTick(abort)\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(options.signal, abort)\n const originalCallback = callback\n callback = once((...args) => {\n disposable[SymbolDispose]()\n originalCallback.apply(stream, args)\n })\n }\n }\n return cleanup\n}\nfunction eosWeb(stream, options, callback) {\n let isAborted = false\n let abort = nop\n if (options.signal) {\n abort = () => {\n isAborted = true\n callback.call(\n stream,\n new AbortError(undefined, {\n cause: options.signal.reason\n })\n )\n }\n if (options.signal.aborted) {\n process.nextTick(abort)\n } else {\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n const disposable = addAbortListener(options.signal, abort)\n const originalCallback = callback\n callback = once((...args) => {\n disposable[SymbolDispose]()\n originalCallback.apply(stream, args)\n })\n }\n }\n const resolverFn = (...args) => {\n if (!isAborted) {\n process.nextTick(() => callback.apply(stream, args))\n }\n }\n PromisePrototypeThen(stream[kIsClosedPromise].promise, resolverFn, resolverFn)\n return nop\n}\nfunction finished(stream, opts) {\n var _opts\n let autoCleanup = false\n if (opts === null) {\n opts = kEmptyObject\n }\n if ((_opts = opts) !== null && _opts !== undefined && _opts.cleanup) {\n validateBoolean(opts.cleanup, 'cleanup')\n autoCleanup = opts.cleanup\n }\n return new Promise((resolve, reject) => {\n const cleanup = eos(stream, opts, (err) => {\n if (autoCleanup) {\n cleanup()\n }\n if (err) {\n reject(err)\n } else {\n resolve()\n }\n })\n })\n}\nmodule.exports = eos\nmodule.exports.finished = finished\n","'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require('../../ours/errors').codes\nfunction from(Readable, iterable, opts) {\n let iterator\n if (typeof iterable === 'string' || iterable instanceof Buffer) {\n return new Readable({\n objectMode: true,\n ...opts,\n read() {\n this.push(iterable)\n this.push(null)\n }\n })\n }\n let isAsync\n if (iterable && iterable[SymbolAsyncIterator]) {\n isAsync = true\n iterator = iterable[SymbolAsyncIterator]()\n } else if (iterable && iterable[SymbolIterator]) {\n isAsync = false\n iterator = iterable[SymbolIterator]()\n } else {\n throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable)\n }\n const readable = new Readable({\n objectMode: true,\n highWaterMark: 1,\n // TODO(ronag): What options should be allowed?\n ...opts\n })\n\n // Flag to protect against _read\n // being called before last iteration completion.\n let reading = false\n readable._read = function () {\n if (!reading) {\n reading = true\n next()\n }\n }\n readable._destroy = function (error, cb) {\n PromisePrototypeThen(\n close(error),\n () => process.nextTick(cb, error),\n // nextTick is here in case cb throws\n (e) => process.nextTick(cb, e || error)\n )\n }\n async function close(error) {\n const hadError = error !== undefined && error !== null\n const hasThrow = typeof iterator.throw === 'function'\n if (hadError && hasThrow) {\n const { value, done } = await iterator.throw(error)\n await value\n if (done) {\n return\n }\n }\n if (typeof iterator.return === 'function') {\n const { value } = await iterator.return()\n await value\n }\n }\n async function next() {\n for (;;) {\n try {\n const { value, done } = isAsync ? await iterator.next() : iterator.next()\n if (done) {\n readable.push(null)\n } else {\n const res = value && typeof value.then === 'function' ? await value : value\n if (res === null) {\n reading = false\n throw new ERR_STREAM_NULL_VALUES()\n } else if (readable.push(res)) {\n continue\n } else {\n reading = false\n }\n }\n } catch (err) {\n readable.destroy(err)\n }\n break\n }\n }\n return readable\n}\nmodule.exports = from\n","'use strict'\n\nconst { ArrayIsArray, ObjectSetPrototypeOf } = require('../../ours/primordials')\nconst { EventEmitter: EE } = require('events')\nfunction Stream(opts) {\n EE.call(this, opts)\n}\nObjectSetPrototypeOf(Stream.prototype, EE.prototype)\nObjectSetPrototypeOf(Stream, EE)\nStream.prototype.pipe = function (dest, options) {\n const source = this\n function ondata(chunk) {\n if (dest.writable && dest.write(chunk) === false && source.pause) {\n source.pause()\n }\n }\n source.on('data', ondata)\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume()\n }\n }\n dest.on('drain', ondrain)\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend)\n source.on('close', onclose)\n }\n let didOnEnd = false\n function onend() {\n if (didOnEnd) return\n didOnEnd = true\n dest.end()\n }\n function onclose() {\n if (didOnEnd) return\n didOnEnd = true\n if (typeof dest.destroy === 'function') dest.destroy()\n }\n\n // Don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup()\n if (EE.listenerCount(this, 'error') === 0) {\n this.emit('error', er)\n }\n }\n prependListener(source, 'error', onerror)\n prependListener(dest, 'error', onerror)\n\n // Remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata)\n dest.removeListener('drain', ondrain)\n source.removeListener('end', onend)\n source.removeListener('close', onclose)\n source.removeListener('error', onerror)\n dest.removeListener('error', onerror)\n source.removeListener('end', cleanup)\n source.removeListener('close', cleanup)\n dest.removeListener('close', cleanup)\n }\n source.on('end', cleanup)\n source.on('close', cleanup)\n dest.on('close', cleanup)\n dest.emit('pipe', source)\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest\n}\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn)\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn)\n else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn)\n else emitter._events[event] = [fn, emitter._events[event]]\n}\nmodule.exports = {\n Stream,\n prependListener\n}\n","'use strict'\n\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst {\n codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE },\n AbortError\n} = require('../../ours/errors')\nconst { validateAbortSignal, validateInteger, validateObject } = require('../validators')\nconst kWeakHandler = require('../../ours/primordials').Symbol('kWeak')\nconst kResistStopPropagation = require('../../ours/primordials').Symbol('kResistStopPropagation')\nconst { finished } = require('./end-of-stream')\nconst staticCompose = require('./compose')\nconst { addAbortSignalNoValidate } = require('./add-abort-signal')\nconst { isWritable, isNodeStream } = require('./utils')\nconst { deprecate } = require('../../ours/util')\nconst {\n ArrayPrototypePush,\n Boolean,\n MathFloor,\n Number,\n NumberIsNaN,\n Promise,\n PromiseReject,\n PromiseResolve,\n PromisePrototypeThen,\n Symbol\n} = require('../../ours/primordials')\nconst kEmpty = Symbol('kEmpty')\nconst kEof = Symbol('kEof')\nfunction compose(stream, options) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n if (isNodeStream(stream) && !isWritable(stream)) {\n throw new ERR_INVALID_ARG_VALUE('stream', stream, 'must be writable')\n }\n const composedStream = staticCompose(this, stream)\n if (options !== null && options !== undefined && options.signal) {\n // Not validating as we already validated before\n addAbortSignalNoValidate(options.signal, composedStream)\n }\n return composedStream\n}\nfunction map(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n let concurrency = 1\n if ((options === null || options === undefined ? undefined : options.concurrency) != null) {\n concurrency = MathFloor(options.concurrency)\n }\n let highWaterMark = concurrency - 1\n if ((options === null || options === undefined ? undefined : options.highWaterMark) != null) {\n highWaterMark = MathFloor(options.highWaterMark)\n }\n validateInteger(concurrency, 'options.concurrency', 1)\n validateInteger(highWaterMark, 'options.highWaterMark', 0)\n highWaterMark += concurrency\n return async function* map() {\n const signal = require('../../ours/util').AbortSignalAny(\n [options === null || options === undefined ? undefined : options.signal].filter(Boolean)\n )\n const stream = this\n const queue = []\n const signalOpt = {\n signal\n }\n let next\n let resume\n let done = false\n let cnt = 0\n function onCatch() {\n done = true\n afterItemProcessed()\n }\n function afterItemProcessed() {\n cnt -= 1\n maybeResume()\n }\n function maybeResume() {\n if (resume && !done && cnt < concurrency && queue.length < highWaterMark) {\n resume()\n resume = null\n }\n }\n async function pump() {\n try {\n for await (let val of stream) {\n if (done) {\n return\n }\n if (signal.aborted) {\n throw new AbortError()\n }\n try {\n val = fn(val, signalOpt)\n if (val === kEmpty) {\n continue\n }\n val = PromiseResolve(val)\n } catch (err) {\n val = PromiseReject(err)\n }\n cnt += 1\n PromisePrototypeThen(val, afterItemProcessed, onCatch)\n queue.push(val)\n if (next) {\n next()\n next = null\n }\n if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) {\n await new Promise((resolve) => {\n resume = resolve\n })\n }\n }\n queue.push(kEof)\n } catch (err) {\n const val = PromiseReject(err)\n PromisePrototypeThen(val, afterItemProcessed, onCatch)\n queue.push(val)\n } finally {\n done = true\n if (next) {\n next()\n next = null\n }\n }\n }\n pump()\n try {\n while (true) {\n while (queue.length > 0) {\n const val = await queue[0]\n if (val === kEof) {\n return\n }\n if (signal.aborted) {\n throw new AbortError()\n }\n if (val !== kEmpty) {\n yield val\n }\n queue.shift()\n maybeResume()\n }\n await new Promise((resolve) => {\n next = resolve\n })\n }\n } finally {\n done = true\n if (resume) {\n resume()\n resume = null\n }\n }\n }.call(this)\n}\nfunction asIndexedPairs(options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n return async function* asIndexedPairs() {\n let index = 0\n for await (const val of this) {\n var _options$signal\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal = options.signal) !== null &&\n _options$signal !== undefined &&\n _options$signal.aborted\n ) {\n throw new AbortError({\n cause: options.signal.reason\n })\n }\n yield [index++, val]\n }\n }.call(this)\n}\nasync function some(fn, options = undefined) {\n for await (const unused of filter.call(this, fn, options)) {\n return true\n }\n return false\n}\nasync function every(fn, options = undefined) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n // https://en.wikipedia.org/wiki/De_Morgan%27s_laws\n return !(await some.call(\n this,\n async (...args) => {\n return !(await fn(...args))\n },\n options\n ))\n}\nasync function find(fn, options) {\n for await (const result of filter.call(this, fn, options)) {\n return result\n }\n return undefined\n}\nasync function forEach(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n async function forEachFn(value, options) {\n await fn(value, options)\n return kEmpty\n }\n // eslint-disable-next-line no-unused-vars\n for await (const unused of map.call(this, forEachFn, options));\n}\nfunction filter(fn, options) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n }\n async function filterFn(value, options) {\n if (await fn(value, options)) {\n return value\n }\n return kEmpty\n }\n return map.call(this, filterFn, options)\n}\n\n// Specific to provide better error to reduce since the argument is only\n// missing if the stream has no items in it - but the code is still appropriate\nclass ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS {\n constructor() {\n super('reduce')\n this.message = 'Reduce of an empty stream requires an initial value'\n }\n}\nasync function reduce(reducer, initialValue, options) {\n var _options$signal2\n if (typeof reducer !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer)\n }\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n let hasInitialValue = arguments.length > 1\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal2 = options.signal) !== null &&\n _options$signal2 !== undefined &&\n _options$signal2.aborted\n ) {\n const err = new AbortError(undefined, {\n cause: options.signal.reason\n })\n this.once('error', () => {}) // The error is already propagated\n await finished(this.destroy(err))\n throw err\n }\n const ac = new AbortController()\n const signal = ac.signal\n if (options !== null && options !== undefined && options.signal) {\n const opts = {\n once: true,\n [kWeakHandler]: this,\n [kResistStopPropagation]: true\n }\n options.signal.addEventListener('abort', () => ac.abort(), opts)\n }\n let gotAnyItemFromStream = false\n try {\n for await (const value of this) {\n var _options$signal3\n gotAnyItemFromStream = true\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal3 = options.signal) !== null &&\n _options$signal3 !== undefined &&\n _options$signal3.aborted\n ) {\n throw new AbortError()\n }\n if (!hasInitialValue) {\n initialValue = value\n hasInitialValue = true\n } else {\n initialValue = await reducer(initialValue, value, {\n signal\n })\n }\n }\n if (!gotAnyItemFromStream && !hasInitialValue) {\n throw new ReduceAwareErrMissingArgs()\n }\n } finally {\n ac.abort()\n }\n return initialValue\n}\nasync function toArray(options) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n const result = []\n for await (const val of this) {\n var _options$signal4\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal4 = options.signal) !== null &&\n _options$signal4 !== undefined &&\n _options$signal4.aborted\n ) {\n throw new AbortError(undefined, {\n cause: options.signal.reason\n })\n }\n ArrayPrototypePush(result, val)\n }\n return result\n}\nfunction flatMap(fn, options) {\n const values = map.call(this, fn, options)\n return async function* flatMap() {\n for await (const val of values) {\n yield* val\n }\n }.call(this)\n}\nfunction toIntegerOrInfinity(number) {\n // We coerce here to align with the spec\n // https://github.com/tc39/proposal-iterator-helpers/issues/169\n number = Number(number)\n if (NumberIsNaN(number)) {\n return 0\n }\n if (number < 0) {\n throw new ERR_OUT_OF_RANGE('number', '>= 0', number)\n }\n return number\n}\nfunction drop(number, options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n number = toIntegerOrInfinity(number)\n return async function* drop() {\n var _options$signal5\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal5 = options.signal) !== null &&\n _options$signal5 !== undefined &&\n _options$signal5.aborted\n ) {\n throw new AbortError()\n }\n for await (const val of this) {\n var _options$signal6\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal6 = options.signal) !== null &&\n _options$signal6 !== undefined &&\n _options$signal6.aborted\n ) {\n throw new AbortError()\n }\n if (number-- <= 0) {\n yield val\n }\n }\n }.call(this)\n}\nfunction take(number, options = undefined) {\n if (options != null) {\n validateObject(options, 'options')\n }\n if ((options === null || options === undefined ? undefined : options.signal) != null) {\n validateAbortSignal(options.signal, 'options.signal')\n }\n number = toIntegerOrInfinity(number)\n return async function* take() {\n var _options$signal7\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal7 = options.signal) !== null &&\n _options$signal7 !== undefined &&\n _options$signal7.aborted\n ) {\n throw new AbortError()\n }\n for await (const val of this) {\n var _options$signal8\n if (\n options !== null &&\n options !== undefined &&\n (_options$signal8 = options.signal) !== null &&\n _options$signal8 !== undefined &&\n _options$signal8.aborted\n ) {\n throw new AbortError()\n }\n if (number-- > 0) {\n yield val\n }\n\n // Don't get another item from iterator in case we reached the end\n if (number <= 0) {\n return\n }\n }\n }.call(this)\n}\nmodule.exports.streamReturningOperators = {\n asIndexedPairs: deprecate(asIndexedPairs, 'readable.asIndexedPairs will be removed in a future version.'),\n drop,\n filter,\n flatMap,\n map,\n take,\n compose\n}\nmodule.exports.promiseReturningOperators = {\n every,\n forEach,\n reduce,\n toArray,\n some,\n find\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf } = require('../../ours/primordials')\nmodule.exports = PassThrough\nconst Transform = require('./transform')\nObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype)\nObjectSetPrototypeOf(PassThrough, Transform)\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options)\n Transform.call(this, options)\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk)\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { ArrayIsArray, Promise, SymbolAsyncIterator, SymbolDispose } = require('../../ours/primordials')\nconst eos = require('./end-of-stream')\nconst { once } = require('../../ours/util')\nconst destroyImpl = require('./destroy')\nconst Duplex = require('./duplex')\nconst {\n aggregateTwoErrors,\n codes: {\n ERR_INVALID_ARG_TYPE,\n ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED,\n ERR_STREAM_PREMATURE_CLOSE\n },\n AbortError\n} = require('../../ours/errors')\nconst { validateFunction, validateAbortSignal } = require('../validators')\nconst {\n isIterable,\n isReadable,\n isReadableNodeStream,\n isNodeStream,\n isTransformStream,\n isWebStream,\n isReadableStream,\n isReadableFinished\n} = require('./utils')\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nlet PassThrough\nlet Readable\nlet addAbortListener\nfunction destroyer(stream, reading, writing) {\n let finished = false\n stream.on('close', () => {\n finished = true\n })\n const cleanup = eos(\n stream,\n {\n readable: reading,\n writable: writing\n },\n (err) => {\n finished = !err\n }\n )\n return {\n destroy: (err) => {\n if (finished) return\n finished = true\n destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe'))\n },\n cleanup\n }\n}\nfunction popCallback(streams) {\n // Streams should never be an empty array. It should always contain at least\n // a single stream. Therefore optimize for the average case instead of\n // checking for length === 0 as well.\n validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]')\n return streams.pop()\n}\nfunction makeAsyncIterable(val) {\n if (isIterable(val)) {\n return val\n } else if (isReadableNodeStream(val)) {\n // Legacy streams are not Iterable.\n return fromReadable(val)\n }\n throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val)\n}\nasync function* fromReadable(val) {\n if (!Readable) {\n Readable = require('./readable')\n }\n yield* Readable.prototype[SymbolAsyncIterator].call(val)\n}\nasync function pumpToNode(iterable, writable, finish, { end }) {\n let error\n let onresolve = null\n const resume = (err) => {\n if (err) {\n error = err\n }\n if (onresolve) {\n const callback = onresolve\n onresolve = null\n callback()\n }\n }\n const wait = () =>\n new Promise((resolve, reject) => {\n if (error) {\n reject(error)\n } else {\n onresolve = () => {\n if (error) {\n reject(error)\n } else {\n resolve()\n }\n }\n }\n })\n writable.on('drain', resume)\n const cleanup = eos(\n writable,\n {\n readable: false\n },\n resume\n )\n try {\n if (writable.writableNeedDrain) {\n await wait()\n }\n for await (const chunk of iterable) {\n if (!writable.write(chunk)) {\n await wait()\n }\n }\n if (end) {\n writable.end()\n await wait()\n }\n finish()\n } catch (err) {\n finish(error !== err ? aggregateTwoErrors(error, err) : err)\n } finally {\n cleanup()\n writable.off('drain', resume)\n }\n}\nasync function pumpToWeb(readable, writable, finish, { end }) {\n if (isTransformStream(writable)) {\n writable = writable.writable\n }\n // https://streams.spec.whatwg.org/#example-manual-write-with-backpressure\n const writer = writable.getWriter()\n try {\n for await (const chunk of readable) {\n await writer.ready\n writer.write(chunk).catch(() => {})\n }\n await writer.ready\n if (end) {\n await writer.close()\n }\n finish()\n } catch (err) {\n try {\n await writer.abort(err)\n finish(err)\n } catch (err) {\n finish(err)\n }\n }\n}\nfunction pipeline(...streams) {\n return pipelineImpl(streams, once(popCallback(streams)))\n}\nfunction pipelineImpl(streams, callback, opts) {\n if (streams.length === 1 && ArrayIsArray(streams[0])) {\n streams = streams[0]\n }\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams')\n }\n const ac = new AbortController()\n const signal = ac.signal\n const outerSignal = opts === null || opts === undefined ? undefined : opts.signal\n\n // Need to cleanup event listeners if last stream is readable\n // https://github.com/nodejs/node/issues/35452\n const lastStreamCleanup = []\n validateAbortSignal(outerSignal, 'options.signal')\n function abort() {\n finishImpl(new AbortError())\n }\n addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n let disposable\n if (outerSignal) {\n disposable = addAbortListener(outerSignal, abort)\n }\n let error\n let value\n const destroys = []\n let finishCount = 0\n function finish(err) {\n finishImpl(err, --finishCount === 0)\n }\n function finishImpl(err, final) {\n var _disposable\n if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) {\n error = err\n }\n if (!error && !final) {\n return\n }\n while (destroys.length) {\n destroys.shift()(error)\n }\n ;(_disposable = disposable) === null || _disposable === undefined ? undefined : _disposable[SymbolDispose]()\n ac.abort()\n if (final) {\n if (!error) {\n lastStreamCleanup.forEach((fn) => fn())\n }\n process.nextTick(callback, error, value)\n }\n }\n let ret\n for (let i = 0; i < streams.length; i++) {\n const stream = streams[i]\n const reading = i < streams.length - 1\n const writing = i > 0\n const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false\n const isLastStream = i === streams.length - 1\n if (isNodeStream(stream)) {\n if (end) {\n const { destroy, cleanup } = destroyer(stream, reading, writing)\n destroys.push(destroy)\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n }\n\n // Catch stream errors that occur after pipe/pump has completed.\n function onError(err) {\n if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n finish(err)\n }\n }\n stream.on('error', onError)\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(() => {\n stream.removeListener('error', onError)\n })\n }\n }\n if (i === 0) {\n if (typeof stream === 'function') {\n ret = stream({\n signal\n })\n if (!isIterable(ret)) {\n throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret)\n }\n } else if (isIterable(stream) || isReadableNodeStream(stream) || isTransformStream(stream)) {\n ret = stream\n } else {\n ret = Duplex.from(stream)\n }\n } else if (typeof stream === 'function') {\n if (isTransformStream(ret)) {\n var _ret\n ret = makeAsyncIterable((_ret = ret) === null || _ret === undefined ? undefined : _ret.readable)\n } else {\n ret = makeAsyncIterable(ret)\n }\n ret = stream(ret, {\n signal\n })\n if (reading) {\n if (!isIterable(ret, true)) {\n throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret)\n }\n } else {\n var _ret2\n if (!PassThrough) {\n PassThrough = require('./passthrough')\n }\n\n // If the last argument to pipeline is not a stream\n // we must create a proxy stream so that pipeline(...)\n // always returns a stream which can be further\n // composed through `.pipe(stream)`.\n\n const pt = new PassThrough({\n objectMode: true\n })\n\n // Handle Promises/A+ spec, `then` could be a getter that throws on\n // second use.\n const then = (_ret2 = ret) === null || _ret2 === undefined ? undefined : _ret2.then\n if (typeof then === 'function') {\n finishCount++\n then.call(\n ret,\n (val) => {\n value = val\n if (val != null) {\n pt.write(val)\n }\n if (end) {\n pt.end()\n }\n process.nextTick(finish)\n },\n (err) => {\n pt.destroy(err)\n process.nextTick(finish, err)\n }\n )\n } else if (isIterable(ret, true)) {\n finishCount++\n pumpToNode(ret, pt, finish, {\n end\n })\n } else if (isReadableStream(ret) || isTransformStream(ret)) {\n const toRead = ret.readable || ret\n finishCount++\n pumpToNode(toRead, pt, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret)\n }\n ret = pt\n const { destroy, cleanup } = destroyer(ret, false, true)\n destroys.push(destroy)\n if (isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n }\n } else if (isNodeStream(stream)) {\n if (isReadableNodeStream(ret)) {\n finishCount += 2\n const cleanup = pipe(ret, stream, finish, {\n end\n })\n if (isReadable(stream) && isLastStream) {\n lastStreamCleanup.push(cleanup)\n }\n } else if (isTransformStream(ret) || isReadableStream(ret)) {\n const toRead = ret.readable || ret\n finishCount++\n pumpToNode(toRead, stream, finish, {\n end\n })\n } else if (isIterable(ret)) {\n finishCount++\n pumpToNode(ret, stream, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_ARG_TYPE(\n 'val',\n ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n ret\n )\n }\n ret = stream\n } else if (isWebStream(stream)) {\n if (isReadableNodeStream(ret)) {\n finishCount++\n pumpToWeb(makeAsyncIterable(ret), stream, finish, {\n end\n })\n } else if (isReadableStream(ret) || isIterable(ret)) {\n finishCount++\n pumpToWeb(ret, stream, finish, {\n end\n })\n } else if (isTransformStream(ret)) {\n finishCount++\n pumpToWeb(ret.readable, stream, finish, {\n end\n })\n } else {\n throw new ERR_INVALID_ARG_TYPE(\n 'val',\n ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n ret\n )\n }\n ret = stream\n } else {\n ret = Duplex.from(stream)\n }\n }\n if (\n (signal !== null && signal !== undefined && signal.aborted) ||\n (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted)\n ) {\n process.nextTick(abort)\n }\n return ret\n}\nfunction pipe(src, dst, finish, { end }) {\n let ended = false\n dst.on('close', () => {\n if (!ended) {\n // Finish if the destination closes before the source has completed.\n finish(new ERR_STREAM_PREMATURE_CLOSE())\n }\n })\n src.pipe(dst, {\n end: false\n }) // If end is true we already will have a listener to end dst.\n\n if (end) {\n // Compat. Before node v10.12.0 stdio used to throw an error so\n // pipe() did/does not end() stdio destinations.\n // Now they allow it but \"secretly\" don't close the underlying fd.\n\n function endFn() {\n ended = true\n dst.end()\n }\n if (isReadableFinished(src)) {\n // End the destination if the source has already ended.\n process.nextTick(endFn)\n } else {\n src.once('end', endFn)\n }\n } else {\n finish()\n }\n eos(\n src,\n {\n readable: true,\n writable: false\n },\n (err) => {\n const rState = src._readableState\n if (\n err &&\n err.code === 'ERR_STREAM_PREMATURE_CLOSE' &&\n rState &&\n rState.ended &&\n !rState.errored &&\n !rState.errorEmitted\n ) {\n // Some readable streams will emit 'close' before 'end'. However, since\n // this is on the readable side 'end' should still be emitted if the\n // stream has been ended and no error emitted. This should be allowed in\n // favor of backwards compatibility. Since the stream is piped to a\n // destination this should not result in any observable difference.\n // We don't need to check if this is a writable premature close since\n // eos will only fail with premature close on the reading side for\n // duplex streams.\n src.once('end', finish).once('error', finish)\n } else {\n finish(err)\n }\n }\n )\n return eos(\n dst,\n {\n readable: false,\n writable: true\n },\n finish\n )\n}\nmodule.exports = {\n pipelineImpl,\n pipeline\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n;('use strict')\nconst {\n ArrayPrototypeIndexOf,\n NumberIsInteger,\n NumberIsNaN,\n NumberParseInt,\n ObjectDefineProperties,\n ObjectKeys,\n ObjectSetPrototypeOf,\n Promise,\n SafeSet,\n SymbolAsyncDispose,\n SymbolAsyncIterator,\n Symbol\n} = require('../../ours/primordials')\nmodule.exports = Readable\nReadable.ReadableState = ReadableState\nconst { EventEmitter: EE } = require('events')\nconst { Stream, prependListener } = require('./legacy')\nconst { Buffer } = require('buffer')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst eos = require('./end-of-stream')\nlet debug = require('../../ours/util').debuglog('stream', (fn) => {\n debug = fn\n})\nconst BufferList = require('./buffer_list')\nconst destroyImpl = require('./destroy')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n aggregateTwoErrors,\n codes: {\n ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED,\n ERR_OUT_OF_RANGE,\n ERR_STREAM_PUSH_AFTER_EOF,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT\n },\n AbortError\n} = require('../../ours/errors')\nconst { validateObject } = require('../validators')\nconst kPaused = Symbol('kPaused')\nconst { StringDecoder } = require('string_decoder')\nconst from = require('./from')\nObjectSetPrototypeOf(Readable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Readable, Stream)\nconst nop = () => {}\nconst { errorOrDestroy } = destroyImpl\nconst kObjectMode = 1 << 0\nconst kEnded = 1 << 1\nconst kEndEmitted = 1 << 2\nconst kReading = 1 << 3\nconst kConstructed = 1 << 4\nconst kSync = 1 << 5\nconst kNeedReadable = 1 << 6\nconst kEmittedReadable = 1 << 7\nconst kReadableListening = 1 << 8\nconst kResumeScheduled = 1 << 9\nconst kErrorEmitted = 1 << 10\nconst kEmitClose = 1 << 11\nconst kAutoDestroy = 1 << 12\nconst kDestroyed = 1 << 13\nconst kClosed = 1 << 14\nconst kCloseEmitted = 1 << 15\nconst kMultiAwaitDrain = 1 << 16\nconst kReadingMore = 1 << 17\nconst kDataEmitted = 1 << 18\n\n// TODO(benjamingr) it is likely slower to do it this way than with free functions\nfunction makeBitMapDescriptor(bit) {\n return {\n enumerable: false,\n get() {\n return (this.state & bit) !== 0\n },\n set(value) {\n if (value) this.state |= bit\n else this.state &= ~bit\n }\n }\n}\nObjectDefineProperties(ReadableState.prototype, {\n objectMode: makeBitMapDescriptor(kObjectMode),\n ended: makeBitMapDescriptor(kEnded),\n endEmitted: makeBitMapDescriptor(kEndEmitted),\n reading: makeBitMapDescriptor(kReading),\n // Stream is still being constructed and cannot be\n // destroyed until construction finished or failed.\n // Async construction is opt in, therefore we start as\n // constructed.\n constructed: makeBitMapDescriptor(kConstructed),\n // A flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n sync: makeBitMapDescriptor(kSync),\n // Whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n needReadable: makeBitMapDescriptor(kNeedReadable),\n emittedReadable: makeBitMapDescriptor(kEmittedReadable),\n readableListening: makeBitMapDescriptor(kReadableListening),\n resumeScheduled: makeBitMapDescriptor(kResumeScheduled),\n // True if the error was already emitted and should not be thrown again.\n errorEmitted: makeBitMapDescriptor(kErrorEmitted),\n emitClose: makeBitMapDescriptor(kEmitClose),\n autoDestroy: makeBitMapDescriptor(kAutoDestroy),\n // Has it been destroyed.\n destroyed: makeBitMapDescriptor(kDestroyed),\n // Indicates whether the stream has finished destroying.\n closed: makeBitMapDescriptor(kClosed),\n // True if close has been emitted or would have been emitted\n // depending on emitClose.\n closeEmitted: makeBitMapDescriptor(kCloseEmitted),\n multiAwaitDrain: makeBitMapDescriptor(kMultiAwaitDrain),\n // If true, a maybeReadMore has been scheduled.\n readingMore: makeBitMapDescriptor(kReadingMore),\n dataEmitted: makeBitMapDescriptor(kDataEmitted)\n})\nfunction ReadableState(options, stream, isDuplex) {\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n // Bit map field to store ReadableState more effciently with 1 bit per field\n // instead of a V8 slot per field.\n this.state = kEmitClose | kAutoDestroy | kConstructed | kSync\n // Object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away.\n if (options && options.objectMode) this.state |= kObjectMode\n if (isDuplex && options && options.readableObjectMode) this.state |= kObjectMode\n\n // The point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = options\n ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex)\n : getDefaultHighWaterMark(false)\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift().\n this.buffer = new BufferList()\n this.length = 0\n this.pipes = []\n this.flowing = null\n this[kPaused] = null\n\n // Should close be emitted on destroy. Defaults to true.\n if (options && options.emitClose === false) this.state &= ~kEmitClose\n\n // Should .destroy() be called after 'end' (and potentially 'finish').\n if (options && options.autoDestroy === false) this.state &= ~kAutoDestroy\n\n // Indicates whether the stream has errored. When true no further\n // _read calls, 'data' or 'readable' events should occur. This is needed\n // since when autoDestroy is disabled we need a way to tell whether the\n // stream has failed.\n this.errored = null\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n // Ref the piped dest which we need a drain event on it\n // type: null | Writable | Set.\n this.awaitDrainWriters = null\n this.decoder = null\n this.encoding = null\n if (options && options.encoding) {\n this.decoder = new StringDecoder(options.encoding)\n this.encoding = options.encoding\n }\n}\nfunction Readable(options) {\n if (!(this instanceof Readable)) return new Readable(options)\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5.\n const isDuplex = this instanceof require('./duplex')\n this._readableState = new ReadableState(options, this, isDuplex)\n if (options) {\n if (typeof options.read === 'function') this._read = options.read\n if (typeof options.destroy === 'function') this._destroy = options.destroy\n if (typeof options.construct === 'function') this._construct = options.construct\n if (options.signal && !isDuplex) addAbortSignal(options.signal, this)\n }\n Stream.call(this, options)\n destroyImpl.construct(this, () => {\n if (this._readableState.needReadable) {\n maybeReadMore(this, this._readableState)\n }\n })\n}\nReadable.prototype.destroy = destroyImpl.destroy\nReadable.prototype._undestroy = destroyImpl.undestroy\nReadable.prototype._destroy = function (err, cb) {\n cb(err)\n}\nReadable.prototype[EE.captureRejectionSymbol] = function (err) {\n this.destroy(err)\n}\nReadable.prototype[SymbolAsyncDispose] = function () {\n let error\n if (!this.destroyed) {\n error = this.readableEnded ? null : new AbortError()\n this.destroy(error)\n }\n return new Promise((resolve, reject) => eos(this, (err) => (err && err !== error ? reject(err) : resolve(null))))\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n return readableAddChunk(this, chunk, encoding, false)\n}\n\n// Unshift should *always* be something directly out of read().\nReadable.prototype.unshift = function (chunk, encoding) {\n return readableAddChunk(this, chunk, encoding, true)\n}\nfunction readableAddChunk(stream, chunk, encoding, addToFront) {\n debug('readableAddChunk', chunk)\n const state = stream._readableState\n let err\n if ((state.state & kObjectMode) === 0) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding\n if (state.encoding !== encoding) {\n if (addToFront && state.encoding) {\n // When unshifting, if state.encoding is set, we have to save\n // the string in the BufferList with the state encoding.\n chunk = Buffer.from(chunk, encoding).toString(state.encoding)\n } else {\n chunk = Buffer.from(chunk, encoding)\n encoding = ''\n }\n }\n } else if (chunk instanceof Buffer) {\n encoding = ''\n } else if (Stream._isUint8Array(chunk)) {\n chunk = Stream._uint8ArrayToBuffer(chunk)\n encoding = ''\n } else if (chunk != null) {\n err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n }\n }\n if (err) {\n errorOrDestroy(stream, err)\n } else if (chunk === null) {\n state.state &= ~kReading\n onEofChunk(stream, state)\n } else if ((state.state & kObjectMode) !== 0 || (chunk && chunk.length > 0)) {\n if (addToFront) {\n if ((state.state & kEndEmitted) !== 0) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT())\n else if (state.destroyed || state.errored) return false\n else addChunk(stream, state, chunk, true)\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF())\n } else if (state.destroyed || state.errored) {\n return false\n } else {\n state.state &= ~kReading\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk)\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false)\n else maybeReadMore(stream, state)\n } else {\n addChunk(stream, state, chunk, false)\n }\n }\n } else if (!addToFront) {\n state.state &= ~kReading\n maybeReadMore(stream, state)\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0)\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) {\n // Use the guard to avoid creating `Set()` repeatedly\n // when we have multiple pipes.\n if ((state.state & kMultiAwaitDrain) !== 0) {\n state.awaitDrainWriters.clear()\n } else {\n state.awaitDrainWriters = null\n }\n state.dataEmitted = true\n stream.emit('data', chunk)\n } else {\n // Update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length\n if (addToFront) state.buffer.unshift(chunk)\n else state.buffer.push(chunk)\n if ((state.state & kNeedReadable) !== 0) emitReadable(stream)\n }\n maybeReadMore(stream, state)\n}\nReadable.prototype.isPaused = function () {\n const state = this._readableState\n return state[kPaused] === true || state.flowing === false\n}\n\n// Backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n const decoder = new StringDecoder(enc)\n this._readableState.decoder = decoder\n // If setEncoding(null), decoder.encoding equals utf8.\n this._readableState.encoding = this._readableState.decoder.encoding\n const buffer = this._readableState.buffer\n // Iterate over current buffer to convert already stored Buffers:\n let content = ''\n for (const data of buffer) {\n content += decoder.write(data)\n }\n buffer.clear()\n if (content !== '') buffer.push(content)\n this._readableState.length = content.length\n return this\n}\n\n// Don't raise the hwm > 1GB.\nconst MAX_HWM = 0x40000000\nfunction computeNewHighWaterMark(n) {\n if (n > MAX_HWM) {\n throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n)\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts.\n n--\n n |= n >>> 1\n n |= n >>> 2\n n |= n >>> 4\n n |= n >>> 8\n n |= n >>> 16\n n++\n }\n return n\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || (state.length === 0 && state.ended)) return 0\n if ((state.state & kObjectMode) !== 0) return 1\n if (NumberIsNaN(n)) {\n // Only flow one buffer at a time.\n if (state.flowing && state.length) return state.buffer.first().length\n return state.length\n }\n if (n <= state.length) return n\n return state.ended ? state.length : 0\n}\n\n// You can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n)\n // Same as parseInt(undefined, 10), however V8 7.3 performance regressed\n // in this scenario, so we are doing it manually.\n if (n === undefined) {\n n = NaN\n } else if (!NumberIsInteger(n)) {\n n = NumberParseInt(n, 10)\n }\n const state = this._readableState\n const nOrig = n\n\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n)\n if (n !== 0) state.state &= ~kEmittedReadable\n\n // If we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (\n n === 0 &&\n state.needReadable &&\n ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)\n ) {\n debug('read: emitReadable', state.length, state.ended)\n if (state.length === 0 && state.ended) endReadable(this)\n else emitReadable(this)\n return null\n }\n n = howMuchToRead(n, state)\n\n // If we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this)\n return null\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n let doRead = (state.state & kNeedReadable) !== 0\n debug('need readable', doRead)\n\n // If we currently have less than the highWaterMark, then also read some.\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true\n debug('length less than watermark', doRead)\n }\n\n // However, if we've ended, then there's no point, if we're already\n // reading, then it's unnecessary, if we're constructing we have to wait,\n // and if we're destroyed or errored, then it's not allowed,\n if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) {\n doRead = false\n debug('reading, ended or constructing', doRead)\n } else if (doRead) {\n debug('do read')\n state.state |= kReading | kSync\n // If the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.state |= kNeedReadable\n\n // Call internal read method\n try {\n this._read(state.highWaterMark)\n } catch (err) {\n errorOrDestroy(this, err)\n }\n state.state &= ~kSync\n\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state)\n }\n let ret\n if (n > 0) ret = fromList(n, state)\n else ret = null\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark\n n = 0\n } else {\n state.length -= n\n if (state.multiAwaitDrain) {\n state.awaitDrainWriters.clear()\n } else {\n state.awaitDrainWriters = null\n }\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this)\n }\n if (ret !== null && !state.errorEmitted && !state.closeEmitted) {\n state.dataEmitted = true\n this.emit('data', ret)\n }\n return ret\n}\nfunction onEofChunk(stream, state) {\n debug('onEofChunk')\n if (state.ended) return\n if (state.decoder) {\n const chunk = state.decoder.end()\n if (chunk && chunk.length) {\n state.buffer.push(chunk)\n state.length += state.objectMode ? 1 : chunk.length\n }\n }\n state.ended = true\n if (state.sync) {\n // If we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call.\n emitReadable(stream)\n } else {\n // Emit 'readable' now to make sure it gets picked up.\n state.needReadable = false\n state.emittedReadable = true\n // We have to emit readable now that we are EOF. Modules\n // in the ecosystem (e.g. dicer) rely on this event being sync.\n emitReadable_(stream)\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n const state = stream._readableState\n debug('emitReadable', state.needReadable, state.emittedReadable)\n state.needReadable = false\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing)\n state.emittedReadable = true\n process.nextTick(emitReadable_, stream)\n }\n}\nfunction emitReadable_(stream) {\n const state = stream._readableState\n debug('emitReadable_', state.destroyed, state.length, state.ended)\n if (!state.destroyed && !state.errored && (state.length || state.ended)) {\n stream.emit('readable')\n state.emittedReadable = false\n }\n\n // The stream needs another readable event if:\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark\n flow(stream)\n}\n\n// At this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore && state.constructed) {\n state.readingMore = true\n process.nextTick(maybeReadMore_, stream, state)\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (\n !state.reading &&\n !state.ended &&\n (state.length < state.highWaterMark || (state.flowing && state.length === 0))\n ) {\n const len = state.length\n debug('maybeReadMore read 0')\n stream.read(0)\n if (len === state.length)\n // Didn't get any data, stop spinning.\n break\n }\n state.readingMore = false\n}\n\n// Abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_read()')\n}\nReadable.prototype.pipe = function (dest, pipeOpts) {\n const src = this\n const state = this._readableState\n if (state.pipes.length === 1) {\n if (!state.multiAwaitDrain) {\n state.multiAwaitDrain = true\n state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : [])\n }\n }\n state.pipes.push(dest)\n debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts)\n const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr\n const endFn = doEnd ? onend : unpipe\n if (state.endEmitted) process.nextTick(endFn)\n else src.once('end', endFn)\n dest.on('unpipe', onunpipe)\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe')\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true\n cleanup()\n }\n }\n }\n function onend() {\n debug('onend')\n dest.end()\n }\n let ondrain\n let cleanedUp = false\n function cleanup() {\n debug('cleanup')\n // Cleanup event handlers once the pipe is broken.\n dest.removeListener('close', onclose)\n dest.removeListener('finish', onfinish)\n if (ondrain) {\n dest.removeListener('drain', ondrain)\n }\n dest.removeListener('error', onerror)\n dest.removeListener('unpipe', onunpipe)\n src.removeListener('end', onend)\n src.removeListener('end', unpipe)\n src.removeListener('data', ondata)\n cleanedUp = true\n\n // If the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain()\n }\n function pause() {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if (!cleanedUp) {\n if (state.pipes.length === 1 && state.pipes[0] === dest) {\n debug('false write response, pause', 0)\n state.awaitDrainWriters = dest\n state.multiAwaitDrain = false\n } else if (state.pipes.length > 1 && state.pipes.includes(dest)) {\n debug('false write response, pause', state.awaitDrainWriters.size)\n state.awaitDrainWriters.add(dest)\n }\n src.pause()\n }\n if (!ondrain) {\n // When the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n ondrain = pipeOnDrain(src, dest)\n dest.on('drain', ondrain)\n }\n }\n src.on('data', ondata)\n function ondata(chunk) {\n debug('ondata')\n const ret = dest.write(chunk)\n debug('dest.write', ret)\n if (ret === false) {\n pause()\n }\n }\n\n // If the dest has an error, then stop piping into it.\n // However, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er)\n unpipe()\n dest.removeListener('error', onerror)\n if (dest.listenerCount('error') === 0) {\n const s = dest._writableState || dest._readableState\n if (s && !s.errorEmitted) {\n // User incorrectly emitted 'error' directly on the stream.\n errorOrDestroy(dest, er)\n } else {\n dest.emit('error', er)\n }\n }\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror)\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish)\n unpipe()\n }\n dest.once('close', onclose)\n function onfinish() {\n debug('onfinish')\n dest.removeListener('close', onclose)\n unpipe()\n }\n dest.once('finish', onfinish)\n function unpipe() {\n debug('unpipe')\n src.unpipe(dest)\n }\n\n // Tell the dest that it's being piped to.\n dest.emit('pipe', src)\n\n // Start the flow if it hasn't been started already.\n\n if (dest.writableNeedDrain === true) {\n pause()\n } else if (!state.flowing) {\n debug('pipe resume')\n src.resume()\n }\n return dest\n}\nfunction pipeOnDrain(src, dest) {\n return function pipeOnDrainFunctionResult() {\n const state = src._readableState\n\n // `ondrain` will call directly,\n // `this` maybe not a reference to dest,\n // so we use the real dest here.\n if (state.awaitDrainWriters === dest) {\n debug('pipeOnDrain', 1)\n state.awaitDrainWriters = null\n } else if (state.multiAwaitDrain) {\n debug('pipeOnDrain', state.awaitDrainWriters.size)\n state.awaitDrainWriters.delete(dest)\n }\n if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) {\n src.resume()\n }\n }\n}\nReadable.prototype.unpipe = function (dest) {\n const state = this._readableState\n const unpipeInfo = {\n hasUnpiped: false\n }\n\n // If we're not piping anywhere, then do nothing.\n if (state.pipes.length === 0) return this\n if (!dest) {\n // remove all.\n const dests = state.pipes\n state.pipes = []\n this.pause()\n for (let i = 0; i < dests.length; i++)\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n })\n return this\n }\n\n // Try to find the right one.\n const index = ArrayPrototypeIndexOf(state.pipes, dest)\n if (index === -1) return this\n state.pipes.splice(index, 1)\n if (state.pipes.length === 0) this.pause()\n dest.emit('unpipe', this, unpipeInfo)\n return this\n}\n\n// Set up data events if they are asked for\n// Ensure readable listeners eventually get something.\nReadable.prototype.on = function (ev, fn) {\n const res = Stream.prototype.on.call(this, ev, fn)\n const state = this._readableState\n if (ev === 'data') {\n // Update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0\n\n // Try start flowing on next tick if stream isn't explicitly paused.\n if (state.flowing !== false) this.resume()\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true\n state.flowing = false\n state.emittedReadable = false\n debug('on readable', state.length, state.reading)\n if (state.length) {\n emitReadable(this)\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this)\n }\n }\n }\n return res\n}\nReadable.prototype.addListener = Readable.prototype.on\nReadable.prototype.removeListener = function (ev, fn) {\n const res = Stream.prototype.removeListener.call(this, ev, fn)\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this)\n }\n return res\n}\nReadable.prototype.off = Readable.prototype.removeListener\nReadable.prototype.removeAllListeners = function (ev) {\n const res = Stream.prototype.removeAllListeners.apply(this, arguments)\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this)\n }\n return res\n}\nfunction updateReadableListening(self) {\n const state = self._readableState\n state.readableListening = self.listenerCount('readable') > 0\n if (state.resumeScheduled && state[kPaused] === false) {\n // Flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true\n\n // Crude way to check if we should resume.\n } else if (self.listenerCount('data') > 0) {\n self.resume()\n } else if (!state.readableListening) {\n state.flowing = null\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0')\n self.read(0)\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n const state = this._readableState\n if (!state.flowing) {\n debug('resume')\n // We flow only if there is no one listening\n // for readable, but we still have to call\n // resume().\n state.flowing = !state.readableListening\n resume(this, state)\n }\n state[kPaused] = false\n return this\n}\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true\n process.nextTick(resume_, stream, state)\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading)\n if (!state.reading) {\n stream.read(0)\n }\n state.resumeScheduled = false\n stream.emit('resume')\n flow(stream)\n if (state.flowing && !state.reading) stream.read(0)\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing)\n if (this._readableState.flowing !== false) {\n debug('pause')\n this._readableState.flowing = false\n this.emit('pause')\n }\n this._readableState[kPaused] = true\n return this\n}\nfunction flow(stream) {\n const state = stream._readableState\n debug('flow', state.flowing)\n while (state.flowing && stream.read() !== null);\n}\n\n// Wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n let paused = false\n\n // TODO (ronag): Should this.destroy(err) emit\n // 'error' on the wrapped stream? Would require\n // a static factory method, e.g. Readable.wrap(stream).\n\n stream.on('data', (chunk) => {\n if (!this.push(chunk) && stream.pause) {\n paused = true\n stream.pause()\n }\n })\n stream.on('end', () => {\n this.push(null)\n })\n stream.on('error', (err) => {\n errorOrDestroy(this, err)\n })\n stream.on('close', () => {\n this.destroy()\n })\n stream.on('destroy', () => {\n this.destroy()\n })\n this._read = () => {\n if (paused && stream.resume) {\n paused = false\n stream.resume()\n }\n }\n\n // Proxy all the other methods. Important when wrapping filters and duplexes.\n const streamKeys = ObjectKeys(stream)\n for (let j = 1; j < streamKeys.length; j++) {\n const i = streamKeys[j]\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = stream[i].bind(stream)\n }\n }\n return this\n}\nReadable.prototype[SymbolAsyncIterator] = function () {\n return streamToAsyncIterator(this)\n}\nReadable.prototype.iterator = function (options) {\n if (options !== undefined) {\n validateObject(options, 'options')\n }\n return streamToAsyncIterator(this, options)\n}\nfunction streamToAsyncIterator(stream, options) {\n if (typeof stream.read !== 'function') {\n stream = Readable.wrap(stream, {\n objectMode: true\n })\n }\n const iter = createAsyncIterator(stream, options)\n iter.stream = stream\n return iter\n}\nasync function* createAsyncIterator(stream, options) {\n let callback = nop\n function next(resolve) {\n if (this === stream) {\n callback()\n callback = nop\n } else {\n callback = resolve\n }\n }\n stream.on('readable', next)\n let error\n const cleanup = eos(\n stream,\n {\n writable: false\n },\n (err) => {\n error = err ? aggregateTwoErrors(error, err) : null\n callback()\n callback = nop\n }\n )\n try {\n while (true) {\n const chunk = stream.destroyed ? null : stream.read()\n if (chunk !== null) {\n yield chunk\n } else if (error) {\n throw error\n } else if (error === null) {\n return\n } else {\n await new Promise(next)\n }\n }\n } catch (err) {\n error = aggregateTwoErrors(error, err)\n throw error\n } finally {\n if (\n (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) &&\n (error === undefined || stream._readableState.autoDestroy)\n ) {\n destroyImpl.destroyer(stream, null)\n } else {\n stream.off('readable', next)\n cleanup()\n }\n }\n}\n\n// Making it explicit these properties are not enumerable\n// because otherwise some prototype manipulation in\n// userland will fail.\nObjectDefineProperties(Readable.prototype, {\n readable: {\n __proto__: null,\n get() {\n const r = this._readableState\n // r.readable === false means that this is part of a Duplex stream\n // where the readable side was disabled upon construction.\n // Compat. The user might manually disable readable side through\n // deprecated setter.\n return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted\n },\n set(val) {\n // Backwards compat.\n if (this._readableState) {\n this._readableState.readable = !!val\n }\n }\n },\n readableDidRead: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.dataEmitted\n }\n },\n readableAborted: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return !!(\n this._readableState.readable !== false &&\n (this._readableState.destroyed || this._readableState.errored) &&\n !this._readableState.endEmitted\n )\n }\n },\n readableHighWaterMark: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark\n }\n },\n readableBuffer: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState && this._readableState.buffer\n }\n },\n readableFlowing: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return this._readableState.flowing\n },\n set: function (state) {\n if (this._readableState) {\n this._readableState.flowing = state\n }\n }\n },\n readableLength: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState.length\n }\n },\n readableObjectMode: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.objectMode : false\n }\n },\n readableEncoding: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.encoding : null\n }\n },\n errored: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.errored : null\n }\n },\n closed: {\n __proto__: null,\n get() {\n return this._readableState ? this._readableState.closed : false\n }\n },\n destroyed: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.destroyed : false\n },\n set(value) {\n // We ignore the value if the stream\n // has not been initialized yet.\n if (!this._readableState) {\n return\n }\n\n // Backward compatibility, the user is explicitly\n // managing destroyed.\n this._readableState.destroyed = value\n }\n },\n readableEnded: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._readableState ? this._readableState.endEmitted : false\n }\n }\n})\nObjectDefineProperties(ReadableState.prototype, {\n // Legacy getter for `pipesCount`.\n pipesCount: {\n __proto__: null,\n get() {\n return this.pipes.length\n }\n },\n // Legacy property for `paused`.\n paused: {\n __proto__: null,\n get() {\n return this[kPaused] !== false\n },\n set(value) {\n this[kPaused] = !!value\n }\n }\n})\n\n// Exposed for testing purposes only.\nReadable._fromList = fromList\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered.\n if (state.length === 0) return null\n let ret\n if (state.objectMode) ret = state.buffer.shift()\n else if (!n || n >= state.length) {\n // Read it all, truncate the list.\n if (state.decoder) ret = state.buffer.join('')\n else if (state.buffer.length === 1) ret = state.buffer.first()\n else ret = state.buffer.concat(state.length)\n state.buffer.clear()\n } else {\n // read part of list.\n ret = state.buffer.consume(n, state.decoder)\n }\n return ret\n}\nfunction endReadable(stream) {\n const state = stream._readableState\n debug('endReadable', state.endEmitted)\n if (!state.endEmitted) {\n state.ended = true\n process.nextTick(endReadableNT, state, stream)\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length)\n\n // Check that we didn't get one last unshift.\n if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) {\n state.endEmitted = true\n stream.emit('end')\n if (stream.writable && stream.allowHalfOpen === false) {\n process.nextTick(endWritableNT, stream)\n } else if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well.\n const wState = stream._writableState\n const autoDestroy =\n !wState ||\n (wState.autoDestroy &&\n // We don't expect the writable to ever 'finish'\n // if writable is explicitly set to false.\n (wState.finished || wState.writable === false))\n if (autoDestroy) {\n stream.destroy()\n }\n }\n }\n}\nfunction endWritableNT(stream) {\n const writable = stream.writable && !stream.writableEnded && !stream.destroyed\n if (writable) {\n stream.end()\n }\n}\nReadable.from = function (iterable, opts) {\n return from(Readable, iterable, opts)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nReadable.fromWeb = function (readableStream, options) {\n return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options)\n}\nReadable.toWeb = function (streamReadable, options) {\n return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options)\n}\nReadable.wrap = function (src, options) {\n var _ref, _src$readableObjectMo\n return new Readable({\n objectMode:\n (_ref =\n (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined\n ? _src$readableObjectMo\n : src.objectMode) !== null && _ref !== undefined\n ? _ref\n : true,\n ...options,\n destroy(err, callback) {\n destroyImpl.destroyer(src, err)\n callback(err)\n }\n }).wrap(src)\n}\n","'use strict'\n\nconst { MathFloor, NumberIsInteger } = require('../../ours/primordials')\nconst { validateInteger } = require('../validators')\nconst { ERR_INVALID_ARG_VALUE } = require('../../ours/errors').codes\nlet defaultHighWaterMarkBytes = 16 * 1024\nlet defaultHighWaterMarkObjectMode = 16\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null\n}\nfunction getDefaultHighWaterMark(objectMode) {\n return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes\n}\nfunction setDefaultHighWaterMark(objectMode, value) {\n validateInteger(value, 'value', 0)\n if (objectMode) {\n defaultHighWaterMarkObjectMode = value\n } else {\n defaultHighWaterMarkBytes = value\n }\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n const hwm = highWaterMarkFrom(options, isDuplex, duplexKey)\n if (hwm != null) {\n if (!NumberIsInteger(hwm) || hwm < 0) {\n const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'\n throw new ERR_INVALID_ARG_VALUE(name, hwm)\n }\n return MathFloor(hwm)\n }\n\n // Default value\n return getDefaultHighWaterMark(state.objectMode)\n}\nmodule.exports = {\n getHighWaterMark,\n getDefaultHighWaterMark,\n setDefaultHighWaterMark\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf, Symbol } = require('../../ours/primordials')\nmodule.exports = Transform\nconst { ERR_METHOD_NOT_IMPLEMENTED } = require('../../ours/errors').codes\nconst Duplex = require('./duplex')\nconst { getHighWaterMark } = require('./state')\nObjectSetPrototypeOf(Transform.prototype, Duplex.prototype)\nObjectSetPrototypeOf(Transform, Duplex)\nconst kCallback = Symbol('kCallback')\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options)\n\n // TODO (ronag): This should preferably always be\n // applied but would be semver-major. Or even better;\n // make Transform a Readable with the Writable interface.\n const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null\n if (readableHighWaterMark === 0) {\n // A Duplex will buffer both on the writable and readable side while\n // a Transform just wants to buffer hwm number of elements. To avoid\n // buffering twice we disable buffering on the writable side.\n options = {\n ...options,\n highWaterMark: null,\n readableHighWaterMark,\n // TODO (ronag): 0 is not optimal since we have\n // a \"bug\" where we check needDrain before calling _write and not after.\n // Refs: https://github.com/nodejs/node/pull/32887\n // Refs: https://github.com/nodejs/node/pull/35941\n writableHighWaterMark: options.writableHighWaterMark || 0\n }\n }\n Duplex.call(this, options)\n\n // We have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false\n this[kCallback] = null\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform\n if (typeof options.flush === 'function') this._flush = options.flush\n }\n\n // When the writable side finishes, then flush out anything remaining.\n // Backwards compat. Some Transform streams incorrectly implement _final\n // instead of or in addition to _flush. By using 'prefinish' instead of\n // implementing _final we continue supporting this unfortunate use case.\n this.on('prefinish', prefinish)\n}\nfunction final(cb) {\n if (typeof this._flush === 'function' && !this.destroyed) {\n this._flush((er, data) => {\n if (er) {\n if (cb) {\n cb(er)\n } else {\n this.destroy(er)\n }\n return\n }\n if (data != null) {\n this.push(data)\n }\n this.push(null)\n if (cb) {\n cb()\n }\n })\n } else {\n this.push(null)\n if (cb) {\n cb()\n }\n }\n}\nfunction prefinish() {\n if (this._final !== final) {\n final.call(this)\n }\n}\nTransform.prototype._final = final\nTransform.prototype._transform = function (chunk, encoding, callback) {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()')\n}\nTransform.prototype._write = function (chunk, encoding, callback) {\n const rState = this._readableState\n const wState = this._writableState\n const length = rState.length\n this._transform(chunk, encoding, (err, val) => {\n if (err) {\n callback(err)\n return\n }\n if (val != null) {\n this.push(val)\n }\n if (\n wState.ended ||\n // Backwards compat.\n length === rState.length ||\n // Backwards compat.\n rState.length < rState.highWaterMark\n ) {\n callback()\n } else {\n this[kCallback] = callback\n }\n })\n}\nTransform.prototype._read = function () {\n if (this[kCallback]) {\n const callback = this[kCallback]\n this[kCallback] = null\n callback()\n }\n}\n","'use strict'\n\nconst { SymbolAsyncIterator, SymbolIterator, SymbolFor } = require('../../ours/primordials')\n\n// We need to use SymbolFor to make these globally available\n// for interopt with readable-stream, i.e. readable-stream\n// and node core needs to be able to read/write private state\n// from each other for proper interoperability.\nconst kIsDestroyed = SymbolFor('nodejs.stream.destroyed')\nconst kIsErrored = SymbolFor('nodejs.stream.errored')\nconst kIsReadable = SymbolFor('nodejs.stream.readable')\nconst kIsWritable = SymbolFor('nodejs.stream.writable')\nconst kIsDisturbed = SymbolFor('nodejs.stream.disturbed')\nconst kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise')\nconst kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction')\nfunction isReadableNodeStream(obj, strict = false) {\n var _obj$_readableState\n return !!(\n (\n obj &&\n typeof obj.pipe === 'function' &&\n typeof obj.on === 'function' &&\n (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) &&\n (!obj._writableState ||\n ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined\n ? undefined\n : _obj$_readableState.readable) !== false) &&\n // Duplex\n (!obj._writableState || obj._readableState)\n ) // Writable has .pipe.\n )\n}\n\nfunction isWritableNodeStream(obj) {\n var _obj$_writableState\n return !!(\n (\n obj &&\n typeof obj.write === 'function' &&\n typeof obj.on === 'function' &&\n (!obj._readableState ||\n ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined\n ? undefined\n : _obj$_writableState.writable) !== false)\n ) // Duplex\n )\n}\n\nfunction isDuplexNodeStream(obj) {\n return !!(\n obj &&\n typeof obj.pipe === 'function' &&\n obj._readableState &&\n typeof obj.on === 'function' &&\n typeof obj.write === 'function'\n )\n}\nfunction isNodeStream(obj) {\n return (\n obj &&\n (obj._readableState ||\n obj._writableState ||\n (typeof obj.write === 'function' && typeof obj.on === 'function') ||\n (typeof obj.pipe === 'function' && typeof obj.on === 'function'))\n )\n}\nfunction isReadableStream(obj) {\n return !!(\n obj &&\n !isNodeStream(obj) &&\n typeof obj.pipeThrough === 'function' &&\n typeof obj.getReader === 'function' &&\n typeof obj.cancel === 'function'\n )\n}\nfunction isWritableStream(obj) {\n return !!(obj && !isNodeStream(obj) && typeof obj.getWriter === 'function' && typeof obj.abort === 'function')\n}\nfunction isTransformStream(obj) {\n return !!(obj && !isNodeStream(obj) && typeof obj.readable === 'object' && typeof obj.writable === 'object')\n}\nfunction isWebStream(obj) {\n return isReadableStream(obj) || isWritableStream(obj) || isTransformStream(obj)\n}\nfunction isIterable(obj, isAsync) {\n if (obj == null) return false\n if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function'\n if (isAsync === false) return typeof obj[SymbolIterator] === 'function'\n return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function'\n}\nfunction isDestroyed(stream) {\n if (!isNodeStream(stream)) return null\n const wState = stream._writableState\n const rState = stream._readableState\n const state = wState || rState\n return !!(stream.destroyed || stream[kIsDestroyed] || (state !== null && state !== undefined && state.destroyed))\n}\n\n// Have been end():d.\nfunction isWritableEnded(stream) {\n if (!isWritableNodeStream(stream)) return null\n if (stream.writableEnded === true) return true\n const wState = stream._writableState\n if (wState !== null && wState !== undefined && wState.errored) return false\n if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null\n return wState.ended\n}\n\n// Have emitted 'finish'.\nfunction isWritableFinished(stream, strict) {\n if (!isWritableNodeStream(stream)) return null\n if (stream.writableFinished === true) return true\n const wState = stream._writableState\n if (wState !== null && wState !== undefined && wState.errored) return false\n if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null\n return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0))\n}\n\n// Have been push(null):d.\nfunction isReadableEnded(stream) {\n if (!isReadableNodeStream(stream)) return null\n if (stream.readableEnded === true) return true\n const rState = stream._readableState\n if (!rState || rState.errored) return false\n if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null\n return rState.ended\n}\n\n// Have emitted 'end'.\nfunction isReadableFinished(stream, strict) {\n if (!isReadableNodeStream(stream)) return null\n const rState = stream._readableState\n if (rState !== null && rState !== undefined && rState.errored) return false\n if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null\n return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0))\n}\nfunction isReadable(stream) {\n if (stream && stream[kIsReadable] != null) return stream[kIsReadable]\n if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null\n if (isDestroyed(stream)) return false\n return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream)\n}\nfunction isWritable(stream) {\n if (stream && stream[kIsWritable] != null) return stream[kIsWritable]\n if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null\n if (isDestroyed(stream)) return false\n return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream)\n}\nfunction isFinished(stream, opts) {\n if (!isNodeStream(stream)) {\n return null\n }\n if (isDestroyed(stream)) {\n return true\n }\n if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) {\n return false\n }\n if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) {\n return false\n }\n return true\n}\nfunction isWritableErrored(stream) {\n var _stream$_writableStat, _stream$_writableStat2\n if (!isNodeStream(stream)) {\n return null\n }\n if (stream.writableErrored) {\n return stream.writableErrored\n }\n return (_stream$_writableStat =\n (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined\n ? undefined\n : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined\n ? _stream$_writableStat\n : null\n}\nfunction isReadableErrored(stream) {\n var _stream$_readableStat, _stream$_readableStat2\n if (!isNodeStream(stream)) {\n return null\n }\n if (stream.readableErrored) {\n return stream.readableErrored\n }\n return (_stream$_readableStat =\n (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined\n ? undefined\n : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined\n ? _stream$_readableStat\n : null\n}\nfunction isClosed(stream) {\n if (!isNodeStream(stream)) {\n return null\n }\n if (typeof stream.closed === 'boolean') {\n return stream.closed\n }\n const wState = stream._writableState\n const rState = stream._readableState\n if (\n typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' ||\n typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean'\n ) {\n return (\n (wState === null || wState === undefined ? undefined : wState.closed) ||\n (rState === null || rState === undefined ? undefined : rState.closed)\n )\n }\n if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) {\n return stream._closed\n }\n return null\n}\nfunction isOutgoingMessage(stream) {\n return (\n typeof stream._closed === 'boolean' &&\n typeof stream._defaultKeepAlive === 'boolean' &&\n typeof stream._removedConnection === 'boolean' &&\n typeof stream._removedContLen === 'boolean'\n )\n}\nfunction isServerResponse(stream) {\n return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream)\n}\nfunction isServerRequest(stream) {\n var _stream$req\n return (\n typeof stream._consuming === 'boolean' &&\n typeof stream._dumped === 'boolean' &&\n ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) ===\n undefined\n )\n}\nfunction willEmitClose(stream) {\n if (!isNodeStream(stream)) return null\n const wState = stream._writableState\n const rState = stream._readableState\n const state = wState || rState\n return (\n (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false)\n )\n}\nfunction isDisturbed(stream) {\n var _stream$kIsDisturbed\n return !!(\n stream &&\n ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined\n ? _stream$kIsDisturbed\n : stream.readableDidRead || stream.readableAborted)\n )\n}\nfunction isErrored(stream) {\n var _ref,\n _ref2,\n _ref3,\n _ref4,\n _ref5,\n _stream$kIsErrored,\n _stream$_readableStat3,\n _stream$_writableStat3,\n _stream$_readableStat4,\n _stream$_writableStat4\n return !!(\n stream &&\n ((_ref =\n (_ref2 =\n (_ref3 =\n (_ref4 =\n (_ref5 =\n (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined\n ? _stream$kIsErrored\n : stream.readableErrored) !== null && _ref5 !== undefined\n ? _ref5\n : stream.writableErrored) !== null && _ref4 !== undefined\n ? _ref4\n : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined\n ? undefined\n : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined\n ? _ref3\n : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined\n ? undefined\n : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined\n ? _ref2\n : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined\n ? undefined\n : _stream$_readableStat4.errored) !== null && _ref !== undefined\n ? _ref\n : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined\n ? undefined\n : _stream$_writableStat4.errored)\n )\n}\nmodule.exports = {\n isDestroyed,\n kIsDestroyed,\n isDisturbed,\n kIsDisturbed,\n isErrored,\n kIsErrored,\n isReadable,\n kIsReadable,\n kIsClosedPromise,\n kControllerErrorFunction,\n kIsWritable,\n isClosed,\n isDuplexNodeStream,\n isFinished,\n isIterable,\n isReadableNodeStream,\n isReadableStream,\n isReadableEnded,\n isReadableFinished,\n isReadableErrored,\n isNodeStream,\n isWebStream,\n isWritable,\n isWritableNodeStream,\n isWritableStream,\n isWritableEnded,\n isWritableFinished,\n isWritableErrored,\n isServerRequest,\n isServerResponse,\n willEmitClose,\n isTransformStream\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n;('use strict')\nconst {\n ArrayPrototypeSlice,\n Error,\n FunctionPrototypeSymbolHasInstance,\n ObjectDefineProperty,\n ObjectDefineProperties,\n ObjectSetPrototypeOf,\n StringPrototypeToLowerCase,\n Symbol,\n SymbolHasInstance\n} = require('../../ours/primordials')\nmodule.exports = Writable\nWritable.WritableState = WritableState\nconst { EventEmitter: EE } = require('events')\nconst Stream = require('./legacy').Stream\nconst { Buffer } = require('buffer')\nconst destroyImpl = require('./destroy')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED,\n ERR_STREAM_ALREADY_FINISHED,\n ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING\n} = require('../../ours/errors').codes\nconst { errorOrDestroy } = destroyImpl\nObjectSetPrototypeOf(Writable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Writable, Stream)\nfunction nop() {}\nconst kOnFinished = Symbol('kOnFinished')\nfunction WritableState(options, stream, isDuplex) {\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n // Object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!(options && options.objectMode)\n if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode)\n\n // The point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write().\n this.highWaterMark = options\n ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex)\n : getDefaultHighWaterMark(false)\n\n // if _final has been called.\n this.finalCalled = false\n\n // drain event flag.\n this.needDrain = false\n // At the start of calling end()\n this.ending = false\n // When end() has been called, and returned.\n this.ended = false\n // When 'finish' is emitted.\n this.finished = false\n\n // Has it been destroyed\n this.destroyed = false\n\n // Should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n const noDecode = !!(options && options.decodeStrings === false)\n this.decodeStrings = !noDecode\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n // Not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0\n\n // A flag to see when we're in the middle of a write.\n this.writing = false\n\n // When true all writes will be buffered until .uncork() call.\n this.corked = 0\n\n // A flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true\n\n // A flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false\n\n // The callback that's passed to _write(chunk, cb).\n this.onwrite = onwrite.bind(undefined, stream)\n\n // The callback that the user supplies to write(chunk, encoding, cb).\n this.writecb = null\n\n // The amount that is being written when _write is called.\n this.writelen = 0\n\n // Storage for data passed to the afterWrite() callback in case of\n // synchronous _write() completion.\n this.afterWriteTickInfo = null\n resetBuffer(this)\n\n // Number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted.\n this.pendingcb = 0\n\n // Stream is still being constructed and cannot be\n // destroyed until construction finished or failed.\n // Async construction is opt in, therefore we start as\n // constructed.\n this.constructed = true\n\n // Emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams.\n this.prefinished = false\n\n // True if the error was already emitted and should not be thrown again.\n this.errorEmitted = false\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = !options || options.emitClose !== false\n\n // Should .destroy() be called after 'finish' (and potentially 'end').\n this.autoDestroy = !options || options.autoDestroy !== false\n\n // Indicates whether the stream has errored. When true all write() calls\n // should return false. This is needed since when autoDestroy\n // is disabled we need a way to tell whether the stream has failed.\n this.errored = null\n\n // Indicates whether the stream has finished destroying.\n this.closed = false\n\n // True if close has been emitted or would have been emitted\n // depending on emitClose.\n this.closeEmitted = false\n this[kOnFinished] = []\n}\nfunction resetBuffer(state) {\n state.buffered = []\n state.bufferedIndex = 0\n state.allBuffers = true\n state.allNoop = true\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n return ArrayPrototypeSlice(this.buffered, this.bufferedIndex)\n}\nObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', {\n __proto__: null,\n get() {\n return this.buffered.length - this.bufferedIndex\n }\n})\nfunction Writable(options) {\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5.\n const isDuplex = this instanceof require('./duplex')\n if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options)\n this._writableState = new WritableState(options, this, isDuplex)\n if (options) {\n if (typeof options.write === 'function') this._write = options.write\n if (typeof options.writev === 'function') this._writev = options.writev\n if (typeof options.destroy === 'function') this._destroy = options.destroy\n if (typeof options.final === 'function') this._final = options.final\n if (typeof options.construct === 'function') this._construct = options.construct\n if (options.signal) addAbortSignal(options.signal, this)\n }\n Stream.call(this, options)\n destroyImpl.construct(this, () => {\n const state = this._writableState\n if (!state.writing) {\n clearBuffer(this, state)\n }\n finishMaybe(this, state)\n })\n}\nObjectDefineProperty(Writable, SymbolHasInstance, {\n __proto__: null,\n value: function (object) {\n if (FunctionPrototypeSymbolHasInstance(this, object)) return true\n if (this !== Writable) return false\n return object && object._writableState instanceof WritableState\n }\n})\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE())\n}\nfunction _write(stream, chunk, encoding, cb) {\n const state = stream._writableState\n if (typeof encoding === 'function') {\n cb = encoding\n encoding = state.defaultEncoding\n } else {\n if (!encoding) encoding = state.defaultEncoding\n else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n if (typeof cb !== 'function') cb = nop\n }\n if (chunk === null) {\n throw new ERR_STREAM_NULL_VALUES()\n } else if (!state.objectMode) {\n if (typeof chunk === 'string') {\n if (state.decodeStrings !== false) {\n chunk = Buffer.from(chunk, encoding)\n encoding = 'buffer'\n }\n } else if (chunk instanceof Buffer) {\n encoding = 'buffer'\n } else if (Stream._isUint8Array(chunk)) {\n chunk = Stream._uint8ArrayToBuffer(chunk)\n encoding = 'buffer'\n } else {\n throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n }\n }\n let err\n if (state.ending) {\n err = new ERR_STREAM_WRITE_AFTER_END()\n } else if (state.destroyed) {\n err = new ERR_STREAM_DESTROYED('write')\n }\n if (err) {\n process.nextTick(cb, err)\n errorOrDestroy(stream, err, true)\n return err\n }\n state.pendingcb++\n return writeOrBuffer(stream, state, chunk, encoding, cb)\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n return _write(this, chunk, encoding, cb) === true\n}\nWritable.prototype.cork = function () {\n this._writableState.corked++\n}\nWritable.prototype.uncork = function () {\n const state = this._writableState\n if (state.corked) {\n state.corked--\n if (!state.writing) clearBuffer(this, state)\n }\n}\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding)\n if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n this._writableState.defaultEncoding = encoding\n return this\n}\n\n// If we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, callback) {\n const len = state.objectMode ? 1 : chunk.length\n state.length += len\n\n // stream._write resets state.length\n const ret = state.length < state.highWaterMark\n // We must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true\n if (state.writing || state.corked || state.errored || !state.constructed) {\n state.buffered.push({\n chunk,\n encoding,\n callback\n })\n if (state.allBuffers && encoding !== 'buffer') {\n state.allBuffers = false\n }\n if (state.allNoop && callback !== nop) {\n state.allNoop = false\n }\n } else {\n state.writelen = len\n state.writecb = callback\n state.writing = true\n state.sync = true\n stream._write(chunk, encoding, state.onwrite)\n state.sync = false\n }\n\n // Return false if errored or destroyed in order to break\n // any synchronous while(stream.write(data)) loops.\n return ret && !state.errored && !state.destroyed\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len\n state.writecb = cb\n state.writing = true\n state.sync = true\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'))\n else if (writev) stream._writev(chunk, state.onwrite)\n else stream._write(chunk, encoding, state.onwrite)\n state.sync = false\n}\nfunction onwriteError(stream, state, er, cb) {\n --state.pendingcb\n cb(er)\n // Ensure callbacks are invoked even when autoDestroy is\n // not enabled. Passing `er` here doesn't make sense since\n // it's related to one specific write, not to the buffered\n // writes.\n errorBuffer(state)\n // This can emit error, but error must always follow cb.\n errorOrDestroy(stream, er)\n}\nfunction onwrite(stream, er) {\n const state = stream._writableState\n const sync = state.sync\n const cb = state.writecb\n if (typeof cb !== 'function') {\n errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK())\n return\n }\n state.writing = false\n state.writecb = null\n state.length -= state.writelen\n state.writelen = 0\n if (er) {\n // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n er.stack // eslint-disable-line no-unused-expressions\n\n if (!state.errored) {\n state.errored = er\n }\n\n // In case of duplex streams we need to notify the readable side of the\n // error.\n if (stream._readableState && !stream._readableState.errored) {\n stream._readableState.errored = er\n }\n if (sync) {\n process.nextTick(onwriteError, stream, state, er, cb)\n } else {\n onwriteError(stream, state, er, cb)\n }\n } else {\n if (state.buffered.length > state.bufferedIndex) {\n clearBuffer(stream, state)\n }\n if (sync) {\n // It is a common case that the callback passed to .write() is always\n // the same. In that case, we do not schedule a new nextTick(), but\n // rather just increase a counter, to improve performance and avoid\n // memory allocations.\n if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) {\n state.afterWriteTickInfo.count++\n } else {\n state.afterWriteTickInfo = {\n count: 1,\n cb,\n stream,\n state\n }\n process.nextTick(afterWriteTick, state.afterWriteTickInfo)\n }\n } else {\n afterWrite(stream, state, 1, cb)\n }\n }\n}\nfunction afterWriteTick({ stream, state, count, cb }) {\n state.afterWriteTickInfo = null\n return afterWrite(stream, state, count, cb)\n}\nfunction afterWrite(stream, state, count, cb) {\n const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain\n if (needDrain) {\n state.needDrain = false\n stream.emit('drain')\n }\n while (count-- > 0) {\n state.pendingcb--\n cb()\n }\n if (state.destroyed) {\n errorBuffer(state)\n }\n finishMaybe(stream, state)\n}\n\n// If there's something in the buffer waiting, then invoke callbacks.\nfunction errorBuffer(state) {\n if (state.writing) {\n return\n }\n for (let n = state.bufferedIndex; n < state.buffered.length; ++n) {\n var _state$errored\n const { chunk, callback } = state.buffered[n]\n const len = state.objectMode ? 1 : chunk.length\n state.length -= len\n callback(\n (_state$errored = state.errored) !== null && _state$errored !== undefined\n ? _state$errored\n : new ERR_STREAM_DESTROYED('write')\n )\n }\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n var _state$errored2\n onfinishCallbacks[i](\n (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined\n ? _state$errored2\n : new ERR_STREAM_DESTROYED('end')\n )\n }\n resetBuffer(state)\n}\n\n// If there's something in the buffer waiting, then process it.\nfunction clearBuffer(stream, state) {\n if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) {\n return\n }\n const { buffered, bufferedIndex, objectMode } = state\n const bufferedLength = buffered.length - bufferedIndex\n if (!bufferedLength) {\n return\n }\n let i = bufferedIndex\n state.bufferProcessing = true\n if (bufferedLength > 1 && stream._writev) {\n state.pendingcb -= bufferedLength - 1\n const callback = state.allNoop\n ? nop\n : (err) => {\n for (let n = i; n < buffered.length; ++n) {\n buffered[n].callback(err)\n }\n }\n // Make a copy of `buffered` if it's going to be used by `callback` above,\n // since `doWrite` will mutate the array.\n const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i)\n chunks.allBuffers = state.allBuffers\n doWrite(stream, state, true, state.length, chunks, '', callback)\n resetBuffer(state)\n } else {\n do {\n const { chunk, encoding, callback } = buffered[i]\n buffered[i++] = null\n const len = objectMode ? 1 : chunk.length\n doWrite(stream, state, false, len, chunk, encoding, callback)\n } while (i < buffered.length && !state.writing)\n if (i === buffered.length) {\n resetBuffer(state)\n } else if (i > 256) {\n buffered.splice(0, i)\n state.bufferedIndex = 0\n } else {\n state.bufferedIndex = i\n }\n }\n state.bufferProcessing = false\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n if (this._writev) {\n this._writev(\n [\n {\n chunk,\n encoding\n }\n ],\n cb\n )\n } else {\n throw new ERR_METHOD_NOT_IMPLEMENTED('_write()')\n }\n}\nWritable.prototype._writev = null\nWritable.prototype.end = function (chunk, encoding, cb) {\n const state = this._writableState\n if (typeof chunk === 'function') {\n cb = chunk\n chunk = null\n encoding = null\n } else if (typeof encoding === 'function') {\n cb = encoding\n encoding = null\n }\n let err\n if (chunk !== null && chunk !== undefined) {\n const ret = _write(this, chunk, encoding)\n if (ret instanceof Error) {\n err = ret\n }\n }\n\n // .end() fully uncorks.\n if (state.corked) {\n state.corked = 1\n this.uncork()\n }\n if (err) {\n // Do nothing...\n } else if (!state.errored && !state.ending) {\n // This is forgiving in terms of unnecessary calls to end() and can hide\n // logic errors. However, usually such errors are harmless and causing a\n // hard error can be disproportionately destructive. It is not always\n // trivial for the user to determine whether end() needs to be called\n // or not.\n\n state.ending = true\n finishMaybe(this, state, true)\n state.ended = true\n } else if (state.finished) {\n err = new ERR_STREAM_ALREADY_FINISHED('end')\n } else if (state.destroyed) {\n err = new ERR_STREAM_DESTROYED('end')\n }\n if (typeof cb === 'function') {\n if (err || state.finished) {\n process.nextTick(cb, err)\n } else {\n state[kOnFinished].push(cb)\n }\n }\n return this\n}\nfunction needFinish(state) {\n return (\n state.ending &&\n !state.destroyed &&\n state.constructed &&\n state.length === 0 &&\n !state.errored &&\n state.buffered.length === 0 &&\n !state.finished &&\n !state.writing &&\n !state.errorEmitted &&\n !state.closeEmitted\n )\n}\nfunction callFinal(stream, state) {\n let called = false\n function onFinish(err) {\n if (called) {\n errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK())\n return\n }\n called = true\n state.pendingcb--\n if (err) {\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n onfinishCallbacks[i](err)\n }\n errorOrDestroy(stream, err, state.sync)\n } else if (needFinish(state)) {\n state.prefinished = true\n stream.emit('prefinish')\n // Backwards compat. Don't check state.sync here.\n // Some streams assume 'finish' will be emitted\n // asynchronously relative to _final callback.\n state.pendingcb++\n process.nextTick(finish, stream, state)\n }\n }\n state.sync = true\n state.pendingcb++\n try {\n stream._final(onFinish)\n } catch (err) {\n onFinish(err)\n }\n state.sync = false\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.finalCalled = true\n callFinal(stream, state)\n } else {\n state.prefinished = true\n stream.emit('prefinish')\n }\n }\n}\nfunction finishMaybe(stream, state, sync) {\n if (needFinish(state)) {\n prefinish(stream, state)\n if (state.pendingcb === 0) {\n if (sync) {\n state.pendingcb++\n process.nextTick(\n (stream, state) => {\n if (needFinish(state)) {\n finish(stream, state)\n } else {\n state.pendingcb--\n }\n },\n stream,\n state\n )\n } else if (needFinish(state)) {\n state.pendingcb++\n finish(stream, state)\n }\n }\n }\n}\nfunction finish(stream, state) {\n state.pendingcb--\n state.finished = true\n const onfinishCallbacks = state[kOnFinished].splice(0)\n for (let i = 0; i < onfinishCallbacks.length; i++) {\n onfinishCallbacks[i]()\n }\n stream.emit('finish')\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well.\n const rState = stream._readableState\n const autoDestroy =\n !rState ||\n (rState.autoDestroy &&\n // We don't expect the readable to ever 'end'\n // if readable is explicitly set to false.\n (rState.endEmitted || rState.readable === false))\n if (autoDestroy) {\n stream.destroy()\n }\n }\n}\nObjectDefineProperties(Writable.prototype, {\n closed: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.closed : false\n }\n },\n destroyed: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.destroyed : false\n },\n set(value) {\n // Backward compatibility, the user is explicitly managing destroyed.\n if (this._writableState) {\n this._writableState.destroyed = value\n }\n }\n },\n writable: {\n __proto__: null,\n get() {\n const w = this._writableState\n // w.writable === false means that this is part of a Duplex stream\n // where the writable side was disabled upon construction.\n // Compat. The user might manually disable writable side through\n // deprecated setter.\n return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended\n },\n set(val) {\n // Backwards compatible.\n if (this._writableState) {\n this._writableState.writable = !!val\n }\n }\n },\n writableFinished: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.finished : false\n }\n },\n writableObjectMode: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.objectMode : false\n }\n },\n writableBuffer: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.getBuffer()\n }\n },\n writableEnded: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.ending : false\n }\n },\n writableNeedDrain: {\n __proto__: null,\n get() {\n const wState = this._writableState\n if (!wState) return false\n return !wState.destroyed && !wState.ending && wState.needDrain\n }\n },\n writableHighWaterMark: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.highWaterMark\n }\n },\n writableCorked: {\n __proto__: null,\n get() {\n return this._writableState ? this._writableState.corked : 0\n }\n },\n writableLength: {\n __proto__: null,\n get() {\n return this._writableState && this._writableState.length\n }\n },\n errored: {\n __proto__: null,\n enumerable: false,\n get() {\n return this._writableState ? this._writableState.errored : null\n }\n },\n writableAborted: {\n __proto__: null,\n enumerable: false,\n get: function () {\n return !!(\n this._writableState.writable !== false &&\n (this._writableState.destroyed || this._writableState.errored) &&\n !this._writableState.finished\n )\n }\n }\n})\nconst destroy = destroyImpl.destroy\nWritable.prototype.destroy = function (err, cb) {\n const state = this._writableState\n\n // Invoke pending callbacks.\n if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) {\n process.nextTick(errorBuffer, state)\n }\n destroy.call(this, err, cb)\n return this\n}\nWritable.prototype._undestroy = destroyImpl.undestroy\nWritable.prototype._destroy = function (err, cb) {\n cb(err)\n}\nWritable.prototype[EE.captureRejectionSymbol] = function (err) {\n this.destroy(err)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n return webStreamsAdapters\n}\nWritable.fromWeb = function (writableStream, options) {\n return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options)\n}\nWritable.toWeb = function (streamWritable) {\n return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable)\n}\n","/* eslint jsdoc/require-jsdoc: \"error\" */\n\n'use strict'\n\nconst {\n ArrayIsArray,\n ArrayPrototypeIncludes,\n ArrayPrototypeJoin,\n ArrayPrototypeMap,\n NumberIsInteger,\n NumberIsNaN,\n NumberMAX_SAFE_INTEGER,\n NumberMIN_SAFE_INTEGER,\n NumberParseInt,\n ObjectPrototypeHasOwnProperty,\n RegExpPrototypeExec,\n String,\n StringPrototypeToUpperCase,\n StringPrototypeTrim\n} = require('../ours/primordials')\nconst {\n hideStackFrames,\n codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL }\n} = require('../ours/errors')\nconst { normalizeEncoding } = require('../ours/util')\nconst { isAsyncFunction, isArrayBufferView } = require('../ours/util').types\nconst signals = {}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isInt32(value) {\n return value === (value | 0)\n}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isUint32(value) {\n return value === value >>> 0\n}\nconst octalReg = /^[0-7]+$/\nconst modeDesc = 'must be a 32-bit unsigned integer or an octal string'\n\n/**\n * Parse and validate values that will be converted into mode_t (the S_*\n * constants). Only valid numbers and octal strings are allowed. They could be\n * converted to 32-bit unsigned integers or non-negative signed integers in the\n * C++ land, but any value higher than 0o777 will result in platform-specific\n * behaviors.\n * @param {*} value Values to be validated\n * @param {string} name Name of the argument\n * @param {number} [def] If specified, will be returned for invalid values\n * @returns {number}\n */\nfunction parseFileMode(value, name, def) {\n if (typeof value === 'undefined') {\n value = def\n }\n if (typeof value === 'string') {\n if (RegExpPrototypeExec(octalReg, value) === null) {\n throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc)\n }\n value = NumberParseInt(value, 8)\n }\n validateUint32(value, name)\n return value\n}\n\n/**\n * @callback validateInteger\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInteger} */\nconst validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => {\n if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n})\n\n/**\n * @callback validateInt32\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInt32} */\nconst validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => {\n // The defaults for min and max correspond to the limits of 32-bit integers.\n if (typeof value !== 'number') {\n throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n if (!NumberIsInteger(value)) {\n throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n }\n if (value < min || value > max) {\n throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n }\n})\n\n/**\n * @callback validateUint32\n * @param {*} value\n * @param {string} name\n * @param {number|boolean} [positive=false]\n * @returns {asserts value is number}\n */\n\n/** @type {validateUint32} */\nconst validateUint32 = hideStackFrames((value, name, positive = false) => {\n if (typeof value !== 'number') {\n throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n if (!NumberIsInteger(value)) {\n throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n }\n const min = positive ? 1 : 0\n // 2 ** 32 === 4294967296\n const max = 4294967295\n if (value < min || value > max) {\n throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n }\n})\n\n/**\n * @callback validateString\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string}\n */\n\n/** @type {validateString} */\nfunction validateString(value, name) {\n if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value)\n}\n\n/**\n * @callback validateNumber\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateNumber} */\nfunction validateNumber(value, name, min = undefined, max) {\n if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n if (\n (min != null && value < min) ||\n (max != null && value > max) ||\n ((min != null || max != null) && NumberIsNaN(value))\n ) {\n throw new ERR_OUT_OF_RANGE(\n name,\n `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`,\n value\n )\n }\n}\n\n/**\n * @callback validateOneOf\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} oneOf\n */\n\n/** @type {validateOneOf} */\nconst validateOneOf = hideStackFrames((value, name, oneOf) => {\n if (!ArrayPrototypeIncludes(oneOf, value)) {\n const allowed = ArrayPrototypeJoin(\n ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))),\n ', '\n )\n const reason = 'must be one of: ' + allowed\n throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n }\n})\n\n/**\n * @callback validateBoolean\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean}\n */\n\n/** @type {validateBoolean} */\nfunction validateBoolean(value, name) {\n if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value)\n}\n\n/**\n * @param {any} options\n * @param {string} key\n * @param {boolean} defaultValue\n * @returns {boolean}\n */\nfunction getOwnPropertyValueOrDefault(options, key, defaultValue) {\n return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key]\n}\n\n/**\n * @callback validateObject\n * @param {*} value\n * @param {string} name\n * @param {{\n * allowArray?: boolean,\n * allowFunction?: boolean,\n * nullable?: boolean\n * }} [options]\n */\n\n/** @type {validateObject} */\nconst validateObject = hideStackFrames((value, name, options = null) => {\n const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false)\n const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false)\n const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false)\n if (\n (!nullable && value === null) ||\n (!allowArray && ArrayIsArray(value)) ||\n (typeof value !== 'object' && (!allowFunction || typeof value !== 'function'))\n ) {\n throw new ERR_INVALID_ARG_TYPE(name, 'Object', value)\n }\n})\n\n/**\n * @callback validateDictionary - We are using the Web IDL Standard definition\n * of \"dictionary\" here, which means any value\n * whose Type is either Undefined, Null, or\n * Object (which includes functions).\n * @param {*} value\n * @param {string} name\n * @see https://webidl.spec.whatwg.org/#es-dictionary\n * @see https://tc39.es/ecma262/#table-typeof-operator-results\n */\n\n/** @type {validateDictionary} */\nconst validateDictionary = hideStackFrames((value, name) => {\n if (value != null && typeof value !== 'object' && typeof value !== 'function') {\n throw new ERR_INVALID_ARG_TYPE(name, 'a dictionary', value)\n }\n})\n\n/**\n * @callback validateArray\n * @param {*} value\n * @param {string} name\n * @param {number} [minLength]\n * @returns {asserts value is any[]}\n */\n\n/** @type {validateArray} */\nconst validateArray = hideStackFrames((value, name, minLength = 0) => {\n if (!ArrayIsArray(value)) {\n throw new ERR_INVALID_ARG_TYPE(name, 'Array', value)\n }\n if (value.length < minLength) {\n const reason = `must be longer than ${minLength}`\n throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n }\n})\n\n/**\n * @callback validateStringArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string[]}\n */\n\n/** @type {validateStringArray} */\nfunction validateStringArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n validateString(value[i], `${name}[${i}]`)\n }\n}\n\n/**\n * @callback validateBooleanArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean[]}\n */\n\n/** @type {validateBooleanArray} */\nfunction validateBooleanArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n validateBoolean(value[i], `${name}[${i}]`)\n }\n}\n\n/**\n * @callback validateAbortSignalArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is AbortSignal[]}\n */\n\n/** @type {validateAbortSignalArray} */\nfunction validateAbortSignalArray(value, name) {\n validateArray(value, name)\n for (let i = 0; i < value.length; i++) {\n const signal = value[i]\n const indexedName = `${name}[${i}]`\n if (signal == null) {\n throw new ERR_INVALID_ARG_TYPE(indexedName, 'AbortSignal', signal)\n }\n validateAbortSignal(signal, indexedName)\n }\n}\n\n/**\n * @param {*} signal\n * @param {string} [name='signal']\n * @returns {asserts signal is keyof signals}\n */\nfunction validateSignalName(signal, name = 'signal') {\n validateString(signal, name)\n if (signals[signal] === undefined) {\n if (signals[StringPrototypeToUpperCase(signal)] !== undefined) {\n throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)')\n }\n throw new ERR_UNKNOWN_SIGNAL(signal)\n }\n}\n\n/**\n * @callback validateBuffer\n * @param {*} buffer\n * @param {string} [name='buffer']\n * @returns {asserts buffer is ArrayBufferView}\n */\n\n/** @type {validateBuffer} */\nconst validateBuffer = hideStackFrames((buffer, name = 'buffer') => {\n if (!isArrayBufferView(buffer)) {\n throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer)\n }\n})\n\n/**\n * @param {string} data\n * @param {string} encoding\n */\nfunction validateEncoding(data, encoding) {\n const normalizedEncoding = normalizeEncoding(encoding)\n const length = data.length\n if (normalizedEncoding === 'hex' && length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`)\n }\n}\n\n/**\n * Check that the port number is not NaN when coerced to a number,\n * is an integer and that it falls within the legal range of port numbers.\n * @param {*} port\n * @param {string} [name='Port']\n * @param {boolean} [allowZero=true]\n * @returns {number}\n */\nfunction validatePort(port, name = 'Port', allowZero = true) {\n if (\n (typeof port !== 'number' && typeof port !== 'string') ||\n (typeof port === 'string' && StringPrototypeTrim(port).length === 0) ||\n +port !== +port >>> 0 ||\n port > 0xffff ||\n (port === 0 && !allowZero)\n ) {\n throw new ERR_SOCKET_BAD_PORT(name, port, allowZero)\n }\n return port | 0\n}\n\n/**\n * @callback validateAbortSignal\n * @param {*} signal\n * @param {string} name\n */\n\n/** @type {validateAbortSignal} */\nconst validateAbortSignal = hideStackFrames((signal, name) => {\n if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n})\n\n/**\n * @callback validateFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validateFunction} */\nconst validateFunction = hideStackFrames((value, name) => {\n if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validatePlainFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validatePlainFunction} */\nconst validatePlainFunction = hideStackFrames((value, name) => {\n if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validateUndefined\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is undefined}\n */\n\n/** @type {validateUndefined} */\nconst validateUndefined = hideStackFrames((value, name) => {\n if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value)\n})\n\n/**\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} union\n */\nfunction validateUnion(value, name, union) {\n if (!ArrayPrototypeIncludes(union, value)) {\n throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value)\n }\n}\n\n/*\n The rules for the Link header field are described here:\n https://www.rfc-editor.org/rfc/rfc8288.html#section-3\n\n This regex validates any string surrounded by angle brackets\n (not necessarily a valid URI reference) followed by zero or more\n link-params separated by semicolons.\n*/\nconst linkValueRegExp = /^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/\n\n/**\n * @param {any} value\n * @param {string} name\n */\nfunction validateLinkHeaderFormat(value, name) {\n if (typeof value === 'undefined' || !RegExpPrototypeExec(linkValueRegExp, value)) {\n throw new ERR_INVALID_ARG_VALUE(\n name,\n value,\n 'must be an array or string of format \"; rel=preload; as=style\"'\n )\n }\n}\n\n/**\n * @param {any} hints\n * @return {string}\n */\nfunction validateLinkHeaderValue(hints) {\n if (typeof hints === 'string') {\n validateLinkHeaderFormat(hints, 'hints')\n return hints\n } else if (ArrayIsArray(hints)) {\n const hintsLength = hints.length\n let result = ''\n if (hintsLength === 0) {\n return result\n }\n for (let i = 0; i < hintsLength; i++) {\n const link = hints[i]\n validateLinkHeaderFormat(link, 'hints')\n result += link\n if (i !== hintsLength - 1) {\n result += ', '\n }\n }\n return result\n }\n throw new ERR_INVALID_ARG_VALUE(\n 'hints',\n hints,\n 'must be an array or string of format \"; rel=preload; as=style\"'\n )\n}\nmodule.exports = {\n isInt32,\n isUint32,\n parseFileMode,\n validateArray,\n validateStringArray,\n validateBooleanArray,\n validateAbortSignalArray,\n validateBoolean,\n validateBuffer,\n validateDictionary,\n validateEncoding,\n validateFunction,\n validateInt32,\n validateInteger,\n validateNumber,\n validateObject,\n validateOneOf,\n validatePlainFunction,\n validatePort,\n validateSignalName,\n validateString,\n validateUint32,\n validateUndefined,\n validateUnion,\n validateAbortSignal,\n validateLinkHeaderValue\n}\n","'use strict'\n\nconst CustomStream = require('../stream')\nconst promises = require('../stream/promises')\nconst originalDestroy = CustomStream.Readable.destroy\nmodule.exports = CustomStream.Readable\n\n// Explicit export naming is needed for ESM\nmodule.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer\nmodule.exports._isUint8Array = CustomStream._isUint8Array\nmodule.exports.isDisturbed = CustomStream.isDisturbed\nmodule.exports.isErrored = CustomStream.isErrored\nmodule.exports.isReadable = CustomStream.isReadable\nmodule.exports.Readable = CustomStream.Readable\nmodule.exports.Writable = CustomStream.Writable\nmodule.exports.Duplex = CustomStream.Duplex\nmodule.exports.Transform = CustomStream.Transform\nmodule.exports.PassThrough = CustomStream.PassThrough\nmodule.exports.addAbortSignal = CustomStream.addAbortSignal\nmodule.exports.finished = CustomStream.finished\nmodule.exports.destroy = CustomStream.destroy\nmodule.exports.destroy = originalDestroy\nmodule.exports.pipeline = CustomStream.pipeline\nmodule.exports.compose = CustomStream.compose\nObject.defineProperty(CustomStream, 'promises', {\n configurable: true,\n enumerable: true,\n get() {\n return promises\n }\n})\nmodule.exports.Stream = CustomStream.Stream\n\n// Allow default importing\nmodule.exports.default = module.exports\n","'use strict'\n\nconst { format, inspect, AggregateError: CustomAggregateError } = require('./util')\n\n/*\n This file is a reduced and adapted version of the main lib/internal/errors.js file defined at\n\n https://github.com/nodejs/node/blob/master/lib/internal/errors.js\n\n Don't try to replace with the original file and keep it up to date (starting from E(...) definitions)\n with the upstream file.\n*/\n\nconst AggregateError = globalThis.AggregateError || CustomAggregateError\nconst kIsNodeError = Symbol('kIsNodeError')\nconst kTypes = [\n 'string',\n 'function',\n 'number',\n 'object',\n // Accept 'Function' and 'Object' as alternative to the lower cased version.\n 'Function',\n 'Object',\n 'boolean',\n 'bigint',\n 'symbol'\n]\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/\nconst nodeInternalPrefix = '__node_internal_'\nconst codes = {}\nfunction assert(value, message) {\n if (!value) {\n throw new codes.ERR_INTERNAL_ASSERTION(message)\n }\n}\n\n// Only use this for integers! Decimal numbers do not work with this function.\nfunction addNumericalSeparator(val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\nfunction getMessage(key, msg, args) {\n if (typeof msg === 'function') {\n assert(\n msg.length <= args.length,\n // Default options do not count.\n `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`\n )\n return msg(...args)\n }\n const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length\n assert(\n expectedLength === args.length,\n `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`\n )\n if (args.length === 0) {\n return msg\n }\n return format(msg, ...args)\n}\nfunction E(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n class NodeError extends Base {\n constructor(...args) {\n super(getMessage(code, message, args))\n }\n toString() {\n return `${this.name} [${code}]: ${this.message}`\n }\n }\n Object.defineProperties(NodeError.prototype, {\n name: {\n value: Base.name,\n writable: true,\n enumerable: false,\n configurable: true\n },\n toString: {\n value() {\n return `${this.name} [${code}]: ${this.message}`\n },\n writable: true,\n enumerable: false,\n configurable: true\n }\n })\n NodeError.prototype.code = code\n NodeError.prototype[kIsNodeError] = true\n codes[code] = NodeError\n}\nfunction hideStackFrames(fn) {\n // We rename the functions that will be hidden to cut off the stacktrace\n // at the outermost one\n const hidden = nodeInternalPrefix + fn.name\n Object.defineProperty(fn, 'name', {\n value: hidden\n })\n return fn\n}\nfunction aggregateTwoErrors(innerError, outerError) {\n if (innerError && outerError && innerError !== outerError) {\n if (Array.isArray(outerError.errors)) {\n // If `outerError` is already an `AggregateError`.\n outerError.errors.push(innerError)\n return outerError\n }\n const err = new AggregateError([outerError, innerError], outerError.message)\n err.code = outerError.code\n return err\n }\n return innerError || outerError\n}\nclass AbortError extends Error {\n constructor(message = 'The operation was aborted', options = undefined) {\n if (options !== undefined && typeof options !== 'object') {\n throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options)\n }\n super(message, options)\n this.code = 'ABORT_ERR'\n this.name = 'AbortError'\n }\n}\nE('ERR_ASSERTION', '%s', Error)\nE(\n 'ERR_INVALID_ARG_TYPE',\n (name, expected, actual) => {\n assert(typeof name === 'string', \"'name' must be a string\")\n if (!Array.isArray(expected)) {\n expected = [expected]\n }\n let msg = 'The '\n if (name.endsWith(' argument')) {\n // For cases like 'first argument'\n msg += `${name} `\n } else {\n msg += `\"${name}\" ${name.includes('.') ? 'property' : 'argument'} `\n }\n msg += 'must be '\n const types = []\n const instances = []\n const other = []\n for (const value of expected) {\n assert(typeof value === 'string', 'All expected entries have to be of type string')\n if (kTypes.includes(value)) {\n types.push(value.toLowerCase())\n } else if (classRegExp.test(value)) {\n instances.push(value)\n } else {\n assert(value !== 'object', 'The value \"object\" should be written as \"Object\"')\n other.push(value)\n }\n }\n\n // Special handle `object` in case other instances are allowed to outline\n // the differences between each other.\n if (instances.length > 0) {\n const pos = types.indexOf('object')\n if (pos !== -1) {\n types.splice(types, pos, 1)\n instances.push('Object')\n }\n }\n if (types.length > 0) {\n switch (types.length) {\n case 1:\n msg += `of type ${types[0]}`\n break\n case 2:\n msg += `one of type ${types[0]} or ${types[1]}`\n break\n default: {\n const last = types.pop()\n msg += `one of type ${types.join(', ')}, or ${last}`\n }\n }\n if (instances.length > 0 || other.length > 0) {\n msg += ' or '\n }\n }\n if (instances.length > 0) {\n switch (instances.length) {\n case 1:\n msg += `an instance of ${instances[0]}`\n break\n case 2:\n msg += `an instance of ${instances[0]} or ${instances[1]}`\n break\n default: {\n const last = instances.pop()\n msg += `an instance of ${instances.join(', ')}, or ${last}`\n }\n }\n if (other.length > 0) {\n msg += ' or '\n }\n }\n switch (other.length) {\n case 0:\n break\n case 1:\n if (other[0].toLowerCase() !== other[0]) {\n msg += 'an '\n }\n msg += `${other[0]}`\n break\n case 2:\n msg += `one of ${other[0]} or ${other[1]}`\n break\n default: {\n const last = other.pop()\n msg += `one of ${other.join(', ')}, or ${last}`\n }\n }\n if (actual == null) {\n msg += `. Received ${actual}`\n } else if (typeof actual === 'function' && actual.name) {\n msg += `. Received function ${actual.name}`\n } else if (typeof actual === 'object') {\n var _actual$constructor\n if (\n (_actual$constructor = actual.constructor) !== null &&\n _actual$constructor !== undefined &&\n _actual$constructor.name\n ) {\n msg += `. Received an instance of ${actual.constructor.name}`\n } else {\n const inspected = inspect(actual, {\n depth: -1\n })\n msg += `. Received ${inspected}`\n }\n } else {\n let inspected = inspect(actual, {\n colors: false\n })\n if (inspected.length > 25) {\n inspected = `${inspected.slice(0, 25)}...`\n }\n msg += `. Received type ${typeof actual} (${inspected})`\n }\n return msg\n },\n TypeError\n)\nE(\n 'ERR_INVALID_ARG_VALUE',\n (name, value, reason = 'is invalid') => {\n let inspected = inspect(value)\n if (inspected.length > 128) {\n inspected = inspected.slice(0, 128) + '...'\n }\n const type = name.includes('.') ? 'property' : 'argument'\n return `The ${type} '${name}' ${reason}. Received ${inspected}`\n },\n TypeError\n)\nE(\n 'ERR_INVALID_RETURN_VALUE',\n (input, name, value) => {\n var _value$constructor\n const type =\n value !== null &&\n value !== undefined &&\n (_value$constructor = value.constructor) !== null &&\n _value$constructor !== undefined &&\n _value$constructor.name\n ? `instance of ${value.constructor.name}`\n : `type ${typeof value}`\n return `Expected ${input} to be returned from the \"${name}\"` + ` function but got ${type}.`\n },\n TypeError\n)\nE(\n 'ERR_MISSING_ARGS',\n (...args) => {\n assert(args.length > 0, 'At least one arg needs to be specified')\n let msg\n const len = args.length\n args = (Array.isArray(args) ? args : [args]).map((a) => `\"${a}\"`).join(' or ')\n switch (len) {\n case 1:\n msg += `The ${args[0]} argument`\n break\n case 2:\n msg += `The ${args[0]} and ${args[1]} arguments`\n break\n default:\n {\n const last = args.pop()\n msg += `The ${args.join(', ')}, and ${last} arguments`\n }\n break\n }\n return `${msg} must be specified`\n },\n TypeError\n)\nE(\n 'ERR_OUT_OF_RANGE',\n (str, range, input) => {\n assert(range, 'Missing \"range\" argument')\n let received\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > 2n ** 32n || input < -(2n ** 32n)) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n } else {\n received = inspect(input)\n }\n return `The value of \"${str}\" is out of range. It must be ${range}. Received ${received}`\n },\n RangeError\n)\nE('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error)\nE('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error)\nE('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error)\nE('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error)\nE('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error)\nE('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError)\nE('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error)\nE('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error)\nE('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error)\nE('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error)\nE('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError)\nmodule.exports = {\n AbortError,\n aggregateTwoErrors: hideStackFrames(aggregateTwoErrors),\n hideStackFrames,\n codes\n}\n","'use strict'\n\n/*\n This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at\n\n https://github.com/nodejs/node/blob/master/lib/internal/per_context/primordials.js\n\n Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\nmodule.exports = {\n ArrayIsArray(self) {\n return Array.isArray(self)\n },\n ArrayPrototypeIncludes(self, el) {\n return self.includes(el)\n },\n ArrayPrototypeIndexOf(self, el) {\n return self.indexOf(el)\n },\n ArrayPrototypeJoin(self, sep) {\n return self.join(sep)\n },\n ArrayPrototypeMap(self, fn) {\n return self.map(fn)\n },\n ArrayPrototypePop(self, el) {\n return self.pop(el)\n },\n ArrayPrototypePush(self, el) {\n return self.push(el)\n },\n ArrayPrototypeSlice(self, start, end) {\n return self.slice(start, end)\n },\n Error,\n FunctionPrototypeCall(fn, thisArgs, ...args) {\n return fn.call(thisArgs, ...args)\n },\n FunctionPrototypeSymbolHasInstance(self, instance) {\n return Function.prototype[Symbol.hasInstance].call(self, instance)\n },\n MathFloor: Math.floor,\n Number,\n NumberIsInteger: Number.isInteger,\n NumberIsNaN: Number.isNaN,\n NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER,\n NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER,\n NumberParseInt: Number.parseInt,\n ObjectDefineProperties(self, props) {\n return Object.defineProperties(self, props)\n },\n ObjectDefineProperty(self, name, prop) {\n return Object.defineProperty(self, name, prop)\n },\n ObjectGetOwnPropertyDescriptor(self, name) {\n return Object.getOwnPropertyDescriptor(self, name)\n },\n ObjectKeys(obj) {\n return Object.keys(obj)\n },\n ObjectSetPrototypeOf(target, proto) {\n return Object.setPrototypeOf(target, proto)\n },\n Promise,\n PromisePrototypeCatch(self, fn) {\n return self.catch(fn)\n },\n PromisePrototypeThen(self, thenFn, catchFn) {\n return self.then(thenFn, catchFn)\n },\n PromiseReject(err) {\n return Promise.reject(err)\n },\n PromiseResolve(val) {\n return Promise.resolve(val)\n },\n ReflectApply: Reflect.apply,\n RegExpPrototypeTest(self, value) {\n return self.test(value)\n },\n SafeSet: Set,\n String,\n StringPrototypeSlice(self, start, end) {\n return self.slice(start, end)\n },\n StringPrototypeToLowerCase(self) {\n return self.toLowerCase()\n },\n StringPrototypeToUpperCase(self) {\n return self.toUpperCase()\n },\n StringPrototypeTrim(self) {\n return self.trim()\n },\n Symbol,\n SymbolFor: Symbol.for,\n SymbolAsyncIterator: Symbol.asyncIterator,\n SymbolHasInstance: Symbol.hasInstance,\n SymbolIterator: Symbol.iterator,\n SymbolDispose: Symbol.dispose || Symbol('Symbol.dispose'),\n SymbolAsyncDispose: Symbol.asyncDispose || Symbol('Symbol.asyncDispose'),\n TypedArrayPrototypeSet(self, buf, len) {\n return self.set(buf, len)\n },\n Boolean: Boolean,\n Uint8Array\n}\n","'use strict'\n\nconst bufferModule = require('buffer')\nconst { kResistStopPropagation, SymbolDispose } = require('./primordials')\nconst AbortSignal = globalThis.AbortSignal || require('abort-controller').AbortSignal\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst AsyncFunction = Object.getPrototypeOf(async function () {}).constructor\nconst Blob = globalThis.Blob || bufferModule.Blob\n/* eslint-disable indent */\nconst isBlob =\n typeof Blob !== 'undefined'\n ? function isBlob(b) {\n // eslint-disable-next-line indent\n return b instanceof Blob\n }\n : function isBlob(b) {\n return false\n }\n/* eslint-enable indent */\n\nconst validateAbortSignal = (signal, name) => {\n if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n }\n}\nconst validateFunction = (value, name) => {\n if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n}\n\n// This is a simplified version of AggregateError\nclass AggregateError extends Error {\n constructor(errors) {\n if (!Array.isArray(errors)) {\n throw new TypeError(`Expected input to be an Array, got ${typeof errors}`)\n }\n let message = ''\n for (let i = 0; i < errors.length; i++) {\n message += ` ${errors[i].stack}\\n`\n }\n super(message)\n this.name = 'AggregateError'\n this.errors = errors\n }\n}\nmodule.exports = {\n AggregateError,\n kEmptyObject: Object.freeze({}),\n once(callback) {\n let called = false\n return function (...args) {\n if (called) {\n return\n }\n called = true\n callback.apply(this, args)\n }\n },\n createDeferredPromise: function () {\n let resolve\n let reject\n\n // eslint-disable-next-line promise/param-names\n const promise = new Promise((res, rej) => {\n resolve = res\n reject = rej\n })\n return {\n promise,\n resolve,\n reject\n }\n },\n promisify(fn) {\n return new Promise((resolve, reject) => {\n fn((err, ...args) => {\n if (err) {\n return reject(err)\n }\n return resolve(...args)\n })\n })\n },\n debuglog() {\n return function () {}\n },\n format(format, ...args) {\n // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args\n return format.replace(/%([sdifj])/g, function (...[_unused, type]) {\n const replacement = args.shift()\n if (type === 'f') {\n return replacement.toFixed(6)\n } else if (type === 'j') {\n return JSON.stringify(replacement)\n } else if (type === 's' && typeof replacement === 'object') {\n const ctor = replacement.constructor !== Object ? replacement.constructor.name : ''\n return `${ctor} {}`.trim()\n } else {\n return replacement.toString()\n }\n })\n },\n inspect(value) {\n // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options\n switch (typeof value) {\n case 'string':\n if (value.includes(\"'\")) {\n if (!value.includes('\"')) {\n return `\"${value}\"`\n } else if (!value.includes('`') && !value.includes('${')) {\n return `\\`${value}\\``\n }\n }\n return `'${value}'`\n case 'number':\n if (isNaN(value)) {\n return 'NaN'\n } else if (Object.is(value, -0)) {\n return String(value)\n }\n return value\n case 'bigint':\n return `${String(value)}n`\n case 'boolean':\n case 'undefined':\n return String(value)\n case 'object':\n return '{}'\n }\n },\n types: {\n isAsyncFunction(fn) {\n return fn instanceof AsyncFunction\n },\n isArrayBufferView(arr) {\n return ArrayBuffer.isView(arr)\n }\n },\n isBlob,\n deprecate(fn, message) {\n return fn\n },\n addAbortListener:\n require('events').addAbortListener ||\n function addAbortListener(signal, listener) {\n if (signal === undefined) {\n throw new ERR_INVALID_ARG_TYPE('signal', 'AbortSignal', signal)\n }\n validateAbortSignal(signal, 'signal')\n validateFunction(listener, 'listener')\n let removeEventListener\n if (signal.aborted) {\n queueMicrotask(() => listener())\n } else {\n signal.addEventListener('abort', listener, {\n __proto__: null,\n once: true,\n [kResistStopPropagation]: true\n })\n removeEventListener = () => {\n signal.removeEventListener('abort', listener)\n }\n }\n return {\n __proto__: null,\n [SymbolDispose]() {\n var _removeEventListener\n ;(_removeEventListener = removeEventListener) === null || _removeEventListener === undefined\n ? undefined\n : _removeEventListener()\n }\n }\n },\n AbortSignalAny:\n AbortSignal.any ||\n function AbortSignalAny(signals) {\n // Fast path if there is only one signal.\n if (signals.length === 1) {\n return signals[0]\n }\n const ac = new AbortController()\n const abort = () => ac.abort()\n signals.forEach((signal) => {\n validateAbortSignal(signal, 'signals')\n signal.addEventListener('abort', abort, {\n once: true\n })\n })\n ac.signal.addEventListener(\n 'abort',\n () => {\n signals.forEach((signal) => signal.removeEventListener('abort', abort))\n },\n {\n once: true\n }\n )\n return ac.signal\n }\n}\nmodule.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom')\n","/* replacement start */\n\nconst { Buffer } = require('buffer')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n;('use strict')\nconst { ObjectDefineProperty, ObjectKeys, ReflectApply } = require('./ours/primordials')\nconst {\n promisify: { custom: customPromisify }\n} = require('./ours/util')\nconst { streamReturningOperators, promiseReturningOperators } = require('./internal/streams/operators')\nconst {\n codes: { ERR_ILLEGAL_CONSTRUCTOR }\n} = require('./ours/errors')\nconst compose = require('./internal/streams/compose')\nconst { setDefaultHighWaterMark, getDefaultHighWaterMark } = require('./internal/streams/state')\nconst { pipeline } = require('./internal/streams/pipeline')\nconst { destroyer } = require('./internal/streams/destroy')\nconst eos = require('./internal/streams/end-of-stream')\nconst internalBuffer = {}\nconst promises = require('./stream/promises')\nconst utils = require('./internal/streams/utils')\nconst Stream = (module.exports = require('./internal/streams/legacy').Stream)\nStream.isDestroyed = utils.isDestroyed\nStream.isDisturbed = utils.isDisturbed\nStream.isErrored = utils.isErrored\nStream.isReadable = utils.isReadable\nStream.isWritable = utils.isWritable\nStream.Readable = require('./internal/streams/readable')\nfor (const key of ObjectKeys(streamReturningOperators)) {\n const op = streamReturningOperators[key]\n function fn(...args) {\n if (new.target) {\n throw ERR_ILLEGAL_CONSTRUCTOR()\n }\n return Stream.Readable.from(ReflectApply(op, this, args))\n }\n ObjectDefineProperty(fn, 'name', {\n __proto__: null,\n value: op.name\n })\n ObjectDefineProperty(fn, 'length', {\n __proto__: null,\n value: op.length\n })\n ObjectDefineProperty(Stream.Readable.prototype, key, {\n __proto__: null,\n value: fn,\n enumerable: false,\n configurable: true,\n writable: true\n })\n}\nfor (const key of ObjectKeys(promiseReturningOperators)) {\n const op = promiseReturningOperators[key]\n function fn(...args) {\n if (new.target) {\n throw ERR_ILLEGAL_CONSTRUCTOR()\n }\n return ReflectApply(op, this, args)\n }\n ObjectDefineProperty(fn, 'name', {\n __proto__: null,\n value: op.name\n })\n ObjectDefineProperty(fn, 'length', {\n __proto__: null,\n value: op.length\n })\n ObjectDefineProperty(Stream.Readable.prototype, key, {\n __proto__: null,\n value: fn,\n enumerable: false,\n configurable: true,\n writable: true\n })\n}\nStream.Writable = require('./internal/streams/writable')\nStream.Duplex = require('./internal/streams/duplex')\nStream.Transform = require('./internal/streams/transform')\nStream.PassThrough = require('./internal/streams/passthrough')\nStream.pipeline = pipeline\nconst { addAbortSignal } = require('./internal/streams/add-abort-signal')\nStream.addAbortSignal = addAbortSignal\nStream.finished = eos\nStream.destroy = destroyer\nStream.compose = compose\nStream.setDefaultHighWaterMark = setDefaultHighWaterMark\nStream.getDefaultHighWaterMark = getDefaultHighWaterMark\nObjectDefineProperty(Stream, 'promises', {\n __proto__: null,\n configurable: true,\n enumerable: true,\n get() {\n return promises\n }\n})\nObjectDefineProperty(pipeline, customPromisify, {\n __proto__: null,\n enumerable: true,\n get() {\n return promises.pipeline\n }\n})\nObjectDefineProperty(eos, customPromisify, {\n __proto__: null,\n enumerable: true,\n get() {\n return promises.finished\n }\n})\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream\nStream._isUint8Array = function isUint8Array(value) {\n return value instanceof Uint8Array\n}\nStream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n}\n","'use strict'\n\nconst { ArrayPrototypePop, Promise } = require('../ours/primordials')\nconst { isIterable, isNodeStream, isWebStream } = require('../internal/streams/utils')\nconst { pipelineImpl: pl } = require('../internal/streams/pipeline')\nconst { finished } = require('../internal/streams/end-of-stream')\nrequire('../../lib/stream.js')\nfunction pipeline(...streams) {\n return new Promise((resolve, reject) => {\n let signal\n let end\n const lastArg = streams[streams.length - 1]\n if (\n lastArg &&\n typeof lastArg === 'object' &&\n !isNodeStream(lastArg) &&\n !isIterable(lastArg) &&\n !isWebStream(lastArg)\n ) {\n const options = ArrayPrototypePop(streams)\n signal = options.signal\n end = options.end\n }\n pl(\n streams,\n (err, value) => {\n if (err) {\n reject(err)\n } else {\n resolve(value)\n }\n },\n {\n signal,\n end\n }\n )\n })\n}\nmodule.exports = {\n finished,\n pipeline\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/Resolve\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.removeDotSegmentsOfPath = exports.removeDotSegments = exports.resolve = void 0;\n/**\n * Convert the given relative IRI to an absolute IRI\n * by taking into account the given optional baseIRI.\n *\n * @param {string} relativeIRI The relative IRI to convert to an absolute IRI.\n * @param {string} baseIRI The optional base IRI.\n * @return {string} an absolute IRI.\n */\nfunction resolve(relativeIRI, baseIRI) {\n baseIRI = baseIRI || '';\n const baseFragmentPos = baseIRI.indexOf('#');\n // Ignore any fragments in the base IRI\n if (baseFragmentPos > 0) {\n baseIRI = baseIRI.substr(0, baseFragmentPos);\n }\n // Convert empty value directly to base IRI\n if (!relativeIRI.length) {\n // At this point, the baseIRI MUST be absolute, otherwise we error\n if (baseIRI.indexOf(':') < 0) {\n throw new Error(`Found invalid baseIRI '${baseIRI}' for value '${relativeIRI}'`);\n }\n return baseIRI;\n }\n // If the value starts with a query character, concat directly (but strip the existing query)\n if (relativeIRI.startsWith('?')) {\n const baseQueryPos = baseIRI.indexOf('?');\n if (baseQueryPos > 0) {\n baseIRI = baseIRI.substr(0, baseQueryPos);\n }\n return baseIRI + relativeIRI;\n }\n // If the value starts with a fragment character, concat directly\n if (relativeIRI.startsWith('#')) {\n return baseIRI + relativeIRI;\n }\n // Ignore baseIRI if it is empty\n if (!baseIRI.length) {\n const relativeColonPos = relativeIRI.indexOf(':');\n if (relativeColonPos < 0) {\n throw new Error(`Found invalid relative IRI '${relativeIRI}' for a missing baseIRI`);\n }\n return removeDotSegmentsOfPath(relativeIRI, relativeColonPos);\n }\n // Ignore baseIRI if the value is absolute\n const valueColonPos = relativeIRI.indexOf(':');\n if (valueColonPos >= 0) {\n return removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n // At this point, the baseIRI MUST be absolute, otherwise we error\n const baseColonPos = baseIRI.indexOf(':');\n if (baseColonPos < 0) {\n throw new Error(`Found invalid baseIRI '${baseIRI}' for value '${relativeIRI}'`);\n }\n const baseIRIScheme = baseIRI.substr(0, baseColonPos + 1);\n // Inherit the baseIRI scheme if the value starts with '//'\n if (relativeIRI.indexOf('//') === 0) {\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n // Check cases where '://' occurs in the baseIRI, and where there is no '/' after a ':' anymore.\n let baseSlashAfterColonPos;\n if (baseIRI.indexOf('//', baseColonPos) === baseColonPos + 1) {\n // If there is no additional '/' after the '//'.\n baseSlashAfterColonPos = baseIRI.indexOf('/', baseColonPos + 3);\n if (baseSlashAfterColonPos < 0) {\n // If something other than a '/' follows the '://', append the value after a '/',\n // otherwise, prefix the value with only the baseIRI scheme.\n if (baseIRI.length > baseColonPos + 3) {\n return baseIRI + '/' + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n else {\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n }\n }\n else {\n // If there is not even a single '/' after the ':'\n baseSlashAfterColonPos = baseIRI.indexOf('/', baseColonPos + 1);\n if (baseSlashAfterColonPos < 0) {\n // If we don't have a '/' after the ':',\n // prefix the value with only the baseIRI scheme.\n return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n }\n }\n // If the value starts with a '/', then prefix it with everything before the first effective slash of the base IRI.\n if (relativeIRI.indexOf('/') === 0) {\n return baseIRI.substr(0, baseSlashAfterColonPos) + removeDotSegments(relativeIRI);\n }\n let baseIRIPath = baseIRI.substr(baseSlashAfterColonPos);\n const baseIRILastSlashPos = baseIRIPath.lastIndexOf('/');\n // Ignore everything after the last '/' in the baseIRI path\n if (baseIRILastSlashPos >= 0 && baseIRILastSlashPos < baseIRIPath.length - 1) {\n baseIRIPath = baseIRIPath.substr(0, baseIRILastSlashPos + 1);\n // Also remove the first character of the relative path if it starts with '.' (and not '..' or './')\n // This change is only allowed if there is something else following the path\n if (relativeIRI[0] === '.' && relativeIRI[1] !== '.' && relativeIRI[1] !== '/' && relativeIRI[2]) {\n relativeIRI = relativeIRI.substr(1);\n }\n }\n // Prefix the value with the baseIRI path where\n relativeIRI = baseIRIPath + relativeIRI;\n // Remove dot segment from the IRI\n relativeIRI = removeDotSegments(relativeIRI);\n // Prefix our transformed value with the part of the baseIRI until the first '/' after the first ':'.\n return baseIRI.substr(0, baseSlashAfterColonPos) + relativeIRI;\n}\nexports.resolve = resolve;\n/**\n * Remove dot segments from the given path,\n * as described in https://www.ietf.org/rfc/rfc3986.txt (page 32).\n * @param {string} path An IRI path.\n * @return {string} A path, will always start with a '/'.\n */\nfunction removeDotSegments(path) {\n // Prepare a buffer with segments between each '/.\n // Each segment represents an array of characters.\n const segmentBuffers = [];\n let i = 0;\n while (i < path.length) {\n // Remove '/.' or '/..'\n switch (path[i]) {\n case '/':\n if (path[i + 1] === '.') {\n if (path[i + 2] === '.') {\n // Start a new segment if we find an invalid character after the '.'\n if (!isCharacterAllowedAfterRelativePathSegment(path[i + 3])) {\n segmentBuffers.push([]);\n i++;\n break;\n }\n // Go to parent directory,\n // so we remove a parent segment\n segmentBuffers.pop();\n // Ensure that we end with a slash if there is a trailing '/..'\n if (!path[i + 3]) {\n segmentBuffers.push([]);\n }\n i += 3;\n }\n else {\n // Start a new segment if we find an invalid character after the '.'\n if (!isCharacterAllowedAfterRelativePathSegment(path[i + 2])) {\n segmentBuffers.push([]);\n i++;\n break;\n }\n // Ensure that we end with a slash if there is a trailing '/.'\n if (!path[i + 2]) {\n segmentBuffers.push([]);\n }\n // Go to the current directory,\n // so we do nothing\n i += 2;\n }\n }\n else {\n // Start a new segment\n segmentBuffers.push([]);\n i++;\n }\n break;\n case '#':\n case '?':\n // Query and fragment string should be appended unchanged\n if (!segmentBuffers.length) {\n segmentBuffers.push([]);\n }\n segmentBuffers[segmentBuffers.length - 1].push(path.substr(i));\n // Break the while loop\n i = path.length;\n break;\n default:\n // Not a special character, just append it to our buffer\n if (!segmentBuffers.length) {\n segmentBuffers.push([]);\n }\n segmentBuffers[segmentBuffers.length - 1].push(path[i]);\n i++;\n break;\n }\n }\n return '/' + segmentBuffers.map((buffer) => buffer.join('')).join('/');\n}\nexports.removeDotSegments = removeDotSegments;\n/**\n * Removes dot segments of the given IRI.\n * @param {string} iri An IRI (or part of IRI).\n * @param {number} colonPosition The position of the first ':' in the IRI.\n * @return {string} The IRI where dot segments were removed.\n */\nfunction removeDotSegmentsOfPath(iri, colonPosition) {\n // Determine where we should start looking for the first '/' that indicates the start of the path\n let searchOffset = colonPosition + 1;\n if (colonPosition >= 0) {\n if (iri[colonPosition + 1] === '/' && iri[colonPosition + 2] === '/') {\n searchOffset = colonPosition + 3;\n }\n }\n else {\n if (iri[0] === '/' && iri[1] === '/') {\n searchOffset = 2;\n }\n }\n // Determine the path\n const pathSeparator = iri.indexOf('/', searchOffset);\n if (pathSeparator < 0) {\n return iri;\n }\n const base = iri.substr(0, pathSeparator);\n const path = iri.substr(pathSeparator);\n // Remove dot segments from the path\n return base + removeDotSegments(path);\n}\nexports.removeDotSegmentsOfPath = removeDotSegmentsOfPath;\nfunction isCharacterAllowedAfterRelativePathSegment(character) {\n return !character || character === '#' || character === '?' || character === '/';\n}\n//# sourceMappingURL=Resolve.js.map","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable no-unused-vars */\n/* eslint-disable lines-between-class-members */\n/* eslint-disable no-dupe-class-members */\n/**\n * Generates a SHACLC file stream from a quad stream, since SHACLC is\n * lossy with respect to N3, a stream of quads that could not be\n * written is also output.\n */\nconst n3_1 = require(\"n3\");\nconst prefixcc_1 = require(\"@jeswr/prefixcc\");\nconst rdf_string_ttl_1 = require(\"rdf-string-ttl\");\nconst utils_1 = require(\"./utils\");\nconst property_param_1 = __importDefault(require(\"./property-param \"));\nconst base_prefixes_1 = __importDefault(require(\"./base-prefixes\"));\nconst node_param_1 = __importDefault(require(\"./node-param\"));\nfunction getNamespace(str) {\n var _a;\n return (_a = /^[^]*[#/]/.exec(str)) === null || _a === void 0 ? void 0 : _a[0];\n}\nconst knownNamespaces = {\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#': 'rdf',\n 'http://www.w3.org/2000/01/rdf-schema#': 'rdfs',\n 'http://www.w3.org/ns/shacl#': 'sh',\n 'http://www.w3.org/2001/XMLSchema#': 'xsd',\n};\nconst knownPrefixes = {\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n rdfs: 'http://www.w3.org/2000/01/rdf-schema#',\n sh: 'http://www.w3.org/ns/shacl#',\n xsd: 'http://www.w3.org/2001/XMLSchema#',\n};\nclass SHACLCWriter {\n constructor(\n // eslint-disable-next-line no-unused-vars\n store, \n // eslint-disable-next-line no-unused-vars\n writer, prefixes = {}, \n // eslint-disable-next-line no-unused-vars\n base = undefined, errorOnExtraQuads = true, mintUnspecifiedPrefixes = false, fetch, extendedSyntax = false) {\n this.store = store;\n this.base = base;\n this.errorOnExtraQuads = errorOnExtraQuads;\n this.mintUnspecifiedPrefixes = mintUnspecifiedPrefixes;\n this.fetch = fetch;\n this.extendedSyntax = extendedSyntax;\n this.prefixes = {};\n this.prefixRev = {};\n for (const key of Object.keys(prefixes)) {\n const iri = prefixes[key];\n const value = typeof iri === 'string' ? iri : iri.value;\n if (!(value in knownNamespaces) && !(key in knownPrefixes)) {\n this.prefixRev[value] = key;\n this.prefixes[key] = value;\n }\n }\n this.writer = writer;\n }\n /**\n * Used to initiate the flow of data through the writer.\n */\n // TODO: Make initialisation async\n write() {\n return __awaiter(this, void 0, void 0, function* () {\n const onotology = this.store.getQuads(null, \"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\" /* rdf.type */, \"http://www.w3.org/2002/07/owl#Ontology\" /* owl.Ontology */, null);\n if (onotology.length === 1 && onotology[0].subject.termType === 'NamedNode') {\n const base = onotology[0].subject;\n this.store.removeQuads(onotology);\n // Don't write default\n if (!base.equals(new n3_1.NamedNode('urn:x-base:default')))\n this.writer.add(`BASE ${(0, rdf_string_ttl_1.termToString)(base)}`);\n yield this.writeImports(base);\n }\n else {\n throw new Error('Base expected');\n }\n if (this.mintUnspecifiedPrefixes) {\n const namespaces = new Set();\n for (const term of [\n ...this.store.getSubjects(null, null, null),\n ...this.store.getPredicates(null, null, null),\n ...this.store.getObjects(null, null, null),\n ]) {\n if (term.termType === 'NamedNode') {\n const namespace = getNamespace(term.value);\n if (namespace && !(namespace in this.prefixRev) && !(namespace in knownNamespaces)) {\n namespaces.add(namespace);\n }\n }\n }\n const existingPrefixes = Object.assign(Object.assign({}, this.prefixes), knownPrefixes);\n yield Promise.all([...namespaces].map((ns) => (0, prefixcc_1.uriToPrefix)(ns, {\n fetch: this.fetch,\n mintOnUnknown: true,\n existingPrefixes,\n }).then((pref) => {\n this.prefixes[pref] = ns;\n existingPrefixes[pref] = ns;\n this.prefixRev[ns] = pref;\n })));\n }\n const allNamespaces = new Set([\n ...this.store.getSubjects(null, null, null),\n ...this.store.getPredicates(null, null, null),\n ...this.store.getObjects(null, null, null),\n ]\n .filter((term) => term.termType === 'NamedNode')\n .map((term) => getNamespace(term.value))\n .filter((str) => typeof str === 'string'));\n for (const key in this.prefixRev) {\n if (!allNamespaces.has(key)) {\n delete this.prefixes[this.prefixRev[key]];\n delete this.prefixRev[key];\n }\n }\n yield this.writePrefixes();\n this.prefixes = Object.assign(Object.assign({}, this.prefixes), knownPrefixes);\n this.prefixRev = Object.assign(Object.assign({}, this.prefixRev), knownNamespaces);\n this.writer.newLine();\n yield this.writeShapes();\n if (this.extendedSyntax) {\n const subjects = this.store.getSubjects(null, null, null);\n if (subjects.length > 0) {\n this.writer.newLine(1);\n }\n for (const subject of subjects) {\n this.writer.add(yield this.termToString(subject, true, true));\n this.writer.add(' ');\n this.writer.indent();\n yield this.writeTurtlePredicates(subject);\n this.writer.deindent();\n }\n if (subjects.length > 0) {\n this.writer.add(' .');\n this.writer.newLine();\n }\n }\n if (this.errorOnExtraQuads && this.store.size > 0) {\n throw new Error('Dataset contains quads that cannot be written in SHACLC');\n }\n this.writer.end();\n // this.failedQuads.append(this.store.getQuads(null, null, null, null))\n });\n }\n writeImports(base) {\n return __awaiter(this, void 0, void 0, function* () {\n const imports = this.store.getObjectsOnce(base, new n3_1.NamedNode(\"http://www.w3.org/2002/07/owl#imports\" /* owl.imports */), null);\n if (imports.length > 0) {\n for (const imp of imports) {\n this.writer.add(`IMPORTS <${imp.value}>`, true);\n }\n }\n });\n }\n writePrefixes() {\n return __awaiter(this, void 0, void 0, function* () {\n const keys = Object.keys(this.prefixes).filter((key) => !(key in base_prefixes_1.default)).sort();\n if (keys.length > 0) {\n for (const key of keys) {\n this.writer.add(`PREFIX ${key}: <${this.prefixes[key]}>`, true);\n }\n }\n });\n }\n termToString(term, disableShaclName = false, allowBlankNodes = false) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: Make sure this does not introduce any errors\n try {\n if (disableShaclName) {\n throw new Error('Shacl name disabled');\n }\n return (0, utils_1.getShaclName)(term);\n // eslint-disable-next-line no-empty\n }\n catch (e) { }\n if (term.termType === 'NamedNode') {\n const namespace = getNamespace(term.value);\n if (namespace && namespace in this.prefixRev) {\n if (namespace in this.prefixRev) {\n return `${this.prefixRev[namespace]}:${term.value.slice(namespace.length)}`;\n }\n }\n return (0, rdf_string_ttl_1.termToString)(term);\n }\n if (term.termType === 'Literal') {\n if (term.datatypeString === 'http://www.w3.org/2001/XMLSchema#integer'\n || term.datatypeString === 'http://www.w3.org/2001/XMLSchema#boolean') {\n return term.value;\n }\n return (0, rdf_string_ttl_1.termToString)(term);\n }\n if (term.termType === 'BlankNode' && allowBlankNodes) {\n (0, rdf_string_ttl_1.termToString)(term);\n }\n throw new Error(`Invalid term type for extra statement ${term.value} (${term.termType})`);\n });\n }\n writeShapes() {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: Determine sorting\n /**\n * Get every nodeshape declared at the top level\n */\n for (const subject of this.store.getSubjectsOnce(new n3_1.NamedNode(\"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\" /* rdf.type */), new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#NodeShape\" /* sh.NodeShape */), null)) {\n if (this.store.getQuadsOnce(subject, new n3_1.NamedNode(\"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\" /* rdf.type */), new n3_1.NamedNode(\"http://www.w3.org/2000/01/rdf-schema#Class\" /* rdfs.Class */), null).length > 0) {\n this.writer.add('shapeClass ');\n }\n else {\n this.writer.add('shape ');\n }\n this.writer.add(yield this.termToString(subject));\n this.writer.add(' ');\n const targetClasses = this.store.getObjectsOnce(subject, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#targetClass\" /* sh.targetClass */), null);\n if (targetClasses.length > 0) {\n this.writer.add('-> ');\n for (const targetClass of targetClasses) {\n if (targetClass.termType === 'NamedNode') {\n this.writer.add(yield this.termToString(targetClass));\n }\n else {\n this.writer.add('!');\n this.writer.add(yield this.termToString(this.singleObject(targetClass, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#not\" /* sh.not */), true)));\n }\n this.writer.add(' ');\n }\n }\n const unusedPredicates = this.store.getPredicates(subject, null, null)\n .filter((property) => [\n new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#targetClass\" /* sh.targetClass */),\n new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#property\" /* sh.property */),\n // TODO: See if \"and\" should be here as well\n new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#or\" /* sh.or */),\n ...Object.keys(node_param_1.default).map((key) => new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#\" /* sh._ */ + key)),\n ].every((elem) => !property.equals(elem)));\n if (unusedPredicates.length > 0) {\n this.writer.add(';');\n this.writer.indent();\n this.writer.newLine(1);\n }\n if (this.extendedSyntax) {\n yield this.writeGivenTurtlePredicates(subject, unusedPredicates);\n }\n if (unusedPredicates.length > 0) {\n this.writer.add(' ');\n this.writer.deindent();\n }\n yield this.writeShapeBody(subject, false);\n }\n });\n }\n getSingleProperty(quad, allowedPredicates) {\n // let tempQuad = quad;\n let examining = [quad];\n try {\n let name = (0, utils_1.getShaclName)(quad.predicate);\n let type = 'pred';\n if (name === 'not') {\n const quads = this.store.getQuadsOnce(quad.object, null, null, null);\n // TODO: See if this line is necessary\n examining = examining.concat(quads);\n if (quads.length !== 1) {\n throw new Error('Can only handle having one predicate of \\'not\\'');\n }\n // eslint-disable-next-line no-param-reassign\n [quad] = quads;\n name = (0, utils_1.getShaclName)(quad.predicate);\n type = 'not';\n }\n if (!(name in allowedPredicates)) {\n throw new Error(`${name} is not allowed`);\n }\n return { name, type, object: quad.object };\n }\n catch (e) {\n this.store.addQuads(examining);\n }\n return undefined;\n }\n singleLayerPropertiesList(term, allowedPredicates) {\n const result = [];\n for (const quad of this.store.getQuadsOnce(term, null, null, null)) {\n const property = this.getSingleProperty(quad, allowedPredicates);\n if (property) {\n result.push(property);\n }\n }\n return result;\n }\n expectOneProperty(term, allowedPredicates) {\n const quads = this.store.getQuadsOnce(term, null, null, null);\n if (quads.length === 1) {\n const data = this.getSingleProperty(quads[0], allowedPredicates);\n if (data) {\n return data;\n }\n }\n this.store.addQuads(quads);\n return undefined;\n }\n orProperties(term, allowedPredicates) {\n const orProperties = [];\n for (const quad of this.store.getQuadsOnce(term, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#or\" /* sh.or */), null, null)) {\n const statement = [];\n for (const item of this.getList(quad.object)) {\n const property = this.expectOneProperty(item, allowedPredicates);\n if (!property) {\n // TODO HANDLE THIS CASE BY EXTENDING SHACLC SYNTAX\n this.store.addQuad(quad);\n throw new Error('Each entry of the \\'or\\' statement must declare exactly one property');\n }\n statement.push(property);\n }\n orProperties.push(statement);\n }\n return orProperties;\n }\n /**\n * Extract an rdf:list\n */\n getList(term) {\n // TODO: Fix gross type casting\n let termTemp = term;\n const list = [];\n // TODO: Handle poorly formed RDF lists\n while (!termTemp.equals(new n3_1.NamedNode(\"http://www.w3.org/1999/02/22-rdf-syntax-ns#nil\" /* rdf.nil */))) {\n list.push(this.singleObject(termTemp, new n3_1.NamedNode(\"http://www.w3.org/1999/02/22-rdf-syntax-ns#first\" /* rdf.first */), true));\n termTemp = this.singleObject(termTemp, new n3_1.NamedNode(\"http://www.w3.org/1999/02/22-rdf-syntax-ns#rest\" /* rdf.rest */), true);\n }\n return list;\n }\n writeIriLiteralOrArray(object) {\n return __awaiter(this, void 0, void 0, function* () {\n if (object.termType === 'BlankNode') {\n this.writer.add('[');\n let first = true;\n for (const term of this.getList(object)) {\n if (first) {\n first = false;\n }\n else {\n this.writer.add(' ');\n }\n this.writer.add(yield this.termToString(term));\n }\n this.writer.add(']');\n }\n else {\n this.writer.add(yield this.termToString(object));\n }\n });\n }\n singleObject(subject, predicate, strict) {\n var _a;\n return (_a = this.singleQuad(subject, predicate, strict)) === null || _a === void 0 ? void 0 : _a.object;\n }\n singleQuad(subject, predicate, strict = false) {\n const objects = this.store.getQuadsOnce(subject, predicate, null, null);\n if (strict && objects.length !== 1) {\n this.store.addQuads(objects);\n throw new Error(`The subject and predicate ${subject === null || subject === void 0 ? void 0 : subject.value} ${predicate === null || predicate === void 0 ? void 0 : predicate.value} must have exactly one object. Instead has ${objects.length}`);\n }\n if (objects.length > 1) {\n this.store.addQuads(objects);\n throw new Error(`The subject and predicate ${subject === null || subject === void 0 ? void 0 : subject.value} ${predicate === null || predicate === void 0 ? void 0 : predicate.value} can have at most one object. Instead has ${objects.length}`);\n }\n return objects.length === 1 ? objects[0] : undefined;\n }\n writeAssigment({ name, type, object }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (type === 'not') {\n this.writer.add('!');\n // object = this.singleObject(object, DataFactory.namedNode(sh._ + name), true)\n }\n this.writer.add(name);\n this.writer.add('=');\n yield this.writeIriLiteralOrArray(object);\n });\n }\n writeAtom({ name, type, object }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (type === 'not') {\n this.writer.add('!');\n }\n switch (name) {\n case 'node': {\n if (object.termType === 'NamedNode') {\n this.writer.add(`@${yield this.termToString(object)}`);\n }\n else if (object.termType === 'BlankNode') {\n yield this.writeShapeBody(object);\n }\n else {\n throw new Error('Invalid nested shape, must be blank node or IRI');\n }\n return;\n }\n case 'nodeKind': {\n this.writer.add((0, utils_1.getShaclName)(object));\n return;\n }\n case 'class': {\n this.writer.add(yield this.termToString(object));\n return;\n }\n case 'datatype': {\n this.writer.add(yield this.termToString(object));\n return;\n }\n default:\n this.writer.add(name);\n this.writer.add('=');\n yield this.writeIriLiteralOrArray(object);\n }\n });\n }\n writeAssigments(assignments, divider = ' ', first = true, shortcuts) {\n return __awaiter(this, void 0, void 0, function* () {\n for (const assignment of assignments) {\n if (first) {\n // eslint-disable-next-line no-param-reassign\n first = false;\n }\n else {\n this.writer.add(divider);\n }\n if (shortcuts) {\n yield this.writeAtom(assignment);\n }\n else {\n yield this.writeAssigment(assignment);\n }\n }\n });\n }\n writeParams(term, first = true, allowedParam, shortcuts = false, surroundings = false) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO Stream this part\n const or = this.orProperties(term, allowedParam);\n const params = this.singleLayerPropertiesList(term, allowedParam);\n if (surroundings && (or.length > 0 || params.length > 0)) {\n this.writer.newLine(1);\n }\n for (const statement of or) {\n if (first) {\n // eslint-disable-next-line no-param-reassign\n first = false;\n }\n else {\n this.writer.add(' ');\n }\n yield this.writeAssigments(statement, '|', true, shortcuts);\n }\n yield this.writeAssigments(params, ' ', first, shortcuts);\n if (surroundings && (or.length > 0 || params.length > 0)) {\n this.writer.add(' .');\n }\n });\n }\n writeShapeBody(term, nested = true) {\n return __awaiter(this, void 0, void 0, function* () {\n this.writer.add('{').indent();\n const properties = this.store.getObjectsOnce(term, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#property\" /* sh.property */), null);\n yield this.writeParams(term, true, node_param_1.default, false, true);\n for (const property of properties) {\n this.writer.newLine(1);\n yield this.writeProperty(property);\n }\n this.writer.deindent().newLine(1);\n if (nested) {\n this.writer.add('} .');\n }\n else {\n this.writer.add('}').newLine(1);\n }\n });\n }\n writeProperty(property) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.writePath(this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#path\" /* sh.path */), true));\n const min = this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#minCount\" /* sh.minCount */));\n const max = this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#maxCount\" /* sh.maxCount */));\n const nodeKind = this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#nodeKind\" /* sh.nodeKind */));\n // eslint-disable-next-line no-underscore-dangle\n const propertyClass = this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#class\" /* sh._class */));\n const datatype = this.singleObject(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#datatype\" /* sh.datatype */));\n const nodeShapes = this.store.getObjectsOnce(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#node\" /* sh.node */), null);\n if (nodeKind) {\n this.writer.add(' ');\n this.writer.add((0, utils_1.getShaclName)(nodeKind));\n }\n if (propertyClass) {\n this.writer.add(' ');\n this.writer.add(yield this.termToString(propertyClass));\n }\n if (datatype) {\n this.writer.add(' ');\n this.writer.add(yield this.termToString(datatype));\n }\n if (min !== undefined || max !== undefined) {\n this.writer.add(' [');\n if (min) {\n if (min.termType !== 'Literal' || min.datatypeString !== 'http://www.w3.org/2001/XMLSchema#integer') {\n throw new Error('Invalid min value, must me an integer literal');\n }\n this.writer.add(min.value);\n }\n else {\n this.writer.add('0');\n }\n this.writer.add('..');\n if (max) {\n if (max.termType !== 'Literal' || max.datatypeString !== 'http://www.w3.org/2001/XMLSchema#integer') {\n throw new Error('Invalid max value, must me an integer literal');\n }\n this.store.removeMatches(property, new n3_1.NamedNode(\"http://www.w3.org/ns/shacl#maxCount\" /* sh.maxCount */), undefined, undefined);\n this.writer.add(max.value);\n }\n else {\n this.writer.add('*');\n }\n this.writer.add(']');\n }\n yield this.writeParams(property, false, property_param_1.default, true);\n const nestedShapes = [];\n for (const node of nodeShapes) {\n if (node.termType === 'NamedNode') {\n this.writer.add(' ');\n this.writer.add(`@${yield this.termToString(node)}`);\n }\n else if (node.termType === 'BlankNode') {\n nestedShapes.push(node);\n }\n else {\n throw new Error('Invalid nested shape, must be blank node or IRI');\n }\n }\n for (const shape of nestedShapes) {\n this.writer.add(' ');\n yield this.writeShapeBody(shape);\n }\n if (this.extendedSyntax && this.store.getQuads(property, null, null, null).length > 0) {\n this.writer.add(' %');\n this.writer.indent();\n this.writer.newLine(1);\n yield this.writeTurtlePredicates(property);\n this.writer.deindent();\n this.writer.newLine(1);\n this.writer.add('%');\n }\n if (nestedShapes.length === 0) {\n this.writer.add(' .');\n }\n });\n }\n writeTurtlePredicates(term) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.writeGivenTurtlePredicates(term, this.store.getPredicates(term, null, null));\n });\n }\n writeGivenTurtlePredicates(term, predicates) {\n return __awaiter(this, void 0, void 0, function* () {\n let semi = false;\n if (predicates.some((predicate) => predicate.equals(n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')))) {\n const types = this.store.getObjectsOnce(term, n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), null);\n if (types.length > 0) {\n semi = true;\n this.writer.add('a ');\n yield this.writeTurtleObjects(types);\n }\n }\n for (const predicate of predicates) {\n if (!predicate.equals(n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'))) {\n if (semi) {\n this.writer.add(' ;');\n this.writer.newLine(1);\n }\n else {\n semi = true;\n }\n this.writer.add(yield this.termToString(predicate, true));\n this.writer.add(' ');\n yield this.writeTurtleObjects(this.store.getObjectsOnce(term, predicate, null));\n }\n }\n });\n }\n writeTurtleObjects(objects) {\n return __awaiter(this, void 0, void 0, function* () {\n const blankObjects = [];\n const nonBlankObjects = [];\n for (const object of objects) {\n if (object.termType === 'BlankNode'\n && [...this.store.match(null, null, object), ...this.store.match(null, object, null)].length === 0) {\n blankObjects.push(object);\n }\n else {\n nonBlankObjects.push(object);\n }\n }\n this.writer.add((yield Promise.all(nonBlankObjects.map((object) => this.termToString(object, true, true)))).join(', '));\n let comma = nonBlankObjects.length > 0;\n if (blankObjects.length > 0) {\n for (const blank of blankObjects) {\n if (comma) {\n this.writer.add(', ');\n }\n else {\n comma = true;\n }\n if (!(yield this.writeList(blank))) {\n this.writer.add('[');\n this.writer.indent();\n this.writer.newLine(1);\n yield this.writeTurtlePredicates(blank);\n this.writer.deindent();\n this.writer.newLine(1);\n this.writer.add(']');\n }\n }\n }\n });\n }\n writeList(object) {\n return __awaiter(this, void 0, void 0, function* () {\n let node = object;\n const elems = [];\n const quads = [];\n while (!node.equals(n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'))) {\n const first = this.store.getQuadsOnce(node, n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#first'), null, null);\n const rest = this.store.getQuadsOnce(node, n3_1.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#rest'), null, null);\n quads.push(...first, ...rest);\n if (first.length !== 1 || rest.length !== 1 || this.store.getQuads(node, null, null, null).length !== 0) {\n this.store.addQuads(quads);\n return false;\n }\n elems.push(first[0].object);\n node = rest[0].object;\n }\n let space = false;\n this.writer.add('(');\n for (const elem of elems) {\n if (space) {\n this.writer.add(' ');\n }\n else {\n space = true;\n }\n yield this.writeTurtleObjects([elem]);\n }\n this.writer.add(')');\n return true;\n });\n }\n writePath(term, braces = false) {\n return __awaiter(this, void 0, void 0, function* () {\n if (term.termType === 'NamedNode') {\n this.writer.add(yield this.termToString(term));\n }\n else if (term.termType === 'BlankNode') {\n const quads = this.store.getQuadsOnce(term, null, null, null);\n if (quads.length === 1) {\n const { predicate, object } = quads[0];\n switch (predicate.value) {\n case \"http://www.w3.org/ns/shacl#inversePath\" /* sh.inversePath */:\n this.writer.add('^');\n yield this.writePath(object, true);\n return;\n case \"http://www.w3.org/ns/shacl#alternativePath\" /* sh.alternativePath */: {\n const alternatives = this.getList(object);\n if (alternatives.length === 0) {\n throw new Error('Invalid Alternative Path - no options');\n }\n else if (alternatives.length === 1) {\n yield this.writePath(alternatives[0]);\n }\n else {\n if (braces) {\n this.writer.add('(');\n }\n let first = true;\n for (const alt of alternatives) {\n if (first) {\n first = false;\n }\n else {\n this.writer.add('|');\n }\n yield this.writePath(alt, true);\n }\n if (braces) {\n this.writer.add(')');\n }\n }\n return;\n }\n case \"http://www.w3.org/ns/shacl#zeroOrMorePath\" /* sh.zeroOrMorePath */:\n yield this.writePath(object, true);\n this.writer.add('*');\n return;\n case \"http://www.w3.org/ns/shacl#oneOrMorePath\" /* sh.oneOrMorePath */:\n yield this.writePath(object, true);\n this.writer.add('+');\n return;\n case \"http://www.w3.org/ns/shacl#zeroOrOnePath\" /* sh.zeroOrOnePath */:\n yield this.writePath(object, true);\n this.writer.add('?');\n return;\n default:\n throw new Error(`Invalid path type ${term.value}`);\n }\n }\n else {\n // TODO Make more efficient\n this.store.addQuads(quads);\n const sequence = this.getList(term);\n if (sequence.length === 0) {\n throw new Error('Invalid Path');\n // TODO: See if the following case is necessary\n // else if (sequence.length === 1) {\n // await this.writePath(sequence[0]);\n // }\n }\n else {\n if (braces) {\n this.writer.add('(');\n }\n let first = true;\n for (const alt of sequence) {\n if (first) {\n first = false;\n }\n else {\n this.writer.add('/');\n }\n yield this.writePath(alt, true);\n }\n if (braces) {\n this.writer.add(')');\n }\n }\n }\n }\n else {\n throw new Error('Path should be named node or blank node');\n }\n });\n }\n}\nexports.default = SHACLCWriter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * The base prefixes default to SHACLC syntax\n */\n// TODO: Double check the defaults\nexports.default = {\n owl: 'http://www.w3.org/2002/07/owl#',\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n rdfs: 'http://www.w3.org/2000/01/rdf-schema#',\n sh: 'http://www.w3.org/ns/shacl#',\n xsd: 'http://www.w3.org/2001/XMLSchema#',\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.write = void 0;\nconst n3_1 = require(\"n3\");\nconst ShaclcGenerator_1 = __importDefault(require(\"./ShaclcGenerator\"));\nconst writer_1 = __importDefault(require(\"./writer\"));\nconst volatile_store_1 = __importDefault(require(\"./volatile-store\"));\nfunction write(quads, options) {\n return __awaiter(this, void 0, void 0, function* () {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n try {\n let s = '';\n const volatileStore = new volatile_store_1.default(quads);\n const graphs = volatileStore.getGraphs(null, null, null);\n if (graphs.length > 1) {\n throw new Error('More than one graph found - can serialize in the default graph');\n }\n if (graphs.length === 1 && !graphs[0].equals(n3_1.DataFactory.defaultGraph())) {\n throw new Error(`Expected all triples to be in the default graph, instead triples were in ${graphs[0].value}`);\n }\n const w = new writer_1.default({\n write: (chunk) => {\n s += chunk;\n },\n end: () => {\n let extraQuads = volatileStore.getQuads(null, null, null, null);\n if (extraQuads.length === 0) {\n extraQuads = undefined;\n }\n resolve({\n text: s,\n extraQuads,\n });\n },\n });\n const writer = new ShaclcGenerator_1.default(volatileStore, w, options === null || options === void 0 ? void 0 : options.prefixes, undefined, (options === null || options === void 0 ? void 0 : options.errorOnUnused) !== false, options === null || options === void 0 ? void 0 : options.mintPrefixes, options === null || options === void 0 ? void 0 : options.fetch, options === null || options === void 0 ? void 0 : options.extendedSyntax);\n yield writer.write();\n }\n catch (e) {\n reject(e);\n }\n }));\n });\n}\nexports.write = write;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Allowed parameters for a NodeShape\n */\nexports.default = {\n targetNode: true,\n targetObjectsOf: true,\n targetSubjectsOf: true,\n deactivated: true,\n severity: true,\n message: true,\n class: true,\n datatype: true,\n nodeKind: true,\n minExclusive: true,\n minInclusive: true,\n maxExclusive: true,\n maxInclusive: true,\n minLength: true,\n maxLength: true,\n pattern: true,\n flags: true,\n languageIn: true,\n equals: true,\n disjoint: true,\n closed: true,\n ignoredProperties: true,\n hasValue: true,\n in: true,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Allowed parameters for a PropertyShape\n */\nexports.default = {\n deactivated: true,\n severity: true,\n message: true,\n class: true,\n datatype: true,\n nodeKind: true,\n minExclusive: true,\n minInclusive: true,\n maxExclusive: true,\n maxInclusive: true,\n minLength: true,\n maxLength: true,\n pattern: true,\n flags: true,\n languageIn: true,\n uniqueLang: true,\n equals: true,\n disjoint: true,\n lessThan: true,\n lessThanOrEquals: true,\n qualifiedValueShape: true,\n qualifiedMinCount: true,\n qualifiedMaxCount: true,\n qualifiedValueShapesDisjoint: true,\n closed: true,\n ignoredProperties: true,\n hasValue: true,\n in: true,\n // This is here so that we can exract it from alts\n node: true,\n};\n","\"use strict\";\n/**\n * Get the frame of an IRI that we expect to be in the SHACL namespace\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getShaclName = void 0;\n// eslint-disable-next-line import/prefer-default-export\nfunction getShaclName(term) {\n if (term.termType !== 'NamedNode' || !term.value.startsWith(\"http://www.w3.org/ns/shacl#\" /* sh._ */)) {\n throw new Error(`Term ${term.value} is not part of the SHACL namespace`);\n }\n return term.value.slice(27);\n}\nexports.getShaclName = getShaclName;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable camelcase */\n/**\n * Convenience class that extends the n3 store API that deletes\n * quads as they are extracted from the store\n */\nconst n3_1 = require(\"n3\");\nclass VolitileStore extends n3_1.Store {\n getQuadsOnce(s, p, o, g) {\n const quads = this.getQuads(s, p, o, g);\n this.removeQuads(quads);\n return quads;\n }\n getSubjectsOnce(p, o, g) {\n return this.getQuadsOnce(null, p, o, g).map((term) => term.subject);\n }\n getObjectsOnce(s, p, g) {\n return this.getQuadsOnce(s, p, null, g).map((term) => term.object);\n }\n}\nexports.default = VolitileStore;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Convenience class used to write chunks\n */\nclass Writer {\n constructor(options) {\n this.indents = 0;\n this.write = options.write;\n this.end = options.end;\n }\n indent() {\n this.indents += 1;\n return this;\n }\n deindent() {\n if (this.indents < 1) {\n throw new Error(`Trying to deindent when indent is only ${this.indents}`);\n }\n this.indents -= 1;\n return this;\n }\n add(s, newLine = false) {\n this.write(newLine ? `\\n${'\\t'.repeat(this.indents)}${s}` : s, 'utf-8');\n return this;\n }\n newLine(no = 2) {\n this.write('\\n'.repeat(no) + '\\t'.repeat(this.indents), 'utf-8');\n return this;\n }\n}\nexports.default = Writer;\n","(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} [raw] True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.toSparqlJs = exports.toSparql = exports.Factory = exports.Algebra = exports.translate = void 0;\nconst sparqlAlgebra_1 = __importDefault(require(\"./lib/sparqlAlgebra\"));\nexports.translate = sparqlAlgebra_1.default;\nconst Algebra = __importStar(require(\"./lib/algebra\"));\nexports.Algebra = Algebra;\nconst factory_1 = __importDefault(require(\"./lib/factory\"));\nexports.Factory = factory_1.default;\nconst sparql_1 = require(\"./lib/sparql\");\nObject.defineProperty(exports, \"toSparql\", { enumerable: true, get: function () { return sparql_1.toSparql; } });\nObject.defineProperty(exports, \"toSparqlJs\", { enumerable: true, get: function () { return sparql_1.toSparqlJs; } });\nconst util_1 = __importDefault(require(\"./lib/util\"));\nexports.Util = util_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expressionTypes = exports.types = void 0;\nvar types;\n(function (types) {\n types[\"ALT\"] = \"alt\";\n types[\"ASK\"] = \"ask\";\n types[\"BGP\"] = \"bgp\";\n types[\"CONSTRUCT\"] = \"construct\";\n types[\"DESCRIBE\"] = \"describe\";\n types[\"DISTINCT\"] = \"distinct\";\n types[\"EXPRESSION\"] = \"expression\";\n types[\"EXTEND\"] = \"extend\";\n types[\"FILTER\"] = \"filter\";\n types[\"FROM\"] = \"from\";\n types[\"GRAPH\"] = \"graph\";\n types[\"GROUP\"] = \"group\";\n types[\"INV\"] = \"inv\";\n types[\"JOIN\"] = \"join\";\n types[\"LEFT_JOIN\"] = \"leftjoin\";\n types[\"LINK\"] = \"link\";\n types[\"MINUS\"] = \"minus\";\n types[\"NOP\"] = \"nop\";\n types[\"NPS\"] = \"nps\";\n types[\"ONE_OR_MORE_PATH\"] = \"OneOrMorePath\";\n types[\"ORDER_BY\"] = \"orderby\";\n types[\"PATH\"] = \"path\";\n types[\"PATTERN\"] = \"pattern\";\n types[\"PROJECT\"] = \"project\";\n types[\"REDUCED\"] = \"reduced\";\n types[\"SEQ\"] = \"seq\";\n types[\"SERVICE\"] = \"service\";\n types[\"SLICE\"] = \"slice\";\n types[\"UNION\"] = \"union\";\n types[\"VALUES\"] = \"values\";\n types[\"ZERO_OR_MORE_PATH\"] = \"ZeroOrMorePath\";\n types[\"ZERO_OR_ONE_PATH\"] = \"ZeroOrOnePath\";\n types[\"COMPOSITE_UPDATE\"] = \"compositeupdate\";\n types[\"DELETE_INSERT\"] = \"deleteinsert\";\n types[\"LOAD\"] = \"load\";\n types[\"CLEAR\"] = \"clear\";\n types[\"CREATE\"] = \"create\";\n types[\"DROP\"] = \"drop\";\n types[\"ADD\"] = \"add\";\n types[\"MOVE\"] = \"move\";\n types[\"COPY\"] = \"copy\";\n})(types = exports.types || (exports.types = {}));\nvar expressionTypes;\n(function (expressionTypes) {\n expressionTypes[\"AGGREGATE\"] = \"aggregate\";\n expressionTypes[\"EXISTENCE\"] = \"existence\";\n expressionTypes[\"NAMED\"] = \"named\";\n expressionTypes[\"OPERATOR\"] = \"operator\";\n expressionTypes[\"TERM\"] = \"term\";\n expressionTypes[\"WILDCARD\"] = \"wildcard\";\n})(expressionTypes = exports.expressionTypes || (exports.expressionTypes = {}));\n//# sourceMappingURL=algebra.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst A = __importStar(require(\"./algebra\"));\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nclass Factory {\n constructor(dataFactory) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.stringType = this.createTerm('http://www.w3.org/2001/XMLSchema#string');\n }\n createAlt(input, flatten = true) { return this.flattenMulti({ type: A.types.ALT, input }, flatten); }\n createAsk(input) { return { type: A.types.ASK, input }; }\n createBoundAggregate(variable, aggregate, expression, distinct, separator) {\n const result = this.createAggregateExpression(aggregate, expression, distinct, separator);\n result.variable = variable;\n return result;\n }\n createBgp(patterns) { return { type: A.types.BGP, patterns }; }\n createConstruct(input, template) { return { type: A.types.CONSTRUCT, input, template }; }\n createDescribe(input, terms) { return { type: A.types.DESCRIBE, input, terms }; }\n createDistinct(input) { return { type: A.types.DISTINCT, input }; }\n createExtend(input, variable, expression) { return { type: A.types.EXTEND, input, variable, expression }; }\n createFrom(input, def, named) { return { type: A.types.FROM, input, default: def, named }; }\n createFilter(input, expression) { return { type: A.types.FILTER, input, expression }; }\n createGraph(input, name) { return { type: A.types.GRAPH, input, name }; }\n createGroup(input, variables, aggregates) { return { type: A.types.GROUP, input, variables, aggregates }; }\n createInv(path) { return { type: A.types.INV, path }; }\n createJoin(input, flatten = true) { return this.flattenMulti({ type: A.types.JOIN, input }, flatten); }\n createLeftJoin(left, right, expression) {\n if (expression)\n return { type: A.types.LEFT_JOIN, input: [left, right], expression };\n return { type: A.types.LEFT_JOIN, input: [left, right] };\n }\n createLink(iri) { return { type: A.types.LINK, iri }; }\n createMinus(left, right) { return { type: A.types.MINUS, input: [left, right] }; }\n createNop() { return { type: A.types.NOP }; }\n createNps(iris) { return { type: A.types.NPS, iris }; }\n createOneOrMorePath(path) { return { type: A.types.ONE_OR_MORE_PATH, path }; }\n createOrderBy(input, expressions) { return { type: A.types.ORDER_BY, input, expressions }; }\n createPath(subject, predicate, object, graph) {\n if (graph)\n return { type: A.types.PATH, subject, predicate, object, graph };\n return { type: A.types.PATH, subject, predicate, object, graph: this.dataFactory.defaultGraph() };\n }\n createPattern(subject, predicate, object, graph) {\n const pattern = this.dataFactory.quad(subject, predicate, object, graph);\n pattern.type = A.types.PATTERN;\n return pattern;\n }\n createProject(input, variables) { return { type: A.types.PROJECT, input, variables }; }\n createReduced(input) { return { type: A.types.REDUCED, input }; }\n createSeq(input, flatten = true) { return this.flattenMulti({ type: A.types.SEQ, input }, flatten); }\n createService(input, name, silent) { return { type: A.types.SERVICE, input, name, silent: Boolean(silent) }; }\n createSlice(input, start, length) {\n start = start || 0;\n if (length !== undefined)\n return { type: A.types.SLICE, input, start, length };\n return { type: A.types.SLICE, input, start };\n }\n createUnion(input, flatten = true) { return this.flattenMulti({ type: A.types.UNION, input }, flatten); }\n createValues(variables, bindings) { return { type: A.types.VALUES, variables, bindings }; }\n createZeroOrMorePath(path) { return { type: A.types.ZERO_OR_MORE_PATH, path }; }\n createZeroOrOnePath(path) { return { type: A.types.ZERO_OR_ONE_PATH, path }; }\n createAggregateExpression(aggregator, expression, distinct, separator) {\n if (separator)\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, separator, distinct };\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, distinct };\n }\n createExistenceExpression(not, input) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.EXISTENCE, not, input }; }\n createNamedExpression(name, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.NAMED, name, args }; }\n createOperatorExpression(operator, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.OPERATOR, operator, args }; }\n createTermExpression(term) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.TERM, term }; }\n createWildcardExpression() { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.WILDCARD, wildcard: new sparqljs_1.Wildcard() }; }\n createTerm(str) {\n if (str[0] === '$') {\n str = str.replace('$', '?');\n }\n return (0, rdf_string_1.stringToTerm)(str, this.dataFactory);\n }\n // Update functions\n createCompositeUpdate(updates) { return { type: A.types.COMPOSITE_UPDATE, updates }; }\n createDeleteInsert(deleteQuads, insertQuads, where) {\n const result = { type: A.types.DELETE_INSERT };\n if (deleteQuads)\n result.delete = deleteQuads;\n if (insertQuads)\n result.insert = insertQuads;\n if (where)\n result.where = where;\n return result;\n }\n createLoad(source, destination, silent) {\n const result = { type: A.types.LOAD, source };\n if (destination)\n result.destination = destination;\n return this.addSilent(result, Boolean(silent));\n }\n createClear(source, silent) {\n return this.addSilent({ type: A.types.CLEAR, source }, Boolean(silent));\n }\n createCreate(source, silent) {\n return this.addSilent({ type: A.types.CREATE, source }, Boolean(silent));\n }\n createDrop(source, silent) {\n return this.addSilent({ type: A.types.DROP, source }, Boolean(silent));\n }\n createAdd(source, destination, silent) {\n return this.addSilent({ type: A.types.ADD, source, destination }, Boolean(silent));\n }\n createMove(source, destination, silent) {\n return this.addSilent({ type: A.types.MOVE, source, destination }, Boolean(silent));\n }\n createCopy(source, destination, silent) {\n return this.addSilent({ type: A.types.COPY, source, destination }, Boolean(silent));\n }\n addSilent(input, silent) {\n if (silent)\n input.silent = silent;\n return input;\n }\n flattenMulti(input, flatten) {\n if (!flatten) {\n return input;\n }\n const type = input.type;\n const children = input.input;\n let newChildren = [];\n for (const child of children) {\n if (child.type === type) {\n newChildren.push(...child.input);\n }\n else {\n newChildren.push(child);\n }\n }\n input.input = newChildren;\n return input;\n }\n}\nexports.default = Factory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toSparqlJs = exports.toSparql = void 0;\nconst rdf_isomorphic_1 = require(\"rdf-isomorphic\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst types = Algebra.types;\nconst eTypes = Algebra.expressionTypes;\nlet context;\nconst factory = new factory_1.default();\nfunction toSparql(op, options = {}) {\n let generator = new sparqljs_1.Generator(options);\n return generator.stringify(toSparqlJs(op));\n}\nexports.toSparql = toSparql;\nfunction toSparqlJs(op) {\n resetContext();\n op = removeQuads(op);\n let result = translateOperation(op);\n if (result.type === 'group')\n return result.patterns[0];\n return result;\n}\nexports.toSparqlJs = toSparqlJs;\nfunction resetContext() {\n context = { project: false, extend: [], group: [], aggregates: [], order: [] };\n}\nfunction translateOperation(op) {\n // this allows us to differentiate between BIND and SELECT when translating EXTEND\n // GRAPH was added because the way graphs get added back here is not the same as how they get added in the future\n // ^ seems fine but might have to be changed if problems get detected in the future\n if (op.type !== types.EXTEND && op.type !== types.ORDER_BY && op.type !== types.GRAPH)\n context.project = false;\n switch (op.type) {\n case types.EXPRESSION: return translateExpression(op);\n case types.ASK: return translateProject(op, types.ASK);\n case types.BGP: return translateBgp(op);\n case types.CONSTRUCT: return translateConstruct(op);\n case types.DESCRIBE: return translateProject(op, types.DESCRIBE);\n case types.DISTINCT: return translateDistinct(op);\n case types.EXTEND: return translateExtend(op);\n case types.FROM: return translateFrom(op);\n case types.FILTER: return translateFilter(op);\n case types.GRAPH: return translateGraph(op);\n case types.GROUP: return translateGroup(op);\n case types.JOIN: return translateJoin(op);\n case types.LEFT_JOIN: return translateLeftJoin(op);\n case types.MINUS: return translateMinus(op);\n case types.NOP: return {};\n case types.ORDER_BY: return translateOrderBy(op);\n case types.PATH: return translatePath(op);\n case types.PATTERN: return translatePattern(op);\n case types.PROJECT: return translateProject(op, types.PROJECT);\n case types.REDUCED: return translateReduced(op);\n case types.SERVICE: return translateService(op);\n case types.SLICE: return translateSlice(op);\n case types.UNION: return translateUnion(op);\n case types.VALUES: return translateValues(op);\n // UPDATE operations\n case types.COMPOSITE_UPDATE: return translateCompositeUpdate(op);\n case types.DELETE_INSERT: return translateDeleteInsert(op);\n case types.LOAD: return translateLoad(op);\n case types.CLEAR: return translateClear(op);\n case types.CREATE: return translateCreate(op);\n case types.DROP: return translateDrop(op);\n case types.ADD: return translateAdd(op);\n case types.MOVE: return translateMove(op);\n case types.COPY: return translateCopy(op);\n }\n throw new Error(`Unknown Operation type ${op.type}`);\n}\nfunction translateExpression(expr) {\n switch (expr.expressionType) {\n case eTypes.AGGREGATE: return translateAggregateExpression(expr);\n case eTypes.EXISTENCE: return translateExistenceExpression(expr);\n case eTypes.NAMED: return translateNamedExpression(expr);\n case eTypes.OPERATOR: return translateOperatorExpression(expr);\n case eTypes.TERM: return translateTermExpression(expr);\n case eTypes.WILDCARD: return translateWildcardExpression(expr);\n }\n throw new Error(`Unknown Expression Operation type ${expr.expressionType}`);\n}\nfunction translatePathComponent(path) {\n switch (path.type) {\n case types.ALT: return translateAlt(path);\n case types.INV: return translateInv(path);\n case types.LINK: return translateLink(path);\n case types.NPS: return translateNps(path);\n case types.ONE_OR_MORE_PATH: return translateOneOrMorePath(path);\n case types.SEQ: return translateSeq(path);\n case types.ZERO_OR_MORE_PATH: return translateZeroOrMorePath(path);\n case types.ZERO_OR_ONE_PATH: return translateZeroOrOnePath(path);\n }\n throw new Error(`Unknown Path type ${path.type}`);\n}\nfunction translateTerm(term) {\n return (0, rdf_string_1.termToString)(term);\n}\n// ------------------------- EXPRESSIONS -------------------------\nfunction translateAggregateExpression(expr) {\n const result = {\n expression: translateExpression(expr.expression),\n type: 'aggregate',\n aggregation: expr.aggregator,\n distinct: expr.distinct\n };\n if (expr.separator)\n result.separator = expr.separator;\n return result;\n}\nfunction translateExistenceExpression(expr) {\n return {\n type: 'operation',\n operator: expr.not ? 'notexists' : 'exists',\n args: [{\n type: 'group',\n patterns: util_1.default.flatten([translateOperation(expr.input)])\n }]\n };\n}\nfunction translateNamedExpression(expr) {\n return {\n type: 'functionCall',\n // Wrong typings\n function: expr.name,\n args: expr.args.map(translateExpression)\n };\n}\nfunction translateOperatorExpression(expr) {\n if (expr.operator === 'desc') {\n const result = { expression: translateExpression(expr.args[0]) };\n result.descending = true;\n return result;\n }\n const result = {\n type: 'operation',\n operator: expr.operator,\n args: expr.args.map(translateExpression)\n };\n if (result.operator === 'in' || result.operator === 'notin')\n result.args = [result.args[0]].concat([result.args.slice(1)]);\n return result;\n}\nfunction translateTermExpression(expr) {\n return expr.term;\n}\nfunction translateWildcardExpression(expr) {\n return expr.wildcard;\n}\nfunction arrayToPattern(input) {\n if (!Array.isArray(input))\n return input;\n if (input.length === 1)\n return input[0];\n return {\n type: 'group',\n patterns: input,\n };\n}\n// ------------------------- OPERATIONS -------------------------\n// these get translated in the project function\nfunction translateBoundAggregate(op) {\n return op;\n}\nfunction translateBgp(op) {\n let patterns = op.patterns.map(translatePattern);\n if (patterns.length === 0)\n return null;\n return {\n type: 'bgp',\n triples: patterns\n };\n}\nfunction translateConstruct(op) {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: op.template.map(translatePattern),\n where: util_1.default.flatten([\n translateOperation(op.input)\n ])\n };\n}\nfunction translateDistinct(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].distinct = true;\n return result;\n}\nfunction translateExtend(op) {\n if (context.project) {\n context.extend.push(op);\n return translateOperation(op.input);\n }\n return util_1.default.flatten([\n translateOperation(op.input),\n {\n type: 'bind',\n variable: op.variable,\n expression: translateExpression(op.expression)\n }\n ]);\n}\nfunction translateFrom(op) {\n const result = translateOperation(op.input);\n // Can't type as CONSTRUCT queries do not have `from` field in their type\n let obj = result;\n // project is nested in group object\n if (result.type === 'group') {\n obj = result.patterns[0];\n }\n obj.from = {\n default: op.default,\n named: op.named\n };\n return result;\n}\nfunction translateFilter(op) {\n return {\n type: 'group',\n patterns: util_1.default.flatten([\n translateOperation(op.input),\n { type: 'filter', expression: translateExpression(op.expression) }\n ])\n };\n}\nfunction translateGraph(op) {\n return {\n type: 'graph',\n patterns: util_1.default.flatten([translateOperation(op.input)]),\n name: op.name\n };\n}\nfunction translateGroup(op) {\n const input = translateOperation(op.input);\n const aggs = op.aggregates.map(translateBoundAggregate);\n context.aggregates.push(...aggs);\n // TODO: apply possible extends\n context.group.push(...op.variables);\n return input;\n}\nfunction translateJoin(op) {\n const arr = util_1.default.flatten(op.input.map(translateOperation));\n // Merge bgps\n // This is possible if one side was a path and the other a bgp for example\n return arr.reduce((result, val) => {\n if (val.type !== 'bgp' || result.length == 0 || result[result.length - 1].type !== 'bgp') {\n result.push(val);\n }\n else {\n result[result.length - 1].triples.push(...val.triples);\n }\n return result;\n }, []);\n}\nfunction translateLeftJoin(op) {\n const leftjoin = {\n type: 'optional',\n patterns: [\n translateOperation(op.input[1])\n ]\n };\n if (op.expression) {\n leftjoin.patterns.push({\n type: 'filter',\n expression: translateExpression(op.expression)\n });\n }\n leftjoin.patterns = util_1.default.flatten(leftjoin.patterns);\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n leftjoin\n ]);\n}\nfunction translateMinus(op) {\n let patterns = translateOperation(op.input[1]);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n {\n type: 'minus',\n patterns: patterns\n }\n ]);\n}\nfunction translateOrderBy(op) {\n context.order.push(...op.expressions);\n return translateOperation(op.input);\n}\nfunction translatePath(op) {\n return {\n type: 'bgp',\n triples: [{\n subject: op.subject,\n predicate: translatePathComponent(op.predicate),\n object: op.object\n }]\n };\n}\nfunction translatePattern(op) {\n return {\n subject: op.subject,\n predicate: op.predicate,\n object: op.object\n };\n}\nfunction replaceAggregatorVariables(s, map) {\n let st = util_1.default.isSimpleTerm(s) ? translateTerm(s) : s;\n if (typeof st === 'string') {\n if (map[st])\n return map[st];\n }\n else if (Array.isArray(s)) {\n s = s.map(e => replaceAggregatorVariables(e, map));\n }\n else {\n for (let key of Object.keys(s))\n s[key] = replaceAggregatorVariables(s[key], map);\n }\n return s;\n}\nfunction translateProject(op, type) {\n const result = {\n type: 'query',\n prefixes: {}\n };\n // Makes typing easier in some places\n const select = result;\n let variables;\n if (type === types.PROJECT) {\n result.queryType = 'SELECT';\n variables = op.variables;\n }\n else if (type === types.ASK) {\n result.queryType = 'ASK';\n }\n else if (type === types.DESCRIBE) {\n result.queryType = 'DESCRIBE';\n variables = op.terms;\n }\n // backup values in case of nested queries\n // everything in extend, group, etc. is irrelevant for this project call\n const extend = context.extend;\n const group = context.group;\n const aggregates = context.aggregates;\n const order = context.order;\n resetContext();\n context.project = true;\n let input = util_1.default.flatten([translateOperation(op.input)]);\n if (input.length === 1 && input[0].type === 'group')\n input = input[0].patterns;\n result.where = input;\n let aggregators = {};\n // these can not reference each other\n for (let agg of context.aggregates)\n aggregators[translateTerm(agg.variable)] = translateExpression(agg);\n // do these in reverse order since variables in one extend might apply to an expression in an other extend\n let extensions = {};\n for (let i = context.extend.length - 1; i >= 0; --i) {\n let e = context.extend[i];\n extensions[translateTerm(e.variable)] = replaceAggregatorVariables(translateExpression(e.expression), aggregators);\n }\n if (context.group.length > 0)\n select.group = context.group.map(variable => {\n let v = translateTerm(variable);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // make sure there is only 1 'AS' statement\n return {\n variable,\n expression: result\n };\n }\n return { expression: variable };\n });\n // descending expressions will already be in the correct format due to the structure of those\n if (context.order.length > 0)\n select.order = context.order.map(translateOperation).map(o => o.descending ? o : ({ expression: o }));\n // this needs to happen after the group because it might depend on variables generated there\n if (variables) {\n select.variables = variables.map((term) => {\n let v = translateTerm(term);\n if (extensions[v])\n return {\n variable: term,\n expression: extensions[v]\n };\n return term;\n });\n // if the * didn't match any variables this would be empty\n if (select.variables.length === 0)\n select.variables = [new sparqljs_1.Wildcard()];\n }\n // convert filter to 'having' if it contains an aggregator variable\n // could always convert, but is nicer to use filter when possible\n if (result.where.length > 0 && result.where[result.where.length - 1].type === 'filter') {\n const filter = result.where[result.where.length - 1];\n if (objectContainsValues(filter, Object.keys(aggregators))) {\n select.having = util_1.default.flatten([replaceAggregatorVariables(filter.expression, aggregators)]);\n result.where.splice(-1);\n }\n }\n context.extend = extend;\n context.group = group;\n context.aggregates = aggregates;\n context.order = order;\n // subqueries need to be in a group, this will be removed again later for the root query\n return { type: 'group', patterns: [select] };\n}\nfunction objectContainsValues(o, vals) {\n if (util_1.default.isSimpleTerm(o))\n return vals.indexOf(translateTerm(o)) >= 0;\n if (Array.isArray(o))\n return o.some(e => objectContainsValues(e, vals));\n if (o === Object(o))\n return Object.keys(o).some(key => objectContainsValues(o[key], vals));\n return vals.indexOf(o) >= 0;\n}\nfunction translateReduced(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].reduced = true;\n return result;\n}\nfunction translateService(op) {\n let patterns = translateOperation(op.input);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return {\n type: 'service',\n // Typings are wrong, name can also be a variable\n name: op.name,\n silent: op.silent,\n patterns\n };\n}\nfunction translateSlice(op) {\n let result = translateOperation(op.input);\n // results can be nested in a group object\n let obj = result;\n if (result.type && result.type === 'group')\n obj = result.patterns[0];\n if (op.start !== 0)\n obj.offset = op.start;\n if (op.length !== undefined)\n obj.limit = op.length;\n return result;\n}\nfunction translateUnion(op) {\n return {\n type: 'union',\n patterns: op.input.map(translateOperation).map(arrayToPattern),\n };\n}\nfunction translateValues(op) {\n // TODO: check if handled correctly when outside of select block\n return {\n type: 'values',\n values: op.bindings.map(binding => {\n let result = {};\n for (let v of op.variables) {\n let s = `?${v.value}`;\n if (binding[s])\n result[s] = binding[s];\n else\n result[s] = undefined;\n }\n return result;\n })\n };\n}\n// PATH COMPONENTS\nfunction translateAlt(path) {\n const mapped = path.input.map(translatePathComponent);\n if (mapped.every(entry => 'pathType' in entry && entry.pathType === '!')) {\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: util_1.default.flatten(mapped.map(entry => entry.items))\n }]\n };\n }\n return {\n type: 'path',\n pathType: '|',\n items: mapped\n };\n}\nfunction translateInv(path) {\n if (path.path.type === types.NPS) {\n const inv = path.path.iris.map((iri) => {\n return {\n type: 'path',\n pathType: '^',\n items: [iri]\n };\n });\n if (inv.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: inv\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: inv\n }]\n };\n }\n return {\n type: 'path',\n pathType: '^',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateLink(path) {\n return path.iri;\n}\nfunction translateNps(path) {\n if (path.iris.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: path.iris\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: path.iris\n }]\n };\n}\nfunction translateOneOrMorePath(path) {\n return {\n type: 'path',\n pathType: '+',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateSeq(path) {\n return {\n type: 'path',\n pathType: '/',\n items: path.input.map(translatePathComponent)\n };\n}\nfunction translateZeroOrMorePath(path) {\n return {\n type: 'path',\n pathType: '*',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateZeroOrOnePath(path) {\n // Typings are missing '?' operator\n return {\n type: 'path',\n // Typings are missing this path\n pathType: '?',\n items: [translatePathComponent(path.path)]\n };\n}\n// UPDATE OPERATIONS\nfunction translateCompositeUpdate(op) {\n const updates = op.updates.map(update => {\n const result = translateOperation(update);\n return result.updates[0];\n });\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateDeleteInsert(op) {\n var _a;\n let where = op.where;\n let use = undefined;\n if (where && where.type === types.FROM) {\n let from = where;\n where = from.input;\n use = { default: from.default, named: from.named };\n }\n const updates = [{\n updateType: 'insertdelete',\n delete: convertUpdatePatterns(op.delete || []),\n insert: convertUpdatePatterns(op.insert || []),\n }];\n // Typings don't support 'using' yet\n if (use)\n updates[0].using = use;\n // corresponds to empty array in SPARQL.js\n if (!where || (where.type === types.BGP && where.patterns.length === 0))\n updates[0].where = [];\n else {\n const graphs = [];\n let result = translateOperation(removeQuadsRecursive(where, graphs));\n if (result.type === 'group')\n updates[0].where = result.patterns;\n else\n updates[0].where = [result];\n // graph might not be applied yet since there was no project\n // this can only happen if there was a single graph\n if (graphs.length > 0) {\n if (graphs.length !== 1)\n throw new Error('This is unexpected and might indicate an error in graph handling for updates.');\n // ignore if default graph\n if (((_a = graphs[0]) === null || _a === void 0 ? void 0 : _a.value) !== '')\n updates[0].where = [{ type: 'graph', patterns: updates[0].where, name: graphs[0] }];\n }\n }\n // not really necessary but can give cleaner looking queries\n if (!op.delete && !op.where) {\n updates[0].updateType = 'insert';\n delete updates[0].delete;\n delete updates[0].where;\n }\n else if (!op.insert && !op.where) {\n delete updates[0].insert;\n delete updates[0].where;\n if (op.delete.some(pattern => pattern.subject.termType === 'Variable' ||\n pattern.predicate.termType === 'Variable' ||\n pattern.object.termType === 'Variable'))\n updates[0].updateType = 'deletewhere';\n else\n updates[0].updateType = 'delete';\n }\n else if (!op.insert && op.where && op.where.type === 'bgp') {\n if ((0, rdf_isomorphic_1.isomorphic)(op.delete, op.where.patterns)) {\n delete updates[0].where;\n updates[0].updateType = 'deletewhere';\n }\n }\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateLoad(op) {\n // Typings are wrong, destiniation is optional\n const updates = [{ type: 'load', silent: Boolean(op.silent), source: op.source }];\n if (op.destination)\n updates[0].destination = op.destination;\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateClear(op) {\n return translateClearCreateDrop(op, 'clear');\n}\nfunction translateCreate(op) {\n return translateClearCreateDrop(op, 'create');\n}\nfunction translateDrop(op) {\n return translateClearCreateDrop(op, 'drop');\n}\nfunction translateClearCreateDrop(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n // Typings are wrong, type is not required, see for example \"clear-drop\" test\n if (op.source === 'DEFAULT')\n updates[0].graph = { default: true };\n else if (op.source === 'NAMED')\n updates[0].graph = { named: true };\n else if (op.source === 'ALL')\n updates[0].graph = { all: true };\n else\n updates[0].graph = { type: 'graph', name: op.source };\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateAdd(op) {\n return translateUpdateGraphShortcut(op, 'add');\n}\nfunction translateMove(op) {\n return translateUpdateGraphShortcut(op, 'move');\n}\nfunction translateCopy(op) {\n return translateUpdateGraphShortcut(op, 'copy');\n}\nfunction translateUpdateGraphShortcut(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n updates[0].source = op.source === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.source };\n updates[0].destination = op.destination === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.destination };\n return { prefixes: {}, type: 'update', updates };\n}\n// similar to removeQuads but more simplified for UPDATEs\nfunction convertUpdatePatterns(patterns) {\n if (!patterns)\n return [];\n const graphs = {};\n patterns.forEach(pattern => {\n const graph = pattern.graph.value;\n if (!graphs[graph])\n graphs[graph] = [];\n graphs[graph].push(pattern);\n });\n return Object.keys(graphs).map(graph => {\n if (graph === '')\n return { type: 'bgp', triples: graphs[graph].map(translatePattern) };\n return { type: 'graph', triples: graphs[graph].map(translatePattern), name: graphs[graph][0].graph };\n });\n}\nfunction removeQuads(op) {\n return removeQuadsRecursive(op, []);\n}\n// remove quads\nfunction removeQuadsRecursive(op, graphs) {\n if (Array.isArray(op))\n return op.map(sub => removeQuadsRecursive(sub, graphs));\n if (!op.type)\n return op;\n // UPDATE operations with Patterns handle graphs a bit differently\n if (op.type === types.DELETE_INSERT)\n return op;\n if ((op.type === types.PATTERN || op.type === types.PATH) && op.graph) {\n graphs.push(op.graph);\n // Remove non-default graphs\n if (op.graph.name !== '')\n return op.type === types.PATTERN ?\n factory.createPattern(op.subject, op.predicate, op.object) :\n factory.createPath(op.subject, op.predicate, op.object);\n return op;\n }\n const result = {};\n const keyGraphs = {}; // unique graph per key\n const globalNames = {}; // track all the unique graph names for the entire Operation\n for (let key of Object.keys(op)) {\n const newGraphs = [];\n result[key] = removeQuadsRecursive(op[key], newGraphs);\n if (newGraphs.length > 0) {\n keyGraphs[key] = newGraphs;\n for (const graph of newGraphs) {\n globalNames[graph.value] = graph;\n }\n }\n }\n const graphNameSet = Object.keys(globalNames);\n if (graphNameSet.length > 0) {\n // We also need to create graph statement if we are at the edge of certain operations\n if (graphNameSet.length === 1 && ![types.PROJECT, types.SERVICE].includes(op.type))\n graphs.push(globalNames[graphNameSet[0]]);\n else if (op.type === types.BGP) {\n // This is the specific case that got changed because of using quads.\n return splitBgpToGraphs(op, keyGraphs.patterns);\n }\n else {\n // multiple graphs (or project), need to create graph objects for them\n for (let key of Object.keys(keyGraphs)) {\n const value = result[key];\n if (Array.isArray(value))\n result[key] = value.map((child, idx) => keyGraphs[key][0].value === '' ? child : factory.createGraph(child, keyGraphs[key][idx]));\n else if (keyGraphs[key][0].value !== '')\n result[key] = factory.createGraph(value, keyGraphs[key][0]);\n }\n }\n }\n return result;\n}\n// `graphs` should be an array of length identical to `op.patterns`, containing the corresponding graph for each triple.\nfunction splitBgpToGraphs(op, graphs) {\n var _a;\n // Split patterns per graph\n const graphPatterns = {};\n for (let i = 0; i < op.patterns.length; ++i) {\n const pattern = op.patterns[i];\n const graphName = graphs[i].value;\n graphPatterns[graphName] = (_a = graphPatterns[graphName]) !== null && _a !== void 0 ? _a : { patterns: [], graph: graphs[i] };\n graphPatterns[graphName].patterns.push(pattern);\n }\n // Create graph objects for every cluster\n let children = [];\n for (const [graphName, { patterns, graph }] of Object.entries(graphPatterns)) {\n const bgp = factory.createBgp(patterns);\n children.push(graphName === '' ? bgp : factory.createGraph(bgp, graph));\n }\n // Join the graph objects\n let join = children[0];\n for (let i = 1; i < children.length; ++i)\n join = factory.createJoin([join, children[i]]);\n return join;\n}\n//# sourceMappingURL=sparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst equal = require(\"fast-deep-equal/es6\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst Parser = require('sparqljs').Parser;\nconst types = Algebra.types;\nlet variables = new Set();\nlet varCount = 0;\nlet useQuads = false;\nlet factory;\n/**\n * Translates the given SPARQL query to SPARQL Algebra.\n * @param sparql - Either a SPARQL string or an object generated by sparql.js\n * @param options - Optional options object. Current options:\n * * dataFactory: The Datafactory used to generate terms. Default @rdfjs/data-model.\n * * quads: Boolean indicating whether triples should be converted to Quads (consumes GRAPH statements). Default false.\n * * prefixes: Pre-defined prefixes for the given query. Default empty.\n * * baseIRI: Base IRI that should be used for the query. Default undefined (throws error if required).\n * @returns {Operation}\n */\nfunction translate(sparql, options) {\n options = options || {};\n factory = new factory_1.default(options.dataFactory);\n let query;\n if (isString(sparql)) {\n let parser = new Parser(options);\n // resets the identifier counter used for blank nodes\n // provides nicer and more consistent output if there are multiple calls\n parser._resetBlanks();\n query = parser.parse(sparql);\n }\n else {\n query = sparql;\n }\n return translateQuery(query, options.quads, options.blankToVariable);\n}\nexports.default = translate;\nfunction translateQuery(sparql, quads, blankToVariable) {\n // this set is filled in during the inScopeVariables call\n variables = new Set();\n varCount = 0;\n useQuads = Boolean(quads);\n // Assume this is an empty query\n if (!sparql.type)\n return factory.createNop();\n if (sparql.type !== 'query' && sparql.type !== 'update')\n throw new Error('Translate only works on complete query or update objects.');\n let res;\n // find ALL variables here to fill `variables` array\n findAllVariables(sparql);\n if (sparql.type === 'query') {\n // group and where are identical, having only 1 makes parsing easier, can be undefined in DESCRIBE\n const group = { type: 'group', patterns: sparql.where || [] };\n res = translateGraphPattern(group);\n res = translateAggregates(sparql, res);\n }\n else if (sparql.type === 'update') {\n res = translateUpdate(sparql);\n }\n if (blankToVariable) {\n res = translateBlankNodesToVariables(res);\n }\n return res;\n}\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isTerm(term) {\n return Boolean(term === null || term === void 0 ? void 0 : term.termType);\n}\n// This is not completely correct but this way we also catch SPARQL.js triples\nfunction isTriple(triple) {\n return triple.subject && triple.predicate && triple.object;\n}\nfunction isVariable(term) {\n return (term === null || term === void 0 ? void 0 : term.termType) === 'Variable';\n}\n// Will be used to make sure new variables don't overlap\nfunction findAllVariables(thingy) {\n if (isTerm(thingy)) {\n if (isVariable(thingy)) {\n // Variables don't store the `?`\n variables.add(`?${thingy.value}`);\n }\n }\n else if (Array.isArray(thingy)) {\n for (const entry of thingy)\n findAllVariables(entry);\n }\n else if (thingy && typeof thingy === 'object') {\n for (let key of Object.keys(thingy)) {\n // Some variables are hidden in keys (specifically for VALUES)\n if (key.startsWith('?')) {\n variables.add(key);\n }\n else if (key.startsWith('$')) {\n variables.add(`?${key.slice(1)}`);\n }\n findAllVariables(thingy[key]);\n }\n }\n}\n// 18.2.1\nfunction inScopeVariables(thingy) {\n let inScope = {};\n if (isTriple(thingy)) {\n // Note that this could both be an actual Quad or a SPARQL.js triple (without graph)\n const result = [\n inScopeVariables(thingy.subject),\n inScopeVariables(thingy.predicate),\n inScopeVariables(thingy.object),\n thingy.graph ? inScopeVariables(thingy.graph) : {}\n ];\n Object.assign(inScope, ...result);\n }\n else if (isTerm(thingy)) {\n if (isVariable(thingy))\n inScope[thingy.value] = thingy;\n }\n else if (thingy.type === 'bgp') {\n // Slightly cheating but this is a subset of what we support so is fine\n const quads = thingy.triples;\n Object.assign(inScope, ...quads.map(inScopeVariables));\n }\n else if (thingy.type === 'path') {\n // A path predicate should not have variables but just iterating so we could theoretically support this\n Object.assign(inScope, ...thingy.items.map(inScopeVariables));\n }\n else if (thingy.type === 'group' || thingy.type === 'union' || thingy.type === 'optional') {\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'service' || thingy.type === 'graph') {\n Object.assign(inScope, inScopeVariables(thingy.name));\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'bind') {\n Object.assign(inScope, inScopeVariables(thingy.variable));\n }\n else if (thingy.type === 'values') {\n if (thingy.values.length > 0) {\n const vars = Object.keys(thingy.values[0]).map(v => factory.createTerm(v));\n Object.assign(inScope, ...vars.map(inScopeVariables));\n }\n }\n else if (thingy.type === 'query') {\n if (thingy.queryType === 'SELECT' || thingy.queryType === 'DESCRIBE') {\n if (thingy.where && thingy.variables.some(util_1.default.isWildcard))\n Object.assign(inScope, ...thingy.where.map(inScopeVariables));\n for (const v of thingy.variables) {\n if (isVariable(v))\n Object.assign(inScope, inScopeVariables(v));\n else if (v.variable)\n Object.assign(inScope, inScopeVariables(v.variable));\n }\n if (thingy.queryType === 'SELECT') {\n if (thingy.group) {\n // Grouping can be a VariableExpression, typings are wrong\n for (const g of thingy.group) {\n if (g.variable)\n Object.assign(inScope, inScopeVariables(g.variable));\n }\n }\n if (thingy.values) {\n const values = { type: 'values', values: thingy.values };\n Object.assign(inScope, inScopeVariables(values));\n }\n }\n }\n }\n return inScope;\n}\nfunction translateGraphPattern(thingy) {\n // 18.2.2.1\n // already done by sparql parser\n // 18.2.2.3\n // 18.2.2.4\n // 18.2.2.5\n // In Sparql.js, a group with a single BGP in it is a single object.\n if (thingy.type === 'bgp') {\n return translateBgp(thingy);\n }\n // 18.2.2.6 - GroupOrUnionGraphPattern\n if (thingy.type === 'union')\n return factory.createUnion(thingy.patterns.map((p) => {\n // sparqljs doesn't always indicate the children are groups\n if (p.type !== 'group')\n p = { type: 'group', patterns: [p] };\n return translateGraphPattern(p);\n }));\n // 18.2.2.6 - GraphGraphPattern\n if (thingy.type === 'graph') {\n // Sparql.js combines the group graph pattern and the graph itself in the same object.\n // We split here so the group graph pattern can be interpreted correctly.\n const group = { type: 'group', patterns: thingy.patterns };\n let result = translateGraphPattern(group);\n // Output depends on if we use quads or not\n if (useQuads)\n result = recurseGraph(result, thingy.name);\n else\n result = factory.createGraph(result, thingy.name);\n return result;\n }\n // 18.2.2.6 - InlineData\n if (thingy.type === 'values')\n return translateInlineData(thingy);\n // 18.2.2.6 - SubSelect\n if (thingy.type === 'query')\n return translateQuery(thingy, useQuads, false);\n if (thingy.type === 'group') {\n // 18.2.2.2\n let filters = [];\n let nonfilters = [];\n for (let pattern of thingy.patterns)\n (pattern.type === 'filter' ? filters : nonfilters).push(pattern);\n // 18.2.2.6 - GroupGraphPattern\n let result = nonfilters.reduce(accumulateGroupGraphPattern, factory.createBgp([]));\n // 18.2.2.7\n let expressions = filters.map(filter => translateExpression(filter.expression));\n if (expressions.length > 0)\n result = factory.createFilter(result, expressions.reduce((acc, exp) => factory.createOperatorExpression('&&', [acc, exp])));\n return result;\n }\n throw new Error(`Unexpected type: ${thingy.type}`);\n}\nfunction translateExpression(exp) {\n if (util_1.default.isSimpleTerm(exp))\n return factory.createTermExpression(exp);\n if (util_1.default.isQuad(exp)) {\n if (util_1.default.hasQuadVariables(exp))\n return factory.createOperatorExpression('triple', [\n translateExpression(exp.subject),\n translateExpression(exp.predicate),\n translateExpression(exp.object),\n ]);\n else\n return factory.createTermExpression(exp);\n }\n if (util_1.default.isWildcard(exp))\n return factory.createWildcardExpression();\n if ('aggregation' in exp)\n return factory.createAggregateExpression(exp.aggregation, translateExpression(exp.expression), Boolean(exp.distinct), exp.separator);\n if ('function' in exp)\n // Outdated typings\n return factory.createNamedExpression(exp.function, exp.args.map(translateExpression));\n if ('operator' in exp) {\n if (exp.operator === 'exists' || exp.operator === 'notexists')\n return factory.createExistenceExpression(exp.operator === 'notexists', translateGraphPattern(exp.args[0]));\n if (exp.operator === 'in' || exp.operator === 'notin')\n exp.args = [exp.args[0]].concat(exp.args[1]); // sparql.js uses 2 arguments with the second one being a list\n return factory.createOperatorExpression(exp.operator, exp.args.map(translateExpression));\n }\n throw new Error(`Unknown expression: ${JSON.stringify(exp)}`);\n}\nfunction translateBgp(thingy) {\n let patterns = [];\n let joins = [];\n for (let t of thingy.triples) {\n if ('pathType' in t.predicate) {\n // translatePath returns a mix of Quads and Paths\n let path = translatePath(t);\n for (let p of path) {\n if (p.type === types.PATH) {\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n patterns = [];\n joins.push(p);\n }\n else\n patterns.push(p);\n }\n }\n else\n patterns.push(translateQuad(t));\n }\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n if (joins.length === 1)\n return joins[0];\n return factory.createJoin(joins);\n}\nfunction translatePath(triple) {\n let sub = triple.subject;\n let pred = translatePathPredicate(triple.predicate);\n let obj = triple.object;\n return simplifyPath(sub, pred, obj);\n}\nfunction translatePathPredicate(predicate) {\n if (util_1.default.isSimpleTerm(predicate)) {\n if (predicate.termType === 'NamedNode')\n return factory.createLink(predicate);\n else\n throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(predicate)}`);\n }\n if (predicate.pathType === '^')\n return factory.createInv(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '!') {\n // negation is either over a single predicate or a list of disjuncted properties\n let normals = [];\n let inverted = [];\n let items;\n if ('pathType' in predicate.items[0] && predicate.items[0].pathType === '|')\n items = predicate.items[0].items; // the | element\n else\n items = predicate.items;\n for (let item of items) {\n if (util_1.default.isSimpleTerm(item))\n normals.push(item);\n else if (item.pathType === '^')\n inverted.push(item.items[0]);\n else\n throw new Error(`Unexpected item: ${JSON.stringify(item)}`);\n }\n // NPS elements do not have the LINK function\n let normalElement = factory.createNps(normals);\n let invertedElement = factory.createInv(factory.createNps(inverted));\n if (inverted.length === 0)\n return normalElement;\n if (normals.length === 0)\n return invertedElement;\n return factory.createAlt([normalElement, invertedElement,]);\n }\n if (predicate.pathType === '/')\n return factory.createSeq(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '|')\n return factory.createAlt(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '*')\n return factory.createZeroOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '+')\n return factory.createOneOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '?')\n return factory.createZeroOrOnePath(translatePathPredicate(predicate.items[0]));\n throw new Error(`Unable to translate path expression ${JSON.stringify(predicate)}`);\n}\nfunction simplifyPath(subject, predicate, object) {\n if (predicate.type === types.LINK)\n return [factory.createPattern(subject, predicate.iri, object)];\n if (predicate.type === types.INV)\n return simplifyPath(object, predicate.path, subject);\n if (predicate.type === types.SEQ) {\n let joiner = subject;\n return util_1.default.flatten(predicate.input.map((subOp, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? object : generateFreshVar();\n const simplifiedPath = simplifyPath(joiner, subOp, nextJoiner);\n if (nextJoiner.termType === 'Variable') {\n joiner = nextJoiner;\n }\n return simplifiedPath;\n }));\n }\n return [factory.createPath(subject, predicate, object)];\n}\nfunction generateFreshVar() {\n let v = `?var${varCount++}`;\n if (variables.has(v))\n return generateFreshVar();\n variables.add(v);\n return factory.createTerm(v);\n}\nfunction translateQuad(quad) {\n if ('pathType' in quad.predicate) {\n throw new Error('Trying to translate property path to quad.');\n }\n // Graphs are needed here\n // TODO: investigate if typings are wrong or if we internally add graphs to these\n return factory.createPattern(quad.subject, quad.predicate, quad.object, quad.graph);\n}\nlet typeVals = Object.values(types);\nfunction recurseGraph(thingy, graph, replacement) {\n if (thingy.type === types.GRAPH) {\n if (replacement) {\n // At this point we would lose track of the replacement which would result in incorrect results\n // This would indicate the library is not being used as intended though\n throw new Error('Recursing through nested GRAPH statements with a replacement is impossible.');\n }\n // In case there were nested GRAPH statements that were not recursed yet for some reason\n thingy = recurseGraph(thingy.input, thingy.name);\n }\n else if (thingy.type === types.SERVICE) {\n // Service blocks are not affected by enclosing GRAPH statements, so nothing is modified in this block.\n // See https://github.com/joachimvh/SPARQLAlgebra.js/pull/104#issuecomment-1838016303\n }\n else if (thingy.type === types.BGP)\n thingy.patterns = thingy.patterns.map(quad => {\n if (replacement) {\n if (quad.subject.equals(graph))\n quad.subject = replacement;\n if (quad.predicate.equals(graph))\n quad.predicate = replacement;\n if (quad.object.equals(graph))\n quad.object = replacement;\n }\n if (quad.graph.termType === 'DefaultGraph')\n quad.graph = graph;\n return quad;\n });\n else if (thingy.type === types.PATH) {\n if (replacement) {\n if (thingy.subject.equals(graph))\n thingy.subject = replacement;\n if (thingy.object.equals(graph))\n thingy.object = replacement;\n }\n if (thingy.graph.termType === 'DefaultGraph')\n thingy.graph = graph;\n }\n // need to replace variables in subqueries should the graph also be a variable of the same name\n // unless the subquery projects that variable\n else if (thingy.type === types.PROJECT && !replacement) {\n if (!thingy.variables.some(v => v.equals(graph)))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n // this can happen if the query extends an expression to the name of the graph\n // since the extend happens here there should be no further occurrences of this name\n // if there are it's the same situation as above\n else if (thingy.type === types.EXTEND && !replacement) {\n if (thingy.variable.equals(graph))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n else {\n for (let key of Object.keys(thingy)) {\n if (Array.isArray(thingy[key]))\n thingy[key] = thingy[key].map((x) => recurseGraph(x, graph, replacement));\n else if (typeVals.indexOf(thingy[key].type) >= 0) // can't do instanceof on an interface\n thingy[key] = recurseGraph(thingy[key], graph, replacement);\n else if (replacement && isVariable(thingy[key]) && thingy[key].equals(graph))\n thingy[key] = replacement;\n }\n }\n return thingy;\n}\nfunction accumulateGroupGraphPattern(G, E) {\n if (E.type === 'optional') {\n // optional input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n if (A.type === types.FILTER) {\n G = factory.createLeftJoin(G, A.input, A.expression);\n }\n else\n G = factory.createLeftJoin(G, A);\n }\n else if (E.type === 'minus') {\n // minus input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n G = factory.createMinus(G, A);\n }\n else if (E.type === 'bind')\n G = factory.createExtend(G, E.variable, translateExpression(E.expression));\n else if (E.type === 'service') {\n // transform to group so childnodes get parsed correctly\n const group = { type: 'group', patterns: E.patterns };\n const A = factory.createService(translateGraphPattern(group), E.name, E.silent);\n G = simplifiedJoin(G, A);\n }\n else {\n const A = translateGraphPattern(E);\n G = simplifiedJoin(G, A);\n }\n return G;\n}\nfunction simplifiedJoin(G, A) {\n // Note: this is more simplification than requested in 18.2.2.8, but no reason not to do it.\n if (G.type === types.BGP && A.type === types.BGP)\n G = factory.createBgp([...G.patterns, ...A.patterns]);\n // 18.2.2.8 (simplification)\n else if (G.type === types.BGP && G.patterns.length === 0)\n G = A;\n else if (A.type === types.BGP && A.patterns.length === 0) { } // do nothing\n else\n G = factory.createJoin([G, A]);\n return G;\n}\nfunction translateInlineData(values) {\n let variables = (values.values.length === 0 ? [] : Object.keys(values.values[0])).map(factory.createTerm.bind(factory));\n let bindings = values.values.map((binding) => {\n let keys = Object.keys(binding);\n keys = keys.filter(k => binding[k] !== undefined);\n let map = {};\n for (let key of keys)\n map[key] = binding[key];\n return map;\n });\n return factory.createValues(variables, bindings);\n}\n// --------------------------------------- AGGREGATES\nfunction translateAggregates(query, res) {\n // Typings for ConstructQuery are wrong and missing several fields so we will cast quite often to SelectQuery to have partial typings\n const select = query;\n // 18.2.4.1\n const E = [];\n const A = {};\n select.variables = select.variables && select.variables.map(val => mapAggregate(val, A));\n select.having = select.having && select.having.map(val => mapAggregate(val, A));\n select.order = select.order && select.order.map(val => mapAggregate(val, A));\n // if there are any aggregates or if we have a groupBy (both result in a GROUP)\n if (select.group || Object.keys(A).length > 0) {\n const aggregates = Object.keys(A).map(v => translateBoundAggregate(A[v], factory.createTerm(v)));\n const vars = [];\n if (select.group) {\n for (const e of select.group) {\n if (util_1.default.isSimpleTerm(e.expression)) {\n vars.push(e.expression); // this will always be a var, otherwise sparql would be invalid\n }\n else {\n // Incorrect typings, e can have a variable, see for example group-variable test in sparql.js\n const v = 'variable' in e ? e.variable : generateFreshVar();\n res = factory.createExtend(res, v, translateExpression(e.expression));\n vars.push(v);\n }\n }\n }\n res = factory.createGroup(res, vars, aggregates);\n }\n // 18.2.4.2\n if (select.having)\n for (let filter of select.having)\n res = factory.createFilter(res, translateExpression(filter));\n // 18.2.4.3\n if (query.values)\n res = factory.createJoin([res, translateInlineData(query)]);\n // 18.2.4.4\n let PV = [];\n if (query.queryType === 'SELECT' || query.queryType === 'DESCRIBE') {\n // Sort variables for consistent output\n if (query.variables.some((e) => e && util_1.default.isWildcard(e)))\n PV = Object.values(inScopeVariables(query))\n .sort((left, right) => left.value.localeCompare(right.value));\n else {\n // Wildcard has been filtered out above\n for (let v of query.variables) {\n // can have non-variables with DESCRIBE\n if (isVariable(v) || !('variable' in v))\n PV.push(v);\n else if (v.variable) // ... AS ?x\n {\n PV.push(v.variable);\n E.push(v);\n }\n }\n }\n }\n // TODO: Jena simplifies by having a list of extends\n for (let v of E)\n res = factory.createExtend(res, v.variable, translateExpression(v.expression));\n // 18.2.5\n // not using toList and toMultiset\n // 18.2.5.1\n if (select.order)\n res = factory.createOrderBy(res, select.order.map((exp) => {\n let result = translateExpression(exp.expression);\n if (exp.descending)\n result = factory.createOperatorExpression('desc', [result]);\n return result;\n }));\n // 18.2.5.2\n // construct does not need a project (select, ask and describe do)\n if (query.queryType === 'SELECT')\n // Named nodes are only possible in a DESCRIBE so this cast is safe\n res = factory.createProject(res, PV);\n // 18.2.5.3\n if (select.distinct)\n res = factory.createDistinct(res);\n // 18.2.5.4\n if (select.reduced)\n res = factory.createReduced(res);\n // NEW: support for ask/construct/describe queries\n if (query.queryType === 'CONSTRUCT')\n res = factory.createConstruct(res, (query.template || []).map(translateQuad));\n else if (query.queryType === 'ASK')\n res = factory.createAsk(res);\n else if (query.queryType === 'DESCRIBE')\n res = factory.createDescribe(res, PV);\n // Slicing needs to happen after construct/describe\n // 18.2.5.5\n if (select.offset || select.limit)\n res = factory.createSlice(res, select.offset || 0, select.limit);\n if (select.from)\n res = factory.createFrom(res, select.from.default, select.from.named);\n return res;\n}\n// rewrites some of the input sparql object to make use of aggregate variables\nfunction mapAggregate(thingy, aggregates) {\n if ('type' in thingy && thingy.type === 'aggregate') {\n let found = false;\n let v;\n for (let key of Object.keys(aggregates)) {\n if (equal(aggregates[key], thingy)) {\n v = factory.createTerm(key);\n found = true;\n break;\n }\n }\n if (!found) {\n v = generateFreshVar();\n aggregates[(0, rdf_string_1.termToString)(v)] = thingy;\n }\n return v;\n }\n // non-aggregate expression\n if ('expression' in thingy && thingy.expression)\n return { ...thingy, expression: mapAggregate(thingy.expression, aggregates) };\n if ('args' in thingy && thingy.args)\n return { ...thingy, args: thingy.args.map(subthingy => mapAggregate(subthingy, aggregates)) };\n // Normal variable/wildcard\n return thingy;\n}\nfunction translateBoundAggregate(thingy, v) {\n if (thingy.type !== 'aggregate' || !thingy.aggregation)\n throw new Error(`Unexpected input: ${JSON.stringify(thingy)}`);\n const A = translateExpression(thingy);\n A.variable = v;\n return A;\n}\nfunction translateUpdate(thingy) {\n if (thingy.updates.length === 1)\n return translateSingleUpdate(thingy.updates[0]);\n return factory.createCompositeUpdate(thingy.updates.map(translateSingleUpdate));\n}\nfunction translateSingleUpdate(thingy) {\n if ('type' in thingy) {\n if (thingy.type === 'load')\n return translateUpdateGraphLoad(thingy);\n if (thingy.type === 'clear' || thingy.type === 'create' || thingy.type === 'drop')\n return translateUpdateGraph(thingy);\n if (thingy.type === 'add' || thingy.type === 'copy' || thingy.type === 'move')\n return translateUpdateGraphShortcut(thingy);\n }\n else if (thingy.updateType === 'insertdelete' || thingy.updateType === 'deletewhere' || thingy.updateType === 'delete' || thingy.updateType === 'insert')\n return translateInsertDelete(thingy);\n throw new Error(`Unknown update type ${JSON.stringify(thingy)}`);\n}\nfunction translateInsertDelete(thingy) {\n if (!useQuads)\n throw new Error('INSERT/DELETE operations are only supported with quads option enabled');\n let deleteTriples = [];\n let insertTriples = [];\n let where;\n if (thingy.delete)\n deleteTriples = util_1.default.flatten(thingy.delete.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.insert)\n insertTriples = util_1.default.flatten(thingy.insert.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.where && thingy.where.length > 0) {\n where = translateGraphPattern({ type: 'group', patterns: thingy.where });\n // Wrong typings, see test \"using\" in Sparql.js\n const use = thingy.using;\n if (use)\n where = factory.createFrom(where, use.default, use.named);\n else if (thingy.graph)\n // This is equivalent\n where = recurseGraph(where, thingy.graph);\n }\n else if (thingy.updateType === 'deletewhere' && deleteTriples.length > 0) {\n where = factory.createBgp(deleteTriples);\n }\n return factory.createDeleteInsert(deleteTriples.length > 0 ? deleteTriples : undefined, insertTriples.length > 0 ? insertTriples : undefined, where);\n}\n// UPDATE parsing will always return quads and have no GRAPH elements\nfunction translateUpdateTriplesBlock(thingy, graph) {\n let currentGraph = graph;\n if (thingy.type === 'graph')\n currentGraph = thingy.name;\n let currentTriples = thingy.triples;\n if (currentGraph)\n currentTriples = currentTriples.map(triple => Object.assign(triple, { graph: currentGraph }));\n return currentTriples.map(translateQuad);\n}\nfunction translateUpdateGraph(thingy) {\n let source;\n if (util_1.default.isSimpleTerm(thingy.graph))\n source = thingy.graph;\n else if (thingy.graph.all)\n source = 'ALL';\n else if (thingy.graph.default)\n source = 'DEFAULT';\n else if (thingy.graph.named)\n source = 'NAMED';\n else\n source = thingy.graph.name;\n switch (thingy.type) {\n case 'clear': return factory.createClear(source, thingy.silent);\n case 'create': return factory.createCreate(source, thingy.silent);\n case 'drop': return factory.createDrop(source, thingy.silent);\n }\n}\nfunction translateUpdateGraphLoad(thingy) {\n return factory.createLoad(thingy.source, thingy.destination, thingy.silent);\n}\nfunction translateUpdateGraphShortcut(thingy) {\n const source = thingy.source.default ? 'DEFAULT' : thingy.source.name;\n const destination = thingy.destination.default ? 'DEFAULT' : thingy.destination.name;\n switch (thingy.type) {\n case 'copy': return factory.createCopy(source, destination, thingy.silent);\n case 'move': return factory.createMove(source, destination, thingy.silent);\n case 'add': return factory.createAdd(source, destination, thingy.silent);\n }\n}\nfunction translateBlankNodesToVariables(res) {\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(variables).reduce((acc, variable) => {\n acc[variable] = true;\n return acc;\n }, {});\n return util_1.default.mapOperation(res, {\n [Algebra.types.DELETE_INSERT]: (op) => {\n // Make sure blank nodes remain in the INSERT block, but do update the WHERE block\n return {\n result: factory.createDeleteInsert(op.delete, op.insert, op.where && translateBlankNodesToVariables(op.where)),\n recurse: false,\n };\n },\n [Algebra.types.PATH]: (op, factory) => {\n return {\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.PATTERN]: (op, factory) => {\n return {\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT]: (op) => {\n // Blank nodes in CONSTRUCT templates must be maintained\n return {\n result: factory.createConstruct(translateBlankNodesToVariables(op.input), op.template),\n recurse: false,\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = util_1.default.createUniqueVariable(term.value, variablesRaw, factory.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n}\n//# sourceMappingURL=sparqlAlgebra.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst algebra_1 = require(\"./algebra\");\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst rdf_terms_1 = require(\"rdf-terms\");\nclass Util {\n /**\n * Flattens an array of arrays to an array.\n * @param arr - Array of arrays\n */\n static flatten(arr) {\n return Array.prototype.concat(...arr).filter(x => x);\n }\n /**\n * Outputs a JSON object corresponding to the input algebra-like.\n */\n static objectify(algebra) {\n if (algebra.termType) {\n if (algebra.termType === 'Quad') {\n return {\n type: 'pattern',\n termType: 'Quad',\n subject: Util.objectify(algebra.subject),\n predicate: Util.objectify(algebra.predicate),\n object: Util.objectify(algebra.object),\n graph: Util.objectify(algebra.graph),\n };\n }\n else {\n let result = { termType: algebra.termType, value: algebra.value };\n if (algebra.language)\n result.language = algebra.language;\n if (algebra.datatype)\n result.datatype = Util.objectify(algebra.datatype);\n return result;\n }\n }\n if (Array.isArray(algebra))\n return algebra.map(e => Util.objectify(e));\n if (algebra === Object(algebra)) {\n let result = {};\n for (let key of Object.keys(algebra))\n result[key] = Util.objectify(algebra[key]);\n return result;\n }\n return algebra;\n }\n /**\n * Detects all in-scope variables.\n * In practice this means iterating through the entire algebra tree, finding all variables,\n * and stopping when a project function is found.\n * @param {Operation} op - Input algebra tree.\n * @returns {Variable[]} - List of unique in-scope variables.\n */\n static inScopeVariables(op) {\n const variables = [];\n function addVariable(v) {\n if (!variables.find(v2 => v.value === v2.value))\n variables.push(v);\n }\n function recurseTerm(quad) {\n if (quad.subject.termType === 'Variable')\n addVariable(quad.subject);\n if (quad.predicate.termType === 'Variable')\n addVariable(quad.predicate);\n if (quad.object.termType === 'Variable')\n addVariable(quad.object);\n if (quad.graph.termType === 'Variable')\n addVariable(quad.graph);\n if (quad.subject.termType === 'Quad')\n recurseTerm(quad.subject);\n if (quad.predicate.termType === 'Quad')\n recurseTerm(quad.predicate);\n if (quad.object.termType === 'Quad')\n recurseTerm(quad.object);\n if (quad.graph.termType === 'Quad')\n recurseTerm(quad.graph);\n }\n // https://www.w3.org/TR/sparql11-query/#variableScope\n Util.recurseOperation(op, {\n [algebra_1.types.EXPRESSION]: (op) => {\n if (op.expressionType === algebra_1.expressionTypes.AGGREGATE && op.variable) {\n addVariable(op.variable);\n }\n return true;\n },\n [algebra_1.types.EXTEND]: (op) => {\n addVariable(op.variable);\n return true;\n },\n [algebra_1.types.GRAPH]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.GROUP]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n [algebra_1.types.PATH]: (op) => {\n if (op.subject.termType === 'Variable')\n addVariable(op.subject);\n if (op.object.termType === 'Variable')\n addVariable(op.object);\n if (op.graph.termType === 'Variable')\n addVariable(op.graph);\n if (op.subject.termType === 'Quad')\n recurseTerm(op.subject);\n if (op.object.termType === 'Quad')\n recurseTerm(op.object);\n if (op.graph.termType === 'Quad')\n recurseTerm(op.graph);\n return true;\n },\n [algebra_1.types.PATTERN]: (op) => {\n recurseTerm(op);\n return true;\n },\n [algebra_1.types.PROJECT]: (op) => {\n op.variables.forEach(addVariable);\n return false;\n },\n [algebra_1.types.SERVICE]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.VALUES]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n });\n return variables;\n }\n /**\n * Recurses through the given algebra tree\n * A map of callback functions can be provided for individual Operation types to gather data.\n * The return value of those callbacks should indicate whether recursion should be applied or not.\n * Making modifications will change the original input object.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation) => boolean } callbacks - A map of required callback Operations.\n */\n static recurseOperation(op, callbacks) {\n let result = op;\n let doRecursion = true;\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n doRecursion = callback(op);\n if (!doRecursion)\n return;\n let recurseOp = (op) => Util.recurseOperation(op, callbacks);\n switch (result.type) {\n case algebra_1.types.ALT:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.ASK:\n recurseOp(result.input);\n break;\n case algebra_1.types.BGP:\n result.patterns.forEach(recurseOp);\n break;\n case algebra_1.types.CONSTRUCT:\n recurseOp(result.input);\n result.template.map(recurseOp);\n break;\n case algebra_1.types.DESCRIBE:\n recurseOp(result.input);\n break;\n case algebra_1.types.DISTINCT:\n recurseOp(result.input);\n break;\n case algebra_1.types.EXPRESSION:\n if (result.expressionType === algebra_1.expressionTypes.EXISTENCE) {\n recurseOp(result.input);\n }\n break;\n case algebra_1.types.EXTEND:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FILTER:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FROM:\n recurseOp(result.input);\n break;\n case algebra_1.types.GRAPH:\n recurseOp(result.input);\n break;\n case algebra_1.types.GROUP:\n recurseOp(result.input);\n result.aggregates.forEach(recurseOp);\n break;\n case algebra_1.types.INV:\n recurseOp(result.path);\n break;\n case algebra_1.types.JOIN:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.LEFT_JOIN:\n result.input.map(recurseOp);\n if (result.expression)\n recurseOp(result.expression);\n break;\n case algebra_1.types.LINK:\n break;\n case algebra_1.types.MINUS:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.NOP:\n break;\n case algebra_1.types.NPS:\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ORDER_BY:\n recurseOp(result.input);\n result.expressions.forEach(recurseOp);\n break;\n case algebra_1.types.PATH:\n recurseOp(result.predicate);\n break;\n case algebra_1.types.PATTERN:\n break;\n case algebra_1.types.PROJECT:\n recurseOp(result.input);\n break;\n case algebra_1.types.REDUCED:\n recurseOp(result.input);\n break;\n case algebra_1.types.SEQ:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.SERVICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.SLICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.UNION:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.VALUES:\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n recurseOp(result.path);\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result.updates.forEach(update => recurseOp(update));\n break;\n case algebra_1.types.DELETE_INSERT:\n if (result.delete)\n result.delete.forEach(pattern => recurseOp(pattern));\n if (result.insert)\n result.insert.forEach(pattern => recurseOp(pattern));\n if (result.where)\n recurseOp(result.where);\n break;\n // all of these only have graph IDs as values\n case algebra_1.types.LOAD: break;\n case algebra_1.types.CLEAR: break;\n case algebra_1.types.CREATE: break;\n case algebra_1.types.DROP: break;\n case algebra_1.types.ADD: break;\n case algebra_1.types.MOVE: break;\n case algebra_1.types.COPY: break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Creates a deep copy of the given Operation.\n * Creates shallow copies of the non-Operation values.\n * A map of callback functions can be provided for individual Operation types\n * to specifically modify the given objects before triggering recursion.\n * The return value of those callbacks should indicate whether recursion should be applied to this returned object or not.\n * @param {Operation} op - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapOperation(op, callbacks, factory) {\n let result = op;\n let doRecursion = true;\n let copyMetadata = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[op.type];\n if (callback) {\n // Not sure how to get typing correct for op here\n const recurseResult = callback(op, factory);\n result = recurseResult.result;\n doRecursion = recurseResult.recurse;\n copyMetadata = recurseResult.copyMetadata !== false;\n }\n let toCopyMetadata;\n if (copyMetadata && (result.metadata || op.metadata)) {\n toCopyMetadata = { ...result.metadata, ...op.metadata };\n }\n if (!doRecursion) {\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n // Several casts here might be wrong though depending on the callbacks output\n switch (result.type) {\n case algebra_1.types.ALT:\n result = factory.createAlt(result.input.map(mapOp));\n break;\n case algebra_1.types.ASK:\n result = factory.createAsk(mapOp(result.input));\n break;\n case algebra_1.types.BGP:\n result = factory.createBgp(result.patterns.map(mapOp));\n break;\n case algebra_1.types.CONSTRUCT:\n result = factory.createConstruct(mapOp(result.input), result.template.map(mapOp));\n break;\n case algebra_1.types.DESCRIBE:\n result = factory.createDescribe(mapOp(result.input), result.terms);\n break;\n case algebra_1.types.DISTINCT:\n result = factory.createDistinct(mapOp(result.input));\n break;\n case algebra_1.types.EXPRESSION:\n result = Util.mapExpression(result, callbacks, factory);\n break;\n case algebra_1.types.EXTEND:\n result = factory.createExtend(mapOp(result.input), result.variable, mapOp(result.expression));\n break;\n case algebra_1.types.FILTER:\n result = factory.createFilter(mapOp(result.input), mapOp(result.expression));\n break;\n case algebra_1.types.FROM:\n result = factory.createFrom(mapOp(result.input), [...result.default], [...result.named]);\n break;\n case algebra_1.types.GRAPH:\n result = factory.createGraph(mapOp(result.input), result.name);\n break;\n case algebra_1.types.GROUP:\n result = factory.createGroup(mapOp(result.input), [].concat(result.variables), result.aggregates.map(mapOp));\n break;\n case algebra_1.types.INV:\n result = factory.createInv(mapOp(result.path));\n break;\n case algebra_1.types.JOIN:\n result = factory.createJoin(result.input.map(mapOp));\n break;\n case algebra_1.types.LEFT_JOIN:\n result = factory.createLeftJoin(mapOp(result.input[0]), mapOp(result.input[1]), result.expression ? mapOp(result.expression) : undefined);\n break;\n case algebra_1.types.LINK:\n result = factory.createLink(result.iri);\n break;\n case algebra_1.types.MINUS:\n result = factory.createMinus(mapOp(result.input[0]), mapOp(result.input[1]));\n break;\n case algebra_1.types.NOP:\n result = factory.createNop();\n break;\n case algebra_1.types.NPS:\n result = factory.createNps([].concat(result.iris));\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n result = factory.createOneOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ORDER_BY:\n result = factory.createOrderBy(mapOp(result.input), result.expressions.map(mapOp));\n break;\n case algebra_1.types.PATH:\n result = factory.createPath(result.subject, mapOp(result.predicate), result.object, result.graph);\n break;\n case algebra_1.types.PATTERN:\n result = factory.createPattern(result.subject, result.predicate, result.object, result.graph);\n break;\n case algebra_1.types.PROJECT:\n result = factory.createProject(mapOp(result.input), [...result.variables]);\n break;\n case algebra_1.types.REDUCED:\n result = factory.createReduced(mapOp(result.input));\n break;\n case algebra_1.types.SEQ:\n result = factory.createSeq(result.input.map(mapOp));\n break;\n case algebra_1.types.SERVICE:\n result = factory.createService(mapOp(result.input), result.name, result.silent);\n break;\n case algebra_1.types.SLICE:\n result = factory.createSlice(mapOp(result.input), result.start, result.length);\n break;\n case algebra_1.types.UNION:\n result = factory.createUnion(result.input.map(mapOp));\n break;\n case algebra_1.types.VALUES:\n result = factory.createValues([].concat(result.variables), result.bindings.map(b => Object.assign({}, b)));\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n result = factory.createZeroOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n result = factory.createZeroOrOnePath(mapOp(result.path));\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result = factory.createCompositeUpdate(result.updates.map(mapOp));\n break;\n case algebra_1.types.DELETE_INSERT:\n result = factory.createDeleteInsert(result.delete ? result.delete.map(mapOp) : undefined, result.insert ? result.insert.map(mapOp) : undefined, result.where ? mapOp(result.where) : undefined);\n break;\n case algebra_1.types.LOAD:\n result = factory.createLoad(result.source, result.destination, result.silent);\n break;\n case algebra_1.types.CLEAR:\n result = factory.createClear(result.source, result.silent);\n break;\n case algebra_1.types.CREATE:\n result = factory.createCreate(result.source, result.silent);\n break;\n case algebra_1.types.DROP:\n result = factory.createDrop(result.source, result.silent);\n break;\n case algebra_1.types.ADD:\n result = factory.createAdd(result.source, result.destination);\n break;\n case algebra_1.types.MOVE:\n result = factory.createMove(result.source, result.destination);\n break;\n case algebra_1.types.COPY:\n result = factory.createCopy(result.source, result.destination);\n break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n /**\n * Similar to the {@link mapOperation} function but specifically for expressions.\n * Both functions call each other while copying.\n * Should not be called directly since it does not execute the callbacks, these happen in {@link mapOperation}.\n * @param {Expression} expr - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapExpression(expr, callbacks, factory) {\n let result = expr;\n let doRecursion = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[expr.expressionType];\n if (callback)\n ({ result, recurse: doRecursion } = callback(expr, factory));\n if (!doRecursion)\n return result;\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n switch (expr.expressionType) {\n case algebra_1.expressionTypes.AGGREGATE:\n if (expr.variable) {\n return factory.createBoundAggregate(expr.variable, expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n }\n return factory.createAggregateExpression(expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n case algebra_1.expressionTypes.EXISTENCE:\n return factory.createExistenceExpression(expr.not, mapOp(expr.input));\n case algebra_1.expressionTypes.NAMED:\n return factory.createNamedExpression(expr.name, expr.args.map(mapOp));\n case algebra_1.expressionTypes.OPERATOR:\n return factory.createOperatorExpression(expr.operator, expr.args.map(mapOp));\n case algebra_1.expressionTypes.TERM:\n return factory.createTermExpression(expr.term);\n case algebra_1.expressionTypes.WILDCARD:\n return factory.createWildcardExpression();\n default: throw new Error(`Unknown Expression type ${expr.expressionType}`);\n }\n }\n /**\n * Creates a deep clone of the operation.\n * This is syntactic sugar for calling {@link mapOperation} without callbacks.\n * @param {Operation} op - The operation to copy.\n * @returns {Operation} - The deep copy.\n */\n static cloneOperation(op) {\n return Util.mapOperation(op, {});\n }\n /**\n * Creates a deep clone of the expression.\n * This is syntactic sugar for calling {@link mapExpression} without callbacks.\n * @param {Expression} expr - The operation to copy.\n * @returns {Expression} - The deep copy.\n */\n static cloneExpression(expr) {\n return Util.mapExpression(expr, {});\n }\n static createUniqueVariable(label, variables, dataFactory) {\n let counter = 0;\n let labelLoop = label;\n while (variables[labelLoop]) {\n labelLoop = `${label}${counter++}`;\n }\n return dataFactory.variable(labelLoop);\n }\n // separate terms from wildcard since we handle them differently\n static isSimpleTerm(term) {\n return term.termType !== undefined && term.termType !== 'Quad' && term.termType !== 'Wildcard';\n }\n static isQuad(term) {\n return term.termType === 'Quad';\n }\n static hasQuadVariables(quad) {\n return (0, rdf_terms_1.someTermsNested)(quad, term => term.termType === 'Variable');\n }\n static isWildcard(term) {\n return term.termType === 'Wildcard';\n }\n}\nexports.default = Util;\n//# sourceMappingURL=util.js.map","var XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer';\nvar XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';\n\nfunction Generator(options) {\n this._options = options = options || {};\n\n var prefixes = options.prefixes || {};\n this._prefixByIri = {};\n var prefixIris = [];\n for (var prefix in prefixes) {\n var iri = prefixes[prefix];\n if (isString(iri)) {\n this._prefixByIri[iri] = prefix;\n prefixIris.push(iri);\n }\n }\n var iriList = prefixIris.join('|').replace(/[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n this._prefixRegex = new RegExp('^(' + iriList + ')([a-zA-Z][\\\\-_a-zA-Z0-9]*)$');\n this._usedPrefixes = {};\n this._sparqlStar = options.sparqlStar;\n this._indent = isString(options.indent) ? options.indent : ' ';\n this._newline = isString(options.newline) ? options.newline : '\\n';\n this._explicitDatatype = Boolean(options.explicitDatatype);\n}\n\n// Converts the parsed query object into a SPARQL query\nGenerator.prototype.toQuery = function (q) {\n var query = '';\n\n if (q.queryType)\n query += q.queryType.toUpperCase() + ' ';\n if (q.reduced)\n query += 'REDUCED ';\n if (q.distinct)\n query += 'DISTINCT ';\n\n if (q.variables){\n query += mapJoin(q.variables, undefined, function (variable) {\n return isTerm(variable) ? this.toEntity(variable) :\n '(' + this.toExpression(variable.expression) + ' AS ' + variableToString(variable.variable) + ')';\n }, this) + ' ';\n }\n else if (q.template)\n query += this.group(q.template, true) + this._newline;\n\n if (q.from)\n query += this.graphs('FROM ', q.from.default) + this.graphs('FROM NAMED ', q.from.named);\n if (q.where)\n query += 'WHERE ' + this.group(q.where, true) + this._newline;\n\n if (q.updates)\n query += mapJoin(q.updates, ';' + this._newline, this.toUpdate, this);\n\n if (q.group)\n query += 'GROUP BY ' + mapJoin(q.group, undefined, function (it) {\n var result = isTerm(it.expression)\n ? this.toEntity(it.expression)\n : '(' + this.toExpression(it.expression) + ')';\n return it.variable ? '(' + result + ' AS ' + variableToString(it.variable) + ')' : result;\n }, this) + this._newline;\n if (q.having)\n query += 'HAVING (' + mapJoin(q.having, undefined, this.toExpression, this) + ')' + this._newline;\n if (q.order)\n query += 'ORDER BY ' + mapJoin(q.order, undefined, function (it) {\n var expr = '(' + this.toExpression(it.expression) + ')';\n return !it.descending ? expr : 'DESC ' + expr;\n }, this) + this._newline;\n\n if (q.offset)\n query += 'OFFSET ' + q.offset + this._newline;\n if (q.limit)\n query += 'LIMIT ' + q.limit + this._newline;\n\n if (q.values)\n query += this.values(q);\n\n // stringify prefixes at the end to mark used ones\n query = this.baseAndPrefixes(q) + query;\n return query.trim();\n};\n\nGenerator.prototype.baseAndPrefixes = function (q) {\n var base = q.base ? ('BASE <' + q.base + '>' + this._newline) : '';\n var prefixes = '';\n for (var key in q.prefixes) {\n if (this._options.allPrefixes || this._usedPrefixes[key])\n prefixes += 'PREFIX ' + key + ': <' + q.prefixes[key] + '>' + this._newline;\n }\n return base + prefixes;\n};\n\n// Converts the parsed SPARQL pattern into a SPARQL pattern\nGenerator.prototype.toPattern = function (pattern) {\n var type = pattern.type || (pattern instanceof Array) && 'array' ||\n (pattern.subject && pattern.predicate && pattern.object ? 'triple' : '');\n if (!(type in this))\n throw new Error('Unknown entry type: ' + type);\n return this[type](pattern);\n};\n\nGenerator.prototype.triple = function (t) {\n return this.toEntity(t.subject) + ' ' + this.toEntity(t.predicate) + ' ' + this.toEntity(t.object) + '.';\n};\n\nGenerator.prototype.array = function (items) {\n return mapJoin(items, this._newline, this.toPattern, this);\n};\n\nGenerator.prototype.bgp = function (bgp) {\n return this.encodeTriples(bgp.triples);\n};\n\nGenerator.prototype.encodeTriples = function (triples) {\n if (!triples.length)\n return '';\n\n var parts = [], subject = undefined, predicate = undefined;\n for (var i = 0; i < triples.length; i++) {\n var triple = triples[i];\n // Triple with different subject\n if (!equalTerms(triple.subject, subject)) {\n // Terminate previous triple\n if (subject)\n parts.push('.' + this._newline);\n subject = triple.subject;\n predicate = triple.predicate;\n parts.push(this.toEntity(subject), ' ', this.toEntity(predicate));\n }\n // Triple with same subject but different predicate\n else if (!equalTerms(triple.predicate, predicate)) {\n predicate = triple.predicate;\n parts.push(';' + this._newline, this._indent, this.toEntity(predicate));\n }\n // Triple with same subject and predicate\n else {\n parts.push(',');\n }\n parts.push(' ', this.toEntity(triple.object));\n }\n parts.push('.');\n\n return parts.join('');\n}\n\nGenerator.prototype.graph = function (graph) {\n return 'GRAPH ' + this.toEntity(graph.name) + ' ' + this.group(graph);\n};\n\nGenerator.prototype.graphs = function (keyword, graphs) {\n return !graphs || graphs.length === 0 ? '' :\n mapJoin(graphs, '', function (g) { return keyword + this.toEntity(g) + this._newline; }, this)\n}\n\nGenerator.prototype.group = function (group, inline) {\n group = inline !== true ? this.array(group.patterns || group.triples)\n : this.toPattern(group.type !== 'group' ? group : group.patterns);\n return group.indexOf(this._newline) === -1 ? '{ ' + group + ' }' : '{' + this._newline + this.indent(group) + this._newline + '}';\n};\n\nGenerator.prototype.query = function (query) {\n return this.toQuery(query);\n};\n\nGenerator.prototype.filter = function (filter) {\n return 'FILTER(' + this.toExpression(filter.expression) + ')';\n};\n\nGenerator.prototype.bind = function (bind) {\n return 'BIND(' + this.toExpression(bind.expression) + ' AS ' + variableToString(bind.variable) + ')';\n};\n\nGenerator.prototype.optional = function (optional) {\n return 'OPTIONAL ' + this.group(optional);\n};\n\nGenerator.prototype.union = function (union) {\n return mapJoin(union.patterns, this._newline + 'UNION' + this._newline, function (p) { return this.group(p, true); }, this);\n};\n\nGenerator.prototype.minus = function (minus) {\n return 'MINUS ' + this.group(minus);\n};\n\nGenerator.prototype.values = function (valuesList) {\n // Gather unique keys\n var keys = Object.keys(valuesList.values.reduce(function (keyHash, values) {\n for (var key in values) keyHash[key] = true;\n return keyHash;\n }, {}));\n // Check whether simple syntax can be used\n var lparen, rparen;\n if (keys.length === 1) {\n lparen = rparen = '';\n } else {\n lparen = '(';\n rparen = ')';\n }\n // Create value rows\n return 'VALUES ' + lparen + keys.join(' ') + rparen + ' {' + this._newline +\n mapJoin(valuesList.values, this._newline, function (values) {\n return ' ' + lparen + mapJoin(keys, undefined, function (key) {\n return values[key] ? this.toEntity(values[key]) : 'UNDEF';\n }, this) + rparen;\n }, this) + this._newline + '}';\n};\n\nGenerator.prototype.service = function (service) {\n return 'SERVICE ' + (service.silent ? 'SILENT ' : '') + this.toEntity(service.name) + ' ' +\n this.group(service);\n};\n\n// Converts the parsed expression object into a SPARQL expression\nGenerator.prototype.toExpression = function (expr) {\n if (isTerm(expr)) {\n return this.toEntity(expr);\n }\n switch (expr.type.toLowerCase()) {\n case 'aggregate':\n return expr.aggregation.toUpperCase() +\n '(' + (expr.distinct ? 'DISTINCT ' : '') + this.toExpression(expr.expression) +\n (typeof expr.separator === 'string' ? '; SEPARATOR = ' + '\"' + expr.separator.replace(escape, escapeReplacer) + '\"' : '') + ')';\n case 'functioncall':\n return this.toEntity(expr.function) + '(' + mapJoin(expr.args, ', ', this.toExpression, this) + ')';\n case 'operation':\n var operator = expr.operator.toUpperCase(), args = expr.args || [];\n switch (expr.operator.toLowerCase()) {\n // Infix operators\n case '<':\n case '>':\n case '>=':\n case '<=':\n case '&&':\n case '||':\n case '=':\n case '!=':\n case '+':\n case '-':\n case '*':\n case '/':\n return (isTerm(args[0]) ? this.toEntity(args[0]) : '(' + this.toExpression(args[0]) + ')') +\n ' ' + operator + ' ' +\n (isTerm(args[1]) ? this.toEntity(args[1]) : '(' + this.toExpression(args[1]) + ')');\n // Unary operators\n case '!':\n return '!(' + this.toExpression(args[0]) + ')';\n case 'uplus':\n return '+(' + this.toExpression(args[0]) + ')';\n case 'uminus':\n return '-(' + this.toExpression(args[0]) + ')';\n // IN and NOT IN\n case 'notin':\n operator = 'NOT IN';\n case 'in':\n return this.toExpression(args[0]) + ' ' + operator +\n '(' + (isString(args[1]) ? args[1] : mapJoin(args[1], ', ', this.toExpression, this)) + ')';\n // EXISTS and NOT EXISTS\n case 'notexists':\n operator = 'NOT EXISTS';\n case 'exists':\n return operator + ' ' + this.group(args[0], true);\n // Other expressions\n default:\n return operator + '(' + mapJoin(args, ', ', this.toExpression, this) + ')';\n }\n default:\n throw new Error('Unknown expression type: ' + expr.type);\n }\n};\n\n// Converts the parsed entity (or property path) into a SPARQL entity\nGenerator.prototype.toEntity = function (value) {\n if (isTerm(value)) {\n switch (value.termType) {\n // variable, * selector, or blank node\n case 'Wildcard':\n return '*';\n case 'Variable':\n return variableToString(value);\n case 'BlankNode':\n return '_:' + value.value;\n // literal\n case 'Literal':\n var lexical = value.value || '', language = value.language || '', datatype = value.datatype;\n value = '\"' + lexical.replace(escape, escapeReplacer) + '\"';\n if (language){\n value += '@' + language;\n } else if (datatype) {\n // Abbreviate literals when possible\n if (!this._explicitDatatype) {\n switch (datatype.value) {\n case XSD_STRING:\n return value;\n case XSD_INTEGER:\n if (/^\\d+$/.test(lexical))\n // Add space to avoid confusion with decimals in broken parsers\n return lexical + ' ';\n }\n }\n value += '^^' + this.encodeIRI(datatype.value);\n }\n return value;\n case 'Quad':\n if (!this._sparqlStar)\n throw new Error('SPARQL* support is not enabled');\n\n if (value.graph && value.graph.termType !== \"DefaultGraph\") {\n return '<< GRAPH ' +\n this.toEntity(value.graph) +\n ' { ' +\n this.toEntity(value.subject) + ' ' +\n this.toEntity(value.predicate) + ' ' +\n this.toEntity(value.object) +\n ' } ' +\n ' >>'\n }\n else {\n return (\n '<< ' +\n this.toEntity(value.subject) + ' ' +\n this.toEntity(value.predicate) + ' ' +\n this.toEntity(value.object) +\n ' >>'\n );\n }\n // IRI\n default:\n return this.encodeIRI(value.value);\n }\n }\n // property path\n else {\n var items = value.items.map(this.toEntity, this), path = value.pathType;\n switch (path) {\n // prefix operator\n case '^':\n case '!':\n return path + items[0];\n // postfix operator\n case '*':\n case '+':\n case '?':\n return '(' + items[0] + path + ')';\n // infix operator\n default:\n return '(' + items.join(path) + ')';\n }\n }\n};\nvar escape = /[\"\\\\\\t\\n\\r\\b\\f]/g,\n escapeReplacer = function (c) { return escapeReplacements[c]; },\n escapeReplacements = { '\\\\': '\\\\\\\\', '\"': '\\\\\"', '\\t': '\\\\t',\n '\\n': '\\\\n', '\\r': '\\\\r', '\\b': '\\\\b', '\\f': '\\\\f' };\n\n// Represent the IRI, as a prefixed name when possible\nGenerator.prototype.encodeIRI = function (iri) {\n var prefixMatch = this._prefixRegex.exec(iri);\n if (prefixMatch) {\n var prefix = this._prefixByIri[prefixMatch[1]];\n this._usedPrefixes[prefix] = true;\n return prefix + ':' + prefixMatch[2];\n }\n return '<' + iri + '>';\n};\n\n// Converts the parsed update object into a SPARQL update clause\nGenerator.prototype.toUpdate = function (update) {\n switch (update.type || update.updateType) {\n case 'load':\n return 'LOAD' + (update.source ? ' ' + this.toEntity(update.source) : '') +\n (update.destination ? ' INTO GRAPH ' + this.toEntity(update.destination) : '');\n case 'insert':\n return 'INSERT DATA ' + this.group(update.insert, true);\n case 'delete':\n return 'DELETE DATA ' + this.group(update.delete, true);\n case 'deletewhere':\n return 'DELETE WHERE ' + this.group(update.delete, true);\n case 'insertdelete':\n return (update.graph ? 'WITH ' + this.toEntity(update.graph) + this._newline : '') +\n (update.delete.length ? 'DELETE ' + this.group(update.delete, true) + this._newline : '') +\n (update.insert.length ? 'INSERT ' + this.group(update.insert, true) + this._newline : '') +\n (update.using ? this.graphs('USING ', update.using.default) : '') +\n (update.using ? this.graphs('USING NAMED ', update.using.named) : '') +\n 'WHERE ' + this.group(update.where, true);\n case 'add':\n case 'copy':\n case 'move':\n return update.type.toUpperCase()+ ' ' + (update.silent ? 'SILENT ' : '') + (update.source.default ? 'DEFAULT' : this.toEntity(update.source.name)) +\n ' TO ' + this.toEntity(update.destination.name);\n case 'create':\n case 'clear':\n case 'drop':\n return update.type.toUpperCase() + (update.silent ? ' SILENT ' : ' ') + (\n update.graph.default ? 'DEFAULT' :\n update.graph.named ? 'NAMED' :\n update.graph.all ? 'ALL' :\n ('GRAPH ' + this.toEntity(update.graph.name))\n );\n default:\n throw new Error('Unknown update query type: ' + update.type);\n }\n};\n\n// Indents each line of the string\nGenerator.prototype.indent = function(text) { return text.replace(/^/gm, this._indent); }\n\nfunction variableToString(variable){\n return '?' + variable.value;\n}\n\n// Checks whether the object is a string\nfunction isString(object) { return typeof object === 'string'; }\n\n// Checks whether the object is a Term\nfunction isTerm(object) {\n return typeof object.termType === 'string';\n}\n\n// Checks whether term1 and term2 are equivalent without `.equals()` prototype method\nfunction equalTerms(term1, term2) {\n if (!term1 || !isTerm(term1)) { return false; }\n if (!term2 || !isTerm(term2)) { return false; }\n if (term1.termType !== term2.termType) { return false; }\n switch (term1.termType) {\n case 'Literal':\n return term1.value === term2.value\n && term1.language === term2.language\n && equalTerms(term1.datatype, term2.datatype);\n case 'Quad':\n return equalTerms(term1.subject, term2.subject)\n && equalTerms(term1.predicate, term2.predicate)\n && equalTerms(term1.object, term2.object)\n && equalTerms(term1.graph, term2.graph);\n default:\n return term1.value === term2.value;\n }\n}\n\n// Maps the array with the given function, and joins the results using the separator\nfunction mapJoin(array, sep, func, self) {\n return array.map(func, self).join(isString(sep) ? sep : ' ');\n}\n\n/**\n * @param options {\n * allPrefixes: boolean,\n * indentation: string,\n * newline: string\n * }\n */\nmodule.exports = function SparqlGenerator(options = {}) {\n return {\n stringify: function (query) {\n var currentOptions = Object.create(options);\n currentOptions.prefixes = query.prefixes;\n return new Generator(currentOptions).toQuery(query);\n },\n createGenerator: function() { return new Generator(options); }\n };\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar SparqlParser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,12,13,15,16,24,32,36,41,45,100,110,113,115,116,123,126,131,197,224,229,308,329,330,331,332,333],$V1=[2,247],$V2=[100,110,113,115,116,123,126,131,329,330,331,332,333],$V3=[2,409],$V4=[1,18],$V5=[1,27],$V6=[13,16,45,197,224,229,308],$V7=[28,29,53],$V8=[28,53],$V9=[1,42],$Va=[1,45],$Vb=[1,41],$Vc=[1,44],$Vd=[123,126],$Ve=[1,67],$Vf=[39,45,87],$Vg=[13,16,45,197,224,308],$Vh=[1,87],$Vi=[2,281],$Vj=[1,86],$Vk=[13,16,45,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vl=[6,28,29,53,63,70,73,81,83,85],$Vm=[6,13,16,28,29,53,63,70,73,81,83,85,87,308],$Vn=[6,13,16,28,29,45,53,63,70,73,81,82,83,85,87,89,197,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314],$Vo=[6,13,16,28,29,31,39,45,47,48,53,63,70,73,81,82,83,85,87,89,109,112,121,123,126,128,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,337,338,340,341,342,343,344,345,346],$Vp=[13,16,308],$Vq=[112,132,327,334],$Vr=[13,16,112,132,308],$Vs=[1,111],$Vt=[1,117],$Vu=[112,132,327,328,334],$Vv=[13,16,112,132,308,328],$Vw=[28,29,45,53,87],$Vx=[1,138],$Vy=[1,151],$Vz=[1,128],$VA=[1,127],$VB=[1,129],$VC=[1,140],$VD=[1,141],$VE=[1,142],$VF=[1,143],$VG=[1,144],$VH=[1,145],$VI=[1,147],$VJ=[1,148],$VK=[2,457],$VL=[1,158],$VM=[1,159],$VN=[1,160],$VO=[1,152],$VP=[1,153],$VQ=[1,156],$VR=[1,171],$VS=[1,172],$VT=[1,173],$VU=[1,174],$VV=[1,175],$VW=[1,176],$VX=[1,167],$VY=[1,168],$VZ=[1,169],$V_=[1,170],$V$=[1,157],$V01=[1,166],$V11=[1,161],$V21=[1,162],$V31=[1,163],$V41=[1,164],$V51=[1,165],$V61=[6,13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],$V71=[1,195],$V81=[6,31,73,81,83,85],$V91=[2,285],$Va1=[1,199],$Vb1=[1,201],$Vc1=[6,31,70,73,81,83,85],$Vd1=[2,283],$Ve1=[1,207],$Vf1=[1,218],$Vg1=[1,223],$Vh1=[1,219],$Vi1=[1,225],$Vj1=[1,226],$Vk1=[1,224],$Vl1=[6,63,70,73,81,83,85],$Vm1=[1,236],$Vn1=[2,334],$Vo1=[1,243],$Vp1=[1,241],$Vq1=[6,193],$Vr1=[2,349],$Vs1=[2,339],$Vt1=[28,128],$Vu1=[47,48,193,272],$Vv1=[47,48,193,242,272],$Vw1=[47,48,193,242,246,272],$Vx1=[47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,341,342,343,344,345,346],$Vy1=[39,47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,338,341,342,343,344,345,346],$Vz1=[1,271],$VA1=[1,270],$VB1=[6,13,16,29,31,39,45,47,48,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,338,341,342,343,344,345,346,347,348,349,350,351],$VC1=[1,281],$VD1=[1,280],$VE1=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],$VF1=[45,89],$VG1=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],$VH1=[13,16,31,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$VI1=[31,89],$VJ1=[48,87],$VK1=[6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338],$VL1=[6,13,16,39,45,48,82,87,89,231,263,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338,340],$VM1=[1,313],$VN1=[6,85],$VO1=[6,31,81,83,85],$VP1=[2,361],$VQ1=[2,353],$VR1=[1,343],$VS1=[31,112,335],$VT1=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$VU1=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335],$VV1=[6,109,193],$VW1=[31,112],$VX1=[13,16,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],$VY1=[1,390],$VZ1=[1,391],$V_1=[13,16,87,197,308,314],$V$1=[13,16,39,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],$V02=[1,417],$V12=[1,418],$V22=[13,16,48,197,229,308],$V32=[6,31,85],$V42=[6,13,16,31,45,73,81,83,85,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$V52=[6,13,16,29,31,45,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,231,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,346,347,348,349,350,351],$V62=[29,31,85,112,159,160,161,163,164],$V72=[1,443],$V82=[1,444],$V92=[1,449],$Va2=[31,112,193,232,318,335],$Vb2=[13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vc2=[13,16,31,45,48,82,87,89,112,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Vd2=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Ve2=[13,16,31,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$Vf2=[31,45],$Vg2=[1,507],$Vh2=[1,508],$Vi2=[6,13,16,29,31,39,45,47,48,63,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,336,338,341,342,343,344,345,346,347,348,349,350,351],$Vj2=[29,31,85,112,159,160,161,163,164,335],$Vk2=[6,13,16,31,45,70,73,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$Vl2=[13,16,31,45,48,82,87,89,112,193,197,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$Vm2=[2,352],$Vn2=[13,16,197,308,314],$Vo2=[1,565],$Vp2=[6,13,16,31,45,76,78,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],$Vq2=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$Vr2=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],$Vs2=[13,16,87,308],$Vt2=[2,364],$Vu2=[29,31,85,112,159,160,161,163,164,193,232,318,335],$Vv2=[31,112,193,232,272,318,335],$Vw2=[2,359],$Vx2=[13,16,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],$Vy2=[29,31,85,112,159,160,161,163,164,193,232,272,318,335],$Vz2=[13,16,31,45,82,87,89,112,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],$VA2=[2,347];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"QueryOrUpdate\":3,\"Prologue\":4,\"QueryOrUpdate_group0\":5,\"EOF\":6,\"Query\":7,\"Qry\":8,\"Query_option0\":9,\"Prologue_repetition0\":10,\"BaseDecl\":11,\"BASE\":12,\"IRIREF\":13,\"PrefixDecl\":14,\"PREFIX\":15,\"PNAME_NS\":16,\"SelectClauseWildcard\":17,\"Qry_repetition0\":18,\"WhereClause\":19,\"SolutionModifierNoGroup\":20,\"SelectClauseVars\":21,\"Qry_repetition1\":22,\"SolutionModifier\":23,\"CONSTRUCT\":24,\"ConstructTemplate\":25,\"Qry_repetition2\":26,\"Qry_repetition3\":27,\"WHERE\":28,\"{\":29,\"Qry_option0\":30,\"}\":31,\"DESCRIBE\":32,\"Qry_group0\":33,\"Qry_repetition4\":34,\"Qry_option1\":35,\"ASK\":36,\"Qry_repetition5\":37,\"SelectClauseBase\":38,\"*\":39,\"SelectClauseVars_repetition_plus0\":40,\"SELECT\":41,\"SelectClauseBase_option0\":42,\"SelectClauseItem\":43,\"Var\":44,\"(\":45,\"Expression\":46,\"AS\":47,\")\":48,\"SubSelect\":49,\"SubSelect_option0\":50,\"SubSelect_option1\":51,\"DatasetClause\":52,\"FROM\":53,\"DatasetClause_option0\":54,\"iri\":55,\"WhereClause_option0\":56,\"GroupGraphPattern\":57,\"SolutionModifier_option0\":58,\"SolutionModifierNoGroup_option0\":59,\"SolutionModifierNoGroup_option1\":60,\"SolutionModifierNoGroup_option2\":61,\"GroupClause\":62,\"GROUP\":63,\"BY\":64,\"GroupClause_repetition_plus0\":65,\"GroupCondition\":66,\"BuiltInCall\":67,\"FunctionCall\":68,\"HavingClause\":69,\"HAVING\":70,\"HavingClause_repetition_plus0\":71,\"OrderClause\":72,\"ORDER\":73,\"OrderClause_repetition_plus0\":74,\"OrderCondition\":75,\"ASC\":76,\"BrackettedExpression\":77,\"DESC\":78,\"Constraint\":79,\"LimitOffsetClauses\":80,\"LIMIT\":81,\"INTEGER\":82,\"OFFSET\":83,\"ValuesClause\":84,\"VALUES\":85,\"InlineData\":86,\"VAR\":87,\"InlineData_repetition0\":88,\"NIL\":89,\"InlineData_repetition1\":90,\"InlineData_repetition_plus2\":91,\"InlineData_repetition3\":92,\"DataBlock\":93,\"DataBlockValueList\":94,\"DataBlockValueList_repetition_plus0\":95,\"Update\":96,\"Update_repetition0\":97,\"Update1\":98,\"Update_option0\":99,\"LOAD\":100,\"Update1_option0\":101,\"Update1_option1\":102,\"Update1_group0\":103,\"Update1_option2\":104,\"GraphRefAll\":105,\"Update1_group1\":106,\"Update1_option3\":107,\"GraphOrDefault\":108,\"TO\":109,\"CREATE\":110,\"Update1_option4\":111,\"GRAPH\":112,\"INSERTDATA\":113,\"QuadPattern\":114,\"DELETEDATA\":115,\"DELETEWHERE\":116,\"Update1_option5\":117,\"InsertDeleteClause\":118,\"Update1_repetition0\":119,\"IntoGraphClause\":120,\"INTO\":121,\"GraphRef\":122,\"DELETE\":123,\"InsertDeleteClause_option0\":124,\"InsertClause\":125,\"INSERT\":126,\"UsingClause\":127,\"USING\":128,\"UsingClause_option0\":129,\"WithClause\":130,\"WITH\":131,\"DEFAULT\":132,\"GraphOrDefault_option0\":133,\"GraphRefAll_group0\":134,\"Quads\":135,\"Quads_option0\":136,\"Quads_repetition0\":137,\"QuadsNotTriples\":138,\"VarOrIri\":139,\"QuadsNotTriples_option0\":140,\"QuadsNotTriples_option1\":141,\"QuadsNotTriples_option2\":142,\"TriplesTemplate\":143,\"TriplesTemplate_repetition0\":144,\"TriplesSameSubject\":145,\"TriplesTemplate_option0\":146,\"GroupGraphPatternSub\":147,\"GroupGraphPatternSub_option0\":148,\"GroupGraphPatternSub_repetition0\":149,\"GroupGraphPatternSubTail\":150,\"GraphPatternNotTriples\":151,\"GroupGraphPatternSubTail_option0\":152,\"GroupGraphPatternSubTail_option1\":153,\"TriplesBlock\":154,\"TriplesBlock_repetition0\":155,\"TriplesSameSubjectPath\":156,\"TriplesBlock_option0\":157,\"GroupOrUnionGraphPattern\":158,\"OPTIONAL\":159,\"MINUS\":160,\"SERVICE\":161,\"GraphPatternNotTriples_option0\":162,\"FILTER\":163,\"BIND\":164,\"InlineDataOneVar\":165,\"InlineDataFull\":166,\"InlineDataOneVar_repetition0\":167,\"InlineDataFull_repetition0\":168,\"InlineDataFull_repetition_plus1\":169,\"InlineDataFull_repetition2\":170,\"DataBlockValue\":171,\"Literal\":172,\"QuotedTriple\":173,\"UNDEF\":174,\"GroupOrUnionGraphPattern_repetition0\":175,\"ArgList\":176,\"ArgList_option0\":177,\"ArgList_repetition0\":178,\"ExpressionList\":179,\"ExpressionList_repetition0\":180,\"ConstructTemplate_option0\":181,\"ConstructTriples\":182,\"ConstructTriples_repetition0\":183,\"ConstructTriples_option0\":184,\"VarOrTermOrQuotedTP\":185,\"PropertyListNotEmpty\":186,\"TriplesNode\":187,\"PropertyList\":188,\"PropertyList_option0\":189,\"VerbObjectList\":190,\"PropertyListNotEmpty_repetition0\":191,\"SemiOptionalVerbObjectList\":192,\";\":193,\"SemiOptionalVerbObjectList_option0\":194,\"Verb\":195,\"ObjectList\":196,\"a\":197,\"ObjectList_repetition0\":198,\"Object\":199,\"GraphNode\":200,\"Object_option0\":201,\"PropertyListPathNotEmpty\":202,\"TriplesNodePath\":203,\"TriplesSameSubjectPath_option0\":204,\"O\":205,\"PropertyListPathNotEmpty_repetition0\":206,\"PropertyListPathNotEmptyTail\":207,\"O_group0\":208,\"ObjectListPath\":209,\"ObjectListPath_repetition0\":210,\"ObjectPath\":211,\"GraphNodePath\":212,\"ObjectPath_option0\":213,\"Path\":214,\"Path_repetition0\":215,\"PathSequence\":216,\"PathSequence_repetition0\":217,\"PathEltOrInverse\":218,\"PathElt\":219,\"PathPrimary\":220,\"PathElt_option0\":221,\"PathEltOrInverse_option0\":222,\"IriOrA\":223,\"!\":224,\"PathNegatedPropertySet\":225,\"PathOneInPropertySet\":226,\"PathNegatedPropertySet_repetition0\":227,\"PathNegatedPropertySet_option0\":228,\"^\":229,\"TriplesNode_repetition_plus0\":230,\"[\":231,\"]\":232,\"TriplesNodePath_repetition_plus0\":233,\"VarOrTermOrQuotedTPExpr\":234,\"VarOrTerm\":235,\"GraphTerm\":236,\"BlankNode\":237,\"ConditionalOrExpression\":238,\"ConditionalAndExpression\":239,\"ConditionalOrExpression_repetition0\":240,\"ConditionalOrExpressionTail\":241,\"||\":242,\"RelationalExpression\":243,\"ConditionalAndExpression_repetition0\":244,\"ConditionalAndExpressionTail\":245,\"&&\":246,\"NumericExpression\":247,\"RelationalExpression_group0\":248,\"RelationalExpression_option0\":249,\"IN\":250,\"MultiplicativeExpression\":251,\"NumericExpression_repetition0\":252,\"AdditiveExpressionTail\":253,\"AdditiveExpressionTail_group0\":254,\"NumericLiteralPositive\":255,\"AdditiveExpressionTail_repetition0\":256,\"NumericLiteralNegative\":257,\"AdditiveExpressionTail_repetition1\":258,\"UnaryExpression\":259,\"MultiplicativeExpression_repetition0\":260,\"MultiplicativeExpressionTail\":261,\"MultiplicativeExpressionTail_group0\":262,\"+\":263,\"PrimaryExpression\":264,\"-\":265,\"ExprQuotedTP\":266,\"Aggregate\":267,\"FUNC_ARITY0\":268,\"FUNC_ARITY1\":269,\"FUNC_ARITY1_SPARQL_STAR\":270,\"FUNC_ARITY2\":271,\",\":272,\"FUNC_ARITY3\":273,\"FUNC_ARITY3_SPARQL_STAR\":274,\"BuiltInCall_group0\":275,\"BOUND\":276,\"BNODE\":277,\"BuiltInCall_option0\":278,\"EXISTS\":279,\"COUNT\":280,\"Aggregate_option0\":281,\"Aggregate_group0\":282,\"FUNC_AGGREGATE\":283,\"Aggregate_option1\":284,\"GROUP_CONCAT\":285,\"Aggregate_option2\":286,\"Aggregate_option3\":287,\"GroupConcatSeparator\":288,\"SEPARATOR\":289,\"=\":290,\"String\":291,\"LANGTAG\":292,\"^^\":293,\"DECIMAL\":294,\"DOUBLE\":295,\"BOOLEAN\":296,\"INTEGER_POSITIVE\":297,\"DECIMAL_POSITIVE\":298,\"DOUBLE_POSITIVE\":299,\"INTEGER_NEGATIVE\":300,\"DECIMAL_NEGATIVE\":301,\"DOUBLE_NEGATIVE\":302,\"STRING_LITERAL1\":303,\"STRING_LITERAL2\":304,\"STRING_LITERAL_LONG1\":305,\"STRING_LITERAL_LONG2\":306,\"PrefixedName\":307,\"PNAME_LN\":308,\"BLANK_NODE_LABEL\":309,\"ANON\":310,\"QuotedTP\":311,\"<<\":312,\"qtSubjectOrObject\":313,\">>\":314,\"DataValueTerm\":315,\"AnnotationPattern\":316,\"{|\":317,\"|}\":318,\"AnnotationPatternPath\":319,\"ExprVarOrTerm\":320,\"QueryOrUpdate_group0_option0\":321,\"Prologue_repetition0_group0\":322,\"Qry_group0_repetition_plus0\":323,\"SelectClauseBase_option0_group0\":324,\"DISTINCT\":325,\"REDUCED\":326,\"NAMED\":327,\"SILENT\":328,\"CLEAR\":329,\"DROP\":330,\"ADD\":331,\"MOVE\":332,\"COPY\":333,\"ALL\":334,\".\":335,\"UNION\":336,\"|\":337,\"/\":338,\"PathElt_option0_group0\":339,\"?\":340,\"!=\":341,\"<\":342,\">\":343,\"<=\":344,\">=\":345,\"NOT\":346,\"CONCAT\":347,\"COALESCE\":348,\"SUBSTR\":349,\"REGEX\":350,\"REPLACE\":351,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"EOF\",12:\"BASE\",13:\"IRIREF\",15:\"PREFIX\",16:\"PNAME_NS\",24:\"CONSTRUCT\",28:\"WHERE\",29:\"{\",31:\"}\",32:\"DESCRIBE\",36:\"ASK\",39:\"*\",41:\"SELECT\",45:\"(\",47:\"AS\",48:\")\",53:\"FROM\",63:\"GROUP\",64:\"BY\",70:\"HAVING\",73:\"ORDER\",76:\"ASC\",78:\"DESC\",81:\"LIMIT\",82:\"INTEGER\",83:\"OFFSET\",85:\"VALUES\",87:\"VAR\",89:\"NIL\",100:\"LOAD\",109:\"TO\",110:\"CREATE\",112:\"GRAPH\",113:\"INSERTDATA\",115:\"DELETEDATA\",116:\"DELETEWHERE\",121:\"INTO\",123:\"DELETE\",126:\"INSERT\",128:\"USING\",131:\"WITH\",132:\"DEFAULT\",159:\"OPTIONAL\",160:\"MINUS\",161:\"SERVICE\",163:\"FILTER\",164:\"BIND\",174:\"UNDEF\",193:\";\",197:\"a\",224:\"!\",229:\"^\",231:\"[\",232:\"]\",242:\"||\",246:\"&&\",250:\"IN\",263:\"+\",265:\"-\",268:\"FUNC_ARITY0\",269:\"FUNC_ARITY1\",270:\"FUNC_ARITY1_SPARQL_STAR\",271:\"FUNC_ARITY2\",272:\",\",273:\"FUNC_ARITY3\",274:\"FUNC_ARITY3_SPARQL_STAR\",276:\"BOUND\",277:\"BNODE\",279:\"EXISTS\",280:\"COUNT\",283:\"FUNC_AGGREGATE\",285:\"GROUP_CONCAT\",289:\"SEPARATOR\",290:\"=\",292:\"LANGTAG\",293:\"^^\",294:\"DECIMAL\",295:\"DOUBLE\",296:\"BOOLEAN\",297:\"INTEGER_POSITIVE\",298:\"DECIMAL_POSITIVE\",299:\"DOUBLE_POSITIVE\",300:\"INTEGER_NEGATIVE\",301:\"DECIMAL_NEGATIVE\",302:\"DOUBLE_NEGATIVE\",303:\"STRING_LITERAL1\",304:\"STRING_LITERAL2\",305:\"STRING_LITERAL_LONG1\",306:\"STRING_LITERAL_LONG2\",308:\"PNAME_LN\",309:\"BLANK_NODE_LABEL\",310:\"ANON\",312:\"<<\",314:\">>\",317:\"{|\",318:\"|}\",325:\"DISTINCT\",326:\"REDUCED\",327:\"NAMED\",328:\"SILENT\",329:\"CLEAR\",330:\"DROP\",331:\"ADD\",332:\"MOVE\",333:\"COPY\",334:\"ALL\",335:\".\",336:\"UNION\",337:\"|\",338:\"/\",340:\"?\",341:\"!=\",342:\"<\",343:\">\",344:\"<=\",345:\">=\",346:\"NOT\",347:\"CONCAT\",348:\"COALESCE\",349:\"SUBSTR\",350:\"REGEX\",351:\"REPLACE\"},\nproductions_: [0,[3,3],[7,2],[4,1],[11,2],[14,3],[8,4],[8,4],[8,5],[8,7],[8,5],[8,4],[17,2],[21,2],[38,2],[43,1],[43,5],[49,4],[49,4],[52,3],[19,2],[23,2],[20,3],[62,3],[66,1],[66,1],[66,3],[66,5],[66,1],[69,2],[72,3],[75,2],[75,2],[75,1],[75,1],[80,2],[80,2],[80,4],[80,4],[84,2],[86,4],[86,4],[86,6],[86,2],[94,3],[96,3],[98,4],[98,3],[98,5],[98,4],[98,2],[98,2],[98,2],[98,5],[120,2],[118,3],[118,1],[125,2],[127,3],[130,2],[108,1],[108,2],[122,2],[105,1],[105,1],[114,3],[135,2],[138,7],[143,3],[57,3],[57,3],[147,2],[150,3],[154,3],[151,1],[151,2],[151,2],[151,3],[151,4],[151,2],[151,6],[151,1],[93,1],[93,1],[165,4],[166,4],[166,6],[171,1],[171,1],[171,1],[171,1],[158,2],[79,1],[79,1],[79,1],[68,2],[176,1],[176,5],[179,1],[179,4],[25,3],[182,3],[145,2],[145,2],[188,1],[186,2],[192,2],[190,2],[195,1],[195,1],[196,2],[199,2],[156,2],[156,2],[202,2],[207,1],[207,2],[205,2],[209,2],[211,2],[214,2],[216,2],[219,2],[218,2],[220,1],[220,2],[220,3],[225,1],[225,1],[225,4],[226,1],[226,2],[187,3],[187,3],[203,3],[203,3],[200,1],[200,1],[212,1],[212,1],[234,1],[235,1],[235,1],[139,1],[139,1],[44,1],[236,1],[236,1],[236,1],[236,1],[46,1],[238,2],[241,2],[239,2],[245,2],[243,1],[243,3],[243,4],[247,2],[253,2],[253,2],[253,2],[251,2],[261,2],[259,2],[259,2],[259,2],[259,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[77,3],[67,1],[67,2],[67,4],[67,4],[67,6],[67,8],[67,8],[67,2],[67,4],[67,2],[67,4],[67,3],[267,5],[267,5],[267,6],[288,4],[172,1],[172,2],[172,3],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[255,1],[255,1],[255,1],[257,1],[257,1],[257,1],[291,1],[291,1],[291,1],[291,1],[55,1],[55,1],[307,1],[307,1],[237,1],[237,1],[311,5],[173,5],[313,1],[313,1],[313,1],[313,1],[313,1],[315,1],[315,1],[315,1],[185,1],[185,1],[185,1],[316,3],[319,3],[266,5],[320,1],[320,1],[320,1],[223,1],[223,1],[321,0],[321,1],[5,1],[5,1],[5,1],[9,0],[9,1],[322,1],[322,1],[10,0],[10,2],[18,0],[18,2],[22,0],[22,2],[26,0],[26,2],[27,0],[27,2],[30,0],[30,1],[323,1],[323,2],[33,1],[33,1],[34,0],[34,2],[35,0],[35,1],[37,0],[37,2],[40,1],[40,2],[324,1],[324,1],[42,0],[42,1],[50,0],[50,1],[51,0],[51,1],[54,0],[54,1],[56,0],[56,1],[58,0],[58,1],[59,0],[59,1],[60,0],[60,1],[61,0],[61,1],[65,1],[65,2],[71,1],[71,2],[74,1],[74,2],[88,0],[88,2],[90,0],[90,2],[91,1],[91,2],[92,0],[92,2],[95,1],[95,2],[97,0],[97,4],[99,0],[99,2],[101,0],[101,1],[102,0],[102,1],[103,1],[103,1],[104,0],[104,1],[106,1],[106,1],[106,1],[107,0],[107,1],[111,0],[111,1],[117,0],[117,1],[119,0],[119,2],[124,0],[124,1],[129,0],[129,1],[133,0],[133,1],[134,1],[134,1],[134,1],[136,0],[136,1],[137,0],[137,2],[140,0],[140,1],[141,0],[141,1],[142,0],[142,1],[144,0],[144,3],[146,0],[146,1],[148,0],[148,1],[149,0],[149,2],[152,0],[152,1],[153,0],[153,1],[155,0],[155,3],[157,0],[157,1],[162,0],[162,1],[167,0],[167,2],[168,0],[168,2],[169,1],[169,2],[170,0],[170,2],[175,0],[175,3],[177,0],[177,1],[178,0],[178,3],[180,0],[180,3],[181,0],[181,1],[183,0],[183,3],[184,0],[184,1],[189,0],[189,1],[191,0],[191,2],[194,0],[194,1],[198,0],[198,3],[201,0],[201,1],[204,0],[204,1],[206,0],[206,2],[208,1],[208,1],[210,0],[210,3],[213,0],[213,1],[215,0],[215,3],[217,0],[217,3],[339,1],[339,1],[339,1],[221,0],[221,1],[222,0],[222,1],[227,0],[227,3],[228,0],[228,1],[230,1],[230,2],[233,1],[233,2],[240,0],[240,2],[244,0],[244,2],[248,1],[248,1],[248,1],[248,1],[248,1],[248,1],[249,0],[249,1],[252,0],[252,2],[254,1],[254,1],[256,0],[256,2],[258,0],[258,2],[260,0],[260,2],[262,1],[262,1],[275,1],[275,1],[275,1],[275,1],[275,1],[278,0],[278,1],[281,0],[281,1],[282,1],[282,1],[284,0],[284,1],[286,0],[286,1],[287,0],[287,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n\n // Set parser options\n $$[$0-1] = $$[$0-1] || {};\n if (Parser.base)\n $$[$0-1].base = Parser.base;\n Parser.base = '';\n $$[$0-1].prefixes = Parser.prefixes;\n Parser.prefixes = null;\n\n if (Parser.pathOnly) {\n if ($$[$0-1].type === 'path' || 'termType' in $$[$0-1]) {\n return $$[$0-1]\n }\n throw new Error('Received full SPARQL query in path only mode');\n } else if ($$[$0-1].type === 'path' || 'termType' in $$[$0-1]) {\n throw new Error('Received only path in full SPARQL mode');\n }\n\n // Ensure that blank nodes are not used across INSERT DATA clauses\n if ($$[$0-1].type === 'update') {\n const insertBnodesAll = {};\n for (const update of $$[$0-1].updates) {\n if (update.updateType === 'insert') {\n // Collect bnodes for current insert clause\n const insertBnodes = {};\n for (const operation of update.insert) {\n if (operation.type === 'bgp' || operation.type === 'graph') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'BlankNode')\n insertBnodes[triple.subject.value] = true;\n if (triple.predicate.termType === 'BlankNode')\n insertBnodes[triple.predicate.value] = true;\n if (triple.object.termType === 'BlankNode')\n insertBnodes[triple.object.value] = true;\n }\n }\n }\n\n // Check if the inserting bnodes don't clash with bnodes from a previous insert clause\n for (const bnode of Object.keys(insertBnodes)) {\n if (insertBnodesAll[bnode]) {\n throw new Error('Detected reuse blank node across different INSERT DATA clauses');\n }\n insertBnodesAll[bnode] = true;\n }\n }\n }\n }\n return $$[$0-1];\n \nbreak;\ncase 2:\nthis.$ = { ...$$[$0-1], ...$$[$0], type: 'query' };\nbreak;\ncase 4:\n\n Parser.base = resolveIRI($$[$0])\n \nbreak;\ncase 5:\n\n if (!Parser.prefixes) Parser.prefixes = {};\n $$[$0-1] = $$[$0-1].substr(0, $$[$0-1].length - 1);\n $$[$0] = resolveIRI($$[$0]);\n Parser.prefixes[$$[$0-1]] = $$[$0];\n \nbreak;\ncase 6:\nthis.$ = { ...$$[$0-3], ...groupDatasets($$[$0-2]), ...$$[$0-1], ...$$[$0] };\nbreak;\ncase 7:\n\n // Check for projection of ungrouped variable\n if (!Parser.skipValidation) {\n const counts = flatten($$[$0-3].variables.map(vars => getAggregatesOfExpression(vars.expression)))\n .some(agg => agg.aggregation === \"count\" && !(agg.expression instanceof Wildcard));\n if (counts || $$[$0].group) {\n for (const selectVar of $$[$0-3].variables) {\n if (selectVar.termType === \"Variable\") {\n if (!$$[$0].group || !$$[$0].group.map(groupVar => getExpressionId(groupVar)).includes(getExpressionId(selectVar))) {\n throw Error(\"Projection of ungrouped variable (?\" + getExpressionId(selectVar) + \")\");\n }\n } else if (getAggregatesOfExpression(selectVar.expression).length === 0) {\n const usedVars = getVariablesFromExpression(selectVar.expression);\n for (const usedVar of usedVars) {\n if (!$$[$0].group || !$$[$0].group.map || !$$[$0].group.map(groupVar => getExpressionId(groupVar)).includes(getExpressionId(usedVar))) {\n throw Error(\"Use of ungrouped variable in projection of operation (?\" + getExpressionId(usedVar) + \")\");\n }\n }\n }\n }\n }\n }\n // Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = $$[$0-1].where.filter(w => w.type === \"query\");\n if (subqueries.length > 0) {\n const selectedVarIds = $$[$0-3].variables.filter(v => v.variable && v.variable.value).map(v => v.variable.value);\n const subqueryIds = flatten(subqueries.map(sub => sub.variables)).map(v => v.value || v.variable.value);\n for (const selectedVarId of selectedVarIds) {\n if (subqueryIds.indexOf(selectedVarId) >= 0) {\n throw Error(\"Target id of 'AS' (?\" + selectedVarId + \") already used in subquery\");\n }\n }\n }\n this.$ = extend($$[$0-3], groupDatasets($$[$0-2]), $$[$0-1], $$[$0])\n \nbreak;\ncase 8:\nthis.$ = extend({ queryType: 'CONSTRUCT', template: $$[$0-3] }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 9:\nthis.$ = extend({ queryType: 'CONSTRUCT', template: $$[$0-2] = ($$[$0-2] ? $$[$0-2].triples : []) }, groupDatasets($$[$0-5]), { where: [ { type: 'bgp', triples: appendAllTo([], $$[$0-2]) } ] }, $$[$0]);\nbreak;\ncase 10:\nthis.$ = extend({ queryType: 'DESCRIBE', variables: $$[$0-3] === '*' ? [new Wildcard()] : $$[$0-3] }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 11:\nthis.$ = extend({ queryType: 'ASK' }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 12:\nthis.$ = extend($$[$0-1], {variables: [new Wildcard()]});\nbreak;\ncase 13:\n\n // Check if id of each selected column is different\n const selectedVarIds = $$[$0].map(v => v.value || v.variable.value);\n const duplicates = getDuplicatesInArray(selectedVarIds);\n if (duplicates.length > 0) {\n throw Error(\"Two or more of the resulting columns have the same name (?\" + duplicates[0] + \")\");\n }\n\n this.$ = extend($$[$0-1], { variables: $$[$0] })\n \nbreak;\ncase 14:\nthis.$ = extend({ queryType: 'SELECT'}, $$[$0] && ($$[$0-1] = lowercase($$[$0]), $$[$0] = {}, $$[$0][$$[$0-1]] = true, $$[$0]));\nbreak;\ncase 16: case 27:\nthis.$ = expression($$[$0-3], { variable: $$[$0-1] });\nbreak;\ncase 17: case 18:\nthis.$ = extend($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], { type: 'query' });\nbreak;\ncase 19: case 58:\nthis.$ = { iri: $$[$0], named: !!$$[$0-1] };\nbreak;\ncase 20:\nthis.$ = { where: $$[$0].patterns };\nbreak;\ncase 21:\nthis.$ = extend($$[$0-1], $$[$0]);\nbreak;\ncase 22:\nthis.$ = extend($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 23:\nthis.$ = { group: $$[$0] };\nbreak;\ncase 24: case 25: case 28: case 31: case 33: case 34:\nthis.$ = expression($$[$0]);\nbreak;\ncase 26:\nthis.$ = expression($$[$0-1]);\nbreak;\ncase 29:\nthis.$ = { having: $$[$0] };\nbreak;\ncase 30:\nthis.$ = { order: $$[$0] };\nbreak;\ncase 32:\nthis.$ = expression($$[$0], { descending: true });\nbreak;\ncase 35:\nthis.$ = { limit: toInt($$[$0]) };\nbreak;\ncase 36:\nthis.$ = { offset: toInt($$[$0]) };\nbreak;\ncase 37:\nthis.$ = { limit: toInt($$[$0-2]), offset: toInt($$[$0]) };\nbreak;\ncase 38:\nthis.$ = { limit: toInt($$[$0]), offset: toInt($$[$0-2]) };\nbreak;\ncase 39: case 43:\nthis.$ = { type: 'values', values: $$[$0] };\nbreak;\ncase 40: case 84:\nthis.$ = $$[$0-1].map(v => ({ [$$[$0-3]]: v }));\nbreak;\ncase 41: case 85:\nthis.$ = $$[$0-1].map(() => ({}));\nbreak;\ncase 42: case 86:\n\n var length = $$[$0-4].length;\n $$[$0-4] = $$[$0-4].map(toVar);\n this.$ = $$[$0-1].map(function (values) {\n if (values.length !== length)\n throw Error('Inconsistent VALUES length');\n var valuesObject = {};\n for(var i = 0; i el.type === \"bind\")) {\n const index = $$[$0-1].indexOf(binding);\n const boundVars = new Set();\n //Collect all bounded variables before the binding\n for (const el of $$[$0-1].slice(0, index)) {\n if (el.type === \"group\" || el.type === \"bgp\") {\n getBoundVarsFromGroupGraphPattern(el).forEach(boundVar => boundVars.add(boundVar));\n }\n }\n // If binding with a non-free variable, throw error\n if (boundVars.has(binding.variable.value)) {\n throw Error(\"Variable used to bind is already bound (?\" + binding.variable.value + \")\");\n }\n }\n this.$ = { type: 'group', patterns: $$[$0-1] }\n \nbreak;\ncase 71:\nthis.$ = $$[$0-1] ? unionAll([$$[$0-1]], $$[$0]) : unionAll($$[$0]);\nbreak;\ncase 72:\nthis.$ = $$[$0] ? [$$[$0-2], $$[$0]] : $$[$0-2];\nbreak;\ncase 75:\nthis.$ = extend($$[$0], { type: 'optional' });\nbreak;\ncase 76:\nthis.$ = extend($$[$0], { type: 'minus' });\nbreak;\ncase 77:\nthis.$ = extend($$[$0], { type: 'graph', name: $$[$0-1] });\nbreak;\ncase 78:\nthis.$ = extend($$[$0], { type: 'service', name: $$[$0-1], silent: !!$$[$0-2] });\nbreak;\ncase 79:\nthis.$ = { type: 'filter', expression: $$[$0] };\nbreak;\ncase 80:\nthis.$ = { type: 'bind', variable: $$[$0-1], expression: $$[$0-3] };\nbreak;\ncase 89:\nthis.$ = ensureSparqlStar($$[$0]);\nbreak;\ncase 90:\nthis.$ = undefined;\nbreak;\ncase 91:\nthis.$ = $$[$0-1].length ? { type: 'union', patterns: unionAll($$[$0-1].map(degroupSingle), [degroupSingle($$[$0])]) } : $$[$0];\nbreak;\ncase 95:\nthis.$ = { ...$$[$0], function: $$[$0-1] };\nbreak;\ncase 96:\nthis.$ = { type: 'functionCall', args: [] };\nbreak;\ncase 97:\nthis.$ = { type: 'functionCall', args: appendTo($$[$0-2], $$[$0-1]), distinct: !!$$[$0-3] };\nbreak;\ncase 98: case 115: case 128: case 247: case 249: case 251: case 253: case 255: case 263: case 267: case 297: case 299: case 303: case 307: case 328: case 341: case 349: case 355: case 361: case 367: case 369: case 373: case 375: case 379: case 381: case 385: case 391: case 395: case 401: case 405: case 409: case 411: case 420: case 428: case 430: case 440: case 444: case 446: case 448:\nthis.$ = [];\nbreak;\ncase 99:\nthis.$ = appendTo($$[$0-2], $$[$0-1]);\nbreak;\ncase 101:\nthis.$ = unionAll($$[$0-2], [$$[$0-1]]);\nbreak;\ncase 102: case 112:\nthis.$ = applyAnnotations($$[$0].map(t => extend(triple($$[$0-1]), t)));\nbreak;\ncase 103:\nthis.$ = applyAnnotations(appendAllTo($$[$0].map(t => extend(triple($$[$0-1].entity), t)), $$[$0-1].triples)) /* the subject is a blank node, possibly with more triples */;\nbreak;\ncase 105:\nthis.$ = unionAll([$$[$0-1]], $$[$0]);\nbreak;\ncase 106:\nthis.$ = unionAll($$[$0]);\nbreak;\ncase 107:\nthis.$ = objectListToTriples($$[$0-1], $$[$0]);\nbreak;\ncase 109: case 237:\nthis.$ = Parser.factory.namedNode(RDF_TYPE);\nbreak;\ncase 110: case 118:\nthis.$ = appendTo($$[$0-1], $$[$0]);\nbreak;\ncase 111:\nthis.$ = $$[$0] ? { annotation: $$[$0], object: $$[$0-1] } : $$[$0-1];\nbreak;\ncase 113:\nthis.$ = !$$[$0] ? $$[$0-1].triples : applyAnnotations(appendAllTo($$[$0].map(t => extend(triple($$[$0-1].entity), t)), $$[$0-1].triples)) /* the subject is a blank node, possibly with more triples */;\nbreak;\ncase 114:\nthis.$ = objectListToTriples(...$$[$0-1], $$[$0]);\nbreak;\ncase 116:\nthis.$ = objectListToTriples(...$$[$0]);\nbreak;\ncase 117: case 159: case 163:\nthis.$ = [$$[$0-1], $$[$0]];\nbreak;\ncase 119:\nthis.$ = $$[$0] ? { object: $$[$0-1], annotation: $$[$0] } : $$[$0-1];;\nbreak;\ncase 120:\nthis.$ = $$[$0-1].length ? path('|',appendTo($$[$0-1], $$[$0])) : $$[$0];\nbreak;\ncase 121:\nthis.$ = $$[$0-1].length ? path('/', appendTo($$[$0-1], $$[$0])) : $$[$0];\nbreak;\ncase 122:\nthis.$ = $$[$0] ? path($$[$0], [$$[$0-1]]) : $$[$0-1];\nbreak;\ncase 123:\nthis.$ = $$[$0-1] ? path($$[$0-1], [$$[$0]]) : $$[$0];;\nbreak;\ncase 125: case 131:\nthis.$ = path($$[$0-1], [$$[$0]]);\nbreak;\ncase 129:\nthis.$ = path('|', appendTo($$[$0-2], $$[$0-1]));\nbreak;\ncase 132: case 134:\nthis.$ = createList($$[$0-1]);\nbreak;\ncase 133: case 135:\nthis.$ = createAnonymousObject($$[$0-1]);\nbreak;\ncase 140:\nthis.$ = { entity: $$[$0], triples: [] };\nbreak;\ncase 145:\nthis.$ = toVar($$[$0]);\nbreak;\ncase 149:\nthis.$ = Parser.factory.namedNode(RDF_NIL);\nbreak;\ncase 151: case 153: case 158: case 162:\nthis.$ = createOperationTree($$[$0-1], $$[$0]);\nbreak;\ncase 152:\nthis.$ = ['||', $$[$0]];\nbreak;\ncase 154:\nthis.$ = ['&&', $$[$0]];\nbreak;\ncase 156:\nthis.$ = operation($$[$0-1], [$$[$0-2], $$[$0]]);\nbreak;\ncase 157:\nthis.$ = operation($$[$0-2] ? 'notin' : 'in', [$$[$0-3], $$[$0]]);\nbreak;\ncase 160:\nthis.$ = ['+', createOperationTree($$[$0-1], $$[$0])];\nbreak;\ncase 161:\n\n var negatedLiteral = createTypedLiteral($$[$0-1].value.replace('-', ''), $$[$0-1].datatype);\n this.$ = ['-', createOperationTree(negatedLiteral, $$[$0])];\n \nbreak;\ncase 164:\nthis.$ = operation('UPLUS', [$$[$0]]);\nbreak;\ncase 165:\nthis.$ = operation($$[$0-1], [$$[$0]]);\nbreak;\ncase 166:\nthis.$ = operation('UMINUS', [$$[$0]]);\nbreak;\ncase 177:\nthis.$ = operation(lowercase($$[$0-1]));\nbreak;\ncase 178:\nthis.$ = operation(lowercase($$[$0-3]), [$$[$0-1]]);\nbreak;\ncase 179:\nthis.$ = ensureSparqlStar(operation(lowercase($$[$0-3]), [$$[$0-1]]));\nbreak;\ncase 180:\nthis.$ = operation(lowercase($$[$0-5]), [$$[$0-3], $$[$0-1]]);\nbreak;\ncase 181:\nthis.$ = operation(lowercase($$[$0-7]), [$$[$0-5], $$[$0-3], $$[$0-1]]);\nbreak;\ncase 182:\nthis.$ = ensureSparqlStar(operation(lowercase($$[$0-7]), [$$[$0-5], $$[$0-3], $$[$0-1]]));\nbreak;\ncase 183:\nthis.$ = operation(lowercase($$[$0-1]), $$[$0]);\nbreak;\ncase 184:\nthis.$ = operation('bound', [toVar($$[$0-1])]);\nbreak;\ncase 185:\nthis.$ = operation($$[$0-1], []);\nbreak;\ncase 186:\nthis.$ = operation($$[$0-3], [$$[$0-1]]);\nbreak;\ncase 187:\nthis.$ = operation($$[$0-2] ? 'notexists' :'exists', [degroupSingle($$[$0])]);\nbreak;\ncase 188: case 189:\nthis.$ = expression($$[$0-1], { type: 'aggregate', aggregation: lowercase($$[$0-4]), distinct: !!$$[$0-2] });\nbreak;\ncase 190:\nthis.$ = expression($$[$0-2], { type: 'aggregate', aggregation: lowercase($$[$0-5]), distinct: !!$$[$0-3], separator: typeof $$[$0-1] === 'string' ? $$[$0-1] : ' ' });\nbreak;\ncase 192:\nthis.$ = createTypedLiteral($$[$0]);\nbreak;\ncase 193:\nthis.$ = createLangLiteral($$[$0-1], lowercase($$[$0].substr(1)));\nbreak;\ncase 194:\nthis.$ = createTypedLiteral($$[$0-2], $$[$0]);\nbreak;\ncase 195: case 204:\nthis.$ = createTypedLiteral($$[$0], XSD_INTEGER);\nbreak;\ncase 196: case 205:\nthis.$ = createTypedLiteral($$[$0], XSD_DECIMAL);\nbreak;\ncase 197: case 206:\nthis.$ = createTypedLiteral(lowercase($$[$0]), XSD_DOUBLE);\nbreak;\ncase 200:\nthis.$ = createTypedLiteral($$[$0].toLowerCase(), XSD_BOOLEAN);\nbreak;\ncase 201:\nthis.$ = createTypedLiteral($$[$0].substr(1), XSD_INTEGER);\nbreak;\ncase 202:\nthis.$ = createTypedLiteral($$[$0].substr(1), XSD_DECIMAL);\nbreak;\ncase 203:\nthis.$ = createTypedLiteral($$[$0].substr(1).toLowerCase(), XSD_DOUBLE);\nbreak;\ncase 207: case 208:\nthis.$ = unescapeString($$[$0], 1);\nbreak;\ncase 209: case 210:\nthis.$ = unescapeString($$[$0], 3);\nbreak;\ncase 211:\nthis.$ = Parser.factory.namedNode(resolveIRI($$[$0]));\nbreak;\ncase 213:\n\n var namePos = $$[$0].indexOf(':'),\n prefix = $$[$0].substr(0, namePos),\n expansion = Parser.prefixes[prefix];\n if (!expansion) throw new Error('Unknown prefix: ' + prefix);\n var uriString = resolveIRI(expansion + $$[$0].substr(namePos + 1));\n this.$ = Parser.factory.namedNode(uriString);\n \nbreak;\ncase 214:\n\n $$[$0] = $$[$0].substr(0, $$[$0].length - 1);\n if (!($$[$0] in Parser.prefixes)) throw new Error('Unknown prefix: ' + $$[$0]);\n var uriString = resolveIRI(Parser.prefixes[$$[$0]]);\n this.$ = Parser.factory.namedNode(uriString);\n \nbreak;\ncase 215:\nthis.$ = blank($$[$0].replace(/^(_:)/,''));;\nbreak;\ncase 216:\nthis.$ = blank();\nbreak;\ncase 217: case 218: case 232:\nthis.$ = ensureSparqlStar(nestedTriple($$[$0-3], $$[$0-2], $$[$0-1]));\nbreak;\ncase 230: case 231:\nthis.$ = ensureSparqlStar($$[$0-1]);\nbreak;\ncase 248: case 250: case 252: case 254: case 256: case 260: case 264: case 268: case 270: case 292: case 294: case 296: case 298: case 300: case 302: case 304: case 306: case 329: case 342: case 356: case 368: case 370: case 372: case 374: case 392: case 402: case 425: case 427: case 429: case 431: case 441: case 445: case 447: case 449:\n$$[$0-1].push($$[$0]);\nbreak;\ncase 259: case 269: case 291: case 293: case 295: case 301: case 305: case 371: case 424: case 426:\nthis.$ = [$$[$0]];\nbreak;\ncase 308:\n$$[$0-3].push($$[$0-2]);\nbreak;\ncase 350: case 362: case 376: case 380: case 382: case 386: case 396: case 406: case 410: case 412: case 421:\n$$[$0-2].push($$[$0-1]);\nbreak;\n}\n},\ntable: [o($V0,$V1,{3:1,4:2,10:3}),{1:[3]},o($V2,[2,307],{5:4,7:5,321:6,214:7,8:8,96:9,215:10,17:11,21:12,97:16,38:17,6:[2,238],13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,24:[1,13],32:[1,14],36:[1,15],41:$V4}),o([6,13,16,24,32,36,41,45,100,110,113,115,116,123,126,131,197,224,229,308,329,330,331,332,333],[2,3],{322:19,11:20,14:21,12:[1,22],15:[1,23]}),{6:[1,24]},{6:[2,240]},{6:[2,241]},{6:[2,242]},{6:[2,243],9:25,84:26,85:$V5},{6:[2,239]},o($V6,[2,411],{216:28,217:29}),o($V7,[2,249],{18:30}),o($V7,[2,251],{22:31}),o($V8,[2,255],{25:32,27:33,29:[1,34]}),{13:$V9,16:$Va,33:35,39:[1,37],44:39,55:40,87:$Vb,139:38,307:43,308:$Vc,323:36},o($V7,[2,267],{37:46}),o($Vd,[2,326],{98:47,103:49,106:50,117:55,130:61,100:[1,48],110:[1,51],113:[1,52],115:[1,53],116:[1,54],131:[1,62],329:[1,56],330:[1,57],331:[1,58],332:[1,59],333:[1,60]}),{39:[1,63],40:64,43:65,44:66,45:$Ve,87:$Vb},o($Vf,[2,273],{42:68,324:69,325:[1,70],326:[1,71]}),o($V0,[2,248]),o($V0,[2,245]),o($V0,[2,246]),{13:[1,72]},{16:[1,73]},{1:[2,1]},{6:[2,2]},{6:[2,244]},{45:[1,77],85:[1,78],86:74,87:[1,75],89:[1,76]},o([6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],[2,120],{337:[1,79]}),o($Vg,[2,418],{218:80,222:81,229:[1,82]}),{19:83,28:$Vh,29:$Vi,52:84,53:$Vj,56:85},{19:88,28:$Vh,29:$Vi,52:89,53:$Vj,56:85},o($V7,[2,253],{26:90}),{28:[1,91],52:92,53:$Vj},o($Vk,[2,385],{181:93,182:94,183:95,31:[2,383]}),o($Vl,[2,263],{34:96}),o($Vl,[2,261],{44:39,55:40,307:43,139:97,13:$V9,16:$Va,87:$Vb,308:$Vc}),o($Vl,[2,262]),o($Vm,[2,259]),o($Vn,[2,143]),o($Vn,[2,144]),o([6,13,16,28,29,31,39,45,47,48,53,63,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346,347,348,349,350,351],[2,145]),o($Vo,[2,211]),o($Vo,[2,212]),o($Vo,[2,213]),o($Vo,[2,214]),{19:98,28:$Vh,29:$Vi,52:99,53:$Vj,56:85},{6:[2,309],99:100,193:[1,101]},o($Vp,[2,311],{101:102,328:[1,103]}),o($Vq,[2,317],{104:104,328:[1,105]}),o($Vr,[2,322],{107:106,328:[1,107]}),{111:108,112:[2,324],328:[1,109]},{29:$Vs,114:110},{29:$Vs,114:112},{29:$Vs,114:113},{118:114,123:[1,115],125:116,126:$Vt},o($Vu,[2,315]),o($Vu,[2,316]),o($Vv,[2,319]),o($Vv,[2,320]),o($Vv,[2,321]),o($Vd,[2,327]),{13:$V9,16:$Va,55:118,307:43,308:$Vc},o($V7,[2,12]),o($V7,[2,13],{44:66,43:119,45:$Ve,87:$Vb}),o($Vw,[2,269]),o($Vw,[2,15]),{13:$V9,16:$Va,44:136,45:$Vx,46:120,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vf,[2,14]),o($Vf,[2,274]),o($Vf,[2,271]),o($Vf,[2,272]),o($V0,[2,4]),{13:[1,177]},o($V61,[2,39]),{29:[1,178]},{29:[1,179]},{87:[1,181],91:180},{45:[1,187],87:[1,185],89:[1,186],93:182,165:183,166:184},o($V6,[2,410]),o([6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337],[2,121],{338:[1,188]}),{13:$V9,16:$Va,45:[1,193],55:194,197:$V71,219:189,220:190,223:191,224:[1,192],307:43,308:$Vc},o($Vg,[2,419]),o($V81,$V91,{20:196,59:197,69:198,70:$Va1}),o($V7,[2,250]),{29:$Vb1,57:200},o($Vp,[2,279],{54:202,327:[1,203]}),{29:[2,282]},o($Vc1,$Vd1,{23:204,58:205,62:206,63:$Ve1}),o($V7,[2,252]),{19:208,28:$Vh,29:$Vi,52:209,53:$Vj,56:85},{29:[1,210]},o($V8,[2,256]),{31:[1,211]},{31:[2,384]},{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,145:212,172:221,185:213,187:214,231:$Vh1,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl1,[2,265],{56:85,35:227,52:228,19:229,28:$Vh,29:$Vi,53:$Vj}),o($Vm,[2,260]),o($Vc1,$Vd1,{58:205,62:206,23:230,63:$Ve1}),o($V7,[2,268]),{6:[2,45]},o($V0,$V1,{10:3,4:231}),{13:$V9,16:$Va,55:232,307:43,308:$Vc},o($Vp,[2,312]),{105:233,112:$Vm1,122:234,132:[1,237],134:235,327:[1,238],334:[1,239]},o($Vq,[2,318]),o($Vp,$Vn1,{108:240,133:242,112:$Vo1,132:$Vp1}),o($Vr,[2,323]),{112:[1,244]},{112:[2,325]},o($Vq1,[2,50]),o($Vk,$Vr1,{135:245,136:246,143:247,144:248,31:$Vs1,112:$Vs1}),o($Vq1,[2,51]),o($Vq1,[2,52]),o($Vt1,[2,328],{119:249}),{29:$Vs,114:250},o($Vt1,[2,56]),{29:$Vs,114:251},o($Vd,[2,59]),o($Vw,[2,270]),{47:[1,252]},o($Vu1,[2,150]),o($Vv1,[2,428],{240:253}),o($Vw1,[2,430],{244:254}),o($Vw1,[2,155],{248:255,249:256,250:[2,438],290:[1,257],341:[1,258],342:[1,259],343:[1,260],344:[1,261],345:[1,262],346:[1,263]}),o($Vx1,[2,440],{252:264}),o($Vy1,[2,448],{260:265}),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:266,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:267,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,255:154,257:155,264:268,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vy1,[2,167]),o($Vy1,[2,168]),o($Vy1,[2,169]),o($Vy1,[2,170],{176:269,45:$Vz1,89:$VA1}),o($Vy1,[2,171]),o($Vy1,[2,172]),o($Vy1,[2,173]),o($Vy1,[2,174]),{13:$V9,16:$Va,44:136,45:$Vx,46:272,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,176]),{89:[1,273]},{45:[1,274]},{45:[1,275]},{45:[1,276]},{45:[1,277]},{45:[1,278]},{45:$VC1,89:$VD1,179:279},{45:[1,282]},{45:[1,284],89:[1,283]},{279:[1,285]},o($VE1,[2,192],{292:[1,286],293:[1,287]}),o($VE1,[2,195]),o($VE1,[2,196]),o($VE1,[2,197]),o($VE1,[2,198]),o($VE1,[2,199]),o($VE1,[2,200]),{13:$V9,16:$Va,44:39,55:40,82:$Vy,87:$Vb,139:289,172:291,255:154,257:155,266:290,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,320:288},{45:[1,292]},{45:[1,293]},{45:[1,294]},o($VF1,[2,452]),o($VF1,[2,453]),o($VF1,[2,454]),o($VF1,[2,455]),o($VF1,[2,456]),{279:[2,458]},o($VG1,[2,207]),o($VG1,[2,208]),o($VG1,[2,209]),o($VG1,[2,210]),o($VE1,[2,201]),o($VE1,[2,202]),o($VE1,[2,203]),o($VE1,[2,204]),o($VE1,[2,205]),o($VE1,[2,206]),o($V0,[2,5]),o($VH1,[2,297],{88:295}),o($VI1,[2,299],{90:296}),{48:[1,297],87:[1,298]},o($VJ1,[2,301]),o($V61,[2,43]),o($V61,[2,82]),o($V61,[2,83]),{29:[1,299]},{29:[1,300]},{87:[1,302],169:301},o($V6,[2,412]),o($VK1,[2,123]),o($VK1,[2,416],{221:303,339:304,39:[1,306],263:[1,307],340:[1,305]}),o($VL1,[2,124]),{13:$V9,16:$Va,45:[1,311],55:194,89:[1,310],197:$V71,223:312,225:308,226:309,229:$VM1,307:43,308:$Vc},o($V6,$V3,{215:10,214:314}),o($VL1,[2,236]),o($VL1,[2,237]),o($VN1,[2,6]),o($VO1,[2,287],{60:315,72:316,73:[1,317]}),o($V81,[2,286]),{13:$V9,16:$Va,45:$Vx,55:323,67:321,68:322,71:318,77:320,79:319,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o([6,31,63,70,73,81,83,85],[2,20]),o($Vk,$VP1,{38:17,49:324,147:325,17:326,21:327,148:328,154:329,155:330,29:$VQ1,31:$VQ1,85:$VQ1,112:$VQ1,159:$VQ1,160:$VQ1,161:$VQ1,163:$VQ1,164:$VQ1,41:$V4}),{13:$V9,16:$Va,55:331,307:43,308:$Vc},o($Vp,[2,280]),o($VN1,[2,7]),o($V81,$V91,{59:197,69:198,20:332,70:$Va1}),o($Vc1,[2,284]),{64:[1,333]},o($Vc1,$Vd1,{58:205,62:206,23:334,63:$Ve1}),o($V7,[2,254]),o($Vk,$Vr1,{144:248,30:335,143:336,31:[2,257]}),o($V7,[2,100]),{31:[2,387],184:337,335:[1,338]},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:339,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VS1,[2,389],{44:39,55:40,307:43,190:340,195:341,139:342,188:344,189:345,186:346,13:$V9,16:$Va,87:$Vb,197:$VR1,308:$Vc}),o($VT1,[2,227]),o($VT1,[2,228]),o($VT1,[2,229]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,200:348,230:347,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:352,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VT1,[2,146]),o($VT1,[2,147]),o($VT1,[2,148]),o($VT1,[2,149]),{13:$V9,16:$Va,44:354,55:355,82:$Vy,87:$Vb,172:357,237:356,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:358,312:$Vk1,313:353},o($VU1,[2,215]),o($VU1,[2,216]),o($Vc1,$Vd1,{58:205,62:206,23:359,63:$Ve1}),o($Vl,[2,264]),o($Vl1,[2,266]),o($VN1,[2,11]),o($V2,[2,308],{6:[2,310]}),o($Vq1,[2,313],{102:360,120:361,121:[1,362]}),o($Vq1,[2,47]),o($Vq1,[2,63]),o($Vq1,[2,64]),{13:$V9,16:$Va,55:363,307:43,308:$Vc},o($Vq1,[2,336]),o($Vq1,[2,337]),o($Vq1,[2,338]),{109:[1,364]},o($VV1,[2,60]),{13:$V9,16:$Va,55:365,307:43,308:$Vc},o($Vp,[2,335]),{13:$V9,16:$Va,55:366,307:43,308:$Vc},{31:[1,367]},o($VW1,[2,341],{137:368}),o($VW1,[2,340]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,145:369,172:221,185:213,187:214,231:$Vh1,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},{28:[1,370],127:371,128:[1,372]},o($Vt1,[2,330],{124:373,125:374,126:$Vt}),o($Vt1,[2,57]),{44:375,87:$Vb},o($Vu1,[2,151],{241:376,242:[1,377]}),o($Vv1,[2,153],{245:378,246:[1,379]}),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,247:380,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{250:[1,381]},o($VX1,[2,432]),o($VX1,[2,433]),o($VX1,[2,434]),o($VX1,[2,435]),o($VX1,[2,436]),o($VX1,[2,437]),{250:[2,439]},o([47,48,193,242,246,250,272,290,341,342,343,344,345,346],[2,158],{253:382,254:383,255:384,257:385,263:[1,386],265:[1,387],297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW}),o($Vx1,[2,162],{261:388,262:389,39:$VY1,338:$VZ1}),o($Vy1,[2,164]),o($Vy1,[2,165]),o($Vy1,[2,166]),o($VB1,[2,95]),o($VB1,[2,96]),o($VX1,[2,377],{177:392,325:[1,393]}),{48:[1,394]},o($VB1,[2,177]),{13:$V9,16:$Va,44:136,45:$Vx,46:395,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:396,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:397,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:398,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:399,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,183]),o($VB1,[2,98]),o($VX1,[2,381],{180:400}),{87:[1,401]},o($VB1,[2,185]),{13:$V9,16:$Va,44:136,45:$Vx,46:402,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{29:$Vb1,57:403},o($VE1,[2,193]),{13:$V9,16:$Va,55:404,307:43,308:$Vc},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,195:405,197:$VR1,307:43,308:$Vc},o($V_1,[2,233]),o($V_1,[2,234]),o($V_1,[2,235]),o($V$1,[2,459],{281:406,325:[1,407]}),o($VX1,[2,463],{284:408,325:[1,409]}),o($VX1,[2,465],{286:410,325:[1,411]}),{13:$V9,16:$Va,31:[1,412],55:414,82:$Vy,171:413,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,419],89:[1,420]},{29:[1,421]},o($VJ1,[2,302]),o($VH1,[2,367],{167:422}),o($VI1,[2,369],{168:423}),{48:[1,424],87:[1,425]},o($VJ1,[2,371]),o($VK1,[2,122]),o($VK1,[2,417]),o($VK1,[2,413]),o($VK1,[2,414]),o($VK1,[2,415]),o($VL1,[2,125]),o($VL1,[2,127]),o($VL1,[2,128]),o($V22,[2,420],{227:426}),o($VL1,[2,130]),{13:$V9,16:$Va,55:194,197:$V71,223:427,307:43,308:$Vc},{48:[1,428]},o($V32,[2,289],{61:429,80:430,81:[1,431],83:[1,432]}),o($VO1,[2,288]),{64:[1,433]},o($V81,[2,29],{307:43,267:139,275:146,278:149,77:320,67:321,68:322,55:323,79:434,13:$V9,16:$Va,45:$Vx,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($V42,[2,293]),o($V52,[2,92]),o($V52,[2,93]),o($V52,[2,94]),{45:$Vz1,89:$VA1,176:269},{31:[1,435]},{31:[1,436]},{19:437,28:$Vh,29:$Vi,56:85},{19:438,28:$Vh,29:$Vi,56:85},o($V62,[2,355],{149:439}),o($V62,[2,354]),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,156:440,172:221,185:441,203:442,231:$V82,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl,[2,19]),o($V32,[2,21]),{13:$V9,16:$Va,44:450,45:$V92,55:323,65:445,66:446,67:447,68:448,87:$Vb,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VN1,[2,8]),{31:[1,451]},{31:[2,258]},{31:[2,101]},o($Vk,[2,386],{31:[2,388]}),o($VS1,[2,102]),o($Va2,[2,391],{191:452}),o($Vk,[2,395],{196:453,198:454}),o($Vk,[2,108]),o($Vk,[2,109]),o($VS1,[2,103]),o($VS1,[2,104]),o($VS1,[2,390]),{13:$V9,16:$Va,44:215,45:$Vf1,48:[1,455],55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,200:456,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vb2,[2,424]),o($Vc2,[2,136]),o($Vc2,[2,137]),o($Vd2,[2,140]),{232:[1,457]},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,195:458,197:$VR1,307:43,308:$Vc},o($V_1,[2,219]),o($V_1,[2,220]),o($V_1,[2,221]),o($V_1,[2,222]),o($V_1,[2,223]),o($VN1,[2,10]),o($Vq1,[2,46]),o($Vq1,[2,314]),{112:$Vm1,122:459},o($Vq1,[2,62]),o($Vp,$Vn1,{133:242,108:460,112:$Vo1,132:$Vp1}),o($VV1,[2,61]),o($Vq1,[2,49]),o([6,28,126,128,193],[2,65]),{31:[2,66],112:[1,462],138:461},o($VW1,[2,351],{146:463,335:[1,464]}),{29:$Vb1,57:465},o($Vt1,[2,329]),o($Vp,[2,332],{129:466,327:[1,467]}),o($Vt1,[2,55]),o($Vt1,[2,331]),{48:[1,468]},o($Vv1,[2,429]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,239:469,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vw1,[2,431]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,243:470,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vw1,[2,156]),{45:$VC1,89:$VD1,179:471},o($Vx1,[2,441]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,251:472,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vy1,[2,444],{256:473}),o($Vy1,[2,446],{258:474}),o($VX1,[2,442]),o($VX1,[2,443]),o($Vy1,[2,449]),{13:$V9,16:$Va,44:136,45:$Vx,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,255:154,257:155,259:475,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,450]),o($VX1,[2,451]),o($VX1,[2,379],{178:476}),o($VX1,[2,378]),o([6,13,16,29,31,39,45,47,48,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,338,341,342,343,344,345,346,347,348,349,350,351],[2,175]),{48:[1,477]},{48:[1,478]},{272:[1,479]},{272:[1,480]},{272:[1,481]},{13:$V9,16:$Va,44:136,45:$Vx,46:482,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{48:[1,483]},{48:[1,484]},o($VB1,[2,187]),o($VE1,[2,194]),{13:$V9,16:$Va,44:39,55:40,82:$Vy,87:$Vb,139:289,172:291,255:154,257:155,266:290,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,320:485},{13:$V9,16:$Va,39:[1,487],44:136,45:$Vx,46:488,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,282:486,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($V$1,[2,460]),{13:$V9,16:$Va,44:136,45:$Vx,46:489,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,464]),{13:$V9,16:$Va,44:136,45:$Vx,46:490,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VX1,[2,466]),o($V61,[2,40]),o($VH1,[2,298]),o($Ve2,[2,87]),o($Ve2,[2,88]),o($Ve2,[2,89]),o($Ve2,[2,90]),{13:$V9,16:$Va,55:492,82:$Vy,172:493,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,311:494,312:$Vk1,315:491},o($V61,[2,41]),o($VI1,[2,300]),o($Vf2,[2,303],{92:495}),{13:$V9,16:$Va,31:[1,496],55:414,82:$Vy,171:497,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,498],89:[1,499]},{29:[1,500]},o($VJ1,[2,372]),{13:$V9,16:$Va,48:[2,422],55:194,197:$V71,223:312,226:502,228:501,229:$VM1,307:43,308:$Vc},o($VL1,[2,131]),o($VL1,[2,126]),o($V32,[2,22]),o($V32,[2,290]),{82:[1,503]},{82:[1,504]},{13:$V9,16:$Va,44:510,45:$Vx,55:323,67:321,68:322,74:505,75:506,76:$Vg2,77:320,78:$Vh2,79:509,87:$Vb,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($V42,[2,294]),o($Vi2,[2,69]),o($Vi2,[2,70]),o($V81,$V91,{59:197,69:198,20:511,70:$Va1}),o($Vc1,$Vd1,{58:205,62:206,23:512,63:$Ve1}),{29:[2,375],31:[2,71],84:522,85:$V5,112:[1,518],150:513,151:514,158:515,159:[1,516],160:[1,517],161:[1,519],163:[1,520],164:[1,521],175:523},o($V62,[2,363],{157:524,335:[1,525]}),o($V6,$V3,{215:10,202:526,205:527,208:528,214:529,44:530,87:$Vb}),o($Vj2,[2,399],{215:10,205:527,208:528,214:529,44:530,204:531,202:532,13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,87:$Vb}),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,212:534,231:$V82,233:533,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($V6,$V3,{215:10,205:527,208:528,214:529,44:530,202:537,87:$Vb}),o($Vc1,[2,23],{307:43,267:139,275:146,278:149,55:323,67:447,68:448,44:450,66:538,13:$V9,16:$Va,45:$V92,87:$Vb,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($Vk2,[2,291]),o($Vk2,[2,24]),o($Vk2,[2,25]),{13:$V9,16:$Va,44:136,45:$Vx,46:539,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vk2,[2,28]),o($Vc1,$Vd1,{58:205,62:206,23:540,63:$Ve1}),o([31,112,232,318,335],[2,105],{192:541,193:[1,542]}),o($Va2,[2,107]),{13:$V9,16:$Va,44:215,45:$Vf1,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,187:350,199:543,200:544,231:$Vh1,234:349,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vl2,[2,132]),o($Vb2,[2,425]),o($Vl2,[2,133]),{13:$V9,16:$Va,44:354,55:355,82:$Vy,87:$Vb,172:357,237:356,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:358,312:$Vk1,313:545},o($Vq1,[2,54]),o($Vq1,[2,48]),o($VW1,[2,342]),{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:546,307:43,308:$Vc},o($VW1,[2,68]),o($Vk,[2,350],{31:$Vm2,112:$Vm2}),o($Vq1,[2,53]),{13:$V9,16:$Va,55:547,307:43,308:$Vc},o($Vp,[2,333]),o($Vw,[2,16]),o($Vv1,[2,152]),o($Vw1,[2,154]),o($Vw1,[2,157]),o($Vx1,[2,159]),o($Vx1,[2,160],{262:389,261:548,39:$VY1,338:$VZ1}),o($Vx1,[2,161],{262:389,261:549,39:$VY1,338:$VZ1}),o($Vy1,[2,163]),{13:$V9,16:$Va,44:136,45:$Vx,46:550,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,178]),o($VB1,[2,179]),{13:$V9,16:$Va,44:136,45:$Vx,46:551,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:552,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:553,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{48:[1,554],272:[1,555]},o($VB1,[2,184]),o($VB1,[2,186]),{314:[1,556]},{48:[1,557]},{48:[2,461]},{48:[2,462]},{48:[1,558]},{48:[2,467],193:[1,561],287:559,288:560},{13:$V9,16:$Va,55:194,197:$V71,223:562,307:43,308:$Vc},o($Vn2,[2,224]),o($Vn2,[2,225]),o($Vn2,[2,226]),{31:[1,563],45:$Vo2,94:564},o($V61,[2,84]),o($VH1,[2,368]),o($V61,[2,85]),o($VI1,[2,370]),o($Vf2,[2,373],{170:566}),{48:[1,567]},{48:[2,423],337:[1,568]},o($V32,[2,35],{83:[1,569]}),o($V32,[2,36],{81:[1,570]}),o($VO1,[2,30],{307:43,267:139,275:146,278:149,77:320,67:321,68:322,55:323,79:509,44:510,75:571,13:$V9,16:$Va,45:$Vx,76:$Vg2,78:$Vh2,87:$Vb,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,276:$VI,277:$VJ,279:$VK,280:$VL,283:$VM,285:$VN,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51}),o($Vp2,[2,295]),{45:$Vx,77:572},{45:$Vx,77:573},o($Vp2,[2,33]),o($Vp2,[2,34]),{31:[2,275],50:574,84:575,85:$V5},{31:[2,277],51:576,84:577,85:$V5},o($V62,[2,356]),o($Vq2,[2,357],{152:578,335:[1,579]}),o($Vr2,[2,74]),{29:$Vb1,57:580},{29:$Vb1,57:581},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:582,307:43,308:$Vc},o($Vs2,[2,365],{162:583,328:[1,584]}),{13:$V9,16:$Va,45:$Vx,55:323,67:321,68:322,77:320,79:585,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,307:43,308:$Vc,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{45:[1,586]},o($Vr2,[2,81]),{29:$Vb1,57:587},o($V62,[2,73]),o($Vk,[2,362],{29:$Vt2,31:$Vt2,85:$Vt2,112:$Vt2,159:$Vt2,160:$Vt2,161:$Vt2,163:$Vt2,164:$Vt2}),o($Vj2,[2,112]),o($Vu2,[2,401],{206:588}),o($Vk,[2,405],{209:589,210:590}),o($Vk,[2,403]),o($Vk,[2,404]),o($Vj2,[2,113]),o($Vj2,[2,400]),{13:$V9,16:$Va,44:215,45:$V72,48:[1,591],55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,212:592,231:$V82,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($Vb2,[2,426]),o($Vd2,[2,138]),o($Vd2,[2,139]),{232:[1,593]},o($Vk2,[2,292]),{47:[1,595],48:[1,594]},o($VN1,[2,9]),o($Va2,[2,392]),o($Va2,[2,393],{44:39,55:40,307:43,195:341,139:342,194:596,190:597,13:$V9,16:$Va,87:$Vb,197:$VR1,308:$Vc}),o($Va2,[2,110],{272:[1,598]}),o($Vv2,[2,397],{201:599,316:600,317:[1,601]}),{314:[1,602]},{29:[1,603]},o($Vt1,[2,58]),o($Vy1,[2,445]),o($Vy1,[2,447]),{48:[1,604],272:[1,605]},{48:[1,606]},{272:[1,607]},{272:[1,608]},o($VB1,[2,99]),o($VX1,[2,382]),o([13,16,39,47,48,87,193,197,242,246,250,263,265,272,290,297,298,299,300,301,302,308,314,338,341,342,343,344,345,346],[2,232]),o($VB1,[2,188]),o($VB1,[2,189]),{48:[1,609]},{48:[2,468]},{289:[1,610]},{13:$V9,16:$Va,55:492,82:$Vy,172:493,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,311:494,312:$Vk1,315:611},o($V61,[2,42]),o($Vf2,[2,304]),{13:$V9,16:$Va,55:414,82:$Vy,95:612,171:613,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},{31:[1,614],45:$Vo2,94:615},o($VL1,[2,129]),o($V22,[2,421]),{82:[1,616]},{82:[1,617]},o($Vp2,[2,296]),o($Vp2,[2,31]),o($Vp2,[2,32]),{31:[2,17]},{31:[2,276]},{31:[2,18]},{31:[2,278]},o($Vk,$VP1,{155:330,153:618,154:619,29:$Vw2,31:$Vw2,85:$Vw2,112:$Vw2,159:$Vw2,160:$Vw2,161:$Vw2,163:$Vw2,164:$Vw2}),o($Vq2,[2,358]),o($Vr2,[2,75]),o($Vr2,[2,76]),{29:$Vb1,57:620},{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:621,307:43,308:$Vc},o($Vs2,[2,366]),o($Vr2,[2,79]),{13:$V9,16:$Va,44:136,45:$Vx,46:622,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($Vr2,[2,91],{336:[1,623]}),o([29,31,85,112,159,160,161,163,164,232,318,335],[2,114],{207:624,193:[1,625]}),o($Vu2,[2,117]),{13:$V9,16:$Va,44:215,45:$V72,55:220,82:$Vy,87:$Vb,89:$Vg1,172:221,185:351,203:536,211:626,212:627,231:$V82,234:535,236:216,237:222,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,309:$Vi1,310:$Vj1,311:217,312:$Vk1},o($VT1,[2,134]),o($Vb2,[2,427]),o($VT1,[2,135]),o($Vk2,[2,26]),{44:628,87:$Vb},o($Va2,[2,106]),o($Va2,[2,394]),o($Vk,[2,396]),o($Vv2,[2,111]),o($Vv2,[2,398]),{13:$V9,16:$Va,44:39,55:40,87:$Vb,139:342,186:629,190:340,195:341,197:$VR1,307:43,308:$Vc},o($VU1,[2,217]),o($Vk,$Vr1,{144:248,140:630,143:631,31:[2,343]}),o($VB1,[2,97]),o($VX1,[2,380]),o($VB1,[2,180]),{13:$V9,16:$Va,44:136,45:$Vx,46:632,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},{13:$V9,16:$Va,44:136,45:$Vx,46:633,55:133,67:132,68:134,77:131,82:$Vy,87:$Vb,172:135,224:$Vz,238:121,239:122,243:123,247:124,251:125,255:154,257:155,259:126,263:$VA,264:130,265:$VB,266:137,267:139,268:$VC,269:$VD,270:$VE,271:$VF,273:$VG,274:$VH,275:146,276:$VI,277:$VJ,278:149,279:$VK,280:$VL,283:$VM,285:$VN,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V$,346:$V01,347:$V11,348:$V21,349:$V31,350:$V41,351:$V51},o($VB1,[2,190]),{290:[1,634]},{314:[1,635]},{13:$V9,16:$Va,48:[1,636],55:414,82:$Vy,171:637,172:415,173:416,174:$V02,255:154,257:155,291:150,294:$VO,295:$VP,296:$VQ,297:$VR,298:$VS,299:$VT,300:$VU,301:$VV,302:$VW,303:$VX,304:$VY,305:$VZ,306:$V_,307:43,308:$Vc,312:$V12},o($Vx2,[2,305]),o($V61,[2,86]),o($Vf2,[2,374]),o($V32,[2,37]),o($V32,[2,38]),o($V62,[2,72]),o($V62,[2,360]),o($Vr2,[2,77]),{29:$Vb1,57:638},{47:[1,639]},{29:[2,376]},o($Vu2,[2,402]),o($Vu2,[2,115],{215:10,208:528,214:529,44:530,205:640,13:$V3,16:$V3,45:$V3,197:$V3,224:$V3,229:$V3,308:$V3,87:$Vb}),o($Vu2,[2,118],{272:[1,641]}),o($Vy2,[2,407],{213:642,319:643,317:[1,644]}),{48:[1,645]},{318:[1,646]},{31:[1,647]},{31:[2,344]},{48:[1,648]},{48:[1,649]},{291:650,303:$VX,304:$VY,305:$VZ,306:$V_},o($Ve2,[2,218]),o($Vf2,[2,44]),o($Vx2,[2,306]),o($Vr2,[2,78]),{44:651,87:$Vb},o($Vu2,[2,116]),o($Vk,[2,406]),o($Vy2,[2,119]),o($Vy2,[2,408]),o($V6,$V3,{215:10,205:527,208:528,214:529,44:530,202:652,87:$Vb}),o($Vk2,[2,27]),o($Vv2,[2,230]),o($Vz2,[2,345],{141:653,335:[1,654]}),o($VB1,[2,181]),o($VB1,[2,182]),{48:[2,191]},{48:[1,655]},{318:[1,656]},o($Vk,$Vr1,{144:248,142:657,143:658,31:$VA2,112:$VA2}),o($Vz2,[2,346]),o($Vr2,[2,80]),o($Vy2,[2,231]),o($VW1,[2,67]),o($VW1,[2,348])],\ndefaultActions: {5:[2,240],6:[2,241],7:[2,242],9:[2,239],24:[2,1],25:[2,2],26:[2,244],87:[2,282],94:[2,384],100:[2,45],109:[2,325],166:[2,458],263:[2,439],336:[2,258],337:[2,101],487:[2,461],488:[2,462],560:[2,468],574:[2,17],575:[2,276],576:[2,18],577:[2,278],623:[2,376],631:[2,344],650:[2,191]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n /*\n SPARQL parser in the Jison parser generator format.\n */\n\n var Wildcard = require('./Wildcard').Wildcard;\n\n // Common namespaces and entities\n var RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n RDF_TYPE = RDF + 'type',\n RDF_FIRST = RDF + 'first',\n RDF_REST = RDF + 'rest',\n RDF_NIL = RDF + 'nil',\n XSD = 'http://www.w3.org/2001/XMLSchema#',\n XSD_INTEGER = XSD + 'integer',\n XSD_DECIMAL = XSD + 'decimal',\n XSD_DOUBLE = XSD + 'double',\n XSD_BOOLEAN = XSD + 'boolean';\n\n var base = '', basePath = '', baseRoot = '';\n\n // Returns a lowercase version of the given string\n function lowercase(string) {\n return string.toLowerCase();\n }\n\n // Appends the item to the array and returns the array\n function appendTo(array, item) {\n return array.push(item), array;\n }\n\n // Appends the items to the array and returns the array\n function appendAllTo(array, items) {\n return array.push.apply(array, items), array;\n }\n\n // Extends a base object with properties of other objects\n function extend(base) {\n if (!base) base = {};\n for (var i = 1, l = arguments.length, arg; i < l && (arg = arguments[i] || {}); i++)\n for (var name in arg)\n base[name] = arg[name];\n return base;\n }\n\n // Creates an array that contains all items of the given arrays\n function unionAll() {\n var union = [];\n for (var i = 0, l = arguments.length; i < l; i++)\n union = union.concat.apply(union, arguments[i]);\n return union;\n }\n\n // Resolves an IRI against a base path\n function resolveIRI(iri) {\n // Strip off possible angular brackets\n if (iri[0] === '<')\n iri = iri.substring(1, iri.length - 1);\n // Return absolute IRIs unmodified\n if (/^[a-z]+:/i.test(iri))\n return iri;\n if (!Parser.base)\n throw new Error('Cannot resolve relative IRI ' + iri + ' because no base IRI was set.');\n if (base !== Parser.base) {\n base = Parser.base;\n basePath = base.replace(/[^\\/:]*$/, '');\n baseRoot = base.match(/^(?:[a-z]+:\\/*)?[^\\/]*/)[0];\n }\n switch (iri[0]) {\n // An empty relative IRI indicates the base IRI\n case undefined:\n return base;\n // Resolve relative fragment IRIs against the base IRI\n case '#':\n return base + iri;\n // Resolve relative query string IRIs by replacing the query string\n case '?':\n return base.replace(/(?:\\?.*)?$/, iri);\n // Resolve root relative IRIs at the root of the base IRI\n case '/':\n return baseRoot + iri;\n // Resolve all other IRIs at the base IRI's path\n default:\n return basePath + iri;\n }\n }\n\n // If the item is a variable, ensures it starts with a question mark\n function toVar(variable) {\n if (variable) {\n var first = variable[0];\n if (first === '?' || first === '$') return Parser.factory.variable(variable.substr(1));\n }\n return variable;\n }\n\n // Creates an operation with the given name and arguments\n function operation(operatorName, args) {\n return { type: 'operation', operator: operatorName, args: args || [] };\n }\n\n // Creates an expression with the given type and attributes\n function expression(expr, attr) {\n var expression = { expression: expr === '*'? new Wildcard() : expr };\n if (attr)\n for (var a in attr)\n expression[a] = attr[a];\n return expression;\n }\n\n // Creates a path with the given type and items\n function path(type, items) {\n return { type: 'path', pathType: type, items: items };\n }\n\n // Transforms a list of operations types and arguments into a tree of operations\n function createOperationTree(initialExpression, operationList) {\n for (var i = 0, l = operationList.length, item; i < l && (item = operationList[i]); i++)\n initialExpression = operation(item[0], [initialExpression, item[1]]);\n return initialExpression;\n }\n\n // Group datasets by default and named\n function groupDatasets(fromClauses, groupName) {\n var defaults = [], named = [], l = fromClauses.length, fromClause, group = {};\n if (!l)\n return null;\n for (var i = 0; i < l && (fromClause = fromClauses[i]); i++)\n (fromClause.named ? named : defaults).push(fromClause.iri);\n group[groupName || 'from'] = { default: defaults, named: named };\n return group;\n }\n\n // Converts the string to a number\n function toInt(string) {\n return parseInt(string, 10);\n }\n\n // Transforms a possibly single group into its patterns\n function degroupSingle(group) {\n return group.type === 'group' && group.patterns.length === 1 ? group.patterns[0] : group;\n }\n\n // Creates a literal with the given value and type\n function createTypedLiteral(value, type) {\n if (type && type.termType !== 'NamedNode'){\n type = Parser.factory.namedNode(type);\n }\n return Parser.factory.literal(value, type);\n }\n\n // Creates a literal with the given value and language\n function createLangLiteral(value, lang) {\n return Parser.factory.literal(value, lang);\n }\n\n function nestedTriple(subject, predicate, object) {\n\n // TODO: Remove this when it is caught by the grammar\n if (!('termType' in predicate)) {\n throw new Error('Nested triples cannot contain paths');\n }\n\n return Parser.factory.quad(subject, predicate, object);\n }\n\n // Creates a triple with the given subject, predicate, and object\n function triple(subject, predicate, object, annotations) {\n var triple = {};\n if (subject != null) triple.subject = subject;\n if (predicate != null) triple.predicate = predicate;\n if (object != null) triple.object = object;\n if (annotations != null) triple.annotations = annotations;\n return triple;\n }\n\n // Creates a new blank node\n function blank(name) {\n if (typeof name === 'string') { // Only use name if a name is given\n if (name.startsWith('e_')) return Parser.factory.blankNode(name);\n return Parser.factory.blankNode('e_' + name);\n }\n return Parser.factory.blankNode('g_' + blankId++);\n };\n var blankId = 0;\n Parser._resetBlanks = function () { blankId = 0; }\n\n // Regular expression and replacement strings to escape strings\n var escapeSequence = /\\\\u([a-fA-F0-9]{4})|\\\\U([a-fA-F0-9]{8})|\\\\(.)/g,\n escapeReplacements = { '\\\\': '\\\\', \"'\": \"'\", '\"': '\"',\n 't': '\\t', 'b': '\\b', 'n': '\\n', 'r': '\\r', 'f': '\\f' },\n partialSurrogatesWithoutEndpoint = /[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/,\n fromCharCode = String.fromCharCode;\n\n // Translates escape codes in the string into their textual equivalent\n function unescapeString(string, trimLength) {\n string = string.substring(trimLength, string.length - trimLength);\n try {\n string = string.replace(escapeSequence, function (sequence, unicode4, unicode8, escapedChar) {\n var charCode;\n if (unicode4) {\n charCode = parseInt(unicode4, 16);\n if (isNaN(charCode)) throw new Error(); // can never happen (regex), but helps performance\n return fromCharCode(charCode);\n }\n else if (unicode8) {\n charCode = parseInt(unicode8, 16);\n if (isNaN(charCode)) throw new Error(); // can never happen (regex), but helps performance\n if (charCode < 0xFFFF) return fromCharCode(charCode);\n return fromCharCode(0xD800 + ((charCode -= 0x10000) >> 10), 0xDC00 + (charCode & 0x3FF));\n }\n else {\n var replacement = escapeReplacements[escapedChar];\n if (!replacement) throw new Error();\n return replacement;\n }\n });\n }\n catch (error) { return ''; }\n\n // Test for invalid unicode surrogate pairs\n if (partialSurrogatesWithoutEndpoint.exec(string)) {\n throw new Error('Invalid unicode codepoint of surrogate pair without corresponding codepoint in ' + string);\n }\n\n return string;\n }\n\n // Creates a list, collecting its (possibly blank) items and triples associated with those items\n function createList(objects) {\n var list = blank(), head = list, listItems = [], listTriples, triples = [];\n objects.forEach(function (o) { listItems.push(o.entity); appendAllTo(triples, o.triples); });\n\n // Build an RDF list out of the items\n for (var i = 0, j = 0, l = listItems.length, listTriples = Array(l * 2); i < l;)\n listTriples[j++] = triple(head, Parser.factory.namedNode(RDF_FIRST), listItems[i]),\n listTriples[j++] = triple(head, Parser.factory.namedNode(RDF_REST), head = ++i < l ? blank() : Parser.factory.namedNode(RDF_NIL));\n\n // Return the list's identifier, its triples, and the triples associated with its items\n return { entity: list, triples: appendAllTo(listTriples, triples) };\n }\n\n // Creates a blank node identifier, collecting triples with that blank node as subject\n function createAnonymousObject(propertyList) {\n var entity = blank();\n return {\n entity: entity,\n triples: propertyList.map(function (t) { return extend(triple(entity), t); })\n };\n }\n\n // Collects all (possibly blank) objects, and triples that have them as subject\n function objectListToTriples(predicate, objectList, otherTriples) {\n var objects = [], triples = [];\n objectList.forEach(function (l) {\n let annotation = null;\n if (l.annotation) {\n annotation = l.annotation\n l = l.object;\n }\n objects.push(triple(null, predicate, l.entity, annotation));\n appendAllTo(triples, l.triples);\n });\n return unionAll(objects, otherTriples || [], triples);\n }\n\n // Simplifies groups by merging adjacent BGPs\n function mergeAdjacentBGPs(groups) {\n var merged = [], currentBgp;\n for (var i = 0, group; group = groups[i]; i++) {\n switch (group.type) {\n // Add a BGP's triples to the current BGP\n case 'bgp':\n if (group.triples.length) {\n if (!currentBgp)\n appendTo(merged, currentBgp = group);\n else\n appendAllTo(currentBgp.triples, group.triples);\n }\n break;\n // All other groups break up a BGP\n default:\n // Only add the group if its pattern is non-empty\n if (!group.patterns || group.patterns.length > 0) {\n appendTo(merged, group);\n currentBgp = null;\n }\n }\n }\n return merged;\n }\n\n // Return the id of an expression\n function getExpressionId(expression) {\n return expression.variable ? expression.variable.value : expression.value || expression.expression.value;\n }\n\n // Get all \"aggregate\"'s from an expression\n function getAggregatesOfExpression(expression) {\n if (!expression) {\n return [];\n }\n if (expression.type === 'aggregate') {\n return [expression];\n } else if (expression.type === \"operation\") {\n const aggregates = [];\n for (const arg of expression.args) {\n aggregates.push(...getAggregatesOfExpression(arg));\n }\n return aggregates;\n }\n return [];\n }\n\n // Get all variables used in an expression\n function getVariablesFromExpression(expression) {\n const variables = new Set();\n const visitExpression = function (expr) {\n if (!expr) { return; }\n if (expr.termType === \"Variable\") {\n variables.add(expr);\n } else if (expr.type === \"operation\") {\n expr.args.forEach(visitExpression);\n }\n };\n visitExpression(expression);\n return variables;\n }\n\n // Helper function to flatten arrays\n function flatten(input, depth = 1, stack = []) {\n for (const item of input) {\n if (depth > 0 && item instanceof Array) {\n flatten(item, depth - 1, stack);\n } else {\n stack.push(item);\n }\n }\n return stack;\n }\n\n function isVariable(term) {\n return term.termType === 'Variable';\n }\n\n function getBoundVarsFromGroupGraphPattern(pattern) {\n if (pattern.triples) {\n const boundVars = [];\n for (const triple of pattern.triples) {\n if (isVariable(triple.subject)) boundVars.push(triple.subject.value);\n if (isVariable(triple.predicate)) boundVars.push(triple.predicate.value);\n if (isVariable(triple.object)) boundVars.push(triple.object.value);\n }\n return boundVars;\n } else if (pattern.patterns) {\n const boundVars = [];\n for (const pat of pattern.patterns) {\n boundVars.push(...getBoundVarsFromGroupGraphPattern(pat));\n }\n return boundVars;\n }\n return [];\n }\n\n // Helper function to find duplicates in array\n function getDuplicatesInArray(array) {\n const sortedArray = array.slice().sort();\n const duplicates = [];\n for (let i = 0; i < sortedArray.length - 1; i++) {\n if (sortedArray[i + 1] == sortedArray[i]) {\n duplicates.push(sortedArray[i]);\n }\n }\n return duplicates;\n }\n\n function ensureSparqlStar(value) {\n if (!Parser.sparqlStar) {\n throw new Error('SPARQL-star support is not enabled');\n }\n return value;\n }\n\n function _applyAnnotations(subject, annotations, arr) {\n for (const annotation of annotations) {\n const t = triple(\n // If the annotation already has a subject then just push the\n // annotation to the upper scope as it is a blank node introduced\n // from a pattern like :s :p :o {| :p1 [ :p2 :o2; :p3 :o3 ] |}\n 'subject' in annotation ? annotation.subject : subject,\n annotation.predicate,\n annotation.object\n )\n\n arr.push(t);\n\n if (annotation.annotations) {\n _applyAnnotations(nestedTriple(\n subject,\n annotation.predicate,\n annotation.object\n ), annotation.annotations, arr)\n }\n }\n }\n\n function applyAnnotations(triples) {\n if (Parser.sparqlStar) {\n const newTriples = [];\n\n triples.forEach(t => {\n const s = triple(t.subject, t.predicate, t.object);\n\n newTriples.push(s);\n\n if (t.annotations) {\n _applyAnnotations(nestedTriple(t.subject, t.predicate, t.object), t.annotations, newTriples);\n }\n });\n\n return newTriples;\n }\n return triples;\n }\n\n function ensureSparqlStarNestedQuads(value) {\n if (!Parser.sparqlStarNestedQuads) {\n throw new Error('Lenient SPARQL-star support with nested quads is not enabled');\n }\n return value;\n }\n\n function ensureNoVariables(operations) {\n for (const operation of operations) {\n if (operation.type === 'graph' && operation.name.termType === 'Variable') {\n throw new Error('Detected illegal variable in GRAPH');\n }\n if (operation.type === 'bgp' || operation.type === 'graph') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'Variable' ||\n triple.predicate.termType === 'Variable' ||\n triple.object.termType === 'Variable') {\n throw new Error('Detected illegal variable in BGP');\n }\n }\n }\n }\n return operations;\n }\n\n function ensureNoBnodes(operations) {\n for (const operation of operations) {\n if (operation.type === 'bgp') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'BlankNode' ||\n triple.predicate.termType === 'BlankNode' ||\n triple.object.termType === 'BlankNode') {\n throw new Error('Detected illegal blank node in BGP');\n }\n }\n }\n }\n return operations;\n }\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"flex\":true,\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* ignore */\nbreak;\ncase 1:return 12\nbreak;\ncase 2:return 15\nbreak;\ncase 3:return 41\nbreak;\ncase 4:return 325\nbreak;\ncase 5:return 326\nbreak;\ncase 6:return 45\nbreak;\ncase 7:return 47\nbreak;\ncase 8:return 48\nbreak;\ncase 9:return 39\nbreak;\ncase 10:return 24\nbreak;\ncase 11:return 28\nbreak;\ncase 12:return 29\nbreak;\ncase 13:return 31\nbreak;\ncase 14:return 32\nbreak;\ncase 15:return 36\nbreak;\ncase 16:return 53\nbreak;\ncase 17:return 327\nbreak;\ncase 18:return 63\nbreak;\ncase 19:return 64\nbreak;\ncase 20:return 70\nbreak;\ncase 21:return 73\nbreak;\ncase 22:return 76\nbreak;\ncase 23:return 78\nbreak;\ncase 24:return 81\nbreak;\ncase 25:return 83\nbreak;\ncase 26:return 85\nbreak;\ncase 27:return 193\nbreak;\ncase 28:return 100\nbreak;\ncase 29:return 328\nbreak;\ncase 30:return 121\nbreak;\ncase 31:return 329\nbreak;\ncase 32:return 330\nbreak;\ncase 33:return 110\nbreak;\ncase 34:return 331\nbreak;\ncase 35:return 109\nbreak;\ncase 36:return 332\nbreak;\ncase 37:return 333\nbreak;\ncase 38:return 113\nbreak;\ncase 39:return 115\nbreak;\ncase 40:return 116\nbreak;\ncase 41:return 131\nbreak;\ncase 42:return 123\nbreak;\ncase 43:return 126\nbreak;\ncase 44:return 128\nbreak;\ncase 45:return 132\nbreak;\ncase 46:return 112\nbreak;\ncase 47:return 334\nbreak;\ncase 48:return 335\nbreak;\ncase 49:return 159\nbreak;\ncase 50:return 161\nbreak;\ncase 51:return 164\nbreak;\ncase 52:return 174\nbreak;\ncase 53:return 160\nbreak;\ncase 54:return 336\nbreak;\ncase 55:return 163\nbreak;\ncase 56:return 312\nbreak;\ncase 57:return 314\nbreak;\ncase 58:return 317\nbreak;\ncase 59:return 318\nbreak;\ncase 60:return 272\nbreak;\ncase 61:return 197\nbreak;\ncase 62:return 337\nbreak;\ncase 63:return 338\nbreak;\ncase 64:return 229\nbreak;\ncase 65:return 340\nbreak;\ncase 66:return 263\nbreak;\ncase 67:return 224\nbreak;\ncase 68:return 231\nbreak;\ncase 69:return 232\nbreak;\ncase 70:return 242\nbreak;\ncase 71:return 246\nbreak;\ncase 72:return 290\nbreak;\ncase 73:return 341\nbreak;\ncase 74:return 342\nbreak;\ncase 75:return 343\nbreak;\ncase 76:return 344\nbreak;\ncase 77:return 345\nbreak;\ncase 78:return 250\nbreak;\ncase 79:return 346\nbreak;\ncase 80:return 265\nbreak;\ncase 81:return 276\nbreak;\ncase 82:return 277\nbreak;\ncase 83:return 268\nbreak;\ncase 84:return 269\nbreak;\ncase 85:return 270\nbreak;\ncase 86:return 271\nbreak;\ncase 87:return 347\nbreak;\ncase 88:return 348\nbreak;\ncase 89:return 273\nbreak;\ncase 90:return 274\nbreak;\ncase 91:return 350\nbreak;\ncase 92:return 349\nbreak;\ncase 93:return 351\nbreak;\ncase 94:return 279\nbreak;\ncase 95:return 280\nbreak;\ncase 96:return 283\nbreak;\ncase 97:return 285\nbreak;\ncase 98:return 289\nbreak;\ncase 99:return 293\nbreak;\ncase 100:return 296\nbreak;\ncase 101:return 13\nbreak;\ncase 102:return 16\nbreak;\ncase 103:return 308\nbreak;\ncase 104:return 309\nbreak;\ncase 105:return 87\nbreak;\ncase 106:return 292\nbreak;\ncase 107:return 82\nbreak;\ncase 108:return 294\nbreak;\ncase 109:return 295\nbreak;\ncase 110:return 297\nbreak;\ncase 111:return 298\nbreak;\ncase 112:return 299\nbreak;\ncase 113:return 300\nbreak;\ncase 114:return 301\nbreak;\ncase 115:return 302\nbreak;\ncase 116:return 'EXPONENT'\nbreak;\ncase 117:return 303\nbreak;\ncase 118:return 304\nbreak;\ncase 119:return 305\nbreak;\ncase 120:return 306\nbreak;\ncase 121:return 89\nbreak;\ncase 122:return 310\nbreak;\ncase 123:return 6\nbreak;\ncase 124:return 'INVALID'\nbreak;\ncase 125:console.log(yy_.yytext);\nbreak;\n}\n},\nrules: [/^(?:\\s+|(#[^\\n\\r]*))/i,/^(?:BASE)/i,/^(?:PREFIX)/i,/^(?:SELECT)/i,/^(?:DISTINCT)/i,/^(?:REDUCED)/i,/^(?:\\()/i,/^(?:AS)/i,/^(?:\\))/i,/^(?:\\*)/i,/^(?:CONSTRUCT)/i,/^(?:WHERE)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:DESCRIBE)/i,/^(?:ASK)/i,/^(?:FROM)/i,/^(?:NAMED)/i,/^(?:GROUP)/i,/^(?:BY)/i,/^(?:HAVING)/i,/^(?:ORDER)/i,/^(?:ASC)/i,/^(?:DESC)/i,/^(?:LIMIT)/i,/^(?:OFFSET)/i,/^(?:VALUES)/i,/^(?:;)/i,/^(?:LOAD)/i,/^(?:SILENT)/i,/^(?:INTO)/i,/^(?:CLEAR)/i,/^(?:DROP)/i,/^(?:CREATE)/i,/^(?:ADD)/i,/^(?:TO)/i,/^(?:MOVE)/i,/^(?:COPY)/i,/^(?:INSERT((\\s+|(#[^\\n\\r]*)\\n\\r?)+)DATA)/i,/^(?:DELETE((\\s+|(#[^\\n\\r]*)\\n\\r?)+)DATA)/i,/^(?:DELETE((\\s+|(#[^\\n\\r]*)\\n\\r?)+)WHERE)/i,/^(?:WITH)/i,/^(?:DELETE)/i,/^(?:INSERT)/i,/^(?:USING)/i,/^(?:DEFAULT)/i,/^(?:GRAPH)/i,/^(?:ALL)/i,/^(?:\\.)/i,/^(?:OPTIONAL)/i,/^(?:SERVICE)/i,/^(?:BIND)/i,/^(?:UNDEF)/i,/^(?:MINUS)/i,/^(?:UNION)/i,/^(?:FILTER)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:\\{\\|)/i,/^(?:\\|\\})/i,/^(?:,)/i,/^(?:a)/i,/^(?:\\|)/i,/^(?:\\/)/i,/^(?:\\^)/i,/^(?:\\?)/i,/^(?:\\+)/i,/^(?:!)/i,/^(?:\\[)/i,/^(?:\\])/i,/^(?:\\|\\|)/i,/^(?:&&)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:<)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:>=)/i,/^(?:IN)/i,/^(?:NOT)/i,/^(?:-)/i,/^(?:BOUND)/i,/^(?:BNODE)/i,/^(?:(RAND|NOW|UUID|STRUUID))/i,/^(?:(LANG|DATATYPE|IRI|URI|ABS|CEIL|FLOOR|ROUND|STRLEN|STR|UCASE|LCASE|ENCODE_FOR_URI|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|MD5|SHA1|SHA256|SHA384|SHA512|isIRI|isURI|isBLANK|isLITERAL|isNUMERIC))/i,/^(?:(SUBJECT|PREDICATE|OBJECT|isTRIPLE))/i,/^(?:(LANGMATCHES|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|STRLANG|STRDT|sameTerm))/i,/^(?:CONCAT)/i,/^(?:COALESCE)/i,/^(?:IF)/i,/^(?:TRIPLE)/i,/^(?:REGEX)/i,/^(?:SUBSTR)/i,/^(?:REPLACE)/i,/^(?:EXISTS)/i,/^(?:COUNT)/i,/^(?:SUM|MIN|MAX|AVG|SAMPLE)/i,/^(?:GROUP_CONCAT)/i,/^(?:SEPARATOR)/i,/^(?:\\^\\^)/i,/^(?:true|false)/i,/^(?:(<(?:[^<>\\\"\\{\\}\\|\\^`\\\\\\u0000-\\u0020])*>))/i,/^(?:((([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?)?:))/i,/^(?:(((([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?)?:)((?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|:|[0-9]|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%))))(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%))))*(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%)))))?)))/i,/^(?:(_:(?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?))/i,/^(?:([\\?\\$]((?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9])(?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])*)))/i,/^(?:(@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*))/i,/^(?:([0-9]+))/i,/^(?:([0-9]*\\.[0-9]+))/i,/^(?:([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+)))/i,/^(?:(\\+([0-9]+)))/i,/^(?:(\\+([0-9]*\\.[0-9]+)))/i,/^(?:(\\+([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:(-([0-9]+)))/i,/^(?:(-([0-9]*\\.[0-9]+)))/i,/^(?:(-([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:([eE][+-]?[0-9]+))/i,/^(?:('(?:(?:[^\\u0027\\u005C\\u000A\\u000D])|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*'))/i,/^(?:(\"(?:(?:[^\\u0022\\u005C\\u000A\\u000D])|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*\"))/i,/^(?:('''(?:(?:'|'')?(?:[^'\\\\]|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*'''))/i,/^(?:(\"\"\"(?:(?:\"|\"\")?(?:[^\\\"\\\\]|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*\"\"\"))/i,/^(?:(\\((\\u0020|\\u0009|\\u000D|\\u000A)*\\)))/i,/^(?:(\\[(\\u0020|\\u0009|\\u000D|\\u000A)*\\]))/i,/^(?:$)/i,/^(?:.)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();module.exports=SparqlParser\n","\n// Wildcard constructor\nclass Wildcard {\n constructor() {\n return WILDCARD || this;\n }\n\n equals(other) {\n return other && (this.termType === other.termType);\n }\n}\n\nObject.defineProperty(Wildcard.prototype, 'value', {\n enumerable: true,\n value: '*',\n});\n\nObject.defineProperty(Wildcard.prototype, 'termType', {\n enumerable: true,\n value: 'Wildcard',\n});\n\n\n// Wildcard singleton\nvar WILDCARD = new Wildcard();\n\nmodule.exports.Wildcard = Wildcard;\n","var Parser = require('./lib/SparqlParser').Parser;\nvar Generator = require('./lib/SparqlGenerator');\nvar Wildcard = require(\"./lib/Wildcard\").Wildcard;\nvar { DataFactory } = require('rdf-data-factory');\n\nmodule.exports = {\n /**\n * Creates a SPARQL parser with the given pre-defined prefixes and base IRI\n * @param options {\n * prefixes?: { [prefix: string]: string },\n * baseIRI?: string,\n * factory?: import('rdf-js').DataFactory,\n * sparqlStar?: boolean,\n * skipValidation?: boolean,\n * skipUngroupedVariableCheck?: boolean\n * }\n */\n Parser: function ({ prefixes, baseIRI, factory, sparqlStar, skipValidation, skipUngroupedVariableCheck, pathOnly } = {}) {\n\n // Create a copy of the prefixes\n var prefixesCopy = {};\n for (var prefix in prefixes || {})\n prefixesCopy[prefix] = prefixes[prefix];\n\n // Create a new parser with the given prefixes\n // (Workaround for https://github.com/zaach/jison/issues/241)\n var parser = new Parser();\n parser.parse = function () {\n Parser.base = baseIRI || '';\n Parser.prefixes = Object.create(prefixesCopy);\n Parser.factory = factory || new DataFactory();\n Parser.sparqlStar = Boolean(sparqlStar);\n Parser.pathOnly = Boolean(pathOnly);\n // We keep skipUngroupedVariableCheck for compatibility reasons.\n Parser.skipValidation = Boolean(skipValidation) || Boolean(skipUngroupedVariableCheck)\n return Parser.prototype.parse.apply(parser, arguments);\n };\n parser._resetBlanks = Parser._resetBlanks;\n return parser;\n },\n Generator: Generator,\n Wildcard: Wildcard,\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/SparqlJsonParser\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SparqlJsonParser = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst readable_stream_1 = require(\"readable-stream\");\n// tslint:disable-next-line:no-var-requires\nconst JsonParser = require('@bergos/jsonparse');\n/**\n * Parser for the SPARQL 1.1 Query Results JSON format.\n * @see https://www.w3.org/TR/sparql11-results-json/\n */\nclass SparqlJsonParser {\n constructor(settings) {\n var _a;\n settings = settings || {};\n this.dataFactory = settings.dataFactory || new rdf_data_factory_1.DataFactory();\n this.prefixVariableQuestionMark = !!settings.prefixVariableQuestionMark;\n this.suppressMissingStreamResultsError = (_a = settings.suppressMissingStreamResultsError) !== null && _a !== void 0 ? _a : true;\n }\n /**\n * Convert a SPARQL JSON bindings response to an array of bindings objects.\n * @param sparqlResponse A SPARQL JSON response.\n * @return {IBindings[]} An array of bindings.\n */\n parseJsonResults(sparqlResponse) {\n return sparqlResponse.results.bindings.map((rawBindings) => this.parseJsonBindings(rawBindings));\n }\n /**\n * Convert a SPARQL JSON bindings response stream to a stream of bindings objects.\n *\n * The bindings stream will emit a 'variables' event that will contain\n * the array of variables (as RDF.Variable[]), as defined in the response head.\n *\n * @param {NodeJS.ReadableStream} sparqlResponseStream A SPARQL JSON response stream.\n * @return {NodeJS.ReadableStream} A stream of bindings.\n */\n parseJsonResultsStream(sparqlResponseStream) {\n const errorListener = (error) => resultStream.emit('error', error);\n sparqlResponseStream.on('error', errorListener);\n const jsonParser = new JsonParser();\n jsonParser.onError = errorListener;\n let variablesFound = false;\n let resultsFound = false;\n jsonParser.onValue = (value) => {\n if (jsonParser.key === \"vars\" && jsonParser.stack.length === 2 && jsonParser.stack[1].key === 'head') {\n resultStream.emit('variables', value.map((v) => this.dataFactory.variable(v)));\n variablesFound = true;\n }\n else if (jsonParser.key === \"results\" && jsonParser.stack.length === 1) {\n resultsFound = true;\n }\n else if (typeof jsonParser.key === 'number' && jsonParser.stack.length === 3 && jsonParser.stack[1].key === 'results' && jsonParser.stack[2].key === 'bindings') {\n try {\n resultStream.push(this.parseJsonBindings(value));\n }\n catch (error) {\n resultStream.emit(\"error\", error);\n }\n }\n else if (jsonParser.key === \"metadata\" && jsonParser.stack.length === 1) {\n resultStream.emit('metadata', value);\n }\n };\n const resultStream = sparqlResponseStream\n .on(\"end\", _ => {\n if (!resultsFound && !this.suppressMissingStreamResultsError) {\n resultStream.emit(\"error\", new Error(\"No valid SPARQL query results were found.\"));\n }\n else if (!variablesFound) {\n resultStream.emit('variables', []);\n }\n })\n .pipe(new readable_stream_1.Transform({\n objectMode: true,\n transform(chunk, encoding, callback) {\n jsonParser.write(chunk);\n callback();\n }\n }));\n return resultStream;\n }\n /**\n * Convert a SPARQL JSON result binding to a bindings object.\n * @param rawBindings A SPARQL JSON result binding.\n * @return {IBindings} A bindings object.\n */\n parseJsonBindings(rawBindings) {\n const bindings = {};\n for (const key in rawBindings) {\n const rawValue = rawBindings[key];\n bindings[this.prefixVariableQuestionMark ? ('?' + key) : key] = this.parseJsonValue(rawValue);\n }\n return bindings;\n }\n /**\n * Convert a SPARQL JSON result value to an RDF term.\n * @param rawValue A SPARQL JSON result value\n * @return {RDF.Term} An RDF term.\n */\n parseJsonValue(rawValue) {\n let value;\n switch (rawValue.type) {\n case 'bnode':\n value = this.dataFactory.blankNode(rawValue.value);\n break;\n case 'literal':\n if (rawValue['xml:lang']) {\n value = this.dataFactory.literal(rawValue.value, rawValue['xml:lang']);\n }\n else if (rawValue.datatype) {\n value = this.dataFactory.literal(rawValue.value, this.dataFactory.namedNode(rawValue.datatype));\n }\n else {\n value = this.dataFactory.literal(rawValue.value);\n }\n break;\n case 'typed-literal':\n // Virtuoso uses this non-spec-compliant way of defining typed literals\n value = this.dataFactory.literal(rawValue.value, this.dataFactory.namedNode(rawValue.datatype));\n break;\n case 'triple':\n const tripleValue = rawValue.value;\n if (!tripleValue || !tripleValue.subject || !tripleValue.predicate || !tripleValue.object) {\n throw new Error('Invalid quoted triple: ' + JSON.stringify(rawValue));\n }\n value = this.dataFactory.quad(this.parseJsonValue(tripleValue.subject), this.parseJsonValue(tripleValue.predicate), this.parseJsonValue(tripleValue.object));\n break;\n default:\n value = this.dataFactory.namedNode(rawValue.value);\n break;\n }\n return value;\n }\n /**\n * Convert a SPARQL JSON boolean response to a boolean.\n * This will throw an error if the given reponse was not a valid boolean response.\n * @param sparqlResponse A SPARQL JSON response.\n * @return {IBindings[]} An array of bindings.\n */\n parseJsonBoolean(sparqlResponse) {\n if ('boolean' in sparqlResponse) {\n return sparqlResponse.boolean;\n }\n throw new Error('No valid ASK response was found.');\n }\n /**\n * Convert a SPARQL JSON boolean response stream to a promise resolving to a boolean.\n * This will reject if the given reponse was not a valid boolean response.\n * @param {NodeJS.ReadableStream} sparqlResponseStream A SPARQL JSON response stream.\n * @return {Promise} The response boolean.\n */\n parseJsonBooleanStream(sparqlResponseStream) {\n return new Promise((resolve, reject) => {\n const parser = new JsonParser();\n parser.onError = reject;\n parser.onValue = (value) => {\n if (parser.key === \"boolean\" && typeof value === 'boolean' && parser.stack.length === 1) {\n resolve(value);\n }\n };\n sparqlResponseStream\n .on('error', reject)\n .on('data', d => parser.write(d))\n .on('end', () => reject(new Error('No valid ASK response was found.')));\n });\n }\n}\nexports.SparqlJsonParser = SparqlJsonParser;\n//# sourceMappingURL=SparqlJsonParser.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/Converter\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Converter = void 0;\nconst rdf_literal_1 = require(\"rdf-literal\");\nconst sparqljson_parse_1 = require(\"sparqljson-parse\");\n/**\n * Converts SPARQL JSON results to a tree-based structure by splitting variables on a certain delimiter.\n */\nclass Converter {\n constructor(settings) {\n settings = settings || { delimiter: '_' };\n settings.prefixVariableQuestionMark = false;\n this.delimiter = settings.delimiter || '_';\n this.parser = new sparqljson_parse_1.SparqlJsonParser(settings);\n this.materializeRdfJsTerms = settings.materializeRdfJsTerms;\n }\n /**\n * Adds a value to a tree.\n * @param tree A tree datastructure.\n * @param {string[]} path The path of keys in the tree.\n * @param {Term} value A value to add.\n * @param {string} lastKeyPath The accumulated key path (separated by the given delimiter)\n * through recursive calls, can be empty.\n * @param {ISchema} schema A schema.\n * @param {string} delimiter The string to join key paths by.\n */\n static addValueToTree(tree, path, value, lastKeyPath, schema, delimiter) {\n const key = path[0];\n const keyPath = lastKeyPath ? (lastKeyPath + delimiter + key) : key;\n const singularize = schema.singularizeVariables[keyPath];\n if (path.length === 1) {\n // Leaf nodes\n if (singularize) {\n if (!tree[key]) {\n tree[key] = value;\n }\n }\n else {\n if (!tree[key]) {\n tree[key] = [];\n }\n tree[key].push(value);\n }\n }\n else {\n // Inner nodes\n let nextNode;\n if (singularize) {\n if (!tree[key]) {\n tree[key] = {};\n }\n nextNode = tree[key];\n }\n else {\n if (!tree[key]) {\n tree[key] = [{}];\n }\n nextNode = tree[key][0];\n }\n Converter.addValueToTree(nextNode, path.slice(1), value, keyPath, schema, delimiter);\n }\n }\n /**\n * Recursively merge the two given trees.\n * @param tree1 A first tree (has key priority on literals).\n * @param tree2 A second tree. All arrays will/should only have a single element.\n * @return {any} The merged tree.\n */\n static mergeTrees(tree1, tree2) {\n if (typeof tree1 !== typeof tree2) {\n throw new Error(`Two incompatible tree nodes were found: ${typeof tree1} and ${typeof tree2}`);\n }\n if (Array.isArray(tree1) !== Array.isArray(tree2)) {\n throw new Error(`Two incompatible tree nodes were found: Array?${Array.isArray(tree1)} and Array?${Array.isArray(tree2)}`);\n }\n if (typeof tree1 === 'object' && typeof tree2 === 'object') {\n if (tree1.termType && tree2.termType) {\n if (tree1.equals(tree2)) {\n return { valid: true, result: tree1 };\n }\n else {\n return { valid: false, result: tree1 };\n }\n }\n if (Array.isArray(tree1) && Array.isArray(tree2)) {\n if (tree1.length > 0) {\n const merged = [];\n let valid = false;\n for (const tree1Element of tree1) {\n const mergedElement = Converter.mergeTrees(tree1Element, tree2[0]);\n if (mergedElement.valid) {\n valid = true;\n merged.push(mergedElement.result);\n }\n else {\n merged.push(tree1Element);\n }\n }\n if (valid) {\n return { valid: true, result: merged };\n }\n }\n return { valid: true, result: tree1.concat(tree2) };\n }\n else {\n const merged = {};\n for (const key2 in tree2) {\n merged[key2] = tree2[key2];\n }\n for (const key1 in tree1) {\n if (merged[key1]) {\n const mergedElement = Converter.mergeTrees(tree1[key1], merged[key1]);\n if (mergedElement.valid) {\n merged[key1] = mergedElement.result;\n }\n else {\n return { valid: false, result: tree1 };\n }\n }\n else {\n merged[key1] = tree1[key1];\n }\n }\n return { valid: true, result: merged };\n }\n }\n else {\n throw new Error(`Unmergable tree types: ${typeof tree1} and ${typeof tree2}`);\n }\n }\n /**\n * Materialize all RDF terms in the given tree to raw values.\n * This does not mutate the original tree.\n * @param tree A tree.\n * @return {any} A materialized tree.\n */\n static materializeTree(tree) {\n if (tree.termType) {\n return (0, rdf_literal_1.getTermRaw)(tree);\n }\n else if (Array.isArray(tree)) {\n return tree.map(Converter.materializeTree);\n }\n else {\n const materialized = {};\n for (const key in tree) {\n materialized[key] = Converter.materializeTree(tree[key]);\n }\n return materialized;\n }\n }\n /**\n * Convert a complete SPARQL JSON response to a GraphQL results tree.\n * @param sparqlResponse A SPARQL JSON response.\n * @param {ISchema} schema A schema.\n * @return {any} A GraphQL results tree.\n */\n sparqlJsonResultsToTree(sparqlResponse, schema) {\n return this.bindingsToTree(this.parser.parseJsonResults(sparqlResponse), schema || { singularizeVariables: {} });\n }\n /**\n * Convert an array of bindings to a GraphQL results tree.\n * @param {IBindings[]} bindingsArray An array of bindings.\n * @param {ISchema} schema A schema.\n * @return {any} A GraphQL results tree.\n */\n bindingsToTree(bindingsArray, schema) {\n const singularRoot = schema && schema.singularizeVariables[''];\n let tree = singularRoot ? {} : [];\n for (const bindings of bindingsArray) {\n const subTree = singularRoot ? {} : [{}];\n for (const key in bindings) {\n const path = key.split(this.delimiter);\n const value = bindings[key];\n Converter.addValueToTree(singularRoot ? subTree : subTree[0], path, value, '', schema, this.delimiter);\n }\n tree = Converter.mergeTrees(tree, subTree).result;\n }\n if (this.materializeRdfJsTerms) {\n tree = Converter.materializeTree(tree);\n }\n return tree;\n }\n}\nexports.Converter = Converter;\n//# sourceMappingURL=Converter.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/SparqlXmlParser\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SparqlXmlParser = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst saxes_1 = require(\"@rubensworks/saxes\");\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * Parser for the SPARQL Query Results XML format.\n * @see https://www.w3.org/TR/rdf-sparql-XMLres/\n */\nclass SparqlXmlParser {\n constructor(settings) {\n settings = settings || {};\n this.dataFactory = settings.dataFactory || new rdf_data_factory_1.DataFactory();\n this.prefixVariableQuestionMark = !!settings.prefixVariableQuestionMark;\n }\n /**\n * Convert a SPARQL XML bindings response stream to a stream of bindings objects.\n *\n * The bindings stream will emit a 'variables' event that will contain\n * the array of variables (as RDF.Variable[]), as defined in the response head.\n *\n * @param {NodeJS.ReadableStream} sparqlResponseStream A SPARQL XML response stream.\n * @return {NodeJS.ReadableStream} A stream of bindings.\n */\n parseXmlResultsStream(sparqlResponseStream) {\n const errorListener = (error) => resultStream.emit('error', error);\n sparqlResponseStream.on('error', errorListener);\n const parser = new saxes_1.SaxesParser();\n const stack = [];\n let variablesFound = false;\n let resultsFound = false;\n const variables = [];\n let currentBindings = {};\n let currentBindingName = '';\n let currentBindingType = '';\n let currentBindingAnnotation;\n let currentText = '';\n let currentQuotedTriples = [];\n parser.on(\"error\", errorListener);\n parser.on(\"opentag\", tag => {\n if (tag.name === \"variable\" && this.stackEquals(stack, ['sparql', 'head'])) {\n variables.push(this.dataFactory.variable(tag.attributes.name));\n }\n else if (tag.name === \"results\" && this.stackEquals(stack, ['sparql'])) {\n resultsFound = true;\n }\n else if (tag.name === 'result' && this.stackEquals(stack, ['sparql', 'results'])) {\n currentBindings = {};\n }\n else if (tag.name === 'binding' && this.stackEquals(stack, ['sparql', 'results', 'result'])) {\n currentBindingName = tag.attributes.name || '';\n currentBindingType = '';\n currentBindingAnnotation = '';\n currentText = '';\n currentQuotedTriples = [];\n }\n else if (tag.name === 'triple' && this.stackBeginsWith(stack, ['sparql', 'results', 'result'])) {\n currentQuotedTriples.push({ components: {} });\n }\n else if (stack[stack.length - 1] === 'triple' && this.stackBeginsWith(stack, ['sparql', 'results', 'result', 'binding'])) {\n currentBindingType = '';\n currentBindingAnnotation = '';\n currentText = '';\n if (!['subject', 'predicate', 'object'].includes(tag.name)) {\n errorListener(new Error(`Illegal quoted triple component '${tag.name}' found on line ${parser.line + 1}`));\n }\n else {\n currentQuotedTriples[currentQuotedTriples.length - 1].currentComponent = tag.name;\n }\n }\n else if (this.stackBeginsWith(stack, ['sparql', 'results', 'result', 'binding'])) {\n currentBindingType = tag.name;\n if ('xml:lang' in tag.attributes) {\n currentBindingAnnotation = tag.attributes['xml:lang'];\n }\n else if ('datatype' in tag.attributes) {\n currentBindingAnnotation = this.dataFactory.namedNode(tag.attributes.datatype);\n }\n else {\n currentBindingAnnotation = undefined;\n }\n }\n stack.push(tag.name);\n });\n parser.on(\"closetag\", tag => {\n if (this.stackEquals(stack, ['sparql', 'head'])) {\n resultStream.emit(\"variables\", variables);\n variablesFound = true;\n }\n if (this.stackEquals(stack, ['sparql', 'results', 'result'])) {\n resultStream.push(currentBindings);\n }\n if (this.stackBeginsWith(stack, ['sparql', 'results', 'result', 'binding'])) {\n // Determine current RDF term value\n let term;\n if (!currentBindingName && currentBindingType) {\n errorListener(new Error(`Terms should have a name on line ${parser.line + 1}`));\n }\n else if (currentBindingType === 'uri') {\n term = this.dataFactory.namedNode(currentText);\n }\n else if (currentBindingType === 'bnode') {\n term = this.dataFactory.blankNode(currentText);\n }\n else if (currentBindingType === 'literal') {\n term = this.dataFactory.literal(currentText, currentBindingAnnotation);\n }\n else if (stack[stack.length - 1] === 'triple') {\n const currentQuotedTriple = currentQuotedTriples.pop();\n if (currentQuotedTriple && currentQuotedTriple.components.subject && currentQuotedTriple.components.predicate && currentQuotedTriple.components.object) {\n term = this.dataFactory.quad(currentQuotedTriple.components.subject, currentQuotedTriple.components.predicate, currentQuotedTriple.components.object);\n }\n else {\n errorListener(new Error(`Incomplete quoted triple on line ${parser.line + 1}`));\n }\n }\n else if (currentBindingType) {\n errorListener(new Error(`Invalid term type '${currentBindingType}' on line ${parser.line + 1}`));\n }\n if (term) {\n if (currentQuotedTriples.length > 0) {\n // If we're in a quoted triple, store the term inside the active quoted triple\n const currentQuotedTriple = currentQuotedTriples[currentQuotedTriples.length - 1];\n if (currentQuotedTriple.components[currentQuotedTriple.currentComponent]) {\n errorListener(new Error(`The ${currentQuotedTriple.currentComponent} in a quoted triple on line ${parser.line + 1} was already defined before`));\n }\n currentQuotedTriple.components[currentQuotedTriple.currentComponent] = term;\n }\n else {\n // Store the value in the current bindings object\n const key = this.prefixVariableQuestionMark ? ('?' + currentBindingName) : currentBindingName;\n currentBindings[key] = term;\n }\n }\n currentBindingType = undefined;\n }\n stack.pop();\n });\n parser.on(\"text\", text => {\n if (this.stackBeginsWith(stack, ['sparql', 'results', 'result', 'binding']) && stack[stack.length - 1] === currentBindingType) {\n currentText = text;\n }\n });\n const resultStream = sparqlResponseStream\n .on(\"end\", _ => {\n if (!resultsFound) {\n resultStream.emit(\"error\", new Error(\"No valid SPARQL query results were found.\"));\n }\n else if (!variablesFound) {\n resultStream.emit('variables', []);\n }\n })\n .pipe(new readable_stream_1.Transform({\n objectMode: true,\n transform(chunk, encoding, callback) {\n parser.write(chunk);\n callback();\n }\n }));\n return resultStream;\n }\n /**\n * Convert a SPARQL XML boolean response stream to a promise resolving to a boolean.\n * This will reject if the given response was not a valid boolean response.\n * @param {NodeJS.ReadableStream} sparqlResponseStream A SPARQL XML response stream.\n * @return {Promise} The response boolean.\n */\n parseXmlBooleanStream(sparqlResponseStream) {\n return new Promise((resolve, reject) => {\n const parser = new saxes_1.SaxesParser();\n const stack = [];\n parser.on(\"error\", reject);\n parser.on(\"opentag\", tag => {\n stack.push(tag.name);\n });\n parser.on(\"closetag\", _ => {\n stack.pop();\n });\n parser.on(\"text\", text => {\n if (this.stackEquals(stack, ['sparql', 'boolean'])) {\n resolve(text === 'true');\n }\n });\n sparqlResponseStream\n .on('error', reject)\n .on('data', d => parser.write(d))\n .on('end', () => reject(new Error('No valid ASK response was found.')));\n });\n }\n stackEquals(a, b) {\n return a.length === b.length && a.every((v, i) => b[i] === v);\n }\n stackBeginsWith(a, b) {\n return a.length >= b.length && b.every((v, i) => a[i] === v);\n }\n}\nexports.SparqlXmlParser = SparqlXmlParser;\n//# sourceMappingURL=SparqlXmlParser.js.map","var Promise = require('promise-polyfill')\n\nmodule.exports = function (stream, enc, cb) {\n if (typeof enc === 'function') {\n cb = enc\n enc = null\n }\n\n var str = ''\n\n var p = new Promise (function (resolve, reject) {\n stream.on('data', function (data) {\n str += (typeof enc === 'string') ? data.toString(enc) : data.toString()\n })\n stream.on('end', function () {\n resolve(str)\n })\n stream.on('error', reject)\n })\n if (cb) {\n p.then(function (str) { cb(null, str) }, cb)\n }\n return p\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\n/**\n * Character classes and associated utilities for the 5th edition of XML 1.0.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//\n// Fragments.\n//\nexports.CHAR = \"\\t\\n\\r -\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\";\nexports.S = \" \\t\\r\\n\";\n// tslint:disable-next-line:max-line-length\nexports.NAME_START_CHAR = \":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\uD800\\uDC00-\\uDB7F\\uDFFF\";\nexports.NAME_CHAR = \"-\" + exports.NAME_START_CHAR + \".0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040\";\n//\n// Regular expressions.\n//\nexports.CHAR_RE = new RegExp(\"^[\" + exports.CHAR + \"]$\", \"u\");\nexports.S_RE = new RegExp(\"^[\" + exports.S + \"]+$\", \"u\");\nexports.NAME_START_CHAR_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"]$\", \"u\");\nexports.NAME_CHAR_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]$\", \"u\");\nexports.NAME_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"][\" + exports.NAME_CHAR + \"]*$\", \"u\");\nexports.NMTOKEN_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]+$\", \"u\");\nvar TAB = 9;\nvar NL = 0xA;\nvar CR = 0xD;\nvar SPACE = 0x20;\n//\n// Lists.\n//\n/** All characters in the ``S`` production. */\nexports.S_LIST = [SPACE, NL, CR, TAB];\n/**\n * Determines whether a codepoint matches the ``CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``CHAR``.\n */\nfunction isChar(c) {\n return (c >= SPACE && c <= 0xD7FF) ||\n c === NL || c === CR || c === TAB ||\n (c >= 0xE000 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0x10FFFF);\n}\nexports.isChar = isChar;\n/**\n * Determines whether a codepoint matches the ``S`` (space) production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``S``.\n */\nfunction isS(c) {\n return c === SPACE || c === NL || c === CR || c === TAB;\n}\nexports.isS = isS;\n/**\n * Determines whether a codepoint matches the ``NAME_START_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_START_CHAR``.\n */\nfunction isNameStartChar(c) {\n return ((c >= 0x41 && c <= 0x5A) ||\n (c >= 0x61 && c <= 0x7A) ||\n c === 0x3A ||\n c === 0x5F ||\n c === 0x200C ||\n c === 0x200D ||\n (c >= 0xC0 && c <= 0xD6) ||\n (c >= 0xD8 && c <= 0xF6) ||\n (c >= 0x00F8 && c <= 0x02FF) ||\n (c >= 0x0370 && c <= 0x037D) ||\n (c >= 0x037F && c <= 0x1FFF) ||\n (c >= 0x2070 && c <= 0x218F) ||\n (c >= 0x2C00 && c <= 0x2FEF) ||\n (c >= 0x3001 && c <= 0xD7FF) ||\n (c >= 0xF900 && c <= 0xFDCF) ||\n (c >= 0xFDF0 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0xEFFFF));\n}\nexports.isNameStartChar = isNameStartChar;\n/**\n * Determines whether a codepoint matches the ``NAME_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_CHAR``.\n */\nfunction isNameChar(c) {\n return isNameStartChar(c) ||\n (c >= 0x30 && c <= 0x39) ||\n c === 0x2D ||\n c === 0x2E ||\n c === 0xB7 ||\n (c >= 0x0300 && c <= 0x036F) ||\n (c >= 0x203F && c <= 0x2040);\n}\nexports.isNameChar = isNameChar;\n//# sourceMappingURL=ed5.js.map","\"use strict\";\n/**\n * Character classes and associated utilities for the 2nd edition of XML 1.1.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//\n// Fragments.\n//\nexports.CHAR = \"\\u0001-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\";\nexports.RESTRICTED_CHAR = \"\\u0001-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F-\\u0084\\u0086-\\u009F\";\nexports.S = \" \\t\\r\\n\";\n// tslint:disable-next-line:max-line-length\nexports.NAME_START_CHAR = \":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\uD800\\uDC00-\\uDB7F\\uDFFF\";\nexports.NAME_CHAR = \"-\" + exports.NAME_START_CHAR + \".0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040\";\n//\n// Regular expressions.\n//\nexports.CHAR_RE = new RegExp(\"^[\" + exports.CHAR + \"]$\", \"u\");\nexports.RESTRICTED_CHAR_RE = new RegExp(\"^[\" + exports.RESTRICTED_CHAR + \"]$\", \"u\");\nexports.S_RE = new RegExp(\"^[\" + exports.S + \"]+$\", \"u\");\nexports.NAME_START_CHAR_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"]$\", \"u\");\nexports.NAME_CHAR_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]$\", \"u\");\nexports.NAME_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"][\" + exports.NAME_CHAR + \"]*$\", \"u\");\nexports.NMTOKEN_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]+$\", \"u\");\nvar TAB = 9;\nvar NL = 0xA;\nvar CR = 0xD;\nvar SPACE = 0x20;\n//\n// Lists.\n//\n/** All characters in the ``S`` production. */\nexports.S_LIST = [SPACE, NL, CR, TAB];\n/**\n * Determines whether a codepoint matches the ``CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``CHAR``.\n */\nfunction isChar(c) {\n return (c >= 0x0001 && c <= 0xD7FF) ||\n (c >= 0xE000 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0x10FFFF);\n}\nexports.isChar = isChar;\n/**\n * Determines whether a codepoint matches the ``RESTRICTED_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``RESTRICTED_CHAR``.\n */\nfunction isRestrictedChar(c) {\n return (c >= 0x1 && c <= 0x8) ||\n c === 0xB ||\n c === 0xC ||\n (c >= 0xE && c <= 0x1F) ||\n (c >= 0x7F && c <= 0x84) ||\n (c >= 0x86 && c <= 0x9F);\n}\nexports.isRestrictedChar = isRestrictedChar;\n/**\n * Determines whether a codepoint matches the ``CHAR`` production and does not\n * match the ``RESTRICTED_CHAR`` production. ``isCharAndNotRestricted(x)`` is\n * equivalent to ``isChar(x) && !isRestrictedChar(x)``. This function is faster\n * than running the two-call equivalent.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``CHAR`` and does not match\n * ``RESTRICTED_CHAR``.\n */\nfunction isCharAndNotRestricted(c) {\n return (c === 0x9) ||\n (c === 0xA) ||\n (c === 0xD) ||\n (c > 0x1F && c < 0x7F) ||\n (c === 0x85) ||\n (c > 0x9F && c <= 0xD7FF) ||\n (c >= 0xE000 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0x10FFFF);\n}\nexports.isCharAndNotRestricted = isCharAndNotRestricted;\n/**\n * Determines whether a codepoint matches the ``S`` (space) production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``S``.\n */\nfunction isS(c) {\n return c === SPACE || c === NL || c === CR || c === TAB;\n}\nexports.isS = isS;\n/**\n * Determines whether a codepoint matches the ``NAME_START_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_START_CHAR``.\n */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction isNameStartChar(c) {\n return ((c >= 0x41 && c <= 0x5A) ||\n (c >= 0x61 && c <= 0x7A) ||\n c === 0x3A ||\n c === 0x5F ||\n c === 0x200C ||\n c === 0x200D ||\n (c >= 0xC0 && c <= 0xD6) ||\n (c >= 0xD8 && c <= 0xF6) ||\n (c >= 0x00F8 && c <= 0x02FF) ||\n (c >= 0x0370 && c <= 0x037D) ||\n (c >= 0x037F && c <= 0x1FFF) ||\n (c >= 0x2070 && c <= 0x218F) ||\n (c >= 0x2C00 && c <= 0x2FEF) ||\n (c >= 0x3001 && c <= 0xD7FF) ||\n (c >= 0xF900 && c <= 0xFDCF) ||\n (c >= 0xFDF0 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0xEFFFF));\n}\nexports.isNameStartChar = isNameStartChar;\n/**\n * Determines whether a codepoint matches the ``NAME_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_CHAR``.\n */\nfunction isNameChar(c) {\n return isNameStartChar(c) ||\n (c >= 0x30 && c <= 0x39) ||\n c === 0x2D ||\n c === 0x2E ||\n c === 0xB7 ||\n (c >= 0x0300 && c <= 0x036F) ||\n (c >= 0x203F && c <= 0x2040);\n}\nexports.isNameChar = isNameChar;\n//# sourceMappingURL=ed2.js.map","\"use strict\";\n/**\n * Character class utilities for XML NS 1.0 edition 3.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//\n// Fragments.\n//\n// tslint:disable-next-line:max-line-length\nexports.NC_NAME_START_CHAR = \"A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\uD800\\uDC00-\\uDB7F\\uDFFF\";\nexports.NC_NAME_CHAR = \"-\" + exports.NC_NAME_START_CHAR + \".0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040\";\n//\n// Regular expressions.\n//\nexports.NC_NAME_START_CHAR_RE = new RegExp(\"^[\" + exports.NC_NAME_START_CHAR + \"]$\", \"u\");\nexports.NC_NAME_CHAR_RE = new RegExp(\"^[\" + exports.NC_NAME_CHAR + \"]$\", \"u\");\nexports.NC_NAME_RE = new RegExp(\"^[\" + exports.NC_NAME_START_CHAR + \"][\" + exports.NC_NAME_CHAR + \"]*$\", \"u\");\n/**\n * Determines whether a codepoint matches [[NC_NAME_START_CHAR]].\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches.\n */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction isNCNameStartChar(c) {\n return ((c >= 0x41 && c <= 0x5A) ||\n c === 0x5F ||\n (c >= 0x61 && c <= 0x7A) ||\n (c >= 0xC0 && c <= 0xD6) ||\n (c >= 0xD8 && c <= 0xF6) ||\n (c >= 0x00F8 && c <= 0x02FF) ||\n (c >= 0x0370 && c <= 0x037D) ||\n (c >= 0x037F && c <= 0x1FFF) ||\n (c >= 0x200C && c <= 0x200D) ||\n (c >= 0x2070 && c <= 0x218F) ||\n (c >= 0x2C00 && c <= 0x2FEF) ||\n (c >= 0x3001 && c <= 0xD7FF) ||\n (c >= 0xF900 && c <= 0xFDCF) ||\n (c >= 0xFDF0 && c <= 0xFFFD) ||\n (c >= 0x10000 && c <= 0xEFFFF));\n}\nexports.isNCNameStartChar = isNCNameStartChar;\n/**\n * Determines whether a codepoint matches [[NC_NAME_CHAR]].\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches.\n */\nfunction isNCNameChar(c) {\n return isNCNameStartChar(c) ||\n (c === 0x2D ||\n c === 0x2E ||\n (c >= 0x30 && c <= 0x39) ||\n c === 0x00B7 ||\n (c >= 0x0300 && c <= 0x036F) ||\n (c >= 0x203F && c <= 0x2040));\n}\nexports.isNCNameChar = isNCNameChar;\n//# sourceMappingURL=ed3.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.toSparqlJs = exports.toSparql = exports.Factory = exports.Algebra = exports.translate = void 0;\nconst sparqlAlgebra_1 = __importDefault(require(\"./lib/sparqlAlgebra\"));\nexports.translate = sparqlAlgebra_1.default;\nconst Algebra = __importStar(require(\"./lib/algebra\"));\nexports.Algebra = Algebra;\nconst factory_1 = __importDefault(require(\"./lib/factory\"));\nexports.Factory = factory_1.default;\nconst sparql_1 = require(\"./lib/sparql\");\nObject.defineProperty(exports, \"toSparql\", { enumerable: true, get: function () { return sparql_1.toSparql; } });\nObject.defineProperty(exports, \"toSparqlJs\", { enumerable: true, get: function () { return sparql_1.toSparqlJs; } });\nconst util_1 = __importDefault(require(\"./lib/util\"));\nexports.Util = util_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expressionTypes = exports.types = void 0;\nvar types;\n(function (types) {\n types[\"ALT\"] = \"alt\";\n types[\"ASK\"] = \"ask\";\n types[\"BGP\"] = \"bgp\";\n types[\"CONSTRUCT\"] = \"construct\";\n types[\"DESCRIBE\"] = \"describe\";\n types[\"DISTINCT\"] = \"distinct\";\n types[\"EXPRESSION\"] = \"expression\";\n types[\"EXTEND\"] = \"extend\";\n types[\"FILTER\"] = \"filter\";\n types[\"FROM\"] = \"from\";\n types[\"GRAPH\"] = \"graph\";\n types[\"GROUP\"] = \"group\";\n types[\"INV\"] = \"inv\";\n types[\"JOIN\"] = \"join\";\n types[\"LEFT_JOIN\"] = \"leftjoin\";\n types[\"LINK\"] = \"link\";\n types[\"MINUS\"] = \"minus\";\n types[\"NOP\"] = \"nop\";\n types[\"NPS\"] = \"nps\";\n types[\"ONE_OR_MORE_PATH\"] = \"OneOrMorePath\";\n types[\"ORDER_BY\"] = \"orderby\";\n types[\"PATH\"] = \"path\";\n types[\"PATTERN\"] = \"pattern\";\n types[\"PROJECT\"] = \"project\";\n types[\"REDUCED\"] = \"reduced\";\n types[\"SEQ\"] = \"seq\";\n types[\"SERVICE\"] = \"service\";\n types[\"SLICE\"] = \"slice\";\n types[\"UNION\"] = \"union\";\n types[\"VALUES\"] = \"values\";\n types[\"ZERO_OR_MORE_PATH\"] = \"ZeroOrMorePath\";\n types[\"ZERO_OR_ONE_PATH\"] = \"ZeroOrOnePath\";\n types[\"COMPOSITE_UPDATE\"] = \"compositeupdate\";\n types[\"DELETE_INSERT\"] = \"deleteinsert\";\n types[\"LOAD\"] = \"load\";\n types[\"CLEAR\"] = \"clear\";\n types[\"CREATE\"] = \"create\";\n types[\"DROP\"] = \"drop\";\n types[\"ADD\"] = \"add\";\n types[\"MOVE\"] = \"move\";\n types[\"COPY\"] = \"copy\";\n})(types = exports.types || (exports.types = {}));\nvar expressionTypes;\n(function (expressionTypes) {\n expressionTypes[\"AGGREGATE\"] = \"aggregate\";\n expressionTypes[\"EXISTENCE\"] = \"existence\";\n expressionTypes[\"NAMED\"] = \"named\";\n expressionTypes[\"OPERATOR\"] = \"operator\";\n expressionTypes[\"TERM\"] = \"term\";\n expressionTypes[\"WILDCARD\"] = \"wildcard\";\n})(expressionTypes = exports.expressionTypes || (exports.expressionTypes = {}));\n//# sourceMappingURL=algebra.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst A = __importStar(require(\"./algebra\"));\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nclass Factory {\n constructor(dataFactory) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.stringType = this.createTerm('http://www.w3.org/2001/XMLSchema#string');\n }\n createAlt(input, flatten = true) { return this.flattenMulti({ type: A.types.ALT, input }, flatten); }\n createAsk(input) { return { type: A.types.ASK, input }; }\n createBoundAggregate(variable, aggregate, expression, distinct, separator) {\n const result = this.createAggregateExpression(aggregate, expression, distinct, separator);\n result.variable = variable;\n return result;\n }\n createBgp(patterns) { return { type: A.types.BGP, patterns }; }\n createConstruct(input, template) { return { type: A.types.CONSTRUCT, input, template }; }\n createDescribe(input, terms) { return { type: A.types.DESCRIBE, input, terms }; }\n createDistinct(input) { return { type: A.types.DISTINCT, input }; }\n createExtend(input, variable, expression) { return { type: A.types.EXTEND, input, variable, expression }; }\n createFrom(input, def, named) { return { type: A.types.FROM, input, default: def, named }; }\n createFilter(input, expression) { return { type: A.types.FILTER, input, expression }; }\n createGraph(input, name) { return { type: A.types.GRAPH, input, name }; }\n createGroup(input, variables, aggregates) { return { type: A.types.GROUP, input, variables, aggregates }; }\n createInv(path) { return { type: A.types.INV, path }; }\n createJoin(input, flatten = true) { return this.flattenMulti({ type: A.types.JOIN, input }, flatten); }\n createLeftJoin(left, right, expression) {\n if (expression)\n return { type: A.types.LEFT_JOIN, input: [left, right], expression };\n return { type: A.types.LEFT_JOIN, input: [left, right] };\n }\n createLink(iri) { return { type: A.types.LINK, iri }; }\n createMinus(left, right) { return { type: A.types.MINUS, input: [left, right] }; }\n createNop() { return { type: A.types.NOP }; }\n createNps(iris) { return { type: A.types.NPS, iris }; }\n createOneOrMorePath(path) { return { type: A.types.ONE_OR_MORE_PATH, path }; }\n createOrderBy(input, expressions) { return { type: A.types.ORDER_BY, input, expressions }; }\n createPath(subject, predicate, object, graph) {\n if (graph)\n return { type: A.types.PATH, subject, predicate, object, graph };\n return { type: A.types.PATH, subject, predicate, object, graph: this.dataFactory.defaultGraph() };\n }\n createPattern(subject, predicate, object, graph) {\n const pattern = this.dataFactory.quad(subject, predicate, object, graph);\n pattern.type = A.types.PATTERN;\n return pattern;\n }\n createProject(input, variables) { return { type: A.types.PROJECT, input, variables }; }\n createReduced(input) { return { type: A.types.REDUCED, input }; }\n createSeq(input, flatten = true) { return this.flattenMulti({ type: A.types.SEQ, input }, flatten); }\n createService(input, name, silent) { return { type: A.types.SERVICE, input, name, silent: Boolean(silent) }; }\n createSlice(input, start, length) {\n start = start || 0;\n if (length !== undefined)\n return { type: A.types.SLICE, input, start, length };\n return { type: A.types.SLICE, input, start };\n }\n createUnion(input, flatten = true) { return this.flattenMulti({ type: A.types.UNION, input }, flatten); }\n createValues(variables, bindings) { return { type: A.types.VALUES, variables, bindings }; }\n createZeroOrMorePath(path) { return { type: A.types.ZERO_OR_MORE_PATH, path }; }\n createZeroOrOnePath(path) { return { type: A.types.ZERO_OR_ONE_PATH, path }; }\n createAggregateExpression(aggregator, expression, distinct, separator) {\n if (separator)\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, separator, distinct };\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, distinct };\n }\n createExistenceExpression(not, input) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.EXISTENCE, not, input }; }\n createNamedExpression(name, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.NAMED, name, args }; }\n createOperatorExpression(operator, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.OPERATOR, operator, args }; }\n createTermExpression(term) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.TERM, term }; }\n createWildcardExpression() { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.WILDCARD, wildcard: new sparqljs_1.Wildcard() }; }\n createTerm(str) {\n if (str[0] === '$') {\n str = str.replace('$', '?');\n }\n return (0, rdf_string_1.stringToTerm)(str, this.dataFactory);\n }\n // Update functions\n createCompositeUpdate(updates) { return { type: A.types.COMPOSITE_UPDATE, updates }; }\n createDeleteInsert(deleteQuads, insertQuads, where) {\n const result = { type: A.types.DELETE_INSERT };\n if (deleteQuads)\n result.delete = deleteQuads;\n if (insertQuads)\n result.insert = insertQuads;\n if (where)\n result.where = where;\n return result;\n }\n createLoad(source, destination, silent) {\n const result = { type: A.types.LOAD, source };\n if (destination)\n result.destination = destination;\n return this.addSilent(result, Boolean(silent));\n }\n createClear(source, silent) {\n return this.addSilent({ type: A.types.CLEAR, source }, Boolean(silent));\n }\n createCreate(source, silent) {\n return this.addSilent({ type: A.types.CREATE, source }, Boolean(silent));\n }\n createDrop(source, silent) {\n return this.addSilent({ type: A.types.DROP, source }, Boolean(silent));\n }\n createAdd(source, destination, silent) {\n return this.addSilent({ type: A.types.ADD, source, destination }, Boolean(silent));\n }\n createMove(source, destination, silent) {\n return this.addSilent({ type: A.types.MOVE, source, destination }, Boolean(silent));\n }\n createCopy(source, destination, silent) {\n return this.addSilent({ type: A.types.COPY, source, destination }, Boolean(silent));\n }\n addSilent(input, silent) {\n if (silent)\n input.silent = silent;\n return input;\n }\n flattenMulti(input, flatten) {\n if (!flatten) {\n return input;\n }\n const type = input.type;\n const children = input.input;\n let newChildren = [];\n for (const child of children) {\n if (child.type === type) {\n newChildren.push(...child.input);\n }\n else {\n newChildren.push(child);\n }\n }\n input.input = newChildren;\n return input;\n }\n}\nexports.default = Factory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toSparqlJs = exports.toSparql = void 0;\nconst rdf_isomorphic_1 = require(\"rdf-isomorphic\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst types = Algebra.types;\nconst eTypes = Algebra.expressionTypes;\nlet context;\nconst factory = new factory_1.default();\nfunction toSparql(op, options = {}) {\n let generator = new sparqljs_1.Generator(options);\n return generator.stringify(toSparqlJs(op));\n}\nexports.toSparql = toSparql;\nfunction toSparqlJs(op) {\n resetContext();\n op = removeQuads(op);\n let result = translateOperation(op);\n if (result.type === 'group')\n return result.patterns[0];\n return result;\n}\nexports.toSparqlJs = toSparqlJs;\nfunction resetContext() {\n context = { project: false, extend: [], group: [], aggregates: [], order: [] };\n}\nfunction translateOperation(op) {\n // this allows us to differentiate between BIND and SELECT when translating EXTEND\n // GRAPH was added because the way graphs get added back here is not the same as how they get added in the future\n // ^ seems fine but might have to be changed if problems get detected in the future\n if (op.type !== types.EXTEND && op.type !== types.ORDER_BY && op.type !== types.GRAPH)\n context.project = false;\n switch (op.type) {\n case types.EXPRESSION: return translateExpression(op);\n case types.ASK: return translateProject(op, types.ASK);\n case types.BGP: return translateBgp(op);\n case types.CONSTRUCT: return translateConstruct(op);\n case types.DESCRIBE: return translateProject(op, types.DESCRIBE);\n case types.DISTINCT: return translateDistinct(op);\n case types.EXTEND: return translateExtend(op);\n case types.FROM: return translateFrom(op);\n case types.FILTER: return translateFilter(op);\n case types.GRAPH: return translateGraph(op);\n case types.GROUP: return translateGroup(op);\n case types.JOIN: return translateJoin(op);\n case types.LEFT_JOIN: return translateLeftJoin(op);\n case types.MINUS: return translateMinus(op);\n case types.NOP: return {};\n case types.ORDER_BY: return translateOrderBy(op);\n case types.PATH: return translatePath(op);\n case types.PATTERN: return translatePattern(op);\n case types.PROJECT: return translateProject(op, types.PROJECT);\n case types.REDUCED: return translateReduced(op);\n case types.SERVICE: return translateService(op);\n case types.SLICE: return translateSlice(op);\n case types.UNION: return translateUnion(op);\n case types.VALUES: return translateValues(op);\n // UPDATE operations\n case types.COMPOSITE_UPDATE: return translateCompositeUpdate(op);\n case types.DELETE_INSERT: return translateDeleteInsert(op);\n case types.LOAD: return translateLoad(op);\n case types.CLEAR: return translateClear(op);\n case types.CREATE: return translateCreate(op);\n case types.DROP: return translateDrop(op);\n case types.ADD: return translateAdd(op);\n case types.MOVE: return translateMove(op);\n case types.COPY: return translateCopy(op);\n }\n throw new Error(`Unknown Operation type ${op.type}`);\n}\nfunction translateExpression(expr) {\n switch (expr.expressionType) {\n case eTypes.AGGREGATE: return translateAggregateExpression(expr);\n case eTypes.EXISTENCE: return translateExistenceExpression(expr);\n case eTypes.NAMED: return translateNamedExpression(expr);\n case eTypes.OPERATOR: return translateOperatorExpression(expr);\n case eTypes.TERM: return translateTermExpression(expr);\n case eTypes.WILDCARD: return translateWildcardExpression(expr);\n }\n throw new Error(`Unknown Expression Operation type ${expr.expressionType}`);\n}\nfunction translatePathComponent(path) {\n switch (path.type) {\n case types.ALT: return translateAlt(path);\n case types.INV: return translateInv(path);\n case types.LINK: return translateLink(path);\n case types.NPS: return translateNps(path);\n case types.ONE_OR_MORE_PATH: return translateOneOrMorePath(path);\n case types.SEQ: return translateSeq(path);\n case types.ZERO_OR_MORE_PATH: return translateZeroOrMorePath(path);\n case types.ZERO_OR_ONE_PATH: return translateZeroOrOnePath(path);\n }\n throw new Error(`Unknown Path type ${path.type}`);\n}\nfunction translateTerm(term) {\n return (0, rdf_string_1.termToString)(term);\n}\n// ------------------------- EXPRESSIONS -------------------------\nfunction translateAggregateExpression(expr) {\n const result = {\n expression: translateExpression(expr.expression),\n type: 'aggregate',\n aggregation: expr.aggregator,\n distinct: expr.distinct\n };\n if (expr.separator)\n result.separator = expr.separator;\n return result;\n}\nfunction translateExistenceExpression(expr) {\n return {\n type: 'operation',\n operator: expr.not ? 'notexists' : 'exists',\n args: [{\n type: 'group',\n patterns: util_1.default.flatten([translateOperation(expr.input)])\n }]\n };\n}\nfunction translateNamedExpression(expr) {\n return {\n type: 'functionCall',\n // Wrong typings\n function: expr.name,\n args: expr.args.map(translateExpression)\n };\n}\nfunction translateOperatorExpression(expr) {\n if (expr.operator === 'desc') {\n const result = { expression: translateExpression(expr.args[0]) };\n result.descending = true;\n return result;\n }\n const result = {\n type: 'operation',\n operator: expr.operator,\n args: expr.args.map(translateExpression)\n };\n if (result.operator === 'in' || result.operator === 'notin')\n result.args = [result.args[0]].concat([result.args.slice(1)]);\n return result;\n}\nfunction translateTermExpression(expr) {\n return expr.term;\n}\nfunction translateWildcardExpression(expr) {\n return expr.wildcard;\n}\nfunction arrayToPattern(input) {\n if (!Array.isArray(input))\n return input;\n if (input.length === 1)\n return input[0];\n return {\n type: 'group',\n patterns: input,\n };\n}\n// ------------------------- OPERATIONS -------------------------\n// these get translated in the project function\nfunction translateBoundAggregate(op) {\n return op;\n}\nfunction translateBgp(op) {\n let patterns = op.patterns.map(translatePattern);\n if (patterns.length === 0)\n return null;\n return {\n type: 'bgp',\n triples: patterns\n };\n}\nfunction translateConstruct(op) {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: op.template.map(translatePattern),\n where: util_1.default.flatten([\n translateOperation(op.input)\n ])\n };\n}\nfunction translateDistinct(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].distinct = true;\n return result;\n}\nfunction translateExtend(op) {\n if (context.project) {\n context.extend.push(op);\n return translateOperation(op.input);\n }\n return util_1.default.flatten([\n translateOperation(op.input),\n {\n type: 'bind',\n variable: op.variable,\n expression: translateExpression(op.expression)\n }\n ]);\n}\nfunction translateFrom(op) {\n const result = translateOperation(op.input);\n // Can't type as CONSTRUCT queries do not have `from` field in their type\n let obj = result;\n // project is nested in group object\n if (result.type === 'group') {\n obj = result.patterns[0];\n }\n obj.from = {\n default: op.default,\n named: op.named\n };\n return result;\n}\nfunction translateFilter(op) {\n return {\n type: 'group',\n patterns: util_1.default.flatten([\n translateOperation(op.input),\n { type: 'filter', expression: translateExpression(op.expression) }\n ])\n };\n}\nfunction translateGraph(op) {\n return {\n type: 'graph',\n patterns: util_1.default.flatten([translateOperation(op.input)]),\n name: op.name\n };\n}\nfunction translateGroup(op) {\n const input = translateOperation(op.input);\n const aggs = op.aggregates.map(translateBoundAggregate);\n context.aggregates.push(...aggs);\n // TODO: apply possible extends\n context.group.push(...op.variables);\n return input;\n}\nfunction translateJoin(op) {\n const arr = util_1.default.flatten(op.input.map(translateOperation));\n // Merge bgps\n // This is possible if one side was a path and the other a bgp for example\n return arr.reduce((result, val) => {\n if (val.type !== 'bgp' || result.length == 0 || result[result.length - 1].type !== 'bgp') {\n result.push(val);\n }\n else {\n result[result.length - 1].triples.push(...val.triples);\n }\n return result;\n }, []);\n}\nfunction translateLeftJoin(op) {\n const leftjoin = {\n type: 'optional',\n patterns: [\n translateOperation(op.input[1])\n ]\n };\n if (op.expression) {\n leftjoin.patterns.push({\n type: 'filter',\n expression: translateExpression(op.expression)\n });\n }\n leftjoin.patterns = util_1.default.flatten(leftjoin.patterns);\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n leftjoin\n ]);\n}\nfunction translateMinus(op) {\n let patterns = translateOperation(op.input[1]);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n {\n type: 'minus',\n patterns: patterns\n }\n ]);\n}\nfunction translateOrderBy(op) {\n context.order.push(...op.expressions);\n return translateOperation(op.input);\n}\nfunction translatePath(op) {\n return {\n type: 'bgp',\n triples: [{\n subject: op.subject,\n predicate: translatePathComponent(op.predicate),\n object: op.object\n }]\n };\n}\nfunction translatePattern(op) {\n return {\n subject: op.subject,\n predicate: op.predicate,\n object: op.object\n };\n}\nfunction replaceAggregatorVariables(s, map) {\n let st = util_1.default.isSimpleTerm(s) ? translateTerm(s) : s;\n if (typeof st === 'string') {\n if (map[st])\n return map[st];\n }\n else if (Array.isArray(s)) {\n s = s.map(e => replaceAggregatorVariables(e, map));\n }\n else {\n for (let key of Object.keys(s))\n s[key] = replaceAggregatorVariables(s[key], map);\n }\n return s;\n}\nfunction translateProject(op, type) {\n const result = {\n type: 'query',\n prefixes: {}\n };\n // Makes typing easier in some places\n const select = result;\n let variables;\n if (type === types.PROJECT) {\n result.queryType = 'SELECT';\n variables = op.variables;\n }\n else if (type === types.ASK) {\n result.queryType = 'ASK';\n }\n else if (type === types.DESCRIBE) {\n result.queryType = 'DESCRIBE';\n variables = op.terms;\n }\n // backup values in case of nested queries\n // everything in extend, group, etc. is irrelevant for this project call\n const extend = context.extend;\n const group = context.group;\n const aggregates = context.aggregates;\n const order = context.order;\n resetContext();\n context.project = true;\n let input = util_1.default.flatten([translateOperation(op.input)]);\n if (input.length === 1 && input[0].type === 'group')\n input = input[0].patterns;\n result.where = input;\n let aggregators = {};\n // these can not reference each other\n for (let agg of context.aggregates)\n aggregators[translateTerm(agg.variable)] = translateExpression(agg);\n // do these in reverse order since variables in one extend might apply to an expression in an other extend\n let extensions = {};\n for (let i = context.extend.length - 1; i >= 0; --i) {\n let e = context.extend[i];\n extensions[translateTerm(e.variable)] = replaceAggregatorVariables(translateExpression(e.expression), aggregators);\n }\n if (context.group.length > 0)\n select.group = context.group.map(variable => {\n let v = translateTerm(variable);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // make sure there is only 1 'AS' statement\n return {\n variable,\n expression: result\n };\n }\n return { expression: variable };\n });\n // descending expressions will already be in the correct format due to the structure of those\n if (context.order.length > 0)\n select.order = context.order.map(translateOperation).map(o => o.descending ? o : ({ expression: o }));\n // this needs to happen after the group because it might depend on variables generated there\n if (variables) {\n select.variables = variables.map((term) => {\n let v = translateTerm(term);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // remove used extensions so only unused ones remain\n return {\n variable: term,\n expression: result,\n };\n }\n return term;\n });\n // if the * didn't match any variables this would be empty\n if (select.variables.length === 0)\n select.variables = [new sparqljs_1.Wildcard()];\n }\n // It is possible that at this point some extensions have not yet been resolved.\n // These would be bind operations that are not used in a GROUP BY or SELECT body.\n // We still need to add them though, as they could be relevant to the other extensions.\n const extensionEntries = Object.entries(extensions);\n if (extensionEntries.length > 0) {\n select.where = select.where || [];\n for (const [key, value] of extensionEntries) {\n select.where.push({\n type: 'bind',\n variable: (0, rdf_string_1.stringToTerm)(key),\n expression: value\n });\n }\n }\n // convert filter to 'having' if it contains an aggregator variable\n // could always convert, but is nicer to use filter when possible\n if (result.where.length > 0 && result.where[result.where.length - 1].type === 'filter') {\n const filter = result.where[result.where.length - 1];\n if (objectContainsValues(filter, Object.keys(aggregators))) {\n select.having = util_1.default.flatten([replaceAggregatorVariables(filter.expression, aggregators)]);\n result.where.splice(-1);\n }\n }\n context.extend = extend;\n context.group = group;\n context.aggregates = aggregates;\n context.order = order;\n // subqueries need to be in a group, this will be removed again later for the root query\n return { type: 'group', patterns: [select] };\n}\nfunction objectContainsValues(o, vals) {\n if (util_1.default.isSimpleTerm(o))\n return vals.indexOf(translateTerm(o)) >= 0;\n if (Array.isArray(o))\n return o.some(e => objectContainsValues(e, vals));\n if (o === Object(o))\n return Object.keys(o).some(key => objectContainsValues(o[key], vals));\n return vals.indexOf(o) >= 0;\n}\nfunction translateReduced(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].reduced = true;\n return result;\n}\nfunction translateService(op) {\n let patterns = translateOperation(op.input);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return {\n type: 'service',\n // Typings are wrong, name can also be a variable\n name: op.name,\n silent: op.silent,\n patterns\n };\n}\nfunction translateSlice(op) {\n let result = translateOperation(op.input);\n // results can be nested in a group object\n let obj = result;\n if (result.type && result.type === 'group')\n obj = result.patterns[0];\n if (op.start !== 0)\n obj.offset = op.start;\n if (op.length !== undefined)\n obj.limit = op.length;\n return result;\n}\nfunction translateUnion(op) {\n return {\n type: 'union',\n patterns: op.input.map(translateOperation).map(arrayToPattern),\n };\n}\nfunction translateValues(op) {\n // TODO: check if handled correctly when outside of select block\n return {\n type: 'values',\n values: op.bindings.map(binding => {\n let result = {};\n for (let v of op.variables) {\n let s = `?${v.value}`;\n if (binding[s])\n result[s] = binding[s];\n else\n result[s] = undefined;\n }\n return result;\n })\n };\n}\n// PATH COMPONENTS\nfunction translateAlt(path) {\n const mapped = path.input.map(translatePathComponent);\n if (mapped.every(entry => 'pathType' in entry && entry.pathType === '!')) {\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: util_1.default.flatten(mapped.map(entry => entry.items))\n }]\n };\n }\n return {\n type: 'path',\n pathType: '|',\n items: mapped\n };\n}\nfunction translateInv(path) {\n if (path.path.type === types.NPS) {\n const inv = path.path.iris.map((iri) => {\n return {\n type: 'path',\n pathType: '^',\n items: [iri]\n };\n });\n if (inv.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: inv\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: inv\n }]\n };\n }\n return {\n type: 'path',\n pathType: '^',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateLink(path) {\n return path.iri;\n}\nfunction translateNps(path) {\n if (path.iris.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: path.iris\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: path.iris\n }]\n };\n}\nfunction translateOneOrMorePath(path) {\n return {\n type: 'path',\n pathType: '+',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateSeq(path) {\n return {\n type: 'path',\n pathType: '/',\n items: path.input.map(translatePathComponent)\n };\n}\nfunction translateZeroOrMorePath(path) {\n return {\n type: 'path',\n pathType: '*',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateZeroOrOnePath(path) {\n // Typings are missing '?' operator\n return {\n type: 'path',\n // Typings are missing this path\n pathType: '?',\n items: [translatePathComponent(path.path)]\n };\n}\n// UPDATE OPERATIONS\nfunction translateCompositeUpdate(op) {\n const updates = op.updates.map(update => {\n const result = translateOperation(update);\n return result.updates[0];\n });\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateDeleteInsert(op) {\n var _a;\n let where = op.where;\n let use = undefined;\n if (where && where.type === types.FROM) {\n let from = where;\n where = from.input;\n use = { default: from.default, named: from.named };\n }\n const updates = [{\n updateType: 'insertdelete',\n delete: convertUpdatePatterns(op.delete || []),\n insert: convertUpdatePatterns(op.insert || []),\n }];\n // Typings don't support 'using' yet\n if (use)\n updates[0].using = use;\n // corresponds to empty array in SPARQL.js\n if (!where || (where.type === types.BGP && where.patterns.length === 0))\n updates[0].where = [];\n else {\n const graphs = [];\n let result = translateOperation(removeQuadsRecursive(where, graphs));\n if (result.type === 'group')\n updates[0].where = result.patterns;\n else\n updates[0].where = [result];\n // graph might not be applied yet since there was no project\n // this can only happen if there was a single graph\n if (graphs.length > 0) {\n if (graphs.length !== 1)\n throw new Error('This is unexpected and might indicate an error in graph handling for updates.');\n // ignore if default graph\n if (((_a = graphs[0]) === null || _a === void 0 ? void 0 : _a.value) !== '')\n updates[0].where = [{ type: 'graph', patterns: updates[0].where, name: graphs[0] }];\n }\n }\n // not really necessary but can give cleaner looking queries\n if (!op.delete && !op.where) {\n updates[0].updateType = 'insert';\n delete updates[0].delete;\n delete updates[0].where;\n }\n else if (!op.insert && !op.where) {\n delete updates[0].insert;\n delete updates[0].where;\n if (op.delete.some(pattern => pattern.subject.termType === 'Variable' ||\n pattern.predicate.termType === 'Variable' ||\n pattern.object.termType === 'Variable'))\n updates[0].updateType = 'deletewhere';\n else\n updates[0].updateType = 'delete';\n }\n else if (!op.insert && op.where && op.where.type === 'bgp') {\n if ((0, rdf_isomorphic_1.isomorphic)(op.delete, op.where.patterns)) {\n delete updates[0].where;\n updates[0].updateType = 'deletewhere';\n }\n }\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateLoad(op) {\n // Typings are wrong, destiniation is optional\n const updates = [{ type: 'load', silent: Boolean(op.silent), source: op.source }];\n if (op.destination)\n updates[0].destination = op.destination;\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateClear(op) {\n return translateClearCreateDrop(op, 'clear');\n}\nfunction translateCreate(op) {\n return translateClearCreateDrop(op, 'create');\n}\nfunction translateDrop(op) {\n return translateClearCreateDrop(op, 'drop');\n}\nfunction translateClearCreateDrop(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n // Typings are wrong, type is not required, see for example \"clear-drop\" test\n if (op.source === 'DEFAULT')\n updates[0].graph = { default: true };\n else if (op.source === 'NAMED')\n updates[0].graph = { named: true };\n else if (op.source === 'ALL')\n updates[0].graph = { all: true };\n else\n updates[0].graph = { type: 'graph', name: op.source };\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateAdd(op) {\n return translateUpdateGraphShortcut(op, 'add');\n}\nfunction translateMove(op) {\n return translateUpdateGraphShortcut(op, 'move');\n}\nfunction translateCopy(op) {\n return translateUpdateGraphShortcut(op, 'copy');\n}\nfunction translateUpdateGraphShortcut(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n updates[0].source = op.source === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.source };\n updates[0].destination = op.destination === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.destination };\n return { prefixes: {}, type: 'update', updates };\n}\n// similar to removeQuads but more simplified for UPDATEs\nfunction convertUpdatePatterns(patterns) {\n if (!patterns)\n return [];\n const graphs = {};\n patterns.forEach(pattern => {\n const graph = pattern.graph.value;\n if (!graphs[graph])\n graphs[graph] = [];\n graphs[graph].push(pattern);\n });\n return Object.keys(graphs).map(graph => {\n if (graph === '')\n return { type: 'bgp', triples: graphs[graph].map(translatePattern) };\n return { type: 'graph', triples: graphs[graph].map(translatePattern), name: graphs[graph][0].graph };\n });\n}\nfunction removeQuads(op) {\n return removeQuadsRecursive(op, []);\n}\n// remove quads\nfunction removeQuadsRecursive(op, graphs) {\n if (Array.isArray(op))\n return op.map(sub => removeQuadsRecursive(sub, graphs));\n if (!op.type)\n return op;\n // UPDATE operations with Patterns handle graphs a bit differently\n if (op.type === types.DELETE_INSERT)\n return op;\n if ((op.type === types.PATTERN || op.type === types.PATH) && op.graph) {\n graphs.push(op.graph);\n // Remove non-default graphs\n if (op.graph.name !== '')\n return op.type === types.PATTERN ?\n factory.createPattern(op.subject, op.predicate, op.object) :\n factory.createPath(op.subject, op.predicate, op.object);\n return op;\n }\n const result = {};\n const keyGraphs = {}; // unique graph per key\n const globalNames = {}; // track all the unique graph names for the entire Operation\n for (let key of Object.keys(op)) {\n const newGraphs = [];\n result[key] = removeQuadsRecursive(op[key], newGraphs);\n if (newGraphs.length > 0) {\n keyGraphs[key] = newGraphs;\n for (const graph of newGraphs) {\n globalNames[graph.value] = graph;\n }\n }\n }\n const graphNameSet = Object.keys(globalNames);\n if (graphNameSet.length > 0) {\n // We also need to create graph statement if we are at the edge of certain operations\n if (graphNameSet.length === 1 && ![types.PROJECT, types.SERVICE].includes(op.type))\n graphs.push(globalNames[graphNameSet[0]]);\n else if (op.type === types.BGP) {\n // This is the specific case that got changed because of using quads.\n return splitBgpToGraphs(op, keyGraphs.patterns);\n }\n else {\n // multiple graphs (or project), need to create graph objects for them\n for (let key of Object.keys(keyGraphs)) {\n const value = result[key];\n if (Array.isArray(value))\n result[key] = value.map((child, idx) => keyGraphs[key][0].value === '' ? child : factory.createGraph(child, keyGraphs[key][idx]));\n else if (keyGraphs[key][0].value !== '')\n result[key] = factory.createGraph(value, keyGraphs[key][0]);\n }\n }\n }\n return result;\n}\n// `graphs` should be an array of length identical to `op.patterns`, containing the corresponding graph for each triple.\nfunction splitBgpToGraphs(op, graphs) {\n var _a;\n // Split patterns per graph\n const graphPatterns = {};\n for (let i = 0; i < op.patterns.length; ++i) {\n const pattern = op.patterns[i];\n const graphName = graphs[i].value;\n graphPatterns[graphName] = (_a = graphPatterns[graphName]) !== null && _a !== void 0 ? _a : { patterns: [], graph: graphs[i] };\n graphPatterns[graphName].patterns.push(pattern);\n }\n // Create graph objects for every cluster\n let children = [];\n for (const [graphName, { patterns, graph }] of Object.entries(graphPatterns)) {\n const bgp = factory.createBgp(patterns);\n children.push(graphName === '' ? bgp : factory.createGraph(bgp, graph));\n }\n // Join the graph objects\n let join = children[0];\n for (let i = 1; i < children.length; ++i)\n join = factory.createJoin([join, children[i]]);\n return join;\n}\n//# sourceMappingURL=sparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst equal = require(\"fast-deep-equal/es6\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst Parser = require('sparqljs').Parser;\nconst types = Algebra.types;\nlet variables = new Set();\nlet varCount = 0;\nlet useQuads = false;\nlet factory;\n/**\n * Translates the given SPARQL query to SPARQL Algebra.\n * @param sparql - Either a SPARQL string or an object generated by sparql.js\n * @param options - Optional options object. Current options:\n * * dataFactory: The Datafactory used to generate terms. Default @rdfjs/data-model.\n * * quads: Boolean indicating whether triples should be converted to Quads (consumes GRAPH statements). Default false.\n * * prefixes: Pre-defined prefixes for the given query. Default empty.\n * * baseIRI: Base IRI that should be used for the query. Default undefined (throws error if required).\n * @returns {Operation}\n */\nfunction translate(sparql, options) {\n options = options || {};\n factory = new factory_1.default(options.dataFactory);\n let query;\n if (isString(sparql)) {\n let parser = new Parser(options);\n // resets the identifier counter used for blank nodes\n // provides nicer and more consistent output if there are multiple calls\n parser._resetBlanks();\n query = parser.parse(sparql);\n }\n else {\n query = sparql;\n }\n return translateQuery(query, options.quads, options.blankToVariable);\n}\nexports.default = translate;\nfunction translateQuery(sparql, quads, blankToVariable) {\n // this set is filled in during the inScopeVariables call\n variables = new Set();\n varCount = 0;\n useQuads = Boolean(quads);\n // Assume this is an empty query\n if (!sparql.type)\n return factory.createNop();\n if (sparql.type !== 'query' && sparql.type !== 'update')\n throw new Error('Translate only works on complete query or update objects.');\n let res;\n // find ALL variables here to fill `variables` array\n findAllVariables(sparql);\n if (sparql.type === 'query') {\n // group and where are identical, having only 1 makes parsing easier, can be undefined in DESCRIBE\n const group = { type: 'group', patterns: sparql.where || [] };\n res = translateGraphPattern(group);\n res = translateAggregates(sparql, res);\n }\n else if (sparql.type === 'update') {\n res = translateUpdate(sparql);\n }\n if (blankToVariable) {\n res = translateBlankNodesToVariables(res);\n }\n return res;\n}\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isTerm(term) {\n return Boolean(term === null || term === void 0 ? void 0 : term.termType);\n}\n// This is not completely correct but this way we also catch SPARQL.js triples\nfunction isTriple(triple) {\n return triple.subject && triple.predicate && triple.object;\n}\nfunction isVariable(term) {\n return (term === null || term === void 0 ? void 0 : term.termType) === 'Variable';\n}\n// Will be used to make sure new variables don't overlap\nfunction findAllVariables(thingy) {\n if (isTerm(thingy)) {\n if (isVariable(thingy)) {\n // Variables don't store the `?`\n variables.add(`?${thingy.value}`);\n }\n }\n else if (Array.isArray(thingy)) {\n for (const entry of thingy)\n findAllVariables(entry);\n }\n else if (thingy && typeof thingy === 'object') {\n for (let key of Object.keys(thingy)) {\n // Some variables are hidden in keys (specifically for VALUES)\n if (key.startsWith('?')) {\n variables.add(key);\n }\n else if (key.startsWith('$')) {\n variables.add(`?${key.slice(1)}`);\n }\n findAllVariables(thingy[key]);\n }\n }\n}\n// 18.2.1\nfunction inScopeVariables(thingy) {\n let inScope = {};\n if (isTriple(thingy)) {\n // Note that this could both be an actual Quad or a SPARQL.js triple (without graph)\n const result = [\n inScopeVariables(thingy.subject),\n inScopeVariables(thingy.predicate),\n inScopeVariables(thingy.object),\n thingy.graph ? inScopeVariables(thingy.graph) : {}\n ];\n Object.assign(inScope, ...result);\n }\n else if (isTerm(thingy)) {\n if (isVariable(thingy))\n inScope[thingy.value] = thingy;\n }\n else if (thingy.type === 'bgp') {\n // Slightly cheating but this is a subset of what we support so is fine\n const quads = thingy.triples;\n Object.assign(inScope, ...quads.map(inScopeVariables));\n }\n else if (thingy.type === 'path') {\n // A path predicate should not have variables but just iterating so we could theoretically support this\n Object.assign(inScope, ...thingy.items.map(inScopeVariables));\n }\n else if (thingy.type === 'group' || thingy.type === 'union' || thingy.type === 'optional') {\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'service' || thingy.type === 'graph') {\n Object.assign(inScope, inScopeVariables(thingy.name));\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'bind') {\n Object.assign(inScope, inScopeVariables(thingy.variable));\n }\n else if (thingy.type === 'values') {\n if (thingy.values.length > 0) {\n const vars = Object.keys(thingy.values[0]).map(v => factory.createTerm(v));\n Object.assign(inScope, ...vars.map(inScopeVariables));\n }\n }\n else if (thingy.type === 'query') {\n if (thingy.queryType === 'SELECT' || thingy.queryType === 'DESCRIBE') {\n if (thingy.where && thingy.variables.some(util_1.default.isWildcard))\n Object.assign(inScope, ...thingy.where.map(inScopeVariables));\n for (const v of thingy.variables) {\n if (isVariable(v))\n Object.assign(inScope, inScopeVariables(v));\n else if (v.variable)\n Object.assign(inScope, inScopeVariables(v.variable));\n }\n if (thingy.queryType === 'SELECT') {\n if (thingy.group) {\n // Grouping can be a VariableExpression, typings are wrong\n for (const g of thingy.group) {\n if (g.variable)\n Object.assign(inScope, inScopeVariables(g.variable));\n }\n }\n if (thingy.values) {\n const values = { type: 'values', values: thingy.values };\n Object.assign(inScope, inScopeVariables(values));\n }\n }\n }\n }\n return inScope;\n}\nfunction translateGraphPattern(thingy) {\n // 18.2.2.1\n // already done by sparql parser\n // 18.2.2.3\n // 18.2.2.4\n // 18.2.2.5\n // In Sparql.js, a group with a single BGP in it is a single object.\n if (thingy.type === 'bgp') {\n return translateBgp(thingy);\n }\n // 18.2.2.6 - GroupOrUnionGraphPattern\n if (thingy.type === 'union')\n return factory.createUnion(thingy.patterns.map((p) => {\n // sparqljs doesn't always indicate the children are groups\n if (p.type !== 'group')\n p = { type: 'group', patterns: [p] };\n return translateGraphPattern(p);\n }));\n // 18.2.2.6 - GraphGraphPattern\n if (thingy.type === 'graph') {\n // Sparql.js combines the group graph pattern and the graph itself in the same object.\n // We split here so the group graph pattern can be interpreted correctly.\n const group = { type: 'group', patterns: thingy.patterns };\n let result = translateGraphPattern(group);\n // Output depends on if we use quads or not\n if (useQuads)\n result = recurseGraph(result, thingy.name);\n else\n result = factory.createGraph(result, thingy.name);\n return result;\n }\n // 18.2.2.6 - InlineData\n if (thingy.type === 'values')\n return translateInlineData(thingy);\n // 18.2.2.6 - SubSelect\n if (thingy.type === 'query')\n return translateQuery(thingy, useQuads, false);\n if (thingy.type === 'group') {\n // 18.2.2.2\n let filters = [];\n let nonfilters = [];\n for (let pattern of thingy.patterns)\n (pattern.type === 'filter' ? filters : nonfilters).push(pattern);\n // 18.2.2.6 - GroupGraphPattern\n let result = nonfilters.reduce(accumulateGroupGraphPattern, factory.createBgp([]));\n // 18.2.2.7\n let expressions = filters.map(filter => translateExpression(filter.expression));\n if (expressions.length > 0)\n result = factory.createFilter(result, expressions.reduce((acc, exp) => factory.createOperatorExpression('&&', [acc, exp])));\n return result;\n }\n throw new Error(`Unexpected type: ${thingy.type}`);\n}\nfunction translateExpression(exp) {\n if (util_1.default.isSimpleTerm(exp))\n return factory.createTermExpression(exp);\n if (util_1.default.isQuad(exp)) {\n if (util_1.default.hasQuadVariables(exp))\n return factory.createOperatorExpression('triple', [\n translateExpression(exp.subject),\n translateExpression(exp.predicate),\n translateExpression(exp.object),\n ]);\n else\n return factory.createTermExpression(exp);\n }\n if (util_1.default.isWildcard(exp))\n return factory.createWildcardExpression();\n if ('aggregation' in exp)\n return factory.createAggregateExpression(exp.aggregation, translateExpression(exp.expression), Boolean(exp.distinct), exp.separator);\n if ('function' in exp)\n // Outdated typings\n return factory.createNamedExpression(exp.function, exp.args.map(translateExpression));\n if ('operator' in exp) {\n if (exp.operator === 'exists' || exp.operator === 'notexists')\n return factory.createExistenceExpression(exp.operator === 'notexists', translateGraphPattern(exp.args[0]));\n if (exp.operator === 'in' || exp.operator === 'notin')\n exp.args = [exp.args[0]].concat(exp.args[1]); // sparql.js uses 2 arguments with the second one being a list\n return factory.createOperatorExpression(exp.operator, exp.args.map(translateExpression));\n }\n throw new Error(`Unknown expression: ${JSON.stringify(exp)}`);\n}\nfunction translateBgp(thingy) {\n let patterns = [];\n let joins = [];\n for (let t of thingy.triples) {\n if ('pathType' in t.predicate) {\n // translatePath returns a mix of Quads and Paths\n let path = translatePath(t);\n for (let p of path) {\n if (p.type === types.PATH) {\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n patterns = [];\n joins.push(p);\n }\n else\n patterns.push(p);\n }\n }\n else\n patterns.push(translateQuad(t));\n }\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n if (joins.length === 1)\n return joins[0];\n return factory.createJoin(joins);\n}\nfunction translatePath(triple) {\n let sub = triple.subject;\n let pred = translatePathPredicate(triple.predicate);\n let obj = triple.object;\n return simplifyPath(sub, pred, obj);\n}\nfunction translatePathPredicate(predicate) {\n if (util_1.default.isSimpleTerm(predicate)) {\n if (predicate.termType === 'NamedNode')\n return factory.createLink(predicate);\n else\n throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(predicate)}`);\n }\n if (predicate.pathType === '^')\n return factory.createInv(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '!') {\n // negation is either over a single predicate or a list of disjuncted properties\n let normals = [];\n let inverted = [];\n let items;\n if ('pathType' in predicate.items[0] && predicate.items[0].pathType === '|')\n items = predicate.items[0].items; // the | element\n else\n items = predicate.items;\n for (let item of items) {\n if (util_1.default.isSimpleTerm(item))\n normals.push(item);\n else if (item.pathType === '^')\n inverted.push(item.items[0]);\n else\n throw new Error(`Unexpected item: ${JSON.stringify(item)}`);\n }\n // NPS elements do not have the LINK function\n let normalElement = factory.createNps(normals);\n let invertedElement = factory.createInv(factory.createNps(inverted));\n if (inverted.length === 0)\n return normalElement;\n if (normals.length === 0)\n return invertedElement;\n return factory.createAlt([normalElement, invertedElement,]);\n }\n if (predicate.pathType === '/')\n return factory.createSeq(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '|')\n return factory.createAlt(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '*')\n return factory.createZeroOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '+')\n return factory.createOneOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '?')\n return factory.createZeroOrOnePath(translatePathPredicate(predicate.items[0]));\n throw new Error(`Unable to translate path expression ${JSON.stringify(predicate)}`);\n}\nfunction simplifyPath(subject, predicate, object) {\n if (predicate.type === types.LINK)\n return [factory.createPattern(subject, predicate.iri, object)];\n if (predicate.type === types.INV)\n return simplifyPath(object, predicate.path, subject);\n if (predicate.type === types.SEQ) {\n let joiner = subject;\n return util_1.default.flatten(predicate.input.map((subOp, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? object : generateFreshVar();\n const simplifiedPath = simplifyPath(joiner, subOp, nextJoiner);\n if (nextJoiner.termType === 'Variable') {\n joiner = nextJoiner;\n }\n return simplifiedPath;\n }));\n }\n return [factory.createPath(subject, predicate, object)];\n}\nfunction generateFreshVar() {\n let v = `?var${varCount++}`;\n if (variables.has(v))\n return generateFreshVar();\n variables.add(v);\n return factory.createTerm(v);\n}\nfunction translateQuad(quad) {\n if ('pathType' in quad.predicate) {\n throw new Error('Trying to translate property path to quad.');\n }\n // Graphs are needed here\n // TODO: investigate if typings are wrong or if we internally add graphs to these\n return factory.createPattern(quad.subject, quad.predicate, quad.object, quad.graph);\n}\nlet typeVals = Object.values(types);\nfunction recurseGraph(thingy, graph, replacement) {\n if (thingy.type === types.GRAPH) {\n if (replacement) {\n // At this point we would lose track of the replacement which would result in incorrect results\n // This would indicate the library is not being used as intended though\n throw new Error('Recursing through nested GRAPH statements with a replacement is impossible.');\n }\n // In case there were nested GRAPH statements that were not recursed yet for some reason\n thingy = recurseGraph(thingy.input, thingy.name);\n }\n else if (thingy.type === types.SERVICE) {\n // Service blocks are not affected by enclosing GRAPH statements, so nothing is modified in this block.\n // See https://github.com/joachimvh/SPARQLAlgebra.js/pull/104#issuecomment-1838016303\n }\n else if (thingy.type === types.BGP)\n thingy.patterns = thingy.patterns.map(quad => {\n if (replacement) {\n if (quad.subject.equals(graph))\n quad.subject = replacement;\n if (quad.predicate.equals(graph))\n quad.predicate = replacement;\n if (quad.object.equals(graph))\n quad.object = replacement;\n }\n if (quad.graph.termType === 'DefaultGraph')\n quad.graph = graph;\n return quad;\n });\n else if (thingy.type === types.PATH) {\n if (replacement) {\n if (thingy.subject.equals(graph))\n thingy.subject = replacement;\n if (thingy.object.equals(graph))\n thingy.object = replacement;\n }\n if (thingy.graph.termType === 'DefaultGraph')\n thingy.graph = graph;\n }\n // need to replace variables in subqueries should the graph also be a variable of the same name\n // unless the subquery projects that variable\n else if (thingy.type === types.PROJECT && !replacement) {\n if (!thingy.variables.some(v => v.equals(graph)))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n // this can happen if the query extends an expression to the name of the graph\n // since the extend happens here there should be no further occurrences of this name\n // if there are it's the same situation as above\n else if (thingy.type === types.EXTEND && !replacement) {\n if (thingy.variable.equals(graph))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n else {\n for (let key of Object.keys(thingy)) {\n if (Array.isArray(thingy[key]))\n thingy[key] = thingy[key].map((x) => recurseGraph(x, graph, replacement));\n else if (typeVals.indexOf(thingy[key].type) >= 0) // can't do instanceof on an interface\n thingy[key] = recurseGraph(thingy[key], graph, replacement);\n else if (replacement && isVariable(thingy[key]) && thingy[key].equals(graph))\n thingy[key] = replacement;\n }\n }\n return thingy;\n}\nfunction accumulateGroupGraphPattern(G, E) {\n if (E.type === 'optional') {\n // optional input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n if (A.type === types.FILTER) {\n G = factory.createLeftJoin(G, A.input, A.expression);\n }\n else\n G = factory.createLeftJoin(G, A);\n }\n else if (E.type === 'minus') {\n // minus input needs to be interpreted as a group\n const A = translateGraphPattern({ type: 'group', patterns: E.patterns });\n G = factory.createMinus(G, A);\n }\n else if (E.type === 'bind')\n G = factory.createExtend(G, E.variable, translateExpression(E.expression));\n else if (E.type === 'service') {\n // transform to group so childnodes get parsed correctly\n const group = { type: 'group', patterns: E.patterns };\n const A = factory.createService(translateGraphPattern(group), E.name, E.silent);\n G = simplifiedJoin(G, A);\n }\n else {\n const A = translateGraphPattern(E);\n G = simplifiedJoin(G, A);\n }\n return G;\n}\nfunction simplifiedJoin(G, A) {\n // Note: this is more simplification than requested in 18.2.2.8, but no reason not to do it.\n if (G.type === types.BGP && A.type === types.BGP)\n G = factory.createBgp([...G.patterns, ...A.patterns]);\n // 18.2.2.8 (simplification)\n else if (G.type === types.BGP && G.patterns.length === 0)\n G = A;\n else if (A.type === types.BGP && A.patterns.length === 0) { } // do nothing\n else\n G = factory.createJoin([G, A]);\n return G;\n}\nfunction translateInlineData(values) {\n let variables = (values.values.length === 0 ? [] : Object.keys(values.values[0])).map(factory.createTerm.bind(factory));\n let bindings = values.values.map((binding) => {\n let keys = Object.keys(binding);\n keys = keys.filter(k => binding[k] !== undefined);\n let map = {};\n for (let key of keys)\n map[key] = binding[key];\n return map;\n });\n return factory.createValues(variables, bindings);\n}\n// --------------------------------------- AGGREGATES\nfunction translateAggregates(query, res) {\n // Typings for ConstructQuery are wrong and missing several fields so we will cast quite often to SelectQuery to have partial typings\n const select = query;\n // 18.2.4.1\n const E = [];\n const A = {};\n select.variables = select.variables && select.variables.map(val => mapAggregate(val, A));\n select.having = select.having && select.having.map(val => mapAggregate(val, A));\n select.order = select.order && select.order.map(val => mapAggregate(val, A));\n // if there are any aggregates or if we have a groupBy (both result in a GROUP)\n if (select.group || Object.keys(A).length > 0) {\n const aggregates = Object.keys(A).map(v => translateBoundAggregate(A[v], factory.createTerm(v)));\n const vars = [];\n if (select.group) {\n for (const e of select.group) {\n if (util_1.default.isSimpleTerm(e.expression)) {\n vars.push(e.expression); // this will always be a var, otherwise sparql would be invalid\n }\n else {\n // Incorrect typings, e can have a variable, see for example group-variable test in sparql.js\n const v = 'variable' in e ? e.variable : generateFreshVar();\n res = factory.createExtend(res, v, translateExpression(e.expression));\n vars.push(v);\n }\n }\n }\n res = factory.createGroup(res, vars, aggregates);\n }\n // 18.2.4.2\n if (select.having)\n for (let filter of select.having)\n res = factory.createFilter(res, translateExpression(filter));\n // 18.2.4.3\n if (query.values)\n res = factory.createJoin([res, translateInlineData(query)]);\n // 18.2.4.4\n let PV = [];\n if (query.queryType === 'SELECT' || query.queryType === 'DESCRIBE') {\n // Sort variables for consistent output\n if (query.variables.some((e) => e && util_1.default.isWildcard(e)))\n PV = Object.values(inScopeVariables(query))\n .sort((left, right) => left.value.localeCompare(right.value));\n else {\n // Wildcard has been filtered out above\n for (let v of query.variables) {\n // can have non-variables with DESCRIBE\n if (isVariable(v) || !('variable' in v))\n PV.push(v);\n else if (v.variable) // ... AS ?x\n {\n PV.push(v.variable);\n E.push(v);\n }\n }\n }\n }\n // TODO: Jena simplifies by having a list of extends\n for (let v of E)\n res = factory.createExtend(res, v.variable, translateExpression(v.expression));\n // 18.2.5\n // not using toList and toMultiset\n // 18.2.5.1\n if (select.order)\n res = factory.createOrderBy(res, select.order.map((exp) => {\n let result = translateExpression(exp.expression);\n if (exp.descending)\n result = factory.createOperatorExpression('desc', [result]);\n return result;\n }));\n // 18.2.5.2\n // construct does not need a project (select, ask and describe do)\n if (query.queryType === 'SELECT')\n // Named nodes are only possible in a DESCRIBE so this cast is safe\n res = factory.createProject(res, PV);\n // 18.2.5.3\n if (select.distinct)\n res = factory.createDistinct(res);\n // 18.2.5.4\n if (select.reduced)\n res = factory.createReduced(res);\n // NEW: support for ask/construct/describe queries\n if (query.queryType === 'CONSTRUCT')\n res = factory.createConstruct(res, (query.template || []).map(translateQuad));\n else if (query.queryType === 'ASK')\n res = factory.createAsk(res);\n else if (query.queryType === 'DESCRIBE')\n res = factory.createDescribe(res, PV);\n // Slicing needs to happen after construct/describe\n // 18.2.5.5\n if (select.offset || select.limit)\n res = factory.createSlice(res, select.offset || 0, select.limit);\n if (select.from)\n res = factory.createFrom(res, select.from.default, select.from.named);\n return res;\n}\n// rewrites some of the input sparql object to make use of aggregate variables\nfunction mapAggregate(thingy, aggregates) {\n if ('type' in thingy && thingy.type === 'aggregate') {\n let found = false;\n let v;\n for (let key of Object.keys(aggregates)) {\n if (equal(aggregates[key], thingy)) {\n v = factory.createTerm(key);\n found = true;\n break;\n }\n }\n if (!found) {\n v = generateFreshVar();\n aggregates[(0, rdf_string_1.termToString)(v)] = thingy;\n }\n return v;\n }\n // non-aggregate expression\n if ('expression' in thingy && thingy.expression)\n return { ...thingy, expression: mapAggregate(thingy.expression, aggregates) };\n if ('args' in thingy && thingy.args)\n return { ...thingy, args: thingy.args.map(subthingy => mapAggregate(subthingy, aggregates)) };\n // Normal variable/wildcard\n return thingy;\n}\nfunction translateBoundAggregate(thingy, v) {\n if (thingy.type !== 'aggregate' || !thingy.aggregation)\n throw new Error(`Unexpected input: ${JSON.stringify(thingy)}`);\n const A = translateExpression(thingy);\n A.variable = v;\n return A;\n}\nfunction translateUpdate(thingy) {\n if (thingy.updates.length === 1)\n return translateSingleUpdate(thingy.updates[0]);\n return factory.createCompositeUpdate(thingy.updates.map(translateSingleUpdate));\n}\nfunction translateSingleUpdate(thingy) {\n if ('type' in thingy) {\n if (thingy.type === 'load')\n return translateUpdateGraphLoad(thingy);\n if (thingy.type === 'clear' || thingy.type === 'create' || thingy.type === 'drop')\n return translateUpdateGraph(thingy);\n if (thingy.type === 'add' || thingy.type === 'copy' || thingy.type === 'move')\n return translateUpdateGraphShortcut(thingy);\n }\n else if (thingy.updateType === 'insertdelete' || thingy.updateType === 'deletewhere' || thingy.updateType === 'delete' || thingy.updateType === 'insert')\n return translateInsertDelete(thingy);\n throw new Error(`Unknown update type ${JSON.stringify(thingy)}`);\n}\nfunction translateInsertDelete(thingy) {\n if (!useQuads)\n throw new Error('INSERT/DELETE operations are only supported with quads option enabled');\n let deleteTriples = [];\n let insertTriples = [];\n let where;\n if (thingy.delete)\n deleteTriples = util_1.default.flatten(thingy.delete.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.insert)\n insertTriples = util_1.default.flatten(thingy.insert.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.where && thingy.where.length > 0) {\n where = translateGraphPattern({ type: 'group', patterns: thingy.where });\n // Wrong typings, see test \"using\" in Sparql.js\n const use = thingy.using;\n if (use)\n where = factory.createFrom(where, use.default, use.named);\n else if (thingy.graph)\n // This is equivalent\n where = recurseGraph(where, thingy.graph);\n }\n else if (thingy.updateType === 'deletewhere' && deleteTriples.length > 0) {\n where = factory.createBgp(deleteTriples);\n }\n return factory.createDeleteInsert(deleteTriples.length > 0 ? deleteTriples : undefined, insertTriples.length > 0 ? insertTriples : undefined, where);\n}\n// UPDATE parsing will always return quads and have no GRAPH elements\nfunction translateUpdateTriplesBlock(thingy, graph) {\n let currentGraph = graph;\n if (thingy.type === 'graph')\n currentGraph = thingy.name;\n let currentTriples = thingy.triples;\n if (currentGraph)\n currentTriples = currentTriples.map(triple => Object.assign(triple, { graph: currentGraph }));\n return currentTriples.map(translateQuad);\n}\nfunction translateUpdateGraph(thingy) {\n let source;\n if (util_1.default.isSimpleTerm(thingy.graph))\n source = thingy.graph;\n else if (thingy.graph.all)\n source = 'ALL';\n else if (thingy.graph.default)\n source = 'DEFAULT';\n else if (thingy.graph.named)\n source = 'NAMED';\n else\n source = thingy.graph.name;\n switch (thingy.type) {\n case 'clear': return factory.createClear(source, thingy.silent);\n case 'create': return factory.createCreate(source, thingy.silent);\n case 'drop': return factory.createDrop(source, thingy.silent);\n }\n}\nfunction translateUpdateGraphLoad(thingy) {\n return factory.createLoad(thingy.source, thingy.destination, thingy.silent);\n}\nfunction translateUpdateGraphShortcut(thingy) {\n const source = thingy.source.default ? 'DEFAULT' : thingy.source.name;\n const destination = thingy.destination.default ? 'DEFAULT' : thingy.destination.name;\n switch (thingy.type) {\n case 'copy': return factory.createCopy(source, destination, thingy.silent);\n case 'move': return factory.createMove(source, destination, thingy.silent);\n case 'add': return factory.createAdd(source, destination, thingy.silent);\n }\n}\nfunction translateBlankNodesToVariables(res) {\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(variables).reduce((acc, variable) => {\n acc[variable] = true;\n return acc;\n }, {});\n return util_1.default.mapOperation(res, {\n [Algebra.types.DELETE_INSERT]: (op) => {\n // Make sure blank nodes remain in the INSERT block, but do update the WHERE block\n return {\n result: factory.createDeleteInsert(op.delete, op.insert, op.where && translateBlankNodesToVariables(op.where)),\n recurse: false,\n };\n },\n [Algebra.types.PATH]: (op, factory) => {\n return {\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.PATTERN]: (op, factory) => {\n return {\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT]: (op) => {\n // Blank nodes in CONSTRUCT templates must be maintained\n return {\n result: factory.createConstruct(translateBlankNodesToVariables(op.input), op.template),\n recurse: false,\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = util_1.default.createUniqueVariable(term.value, variablesRaw, factory.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n}\n//# sourceMappingURL=sparqlAlgebra.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst algebra_1 = require(\"./algebra\");\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst rdf_terms_1 = require(\"rdf-terms\");\nclass Util {\n /**\n * Flattens an array of arrays to an array.\n * @param arr - Array of arrays\n */\n static flatten(arr) {\n return Array.prototype.concat(...arr).filter(x => x);\n }\n /**\n * Outputs a JSON object corresponding to the input algebra-like.\n */\n static objectify(algebra) {\n if (algebra.termType) {\n if (algebra.termType === 'Quad') {\n return {\n type: 'pattern',\n termType: 'Quad',\n subject: Util.objectify(algebra.subject),\n predicate: Util.objectify(algebra.predicate),\n object: Util.objectify(algebra.object),\n graph: Util.objectify(algebra.graph),\n };\n }\n else {\n let result = { termType: algebra.termType, value: algebra.value };\n if (algebra.language)\n result.language = algebra.language;\n if (algebra.datatype)\n result.datatype = Util.objectify(algebra.datatype);\n return result;\n }\n }\n if (Array.isArray(algebra))\n return algebra.map(e => Util.objectify(e));\n if (algebra === Object(algebra)) {\n let result = {};\n for (let key of Object.keys(algebra))\n result[key] = Util.objectify(algebra[key]);\n return result;\n }\n return algebra;\n }\n /**\n * Detects all in-scope variables.\n * In practice this means iterating through the entire algebra tree, finding all variables,\n * and stopping when a project function is found.\n * @param {Operation} op - Input algebra tree.\n * @returns {Variable[]} - List of unique in-scope variables.\n */\n static inScopeVariables(op) {\n const variables = [];\n function addVariable(v) {\n if (!variables.find(v2 => v.value === v2.value))\n variables.push(v);\n }\n function recurseTerm(quad) {\n if (quad.subject.termType === 'Variable')\n addVariable(quad.subject);\n if (quad.predicate.termType === 'Variable')\n addVariable(quad.predicate);\n if (quad.object.termType === 'Variable')\n addVariable(quad.object);\n if (quad.graph.termType === 'Variable')\n addVariable(quad.graph);\n if (quad.subject.termType === 'Quad')\n recurseTerm(quad.subject);\n if (quad.predicate.termType === 'Quad')\n recurseTerm(quad.predicate);\n if (quad.object.termType === 'Quad')\n recurseTerm(quad.object);\n if (quad.graph.termType === 'Quad')\n recurseTerm(quad.graph);\n }\n // https://www.w3.org/TR/sparql11-query/#variableScope\n Util.recurseOperation(op, {\n [algebra_1.types.EXPRESSION]: (op) => {\n if (op.expressionType === algebra_1.expressionTypes.AGGREGATE && op.variable) {\n addVariable(op.variable);\n }\n return true;\n },\n [algebra_1.types.EXTEND]: (op) => {\n addVariable(op.variable);\n return true;\n },\n [algebra_1.types.GRAPH]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.GROUP]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n [algebra_1.types.PATH]: (op) => {\n if (op.subject.termType === 'Variable')\n addVariable(op.subject);\n if (op.object.termType === 'Variable')\n addVariable(op.object);\n if (op.graph.termType === 'Variable')\n addVariable(op.graph);\n if (op.subject.termType === 'Quad')\n recurseTerm(op.subject);\n if (op.object.termType === 'Quad')\n recurseTerm(op.object);\n if (op.graph.termType === 'Quad')\n recurseTerm(op.graph);\n return true;\n },\n [algebra_1.types.PATTERN]: (op) => {\n recurseTerm(op);\n return true;\n },\n [algebra_1.types.PROJECT]: (op) => {\n op.variables.forEach(addVariable);\n return false;\n },\n [algebra_1.types.SERVICE]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.VALUES]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n });\n return variables;\n }\n /**\n * Recurses through the given algebra tree\n * A map of callback functions can be provided for individual Operation types to gather data.\n * The return value of those callbacks should indicate whether recursion should be applied or not.\n * Making modifications will change the original input object.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation) => boolean } callbacks - A map of required callback Operations.\n */\n static recurseOperation(op, callbacks) {\n let result = op;\n let doRecursion = true;\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n doRecursion = callback(op);\n if (!doRecursion)\n return;\n let recurseOp = (op) => Util.recurseOperation(op, callbacks);\n switch (result.type) {\n case algebra_1.types.ALT:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.ASK:\n recurseOp(result.input);\n break;\n case algebra_1.types.BGP:\n result.patterns.forEach(recurseOp);\n break;\n case algebra_1.types.CONSTRUCT:\n recurseOp(result.input);\n result.template.map(recurseOp);\n break;\n case algebra_1.types.DESCRIBE:\n recurseOp(result.input);\n break;\n case algebra_1.types.DISTINCT:\n recurseOp(result.input);\n break;\n case algebra_1.types.EXPRESSION:\n if (result.expressionType === algebra_1.expressionTypes.EXISTENCE) {\n recurseOp(result.input);\n }\n break;\n case algebra_1.types.EXTEND:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FILTER:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FROM:\n recurseOp(result.input);\n break;\n case algebra_1.types.GRAPH:\n recurseOp(result.input);\n break;\n case algebra_1.types.GROUP:\n recurseOp(result.input);\n result.aggregates.forEach(recurseOp);\n break;\n case algebra_1.types.INV:\n recurseOp(result.path);\n break;\n case algebra_1.types.JOIN:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.LEFT_JOIN:\n result.input.map(recurseOp);\n if (result.expression)\n recurseOp(result.expression);\n break;\n case algebra_1.types.LINK:\n break;\n case algebra_1.types.MINUS:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.NOP:\n break;\n case algebra_1.types.NPS:\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ORDER_BY:\n recurseOp(result.input);\n result.expressions.forEach(recurseOp);\n break;\n case algebra_1.types.PATH:\n recurseOp(result.predicate);\n break;\n case algebra_1.types.PATTERN:\n break;\n case algebra_1.types.PROJECT:\n recurseOp(result.input);\n break;\n case algebra_1.types.REDUCED:\n recurseOp(result.input);\n break;\n case algebra_1.types.SEQ:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.SERVICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.SLICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.UNION:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.VALUES:\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n recurseOp(result.path);\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result.updates.forEach(update => recurseOp(update));\n break;\n case algebra_1.types.DELETE_INSERT:\n if (result.delete)\n result.delete.forEach(pattern => recurseOp(pattern));\n if (result.insert)\n result.insert.forEach(pattern => recurseOp(pattern));\n if (result.where)\n recurseOp(result.where);\n break;\n // all of these only have graph IDs as values\n case algebra_1.types.LOAD: break;\n case algebra_1.types.CLEAR: break;\n case algebra_1.types.CREATE: break;\n case algebra_1.types.DROP: break;\n case algebra_1.types.ADD: break;\n case algebra_1.types.MOVE: break;\n case algebra_1.types.COPY: break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Creates a deep copy of the given Operation.\n * Creates shallow copies of the non-Operation values.\n * A map of callback functions can be provided for individual Operation types\n * to specifically modify the given objects before triggering recursion.\n * The return value of those callbacks should indicate whether recursion should be applied to this returned object or not.\n * @param {Operation} op - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapOperation(op, callbacks, factory) {\n let result = op;\n let doRecursion = true;\n let copyMetadata = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[op.type];\n if (callback) {\n // Not sure how to get typing correct for op here\n const recurseResult = callback(op, factory);\n result = recurseResult.result;\n doRecursion = recurseResult.recurse;\n copyMetadata = recurseResult.copyMetadata !== false;\n }\n let toCopyMetadata;\n if (copyMetadata && (result.metadata || op.metadata)) {\n toCopyMetadata = { ...result.metadata, ...op.metadata };\n }\n if (!doRecursion) {\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n // Several casts here might be wrong though depending on the callbacks output\n switch (result.type) {\n case algebra_1.types.ALT:\n result = factory.createAlt(result.input.map(mapOp));\n break;\n case algebra_1.types.ASK:\n result = factory.createAsk(mapOp(result.input));\n break;\n case algebra_1.types.BGP:\n result = factory.createBgp(result.patterns.map(mapOp));\n break;\n case algebra_1.types.CONSTRUCT:\n result = factory.createConstruct(mapOp(result.input), result.template.map(mapOp));\n break;\n case algebra_1.types.DESCRIBE:\n result = factory.createDescribe(mapOp(result.input), result.terms);\n break;\n case algebra_1.types.DISTINCT:\n result = factory.createDistinct(mapOp(result.input));\n break;\n case algebra_1.types.EXPRESSION:\n result = Util.mapExpression(result, callbacks, factory);\n break;\n case algebra_1.types.EXTEND:\n result = factory.createExtend(mapOp(result.input), result.variable, mapOp(result.expression));\n break;\n case algebra_1.types.FILTER:\n result = factory.createFilter(mapOp(result.input), mapOp(result.expression));\n break;\n case algebra_1.types.FROM:\n result = factory.createFrom(mapOp(result.input), [...result.default], [...result.named]);\n break;\n case algebra_1.types.GRAPH:\n result = factory.createGraph(mapOp(result.input), result.name);\n break;\n case algebra_1.types.GROUP:\n result = factory.createGroup(mapOp(result.input), [].concat(result.variables), result.aggregates.map(mapOp));\n break;\n case algebra_1.types.INV:\n result = factory.createInv(mapOp(result.path));\n break;\n case algebra_1.types.JOIN:\n result = factory.createJoin(result.input.map(mapOp));\n break;\n case algebra_1.types.LEFT_JOIN:\n result = factory.createLeftJoin(mapOp(result.input[0]), mapOp(result.input[1]), result.expression ? mapOp(result.expression) : undefined);\n break;\n case algebra_1.types.LINK:\n result = factory.createLink(result.iri);\n break;\n case algebra_1.types.MINUS:\n result = factory.createMinus(mapOp(result.input[0]), mapOp(result.input[1]));\n break;\n case algebra_1.types.NOP:\n result = factory.createNop();\n break;\n case algebra_1.types.NPS:\n result = factory.createNps([].concat(result.iris));\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n result = factory.createOneOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ORDER_BY:\n result = factory.createOrderBy(mapOp(result.input), result.expressions.map(mapOp));\n break;\n case algebra_1.types.PATH:\n result = factory.createPath(result.subject, mapOp(result.predicate), result.object, result.graph);\n break;\n case algebra_1.types.PATTERN:\n result = factory.createPattern(result.subject, result.predicate, result.object, result.graph);\n break;\n case algebra_1.types.PROJECT:\n result = factory.createProject(mapOp(result.input), [...result.variables]);\n break;\n case algebra_1.types.REDUCED:\n result = factory.createReduced(mapOp(result.input));\n break;\n case algebra_1.types.SEQ:\n result = factory.createSeq(result.input.map(mapOp));\n break;\n case algebra_1.types.SERVICE:\n result = factory.createService(mapOp(result.input), result.name, result.silent);\n break;\n case algebra_1.types.SLICE:\n result = factory.createSlice(mapOp(result.input), result.start, result.length);\n break;\n case algebra_1.types.UNION:\n result = factory.createUnion(result.input.map(mapOp));\n break;\n case algebra_1.types.VALUES:\n result = factory.createValues([].concat(result.variables), result.bindings.map(b => Object.assign({}, b)));\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n result = factory.createZeroOrMorePath(mapOp(result.path));\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n result = factory.createZeroOrOnePath(mapOp(result.path));\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result = factory.createCompositeUpdate(result.updates.map(mapOp));\n break;\n case algebra_1.types.DELETE_INSERT:\n result = factory.createDeleteInsert(result.delete ? result.delete.map(mapOp) : undefined, result.insert ? result.insert.map(mapOp) : undefined, result.where ? mapOp(result.where) : undefined);\n break;\n case algebra_1.types.LOAD:\n result = factory.createLoad(result.source, result.destination, result.silent);\n break;\n case algebra_1.types.CLEAR:\n result = factory.createClear(result.source, result.silent);\n break;\n case algebra_1.types.CREATE:\n result = factory.createCreate(result.source, result.silent);\n break;\n case algebra_1.types.DROP:\n result = factory.createDrop(result.source, result.silent);\n break;\n case algebra_1.types.ADD:\n result = factory.createAdd(result.source, result.destination);\n break;\n case algebra_1.types.MOVE:\n result = factory.createMove(result.source, result.destination);\n break;\n case algebra_1.types.COPY:\n result = factory.createCopy(result.source, result.destination);\n break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n // Inherit metadata\n if (toCopyMetadata) {\n result.metadata = toCopyMetadata;\n }\n return result;\n }\n /**\n * Similar to the {@link mapOperation} function but specifically for expressions.\n * Both functions call each other while copying.\n * Should not be called directly since it does not execute the callbacks, these happen in {@link mapOperation}.\n * @param {Expression} expr - The Operation to recurse on.\n * @param callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapExpression(expr, callbacks, factory) {\n let result = expr;\n let doRecursion = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[expr.expressionType];\n if (callback)\n ({ result, recurse: doRecursion } = callback(expr, factory));\n if (!doRecursion)\n return result;\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n switch (expr.expressionType) {\n case algebra_1.expressionTypes.AGGREGATE:\n if (expr.variable) {\n return factory.createBoundAggregate(expr.variable, expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n }\n return factory.createAggregateExpression(expr.aggregator, mapOp(expr.expression), expr.distinct, expr.separator);\n case algebra_1.expressionTypes.EXISTENCE:\n return factory.createExistenceExpression(expr.not, mapOp(expr.input));\n case algebra_1.expressionTypes.NAMED:\n return factory.createNamedExpression(expr.name, expr.args.map(mapOp));\n case algebra_1.expressionTypes.OPERATOR:\n return factory.createOperatorExpression(expr.operator, expr.args.map(mapOp));\n case algebra_1.expressionTypes.TERM:\n return factory.createTermExpression(expr.term);\n case algebra_1.expressionTypes.WILDCARD:\n return factory.createWildcardExpression();\n default: throw new Error(`Unknown Expression type ${expr.expressionType}`);\n }\n }\n /**\n * Creates a deep clone of the operation.\n * This is syntactic sugar for calling {@link mapOperation} without callbacks.\n * @param {Operation} op - The operation to copy.\n * @returns {Operation} - The deep copy.\n */\n static cloneOperation(op) {\n return Util.mapOperation(op, {});\n }\n /**\n * Creates a deep clone of the expression.\n * This is syntactic sugar for calling {@link mapExpression} without callbacks.\n * @param {Expression} expr - The operation to copy.\n * @returns {Expression} - The deep copy.\n */\n static cloneExpression(expr) {\n return Util.mapExpression(expr, {});\n }\n static createUniqueVariable(label, variables, dataFactory) {\n let counter = 0;\n let labelLoop = label;\n while (variables[labelLoop]) {\n labelLoop = `${label}${counter++}`;\n }\n return dataFactory.variable(labelLoop);\n }\n // separate terms from wildcard since we handle them differently\n static isSimpleTerm(term) {\n return term.termType !== undefined && term.termType !== 'Quad' && term.termType !== 'Wildcard';\n }\n static isQuad(term) {\n return term.termType === 'Quad';\n }\n static hasQuadVariables(quad) {\n return (0, rdf_terms_1.someTermsNested)(quad, term => term.termType === 'Variable');\n }\n static isWildcard(term) {\n return term.termType === 'Wildcard';\n }\n}\nexports.default = Util;\n//# sourceMappingURL=util.js.map","\"use strict\";\n/**\n * An asynchronous iterator library for advanced object pipelines\n * @module asynciterator\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIterator = exports.isIterable = exports.isSourceExpression = exports.isPromise = exports.isEventEmitter = exports.isFunction = exports.range = exports.union = exports.fromIterable = exports.fromIterator = exports.fromArray = exports.single = exports.empty = exports.wrap = exports.WrappingIterator = exports.ClonedIterator = exports.UnionIterator = exports.MultiTransformIterator = exports.SimpleTransformIterator = exports.TransformIterator = exports.BufferedIterator = exports.MappingIterator = exports.DESTINATION = exports.identity = exports.IntegerIterator = exports.ArrayIterator = exports.SingletonIterator = exports.EmptyIterator = exports.AsyncIterator = exports.DESTROYED = exports.ENDED = exports.CLOSED = exports.CLOSING = exports.OPEN = exports.INIT = exports.setTaskScheduler = exports.getTaskScheduler = exports.scheduleTask = exports.LinkedList = void 0;\nconst events_1 = require(\"events\");\nconst linkedlist_1 = require(\"./linkedlist.js\");\nObject.defineProperty(exports, \"LinkedList\", { enumerable: true, get: function () { return linkedlist_1.LinkedList; } });\nconst taskscheduler_1 = require(\"./taskscheduler.js\");\nlet taskScheduler = taskscheduler_1.createTaskScheduler();\n/** Schedules the given task for asynchronous execution. */\nfunction scheduleTask(task) {\n taskScheduler(task);\n}\nexports.scheduleTask = scheduleTask;\n/** Returns the asynchronous task scheduler. */\nfunction getTaskScheduler() {\n return taskScheduler;\n}\nexports.getTaskScheduler = getTaskScheduler;\n/** Sets the asynchronous task scheduler. */\nfunction setTaskScheduler(scheduler) {\n taskScheduler = scheduler;\n}\nexports.setTaskScheduler = setTaskScheduler;\n/**\n ID of the INIT state.\n An iterator is initializing if it is preparing main item generation.\n It can already produce items.\n @type integer\n*/\nexports.INIT = 1 << 0;\n/**\n ID of the OPEN state.\n An iterator is open if it can generate new items.\n @type integer\n*/\nexports.OPEN = 1 << 1;\n/**\n ID of the CLOSING state.\n An iterator is closing if item generation is pending but will not be scheduled again.\n @type integer\n*/\nexports.CLOSING = 1 << 2;\n/**\n ID of the CLOSED state.\n An iterator is closed if it no longer actively generates new items.\n Items might still be available.\n @type integer\n*/\nexports.CLOSED = 1 << 3;\n/**\n ID of the ENDED state.\n An iterator has ended if no further items will become available.\n The 'end' event is guaranteed to have been called when in this state.\n @type integer\n*/\nexports.ENDED = 1 << 4;\n/**\n ID of the DESTROYED state.\n An iterator has been destroyed\n after calling {@link module:asynciterator.AsyncIterator#destroy}.\n The 'end' event has not been called, as pending elements were voided.\n @type integer\n*/\nexports.DESTROYED = 1 << 5;\n/**\n An asynchronous iterator provides pull-based access to a stream of objects.\n @extends module:asynciterator.EventEmitter\n*/\nclass AsyncIterator extends events_1.EventEmitter {\n /** Creates a new `AsyncIterator`. */\n constructor(initialState = exports.OPEN) {\n super();\n this._readable = false;\n this._state = initialState;\n this.on('newListener', waitForDataListener);\n }\n /**\n Changes the iterator to the given state if possible and necessary,\n possibly emitting events to signal that change.\n @protected\n @param {integer} newState The ID of the new state\n @param {boolean} [eventAsync=false] Whether resulting events should be emitted asynchronously\n @returns {boolean} Whether the state was changed\n @emits module:asynciterator.AsyncIterator.end\n */\n _changeState(newState, eventAsync = false) {\n // Validate the state change\n const valid = newState > this._state && this._state < exports.ENDED;\n if (valid) {\n this._state = newState;\n // Emit the `end` event when changing to ENDED\n if (newState === exports.ENDED) {\n if (!eventAsync)\n this.emit('end');\n else\n taskScheduler(() => this.emit('end'));\n }\n }\n return valid;\n }\n /**\n Tries to read the next item from the iterator.\n This is the main method for reading the iterator in _on-demand mode_,\n where new items are only created when needed by consumers.\n If no items are currently available, this methods returns `null`.\n The {@link module:asynciterator.event:readable} event\n will then signal when new items might be ready.\n To read all items from the iterator,\n switch to _flow mode_ by subscribing\n to the {@link module:asynciterator.event:data} event.\n When in flow mode, do not use the `read` method.\n @returns {object?} The next item, or `null` if none is available\n */\n read() {\n return null;\n }\n /**\n The iterator emits a `readable` event when it might have new items available\n after having had no items available right before this event.\n If the iterator is not in flow mode, items can be retrieved\n by calling {@link module:asynciterator.AsyncIterator#read}.\n @event module:asynciterator.readable\n */\n /**\n The iterator emits a `data` event with a new item as soon as it becomes available.\n When one or more listeners are attached to the `data` event,\n the iterator switches to _flow mode_,\n generating and emitting new items as fast as possible.\n This drains the source and might create backpressure on the consumers,\n so only subscribe to this event if this behavior is intended.\n In flow mode, don't use {@link module:asynciterator.AsyncIterator#read}.\n To switch back to _on-demand mode_, remove all listeners from the `data` event.\n You can then obtain items through `read` again.\n @event module:asynciterator.data\n @param {object} item The new item\n */\n /**\n Invokes the callback for each remaining item in the iterator.\n Switches the iterator to flow mode.\n @param {Function} callback A function that will be called with each item\n @param {object?} self The `this` pointer for the callback\n */\n forEach(callback, self) {\n this.on('data', bind(callback, self));\n }\n /**\n Stops the iterator from generating new items.\n Already generated items or terminating items can still be emitted.\n After this, the iterator will end asynchronously.\n @emits module:asynciterator.AsyncIterator.end\n */\n close() {\n if (this._changeState(exports.CLOSED))\n this._endAsync();\n }\n /**\n Destroy the iterator and stop it from generating new items.\n This will not do anything if the iterator was already ended or destroyed.\n All internal resources will be released an no new items will be emitted,\n even not already generated items.\n Implementors should not override this method,\n but instead implement {@link module:asynciterator.AsyncIterator#_destroy}.\n @param {Error} [cause] An optional error to emit.\n @emits module:asynciterator.AsyncIterator.end\n @emits module:asynciterator.AsyncIterator.error Only if an error is passed.\n */\n destroy(cause) {\n if (!this.done) {\n this._destroy(cause, error => {\n cause = cause || error;\n if (cause)\n this.emit('error', cause);\n this._end(true);\n });\n }\n }\n /**\n Called by {@link module:asynciterator.AsyncIterator#destroy}.\n Implementers can override this, but this should not be called directly.\n @param {?Error} cause The reason why the iterator is destroyed.\n @param {Function} callback A callback function with an optional error argument.\n */\n _destroy(cause, callback) {\n callback();\n }\n /**\n Ends the iterator and cleans up.\n Should never be called before {@link module:asynciterator.AsyncIterator#close};\n typically, `close` is responsible for calling `_end`.\n @param {boolean} [destroy] If the iterator should be forcefully destroyed.\n @protected\n @emits module:asynciterator.AsyncIterator.end\n */\n _end(destroy = false) {\n if (this._changeState(destroy ? exports.DESTROYED : exports.ENDED)) {\n this._readable = false;\n this.removeAllListeners('readable');\n this.removeAllListeners('data');\n this.removeAllListeners('end');\n }\n }\n /**\n Asynchronously calls `_end`.\n @protected\n */\n _endAsync() {\n taskScheduler(() => this._end());\n }\n /**\n The `end` event is emitted after the last item of the iterator has been read.\n @event module:asynciterator.end\n */\n /**\n Gets or sets whether this iterator might have items available for read.\n A value of `false` means there are _definitely_ no items available;\n a value of `true` means items _might_ be available.\n @type boolean\n @emits module:asynciterator.AsyncIterator.readable\n */\n get readable() {\n return this._readable;\n }\n set readable(readable) {\n readable = Boolean(readable) && !this.done;\n // Set the readable value only if it has changed\n if (this._readable !== readable) {\n this._readable = readable;\n // If the iterator became readable, emit the `readable` event\n if (readable)\n taskScheduler(() => this.emit('readable'));\n }\n }\n /**\n Gets whether the iterator has stopped generating new items.\n @type boolean\n @readonly\n */\n get closed() {\n return this._state >= exports.CLOSING;\n }\n /**\n Gets whether the iterator has finished emitting items.\n @type boolean\n @readonly\n */\n get ended() {\n return this._state === exports.ENDED;\n }\n /**\n Gets whether the iterator has been destroyed.\n @type boolean\n @readonly\n */\n get destroyed() {\n return this._state === exports.DESTROYED;\n }\n /**\n Gets whether the iterator will not emit anymore items,\n either due to being closed or due to being destroyed.\n @type boolean\n @readonly\n */\n get done() {\n return this._state >= exports.ENDED;\n }\n /* Generates a textual representation of the iterator. */\n toString() {\n const details = this._toStringDetails();\n return `[${this.constructor.name}${details ? ` ${details}` : ''}]`;\n }\n /**\n Generates details for a textual representation of the iterator.\n @protected\n */\n _toStringDetails() {\n return '';\n }\n /**\n Consume all remaining items of the iterator into an array that will be returned asynchronously.\n @param {object} [options] Settings for array creation\n @param {integer} [options.limit] The maximum number of items to place in the array.\n */\n toArray(options) {\n const items = [];\n const limit = typeof (options === null || options === void 0 ? void 0 : options.limit) === 'number' ? options.limit : Infinity;\n return this.ended || limit <= 0 ? Promise.resolve(items) : new Promise((resolve, reject) => {\n // Collect and return all items up to the limit\n const resolveItems = () => resolve(items);\n const pushItem = (item) => {\n items.push(item);\n if (items.length >= limit) {\n this.removeListener('error', reject);\n this.removeListener('data', pushItem);\n this.removeListener('end', resolveItems);\n resolve(items);\n }\n };\n // Start item collection\n this.on('error', reject);\n this.on('data', pushItem);\n this.on('end', resolveItems);\n });\n }\n /**\n Retrieves the property with the given name from the iterator.\n If no callback is passed, it returns the value of the property\n or `undefined` if the property is not set.\n If a callback is passed, it returns `undefined`\n and calls the callback with the property the moment it is set.\n @param {string} propertyName The name of the property to retrieve\n @param {Function?} [callback] A one-argument callback to receive the property value\n @returns {object?} The value of the property (if set and no callback is given)\n */\n getProperty(propertyName, callback) {\n const properties = this._properties;\n // If no callback was passed, return the property value\n if (!callback)\n return properties && properties[propertyName];\n // If the value has been set, send it through the callback\n if (properties && (propertyName in properties)) {\n taskScheduler(() => callback(properties[propertyName]));\n }\n // If the value was not set, store the callback for when the value will be set\n else {\n let propertyCallbacks;\n if (!(propertyCallbacks = this._propertyCallbacks))\n this._propertyCallbacks = propertyCallbacks = Object.create(null);\n if (propertyName in propertyCallbacks)\n propertyCallbacks[propertyName].push(callback);\n else\n propertyCallbacks[propertyName] = [callback];\n }\n return undefined;\n }\n /**\n Sets the property with the given name to the value.\n @param {string} propertyName The name of the property to set\n @param {object?} value The new value of the property\n */\n setProperty(propertyName, value) {\n const properties = this._properties || (this._properties = Object.create(null));\n properties[propertyName] = value;\n // Execute getter callbacks that were waiting for this property to be set\n const propertyCallbacks = this._propertyCallbacks || {};\n const callbacks = propertyCallbacks[propertyName];\n if (callbacks) {\n delete propertyCallbacks[propertyName];\n taskScheduler(() => {\n for (const callback of callbacks)\n callback(value);\n });\n // Remove _propertyCallbacks if no pending callbacks are left\n for (propertyName in propertyCallbacks)\n return;\n delete this._propertyCallbacks;\n }\n }\n /**\n Retrieves all properties of the iterator.\n @returns {object} An object with property names as keys.\n */\n getProperties() {\n const properties = this._properties;\n const copy = {};\n for (const name in properties)\n copy[name] = properties[name];\n return copy;\n }\n /**\n Sets all of the given properties.\n @param {object} properties Key/value pairs of properties to set\n */\n setProperties(properties) {\n for (const propertyName in properties)\n this.setProperty(propertyName, properties[propertyName]);\n }\n /**\n Copies the given properties from the source iterator.\n @param {module:asynciterator.AsyncIterator} source The iterator to copy from\n @param {Array} propertyNames List of property names to copy\n */\n copyProperties(source, propertyNames) {\n for (const propertyName of propertyNames) {\n source.getProperty(propertyName, value => this.setProperty(propertyName, value));\n }\n }\n /**\n Transforms items from this iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n @returns {module:asynciterator.AsyncIterator} A new iterator that maps the items from this iterator\n */\n transform(options) {\n return new SimpleTransformIterator(this, options);\n }\n /**\n Maps items from this iterator using the given function.\n After this operation, only read the returned iterator instead of the current one.\n @param {Function} map A mapping function to call on this iterator's (remaining) items\n @param {object?} self The `this` pointer for the mapping function\n @returns {module:asynciterator.AsyncIterator} A new iterator that maps the items from this iterator\n */\n map(map, self) {\n return new MappingIterator(this, bind(map, self));\n }\n filter(filter, self) {\n return this.map(function (item) {\n return filter.call(self || this, item) ? item : null;\n });\n }\n /**\n * Returns a new iterator containing all of the unique items in the original iterator.\n * @param by - The derived value by which to determine uniqueness (e.g., stringification).\n Defaults to the identity function.\n * @returns An iterator with duplicates filtered out.\n */\n uniq(by = identity) {\n const uniques = new Set();\n return this.filter(function (item) {\n const hashed = by.call(this, item);\n if (!uniques.has(hashed)) {\n uniques.add(hashed);\n return true;\n }\n return false;\n });\n }\n /**\n Prepends the items after those of the current iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} items Items to insert before this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that prepends items to this iterator\n */\n prepend(items) {\n return this.transform({ prepend: items });\n }\n /**\n Appends the items after those of the current iterator.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} items Items to insert after this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that appends items to this iterator\n */\n append(items) {\n return this.transform({ append: items });\n }\n /**\n Surrounds items of the current iterator with the given items.\n After this operation, only read the returned iterator instead of the current one.\n @param {Array|module:asynciterator.AsyncIterator} prepend Items to insert before this iterator's (remaining) items\n @param {Array|module:asynciterator.AsyncIterator} append Items to insert after this iterator's (remaining) items\n @returns {module:asynciterator.AsyncIterator} A new iterator that appends and prepends items to this iterator\n */\n surround(prepend, append) {\n return this.transform({ prepend, append });\n }\n /**\n Skips the given number of items from the current iterator.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} offset The number of items to skip\n @returns {module:asynciterator.AsyncIterator} A new iterator that skips the given number of items\n */\n skip(offset) {\n return this.map(item => offset-- > 0 ? null : item);\n }\n /**\n Limits the current iterator to the given number of items.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} limit The maximum number of items\n @returns {module:asynciterator.AsyncIterator} A new iterator with at most the given number of items\n */\n take(limit) {\n return this.transform({ limit });\n }\n /**\n Limits the current iterator to the given range.\n The current iterator may not be read anymore until the returned iterator ends.\n @param {integer} start Index of the first item to return\n @param {integer} end Index of the last item to return\n @returns {module:asynciterator.AsyncIterator} A new iterator with items in the given range\n */\n range(start, end) {\n return this.transform({ offset: start, limit: Math.max(end - start + 1, 0) });\n }\n /**\n Creates a copy of the current iterator,\n containing all items emitted from this point onward.\n Further copies can be created; they will all start from this same point.\n After this operation, only read the returned copies instead of the original iterator.\n @returns {module:asynciterator.AsyncIterator} A new iterator that contains all future items of this iterator\n */\n clone() {\n return new ClonedIterator(this);\n }\n /**\n * An AsyncIterator is async iterable.\n * This allows iterators to be used via the for-await syntax.\n *\n * In cases where the returned EcmaScript AsyncIterator will not be fully consumed,\n * it is recommended to manually listen for error events on the main AsyncIterator\n * to avoid uncaught error messages.\n *\n * @returns {ESAsyncIterator} An EcmaScript AsyncIterator\n */\n [Symbol.asyncIterator]() {\n const it = this;\n let currentResolve = null;\n let currentReject = null;\n let pendingError = null;\n it.addListener('readable', tryResolve);\n it.addListener('end', tryResolve);\n it.addListener('error', tryReject);\n // Tries to emit an item or signal the end of the iterator\n function tryResolve() {\n if (currentResolve !== null) {\n if (pendingError !== null) {\n tryReject(pendingError);\n }\n else if (it.done) {\n currentResolve({ done: true, value: undefined });\n currentResolve = currentReject = null;\n removeListeners();\n }\n else {\n const value = it.read();\n if (value !== null) {\n currentResolve({ done: false, value });\n currentResolve = currentReject = null;\n }\n }\n }\n }\n // Tries to emit an error\n function tryReject(error) {\n if (currentReject !== null) {\n currentReject(error);\n currentResolve = currentReject = pendingError = null;\n removeListeners();\n }\n else if (pendingError === null) {\n pendingError = error;\n }\n }\n // Cleans up all attached listeners\n function removeListeners() {\n it.removeListener('readable', tryResolve);\n it.removeListener('end', tryResolve);\n it.removeListener('error', tryReject);\n }\n // An EcmaScript AsyncIterator exposes the next() function that can be invoked repeatedly\n return {\n next() {\n return new Promise((resolve, reject) => {\n currentResolve = resolve;\n currentReject = reject;\n tryResolve();\n });\n },\n };\n }\n}\nexports.AsyncIterator = AsyncIterator;\n// Starts emitting `data` events when `data` listeners are added\nfunction waitForDataListener(eventName) {\n if (eventName === 'data') {\n this.removeListener('newListener', waitForDataListener);\n addSingleListener(this, 'readable', emitData);\n if (this.readable)\n taskScheduler(() => emitData.call(this));\n }\n}\n// Emits new items though `data` events as long as there are `data` listeners\nfunction emitData() {\n // While there are `data` listeners and items, emit them\n let item;\n while (this.listenerCount('data') !== 0 && (item = this.read()) !== null)\n this.emit('data', item);\n // Stop draining the source if there are no more `data` listeners\n if (this.listenerCount('data') === 0 && !this.done) {\n this.removeListener('readable', emitData);\n addSingleListener(this, 'newListener', waitForDataListener);\n }\n}\n// Adds the listener to the event, if it has not been added previously.\nfunction addSingleListener(source, eventName, listener) {\n if (!source.listeners(eventName).includes(listener))\n source.on(eventName, listener);\n}\n/**\n An iterator that doesn't emit any items.\n @extends module:asynciterator.AsyncIterator\n*/\nclass EmptyIterator extends AsyncIterator {\n /** Creates a new `EmptyIterator`. */\n constructor() {\n super();\n this._changeState(exports.ENDED, true);\n }\n}\nexports.EmptyIterator = EmptyIterator;\n/**\n An iterator that emits a single item.\n @extends module:asynciterator.AsyncIterator\n*/\nclass SingletonIterator extends AsyncIterator {\n /**\n Creates a new `SingletonIterator`.\n @param {object} item The item that will be emitted.\n */\n constructor(item) {\n super();\n this._item = item;\n if (item === null)\n this.close();\n else\n this.readable = true;\n }\n /* Reads the item from the iterator. */\n read() {\n const item = this._item;\n this._item = null;\n this.close();\n return item;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return this._item === null ? '' : `(${this._item})`;\n }\n}\nexports.SingletonIterator = SingletonIterator;\n/**\n An iterator that emits the items of a given array.\n @extends module:asynciterator.AsyncIterator\n*/\nclass ArrayIterator extends AsyncIterator {\n /**\n Creates a new `ArrayIterator`.\n @param {Array} items The items that will be emitted.\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {boolean} [options.preserve=true] If false, the passed array can be safely modified\n */\n constructor(items = [], { autoStart = true, preserve = true } = {}) {\n super();\n const buffer = preserve || !Array.isArray(items) ? [...items] : items;\n this._index = 0;\n this._sourceStarted = autoStart !== false;\n this._truncateThreshold = preserve ? -1 : 64;\n if (this._sourceStarted && buffer.length === 0)\n this.close();\n else\n this._buffer = buffer;\n this.readable = true;\n }\n /* Reads an item from the iterator. */\n read() {\n if (!this._sourceStarted)\n this._sourceStarted = true;\n let item = null;\n if (this._buffer) {\n // Emit the current item\n if (this._index < this._buffer.length)\n item = this._buffer[this._index++];\n // Close when all elements have been returned\n if (this._index === this._buffer.length) {\n delete this._buffer;\n this.close();\n }\n // Do need keep old items around indefinitely\n else if (this._index === this._truncateThreshold) {\n this._buffer.splice(0, this._truncateThreshold);\n this._index = 0;\n }\n }\n return item;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `(${this._buffer ? this._buffer.length - this._index : 0})`;\n }\n /* Called by {@link module:asynciterator.AsyncIterator#destroy} */\n _destroy(cause, callback) {\n delete this._buffer;\n callback();\n }\n /**\n Consume all remaining items of the iterator into an array that will be returned asynchronously.\n @param {object} [options] Settings for array creation\n @param {integer} [options.limit] The maximum number of items to place in the array.\n */\n toArray(options = {}) {\n if (!this._buffer)\n return Promise.resolve([]);\n // Determine start and end index\n const { length } = this._buffer;\n const start = this._index;\n const end = typeof options.limit !== 'number' ? length : start + options.limit;\n // Slice the items off the buffer\n const items = this._buffer.slice(start, end);\n this._index = end;\n // Close this iterator when we're past the end\n if (end >= length)\n this.close();\n return Promise.resolve(items);\n }\n}\nexports.ArrayIterator = ArrayIterator;\n/**\n An iterator that enumerates integers in a certain range.\n @extends module:asynciterator.AsyncIterator\n*/\nclass IntegerIterator extends AsyncIterator {\n /**\n Creates a new `IntegerIterator`.\n @param {object} [options] Settings of the iterator\n @param {integer} [options.start=0] The first number to emit\n @param {integer} [options.end=Infinity] The last number to emit\n @param {integer} [options.step=1] The increment between two numbers\n */\n constructor({ start = 0, step = 1, end } = {}) {\n super();\n // Determine the first number\n if (Number.isFinite(start))\n start = Math.trunc(start);\n this._next = start;\n // Determine step size\n if (Number.isFinite(step))\n step = Math.trunc(step);\n this._step = step;\n // Determine the last number\n const ascending = step >= 0;\n const direction = ascending ? Infinity : -Infinity;\n if (Number.isFinite(end))\n end = Math.trunc(end);\n else if (end !== -direction)\n end = direction;\n this._last = end;\n // Start iteration if there is at least one item; close otherwise\n if (!Number.isFinite(start) || (ascending ? start > end : start < end))\n this.close();\n else\n this.readable = true;\n }\n /* Reads an item from the iterator. */\n read() {\n if (this.closed)\n return null;\n const current = this._next, step = this._step, last = this._last, next = this._next += step;\n if (step >= 0 ? next > last : next < last)\n this.close();\n return current;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `(${this._next}...${this._last})`;\n }\n}\nexports.IntegerIterator = IntegerIterator;\n/** Function that maps an element to itself. */\nfunction identity(item) {\n return item;\n}\nexports.identity = identity;\n/** Key indicating the current consumer of a source. */\nexports.DESTINATION = Symbol('destination');\n/**\n An iterator that synchronously transforms every item from its source\n by applying a mapping function.\n @extends module:asynciterator.AsyncIterator\n*/\nclass MappingIterator extends AsyncIterator {\n /**\n * Applies the given mapping to the source iterator.\n */\n constructor(source, map = identity, options = {}) {\n super();\n this._map = map;\n this._source = ensureSourceAvailable(source);\n this._destroySource = options.destroySource !== false;\n // Close if the source is already empty\n if (source.done) {\n this.close();\n }\n // Otherwise, wire up the source for reading\n else {\n this._source[exports.DESTINATION] = this;\n this._source.on('end', destinationClose);\n this._source.on('error', destinationEmitError);\n this._source.on('readable', destinationSetReadable);\n this.readable = this._source.readable;\n }\n }\n /* Tries to read the next item from the iterator. */\n read() {\n if (!this.done) {\n // Try to read an item that maps to a non-null value\n if (this._source.readable) {\n let item, mapped;\n while ((item = this._source.read()) !== null) {\n if ((mapped = this._map(item)) !== null)\n return mapped;\n }\n }\n this.readable = false;\n // Close this iterator if the source is empty\n if (this._source.done)\n this.close();\n }\n return null;\n }\n /* Cleans up the source iterator and ends. */\n _end(destroy) {\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[exports.DESTINATION];\n if (this._destroySource)\n this._source.destroy();\n super._end(destroy);\n }\n}\nexports.MappingIterator = MappingIterator;\n// Validates an AsyncIterator for use as a source within another AsyncIterator\nfunction ensureSourceAvailable(source, allowDestination = false) {\n if (!source || !isFunction(source.read) || !isFunction(source.on))\n throw new TypeError(`Invalid source: ${source}`);\n if (!allowDestination && source[exports.DESTINATION])\n throw new Error('The source already has a destination');\n return source;\n}\n/**\n An iterator that maintains an internal buffer of items.\n This class serves as a base class for other iterators\n with a typically complex item generation process.\n @extends module:asynciterator.AsyncIterator\n*/\nclass BufferedIterator extends AsyncIterator {\n /**\n Creates a new `BufferedIterator`.\n @param {object} [options] Settings of the iterator\n @param {integer} [options.maxBufferSize=4] The number of items to preload in the internal buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n */\n constructor({ maxBufferSize = 4, autoStart = true } = {}) {\n super(exports.INIT);\n this._buffer = new linkedlist_1.LinkedList();\n this._maxBufferSize = 4;\n this._reading = true;\n this._pushedCount = 0;\n this.maxBufferSize = maxBufferSize;\n taskScheduler(() => this._init(autoStart));\n this._sourceStarted = autoStart !== false;\n }\n /**\n The maximum number of items to preload in the internal buffer.\n A `BufferedIterator` tries to fill its buffer as far as possible.\n Set to `Infinity` to fully drain the source.\n @type number\n */\n get maxBufferSize() {\n return this._maxBufferSize;\n }\n set maxBufferSize(maxBufferSize) {\n // Allow only positive integers and infinity\n if (maxBufferSize !== Infinity) {\n maxBufferSize = !Number.isFinite(maxBufferSize) ? 4 :\n Math.max(Math.trunc(maxBufferSize), 1);\n }\n // Only set the maximum buffer size if it changes\n if (this._maxBufferSize !== maxBufferSize) {\n this._maxBufferSize = maxBufferSize;\n // Ensure sufficient elements are buffered\n if (this._state === exports.OPEN)\n this._fillBuffer();\n }\n }\n /**\n Initializing the iterator by calling {@link BufferedIterator#_begin}\n and changing state from INIT to OPEN.\n @protected\n @param {boolean} autoStart Whether reading of items should immediately start after OPEN.\n */\n _init(autoStart) {\n // Perform initialization tasks\n let doneCalled = false;\n this._reading = true;\n this._begin(() => {\n if (doneCalled)\n throw new Error('done callback called multiple times');\n doneCalled = true;\n // Open the iterator and start buffering\n this._reading = false;\n this._changeState(exports.OPEN);\n if (autoStart)\n this._fillBufferAsync();\n // If reading should not start automatically, the iterator doesn't become readable.\n // Therefore, mark the iterator as (potentially) readable so consumers know it might be read.\n else\n this.readable = true;\n });\n }\n /**\n Writes beginning items and opens iterator resources.\n Should never be called before {@link BufferedIterator#_init};\n typically, `_init` is responsible for calling `_begin`.\n @protected\n @param {function} done To be called when initialization is complete\n */\n _begin(done) {\n done();\n }\n /**\n Tries to read the next item from the iterator.\n If the buffer is empty,\n this method calls {@link BufferedIterator#_read} to fetch items.\n @returns {object?} The next item, or `null` if none is available\n */\n read() {\n if (this.done)\n return null;\n // An explicit read kickstarts the source\n if (!this._sourceStarted)\n this._sourceStarted = true;\n // Try to retrieve an item from the buffer\n const buffer = this._buffer;\n let item;\n if (buffer.empty) {\n item = null;\n this.readable = false;\n }\n else {\n item = buffer.shift();\n }\n // If the buffer is becoming empty, either fill it or end the iterator\n if (!this._reading && buffer.length < this._maxBufferSize) {\n // If the iterator is not closed and thus may still generate new items, fill the buffer\n if (!this.closed)\n this._fillBufferAsync();\n // No new items will be generated, so if none are buffered, the iterator ends here\n else if (buffer.empty)\n this._endAsync();\n }\n return item;\n }\n /**\n Tries to generate the given number of items.\n Implementers should add `count` items through {@link BufferedIterator#_push}.\n @protected\n @param {integer} count The number of items to generate\n @param {function} done To be called when reading is complete\n */\n _read(count, done) {\n done();\n }\n /**\n Adds an item to the internal buffer.\n @protected\n @param {object} item The item to add\n @emits module:asynciterator.AsyncIterator.readable\n */\n _push(item) {\n if (!this.done) {\n this._pushedCount++;\n this._buffer.push(item);\n this.readable = true;\n }\n }\n /**\n Fills the internal buffer until `this._maxBufferSize` items are present.\n This method calls {@link BufferedIterator#_read} to fetch items.\n @protected\n @emits module:asynciterator.AsyncIterator.readable\n */\n _fillBuffer() {\n let neededItems;\n // Avoid recursive reads\n if (this._reading) {\n // Do nothing\n }\n // If iterator closing started in the meantime, don't generate new items anymore\n else if (this.closed) {\n this._completeClose();\n }\n // Otherwise, try to fill empty spaces in the buffer by generating new items\n else if ((neededItems = Math.min(this._maxBufferSize - this._buffer.length, 128)) > 0) {\n // Acquire reading lock and start reading, counting pushed items\n this._pushedCount = 0;\n this._reading = true;\n this._read(neededItems, () => {\n // Verify the callback is only called once\n if (!neededItems)\n throw new Error('done callback called multiple times');\n neededItems = 0;\n // Release reading lock\n this._reading = false;\n // If the iterator was closed while reading, complete closing\n if (this.closed) {\n this._completeClose();\n }\n // If the iterator pushed one or more items,\n // it might currently be able to generate additional items\n // (even though all pushed items might already have been read)\n else if (this._pushedCount) {\n this.readable = true;\n // If the buffer is insufficiently full, continue filling\n if (this._buffer.length < this._maxBufferSize / 2)\n this._fillBufferAsync();\n }\n });\n }\n }\n /**\n Schedules `_fillBuffer` asynchronously.\n */\n _fillBufferAsync() {\n // Acquire reading lock to avoid recursive reads\n if (!this._reading) {\n this._reading = true;\n taskScheduler(() => {\n // Release reading lock so _fillBuffer` can take it\n this._reading = false;\n this._fillBuffer();\n });\n }\n }\n /**\n Stops the iterator from generating new items\n after a possible pending read operation has finished.\n Already generated, pending, or terminating items can still be emitted.\n After this, the iterator will end asynchronously.\n @emits module:asynciterator.AsyncIterator.end\n */\n close() {\n // If the iterator is not currently reading, we can close immediately\n if (!this._reading)\n this._completeClose();\n // Closing cannot complete when reading, so temporarily assume CLOSING state\n // `_fillBuffer` becomes responsible for calling `_completeClose`\n else\n this._changeState(exports.CLOSING);\n }\n /**\n Stops the iterator from generating new items,\n switching from `CLOSING` state into `CLOSED` state.\n @protected\n @emits module:asynciterator.AsyncIterator.end\n */\n _completeClose() {\n if (this._changeState(exports.CLOSED)) {\n // Write possible terminating items\n this._reading = true;\n this._flush(() => {\n if (!this._reading)\n throw new Error('done callback called multiple times');\n this._reading = false;\n // If no items are left, end the iterator\n // Otherwise, `read` becomes responsible for ending the iterator\n if (this._buffer.empty)\n this._endAsync();\n });\n }\n }\n /* Called by {@link module:asynciterator.AsyncIterator#destroy} */\n _destroy(cause, callback) {\n this._buffer.clear();\n callback();\n }\n /**\n Writes terminating items and closes iterator resources.\n Should never be called before {@link BufferedIterator#close};\n typically, `close` is responsible for calling `_flush`.\n @protected\n @param {function} done To be called when termination is complete\n */\n _flush(done) {\n done();\n }\n /**\n Generates details for a textual representation of the iterator.\n @protected\n */\n _toStringDetails() {\n const buffer = this._buffer;\n return `{${buffer.empty ? '' : `next: ${buffer.first}, `}buffer: ${buffer.length}}`;\n }\n}\nexports.BufferedIterator = BufferedIterator;\n/**\n An iterator that generates items based on a source iterator.\n This class serves as a base class for other iterators.\n @extends module:asynciterator.BufferedIterator\n*/\nclass TransformIterator extends BufferedIterator {\n /**\n Creates a new `TransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object} [options] Settings of the iterator\n @param {integer} [options.maxBufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its transformation yields no items\n @param {boolean} [options.destroySource=true] Whether the source should be destroyed when this transformed iterator is closed or destroyed\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n */\n constructor(source, options = source || {}) {\n super(options);\n this._boundPush = (item) => this._push(item);\n // Shift parameters if needed\n if (!isSourceExpression(source))\n source = options.source;\n // The passed source is an AsyncIterator or readable stream\n if (isEventEmitter(source)) {\n this.source = source;\n }\n // The passed value is a promise or source creation function\n else if (source) {\n this._createSource = isPromise(source) ? () => source : source;\n if (this._sourceStarted)\n this._loadSourceAsync();\n }\n // Set other options\n this._optional = Boolean(options.optional);\n this._destroySource = options.destroySource !== false;\n }\n /**\n The source this iterator generates items from.\n @type module:asynciterator.AsyncIterator\n */\n get source() {\n if (isFunction(this._createSource))\n this._loadSourceAsync();\n return this._source;\n }\n set source(value) {\n // Validate and set source\n const source = this._source = this._validateSource(value);\n source[exports.DESTINATION] = this;\n // Do not read the source if this iterator already ended\n if (this.done) {\n if (this._destroySource)\n source.destroy();\n }\n // Close this iterator if the source already ended\n else if (source.done) {\n this.close();\n }\n // Otherwise, react to source events\n else {\n source.on('end', destinationCloseWhenDone);\n source.on('readable', destinationFillBuffer);\n source.on('error', destinationEmitError);\n }\n }\n /**\n Initializes a source that was set through a promise\n @protected\n */\n _loadSourceAsync() {\n if (isFunction(this._createSource)) {\n // Assign the source after resolving\n Promise.resolve(this._createSource()).then(source => {\n delete this._createSource;\n this.source = source;\n this._fillBuffer();\n }, error => this.emit('error', error));\n // Signal that source creation is pending\n this._createSource = null;\n }\n }\n /**\n Validates whether the given iterator can be used as a source.\n @protected\n @param {object} source The source to validate\n @param {boolean} allowDestination Whether the source can already have a destination\n */\n _validateSource(source, allowDestination = false) {\n if (this._source || typeof this._createSource !== 'undefined')\n throw new Error('The source cannot be changed after it has been set');\n return ensureSourceAvailable(source, allowDestination);\n }\n /**\n Tries to read transformed items.\n */\n _read(count, done) {\n const next = () => {\n // Continue transforming until at least `count` items have been pushed\n if (this._pushedCount < count && !this.closed)\n taskScheduler(() => this._readAndTransform(next, done));\n else\n done();\n };\n this._readAndTransform(next, done);\n }\n /**\n Reads a transforms an item\n */\n _readAndTransform(next, done) {\n // If the source exists and still can read items,\n // try to read and transform the next item.\n let item;\n const source = this.source;\n if (!source || source.done || (item = source.read()) === null)\n done();\n else if (!this._optional)\n this._transform(item, next, this._boundPush);\n else\n this._optionalTransform(item, next);\n }\n /**\n Tries to transform the item;\n if the transformation yields no items, pushes the original item.\n */\n _optionalTransform(item, done) {\n const pushedCount = this._pushedCount;\n this._transform(item, () => {\n if (pushedCount === this._pushedCount)\n this._push(item);\n done();\n }, this._boundPush);\n }\n /**\n Generates items based on the item from the source.\n Implementers should add items through {@link BufferedIterator#_push}.\n The default implementation pushes the source item as-is.\n @protected\n @param {object} item The last read item from the source\n @param {function} done To be called when reading is complete\n @param {function} push A callback to push zero or more transformation results.\n */\n _transform(item, done, push) {\n push(item);\n done();\n }\n /**\n Closes the iterator when pending items are transformed.\n @protected\n */\n _closeWhenDone() {\n this.close();\n }\n /* Cleans up the source iterator and ends. */\n _end(destroy) {\n const source = this._source;\n if (source) {\n source.removeListener('end', destinationCloseWhenDone);\n source.removeListener('error', destinationEmitError);\n source.removeListener('readable', destinationFillBuffer);\n delete source[exports.DESTINATION];\n if (this._destroySource)\n source.destroy();\n }\n super._end(destroy);\n }\n}\nexports.TransformIterator = TransformIterator;\nfunction destinationSetReadable() {\n this[exports.DESTINATION].readable = true;\n}\nfunction destinationEmitError(error) {\n this[exports.DESTINATION].emit('error', error);\n}\nfunction destinationClose() {\n this[exports.DESTINATION].close();\n}\nfunction destinationCloseWhenDone() {\n this[exports.DESTINATION]._closeWhenDone();\n}\nfunction destinationFillBuffer() {\n if (this[exports.DESTINATION]._sourceStarted !== false)\n this[exports.DESTINATION]._fillBuffer();\n}\n/**\n An iterator that generates items based on a source iterator\n and simple transformation steps passed as arguments.\n @extends module:asynciterator.TransformIterator\n*/\nclass SimpleTransformIterator extends TransformIterator {\n /**\n Creates a new `SimpleTransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n */\n constructor(source, options) {\n super(source, options);\n this._offset = 0;\n this._limit = Infinity;\n this._filter = (item) => true;\n // Set transformation steps from the options\n options = options || (!isSourceExpression(source) ? source : null);\n if (options) {\n const transform = isFunction(options) ? options : options.transform;\n const { limit, offset, filter, map, prepend, append } = options;\n // Don't emit any items when bounds are unreachable\n if (offset === Infinity || limit === -Infinity) {\n this._limit = 0;\n }\n else {\n if (Number.isFinite(offset))\n this._offset = Math.max(Math.trunc(offset), 0);\n if (Number.isFinite(limit))\n this._limit = Math.max(Math.trunc(limit), 0);\n if (isFunction(filter))\n this._filter = filter;\n if (isFunction(map))\n this._map = map;\n this._transform = isFunction(transform) ? transform : null;\n }\n if (prepend)\n this._prepender = isEventEmitter(prepend) ? prepend : fromArray(prepend);\n if (append)\n this._appender = isEventEmitter(append) ? append : fromArray(append);\n }\n }\n /* Tries to read and transform items */\n _read(count, done) {\n const next = () => this._readAndTransformSimple(count, nextAsync, done);\n this._readAndTransformSimple(count, nextAsync, done);\n function nextAsync() {\n taskScheduler(next);\n }\n }\n /* Reads and transform items */\n _readAndTransformSimple(count, next, done) {\n // Verify we have a readable source\n let item;\n const { source } = this;\n if (!source || source.done) {\n done();\n return;\n }\n // Verify we are still below the limit\n if (this._limit === 0)\n this.close();\n // Try to read the next item until at least `count` items have been pushed\n while (!this.closed && this._pushedCount < count && (item = source.read()) !== null) {\n // Verify the item passes the filter and we've reached the offset\n if (!this._filter(item) || this._offset !== 0 && this._offset--)\n continue;\n // Synchronously map the item\n const mappedItem = typeof this._map === 'undefined' ? item : this._map(item);\n // Skip `null` items, pushing the original item if the mapping was optional\n if (mappedItem === null) {\n if (this._optional)\n this._push(item);\n }\n // Skip the asynchronous phase if no transformation was specified\n else if (!isFunction(this._transform)) {\n this._push(mappedItem);\n }\n // Asynchronously transform the item, and wait for `next` to call back\n else {\n if (!this._optional)\n this._transform(mappedItem, next, this._boundPush);\n else\n this._optionalTransform(mappedItem, next);\n return;\n }\n // Stop when we've reached the limit\n if (--this._limit === 0)\n this.close();\n }\n done();\n }\n // Prepends items to the iterator\n _begin(done) {\n this._insert(this._prepender, done);\n delete this._prepender;\n }\n // Appends items to the iterator\n _flush(done) {\n this._insert(this._appender, done);\n delete this._appender;\n }\n // Inserts items in the iterator\n _insert(inserter, done) {\n const push = (item) => this._push(item);\n if (!inserter || inserter.done) {\n done();\n }\n else {\n inserter.on('data', push);\n inserter.on('end', end);\n }\n function end() {\n inserter.removeListener('data', push);\n inserter.removeListener('end', end);\n done();\n }\n }\n}\nexports.SimpleTransformIterator = SimpleTransformIterator;\n/**\n An iterator that generates items by transforming each item of a source\n with a different iterator.\n @extends module:asynciterator.TransformIterator\n*/\nclass MultiTransformIterator extends TransformIterator {\n /**\n Creates a new `MultiTransformIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator generates items from\n @param {object|Function} [options] Settings of the iterator, or the transformation function\n @param {integer} [options.maxbufferSize=4] The maximum number of items to keep in the buffer\n @param {boolean} [options.autoStart=true] Whether buffering starts directly after construction\n @param {module:asynciterator.AsyncIterator} [options.source] The source this iterator generates items from\n @param {integer} [options.offset] The number of items to skip\n @param {integer} [options.limit] The maximum number of items\n @param {Function} [options.filter] A function to synchronously filter items from the source\n @param {Function} [options.map] A function to synchronously transform items from the source\n @param {Function} [options.transform] A function to asynchronously transform items from the source\n @param {boolean} [options.optional=false] If transforming is optional, the original item is pushed when its mapping yields `null` or its transformation yields no items\n @param {Function} [options.multiTransform] A function to asynchronously transform items to iterators from the source\n @param {Array|module:asynciterator.AsyncIterator} [options.prepend] Items to insert before the source items\n @param {Array|module:asynciterator.AsyncIterator} [options.append] Items to insert after the source items\n */\n constructor(source, options) {\n super(source, options);\n this._transformerQueue = [];\n // Set transformation steps from the options\n if (options) {\n const multiTransform = isFunction(options) ? options : options.multiTransform;\n if (multiTransform)\n this._createTransformer = multiTransform;\n }\n }\n /* Tries to read and transform items */\n _read(count, done) {\n // Remove transformers that have ended\n const transformerQueue = this._transformerQueue, optional = this._optional;\n let head, item;\n while ((head = transformerQueue[0]) && head.transformer.done) {\n // If transforming is optional, push the original item if none was pushed\n if (optional && head.item !== null) {\n count--;\n this._push(head.item);\n }\n // Remove listeners from the transformer\n transformerQueue.shift();\n const { transformer } = head;\n transformer.removeListener('end', destinationFillBuffer);\n transformer.removeListener('readable', destinationFillBuffer);\n transformer.removeListener('error', destinationEmitError);\n }\n // Create new transformers if there are less than the maximum buffer size\n const { source } = this;\n while (source && !source.done && transformerQueue.length < this.maxBufferSize) {\n // Read an item to create the next transformer\n item = source.read();\n if (item === null)\n break;\n // Create the transformer and listen to its events\n const transformer = (this._createTransformer(item) ||\n new EmptyIterator());\n transformer[exports.DESTINATION] = this;\n transformer.on('end', destinationFillBuffer);\n transformer.on('readable', destinationFillBuffer);\n transformer.on('error', destinationEmitError);\n transformerQueue.push({ transformer, item });\n }\n // Try to read `count` items from the transformer\n head = transformerQueue[0];\n if (head) {\n const { transformer } = head;\n while (count-- > 0 && (item = transformer.read()) !== null) {\n this._push(item);\n // If a transformed item was pushed, no need to push the original anymore\n if (optional)\n head.item = null;\n }\n }\n // End the iterator if the source has ended\n else if (source && source.done) {\n this.close();\n }\n done();\n }\n /**\n Creates a transformer for the given item.\n @param {object} item The last read item from the source\n @returns {module:asynciterator.AsyncIterator} An iterator that transforms the given item\n */\n _createTransformer(item) {\n return new SingletonIterator(item);\n }\n /* Closes the iterator when pending items are transformed. */\n _closeWhenDone() {\n // Only close if all transformers are read\n if (!this._transformerQueue.length)\n this.close();\n }\n _end(destroy) {\n super._end(destroy);\n // Also destroy the open transformers left in the queue\n if (this._destroySource) {\n for (const item of this._transformerQueue)\n item.transformer.destroy();\n }\n }\n}\nexports.MultiTransformIterator = MultiTransformIterator;\n/**\n An iterator that generates items by reading from multiple other iterators.\n @extends module:asynciterator.BufferedIterator\n*/\nclass UnionIterator extends BufferedIterator {\n /**\n Creates a new `UnionIterator`.\n @param {module:asynciterator.AsyncIterator|Array} [sources] The sources to read from\n @param {object} [options] Settings of the iterator\n @param {boolean} [options.destroySource=true] Whether the sources should be destroyed when transformed iterator is closed or destroyed\n */\n constructor(sources, options = {}) {\n super(options);\n this._sources = [];\n this._currentSource = -1;\n const autoStart = options.autoStart !== false;\n // Sources have been passed as an iterator\n if (isEventEmitter(sources)) {\n sources.on('error', error => this.emit('error', error));\n this._pending = { loading: false, sources: sources };\n if (autoStart)\n this._loadSources();\n }\n // Sources have been passed as a non-empty array\n else if (Array.isArray(sources) && sources.length > 0) {\n for (const source of sources)\n this._addSource(source);\n }\n // Sources are an empty list\n else if (autoStart) {\n this.close();\n }\n // Set other options\n this._destroySources = options.destroySources !== false;\n }\n // Loads pending sources into the sources list\n _loadSources() {\n // Obtain sources iterator\n const sources = this._pending.sources;\n this._pending.loading = true;\n // Close immediately if done\n if (sources.done) {\n delete this._pending;\n this.close();\n }\n // Otherwise, set up source reading\n else {\n sources.on('data', source => {\n this._addSource(source);\n this._fillBufferAsync();\n });\n sources.on('end', () => {\n delete this._pending;\n this._fillBuffer();\n });\n }\n }\n // Adds the given source to the internal sources array\n _addSource(source) {\n if (isPromise(source))\n source = wrap(source);\n if (!source.done) {\n this._sources.push(source);\n source[exports.DESTINATION] = this;\n source.on('error', destinationEmitError);\n source.on('readable', destinationFillBuffer);\n source.on('end', destinationRemoveEmptySources);\n }\n }\n // Removes sources that will no longer emit items\n _removeEmptySources() {\n this._sources = this._sources.filter((source, index) => {\n // Adjust the index of the current source if needed\n if (source.done && index <= this._currentSource)\n this._currentSource--;\n return !source.done;\n });\n this._fillBuffer();\n }\n // Reads items from the next sources\n _read(count, done) {\n var _a;\n // Start source loading if needed\n if (((_a = this._pending) === null || _a === void 0 ? void 0 : _a.loading) === false)\n this._loadSources();\n // Try to read `count` items\n let lastCount = 0, item;\n while (lastCount !== (lastCount = count)) {\n // Try every source at least once\n for (let i = 0; i < this._sources.length && count > 0; i++) {\n // Pick the next source\n this._currentSource = (this._currentSource + 1) % this._sources.length;\n const source = this._sources[this._currentSource];\n // Attempt to read an item from that source\n if ((item = source.read()) !== null) {\n count--;\n this._push(item);\n }\n }\n }\n // Close this iterator if all of its sources have been read\n if (!this._pending && this._sources.length === 0)\n this.close();\n done();\n }\n _end(destroy = false) {\n super._end(destroy);\n // Destroy all sources that are still readable\n if (this._destroySources) {\n for (const source of this._sources)\n source.destroy();\n // Also close the sources stream if applicable\n if (this._pending) {\n this._pending.sources.destroy();\n delete this._pending;\n }\n }\n }\n}\nexports.UnionIterator = UnionIterator;\nfunction destinationRemoveEmptySources() {\n this[exports.DESTINATION]._removeEmptySources();\n}\n/**\n An iterator that copies items from another iterator.\n @extends module:asynciterator.TransformIterator\n*/\nclass ClonedIterator extends TransformIterator {\n /**\n Creates a new `ClonedIterator`.\n @param {module:asynciterator.AsyncIterator|Readable} [source] The source this iterator copies items from\n */\n constructor(source) {\n super(source, { autoStart: false });\n this._readPosition = 0;\n this._reading = false;\n // As cloned iterators are not auto-started, they must always be marked as readable.\n if (source)\n this.readable = true;\n }\n _init() {\n // skip buffered iterator initialization, since we read from history\n }\n close() {\n // skip buffered iterator cleanup\n AsyncIterator.prototype.close.call(this);\n }\n // The source this iterator copies items from\n get source() {\n return super.source;\n }\n set source(value) {\n // Validate and set the source\n const source = this._source = this._validateSource(value);\n // Create a history reader for the source if none already existed\n const history = (source && source[exports.DESTINATION]) ||\n (source[exports.DESTINATION] = new HistoryReader(source));\n // Do not read the source if this iterator already ended\n if (this.done) {\n if (this._destroySource)\n source.destroy();\n }\n // Close this clone if history is empty and the source has ended\n else if (history.endsAt(0)) {\n this.close();\n }\n else {\n // Subscribe to history events\n history.register(this);\n // If there are already items in history, this clone is readable\n // If the source has a lazy start, always mark this iterator as readable without eagerly triggering a read.\n if (source._sourceStarted === false || history.readAt(0) !== null)\n this.readable = true;\n }\n // Hook pending property callbacks to the source\n const propertyCallbacks = this._propertyCallbacks;\n for (const propertyName in propertyCallbacks) {\n const callbacks = propertyCallbacks[propertyName];\n for (const callback of callbacks)\n this._getSourceProperty(propertyName, callback);\n }\n }\n /**\n Validates whether the given iterator can be used as a source.\n @protected\n @param {object} source The source to validate\n @param {boolean} allowDestination Whether the source can already have a destination\n */\n _validateSource(source, allowDestination = false) {\n const history = (source && source[exports.DESTINATION]);\n return super._validateSource(source, !history || history instanceof HistoryReader);\n }\n // Retrieves the property with the given name from the clone or its source.\n getProperty(propertyName, callback) {\n const { source } = this, properties = this._properties, hasProperty = properties && (propertyName in properties);\n // If no callback was passed, return the property value\n if (!callback) {\n return hasProperty ? properties && properties[propertyName] :\n source && source.getProperty(propertyName);\n }\n // Try to look up the property in this clone\n super.getProperty(propertyName, callback);\n // If the property is not set on this clone, it might become set on the source first\n if (source && !hasProperty)\n this._getSourceProperty(propertyName, callback);\n return undefined;\n }\n // Retrieves the property with the given name from the source\n _getSourceProperty(propertyName, callback) {\n this.source.getProperty(propertyName, value => {\n // Only send the source's property if it was not set on the clone in the meantime\n if (!this._properties || !(propertyName in this._properties))\n callback(value);\n });\n }\n // Retrieves all properties of the iterator and its source.\n getProperties() {\n const base = this.source ? this.source.getProperties() : {}, properties = this._properties;\n for (const name in properties)\n base[name] = properties[name];\n return base;\n }\n /* Generates details for a textual representation of the iterator. */\n _toStringDetails() {\n return `{source: ${this.source ? this.source.toString() : 'none'}}`;\n }\n /* Tries to read an item */\n read() {\n // An explicit read kickstarts the source\n if (!this._sourceStarted)\n this._sourceStarted = true;\n const source = this.source;\n let item = null;\n if (!this.done && source) {\n // Try to read an item at the current point in history\n const history = source[exports.DESTINATION];\n if ((item = history.readAt(this._readPosition)) !== null)\n this._readPosition++;\n else\n this.readable = false;\n // Close the iterator if we are at the end of the source\n if (history.endsAt(this._readPosition))\n this.close();\n }\n return item;\n }\n /* End the iterator and cleans up. */\n _end(destroy) {\n // Unregister from a possible history reader\n const source = this.source;\n const history = source === null || source === void 0 ? void 0 : source[exports.DESTINATION];\n if (history)\n history.unregister(this);\n // Don't call TransformIterator#_end,\n // as it would make the source inaccessible for other clones\n BufferedIterator.prototype._end.call(this, destroy);\n }\n}\nexports.ClonedIterator = ClonedIterator;\n// Stores the history of a source, so it can be cloned\nclass HistoryReader {\n constructor(source) {\n this._history = [];\n this._trackers = new Set();\n this._source = source;\n // If the source is still live, set up clone tracking;\n // otherwise, the clones just read from the finished history\n if (!source.done) {\n // When the source becomes readable, makes all clones readable\n const setReadable = () => {\n for (const tracker of this._trackers)\n tracker.readable = true;\n };\n // When the source errors, re-emits the error\n const emitError = (error) => {\n for (const tracker of this._trackers)\n tracker.emit('error', error);\n };\n // When the source ends, closes all clones that are fully read\n const end = () => {\n // Close the clone if all items had been emitted\n for (const tracker of this._trackers) {\n if (tracker._sourceStarted !== false &&\n tracker._readPosition === this._history.length)\n tracker.close();\n }\n this._trackers.clear();\n // Remove source listeners, since no further events will be emitted\n source.removeListener('end', end);\n source.removeListener('error', emitError);\n source.removeListener('readable', setReadable);\n };\n // Listen to source events to trigger events in subscribed clones\n source.on('end', end);\n source.on('error', emitError);\n source.on('readable', setReadable);\n }\n }\n // Registers a clone for history updates\n register(clone) {\n // Tracking is only needed if the source is still live\n if (!this._source.done)\n this._trackers.add(clone);\n }\n // Unregisters a clone for history updates\n unregister(clone) {\n this._trackers.delete(clone);\n }\n // Tries to read the item at the given history position\n readAt(pos) {\n let item = null;\n // Retrieve an item from history when available\n if (pos < this._history.length)\n item = this._history[pos];\n // Read a new item from the source when possible\n else if (!this._source.done && (item = this._source.read()) !== null)\n this._history[pos] = item;\n return item;\n }\n // Determines whether the given position is the end of the source\n endsAt(pos) {\n return this._source.done && this._history.length === pos;\n }\n}\n/**\n * An iterator that takes a variety of iterable objects as a source.\n */\nclass WrappingIterator extends AsyncIterator {\n constructor(source, opts) {\n super();\n this._source = null;\n this._destroySource = (opts === null || opts === void 0 ? void 0 : opts.destroySource) !== false;\n // If promise, set up a temporary source and replace when ready\n if (isPromise(source)) {\n this._source = new AsyncIterator();\n source.then(value => {\n this._source = null;\n this.source = value;\n }).catch(error => this.emit('error', error));\n }\n // Otherwise, set the source synchronously\n else if (source) {\n this.source = source;\n }\n }\n set source(value) {\n let source = value;\n if (this._source !== null)\n throw new Error('The source cannot be changed after it has been set');\n // Process an iterable source\n if (isIterable(source))\n source = source[Symbol.iterator]();\n // Process an iterator source\n if (isIterator(source)) {\n let iterator = source;\n source = new events_1.EventEmitter();\n source.read = () => {\n if (iterator !== null) {\n // Skip any null values inside of the iterator\n let next;\n while (!(next = iterator.next()).done) {\n if (next.value !== null)\n return next.value;\n }\n // No remaining values, so stop iterating\n iterator = null;\n this.close();\n }\n return null;\n };\n }\n // Process any other readable source\n else {\n source = ensureSourceAvailable(source);\n }\n // Do not change sources if the iterator is already done\n if (this.done) {\n if (this._destroySource && isFunction(source.destroy))\n source.destroy();\n return;\n }\n // Set up event handling\n source[exports.DESTINATION] = this;\n source.on('end', destinationClose);\n source.on('error', destinationEmitError);\n source.on('readable', destinationSetReadable);\n // Enable reading from source\n this._source = source;\n this.readable = source.readable !== false;\n }\n read() {\n if (this._source !== null && this._source.readable !== false) {\n const item = this._source.read();\n if (item !== null)\n return item;\n this.readable = false;\n }\n return null;\n }\n _end(destroy = false) {\n if (this._source !== null) {\n this._source.removeListener('end', destinationClose);\n this._source.removeListener('error', destinationEmitError);\n this._source.removeListener('readable', destinationSetReadable);\n delete this._source[exports.DESTINATION];\n if (this._destroySource && isFunction(this._source.destroy))\n this._source.destroy();\n this._source = null;\n }\n super._end(destroy);\n }\n}\nexports.WrappingIterator = WrappingIterator;\n/**\n Creates an iterator that wraps around a given iterator or readable stream.\n Use this to convert an iterator-like object into a full-featured AsyncIterator.\n After this operation, only read the returned iterator instead of the given one.\n @function\n @param [source] The source this iterator generates items from\n @param {object} [options] Settings of the iterator\n @returns {module:asynciterator.AsyncIterator} A new iterator with the items from the given iterator\n*/\nfunction wrap(source, options) {\n // For backward compatibility, always use TransformIterator when options are specified\n if (options && ('autoStart' in options || 'optional' in options || 'source' in options || 'maxBufferSize' in options)) {\n if (source && !isEventEmitter(source))\n source = new WrappingIterator(source);\n return new TransformIterator(source, options);\n }\n // Empty iterator if no source specified\n if (!source)\n return empty();\n // Unwrap promised sources\n if (isPromise(source))\n return new WrappingIterator(source, options);\n // Directly return any AsyncIterator\n if (source instanceof AsyncIterator)\n return source;\n // Other iterable objects\n if (Array.isArray(source))\n return fromArray(source);\n if (isIterable(source) || isIterator(source) || isEventEmitter(source))\n return new WrappingIterator(source, options);\n // Other types are unsupported\n throw new TypeError(`Invalid source: ${source}`);\n}\nexports.wrap = wrap;\n/**\n Creates an empty iterator.\n */\nfunction empty() {\n return new EmptyIterator();\n}\nexports.empty = empty;\n/**\n Creates an iterator with a single item.\n @param {object} item the item\n */\nfunction single(item) {\n return new SingletonIterator(item);\n}\nexports.single = single;\n/**\n Creates an iterator for the given array.\n @param {Array} items the items\n */\nfunction fromArray(items) {\n return new ArrayIterator(items);\n}\nexports.fromArray = fromArray;\n/**\n Creates an iterator for the given Iterator.\n @param {Iterable} source the iterator\n */\nfunction fromIterator(source) {\n return new WrappingIterator(source);\n}\nexports.fromIterator = fromIterator;\n/**\n Creates an iterator for the given Iterable.\n @param {Iterable} source the iterable\n */\nfunction fromIterable(source) {\n return new WrappingIterator(source);\n}\nexports.fromIterable = fromIterable;\n/**\n Creates an iterator containing all items from the given iterators.\n @param {Array} items the items\n */\nfunction union(sources) {\n return new UnionIterator(sources);\n}\nexports.union = union;\n/**\n Creates an iterator of integers for the given numeric range.\n @param {Array} items the items\n */\nfunction range(start, end, step) {\n return new IntegerIterator({ start, end, step });\n}\nexports.range = range;\n// Returns a function that calls `fn` with `self` as `this` pointer. */\nfunction bind(fn, self) {\n return self ? fn.bind(self) : fn;\n}\n// Determines whether the given object is a function\nfunction isFunction(object) {\n return typeof object === 'function';\n}\nexports.isFunction = isFunction;\n// Determines whether the given object is an EventEmitter\nfunction isEventEmitter(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.on);\n}\nexports.isEventEmitter = isEventEmitter;\n// Determines whether the given object is a promise\nfunction isPromise(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.then);\n}\nexports.isPromise = isPromise;\n// Determines whether the given object is a source expression\nfunction isSourceExpression(object) {\n return object && (isEventEmitter(object) || isPromise(object) || isFunction(object));\n}\nexports.isSourceExpression = isSourceExpression;\n// Determines whether the given object supports the iterable protocol\nfunction isIterable(object) {\n return object && (Symbol.iterator in object);\n}\nexports.isIterable = isIterable;\n// Determines whether the given object supports the iterator protocol\nfunction isIterator(object) {\n return isFunction(object === null || object === void 0 ? void 0 : object.next);\n}\nexports.isIterator = isIterator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedList = void 0;\n/**\n * A list with O(1) push and shift operations.\n */\nclass LinkedList {\n constructor() {\n this._length = 0;\n this._head = null;\n this._tail = null;\n }\n get length() { return this._length; }\n get first() { var _a; return (_a = this._head) === null || _a === void 0 ? void 0 : _a.value; }\n get last() { var _a; return (_a = this._tail) === null || _a === void 0 ? void 0 : _a.value; }\n get empty() { return this._head === null; }\n push(value) {\n const node = { value, next: null };\n if (this._tail === null)\n this._head = this._tail = node;\n else\n this._tail.next = this._tail = node;\n this._length++;\n }\n shift() {\n if (this._head === null)\n return undefined;\n const { value, next } = this._head;\n this._head = next;\n if (next === null)\n this._tail = null;\n this._length--;\n return value;\n }\n clear() {\n this._length = 0;\n this._head = this._tail = null;\n }\n}\nexports.LinkedList = LinkedList;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTaskScheduler = void 0;\nconst resolved = Promise.resolve(undefined);\n// Returns a function that asynchronously schedules a task\nfunction createTaskScheduler() {\n // Use or create a microtask scheduler\n const scheduleMicrotask = typeof queueMicrotask === 'function' ?\n queueMicrotask : (task) => resolved.then(task);\n // Use or create a macrotask scheduler\n const scheduleMacrotask = typeof setImmediate === 'function' ?\n setImmediate : (task) => setTimeout(task, 0);\n // Interrupt with a macrotask every once in a while to avoid freezing\n let i = 0;\n let queue = null;\n return (task) => {\n // Tasks are currently being queued to avoid freezing\n if (queue !== null)\n queue.push(task);\n // Tasks are being scheduled normally as microtasks\n else if (++i < 100)\n scheduleMicrotask(task);\n // A macrotask interruption is needed\n else {\n // Hold all tasks in a queue, and reschedule them after a macrotask\n queue = [task];\n scheduleMacrotask(() => {\n // Work through the queue\n for (const queued of queue)\n scheduleMicrotask(queued);\n queue = null;\n // Reset the interruption schedule\n i = 0;\n });\n }\n };\n}\nexports.createTaskScheduler = createTaskScheduler;\n","\"use strict\";\n/**\n * @module LRUCache\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = void 0;\nconst perf = typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date;\nconst warned = new Set();\n/* c8 ignore start */\nconst PROCESS = (typeof process === 'object' && !!process ? process : {});\n/* c8 ignore start */\nconst emitWarning = (msg, type, code, fn) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`);\n};\nlet AC = globalThis.AbortController;\nlet AS = globalThis.AbortSignal;\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort;\n _onabort = [];\n reason;\n aborted = false;\n addEventListener(_, fn) {\n this._onabort.push(fn);\n }\n };\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill();\n }\n signal = new AS();\n abort(reason) {\n if (this.signal.aborted)\n return;\n //@ts-ignore\n this.signal.reason = reason;\n //@ts-ignore\n this.signal.aborted = true;\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason);\n }\n this.signal.onabort?.(reason);\n }\n };\n let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning)\n return;\n printACPolyfillWarning = false;\n emitWarning('AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);\n };\n}\n/* c8 ignore stop */\nconst shouldWarn = (code) => !warned.has(code);\nconst TYPE = Symbol('type');\nconst isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max) => !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null;\n/* c8 ignore stop */\nclass ZeroArray extends Array {\n constructor(size) {\n super(size);\n this.fill(0);\n }\n}\nclass Stack {\n heap;\n length;\n // private constructor\n static #constructing = false;\n static create(max) {\n const HeapCls = getUintArray(max);\n if (!HeapCls)\n return [];\n Stack.#constructing = true;\n const s = new Stack(max, HeapCls);\n Stack.#constructing = false;\n return s;\n }\n constructor(max, HeapCls) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)');\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max);\n this.length = 0;\n }\n push(n) {\n this.heap[this.length++] = n;\n }\n pop() {\n return this.heap[--this.length];\n }\n}\n/**\n * Default export, the thing you're using this module to get.\n *\n * All properties from the options object (with the exception of\n * {@link OptionsBase.max} and {@link OptionsBase.maxSize}) are added as\n * normal public members. (`max` and `maxBase` are read-only getters.)\n * Changing any of these will alter the defaults for subsequent method calls,\n * but is otherwise safe.\n */\nclass LRUCache {\n // properties coming in from the options of these, only max and maxSize\n // really *need* to be protected. The rest can be modified, as they just\n // set defaults for various methods.\n #max;\n #maxSize;\n #dispose;\n #disposeAfter;\n #fetchMethod;\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl;\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution;\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas;\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale;\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet;\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL;\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize;\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort;\n // computed properties\n #size;\n #calculatedSize;\n #keyMap;\n #keyList;\n #valList;\n #next;\n #prev;\n #head;\n #tail;\n #free;\n #disposed;\n #sizes;\n #starts;\n #ttls;\n #hasDispose;\n #hasFetchMethod;\n #hasDisposeAfter;\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals(c) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head;\n },\n get tail() {\n return c.#tail;\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p) => c.#isBackgroundFetch(p),\n backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),\n moveToTail: (index) => c.#moveToTail(index),\n indexes: (options) => c.#indexes(options),\n rindexes: (options) => c.#rindexes(options),\n isStale: (index) => c.#isStale(index),\n };\n }\n // Protected read-only members\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max() {\n return this.#max;\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize() {\n return this.#maxSize;\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize() {\n return this.#calculatedSize;\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size() {\n return this.#size;\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod() {\n return this.#fetchMethod;\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose;\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter;\n }\n constructor(options) {\n const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer');\n }\n const UintArray = max ? getUintArray(max) : Array;\n if (!UintArray) {\n throw new Error('invalid max value: ' + max);\n }\n this.#max = max;\n this.#maxSize = maxSize;\n this.maxEntrySize = maxEntrySize || this.#maxSize;\n this.sizeCalculation = sizeCalculation;\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function');\n }\n }\n if (fetchMethod !== undefined &&\n typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified');\n }\n this.#fetchMethod = fetchMethod;\n this.#hasFetchMethod = !!fetchMethod;\n this.#keyMap = new Map();\n this.#keyList = new Array(max).fill(undefined);\n this.#valList = new Array(max).fill(undefined);\n this.#next = new UintArray(max);\n this.#prev = new UintArray(max);\n this.#head = 0;\n this.#tail = 0;\n this.#free = Stack.create(max);\n this.#size = 0;\n this.#calculatedSize = 0;\n if (typeof dispose === 'function') {\n this.#dispose = dispose;\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter;\n this.#disposed = [];\n }\n else {\n this.#disposeAfter = undefined;\n this.#disposed = undefined;\n }\n this.#hasDispose = !!this.#dispose;\n this.#hasDisposeAfter = !!this.#disposeAfter;\n this.noDisposeOnSet = !!noDisposeOnSet;\n this.noUpdateTTL = !!noUpdateTTL;\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;\n this.ignoreFetchAbort = !!ignoreFetchAbort;\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError('maxSize must be a positive integer if specified');\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError('maxEntrySize must be a positive integer if specified');\n }\n this.#initializeSizeTracking();\n }\n this.allowStale = !!allowStale;\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;\n this.updateAgeOnGet = !!updateAgeOnGet;\n this.updateAgeOnHas = !!updateAgeOnHas;\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1;\n this.ttlAutopurge = !!ttlAutopurge;\n this.ttl = ttl || 0;\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified');\n }\n this.#initializeTTLTracking();\n }\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError('At least one of max, maxSize, or ttl is required');\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED';\n if (shouldWarn(code)) {\n warned.add(code);\n const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.';\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);\n }\n }\n }\n /**\n * Return the remaining TTL time for a given entry key\n */\n getRemainingTTL(key) {\n return this.#keyMap.has(key) ? Infinity : 0;\n }\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max);\n const starts = new ZeroArray(this.#max);\n this.#ttls = ttls;\n this.#starts = starts;\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0;\n ttls[index] = ttl;\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.delete(this.#keyList[index]);\n }\n }, ttl + 1);\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n };\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0;\n };\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index];\n const start = starts[index];\n /* c8 ignore next */\n if (!ttl || !start)\n return;\n status.ttl = ttl;\n status.start = start;\n status.now = cachedNow || getNow();\n const age = status.now - start;\n status.remainingTTL = ttl - age;\n }\n };\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0;\n const getNow = () => {\n const n = perf.now();\n if (this.ttlResolution > 0) {\n cachedNow = n;\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n return n;\n };\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key);\n if (index === undefined) {\n return 0;\n }\n const ttl = ttls[index];\n const start = starts[index];\n if (!ttl || !start) {\n return Infinity;\n }\n const age = (cachedNow || getNow()) - start;\n return ttl - age;\n };\n this.#isStale = index => {\n const s = starts[index];\n const t = ttls[index];\n return !!t && !!s && (cachedNow || getNow()) - s > t;\n };\n }\n // conditionally set private methods related to TTL\n #updateItemAge = () => { };\n #statusTTL = () => { };\n #setItemTTL = () => { };\n /* c8 ignore stop */\n #isStale = () => false;\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max);\n this.#calculatedSize = 0;\n this.#sizes = sizes;\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index];\n sizes[index] = 0;\n };\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0;\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function');\n }\n size = sizeCalculation(v, k);\n if (!isPosInt(size)) {\n throw new TypeError('sizeCalculation return invalid (expect positive integer)');\n }\n }\n else {\n throw new TypeError('invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.');\n }\n }\n return size;\n };\n this.#addItemSize = (index, size, status) => {\n sizes[index] = size;\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index];\n while (this.#calculatedSize > maxSize) {\n this.#evict(true);\n }\n }\n this.#calculatedSize += sizes[index];\n if (status) {\n status.entrySize = size;\n status.totalCalculatedSize = this.#calculatedSize;\n }\n };\n }\n #removeItemSize = _i => { };\n #addItemSize = (_i, _s, _st) => { };\n #requireSize = (_k, _v, size, sizeCalculation) => {\n if (size || sizeCalculation) {\n throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');\n }\n return 0;\n };\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#head) {\n break;\n }\n else {\n i = this.#prev[i];\n }\n }\n }\n }\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#tail) {\n break;\n }\n else {\n i = this.#next[i];\n }\n }\n }\n }\n #isValidIndex(index) {\n return (index !== undefined &&\n this.#keyMap.get(this.#keyList[index]) === index);\n }\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * A String value that is used in the creation of the default string description of an object.\n * Called by the built-in method Object.prototype.toString.\n */\n [Symbol.toStringTag] = 'LRUCache';\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to Array.find(). fn is called as fn(value, key, cache).\n */\n find(fn, getOptions = {}) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n if (fn(value, this.#keyList[i], this)) {\n return this.get(this.#keyList[i], getOptions);\n }\n }\n }\n /**\n * Call the supplied function on each item in the cache, in order from\n * most recently used to least recently used. fn is called as\n * fn(value, key, cache). Does not update age or recenty of use.\n * Does not iterate over stale values.\n */\n forEach(fn, thisp = this) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(fn, thisp = this) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false;\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.delete(this.#keyList[i]);\n deleted = true;\n }\n }\n return deleted;\n }\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Like {@link LRUCache#dump}, but just for a\n * single key. Always returns stale values, if their info is found in the\n * cache, so be sure to check for expired TTLs if relevant.\n */\n info(key) {\n const i = this.#keyMap.get(key);\n if (i === undefined)\n return undefined;\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n return undefined;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i];\n const start = this.#starts[i];\n if (ttl && start) {\n const remain = ttl - (perf.now() - start);\n entry.ttl = remain;\n entry.start = Date.now();\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n return entry;\n }\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to cache.load()\n */\n dump() {\n const arr = [];\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i];\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined || key === undefined)\n continue;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i];\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - this.#starts[i];\n entry.start = Math.floor(Date.now() - age);\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n arr.unshift([key, entry]);\n }\n return arr;\n }\n /**\n * Reset the cache and load in the items in entries in the order listed.\n * Note that the shape of the resulting cache may be different if the\n * same options are not used in both caches.\n */\n load(arr) {\n this.clear();\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start;\n entry.start = perf.now() - age;\n }\n this.set(key, entry.value, entry);\n }\n }\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n */\n set(k, v, setOptions = {}) {\n if (v === undefined) {\n this.delete(k);\n return this;\n }\n const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;\n let { noUpdateTTL = this.noUpdateTTL } = setOptions;\n const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss';\n status.maxEntrySizeExceeded = true;\n }\n // have to delete, in case something is there already.\n this.delete(k);\n return this;\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k);\n if (index === undefined) {\n // addition\n index = (this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size);\n this.#keyList[index] = k;\n this.#valList[index] = v;\n this.#keyMap.set(k, index);\n this.#next[this.#tail] = index;\n this.#prev[index] = this.#tail;\n this.#tail = index;\n this.#size++;\n this.#addItemSize(index, size, status);\n if (status)\n status.set = 'add';\n noUpdateTTL = false;\n }\n else {\n // update\n this.#moveToTail(index);\n const oldVal = this.#valList[index];\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'));\n const { __staleWhileFetching: s } = oldVal;\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set']);\n }\n }\n }\n else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set']);\n }\n }\n this.#removeItemSize(index);\n this.#addItemSize(index, size, status);\n this.#valList[index] = v;\n if (status) {\n status.set = 'replace';\n const oldValue = oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal;\n if (oldValue !== undefined)\n status.oldValue = oldValue;\n }\n }\n else if (status) {\n status.set = 'update';\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking();\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start);\n }\n if (status)\n this.#statusTTL(status, index);\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return this;\n }\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop() {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head];\n this.#evict(true);\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching;\n }\n }\n else if (val !== undefined) {\n return val;\n }\n }\n }\n finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n }\n #evict(free) {\n const head = this.#head;\n const k = this.#keyList[head];\n const v = this.#valList[head];\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict']);\n }\n }\n this.#removeItemSize(head);\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined;\n this.#valList[head] = undefined;\n this.#free.push(head);\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0;\n this.#free.length = 0;\n }\n else {\n this.#head = this.#next[head];\n }\n this.#keyMap.delete(k);\n this.#size--;\n return head;\n }\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k, hasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined) {\n return false;\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index);\n }\n if (status) {\n status.has = 'hit';\n this.#statusTTL(status, index);\n }\n return true;\n }\n else if (status) {\n status.has = 'stale';\n this.#statusTTL(status, index);\n }\n }\n else if (status) {\n status.has = 'miss';\n }\n return false;\n }\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k, peekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions;\n const index = this.#keyMap.get(k);\n if (index === undefined ||\n (!allowStale && this.#isStale(index))) {\n return;\n }\n const v = this.#valList[index];\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n }\n #backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n return v;\n }\n const ac = new AC();\n const { signal } = options;\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n });\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n };\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal;\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined;\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true;\n options.status.fetchError = ac.signal.reason;\n if (ignoreAbort)\n options.status.fetchAbortIgnored = true;\n }\n else {\n options.status.fetchResolved = true;\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason);\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p;\n if (this.#valList[index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index] = bf.__staleWhileFetching;\n }\n else {\n this.delete(k);\n }\n }\n else {\n if (options.status)\n options.status.fetchUpdated = true;\n this.set(k, v, fetchOpts.options);\n }\n }\n return v;\n };\n const eb = (er) => {\n if (options.status) {\n options.status.fetchRejected = true;\n options.status.fetchError = er;\n }\n return fetchFail(er);\n };\n const fetchFail = (er) => {\n const { aborted } = ac.signal;\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;\n const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;\n const noDelete = allowStale || options.noDeleteOnFetchRejection;\n const bf = p;\n if (this.#valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined;\n if (del) {\n this.delete(k);\n }\n else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index] = bf.__staleWhileFetching;\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true;\n }\n return bf.__staleWhileFetching;\n }\n else if (bf.__returned === bf) {\n throw er;\n }\n };\n const pcall = (res, rej) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts);\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej);\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort) {\n res(undefined);\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true);\n }\n }\n });\n };\n if (options.status)\n options.status.fetchDispatched = true;\n const p = new Promise(pcall).then(cb, eb);\n const bf = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n });\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined });\n index = this.#keyMap.get(k);\n }\n else {\n this.#valList[index] = bf;\n }\n return bf;\n }\n #isBackgroundFetch(p) {\n if (!this.#hasFetchMethod)\n return false;\n const b = p;\n return (!!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC);\n }\n async fetch(k, fetchOptions = {}) {\n const { \n // get options\n allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, \n // set options\n ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, \n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;\n if (!this.#hasFetchMethod) {\n if (status)\n status.fetch = 'get';\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n });\n }\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n };\n let index = this.#keyMap.get(k);\n if (index === undefined) {\n if (status)\n status.fetch = 'miss';\n const p = this.#backgroundFetch(k, index, options, context);\n return (p.__returned = p);\n }\n else {\n // in cache, maybe already fetching\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined;\n if (status) {\n status.fetch = 'inflight';\n if (stale)\n status.returnedStale = true;\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v);\n }\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index);\n if (!forceRefresh && !isStale) {\n if (status)\n status.fetch = 'hit';\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n if (status)\n this.#statusTTL(status, index);\n return v;\n }\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context);\n const hasStale = p.__staleWhileFetching !== undefined;\n const staleVal = hasStale && allowStale;\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh';\n if (staleVal && isStale)\n status.returnedStale = true;\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p);\n }\n }\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k, getOptions = {}) {\n const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const value = this.#valList[index];\n const fetching = this.#isBackgroundFetch(value);\n if (status)\n this.#statusTTL(status, index);\n if (this.#isStale(index)) {\n if (status)\n status.get = 'stale';\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.delete(k);\n }\n if (status && allowStale)\n status.returnedStale = true;\n return allowStale ? value : undefined;\n }\n else {\n if (status &&\n allowStale &&\n value.__staleWhileFetching !== undefined) {\n status.returnedStale = true;\n }\n return allowStale ? value.__staleWhileFetching : undefined;\n }\n }\n else {\n if (status)\n status.get = 'hit';\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching;\n }\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n return value;\n }\n }\n else if (status) {\n status.get = 'miss';\n }\n }\n #connect(p, n) {\n this.#prev[n] = p;\n this.#next[p] = n;\n }\n #moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n this.#connect(this.#prev[index], this.#next[index]);\n }\n this.#connect(this.#tail, index);\n this.#tail = index;\n }\n }\n /**\n * Deletes a key out of the cache.\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k) {\n let deleted = false;\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n deleted = true;\n if (this.#size === 1) {\n this.clear();\n }\n else {\n this.#removeItemSize(index);\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'delete');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'delete']);\n }\n }\n this.#keyMap.delete(k);\n this.#keyList[index] = undefined;\n this.#valList[index] = undefined;\n if (index === this.#tail) {\n this.#tail = this.#prev[index];\n }\n else if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n const pi = this.#prev[index];\n this.#next[pi] = this.#next[index];\n const ni = this.#next[index];\n this.#prev[ni] = this.#prev[index];\n }\n this.#size--;\n this.#free.push(index);\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return deleted;\n }\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else {\n const k = this.#keyList[index];\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'delete');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'delete']);\n }\n }\n }\n this.#keyMap.clear();\n this.#valList.fill(undefined);\n this.#keyList.fill(undefined);\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0);\n this.#starts.fill(0);\n }\n if (this.#sizes) {\n this.#sizes.fill(0);\n }\n this.#head = 0;\n this.#tail = 0;\n this.#free.length = 0;\n this.#calculatedSize = 0;\n this.#size = 0;\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n}\nexports.LRUCache = LRUCache;\n//# sourceMappingURL=index.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(90128);\n"],"names":["Buffer","C","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","COLON","COMMA","TRUE","FALSE","NULL","STRING","NUMBER","START","STOP","TRUE1","TRUE2","TRUE3","FALSE1","FALSE2","FALSE3","FALSE4","NULL1","NULL2","NULL3","NUMBER1","NUMBER3","STRING1","STRING2","STRING3","STRING4","STRING5","STRING6","VALUE","KEY","OBJECT","ARRAY","BACK_SLASH","charCodeAt","FORWARD_SLASH","BACKSPACE","FORM_FEED","NEWLINE","CARRIAGE_RETURN","TAB","STRING_BUFFER_SIZE","alloc","size","Parser","this","tState","value","undefined","string","stringBuffer","stringBufferOffset","unicode","highSurrogate","key","mode","stack","state","bytes_remaining","bytes_in_sequence","temp_buffs","offset","toknam","code","keys","Object","i","l","length","toString","proto","prototype","onError","err","charError","buffer","Error","JSON","stringify","String","fromCharCode","appendStringChar","char","appendStringBuf","buf","start","end","copy","write","n","onToken","j","k","byteLength","intVal","parseInt","error","numberReviver","token","parseError","push","pop","parent","emit","onValue","text","result","Number","isNaN","match","module","exports","defineProperty","fragment","str","inputStr","endsWith","slice","args","lastIndexOf","Math","max","getFragment","_a","res","split","filter","s","map","toUpperCase","join","toLowerCase","camelize","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","apply","lookupAllPrefixes","prefixToUri","uriToPrefix","fragment_1","lookup_1","uri","options","lookupPrefix","mintOnUnknown","existingPrefixes","prefix","lookupUri","lookup_2","enumerable","get","fetchContext","fetchJson","cross_fetch_1","url","fetchFn","fetch","json","__createBinding","create","o","m","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","__exportStar","p","hasOwnProperty","call","fetchContext_1","URL","searchParams","append","prefixes","global","self","__self__","F","DOMException","support","Symbol","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","obj","indexOf","normalizeName","name","test","TypeError","normalizeValue","iteratorFor","items","iterator","shift","Headers","headers","forEach","Array","isArray","header","getOwnPropertyNames","consumed","body","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","view","Uint8Array","set","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","type","arrayBuffer","readAsText","chars","readArrayBufferAsText","formData","decode","parse","oldValue","has","callback","values","entries","methods","Request","input","method","upcased","credentials","signal","referrer","form","trim","bytes","replace","decodeURIComponent","Response","bodyInit","status","ok","statusText","clone","response","redirectStatuses","redirect","RangeError","location","message","constructor","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","parts","responseURL","responseText","ontimeout","onabort","open","withCredentials","responseType","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","send","polyfill","ponyfill","ctx","SaxesParser","EVENTS","ed5","ed2","NSed3","isS","isChar10","isChar","isNameStartChar","isNameChar","S_LIST","NAME_RE","isChar11","isNCNameStartChar","isNCNameChar","NC_NAME_RE","XML_NAMESPACE","XMLNS_NAMESPACE","rootNS","__proto__","xml","xmlns","XML_ENTITIES","amp","gt","lt","quot","apos","EOC","NL_LIKE","S_TEXT","S_XML_DECL_ENDING","NL","LESS","EQUAL","GREATER","QUESTION","CLOSE_BRACKET","isQuote","c","QUOTES","DOCTYPE_TERMINATOR","DTD_TERMINATOR","XML_DECL_NAME_TERMINATOR","ATTRIB_VALUE_UNQUOTED_TERMINATOR","nsPairCheck","parser","fail","isNCName","isName","EVENT_NAME_TO_HANDLER_NAME","xmldecl","processinginstruction","doctype","comment","opentagstart","attribute","opentag","closetag","cdata","ready","closed","_closed","opt","fragmentOpt","xmlnsOpt","trackPosition","position","fileName","nameStartCheck","nameCheck","processAttribs","processAttribsNS","pushAttrib","pushAttribNS","ns","assign","additional","additionalNamespaces","mapping","local","nsMappingCheck","processAttribsPlain","pushAttribPlain","stateTable","sBegin","sBeginWhitespace","sDoctype","sDoctypeQuote","sDTD","sDTDQuoted","sDTDOpenWaka","sDTDOpenWakaBang","sDTDComment","sDTDCommentEnding","sDTDCommentEnded","sDTDPI","sDTDPIEnding","sText","sEntity","sOpenWaka","sOpenWakaBang","sComment","sCommentEnding","sCommentEnded","sCData","sCDataEnding","sCDataEnding2","sPIFirstChar","sPIRest","sPIBody","sPIEnding","sXMLDeclNameStart","sXMLDeclName","sXMLDeclEq","sXMLDeclValueStart","sXMLDeclValue","sXMLDeclSeparator","sXMLDeclEnding","sOpenTag","sOpenTagSlash","sAttrib","sAttribName","sAttribNameSawWhite","sAttribValue","sAttribValueQuoted","sAttribValueClosed","sAttribValueUnquoted","sCloseTag","sCloseTagSawWhite","_init","openWakaBang","piTarget","entity","q","tags","tag","topNS","chunk","chunkPosition","prevI","carriedFromPrevious","forbiddenState","attribList","reportedTextBeforeRoot","reportedTextAfterRoot","closedRoot","sawRoot","xmlDeclPossible","xmlDeclExpects","entityReturnState","defaultXMLVersion","forceXMLVersion","setXMLVersion","positionAtNewLine","xmlDecl","version","encoding","standalone","column","ENTITIES","readyHandler","columnIndex","on","handler","off","makeError","msg","errorHandler","limit","lastCode","close","getCode10","final","getCode11","getCodeNorm","getCode","unget","captureTo","isNLLike","includes","captureToChar","captureNameChars","skipSpaces","currentXMLVersion","iBefore","doctypeHandler","fromCodePoint","owb","handleTextInRoot","handleTextOutsideRoot","loop","parsed","parseEntity","textHandler","commentHandler","cdataHandler","isQuestion","piHandler","target","xmldeclHandler","attributes","openTagStartHandler","openTag","openSelfClosingTag","closeTag","scanLoop","nonSpace","outRootLoop","qname","attr","attributeHandler","trimmed","_b","endHandler","index","resolvePrefix","colon","seen","Set","eqname","add","isSelfClosing","openTagHandler","_c","closeTagHandler","defined","num","NaN","ReadableWebToNodeStream","readable_stream_1","Readable","stream","super","bytesRead","released","getReader","_read","pendingRead","read","data","waitForReadToComplete","syncAndRelease","releaseLock","AbortController","AbortSignal","window","array","event","DynamicNestedLoopJoin","HashJoin","NestedLoopJoin","SymmetricHashJoin","MergeStream","AsyncIterator","MultiTransformIterator","SimpleTransformIterator","left","funRight","funJoin","_createTransformer","leftItem","transform","rightItem","right","funHash","addedDataListener","leftMap","Map","matches","matchIdx","destroy","readable","hasResults","_end","bind","eventName","_addDataListenerIfNeeded","ended","item","hash","_addDataListener","scheduleTask","usedLeft","rightMap","_cleanup","streams","arguments","_removeStream","idx","splice","attempts","variables","df_471_1","require","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_fallback_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__3_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__3_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__3_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus","https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__3_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus","urn_comunica_default_context_preprocess_actors_query_source_skolemize","urn_comunica_default_context_preprocess_mediators_main","urn_comunica_default_hash_bindings_mediators_main","urn_comunica_default_hash_quads_mediators_main","urn_comunica_default_optimize_query_operation_actors_group_sources","urn_comunica_default_optimize_query_operation_mediators_main","urn_comunica_default_query_parse_mediators_main","urn_comunica_default_query_result_serialize_mediators_serialize","urn_comunica_default_query_result_serialize_mediators_mediaType","urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat","urn_comunica_default_query_source_identify_hypermedia_mediators_main","urn_comunica_default_rdf_join_entries_sort_mediators_main","urn_comunica_default_rdf_join_selectivity_mediators_main","urn_comunica_default_rdf_metadata_accumulate_mediators_main","urn_comunica_default_rdf_serialize_mediators_serialize","urn_comunica_default_rdf_serialize_mediators_mediaType","urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat","urn_comunica_default_rdf_update_quads_mediators_main","urn_comunica_default_query_operation_mediators_main","urn_comunica_default_query_process_mediators_main","urn_comunica_default_query_source_identify_mediators_main","urn_comunica_default_rdf_join_mediators_main","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator","urn_comunica_default_http_invalidate_mediators_main","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator","urn_comunica_default_http_mediators_main","urn_comunica_default_merge_bindings_context_mediators_main","urn_comunica_default_dereference_rdf_mediators_main","urn_comunica_default_rdf_metadata_mediators_main","urn_comunica_default_rdf_metadata_extract_mediators_main","urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main","urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main","urn_comunica_default_rdf_join_actors_inner_hash","urn_comunica_default_rdf_join_actors_inner_symmetric_hash","urn_comunica_default_rdf_join_actors_inner_nested_loop","urn_comunica_default_rdf_join_actors_inner_multi_smallest","urn_comunica_default_optimize_query_operation_actors_filter_pushdown","urn_comunica_default_init_actors_query","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActorQueryResultSerializeSparqlJson_jsonld_ActorQueryResultSerializeSparqlJson_default_observer","https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer","urn_comunica_default_query_process_actors_sequential","urn_comunica_default_query_source_identify_actors_hypermedia","urn_comunica_default_rdf_join_actors_inner_multi_bind","urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations","urn_comunica_default_optimize_query_operation_actors_join_connected","urn_comunica_default_optimize_query_operation_actors_bgp_to_join","urn_comunica_default_optimize_query_operation_actors_join_bgp","urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive","actor_init_query_1","engineDefault","QueryEngine","QueryEngineBase","engine","core_1","ActorAbstractMediaTyped","Actor","run","action","typedAction","handle","runHandle","handleMediaType","context","mediaTypes","getMediaTypes","mediaTypeFormats","getMediaTypeFormats","testHandle","testMediaType","testMediaTypeFormats","ActorAbstractMediaTyped_1","ActorAbstractMediaTypedFixed","scale","priorityScale","mediaTypePriorities","_index","freeze","mediaType","testHandleChecked","_context","bus_query_operation_1","context_entries_1","asynciterator_1","rdf_data_factory_1","rdf_string_1","sparqlalgebrajs_1","PathVariableObjectIterator_1","DF","DataFactory","ActorAbstractPath","ActorQueryOperationTypedMediated","predicateType","testOperation","operation","predicate","generateVariable","path","subject","object","variable","isPathArbitraryLengthDistinct","KeysQueryOperation","isPathArbitraryLengthDistinctKey","ActorQueryOperation","getSafeBindings","mediatorQueryOperation","mediate","FACTORY","createDistinct","predicateStarGraphVariable","graph","bindingsFactory","sources","getPathSources","predVar","createPath","findGraphs","createUnion","assignPatternSources","createPattern","results","passedGraphs","bindingsStream","multiTransform","bindings","graphValue","EmptyIterator","TransformIterator","async","it","BufferedIterator","getObjectsPredicateStar","count","maxBufferSize","autoStart","metadata","getObjectsPredicateStarEval","emitFirstSubject","termType","PathVariableObjectIterator","getProperty","metadataInner","cardinality","termHashes","counter","termString","termToString","_push","thisVariable","getSubjectAndObjectBindingsPredicateStar","subjectVar","objectVar","subjectVal","objectVal","termHashesGlobal","termHashesCurrentSubject","objects","objectsArray","Algebra","types","ALT","SEQ","flatMap","subOp","INV","ONE_OR_MORE_PATH","ZERO_OR_MORE_PATH","ZERO_OR_ONE_PATH","LINK","NPS","source","getOperationSource","pattern","assignOperationSource","Factory","maxRunningOperations","runningOperations","pendingOperations","pushAsResult","pendingOperation","runningOperation","_fillBufferAsync","setProperty","lastCount","bus_context_preprocess_1","ActorContextPreprocessConvertShortcuts","ActorContextPreprocess","_action","expandShortcuts","contextKeyShortcuts","ActionContextKey","delete","lru_cache_1","ActorContextPreprocessQuerySourceIdentify","cache","cacheSize","LRUCache","httpInvalidator","addInvalidateListener","clear","KeysInitQuery","querySourcesUnidentified","querySourcesUnidentifiedExpanded","all","querySource","expandSource","querySources","identifySource","querySourceUnidentified","statisticDereferenceLinks","KeysStatistics","dereferencedLinks","updateStatistic","referenceValue","seed","mediatorContextPreprocess","ActionContext","ensureActionContext","sourcePromise","mediatorQuerySourceIdentify","QuerySourceSkolemized_1","utils_1","ActorContextPreprocessQuerySourceSkolemize","KeysQuerySourceIdentify","sourceIds","getSafe","sourceWrapper","QuerySourceSkolemized","getSourceId","metadata_1","innerSource","sourceId","getSelectorShape","queryBindings","operationMapped","deskolemizeOperation","ArrayIterator","MetadataValidationState","canContainUndefs","skolemizeBindingsStream","queryBoolean","queryQuads","skolemizeQuadStream","queryVoid","data_factory_1","rdf_terms_1","skolemizeTerm","term","BlankNodeScoped","namedNode","SKOLEM_PREFIX","skolemizeQuad","quad","mapTermsNested","skolemizeBindings","deskolemizeTerm","skolemized","startsWith","colonSeparator","termLabel","blankNode","deskolemizeTermNestedThrowing","subTerm","deskolemized","ret","inheritMetadata","Util","mapOperation","PATTERN","op","factory","recurse","PATH","ActorContextPreprocessSetDefaults","defaultFunctionArgumentsCache","initialize","setDefault","queryTimestamp","Date","KeysCore","log","logger","functionArgumentsCache","hypermediaSourcesAggregatedStores","queryFormat","language","graphqlSingularizeVariables","ActorContextPreprocessSourceToDestination","KeysRdfUpdateQuads","destination","bus_hash_bindings_1","hash_js_1","canonicalize","ActorHashBindingsSha1","ActorHashBindings","allowHashCollisions","hashFunction","sha1","update","fromEntries","digest","hashCollisions","bus_hash_quads_1","ActorHashQuadsSha1","ActorHashQuads","quadToStringQuad","ActorInitQueryBase_1","process","globalThis","ActorInitQuery","ActorInitQueryBase","bus_init_1","ActorInit","actorInitQuery","query","queryOfType","expectedType","resultType","execute","output","queryOrExplain","explain","explainMode","actionContext","noCache","invalidateHttpCache","mediatorQueryProcess","internalToFinalResult","getResultMediaTypes","mediatorQueryResultSerializeMediaTypeCombiner","getResultMediaTypeFormats","mediatorQueryResultSerializeMediaTypeFormatCombiner","resultToString","queryResult","finalToInternalResult","mediatorQueryResultSerialize","mediatorHttpInvalidate","internalResult","quadStream","finalResult","QueryEngineBase_1","bus_optimize_query_operation_1","bus_rdf_update_quads_1","ActorOptimizeQueryOperationAssignSourcesExhaustive","ActorOptimizeQueryOperation","getDataDestinationValue","shape","doesShapeAcceptOperation","assignExhaustive","queryString","subOperation","createAlt","SERVICE","CONSTRUCT","createConstruct","template","DELETE_INSERT","createDeleteInsert","insert","where","ActorOptimizeQueryOperationBgpToJoin","bgp","createJoin","patterns","Keys_1","ActorOptimizeQueryOperationConstructDistinct","distinctConstruct","construct","AF","ActorOptimizeQueryOperationDescribeToConstructsSubject","DESCRIBE","operationOriginal","operations","terms","templatePattern","BGP","variablePatterns","JOIN","ActorOptimizeQueryOperationFilterPushdown","splitConjunctive","expression","expressionType","expressionTypes","OPERATOR","operator","logDebug","reduce","createFilter","getSources","sourceShapes","repeat","iterations","maxIterations","shouldAttemptPushDown","getExpressionVariables","isModified","filterPushdown","mergeConjunctive","FILTER","nestedExpressions","getNestedFilterExpressions","previous","current","createOperatorExpression","aggressivePushdown","some","sourceAdder","src","recurseOperation","AGGREGATE","WILDCARD","EXISTENCE","inScopeVariables","NAMED","uniqTerms","arg","TERM","getOverlappingOperations","expressionVariables","fullyOverlapping","partiallyOverlapping","notOverlapping","inputVariables","variablesSubSetOf","variablesIntersect","isExpressionFalse","EXPRESSION","EXTEND","createExtend","joins","NOP","PROJECT","createProject","UNION","unions","VALUES","LEFT_JOIN","pushIntoLeftJoins","rightVariables","createLeftJoin","pushEqualityIntoPatterns","pushableResult","getEqualityExpressionPushableIntoPattern","originalMetadata","equals","createValues","MINUS","ASK","DISTINCT","FROM","GRAPH","GROUP","ORDER_BY","REDUCED","SLICE","COMPOSITE_UPDATE","LOAD","CLEAR","CREATE","DROP","ADD","MOVE","COPY","isLiteralWithCanonicalLexicalForm","datatype","varsA","varsB","varA","varB","varsNeedles","varsHaystack","every","childData","ActorOptimizeQueryOperationGroupSources","groupOperation","groupedInput","scopedSource","removeOperationSource","inputs","subInput","clusters","clusterOperationsWithEqualSources","newInputs","moveSourceAnnotationUpwardsIfPossible","multiFactoryMethod","createSeq","groupOperationMulti","factoryMethod","flatten","nestedMerges","cluster","merged","operationsIn","sourceOperations","sourcelessOperations","ActorOptimizeQueryOperationJoinBgp","createBgp","ActorOptimizeQueryOperationJoinConnected","oldClusters","newClusters","clusterIteration","subJoins","oldCluster","entry","joined","newEntry","haveOverlappingVariables","variablesA","variablesB","variableA","ActorOptimizeQueryOperationPruneEmptySourceOperations","collectedOperations","collectMultiOperationInputs","emptyOperations","checkOperation","collectedOperation","iri","hasSourceResults","mapMultiOperation","children","hasEmptyOperation","emptyOperation","subSubOperation","inputType","multiOperationFactory","nonEmptyInputs","traverse","useAskIfSupported","askOperation","createAsk","ActorOptimizeQueryOperationRewriteAdd","defaultGraph","ActorOptimizeQueryOperationRewriteCopy","createCompositeUpdate","createDrop","createAdd","silent","ActorOptimizeQueryOperationRewriteMove","updates","ActorQueryOperationAsk","_operation","runOperation","take","toArray","ActorQueryOperationBgpJoin","BindingsToQuadsIterator_1","ActorQueryOperationConstruct","getVariables","concat","getTermsNested","meta","order","availableOrders","BindingsToQuadsIterator","blankNodeCounter","bindTerm","bindQuad","boundTerm","localizeBlankNode","localizeQuad","bindTemplate","x","Boolean","ActorQueryOperationDistinctHash","mediatorHashQuads","outputQuads","getSafeQuads","newHashFilterQuads","outputBindings","newHashFilter","mediatorHashBindings","hashes","_quad","bindings_factory_1","expression_evaluator_1","ActorQueryOperationExtend","BindingsFactory","mediatorMergeBindingsContext","AsyncEvaluator","getAsyncExpressionContext","innerVariable","config","evaluator","evaluate","isExpressionError","logWarn","bindingsToString","outputMetadata","ActorQueryOperationFilter","outputRaw","validateQueryOutput","evaluateAsEBV","ActorQueryOperationFromQuad","copyOperation","recursiveCb","copiedOperation","ALGEBRA_TYPES","applyOperationDefaultGraph","defaultGraphs","joinOperations","bgps","unionOperations","paths","applyOperationNamedGraph","namedGraphs","patternGraph","pat","namedGraph","createOperation","default","named","GroupsState_1","ActorQueryOperationGroup","aggregate","aggregates","agg","sparqleeConfig","groups","GroupsState","bindingsStreamInner","collectResults","consumeBindings","catch","groupsInitializer","groupVariables","waitCounter","resultHasBeenCalled","check","resultCheck","grouper","_","groupHash","hashBindings","groupInitializer","groupInitializerDefined","group","aggregators","put","subtractWaitCounterAndCollect","AsyncAggregateEvaluator","handleResultCollection","rows","groupBindings","returnBindings","single","emptyValue","waitResolver","ActorQueryOperationJoin","mediatorJoin","ActorQueryOperationLeftJoin","ActorQueryOperationMinus","ActorQueryOperationNop","SingletonIterator","SortIterator_1","ActorQueryOperationOrderBy","POSITIVE_INFINITY","expr","expressions","extractSortExpression","isAscending","transformedStream","sortedStream","SortIterator","compare","orderTypes","sort","windowLength","isFinite","sorted","mid","trunc","_flush","actor_abstract_path_1","actor_query_operation_union_1","ActorQueryOperationPathAlt","subOperations","subPredicate","UnionIterator","subMeta","ActorQueryOperationUnion","unionMetadata","mediatorRdfMetadataAccumulate","ActorQueryOperationPathInv","invPath","ActorQueryOperationPathLink","ActorQueryOperationPathNps","blank","iris","ActorQueryOperationPathOneOrMore","distinct","starEval","createOneOrMorePath","createInv","ActorQueryOperationPathSeq","joiner","generatedVariableNames","nextJoiner","generatedVariableName","joinMetadata","ActorQueryOperationPathZeroOrMore","sVar","oVar","entities","subjectGraphHash","objectGraphHash","pred","ActorQueryOperationPathZeroOrOne","extra","bindingsOne","varP","bindingsZero","createTermExpression","prepend","ActorQueryOperationProject","deleteVariables","subVariable","deleteVariable","scopedBlankNodesCache","BlankNodeBindingsScoped","scopedBlankNode","ActorQueryOperationReducedHash","ActorQueryOperationService","forceSparqlEndpoint","ActorQueryOperationSlice","limitIndicator","sliceStream","sliceMetadata","hasLength","subMetadata","min","ActorQueryOperationSource","httpRequests","physicalQueryPlanLogger","logOperation","physicalQueryPlanNode","mergedContext","merge","getMetadataQuads","getMetadataBindings","unionVariables","flat","metadatas","accumulatedMetadata","appendingMetadata","invalidateListener","invalidate","outputsRaw","outputType","outputs","ActorQueryOperationClear","throwOnReadOnly","graphs","mediatorUpdateQuads","deleteGraphs","requireExistence","dropGraphs","ActorQueryOperationUpdateCompositeUpdate","subResult","getSafeVoid","ActorQueryOperationCreate","createGraphs","requireNonExistence","actor_query_operation_construct_1","ActorQueryOperationUpdateDeleteInsert","whereBindings","quadStreamInsert","quadStreamDelete","ActorQueryOperationDrop","ActorQueryOperationLoad","subContext","lenient","ActorQueryOperationValues","ActorQueryOperationTyped","bus_query_parse_1","graphql_to_sparql_1","ActorQueryParseGraphql","ActorQueryParse","graphqlToSparql","Converter","requireContext","jsonLdContext","singularizeVariables","graphqlToSparqlAlgebra","sparqljs_1","ActorQueryParseSparql","parsedSyntax","baseIRI","sparqlStar","base","translate","quads","blankToVariable","bus_query_process_1","ActorQueryProcessExplainLogical","ActorQueryProcess","queryProcessor","optimize","ActorQueryProcessExplainParsed","MemoryPhysicalQueryPlanLogger_1","ActorQueryProcessExplainPhysical","MemoryPhysicalQueryPlanLogger","toCompactString","toJson","numberToString","toLocaleString","minimumFractionDigits","maximumFractionDigits","planNodes","logicalOperator","physicalOperator","node","parentNode","actor","planNode","rawNode","rootNode","planParentNode","stashChildren","unstashChild","appendMetadata","planNodeToJson","logical","physical","getLogicalMetadata","compactMetadata","child","childrenGrouped","lastSubChild","at","getPlanHash","childrenCompact","occurrences","firstOccurrence","compactMetadataValue","quadToString","lines","nodeToCompactString","id","indent","bindOperation","bindOperationCardinality","cardinalityReal","timeSelf","timeLife","ActorQueryProcessSequential","queryParseOutput","mediatorQueryParse","initialBindings","materializeOperation","mediatorOptimizeQueryOperation","bus_query_result_serialize_1","RdfString","ActorQueryResultSerializeJson","ActorQueryResultSerializeFixedMediaTypes","_mediaType","wrap","element","empty","setTimeout","ActorQueryResultSerializeRdf","ActorQueryResultSerialize","mediatorMediaTypeCombiner","mediatorRdfSerialize","mediatorMediaTypeFormatCombiner","ActorQueryResultSerializeSimple","ActorQueryResultSerializeSparqlCsv","bindingToCsvBindings","stringValue","replaceAll","bindingsAction","ActionObserverHttp","ActionObserver","requests","bus","subscribeObserver","onRun","_actor","_output","ActorQueryResultSerializeSparqlJson","bindingToJsonBindings","literal","jsonValue","head","vars","resultStream","first","cb","emitMetadata","httpObserver","rdf_string_ttl_1","ActorQueryResultSerializeSparqlTsv","bindingToTsvBindings","XmlSerializer_1","ActorQueryResultSerializeSparqlXml","bindingToXmlBindings","valueToXmlValue","serializer","XmlSerializer","serializeNode","identation","formatTag","escape","ActorQueryResultSerializeStats","pushHeader","createStat","startTime","delay","createFooter","now","performance","time","hrtime","QUAD_TERM_NAMES_VARS","QUAD_TERM_NAMES","ActorQueryResultSerializeTable","padding","columnWidth","pad","labels","label","createRow","getTerms","sparqljson_to_tree_1","ActorQueryResultSerializeTree","bindingsStreamToGraphQl","converterSettings","converter","schema","bindingsToTree","materializeRdfJsTerms","ActorQueryResultSerializeTree_1","bus_query_source_identify_hypermedia_1","QuerySourceSparql_1","ActorQuerySourceIdentifyHypermediaSparql","ActorQuerySourceIdentifyHypermedia","testMetadata","forceSourceType","sparqlService","checkUrlSuffix","filterFactor","logInfo","QuerySourceSparql","mediatorHttp","bindMethod","forceHttpGet","countTimeout","fetch_sparql_endpoint_1","VAR_COUNT","COUNT_INFINITY","endpointFetcher","SparqlEndpointFetcher","lastSourceContext","prefixVariableQuestionMark","SELECTOR_SHAPE","operationIn","operationPromise","joinBindings","addBindingsToOperation","selectQuery","operationToSelectQuery","operationCanContainUndefs","queryBindingsRemote","attachMetadata","rawStream","fetchTriples","operationToQuery","fetchAsk","fetchUpdate","variablesCount","countQuery","operationToCountQuery","cachedCardinality","timeoutHandler","clearTimeout","cardinalityValue","addBindings","binding","createGroup","createBoundAggregate","createWildcardExpression","toSparql","leftjoin","union","scopedVariables","v","a","b","localeCompare","val","endpoint","fetchBindings","rawData","getContextLogger","warn","operationType","bus_query_source_identify_1","QuerySourceHypermedia_1","ActorQuerySourceIdentify","QuerySourceHypermedia","maxIterators","aggregateTraversalStore","mediatorMetadata","mediatorMetadataExtract","mediatorMetadataAccumulate","mediatorDereferenceRdf","mediatorQuerySourceIdentifyHypermedia","mediatorRdfResolveHypermediaLinks","mediatorRdfResolveHypermediaLinksQueue","warningMessage","LinkedRdfSourcesAsyncRdfIterator","queryBindingsOptions","firstUrl","sourceStateGetter","started","currentIterators","iteratorsPendingCreation","iteratorsPendingTermination","_reading","kickstart","propertyName","preflightMetadata","sourceState","accumulateMetadata","returnMetadata","canStartNewIterator","startIteratorsForNextUrls","handledDatasets","startIterator","canStartNewIteratorConsiderReadable","areIteratorsRunning","startSource","receivedEndEvent","receivedMetadata","_destination","_fillBuffer","previousMetadata","updateMetadata","metadataIn","getSourceLinks","nextUrls","linkQueue","getLinkQueue","nextUrl","link","syncError","metadataNew","metadataToInvalidate","isRunning","canClose","nextLink","nextSourceState","isCloseable","_requireQueueEmpty","isEmpty","LinkedRdfSourcesAsyncRdfIterator_1","MediatedLinkedRdfSourcesAsyncRdfIterator","aggregatedStore","wasForcefullyClosed","handledUrls","cause","requireQueueEmpty","hasRunningIterators","links","traversalTracker","discoveredLinks","containedSources","unionDefaultGraph","import","setBaseMetadata","actor_query_source_identify_rdfjs_1","MediatedLinkedRdfSourcesAsyncRdfIterator_1","StreamingStoreMetadata_1","aggregateStore","mediators","logWarning","sourcesState","getSourceCached","getAggregateStore","QuerySourceRdfJs","listener","addIteratorCreatedListener","removeIteratorCreatedListener","getSource","dereferenceRdfOutput","rdfMetadataOutput","triples","requestTime","dataset","aggregatedStores","StreamingStoreMetadata","rdf_streaming_store_1","StreamingStore","store","metadataAccumulator","runningIterators","iteratorCreatedListeners","baseMetadata","ClosableTransformIterator","onClose","getStore","countQuads","updateMetadataState","updateStates","QuerySourceRdfJs_1","ActorQuerySourceIdentifyRdfJs","nullifyVariables","quotedTripleFiltering","someTermsNested","hasDuplicateVariables","filterTermsNested","features","filterMatchingQuotedQuads","setMetadata","quadsToBindings","wouldRequirePostFiltering","someTerms","variablesOptional","bus_rdf_join_entries_sort_1","ActorRdfJoinEntriesSortCardinality","ActorRdfJoinEntriesSort","entryLeft","entryRight","bus_rdf_join_1","asyncjoin_1","ActorRdfJoinHash","ActorRdfJoin","logicalType","physicalName","limitEntries","requiresVariableOverlap","getOutput","getMetadatas","overlappingVariables","constructResultMetadata","getJoinCoefficients","requestInitialTimes","getRequestInitialTimes","requestItemTimes","getRequestItemTimes","persistedItems","blockingItems","ActorRdfJoinMultiBindSource","canHandleUndefs","entriesUnsorted","getEntriesWithMetadatas","sortJoinEntries","smallestStream","smallestMetadata","remainingEntries","createOperationFromEntries","chunkedStreams","ChunkedIterator","blockSize","physicalPlanMetadata","bindIndex","mediatorJoinEntriesSort","operationModified","remainingRequestInitialTimes","remainingRequestItemTimes","testingOperation","selectorShape","selectivities","mediatorJoinSelectivity","selectivity","selectivityModifier","cardinalityRemaining","sum","ActorRdfJoinMultiBind","minMaxCardinalityRatio","isLeaf","createBindStream","bindOrder","baseStream","operationBinder","optional","autoStartSubBindings","binder","bindFilter","bindingsMerger","subBindings","joinLeftMetadata","joinRightMetadatas","operationBindings","canBindWithOperation","valid","receiveInitialCostRemaining","receiveItemCostRemaining","ActorRdfJoinMultiEmpty","getCardinality","joinVariables","_metadatas","ActorRdfJoinMultiSmallestFilterBindings","limitEntriesMin","entriesSorted","second","secondIndex","secondSharedVariables","sharedVariables","variableFirst","variableSecond","remaining","secondIn","remainingIn","smallestStream1","commonVariables","smallestStream1Projected","commonVariable","filterBindings","joinedEntry","KeysRdfJoin","lastPhysicalJoin","unshift","firstIndex","remain","mul","ActorRdfJoinMultiSmallest","smallestEntry1","smallestEntry2","firstEntry","entriesWithMetadata","acc","ActorRdfJoinNestedLoop","ActorRdfJoinNone","ActorRdfJoinSingle","includeInLogs","ActorRdfJoinSymmetricHash","BindingsIndex_1","ActorRdfJoinMinusHashUndef","BindingsIndex","contains","bufferMetadata","hashTerm","isBindingsValid","dataIt","dataKey","subDataIt","containsRecursive","validKeys","dataIndexes","subDatas","subKey","ActorRdfJoinMinusHash","hashNonClashing","actor_rdf_join_inner_multi_bind_1","ActorRdfJoinOptionalBind","BindingsIndexDef_1","BindingsIndexUndef_1","ActorRdfJoinOptionalHash","blocking","constructIndex","undef","BindingsIndexUndef","BindingsIndexDef","getFirst","indexBindings","indexActive","iterators","hashFn","getRecursive","matchingRecursive","getRecursiveFirst","ActorRdfJoinOptionalNestedLoop","bus_rdf_join_selectivity_1","ActorRdfJoinSelectivityVariableCounting","ActorRdfJoinSelectivity","accuracy","getPatternCost","cost","getJoinTypes","operation1","operation2","joinTypes","JoinTypes","unboundSS","unboundSP","unboundSO","unboundSG","boundSS","boundSP","boundSO","boundSG","unboundPS","unboundPP","unboundPO","unboundPG","boundPS","boundPP","boundPO","boundPG","unboundOS","unboundOP","unboundOO","unboundOG","boundOS","boundOP","boundOO","boundOG","unboundGS","unboundGP","unboundGO","unboundGG","boundGS","boundGP","boundGO","boundGG","getOperationsPairwiseJoinCost","MAX_PAIRWISE_COST","joinType","getOperationsJoinCost","totalCost","costEntries","pattern1","pattern2","factor","bus_rdf_metadata_accumulate_1","ActorRdfMetadataAccumulateCanContainUndefs","ActorRdfMetadataAccumulate","ActorRdfMetadataAccumulateCardinality","subsetOf","ActorRdfMetadataAccumulatePageSize","pageSize","ActorRdfMetadataAccumulateRequestTime","bus_rdf_serialize_1","jsonld_streaming_serializer_1","ActorRdfSerializeJsonLd","ActorRdfSerializeFixedMediaTypes","writer","JsonLdSerializer","space","jsonStringifyIndentSpaces","pipe","n3_1","ActorRdfSerializeN3","StreamWriter","format","arrayify_stream_1","shaclc_write_1","ActorRdfSerializeShaclc","errorOnUnused","extendedSyntax","RdfJsQuadDestination_1","ActorRdfUpdateQuadsRdfJsStore","ActorRdfUpdateQuadsDestination","getContextDestination","remove","getDestination","RdfJsQuadDestination","event_emitter_promisify_1","promisifyEventEmitter","_requireExistence","_dropGraphs","deleteGraph","allQuads","stringToTerm","eventEmitter","once","immutable_1","bindingsToString_1","Bindings","dataFactory","contextHolder","mapIterable","iteratorToIterable","fn","other","createBindingsWithContexts","mergeWith","merger","mergeContext","contextMergeHandlers","otherContext","allKeys","newContextData","handledKeys","keysSetOtherContext","keysBothContext","occursInBoth","setContextEntry","setContextEntryRaw","deleteContextEntry","deleteContextEntryRaw","getContext","getContextEntry","iterable","Bindings_1","mergeHandlers","fromBindings","fromRecord","record","raw","ActorHttpInvalidate","ActorHttpInvalidate_1","ActorHttpInvalidateListenable","invalidateListeners","bnodeCounter","getSafeBoolean","getBaseExpressionContext","extensionFunctionCreator","extensionFunctions","functionNamedNode","getExpressionContext","_mediatorQueryOperation","bnode","exists","createExistenceResolver","not","readOnly","ActorQueryOperation_1","operationName","cachifyMetadata","ActorQueryOperationTyped_1","materializeTerm","createValuesFromBindings","newBinding","strictTargetVariables","originalBindings","extend","project","bindingKey","curVariable","recursionResult","recursionResultExpression","recursionResultInput","valueBindings","keyString","aggregator","BusQueryOperation","BusIndexed","actorIdentifierFields","actionIdentifierFields","ClosableIterator","_source","DESTINATION","destinationClose","destinationEmitError","destinationSetReadable","removeListener","actor_abstract_mediatyped_1","sourceType","QuadTermUtil_1","isTermVariable","getDuplicateElementLinks","variableElements","duplicateVariables","forEachTermsNested","duplicateElementLinks","elements","remainingElements","elementVariables","forceEstimateCardinality","getMetadataCb","metadataRaw","quadsMetadataToBindingsMetadata","validateMetadataQuads","metadataQuads","quadsOrderToBindingsOrder","orderDef","quadsOrder","mappedVariables","variableName","direction","filterNonDefaultQuads","reduceTermsNested","filteredOutput","keyLeft","keysLeft","valueLeft","getValueNestedPath","keysRight","matchPatternMappings","instrumentIterator_1","baseArray","el","constructState","partialMetadata","cardinalityJoined","cardinalityThis","variableOccurrences","multiOccurrenceVariables","entriesWithoutCommonVariables","hasCommon","leftWithoutCommonVariables","parentPhysicalQueryPlanNode","planMetadata","instrumentIterator","counters","cardinalities","joinCoefficients","consumeChunkAsIterator","_transform","instrumentIteratorInner","top","_profileInstrumented","readOld","ActorRdfSerialize","ActorRdfUpdateQuads","actor_context_preprocess_query_source_skolemize_1","ActorRdfUpdateQuads_1","deskolemizeStream","deskolemizeQuad","deskolemize","isDataDestinationRawType","dataDestination","fileUrl","hashPosition","CONTEXT_KEY_LOGGER","includeCredentials","auth","httpTimeout","httpBodyTimeout","httpRetryCount","httpRetryDelay","httpRetryOnServerError","recoverBrokenLinks","datetime","httpProxyHandler","cliArgsHandlers","documentLoader","strictValues","parserOptions","processingHtmlScript","extractAllScripts","sourcesBinding","setRaw","getRaw","hasRaw","contexts","keyName","toJS","for","maybeActionContext","ContextEntries_1","beforeActors","subscribe","addDependencies","runObservable","deinitialize","getDefaultLogData","dataActual","logTrace","trace","debug","info","logError","logFatal","fatal","actors","observers","dependencyLinks","reorderForDependencies","observer","unsubscribe","unsubscribeObserver","publish","reply","dependent","dependencies","dependency","existingDependencies","actorsAfter","actorAfter","dependentPos","activeActorAfterId","validLink","activeActorAfter","Bus_1","Bus","actorsIndex","actorId","getActorIdentifier","actionId","getActionIdentifier","_undefined_","field","ActionContext_1","mediateActor","mediateWith","singleBindingsScope","TermTransformer_1","Consts_1","TypeHandling_1","sharedContext","separator","termTransformer","TermTransformer","superTypeProvider","termToNumericOrError","isSubTypeOf","TypeAlias","SPARQL_NUMERIC","transformLiteral","aggregatorComponent","variableValues","component","canSkip","addSeen","E","functions_1","Helpers_1","Aggregator_1","Average","AggregatorComponent","summer","regularFunctions","RegularOperator","ADDITION","divider","DIVISION","integer","toRDF","internalTerm","IntegerLiteral","Count","GroupConcat","lastLanguageValid","lastLanguage","langString","Ordering_1","Max","Min","Sample","Sum","bindingValues","putBindings","handleDistinct","bindingList","snd","Average_1","Count_1","GroupConcat_1","Max_1","Min_1","Sample_1","Sum_1","avg","group_concat","sample","BaseAggregateEvaluator_1","SyncEvaluator_1","AggregateEvaluator","BaseAggregateEvaluator","throwError","SyncEvaluator","completeContext","errorOccurred","isWildcard","wildcardAggregator","startTerm","safeThrow","AsyncEvaluator_1","AlgebraTransformer_1","DateTimeHelpers_1","AsyncRecursiveEvaluator_1","typeCache","discoverer","getSuperType","defaultTimeZone","extractTimeZone","algExpr","creator","baseContext","transformer","AlgebraTransformer","transformAlgebra","AsyncRecursiveEvaluator","coerceEBV","evaluateAsInternal","SyncRecursiveEvaluator_1","SyncRecursiveEvaluator","Err","BaseExpressionEvaluator_1","BaseExpressionEvaluator","subEvaluators","ExpressionType","Term","_mapping","Variable","Operator","evalOperator","SpecialOperator","evalSpecialOperator","Named","evalNamed","Existence","evalExistence","Aggregate","evalAggregate","AsyncExtension","evalAsyncExtension","InvalidExpressionType","argPromises","argResults","applyAsync","_evalAsyncArgs","NoExistenceHook","BooleanLiteral","NoAggregator","transformRDFTermUnsafe","aggregators_1","WildcardCountAggregator_1","Aggregator","WildcardCountAggregator","EmptyAggregateError","expressionToVar","UnboundVariableError","SyncExtension","evalSyncExtension","applySynchronously","Expressions_1","Serialization_1","InvalidArgumentTypes","STR","EBVCoercionError","valueTerm","RDFsubject","RDFpredicate","RDFobject","Literal","typedValue","dataType","strValue","NumericLiteral","specificFormatter","TypeURL","XSD_INTEGER","toFixed","XSD_DECIMAL","XSD_FLOAT","XSD_DOUBLE","jsExponential","toExponential","jsMantisse","jsExponent","exponent","XSD_BOOLEAN","RDF_LANG_STRING","XSD_STRING","XSD_DATE_TIME","serializeDateTime","XSD_TIME","serializeTime","XSD_DATE","serializeDate","DurationLiteral","XSD_DURATION","serializeDuration","XSD_DAY_TIME_DURATION","XSD_YEAR_MONTH_DURATION","NonLexicalLiteral","openWorldType","lit","BaseFunction","definition","monomorph","handleInvalidTypes","concreteFunction","arity","overloads","search","functionClass","checkArity","expressions_1","OverloadTree_1","identifier","Builder","overloadTree","OverloadTree","collected","collect","wrapInvalidLexicalProtected","func","InvalidLexicalForm","argTypes","addInvalidHandling","addOverload","from","to","impl","getImplementationExact","UnexpectedError","onUnary","onUnaryTyped","onBinary","onBinaryTyped","onTernaryTyped","a1","a2","a3","onTernary","onQuaternaryTyped","a4","onTerm1","onTerm3","t1","t2","t3","onQuad1","onLiteral1","onBoolean1","onBoolean1Typed","onString1","onString1Typed","onLangString1","onStringly1","SPARQL_STRINGLY","onStringly1Typed","onNumeric1","onDateTime1","numericConverter","evalHelper","decimal","float","double","arithmetic","numberTest","numeric","bool","stringTest","booleanTest","dateTimeTest","DecimalLiteral","FloatLiteral","DoubleLiteral","StringLiteral","lang","LangStringLiteral","date","DateTimeLiteral","variableExpression","Parsing_1","xsdToString","declare","xsdToFloat","parseXSDFloat","CastError","xsdToDouble","xsdToDecimal","parseXSDDecimal","xsdToInteger","parseXSDInteger","xsdToDatetime","dateTime","parseDateTime","hours","minutes","seconds","xsdToBoolean","xsdToTime","TimeLiteral","parseTime","xsdToDate","DateLiteral","parseDate","xsdToDuration","parseDuration","xsdToDayTimeDuration","DayTimeDurationLiteral","trimToDayTimeDuration","parseDayTimeDuration","xsdToYearMonthDuration","YearMonthDurationLiteral","trimToYearMonthDuration","parseYearMonthDuration","depth","implementation","generalOverloads","literalOverLoads","promotionCount","getSubtree","overrideType","generalType","asGeneralType","cacheIter","searchIndex","literalExpression","isLiteralTermExpression","searchStack","getSubTreeWithArg","startIndex","addToCache","getDefault","lruCache","argumentTypes","_addOverload","argumentType","_argumentTypes","nextTree","newNode","asOverrideType","typePromotion","addPromotedOverload","typeToPromote","conversionFunction","funcConf","concreteType","asKnownLiteralType","subExtensionTable","superTypeDictTable","getSuperTypes","matchType","tree","prioA","matchTypeA","prioB","matchTypeB","sortedType","bignumber_js_1","relative_to_absolute_iri_1","spark_md5_1","uuid","SpecAlgos_1","Core_1","X","_1","NOT","unaryPlus","UPLUS","unaryMinus","UMINUS","multiplication","MULTIPLICATION","BigNumber","times","toNumber","division","div","ExpressionError","addition","plus","dur","addDurationToDateTime","defaultedDurationRepresentation","defaultedDateTimeRepresentation","subtraction","SUBTRACTION","minus","date1","date2","elapsedDuration","negateDuration","equality","toUTCDate","getTime","RegularFunction","_left","_right","RDFEqualTypeError","RDFTermEqual","dur1","dur2","yearMonthDurationsToMonths","defaultedYearMonthDurationRepresentation","dayTimeDurationsToSeconds","defaultedDayTimeDurationRepresentation","time1","time2","inequality","NOT_EQUAL","lesserThan","LT","dur1L","dur2L","greaterThan","GT","lesserThanEqual","LTE","greaterThanEqual","GTE","isIRI","IS_IRI","isBlank","IS_BLANK","isLiteral","IS_LITERAL","isNumeric","IS_NUMERIC","LANG","DATATYPE","NamedNode","IRI","STRDT","STRLANG","UUID","v4","STRUUID","STRLEN","SUBSTR","startingLoc","sub","UCASE","LCASE","STRSTARTS","arg1","arg2","IncompatibleLanguageOperation","STRENDS","CONTAINS","STRBEFORE","STRAFTER","ENCODE_FOR_URI","encodeURI","langmatches","LANG_MATCHES","range","langMatches","REGEX","flags","REPLACE","replacement","abs","ABS","round","ROUND","ceil","CEIL","floor","FLOOR","rand","RAND","random","NOW","toDateTimeRepresentation","timeZone","year","YEAR","month","MONTH","day","DAY","HOURS","MINUTES","SECONDS","timezone","TIMEZONE","duration","zoneHours","zoneMinutes","InvalidTimezoneCall","tz","TZ","extractRawTimeZone","MD5","SHA1","SHA256","sha256","SHA384","sha384","SHA512","sha512","triple","TRIPLE","Quad","SUBJECT","PREDICATE","istriple","IS_TRIPLE","uplus","uminus","isiri","isuri","isblank","isliteral","isnumeric","strdt","strlang","struuid","strlen","substr","ucase","lcase","strstarts","strends","strbefore","strafter","encode_for_uri","regex","md5","bound","bound_","BOUND","ifSPARQL","valFirst","coalesce","errors","CoalesceError","logicalOr","leftExpr","rightExpr","logicalAnd","sameTerm","inSPARQL","inRecursiveAsync","inRecursiveSync","needle","InError","nextExpression","notInSPARQL","_in","specialFunctions","IN","isIn","concatTree","CONCAT","pLits","pTerm","lits","langAllEqual","bnodeTree","BNODE","strInput","BlankNode","BNODE_","if","sameterm","in","notin","_isWildCard","_matchLangTag","RegExp","reg","langTags","rangeTags","lI","rI","NamedFunctions_1","RegularFunctions_1","SpecialFunctions_1","definitions","specialDefinitions","SpecialFunction","namedDefinitions","NamedFunction","AggregateEvaluator_1","Errors_1","AsyncAggregateEvaluator_1","algebraConfig","creatorConfig","transformTerm","transformOperator","transformNamed","transformExistence","transformAggregate","transformWildcard","wildcard","SpecialOperators","specialOp","specialArgs","specialFunc","InvalidArity","Operators","UnknownOperator","regularOp","regularArgs","regularFunc","hasCorrectArity","wrapSyncFunction","ExtensionFunctionError","wrapAsyncFunction","funcName","namedArgs","NamedOperators","namedFunc","namedFunctions","syncExtensionFunc","simpleAppl","asyncExtensionFunc","asyncAppl","UnknownNamedOperator","RDFString","InvalidExpression","InvalidTermType","superTypeDict","getSuperTypeDict","dateVal","isFloat","isDouble","doubleVal","SetFunction","RegularOperators","rep","toJSDate","jumpDeltaOfDate","setFullYear","getFullYear","temp","years","days","getMonth","getDate","getHours","getMinutes","getSeconds","defaultTimezone","localTime","minutesCorrectionLocal","getTimezoneOffset","hourCorrectionUTC","minutesCorrectionUTC","zoneContained","exec","pp","arg0","cast","dateString","payload","functionError","comparePrimitives","valueA","valueB","termA","termB","strict","typeDiscoveryCallback","_TERM_ORDERING_PRIORITY","orderSubject","orderPredicate","orderObject","litA","litB","isGreater","isEqual","myLitA","myLitB","compareType","orderLiteralTypes","InvalidCompareArgumentTypes","DefaultGraph","parseTimeZone","timeZoneStr","dateStr","formatted","ParseError","dateStrings","maximumDayInMonthFor","__parseTime","timeStr","timeStrings","durationStr","dayNotation","timeNotation","formattedDayDur","durationStrings","formattedTimeDur","sign","simplifyDurationRepresentation","numb","NEGATIVE_INFINITY","dateTimeStr","numSerializer","minimumIntegerDigits","useGrouping","serializeTimeZone","zeroString","fDiv","high","low","intDiv","remainder","yearValue","monthValue","additionalYears","newDate","tempDiv","carry","d1","d2","diff","cached","__depth","subExtension","knownValue","extensionTableInit","_key","extensionTableInput","extensionTableBuilderInitKey","baseRes","baseType","XSD_DATE_TIME_STAMP","XSD_NORMALIZED_STRING","XSD_TOKEN","XSD_LANGUAGE","XSD_NM_TOKEN","XSD_NAME","XSD_NC_NAME","XSD_ENTITY","XSD_ID","XSD_ID_REF","XSD_NON_POSITIVE_INTEGER","XSD_NEGATIVE_INTEGER","XSD_LONG","XSD_INT","XSD_SHORT","XSD_BYTE","XSD_NON_NEGATIVE_INTEGER","XSD_POSITIVE_INTEGER","XSD_UNSIGNED_LONG","XSD_UNSIGNED_INT","XSD_UNSIGNED_SHORT","XSD_UNSIGNED_BYTE","XSD_G_MONTH","XSD_G_MONTHDAY","XSD_G_YEAR","XSD_G_YEAR_MONTH","XSD_G_DAY","XSD_ANY_URI","typeAliasCheck","initTypeAliasCheck","asTermType","types_1","LoggerVoid","Logger","MediatorAll","Mediator","validActors","testResults","testResult","MediatorCombinePipeline","filterErrors","_testResults","getOrder","elem","actor1","actor2","MediatorCombineUnion","combiner","createCombiner","MediatorJoinCoefficientsFixed","promises","coefficients","costs","coeff","cpuWeight","memoryWeight","timeWeight","ioWeight","maxCost","minIndex","minValue","bestActor","MediatorNumber","indexPicker","createIndexPicker","tests","prev","curr","getOrDefault","defaultValue","ignoreErrors","dummy","MediatorRace","subError","validateMetadataBindings","lastReturn","lastReturnValue","getLevelOrdinal","level","LEVELS","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","len","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","globalObject","mathceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","z","r","y","xc","yc","intCheck","isOdd","charAt","toFixedPoint","zs","configObject","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","valueOf","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","alphabetHasNormalDecimalDigits","alphabet","caseChanged","isNum","_isBigNumber","substring","DEBUG","rm","c0","ne","maxOrMin","normalise","sd","d","ni","rd","pows10","out","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","minimum","dp","Uint32Array","toBaseOut","baseIn","baseOut","arrL","reverse","callerIsToString","pow","multiply","xlo","xhi","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","p1","p2","absoluteValue","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","mod","integerValue","isEqualTo","eq","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThan","isLessThanOrEqualTo","lte","isNegative","isPositive","isZero","t","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","toFormat","g1","g2","intPart","fractionPart","isNeg","intDigits","toFraction","md","d0","exp","n0","n1","toPrecision","toJSON","base64","ieee754","customInspectSymbol","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","setPrototypeOf","encodingOrOffset","allocUnsafe","isEncoding","actual","fromString","arrayView","isInstance","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","isBuffer","checked","numberIsNaN","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","foo","typedArraySupport","console","poolSize","fill","allocUnsafeSlow","_isBuffer","list","pos","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","_arr","hexSliceLookupTable","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","sym","getMessage","Base","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","received","INVALID_BASE64_RE","Infinity","leadSurrogate","base64clean","dst","table","i16","BufferBigIntNotDefined","serialize","Function","cv","ci","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","ownKeys","getOwnPropertySymbols","NumberIsNaN","EventEmitter","emitter","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","events","existing","warning","newListener","warned","w","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","listeners","addListener","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","equal","sparqljson_parse_1","sparqlxml_parse_1","stringifyStream","readable_web_to_node_stream_1","n3","isStream","additionalUrlParams","defaultHeaders","fetchCb","sparqlJsonParser","SparqlJsonParser","sparqlXmlParser","SparqlXmlParser","sparqlParsers","CONTENTTYPE_SPARQL_JSON","parseBooleanStream","sparqlResponseStream","parseJsonBooleanStream","parseResultsStream","parseJsonResultsStream","CONTENTTYPE_SPARQL_XML","parseXmlBooleanStream","parseXmlResultsStream","timeout","getQueryType","parsedQuery","queryType","getUpdateTypes","updateType","contentType","responseStream","fetchRawStream","CONTENTTYPE_SPARQL","CONTENTTYPE_TURTLE","StreamParser","abortController","defaultHeadersRaw","handleFetchCall","ignoreBody","acceptHeader","encodeURIComponent","timeoutId","controller","httpResponse","simpleUrl","bodyString","language_1","handler_1","directivenode_1","IConvertContext_1","Util_1","settings","variableDelimiter","expressionVariableCounter","util","initializeNodeHandlers","registerNodeHandlers","registerNodeHandler","NodeHandlerDocument","NodeHandlerDefinitionOperation","NodeHandlerDefinitionFragment","NodeHandlerSelectionFragmentSpread","NodeHandlerSelectionInlineFragment","NodeHandlerSelectionField","registerNodeValueHandlers","registerNodeValueHandler","NodeValueHandlerVariable","NodeValueHandlerInt","NodeValueHandlerFloat","NodeValueHandlerString","NodeValueHandlerBoolean","NodeValueHandlerNull","NodeValueHandlerEnum","NodeValueHandlerList","NodeValueHandlerObject","registerDirectiveNodeHandlers","registerDirectiveNodeHandler","DirectiveNodeHandlerInclude","DirectiveNodeHandlerOptional","DirectiveNodeHandlerPlural","DirectiveNodeHandlerSingle","DirectiveNodeHandlerSkip","graphqlQuery","graphqlToSparqlAlgebraRawContext","contextParser","document","convertContext","fragmentDefinitions","indexFragments","singularizeState","SingularizeState","PLURAL","terminalVariables","variablesDict","variablesMetaDict","handleNode","newDefinitions","kind","jsonld_context_parser_1","nodeHandlers","nodeValueHandlers","directiveNodeHandlers","operationFactory","ContextParser","nodeHandler","targetKind","nodeValueHandler","directiveNodeHandler","handleNodeValue","fieldName","handleDirectiveNode","directiveContext","directive","nonBgps","joinOperationsAsBgp","originalLeftJoin","joinOperationsAsNestedJoin","appendFieldToPath","fieldLabel","getFieldLabel","alias","nameToVariable","valueToNamedNode","contextValue","expandTerm","getArgument","argument","newTypePattern","typeCondition","createQuadPattern","predicateName","getContextRaw","createQuadPath","predicateAlternatives","predicateInitial","pathSymbol","createLink","predicateAlternative","NodeHandlerAdapter","getNodeQuadContextSelectionSet","selectionSet","nodeQuadContext","selectionNode","selections","fieldNode","handleNodeQuadContextField","nodeQuadContextKey","valueOutput","auxiliaryPatterns","getDirectiveOutputs","directives","ignore","handleDirectiveOutputs","directiveOutputs","directiveOutput","operationOverrider","NodeHandlerDefinitionAdapter","NodeHandlerAdapter_1","NodeHandlerDefinitionAdapter_1","operationDefinition","variableDefinitions","variableDefinition","typeNode","mandatory","definitionOperations","subjectOutput","getNodeQuadContextDefinitionNode","ignoreUnknownVariables","queryParseContext","definitionOperation","translateBlankNodesToVariables","blankToVariableMapping","variablesRaw","createUniqueVariable","NodeHandlerSelectionAdapter","getNodeQuadContextFieldNode","fieldToOperation","pushTerminalVariables","nesting","SINGLE","operationOverride","handleMetaField","overrideObjectTerms","pathValue","subConvertContext","totalCount","selection","joinedOperation","expressionVariable","countOverVariable","countProject","createSlice","NodeHandlerSelectionAdapter_1","fragmentSpreadNode","fragmentDefinitionNode","inlineFragmentNode","DirectiveNodeHandlerAdapter","getDirectiveConditionalValue","subValue","isDirectiveScopeAll","scopeArg","DirectiveNodeHandlerAdapter_1","NodeValueHandlerAdapter","NodeValueHandlerAdapter_1","valueNode","nodeFirst","nodeRest","nodeNil","listTerms","arraysToRdfLists","firstListNode","listNode","nextListNode","nil","auxiliaryObjectPatterns","fields","contextEntry","listValue","__setModuleDefault","__importStar","__importDefault","toSparqlJs","sparqlAlgebra_1","factory_1","sparql_1","util_1","A","stringType","createTerm","flattenMulti","createAggregateExpression","createDescribe","createFrom","def","createGraph","createMinus","createNop","createNps","createOrderBy","createReduced","createService","createZeroOrMorePath","createZeroOrOnePath","createExistenceExpression","createNamedExpression","Wildcard","deleteQuads","insertQuads","createLoad","addSilent","createClear","createCreate","createMove","createCopy","newChildren","rdf_isomorphic_1","eTypes","resetContext","translateOperation","removeQuadsRecursive","removeQuads","translateExpression","translateProject","translatePattern","translateBgp","translateConstruct","translateDistinct","translateExtend","translateFrom","translateFilter","translateGraph","aggs","translateBoundAggregate","translateGroup","translateJoin","translateLeftJoin","translateMinus","translateOrderBy","translatePathComponent","translatePath","reduced","translateReduced","translateService","translateSlice","arrayToPattern","translateUnion","translateValues","translateCompositeUpdate","use","convertUpdatePatterns","using","isomorphic","translateDeleteInsert","translateLoad","translateClearCreateDrop","translateClear","translateCreate","translateDrop","translateUpdateGraphShortcut","translateAdd","translateMove","translateCopy","aggregation","translateAggregateExpression","translateExistenceExpression","function","translateNamedExpression","translateOperatorExpression","translateTermExpression","translateWildcardExpression","mapped","pathType","translateAlt","inv","translateInv","translateLink","translateNps","translateOneOrMorePath","translateSeq","translateZeroOrMorePath","translateZeroOrOnePath","translateTerm","replaceAggregatorVariables","st","isSimpleTerm","select","extensions","descending","objectContainsValues","having","vals","keyGraphs","globalNames","newGraphs","graphNameSet","graphPatterns","graphName","splitBgpToGraphs","Generator","varCount","useQuads","translateQuery","sparql","thingy","findAllVariables","translateGraphPattern","mapAggregate","generateFreshVar","translateInlineData","PV","isVariable","translateQuad","translateAggregates","translateSingleUpdate","isTerm","inScope","g","simplifyPath","translatePathPredicate","recurseGraph","filters","nonfilters","accumulateGroupGraphPattern","isQuad","hasQuadVariables","normals","inverted","normalElement","invertedElement","simplifiedPath","_resetBlanks","typeVals","G","simplifiedJoin","subthingy","translateUpdateGraphLoad","translateUpdateGraph","deleteTriples","insertTriples","translateUpdateTriplesBlock","translateInsertDelete","currentGraph","currentTriples","algebra_1","objectify","algebra","addVariable","find","v2","recurseTerm","callbacks","doRecursion","recurseOp","copyMetadata","recurseResult","toCopyMetadata","mapOp","mapExpression","cloneOperation","cloneExpression","labelLoop","_typeof","printError","GraphQLError","_isObjectLike","_symbols","_location","_printLocation","enumerableOnly","symbols","_defineProperty","_defineProperties","props","descriptor","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","_isNativeReflectConstruct","instance","sham","Proxy","_Error","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","Constructor","protoProps","_super","Super","NewTarget","nodes","positions","originalError","_nodeLocations","_nodeLocations2","_nodeLocations3","_this","_classCallCheck","undefinedIfEmpty","nodeLocations","_i2","_ref3","_this$nodes","loc","locations","getLocation","originalExtensions","getOwnPropertyDescriptors","defineProperties","_objectSpread","captureStackTrace","SYMBOL_TO_STRING_TAG","_i4","_error$nodes2","printLocation","_i6","_error$locations2","printSourceLocation","syntaxError","description","_GraphQLError","classObject","_invariant","_nodejsCustomInspectSymbol","_interopRequireDefault","condition","formatValue","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","seenValues","previouslySeenValues","customInspectFn","getCustomFn","customValue","formatArray","getObjectTag","formatObject","formatObjectValue","_default","isNode","maybeNode","Token","Location","_defineInspect","startToken","endToken","getBlockStringIndentation","_commonIndent","isFirstLine","isEmptyLine","commonIndent","dedentBlockStringValue","rawString","startLine","endLine","printBlockString","indentation","preferMultipleLines","isSingleLine","hasLeadingSpace","hasTrailingQuote","hasTrailingSlash","printAsMultipleLines","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION","SCHEMA","SCALAR","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","Source","_kinds","Kind","_tokenKind","TokenKind","_lexer","Lexer","_parser","parseValue","parseType","_printer","print","_visitor","visit","visitInParallel","getVisitFn","BREAK","_ast","_predicates","isDefinitionNode","isExecutableDefinitionNode","isSelectionNode","isValueNode","isTypeNode","isTypeSystemDefinitionNode","isTypeDefinitionNode","isTypeSystemExtensionNode","isTypeExtensionNode","_directiveLocation","NAME","DOCUMENT","OPERATION_DEFINITION","SELECTION_SET","ARGUMENT","VARIABLE","INT","FLOAT","BOOLEAN","LIST","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","isPunctuatorTokenKind","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","_syntaxError","_blockString","startOfFileToken","SOF","lastToken","lineStart","_proto","advance","lookahead","EOF","_token$next","readToken","COMMENT","printCharCode","lexer","bodyLength","_line","_col","readComment","readBlockString","readString","readNumber","readName","unexpectedCharacterMessage","col","firstCode","readDigits","isNameStart","chunkStart","charCode","char2hex","invalidSequence","rawValue","BLOCK_STRING","lineRegexp","parseDocument","expectToken","parseValueLiteral","parseTypeReference","sourceObj","isSource","_options","parseName","many","parseDefinition","peek","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","parseVariable","expectOptionalToken","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","hasTypeCondition","expectOptionalKeyword","parseFragmentName","parseNamedType","_this$_options","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","block","any","_this2","parseObjectField","parseDirective","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","interfaces","parseImplementsInterfaces","parseFieldsDefinition","_this$_options2","allowLegacySDLImplementsInterfaces","delimitedMany","_this$_options3","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","repeatable","parseDirectiveLocations","parseDirectiveLocation","_this$_options4","noLocation","getTokenKindDesc","getTokenDesc","atToken","openKind","parseFn","closeKind","delimiterKind","sourceLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","_ref","padLen","_ref2","ast","leave","printDocASTReducer","Name","Document","OperationDefinition","varDefs","VariableDefinition","SelectionSet","Field","argsLine","Argument","_ref4","FragmentSpread","_ref5","InlineFragment","_ref6","FragmentDefinition","_ref7","IntValue","_ref8","FloatValue","_ref9","StringValue","_ref10","BooleanValue","_ref11","NullValue","EnumValue","_ref12","ListValue","_ref13","ObjectValue","_ref14","ObjectField","_ref15","Directive","_ref16","NamedType","_ref17","ListType","_ref18","NonNullType","_ref19","SchemaDefinition","addDescription","_ref20","OperationTypeDefinition","_ref21","ScalarTypeDefinition","_ref22","ObjectTypeDefinition","_ref23","FieldDefinition","_ref24","hasMultilineItems","InputValueDefinition","_ref25","InterfaceTypeDefinition","_ref26","UnionTypeDefinition","_ref27","EnumTypeDefinition","_ref28","EnumValueDefinition","_ref29","InputObjectTypeDefinition","_ref30","DirectiveDefinition","_ref31","SchemaExtension","_ref32","ScalarTypeExtension","_ref33","ObjectTypeExtension","_ref34","InterfaceTypeExtension","_ref35","UnionTypeExtension","_ref36","EnumTypeExtension","_ref37","InputObjectTypeExtension","_ref38","maybeArray","_maybeArray$filter$jo","maybeString","isMultiline","_instanceOf","_inspect","_devAssert","root","visitor","visitorKeys","QueryDocumentKeys","inArray","edits","ancestors","newRoot","isLeaving","isEdited","_Object$keys2","editOffset","ii","editKey","editValue","_visitorKeys$node$kin","visitFn","visitors","skipping","enter","kindVisitor","kindSpecificVisitor","specificVisitor","specificKindVisitor","SYMBOL_ASYNC_ITERATOR","SYMBOL_ITERATOR","asyncIterator","toStringTag","utils","common","sha","ripemd","hmac","sha224","ripemd160","assert","BlockHash","pending","pendingTotal","outSize","hmacStrength","padLength","endian","_delta8","_delta32","enc","join32","_update","_pad","_digest","Hmac","Hash","inner","outer","rotl32","sum32","sum32_3","sum32_4","RIPEMD160","h","f","K","Kh","inherits","B","D","Ah","Bh","Ch","Dh","Eh","T","rh","sh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","W","SHA224","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero2","word","zero8","toHex","COMPATIBLE_ENCODING_PATTERN","WS_TRIM_PATTERN","WS_CHAR_PATTERN","WS_FOLD_PATTERN","DELIMITER_PATTERN","WS_DELIMITER_PATTERN","TOKEN_PATTERN","hasWhitespace","skipWhitespace","needsQuotes","Link","refs","rel","setUnique","ref","shallowCompareObjects","object1","object2","expandRelations","attrValue","isSingleOccurenceAttr","parseExtendedValue","formatAttribute","isCompatibleEncoding","isTokenAttr","escapeQuotes","formatExtendedAttribute","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","DELETE","SHIFT","SIZE","MASK","NOT_SET","SetRef","OwnerID","ensureSize","iter","__iterate","returnTrue","wrapIndex","uint32Index","wholeSlice","begin","resolveBegin","resolveIndex","resolveEnd","defaultIndex","IS_COLLECTION_SYMBOL","isCollection","maybeCollection","IS_KEYED_SYMBOL","isKeyed","maybeKeyed","IS_INDEXED_SYMBOL","isIndexed","maybeIndexed","isAssociative","maybeAssociative","Collection","Seq","KeyedCollection","KeyedSeq","IndexedCollection","IndexedSeq","SetCollection","SetSeq","Keyed","Indexed","IS_SEQ_SYMBOL","isSeq","maybeSeq","IS_RECORD_SYMBOL","isRecord","maybeRecord","isImmutable","maybeImmutable","IS_ORDERED_SYMBOL","isOrdered","maybeOrdered","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorResult","iteratorDone","hasIterator","maybeIterable","getIteratorFn","isIterator","maybeIterator","getIterator","iteratorFn","KEYS","ENTRIES","toSource","isArrayLike","emptySequence","toSeq","seq","maybeIndexedSeqFromValue","fromEntrySeq","isKeysIterable","toSetSeq","ObjectSeq","seqFromValue","__toString","cacheResult","__iterateUncached","entrySeq","__iterator","__iteratorUncached","toKeyedSeq","keyedSeqFromValue","toIndexedSeq","indexedSeqFromValue","of","ArraySeq","_array","notSetValue","_object","_keys","EMPTY_SEQ","CollectionSeq","collection","_collection","IS_MAP_SYMBOL","isMap","maybeMap","isOrderedMap","maybeOrderedMap","isValueObject","maybeValue","hashCode","is","imul","smi","i32","defaultValueOf","hashNullish","hashed","hashNumber","STRING_HASH_CACHE_MIN_STRLEN","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","nodeType","uniqueID","documentElement","getIENodeHash","nextHash","isExtensible","hashJSObj","symbolMap","hashSymbol","nullish","_objHashUID","WeakMap","ToKeyedSequence","indexed","useKeys","_iter","_useKeys","valueSeq","this$1$1","reversedSequence","reverseFactory","mapper","mappedSequence","mapFactory","ToIndexedSequence","ToSetSequence","FromEntriesSequence","validateEntry","indexedCollection","flipFactory","flipSequence","makeSequence","flip","cacheResultThrough","filterFactory","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","flattenFactory","flatSequence","stopped","flatDeep","currentDepth","sortFactory","comparator","defaultComparator","isKeyedCollection","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","iters","zipAll","zipSequence","sizes","isDone","steps","reify","collectionClass","arrCopy","newArr","invariant","assertNotInfinite","coerceKeyPath","keyPath","isPlainObject","parentProto","nextProto","isDataStructure","quoteString","_ignoreError","shallowCopy","collectionCopy","updateIn$1","updater","updatedValue","updateInDeeply","inImmutable","wasNotSet","existingValue","newValue","nextExisting","nextUpdated","emptyMap","setIn$1","setIn","removeIn","deleteIn","update$1","updateIn","merge$1","mergeIntoKeyedWith","mergeWith$1","collections","collection$1","__ownerID","withMutations","mergeIntoCollection","oldVal","mergeWithSources","mergeDeep$1","mergeDeepWithSources","mergeDeepWith$1","deepMerger","newDataStructure","oldSeq","newSeq","deepMergerWith","mergeItem","hasVal","nextVal","mergeDeep","mergeDeepWith","mergeIn","mergeDeepIn","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","__altered","keyValues","_root","updateMap","deleteAll","__hash","OrderedMap","sortBy","MapIterator","iterate","ownerID","makeMap","MapPrototype","removeAll","ArrayMapNode","keyHash","didChangeSize","didAlter","removed","MAX_ARRAY_MAP_SIZE","ValueNode","createNodes","isEditable","newEntries","BitmapIndexedNode","bitmap","bit","popCount","keyHashFrag","updateNode","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","HashArrayMapNode","expandNodes","isLeafNode","newBitmap","newNodes","setAt","canEdit","newLen","newArray","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","HashCollisionNode","mergeIntoNode","keyMatch","maxIndex","EMPTY_MAP","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","subNode","__prev","newSize","idx1","idx2","IS_LIST_SYMBOL","isList","maybeList","List","emptyList","makeList","VNode","setSize","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","oldSize","arguments$1","seqs","iterateList","DONE","ListPrototype","removeBefore","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","tailPos","tail","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","EMPTY_ORDERED_MAP","emptyOrderedMap","_map","_list","updateOrderedMap","newMap","newList","makeOrderedMap","omap","toMap","IS_STACK_SYMBOL","isStack","maybeStack","Stack","emptyStack","pushAll","_head","makeStack","EMPTY_STACK","StackPrototype","unshiftAll","IS_SET_SYMBOL","isSet","maybeSet","isOrderedSet","maybeOrderedSet","deepEqual","notAssociative","flipped","allEqual","bSize","mixin","ctor","keyCopier","result$1","emptySet","fromKeys","keySeq","intersect","sets","SetPrototype","updateSet","didChanges","mapEntries","toRemove","OrderedSet","__make","__empty","EMPTY_SET","makeSet","EMPTY_RANGE","Range","_start","_step","searchValue","possibleIndex","offsetValue","getIn$1","searchKeyPath","getIn","hasIn$1","toObject","isIterable","useTuples","toOrderedMap","toOrderedSet","toSet","toStack","toList","__toStringMapper","singleton","concatSeq","concatFactory","returnValue","partition","isKeyedIter","coerce","partitionFactory","findEntry","sideEffect","isFirst","reducer","initialReduction","reduceRight","butLast","countBy","countByFactory","entriesSequence","entryMapper","filterNot","findKey","findLast","findLastEntry","findLastKey","flatMapFactory","searchKey","groupBy","groupByFactory","hasIn","isSubset","isSuperset","keyOf","keyMapper","lastKeyOf","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashCollection","CollectionPrototype","chain","mapKeys","KeyedCollectionPrototype","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","defaultZipper","zipWith","IndexedCollectionPrototype","SetCollectionPrototype","reduction","useFirst","emptyOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","PairSorting","LeftThenRight","RightThenLeft","Record","defaultValues","hasInitialized","throwOnInvalidDefaultValues","RecordType","indices","RecordTypePrototype","_indices","_name","_defaultValues","propName","recordName","setProp","_values","RecordPrototype","displayName","recordSeq","newValues","makeRecord","getDescriptiveName","likeRecord","EMPTY_REPEAT","Repeat","_value","fromJS","fromJSWith","defaultConverter","parentValue","converted","Iterable","superCtor","super_","TempCtor","_write","_writableState","_readableState","duplex","ErrorCoded_1","FetchDocumentLoader_1","JsonLdContextNormalized_1","FetchDocumentLoader","documentCache","validateContext","skipValidation","expandContentTypeToBase","remoteContextsDepthLimit","redirectSchemaOrgHttps","validateLanguage","strictRange","errorCode","ErrorCoded","REGEX_LANGUAGE_TAG","validateDirection","ERROR_CODES","INVALID_BASE_DIRECTION","REGEX_DIRECTION_TAG","idifyReverseTerms","isValidKeyword","INVALID_IRI_MAPPING","isPotentialKeyword","expandPrefixedTerms","contextRaw","EXPAND_KEYS_BLACKLIST","isReservedInternalKeyword","keyValue","ALIAS_DOMAIN_BLACKLIST","KEYWORD_REDEFINITION","ALIAS_RANGE_BLACKLIST","getContextValueId","INVALID_KEYWORD_ALIAS","INVALID_TERM_DEFINITION","isPrefixValue","changed","canAddIdEntry","isValidIri","newId","expandedType","normalize","processingMode","normalizeLanguageTags","lowercase","containersToHash","containerValue","applyScopedProtected","expandOptions","isTermProtected","isSimpleTermDefinitionPrefix","validateKeywordRedefinitions","contextBefore","contextAfter","PROTECTED_TERM_REDEFINITION","validate","valueType","INVALID_VOCAB_MAPPING","INVALID_BASE_IRI","INVALID_DEFAULT_LANGUAGE","INVALID_VERSION_VALUE","INVALID_CONTEXT_ENTRY","INVALID_PROPAGATE_VALUE","getPrefix","CYCLIC_IRI_MAPPING","isValidIriWeak","JsonLdContextNormalized","isCompactIri","objectKey","objectValue","INVALID_TYPE_MAPPING","INVALID_REVERSE_PROPERTY","CONTAINERS_1_0","INVALID_CONTAINER_MAPPING","CONTAINERS","INVALID_LANGUAGE_MAPPING","INVALID_PREFIX_VALUE","INVALID_NEST_VALUE","applyBaseEntry","inheritFromParent","parentContext","external","normalizeContextIri","contextIri","parseInnerContexts","ignoreScopedContexts","ignoreProtection","ignoreRemoteScopedContexts","INVALID_SCOPED_CONTEXT","minimalProcessing","internalOptions","DEFAULT_PROCESSING_MODE","remoteContexts","CONTEXT_OVERFLOW","hasProtectedTerms","INVALID_CONTEXT_NULLIFICATION","overriddenLoad","getOverriddenLoad","parsedStringContext","load","contextIris","reducedContexts","accContextPromise","accContext","importContext","INVALID_IMPORT_VALUE","loadImportContext","defaultExpandOptions","newContext","overlappingKeys","newContextWrapped","INVALID_LOCAL_CONTEXT","LOADING_REMOTE_CONTEXT_FAILED","INVALID_REMOTE_CONTEXT","RECURSIVE_CONTEXT_INCLUSION","importContextIri","http_link_header_1","fetcher","accept","colonPos","alternateUrl","linkHeader","LOADING_DOCUMENT_FAILED","expandVocab","validIriMapping","vocab","vocabRelative","potentialKeyword","contextPrefixValue","allowPrefixForcing","allowVocabRelativeToBase","compactIri","shortestPrefixing","allowPrefixNonGenDelims","separatorPos","isPrefixIriEndingWithGenDelim","keyword","KEYWORD_REGEX","prefixIri","ENDS_WITH_GEN_DELIM","IRI_REGEX","IRI_REGEX_WEAK","VALID_KEYWORDS","objKeys1","objKeys2","value1","value2","SeparatorType_1","Transform","objectMode","originalContext","PassThrough","transformQuad","termToValue","opened","pushDocumentStart","lastPredicate","endPredicate","lastSubject","endSubject","lastGraph","endGraph","endDocument","lastGraphMatchesSubject","lastSubjectMatchesGraph","pushId","pushSeparator","SeparatorType","GRAPH_FIELD_NONCOMPACT","GRAPH_FIELD_COMPACT","ARRAY_END_COMMA","pushPredicate","pushObject","excludeContext","OBJECT_START","CONTEXT_FIELD","pushIndented","ARRAY_START","startOnNewLine","pushNestedQuad","subjectValue","property","useRdfType","RDF_TYPE","objectOptions","compactIds","compactedProperty","hadObjectForPredicate","lastLastSubject","lastLastPredicate","nestedQuad","commaAfterSubject","ARRAY_END","OBJECT_END","comma","OBJECT_END_COMMA","pushNewLine","getIndentPrefix","useNativeTypes","compacted","RDF_JSON","parsedJson","INVALID_JSON_LITERAL","rdfDirection","I18N","stringToNativeType","XSD","parsedInt","parsedFloat","parseFloat","RDF","SWAP","xsd","boolean","rdf","owl","sameAs","forSome","forAll","implies","escapeSequence","escapeReplacements","illegalIriChars","lineModeRegExps","_iri","_unescapedIri","_simpleQuotedString","_langcode","_blank","_newline","_comment","_whitespace","_endOfFile","invalidRegExp","N3Lexer","_simpleApostropheString","_prefix","_prefixed","_variable","_number","_boolean","_keyword","_sparqlKeyword","_shortPredicates","_lineMode","lineMode","_n3Mode","_comments","comments","_literalClosingPos","_tokenizeToEnd","inputFinished","_input","currentLineLength","whiteSpaceMatch","emitToken","firstChar","matchLength","inconclusive","_previousMarker","_unescape","reportSyntaxError","_parseLiteral","previousToken","invalid","replaced","sequence","unicode4","unicode8","escapedChar","opening","openingLength","closingPos","backslashCount","issue","_readStartingBom","tokenize","tokens","_pendingBuffer","setEncoding","DEFAULTGRAPH","_blankNodeCounter","languageOrDataType","atPos","datatypeString","dtPos","termFromId","nested","endPos","termToId","_subject","_predicate","_graph","blankNodePrefix","N3Parser","_contextStack","_setBase","initDataFactory","isTurtle","isTriG","isNTriples","isNQuads","isN3","isLineMode","_supportsNamedGraphs","_readPredicateOrNamedGraph","_readPredicate","_supportsQuads","_supportsRDFStar","_resolveRelativeIRI","_blankNodePrefix","_explicitQuantifiers","explicitQuantifiers","_resetBlankNodePrefix","fragmentPos","_base","_basePath","_baseRoot","_baseScheme","_saveContext","n3Mode","inverse","_inversePredicate","blankPrefix","_prefixes","quantified","_quantified","_restoreContext","_error","_readInTopContext","_callback","_sparqlStyle","_readPrefix","_readBaseIRI","_readSubject","_readNamedGraphLabel","_readEntity","quantifier","_resolveIRI","_namedNode","_blankNode","_readBlankNodeHead","RDF_NIL","_readListItem","_readPunctuation","N3_FORSOME","_quantifier","_readQuantifierList","N3_FORALL","_literalValue","_completeSubjectLiteral","_literal","_getPathReader","ABBREVIATIONS","_readBlankNodeTail","_readObject","_readDataTypeOrLang","_getContextEndReader","_readGraph","_readBlankNodePunctuation","_emit","_readPredicateAfterBlank","previousList","RDF_FIRST","_readListItemDataTypeOrLang","RDF_REST","_completeObjectLiteral","_completeLiteral","listItem","completed","_readCallback","_readFormulaTail","inversePredicate","_readQuadPunctuation","_readPrefixIRI","prefixNode","_prefixCallback","_readDeclarationPunctuation","_readNamedGraphBlankLabel","QUANTIFIERS_GRAPH","_readQuantifierPunctuation","afterPath","_afterPath","_readPath","_readForwardPath","_readBackwardPath","_readRDFStarTailOrGraph","_readRDFStarTail","contextStack","noop","_removeDotSegments","pathStart","segmentStart","quadCallback","prefixCallback","isNamedNode","isBlankNode","isDefaultGraph","inDefaultGraph","defaultPrefixes","processPrefix","N3DataFactory","escapeAll","escapedCharacters","SerializedTerm","N3Writer","outputStream","_prefixRegex","_lists","lists","_outputStream","_endStream","_writeQuad","_writeQuadLine","_prefixIRIs","addPrefixes","_baseMatcher","escapeRegex","_baseLength","_inDefaultGraph","_encodeIriOrBlank","_encodeObject","_encodePredicate","_encodeSubject","_prefixMatch","quadsToString","_encodeQuad","characterReplacer","prefixMatch","_encodeLiteral","_blockedWrite","addQuad","addQuads","addPrefix","hasPrefixes","IRIlist","prefixList","prefixIRI","contents","singleDone","character","N3Store","_size","_graphs","_id","_ids","_entities","_blankNodeIndex","_factory","_termFromId","_termToNumericId","_termToNewNumericId","subjects","graphKey","subjectKey","predicateKey","_addToIndex","index0","key0","key1","key2","index1","index2","existed","_removeFromIndex","_findInIndex","name0","name1","name2","graphId","entityKeys","value0","_loop","_loopByKey0","_loopByKey1","_loopBy2Keys","_countInIndex","_getGraphs","_uniqueEntities","uniqueIds","graphItem","predicates","removeQuad","subjectOrQuad","readQuads","removeMatches","getQuads","content","subjectId","predicateId","objectId","DatasetCoreAndReadableStream","getSubjects","forSubjects","getPredicates","forPredicates","getObjects","forObjects","getGraphs","forGraphs","createBlankNode","suggestedName","extractLists","tails","tailQuad","headPos","malformed","objectQuads","subjectQuads","n3Store","filtered","_filtered","newStore","N3StreamParser","onData","onEnd","decodeStrings","N3StreamWriter","writableObjectMode","_writer","Writer","Store","Triple","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","title","browser","env","argv","versions","cwd","chdir","umask","asap","setImmediate","_state","_deferreds","doResolve","deferred","me","onFulfilled","onRejected","finale","Handler","reason","ex","race","queueMicrotask","BlankNode_1","DefaultGraph_1","Literal_1","NamedNode_1","Quad_1","Variable_1","dataFactoryCounter","languageOrDatatype","INSTANCE","fromTerm","original","fromQuad","resetBlankNodeCounter","RDF_LANGUAGE_STRING","isTermGrounded","termToSignature","quadToSignature","sha1hex","hashTerms","getGraphBlankNodes","uniqGraph","deindexGraph","indexGraph","getQuadsWithoutBlankNodes","getQuadsWithBlankNodes","hasValue","hashValues","getBijectionInner","getBijection","graphA","graphB","nonBlankIndexA","nonBlankIndexB","blankQuadsA","blankQuadsB","blankNodesA","blankNodesB","groundedHashesA","groundedHashesB","hashesA","ungroundedHashesA","hashesB","ungroundedHashesB","hashKeyA","bijection","blankNodeA","blankNodeAString","blankNodeAHash","blankNodeBString","arraysEqual","blankNodeB","array1","array2","hashValue","everyTerms","indexedGraph","stringQuadToQuad","getBlankNodes","groundedHashes","ungroundedHashes","hashNeeded","initialGroundedNodesCount","grounded","uniques","termKey","quadSignatures","quadTerm","getSupportedJavaScriptPrimitives","getSupportedRdfDatatypes","getTermRaw","toRdf","fromRdf","Translator_1","translator","Translator","registerHandler","TypeHandlerString","TYPES","TypeHandlerBoolean","TYPE","TypeHandlerNumberDouble","TypeHandlerNumberInteger","TypeHandlerDate","supportedRdfDatatypes","fromRdfHandlers","toRdfHandlers","incorrectRdfDataType","rdfDatatypes","javaScriptDataTypes","rdfDatatype","javaScriptDataType","existingToRdfHandlers","handlers","VALIDATORS","partsMonthDay","valueString","getUTCDate","getUTCMonth","getUTCFullYear","toISOString","gDay","gMonthDay","gYear","gYearMonth","MAX_INT","MIN_INT","PendingStreamsIndex","indexedStreams","allStreams","ID_VARIABLE","addPatternListener","pendingStream","ID_SEPARATOR","existingListeners","getPendingStreamsForQuad","keysOld","keyModified","pendingStreams","PendingStreamsIndex_1","_pipeSource","unpipe","importToListeners","isInitialized","storeResult","getLiteralValue","getLiteralType","getLiteralLanguage","TermUtil_1","iriValue","escapePattern","replaceEscapedCharacter","literalValue","stringTerms","ignoreTags","lastIndex","stringQuad","escapes","inQuote","escaped","matchPatternComplete","matchPattern","matchTerm","everyTermsNested","reduceTerms","mapTerms","filterQuadTermNamesNested","filterQuadTermNames","filterTerms","forEachTerms","collectNamedTerms","getNamedTerms","TRIPLE_TERM_NAMES","ignoreDefaultGraph","checker","namedTerms","defaultCb","namedTerm","names","keysS","keysP","keysO","keysG","initialValue","_pattern","skipVarMapping","returnMappings","getDefaultGraphs","getLiterals","getNamedNodes","getTermsOfType","TERM_TYPES","SymbolDispose","AbortError","codes","isNodeStream","isWebStream","kControllerErrorFunction","eos","addAbortListener","addAbortSignal","validateAbortSignal","addAbortSignalNoValidate","onAbort","disposable","StringPrototypeSlice","SymbolIterator","TypedArrayPrototypeSet","consume","hasStrings","_getString","_getBuffer","retLen","customInspect","pipeline","Duplex","destroyer","isReadable","isWritable","isTransformStream","isWritableStream","isReadableStream","ERR_INVALID_ARG_VALUE","ERR_MISSING_ARGS","orgStreams","ondrain","onfinish","onreadable","onclose","readableObjectMode","_final","getWriter","toRead","_destroy","aggregateTwoErrors","ERR_MULTIPLE_CALLBACK","kIsDestroyed","isDestroyed","isFinished","isServerRequest","kDestroy","kConstruct","checkError","errored","called","onDestroy","emitErrorCloseNT","emitCloseNT","emitErrorNT","closeEmitted","emitClose","errorEmitted","errorOrDestroy","sync","destroyed","autoDestroy","constructNT","onConstruct","constructed","emitConstructNT","isRequest","setHeader","emitCloseLegacy","emitErrorCloseLegacy","socket","req","undestroy","reading","endEmitted","finalCalled","prefinished","ending","finished","ObjectDefineProperties","ObjectGetOwnPropertyDescriptor","ObjectKeys","ObjectSetPrototypeOf","Writable","allowHalfOpen","webStreamsAdapters","duplexify","lazyWebStreams","writableHighWaterMark","writableBuffer","writableLength","writableFinished","writableCorked","writableEnded","writableNeedDrain","fromWeb","pair","newStreamDuplexFromReadableWritablePair","toWeb","newReadableWritablePairFromDuplex","bufferModule","isReadableNodeStream","isWritableNodeStream","isDuplexNodeStream","ERR_INVALID_RETURN_VALUE","createDeferredPromise","isBlob","FunctionPrototypeCall","Duplexify","_duplexify","onfinished","ac","_promise","_resolve","fromAsyncGen","ERR_STREAM_PREMATURE_CLOSE","kEmptyObject","validateFunction","validateObject","validateBoolean","PromisePrototypeThen","isClosed","isReadableFinished","isReadableErrored","isWritableFinished","isWritableErrored","willEmitClose","_willEmitClose","kIsClosedPromise","nop","_options$readable","_options$writable","isAborted","originalCallback","resolverFn","eosWeb","wState","rState","onlegacyfinish","readableFinished","onend","onclosed","onrequest","cleanup","endCallback","opts","_opts","autoCleanup","SymbolAsyncIterator","ERR_STREAM_NULL_VALUES","isAsync","highWaterMark","hadError","hasThrow","throw","return","ArrayIsArray","EE","Stream","dest","ondata","pause","resume","_isStdio","didOnEnd","validateInteger","kWeakHandler","kResistStopPropagation","staticCompose","deprecate","ArrayPrototypePush","MathFloor","PromiseReject","PromiseResolve","kEmpty","kEof","concurrency","signalOpt","cnt","onCatch","afterItemProcessed","maybeResume","pump","unused","ReduceAwareErrMissingArgs","toIntegerOrInfinity","number","streamReturningOperators","asIndexedPairs","_options$signal","drop","_options$signal5","_options$signal6","_options$signal7","_options$signal8","compose","composedStream","promiseReturningOperators","_options$signal2","hasInitialValue","gotAnyItemFromStream","_options$signal3","_options$signal4","destroyImpl","ERR_STREAM_DESTROYED","writing","makeAsyncIterable","fromReadable","pumpToNode","finish","onresolve","wait","pumpToWeb","pipelineImpl","outerSignal","lastStreamCleanup","finishImpl","destroys","finishCount","_disposable","isLastStream","_ret","_ret2","pt","endFn","popCallback","ArrayPrototypeIndexOf","NumberIsInteger","NumberParseInt","SafeSet","SymbolAsyncDispose","ReadableState","BufferList","getHighWaterMark","getDefaultHighWaterMark","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","kPaused","StringDecoder","kObjectMode","kConstructed","kSync","kNeedReadable","kEmitClose","kAutoDestroy","kMultiAwaitDrain","makeBitMapDescriptor","isDuplex","pipes","flowing","defaultEncoding","awaitDrainWriters","decoder","needReadable","maybeReadMore","readableAddChunk","addToFront","_isUint8Array","_uint8ArrayToBuffer","emitReadable","emittedReadable","emitReadable_","onEofChunk","addChunk","dataEmitted","howMuchToRead","flow","readingMore","maybeReadMore_","updateReadableListening","readableListening","resumeScheduled","nReadingNextTick","resume_","streamToAsyncIterator","destroyOnReturn","createAsyncIterator","fromList","endReadable","endReadableNT","endWritableNT","multiAwaitDrain","_undestroy","captureRejectionSymbol","readableEnded","isPaused","nOrig","computeNewHighWaterMark","doRead","pipeOpts","stdout","stderr","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","needDrain","pipeOnDrain","dests","ev","paused","streamKeys","readableDidRead","readableAborted","readableHighWaterMark","readableBuffer","readableFlowing","readableLength","readableEncoding","pipesCount","_fromList","readableStream","newStreamReadableFromReadableStream","streamReadable","newReadableStreamFromStreamReadable","_src$readableObjectMo","defaultHighWaterMarkBytes","defaultHighWaterMarkObjectMode","duplexKey","hwm","highWaterMarkFrom","setDefaultHighWaterMark","kCallback","flush","prefinish","SymbolFor","kIsErrored","kIsReadable","kIsWritable","kIsDisturbed","_obj$_readableState","_obj$_writableState","pipeThrough","cancel","isWritableEnded","isOutgoingMessage","_defaultKeepAlive","_removedConnection","_removedContLen","isServerResponse","_sent100","isDisturbed","_stream$kIsDisturbed","isErrored","_stream$kIsErrored","_stream$_readableStat3","_stream$_writableStat3","_stream$_readableStat4","_stream$_writableStat4","readableErrored","writableErrored","isReadableEnded","_stream$_readableStat","_stream$_readableStat2","_stream$_writableStat","_stream$_writableStat2","_stream$req","_consuming","_dumped","upgradeOrConnect","ArrayPrototypeSlice","FunctionPrototypeSymbolHasInstance","ObjectDefineProperty","StringPrototypeToLowerCase","SymbolHasInstance","WritableState","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_ALREADY_FINISHED","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","kOnFinished","noDecode","corked","bufferProcessing","onwrite","writecb","writelen","afterWriteTickInfo","resetBuffer","pendingcb","buffered","bufferedIndex","allBuffers","allNoop","writev","_writev","clearBuffer","finishMaybe","writeOrBuffer","doWrite","onwriteError","errorBuffer","afterWriteTick","afterWrite","_state$errored","onfinishCallbacks","_state$errored2","bufferedLength","chunks","needFinish","onFinish","callFinal","getBuffer","cork","uncork","setDefaultEncoding","writableAborted","writableStream","newStreamWritableFromWritableStream","streamWritable","newWritableStreamFromStreamWritable","ArrayPrototypeIncludes","ArrayPrototypeJoin","ArrayPrototypeMap","NumberMAX_SAFE_INTEGER","NumberMIN_SAFE_INTEGER","ObjectPrototypeHasOwnProperty","RegExpPrototypeExec","StringPrototypeToUpperCase","StringPrototypeTrim","hideStackFrames","ERR_SOCKET_BAD_PORT","ERR_UNKNOWN_SIGNAL","normalizeEncoding","isAsyncFunction","signals","octalReg","validateInt32","validateUint32","positive","validateString","validateOneOf","oneOf","allowed","getOwnPropertyValueOrDefault","allowArray","allowFunction","validateDictionary","validateArray","minLength","validateBuffer","validatePlainFunction","validateUndefined","linkValueRegExp","validateLinkHeaderFormat","isInt32","isUint32","parseFileMode","validateStringArray","validateBooleanArray","validateAbortSignalArray","indexedName","validateEncoding","normalizedEncoding","validatePort","port","allowZero","validateSignalName","validateUnion","validateLinkHeaderValue","hints","hintsLength","CustomStream","originalDestroy","AggregateError","CustomAggregateError","kIsNodeError","kTypes","classRegExp","ERR_INTERNAL_ASSERTION","NodeError","expectedLength","hidden","expected","instances","_actual$constructor","inspected","colors","_value$constructor","innerError","outerError","sep","ArrayPrototypePop","thisArgs","hasInstance","MIN_SAFE_INTEGER","prop","PromisePrototypeCatch","thenFn","catchFn","RegExpPrototypeTest","dispose","asyncDispose","AsyncFunction","rej","promisify","debuglog","_unused","_removeEventListener","AbortSignalAny","custom","customPromisify","ERR_ILLEGAL_CONSTRUCTOR","pl","lastArg","removeDotSegments","segmentBuffers","isCharacterAllowedAfterRelativePathSegment","removeDotSegmentsOfPath","colonPosition","searchOffset","pathSeparator","relativeIRI","baseFragmentPos","baseQueryPos","relativeColonPos","valueColonPos","baseColonPos","baseIRIScheme","baseSlashAfterColonPos","baseIRIPath","baseIRILastSlashPos","copyProps","SafeBuffer","prefixcc_1","property_param_1","base_prefixes_1","node_param_1","getNamespace","knownNamespaces","knownPrefixes","rdfs","errorOnExtraQuads","mintUnspecifiedPrefixes","prefixRev","onotology","writeImports","namespaces","namespace","pref","allNamespaces","writePrefixes","newLine","writeShapes","writeTurtlePredicates","deindent","imports","getObjectsOnce","imp","disableShaclName","allowBlankNodes","getShaclName","getSubjectsOnce","getQuadsOnce","targetClasses","targetClass","singleObject","unusedPredicates","writeGivenTurtlePredicates","writeShapeBody","getSingleProperty","allowedPredicates","examining","singleLayerPropertiesList","expectOneProperty","orProperties","statement","getList","termTemp","writeIriLiteralOrArray","singleQuad","writeAssigment","writeAtom","writeAssigments","assignments","shortcuts","assignment","writeParams","allowedParam","surroundings","or","params","properties","writeProperty","writePath","nodeKind","propertyClass","nodeShapes","nestedShapes","semi","writeTurtleObjects","blankObjects","nonBlankObjects","writeList","elems","braces","alternatives","alt","ShaclcGenerator_1","writer_1","volatile_store_1","volatileStore","extraQuads","mintPrefixes","targetNode","targetObjectsOf","targetSubjectsOf","deactivated","severity","class","minExclusive","minInclusive","maxExclusive","maxInclusive","maxLength","languageIn","disjoint","ignoredProperties","uniqueLang","lessThan","lessThanOrEquals","qualifiedValueShape","qualifiedMinCount","qualifiedMaxCount","qualifiedValueShapesDisjoint","VolitileStore","indents","no","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","rhex","hex","toUtf8","unescape","hexToBinaryString","SparkMD5","reset","clamp","targetArray","sourceArray","appendBinary","_buff","_length","_hash","buff","_finish","getState","setState","hashBinary","returnUInt8Array","utf8Str2ArrayBuffer","md51_array","_prefixByIri","prefixIris","isString","iriList","_usedPrefixes","_sparqlStar","_indent","newline","_explicitDatatype","explicitDatatype","toQuery","mapJoin","toEntity","toExpression","variableToString","toUpdate","baseAndPrefixes","allPrefixes","toPattern","encodeTriples","equalTerms","inline","valuesList","lparen","rparen","service","escapeReplacer","lexical","encodeIRI","term1","term2","currentOptions","createGenerator","SparqlParser","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","$VD","$VE","$VF","$VG","$VH","$VI","$VJ","$VK","$VL","$VM","$VN","$VO","$VP","$VQ","$VR","$VS","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","$Ve1","$Vf1","$Vg1","$Vh1","$Vi1","$Vj1","$Vk1","$Vl1","$Vm1","$Vn1","$Vo1","$Vp1","$Vq1","$Vr1","$Vs1","$Vt1","$Vu1","$Vv1","$Vw1","$Vx1","$Vy1","$Vz1","$VA1","$VB1","$VC1","$VD1","$VE1","$VF1","$VG1","$VH1","$VI1","$VJ1","$VK1","$VL1","$VM1","$VN1","$VO1","$VP1","$VQ1","$VR1","$VS1","$VT1","$VU1","$VV1","$VW1","$VX1","$VY1","$VZ1","$V_1","$V$1","$V02","$V12","$V22","$V32","$V42","$V52","$V62","$V72","$V82","$V92","$Va2","$Vb2","$Vc2","$Vd2","$Ve2","$Vf2","$Vg2","$Vh2","$Vi2","$Vj2","$Vk2","$Vl2","$Vm2","$Vn2","$Vo2","$Vp2","$Vq2","$Vr2","$Vs2","$Vt2","$Vu2","$Vv2","$Vw2","$Vx2","$Vy2","$Vz2","$VA2","yy","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","propertyList","$0","pathOnly","insertBnodesAll","insertBnodes","$","resolveIRI","groupDatasets","getAggregatesOfExpression","selectVar","groupVar","getExpressionId","usedVars","getVariablesFromExpression","usedVar","subqueries","selectedVarIds","subqueryIds","selectedVarId","appendAllTo","duplicates","sortedArray","getDuplicatesInArray","toInt","toVar","valuesObject","appendTo","ensureNoVariables","ensureNoBnodes","unionAll","boundVars","getBoundVarsFromGroupGraphPattern","boundVar","ensureSparqlStar","degroupSingle","applyAnnotations","objectListToTriples","annotation","listItems","listTriples","createList","createOperationTree","negatedLiteral","createTypedLiteral","unescapeString","namePos","expansion","uriString","nestedTriple","defaultActions","recoverable","vstack","lstack","recovering","sharedState","setInput","yylloc","yyloc","ranges","symbol","preErrorSymbol","newState","yyval","lex","errStr","showPosition","first_line","last_line","first_column","last_column","basePath","baseRoot","operatorName","initialExpression","operationList","fromClauses","groupName","fromClause","defaults","annotations","blankId","partialSurrogatesWithoutEndpoint","trimLength","objectList","otherTriples","visitExpression","_applyAnnotations","newTriples","_more","_backtrack","matched","conditionStack","unput","oldLines","backtrack_lexer","less","pastInput","past","upcomingInput","pre","test_match","indexed_rule","backup","tempMatch","rules","_currentRules","flex","popState","conditions","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","skipUngroupedVariableCheck","prefixesCopy","JsonParser","suppressMissingStreamResultsError","parseJsonResults","sparqlResponse","rawBindings","parseJsonBindings","jsonParser","variablesFound","resultsFound","parseJsonValue","tripleValue","parseJsonBoolean","rdf_literal_1","delimiter","addValueToTree","lastKeyPath","singularize","nextNode","mergeTrees","tree1","tree2","tree1Element","mergedElement","materializeTree","materialized","sparqlJsonResultsToTree","bindingsArray","singularRoot","subTree","saxes_1","currentBindingAnnotation","currentBindings","currentBindingName","currentBindingType","currentText","currentQuotedTriples","stackEquals","stackBeginsWith","components","currentComponent","currentQuotedTriple","nb","nenc","retried","_normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","total","utf8CheckIncomplete","_nil","_parse","_stringify","_v","_v2","_v3","_v4","_validate","_version","getOutputLength","inputLength8","safeAdd","lsw","md5cmn","md5ff","md5gg","md5hh","md5ii","length32","hexTab","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","bytesToWords","randomUUID","rnds8","ROTL","H","N","M","unsafeStringify","byteToHex","_rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","rng","msecs","nsecs","dt","tl","tmh","_md","DNS","hashfunc","generateUUID","_namespace","stringToBytes","_native","rnds","_sha","_regex","CHAR","S","NAME_START_CHAR","NAME_CHAR","CHAR_RE","S_RE","NAME_START_CHAR_RE","NAME_CHAR_RE","NMTOKEN_RE","RESTRICTED_CHAR","RESTRICTED_CHAR_RE","isRestrictedChar","isCharAndNotRestricted","NC_NAME_START_CHAR","NC_NAME_CHAR","NC_NAME_START_CHAR_RE","NC_NAME_CHAR_RE","extensionEntries","isSourceExpression","isPromise","isEventEmitter","isFunction","fromIterable","fromIterator","fromArray","WrappingIterator","ClonedIterator","MappingIterator","identity","IntegerIterator","DESTROYED","ENDED","CLOSED","CLOSING","OPEN","INIT","setTaskScheduler","getTaskScheduler","LinkedList","events_1","linkedlist_1","taskScheduler","createTaskScheduler","task","scheduler","initialState","_readable","waitForDataListener","_changeState","eventAsync","_endAsync","details","_toStringDetails","resolveItems","pushItem","_properties","propertyCallbacks","_propertyCallbacks","getProperties","setProperties","copyProperties","propertyNames","uniq","by","surround","currentResolve","currentReject","pendingError","tryResolve","tryReject","removeListeners","addSingleListener","emitData","_item","preserve","_sourceStarted","_truncateThreshold","_buffer","_next","ascending","_last","ensureSourceAvailable","_destroySource","destroySource","allowDestination","_maxBufferSize","_pushedCount","doneCalled","_begin","neededItems","_completeClose","_boundPush","_createSource","_loadSourceAsync","_optional","_validateSource","destinationCloseWhenDone","destinationFillBuffer","_readAndTransform","_optionalTransform","pushedCount","_closeWhenDone","_offset","_limit","_filter","_prepender","_appender","_readAndTransformSimple","nextAsync","mappedItem","_insert","inserter","_transformerQueue","transformerQueue","_sources","_currentSource","_pending","loading","_loadSources","_addSource","_destroySources","destroySources","destinationRemoveEmptySources","_removeEmptySources","_readPosition","history","HistoryReader","endsAt","register","readAt","_getSourceProperty","hasProperty","unregister","_history","_trackers","setReadable","tracker","emitError","resolved","scheduleMicrotask","scheduleMacrotask","queued","perf","PROCESS","emitWarning","AC","AS","_onabort","warnACPolyfill","printACPolyfillWarning","LRU_CACHE_IGNORE_AC_WARNING","isPosInt","getUintArray","Uint16Array","ZeroArray","heap","static","HeapCls","ttl","ttlResolution","ttlAutopurge","updateAgeOnGet","updateAgeOnHas","allowStale","noDisposeOnSet","noUpdateTTL","maxEntrySize","sizeCalculation","noDeleteOnFetchRejection","noDeleteOnStaleGet","allowStaleOnFetchAbort","allowStaleOnFetchRejection","ignoreFetchAbort","unsafeExposeInternals","starts","ttls","keyMap","keyList","valList","free","isBackgroundFetch","backgroundFetch","moveToTail","indexes","rindexes","isStale","maxSize","calculatedSize","fetchMethod","disposeAfter","UintArray","shouldWarn","getRemainingTTL","unref","cachedNow","getNow","age","remainingTTL","entrySize","totalCalculatedSize","_i","_s","_st","_k","rentries","rkeys","rvalues","getOptions","__staleWhileFetching","thisp","rforEach","purgeStale","deleted","dump","setOptions","maxEntrySizeExceeded","__abortController","hasOptions","peekOptions","fetchOpts","updateCache","ignoreAbort","fetchAborted","fetchError","fetchAbortIgnored","fetchResolved","fetchFail","bf","fetchUpdated","allowStaleAborted","noDelete","returnedStale","__returned","fetchDispatched","fmp","fetchRejected","fetchOptions","forceRefresh","stale","staleVal","fetching","pi","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/versions/latest/engines/query-sparql/comunica-browser.js b/versions/latest/engines/query-sparql/comunica-browser.js index 46b4fdc..ebe09a0 100644 --- a/versions/latest/engines/query-sparql/comunica-browser.js +++ b/versions/latest/engines/query-sparql/comunica-browser.js @@ -1,3 +1,3 @@ /*! For license information please see comunica-browser.js.LICENSE.txt */ -var Comunica;(()=>{var e={36885:(e,t,r)=>{var{Buffer:n}=r(1048),a={},o=a.LEFT_BRACE=1,s=a.RIGHT_BRACE=2,c=a.LEFT_BRACKET=3,u=a.RIGHT_BRACKET=4,l=a.COLON=5,d=a.COMMA=6,p=a.TRUE=7,h=a.FALSE=8,f=a.NULL=9,y=a.STRING=10,g=a.NUMBER=11,m=a.START=17,b=a.STOP=18,v=a.TRUE1=33,_=a.TRUE2=34,w=a.TRUE3=35,T=a.FALSE1=49,S=a.FALSE2=50,O=a.FALSE3=51,E=a.FALSE4=52,x=a.NULL1=65,A=a.NULL2=66,R=a.NULL3=67,I=a.NUMBER1=81,P=a.NUMBER3=83,N=a.STRING1=97,D=a.STRING2=98,j=a.STRING3=99,C=a.STRING4=100,M=a.STRING5=101,L=a.STRING6=102,k=a.VALUE=113,F=a.KEY=114,B=a.OBJECT=129,U=a.ARRAY=130,q="\\".charCodeAt(0),V="/".charCodeAt(0),Q="\b".charCodeAt(0),$="\f".charCodeAt(0),H="\n".charCodeAt(0),G="\r".charCodeAt(0),z="\t".charCodeAt(0),K=65536;function X(e){return n.alloc?n.alloc(e):new n(e)}function J(){this.tState=m,this.value=void 0,this.string=void 0,this.stringBuffer=X(K),this.stringBufferOffset=0,this.unicode=void 0,this.highSurrogate=void 0,this.key=void 0,this.mode=void 0,this.stack=[],this.state=k,this.bytes_remaining=0,this.bytes_in_sequence=0,this.temp_buffs={2:X(2),3:X(3),4:X(4)},this.offset=-1}J.toknam=function(e){for(var t=Object.keys(a),r=0,n=t.length;r=K&&(this.string+=this.stringBuffer.toString("utf8"),this.stringBufferOffset=0),this.stringBuffer[this.stringBufferOffset++]=e},W.appendStringBuf=function(e,t,r){var n=e.length;"number"==typeof t&&(n="number"==typeof r?r<0?e.length-t+r:r-t:e.length-t),n<0&&(n=0),this.stringBufferOffset+n>K&&(this.string+=this.stringBuffer.toString("utf8",0,this.stringBufferOffset),this.stringBufferOffset=0),e.copy(this.stringBuffer,this.stringBufferOffset,t,r),this.stringBufferOffset+=n},W.write=function(e){var t;"string"==typeof e&&(e=new n(e));for(var r=0,i=e.length;r=48&&t<64)this.string=String.fromCharCode(t),this.tState=P;else if(32!==t&&9!==t&&10!==t&&13!==t)return this.charError(e,r)}else if(this.tState===N)if(t=e[r],this.bytes_remaining>0){for(var a=0;a=128){if(t<=193||t>244)return this.onError(new Error("Invalid UTF-8 character at position "+r+" in state "+J.toknam(this.tState)));if(t>=194&&t<=223&&(this.bytes_in_sequence=2),t>=224&&t<=239&&(this.bytes_in_sequence=3),t>=240&&t<=244&&(this.bytes_in_sequence=4),this.bytes_in_sequence+r>e.length){for(var g=0;g<=e.length-1-r;g++)this.temp_buffs[this.bytes_in_sequence][g]=e[r+g];this.bytes_remaining=r+this.bytes_in_sequence-e.length,r=e.length-1}else this.appendStringBuf(e,r,r+this.bytes_in_sequence),r=r+this.bytes_in_sequence-1}else if(34===t)this.tState=m,this.string+=this.stringBuffer.toString("utf8",0,this.stringBufferOffset),this.stringBufferOffset=0,this.onToken(y,this.string),this.offset+=n.byteLength(this.string,"utf8")+1,this.string=void 0;else if(92===t)this.tState=D;else{if(!(t>=32))return this.charError(e,r);this.appendStringChar(t)}else if(this.tState===D)if(34===(t=e[r]))this.appendStringChar(t),this.tState=N;else if(92===t)this.appendStringChar(q),this.tState=N;else if(47===t)this.appendStringChar(V),this.tState=N;else if(98===t)this.appendStringChar(Q),this.tState=N;else if(102===t)this.appendStringChar($),this.tState=N;else if(110===t)this.appendStringChar(H),this.tState=N;else if(114===t)this.appendStringChar(G),this.tState=N;else if(116===t)this.appendStringChar(z),this.tState=N;else{if(117!==t)return this.charError(e,r);this.unicode="",this.tState=j}else if(this.tState===j||this.tState===C||this.tState===M||this.tState===L){if(!((t=e[r])>=48&&t<64||t>64&&t<=70||t>96&&t<=102))return this.charError(e,r);if(this.unicode+=String.fromCharCode(t),this.tState++===L){var b=parseInt(this.unicode,16);this.unicode=void 0,void 0!==this.highSurrogate&&b>=56320&&b<57344?(this.appendStringBuf(new n(String.fromCharCode(this.highSurrogate,b))),this.highSurrogate=void 0):void 0===this.highSurrogate&&b>=55296&&b<56320?this.highSurrogate=b:(void 0!==this.highSurrogate&&(this.appendStringBuf(new n(String.fromCharCode(this.highSurrogate))),this.highSurrogate=void 0),this.appendStringBuf(new n(String.fromCharCode(b)))),this.tState=N}}else if(this.tState===I||this.tState===P)switch(t=e[r]){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 46:case 101:case 69:case 43:case 45:this.string+=String.fromCharCode(t),this.tState=P;break;default:this.tState=m;var k=this.numberReviver(this.string);if(k)return k;this.offset+=this.string.length-1,this.string=void 0,r--}else if(this.tState===v){if(114!==e[r])return this.charError(e,r);this.tState=_}else if(this.tState===_){if(117!==e[r])return this.charError(e,r);this.tState=w}else if(this.tState===w){if(101!==e[r])return this.charError(e,r);this.tState=m,this.onToken(p,!0),this.offset+=3}else if(this.tState===T){if(97!==e[r])return this.charError(e,r);this.tState=S}else if(this.tState===S){if(108!==e[r])return this.charError(e,r);this.tState=O}else if(this.tState===O){if(115!==e[r])return this.charError(e,r);this.tState=E}else if(this.tState===E){if(101!==e[r])return this.charError(e,r);this.tState=m,this.onToken(h,!1),this.offset+=4}else if(this.tState===x){if(117!==e[r])return this.charError(e,r);this.tState=A}else if(this.tState===A){if(108!==e[r])return this.charError(e,r);this.tState=R}else if(this.tState===R){if(108!==e[r])return this.charError(e,r);this.tState=m,this.onToken(f,null),this.offset+=3}},W.onToken=function(e,t){},W.parseError=function(e,t){this.tState=b,this.onError(new Error("Unexpected "+J.toknam(e)+(t?"("+JSON.stringify(t)+")":"")+" in state "+J.toknam(this.state)))},W.push=function(){this.stack.push({value:this.value,key:this.key,mode:this.mode})},W.pop=function(){var e=this.value,t=this.stack.pop();this.value=t.value,this.key=t.key,this.mode=t.mode,this.emit(e),this.mode||(this.state=k)},W.emit=function(e){this.mode&&(this.state=d),this.onValue(e)},W.onValue=function(e){},W.onToken=function(e,t){if(this.state===k)if(e===y||e===g||e===p||e===h||e===f)this.value&&(this.value[this.key]=t),this.emit(t);else if(e===o)this.push(),this.value?this.value=this.value[this.key]={}:this.value={},this.key=void 0,this.state=F,this.mode=B;else if(e===c)this.push(),this.value?this.value=this.value[this.key]=[]:this.value=[],this.key=0,this.mode=U,this.state=k;else if(e===s){if(this.mode!==B)return this.parseError(e,t);this.pop()}else{if(e!==u)return this.parseError(e,t);if(this.mode!==U)return this.parseError(e,t);this.pop()}else if(this.state===F)if(e===y)this.key=t,this.state=l;else{if(e!==s)return this.parseError(e,t);this.pop()}else if(this.state===l){if(e!==l)return this.parseError(e,t);this.state=k}else{if(this.state!==d)return this.parseError(e,t);if(e===d)this.mode===U?(this.key++,this.state=k):this.mode===B&&(this.state=F);else{if(!(e===u&&this.mode===U||e===s&&this.mode===B))return this.parseError(e,t);this.pop()}}},W.numberReviver=function(e){var t=Number(e);if(isNaN(t))return this.charError(buffer,i);e.match(/[0-9]+/)==e&&t.toString()!=e?this.onToken(y,e):this.onToken(g,t)},J.C=a,e.exports=J},64265:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fragment=void 0,t.fragment=function(e){let t=function(e){let t=e;(t.endsWith("/")||t.endsWith("#"))&&(t=t.slice(0,t.length-1));const r=[];t.lastIndexOf("/")>0&&r.push(t.lastIndexOf("/")),t.lastIndexOf("#")>0&&r.push(t.lastIndexOf("#"));const n=Math.max(...r);return t.slice(n+1)}(e);return t=t?function(e){var t;const r=null===(t=e.split(/[^a-z0-9]+/gi).filter((e=>""!==e)).map((e=>e[0].toUpperCase()+e.slice(1))).join("").match(/[a-z][a-z0-9]+/gi))||void 0===t?void 0:t[0];return void 0===r?void 0:r[0].toLowerCase()+r.slice(1)}(t):void 0,t||"v"}},37669:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.lookupAllPrefixes=t.prefixToUri=t.uriToPrefix=void 0;const i=r(64265),a=r(30376);t.uriToPrefix=function(e,t){return n(this,void 0,void 0,(function*(){let r;try{r=yield(0,a.lookupPrefix)(e,t)}catch(n){(null==t?void 0:t.mintOnUnknown)&&(r=(0,i.fragment)(e).slice(0,4))}if(void 0!==r&&"object"==typeof(null==t?void 0:t.existingPrefixes)&&r in t.existingPrefixes){let e=0;for(;`${r}${e}`in t.existingPrefixes;)e+=1;r=`${r}${e}`}return r}))},t.prefixToUri=function(e,t){return n(this,void 0,void 0,(function*(){try{return yield(0,a.lookupUri)(e,t)}catch(e){return}}))};var o=r(30376);Object.defineProperty(t,"lookupAllPrefixes",{enumerable:!0,get:function(){return o.lookupAllPrefixes}})},87173:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.fetchContext=t.fetchJson=void 0;const i=r(99766);function a(e,t){var r;return n(this,void 0,void 0,(function*(){const n=null!==(r=null==t?void 0:t.fetch)&&void 0!==r?r:i.fetch;return(yield n(e)).json()}))}t.fetchJson=a,t.fetchContext=function(e,t){return n(this,void 0,void 0,(function*(){return(yield a(e,t))["@context"]}))}},30376:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(12257),t),i(r(39268),t),i(r(91661),t)},91661:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.lookupAllPrefixes=void 0;const i=r(87173);t.lookupAllPrefixes=function(e){return n(this,void 0,void 0,(function*(){return(0,i.fetchContext)("https://prefix.cc/context",e)}))}},12257:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.lookupUri=void 0;const i=r(87173);t.lookupUri=function(e,t){return n(this,void 0,void 0,(function*(){const r=(yield(0,i.fetchContext)(`https://prefix.cc/${e}.file.jsonld`,t))[e];if("string"!=typeof r)throw new Error(`Expected uri to be a string, received: ${r} of type ${typeof r}`);return r}))}},39268:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.lookupPrefix=void 0;const i=r(87173);t.lookupPrefix=function(e,t){return n(this,void 0,void 0,(function*(){const r=new URL("https://prefix.cc/reverse");r.searchParams.append("uri",e),r.searchParams.append("format","jsonld");const n=Object.keys(yield(0,i.fetchContext)(r,t));if(0===n.length)throw new Error("No prefixes returned");return n[0]}))}},99766:function(e,t){var r="undefined"!=typeof self?self:this,n=function(){function e(){this.fetch=!1,this.DOMException=r.DOMException}return e.prototype=r,new e}();!function(e){!function(t){var r="URLSearchParams"in e,n="Symbol"in e&&"iterator"in Symbol,i="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),a="FormData"in e,o="ArrayBuffer"in e;if(o)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function u(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function l(e){return"string"!=typeof e&&(e=String(e)),e}function d(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function p(e){this.map={},e instanceof p?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function h(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function f(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function y(e){var t=new FileReader,r=f(t);return t.readAsArrayBuffer(e),r}function g(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:i&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:a&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:r&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():o&&i&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=g(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):o&&(ArrayBuffer.prototype.isPrototypeOf(e)||c(e))?this._bodyArrayBuffer=g(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var e=h(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?h(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(y)}),this.text=function(){var e,t,r,n=h(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,r=f(t=new FileReader),t.readAsText(e),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?n:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function _(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function w(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new p(t.headers),this.url=t.url||"",this._initBody(e)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},m.call(v.prototype),m.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},w.error=function(){var e=new w(null,{status:0,statusText:""});return e.type="error",e};var T=[301,302,303,307,308];w.redirect=function(e,t){if(-1===T.indexOf(t))throw new RangeError("Invalid status code");return new w(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function S(e,r){return new Promise((function(n,a){var o=new v(e,r);if(o.signal&&o.signal.aborted)return a(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function c(){s.abort()}s.onload=function(){var e,t,r={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new p,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t)};r.url="responseURL"in s?s.responseURL:r.headers.get("X-Request-URL");var i="response"in s?s.response:s.responseText;n(new w(i,r))},s.onerror=function(){a(new TypeError("Network request failed"))},s.ontimeout=function(){a(new TypeError("Network request failed"))},s.onabort=function(){a(new t.DOMException("Aborted","AbortError"))},s.open(o.method,o.url,!0),"include"===o.credentials?s.withCredentials=!0:"omit"===o.credentials&&(s.withCredentials=!1),"responseType"in s&&i&&(s.responseType="blob"),o.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),o.signal&&(o.signal.addEventListener("abort",c),s.onreadystatechange=function(){4===s.readyState&&o.signal.removeEventListener("abort",c)}),s.send(void 0===o._bodyInit?null:o._bodyInit)}))}S.polyfill=!0,e.fetch||(e.fetch=S,e.Headers=p,e.Request=v,e.Response=w),t.Headers=p,t.Request=v,t.Response=w,t.fetch=S,Object.defineProperty(t,"__esModule",{value:!0})}({})}(n),n.fetch.ponyfill=!0,delete n.fetch.polyfill;var i=n;(t=i.fetch).default=i.fetch,t.fetch=i.fetch,t.Headers=i.Headers,t.Request=i.Request,t.Response=i.Response,e.exports=t},31759:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.stringify=function(e){return n(this,void 0,void 0,(function*(){let t="";return e.on("data",(e=>{t+=e})),yield(0,i.promisifyEventEmitter)(e),t}))};const i=r(35033)},49126:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SaxesParser=t.EVENTS=void 0;const n=r(94824),i=r(30718),a=r(26457);var o=n.isS,s=n.isChar,c=n.isNameStartChar,u=n.isNameChar,l=n.S_LIST,d=n.NAME_RE,p=i.isChar,h=a.isNCNameStartChar,f=a.isNCNameChar,y=a.NC_NAME_RE;const g="http://www.w3.org/XML/1998/namespace",m="http://www.w3.org/2000/xmlns/",b={__proto__:null,xml:g,xmlns:m},v={__proto__:null,amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},_=-1,w=-2,T=13,S=33,O=10,E=60,x=61,A=62,R=63,I=93,P=e=>34===e||39===e,N=[34,39],D=[...N,91,A],j=[...N,E,I],C=[x,R,...l],M=[...l,A,38,E];function L(e,t,r){switch(t){case"xml":r!==g&&e.fail(`xml prefix must be bound to ${g}.`);break;case"xmlns":r!==m&&e.fail(`xmlns prefix must be bound to ${m}.`)}switch(r){case m:e.fail(""===t?`the default namespace may not be set to ${r}.`:`may not assign a prefix (even "xmlns") to the URI ${m}.`);break;case g:switch(t){case"xml":break;case"":e.fail(`the default namespace may not be set to ${r}.`);break;default:e.fail("may not assign the xml namespace to another prefix.")}}}const k=e=>y.test(e),F=e=>d.test(e);t.EVENTS=["xmldecl","text","processinginstruction","doctype","comment","opentagstart","attribute","opentag","closetag","cdata","error","end","ready"];const B={xmldecl:"xmldeclHandler",text:"textHandler",processinginstruction:"piHandler",doctype:"doctypeHandler",comment:"commentHandler",opentagstart:"openTagStartHandler",attribute:"attributeHandler",opentag:"openTagHandler",closetag:"closeTagHandler",cdata:"cdataHandler",error:"errorHandler",end:"endHandler",ready:"readyHandler"};t.SaxesParser=class{get closed(){return this._closed}constructor(e){this.opt=null!=e?e:{},this.fragmentOpt=!!this.opt.fragment;const t=this.xmlnsOpt=!!this.opt.xmlns;if(this.trackPosition=!1!==this.opt.position,this.fileName=this.opt.fileName,t){this.nameStartCheck=h,this.nameCheck=f,this.isName=k,this.processAttribs=this.processAttribsNS,this.pushAttrib=this.pushAttribNS,this.ns=Object.assign({__proto__:null},b);const e=this.opt.additionalNamespaces;null!=e&&(function(e,t){for(const r of Object.keys(t))L(e,r,t[r])}(this,e),Object.assign(this.ns,e))}else this.nameStartCheck=c,this.nameCheck=u,this.isName=F,this.processAttribs=this.processAttribsPlain,this.pushAttrib=this.pushAttribPlain;this.stateTable=[this.sBegin,this.sBeginWhitespace,this.sDoctype,this.sDoctypeQuote,this.sDTD,this.sDTDQuoted,this.sDTDOpenWaka,this.sDTDOpenWakaBang,this.sDTDComment,this.sDTDCommentEnding,this.sDTDCommentEnded,this.sDTDPI,this.sDTDPIEnding,this.sText,this.sEntity,this.sOpenWaka,this.sOpenWakaBang,this.sComment,this.sCommentEnding,this.sCommentEnded,this.sCData,this.sCDataEnding,this.sCDataEnding2,this.sPIFirstChar,this.sPIRest,this.sPIBody,this.sPIEnding,this.sXMLDeclNameStart,this.sXMLDeclName,this.sXMLDeclEq,this.sXMLDeclValueStart,this.sXMLDeclValue,this.sXMLDeclSeparator,this.sXMLDeclEnding,this.sOpenTag,this.sOpenTagSlash,this.sAttrib,this.sAttribName,this.sAttribNameSawWhite,this.sAttribValue,this.sAttribValueQuoted,this.sAttribValueClosed,this.sAttribValueUnquoted,this.sCloseTag,this.sCloseTagSawWhite],this._init()}_init(){var e;this.openWakaBang="",this.text="",this.name="",this.piTarget="",this.entity="",this.q=null,this.tags=[],this.tag=null,this.topNS=null,this.chunk="",this.chunkPosition=0,this.i=0,this.prevI=0,this.carriedFromPrevious=void 0,this.forbiddenState=0,this.attribList=[];const{fragmentOpt:t}=this;this.state=t?T:0,this.reportedTextBeforeRoot=this.reportedTextAfterRoot=this.closedRoot=this.sawRoot=t,this.xmlDeclPossible=!t,this.xmlDeclExpects=["version"],this.entityReturnState=void 0;let{defaultXMLVersion:r}=this.opt;if(void 0===r){if(!0===this.opt.forceXMLVersion)throw new Error("forceXMLVersion set but defaultXMLVersion is not set");r="1.0"}this.setXMLVersion(r),this.positionAtNewLine=0,this.doctype=!1,this._closed=!1,this.xmlDecl={version:void 0,encoding:void 0,standalone:void 0},this.line=1,this.column=0,this.ENTITIES=Object.create(v),null===(e=this.readyHandler)||void 0===e||e.call(this)}get position(){return this.chunkPosition+this.i}get columnIndex(){return this.position-this.positionAtNewLine}on(e,t){this[B[e]]=t}off(e){this[B[e]]=void 0}makeError(e){var t;let r=null!==(t=this.fileName)&&void 0!==t?t:"";return this.trackPosition&&(r.length>0&&(r+=":"),r+=`${this.line}:${this.column}`),r.length>0&&(r+=": "),new Error(r+e)}fail(e){const t=this.makeError(e),r=this.errorHandler;if(void 0===r)throw t;return r(t),this}write(e){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");let t=!1;null===e?(t=!0,e=""):"object"==typeof e&&(e=e.toString()),void 0!==this.carriedFromPrevious&&(e=`${this.carriedFromPrevious}${e}`,this.carriedFromPrevious=void 0);let r=e.length;const n=e.charCodeAt(r-1);!t&&(13===n||n>=55296&&n<=56319)&&(this.carriedFromPrevious=e[r-1],r--,e=e.slice(0,r));const{stateTable:i}=this;for(this.chunk=e,this.i=0;this.i=e.length)return _;const r=e.charCodeAt(t);if(this.column++,r<55296){if(r>=32||9===r)return r;switch(r){case O:return this.line++,this.column=0,this.positionAtNewLine=this.position,O;case 13:return e.charCodeAt(t+1)===O&&(this.i=t+2),this.line++,this.column=0,this.positionAtNewLine=this.position,w;default:return this.fail("disallowed character."),r}}if(r>56319)return r>=57344&&r<=65533||this.fail("disallowed character."),r;const n=65536+1024*(r-55296)+(e.charCodeAt(t+1)-56320);return this.i=t+2,n>1114111&&this.fail("disallowed character."),n}getCode11(){const{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return _;const r=e.charCodeAt(t);if(this.column++,r<55296){if(r>31&&r<127||r>159&&8232!==r||9===r)return r;switch(r){case O:return this.line++,this.column=0,this.positionAtNewLine=this.position,O;case 13:{const r=e.charCodeAt(t+1);r!==O&&133!==r||(this.i=t+2)}case 133:case 8232:return this.line++,this.column=0,this.positionAtNewLine=this.position,w;default:return this.fail("disallowed character."),r}}if(r>56319)return r>=57344&&r<=65533||this.fail("disallowed character."),r;const n=65536+1024*(r-55296)+(e.charCodeAt(t+1)-56320);return this.i=t+2,n>1114111&&this.fail("disallowed character."),n}getCodeNorm(){const e=this.getCode();return e===w?O:e}unget(){this.i=this.prevI,this.column--}captureTo(e){let{i:t}=this;const{chunk:r}=this;for(;;){const n=this.getCode(),i=n===w,a=i?O:n;if(a===_||e.includes(a))return this.text+=r.slice(t,this.prevI),a;i&&(this.text+=`${r.slice(t,this.prevI)}\n`,t=this.i)}}captureToChar(e){let{i:t}=this;const{chunk:r}=this;for(;;){let n=this.getCode();switch(n){case w:this.text+=`${r.slice(t,this.prevI)}\n`,t=this.i,n=O;break;case _:return this.text+=r.slice(t),!1}if(n===e)return this.text+=r.slice(t,this.prevI),!0}}captureNameChars(){const{chunk:e,i:t}=this;for(;;){const r=this.getCode();if(r===_)return this.name+=e.slice(t),_;if(!u(r))return this.name+=e.slice(t,this.prevI),r===w?O:r}}skipSpaces(){for(;;){const e=this.getCodeNorm();if(e===_||!o(e))return e}}setXMLVersion(e){this.currentXMLVersion=e,"1.0"===e?(this.isChar=s,this.getCode=this.getCode10):(this.isChar=p,this.getCode=this.getCode11)}sBegin(){65279===this.chunk.charCodeAt(0)&&(this.i++,this.column++),this.state=1}sBeginWhitespace(){const e=this.i,t=this.skipSpaces();switch(this.prevI!==e&&(this.xmlDeclPossible=!1),t){case E:if(this.state=15,0!==this.text.length)throw new Error("no-empty text at start");break;case _:break;default:this.unget(),this.state=T,this.xmlDeclPossible=!1}}sDoctype(){var e;const t=this.captureTo(D);switch(t){case A:null===(e=this.doctypeHandler)||void 0===e||e.call(this,this.text),this.text="",this.state=T,this.doctype=!0;break;case _:break;default:this.text+=String.fromCodePoint(t),91===t?this.state=4:P(t)&&(this.state=3,this.q=t)}}sDoctypeQuote(){const e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.q=null,this.state=2)}sDTD(){const e=this.captureTo(j);e!==_&&(this.text+=String.fromCodePoint(e),e===I?this.state=2:e===E?this.state=6:P(e)&&(this.state=5,this.q=e))}sDTDQuoted(){const e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.state=4,this.q=null)}sDTDOpenWaka(){const e=this.getCodeNorm();switch(this.text+=String.fromCodePoint(e),e){case 33:this.state=7,this.openWakaBang="";break;case R:this.state=11;break;default:this.state=4}}sDTDOpenWakaBang(){const e=String.fromCodePoint(this.getCodeNorm()),t=this.openWakaBang+=e;this.text+=e,"-"!==t&&(this.state="--"===t?8:4,this.openWakaBang="")}sDTDComment(){this.captureToChar(45)&&(this.text+="-",this.state=9)}sDTDCommentEnding(){const e=this.getCodeNorm();this.text+=String.fromCodePoint(e),this.state=45===e?10:8}sDTDCommentEnded(){const e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===A?this.state=4:(this.fail("malformed comment."),this.state=8)}sDTDPI(){this.captureToChar(R)&&(this.text+="?",this.state=12)}sDTDPIEnding(){const e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===A&&(this.state=4)}sText(){0!==this.tags.length?this.handleTextInRoot():this.handleTextOutsideRoot()}sEntity(){let{i:e}=this;const{chunk:t}=this;e:for(;;)switch(this.getCode()){case w:this.entity+=`${t.slice(e,this.prevI)}\n`,e=this.i;break;case 59:{const{entityReturnState:r}=this,n=this.entity+t.slice(e,this.prevI);let i;this.state=r,""===n?(this.fail("empty entity name."),i="&;"):(i=this.parseEntity(n),this.entity=""),r===T&&void 0===this.textHandler||(this.text+=i);break e}case _:this.entity+=t.slice(e);break e}}sOpenWaka(){const e=this.getCode();if(c(e))this.state=34,this.unget(),this.xmlDeclPossible=!1;else switch(e){case 47:this.state=43,this.xmlDeclPossible=!1;break;case 33:this.state=16,this.openWakaBang="",this.xmlDeclPossible=!1;break;case R:this.state=23;break;default:this.fail("disallowed character in tag name"),this.state=T,this.xmlDeclPossible=!1}}sOpenWakaBang(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case"[CDATA[":this.sawRoot||this.reportedTextBeforeRoot||(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0),this.state=20,this.openWakaBang="";break;case"--":this.state=17,this.openWakaBang="";break;case"DOCTYPE":this.state=2,(this.doctype||this.sawRoot)&&this.fail("inappropriately located doctype declaration."),this.openWakaBang="";break;default:this.openWakaBang.length>=7&&this.fail("incorrect syntax.")}}sComment(){this.captureToChar(45)&&(this.state=18)}sCommentEnding(){var e;const t=this.getCodeNorm();45===t?(this.state=19,null===(e=this.commentHandler)||void 0===e||e.call(this,this.text),this.text=""):(this.text+=`-${String.fromCodePoint(t)}`,this.state=17)}sCommentEnded(){const e=this.getCodeNorm();e!==A?(this.fail("malformed comment."),this.text+=`--${String.fromCodePoint(e)}`,this.state=17):this.state=T}sCData(){this.captureToChar(I)&&(this.state=21)}sCDataEnding(){const e=this.getCodeNorm();e===I?this.state=22:(this.text+=`]${String.fromCodePoint(e)}`,this.state=20)}sCDataEnding2(){var e;const t=this.getCodeNorm();switch(t){case A:null===(e=this.cdataHandler)||void 0===e||e.call(this,this.text),this.text="",this.state=T;break;case I:this.text+="]";break;default:this.text+=`]]${String.fromCodePoint(t)}`,this.state=20}}sPIFirstChar(){const e=this.getCodeNorm();this.nameStartCheck(e)?(this.piTarget+=String.fromCodePoint(e),this.state=24):e===R||o(e)?(this.fail("processing instruction without a target."),this.state=e===R?26:25):(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(e),this.state=24)}sPIRest(){const{chunk:e,i:t}=this;for(;;){const r=this.getCodeNorm();if(r===_)return void(this.piTarget+=e.slice(t));if(!this.nameCheck(r)){this.piTarget+=e.slice(t,this.prevI);const n=r===R;n||o(r)?"xml"===this.piTarget?(this.xmlDeclPossible||this.fail("an XML declaration must be at the start of the document."),this.state=n?S:27):this.state=n?26:25:(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(r));break}}}sPIBody(){if(0===this.text.length){const e=this.getCodeNorm();e===R?this.state=26:o(e)||(this.text=String.fromCodePoint(e))}else this.captureToChar(R)&&(this.state=26)}sPIEnding(){var e;const t=this.getCodeNorm();if(t===A){const{piTarget:t}=this;"xml"===t.toLowerCase()&&this.fail("the XML declaration must appear at the start of the document."),null===(e=this.piHandler)||void 0===e||e.call(this,{target:t,body:this.text}),this.piTarget=this.text="",this.state=T}else t===R?this.text+="?":(this.text+=`?${String.fromCodePoint(t)}`,this.state=25);this.xmlDeclPossible=!1}sXMLDeclNameStart(){const e=this.skipSpaces();e!==R?e!==_&&(this.state=28,this.name=String.fromCodePoint(e)):this.state=S}sXMLDeclName(){const e=this.captureTo(C);if(e===R)return this.state=S,this.name+=this.text,this.text="",void this.fail("XML declaration is incomplete.");if(o(e)||e===x){if(this.name+=this.text,this.text="",!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail("did not expect any more name/value pairs.");break;case 1:this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);break;default:this.fail(`expected one of ${this.xmlDeclExpects.join(", ")}`)}this.state=e===x?30:29}}sXMLDeclEq(){const e=this.getCodeNorm();if(e===R)return this.state=S,void this.fail("XML declaration is incomplete.");o(e)||(e!==x&&this.fail("value required."),this.state=30)}sXMLDeclValueStart(){const e=this.getCodeNorm();if(e===R)return this.state=S,void this.fail("XML declaration is incomplete.");o(e)||(P(e)?this.q=e:(this.fail("value must be quoted."),this.q=32),this.state=31)}sXMLDeclValue(){const e=this.captureTo([this.q,R]);if(e===R)return this.state=S,this.text="",void this.fail("XML declaration is incomplete.");if(e===_)return;const t=this.text;switch(this.text="",this.name){case"version":{this.xmlDeclExpects=["encoding","standalone"];const e=t;this.xmlDecl.version=e,/^1\.[0-9]+$/.test(e)?this.opt.forceXMLVersion||this.setXMLVersion(e):this.fail("version number must match /^1\\.[0-9]+$/.");break}case"encoding":/^[A-Za-z][A-Za-z0-9._-]*$/.test(t)||this.fail("encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/."),this.xmlDeclExpects=["standalone"],this.xmlDecl.encoding=t;break;case"standalone":"yes"!==t&&"no"!==t&&this.fail('standalone value must match "yes" or "no".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=t}this.name="",this.state=32}sXMLDeclSeparator(){const e=this.getCodeNorm();e!==R?(o(e)||(this.fail("whitespace required."),this.unget()),this.state=27):this.state=S}sXMLDeclEnding(){var e;this.getCodeNorm()===A?("xml"!==this.piTarget?this.fail("processing instructions are not allowed before root."):"version"!==this.name&&this.xmlDeclExpects.includes("version")&&this.fail("XML declaration must contain a version."),null===(e=this.xmldeclHandler)||void 0===e||e.call(this,this.xmlDecl),this.name="",this.piTarget=this.text="",this.state=T):this.fail("The character ? is disallowed anywhere in XML declarations."),this.xmlDeclPossible=!1}sOpenTag(){var e;const t=this.captureNameChars();if(t===_)return;const r=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name="",this.xmlnsOpt&&(this.topNS=r.ns=Object.create(null)),null===(e=this.openTagStartHandler)||void 0===e||e.call(this,r),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail("documents may contain only one root."),t){case A:this.openTag();break;case 47:this.state=35;break;default:o(t)||this.fail("disallowed character in tag name."),this.state=36}}sOpenTagSlash(){this.getCode()===A?this.openSelfClosingTag():(this.fail("forward-slash in opening tag not followed by >."),this.state=36)}sAttrib(){const e=this.skipSpaces();e!==_&&(c(e)?(this.unget(),this.state=37):e===A?this.openTag():47===e?this.state=35:this.fail("disallowed character in attribute name."))}sAttribName(){const e=this.captureNameChars();e===x?this.state=39:o(e)?this.state=38:e===A?(this.fail("attribute without value."),this.pushAttrib(this.name,this.name),this.name=this.text="",this.openTag()):e!==_&&this.fail("disallowed character in attribute name.")}sAttribNameSawWhite(){const e=this.skipSpaces();switch(e){case _:return;case x:this.state=39;break;default:this.fail("attribute without value."),this.text="",this.name="",e===A?this.openTag():c(e)?(this.unget(),this.state=37):(this.fail("disallowed character in attribute name."),this.state=36)}}sAttribValue(){const e=this.getCodeNorm();P(e)?(this.q=e,this.state=40):o(e)||(this.fail("unquoted attribute value."),this.state=42,this.unget())}sAttribValueQuoted(){const{q:e,chunk:t}=this;let{i:r}=this;for(;;)switch(this.getCode()){case e:return this.pushAttrib(this.name,this.text+t.slice(r,this.prevI)),this.name=this.text="",this.q=null,void(this.state=41);case 38:return this.text+=t.slice(r,this.prevI),this.state=14,void(this.entityReturnState=40);case O:case w:case 9:this.text+=`${t.slice(r,this.prevI)} `,r=this.i;break;case E:return this.text+=t.slice(r,this.prevI),void this.fail("disallowed character.");case _:return void(this.text+=t.slice(r))}}sAttribValueClosed(){const e=this.getCodeNorm();o(e)?this.state=36:e===A?this.openTag():47===e?this.state=35:c(e)?(this.fail("no whitespace between attributes."),this.unget(),this.state=37):this.fail("disallowed character in attribute name.")}sAttribValueUnquoted(){const e=this.captureTo(M);switch(e){case 38:this.state=14,this.entityReturnState=42;break;case E:this.fail("disallowed character.");break;case _:break;default:this.text.includes("]]>")&&this.fail('the string "]]>" is disallowed in char data.'),this.pushAttrib(this.name,this.text),this.name=this.text="",e===A?this.openTag():this.state=36}}sCloseTag(){const e=this.captureNameChars();e===A?this.closeTag():o(e)?this.state=44:e!==_&&this.fail("disallowed character in closing tag.")}sCloseTagSawWhite(){switch(this.skipSpaces()){case A:this.closeTag();break;case _:break;default:this.fail("disallowed character in closing tag.")}}handleTextInRoot(){let{i:e,forbiddenState:t}=this;const{chunk:r,textHandler:n}=this;e:for(;;)switch(this.getCode()){case E:if(this.state=15,void 0!==n){const{text:t}=this,i=r.slice(e,this.prevI);0!==t.length?(n(t+i),this.text=""):0!==i.length&&n(i)}t=0;break e;case 38:this.state=14,this.entityReturnState=T,void 0!==n&&(this.text+=r.slice(e,this.prevI)),t=0;break e;case I:switch(t){case 0:t=1;break;case 1:t=2;break;case 2:break;default:throw new Error("impossible state")}break;case A:2===t&&this.fail('the string "]]>" is disallowed in char data.'),t=0;break;case w:void 0!==n&&(this.text+=`${r.slice(e,this.prevI)}\n`),e=this.i,t=0;break;case _:void 0!==n&&(this.text+=r.slice(e));break e;default:t=0}this.forbiddenState=t}handleTextOutsideRoot(){let{i:e}=this;const{chunk:t,textHandler:r}=this;let n=!1;e:for(;;){const i=this.getCode();switch(i){case E:if(this.state=15,void 0!==r){const{text:n}=this,i=t.slice(e,this.prevI);0!==n.length?(r(n+i),this.text=""):0!==i.length&&r(i)}break e;case 38:this.state=14,this.entityReturnState=T,void 0!==r&&(this.text+=t.slice(e,this.prevI)),n=!0;break e;case w:void 0!==r&&(this.text+=`${t.slice(e,this.prevI)}\n`),e=this.i;break;case _:void 0!==r&&(this.text+=t.slice(e));break e;default:o(i)||(n=!0)}}n&&(this.sawRoot||this.reportedTextBeforeRoot||(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0))}pushAttribNS(e,t){var r;const{prefix:n,local:i}=this.qname(e),a={name:e,prefix:n,local:i,value:t};if(this.attribList.push(a),null===(r=this.attributeHandler)||void 0===r||r.call(this,a),"xmlns"===n){const e=t.trim();"1.0"===this.currentXMLVersion&&""===e&&this.fail("invalid attempt to undefine prefix in XML 1.0"),this.topNS[i]=e,L(this,i,e)}else if("xmlns"===e){const e=t.trim();this.topNS[""]=e,L(this,"",e)}}pushAttribPlain(e,t){var r;const n={name:e,value:t};this.attribList.push(n),null===(r=this.attributeHandler)||void 0===r||r.call(this,n)}end(){var e,t;this.sawRoot||this.fail("document must contain a root element.");const{tags:r}=this;for(;r.length>0;){const e=r.pop();this.fail(`unclosed tag: ${e.name}`)}0!==this.state&&this.state!==T&&this.fail("unexpected end.");const{text:n}=this;return 0!==n.length&&(null===(e=this.textHandler)||void 0===e||e.call(this,n),this.text=""),this._closed=!0,null===(t=this.endHandler)||void 0===t||t.call(this),this._init(),this}resolve(e){var t,r;let n=this.topNS[e];if(void 0!==n)return n;const{tags:i}=this;for(let t=i.length-1;t>=0;t--)if(n=i[t].ns[e],void 0!==n)return n;return n=this.ns[e],void 0!==n?n:null===(r=(t=this.opt).resolvePrefix)||void 0===r?void 0:r.call(t,e)}qname(e){const t=e.indexOf(":");if(-1===t)return{prefix:"",local:e};const r=e.slice(t+1),n=e.slice(0,t);return(""===n||""===r||r.includes(":"))&&this.fail(`malformed name: ${e}.`),{prefix:n,local:r}}processAttribsNS(){var e;const{attribList:t}=this,r=this.tag;{const{prefix:t,local:n}=this.qname(r.name);r.prefix=t,r.local=n;const i=r.uri=null!==(e=this.resolve(t))&&void 0!==e?e:"";""!==t&&("xmlns"===t&&this.fail('tags may not have "xmlns" as prefix.'),""===i&&(this.fail(`unbound namespace prefix: ${JSON.stringify(t)}.`),r.uri=t))}if(0===t.length)return;const{attributes:n}=r,i=new Set;for(const e of t){const{name:t,prefix:r,local:a}=e;let o,s;""===r?(o="xmlns"===t?m:"",s=t):(o=this.resolve(r),void 0===o&&(this.fail(`unbound namespace prefix: ${JSON.stringify(r)}.`),o=r),s=`{${o}}${a}`),i.has(s)&&this.fail(`duplicate attribute: ${s}.`),i.add(s),e.uri=o,n[t]=e}this.attribList=[]}processAttribsPlain(){const{attribList:e}=this,t=this.tag.attributes;for(const{name:r,value:n}of e)void 0!==t[r]&&this.fail(`duplicate attribute: ${r}.`),t[r]=n;this.attribList=[]}openTag(){var e;this.processAttribs();const{tags:t}=this,r=this.tag;r.isSelfClosing=!1,null===(e=this.openTagHandler)||void 0===e||e.call(this,r),t.push(r),this.state=T,this.name=""}openSelfClosingTag(){var e,t,r;this.processAttribs();const{tags:n}=this,i=this.tag;i.isSelfClosing=!0,null===(e=this.openTagHandler)||void 0===e||e.call(this,i),null===(t=this.closeTagHandler)||void 0===t||t.call(this,i),null===(this.tag=null!==(r=n[n.length-1])&&void 0!==r?r:null)&&(this.closedRoot=!0),this.state=T,this.name=""}closeTag(){const{tags:e,name:t}=this;if(this.state=T,this.name="",""===t)return this.fail("weird empty close tag."),void(this.text+="");const r=this.closeTagHandler;let n=e.length;for(;n-- >0;){const n=this.tag=e.pop();if(this.topNS=n.ns,null==r||r(n),n.name===t)break;this.fail("unexpected close tag.")}0===n?this.closedRoot=!0:n<0&&(this.fail(`unmatched closing tag: ${t}.`),this.text+=``)}parseEntity(e){if("#"!==e[0]){const t=this.ENTITIES[e];return void 0!==t?t:(this.fail(this.isName(e)?"undefined entity.":"disallowed character in entity name."),`&${e};`)}let t=NaN;return"x"===e[1]&&/^#x[0-9a-f]+$/i.test(e)?t=parseInt(e.slice(2),16):/^#[0-9]+$/.test(e)&&(t=parseInt(e.slice(1),10)),this.isChar(t)?String.fromCodePoint(t):(this.fail("malformed character entity."),`&${e};`)}}},52267:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReadableWebToNodeStream=void 0;const n=r(58521);class i extends n.Readable{constructor(e){super(),this.bytesRead=0,this.released=!1,this.reader=e.getReader()}async _read(){if(this.released)return void this.push(null);this.pendingRead=this.reader.read();const e=await this.pendingRead;delete this.pendingRead,e.done||this.released?this.push(null):(this.bytesRead+=e.value.length,this.push(e.value))}async waitForReadToComplete(){this.pendingRead&&await this.pendingRead}async close(){await this.syncAndRelease()}async syncAndRelease(){this.released=!0,await this.waitForReadToComplete(),await this.reader.releaseLock()}}t.ReadableWebToNodeStream=i},67083:e=>{"use strict";const{AbortController:t,AbortSignal:r}="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0;e.exports=t,e.exports.AbortSignal=r,e.exports.default=t},37754:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){const t=[];return r=e.on("data",(e=>t.push(e))),n=t,new Promise(((e,t)=>{r.on("end",(()=>e(n))),r.on("error",t)}));var r,n}},2922:(e,t,r)=>{const n=r(82815),i=r(30979),a=r(67458),o=r(21156),s=r(37841);e.exports={DynamicNestedLoopJoin:n,HashJoin:i,NestedLoopJoin:a,SymmetricHashJoin:o,MergeStream:s}},82815:(e,t,r)=>{let n=r(76664),i=n.MultiTransformIterator,a=n.SimpleTransformIterator;e.exports=class extends i{constructor(e,t,r,n){super(e,n),this.funRight=t,this.funJoin=r}_createTransformer(e){return new a(this.funRight(e),{transform:(t,r,n)=>{let i=this.funJoin(e,t);null!==i&&n(i),r()}})}}},30979:(e,t,r)=>{let n=r(76664).AsyncIterator;e.exports=class extends n{constructor(e,t,r,n){super(),this.addedDataListener=!1,this.left=e,this.right=t,this.funHash=r,this.funJoin=n,this.leftMap=new Map,this.match=null,this.matches=[],this.matchIdx=0,this.left.on("error",(e=>this.destroy(e))),this.right.on("error",(e=>this.destroy(e))),this.readable=!1,this.left.on("end",function(){this.readable=!0,this.right.on("readable",(()=>this.readable=!0)),this.right.on("end",(()=>{this.hasResults()||this._end()}))}.bind(this)),this.on("newListener",(e=>{"data"===e&&this._addDataListenerIfNeeded()})),this.left.readable&&this._addDataListenerIfNeeded(),this.left.on("readable",(()=>this._addDataListenerIfNeeded()))}hasResults(){return!this.right.ended||this.matchIdx{const{MultiTransformIterator:n,SimpleTransformIterator:i,scheduleTask:a}=r(76664);e.exports=class extends n{constructor(e,t,r,n){super(e,n),this.right=t,this.funJoin=r,this.on("end",(()=>this.right.close()))}_end(){super._end(),a((()=>this.right.destroy()))}_createTransformer(e){return new i(this.right.clone(),{transform:(t,r,n)=>{let i=this.funJoin(e,t);null!==i&&n(i),r()}})}}},21156:(e,t,r)=>{let n=r(76664).AsyncIterator;e.exports=class extends n{constructor(e,t,r,n){super(),this.left=e,this.right=t,this.funHash=r,this.funJoin=n,this.usedLeft=!1,this.leftMap=new Map,this.rightMap=new Map,this.on("end",(()=>this._cleanup())),this.match=null,this.matches=[],this.matchIdx=0,(this.left.readable||this.right.readable)&&(this.readable=!0),this.left.on("error",(e=>this.destroy(e))),this.right.on("error",(e=>this.destroy(e))),this.left.on("readable",(()=>this.readable=!0)),this.right.on("readable",(()=>this.readable=!0)),this.left.on("end",(()=>{this.hasResults()||this._end()})),this.right.on("end",(()=>{this.hasResults()||this._end()}))}hasResults(){return!this.left.ended||!this.right.ended||!!this.matches&&this.matchIdx{let n=r(76664).AsyncIterator;e.exports=class extends n{constructor(e){super(),Array.isArray(e)||(e=Array.prototype.slice.call(arguments)),this.streams=e;for(let t of e)t.on("readable",(()=>this.emit("readable"))),t.on("end",(()=>this._removeStream(t)));0===this.streams.length&&this.close(),this.idx=this.streams.length-1}_removeStream(e){let t=this.streams.indexOf(e);t<0||(this.streams.splice(t,1),this.idx>=this.streams.length&&--this.idx,0===this.streams.length&&this._end())}close(){super.close();for(let e of this.streams)e.close()}read(){for(let e=0;e{e.exports=function(e){const t=new(r(5868).LoggerVoid),n=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-init/^3.0.0/components/ActorInit.jsonld#ActorInit_default_bus"}),i=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-context-preprocess/^3.0.0/components/ActorContextPreprocess.jsonld#ActorContextPreprocess_default_bus"}),a=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-bindings/^3.0.0/components/ActorHashBindings.jsonld#ActorHashBindings_default_bus"}),o=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-quads/^3.0.0/components/ActorHashQuads.jsonld#ActorHashQuads_default_bus"}),s=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-query-operation/^3.0.0/components/ActorOptimizeQueryOperation.jsonld#ActorOptimizeQueryOperation_default_bus"}),c=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-parse/^3.0.0/components/ActorQueryParse.jsonld#ActorQueryParse_default_bus"}),u=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-result-serialize/^3.0.0/components/ActorQueryResultSerialize.jsonld#ActorQueryResultSerialize_default_bus"}),l=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify-hypermedia/^3.0.0/components/ActorQuerySourceIdentifyHypermedia.jsonld#ActorQuerySourceIdentifyHypermedia_default_bus"}),d=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference/^3.0.0/components/ActorDereference.jsonld#ActorDereference_default_bus"}),p=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference-rdf/^3.0.0/components/ActorDereferenceRdf.jsonld#ActorDereferenceRdf_default_bus"}),h=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-entries-sort/^3.0.0/components/ActorRdfJoinEntriesSort.jsonld#ActorRdfJoinEntriesSort_default_bus"}),f=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-selectivity/^3.0.0/components/ActorRdfJoinSelectivity.jsonld#ActorRdfJoinSelectivity_default_bus"}),y=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata/^3.0.0/components/ActorRdfMetadata.jsonld#ActorRdfMetadata_default_bus"}),g=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-accumulate/^3.0.0/components/ActorRdfMetadataAccumulate.jsonld#ActorRdfMetadataAccumulate_default_bus"}),m=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-extract/^3.0.0/components/ActorRdfMetadataExtract.jsonld#ActorRdfMetadataExtract_default_bus"}),b=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse/^3.0.0/components/ActorRdfParse.jsonld#ActorRdfParse_default_bus"}),v=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse-html/^3.0.0/components/ActorRdfParseHtml.jsonld#ActorRdfParseHtml_default_bus"}),_=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links/^3.0.0/components/ActorRdfResolveHypermediaLinks.jsonld#ActorRdfResolveHypermediaLinks_default_bus"}),w=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links-queue/^3.0.0/components/ActorRdfResolveHypermediaLinksQueue.jsonld#ActorRdfResolveHypermediaLinksQueue_default_bus"}),T=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-serialize/^3.0.0/components/ActorRdfSerialize.jsonld#ActorRdfSerialize_default_bus"}),S=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-hypermedia/^3.0.0/components/ActorRdfUpdateHypermedia.jsonld#ActorRdfUpdateHypermedia_default_bus"}),O=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads/^3.0.0/components/ActorRdfUpdateQuads.jsonld#ActorRdfUpdateQuads_default_bus"}),E=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^3.0.0/components/ActorHttp.jsonld#ActorHttp_default_bus"}),x=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^3.0.0/components/ActorHttp.jsonld#ActorHttp_fallback_bus"}),A=new(r(59510).BusQueryOperation)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^3.0.0/components/ActorQueryOperation.jsonld#ActorQueryOperation_default_bus"}),R=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-process/^3.0.0/components/ActorQueryProcess.jsonld#ActorQueryProcess_default_bus"}),I=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify/^3.0.0/components/ActorQuerySourceIdentify.jsonld#ActorQuerySourceIdentify_default_bus"}),P=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^3.0.0/components/ActorRdfJoin.jsonld#ActorRdfJoin_default_bus"}),N=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http-invalidate/^3.0.0/components/ActorHttpInvalidate.jsonld#ActorHttpInvalidate_default_bus"}),D=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-merge-bindings-context/^3.0.0/components/ActorMergeBindingsContext.jsonld#ActorMergeBindingsContext_default_bus"}),j=(new(r(36251).ActorContextPreprocessConvertShortcuts)({contextKeyShortcuts:{baseIRI:"@comunica/actor-init-query:baseIRI",datetime:"@comunica/actor-http-memento:datetime",destination:"@comunica/bus-rdf-update-quads:destination",distinctConstruct:"@comunica/actor-init-query:distinctConstruct",explain:"@comunica/actor-init-query:explain",extensionFunctionCreator:"@comunica/actor-init-query:extensionFunctionCreator",extensionFunctions:"@comunica/actor-init-query:extensionFunctions",fetch:"@comunica/bus-http:fetch",functionArgumentsCache:"@comunica/actor-init-query:functionArgumentsCache",httpAuth:"@comunica/bus-http:auth",httpBodyTimeout:"@comunica/bus-http:http-body-timeout",httpIncludeCredentials:"@comunica/bus-http:include-credentials",httpProxyHandler:"@comunica/actor-http-proxy:httpProxyHandler",httpRetryCount:"@comunica/bus-http:http-retry-count",httpRetryDelay:"@comunica/bus-http:http-retry-delay",httpRetryOnServerError:"@comunica/bus-http:http-retry-on-server-error",httpTimeout:"@comunica/bus-http:http-timeout",initialBindings:"@comunica/actor-init-query:initialBindings",lenient:"@comunica/actor-init-query:lenient",log:"@comunica/core:log",noCache:"@comunica/actor-init-query:noCache",queryFormat:"@comunica/actor-init-query:queryFormat",queryTimestamp:"@comunica/actor-init-query:queryTimestamp",readOnly:"@comunica/bus-query-operation:readOnly",recoverBrokenLinks:"@comunica/bus-http-wayback:recover-broken-links",sources:"@comunica/actor-init-query:querySourcesUnidentified",traverse:"@comunica/bus-query-source-identify:traverse",unionDefaultGraph:"@comunica/bus-query-operation:unionDefaultGraph"},name:"urn:comunica:default:context-preprocess/actors#convert-shortcuts",bus:i}),new(r(35451).ActorContextPreprocessSetDefaults)({logger:t,name:"urn:comunica:default:context-preprocess/actors#set-defaults",bus:i}),new(r(41670).ActorContextPreprocessSourceToDestination)({name:"urn:comunica:default:context-preprocess/actors#source-to-destination",bus:i}),new(r(35106).ActorContextPreprocessQuerySourceSkolemize)({name:"urn:comunica:default:context-preprocess/actors#query-source-skolemize",bus:i})),C=new(r(30827).MediatorCombinePipeline)({name:"urn:comunica:default:context-preprocess/mediators#main",bus:i}),M=(new(r(11150).ActorHashBindingsSha1)({name:"urn:comunica:default:hash-bindings/actors#sha1",bus:a}),new(r(25896).MediatorRace)({name:"urn:comunica:default:hash-bindings/mediators#main",bus:a})),L=(new(r(64188).ActorHashQuadsSha1)({name:"urn:comunica:default:hash-quads/actors#sha1",bus:o}),new(r(25896).MediatorRace)({name:"urn:comunica:default:hash-quads/mediators#main",bus:o})),k=(new(r(15718).ActorOptimizeQueryOperationRewriteCopy)({name:"urn:comunica:default:optimize-query-operation/actors#rewrite-copy",bus:s}),new(r(83910).ActorOptimizeQueryOperationRewriteMove)({name:"urn:comunica:default:optimize-query-operation/actors#rewrite-move",bus:s}),new(r(63514).ActorOptimizeQueryOperationRewriteAdd)({name:"urn:comunica:default:optimize-query-operation/actors#rewrite-add",bus:s}),new(r(78992).ActorOptimizeQueryOperationGroupSources)({name:"urn:comunica:default:optimize-query-operation/actors#group-sources",bus:s})),F=(new(r(78724).ActorOptimizeQueryOperationConstructDistinct)({name:"urn:comunica:default:optimize-query-operation/actors#construct-distinct",bus:s}),new(r(30827).MediatorCombinePipeline)({filterErrors:!0,name:"urn:comunica:default:optimize-query-operation/mediators#main",bus:s})),B=(new(r(4911).ActorQueryParseSparql)({prefixes:{dbpedia:"http://dbpedia.org/resource/","dbpedia-owl":"http://dbpedia.org/ontology/",dbpprop:"http://dbpedia.org/property/",dc:"http://purl.org/dc/terms/",dc11:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",foaf:"http://xmlns.com/foaf/0.1/",geo:"http://www.w3.org/2003/01/geo/wgs84_pos#",owl:"http://www.w3.org/2002/07/owl#",rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://www.w3.org/2000/01/rdf-schema#",schema:"http://schema.org/",skos:"http://www.w3.org/2008/05/skos#",xsd:"http://www.w3.org/2001/XMLSchema#"},name:"urn:comunica:default:query-parse/actors#sparql",bus:c}),new(r(37067).ActorQueryParseGraphql)({name:"urn:comunica:default:query-parse/actors#graphql",bus:c}),new(r(25896).MediatorRace)({name:"urn:comunica:default:query-parse/mediators#main",bus:c})),U=(new(r(91875).ActorQueryResultSerializeJson)({mediaTypePriorities:{"application/json":1},mediaTypeFormats:{"application/json":"https://comunica.linkeddatafragments.org/#results_JSON"},name:"urn:comunica:default:query-result-serialize/actors#json",bus:u}),new(r(96791).ActorQueryResultSerializeSimple)({mediaTypePriorities:{simple:.9},mediaTypeFormats:{simple:"https://comunica.linkeddatafragments.org/#results_simple"},name:"urn:comunica:default:query-result-serialize/actors#simple",bus:u}),new(r(34357).ActorQueryResultSerializeSparqlCsv)({mediaTypePriorities:{"text/csv":.75},mediaTypeFormats:{"text/csv":"http://www.w3.org/ns/formats/SPARQL_Results_CSV"},name:"urn:comunica:default:query-result-serialize/actors#csv",bus:u}),new(r(78432).ActorQueryResultSerializeSparqlTsv)({mediaTypePriorities:{"text/tab-separated-values":.75},mediaTypeFormats:{"text/tab-separated-values":"http://www.w3.org/ns/formats/SPARQL_Results_TSV"},name:"urn:comunica:default:query-result-serialize/actors#sparql-tsv",bus:u}),new(r(68596).ActorQueryResultSerializeSparqlXml)({mediaTypePriorities:{"application/sparql-results+xml":.8},mediaTypeFormats:{"application/sparql-results+xml":"http://www.w3.org/ns/formats/SPARQL_Results_XML"},name:"urn:comunica:default:query-result-serialize/actors#sparql-xml",bus:u}),new(r(59655).ActorQueryResultSerializeTable)({columnWidth:50,mediaTypePriorities:{table:.6},mediaTypeFormats:{table:"https://comunica.linkeddatafragments.org/#results_table"},name:"urn:comunica:default:query-result-serialize/actors#table",bus:u}),new(r(70017).ActorQueryResultSerializeTree)({mediaTypePriorities:{tree:.5},mediaTypeFormats:{tree:"https://comunica.linkeddatafragments.org/#results_tree"},name:"urn:comunica:default:query-result-serialize/actors#tree",bus:u}),new(r(25896).MediatorRace)({name:"urn:comunica:default:query-result-serialize/mediators#serialize",bus:u})),q=new(r(75884).MediatorCombineUnion)({field:"mediaTypes",name:"urn:comunica:default:query-result-serialize/mediators#mediaType",bus:u}),V=new(r(75884).MediatorCombineUnion)({field:"mediaTypeFormats",name:"urn:comunica:default:query-result-serialize/mediators#mediaTypeFormat",bus:u}),Q=new(r(99104).MediatorNumber)({field:"filterFactor",type:"max",ignoreErrors:!0,name:"urn:comunica:default:query-source-identify-hypermedia/mediators#main",bus:l}),$=new(r(35878).ActorDereferenceFallback)({name:"urn:comunica:default:dereference/actors#fallback",bus:d}),H=new(r(25896).MediatorRace)({name:"urn:comunica:default:dereference/mediators#main",bus:d}),G=new(r(25896).MediatorRace)({name:"urn:comunica:default:dereference-rdf/mediators#main",bus:p}),z=(new(r(36545).ActorRdfJoinEntriesSortCardinality)({name:"urn:comunica:default:rdf-join-entries-sort/actors#cardinality",bus:h}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-join-entries-sort/mediators#main",bus:h})),K=(new(r(16703).ActorRdfJoinSelectivityVariableCounting)({name:"urn:comunica:default:rdf-join-selectivity/actors#variable-counting",bus:f}),new(r(99104).MediatorNumber)({field:"accuracy",type:"max",ignoreErrors:!0,name:"urn:comunica:default:rdf-join-selectivity/mediators#main",bus:f})),X=(new(r(80848).ActorRdfMetadataPrimaryTopic)({metadataToData:!1,dataToMetadataOnInvalidMetadataGraph:!0,name:"urn:comunica:default:rdf-metadata/actors#primary-topic",bus:y}),new(r(64443).ActorRdfMetadataAll)({name:"urn:comunica:default:rdf-metadata/actors#all",bus:y}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-metadata/mediators#main",bus:y})),J=(new(r(27988).ActorRdfMetadataAccumulateCanContainUndefs)({name:"urn:comunica:default:rdf-metadata-accumulate/actors#cancontainundefs",bus:g}),new(r(67243).ActorRdfMetadataAccumulateCardinality)({name:"urn:comunica:default:rdf-metadata-accumulate/actors#cardinality",bus:g}),new(r(91475).ActorRdfMetadataAccumulatePageSize)({name:"urn:comunica:default:rdf-metadata-accumulate/actors#pagesize",bus:g}),new(r(26719).ActorRdfMetadataAccumulateRequestTime)({name:"urn:comunica:default:rdf-metadata-accumulate/actors#requesttime",bus:g}),new(r(75884).MediatorCombineUnion)({field:"metadata",name:"urn:comunica:default:rdf-metadata-accumulate/mediators#main",bus:g})),W=(new(r(85405).ActorRdfMetadataExtractHydraControls)({name:"urn:comunica:default:rdf-metadata-extract/actors#hydra-controls",bus:m}),new(r(57586).ActorRdfMetadataExtractHydraCount)({predicates:["http://www.w3.org/ns/hydra/core#totalItems","http://rdfs.org/ns/void#triples"],name:"urn:comunica:default:rdf-metadata-extract/actors#hydra-count",bus:m}),new(r(54777).ActorRdfMetadataExtractHydraPagesize)({predicates:["http://www.w3.org/ns/hydra/core#itemsPerPage"],name:"urn:comunica:default:rdf-metadata-extract/actors#hydra-pagesize",bus:m}),new(r(7445).ActorRdfMetadataExtractRequestTime)({name:"urn:comunica:default:rdf-metadata-extract/actors#request-time",bus:m}),new(r(40751).ActorRdfMetadataExtractAllowHttpMethods)({name:"urn:comunica:default:rdf-metadata-extract/actors#allow-http-methods",bus:m}),new(r(44549).ActorRdfMetadataExtractPutAccepted)({name:"urn:comunica:default:rdf-metadata-extract/actors#put-accepted",bus:m}),new(r(55282).ActorRdfMetadataExtractPatchSparqlUpdate)({name:"urn:comunica:default:rdf-metadata-extract/actors#patch-sparql-update",bus:m}),new(r(3187).ActorRdfMetadataExtractSparqlService)({inferHttpsEndpoint:!0,name:"urn:comunica:default:rdf-metadata-extract/actors#sparql-service",bus:m}),new(r(75884).MediatorCombineUnion)({filterErrors:!0,field:"metadata",name:"urn:comunica:default:rdf-metadata-extract/mediators#main",bus:m})),Y=(new(r(62917).ActorRdfParseN3)({mediaTypePriorities:{"application/n-quads":1,"application/n-triples":.8,"application/trig":.95,"text/n3":.35,"text/turtle":.6},mediaTypeFormats:{"application/n-quads":"http://www.w3.org/ns/formats/N-Quads","application/n-triples":"http://www.w3.org/ns/formats/N-Triples","application/trig":"http://www.w3.org/ns/formats/TriG","text/n3":"http://www.w3.org/ns/formats/N3","text/turtle":"http://www.w3.org/ns/formats/Turtle"},priorityScale:1,name:"urn:comunica:default:rdf-parse/actors#n3",bus:b}),new(r(21487).ActorRdfParseRdfXml)({mediaTypePriorities:{"application/rdf+xml":1},mediaTypeFormats:{"application/rdf+xml":"http://www.w3.org/ns/formats/RDF_XML"},priorityScale:.5,name:"urn:comunica:default:rdf-parse/actors#rdfxml",bus:b}),new(r(8137).ActorRdfParseXmlRdfa)({mediaTypePriorities:{"application/xml":1,"image/svg+xml":1,"text/xml":1},mediaTypeFormats:{"application/xml":"http://www.w3.org/ns/formats/RDFa","image/svg+xml":"http://www.w3.org/ns/formats/RDFa","text/xml":"http://www.w3.org/ns/formats/RDFa"},priorityScale:.3,name:"urn:comunica:default:rdf-parse/actors#xmlrdfa",bus:b}),new(r(43352).ActorRdfParseShaclc)({mediaTypePriorities:{"text/shaclc":1,"text/shaclc-ext":.5},mediaTypeFormats:{"text/shaclc":"http://www.w3.org/ns/formats/Shaclc","text/shaclc-ext":"http://www.w3.org/ns/formats/ShaclcExtended"},priorityScale:.1,name:"urn:comunica:default:rdf-parse/actors#shaclc",bus:b}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-parse/mediators#parse",bus:b})),Z=new(r(75884).MediatorCombineUnion)({field:"mediaTypes",name:"urn:comunica:default:rdf-parse/mediators#mediaType",bus:b}),ee=(new(r(28955).ActorRdfParseHtml)({busRdfParseHtml:v,mediaTypePriorities:{"application/xhtml+xml":.9,"text/html":1},mediaTypeFormats:{"application/xhtml+xml":"http://www.w3.org/ns/formats/HTML","text/html":"http://www.w3.org/ns/formats/HTML"},priorityScale:.2,name:"urn:comunica:default:rdf-parse/actors#html",bus:b}),new(r(42421).ActorRdfParseHtmlMicrodata)({name:"urn:comunica:default:rdf-parse-html/actors#microdata",bus:v}),new(r(26585).ActorRdfParseHtmlRdfa)({name:"urn:comunica:default:rdf-parse-html/actors#rdfa",bus:v}),new(r(34541).ActorRdfResolveHypermediaLinksNext)({name:"urn:comunica:default:rdf-resolve-hypermedia-links/actors#next",bus:_}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-resolve-hypermedia-links/mediators#main",bus:_})),te=(new(r(34120).ActorRdfResolveHypermediaLinksQueueFifo)({name:"urn:comunica:default:rdf-resolve-hypermedia-links-queue/actors#fifo",bus:w}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-resolve-hypermedia-links-queue/mediators#main",bus:w})),re=(new(r(28510).ActorRdfSerializeN3)({mediaTypePriorities:{"application/n-quads":1,"application/n-triples":.8,"application/trig":.95,"text/n3":.35,"text/turtle":.6},mediaTypeFormats:{"application/n-quads":"http://www.w3.org/ns/formats/N-Quads","application/n-triples":"http://www.w3.org/ns/formats/N-Triples","application/trig":"http://www.w3.org/ns/formats/TriG","text/n3":"http://www.w3.org/ns/formats/N3","text/turtle":"http://www.w3.org/ns/formats/Turtle"},name:"urn:comunica:default:rdf-serialize/actors#n3",bus:T}),new(r(21935).ActorRdfSerializeJsonLd)({jsonStringifyIndentSpaces:2,mediaTypePriorities:{"application/ld+json":1},mediaTypeFormats:{"application/ld+json":"http://www.w3.org/ns/formats/JSON-LD"},priorityScale:.9,name:"urn:comunica:default:rdf-serialize/actors#jsonld",bus:T}),new(r(49343).ActorRdfSerializeShaclc)({mediaTypePriorities:{"text/shaclc":1,"text/shaclc-ext":.5},mediaTypeFormats:{"text/shaclc":"http://www.w3.org/ns/formats/Shaclc","text/shaclc-ext":"http://www.w3.org/ns/formats/ShaclcExtended"},priorityScale:.1,name:"urn:comunica:default:rdf-serialize/actors#shaclc",bus:T}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-serialize/mediators#serialize",bus:T})),ne=new(r(75884).MediatorCombineUnion)({field:"mediaTypes",name:"urn:comunica:default:rdf-serialize/mediators#mediaType",bus:T}),ie=new(r(75884).MediatorCombineUnion)({field:"mediaTypeFormats",name:"urn:comunica:default:rdf-serialize/mediators#mediaTypeFormat",bus:T}),ae=new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-update-hypermedia/mediators#main",bus:S}),oe=(new(r(76722).ActorRdfUpdateQuadsRdfJsStore)({name:"urn:comunica:default:rdf-update-quads/actors#rdfjs-store",bus:O}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-update-quads/mediators#main",bus:O})),se=new(r(28590).ActorHttpFetch)({agentOptions:{keepAlive:!0,maxSockets:5},name:"urn:comunica:default:http/actors#fetch",bus:E}),ce=new(r(99104).MediatorNumber)({field:"time",type:"min",ignoreErrors:!0,name:"urn:comunica:default:http/mediators#no-fallback",bus:E}),ue=new(r(99104).MediatorNumber)({field:"time",type:"min",ignoreErrors:!0,name:"urn:comunica:default:http/mediators#main",bus:x}),le=(new(r(26933).ActorQueryOperationSource)({name:"urn:comunica:default:query-operation/actors#source",bus:A}),new(r(99104).MediatorNumber)({field:"httpRequests",type:"min",ignoreErrors:!0,name:"urn:comunica:default:query-operation/mediators#main",bus:A})),de=new(r(25896).MediatorRace)({name:"urn:comunica:default:query-process/mediators#main",bus:R}),pe=new(r(25896).MediatorRace)({name:"urn:comunica:default:query-source-identify/mediators#main",bus:I}),he=new(r(8309).MediatorJoinCoefficientsFixed)({cpuWeight:10,memoryWeight:1,timeWeight:2,ioWeight:10,name:"urn:comunica:default:rdf-join/mediators#main",bus:P}),fe=new(r(56320).ActorHttpInvalidateListenable)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-context-preprocess-query-source-identify/^3.0.0/components/ActorContextPreprocessQuerySourceIdentify.jsonld#IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator",bus:N}),ye=new(r(48284).MediatorAll)({name:"urn:comunica:default:http-invalidate/mediators#main",bus:N}),ge=new(r(56320).ActorHttpInvalidateListenable)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-update-quads-hypermedia/^3.0.0/components/ActorRdfUpdateQuadsHypermedia.jsonld#IActorRdfUpdateQuadsHypermediaArgs_default_invalidator",bus:N}),me=new(r(56320).ActorHttpInvalidateListenable)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-sparql-json/^3.0.0/components/ActionObserverHttp.jsonld#IActionObserverHttpArgs_default_invalidator",bus:N}),be=new(r(56320).ActorHttpInvalidateListenable)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^3.0.0/components/ActionObserverHttp.jsonld#IActionObserverHttpArgs_default_invalidator",bus:N}),ve=new(r(75884).MediatorCombineUnion)({field:"mergeHandlers",name:"urn:comunica:default:merge-bindings-context/mediators#main",bus:D}),_e=(new(r(35848).ActorRdfJoinSingle)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-single",bus:P}),new(r(85345).ActorRdfJoinMultiEmpty)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-multi-empty",bus:P}),new(r(38868).ActorRdfJoinHash)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-hash",bus:P})),we=new(r(77375).ActorRdfJoinSymmetricHash)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-symmetric-hash",bus:P}),Te=new(r(37081).ActorRdfJoinNestedLoop)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-nested-loop",bus:P}),Se=(new(r(11688).ActorRdfJoinMinusHash)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#minus-hash",bus:P}),new(r(98311).ActorRdfJoinMinusHashUndef)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#minus-hash-undef",bus:P}),new(r(19726).ActorRdfJoinOptionalHash)({canHandleUndefs:!1,blocking:!1,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-hash-def-nonblocking",bus:P}),new(r(19726).ActorRdfJoinOptionalHash)({canHandleUndefs:!1,blocking:!0,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-hash-def-blocking",bus:P}),new(r(19726).ActorRdfJoinOptionalHash)({canHandleUndefs:!0,blocking:!1,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-hash-undef-nonblocking",bus:P}),new(r(19726).ActorRdfJoinOptionalHash)({canHandleUndefs:!0,blocking:!0,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-hash-undef-blocking",bus:P}),new(r(9391).ActorRdfJoinOptionalNestedLoop)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-nested-loop",bus:P}),new(r(54341).ActorDereferenceRdfParse)({mediatorDereference:H,mediatorParse:Y,mediatorParseMediatypes:Z,mediaMappings:{htm:"text/html",html:"text/html",json:"application/json",jsonld:"application/ld+json",n3:"text/n3",nq:"application/n-quads",nquads:"application/n-quads",nt:"application/n-triples",ntriples:"application/n-triples",owl:"application/rdf+xml",rdf:"application/rdf+xml",rdfxml:"application/rdf+xml",shaclc:"text/shaclc",shaclce:"text/shaclc-ext",shc:"text/shaclc",shce:"text/shaclc-ext",svg:"image/svg+xml",svgz:"image/svg+xml",trig:"application/trig",ttl:"text/turtle",turtle:"text/turtle",xht:"application/xhtml+xml",xhtml:"application/xhtml+xml",xml:"application/xml"},name:"urn:comunica:default:dereference-rdf/actors#parse",bus:p}),new(r(3549).ActorRdfParseHtmlScript)({mediatorRdfParseMediatypes:Z,mediatorRdfParseHandle:Y,name:"urn:comunica:default:rdf-parse-html/actors#script",bus:v}),new(r(63543).ActorQueryResultSerializeRdf)({mediatorRdfSerialize:re,mediatorMediaTypeCombiner:ne,mediatorMediaTypeFormatCombiner:ie,name:"urn:comunica:default:query-result-serialize/actors#rdf",bus:u}),new(r(55390).ActorHttpWayback)({mediatorHttp:ce,name:"urn:comunica:default:http/actors#wayback",bus:x}),new(r(54168).ActorRdfParseJsonLd)({mediatorHttp:ue,mediaTypePriorities:{"application/json":.15,"application/ld+json":1},mediaTypeFormats:{"application/json":"http://www.w3.org/ns/formats/JSON-LD","application/ld+json":"http://www.w3.org/ns/formats/JSON-LD"},priorityScale:.9,name:"urn:comunica:default:rdf-parse/actors#jsonld",bus:b}),new(r(87057).ActorRdfUpdateHypermediaPatchSparqlUpdate)({mediatorHttp:ue,name:"urn:comunica:default:rdf-update-hypermedia/actors#patch-sparql-update",bus:S}),new(r(3047).ActorRdfUpdateHypermediaPutLdp)({mediatorHttp:ue,mediatorRdfSerializeMediatypes:ne,mediatorRdfSerialize:re,name:"urn:comunica:default:rdf-update-hypermedia/actors#put-ldp",bus:S}),new(r(58916).ActorRdfUpdateHypermediaSparql)({mediatorHttp:ue,checkUrlSuffixSparql:!0,checkUrlSuffixUpdate:!0,name:"urn:comunica:default:rdf-update-hypermedia/actors#sparql",bus:S}),new(r(57321).ActorQueryOperationAsk)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#ask",bus:A}),new(r(20888).ActorQueryOperationBgpJoin)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#bgp",bus:A}),new(r(88749).ActorQueryOperationConstruct)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#construct",bus:A}),new(r(13867).ActorQueryOperationDistinctHash)({mediatorHashBindings:M,mediatorHashQuads:L,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#distinct",bus:A}),new(r(37572).ActorQueryOperationFromQuad)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#from",bus:A}),new(r(98893).ActorQueryOperationProject)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#project",bus:A}),new(r(16909).ActorQueryOperationReducedHash)({mediatorHashBindings:M,cacheSize:100,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#reduced",bus:A}),new(r(14922).ActorQueryOperationSlice)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#slice",bus:A}),new(r(19779).ActorQueryOperationUnion)({mediatorRdfMetadataAccumulate:J,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#union",bus:A}),new(r(16733).ActorQueryOperationPathAlt)({mediatorRdfMetadataAccumulate:J,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-alt",bus:A}),new(r(88317).ActorQueryOperationPathInv)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-inv",bus:A}),new(r(91430).ActorQueryOperationPathLink)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-link",bus:A}),new(r(56993).ActorQueryOperationPathNps)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-nps",bus:A}),new(r(75233).ActorQueryOperationClear)({mediatorUpdateQuads:oe,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-clear",bus:A}),new(r(57886).ActorQueryOperationUpdateCompositeUpdate)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-composite",bus:A}),new(r(14876).ActorQueryOperationCreate)({mediatorUpdateQuads:oe,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-create",bus:A}),new(r(82465).ActorQueryOperationDrop)({mediatorUpdateQuads:oe,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-drop",bus:A}),new(r(29796).ActorQueryOperationLoad)({mediatorUpdateQuads:oe,mediatorQuerySourceIdentify:pe,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-load",bus:A}),new(r(40980).ActorQueryOperationJoin)({mediatorJoin:he,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#join",bus:A}),new(r(19948).ActorQueryOperationMinus)({mediatorJoin:he,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#minus",bus:A}),new(r(28261).ActorQueryOperationPathSeq)({mediatorJoin:he,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-seq",bus:A}),new(r(68841).ActorRdfJoinMultiSmallest)({mediatorJoinEntriesSort:z,mediatorJoin:he,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-multi-smallest",bus:P})),Oe=new(r(48989).ActorOptimizeQueryOperationFilterPushdown)({aggressivePushdown:!1,maxIterations:10,splitConjunctive:!0,mergeConjunctive:!0,pushIntoLeftJoins:!0,pushEqualityIntoPatterns:!0,name:"urn:comunica:default:optimize-query-operation/actors#filter-pushdown",bus:s,beforeActors:[k]}),Ee=(new(r(68132).ActorDereferenceHttp)({mediatorHttp:ue,maxAcceptHeaderLength:1024,maxAcceptHeaderLengthBrowser:128,name:"urn:comunica:default:dereference/actors#http",bus:d,beforeActors:[$]}),new(r(48230).ActorHttpProxy)({mediatorHttp:ue,name:"urn:comunica:default:http/actors#proxy",bus:E,beforeActors:[se]}),new(r(90807).ActorContextPreprocessQuerySourceIdentify)({cacheSize:100,httpInvalidator:fe,mediatorQuerySourceIdentify:pe,mediatorContextPreprocess:C,name:"urn:comunica:default:context-preprocess/actors#query-source-identify",bus:i,beforeActors:[j]}),new(r(15729).ActorInitQuery)({mediatorQueryProcess:de,mediatorQueryResultSerialize:U,mediatorQueryResultSerializeMediaTypeCombiner:q,mediatorQueryResultSerializeMediaTypeFormatCombiner:V,mediatorHttpInvalidate:ye,defaultQueryInputFormat:"sparql",allowNoSources:!1,name:"urn:comunica:default:init/actors#query",bus:n})),xe=(new(r(88297).ActorRdfUpdateQuadsHypermedia)({cacheSize:100,httpInvalidator:ge,mediatorDereferenceRdf:G,mediatorMetadata:X,mediatorMetadataExtract:W,mediatorRdfUpdateHypermedia:ae,name:"urn:comunica:default:rdf-update-quads/actors#hypermedia",bus:O}),new(r(34593).ActionObserverHttp)({httpInvalidator:me,name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-sparql-json/^3.0.0/components/ActorQueryResultSerializeSparqlJson.jsonld#ActorQueryResultSerializeSparqlJson_default_observer",bus:E})),Ae=new(r(13900).ActionObserverHttp)({httpInvalidator:be,name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^3.0.0/components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats_default_observer",bus:E}),Re=(new(r(52378).ActorQuerySourceIdentifyHypermediaQpf)({mediatorMetadata:X,mediatorMetadataExtract:W,mediatorDereferenceRdf:G,mediatorMergeBindingsContext:ve,subjectUri:"http://www.w3.org/1999/02/22-rdf-syntax-ns#subject",predicateUri:"http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate",objectUri:"http://www.w3.org/1999/02/22-rdf-syntax-ns#object",graphUri:"http://www.w3.org/ns/sparql-service-description#graph",name:"urn:comunica:default:query-source-identify-hypermedia/actors#qpf",bus:l}),new(r(16025).ActorQuerySourceIdentifyHypermediaSparql)({mediatorHttp:ue,mediatorMergeBindingsContext:ve,checkUrlSuffix:!0,forceHttpGet:!1,cacheSize:1024,bindMethod:"values",countTimeout:3e3,name:"urn:comunica:default:rdf-resolve-quad-pattern/actors#sparql",bus:l}),new(r(44538).ActorQuerySourceIdentifyHypermediaNone)({mediatorMergeBindingsContext:ve,name:"urn:comunica:default:query-source-identify-hypermedia/actors#none",bus:l}),new(r(19724).ActorQueryOperationExtend)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#extend",bus:A}),new(r(74578).ActorQueryOperationFilter)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#filter",bus:A}),new(r(47007).ActorQueryOperationGroup)({mediatorHashBindings:M,mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#group",bus:A}),new(r(33149).ActorQueryOperationLeftJoin)({mediatorJoin:he,mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#leftjoin",bus:A}),new(r(35021).ActorQueryOperationNop)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#nop",bus:A}),new(r(80797).ActorQueryOperationOrderBy)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#orderby",bus:A}),new(r(89375).ActorQueryOperationService)({forceSparqlEndpoint:!1,mediatorMergeBindingsContext:ve,mediatorQuerySourceIdentify:pe,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#service",bus:A}),new(r(14702).ActorQueryOperationValues)({mediatorMergeBindingsContext:ve,name:"urn:comunica:default:query-operation/actors#values",bus:A}),new(r(90658).ActorQueryOperationPathOneOrMore)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-one-or-more",bus:A}),new(r(60436).ActorQueryOperationPathZeroOrMore)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-zero-or-more",bus:A}),new(r(32091).ActorQueryOperationPathZeroOrOne)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-zero-or-one",bus:A}),new(r(21638).ActorQueryOperationUpdateDeleteInsert)({mediatorUpdateQuads:oe,mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-delete-insert",bus:A}),new(r(94739).ActorQueryProcessSequential)({mediatorContextPreprocess:C,mediatorQueryParse:B,mediatorOptimizeQueryOperation:F,mediatorQueryOperation:le,mediatorMergeBindingsContext:ve,name:"urn:comunica:default:query-process/actors#sequential",bus:R})),Ie=new(r(57789).ActorQuerySourceIdentifyHypermedia)({cacheSize:100,maxIterators:64,aggregateTraversalStore:!0,mediatorDereferenceRdf:G,mediatorMetadata:X,mediatorMetadataExtract:W,mediatorMetadataAccumulate:J,mediatorQuerySourceIdentifyHypermedia:Q,mediatorRdfResolveHypermediaLinks:ee,mediatorRdfResolveHypermediaLinksQueue:te,mediatorMergeBindingsContext:ve,name:"urn:comunica:default:query-source-identify/actors#hypermedia",bus:I}),Pe=(new(r(498).ActorRdfJoinNone)({mediatorMergeBindingsContext:ve,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-none",bus:P}),new(r(64305).ActorRdfJoinOptionalBind)({bindOrder:"depth-first",selectivityModifier:1e-6,mediatorQueryOperation:le,mediatorMergeBindingsContext:ve,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-bind",bus:P}),new(r(82331).ActorRdfJoinMultiBind)({bindOrder:"depth-first",selectivityModifier:1e-4,minMaxCardinalityRatio:60,mediatorJoinEntriesSort:z,mediatorQueryOperation:le,mediatorMergeBindingsContext:ve,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-multi-bind",bus:P,beforeActors:[Se,_e,we,Te]})),Ne=(new(r(92107).ActorRdfJoinMultiSmallestFilterBindings)({selectivityModifier:1e-4,blockSize:64,mediatorJoinEntriesSort:z,mediatorJoin:he,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-multi-smallest-filter-bindings",bus:P,beforeActors:[Se,_e,we,Te]}),new(r(34593).ActorQueryResultSerializeSparqlJson)({emitMetadata:!0,httpObserver:xe,mediaTypePriorities:{"application/sparql-results+json":.8},mediaTypeFormats:{"application/sparql-results+json":"http://www.w3.org/ns/formats/SPARQL_Results_JSON"},name:"urn:comunica:default:query-result-serialize/actors#sparql-json",bus:u}),new(r(13900).ActorQueryResultSerializeStats)({httpObserver:Ae,mediaTypePriorities:{stats:.5},mediaTypeFormats:{stats:"https://comunica.linkeddatafragments.org/#results_stats"},name:"urn:comunica:default:query-result-serialize/actors#stats",bus:u}),new(r(68383).ActorQueryProcessExplainParsed)({queryProcessor:Re,name:"urn:comunica:default:query-process/actors#explain-parsed",bus:R}),new(r(70605).ActorQueryProcessExplainLogical)({queryProcessor:Re,name:"urn:comunica:default:query-process/actors#explain-logical",bus:R}),new(r(54395).ActorQueryProcessExplainPhysical)({queryProcessor:Re,name:"urn:comunica:default:query-process/actors#explain-physical",bus:R}),new(r(94607).ActorOptimizeQueryOperationPruneEmptySourceOperations)({useAskIfSupported:!1,name:"urn:comunica:default:optimize-query-operation/actors#prune-empty-source-operations",bus:s,beforeActors:[Oe]})),De=(new(r(27474).ActorQuerySourceIdentifyRdfJs)({mediatorMergeBindingsContext:ve,name:"urn:comunica:default:query-source-identify/actors#rdfjs",bus:I,beforeActors:[Ie]}),new(r(84701).ActorQuerySourceIdentifySerialized)({mediatorRdfParse:Y,mediatorQuerySourceIdentify:pe,name:"urn:comunica:default:query-source-identify/actors#serialized",bus:I,beforeActors:[Ie]}),new(r(6551).ActorRdfJoinMultiBindSource)({selectivityModifier:1e-4,blockSize:16,mediatorJoinEntriesSort:z,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-multi-bind-source",bus:P,beforeActors:[Se,Pe,_e,we,Te]}),new(r(98498).ActorOptimizeQueryOperationJoinConnected)({name:"urn:comunica:default:optimize-query-operation/actors#join-connected",bus:s,beforeActors:[Ne]})),je=new(r(28084).ActorOptimizeQueryOperationBgpToJoin)({name:"urn:comunica:default:optimize-query-operation/actors#bgp-to-join",bus:s,beforeActors:[De]}),Ce=new(r(46980).ActorOptimizeQueryOperationJoinBgp)({name:"urn:comunica:default:optimize-query-operation/actors#join-bgp",bus:s,beforeActors:[je]}),Me=new(r(94741).ActorOptimizeQueryOperationAssignSourcesExhaustive)({name:"urn:comunica:default:optimize-query-operation/actors#assign-sources-exhaustive",bus:s,beforeActors:[Ce]});return new(r(78571).ActorOptimizeQueryOperationDescribeToConstructsSubject)({name:"urn:comunica:default:optimize-query-operation/actors#describe-to-constructs-subject",bus:s,beforeActors:[Me]}),Ee}},45747:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QueryEngine=void 0;const n=r(15729),i=r(28975);class a extends n.QueryEngineBase{constructor(e=i()){super(e)}}t.QueryEngine=a},90128:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(45747),t)},18423:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorAbstractMediaTyped=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}async run(e){if("handle"in e){const t=e;return{handle:await this.runHandle(t.handle,t.handleMediaType,e.context)}}if("mediaTypes"in e)return{mediaTypes:await this.getMediaTypes(e.context)};if("mediaTypeFormats"in e)return{mediaTypeFormats:await this.getMediaTypeFormats(e.context)};throw new Error("Either a handle, mediaTypes or mediaTypeFormats action needs to be provided")}async test(e){if("handle"in e){const t=e;return{handle:await this.testHandle(t.handle,t.handleMediaType,e.context)}}if("mediaTypes"in e)return{mediaTypes:await this.testMediaType(e.context)};if("mediaTypeFormats"in e)return{mediaTypeFormats:await this.testMediaTypeFormats(e.context)};throw new Error("Either a handle, mediaTypes or mediaTypeFormats action needs to be provided")}}t.ActorAbstractMediaTyped=i},44405:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorAbstractMediaTypedFixed=void 0;const n=r(18423);class i extends n.ActorAbstractMediaTyped{constructor(e){super(e);const t=this.priorityScale||0===this.priorityScale?this.priorityScale:1;if(this.mediaTypePriorities)for(const[e,[r,n]]of Object.entries(this.mediaTypePriorities).entries())this.mediaTypePriorities[r]=t*n;this.mediaTypePriorities=Object.freeze(this.mediaTypePriorities),this.mediaTypeFormats=Object.freeze(this.mediaTypeFormats)}async testHandle(e,t,r){if(!t||!(t in this.mediaTypePriorities))throw new Error(`Unrecognized media type: ${t}`);return await this.testHandleChecked(e,r)}async testMediaType(e){return!0}async getMediaTypes(e){return this.mediaTypePriorities}async testMediaTypeFormats(e){return!0}async getMediaTypeFormats(e){return this.mediaTypeFormats}}t.ActorAbstractMediaTypedFixed=i},75560:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18423),t),i(r(44405),t)},96331:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorAbstractPath=void 0;const n=r(59510),i=r(32227),a=r(76664),o=r(18050),s=r(22112),c=r(31578),u=r(29345),l=new o.DataFactory;class d extends n.ActorQueryOperationTypedMediated{constructor(e,t){super(e,"path"),this.predicateType=t}async testOperation(e,t){if(e.predicate.type!==this.predicateType)throw new Error(`This Actor only supports ${this.predicateType} Path operations.`);return!0}generateVariable(e,t){return t?!e||e.subject.value!==t&&e.object.value!==t?l.variable(t):this.generateVariable(e,`${t}b`):this.generateVariable(e,"b")}async isPathArbitraryLengthDistinct(e,t){return e.get(i.KeysQueryOperation.isPathArbitraryLengthDistinctKey)?{context:e=e.set(i.KeysQueryOperation.isPathArbitraryLengthDistinctKey,!1),operation:void 0}:{context:e=e.set(i.KeysQueryOperation.isPathArbitraryLengthDistinctKey,!0),operation:n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:d.FACTORY.createDistinct(t),context:e}))}}async predicateStarGraphVariable(e,t,r,i,o,s){const c=this.getPathSources(r),u=this.generateVariable(d.FACTORY.createPath(e,r,t,i)),l=d.FACTORY.createUnion([this.assignPatternSources(d.FACTORY.createPattern(e,u,t,i),c),this.assignPatternSources(d.FACTORY.createPattern(t,u,e,i),c)]),p=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:o,operation:l})),h=new Set;return{bindingsStream:new a.MultiTransformIterator(p.bindingsStream,{multiTransform:n=>{const c=n.get(i);return h.has(c.value)?new a.EmptyIterator:(h.add(c.value),new a.TransformIterator((async()=>{const n=new a.BufferedIterator;return await this.getObjectsPredicateStar(e,r,c,o,{},n,{count:0}),n.transform({transform(e,r,n){n(s.bindings([[t,e],[i,c]])),r()}})}),{maxBufferSize:128}))},autoStart:!1}),metadata:p.metadata}}async getObjectsPredicateStarEval(e,t,r,n,i,a,o){if("Variable"===n.termType)return this.predicateStarGraphVariable(e,r,t,n,i,o);const s=new u.PathVariableObjectIterator(e,t,n,i,this.mediatorQueryOperation,a);return{bindingsStream:s.transform({autoStart:!1,transform(e,t,n){n(o.bindings([[r,e]])),t()}}),async metadata(){const e=await new Promise((e=>{s.getProperty("metadata",(t=>e(t())))}));return e.cardinality.value++,e}}}async getObjectsPredicateStar(e,t,r,i,a,o,c){const u=(0,s.termToString)(e);if(a[u])return;o._push(e),a[u]=e,c.count++;const l=this.generateVariable(),p=d.FACTORY.createPath(e,t,l,r),h=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:p,context:i}));return h.bindingsStream.on("data",(async e=>{const n=e.get(l);await this.getObjectsPredicateStar(n,t,r,i,a,o,c)})),h.bindingsStream.on("end",(()=>{0==--c.count&&o.close()})),h.metadata}async getSubjectAndObjectBindingsPredicateStar(e,t,r,i,a,o,c,u,l,p,h,f){const y=(0,s.termToString)(i)+(0,s.termToString)(o);if(l[y])return;if(h.count++,l[y]=!0,p._push(f.bindings([[e,r],[t,i]])),y in u){const n=await u[y];for(const i of n)await this.getSubjectAndObjectBindingsPredicateStar(e,t,r,i,a,o,c,u,l,p,h,f);return void(0==--h.count&&p.close())}const g=new Promise((async(s,y)=>{const g=[],m=this.generateVariable(),b=d.FACTORY.createPath(i,a,m,o),v=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:b,context:c}));v.bindingsStream.on("data",(async n=>{const i=n.get(m);g.push(i),await this.getSubjectAndObjectBindingsPredicateStar(e,t,r,i,a,o,c,u,l,p,h,f)})),v.bindingsStream.on("error",y),v.bindingsStream.on("end",(()=>{0==--h.count&&p.close(),s(g)}))}));u[y]=g}getPathSources(e){switch(e.type){case c.Algebra.types.ALT:case c.Algebra.types.SEQ:return e.input.flatMap((e=>this.getPathSources(e)));case c.Algebra.types.INV:case c.Algebra.types.ONE_OR_MORE_PATH:case c.Algebra.types.ZERO_OR_MORE_PATH:case c.Algebra.types.ZERO_OR_ONE_PATH:return this.getPathSources(e.path);case c.Algebra.types.LINK:case c.Algebra.types.NPS:{const t=n.ActorQueryOperation.getOperationSource(e);if(!t)throw new Error("Could not find a required source on a link path operation");return[t]}}}assignPatternSources(e,t){if(0===t.length)throw new Error("Attempted to assign zero sources to a pattern during property path handling");return 1===t.length?n.ActorQueryOperation.assignOperationSource(e,t[0]):d.FACTORY.createUnion(t.map((t=>n.ActorQueryOperation.assignOperationSource(e,t))),!0)}}t.ActorAbstractPath=d,d.FACTORY=new c.Factory},29345:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathVariableObjectIterator=void 0;const n=r(59510),i=r(76664),a=r(18050),o=r(22112),s=r(31578),c=new a.DataFactory,u=new s.Factory;class l extends i.BufferedIterator{constructor(e,t,r,n,i,a,o=16){super({autoStart:!0}),this.subject=e,this.predicate=t,this.graph=r,this.context=n,this.mediatorQueryOperation=i,this.maxRunningOperations=o,this.termHashes=new Map,this.runningOperations=[],this.pendingOperations=[],this._push(this.subject,a)}_end(e){for(const e of this.runningOperations)e.destroy();super._end(e)}_push(e,t=!0){let r;if(t&&(r=(0,o.termToString)(e),this.termHashes.has(r)))return;const n=c.variable("b");this.pendingOperations.push({variable:n,operation:u.createPath(e,this.predicate,n,this.graph)}),r&&(this.termHashes.set(r,e),super._push(e))}_read(e,t){const r=this;(async function(){for(;r.runningOperations.lengthr.destroy(e))),i.on("readable",(()=>{r.readable=!0,r._fillBufferAsync()})),i.on("end",(()=>{r.runningOperations.splice(r.runningOperations.indexOf(i),1),r.readable=!0,r._fillBufferAsync()}))),r.setProperty("metadata",t.metadata)}let t,i=0;for(;i!==(i=e);)for(let n=0;n0;n++)null!==(t=r.runningOperations[n].read())&&(e--,r._push(t));0===r.runningOperations.length&&0===r.pendingOperations.length&&r.close()})().then((()=>{t()}),(e=>this.destroy(e)))}}t.PathVariableObjectIterator=l},43543:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(96331),t),i(r(29345),t)},53927:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocessConvertShortcuts=void 0;const n=r(32362),i=r(34368);class a extends n.ActorContextPreprocess{constructor(e){super(e)}async test(e){return!0}async run(e){return{context:a.expandShortcuts(e.context,this.contextKeyShortcuts)}}static expandShortcuts(e,t){for(const r of e.keys())t[r.name]&&(e=e.set(new i.ActionContextKey(t[r.name]),e.get(r)).delete(r));return e}}t.ActorContextPreprocessConvertShortcuts=a},36251:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(53927),t)},80352:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocessQuerySourceIdentify=void 0;const n=r(32362),i=r(32227),a=r(34368),o=r(35069);class s extends n.ActorContextPreprocess{constructor(e){super(e),this.cache=this.cacheSize?new o.LRUCache({max:this.cacheSize}):void 0;const t=this.cache;t&&this.httpInvalidator.addInvalidateListener((({url:e})=>e?t.delete(e):t.clear()))}async test(e){return!0}async run(e){let t=e.context;if(t.has(i.KeysInitQuery.querySourcesUnidentified)){const r=e.context.get(i.KeysInitQuery.querySourcesUnidentified),n=await Promise.all(r.map((e=>this.expandSource(e)))),a=await Promise.all(n.map((async t=>this.identifySource(t,e.context)))),o=e.context.get(i.KeysStatistics.dereferencedLinks);if(o)for(const e of a)o.updateStatistic({url:e.source.referenceValue,metadata:{seed:!0}},e.source);t=e.context.delete(i.KeysInitQuery.querySourcesUnidentified).set(i.KeysQueryOperation.querySources,a)}return{context:t}}async expandSource(e){return"string"==typeof e||"match"in e?{value:e}:{...e,context:(await this.mediatorContextPreprocess.mediate({context:a.ActionContext.ensureActionContext(e.context??{})})).context}}identifySource(e,t){let r;return"string"==typeof e.value&&this.cache&&(r=this.cache.get(e.value)),r||(r=this.mediatorQuerySourceIdentify.mediate({querySourceUnidentified:e,context:t}).then((({querySource:e})=>e)),"string"==typeof e.value&&this.cache&&this.cache.set(e.value,r)),r}}t.ActorContextPreprocessQuerySourceIdentify=s},90807:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(80352),t)},16646:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocessQuerySourceSkolemize=void 0;const n=r(32362),i=r(32227),a=r(84078),o=r(50339);class s extends n.ActorContextPreprocess{constructor(e){super(e)}async test(e){return!0}async run(e){let t=e.context;if(t.has(i.KeysQueryOperation.querySources)){t.has(i.KeysQuerySourceIdentify.sourceIds)||(t=t.set(i.KeysQuerySourceIdentify.sourceIds,new Map));const e=t.getSafe(i.KeysQuerySourceIdentify.sourceIds);let r=t.getSafe(i.KeysQueryOperation.querySources);r=r.map((t=>({source:new a.QuerySourceSkolemized(t.source,(0,o.getSourceId)(e,t.source)),context:t.context}))),t=t.set(i.KeysQueryOperation.querySources,r)}return{context:t}}}t.ActorContextPreprocessQuerySourceSkolemize=s},84078:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySourceSkolemized=void 0;const n=r(72394),i=r(76664),a=r(50339);t.QuerySourceSkolemized=class{constructor(e,t){this.innerSource=e,this.sourceId=t}async getSelectorShape(e){return this.innerSource.getSelectorShape(e)}queryBindings(e,t,r){const o=(0,a.deskolemizeOperation)(e,this.sourceId);if(!o){const e=new i.ArrayIterator([],{autoStart:!1});return e.setProperty("metadata",{state:new n.MetadataValidationState,cardinality:{type:"exact",value:0},canContainUndefs:!1,variables:[]}),e}return(0,a.skolemizeBindingsStream)(this.innerSource.queryBindings(o,t,r),this.sourceId)}queryBoolean(e,t){return this.innerSource.queryBoolean(e,t)}queryQuads(e,t){const r=(0,a.deskolemizeOperation)(e,this.sourceId);if(!r){const e=new i.ArrayIterator([],{autoStart:!1});return e.setProperty("metadata",{state:new n.MetadataValidationState,cardinality:{type:"exact",value:0}}),e}return(0,a.skolemizeQuadStream)(this.innerSource.queryQuads(r,t),this.sourceId)}queryVoid(e,t){return this.innerSource.queryVoid(e,t)}get referenceValue(){return this.innerSource.referenceValue}toString(){return`${this.innerSource.toString()}(SkolemID:${this.sourceId})`}}},35106:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(16646),t),i(r(84078),t),i(r(50339),t)},50339:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.deskolemizeOperation=t.deskolemizeQuad=t.deskolemizeTermNestedThrowing=t.deskolemizeTerm=t.skolemizeBindingsStream=t.skolemizeQuadStream=t.skolemizeBindings=t.skolemizeQuad=t.skolemizeTerm=t.getSourceId=t.SKOLEM_PREFIX=void 0;const n=r(85156),i=r(18050),a=r(13252),o=r(31578),s=new i.DataFactory;function c(e,r){return"BlankNode"===e.termType?new n.BlankNodeScoped(`bc_${r}_${e.value}`,s.namedNode(`${t.SKOLEM_PREFIX}${r}:${e.value}`)):e}function u(e,t){return(0,a.mapTermsNested)(e,(e=>c(e,t)))}function l(e,t){return e.map((e=>"Quad"===e.termType?u(e,t):c(e,t)))}function d(e,r){if("BlankNode"===e.termType&&"skolemized"in e&&(e=e.skolemized),"NamedNode"===e.termType&&e.value.startsWith(t.SKOLEM_PREFIX)){const n=e.value.indexOf(":",t.SKOLEM_PREFIX.length);if(e.value.slice(t.SKOLEM_PREFIX.length,n)===r){const t=e.value.slice(n+1,e.value.length);return s.blankNode(t)}return null}return e}function p(e,t){if("Quad"===e.termType)return(0,a.mapTermsNested)(e,(e=>{const r=d(e,t);if(!r)throw new Error("Skolemized term is not in scope for this source");return r}));const r=d(e,t);if(null===r)throw new Error("Skolemized term is not in scope for this source");return r}t.SKOLEM_PREFIX="urn:comunica_skolem:source_",t.getSourceId=function(e,t){let r=e.get(t.referenceValue);return void 0===r&&(r=`${e.size}`,e.set(t.referenceValue,r)),r},t.skolemizeTerm=c,t.skolemizeQuad=u,t.skolemizeBindings=l,t.skolemizeQuadStream=function(e,t){const r=e.map((e=>u(e,t)));return function t(){e.getProperty("metadata",(e=>{r.setProperty("metadata",e),e.state.addInvalidateListener(t)}))}(),r},t.skolemizeBindingsStream=function(e,t){const r=e.map((e=>l(e,t)));return function t(){e.getProperty("metadata",(e=>{r.setProperty("metadata",e),e.state.addInvalidateListener(t)}))}(),r},t.deskolemizeTerm=d,t.deskolemizeTermNestedThrowing=p,t.deskolemizeQuad=function(e,t){return(0,a.mapTermsNested)(e,(e=>d(e,t)??e))},t.deskolemizeOperation=function(e,t){try{return o.Util.mapOperation(e,{[o.Algebra.types.PATTERN]:(e,r)=>({result:Object.assign(r.createPattern(p(e.subject,t),p(e.predicate,t),p(e.object,t),p(e.graph,t)),{metadata:e.metadata}),recurse:!1}),[o.Algebra.types.PATH]:(e,r)=>({result:Object.assign(r.createPath(p(e.subject,t),e.predicate,p(e.object,t),p(e.graph,t)),{metadata:e.metadata}),recurse:!1})})}catch{}}},65239:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocessSetDefaults=void 0;const n=r(32362),i=r(32227);class a extends n.ActorContextPreprocess{constructor(e){super(e),this.defaultFunctionArgumentsCache={}}async test(e){return!0}async run(e){let t=e.context;if(e.initialize){t=t.setDefault(i.KeysInitQuery.queryTimestamp,new Date).setDefault(i.KeysQuerySourceIdentify.sourceIds,new Map).setDefault(i.KeysCore.log,this.logger).setDefault(i.KeysInitQuery.functionArgumentsCache,this.defaultFunctionArgumentsCache).setDefault(i.KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores,new Map);let e={language:"sparql",version:"1.1"};t.has(i.KeysInitQuery.queryFormat)?(e=t.get(i.KeysInitQuery.queryFormat),"graphql"===e.language&&(t=t.setDefault(i.KeysInitQuery.graphqlSingularizeVariables,{}))):t=t.set(i.KeysInitQuery.queryFormat,e)}return{context:t}}}t.ActorContextPreprocessSetDefaults=a},35451:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(65239),t)},58952:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocessSourceToDestination=void 0;const n=r(32362),i=r(32227);class a extends n.ActorContextPreprocess{constructor(e){super(e)}async test(e){return!0}async run(e){if(e.context.get(i.KeysInitQuery.querySourcesUnidentified)&&!e.context.get(i.KeysRdfUpdateQuads.destination)){const t=e.context.get(i.KeysInitQuery.querySourcesUnidentified);if(1===t.length)return{context:e.context.set(i.KeysRdfUpdateQuads.destination,t[0])}}return e}}t.ActorContextPreprocessSourceToDestination=a},41670:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(58952),t)},1741:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceFallback=void 0;const n=r(47702);class i extends n.ActorDereference{constructor(e){super(e)}async test(e){return!0}async run(e){return this.handleDereferenceErrors(e,new Error(`Could not dereference '${e.url}'`))}}t.ActorDereferenceFallback=i},35878:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(1741),t)},3968:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceHttp=void 0;const n=r(60376);class i extends n.ActorDereferenceHttpBase{getMaxAcceptHeaderLength(){return this.maxAcceptHeaderLengthBrowser}}t.ActorDereferenceHttp=i},60376:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceHttpBase=t.mediaTypesToAcceptString=void 0;const n=r(47702),i=r(74870),a=r(31759),o=r(10288),s=r(9929),c=/^[^ ;]*/u;function u(e,t){const r=[],n=Object.entries(e).map((([e,t])=>({mediaType:e,priority:t}))).sort(((e,t)=>t.priority===e.priority?e.mediaType.localeCompare(t.mediaType):t.priority-e.priority));let i=n.length-1;for(const{mediaType:e,priority:a}of n){const n=e+(1===a?"":`;q=${a.toFixed(3).replace(/0*$/u,"")}`);if(i+n.length>t){for(;i+9>t;)i-=(r.pop()??"").length+1;r.push("*/*;q=0.1");break}r.push(n),i+=n.length}return 0===r.length?"*/*":r.join(",")}t.mediaTypesToAcceptString=u;class l extends n.ActorDereference{constructor(e){super(e)}async test({url:e}){if(!/^https?:/u.test(e))throw new Error(`Cannot retrieve ${e} because it is not an HTTP(S) URL.`);return!0}async run(e){let t=!0;const r=new o.Headers(e.headers);let l;r.append("Accept",u(await(e.mediaTypes?.())??{},this.getMaxAcceptHeaderLength()));const d=Date.now();try{l=await this.mediatorHttp.mediate({context:e.context,init:{headers:r,method:e.method},input:e.url})}catch(t){return this.handleDereferenceErrors(e,t)}const p=(0,s.resolve)(l.url,e.url),h=Date.now()-d;if(200!==l.status){t=!1;const r=l.body?await(0,a.stringify)(i.ActorHttp.toNodeReadable(l.body)):"empty response";if(!e.acceptErrors){const t=new Error(`Could not retrieve ${e.url} (HTTP status ${l.status}):\n${r}`);return this.handleDereferenceErrors(e,t,l.headers,h)}}const f=c.exec(l.headers.get("content-type")??"")?.[0];return{url:p,data:t?i.ActorHttp.toNodeReadable(l.body):(0,n.emptyReadable)(),exists:t,requestTime:h,headers:l.headers,mediaType:"text/plain"===f?void 0:f}}}t.ActorDereferenceHttpBase=l},68132:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(3968),t),i(r(60376),t)},96636:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceRdfParse=void 0;const n=r(53583);class i extends n.ActorDereferenceRdf{constructor(e){super(e)}async getMetadata(e){return{baseIRI:e.url}}}t.ActorDereferenceRdfParse=i},54341:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(96636),t)},48040:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHashBindingsSha1=void 0;const n=r(38431),i=r(99499),a=r(22112),o=r(62168);class s extends n.ActorHashBindings{async test(e){if(!e.allowHashCollisions)throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);return!0}async run(e){return{hashFunction:e=>(0,i.sha1)().update(o(Object.fromEntries([...e].map((([e,t])=>[(0,a.termToString)(e),(0,a.termToString)(t)]))))).digest("hex"),hashCollisions:!0}}}t.ActorHashBindingsSha1=s},11150:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(48040),t)},66748:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHashQuadsSha1=void 0;const n=r(16179),i=r(99499),a=r(22112);class o extends n.ActorHashQuads{async test(e){if(!e.allowHashCollisions)throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);return!0}async run(e){return{hashFunction:e=>(0,i.sha1)().update(JSON.stringify((0,a.quadToStringQuad)(e))).digest("hex"),hashCollisions:!0}}}t.ActorHashQuadsSha1=o},64188:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(66748),t)},51803:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttpFetch=void 0;const n=r(74870),i=r(32227);r(90482);const a=r(63562);class o extends n.ActorHttp{constructor(e){super(e),this.userAgent=o.createUserAgent(),this.fetchInitPreprocessor=new a.FetchInitPreprocessor(e.agentOptions)}static createUserAgent(){return`Comunica/actor-http-fetch (${void 0===globalThis.navigator?`Node.js ${process.version}; ${process.platform}`:`Browser-${globalThis.navigator.userAgent}`})`}async test(e){return{time:Number.POSITIVE_INFINITY}}static async getResponse(e,t,r,n,i,a){let o,s=n+1;for(;s-- >0;)try{const n=await e(t,r);if(a&&n.status>=500&&n.status<600)throw new Error(`Server replied with response code ${n.status}: ${n.statusText}`);return n}catch(e){if(o=e,r.signal?.aborted)throw e;s>0&&await new Promise(((e,t)=>{setTimeout(e,i),r.signal?.addEventListener("abort",(()=>{t(new Error("Fetch aborted by timeout."))}))}))}throw n>0?new Error(`Number of fetch retries (${n}) exceeded. Last error: ${String(o)}`):o}async run(e){const t=e.init?.headers??{};e.init=e.init??{},e.init.headers=new Headers(t),e.init.headers.has("user-agent")||e.init.headers.append("user-agent",this.userAgent);const r=e.context.get(i.KeysHttp.auth);r&&e.init.headers.append("Authorization",`Basic ${Buffer.from(r).toString("base64")}`),this.logInfo(e.context,`Requesting ${"string"==typeof e.input?e.input:e.input.url}`,(()=>({headers:n.ActorHttp.headersToHash(new Headers(e.init.headers)),method:e.init.method??"GET"}))),e.init?.headers&&"append"in e.init.headers&&e.context.has(i.KeysHttp.fetch)&&(e.init.headers=n.ActorHttp.headersToHash(e.init.headers));let a={...e.init};e.context.get(i.KeysHttp.includeCredentials)&&(a.credentials="include");const s=e.context?.get(i.KeysHttp.httpTimeout);let c,u;if(void 0!==s){const e=await this.fetchInitPreprocessor.createAbortController();a.signal=e.signal,u=()=>e.abort(),c=setTimeout((()=>u()),s)}try{a=await this.fetchInitPreprocessor.handle(a);const t=e.context?.get(i.KeysHttp.httpRetryCount)??0,r=e.context?.get(i.KeysHttp.httpRetryDelay)??0,n=e.context?.get(i.KeysHttp.httpRetryOnServerError)??!1,s=e.context?.get(i.KeysHttp.fetch),l=await o.getResponse(s??fetch,e.input,a,t,r,n);return void 0!==c&&(e.context?.get(i.KeysHttp.httpBodyTimeout)&&l.body?(u=()=>l.body?.cancel(new Error(`HTTP timeout when reading the body of ${l.url}.\nThis error can be disabled by modifying the 'httpBodyTimeout' and/or 'httpTimeout' options.`)),l.body.on("close",(()=>{clearTimeout(c)}))):clearTimeout(c)),l.body&&!l.body.cancel&&(l.body.cancel=async e=>{l.body.destroy(e),void 0!==c&&clearTimeout(c)}),l}catch(e){throw void 0!==c&&clearTimeout(c),e}}}t.ActorHttpFetch=o},63562:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FetchInitPreprocessor=void 0;const n=r(74870);t.FetchInitPreprocessor=class{async handle(e){if(e.headers){const t=new Headers(e.headers);t.has("user-agent")&&t.delete("user-agent"),e.headers=t}if(e?.headers&&"append"in e.headers&&(e.headers=n.ActorHttp.headersToHash(e.headers)),e.body&&"string"!=typeof e.body&&"getReader"in e.body){const t=e.body.getReader(),r=[];for(;;){const{done:e,value:n}=await t.read();if(e)break;r.push(n)}e.body=r.join("")}return{keepalive:!e.body,...e}}async createAbortController(){return new AbortController}}},28590:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(51803),t)},57643:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttpProxy=void 0;const n=r(74870),i=r(32227);class a extends n.ActorHttp{constructor(e){super(e)}async test(e){const t=e.context.get(i.KeysHttpProxy.httpProxyHandler);if(!t)throw new Error(`Actor ${this.name} could not find a proxy handler in the context.`);if(!await t.getProxy(e))throw new Error(`Actor ${this.name} could not determine a proxy for the given request.`);return{time:Number.POSITIVE_INFINITY}}async run(e){const t="string"==typeof e.input?e.input:e.input.url,r=e.context.get(i.KeysHttpProxy.httpProxyHandler),n=await this.mediatorHttp.mediate({...await r.getProxy(e),context:e.context.delete(i.KeysHttpProxy.httpProxyHandler)});return Object.defineProperty(n,"url",{configurable:!0,enumerable:!0,get:()=>n.headers.get("x-final-url")??t}),n}}t.ActorHttpProxy=a},76862:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyHandlerStatic=void 0,t.ProxyHandlerStatic=class{constructor(e){this.prefixUrl=e}async getProxy(e){return{init:e.init,input:this.modifyInput(e.input)}}modifyInput(e){return"string"==typeof e?this.prefixUrl+e:new Request(this.prefixUrl+e.url,e)}}},48230:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(57643),t),i(r(76862),t)},363:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttpWayback=void 0;const n=r(74870),i=r(32227),a=r(31759);r(90482);const o="http://wayback.archive-it.org/";function s(e){const t=new Request(e.input,e.init);return{input:new Request(new URL(`/${t.url}`,o),t)}}function c(e){const t=e.get(i.KeysHttpProxy.httpProxyHandler);return t?e=>t.getProxy(s(e)):e=>Promise.resolve(s(e))}class u extends n.ActorHttp{constructor(e){super(e)}async test(e){return!0}async run(e){let t=await this.mediatorHttp.mediate(e);if(404===t.status&&e.context.get(i.KeysHttpWayback.recoverBrokenLinks)){let r=await this.mediatorHttp.mediate({...e,context:e.context.set(i.KeysHttpWayback.recoverBrokenLinks,!1).set(i.KeysHttpProxy.httpProxyHandler,{getProxy:c(e.context)})});200===r.status&&([t,r]=[r,t]);const{body:o}=r;o&&("cancel"in o&&"function"==typeof o.cancel?await o.cancel():"destroy"in o&&"function"==typeof o.destroy?o.destroy():await(0,a.stringify)(n.ActorHttp.toNodeReadable(o)))}return t}}t.ActorHttpWayback=u},55390:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(363),t)},94394:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorInitQuery=void 0;const n=r(59266);"undefined"==typeof process&&(globalThis.process=r(39907));class i extends n.ActorInitQueryBase{}t.ActorInitQuery=i},59266:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorInitQueryBase=void 0;const n=r(99784);class i extends n.ActorInit{async test(e){return!0}async run(e){throw new Error("ActorInitSparql#run is not supported in the browser.")}}t.ActorInitQueryBase=i},52295:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QueryEngineBase=void 0;const n=r(32227),i=r(34368);class a{constructor(e){this.actorInitQuery=e}async queryBindings(e,t){return this.queryOfType(e,t,"bindings")}async queryQuads(e,t){return this.queryOfType(e,t,"quads")}async queryBoolean(e,t){return this.queryOfType(e,t,"boolean")}async queryVoid(e,t){return this.queryOfType(e,t,"void")}async queryOfType(e,t,r){const n=await this.query(e,t);if(n.resultType===r)return await n.execute();throw new Error(`Query result type '${r}' was expected, while '${n.resultType}' was found.`)}async query(e,t){const r=await this.queryOrExplain(e,t);if("explain"in r)throw new Error("Tried to explain a query when in query-only mode");return r}async explain(e,t,r){return t.explain=r,await this.queryOrExplain(e,t)}async queryOrExplain(e,t){const r=i.ActionContext.ensureActionContext(t);r.get(n.KeysInitQuery.noCache)&&await this.invalidateHttpCache();const{result:o}=await this.actorInitQuery.mediatorQueryProcess.mediate({query:e,context:r});return"explain"in o?o:a.internalToFinalResult(o)}async getResultMediaTypes(e){return e=i.ActionContext.ensureActionContext(e),(await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeCombiner.mediate({context:e,mediaTypes:!0})).mediaTypes}async getResultMediaTypeFormats(e){return e=i.ActionContext.ensureActionContext(e),(await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeFormatCombiner.mediate({context:e,mediaTypeFormats:!0})).mediaTypeFormats}async resultToString(e,t,r){if(r=i.ActionContext.ensureActionContext(r),!t)switch(e.resultType){case"bindings":t="application/json";break;case"quads":t="application/trig";break;default:t="simple"}const n={...await a.finalToInternalResult(e),context:r};return(await this.actorInitQuery.mediatorQueryResultSerialize.mediate({context:r,handle:n,handleMediaType:t})).handle}invalidateHttpCache(e,t){return t=i.ActionContext.ensureActionContext(t),this.actorInitQuery.mediatorHttpInvalidate.mediate({url:e,context:t})}static internalToFinalResult(e){switch(e.type){case"bindings":return{resultType:"bindings",execute:async()=>e.bindingsStream,metadata:async()=>await e.metadata(),context:e.context};case"quads":return{resultType:"quads",execute:async()=>e.quadStream,metadata:async()=>await e.metadata(),context:e.context};case"boolean":return{resultType:"boolean",execute:async()=>e.execute(),context:e.context};case"void":return{resultType:"void",execute:async()=>e.execute(),context:e.context}}}static async finalToInternalResult(e){switch(e.resultType){case"bindings":return{type:"bindings",bindingsStream:await e.execute(),metadata:async()=>await e.metadata()};case"quads":return{type:"quads",quadStream:await e.execute(),metadata:async()=>await e.metadata()};case"boolean":return{type:"boolean",execute:()=>e.execute()};case"void":return{type:"void",execute:()=>e.execute()}}}}t.QueryEngineBase=a},15729:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.QueryEngineBase=void 0,i(r(59266),t),i(r(94394),t);var a=r(52295);Object.defineProperty(t,"QueryEngineBase",{enumerable:!0,get:function(){return a.QueryEngineBase}})},35153:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationAssignSourcesExhaustive=void 0;const n=r(6716),i=r(59510),a=r(86789),o=r(32227),s=r(31578);class c extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){return!0}async run(e){const t=e.context.get(o.KeysQueryOperation.querySources)??[];if(0===t.length)return{operation:e.operation,context:e.context};if(1===t.length){const r=t[0],n=e.context.get(o.KeysRdfUpdateQuads.destination);if(!n||r.source.referenceValue===(0,a.getDataDestinationValue)(n))try{const t=await r.source.getSelectorShape(e.context);if(i.ActorQueryOperation.doesShapeAcceptOperation(t,e.operation))return{operation:i.ActorQueryOperation.assignOperationSource(e.operation,r),context:e.context}}catch{}}return{operation:this.assignExhaustive(e.operation,t),context:e.context.delete(o.KeysInitQuery.queryString)}}assignExhaustive(e,t){const r=this;return s.Util.mapOperation(e,{[s.Algebra.types.PATTERN]:(e,r)=>1===t.length?{result:i.ActorQueryOperation.assignOperationSource(e,t[0]),recurse:!1}:{result:r.createUnion(t.map((t=>i.ActorQueryOperation.assignOperationSource(e,t)))),recurse:!1},[s.Algebra.types.LINK]:(e,r)=>1===t.length?{result:i.ActorQueryOperation.assignOperationSource(e,t[0]),recurse:!1}:{result:r.createAlt(t.map((t=>i.ActorQueryOperation.assignOperationSource(e,t)))),recurse:!1},[s.Algebra.types.NPS]:(e,r)=>1===t.length?{result:i.ActorQueryOperation.assignOperationSource(e,t[0]),recurse:!1}:{result:r.createAlt(t.map((t=>i.ActorQueryOperation.assignOperationSource(e,t)))),recurse:!1},[s.Algebra.types.SERVICE]:e=>({result:e,recurse:!1}),[s.Algebra.types.CONSTRUCT]:(e,n)=>({result:n.createConstruct(r.assignExhaustive(e.input,t),e.template),recurse:!1}),[s.Algebra.types.DELETE_INSERT]:(e,n)=>({result:n.createDeleteInsert(e.delete,e.insert,e.where?r.assignExhaustive(e.where,t):void 0),recurse:!1})})}}t.ActorOptimizeQueryOperationAssignSourcesExhaustive=c},94741:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(35153),t)},37919:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationBgpToJoin=void 0;const n=r(6716),i=r(31578);class a extends n.ActorOptimizeQueryOperation{async test(e){return!0}async run(e){return{operation:i.Util.mapOperation(e.operation,{bgp:(e,t)=>({recurse:!1,result:t.createJoin(e.patterns)})}),context:e.context}}}t.ActorOptimizeQueryOperationBgpToJoin=a},28084:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(37919),t)},54166:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationConstructDistinct=void 0;const n=r(6716),i=r(88851),a=r(20512);class o extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){if(!e.context.has(i.KeysInitQuery.distinctConstruct))throw new Error(`${this.name} was not enabled by the query.`);return!0}async run(e){return{operation:a.Util.mapOperation(e.operation,{construct:(e,t)=>({recurse:!1,result:t.createDistinct(t.createConstruct(e.input,e.template))})}),context:e.context.delete(i.KeysInitQuery.distinctConstruct)}}}t.ActorOptimizeQueryOperationConstructDistinct=o},78724:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(54166),t)},64372:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationDescribeToConstructsSubject=void 0;const n=r(6716),i=r(18050),a=r(31578),o=new i.DataFactory,s=new a.Factory;class c extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){if(e.operation.type!==a.Algebra.types.DESCRIBE)throw new Error(`Actor ${this.name} only supports describe operations, but got ${e.operation.type}`);return!0}async run(e){const t=e.operation,r=t.terms.filter((e=>"Variable"!==e.termType)).map((e=>{const t=[o.quad(e,o.variable("__predicate"),o.variable("__object"))];return t.forEach((e=>e.type="pattern")),{input:{type:a.Algebra.types.BGP,patterns:t},template:t,type:"construct"}}));if(r.length!==t.terms.length){let e=[];t.terms.filter((e=>"Variable"===e.termType)).forEach(((t,r)=>{const n=[o.quad(t,o.variable(`__predicate${r}`),o.variable(`__object${r}`))];n.forEach((e=>e.type="pattern")),e=[...e,...n]})),r.push({input:{type:a.Algebra.types.JOIN,input:[t.input,{type:a.Algebra.types.BGP,patterns:e}]},template:e,type:a.Algebra.types.CONSTRUCT})}return{operation:s.createUnion(r,!1),context:e.context}}}t.ActorOptimizeQueryOperationDescribeToConstructsSubject=c},78571:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(64372),t)},18348:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationFilterPushdown=void 0;const n=r(6716),i=r(59510),a=r(13252),o=r(31578);class s extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){return!0}async run(e){let t=e.operation;const r=this;this.splitConjunctive&&(t=o.Util.mapOperation(t,{filter:(t,n)=>t.expression.expressionType===o.Algebra.expressionTypes.OPERATOR&&"&&"===t.expression.operator?(r.logDebug(e.context,`Split conjunctive filter into ${t.expression.args.length} nested filters`),{recurse:!0,result:t.expression.args.reduce(((e,t)=>n.createFilter(e,t)),t.input)}):{recurse:!0,result:t}}));const n=this.getSources(t),i=new Map(await Promise.all(n.map((async t=>[t,await t.source.getSelectorShape(e.context)]))));let a=!0,s=0;for(;a&&s1&&r.logDebug(e.context,`Pushed down filters in ${s} iterations`),this.mergeConjunctive&&(t=o.Util.mapOperation(t,{filter(t,n){if(t.input.type===o.Algebra.types.FILTER){const{nestedExpressions:i,input:a}=r.getNestedFilterExpressions(t);return r.logDebug(e.context,`Merge ${i.length} nested filters into conjunctive filter`),{recurse:!0,result:n.createFilter(a,i.slice(1).reduce(((e,t)=>n.createOperatorExpression("&&",[e,t])),i[0]))}}return{recurse:!0,result:t}}})),{operation:t,context:e.context}}shouldAttemptPushDown(e,t,r){if(this.aggressivePushdown)return!0;const n=e.expression;return n.expressionType===o.Algebra.expressionTypes.OPERATOR&&"="===n.operator&&("term"===n.args[0].expressionType&&"Variable"!==n.args[0].term.termType&&"term"===n.args[1].expressionType&&"Variable"===n.args[1].term.termType||"term"===n.args[0].expressionType&&"Variable"===n.args[0].term.termType&&"term"===n.args[1].expressionType&&"Variable"!==n.args[1].term.termType)||!!t.some((t=>i.ActorQueryOperation.doesShapeAcceptOperation(r.get(t),e)))}getSources(e){const t=new Set,r=e=>{const r=i.ActorQueryOperation.getOperationSource(e);return r&&t.add(r),!1};return o.Util.recurseOperation(e,{[o.Algebra.types.PATTERN]:r,[o.Algebra.types.LINK]:r,[o.Algebra.types.NPS]:r,[o.Algebra.types.SERVICE]:r}),[...t]}getExpressionVariables(e){switch(e.expressionType){case o.Algebra.expressionTypes.AGGREGATE:case o.Algebra.expressionTypes.WILDCARD:throw new Error(`Getting expression variables is not supported for ${e.expressionType}`);case o.Algebra.expressionTypes.EXISTENCE:return o.Util.inScopeVariables(e.input);case o.Algebra.expressionTypes.NAMED:return[];case o.Algebra.expressionTypes.OPERATOR:return(0,a.uniqTerms)(e.args.flatMap((e=>this.getExpressionVariables(e))));case o.Algebra.expressionTypes.TERM:return"Variable"===e.term.termType?[e.term]:[]}}getOverlappingOperations(e,t){const r=[],n=[],i=[];for(const a of e.input){const e=o.Util.inScopeVariables(a);this.variablesSubSetOf(t,e)?r.push(a):this.variablesIntersect(t,e)?n.push(a):i.push(a)}return{fullyOverlapping:r,partiallyOverlapping:n,notOverlapping:i}}filterPushdown(e,t,r,n,i){if(this.isExpressionFalse(e))return[!0,n.createUnion([])];if(e.type===o.Algebra.types.EXPRESSION&&e.expressionType===o.Algebra.expressionTypes.EXISTENCE)return[!1,n.createFilter(r,e)];switch(r.type){case o.Algebra.types.EXTEND:return this.variablesIntersect([r.variable],t)?[!1,n.createFilter(r,e)]:[!0,n.createExtend(this.filterPushdown(e,t,r.input,n,i)[1],r.variable,r.expression)];case o.Algebra.types.FILTER:{const[a,o]=this.filterPushdown(e,t,r.input,n,i);return[a,n.createFilter(o,r.expression)]}case o.Algebra.types.JOIN:{if(0===r.input.length)return[!1,n.createFilter(r,e)];const{fullyOverlapping:a,partiallyOverlapping:o,notOverlapping:s}=this.getOverlappingOperations(r,t),c=[];let u=!1;return a.length>0&&(u=!0,c.push(n.createJoin(a.map((r=>this.filterPushdown(e,t,r,n,i)[1]))))),o.length>0&&c.push(n.createFilter(n.createJoin(o,!1),e)),s.length>0&&c.push(...s),c.length>1&&(u=!0),u&&this.logDebug(i,`Push down filter across join entries with ${a.length} fully overlapping, ${o.length} partially overlapping, and ${s.length} not overlapping`),[u,1===c.length?c[0]:n.createJoin(c)]}case o.Algebra.types.NOP:return[!0,r];case o.Algebra.types.PROJECT:return this.variablesIntersect(r.variables,t)?[!0,n.createProject(this.filterPushdown(e,t,r.input,n,i)[1],r.variables)]:[!0,r];case o.Algebra.types.UNION:{const{fullyOverlapping:a,partiallyOverlapping:o,notOverlapping:s}=this.getOverlappingOperations(r,t),c=[];let u=!1;return a.length>0&&(u=!0,c.push(n.createUnion(a.map((r=>this.filterPushdown(e,t,r,n,i)[1]))))),o.length>0&&c.push(n.createFilter(n.createUnion(o,!1),e)),s.length>0&&c.push(...s),c.length>1&&(u=!0),u&&this.logDebug(i,`Push down filter across union entries with ${a.length} fully overlapping, ${o.length} partially overlapping, and ${s.length} not overlapping`),[u,1===c.length?c[0]:n.createUnion(c)]}case o.Algebra.types.VALUES:return this.variablesIntersect(r.variables,t)?[!1,n.createFilter(r,e)]:[!0,r];case o.Algebra.types.LEFT_JOIN:if(this.pushIntoLeftJoins){const a=o.Util.inScopeVariables(r.input[1]);if(!this.variablesIntersect(t,a))return this.logDebug(i,"Push down filter into left join"),[!0,n.createLeftJoin(this.filterPushdown(e,t,r.input[0],n,i)[1],r.input[1],r.expression)]}return[!1,n.createFilter(r,e)];case o.Algebra.types.PATTERN:if(this.pushEqualityIntoPatterns){const t=this.getEqualityExpressionPushableIntoPattern(e);if(t){let e=!1;const s=r.metadata;if((r=(0,a.mapTermsNested)(r,(r=>r.equals(t.variable)?(e=!0,t.term):r))).type=o.Algebra.types.PATTERN,r.metadata=s,e)return this.logDebug(i,`Push down filter into pattern for ?${t.variable.value}`),[!0,n.createJoin([r,n.createValues([t.variable],[{[`?${t.variable.value}`]:t.term}])])]}}return[!1,n.createFilter(r,e)];case o.Algebra.types.PATH:if(this.pushEqualityIntoPatterns){const t=this.getEqualityExpressionPushableIntoPattern(e);if(t&&(r.subject.equals(t.variable)||r.object.equals(t.variable))){this.logDebug(i,`Push down filter into path for ?${t.variable.value}`);const e=r.metadata;return(r=n.createPath(r.subject.equals(t.variable)?t.term:r.subject,r.predicate,r.object.equals(t.variable)?t.term:r.object)).metadata=e,[!0,n.createJoin([r,n.createValues([t.variable],[{[`?${t.variable.value}`]:t.term}])])]}}return[!1,n.createFilter(r,e)];case o.Algebra.types.MINUS:case o.Algebra.types.ALT:case o.Algebra.types.ASK:case o.Algebra.types.BGP:case o.Algebra.types.CONSTRUCT:case o.Algebra.types.DESCRIBE:case o.Algebra.types.DISTINCT:case o.Algebra.types.EXPRESSION:case o.Algebra.types.FROM:case o.Algebra.types.GRAPH:case o.Algebra.types.GROUP:case o.Algebra.types.INV:case o.Algebra.types.LINK:case o.Algebra.types.NPS:case o.Algebra.types.ONE_OR_MORE_PATH:case o.Algebra.types.ORDER_BY:case o.Algebra.types.REDUCED:case o.Algebra.types.SEQ:case o.Algebra.types.SERVICE:case o.Algebra.types.SLICE:case o.Algebra.types.ZERO_OR_MORE_PATH:case o.Algebra.types.ZERO_OR_ONE_PATH:case o.Algebra.types.COMPOSITE_UPDATE:case o.Algebra.types.DELETE_INSERT:case o.Algebra.types.LOAD:case o.Algebra.types.CLEAR:case o.Algebra.types.CREATE:case o.Algebra.types.DROP:case o.Algebra.types.ADD:case o.Algebra.types.MOVE:case o.Algebra.types.COPY:return[!1,n.createFilter(r,e)]}}getEqualityExpressionPushableIntoPattern(e){if(e.expressionType===o.Algebra.expressionTypes.OPERATOR&&"="===e.operator){if("term"===e.args[0].expressionType&&"Variable"!==e.args[0].term.termType&&("Literal"!==e.args[0].term.termType||this.isLiteralWithCanonicalLexicalForm(e.args[0].term))&&"term"===e.args[1].expressionType&&"Variable"===e.args[1].term.termType)return{variable:e.args[1].term,term:e.args[0].term};if("term"===e.args[0].expressionType&&"Variable"===e.args[0].term.termType&&"term"===e.args[1].expressionType&&"Variable"!==e.args[1].term.termType&&("Literal"!==e.args[1].term.termType||this.isLiteralWithCanonicalLexicalForm(e.args[1].term)))return{variable:e.args[0].term,term:e.args[1].term}}}isLiteralWithCanonicalLexicalForm(e){if("Literal"===e.termType)switch(e.datatype.value){case"http://www.w3.org/2001/XMLSchema#string":case"http://www.w3.org/1999/02/22-rdf-syntax-ns#langString":case"http://www.w3.org/2001/XMLSchema#normalizedString":case"http://www.w3.org/2001/XMLSchema#anyURI":case"http://www.w3.org/2001/XMLSchema#base64Binary":case"http://www.w3.org/2001/XMLSchema#language":case"http://www.w3.org/2001/XMLSchema#Name":case"http://www.w3.org/2001/XMLSchema#NCName":case"http://www.w3.org/2001/XMLSchema#NMTOKEN":case"http://www.w3.org/2001/XMLSchema#token":case"http://www.w3.org/2001/XMLSchema#hexBinary":return!0}return!1}variablesIntersect(e,t){return e.some((e=>t.some((t=>e.equals(t)))))}variablesSubSetOf(e,t){return e.length<=t.length&&e.every((e=>t.some((t=>e.equals(t)))))}isExpressionFalse(e){return e.term&&"Literal"===e.term.termType&&"false"===e.term.value}getNestedFilterExpressions(e){if(e.input.type===o.Algebra.types.FILTER){const t=this.getNestedFilterExpressions(e.input);return{nestedExpressions:[e.expression,...t.nestedExpressions],input:t.input}}return{nestedExpressions:[e.expression],input:e.input}}}t.ActorOptimizeQueryOperationFilterPushdown=s},48989:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18348),t)},14400:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationGroupSources=void 0;const n=r(6716),i=r(59510),a=r(31578),o=new a.Factory;class s extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){if(i.ActorQueryOperation.getOperationSource(e.operation))throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);return!0}async run(e){return{operation:await this.groupOperation(e.operation,e.context),context:e.context}}async groupOperation(e,t){if(i.ActorQueryOperation.getOperationSource(e)??!("input"in e))return e;if(!Array.isArray(e.input)){const r=await this.groupOperation(e.input,t);if(r.metadata?.scopedSource){const n=i.ActorQueryOperation.getOperationSource(r);i.ActorQueryOperation.doesShapeAcceptOperation(await n.source.getSelectorShape(t),e)&&(this.logDebug(t,`Hoist 1 source-specific operation into a single ${e.type} operation for ${n.source.toString()}`),i.ActorQueryOperation.removeOperationSource(r),e=i.ActorQueryOperation.assignOperationSource(e,n))}return{...e,input:r}}const r=await Promise.all(e.input.map((e=>this.groupOperation(e,t)))),n=this.clusterOperationsWithEqualSources(r);if(1===n.length){const r=n[0],a=i.ActorQueryOperation.getOperationSource(n[0][0]);return{...await this.moveSourceAnnotationUpwardsIfPossible(e,r,a,t),input:r}}if(n.length===r.length)return{...e,input:r};let s;switch(e.type){case a.Algebra.types.JOIN:s=o.createJoin.bind(o);break;case a.Algebra.types.UNION:s=o.createUnion.bind(o);break;case a.Algebra.types.ALT:s=o.createAlt.bind(o);break;case a.Algebra.types.SEQ:s=o.createSeq.bind(o);break;default:throw new Error(`Unsupported operation '${e.type}' detected while grouping sources`)}return await this.groupOperationMulti(n,s,t)}async groupOperationMulti(e,t,r){let n=!0;const a=await Promise.all(e.map((async e=>{const a=i.ActorQueryOperation.getOperationSource(e[0]),o=await this.moveSourceAnnotationUpwardsIfPossible(t(e,!0),e,a,r);return i.ActorQueryOperation.getOperationSource(o)&&(n=!1),o})));return t(a,n)}clusterOperationsWithEqualSources(e){const t=new Map,r=[];for(const n of e){const e=i.ActorQueryOperation.getOperationSource(n);e?(t.has(e)||t.set(e,[]),t.get(e).push(n)):r.push(n)}const n=[];r.length>0&&n.push(r);for(const[e,r]of t.entries())n.push(r.map((t=>i.ActorQueryOperation.assignOperationSource(t,e))));return n}async moveSourceAnnotationUpwardsIfPossible(e,t,r,n){if(r&&i.ActorQueryOperation.doesShapeAcceptOperation(await r.source.getSelectorShape(n),e)){this.logDebug(n,`Hoist ${t.length} source-specific operations into a single ${e.type} operation for ${r.source.toString()}`),e=i.ActorQueryOperation.assignOperationSource(e,r);for(const e of t)i.ActorQueryOperation.removeOperationSource(e)}return e}}t.ActorOptimizeQueryOperationGroupSources=s},78992:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(14400),t)},90042:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationJoinBgp=void 0;const n=r(6716),i=r(31578);class a extends n.ActorOptimizeQueryOperation{async test(e){return!0}async run(e){return{operation:i.Util.mapOperation(e.operation,{join:(e,t)=>e.input.every((e=>"bgp"===e.type))?{recurse:!1,result:t.createBgp(e.input.flatMap((e=>e.patterns)))}:{recurse:!1,result:e}}),context:e.context}}}t.ActorOptimizeQueryOperationJoinBgp=a},46980:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(90042),t)},33186:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationJoinConnected=void 0;const n=r(6716),i=r(31578);class a extends n.ActorOptimizeQueryOperation{async test(e){return!0}async run(e){return{operation:i.Util.mapOperation(e.operation,{join:(e,t)=>({recurse:!1,result:a.cluster(e,t)})}),context:e.context}}static cluster(e,t){let r,n=e.input.map((e=>({inScopeVariables:Object.fromEntries(i.Util.inScopeVariables(e).map((e=>[e.value,!0]))),entries:[e]})));do{r=n,n=a.clusterIteration(r)}while(r.length!==n.length);const o=n.map((e=>1===e.entries.length?e.entries[0]:t.createJoin(e.entries)));return 1===o.length?o[0]:t.createJoin(o,!1)}static clusterIteration(e){const t=[];for(const r of e){let e=!1;for(const n of t)if(a.haveOverlappingVariables(r.inScopeVariables,n.inScopeVariables)){n.entries=[...n.entries,...r.entries],n.inScopeVariables={...n.inScopeVariables,...r.inScopeVariables},e=!0;break}e||t.push({inScopeVariables:r.inScopeVariables,entries:r.entries})}return t}static haveOverlappingVariables(e,t){for(const r of Object.keys(e))if(t[r])return!0;return!1}}t.ActorOptimizeQueryOperationJoinConnected=a},98498:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(33186),t)},92834:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationPruneEmptySourceOperations=void 0;const n=r(6716),i=r(59510),a=r(32227),o=r(18050),s=r(31578),c=new s.Factory,u=new o.DataFactory;class l extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){if(i.ActorQueryOperation.getOperationSource(e.operation))throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);return!0}async run(e){let t=e.operation;const r=[],n=this;s.Util.recurseOperation(t,{[s.Algebra.types.UNION]:e=>(n.collectMultiOperationInputs(e.input,r,s.Algebra.types.PATTERN),!0),[s.Algebra.types.ALT]:e=>(n.collectMultiOperationInputs(e.input,r,s.Algebra.types.LINK),!1),[s.Algebra.types.SERVICE]:()=>!1});const a=new Set;return await Promise.all(r.map((async t=>{const r="link"===t.type?c.createPattern(u.variable("?s"),t.iri,u.variable("?o")):t;await this.hasSourceResults(i.ActorQueryOperation.getOperationSource(t),r,e.context)||a.add(t)}))),a.size>0&&(this.logDebug(e.context,`Pruning ${a.size} source-specific operations`),t=s.Util.mapOperation(t,{[s.Algebra.types.UNION]:(e,t)=>n.mapMultiOperation(e,a,(e=>t.createUnion(e))),[s.Algebra.types.ALT]:(e,t)=>n.mapMultiOperation(e,a,(e=>t.createAlt(e)))}),t=s.Util.mapOperation(t,{[s.Algebra.types.PROJECT]:(e,t)=>l.hasEmptyOperation(e)?{recurse:!1,result:t.createUnion([])}:{recurse:!0,result:e},[s.Algebra.types.LEFT_JOIN]:e=>l.hasEmptyOperation(e.input[1])?{recurse:!0,result:e.input[0]}:{recurse:!0,result:e}})),{operation:t,context:e.context}}static hasEmptyOperation(e){let t=!1;return s.Util.recurseOperation(e,{[s.Algebra.types.UNION]:e=>(e.input.every((e=>l.hasEmptyOperation(e)))&&(t=!0),!1),[s.Algebra.types.ALT]:e=>(0===e.input.length&&(t=!0),!1),[s.Algebra.types.LEFT_JOIN]:e=>(l.hasEmptyOperation(e.input[0])&&(t=!0),!1)}),t}collectMultiOperationInputs(e,t,r){for(const n of e)i.ActorQueryOperation.getOperationSource(n)&&n.type===r&&t.push(n)}mapMultiOperation(e,t,r){const n=e.input.filter((e=>!t.has(e)));return n.length===e.input.length?{result:e,recurse:!0}:0===n.length?{result:r([]),recurse:!1}:1===n.length?{result:n[0],recurse:!0}:{result:r(n),recurse:!0}}async hasSourceResults(e,t,r){if(e.context?.get(a.KeysQuerySourceIdentify.traverse))return!0;if(this.useAskIfSupported){const n=c.createAsk(t);if(i.ActorQueryOperation.doesShapeAcceptOperation(await e.source.getSelectorShape(r),n))return e.source.queryBoolean(n,r)}const n=e.source.queryBindings(t,r);return new Promise(((e,t)=>{n.on("error",t),n.getProperty("metadata",(t=>{n.destroy(),e(t.cardinality.value>0)}))}))}}t.ActorOptimizeQueryOperationPruneEmptySourceOperations=l},94607:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(92834),t)},13614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationRewriteAdd=void 0;const n=r(6716),i=r(18050),a=r(31578),o=new i.DataFactory;class s extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){return!0}async run(e){return{operation:a.Util.mapOperation(e.operation,{[a.Algebra.types.ADD](e,t){const r="DEFAULT"===e.destination?o.defaultGraph():e.destination,n="DEFAULT"===e.source?o.defaultGraph():e.source;return{result:t.createDeleteInsert(void 0,[t.createPattern(o.variable("s"),o.variable("p"),o.variable("o"),r)],t.createPattern(o.variable("s"),o.variable("p"),o.variable("o"),n)),recurse:!1}}}),context:e.context}}}t.ActorOptimizeQueryOperationRewriteAdd=s},63514:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(13614),t)},25812:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationRewriteCopy=void 0;const n=r(6716),i=r(31578);class a extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){return!0}async run(e){return{operation:i.Util.mapOperation(e.operation,{[i.Algebra.types.COPY](e,t){let r;return r="string"==typeof e.destination&&"string"==typeof e.source&&e.destination===e.source||"string"!=typeof e.destination&&"string"!=typeof e.source&&e.destination.equals(e.source)?t.createCompositeUpdate([]):t.createCompositeUpdate([t.createDrop(e.destination,!0),t.createAdd(e.source,e.destination,e.silent)]),{result:r,recurse:!1}}}),context:e.context}}}t.ActorOptimizeQueryOperationRewriteCopy=a},15718:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(25812),t)},90348:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationRewriteMove=void 0;const n=r(6716),i=r(31578);class a extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){return!0}async run(e){return{operation:i.Util.mapOperation(e.operation,{[i.Algebra.types.MOVE](e,t){let r;if("string"==typeof e.destination&&"string"==typeof e.source&&e.destination===e.source||"string"!=typeof e.destination&&"string"!=typeof e.source&&e.destination.equals(e.source))r=t.createCompositeUpdate([]);else{const n=[t.createDrop(e.destination,!0),t.createAdd(e.source,e.destination,e.silent),t.createDrop(e.source)];r=t.createCompositeUpdate(n)}return{result:r,recurse:!1}}}),context:e.context}}}t.ActorOptimizeQueryOperationRewriteMove=a},83910:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(90348),t)},82476:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationAsk=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"ask")}async testOperation(e,t){return!0}async runOperation(e,t){const r=await this.mediatorQueryOperation.mediate({operation:e.input,context:t}),{bindingsStream:i}=n.ActorQueryOperation.getSafeBindings(r);return{type:"boolean",execute:async()=>1===(await i.take(1).toArray()).length}}}t.ActorQueryOperationAsk=i},57321:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(82476),t)},9147:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationBgpJoin=void 0;const n=r(59510),i=r(31578);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"bgp")}async testOperation(e,t){return!0}async runOperation(e,t){return this.mediatorQueryOperation.mediate({operation:a.FACTORY.createJoin(e.patterns),context:t})}}t.ActorQueryOperationBgpJoin=a,a.FACTORY=new i.Factory},20888:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(9147),t)},59516:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationConstruct=void 0;const n=r(59510),i=r(13252),a=r(31578),o=r(59218);class s extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"construct")}static getVariables(e){return(0,i.uniqTerms)([].concat.apply([],e.map((e=>(0,i.getVariables)((0,i.getTermsNested)(e))))))}async testOperation(e,t){return!0}async runOperation(e,t){const r=s.getVariables(e.template),i={type:a.Algebra.types.PROJECT,input:e.input,variables:r},c=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:i,context:t}));return{metadata:()=>c.metadata().then((t=>({...t,order:void 0,cardinality:{type:t.cardinality.type,value:t.cardinality.value*e.template.length},canContainUndefs:!1,availableOrders:void 0}))),quadStream:new o.BindingsToQuadsIterator(e.template,c.bindingsStream),type:"quads"}}}t.ActorQueryOperationConstruct=s},59218:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BindingsToQuadsIterator=void 0;const n=r(76664),i=r(18050),a=r(13252),o=new i.DataFactory;class s extends n.MultiTransformIterator{constructor(e,t){super(t,{autoStart:!1}),this.template=e,this.blankNodeCounter=0}static bindTerm(e,t){return"Variable"===t.termType?e.get(t):t}static bindQuad(e,t){try{return(0,a.mapTermsNested)(t,(t=>{const r=s.bindTerm(e,t);if(!r)throw new Error("Unbound term");return r}))}catch{}}static localizeBlankNode(e,t){return"BlankNode"===t.termType?o.blankNode(`${t.value}${e}`):t}static localizeQuad(e,t){return(0,a.mapTermsNested)(t,(t=>s.localizeBlankNode(e,t)))}bindTemplate(e,t,r){return t.map(s.localizeQuad.bind(null,r)).map((t=>s.bindQuad.bind(null,e)(t))).filter(Boolean)}_createTransformer(e){return new n.ArrayIterator(this.bindTemplate(e,this.template,this.blankNodeCounter++),{autoStart:!1})}}t.BindingsToQuadsIterator=s},88749:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(59516),t),i(r(59218),t)},50403:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationDistinctHash=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"distinct")}async testOperation(e,t){return!0}async runOperation(e,t){const r=await this.mediatorQueryOperation.mediate({operation:e.input,context:t});if("quads"===r.type&&void 0!==this.mediatorHashQuads){const e=n.ActorQueryOperation.getSafeQuads(r);return{type:"quads",quadStream:e.quadStream.filter(await this.newHashFilterQuads(t)),metadata:e.metadata}}const i=n.ActorQueryOperation.getSafeBindings(r);return{type:"bindings",bindingsStream:i.bindingsStream.filter(await this.newHashFilter(t)),metadata:i.metadata}}async newHashFilter(e){const{hashFunction:t}=await this.mediatorHashBindings.mediate({allowHashCollisions:!0,context:e}),r={};return e=>{const n=t(e);return!(n in r)&&(r[n]=!0)}}async newHashFilterQuads(e){if(void 0===this.mediatorHashQuads)return e=>!0;const{hashFunction:t}=await this.mediatorHashQuads.mediate({allowHashCollisions:!0,context:e}),r={};return e=>{const n=t(e);return!(n in r)&&(r[n]=!0)}}}t.ActorQueryOperationDistinctHash=i},13867:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(50403),t)},50372:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationExtend=void 0;const n=r(91674),i=r(59510),a=r(61621);class o extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"extend")}async testOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);return Boolean(new a.AsyncEvaluator(e.expression,i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,r))),!0}async runOperation(e,t){const{expression:r,input:o,variable:s}=e,c=i.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:o,context:t}));if((await c.metadata()).variables.some((e=>e.equals(s))))throw new Error(`Illegal binding to variable '${s.value}' that has already been bound`);const u=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),l={...i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,u)},d=new a.AsyncEvaluator(r,l),p=c.bindingsStream.transform({autoStart:!1,transform:async(e,r,i)=>{try{const t=await d.evaluate(e);i(e.set(s,t))}catch(r){(0,a.isExpressionError)(r)?(i(e),this.logWarn(t,`Expression error for extend operation (${r.message})with bindings '${(0,n.bindingsToString)(e)}'`)):p.emit("error",r)}r()}});return{type:"bindings",bindingsStream:p,async metadata(){const e=await c.metadata();return{...e,variables:[...e.variables,s]}}}}}t.ActorQueryOperationExtend=o},19724:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(50372),t)},64452:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationFilter=void 0;const n=r(91674),i=r(59510),a=r(61621);class o extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"filter")}async testOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),o={...i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,r)};return new a.AsyncEvaluator(e.expression,o),!0}async runOperation(e,t){const r=await this.mediatorQueryOperation.mediate({operation:e.input,context:t}),o=i.ActorQueryOperation.getSafeBindings(r);i.ActorQueryOperation.validateQueryOutput(o,"bindings");const s=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),c={...i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,s)},u=new a.AsyncEvaluator(e.expression,c),l=o.bindingsStream.transform({transform:async(e,r,i)=>{try{await u.evaluateAsEBV(e)&&i(e)}catch(r){(0,a.isExpressionError)(r)?this.logWarn(t,"Error occurred while filtering.",(()=>({error:r,bindings:(0,n.bindingsToString)(e)}))):l.emit("error",r)}r()},autoStart:!1});return{type:"bindings",bindingsStream:l,metadata:o.metadata}}}t.ActorQueryOperationFilter=o},74578:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(64452),t)},71819:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationFromQuad=void 0;const n=r(59510),i=r(31578);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"from")}static copyOperation(e,t){const r={};for(const n of Object.keys(e))Array.isArray(e[n])&&"template"!==n?r[n]="variables"===n?e[n]:e[n].map(t):a.ALGEBRA_TYPES.includes(e[n].type)?r[n]=t(e[n]):r[n]=e[n];return r}static applyOperationDefaultGraph(e,t){if("bgp"===e.type&&e.patterns.length>0||"path"===e.type||"pattern"===e.type){if("bgp"===e.type)return a.joinOperations(e.patterns.map((e=>{if("DefaultGraph"!==e.graph.termType)return a.FACTORY.createBgp([e]);const r=t.map((t=>a.FACTORY.createBgp([Object.assign(a.FACTORY.createPattern(e.subject,e.predicate,e.object,t),{metadata:e.metadata})])));return a.unionOperations(r)})));if("DefaultGraph"!==e.graph.termType)return e;const r=t.map((t=>"path"===e.type?a.FACTORY.createPath(e.subject,e.predicate,e.object,t):Object.assign(a.FACTORY.createPattern(e.subject,e.predicate,e.object,t),{metadata:e.metadata})));return a.unionOperations(r)}return a.copyOperation(e,(e=>this.applyOperationDefaultGraph(e,t)))}static applyOperationNamedGraph(e,t,r){if("bgp"===e.type&&e.patterns.length>0||"path"===e.type||"pattern"===e.type){const n="bgp"===e.type?e.patterns[0].graph:e.graph;if("DefaultGraph"===n.termType)return{type:i.Algebra.types.BGP,patterns:[]};if("Variable"===n.termType){if(1===t.length){const r=t[0],i={};i[`?${n.value}`]=r;const o=a.FACTORY.createValues([n],[i]);let s;return s="bgp"===e.type?a.FACTORY.createBgp(e.patterns.map((e=>a.FACTORY.createPattern(e.subject,e.predicate,e.object,r)))):"path"===e.type?a.FACTORY.createPath(e.subject,e.predicate,e.object,r):a.FACTORY.createPattern(e.subject,e.predicate,e.object,r),a.FACTORY.createJoin([o,s])}return a.unionOperations(t.map((t=>a.applyOperationNamedGraph(e,[t],r))))}return[...t,...r].some((e=>e.equals(n)))?e:{type:i.Algebra.types.BGP,patterns:[]}}return a.copyOperation(e,(e=>this.applyOperationNamedGraph(e,t,r)))}static joinOperations(e){if(1===e.length)return e[0];if(e.length>1)return a.FACTORY.createJoin(e);throw new Error("A join can only be applied on at least one operation")}static unionOperations(e){if(1===e.length)return e[0];if(e.length>1)return a.FACTORY.createUnion(e);throw new Error("A union can only be applied on at least one operation")}static createOperation(e){let t=e.input;return e.default.length>0&&(t=a.applyOperationDefaultGraph(t,e.default)),(e.named.length>0||e.default.length>0)&&(t=a.applyOperationNamedGraph(t,e.named,e.default)),t}async testOperation(e,t){return!0}async runOperation(e,t){const r=a.createOperation(e);return this.mediatorQueryOperation.mediate({operation:r,context:t})}}t.ActorQueryOperationFromQuad=a,a.FACTORY=new i.Factory,a.ALGEBRA_TYPES=Object.keys(i.Algebra.types).map((e=>i.Algebra.types[e]))},37572:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(71819),t)},39712:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationGroup=void 0;const n=r(91674),i=r(59510),a=r(61621),o=r(76664),s=r(50626);class c extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"group")}async testOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);for(const n of e.aggregates)new a.AsyncEvaluator(n.expression,i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,r));return!0}async runOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),{hashFunction:a}=await this.mediatorHashBindings.mediate({allowHashCollisions:!0,context:t}),{input:c,aggregates:u}=e,l=await this.mediatorQueryOperation.mediate({operation:c,context:t}),d=i.ActorQueryOperation.getSafeBindings(l),p=[...e.variables,...u.map((e=>e.variable))],h=i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,r);return{type:"bindings",bindingsStream:new o.TransformIterator((()=>new Promise(((t,n)=>{const i=new s.GroupsState(a,e,h,r);d.bindingsStream.on("end",(async()=>{try{const e=new o.ArrayIterator(await i.collectResults(),{autoStart:!1});t(e)}catch(e){n(e)}})),d.bindingsStream.on("error",n),d.bindingsStream.on("data",(e=>{i.consumeBindings(e).catch(n)}))}))),{autoStart:!1}),metadata:async()=>({...await d.metadata(),variables:p})}}}t.ActorQueryOperationGroup=c},50626:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GroupsState=void 0;const n=r(61621),i=new(r(18050).DataFactory);t.GroupsState=class{constructor(e,t,r,n){this.hashFunction=e,this.pattern=t,this.sparqleeConfig=r,this.bindingsFactory=n,this.groups=new Map,this.groupsInitializer=new Map,this.groupVariables=new Set(this.pattern.variables.map((e=>e.value))),this.waitCounter=1,this.resultHasBeenCalled=!1}consumeBindings(e){const t=this.resultCheck();if(t)return t;this.waitCounter++;const r=e.filter(((e,t)=>this.groupVariables.has(t.value))),i=this.hashBindings(r);let a,o=this.groupsInitializer.get(i);if(o){const t=o;a=(async()=>{const r=await t;await Promise.all(this.pattern.aggregates.map((async t=>{const n=t.variable.value;await r.aggregators[n].put(e)})))})().then((async()=>{this.subtractWaitCounterAndCollect()}))}else o=(async()=>{const t={};await Promise.all(this.pattern.aggregates.map((async r=>{const i=r.variable.value;t[i]=new n.AsyncAggregateEvaluator(r,this.sparqleeConfig),await t[i].put(e)})));const a={aggregators:t,bindings:r};return this.groups.set(i,a),this.subtractWaitCounterAndCollect(),a})(),this.groupsInitializer.set(i,o),a=o;return a}subtractWaitCounterAndCollect(){0==--this.waitCounter&&this.handleResultCollection()}handleResultCollection(){let e=[...this.groups].map((([e,t])=>{const{bindings:r,aggregators:n}=t;let a=r;for(const e in n){const t=n[e].result();t&&(a=a.set(i.variable(e),t))}return a}));if(0===e.length&&0===this.groupVariables.size){const t=[];for(const e of this.pattern.aggregates){const r=e.variable,i=n.AsyncAggregateEvaluator.emptyValue(e);void 0!==i&&t.push([r,i])}e=[this.bindingsFactory.bindings(t)]}this.waitResolver(e)}resultCheck(){if(this.resultHasBeenCalled)return Promise.reject(new Error("Calling any function after calling collectResult is invalid."))}collectResults(){const e=this.resultCheck();if(e)return e;this.resultHasBeenCalled=!0;const t=new Promise((e=>{this.waitResolver=e}));return this.subtractWaitCounterAndCollect(),t}hashBindings(e){return this.hashFunction(e)}}},47007:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(39712),t)},54052:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationJoin=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"join")}async testOperation(e,t){return!0}async runOperation(e,t){const r=(await Promise.all(e.input.map((async e=>({output:await this.mediatorQueryOperation.mediate({operation:e,context:t}),operation:e}))))).map((({output:e,operation:t})=>({output:n.ActorQueryOperation.getSafeBindings(e),operation:t})));return this.mediatorJoin.mediate({type:"inner",entries:r,context:t})}}t.ActorQueryOperationJoin=i},40980:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(54052),t)},18152:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationLeftJoin=void 0;const n=r(91674),i=r(59510),a=r(61621);class o extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"leftjoin")}async testOperation(e,t){return!0}async runOperation(e,t){const r=(await Promise.all(e.input.map((async e=>({output:await this.mediatorQueryOperation.mediate({operation:e,context:t}),operation:e}))))).map((({output:e,operation:t})=>({output:i.ActorQueryOperation.getSafeBindings(e),operation:t}))),o=await this.mediatorJoin.mediate({type:"optional",entries:r,context:t});if(e.expression){const s=(await r[1].output.metadata()).variables,c=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),u={...i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,c)},l=new a.AsyncEvaluator(e.expression,u),d=o.bindingsStream.transform({autoStart:!1,transform:async(e,r,n)=>{if(!s.every((t=>e.has(t.value))))return n(e),r();try{await l.evaluateAsEBV(e)&&n(e)}catch(r){(0,a.isExpressionError)(r)?this.logWarn(t,"Error occurred while filtering.",(()=>({error:r,bindings:e}))):d.emit("error",r)}r()}});o.bindingsStream=d}return o}}t.ActorQueryOperationLeftJoin=o},33149:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18152),t)},34358:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationMinus=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"minus")}async testOperation(e,t){return!0}async runOperation(e,t){const r=(await Promise.all(e.input.map((async e=>({output:await this.mediatorQueryOperation.mediate({operation:e,context:t}),operation:e}))))).map((({output:e,operation:t})=>({output:n.ActorQueryOperation.getSafeBindings(e),operation:t})));return this.mediatorJoin.mediate({type:"minus",entries:r,context:t})}}t.ActorQueryOperationMinus=i},19948:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(34358),t)},92052:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationNop=void 0;const n=r(91674),i=r(59510),a=r(72394),o=r(76664);class s extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"nop")}async testOperation(e,t){return!0}async runOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);return{bindingsStream:new o.SingletonIterator(r.bindings()),metadata:()=>Promise.resolve({state:new a.MetadataValidationState,cardinality:{type:"exact",value:1},canContainUndefs:!1,variables:[]}),type:"bindings"}}}t.ActorQueryOperationNop=s},35021:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(92052),t)},97236:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationOrderBy=void 0;const n=r(91674),i=r(59510),a=r(61621),o=r(31578),s=r(36211);class c extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"orderby"),this.window=e.window??Number.POSITIVE_INFINITY}async testOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);for(let n of e.expressions)n=this.extractSortExpression(n),new a.AsyncEvaluator(n,i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,r));return!0}async runOperation(e,t){const r=await this.mediatorQueryOperation.mediate({operation:e.input,context:t}),o=i.ActorQueryOperation.getSafeBindings(r),c={window:this.window},u=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),l={...i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,u)};let{bindingsStream:d}=o;for(let t=e.expressions.length-1;t>=0;t--){let r=e.expressions[t];const n=this.isAscending(r);r=this.extractSortExpression(r);const i=new a.AsyncEvaluator(r,l),o=async(e,t,r)=>{try{r({bindings:e,result:await i.evaluate(e)})}catch(t){(0,a.isExpressionError)(t)||d.emit("error",t),r({bindings:e,result:void 0})}t()},u=d.transform({transform:o}),p=new s.SortIterator(u,((e,t)=>{let r=(0,a.orderTypes)(e.result,t.result);return n||(r*=-1),r}),c);d=p.map((({bindings:e})=>e))}return{type:"bindings",bindingsStream:d,metadata:o.metadata}}extractSortExpression(e){const{expressionType:t,operator:r}=e;return t!==o.Algebra.expressionTypes.OPERATOR?e:"desc"===r?e.args[0]:e}isAscending(e){const{expressionType:t,operator:r}=e;return t!==o.Algebra.expressionTypes.OPERATOR||"desc"!==r}}t.ActorQueryOperationOrderBy=c},36211:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SortIterator=void 0;const n=r(76664);class i extends n.TransformIterator{constructor(e,t,r){super(e,r);const n=r&&r.window;this.windowLength=Number.isFinite(n)&&n>0?n:Number.POSITIVE_INFINITY,this.sort=t,this.sorted=[]}_read(e,t){let r,{length:n}=this.sorted;for(;n!==this.windowLength&&(r=this.source.read(),null!==r);){let e,t,i=0,a=n-1;for(;i<=a;)e=Math.trunc((i+a)/2),t=this.sort(r,this.sorted[e]),t<0?i=e+1:t>0?a=e-1:(i=e,a=-1);this.sorted.splice(i,0,r),n++}n===this.windowLength&&this._push(this.sorted.pop()),t()}_flush(e){let{length:t}=this.sorted;for(;t--;)this._push(this.sorted.pop());e()}}t.SortIterator=i},80797:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(97236),t)},79675:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathAlt=void 0;const n=r(43543),i=r(19779),a=r(59510),o=r(76664),s=r(31578);class c extends n.ActorAbstractPath{constructor(e){super(e,s.Algebra.types.ALT)}async runOperation(e,t){const r=e.predicate,s=(await Promise.all(r.input.map((r=>this.mediatorQueryOperation.mediate({context:t,operation:n.ActorAbstractPath.FACTORY.createPath(e.subject,r,e.object,e.graph)}))))).map(a.ActorQueryOperation.getSafeBindings);return{type:"bindings",bindingsStream:new o.UnionIterator(s.map((e=>e.bindingsStream)),{autoStart:!1}),metadata:()=>Promise.all(s.map((e=>e.metadata()))).then((e=>i.ActorQueryOperationUnion.unionMetadata(e,!0,t,this.mediatorRdfMetadataAccumulate)))}}}t.ActorQueryOperationPathAlt=c},16733:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(79675),t)},21471:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathInv=void 0;const n=r(43543),i=r(31578);class a extends n.ActorAbstractPath{constructor(e){super(e,i.Algebra.types.INV)}async runOperation(e,t){const r=e.predicate,i=n.ActorAbstractPath.FACTORY.createPath(e.object,r.path,e.subject,e.graph);return this.mediatorQueryOperation.mediate({operation:i,context:t})}}t.ActorQueryOperationPathInv=a},88317:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(21471),t)},60333:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathLink=void 0;const n=r(43543),i=r(31578);class a extends n.ActorAbstractPath{constructor(e){super(e,i.Algebra.types.LINK)}async runOperation(e,t){const r=e.predicate,i=Object.assign(n.ActorAbstractPath.FACTORY.createPattern(e.subject,r.iri,e.object,e.graph),{metadata:r.metadata});return this.mediatorQueryOperation.mediate({operation:i,context:t})}}t.ActorQueryOperationPathLink=a},91430:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(60333),t)},62203:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathNps=void 0;const n=r(43543),i=r(59510),a=r(31578);class o extends n.ActorAbstractPath{constructor(e){super(e,a.Algebra.types.NPS)}async runOperation(e,t){const r=e.predicate,a=this.generateVariable(e),o=Object.assign(n.ActorAbstractPath.FACTORY.createPattern(e.subject,a,e.object,e.graph),{metadata:r.metadata}),s=i.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:o,context:t}));return{type:"bindings",bindingsStream:s.bindingsStream.map((e=>r.iris.some((t=>t.equals(e.get(a))))?null:e.delete(a))),metadata:s.metadata}}}t.ActorQueryOperationPathNps=o},56993:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(62203),t)},82265:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathOneOrMore=void 0;const n=r(43543),i=r(91674),a=r(59510),o=r(76664),s=r(31578);class c extends n.ActorAbstractPath{constructor(e){super(e,s.Algebra.types.ONE_OR_MORE_PATH)}async runOperation(e,t){const r=await i.BindingsFactory.create(this.mediatorMergeBindingsContext,t),s=await this.isPathArbitraryLengthDistinct(t,e);if(s.operation)return s.operation;t=s.context;const c=e.predicate;if("Variable"!==e.subject.termType&&"Variable"===e.object.termType){const n=e.object,i=await this.getObjectsPredicateStarEval(e.subject,c.path,n,e.graph,t,!1,r),a="Variable"===e.graph.termType?[n,e.graph]:[n];return{type:"bindings",bindingsStream:i.bindingsStream,metadata:async()=>({...await i.metadata(),variables:a})}}if("Variable"===e.subject.termType&&"Variable"===e.object.termType){const i=n.ActorAbstractPath.FACTORY.createDistinct(n.ActorAbstractPath.FACTORY.createPath(e.subject,e.predicate.path,e.object,e.graph)),s=a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:t,operation:i})),u=e.subject,l=e.object,d={},p=new o.MultiTransformIterator(s.bindingsStream,{multiTransform:n=>{const i=n.get(u),a=n.get(l),s="Variable"===e.graph.termType?n.get(e.graph):e.graph;return new o.TransformIterator((async()=>{const n=new o.BufferedIterator;return await this.getSubjectAndObjectBindingsPredicateStar(u,l,i,a,c.path,s,t,d,{},n,{count:0},r),n.transform({transform(t,r,n){"Variable"===e.graph.termType&&(t=t.set(e.graph,s)),n(t),r()}})}),{maxBufferSize:128})},autoStart:!1}),h="Variable"===e.graph.termType?[u,l,e.graph]:[u,l];return{type:"bindings",bindingsStream:p,metadata:async()=>({...await s.metadata(),variables:h})}}if("Variable"===e.subject.termType&&"Variable"!==e.object.termType)return this.mediatorQueryOperation.mediate({context:t,operation:n.ActorAbstractPath.FACTORY.createPath(e.object,n.ActorAbstractPath.FACTORY.createOneOrMorePath(n.ActorAbstractPath.FACTORY.createInv(c.path)),e.subject,e.graph)});const u=this.generateVariable(),l=a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:t,operation:n.ActorAbstractPath.FACTORY.createPath(e.subject,c,u,e.graph)}));return{type:"bindings",bindingsStream:l.bindingsStream.transform({filter:t=>e.object.equals(t.get(u)),transform(t,n,i){i("Variable"===e.graph.termType?r.bindings([[e.graph,t.get(e.graph)]]):r.bindings()),n()}}),metadata:async()=>({...await l.metadata(),variables:"Variable"===e.graph.termType?[e.graph]:[]})}}}t.ActorQueryOperationPathOneOrMore=c},90658:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(82265),t)},64747:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathSeq=void 0;const n=r(43543),i=r(59510),a=r(31578);class o extends n.ActorAbstractPath{constructor(e){super(e,a.Algebra.types.SEQ)}async runOperation(e,t){const r=e.predicate;let a=e.subject;const o=[],s=await Promise.all(r.input.map(((i,s)=>{const c=s===r.input.length-1?e.object:this.generateVariable(e,`b${s}`),u=n.ActorAbstractPath.FACTORY.createPath(a,i,c,e.graph),l=this.mediatorQueryOperation.mediate({context:t,operation:u});return a=c,s({output:i.ActorQueryOperation.getSafeBindings(await e),operation:t})))),c=i.ActorQueryOperation.getSafeBindings(await this.mediatorJoin.mediate({type:"inner",entries:s,context:t}));return{type:"bindings",bindingsStream:c.bindingsStream.transform({transform(e,t,r){for(const t of o)e=e.delete(t);r(e),t()}}),async metadata(){const e=await c.metadata(),t=e.variables.filter((e=>!o.some((t=>t.value===e.value))));return{...e,variables:t}}}}}t.ActorQueryOperationPathSeq=o},28261:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(64747),t)},68037:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathZeroOrMore=void 0;const n=r(43543),i=r(91674),a=r(59510),o=r(76664),s=r(22112),c=r(31578);class u extends n.ActorAbstractPath{constructor(e){super(e,c.Algebra.types.ZERO_OR_MORE_PATH)}async runOperation(e,t){const r=await i.BindingsFactory.create(this.mediatorMergeBindingsContext,t),c=await this.isPathArbitraryLengthDistinct(t,e);if(c.operation)return c.operation;t=c.context;const u=e.predicate,l=this.getPathSources(u),d="Variable"===e.subject.termType,p="Variable"===e.object.termType;if("Variable"===e.subject.termType&&"Variable"===e.object.termType){const i=this.generateVariable(e),c=this.assignPatternSources(n.ActorAbstractPath.FACTORY.createPattern(e.subject,i,e.object,e.graph),l),d=a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:t,operation:c})),p=e.subject,h=e.object,f=new Set,y={},g=new o.MultiTransformIterator(d.bindingsStream,{multiTransform:n=>{const i=n.get(p),a=n.get(h),c="Variable"===e.graph.termType?n.get(e.graph):e.graph,l=(0,s.termToString)(i)+(0,s.termToString)(c),d=(0,s.termToString)(a)+(0,s.termToString)(c);return new o.TransformIterator((async()=>{if(f.has(l)&&f.has(d))return new o.EmptyIterator;const n=new o.BufferedIterator,s={count:0};return f.has(l)||(f.add(l),await this.getSubjectAndObjectBindingsPredicateStar(p,h,i,i,u.path,c,t,y,{},n,s,r)),f.has(d)||(f.add(d),await this.getSubjectAndObjectBindingsPredicateStar(p,h,a,a,u.path,c,t,y,{},n,s,r)),n.transform({transform(t,r,n){"Variable"===e.graph.termType&&(t=t.set(e.graph,c)),n(t),r()}})}))}}),m="Variable"===e.graph.termType?[p,e.object,e.graph]:[p,e.object];return{type:"bindings",bindingsStream:g,metadata:async()=>({...await d.metadata(),variables:m})}}if(!d&&!p){const n=this.generateVariable(),i=await this.getObjectsPredicateStarEval(e.subject,u.path,n,e.graph,t,!0,r);return{type:"bindings",bindingsStream:i.bindingsStream.transform({filter:t=>e.object.equals(t.get(n)),transform(t,n,i){i("Variable"===e.graph.termType?r.bindings([[e.graph,t.get(e.graph)]]):r.bindings()),n()}}),metadata:async()=>({...await i.metadata(),variables:"Variable"===e.graph.termType?[e.graph]:[]})}}const h=d?e.object:e.subject,f=d?e.subject:e.object,y=d?n.ActorAbstractPath.FACTORY.createInv(u.path):u.path,g=await this.getObjectsPredicateStarEval(h,y,f,e.graph,t,!0,r),m="Variable"===e.graph.termType?[f,e.graph]:[f];return{type:"bindings",bindingsStream:g.bindingsStream,metadata:async()=>({...await g.metadata(),variables:m})}}}t.ActorQueryOperationPathZeroOrMore=u},60436:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(68037),t)},81231:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathZeroOrOne=void 0;const n=r(43543),i=r(91674),a=r(59510),o=r(72394),s=r(76664),c=r(31578);class u extends n.ActorAbstractPath{constructor(e){super(e,c.Algebra.types.ZERO_OR_ONE_PATH)}async runOperation(e,t){const r=await i.BindingsFactory.create(this.mediatorMergeBindingsContext,t),c=e.predicate,u=this.getPathSources(c),l=[];if("Variable"!==e.subject.termType&&"Variable"!==e.object.termType&&e.subject.equals(e.object))return{type:"bindings",bindingsStream:new s.SingletonIterator(r.bindings()),metadata:()=>Promise.resolve({state:new o.MetadataValidationState,cardinality:{type:"exact",value:1},canContainUndefs:!1,variables:[]})};const d=await this.isPathArbitraryLengthDistinct(t,e);if(d.operation)return d.operation;t=d.context;const p=a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:t,operation:n.ActorAbstractPath.FACTORY.createPath(e.subject,c.path,e.object,e.graph)}));let h;if("Variable"===e.subject.termType&&"Variable"===e.object.termType){const r=this.generateVariable(e),i=a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:t,operation:n.ActorAbstractPath.FACTORY.createFilter(this.assignPatternSources(n.ActorAbstractPath.FACTORY.createPattern(e.subject,r,e.object,e.graph),u),n.ActorAbstractPath.FACTORY.createOperatorExpression("=",[n.ActorAbstractPath.FACTORY.createTermExpression(e.subject),n.ActorAbstractPath.FACTORY.createTermExpression(e.object)]))})).bindingsStream.map((e=>e.delete(r)));h=new s.UnionIterator([i,p.bindingsStream],{autoStart:!1})}else"Variable"===e.subject.termType&&l.push(r.bindings([[e.subject,e.object]])),"Variable"===e.object.termType&&l.push(r.bindings([[e.object,e.subject]])),h=p.bindingsStream.prepend(l);return{type:"bindings",bindingsStream:h,metadata:p.metadata}}}t.ActorQueryOperationPathZeroOrOne=u},32091:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(81231),t)},1892:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationProject=void 0;const n=r(59510),i=r(85156),a=new(r(18050).DataFactory);class o extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"project")}async testOperation(e,t){return!0}async runOperation(e,t){const r=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:e.input,context:t})),o=await r.metadata(),s=e.variables,c=o.variables.filter((e=>!s.some((t=>e.value===t.value))));s.filter((e=>!o.variables.some((t=>e.value===t.value)))).length>0&&(o.canContainUndefs=!0);let u=0===c.length?r.bindingsStream:r.bindingsStream.map((e=>{for(const t of c)e=e.delete(t);return e})),l=0;return u=u.map((e=>{l++;const t=new Map;return e.map((e=>{if(e instanceof i.BlankNodeBindingsScoped){let r=t.get(e.value);return r||(r=a.blankNode(`${e.value}${l}`),t.set(e.value,r)),r}return e}))})),{type:"bindings",bindingsStream:u,metadata:async()=>({...o,variables:s})}}}t.ActorQueryOperationProject=o},98893:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(1892),t)},17015:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationReducedHash=void 0;const n=r(59510),i=r(35069);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"reduced")}async testOperation(e,t){return!0}async runOperation(e,t){const r=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:e.input,context:t}));return{type:"bindings",bindingsStream:r.bindingsStream.filter(await this.newHashFilter(t)),metadata:r.metadata}}async newHashFilter(e){const{hashFunction:t}=await this.mediatorHashBindings.mediate({allowHashCollisions:!0,context:e}),r=new i.LRUCache({max:this.cacheSize});return e=>{const n=t(e);return!r.has(n)&&(r.set(n,!0),!0)}}}t.ActorQueryOperationReducedHash=a},16909:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(17015),t)},45152:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationService=void 0;const n=r(91674),i=r(59510),a=r(72394),o=r(76664);class s extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"service")}async testOperation(e,t){if("NamedNode"!==e.name.termType)throw new Error(`${this.name} can only query services by IRI, while a ${e.name.termType} was given.`);return!0}async runOperation(e,t){const{querySource:r}=await this.mediatorQuerySourceIdentify.mediate({querySourceUnidentified:{value:e.name.value,type:this.forceSparqlEndpoint?"sparql":void 0},context:t});let s;try{s=i.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:i.ActorQueryOperation.assignOperationSource(e.input,r),context:t}))}catch(r){if(!e.silent)throw r;{const e=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);s={bindingsStream:new o.SingletonIterator(e.bindings()),type:"bindings",metadata:async()=>({state:new a.MetadataValidationState,cardinality:{type:"exact",value:1},canContainUndefs:!1,variables:[]})},this.logWarn(t,`An error occurred when executing a SERVICE clause: ${r.message}`)}}return s}}t.ActorQueryOperationService=s},89375:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(45152),t)},28746:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationSlice=void 0;const n=r(59510),i=r(32227);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"slice")}async testOperation(e,t){return!0}async runOperation(e,t){e.length&&(t=t.set(i.KeysQueryOperation.limitIndicator,e.length));const r=await this.mediatorQueryOperation.mediate({operation:e.input,context:t});return"bindings"===r.type?{type:"bindings",bindingsStream:this.sliceStream(r.bindingsStream,e),metadata:this.sliceMetadata(r,e)}:"quads"===r.type?{type:"quads",quadStream:this.sliceStream(r.quadStream,e),metadata:this.sliceMetadata(r,e)}:r}sliceStream(e,t){const r=Boolean(t.length)||0===t.length,{start:n}=t,i=r?t.start+t.length-1:Number.POSITIVE_INFINITY;return e.transform({offset:n,limit:Math.max(i-n+1,0),autoStart:!1})}sliceMetadata(e,t){const r=Boolean(t.length)||0===t.length;return()=>e.metadata().then((e=>{const n={...e.cardinality};return Number.isFinite(n.value)&&(n.value=Math.max(0,n.value-t.start),r&&(n.value=Math.min(n.value,t.length))),{...e,cardinality:n}}))}}t.ActorQueryOperationSlice=a},14922:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(28746),t)},23920:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationSource=void 0;const n=r(59510),i=r(32227),a=r(72394),o=r(31578);class s extends n.ActorQueryOperation{constructor(e){super(e)}async test(e){if(!n.ActorQueryOperation.getOperationSource(e.operation))throw new Error(`Actor ${this.name} requires an operation with source annotation.`);return{httpRequests:1}}async run(e){const t=e.context.get(i.KeysInitQuery.physicalQueryPlanLogger);t&&(t.logOperation(e.operation.type,void 0,e.operation,e.context.get(i.KeysInitQuery.physicalQueryPlanNode),this.name,{}),e.context=e.context.set(i.KeysInitQuery.physicalQueryPlanNode,e.operation));const r=n.ActorQueryOperation.getOperationSource(e.operation),s=r.context?e.context.merge(r.context):e.context;let c=!1;if(o.Util.recurseOperation(e.operation,{construct:()=>(c=!0,!1)}),c){const t=r.source.queryQuads(e.operation,s);return{type:"quads",quadStream:t,metadata:(0,a.getMetadataQuads)(t)}}switch(e.operation.type){case o.Algebra.types.ASK:return{type:"boolean",execute:()=>r.source.queryBoolean(e.operation,s)};case o.Algebra.types.COMPOSITE_UPDATE:case o.Algebra.types.DELETE_INSERT:case o.Algebra.types.LOAD:case o.Algebra.types.CLEAR:case o.Algebra.types.CREATE:case o.Algebra.types.DROP:case o.Algebra.types.ADD:case o.Algebra.types.MOVE:case o.Algebra.types.COPY:return{type:"void",execute:()=>r.source.queryVoid(e.operation,s)}}const u=r.source.queryBindings(e.operation,s);return{type:"bindings",bindingsStream:u,metadata:(0,a.getMetadataBindings)(u)}}}t.ActorQueryOperationSource=s},26933:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(23920),t)},47312:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationUnion=void 0;const n=r(59510),i=r(72394),a=r(76664),o=r(13252);class s extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"union")}static unionVariables(e){return(0,o.uniqTerms)(e.flat())}static async unionMetadata(e,t,r,n){let a=(await n.mediate({mode:"initialize",context:r})).metadata;for(const t of e)a={...t,...(await n.mediate({mode:"append",accumulatedMetadata:a,appendingMetadata:t,context:r})).metadata};a.state=new i.MetadataValidationState;const o=()=>a.state.invalidate();for(const t of e)t.state.addInvalidateListener(o);return t&&(a.variables=s.unionVariables(e.map((e=>e.variables)))),a}async testOperation(e,t){return!0}async runOperation(e,t){const r=await Promise.all(e.input.map((e=>this.mediatorQueryOperation.mediate({operation:e,context:t}))));let i;for(const e of r)if(void 0===i)i=e.type;else if(i!==e.type)throw new Error(`Unable to union ${i} and ${e.type}`);if("bindings"===i||0===e.input.length){const e=r.map(n.ActorQueryOperation.getSafeBindings);return{type:"bindings",bindingsStream:new a.UnionIterator(e.map((e=>e.bindingsStream)),{autoStart:!1}),metadata:()=>Promise.all(e.map((e=>e.metadata()))).then((e=>s.unionMetadata(e,!0,t,this.mediatorRdfMetadataAccumulate)))}}if("quads"===i){const e=r.map(n.ActorQueryOperation.getSafeQuads);return{type:"quads",quadStream:new a.UnionIterator(e.map((e=>e.quadStream)),{autoStart:!1}),metadata:()=>Promise.all(e.map((e=>e.metadata()))).then((e=>s.unionMetadata(e,!1,t,this.mediatorRdfMetadataAccumulate)))}}throw new Error(`Unable to union ${i}`)}}t.ActorQueryOperationUnion=s},19779:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(47312),t)},20808:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationClear=void 0;const n=r(59510),i=new(r(18050).DataFactory);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"clear")}async testOperation(e,t){return n.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){let r;r="DEFAULT"===e.source?i.defaultGraph():"string"==typeof e.source?e.source:[e.source];const{execute:n}=await this.mediatorUpdateQuads.mediate({deleteGraphs:{graphs:r,requireExistence:!e.silent,dropGraphs:!1},context:t});return{type:"void",execute:n}}}t.ActorQueryOperationClear=a},75233:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(20808),t)},8317:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationUpdateCompositeUpdate=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"compositeupdate")}async testOperation(e,t){return n.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){return{type:"void",execute:()=>(async()=>{for(const r of e.updates){const e=n.ActorQueryOperation.getSafeVoid(await this.mediatorQueryOperation.mediate({operation:r,context:t}));await e.execute()}})()}}}t.ActorQueryOperationUpdateCompositeUpdate=i},57886:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(8317),t)},74700:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationCreate=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"create")}async testOperation(e,t){return n.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){const{execute:r}=await this.mediatorUpdateQuads.mediate({createGraphs:{graphs:[e.source],requireNonExistence:!e.silent},context:t});return{type:"void",execute:r}}}t.ActorQueryOperationCreate=i},14876:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(74700),t)},4853:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationUpdateDeleteInsert=void 0;const n=r(88749),i=r(91674),a=r(59510),o=r(76664);class s extends a.ActorQueryOperationTypedMediated{constructor(e){super(e,"deleteinsert"),this.blankNodeCounter=0}async testOperation(e,t){return a.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){const r=await i.BindingsFactory.create(this.mediatorMergeBindingsContext,t),s=e.where?a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:e.where,context:t})).bindingsStream:new o.ArrayIterator([r.bindings()],{autoStart:!1});let c,u;e.insert&&(c=new n.BindingsToQuadsIterator(e.insert.map(n.BindingsToQuadsIterator.localizeQuad.bind(null,this.blankNodeCounter)),s.clone()),this.blankNodeCounter++),e.delete&&(u=new n.BindingsToQuadsIterator(e.delete.map(n.BindingsToQuadsIterator.localizeQuad.bind(null,this.blankNodeCounter)),s.clone()),this.blankNodeCounter++);const{execute:l}=await this.mediatorUpdateQuads.mediate({quadStreamInsert:c,quadStreamDelete:u,context:t});return{type:"void",execute:l}}}t.ActorQueryOperationUpdateDeleteInsert=s},21638:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(4853),t)},53460:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationDrop=void 0;const n=r(59510),i=new(r(18050).DataFactory);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"drop")}async testOperation(e,t){return n.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){let r;r="DEFAULT"===e.source?i.defaultGraph():"string"==typeof e.source?e.source:[e.source];const{execute:n}=await this.mediatorUpdateQuads.mediate({deleteGraphs:{graphs:r,requireExistence:!e.silent,dropGraphs:!0},context:t});return{type:"void",execute:n}}}t.ActorQueryOperationDrop=a},82465:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(53460),t)},86228:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationLoad=void 0;const n=r(59510),i=r(32227),a=r(18050),o=r(31578),s=new a.DataFactory;class c extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"load"),this.factory=new o.Factory}async testOperation(e,t){return n.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){let r=t;e.silent&&(r=r.set(i.KeysInitQuery.lenient,!0));const{querySource:a}=await this.mediatorQuerySourceIdentify.mediate({querySourceUnidentified:{value:e.source.value},context:r});let o=c.getSafeQuads(await this.mediatorQueryOperation.mediate({operation:this.factory.createConstruct(n.ActorQueryOperation.assignOperationSource(this.factory.createPattern(s.variable("s"),s.variable("p"),s.variable("o")),a),[this.factory.createPattern(s.variable("s"),s.variable("p"),s.variable("o"))]),context:r})).quadStream;e.destination&&(o=o.map((t=>s.quad(t.subject,t.predicate,t.object,e.destination))));const{execute:u}=await this.mediatorUpdateQuads.mediate({quadStreamInsert:o,context:t});return{type:"void",execute:u}}}t.ActorQueryOperationLoad=c},29796:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(86228),t)},48236:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationValues=void 0;const n=r(91674),i=r(59510),a=r(72394),o=r(76664),s=new(r(18050).DataFactory);class c extends i.ActorQueryOperationTyped{constructor(e){super(e,"values")}async testOperation(e,t){return!0}async runOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),i=new o.ArrayIterator(e.bindings.map((e=>r.bindings(Object.entries(e).map((([e,t])=>[s.variable(e.slice(1)),t])))))),c=e.variables;return{type:"bindings",bindingsStream:i,metadata:()=>Promise.resolve({state:new a.MetadataValidationState,cardinality:{type:"exact",value:e.bindings.length},canContainUndefs:e.bindings.some((e=>c.some((t=>!(`?${t.value}`in e))))),variables:c})}}}t.ActorQueryOperationValues=c},14702:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(48236),t)},1452:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryParseGraphql=void 0;const n=r(79744),i=r(32227),a=r(1427);class o extends n.ActorQueryParse{constructor(e){super(e),this.graphqlToSparql=new a.Converter({requireContext:!0})}async test(e){if("graphql"!==e.queryFormat?.language)throw new Error("This actor can only parse GraphQL queries");return!0}async run(e){const t=e.context.get(i.KeysInitQuery.jsonLdContext)||{},r={singularizeVariables:e.context.get(i.KeysInitQuery.graphqlSingularizeVariables)};return{operation:await this.graphqlToSparql.graphqlToSparqlAlgebra(e.query,t,r)}}}t.ActorQueryParseGraphql=o},37067:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(1452),t)},6540:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryParseSparql=void 0;const n=r(79744),i=r(31578),a=r(55403);class o extends n.ActorQueryParse{constructor(e){super(e),this.prefixes=Object.freeze(this.prefixes)}async test(e){if(e.queryFormat&&"sparql"!==e.queryFormat.language)throw new Error("This actor can only parse SPARQL queries");return!0}async run(e){const t=new a.Parser({prefixes:this.prefixes,baseIRI:e.baseIRI,sparqlStar:!0}).parse(e.query);return{baseIRI:"query"===t.type?t.base:void 0,operation:(0,i.translate)(t,{quads:!0,prefixes:this.prefixes,blankToVariable:!0,baseIRI:e.baseIRI})}}}t.ActorQueryParseSparql=o},4911:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(6540),t)},27007:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryProcessExplainLogical=void 0;const n=r(59946),i=r(32227),a=r(34368);class o extends n.ActorQueryProcess{constructor(e){super(e)}async test(e){if("logical"!==(e.context.get(i.KeysInitQuery.explain)||e.context.get(new a.ActionContextKey("explain"))))throw new Error(`${this.name} can only explain in 'logical' mode.`);return!0}async run(e){let{operation:t,context:r}=await this.queryProcessor.parse(e.query,e.context);return({operation:t,context:r}=await this.queryProcessor.optimize(t,r)),{result:{explain:!0,type:"logical",data:t}}}}t.ActorQueryProcessExplainLogical=o},70605:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(27007),t)},94725:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryProcessExplainParsed=void 0;const n=r(59946),i=r(32227),a=r(34368);class o extends n.ActorQueryProcess{constructor(e){super(e)}async test(e){if("parsed"!==(e.context.get(i.KeysInitQuery.explain)||e.context.get(new a.ActionContextKey("explain"))))throw new Error(`${this.name} can only explain in 'parsed' mode.`);return!0}async run(e){const{operation:t}=await this.queryProcessor.parse(e.query,e.context);return{result:{explain:!0,type:"parsed",data:t}}}}t.ActorQueryProcessExplainParsed=o},68383:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(94725),t)},25441:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryProcessExplainPhysical=void 0;const n=r(59946),i=r(32227),a=r(34368),o=r(16402);class s extends n.ActorQueryProcess{constructor(e){super(e)}async test(e){const t=e.context.get(i.KeysInitQuery.explain)||e.context.get(new a.ActionContextKey("explain"));if("physical"!==t&&"physical-json"!==t)throw new Error(`${this.name} can only explain in 'physical' or 'physical-json' mode.`);return!0}async run(e){let{operation:t,context:r}=await this.queryProcessor.parse(e.query,e.context);({operation:t,context:r}=await this.queryProcessor.optimize(t,r));const n=new o.MemoryPhysicalQueryPlanLogger;r=r.set(i.KeysInitQuery.physicalQueryPlanLogger,n);const s=await this.queryProcessor.evaluate(t,r);switch(s.type){case"bindings":await s.bindingsStream.toArray();break;case"quads":await s.quadStream.toArray();break;case"boolean":case"void":await s.execute()}const c=e.context.get(i.KeysInitQuery.explain)??e.context.getSafe(new a.ActionContextKey("explain"));return{result:{explain:!0,type:c,data:"physical"===c?n.toCompactString():n.toJson()}}}}t.ActorQueryProcessExplainPhysical=s},16402:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.numberToString=t.MemoryPhysicalQueryPlanLogger=void 0;const n=r(22112);function i(e){return e.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:3})}t.MemoryPhysicalQueryPlanLogger=class{constructor(){this.planNodes=new Map}logOperation(e,t,r,n,i,a){const o={actor:i,logicalOperator:e,physicalOperator:t,rawNode:r,children:[],metadata:a};if(this.planNodes.set(r,o),this.rootNode){if(!n)throw new Error("Detected more than one parent-less node");const e=this.planNodes.get(n);if(!e)throw new Error("Could not find parent node");e.children.push(o)}else{if(n)throw new Error("No root node has been set yet, while a parent is being referenced");this.rootNode=o}}stashChildren(e,t){const r=this.planNodes.get(e);if(!r)throw new Error("Could not find plan node");r.children=t?r.children.filter(t):[]}unstashChild(e,t){const r=this.planNodes.get(e);if(r){const e=this.planNodes.get(t);if(!e)throw new Error("Could not find plan parent node");e.children.push(r)}}appendMetadata(e,t){const r=this.planNodes.get(e);r&&(r.metadata={...r.metadata,...t})}toJson(){return this.rootNode?this.planNodeToJson(this.rootNode):{}}planNodeToJson(e){const t={logical:e.logicalOperator,physical:e.physicalOperator,...this.getLogicalMetadata(e.rawNode),...this.compactMetadata(e.metadata)};if(e.children.length>0&&(t.children=e.children.map((e=>this.planNodeToJson(e)))),"bind"===t.physical&&t.children){const e={};for(const r of t.children){const t=r.children?.at(-1)??r,n=this.getPlanHash(t).join(",");e[n]||(e[n]=[]),e[n].push(r)}const r=[];for(const t of Object.values(e))r.push({occurrences:t.length,firstOccurrence:t[0]});t.childrenCompact=r,delete t.children}return t}getPlanHash(e){let t=[`${e.logical}-${e.physical}`];return e.children?t=[...t,...e.children.flatMap((e=>this.getPlanHash(e)))]:e.childrenCompact&&(t=[...t,...e.childrenCompact.flatMap((e=>this.getPlanHash(e.firstOccurrence)))]),t}compactMetadata(e){return Object.fromEntries(Object.entries(e).map((([e,t])=>[e,this.compactMetadataValue(t)])))}compactMetadataValue(e){return e&&"object"==typeof e&&"termType"in e?this.getLogicalMetadata(e):e}getLogicalMetadata(e){const t={};if("type"in e){const r=e;switch(r.metadata?.scopedSource&&(t.source=r.metadata.scopedSource.source.toString()),r.type){case"pattern":t.pattern=this.quadToString(r);break;case"project":t.variables=r.variables.map((e=>e.value))}}return t}quadToString(e){return`${(0,n.termToString)(e.subject)} ${(0,n.termToString)(e.predicate)} ${(0,n.termToString)(e.object)}${"DefaultGraph"===e.graph.termType?"":` ${(0,n.termToString)(e.graph)}`}`}toCompactString(){const e=this.toJson(),t=[],r=new Map;if("logical"in e?this.nodeToCompactString(t,r,"",e):t.push("Empty"),r.size>0){t.push(""),t.push("sources:");for(const[e,n]of r.entries())t.push(` ${n}: ${e}`)}return t.join("\n")}nodeToCompactString(e,t,r,n,a){let o;n.source&&(o=t.get(n.source),void 0===o&&(o=t.size,t.set(n.source,o))),e.push(`${r}${n.logical}${n.physical?`(${n.physical})`:""}${n.pattern?` (${n.pattern})`:""}${n.variables?` (${n.variables.join(",")})`:""}${n.bindOperation?` bindOperation:(${n.bindOperation.pattern}) bindCardEst:${"estimate"===n.bindOperationCardinality.type?"~":""}${i(n.bindOperationCardinality.value)}`:""}${n.cardinality?` cardEst:${"estimate"===n.cardinality.type?"~":""}${i(n.cardinality.value)}`:""}${n.source?` src:${o}`:""}${n.cardinalityReal?` cardReal:${n.cardinalityReal}`:""}${n.timeSelf?` timeSelf:${i(n.timeSelf)}ms`:""}${n.timeLife?` timeLife:${i(n.timeLife)}ms`:""}${a?` ${a}`:""}`);for(const i of n.children??[])this.nodeToCompactString(e,t,`${r} `,i);for(const i of n.childrenCompact??[])this.nodeToCompactString(e,t,`${r} `,i.firstOccurrence,`compacted-occurrences:${i.occurrences}`)}},t.numberToString=i},54395:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(25441),t),i(r(16402),t)},47604:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryProcessSequential=void 0;const n=r(91674),i=r(59510),a=r(59946),o=r(32227),s=r(34368);class c extends a.ActorQueryProcess{constructor(e){super(e)}async test(e){if(e.context.get(o.KeysInitQuery.explain)||e.context.get(new s.ActionContextKey("explain")))throw new Error(`${this.name} is not able to explain queries.`);return!0}async run(e){let{operation:t,context:r}=await this.parse(e.query,e.context);return({operation:t,context:r}=await this.optimize(t,r)),{result:await this.evaluate(t,r)}}async parse(e,t){let r;if(t=(await this.mediatorContextPreprocess.mediate({context:t,initialize:!0})).context,"string"==typeof e){const n=(t=t.set(o.KeysInitQuery.queryString,e)).get(o.KeysInitQuery.baseIRI),i=t.get(o.KeysInitQuery.queryFormat),a=await this.mediatorQueryParse.mediate({context:t,query:e,queryFormat:i,baseIRI:n});r=a.operation,a.baseIRI&&(t=t.set(o.KeysInitQuery.baseIRI,a.baseIRI))}else r=e;if(t.has(o.KeysInitQuery.initialBindings)){const e=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);r=(0,i.materializeOperation)(r,t.get(o.KeysInitQuery.initialBindings),e),t=t.delete(o.KeysInitQuery.queryString)}return{operation:r,context:t}}async optimize(e,t){return t=t.set(o.KeysInitQuery.query,e),({operation:e,context:t}=await this.mediatorOptimizeQueryOperation.mediate({context:t,operation:e})),{operation:e,context:t=t.set(o.KeysInitQuery.query,e)}}async evaluate(e,t){const r=await this.mediatorQueryOperation.mediate({context:t,operation:e});return r.context=t,r}}t.ActorQueryProcessSequential=c},94739:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(47604),t)},45369:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeJson=void 0;const n=r(22083),i=r(76664),a=r(22112),o=r(58521);class s extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}async testHandleChecked(e,t){if(!["bindings","quads","boolean"].includes(e.type))throw new Error("This actor can only handle bindings or quad streams.");return!0}async runHandle(e,t,r){const n=new o.Readable;if(n._read=()=>{},"bindings"===e.type||"quads"===e.type){let t="bindings"===e.type?(0,i.wrap)(e.bindingsStream).map((e=>JSON.stringify(Object.fromEntries([...e].map((([e,t])=>[e.value,a.termToString(t)])))))):(0,i.wrap)(e.quadStream).map((e=>JSON.stringify(a.quadToStringQuad(e)))),r=!0;t=t.map((e=>{const t=`${r?"":","}\n${e}`;return r=!1,t})).prepend(["["]).append(["\n]\n"]),n.wrap(t)}else try{n.push(`${JSON.stringify(await e.execute())}\n`),n.push(null)}catch(e){setTimeout((()=>n.emit("error",e)))}return{data:n}}}t.ActorQueryResultSerializeJson=s},91875:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(45369),t)},2703:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeRdf=void 0;const n=r(22083);class i extends n.ActorQueryResultSerialize{constructor(e){super(e)}async testHandle(e,t,r){if("quads"!==e.type)throw new Error(`Actor ${this.name} can only handle quad streams`);const{mediaTypes:n}=await this.mediatorMediaTypeCombiner.mediate({context:r,mediaTypes:!0});if(!(t in n))throw new Error(`Actor ${this.name} can not handle media type ${t}. All available types: ${Object.keys(n)}`);return!0}async runHandle(e,t,r){return(await this.mediatorRdfSerialize.mediate({context:r,handle:{context:r,quadStream:e.quadStream},handleMediaType:t})).handle}async testMediaType(e){return!0}async getMediaTypes(e){return(await this.mediatorMediaTypeCombiner.mediate({context:e,mediaTypes:!0})).mediaTypes}async testMediaTypeFormats(e){return!0}async getMediaTypeFormats(e){return(await this.mediatorMediaTypeFormatCombiner.mediate({context:e,mediaTypeFormats:!0})).mediaTypeFormats}}t.ActorQueryResultSerializeRdf=i},63543:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(2703),t)},6301:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeSimple=void 0;const n=r(22083),i=r(76664),a=r(22112),o=r(58521);class s extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}async testHandleChecked(e,t){if(!["bindings","quads","boolean","void"].includes(e.type))throw new Error("This actor can only handle bindings streams, quad streams, booleans, or updates.");return!0}static termToString(e){return"Quad"===e.termType?(0,a.termToString)(e):e.value}async runHandle(e,t,r){const n=new o.Readable;return"bindings"===e.type?n.wrap(e.bindingsStream.map((e=>`${[...e].map((([e,t])=>`?${e.value}: ${s.termToString(t)}`)).join("\n")}\n\n`))):"quads"===e.type?n.wrap(e.quadStream.map((e=>`subject: ${s.termToString(e.subject)}\npredicate: ${s.termToString(e.predicate)}\nobject: ${s.termToString(e.object)}\ngraph: ${s.termToString(e.graph)}\n\n`))):n.wrap((0,i.wrap)("boolean"===e.type?e.execute().then((e=>[`${e}\n`])):e.execute().then((()=>["ok\n"])))),{data:n}}}t.ActorQueryResultSerializeSimple=s},96791:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(6301),t)},54438:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeSparqlCsv=void 0;const n=r(22083),i=r(58521);class a extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}static bindingToCsvBindings(e){if(!e)return"";let t=e.value;if("Literal"===e.termType)t=`${t}`;else if("BlankNode"===e.termType)t=`_:${t}`;else if("Quad"===e.termType){let r=a.bindingToCsvBindings(e.object);"Literal"===e.object.termType&&(r=`"${r.replaceAll('"','""')}"`),t=`<< ${a.bindingToCsvBindings(e.subject)} ${a.bindingToCsvBindings(e.predicate)} ${r} >>`}else t=`<${t}>`;return/[",\n\r]/u.test(t)&&(t=`"${t.replaceAll('"','""')}"`),t}async testHandleChecked(e,t){if("bindings"!==e.type)throw new Error("This actor can only handle bindings streams.");return!0}async runHandle(e,t,r){const n=e,o=new i.Readable,s=await n.metadata();return o.push(`${s.variables.map((e=>e.value)).join(",")}\r\n`),o.wrap(n.bindingsStream.map((e=>`${s.variables.map((t=>a.bindingToCsvBindings(e.get(t)))).join(",")}\r\n`))),{data:o}}}t.ActorQueryResultSerializeSparqlCsv=a},34357:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(54438),t)},21437:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActionObserverHttp=void 0;const n=r(34368);class i extends n.ActionObserver{constructor(e){super(e),this.requests=0,this.bus.subscribeObserver(this),this.httpInvalidator.addInvalidateListener((()=>{this.requests=0}))}onRun(e,t,r){this.requests++}}t.ActionObserverHttp=i},47670:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeSparqlJson=void 0;const n=r(22083),i=r(76664),a=r(58521);class o extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}static bindingToJsonBindings(e){if("Literal"===e.termType){const t=e,r={value:t.value,type:"literal"},{language:n,datatype:i}=t;return n?r["xml:lang"]=n:i&&"http://www.w3.org/2001/XMLSchema#string"!==i.value&&(r.datatype=i.value),r}return"BlankNode"===e.termType?{value:e.value,type:"bnode"}:"Quad"===e.termType?{value:{subject:o.bindingToJsonBindings(e.subject),predicate:o.bindingToJsonBindings(e.predicate),object:o.bindingToJsonBindings(e.object)},type:"triple"}:{value:e.value,type:"uri"}}async testHandleChecked(e,t){if(!["bindings","boolean"].includes(e.type))throw new Error("This actor can only handle bindings streams or booleans.");return!0}async runHandle(e,t,r){const n=new a.Readable,s={};if("bindings"===e.type){const c=await e.metadata();c.variables.length>0&&(s.vars=c.variables.map((e=>e.value)))}if(n.push(`{"head": ${JSON.stringify(s)},\n`),"bindings"===e.type){const u=e.bindingsStream;n.push('"results": { "bindings": [\n');let l=!0;function*d(e){yield e()}n.wrap((0,i.wrap)(u).map((e=>{const t=`${l?"":",\n"}${JSON.stringify(Object.fromEntries([...e].map((([e,t])=>[e.value,o.bindingToJsonBindings(t)]))))}`;return l=!1,t})).append((0,i.wrap)(d((()=>`\n]}${this.emitMetadata?`,\n"metadata": { "httpRequests": ${this.httpObserver.requests} }`:""}}\n`)))))}else n.wrap((0,i.wrap)(e.execute().then((e=>[`"boolean":${e}\n}\n`]))));return{data:n}}}t.ActorQueryResultSerializeSparqlJson=o},34593:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(21437),t),i(r(47670),t)},60096:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeSparqlTsv=void 0;const n=r(22083),i=r(64817),a=r(58521);class o extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}static bindingToTsvBindings(e){return e?(0,i.termToString)(e).replaceAll("\t","\\t").replaceAll("\n","\\n").replaceAll("\r","\\r"):""}async testHandleChecked(e,t){if("bindings"!==e.type)throw new Error("This actor can only handle bindings streams.");return!0}async runHandle(e,t,r){const n=e,i=new a.Readable,s=await n.metadata();return i.push(`${s.variables.map((e=>e.value)).join("\t")}\n`),i.wrap(n.bindingsStream.map((e=>`${s.variables.map((t=>o.bindingToTsvBindings(e.get(t)))).join("\t")}\n`))),{data:i}}}t.ActorQueryResultSerializeSparqlTsv=o},78432:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(60096),t)},83668:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeSparqlXml=void 0;const n=r(22083),i=r(76664),a=r(58521),o=r(72825);class s extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}static bindingToXmlBindings(e,t){return{name:"binding",attributes:{name:t.value},children:[this.valueToXmlValue(e)]}}static valueToXmlValue(e){let t;switch(e.termType){case"Literal":return t=e.language?{"xml:lang":e.language}:e.datatype&&"http://www.w3.org/2001/XMLSchema#string"!==e.datatype.value?{datatype:e.datatype.value}:{},{name:"literal",attributes:t,children:e.value};case"BlankNode":return{name:"bnode",children:e.value};case"Quad":return{name:"triple",children:[{name:"subject",children:[this.valueToXmlValue(e.subject)]},{name:"predicate",children:[this.valueToXmlValue(e.predicate)]},{name:"object",children:[this.valueToXmlValue(e.object)]}]};default:return{name:"uri",children:e.value}}}async testHandleChecked(e,t){if(!["bindings","boolean"].includes(e.type))throw new Error("This actor can only handle bindings streams or booleans.");return!0}async runHandle(e,t,r){const n=new a.Readable;n._read=()=>{};const c=new o.XmlSerializer,u=await e.metadata();if(n.push(o.XmlSerializer.header),n.push(c.open("sparql",{xmlns:"http://www.w3.org/2005/sparql-results#"})),n.push(c.serializeNode({name:"head",children:u.variables.map((e=>({name:"variable",attributes:{name:e.value}})))})),"bindings"===e.type){function*l(){yield c.close(),yield c.close()}n.push(c.open("results"));const d=(0,i.wrap)(e.bindingsStream).map((e=>c.serializeNode({name:"result",children:[...e].map((([e,t])=>s.bindingToXmlBindings(t,e)))}))).append((0,i.wrap)(l()));n.wrap(d)}else try{const p=await e.execute();n.push(c.serializeNode({name:"boolean",children:p.toString()})),n.push(c.close()),setTimeout((()=>n.push(null)))}catch(h){setTimeout((()=>n.emit("error",h)))}return{data:n}}}t.ActorQueryResultSerializeSparqlXml=s},72825:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.XmlSerializer=void 0;class r{constructor(){this.stack=[]}open(e,t){const r=`${this.identation()+this.formatTag(e,t,"open")}\n`;return this.stack.push(e),r}close(){const e=this.stack.pop();if(void 0===e)throw new Error("There is no tag left to close");return`${this.identation()+this.formatTag(e,{},"close")}\n`}serializeNode(e){if(void 0===e.children)return`${this.identation()+this.formatTag(e.name,e.attributes,"self-closing")}\n`;if("string"==typeof e.children)return`${this.identation()+this.formatTag(e.name,e.attributes,"open")+this.escape(e.children)+this.formatTag(e.name,{},"close")}\n`;const t=[];t.push(`${this.identation()+this.formatTag(e.name,e.attributes,"open")}\n`),this.stack.push(e.name);for(const r of e.children)t.push(this.serializeNode(r));return this.stack.pop(),t.push(`${this.identation()+this.formatTag(e.name,{},"close")}\n`),t.join("")}identation(){return this.stack.map((e=>" ")).join("")}formatTag(e,t,r){return`<${"close"===r?"/":""}${e}${Object.entries(t??{}).map((e=>` ${e[0]}="${this.escape(e[1])}"`))}${"self-closing"===r?"/":""}>`}escape(e){return e.replaceAll(/["&'<>]/gu,(e=>{switch(e){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case'"':return"""}}))}}t.XmlSerializer=r,r.header='\n'},68596:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(83668),t)},1990:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActionObserverHttp=void 0;const n=r(34368);class i extends n.ActionObserver{constructor(e){super(e),this.requests=0,this.bus.subscribeObserver(this),this.httpInvalidator.addInvalidateListener((()=>{this.requests=0}))}onRun(e,t,r){this.requests++}}t.ActionObserverHttp=i},28541:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeStats=void 0;const n=r(22083),i=r(76664),a=r(58521),o=r(39907);class s extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}async testHandleChecked(e,t){if(!["bindings","quads"].includes(e.type))throw new Error("This actor can only handle bindings streams or quad streams.");return!0}pushHeader(e){const t=["Result","Delay (ms)","HTTP requests"].join(",");e.push(`${t}\n`)}createStat(e,t){return`${[t,this.delay(e),this.httpObserver.requests].join(",")}\n`}createFooter(e){return`${["TOTAL",this.delay(e),this.httpObserver.requests].join(",")}\n`}async runHandle(e,t,r){const n=new a.Readable,o="bindings"===e.type?e.bindingsStream:e.quadStream,s=this.now();let c=1;const u=(0,i.wrap)(o).map((()=>this.createStat(s,c++))).append((0,i.wrap)(function*(e){yield e()}((()=>this.createFooter(s)))));return this.pushHeader(n),n.wrap(u),{data:n}}now(){if("undefined"==typeof performance){const e=o.hrtime();return 1e3*e[0]+e[1]/1e6}return performance.now()}delay(e){return this.now()-e}}t.ActorQueryResultSerializeStats=s},13900:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(1990),t),i(r(28541),t)},42787:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeTable=void 0;const n=r(22083),i=r(18050),a=r(22112),o=r(13252),s=r(58521),c=new i.DataFactory,u=o.QUAD_TERM_NAMES.map((e=>c.variable(e)));class l extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e),this.padding=l.repeat(" ",this.columnWidth)}static repeat(e,t){return e.repeat(t)}async testHandleChecked(e,t){if(!["bindings","quads"].includes(e.type))throw new Error("This actor can only handle bindings or quad streams.");return!0}termToString(e){return"Quad"===e.termType?(0,a.termToString)(e):e.value}pad(e){return e.length<=this.columnWidth?e+this.padding.slice(e.length):`${e.slice(0,this.columnWidth-1)}…`}pushHeader(e,t){const r=t.map((e=>this.pad(e.value))).join(" ");e.push(`${r}\n${l.repeat("-",r.length)}\n`)}createRow(e,t){return`${e.map((e=>t.has(e)?this.termToString(t.get(e)):"")).map((e=>this.pad(e))).join(" ")}\n`}async runHandle(e,t,r){const n=new s.Readable;let i;if("bindings"===e.type){i=e.bindingsStream.map((e=>this.createRow(t,e)));const t=(await e.metadata()).variables;this.pushHeader(n,t)}else i=e.quadStream.map((e=>`${(0,o.getTerms)(e).map((e=>this.pad(this.termToString(e)))).join(" ")}\n`)),this.pushHeader(n,u);return n.wrap(i),{data:n}}}t.ActorQueryResultSerializeTable=l},59655:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(42787),t)},71445:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeTree=void 0;const n=r(22083),i=r(32227),a=r(34368),o=r(58521),s=r(43004);class c extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}static async bindingsStreamToGraphQl(e,t,r){const n=a.ActionContext.ensureActionContext(t),o=new s.Converter(r),c={singularizeVariables:n.get(i.KeysInitQuery.graphqlSingularizeVariables)??{}};return o.bindingsToTree(await e.map((e=>Object.fromEntries([...e].map((([e,t])=>[e.value,t]))))).toArray(),c)}async testHandleChecked(e){if("bindings"!==e.type)throw new Error("This actor can only handle bindings streams.");return!0}async runHandle(e,t){const r=new o.Readable;return r._read=()=>{r._read=()=>{},c.bindingsStreamToGraphQl(e.bindingsStream,e.context,{materializeRdfJsTerms:!0}).then((e=>{r.push(JSON.stringify(e,null," ")),r.push(null)})).catch((e=>r.emit("error",e)))},{data:r}}}t.ActorQueryResultSerializeTree=c},70017:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.bindingsStreamToGraphQl=void 0;const a=r(71445),{bindingsStreamToGraphQl:o}=a.ActorQueryResultSerializeTree;t.bindingsStreamToGraphQl=o,i(r(71445),t)},33606:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyHypermediaNone=void 0;const n=r(27474),i=r(91674),a=r(89168),o=r(10953);class s extends a.ActorQuerySourceIdentifyHypermedia{constructor(e){super(e,"file")}async testMetadata(e){return{filterFactor:0}}async run(e){this.logInfo(e.context,`Identified as file source: ${e.url}`);const t=new n.QuerySourceRdfJs(await(0,o.storeStream)(e.quads),await i.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context));return t.toString=()=>`QuerySourceRdfJs(${e.url})`,t.referenceValue=e.url,{source:t}}}t.ActorQuerySourceIdentifyHypermediaNone=s},44538:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(33606),t)},88760:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyHypermediaQpf=void 0;const n=r(91674),i=r(89168),a=r(92591);class o extends i.ActorQuerySourceIdentifyHypermedia{constructor(e){super(e,"qpf")}async test(e){if(e.forceSourceType&&"qpf"!==e.forceSourceType&&"brtpf"!==e.forceSourceType)throw new Error(`Actor ${this.name} is not able to handle source type ${e.forceSourceType}.`);return this.testMetadata(e)}async testMetadata(e){const{searchForm:t}=await this.createSource(e.url,e.metadata,e.context,"brtpf"===e.forceSourceType);if(e.handledDatasets&&e.handledDatasets[t.dataset])throw new Error(`Actor ${this.name} can only be applied for the first page of a QPF dataset.`);return{filterFactor:1}}async run(e){this.logInfo(e.context,`Identified as qpf source: ${e.url}`);const t=await this.createSource(e.url,e.metadata,e.context,"brtpf"===e.forceSourceType,e.quads);return{source:t,dataset:t.searchForm.dataset}}async createSource(e,t,r,i,o){return new a.QuerySourceQpf(this.mediatorMetadata,this.mediatorMetadataExtract,this.mediatorDereferenceRdf,await n.BindingsFactory.create(this.mediatorMergeBindingsContext,r),this.subjectUri,this.predicateUri,this.objectUri,this.graphUri,e,t,i,o)}}t.ActorQuerySourceIdentifyHypermediaQpf=o},92591:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySourceQpf=void 0;const n=r(65483),i=r(32227),a=r(72394),o=r(76664),s=r(18050),c=r(22112),u=r(64817),l=r(13252),d=new(r(31578).Factory),p=new s.DataFactory;class h{constructor(e,t,r,n,i,s,c,u,l,d,h,f){this.referenceValue=l,this.mediatorMetadata=e,this.mediatorMetadataExtract=t,this.mediatorDereferenceRdf=r,this.bindingsFactory=n,this.subjectUri=i,this.predicateUri=s,this.objectUri=c,this.graphUri=u,this.url=l,this.bindingsRestricted=h,this.cachedQuads={};const y=this.getSearchForm(d);if(!y)throw new Error("Illegal state: found no TPF/QPF search form anymore in metadata.");if(this.searchForm=y,this.defaultGraph=d.defaultGraph?p.namedNode(d.defaultGraph):void 0,f){let e=(0,o.wrap)(f);this.defaultGraph&&(e=this.reverseMapQuadsToDefaultGraph(e)),d={...d,state:new a.MetadataValidationState},e.setProperty("metadata",d),this.cacheQuads(e,p.variable(""),p.variable(""),p.variable(""),p.variable(""))}}async getSelectorShape(){return this.bindingsRestricted?h.SELECTOR_SHAPE_BR:h.SELECTOR_SHAPE}queryBindings(e,t,r){if("pattern"!==e.type)throw new Error(`Attempted to pass non-pattern operation '${e.type}' to QuerySourceQpf`);const a=Boolean(t.get(i.KeysQueryOperation.unionDefaultGraph));let o=this.match(e.subject,e.predicate,e.object,e.graph,a,t,r);return o=(0,n.filterMatchingQuotedQuads)(e,o),(0,n.quadsToBindings)(o,e,this.bindingsFactory,a)}getSearchForm(e){if(!e.searchForms||!e.searchForms.values)return;const{searchForms:t}=e;for(const e of t.values){if(this.graphUri&&this.subjectUri in e.mappings&&this.predicateUri in e.mappings&&this.objectUri in e.mappings&&this.graphUri in e.mappings&&4===Object.keys(e.mappings).length)return e;if(this.subjectUri in e.mappings&&this.predicateUri in e.mappings&&this.objectUri in e.mappings&&3===Object.keys(e.mappings).length)return e}}createFragmentUri(e,t,r,n,i){const a={},o=[{uri:this.subjectUri,term:t},{uri:this.predicateUri,term:r},{uri:this.objectUri,term:n},{uri:this.graphUri,term:i}];for(const e of o)e.uri&&(this.bindingsRestricted||"Variable"!==e.term.termType&&("Quad"!==e.term.termType||(0,l.everyTermsNested)(e.term,(e=>"Variable"!==e.termType))))&&(a[e.uri]=(0,c.termToString)(e.term));return e.getUri(a)}match(e,t,r,n,i,s,c){let u=!1;if("DefaultGraph"===n.termType)if(this.defaultGraph)u=!0,n=this.defaultGraph;else if(4!==Object.keys(this.searchForm.mappings).length||this.defaultGraph)3===Object.keys(this.searchForm.mappings).length&&(n=p.variable("g"));else{if(!i){const e=new o.ArrayIterator([],{autoStart:!1});return e.setProperty("metadata",{state:new a.MetadataValidationState,requestTime:0,cardinality:{type:"exact",value:0},first:null,next:null,last:null,canContainUndefs:!1}),e}n=p.variable("g")}if(!c?.filterBindings){const i=this.getCachedQuads(e,t,r,n);if(i)return i}const d=this;let h;const f=async function(){let i=d.createFragmentUri(d.searchForm,e,t,r,n);c?.filterBindings&&(i=await d.getBindingsRestrictedLink(e,t,r,n,i,c.filterBindings));const o=await d.mediatorDereferenceRdf.mediate({context:s,url:i});i=o.url;const u=await d.mediatorMetadata.mediate({context:s,url:i,quads:o.data,triples:o.metadata?.triples}),{metadata:l}=await d.mediatorMetadataExtract.mediate({context:s,url:i,metadata:u.metadata,requestTime:o.requestTime});return h.setProperty("metadata",{...l,state:new a.MetadataValidationState,canContainUndefs:!1,subsetOf:d.url}),u.data}();return h=new o.TransformIterator((async()=>{const i=await f,a=p.defaultGraph();let s=(0,o.wrap)(i).transform({filter:i=>!!(0,l.matchPattern)(i,e,t,r,n)||u&&(0,l.matchPattern)(i,e,t,r,a)});return(u||"Variable"===n.termType)&&(s=this.reverseMapQuadsToDefaultGraph(s)),s}),{autoStart:!1}),c?.filterBindings?h:(this.cacheQuads(h,e,t,r,n),this.getCachedQuads(e,t,r,n))}async getBindingsRestrictedLink(e,t,r,n,i,a){const o=[];for(const e of await a.bindings.toArray()){const t=["("];for(const r of a.metadata.variables){const n=e.get(r);t.push(n?(0,u.termToString)(n):"UNDEF"),t.push(" ")}t.push(")"),o.push(t.join(""))}return 0===o.length&&o.push("()"),`${i}&values=${encodeURIComponent(`(${a.metadata.variables.map((e=>`?${e.value}`)).join(" ")}) { ${o.join(" ")} }`)}`}reverseMapQuadsToDefaultGraph(e){const t=p.defaultGraph();return e.map((e=>(0,l.mapTerms)(e,((e,r)=>"graph"===r&&e.equals(this.defaultGraph)?t:e))))}getPatternId(e,t,r,n){return JSON.stringify({s:"Variable"===e.termType?"":f(e),p:"Variable"===t.termType?"":f(t),o:"Variable"===r.termType?"":f(r),g:"Variable"===n.termType?"":f(n)})}cacheQuads(e,t,r,n,i){const a=this.getPatternId(t,r,n,i);this.cachedQuads[a]=e.clone()}getCachedQuads(e,t,r,n){const i=this.getPatternId(e,t,r,n),a=this.cachedQuads[i];if(a)return a.clone()}queryQuads(e,t){throw new Error("queryQuads is not implemented in QuerySourceQpf")}queryBoolean(e,t){throw new Error("queryBoolean is not implemented in QuerySourceQpf")}queryVoid(e,t){throw new Error("queryVoid is not implemented in QuerySourceQpf")}}function f(e){return"DefaultGraph"===e.termType?"|":(0,c.termToString)(e)}t.QuerySourceQpf=h,h.SELECTOR_SHAPE={type:"operation",operation:{operationType:"pattern",pattern:d.createPattern(p.variable("s"),p.variable("p"),p.variable("o"),p.variable("g"))},variablesOptional:[p.variable("s"),p.variable("p"),p.variable("o"),p.variable("g")]},h.SELECTOR_SHAPE_BR={type:"operation",operation:{operationType:"pattern",pattern:d.createPattern(p.variable("s"),p.variable("p"),p.variable("o"),p.variable("g"))},variablesOptional:[p.variable("s"),p.variable("p"),p.variable("o"),p.variable("g")],filterBindings:!0}},52378:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88760),t),i(r(92591),t)},480:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyHypermediaSparql=void 0;const n=r(91674),i=r(89168),a=r(99193);class o extends i.ActorQuerySourceIdentifyHypermedia{constructor(e){super(e,"sparql")}async testMetadata(e){if(!(e.forceSourceType||e.metadata.sparqlService||this.checkUrlSuffix&&e.url.endsWith("/sparql")))throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql.`);return{filterFactor:1}}async run(e){return this.logInfo(e.context,`Identified ${e.url} as sparql source with service URL: ${e.metadata.sparqlService||e.url}`),{source:new a.QuerySourceSparql(e.forceSourceType?e.url:e.metadata.sparqlService||e.url,e.context,this.mediatorHttp,this.bindMethod,await n.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context),this.forceHttpGet,this.cacheSize,this.countTimeout)}}}t.ActorQuerySourceIdentifyHypermediaSparql=o},99193:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySourceSparql=void 0;const n=r(32227),i=r(34368),a=r(72394),o=r(76664),s=r(74190),c=r(35069),u=r(18050),l=r(31578),d=new l.Factory,p=new u.DataFactory,h=p.variable("count"),f={type:"estimate",value:Number.POSITIVE_INFINITY};class y{constructor(e,t,r,n,i,a,o,u){this.referenceValue=e,this.url=e,this.context=t,this.mediatorHttp=r,this.bindMethod=n,this.bindingsFactory=i,this.endpointFetcher=new s.SparqlEndpointFetcher({method:a?"GET":"POST",fetch:(e,t)=>this.mediatorHttp.mediate({input:e,init:t,context:this.lastSourceContext}),prefixVariableQuestionMark:!0}),this.cache=o>0?new c.LRUCache({max:o}):void 0,this.countTimeout=u}async getSelectorShape(){return y.SELECTOR_SHAPE}queryBindings(e,t,r){let i;i=r?.joinBindings?y.addBindingsToOperation(this.bindMethod,e,r.joinBindings):Promise.resolve(e);const a=new o.TransformIterator((async()=>{const e=await i,a=l.Util.inScopeVariables(e),o=t.get(n.KeysInitQuery.queryString),s=!r?.joinBindings&&o?o:y.operationToSelectQuery(e,a),c=y.operationCanContainUndefs(e);return this.queryBindingsRemote(this.url,s,a,t,c)}),{autoStart:!1});return this.attachMetadata(a,t,i),a}queryQuads(e,t){this.lastSourceContext=this.context.merge(t);const r=this.endpointFetcher.fetchTriples(this.url,t.get(n.KeysInitQuery.queryString)??y.operationToQuery(e));this.lastSourceContext=void 0;const i=(0,o.wrap)(r,{autoStart:!1,maxBufferSize:Number.POSITIVE_INFINITY});return this.attachMetadata(i,t,Promise.resolve(e.input)),i}queryBoolean(e,t){this.lastSourceContext=this.context.merge(t);const r=this.endpointFetcher.fetchAsk(this.url,t.get(n.KeysInitQuery.queryString)??y.operationToQuery(e));return this.lastSourceContext=void 0,r}queryVoid(e,t){this.lastSourceContext=this.context.merge(t);const r=this.endpointFetcher.fetchUpdate(this.url,t.get(n.KeysInitQuery.queryString)??y.operationToQuery(e));return this.lastSourceContext=void 0,r}attachMetadata(e,t,r){let n=[],i=!1;new Promise((async(e,a)=>{let o;try{const a=await r;n=l.Util.inScopeVariables(a),o=y.operationToCountQuery(a),i=y.operationCanContainUndefs(a);const s=this.cache?.get(o);if(void 0!==s)return e(s);const c=setTimeout((()=>e(f)),this.countTimeout),u=await this.queryBindingsRemote(this.url,o,[h],t,!1);u.on("data",(t=>{clearTimeout(c);const r=t.get(h),n={type:"estimate",value:Number.POSITIVE_INFINITY};if(r){const e=Number.parseInt(r.value,10);Number.isNaN(e)||(n.type="exact",n.value=e,this.cache?.set(o,n))}return e(n)})),u.on("error",(()=>{clearTimeout(c),e(f)})),u.on("end",(()=>{clearTimeout(c),e(f)}))}catch(e){return a(e)}})).then((t=>{e.setProperty("metadata",{state:new a.MetadataValidationState,cardinality:t,canContainUndefs:i,variables:n})})).catch((()=>e.setProperty("metadata",{state:new a.MetadataValidationState,cardinality:f,canContainUndefs:i,variables:n})))}static async addBindingsToOperation(e,t,r){const n=await r.bindings.toArray();switch(e){case"values":return d.createJoin([d.createValues(r.metadata.variables,n.map((e=>Object.fromEntries([...e].map((([e,t])=>[`?${e.value}`,t])))))),t],!1);case"union":throw new Error('Not implemented yet: "union" case');case"filter":throw new Error('Not implemented yet: "filter" case')}}static operationToSelectQuery(e,t){return y.operationToQuery(d.createProject(e,t))}static operationToCountQuery(e){return y.operationToQuery(d.createProject(d.createExtend(d.createGroup(e,[],[d.createBoundAggregate(p.variable("var0"),"count",d.createWildcardExpression(),!1)]),p.variable("count"),d.createTermExpression(p.variable("var0"))),[p.variable("count")]))}static operationToQuery(e){return(0,l.toSparql)(e,{sparqlStar:!0})}static operationCanContainUndefs(e){let t=!1;return l.Util.recurseOperation(e,{leftjoin:()=>(t=!0,!1),values:e=>(t=e.bindings.some((t=>e.variables.some((e=>!(`?${e.value}`in t))))),!1),union(e){const r=e.input.map(l.Util.inScopeVariables).map((e=>e.map((e=>e.value)))).map((e=>e.sort(((e,t)=>e.localeCompare(t))))).map((e=>e.join(",")));return!!r.every((e=>e===r[0]))||(t=!0,!1)}}),t}async queryBindingsRemote(e,t,r,n,a){this.lastSourceContext=this.context.merge(n);const s=await this.endpointFetcher.fetchBindings(e,t);return this.lastSourceContext=void 0,(0,o.wrap)(s,{autoStart:!1,maxBufferSize:Number.POSITIVE_INFINITY}).map((t=>this.bindingsFactory.bindings(r.map((r=>{const n=t[`?${r.value}`];return a||n||i.Actor.getContextLogger(this.context)?.warn(`The endpoint ${e} failed to provide a binding for ${r.value}.`),[r,n]})).filter((([e,t])=>Boolean(t))))))}toString(){return`QuerySourceSparql(${this.url})`}}t.QuerySourceSparql=y,y.SELECTOR_SHAPE={type:"disjunction",children:[{type:"operation",operation:{operationType:"type",type:l.Algebra.types.PROJECT},joinBindings:!0},{type:"operation",operation:{operationType:"type",type:l.Algebra.types.CONSTRUCT}},{type:"operation",operation:{operationType:"type",type:l.Algebra.types.DESCRIBE}},{type:"operation",operation:{operationType:"type",type:l.Algebra.types.ASK}},{type:"operation",operation:{operationType:"type",type:l.Algebra.types.COMPOSITE_UPDATE}}]}},16025:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(480),t),i(r(99193),t)},93017:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyHypermedia=void 0;const n=r(91674),i=r(65483),a=r(32227),o=r(34368),s=r(870);class c extends i.ActorQuerySourceIdentify{constructor(e){super(e)}async test(e){if("string"!=typeof e.querySourceUnidentified.value)throw new TypeError(`${this.name} requires a single query source with a URL value to be present in the context.`);return!0}async run(e){return{querySource:{source:new s.QuerySourceHypermedia(this.cacheSize,e.querySourceUnidentified.value,e.querySourceUnidentified.type,this.maxIterators,this.aggregateTraversalStore&&Boolean(e.querySourceUnidentified.context?.get(a.KeysQuerySourceIdentify.traverse)),{mediatorMetadata:this.mediatorMetadata,mediatorMetadataExtract:this.mediatorMetadataExtract,mediatorMetadataAccumulate:this.mediatorMetadataAccumulate,mediatorDereferenceRdf:this.mediatorDereferenceRdf,mediatorQuerySourceIdentifyHypermedia:this.mediatorQuerySourceIdentifyHypermedia,mediatorRdfResolveHypermediaLinks:this.mediatorRdfResolveHypermediaLinks,mediatorRdfResolveHypermediaLinksQueue:this.mediatorRdfResolveHypermediaLinksQueue},(t=>this.logWarn(e.context,t)),await n.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context)),context:e.querySourceUnidentified.context??new o.ActionContext}}}}t.ActorQuerySourceIdentifyHypermedia=c},87896:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkedRdfSourcesAsyncRdfIterator=void 0;const n=r(32227),i=r(72394),a=r(76664);class o extends a.BufferedIterator{constructor(e,t,r,n,i,a,o,s){if(super({autoStart:!1,...s}),this.started=!1,this.currentIterators=[],this.iteratorsPendingCreation=0,this.iteratorsPendingTermination=0,this.accumulatedMetadata=Promise.resolve(void 0),this._reading=!1,this.cacheSize=e,this.operation=t,this.queryBindingsOptions=r,this.context=n,this.firstUrl=i,this.maxIterators=a,this.sourceStateGetter=o,this.maxIterators<=0)throw new Error(`LinkedRdfSourcesAsyncRdfIterator.maxIterators must be larger than zero, but got ${this.maxIterators}`)}kickstart(){this.started||this._fillBufferAsync()}getProperty(e,t){return"metadata"!==e||this.started||(this.preflightMetadata||(this.preflightMetadata=new Promise(((e,t)=>{this.sourceStateGetter({url:this.firstUrl},{}).then((t=>{const r=t.source.queryBindings(this.operation,this.context);r.getProperty("metadata",(n=>{n.state=new i.MetadataValidationState,r.destroy(),this.accumulateMetadata(t.metadata,n).then((r=>{const i={...t.metadata,...n,...r};e(i)})).catch((()=>{e({...t.metadata,state:new i.MetadataValidationState})}))}))})).catch(t)}))),this.preflightMetadata.then((e=>this.setProperty("metadata",e))).catch((()=>{}))),super.getProperty(e,t)}_end(e){for(const e of this.currentIterators)e.destroy();super._end(e)}_read(e,t){if(this.started){for(const t of this.currentIterators){for(;e>0;){const r=t.read();if(null===r)break;e--,this._push(r)}if(e<=0)break}e>=0&&this.canStartNewIterator()?this.sourceStateGetter({url:this.firstUrl},{}).then((e=>{this.startIteratorsForNextUrls(e.handledDatasets,!1),t()})):t()}else this.started=!0,this.sourceStateGetter({url:this.firstUrl},{}).then((e=>{this.startIterator(e),t()})).catch((e=>setTimeout((()=>this.destroy(e)))))}canStartNewIterator(){return this.currentIterators.length+this.iteratorsPendingCreation+this.iteratorsPendingTermination0}startIterator(e){try{const t=e.source.queryBindings(this.operation,this.context,this.queryBindingsOptions);this.currentIterators.push(t);let r=!1,n=!1;t._destination=this,t.on("error",(e=>this.destroy(e))),t.on("readable",(()=>this._fillBuffer())),t.on("end",(()=>{this.currentIterators.splice(this.currentIterators.indexOf(t),1),r=!0,n||this.iteratorsPendingTermination++,n&&this.startIteratorsForNextUrls(e.handledDatasets,!0)})),t.getProperty("metadata",(t=>{this.accumulatedMetadata=this.accumulatedMetadata.then((a=>(async()=>(a||(a=e.metadata),this.accumulateMetadata(a,t)))().then((a=>{const o={...e.metadata,...t,...a};return o.state=new i.MetadataValidationState,this.updateMetadata(o),this.preflightMetadata&&this.preflightMetadata.then((e=>e.state.invalidate())).catch((()=>{})),this.getSourceLinks(o,e).then((e=>Promise.all(e))).then((async t=>{const i=await this.getLinkQueue();for(const r of t)i.push(r,e.link);n=!0,r&&this.iteratorsPendingTermination--,this.startIteratorsForNextUrls(e.handledDatasets,!0)})).catch((e=>this.destroy(e))),o})))).catch((e=>(this.destroy(e),{})))}))}catch(e){this.destroy(e)}}updateMetadata(e){const t=this.getProperty("metadata");this.setProperty("metadata",e),t?.state.invalidate()}isRunning(){return!this.done}startIteratorsForNextUrls(e,t){this.getLinkQueue().then((r=>{for(;this.canStartNewIterator()&&this.isRunning();){const t=r.pop();if(!t)break;this.iteratorsPendingCreation++,this.sourceStateGetter(t,e).then((e=>{const t=this.context.get(n.KeysStatistics.dereferencedLinks);t&&t.updateStatistic({url:e.link.url,metadata:{...e.metadata,...e.link.metadata}},e.source),this.iteratorsPendingCreation--,this.startIterator(e)})).catch((e=>this.emit("error",e)))}t&&this.isCloseable(r,!0)&&this.close()})).catch((e=>this.destroy(e)))}isCloseable(e,t){return e.isEmpty()&&!this.areIteratorsRunning()}}t.LinkedRdfSourcesAsyncRdfIterator=o},47833:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatedLinkedRdfSourcesAsyncRdfIterator=void 0;const n=r(32227),i=r(18050),a=r(31578),o=r(87896),s=new i.DataFactory,c=new a.Factory;class u extends o.LinkedRdfSourcesAsyncRdfIterator{constructor(e,t,r,n,i,a,o,s,c,u,l,d){super(e,t,r,n,a,o,s,c?{maxBufferSize:Number.POSITIVE_INFINITY}:void 0),this.wasForcefullyClosed=!1,this.forceSourceType=i,this.mediatorMetadataAccumulate=u,this.mediatorRdfResolveHypermediaLinks=l,this.mediatorRdfResolveHypermediaLinksQueue=d,this.handledUrls={[a]:!0},this.aggregatedStore=c}close(){this.aggregatedStore?this.getLinkQueue().then((e=>{this.isCloseable(e,!1)?(this.aggregatedStore&&setTimeout((()=>this.aggregatedStore.end())),super.close()):this.wasForcefullyClosed=!0})).catch((e=>super.destroy(e))):super.close()}destroy(e){this.aggregatedStore?this.getLinkQueue().then((t=>{e??this.isCloseable(t,!1)?(this.aggregatedStore&&setTimeout((()=>this.aggregatedStore.end())),super.destroy(e)):this.wasForcefullyClosed=!0})).catch((e=>super.destroy(e))):super.destroy(e)}isCloseable(e,t){return(t?e.isEmpty():this.wasForcefullyClosed||e.isEmpty())&&!this.areIteratorsRunning()}canStartNewIterator(){return!this.wasForcefullyClosed&&this.aggregatedStore&&this.aggregatedStore.hasRunningIterators()||super.canStartNewIterator()}canStartNewIteratorConsiderReadable(){return!this.aggregatedStore}isRunning(){return this.aggregatedStore&&this.aggregatedStore.hasRunningIterators()||!this.done}getLinkQueue(){return this.linkQueue||(this.linkQueue=this.mediatorRdfResolveHypermediaLinksQueue.mediate({firstUrl:this.firstUrl,context:this.context}).then((e=>e.linkQueue))),this.linkQueue}async getSourceLinks(e,t){try{const{links:r}=await this.mediatorRdfResolveHypermediaLinks.mediate({context:this.context,metadata:e}),i=this.context.get(n.KeysStatistics.discoveredLinks);if(i)for(const e of r)i.updateStatistic({url:e.url,metadata:{...e.metadata}},t.link);return r.filter((e=>!this.handledUrls[e.url]&&(this.handledUrls[e.url]=!0,!0)))}catch{return[]}}startIterator(e){if(this.aggregatedStore&&!this.aggregatedStore.containedSources.has(e.link.url)){this.aggregatedStore?.containedSources.add(e.link.url);const t=e.source.queryBindings(c.createPattern(s.variable("s"),s.variable("p"),s.variable("o"),s.variable("g")),this.context.set(n.KeysQueryOperation.unionDefaultGraph,!0)).map((e=>s.quad(e.get("s"),e.get("p"),e.get("o"),e.get("g"))));this.aggregatedStore.import(t).on("end",(()=>{super.startIterator(e)}))}else super.startIterator(e)}async accumulateMetadata(e,t){return(await this.mediatorMetadataAccumulate.mediate({mode:"append",accumulatedMetadata:e,appendingMetadata:t,context:this.context})).metadata}updateMetadata(e){super.updateMetadata(e),this.aggregatedStore?.setBaseMetadata(e,!0)}}t.MediatedLinkedRdfSourcesAsyncRdfIterator=u},870:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySourceHypermedia=void 0;const n=r(27474),i=r(32227),a=r(76664),o=r(35069),s=r(58521),c=r(47833),u=r(69321);t.QuerySourceHypermedia=class{constructor(e,t,r,n,i,a,s,c){this.referenceValue=t,this.cacheSize=e,this.firstUrl=t,this.forceSourceType=r,this.maxIterators=n,this.mediators=a,this.aggregateStore=i,this.logWarning=s,this.bindingsFactory=c,this.sourcesState=new o.LRUCache({max:this.cacheSize})}async getSelectorShape(e){return(await this.getSourceCached({url:this.firstUrl},{},e,this.getAggregateStore(e))).source.getSelectorShape(e)}queryBindings(e,t,r){const i=this.getAggregateStore(t);if(i&&"pattern"===e.type&&i.started)return new n.QuerySourceRdfJs(i,this.bindingsFactory).queryBindings(e,t);0===this.sourcesState.size&&this.getSourceCached({url:this.firstUrl},{},t,i).catch((e=>a.destroy(e)));const a=new c.MediatedLinkedRdfSourcesAsyncRdfIterator(this.cacheSize,e,r,t,this.forceSourceType,this.firstUrl,this.maxIterators,((e,r)=>this.getSourceCached(e,r,t,i)),i,this.mediators.mediatorMetadataAccumulate,this.mediators.mediatorRdfResolveHypermediaLinks,this.mediators.mediatorRdfResolveHypermediaLinksQueue);if(i){i.started=!0;const e=()=>a.kickstart();i.addIteratorCreatedListener(e),a.on("end",(()=>i.removeIteratorCreatedListener(e)))}return a}queryQuads(e,t){return new a.TransformIterator((async()=>(await this.getSourceCached({url:this.firstUrl},{},t,this.getAggregateStore(t))).source.queryQuads(e,t)))}async queryBoolean(e,t){const r=await this.getSourceCached({url:this.firstUrl},{},t,this.getAggregateStore(t));return await r.source.queryBoolean(e,t)}async queryVoid(e,t){const r=await this.getSourceCached({url:this.firstUrl},{},t,this.getAggregateStore(t));return await r.source.queryVoid(e,t)}async getSource(e,t,r,n){e.context&&(r=r.merge(e.context));let i,a,o=e.url;try{const t=await this.mediators.mediatorDereferenceRdf.mediate({context:r,url:o});o=t.url;const n=await this.mediators.mediatorMetadata.mediate({context:r,url:o,quads:t.data,triples:t.metadata?.triples});n.data.on("error",(()=>{})),a=(await this.mediators.mediatorMetadataExtract.mediate({context:r,url:o,metadata:n.metadata,headers:t.headers,requestTime:t.requestTime})).metadata,i=n.data,e.transform&&(i=await e.transform(i))}catch(e){i=new s.Readable,i.read=()=>(setTimeout((()=>i.emit("error",e))),null),({metadata:a}=await this.mediators.mediatorMetadataAccumulate.mediate({context:r,mode:"initialize"})),this.logWarning(`Metadata extraction for ${o} failed: ${e.message}`)}n?.setBaseMetadata(a,!1),n?.containedSources.add(e.url),n?.import(i);const{source:c,dataset:u}=await this.mediators.mediatorQuerySourceIdentifyHypermedia.mediate({context:r,forceSourceType:e.url===this.firstUrl?this.forceSourceType:void 0,handledDatasets:t,metadata:a,quads:i,url:o});return u&&(t[u]=!0),{link:e,source:c,metadata:a,handledDatasets:t}}getSourceCached(e,t,r,n){let i=this.sourcesState.get(e.url);return i||(i=this.getSource(e,t,r,n),e.url!==this.firstUrl&&void 0!==n||this.sourcesState.set(e.url,i),i)}getAggregateStore(e){let t;if(this.aggregateStore){const r=e.get(i.KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores);if(r)return t=r.get(this.firstUrl),t||(t=new u.StreamingStoreMetadata(void 0,(async(t,r)=>(await this.mediators.mediatorMetadataAccumulate.mediate({mode:"append",accumulatedMetadata:t,appendingMetadata:r,context:e})).metadata)),r.set(this.firstUrl,t)),t}}toString(){return`QuerySourceHypermedia(${this.firstUrl})`}}},69321:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StreamingStoreMetadata=void 0;const n=r(59510),i=r(72394),a=r(2887);class o extends a.StreamingStore{constructor(e,t){super(e),this.started=!1,this.containedSources=new Set,this.runningIterators=new Set,this.iteratorCreatedListeners=new Set,this.baseMetadata={state:new i.MetadataValidationState,cardinality:{type:"exact",value:0},canContainUndefs:!1,variables:[]},this.metadataAccumulator=t}import(e){return this.ended||super.import(e),e}hasRunningIterators(){return this.runningIterators.size>0}match(e,t,r,a){const o=super.match(e,t,r,a),s=new n.ClosableTransformIterator(o,{autoStart:!1,onClose:()=>{this.runningIterators.delete(s)}});let c=this.getStore().countQuads(e,t,r,a);const u={state:new i.MetadataValidationState,cardinality:{type:"estimate",value:c},canContainUndefs:!1};s.setProperty("metadata",u),s.setProperty("lastCount",c),o.on("quad",(()=>{s.setProperty("lastCount",++c),this.updateMetadataState(s,c)})),this.runningIterators.add(s);for(const e of this.iteratorCreatedListeners)e();return s}setBaseMetadata(e,t){if(this.baseMetadata={...e},this.baseMetadata.cardinality={type:"exact",value:0},t)for(const e of this.runningIterators){const t=e.getProperty("lastCount");this.updateMetadataState(e,t)}}updateMetadataState(e,t){const r={state:new i.MetadataValidationState,cardinality:{type:"estimate",value:t},canContainUndefs:!1,variables:[]};this.metadataAccumulator(this.baseMetadata,r).then((t=>{t.state=new i.MetadataValidationState;const r=e.getProperty("metadata");e.setProperty("metadata",t),r?.state.invalidate()})).catch((()=>{}))}addIteratorCreatedListener(e){this.iteratorCreatedListeners.add(e)}removeIteratorCreatedListener(e){this.iteratorCreatedListeners.delete(e)}}t.StreamingStoreMetadata=o},57789:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(93017),t),i(r(870),t)},34263:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyRdfJs=void 0;const n=r(91674),i=r(65483),a=r(34368),o=r(35720);class s extends i.ActorQuerySourceIdentify{constructor(e){super(e)}async test(e){const t=e.querySourceUnidentified;if(void 0!==t.type&&"rdfjs"!==t.type)throw new Error(`${this.name} requires a single query source with rdfjs type to be present in the context.`);if("string"==typeof t.value||!("match"in t.value))throw new Error(`${this.name} received an invalid rdfjs query source.`);return!0}async run(e){return{querySource:{source:new o.QuerySourceRdfJs(e.querySourceUnidentified.value,await n.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context)),context:e.querySourceUnidentified.context??new a.ActionContext}}}}t.ActorQuerySourceIdentifyRdfJs=s},45958:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},35720:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySourceRdfJs=void 0;const n=r(65483),i=r(32227),a=r(72394),o=r(76664),s=r(18050),c=r(13252),u=new(r(31578).Factory),l=new s.DataFactory;class d{constructor(e,t){this.source=e,this.referenceValue=e,this.bindingsFactory=t}static nullifyVariables(e,t){return!e||"Variable"===e.termType||!t&&"Quad"===e.termType&&(0,c.someTermsNested)(e,(e=>"Variable"===e.termType))?void 0:e}static hasDuplicateVariables(e){const t=(0,c.filterTermsNested)(e,(e=>"Variable"===e.termType));return t.length>1&&(0,c.uniqTerms)(t).lengths.destroy(e))),(0,n.quadsToBindings)(s,e,this.bindingsFactory,Boolean(t.get(i.KeysQueryOperation.unionDefaultGraph)))}async setMetadata(e,t){const r=Boolean(this.source.features?.quotedTripleFiltering);let n;if(this.source.countQuads)n=await this.source.countQuads(d.nullifyVariables(t.subject,r),d.nullifyVariables(t.predicate,r),d.nullifyVariables(t.object,r),d.nullifyVariables(t.graph,r));else{let e=0;n=await new Promise(((n,i)=>{const a=this.source.match(d.nullifyVariables(t.subject,r),d.nullifyVariables(t.predicate,r),d.nullifyVariables(t.object,r),d.nullifyVariables(t.graph,r));a.on("error",i),a.on("end",(()=>n(e))),a.on("data",(()=>e++))}))}const i=!r&&(0,c.someTerms)(t,(e=>"Quad"===e.termType))||d.hasDuplicateVariables(t);e.setProperty("metadata",{state:new a.MetadataValidationState,cardinality:{type:i?"estimate":"exact",value:n},canContainUndefs:!1})}queryQuads(e,t){throw new Error("queryQuads is not implemented in QuerySourceRdfJs")}queryBoolean(e,t){throw new Error("queryBoolean is not implemented in QuerySourceRdfJs")}queryVoid(e,t){throw new Error("queryVoid is not implemented in QuerySourceRdfJs")}toString(){return`QuerySourceRdfJs(${this.source.constructor.name})`}}t.QuerySourceRdfJs=d,d.SELECTOR_SHAPE={type:"operation",operation:{operationType:"pattern",pattern:u.createPattern(l.variable("s"),l.variable("p"),l.variable("o"))},variablesOptional:[l.variable("s"),l.variable("p"),l.variable("o")]}},27474:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(34263),t),i(r(45958),t),i(r(35720),t)},16661:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifySerialized=void 0;const n=r(65483),i=r(10953),a=r(58521);class o extends n.ActorQuerySourceIdentify{constructor(e){super(e)}async test(e){if(!this.isStringSource(e.querySourceUnidentified))throw new Error(`${this.name} requires a single query source with serialized type to be present in the context.`);return!0}async run(e){return await this.mediatorQuerySourceIdentify.mediate({querySourceUnidentified:{type:"rdfjs",value:await this.getRdfSource(e.context,e.querySourceUnidentified),context:e.querySourceUnidentified.context},context:e.context})}async getRdfSource(e,t){const r=new a.Readable({objectMode:!0});r._read=()=>{},r.push(t.value),r.push(null);const n={context:e,handle:{metadata:{baseIRI:t.baseIRI},data:r,context:e},handleMediaType:t.mediaType},o=await this.mediatorRdfParse.mediate(n);return await(0,i.storeStream)(o.handle.data)}isStringSource(e){return"type"in e?"serialized"===e.type:"string"==typeof e.value&&"mediaType"in e}}t.ActorQuerySourceIdentifySerialized=o},84701:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(16661),t)},13494:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinEntriesSortCardinality=void 0;const n=r(84287);class i extends n.ActorRdfJoinEntriesSort{constructor(e){super(e)}async test(e){return!0}async run(e){return{entries:[...e.entries].sort(((e,t)=>e.metadata.cardinality.value-t.metadata.cardinality.value))}}}t.ActorRdfJoinEntriesSortCardinality=i},36545:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(13494),t)},87653:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinHash=void 0;const n=r(32353),i=r(2922);class a extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"hash",limitEntries:2,requiresVariableOverlap:!0})}async getOutput(e){let t=await n.ActorRdfJoin.getMetadatas(e.entries);t[1].cardinality.valuen.ActorRdfJoin.hash(e,r)),n.ActorRdfJoin.joinBindings),metadata:async()=>await this.constructResultMetadata(e.entries,t,e.context)}}}async getJoinCoefficients(e,t){t[1].cardinality.value{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMultiBindSource=void 0;const n=r(59510),i=r(32353),a=r(76664),o=new(r(31578).Factory);class s extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"bind-source",canHandleUndefs:!0})}async getOutput(e){const t=await i.ActorRdfJoin.getEntriesWithMetadatas(e.entries),r=await this.sortJoinEntries(t,e.context);this.logDebug(e.context,"First entry for Bind Join Source: ",(()=>({entry:r[0].operation,metadata:r[0].metadata})));for(const[e,t]of r.entries())0!==e&&t.output.bindingsStream.close();const o=r[0].output,s=r[0].metadata,c=[...r];c.splice(0,1);const u=n.ActorQueryOperation.getOperationSource(c[0].operation),l=this.createOperationFromEntries(c),d=new i.ChunkedIterator(o.bindingsStream,this.blockSize,{autoStart:!1});return{result:{type:"bindings",bindingsStream:new a.UnionIterator(d.map((t=>u.source.queryBindings(l,u.context?e.context.merge(u.context):e.context,{joinBindings:{bindings:t,metadata:s}})))),metadata:()=>this.constructResultMetadata(r,r.map((e=>e.metadata)),e.context)},physicalPlanMetadata:{bindIndex:t.indexOf(r[0])}}}async sortJoinEntries(e,t){return(e=await i.ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort,e,t)).sort(((e,t)=>e.operationModified&&!t.operationModified?-1:0))}async getJoinCoefficients(e,t){const r=await this.sortJoinEntries(e.entries.map(((e,r)=>({...e,metadata:t[r]}))),e.context);t=r.map((e=>e.metadata));const a=i.ActorRdfJoin.getRequestInitialTimes(t),o=i.ActorRdfJoin.getRequestItemTimes(t),s=[...r],c=[...a],u=[...o];s.splice(0,1),c.splice(0,1),u.splice(0,1);const l=s.map((e=>n.ActorQueryOperation.getOperationSource(e.operation)));if(l.some((e=>!e)))throw new Error(`Actor ${this.name} can not bind on remaining operations without source annotation`);if(l.some((e=>e!==l[0])))throw new Error(`Actor ${this.name} can not bind on remaining operations with non-equal source annotation`);const d=l[0],p=this.createOperationFromEntries(s),h=await d.source.getSelectorShape(e.context);if(!n.ActorQueryOperation.doesShapeAcceptOperation(h,p,{joinBindings:!0}))throw new Error(`Actor ${this.name} detected a source that can not handle passing down join bindings`);const f=await Promise.all(s.map((async t=>(await this.mediatorJoinSelectivity.mediate({entries:[r[0],t],context:e.context})).selectivity*this.selectivityModifier))),y=s.map(((e,t)=>e.metadata.cardinality.value*f[t])).reduce(((e,t)=>e+t),0);return{iterations:1,persistedItems:t[0].cardinality.value,blockingItems:t[0].cardinality.value,requestTime:a[0]+t[0].cardinality.value*o[0]+a[1]+y*o[1]}}createOperationFromEntries(e){return 1===e.length?e[0].operation:o.createJoin(e.map((e=>e.operation)),!0)}}t.ActorRdfJoinMultiBindSource=s},6551:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(57581),t)},38752:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMultiBind=void 0;const n=r(91674),i=r(59510),a=r(32353),o=r(32227),s=r(76664),c=r(31578);class u extends a.ActorRdfJoin{constructor(e){void 0===e.minMaxCardinalityRatio&&(e.minMaxCardinalityRatio=60),super(e,{logicalType:"inner",physicalName:"bind",canHandleUndefs:!0,isLeaf:!1})}static createBindStream(e,t,r,n,a,o){const c="depth-first"===e,u=e=>{const t=r.map((t=>(0,i.materializeOperation)(t,e,o,{bindFilter:!0}))),a=t=>t.merge(e);return new s.TransformIterator((async()=>(await n(t,e)).transform({map:a})),{maxBufferSize:128,autoStart:c})};switch(e){case"depth-first":return new s.MultiTransformIterator(t,{autoStart:!1,multiTransform:u,optional:a});case"breadth-first":return new s.UnionIterator(t.transform({map:u,optional:a}),{autoStart:!1});default:throw new Error(`Received request for unknown bind order: ${e}`)}}async getOutput(e){const t=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context),r=await a.ActorRdfJoin.getEntriesWithMetadatas(e.entries),s=await a.ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort,r,e.context);this.logDebug(e.context,"First entry for Bind Join: ",(()=>({entry:s[0].operation,metadata:s[0].metadata})));for(const[e,t]of s.entries())0!==e&&t.output.bindingsStream.close();const c=s[0].output,l=[...s];l.splice(0,1);const d=e.context.set(o.KeysQueryOperation.joinLeftMetadata,s[0].metadata).set(o.KeysQueryOperation.joinRightMetadatas,l.map((e=>e.metadata)));return{result:{type:"bindings",bindingsStream:u.createBindStream(this.bindOrder,c.bindingsStream,l.map((e=>e.operation)),(async(e,t)=>{const r=1===e.length?e[0]:u.FACTORY.createJoin(e);return i.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:r,context:d?.set(o.KeysQueryOperation.joinBindings,t)})).bindingsStream}),!1,t),metadata:()=>this.constructResultMetadata(s,s.map((e=>e.metadata)),e.context)},physicalPlanMetadata:{bindIndex:r.indexOf(s[0]),bindOperation:s[0].operation,bindOperationCardinality:s[0].metadata.cardinality,bindOrder:this.bindOrder}}}canBindWithOperation(e){let t=!0;return c.Util.recurseOperation(e,{[c.Algebra.types.EXTEND]:()=>(t=!1,!1),[c.Algebra.types.GROUP]:()=>(t=!1,!1)}),t}async getJoinCoefficients(e,t){const r=await a.ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort,e.entries.map(((e,r)=>({...e,metadata:t[r]}))),e.context);t=r.map((e=>e.metadata));const n=a.ActorRdfJoin.getRequestInitialTimes(t),i=a.ActorRdfJoin.getRequestItemTimes(t),o=[...r],s=[...n],c=[...i];if(o.splice(0,1),s.splice(0,1),c.splice(0,1),o.some((e=>!this.canBindWithOperation(e.operation))))throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);if(o.some((e=>e.operationModified)))throw new Error(`Actor ${this.name} can not be used over remaining entries with modified operations`);if(t[0].cardinality.value*this.minMaxCardinalityRatio>Math.max(...t.map((e=>e.cardinality.value))))throw new Error(`Actor ${this.name} can only run if the smallest stream is much smaller than largest stream`);const u=await Promise.all(o.map((async t=>(await this.mediatorJoinSelectivity.mediate({entries:[r[0],t],context:e.context})).selectivity*this.selectivityModifier))),l=o.map(((e,t)=>e.metadata.cardinality.value*u[t])).reduce(((e,t)=>e+t),0),d=s.reduce(((e,t)=>e+t),0),p=c.reduce(((e,t)=>e+t),0);return{iterations:t[0].cardinality.value*l,persistedItems:0,blockingItems:0,requestTime:n[0]+t[0].cardinality.value*(i[0]+d+l*p)}}}t.ActorRdfJoinMultiBind=u,u.FACTORY=new c.Factory},82331:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(38752),t)},42548:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMultiEmpty=void 0;const n=r(32353),i=r(72394),a=r(76664);class o extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"multi-empty",canHandleUndefs:!0})}async test(e){if((await n.ActorRdfJoin.getMetadatas(e.entries)).every((e=>n.ActorRdfJoin.getCardinality(e).value>0)))throw new Error(`Actor ${this.name} can only join entries where at least one is empty`);return super.test(e)}async getOutput(e){for(const t of e.entries)t.output.bindingsStream.close();return{result:{bindingsStream:new a.ArrayIterator([],{autoStart:!1}),metadata:async()=>({state:new i.MetadataValidationState,cardinality:{type:"exact",value:0},canContainUndefs:!1,variables:n.ActorRdfJoin.joinVariables(await n.ActorRdfJoin.getMetadatas(e.entries))}),type:"bindings"}}}async getJoinCoefficients(e,t){return{iterations:0,persistedItems:0,blockingItems:0,requestTime:0}}}t.ActorRdfJoinMultiEmpty=o},85345:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(42548),t)},82314:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMultiSmallestFilterBindings=void 0;const n=r(91674),i=r(59510),a=r(32353),o=r(32227),s=r(76664),c=r(31578);class u extends a.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"multi-smallest-filter-bindings",limitEntries:2,limitEntriesMin:!0,isLeaf:!1})}async sortJoinEntries(e,t){let{entries:r}=await this.mediatorJoinEntriesSort.mediate({entries:e,context:t});r=r.sort(((e,t)=>e.operationModified&&!t.operationModified?-1:0));const n=r.splice(0,1)[0];let i,a=-1,o=0;for(const[e,t]of r.entries()){const r=n.metadata.variables.filter((e=>t.metadata.variables.some((t=>e.equals(t))))).length;(!i||r>o||r===o&&(t.metadata.variables.lengthc.metadata.variables.some((t=>e.equals(t))))),h={},f=d.clone().map((e=>e.filter(((e,t)=>p.some((e=>e.equals(t))))))).filter((e=>{const t=(0,n.bindingsToString)(e);return!(t in h)&&(h[t]=!0)})),y=new a.ChunkedIterator(f,this.blockSize,{autoStart:!1}),g=i.ActorQueryOperation.getOperationSource(c.operation),m={output:{type:"bindings",bindingsStream:new s.UnionIterator(y.map((t=>g.source.queryBindings(c.operation,g.context?e.context.merge(g.context):e.context,{filterBindings:{bindings:t,metadata:r.metadata}})))),metadata:c.output.metadata},operation:c.operation,operationModified:!0};c.output.bindingsStream.destroy();const b={output:i.ActorQueryOperation.getSafeBindings(await this.mediatorJoin.mediate({type:e.type,entries:[r,m],context:e.context.set(o.KeysRdfJoin.lastPhysicalJoin,this.physicalName)})),operation:u.FACTORY.createJoin([r.operation,m.operation],!1),operationModified:!0},v=l;return v.unshift(b),{result:await this.mediatorJoin.mediate({type:e.type,entries:v,context:e.context}),physicalPlanMetadata:{firstIndex:t.indexOf(r),secondIndex:t.indexOf(c)}}}async getJoinCoefficients(e,t){if(e.context.get(o.KeysRdfJoin.lastPhysicalJoin)===this.physicalName)throw new Error(`Actor ${this.name} can not be called recursively`);t=[...t];const{first:r,second:n,remaining:s}=await this.sortJoinEntries(e.entries.map(((e,r)=>({...e,metadata:t[r]}))),e.context),c=i.ActorQueryOperation.getOperationSource(n.operation);if(!c)throw new Error(`Actor ${this.name} can only process if entries[1] has a source`);const u=n.operation,l=await c.source.getSelectorShape(e.context);if(!i.ActorQueryOperation.doesShapeAcceptOperation(l,u,{filterBindings:!0}))throw new Error(`Actor ${this.name} can only process if entries[1] accept filterBindings`);t=[r.metadata,n.metadata,...s.map((e=>e.metadata))];const d=a.ActorRdfJoin.getRequestInitialTimes(t),p=a.ActorRdfJoin.getRequestItemTimes(t),{selectivity:h}=await this.mediatorJoinSelectivity.mediate({entries:[r,n],context:e.context}),f=s.reduce(((e,t)=>e*t.metadata.cardinality.value*this.selectivityModifier),1);return{iterations:h*this.selectivityModifier*n.metadata.cardinality.value*f,persistedItems:r.metadata.cardinality.value,blockingItems:r.metadata.cardinality.value,requestTime:d[0]+t[0].cardinality.value*p[0]+d[1]+f*p[1]}}}t.ActorRdfJoinMultiSmallestFilterBindings=u,u.FACTORY=new c.Factory},92107:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(82314),t)},17504:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMultiSmallest=void 0;const n=r(59510),i=r(32353),a=r(31578);class o extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"multi-smallest",limitEntries:3,limitEntriesMin:!0,canHandleUndefs:!0,isLeaf:!1})}async sortJoinEntries(e,t){return(await this.mediatorJoinEntriesSort.mediate({entries:e,context:t})).entries}async getOutput(e){const t=await this.sortJoinEntries(await i.ActorRdfJoin.getEntriesWithMetadatas([...e.entries]),e.context),r=t[0],a=t[1];t.splice(0,2);const s={output:n.ActorQueryOperation.getSafeBindings(await this.mediatorJoin.mediate({type:e.type,entries:[r,a],context:e.context})),operation:o.FACTORY.createJoin([r.operation,a.operation],!1)};return t.push(s),{result:await this.mediatorJoin.mediate({type:e.type,entries:t,context:e.context})}}async getJoinCoefficients(e,t){t=[...t];const r=await this.sortJoinEntries(e.entries.map(((e,r)=>({...e,metadata:t[r]}))),e.context);t=r.map((e=>e.metadata));const n=i.ActorRdfJoin.getRequestInitialTimes(t),a=i.ActorRdfJoin.getRequestItemTimes(t);return{iterations:t[0].cardinality.value*t[1].cardinality.value*t.slice(2).reduce(((e,t)=>e*t.cardinality.value),1),persistedItems:0,blockingItems:0,requestTime:n[0]+t[0].cardinality.value*a[0]+n[1]+t[1].cardinality.value*a[1]+t.slice(2).reduce(((e,t,r)=>e+n.slice(2)[r]+t.cardinality.value*a.slice(2)[r]),0)}}}t.ActorRdfJoinMultiSmallest=o,o.FACTORY=new a.Factory},68841:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(17504),t)},20743:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinNestedLoop=void 0;const n=r(32353),i=r(2922);class a extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"nested-loop",limitEntries:2,canHandleUndefs:!0})}async getOutput(e){return{result:{type:"bindings",bindingsStream:new i.NestedLoopJoin(e.entries[0].output.bindingsStream,e.entries[1].output.bindingsStream,n.ActorRdfJoin.joinBindings,{autoStart:!1}),metadata:async()=>await this.constructResultMetadata(e.entries,await n.ActorRdfJoin.getMetadatas(e.entries),e.context)}}}async getJoinCoefficients(e,t){const r=n.ActorRdfJoin.getRequestInitialTimes(t),i=n.ActorRdfJoin.getRequestItemTimes(t);return{iterations:t[0].cardinality.value*t[1].cardinality.value,persistedItems:0,blockingItems:0,requestTime:r[0]+t[0].cardinality.value*i[0]+r[1]+t[1].cardinality.value*i[1]}}}t.ActorRdfJoinNestedLoop=a},37081:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(20743),t)},19421:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinNone=void 0;const n=r(91674),i=r(32353),a=r(72394),o=r(76664);class s extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"none",limitEntries:0})}async test(e){if(e.entries.length>0)throw new Error(`Actor ${this.name} can only join zero entries`);return await this.getJoinCoefficients()}async getOutput(e){const t=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context);return{result:{bindingsStream:new o.ArrayIterator([t.bindings()],{autoStart:!1}),metadata:()=>Promise.resolve({state:new a.MetadataValidationState,cardinality:{type:"exact",value:1},canContainUndefs:!1,variables:[]}),type:"bindings"}}}async getJoinCoefficients(){return{iterations:0,persistedItems:0,blockingItems:0,requestTime:0}}}t.ActorRdfJoinNone=s},498:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(19421),t)},28178:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinSingle=void 0;const n=r(32353);class i extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"single",limitEntries:1}),this.includeInLogs=!1}async test(e){if(1!==e.entries.length)throw new Error(`Actor ${this.name} can only join a single entry`);return await this.getJoinCoefficients()}async getOutput(e){return{result:e.entries[0].output}}async getJoinCoefficients(){return{iterations:0,persistedItems:0,blockingItems:0,requestTime:0}}}t.ActorRdfJoinSingle=i},35848:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(28178),t)},19273:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinSymmetricHash=void 0;const n=r(32353),i=r(2922);class a extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"symmetric-hash",limitEntries:2,requiresVariableOverlap:!0})}async getOutput(e){const t=await n.ActorRdfJoin.getMetadatas(e.entries),r=n.ActorRdfJoin.overlappingVariables(t);return{result:{type:"bindings",bindingsStream:new i.SymmetricHashJoin(e.entries[0].output.bindingsStream,e.entries[1].output.bindingsStream,(e=>a.hash(e,r)),n.ActorRdfJoin.joinBindings),metadata:async()=>await this.constructResultMetadata(e.entries,t,e.context)}}}async getJoinCoefficients(e,t){const r=n.ActorRdfJoin.getRequestInitialTimes(t),i=n.ActorRdfJoin.getRequestItemTimes(t);return{iterations:t[0].cardinality.value+t[1].cardinality.value,persistedItems:t[0].cardinality.value+t[1].cardinality.value,blockingItems:0,requestTime:r[0]+t[0].cardinality.value*i[0]+r[1]+t[1].cardinality.value*i[1]}}}t.ActorRdfJoinSymmetricHash=a},77375:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(19273),t)},18014:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMinusHashUndef=void 0;const n=r(59510),i=r(32353),a=r(5985);class o extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"minus",physicalName:"hash-undef",limitEntries:2,canHandleUndefs:!0})}async getOutput(e){const t=e.entries[1].output,r=e.entries[0].output,o=await i.ActorRdfJoin.getMetadatas(e.entries),s=i.ActorRdfJoin.overlappingVariables(o);if(s.length>0){const e=new a.BindingsIndex(s),i=new n.ClosableTransformIterator((async()=>(await new Promise((r=>{t.bindingsStream.on("data",(t=>e.add(t))),t.bindingsStream.on("end",r),t.bindingsStream.on("error",(e=>{i.emit("error",e)}))})),r.bindingsStream.filter((t=>!e.contains(t))))),{autoStart:!1,onClose(){t.bindingsStream.destroy(),r.bindingsStream.destroy()}});return{result:{type:"bindings",bindingsStream:i,async metadata(){const e=await r.metadata(),t=await r.metadata();return{...t,canContainUndefs:e.canContainUndefs||t.canContainUndefs}}}}}return t.bindingsStream.destroy(),{result:r}}async getJoinCoefficients(e,t){const r=i.ActorRdfJoin.getRequestInitialTimes(t),n=i.ActorRdfJoin.getRequestItemTimes(t);return{iterations:1.01*(t[0].cardinality.value+t[1].cardinality.value),persistedItems:t[0].cardinality.value,blockingItems:t[0].cardinality.value,requestTime:r[0]+t[0].cardinality.value*n[0]+r[1]+t[1].cardinality.value*n[1]}}}t.ActorRdfJoinMinusHashUndef=o},5985:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BindingsIndex=void 0;const n=r(22112);class i{constructor(e){this.data={},this.keys=e}static hashTerm(e){return e&&"Variable"!==e.termType?(0,n.termToString)(e):""}add(e){if(this.isBindingsValid(e)){let t=this.data;for(const r of this.keys){const n=i.hashTerm(e.get(r));let a=t[n];a||(a=t[n]={}),t=a}}}contains(e){return!!this.isBindingsValid(e)&&this.containsRecursive(e,this.keys,[this.data])}isBindingsValid(e){let t=!1;for(const r of this.keys)if(e.get(r)){t=!0;break}return t}containsRecursive(e,t,r){if(0===t.length)return!0;let n;[n,...t]=t;for(const a of r){const r=i.hashTerm(e.get(n));if(r){const n=[a[r],a[""]].filter(Boolean);if(0===n.length)continue;if(this.containsRecursive(e,t,n))return!0}else{let r=Object.keys(a).map((e=>a[e]));if(0===r.length&&(r=[{}]),this.containsRecursive(e,t,r))return!0}}return!1}}t.BindingsIndex=i},98311:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18014),t)},99917:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMinusHash=void 0;const n=r(59510),i=r(32353);class a extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"minus",physicalName:"hash",limitEntries:2})}async getOutput(e){const t=e.entries[1].output,r=e.entries[0].output,a=await i.ActorRdfJoin.getMetadatas(e.entries),o=i.ActorRdfJoin.overlappingVariables(a);if(o.length>0){const e={},a=new n.ClosableTransformIterator((async()=>(await new Promise((r=>{t.bindingsStream.on("data",(t=>{e[i.ActorRdfJoin.hashNonClashing(t,o)]=!0})),t.bindingsStream.on("end",r),t.bindingsStream.on("error",(e=>{a.emit("error",e)}))})),r.bindingsStream.filter((t=>!e[i.ActorRdfJoin.hashNonClashing(t,o)])))),{autoStart:!1,onClose(){t.bindingsStream.destroy(),r.bindingsStream.destroy()}});return{result:{type:"bindings",bindingsStream:a,metadata:r.metadata}}}return t.bindingsStream.destroy(),{result:r}}async getJoinCoefficients(e,t){const r=i.ActorRdfJoin.getRequestInitialTimes(t),n=i.ActorRdfJoin.getRequestItemTimes(t);return{iterations:t[0].cardinality.value+t[1].cardinality.value,persistedItems:t[0].cardinality.value,blockingItems:t[0].cardinality.value,requestTime:r[0]+t[0].cardinality.value*n[0]+r[1]+t[1].cardinality.value*n[1]}}}t.ActorRdfJoinMinusHash=a},11688:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(99917),t)},46869:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinOptionalBind=void 0;const n=r(82331),i=r(91674),a=r(59510),o=r(32353),s=r(32227),c=r(31578);class u extends o.ActorRdfJoin{constructor(e){super(e,{logicalType:"optional",physicalName:"bind",limitEntries:2,canHandleUndefs:!0,isLeaf:!1})}async getOutput(e){const t=await i.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context);e.entries[1].output.bindingsStream.close();const r=e.context.set(s.KeysQueryOperation.joinLeftMetadata,await e.entries[0].output.metadata()).set(s.KeysQueryOperation.joinRightMetadatas,[await e.entries[1].output.metadata()]);return{result:{type:"bindings",bindingsStream:n.ActorRdfJoinMultiBind.createBindStream(this.bindOrder,e.entries[0].output.bindingsStream,[e.entries[1].operation],(async(e,t)=>{const n=e[0];return a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:n,context:r?.set(s.KeysQueryOperation.joinBindings,t)})).bindingsStream}),!0,t),metadata:async()=>await this.constructResultMetadata(e.entries,await o.ActorRdfJoin.getMetadatas(e.entries),e.context,{canContainUndefs:!0},!0)}}}async getJoinCoefficients(e,t){if(0===o.ActorRdfJoin.overlappingVariables(t).length)throw new Error(`Actor ${this.name} only join entries with at least one common variable`);const r=o.ActorRdfJoin.getRequestInitialTimes(t),n=o.ActorRdfJoin.getRequestItemTimes(t);if(e.entries[1].operation.type===c.Algebra.types.EXTEND||e.entries[1].operation.type===c.Algebra.types.GROUP)throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);const i=(await this.mediatorJoinSelectivity.mediate({entries:e.entries,context:e.context})).selectivity*this.selectivityModifier;return{iterations:t[0].cardinality.value*t[1].cardinality.value*i,persistedItems:0,blockingItems:0,requestTime:r[0]+t[0].cardinality.value*(n[0]+r[1]+i*t[1].cardinality.value*n[1])}}}t.ActorRdfJoinOptionalBind=u},64305:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(46869),t)},75015:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinOptionalHash=void 0;const n=r(59510),i=r(32353),a=r(76664),o=r(22112),s=r(66561),c=r(27900);class u extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"optional",physicalName:`hash-${e.canHandleUndefs?"undef":"def"}-${e.blocking?"blocking":"nonblocking"}`,limitEntries:2,canHandleUndefs:e.canHandleUndefs,requiresVariableOverlap:!0})}static constructIndex(e,t){return e?new c.BindingsIndexUndef(t,(e=>e&&"Variable"!==e.termType?(0,o.termToString)(e):"")):new s.BindingsIndexDef(t,i.ActorRdfJoin.hashNonClashing)}async getOutput(e){const t=e.entries[1].output,r=e.entries[0].output,o=await i.ActorRdfJoin.getMetadatas(e.entries),s=i.ActorRdfJoin.overlappingVariables(o);let c;return c=this.blocking?new n.ClosableTransformIterator((async()=>{const e=u.constructIndex(this.canHandleUndefs,s);return await new Promise((r=>{t.bindingsStream.on("data",(t=>{(e.getFirst(t)??e.put(t,[])).push(t)})),t.bindingsStream.on("end",r),t.bindingsStream.on("error",(e=>{c.emit("error",e)}))})),new a.MultiTransformIterator(r.bindingsStream,{multiTransform:t=>new a.ArrayIterator(e.get(t).flat().map((e=>i.ActorRdfJoin.joinBindings(t,e))).filter((e=>null!==e)),{autoStart:!1}),optional:!0,autoStart:!1})}),{autoStart:!1,onClose(){t.bindingsStream.destroy(),r.bindingsStream.destroy()}}):new n.ClosableTransformIterator((async()=>{const e=u.constructIndex(this.canHandleUndefs,s);let n=!0;return t.bindingsStream.on("data",(t=>{(e.getFirst(t)??e.put(t,new a.BufferedIterator({autoStart:!1})))._push(t)})),t.bindingsStream.on("end",(()=>{for(const t of e.values())t.close();n=!1})),t.bindingsStream.on("error",(e=>{c.emit("error",e)})),new a.MultiTransformIterator(r.bindingsStream,{multiTransform:t=>{let r=e.get(t);return 0===r.length&&(r=n?[e.put(t,new a.BufferedIterator({autoStart:!1}))]:[]),new a.UnionIterator(r.map((e=>e.clone())),{autoStart:!1}).map((e=>i.ActorRdfJoin.joinBindings(t,e)))},optional:!0,autoStart:!1})}),{autoStart:!1,onClose(){t.bindingsStream.destroy(),r.bindingsStream.destroy()}}),{result:{type:"bindings",bindingsStream:c,metadata:async()=>await this.constructResultMetadata(e.entries,await i.ActorRdfJoin.getMetadatas(e.entries),e.context,{canContainUndefs:!0},!0)}}}async getJoinCoefficients(e,t){const r=i.ActorRdfJoin.getRequestInitialTimes(t),n=i.ActorRdfJoin.getRequestItemTimes(t);let a=t[0].cardinality.value+t[1].cardinality.value;return this.canHandleUndefs||(a*=.8),this.blocking&&(a*=.9),{iterations:a,persistedItems:t[0].cardinality.value,blockingItems:this.blocking?t[0].cardinality.value:0,requestTime:r[0]+t[0].cardinality.value*n[0]+r[1]+t[1].cardinality.value*n[1]}}}t.ActorRdfJoinOptionalHash=u},66561:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BindingsIndexDef=void 0,t.BindingsIndexDef=class{constructor(e,t){this.keys=e,this.hashFn=t,this.index={}}put(e,t){return this.index[this.hashFn(e,this.keys)]=t}get(e){const t=this.getFirst(e);return t?[t]:[]}getFirst(e){return this.index[this.hashFn(e,this.keys)]}values(){return Object.values(this.index)}}},27900:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BindingsIndexUndef=void 0,t.BindingsIndexUndef=class{constructor(e,t){this.data={},this.keys=e,this.hashFn=t}put(e,t){if(this.isBindingsValid(e)){let r=this.data;for(let n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinOptionalNestedLoop=void 0;const n=r(32353),i=r(2922);class a extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"optional",physicalName:"nested-loop",limitEntries:2,canHandleUndefs:!0})}async getOutput(e){return{result:{type:"bindings",bindingsStream:new i.NestedLoopJoin(e.entries[0].output.bindingsStream,e.entries[1].output.bindingsStream,n.ActorRdfJoin.joinBindings,{optional:!0,autoStart:!1}),metadata:async()=>await this.constructResultMetadata(e.entries,await n.ActorRdfJoin.getMetadatas(e.entries),e.context,{canContainUndefs:!0},!0)}}}async getJoinCoefficients(e,t){const r=n.ActorRdfJoin.getRequestInitialTimes(t),i=n.ActorRdfJoin.getRequestItemTimes(t);return{iterations:t[0].cardinality.value*t[1].cardinality.value,persistedItems:0,blockingItems:0,requestTime:r[0]+t[0].cardinality.value*i[0]+r[1]+t[1].cardinality.value*i[1]}}}t.ActorRdfJoinOptionalNestedLoop=a},9391:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(67757),t)},7218:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JoinTypes=t.ActorRdfJoinSelectivityVariableCounting=void 0;const n=r(75245),i=r(31578);class a extends n.ActorRdfJoinSelectivity{constructor(e){super(e)}async test(e){return{accuracy:.5}}static getPatternCost(e){let t=1;return"Variable"===e.subject.termType&&(t+=4),"Variable"!==e.predicate.termType&&e.type!==i.Algebra.types.PATH||(t+=1),"Variable"===e.object.termType&&(t+=2),"Variable"===e.graph.termType&&(t+=1),t/9}static getJoinTypes(e,t){const r=[];return"Variable"===e.subject.termType?(e.subject.equals(t.subject)&&r.push(o.unboundSS),"pattern"===t.type&&e.subject.equals(t.predicate)&&r.push(o.unboundSP),e.subject.equals(t.object)&&r.push(o.unboundSO),e.subject.equals(t.graph)&&r.push(o.unboundSG)):(e.subject.equals(t.subject)&&r.push(o.boundSS),"pattern"===t.type&&e.subject.equals(t.predicate)&&r.push(o.boundSP),e.subject.equals(t.object)&&r.push(o.boundSO),e.subject.equals(t.graph)&&r.push(o.boundSG)),"pattern"===e.type&&("Variable"===e.predicate.termType?(e.predicate.equals(t.subject)&&r.push(o.unboundPS),"pattern"===t.type&&e.predicate.equals(t.predicate)&&r.push(o.unboundPP),e.predicate.equals(t.object)&&r.push(o.unboundPO),e.predicate.equals(t.graph)&&r.push(o.unboundPG)):(e.predicate.equals(t.subject)&&r.push(o.boundPS),"pattern"===t.type&&e.predicate.equals(t.predicate)&&r.push(o.boundPP),e.predicate.equals(t.object)&&r.push(o.boundPO),e.predicate.equals(t.graph)&&r.push(o.boundPG))),"Variable"===e.object.termType?(e.object.equals(t.subject)&&r.push(o.unboundOS),"pattern"===t.type&&e.object.equals(t.predicate)&&r.push(o.unboundOP),e.object.equals(t.object)&&r.push(o.unboundOO),e.object.equals(t.graph)&&r.push(o.unboundOG)):(e.object.equals(t.subject)&&r.push(o.boundOS),"pattern"===t.type&&e.object.equals(t.predicate)&&r.push(o.boundOP),e.object.equals(t.object)&&r.push(o.boundOO),e.object.equals(t.graph)&&r.push(o.boundOG)),"Variable"===e.graph.termType?(e.graph.equals(t.subject)&&r.push(o.unboundGS),"pattern"===t.type&&e.graph.equals(t.predicate)&&r.push(o.unboundGP),e.graph.equals(t.object)&&r.push(o.unboundGO),e.graph.equals(t.graph)&&r.push(o.unboundGG)):(e.graph.equals(t.subject)&&r.push(o.boundGS),"pattern"===t.type&&e.graph.equals(t.predicate)&&r.push(o.boundGP),e.graph.equals(t.object)&&r.push(o.boundGO),e.graph.equals(t.graph)&&r.push(o.boundGG)),r}static getOperationsPairwiseJoinCost(e,t){let r=a.MAX_PAIRWISE_COST;for(const n of a.getJoinTypes(e,t))switch(n){case o.boundSS:r-=4;break;case o.boundSP:r-=6;break;case o.boundSO:r-=2;break;case o.boundSG:case o.boundPS:r-=6;break;case o.boundPP:return 1;case o.boundPO:case o.boundPG:r-=6;break;case o.boundOS:r-=2;break;case o.boundOP:r-=6;break;case o.boundOO:r-=2;break;case o.boundOG:case o.boundGS:case o.boundGP:case o.boundGO:case o.boundGG:r-=6;break;case o.unboundSS:r-=2;break;case o.unboundSP:r-=3;break;case o.unboundSO:r-=1;break;case o.unboundSG:case o.unboundPS:case o.unboundPP:case o.unboundPO:case o.unboundPG:r-=3;break;case o.unboundOS:r-=1;break;case o.unboundOP:r-=3;break;case o.unboundOO:r-=1;break;case o.unboundOG:case o.unboundGS:case o.unboundGP:case o.unboundGO:case o.unboundGG:r-=3}return r/a.MAX_PAIRWISE_COST}static getOperationsJoinCost(e){const t=[];for(const r of e)i.Util.recurseOperation(r,{[i.Algebra.types.PATTERN]:e=>(t.push(e),!1),[i.Algebra.types.PATH]:e=>(t.push(e),!1)});let r=0,n=0;for(const e of t)for(const i of t)e!==i&&(r+=a.getOperationsPairwiseJoinCost(e,i),n++);return 0===n?1:r/n*t.reduce(((e,t)=>e*a.getPatternCost(t)),1)}async run(e){return e.entries.length<=1?{selectivity:1}:{selectivity:a.getOperationsJoinCost(e.entries.map((e=>e.operation)))}}}var o;t.ActorRdfJoinSelectivityVariableCounting=a,a.MAX_PAIRWISE_COST=82,function(e){e[e.boundSS=0]="boundSS",e[e.boundSP=1]="boundSP",e[e.boundSO=2]="boundSO",e[e.boundSG=3]="boundSG",e[e.boundPS=4]="boundPS",e[e.boundPP=5]="boundPP",e[e.boundPO=6]="boundPO",e[e.boundPG=7]="boundPG",e[e.boundOS=8]="boundOS",e[e.boundOP=9]="boundOP",e[e.boundOO=10]="boundOO",e[e.boundOG=11]="boundOG",e[e.boundGS=12]="boundGS",e[e.boundGP=13]="boundGP",e[e.boundGO=14]="boundGO",e[e.boundGG=15]="boundGG",e[e.unboundSS=16]="unboundSS",e[e.unboundSP=17]="unboundSP",e[e.unboundSO=18]="unboundSO",e[e.unboundSG=19]="unboundSG",e[e.unboundPS=20]="unboundPS",e[e.unboundPP=21]="unboundPP",e[e.unboundPO=22]="unboundPO",e[e.unboundPG=23]="unboundPG",e[e.unboundOS=24]="unboundOS",e[e.unboundOP=25]="unboundOP",e[e.unboundOO=26]="unboundOO",e[e.unboundOG=27]="unboundOG",e[e.unboundGS=28]="unboundGS",e[e.unboundGP=29]="unboundGP",e[e.unboundGO=30]="unboundGO",e[e.unboundGG=31]="unboundGG"}(o||(t.JoinTypes=o={}))},16703:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(7218),t)},66479:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAccumulateCanContainUndefs=void 0;const n=r(49877);class i extends n.ActorRdfMetadataAccumulate{constructor(e){super(e)}async test(e){return!0}async run(e){if("initialize"===e.mode)return{metadata:{canContainUndefs:!1}};let t=e.accumulatedMetadata.canContainUndefs;return e.appendingMetadata.canContainUndefs&&(t=!0),{metadata:{canContainUndefs:t}}}}t.ActorRdfMetadataAccumulateCanContainUndefs=i},27988:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(66479),t)},80547:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAccumulateCardinality=void 0;const n=r(49877);class i extends n.ActorRdfMetadataAccumulate{constructor(e){super(e)}async test(e){return!0}async run(e){if("initialize"===e.mode)return{metadata:{cardinality:{type:"exact",value:0}}};const t={...e.accumulatedMetadata.cardinality};if(t.dataset){if(e.accumulatedMetadata.defaultGraph===t.dataset&&t.dataset!==e.appendingMetadata.cardinality.dataset)return{metadata:{cardinality:e.appendingMetadata.cardinality}};if(!e.appendingMetadata.cardinality.dataset)return{metadata:{cardinality:t}};if(t.dataset!==e.appendingMetadata.cardinality.dataset&&e.appendingMetadata.subsetOf===t.dataset)return{metadata:{cardinality:e.appendingMetadata.cardinality}};if(t.dataset===e.appendingMetadata.cardinality.dataset)return{metadata:{cardinality:t}};delete t.dataset}return e.appendingMetadata.cardinality&&Number.isFinite(e.appendingMetadata.cardinality.value)?("estimate"===e.appendingMetadata.cardinality.type&&(t.type="estimate"),t.value+=e.appendingMetadata.cardinality.value):(t.type="estimate",t.value=Number.POSITIVE_INFINITY),{metadata:{cardinality:t}}}}t.ActorRdfMetadataAccumulateCardinality=i},67243:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(80547),t)},15881:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAccumulatePageSize=void 0;const n=r(49877);class i extends n.ActorRdfMetadataAccumulate{constructor(e){super(e)}async test(e){return!0}async run(e){return"initialize"===e.mode?{metadata:{}}:{metadata:{..."pageSize"in e.accumulatedMetadata||"pageSize"in e.appendingMetadata?{pageSize:(e.accumulatedMetadata.pageSize??0)+(e.appendingMetadata.pageSize??0)}:{}}}}}t.ActorRdfMetadataAccumulatePageSize=i},91475:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(15881),t)},68951:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAccumulateRequestTime=void 0;const n=r(49877);class i extends n.ActorRdfMetadataAccumulate{constructor(e){super(e)}async test(e){return!0}async run(e){return"initialize"===e.mode?{metadata:{}}:{metadata:{..."requestTime"in e.accumulatedMetadata||"requestTime"in e.appendingMetadata?{requestTime:(e.accumulatedMetadata.requestTime??0)+(e.appendingMetadata.requestTime??0)}:{}}}}}t.ActorRdfMetadataAccumulateRequestTime=i},26719:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(68951),t)},85702:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAll=void 0;const n=r(52628),i=r(58521);class a extends n.ActorRdfMetadata{constructor(e){super(e)}async test(e){return!0}async run(e){const t=new i.Readable({objectMode:!0}),r=new i.Readable({objectMode:!0});e.quads.on("error",(e=>{t.emit("error",e),r.emit("error",e)})),e.quads.on("end",(()=>{t.push(null),r.push(null)}));const n=t._read=r._read=i=>{for(;i>0;){const a=e.quads.read();if(null===a)return e.quads.once("readable",(()=>n(i)));i--,t.push(a),r.push(a)}};return{data:t,metadata:r}}}t.ActorRdfMetadataAll=a},64443:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(85702),t)},94425:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractAllowHttpMethods=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){const t={};return e.headers?.get("allow")&&(t.allowHttpMethods=e.headers.get("allow")?.split(/, */u)),{metadata:t}}}t.ActorRdfMetadataExtractAllowHttpMethods=i},40751:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(94425),t)},30066:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractHydraControls=void 0;const n=r(10800),i=r(68492);class a extends n.ActorRdfMetadataExtract{constructor(e){super(e),this.parsedUriTemplateCache={}}async test(e){return!0}getLinks(e,t){return Object.fromEntries(a.LINK_TYPES.map((r=>{const n=t[r]||t[`${r}Page`],i=n&&n[e];return[r,i&&i.length>0?[i[0]]:[]]})))}parseUriTemplateCached(e){return this.parsedUriTemplateCache[e]||(this.parsedUriTemplateCache[e]=(0,i.parse)(e))}getSearchForms(e){const t=e.search,r=[];if(t)for(const n in t)for(const i of t[n]){const t=(e.template||{})[i]||[];if(1!==t.length)throw new Error(`Expected 1 hydra:template for ${i}`);const a=t[0],o=this.parseUriTemplateCached(a),s=Object.fromEntries(((e.mapping||{})[i]||[]).map((t=>{const r=((e.variable||{})[t]||[])[0],n=((e.property||{})[t]||[])[0];if(!r)throw new Error(`Expected a hydra:variable for ${t}`);if(!n)throw new Error(`Expected a hydra:property for ${t}`);return[n,r]}))),c=e=>o.expand(Object.fromEntries(Object.keys(e).map((t=>[s[t],e[t]]))));r.push({dataset:n,template:a,mappings:s,getUri:c})}return{values:r}}getHydraProperties(e){return new Promise(((t,r)=>{e.on("error",r);const n={};e.on("data",(e=>{if(e.predicate.value.startsWith(a.HYDRA)){const t=e.predicate.value.slice(a.HYDRA.length),r=n[t]||(n[t]={});(r[e.subject.value]||(r[e.subject.value]=[])).push(e.object.value)}})),e.on("end",(()=>t(n)))}))}async run(e){const t={},r=await this.getHydraProperties(e.metadata);return Object.assign(t,this.getLinks(e.url,r)),t.searchForms=this.getSearchForms(r),{metadata:t}}}t.ActorRdfMetadataExtractHydraControls=a,a.HYDRA="http://www.w3.org/ns/hydra/core#",a.LINK_TYPES=["first","next","previous","last"]},85405:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(30066),t)},68714:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractHydraCount=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}run(e){return new Promise(((t,r)=>{e.metadata.on("error",r),e.metadata.on("data",(e=>{this.predicates.includes(e.predicate.value)&&t({metadata:{cardinality:{type:"estimate",value:Number.parseInt(e.object.value,10),dataset:e.subject.value}}})})),e.metadata.on("end",(()=>{t({metadata:{cardinality:{type:"estimate",value:0}}})}))}))}}t.ActorRdfMetadataExtractHydraCount=i},57586:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(68714),t)},77690:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractHydraPagesize=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){return new Promise(((t,r)=>{e.metadata.on("error",r),e.metadata.on("data",(e=>{this.predicates.includes(e.predicate.value)&&t({metadata:{pageSize:Number.parseInt(e.object.value,10)}})})),e.metadata.on("end",(()=>{t({metadata:{}})}))}))}}t.ActorRdfMetadataExtractHydraPagesize=i},54777:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(77690),t)},43875:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractPatchSparqlUpdate=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){const t={};return(e.headers?.get("accept-patch")?.includes("application/sparql-update")??e.headers?.get("ms-author-via")?.includes("SPARQL"))&&(t.patchSparqlUpdate=!0),{metadata:t}}}t.ActorRdfMetadataExtractPatchSparqlUpdate=i},55282:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(43875),t)},86312:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractPutAccepted=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){const t={};return e.headers?.get("accept-put")&&(t.putAccepted=e.headers.get("accept-put")?.split(/, */u)),{metadata:t}}}t.ActorRdfMetadataExtractPutAccepted=i},44549:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(86312),t)},66468:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractRequestTime=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){return{metadata:{requestTime:e.requestTime}}}}t.ActorRdfMetadataExtractRequestTime=i},7445:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(66468),t)},42214:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractSparqlService=void 0;const n=r(10800),i=r(9929);class a extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){return new Promise(((t,r)=>{e.metadata.on("error",r);const n={};e.metadata.on("data",(t=>{"http://www.w3.org/ns/sparql-service-description#endpoint"!==t.predicate.value||"BlankNode"!==t.subject.termType&&t.subject.value!==e.url?"http://www.w3.org/ns/sparql-service-description#defaultGraph"===t.predicate.value&&(n.defaultGraph=t.object.value):(n.sparqlService="Literal"===t.object.termType?(0,i.resolve)(t.object.value,e.url):t.object.value,this.inferHttpsEndpoint&&e.url.startsWith("https")&&!n.sparqlService.startsWith("https")&&(n.sparqlService=n.sparqlService.replace("http:","https:")))})),e.metadata.on("end",(()=>{t({metadata:n})}))}))}}t.ActorRdfMetadataExtractSparqlService=a},3187:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(42214),t)},82889:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataPrimaryTopic=void 0;const n=r(52628),i=r(58521);class a extends n.ActorRdfMetadata{constructor(e){super(e)}async test(e){if(e.triples)throw new Error("This actor only supports non-triple quad streams.");return!0}async run(e){const t=new i.Readable({objectMode:!0}),r=new i.Readable({objectMode:!0}),n=()=>{t._read=r._read=()=>{},e.quads.on("error",(e=>{t.emit("error",e),r.emit("error",e)}));const n={};let i;const a={};e.quads.on("data",(t=>{"http://rdfs.org/ns/void#subset"===t.predicate.value&&t.object.value===e.url?i=t.subject.value:"http://xmlns.com/foaf/0.1/primaryTopic"===t.predicate.value&&(a[t.object.value]=t.subject.value);let r=n[t.graph.value];r||(r=n[t.graph.value]=[]),r.push(t)})),e.quads.on("end",(()=>{const e=i?a[i]:void 0;for(const i in n)if(i===e){for(const e of n[i])r.push(e);if(this.metadataToData)for(const e of n[i])t.push(e)}else{for(const e of n[i])t.push(e);if(!e&&this.dataToMetadataOnInvalidMetadataGraph)for(const e of n[i])r.push(e)}t.push(null),r.push(null)}))};return t._read=r._read=()=>{n()},{data:t,metadata:r}}}t.ActorRdfMetadataPrimaryTopic=a},80848:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(82889),t)},99209:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseHtmlMicrodata=void 0;const n=r(65446),i=r(5558);class a extends n.ActorRdfParseHtml{constructor(e){super(e)}async test(e){return!0}async run(e){const t=e.headers?e.headers.get("content-type"):null,r=t?.includes("xml"),n=new i.MicrodataRdfParser({baseIRI:e.baseIRI,xmlMode:r});n.on("error",e.error),n.on("data",e.emit);const a=n.onEnd;return n.onEnd=()=>{a.call(n),e.end()},{htmlParseListener:n}}}t.ActorRdfParseHtmlMicrodata=a},42421:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(99209),t)},39149:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseHtmlRdfa=void 0;const n=r(65446),i=r(21860);class a extends n.ActorRdfParseHtml{constructor(e){super(e)}async test(e){return!0}async run(e){const t=e.headers?e.headers.get("content-type"):null,r=(e.headers&&e.headers.get("content-language"))??void 0,n=t&&t.includes("xml")?"xhtml":"html",a=new i.RdfaParser({baseIRI:e.baseIRI,profile:n,language:r});a.on("error",e.error),a.on("data",e.emit);const o=a.onEnd;return a.onEnd=()=>{o.call(a),e.end()},{htmlParseListener:a}}}t.ActorRdfParseHtmlRdfa=a},26585:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(39149),t)},42601:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseHtmlScript=void 0;const n=r(65446),i=r(14107);class a extends n.ActorRdfParseHtml{constructor(e){super(e)}async test(e){return!0}async run(e){const t=(await this.mediatorRdfParseMediatypes.mediate({context:e.context,mediaTypes:!0})).mediaTypes;return{htmlParseListener:new i.HtmlScriptListener(this.mediatorRdfParseHandle,e.emit,e.error,e.end,t,e.context,e.baseIRI,e.headers)}}}t.ActorRdfParseHtmlScript=a},14107:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HtmlScriptListener=void 0;const n=r(32227),i=r(58521),a=r(9929);class o{constructor(e,t,r,i,a,o,s,c){this.textChunksJsonLd=[],this.endBarrier=1,this.passedScripts=0,this.isFinalJsonLdProcessing=!1,this.mediatorRdfParseHandle=e,this.cbQuad=t,this.cbError=r,this.cbEnd=i,this.supportedTypes=a,this.context=o.set(n.KeysRdfParseHtmlScript.processingHtmlScript,!0),this.baseIRI=s,this.headers=c,this.onlyFirstScript=!1===o.get(n.KeysRdfParseHtmlScript.extractAllScripts);const u=this.baseIRI.indexOf("#");this.targetScriptId=u>0?this.baseIRI.slice(u+1,this.baseIRI.length):null}static newErrorCoded(e,t){const r=new Error(e);return r.code=t,r}onEnd(){0==--this.endBarrier&&(this.textChunksJsonLd.length>0?(this.handleMediaType="application/ld+json",this.textChunks=this.textChunksJsonLd,this.textChunks.push("]"),this.textChunksJsonLd=[],this.isFinalJsonLdProcessing=!0,this.endBarrier++,this.onTagClose()):(0===this.passedScripts&&this.targetScriptId&&this.cbError(o.newErrorCoded(`Failed to find targeted script id "${this.targetScriptId}"`,"loading document failed")),this.cbEnd()),this.isFinalJsonLdProcessing=!1)}onTagClose(){if(this.handleMediaType)if(this.requiresCustomJsonLdHandling(this.handleMediaType)&&!this.isFinalJsonLdProcessing)this.handleMediaType=void 0,this.textChunks=void 0,this.onEnd();else{const e=new i.Readable({objectMode:!0});e._read=()=>{};const t=this.textChunks,r={context:this.context,handle:{metadata:{baseIRI:this.baseIRI},data:e,headers:this.headers,context:this.context},handleMediaType:this.handleMediaType};this.mediatorRdfParseHandle.mediate(r).then((({handle:r})=>{r.data.on("error",(e=>this.cbError(o.newErrorCoded(e.message,"invalid script element")))).on("data",this.cbQuad).on("end",(()=>this.onEnd()));for(const r of t)e.push(r);e.push(null)})).catch((e=>{this.targetScriptId?this.cbError(o.newErrorCoded(e.message,"loading document failed")):this.onEnd()})),this.handleMediaType=void 0,this.textChunks=void 0}}onTagOpen(e,t){"base"===e&&t.href&&(this.baseIRI=(0,a.resolve)(t.href,this.baseIRI)),"script"!==e||this.targetScriptId&&t.id!==this.targetScriptId?this.handleMediaType=void 0:this.supportedTypes[t.type]?this.onlyFirstScript&&this.passedScripts>0?this.handleMediaType=void 0:(this.passedScripts++,this.handleMediaType=t.type,this.endBarrier++,this.requiresCustomJsonLdHandling(this.handleMediaType)?(this.textChunks=this.textChunksJsonLd,this.textChunks.push(0===this.textChunks.length?"[":",")):this.textChunks=[]):this.targetScriptId&&this.cbError(o.newErrorCoded(`Targeted script "${this.targetScriptId}" does not have a supported type`,"loading document failed"))}onText(e){this.handleMediaType&&this.textChunks.push(e)}requiresCustomJsonLdHandling(e){return!this.onlyFirstScript&&!this.targetScriptId&&"application/ld+json"===e}}t.HtmlScriptListener=o},3549:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(42601),t)},70256:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseHtml=void 0;const n=r(54592),i=r(41173),a=r(58521);class o extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t,r){const n=new a.Readable({objectMode:!0});n._read=()=>{};let o=0,s=1;function c(e){n.emit("error",e)}function u(){0==--s&&n.push(null)}const l={baseIRI:e.metadata?.baseIRI??"",context:r,emit:e=>{o--,n.push(e)},end:u,error:c,headers:e.headers};try{const t=await Promise.all(this.busRdfParseHtml.publish(l));s+=t.length;const r=[];for(const e of t){const{htmlParseListener:t}=await e.actor.run(l);r.push(t)}const a=new i.Parser({onclosetag(){try{for(const e of r)e.onTagClose()}catch(e){c(e)}},onend(){try{for(const e of r)e.onEnd()}catch(e){c(e)}u()},onopentag(e,t){try{for(const n of r)n.onTagOpen(e,t)}catch(e){c(e)}},ontext(e){try{for(const t of r)t.onText(e)}catch(e){c(e)}}},{decodeEntities:!0,recognizeSelfClosing:!0,xmlMode:!1}),d=n._read=t=>{for(o=Math.max(t,o);o>0;){const t=e.data.read();if(null===t)return void e.data.once("readable",(()=>d(0)));a.write(t.toString())}};e.data.on("error",c).on("end",(()=>a.end()))}catch(e){setTimeout((()=>{n.emit("error",e)}))}return{data:n}}}t.ActorRdfParseHtml=o},28955:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(70256),t)},61364:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseJsonLd=void 0;const n=r(54592),i=r(32227),a=r(50631),o=r(11817);class s extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async testHandle(e,t,r){if(r.has(i.KeysRdfParseHtmlScript.processingHtmlScript)&&"application/ld+json"!==t)throw new Error("JSON-LD in script tags can only have media type 'application/ld+json'");if(!t||!(t in this.mediaTypePriorities)&&!t.endsWith("+json"))throw new Error(`Unrecognized media type: ${t}`);return await this.testHandleChecked(e)}async runHandle(e,t,r){return{data:a.JsonLdParser.fromHttpResponse(e.metadata?.baseIRI??"",t,e.headers,{documentLoader:r.get(i.KeysRdfParseJsonLd.documentLoader)??new o.DocumentLoaderMediated(this.mediatorHttp,r),strictValues:r.get(i.KeysRdfParseJsonLd.strictValues),...r.get(i.KeysRdfParseJsonLd.parserOptions)}).import(e.data)}}}t.ActorRdfParseJsonLd=s},11817:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentLoaderMediated=void 0;const n=r(74870),i=r(31759),a=r(27202);class o extends a.FetchDocumentLoader{constructor(e,t){super(o.createFetcher(e,t)),this.mediatorHttp=e,this.context=t}static createFetcher(e,t){return async(r,a)=>{const o=await e.mediate({input:r,init:a,context:t});return o.json=async()=>JSON.parse(await(0,i.stringify)(n.ActorHttp.toNodeReadable(o.body))),o}}}t.DocumentLoaderMediated=o},54168:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(61364),t),i(r(11817),t)},20164:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseN3=void 0;const n=r(54592),i=r(72243);class a extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t,r){e.data.on("error",(e=>n.emit("error",e)));const n=e.data.pipe(new i.StreamParser({baseIRI:e.metadata?.baseIRI,format:t.endsWith("n3")?t:`${t}*`}));return{data:n,metadata:{triples:"text/turtle"===t||"application/n-triples"===t||"text/n3"===t}}}}t.ActorRdfParseN3=a},62917:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(20164),t)},61536:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseRdfXml=void 0;const n=r(54592),i=r(97990);class a extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async runHandle(e){e.data.on("error",(e=>t.emit("error",e)));const t=e.data.pipe(new i.RdfXmlParser({baseIRI:e.metadata?.baseIRI}));return{data:t,metadata:{triples:!0}}}}t.ActorRdfParseRdfXml=a},21487:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(61536),t)},62940:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseShaclc=void 0;const n=r(54592),i=r(31759),a=r(58521),o=r(21762),s=r(76268);class c extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t,r){const n=new s.PrefixWrappingIterator((0,i.stringify)(e.data).then((r=>(0,o.parse)(r,{extendedSyntax:"text/shaclc-ext"===t,baseIRI:e.metadata?.baseIRI})))),c=new a.Readable({objectMode:!0});return n.on("prefix",((...e)=>c.emit("prefix",...e))),{data:c.wrap(n),metadata:{triples:!0}}}}t.ActorRdfParseShaclc=c},76268:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PrefixWrappingIterator=void 0;const n=r(76664);class i extends n.WrappingIterator{constructor(e){super(e?.then((e=>(this.prefixes=e.prefixes,e))))}read(){if(this.prefixes){for(const e of Object.entries(this.prefixes))this.emit("prefix",...e);delete this.prefixes}return super.read()}}t.PrefixWrappingIterator=i},43352:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(62940),t)},91689:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseXmlRdfa=void 0;const n=r(54592),i=r(21860);class a extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t,r){const n=(e.headers&&e.headers.get("content-language"))??void 0;e.data.on("error",(e=>a.emit("error",e)));const a=e.data.pipe(new i.RdfaParser({baseIRI:e.metadata?.baseIRI,profile:"xml",language:n}));return{data:a,metadata:{triples:!0}}}}t.ActorRdfParseXmlRdfa=a},8137:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(91689),t)},43476:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfResolveHypermediaLinksNext=void 0;const n=r(22124);class i extends n.ActorRdfResolveHypermediaLinks{constructor(e){super(e)}async test(e){if(!e.metadata.next||0===e.metadata.next.length)throw new Error(`Actor ${this.name} requires a 'next' metadata entry.`);return!0}async run(e){return{links:e.metadata.next.map((e=>({url:e})))}}}t.ActorRdfResolveHypermediaLinksNext=i},34541:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(43476),t)},18553:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfResolveHypermediaLinksQueueFifo=void 0;const n=r(56102),i=r(7381);class a extends n.ActorRdfResolveHypermediaLinksQueue{constructor(e){super(e)}async test(e){return!0}async run(e){return{linkQueue:new i.LinkQueueFifo}}}t.ActorRdfResolveHypermediaLinksQueueFifo=a},7381:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkQueueFifo=void 0,t.LinkQueueFifo=class{constructor(){this.links=[]}push(e){return this.links.push(e),!0}getSize(){return this.links.length}isEmpty(){return 0===this.links.length}pop(){return this.links.shift()}peek(){return this.links[0]}}},34120:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18553),t),i(r(7381),t)},63986:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfSerializeJsonLd=void 0;const n=r(84025),i=r(85832);class a extends n.ActorRdfSerializeFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t,r){const n=new i.JsonLdSerializer({space:" ".repeat(this.jsonStringifyIndentSpaces)});let a;return"pipe"in e.quadStream?(e.quadStream.on("error",(e=>n.emit("error",e))),a=e.quadStream.pipe(n)):a=n.import(e.quadStream),{data:a}}}t.ActorRdfSerializeJsonLd=a},21935:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(63986),t)},34574:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfSerializeN3=void 0;const n=r(84025),i=r(72243);class a extends n.ActorRdfSerializeFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t){const r=new i.StreamWriter({format:t});let n;return"pipe"in e.quadStream?(e.quadStream.on("error",(e=>r.emit("error",e))),n=e.quadStream.pipe(r)):n=r.import(e.quadStream),{data:n,triples:"text/turtle"===t||"application/n-triples"===t||"text/n3"===t}}}t.ActorRdfSerializeN3=a},28510:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(34574),t)},80614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfSerializeShaclc=void 0;const n=r(84025),i=r(37754),a=r(58521),o=r(22939);class s extends n.ActorRdfSerializeFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t){const r=new a.Readable;r._read=()=>{};try{const n={};e.quadStream.on("prefix",((e,t)=>{n[e]=t}));const{text:a}=await(0,o.write)(await(0,i.default)(e.quadStream),{errorOnUnused:!0,extendedSyntax:"text/shaclc-ext"===t,prefixes:n});r.push(a),r.push(null)}catch(e){r._read=()=>{r.emit("error",e)}}return{data:r,triples:!0}}}t.ActorRdfSerializeShaclc=s},49343:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(80614),t)},60927:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateHypermediaPatchSparqlUpdate=void 0;const n=r(25345),i=r(92168);class a extends n.ActorRdfUpdateHypermedia{constructor(e){super(e,"patchSparqlUpdate")}async testMetadata(e){if(!e.forceDestinationType&&!e.metadata.patchSparqlUpdate)throw new Error(`Actor ${this.name} could not detect a destination with 'application/sparql-update' as 'Accept-Patch' header.`);if(!e.forceDestinationType&&!e.exists)throw new Error(`Actor ${this.name} can only patch a destination that already exists.`);return!0}async run(e){return this.logInfo(e.context,`Identified as patchSparqlUpdate destination: ${e.url}`),{destination:new i.QuadDestinationPatchSparqlUpdate(e.url,e.context,this.mediatorHttp)}}}t.ActorRdfUpdateHypermediaPatchSparqlUpdate=a},92168:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuadDestinationPatchSparqlUpdate=void 0;const n=r(74870),i=r(10288),a=r(64817),o=r(58521);t.QuadDestinationPatchSparqlUpdate=class{constructor(e,t,r){this.url=e,this.context=t,this.mediatorHttp=r}insert(e){return this.wrapSparqlUpdateRequest("INSERT",e)}async delete(e){return this.wrapSparqlUpdateRequest("DELETE",e)}async wrapSparqlUpdateRequest(e,t){const r=t.map((e=>{let t=`${(0,a.termToString)(e.subject)} ${(0,a.termToString)(e.predicate)} ${(0,a.termToString)(e.object)} .`;return t="DefaultGraph"===e.graph.termType?` ${t}\n`:` GRAPH ${(0,a.termToString)(e.graph)} { ${t} }\n`,t})).prepend([`${e} DATA {\n`]).append(["}"]),s=new o.Readable;s.wrap(r);const c=new i.Headers({"content-type":"application/sparql-update"}),u=await this.mediatorHttp.mediate({context:this.context,init:{headers:c,method:"PATCH",body:n.ActorHttp.toWebReadableStream(s)},input:this.url});await(0,n.validateAndCloseHttpResponse)(this.url,u)}async deleteGraphs(e,t,r){throw new Error("Patch-based SPARQL Update destinations don't support named graphs")}async createGraphs(e,t){throw new Error("Patch-based SPARQL Update destinations don't support named graphs")}}},87057:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(60927),t),i(r(92168),t)},26348:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateHypermediaPutLdp=void 0;const n=r(25345),i=r(99713);class a extends n.ActorRdfUpdateHypermedia{constructor(e){super(e,"putLdp")}async testMetadata(e){if(!e.forceDestinationType){if(!e.metadata.allowHttpMethods||!e.metadata.allowHttpMethods.includes("PUT"))throw new Error(`Actor ${this.name} could not detect a destination with 'Allow: PUT' header.`);if(e.exists)throw new Error(`Actor ${this.name} can only put on a destination that does not already exists.`)}return!0}async run(e){return this.logInfo(e.context,`Identified as putLdp destination: ${e.url}`),{destination:new i.QuadDestinationPutLdp(e.url,e.context,e.metadata.putAccepted||[],this.mediatorHttp,this.mediatorRdfSerializeMediatypes,this.mediatorRdfSerialize)}}}t.ActorRdfUpdateHypermediaPutLdp=a},99713:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuadDestinationPutLdp=void 0;const n=r(74870),i=r(10288);t.QuadDestinationPutLdp=class{constructor(e,t,r,n,i,a){this.url=e,this.context=t,this.mediaTypes=r,this.mediatorHttp=n,this.mediatorRdfSerializeMediatypes=i,this.mediatorRdfSerialize=a}insert(e){return this.wrapRdfUpdateRequest("INSERT",e)}async delete(e){throw new Error("Put-based LDP destinations don't support deletions")}async wrapRdfUpdateRequest(e,t){const{mediaTypes:r}=await this.mediatorRdfSerializeMediatypes.mediate({context:this.context,mediaTypes:!0}),a=this.mediaTypes.filter((e=>e in r)),o=a.length>0?a[0]:Object.keys(r).sort(((e,t)=>r[t]-r[e]))[0],{handle:{data:s}}=await this.mediatorRdfSerialize.mediate({context:this.context,handle:{quadStream:t,context:this.context},handleMediaType:o}),c=new i.Headers({"content-type":o}),u=await this.mediatorHttp.mediate({context:this.context,init:{headers:c,method:"PUT",body:n.ActorHttp.toWebReadableStream(s)},input:this.url});await(0,n.validateAndCloseHttpResponse)(this.url,u)}async deleteGraphs(e,t,r){throw new Error("Put-based LDP destinations don't support named graphs")}async createGraphs(e,t){throw new Error("Put-based LDP destinations don't support named graphs")}}},3047:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(26348),t),i(r(99713),t)},33179:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateHypermediaSparql=void 0;const n=r(25345),i=r(89084);class a extends n.ActorRdfUpdateHypermedia{constructor(e){super(e,"sparql")}async testMetadata(e){if(!(e.forceDestinationType||e.metadata.sparqlService||this.checkUrlSuffixSparql&&e.url.endsWith("/sparql")||this.checkUrlSuffixUpdate&&e.url.endsWith("/update")))throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql or /update.`);return!0}async run(e){return this.logInfo(e.context,`Identified as sparql destination: ${e.url}`),{destination:new i.QuadDestinationSparql(e.metadata.sparqlService||e.url,e.context,this.mediatorHttp)}}}t.ActorRdfUpdateHypermediaSparql=a},89084:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuadDestinationSparql=void 0;const n=r(31759),i=r(74190),a=r(64817);t.QuadDestinationSparql=class{constructor(e,t,r){this.url=e,this.context=t,this.mediatorHttp=r,this.endpointFetcher=new i.SparqlEndpointFetcher({fetch:(e,t)=>this.mediatorHttp.mediate({input:e,init:t,context:this.context}),prefixVariableQuestionMark:!0})}insert(e){return this.wrapSparqlUpdateRequest("INSERT",e)}async delete(e){return this.wrapSparqlUpdateRequest("DELETE",e)}async wrapSparqlUpdateRequest(e,t){const r=t.map((e=>{let t=`${(0,a.termToString)(e.subject)} ${(0,a.termToString)(e.predicate)} ${(0,a.termToString)(e.object)} .`;return t="DefaultGraph"===e.graph.termType?` ${t}\n`:` GRAPH ${(0,a.termToString)(e.graph)} { ${t} }\n`,t})).prepend([`${e} DATA {\n`]).append(["}"]),i=await(0,n.stringify)(r);await this.endpointFetcher.fetchUpdate(this.url,i)}async deleteGraphs(e,t,r){const n=Array.isArray(e)?e:[e],i=[];for(const e of n){let n;n="string"==typeof e?e:"DefaultGraph"===e.termType?"DEFAULT":`GRAPH <${e.value}>`,i.push(`${r?"DROP":"CLEAR"} ${t?"":"SILENT "}${n}`)}await this.endpointFetcher.fetchUpdate(this.url,i.join("; "))}async createGraphs(e,t){const r=[];for(const n of e)r.push(`CREATE${t?"":" SILENT"} GRAPH <${n.value}>`);await this.endpointFetcher.fetchUpdate(this.url,r.join("; "))}}},58916:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(33179),t),i(r(89084),t)},24657:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateQuadsHypermedia=void 0;const n=r(86789),i=r(35069);class a extends n.ActorRdfUpdateQuadsDestination{constructor(e){super(e),this.cache=this.cacheSize?new i.LRUCache({max:this.cacheSize}):void 0;const t=this.cache;t&&this.httpInvalidator.addInvalidateListener((({url:e})=>e?t.delete(e):t.clear()))}async test(e){if(!(0,n.getContextDestinationUrl)((0,n.getContextDestination)(e.context)))throw new Error(`Actor ${this.name} can only update quads against a single destination URL.`);return!0}getDestination(e){const t=(0,n.getContextDestination)(e);let r=(0,n.getContextDestinationUrl)(t);if(this.cache&&this.cache.has(r))return this.cache.get(r);const i=(async()=>{let i,a;try{const t=await this.mediatorDereferenceRdf.mediate({context:e,url:r,acceptErrors:!0});a=t.exists,r=t.url;const n=await this.mediatorMetadata.mediate({context:e,url:r,quads:t.data,triples:t.metadata?.triples});i=(await this.mediatorMetadataExtract.mediate({context:e,url:r,metadata:n.metadata,headers:t.headers,requestTime:t.requestTime})).metadata}catch{i={},a=!1}const{destination:o}=await this.mediatorRdfUpdateHypermedia.mediate({context:e,url:r,metadata:i,exists:a,forceDestinationType:(0,n.getDataDestinationType)(t)});return o})();return this.cache&&this.cache.set(r,i),i}}t.ActorRdfUpdateQuadsHypermedia=a},88297:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(24657),t)},88332:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateQuadsRdfJsStore=void 0;const n=r(86789),i=r(38268);class a extends n.ActorRdfUpdateQuadsDestination{constructor(e){super(e)}async test(e){const t=(0,n.getContextDestination)(e.context);if(!t||"string"==typeof t||!("remove"in t)&&"value"in t&&!t.value.remove)throw new Error(`${this.name} received an invalid rdfjsStore.`);return!0}async getDestination(e){const t=(0,n.getContextDestination)(e);return new i.RdfJsQuadDestination("remove"in t?t:t.value)}}t.ActorRdfUpdateQuadsRdfJsStore=a},38268:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfJsQuadDestination=void 0;const n=r(35033),i=r(18050),a=r(22112),o=new i.DataFactory;t.RdfJsQuadDestination=class{constructor(e){this.store=e}delete(e){return(0,n.promisifyEventEmitter)(this.store.remove(e))}insert(e){return(0,n.promisifyEventEmitter)(this.store.import(e))}async deleteGraphs(e,t,r){switch(e){case"ALL":await(0,n.promisifyEventEmitter)(this.store.deleteGraph(o.defaultGraph()));case"NAMED":const t=this.store.match(),r={};t.on("data",(e=>{"DefaultGraph"!==e.graph.termType&&(r[(0,a.termToString)(e.graph)]=!0)})),await(0,n.promisifyEventEmitter)(t),await Promise.all(Object.keys(r).map((e=>(0,n.promisifyEventEmitter)(this.store.deleteGraph((0,a.stringToTerm)(e))))));break;default:for(const t of Array.isArray(e)?e:[e])await(0,n.promisifyEventEmitter)(this.store.deleteGraph(t))}}async createGraphs(e,t){if(t)for(const t of e){const e=this.store.match(void 0,void 0,void 0,t);await new Promise(((r,n)=>{e.once("data",(()=>{n(new Error(`Unable to create graph ${t.value} as it already exists`))})),e.on("end",r),e.on("error",n)}))}}}},76722:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88332),t)},67526:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Bindings=void 0;const n=r(34368),i=r(6081),a=r(17070);class o{constructor(e,t,r){this.type="bindings",this.dataFactory=e,this.entries=t,this.contextHolder=r}has(e){return this.entries.has("string"==typeof e?e:e.value)}get(e){return this.entries.get("string"==typeof e?e:e.value)}set(e,t){return new o(this.dataFactory,this.entries.set("string"==typeof e?e:e.value,t),this.contextHolder)}delete(e){return new o(this.dataFactory,this.entries.delete("string"==typeof e?e:e.value),this.contextHolder)}keys(){return this.mapIterable(this.iteratorToIterable(this.entries.keys()),(e=>this.dataFactory.variable(e)))}values(){return this.iteratorToIterable(this.entries.values())}forEach(e){for(const[t,r]of this.entries.entries())e(r,this.dataFactory.variable(t))}get size(){return this.entries.size}[Symbol.iterator](){return this.mapIterable(this.iteratorToIterable(this.entries.entries()),(([e,t])=>[this.dataFactory.variable(e),t]))[Symbol.iterator]()}equals(e){if(!e)return!1;if(this===e)return!0;if(this.size!==e.size)return!1;for(const t of this.keys())if(!this.get(t)?.equals(e.get(t)))return!1;return!0}filter(e){return new o(this.dataFactory,(0,i.Map)(this.entries.filter(((t,r)=>e(t,this.dataFactory.variable(r))))),this.contextHolder)}map(e){return new o(this.dataFactory,(0,i.Map)(this.entries.map(((t,r)=>e(t,this.dataFactory.variable(r))))),this.contextHolder)}merge(e){if(this.sizee.name))),c=t.keys().filter((e=>s.has(e.name)));for(const n of i){if(1===o[n.name])continue;o[n.name]=1;const i=c.some((e=>e.name===n.name));e[n.name]&&i?a[n.name]=e[n.name].run(t.get(n),r.get(n)):!e[n.name]&&i||(t.get(n)?r.get(n)||(a[n.name]=t.get(n)):a[n.name]=r.get(n))}return new n.ActionContext(a)}setContextEntry(e,t){return this.setContextEntryRaw(e,t)}setContextEntryRaw(e,t){return this.contextHolder&&this.contextHolder.context?new o(this.dataFactory,this.entries,{contextMergeHandlers:this.contextHolder.contextMergeHandlers,context:this.contextHolder.context.set(e,t)}):new o(this.dataFactory,this.entries,{contextMergeHandlers:this.contextHolder?.contextMergeHandlers??{},context:(new n.ActionContext).set(e,t)})}deleteContextEntry(e){return this.deleteContextEntryRaw(e)}deleteContextEntryRaw(e){return this.contextHolder?new o(this.dataFactory,this.entries,{contextMergeHandlers:this.contextHolder.contextMergeHandlers,context:this.contextHolder.context?.delete(e)}):new o(this.dataFactory,this.entries)}getContext(){return this.contextHolder?.context}getContextEntry(e){return this.getContext()?.get(e)}toString(){return(0,a.bindingsToString)(this)}*mapIterable(e,t){for(const r of e)yield t(r)}iteratorToIterable(e){return{[Symbol.iterator]:()=>e}}}t.Bindings=o},38846:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BindingsFactory=void 0;const n=r(6081),i=r(18050),a=r(67526);class o{constructor(e=new i.DataFactory,t){this.dataFactory=e,this.contextMergeHandlers=t}static async create(e,t){return new o(new i.DataFactory,(await e.mediate({context:t})).mergeHandlers)}bindings(e=[]){return new a.Bindings(this.dataFactory,(0,n.Map)(e.map((([e,t])=>[e.value,t]))),this.contextMergeHandlers?{contextMergeHandlers:this.contextMergeHandlers}:void 0)}fromBindings(e){return this.bindings([...e])}fromRecord(e){return this.bindings(Object.entries(e).map((([e,t])=>[this.dataFactory.variable(e),t])))}}t.BindingsFactory=o},17070:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.bindingsToString=void 0;const n=r(22112);t.bindingsToString=function(e){const t={};for(const r of e.keys())t[r.value]=(0,n.termToString)(e.get(r));return JSON.stringify(t,null," ")}},91674:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(67526),t),i(r(38846),t),i(r(17070),t)},53674:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocess=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorContextPreprocess=i},32362:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(53674),t)},18326:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceRdf=void 0;const n=r(47702);class i extends n.ActorDereferenceParse{constructor(e){super(e)}}t.ActorDereferenceRdf=i},53583:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18326),t)},96859:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereference=void 0;const n=r(5522);class i extends n.ActorDereferenceBase{constructor(e){super(e)}async handleDereferenceErrors(e,t,r,n=0){return this.dereferenceErrorHandler(e,t,{url:e.url,exists:!1,headers:r,requestTime:n})}}t.ActorDereference=i},5522:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceBase=t.isHardError=t.emptyReadable=void 0;const n=r(32227),i=r(34368),a=r(58521);function o(){const e=new a.Readable;return e.push(null),e}function s(e){return!e.get(n.KeysInitQuery.lenient)}t.emptyReadable=o,t.isHardError=s;class c extends i.Actor{constructor(e){super(e)}async dereferenceErrorHandler(e,t,r){if(s(e.context))throw t;return this.logWarn(e.context,t.message),{...r,data:o()}}}t.ActorDereferenceBase=c},75416:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceParse=t.getMediaTypeFromExtension=void 0;const n=r(58521),i=r(5522);function a(e,t){const r=e.lastIndexOf(".");return r>=0&&t?.[e.slice(r+1)]||""}t.getMediaTypeFromExtension=a;class o extends i.ActorDereferenceBase{constructor(e){super(e)}async test(e){return!0}handleDereferenceStreamErrors(e,t){return(0,i.isHardError)(e.context)||(t.on("error",(r=>{this.logWarn(e.context,r.message,(()=>({url:e.url}))),t.push(null)})),t=t.pipe(new n.PassThrough({objectMode:!0}))),t}async run(e){const{context:t}=e,r=await this.mediatorDereference.mediate({...e,mediaTypes:async()=>(await(this.mediatorParseMediatypes?.mediate({context:t,mediaTypes:!0})))?.mediaTypes});let n;try{n=(await this.mediatorParse.mediate({context:t,handle:{context:t,...r,metadata:await this.getMetadata(r)},handleMediaType:r.mediaType||a(r.url,this.mediaMappings)||e.mediaType})).handle,n.data=this.handleDereferenceStreamErrors(e,n.data)}catch(t){await(r.data.close?.()),n=await this.dereferenceErrorHandler(e,t,{})}return{...r,...n}}}t.ActorDereferenceParse=o},47702:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(96859),t),i(r(75416),t),i(r(5522),t)},45644:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHashBindings=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorHashBindings=i},38431:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(45644),t)},88044:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHashQuads=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorHashQuads=i},16179:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88044),t)},24608:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttpInvalidate=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorHttpInvalidate=i},1187:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttpInvalidateListenable=void 0;const n=r(24608);class i extends n.ActorHttpInvalidate{constructor(e){super(e),this.invalidateListeners=[],this.invalidateListeners=[]}addInvalidateListener(e){this.invalidateListeners.push(e)}async test(e){return!0}async run(e){for(const t of this.invalidateListeners)t(e);return{}}}t.ActorHttpInvalidateListenable=i},56320:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(24608),t),i(r(1187),t)},54283:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttp=void 0;const n=r(34368),i=r(33523);globalThis.ReadableStream||(globalThis.ReadableStream=r(55675).ReadableStream);const a=r(76605),o=r(84077);class s extends n.Actor{constructor(e){super(e)}static toNodeReadable(e){return a(e)||null===e?e:(0,i.readableFromWeb)(e)}static toWebReadableStream(e){return o(e)}static headersToHash(e){const t={};return e.forEach(((e,r)=>{t[r]=e})),t}}t.ActorHttp=s},74870:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(54283),t),i(r(92151),t)},92151:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateAndCloseHttpResponse=void 0;const n=r(31759),i=r(54283);t.validateAndCloseHttpResponse=async function(e,t){if(t.status>=400){let r="empty response";if(t.body){const e=i.ActorHttp.toNodeReadable(t.body);r=await(0,n.stringify)(e)}throw new Error(`Could not update ${e} (HTTP status ${t.status}):\n${r}`)}await(t.body?.cancel())}},37983:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorInit=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorInit=i},99784:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(37983),t)},70735:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperation=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorOptimizeQueryOperation=i},6716:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(70735),t)},76986:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperation=void 0;const n=r(32227),i=r(34368),a=r(85156),o=r(75698);let s=0;class c extends i.Actor{constructor(e){super(e)}static getSafeBindings(e){return c.validateQueryOutput(e,"bindings"),e}static getSafeQuads(e){return c.validateQueryOutput(e,"quads"),e}static getSafeBoolean(e){return c.validateQueryOutput(e,"boolean"),e}static getSafeVoid(e){return c.validateQueryOutput(e,"void"),e}static validateQueryOutput(e,t){if(e.type!==t)throw new Error(`Invalid query output type: Expected '${t}' but got '${e.type}'`)}static getBaseExpressionContext(e){const t=e.get(n.KeysInitQuery.queryTimestamp),r=e.get(n.KeysInitQuery.baseIRI),i=e.get(n.KeysInitQuery.functionArgumentsCache)??{};if(e.has(n.KeysInitQuery.extensionFunctionCreator)&&e.has(n.KeysInitQuery.extensionFunctions))throw new Error("Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context");let a=e.get(n.KeysInitQuery.extensionFunctionCreator);const o=e.get(n.KeysInitQuery.extensionFunctions);return o&&(a=e=>o[e.value]),{now:t,baseIRI:r,extensionFunctionCreator:a,functionArgumentsCache:i}}static getExpressionContext(e,t){return{...this.getBaseExpressionContext(e),bnode:e=>new a.BlankNodeBindingsScoped(e??"BNODE_"+s++)}}static getAsyncExpressionContext(e,t,r){return{...this.getBaseExpressionContext(e),bnode:e=>Promise.resolve(new a.BlankNodeBindingsScoped(e??"BNODE_"+s++)),exists:c.createExistenceResolver(e,t,r)}}static createExistenceResolver(e,t,r){return async(n,i)=>{const a=(0,o.materializeOperation)(n.input,i,r),s=await t.mediate({operation:a,context:e}),u=c.getSafeBindings(s);return n.not!==(1===(await u.bindingsStream.take(1).toArray()).length)}}static throwOnReadOnly(e){if(e.get(n.KeysQueryOperation.readOnly))throw new Error("Attempted a write operation in read-only mode")}static getOperationSource(e){return e.metadata?.scopedSource}static assignOperationSource(e,t){return(e={...e}).metadata=e.metadata?{...e.metadata}:{},e.metadata.scopedSource=t,e}static removeOperationSource(e){delete e.metadata?.scopedSource,e.metadata&&0===Object.keys(e.metadata).length&&delete e.metadata}static doesShapeAcceptOperation(e,t,r){return"conjunction"===e.type?e.children.every((e=>c.doesShapeAcceptOperation(e,t,r))):"disjunction"===e.type?e.children.some((e=>c.doesShapeAcceptOperation(e,t,r))):"arity"===e.type?c.doesShapeAcceptOperation(e.child,t,r):!((r?.joinBindings&&!e.joinBindings)??(r?.filterBindings&&!e.filterBindings))&&("type"===e.operation.operationType?"project"===e.operation.type||e.operation.type===t.type:e.operation.pattern.type===t.type)}}t.ActorQueryOperation=c},19028:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationTyped=void 0;const n=r(32227),i=r(72394),a=r(76986);class o extends a.ActorQueryOperation{constructor(e,t){if(super({...e,operationName:t}),!this.operationName)throw new Error('A valid "operationName" argument must be provided.')}async test(e){if(!e.operation)throw new Error("Missing field 'operation' in a query operation action.");if(e.operation.type!==this.operationName)throw new Error(`Actor ${this.name} only supports ${this.operationName} operations, but got ${e.operation.type}`);const t=e.operation;return this.testOperation(t,e.context)}async run(e){const t=e.context.get(n.KeysInitQuery.physicalQueryPlanLogger);t&&(t.logOperation(e.operation.type,void 0,e.operation,e.context.get(n.KeysInitQuery.physicalQueryPlanNode),this.name,{}),e.context=e.context.set(n.KeysInitQuery.physicalQueryPlanNode,e.operation));const r=e.operation,a=e.context.set(n.KeysQueryOperation.operation,r),o=await this.runOperation(r,a);return"metadata"in o&&(o.metadata=(0,i.cachifyMetadata)(o.metadata)),o}}t.ActorQueryOperationTyped=o},90897:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationTypedMediated=void 0;const n=r(19028);class i extends n.ActorQueryOperationTyped{constructor(e,t){super(e,t)}}t.ActorQueryOperationTypedMediated=i},75698:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.materializeOperation=t.materializeTerm=void 0;const n=r(18050),i=r(22112),a=r(13252),o=r(31578),s=new n.DataFactory,c=s.literal("true",s.namedNode("http://www.w3.org/2001/XMLSchema#boolean"));function u(e,t){if("Variable"===e.termType){const r=t.get(e);if(r)return r}return"Quad"===e.termType&&(0,a.someTermsNested)(e,(e=>"Variable"===e.termType))?(0,a.mapTermsNested)(e,(e=>u(e,t))):e}function l(e,t,r){const n=[];for(const[a,o]of t)if(!r||r.some((e=>e.equals(a)))){const t={[(0,i.termToString)(a)]:o};n.push(e.createValues([a],[t]))}return n}t.materializeTerm=u,t.materializeOperation=function e(t,r,n,a={}){return a={strictTargetVariables:"strictTargetVariables"in a&&a.strictTargetVariables,bindFilter:!("bindFilter"in a)||a.bindFilter,originalBindings:"originalBindings"in a?a.originalBindings:r},o.Util.mapOperation(t,{path:(e,t)=>({recurse:!1,result:Object.assign(t.createPath(u(e.subject,r),e.predicate,u(e.object,r),u(e.graph,r)),{metadata:e.metadata})}),pattern:(e,t)=>({recurse:!1,result:Object.assign(t.createPattern(u(e.subject,r),u(e.predicate,r),u(e.object,r),u(e.graph,r)),{metadata:e.metadata})}),extend(t){if(r.has(t.variable)){if(a.strictTargetVariables)throw new Error(`Tried to bind variable ${(0,i.termToString)(t.variable)} in a BIND operator.`);return{recurse:!0,result:e(t.input,r,n,a)}}return{recurse:!0,result:t}},group(e,t){if(a.strictTargetVariables){for(const t of e.variables)if(r.has(t))throw new Error(`Tried to bind variable ${(0,i.termToString)(t)} in a GROUP BY operator.`);return{recurse:!0,result:e}}const n=e.variables.filter((e=>!r.has(e)));return{recurse:!0,result:t.createGroup(e.input,n,e.aggregates)}},project(t,o){if(a.strictTargetVariables){for(const e of t.variables)if(r.has(e))throw new Error(`Tried to bind variable ${(0,i.termToString)(e)} in a SELECT operator.`);return{recurse:!0,result:t}}for(const e of r.keys())for(const n of t.variables)if(n.equals(e)){r=r.delete(e);break}const s=l(o,a.originalBindings,t.variables);let c=e(t.input,r,n,a);return s.length>0&&(c=o.createJoin([...s,c])),{recurse:!1,result:o.createProject(c,t.variables)}},filter(t,i){const o=a.originalBindings;if("operator"!==t.expression.expressionType||0===o.size)return{recurse:!1,result:t};const s=l(i,o),c=e(t.expression,r,n,a);let u=e(t.input,r,n,a);return s.length>0&&(u=i.createJoin([...s,u])),{recurse:!1,result:i.createFilter(u,c)}},values(e,t){if(!a.strictTargetVariables){const n=e.variables.filter((e=>!r.has(e))),a=e.bindings.map((e=>{const t={...e};let n=!0;return r.forEach(((e,r)=>{const a=(0,i.termToString)(r);a in t&&(e.equals(t[a])||(n=!1),delete t[a])})),n?t:void 0})).filter(Boolean);return{recurse:!0,result:t.createValues(n,a)}}for(const t of e.variables)if(r.has(t))throw new Error(`Tried to bind variable ${(0,i.termToString)(t)} in a VALUES operator.`);return{recurse:!1,result:e}},expression(e,t){if(!a.bindFilter)return{recurse:!1,result:e};if("term"===e.expressionType)return{recurse:!1,result:t.createTermExpression(u(e.term,r))};if("operator"===e.expressionType)return"bound"===e.operator&&1===e.args.length&&"term"===e.args[0].expressionType&&[...r.keys()].some((t=>e.args[0].term.equals(t)))?{recurse:!1,result:t.createTermExpression(c)}:{recurse:!0,result:e};if("aggregate"===e.expressionType&&"variable"in e&&r.has(e.variable)){if(a.strictTargetVariables)throw new Error(`Tried to bind ${(0,i.termToString)(e.variable)} in a ${e.aggregator} aggregate.`);return{recurse:!0,result:e}}return{recurse:!0,result:e}}})}},32233:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BusQueryOperation=void 0;const n=r(34368);class i extends n.BusIndexed{constructor(e){super({...e,actorIdentifierFields:["operationName"],actionIdentifierFields:["operation","type"]})}}t.BusQueryOperation=i},57779:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ClosableIterator=void 0;const n=r(76664);class i extends n.AsyncIterator{constructor(e,t){super(),this.onClose=t.onClose,this._source=e,this._source[n.DESTINATION]=this,this._source.on("end",s),this._source.on("error",o),this._source.on("readable",a),this.readable=this._source.readable}read(){const e=this._source.read();return e||(this.readable=!1,this._source.done&&this.close()),e}_end(e){this.onClose(),this._source.removeListener("end",s),this._source.removeListener("error",o),this._source.removeListener("readable",a),delete this._source[n.DESTINATION],this._source.destroy(),super._end(e)}}function a(){this[n.DESTINATION].readable=!0}function o(e){this[n.DESTINATION].emit("error",e)}function s(){this[n.DESTINATION].close()}t.ClosableIterator=i},45371:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ClosableTransformIterator=void 0;const n=r(76664);class i extends n.TransformIterator{constructor(e,t){super(e,t),this.onClose=t.onClose}_end(e){this.onClose(),super._end(e)}}t.ClosableTransformIterator=i},59510:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(76986),t),i(r(19028),t),i(r(90897),t),i(r(75698),t),i(r(32233),t),i(r(57779),t),i(r(45371),t)},88098:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryParse=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorQueryParse=i},79744:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88098),t)},8906:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryProcess=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorQueryProcess=i},59946:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(8906),t)},2659:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerialize=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTyped{constructor(e){super(e)}}t.ActorQueryResultSerialize=i},51492:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeFixedMediaTypes=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTypedFixed{constructor(e){super(e)}async testHandleChecked(e,t){return!0}}t.ActorQueryResultSerializeFixedMediaTypes=i},22083:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(2659),t),i(r(51492),t)},44218:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyHypermedia=void 0;const n=r(34368);class i extends n.Actor{constructor(e,t){super(e),this.sourceType=t}async test(e){if(e.forceSourceType&&this.sourceType!==e.forceSourceType)throw new Error(`Actor ${this.name} is not able to handle source type ${e.forceSourceType}.`);return this.testMetadata(e)}}t.ActorQuerySourceIdentifyHypermedia=i},89168:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(44218),t)},521:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentify=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorQuerySourceIdentify=i},12982:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.filterMatchingQuotedQuads=t.quadsOrderToBindingsOrder=t.quadsMetadataToBindingsMetadata=t.setMetadata=t.getDuplicateElementLinks=t.getVariables=t.isTermVariable=t.quadsToBindings=void 0;const n=r(59510),i=r(72394),a=r(18050),o=r(22112),s=r(13252),c=r(10175),u=new a.DataFactory;function l(e){return"Variable"===e.termType}function d(e){return(0,s.uniqTerms)((0,s.getTermsNested)(e).filter(l))}function p(e){const t={};let r=!1;if((0,s.forEachTermsNested)(e,((e,n)=>{if("Variable"===e.termType){const i=(0,o.termToString)(e),a=(t[i]||(t[i]=[])).push(n);r=r||a>1}})),!r)return;const n={};for(const e in t){const r=t[e],i=r.slice(1);i.length>0&&(n[r[0].join("_")]=i)}return n}function h(e,t,r,n,a){const o=o=>{"canContainUndefs"in o||(o.canContainUndefs=!1),a&&(o.cardinality.type="estimate"),e.setProperty("metadata",f((0,i.validateMetadataQuads)(o),r,n)),o.state&&o.state.addInvalidateListener((()=>{h(e,t,r,n,a)}))},s=t.getProperty("metadata");s?o(s):t.getProperty("metadata",o)}function f(e,t,r){return{...e,canContainUndefs:!1,order:e.order?y(e.order,t):void 0,availableOrders:e.availableOrders?e.availableOrders.map((e=>({cost:e.cost,terms:y(e.terms,t)}))):void 0,variables:r}}function y(e,t){const r={};return e.map((e=>{const n=t[e.term];if(n&&!r[n])return r[n]=!0,{term:u.variable(n),direction:e.direction}})).filter(Boolean)}t.quadsToBindings=function(e,t,r,i){const a=d(t),o="Variable"===t.graph.termType&&!i,c=p(t),l=(0,s.reduceTermsNested)(t,((e,t,r)=>("Variable"===t.termType&&(e[r.join("_")]=t.value),e)),{});let f=e;o&&(f=f.filter((e=>"DefaultGraph"!==e.graph.termType))),c&&(f=f.filter((e=>{for(const t in c){const r=t.split("_"),n=(0,s.getValueNestedPath)(e,r);for(const r of c[t])if(!n.equals((0,s.getValueNestedPath)(e,r)))return!1}return!0})));const y=new n.ClosableIterator(f.map((e=>r.bindings(Object.keys(l).map((t=>{const r=t.split("_"),n=l[t],i=(0,s.getValueNestedPath)(e,r);return[u.variable(n),i]}))))),{onClose:()=>e.destroy()});return h(y,e,l,a,o||Boolean(c)),y},t.isTermVariable=l,t.getVariables=d,t.getDuplicateElementLinks=p,t.setMetadata=h,t.quadsMetadataToBindingsMetadata=f,t.quadsOrderToBindingsOrder=y,t.filterMatchingQuotedQuads=function(e,t){return(0,s.someTerms)(e,(e=>"Quad"===e.termType))&&(t=t.filter((t=>(0,c.matchPatternMappings)(t,e)))),t}},65483:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(521),t),i(r(12982),t)},36170:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinEntriesSort=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfJoinEntriesSort=i},84287:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(36170),t)},88125:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinSelectivity=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfJoinSelectivity=i},75245:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88125),t)},10654:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoin=void 0;const n=r(32227),i=r(34368),a=r(72394),o=r(18050),s=r(22112),c=r(57778),u=new o.DataFactory;class l extends i.Actor{constructor(e,t){super(e),this.includeInLogs=!0,this.logicalType=t.logicalType,this.physicalName=t.physicalName,this.limitEntries=t.limitEntries??Number.POSITIVE_INFINITY,this.limitEntriesMin=t.limitEntriesMin??!1,this.canHandleUndefs=t.canHandleUndefs??!1,this.isLeaf=t.isLeaf??!0,this.requiresVariableOverlap=t.requiresVariableOverlap??!1}static hash(e,t){return t.map((t=>{const r=e.get(t);return r?r.value:""})).join("")}static hashNonClashing(e,t){return t.map((t=>{const r=e.get(t);return r?(0,s.termToString)(r):""})).join("")}static overlappingVariables(e){const t=e.map((e=>e.variables));let r=t[0];for(const e of t.slice(1))r=r.filter((t=>e.some((e=>e.value===t.value))));return r}static joinVariables(e){return[...new Set(e.flatMap((e=>e.variables.map((e=>e.value)))))].map((e=>u.variable(e)))}static joinBindings(...e){if(0===e.length)return null;if(1===e.length)return e[0];let t=e[0];for(const r of e.slice(1)){const e=t.merge(r);if(!e)return null;t=e}return t}static getCardinality(e){return e.cardinality}static async getMetadatas(e){return await Promise.all(e.map((e=>e.output.metadata())))}static async getEntriesWithMetadatas(e){const t=await l.getMetadatas(e);return e.map(((e,r)=>({...e,metadata:t[r]})))}static getRequestInitialTimes(e){return e.map((e=>e.pageSize?0:e.requestTime??0))}static getRequestItemTimes(e){return e.map((e=>e.pageSize?(e.requestTime??0)/e.pageSize:0))}constructState(e){const t=new a.MetadataValidationState,r=()=>t.invalidate();for(const t of e)t.state.addInvalidateListener(r);return t}async constructResultMetadata(e,t,r,n={},i=!1){let a;return n.cardinality?a=n.cardinality:(a=t.reduce(((e,t)=>{const r=l.getCardinality(t);return{type:"estimate"===r.type?"estimate":e.type,value:e.value*(i?Math.max(1,r.value):r.value)}}),{type:"exact",value:1}),a.value*=(await this.mediatorJoinSelectivity.mediate({entries:e,context:r})).selectivity),{state:this.constructState(t),...n,cardinality:{type:a.type,value:a.value},canContainUndefs:n.canContainUndefs??t.some((e=>e.canContainUndefs)),variables:l.joinVariables(t)}}static async sortJoinEntries(e,t,r){if(t.some((e=>e.metadata.canContainUndefs)))return t;const n={};for(const e of t)for(const t of e.metadata.variables){let e=n[t.value];e||(e=0),n[t.value]=++e}const i=[];for(const[e,t]of Object.entries(n))t>=2&&i.push(e);if(0===i.length)throw new Error("Bind join can only join entries with at least one common variable");const a=[];for(const e of t){let t=!1;for(const r of e.metadata.variables)if(i.includes(r.value)){t=!0;break}t||a.push(e)}return(await e.mediate({entries:t,context:r})).entries.sort(((e,t)=>{const r=a.includes(e);return r===a.includes(t)?0:r?1:-1}))}async test(e){if(e.type!==this.logicalType)throw new Error(`${this.name} can only handle logical joins of type '${this.logicalType}', while '${e.type}' was given.`);if(e.entries.length<=1)throw new Error(`${this.name} requires at least two join entries.`);if(this.limitEntriesMin?e.entries.lengththis.limitEntries)throw new Error(`${this.name} requires ${this.limitEntries} join entries at ${this.limitEntriesMin?"least":"most"}. The input contained ${e.entries.length}.`);for(const t of e.entries)if("bindings"!==t.output.type)throw new Error(`Invalid type of a join entry: Expected 'bindings' but got '${t.output.type}'`);const t=await l.getMetadatas(e.entries);if(!this.canHandleUndefs)for(const e of t)if(e.canContainUndefs)throw new Error(`Actor ${this.name} can not join streams containing undefs`);if(this.requiresVariableOverlap&&0===l.overlappingVariables(t).length)throw new Error(`Actor ${this.name} can only join entries with at least one common variable`);return await this.getJoinCoefficients(e,t)}async run(e){let t;e.context.has(n.KeysInitQuery.physicalQueryPlanLogger)&&(t=e.context.get(n.KeysInitQuery.physicalQueryPlanNode),e.context=e.context.set(n.KeysInitQuery.physicalQueryPlanNode,e));const r=e.context.get(n.KeysInitQuery.physicalQueryPlanLogger);let i;this.includeInLogs&&r&&(i={},r.stashChildren(t,(e=>e.logicalOperator.startsWith("join"))),r.logOperation(`join-${this.logicalType}`,this.physicalName,e,t,this.name,i));const{result:o,physicalPlanMetadata:s}=await this.getOutput(e),u=await l.getMetadatas(e.entries);if(i){(0,c.instrumentIterator)(o.bindingsStream).then((t=>{r.appendMetadata(e,{cardinalityReal:t.count,timeSelf:t.timeSelf,timeLife:t.timeLife})})),Object.assign(i,s);const t=u.map(l.getCardinality);if(i.cardinalities=t,i.joinCoefficients=await this.getJoinCoefficients(e,u),this.isLeaf)for(let n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChunkedIterator=void 0;const n=r(76664);class i extends n.TransformIterator{constructor(e,t,r){super(e,r),this.chunk=[],this.blockSize=t}consumeChunkAsIterator(){const e=new n.ArrayIterator(this.chunk,{autoStart:!1});return this.chunk=[],e}_transform(e,t,r){this.chunk.push(e),this.chunk.length>=this.blockSize&&r(this.consumeChunkAsIterator()),t()}_flush(e){this.chunk.length>0&&this._push(this.consumeChunkAsIterator()),super._flush(e)}}t.ChunkedIterator=i},32353:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(10654),t),i(r(34875),t)},57778:(e,t)=>{"use strict";function r(e,t,n){if(!("_profileInstrumented"in e)){if(e._profileInstrumented=!0,"_read"in e){const r=e._read;e._read=(n,i)=>{const a=performance.now();r.call(e,n,(()=>{t.timeSelf+=performance.now()-a,i()}))}}if("read"in e){const r=e.read;e.read=()=>{const i=performance.now(),a=r.call(e);return n&&a&&t.count++,t.timeSelf+=performance.now()-i,a}}if(n){const r=performance.now();e.on("end",(()=>{t.timeLife=performance.now()-r}))}"_source"in e&&r(e._source,t,!1)}}Object.defineProperty(t,"__esModule",{value:!0}),t.instrumentIterator=void 0,t.instrumentIterator=function(e){const t={count:0,timeSelf:0,timeLife:0};return r(e,t,!0),new Promise((r=>{e.on("end",(()=>{r(t)}))}))}},97145:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAccumulate=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfMetadataAccumulate=i},49877:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(97145),t)},77879:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtract=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfMetadataExtract=i},10800:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(77879),t)},32124:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadata=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfMetadata=i},52628:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(32124),t)},15569:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseHtml=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfParseHtml=i},65446:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(15569),t)},20434:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParse=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTyped{constructor(e){super(e)}}t.ActorRdfParse=i},67719:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseFixedMediaTypes=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTypedFixed{constructor(e){super(e)}async testHandleChecked(e){return!0}}t.ActorRdfParseFixedMediaTypes=i},54592:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(20434),t),i(r(67719),t)},79773:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfResolveHypermediaLinksQueue=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfResolveHypermediaLinksQueue=i},25710:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},89798:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkQueueWrapper=void 0,t.LinkQueueWrapper=class{constructor(e){this.linkQueue=e}push(e,t){return this.linkQueue.push(e,t)}getSize(){return this.linkQueue.getSize()}isEmpty(){return this.linkQueue.isEmpty()}pop(){return this.linkQueue.pop()}peek(){return this.linkQueue.peek()}}},56102:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(79773),t),i(r(25710),t),i(r(89798),t)},11018:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfResolveHypermediaLinks=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfResolveHypermediaLinks=i},22124:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(11018),t)},29342:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfSerialize=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTyped{constructor(e){super(e)}}t.ActorRdfSerialize=i},34923:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfSerializeFixedMediaTypes=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTypedFixed{constructor(e){super(e)}async testHandleChecked(){return!0}}t.ActorRdfSerializeFixedMediaTypes=i},84025:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(29342),t),i(r(34923),t)},9917:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateHypermedia=void 0;const n=r(34368);class i extends n.Actor{constructor(e,t){super(e),this.destinationType=t}async test(e){if(e.forceDestinationType&&this.destinationType!==e.forceDestinationType)throw new Error(`Actor ${this.name} is not able to handle destination type ${e.forceDestinationType}.`);return this.testMetadata(e)}}t.ActorRdfUpdateHypermedia=i},25345:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(9917),t)},10303:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateQuads=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfUpdateQuads=i},96527:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateQuadsDestination=t.deskolemize=t.deskolemizeStream=void 0;const n=r(35106),i=r(32227),a=r(10303);function o(e,t){return e?.map((e=>(0,n.deskolemizeQuad)(e,t)))}function s(e){const t=e.context.get(i.KeysRdfUpdateQuads.destination),r=e.context.get(i.KeysQuerySourceIdentify.sourceIds)?.get(t);return r?{...e,quadStreamInsert:o(e.quadStreamInsert,r),quadStreamDelete:o(e.quadStreamDelete,r)}:e}t.deskolemizeStream=o,t.deskolemize=s;class c extends a.ActorRdfUpdateQuads{async test(e){return!0}async run(e){const t=await this.getDestination(e.context);return await this.getOutput(t,s(e))}async getOutput(e,t){return{execute:async()=>{await(t.quadStreamDelete?e.delete(t.quadStreamDelete):Promise.resolve()),await(t.deleteGraphs?e.deleteGraphs(t.deleteGraphs.graphs,t.deleteGraphs.requireExistence,t.deleteGraphs.dropGraphs):Promise.resolve()),await(t.createGraphs?e.createGraphs(t.createGraphs.graphs,t.createGraphs.requireNonExistence):Promise.resolve()),await(t.quadStreamInsert?e.insert(t.quadStreamInsert):Promise.resolve())}}}}t.ActorRdfUpdateQuadsDestination=c},54877:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},86789:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(10303),t),i(r(96527),t),i(r(54877),t),i(r(86368),t)},86368:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getContextDestinationUrl=t.getContextDestination=t.getDataDestinationContext=t.getDataDestinationValue=t.getDataDestinationType=t.isDataDestinationRawType=void 0;const n=r(32227);function i(e){return"string"==typeof e||"remove"in e}function a(e){return i(e)?e:e.value}t.isDataDestinationRawType=i,t.getDataDestinationType=function(e){return"string"==typeof e?"":"remove"in e?"rdfjsStore":e.type},t.getDataDestinationValue=a,t.getDataDestinationContext=function(e,t){return"string"==typeof e||"remove"in e||!e.context?t:t.merge(e.context)},t.getContextDestination=function(e){return e.get(n.KeysRdfUpdateQuads.destination)},t.getContextDestinationUrl=function(e){if(e){let t=a(e);if("string"==typeof t){const e=t.indexOf("#");return e>=0&&(t=t.slice(0,e)),t}}}},88851:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeysStatistics=t.KeysRdfJoin=t.KeysMergeBindingsContext=t.KeysRdfUpdateQuads=t.KeysQuerySourceIdentify=t.KeysRdfParseHtmlScript=t.KeysRdfParseJsonLd=t.KeysQueryOperation=t.KeysInitQuery=t.KeysHttpProxy=t.KeysHttpMemento=t.KeysHttpWayback=t.KeysHttp=t.KeysCore=void 0;const n=r(34368);t.KeysCore={log:n.CONTEXT_KEY_LOGGER},t.KeysHttp={includeCredentials:new n.ActionContextKey("@comunica/bus-http:include-credentials"),auth:new n.ActionContextKey("@comunica/bus-http:auth"),fetch:new n.ActionContextKey("@comunica/bus-http:fetch"),httpTimeout:new n.ActionContextKey("@comunica/bus-http:http-timeout"),httpBodyTimeout:new n.ActionContextKey("@comunica/bus-http:http-body-timeout"),httpRetryCount:new n.ActionContextKey("@comunica/bus-http:http-retry-count"),httpRetryDelay:new n.ActionContextKey("@comunica/bus-http:http-retry-delay"),httpRetryOnServerError:new n.ActionContextKey("@comunica/bus-http:http-retry-on-server-error")},t.KeysHttpWayback={recoverBrokenLinks:new n.ActionContextKey("@comunica/bus-http:recover-broken-links")},t.KeysHttpMemento={datetime:new n.ActionContextKey("@comunica/actor-http-memento:datetime")},t.KeysHttpProxy={httpProxyHandler:new n.ActionContextKey("@comunica/actor-http-proxy:httpProxyHandler")},t.KeysInitQuery={querySourcesUnidentified:new n.ActionContextKey("@comunica/actor-init-query:querySourcesUnidentified"),initialBindings:new n.ActionContextKey("@comunica/actor-init-query:initialBindings"),queryFormat:new n.ActionContextKey("@comunica/actor-init-query:queryFormat"),graphqlSingularizeVariables:new n.ActionContextKey("@comunica/actor-init-query:singularizeVariables"),lenient:new n.ActionContextKey("@comunica/actor-init-query:lenient"),queryString:new n.ActionContextKey("@comunica/actor-init-query:queryString"),query:new n.ActionContextKey("@comunica/actor-init-query:query"),baseIRI:new n.ActionContextKey("@comunica/actor-init-query:baseIRI"),functionArgumentsCache:new n.ActionContextKey("@comunica/actor-init-query:functionArgumentsCache"),queryTimestamp:new n.ActionContextKey("@comunica/actor-init-query:queryTimestamp"),extensionFunctionCreator:new n.ActionContextKey("@comunica/actor-init-query:extensionFunctionCreator"),extensionFunctions:new n.ActionContextKey("@comunica/actor-init-query:extensionFunctions"),cliArgsHandlers:new n.ActionContextKey("@comunica/actor-init-query:cliArgsHandlers"),explain:new n.ActionContextKey("@comunica/actor-init-query:explain"),physicalQueryPlanLogger:new n.ActionContextKey("@comunica/actor-init-query:physicalQueryPlanLogger"),physicalQueryPlanNode:new n.ActionContextKey("@comunica/actor-init-query:physicalQueryPlanNode"),jsonLdContext:new n.ActionContextKey("@context"),noCache:new n.ActionContextKey("@comunica/actor-init-query:noCache"),distinctConstruct:new n.ActionContextKey("@comunica/actor-init-query:distinctConstruct")},t.KeysQueryOperation={operation:new n.ActionContextKey("@comunica/bus-query-operation:operation"),joinLeftMetadata:new n.ActionContextKey("@comunica/bus-query-operation:joinLeftMetadata"),joinRightMetadatas:new n.ActionContextKey("@comunica/bus-query-operation:joinRightMetadatas"),joinBindings:new n.ActionContextKey("@comunica/bus-query-operation:joinBindings"),readOnly:new n.ActionContextKey("@comunica/bus-query-operation:readOnly"),isPathArbitraryLengthDistinctKey:new n.ActionContextKey("@comunica/bus-query-operation:isPathArbitraryLengthDistinct"),limitIndicator:new n.ActionContextKey("@comunica/bus-query-operation:limitIndicator"),unionDefaultGraph:new n.ActionContextKey("@comunica/bus-query-operation:unionDefaultGraph"),querySources:new n.ActionContextKey("@comunica/bus-query-operation:querySources")},t.KeysRdfParseJsonLd={documentLoader:new n.ActionContextKey("@comunica/actor-rdf-parse-jsonld:documentLoader"),strictValues:new n.ActionContextKey("@comunica/actor-rdf-parse-jsonld:strictValues"),parserOptions:new n.ActionContextKey("@comunica/actor-rdf-parse-jsonld:parserOptions")},t.KeysRdfParseHtmlScript={processingHtmlScript:new n.ActionContextKey("@comunica/actor-rdf-parse-html-script:processingHtmlScript"),extractAllScripts:new n.ActionContextKey("extractAllScripts")},t.KeysQuerySourceIdentify={sourceIds:new n.ActionContextKey("@comunica/bus-query-source-identify:sourceIds"),hypermediaSourcesAggregatedStores:new n.ActionContextKey("@comunica/bus-query-source-identify:hypermediaSourcesAggregatedStores"),traverse:new n.ActionContextKey("@comunica/bus-query-source-identify:traverse")},t.KeysRdfUpdateQuads={destination:new n.ActionContextKey("@comunica/bus-rdf-update-quads:destination")},t.KeysMergeBindingsContext={sourcesBinding:new n.ActionContextKey("@comunica/bus-merge-bindings-context:sourcesBinding")},t.KeysRdfJoin={lastPhysicalJoin:new n.ActionContextKey("@comunica/bus-rdf-join:lastPhysicalJoin")},t.KeysStatistics={discoveredLinks:new n.ActionContextKey("@comunica/bus-context-preprocess:discoveredLinks"),dereferencedLinks:new n.ActionContextKey("@comunica/bus-context-preprocess:dereferencedLinks")}},32227:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88851),t)},85865:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActionContextKey=t.ActionContext=void 0;const n=r(6081);class i{constructor(e={}){this.map=(0,n.Map)(e)}setDefault(e,t){return this.has(e)?this:this.set(e,t)}set(e,t){return this.setRaw(e.name,t)}setRaw(e,t){return new i(this.map.set(e,t))}delete(e){return new i(this.map.delete(e.name))}get(e){return this.getRaw(e.name)}getRaw(e){return this.map.get(e)}getSafe(e){if(!this.has(e))throw new Error(`Context entry ${e.name} is required but not available`);return this.get(e)}has(e){return this.hasRaw(e.name)}hasRaw(e){return this.map.has(e)}merge(...e){let t=this;for(const r of e)for(const e of r.keys())t=t.set(e,r.get(e));return t}keys(){return[...this.map.keys()].map((e=>new a(e)))}toJS(){return this.map.toJS()}toString(){return`ActionContext(${JSON.stringify(this.map.toJS())})`}[Symbol.for("nodejs.util.inspect.custom")](){return`ActionContext(${JSON.stringify(this.map.toJS(),null," ")})`}static ensureActionContext(e){return e instanceof i?e:new i((0,n.Map)(e??{}))}}t.ActionContext=i;class a{constructor(e){this.name=e}}t.ActionContextKey=a},71330:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActionObserver=void 0,t.ActionObserver=class{constructor(e){Object.assign(this,e)}}},4165:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Actor=void 0;const n=r(17395);class i{constructor(e){this.beforeActors=[],Object.assign(this,e),this.bus.subscribe(this),this.beforeActors.length>0&&this.bus.addDependencies(this,this.beforeActors)}static getContextLogger(e){return e.get(n.CONTEXT_KEY_LOGGER)}runObservable(e){const t=this.run(e);return this.bus.onRun(this,e,t),t}async initialize(){return!0}async deinitialize(){return!0}getDefaultLogData(e,t){const r=t?t():{};return r.actor=this.name,r}logTrace(e,t,r){const n=i.getContextLogger(e);n&&n.trace(t,this.getDefaultLogData(e,r))}logDebug(e,t,r){const n=i.getContextLogger(e);n&&n.debug(t,this.getDefaultLogData(e,r))}logInfo(e,t,r){const n=i.getContextLogger(e);n&&n.info(t,this.getDefaultLogData(e,r))}logWarn(e,t,r){const n=i.getContextLogger(e);n&&n.warn(t,this.getDefaultLogData(e,r))}logError(e,t,r){const n=i.getContextLogger(e);n&&n.error(t,this.getDefaultLogData(e,r))}logFatal(e,t,r){const n=i.getContextLogger(e);n&&n.fatal(t,this.getDefaultLogData(e,r))}}t.Actor=i},64802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Bus=void 0,t.Bus=class{constructor(e){this.actors=[],this.observers=[],this.dependencyLinks=new Map,Object.assign(this,e)}subscribe(e){this.actors.push(e),this.reorderForDependencies()}subscribeObserver(e){this.observers.push(e)}unsubscribe(e){const t=this.actors.indexOf(e);return t>=0&&(this.actors.splice(t,1),!0)}unsubscribeObserver(e){const t=this.observers.indexOf(e);return t>=0&&(this.observers.splice(t,1),!0)}publish(e){return this.actors.map((t=>({actor:t,reply:t.test(e)})))}onRun(e,t,r){for(const n of this.observers)n.onRun(e,t,r)}addDependencies(e,t){for(const r of t){let t=this.dependencyLinks.get(r);t||(t=[],this.dependencyLinks.set(r,t)),t.push(e)}this.reorderForDependencies()}reorderForDependencies(){if(this.dependencyLinks.size>0){const e=[];for(const t of this.dependencyLinks.keys()){const r=this.actors.indexOf(t);r>=0&&(this.actors.splice(r,1),e.push(t))}for(;e.length>0;){let t=-1;for(let r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BusIndexed=void 0;const n=r(64802);class i extends n.Bus{constructor(e){super(e),this.actorsIndex={}}subscribe(e){const t=this.getActorIdentifier(e)||"_undefined_";let r=this.actorsIndex[t];r||(r=this.actorsIndex[t]=[]),r.push(e),super.subscribe(e)}unsubscribe(e){const t=this.getActorIdentifier(e)||"_undefined_",r=this.actorsIndex[t];if(r){const n=r.indexOf(e);n>=0&&r.splice(n,1),0===r.length&&delete this.actorsIndex[t]}return super.unsubscribe(e)}publish(e){const t=this.getActionIdentifier(e);return t?[...this.actorsIndex[t]||[],...this.actorsIndex._undefined_||[]].map((t=>({actor:t,reply:t.test(e)}))):super.publish(e)}getActorIdentifier(e){return this.actorIdentifierFields.reduce(((e,t)=>e[t]),e)}getActionIdentifier(e){return this.actionIdentifierFields.reduce(((e,t)=>e[t]),e)}}t.BusIndexed=i},17395:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CONTEXT_KEY_LOGGER=void 0;const n=r(85865);t.CONTEXT_KEY_LOGGER=new n.ActionContextKey("@comunica/core:log")},81411:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Mediator=void 0,t.Mediator=class{constructor(e){Object.assign(this,e)}publish(e){const t=this.bus.publish(e);if(0===t.length)throw new Error(`No actors are able to reply to a message in the bus ${this.bus.name}`);return t}async mediateActor(e){return await this.mediateWith(e,this.publish(e))}async mediate(e){return(await this.mediateActor(e)).runObservable(e)}}},34368:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(85865),t),i(r(64802),t),i(r(45609),t),i(r(17395),t),i(r(71330),t),i(r(4165),t),i(r(81411),t)},72204:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlankNodeBindingsScoped=void 0,t.BlankNodeBindingsScoped=class{constructor(e){this.termType="BlankNode",this.singleBindingsScope=!0,this.value=e}equals(e){return!!e&&"BlankNode"===e.termType&&e.value===this.value}}},99094:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlankNodeScoped=void 0,t.BlankNodeScoped=class{constructor(e,t){this.termType="BlankNode",this.value=e,this.skolemized=t}equals(e){return!!e&&"BlankNode"===e.termType&&e.value===this.value}}},85156:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(99094),t),i(r(72204),t)},16095:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Aggregator=t.AggregatorComponent=void 0;const n=r(22112),i=r(50363),a=r(14624),o=r(46157);t.AggregatorComponent=class{static emptyValue(){}constructor(e,t){this.sharedContext=t,this.separator=e.separator||" ",this.termTransformer=new i.TermTransformer(t.superTypeProvider)}termToNumericOrError(e){if("Literal"!==e.termType)throw new Error(`Term with value ${e.value} has type ${e.termType} and is not a numeric literal`);if(!(0,o.isSubTypeOf)(e.datatype.value,a.TypeAlias.SPARQL_NUMERIC,this.sharedContext.superTypeProvider))throw new Error(`Term datatype ${e.datatype.value} with value ${e.value} has type ${e.termType} and is not a numeric literal`);return this.termTransformer.transformLiteral(e)}},t.Aggregator=class{constructor(e,t){this.aggregatorComponent=t,this.variableValues=new Map,this.distinct=e.distinct}static emptyValue(e){return e.emptyValue()}result(){return this.aggregatorComponent.result()}put(e,t=""){this.canSkip(e,t)||(this.aggregatorComponent.put(e),this.addSeen(e,t))}canSkip(e,t){const r=this.variableValues.get(t);return this.distinct&&void 0!==r&&r.has(n.termToString(e))}addSeen(e,t){this.distinct&&(this.variableValues.has(t)||this.variableValues.set(t,new Set),this.variableValues.get(t).add(n.termToString(e)))}}},37283:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Average=void 0;const n=r(11269),i=r(42711),a=r(63606),o=r(14624),s=r(16095);class c extends s.AggregatorComponent{constructor(){super(...arguments),this.summer=i.regularFunctions[o.RegularOperator.ADDITION],this.divider=i.regularFunctions[o.RegularOperator.DIVISION],this.state=void 0}static emptyValue(){return(0,a.integer)(0).toRDF()}put(e){if(void 0===this.state){const t=this.termToNumericOrError(e);this.state={sum:t,count:1}}else{const t=this.termToNumericOrError(e);this.state.sum=this.summer.apply([this.state.sum,t],this.sharedContext),this.state.count++}}result(){if(void 0===this.state)return c.emptyValue();const e=new n.IntegerLiteral(this.state.count);return this.divider.apply([this.state.sum,e],this.sharedContext).toRDF()}}t.Average=c},47943:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Count=void 0;const n=r(63606),i=r(16095);class a extends i.AggregatorComponent{constructor(){super(...arguments),this.state=void 0}static emptyValue(){return(0,n.integer)(0).toRDF()}put(){void 0===this.state&&(this.state=0),this.state++}result(){return void 0===this.state?a.emptyValue():(0,n.integer)(this.state).toRDF()}}t.Count=a},81663:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GroupConcat=void 0;const n=r(63606),i=r(16095);class a extends i.AggregatorComponent{constructor(){super(...arguments),this.state=void 0,this.lastLanguageValid=!0,this.lastLanguage=void 0}static emptyValue(){return(0,n.string)("").toRDF()}put(e){void 0===this.state?(this.state=e.value,"Literal"===e.termType&&(this.lastLanguage=e.language)):(this.state+=this.separator+e.value,this.lastLanguageValid&&"Literal"===e.termType&&this.lastLanguage!==e.language&&(this.lastLanguageValid=!1,this.lastLanguage=void 0))}result(){return void 0===this.state?a.emptyValue():this.lastLanguageValid&&this.lastLanguage?(0,n.langString)(this.state,this.lastLanguage).toRDF():(0,n.string)(this.state).toRDF()}}t.GroupConcat=a},73342:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Max=void 0;const n=r(20236),i=r(16095);class a extends i.AggregatorComponent{constructor(){super(...arguments),this.state=void 0}put(e){if("Literal"!==e.termType)throw new Error(`Term with value ${e.value} has type ${e.termType} and is not a literal`);(void 0===this.state||-1===(0,n.orderTypes)(this.state,e))&&(this.state=e)}result(){return void 0===this.state?a.emptyValue():this.state}}t.Max=a},59648:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Min=void 0;const n=r(20236),i=r(16095);class a extends i.AggregatorComponent{constructor(){super(...arguments),this.state=void 0}put(e){if("Literal"!==e.termType)throw new Error(`Term with value ${e.value} has type ${e.termType} and is not a literal`);(void 0===this.state||1===(0,n.orderTypes)(this.state,e))&&(this.state=e)}result(){return void 0===this.state?a.emptyValue():this.state}}t.Min=a},91664:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sample=void 0;const n=r(16095);class i extends n.AggregatorComponent{constructor(){super(...arguments),this.state=void 0}put(e){void 0===this.state&&(this.state=e)}result(){return void 0===this.state?i.emptyValue():this.state}}t.Sample=i},69091:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sum=void 0;const n=r(42711),i=r(63606),a=r(14624),o=r(16095);class s extends o.AggregatorComponent{constructor(){super(...arguments),this.state=void 0,this.summer=n.regularFunctions[a.RegularOperator.ADDITION]}static emptyValue(){return(0,i.integer)(0).toRDF()}put(e){if(void 0===this.state)this.state=this.termToNumericOrError(e);else{const t=this.termToNumericOrError(e);this.state=this.summer.apply([this.state,t],this.sharedContext)}}result(){return void 0===this.state?s.emptyValue():this.state.toRDF()}}t.Sum=s},59408:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WildcardCountAggregator=void 0;const n=r(22112),i=r(63606);t.WildcardCountAggregator=class{constructor(e){this.bindingValues=new Map,this.counter=0,this.distinct=e.distinct}putBindings(e){this.handleDistinct(e)||(this.counter+=1)}static emptyValue(){return(0,i.integer)(0).toRDF()}result(){return(0,i.integer)(this.counter).toRDF()}handleDistinct(e){if(this.distinct){const t=[...e];t.sort(((e,t)=>e[0].value.localeCompare(t[0].value)));const r=t.map((([e])=>e.value)).join(","),i=t.map((([,e])=>n.termToString(e))).join(","),a=this.bindingValues.get(r),o=void 0!==a&&a.has(i);return a||this.bindingValues.set(r,new Set),this.bindingValues.get(r).add(i),o}return!1}}},96300:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.aggregators=void 0;const n=r(37283),i=r(47943),a=r(81663),o=r(73342),s=r(59648),c=r(91664),u=r(69091);t.aggregators={count:i.Count,sum:u.Sum,min:s.Min,max:o.Max,avg:n.Average,group_concat:a.GroupConcat,sample:c.Sample}},19030:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AggregateEvaluator=void 0;const n=r(76206),i=r(86588);class a extends n.BaseAggregateEvaluator{constructor(e,t,r){super(e,i.SyncEvaluator.completeContext(t??{}),r),this.evaluator=new i.SyncEvaluator(e.expression,t)}put(e){if(!this.errorOccurred)if(this.isWildcard)this.wildcardAggregator.putBindings(e);else try{const t=this.evaluator.evaluate(e);this.aggregator.put(t)}catch(e){this.safeThrow(e)}}safeThrow(e){if(this.throwError)throw e;this.errorOccurred=!0}}t.AggregateEvaluator=a},74448:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncAggregateEvaluator=void 0;const n=r(98375),i=r(76206);class a extends i.BaseAggregateEvaluator{constructor(e,t,r){super(e,n.AsyncEvaluator.completeContext(t??{}),r),this.evaluator=new n.AsyncEvaluator(e.expression,t),this.errorOccurred=!1}async put(e){if(!this.errorOccurred)if(this.isWildcard)this.wildcardAggregator.putBindings(e);else try{const t=await this.evaluator.evaluate(e);if(!t||this.errorOccurred)return;this.aggregator.put(t)}catch(e){this.safeThrow(e)}}safeThrow(e){if(this.throwError)throw e;this.errorOccurred=!0}}t.AsyncAggregateEvaluator=a},98375:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncEvaluator=void 0;const n=r(35069),i=r(69119),a=r(76660),o=r(9062);class s{static completeContext(e){const t=e.now??new Date(Date.now());return{now:t,baseIRI:e.baseIRI??void 0,functionArgumentsCache:e.functionArgumentsCache??{},superTypeProvider:{cache:e.typeCache??new n.LRUCache({max:1e3}),discoverer:e.getSuperType??(()=>"term")},extensionFunctionCreator:e.extensionFunctionCreator,exists:e.exists,aggregate:e.aggregate,bnode:e.bnode,defaultTimeZone:e.defaultTimeZone??(0,a.extractTimeZone)(t)}}constructor(e,t={}){this.algExpr=e;const r=t.extensionFunctionCreator??(()=>{}),n=s.completeContext(t),a=new i.AlgebraTransformer({type:"async",creator:r,...n});this.expr=a.transformAlgebra(e),this.evaluator=new o.AsyncRecursiveEvaluator(n,a)}async evaluate(e){return(await this.evaluator.evaluate(this.expr,e)).toRDF()}async evaluateAsEBV(e){return(await this.evaluator.evaluate(this.expr,e)).coerceEBV()}async evaluateAsInternal(e){return await this.evaluator.evaluate(this.expr,e)}}t.AsyncEvaluator=s},86588:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncEvaluator=void 0;const n=r(35069),i=r(69119),a=r(76660),o=r(42425);class s{static completeContext(e){const t=e.now??new Date(Date.now());return{now:t,baseIRI:e.baseIRI??void 0,functionArgumentsCache:e.functionArgumentsCache??{},superTypeProvider:{cache:e.typeCache??new n.LRUCache({max:1e3}),discoverer:e.getSuperType??(()=>"term")},extensionFunctionCreator:e.extensionFunctionCreator,exists:e.exists,aggregate:e.aggregate,bnode:e.bnode,defaultTimeZone:e.defaultTimeZone??(0,a.extractTimeZone)(t)}}constructor(e,t={}){this.algExpr=e,this.context=t;const r=t.extensionFunctionCreator??(()=>{}),n=s.completeContext(t),a=new i.AlgebraTransformer({type:"sync",creator:r,...n});this.expr=a.transformAlgebra(e),this.evaluator=new o.SyncRecursiveEvaluator(n,a)}evaluate(e){return this.evaluator.evaluate(this.expr,e).toRDF()}evaluateAsEBV(e){return this.evaluator.evaluate(this.expr,e).coerceEBV()}evaluateAsInternal(e){return this.evaluator.evaluate(this.expr,e)}}t.SyncEvaluator=s},9062:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncRecursiveEvaluator=void 0;const n=r(11269),i=r(50363),a=r(82867),o=r(10667);class s extends o.BaseExpressionEvaluator{constructor(e,t){super(t??new i.TermTransformer(e.superTypeProvider)),this.context=e,this.subEvaluators={[n.ExpressionType.Term]:(e,t)=>this.term(e),[n.ExpressionType.Variable]:(e,t)=>this.variable(e,t),[n.ExpressionType.Operator]:(e,t)=>this.evalOperator(e,t),[n.ExpressionType.SpecialOperator]:(e,t)=>this.evalSpecialOperator(e,t),[n.ExpressionType.Named]:(e,t)=>this.evalNamed(e,t),[n.ExpressionType.Existence]:(e,t)=>this.evalExistence(e,t),[n.ExpressionType.Aggregate]:(e,t)=>this.evalAggregate(e),[n.ExpressionType.AsyncExtension]:(e,t)=>this.evalAsyncExtension(e,t)}}async evaluate(e,t){const r=this.subEvaluators[e.expressionType];if(!r)throw new a.InvalidExpressionType(e);return r.bind(this)(e,t)}async evalOperator(e,t){const r=e.args.map((e=>this.evaluate(e,t))),n=await Promise.all(r);return e.apply(n)}async evalSpecialOperator(e,t){const r=this.evaluate.bind(this),n={args:e.args,mapping:t,superTypeProvider:this.context.superTypeProvider,now:this.context.now,baseIRI:this.context.baseIRI,functionArgumentsCache:this.context.functionArgumentsCache,evaluate:r,bnode:this.context.bnode,defaultTimeZone:this.context.defaultTimeZone};return e.applyAsync(n)}async _evalAsyncArgs(e,t){const r=e.map((e=>this.evaluate(e,t)));return await Promise.all(r)}async evalNamed(e,t){return e.apply(await this._evalAsyncArgs(e.args,t))}async evalAsyncExtension(e,t){return await e.apply(await this._evalAsyncArgs(e.args,t))}async evalExistence(e,t){if(!this.context.exists)throw new a.NoExistenceHook;return new n.BooleanLiteral(await this.context.exists(e.expression,t))}async evalAggregate(e){if(!this.context.aggregate)throw new a.NoAggregator;return this.termTransformer.transformRDFTermUnsafe(await this.context.aggregate(e.expression))}}t.AsyncRecursiveEvaluator=s},76206:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseAggregateEvaluator=void 0;const n=r(31578),i=r(96300),a=r(16095),o=r(59408),s=r(82867);t.BaseAggregateEvaluator=class{constructor(e,t,r){this.throwError=!1,this.isWildcard=!1,this.errorOccurred=!1,this.expression=e,this.aggregator=new a.Aggregator(e,new i.aggregators[e.aggregator](e,t)),this.throwError=r??!1,this.isWildcard=e.expression.expressionType===n.Algebra.expressionTypes.WILDCARD,this.isWildcard&&(this.wildcardAggregator=new o.WildcardCountAggregator(e))}static emptyValue(e,t=!1){let r;if(r=e.expression.expressionType===n.Algebra.expressionTypes.WILDCARD?o.WildcardCountAggregator.emptyValue():a.Aggregator.emptyValue(i.aggregators[e.aggregator]),void 0===r&&t)throw new s.EmptyAggregateError;return r}result(){if(!this.errorOccurred)return this.isWildcard?this.wildcardAggregator.result():this.aggregator.result()}}},10667:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseExpressionEvaluator=void 0;const n=r(63606),i=r(82867);t.BaseExpressionEvaluator=class{constructor(e){this.termTransformer=e}term(e){return e}variable(e,t){const r=t.get((0,n.expressionToVar)(e));if(!r)throw new i.UnboundVariableError(e.name,t);return this.termTransformer.transformRDFTermUnsafe(r)}}},42425:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncRecursiveEvaluator=void 0;const n=r(11269),i=r(50363),a=r(82867),o=r(10667);class s extends o.BaseExpressionEvaluator{constructor(e,t){super(t??new i.TermTransformer(e.superTypeProvider)),this.context=e,this.subEvaluators={[n.ExpressionType.Term]:(e,t)=>this.term(e),[n.ExpressionType.Variable]:(e,t)=>this.variable(e,t),[n.ExpressionType.Operator]:(e,t)=>this.evalOperator(e,t),[n.ExpressionType.SpecialOperator]:(e,t)=>this.evalSpecialOperator(e,t),[n.ExpressionType.Named]:(e,t)=>this.evalNamed(e,t),[n.ExpressionType.Existence]:(e,t)=>this.evalExistence(e,t),[n.ExpressionType.Aggregate]:(e,t)=>this.evalAggregate(e),[n.ExpressionType.SyncExtension]:(e,t)=>this.evalSyncExtension(e,t)}}evaluate(e,t){const r=this.subEvaluators[e.expressionType];if(!r)throw new a.InvalidExpressionType(e);return r.bind(this)(e,t)}evalOperator(e,t){const r=e.args.map((e=>this.evaluate(e,t)));return e.apply(r)}evalSpecialOperator(e,t){const r=this.evaluate.bind(this),n={args:e.args,mapping:t,superTypeProvider:this.context.superTypeProvider,now:this.context.now,baseIRI:this.context.baseIRI,functionArgumentsCache:this.context.functionArgumentsCache,evaluate:r,bnode:this.context.bnode,defaultTimeZone:this.context.defaultTimeZone};return e.applySynchronously(n)}evalNamed(e,t){const r=e.args.map((e=>this.evaluate(e,t)));return e.apply(r)}evalSyncExtension(e,t){const r=e.args.map((e=>this.evaluate(e,t)));return e.apply(r)}evalExistence(e,t){if(!this.context.exists)throw new a.NoExistenceHook;return new n.BooleanLiteral(this.context.exists(e.expression,t))}evalAggregate(e){if(!this.context.aggregate)throw new a.NoAggregator;return this.termTransformer.transformRDFTermUnsafe(this.context.aggregate(e.expression))}}t.SyncRecursiveEvaluator=s},9950:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Aggregate=void 0;const n=r(89702);t.Aggregate=class{constructor(e,t){this.name=e,this.expression=t,this.expressionType=n.ExpressionType.Aggregate}}},29360:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncExtension=void 0;const n=r(89702);t.AsyncExtension=class{constructor(e,t,r){this.name=e,this.args=t,this.apply=r,this.expressionType=n.ExpressionType.AsyncExtension}}},75065:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Existence=void 0;const n=r(89702);t.Existence=class{constructor(e){this.expression=e,this.expressionType=n.ExpressionType.Existence}}},89702:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.asTermType=t.ExpressionType=void 0,function(e){e.Aggregate="aggregate",e.Existence="existence",e.Named="named",e.Operator="operator",e.SpecialOperator="specialOperator",e.Term="term",e.Variable="variable",e.AsyncExtension="asyncExtension",e.SyncExtension="syncExtension"}(r||(t.ExpressionType=r={})),t.asTermType=function(e){if("namedNode"===e||"literal"===e||"blankNode"===e||"quad"===e)return e}},67112:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Named=void 0;const n=r(89702);t.Named=class{constructor(e,t,r){this.name=e,this.args=t,this.apply=r,this.expressionType=n.ExpressionType.Named}}},27033:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Operator=void 0;const n=r(89702);t.Operator=class{constructor(e,t){this.args=e,this.apply=t,this.expressionType=n.ExpressionType.Operator}}},3358:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SpecialOperator=void 0;const n=r(89702);t.SpecialOperator=class{constructor(e,t,r){this.args=e,this.applyAsync=t,this.applySynchronously=r,this.expressionType=n.ExpressionType.SpecialOperator}}},62293:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncExtension=void 0;const n=r(89702);t.SyncExtension=class{constructor(e,t,r){this.name=e,this.args=t,this.apply=r,this.expressionType=n.ExpressionType.SyncExtension}}},79339:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isNonLexicalLiteral=t.NonLexicalLiteral=t.YearMonthDurationLiteral=t.DayTimeDurationLiteral=t.DurationLiteral=t.DateLiteral=t.TimeLiteral=t.DateTimeLiteral=t.StringLiteral=t.LangStringLiteral=t.BooleanLiteral=t.DoubleLiteral=t.FloatLiteral=t.DecimalLiteral=t.IntegerLiteral=t.NumericLiteral=t.Literal=t.isLiteralTermExpression=t.Quad=t.BlankNode=t.NamedNode=t.Term=void 0;const n=r(18050),i=r(50363),a=r(14624),o=r(14624),s=r(82867),c=r(19002),u=r(46157),l=r(89702),d=new n.DataFactory;class p{constructor(){this.expressionType=l.ExpressionType.Term}str(){throw new s.InvalidArgumentTypes([this],a.RegularOperator.STR)}coerceEBV(){throw new s.EBVCoercionError(this)}}t.Term=p,t.NamedNode=class extends p{constructor(e){super(),this.value=e,this.termType="namedNode"}toRDF(){return d.namedNode(this.value)}str(){return this.value}},t.BlankNode=class extends p{constructor(e){super(),this.termType="blankNode",this.value="string"==typeof e?d.blankNode(e):e}toRDF(){return this.value}},t.Quad=class extends p{constructor(e,t){super(),this.termType="quad",this.transformer=new i.TermTransformer(t),this.valueTerm=e}toRDF(){return this.valueTerm}get subject(){return this.transformer.transformRDFTermUnsafe(this.RDFsubject)}get predicate(){return this.transformer.transformRDFTermUnsafe(this.RDFpredicate)}get object(){return this.transformer.transformRDFTermUnsafe(this.RDFobject)}get RDFsubject(){return this.toRDF().subject}get RDFpredicate(){return this.toRDF().predicate}get RDFobject(){return this.toRDF().object}},t.isLiteralTermExpression=function(e){if("literal"===e.termType)return e};class h extends p{constructor(e,t,r,n){super(),this.typedValue=e,this.dataType=t,this.strValue=r,this.language=n,this.termType="literal"}toRDF(){return d.literal(this.strValue??this.str(),this.language??d.namedNode(this.dataType))}str(){return this.strValue??this.typedValue.toString()}}t.Literal=h;class f extends h{constructor(e,t,r,n){super(e,t,r,n),this.typedValue=e,this.strValue=r,this.language=n}coerceEBV(){return Boolean(this.typedValue)}toRDF(){const e=super.toRDF();return Number.isFinite(this.typedValue)||(e.value=e.value.replace("Infinity","INF")),e}str(){return this.strValue??this.specificFormatter(this.typedValue)}}t.NumericLiteral=f,t.IntegerLiteral=class extends f{constructor(e,t,r,n){super(e,t??o.TypeURL.XSD_INTEGER,r,n),this.typedValue=e,this.strValue=r,this.language=n}specificFormatter(e){return e.toFixed(0)}},t.DecimalLiteral=class extends f{constructor(e,t,r,n){super(e,t??o.TypeURL.XSD_DECIMAL,r,n),this.typedValue=e,this.strValue=r,this.language=n}specificFormatter(e){return e.toString()}},t.FloatLiteral=class extends f{constructor(e,t,r,n){super(e,t??o.TypeURL.XSD_FLOAT,r,n),this.typedValue=e,this.strValue=r,this.language=n}specificFormatter(e){return e.toString()}},t.DoubleLiteral=class extends f{constructor(e,t,r,n){super(e,t??o.TypeURL.XSD_DOUBLE,r,n),this.typedValue=e,this.strValue=r,this.language=n}specificFormatter(e){if(!Number.isFinite(e))return e>0?"INF":e<0?"-INF":"NaN";const t=e.toExponential(),[r,n]=t.split("e"),i=n.replace(/\+/u,"");return`${r.includes(".")?r:`${r}.0`}E${i}`}},t.BooleanLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_BOOLEAN,t),this.typedValue=e,this.strValue=t}coerceEBV(){return this.typedValue}},t.LangStringLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.RDF_LANG_STRING,e,t),this.typedValue=e,this.language=t}coerceEBV(){return this.str().length>0}},t.StringLiteral=class extends h{constructor(e,t){super(e,t??o.TypeURL.XSD_STRING,e),this.typedValue=e}coerceEBV(){return this.str().length>0}},t.DateTimeLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_DATE_TIME,t),this.typedValue=e,this.strValue=t}str(){return(0,c.serializeDateTime)(this.typedValue)}},t.TimeLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_TIME,t),this.typedValue=e,this.strValue=t}str(){return(0,c.serializeTime)(this.typedValue)}},t.DateLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_DATE,t),this.typedValue=e,this.strValue=t}str(){return(0,c.serializeDate)(this.typedValue)}};class y extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_DURATION,t),this.typedValue=e,this.strValue=t}str(){return(0,c.serializeDuration)(this.typedValue)}}t.DurationLiteral=y,t.DayTimeDurationLiteral=class extends y{constructor(e,t,r){super(e,t,r??o.TypeURL.XSD_DAY_TIME_DURATION),this.typedValue=e,this.strValue=t}},t.YearMonthDurationLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_YEAR_MONTH_DURATION,t),this.typedValue=e,this.strValue=t}str(){return(0,c.serializeDuration)(this.typedValue,"P0M")}};class g extends h{constructor(e,t,r,n,i){super({toString:()=>"undefined"},t,n,i),this.openWorldType=r}coerceEBV(){if((0,u.isSubTypeOf)(this.dataType,o.TypeURL.XSD_BOOLEAN,this.openWorldType)||(0,u.isSubTypeOf)(this.dataType,o.TypeAlias.SPARQL_NUMERIC,this.openWorldType))return!1;throw new s.EBVCoercionError(this)}toRDF(){return d.literal(this.str(),this.language??d.namedNode(this.dataType))}str(){return this.strValue??""}}t.NonLexicalLiteral=g,t.isNonLexicalLiteral=function(e){if(e instanceof g)return e}},28757:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Variable=void 0;const n=r(89702);t.Variable=class{constructor(e){this.expressionType=n.ExpressionType.Variable,this.name=e}}},11269:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(89702),t),i(r(28757),t),i(r(79339),t),i(r(27033),t),i(r(3358),t),i(r(67112),t),i(r(9950),t),i(r(75065),t),i(r(29360),t),i(r(62293),t)},57328:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SpecialFunction=t.NamedFunction=t.RegularFunction=t.BaseFunction=void 0;const n=r(82867);class i{constructor(e,t){this.operator=e,this.apply=(e,t)=>(this.monomorph(e,t.superTypeProvider,t.functionArgumentsCache)??this.handleInvalidTypes(e))(t)(e),this.arity=t.arity,this.overloads=t.overloads}monomorph(e,t,r){return this.overloads.search(e,t,r)}}t.BaseFunction=i,t.RegularFunction=class extends i{constructor(e,t){super(e,t),this.functionClass="regular"}handleInvalidTypes(e){throw new n.InvalidArgumentTypes(e,this.operator)}},t.NamedFunction=class extends i{constructor(e,t){super(e,t),this.functionClass="named"}handleInvalidTypes(e){throw new n.InvalidArgumentTypes(e,this.operator)}},t.SpecialFunction=class{constructor(e,t){var r;this.operator=e,this.functionClass="special",this.arity=t.arity,this.applySynchronously=t.applySynchronously,this.applyAsync=t.applyAsync,this.checkArity=t.checkArity??(r=this.arity,e=>r===Number.POSITIVE_INFINITY||e.length===r)}}},63606:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.expressionToVar=t.dateTime=t.langString=t.string=t.double=t.float=t.decimal=t.integer=t.bool=t.Builder=t.declare=void 0;const n=r(18050),i=r(11269),a=r(11269),o=r(14624),s=r(14624),c=r(82867),u=r(33357),l=new n.DataFactory;t.declare=function(e){return new d(e)};class d{constructor(e){this.overloadTree=new u.OverloadTree(e),this.collected=!1}collect(){if(this.collected)throw new Error("Builders can only be collected once!");return this.collected=!0,this.overloadTree}static wrapInvalidLexicalProtected(e){return t=>r=>{for(const[e,t]of r.entries())if(t instanceof a.NonLexicalLiteral)throw new c.InvalidLexicalForm(r[e].toRDF());return e(t)(r)}}set(e,t,r=!0){return this.overloadTree.addOverload(e,r?d.wrapInvalidLexicalProtected(t):t),this}copy({from:e,to:t}){const r=this.overloadTree.getImplementationExact(e);if(!r)throw new c.UnexpectedError("Tried to copy implementation, but types not found",{from:e,to:t});return this.set(t,r)}onUnary(e,t,r=!0){return this.set([e],(e=>([r])=>t(e)(r)),r)}onUnaryTyped(e,t,r=!0){return this.set([e],(e=>([r])=>t(e)(r.typedValue)),r)}onBinary(e,t,r=!0){return this.set(e,(e=>([r,n])=>t(e)(r,n)),r)}onBinaryTyped(e,t,r=!0){return this.set(e,(e=>([r,n])=>t(e)(r.typedValue,n.typedValue)),r)}onTernaryTyped(e,t,r=!0){return this.set(e,(e=>([r,n,i])=>t(e)(r.typedValue,n.typedValue,i.typedValue)),r)}onTernary(e,t,r=!0){return this.set(e,(e=>([r,n,i])=>t(e)(r,n,i)),r)}onQuaternaryTyped(e,t,r=!0){return this.set(e,(e=>([r,n,i,a])=>t(e)(r.typedValue,n.typedValue,i.typedValue,a.typedValue)),r)}onTerm1(e,t=!1){return this.set(["term"],(t=>([r])=>e(t)(r)),t)}onTerm3(e){return this.set(["term","term","term"],(t=>([r,n,i])=>e(t)(r,n,i)))}onQuad1(e){return this.set(["quad"],(t=>([r])=>e(t)(r)))}onLiteral1(e,t=!0){return this.set(["literal"],(t=>([r])=>e(t)(r)),t)}onBoolean1(e,t=!0){return this.set([o.TypeURL.XSD_BOOLEAN],(t=>([r])=>e(t)(r)),t)}onBoolean1Typed(e,t=!0){return this.set([o.TypeURL.XSD_BOOLEAN],(t=>([r])=>e(t)(r.typedValue)),t)}onString1(e,t=!0){return this.set([o.TypeURL.XSD_STRING],(t=>([r])=>e(t)(r)),t)}onString1Typed(e,t=!0){return this.set([o.TypeURL.XSD_STRING],(t=>([r])=>e(t)(r.typedValue)),t)}onLangString1(e,t=!0){return this.set([o.TypeURL.RDF_LANG_STRING],(t=>([r])=>e(t)(r)),t)}onStringly1(e,t=!0){return this.set([o.TypeAlias.SPARQL_STRINGLY],(t=>([r])=>e(t)(r)),t)}onStringly1Typed(e,t=!0){return this.set([o.TypeAlias.SPARQL_STRINGLY],(t=>([r])=>e(t)(r.typedValue)),t)}onNumeric1(e,t=!0){return this.set([o.TypeAlias.SPARQL_NUMERIC],(t=>([r])=>e(t)(r)),t)}onDateTime1(e,t=!0){return this.set([o.TypeURL.XSD_DATE_TIME],(t=>([r])=>e(t)(r)),t)}numericConverter(e,t=!0){const r=t=>r=>e(t)(r.typedValue);return this.onUnary(s.TypeURL.XSD_INTEGER,(e=>t=>h(r(e)(t))),t).onUnary(s.TypeURL.XSD_DECIMAL,(e=>t=>f(r(e)(t))),t).onUnary(s.TypeURL.XSD_FLOAT,(e=>t=>y(r(e)(t))),t).onUnary(s.TypeURL.XSD_DOUBLE,(e=>t=>g(r(e)(t))),t)}arithmetic(e,t=!0){const r=t=>(r,n)=>e(t)(r.typedValue,n.typedValue);return this.onBinary([s.TypeURL.XSD_INTEGER,s.TypeURL.XSD_INTEGER],(e=>(t,n)=>h(r(e)(t,n))),t).onBinary([s.TypeURL.XSD_DECIMAL,s.TypeURL.XSD_DECIMAL],(e=>(t,n)=>f(r(e)(t,n))),t).onBinary([s.TypeURL.XSD_FLOAT,s.TypeURL.XSD_FLOAT],(e=>(t,n)=>y(r(e)(t,n))),t).onBinary([s.TypeURL.XSD_DOUBLE,s.TypeURL.XSD_DOUBLE],(e=>(t,n)=>g(r(e)(t,n))),t)}numberTest(e){return this.numeric((t=>([r,n])=>p(e(t)(r.typedValue,n.typedValue))))}stringTest(e,t=!0){return this.set([o.TypeURL.XSD_STRING,o.TypeURL.XSD_STRING],(t=>([r,n])=>p(e(t)(r.typedValue,n.typedValue))),t)}booleanTest(e,t=!0){return this.set([o.TypeURL.XSD_BOOLEAN,o.TypeURL.XSD_BOOLEAN],(t=>([r,n])=>p(e(t)(r.typedValue,n.typedValue))),t)}dateTimeTest(e,t=!0){return this.set([o.TypeURL.XSD_DATE_TIME,o.TypeURL.XSD_DATE_TIME],(t=>([r,n])=>p(e(t)(r.typedValue,n.typedValue))),t)}numeric(e){return this.set([o.TypeAlias.SPARQL_NUMERIC,o.TypeAlias.SPARQL_NUMERIC],e)}}function p(e){return new i.BooleanLiteral(e)}function h(e){return new i.IntegerLiteral(e)}function f(e){return new i.DecimalLiteral(e)}function y(e){return new i.FloatLiteral(e)}function g(e){return new i.DoubleLiteral(e)}t.Builder=d,t.bool=p,t.integer=h,t.decimal=f,t.float=y,t.double=g,t.string=function(e){return new i.StringLiteral(e)},t.langString=function(e,t){return new i.LangStringLiteral(e,t)},t.dateTime=function(e,t){return new i.DateTimeLiteral(e,t)},t.expressionToVar=function(e){return l.variable(e.name.slice(1))}},58157:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.namedDefinitions=void 0;const n=r(11269),i=r(11269),a=r(14624),o=r(76660),s=r(82867),c=r(17590),u=r(63606),l={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_STRING).onNumeric1((()=>e=>(0,u.string)((0,u.float)(e.typedValue).str()))).onBoolean1Typed((()=>e=>(0,u.string)((0,u.bool)(e).str()))).onTerm1((()=>e=>(0,u.string)(e.str()))).collect()},d={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_FLOAT).onNumeric1((()=>e=>(0,u.float)(e.typedValue))).onBoolean1Typed((()=>e=>(0,u.float)(e?1:0))).onUnary(a.TypeURL.XSD_STRING,(()=>e=>{const t=(0,c.parseXSDFloat)(e.str());if(void 0===t)throw new s.CastError(e,a.TypeURL.XSD_FLOAT);return(0,u.float)(t)}),!1).collect()},p={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DOUBLE).onNumeric1((()=>e=>(0,u.double)(e.typedValue))).onBoolean1Typed((()=>e=>(0,u.double)(e?1:0))).onUnary(a.TypeURL.XSD_STRING,(()=>e=>{const t=(0,c.parseXSDFloat)(e.str());if(void 0===t)throw new s.CastError(e,a.TypeURL.XSD_DOUBLE);return(0,u.double)(t)}),!1).collect()},h={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DECIMAL).onNumeric1((()=>e=>{const t=(0,c.parseXSDDecimal)(e.str());if(void 0===t)throw new s.CastError(e,a.TypeURL.XSD_DECIMAL);return(0,u.decimal)(t)})).onString1((()=>e=>{const t=e.str(),r=/^([+-])?(\d+(\.\d+)?)$/u.test(t)?(0,c.parseXSDDecimal)(t):void 0;if(void 0===r)throw new s.CastError(e,a.TypeURL.XSD_DECIMAL);return(0,u.decimal)(r)}),!1).onBoolean1Typed((()=>e=>(0,u.decimal)(e?1:0))).collect()},f={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_INTEGER).onBoolean1Typed((()=>e=>(0,u.integer)(e?1:0))).onNumeric1((()=>e=>{const t=(0,c.parseXSDInteger)(e.str());if(void 0===t)throw new s.CastError(e,a.TypeURL.XSD_INTEGER);return(0,u.integer)(t)}),!1).onString1((()=>e=>{const t=e.str(),r=/^\d+$/u.test(t)?(0,c.parseXSDInteger)(t):void 0;if(void 0===r)throw new s.CastError(e,a.TypeURL.XSD_INTEGER);return(0,u.integer)(r)})).collect()},y={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DATE_TIME).onUnary(a.TypeURL.XSD_DATE_TIME,(()=>e=>e)).onUnary(a.TypeURL.XSD_STRING,(()=>e=>(0,u.dateTime)((0,c.parseDateTime)(e.str()),e.str())),!1).onUnary(a.TypeURL.XSD_DATE,(()=>e=>new n.DateTimeLiteral({...e.typedValue,hours:0,minutes:0,seconds:0}))).collect()},g={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_BOOLEAN).onNumeric1((()=>e=>(0,u.bool)(e.coerceEBV())),!0).onUnary(a.TypeURL.XSD_BOOLEAN,(()=>e=>(0,u.bool)(e.coerceEBV())),!0).onUnary(a.TypeURL.XSD_STRING,(()=>e=>{switch(e.str()){case"true":case"1":return(0,u.bool)(!0);case"false":case"0":return(0,u.bool)(!1);default:throw new s.CastError(e,a.TypeURL.XSD_BOOLEAN)}}),!1).collect()},m={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_TIME).onUnary(a.TypeURL.XSD_TIME,(()=>e=>new n.TimeLiteral(e.typedValue,e.strValue))).onUnary(a.TypeURL.XSD_DATE_TIME,(()=>e=>new n.TimeLiteral(e.typedValue))).onStringly1((()=>e=>new n.TimeLiteral((0,c.parseTime)(e.str())))).collect()},b={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DATE).onUnary(a.TypeURL.XSD_DATE,(()=>e=>new n.DateLiteral(e.typedValue,e.strValue))).onUnary(a.TypeURL.XSD_DATE_TIME,(()=>e=>new n.DateLiteral(e.typedValue))).onStringly1((()=>e=>new n.DateLiteral((0,c.parseDate)(e.str())))).collect()},v={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DURATION).onUnary(a.TypeURL.XSD_DURATION,(()=>e=>new n.DurationLiteral(e.typedValue,e.strValue))).onStringly1((()=>e=>new i.DurationLiteral((0,c.parseDuration)(e.str())))).collect()},_={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DAY_TIME_DURATION).onUnary(a.TypeURL.XSD_DURATION,(()=>e=>new n.DayTimeDurationLiteral((0,o.trimToDayTimeDuration)(e.typedValue)))).onStringly1((()=>e=>new n.DayTimeDurationLiteral((0,c.parseDayTimeDuration)(e.str())))).collect()},w={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_YEAR_MONTH_DURATION).onUnary(a.TypeURL.XSD_DURATION,(()=>e=>new n.YearMonthDurationLiteral((0,o.trimToYearMonthDuration)(e.typedValue)))).onStringly1((()=>e=>new n.YearMonthDurationLiteral((0,c.parseYearMonthDuration)(e.str())))).collect()};t.namedDefinitions={[a.TypeURL.XSD_STRING]:l,[a.TypeURL.XSD_FLOAT]:d,[a.TypeURL.XSD_DOUBLE]:p,[a.TypeURL.XSD_DECIMAL]:h,[a.TypeURL.XSD_INTEGER]:f,[a.TypeURL.XSD_DATE_TIME]:y,[a.TypeURL.XSD_DATE]:b,[a.TypeURL.XSD_BOOLEAN]:g,[a.TypeURL.XSD_TIME]:m,[a.TypeURL.XSD_DURATION]:v,[a.TypeURL.XSD_DAY_TIME_DURATION]:_,[a.TypeURL.XSD_YEAR_MONTH_DURATION]:w}},33357:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OverloadTree=void 0;const n=r(11269),i=r(46157);class a{constructor(e,t){this.identifier=e,this.implementation=void 0,this.generalOverloads=Object.create(null),this.literalOverLoads=[],this.depth=t??0,this.promotionCount=void 0}getSubtree(e){const t=(0,i.asGeneralType)(e);if(t)return this.generalOverloads[t];for(const[t,r]of this.literalOverLoads)if(e===t)return r}getImplementationExact(e){let t=this;for(const r of e)if(t=t.getSubtree(r),!t)return;return t.implementation}search(e,t,r){let i=r[this.identifier],a=0;for(;a({node:e,index:1}))));o.length>0;){const{index:n,node:i}=o.pop();if(n===e.length&&i.implementation)return this.addToCache(r,e,i.implementation),i.implementation;o.push(...i.getSubTreeWithArg(e[n],t).map((e=>({node:e,index:n+1}))))}}addToCache(e,t,r){function i(e,t){return t in e||(e[t]={}),e[t]}let a=i(e,this.identifier);for(const e of t){const t=(0,n.isLiteralTermExpression)(e),r=t?t.dataType:e.termType;a.cache=a.cache??{},a=i(a.cache,r)}a.func=r}addOverload(e,t){this._addOverload([...e],t,0)}_addOverload(e,t,r){const[n,...o]=e;if(!n)return void((void 0===this.promotionCount||r<=this.promotionCount)&&(this.promotionCount=r,this.implementation=t));let s=this.getSubtree(n);if(!s){const e=new a(this.identifier,this.depth+1),t=(0,i.asGeneralType)(n);t&&(this.generalOverloads[t]=e);const r=(0,i.asOverrideType)(n);r&&this.literalOverLoads.push([r,e]),s=e}if(s._addOverload(o,t,r),i.typePromotion[n])for(const e of i.typePromotion[n])this.addPromotedOverload(e.typeToPromote,t,e.conversionFunction,o,r)}addPromotedOverload(e,t,r,n,i){let o=this.getSubtree(e);if(!o){const t=new a(this.identifier,this.depth+1);this.literalOverLoads.push([e,t]),o=t}o._addOverload(n,(e=>n=>t(e)([...n.slice(0,this.depth),r(n[this.depth]),...n.slice(this.depth+1,n.length)])),i+1)}getSubTreeWithArg(e,t){const r=[],a=(0,n.isLiteralTermExpression)(e);if(this.generalOverloads.term&&r.push(this.generalOverloads.term),this.generalOverloads[e.termType]&&r.push(this.generalOverloads[e.termType]),a){const e=(0,i.asKnownLiteralType)(a.dataType);let n;n=e?i.superTypeDictTable[e]:(0,i.getSuperTypes)(a.dataType,t);const o=this.literalOverLoads.filter((([e,t])=>e in n)).map((([e,t])=>[n[e],t]));o.sort((([e,t],[r,n])=>e-r)),r.push(...o.map((([e,t])=>t)))}return r}}t.OverloadTree=a},22122:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.definitions=void 0;const n=r(55553),i=r(99499),a=r(18050),o=r(9929),s=r(88110),c=r(84596),u=r(11269),l=r(50363),d=r(14624),p=r(14624),h=r(76660),f=r(82867),y=r(20236),g=r(66487),m=r(57328),b=r(63606),v=r(29791),_=r(42711),w=new a.DataFactory,T={arity:1,overloads:(0,b.declare)(d.RegularOperator.NOT).onTerm1((()=>e=>(0,b.bool)(!e.coerceEBV()))).collect()},S={arity:1,overloads:(0,b.declare)(d.RegularOperator.UPLUS).numericConverter((()=>e=>e)).collect()},O={arity:1,overloads:(0,b.declare)(d.RegularOperator.UMINUS).numericConverter((()=>e=>-e)).collect()},E={arity:2,overloads:(0,b.declare)(d.RegularOperator.MULTIPLICATION).arithmetic((()=>(e,t)=>new n.BigNumber(e).times(t).toNumber())).collect()},x={arity:2,overloads:(0,b.declare)(d.RegularOperator.DIVISION).arithmetic((()=>(e,t)=>new n.BigNumber(e).div(t).toNumber())).onBinaryTyped([p.TypeURL.XSD_INTEGER,p.TypeURL.XSD_INTEGER],(()=>(e,t)=>{if(0===t)throw new f.ExpressionError("Integer division by 0");return(0,b.decimal)(new n.BigNumber(e).div(t).toNumber())})).collect()},A={arity:2,overloads:(0,b.declare)(d.RegularOperator.ADDITION).arithmetic((()=>(e,t)=>new n.BigNumber(e).plus(t).toNumber())).set([p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.DateTimeLiteral((0,g.addDurationToDateTime)(e.typedValue,(0,h.defaultedDurationRepresentation)(t.typedValue))))).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],to:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_YEAR_MONTH_DURATION]}).set([p.TypeURL.XSD_DATE,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.DateLiteral((0,g.addDurationToDateTime)((0,h.defaultedDateTimeRepresentation)(e.typedValue),(0,h.defaultedDurationRepresentation)(t.typedValue))))).copy({from:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_DAY_TIME_DURATION],to:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_YEAR_MONTH_DURATION]}).set([p.TypeURL.XSD_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.TimeLiteral((0,g.addDurationToDateTime)((0,h.defaultedDateTimeRepresentation)(e.typedValue),(0,h.defaultedDurationRepresentation)(t.typedValue))))).copy({from:[p.TypeURL.XSD_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],to:[p.TypeURL.XSD_TIME,p.TypeURL.XSD_YEAR_MONTH_DURATION]}).collect()},R={arity:2,overloads:(0,b.declare)(d.RegularOperator.SUBTRACTION).arithmetic((()=>(e,t)=>new n.BigNumber(e).minus(t).toNumber())).set([p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DATE_TIME],(({defaultTimeZone:e})=>([t,r])=>new u.DayTimeDurationLiteral((0,g.elapsedDuration)(t.typedValue,r.typedValue,e)))).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_DATE]}).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_TIME,p.TypeURL.XSD_TIME]}).set([p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.DateTimeLiteral((0,g.addDurationToDateTime)(e.typedValue,(0,h.defaultedDurationRepresentation)((0,h.negateDuration)(t.typedValue)))))).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],to:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_YEAR_MONTH_DURATION]}).set([p.TypeURL.XSD_DATE,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.DateLiteral((0,g.addDurationToDateTime)((0,h.defaultedDateTimeRepresentation)(e.typedValue),(0,h.defaultedDurationRepresentation)((0,h.negateDuration)(t.typedValue)))))).copy({from:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_DAY_TIME_DURATION],to:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_YEAR_MONTH_DURATION]}).set([p.TypeURL.XSD_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.TimeLiteral((0,g.addDurationToDateTime)((0,h.defaultedDateTimeRepresentation)(e.typedValue),(0,h.defaultedDurationRepresentation)((0,h.negateDuration)(t.typedValue)))))).collect()},I={arity:2,overloads:(0,b.declare)(d.RegularOperator.EQUAL).numberTest((()=>(e,t)=>e===t)).stringTest((()=>(e,t)=>0===e.localeCompare(t))).set([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>([e,t])=>(0,b.bool)(e.str()===t.str()&&e.language===t.language))).set([p.TypeAlias.SPARQL_STRINGLY,p.TypeAlias.SPARQL_STRINGLY],(()=>()=>(0,b.bool)(!1))).booleanTest((()=>(e,t)=>e===t)).dateTimeTest((({defaultTimeZone:e})=>(t,r)=>(0,h.toUTCDate)(t,e).getTime()===(0,h.toUTCDate)(r,e).getTime())).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_DATE]}).set(["quad","quad"],(e=>([t,r])=>{const n=new m.RegularFunction(p.RegularOperator.EQUAL,I);return(0,b.bool)(n.apply([t.subject,r.subject],e).coerceEBV()&&n.apply([t.predicate,r.predicate],e).coerceEBV()&&n.apply([t.object,r.object],e).coerceEBV())}),!1).set(["term","term"],(()=>([e,t])=>(0,b.bool)(function(e,t){const r=e.toRDF(),n=t.toRDF(),i=r.equals(n);if(!i&&"Literal"===r.termType&&"Literal"===n.termType)throw new f.RDFEqualTypeError([e,t]);return i}(e,t))),!1).set([p.TypeURL.XSD_DURATION,p.TypeURL.XSD_DURATION],(()=>([e,t])=>(0,b.bool)((0,h.yearMonthDurationsToMonths)((0,h.defaultedYearMonthDurationRepresentation)(e.typedValue))===(0,h.yearMonthDurationsToMonths)((0,h.defaultedYearMonthDurationRepresentation)(t.typedValue))&&(0,h.dayTimeDurationsToSeconds)((0,h.defaultedDayTimeDurationRepresentation)(e.typedValue))===(0,h.dayTimeDurationsToSeconds)((0,h.defaultedDayTimeDurationRepresentation)(t.typedValue))))).set([p.TypeURL.XSD_TIME,p.TypeURL.XSD_TIME],(({defaultTimeZone:e})=>([t,r])=>(0,b.bool)((0,h.toUTCDate)((0,h.defaultedDateTimeRepresentation)(t.typedValue),e).getTime()===(0,h.toUTCDate)((0,h.defaultedDateTimeRepresentation)(r.typedValue),e).getTime()))).collect()},P={arity:2,overloads:(0,b.declare)(d.RegularOperator.NOT_EQUAL).set(["term","term"],(e=>([t,r])=>(0,b.bool)(!_.regularFunctions[d.RegularOperator.EQUAL].apply([t,r],e).typedValue))).collect()},N={arity:2,overloads:(0,b.declare)(d.RegularOperator.LT).numberTest((()=>(e,t)=>e(e,t)=>-1===e.localeCompare(t))).booleanTest((()=>(e,t)=>e([e,t])=>(0,b.bool)(-1===(0,y.orderTypes)(e.toRDF(),t.toRDF(),!0))),!1).dateTimeTest((({defaultTimeZone:e})=>(t,r)=>(0,h.toUTCDate)(t,e).getTime()<(0,h.toUTCDate)(r,e).getTime())).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_DATE]}).set([p.TypeURL.XSD_YEAR_MONTH_DURATION,p.TypeURL.XSD_YEAR_MONTH_DURATION],(()=>([e,t])=>(0,b.bool)((0,h.yearMonthDurationsToMonths)((0,h.defaultedYearMonthDurationRepresentation)(e.typedValue))<(0,h.yearMonthDurationsToMonths)((0,h.defaultedYearMonthDurationRepresentation)(t.typedValue))))).set([p.TypeURL.XSD_DAY_TIME_DURATION,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>(0,b.bool)((0,h.dayTimeDurationsToSeconds)((0,h.defaultedDayTimeDurationRepresentation)(e.typedValue))<(0,h.dayTimeDurationsToSeconds)((0,h.defaultedDayTimeDurationRepresentation)(t.typedValue))))).set([p.TypeURL.XSD_TIME,p.TypeURL.XSD_TIME],(({defaultTimeZone:e})=>([t,r])=>(0,b.bool)((0,h.toUTCDate)((0,h.defaultedDateTimeRepresentation)(t.typedValue),e).getTime()<(0,h.toUTCDate)((0,h.defaultedDateTimeRepresentation)(r.typedValue),e).getTime()))).collect()},D={arity:2,overloads:(0,b.declare)(d.RegularOperator.GT).set(["term","term"],(e=>([t,r])=>_.regularFunctions[d.RegularOperator.LT].apply([r,t],e))).collect()},j={arity:2,overloads:(0,b.declare)(d.RegularOperator.LTE).set(["term","term"],(e=>([t,r])=>(0,b.bool)(_.regularFunctions[d.RegularOperator.LT].apply([t,r],e).typedValue||_.regularFunctions[d.RegularOperator.EQUAL].apply([t,r],e).typedValue))).collect()},C={arity:2,overloads:(0,b.declare)(d.RegularOperator.GTE).set(["term","term"],(e=>([t,r])=>_.regularFunctions[d.RegularOperator.LTE].apply([r,t],e))).collect()},M={arity:1,overloads:(0,b.declare)(d.RegularOperator.IS_IRI).onTerm1((()=>e=>(0,b.bool)("namedNode"===e.termType))).collect()},L={arity:1,overloads:(0,b.declare)(d.RegularOperator.IS_BLANK).onTerm1((()=>e=>(0,b.bool)("blankNode"===e.termType))).collect()},k={arity:1,overloads:(0,b.declare)(d.RegularOperator.IS_LITERAL).onTerm1((()=>e=>(0,b.bool)("literal"===e.termType))).collect()},F={arity:1,overloads:(0,b.declare)(d.RegularOperator.IS_NUMERIC).onNumeric1((()=>()=>(0,b.bool)(!0))).onTerm1((()=>()=>(0,b.bool)(!1))).collect()},B={arity:1,overloads:(0,b.declare)(d.RegularOperator.STR).onTerm1((()=>e=>(0,b.string)(e.str()))).collect()},U={arity:1,overloads:(0,b.declare)(d.RegularOperator.LANG).onLiteral1((()=>e=>(0,b.string)(e.language??""))).collect()},q={arity:1,overloads:(0,b.declare)(d.RegularOperator.DATATYPE).onLiteral1((()=>e=>new u.NamedNode(e.dataType))).collect()},V={arity:1,overloads:(0,b.declare)(d.RegularOperator.IRI).set(["namedNode"],(e=>t=>{const r=t[0],n=(0,o.resolve)(r.str(),e.baseIRI??"");return new u.NamedNode(n)})).onString1((e=>t=>{const r=(0,o.resolve)(t.str(),e.baseIRI??"");return new u.NamedNode(r)})).collect()},Q={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRDT).set([p.TypeURL.XSD_STRING,"namedNode"],(({superTypeProvider:e})=>([t,r])=>{const n=w.literal(t.typedValue,w.namedNode(r.value));return new l.TermTransformer(e).transformLiteral(n)})).collect()},$={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRLANG).onBinaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>new u.LangStringLiteral(e,t.toLowerCase()))).collect()},H={arity:0,overloads:(0,b.declare)(d.RegularOperator.UUID).set([],(()=>()=>new u.NamedNode(`urn:uuid:${c.v4()}`))).collect()},G={arity:0,overloads:(0,b.declare)(d.RegularOperator.STRUUID).set([],(()=>()=>(0,b.string)(c.v4()))).collect()},z={arity:1,overloads:(0,b.declare)(d.RegularOperator.STRLEN).onStringly1((()=>e=>(0,b.integer)([...e.typedValue].length))).collect()},K={arity:[2,3],overloads:(0,b.declare)(d.RegularOperator.SUBSTR).onBinaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_INTEGER],(()=>(e,t)=>(0,b.string)([...e].slice(t-1).join("")))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_INTEGER],(()=>(e,t)=>{const r=[...e.typedValue].slice(t.typedValue-1).join("");return(0,b.langString)(r,e.language)})).onTernaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_INTEGER,p.TypeURL.XSD_INTEGER],(()=>(e,t,r)=>(0,b.string)([...e].slice(t-1,r+t-1).join("")))).onTernary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_INTEGER,p.TypeURL.XSD_INTEGER],(()=>(e,t,r)=>{const n=[...e.typedValue].slice(t.typedValue-1,r.typedValue+t.typedValue-1).join("");return(0,b.langString)(n,e.language)})).collect()},X={arity:1,overloads:(0,b.declare)(d.RegularOperator.UCASE).onString1Typed((()=>e=>(0,b.string)(e.toUpperCase()))).onLangString1((()=>e=>(0,b.langString)(e.typedValue.toUpperCase(),e.language))).collect()},J={arity:1,overloads:(0,b.declare)(d.RegularOperator.LCASE).onString1Typed((()=>e=>(0,b.string)(e.toLowerCase()))).onLangString1((()=>e=>(0,b.langString)(e.typedValue.toLowerCase(),e.language))).collect()},W={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRSTARTS).onBinaryTyped([p.TypeAlias.SPARQL_STRINGLY,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.bool)(e.startsWith(t)))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>(e,t)=>{if(e.language!==t.language)throw new f.IncompatibleLanguageOperation(e,t);return(0,b.bool)(e.typedValue.startsWith(t.typedValue))})).collect()},Y={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRENDS).onBinaryTyped([p.TypeAlias.SPARQL_STRINGLY,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.bool)(e.endsWith(t)))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>(e,t)=>{if(e.language!==t.language)throw new f.IncompatibleLanguageOperation(e,t);return(0,b.bool)(e.typedValue.endsWith(t.typedValue))})).collect()},Z={arity:2,overloads:(0,b.declare)(d.RegularOperator.CONTAINS).onBinaryTyped([p.TypeAlias.SPARQL_STRINGLY,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.bool)(e.includes(t)))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>(e,t)=>{if(e.language!==t.language)throw new f.IncompatibleLanguageOperation(e,t);return(0,b.bool)(e.typedValue.includes(t.typedValue))})).collect()},ee={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRBEFORE).onBinaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.string)(e.slice(0,Math.max(0,e.indexOf(t)))))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>{const[r,n]=[e.typedValue,t.typedValue],i=e.typedValue.slice(0,Math.max(0,r.indexOf(n)));return i||!n?(0,b.langString)(i,e.language):(0,b.string)(i)})).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>(e,t)=>{if(e.language!==t.language)throw new f.IncompatibleLanguageOperation(e,t);const[r,n]=[e.typedValue,t.typedValue],i=e.typedValue.slice(0,Math.max(0,r.indexOf(n)));return i||!n?(0,b.langString)(i,e.language):(0,b.string)(i)})).collect()},te={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRAFTER).onBinaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.string)(e.slice(e.indexOf(t)).slice(t.length)))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>{const[r,n]=[e.typedValue,t.typedValue],i=r.slice(r.indexOf(n)).slice(n.length);return i||!n?(0,b.langString)(i,e.language):(0,b.string)(i)})).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>(e,t)=>{if(e.language!==t.language)throw new f.IncompatibleLanguageOperation(e,t);const[r,n]=[e.typedValue,t.typedValue],i=r.slice(r.indexOf(n)).slice(n.length);return i||!n?(0,b.langString)(i,e.language):(0,b.string)(i)})).collect()},re={arity:1,overloads:(0,b.declare)(d.RegularOperator.ENCODE_FOR_URI).onStringly1Typed((()=>e=>(0,b.string)(encodeURI(e)))).collect()},ne={arity:2,overloads:(0,b.declare)(d.RegularOperator.LANG_MATCHES).onBinaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.bool)(v.langMatches(e,t)))).collect()},ie={arity:[2,3],overloads:(0,b.declare)(d.RegularOperator.REGEX).onBinaryTyped([p.TypeAlias.SPARQL_STRINGLY,p.TypeURL.XSD_STRING],(function(){return(e,t)=>(0,b.bool)(v.matches(e,t))})).onTernaryTyped([p.TypeAlias.SPARQL_STRINGLY,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(function(){return(e,t,r)=>(0,b.bool)(v.matches(e,t,r))})).collect()},ae={arity:[3,4],overloads:(0,b.declare)(d.RegularOperator.REPLACE).onTernaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t,r)=>(0,b.string)(v.replace(e,t,r)))).set([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>([e,t,r])=>{const n=v.replace(e.typedValue,t.typedValue,r.typedValue);return(0,b.langString)(n,e.language)})).onQuaternaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t,r,n)=>(0,b.string)(v.replace(e,t,r,n)))).set([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>([e,t,r,n])=>{const i=v.replace(e.typedValue,t.typedValue,r.typedValue,n.typedValue);return(0,b.langString)(i,e.language)})).collect()},oe={arity:1,overloads:(0,b.declare)(d.RegularOperator.ABS).numericConverter((()=>e=>Math.abs(e))).collect()},se={arity:1,overloads:(0,b.declare)(d.RegularOperator.ROUND).numericConverter((()=>e=>Math.round(e))).collect()},ce={arity:1,overloads:(0,b.declare)(d.RegularOperator.CEIL).numericConverter((()=>e=>Math.ceil(e))).collect()},ue={arity:1,overloads:(0,b.declare)(d.RegularOperator.FLOOR).numericConverter((()=>e=>Math.floor(e))).collect()},le={arity:0,overloads:(0,b.declare)(d.RegularOperator.RAND).set([],(()=>()=>(0,b.double)(Math.random()))).collect()},de={arity:0,overloads:(0,b.declare)(d.RegularOperator.NOW).set([],(e=>()=>new u.DateTimeLiteral((0,h.toDateTimeRepresentation)({date:e.now,timeZone:e.defaultTimeZone})))).collect()},pe={arity:1,overloads:(0,b.declare)(d.RegularOperator.YEAR).onDateTime1((()=>e=>(0,b.integer)(e.typedValue.year))).set([p.TypeURL.XSD_DATE],(()=>([e])=>(0,b.integer)(e.typedValue.year))).collect()},he={arity:1,overloads:(0,b.declare)(d.RegularOperator.MONTH).onDateTime1((()=>e=>(0,b.integer)(e.typedValue.month))).set([p.TypeURL.XSD_DATE],(()=>([e])=>(0,b.integer)(e.typedValue.month))).collect()},fe={arity:1,overloads:(0,b.declare)(d.RegularOperator.DAY).onDateTime1((()=>e=>(0,b.integer)(e.typedValue.day))).set([p.TypeURL.XSD_DATE],(()=>([e])=>(0,b.integer)(e.typedValue.day))).collect()},ye={arity:1,overloads:(0,b.declare)(d.RegularOperator.HOURS).onDateTime1((()=>e=>(0,b.integer)(e.typedValue.hours))).set([p.TypeURL.XSD_TIME],(()=>([e])=>(0,b.integer)(e.typedValue.hours))).collect()},ge={arity:1,overloads:(0,b.declare)(d.RegularOperator.MINUTES).onDateTime1((()=>e=>(0,b.integer)(e.typedValue.minutes))).set([p.TypeURL.XSD_TIME],(()=>([e])=>(0,b.integer)(e.typedValue.minutes))).collect()},me={arity:1,overloads:(0,b.declare)(d.RegularOperator.SECONDS).onDateTime1((()=>e=>(0,b.decimal)(e.typedValue.seconds))).set([p.TypeURL.XSD_TIME],(()=>([e])=>(0,b.integer)(e.typedValue.seconds))).collect()},be={arity:1,overloads:(0,b.declare)(d.RegularOperator.TIMEZONE).onDateTime1((()=>e=>{const t={hours:e.typedValue.zoneHours,minutes:e.typedValue.zoneMinutes};if(void 0===t.hours&&void 0===t.minutes)throw new f.InvalidTimezoneCall(e.str());return new u.DayTimeDurationLiteral(t)})).copy({from:[p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_DATE]}).copy({from:[p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_TIME]}).collect()},ve={arity:1,overloads:(0,b.declare)(d.RegularOperator.TZ).onDateTime1((()=>e=>(0,b.string)((0,h.extractRawTimeZone)(e.str())))).copy({from:[p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_DATE]}).copy({from:[p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_TIME]}).collect()},_e={arity:1,overloads:(0,b.declare)(d.RegularOperator.MD5).onString1Typed((()=>e=>(0,b.string)((0,s.hash)(e)))).collect()},we={arity:1,overloads:(0,b.declare)(d.RegularOperator.SHA1).onString1Typed((()=>e=>(0,b.string)((0,i.sha1)().update(e).digest("hex")))).collect()},Te={arity:1,overloads:(0,b.declare)(d.RegularOperator.SHA256).onString1Typed((()=>e=>(0,b.string)((0,i.sha256)().update(e).digest("hex")))).collect()},Se={arity:1,overloads:(0,b.declare)(d.RegularOperator.SHA384).onString1Typed((()=>e=>(0,b.string)((0,i.sha384)().update(e).digest("hex")))).collect()},Oe={arity:1,overloads:(0,b.declare)(d.RegularOperator.SHA512).onString1Typed((()=>e=>(0,b.string)((0,i.sha512)().update(e).digest("hex")))).collect()},Ee={arity:3,overloads:(0,b.declare)(d.RegularOperator.TRIPLE).onTerm3((e=>(...t)=>new u.Quad(w.quad(t[0].toRDF(),t[1].toRDF(),t[2].toRDF()),e.superTypeProvider))).collect()},xe={arity:1,overloads:(0,b.declare)(d.RegularOperator.SUBJECT).onQuad1((()=>e=>e.subject)).collect()},Ae={arity:1,overloads:(0,b.declare)(d.RegularOperator.PREDICATE).onQuad1((()=>e=>e.predicate)).collect()},Re={arity:1,overloads:(0,b.declare)(d.RegularOperator.OBJECT).onQuad1((()=>e=>e.object)).collect()},Ie={arity:1,overloads:(0,b.declare)(d.RegularOperator.IS_TRIPLE).onTerm1((()=>e=>(0,b.bool)("quad"===e.termType))).collect()};t.definitions={"!":T,uplus:S,uminus:O,"*":E,"/":x,"+":A,"-":R,"=":I,"!=":P,"<":N,">":D,"<=":j,">=":C,isiri:M,isuri:M,isblank:L,isliteral:k,isnumeric:F,str:B,lang:U,datatype:q,iri:V,uri:V,strdt:Q,strlang:$,uuid:H,struuid:G,strlen:z,substr:K,ucase:X,lcase:J,strstarts:W,strends:Y,contains:Z,strbefore:ee,strafter:te,encode_for_uri:re,langmatches:ne,regex:ie,replace:ae,abs:oe,round:se,ceil:ce,floor:ue,rand:le,now:de,year:pe,month:he,day:fe,hours:ye,minutes:ge,seconds:me,timezone:be,tz:ve,md5:_e,sha1:we,sha256:Te,sha384:Se,sha512:Oe,triple:Ee,subject:xe,predicate:Ae,object:Re,istriple:Ie}},96443:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.specialDefinitions=void 0;const n=r(84596),i=r(11269),a=r(14624),o=r(82867),s=r(63606),c=r(42711),u={arity:1,applyAsync:async({args:e,mapping:t})=>l({args:e,mapping:t}),applySynchronously:({args:e,mapping:t})=>l({args:e,mapping:t})};function l({args:e,mapping:t}){const r=e[0];if(r.expressionType!==i.ExpressionType.Variable)throw new o.InvalidArgumentTypes(e,a.SpecialOperator.BOUND);const n=t.has((0,s.expressionToVar)(r));return(0,s.bool)(n)}const d={arity:3,async applyAsync({args:e,mapping:t,evaluate:r}){const n=await r(e[0],t);return r(n.coerceEBV()?e[1]:e[2],t)},applySynchronously({args:e,mapping:t,evaluate:r}){const n=r(e[0],t);return r(n.coerceEBV()?e[1]:e[2],t)}},p={arity:Number.POSITIVE_INFINITY,async applyAsync({args:e,mapping:t,evaluate:r}){const n=[];for(const i of e)try{return await r(i,t)}catch(e){n.push(e)}throw new o.CoalesceError(n)},applySynchronously({args:e,mapping:t,evaluate:r}){const n=[];for(const i of e)try{return r(i,t)}catch(e){n.push(e)}throw new o.CoalesceError(n)}},h={arity:2,async applyAsync({args:e,mapping:t,evaluate:r}){const[n,i]=e;try{if((await r(n,t)).coerceEBV())return(0,s.bool)(!0);const e=(await r(i,t)).coerceEBV();return(0,s.bool)(e)}catch(e){if(!(await r(i,t)).coerceEBV())throw e;return(0,s.bool)(!0)}},applySynchronously({args:e,mapping:t,evaluate:r}){const[n,i]=e;try{if(r(n,t).coerceEBV())return(0,s.bool)(!0);const e=r(i,t).coerceEBV();return(0,s.bool)(e)}catch(e){if(!r(i,t).coerceEBV())throw e;return(0,s.bool)(!0)}}},f={arity:2,async applyAsync({args:e,mapping:t,evaluate:r}){const[n,i]=e;try{if(!(await r(n,t)).coerceEBV())return(0,s.bool)(!1);const e=(await r(i,t)).coerceEBV();return(0,s.bool)(e)}catch(e){if((await r(i,t)).coerceEBV())throw e;return(0,s.bool)(!1)}},applySynchronously({args:e,mapping:t,evaluate:r}){const[n,i]=e;try{if(!r(n,t).coerceEBV())return(0,s.bool)(!1);const e=r(i,t).coerceEBV();return(0,s.bool)(e)}catch(e){if(r(i,t).coerceEBV())throw e;return(0,s.bool)(!1)}}},y={arity:2,async applyAsync({args:e,mapping:t,evaluate:r}){const[n,i]=e.map((e=>r(e,t))),[a,o]=await Promise.all([n,i]);return(0,s.bool)(a.toRDF().equals(o.toRDF()))},applySynchronously({args:e,mapping:t,evaluate:r}){const[n,i]=e.map((e=>r(e,t)));return(0,s.bool)(n.toRDF().equals(i.toRDF()))}},g={arity:Number.POSITIVE_INFINITY,checkArity:e=>e.length>0,async applyAsync(e){const{args:t,mapping:r,evaluate:n}=e,[i,...a]=t;return m(await n(i,r),{...e,args:a},[])},applySynchronously(e){const{args:t,mapping:r,evaluate:n}=e,[i,...a]=t;return b(n(i,r),{...e,args:a},[])}};async function m(e,t,r){const{args:n,mapping:i,evaluate:u}=t;if(0===n.length)return r.every((e=>!e))?(0,s.bool)(!1):Promise.reject(new o.InError(r));try{const o=n.shift(),l=await u(o,i);return c.regularFunctions[a.RegularOperator.EQUAL].apply([e,l],t).typedValue?(0,s.bool)(!0):m(e,t,[...r,!1])}catch(n){return m(e,t,[...r,n])}}function b(e,t,r){const{args:n,mapping:i,evaluate:u}=t;if(0===n.length){if(r.every((e=>!e)))return(0,s.bool)(!1);throw new o.InError(r)}try{const o=u(n.shift(),i);return c.regularFunctions[a.RegularOperator.EQUAL].apply([e,o],t).typedValue?(0,s.bool)(!0):b(e,t,[...r,!1])}catch(n){return b(e,t,[...r,n])}}const v={arity:Number.POSITIVE_INFINITY,checkArity:e=>e.length>0,async applyAsync(e){const t=c.specialFunctions[a.SpecialOperator.IN],r=await t.applyAsync(e);return(0,s.bool)(!r.typedValue)},applySynchronously(e){const t=c.specialFunctions[a.SpecialOperator.IN].applySynchronously(e);return(0,s.bool)(!t.typedValue)}},_=(0,s.declare)(a.SpecialOperator.CONCAT).onStringly1((()=>e=>e)).collect(),w={arity:Number.POSITIVE_INFINITY,async applyAsync(e){const{args:t,mapping:r,evaluate:n,functionArgumentsCache:i,superTypeProvider:c}=e,u=t.map((async e=>n(e,r))).map((async r=>{const n=_.search([await r],c,i);if(!n)throw new o.InvalidArgumentTypes(t,a.SpecialOperator.CONCAT);return n(e)([await r])})),l=await Promise.all(u),d=l.map((e=>e.typedValue)).join(""),p=T(l)?l[0].language:void 0;return p?(0,s.langString)(d,p):(0,s.string)(d)},applySynchronously(e){const{args:t,mapping:r,evaluate:n,superTypeProvider:i,functionArgumentsCache:c}=e,u=t.map((e=>n(e,r))).map((r=>{const n=_.search([r],i,c);if(!n)throw new o.InvalidArgumentTypes(t,a.SpecialOperator.CONCAT);return n(e)([r])})),l=u.map((e=>e.typedValue)).join(""),d=T(u)?u[0].language:void 0;return d?(0,s.langString)(l,d):(0,s.string)(l)}};function T(e){return e.length>0&&e.every((t=>t.language===e[0].language))}const S=(0,s.declare)(a.SpecialOperator.BNODE).onString1((()=>e=>e)).collect(),O={arity:Number.POSITIVE_INFINITY,checkArity:e=>0===e.length||1===e.length,async applyAsync(e){const{args:t,mapping:r,evaluate:n,superTypeProvider:s,functionArgumentsCache:c}=e,u=1===t.length?await n(t[0],r):void 0;let l;if(u){const r=S.search([u],s,c);if(!r)throw new o.InvalidArgumentTypes(t,a.SpecialOperator.BNODE);l=r(e)([u]).str()}if(e.bnode){const t=await e.bnode(l);return new i.BlankNode(t)}return E(l)},applySynchronously(e){const{args:t,mapping:r,evaluate:n,superTypeProvider:s,functionArgumentsCache:c}=e,u=1===t.length?n(t[0],r):void 0;let l;if(u){const r=S.search([u],s,c);if(!r)throw new o.InvalidArgumentTypes(t,a.SpecialOperator.BNODE);l=r(e)([u]).str()}if(e.bnode){const t=e.bnode(l);return new i.BlankNode(t)}return E(l)}};function E(e){return new i.BlankNode(e??n.v4())}t.specialDefinitions={bound:u,if:d,coalesce:p,"&&":f,"||":h,sameterm:y,in:g,notin:v,concat:w,bnode:O}},29791:(e,t)=>{"use strict";function r(e){return"*"===e}function n(e,t){return new RegExp(`/${e}/`,"iu").test(`/${t}/`)}Object.defineProperty(t,"__esModule",{value:!0}),t.langMatches=t.replace=t.matches=void 0,t.matches=function(e,t,r){return new RegExp(t,r).test(e)},t.replace=function(e,t,r,n){let i=new RegExp(t,n);return i.global||(i=new RegExp(t,`${n??""}g`)),e.replace(i,r)},t.langMatches=function(e,t){const i=e.split("-"),a=t.split("-");if(!n(a[0],i[0])&&!r(i[0]))return!1;let o=1,s=1;for(;s[e,new a.RegularFunction(e,t)]))),t.specialFunctions=Object.fromEntries(Object.entries(c.specialDefinitions).map((([e,t])=>[e,new a.SpecialFunction(e,t)]))),t.namedFunctions=Object.fromEntries(Object.entries(o.namedDefinitions).map((([e,t])=>[e,new a.NamedFunction(e,t)])));var u=r(33357);Object.defineProperty(t,"OverloadTree",{enumerable:!0,get:function(){return u.OverloadTree}})},61621:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncAggregateEvaluator=t.orderTypes=t.isExpressionError=t.ExpressionError=t.AggregateEvaluator=t.SyncEvaluator=t.AsyncEvaluator=void 0;var n=r(98375);Object.defineProperty(t,"AsyncEvaluator",{enumerable:!0,get:function(){return n.AsyncEvaluator}});var i=r(86588);Object.defineProperty(t,"SyncEvaluator",{enumerable:!0,get:function(){return i.SyncEvaluator}});var a=r(19030);Object.defineProperty(t,"AggregateEvaluator",{enumerable:!0,get:function(){return a.AggregateEvaluator}});var o=r(82867);Object.defineProperty(t,"ExpressionError",{enumerable:!0,get:function(){return o.ExpressionError}}),Object.defineProperty(t,"isExpressionError",{enumerable:!0,get:function(){return o.isExpressionError}});var s=r(20236);Object.defineProperty(t,"orderTypes",{enumerable:!0,get:function(){return s.orderTypes}});var c=r(74448);Object.defineProperty(t,"AsyncAggregateEvaluator",{enumerable:!0,get:function(){return c.AsyncAggregateEvaluator}})},69119:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AlgebraTransformer=void 0;const n=r(31578),i=r(11269),a=r(42711),o=r(14624),s=r(82867),c=r(82867),u=r(50363);class l extends u.TermTransformer{constructor(e){super(e.superTypeProvider),this.algebraConfig=e,this.creatorConfig={type:e.type,creator:e.creator}}transformAlgebra(e){const t=n.Algebra.expressionTypes;switch(e.expressionType){case t.TERM:return this.transformTerm(e);case t.OPERATOR:return this.transformOperator(e);case t.NAMED:return this.transformNamed(e);case t.EXISTENCE:return l.transformExistence(e);case t.AGGREGATE:return l.transformAggregate(e);case t.WILDCARD:return l.transformWildcard(e)}}static transformWildcard(e){return new i.NamedNode(e.wildcard.value)}transformOperator(e){const t=e.operator.toLowerCase();if(o.SpecialOperators.has(t)){const r=t,n=e.args.map((e=>this.transformAlgebra(e))),o=a.specialFunctions[r];if(!o.checkArity(n))throw new s.InvalidArity(n,r);return new i.SpecialOperator(n,o.applyAsync,o.applySynchronously)}if(!o.Operators.has(t))throw new s.UnknownOperator(e.operator);const r=t,n=e.args.map((e=>this.transformAlgebra(e))),c=a.regularFunctions[r];if(!l.hasCorrectArity(n,c.arity))throw new s.InvalidArity(n,r);return new i.Operator(n,(e=>c.apply(e,this.algebraConfig)))}wrapSyncFunction(e,t){return r=>{try{const t=e(r.map((e=>e.toRDF())));return this.transformRDFTermUnsafe(t)}catch(e){throw new c.ExtensionFunctionError(t,e)}}}wrapAsyncFunction(e,t){return async r=>{try{const t=await e(r.map((e=>e.toRDF())));return this.transformRDFTermUnsafe(t)}catch(e){throw new c.ExtensionFunctionError(t,e)}}}transformNamed(e){const t=e.name.value,r=e.args.map((e=>this.transformAlgebra(e)));if(o.NamedOperators.has(t)){const t=e.name.value,n=a.namedFunctions[t];return new i.Named(e.name,r,(e=>n.apply(e,this.algebraConfig)))}if("sync"===this.creatorConfig.type){const t=this.creatorConfig.creator(e.name);if(t){const n=this.wrapSyncFunction(t,e.name.value);return new i.SyncExtension(e.name,r,n)}}else{const t=this.creatorConfig.creator(e.name);if(t){const n=this.wrapAsyncFunction(t,e.name.value);return new i.AsyncExtension(e.name,r,n)}}throw new s.UnknownNamedOperator(e.name.value)}static hasCorrectArity(e,t){return Array.isArray(t)?t.includes(e.length):e.length===t}static transformAggregate(e){const t=e.aggregator;return new i.Aggregate(t,e)}static transformExistence(e){return new i.Existence(e)}}t.AlgebraTransformer=l},50363:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermTransformer=void 0;const n=r(22112),i=r(31578),a=r(11269),o=r(14624),s=r(82867),c=r(82867),u=r(17590),l=r(17590),d=r(46157);t.TermTransformer=class{constructor(e){this.superTypeProvider=e}transformRDFTermUnsafe(e){return this.transformTerm({term:e,type:i.Algebra.types.EXPRESSION,expressionType:i.Algebra.expressionTypes.TERM})}transformTerm(e){if(!e.term)throw new s.InvalidExpression(e);switch(e.term.termType){case"Variable":return new a.Variable(n.termToString(e.term));case"Literal":return this.transformLiteral(e.term);case"NamedNode":return new a.NamedNode(e.term.value);case"BlankNode":return new a.BlankNode(e.term.value);case"Quad":return new a.Quad(e.term,this.superTypeProvider);default:throw new s.InvalidTermType(e)}}transformLiteral(e){if(!e.datatype||[null,void 0,""].includes(e.datatype.value))return e.language?new a.LangStringLiteral(e.value,e.language):new a.StringLiteral(e.value);const t=e.datatype.value,r=(0,d.getSuperTypeDict)(t,this.superTypeProvider);try{if(o.TypeURL.XSD_STRING in r)return new a.StringLiteral(e.value,t);if(o.TypeURL.RDF_LANG_STRING in r)return new a.LangStringLiteral(e.value,e.language);if(o.TypeURL.XSD_YEAR_MONTH_DURATION in r)return new a.YearMonthDurationLiteral((0,u.parseYearMonthDuration)(e.value),e.value,t);if(o.TypeURL.XSD_DAY_TIME_DURATION in r)return new a.DayTimeDurationLiteral((0,u.parseDayTimeDuration)(e.value),e.value,t);if(o.TypeURL.XSD_DURATION in r)return new a.DurationLiteral((0,u.parseDuration)(e.value),e.value,t);if(o.TypeURL.XSD_DATE_TIME in r){const r=new Date(e.value);return Number.isNaN(r.getTime())?new a.NonLexicalLiteral(void 0,t,this.superTypeProvider,e.value):new a.DateTimeLiteral((0,u.parseDateTime)(e.value),e.value,t)}if(o.TypeURL.XSD_DATE in r)return new a.DateLiteral((0,u.parseDate)(e.value),e.value,t);if(o.TypeURL.XSD_TIME in r)return new a.TimeLiteral((0,u.parseTime)(e.value),e.value,t);if(o.TypeURL.XSD_BOOLEAN in r)return"true"!==e.value&&"false"!==e.value&&"1"!==e.value&&"0"!==e.value?new a.NonLexicalLiteral(void 0,t,this.superTypeProvider,e.value):new a.BooleanLiteral("true"===e.value||"1"===e.value,e.value);if(o.TypeURL.XSD_DECIMAL in r){const n=l.parseXSDDecimal(e.value);return void 0===n?new a.NonLexicalLiteral(void 0,t,this.superTypeProvider,e.value):o.TypeURL.XSD_INTEGER in r?new a.IntegerLiteral(n,t,e.value):new a.DecimalLiteral(n,t,e.value)}const n=o.TypeURL.XSD_FLOAT in r,i=o.TypeURL.XSD_DOUBLE in r;if(n||i){const r=l.parseXSDFloat(e.value);return void 0===r?new a.NonLexicalLiteral(void 0,t,this.superTypeProvider,e.value):n?new a.FloatLiteral(r,t,e.value):new a.DoubleLiteral(r,t,e.value)}return new a.Literal(e.value,t,e.value)}catch(r){if(r instanceof Error&&(0,c.isExpressionError)(r))return new a.NonLexicalLiteral(void 0,t,this.superTypeProvider,e.value);throw r}}}},14624:(e,t)=>{"use strict";var r,n,i,a,o;Object.defineProperty(t,"__esModule",{value:!0}),t.NamedOperators=t.SetFunctions=t.SetFunction=t.Operators=t.SpecialOperators=t.RegularOperators=t.SpecialOperator=t.RegularOperator=t.TypeURL=t.TypeAlias=void 0,function(e){e.SPARQL_NUMERIC="SPARQL_NUMERIC",e.SPARQL_STRINGLY="SPARQL_STRINGLY"}(r||(t.TypeAlias=r={})),function(e){e.XSD_ANY_URI="http://www.w3.org/2001/XMLSchema#anyURI",e.XSD_STRING="http://www.w3.org/2001/XMLSchema#string",e.RDF_LANG_STRING="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString",e.XSD_BOOLEAN="http://www.w3.org/2001/XMLSchema#boolean",e.XSD_DATE_TIME="http://www.w3.org/2001/XMLSchema#dateTime",e.XSD_DATE_TIME_STAMP="http://www.w3.org/2001/XMLSchema#dateTimeStamp",e.XSD_DATE="http://www.w3.org/2001/XMLSchema#date",e.XSD_G_MONTH="http://www.w3.org/2001/XMLSchema#gMonth",e.XSD_G_MONTHDAY="http://www.w3.org/2001/XMLSchema#gMonthDay",e.XSD_G_YEAR="http://www.w3.org/2001/XMLSchema#gYear",e.XSD_G_YEAR_MONTH="http://www.w3.org/2001/XMLSchema#gYearMonth",e.XSD_TIME="http://www.w3.org/2001/XMLSchema#time",e.XSD_G_DAY="http://www.w3.org/2001/XMLSchema#gDay",e.XSD_DECIMAL="http://www.w3.org/2001/XMLSchema#decimal",e.XSD_FLOAT="http://www.w3.org/2001/XMLSchema#float",e.XSD_DOUBLE="http://www.w3.org/2001/XMLSchema#double",e.XSD_INTEGER="http://www.w3.org/2001/XMLSchema#integer",e.XSD_NON_POSITIVE_INTEGER="http://www.w3.org/2001/XMLSchema#nonPositiveInteger",e.XSD_NEGATIVE_INTEGER="http://www.w3.org/2001/XMLSchema#negativeInteger",e.XSD_LONG="http://www.w3.org/2001/XMLSchema#long",e.XSD_INT="http://www.w3.org/2001/XMLSchema#int",e.XSD_SHORT="http://www.w3.org/2001/XMLSchema#short",e.XSD_BYTE="http://www.w3.org/2001/XMLSchema#byte",e.XSD_NON_NEGATIVE_INTEGER="http://www.w3.org/2001/XMLSchema#nonNegativeInteger",e.XSD_POSITIVE_INTEGER="http://www.w3.org/2001/XMLSchema#positiveInteger",e.XSD_UNSIGNED_LONG="http://www.w3.org/2001/XMLSchema#unsignedLong",e.XSD_UNSIGNED_INT="http://www.w3.org/2001/XMLSchema#unsignedInt",e.XSD_UNSIGNED_SHORT="http://www.w3.org/2001/XMLSchema#unsignedShort",e.XSD_UNSIGNED_BYTE="http://www.w3.org/2001/XMLSchema#unsignedByte",e.XSD_NORMALIZED_STRING="http://www.w3.org/2001/XMLSchema#normalizedString",e.XSD_TOKEN="http://www.w3.org/2001/XMLSchema#token",e.XSD_LANGUAGE="http://www.w3.org/2001/XMLSchema#language",e.XSD_NM_TOKEN="http://www.w3.org/2001/XMLSchema#NMTOKEN",e.XSD_NAME="http://www.w3.org/2001/XMLSchema#name",e.XSD_NC_NAME="http://www.w3.org/2001/XMLSchema#NCName",e.XSD_ENTITY="http://www.w3.org/2001/XMLSchema#ENTITY",e.XSD_ID="http://www.w3.org/2001/XMLSchema#ID",e.XSD_ID_REF="http://www.w3.org/2001/XMLSchema#IDREF",e.XSD_DURATION="http://www.w3.org/2001/XMLSchema#duration",e.XSD_YEAR_MONTH_DURATION="http://www.w3.org/2001/XMLSchema#yearMonthDuration",e.XSD_DAY_TIME_DURATION="http://www.w3.org/2001/XMLSchema#dayTimeDuration"}(n||(t.TypeURL=n={})),function(e){e.NOT="!",e.UMINUS="uminus",e.UPLUS="uplus",e.EQUAL="=",e.NOT_EQUAL="!=",e.LT="<",e.GT=">",e.LTE="<=",e.GTE=">=",e.MULTIPLICATION="*",e.DIVISION="/",e.ADDITION="+",e.SUBTRACTION="-",e.IS_IRI="isiri",e.IS_URI="isuri",e.IS_BLANK="isblank",e.IS_LITERAL="isliteral",e.IS_NUMERIC="isnumeric",e.STR="str",e.LANG="lang",e.DATATYPE="datatype",e.IRI="iri",e.URI="uri",e.STRDT="strdt",e.STRLANG="strlang",e.UUID="uuid",e.STRUUID="struuid",e.STRLEN="strlen",e.SUBSTR="substr",e.UCASE="ucase",e.LCASE="lcase",e.STRSTARTS="strstarts",e.STRENDS="strends",e.CONTAINS="contains",e.STRBEFORE="strbefore",e.STRAFTER="strafter",e.ENCODE_FOR_URI="encode_for_uri",e.LANG_MATCHES="langmatches",e.REGEX="regex",e.REPLACE="replace",e.ABS="abs",e.ROUND="round",e.CEIL="ceil",e.FLOOR="floor",e.RAND="rand",e.NOW="now",e.YEAR="year",e.MONTH="month",e.DAY="day",e.HOURS="hours",e.MINUTES="minutes",e.SECONDS="seconds",e.TIMEZONE="timezone",e.TZ="tz",e.MD5="md5",e.SHA1="sha1",e.SHA256="sha256",e.SHA384="sha384",e.SHA512="sha512",e.TRIPLE="triple",e.SUBJECT="subject",e.PREDICATE="predicate",e.OBJECT="object",e.IS_TRIPLE="istriple"}(i||(t.RegularOperator=i={})),function(e){e.BOUND="bound",e.IF="if",e.COALESCE="coalesce",e.LOGICAL_OR="||",e.LOGICAL_AND="&&",e.SAME_TERM="sameterm",e.IN="in",e.NOT_IN="notin",e.CONCAT="concat",e.BNODE="bnode"}(a||(t.SpecialOperator=a={})),t.RegularOperators=new Set(Object.values(i)),t.SpecialOperators=new Set(Object.values(a)),t.Operators=new Set([...t.RegularOperators,...t.SpecialOperators]),function(e){e.COUNT="count",e.SUM="sum",e.MIN="min",e.MAX="max",e.AVG="avg",e.GROUP_CONCAT="group_concat",e.SAMPLE="sample"}(o||(t.SetFunction=o={})),t.SetFunctions=new Set(Object.values(o)),t.NamedOperators=new Set([n.XSD_STRING,n.XSD_FLOAT,n.XSD_DOUBLE,n.XSD_DECIMAL,n.XSD_INTEGER,n.XSD_DATE_TIME,n.XSD_DATE,n.XSD_BOOLEAN,n.XSD_TIME,n.XSD_DURATION,n.XSD_DAY_TIME_DURATION,n.XSD_YEAR_MONTH_DURATION])},76660:(e,t)=>{"use strict";function r(e){return{day:e.day??0,hours:e.hours??0,minutes:e.minutes??0,seconds:e.seconds??0}}function n(e){return{year:e.year??0,month:e.month??0}}function i(e){return{...r(e),...n(e)}}function a(e){return{...e,day:e.day??1,hours:e.hours??0,month:e.month??1,year:e.year??0,seconds:e.seconds??0,minutes:e.minutes??0}}function o(e){const t=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,Math.trunc(e.seconds),e.seconds%1*1e3);if(e.year>=0&&e.year<100){const e=1900;t.setFullYear(t.getFullYear()-e)}return t}Object.defineProperty(t,"__esModule",{value:!0}),t.extractTimeZone=t.extractRawTimeZone=t.dayTimeDurationsToSeconds=t.yearMonthDurationsToMonths=t.trimToDayTimeDuration=t.trimToYearMonthDuration=t.toUTCDate=t.toJSDate=t.negateDuration=t.toDateTimeRepresentation=t.defaultedDateTimeRepresentation=t.simplifyDurationRepresentation=t.defaultedDurationRepresentation=t.defaultedYearMonthDurationRepresentation=t.defaultedDayTimeDurationRepresentation=void 0,t.defaultedDayTimeDurationRepresentation=r,t.defaultedYearMonthDurationRepresentation=n,t.defaultedDurationRepresentation=i,t.simplifyDurationRepresentation=function(e){const t=i(e),r={},n=t.year+Math.trunc(t.month/12);n&&(r.year=n,t.month%=12),t.month&&(r.month=t.month);const a=t.day+Math.trunc(t.hours/24)+Math.trunc(t.minutes/1440)+Math.trunc(t.seconds/86400);a&&(r.day=a,t.hours%=24,t.minutes%=1440,t.seconds%=86400);const o=t.hours+Math.trunc(t.minutes/60)+Math.trunc(t.seconds/3600);o&&(r.hours=o,t.minutes%=60,t.seconds%=3600);const s=t.minutes+Math.trunc(t.seconds/60);return s&&(r.minutes=s,t.seconds%=60),t.seconds&&(r.seconds=t.seconds),r},t.defaultedDateTimeRepresentation=a,t.toDateTimeRepresentation=function({date:e,timeZone:t}){return{year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds(),zoneHours:t.zoneHours,zoneMinutes:t.zoneMinutes}},t.negateDuration=function(e){return{year:void 0===e.year?void 0:-1*e.year,month:void 0===e.month?void 0:-1*e.month,day:void 0===e.day?void 0:-1*e.day,hours:void 0===e.hours?void 0:-1*e.hours,minutes:void 0===e.minutes?void 0:-1*e.minutes,seconds:void 0===e.seconds?void 0:-1*e.seconds}},t.toJSDate=o,t.toUTCDate=function(e,t){const r=o(a(e)),n=r.getTimezoneOffset(),i=e.zoneHours??t.zoneHours,s=e.zoneMinutes??t.zoneMinutes;return new Date(r.getTime()-60*(n+60*i+s)*1e3)},t.trimToYearMonthDuration=function(e){return{year:e.year,month:e.month}},t.trimToDayTimeDuration=function(e){return{day:e.day,hours:e.hours,minutes:e.minutes,seconds:e.seconds}},t.yearMonthDurationsToMonths=function(e){return 12*e.year+e.month},t.dayTimeDurationsToSeconds=function(e){return 60*(60*(24*e.day+e.hours)+e.minutes)+e.seconds},t.extractRawTimeZone=function(e){return/(Z|([+-]\d\d:\d\d))?$/u.exec(e)[0]},t.extractTimeZone=function(e){return{zoneHours:e.getTimezoneOffset()/60,zoneMinutes:e.getTimezoneOffset()%60}}},82867:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoExistenceHook=t.NoAggregator=t.ExtensionFunctionError=t.UnknownNamedOperator=t.UnknownOperator=t.InvalidTermType=t.InvalidExpressionType=t.InvalidExpression=t.InvalidArity=t.UnexpectedError=t.ParseError=t.EmptyAggregateError=t.IncompatibleLanguageOperation=t.InvalidTimezoneCall=t.CastError=t.InvalidCompareArgumentTypes=t.InvalidArgumentTypes=t.InError=t.CoalesceError=t.RDFEqualTypeError=t.EBVCoercionError=t.UnboundVariableError=t.InvalidLexicalForm=t.isExpressionError=t.ExpressionError=void 0;class r extends Error{}t.ExpressionError=r,t.isExpressionError=function(e){return e instanceof r},t.InvalidLexicalForm=class extends r{constructor(e){super(`Invalid lexical form '${h(e)}'`),this.arg=e}},t.UnboundVariableError=class extends r{constructor(e,t){super(`Unbound variable '${h(e)}'`),this.variable=e,this.bindings=t}},t.EBVCoercionError=class extends r{constructor(e){super(`Cannot coerce term to EBV '${h(e)}'`),this.arg=e}},t.RDFEqualTypeError=class extends r{constructor(e){super("Equality test for literals with unsupported datatypes"),this.args=e}},t.CoalesceError=class extends r{constructor(e){super("All COALESCE arguments threw errors"),this.errors=e}},t.InError=class extends r{constructor(e){super(`Some argument to IN errorred and none where equal. ${e.map((e=>`(${e.toString()}) `)).join("and ")}`),this.errors=e}},t.InvalidArgumentTypes=class extends r{constructor(e,t){super(`Argument types not valid for operator: '${h(t)}' with '${h(e)}`),this.args=e,this.op=t}},t.InvalidCompareArgumentTypes=class extends r{constructor(e,t){super(`Compared argument types are supported: '${e.termType}' and '${t.termType}'`),this.arg0=e,this.arg1=t}},t.CastError=class extends r{constructor(e,t){super(`Invalid cast: '${h(e)}' to '${h(t)}'`),this.arg=e}},t.InvalidTimezoneCall=class extends r{constructor(e){super(`TIMEZONE call on ${e} which has no timezone`),this.dateString=e}},t.IncompatibleLanguageOperation=class extends r{constructor(e,t){super(`Operation on incompatible language literals '${h(e)}' and '${h(t)}'`),this.arg1=e,this.arg2=t}},t.EmptyAggregateError=class extends r{constructor(){super("Empty aggregate expression")}},t.ParseError=class extends r{constructor(e,t){super(`Failed to parse ${e} as ${t}.`)}};class n extends Error{constructor(e,t){super(`Programmer Error '${e}'`),this.payload=t}}t.UnexpectedError=n;class i extends Error{constructor(e,t){super(`The number of args does not match the arity of the operator '${h(t)}'.`),this.args=e,this.op=t}}t.InvalidArity=i;class a extends Error{constructor(e){super(`Invalid SPARQL Expression '${h(e)}'`)}}t.InvalidExpression=a;class o extends Error{constructor(e){super(`Invalid expression type for SPARQL Expression '${h(e)}'`),this.expr=e}}t.InvalidExpressionType=o;class s extends Error{constructor(e){super(`Invalid term type for term '${h(e)}'`),this.term=e}}t.InvalidTermType=s;class c extends Error{constructor(e){super(`Unknown operator: '${h(e)}`)}}t.UnknownOperator=c;class u extends Error{constructor(e){super(`Unknown named operator: '${h(e)}'`)}}t.UnknownNamedOperator=u;class l extends Error{constructor(e,t){t instanceof Error?super(`Error thrown in ${e}: ${t.message}${t.stack?`\n${t.stack}`:""}`):super(`Error thrown in ${e}`)}}t.ExtensionFunctionError=l;class d extends Error{constructor(e){super(`Aggregate expression ${h(e)} found, but no aggregate hook provided.`)}}t.NoAggregator=d;class p extends Error{constructor(){super("EXISTS found, but no existence hook provided.")}}function h(e){return JSON.stringify(e)}t.NoExistenceHook=p},20236:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.orderTypes=void 0;const n=r(35069),i=r(42711),a=r(50363),o=r(14624),s=r(82867);function c(e,t){return e===t?0:e"term"),cache:s??new n.LRUCache({max:1e3})},defaultTimeZone:{zoneHours:0,zoneMinutes:0}},p=new a.TermTransformer(d.superTypeProvider),h=p.transformLiteral(e),f=p.transformLiteral(t);try{return l.apply([h,f],d).typedValue?0:u.apply([h,f],d).typedValue?1:-1}catch{const e=c(h.dataType,f.dataType);return 0!==e?e:c(h.str(),f.str())}}(t,r,d,p);if(l)throw new s.InvalidCompareArgumentTypes(t,r);return c(t.value,r.value)};const u={Variable:0,BlankNode:1,NamedNode:2,Literal:3,Quad:4,DefaultGraph:5}},17590:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseDayTimeDuration=t.parseYearMonthDuration=t.parseDuration=t.parseTime=t.parseDate=t.parseDateTime=t.parseXSDInteger=t.parseXSDDecimal=t.parseXSDFloat=void 0;const n=r(76660),i=r(82867),a=r(66487);function o(e){if(""===e)return{zoneHours:void 0,zoneMinutes:void 0};if("Z"===e)return{zoneHours:0,zoneMinutes:0};const t=e.replaceAll(/^([+|-])(\d\d):(\d\d)$/gu,"$11!$2!$3").split("!").map(Number);return{zoneHours:t[0]*t[1],zoneMinutes:t[0]*t[2]}}function s(e){const t=e.replaceAll(/^(-)?([123456789]*\d{4})-(\d\d)-(\d\d)(Z|([+-]\d\d:\d\d))?$/gu,"$11!$2!$3!$4!$5");if(t===e)throw new i.ParseError(e,"date");const r=t.split("!"),n=r.slice(0,-1).map(Number),s={year:n[0]*n[1],month:n[2],day:n[3],...o(r[4])};if(!(s.month>=1&&s.month<=12&&s.day>=1&&s.day<=(0,a.maximumDayInMonthFor)(s.year,s.month)))throw new i.ParseError(e,"date");return s}function c(e){const t=e.replaceAll(/^(\d\d):(\d\d):(\d\d(\.\d+)?)(Z|([+-]\d\d:\d\d))?$/gu,"$1!$2!$3!$5");if(t===e)throw new i.ParseError(e,"time");const r=t.split("!"),n=r.slice(0,-1).map(Number),a={hours:n[0],minutes:n[1],seconds:n[2],...o(r[3])};if(a.seconds>=60||a.minutes>=60||a.hours>24||24===a.hours&&(0!==a.minutes||0!==a.seconds))throw new i.ParseError(e,"time");return a}function u(e){const[t,r]=e.split("T"),a=t.replaceAll(/^(-)?P(\d+Y)?(\d+M)?(\d+D)?$/gu,"$11S!$2!$3!$4");if(a===t)throw new i.ParseError(e,"duration");const o=a.split("!");if(void 0!==r){const t=r.replaceAll(/^(\d+H)?(\d+M)?(\d+(\.\d+)?S)?$/gu,"$1!$2!$3");if(""===r||r===t)throw new i.ParseError(e,"duration");o.push(...t.split("!"))}const s=o.map((e=>e.slice(0,-1)));if(!s.slice(1).some(Boolean))throw new i.ParseError(e,"duration");const c=Number(s[0]);return(0,n.simplifyDurationRepresentation)({year:s[1]?c*Number(s[1]):void 0,month:s[2]?c*Number(s[2]):void 0,day:s[3]?c*Number(s[3]):void 0,hours:s[4]?c*Number(s[4]):void 0,minutes:s[5]?c*Number(s[5]):void 0,seconds:s[6]?c*Number(s[6]):void 0})}t.parseXSDFloat=function(e){const t=Number(e);return Number.isNaN(t)?"NaN"===e?Number.NaN:"INF"===e||"+INF"===e?Number.POSITIVE_INFINITY:"-INF"===e?Number.NEGATIVE_INFINITY:void 0:t},t.parseXSDDecimal=function(e){const t=Number(e);return Number.isNaN(t)?void 0:t},t.parseXSDInteger=function(e){const t=Number.parseInt(e,10);return Number.isNaN(t)?void 0:t},t.parseDateTime=function(e){const[t,r]=e.split("T");return{...s(t),...c(r)}},t.parseDate=s,t.parseTime=function(e){const t=c(e);return t.hours%=24,t},t.parseDuration=u,t.parseYearMonthDuration=function(e){const t=u(e);if(["hours","minutes","seconds","day"].some((e=>Boolean(t[e]))))throw new i.ParseError(e,"yearMonthDuration");return t},t.parseDayTimeDuration=function(e){const t=u(e);if(["year","month"].some((e=>Boolean(t[e]))))throw new i.ParseError(e,"dayTimeDuration");return t}},19002:(e,t)=>{"use strict";function r(e,t=2){return e.toLocaleString(void 0,{minimumIntegerDigits:t,useGrouping:!1})}function n(e){return void 0===e.zoneHours||void 0===e.zoneMinutes?"":0===e.zoneHours&&0===e.zoneMinutes?"Z":`${e.zoneHours>=0?`+${r(e.zoneHours)}`:r(e.zoneHours)}:${r(Math.abs(e.zoneMinutes))}`}function i(e){return`${r(e.year,4)}-${r(e.month)}-${r(e.day)}${n(e)}`}function a(e){return`${r(e.hours)}:${r(e.minutes)}:${r(e.seconds)}${n(e)}`}Object.defineProperty(t,"__esModule",{value:!0}),t.serializeDuration=t.serializeTime=t.serializeDate=t.serializeDateTime=void 0,t.serializeDateTime=function(e){return`${i({year:e.year,month:e.month,day:e.day})}T${a(e)}`},t.serializeDate=i,t.serializeTime=a,t.serializeDuration=function(e,t="PT0S"){if(!Object.values(e).some((e=>0!==(e||0))))return t;const r=`${Object.values(e).some((e=>(e||0)<0))?"-":""}P${e.year?`${Math.abs(e.year)}Y`:""}${e.month?`${Math.abs(e.month)}M`:""}${e.day?`${Math.abs(e.day)}D`:""}`;return e.hours||e.minutes||e.seconds?`${r}T${e.hours?`${Math.abs(e.hours)}H`:""}${e.minutes?`${Math.abs(e.minutes)}M`:""}${e.seconds?`${Math.abs(e.seconds)}S`:""}`:r}},66487:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.elapsedDuration=t.addDurationToDateTime=t.maximumDayInMonthFor=void 0;const n=r(76660);function i(e,t,r=0){const n=e-r,i=t-r,a=Math.floor(n/i);return{intDiv:a,remainder:e-a*i}}function a(e,t){const{intDiv:r,remainder:n}=i(t,13,1),a=e+r;return[1,3,5,7,8,10,12].includes(n)?31:[4,6,9,11].includes(n)?30:2===n&&(0===i(a,400).remainder||0!==i(a,100).remainder&&0===i(a,4).remainder)?29:28}t.maximumDayInMonthFor=a,t.addDurationToDateTime=function(e,t){const r={...e};let n=i(e.month+t.month,13,1);for(r.month=n.remainder,r.year=e.year+t.year+n.intDiv,n=i(e.seconds+t.seconds,60),r.seconds=n.remainder,n=i(e.minutes+t.minutes+n.intDiv,60),r.minutes=n.remainder,n=i(e.hours+t.hours+n.intDiv,24),r.hours=n.remainder,r.day=e.day+t.day+n.intDiv;;){let e;if(r.day<1)r.day+=a(r.year,r.month-1),e=-1;else{if(!(r.day>a(r.year,r.month)))break;r.day-=a(r.year,r.month),e=1}n=i(r.month+e,13,1),r.month=n.remainder,r.year+=n.intDiv}return r},t.elapsedDuration=function(e,t,r){const i=(0,n.toUTCDate)(e,r),a=(0,n.toUTCDate)(t,r),o=i.getTime()-a.getTime();return{day:Math.floor(o/864e5),hours:Math.floor(o%864e5/36e5),minutes:Math.floor(o%36e5/6e4),seconds:o%6e4}}},46157:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.typePromotion=t.isSubTypeOf=t.getSuperTypeDict=t.isInternalSubType=t.asGeneralType=t.asOverrideType=t.asKnownLiteralType=t.asTypeAlias=t.typeAliasCheck=t.extensionTableInit=t.getSuperTypes=t.superTypeDictTable=t.extensionTableInput=void 0;const n=r(11269),i=r(63606),a=r(14624);function o(e,r){const n=r.cache.get(e);if(n)return n;const i=r.discoverer(e);if("term"===i){const t=Object.create(null);return t.__depth=0,t[e]=0,r.cache.set(e,t),t}let a;const s=u(i);return a=s?{...t.superTypeDictTable[s]}:{...o(i,r)},a.__depth++,a[e]=a.__depth,r.cache.set(e,a),a}function s(){for(const[e,r]of Object.entries(t.extensionTableInput)){const n=e;t.superTypeDictTable[n]||c(n,r,t.superTypeDictTable)}}function c(e,r,n){if("term"===r||void 0===r){const t=Object.create(null);return t.__depth=0,t[e]=0,void(n[e]=t)}n[r]||c(r,t.extensionTableInput[r],n),n[e]={...n[r],[e]:n[r].__depth+1,__depth:n[r].__depth+1}}function u(e){if(e in t.superTypeDictTable)return e}function l(e,r){const n=u(e);return n?t.superTypeDictTable[n]:o(e,r)}t.extensionTableInput={[a.TypeURL.XSD_DATE_TIME_STAMP]:a.TypeURL.XSD_DATE_TIME,[a.TypeURL.XSD_DAY_TIME_DURATION]:a.TypeURL.XSD_DURATION,[a.TypeURL.XSD_YEAR_MONTH_DURATION]:a.TypeURL.XSD_DURATION,[a.TypeURL.RDF_LANG_STRING]:a.TypeAlias.SPARQL_STRINGLY,[a.TypeURL.XSD_STRING]:a.TypeAlias.SPARQL_STRINGLY,[a.TypeURL.XSD_NORMALIZED_STRING]:a.TypeURL.XSD_STRING,[a.TypeURL.XSD_TOKEN]:a.TypeURL.XSD_NORMALIZED_STRING,[a.TypeURL.XSD_LANGUAGE]:a.TypeURL.XSD_TOKEN,[a.TypeURL.XSD_NM_TOKEN]:a.TypeURL.XSD_TOKEN,[a.TypeURL.XSD_NAME]:a.TypeURL.XSD_TOKEN,[a.TypeURL.XSD_NC_NAME]:a.TypeURL.XSD_NAME,[a.TypeURL.XSD_ENTITY]:a.TypeURL.XSD_NC_NAME,[a.TypeURL.XSD_ID]:a.TypeURL.XSD_NC_NAME,[a.TypeURL.XSD_ID_REF]:a.TypeURL.XSD_NC_NAME,[a.TypeURL.XSD_DOUBLE]:a.TypeAlias.SPARQL_NUMERIC,[a.TypeURL.XSD_FLOAT]:a.TypeAlias.SPARQL_NUMERIC,[a.TypeURL.XSD_DECIMAL]:a.TypeAlias.SPARQL_NUMERIC,[a.TypeURL.XSD_INTEGER]:a.TypeURL.XSD_DECIMAL,[a.TypeURL.XSD_NON_POSITIVE_INTEGER]:a.TypeURL.XSD_INTEGER,[a.TypeURL.XSD_NEGATIVE_INTEGER]:a.TypeURL.XSD_NON_POSITIVE_INTEGER,[a.TypeURL.XSD_LONG]:a.TypeURL.XSD_INTEGER,[a.TypeURL.XSD_INT]:a.TypeURL.XSD_LONG,[a.TypeURL.XSD_SHORT]:a.TypeURL.XSD_INT,[a.TypeURL.XSD_BYTE]:a.TypeURL.XSD_SHORT,[a.TypeURL.XSD_NON_NEGATIVE_INTEGER]:a.TypeURL.XSD_INTEGER,[a.TypeURL.XSD_POSITIVE_INTEGER]:a.TypeURL.XSD_NON_NEGATIVE_INTEGER,[a.TypeURL.XSD_UNSIGNED_LONG]:a.TypeURL.XSD_NON_NEGATIVE_INTEGER,[a.TypeURL.XSD_UNSIGNED_INT]:a.TypeURL.XSD_UNSIGNED_LONG,[a.TypeURL.XSD_UNSIGNED_SHORT]:a.TypeURL.XSD_UNSIGNED_INT,[a.TypeURL.XSD_UNSIGNED_BYTE]:a.TypeURL.XSD_UNSIGNED_SHORT,[a.TypeURL.XSD_DATE_TIME]:"term",[a.TypeURL.XSD_BOOLEAN]:"term",[a.TypeURL.XSD_DATE]:"term",[a.TypeURL.XSD_G_MONTH]:"term",[a.TypeURL.XSD_G_MONTHDAY]:"term",[a.TypeURL.XSD_G_YEAR]:"term",[a.TypeURL.XSD_G_YEAR_MONTH]:"term",[a.TypeURL.XSD_TIME]:"term",[a.TypeURL.XSD_G_DAY]:"term",[a.TypeURL.XSD_DURATION]:"term",[a.TypeAlias.SPARQL_NUMERIC]:"term",[a.TypeAlias.SPARQL_STRINGLY]:"term",[a.TypeURL.XSD_ANY_URI]:"term"},t.superTypeDictTable=Object.create(null),t.getSuperTypes=o,t.extensionTableInit=s,s(),t.typeAliasCheck=Object.create(null),function(){for(const e of Object.values(a.TypeAlias))t.typeAliasCheck[e]=!0}(),t.asTypeAlias=function(e){if(e in t.typeAliasCheck)return e},t.asKnownLiteralType=u,t.asOverrideType=function(e){if(u(e)??"term"===e)return e},t.asGeneralType=function(e){if("term"===e||(0,n.asTermType)(e))return e},t.isInternalSubType=function(e,r){return"term"!==e&&t.superTypeDictTable[e]&&void 0!==t.superTypeDictTable[e][r]},t.getSuperTypeDict=l,t.isSubTypeOf=function(e,t,r){return"term"!==e&&void 0!==l(e,r)[t]},t.typePromotion={[a.TypeURL.XSD_STRING]:[{typeToPromote:a.TypeURL.XSD_ANY_URI,conversionFunction:e=>(0,i.string)(e.str())}],[a.TypeURL.XSD_DOUBLE]:[{typeToPromote:a.TypeURL.XSD_FLOAT,conversionFunction:e=>(0,i.double)(e.typedValue)},{typeToPromote:a.TypeURL.XSD_DECIMAL,conversionFunction:e=>(0,i.double)(e.typedValue)}],[a.TypeURL.XSD_FLOAT]:[{typeToPromote:a.TypeURL.XSD_DECIMAL,conversionFunction:e=>(0,i.float)(e.typedValue)}]}},71448:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoggerVoid=void 0;const n=r(52640);class i extends n.Logger{debug(){}error(){}fatal(){}info(){}trace(){}warn(){}}t.LoggerVoid=i},5868:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(71448),t)},8008:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorAll=void 0;const n=r(34368);class i extends n.Mediator{constructor(e){super(e)}async mediate(e){const t=[];let r;try{r=this.publish(e)}catch{r=[]}for(const e of r)try{await e.reply,t.push(e.actor)}catch{}return(await Promise.all(t.map((t=>t.runObservable(e)))))[0]}async mediateWith(){throw new Error("Unsupported operation: MediatorAll#mediateWith")}}t.MediatorAll=i},48284:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(8008),t)},38123:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorCombinePipeline=void 0;const n=r(34368);class i extends n.Mediator{constructor(e){super(e)}async mediate(e){let t;try{t=this.publish(e)}catch{return e}if(this.filterErrors){const e=[];for(const r of t)try{await r.reply,e.push(r)}catch{}t=e}if(t=await Promise.all(t.map((async({actor:e,reply:t})=>({actor:e,reply:await t})))),this.order){const e=e=>{const t=this.field?e[this.field]:e;if("number"!=typeof t)throw new TypeError("Cannot order elements that are not numbers.");return t};t=t.sort(((t,r)=>("increasing"===this.order?1:-1)*(e(t.reply)-e(r.reply))))}let r=e;for(const{actor:e}of t)r={...r,...await e.runObservable(r)};return r}mediateWith(){throw new Error("Method not supported.")}}t.MediatorCombinePipeline=i},30827:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(38123),t)},79559:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorCombineUnion=void 0;const n=r(34368);class i extends n.Mediator{constructor(e){super(e),this.combiner=this.createCombiner()}async mediate(e){let t;try{t=this.publish(e)}catch{t=[]}if(this.filterErrors){const e=[];for(const r of t)try{await r.reply,e.push(r)}catch{}t=e}await Promise.all(t.map((({reply:e})=>e)));const r=await Promise.all(t.map((t=>t.actor.runObservable(e))));return this.combiner(r)}mediateWith(){throw new Error("Method not supported.")}createCombiner(){return e=>{const t={};return t[this.field]={},[{}].concat(e.map((e=>e[this.field]))).forEach((e=>{t[this.field]={...e,...t[this.field]}})),t}}}t.MediatorCombineUnion=i},75884:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(79559),t)},63850:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorJoinCoefficientsFixed=void 0;const n=r(32227),i=r(34368);class a extends i.Mediator{constructor(e){super(e)}async mediateWith(e,t){const r=[],a=t.map((({reply:e})=>e)).map((e=>e.catch((e=>{r.push(e)})))),o=await Promise.all(a);let s=o.map((e=>{if(e)return e.iterations*this.cpuWeight+e.persistedItems*this.memoryWeight+e.blockingItems*this.timeWeight+e.requestTime*this.ioWeight}));const c=Math.max(...s.filter((e=>void 0!==e))),u=e.context.get(n.KeysQueryOperation.limitIndicator);u&&(s=s.map(((e,t)=>void 0!==e&&o[t].blockingItems>0&&o[t].iterations>u?e+c:e)));let l=-1,d=Number.POSITIVE_INFINITY;for(const[e,t]of s.entries())void 0!==t&&(-1===l||te.message)).join("\n")}`);const p=t[l].actor;return p.includeInLogs&&i.Actor.getContextLogger(e.context)?.debug(`Determined physical join operator '${p.logicalType}-${p.physicalName}'`,{entries:e.entries.length,variables:await Promise.all(e.entries.map((async e=>(await e.output.metadata()).variables.map((e=>e.value))))),costs:Object.fromEntries(s.map(((e,r)=>[`${t[r].actor.logicalType}-${t[r].actor.physicalName}`,e])).filter((e=>void 0!==e[1]))),coefficients:Object.fromEntries(o.map(((e,r)=>[`${t[r].actor.logicalType}-${t[r].actor.physicalName}`,e])).filter((e=>void 0!==e[1])))}),p}}t.MediatorJoinCoefficientsFixed=a},8309:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(63850),t)},55614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorNumber=void 0;const n=r(34368);class i extends n.Mediator{constructor(e){super(e),this.indexPicker=this.createIndexPicker()}createIndexPicker(){switch(this.type){case"min":return e=>e.reduce(((e,t,r)=>{const n=this.getOrDefault(t[this.field],Number.POSITIVE_INFINITY);return null!==n&&(Number.isNaN(e[0])||e[0]>n)?[n,r]:e}),[Number.NaN,-1])[1];case"max":return e=>e.reduce(((e,t,r)=>{const n=this.getOrDefault(t[this.field],Number.NEGATIVE_INFINITY);return null!==n&&(Number.isNaN(e[0])||e[0]e));const n=[];if(this.ignoreErrors){const e={};e[this.field]=null,r=r.map((t=>t.catch((t=>(n.push(t),e)))))}const i=await Promise.all(r),a=this.indexPicker(i);if(a<0)throw new Error(`All actors rejected their test in ${this.name}\n${n.map((e=>e.message)).join("\n")}`);return t[a].actor}}t.MediatorNumber=i},99104:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(55614),t)},41426:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorRace=void 0;const n=r(34368);class i extends n.Mediator{constructor(e){super(e)}mediateWith(e,t){return new Promise(((e,r)=>{const n=[];for(const i of t)i.reply.then((()=>{e(i.actor)})).catch((e=>{n.push(e),n.length===t.length&&r(new Error(`${this.name} mediated over all rejecting actors:\n${n.map((e=>e.message)).join("\n")}`))}))}))}}t.MediatorRace=i},25896:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(41426),t)},85849:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataValidationState=void 0,t.MetadataValidationState=class{constructor(){this.invalidateListeners=[],this.valid=!0}addInvalidateListener(e){this.invalidateListeners.push(e)}invalidate(){if(this.valid){this.valid=!1;for(const e of this.invalidateListeners)e()}}}},48187:(e,t)=>{"use strict";function r(e){for(const t of["cardinality"])if(!(t in e))throw new Error(`Invalid metadata: missing ${t} in ${JSON.stringify(e)}`);return e}function n(e){for(const t of["cardinality","canContainUndefs","variables"])if(!(t in e))throw new Error(`Invalid metadata: missing ${t} in ${JSON.stringify(e)}`);return e}function i(e){let t;return()=>(t||(t=e(),t.then((e=>e.state.addInvalidateListener((()=>{t=void 0})))).catch((()=>{}))),t)}Object.defineProperty(t,"__esModule",{value:!0}),t.cachifyMetadata=t.validateMetadataBindings=t.validateMetadataQuads=t.getMetadataBindings=t.getMetadataQuads=void 0,t.getMetadataQuads=function(e){return i((()=>new Promise(((t,r)=>{e.getProperty("metadata",(e=>t(e))),e.on("error",r)})).then((e=>r(e)))))},t.getMetadataBindings=function(e){return i((()=>new Promise(((t,r)=>{e.getProperty("metadata",(e=>t(e))),e.on("error",r)})).then((e=>("canContainUndefs"in e||(e.canContainUndefs=!1),n(e))))))},t.validateMetadataQuads=r,t.validateMetadataBindings=n,t.cachifyMetadata=i},72394:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(85849),t),i(r(48187),t)},66072:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},90522:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},54973:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},70650:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},92955:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},66143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},53475:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},22170:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},6379:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},78615:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},60552:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},34989:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},50199:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},15278:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},16382:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Logger=void 0;class r{static getLevelOrdinal(e){return r.LEVELS[e]}}t.Logger=r,r.LEVELS={trace:0,debug:1,info:2,warn:3,error:4,fatal:5}},52640:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(66072),t),i(r(90522),t),i(r(54973),t),i(r(70650),t),i(r(92955),t),i(r(66143),t),i(r(22170),t),i(r(6379),t),i(r(78615),t),i(r(60552),t),i(r(34989),t),i(r(50199),t),i(r(15278),t),i(r(4546),t),i(r(74532),t),i(r(53475),t),i(r(16382),t)},74532:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},4546:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},7991:(e,t)=>{"use strict";t.byteLength=function(e){var t=s(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){var t,r,a=s(e),o=a[0],c=a[1],u=new i(function(e,t,r){return 3*(t+r)/4-r}(0,o,c)),l=0,d=c>0?o-4:o;for(r=0;r>16&255,u[l++]=t>>8&255,u[l++]=255&t;return 2===c&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,u[l++]=255&t),1===c&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t),u},t.fromByteArray=function(e){for(var t,n=e.length,i=n%3,a=[],o=16383,s=0,u=n-i;su?u:s+o));return 1===i?(t=e[n-1],a.push(r[t>>2]+r[t<<4&63]+"==")):2===i&&(t=(e[n-2]<<8)+e[n-1],a.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"=")),a.join("")};for(var r=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)r[o]=a[o],n[a.charCodeAt(o)]=o;function s(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function c(e,t,n){for(var i,a,o=[],s=t;s>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},55553:function(e,t,r){var n;!function(i){"use strict";var a,o=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,s=Math.ceil,c=Math.floor,u="[BigNumber Error] ",l=u+"Number primitive has more than 15 significant digits: ",d=1e14,p=14,h=9007199254740991,f=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],y=1e7,g=1e9;function m(e){var t=0|e;return e>0||e===t?t:t-1}function b(e){for(var t,r,n=1,i=e.length,a=e[0]+"";nu^r?1:-1;for(s=(c=i.length)<(u=a.length)?c:u,o=0;oa[o]^r?1:-1;return c==u?0:c>u^r?1:-1}function _(e,t,r,n){if(er||e!==c(e))throw Error(u+(n||"Argument")+("number"==typeof e?er?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function w(e){var t=e.c.length-1;return m(e.e/p)==t&&e.c[t]%2!=0}function T(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function S(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(++t>(n=e.length)){for(i=r,t-=n;--t;i+=r);e+=i}else tk?m.c=m.e=null:e.e=10;d/=10,u++);return void(u>k?m.c=m.e=null:(m.e=u,m.c=[e]))}g=String(e)}else{if(!o.test(g=String(e)))return i(m,g,f);m.s=45==g.charCodeAt(0)?(g=g.slice(1),-1):1}(u=g.indexOf("."))>-1&&(g=g.replace(".","")),(d=g.search(/e/i))>0?(u<0&&(u=d),u+=+g.slice(d+1),g=g.substring(0,d)):u<0&&(u=g.length)}else{if(_(t,2,V.length,"Base"),10==t&&Q)return K(m=new $(e),D+m.e+1,j);if(g=String(e),f="number"==typeof e){if(0*e!=0)return i(m,g,f,t);if(m.s=1/e<0?(g=g.slice(1),-1):1,$.DEBUG&&g.replace(/^0\.0*|\./,"").length>15)throw Error(l+e)}else m.s=45===g.charCodeAt(0)?(g=g.slice(1),-1):1;for(r=V.slice(0,t),u=d=0,y=g.length;du){u=y;continue}}else if(!s&&(g==g.toUpperCase()&&(g=g.toLowerCase())||g==g.toLowerCase()&&(g=g.toUpperCase()))){s=!0,d=-1,u=0;continue}return i(m,String(e),f,t)}f=!1,(u=(g=n(g,t,10,m.s)).indexOf("."))>-1?g=g.replace(".",""):u=g.length}for(d=0;48===g.charCodeAt(d);d++);for(y=g.length;48===g.charCodeAt(--y););if(g=g.slice(d,++y)){if(y-=d,f&&$.DEBUG&&y>15&&(e>h||e!==c(e)))throw Error(l+m.s*e);if((u=u-d-1)>k)m.c=m.e=null;else if(u=M)?T(c,o):S(c,o,"0");else if(a=(e=K(new $(e),t,r)).e,s=(c=b(e.c)).length,1==n||2==n&&(t<=a||a<=C)){for(;ss){if(--t>0)for(c+=".";t--;c+="0");}else if((t+=a-s)>0)for(a+1==s&&(c+=".");t--;c+="0");return e.s<0&&i?"-"+c:c}function G(e,t){for(var r,n,i=1,a=new $(e[0]);i=10;i/=10,n++);return(r=n+r*p-1)>k?e.c=e.e=null:r=10;u/=10,i++);if((a=t-i)<0)a+=p,o=t,l=g[h=0],y=c(l/m[i-o-1]%10);else if((h=s((a+1)/p))>=g.length){if(!n)break e;for(;g.length<=h;g.push(0));l=y=0,i=1,o=(a%=p)-p+1}else{for(l=u=g[h],i=1;u>=10;u/=10,i++);y=(o=(a%=p)-p+i)<0?0:c(l/m[i-o-1]%10)}if(n=n||t<0||null!=g[h+1]||(o<0?l:l%m[i-o-1]),n=r<4?(y||n)&&(0==r||r==(e.s<0?3:2)):y>5||5==y&&(4==r||n||6==r&&(a>0?o>0?l/m[i-o]:0:g[h-1])%10&1||r==(e.s<0?8:7)),t<1||!g[0])return g.length=0,n?(t-=e.e+1,g[0]=m[(p-t%p)%p],e.e=-t||0):g[0]=e.e=0,e;if(0==a?(g.length=h,u=1,h--):(g.length=h+1,u=m[p-a],g[h]=o>0?c(l/m[i-o]%m[o])*u:0),n)for(;;){if(0==h){for(a=1,o=g[0];o>=10;o/=10,a++);for(o=g[0]+=u,u=1;o>=10;o/=10,u++);a!=u&&(e.e++,g[0]==d&&(g[0]=1));break}if(g[h]+=u,g[h]!=d)break;g[h--]=0,u=1}for(a=g.length;0===g[--a];g.pop());}e.e>k?e.c=e.e=null:e.e=M?T(t,r):S(t,r,"0"),e.s<0?"-"+t:t)}return $.clone=e,$.ROUND_UP=0,$.ROUND_DOWN=1,$.ROUND_CEIL=2,$.ROUND_FLOOR=3,$.ROUND_HALF_UP=4,$.ROUND_HALF_DOWN=5,$.ROUND_HALF_EVEN=6,$.ROUND_HALF_CEIL=7,$.ROUND_HALF_FLOOR=8,$.EUCLID=9,$.config=$.set=function(e){var t,r;if(null!=e){if("object"!=typeof e)throw Error(u+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(_(r=e[t],0,g,t),D=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(_(r=e[t],0,8,t),j=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((r=e[t])&&r.pop?(_(r[0],-g,0,t),_(r[1],0,g,t),C=r[0],M=r[1]):(_(r,-g,g,t),C=-(M=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if((r=e[t])&&r.pop)_(r[0],-g,-1,t),_(r[1],1,g,t),L=r[0],k=r[1];else{if(_(r,-g,g,t),!r)throw Error(u+t+" cannot be zero: "+r);L=-(k=r<0?-r:r)}if(e.hasOwnProperty(t="CRYPTO")){if((r=e[t])!==!!r)throw Error(u+t+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw F=!r,Error(u+"crypto unavailable");F=r}else F=r}if(e.hasOwnProperty(t="MODULO_MODE")&&(_(r=e[t],0,9,t),B=r),e.hasOwnProperty(t="POW_PRECISION")&&(_(r=e[t],0,g,t),U=r),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(r=e[t]))throw Error(u+t+" not an object: "+r);q=r}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(r=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(r))throw Error(u+t+" invalid: "+r);Q="0123456789"==r.slice(0,10),V=r}}return{DECIMAL_PLACES:D,ROUNDING_MODE:j,EXPONENTIAL_AT:[C,M],RANGE:[L,k],CRYPTO:F,MODULO_MODE:B,POW_PRECISION:U,FORMAT:q,ALPHABET:V}},$.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!$.DEBUG)return!0;var t,r,n=e.c,i=e.e,a=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===a||-1===a)&&i>=-g&&i<=g&&i===c(i)){if(0===n[0]){if(0===i&&1===n.length)return!0;break e}if((t=(i+1)%p)<1&&(t+=p),String(n[0]).length==t){for(t=0;t=d||r!==c(r))break e;if(0!==r)return!0}}}else if(null===n&&null===i&&(null===a||1===a||-1===a))return!0;throw Error(u+"Invalid BigNumber: "+e)},$.maximum=$.max=function(){return G(arguments,-1)},$.minimum=$.min=function(){return G(arguments,1)},$.random=(a=9007199254740992,O=Math.random()*a&2097151?function(){return c(Math.random()*a)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,n,i,a,o=0,l=[],d=new $(N);if(null==e?e=D:_(e,0,g),i=s(e/p),F)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(i*=2));o>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[o]=r[0],t[o+1]=r[1]):(l.push(a%1e14),o+=2);o=i/2}else{if(!crypto.randomBytes)throw F=!1,Error(u+"crypto unavailable");for(t=crypto.randomBytes(i*=7);o=9e15?crypto.randomBytes(7).copy(t,o):(l.push(a%1e14),o+=7);o=i/7}if(!F)for(;o=10;a/=10,o++);or-1&&(null==o[i+1]&&(o[i+1]=0),o[i+1]+=o[i]/r|0,o[i]%=r)}return o.reverse()}return function(n,i,a,o,s){var c,u,l,d,p,h,f,y,g=n.indexOf("."),m=D,v=j;for(g>=0&&(d=U,U=0,n=n.replace(".",""),h=(y=new $(i)).pow(n.length-g),U=d,y.c=t(S(b(h.c),h.e,"0"),10,a,e),y.e=y.c.length),l=d=(f=t(n,i,a,s?(c=V,e):(c=e,V))).length;0==f[--d];f.pop());if(!f[0])return c.charAt(0);if(g<0?--l:(h.c=f,h.e=l,h.s=o,f=(h=r(h,y,m,v,a)).c,p=h.r,l=h.e),g=f[u=l+m+1],d=a/2,p=p||u<0||null!=f[u+1],p=v<4?(null!=g||p)&&(0==v||v==(h.s<0?3:2)):g>d||g==d&&(4==v||p||6==v&&1&f[u-1]||v==(h.s<0?8:7)),u<1||!f[0])n=p?S(c.charAt(1),-m,c.charAt(0)):c.charAt(0);else{if(f.length=u,p)for(--a;++f[--u]>a;)f[u]=0,u||(++l,f=[1].concat(f));for(d=f.length;!f[--d];);for(g=0,n="";g<=d;n+=c.charAt(f[g++]));n=S(n,l,c.charAt(0))}return n}}(),r=function(){function e(e,t,r){var n,i,a,o,s=0,c=e.length,u=t%y,l=t/y|0;for(e=e.slice();c--;)s=((i=u*(a=e[c]%y)+(n=l*a+(o=e[c]/y|0)*u)%y*y+s)/r|0)+(n/y|0)+l*o,e[c]=i%r;return s&&(e=[s].concat(e)),e}function t(e,t,r,n){var i,a;if(r!=n)a=r>n?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.splice(0,1));}return function(n,i,a,o,s){var u,l,h,f,y,g,b,v,_,w,T,S,O,E,x,A,R,I=n.s==i.s?1:-1,P=n.c,N=i.c;if(!(P&&P[0]&&N&&N[0]))return new $(n.s&&i.s&&(P?!N||P[0]!=N[0]:N)?P&&0==P[0]||!N?0*I:I/0:NaN);for(_=(v=new $(I)).c=[],I=a+(l=n.e-i.e)+1,s||(s=d,l=m(n.e/p)-m(i.e/p),I=I/p|0),h=0;N[h]==(P[h]||0);h++);if(N[h]>(P[h]||0)&&l--,I<0)_.push(1),f=!0;else{for(E=P.length,A=N.length,h=0,I+=2,(y=c(s/(N[0]+1)))>1&&(N=e(N,y,s),P=e(P,y,s),A=N.length,E=P.length),O=A,T=(w=P.slice(0,A)).length;T=s/2&&x++;do{if(y=0,(u=t(N,w,A,T))<0){if(S=w[0],A!=T&&(S=S*s+(w[1]||0)),(y=c(S/x))>1)for(y>=s&&(y=s-1),b=(g=e(N,y,s)).length,T=w.length;1==t(g,w,b,T);)y--,r(g,A=10;I/=10,h++);K(v,a+(v.e=h+l*p-1)+1,o,f)}else v.e=l,v.r=+f;return v}}(),E=/^(-?)0([xbo])(?=\w[\w.]*$)/i,x=/^([^.]+)\.$/,A=/^\.([^.]+)$/,R=/^-?(Infinity|NaN)$/,I=/^\s*\+(?=[\w.])|^\s+|\s+$/g,i=function(e,t,r,n){var i,a=r?t:t.replace(I,"");if(R.test(a))e.s=isNaN(a)?null:a<0?-1:1;else{if(!r&&(a=a.replace(E,(function(e,t,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?e:t})),n&&(i=n,a=a.replace(x,"$1").replace(A,"0.$1")),t!=a))return new $(a,i);if($.DEBUG)throw Error(u+"Not a"+(n?" base "+n:"")+" number: "+t);e.s=null}e.c=e.e=null},P.absoluteValue=P.abs=function(){var e=new $(this);return e.s<0&&(e.s=1),e},P.comparedTo=function(e,t){return v(this,new $(e,t))},P.decimalPlaces=P.dp=function(e,t){var r,n,i,a=this;if(null!=e)return _(e,0,g),null==t?t=j:_(t,0,8),K(new $(a),e+a.e+1,t);if(!(r=a.c))return null;if(n=((i=r.length-1)-m(this.e/p))*p,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},P.dividedBy=P.div=function(e,t){return r(this,new $(e,t),D,j)},P.dividedToIntegerBy=P.idiv=function(e,t){return r(this,new $(e,t),0,1)},P.exponentiatedBy=P.pow=function(e,t){var r,n,i,a,o,l,d,h,f=this;if((e=new $(e)).c&&!e.isInteger())throw Error(u+"Exponent not an integer: "+X(e));if(null!=t&&(t=new $(t)),o=e.e>14,!f.c||!f.c[0]||1==f.c[0]&&!f.e&&1==f.c.length||!e.c||!e.c[0])return h=new $(Math.pow(+X(f),o?e.s*(2-w(e)):+X(e))),t?h.mod(t):h;if(l=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new $(NaN);(n=!l&&f.isInteger()&&t.isInteger())&&(f=f.mod(t))}else{if(e.e>9&&(f.e>0||f.e<-1||(0==f.e?f.c[0]>1||o&&f.c[1]>=24e7:f.c[0]<8e13||o&&f.c[0]<=9999975e7)))return a=f.s<0&&w(e)?-0:0,f.e>-1&&(a=1/a),new $(l?1/a:a);U&&(a=s(U/p+2))}for(o?(r=new $(.5),l&&(e.s=1),d=w(e)):d=(i=Math.abs(+X(e)))%2,h=new $(N);;){if(d){if(!(h=h.times(f)).c)break;a?h.c.length>a&&(h.c.length=a):n&&(h=h.mod(t))}if(i){if(0===(i=c(i/2)))break;d=i%2}else if(K(e=e.times(r),e.e+1,1),e.e>14)d=w(e);else{if(0==(i=+X(e)))break;d=i%2}f=f.times(f),a?f.c&&f.c.length>a&&(f.c.length=a):n&&(f=f.mod(t))}return n?h:(l&&(h=N.div(h)),t?h.mod(t):a?K(h,U,j,void 0):h)},P.integerValue=function(e){var t=new $(this);return null==e?e=j:_(e,0,8),K(t,t.e+1,e)},P.isEqualTo=P.eq=function(e,t){return 0===v(this,new $(e,t))},P.isFinite=function(){return!!this.c},P.isGreaterThan=P.gt=function(e,t){return v(this,new $(e,t))>0},P.isGreaterThanOrEqualTo=P.gte=function(e,t){return 1===(t=v(this,new $(e,t)))||0===t},P.isInteger=function(){return!!this.c&&m(this.e/p)>this.c.length-2},P.isLessThan=P.lt=function(e,t){return v(this,new $(e,t))<0},P.isLessThanOrEqualTo=P.lte=function(e,t){return-1===(t=v(this,new $(e,t)))||0===t},P.isNaN=function(){return!this.s},P.isNegative=function(){return this.s<0},P.isPositive=function(){return this.s>0},P.isZero=function(){return!!this.c&&0==this.c[0]},P.minus=function(e,t){var r,n,i,a,o=this,s=o.s;if(t=(e=new $(e,t)).s,!s||!t)return new $(NaN);if(s!=t)return e.s=-t,o.plus(e);var c=o.e/p,u=e.e/p,l=o.c,h=e.c;if(!c||!u){if(!l||!h)return l?(e.s=-t,e):new $(h?o:NaN);if(!l[0]||!h[0])return h[0]?(e.s=-t,e):new $(l[0]?o:3==j?-0:0)}if(c=m(c),u=m(u),l=l.slice(),s=c-u){for((a=s<0)?(s=-s,i=l):(u=c,i=h),i.reverse(),t=s;t--;i.push(0));i.reverse()}else for(n=(a=(s=l.length)<(t=h.length))?s:t,s=t=0;t0)for(;t--;l[r++]=0);for(t=d-1;n>s;){if(l[--n]=0;){for(r=0,f=S[i]%_,g=S[i]/_|0,a=i+(o=c);a>i;)r=((u=f*(u=T[--o]%_)+(s=g*u+(l=T[o]/_|0)*f)%_*_+b[a]+r)/v|0)+(s/_|0)+g*l,b[a--]=u%v;b[a]=r}return r?++n:b.splice(0,1),z(e,b,n)},P.negated=function(){var e=new $(this);return e.s=-e.s||null,e},P.plus=function(e,t){var r,n=this,i=n.s;if(t=(e=new $(e,t)).s,!i||!t)return new $(NaN);if(i!=t)return e.s=-t,n.minus(e);var a=n.e/p,o=e.e/p,s=n.c,c=e.c;if(!a||!o){if(!s||!c)return new $(i/0);if(!s[0]||!c[0])return c[0]?e:new $(s[0]?n:0*i)}if(a=m(a),o=m(o),s=s.slice(),i=a-o){for(i>0?(o=a,r=c):(i=-i,r=s),r.reverse();i--;r.push(0));r.reverse()}for((i=s.length)-(t=c.length)<0&&(r=c,c=s,s=r,t=i),i=0;t;)i=(s[--t]=s[t]+c[t]+i)/d|0,s[t]=d===s[t]?0:s[t]%d;return i&&(s=[i].concat(s),++o),z(e,s,o)},P.precision=P.sd=function(e,t){var r,n,i,a=this;if(null!=e&&e!==!!e)return _(e,1,g),null==t?t=j:_(t,0,8),K(new $(a),e,t);if(!(r=a.c))return null;if(n=(i=r.length-1)*p+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&a.e+1>n&&(n=a.e+1),n},P.shiftedBy=function(e){return _(e,-9007199254740991,h),this.times("1e"+e)},P.squareRoot=P.sqrt=function(){var e,t,n,i,a,o=this,s=o.c,c=o.s,u=o.e,l=D+4,d=new $("0.5");if(1!==c||!s||!s[0])return new $(!c||c<0&&(!s||s[0])?NaN:s?o:1/0);if(0==(c=Math.sqrt(+X(o)))||c==1/0?(((t=b(s)).length+u)%2==0&&(t+="0"),c=Math.sqrt(+t),u=m((u+1)/2)-(u<0||u%2),n=new $(t=c==1/0?"5e"+u:(t=c.toExponential()).slice(0,t.indexOf("e")+1)+u)):n=new $(c+""),n.c[0])for((c=(u=n.e)+l)<3&&(c=0);;)if(a=n,n=d.times(a.plus(r(o,a,l,1))),b(a.c).slice(0,c)===(t=b(n.c)).slice(0,c)){if(n.e0&&y>0){for(a=y%s||s,d=f.substr(0,a);a0&&(d+=l+f.slice(a)),h&&(d="-"+d)}n=p?d+(r.decimalSeparator||"")+((c=+r.fractionGroupSize)?p.replace(new RegExp("\\d{"+c+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):p):d}return(r.prefix||"")+n+(r.suffix||"")},P.toFraction=function(e){var t,n,i,a,o,s,c,l,d,h,y,g,m=this,v=m.c;if(null!=e&&(!(c=new $(e)).isInteger()&&(c.c||1!==c.s)||c.lt(N)))throw Error(u+"Argument "+(c.isInteger()?"out of range: ":"not an integer: ")+X(c));if(!v)return new $(m);for(t=new $(N),d=n=new $(N),i=l=new $(N),g=b(v),o=t.e=g.length-m.e-1,t.c[0]=f[(s=o%p)<0?p+s:s],e=!e||c.comparedTo(t)>0?o>0?t:d:c,s=k,k=1/0,c=new $(g),l.c[0]=0;h=r(c,t,0,1),1!=(a=n.plus(h.times(i))).comparedTo(e);)n=i,i=a,d=l.plus(h.times(a=d)),l=a,t=c.minus(h.times(a=t)),c=a;return a=r(e.minus(n),i,0,1),l=l.plus(a.times(d)),n=n.plus(a.times(i)),l.s=d.s=m.s,y=r(d,i,o*=2,j).minus(m).abs().comparedTo(r(l,n,o,j).minus(m).abs())<1?[d,i]:[l,n],k=s,y},P.toNumber=function(){return+X(this)},P.toPrecision=function(e,t){return null!=e&&_(e,1,g),H(this,e,t,2)},P.toString=function(e){var t,r=this,i=r.s,a=r.e;return null===a?i?(t="Infinity",i<0&&(t="-"+t)):t="NaN":(null==e?t=a<=C||a>=M?T(b(r.c),a):S(b(r.c),a,"0"):10===e&&Q?t=S(b((r=K(new $(r),D+a+1,j)).c),r.e,"0"):(_(e,2,V.length,"Base"),t=n(S(b(r.c),a,"0"),10,e,i,!0)),i<0&&r.c[0]&&(t="-"+t)),t},P.valueOf=P.toJSON=function(){return X(this)},P._isBigNumber=!0,null!=t&&$.set(t),$}(),a.default=a.BigNumber=a,void 0===(n=function(){return a}.call(t,r,t,e))||(e.exports=n)}()},1048:(e,t,r)=>{"use strict";const n=r(7991),i=r(39318),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=c,t.SlowBuffer=function(e){return+e!=e&&(e=0),c.alloc(+e)},t.INSPECT_MAX_BYTES=50;const o=2147483647;function s(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,c.prototype),t}function c(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return d(e)}return u(e,t,r)}function u(e,t,r){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!c.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|y(e,t);let n=s(r);const i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(X(e,Uint8Array)){const t=new Uint8Array(e);return h(t.buffer,t.byteOffset,t.byteLength)}return p(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(X(e,ArrayBuffer)||e&&X(e.buffer,ArrayBuffer))return h(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(X(e,SharedArrayBuffer)||e&&X(e.buffer,SharedArrayBuffer)))return h(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return c.from(n,t,r);const i=function(e){if(c.isBuffer(e)){const t=0|f(e.length),r=s(t);return 0===r.length||e.copy(r,0,0,t),r}return void 0!==e.length?"number"!=typeof e.length||J(e.length)?s(0):p(e):"Buffer"===e.type&&Array.isArray(e.data)?p(e.data):void 0}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return c.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function l(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function d(e){return l(e),s(e<0?0:0|f(e))}function p(e){const t=e.length<0?0:0|f(e.length),r=s(t);for(let n=0;n=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function y(e,t){if(c.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||X(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return G(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return z(e).length;default:if(i)return n?-1:G(e).length;t=(""+t).toLowerCase(),i=!0}}function g(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,r);case"utf8":case"utf-8":return x(this,t,r);case"ascii":return R(this,t,r);case"latin1":case"binary":return I(this,t,r);case"base64":return E(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function m(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function b(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),J(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=c.from(t,n)),c.isBuffer(t))return 0===t.length?-1:v(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):v(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function v(e,t,r,n,i){let a,o=1,s=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;o=2,s/=2,c/=2,r/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){let n=-1;for(a=r;as&&(r=s-c),a=r;a>=0;a--){let r=!0;for(let n=0;ni&&(n=i):n=i;const a=t.length;let o;for(n>a/2&&(n=a/2),o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(t,e.length-r),e,r,n)}function E(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function x(e,t,r){r=Math.min(e.length,r);const n=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+o<=r){let r,n,s,c;switch(o){case 1:t<128&&(a=t);break;case 2:r=e[i+1],128==(192&r)&&(c=(31&t)<<6|63&r,c>127&&(a=c));break;case 3:r=e[i+1],n=e[i+2],128==(192&r)&&128==(192&n)&&(c=(15&t)<<12|(63&r)<<6|63&n,c>2047&&(c<55296||c>57343)&&(a=c));break;case 4:r=e[i+1],n=e[i+2],s=e[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(c=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,c>65535&&c<1114112&&(a=c))}}null===a?(a=65533,o=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=o}return function(e){const t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn.length?(c.isBuffer(t)||(t=c.from(t)),t.copy(n,i)):Uint8Array.prototype.set.call(n,t,i);else{if(!c.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(n,i)}i+=t.length}return n},c.byteLength=y,c.prototype._isBuffer=!0,c.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tr&&(e+=" ... "),""},a&&(c.prototype[a]=c.prototype.inspect),c.prototype.compare=function(e,t,r,n,i){if(X(e,Uint8Array)&&(e=c.from(e,e.offset,e.byteLength)),!c.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;let a=(i>>>=0)-(n>>>=0),o=(r>>>=0)-(t>>>=0);const s=Math.min(a,o),u=this.slice(n,i),l=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let a=!1;for(;;)switch(n){case"hex":return _(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":case"latin1":case"binary":return T(this,e,t,r);case"base64":return S(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const A=4096;function R(e,t,r){let n="";r=Math.min(e.length,r);for(let i=t;in)&&(r=n);let i="";for(let n=t;nr)throw new RangeError("Trying to access beyond buffer length")}function j(e,t,r,n,i,a){if(!c.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function C(e,t,r,n,i){V(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,r}function M(e,t,r,n,i){V(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a>>=8,e[r+6]=a,a>>=8,e[r+5]=a,a>>=8,e[r+4]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=o,o>>=8,e[r+2]=o,o>>=8,e[r+1]=o,o>>=8,e[r]=o,r+8}function L(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(e,t,r,n,a){return t=+t,r>>>=0,a||L(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function F(e,t,r,n,a){return t=+t,r>>>=0,a||L(e,0,r,8),i.write(e,t,r,n,52,8),r+8}c.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||D(e,t,this.length);let n=this[e],i=1,a=0;for(;++a>>=0,t>>>=0,r||D(e,t,this.length);let n=this[e+--t],i=1;for(;t>0&&(i*=256);)n+=this[e+--t]*i;return n},c.prototype.readUint8=c.prototype.readUInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),this[e]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]|this[e+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]<<8|this[e+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},c.prototype.readBigUInt64LE=Y((function(e){Q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<>>=0,t>>>=0,r||D(e,t,this.length);let n=this[e],i=1,a=0;for(;++a=i&&(n-=Math.pow(2,8*t)),n},c.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||D(e,t,this.length);let n=t,i=1,a=this[e+--n];for(;n>0&&(i*=256);)a+=this[e+--n]*i;return i*=128,a>=i&&(a-=Math.pow(2,8*t)),a},c.prototype.readInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},c.prototype.readInt16LE=function(e,t){e>>>=0,t||D(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt16BE=function(e,t){e>>>=0,t||D(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},c.prototype.readInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},c.prototype.readBigInt64LE=Y((function(e){Q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<>>=0,t||D(e,4,this.length),i.read(this,e,!0,23,4)},c.prototype.readFloatBE=function(e,t){return e>>>=0,t||D(e,4,this.length),i.read(this,e,!1,23,4)},c.prototype.readDoubleLE=function(e,t){return e>>>=0,t||D(e,8,this.length),i.read(this,e,!0,52,8)},c.prototype.readDoubleBE=function(e,t){return e>>>=0,t||D(e,8,this.length),i.read(this,e,!1,52,8)},c.prototype.writeUintLE=c.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||j(this,e,t,r,Math.pow(2,8*r)-1,0);let i=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,n||j(this,e,t,r,Math.pow(2,8*r)-1,0);let i=r-1,a=1;for(this[t+i]=255&e;--i>=0&&(a*=256);)this[t+i]=e/a&255;return t+r},c.prototype.writeUint8=c.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,1,255,0),this[t]=255&e,t+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigUInt64LE=Y((function(e,t=0){return C(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),c.prototype.writeBigUInt64BE=Y((function(e,t=0){return M(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),c.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);j(this,e,t,r,n-1,-n)}let i=0,a=1,o=0;for(this[t]=255&e;++i>>=0,!n){const n=Math.pow(2,8*r-1);j(this,e,t,r,n-1,-n)}let i=r-1,a=1,o=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===o&&0!==this[t+i+1]&&(o=1),this[t+i]=(e/a|0)-o&255;return t+r},c.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},c.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},c.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigInt64LE=Y((function(e,t=0){return C(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),c.prototype.writeBigInt64BE=Y((function(e,t=0){return M(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),c.prototype.writeFloatLE=function(e,t,r){return k(this,e,t,!0,r)},c.prototype.writeFloatBE=function(e,t,r){return k(this,e,t,!1,r)},c.prototype.writeDoubleLE=function(e,t,r){return F(this,e,t,!0,r)},c.prototype.writeDoubleBE=function(e,t,r){return F(this,e,t,!1,r)},c.prototype.copy=function(e,t,r,n){if(!c.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function V(e,t,r,n,i,a){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(a+1)}${n}`:`>= -(2${n} ** ${8*(a+1)-1}${n}) and < 2 ** ${8*(a+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new B.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,r){Q(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||$(t,e.length-(r+1))}(n,i,a)}function Q(e,t){if("number"!=typeof e)throw new B.ERR_INVALID_ARG_TYPE(t,"number",e)}function $(e,t,r){if(Math.floor(e)!==e)throw Q(e,r),new B.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new B.ERR_BUFFER_OUT_OF_BOUNDS;throw new B.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}U("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),U("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),U("ERR_OUT_OF_RANGE",(function(e,t,r){let n=`The value of "${e}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=q(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=q(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n}),RangeError);const H=/[^+/0-9A-Za-z-_]/g;function G(e,t){let r;t=t||1/0;const n=e.length;let i=null;const a=[];for(let o=0;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function z(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(H,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function X(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function J(e){return e!=e}const W=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function Y(e){return"undefined"==typeof BigInt?Z:e}function Z(){throw new Error("BigInt not supported")}},62168:e=>{"use strict";e.exports=function e(t){if("number"==typeof t&&isNaN(t))throw new Error("NaN is not allowed");if("number"==typeof t&&!isFinite(t))throw new Error("Infinity is not allowed");return null===t||"object"!=typeof t?JSON.stringify(t):t.toJSON instanceof Function?e(t.toJSON()):Array.isArray(t)?`[${t.reduce(((t,r,n)=>`${t}${0===n?"":","}${e(void 0===r||"symbol"==typeof r?null:r)}`),"")}]`:`{${Object.keys(t).sort().reduce(((r,n)=>void 0===t[n]||"symbol"==typeof t[n]?r:`${r}${0===r.length?"":","}${e(n)}:${e(t[n])}`),"")}}`}},90482:function(){!function(e){!function(t){var r="undefined"!=typeof globalThis&&globalThis||void 0!==e&&e||void 0!==r&&r,n="URLSearchParams"in r,i="Symbol"in r&&"iterator"in Symbol,a="FileReader"in r&&"Blob"in r&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in r,s="ArrayBuffer"in r;if(s)var c=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(e){return e&&c.indexOf(Object.prototype.toString.call(e))>-1};function l(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e)||""===e)throw new TypeError('Invalid character in header field name: "'+e+'"');return e.toLowerCase()}function d(e){return"string"!=typeof e&&(e=String(e)),e}function p(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function h(e){this.map={},e instanceof h?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function f(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function y(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function g(e){var t=new FileReader,r=y(t);return t.readAsArrayBuffer(e),r}function m(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function b(){return this.bodyUsed=!1,this._initBody=function(e){var t;this.bodyUsed=this.bodyUsed,this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:a&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():s&&a&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=m(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(e)||u(e))?this._bodyArrayBuffer=m(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},a&&(this.blob=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer)):this.blob().then(g)}),this.text=function(){var e,t,r,n=f(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,r=y(t=new FileReader),t.readAsText(e),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?n:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(i),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==t.cache&&"no-cache"!==t.cache)){var a=/([?&])_=[^&]*/;a.test(this.url)?this.url=this.url.replace(a,"$1_="+(new Date).getTime()):this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}function w(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function T(e,t){if(!(this instanceof T))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===t.statusText?"":""+t.statusText,this.headers=new h(t.headers),this.url=t.url||"",this._initBody(e)}_.prototype.clone=function(){return new _(this,{body:this._bodyInit})},b.call(_.prototype),b.call(T.prototype),T.prototype.clone=function(){return new T(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new h(this.headers),url:this.url})},T.error=function(){var e=new T(null,{status:0,statusText:""});return e.type="error",e};var S=[301,302,303,307,308];T.redirect=function(e,t){if(-1===S.indexOf(t))throw new RangeError("Invalid status code");return new T(null,{status:t,headers:{location:e}})},t.DOMException=r.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function O(e,n){return new Promise((function(i,o){var c=new _(e,n);if(c.signal&&c.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var u=new XMLHttpRequest;function l(){u.abort()}u.onload=function(){var e,t,r={status:u.status,statusText:u.statusText,headers:(e=u.getAllResponseHeaders()||"",t=new h,e.replace(/\r?\n[\t ]+/g," ").split("\r").map((function(e){return 0===e.indexOf("\n")?e.substr(1,e.length):e})).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t)};r.url="responseURL"in u?u.responseURL:r.headers.get("X-Request-URL");var n="response"in u?u.response:u.responseText;setTimeout((function(){i(new T(n,r))}),0)},u.onerror=function(){setTimeout((function(){o(new TypeError("Network request failed"))}),0)},u.ontimeout=function(){setTimeout((function(){o(new TypeError("Network request failed"))}),0)},u.onabort=function(){setTimeout((function(){o(new t.DOMException("Aborted","AbortError"))}),0)},u.open(c.method,function(e){try{return""===e&&r.location.href?r.location.href:e}catch(t){return e}}(c.url),!0),"include"===c.credentials?u.withCredentials=!0:"omit"===c.credentials&&(u.withCredentials=!1),"responseType"in u&&(a?u.responseType="blob":s&&c.headers.get("Content-Type")&&-1!==c.headers.get("Content-Type").indexOf("application/octet-stream")&&(u.responseType="arraybuffer")),!n||"object"!=typeof n.headers||n.headers instanceof h?c.headers.forEach((function(e,t){u.setRequestHeader(t,e)})):Object.getOwnPropertyNames(n.headers).forEach((function(e){u.setRequestHeader(e,d(n.headers[e]))})),c.signal&&(c.signal.addEventListener("abort",l),u.onreadystatechange=function(){4===u.readyState&&c.signal.removeEventListener("abort",l)}),u.send(void 0===c._bodyInit?null:c._bodyInit)}))}O.polyfill=!0,r.fetch||(r.fetch=O,r.Headers=h,r.Request=_,r.Response=T),t.Headers=h,t.Request=_,t.Response=T,t.fetch=O}({})}("undefined"!=typeof self?self:this)},10288:(e,t,r)=>{var n="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==r.g&&r.g,i=function(){function e(){this.fetch=!1,this.DOMException=n.DOMException}return e.prototype=n,new e}();!function(e){!function(t){var r=void 0!==e&&e||"undefined"!=typeof self&&self||void 0!==r&&r,n="URLSearchParams"in r,i="Symbol"in r&&"iterator"in Symbol,a="FileReader"in r&&"Blob"in r&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in r,s="ArrayBuffer"in r;if(s)var c=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(e){return e&&c.indexOf(Object.prototype.toString.call(e))>-1};function l(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e)||""===e)throw new TypeError('Invalid character in header field name: "'+e+'"');return e.toLowerCase()}function d(e){return"string"!=typeof e&&(e=String(e)),e}function p(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function h(e){this.map={},e instanceof h?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function f(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function y(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function g(e){var t=new FileReader,r=y(t);return t.readAsArrayBuffer(e),r}function m(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function b(){return this.bodyUsed=!1,this._initBody=function(e){var t;this.bodyUsed=this.bodyUsed,this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:a&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():s&&a&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=m(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(e)||u(e))?this._bodyArrayBuffer=m(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},a&&(this.blob=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer)):this.blob().then(g)}),this.text=function(){var e,t,r,n=f(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,r=y(t=new FileReader),t.readAsText(e),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?n:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(i),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==t.cache&&"no-cache"!==t.cache)){var a=/([?&])_=[^&]*/;a.test(this.url)?this.url=this.url.replace(a,"$1_="+(new Date).getTime()):this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}function w(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function T(e,t){if(!(this instanceof T))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===t.statusText?"":""+t.statusText,this.headers=new h(t.headers),this.url=t.url||"",this._initBody(e)}_.prototype.clone=function(){return new _(this,{body:this._bodyInit})},b.call(_.prototype),b.call(T.prototype),T.prototype.clone=function(){return new T(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new h(this.headers),url:this.url})},T.error=function(){var e=new T(null,{status:0,statusText:""});return e.type="error",e};var S=[301,302,303,307,308];T.redirect=function(e,t){if(-1===S.indexOf(t))throw new RangeError("Invalid status code");return new T(null,{status:t,headers:{location:e}})},t.DOMException=r.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function O(e,n){return new Promise((function(i,o){var c=new _(e,n);if(c.signal&&c.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var u=new XMLHttpRequest;function l(){u.abort()}u.onload=function(){var e,t,r={status:u.status,statusText:u.statusText,headers:(e=u.getAllResponseHeaders()||"",t=new h,e.replace(/\r?\n[\t ]+/g," ").split("\r").map((function(e){return 0===e.indexOf("\n")?e.substr(1,e.length):e})).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t)};r.url="responseURL"in u?u.responseURL:r.headers.get("X-Request-URL");var n="response"in u?u.response:u.responseText;setTimeout((function(){i(new T(n,r))}),0)},u.onerror=function(){setTimeout((function(){o(new TypeError("Network request failed"))}),0)},u.ontimeout=function(){setTimeout((function(){o(new TypeError("Network request failed"))}),0)},u.onabort=function(){setTimeout((function(){o(new t.DOMException("Aborted","AbortError"))}),0)},u.open(c.method,function(e){try{return""===e&&r.location.href?r.location.href:e}catch(t){return e}}(c.url),!0),"include"===c.credentials?u.withCredentials=!0:"omit"===c.credentials&&(u.withCredentials=!1),"responseType"in u&&(a?u.responseType="blob":s&&c.headers.get("Content-Type")&&-1!==c.headers.get("Content-Type").indexOf("application/octet-stream")&&(u.responseType="arraybuffer")),!n||"object"!=typeof n.headers||n.headers instanceof h?c.headers.forEach((function(e,t){u.setRequestHeader(t,e)})):Object.getOwnPropertyNames(n.headers).forEach((function(e){u.setRequestHeader(e,d(n.headers[e]))})),c.signal&&(c.signal.addEventListener("abort",l),u.onreadystatechange=function(){4===u.readyState&&c.signal.removeEventListener("abort",l)}),u.send(void 0===c._bodyInit?null:c._bodyInit)}))}O.polyfill=!0,r.fetch||(r.fetch=O,r.Headers=h,r.Request=_,r.Response=T),t.Headers=h,t.Request=_,t.Response=T,t.fetch=O}({})}(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var a=n.fetch?n:i;(t=a.fetch).default=a.fetch,t.fetch=a.fetch,t.Headers=a.Headers,t.Request=a.Request,t.Response=a.Response,e.exports=t},36593:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.attributeNames=t.elementNames=void 0,t.elementNames=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map((function(e){return[e.toLowerCase(),e]}))),t.attributeNames=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((function(e){return[e.toLowerCase(),e]})))},5193:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r");case s.Comment:return"\x3c!--".concat(e.data,"--\x3e");case s.CDATA:return function(e){return"")}(e);case s.Script:case s.Style:case s.Tag:return function(e,t){var r;"foreign"===t.xmlMode&&(e.name=null!==(r=u.elementNames.get(e.name))&&void 0!==r?r:e.name,e.parent&&y.has(e.parent.name)&&(t=n(n({},t),{xmlMode:!1}))),!t.xmlMode&&g.has(e.name)&&(t=n(n({},t),{xmlMode:"foreign"}));var i="<".concat(e.name),a=function(e,t){var r;if(e){var n=!1===(null!==(r=t.encodeEntities)&&void 0!==r?r:t.decodeEntities)?d:t.xmlMode||"utf8"!==t.encodeEntities?c.encodeXML:c.escapeAttribute;return Object.keys(e).map((function(r){var i,a,o=null!==(i=e[r])&&void 0!==i?i:"";return"foreign"===t.xmlMode&&(r=null!==(a=u.attributeNames.get(r))&&void 0!==a?a:r),t.emptyAttrs||t.xmlMode||""!==o?"".concat(r,'="').concat(n(o),'"'):r})).join(" ")}}(e.attribs,t);return a&&(i+=" ".concat(a)),0===e.children.length&&(t.xmlMode?!1!==t.selfClosingTags:t.selfClosingTags&&p.has(e.name))?(t.xmlMode||(i+=" "),i+="/>"):(i+=">",e.children.length>0&&(i+=h(e.children,t)),!t.xmlMode&&p.has(e.name)||(i+=""))),i}(e,t);case s.Text:return function(e,t){var r,n=e.data||"";return!1===(null!==(r=t.encodeEntities)&&void 0!==r?r:t.decodeEntities)||!t.xmlMode&&e.parent&&l.has(e.parent.name)||(n=t.xmlMode||"utf8"!==t.encodeEntities?(0,c.encodeXML)(n):(0,c.escapeText)(n)),n}(e,t)}}t.render=h,t.default=h;var y=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),g=new Set(["svg","math"])},93338:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.Doctype=t.CDATA=t.Tag=t.Style=t.Script=t.Comment=t.Directive=t.Text=t.Root=t.isTag=t.ElementType=void 0,function(e){e.Root="root",e.Text="text",e.Directive="directive",e.Comment="comment",e.Script="script",e.Style="style",e.Tag="tag",e.CDATA="cdata",e.Doctype="doctype"}(r=t.ElementType||(t.ElementType={})),t.isTag=function(e){return e.type===r.Tag||e.type===r.Script||e.type===r.Style},t.Root=r.Root,t.Text=r.Text,t.Directive=r.Directive,t.Comment=r.Comment,t.Script=r.Script,t.Style=r.Style,t.Tag=r.Tag,t.CDATA=r.CDATA,t.Doctype=r.Doctype},21138:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.DomHandler=void 0;var a=r(93338),o=r(62888);i(r(62888),t);var s={withStartIndices:!1,withEndIndices:!1,xmlMode:!1},c=function(){function e(e,t,r){this.dom=[],this.root=new o.Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,"function"==typeof t&&(r=t,t=s),"object"==typeof e&&(t=e,e=void 0),this.callback=null!=e?e:null,this.options=null!=t?t:s,this.elementCB=null!=r?r:null}return e.prototype.onparserinit=function(e){this.parser=e},e.prototype.onreset=function(){this.dom=[],this.root=new o.Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null},e.prototype.onend=function(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))},e.prototype.onerror=function(e){this.handleCallback(e)},e.prototype.onclosetag=function(){this.lastNode=null;var e=this.tagStack.pop();this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(e)},e.prototype.onopentag=function(e,t){var r=this.options.xmlMode?a.ElementType.Tag:void 0,n=new o.Element(e,t,void 0,r);this.addNode(n),this.tagStack.push(n)},e.prototype.ontext=function(e){var t=this.lastNode;if(t&&t.type===a.ElementType.Text)t.data+=e,this.options.withEndIndices&&(t.endIndex=this.parser.endIndex);else{var r=new o.Text(e);this.addNode(r),this.lastNode=r}},e.prototype.oncomment=function(e){if(this.lastNode&&this.lastNode.type===a.ElementType.Comment)this.lastNode.data+=e;else{var t=new o.Comment(e);this.addNode(t),this.lastNode=t}},e.prototype.oncommentend=function(){this.lastNode=null},e.prototype.oncdatastart=function(){var e=new o.Text(""),t=new o.CDATA([e]);this.addNode(t),e.parent=t,this.lastNode=e},e.prototype.oncdataend=function(){this.lastNode=null},e.prototype.onprocessinginstruction=function(e,t){var r=new o.ProcessingInstruction(e,t);this.addNode(r)},e.prototype.handleCallback=function(e){if("function"==typeof this.callback)this.callback(e,this.dom);else if(e)throw e},e.prototype.addNode=function(e){var t=this.tagStack[this.tagStack.length-1],r=t.children[t.children.length-1];this.options.withStartIndices&&(e.startIndex=this.parser.startIndex),this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),t.children.push(e),r&&(e.prev=r,r.next=e),e.parent=t,this.lastNode=null},e}();t.DomHandler=c,t.default=c},62888:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),a=this&&this.__assign||function(){return a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0?this.children[this.children.length-1]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"childNodes",{get:function(){return this.children},set:function(e){this.children=e},enumerable:!1,configurable:!0}),t}(s);t.NodeWithChildren=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type=o.ElementType.CDATA,t}return i(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 4},enumerable:!1,configurable:!0}),t}(p);t.CDATA=h;var f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type=o.ElementType.Root,t}return i(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 9},enumerable:!1,configurable:!0}),t}(p);t.Document=f;var y=function(e){function t(t,r,n,i){void 0===n&&(n=[]),void 0===i&&(i="script"===t?o.ElementType.Script:"style"===t?o.ElementType.Style:o.ElementType.Tag);var a=e.call(this,n)||this;return a.name=t,a.attribs=r,a.type=i,a}return i(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tagName",{get:function(){return this.name},set:function(e){this.name=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"attributes",{get:function(){var e=this;return Object.keys(this.attribs).map((function(t){var r,n;return{name:t,value:e.attribs[t],namespace:null===(r=e["x-attribsNamespace"])||void 0===r?void 0:r[t],prefix:null===(n=e["x-attribsPrefix"])||void 0===n?void 0:n[t]}}))},enumerable:!1,configurable:!0}),t}(p);function g(e){return(0,o.isTag)(e)}function m(e){return e.type===o.ElementType.CDATA}function b(e){return e.type===o.ElementType.Text}function v(e){return e.type===o.ElementType.Comment}function _(e){return e.type===o.ElementType.Directive}function w(e){return e.type===o.ElementType.Root}function T(e,t){var r;if(void 0===t&&(t=!1),b(e))r=new u(e.data);else if(v(e))r=new l(e.data);else if(g(e)){var n=t?S(e.children):[],i=new y(e.name,a({},e.attribs),n);n.forEach((function(e){return e.parent=i})),null!=e.namespace&&(i.namespace=e.namespace),e["x-attribsNamespace"]&&(i["x-attribsNamespace"]=a({},e["x-attribsNamespace"])),e["x-attribsPrefix"]&&(i["x-attribsPrefix"]=a({},e["x-attribsPrefix"])),r=i}else if(m(e)){n=t?S(e.children):[];var o=new h(n);n.forEach((function(e){return e.parent=o})),r=o}else if(w(e)){n=t?S(e.children):[];var s=new f(n);n.forEach((function(e){return e.parent=s})),e["x-mode"]&&(s["x-mode"]=e["x-mode"]),r=s}else{if(!_(e))throw new Error("Not implemented yet: ".concat(e.type));var c=new d(e.name,e.data);null!=e["x-name"]&&(c["x-name"]=e["x-name"],c["x-publicId"]=e["x-publicId"],c["x-systemId"]=e["x-systemId"]),r=c}return r.startIndex=e.startIndex,r.endIndex=e.endIndex,null!=e.sourceCodeLocation&&(r.sourceCodeLocation=e.sourceCodeLocation),r}function S(e){for(var t=e.map((function(e){return T(e,!0)})),r=1;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getFeed=void 0;var n=r(68642),i=r(78052);t.getFeed=function(e){var t=c(d,e);return t?"feed"===t.name?function(e){var t,r=e.children,n={type:"atom",items:(0,i.getElementsByTagName)("entry",r).map((function(e){var t,r=e.children,n={media:s(r)};l(n,"id","id",r),l(n,"title","title",r);var i=null===(t=c("link",r))||void 0===t?void 0:t.attribs.href;i&&(n.link=i);var a=u("summary",r)||u("content",r);a&&(n.description=a);var o=u("updated",r);return o&&(n.pubDate=new Date(o)),n}))};l(n,"id","id",r),l(n,"title","title",r);var a=null===(t=c("link",r))||void 0===t?void 0:t.attribs.href;a&&(n.link=a),l(n,"description","subtitle",r);var o=u("updated",r);return o&&(n.updated=new Date(o)),l(n,"author","email",r,!0),n}(t):function(e){var t,r,n=null!==(r=null===(t=c("channel",e.children))||void 0===t?void 0:t.children)&&void 0!==r?r:[],a={type:e.name.substr(0,3),id:"",items:(0,i.getElementsByTagName)("item",e.children).map((function(e){var t=e.children,r={media:s(t)};l(r,"id","guid",t),l(r,"title","title",t),l(r,"link","link",t),l(r,"description","description",t);var n=u("pubDate",t)||u("dc:date",t);return n&&(r.pubDate=new Date(n)),r}))};l(a,"title","title",n),l(a,"link","link",n),l(a,"description","description",n);var o=u("lastBuildDate",n);return o&&(a.updated=new Date(o)),l(a,"author","managingEditor",n,!0),a}(t):null};var a=["url","type","lang"],o=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];function s(e){return(0,i.getElementsByTagName)("media:content",e).map((function(e){for(var t=e.attribs,r={medium:t.medium,isDefault:!!t.isDefault},n=0,i=a;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uniqueSort=t.compareDocumentPosition=t.DocumentPosition=t.removeSubsets=void 0;var n,i=r(21138);function a(e,t){var r=[],a=[];if(e===t)return 0;for(var o=(0,i.hasChildren)(e)?e:e.parent;o;)r.unshift(o),o=o.parent;for(o=(0,i.hasChildren)(t)?t:t.parent;o;)a.unshift(o),o=o.parent;for(var s=Math.min(r.length,a.length),c=0;cl.indexOf(p)?u===t?n.FOLLOWING|n.CONTAINED_BY:n.FOLLOWING:u===e?n.PRECEDING|n.CONTAINS:n.PRECEDING}t.removeSubsets=function(e){for(var t=e.length;--t>=0;){var r=e[t];if(t>0&&e.lastIndexOf(r,t-1)>=0)e.splice(t,1);else for(var n=r.parent;n;n=n.parent)if(e.includes(n)){e.splice(t,1);break}}return e},function(e){e[e.DISCONNECTED=1]="DISCONNECTED",e[e.PRECEDING=2]="PRECEDING",e[e.FOLLOWING=4]="FOLLOWING",e[e.CONTAINS=8]="CONTAINS",e[e.CONTAINED_BY=16]="CONTAINED_BY"}(n=t.DocumentPosition||(t.DocumentPosition={})),t.compareDocumentPosition=a,t.uniqueSort=function(e){return(e=e.filter((function(e,t,r){return!r.includes(e,t+1)}))).sort((function(e,t){var r=a(e,t);return r&n.PRECEDING?-1:r&n.FOLLOWING?1:0})),e}},76403:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.hasChildren=t.isDocument=t.isComment=t.isText=t.isCDATA=t.isTag=void 0,i(r(68642),t),i(r(45517),t),i(r(46178),t),i(r(51467),t),i(r(78052),t),i(r(83698),t),i(r(91206),t);var a=r(21138);Object.defineProperty(t,"isTag",{enumerable:!0,get:function(){return a.isTag}}),Object.defineProperty(t,"isCDATA",{enumerable:!0,get:function(){return a.isCDATA}}),Object.defineProperty(t,"isText",{enumerable:!0,get:function(){return a.isText}}),Object.defineProperty(t,"isComment",{enumerable:!0,get:function(){return a.isComment}}),Object.defineProperty(t,"isDocument",{enumerable:!0,get:function(){return a.isDocument}}),Object.defineProperty(t,"hasChildren",{enumerable:!0,get:function(){return a.hasChildren}})},78052:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getElementsByTagType=t.getElementsByTagName=t.getElementById=t.getElements=t.testElement=void 0;var n=r(21138),i=r(51467),a={tag_name:function(e){return"function"==typeof e?function(t){return(0,n.isTag)(t)&&e(t.name)}:"*"===e?n.isTag:function(t){return(0,n.isTag)(t)&&t.name===e}},tag_type:function(e){return"function"==typeof e?function(t){return e(t.type)}:function(t){return t.type===e}},tag_contains:function(e){return"function"==typeof e?function(t){return(0,n.isText)(t)&&e(t.data)}:function(t){return(0,n.isText)(t)&&t.data===e}}};function o(e,t){return"function"==typeof t?function(r){return(0,n.isTag)(r)&&t(r.attribs[e])}:function(r){return(0,n.isTag)(r)&&r.attribs[e]===t}}function s(e,t){return function(r){return e(r)||t(r)}}function c(e){var t=Object.keys(e).map((function(t){var r=e[t];return Object.prototype.hasOwnProperty.call(a,t)?a[t](r):o(t,r)}));return 0===t.length?null:t.reduce(s)}t.testElement=function(e,t){var r=c(e);return!r||r(t)},t.getElements=function(e,t,r,n){void 0===n&&(n=1/0);var a=c(e);return a?(0,i.filter)(a,t,r,n):[]},t.getElementById=function(e,t,r){return void 0===r&&(r=!0),Array.isArray(t)||(t=[t]),(0,i.findOne)(o("id",e),t,r)},t.getElementsByTagName=function(e,t,r,n){return void 0===r&&(r=!0),void 0===n&&(n=1/0),(0,i.filter)(a.tag_name(e),t,r,n)},t.getElementsByTagType=function(e,t,r,n){return void 0===r&&(r=!0),void 0===n&&(n=1/0),(0,i.filter)(a.tag_type(e),t,r,n)}},46178:(e,t)=>{"use strict";function r(e){if(e.prev&&(e.prev.next=e.next),e.next&&(e.next.prev=e.prev),e.parent){var t=e.parent.children,r=t.lastIndexOf(e);r>=0&&t.splice(r,1)}e.next=null,e.prev=null,e.parent=null}Object.defineProperty(t,"__esModule",{value:!0}),t.prepend=t.prependChild=t.append=t.appendChild=t.replaceElement=t.removeElement=void 0,t.removeElement=r,t.replaceElement=function(e,t){var r=t.prev=e.prev;r&&(r.next=t);var n=t.next=e.next;n&&(n.prev=t);var i=t.parent=e.parent;if(i){var a=i.children;a[a.lastIndexOf(e)]=t,e.parent=null}},t.appendChild=function(e,t){if(r(t),t.next=null,t.parent=e,e.children.push(t)>1){var n=e.children[e.children.length-2];n.next=t,t.prev=n}else t.prev=null},t.append=function(e,t){r(t);var n=e.parent,i=e.next;if(t.next=i,t.prev=e,e.next=t,t.parent=n,i){if(i.prev=t,n){var a=n.children;a.splice(a.lastIndexOf(i),0,t)}}else n&&n.children.push(t)},t.prependChild=function(e,t){if(r(t),t.parent=e,t.prev=null,1!==e.children.unshift(t)){var n=e.children[1];n.prev=t,t.next=n}else t.next=null},t.prepend=function(e,t){r(t);var n=e.parent;if(n){var i=n.children;i.splice(i.indexOf(e),0,t)}e.prev&&(e.prev.next=t),t.parent=n,t.prev=e.prev,t.next=e,e.prev=t}},51467:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.findAll=t.existsOne=t.findOne=t.findOneChild=t.find=t.filter=void 0;var n=r(21138);function i(e,t,r,i){for(var a=[],o=[t],s=[0];;)if(s[0]>=o[0].length){if(1===s.length)return a;o.shift(),s.shift()}else{var c=o[0][s[0]++];if(e(c)&&(a.push(c),--i<=0))return a;r&&(0,n.hasChildren)(c)&&c.children.length>0&&(s.unshift(0),o.unshift(c.children))}}t.filter=function(e,t,r,n){return void 0===r&&(r=!0),void 0===n&&(n=1/0),i(e,Array.isArray(t)?t:[t],r,n)},t.find=i,t.findOneChild=function(e,t){return t.find(e)},t.findOne=function e(t,r,i){void 0===i&&(i=!0);for(var a=null,o=0;o0&&(a=e(t,s.children,!0)))}return a},t.existsOne=function e(t,r){return r.some((function(r){return(0,n.isTag)(r)&&(t(r)||e(t,r.children))}))},t.findAll=function(e,t){for(var r=[],i=[t],a=[0];;)if(a[0]>=i[0].length){if(1===i.length)return r;i.shift(),a.shift()}else{var o=i[0][a[0]++];(0,n.isTag)(o)&&(e(o)&&r.push(o),o.children.length>0&&(a.unshift(0),i.unshift(o.children)))}}},68642:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.innerText=t.textContent=t.getText=t.getInnerHTML=t.getOuterHTML=void 0;var i=r(21138),a=n(r(5193)),o=r(93338);function s(e,t){return(0,a.default)(e,t)}t.getOuterHTML=s,t.getInnerHTML=function(e,t){return(0,i.hasChildren)(e)?e.children.map((function(e){return s(e,t)})).join(""):""},t.getText=function e(t){return Array.isArray(t)?t.map(e).join(""):(0,i.isTag)(t)?"br"===t.name?"\n":e(t.children):(0,i.isCDATA)(t)?e(t.children):(0,i.isText)(t)?t.data:""},t.textContent=function e(t){return Array.isArray(t)?t.map(e).join(""):(0,i.hasChildren)(t)&&!(0,i.isComment)(t)?e(t.children):(0,i.isText)(t)?t.data:""},t.innerText=function e(t){return Array.isArray(t)?t.map(e).join(""):(0,i.hasChildren)(t)&&(t.type===o.ElementType.Tag||(0,i.isCDATA)(t))?e(t.children):(0,i.isText)(t)?t.data:""}},45517:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.prevElementSibling=t.nextElementSibling=t.getName=t.hasAttrib=t.getAttributeValue=t.getSiblings=t.getParent=t.getChildren=void 0;var n=r(21138);function i(e){return(0,n.hasChildren)(e)?e.children:[]}function a(e){return e.parent||null}t.getChildren=i,t.getParent=a,t.getSiblings=function(e){var t=a(e);if(null!=t)return i(t);for(var r=[e],n=e.prev,o=e.next;null!=n;)r.unshift(n),n=n.prev;for(;null!=o;)r.push(o),o=o.next;return r},t.getAttributeValue=function(e,t){var r;return null===(r=e.attribs)||void 0===r?void 0:r[t]},t.hasAttrib=function(e,t){return null!=e.attribs&&Object.prototype.hasOwnProperty.call(e.attribs,t)&&null!=e.attribs[t]},t.getName=function(e){return e.name},t.nextElementSibling=function(e){for(var t=e.next;null!==t&&!(0,n.isTag)(t);)t=t.next;return t},t.prevElementSibling=function(e){for(var t=e.prev;null!==t&&!(0,n.isTag)(t);)t=t.prev;return t}},3379:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.decodeXML=t.decodeHTMLStrict=t.decodeHTMLAttribute=t.decodeHTML=t.determineBranch=t.EntityDecoder=t.DecodingMode=t.BinTrieFlags=t.fromCodePoint=t.replaceCodePoint=t.decodeCodePoint=t.xmlDecodeTree=t.htmlDecodeTree=void 0;var s=o(r(57346));t.htmlDecodeTree=s.default;var c=o(r(18622));t.xmlDecodeTree=c.default;var u=a(r(22809));t.decodeCodePoint=u.default;var l,d,p,h,f=r(22809);function y(e){return e>=l.ZERO&&e<=l.NINE}Object.defineProperty(t,"replaceCodePoint",{enumerable:!0,get:function(){return f.replaceCodePoint}}),Object.defineProperty(t,"fromCodePoint",{enumerable:!0,get:function(){return f.fromCodePoint}}),function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"}(l||(l={})),function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"}(d=t.BinTrieFlags||(t.BinTrieFlags={})),function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"}(p||(p={})),function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"}(h=t.DecodingMode||(t.DecodingMode={}));var g=function(){function e(e,t,r){this.decodeTree=e,this.emitCodePoint=t,this.errors=r,this.state=p.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=h.Strict}return e.prototype.startEntity=function(e){this.decodeMode=e,this.state=p.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1},e.prototype.write=function(e,t){switch(this.state){case p.EntityStart:return e.charCodeAt(t)===l.NUM?(this.state=p.NumericStart,this.consumed+=1,this.stateNumericStart(e,t+1)):(this.state=p.NamedEntity,this.stateNamedEntity(e,t));case p.NumericStart:return this.stateNumericStart(e,t);case p.NumericDecimal:return this.stateNumericDecimal(e,t);case p.NumericHex:return this.stateNumericHex(e,t);case p.NamedEntity:return this.stateNamedEntity(e,t)}},e.prototype.stateNumericStart=function(e,t){return t>=e.length?-1:(32|e.charCodeAt(t))===l.LOWER_X?(this.state=p.NumericHex,this.consumed+=1,this.stateNumericHex(e,t+1)):(this.state=p.NumericDecimal,this.stateNumericDecimal(e,t))},e.prototype.addToNumericResult=function(e,t,r,n){if(t!==r){var i=r-t;this.result=this.result*Math.pow(n,i)+parseInt(e.substr(t,i),n),this.consumed+=i}},e.prototype.stateNumericHex=function(e,t){for(var r,n=t;t=l.UPPER_A&&r<=l.UPPER_F||r>=l.LOWER_A&&r<=l.LOWER_F)))return this.addToNumericResult(e,n,t,16),this.emitNumericEntity(i,3);t+=1}return this.addToNumericResult(e,n,t,16),-1},e.prototype.stateNumericDecimal=function(e,t){for(var r=t;t>14;t=l.UPPER_A&&e<=l.UPPER_Z||e>=l.LOWER_A&&e<=l.LOWER_Z||y(e)}(o)))?0:this.emitNotTerminatedNamedEntity();if(0!=(i=((n=r[this.treeIndex])&d.VALUE_LENGTH)>>14)){if(a===l.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==h.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}var o;return-1},e.prototype.emitNotTerminatedNamedEntity=function(){var e,t=this.result,r=(this.decodeTree[t]&d.VALUE_LENGTH)>>14;return this.emitNamedEntityData(t,r,this.consumed),null===(e=this.errors)||void 0===e||e.missingSemicolonAfterCharacterReference(),this.consumed},e.prototype.emitNamedEntityData=function(e,t,r){var n=this.decodeTree;return this.emitCodePoint(1===t?n[e]&~d.VALUE_LENGTH:n[e+1],r),3===t&&this.emitCodePoint(n[e+2],r),r},e.prototype.end=function(){var e;switch(this.state){case p.NamedEntity:return 0===this.result||this.decodeMode===h.Attribute&&this.result!==this.treeIndex?0:this.emitNotTerminatedNamedEntity();case p.NumericDecimal:return this.emitNumericEntity(0,2);case p.NumericHex:return this.emitNumericEntity(0,3);case p.NumericStart:return null===(e=this.errors)||void 0===e||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case p.EntityStart:return 0}},e}();function m(e){var t="",r=new g(e,(function(e){return t+=(0,u.fromCodePoint)(e)}));return function(e,n){for(var i=0,a=0;(a=e.indexOf("&",a))>=0;){t+=e.slice(i,a),r.startEntity(n);var o=r.write(e,a+1);if(o<0){i=a+r.end();break}i=a+o,a=0===o?i+1:i}var s=t+e.slice(i);return t="",s}}function b(e,t,r,n){var i=(t&d.BRANCH_LENGTH)>>7,a=t&d.JUMP_TABLE;if(0===i)return 0!==a&&n===a?r:-1;if(a){var o=n-a;return o<0||o>=i?-1:e[r+o]-1}for(var s=r,c=s+i-1;s<=c;){var u=s+c>>>1,l=e[u];if(ln))return e[u+i];c=u-1}}return-1}t.EntityDecoder=g,t.determineBranch=b;var v=m(s.default),_=m(c.default);t.decodeHTML=function(e,t){return void 0===t&&(t=h.Legacy),v(e,t)},t.decodeHTMLAttribute=function(e){return v(e,h.Attribute)},t.decodeHTMLStrict=function(e){return v(e,h.Strict)},t.decodeXML=function(e){return _(e,h.Strict)}},22809:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.replaceCodePoint=t.fromCodePoint=void 0;var n=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function i(e){var t;return e>=55296&&e<=57343||e>1114111?65533:null!==(t=n.get(e))&&void 0!==t?t:e}t.fromCodePoint=null!==(r=String.fromCodePoint)&&void 0!==r?r:function(e){var t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e),t+String.fromCharCode(e)},t.replaceCodePoint=i,t.default=function(e){return(0,t.fromCodePoint)(i(e))}},33231:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.encodeNonAsciiHTML=t.encodeHTML=void 0;var i=n(r(58635)),a=r(57078),o=/[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;function s(e,t){for(var r,n="",o=0;null!==(r=e.exec(t));){var s=r.index;n+=t.substring(o,s);var c=t.charCodeAt(s),u=i.default.get(c);if("object"==typeof u){if(s+1{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.escapeText=t.escapeAttribute=t.escapeUTF8=t.escape=t.encodeXML=t.getCodePoint=t.xmlReplacer=void 0,t.xmlReplacer=/["&'<>$\x80-\uFFFF]/g;var r=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]);function n(e){for(var n,i="",a=0;null!==(n=t.xmlReplacer.exec(e));){var o=n.index,s=e.charCodeAt(o),c=r.get(s);void 0!==c?(i+=e.substring(a,o)+c,a=o+1):(i+="".concat(e.substring(a,o),"&#x").concat((0,t.getCodePoint)(e,o).toString(16),";"),a=t.xmlReplacer.lastIndex+=Number(55296==(64512&s)))}return i+e.substr(a)}function i(e,t){return function(r){for(var n,i=0,a="";n=e.exec(r);)i!==n.index&&(a+=r.substring(i,n.index)),a+=t.get(n[0].charCodeAt(0)),i=n.index+1;return a+r.substring(i)}}t.getCodePoint=null!=String.prototype.codePointAt?function(e,t){return e.codePointAt(t)}:function(e,t){return 55296==(64512&e.charCodeAt(t))?1024*(e.charCodeAt(t)-55296)+e.charCodeAt(t+1)-56320+65536:e.charCodeAt(t)},t.encodeXML=n,t.escape=n,t.escapeUTF8=i(/[&<>'"]/g,r),t.escapeAttribute=i(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),t.escapeText=i(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]))},57346:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map((function(e){return e.charCodeAt(0)})))},18622:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=new Uint16Array("Ȁaglq\tɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map((function(e){return e.charCodeAt(0)})))},58635:(e,t)=>{"use strict";function r(e){for(var t=1;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decodeXMLStrict=t.decodeHTML5Strict=t.decodeHTML4Strict=t.decodeHTML5=t.decodeHTML4=t.decodeHTMLAttribute=t.decodeHTMLStrict=t.decodeHTML=t.decodeXML=t.DecodingMode=t.EntityDecoder=t.encodeHTML5=t.encodeHTML4=t.encodeNonAsciiHTML=t.encodeHTML=t.escapeText=t.escapeAttribute=t.escapeUTF8=t.escape=t.encodeXML=t.encode=t.decodeStrict=t.decode=t.EncodingMode=t.EntityLevel=void 0;var n,i,a=r(3379),o=r(33231),s=r(57078);function c(e,t){if(void 0===t&&(t=n.XML),("number"==typeof t?t:t.level)===n.HTML){var r="object"==typeof t?t.mode:void 0;return(0,a.decodeHTML)(e,r)}return(0,a.decodeXML)(e)}!function(e){e[e.XML=0]="XML",e[e.HTML=1]="HTML"}(n=t.EntityLevel||(t.EntityLevel={})),function(e){e[e.UTF8=0]="UTF8",e[e.ASCII=1]="ASCII",e[e.Extensive=2]="Extensive",e[e.Attribute=3]="Attribute",e[e.Text=4]="Text"}(i=t.EncodingMode||(t.EncodingMode={})),t.decode=c,t.decodeStrict=function(e,t){var r;void 0===t&&(t=n.XML);var i="number"==typeof t?{level:t}:t;return null!==(r=i.mode)&&void 0!==r||(i.mode=a.DecodingMode.Strict),c(e,i)},t.encode=function(e,t){void 0===t&&(t=n.XML);var r="number"==typeof t?{level:t}:t;return r.mode===i.UTF8?(0,s.escapeUTF8)(e):r.mode===i.Attribute?(0,s.escapeAttribute)(e):r.mode===i.Text?(0,s.escapeText)(e):r.level===n.HTML?r.mode===i.ASCII?(0,o.encodeNonAsciiHTML)(e):(0,o.encodeHTML)(e):(0,s.encodeXML)(e)};var u=r(57078);Object.defineProperty(t,"encodeXML",{enumerable:!0,get:function(){return u.encodeXML}}),Object.defineProperty(t,"escape",{enumerable:!0,get:function(){return u.escape}}),Object.defineProperty(t,"escapeUTF8",{enumerable:!0,get:function(){return u.escapeUTF8}}),Object.defineProperty(t,"escapeAttribute",{enumerable:!0,get:function(){return u.escapeAttribute}}),Object.defineProperty(t,"escapeText",{enumerable:!0,get:function(){return u.escapeText}});var l=r(33231);Object.defineProperty(t,"encodeHTML",{enumerable:!0,get:function(){return l.encodeHTML}}),Object.defineProperty(t,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return l.encodeNonAsciiHTML}}),Object.defineProperty(t,"encodeHTML4",{enumerable:!0,get:function(){return l.encodeHTML}}),Object.defineProperty(t,"encodeHTML5",{enumerable:!0,get:function(){return l.encodeHTML}});var d=r(3379);Object.defineProperty(t,"EntityDecoder",{enumerable:!0,get:function(){return d.EntityDecoder}}),Object.defineProperty(t,"DecodingMode",{enumerable:!0,get:function(){return d.DecodingMode}}),Object.defineProperty(t,"decodeXML",{enumerable:!0,get:function(){return d.decodeXML}}),Object.defineProperty(t,"decodeHTML",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(t,"decodeHTMLStrict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTMLAttribute",{enumerable:!0,get:function(){return d.decodeHTMLAttribute}}),Object.defineProperty(t,"decodeHTML4",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(t,"decodeHTML5",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(t,"decodeHTML4Strict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTML5Strict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(t,"decodeXMLStrict",{enumerable:!0,get:function(){return d.decodeXML}})},35033:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.promisifyEventEmitter=void 0,t.promisifyEventEmitter=function(e,t){return new Promise(((r,n)=>{e.on("end",(()=>r(t))),e.on("error",n)}))}},50046:e=>{"use strict";var t,r="object"==typeof Reflect?Reflect:null,n=r&&"function"==typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}e.exports=a,e.exports.once=function(e,t){return new Promise((function(r,n){function i(r){e.removeListener(t,a),n(r)}function a(){"function"==typeof e.removeListener&&e.removeListener("error",i),r([].slice.call(arguments))}y(e,t,a,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&y(e,"error",t,{once:!0})}(e,i)}))},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var o=10;function s(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function c(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function u(e,t,r,n){var i,a,o,u;if(s(r),void 0===(a=e._events)?(a=e._events=Object.create(null),e._eventsCount=0):(void 0!==a.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),a=e._events),o=a[t]),void 0===o)o=a[t]=r,++e._eventsCount;else if("function"==typeof o?o=a[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),(i=c(e))>0&&o.length>i&&!o.warned){o.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=o.length,u=l,console&&console.warn&&console.warn(u)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=l.bind(n);return i.listener=r,n.wrapFn=i,i}function p(e,t,r){var n=e._events;if(void 0===n)return[];var i=n[t];return void 0===i?[]:"function"==typeof i?r?[i.listener||i]:[i]:r?function(e){for(var t=new Array(e.length),r=0;r0&&(o=t[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var c=a[e];if(void 0===c)return!1;if("function"==typeof c)n(c,this,t);else{var u=c.length,l=f(c,u);for(r=0;r=0;a--)if(r[a]===t||r[a].listener===t){o=r[a].listener,i=a;break}if(i<0)return this;0===i?r.shift():function(e,t){for(;t+1=0;n--)this.removeListener(e,t[n]);return this},a.prototype.listeners=function(e){return p(this,e,!0)},a.prototype.rawListeners=function(e){return p(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):h.call(e,t)},a.prototype.listenerCount=h,a.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},53933:e=>{"use strict";e.exports=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,i,a;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(i=n;0!=i--;)if(!e(t[i],r[i]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(i of t.entries())if(!r.has(i[0]))return!1;for(i of t.entries())if(!e(i[1],r.get(i[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(i of t.entries())if(!r.has(i[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if((n=t.length)!=r.length)return!1;for(i=n;0!=i--;)if(t[i]!==r[i])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((n=(a=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(i=n;0!=i--;)if(!Object.prototype.hasOwnProperty.call(r,a[i]))return!1;for(i=n;0!=i--;){var o=a[i];if(!e(t[o],r[o]))return!1}return!0}return t!=t&&r!=r}},74190:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(92681),t)},92681:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SparqlEndpointFetcher=void 0,r(45766);const n=r(55403),i=r(21451),a=r(52666),o=r(76574),s=r(52267),c=r(72243),u=r(76605);class l{constructor(e){e=e||{},this.method=e.method||"POST",this.additionalUrlParams=e.additionalUrlParams||new URLSearchParams,this.defaultHeaders=e.defaultHeaders||new Headers,this.fetchCb=e.fetch,this.sparqlJsonParser=new i.SparqlJsonParser(e),this.sparqlXmlParser=new a.SparqlXmlParser(e),this.sparqlParsers={[l.CONTENTTYPE_SPARQL_JSON]:{parseBooleanStream:e=>this.sparqlJsonParser.parseJsonBooleanStream(e),parseResultsStream:e=>this.sparqlJsonParser.parseJsonResultsStream(e)},[l.CONTENTTYPE_SPARQL_XML]:{parseBooleanStream:e=>this.sparqlXmlParser.parseXmlBooleanStream(e),parseResultsStream:e=>this.sparqlXmlParser.parseXmlResultsStream(e)}},this.timeout=e.timeout}getQueryType(e){const t=new n.Parser({sparqlStar:!0}).parse(e);return"query"===t.type?"DESCRIBE"===t.queryType?"CONSTRUCT":t.queryType:"UNKNOWN"}getUpdateTypes(e){const t=new n.Parser({sparqlStar:!0}).parse(e);if("update"===t.type){const e={};for(const r of t.updates)"type"in r?e[r.type]=!0:e[r.updateType]=!0;return e}return"UNKNOWN"}async fetchBindings(e,t){const[r,n]=await this.fetchRawStream(e,t,l.CONTENTTYPE_SPARQL),i=this.sparqlParsers[r];if(!i)throw new Error("Unknown SPARQL results content type: "+r);return i.parseResultsStream(n)}async fetchAsk(e,t){const[r,n]=await this.fetchRawStream(e,t,l.CONTENTTYPE_SPARQL),i=this.sparqlParsers[r];if(!i)throw new Error("Unknown SPARQL results content type: "+r);return i.parseBooleanStream(n)}async fetchTriples(e,t){return(await this.fetchRawStream(e,t,l.CONTENTTYPE_TURTLE))[1].pipe(new c.StreamParser({format:l.CONTENTTYPE_TURTLE}))}async fetchUpdate(e,t){const n=new(globalThis.AbortController||await Promise.resolve().then((()=>r(67083)))),i={};this.defaultHeaders.forEach(((e,t)=>{i[t]=e}));const a={method:"POST",headers:Object.assign(Object.assign({},i),{"content-type":"application/sparql-update"}),body:t,signal:n.signal};await this.handleFetchCall(e,a,{ignoreBody:!0}),n.abort()}async fetchRawStream(e,t,r){let n="POST"===this.method?e:e+"?query="+encodeURIComponent(t);const i=new Headers(this.defaultHeaders);let a;return i.append("Accept",r),"POST"===this.method?(i.append("Content-Type","application/x-www-form-urlencoded"),a=new URLSearchParams,a.set("query",t),this.additionalUrlParams.forEach(((e,t)=>{a.set(t,e)})),i.append("Content-Length",a.toString().length.toString())):""!==this.additionalUrlParams.toString()&&(n+=`&${this.additionalUrlParams.toString()}`),this.handleFetchCall(n,{headers:i,method:this.method,body:a})}async handleFetchCall(e,t,r={}){let n;if(this.timeout){const e=new AbortController;t.signal=e.signal,n=setTimeout((()=>e.abort()),this.timeout)}const i=await(this.fetchCb||fetch)(e,t);let a;clearTimeout(n),r.ignoreBody||(a=u(i.body)?i.body:new s.ReadableWebToNodeStream(i.body));let c=i.headers.get("Content-Type")||"";if(c.indexOf(";")>0&&(c=c.substr(0,c.indexOf(";"))),!i.ok){const t=/^[^?]*/u.exec(e)[0];let r="empty response";throw a&&(r=await o(a)),new Error(`Invalid SPARQL endpoint response from ${t} (HTTP status ${i.status}):\n${r}`)}return[c,a]}}l.CONTENTTYPE_SPARQL_JSON="application/sparql-results+json",l.CONTENTTYPE_SPARQL_XML="application/sparql-results+xml",l.CONTENTTYPE_SPARQL=`${l.CONTENTTYPE_SPARQL_JSON};q=1.0,${l.CONTENTTYPE_SPARQL_XML};q=0.7`,l.CONTENTTYPE_TURTLE="text/turtle",t.SparqlEndpointFetcher=l},45766:function(){!function(e){!function(t){var r="URLSearchParams"in e,n="Symbol"in e&&"iterator"in Symbol,i="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),a="FormData"in e,o="ArrayBuffer"in e;if(o)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function u(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function l(e){return"string"!=typeof e&&(e=String(e)),e}function d(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function p(e){this.map={},e instanceof p?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function h(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function f(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function y(e){var t=new FileReader,r=f(t);return t.readAsArrayBuffer(e),r}function g(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:i&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:a&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:r&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():o&&i&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=g(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):o&&(ArrayBuffer.prototype.isPrototypeOf(e)||c(e))?this._bodyArrayBuffer=g(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var e=h(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?h(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(y)}),this.text=function(){var e,t,r,n=h(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,r=f(t=new FileReader),t.readAsText(e),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?n:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function _(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function w(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new p(t.headers),this.url=t.url||"",this._initBody(e)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},m.call(v.prototype),m.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},w.error=function(){var e=new w(null,{status:0,statusText:""});return e.type="error",e};var T=[301,302,303,307,308];w.redirect=function(e,t){if(-1===T.indexOf(t))throw new RangeError("Invalid status code");return new w(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function S(e,r){return new Promise((function(n,a){var o=new v(e,r);if(o.signal&&o.signal.aborted)return a(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function c(){s.abort()}s.onload=function(){var e,t,r={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new p,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t)};r.url="responseURL"in s?s.responseURL:r.headers.get("X-Request-URL");var i="response"in s?s.response:s.responseText;n(new w(i,r))},s.onerror=function(){a(new TypeError("Network request failed"))},s.ontimeout=function(){a(new TypeError("Network request failed"))},s.onabort=function(){a(new t.DOMException("Aborted","AbortError"))},s.open(o.method,o.url,!0),"include"===o.credentials?s.withCredentials=!0:"omit"===o.credentials&&(s.withCredentials=!1),"responseType"in s&&i&&(s.responseType="blob"),o.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),o.signal&&(o.signal.addEventListener("abort",c),s.onreadystatechange=function(){4===s.readyState&&o.signal.removeEventListener("abort",c)}),s.send(void 0===o._bodyInit?null:o._bodyInit)}))}S.polyfill=!0,e.fetch||(e.fetch=S,e.Headers=p,e.Request=v,e.Response=w),t.Headers=p,t.Request=v,t.Response=w,t.fetch=S,Object.defineProperty(t,"__esModule",{value:!0})}({})}("undefined"!=typeof self?self:this)},1427:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(51812),t),i(r(26339),t),i(r(17762),t),i(r(12856),t),i(r(45147),t)},26339:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Converter=void 0;const i=r(44330),a=r(51812),o=r(96414),s=r(17762),c=r(45147);class u{constructor(e){(e=e||{}).variableDelimiter=e.variableDelimiter||"_",e.expressionVariableCounter=e.expressionVariableCounter||0,this.util=new c.Util(e),this.initializeNodeHandlers(e)}static registerNodeHandlers(e,t){e.registerNodeHandler(new a.NodeHandlerDocument(e,t)),e.registerNodeHandler(new a.NodeHandlerDefinitionOperation(e,t)),e.registerNodeHandler(new a.NodeHandlerDefinitionFragment(e,t)),e.registerNodeHandler(new a.NodeHandlerSelectionFragmentSpread(e,t)),e.registerNodeHandler(new a.NodeHandlerSelectionInlineFragment(e,t)),e.registerNodeHandler(new a.NodeHandlerSelectionField(e,t))}static registerNodeValueHandlers(e,t){e.registerNodeValueHandler(new a.NodeValueHandlerVariable(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerInt(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerFloat(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerString(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerBoolean(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerNull(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerEnum(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerList(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerObject(e,t))}static registerDirectiveNodeHandlers(e,t){e.registerDirectiveNodeHandler(new o.DirectiveNodeHandlerInclude(e,t)),e.registerDirectiveNodeHandler(new o.DirectiveNodeHandlerOptional(e,t)),e.registerDirectiveNodeHandler(new o.DirectiveNodeHandlerPlural(e,t)),e.registerDirectiveNodeHandler(new o.DirectiveNodeHandlerSingle(e,t)),e.registerDirectiveNodeHandler(new o.DirectiveNodeHandlerSkip(e,t))}graphqlToSparqlAlgebra(e,t,r){return n(this,void 0,void 0,(function*(){return this.graphqlToSparqlAlgebraRawContext(e,yield this.util.contextParser.parse(t),r)}))}graphqlToSparqlAlgebraRawContext(e,t,r){r=r||{};const n="string"==typeof e?(0,i.parse)(e):e,a={context:t,fragmentDefinitions:this.indexFragments(n),graph:this.util.dataFactory.defaultGraph(),path:[],singularizeState:s.SingularizeState.PLURAL,singularizeVariables:r.singularizeVariables||{},subject:null,terminalVariables:[],variablesDict:r.variablesDict||{},variablesMetaDict:{}};return this.util.handleNode(n,a)}indexFragments(e){const t={},r=[];for(const n of e.definitions)"FragmentDefinition"===n.kind?t[n.name.value]=n:r.push(n);return e.definitions=r,t}initializeNodeHandlers(e){u.registerNodeHandlers(this.util,e),u.registerNodeValueHandlers(this.util,e),u.registerDirectiveNodeHandlers(this.util,e)}}t.Converter=u},17762:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.SingularizeState=void 0,(r=t.SingularizeState||(t.SingularizeState={}))[r.SINGLE=0]="SINGLE",r[r.PLURAL=1]="PLURAL"},12856:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},45147:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;const n=r(18050),i=r(27202),a=r(91525);t.Util=class{constructor(e){this.nodeHandlers={},this.nodeValueHandlers={},this.directiveNodeHandlers={},this.settings=e,this.dataFactory=e.dataFactory||new n.DataFactory,this.operationFactory=new a.Factory(this.dataFactory),this.contextParser=new i.ContextParser}registerNodeHandler(e){this.nodeHandlers[e.targetKind]=e}registerNodeValueHandler(e){this.nodeValueHandlers[e.targetKind]=e}registerDirectiveNodeHandler(e){this.directiveNodeHandlers[e.targetKind]=e}handleNode(e,t){const r=this.nodeHandlers[e.kind];if(!r)throw new Error(`Unsupported GraphQL node '${e.kind}'`);return r.handle(e,t)}handleNodeValue(e,t,r){const n=this.nodeValueHandlers[e.kind];if(!n)throw new Error(`Unsupported GraphQL value node '${e.kind}'`);return n.handle(e,t,r)}handleDirectiveNode(e,t){const r=this.directiveNodeHandlers[e.directive.name.value];return r?r.handle(e,t):null}joinOperations(e){if(1===e.length)return e[0];const t=[],r=[];for(const n of e)"bgp"===n.type?t.push(n):r.push(n);if(t.length===e.length)return this.joinOperationsAsBgp(t);if(t.length===e.length-1&&"leftjoin"===r[0].type&&"bgp"===r[0].input[0].type){const e=r[0];return t.push(e.input[0]),this.operationFactory.createLeftJoin(this.joinOperationsAsBgp(t),e.input[1])}return r.length===e.length?this.joinOperationsAsNestedJoin(r):this.joinOperationsAsNestedJoin([this.joinOperationsAsBgp(t),this.joinOperationsAsNestedJoin(r)])}joinOperationsAsBgp(e){return this.operationFactory.createBgp([].concat.apply([],e.map((e=>e.patterns))))}joinOperationsAsNestedJoin(e){return this.operationFactory.createJoin(e)}appendFieldToPath(e,t){return e.concat([t])}getFieldLabel(e){return(e.alias?e.alias:e.name).value}nameToVariable(e,t){return this.dataFactory.variable((t.path.length?t.path.join(this.settings.variableDelimiter)+this.settings.variableDelimiter:"")+e)}valueToNamedNode(e,t){const r=t.expandTerm(e,!0);if(this.settings.requireContext&&!r)throw new Error("No context entry was found for "+e);return this.dataFactory.namedNode(r||e)}getArgument(e,t){if(e)for(const r of e)if(r.name.value===t)return r}newTypePattern(e,t,r){return this.operationFactory.createPattern(e,this.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),this.valueToNamedNode(t.name.value,r.context),r.graph)}createQuadPattern(e,t,r,n,i){const a=this.valueToNamedNode(t.value,i);return i&&i.getContextRaw()[t.value]&&i.getContextRaw()[t.value]["@reverse"]?this.operationFactory.createPattern(r,a,e,n):this.operationFactory.createPattern(e,a,r,n)}createQuadPath(e,t,r,n,i,a){const o=this.valueToNamedNode(t.value,a);let s=this.operationFactory.createLink(o);for(const e of r.values){if("EnumValue"!==e.kind)throw new Error("Invalid value type for 'alt' argument, must be EnumValue, but got "+e.kind);s=this.operationFactory.createAlt([s,this.operationFactory.createLink(this.valueToNamedNode(e.value,a))])}return a&&a.getContextRaw()[t.value]&&a.getContextRaw()[t.value]["@reverse"]?this.operationFactory.createPath(n,s,e,i):this.operationFactory.createPath(e,s,n,i)}}},14009:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerAdapter=void 0,t.NodeHandlerAdapter=class{constructor(e,t,r){this.targetKind=e,this.util=t,this.settings=r}getNodeQuadContextSelectionSet(e,t,r){const n={};if(e)for(const t of e.selections)if("Field"===t.kind){const e=t;this.handleNodeQuadContextField(e,r,n,"id","subject"),this.handleNodeQuadContextField(e,r,n,"graph","graph")}return n}handleNodeQuadContextField(e,t,r,n,i){if(!r[i]&&e.name.value===n){if(!r[i]){const a=this.util.getArgument(e.arguments,"_");if(a){const o=this.util.handleNodeValue(a.value,e.name.value,t);if(1!==o.terms.length)throw new Error(`Only single values can be set as ${n}, but got ${o.terms.length} at ${e.name.value}`);r[i]=o.terms[0],o.auxiliaryPatterns&&(r.auxiliaryPatterns||(r.auxiliaryPatterns=[]),r.auxiliaryPatterns.concat(o.auxiliaryPatterns))}}if(!r[i]){const n=this.util.nameToVariable(this.util.getFieldLabel(e),t);t.terminalVariables.push(n),r[i]=n}}}getDirectiveOutputs(e,t,r){const n=[];if(e)for(const i of e){const e=this.util.handleDirectiveNode({directive:i,fieldLabel:t},r);if(e){if(e.ignore)return null;n.push(e)}}return n}handleDirectiveOutputs(e,t){for(const r of e){if(r.ignore)return this.util.operationFactory.createBgp([]);r.operationOverrider&&(t=r.operationOverrider(t))}return t}}},94058:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerDefinitionAdapter=void 0;const n=r(14009);class i extends n.NodeHandlerAdapter{constructor(e,t,r){super(e,t,r)}}t.NodeHandlerDefinitionAdapter=i},73045:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerDefinitionFragment=void 0;const n=r(94058);class i extends n.NodeHandlerDefinitionAdapter{constructor(e,t){super("FragmentDefinition",e,t)}handle(e,t){throw new Error("Illegal state: fragment definitions must be indexed and removed before processing")}}t.NodeHandlerDefinitionFragment=i},9540:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerDefinitionOperation=void 0;const n=r(94058);class i extends n.NodeHandlerDefinitionAdapter{constructor(e,t){super("OperationDefinition",e,t)}handle(e,t){if("query"!==e.operation)throw new Error("Unsupported definition operation: "+e.operation);if(e.variableDefinitions)for(const r of e.variableDefinitions){const e=r.variable.name.value;r.defaultValue&&(t.variablesDict[e]||(t.variablesDict[e]=r.defaultValue));let n=r.type;const i="NonNullType"===n.kind;i&&(n=n.type);const a="ListType"===n.kind;a&&(n=n.type);const o=n.name.value;t.variablesMetaDict[e]={mandatory:i,list:a,type:o}}const r=this.getDirectiveOutputs(e.directives,e.name?e.name.value:"",t);if(!r)return this.util.operationFactory.createBgp([]);const n=this.util.joinOperations(e.selectionSet.selections.map((e=>this.util.handleNode(e,t))));return this.handleDirectiveOutputs(r,n)}}t.NodeHandlerDefinitionOperation=i},9373:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerDocument=void 0;const n=r(91525),i=r(14009);class a extends i.NodeHandlerAdapter{constructor(e,t){super("Document",e,t)}handle(e,t){const r=e.definitions.map((e=>{const r=this.getNodeQuadContextDefinitionNode(e,Object.assign(Object.assign({},t),{ignoreUnknownVariables:!0})),n=Object.assign(Object.assign({},t),{graph:r.graph||t.graph,subject:r.subject||this.util.dataFactory.blankNode()});let i=this.util.handleNode(e,n);return r&&r.auxiliaryPatterns&&(i=this.util.joinOperations([i,this.util.operationFactory.createBgp(r.auxiliaryPatterns)])),i})),n=this.util.operationFactory.createProject(1===r.length?r[0]:this.util.operationFactory.createUnion(r),t.terminalVariables);return this.translateBlankNodesToVariables(n)}getNodeQuadContextDefinitionNode(e,t){if("OperationDefinition"===e.kind)return this.getNodeQuadContextSelectionSet(e.selectionSet,e.name?e.name.value:"",t);throw new Error(`Unsupported definition: ${e.kind}`)}translateBlankNodesToVariables(e){const t=this,r={},i=Array.from(e.variables).reduce(((e,t)=>(e[t.value]=!0,e)),{});return n.Util.mapOperation(e,{path:(e,t)=>({recurse:!1,result:t.createPath(a(e.subject),e.predicate,a(e.object),a(e.graph))}),pattern:(e,t)=>({recurse:!1,result:t.createPattern(a(e.subject),a(e.predicate),a(e.object),a(e.graph))})});function a(e){if("BlankNode"===e.termType){let a=r[e.value];return a||(a=n.Util.createUniqueVariable(e.value,i,t.util.dataFactory),i[a.value]=!0,r[e.value]=a),a}return e}}}t.NodeHandlerDocument=a},97285:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerSelectionAdapter=void 0;const n=r(91525),i=r(17762),a=r(14009);class o extends a.NodeHandlerAdapter{constructor(e,t,r){super(e,t,r)}getNodeQuadContextFieldNode(e,t,r){return this.getNodeQuadContextSelectionSet(e.selectionSet,t,Object.assign(Object.assign({},r),{path:this.util.appendFieldToPath(r.path,t)}))}fieldToOperation(e,t,r,a){const o=r;let s,c=0;if(("id"===t.name.value||"graph"===t.name.value)&&(r=!1,t.arguments))for(const r of t.arguments)"_"===r.name.value&&this.util.handleNodeValue(r.value,t.name.value,e);const u=this.util.getFieldLabel(t);if(e.singularizeState===i.SingularizeState.SINGLE&&(e.singularizeVariables[this.util.nameToVariable(u,e).value]=!0),r){const t=this.handleMetaField(e,u,a);if(t)return t}const l=a?[this.util.operationFactory.createBgp(a)]:[],d=this.getNodeQuadContextFieldNode(t,u,e);let p=d.subject||this.util.nameToVariable(u,e),h=d.graph||e.graph;d.auxiliaryPatterns&&l.push(this.util.operationFactory.createBgp(d.auxiliaryPatterns));let f=!0,y=null;if(r&&t.arguments&&t.arguments.length)for(const n of t.arguments){if("_"===n.name.value){const i=this.util.handleNodeValue(n.value,t.name.value,e);y=i.terms,l.push(this.util.operationFactory.createBgp(i.terms.map((r=>this.util.createQuadPattern(e.subject,t.name,r,e.graph,e.context))))),i.auxiliaryPatterns&&l.push(this.util.operationFactory.createBgp(i.auxiliaryPatterns)),r=!1;break}if("graph"===n.name.value){const r=this.util.handleNodeValue(n.value,t.name.value,e);if(1!==r.terms.length)throw new Error(`Only single values can be set as graph, but got ${r.terms.length} at ${t.name.value}`);h=r.terms[0],e=Object.assign(Object.assign({},e),{graph:h}),r.auxiliaryPatterns&&l.push(this.util.operationFactory.createBgp(r.auxiliaryPatterns));break}if("alt"===n.name.value){let r=n.value;"ListValue"!==r.kind&&(r={kind:"ListValue",values:[r]}),l.push(this.util.createQuadPath(e.subject,t.name,r,p,e.graph,e.context)),f=!1;break}}if(r&&f&&l.push(this.util.operationFactory.createBgp([this.util.createQuadPattern(e.subject,t.name,p,e.graph,e.context)])),t.arguments&&t.arguments.length)for(const r of t.arguments)if("_"===r.name.value||"graph"===r.name.value||"alt"===r.name.value);else if("first"===r.name.value){if("IntValue"!==r.value.kind)throw new Error("Invalid value type for 'first' argument: "+r.value.kind);s=parseInt(r.value.value,10)}else if("offset"===r.name.value){if("IntValue"!==r.value.kind)throw new Error("Invalid value type for 'offset' argument: "+r.value.kind);c=parseInt(r.value.value,10)}else{const t=this.util.handleNodeValue(r.value,r.name.value,e);l.push(this.util.operationFactory.createBgp(t.terms.map((t=>this.util.createQuadPattern(p,r.name,t,e.graph,e.context))))),t.auxiliaryPatterns&&l.push(this.util.operationFactory.createBgp(t.auxiliaryPatterns))}const g=this.getDirectiveOutputs(t.directives,u,e);if(!g)return this.util.operationFactory.createBgp([]);let m=this.util.joinOperations(l);if(t.selectionSet&&t.selectionSet.selections.length){if(y){if(1!==y.length)throw new Error(`Only single values can be set as id, but got ${y.length} at ${t.name.value}`);p=y[0]}const r=Object.assign(Object.assign(Object.assign({},e),o?{path:this.util.appendFieldToPath(e.path,u)}:{}),{graph:h,subject:o?p:e.subject});let n=!1;const i=t.selectionSet.selections.filter((e=>"Field"!==e.kind||"totalCount"!==e.name.value||(n=!0,!1)));let a=this.util.joinOperations(l.concat(i.map((e=>this.util.handleNode(e,r)))));if(n){const t=this.util.dataFactory.variable("var"+this.settings.expressionVariableCounter++),r=this.util.dataFactory.variable(p.value+this.settings.variableDelimiter+"totalCount"),n=this.util.operationFactory.createBoundAggregate(t,"count",this.util.operationFactory.createTermExpression(p),!1),o=this.util.operationFactory.createProject(this.util.operationFactory.createExtend(this.util.operationFactory.createGroup(m,[],[n]),r,this.util.operationFactory.createTermExpression(t)),[r]);e.terminalVariables.push(r),a=i.length?this.util.operationFactory.createJoin([this.util.operationFactory.createProject(a,[]),o]):o}m=a}else r&&"Variable"===p.termType&&e.terminalVariables.push(p);return(c||s)&&(m=this.util.operationFactory.createSlice(this.util.operationFactory.createProject(m,n.Util.inScopeVariables(m)),c,s)),this.handleDirectiveOutputs(g,m)}handleMetaField(e,t,r){if("__typename"===t){const n=this.util.nameToVariable(t,e);return e.terminalVariables.push(n),this.util.operationFactory.createBgp([this.util.operationFactory.createPattern(e.subject,this.util.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),this.util.nameToVariable(t,e),e.graph)].concat(r||[]))}}}t.NodeHandlerSelectionAdapter=o},15790:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerSelectionField=void 0;const n=r(97285);class i extends n.NodeHandlerSelectionAdapter{constructor(e,t){super("Field",e,t)}handle(e,t){return this.fieldToOperation(t,e,!0)}}t.NodeHandlerSelectionField=i},39555:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerSelectionFragmentSpread=void 0;const n=r(97285);class i extends n.NodeHandlerSelectionAdapter{constructor(e,t){super("FragmentSpread",e,t)}handle(e,t){const r=t.fragmentDefinitions[e.name.value];if(!r)throw new Error("Undefined fragment definition: "+e.name.value);const n={alias:void 0,arguments:void 0,directives:r.directives,kind:"Field",name:e.name,selectionSet:r.selectionSet},i=[this.util.newTypePattern(t.subject,r.typeCondition,t)];return this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]),this.fieldToOperation(t,n,!1,i))}}t.NodeHandlerSelectionFragmentSpread=i},89509:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerSelectionInlineFragment=void 0;const n=r(97285);class i extends n.NodeHandlerSelectionAdapter{constructor(e,t){super("InlineFragment",e,t)}handle(e,t){const r={alias:void 0,arguments:void 0,directives:e.directives,kind:"Field",name:{kind:"Name",value:t.subject.value},selectionSet:e.selectionSet},n=e.typeCondition?[this.util.newTypePattern(t.subject,e.typeCondition,t)]:[];return this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]),this.fieldToOperation(t,r,!1,n))}}t.NodeHandlerSelectionInlineFragment=i},62096:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerAdapter=void 0,t.DirectiveNodeHandlerAdapter=class{constructor(e,t,r){this.targetKind=e,this.util=t,this.settings=r}getDirectiveConditionalValue(e,t){const r=this.util.getArgument(e.arguments,"if");if(!r)throw new Error(`The directive ${e.name.value} is missing an if-argument.`);const n=this.util.handleNodeValue(r.value,r.name.value,t);if(1!==n.terms.length)throw new Error(`Can not apply the directive ${e.name.value} with a list.`);return n.terms[0]}isDirectiveScopeAll(e){const t=this.util.getArgument(e.arguments,"scope");return t&&"EnumValue"===t.value.kind&&"all"===t.value.value}}},5095:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerInclude=void 0;const n=r(62096);class i extends n.DirectiveNodeHandlerAdapter{constructor(e,t){super("include",e,t)}handle(e,t){const r=this.getDirectiveConditionalValue(e.directive,t);return"Literal"===r.termType&&"false"===r.value?{ignore:!0}:{}}}t.DirectiveNodeHandlerInclude=i},61151:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerOptional=void 0;const n=r(62096);class i extends n.DirectiveNodeHandlerAdapter{constructor(e,t){super("optional",e,t)}handle(e,t){return{operationOverrider:e=>this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]),e)}}}t.DirectiveNodeHandlerOptional=i},11013:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerPlural=void 0;const n=r(17762),i=r(62096);class a extends i.DirectiveNodeHandlerAdapter{constructor(e,t){super("plural",e,t)}handle(e,t){return this.isDirectiveScopeAll(e.directive)&&(t.singularizeState=n.SingularizeState.PLURAL),delete t.singularizeVariables[this.util.nameToVariable(e.fieldLabel,t).value],{}}}t.DirectiveNodeHandlerPlural=a},60479:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerSingle=void 0;const n=r(17762),i=r(62096);class a extends i.DirectiveNodeHandlerAdapter{constructor(e,t){super("single",e,t)}handle(e,t){return this.isDirectiveScopeAll(e.directive)&&(t.singularizeState=n.SingularizeState.SINGLE),t.singularizeVariables[this.util.nameToVariable(e.fieldLabel,t).value]=!0,{}}}t.DirectiveNodeHandlerSingle=a},88320:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerSkip=void 0;const n=r(62096);class i extends n.DirectiveNodeHandlerAdapter{constructor(e,t){super("skip",e,t)}handle(e,t){const r=this.getDirectiveConditionalValue(e.directive,t);return"Literal"===r.termType&&"true"===r.value?{ignore:!0}:{}}}t.DirectiveNodeHandlerSkip=i},96414:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(62096),t),i(r(5095),t),i(r(61151),t),i(r(11013),t),i(r(60479),t),i(r(88320),t)},51812:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(96414),t),i(r(31998),t),i(r(14009),t),i(r(94058),t),i(r(73045),t),i(r(9540),t),i(r(9373),t),i(r(97285),t),i(r(15790),t),i(r(39555),t),i(r(89509),t)},81652:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerAdapter=void 0,t.NodeValueHandlerAdapter=class{constructor(e,t,r){this.targetKind=e,this.util=t,this.settings=r}}},95347:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerBoolean=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("BooleanValue",e,t),this.datatype=this.util.dataFactory.namedNode("http://www.w3.org/2001/XMLSchema#boolean")}handle(e,t,r){return{terms:[this.util.dataFactory.literal(e.value?"true":"false",this.datatype)]}}}t.NodeValueHandlerBoolean=i},87822:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerEnum=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("EnumValue",e,t)}handle(e,t,r){return{terms:[this.util.valueToNamedNode(e.value,r.context)]}}}t.NodeValueHandlerEnum=i},5797:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerFloat=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("FloatValue",e,t),this.datatype=this.util.dataFactory.namedNode("http://www.w3.org/2001/XMLSchema#float")}handle(e,t,r){return{terms:[this.util.dataFactory.literal(e.value,this.datatype)]}}}t.NodeValueHandlerFloat=i},18338:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerInt=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("IntValue",e,t),this.datatype=this.util.dataFactory.namedNode("http://www.w3.org/2001/XMLSchema#integer")}handle(e,t,r){return{terms:[this.util.dataFactory.literal(e.value,this.datatype)]}}}t.NodeValueHandlerInt=i},70727:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerList=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("ListValue",e,t),this.nodeFirst=this.util.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"),this.nodeRest=this.util.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"),this.nodeNil=this.util.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil")}handle(e,t,r){const n=[];let i=[];for(const a of e.values){const e=this.util.handleNodeValue(a,t,r);for(const t of e.terms)n.push(t);e.auxiliaryPatterns&&(i=i.concat(e.auxiliaryPatterns))}if(this.settings.arraysToRdfLists){const e=this.util.dataFactory.blankNode();let t=e,a=n.length;for(const e of n){i.push(this.util.operationFactory.createPattern(t,this.nodeFirst,e,r.graph));const n=0==--a?this.nodeNil:this.util.dataFactory.blankNode();i.push(this.util.operationFactory.createPattern(t,this.nodeRest,n,r.graph)),t=n}return{terms:[e],auxiliaryPatterns:i}}return{terms:n,auxiliaryPatterns:i}}}t.NodeValueHandlerList=i},13294:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerNull=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("NullValue",e,t),this.nil=this.util.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil")}handle(e,t,r){return{terms:[this.nil]}}}t.NodeValueHandlerNull=i},41756:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerObject=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("ObjectValue",e,t)}handle(e,t,r){const n=this.util.dataFactory.blankNode();let i=[];for(const a of e.fields){const e=this.util.handleNodeValue(a.value,t,r);for(const t of e.terms)i.push(this.util.createQuadPattern(n,a.name,t,r.graph,r.context));e.auxiliaryPatterns&&(i=i.concat(e.auxiliaryPatterns))}return{terms:[n],auxiliaryPatterns:i}}}t.NodeValueHandlerObject=i},26906:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerString=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("StringValue",e,t)}handle(e,t,r){const n=r.context.getContextRaw()[t];let i,a;return n&&"string"!=typeof n&&(n["@language"]?i=n["@language"]:n["@type"]&&(a=this.util.dataFactory.namedNode(n["@type"]))),{terms:[this.util.dataFactory.literal(e.value,i||a)]}}}t.NodeValueHandlerString=i},47959:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerVariable=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("Variable",e,t)}handle(e,t,r){const n=e.name.value,i=r.variablesDict[n],a=r.variablesMetaDict[n];if(!i){if(r.ignoreUnknownVariables||a&&!a.mandatory){const e=this.util.dataFactory.variable(n);return r.terminalVariables.map((e=>e.value)).indexOf(n)<0&&r.terminalVariables.push(e),{terms:[e]}}throw new Error(`Undefined variable: ${n}`)}if("Variable"===i.kind)throw new Error(`Variable refers to another variable: ${n}`);if(a)if(a.list){if("ListValue"!==i.kind)throw new Error(`Expected a list, but got ${i.kind} for ${n}`);if(a.type){const e=i;for(const t of e.values)if(t.kind!==a.type)throw new Error(`Expected ${a.type}, but got ${t.kind} for ${n}`)}}else a.type;return this.util.handleNodeValue(i,t,r)}}t.NodeValueHandlerVariable=i},31998:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(81652),t),i(r(95347),t),i(r(87822),t),i(r(5797),t),i(r(18338),t),i(r(70727),t),i(r(13294),t),i(r(41756),t),i(r(26906),t),i(r(47959),t)},91525:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Util=t.toSparqlJs=t.toSparql=t.Factory=t.Algebra=t.translate=void 0;const s=o(r(16026));t.translate=s.default;const c=a(r(38849));t.Algebra=c;const u=o(r(67063));t.Factory=u.default;const l=r(96180);Object.defineProperty(t,"toSparql",{enumerable:!0,get:function(){return l.toSparql}}),Object.defineProperty(t,"toSparqlJs",{enumerable:!0,get:function(){return l.toSparqlJs}});const d=o(r(75885));t.Util=d.default},38849:(e,t)=>{"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),t.expressionTypes=t.types=void 0,(n=t.types||(t.types={})).ALT="alt",n.ASK="ask",n.BGP="bgp",n.CONSTRUCT="construct",n.DESCRIBE="describe",n.DISTINCT="distinct",n.EXPRESSION="expression",n.EXTEND="extend",n.FILTER="filter",n.FROM="from",n.GRAPH="graph",n.GROUP="group",n.INV="inv",n.JOIN="join",n.LEFT_JOIN="leftjoin",n.LINK="link",n.MINUS="minus",n.NOP="nop",n.NPS="nps",n.ONE_OR_MORE_PATH="OneOrMorePath",n.ORDER_BY="orderby",n.PATH="path",n.PATTERN="pattern",n.PROJECT="project",n.REDUCED="reduced",n.SEQ="seq",n.SERVICE="service",n.SLICE="slice",n.UNION="union",n.VALUES="values",n.ZERO_OR_MORE_PATH="ZeroOrMorePath",n.ZERO_OR_ONE_PATH="ZeroOrOnePath",n.COMPOSITE_UPDATE="compositeupdate",n.DELETE_INSERT="deleteinsert",n.LOAD="load",n.CLEAR="clear",n.CREATE="create",n.DROP="drop",n.ADD="add",n.MOVE="move",n.COPY="copy",(r=t.expressionTypes||(t.expressionTypes={})).AGGREGATE="aggregate",r.EXISTENCE="existence",r.NAMED="named",r.OPERATOR="operator",r.TERM="term",r.WILDCARD="wildcard"},67063:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const o=a(r(38849)),s=r(18050),c=r(22112),u=r(55403);t.default=class{constructor(e){this.dataFactory=e||new s.DataFactory,this.stringType=this.createTerm("http://www.w3.org/2001/XMLSchema#string")}createAlt(e,t=!0){return this.flattenMulti({type:o.types.ALT,input:e},t)}createAsk(e){return{type:o.types.ASK,input:e}}createBoundAggregate(e,t,r,n,i){const a=this.createAggregateExpression(t,r,n,i);return a.variable=e,a}createBgp(e){return{type:o.types.BGP,patterns:e}}createConstruct(e,t){return{type:o.types.CONSTRUCT,input:e,template:t}}createDescribe(e,t){return{type:o.types.DESCRIBE,input:e,terms:t}}createDistinct(e){return{type:o.types.DISTINCT,input:e}}createExtend(e,t,r){return{type:o.types.EXTEND,input:e,variable:t,expression:r}}createFrom(e,t,r){return{type:o.types.FROM,input:e,default:t,named:r}}createFilter(e,t){return{type:o.types.FILTER,input:e,expression:t}}createGraph(e,t){return{type:o.types.GRAPH,input:e,name:t}}createGroup(e,t,r){return{type:o.types.GROUP,input:e,variables:t,aggregates:r}}createInv(e){return{type:o.types.INV,path:e}}createJoin(e,t=!0){return this.flattenMulti({type:o.types.JOIN,input:e},t)}createLeftJoin(e,t,r){return r?{type:o.types.LEFT_JOIN,input:[e,t],expression:r}:{type:o.types.LEFT_JOIN,input:[e,t]}}createLink(e){return{type:o.types.LINK,iri:e}}createMinus(e,t){return{type:o.types.MINUS,input:[e,t]}}createNop(){return{type:o.types.NOP}}createNps(e){return{type:o.types.NPS,iris:e}}createOneOrMorePath(e){return{type:o.types.ONE_OR_MORE_PATH,path:e}}createOrderBy(e,t){return{type:o.types.ORDER_BY,input:e,expressions:t}}createPath(e,t,r,n){return n?{type:o.types.PATH,subject:e,predicate:t,object:r,graph:n}:{type:o.types.PATH,subject:e,predicate:t,object:r,graph:this.dataFactory.defaultGraph()}}createPattern(e,t,r,n){const i=this.dataFactory.quad(e,t,r,n);return i.type=o.types.PATTERN,i}createProject(e,t){return{type:o.types.PROJECT,input:e,variables:t}}createReduced(e){return{type:o.types.REDUCED,input:e}}createSeq(e,t=!0){return this.flattenMulti({type:o.types.SEQ,input:e},t)}createService(e,t,r){return{type:o.types.SERVICE,input:e,name:t,silent:Boolean(r)}}createSlice(e,t,r){return t=t||0,void 0!==r?{type:o.types.SLICE,input:e,start:t,length:r}:{type:o.types.SLICE,input:e,start:t}}createUnion(e,t=!0){return this.flattenMulti({type:o.types.UNION,input:e},t)}createValues(e,t){return{type:o.types.VALUES,variables:e,bindings:t}}createZeroOrMorePath(e){return{type:o.types.ZERO_OR_MORE_PATH,path:e}}createZeroOrOnePath(e){return{type:o.types.ZERO_OR_ONE_PATH,path:e}}createAggregateExpression(e,t,r,n){return n?{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,separator:n,distinct:r}:{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,distinct:r}}createExistenceExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.EXISTENCE,not:e,input:t}}createNamedExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.NAMED,name:e,args:t}}createOperatorExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.OPERATOR,operator:e,args:t}}createTermExpression(e){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.TERM,term:e}}createWildcardExpression(){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.WILDCARD,wildcard:new u.Wildcard}}createTerm(e){return(0,c.stringToTerm)(e,this.dataFactory)}createCompositeUpdate(e){return{type:o.types.COMPOSITE_UPDATE,updates:e}}createDeleteInsert(e,t,r){const n={type:o.types.DELETE_INSERT};return e&&(n.delete=e),t&&(n.insert=t),r&&(n.where=r),n}createLoad(e,t,r){const n={type:o.types.LOAD,source:e};return t&&(n.destination=t),this.addSilent(n,Boolean(r))}createClear(e,t){return this.addSilent({type:o.types.CLEAR,source:e},Boolean(t))}createCreate(e,t){return this.addSilent({type:o.types.CREATE,source:e},Boolean(t))}createDrop(e,t){return this.addSilent({type:o.types.DROP,source:e},Boolean(t))}createAdd(e,t,r){return this.addSilent({type:o.types.ADD,source:e,destination:t},Boolean(r))}createMove(e,t,r){return this.addSilent({type:o.types.MOVE,source:e,destination:t},Boolean(r))}createCopy(e,t,r){return this.addSilent({type:o.types.COPY,source:e,destination:t},Boolean(r))}addSilent(e,t){return t&&(e.silent=t),e}flattenMulti(e,t){if(!t)return e;const r=e.type,n=e.input;let i=[];for(const e of n)e.type===r?i.push(...e.input):i.push(e);return e.input=i,e}}},96180:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.toSparqlJs=t.toSparql=void 0;const s=r(91032),c=r(22112),u=r(55403),l=a(r(38849)),d=o(r(67063)),p=o(r(75885)),h=l.types,f=l.expressionTypes;let y;const g=new d.default;function m(e){b();let t=v(e=function(e){return D(e,[])}(e));return"group"===t.type?t.patterns[0]:t}function b(){y={project:!1,extend:[],group:[],aggregates:[],order:[]}}function v(e){switch(e.type!==h.EXTEND&&e.type!==h.ORDER_BY&&e.type!==h.GRAPH&&(y.project=!1),e.type){case h.EXPRESSION:return _(e);case h.ASK:return A(e,h.ASK);case h.BGP:return function(e){let t=e.patterns.map(E);return 0===t.length?null:{type:"bgp",triples:t}}(e);case h.CONSTRUCT:return function(e){return{type:"query",prefixes:{},queryType:"CONSTRUCT",template:e.template.map(E),where:p.default.flatten([v(e.input)])}}(e);case h.DESCRIBE:return A(e,h.DESCRIBE);case h.DISTINCT:return function(e){let t=v(e.input);return t.patterns[0].distinct=!0,t}(e);case h.EXTEND:return function(e){return y.project?(y.extend.push(e),v(e.input)):p.default.flatten([v(e.input),{type:"bind",variable:e.variable,expression:_(e.expression)}])}(e);case h.FROM:return function(e){const t=v(e.input);let r=t;return"group"===t.type&&(r=t.patterns[0]),r.from={default:e.default,named:e.named},t}(e);case h.FILTER:return function(e){return{type:"group",patterns:p.default.flatten([v(e.input),{type:"filter",expression:_(e.expression)}])}}(e);case h.GRAPH:return function(e){return{type:"graph",patterns:p.default.flatten([v(e.input)]),name:e.name}}(e);case h.GROUP:return function(e){const t=v(e.input),r=e.aggregates.map(O);return y.aggregates.push(...r),y.group.push(...e.variables),t}(e);case h.JOIN:return function(e){return p.default.flatten(e.input.map(v)).reduce(((e,t)=>("bgp"!==t.type||0==e.length||"bgp"!==e[e.length-1].type?e.push(t):e[e.length-1].triples.push(...t.triples),e)),[])}(e);case h.LEFT_JOIN:return function(e){const t={type:"optional",patterns:[v(e.input[1])]};return e.expression&&t.patterns.push({type:"filter",expression:_(e.expression)}),t.patterns=p.default.flatten(t.patterns),p.default.flatten([v(e.input[0]),t])}(e);case h.MINUS:return function(e){let t=v(e.input[1]);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),p.default.flatten([v(e.input[0]),{type:"minus",patterns:t}])}(e);case h.NOP:return{};case h.ORDER_BY:return function(e){return y.order.push(...e.expressions),v(e.input)}(e);case h.PATH:return function(e){return{type:"bgp",triples:[{subject:e.subject,predicate:w(e.predicate),object:e.object}]}}(e);case h.PATTERN:return E(e);case h.PROJECT:return A(e,h.PROJECT);case h.REDUCED:return function(e){let t=v(e.input);return t.patterns[0].reduced=!0,t}(e);case h.SERVICE:return function(e){let t=v(e.input);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),{type:"service",name:e.name,silent:e.silent,patterns:t}}(e);case h.SLICE:return function(e){let t=v(e.input),r=t;return t.type&&"group"===t.type&&(r=t.patterns[0]),0!==e.start&&(r.offset=e.start),void 0!==e.length&&(r.limit=e.length),t}(e);case h.UNION:return function(e){return{type:"union",patterns:e.input.map(v).map(S)}}(e);case h.VALUES:return function(e){return{type:"values",values:e.bindings.map((t=>{let r={};for(let n of e.variables){let e=`?${n.value}`;t[e]?r[e]=t[e]:r[e]=void 0}return r}))}}(e);case h.COMPOSITE_UPDATE:return function(e){return{prefixes:{},type:"update",updates:e.updates.map((e=>v(e).updates[0]))}}(e);case h.DELETE_INSERT:return function(e){var t;let r,n=e.where;if(n&&n.type===h.FROM){let e=n;n=e.input,r={default:e.default,named:e.named}}const i=[{updateType:"insertdelete",delete:N(e.delete||[]),insert:N(e.insert||[])}];if(r&&(i[0].using=r),!n||n.type===h.BGP&&0===n.patterns.length)i[0].where=[];else{const e=[];let r=v(D(n,e));if("group"===r.type?i[0].where=r.patterns:i[0].where=[r],e.length>0){if(1!==e.length)throw new Error("This is unexpected and might indicate an error in graph handling for updates.");""!==(null===(t=e[0])||void 0===t?void 0:t.value)&&(i[0].where=[{type:"graph",patterns:i[0].where,name:e[0]}])}}return e.delete||e.where?e.insert||e.where?!e.insert&&e.where&&"bgp"===e.where.type&&(0,s.isomorphic)(e.delete,e.where.patterns)&&(delete i[0].where,i[0].updateType="deletewhere"):(delete i[0].insert,delete i[0].where,e.delete.some((e=>"Variable"===e.subject.termType||"Variable"===e.predicate.termType||"Variable"===e.object.termType))?i[0].updateType="deletewhere":i[0].updateType="delete"):(i[0].updateType="insert",delete i[0].delete,delete i[0].where),{prefixes:{},type:"update",updates:i}}(e);case h.LOAD:return function(e){const t=[{type:"load",silent:Boolean(e.silent),source:e.source}];return e.destination&&(t[0].destination=e.destination),{prefixes:{},type:"update",updates:t}}(e);case h.CLEAR:return function(e){return I(e,"clear")}(e);case h.CREATE:return function(e){return I(e,"create")}(e);case h.DROP:return function(e){return I(e,"drop")}(e);case h.ADD:return function(e){return P(e,"add")}(e);case h.MOVE:return function(e){return P(e,"move")}(e);case h.COPY:return function(e){return P(e,"copy")}(e)}throw new Error(`Unknown Operation type ${e.type}`)}function _(e){switch(e.expressionType){case f.AGGREGATE:return function(e){const t={expression:_(e.expression),type:"aggregate",aggregation:e.aggregator,distinct:e.distinct};return e.separator&&(t.separator=e.separator),t}(e);case f.EXISTENCE:return function(e){return{type:"operation",operator:e.not?"notexists":"exists",args:p.default.flatten([v(e.input)])}}(e);case f.NAMED:return function(e){return{type:"functionCall",function:e.name,args:e.args.map(_)}}(e);case f.OPERATOR:return function(e){if("desc"===e.operator){return{expression:_(e.args[0]),descending:!0}}const t={type:"operation",operator:e.operator,args:e.args.map(_)};return"in"!==t.operator&&"notin"!==t.operator||(t.args=[t.args[0]].concat([t.args.slice(1)])),t}(e);case f.TERM:return function(e){return e.term}(e);case f.WILDCARD:return function(e){return e.wildcard}(e)}throw new Error(`Unknown Expression Operation type ${e.expressionType}`)}function w(e){switch(e.type){case h.ALT:return function(e){const t=e.input.map(w);return t.every((e=>"pathType"in e&&"!"===e.pathType))?{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:p.default.flatten(t.map((e=>e.items)))}]}:{type:"path",pathType:"|",items:t}}(e);case h.INV:return function(e){if(e.path.type===h.NPS){const t=e.path.iris.map((e=>({type:"path",pathType:"^",items:[e]})));return t.length<=1?{type:"path",pathType:"!",items:t}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:t}]}}return{type:"path",pathType:"^",items:[w(e.path)]}}(e);case h.LINK:return function(e){return e.iri}(e);case h.NPS:return function(e){return e.iris.length<=1?{type:"path",pathType:"!",items:e.iris}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:e.iris}]}}(e);case h.ONE_OR_MORE_PATH:return function(e){return{type:"path",pathType:"+",items:[w(e.path)]}}(e);case h.SEQ:return function(e){return{type:"path",pathType:"/",items:e.input.map(w)}}(e);case h.ZERO_OR_MORE_PATH:return function(e){return{type:"path",pathType:"*",items:[w(e.path)]}}(e);case h.ZERO_OR_ONE_PATH:return function(e){return{type:"path",pathType:"?",items:[w(e.path)]}}(e)}throw new Error(`Unknown Path type ${e.type}`)}function T(e){return(0,c.termToString)(e)}function S(e){return Array.isArray(e)?1===e.length?e[0]:{type:"group",patterns:e}:e}function O(e){return e}function E(e){return{subject:e.subject,predicate:e.predicate,object:e.object}}function x(e,t){let r=p.default.isSimpleTerm(e)?T(e):e;if("string"==typeof r){if(t[r])return t[r]}else if(Array.isArray(e))e=e.map((e=>x(e,t)));else for(let r of Object.keys(e))e[r]=x(e[r],t);return e}function A(e,t){const r={type:"query",prefixes:{}},n=r;let i;t===h.PROJECT?(r.queryType="SELECT",i=e.variables):t===h.ASK?r.queryType="ASK":t===h.DESCRIBE&&(r.queryType="DESCRIBE",i=e.terms);const a=y.extend,o=y.group,s=y.aggregates,c=y.order;b(),y.project=!0;let l=p.default.flatten([v(e.input)]);1===l.length&&"group"===l[0].type&&(l=l[0].patterns),r.where=l;let d={};for(let e of y.aggregates)d[T(e.variable)]=_(e);let f={};for(let e=y.extend.length-1;e>=0;--e){let t=y.extend[e];f[T(t.variable)]=x(_(t.expression),d)}if(y.group.length>0&&(n.group=y.group.map((e=>{let t=T(e);if(f[t]){let r=f[t];return delete f[t],{variable:e,expression:r}}return{expression:e}}))),y.order.length>0&&(n.order=y.order.map(v).map((e=>e.descending?e:{expression:e}))),i&&(n.variables=i.map((e=>{let t=T(e);return f[t]?{variable:e,expression:f[t]}:e})),0===n.variables.length&&(n.variables=[new u.Wildcard])),r.where.length>0&&"filter"===r.where[r.where.length-1].type){const e=r.where[r.where.length-1];R(e,Object.keys(d))&&(n.having=p.default.flatten([x(e.expression,d)]),r.where.splice(-1))}return y.extend=a,y.group=o,y.aggregates=s,y.order=c,{type:"group",patterns:[n]}}function R(e,t){return p.default.isSimpleTerm(e)?t.indexOf(T(e))>=0:Array.isArray(e)?e.some((e=>R(e,t))):e===Object(e)?Object.keys(e).some((r=>R(e[r],t))):t.indexOf(e)>=0}function I(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return"DEFAULT"===e.source?r[0].graph={default:!0}:"NAMED"===e.source?r[0].graph={named:!0}:"ALL"===e.source?r[0].graph={all:!0}:r[0].graph={type:"graph",name:e.source},{prefixes:{},type:"update",updates:r}}function P(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return r[0].source="DEFAULT"===e.source?{type:"graph",default:!0}:{type:"graph",name:e.source},r[0].destination="DEFAULT"===e.destination?{type:"graph",default:!0}:{type:"graph",name:e.destination},{prefixes:{},type:"update",updates:r}}function N(e){if(!e)return[];const t={};return e.forEach((e=>{const r=e.graph.value;t[r]||(t[r]=[]),t[r].push(e)})),Object.keys(t).map((e=>""===e?{type:"bgp",triples:t[e].map(E)}:{type:"graph",triples:t[e].map(E),name:t[e][0].graph}))}function D(e,t){if(Array.isArray(e))return e.map((e=>D(e,t)));if(!e.type)return e;if(e.type===h.DELETE_INSERT)return e;if((e.type===h.PATTERN||e.type===h.PATH)&&e.graph)return t.push(e.graph),""!==e.graph.name?e.type===h.PATTERN?g.createPattern(e.subject,e.predicate,e.object):g.createPath(e.subject,e.predicate,e.object):e;const r={},n={},i={};for(let t of Object.keys(e)){const a=[];if(r[t]=D(e[t],a),a.length>0){n[t]=a;for(const e of a)i[e.value]=e}}const a=Object.keys(i);if(a.length>0)if(1!==a.length||[h.PROJECT,h.SERVICE].includes(e.type)){if(e.type===h.BGP)return function(e,t){var r;const n={};for(let i=0;i""===n[e][0].value?t:g.createGraph(t,n[e][r]))):""!==n[e][0].value&&(r[e]=g.createGraph(t,n[e][0]))}}else t.push(i[a[0]]);return r}t.toSparql=function(e,t={}){return new u.Generator(t).stringify(m(e))},t.toSparqlJs=m},16026:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(53933),c=r(22112),u=a(r(38849)),l=o(r(67063)),d=o(r(75885)),p=r(55403).Parser,h=u.types;let f,y=new Set,g=0,m=!1;function b(e,t,r){if(y=new Set,g=0,m=Boolean(t),!e.type)return f.createNop();if("query"!==e.type&&"update"!==e.type)throw new Error("Translate only works on complete query or update objects.");let n;var i;return w(e),"query"===e.type?(n=S({type:"group",patterns:e.where||[]}),n=function(e,t){const r=e,n=[],i={};if(r.variables=r.variables&&r.variables.map((e=>C(e,i))),r.having=r.having&&r.having.map((e=>C(e,i))),r.order=r.order&&r.order.map((e=>C(e,i))),r.group||Object.keys(i).length>0){const e=Object.keys(i).map((e=>function(e,t){if("aggregate"!==e.type||!e.aggregation)throw new Error(`Unexpected input: ${JSON.stringify(e)}`);const r=O(e);return r.variable=t,r}(i[e],f.createTerm(e)))),n=[];if(r.group)for(const e of r.group)if(d.default.isSimpleTerm(e.expression))n.push(e.expression);else{const r="variable"in e?e.variable:A();t=f.createExtend(t,r,O(e.expression)),n.push(r)}t=f.createGroup(t,n,e)}if(r.having)for(let e of r.having)t=f.createFilter(t,O(e));e.values&&(t=f.createJoin([t,j(e)]));let a=[];if("SELECT"===e.queryType||"DESCRIBE"===e.queryType)if(e.variables.some((e=>e&&d.default.isWildcard(e))))a=Object.values(T(e)).sort(((e,t)=>e.value.localeCompare(t.value)));else for(let t of e.variables)_(t)||!("variable"in t)?a.push(t):t.variable&&(a.push(t.variable),n.push(t));for(let e of n)t=f.createExtend(t,e.variable,O(e.expression));return r.order&&(t=f.createOrderBy(t,r.order.map((e=>{let t=O(e.expression);return e.descending&&(t=f.createOperatorExpression("desc",[t])),t})))),"SELECT"===e.queryType&&(t=f.createProject(t,a)),r.distinct&&(t=f.createDistinct(t)),r.reduced&&(t=f.createReduced(t)),"CONSTRUCT"===e.queryType?t=f.createConstruct(t,(e.template||[]).map(R)):"ASK"===e.queryType?t=f.createAsk(t):"DESCRIBE"===e.queryType&&(t=f.createDescribe(t,a)),(r.offset||r.limit)&&(t=f.createSlice(t,r.offset||0,r.limit)),r.from&&(t=f.createFrom(t,r.from.default,r.from.named)),t}(e,n)):"update"===e.type&&(n=1===(i=e).updates.length?M(i.updates[0]):f.createCompositeUpdate(i.updates.map(M))),r&&(n=k(n)),n}function v(e){return Boolean(null==e?void 0:e.termType)}function _(e){return"Variable"===(null==e?void 0:e.termType)}function w(e){if(v(e))_(e)&&y.add(`?${e.value}`);else if(Array.isArray(e))for(const t of e)w(t);else if(e&&"object"==typeof e)for(let t of Object.keys(e))t.startsWith("?")&&y.add(t),w(e[t])}function T(e){let t={};if((r=e).subject&&r.predicate&&r.object){const r=[T(e.subject),T(e.predicate),T(e.object),e.graph?T(e.graph):{}];Object.assign(t,...r)}else if(v(e))_(e)&&(t[e.value]=e);else if("bgp"===e.type){const r=e.triples;Object.assign(t,...r.map(T))}else if("path"===e.type)Object.assign(t,...e.items.map(T));else if("group"===e.type||"union"===e.type||"optional"===e.type)Object.assign(t,...e.patterns.map(T));else if("service"===e.type||"graph"===e.type)Object.assign(t,T(e.name)),Object.assign(t,...e.patterns.map(T));else if("bind"===e.type)Object.assign(t,T(e.variable));else if("values"===e.type){if(e.values.length>0){const r=Object.keys(e.values[0]).map((e=>f.createTerm(e)));Object.assign(t,...r.map(T))}}else if("query"===e.type&&("SELECT"===e.queryType||"DESCRIBE"===e.queryType)){e.where&&e.variables.some(d.default.isWildcard)&&Object.assign(t,...e.where.map(T));for(const r of e.variables)_(r)?Object.assign(t,T(r)):r.variable&&Object.assign(t,T(r.variable));if("SELECT"===e.queryType){if(e.group)for(const r of e.group)r.variable&&Object.assign(t,T(r.variable));if(e.values){const r={type:"values",values:e.values};Object.assign(t,T(r))}}}var r;return t}function S(e){if("bgp"===e.type)return function(e){let t=[],r=[];for(let i of e.triples)if("pathType"in i.predicate){let e=x((n=i).subject,E(n.predicate),n.object);for(let n of e)n.type===h.PATH?(t.length>0&&r.push(f.createBgp(t)),t=[],r.push(n)):t.push(n)}else t.push(R(i));var n;return t.length>0&&r.push(f.createBgp(t)),1===r.length?r[0]:f.createJoin(r)}(e);if("union"===e.type)return f.createUnion(e.patterns.map((e=>("group"!==e.type&&(e={type:"group",patterns:[e]}),S(e)))));if("graph"===e.type){let t=S({type:"group",patterns:e.patterns});return t=m?P(t,e.name):f.createGraph(t,e.name),t}if("values"===e.type)return j(e);if("query"===e.type)return b(e,m,!1);if("group"===e.type){let t=[],r=[];for(let n of e.patterns)("filter"===n.type?t:r).push(n);let n=r.reduce(N,f.createBgp([])),i=t.map((e=>O(e.expression)));return i.length>0&&(n=f.createFilter(n,i.reduce(((e,t)=>f.createOperatorExpression("&&",[e,t]))))),n}throw new Error(`Unexpected type: ${e.type}`)}function O(e){if(d.default.isSimpleTerm(e))return f.createTermExpression(e);if(d.default.isQuad(e))return d.default.hasQuadVariables(e)?f.createOperatorExpression("triple",[O(e.subject),O(e.predicate),O(e.object)]):f.createTermExpression(e);if(d.default.isWildcard(e))return f.createWildcardExpression();if("aggregation"in e)return f.createAggregateExpression(e.aggregation,O(e.expression),Boolean(e.distinct),e.separator);if("function"in e)return f.createNamedExpression(e.function,e.args.map(O));if("operator"in e)return"exists"===e.operator||"notexists"===e.operator?f.createExistenceExpression("notexists"===e.operator,S(e.args[0])):("in"!==e.operator&&"notin"!==e.operator||(e.args=[e.args[0]].concat(e.args[1])),f.createOperatorExpression(e.operator,e.args.map(O)));throw new Error(`Unknown expression: ${JSON.stringify(e)}`)}function E(e){if(d.default.isSimpleTerm(e)){if("NamedNode"===e.termType)return f.createLink(e);throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(e)}`)}if("^"===e.pathType)return f.createInv(E(e.items[0]));if("!"===e.pathType){let t,r=[],n=[];t="pathType"in e.items[0]&&"|"===e.items[0].pathType?e.items[0].items:e.items;for(let e of t)if(d.default.isSimpleTerm(e))r.push(e);else{if("^"!==e.pathType)throw new Error(`Unexpected item: ${JSON.stringify(e)}`);n.push(e.items[0])}let i=f.createNps(r),a=f.createInv(f.createNps(n));return 0===n.length?i:0===r.length?a:f.createAlt([i,a])}if("/"===e.pathType)return f.createSeq(e.items.map(E));if("|"===e.pathType)return f.createAlt(e.items.map(E));if("*"===e.pathType)return f.createZeroOrMorePath(E(e.items[0]));if("+"===e.pathType)return f.createOneOrMorePath(E(e.items[0]));if("?"===e.pathType)return f.createZeroOrOnePath(E(e.items[0]));throw new Error(`Unable to translate path expression ${JSON.stringify(e)}`)}function x(e,t,r){if(t.type===h.LINK)return[f.createPattern(e,t.iri,r)];if(t.type===h.INV)return x(r,t.path,e);if(t.type===h.SEQ){let n=e;return d.default.flatten(t.input.map(((e,i)=>{const a=i===t.input.length-1?r:A(),o=x(n,e,a);return"Variable"===a.termType&&(n=a),o})))}return[f.createPath(e,t,r)]}function A(){let e="?var"+g++;return y.has(e)?A():(y.add(e),f.createTerm(e))}function R(e){if("pathType"in e.predicate)throw new Error("Trying to translate property path to quad.");return f.createPattern(e.subject,e.predicate,e.object,e.graph)}t.default=function(e,t){let r;if(t=t||{},f=new l.default(t.dataFactory),"string"==typeof e){let n=new p(t);n._resetBlanks(),r=n.parse(e)}else r=e;return b(r,t.quads,t.blankToVariable)};let I=Object.values(h);function P(e,t,r){if(e.type===h.GRAPH){if(r)throw new Error("Recursing through nested GRAPH statements with a replacement is impossible.");e=P(e.input,e.name)}else if(e.type===h.SERVICE);else if(e.type===h.BGP)e.patterns=e.patterns.map((e=>(r&&(e.subject.equals(t)&&(e.subject=r),e.predicate.equals(t)&&(e.predicate=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t),e)));else if(e.type===h.PATH)r&&(e.subject.equals(t)&&(e.subject=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t);else if(e.type!==h.PROJECT||r)if(e.type!==h.EXTEND||r)for(let n of Object.keys(e))Array.isArray(e[n])?e[n]=e[n].map((e=>P(e,t,r))):I.indexOf(e[n].type)>=0?e[n]=P(e[n],t,r):r&&_(e[n])&&e[n].equals(t)&&(e[n]=r);else e.variable.equals(t)&&(r=A()),e.input=P(e.input,t,r);else e.variables.some((e=>e.equals(t)))||(r=A()),e.input=P(e.input,t,r);return e}function N(e,t){if("optional"===t.type){const r=S({type:"group",patterns:t.patterns});e=r.type===h.FILTER?f.createLeftJoin(e,r.input,r.expression):f.createLeftJoin(e,r)}else if("minus"===t.type){const r=S({type:"group",patterns:t.patterns});e=f.createMinus(e,r)}else if("bind"===t.type)e=f.createExtend(e,t.variable,O(t.expression));else if("service"===t.type){const r={type:"group",patterns:t.patterns};e=D(e,f.createService(S(r),t.name,t.silent))}else e=D(e,S(t));return e}function D(e,t){return e.type===h.BGP&&t.type===h.BGP?e=f.createBgp([...e.patterns,...t.patterns]):e.type===h.BGP&&0===e.patterns.length?e=t:t.type===h.BGP&&0===t.patterns.length||(e=f.createJoin([e,t])),e}function j(e){let t=(0===e.values.length?[]:Object.keys(e.values[0])).map(f.createTerm.bind(f)),r=e.values.map((e=>{let t=Object.keys(e);t=t.filter((t=>void 0!==e[t]));let r={};for(let n of t)r[n]=e[n];return r}));return f.createValues(t,r)}function C(e,t){if("type"in e&&"aggregate"===e.type){let r,n=!1;for(let i of Object.keys(t))if(s(t[i],e)){r=f.createTerm(i),n=!0;break}return n||(r=A(),t[(0,c.termToString)(r)]=e),r}return"expression"in e&&e.expression?{...e,expression:C(e.expression,t)}:"args"in e&&e.args?{...e,args:e.args.map((e=>C(e,t)))}:e}function M(e){if("type"in e){if("load"===e.type)return function(e){return f.createLoad(e.source,e.destination,e.silent)}(e);if("clear"===e.type||"create"===e.type||"drop"===e.type)return function(e){let t;switch(t=d.default.isSimpleTerm(e.graph)?e.graph:e.graph.all?"ALL":e.graph.default?"DEFAULT":e.graph.named?"NAMED":e.graph.name,e.type){case"clear":return f.createClear(t,e.silent);case"create":return f.createCreate(t,e.silent);case"drop":return f.createDrop(t,e.silent)}}(e);if("add"===e.type||"copy"===e.type||"move"===e.type)return function(e){const t=e.source.default?"DEFAULT":e.source.name,r=e.destination.default?"DEFAULT":e.destination.name;switch(e.type){case"copy":return f.createCopy(t,r,e.silent);case"move":return f.createMove(t,r,e.silent);case"add":return f.createAdd(t,r,e.silent)}}(e)}else if("insertdelete"===e.updateType||"deletewhere"===e.updateType||"delete"===e.updateType||"insert"===e.updateType)return function(e){if(!m)throw new Error("INSERT/DELETE operations are only supported with quads option enabled");let t,r=[],n=[];if(e.delete&&(r=d.default.flatten(e.delete.map((t=>L(t,e.graph))))),e.insert&&(n=d.default.flatten(e.insert.map((t=>L(t,e.graph))))),e.where&&e.where.length>0){t=S({type:"group",patterns:e.where});const r=e.using;r?t=f.createFrom(t,r.default,r.named):e.graph&&(t=P(t,e.graph))}else"deletewhere"===e.updateType&&r.length>0&&(t=f.createBgp(r));return f.createDeleteInsert(r.length>0?r:void 0,n.length>0?n:void 0,t)}(e);throw new Error(`Unknown update type ${JSON.stringify(e)}`)}function L(e,t){let r=t;"graph"===e.type&&(r=e.name);let n=e.triples;return r&&(n=n.map((e=>Object.assign(e,{graph:r})))),n.map(R)}function k(e){const t={},r=Array.from(y).reduce(((e,t)=>(e[t]=!0,e)),{});return d.default.mapOperation(e,{[u.types.DELETE_INSERT]:e=>({result:e,recurse:!1}),[u.types.PATH]:(e,t)=>({result:t.createPath(n(e.subject),e.predicate,n(e.object),n(e.graph)),recurse:!1}),[u.types.PATTERN]:(e,t)=>({result:t.createPattern(n(e.subject),n(e.predicate),n(e.object),n(e.graph)),recurse:!1}),[u.types.CONSTRUCT]:e=>({result:f.createConstruct(k(e.input),e.template),recurse:!1})});function n(e){if("BlankNode"===e.termType){let n=t[e.value];return n||(n=d.default.createUniqueVariable(e.value,r,f.dataFactory),r[n.value]=!0,t[e.value]=n),n}return e}}},75885:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(38849),a=n(r(67063)),o=r(13252);class s{static flatten(e){return Array.prototype.concat(...e).filter((e=>e))}static objectify(e){if(e.termType){if("Quad"===e.termType)return{type:"pattern",termType:"Quad",subject:s.objectify(e.subject),predicate:s.objectify(e.predicate),object:s.objectify(e.object),graph:s.objectify(e.graph)};{let t={termType:e.termType,value:e.value};return e.language&&(t.language=e.language),e.datatype&&(t.datatype=s.objectify(e.datatype)),t}}if(Array.isArray(e))return e.map((e=>s.objectify(e)));if(e===Object(e)){let t={};for(let r of Object.keys(e))t[r]=s.objectify(e[r]);return t}return e}static inScopeVariables(e){const t=[];function r(e){t.find((t=>e.value===t.value))||t.push(e)}function n(e){"Variable"===e.subject.termType&&r(e.subject),"Variable"===e.predicate.termType&&r(e.predicate),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.predicate.termType&&n(e.predicate),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph)}return s.recurseOperation(e,{[i.types.EXPRESSION]:e=>(e.expressionType===i.expressionTypes.AGGREGATE&&e.variable&&r(e.variable),!0),[i.types.EXTEND]:e=>(r(e.variable),!0),[i.types.GRAPH]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.GROUP]:e=>(e.variables.forEach(r),!0),[i.types.PATH]:e=>("Variable"===e.subject.termType&&r(e.subject),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph),!0),[i.types.PATTERN]:e=>(n(e),!0),[i.types.PROJECT]:e=>(e.variables.forEach(r),!1),[i.types.SERVICE]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.VALUES]:e=>(e.variables.forEach(r),!0)}),t}static recurseOperation(e,t){let r=e,n=!0;const a=t[e.type];if(a&&(n=a(e)),!n)return;let o=e=>s.recurseOperation(e,t);switch(r.type){case i.types.ALT:r.input.map(o);break;case i.types.ASK:o(r.input);break;case i.types.BGP:r.patterns.forEach(o);break;case i.types.CONSTRUCT:o(r.input),r.template.map(o);break;case i.types.DESCRIBE:case i.types.DISTINCT:o(r.input);break;case i.types.EXPRESSION:r.expressionType===i.expressionTypes.EXISTENCE&&o(r.input);break;case i.types.EXTEND:case i.types.FILTER:o(r.input),o(r.expression);break;case i.types.FROM:case i.types.GRAPH:o(r.input);break;case i.types.GROUP:o(r.input),r.aggregates.forEach(o);break;case i.types.INV:o(r.path);break;case i.types.JOIN:r.input.map(o);break;case i.types.LEFT_JOIN:r.input.map(o),r.expression&&o(r.expression);break;case i.types.LINK:break;case i.types.MINUS:r.input.map(o);break;case i.types.NOP:case i.types.NPS:break;case i.types.ONE_OR_MORE_PATH:o(r.path);break;case i.types.ORDER_BY:o(r.input),r.expressions.forEach(o);break;case i.types.PATH:o(r.predicate);break;case i.types.PATTERN:break;case i.types.PROJECT:case i.types.REDUCED:o(r.input);break;case i.types.SEQ:r.input.map(o);break;case i.types.SERVICE:case i.types.SLICE:o(r.input);break;case i.types.UNION:r.input.map(o);break;case i.types.VALUES:break;case i.types.ZERO_OR_MORE_PATH:case i.types.ZERO_OR_ONE_PATH:o(r.path);break;case i.types.COMPOSITE_UPDATE:r.updates.forEach((e=>o(e)));break;case i.types.DELETE_INSERT:r.delete&&r.delete.forEach((e=>o(e))),r.insert&&r.insert.forEach((e=>o(e))),r.where&&o(r.where);break;case i.types.LOAD:case i.types.CLEAR:case i.types.CREATE:case i.types.DROP:case i.types.ADD:case i.types.MOVE:case i.types.COPY:break;default:throw new Error(`Unknown Operation type ${r.type}`)}}static mapOperation(e,t,r){let n=e,o=!0,c=!0;r=r||new a.default;const u=t[e.type];if(u){const t=u(e,r);n=t.result,o=t.recurse,c=!1!==t.copyMetadata}let l;if(c&&(n.metadata||e.metadata)&&(l={...n.metadata,...e.metadata}),!o)return l&&(n.metadata=l),n;let d=e=>s.mapOperation(e,t,r);switch(n.type){case i.types.ALT:n=r.createAlt(n.input.map(d));break;case i.types.ASK:n=r.createAsk(d(n.input));break;case i.types.BGP:n=r.createBgp(n.patterns.map(d));break;case i.types.CONSTRUCT:n=r.createConstruct(d(n.input),n.template.map(d));break;case i.types.DESCRIBE:n=r.createDescribe(d(n.input),n.terms);break;case i.types.DISTINCT:n=r.createDistinct(d(n.input));break;case i.types.EXPRESSION:n=s.mapExpression(n,t,r);break;case i.types.EXTEND:n=r.createExtend(d(n.input),n.variable,d(n.expression));break;case i.types.FILTER:n=r.createFilter(d(n.input),d(n.expression));break;case i.types.FROM:n=r.createFrom(d(n.input),[...n.default],[...n.named]);break;case i.types.GRAPH:n=r.createGraph(d(n.input),n.name);break;case i.types.GROUP:n=r.createGroup(d(n.input),[].concat(n.variables),n.aggregates.map(d));break;case i.types.INV:n=r.createInv(d(n.path));break;case i.types.JOIN:n=r.createJoin(n.input.map(d));break;case i.types.LEFT_JOIN:n=r.createLeftJoin(d(n.input[0]),d(n.input[1]),n.expression?d(n.expression):void 0);break;case i.types.LINK:n=r.createLink(n.iri);break;case i.types.MINUS:n=r.createMinus(d(n.input[0]),d(n.input[1]));break;case i.types.NOP:n=r.createNop();break;case i.types.NPS:n=r.createNps([].concat(n.iris));break;case i.types.ONE_OR_MORE_PATH:n=r.createOneOrMorePath(d(n.path));break;case i.types.ORDER_BY:n=r.createOrderBy(d(n.input),n.expressions.map(d));break;case i.types.PATH:n=r.createPath(n.subject,d(n.predicate),n.object,n.graph);break;case i.types.PATTERN:n=r.createPattern(n.subject,n.predicate,n.object,n.graph);break;case i.types.PROJECT:n=r.createProject(d(n.input),[...n.variables]);break;case i.types.REDUCED:n=r.createReduced(d(n.input));break;case i.types.SEQ:n=r.createSeq(n.input.map(d));break;case i.types.SERVICE:n=r.createService(d(n.input),n.name,n.silent);break;case i.types.SLICE:n=r.createSlice(d(n.input),n.start,n.length);break;case i.types.UNION:n=r.createUnion(n.input.map(d));break;case i.types.VALUES:n=r.createValues([].concat(n.variables),n.bindings.map((e=>Object.assign({},e))));break;case i.types.ZERO_OR_MORE_PATH:n=r.createZeroOrMorePath(d(n.path));break;case i.types.ZERO_OR_ONE_PATH:n=r.createZeroOrOnePath(d(n.path));break;case i.types.COMPOSITE_UPDATE:n=r.createCompositeUpdate(n.updates.map(d));break;case i.types.DELETE_INSERT:n=r.createDeleteInsert(n.delete?n.delete.map(d):void 0,n.insert?n.insert.map(d):void 0,n.where?d(n.where):void 0);break;case i.types.LOAD:n=r.createLoad(n.source,n.destination,n.silent);break;case i.types.CLEAR:n=r.createClear(n.source,n.silent);break;case i.types.CREATE:n=r.createCreate(n.source,n.silent);break;case i.types.DROP:n=r.createDrop(n.source,n.silent);break;case i.types.ADD:n=r.createAdd(n.source,n.destination);break;case i.types.MOVE:n=r.createMove(n.source,n.destination);break;case i.types.COPY:n=r.createCopy(n.source,n.destination);break;default:throw new Error(`Unknown Operation type ${n.type}`)}return l&&(n.metadata=l),n}static mapExpression(e,t,r){let n=e,o=!0;r=r||new a.default;const c=t[e.expressionType];if(c&&({result:n,recurse:o}=c(e,r)),!o)return n;let u=e=>s.mapOperation(e,t,r);switch(e.expressionType){case i.expressionTypes.AGGREGATE:return e.variable?r.createBoundAggregate(e.variable,e.aggregator,u(e.expression),e.distinct,e.separator):r.createAggregateExpression(e.aggregator,u(e.expression),e.distinct,e.separator);case i.expressionTypes.EXISTENCE:return r.createExistenceExpression(e.not,u(e.input));case i.expressionTypes.NAMED:return r.createNamedExpression(e.name,e.args.map(u));case i.expressionTypes.OPERATOR:return r.createOperatorExpression(e.operator,e.args.map(u));case i.expressionTypes.TERM:return r.createTermExpression(e.term);case i.expressionTypes.WILDCARD:return r.createWildcardExpression();default:throw new Error(`Unknown Expression type ${e.expressionType}`)}}static cloneOperation(e){return s.mapOperation(e,{})}static cloneExpression(e){return s.mapExpression(e,{})}static createUniqueVariable(e,t,r){let n=0,i=e;for(;t[i];)i=`${e}${n++}`;return r.variable(i)}static isSimpleTerm(e){return void 0!==e.termType&&"Quad"!==e.termType&&"Wildcard"!==e.termType}static isQuad(e){return"Quad"===e.termType}static hasQuadVariables(e){return(0,o.someTermsNested)(e,(e=>"Variable"===e.termType))}static isWildcard(e){return"Wildcard"===e.termType}}t.default=s},44897:(e,t,r)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.printError=w,t.GraphQLError=void 0;var i,a=(i=r(78582))&&i.__esModule?i:{default:i},o=r(28189),s=r(4251),c=r(90354);function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function d(e,t){for(var r=0;r0},name:{enumerable:!1},nodes:{enumerable:!1},source:{enumerable:!1},positions:{enumerable:!1},originalError:{enumerable:!1}}),null!=o&&o.stack?(Object.defineProperty(h(b),"stack",{value:o.stack,writable:!0,configurable:!0}),p(b)):(Error.captureStackTrace?Error.captureStackTrace(h(b),f):Object.defineProperty(h(b),"stack",{value:Error().stack,writable:!0,configurable:!0}),b)}return n=f,(i=[{key:"toString",value:function(){return w(this)}},{key:o.SYMBOL_TO_STRING_TAG,get:function(){return"Object"}}])&&d(n.prototype,i),f}(f(Error));function _(e){return void 0===e||0===e.length?void 0:e}function w(e){var t=e.message;if(e.nodes)for(var r=0,n=e.nodes;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.syntaxError=function(e,t,r){return new n.GraphQLError("Syntax Error: ".concat(r),void 0,e,[t])};var n=r(44897)},44077:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.prototype.toJSON;"function"==typeof t||(0,n.default)(0),e.prototype.inspect=t,i.default&&(e.prototype[i.default]=t)};var n=a(r(81880)),i=a(r(37020));function a(e){return e&&e.__esModule?e:{default:e}}},65269:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(!Boolean(e))throw new Error(t)}},23216:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return c(e,[])};var n,i=(n=r(37020))&&n.__esModule?n:{default:n};function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}var o=10,s=2;function c(e,t){switch(a(e)){case"string":return JSON.stringify(e);case"function":return e.name?"[function ".concat(e.name,"]"):"[function]";case"object":return null===e?"null":function(e,t){if(-1!==t.indexOf(e))return"[Circular]";var r=[].concat(t,[e]),n=function(e){var t=e[String(i.default)];return"function"==typeof t?t:"function"==typeof e.inspect?e.inspect:void 0}(e);if(void 0!==n){var a=n.call(e);if(a!==e)return"string"==typeof a?a:c(a,r)}else if(Array.isArray(e))return function(e,t){if(0===e.length)return"[]";if(t.length>s)return"[Array]";for(var r=Math.min(o,e.length),n=e.length-r,i=[],a=0;a1&&i.push("... ".concat(n," more items")),"["+i.join(", ")+"]"}(e,r);return function(e,t){var r=Object.keys(e);return 0===r.length?"{}":t.length>s?"["+function(e){var t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if("Object"===t&&"function"==typeof e.constructor){var r=e.constructor.name;if("string"==typeof r&&""!==r)return r}return t}(e)+"]":"{ "+r.map((function(r){return r+": "+c(e[r],t)})).join(", ")+" }"}(e,r)}(e,t);default:return String(e)}}},83588:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,(n=r(23216))&&n.__esModule;t.default=function(e,t){return e instanceof t}},81880:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(!Boolean(e))throw new Error(null!=t?t:"Unexpected invariant triggered.")}},78582:(e,t)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return"object"==r(e)&&null!==e}},37020:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):void 0;t.default=r},93378:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isNode=function(e){return null!=e&&"string"==typeof e.kind},t.Token=t.Location=void 0;var n,i=(n=r(44077))&&n.__esModule?n:{default:n},a=function(){function e(e,t,r){this.start=e.start,this.end=t.end,this.startToken=e,this.endToken=t,this.source=r}return e.prototype.toJSON=function(){return{start:this.start,end:this.end}},e}();t.Location=a,(0,i.default)(a);var o=function(){function e(e,t,r,n,i,a,o){this.kind=e,this.start=t,this.end=r,this.line=n,this.column=i,this.value=o,this.prev=a,this.next=null}return e.prototype.toJSON=function(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}},e}();t.Token=o,(0,i.default)(o)},4758:(e,t)=>{"use strict";function r(e){for(var t=0;to&&r(t[s-1]);)--s;return t.slice(o,s).join("\n")},t.getBlockStringIndentation=n,t.printBlockString=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=-1===e.indexOf("\n"),i=" "===e[0]||"\t"===e[0],a='"'===e[e.length-1],o="\\"===e[e.length-1],s=!n||a||o||r,c="";return!s||n&&i||(c+="\n"+t),c+=t?e.replace(/\n/g,"\n"+t):e,s&&(c+="\n"),'"""'+c.replace(/"""/g,'\\"""')+'"""'}},23684:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveLocation=void 0;var r=Object.freeze({QUERY:"QUERY",MUTATION:"MUTATION",SUBSCRIPTION:"SUBSCRIPTION",FIELD:"FIELD",FRAGMENT_DEFINITION:"FRAGMENT_DEFINITION",FRAGMENT_SPREAD:"FRAGMENT_SPREAD",INLINE_FRAGMENT:"INLINE_FRAGMENT",VARIABLE_DEFINITION:"VARIABLE_DEFINITION",SCHEMA:"SCHEMA",SCALAR:"SCALAR",OBJECT:"OBJECT",FIELD_DEFINITION:"FIELD_DEFINITION",ARGUMENT_DEFINITION:"ARGUMENT_DEFINITION",INTERFACE:"INTERFACE",UNION:"UNION",ENUM:"ENUM",ENUM_VALUE:"ENUM_VALUE",INPUT_OBJECT:"INPUT_OBJECT",INPUT_FIELD_DEFINITION:"INPUT_FIELD_DEFINITION"});t.DirectiveLocation=r},44330:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Source",{enumerable:!0,get:function(){return n.Source}}),Object.defineProperty(t,"getLocation",{enumerable:!0,get:function(){return i.getLocation}}),Object.defineProperty(t,"printLocation",{enumerable:!0,get:function(){return a.printLocation}}),Object.defineProperty(t,"printSourceLocation",{enumerable:!0,get:function(){return a.printSourceLocation}}),Object.defineProperty(t,"Kind",{enumerable:!0,get:function(){return o.Kind}}),Object.defineProperty(t,"TokenKind",{enumerable:!0,get:function(){return s.TokenKind}}),Object.defineProperty(t,"Lexer",{enumerable:!0,get:function(){return c.Lexer}}),Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return u.parse}}),Object.defineProperty(t,"parseValue",{enumerable:!0,get:function(){return u.parseValue}}),Object.defineProperty(t,"parseType",{enumerable:!0,get:function(){return u.parseType}}),Object.defineProperty(t,"print",{enumerable:!0,get:function(){return l.print}}),Object.defineProperty(t,"visit",{enumerable:!0,get:function(){return d.visit}}),Object.defineProperty(t,"visitInParallel",{enumerable:!0,get:function(){return d.visitInParallel}}),Object.defineProperty(t,"getVisitFn",{enumerable:!0,get:function(){return d.getVisitFn}}),Object.defineProperty(t,"BREAK",{enumerable:!0,get:function(){return d.BREAK}}),Object.defineProperty(t,"Location",{enumerable:!0,get:function(){return p.Location}}),Object.defineProperty(t,"Token",{enumerable:!0,get:function(){return p.Token}}),Object.defineProperty(t,"isDefinitionNode",{enumerable:!0,get:function(){return h.isDefinitionNode}}),Object.defineProperty(t,"isExecutableDefinitionNode",{enumerable:!0,get:function(){return h.isExecutableDefinitionNode}}),Object.defineProperty(t,"isSelectionNode",{enumerable:!0,get:function(){return h.isSelectionNode}}),Object.defineProperty(t,"isValueNode",{enumerable:!0,get:function(){return h.isValueNode}}),Object.defineProperty(t,"isTypeNode",{enumerable:!0,get:function(){return h.isTypeNode}}),Object.defineProperty(t,"isTypeSystemDefinitionNode",{enumerable:!0,get:function(){return h.isTypeSystemDefinitionNode}}),Object.defineProperty(t,"isTypeDefinitionNode",{enumerable:!0,get:function(){return h.isTypeDefinitionNode}}),Object.defineProperty(t,"isTypeSystemExtensionNode",{enumerable:!0,get:function(){return h.isTypeSystemExtensionNode}}),Object.defineProperty(t,"isTypeExtensionNode",{enumerable:!0,get:function(){return h.isTypeExtensionNode}}),Object.defineProperty(t,"DirectiveLocation",{enumerable:!0,get:function(){return f.DirectiveLocation}});var n=r(76241),i=r(4251),a=r(90354),o=r(12057),s=r(58053),c=r(4524),u=r(42275),l=r(43230),d=r(48048),p=r(93378),h=r(49674),f=r(23684)},12057:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Kind=void 0;var r=Object.freeze({NAME:"Name",DOCUMENT:"Document",OPERATION_DEFINITION:"OperationDefinition",VARIABLE_DEFINITION:"VariableDefinition",SELECTION_SET:"SelectionSet",FIELD:"Field",ARGUMENT:"Argument",FRAGMENT_SPREAD:"FragmentSpread",INLINE_FRAGMENT:"InlineFragment",FRAGMENT_DEFINITION:"FragmentDefinition",VARIABLE:"Variable",INT:"IntValue",FLOAT:"FloatValue",STRING:"StringValue",BOOLEAN:"BooleanValue",NULL:"NullValue",ENUM:"EnumValue",LIST:"ListValue",OBJECT:"ObjectValue",OBJECT_FIELD:"ObjectField",DIRECTIVE:"Directive",NAMED_TYPE:"NamedType",LIST_TYPE:"ListType",NON_NULL_TYPE:"NonNullType",SCHEMA_DEFINITION:"SchemaDefinition",OPERATION_TYPE_DEFINITION:"OperationTypeDefinition",SCALAR_TYPE_DEFINITION:"ScalarTypeDefinition",OBJECT_TYPE_DEFINITION:"ObjectTypeDefinition",FIELD_DEFINITION:"FieldDefinition",INPUT_VALUE_DEFINITION:"InputValueDefinition",INTERFACE_TYPE_DEFINITION:"InterfaceTypeDefinition",UNION_TYPE_DEFINITION:"UnionTypeDefinition",ENUM_TYPE_DEFINITION:"EnumTypeDefinition",ENUM_VALUE_DEFINITION:"EnumValueDefinition",INPUT_OBJECT_TYPE_DEFINITION:"InputObjectTypeDefinition",DIRECTIVE_DEFINITION:"DirectiveDefinition",SCHEMA_EXTENSION:"SchemaExtension",SCALAR_TYPE_EXTENSION:"ScalarTypeExtension",OBJECT_TYPE_EXTENSION:"ObjectTypeExtension",INTERFACE_TYPE_EXTENSION:"InterfaceTypeExtension",UNION_TYPE_EXTENSION:"UnionTypeExtension",ENUM_TYPE_EXTENSION:"EnumTypeExtension",INPUT_OBJECT_TYPE_EXTENSION:"InputObjectTypeExtension"});t.Kind=r},4524:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isPunctuatorTokenKind=function(e){return e===a.TokenKind.BANG||e===a.TokenKind.DOLLAR||e===a.TokenKind.AMP||e===a.TokenKind.PAREN_L||e===a.TokenKind.PAREN_R||e===a.TokenKind.SPREAD||e===a.TokenKind.COLON||e===a.TokenKind.EQUALS||e===a.TokenKind.AT||e===a.TokenKind.BRACKET_L||e===a.TokenKind.BRACKET_R||e===a.TokenKind.BRACE_L||e===a.TokenKind.PIPE||e===a.TokenKind.BRACE_R},t.Lexer=void 0;var n=r(40629),i=r(93378),a=r(58053),o=r(4758),s=function(){function e(e){var t=new i.Token(a.TokenKind.SOF,0,0,0,0,null);this.source=e,this.lastToken=t,this.token=t,this.line=1,this.lineStart=0}var t=e.prototype;return t.advance=function(){return this.lastToken=this.token,this.token=this.lookahead()},t.lookahead=function(){var e=this.token;if(e.kind!==a.TokenKind.EOF)do{var t;e=null!==(t=e.next)&&void 0!==t?t:e.next=u(this,e)}while(e.kind===a.TokenKind.COMMENT);return e},e}();function c(e){return isNaN(e)?a.TokenKind.EOF:e<127?JSON.stringify(String.fromCharCode(e)):'"\\u'.concat(("00"+e.toString(16).toUpperCase()).slice(-4),'"')}function u(e,t){for(var r=e.source,o=r.body,s=o.length,c=t.end;c31||9===s));return new i.Token(a.TokenKind.COMMENT,t,u,r,n,o,c.slice(t+1,u))}function p(e,t,r,o,s,u){var l=e.body,d=r,p=t,f=!1;if(45===d&&(d=l.charCodeAt(++p)),48===d){if((d=l.charCodeAt(++p))>=48&&d<=57)throw(0,n.syntaxError)(e,p,"Invalid number, unexpected digit after 0: ".concat(c(d),"."))}else p=h(e,p,d),d=l.charCodeAt(p);if(46===d&&(f=!0,d=l.charCodeAt(++p),p=h(e,p,d),d=l.charCodeAt(p)),69!==d&&101!==d||(f=!0,43!==(d=l.charCodeAt(++p))&&45!==d||(d=l.charCodeAt(++p)),p=h(e,p,d),d=l.charCodeAt(p)),46===d||function(e){return 95===e||e>=65&&e<=90||e>=97&&e<=122}(d))throw(0,n.syntaxError)(e,p,"Invalid number, expected digit but got: ".concat(c(d),"."));return new i.Token(f?a.TokenKind.FLOAT:a.TokenKind.INT,t,p,o,s,u,l.slice(t,p))}function h(e,t,r){var i=e.body,a=t,o=r;if(o>=48&&o<=57){do{o=i.charCodeAt(++a)}while(o>=48&&o<=57);return a}throw(0,n.syntaxError)(e,a,"Invalid number, expected digit but got: ".concat(c(o),"."))}function f(e,t,r,o,s){for(var u,l,d,p,h=e.body,f=t+1,y=f,m=0,b="";f=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}function m(e,t,r,n,o){for(var s=e.body,c=s.length,u=t+1,l=0;u!==c&&!isNaN(l=s.charCodeAt(u))&&(95===l||l>=48&&l<=57||l>=65&&l<=90||l>=97&&l<=122);)++u;return new i.Token(a.TokenKind.NAME,t,u,r,n,o,s.slice(t,u))}t.Lexer=s},4251:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getLocation=function(e,t){for(var r,n=/\r\n|[\n\r]/g,i=1,a=t+1;(r=n.exec(e.body))&&r.index{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=function(e,t){return new l(e,t).parseDocument()},t.parseValue=function(e,t){var r=new l(e,t);r.expectToken(o.TokenKind.SOF);var n=r.parseValueLiteral(!1);return r.expectToken(o.TokenKind.EOF),n},t.parseType=function(e,t){var r=new l(e,t);r.expectToken(o.TokenKind.SOF);var n=r.parseTypeReference();return r.expectToken(o.TokenKind.EOF),n},t.Parser=void 0;var n=r(40629),i=r(12057),a=r(93378),o=r(58053),s=r(76241),c=r(23684),u=r(4524),l=function(){function e(e,t){var r=(0,s.isSource)(e)?e:new s.Source(e);this._lexer=new u.Lexer(r),this._options=t}var t=e.prototype;return t.parseName=function(){var e=this.expectToken(o.TokenKind.NAME);return{kind:i.Kind.NAME,value:e.value,loc:this.loc(e)}},t.parseDocument=function(){var e=this._lexer.token;return{kind:i.Kind.DOCUMENT,definitions:this.many(o.TokenKind.SOF,this.parseDefinition,o.TokenKind.EOF),loc:this.loc(e)}},t.parseDefinition=function(){if(this.peek(o.TokenKind.NAME))switch(this._lexer.token.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"schema":case"scalar":case"type":case"interface":case"union":case"enum":case"input":case"directive":return this.parseTypeSystemDefinition();case"extend":return this.parseTypeSystemExtension()}else{if(this.peek(o.TokenKind.BRACE_L))return this.parseOperationDefinition();if(this.peekDescription())return this.parseTypeSystemDefinition()}throw this.unexpected()},t.parseOperationDefinition=function(){var e=this._lexer.token;if(this.peek(o.TokenKind.BRACE_L))return{kind:i.Kind.OPERATION_DEFINITION,operation:"query",name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet(),loc:this.loc(e)};var t,r=this.parseOperationType();return this.peek(o.TokenKind.NAME)&&(t=this.parseName()),{kind:i.Kind.OPERATION_DEFINITION,operation:r,name:t,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}},t.parseOperationType=function(){var e=this.expectToken(o.TokenKind.NAME);switch(e.value){case"query":return"query";case"mutation":return"mutation";case"subscription":return"subscription"}throw this.unexpected(e)},t.parseVariableDefinitions=function(){return this.optionalMany(o.TokenKind.PAREN_L,this.parseVariableDefinition,o.TokenKind.PAREN_R)},t.parseVariableDefinition=function(){var e=this._lexer.token;return{kind:i.Kind.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(o.TokenKind.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(o.TokenKind.EQUALS)?this.parseValueLiteral(!0):void 0,directives:this.parseDirectives(!0),loc:this.loc(e)}},t.parseVariable=function(){var e=this._lexer.token;return this.expectToken(o.TokenKind.DOLLAR),{kind:i.Kind.VARIABLE,name:this.parseName(),loc:this.loc(e)}},t.parseSelectionSet=function(){var e=this._lexer.token;return{kind:i.Kind.SELECTION_SET,selections:this.many(o.TokenKind.BRACE_L,this.parseSelection,o.TokenKind.BRACE_R),loc:this.loc(e)}},t.parseSelection=function(){return this.peek(o.TokenKind.SPREAD)?this.parseFragment():this.parseField()},t.parseField=function(){var e,t,r=this._lexer.token,n=this.parseName();return this.expectOptionalToken(o.TokenKind.COLON)?(e=n,t=this.parseName()):t=n,{kind:i.Kind.FIELD,alias:e,name:t,arguments:this.parseArguments(!1),directives:this.parseDirectives(!1),selectionSet:this.peek(o.TokenKind.BRACE_L)?this.parseSelectionSet():void 0,loc:this.loc(r)}},t.parseArguments=function(e){var t=e?this.parseConstArgument:this.parseArgument;return this.optionalMany(o.TokenKind.PAREN_L,t,o.TokenKind.PAREN_R)},t.parseArgument=function(){var e=this._lexer.token,t=this.parseName();return this.expectToken(o.TokenKind.COLON),{kind:i.Kind.ARGUMENT,name:t,value:this.parseValueLiteral(!1),loc:this.loc(e)}},t.parseConstArgument=function(){var e=this._lexer.token;return{kind:i.Kind.ARGUMENT,name:this.parseName(),value:(this.expectToken(o.TokenKind.COLON),this.parseValueLiteral(!0)),loc:this.loc(e)}},t.parseFragment=function(){var e=this._lexer.token;this.expectToken(o.TokenKind.SPREAD);var t=this.expectOptionalKeyword("on");return!t&&this.peek(o.TokenKind.NAME)?{kind:i.Kind.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1),loc:this.loc(e)}:{kind:i.Kind.INLINE_FRAGMENT,typeCondition:t?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}},t.parseFragmentDefinition=function(){var e,t=this._lexer.token;return this.expectKeyword("fragment"),!0===(null===(e=this._options)||void 0===e?void 0:e.experimentalFragmentVariables)?{kind:i.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(t)}:{kind:i.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(t)}},t.parseFragmentName=function(){if("on"===this._lexer.token.value)throw this.unexpected();return this.parseName()},t.parseValueLiteral=function(e){var t=this._lexer.token;switch(t.kind){case o.TokenKind.BRACKET_L:return this.parseList(e);case o.TokenKind.BRACE_L:return this.parseObject(e);case o.TokenKind.INT:return this._lexer.advance(),{kind:i.Kind.INT,value:t.value,loc:this.loc(t)};case o.TokenKind.FLOAT:return this._lexer.advance(),{kind:i.Kind.FLOAT,value:t.value,loc:this.loc(t)};case o.TokenKind.STRING:case o.TokenKind.BLOCK_STRING:return this.parseStringLiteral();case o.TokenKind.NAME:switch(this._lexer.advance(),t.value){case"true":return{kind:i.Kind.BOOLEAN,value:!0,loc:this.loc(t)};case"false":return{kind:i.Kind.BOOLEAN,value:!1,loc:this.loc(t)};case"null":return{kind:i.Kind.NULL,loc:this.loc(t)};default:return{kind:i.Kind.ENUM,value:t.value,loc:this.loc(t)}}case o.TokenKind.DOLLAR:if(!e)return this.parseVariable()}throw this.unexpected()},t.parseStringLiteral=function(){var e=this._lexer.token;return this._lexer.advance(),{kind:i.Kind.STRING,value:e.value,block:e.kind===o.TokenKind.BLOCK_STRING,loc:this.loc(e)}},t.parseList=function(e){var t=this,r=this._lexer.token;return{kind:i.Kind.LIST,values:this.any(o.TokenKind.BRACKET_L,(function(){return t.parseValueLiteral(e)}),o.TokenKind.BRACKET_R),loc:this.loc(r)}},t.parseObject=function(e){var t=this,r=this._lexer.token;return{kind:i.Kind.OBJECT,fields:this.any(o.TokenKind.BRACE_L,(function(){return t.parseObjectField(e)}),o.TokenKind.BRACE_R),loc:this.loc(r)}},t.parseObjectField=function(e){var t=this._lexer.token,r=this.parseName();return this.expectToken(o.TokenKind.COLON),{kind:i.Kind.OBJECT_FIELD,name:r,value:this.parseValueLiteral(e),loc:this.loc(t)}},t.parseDirectives=function(e){for(var t=[];this.peek(o.TokenKind.AT);)t.push(this.parseDirective(e));return t},t.parseDirective=function(e){var t=this._lexer.token;return this.expectToken(o.TokenKind.AT),{kind:i.Kind.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(e),loc:this.loc(t)}},t.parseTypeReference=function(){var e,t=this._lexer.token;return this.expectOptionalToken(o.TokenKind.BRACKET_L)?(e=this.parseTypeReference(),this.expectToken(o.TokenKind.BRACKET_R),e={kind:i.Kind.LIST_TYPE,type:e,loc:this.loc(t)}):e=this.parseNamedType(),this.expectOptionalToken(o.TokenKind.BANG)?{kind:i.Kind.NON_NULL_TYPE,type:e,loc:this.loc(t)}:e},t.parseNamedType=function(){var e=this._lexer.token;return{kind:i.Kind.NAMED_TYPE,name:this.parseName(),loc:this.loc(e)}},t.parseTypeSystemDefinition=function(){var e=this.peekDescription()?this._lexer.lookahead():this._lexer.token;if(e.kind===o.TokenKind.NAME)switch(e.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}throw this.unexpected(e)},t.peekDescription=function(){return this.peek(o.TokenKind.STRING)||this.peek(o.TokenKind.BLOCK_STRING)},t.parseDescription=function(){if(this.peekDescription())return this.parseStringLiteral()},t.parseSchemaDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("schema");var r=this.parseDirectives(!0),n=this.many(o.TokenKind.BRACE_L,this.parseOperationTypeDefinition,o.TokenKind.BRACE_R);return{kind:i.Kind.SCHEMA_DEFINITION,description:t,directives:r,operationTypes:n,loc:this.loc(e)}},t.parseOperationTypeDefinition=function(){var e=this._lexer.token,t=this.parseOperationType();this.expectToken(o.TokenKind.COLON);var r=this.parseNamedType();return{kind:i.Kind.OPERATION_TYPE_DEFINITION,operation:t,type:r,loc:this.loc(e)}},t.parseScalarTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("scalar");var r=this.parseName(),n=this.parseDirectives(!0);return{kind:i.Kind.SCALAR_TYPE_DEFINITION,description:t,name:r,directives:n,loc:this.loc(e)}},t.parseObjectTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("type");var r=this.parseName(),n=this.parseImplementsInterfaces(),a=this.parseDirectives(!0),o=this.parseFieldsDefinition();return{kind:i.Kind.OBJECT_TYPE_DEFINITION,description:t,name:r,interfaces:n,directives:a,fields:o,loc:this.loc(e)}},t.parseImplementsInterfaces=function(){var e;if(!this.expectOptionalKeyword("implements"))return[];if(!0===(null===(e=this._options)||void 0===e?void 0:e.allowLegacySDLImplementsInterfaces)){var t=[];this.expectOptionalToken(o.TokenKind.AMP);do{t.push(this.parseNamedType())}while(this.expectOptionalToken(o.TokenKind.AMP)||this.peek(o.TokenKind.NAME));return t}return this.delimitedMany(o.TokenKind.AMP,this.parseNamedType)},t.parseFieldsDefinition=function(){var e;return!0===(null===(e=this._options)||void 0===e?void 0:e.allowLegacySDLEmptyFields)&&this.peek(o.TokenKind.BRACE_L)&&this._lexer.lookahead().kind===o.TokenKind.BRACE_R?(this._lexer.advance(),this._lexer.advance(),[]):this.optionalMany(o.TokenKind.BRACE_L,this.parseFieldDefinition,o.TokenKind.BRACE_R)},t.parseFieldDefinition=function(){var e=this._lexer.token,t=this.parseDescription(),r=this.parseName(),n=this.parseArgumentDefs();this.expectToken(o.TokenKind.COLON);var a=this.parseTypeReference(),s=this.parseDirectives(!0);return{kind:i.Kind.FIELD_DEFINITION,description:t,name:r,arguments:n,type:a,directives:s,loc:this.loc(e)}},t.parseArgumentDefs=function(){return this.optionalMany(o.TokenKind.PAREN_L,this.parseInputValueDef,o.TokenKind.PAREN_R)},t.parseInputValueDef=function(){var e=this._lexer.token,t=this.parseDescription(),r=this.parseName();this.expectToken(o.TokenKind.COLON);var n,a=this.parseTypeReference();this.expectOptionalToken(o.TokenKind.EQUALS)&&(n=this.parseValueLiteral(!0));var s=this.parseDirectives(!0);return{kind:i.Kind.INPUT_VALUE_DEFINITION,description:t,name:r,type:a,defaultValue:n,directives:s,loc:this.loc(e)}},t.parseInterfaceTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("interface");var r=this.parseName(),n=this.parseImplementsInterfaces(),a=this.parseDirectives(!0),o=this.parseFieldsDefinition();return{kind:i.Kind.INTERFACE_TYPE_DEFINITION,description:t,name:r,interfaces:n,directives:a,fields:o,loc:this.loc(e)}},t.parseUnionTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("union");var r=this.parseName(),n=this.parseDirectives(!0),a=this.parseUnionMemberTypes();return{kind:i.Kind.UNION_TYPE_DEFINITION,description:t,name:r,directives:n,types:a,loc:this.loc(e)}},t.parseUnionMemberTypes=function(){return this.expectOptionalToken(o.TokenKind.EQUALS)?this.delimitedMany(o.TokenKind.PIPE,this.parseNamedType):[]},t.parseEnumTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("enum");var r=this.parseName(),n=this.parseDirectives(!0),a=this.parseEnumValuesDefinition();return{kind:i.Kind.ENUM_TYPE_DEFINITION,description:t,name:r,directives:n,values:a,loc:this.loc(e)}},t.parseEnumValuesDefinition=function(){return this.optionalMany(o.TokenKind.BRACE_L,this.parseEnumValueDefinition,o.TokenKind.BRACE_R)},t.parseEnumValueDefinition=function(){var e=this._lexer.token,t=this.parseDescription(),r=this.parseName(),n=this.parseDirectives(!0);return{kind:i.Kind.ENUM_VALUE_DEFINITION,description:t,name:r,directives:n,loc:this.loc(e)}},t.parseInputObjectTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("input");var r=this.parseName(),n=this.parseDirectives(!0),a=this.parseInputFieldsDefinition();return{kind:i.Kind.INPUT_OBJECT_TYPE_DEFINITION,description:t,name:r,directives:n,fields:a,loc:this.loc(e)}},t.parseInputFieldsDefinition=function(){return this.optionalMany(o.TokenKind.BRACE_L,this.parseInputValueDef,o.TokenKind.BRACE_R)},t.parseTypeSystemExtension=function(){var e=this._lexer.lookahead();if(e.kind===o.TokenKind.NAME)switch(e.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(e)},t.parseSchemaExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");var t=this.parseDirectives(!0),r=this.optionalMany(o.TokenKind.BRACE_L,this.parseOperationTypeDefinition,o.TokenKind.BRACE_R);if(0===t.length&&0===r.length)throw this.unexpected();return{kind:i.Kind.SCHEMA_EXTENSION,directives:t,operationTypes:r,loc:this.loc(e)}},t.parseScalarTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");var t=this.parseName(),r=this.parseDirectives(!0);if(0===r.length)throw this.unexpected();return{kind:i.Kind.SCALAR_TYPE_EXTENSION,name:t,directives:r,loc:this.loc(e)}},t.parseObjectTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");var t=this.parseName(),r=this.parseImplementsInterfaces(),n=this.parseDirectives(!0),a=this.parseFieldsDefinition();if(0===r.length&&0===n.length&&0===a.length)throw this.unexpected();return{kind:i.Kind.OBJECT_TYPE_EXTENSION,name:t,interfaces:r,directives:n,fields:a,loc:this.loc(e)}},t.parseInterfaceTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");var t=this.parseName(),r=this.parseImplementsInterfaces(),n=this.parseDirectives(!0),a=this.parseFieldsDefinition();if(0===r.length&&0===n.length&&0===a.length)throw this.unexpected();return{kind:i.Kind.INTERFACE_TYPE_EXTENSION,name:t,interfaces:r,directives:n,fields:a,loc:this.loc(e)}},t.parseUnionTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");var t=this.parseName(),r=this.parseDirectives(!0),n=this.parseUnionMemberTypes();if(0===r.length&&0===n.length)throw this.unexpected();return{kind:i.Kind.UNION_TYPE_EXTENSION,name:t,directives:r,types:n,loc:this.loc(e)}},t.parseEnumTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");var t=this.parseName(),r=this.parseDirectives(!0),n=this.parseEnumValuesDefinition();if(0===r.length&&0===n.length)throw this.unexpected();return{kind:i.Kind.ENUM_TYPE_EXTENSION,name:t,directives:r,values:n,loc:this.loc(e)}},t.parseInputObjectTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");var t=this.parseName(),r=this.parseDirectives(!0),n=this.parseInputFieldsDefinition();if(0===r.length&&0===n.length)throw this.unexpected();return{kind:i.Kind.INPUT_OBJECT_TYPE_EXTENSION,name:t,directives:r,fields:n,loc:this.loc(e)}},t.parseDirectiveDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("directive"),this.expectToken(o.TokenKind.AT);var r=this.parseName(),n=this.parseArgumentDefs(),a=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");var s=this.parseDirectiveLocations();return{kind:i.Kind.DIRECTIVE_DEFINITION,description:t,name:r,arguments:n,repeatable:a,locations:s,loc:this.loc(e)}},t.parseDirectiveLocations=function(){return this.delimitedMany(o.TokenKind.PIPE,this.parseDirectiveLocation)},t.parseDirectiveLocation=function(){var e=this._lexer.token,t=this.parseName();if(void 0!==c.DirectiveLocation[t.value])return t;throw this.unexpected(e)},t.loc=function(e){var t;if(!0!==(null===(t=this._options)||void 0===t?void 0:t.noLocation))return new a.Location(e,this._lexer.lastToken,this._lexer.source)},t.peek=function(e){return this._lexer.token.kind===e},t.expectToken=function(e){var t=this._lexer.token;if(t.kind===e)return this._lexer.advance(),t;throw(0,n.syntaxError)(this._lexer.source,t.start,"Expected ".concat(p(e),", found ").concat(d(t),"."))},t.expectOptionalToken=function(e){var t=this._lexer.token;if(t.kind===e)return this._lexer.advance(),t},t.expectKeyword=function(e){var t=this._lexer.token;if(t.kind!==o.TokenKind.NAME||t.value!==e)throw(0,n.syntaxError)(this._lexer.source,t.start,'Expected "'.concat(e,'", found ').concat(d(t),"."));this._lexer.advance()},t.expectOptionalKeyword=function(e){var t=this._lexer.token;return t.kind===o.TokenKind.NAME&&t.value===e&&(this._lexer.advance(),!0)},t.unexpected=function(e){var t=null!=e?e:this._lexer.token;return(0,n.syntaxError)(this._lexer.source,t.start,"Unexpected ".concat(d(t),"."))},t.any=function(e,t,r){this.expectToken(e);for(var n=[];!this.expectOptionalToken(r);)n.push(t.call(this));return n},t.optionalMany=function(e,t,r){if(this.expectOptionalToken(e)){var n=[];do{n.push(t.call(this))}while(!this.expectOptionalToken(r));return n}return[]},t.many=function(e,t,r){this.expectToken(e);var n=[];do{n.push(t.call(this))}while(!this.expectOptionalToken(r));return n},t.delimitedMany=function(e,t){this.expectOptionalToken(e);var r=[];do{r.push(t.call(this))}while(this.expectOptionalToken(e));return r},e}();function d(e){var t=e.value;return p(e.kind)+(null!=t?' "'.concat(t,'"'):"")}function p(e){return(0,u.isPunctuatorTokenKind)(e)?'"'.concat(e,'"'):e}t.Parser=l},49674:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isDefinitionNode=function(e){return i(e)||a(e)||s(e)},t.isExecutableDefinitionNode=i,t.isSelectionNode=function(e){return e.kind===n.Kind.FIELD||e.kind===n.Kind.FRAGMENT_SPREAD||e.kind===n.Kind.INLINE_FRAGMENT},t.isValueNode=function(e){return e.kind===n.Kind.VARIABLE||e.kind===n.Kind.INT||e.kind===n.Kind.FLOAT||e.kind===n.Kind.STRING||e.kind===n.Kind.BOOLEAN||e.kind===n.Kind.NULL||e.kind===n.Kind.ENUM||e.kind===n.Kind.LIST||e.kind===n.Kind.OBJECT},t.isTypeNode=function(e){return e.kind===n.Kind.NAMED_TYPE||e.kind===n.Kind.LIST_TYPE||e.kind===n.Kind.NON_NULL_TYPE},t.isTypeSystemDefinitionNode=a,t.isTypeDefinitionNode=o,t.isTypeSystemExtensionNode=s,t.isTypeExtensionNode=c;var n=r(12057);function i(e){return e.kind===n.Kind.OPERATION_DEFINITION||e.kind===n.Kind.FRAGMENT_DEFINITION}function a(e){return e.kind===n.Kind.SCHEMA_DEFINITION||o(e)||e.kind===n.Kind.DIRECTIVE_DEFINITION}function o(e){return e.kind===n.Kind.SCALAR_TYPE_DEFINITION||e.kind===n.Kind.OBJECT_TYPE_DEFINITION||e.kind===n.Kind.INTERFACE_TYPE_DEFINITION||e.kind===n.Kind.UNION_TYPE_DEFINITION||e.kind===n.Kind.ENUM_TYPE_DEFINITION||e.kind===n.Kind.INPUT_OBJECT_TYPE_DEFINITION}function s(e){return e.kind===n.Kind.SCHEMA_EXTENSION||c(e)}function c(e){return e.kind===n.Kind.SCALAR_TYPE_EXTENSION||e.kind===n.Kind.OBJECT_TYPE_EXTENSION||e.kind===n.Kind.INTERFACE_TYPE_EXTENSION||e.kind===n.Kind.UNION_TYPE_EXTENSION||e.kind===n.Kind.ENUM_TYPE_EXTENSION||e.kind===n.Kind.INPUT_OBJECT_TYPE_EXTENSION}},90354:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.printLocation=function(e){return i(e.source,(0,n.getLocation)(e.source,e.start))},t.printSourceLocation=i;var n=r(4251);function i(e,t){var r=e.locationOffset.column-1,n=o(r)+e.body,i=t.line-1,s=e.locationOffset.line-1,c=t.line+s,u=1===t.line?r:0,l=t.column+u,d="".concat(e.name,":").concat(c,":").concat(l,"\n"),p=n.split(/\r\n|[\n\r]/g),h=p[i];if(h.length>120){for(var f=Math.floor(l/80),y=l%80,g=[],m=0;m{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.print=function(e){return(0,n.visit)(e,{leave:a})};var n=r(48048),i=r(4758),a={Name:function(e){return e.value},Variable:function(e){return"$"+e.name},Document:function(e){return s(e.definitions,"\n\n")+"\n"},OperationDefinition:function(e){var t=e.operation,r=e.name,n=u("(",s(e.variableDefinitions,", "),")"),i=s(e.directives," "),a=e.selectionSet;return r||i||n||"query"!==t?s([t,s([r,n]),i,a]," "):a},VariableDefinition:function(e){var t=e.variable,r=e.type,n=e.defaultValue,i=e.directives;return t+": "+r+u(" = ",n)+u(" ",s(i," "))},SelectionSet:function(e){return c(e.selections)},Field:function(e){var t=e.alias,r=e.name,n=e.arguments,i=e.directives,a=e.selectionSet,o=u("",t,": ")+r,c=o+u("(",s(n,", "),")");return c.length>80&&(c=o+u("(\n",l(s(n,"\n")),"\n)")),s([c,s(i," "),a]," ")},Argument:function(e){return e.name+": "+e.value},FragmentSpread:function(e){return"..."+e.name+u(" ",s(e.directives," "))},InlineFragment:function(e){var t=e.typeCondition,r=e.directives,n=e.selectionSet;return s(["...",u("on ",t),s(r," "),n]," ")},FragmentDefinition:function(e){var t=e.name,r=e.typeCondition,n=e.variableDefinitions,i=e.directives,a=e.selectionSet;return"fragment ".concat(t).concat(u("(",s(n,", "),")")," ")+"on ".concat(r," ").concat(u("",s(i," ")," "))+a},IntValue:function(e){return e.value},FloatValue:function(e){return e.value},StringValue:function(e,t){var r=e.value;return e.block?(0,i.printBlockString)(r,"description"===t?"":" "):JSON.stringify(r)},BooleanValue:function(e){return e.value?"true":"false"},NullValue:function(){return"null"},EnumValue:function(e){return e.value},ListValue:function(e){return"["+s(e.values,", ")+"]"},ObjectValue:function(e){return"{"+s(e.fields,", ")+"}"},ObjectField:function(e){return e.name+": "+e.value},Directive:function(e){return"@"+e.name+u("(",s(e.arguments,", "),")")},NamedType:function(e){return e.name},ListType:function(e){return"["+e.type+"]"},NonNullType:function(e){return e.type+"!"},SchemaDefinition:o((function(e){var t=e.directives,r=e.operationTypes;return s(["schema",s(t," "),c(r)]," ")})),OperationTypeDefinition:function(e){return e.operation+": "+e.type},ScalarTypeDefinition:o((function(e){return s(["scalar",e.name,s(e.directives," ")]," ")})),ObjectTypeDefinition:o((function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return s(["type",t,u("implements ",s(r," & ")),s(n," "),c(i)]," ")})),FieldDefinition:o((function(e){var t=e.name,r=e.arguments,n=e.type,i=e.directives;return t+(p(r)?u("(\n",l(s(r,"\n")),"\n)"):u("(",s(r,", "),")"))+": "+n+u(" ",s(i," "))})),InputValueDefinition:o((function(e){var t=e.name,r=e.type,n=e.defaultValue,i=e.directives;return s([t+": "+r,u("= ",n),s(i," ")]," ")})),InterfaceTypeDefinition:o((function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return s(["interface",t,u("implements ",s(r," & ")),s(n," "),c(i)]," ")})),UnionTypeDefinition:o((function(e){var t=e.name,r=e.directives,n=e.types;return s(["union",t,s(r," "),n&&0!==n.length?"= "+s(n," | "):""]," ")})),EnumTypeDefinition:o((function(e){var t=e.name,r=e.directives,n=e.values;return s(["enum",t,s(r," "),c(n)]," ")})),EnumValueDefinition:o((function(e){return s([e.name,s(e.directives," ")]," ")})),InputObjectTypeDefinition:o((function(e){var t=e.name,r=e.directives,n=e.fields;return s(["input",t,s(r," "),c(n)]," ")})),DirectiveDefinition:o((function(e){var t=e.name,r=e.arguments,n=e.repeatable,i=e.locations;return"directive @"+t+(p(r)?u("(\n",l(s(r,"\n")),"\n)"):u("(",s(r,", "),")"))+(n?" repeatable":"")+" on "+s(i," | ")})),SchemaExtension:function(e){var t=e.directives,r=e.operationTypes;return s(["extend schema",s(t," "),c(r)]," ")},ScalarTypeExtension:function(e){return s(["extend scalar",e.name,s(e.directives," ")]," ")},ObjectTypeExtension:function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return s(["extend type",t,u("implements ",s(r," & ")),s(n," "),c(i)]," ")},InterfaceTypeExtension:function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return s(["extend interface",t,u("implements ",s(r," & ")),s(n," "),c(i)]," ")},UnionTypeExtension:function(e){var t=e.name,r=e.directives,n=e.types;return s(["extend union",t,s(r," "),n&&0!==n.length?"= "+s(n," | "):""]," ")},EnumTypeExtension:function(e){var t=e.name,r=e.directives,n=e.values;return s(["extend enum",t,s(r," "),c(n)]," ")},InputObjectTypeExtension:function(e){var t=e.name,r=e.directives,n=e.fields;return s(["extend input",t,s(r," "),c(n)]," ")}};function o(e){return function(t){return s([t.description,e(t)],"\n")}}function s(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return null!==(t=null==e?void 0:e.filter((function(e){return e})).join(r))&&void 0!==t?t:""}function c(e){return u("{\n",l(s(e,"\n")),"\n}")}function u(e,t){return null!=t&&""!==t?e+t+(arguments.length>2&&void 0!==arguments[2]?arguments[2]:""):""}function l(e){return u(" ",e.replace(/\n/g,"\n "))}function d(e){return-1!==e.indexOf("\n")}function p(e){return null!=e&&e.some(d)}},76241:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isSource=function(e){return(0,o.default)(e,u)},t.Source=void 0;var n=r(28189),i=s(r(23216)),a=s(r(65269)),o=s(r(83588));function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:"GraphQL request",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{line:1,column:1};"string"==typeof e||(0,a.default)(0,"Body must be a string. Received: ".concat((0,i.default)(e),".")),this.body=e,this.name=t,this.locationOffset=r,this.locationOffset.line>0||(0,a.default)(0,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||(0,a.default)(0,"column in locationOffset is 1-indexed and must be positive.")}var t,r;return t=e,(r=[{key:n.SYMBOL_TO_STRING_TAG,get:function(){return"Source"}}])&&c(t.prototype,r),e}();t.Source=u},58053:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenKind=void 0;var r=Object.freeze({SOF:"",EOF:"",BANG:"!",DOLLAR:"$",AMP:"&",PAREN_L:"(",PAREN_R:")",SPREAD:"...",COLON:":",EQUALS:"=",AT:"@",BRACKET_L:"[",BRACKET_R:"]",BRACE_L:"{",PIPE:"|",BRACE_R:"}",NAME:"Name",INT:"Int",FLOAT:"Float",STRING:"String",BLOCK_STRING:"BlockString",COMMENT:"Comment"});t.TokenKind=r},48048:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.visit=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o,n=void 0,u=Array.isArray(e),l=[e],d=-1,p=[],h=void 0,f=void 0,y=void 0,g=[],m=[],b=e;do{var v=++d===l.length,_=v&&0!==p.length;if(v){if(f=0===m.length?void 0:g[g.length-1],h=y,y=m.pop(),_){if(u)h=h.slice();else{for(var w={},T=0,S=Object.keys(h);T{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SYMBOL_TO_STRING_TAG=t.SYMBOL_ASYNC_ITERATOR=t.SYMBOL_ITERATOR=void 0;var r="function"==typeof Symbol&&null!=Symbol.iterator?Symbol.iterator:"@@iterator";t.SYMBOL_ITERATOR=r;var n="function"==typeof Symbol&&null!=Symbol.asyncIterator?Symbol.asyncIterator:"@@asyncIterator";t.SYMBOL_ASYNC_ITERATOR=n;var i="function"==typeof Symbol&&null!=Symbol.toStringTag?Symbol.toStringTag:"@@toStringTag";t.SYMBOL_TO_STRING_TAG=i},99499:(e,t,r)=>{var n=t;n.utils=r(70461),n.common=r(32191),n.sha=r(75746),n.ripemd=r(74169),n.hmac=r(11825),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},32191:(e,t,r)=>{"use strict";var n=r(70461),i=r(7784);function a(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=a,a.prototype.update=function(e,t){if(e=n.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=n.join32(e,0,e.length-r,this.endian);for(var i=0;i>>24&255,n[i++]=e>>>16&255,n[i++]=e>>>8&255,n[i++]=255&e}else for(n[i++]=255&e,n[i++]=e>>>8&255,n[i++]=e>>>16&255,n[i++]=e>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,a=8;a{"use strict";var n=r(70461),i=r(7784);function a(e,t,r){if(!(this instanceof a))return new a(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(n.toArray(t,r))}e.exports=a,a.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),i(e.length<=this.blockSize);for(var t=e.length;t{"use strict";var n=r(70461),i=r(32191),a=n.rotl32,o=n.sum32,s=n.sum32_3,c=n.sum32_4,u=i.BlockHash;function l(){if(!(this instanceof l))return new l;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function d(e,t,r,n){return e<=15?t^r^n:e<=31?t&r|~t&n:e<=47?(t|~r)^n:e<=63?t&n|r&~n:t^(r|~n)}function p(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function h(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}n.inherits(l,u),t.ripemd160=l,l.blockSize=512,l.outSize=160,l.hmacStrength=192,l.padLength=64,l.prototype._update=function(e,t){for(var r=this.h[0],n=this.h[1],i=this.h[2],u=this.h[3],l=this.h[4],b=r,v=n,_=i,w=u,T=l,S=0;S<80;S++){var O=o(a(c(r,d(S,n,i,u),e[f[S]+t],p(S)),g[S]),l);r=l,l=u,u=a(i,10),i=n,n=O,O=o(a(c(b,d(79-S,v,_,w),e[y[S]+t],h(S)),m[S]),T),b=T,T=w,w=a(_,10),_=v,v=O}O=s(this.h[1],i,w),this.h[1]=s(this.h[2],u,T),this.h[2]=s(this.h[3],l,b),this.h[3]=s(this.h[4],r,v),this.h[4]=s(this.h[0],n,_),this.h[0]=O},l.prototype._digest=function(e){return"hex"===e?n.toHex32(this.h,"little"):n.split32(this.h,"little")};var f=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],y=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],g=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],m=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},75746:(e,t,r)=>{"use strict";t.sha1=r(12986),t.sha224=r(75393),t.sha256=r(50536),t.sha384=r(52348),t.sha512=r(92157)},12986:(e,t,r)=>{"use strict";var n=r(70461),i=r(32191),a=r(600),o=n.rotl32,s=n.sum32,c=n.sum32_5,u=a.ft_1,l=i.BlockHash,d=[1518500249,1859775393,2400959708,3395469782];function p(){if(!(this instanceof p))return new p;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}n.inherits(p,l),e.exports=p,p.blockSize=512,p.outSize=160,p.hmacStrength=80,p.padLength=64,p.prototype._update=function(e,t){for(var r=this.W,n=0;n<16;n++)r[n]=e[t+n];for(;n{"use strict";var n=r(70461),i=r(50536);function a(){if(!(this instanceof a))return new a;i.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}n.inherits(a,i),e.exports=a,a.blockSize=512,a.outSize=224,a.hmacStrength=192,a.padLength=64,a.prototype._digest=function(e){return"hex"===e?n.toHex32(this.h.slice(0,7),"big"):n.split32(this.h.slice(0,7),"big")}},50536:(e,t,r)=>{"use strict";var n=r(70461),i=r(32191),a=r(600),o=r(7784),s=n.sum32,c=n.sum32_4,u=n.sum32_5,l=a.ch32,d=a.maj32,p=a.s0_256,h=a.s1_256,f=a.g0_256,y=a.g1_256,g=i.BlockHash,m=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function b(){if(!(this instanceof b))return new b;g.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=m,this.W=new Array(64)}n.inherits(b,g),e.exports=b,b.blockSize=512,b.outSize=256,b.hmacStrength=192,b.padLength=64,b.prototype._update=function(e,t){for(var r=this.W,n=0;n<16;n++)r[n]=e[t+n];for(;n{"use strict";var n=r(70461),i=r(92157);function a(){if(!(this instanceof a))return new a;i.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}n.inherits(a,i),e.exports=a,a.blockSize=1024,a.outSize=384,a.hmacStrength=192,a.padLength=128,a.prototype._digest=function(e){return"hex"===e?n.toHex32(this.h.slice(0,12),"big"):n.split32(this.h.slice(0,12),"big")}},92157:(e,t,r)=>{"use strict";var n=r(70461),i=r(32191),a=r(7784),o=n.rotr64_hi,s=n.rotr64_lo,c=n.shr64_hi,u=n.shr64_lo,l=n.sum64,d=n.sum64_hi,p=n.sum64_lo,h=n.sum64_4_hi,f=n.sum64_4_lo,y=n.sum64_5_hi,g=n.sum64_5_lo,m=i.BlockHash,b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function v(){if(!(this instanceof v))return new v;m.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=b,this.W=new Array(160)}function _(e,t,r,n,i){var a=e&r^~e&i;return a<0&&(a+=4294967296),a}function w(e,t,r,n,i,a){var o=t&n^~t&a;return o<0&&(o+=4294967296),o}function T(e,t,r,n,i){var a=e&r^e&i^r&i;return a<0&&(a+=4294967296),a}function S(e,t,r,n,i,a){var o=t&n^t&a^n&a;return o<0&&(o+=4294967296),o}function O(e,t){var r=o(e,t,28)^o(t,e,2)^o(t,e,7);return r<0&&(r+=4294967296),r}function E(e,t){var r=s(e,t,28)^s(t,e,2)^s(t,e,7);return r<0&&(r+=4294967296),r}function x(e,t){var r=s(e,t,14)^s(e,t,18)^s(t,e,9);return r<0&&(r+=4294967296),r}function A(e,t){var r=o(e,t,1)^o(e,t,8)^c(e,t,7);return r<0&&(r+=4294967296),r}function R(e,t){var r=s(e,t,1)^s(e,t,8)^u(e,t,7);return r<0&&(r+=4294967296),r}function I(e,t){var r=s(e,t,19)^s(t,e,29)^u(e,t,6);return r<0&&(r+=4294967296),r}n.inherits(v,m),e.exports=v,v.blockSize=1024,v.outSize=512,v.hmacStrength=192,v.padLength=128,v.prototype._prepareBlock=function(e,t){for(var r=this.W,n=0;n<32;n++)r[n]=e[t+n];for(;n{"use strict";var n=r(70461).rotr32;function i(e,t,r){return e&t^~e&r}function a(e,t,r){return e&t^e&r^t&r}function o(e,t,r){return e^t^r}t.ft_1=function(e,t,r,n){return 0===e?i(t,r,n):1===e||3===e?o(t,r,n):2===e?a(t,r,n):void 0},t.ch32=i,t.maj32=a,t.p32=o,t.s0_256=function(e){return n(e,2)^n(e,13)^n(e,22)},t.s1_256=function(e){return n(e,6)^n(e,11)^n(e,25)},t.g0_256=function(e){return n(e,7)^n(e,18)^e>>>3},t.g1_256=function(e){return n(e,17)^n(e,19)^e>>>10}},70461:(e,t,r)=>{"use strict";var n=r(7784),i=r(35615);function a(e,t){return 55296==(64512&e.charCodeAt(t))&&!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1))}function o(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function s(e){return 1===e.length?"0"+e:e}function c(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}t.inherits=i,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),i=0;i>6|192,r[n++]=63&o|128):a(e,i)?(o=65536+((1023&o)<<10)+(1023&e.charCodeAt(++i)),r[n++]=o>>18|240,r[n++]=o>>12&63|128,r[n++]=o>>6&63|128,r[n++]=63&o|128):(r[n++]=o>>12|224,r[n++]=o>>6&63|128,r[n++]=63&o|128)}else for(i=0;i>>0}return o},t.split32=function(e,t){for(var r=new Array(4*e.length),n=0,i=0;n>>24,r[i+1]=a>>>16&255,r[i+2]=a>>>8&255,r[i+3]=255&a):(r[i+3]=a>>>24,r[i+2]=a>>>16&255,r[i+1]=a>>>8&255,r[i]=255&a)}return r},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,r){return e+t+r>>>0},t.sum32_4=function(e,t,r,n){return e+t+r+n>>>0},t.sum32_5=function(e,t,r,n,i){return e+t+r+n+i>>>0},t.sum64=function(e,t,r,n){var i=e[t],a=n+e[t+1]>>>0,o=(a>>0,e[t+1]=a},t.sum64_hi=function(e,t,r,n){return(t+n>>>0>>0},t.sum64_lo=function(e,t,r,n){return t+n>>>0},t.sum64_4_hi=function(e,t,r,n,i,a,o,s){var c=0,u=t;return c+=(u=u+n>>>0)>>0)>>0)>>0},t.sum64_4_lo=function(e,t,r,n,i,a,o,s){return t+n+a+s>>>0},t.sum64_5_hi=function(e,t,r,n,i,a,o,s,c,u){var l=0,d=t;return l+=(d=d+n>>>0)>>0)>>0)>>0)>>0},t.sum64_5_lo=function(e,t,r,n,i,a,o,s,c,u){return t+n+a+s+u>>>0},t.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},t.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},t.shr64_hi=function(e,t,r){return e>>>r},t.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0}},14291:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var o=a(r(36439)),s=r(3379),c=new Set(["input","option","optgroup","select","button","datalist","textarea"]),u=new Set(["p"]),l=new Set(["thead","tbody"]),d=new Set(["dd","dt"]),p=new Set(["rt","rp"]),h=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",u],["h1",u],["h2",u],["h3",u],["h4",u],["h5",u],["h6",u],["select",c],["input",c],["output",c],["button",c],["datalist",c],["textarea",c],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",d],["dt",d],["address",u],["article",u],["aside",u],["blockquote",u],["details",u],["div",u],["dl",u],["fieldset",u],["figcaption",u],["figure",u],["footer",u],["form",u],["header",u],["hr",u],["main",u],["nav",u],["ol",u],["pre",u],["section",u],["table",u],["ul",u],["rt",p],["rp",p],["tbody",l],["tfoot",l]]),f=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),y=new Set(["math","svg"]),g=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]),m=/\s|\//,b=function(){function e(e,t){var r,n,i,a,s;void 0===t&&(t={}),this.options=t,this.startIndex=0,this.endIndex=0,this.openTagStart=0,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.foreignContext=[],this.buffers=[],this.bufferOffset=0,this.writeIndex=0,this.ended=!1,this.cbs=null!=e?e:{},this.lowerCaseTagNames=null!==(r=t.lowerCaseTags)&&void 0!==r?r:!t.xmlMode,this.lowerCaseAttributeNames=null!==(n=t.lowerCaseAttributeNames)&&void 0!==n?n:!t.xmlMode,this.tokenizer=new(null!==(i=t.Tokenizer)&&void 0!==i?i:o.default)(this.options,this),null===(s=(a=this.cbs).onparserinit)||void 0===s||s.call(a,this)}return e.prototype.ontext=function(e,t){var r,n,i=this.getSlice(e,t);this.endIndex=t-1,null===(n=(r=this.cbs).ontext)||void 0===n||n.call(r,i),this.startIndex=t},e.prototype.ontextentity=function(e){var t,r,n=this.tokenizer.getSectionStart();this.endIndex=n-1,null===(r=(t=this.cbs).ontext)||void 0===r||r.call(t,(0,s.fromCodePoint)(e)),this.startIndex=n},e.prototype.isVoidElement=function(e){return!this.options.xmlMode&&f.has(e)},e.prototype.onopentagname=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);this.lowerCaseTagNames&&(r=r.toLowerCase()),this.emitOpenTag(r)},e.prototype.emitOpenTag=function(e){var t,r,n,i;this.openTagStart=this.startIndex,this.tagname=e;var a=!this.options.xmlMode&&h.get(e);if(a)for(;this.stack.length>0&&a.has(this.stack[this.stack.length-1]);){var o=this.stack.pop();null===(r=(t=this.cbs).onclosetag)||void 0===r||r.call(t,o,!0)}this.isVoidElement(e)||(this.stack.push(e),y.has(e)?this.foreignContext.push(!0):g.has(e)&&this.foreignContext.push(!1)),null===(i=(n=this.cbs).onopentagname)||void 0===i||i.call(n,e),this.cbs.onopentag&&(this.attribs={})},e.prototype.endOpenTag=function(e){var t,r;this.startIndex=this.openTagStart,this.attribs&&(null===(r=(t=this.cbs).onopentag)||void 0===r||r.call(t,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""},e.prototype.onopentagend=function(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1},e.prototype.onclosetag=function(e,t){var r,n,i,a,o,s;this.endIndex=t;var c=this.getSlice(e,t);if(this.lowerCaseTagNames&&(c=c.toLowerCase()),(y.has(c)||g.has(c))&&this.foreignContext.pop(),this.isVoidElement(c))this.options.xmlMode||"br"!==c||(null===(n=(r=this.cbs).onopentagname)||void 0===n||n.call(r,"br"),null===(a=(i=this.cbs).onopentag)||void 0===a||a.call(i,"br",{},!0),null===(s=(o=this.cbs).onclosetag)||void 0===s||s.call(o,"br",!1));else{var u=this.stack.lastIndexOf(c);if(-1!==u)if(this.cbs.onclosetag)for(var l=this.stack.length-u;l--;)this.cbs.onclosetag(this.stack.pop(),0!==l);else this.stack.length=u;else this.options.xmlMode||"p"!==c||(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=t+1},e.prototype.onselfclosingtag=function(e){this.endIndex=e,this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)},e.prototype.closeCurrentTag=function(e){var t,r,n=this.tagname;this.endOpenTag(e),this.stack[this.stack.length-1]===n&&(null===(r=(t=this.cbs).onclosetag)||void 0===r||r.call(t,n,!e),this.stack.pop())},e.prototype.onattribname=function(e,t){this.startIndex=e;var r=this.getSlice(e,t);this.attribname=this.lowerCaseAttributeNames?r.toLowerCase():r},e.prototype.onattribdata=function(e,t){this.attribvalue+=this.getSlice(e,t)},e.prototype.onattribentity=function(e){this.attribvalue+=(0,s.fromCodePoint)(e)},e.prototype.onattribend=function(e,t){var r,n;this.endIndex=t,null===(n=(r=this.cbs).onattribute)||void 0===n||n.call(r,this.attribname,this.attribvalue,e===o.QuoteType.Double?'"':e===o.QuoteType.Single?"'":e===o.QuoteType.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""},e.prototype.getInstructionName=function(e){var t=e.search(m),r=t<0?e:e.substr(0,t);return this.lowerCaseTagNames&&(r=r.toLowerCase()),r},e.prototype.ondeclaration=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){var n=this.getInstructionName(r);this.cbs.onprocessinginstruction("!".concat(n),"!".concat(r))}this.startIndex=t+1},e.prototype.onprocessinginstruction=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){var n=this.getInstructionName(r);this.cbs.onprocessinginstruction("?".concat(n),"?".concat(r))}this.startIndex=t+1},e.prototype.oncomment=function(e,t,r){var n,i,a,o;this.endIndex=t,null===(i=(n=this.cbs).oncomment)||void 0===i||i.call(n,this.getSlice(e,t-r)),null===(o=(a=this.cbs).oncommentend)||void 0===o||o.call(a),this.startIndex=t+1},e.prototype.oncdata=function(e,t,r){var n,i,a,o,s,c,u,l,d,p;this.endIndex=t;var h=this.getSlice(e,t-r);this.options.xmlMode||this.options.recognizeCDATA?(null===(i=(n=this.cbs).oncdatastart)||void 0===i||i.call(n),null===(o=(a=this.cbs).ontext)||void 0===o||o.call(a,h),null===(c=(s=this.cbs).oncdataend)||void 0===c||c.call(s)):(null===(l=(u=this.cbs).oncomment)||void 0===l||l.call(u,"[CDATA[".concat(h,"]]")),null===(p=(d=this.cbs).oncommentend)||void 0===p||p.call(d)),this.startIndex=t+1},e.prototype.onend=function(){var e,t;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(var r=this.stack.length;r>0;this.cbs.onclosetag(this.stack[--r],!0));}null===(t=(e=this.cbs).onend)||void 0===t||t.call(e)},e.prototype.reset=function(){var e,t,r,n;null===(t=(e=this.cbs).onreset)||void 0===t||t.call(e),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,null===(n=(r=this.cbs).onparserinit)||void 0===n||n.call(r,this),this.buffers.length=0,this.bufferOffset=0,this.writeIndex=0,this.ended=!1},e.prototype.parseComplete=function(e){this.reset(),this.end(e)},e.prototype.getSlice=function(e,t){for(;e-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();for(var r=this.buffers[0].slice(e-this.bufferOffset,t-this.bufferOffset);t-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),r+=this.buffers[0].slice(0,t-this.bufferOffset);return r},e.prototype.shiftBuffer=function(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()},e.prototype.write=function(e){var t,r;this.ended?null===(r=(t=this.cbs).onerror)||void 0===r||r.call(t,new Error(".write() after done!")):(this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++))},e.prototype.end=function(e){var t,r;this.ended?null===(r=(t=this.cbs).onerror)||void 0===r||r.call(t,new Error(".end() after done!")):(e&&this.write(e),this.ended=!0,this.tokenizer.end())},e.prototype.pause=function(){this.tokenizer.pause()},e.prototype.resume=function(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuoteType=void 0;var n,i,a,o=r(3379);function s(e){return e===n.Space||e===n.NewLine||e===n.Tab||e===n.FormFeed||e===n.CarriageReturn}function c(e){return e===n.Slash||e===n.Gt||s(e)}function u(e){return e>=n.Zero&&e<=n.Nine}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Number=35]="Number",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(n||(n={})),function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.SpecialStartSequence=23]="SpecialStartSequence",e[e.InSpecialTag=24]="InSpecialTag",e[e.BeforeEntity=25]="BeforeEntity",e[e.BeforeNumericEntity=26]="BeforeNumericEntity",e[e.InNamedEntity=27]="InNamedEntity",e[e.InNumericEntity=28]="InNumericEntity",e[e.InHexEntity=29]="InHexEntity"}(i||(i={})),function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(a=t.QuoteType||(t.QuoteType={}));var l={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])},d=function(){function e(e,t){var r=e.xmlMode,n=void 0!==r&&r,a=e.decodeEntities,s=void 0===a||a;this.cbs=t,this.state=i.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=i.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=n,this.decodeEntities=s,this.entityTrie=n?o.xmlDecodeTree:o.htmlDecodeTree}return e.prototype.reset=function(){this.state=i.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=i.Text,this.currentSequence=void 0,this.running=!0,this.offset=0},e.prototype.write=function(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()},e.prototype.end=function(){this.running&&this.finish()},e.prototype.pause=function(){this.running=!1},e.prototype.resume=function(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=i.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===n.Amp&&(this.state=i.BeforeEntity)},e.prototype.stateSpecialStartSequence=function(e){var t=this.sequenceIndex===this.currentSequence.length;if(t?c(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.isSpecial=!1;this.sequenceIndex=0,this.state=i.InTagName,this.stateInTagName(e)},e.prototype.stateInSpecialTag=function(e){if(this.sequenceIndex===this.currentSequence.length){if(e===n.Gt||s(e)){var t=this.index-this.currentSequence.length;if(this.sectionStart=n.LowerA&&e<=n.LowerZ||e>=n.UpperA&&e<=n.UpperZ}(e)},e.prototype.startSpecial=function(e,t){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=t,this.state=i.SpecialStartSequence},e.prototype.stateBeforeTagName=function(e){if(e===n.ExclamationMark)this.state=i.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===n.Questionmark)this.state=i.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){var t=32|e;this.sectionStart=this.index,this.xmlMode||t!==l.TitleEnd[2]?this.state=this.xmlMode||t!==l.ScriptEnd[2]?i.InTagName:i.BeforeSpecialS:this.startSpecial(l.TitleEnd,3)}else e===n.Slash?this.state=i.BeforeClosingTagName:(this.state=i.Text,this.stateText(e))},e.prototype.stateInTagName=function(e){c(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e))},e.prototype.stateBeforeClosingTagName=function(e){s(e)||(e===n.Gt?this.state=i.Text:(this.state=this.isTagStartChar(e)?i.InClosingTagName:i.InSpecialComment,this.sectionStart=this.index))},e.prototype.stateInClosingTagName=function(e){(e===n.Gt||s(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.AfterClosingTagName,this.stateAfterClosingTagName(e))},e.prototype.stateAfterClosingTagName=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.state=i.Text,this.baseState=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeAttributeName=function(e){e===n.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=i.InSpecialTag,this.sequenceIndex=0):this.state=i.Text,this.baseState=this.state,this.sectionStart=this.index+1):e===n.Slash?this.state=i.InSelfClosingTag:s(e)||(this.state=i.InAttributeName,this.sectionStart=this.index)},e.prototype.stateInSelfClosingTag=function(e){e===n.Gt?(this.cbs.onselfclosingtag(this.index),this.state=i.Text,this.baseState=i.Text,this.sectionStart=this.index+1,this.isSpecial=!1):s(e)||(this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e))},e.prototype.stateInAttributeName=function(e){(e===n.Eq||c(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.AfterAttributeName,this.stateAfterAttributeName(e))},e.prototype.stateAfterAttributeName=function(e){e===n.Eq?this.state=i.BeforeAttributeValue:e===n.Slash||e===n.Gt?(this.cbs.onattribend(a.NoValue,this.index),this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e)):s(e)||(this.cbs.onattribend(a.NoValue,this.index),this.state=i.InAttributeName,this.sectionStart=this.index)},e.prototype.stateBeforeAttributeValue=function(e){e===n.DoubleQuote?(this.state=i.InAttributeValueDq,this.sectionStart=this.index+1):e===n.SingleQuote?(this.state=i.InAttributeValueSq,this.sectionStart=this.index+1):s(e)||(this.sectionStart=this.index,this.state=i.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))},e.prototype.handleInAttributeValue=function(e,t){e===t||!this.decodeEntities&&this.fastForwardTo(t)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(t===n.DoubleQuote?a.Double:a.Single,this.index),this.state=i.BeforeAttributeName):this.decodeEntities&&e===n.Amp&&(this.baseState=this.state,this.state=i.BeforeEntity)},e.prototype.stateInAttributeValueDoubleQuotes=function(e){this.handleInAttributeValue(e,n.DoubleQuote)},e.prototype.stateInAttributeValueSingleQuotes=function(e){this.handleInAttributeValue(e,n.SingleQuote)},e.prototype.stateInAttributeValueNoQuotes=function(e){s(e)||e===n.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(a.Unquoted,this.index),this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===n.Amp&&(this.baseState=this.state,this.state=i.BeforeEntity)},e.prototype.stateBeforeDeclaration=function(e){e===n.OpeningSquareBracket?(this.state=i.CDATASequence,this.sequenceIndex=0):this.state=e===n.Dash?i.BeforeComment:i.InDeclaration},e.prototype.stateInDeclaration=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateInProcessingInstruction=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeComment=function(e){e===n.Dash?(this.state=i.InCommentLike,this.currentSequence=l.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=i.InDeclaration},e.prototype.stateInSpecialComment=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeSpecialS=function(e){var t=32|e;t===l.ScriptEnd[3]?this.startSpecial(l.ScriptEnd,4):t===l.StyleEnd[3]?this.startSpecial(l.StyleEnd,4):(this.state=i.InTagName,this.stateInTagName(e))},e.prototype.stateBeforeEntity=function(e){this.entityExcess=1,this.entityResult=0,e===n.Number?this.state=i.BeforeNumericEntity:e===n.Amp||(this.trieIndex=0,this.trieCurrent=this.entityTrie[0],this.state=i.InNamedEntity,this.stateInNamedEntity(e))},e.prototype.stateInNamedEntity=function(e){if(this.entityExcess+=1,this.trieIndex=(0,o.determineBranch)(this.entityTrie,this.trieCurrent,this.trieIndex+1,e),this.trieIndex<0)return this.emitNamedEntity(),void this.index--;this.trieCurrent=this.entityTrie[this.trieIndex];var t=this.trieCurrent&o.BinTrieFlags.VALUE_LENGTH;if(t){var r=(t>>14)-1;if(this.allowLegacyEntity()||e===n.Semi){var i=this.index-this.entityExcess+1;i>this.sectionStart&&this.emitPartial(this.sectionStart,i),this.entityResult=this.trieIndex,this.trieIndex+=r,this.entityExcess=0,this.sectionStart=this.index+1,0===r&&this.emitNamedEntity()}else this.trieIndex+=r}},e.prototype.emitNamedEntity=function(){if(this.state=this.baseState,0!==this.entityResult)switch((this.entityTrie[this.entityResult]&o.BinTrieFlags.VALUE_LENGTH)>>14){case 1:this.emitCodePoint(this.entityTrie[this.entityResult]&~o.BinTrieFlags.VALUE_LENGTH);break;case 2:this.emitCodePoint(this.entityTrie[this.entityResult+1]);break;case 3:this.emitCodePoint(this.entityTrie[this.entityResult+1]),this.emitCodePoint(this.entityTrie[this.entityResult+2])}},e.prototype.stateBeforeNumericEntity=function(e){(32|e)===n.LowerX?(this.entityExcess++,this.state=i.InHexEntity):(this.state=i.InNumericEntity,this.stateInNumericEntity(e))},e.prototype.emitNumericEntity=function(e){var t=this.index-this.entityExcess-1;t+2+Number(this.state===i.InHexEntity)!==this.index&&(t>this.sectionStart&&this.emitPartial(this.sectionStart,t),this.sectionStart=this.index+Number(e),this.emitCodePoint((0,o.replaceCodePoint)(this.entityResult))),this.state=this.baseState},e.prototype.stateInNumericEntity=function(e){e===n.Semi?this.emitNumericEntity(!0):u(e)?(this.entityResult=10*this.entityResult+(e-n.Zero),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)},e.prototype.stateInHexEntity=function(e){e===n.Semi?this.emitNumericEntity(!0):u(e)?(this.entityResult=16*this.entityResult+(e-n.Zero),this.entityExcess++):function(e){return e>=n.UpperA&&e<=n.UpperF||e>=n.LowerA&&e<=n.LowerF}(e)?(this.entityResult=16*this.entityResult+((32|e)-n.LowerA+10),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)},e.prototype.allowLegacyEntity=function(){return!this.xmlMode&&(this.baseState===i.Text||this.baseState===i.InSpecialTag)},e.prototype.cleanup=function(){this.running&&this.sectionStart!==this.index&&(this.state===i.Text||this.state===i.InSpecialTag&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):this.state!==i.InAttributeValueDq&&this.state!==i.InAttributeValueSq&&this.state!==i.InAttributeValueNq||(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))},e.prototype.shouldContinue=function(){return this.index{"use strict";var t=/^utf-?8|ascii|utf-?16-?le|ucs-?2|base-?64|latin-?1$/i,r=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,n=/\s|\uFEFF|\xA0/,i=/\r?\n[\x20\x09]+/g,a=/[;,"]/,o=/[;,"]|\s/,s=/^[!#$%&'*+\-\.^_`|~\da-zA-Z]+$/;function c(e){return e.replace(r,"")}function u(e){return n.test(e)}function l(e,t){for(;u(e[t]);)t++;return t}function d(e){return o.test(e)||!s.test(e)}class p{constructor(e){this.refs=[],e&&this.parse(e)}rel(e){for(var t=[],r=e.toLowerCase(),n=0;n{return r=t,n=e,Object.keys(r).length===Object.keys(n).length&&Object.keys(r).every((e=>e in n&&r[e]===n[e]));var r,n}))||this.refs.push(e),this}has(e,t){e=e.toLowerCase(),t=t.toLowerCase();for(var r=0;r",t)))throw new Error("Expected end of URI delimiter at offset "+t);o={uri:e.slice(t+1,h)},t=h,r=2,t++}else if(2===r){if(u(e[t])){t++;continue}if(";"===e[t])r=4,t++;else{if(","!==e[t])throw new Error('Unexpected character "'+e[t]+'" at offset '+t);r=1,t++}}else{if(4!==r)throw new Error('Unknown parser state "'+r+'"');if(";"===e[t]||u(e[t])){t++;continue}-1===(h=e.indexOf("=",t))&&(h=e.indexOf(";",t)),-1===h&&(h=e.length);var s=c(e.slice(t,h)).toLowerCase(),d="";if('"'===e[t=l(e,t=h+1)])for(t++;t"),e.push(t);return e.join(", ")}}p.isCompatibleEncoding=function(e){return t.test(e)},p.parse=function(e,t){return(new p).parse(e,t)},p.isSingleOccurenceAttr=function(e){return"rel"===e||"type"===e||"media"===e||"title"===e||"title*"===e},p.isTokenAttr=function(e){return"rel"===e||"type"===e||"anchor"===e},p.escapeQuotes=function(e){return e.replace(/"/g,'\\"')},p.expandRelations=function(e){return e.rel.split(" ").map((function(t){var r=Object.assign({},e);return r.rel=t,r}))},p.parseExtendedValue=function(e){var t=/([^']+)?(?:'([^']*)')?(.+)/.exec(e);return{language:t[2].toLowerCase(),encoding:p.isCompatibleEncoding(t[1])?null:t[1].toLowerCase(),value:p.isCompatibleEncoding(t[1])?decodeURIComponent(t[3]):t[3]}},p.formatExtendedAttribute=function(e,t){var r=(t.encoding||"utf-8").toUpperCase();return e+"="+r+"'"+(t.language||"en")+"'"+(Buffer.isBuffer(t.value)&&p.isCompatibleEncoding(r)?t.value.toString(r):Buffer.isBuffer(t.value)?t.value.toString("hex").replace(/[0-9a-f]{2}/gi,"%$1"):encodeURIComponent(t.value))},p.formatAttribute=function(e,t){return Array.isArray(t)?t.map((t=>p.formatAttribute(e,t))).join("; "):"*"===e[e.length-1]||"string"!=typeof t?p.formatExtendedAttribute(e,t):(p.isTokenAttr(e)?t=d(t)?'"'+p.escapeQuotes(t)+'"':p.escapeQuotes(t):d(t)&&(t='"'+(t=(t=encodeURIComponent(t)).replace(/%20/g," ").replace(/%2C/g,",").replace(/%3B/g,";"))+'"'),e+"="+t)},e.exports=p},39318:(e,t)=>{t.read=function(e,t,r,n,i){var a,o,s=8*i-n-1,c=(1<>1,l=-7,d=r?i-1:0,p=r?-1:1,h=e[t+d];for(d+=p,a=h&(1<<-l)-1,h>>=-l,l+=s;l>0;a=256*a+e[t+d],d+=p,l-=8);for(o=a&(1<<-l)-1,a>>=-l,l+=n;l>0;o=256*o+e[t+d],d+=p,l-=8);if(0===a)a=1-u;else{if(a===c)return o?NaN:1/0*(h?-1:1);o+=Math.pow(2,n),a-=u}return(h?-1:1)*o*Math.pow(2,a-n)},t.write=function(e,t,r,n,i,a){var o,s,c,u=8*a-i-1,l=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:a-1,f=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-o))<1&&(o--,c*=2),(t+=o+d>=1?p/c:p*Math.pow(2,1-d))*c>=2&&(o++,c/=2),o+d>=l?(s=0,o=l):o+d>=1?(s=(t*c-1)*Math.pow(2,i),o+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,i),o=0));i>=8;e[r+h]=255&s,h+=f,s/=256,i-=8);for(o=o<0;e[r+h]=255&o,h+=f,o/=256,u-=8);e[r+h-f]|=128*y}},6081:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Collection:()=>E,Iterable:()=>Rn,List:()=>cr,Map:()=>Ft,OrderedMap:()=>Tr,OrderedSet:()=>ln,PairSorting:()=>yn,Range:()=>Gr,Record:()=>gn,Repeat:()=>Sn,Seq:()=>W,Set:()=>Br,Stack:()=>Rr,default:()=>In,fromJS:()=>On,get:()=>ct,getIn:()=>zr,has:()=>st,hasIn:()=>Xr,hash:()=>me,is:()=>he,isAssociative:()=>O,isCollection:()=>v,isImmutable:()=>j,isIndexed:()=>S,isKeyed:()=>w,isList:()=>sr,isMap:()=>le,isOrdered:()=>M,isOrderedMap:()=>de,isOrderedSet:()=>Mr,isPlainObject:()=>it,isRecord:()=>D,isSeq:()=>P,isSet:()=>Cr,isStack:()=>Ar,isValueObject:()=>pe,merge:()=>Ot,mergeDeep:()=>xt,mergeDeepWith:()=>At,mergeWith:()=>Et,remove:()=>lt,removeIn:()=>gt,set:()=>dt,setIn:()=>ft,update:()=>bt,updateIn:()=>pt,version:()=>An});var n="delete",i=5,a=1<>>0;if(""+r!==t||4294967295===r)return NaN;t=r}return t<0?l(e)+t:t}function p(){return!0}function h(e,t,r){return(0===e&&!m(e)||void 0!==r&&e<=-r)&&(void 0===t||void 0!==r&&t>=r)}function f(e,t){return g(e,t,0)}function y(e,t){return g(e,t,t)}function g(e,t,r){return void 0===e?r:m(e)?t===1/0?t:0|Math.max(0,t+e):void 0===t||t===e?e:0|Math.min(t,e)}function m(e){return e<0||0===e&&1/e==-1/0}var b="@@__IMMUTABLE_ITERABLE__@@";function v(e){return Boolean(e&&e[b])}var _="@@__IMMUTABLE_KEYED__@@";function w(e){return Boolean(e&&e[_])}var T="@@__IMMUTABLE_INDEXED__@@";function S(e){return Boolean(e&&e[T])}function O(e){return w(e)||S(e)}var E=function(e){return v(e)?e:W(e)},x=function(e){function t(e){return w(e)?e:Y(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(E),A=function(e){function t(e){return S(e)?e:Z(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(E),R=function(e){function t(e){return v(e)&&!O(e)?e:ee(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(E);E.Keyed=x,E.Indexed=A,E.Set=R;var I="@@__IMMUTABLE_SEQ__@@";function P(e){return Boolean(e&&e[I])}var N="@@__IMMUTABLE_RECORD__@@";function D(e){return Boolean(e&&e[N])}function j(e){return v(e)||D(e)}var C="@@__IMMUTABLE_ORDERED__@@";function M(e){return Boolean(e&&e[C])}var L=0,k=1,F=2,B="function"==typeof Symbol&&Symbol.iterator,U="@@iterator",q=B||U,V=function(e){this.next=e};function Q(e,t,r,n){var i=0===e?t:1===e?r:[t,r];return n?n.value=i:n={value:i,done:!1},n}function $(){return{value:void 0,done:!0}}function H(e){return!!Array.isArray(e)||!!K(e)}function G(e){return e&&"function"==typeof e.next}function z(e){var t=K(e);return t&&t.call(e)}function K(e){var t=e&&(B&&e[B]||e[U]);if("function"==typeof t)return t}V.prototype.toString=function(){return"[Iterator]"},V.KEYS=L,V.VALUES=k,V.ENTRIES=F,V.prototype.inspect=V.prototype.toSource=function(){return this.toString()},V.prototype[q]=function(){return this};var X=Object.prototype.hasOwnProperty;function J(e){return!(!Array.isArray(e)&&"string"!=typeof e)||e&&"object"==typeof e&&Number.isInteger(e.length)&&e.length>=0&&(0===e.length?1===Object.keys(e).length:e.hasOwnProperty(e.length-1))}var W=function(e){function t(e){return null==e?ae():j(e)?e.toSeq():function(e){var t,r,n=ce(e);if(n)return(r=K(t=e))&&r===t.entries?n.fromEntrySeq():function(e){var t=K(e);return t&&t===e.keys}(e)?n.toSetSeq():n;if("object"==typeof e)return new re(e);throw new TypeError("Expected Array or collection object of values, or keyed object: "+e)}(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq {","}")},t.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},t.prototype.__iterate=function(e,t){var r=this._cache;if(r){for(var n=r.length,i=0;i!==n;){var a=r[t?n-++i:i++];if(!1===e(a[1],a[0],this))break}return i}return this.__iterateUncached(e,t)},t.prototype.__iterator=function(e,t){var r=this._cache;if(r){var n=r.length,i=0;return new V((function(){if(i===n)return{value:void 0,done:!0};var a=r[t?n-++i:i++];return Q(e,a[0],a[1])}))}return this.__iteratorUncached(e,t)},t}(E),Y=function(e){function t(e){return null==e?ae().toKeyedSeq():v(e)?w(e)?e.toSeq():e.fromEntrySeq():D(e)?e.toSeq():oe(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toKeyedSeq=function(){return this},t}(W),Z=function(e){function t(e){return null==e?ae():v(e)?w(e)?e.entrySeq():e.toIndexedSeq():D(e)?e.toSeq().entrySeq():se(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toIndexedSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq [","]")},t}(W),ee=function(e){function t(e){return(v(e)&&!O(e)?e:Z(e)).toSetSeq()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toSetSeq=function(){return this},t}(W);W.isSeq=P,W.Keyed=Y,W.Set=ee,W.Indexed=Z,W.prototype[I]=!0;var te=function(e){function t(e){this._array=e,this.size=e.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(e,t){return this.has(e)?this._array[d(this,e)]:t},t.prototype.__iterate=function(e,t){for(var r=this._array,n=r.length,i=0;i!==n;){var a=t?n-++i:i++;if(!1===e(r[a],a,this))break}return i},t.prototype.__iterator=function(e,t){var r=this._array,n=r.length,i=0;return new V((function(){if(i===n)return{value:void 0,done:!0};var a=t?n-++i:i++;return Q(e,a,r[a])}))},t}(Z),re=function(e){function t(e){var t=Object.keys(e).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e):[]);this._object=e,this._keys=t,this.size=t.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(e,t){return void 0===t||this.has(e)?this._object[e]:t},t.prototype.has=function(e){return X.call(this._object,e)},t.prototype.__iterate=function(e,t){for(var r=this._object,n=this._keys,i=n.length,a=0;a!==i;){var o=n[t?i-++a:a++];if(!1===e(r[o],o,this))break}return a},t.prototype.__iterator=function(e,t){var r=this._object,n=this._keys,i=n.length,a=0;return new V((function(){if(a===i)return{value:void 0,done:!0};var o=n[t?i-++a:a++];return Q(e,o,r[o])}))},t}(Y);re.prototype[C]=!0;var ne,ie=function(e){function t(e){this._collection=e,this.size=e.length||e.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);var r=z(this._collection),n=0;if(G(r))for(var i;!(i=r.next()).done&&!1!==e(i.value,n++,this););return n},t.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var r=z(this._collection);if(!G(r))return new V($);var n=0;return new V((function(){var t=r.next();return t.done?t:Q(e,n++,t.value)}))},t}(Z);function ae(){return ne||(ne=new te([]))}function oe(e){var t=ce(e);if(t)return t.fromEntrySeq();if("object"==typeof e)return new re(e);throw new TypeError("Expected Array or collection object of [k, v] entries, or keyed object: "+e)}function se(e){var t=ce(e);if(t)return t;throw new TypeError("Expected Array or collection object of values: "+e)}function ce(e){return J(e)?new te(e):H(e)?new ie(e):void 0}var ue="@@__IMMUTABLE_MAP__@@";function le(e){return Boolean(e&&e[ue])}function de(e){return le(e)&&M(e)}function pe(e){return Boolean(e&&"function"==typeof e.equals&&"function"==typeof e.hashCode)}function he(e,t){if(e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1;if("function"==typeof e.valueOf&&"function"==typeof t.valueOf){if((e=e.valueOf())===(t=t.valueOf())||e!=e&&t!=t)return!0;if(!e||!t)return!1}return!!(pe(e)&&pe(t)&&e.equals(t))}var fe="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(e,t){var r=65535&(e|=0),n=65535&(t|=0);return r*n+((e>>>16)*n+r*(t>>>16)<<16>>>0)|0};function ye(e){return e>>>1&1073741824|3221225471&e}var ge=Object.prototype.valueOf;function me(e){if(null==e)return be(e);if("function"==typeof e.hashCode)return ye(e.hashCode(e));var t,r,n,i=(t=e).valueOf!==ge&&"function"==typeof t.valueOf?t.valueOf(t):t;if(null==i)return be(i);switch(typeof i){case"boolean":return i?1108378657:1108378656;case"number":return function(e){if(e!=e||e===1/0)return 0;var t=0|e;for(t!==e&&(t^=4294967295*e);e>4294967295;)t^=e/=4294967295;return ye(t)}(i);case"string":return i.length>Re?(void 0===(n=Ne[r=i])&&(n=ve(r),Pe===Ie&&(Pe=0,Ne={}),Pe++,Ne[r]=n),n):ve(i);case"object":case"function":return function(e){var t;if(Oe&&void 0!==(t=Se.get(e)))return t;if(void 0!==(t=e[Ae]))return t;if(!we){if(void 0!==(t=e.propertyIsEnumerable&&e.propertyIsEnumerable[Ae]))return t;if(void 0!==(t=function(e){if(e&&e.nodeType>0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}(e)))return t}if(t=Te(),Oe)Se.set(e,t);else{if(void 0!==_e&&!1===_e(e))throw new Error("Non-extensible objects are not allowed as keys.");if(we)Object.defineProperty(e,Ae,{enumerable:!1,configurable:!1,writable:!1,value:t});else if(void 0!==e.propertyIsEnumerable&&e.propertyIsEnumerable===e.constructor.prototype.propertyIsEnumerable)e.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},e.propertyIsEnumerable[Ae]=t;else{if(void 0===e.nodeType)throw new Error("Unable to set a non-enumerable property on object.");e[Ae]=t}}return t}(i);case"symbol":return function(e){var t=Ee[e];return void 0!==t||(t=Te(),Ee[e]=t),t}(i);default:if("function"==typeof i.toString)return ve(i.toString());throw new Error("Value type "+typeof i+" cannot be hashed.")}}function be(e){return null===e?1108378658:1108378659}function ve(e){for(var t=0,r=0;r=0&&(u.get=function(t,r){return(t=d(this,t))>=0&&ts)return{value:void 0,done:!0};var e=i.next();return n||t===k||e.done?e:Q(t,c-1,t===L?void 0:e.value[1],e)}))},u}function qe(e,t,r,n){var i=Je(e);return i.__iterateUncached=function(i,a){var o=this;if(a)return this.cacheResult().__iterate(i,a);var s=!0,c=0;return e.__iterate((function(e,a,u){if(!s||!(s=t.call(r,e,a,u)))return c++,i(e,n?a:c-1,o)})),c},i.__iteratorUncached=function(i,a){var o=this;if(a)return this.cacheResult().__iterator(i,a);var s=e.__iterator(F,a),c=!0,u=0;return new V((function(){var e,a,l;do{if((e=s.next()).done)return n||i===k?e:Q(i,u++,i===L?void 0:e.value[1],e);var d=e.value;a=d[0],l=d[1],c&&(c=t.call(r,l,a,o))}while(c);return i===F?e:Q(i,a,l,e)}))},i}function Ve(e,t,r){var n=Je(e);return n.__iterateUncached=function(i,a){if(a)return this.cacheResult().__iterate(i,a);var o=0,s=!1;return function e(c,u){c.__iterate((function(a,c){return(!t||u0}function Ge(e,t,r,n){var i=Je(e),a=new te(r).map((function(e){return e.size}));return i.size=n?a.max():a.min(),i.__iterate=function(e,t){for(var r,n=this.__iterator(k,t),i=0;!(r=n.next()).done&&!1!==e(r.value,i++,this););return i},i.__iteratorUncached=function(e,i){var a=r.map((function(e){return e=E(e),z(i?e.reverse():e)})),o=0,s=!1;return new V((function(){var r;return s||(r=a.map((function(e){return e.next()})),s=n?r.every((function(e){return e.done})):r.some((function(e){return e.done}))),s?{value:void 0,done:!0}:Q(e,o++,t.apply(null,r.map((function(e){return e.value}))))}))},i}function ze(e,t){return e===t?e:P(e)?t:e.constructor(t)}function Ke(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function Xe(e){return w(e)?x:S(e)?A:R}function Je(e){return Object.create((w(e)?Y:S(e)?Z:ee).prototype)}function We(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):W.prototype.cacheResult.call(this)}function Ye(e,t){return void 0===e&&void 0===t?0:void 0===e?1:void 0===t?-1:e>t?1:e0;)t[r]=arguments[r+1];if("function"!=typeof e)throw new TypeError("Invalid merger function: "+e);return St(this,t,e)}function St(e,t,r){for(var n=[],i=0;i0;)t[r]=arguments[r+1];return It(e,t)}function Et(e,t){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];return It(t,r,e)}function xt(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return Rt(e,t)}function At(e,t){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];return Rt(t,r,e)}function Rt(e,t,r){return It(e,t,function(e){return function t(r,n,i){return at(r)&&at(n)&&(a=n,o=W(r),s=W(a),S(o)===S(s)&&w(o)===w(s))?It(r,[n],t):e?e(r,n,i):n;var a,o,s}}(r))}function It(e,t,r){if(!at(e))throw new TypeError("Cannot merge into non-data-structure value: "+e);if(j(e))return"function"==typeof r&&e.mergeWith?e.mergeWith.apply(e,[r].concat(t)):e.merge?e.merge.apply(e,t):e.concat.apply(e,t);for(var n=Array.isArray(e),i=e,a=n?A:x,o=n?function(t){i===e&&(i=ut(i)),i.push(t)}:function(t,n){var a=X.call(i,n),o=a&&r?r(i[n],t,n):t;a&&o===i[n]||(i===e&&(i=ut(i)),i[n]=o)},s=0;s0;)t[r]=arguments[r+1];return Rt(this,t,e)}function Dt(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return pt(this,e,Jt(),(function(e){return It(e,t)}))}function jt(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return pt(this,e,Jt(),(function(e){return Rt(e,t)}))}function Ct(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this}function Mt(){return this.__ownerID?this:this.__ensureOwner(new u)}function Lt(){return this.__ensureOwner()}function kt(){return this.__altered}var Ft=function(e){function t(t){return null==t?Jt():le(t)&&!M(t)?t:Jt().withMutations((function(r){var n=e(t);tt(n.size),n.forEach((function(e,t){return r.set(t,e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return Jt().withMutations((function(t){for(var r=0;r=e.length)throw new Error("Missing value for key: "+e[r]);t.set(e[r],e[r+1])}}))},t.prototype.toString=function(){return this.__toString("Map {","}")},t.prototype.get=function(e,t){return this._root?this._root.get(0,void 0,e,t):t},t.prototype.set=function(e,t){return Wt(this,e,t)},t.prototype.remove=function(e){return Wt(this,e,s)},t.prototype.deleteAll=function(e){var t=E(e);return 0===t.size?this:this.withMutations((function(e){t.forEach((function(t){return e.remove(t)}))}))},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Jt()},t.prototype.sort=function(e){return Tr(Qe(this,e))},t.prototype.sortBy=function(e,t){return Tr(Qe(this,t,e))},t.prototype.map=function(e,t){var r=this;return this.withMutations((function(n){n.forEach((function(i,a){n.set(a,e.call(t,i,a,r))}))}))},t.prototype.__iterator=function(e,t){return new Gt(this,e,t)},t.prototype.__iterate=function(e,t){var r=this,n=0;return this._root&&this._root.iterate((function(t){return n++,e(t[1],t[0],r)}),t),n},t.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Xt(this.size,this._root,e,this.__hash):0===this.size?Jt():(this.__ownerID=e,this.__altered=!1,this)},t}(x);Ft.isMap=le;var Bt=Ft.prototype;Bt[ue]=!0,Bt[n]=Bt.remove,Bt.removeAll=Bt.deleteAll,Bt.setIn=yt,Bt.removeIn=Bt.deleteIn=mt,Bt.update=vt,Bt.updateIn=_t,Bt.merge=Bt.concat=wt,Bt.mergeWith=Tt,Bt.mergeDeep=Pt,Bt.mergeDeepWith=Nt,Bt.mergeIn=Dt,Bt.mergeDeepIn=jt,Bt.withMutations=Ct,Bt.wasAltered=kt,Bt.asImmutable=Lt,Bt["@@transducer/init"]=Bt.asMutable=Mt,Bt["@@transducer/step"]=function(e,t){return e.set(t[0],t[1])},Bt["@@transducer/result"]=function(e){return e.asImmutable()};var Ut=function(e,t){this.ownerID=e,this.entries=t};Ut.prototype.get=function(e,t,r,n){for(var i=this.entries,a=0,o=i.length;a=nr)return function(e,t,r,n){e||(e=new u);for(var i=new $t(e,me(r),[r,n]),a=0;a>>e)&o),s=this.bitmap;return s&a?this.nodes[tr(s&a-1)].get(e+i,t,r,n):n},qt.prototype.update=function(e,t,r,n,c,u,l){void 0===r&&(r=me(n));var d=(0===t?r:r>>>t)&o,p=1<=ir)return function(e,t,r,n,i){for(var o=0,s=new Array(a),c=0;0!==r;c++,r>>>=1)s[c]=1&r?t[o++]:void 0;return s[n]=i,new Vt(e,o+1,s)}(e,g,h,d,b);if(f&&!b&&2===g.length&&Zt(g[1^y]))return g[1^y];if(f&&b&&1===g.length&&Zt(b))return b;var v=e&&e===this.ownerID,_=f?b?h:h^p:h|p,w=f?b?rr(g,y,b,v):function(e,t,r){var n=e.length-1;if(r&&t===n)return e.pop(),e;for(var i=new Array(n),a=0,o=0;o>>e)&o,s=this.nodes[a];return s?s.get(e+i,t,r,n):n},Vt.prototype.update=function(e,t,r,n,a,c,u){void 0===r&&(r=me(n));var l=(0===t?r:r>>>t)&o,d=a===s,p=this.nodes,h=p[l];if(d&&!h)return this;var f=Yt(h,e,t+i,r,n,a,c,u);if(f===h)return this;var y=this.count;if(h){if(!f&&--y>>r)&o,u=(0===r?n:n>>>r)&o,l=c===u?[er(e,t,r+i,n,a)]:(s=new $t(t,n,a),c>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,127&(e+=e>>8)+(e>>16)}function rr(e,t,r,n){var i=n?e:Ze(e);return i[t]=r,i}var nr=a/4,ir=a/2,ar=a/4,or="@@__IMMUTABLE_LIST__@@";function sr(e){return Boolean(e&&e[or])}var cr=function(e){function t(t){var r=yr();if(null==t)return r;if(sr(t))return t;var n=e(t),o=n.size;return 0===o?r:(tt(o),o>0&&o=0&&e=e.size||t<0)return e.withMutations((function(e){t<0?vr(e,t).set(0,r):vr(e,0,t+1).set(t,r)}));t+=e._origin;var n=e._tail,i=e._root,a={value:!1};return t>=_r(e._capacity)?n=gr(n,e.__ownerID,0,t,r,a):i=gr(i,e.__ownerID,e._level,t,r,a),a.value?e.__ownerID?(e._root=i,e._tail=n,e.__hash=void 0,e.__altered=!0,e):fr(e._origin,e._capacity,e._level,i,n):e}(this,e,t)},t.prototype.remove=function(e){return this.has(e)?0===e?this.shift():e===this.size-1?this.pop():this.splice(e,1):this},t.prototype.insert=function(e,t){return this.splice(e,0,t)},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=i,this._root=this._tail=this.__hash=void 0,this.__altered=!0,this):yr()},t.prototype.push=function(){var e=arguments,t=this.size;return this.withMutations((function(r){vr(r,0,t+e.length);for(var n=0;n>>t&o;if(n>=this.array.length)return new lr([],e);var a,s=0===n;if(t>0){var c=this.array[n];if((a=c&&c.removeBefore(e,t-i,r))===c&&s)return this}if(s&&!a)return this;var u=mr(this,e);if(!s)for(var l=0;l>>t&o;if(a>=this.array.length)return this;if(t>0){var s=this.array[a];if((n=s&&s.removeAfter(e,t-i,r))===s&&a===this.array.length-1)return this}var c=mr(this,e);return c.array.splice(a+1),n&&(c.array[a]=n),c};var dr,pr={};function hr(e,t){var r=e._origin,n=e._capacity,o=_r(n),s=e._tail;return function e(c,u,l){return 0===u?function(e,i){var c=i===o?s&&s.array:e&&e.array,u=i>r?0:r-i,l=n-i;return l>a&&(l=a),function(){if(u===l)return pr;var e=t?--l:u++;return c&&c[e]}}(c,l):function(o,s,c){var u,l=o&&o.array,d=c>r?0:r-c>>s,p=1+(n-c>>s);return p>a&&(p=a),function(){for(;;){if(u){var r=u();if(r!==pr)return r;u=null}if(d===p)return pr;var n=t?--p:d++;u=e(l&&l[n],s-i,c+(n<>>r&o,d=e&&l0){var p=e&&e.array[l],h=gr(p,t,r-i,n,a,s);return h===p?e:((u=mr(e,t)).array[l]=h,u)}return d&&e.array[l]===a?e:(s&&c(s),u=mr(e,t),void 0===a&&l===u.array.length-1?u.array.pop():u.array[l]=a,u)}function mr(e,t){return t&&e&&t===e.ownerID?e:new lr(e?e.array.slice():[],t)}function br(e,t){if(t>=_r(e._capacity))return e._tail;if(t<1<0;)r=r.array[t>>>n&o],n-=i;return r}}function vr(e,t,r){void 0!==t&&(t|=0),void 0!==r&&(r|=0);var n=e.__ownerID||new u,a=e._origin,s=e._capacity,c=a+t,l=void 0===r?s:r<0?s+r:a+r;if(c===a&&l===s)return e;if(c>=l)return e.clear();for(var d=e._level,p=e._root,h=0;c+h<0;)p=new lr(p&&p.array.length?[void 0,p]:[],n),h+=1<<(d+=i);h&&(c+=h,a+=h,l+=h,s+=h);for(var f=_r(s),y=_r(l);y>=1<f?new lr([],n):g;if(g&&y>f&&ci;v-=i){var _=f>>>v&o;b=b.array[_]=mr(b.array[_],n)}b.array[f>>>i&o]=g}if(l=y)c-=y,l-=y,d=i,p=null,m=m&&m.removeBefore(n,0,c);else if(c>a||y>>d&o;if(w!==y>>>d&o)break;w&&(h+=(1<a&&(p=p.removeBefore(n,d,c-h)),p&&y>>i<=a&&c.size>=2*o.size?(n=(i=c.filter((function(e,t){return void 0!==e&&u!==t}))).toKeyedSeq().map((function(e){return e[0]})).flip().toMap(),e.__ownerID&&(n.__ownerID=i.__ownerID=e.__ownerID)):(n=o.remove(t),i=u===c.size-1?c.pop():c.set(u,void 0))}else if(l){if(r===c.get(u)[1])return e;n=o,i=c.set(u,[t,r])}else n=o.set(t,c.size),i=c.set(c.size,[t,r]);return e.__ownerID?(e.size=n.size,e._map=n,e._list=i,e.__hash=void 0,e.__altered=!0,e):Sr(n,i)}Tr.isOrderedMap=de,Tr.prototype[C]=!0,Tr.prototype[n]=Tr.prototype.remove;var xr="@@__IMMUTABLE_STACK__@@";function Ar(e){return Boolean(e&&e[xr])}var Rr=function(e){function t(e){return null==e?Dr():Ar(e)?e:Dr().pushAll(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("Stack [","]")},t.prototype.get=function(e,t){var r=this._head;for(e=d(this,e);r&&e--;)r=r.next;return r?r.value:t},t.prototype.peek=function(){return this._head&&this._head.value},t.prototype.push=function(){var e=arguments;if(0===arguments.length)return this;for(var t=this.size+arguments.length,r=this._head,n=arguments.length-1;n>=0;n--)r={value:e[n],next:r};return this.__ownerID?(this.size=t,this._head=r,this.__hash=void 0,this.__altered=!0,this):Nr(t,r)},t.prototype.pushAll=function(t){if(0===(t=e(t)).size)return this;if(0===this.size&&Ar(t))return t;tt(t.size);var r=this.size,n=this._head;return t.__iterate((function(e){r++,n={value:e,next:n}}),!0),this.__ownerID?(this.size=r,this._head=n,this.__hash=void 0,this.__altered=!0,this):Nr(r,n)},t.prototype.pop=function(){return this.slice(1)},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Dr()},t.prototype.slice=function(t,r){if(h(t,r,this.size))return this;var n=f(t,this.size);if(y(r,this.size)!==this.size)return e.prototype.slice.call(this,t,r);for(var i=this.size-n,a=this._head;n--;)a=a.next;return this.__ownerID?(this.size=i,this._head=a,this.__hash=void 0,this.__altered=!0,this):Nr(i,a)},t.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Nr(this.size,this._head,e,this.__hash):0===this.size?Dr():(this.__ownerID=e,this.__altered=!1,this)},t.prototype.__iterate=function(e,t){var r=this;if(t)return new te(this.toArray()).__iterate((function(t,n){return e(t,n,r)}),t);for(var n=0,i=this._head;i&&!1!==e(i.value,n++,this);)i=i.next;return n},t.prototype.__iterator=function(e,t){if(t)return new te(this.toArray()).__iterator(e,t);var r=0,n=this._head;return new V((function(){if(n){var t=n.value;return n=n.next,Q(e,r++,t)}return{value:void 0,done:!0}}))},t}(A);Rr.isStack=Ar;var Ir,Pr=Rr.prototype;function Nr(e,t,r,n){var i=Object.create(Pr);return i.size=e,i._head=t,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}function Dr(){return Ir||(Ir=Nr(0))}Pr[xr]=!0,Pr.shift=Pr.pop,Pr.unshift=Pr.push,Pr.unshiftAll=Pr.pushAll,Pr.withMutations=Ct,Pr.wasAltered=kt,Pr.asImmutable=Lt,Pr["@@transducer/init"]=Pr.asMutable=Mt,Pr["@@transducer/step"]=function(e,t){return e.unshift(t)},Pr["@@transducer/result"]=function(e){return e.asImmutable()};var jr="@@__IMMUTABLE_SET__@@";function Cr(e){return Boolean(e&&e[jr])}function Mr(e){return Cr(e)&&M(e)}function Lr(e,t){if(e===t)return!0;if(!v(t)||void 0!==e.size&&void 0!==t.size&&e.size!==t.size||void 0!==e.__hash&&void 0!==t.__hash&&e.__hash!==t.__hash||w(e)!==w(t)||S(e)!==S(t)||M(e)!==M(t))return!1;if(0===e.size&&0===t.size)return!0;var r=!O(e);if(M(e)){var n=e.entries();return t.every((function(e,t){var i=n.next().value;return i&&he(i[1],e)&&(r||he(i[0],t))}))&&n.next().done}var i=!1;if(void 0===e.size)if(void 0===t.size)"function"==typeof e.cacheResult&&e.cacheResult();else{i=!0;var a=e;e=t,t=a}var o=!0,c=t.__iterate((function(t,n){if(r?!e.has(t):i?!he(t,e.get(n,s)):!he(e.get(n,s),t))return o=!1,!1}));return o&&e.size===c}function kr(e,t){var r=function(r){e.prototype[r]=t[r]};return Object.keys(t).forEach(r),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(r),e}function Fr(e){if(!e||"object"!=typeof e)return e;if(!v(e)){if(!at(e))return e;e=W(e)}if(w(e)){var t={};return e.__iterate((function(e,r){t[r]=Fr(e)})),t}var r=[];return e.__iterate((function(e){r.push(Fr(e))})),r}var Br=function(e){function t(t){return null==t?$r():Cr(t)&&!M(t)?t:$r().withMutations((function(r){var n=e(t);tt(n.size),n.forEach((function(e){return r.add(e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(e){return this(x(e).keySeq())},t.intersect=function(e){return(e=E(e).toArray()).length?qr.intersect.apply(t(e.pop()),e):$r()},t.union=function(e){return(e=E(e).toArray()).length?qr.union.apply(t(e.pop()),e):$r()},t.prototype.toString=function(){return this.__toString("Set {","}")},t.prototype.has=function(e){return this._map.has(e)},t.prototype.add=function(e){return Vr(this,this._map.set(e,e))},t.prototype.remove=function(e){return Vr(this,this._map.remove(e))},t.prototype.clear=function(){return Vr(this,this._map.clear())},t.prototype.map=function(e,t){var r=this,n=!1,i=Vr(this,this._map.mapEntries((function(i){var a=i[1],o=e.call(t,a,a,r);return o!==a&&(n=!0),[o,o]}),t));return n?i:this},t.prototype.union=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return 0===(t=t.filter((function(e){return 0!==e.size}))).length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations((function(r){for(var n=0;n=0&&t=0&&r>>-15,461845907),t=fe(t<<13|t>>>-13,5),t=fe((t=t+3864292196^e)^t>>>16,2246822507),t=ye((t=fe(t^t>>>13,3266489909))^t>>>16)}(e.__iterate(r?t?function(e,t){n=31*n+un(me(e),me(t))|0}:function(e,t){n=n+un(me(e),me(t))|0}:t?function(e){n=31*n+me(e)|0}:function(e){n=n+me(e)|0}),n)}(this))}});var Wr=E.prototype;Wr[b]=!0,Wr[q]=Wr.values,Wr.toJSON=Wr.toArray,Wr.__toStringMapper=ot,Wr.inspect=Wr.toSource=function(){return this.toString()},Wr.chain=Wr.flatMap,Wr.contains=Wr.includes,kr(x,{flip:function(){return ze(this,Le(this))},mapEntries:function(e,t){var r=this,n=0;return ze(this,this.toSeq().map((function(i,a){return e.call(t,[a,i],n++,r)})).fromEntrySeq())},mapKeys:function(e,t){var r=this;return ze(this,this.toSeq().flip().map((function(n,i){return e.call(t,n,i,r)})).flip())}});var Yr=x.prototype;Yr[_]=!0,Yr[q]=Wr.entries,Yr.toJSON=Jr,Yr.__toStringMapper=function(e,t){return ot(t)+": "+ot(e)},kr(A,{toKeyedSeq:function(){return new De(this,!1)},filter:function(e,t){return ze(this,Be(this,e,t,!1))},findIndex:function(e,t){var r=this.findEntry(e,t);return r?r[0]:-1},indexOf:function(e){var t=this.keyOf(e);return void 0===t?-1:t},lastIndexOf:function(e){var t=this.lastKeyOf(e);return void 0===t?-1:t},reverse:function(){return ze(this,Fe(this,!1))},slice:function(e,t){return ze(this,Ue(this,e,t,!1))},splice:function(e,t){var r=arguments.length;if(t=Math.max(t||0,0),0===r||2===r&&!t)return this;e=f(e,e<0?this.count():this.size);var n=this.slice(0,e);return ze(this,1===r?n:n.concat(Ze(arguments,2),this.slice(e+t)))},findLastIndex:function(e,t){var r=this.findLastEntry(e,t);return r?r[0]:-1},first:function(e){return this.get(0,e)},flatten:function(e){return ze(this,Ve(this,e,!1))},get:function(e,t){return(e=d(this,e))<0||this.size===1/0||void 0!==this.size&&e>this.size?t:this.find((function(t,r){return r===e}),void 0,t)},has:function(e){return(e=d(this,e))>=0&&(void 0!==this.size?this.size===1/0||et?-1:0}function un(e,t){return e^t+2654435769+(e<<6)+(e>>2)}en.has=Wr.includes,en.contains=en.includes,en.keys=en.values,kr(Y,Yr),kr(Z,Zr),kr(ee,en);var ln=function(e){function t(e){return null==e?fn():Mr(e)?e:fn().withMutations((function(t){var r=R(e);tt(r.size),r.forEach((function(e){return t.add(e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(e){return this(x(e).keySeq())},t.prototype.toString=function(){return this.__toString("OrderedSet {","}")},t}(Br);ln.isOrderedSet=Mr;var dn,pn=ln.prototype;function hn(e,t){var r=Object.create(pn);return r.size=e?e.size:0,r._map=e,r.__ownerID=t,r}function fn(){return dn||(dn=hn(Or()))}pn[C]=!0,pn.zip=Zr.zip,pn.zipWith=Zr.zipWith,pn.zipAll=Zr.zipAll,pn.__empty=fn,pn.__make=hn;var yn={LeftThenRight:-1,RightThenLeft:1},gn=function(e,t){var r;!function(e){if(D(e))throw new Error("Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.");if(j(e))throw new Error("Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.");if(null===e||"object"!=typeof e)throw new Error("Can not call `Record` with a non-object as default values. Use a plain javascript object instead.")}(e);var n=function(a){var o=this;if(a instanceof n)return a;if(!(this instanceof n))return new n(a);if(!r){r=!0;var s=Object.keys(e),c=i._indices={};i._name=t,i._keys=s,i._defaultValues=e;for(var u=0;u2?[]:void 0,{"":e})}function En(e,t,r,n,i,a){if("string"!=typeof r&&!j(r)&&(J(r)||H(r)||it(r))){if(~e.indexOf(r))throw new TypeError("Cannot convert circular structure to Immutable");e.push(r),i&&""!==n&&i.push(n);var o=t.call(a,n,W(r).map((function(n,a){return En(e,t,n,a,i,r)})),i&&i.slice());return e.pop(),i&&i.pop(),o}return r}function xn(e,t){return S(t)?t.toList():w(t)?t.toMap():t.toSet()}var An="4.3.5",Rn=E;const In={version:An,Collection:E,Iterable:E,Seq:W,Map:Ft,OrderedMap:Tr,List:cr,Stack:Rr,Set:Br,OrderedSet:ln,PairSorting:yn,Record:gn,Range:Gr,Repeat:Sn,is:he,fromJS:On,hash:me,isImmutable:j,isCollection:v,isKeyed:w,isIndexed:S,isAssociative:O,isOrdered:M,isValueObject:pe,isPlainObject:it,isSeq:P,isList:sr,isMap:le,isOrderedMap:de,isStack:Ar,isSet:Cr,isOrderedSet:Mr,isRecord:D,get:ct,getIn:zr,has:st,hasIn:Xr,merge:Ot,mergeDeep:xt,mergeWith:Et,mergeDeepWith:At,remove:lt,removeIn:gt,set:dt,setIn:ft,update:bt,updateIn:pt}},35615:e=>{"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},76605:e=>{"use strict";const t=e=>null!==e&&"object"==typeof e&&"function"==typeof e.pipe;t.writable=e=>t(e)&&!1!==e.writable&&"function"==typeof e._write&&"object"==typeof e._writableState,t.readable=e=>t(e)&&!1!==e.readable&&"function"==typeof e._read&&"object"==typeof e._readableState,t.duplex=e=>t.writable(e)&&t.readable(e),t.transform=e=>t.duplex(e)&&"function"==typeof e._transform,e.exports=t},27202:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(85346),t),i(r(40905),t),i(r(76920),t),i(r(11971),t),i(r(89715),t),i(r(39426),t),i(r(45512),t)},85346:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContextParser=void 0,r(17082);const n=r(9929),i=r(40905),a=r(76920),o=r(39426),s=r(45512);class c{constructor(e){e=e||{},this.documentLoader=e.documentLoader||new a.FetchDocumentLoader,this.documentCache={},this.validateContext=!e.skipValidation,this.expandContentTypeToBase=!!e.expandContentTypeToBase,this.remoteContextsDepthLimit=e.remoteContextsDepthLimit||32,this.redirectSchemaOrgHttps=!("redirectSchemaOrgHttps"in e)||!!e.redirectSchemaOrgHttps}static validateLanguage(e,t,r){if("string"!=typeof e)throw new i.ErrorCoded(`The value of an '@language' must be a string, got '${JSON.stringify(e)}'`,r);if(!s.Util.REGEX_LANGUAGE_TAG.test(e)){if(t)throw new i.ErrorCoded(`The value of an '@language' must be a valid language tag, got '${JSON.stringify(e)}'`,r);return!1}return!0}static validateDirection(e,t){if("string"!=typeof e)throw new i.ErrorCoded(`The value of an '@direction' must be a string, got '${JSON.stringify(e)}'`,i.ERROR_CODES.INVALID_BASE_DIRECTION);if(!s.Util.REGEX_DIRECTION_TAG.test(e)){if(t)throw new i.ErrorCoded(`The value of an '@direction' must be 'ltr' or 'rtl', got '${JSON.stringify(e)}'`,i.ERROR_CODES.INVALID_BASE_DIRECTION);return!1}return!0}idifyReverseTerms(e){for(const t of Object.keys(e)){let r=e[t];if(r&&"object"==typeof r&&r["@reverse"]&&!r["@id"]){if("string"!=typeof r["@reverse"]||s.Util.isValidKeyword(r["@reverse"]))throw new i.ErrorCoded(`Invalid @reverse value, must be absolute IRI or blank node: '${r["@reverse"]}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);r=e[t]=Object.assign(Object.assign({},r),{"@id":r["@reverse"]}),r["@id"]=r["@reverse"],s.Util.isPotentialKeyword(r["@reverse"])?delete r["@reverse"]:r["@reverse"]=!0}}return e}expandPrefixedTerms(e,t,r){const n=e.getContextRaw();for(const a of r||Object.keys(n))if(s.Util.EXPAND_KEYS_BLACKLIST.indexOf(a)<0&&!s.Util.isReservedInternalKeyword(a)){const r=n[a];if(s.Util.isPotentialKeyword(a)&&s.Util.ALIAS_DOMAIN_BLACKLIST.indexOf(a)>=0&&("@type"!==a||"object"==typeof n[a]&&!n[a]["@protected"]&&"@set"!==n[a]["@container"]))throw new i.ErrorCoded(`Keywords can not be aliased to something else.\nTried mapping ${a} to ${JSON.stringify(r)}`,i.ERROR_CODES.KEYWORD_REDEFINITION);if(s.Util.ALIAS_RANGE_BLACKLIST.indexOf(s.Util.getContextValueId(r))>=0)throw new i.ErrorCoded(`Aliasing to certain keywords is not allowed.\nTried mapping ${a} to ${JSON.stringify(r)}`,i.ERROR_CODES.INVALID_KEYWORD_ALIAS);if(r&&s.Util.isPotentialKeyword(s.Util.getContextValueId(r))&&!0===r["@prefix"])throw new i.ErrorCoded(`Tried to use keyword aliases as prefix: '${a}': '${JSON.stringify(r)}'`,i.ERROR_CODES.INVALID_TERM_DEFINITION);for(;s.Util.isPrefixValue(n[a]);){const r=n[a];let i=!1;if("string"==typeof r)n[a]=e.expandTerm(r,!0),i=i||r!==n[a];else{const o=r["@id"],c=r["@type"],u=!("@prefix"in r)||s.Util.isValidIri(a);if("@id"in r)null!=o&&"string"==typeof o&&(n[a]=Object.assign(Object.assign({},n[a]),{"@id":e.expandTerm(o,!0)}),i=i||o!==n[a]["@id"]);else if(!s.Util.isPotentialKeyword(a)&&u){const t=e.expandTerm(a,!0);t!==a&&(n[a]=Object.assign(Object.assign({},n[a]),{"@id":t}),i=!0)}if(c&&"string"==typeof c&&"@vocab"!==c&&(!r["@container"]||!r["@container"]["@type"])&&u){let r=e.expandTerm(c,!0);t&&c===r&&(r=e.expandTerm(c,!1)),r!==c&&(i=!0,n[a]=Object.assign(Object.assign({},n[a]),{"@type":r}))}}if(!i)break}}}normalize(e,{processingMode:t,normalizeLanguageTags:r}){if(r||1===t)for(const t of Object.keys(e))if("@language"===t&&"string"==typeof e[t])e[t]=e[t].toLowerCase();else{const r=e[t];if(r&&"object"==typeof r&&"string"==typeof r["@language"]){const n=r["@language"].toLowerCase();n!==r["@language"]&&(e[t]=Object.assign(Object.assign({},r),{"@language":n}))}}}containersToHash(e){for(const t of Object.keys(e)){const r=e[t];if(r&&"object"==typeof r)if("string"==typeof r["@container"])e[t]=Object.assign(Object.assign({},r),{"@container":{[r["@container"]]:!0}});else if(Array.isArray(r["@container"])){const n={};for(const e of r["@container"])n[e]=!0;e[t]=Object.assign(Object.assign({},r),{"@container":n})}}}applyScopedProtected(e,{processingMode:t},r){if(t&&t>=1.1&&e["@protected"]){for(const t of Object.keys(e))if(!s.Util.isReservedInternalKeyword(t)&&!s.Util.isPotentialKeyword(t)&&!s.Util.isTermProtected(e,t)){const n=e[t];n&&"object"==typeof n?"@protected"in e[t]||(e[t]=Object.assign(Object.assign({},e[t]),{"@protected":!0})):(e[t]={"@id":n,"@protected":!0},s.Util.isSimpleTermDefinitionPrefix(n,r)&&(e[t]=Object.assign(Object.assign({},e[t]),{"@prefix":!0})))}delete e["@protected"]}}validateKeywordRedefinitions(e,t,r,n){for(const r of null!=n?n:Object.keys(t))if(s.Util.isTermProtected(e,r)&&("string"==typeof t[r]?t[r]={"@id":t[r],"@protected":!0}:t[r]=Object.assign(Object.assign({},t[r]),{"@protected":!0}),!s.Util.deepEqual(e[r],t[r])))throw new i.ErrorCoded(`Attempted to override the protected keyword ${r} from ${JSON.stringify(s.Util.getContextValueId(e[r]))} to ${JSON.stringify(s.Util.getContextValueId(t[r]))}`,i.ERROR_CODES.PROTECTED_TERM_REDEFINITION)}validate(e,{processingMode:t}){for(const r of Object.keys(e)){if(s.Util.isReservedInternalKeyword(r))continue;if(""===r)throw new i.ErrorCoded(`The empty term is not allowed, got: '${r}': '${JSON.stringify(e[r])}'`,i.ERROR_CODES.INVALID_TERM_DEFINITION);const n=e[r],a=typeof n;if(s.Util.isPotentialKeyword(r)){switch(r.substr(1)){case"vocab":if(null!==n&&"string"!==a)throw new i.ErrorCoded(`Found an invalid @vocab IRI: ${n}`,i.ERROR_CODES.INVALID_VOCAB_MAPPING);break;case"base":if(null!==n&&"string"!==a)throw new i.ErrorCoded(`Found an invalid @base IRI: ${e[r]}`,i.ERROR_CODES.INVALID_BASE_IRI);break;case"language":null!==n&&c.validateLanguage(n,!0,i.ERROR_CODES.INVALID_DEFAULT_LANGUAGE);break;case"version":if(null!==n&&"number"!==a)throw new i.ErrorCoded(`Found an invalid @version number: ${n}`,i.ERROR_CODES.INVALID_VERSION_VALUE);break;case"direction":null!==n&&c.validateDirection(n,!0);break;case"propagate":if(1===t)throw new i.ErrorCoded(`Found an illegal @propagate keyword: ${n}`,i.ERROR_CODES.INVALID_CONTEXT_ENTRY);if(null!==n&&"boolean"!==a)throw new i.ErrorCoded(`Found an invalid @propagate value: ${n}`,i.ERROR_CODES.INVALID_PROPAGATE_VALUE)}if(s.Util.isValidKeyword(r)&&s.Util.isValidKeyword(s.Util.getContextValueId(n)))throw new i.ErrorCoded(`Illegal keyword alias in term value, found: '${r}': '${s.Util.getContextValueId(n)}'`,i.ERROR_CODES.KEYWORD_REDEFINITION)}else if(null!==n)switch(a){case"string":if(s.Util.getPrefix(n,e)===r)throw new i.ErrorCoded(`Detected cyclical IRI mapping in context entry: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.CYCLIC_IRI_MAPPING);if(s.Util.isValidIriWeak(r)){if("@type"===n)throw new i.ErrorCoded(`IRIs can not be mapped to @type, found: '${r}': '${n}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);if(s.Util.isValidIri(n)&&n!==new o.JsonLdContextNormalized(e).expandTerm(r))throw new i.ErrorCoded(`IRIs can not be mapped to other IRIs, found: '${r}': '${n}'`,i.ERROR_CODES.INVALID_IRI_MAPPING)}break;case"object":if(!(s.Util.isCompactIri(r)||"@id"in n||("@id"===n["@type"]?e["@base"]:e["@vocab"])))throw new i.ErrorCoded(`Missing @id in context entry: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);for(const u of Object.keys(n)){const l=n[u];if(l)switch(u){case"@id":if(s.Util.isValidKeyword(l)&&"@type"!==l&&"@id"!==l&&"@graph"!==l&&"@nest"!==l)throw new i.ErrorCoded(`Illegal keyword alias in term value, found: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);if(s.Util.isValidIriWeak(r)){if("@type"===l)throw new i.ErrorCoded(`IRIs can not be mapped to @type, found: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);if(s.Util.isValidIri(l)&&l!==new o.JsonLdContextNormalized(e).expandTerm(r))throw new i.ErrorCoded(`IRIs can not be mapped to other IRIs, found: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING)}if("string"!=typeof l)throw new i.ErrorCoded(`Detected non-string @id in context entry: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);if(s.Util.getPrefix(l,e)===r)throw new i.ErrorCoded(`Detected cyclical IRI mapping in context entry: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.CYCLIC_IRI_MAPPING);break;case"@type":if("@type"===n["@container"]&&"@id"!==l&&"@vocab"!==l)throw new i.ErrorCoded(`@container: @type only allows @type: @id or @vocab, but got: '${r}': '${l}'`,i.ERROR_CODES.INVALID_TYPE_MAPPING);if("string"!=typeof l)throw new i.ErrorCoded(`The value of an '@type' must be a string, got '${JSON.stringify(a)}'`,i.ERROR_CODES.INVALID_TYPE_MAPPING);if(!("@id"===l||"@vocab"===l||1!==t&&"@json"===l||1!==t&&"@none"===l||"_"!==l[0]&&s.Util.isValidIri(l)))throw new i.ErrorCoded(`A context @type must be an absolute IRI, found: '${r}': '${l}'`,i.ERROR_CODES.INVALID_TYPE_MAPPING);break;case"@reverse":if("string"==typeof l&&n["@id"]&&n["@id"]!==l)throw new i.ErrorCoded(`Found non-matching @id and @reverse term values in '${r}':'${l}' and '${n["@id"]}'`,i.ERROR_CODES.INVALID_REVERSE_PROPERTY);if("@nest"in n)throw new i.ErrorCoded(`@nest is not allowed in the reverse property '${r}'`,i.ERROR_CODES.INVALID_REVERSE_PROPERTY);break;case"@container":if(1===t&&(Object.keys(l).length>1||s.Util.CONTAINERS_1_0.indexOf(Object.keys(l)[0])<0))throw new i.ErrorCoded(`Invalid term @container for '${r}' ('${Object.keys(l)}') in 1.0, must be only one of ${s.Util.CONTAINERS_1_0.join(", ")}`,i.ERROR_CODES.INVALID_CONTAINER_MAPPING);for(const e of Object.keys(l)){if("@list"===e&&n["@reverse"])throw new i.ErrorCoded(`Term value can not be @container: @list and @reverse at the same time on '${r}'`,i.ERROR_CODES.INVALID_REVERSE_PROPERTY);if(s.Util.CONTAINERS.indexOf(e)<0)throw new i.ErrorCoded(`Invalid term @container for '${r}' ('${e}'), must be one of ${s.Util.CONTAINERS.join(", ")}`,i.ERROR_CODES.INVALID_CONTAINER_MAPPING)}break;case"@language":c.validateLanguage(l,!0,i.ERROR_CODES.INVALID_LANGUAGE_MAPPING);break;case"@direction":c.validateDirection(l,!0);break;case"@prefix":if(null!==l&&"boolean"!=typeof l)throw new i.ErrorCoded(`Found an invalid term @prefix boolean in: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_PREFIX_VALUE);if(!("@id"in n)&&!s.Util.isValidIri(r))throw new i.ErrorCoded(`Invalid @prefix definition for '${r}' ('${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_TERM_DEFINITION);break;case"@index":if(1===t||!n["@container"]||!n["@container"]["@index"])throw new i.ErrorCoded(`Attempt to add illegal key to value object: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_TERM_DEFINITION);break;case"@nest":if(s.Util.isPotentialKeyword(l)&&"@nest"!==l)throw new i.ErrorCoded(`Found an invalid term @nest value in: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_NEST_VALUE)}}break;default:throw new i.ErrorCoded(`Found an invalid term value: '${r}': '${n}'`,i.ERROR_CODES.INVALID_TERM_DEFINITION)}}}applyBaseEntry(e,t,r){return"string"==typeof e||(r&&!("@base"in e)&&t.parentContext&&"object"==typeof t.parentContext&&"@base"in t.parentContext&&(e["@base"]=t.parentContext["@base"],t.parentContext["@__baseDocument"]&&(e["@__baseDocument"]=!0)),t.baseIRI&&!t.external&&("@base"in e?null===e["@base"]||"string"!=typeof e["@base"]||s.Util.isValidIri(e["@base"])||(e["@base"]=(0,n.resolve)(e["@base"],t.parentContext&&t.parentContext["@base"]||t.baseIRI)):(e["@base"]=t.baseIRI,e["@__baseDocument"]=!0))),e}normalizeContextIri(e,t){if(!s.Util.isValidIri(e))try{e=(0,n.resolve)(e,t)}catch(t){throw new Error(`Invalid context IRI: ${e}`)}return this.redirectSchemaOrgHttps&&e.startsWith("http://schema.org")&&(e="https://schema.org/"),e}async parseInnerContexts(e,t,r){for(const n of null!=r?r:Object.keys(e)){const r=e[n];if(r&&"object"==typeof r&&"@context"in r&&null!==r["@context"]&&!t.ignoreScopedContexts){if(this.validateContext)try{const i=Object.assign(Object.assign({},e),{[n]:Object.assign({},e[n])});delete i[n]["@context"],await this.parse(r["@context"],Object.assign(Object.assign({},t),{external:!1,parentContext:i,ignoreProtection:!0,ignoreRemoteScopedContexts:!0,ignoreScopedContexts:!0}))}catch(e){throw new i.ErrorCoded(e.message,i.ERROR_CODES.INVALID_SCOPED_CONTEXT)}e[n]=Object.assign(Object.assign({},r),{"@context":(await this.parse(r["@context"],Object.assign(Object.assign({},t),{external:!1,minimalProcessing:!0,ignoreRemoteScopedContexts:!0,parentContext:e}))).getContextRaw()})}}return e}async parse(e,t={},r={}){const{baseIRI:n,parentContext:a,external:u,processingMode:l=c.DEFAULT_PROCESSING_MODE,normalizeLanguageTags:d,ignoreProtection:p,minimalProcessing:h}=t,f=t.remoteContexts||{};if(Object.keys(f).length>=this.remoteContextsDepthLimit)throw new i.ErrorCoded("Detected an overflow in remote context inclusions: "+Object.keys(f),i.ERROR_CODES.CONTEXT_OVERFLOW);if(null==e){if(!p&&a&&s.Util.hasProtectedTerms(a))throw new i.ErrorCoded("Illegal context nullification when terms are protected",i.ERROR_CODES.INVALID_CONTEXT_NULLIFICATION);return new o.JsonLdContextNormalized(this.applyBaseEntry({},t,!1))}if("string"==typeof e){const r=this.normalizeContextIri(e,n),i=this.getOverriddenLoad(r,t);if(i)return new o.JsonLdContextNormalized(i);const a=await this.parse(await this.load(r),Object.assign(Object.assign({},t),{baseIRI:r,external:!0,remoteContexts:Object.assign(Object.assign({},f),{[r]:!0})}));return this.applyBaseEntry(a.getContextRaw(),t,!0),a}if(Array.isArray(e)){const r=[],i=await Promise.all(e.map(((e,i)=>{if("string"==typeof e){const a=this.normalizeContextIri(e,n);r[i]=a;return this.getOverriddenLoad(a,t)||this.load(a)}return e})));if(h)return new o.JsonLdContextNormalized(i);const s=await i.reduce(((e,n,a)=>e.then((e=>this.parse(n,Object.assign(Object.assign({},t),{baseIRI:r[a]||t.baseIRI,external:!!r[a]||t.external,parentContext:e.getContextRaw(),remoteContexts:r[a]?Object.assign(Object.assign({},f),{[r[a]]:!0}):f}),{skipValidation:a=1.1))throw new i.ErrorCoded("Context importing is not supported in JSON-LD 1.0",i.ERROR_CODES.INVALID_CONTEXT_ENTRY);if("string"!=typeof e["@import"])throw new i.ErrorCoded("An @import value must be a string, but got "+typeof e["@import"],i.ERROR_CODES.INVALID_IMPORT_VALUE);f=await this.loadImportContext(this.normalizeContextIri(e["@import"],n)),delete e["@import"]}this.applyScopedProtected(f,{processingMode:l},o.defaultExpandOptions);const y=Object.assign(f,e);this.idifyReverseTerms(y),this.normalize(y,{processingMode:l,normalizeLanguageTags:d}),this.applyScopedProtected(y,{processingMode:l},o.defaultExpandOptions);const g=Object.keys(y),m=[];if("object"==typeof a)for(const e in a)e in y?m.push(e):y[e]=a[e];await this.parseInnerContexts(y,t,g);const b=new o.JsonLdContextNormalized(y);return(y&&y["@version"]||c.DEFAULT_PROCESSING_MODE)>=1.1&&(e["@vocab"]&&"string"==typeof e["@vocab"]||""===e["@vocab"])&&(a&&"@vocab"in a&&e["@vocab"].indexOf(":")<0?y["@vocab"]=a["@vocab"]+e["@vocab"]:(s.Util.isCompactIri(e["@vocab"])||e["@vocab"]in y)&&(y["@vocab"]=b.expandTerm(e["@vocab"],!0))),this.expandPrefixedTerms(b,this.expandContentTypeToBase,g),!p&&a&&l>=1.1&&this.validateKeywordRedefinitions(a,y,o.defaultExpandOptions,m),this.validateContext&&!r.skipValidation&&this.validate(y,{processingMode:l}),b}throw new i.ErrorCoded(`Tried parsing a context that is not a string, array or object, but got ${e}`,i.ERROR_CODES.INVALID_LOCAL_CONTEXT)}async load(e){const t=this.documentCache[e];if(t)return t;let r;try{r=await this.documentLoader.load(e)}catch(t){throw new i.ErrorCoded(`Failed to load remote context ${e}: ${t.message}`,i.ERROR_CODES.LOADING_REMOTE_CONTEXT_FAILED)}if(!("@context"in r))throw new i.ErrorCoded(`Missing @context in remote context at ${e}`,i.ERROR_CODES.INVALID_REMOTE_CONTEXT);return this.documentCache[e]=r["@context"]}getOverriddenLoad(e,t){if(e in(t.remoteContexts||{})){if(t.ignoreRemoteScopedContexts)return e;throw new i.ErrorCoded("Detected a cyclic context inclusion of "+e,i.ERROR_CODES.RECURSIVE_CONTEXT_INCLUSION)}return null}async loadImportContext(e){let t=await this.load(e);if("object"!=typeof t||Array.isArray(t))throw new i.ErrorCoded("An imported context must be a single object: "+e,i.ERROR_CODES.INVALID_REMOTE_CONTEXT);if("@import"in t)throw new i.ErrorCoded("An imported context can not import another context: "+e,i.ERROR_CODES.INVALID_CONTEXT_ENTRY);return t=Object.assign({},t),this.containersToHash(t),t}}c.DEFAULT_PROCESSING_MODE=1.1,t.ContextParser=c},40905:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ERROR_CODES=t.ErrorCoded=void 0;class r extends Error{constructor(e,t){super(e),this.code=t}}var n;t.ErrorCoded=r,(n=t.ERROR_CODES||(t.ERROR_CODES={})).COLLIDING_KEYWORDS="colliding keywords",n.CONFLICTING_INDEXES="conflicting indexes",n.CYCLIC_IRI_MAPPING="cyclic IRI mapping",n.INVALID_ID_VALUE="invalid @id value",n.INVALID_INDEX_VALUE="invalid @index value",n.INVALID_NEST_VALUE="invalid @nest value",n.INVALID_PREFIX_VALUE="invalid @prefix value",n.INVALID_PROPAGATE_VALUE="invalid @propagate value",n.INVALID_REVERSE_VALUE="invalid @reverse value",n.INVALID_IMPORT_VALUE="invalid @import value",n.INVALID_VERSION_VALUE="invalid @version value",n.INVALID_BASE_IRI="invalid base IRI",n.INVALID_CONTAINER_MAPPING="invalid container mapping",n.INVALID_CONTEXT_ENTRY="invalid context entry",n.INVALID_CONTEXT_NULLIFICATION="invalid context nullification",n.INVALID_DEFAULT_LANGUAGE="invalid default language",n.INVALID_INCLUDED_VALUE="invalid @included value",n.INVALID_IRI_MAPPING="invalid IRI mapping",n.INVALID_JSON_LITERAL="invalid JSON literal",n.INVALID_KEYWORD_ALIAS="invalid keyword alias",n.INVALID_LANGUAGE_MAP_VALUE="invalid language map value",n.INVALID_LANGUAGE_MAPPING="invalid language mapping",n.INVALID_LANGUAGE_TAGGED_STRING="invalid language-tagged string",n.INVALID_LANGUAGE_TAGGED_VALUE="invalid language-tagged value",n.INVALID_LOCAL_CONTEXT="invalid local context",n.INVALID_REMOTE_CONTEXT="invalid remote context",n.INVALID_REVERSE_PROPERTY="invalid reverse property",n.INVALID_REVERSE_PROPERTY_MAP="invalid reverse property map",n.INVALID_REVERSE_PROPERTY_VALUE="invalid reverse property value",n.INVALID_SCOPED_CONTEXT="invalid scoped context",n.INVALID_SCRIPT_ELEMENT="invalid script element",n.INVALID_SET_OR_LIST_OBJECT="invalid set or list object",n.INVALID_TERM_DEFINITION="invalid term definition",n.INVALID_TYPE_MAPPING="invalid type mapping",n.INVALID_TYPE_VALUE="invalid type value",n.INVALID_TYPED_VALUE="invalid typed value",n.INVALID_VALUE_OBJECT="invalid value object",n.INVALID_VALUE_OBJECT_VALUE="invalid value object value",n.INVALID_VOCAB_MAPPING="invalid vocab mapping",n.IRI_CONFUSED_WITH_PREFIX="IRI confused with prefix",n.KEYWORD_REDEFINITION="keyword redefinition",n.LOADING_DOCUMENT_FAILED="loading document failed",n.LOADING_REMOTE_CONTEXT_FAILED="loading remote context failed",n.MULTIPLE_CONTEXT_LINK_HEADERS="multiple context link headers",n.PROCESSING_MODE_CONFLICT="processing mode conflict",n.PROTECTED_TERM_REDEFINITION="protected term redefinition",n.CONTEXT_OVERFLOW="context overflow",n.INVALID_BASE_DIRECTION="invalid base direction",n.RECURSIVE_CONTEXT_INCLUSION="recursive context inclusion",n.INVALID_STREAMING_KEY_ORDER="invalid streaming key order",n.INVALID_EMBEDDED_NODE="invalid embedded node",n.INVALID_ANNOTATION="invalid annotation"},76920:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FetchDocumentLoader=void 0,r(17082);const n=r(40905),i=r(75441),a=r(9929);t.FetchDocumentLoader=class{constructor(e){this.fetcher=e}async load(e){const t=await(this.fetcher||fetch)(e,{headers:new Headers({accept:"application/ld+json"})});if(t.ok&&t.headers){let r=t.headers.get("Content-Type");if(r){const e=r.indexOf(";");e>0&&(r=r.substr(0,e))}if("application/ld+json"===r)return await t.json();if(t.headers.has("Link")){let r;if(t.headers.forEach(((t,n)=>{if("link"===n){const n=(0,i.parse)(t);for(const t of n.get("type","application/ld+json"))if("alternate"===t.rel){if(r)throw new Error("Multiple JSON-LD alternate links were found on "+e);r=(0,a.resolve)(t.uri,e)}}})),r)return this.load(r)}throw new n.ErrorCoded(`Unsupported JSON-LD media type ${r}`,n.ERROR_CODES.LOADING_DOCUMENT_FAILED)}throw new Error(t.statusText||`Status code: ${t.status}`)}}},11971:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},89715:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},39426:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultExpandOptions=t.JsonLdContextNormalized=void 0;const n=r(9929),i=r(40905),a=r(45512);t.JsonLdContextNormalized=class{constructor(e){this.contextRaw=e}getContextRaw(){return this.contextRaw}expandTerm(e,r,o=t.defaultExpandOptions){const s=this.contextRaw[e];if(null===s||s&&null===s["@id"])return null;let c=!0;if(s&&r){const t=a.Util.getContextValueId(s);if(t&&t!==e){if("string"==typeof t&&(a.Util.isValidIri(t)||a.Util.isValidKeyword(t)))return t;a.Util.isPotentialKeyword(t)||(c=!1)}}const u=a.Util.getPrefix(e,this.contextRaw),l=this.contextRaw["@vocab"],d=(!!l||""===l)&&l.indexOf(":")<0,p=this.contextRaw["@base"],h=a.Util.isPotentialKeyword(e);if(u){const t=this.contextRaw[u],r=a.Util.getContextValueId(t);if(r){if("string"!=typeof t&&o.allowPrefixForcing){if("_"!==r[0]&&!h&&!t["@prefix"]&&!(e in this.contextRaw))return e}else if(!a.Util.isSimpleTermDefinitionPrefix(r,o))return e;return r+e.substr(u.length+1)}}else{if(r&&(l||""===l||o.allowVocabRelativeToBase&&p&&d)&&!h&&!a.Util.isCompactIri(e)){if(d){if(o.allowVocabRelativeToBase)return(l||p?(0,n.resolve)(l,p):"")+e;throw new i.ErrorCoded(`Relative vocab expansion for term '${e}' with vocab '${l}' is not allowed.`,i.ERROR_CODES.INVALID_VOCAB_MAPPING)}return l+e}if(!r&&p&&!h&&!a.Util.isCompactIri(e))return(0,n.resolve)(e,p)}if(c)return e;throw new i.ErrorCoded(`Invalid IRI mapping found for context entry '${e}': '${JSON.stringify(s)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING)}compactIri(e,t){if(t&&this.contextRaw["@vocab"]&&e.startsWith(this.contextRaw["@vocab"]))return e.substr(this.contextRaw["@vocab"].length);if(!t&&this.contextRaw["@base"]&&e.startsWith(this.contextRaw["@base"]))return e.substr(this.contextRaw["@base"].length);const r={prefix:"",suffix:e};for(const n in this.contextRaw){const i=this.contextRaw[n];if(i&&!a.Util.isPotentialKeyword(n)){const o=a.Util.getContextValueId(i);if(e.startsWith(o)){const i=e.substr(o.length);if(i)i.length{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;class r{static isCompactIri(e){return e.indexOf(":")>0&&!(e&&"#"===e[0])}static getPrefix(e,t){if(e&&"#"===e[0])return null;const r=e.indexOf(":");if(r>=0){if(e.length>r+1&&"/"===e.charAt(r+1)&&"/"===e.charAt(r+2))return null;const n=e.substr(0,r);if("_"===n)return null;if(t[n])return n}return null}static getContextValueId(e){if(null===e||"string"==typeof e)return e;return e["@id"]||null}static isSimpleTermDefinitionPrefix(e,t){return!r.isPotentialKeyword(e)&&(t.allowPrefixNonGenDelims||"string"==typeof e&&("_"===e[0]||r.isPrefixIriEndingWithGenDelim(e)))}static isPotentialKeyword(e){return"string"==typeof e&&r.KEYWORD_REGEX.test(e)}static isPrefixIriEndingWithGenDelim(e){return r.ENDS_WITH_GEN_DELIM.test(e)}static isPrefixValue(e){return e&&("string"==typeof e||e&&"object"==typeof e)}static isValidIri(e){return Boolean(e&&r.IRI_REGEX.test(e))}static isValidIriWeak(e){return!!e&&":"!==e[0]&&r.IRI_REGEX_WEAK.test(e)}static isValidKeyword(e){return r.VALID_KEYWORDS[e]}static isTermProtected(e,t){const r=e[t];return!("string"==typeof r)&&r&&r["@protected"]}static hasProtectedTerms(e){for(const t of Object.keys(e))if(r.isTermProtected(e,t))return!0;return!1}static isReservedInternalKeyword(e){return e.startsWith("@__")}static deepEqual(e,t){const r=Object.keys(e),n=Object.keys(t);return r.length===n.length&&r.every((r=>{const n=e[r],i=t[r];return n===i||null!==n&&null!==i&&"object"==typeof n&&"object"==typeof i&&this.deepEqual(n,i)}))}}r.IRI_REGEX=/^([A-Za-z][A-Za-z0-9+-.]*|_):[^ "<>{}|\\\[\]`#]*(#[^#]*)?$/,r.IRI_REGEX_WEAK=/(?::[^:])|\//,r.KEYWORD_REGEX=/^@[a-z]+$/i,r.ENDS_WITH_GEN_DELIM=/[:/?#\[\]@]$/,r.REGEX_LANGUAGE_TAG=/^[a-zA-Z]+(-[a-zA-Z0-9]+)*$/,r.REGEX_DIRECTION_TAG=/^(ltr)|(rtl)$/,r.VALID_KEYWORDS={"@annotation":!0,"@base":!0,"@container":!0,"@context":!0,"@direction":!0,"@graph":!0,"@id":!0,"@import":!0,"@included":!0,"@index":!0,"@json":!0,"@language":!0,"@list":!0,"@nest":!0,"@none":!0,"@prefix":!0,"@propagate":!0,"@protected":!0,"@reverse":!0,"@set":!0,"@type":!0,"@value":!0,"@version":!0,"@vocab":!0},r.EXPAND_KEYS_BLACKLIST=["@base","@vocab","@language","@version","@direction"],r.ALIAS_DOMAIN_BLACKLIST=["@container","@graph","@id","@index","@list","@nest","@none","@prefix","@reverse","@set","@type","@value","@version"],r.ALIAS_RANGE_BLACKLIST=["@context","@preserve"],r.CONTAINERS=["@list","@set","@index","@language","@graph","@id","@type"],r.CONTAINERS_1_0=["@list","@set","@index"],t.Util=r},17082:function(){!function(e){!function(t){var r="URLSearchParams"in e,n="Symbol"in e&&"iterator"in Symbol,i="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),a="FormData"in e,o="ArrayBuffer"in e;if(o)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function u(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function l(e){return"string"!=typeof e&&(e=String(e)),e}function d(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function p(e){this.map={},e instanceof p?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function h(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function f(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function y(e){var t=new FileReader,r=f(t);return t.readAsArrayBuffer(e),r}function g(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:i&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:a&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:r&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():o&&i&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=g(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):o&&(ArrayBuffer.prototype.isPrototypeOf(e)||c(e))?this._bodyArrayBuffer=g(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var e=h(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?h(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(y)}),this.text=function(){var e,t,r,n=h(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,r=f(t=new FileReader),t.readAsText(e),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?n:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function _(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function w(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new p(t.headers),this.url=t.url||"",this._initBody(e)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},m.call(v.prototype),m.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},w.error=function(){var e=new w(null,{status:0,statusText:""});return e.type="error",e};var T=[301,302,303,307,308];w.redirect=function(e,t){if(-1===T.indexOf(t))throw new RangeError("Invalid status code");return new w(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function S(e,r){return new Promise((function(n,a){var o=new v(e,r);if(o.signal&&o.signal.aborted)return a(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function c(){s.abort()}s.onload=function(){var e,t,r={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new p,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t)};r.url="responseURL"in s?s.responseURL:r.headers.get("X-Request-URL");var i="response"in s?s.response:s.responseText;n(new w(i,r))},s.onerror=function(){a(new TypeError("Network request failed"))},s.ontimeout=function(){a(new TypeError("Network request failed"))},s.onabort=function(){a(new t.DOMException("Aborted","AbortError"))},s.open(o.method,o.url,!0),"include"===o.credentials?s.withCredentials=!0:"omit"===o.credentials&&(s.withCredentials=!1),"responseType"in s&&i&&(s.responseType="blob"),o.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),o.signal&&(o.signal.addEventListener("abort",c),s.onreadystatechange=function(){4===s.readyState&&o.signal.removeEventListener("abort",c)}),s.send(void 0===o._bodyInit?null:o._bodyInit)}))}S.polyfill=!0,e.fetch||(e.fetch=S,e.Headers=p,e.Request=v,e.Response=w),t.Headers=p,t.Request=v,t.Response=w,t.fetch=S,Object.defineProperty(t,"__esModule",{value:!0})}({})}("undefined"!=typeof self?self:this)},50631:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(90114),t)},46240:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContextTree=void 0;class r{constructor(){this.subTrees={}}getContext(e){if(e.length>0){const[t,...r]=e,n=this.subTrees[t];if(n){const e=n.getContext(r);if(e)return e.then((({context:e,depth:t})=>({context:e,depth:t+1})))}}return this.context?this.context.then((e=>({context:e,depth:0}))):null}setContext(e,t){if(0===e.length)this.context=t;else{const[n,...i]=e;let a=this.subTrees[n];a||(a=this.subTrees[n]=new r),a.setContext(i,t)}}removeContext(e){this.setContext(e,null)}}t.ContextTree=r},90114:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JsonLdParser=void 0;const n=r(36885),i=r(27202),a=r(58521),o=r(11272),s=r(45947),c=r(62885),u=r(29997),l=r(66700),d=r(37071),p=r(48978),h=r(30643),f=r(58865),y=r(23787),g=r(30635),m=r(94382),b=r(24292),v=r(22135),_=r(75441),w=r(6042);class T extends a.Transform{constructor(e){super({readableObjectMode:!0}),e=e||{},this.options=e,this.parsingContext=new b.ParsingContext(Object.assign({parser:this},e)),this.util=new v.Util({dataFactory:e.dataFactory,parsingContext:this.parsingContext}),this.jsonParser=new n,this.contextJobs=[],this.typeJobs=[],this.contextAwaitingJobs=[],this.lastDepth=0,this.lastKeys=[],this.lastOnValueJob=Promise.resolve(),this.attachJsonParserListeners(),this.on("end",(()=>{void 0!==this.jsonParser.mode&&this.emit("error",new Error("Unclosed document"))}))}static fromHttpResponse(e,t,r,n){let a,o,s=["application/activity+json"];if(n&&n.wellKnownMediaTypes&&(s=n.wellKnownMediaTypes),"application/ld+json"!==t&&!s.includes(t)){if("application/json"!==t&&!t.endsWith("+json"))throw new i.ErrorCoded(`Unsupported JSON-LD media type ${t}`,i.ERROR_CODES.LOADING_DOCUMENT_FAILED);if(r&&r.has("Link")&&r.forEach(((t,r)=>{if("link"===r){const r=(0,_.parse)(t);for(const t of r.get("rel","http://www.w3.org/ns/json-ld#context")){if(a)throw new i.ErrorCoded("Multiple JSON-LD context link headers were found on "+e,i.ERROR_CODES.MULTIPLE_CONTEXT_LINK_HEADERS);a=t.uri}}})),!a&&!(null==n?void 0:n.ignoreMissingContextLinkHeader))throw new i.ErrorCoded(`Missing context link header for media type ${t} on ${e}`,i.ERROR_CODES.LOADING_DOCUMENT_FAILED)}if(r&&r.has("Content-Type")){const e=r.get("Content-Type"),t=/; *profile=([^"]*)/.exec(e);t&&"http://www.w3.org/ns/json-ld#streaming"===t[1]&&(o=!0)}return new T(Object.assign({baseIRI:e,context:a,streamingProfile:o},n||{}))}import(e){if("pipe"in e){e.on("error",(e=>t.emit("error",e)));const t=e.pipe(new T(this.options));return t}{const t=new a.PassThrough({readableObjectMode:!0});e.on("error",(e=>r.emit("error",e))),e.on("data",(e=>t.push(e))),e.on("end",(()=>t.push(null)));const r=t.pipe(new T(this.options));return r}}_transform(e,t,r){this.jsonParser.write(e),this.lastOnValueJob.then((()=>r()),(e=>r(e)))}async newOnValueJob(e,t,r,n){let a=!0;if(n&&r1&&(l=this.parsingContext.validationStack[this.parsingContext.validationStack.length-1].property);for(let t=Math.max(1,this.parsingContext.validationStack.length-1);t=0?this.parsingContext.idStack[e-r-1]:[await this.util.getGraphContainerValue(t,e)];if(a)for(const t of a){this.parsingContext.emittedStack[e]=!0;for(const r of n)this.util.emitQuadChecked(e,i,r.predicate,r.object,t,r.reverse,r.isEmbedded)}else{const r=this.parsingContext.getUnidentifiedGraphBufferSafe(e-await this.util.getDepthOffsetGraph(e,t)-1);for(const e of n)e.reverse?r.push({object:i,predicate:e.predicate,subject:e.object,isEmbedded:e.isEmbedded}):r.push({object:e.object,predicate:e.predicate,subject:i,isEmbedded:e.isEmbedded})}}this.parsingContext.unidentifiedValuesBuffer.splice(e,1),this.parsingContext.literalStack.splice(e,1),this.parsingContext.jsonLiteralStack.splice(e,1)}const a=this.parsingContext.unidentifiedGraphsBuffer[e];if(a){for(const t of r){const r=1!==e||"BlankNode"!==t.termType||this.parsingContext.topLevelProperties?t:this.util.getDefaultGraph();this.parsingContext.emittedStack[e]=!0;for(const t of a)this.parsingContext.emitQuad(e,this.util.dataFactory.quad(t.subject,t.predicate,t.object,r))}this.parsingContext.unidentifiedGraphsBuffer.splice(e,1)}const o=this.parsingContext.annotationsBuffer[e];if(o){o.length>0&&1===e&&this.parsingContext.emitError(new i.ErrorCoded("Annotations can not be made on top-level nodes",i.ERROR_CODES.INVALID_ANNOTATION));const t=this.parsingContext.getAnnotationsBufferSafe(e-1);for(const e of o)t.push(e);delete this.parsingContext.annotationsBuffer[e]}}async validateKey(e,t,r){for(const n of T.ENTRY_HANDLERS)if(await n.validate(this.parsingContext,this.util,e,t,r))return{valid:!0,property:r||n.isPropertyHandler()};return{valid:!1,property:!1}}attachJsonParserListeners(){this.jsonParser.onValue=e=>{const t=this.jsonParser.stack.length,r=new Array(t+1).fill(0).map(((e,r)=>r===t?this.jsonParser.key:this.jsonParser.stack[r].key));if(!this.isParsingContextInner(t)){const n=()=>this.newOnValueJob(r,e,t,!0);if(this.parsingContext.streamingProfile||this.parsingContext.contextTree.getContext(r.slice(0,-1)))this.lastOnValueJob=this.lastOnValueJob.then(n);else if("@context"===r[t]){let e=this.contextJobs[t];e||(e=this.contextJobs[t]=[]),e.push(n)}else this.contextAwaitingJobs.push({job:n,keys:r,depth:t});this.parsingContext.streamingProfile||0!==t||(this.lastOnValueJob=this.lastOnValueJob.then((()=>this.executeBufferedJobs())))}},this.jsonParser.onError=e=>{this.emit("error",e)}}isParsingContextInner(e){for(let t=e;t>0;t--)if("@context"===this.jsonParser.stack[t-1].key)return!0;return!1}async executeBufferedJobs(){for(const e of this.contextJobs)if(e)for(const t of e)await t();this.parsingContext.unaliasedKeywordCacheStack.splice(0);const e=[];for(const t of this.contextAwaitingJobs)"@type"===await this.util.unaliasKeyword(t.keys[t.depth],t.keys,t.depth,!0)||"number"==typeof t.keys[t.depth]&&"@type"===await this.util.unaliasKeyword(t.keys[t.depth-1],t.keys,t.depth-1,!0)?this.typeJobs.push({job:t.job,keys:t.keys.slice(0,t.keys.length-1)}):e.push(t);for(const t of e){if(this.typeJobs.length>0){const e=[],r=[];for(let n=0;ne.keys.length-t.keys.length));for(const e of n)await e.job();const i=r.sort().reverse();for(const e of i)this.typeJobs.splice(e,1)}await t.job()}}}T.DEFAULT_PROCESSING_MODE="1.1",T.ENTRY_HANDLERS=[new o.EntryHandlerArrayValue,new l.EntryHandlerKeywordContext,new p.EntryHandlerKeywordId,new h.EntryHandlerKeywordIncluded,new d.EntryHandlerKeywordGraph,new f.EntryHandlerKeywordNest,new y.EntryHandlerKeywordType,new m.EntryHandlerKeywordValue,new w.EntryHandlerKeywordAnnotation,new s.EntryHandlerContainer,new g.EntryHandlerKeywordUnknownFallback,new u.EntryHandlerPredicate,new c.EntryHandlerInvalidFallback],t.JsonLdParser=T},24292:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParsingContext=void 0;const n=r(27202),i=r(40905),a=r(46240),o=r(90114);class s{constructor(e){this.contextParser=new n.ContextParser({documentLoader:e.documentLoader,skipValidation:e.skipContextValidation}),this.streamingProfile=!!e.streamingProfile,this.baseIRI=e.baseIRI,this.produceGeneralizedRdf=!!e.produceGeneralizedRdf,this.allowSubjectList=!!e.allowSubjectList,this.processingMode=e.processingMode||o.JsonLdParser.DEFAULT_PROCESSING_MODE,this.strictValues=!!e.strictValues,this.validateValueIndexes=!!e.validateValueIndexes,this.defaultGraph=e.defaultGraph,this.rdfDirection=e.rdfDirection,this.normalizeLanguageTags=e.normalizeLanguageTags,this.streamingProfileAllowOutOfOrderPlainType=e.streamingProfileAllowOutOfOrderPlainType,this.rdfstar=!1!==e.rdfstar,this.rdfstarReverseInEmbedded=e.rdfstarReverseInEmbedded,this.topLevelProperties=!1,this.activeProcessingMode=parseFloat(this.processingMode),this.processingStack=[],this.processingType=[],this.emittedStack=[],this.idStack=[],this.graphStack=[],this.graphContainerTermStack=[],this.listPointerStack=[],this.contextTree=new a.ContextTree,this.literalStack=[],this.validationStack=[],this.unaliasedKeywordCacheStack=[],this.jsonLiteralStack=[],this.unidentifiedValuesBuffer=[],this.unidentifiedGraphsBuffer=[],this.annotationsBuffer=[],this.pendingContainerFlushBuffers=[],this.parser=e.parser,e.context?(this.rootContext=this.parseContext(e.context),this.rootContext.then((e=>this.validateContext(e)))):this.rootContext=Promise.resolve(new n.JsonLdContextNormalized(this.baseIRI?{"@base":this.baseIRI,"@__baseDocument":!0}:{}))}async parseContext(e,t,r){return this.contextParser.parse(e,{baseIRI:this.baseIRI,ignoreProtection:r,normalizeLanguageTags:this.normalizeLanguageTags,parentContext:t,processingMode:this.activeProcessingMode})}validateContext(e){const t=e.getContextRaw()["@version"];if(t){if(this.activeProcessingMode&&t>this.activeProcessingMode)throw new i.ErrorCoded(`Unsupported JSON-LD version '${t}' under active processing mode ${this.activeProcessingMode}.`,i.ERROR_CODES.PROCESSING_MODE_CONFLICT);if(this.activeProcessingMode&&t0&&!1===i.context.getContextRaw()["@propagate"]&&i.depth!==t&&!r);return 0===i.depth&&!1===i.context.getContextRaw()["@propagate"]&&i.depth!==t&&(i.context=new n.JsonLdContextNormalized({})),i}async newOnValueJob(e,t,r,n){await this.parser.newOnValueJob(e,t,r,n)}async handlePendingContainerFlushBuffers(){if(this.pendingContainerFlushBuffers.length>0){for(const e of this.pendingContainerFlushBuffers)await this.parser.flushBuffer(e.depth,e.keys),this.parser.flushStacks(e.depth);return this.pendingContainerFlushBuffers.splice(0,this.pendingContainerFlushBuffers.length),!0}return!1}emitQuad(e,t){1===e&&(this.topLevelProperties=!0),this.parser.push(t)}emitError(e){this.parser.emit("error",e)}emitContext(e){this.parser.emit("context",e)}getUnidentifiedValueBufferSafe(e){let t=this.unidentifiedValuesBuffer[e];return t||(t=[],this.unidentifiedValuesBuffer[e]=t),t}getUnidentifiedGraphBufferSafe(e){let t=this.unidentifiedGraphsBuffer[e];return t||(t=[],this.unidentifiedGraphsBuffer[e]=t),t}getAnnotationsBufferSafe(e){let t=this.annotationsBuffer[e];return t||(t=[],this.annotationsBuffer[e]=t),t}getExpandOptions(){return s.EXPAND_OPTIONS[this.activeProcessingMode]}shiftStack(e,t){const r=this.idStack[e+t];if(r&&(this.idStack[e]=r,this.emittedStack[e]=!0,delete this.idStack[e+t]),this.pendingContainerFlushBuffers.length)for(const r of this.pendingContainerFlushBuffers)r.depth>=e+t&&(r.depth-=t,r.keys.splice(e,t));this.unidentifiedValuesBuffer[e+t]&&(this.unidentifiedValuesBuffer[e]=this.unidentifiedValuesBuffer[e+t],delete this.unidentifiedValuesBuffer[e+t]),this.annotationsBuffer[e+t-1]&&(this.annotationsBuffer[e-1]||(this.annotationsBuffer[e-1]=[]),this.annotationsBuffer[e-1]=[...this.annotationsBuffer[e-1],...this.annotationsBuffer[e+t-1]],delete this.annotationsBuffer[e+t-1])}}s.EXPAND_OPTIONS={1:{allowPrefixForcing:!1,allowPrefixNonGenDelims:!1,allowVocabRelativeToBase:!1},1.1:{allowPrefixForcing:!0,allowPrefixNonGenDelims:!1,allowVocabRelativeToBase:!0}},t.ParsingContext=s},22135:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;const n=r(27202),i=r(18050),a=r(45947),o=r(33619);class s{constructor(e){this.parsingContext=e.parsingContext,this.dataFactory=e.dataFactory||new i.DataFactory,this.rdfFirst=this.dataFactory.namedNode(s.RDF+"first"),this.rdfRest=this.dataFactory.namedNode(s.RDF+"rest"),this.rdfNil=this.dataFactory.namedNode(s.RDF+"nil"),this.rdfType=this.dataFactory.namedNode(s.RDF+"type"),this.rdfJson=this.dataFactory.namedNode(s.RDF+"JSON")}static getContextValue(e,t,r,n){const i=e.getContextRaw()[r];if(!i)return n;const a=i[t];return void 0===a?n:a}static getContextValueContainer(e,t){return s.getContextValue(e,"@container",t,{"@set":!0})}static getContextValueType(e,t){const r=s.getContextValue(e,"@type",t,null);return"@none"===r?null:r}static getContextValueLanguage(e,t){return s.getContextValue(e,"@language",t,e.getContextRaw()["@language"]||null)}static getContextValueDirection(e,t){return s.getContextValue(e,"@direction",t,e.getContextRaw()["@direction"]||null)}static isContextValueReverse(e,t){return!!s.getContextValue(e,"@reverse",t,null)}static getContextValueIndex(e,t){return s.getContextValue(e,"@index",t,e.getContextRaw()["@index"]||null)}static isPropertyReverse(e,t,r){return"@reverse"===r!==s.isContextValueReverse(e,t)}static isPropertyInEmbeddedNode(e){return"@id"===e}static isPropertyInAnnotationObject(e){return"@annotation"===e}static isValidIri(e){return null!==e&&n.Util.isValidIri(e)}static isPrefixArray(e,t){if(e.length>t.length)return!1;for(let r=0;r1)throw new n.ErrorCoded(`Found illegal neighbouring entries next to @set for key: '${t}'`,n.ERROR_CODES.INVALID_SET_OR_LIST_OBJECT);return[]}if("@list"in r){if(Object.keys(r).length>1)throw new n.ErrorCoded(`Found illegal neighbouring entries next to @list for key: '${t}'`,n.ERROR_CODES.INVALID_SET_OR_LIST_OBJECT);const e=r["@list"];return Array.isArray(e)?0===e.length?[this.rdfNil]:this.parsingContext.idStack[i+1]||[]:await this.valueToTerm(await this.parsingContext.getContext(a),t,e,i-1,a.slice(0,-1))}if("@reverse"in r&&"boolean"==typeof r["@reverse"])return[];if("@graph"in s.getContextValueContainer(await this.parsingContext.getContext(a),t)){const e=this.parsingContext.graphContainerTermStack[i+1];return e?Object.values(e):[this.dataFactory.blankNode()]}if("@id"in r){if(Object.keys(r).length>1&&(e=await this.parsingContext.getContext(a,0)),"@context"in r&&(e=await this.parsingContext.parseContext(r["@context"],e.getContextRaw())),"@vocab"===r["@type"])return this.nullableTermToArray(this.createVocabOrBaseTerm(e,r["@id"]));{const t=r["@id"];let a;if("object"==typeof t){if(!this.parsingContext.rdfstar)throw new n.ErrorCoded(`Found illegal @id '${r}'`,n.ERROR_CODES.INVALID_ID_VALUE);a=this.parsingContext.idStack[i+1][0]}else a=this.resourceToTerm(e,t);return this.nullableTermToArray(a)}}return this.parsingContext.emittedStack[i+1]||r&&"object"==typeof r&&0===Object.keys(r).length?this.parsingContext.idStack[i+1]||(this.parsingContext.idStack[i+1]=[this.dataFactory.blankNode()]):[];case"string":return this.nullableTermToArray(this.stringValueToTerm(i,await this.getContextSelfOrPropertyScoped(e,t),t,r,null));case"boolean":return this.nullableTermToArray(this.stringValueToTerm(i,await this.getContextSelfOrPropertyScoped(e,t),t,Boolean(r).toString(),this.dataFactory.namedNode(s.XSD_BOOLEAN)));case"number":return this.nullableTermToArray(this.stringValueToTerm(i,await this.getContextSelfOrPropertyScoped(e,t),t,r,this.dataFactory.namedNode(r%1==0&&r<1e21?s.XSD_INTEGER:s.XSD_DOUBLE)));default:return this.parsingContext.emitError(new Error(`Could not determine the RDF type of a ${o}`)),[]}}async getContextSelfOrPropertyScoped(e,t){const r=e.getContextRaw()[t];return r&&"object"==typeof r&&"@context"in r&&(e=await this.parsingContext.parseContext(r,e.getContextRaw(),!0)),e}nullableTermToArray(e){return e?[e]:[]}predicateToTerm(e,t){const r=e.expandTerm(t,!0,this.parsingContext.getExpandOptions());return r?"_"===r[0]&&":"===r[1]?this.parsingContext.produceGeneralizedRdf?this.dataFactory.blankNode(r.substr(2)):null:s.isValidIri(r)?this.dataFactory.namedNode(r):r&&this.parsingContext.strictValues?(this.parsingContext.emitError(new n.ErrorCoded(`Invalid predicate IRI: ${r}`,n.ERROR_CODES.INVALID_IRI_MAPPING)),null):null:null}resourceToTerm(e,t){if(t.startsWith("_:"))return this.dataFactory.blankNode(t.substr(2));const r=e.expandTerm(t,!1,this.parsingContext.getExpandOptions());if(!s.isValidIri(r)){if(!r||!this.parsingContext.strictValues)return null;this.parsingContext.emitError(new Error(`Invalid resource IRI: ${r}`))}return this.dataFactory.namedNode(r)}createVocabOrBaseTerm(e,t){if(t.startsWith("_:"))return this.dataFactory.blankNode(t.substr(2));const r=this.parsingContext.getExpandOptions();let n=e.expandTerm(t,!0,r);if(n===t&&(n=e.expandTerm(t,!1,r)),!s.isValidIri(n)){if(!n||!this.parsingContext.strictValues||n.startsWith("@"))return null;this.parsingContext.emitError(new Error(`Invalid term IRI: ${n}`))}return this.dataFactory.namedNode(n)}intToString(e,t){return"number"==typeof e?Number.isFinite(e)?e%1!=0||t&&t.value===s.XSD_DOUBLE?e.toExponential(15).replace(/(\d)0*e\+?/,"$1E"):Number(e).toString():e>0?"INF":"-INF":e}stringValueToTerm(e,t,r,n,i){const a=s.getContextValueType(t,r);if(a)if("@id"===a){if(!i)return this.resourceToTerm(t,this.intToString(n,i))}else if("@vocab"===a){if(!i)return this.createVocabOrBaseTerm(t,this.intToString(n,i))}else i=this.dataFactory.namedNode(a);if(!i){const a=s.getContextValueLanguage(t,r),o=s.getContextValueDirection(t,r);return o&&this.parsingContext.rdfDirection?this.createLanguageDirectionLiteral(e,this.intToString(n,i),a,o):this.dataFactory.literal(this.intToString(n,i),a)}return this.dataFactory.literal(this.intToString(n,i),i)}createLanguageDirectionLiteral(e,t,r,n){if("i18n-datatype"===this.parsingContext.rdfDirection)return r||(r=""),this.dataFactory.literal(t,this.dataFactory.namedNode(`https://www.w3.org/ns/i18n#${r}_${n}`));{const i=this.dataFactory.blankNode(),a=this.getDefaultGraph();return this.parsingContext.emitQuad(e,this.dataFactory.quad(i,this.dataFactory.namedNode(s.RDF+"value"),this.dataFactory.literal(t),a)),r&&this.parsingContext.emitQuad(e,this.dataFactory.quad(i,this.dataFactory.namedNode(s.RDF+"language"),this.dataFactory.literal(r),a)),this.parsingContext.emitQuad(e,this.dataFactory.quad(i,this.dataFactory.namedNode(s.RDF+"direction"),this.dataFactory.literal(n),a)),i}}valueToJsonString(e){return o(e)}async unaliasKeyword(e,t,r,i,a){if(Number.isInteger(e))return e;if(!i){const e=this.parsingContext.unaliasedKeywordCacheStack[r];if(e)return e}if(!n.Util.isPotentialKeyword(e)){let r=(a=a||await this.parsingContext.getContext(t)).getContextRaw()[e];r&&"object"==typeof r&&(r=r["@id"]),n.Util.isValidKeyword(r)&&(e=r)}return i?e:this.parsingContext.unaliasedKeywordCacheStack[r]=e}async unaliasKeywordParent(e,t){return await this.unaliasKeyword(t>0&&e[t-1],e,t-1)}async unaliasKeywords(e,t,r,n){const i={};for(const a in e)i[await this.unaliasKeyword(a,t,r+1,!0,n)]=e[a];return i}async isLiteral(e,t){for(let r=t;r>=0;r--){if("@annotation"===await this.unaliasKeyword(e[r],e,r))return!1;if(this.parsingContext.literalStack[r]||this.parsingContext.jsonLiteralStack[r])return!0}return!1}async getDepthOffsetGraph(e,t){for(let r=e-1;r>0;r--)if("@graph"===await this.unaliasKeyword(t[r],t,r)){const n=(await a.EntryHandlerContainer.getContainerHandler(this.parsingContext,t,r)).containers;return a.EntryHandlerContainer.isComplexGraphContainer(n)?-1:e-r-1}return-1}validateReverseSubject(e){if("Literal"===e.termType)throw new n.ErrorCoded(`Found illegal literal in subject position: ${e.value}`,n.ERROR_CODES.INVALID_REVERSE_PROPERTY_VALUE)}getDefaultGraph(){return this.parsingContext.defaultGraph||this.dataFactory.defaultGraph()}async getGraphContainerValue(e,t){let r=this.getDefaultGraph();const{containers:n,depth:i}=await a.EntryHandlerContainer.getContainerHandler(this.parsingContext,e,t);if("@graph"in n){const t=a.EntryHandlerContainer.getContainerGraphIndex(n,i,e),o=this.parsingContext.graphContainerTermStack[i];if(r=o?o[t]:null,!r){let a=null;if("@id"in n){const t=await this.getContainerKey(e[i],e,i);null!==t&&(a=await this.resourceToTerm(await this.parsingContext.getContext(e),t))}a||(a=this.dataFactory.blankNode()),this.parsingContext.graphContainerTermStack[i]||(this.parsingContext.graphContainerTermStack[i]={}),r=this.parsingContext.graphContainerTermStack[i][t]=a}}return r}async getPropertiesDepth(e,t){let r=t;for(let n=t-1;n>0;n--)if("number"!=typeof e[n]){const t=await this.unaliasKeyword(e[n],e,n);if("@reverse"===t)return n;if("@nest"!==t)return r;r=n}return r}async getContainerKey(e,t,r){const n=await this.unaliasKeyword(e,t,r);return"@none"===n?null:n}validateReverseInEmbeddedNode(e,t,r){if(r&&t&&!this.parsingContext.rdfstarReverseInEmbedded)throw new n.ErrorCoded(`Illegal reverse property in embedded node in ${e}`,n.ERROR_CODES.INVALID_EMBEDDED_NODE)}emitQuadChecked(e,t,r,i,a,o,s){let c;if(o?(this.validateReverseSubject(i),c=this.dataFactory.quad(i,r,t,a)):c=this.dataFactory.quad(t,r,i,a),s){if("DefaultGraph"!==c.graph.termType&&(c=this.dataFactory.quad(c.subject,c.predicate,c.object)),this.parsingContext.idStack[e-1])throw new n.ErrorCoded("Illegal multiple properties in an embedded node",n.ERROR_CODES.INVALID_EMBEDDED_NODE);this.parsingContext.idStack[e-1]=[c]}else this.parsingContext.emitQuad(e,c);const u=this.parsingContext.annotationsBuffer[e];if(u){for(const t of u)this.emitAnnotation(e,c,t);delete this.parsingContext.annotationsBuffer[e]}}emitAnnotation(e,t,r){let n;r.reverse?(this.validateReverseSubject(r.object),n=this.dataFactory.quad(r.object,r.predicate,t)):n=this.dataFactory.quad(t,r.predicate,r.object),this.parsingContext.emitQuad(e,n);for(const t of r.nestedAnnotations)this.emitAnnotation(e,n,t)}}s.XSD="http://www.w3.org/2001/XMLSchema#",s.XSD_BOOLEAN=s.XSD+"boolean",s.XSD_INTEGER=s.XSD+"integer",s.XSD_DOUBLE=s.XSD+"double",s.RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#",t.Util=s},14079:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContainerHandlerIdentifier=void 0,t.ContainerHandlerIdentifier=class{canCombineWithGraph(){return!0}async handle(e,t,r,n,i,a){let o;if(t.emittedStack[a+1]&&t.idStack[a+1])o=t.idStack[a+1][0];else{const e=null!==await r.getContainerKey(n[a],n,a)?await r.resourceToTerm(await t.getContext(n),n[a]):r.dataFactory.blankNode();if(!e)return void(t.emittedStack[a]=!1);o=e,t.idStack[a+1]=[o]}let s=t.idStack[a];s||(s=t.idStack[a]=[]),s.some((e=>e.equals(o)))||s.push(o),await t.handlePendingContainerFlushBuffers()||(t.emittedStack[a]=!1)}}},43354:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContainerHandlerIndex=void 0;const n=r(27202),i=r(29997),a=r(22135);t.ContainerHandlerIndex=class{canCombineWithGraph(){return!0}async handle(e,t,r,o,s,c){if(!Array.isArray(s)){const u="@graph"in e,l=await t.getContext(o),d=o[c-1],p=a.Util.getContextValueIndex(l,d);if(p){if(n.Util.isPotentialKeyword(p))throw new n.ErrorCoded(`Keywords can not be used as @index value, got: ${p}`,n.ERROR_CODES.INVALID_TERM_DEFINITION);if("string"!=typeof p)throw new n.ErrorCoded(`@index values must be strings, got: ${p}`,n.ERROR_CODES.INVALID_TERM_DEFINITION);if("object"!=typeof s){if("@id"!==a.Util.getContextValueType(l,d))throw new n.ErrorCoded(`Property-based index containers require nodes as values or strings with @type: @id, but got: ${s}`,n.ERROR_CODES.INVALID_VALUE_OBJECT);const e=r.resourceToTerm(l,s);e&&(t.idStack[c+1]=[e])}const e=r.createVocabOrBaseTerm(l,p);if(e){const n=await r.valueToTerm(l,p,await r.getContainerKey(o[c],o,c),c,o);if(u){const i=await r.getGraphContainerValue(o,c+1);for(const a of n)t.emitQuad(c,r.dataFactory.quad(i,e,a,r.getDefaultGraph()))}else for(const a of n)await i.EntryHandlerPredicate.handlePredicateObject(t,r,o,c+1,e,a,!1,!1,!1)}}const h=u?2:1;await t.newOnValueJob(o.slice(0,o.length-h),s,c-h,!0),await t.handlePendingContainerFlushBuffers()}t.emittedStack[c]=!1}}},68526:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContainerHandlerLanguage=void 0;const n=r(27202);t.ContainerHandlerLanguage=class{canCombineWithGraph(){return!1}async handle(e,t,r,i,a,o){const s=await r.getContainerKey(i[o],i,o);if(Array.isArray(a))a=a.map((e=>({"@value":e,"@language":s})));else{if("string"!=typeof a)throw new n.ErrorCoded(`Got invalid language map value, got '${JSON.stringify(a)}', but expected string`,n.ERROR_CODES.INVALID_LANGUAGE_MAP_VALUE);a={"@value":a,"@language":s}}await t.newOnValueJob(i.slice(0,i.length-1),a,o-1,!0),t.emittedStack[o]=!1}}},84936:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContainerHandlerType=void 0;const n=r(29997),i=r(22135);t.ContainerHandlerType=class{canCombineWithGraph(){return!1}async handle(e,t,r,a,o,s){if(!Array.isArray(o)){if("string"==typeof o){const e=await t.getContext(a),n="@vocab"===i.Util.getContextValueType(e,a[s-1])?await r.createVocabOrBaseTerm(e,o):await r.resourceToTerm(e,o);if(n){const e={"@id":"NamedNode"===n.termType?n.value:o};await t.newOnValueJob(a.slice(0,a.length-1),e,s-1,!0),t.idStack[s+1]=[n]}}else{const e=!!t.idStack[s+1];e||delete t.idStack[s],await t.newOnValueJob(a.slice(0,a.length-1),o,s-1,!0),e||(t.idStack[s+1]=t.idStack[s])}const e=await r.getContainerKey(a[s],a,s),c=null!==e?r.createVocabOrBaseTerm(await t.getContext(a),e):null;c&&await n.EntryHandlerPredicate.handlePredicateObject(t,r,a,s+1,r.rdfType,c,!1,!1,!1),await t.handlePendingContainerFlushBuffers()}t.emittedStack[s]=!1}}},11272:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerArrayValue=void 0;const n=r(22135),i=r(27202);t.EntryHandlerArrayValue=class{isPropertyHandler(){return!1}isStackProcessor(){return!0}async validate(e,t,r,n,i){return this.test(e,t,null,r,n)}async test(e,t,r,n,i){return"number"==typeof n[i]}async handle(e,t,r,i,a,o){let s=await t.unaliasKeywordParent(i,o);if("@list"===s){let r=null,n=0;for(let e=o-2;e>0;e--){const t=i[e];if("string"==typeof t||"number"==typeof t){n=e,r=t;break}}if(null!==r){const s=await t.valueToTerm(await e.getContext(i),r,a,o,i);for(const r of s)await this.handleListElement(e,t,r,a,o,i.slice(0,n),n);0===s.length&&await this.handleListElement(e,t,null,a,o,i.slice(0,n),n)}}else if("@set"===s)await e.newOnValueJob(i.slice(0,-2),a,o-2,!1);else if(void 0!==s&&"@type"!==s){for(let e=o-1;e>0;e--)if("number"!=typeof i[e]){s=await t.unaliasKeyword(i[e],i,e);break}const r=await e.getContext(i.slice(0,-1));if("@list"in n.Util.getContextValueContainer(r,s)){e.emittedStack[o+1]=!0;const r=await t.valueToTerm(await e.getContext(i),s,a,o,i);for(const n of r)await this.handleListElement(e,t,n,a,o,i.slice(0,-1),o-1);0===r.length&&await this.handleListElement(e,t,null,a,o,i.slice(0,-1),o-1)}else e.shiftStack(o,1),await e.newOnValueJob(i.slice(0,-1),a,o-1,!1),e.contextTree.removeContext(i.slice(0,-1))}}async handleListElement(e,t,r,n,a,o,s){let c=e.listPointerStack[a];if(null!==n&&null!==(await t.unaliasKeywords(n,o,a))["@value"]){if(c&&c.value){const r=t.dataFactory.blankNode();e.emitQuad(a,t.dataFactory.quad(c.value,t.rdfRest,r,t.getDefaultGraph())),c.value=r}else{const e=t.dataFactory.blankNode();c={value:e,listRootDepth:s,listId:e}}r&&e.emitQuad(a,t.dataFactory.quad(c.value,t.rdfFirst,r,t.getDefaultGraph()))}else c||(c={listRootDepth:s,listId:t.rdfNil});e.listPointerStack[a]=c,e.rdfstar&&e.annotationsBuffer[a]&&e.emitError(new i.ErrorCoded("Found an illegal annotation inside a list",i.ERROR_CODES.INVALID_ANNOTATION))}}},45947:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerContainer=void 0;const n=r(14079),i=r(43354),a=r(68526),o=r(84936),s=r(22135);class c{static isSimpleGraphContainer(e){return"@graph"in e&&("@set"in e&&2===Object.keys(e).length||1===Object.keys(e).length)}static isComplexGraphContainer(e){return"@graph"in e&&("@set"in e&&Object.keys(e).length>2||!("@set"in e)&&Object.keys(e).length>1)}static getContainerGraphIndex(e,t,r){let n=c.isSimpleGraphContainer(e),i="";for(let e=t;e=0;e--)if("number"!=typeof t[e]){const r=s.Util.getContextValue(a,"@container",t[e],!1);if(r&&c.isSimpleGraphContainer(r))return{containers:r,depth:e+1,fallback:!1};const o=s.Util.getContextValue(a,"@container",t[e-1],!1);if(o){const t="@graph"in o;for(const r in c.CONTAINER_HANDLERS)if(o[r])return t?c.CONTAINER_HANDLERS[r].canCombineWithGraph()?{containers:o,depth:e,fallback:!1}:n:i?n:{containers:o,depth:e,fallback:!1};return n}if(i)return n;i=!0}return n}static async isBufferableContainerHandler(e,t,r){const n=await c.getContainerHandler(e,t,r);return!n.fallback&&!("@graph"in n.containers)}isPropertyHandler(){return!1}isStackProcessor(){return!0}async validate(e,t,r,n,i){return!!await this.test(e,t,null,r,n)}async test(e,t,r,n,i){const a=s.Util.getContextValueContainer(await e.getContext(n,2),n[i-1]);for(const e in c.CONTAINER_HANDLERS)if(a[e])return{containers:a,handler:c.CONTAINER_HANDLERS[e]};return null}async handle(e,t,r,n,i,a,o){return o.handler.handle(o.containers,e,t,n,i,a)}}c.CONTAINER_HANDLERS={"@id":new n.ContainerHandlerIdentifier,"@index":new i.ContainerHandlerIndex,"@language":new a.ContainerHandlerLanguage,"@type":new o.ContainerHandlerType},t.EntryHandlerContainer=c},62885:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerInvalidFallback=void 0,t.EntryHandlerInvalidFallback=class{isPropertyHandler(){return!1}isStackProcessor(){return!0}async validate(e,t,r,n,i){return!1}async test(e,t,r,n,i){return!0}async handle(e,t,r,n,i,a){e.emittedStack[a]=!1}}},29997:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerPredicate=void 0;const n=r(27202),i=r(22135);class a{static async handlePredicateObject(e,t,r,i,a,o,s,c,u){const l=await t.getPropertiesDepth(r,i),d=await t.getDepthOffsetGraph(i,r),p=i-d,h=e.idStack[l];if(h&&!u)for(const n of h)if(d>=0){const r=e.idStack[p-1];if(r)for(const e of r)t.emitQuadChecked(i,n,a,o,e,s,c);else s?(t.validateReverseSubject(o),e.getUnidentifiedGraphBufferSafe(p-1).push({subject:o,predicate:a,object:n,isEmbedded:c})):e.getUnidentifiedGraphBufferSafe(p-1).push({subject:n,predicate:a,object:o,isEmbedded:c})}else{const e=await t.getGraphContainerValue(r,l);t.emitQuadChecked(i,n,a,o,e,s,c)}else if(s&&t.validateReverseSubject(o),u){if(e.rdfstar){e.idStack[i]&&e.emitError(new n.ErrorCoded(`Found an illegal @id inside an annotation: ${e.idStack[i][0].value}`,n.ERROR_CODES.INVALID_ANNOTATION));for(let a=0;a=0;e--){const t=c[e];t.depth>l&&(u.nestedAnnotations.push(t),c.splice(e,1))}}}else e.getUnidentifiedValueBufferSafe(l).push({predicate:a,object:o,reverse:s,isEmbedded:c})}isPropertyHandler(){return!0}isStackProcessor(){return!0}async validate(e,t,r,n,a){const o=r[n];if(o){const a=await e.getContext(r);if(!e.jsonLiteralStack[n]&&await t.predicateToTerm(a,r[n]))return"@json"===i.Util.getContextValueType(a,o)&&(e.jsonLiteralStack[n+1]=!0),!0}return!1}async test(e,t,r,n,i){return n[i]}async handle(e,t,r,o,s,c,u){const l=o[c],d=await e.getContext(o),p=await t.predicateToTerm(d,r);if(p){const u=await t.valueToTerm(d,r,s,c,o);if(u.length)for(let h of u){let u=await t.unaliasKeywordParent(o,c);const f=i.Util.isPropertyReverse(d,l,u);let y=0;for(;"@reverse"===u||"number"==typeof u;)"number"==typeof u?y++:c--,u=await t.unaliasKeywordParent(o,c-y);const g=i.Util.isPropertyInEmbeddedNode(u);t.validateReverseInEmbeddedNode(r,f,g);const m=i.Util.isPropertyInAnnotationObject(u);if(s){const a="@list"in i.Util.getContextValueContainer(d,r);if(a||s["@list"]){if((a&&!Array.isArray(s)&&!s["@list"]||s["@list"]&&!Array.isArray(s["@list"]))&&h!==t.rdfNil){const r=t.dataFactory.blankNode();e.emitQuad(c,t.dataFactory.quad(r,t.rdfRest,t.rdfNil,t.getDefaultGraph())),e.emitQuad(c,t.dataFactory.quad(r,t.rdfFirst,h,t.getDefaultGraph())),h=r}if(f&&!e.allowSubjectList)throw new n.ErrorCoded(`Found illegal list value in subject position at ${r}`,n.ERROR_CODES.INVALID_REVERSE_PROPERTY_VALUE)}}await a.handlePredicateObject(e,t,o,c,p,h,f,g,m)}}}}t.EntryHandlerPredicate=a},49203:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeyword=void 0,t.EntryHandlerKeyword=class{constructor(e){this.keyword=e}isPropertyHandler(){return!1}isStackProcessor(){return!0}async validate(e,t,r,n,i){return!1}async test(e,t,r,n,i){return r===this.keyword}}},6042:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordAnnotation=void 0;const n=r(49203),i=r(27202);class a extends n.EntryHandlerKeyword{constructor(){super("@annotation")}async handle(e,t,r,n,a,o){("string"==typeof a||"object"==typeof a&&a["@value"])&&e.emitError(new i.ErrorCoded(`Found illegal annotation value: ${JSON.stringify(a)}`,i.ERROR_CODES.INVALID_ANNOTATION))}}t.EntryHandlerKeywordAnnotation=a},66700:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordContext=void 0;const n=r(27202),i=r(49203);class a extends i.EntryHandlerKeyword{constructor(){super("@context")}isStackProcessor(){return!1}async handle(e,t,r,i,a,o){e.streamingProfile&&(e.processingStack[o]||e.processingType[o]||void 0!==e.idStack[o])&&e.emitError(new n.ErrorCoded("Found an out-of-order context, while streaming is enabled.(disable `streamingProfile`)",n.ERROR_CODES.INVALID_STREAMING_KEY_ORDER));const s=e.getContext(i),c=e.parseContext(a,(await s).getContextRaw());e.contextTree.setContext(i.slice(0,-1),c),e.emitContext(a),await e.validateContext(await c)}}t.EntryHandlerKeywordContext=a},37071:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordGraph=void 0;const n=r(49203);class i extends n.EntryHandlerKeyword{constructor(){super("@graph")}async handle(e,t,r,n,i,a){e.graphStack[a+1]=!0}}t.EntryHandlerKeywordGraph=i},48978:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordId=void 0;const n=r(27202),i=r(49203);class a extends i.EntryHandlerKeyword{constructor(){super("@id")}isStackProcessor(){return!1}async handle(e,t,r,i,a,o){if("string"!=typeof a){if(e.rdfstar&&"object"==typeof a){const t=Object.keys(a);1===t.length&&"@id"===t[0]&&e.emitError(new n.ErrorCoded(`Invalid embedded node without property with @id ${a["@id"]}`,n.ERROR_CODES.INVALID_EMBEDDED_NODE))}else e.emitError(new n.ErrorCoded(`Found illegal @id '${a}'`,n.ERROR_CODES.INVALID_ID_VALUE));return}const s=await t.getPropertiesDepth(i,o);if(void 0!==e.idStack[s]&&(e.idStack[s][0].listHead?e.emitError(new n.ErrorCoded(`Found illegal neighbouring entries next to @list for key: '${i[o-1]}'`,n.ERROR_CODES.INVALID_SET_OR_LIST_OBJECT)):e.emitError(new n.ErrorCoded(`Found duplicate @ids '${e.idStack[s][0].value}' and '${a}'`,n.ERROR_CODES.COLLIDING_KEYWORDS))),e.rdfstar&&e.annotationsBuffer[o])for(const t of e.annotationsBuffer[o])t.depth===o&&e.emitError(new n.ErrorCoded(`Found an illegal @id inside an annotation: ${a}`,n.ERROR_CODES.INVALID_ANNOTATION));e.idStack[s]=t.nullableTermToArray(await t.resourceToTerm(await e.getContext(i),a))}}t.EntryHandlerKeywordId=a},30643:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordIncluded=void 0;const n=r(27202),i=r(49203);class a extends i.EntryHandlerKeyword{constructor(){super("@included")}async handle(e,t,r,i,a,o){"object"!=typeof a&&e.emitError(new n.ErrorCoded(`Found illegal @included '${a}'`,n.ERROR_CODES.INVALID_INCLUDED_VALUE));const s=await t.unaliasKeywords(a,i,o,await e.getContext(i));"@value"in s&&e.emitError(new n.ErrorCoded(`Found an illegal @included @value node '${JSON.stringify(a)}'`,n.ERROR_CODES.INVALID_INCLUDED_VALUE)),"@list"in s&&e.emitError(new n.ErrorCoded(`Found an illegal @included @list node '${JSON.stringify(a)}'`,n.ERROR_CODES.INVALID_INCLUDED_VALUE)),e.emittedStack[o]=!1}}t.EntryHandlerKeywordIncluded=a},58865:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordNest=void 0;const n=r(27202),i=r(49203);class a extends i.EntryHandlerKeyword{constructor(){super("@nest")}async handle(e,t,r,i,a,o){"object"!=typeof a&&e.emitError(new n.ErrorCoded(`Found invalid @nest entry for '${r}': '${a}'`,n.ERROR_CODES.INVALID_NEST_VALUE)),"@value"in await t.unaliasKeywords(a,i,o,await e.getContext(i))&&e.emitError(new n.ErrorCoded(`Found an invalid @value node for '${r}'`,n.ERROR_CODES.INVALID_NEST_VALUE)),e.emittedStack[o]=!1}}t.EntryHandlerKeywordNest=a},23787:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordType=void 0;const n=r(27202),i=r(22135),a=r(29997),o=r(49203);class s extends o.EntryHandlerKeyword{constructor(){super("@type")}isStackProcessor(){return!1}async handle(e,t,r,o,s,c){const u=o[c],l=await e.getContext(o),d=t.rdfType,p=await t.unaliasKeywordParent(o,c),h=i.Util.isPropertyReverse(l,u,p),f=i.Util.isPropertyInEmbeddedNode(p);t.validateReverseInEmbeddedNode(r,h,f);const y=i.Util.isPropertyInAnnotationObject(p),g=Array.isArray(s)?s:[s];for(const r of g){"string"!=typeof r&&e.emitError(new n.ErrorCoded(`Found illegal @type '${r}'`,n.ERROR_CODES.INVALID_TYPE_VALUE));const i=t.createVocabOrBaseTerm(l,r);i&&await a.EntryHandlerPredicate.handlePredicateObject(e,t,o,c,d,i,h,f,y)}let m=Promise.resolve(l),b=!1;for(const t of g.sort()){const r=i.Util.getContextValue(l,"@context",t,null);r&&(b=!0,m=m.then((t=>e.parseContext(r,t.getContextRaw()))))}!e.streamingProfile||!b&&e.streamingProfileAllowOutOfOrderPlainType||!e.processingStack[c]&&!e.idStack[c]||e.emitError(new n.ErrorCoded("Found an out-of-order type-scoped context, while streaming is enabled.(disable `streamingProfile`)",n.ERROR_CODES.INVALID_STREAMING_KEY_ORDER)),b&&(m=m.then((e=>!0!==e.getContextRaw()["@propagate"]?new n.JsonLdContextNormalized(Object.assign(Object.assign({},e.getContextRaw()),{"@propagate":!1,"@__propagateFallback":l.getContextRaw()})):e)),e.contextTree.setContext(o.slice(0,o.length-1),m)),e.processingType[c]=!0}}t.EntryHandlerKeywordType=s},30635:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordUnknownFallback=void 0;const n=r(27202);class i{isPropertyHandler(){return!1}isStackProcessor(){return!0}async validate(e,t,r,i,a){const o=await t.unaliasKeyword(r[i],r,i);return!(!n.Util.isPotentialKeyword(o)||!a&&"@list"===o)}async test(e,t,r,i,a){return n.Util.isPotentialKeyword(r)}async handle(e,t,r,a,o,s){const c=i.VALID_KEYWORDS_TYPES[r];void 0!==c?c&&typeof o!==c.type&&e.emitError(new n.ErrorCoded(`Invalid value type for '${r}' with value '${o}'`,c.errorCode)):e.strictValues&&e.emitError(new Error(`Unknown keyword '${r}' with value '${o}'`)),e.emittedStack[s]=!1}}i.VALID_KEYWORDS_TYPES={"@index":{type:"string",errorCode:n.ERROR_CODES.INVALID_INDEX_VALUE},"@list":null,"@reverse":{type:"object",errorCode:n.ERROR_CODES.INVALID_REVERSE_VALUE},"@set":null,"@value":null},t.EntryHandlerKeywordUnknownFallback=i},94382:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordValue=void 0;const n=r(49203);class i extends n.EntryHandlerKeyword{constructor(){super("@value")}async validate(e,t,r,n,i){const a=r[n];return a&&!e.literalStack[n]&&await this.test(e,t,a,r,n)&&(e.literalStack[n]=!0),super.validate(e,t,r,n,i)}async test(e,t,r,n,i){return"@value"===await t.unaliasKeyword(n[i],n.slice(0,n.length-1),i-1,!0)}async handle(e,t,r,n,i,a){e.literalStack[a]=!0,delete e.unidentifiedValuesBuffer[a],delete e.unidentifiedGraphsBuffer[a],e.emittedStack[a]=!1}}t.EntryHandlerKeywordValue=i},33619:e=>{"use strict";e.exports=function e(t){return null===t||"object"!=typeof t||null!=t.toJSON?JSON.stringify(t):Array.isArray(t)?"["+t.reduce(((t,r,n)=>t+(0===n?"":",")+e(void 0===r||"symbol"==typeof r?null:r)),"")+"]":"{"+Object.keys(t).sort().reduce(((r,n,i)=>void 0===t[n]||"symbol"==typeof t[n]?r:r+(0===r.length?"":",")+e(n)+":"+e(t[n])),"")+"}"}},85832:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(45920),t),i(r(7814),t)},45920:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JsonLdSerializer=void 0;const n=r(27202),i=r(85071),a=r(7814),o=r(58521);class s extends o.Transform{constructor(e={}){super({objectMode:!0}),this.indentation=0,this.options=e,this.options.baseIRI&&!this.options.context&&(this.options.context={"@base":this.options.baseIRI}),this.options.context?(this.originalContext=this.options.context,this.context=(new n.ContextParser).parse(this.options.context,{baseIRI:this.options.baseIRI})):this.context=Promise.resolve(new n.JsonLdContextNormalized({}))}import(e){const t=new o.PassThrough({objectMode:!0});e.on("error",(e=>r.emit("error",e))),e.on("data",(e=>t.push(e))),e.on("end",(()=>t.push(null)));const r=t.pipe(new s(this.options));return r}_transform(e,t,r){this.context.then((t=>{this.transformQuad(e,t),r()})).catch(r)}async list(e){const t=await this.context;return{"@list":e.map((e=>a.Util.termToValue(e,t,this.options)))}}_flush(e){return this.opened||this.pushDocumentStart(),this.lastPredicate&&this.endPredicate(),this.lastSubject&&this.endSubject(),this.lastGraph&&"DefaultGraph"!==this.lastGraph.termType&&this.endGraph(),this.endDocument(),e(null,null)}transformQuad(e,t){this.opened||this.pushDocumentStart();const r=this.lastGraph&&"DefaultGraph"!==this.lastGraph.termType&&this.lastGraph.equals(e.subject);if(!(r||this.lastGraph&&e.graph.equals(this.lastGraph))){let r="DefaultGraph"!==e.graph.termType&&this.lastSubject&&this.lastSubject.equals(e.graph);this.lastGraph&&("DefaultGraph"!==this.lastGraph.termType?(this.endPredicate(),this.endSubject(),this.endGraph(!0),r=!1):r?(this.endPredicate(!0),this.lastSubject=null):(this.endPredicate(),this.endSubject(!0))),"DefaultGraph"!==e.graph.termType&&(r||this.pushId(e.graph,!0,t),this.pushSeparator(this.options.space?i.SeparatorType.GRAPH_FIELD_NONCOMPACT:i.SeparatorType.GRAPH_FIELD_COMPACT),this.indentation++),this.lastGraph=e.graph}this.lastSubject&&e.subject.equals(this.lastSubject)||(r?(this.endPredicate(),this.endSubject(),this.indentation--,this.pushSeparator(i.SeparatorType.ARRAY_END_COMMA),this.lastGraph=e.graph):(this.lastSubject&&(this.endPredicate(),this.endSubject(!0)),this.pushId(e.subject,!0,t)),this.lastSubject=e.subject),this.lastPredicate&&e.predicate.equals(this.lastPredicate)||(this.lastPredicate&&this.endPredicate(!0),this.pushPredicate(e.predicate,t)),this.pushObject(e.object,t)}pushDocumentStart(){this.opened=!0,this.originalContext&&!this.options.excludeContext?(this.pushSeparator(i.SeparatorType.OBJECT_START),this.indentation++,this.pushSeparator(i.SeparatorType.CONTEXT_FIELD),this.pushIndented(JSON.stringify(this.originalContext,null,this.options.space)+","),this.pushSeparator(this.options.space?i.SeparatorType.GRAPH_FIELD_NONCOMPACT:i.SeparatorType.GRAPH_FIELD_COMPACT),this.indentation++):(this.pushSeparator(i.SeparatorType.ARRAY_START),this.indentation++)}pushId(e,t,r){if("Quad"===e.termType)this.pushNestedQuad(e,!0,r);else{const n="BlankNode"===e.termType?"_:"+e.value:r.compactIri(e.value,!1);t?this.pushSeparator(i.SeparatorType.OBJECT_START):(this.push(i.SeparatorType.OBJECT_START.label),this.options.space&&this.push("\n")),this.indentation++,this.pushIndented(this.options.space?`"@id": "${n}",`:`"@id":"${n}",`)}}pushPredicate(e,t){let r=e.value;this.options.useRdfType||r!==a.Util.RDF_TYPE||(r="@type",this.objectOptions=Object.assign(Object.assign({},this.options),{compactIds:!0,vocab:!0}));const n=t.compactIri(r,!0);this.pushIndented(this.options.space?`"${n}": [`:`"${n}":[`),this.indentation++,this.lastPredicate=e}pushObject(e,t){if(this.hadObjectForPredicate?this.pushSeparator(i.SeparatorType.COMMA):this.hadObjectForPredicate=!0,"Quad"===e.termType){const r=this.lastSubject,n=this.lastPredicate;return this.hadObjectForPredicate=!1,this.pushNestedQuad(e,!1,t),this.endSubject(!1),this.hadObjectForPredicate=!0,this.lastPredicate=n,void(this.lastSubject=r)}let r;try{r=e["@list"]?e:a.Util.termToValue(e,t,this.objectOptions||this.options)}catch(e){return this.emit("error",e)}this.pushIndented(JSON.stringify(r,null,this.options.space))}pushNestedQuad(e,t,r){this.pushSeparator(i.SeparatorType.OBJECT_START),this.indentation++,this.pushIndented(this.options.space?'"@id": ':'"@id":',!1),"DefaultGraph"!==e.graph.termType&&this.emit("error",new Error(`Found a nested quad with the non-default graph: ${e.graph.value}`)),this.pushId(e.subject,!1,r),this.pushPredicate(e.predicate,r),this.pushObject(e.object,r),this.endPredicate(!1),this.endSubject(t)}endDocument(){this.opened=!1,this.originalContext&&!this.options.excludeContext?(this.indentation--,this.pushSeparator(i.SeparatorType.ARRAY_END),this.indentation--,this.pushSeparator(i.SeparatorType.OBJECT_END)):(this.indentation--,this.pushSeparator(i.SeparatorType.ARRAY_END))}endPredicate(e){this.indentation--,this.pushSeparator(e?i.SeparatorType.ARRAY_END_COMMA:i.SeparatorType.ARRAY_END),this.hadObjectForPredicate=!1,this.objectOptions=null,this.lastPredicate=null}endSubject(e){this.indentation--,this.pushSeparator(e?i.SeparatorType.OBJECT_END_COMMA:i.SeparatorType.OBJECT_END),this.lastSubject=null}endGraph(e){this.indentation--,this.pushSeparator(i.SeparatorType.ARRAY_END),this.indentation--,this.pushSeparator(e?i.SeparatorType.OBJECT_END_COMMA:i.SeparatorType.OBJECT_END),this.lastGraph=null}pushSeparator(e){this.pushIndented(e.label)}pushIndented(e,t=!0){const r=this.getIndentPrefix(),n=e.split("\n").map((e=>r+e)).join("\n");this.push(n),this.options.space&&t&&this.push("\n")}getIndentPrefix(){return this.options.space?this.options.space.repeat(this.indentation):""}}t.JsonLdSerializer=s},85071:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SeparatorType=void 0;class r{constructor(e){this.label=e}}t.SeparatorType=r,r.COMMA=new r(","),r.OBJECT_START=new r("{"),r.OBJECT_END=new r("}"),r.OBJECT_END_COMMA=new r("},"),r.ARRAY_START=new r("["),r.ARRAY_END=new r("]"),r.ARRAY_END_COMMA=new r("],"),r.GRAPH_FIELD_NONCOMPACT=new r('"@graph": ['),r.GRAPH_FIELD_COMPACT=new r('"@graph":['),r.CONTEXT_FIELD=new r('"@context":')},7814:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;const n=r(27202);class i{static termToValue(e,t,r={compactIds:!1,useNativeTypes:!1}){switch(e.termType){case"NamedNode":const a=t.compactIri(e.value,r.vocab);return r.compactIds?a:{"@id":a};case"DefaultGraph":return r.compactIds?e.value:{"@id":e.value};case"BlankNode":const o=`_:${e.value}`;return r.compactIds?o:{"@id":o};case"Literal":if(e.datatype.value===i.RDF_JSON){let t;try{t=JSON.parse(e.value)}catch(e){throw new n.ErrorCoded("Invalid JSON literal: "+e.message,n.ERROR_CODES.INVALID_JSON_LITERAL)}return{"@value":t,"@type":"@json"}}if("i18n-datatype"===r.rdfDirection&&e.datatype.value.startsWith(i.I18N)){const[t,r]=e.datatype.value.substr(i.I18N.length,e.datatype.value.length).split("_");return Object.assign(Object.assign({"@value":e.value},t?{"@language":t}:{}),r?{"@direction":r}:{})}const s=e.datatype.value===i.XSD_STRING,c={"@value":!s&&r.useNativeTypes?i.stringToNativeType(e.value,e.datatype.value):e.value};return e.language?Object.assign(Object.assign({},c),{"@language":e.language}):s||"string"!=typeof c["@value"]?c:Object.assign(Object.assign({},c),{"@type":e.datatype.value})}}static stringToNativeType(e,t){if(t.startsWith(i.XSD))switch(t.substr(i.XSD.length)){case"boolean":if("true"===e)return!0;if("false"===e)return!1;throw new Error(`Invalid xsd:boolean value '${e}'`);case"integer":case"number":case"int":case"byte":case"long":const t=parseInt(e,10);if(isNaN(t))throw new Error(`Invalid xsd:integer value '${e}'`);return t;case"float":case"double":const r=parseFloat(e);if(isNaN(r))throw new Error(`Invalid xsd:float value '${e}'`);return r}return e}}t.Util=i,i.XSD="http://www.w3.org/2001/XMLSchema#",i.XSD_STRING=i.XSD+"string",i.RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#",i.RDF_TYPE=i.RDF+"type",i.RDF_JSON=i.RDF+"JSON",i.I18N="https://www.w3.org/ns/i18n#"},5558:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(64295),t),i(r(49999),t),i(r(91094),t),i(r(86625),t),i(r(38303),t),i(r(30573),t),i(r(12104),t),i(r(35573),t),i(r(60179),t),i(r(34260),t)},30573:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},12104:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},35573:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},60179:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MicrodataRdfParser=void 0;const n=r(15482),i=r(58521),a=r(49999),o=r(91094),s=r(86625),c=r(38303),u=r(34260),l=r(94066);class d extends i.Transform{constructor(e){super({readableObjectMode:!0}),this.itemScopeStack=[],this.textBufferStack=[],this.isEmittingReferences=!1,this.pendingItemRefsDomain={},this.pendingItemRefsRangeFinalized={},this.pendingItemRefsRangeCollecting={},e=e||{},this.options=e,this.util=new u.Util(e.dataFactory,e.baseIRI),this.defaultGraph=e.defaultGraph||this.util.dataFactory.defaultGraph(),this.htmlParseListener=e.htmlParseListener,this.vocabRegistry=e.vocabRegistry||l,this.parser=this.initializeParser(!!e.xmlMode)}import(e){const t=new i.PassThrough({readableObjectMode:!0});e.on("error",(e=>r.emit("error",e))),e.on("data",(e=>t.push(e))),e.on("end",(()=>t.push(null)));const r=t.pipe(new d(this.options));return r}_transform(e,t,r){this.parser.write(e.toString()),r()}_flush(e){this.parser.end(),e()}getItemScope(e){let t=this.itemScopeStack.length-(e?2:1);for(;t>0&&!this.itemScopeStack[t];)t--;return this.itemScopeStack[t]}getDepth(){return this.itemScopeStack.length}onTagOpen(e,t){if(!this.isEmittingReferences){if("id"in t){const e=t.id;this.pendingItemRefsRangeCollecting[e]={events:[],counter:0,ids:[]}}for(const r of Object.values(this.pendingItemRefsRangeCollecting))r.counter++,r.events.push({type:"open",name:e,attributes:t})}let r;if(this.textBufferStack.push(void 0),"itemscope"in t){let e;if(this.emittingReferencesItemScopeIdGenerator)e=this.emittingReferencesItemScopeIdGenerator();else{e="itemid"in t&&this.util.createSubject(t.itemid)||this.util.dataFactory.blankNode();for(const t of Object.values(this.pendingItemRefsRangeCollecting))t.ids.push(e)}r={subject:e},this.isEmittingReferences&&(r.blockEmission=!0);const n=this.getItemScope();n&&n.vocab&&(r.vocab=n.vocab),this.itemScopeStack.push(r)}else r=this.getItemScope(),this.itemScopeStack.push(void 0);if(r){if("itemtype"in t)for(const e of this.util.createVocabIris(t.itemtype,r,!1))r.vocab||(r.vocab=this.util.deriveVocab(e.value,this.vocabRegistry)),r.blockEmission||this.emitTriple(r.subject,this.util.dataFactory.namedNode(`${u.Util.RDF}type`),e);if("lang"in t&&(r.language=t.lang),"xml:lang"in t&&(r.language=t["xml:lang"]),"itemscope"in t&&!this.isEmittingReferences&&"itemref"in t)for(const e of t.itemref.split(/\s+/u))e in this.pendingItemRefsDomain||(this.pendingItemRefsDomain[e]=[]),this.pendingItemRefsDomain[e].push(r),this.tryToEmitReferences(e,r)}"itemprop"in t&&this.handleItemProperties(t.itemprop,!1,r,e,t),"itemprop-reverse"in t&&this.handleItemProperties(t["itemprop-reverse"],!0,r,e,t)}onText(e){if(!this.isEmittingReferences)for(const t of Object.values(this.pendingItemRefsRangeCollecting))t.events.push({type:"text",data:e});for(const t of this.textBufferStack)t&&t.push(e)}onTagClose(){if(!this.isEmittingReferences)for(const[e,t]of Object.entries(this.pendingItemRefsRangeCollecting))t.counter--,t.events.push({type:"close"}),0===t.counter&&(this.pendingItemRefsRangeFinalized[e]=t,delete this.pendingItemRefsRangeCollecting[e],this.tryToEmitReferences(e));const e=this.getItemScope(!0);if(e){const t=this.getDepth();if(e.predicates&&t in e.predicates)for(const[r,n]of Object.entries(e.predicates[t])){const i=this.util.createLiteral(this.textBufferStack[t].join(""),e);this.emitPredicateTriples(e,n,i,"reverse"===r),delete e.predicates[t][r]}}this.itemScopeStack.pop(),this.textBufferStack.pop()}onEnd(){}initializeParser(e){return new n.Parser({onclosetag:()=>{try{this.onTagClose(),this.htmlParseListener&&this.htmlParseListener.onTagClose()}catch(e){this.emit("error",e)}},onend:()=>{try{this.onEnd(),this.htmlParseListener&&this.htmlParseListener.onEnd()}catch(e){this.emit("error",e)}},onopentag:(e,t)=>{try{this.onTagOpen(e,t),this.htmlParseListener&&this.htmlParseListener.onTagOpen(e,t)}catch(e){this.emit("error",e)}},ontext:e=>{try{this.onText(e),this.htmlParseListener&&this.htmlParseListener.onText(e)}catch(e){this.emit("error",e)}}},{decodeEntities:!0,recognizeSelfClosing:!0,xmlMode:e})}handleItemProperties(e,t,r,n,i){const a=this.getItemScope(!0);if(a){const o=this.getDepth(),s=this.util.createVocabIris(e,a,!0);a.predicates||(a.predicates={}),a.predicates[o]||(a.predicates[o]={});const c=t?"reverse":"forward";a.predicates[o][c]=s;for(const t of this.util.getVocabularyExpansionType(e,a,this.vocabRegistry))s.push(t);if(r&&"itemscope"in i)this.emitPredicateTriples(a,s,r.subject,t),delete a.predicates[o][c];else for(const e of d.ITEM_PROPERTY_HANDLERS)if(e.canHandle(n,i)){const r=e.getObject(i,this.util,a);this.emitPredicateTriples(a,s,r,t),delete a.predicates[o][c]}a.predicates[o][c]&&(this.textBufferStack[o]=[])}}emitPredicateTriples(e,t,r,n){if(!e.blockEmission)for(const i of t)n?"Literal"!==r.termType&&this.emitTriple(r,i,e.subject):this.emitTriple(e.subject,i,r)}emitTriple(e,t,r){this.push(this.util.dataFactory.quad(e,t,r,this.defaultGraph))}tryToEmitReferences(e,t){const r=this.pendingItemRefsRangeFinalized[e];if(r){let n;if(t){n=[t];const r=this.pendingItemRefsDomain[e].indexOf(t);this.pendingItemRefsDomain[e].splice(r,1)}else n=this.pendingItemRefsDomain[e],delete this.pendingItemRefsDomain[e];if(n){const e=this.itemScopeStack,t=this.textBufferStack;this.isEmittingReferences=!0;for(const e of n){this.itemScopeStack=[e],this.textBufferStack=[void 0];const t=[...r.ids];this.emittingReferencesItemScopeIdGenerator=()=>t.shift();for(const e of r.events)switch(e.type){case"open":this.onTagOpen(e.name,e.attributes);break;case"text":this.onText(e.data);break;case"close":this.onTagClose()}}this.emittingReferencesItemScopeIdGenerator=void 0,this.itemScopeStack=e,this.textBufferStack=t,this.isEmittingReferences=!1}}}}t.MicrodataRdfParser=d,d.ITEM_PROPERTY_HANDLERS=[new a.ItemPropertyHandlerContent,new c.ItemPropertyHandlerUrl("a","href"),new c.ItemPropertyHandlerUrl("area","href"),new c.ItemPropertyHandlerUrl("audio","src"),new c.ItemPropertyHandlerUrl("embed","src"),new c.ItemPropertyHandlerUrl("iframe","src"),new c.ItemPropertyHandlerUrl("img","src"),new c.ItemPropertyHandlerUrl("link","href"),new c.ItemPropertyHandlerUrl("object","data"),new c.ItemPropertyHandlerUrl("source","src"),new c.ItemPropertyHandlerUrl("track","src"),new c.ItemPropertyHandlerUrl("video","src"),new o.ItemPropertyHandlerNumber("data","value"),new o.ItemPropertyHandlerNumber("meter","value"),new s.ItemPropertyHandlerTime]},34260:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;const n=r(18050),i=r(9929);class a{constructor(e,t){this.dataFactory=e||new n.DataFactory,this.baseIRI=t||""}static isValidIri(e){return a.IRI_REGEX.test(e)}createVocabIris(e,t,r){return e.split(/\s+/u).filter((e=>!!e)).map((e=>{if(!a.isValidIri(e)){if(!r)return;e=`${t.vocab||`${this.baseIRI}#`}${e}`}return this.dataFactory.namedNode(e)})).filter((e=>!!e))}getVocabularyExpansionType(e,t,r){const n=e.split(/\s+/u);if(n.includes("subPropertyOf")||n.includes("equivalentProperty"))return[this.dataFactory.namedNode(`${a.RDF}type`)];if(t.vocab&&t.vocab in r&&r[t.vocab].properties){let e=[];for(const[i,a]of Object.entries(r[t.vocab].properties))n.includes(i)&&(e=[...Object.values(a).map((e=>this.dataFactory.namedNode(e)))]);return e}return[]}createSubject(e){if(!a.isValidIri(e))try{e=(0,i.resolve)(e,this.baseIRI)}catch(e){return}return this.dataFactory.namedNode(e)}createLiteral(e,t){return this.dataFactory.literal(e,t.language)}deriveVocab(e,t){let r;for(const n in t)if(e.startsWith(n)){r=n,r.endsWith("/")||(r+="#");break}if(!r){const t=e.indexOf("#");r=t>0?e.slice(0,t+1):(0,i.resolve)(".",e)}return r}}t.Util=a,a.RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#",a.XSD="http://www.w3.org/2001/XMLSchema#",a.RDFA="http://www.w3.org/ns/rdfa#",a.IRI_REGEX=/^([A-Za-z][\d+-.A-Za-z]*|_):[^ "<>[\\\]`{|}]*$/u},64295:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},49999:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ItemPropertyHandlerContent=void 0,t.ItemPropertyHandlerContent=class{canHandle(e,t){return"content"in t}getObject(e,t,r){return t.createLiteral(e.content,r)}}},91094:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ItemPropertyHandlerNumber=void 0;const n=r(34260);t.ItemPropertyHandlerNumber=class{constructor(e,t){this.tagName=e,this.attributeName=t}canHandle(e,t){return this.tagName===e&&this.attributeName in t}getObject(e,t,r){const i=e[this.attributeName];let a;return Number.isNaN(Number.parseInt(i,10))||i.includes(".")?Number.isNaN(Number.parseFloat(i))||(a=`${n.Util.XSD}double`):a=`${n.Util.XSD}integer`,t.dataFactory.literal(i,a&&t.dataFactory.namedNode(a))}}},86625:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ItemPropertyHandlerTime=void 0;const n=r(34260);class i{canHandle(e,t){return"time"===e&&"datetime"in t}getObject(e,t,r){const a=e.datetime;let o;for(const e of i.TIME_REGEXES)if(e.regex.test(a)){o=t.dataFactory.namedNode(n.Util.XSD+e.type);break}return t.dataFactory.literal(a,o)}}t.ItemPropertyHandlerTime=i,i.TIME_REGEXES=[{regex:/^-?P(\d+Y)?(\d+M)?(\d+D)?(T(\d+H)?(\d+M)?(\d+(\.\d)?S)?)?$/u,type:"duration"},{regex:/^\d+-\d\d-\d\dT\d\d:\d\d:\d\d((Z?)|([+-]\d\d:\d\d))$/u,type:"dateTime"},{regex:/^\d+-\d\d-\d\dZ?$/u,type:"date"},{regex:/^\d\d:\d\d:\d\d((Z?)|([+-]\d\d:\d\d))$/u,type:"time"},{regex:/^\d+-\d\d$/u,type:"gYearMonth"},{regex:/^\d+$/u,type:"gYear"}]},38303:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ItemPropertyHandlerUrl=void 0;const n=r(9929);t.ItemPropertyHandlerUrl=class{constructor(e,t){this.tagName=e,this.attributeName=t}canHandle(e,t){return this.tagName===e&&this.attributeName in t}getObject(e,t,r){return t.dataFactory.namedNode((0,n.resolve)(e[this.attributeName],t.baseIRI))}}},7784:e=>{function t(e,t){if(!e)throw new Error(t||"Assertion failed")}e.exports=t,t.equal=function(e,t,r){if(e!=t)throw new Error(r||"Assertion failed: "+e+" != "+t)}},72243:(e,t,r)=>{"use strict";r.r(t),r.d(t,{BlankNode:()=>x,DataFactory:()=>T,DefaultGraph:()=>R,Lexer:()=>g,Literal:()=>E,NamedNode:()=>O,Parser:()=>C,Quad:()=>N,Store:()=>re,StreamParser:()=>ie,StreamWriter:()=>ae,Term:()=>S,Triple:()=>N,Util:()=>n,Variable:()=>A,Writer:()=>Y,default:()=>oe,termFromId:()=>I,termToId:()=>P});var n={};r.r(n),r.d(n,{inDefaultGraph:()=>V,isBlankNode:()=>F,isDefaultGraph:()=>q,isLiteral:()=>B,isNamedNode:()=>k,isVariable:()=>U,prefix:()=>Q,prefixes:()=>$});var i=r(59509),a=r.n(i);const o="http://www.w3.org/1999/02/22-rdf-syntax-ns#",s="http://www.w3.org/2001/XMLSchema#",c="http://www.w3.org/2000/10/swap/",u={xsd:{decimal:`${s}decimal`,boolean:`${s}boolean`,double:`${s}double`,integer:`${s}integer`,string:`${s}string`},rdf:{type:`${o}type`,nil:`${o}nil`,first:`${o}first`,rest:`${o}rest`,langString:`${o}langString`},owl:{sameAs:"http://www.w3.org/2002/07/owl#sameAs"},r:{forSome:`${c}reify#forSome`,forAll:`${c}reify#forAll`},log:{implies:`${c}log#implies`}},{xsd:l}=u,d=/\\u([a-fA-F0-9]{4})|\\U([a-fA-F0-9]{8})|\\([^])/g,p={"\\":"\\","'":"'",'"':'"',n:"\n",r:"\r",t:"\t",f:"\f",b:"\b",_:"_","~":"~",".":".","-":"-","!":"!",$:"$","&":"&","(":"(",")":")","*":"*","+":"+",",":",",";":";","=":"=","/":"/","?":"?","#":"#","@":"@","%":"%"},h=/[\x00-\x20<>\\"\{\}\|\^\`]/,f={_iri:!0,_unescapedIri:!0,_simpleQuotedString:!0,_langcode:!0,_blank:!0,_newline:!0,_comment:!0,_whitespace:!0,_endOfFile:!0},y=/$0^/;class g{constructor(e){if(this._iri=/^<((?:[^ <>{}\\]|\\[uU])+)>[ \t]*/,this._unescapedIri=/^<([^\x00-\x20<>\\"\{\}\|\^\`]*)>[ \t]*/,this._simpleQuotedString=/^"([^"\\\r\n]*)"(?=[^"])/,this._simpleApostropheString=/^'([^'\\\r\n]*)'(?=[^'])/,this._langcode=/^@([a-z]+(?:-[a-z0-9]+)*)(?=[^a-z0-9\-])/i,this._prefix=/^((?:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)?:(?=[#\s<])/,this._prefixed=/^((?:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)?:((?:(?:[0-:A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~])(?:(?:[\.\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~])*(?:[\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~]))?)?)(?:[ \t]+|(?=\.?[,;!\^\s#()\[\]\{\}"'<>]))/,this._variable=/^\?(?:(?:[A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:[\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)(?=[.,;!\^\s#()\[\]\{\}"'<>])/,this._blank=/^_:((?:[0-9A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)(?:[ \t]+|(?=\.?[,;:\s#()\[\]\{\}"'<>]))/,this._number=/^[\-+]?(?:(\d+\.\d*|\.?\d+)[eE][\-+]?|\d*(\.)?)\d+(?=\.?[,;:\s#()\[\]\{\}"'<>])/,this._boolean=/^(?:true|false)(?=[.,;\s#()\[\]\{\}"'<>])/,this._keyword=/^@[a-z]+(?=[\s#<:])/i,this._sparqlKeyword=/^(?:PREFIX|BASE|GRAPH)(?=[\s#<])/i,this._shortPredicates=/^a(?=[\s#()\[\]\{\}"'<>])/,this._newline=/^[ \t]*(?:#[^\n\r]*)?(?:\r\n|\n|\r)[ \t]*/,this._comment=/#([^\n\r]*)/,this._whitespace=/^[ \t]+/,this._endOfFile=/^(?:#[^\n\r]*)?$/,e=e||{},this._lineMode=!!e.lineMode){this._n3Mode=!1;for(const e in this)!(e in f)&&this[e]instanceof RegExp&&(this[e]=y)}else this._n3Mode=!1!==e.n3;this._comments=!!e.comments,this._literalClosingPos=0}_tokenizeToEnd(e,t){let r=this._input,n=r.length;for(;;){let e,o;for(;e=this._newline.exec(r);)this._comments&&(o=this._comment.exec(e[0]))&&i("comment",o[1],"",this._line,e[0].length),r=r.substr(e[0].length,r.length),n=r.length,this._line++;if(!e&&(e=this._whitespace.exec(r))&&(r=r.substr(e[0].length,r.length)),this._endOfFile.test(r))return t&&(this._comments&&(o=this._comment.exec(r))&&i("comment",o[1],"",this._line,r.length),r=null,i("eof","","",this._line,0)),this._input=r;const s=this._line,c=r[0];let u="",d="",p="",f=null,y=0,g=!1;switch(c){case"^":if(r.length<3)break;if("^"!==r[1]){this._n3Mode&&(y=1,u="^");break}if(this._previousMarker="^^",r=r.substr(2),"<"!==r[0]){g=!0;break}case"<":if(f=this._unescapedIri.exec(r))u="IRI",d=f[1];else if(f=this._iri.exec(r)){if(d=this._unescape(f[1]),null===d||h.test(d))return a(this);u="IRI"}else r.length>1&&"<"===r[1]?(u="<<",y=2):this._n3Mode&&r.length>1&&"="===r[1]&&(u="inverse",y=2,d=">");break;case">":r.length>1&&">"===r[1]&&(u=">>",y=2);break;case"_":((f=this._blank.exec(r))||t&&(f=this._blank.exec(`${r} `)))&&(u="blank",p="_",d=f[1]);break;case'"':if(f=this._simpleQuotedString.exec(r))d=f[1];else if(({value:d,matchLength:y}=this._parseLiteral(r)),null===d)return a(this);null===f&&0===y||(u="literal",this._literalClosingPos=0);break;case"'":if(!this._lineMode){if(f=this._simpleApostropheString.exec(r))d=f[1];else if(({value:d,matchLength:y}=this._parseLiteral(r)),null===d)return a(this);null===f&&0===y||(u="literal",this._literalClosingPos=0)}break;case"?":this._n3Mode&&(f=this._variable.exec(r))&&(u="var",d=f[0]);break;case"@":"literal"===this._previousMarker&&(f=this._langcode.exec(r))?(u="langcode",d=f[1]):(f=this._keyword.exec(r))&&(u=f[0]);break;case".":if(1===r.length?t:r[1]<"0"||r[1]>"9"){u=".",y=1;break}case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"+":case"-":(f=this._number.exec(r)||t&&(f=this._number.exec(`${r} `)))&&(u="literal",d=f[0],p="string"==typeof f[1]?l.double:"string"==typeof f[2]?l.decimal:l.integer);break;case"B":case"b":case"p":case"P":case"G":case"g":(f=this._sparqlKeyword.exec(r))?u=f[0].toUpperCase():g=!0;break;case"f":case"t":(f=this._boolean.exec(r))?(u="literal",d=f[0],p=l.boolean):g=!0;break;case"a":(f=this._shortPredicates.exec(r))?(u="abbreviation",d="a"):g=!0;break;case"=":this._n3Mode&&r.length>1&&(u="abbreviation",">"!==r[1]?(y=1,d="="):(y=2,d=">"));break;case"!":if(!this._n3Mode)break;case",":case";":case"[":case"]":case"(":case")":case"}":this._lineMode||(y=1,u=c);break;case"{":!this._lineMode&&r.length>=2&&("|"===r[1]?(u="{|",y=2):(u=c,y=1));break;case"|":r.length>=2&&"}"===r[1]&&(u="|}",y=2);break;default:g=!0}if(g&&("@prefix"!==this._previousMarker&&"PREFIX"!==this._previousMarker||!(f=this._prefix.exec(r))?((f=this._prefixed.exec(r))||t&&(f=this._prefixed.exec(`${r} `)))&&(u="prefixed",p=f[1]||"",d=this._unescape(f[2])):(u="prefix",d=f[1]||"")),"^^"===this._previousMarker)switch(u){case"prefixed":u="type";break;case"IRI":u="typeIRI";break;default:u=""}if(!u)return t||!/^'''|^"""/.test(r)&&/\n|\r/.test(r)?a(this):this._input=r;const m=y||f[0].length,b=i(u,d,p,s,m);this.previousToken=b,this._previousMarker=u,r=r.substr(m,r.length)}function i(t,i,a,o,s){const c=r?n-r.length:n,u={type:t,value:i,prefix:a,line:o,start:c,end:c+s};return e(null,u),u}function a(t){e(t._syntaxError(/^\S*/.exec(r)[0]))}}_unescape(e){let t=!1;const r=e.replace(d,((e,r,n,i)=>{if("string"==typeof r)return String.fromCharCode(Number.parseInt(r,16));if("string"==typeof n){let e=Number.parseInt(n,16);return e<=65535?String.fromCharCode(Number.parseInt(n,16)):String.fromCharCode(55296+((e-=65536)>>10),56320+(1023&e))}return i in p?p[i]:(t=!0,"")}));return t?null:r}_parseLiteral(e){if(e.length>=3){const t=e.match(/^(?:"""|"|'''|'|)/)[0],r=t.length;let n=Math.max(this._literalClosingPos,r);for(;(n=e.indexOf(t,n))>0;){let t=0;for(;"\\"===e[n-t-1];)t++;if(t%2==0){const t=e.substring(r,n),i=t.split(/\r\n|\r|\n/).length-1,a=n+r;if(1===r&&0!==i||3===r&&this._lineMode)break;return this._line+=i,{value:this._unescape(t),matchLength:a}}n++}this._literalClosingPos=e.length-r+1}return{value:"",matchLength:0}}_syntaxError(e){this._input=null;const t=new Error(`Unexpected "${e}" on line ${this._line}.`);return t.context={token:void 0,line:this._line,previousToken:this.previousToken},t}_readStartingBom(e){return e.startsWith("\ufeff")?e.substr(1):e}tokenize(e,t){if(this._line=1,"string"==typeof e){if(this._input=this._readStartingBom(e),"function"!=typeof t){const e=[];let t;if(this._tokenizeToEnd(((r,n)=>r?t=r:e.push(n)),!0),t)throw t;return e}a()((()=>this._tokenizeToEnd(t,!0)))}else this._pendingBuffer=null,"function"==typeof e.setEncoding&&e.setEncoding("utf8"),e.on("data",(e=>{null!==this._input&&0!==e.length&&(this._pendingBuffer&&(e=Buffer.concat([this._pendingBuffer,e]),this._pendingBuffer=null),128&e[e.length-1]?this._pendingBuffer=e:(void 0===this._input?this._input=this._readStartingBom("string"==typeof e?e:e.toString()):this._input+=e,this._tokenizeToEnd(t,!1)))})),e.on("end",(()=>{"string"==typeof this._input&&this._tokenizeToEnd(t,!0)})),e.on("error",t)}}const{rdf:m,xsd:b}=u;let v,_=0;const w={namedNode:function(e){return new O(e)},blankNode:function(e){return new x(e||"n3-"+_++)},variable:function(e){return new A(e)},literal:function(e,t){if("string"==typeof t)return new E(`"${e}"@${t.toLowerCase()}`);let r=t?t.value:"";return""===r&&("boolean"==typeof e?r=b.boolean:"number"==typeof e&&(Number.isFinite(e)?r=Number.isInteger(e)?b.integer:b.double:(r=b.double,Number.isNaN(e)||(e=e>0?"INF":"-INF")))),""===r||r===b.string?new E(`"${e}"`):new E(`"${e}"^^${r}`)},defaultGraph:function(){return v},quad:D,triple:D},T=w;class S{constructor(e){this.id=e}get value(){return this.id}equals(e){return e instanceof S?this.id===e.id:!!e&&this.termType===e.termType&&this.value===e.value}hashCode(){return 0}toJSON(){return{termType:this.termType,value:this.value}}}class O extends S{get termType(){return"NamedNode"}}class E extends S{get termType(){return"Literal"}get value(){return this.id.substring(1,this.id.lastIndexOf('"'))}get language(){const e=this.id;let t=e.lastIndexOf('"')+1;return tnull),this._blankNodePrefix="string"!=typeof e.blankNodePrefix?"":e.blankNodePrefix.replace(/^(?!_:)/,"_:"),this._lexer=e.lexer||new g({lineMode:s,n3:o}),this._explicitQuantifiers=!!e.explicitQuantifiers}static _resetBlankNodePrefix(){j=0}_setBase(e){if(e){const t=e.indexOf("#");t>=0&&(e=e.substr(0,t)),this._base=e,this._basePath=e.indexOf("/")<0?e:e.replace(/[^\/?]*(?:\?.*)?$/,""),e=e.match(/^(?:([a-z][a-z0-9+.-]*:))?(?:\/\/[^\/]*)?/i),this._baseRoot=e[0],this._baseScheme=e[1]}else this._base="",this._basePath=""}_saveContext(e,t,r,n,i){const a=this._n3Mode;this._contextStack.push({type:e,subject:r,predicate:n,object:i,graph:t,inverse:!!a&&this._inversePredicate,blankPrefix:a?this._prefixes._:"",quantified:a?this._quantified:null}),a&&(this._inversePredicate=!1,this._prefixes._=this._graph?`${this._graph.value}.`:".",this._quantified=Object.create(this._quantified))}_restoreContext(e,t){const r=this._contextStack.pop();if(!r||r.type!==e)return this._error(`Unexpected ${t.type}`,t);this._subject=r.subject,this._predicate=r.predicate,this._object=r.object,this._graph=r.graph,this._n3Mode&&(this._inversePredicate=r.inverse,this._prefixes._=r.blankPrefix,this._quantified=r.quantified)}_readInTopContext(e){switch(e.type){case"eof":return null!==this._graph?this._error("Unclosed graph",e):(delete this._prefixes._,this._callback(null,null,this._prefixes));case"PREFIX":this._sparqlStyle=!0;case"@prefix":return this._readPrefix;case"BASE":this._sparqlStyle=!0;case"@base":return this._readBaseIRI;case"{":if(this._supportsNamedGraphs)return this._graph="",this._subject=null,this._readSubject;case"GRAPH":if(this._supportsNamedGraphs)return this._readNamedGraphLabel;default:return this._readSubject(e)}}_readEntity(e,t){let r;switch(e.type){case"IRI":case"typeIRI":const t=this._resolveIRI(e.value);if(null===t)return this._error("Invalid IRI",e);r=this._namedNode(t);break;case"type":case"prefixed":const n=this._prefixes[e.prefix];if(void 0===n)return this._error(`Undefined prefix "${e.prefix}:"`,e);r=this._namedNode(n+e.value);break;case"blank":r=this._blankNode(this._prefixes[e.prefix]+e.value);break;case"var":r=this._variable(e.value.substr(1));break;default:return this._error(`Expected entity but got ${e.type}`,e)}return!t&&this._n3Mode&&r.id in this._quantified&&(r=this._quantified[r.id]),r}_readSubject(e){switch(this._predicate=null,e.type){case"[":return this._saveContext("blank",this._graph,this._subject=this._blankNode(),null,null),this._readBlankNodeHead;case"(":return this._saveContext("list",this._graph,this.RDF_NIL,null,null),this._subject=null,this._readListItem;case"{":return this._n3Mode?(this._saveContext("formula",this._graph,this._graph=this._blankNode(),null,null),this._readSubject):this._error("Unexpected graph",e);case"}":return this._readPunctuation(e);case"@forSome":return this._n3Mode?(this._subject=null,this._predicate=this.N3_FORSOME,this._quantifier=this._blankNode,this._readQuantifierList):this._error('Unexpected "@forSome"',e);case"@forAll":return this._n3Mode?(this._subject=null,this._predicate=this.N3_FORALL,this._quantifier=this._variable,this._readQuantifierList):this._error('Unexpected "@forAll"',e);case"literal":if(!this._n3Mode)return this._error("Unexpected literal",e);if(0===e.prefix.length)return this._literalValue=e.value,this._completeSubjectLiteral;this._subject=this._literal(e.value,this._namedNode(e.prefix));break;case"<<":return this._supportsRDFStar?(this._saveContext("<<",this._graph,null,null,null),this._graph=null,this._readSubject):this._error("Unexpected RDF* syntax",e);default:if(void 0===(this._subject=this._readEntity(e)))return;if(this._n3Mode)return this._getPathReader(this._readPredicateOrNamedGraph)}return this._readPredicateOrNamedGraph}_readPredicate(e){const t=e.type;switch(t){case"inverse":this._inversePredicate=!0;case"abbreviation":this._predicate=this.ABBREVIATIONS[e.value];break;case".":case"]":case"}":return null===this._predicate?this._error(`Unexpected ${t}`,e):(this._subject=null,"]"===t?this._readBlankNodeTail(e):this._readPunctuation(e));case";":return null!==this._predicate?this._readPredicate:this._error("Expected predicate but got ;",e);case"[":if(this._n3Mode)return this._saveContext("blank",this._graph,this._subject,this._subject=this._blankNode(),null),this._readBlankNodeHead;case"blank":if(!this._n3Mode)return this._error("Disallowed blank node as predicate",e);default:if(void 0===(this._predicate=this._readEntity(e)))return}return this._readObject}_readObject(e){switch(e.type){case"literal":if(0===e.prefix.length)return this._literalValue=e.value,this._readDataTypeOrLang;this._object=this._literal(e.value,this._namedNode(e.prefix));break;case"[":return this._saveContext("blank",this._graph,this._subject,this._predicate,this._subject=this._blankNode()),this._readBlankNodeHead;case"(":return this._saveContext("list",this._graph,this._subject,this._predicate,this.RDF_NIL),this._subject=null,this._readListItem;case"{":return this._n3Mode?(this._saveContext("formula",this._graph,this._subject,this._predicate,this._graph=this._blankNode()),this._readSubject):this._error("Unexpected graph",e);case"<<":return this._supportsRDFStar?(this._saveContext("<<",this._graph,this._subject,this._predicate,null),this._graph=null,this._readSubject):this._error("Unexpected RDF* syntax",e);default:if(void 0===(this._object=this._readEntity(e)))return;if(this._n3Mode)return this._getPathReader(this._getContextEndReader())}return this._getContextEndReader()}_readPredicateOrNamedGraph(e){return"{"===e.type?this._readGraph(e):this._readPredicate(e)}_readGraph(e){return"{"!==e.type?this._error(`Expected graph but got ${e.type}`,e):(this._graph=this._subject,this._subject=null,this._readSubject)}_readBlankNodeHead(e){return"]"===e.type?(this._subject=null,this._readBlankNodeTail(e)):(this._predicate=null,this._readPredicate(e))}_readBlankNodeTail(e){if("]"!==e.type)return this._readBlankNodePunctuation(e);null!==this._subject&&this._emit(this._subject,this._predicate,this._object,this._graph);const t=null===this._predicate;return this._restoreContext("blank",e),null!==this._object?this._getContextEndReader():null!==this._predicate?this._readObject:t?this._readPredicateOrNamedGraph:this._readPredicateAfterBlank}_readPredicateAfterBlank(e){switch(e.type){case".":case"}":return this._subject=null,this._readPunctuation(e);default:return this._readPredicate(e)}}_readListItem(e){let t=null,r=null,n=this._readListItem;const i=this._subject,a=this._contextStack,o=a[a.length-1];switch(e.type){case"[":this._saveContext("blank",this._graph,r=this._blankNode(),this.RDF_FIRST,this._subject=t=this._blankNode()),n=this._readBlankNodeHead;break;case"(":this._saveContext("list",this._graph,r=this._blankNode(),this.RDF_FIRST,this.RDF_NIL),this._subject=null;break;case")":if(this._restoreContext("list",e),0!==a.length&&"list"===a[a.length-1].type&&this._emit(this._subject,this._predicate,this._object,this._graph),null===this._predicate){if(n=this._readPredicate,this._subject===this.RDF_NIL)return n}else if(n=this._getContextEndReader(),this._object===this.RDF_NIL)return n;r=this.RDF_NIL;break;case"literal":0===e.prefix.length?(this._literalValue=e.value,n=this._readListItemDataTypeOrLang):(t=this._literal(e.value,this._namedNode(e.prefix)),n=this._getContextEndReader());break;case"{":return this._n3Mode?(this._saveContext("formula",this._graph,this._subject,this._predicate,this._graph=this._blankNode()),this._readSubject):this._error("Unexpected graph",e);default:if(void 0===(t=this._readEntity(e)))return}if(null===r&&(this._subject=r=this._blankNode()),null===i?null===o.predicate?o.subject=r:o.object=r:this._emit(i,this.RDF_REST,r,this._graph),null!==t){if(this._n3Mode&&("IRI"===e.type||"prefixed"===e.type))return this._saveContext("item",this._graph,r,this.RDF_FIRST,t),this._subject=t,this._predicate=null,this._getPathReader(this._readListItem);this._emit(r,this.RDF_FIRST,t,this._graph)}return n}_readDataTypeOrLang(e){return this._completeObjectLiteral(e,!1)}_readListItemDataTypeOrLang(e){return this._completeObjectLiteral(e,!0)}_completeLiteral(e){let t=this._literal(this._literalValue);switch(e.type){case"type":case"typeIRI":const r=this._readEntity(e);if(void 0===r)return;t=this._literal(this._literalValue,r),e=null;break;case"langcode":t=this._literal(this._literalValue,e.value),e=null}return{token:e,literal:t}}_completeSubjectLiteral(e){return this._subject=this._completeLiteral(e).literal,this._readPredicateOrNamedGraph}_completeObjectLiteral(e,t){const r=this._completeLiteral(e);if(r)return this._object=r.literal,t&&this._emit(this._subject,this.RDF_FIRST,this._object,this._graph),null===r.token?this._getContextEndReader():(this._readCallback=this._getContextEndReader(),this._readCallback(r.token))}_readFormulaTail(e){return"}"!==e.type?this._readPunctuation(e):(null!==this._subject&&this._emit(this._subject,this._predicate,this._object,this._graph),this._restoreContext("formula",e),null===this._object?this._readPredicate:this._getContextEndReader())}_readPunctuation(e){let t,r=this._graph;const n=this._subject,i=this._inversePredicate;switch(e.type){case"}":if(null===this._graph)return this._error("Unexpected graph closing",e);if(this._n3Mode)return this._readFormulaTail(e);this._graph=null;case".":this._subject=null,t=this._contextStack.length?this._readSubject:this._readInTopContext,i&&(this._inversePredicate=!1);break;case";":t=this._readPredicate;break;case",":t=this._readObject;break;case"{|":if(!this._supportsRDFStar)return this._error("Unexpected RDF* syntax",e);const a=this._predicate,o=this._object;this._subject=this._quad(n,a,o,this.DEFAULTGRAPH),t=this._readPredicate;break;case"|}":if("Quad"!==this._subject.termType)return this._error("Unexpected asserted triple closing",e);this._subject=null,t=this._readPunctuation;break;default:if(this._supportsQuads&&null===this._graph&&void 0!==(r=this._readEntity(e))){t=this._readQuadPunctuation;break}return this._error(`Expected punctuation to follow "${this._object.id}"`,e)}if(null!==n){const e=this._predicate,t=this._object;i?this._emit(t,e,n,r):this._emit(n,e,t,r)}return t}_readBlankNodePunctuation(e){let t;switch(e.type){case";":t=this._readPredicate;break;case",":t=this._readObject;break;default:return this._error(`Expected punctuation to follow "${this._object.id}"`,e)}return this._emit(this._subject,this._predicate,this._object,this._graph),t}_readQuadPunctuation(e){return"."!==e.type?this._error("Expected dot to follow quad",e):this._readInTopContext}_readPrefix(e){return"prefix"!==e.type?this._error("Expected prefix to follow @prefix",e):(this._prefix=e.value,this._readPrefixIRI)}_readPrefixIRI(e){if("IRI"!==e.type)return this._error(`Expected IRI to follow prefix "${this._prefix}:"`,e);const t=this._readEntity(e);return this._prefixes[this._prefix]=t.value,this._prefixCallback(this._prefix,t),this._readDeclarationPunctuation}_readBaseIRI(e){const t="IRI"===e.type&&this._resolveIRI(e.value);return t?(this._setBase(t),this._readDeclarationPunctuation):this._error("Expected valid IRI to follow base declaration",e)}_readNamedGraphLabel(e){switch(e.type){case"IRI":case"blank":case"prefixed":return this._readSubject(e),this._readGraph;case"[":return this._readNamedGraphBlankLabel;default:return this._error("Invalid graph label",e)}}_readNamedGraphBlankLabel(e){return"]"!==e.type?this._error("Invalid graph label",e):(this._subject=this._blankNode(),this._readGraph)}_readDeclarationPunctuation(e){return this._sparqlStyle?(this._sparqlStyle=!1,this._readInTopContext(e)):"."!==e.type?this._error("Expected declaration to end with a dot",e):this._readInTopContext}_readQuantifierList(e){let t;switch(e.type){case"IRI":case"prefixed":if(void 0!==(t=this._readEntity(e,!0)))break;default:return this._error(`Unexpected ${e.type}`,e)}return this._explicitQuantifiers?(null===this._subject?this._emit(this._graph||this.DEFAULTGRAPH,this._predicate,this._subject=this._blankNode(),this.QUANTIFIERS_GRAPH):this._emit(this._subject,this.RDF_REST,this._subject=this._blankNode(),this.QUANTIFIERS_GRAPH),this._emit(this._subject,this.RDF_FIRST,t,this.QUANTIFIERS_GRAPH)):this._quantified[t.id]=this._quantifier(this._blankNode().value),this._readQuantifierPunctuation}_readQuantifierPunctuation(e){return","===e.type?this._readQuantifierList:(this._explicitQuantifiers&&(this._emit(this._subject,this.RDF_REST,this.RDF_NIL,this.QUANTIFIERS_GRAPH),this._subject=null),this._readCallback=this._getContextEndReader(),this._readCallback(e))}_getPathReader(e){return this._afterPath=e,this._readPath}_readPath(e){switch(e.type){case"!":return this._readForwardPath;case"^":return this._readBackwardPath;default:const t=this._contextStack,r=t.length&&t[t.length-1];if(r&&"item"===r.type){const t=this._subject;this._restoreContext("item",e),this._emit(this._subject,this.RDF_FIRST,t,this._graph)}return this._afterPath(e)}}_readForwardPath(e){let t,r;const n=this._blankNode();if(void 0!==(r=this._readEntity(e)))return null===this._predicate?(t=this._subject,this._subject=n):(t=this._object,this._object=n),this._emit(t,r,n,this._graph),this._readPath}_readBackwardPath(e){const t=this._blankNode();let r,n;if(void 0!==(r=this._readEntity(e)))return null===this._predicate?(n=this._subject,this._subject=t):(n=this._object,this._object=t),this._emit(t,r,n,this._graph),this._readPath}_readRDFStarTailOrGraph(e){return">>"!==e.type?this._supportsQuads&&null===this._graph&&void 0!==(this._graph=this._readEntity(e))?this._readRDFStarTail:this._error(`Expected >> to follow "${this._object.id}"`,e):this._readRDFStarTail(e)}_readRDFStarTail(e){if(">>"!==e.type)return this._error(`Expected >> but got ${e.type}`,e);const t=this._quad(this._subject,this._predicate,this._object,this._graph||this.DEFAULTGRAPH);return this._restoreContext("<<",e),null===this._subject?(this._subject=t,this._readPredicate):(this._object=t,this._getContextEndReader())}_getContextEndReader(){const e=this._contextStack;if(!e.length)return this._readPunctuation;switch(e[e.length-1].type){case"blank":return this._readBlankNodeTail;case"list":return this._readListItem;case"formula":return this._readFormulaTail;case"<<":return this._readRDFStarTailOrGraph}}_emit(e,t,r,n){this._callback(null,this._quad(e,t,r,n||this.DEFAULTGRAPH))}_error(e,t){const r=new Error(`${e} on line ${t.line}.`);r.context={token:t,line:t.line,previousToken:this._lexer.previousToken},this._callback(r),this._callback=M}_resolveIRI(e){return/^[a-z][a-z0-9+.-]*:/i.test(e)?e:this._resolveRelativeIRI(e)}_resolveRelativeIRI(e){if(!e.length)return this._base;switch(e[0]){case"#":return this._base+e;case"?":return this._base.replace(/(?:\?.*)?$/,e);case"/":return("/"===e[1]?this._baseScheme:this._baseRoot)+this._removeDotSegments(e);default:return/^[^/:]*:/.test(e)?null:this._removeDotSegments(this._basePath+e)}}_removeDotSegments(e){if(!/(^|\/)\.\.?($|[/#?])/.test(e))return e;const t=e.length;let r="",n=-1,i=-1,a=0,o="/";for(;n=i&&(r=r.substr(0,a)),"/"!==o)return`${r}/${e.substr(n+1)}`;a=n+1}}}o=e[++n]}return r+e.substring(a)}parse(e,t,r){if(this._readCallback=this._readInTopContext,this._sparqlStyle=!1,this._prefixes=Object.create(null),this._prefixes._=this._blankNodePrefix?this._blankNodePrefix.substr(2):`b${j++}_`,this._prefixCallback=r||M,this._inversePredicate=!1,this._quantified=Object.create(null),!t){const t=[];let r;if(this._callback=(e,n)=>{e?r=e:n&&t.push(n)},this._lexer.tokenize(e).every((e=>this._readCallback=this._readCallback(e))),r)throw r;return t}this._callback=t,this._lexer.tokenize(e,((e,t)=>{null!==e?(this._callback(e),this._callback=M):this._readCallback&&(this._readCallback=this._readCallback(t))}))}}function M(){}function L(e,t){const r=t.namedNode;e._namedNode=r,e._blankNode=t.blankNode,e._literal=t.literal,e._variable=t.variable,e._quad=t.quad,e.DEFAULTGRAPH=t.defaultGraph(),e.RDF_FIRST=r(u.rdf.first),e.RDF_REST=r(u.rdf.rest),e.RDF_NIL=r(u.rdf.nil),e.N3_FORALL=r(u.r.forAll),e.N3_FORSOME=r(u.r.forSome),e.ABBREVIATIONS={a:r(u.rdf.type),"=":r(u.owl.sameAs),">":r(u.log.implies)},e.QUANTIFIERS_GRAPH=r("urn:n3:quantifiers")}function k(e){return!!e&&"NamedNode"===e.termType}function F(e){return!!e&&"BlankNode"===e.termType}function B(e){return!!e&&"Literal"===e.termType}function U(e){return!!e&&"Variable"===e.termType}function q(e){return!!e&&"DefaultGraph"===e.termType}function V(e){return q(e.graph)}function Q(e,t){return $({"":e.value||e},t)("")}function $(e,t){const r=Object.create(null);for(const t in e)n(t,e[t]);function n(e,n){if("string"==typeof n){const i=Object.create(null);r[e]=e=>i[e]||(i[e]=t.namedNode(n+e))}else if(!(e in r))throw new Error(`Unknown prefix: ${e}`);return r[e]}return t=t||T,n}L(C.prototype,T);const H=T.defaultGraph(),{rdf:G,xsd:z}=u,K=/["\\\t\n\r\b\f\u0000-\u0019\ud800-\udbff]/,X=/["\\\t\n\r\b\f\u0000-\u0019]|[\ud800-\udbff][\udc00-\udfff]/g,J={"\\":"\\\\",'"':'\\"',"\t":"\\t","\n":"\\n","\r":"\\r","\b":"\\b","\f":"\\f"};class W extends S{equals(e){return e===this}}class Y{constructor(e,t){if(this._prefixRegex=/$0^/,e&&"function"!=typeof e.write&&(t=e,e=null),t=t||{},this._lists=t.lists,e)this._outputStream=e,this._endStream=void 0===t.end||!!t.end;else{let e="";this._outputStream={write(t,r,n){e+=t,n&&n()},end:t=>{t&&t(null,e)}},this._endStream=!0}this._subject=null,/triple|quad/i.test(t.format)?(this._lineMode=!0,this._writeQuad=this._writeQuadLine):(this._lineMode=!1,this._graph=H,this._prefixIRIs=Object.create(null),t.prefixes&&this.addPrefixes(t.prefixes),t.baseIRI&&(this._baseMatcher=new RegExp(`^${ee(t.baseIRI)}${t.baseIRI.endsWith("/")?"":"[#?]"}`),this._baseLength=t.baseIRI.length))}get _inDefaultGraph(){return H.equals(this._graph)}_write(e,t){this._outputStream.write(e,"utf8",t)}_writeQuad(e,t,r,n,i){try{n.equals(this._graph)||(this._write((null===this._subject?"":this._inDefaultGraph?".\n":"\n}\n")+(H.equals(n)?"":`${this._encodeIriOrBlank(n)} {\n`)),this._graph=n,this._subject=null),e.equals(this._subject)?t.equals(this._predicate)?this._write(`, ${this._encodeObject(r)}`,i):this._write(`;\n ${this._encodePredicate(this._predicate=t)} ${this._encodeObject(r)}`,i):this._write(`${(null===this._subject?"":".\n")+this._encodeSubject(this._subject=e)} ${this._encodePredicate(this._predicate=t)} ${this._encodeObject(r)}`,i)}catch(e){i&&i(e)}}_writeQuadLine(e,t,r,n,i){delete this._prefixMatch,this._write(this.quadToString(e,t,r,n),i)}quadToString(e,t,r,n){return`${this._encodeSubject(e)} ${this._encodeIriOrBlank(t)} ${this._encodeObject(r)}${n&&n.value?` ${this._encodeIriOrBlank(n)} .\n`:" .\n"}`}quadsToString(e){return e.map((e=>this.quadToString(e.subject,e.predicate,e.object,e.graph))).join("")}_encodeSubject(e){return"Quad"===e.termType?this._encodeQuad(e):this._encodeIriOrBlank(e)}_encodeIriOrBlank(e){if("NamedNode"!==e.termType)return this._lists&&e.value in this._lists&&(e=this.list(this._lists[e.value])),"id"in e?e.id:`_:${e.value}`;let t=e.value;this._baseMatcher&&this._baseMatcher.test(t)&&(t=t.substr(this._baseLength)),K.test(t)&&(t=t.replace(X,Z));const r=this._prefixRegex.exec(t);return r?r[1]?this._prefixIRIs[r[1]]+r[2]:t:`<${t}>`}_encodeLiteral(e){let t=e.value;if(K.test(t)&&(t=t.replace(X,Z)),e.language)return`"${t}"@${e.language}`;if(this._lineMode){if(e.datatype.value===z.string)return`"${t}"`}else switch(e.datatype.value){case z.string:return`"${t}"`;case z.boolean:if("true"===t||"false"===t)return t;break;case z.integer:if(/^[+-]?\d+$/.test(t))return t;break;case z.decimal:if(/^[+-]?\d*\.\d+$/.test(t))return t;break;case z.double:if(/^[+-]?(?:\d+\.\d*|\.?\d+)[eE][+-]?\d+$/.test(t))return t}return`"${t}"^^${this._encodeIriOrBlank(e.datatype)}`}_encodePredicate(e){return e.value===G.type?"a":this._encodeIriOrBlank(e)}_encodeObject(e){switch(e.termType){case"Quad":return this._encodeQuad(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeQuad({subject:e,predicate:t,object:r,graph:n}){return`<<${this._encodeSubject(e)} ${this._encodePredicate(t)} ${this._encodeObject(r)}${q(n)?"":` ${this._encodeIriOrBlank(n)}`}>>`}_blockedWrite(){throw new Error("Cannot write because the writer has been closed.")}addQuad(e,t,r,n,i){void 0===r?this._writeQuad(e.subject,e.predicate,e.object,e.graph,t):"function"==typeof n?this._writeQuad(e,t,r,H,n):this._writeQuad(e,t,r,n||H,i)}addQuads(e){for(let t=0;t.\n`)}if(r){let e="",t="";for(const r in this._prefixIRIs)e+=e?`|${r}`:r,t+=(t?"|":"")+this._prefixIRIs[r];e=ee(e),this._prefixRegex=new RegExp(`^(?:${t})[^/]*$|^(${e})([_a-zA-Z][\\-_a-zA-Z0-9]*)$`)}this._write(r?"\n":"",t)}blank(e,t){let r,n,i=e;switch(void 0===e?i=[]:e.termType?i=[{predicate:e,object:t}]:"length"in e||(i=[e]),n=i.length){case 0:return new W("[]");case 1:if(r=i[0],!(r.object instanceof W))return new W(`[ ${this._encodePredicate(r.predicate)} ${this._encodeObject(r.object)} ]`);default:let t="[";for(let a=0;a{t=null,e(r,n)});if(this._endStream)try{return this._outputStream.end(t)}catch(e){}t&&t()}}function Z(e){let t=J[e];return void 0===t&&(1===e.length?(t=e.charCodeAt(0).toString(16),t="\\u0000".substr(0,6-t.length)+t):(t=(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)+9216).toString(16),t="\\U00000000".substr(0,10-t.length)+t)),t}function ee(e){return e.replace(/[\]\/\(\)\*\+\?\.\\\$]/g,"\\$&")}var te=r(58521);class re{constructor(e,t){this._size=0,this._graphs=Object.create(null),this._id=0,this._ids=Object.create(null),this._entities=Object.create(null),this._blankNodeIndex=0,t||!e||e[0]||(t=e,e=null),t=t||{},this._factory=t.factory||T,e&&this.addQuads(e)}_termFromId(e,t){if("."===e[0]){const t=this._entities,r=e.split(".");return this._factory.quad(this._termFromId(t[r[1]]),this._termFromId(t[r[2]]),this._termFromId(t[r[3]]),r[4]&&this._termFromId(t[r[4]]))}return I(e,t)}_termToNumericId(e){if("Quad"===e.termType){const t=this._termToNumericId(e.subject),r=this._termToNumericId(e.predicate),n=this._termToNumericId(e.object);let i;return t&&r&&n&&(q(e.graph)||(i=this._termToNumericId(e.graph)))&&this._ids[i?`.${t}.${r}.${n}.${i}`:`.${t}.${r}.${n}`]}return this._ids[P(e)]}_termToNewNumericId(e){const t=e&&"Quad"===e.termType?`.${this._termToNewNumericId(e.subject)}.${this._termToNewNumericId(e.predicate)}.${this._termToNewNumericId(e.object)}${q(e.graph)?"":`.${this._termToNewNumericId(e.graph)}`}`:P(e);return this._ids[t]||(this._ids[this._entities[++this._id]=t]=this._id)}get size(){let e=this._size;if(null!==e)return e;e=0;const t=this._graphs;let r,n;for(const i in t)for(const a in r=t[i].subjects)for(const t in n=r[a])e+=Object.keys(n[t]).length;return this._size=e}_addToIndex(e,t,r,n){const i=e[t]||(e[t]={}),a=i[r]||(i[r]={}),o=n in a;return o||(a[n]=null),!o}_removeFromIndex(e,t,r,n){const i=e[t],a=i[r];delete a[n];for(const e in a)return;delete i[r];for(const e in i)return;delete e[t]}*_findInIndex(e,t,r,n,i,a,o,s){let c,u,l;const d=this._entities,p=this._termFromId(s,this._factory),h={subject:null,predicate:null,object:null};t&&((c=e,e={})[t]=c[t]);for(const t in e)if(u=e[t]){h[i]=this._termFromId(d[t],this._factory),r&&((c=u,u={})[r]=c[r]);for(const e in u)if(l=u[e]){h[a]=this._termFromId(d[e],this._factory);const t=n?n in l?[n]:[]:Object.keys(l);for(let e=0;e{r in t||(t[r]=!0,e(this._termFromId(this._entities[r],this._factory)))}}add(e){return this.addQuad(e),this}addQuad(e,t,r,n){t||(n=e.graph,r=e.object,t=e.predicate,e=e.subject),n=P(n);let i=this._graphs[n];i||(i=this._graphs[n]={subjects:{},predicates:{},objects:{}},Object.freeze(i)),e=this._termToNewNumericId(e),t=this._termToNewNumericId(t),r=this._termToNewNumericId(r);const a=this._addToIndex(i.subjects,e,t,r);return this._addToIndex(i.predicates,t,r,e),this._addToIndex(i.objects,r,e,t),this._size=null,a}addQuads(e){for(let t=0;t{this.addQuad(e)})),e}removeQuad(e,t,r,n){t||(n=e.graph,r=e.object,t=e.predicate,e=e.subject),n=P(n);const i=this._graphs;let a,o,s;if(!((e=e&&this._termToNumericId(e))&&(t=t&&this._termToNumericId(t))&&(r=r&&this._termToNumericId(r))&&(a=i[n])&&(o=a.subjects[e])&&(s=o[t])&&r in s))return!1;for(e in this._removeFromIndex(a.subjects,e,t,r),this._removeFromIndex(a.predicates,t,r,e),this._removeFromIndex(a.objects,r,e,t),null!==this._size&&this._size--,a.subjects)return!0;return delete i[n],!0}removeQuads(e){for(let t=0;t{this.removeQuad(e)})),e}removeMatches(e,t,r,n){const i=new te.Readable({objectMode:!0});return i._read=()=>{for(const a of this.readQuads(e,t,r,n))i.push(a);i.push(null)},this.remove(i)}deleteGraph(e){return this.removeMatches(null,null,null,e)}getQuads(e,t,r,n){return[...this.readQuads(e,t,r,n)]}*readQuads(e,t,r,n){n=n&&P(n);const i=this._getGraphs(n);let a,o,s,c;if(!(e&&!(o=this._termToNumericId(e))||t&&!(s=this._termToNumericId(t))||r&&!(c=this._termToNumericId(r))))for(const e in i)(a=i[e])&&(o?c?yield*this._findInIndex(a.objects,c,o,s,"object","subject","predicate",e):yield*this._findInIndex(a.subjects,o,s,null,"subject","predicate","object",e):s?yield*this._findInIndex(a.predicates,s,c,null,"predicate","object","subject",e):c?yield*this._findInIndex(a.objects,c,null,null,"object","subject","predicate",e):yield*this._findInIndex(a.subjects,null,null,null,"subject","predicate","object",e))}match(e,t,r,n){return new ne(this,e,t,r,n)}countQuads(e,t,r,n){n=n&&P(n);const i=this._getGraphs(n);let a,o,s,c,u=0;if(e&&!(o=this._termToNumericId(e))||t&&!(s=this._termToNumericId(t))||r&&!(c=this._termToNumericId(r)))return 0;for(const n in i)(a=i[n])&&(u+=e?r?this._countInIndex(a.objects,c,o,s):this._countInIndex(a.subjects,o,s,c):t?this._countInIndex(a.predicates,s,c,o):this._countInIndex(a.objects,c,o,s));return u}forEach(e,t,r,n,i){this.some((t=>(e(t),!1)),t,r,n,i)}every(e,t,r,n,i){let a=!1;const o=!this.some((t=>(a=!0,!e(t))),t,r,n,i);return a&&o}some(e,t,r,n,i){for(const a of this.readQuads(t,r,n,i))if(e(a))return!0;return!1}getSubjects(e,t,r){const n=[];return this.forSubjects((e=>{n.push(e)}),e,t,r),n}forSubjects(e,t,r,n){n=n&&P(n);const i=this._getGraphs(n);let a,o,s;if(e=this._uniqueEntities(e),!(t&&!(o=this._termToNumericId(t))||r&&!(s=this._termToNumericId(r))))for(n in i)(a=i[n])&&(o?s?this._loopBy2Keys(a.predicates,o,s,e):this._loopByKey1(a.subjects,o,e):s?this._loopByKey0(a.objects,s,e):this._loop(a.subjects,e))}getPredicates(e,t,r){const n=[];return this.forPredicates((e=>{n.push(e)}),e,t,r),n}forPredicates(e,t,r,n){n=n&&P(n);const i=this._getGraphs(n);let a,o,s;if(e=this._uniqueEntities(e),!(t&&!(o=this._termToNumericId(t))||r&&!(s=this._termToNumericId(r))))for(n in i)(a=i[n])&&(o?s?this._loopBy2Keys(a.objects,s,o,e):this._loopByKey0(a.subjects,o,e):s?this._loopByKey1(a.predicates,s,e):this._loop(a.predicates,e))}getObjects(e,t,r){const n=[];return this.forObjects((e=>{n.push(e)}),e,t,r),n}forObjects(e,t,r,n){n=n&&P(n);const i=this._getGraphs(n);let a,o,s;if(e=this._uniqueEntities(e),!(t&&!(o=this._termToNumericId(t))||r&&!(s=this._termToNumericId(r))))for(n in i)(a=i[n])&&(o?s?this._loopBy2Keys(a.subjects,o,s,e):this._loopByKey1(a.objects,o,e):s?this._loopByKey0(a.predicates,s,e):this._loop(a.objects,e))}getGraphs(e,t,r){const n=[];return this.forGraphs((e=>{n.push(e)}),e,t,r),n}forGraphs(e,t,r,n){for(const i in this._graphs)this.some((t=>(e(t.graph),!0)),t,r,n,i)}createBlankNode(e){let t,r;if(e)for(t=e=`_:${e}`,r=1;this._ids[t];)t=e+r++;else do{t="_:b"+this._blankNodeIndex++}while(this._ids[t]);return this._ids[t]=++this._id,this._entities[this._id]=t,this._factory.blankNode(t.substr(2))}extractLists({remove:e=!1,ignoreErrors:t=!1}={}){const r={},n=t?()=>!0:(e,t)=>{throw new Error(`${e.value} ${t}`)},i=this.getQuads(null,u.rdf.rest,u.rdf.nil,null),a=e?[...i]:[];return i.forEach((t=>{const i=[];let o,s,c=!1;const l=t.graph;let d=t.subject;for(;d&&!c;){const e=this.getQuads(null,null,d,null),t=this.getQuads(d,null,null,null);let r,p=null,h=null,f=null;for(let i=0;i{switch(e){case"data":t=n;break;case"end":r=n}}},((e,t)=>{e&&this.emit("error",e)||t&&this.push(t)}),((e,t)=>{this.emit("prefix",e,t)})),this._transform=(e,r,n)=>{t(e),n()},this._flush=e=>{r(),e()}}import(e){return e.on("data",(e=>{this.write(e)})),e.on("end",(()=>{this.end()})),e.on("error",(e=>{this.emit("error",e)})),this}}class ae extends te.Transform{constructor(e){super({encoding:"utf8",writableObjectMode:!0});const t=this._writer=new Y({write:(e,t,r)=>{this.push(e),r&&r()},end:e=>{this.push(null),e&&e()}},e);this._transform=(e,r,n)=>{t.addQuad(e,n)},this._flush=e=>{t.end(e)}}import(e){return e.on("data",(e=>{this.write(e)})),e.on("end",(()=>{this.end()})),e.on("error",(e=>{this.emit("error",e)})),e.on("prefix",((e,t)=>{this._writer.addPrefix(e,t)})),this}}const oe={Lexer:g,Parser:C,Writer:Y,Store:re,StreamParser:ie,StreamWriter:ae,Util:n,DataFactory:T,Term:S,NamedNode:O,Literal:E,BlankNode:x,Variable:A,DefaultGraph:R,Quad:N,Triple:N,termFromId:I,termToId:P}},39907:e=>{var t,r,n=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function o(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var s,c=[],u=!1,l=-1;function d(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&p())}function p(){if(!u){var e=o(d);u=!0;for(var t=c.length;t;){for(s=c,c=[];++l1)for(var r=1;r{!function(){var t;t="object"==typeof window&&window?window:r.g,e.exports?e.exports=t.Promise?t.Promise:o:t.Promise||(t.Promise=o);var n=t.setImmediate||function(e){setTimeout(e,1)};function i(e,t){return function(){e.apply(t,arguments)}}var a=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function o(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],p(e,i(c,this),i(u,this))}function s(e){var t=this;null!==this._state?n((function(){var r=t._state?e.onFulfilled:e.onRejected;if(null!==r){var n;try{n=r(t._value)}catch(t){return void e.reject(t)}e.resolve(n)}else(t._state?e.resolve:e.reject)(t._value)})):this._deferreds.push(e)}function c(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void p(i(t,e),i(c,this),i(u,this))}this._state=!0,this._value=e,l.call(this)}catch(e){u.call(this,e)}}function u(e){this._state=!1,this._value=e,l.call(this)}function l(){for(var e=0,t=this._deferreds.length;e{let n;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:r.g):e=>(n||(n=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0)))},18050:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(73968),t),i(r(31352),t),i(r(81947),t),i(r(91417),t),i(r(88963),t),i(r(89135),t),i(r(22e3),t)},73968:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlankNode=void 0,t.BlankNode=class{constructor(e){this.termType="BlankNode",this.value=e}equals(e){return!!e&&"BlankNode"===e.termType&&e.value===this.value}}},31352:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DataFactory=void 0;const n=r(73968),i=r(81947),a=r(91417),o=r(88963),s=r(89135),c=r(22e3);let u=0;t.DataFactory=class{constructor(e){this.blankNodeCounter=0,e=e||{},this.blankNodePrefix=e.blankNodePrefix||`df_${u++}_`}namedNode(e){return new o.NamedNode(e)}blankNode(e){return new n.BlankNode(e||`${this.blankNodePrefix}${this.blankNodeCounter++}`)}literal(e,t){return new a.Literal(e,t)}variable(e){return new c.Variable(e)}defaultGraph(){return i.DefaultGraph.INSTANCE}quad(e,t,r,n){return new s.Quad(e,t,r,n||this.defaultGraph())}fromTerm(e){switch(e.termType){case"NamedNode":return this.namedNode(e.value);case"BlankNode":return this.blankNode(e.value);case"Literal":return e.language?this.literal(e.value,e.language):e.datatype.equals(a.Literal.XSD_STRING)?this.literal(e.value):this.literal(e.value,this.fromTerm(e.datatype));case"Variable":return this.variable(e.value);case"DefaultGraph":return this.defaultGraph();case"Quad":return this.quad(this.fromTerm(e.subject),this.fromTerm(e.predicate),this.fromTerm(e.object),this.fromTerm(e.graph))}}fromQuad(e){return this.fromTerm(e)}resetBlankNodeCounter(){this.blankNodeCounter=0}}},81947:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultGraph=void 0;class r{constructor(){this.termType="DefaultGraph",this.value=""}equals(e){return!!e&&"DefaultGraph"===e.termType}}t.DefaultGraph=r,r.INSTANCE=new r},91417:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Literal=void 0;const n=r(88963);class i{constructor(e,t){this.termType="Literal",this.value=e,"string"==typeof t?(this.language=t,this.datatype=i.RDF_LANGUAGE_STRING):t?(this.language="",this.datatype=t):(this.language="",this.datatype=i.XSD_STRING)}equals(e){return!!e&&"Literal"===e.termType&&e.value===this.value&&e.language===this.language&&this.datatype.equals(e.datatype)}}t.Literal=i,i.RDF_LANGUAGE_STRING=new n.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"),i.XSD_STRING=new n.NamedNode("http://www.w3.org/2001/XMLSchema#string")},88963:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NamedNode=void 0,t.NamedNode=class{constructor(e){this.termType="NamedNode",this.value=e}equals(e){return!!e&&"NamedNode"===e.termType&&e.value===this.value}}},89135:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Quad=void 0,t.Quad=class{constructor(e,t,r,n){this.termType="Quad",this.value="",this.subject=e,this.predicate=t,this.object=r,this.graph=n}equals(e){return!!e&&("Quad"===e.termType||!e.termType)&&this.subject.equals(e.subject)&&this.predicate.equals(e.predicate)&&this.object.equals(e.object)&&this.graph.equals(e.graph)}}},22e3:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Variable=void 0,t.Variable=class{constructor(e){this.termType="Variable",this.value=e}equals(e){return!!e&&"Variable"===e.termType&&e.value===this.value}}},91032:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(9157),t)},9157:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isTermGrounded=t.termToSignature=t.quadToSignature=t.sha1hex=t.hashTerm=t.hashTerms=t.getGraphBlankNodes=t.uniqGraph=t.deindexGraph=t.indexGraph=t.getQuadsWithoutBlankNodes=t.getQuadsWithBlankNodes=t.hasValue=t.hashValues=t.getBijectionInner=t.getBijection=t.isomorphic=void 0;const n=r(99499),i=r(22112),a=r(13252);function o(e,t){const r=h(p(e)),n=h(p(t));if(Object.keys(r).length!==Object.keys(n).length)return null;for(const e in r)if(r[e]!==n[e])return null;return s(y(d(e)),y(d(t)),g(e),g(t))}function s(e,t,r,n,a,o){a||(a={}),o||(o={});const[d,p]=m(e,r,a),[h,f]=m(t,n,o);if(Object.keys(d).length!==Object.keys(h).length)return null;for(const e in d)if(!l(h,d[e]))return null;let y={};for(const e of r){const t=i.termToString(e),r=p[t];for(const e in f)if(f[e]===r){y[t]=e,delete f[e];break}}if(!c(Object.keys(y).sort(),r.map(i.termToString).sort())||!c(u(y).sort(),n.map(i.termToString).sort())){y=null;for(const a of r){const o=i.termToString(a);if(!d[o])for(const a of n){const c=i.termToString(a);if(!h[c]&&p[o]===f[c]){const i=v(o);y=s(e,t,r,n,Object.assign(Object.assign({},d),{[o]:i}),Object.assign(Object.assign({},h),{[c]:i}))}}}}return y}function c(e,t){if(e.length!==t.length)return!1;for(let r=e.length;r--;)if(e[r]!==t[r])return!1;return!0}function u(e){const t=[];for(const r in e)t.push(e[r]);return t}function l(e,t){for(const r in e)if(e[r]===t)return!0;return!1}function d(e){return e.filter((e=>a.someTerms(e,(e=>"BlankNode"===e.termType||"Quad"===e.termType&&a.getTermsNested(e).some((e=>"BlankNode"===e.termType))))))}function p(e){return e.filter((e=>a.everyTerms(e,(e=>"BlankNode"!==e.termType&&!("Quad"===e.termType&&a.getTermsNested(e).some((e=>"BlankNode"===e.termType)))))))}function h(e){const t={};for(const r of e)t[JSON.stringify(i.quadToStringQuad(r))]=!0;return t}function f(e){return Object.keys(e).map((e=>i.stringQuadToQuad(JSON.parse(e))))}function y(e){return f(h(e))}function g(e){return a.uniqTerms(e.map((e=>a.getBlankNodes(a.getTermsNested(e)))).reduce(((e,t)=>e.concat(t)),[]))}function m(e,t,r){const n=Object.assign({},r),a={};let o=!0;for(;o;){const r=Object.keys(n).length;for(const r of t){const t=i.termToString(r);if(!n[t]){const[i,o]=b(r,e,n);i&&(n[t]=o),a[t]=o}}const s={};for(const e in a){const t=a[e];void 0===s[t]?s[t]=e:s[t]=!1}for(const e in s){const t=s[e];t&&(n[t]=e)}o=r!==Object.keys(n).length}return[n,a]}function b(e,t,r){const n=[];let i=!0;for(const o of t){const t=a.getTermsNested(o);if(t.some((t=>t.equals(e)))){n.push(_(o,r,e));for(const n of t)T(n,r)||n.equals(e)||(i=!1)}}return[i,v(n.sort().join(""))]}function v(e){return n.sha1().update(e).digest("hex")}function _(e,t,r){return a.getTerms(e).map((e=>w(e,t,r))).join("|")}function w(e,t,r){return e.equals(r)?"@self":"BlankNode"===e.termType?t[i.termToString(e)]||"@blank":"Quad"===e.termType?`<${_(e,t,r)}>`:i.termToString(e)}function T(e,t){return"BlankNode"!==e.termType&&!("Quad"===e.termType&&a.getTermsNested(e).some((e=>!T(e,t))))||!!t[i.termToString(e)]}t.isomorphic=function(e,t){return!!o(e,t)},t.getBijection=o,t.getBijectionInner=s,t.hashValues=u,t.hasValue=l,t.getQuadsWithBlankNodes=d,t.getQuadsWithoutBlankNodes=p,t.indexGraph=h,t.deindexGraph=f,t.uniqGraph=y,t.getGraphBlankNodes=g,t.hashTerms=m,t.hashTerm=b,t.sha1hex=v,t.quadToSignature=_,t.termToSignature=w,t.isTermGrounded=T},80740:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.getSupportedJavaScriptPrimitives=t.getSupportedRdfDatatypes=t.getTermRaw=t.toRdf=t.fromRdf=void 0;const a=r(18050),o=r(23303),s=r(76516);i(r(23303),t),i(r(48959),t),i(r(76516),t);const c=new a.DataFactory,u=new s.Translator;function l(e,t){return u.fromRdf(e,t)}u.registerHandler(new o.TypeHandlerString,o.TypeHandlerString.TYPES.map((e=>c.namedNode(e))),["string"]),u.registerHandler(new o.TypeHandlerBoolean,[o.TypeHandlerBoolean.TYPE].map((e=>c.namedNode(e))),["boolean"]),u.registerHandler(new o.TypeHandlerNumberDouble,o.TypeHandlerNumberDouble.TYPES.map((e=>c.namedNode(e))),["number"]),u.registerHandler(new o.TypeHandlerNumberInteger,o.TypeHandlerNumberInteger.TYPES.map((e=>c.namedNode(e))),["number"]),u.registerHandler(new o.TypeHandlerDate,o.TypeHandlerDate.TYPES.map((e=>c.namedNode(e))),["object"]),t.fromRdf=l,t.toRdf=function(e,t){return t&&"namedNode"in t&&(t={dataFactory:t}),(t=t||{})&&!t.dataFactory&&(t.dataFactory=c),u.toRdf(e,t)},t.getTermRaw=function(e,t){return"Literal"===e.termType?l(e,t):e.value},t.getSupportedRdfDatatypes=function(){return u.getSupportedRdfDatatypes()},t.getSupportedJavaScriptPrimitives=function(){return u.getSupportedJavaScriptPrimitives()}},48959:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},76516:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Translator=void 0,t.Translator=class{constructor(){this.supportedRdfDatatypes=[],this.fromRdfHandlers={},this.toRdfHandlers={}}static incorrectRdfDataType(e){throw new Error(`Invalid RDF ${e.datatype.value} value: '${e.value}'`)}registerHandler(e,t,r){for(const r of t)this.supportedRdfDatatypes.push(r),this.fromRdfHandlers[r.value]=e;for(const t of r){let r=this.toRdfHandlers[t];r||(this.toRdfHandlers[t]=r=[]),r.push(e)}}fromRdf(e,t){const r=this.fromRdfHandlers[e.datatype.value];return r?r.fromRdf(e,t):e.value}toRdf(e,t){const r=this.toRdfHandlers[typeof e];if(r)for(const n of r){const r=n.toRdf(e,t);if(r)return r}throw new Error(`Invalid JavaScript value: '${e}'`)}getSupportedRdfDatatypes(){return this.supportedRdfDatatypes}getSupportedJavaScriptPrimitives(){return Object.keys(this.toRdfHandlers)}}},48403:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHandlerBoolean=void 0;const n=r(76516);class i{fromRdf(e,t){switch(e.value){case"true":case"1":return!0;case"false":case"0":return!1}return t&&n.Translator.incorrectRdfDataType(e),!1}toRdf(e,{datatype:t,dataFactory:r}){return r.literal(e?"true":"false",t||r.namedNode(i.TYPE))}}i.TYPE="http://www.w3.org/2001/XMLSchema#boolean",t.TypeHandlerBoolean=i},5603:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHandlerDate=void 0;const n=r(76516);class i{fromRdf(e,t){switch(t&&!e.value.match(i.VALIDATORS[e.datatype.value.substr(33,e.datatype.value.length)])&&n.Translator.incorrectRdfDataType(e),e.datatype.value){case"http://www.w3.org/2001/XMLSchema#gDay":return new Date(0,0,parseInt(e.value,10));case"http://www.w3.org/2001/XMLSchema#gMonthDay":const t=e.value.split("-");return new Date(0,parseInt(t[0],10)-1,parseInt(t[1],10));case"http://www.w3.org/2001/XMLSchema#gYear":return new Date(e.value+"-01-01");case"http://www.w3.org/2001/XMLSchema#gYearMonth":return new Date(e.value+"-01");default:return new Date(e.value)}}toRdf(e,{datatype:t,dataFactory:r}){if(t=t||r.namedNode(i.TYPES[0]),!(e instanceof Date))return null;const n=e;let a;switch(t.value){case"http://www.w3.org/2001/XMLSchema#gDay":a=String(n.getUTCDate());break;case"http://www.w3.org/2001/XMLSchema#gMonthDay":a=n.getUTCMonth()+1+"-"+n.getUTCDate();break;case"http://www.w3.org/2001/XMLSchema#gYear":a=String(n.getUTCFullYear());break;case"http://www.w3.org/2001/XMLSchema#gYearMonth":a=n.getUTCFullYear()+"-"+(n.getUTCMonth()+1);break;case"http://www.w3.org/2001/XMLSchema#date":a=n.toISOString().replace(/T.*$/,"");break;default:a=n.toISOString()}return r.literal(a,t)}}i.TYPES=["http://www.w3.org/2001/XMLSchema#dateTime","http://www.w3.org/2001/XMLSchema#date","http://www.w3.org/2001/XMLSchema#gDay","http://www.w3.org/2001/XMLSchema#gMonthDay","http://www.w3.org/2001/XMLSchema#gYear","http://www.w3.org/2001/XMLSchema#gYearMonth"],i.VALIDATORS={date:/^[0-9]+-[0-9][0-9]-[0-9][0-9]Z?$/,dateTime:/^[0-9]+-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9](\.[0-9][0-9][0-9])?((Z?)|([\+-][0-9][0-9]:[0-9][0-9]))$/,gDay:/^[0-9]+$/,gMonthDay:/^[0-9]+-[0-9][0-9]$/,gYear:/^[0-9]+$/,gYearMonth:/^[0-9]+-[0-9][0-9]$/},t.TypeHandlerDate=i},25947:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHandlerNumberDouble=void 0;const n=r(76516);class i{fromRdf(e,t){const r=parseFloat(e.value);return t&&isNaN(r)&&n.Translator.incorrectRdfDataType(e),r}toRdf(e,{datatype:t,dataFactory:r}){return t=t||r.namedNode(i.TYPES[0]),isNaN(e)?r.literal("NaN",t):isFinite(e)?e%1==0?null:r.literal(e.toExponential(15).replace(/(\d)0*e\+?/,"$1E"),t):r.literal(e>0?"INF":"-INF",t)}}i.TYPES=["http://www.w3.org/2001/XMLSchema#double","http://www.w3.org/2001/XMLSchema#decimal","http://www.w3.org/2001/XMLSchema#float"],t.TypeHandlerNumberDouble=i},83002:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHandlerNumberInteger=void 0;const n=r(76516);class i{fromRdf(e,t){const r=parseInt(e.value,10);return t&&(isNaN(r)||e.value.indexOf(".")>=0)&&n.Translator.incorrectRdfDataType(e),r}toRdf(e,{datatype:t,dataFactory:r}){return r.literal(String(e),t||(e<=i.MAX_INT&&e>=i.MIN_INT?r.namedNode(i.TYPES[0]):r.namedNode(i.TYPES[1])))}}i.TYPES=["http://www.w3.org/2001/XMLSchema#integer","http://www.w3.org/2001/XMLSchema#long","http://www.w3.org/2001/XMLSchema#int","http://www.w3.org/2001/XMLSchema#byte","http://www.w3.org/2001/XMLSchema#short","http://www.w3.org/2001/XMLSchema#negativeInteger","http://www.w3.org/2001/XMLSchema#nonNegativeInteger","http://www.w3.org/2001/XMLSchema#nonPositiveInteger","http://www.w3.org/2001/XMLSchema#positiveInteger","http://www.w3.org/2001/XMLSchema#unsignedByte","http://www.w3.org/2001/XMLSchema#unsignedInt","http://www.w3.org/2001/XMLSchema#unsignedLong","http://www.w3.org/2001/XMLSchema#unsignedShort"],i.MAX_INT=2147483647,i.MIN_INT=-2147483648,t.TypeHandlerNumberInteger=i},2074:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHandlerString=void 0;class r{fromRdf(e){return e.value}toRdf(e,{datatype:t,dataFactory:r}){return r.literal(e,t)}}r.TYPES=["http://www.w3.org/2001/XMLSchema#string","http://www.w3.org/2001/XMLSchema#normalizedString","http://www.w3.org/2001/XMLSchema#anyURI","http://www.w3.org/2001/XMLSchema#base64Binary","http://www.w3.org/2001/XMLSchema#language","http://www.w3.org/2001/XMLSchema#Name","http://www.w3.org/2001/XMLSchema#NCName","http://www.w3.org/2001/XMLSchema#NMTOKEN","http://www.w3.org/2001/XMLSchema#token","http://www.w3.org/2001/XMLSchema#hexBinary","http://www.w3.org/1999/02/22-rdf-syntax-ns#langString","http://www.w3.org/2001/XMLSchema#time","http://www.w3.org/2001/XMLSchema#duration"],t.TypeHandlerString=r},23303:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(48403),t),i(r(5603),t),i(r(25947),t),i(r(83002),t),i(r(2074),t)},10953:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.storeStream=void 0;const n=r(92427);t.storeStream=function(e){const t=n.RdfStore.createDefault();return new Promise(((r,n)=>t.import(e).on("error",n).once("end",(()=>r(t)))))}},92427:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(51368),t),i(r(2369),t),i(r(62947),t),i(r(12924),t),i(r(76386),t),i(r(94992),t),i(r(26503),t),i(r(86721),t),i(r(93616),t),i(r(55100),t),i(r(95832),t),i(r(68752),t),i(r(38654),t),i(r(15698),t),i(r(53277),t),i(r(86937),t),i(r(15291),t),i(r(29390),t),i(r(25383),t),i(r(39034),t)},15291:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},29390:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.arePatternsQuoted=t.quadHasVariables=t.quadToPattern=t.encodeOptionalTerms=t.orderQuadComponents=t.getComponentOrderScore=t.getBestIndex=t.QUAD_TERM_NAMES_INVERSE=void 0;const n=r(13252);function i(e,t){return e.map(((r,n)=>t.includes(r)?e.length-n:0)).reduce(((e,t)=>e+t),0)}function a(e){for(const t of n.QUAD_TERM_NAMES){const r=e[t];if("Variable"===r.termType||"Quad"===r.termType&&a(r))return!0}return!1}t.QUAD_TERM_NAMES_INVERSE=Object.fromEntries(n.QUAD_TERM_NAMES.map(((e,t)=>[e,t]))),t.getBestIndex=function(e,t){if(1===e.length||t.every((e=>void 0!==e)))return 0;const r=[];for(let e=0;e({score:i(e,r),index:t}))).sort(((e,t)=>t.score-e.score))[0].index},t.getComponentOrderScore=i,t.orderQuadComponents=function(e,r){return e.map((e=>{const n=t.QUAD_TERM_NAMES_INVERSE[e];return r[n]}))},t.encodeOptionalTerms=function(e,t){const r=e.map((e=>{if(e){if("Quad"===e.termType&&a(e))return;const r=t.encodeOptional(e);return void 0===r?"none":r}return e}));if(!r.includes("none"))return r},t.quadToPattern=function(e,t,r,n,i){let a=!1;return[[e||void 0,t||void 0,r||void 0,n||void 0].map((e=>{if(e){if("Variable"===e.termType)return;if("Quad"===e.termType)return i?e:void(a=!0)}return e})),a]},t.quadHasVariables=a,t.arePatternsQuoted=function(e){return e.map((e=>"Quad"===(null==e?void 0:e.termType)&&a(e)))}},25383:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},39034:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStore=void 0;const n=r(76664),i=r(18050),a=r(13252),o=r(51368),s=r(76386),c=r(26503),u=r(68752),l=r(29390);class d{constructor(e){this.features={quotedTripleFiltering:!0},this._size=0,this.options=e,this.dataFactory=e.dataFactory,this.dictionary=e.dictionary,this.indexesWrapped=d.constructIndexesWrapped(e),this.indexesWrappedComponentOrders=this.indexesWrapped.map((e=>e.componentOrder))}static createDefault(){return new d({indexCombinations:d.DEFAULT_INDEX_COMBINATIONS,indexConstructor:e=>new u.RdfStoreIndexNestedMapQuoted(e),dictionary:new c.TermDictionaryQuotedIndexed(new s.TermDictionaryNumberRecordFullTerms),dataFactory:new i.DataFactory})}static constructIndexesWrapped(e){const t=[];if(0===e.indexCombinations.length)throw new Error("At least one index combination is required");for(const r of e.indexCombinations){if(!d.isCombinationValid(r))throw new Error(`Invalid index combination: ${r}`);t.push({index:e.indexConstructor(e),componentOrder:r,componentOrderInverse:Object.fromEntries(r.map(((e,t)=>[e,t])))})}return t}static isCombinationValid(e){for(const t of a.QUAD_TERM_NAMES)if(!e.includes(t))return!1;return 4===e.length}get size(){return this._size}addQuad(e){const t=[this.dictionary.encode(e.subject),this.dictionary.encode(e.predicate),this.dictionary.encode(e.object),this.dictionary.encode(e.graph)];let r=!1;for(const e of this.indexesWrapped)r=e.index.set((0,l.orderQuadComponents)(e.componentOrder,t),!0);return!!r&&(this._size++,!0)}removeQuad(e){const t=[this.dictionary.encodeOptional(e.subject),this.dictionary.encodeOptional(e.predicate),this.dictionary.encodeOptional(e.object),this.dictionary.encodeOptional(e.graph)];if(t.includes(void 0))return!1;let r=!1;for(const e of this.indexesWrapped)if(r=e.index.remove((0,l.orderQuadComponents)(e.componentOrder,t)),!r)break;return!!r&&(this._size--,!0)}remove(e){return e.on("data",(e=>this.removeQuad(e))),e}removeMatches(e,t,r,n){return this.remove(this.match(e,t,r,n))}deleteGraph(e){return"string"==typeof e&&(e=this.dataFactory.namedNode(e)),this.removeMatches(void 0,void 0,void 0,e)}import(e){return e.on("data",(e=>this.addQuad(e))),e}*readQuads(e,t,r,n){const i=Boolean(this.dictionary.features.quotedTriples)&&Object.values(this.indexesWrapped).every((e=>e.index.features.quotedTripleFiltering)),[o,s]=(0,l.quadToPattern)(e,t,r,n,i),c=this.indexesWrapped[(0,l.getBestIndex)(this.indexesWrappedComponentOrders,o)],u=(0,l.orderQuadComponents)(c.componentOrder,o);for(const i of c.index.find(u)){const o=this.dataFactory.quad(i[c.componentOrderInverse.subject],i[c.componentOrderInverse.predicate],i[c.componentOrderInverse.object],i[c.componentOrderInverse.graph]);s?(0,a.matchPattern)(o,e,t,r,n)&&(yield o):yield o}}getQuads(e,t,r,n){return[...this.readQuads(e,t,r,n)]}match(e,t,r,i){return(0,n.wrap)(this.readQuads(e,t,r,i))}countQuads(e,t,r,n){const i=Boolean(this.dictionary.features.quotedTriples)&&Object.values(this.indexesWrapped).every((e=>e.index.features.quotedTripleFiltering)),[a]=(0,l.quadToPattern)(e,t,r,n,i);if(a.every((e=>void 0===e)))return this.size;const o=this.indexesWrapped[(0,l.getBestIndex)(this.indexesWrappedComponentOrders,a)],s=(0,l.orderQuadComponents)(o.componentOrder,a);return o.index.count(s)}asDataset(){return new o.DatasetCoreWrapper(this)}}d.DEFAULT_INDEX_COMBINATIONS=[["graph","subject","predicate","object"],["graph","predicate","object","subject"],["graph","object","subject","predicate"]],t.RdfStore=d},51368:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DatasetCoreWrapper=void 0;const n=r(39034);class i{constructor(e){this.store=e}get size(){return this.store.size}add(e){return this.store.addQuad(e),this}delete(e){return this.store.removeQuad(e),this}has(e){for(const t of this.store.readQuads(e.subject,e.predicate,e.object,e.graph))return!0;return!1}match(e,t,r,a){const o=new n.RdfStore(this.store.options);for(const n of this.store.readQuads(e,t,r,a))o.addQuad(n);return new i(o)}[Symbol.iterator](){return this.store.readQuads()}}t.DatasetCoreWrapper=i},2369:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},62947:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryNumberMap=void 0;const n=r(18050),i=r(22112);t.TermDictionaryNumberMap=class{constructor(e=new n.DataFactory){this.lastId=0,this.dictionary=new Map,this.reverseDictionary=new Map,this.features={quotedTriples:!1},this.dataFactory=e}encode(e){const t=(0,i.termToString)(e);let r=this.dictionary.get(t);return void 0===r&&(r=this.lastId++,this.dictionary.set(t,r),this.reverseDictionary.set(r,t)),r}encodeOptional(e){const t=(0,i.termToString)(e);return this.dictionary.get(t)}decode(e){const t=this.reverseDictionary.get(e);if(void 0===t)throw new Error(`The value ${e} is not present in this dictionary`);return(0,i.stringToTerm)(t,this.dataFactory)}encodings(){return this.reverseDictionary.keys()}findQuotedTriples(e){throw new Error("findQuotedTriples is not supported")}findQuotedTriplesEncoded(e){throw new Error("findQuotedTriplesEncoded is not supported")}}},12924:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryNumberRecord=void 0;const n=r(18050),i=r(22112);t.TermDictionaryNumberRecord=class{constructor(e=new n.DataFactory){this.lastId=0,this.dictionary={},this.reverseDictionary={},this.features={quotedTriples:!1},this.dataFactory=e}encode(e){const t=(0,i.termToString)(e);let r=this.dictionary[t];return void 0===r&&(r=this.lastId++,this.dictionary[t]=r,this.reverseDictionary[r]=t),r}encodeOptional(e){const t=(0,i.termToString)(e);return this.dictionary[t]}decode(e){const t=this.reverseDictionary[e];if(void 0===t)throw new Error(`The value ${e} is not present in this dictionary`);return(0,i.stringToTerm)(t,this.dataFactory)}*encodings(){for(const e of Object.keys(this.reverseDictionary))yield Number.parseInt(e,10)}findQuotedTriples(e){throw new Error("findQuotedTriples is not supported")}findQuotedTriplesEncoded(e){throw new Error("findQuotedTriplesEncoded is not supported")}}},76386:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryNumberRecordFullTerms=void 0;const n=r(18050),i=r(22112);t.TermDictionaryNumberRecordFullTerms=class{constructor(e=new n.DataFactory){this.lastId=0,this.dictionary={},this.reverseDictionary={},this.features={quotedTriples:!1},this.dataFactory=e}encode(e){const t=(0,i.termToString)(e);let r=this.dictionary[t];return void 0===r&&(r=this.lastId++,this.dictionary[t]=r,this.reverseDictionary[r]=e),r}encodeOptional(e){const t=(0,i.termToString)(e);return this.dictionary[t]}decode(e){const t=this.reverseDictionary[e];if(void 0===t)throw new Error(`The value ${e} is not present in this dictionary`);return t}*encodings(){for(const e of Object.keys(this.reverseDictionary))yield Number.parseInt(e,10)}findQuotedTriples(e){throw new Error("findQuotedTriples is not supported")}findQuotedTriplesEncoded(e){throw new Error("findQuotedTriplesEncoded is not supported")}}},94992:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryQuoted=void 0;const n=r(18050),i=r(13252);class a{constructor(e,t,r=new n.DataFactory){this.features={quotedTriples:!0},this.plainTermDictionary=e,this.quotedTriplesDictionary=t,this.dataFactory=r}encode(e){return"Quad"===e.termType?a.BITMASK|1+this.quotedTriplesDictionary.encode(e):this.plainTermDictionary.encode(e)}encodeOptional(e){if("Quad"===e.termType){const t=this.quotedTriplesDictionary.encodeOptional(e);return void 0===t?t:a.BITMASK|1+t}return this.plainTermDictionary.encodeOptional(e)}decode(e){if(a.BITMASK&e){const t=(~a.BITMASK&e)-1;return this.quotedTriplesDictionary.decode(t)}return this.plainTermDictionary.decode(e)}*encodings(){for(const e of this.plainTermDictionary.encodings())yield e;for(const e of this.quotedTriplesDictionary.encodings())yield a.BITMASK|1+e}*findQuotedTriples(e){for(const t of this.findQuotedTriplesEncoded(e))yield this.decode(t)}*findQuotedTriplesEncoded(e){for(let t of this.quotedTriplesDictionary.encodings()){t=a.BITMASK|1+t;const r=this.decode(t);(0,i.matchPattern)(r,e.subject,e.predicate,e.object,e.graph)&&(yield t)}}}a.BITMASK=1<<31,t.TermDictionaryQuoted=a},26503:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryQuotedIndexed=void 0;const n=r(18050),i=r(95832),a=r(29390);class o{constructor(e,t=new n.DataFactory){this.quotedTriplesDictionary=[],this.features={quotedTriples:!0},this.plainTermDictionary=e;const r={indexCombinations:[],indexConstructor:void 0,dictionary:this,dataFactory:t};this.quotedTriplesReverseDictionaries=[new i.RdfStoreIndexNestedMap(r),new i.RdfStoreIndexNestedMap(r),new i.RdfStoreIndexNestedMap(r)],this.dataFactory=t}encode(e){return"Quad"===e.termType?this.encodeQuotedTriple(e,!1):this.plainTermDictionary.encode(e)}encodeQuotedTriple(e,t){if("DefaultGraph"!==e.graph.termType)throw new Error("Encoding of quoted quads outside of the default graph is not allowed");const r=(0,a.encodeOptionalTerms)([e.subject,e.predicate,e.object,e.graph],this),n=r&&r.every((e=>void 0!==e))?this.quotedTriplesReverseDictionaries[0].getEncoded(r):void 0;if(void 0!==n||t)return void 0===n?void 0:o.BITMASK|n;const i=[this.encode(e.subject),this.encode(e.predicate),this.encode(e.object)],s=this.quotedTriplesDictionary.length+1;this.quotedTriplesDictionary.push(i);const c=this.encode(this.dataFactory.defaultGraph());return this.quotedTriplesReverseDictionaries[0].set([i[0],i[1],i[2],c],s),this.quotedTriplesReverseDictionaries[1].set([i[1],i[2],i[0],c],s),this.quotedTriplesReverseDictionaries[2].set([i[2],i[0],i[1],c],s),o.BITMASK|s}encodeOptional(e){return"Quad"===e.termType?this.encodeQuotedTriple(e,!0):this.plainTermDictionary.encodeOptional(e)}decode(e){if(o.BITMASK&e){const t=(~o.BITMASK&e)-1;if(t>=this.quotedTriplesDictionary.length)throw new Error(`The value ${e} is not present in the quoted triples range of the dictionary`);const r=this.quotedTriplesDictionary[t];return this.dataFactory.quad(this.decode(r[0]),this.decode(r[1]),this.decode(r[2]))}return this.plainTermDictionary.decode(e)}*encodings(){for(const e of this.plainTermDictionary.encodings())yield e;for(const e of this.quotedTriplesDictionary.keys())yield o.BITMASK|1+e}*findQuotedTriples(e){for(const t of this.findQuotedTriplesEncoded(e))yield this.decode(t)}*findQuotedTriplesEncoded(e){const[t,r]=(0,a.quadToPattern)(e.subject,e.predicate,e.object,e.graph,!0);for(const e of this.patternToIterable(t[0]))for(const r of this.patternToIterable(t[1]))for(const n of this.patternToIterable(t[2]))for(const i of this.patternToIterable(t[3]))if(e&&r||!r&&!n){const a=[e,r,n,i];for(const e of this.quotedTriplesReverseDictionaries[0].findEncoded(a,t))yield o.BITMASK|this.quotedTriplesReverseDictionaries[0].getEncoded(e)}else if(!e&&r){const a=[r,n,e,i];for(const e of this.quotedTriplesReverseDictionaries[1].findEncoded(a,t))yield o.BITMASK|this.quotedTriplesReverseDictionaries[1].getEncoded(e)}else{const a=[n,e,r,i];for(const e of this.quotedTriplesReverseDictionaries[2].findEncoded(a,t))yield o.BITMASK|this.quotedTriplesReverseDictionaries[2].getEncoded(e)}}*patternToIterable(e){if("Quad"===(null==e?void 0:e.termType))return void(yield*this.findQuotedTriplesEncoded(e));if(void 0===e)return void(yield);const t=this.encodeOptional(e);void 0!==t&&(yield t)}}o.BITMASK=1<<31,t.TermDictionaryQuotedIndexed=o},86721:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryQuotedReferential=void 0;const n=r(18050),i=r(13252),a=r(29390);class o{constructor(e,t=new n.DataFactory){this.quotedTriplesDictionary=[],this.quotedTriplesReverseDictionary={},this.features={quotedTriples:!0},this.plainTermDictionary=e,this.dataFactory=t}encode(e){return"Quad"===e.termType?this.encodeQuotedTriple(e,!1):this.plainTermDictionary.encode(e)}encodeQuotedTriple(e,t){var r;if("DefaultGraph"!==e.graph.termType)throw new Error("Encoding of quoted quads outside of the default graph is not allowed");const n=null===(r=(0,a.encodeOptionalTerms)([e.subject,e.predicate,e.object,void 0],this))||void 0===r?void 0:r.slice(0,3),i=n&&n.every((e=>void 0!==e))?this.quotedTriplesReverseDictionary[n.join(o.SEPARATOR)]:void 0;if(void 0!==i||t)return void 0===i?void 0:o.BITMASK|i;const s=[this.encode(e.subject),this.encode(e.predicate),this.encode(e.object)],c=this.quotedTriplesDictionary.length+1;return this.quotedTriplesDictionary.push(s),this.quotedTriplesReverseDictionary[s.join(o.SEPARATOR)]=c,o.BITMASK|c}encodeOptional(e){return"Quad"===e.termType?this.encodeQuotedTriple(e,!0):this.plainTermDictionary.encodeOptional(e)}decode(e){if(o.BITMASK&e){const t=(~o.BITMASK&e)-1;if(t>=this.quotedTriplesDictionary.length)throw new Error(`The value ${e} is not present in the quoted triples range of the dictionary`);const r=this.quotedTriplesDictionary[t];return this.dataFactory.quad(this.decode(r[0]),this.decode(r[1]),this.decode(r[2]))}return this.plainTermDictionary.decode(e)}*encodings(){for(const e of this.plainTermDictionary.encodings())yield e;for(const e of this.quotedTriplesDictionary.keys())yield o.BITMASK|1+e}*findQuotedTriples(e){for(const t of this.findQuotedTriplesEncoded(e))yield this.decode(t)}*findQuotedTriplesEncoded(e){for(let t of this.quotedTriplesDictionary.keys()){t=o.BITMASK|1+t;const r=this.decode(t);(0,i.matchPattern)(r,e.subject,e.predicate,e.object,e.graph)&&(yield t)}}}o.BITMASK=1<<31,o.SEPARATOR="_",t.TermDictionaryQuotedReferential=o},93616:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionarySymbol=void 0;const n=r(18050),i=r(22112);t.TermDictionarySymbol=class{constructor(e=new n.DataFactory){this.features={quotedTriples:!1},this.dataFactory=e}encode(e){return Symbol.for(`rdf::${(0,i.termToString)(e)}`)}encodeOptional(e){return this.encode(e)}decode(e){const t=Symbol.keyFor(e);if(void 0===t)throw new Error(`The value ${String(e)} is not present in this dictionary`);return(0,i.stringToTerm)(t.slice(5),this.dataFactory)}encodings(){throw new Error("encodings is not supported")}findQuotedTriples(e){throw new Error("findQuotedTriples is not supported")}findQuotedTriplesEncoded(e){throw new Error("findQuotedTriplesEncoded is not supported")}}},55100:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},95832:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedMap=void 0;const n=r(29390);t.RdfStoreIndexNestedMap=class{constructor(e){this.features={quotedTripleFiltering:!1},this.dictionary=e.dictionary,this.nestedMap=new Map}set(e,t){const r=this.nestedMap;let n=r.get(e[0]);n||(n=new Map,r.set(e[0],n));let i=n.get(e[1]);i||(i=new Map,n.set(e[1],i));let a=i.get(e[2]);a||(a=new Map,i.set(e[2],a));const o=a.has(e[3]);return o||a.set(e[3],t),!o}remove(e){const t=this.nestedMap,r=t.get(e[0]);if(!r)return!1;const n=r.get(e[1]);if(!n)return!1;const i=n.get(e[2]);if(!i)return!1;const a=i.delete(e[3]);return a&&0===i.size&&(n.delete(e[2]),0===n.size&&(r.delete(e[1]),0===r.size&&t.delete(e[0]))),a}get(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(t&&!t.includes(void 0))return this.getEncoded(t)}getEncoded(e){const t=this.nestedMap.get(e[0]);if(!t)return;const r=t.get(e[1]);if(!r)return;const n=r.get(e[2]);return n?n.get(e[3]):void 0}*find(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!t)return;const[r,i,a,o]=t,[s,c,u,l]=e;let d,p,h,f,y,g,m;const b=this.nestedMap,v=void 0!==r?b.has(r)?[r]:[]:b.keys();for(const e of v){y=b.get(e),d=s||this.dictionary.decode(e);const t=void 0!==i?y.has(i)?[i]:[]:y.keys();for(const e of t){g=y.get(e),p=c||this.dictionary.decode(e);const t=void 0!==a?g.has(a)?[a]:[]:g.keys();for(const e of t){m=g.get(e),h=u||this.dictionary.decode(e);const t=void 0!==o?m.has(o)?[o]:[]:m.keys();for(const e of t)f=l||this.dictionary.decode(e),yield[d,p,h,f]}}}}*findEncoded(e,t){const[r,n,i,a]=e;let o,s,c;const u=this.nestedMap,l=void 0!==r?u.has(r)?[r]:[]:u.keys();for(const e of l){o=u.get(e);const t=void 0!==n?o.has(n)?[n]:[]:o.keys();for(const r of t){s=o.get(r);const t=void 0!==i?s.has(i)?[i]:[]:s.keys();for(const n of t){c=s.get(n);const t=void 0!==a?c.has(a)?[a]:[]:c.keys();for(const i of t)yield[e,r,n,i]}}}}count(e){let t=0;const r=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!r)return 0;const i=r[0],a=r[1],o=r[2],s=r[3];let c,u,l;const d=this.nestedMap,p=void 0!==i?d.has(i)?[i]:[]:d.keys();for(const e of p){c=d.get(e);const r=void 0!==a?c.has(a)?[a]:[]:c.keys();for(const e of r){u=c.get(e);const r=void 0!==o?u.has(o)?[o]:[]:u.keys();for(const e of r)l=u.get(e),void 0!==s?l.has(s)&&t++:t+=l.size}}return t}}},68752:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedMapQuoted=void 0;const n=r(29390),i=r(95832);class a extends i.RdfStoreIndexNestedMap{constructor(e){super(e),this.features={quotedTripleFiltering:!0}}*getQuotedPatternKeys(e,t){for(const r of this.dictionary.findQuotedTriplesEncoded(t))e.has(r)&&(yield r)}*find(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!t)return;const[r,i,a,o]=t,[s,c,u,l]=e,[d,p,h,f]=(0,n.arePatternsQuoted)(e);let y,g,m,b,v,_,w;const T=this.nestedMap,S=void 0!==s?d?this.getQuotedPatternKeys(T,s):T.has(r)?[r]:[]:T.keys();for(const e of S){v=T.get(e),y=!d&&s?s:this.dictionary.decode(e);const t=void 0!==c?p?this.getQuotedPatternKeys(v,c):v.has(i)?[i]:[]:v.keys();for(const e of t){_=v.get(e),g=!p&&c?c:this.dictionary.decode(e);const t=void 0!==u?h?this.getQuotedPatternKeys(_,u):_.has(a)?[a]:[]:_.keys();for(const e of t){w=_.get(e),m=!h&&u?u:this.dictionary.decode(e);const t=void 0!==l?f?this.getQuotedPatternKeys(w,l):w.has(o)?[o]:[]:w.keys();for(const e of t)b=!f&&l?l:this.dictionary.decode(e),yield[y,g,m,b]}}}}*findEncoded(e,t){const[r,i,a,o]=e,[s,c,u,l]=t,[d,p,h,f]=(0,n.arePatternsQuoted)(t);let y,g,m;const b=this.nestedMap,v=void 0!==s?d?this.getQuotedPatternKeys(b,s):b.has(r)?[r]:[]:b.keys();for(const e of v){y=b.get(e);const t=void 0!==c?p?this.getQuotedPatternKeys(y,c):y.has(i)?[i]:[]:y.keys();for(const r of t){g=y.get(r);const t=void 0!==u?h?this.getQuotedPatternKeys(g,u):g.has(a)?[a]:[]:g.keys();for(const n of t){m=g.get(n);const t=void 0!==l?f?this.getQuotedPatternKeys(m,l):m.has(o)?[o]:[]:m.keys();for(const i of t)yield[Number.parseInt(e,10),Number.parseInt(r,10),Number.parseInt(n,10),Number.parseInt(i,10)]}}}}count(e){let t=0;const r=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!r)return 0;const[i,a,o,s]=r,[c,u,l,d]=e,[p,h,f,y]=(0,n.arePatternsQuoted)(e);let g,m,b;const v=this.nestedMap,_=void 0!==c?p?this.getQuotedPatternKeys(v,c):v.has(i)?[i]:[]:v.keys();for(const e of _){g=v.get(e);const r=void 0!==u?h?this.getQuotedPatternKeys(g,u):g.has(a)?[a]:[]:g.keys();for(const e of r){m=g.get(e);const r=void 0!==l?f?this.getQuotedPatternKeys(m,l):m.has(o)?[o]:[]:m.keys();for(const e of r)b=m.get(e),void 0!==d?y?t+=[...this.getQuotedPatternKeys(b,d)].length:b.has(s)&&t++:t+=b.size}}return t}}t.RdfStoreIndexNestedMapQuoted=a},38654:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedMapRecursive=void 0;const n=r(29390);t.RdfStoreIndexNestedMapRecursive=class{constructor(e){this.features={quotedTripleFiltering:!1},this.dictionary=e.dictionary,this.nestedMap=new Map}set(e,t){let r=this.nestedMap,n=!1;for(const[i,a]of e.entries()){const o=r;let s=o.get(a);s?i===e.length-1&&(n=!0):(s=i===e.length-1?t:new Map,o.set(a,s)),r=s}return!n}remove(e){const t=this.nestedMap,r=t.get(e[0]);if(!r)return!1;const n=r.get(e[1]);if(!n)return!1;const i=n.get(e[2]);if(!i)return!1;const a=i.delete(e[3]);return a&&0===i.size&&(n.delete(e[2]),0===n.size&&(r.delete(e[1]),0===r.size&&t.delete(e[0]))),a}get(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(t&&!t.includes(void 0))return this.getEncoded(t)}getEncoded(e){const t=this.nestedMap.get(e[0]);if(!t)return;const r=t.get(e[1]);if(!r)return;const n=r.get(e[2]);return n?n.get(e[3]):void 0}*find(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(t)for(const r of this.findEncoded(t,e))yield[void 0!==t[0]?e[0]:this.dictionary.decode(r[0]),void 0!==t[1]?e[1]:this.dictionary.decode(r[1]),void 0!==t[2]?e[2]:this.dictionary.decode(r[2]),void 0!==t[3]?e[3]:this.dictionary.decode(r[3])]}*findEncoded(e,t){return yield*this.findEncodedInner(0,e,t,this.nestedMap,[])}*findEncodedInner(e,t,r,n,i){if(e===t.length)yield[...i];else{const a=t[e];if(r[e]){const o=a;if(void 0!==o){const s=n.get(o);s&&(i[e]=a,yield*this.findEncodedInner(e+1,t,r,s,i))}}else for(const[a,o]of n.entries())i[e]=a,yield*this.findEncodedInner(e+1,t,r,o,i)}}count(e){return this.countInner(0,e,this.nestedMap)}countInner(e,t,r){const n=t[e];let i=0;if(n){const a=this.dictionary.encodeOptional(n);if(void 0!==a){if(e===t.length-1)return r.has(a)?1:0;const n=r.get(a);n&&(i+=this.countInner(e+1,t,n))}}else{if(e===t.length-1)return r.size;for(const n of r.values())i+=this.countInner(e+1,t,n)}return i}}},15698:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedMapRecursiveQuoted=void 0;const n=r(29390),i=r(38654);class a extends i.RdfStoreIndexNestedMapRecursive{constructor(e){super(e),this.features={quotedTripleFiltering:!0}}*findEncoded(e,t){return yield*this.findEncodedInnerQuoted(0,e,t,(0,n.arePatternsQuoted)(t),this.nestedMap,[])}*findEncodedInnerQuoted(e,t,r,n,i,a){if(e===t.length)yield[...a];else{const o=t[e],s=r[e];if(s)if(n[e]){const o=this.dictionary.findQuotedTriplesEncoded(s);for(const s of o){const o=i.get(s);o&&(a[e]=s,yield*this.findEncodedInnerQuoted(e+1,t,r,n,o,a))}}else{const s=o;if(void 0!==s){const c=i.get(s);c&&(a[e]=o,yield*this.findEncodedInnerQuoted(e+1,t,r,n,c,a))}}else for(const[o,s]of i.entries())a[e]=o,yield*this.findEncodedInnerQuoted(e+1,t,r,n,s,a)}}countInner(e,t,r){const i=t[e];let a=0;if(i)if("Quad"===i.termType&&(0,n.quadHasVariables)(i)){const n=this.dictionary.findQuotedTriplesEncoded(i);for(const i of n)if(e===t.length-1)r.has(i)&&a++;else{const n=r.get(i);n&&(a+=this.countInner(e+1,t,n))}}else{const n=this.dictionary.encodeOptional(i);if(void 0!==n){if(e===t.length-1)return r.has(n)?1:0;const i=r.get(n);i&&(a+=this.countInner(e+1,t,i))}}else{if(e===t.length-1)return r.size;for(const n of r.values())a+=this.countInner(e+1,t,n)}return a}}t.RdfStoreIndexNestedMapRecursiveQuoted=a},53277:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedRecord=void 0;const n=r(29390);t.RdfStoreIndexNestedRecord=class{constructor(e){this.features={quotedTripleFiltering:!1},this.dictionary=e.dictionary,this.nestedRecords={}}set(e,t){const r=this.nestedRecords,n=r[e[0]]||(r[e[0]]={}),i=n[e[1]]||(n[e[1]]={}),a=i[e[2]]||(i[e[2]]={});return!a[e[3]]&&(a[e[3]]=t,!0)}remove(e){const t=this.nestedRecords,r=t[e[0]];if(!r)return!1;const n=r[e[1]];if(!n)return!1;const i=n[e[2]];return!!i&&!!i[e[3]]&&(delete i[e[3]],0===Object.keys(i).length&&(delete n[e[2]],0===Object.keys(n).length&&(delete r[e[1]],0===Object.keys(r).length&&delete t[e[0]])),!0)}get(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(t&&!t.includes(void 0))return this.getEncoded(t)}getEncoded(e){var t,r,n;return null===(n=null===(r=null===(t=this.nestedRecords[e[0]])||void 0===t?void 0:t[e[1]])||void 0===r?void 0:r[e[2]])||void 0===n?void 0:n[e[3]]}*find(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!t)return;const[r,i,a,o]=t,[s,c,u,l]=e;let d,p,h,f,y,g,m;const b=this.nestedRecords,v=void 0!==r?r in b?[r]:[]:Object.keys(b);for(const e of v){y=b[e],d=s||this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==i?i in y?[i]:[]:Object.keys(y);for(const e of t){g=y[e],p=c||this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==a?a in g?[a]:[]:Object.keys(g);for(const e of t){m=g[e],h=u||this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==o?o in m?[o]:[]:Object.keys(m);for(const e of t)f=l||this.dictionary.decode(Number.parseInt(e,10)),yield[d,p,h,f]}}}}*findEncoded(e,t){const[r,n,i,a]=e;let o,s,c;const u=this.nestedRecords,l=void 0!==r?r in u?[r]:[]:Object.keys(u);for(const e of l){o=u[e];const t=void 0!==n?n in o?[n]:[]:Object.keys(o);for(const r of t){s=o[r];const t=void 0!==i?i in s?[i]:[]:Object.keys(s);for(const n of t){c=s[n];const t=void 0!==a?a in c?[a]:[]:Object.keys(c);for(const i of t)yield[Number.parseInt(e,10),Number.parseInt(r,10),Number.parseInt(n,10),Number.parseInt(i,10)]}}}}count(e){let t=0;const r=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!r)return 0;const i=r[0],a=r[1],o=r[2],s=r[3];let c,u,l;const d=this.nestedRecords,p=void 0!==i?i in d?[i]:[]:Object.keys(d);for(const e of p){c=d[e];const r=void 0!==a?a in c?[a]:[]:Object.keys(c);for(const e of r){u=c[e];const r=void 0!==o?o in u?[o]:[]:Object.keys(u);for(const e of r)l=u[e],void 0!==s?s in l&&t++:t+=Object.keys(l).length}}return t}}},86937:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedRecordQuoted=void 0;const n=r(29390),i=r(53277);class a extends i.RdfStoreIndexNestedRecord{constructor(e){super(e),this.features={quotedTripleFiltering:!0}}*getQuotedPatternKeys(e,t){for(const r of this.dictionary.findQuotedTriplesEncoded(t))r in e&&(yield r)}*find(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!t)return;const[r,i,a,o]=t,[s,c,u,l]=e,[d,p,h,f]=(0,n.arePatternsQuoted)(e);let y,g,m,b,v,_,w;const T=this.nestedRecords,S=void 0!==s?d?this.getQuotedPatternKeys(T,s):r in T?[r]:[]:Object.keys(T);for(const e of S){v=T[e],y=!d&&s?s:this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==c?p?this.getQuotedPatternKeys(v,c):i in v?[i]:[]:Object.keys(v);for(const e of t){_=v[e],g=!p&&c?c:this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==u?h?this.getQuotedPatternKeys(_,u):a in _?[a]:[]:Object.keys(_);for(const e of t){w=_[e],m=!h&&u?u:this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==l?f?this.getQuotedPatternKeys(w,l):o in w?[o]:[]:Object.keys(w);for(const e of t)b=!f&&l?l:this.dictionary.decode(Number.parseInt(e,10)),yield[y,g,m,b]}}}}*findEncoded(e,t){const[r,i,a,o]=e,[s,c,u,l]=t,[d,p,h,f]=(0,n.arePatternsQuoted)(t);let y,g,m;const b=this.nestedRecords,v=void 0!==s?d?this.getQuotedPatternKeys(b,s):r in b?[r]:[]:Object.keys(b);for(const e of v){y=b[e];const t=void 0!==c?p?this.getQuotedPatternKeys(y,c):i in y?[i]:[]:Object.keys(y);for(const r of t){g=y[r];const t=void 0!==u?h?this.getQuotedPatternKeys(g,u):a in g?[a]:[]:Object.keys(g);for(const n of t){m=g[n];const t=void 0!==l?f?this.getQuotedPatternKeys(m,l):o in m?[o]:[]:Object.keys(m);for(const i of t)yield[Number.parseInt(e,10),Number.parseInt(r,10),Number.parseInt(n,10),Number.parseInt(i,10)]}}}}count(e){let t=0;const r=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!r)return 0;const[i,a,o,s]=r,[c,u,l,d]=e,[p,h,f,y]=(0,n.arePatternsQuoted)(e);let g,m,b;const v=this.nestedRecords,_=void 0!==c?p?this.getQuotedPatternKeys(v,c):i in v?[i]:[]:Object.keys(v);for(const e of _){g=v[e];const r=void 0!==u?h?this.getQuotedPatternKeys(g,u):a in g?[a]:[]:Object.keys(g);for(const e of r){m=g[e];const r=void 0!==l?f?this.getQuotedPatternKeys(m,l):o in m?[o]:[]:Object.keys(m);for(const e of r)b=m[e],void 0!==d?y?t+=[...this.getQuotedPatternKeys(b,d)].length:s in b&&t++:t+=Object.keys(b).length}}return t}}t.RdfStoreIndexNestedRecordQuoted=a},2887:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(32935),t),i(r(73974),t)},32935:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PendingStreamsIndex=void 0;const n=r(22112),i=r(13252);class a{constructor(){this.indexedStreams=new Map,this.allStreams=[]}termToString(e){return e&&"Variable"!==e.termType?(0,n.termToString)(e):a.ID_VARIABLE}addPatternListener(e,t,r,n,i){this.allStreams.push(e);const o=`${this.termToString(t)}${a.ID_SEPARATOR}${this.termToString(r)}${a.ID_SEPARATOR}${this.termToString(n)}${a.ID_SEPARATOR}${this.termToString(i)}`;let s=this.indexedStreams.get(o);s||(s=[],this.indexedStreams.set(o,s)),s.push(e)}getPendingStreamsForQuad(e){let t=[(0,i.getTerms)(e).map((e=>(0,n.termToString)(e)))];for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StreamingStore=void 0;const n=r(72243),i=r(58521),a=r(32935);t.StreamingStore=class{constructor(e=new n.Store){this.pendingStreams=new a.PendingStreamsIndex,this.ended=!1,this.store=e}end(){this.ended=!0;for(const e of this.pendingStreams.allStreams)e.push(null),e._pipeSource.unpipe()}importToListeners(e){e.on("data",(e=>{if(!this.ended&&!this.store.countQuads(e.subject,e.predicate,e.object,e.graph))for(const t of this.pendingStreams.getPendingStreamsForQuad(e))t.isInitialized&&(t.push(e),t.emit("quad",e))}))}import(e){if(this.ended)throw new Error("Attempted to import into an ended StreamingStore");return this.importToListeners(e),this.store.import(e)}match(e,t,r,n){const a=this.store.match(e,t,r,n);let o=a;if(!this.ended){const s=new i.PassThrough({objectMode:!0});this.pendingStreams.addPatternListener(s,e,t,r,n),o=a.pipe(s,{end:!1}),o._pipeSource=a;const c=a._read;a._read=e=>{s.isInitialized=!0,c.call(a,e)}}return o}getStore(){return this.store}}},64817:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.termToString=t.stringToTerm=t.stringQuadToQuad=t.quadToStringQuad=t.getLiteralValue=t.getLiteralType=t.getLiteralLanguage=void 0;const n=r(91379);Object.defineProperty(t,"getLiteralLanguage",{enumerable:!0,get:function(){return n.getLiteralLanguage}}),Object.defineProperty(t,"getLiteralType",{enumerable:!0,get:function(){return n.getLiteralType}}),Object.defineProperty(t,"getLiteralValue",{enumerable:!0,get:function(){return n.getLiteralValue}}),Object.defineProperty(t,"quadToStringQuad",{enumerable:!0,get:function(){return n.quadToStringQuad}}),Object.defineProperty(t,"stringQuadToQuad",{enumerable:!0,get:function(){return n.stringQuadToQuad}}),Object.defineProperty(t,"stringToTerm",{enumerable:!0,get:function(){return n.stringToTerm}}),Object.defineProperty(t,"termToString",{enumerable:!0,get:function(){return n.termToString}})},91379:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.stringQuadToQuad=t.quadToStringQuad=t.stringToTerm=t.getLiteralLanguage=t.getLiteralType=t.getLiteralValue=t.termToString=void 0;const n=new(r(18050).DataFactory);function i(e){var t,r;if(e)switch(e.termType){case"NamedNode":return`<${t=e.value,t.replace(u,d)}>`;case"BlankNode":return`_:${e.value}`;case"Literal":{const t=e;return`"${r=t.value,u.test(r)&&(r=r.replace(u,d)),r}"${t.datatype&&"http://www.w3.org/2001/XMLSchema#string"!==t.datatype.value&&"http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"!==t.datatype.value?`^^<${t.datatype.value}>`:""}${t.language?`@${t.language}`:""}`}case"Quad":return`<<${i(e.subject)} ${i(e.predicate)} ${i(e.object)}${"DefaultGraph"===e.graph.termType?"":` ${i(e.graph)}`}>>`;case"Variable":return`?${e.value}`;case"DefaultGraph":return e.value}}function a(e){const t=/^"([^]*)"((\^\^.*)|(@.*))?$/u.exec(e);if(!t)throw new Error(`${e} is not a literal`);return t[1].replace(/\\"/gu,'"')}function o(e){const t=/^"[^]*"(?:\^\^<([^"]+)>|(@)[^@"]+)?$/u.exec(e);if(!t)throw new Error(`${e} is not a literal`);return t[1]||(t[2]?"http://www.w3.org/1999/02/22-rdf-syntax-ns#langString":"http://www.w3.org/2001/XMLSchema#string")}function s(e){const t=/^"[^]*"(?:@([^@"]+)|\^\^[^"]+)?$/u.exec(e);if(!t)throw new Error(`${e} is not a literal`);return t[1]?t[1].toLowerCase():""}function c(e,t){if(t=t||n,!e||0===e.length)return t.defaultGraph();switch(e[0]){case"_":return t.blankNode(e.slice(2));case"?":if(!t.variable)throw new Error("Missing 'variable()' method on the given DataFactory");return t.variable(e.slice(1));case'"':{const r=s(e),n=t.namedNode(o(e));return t.literal(a(e),r||n)}default:if(e.startsWith("<<")&&e.endsWith(">>")){const r=e.slice(2,-2),n=[];let i=0,a=0;for(let t=0;t"===o){if(0===i)throw new Error(`Found closing tag without opening tag in ${e}`);i--}" "===o&&0===i&&(n.push(r.slice(a,t)),a=t+1)}if(0!==i)throw new Error(`Found opening tag without closing tag in ${e}`);if(n.push(r.slice(a,r.length)),3!==n.length&&4!==n.length)throw new Error(`Nested quad syntax error ${e}`);return t.quad(c(n[0]),c(n[1]),c(n[2]),n[3]?c(n[3]):void 0)}if(!e.startsWith("<")||!e.endsWith(">"))throw new Error(`Detected invalid iri for named node (must be wrapped in <>): ${e}`);return t.namedNode(e.slice(1,-1))}}t.termToString=i,t.getLiteralValue=a,t.getLiteralType=o,t.getLiteralLanguage=s,t.stringToTerm=c,t.quadToStringQuad=function(e){return{subject:i(e.subject),predicate:i(e.predicate),object:i(e.object),graph:i(e.graph)}},t.stringQuadToQuad=function(e,t){return(t=t||n).quad(c(e.subject,t),c(e.predicate,t),c(e.object,t),c(e.graph,t))};const u=/["\\\t\n\r\b\f\u0000-\u0019]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=new Map([["\\","\\\\"],['"','\\"'],["\t","\\t"],["\n","\\n"],["\r","\\r"],["\b","\\b"],["\f","\\f"]]);function d(e){const t=l.get(e);if(!t){if(1===e.length){const t=e.charCodeAt(0).toString(16);return`${"\\u0000".slice(0,-t.length)}${t}`}const t=(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)+9216).toString(16);return`${"\\U00000000".slice(0,-t.length)}${t}`}return t}},22112:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.termToString=t.stringToTerm=t.stringQuadToQuad=t.quadToStringQuad=t.getLiteralValue=t.getLiteralType=t.getLiteralLanguage=void 0;const n=r(48244);Object.defineProperty(t,"getLiteralLanguage",{enumerable:!0,get:function(){return n.getLiteralLanguage}}),Object.defineProperty(t,"getLiteralType",{enumerable:!0,get:function(){return n.getLiteralType}}),Object.defineProperty(t,"getLiteralValue",{enumerable:!0,get:function(){return n.getLiteralValue}}),Object.defineProperty(t,"quadToStringQuad",{enumerable:!0,get:function(){return n.quadToStringQuad}}),Object.defineProperty(t,"stringQuadToQuad",{enumerable:!0,get:function(){return n.stringQuadToQuad}}),Object.defineProperty(t,"stringToTerm",{enumerable:!0,get:function(){return n.stringToTerm}}),Object.defineProperty(t,"termToString",{enumerable:!0,get:function(){return n.termToString}})},48244:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.stringQuadToQuad=t.quadToStringQuad=t.stringToTerm=t.getLiteralLanguage=t.getLiteralType=t.getLiteralValue=t.termToString=void 0;const n=new(r(18050).DataFactory);function i(e){if(e)switch(e.termType){case"NamedNode":case"DefaultGraph":return e.value;case"BlankNode":return"_:"+e.value;case"Literal":const t=e;return'"'+t.value+'"'+(t.datatype&&"http://www.w3.org/2001/XMLSchema#string"!==t.datatype.value&&"http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"!==t.datatype.value?"^^"+t.datatype.value:"")+(t.language?"@"+t.language:"");case"Quad":return`<<${i(e.subject)} ${i(e.predicate)} ${i(e.object)}${"DefaultGraph"===e.graph.termType?"":" "+i(e.graph)}>>`;case"Variable":return"?"+e.value}}function a(e){const t=/^"([^]*)"/.exec(e);if(!t)throw new Error(e+" is not a literal");return t[1]}function o(e){const t=/^"[^]*"(?:\^\^([^"]+)|(@)[^@"]+)?$/.exec(e);if(!t)throw new Error(e+" is not a literal");return t[1]||(t[2]?"http://www.w3.org/1999/02/22-rdf-syntax-ns#langString":"http://www.w3.org/2001/XMLSchema#string")}function s(e){const t=/^"[^]*"(?:@([^@"]+)|\^\^[^"]+)?$/.exec(e);if(!t)throw new Error(e+" is not a literal");return t[1]?t[1].toLowerCase():""}function c(e,t){if(t=t||n,!e||!e.length)return t.defaultGraph();switch(e[0]){case"_":return t.blankNode(e.substr(2));case"?":if(!t.variable)throw new Error("Missing 'variable()' method on the given DataFactory");return t.variable(e.substr(1));case'"':const r=s(e),n=t.namedNode(o(e));return t.literal(a(e),r||n);default:if("<"===e[0]&&e.length>4&&"<"===e[1]&&">"===e[e.length-1]&&">"===e[e.length-2]){const r=e.slice(2,-2).trim();let n=[],i=0,a=0,o=!1;for(let t=0;t"===s){if(0===i)throw new Error("Found closing tag without opening tag in "+e);i--}if('"'===s){let e=!1,n=t;for(;n-- >0&&"\\"===r[n];)e=!e;e||(o=!o)}if(" "===s&&!o&&0===i){for(n.push(r.slice(a,t));" "===r[t+1];)t+=1;a=t+1}}if(0!==i)throw new Error("Found opening tag without closing tag in "+e);if(n.push(r.slice(a,r.length)),3!==n.length&&4!==n.length)throw new Error("Nested quad syntax error "+e);return n=n.map((e=>e.startsWith("<")&&!e.includes(" ")?e.slice(1,-1):e)),t.quad(c(n[0]),c(n[1]),c(n[2]),n[3]?c(n[3]):void 0)}return t.namedNode(e)}}t.termToString=i,t.getLiteralValue=a,t.getLiteralType=o,t.getLiteralLanguage=s,t.stringToTerm=c,t.quadToStringQuad=function(e){return{subject:i(e.subject),predicate:i(e.predicate),object:i(e.object),graph:i(e.graph)}},t.stringQuadToQuad=function(e,t){return(t=t||n).quad(c(e.subject,t),c(e.predicate,t),c(e.object,t),c(e.graph,t))}},13252:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(10175),t),i(r(86552),t)},10175:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.matchPatternMappings=t.matchPatternComplete=t.matchPattern=t.matchTerm=t.getValueNestedPath=t.someTermsNested=t.someTerms=t.everyTermsNested=t.everyTerms=t.reduceTermsNested=t.reduceTerms=t.mapTermsNested=t.mapTerms=t.filterQuadTermNamesNested=t.filterQuadTermNames=t.filterTermsNested=t.filterTerms=t.forEachTermsNested=t.forEachTerms=t.collectNamedTerms=t.getNamedTerms=t.getTermsNested=t.getTerms=t.TRIPLE_TERM_NAMES=t.QUAD_TERM_NAMES=void 0;const n=new(r(18050).DataFactory);function i(e,t){return t&&"DefaultGraph"===e.graph.termType?[e.subject,e.predicate,e.object]:[e.subject,e.predicate,e.object,e.graph]}function a(e,t){return t(e.subject,"subject")&&t(e.predicate,"predicate")&&t(e.object,"object")&&t(e.graph,"graph")}function o(e,t){return!t||"Variable"===t.termType||"Quad"===t.termType&&"Quad"===e.termType&&c(e,t)||t.equals(e)}function s(e,t,r,n,i){return o(e.subject,t)&&o(e.predicate,r)&&o(e.object,n)&&o(e.graph,i)}function c(e,t){return s(e,t.subject,t.predicate,t.object,t.graph)}t.QUAD_TERM_NAMES=["subject","predicate","object","graph"],t.TRIPLE_TERM_NAMES=["subject","predicate","object"],t.getTerms=i,t.getTermsNested=function e(t,r){const n=[];for(const a of i(t,r))"Quad"===a.termType?e(a,r).forEach((e=>n.push(e))):n.push(a);return n},t.getNamedTerms=function(e){return[{key:"subject",value:e.subject},{key:"predicate",value:e.predicate},{key:"object",value:e.object},{key:"graph",value:e.graph}]},t.collectNamedTerms=function(e,t,r){const i={};return e.forEach((e=>i[e.key]=e.value)),t&&(i.subject=i.subject||t("subject"),i.predicate=i.predicate||t("predicate"),i.object=i.object||t("object"),i.graph=i.graph||t("graph")),(r||n).quad(i.subject,i.predicate,i.object,i.graph)},t.forEachTerms=function(e,t){t(e.subject,"subject"),t(e.predicate,"predicate"),t(e.object,"object"),t(e.graph,"graph")},t.forEachTermsNested=function e(t,r,n=[]){"Quad"===t.subject.termType?e(t.subject,r,[...n,"subject"]):r(t.subject,[...n,"subject"]),"Quad"===t.predicate.termType?e(t.predicate,r,[...n,"predicate"]):r(t.predicate,[...n,"predicate"]),"Quad"===t.object.termType?e(t.object,r,[...n,"object"]):r(t.object,[...n,"object"]),"Quad"===t.graph.termType?e(t.graph,r,[...n,"graph"]):r(t.graph,[...n,"graph"])},t.filterTerms=function(e,t){const r=[];return t(e.subject,"subject")&&r.push(e.subject),t(e.predicate,"predicate")&&r.push(e.predicate),t(e.object,"object")&&r.push(e.object),t(e.graph,"graph")&&r.push(e.graph),r},t.filterTermsNested=function e(t,r,n=[]){let i=[];return"Quad"===t.subject.termType?i=[...i,...e(t.subject,r,[...n,"subject"])]:r(t.subject,[...n,"subject"])&&i.push(t.subject),"Quad"===t.predicate.termType?i=[...i,...e(t.predicate,r,[...n,"predicate"])]:r(t.predicate,[...n,"predicate"])&&i.push(t.predicate),"Quad"===t.object.termType?i=[...i,...e(t.object,r,[...n,"object"])]:r(t.object,[...n,"object"])&&i.push(t.object),"Quad"===t.graph.termType?i=[...i,...e(t.graph,r,[...n,"graph"])]:r(t.graph,[...n,"graph"])&&i.push(t.graph),i},t.filterQuadTermNames=function(e,t){const r=[];return t(e.subject,"subject")&&r.push("subject"),t(e.predicate,"predicate")&&r.push("predicate"),t(e.object,"object")&&r.push("object"),t(e.graph,"graph")&&r.push("graph"),r},t.filterQuadTermNamesNested=function e(t,r,n=[]){let i=[];const a=[...n,"subject"];"Quad"===t.subject.termType?i=[...i,...e(t.subject,r,a)]:r(t.subject,a)&&i.push(a);const o=[...n,"predicate"];"Quad"===t.predicate.termType?i=[...i,...e(t.predicate,r,o)]:r(t.predicate,o)&&i.push(o);const s=[...n,"object"];"Quad"===t.object.termType?i=[...i,...e(t.object,r,s)]:r(t.object,s)&&i.push(s);const c=[...n,"graph"];return"Quad"===t.graph.termType?i=[...i,...e(t.graph,r,c)]:r(t.graph,c)&&i.push(c),i},t.mapTerms=function(e,t,r){return(r||n).quad(t(e.subject,"subject"),t(e.predicate,"predicate"),t(e.object,"object"),t(e.graph,"graph"))},t.mapTermsNested=function e(t,r,i,a=[]){return(i||n).quad("Quad"===t.subject.termType?e(t.subject,r,i,[...a,"subject"]):r(t.subject,[...a,"subject"]),"Quad"===t.predicate.termType?e(t.predicate,r,i,[...a,"predicate"]):r(t.predicate,[...a,"predicate"]),"Quad"===t.object.termType?e(t.object,r,i,[...a,"object"]):r(t.object,[...a,"object"]),"Quad"===t.graph.termType?e(t.graph,r,i,[...a,"graph"]):r(t.graph,[...a,"graph"]))},t.reduceTerms=function(e,t,r){let n=r;return n=t(n,e.subject,"subject"),n=t(n,e.predicate,"predicate"),n=t(n,e.object,"object"),t(n,e.graph,"graph")},t.reduceTermsNested=function e(t,r,n,i=[]){let a=n;return a="Quad"===t.subject.termType?e(t.subject,r,a,[...i,"subject"]):r(a,t.subject,[...i,"subject"]),a="Quad"===t.predicate.termType?e(t.predicate,r,a,[...i,"predicate"]):r(a,t.predicate,[...i,"predicate"]),a="Quad"===t.object.termType?e(t.object,r,a,[...i,"object"]):r(a,t.object,[...i,"object"]),a="Quad"===t.graph.termType?e(t.graph,r,a,[...i,"graph"]):r(a,t.graph,[...i,"graph"]),a},t.everyTerms=a,t.everyTermsNested=function e(t,r,n=[]){return("Quad"===t.subject.termType?e(t.subject,r,[...n,"subject"]):r(t.subject,[...n,"subject"]))&&("Quad"===t.predicate.termType?e(t.predicate,r,[...n,"predicate"]):r(t.predicate,[...n,"predicate"]))&&("Quad"===t.object.termType?e(t.object,r,[...n,"object"]):r(t.object,[...n,"object"]))&&("Quad"===t.graph.termType?e(t.graph,r,[...n,"graph"]):r(t.graph,[...n,"graph"]))},t.someTerms=function(e,t){return t(e.subject,"subject")||t(e.predicate,"predicate")||t(e.object,"object")||t(e.graph,"graph")},t.someTermsNested=function e(t,r,n=[]){return("Quad"===t.subject.termType?e(t.subject,r,[...n,"subject"]):r(t.subject,[...n,"subject"]))||("Quad"===t.predicate.termType?e(t.predicate,r,[...n,"predicate"]):r(t.predicate,[...n,"predicate"]))||("Quad"===t.object.termType?e(t.object,r,[...n,"object"]):r(t.object,[...n,"object"]))||("Quad"===t.graph.termType?e(t.graph,r,[...n,"graph"]):r(t.graph,[...n,"graph"]))},t.getValueNestedPath=function e(t,r){if(0===r.length)return t;if("Quad"===t.termType)return e(t[r[0]],r.slice(1));throw new Error(`Tried to get ${r[0]} from term of type ${t.termType}`)},t.matchTerm=o,t.matchPattern=s,t.matchPatternComplete=c,t.matchPatternMappings=function(e,t,r={}){const n={};return function e(t,i){return a(t,((t,a)=>{var o,s;const c=i[a];switch(t.termType){case"Variable":return r.skipVarMapping&&"Variable"===c.termType||(null!==(s=null===(o=n[t.value])||void 0===o?void 0:o.equals(c))&&void 0!==s?s:(n[t.value]=c,!0));case"Quad":return"Quad"===c.termType&&e(t,c);default:return t.equals(c)}}))}(t,e)&&(!r.returnMappings||n)}},86552:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getQuads=t.getDefaultGraphs=t.getVariables=t.getLiterals=t.getBlankNodes=t.getNamedNodes=t.getTermsOfType=t.uniqTerms=t.TERM_TYPES=void 0;const n=r(22112);function i(e,t){return e.filter((e=>e.termType===t))}t.TERM_TYPES=["NamedNode","BlankNode","Literal","Variable","DefaultGraph","Quad"],t.uniqTerms=function(e){const t={};return e.filter((e=>{const r=(0,n.termToString)(e);return!(r in t)&&(t[r]=!0)}))},t.getTermsOfType=i,t.getNamedNodes=function(e){return i(e,"NamedNode")},t.getBlankNodes=function(e){return i(e,"BlankNode")},t.getLiterals=function(e){return i(e,"Literal")},t.getVariables=function(e){return i(e,"Variable")},t.getDefaultGraphs=function(e){return i(e,"DefaultGraph")},t.getQuads=function(e){return i(e,"Quad")}},21860:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(29145),t),i(r(55623),t),i(r(98532),t),i(r(59638),t),i(r(24012),t),i(r(69994),t)},29145:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},55623:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},98532:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},59638:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfaParser=void 0;const n=r(15482),i=r(58521),a=r(45497),o=r(68713),s=r(24012),c=r(69994);class u extends i.Transform{constructor(e){super({readableObjectMode:!0}),this.activeTagStack=[],e=e||{},this.options=e,this.util=new c.Util(e.dataFactory,e.baseIRI),this.defaultGraph=e.defaultGraph||this.util.dataFactory.defaultGraph();const t=e.contentType?c.Util.contentTypeToProfile(e.contentType):e.profile||"";this.features=e.features||s.RDFA_FEATURES[t],this.htmlParseListener=e.htmlParseListener,this.rdfaPatterns=this.features.copyRdfaPatterns?{}:null,this.pendingRdfaPatternCopies=this.features.copyRdfaPatterns?{}:null,this.parser=this.initializeParser("xml"===t),this.activeTagStack.push({incompleteTriples:[],inlist:!1,language:e.language,listMapping:{},listMappingLocal:{},name:"",prefixesAll:Object.assign(Object.assign({},o["@context"]),this.features.xhtmlInitialContext?a["@context"]:{}),prefixesCustom:{},skipElement:!1,vocab:e.vocab})}import(e){const t=new i.PassThrough({readableObjectMode:!0});e.on("error",(e=>r.emit("error",e))),e.on("data",(e=>t.push(e))),e.on("end",(()=>t.push(null)));const r=t.pipe(new u(this.options));return r}_transform(e,t,r){this.parser.write(e.toString()),r()}_flush(e){this.parser.end(),e()}onTagOpen(e,t){let r=this.activeTagStack.length-1;for(;r>0&&this.activeTagStack[r].skipElement;)r--;let n=this.activeTagStack[r];r!==this.activeTagStack.length-1&&(n=Object.assign(Object.assign({},n),{language:this.activeTagStack[this.activeTagStack.length-1].language,prefixesAll:this.activeTagStack[this.activeTagStack.length-1].prefixesAll,prefixesCustom:this.activeTagStack[this.activeTagStack.length-1].prefixesCustom,vocab:this.activeTagStack[this.activeTagStack.length-1].vocab}));const i={collectChildTags:n.collectChildTags,incompleteTriples:[],inlist:"inlist"in t,listMapping:[],listMappingLocal:n.listMapping,localBaseIRI:n.localBaseIRI,name:e,prefixesAll:null,prefixesCustom:null,skipElement:!1};if(this.activeTagStack.push(i),i.collectChildTags){for(const e of Object.keys(n.prefixesCustom).sort()){const r=n.prefixesCustom[e],i=""===e?"xmlns":"xmlns:"+e;i in t||(t[i]=r)}const r=Object.keys(t).map((e=>`${e}="${t[e]}"`)).join(" ");if(i.text=[`<${e}${r?" "+r:""}>`],this.features.skipHandlingXmlLiteralChildren)return}let a,o,s,u=!0,l=!0;if(this.features.onlyAllowUriRelRevIfProperty&&("property"in t&&"rel"in t&&(u=!1,t.rel.indexOf(":")<0&&delete t.rel),"property"in t&&"rev"in t&&(l=!1,t.rev.indexOf(":")<0&&delete t.rev)),this.features.copyRdfaPatterns){if(n.collectedPatternTag){const r={attributes:t,children:[],name:e,referenced:!1,rootPattern:!1,text:[]};return n.collectedPatternTag.children.push(r),void(i.collectedPatternTag=r)}if("rdfa:Pattern"===t.typeof)return void(i.collectedPatternTag={attributes:t,children:[],name:e,parentTag:n,referenced:!1,rootPattern:!0,text:[]});if("rdfa:copy"===t.property){const e=t.resource||t.href||t.src;return void(this.rdfaPatterns[e]?this.emitPatternCopy(n,this.rdfaPatterns[e],e):(this.pendingRdfaPatternCopies[e]||(this.pendingRdfaPatternCopies[e]=[]),this.pendingRdfaPatternCopies[e].push(n)))}}if(this.features.baseTag&&"base"===e&&t.href&&(this.util.baseIRI=this.util.getBaseIRI(t.href)),this.features.xmlBase&&t["xml:base"]&&(i.localBaseIRI=this.util.getBaseIRI(t["xml:base"])),this.features.timeTag&&"time"===e&&!t.datatype&&(i.interpretObjectAsTime=!0),"vocab"in t?t.vocab?(i.vocab=t.vocab,this.emitTriple(this.util.getBaseIriTerm(i),this.util.dataFactory.namedNode(c.Util.RDFA+"usesVocabulary"),this.util.dataFactory.namedNode(i.vocab))):i.vocab=this.activeTagStack[0].vocab:i.vocab=n.vocab,i.prefixesCustom=c.Util.parsePrefixes(t,n.prefixesCustom,this.features.xmlnsPrefixMappings),i.prefixesAll=Object.keys(i.prefixesCustom).length>0?Object.assign(Object.assign({},n.prefixesAll),i.prefixesCustom):n.prefixesAll,this.features.roleAttribute&&t.role){const e=t.id?this.util.createIri("#"+t.id,i,!1,!1,!1):this.util.createBlankNode(),r=i.vocab;i.vocab="http://www.w3.org/1999/xhtml/vocab#";for(const r of this.util.createVocabIris(t.role,i,!0,!1))this.emitTriple(e,this.util.dataFactory.namedNode("http://www.w3.org/1999/xhtml/vocab#role"),r);i.vocab=r}"xml:lang"in t||this.features.langAttribute&&"lang"in t?i.language=t["xml:lang"]||t.lang:i.language=n.language;const d=2===this.activeTagStack.length;if("rel"in t||"rev"in t?("about"in t?(a=this.util.createIri(t.about,i,!1,!0,!0),i.explicitNewSubject=!!a,"typeof"in t&&(s=a)):d?a=!0:n.object&&(a=n.object),"resource"in t&&(o=this.util.createIri(t.resource,i,!1,!0,!0)),o||("href"in t||"src"in t?o=this.util.createIri(t.href||t.src,i,!1,!1,!0):!("typeof"in t)||"about"in t||this.isInheritSubjectInHeadBody(e)||(o=this.util.createBlankNode())),"typeof"in t&&!("about"in t)&&(s=this.isInheritSubjectInHeadBody(e)?a:o)):!("property"in t)||"content"in t||"datatype"in t?(("about"in t||"resource"in t)&&(a=this.util.createIri(t.about||t.resource,i,!1,!0,!0),i.explicitNewSubject=!!a),a||!("href"in t)&&!("src"in t)||(a=this.util.createIri(t.href||t.src,i,!1,!1,!0),i.explicitNewSubject=!!a),a||(d?a=!0:this.isInheritSubjectInHeadBody(e)?a=n.object:"typeof"in t?(a=this.util.createBlankNode(),i.explicitNewSubject=!0):n.object&&(a=n.object,"property"in t||(i.skipElement=!0))),"typeof"in t&&(s=a)):("about"in t?(a=this.util.createIri(t.about,i,!1,!0,!0),i.explicitNewSubject=!!a):d?a=!0:n.object&&(a=n.object),"typeof"in t&&("about"in t&&(s=this.util.createIri(t.about,i,!1,!0,!0)),!s&&d&&(s=!0),!s&&"resource"in t&&(s=this.util.createIri(t.resource,i,!1,!0,!0)),s||!("href"in t)&&!("src"in t)||(s=this.util.createIri(t.href||t.src,i,!1,!1,!0)),!s&&this.isInheritSubjectInHeadBody(e)&&(s=a),s||(s=this.util.createBlankNode()),o=s)),s)for(const e of this.util.createVocabIris(t.typeof,i,!0,!0))this.emitTriple(this.util.getResourceOrBaseIri(s,i),this.util.dataFactory.namedNode(c.Util.RDF+"type"),e);if(a&&(i.listMapping={}),o){if("rel"in t&&"inlist"in t)for(const e of this.util.createVocabIris(t.rel,i,u,!1))this.addListMapping(i,a,e,o);if(!("rel"in t)||!("inlist"in t)){if("rel"in t)for(const e of this.util.createVocabIris(t.rel,i,u,!1))this.emitTriple(this.util.getResourceOrBaseIri(a,i),e,this.util.getResourceOrBaseIri(o,i));if("rev"in t)for(const e of this.util.createVocabIris(t.rev,i,l,!1))this.emitTriple(this.util.getResourceOrBaseIri(o,i),e,this.util.getResourceOrBaseIri(a,i))}}if(!o){if("rel"in t)if("inlist"in t)for(const e of this.util.createVocabIris(t.rel,i,u,!1))this.addListMapping(i,a,e,null),i.incompleteTriples.push({predicate:e,reverse:!1,list:!0});else for(const e of this.util.createVocabIris(t.rel,i,u,!1))i.incompleteTriples.push({predicate:e,reverse:!1});if("rev"in t)for(const e of this.util.createVocabIris(t.rev,i,l,!1))i.incompleteTriples.push({predicate:e,reverse:!0});i.incompleteTriples.length>0&&(o=this.util.createBlankNode())}if("property"in t){let e;if(i.predicates=this.util.createVocabIris(t.property,i,!0,!1),"datatype"in t?(i.datatype=this.util.createIri(t.datatype,i,!0,!0,!1),i.datatype&&(i.datatype.value===c.Util.RDF+"XMLLiteral"||this.features.htmlDatatype&&i.datatype.value===c.Util.RDF+"HTML")&&(i.collectChildTags=!0)):("rev"in t||"rel"in t||"content"in t||("resource"in t&&(e=this.util.createIri(t.resource,i,!1,!0,!0)),!e&&"href"in t&&(e=this.util.createIri(t.href,i,!1,!1,!0)),!e&&"src"in t&&(e=this.util.createIri(t.src,i,!1,!1,!0))),"typeof"in t&&!("about"in t)&&(e=s)),"content"in t){const e=this.util.createLiteral(t.content,i);if("inlist"in t)for(const t of i.predicates)this.addListMapping(i,a,t,e);else{const t=this.util.getResourceOrBaseIri(a,i);for(const r of i.predicates)this.emitTriple(t,r,e)}i.predicates=null}else if(this.features.datetimeAttribute&&"datetime"in t){i.interpretObjectAsTime=!0;const e=this.util.createLiteral(t.datetime,i);if("inlist"in t)for(const t of i.predicates)this.addListMapping(i,a,t,e);else{const t=this.util.getResourceOrBaseIri(a,i);for(const r of i.predicates)this.emitTriple(t,r,e)}i.predicates=null}else if(e){const r=this.util.getResourceOrBaseIri(e,i);if("inlist"in t)for(const e of i.predicates)this.addListMapping(i,a,e,r);else{const e=this.util.getResourceOrBaseIri(a,i);for(const t of i.predicates)this.emitTriple(e,t,r)}i.predicates=null}}let p=!1;if(!i.skipElement&&a&&n.incompleteTriples.length>0){p=!0;const e=this.util.getResourceOrBaseIri(n.subject,i),t=this.util.getResourceOrBaseIri(a,i);for(const r of n.incompleteTriples)if(r.reverse)this.emitTriple(t,r.predicate,e);else if(r.list){let e=null;for(let t=this.activeTagStack.length-1;t>=0;t--)if(this.activeTagStack[t].inlist){e=this.activeTagStack[t];break}this.addListMapping(e,a,r.predicate,t)}else this.emitTriple(e,r.predicate,t)}!p&&n.incompleteTriples.length>0&&(i.incompleteTriples=i.incompleteTriples.concat(n.incompleteTriples)),i.subject=a||n.subject,i.object=o||a}onText(e){const t=this.activeTagStack[this.activeTagStack.length-1];this.features.copyRdfaPatterns&&t.collectedPatternTag?t.collectedPatternTag.text.push(e):(t.text||(t.text=[]),t.text.push(e))}onTagClose(){const e=this.activeTagStack[this.activeTagStack.length-1],t=this.activeTagStack[this.activeTagStack.length-2];if(!(e.collectChildTags&&t.collectChildTags&&this.features.skipHandlingXmlLiteralChildren)){if(this.features.copyRdfaPatterns&&e.collectedPatternTag&&e.collectedPatternTag.rootPattern){const t=e.collectedPatternTag.attributes.resource;if(delete e.collectedPatternTag.attributes.resource,delete e.collectedPatternTag.attributes.typeof,this.rdfaPatterns[t]=e.collectedPatternTag,this.pendingRdfaPatternCopies[t]){for(const r of this.pendingRdfaPatternCopies[t])this.emitPatternCopy(r,e.collectedPatternTag,t);delete this.pendingRdfaPatternCopies[t]}return void this.activeTagStack.pop()}if(e.predicates){const r=this.util.getResourceOrBaseIri(e.subject,e);let n=e.text||[];e.collectChildTags&&t.collectChildTags&&(n=n.slice(1));const i=this.util.createLiteral(n.join(""),e);if(e.inlist)for(const t of e.predicates)this.addListMapping(e,r,t,i);else for(const t of e.predicates)this.emitTriple(r,t,i);t.predicates||(e.text=null)}if(e.object&&Object.keys(e.listMapping).length>0){const t=this.util.getResourceOrBaseIri(e.object,e);for(const r in e.listMapping){const n=this.util.dataFactory.namedNode(r),i=e.listMapping[r];if(i.length>0){const r=i.map((()=>this.util.createBlankNode()));for(let t=0;t`),e.text&&t&&(t.text?t.text=t.text.concat(e.text):t.text=e.text)}onEnd(){if(this.features.copyRdfaPatterns){this.features.copyRdfaPatterns=!1;for(const e in this.rdfaPatterns){const t=this.rdfaPatterns[e];t.referenced||(t.attributes.typeof="rdfa:Pattern",t.attributes.resource=e,this.emitPatternCopy(t.parentTag,t,e),t.referenced=!1,delete t.attributes.typeof,delete t.attributes.resource)}for(const e in this.pendingRdfaPatternCopies)for(const t of this.pendingRdfaPatternCopies[e])this.activeTagStack.push(t),this.onTagOpen("link",{property:"rdfa:copy",href:e}),this.onTagClose(),this.activeTagStack.pop();this.features.copyRdfaPatterns=!0}}isInheritSubjectInHeadBody(e){return this.features.inheritSubjectInHeadBody&&("head"===e||"body"===e)}addListMapping(e,t,r,n){if(e.explicitNewSubject){const i=this.util.createBlankNode();this.emitTriple(this.util.getResourceOrBaseIri(t,e),r,i),this.emitTriple(i,this.util.dataFactory.namedNode(c.Util.RDF+"first"),this.util.getResourceOrBaseIri(n,e)),this.emitTriple(i,this.util.dataFactory.namedNode(c.Util.RDF+"rest"),this.util.dataFactory.namedNode(c.Util.RDF+"nil"))}else{let t=e.listMappingLocal[r.value];t||(e.listMappingLocal[r.value]=t=[]),n&&t.push(n)}}emitTriple(e,t,r){"NamedNode"===e.termType&&e.value.indexOf(":")<0||"NamedNode"===t.termType&&t.value.indexOf(":")<0||"NamedNode"===r.termType&&r.value.indexOf(":")<0||this.push(this.util.dataFactory.quad(e,t,r,this.defaultGraph))}emitPatternCopy(e,t,r){if(this.activeTagStack.push(e),t.referenced=!0,t.constructedBlankNodes){let e=0;this.util.blankNodeFactory=()=>t.constructedBlankNodes[e++]}else t.constructedBlankNodes=[],this.util.blankNodeFactory=()=>{const e=this.util.dataFactory.blankNode();return t.constructedBlankNodes.push(e),e};this.emitPatternCopyAbsolute(t,!0,r),this.util.blankNodeFactory=null,this.activeTagStack.pop()}emitPatternCopyAbsolute(e,t,r){if(t||"rdfa:copy"!==e.attributes.property||e.attributes.href!==r){this.onTagOpen(e.name,e.attributes);for(const t of e.text)this.onText(t);for(const t of e.children)this.emitPatternCopyAbsolute(t,!1,r);this.onTagClose()}}initializeParser(e){return new n.Parser({onclosetag:()=>{try{this.onTagClose(),this.htmlParseListener&&this.htmlParseListener.onTagClose()}catch(e){this.emit("error",e)}},onend:()=>{try{this.onEnd(),this.htmlParseListener&&this.htmlParseListener.onEnd()}catch(e){this.emit("error",e)}},onopentag:(e,t)=>{try{this.onTagOpen(e,t),this.htmlParseListener&&this.htmlParseListener.onTagOpen(e,t)}catch(e){this.emit("error",e)}},ontext:e=>{try{this.onText(e),this.htmlParseListener&&this.htmlParseListener.onText(e)}catch(e){this.emit("error",e)}}},{decodeEntities:!0,recognizeSelfClosing:!0,xmlMode:e})}}t.RdfaParser=u},24012:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RDFA_CONTENTTYPES=t.RDFA_FEATURES=void 0,t.RDFA_FEATURES={"":{baseTag:!0,xmlBase:!0,langAttribute:!0,onlyAllowUriRelRevIfProperty:!0,inheritSubjectInHeadBody:!0,datetimeAttribute:!0,timeTag:!0,htmlDatatype:!0,copyRdfaPatterns:!0,xmlnsPrefixMappings:!0,xhtmlInitialContext:!0,roleAttribute:!0},core:{baseTag:!1,xmlBase:!1,langAttribute:!0,onlyAllowUriRelRevIfProperty:!0,inheritSubjectInHeadBody:!1,datetimeAttribute:!1,timeTag:!1,htmlDatatype:!1,copyRdfaPatterns:!0,xmlnsPrefixMappings:!0,xhtmlInitialContext:!1,roleAttribute:!1},html:{baseTag:!0,xmlBase:!1,langAttribute:!0,onlyAllowUriRelRevIfProperty:!0,inheritSubjectInHeadBody:!0,datetimeAttribute:!0,timeTag:!0,htmlDatatype:!0,copyRdfaPatterns:!0,xmlnsPrefixMappings:!0,xhtmlInitialContext:!1,roleAttribute:!0},xhtml:{baseTag:!0,xmlBase:!1,langAttribute:!0,onlyAllowUriRelRevIfProperty:!0,inheritSubjectInHeadBody:!0,datetimeAttribute:!0,timeTag:!0,htmlDatatype:!0,copyRdfaPatterns:!0,xmlnsPrefixMappings:!0,xhtmlInitialContext:!0,roleAttribute:!0},xml:{baseTag:!1,xmlBase:!0,langAttribute:!0,onlyAllowUriRelRevIfProperty:!1,inheritSubjectInHeadBody:!1,datetimeAttribute:!0,timeTag:!0,htmlDatatype:!1,copyRdfaPatterns:!1,xmlnsPrefixMappings:!0,xhtmlInitialContext:!1,roleAttribute:!0}},t.RDFA_CONTENTTYPES={"text/html":"html","application/xhtml+xml":"xhtml","application/xml":"xml","text/xml":"xml","image/svg+xml":"xml"}},69994:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;const n=r(9929),i=r(24012),a=r(18050);class o{constructor(e,t){this.dataFactory=e||new a.DataFactory,this.baseIRI=this.dataFactory.namedNode(t||""),this.baseIRIDocument=this.baseIRI}static parsePrefixes(e,t,r){const n={};if(r)for(const t in e)t.startsWith("xmlns")&&(n[t.substr(6)]=e[t]);if(e.prefix||Object.keys(n).length>0){const r=Object.assign(Object.assign({},t),n);if(e.prefix){let t;for(;t=o.PREFIX_REGEX.exec(e.prefix);)r[t[1]]=t[2]}return r}return t}static expandPrefixedTerm(e,t){const r=e.indexOf(":");let n,i;if(r>=0&&(n=e.substr(0,r),i=e.substr(r+1)),""===n)return"http://www.w3.org/1999/xhtml/vocab#"+i;if(n){const e=t.prefixesAll[n];if(e)return e+i}if(e){const r=t.prefixesAll[e.toLocaleLowerCase()];if(r)return r}return e}static isValidIri(e){return o.IRI_REGEX.test(e)}static contentTypeToProfile(e){return i.RDFA_CONTENTTYPES[e]||""}getBaseIRI(e){let t=e;const r=t.indexOf("#");return r>=0&&(t=t.substr(0,r)),this.dataFactory.namedNode((0,n.resolve)(t,this.baseIRI.value))}getResourceOrBaseIri(e,t){return!0===e?this.getBaseIriTerm(t):e}getBaseIriTerm(e){return e.localBaseIRI||this.baseIRI}createVocabIris(e,t,r,n){return e.split(/\s+/).filter((e=>e&&(r||e.indexOf(":")>=0))).map((e=>this.createIri(e,t,!0,!0,n))).filter((e=>null!=e))}createLiteral(e,t){if(t.interpretObjectAsTime&&!t.datatype)for(const r of o.TIME_REGEXES)if(e.match(r.regex)){t.datatype=this.dataFactory.namedNode(o.XSD+r.type);break}return this.dataFactory.literal(e,t.datatype||t.language)}createBlankNode(){return this.blankNodeFactory?this.blankNodeFactory():this.dataFactory.blankNode()}createIri(e,t,r,i,a){if(e=e||"",!i)return r||(e=(0,n.resolve)(e,this.getBaseIriTerm(t).value)),o.isValidIri(e)?this.dataFactory.namedNode(e):null;if(e.length>0&&"["===e[0]&&"]"===e[e.length-1]&&(e=e.substr(1,e.length-2)).indexOf(":")<0)return null;if(e.startsWith("_:"))return a?this.dataFactory.blankNode(e.substr(2)||"b_identity"):null;if(r&&t.vocab&&e.indexOf(":")<0)return this.dataFactory.namedNode(t.vocab+e);let s=o.expandPrefixedTerm(e,t);return r?e!==s&&(s=(0,n.resolve)(s,this.baseIRIDocument.value)):s=(0,n.resolve)(s,this.getBaseIriTerm(t).value),o.isValidIri(s)?this.dataFactory.namedNode(s):null}}t.Util=o,o.RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#",o.XSD="http://www.w3.org/2001/XMLSchema#",o.RDFA="http://www.w3.org/ns/rdfa#",o.PREFIX_REGEX=/\s*([^:\s]*)*:\s*([^\s]*)*\s*/g,o.TIME_REGEXES=[{regex:/^-?P([0-9]+Y)?([0-9]+M)?([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+(\.[0-9])?S)?)?$/,type:"duration"},{regex:/^[0-9]+-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]((Z?)|([\+-][0-9][0-9]:[0-9][0-9]))$/,type:"dateTime"},{regex:/^[0-9]+-[0-9][0-9]-[0-9][0-9]Z?$/,type:"date"},{regex:/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]((Z?)|([\+-][0-9][0-9]:[0-9][0-9]))$/,type:"time"},{regex:/^[0-9]+-[0-9][0-9]$/,type:"gYearMonth"},{regex:/^[0-9]+$/,type:"gYear"}],o.IRI_REGEX=/^([A-Za-z][A-Za-z0-9+-.]*|_):[^ "<>{}|\\\[\]`]*$/},97990:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(70326),t)},35695:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParseError=void 0;class r extends Error{constructor(e,t){const r=e.saxParser;super(e.trackPosition?`Line ${r.line} column ${r.column+1}: ${t}`:t)}}t.ParseError=r},70326:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParseType=t.RdfXmlParser=void 0;const n=r(9929),i=r(49126),a=r(58521),o=r(35695),s=r(18050),c=r(29815);class u extends a.Transform{constructor(e){super({readableObjectMode:!0}),this.activeTagStack=[],this.nodeIds={},e&&(Object.assign(this,e),this.options=e),this.dataFactory||(this.dataFactory=new s.DataFactory),this.baseIRI||(this.baseIRI=""),this.defaultGraph||(this.defaultGraph=this.dataFactory.defaultGraph()),!1!==this.validateUri&&(this.validateUri=!0),this.iriValidationStrategy||(this.iriValidationStrategy=this.validateUri?c.IriValidationStrategy.Pragmatic:c.IriValidationStrategy.None),this.saxParser=new i.SaxesParser({xmlns:!0,position:this.trackPosition}),this.attachSaxListeners()}import(e){const t=new a.PassThrough({readableObjectMode:!0});e.on("error",(e=>r.emit("error",e))),e.on("data",(e=>t.push(e))),e.on("end",(()=>t.push(null)));const r=t.pipe(new u(this.options));return r}_transform(e,t,r){try{this.saxParser.write(e)}catch(e){return r(e)}r()}newParseError(e){return new o.ParseError(this,e)}valueToUri(e,t){return this.uriToNamedNode((0,n.resolve)(e,t.baseIRI))}uriToNamedNode(e){const t=(0,c.validateIri)(e,this.iriValidationStrategy);if(t instanceof Error)throw this.newParseError(t.message);return this.dataFactory.namedNode(e)}validateNcname(e){if(!u.NCNAME_MATCHER.test(e))throw this.newParseError(`Not a valid NCName: ${e}`)}attachSaxListeners(){this.saxParser.on("error",(e=>this.emit("error",e))),this.saxParser.on("opentag",this.onTag.bind(this)),this.saxParser.on("text",this.onText.bind(this)),this.saxParser.on("cdata",this.onText.bind(this)),this.saxParser.on("closetag",this.onCloseTag.bind(this)),this.saxParser.on("doctype",this.onDoctype.bind(this))}onTag(e){const t=this.activeTagStack.length?this.activeTagStack[this.activeTagStack.length-1]:null;let r=l.RESOURCE;if(t&&(t.hadChildren=!0,r=t.childrenParseType),t&&t.childrenStringTags){const r=e.name;let n="";for(const t in e.attributes)n+=` ${t}="${e.attributes[t].value}"`;const i=`<${r}${n}>`;t.childrenStringTags.push(i);const a={childrenStringTags:t.childrenStringTags};return a.childrenStringEmitClosingTag=``,void this.activeTagStack.push(a)}const n={};t?(n.language=t.language,n.baseIRI=t.baseIRI):n.baseIRI=this.baseIRI,this.activeTagStack.push(n),r===l.RESOURCE?this.onTagResource(e,n,t,!t):this.onTagProperty(e,n,t)}onTagResource(e,t,r,i){t.childrenParseType=l.PROPERTY;let a=!0;if(e.uri===u.RDF){if(!i&&u.FORBIDDEN_NODE_ELEMENTS.indexOf(e.local)>=0)throw this.newParseError(`Illegal node element name: ${e.local}`);switch(e.local){case"RDF":t.childrenParseType=l.RESOURCE;case"Description":a=!1}}const o=[],s=[];let c=null,d=!1,p=!1,h=null;for(const i in e.attributes){const a=e.attributes[i];if(r&&a.uri===u.RDF)switch(a.local){case"about":if(c)throw this.newParseError(`Only one of rdf:about, rdf:nodeID and rdf:ID can be present, while ${a.value} and ${c} where found.`);c=a.value;continue;case"ID":if(c)throw this.newParseError(`Only one of rdf:about, rdf:nodeID and rdf:ID can be present, while ${a.value} and ${c} where found.`);this.validateNcname(a.value),c="#"+a.value,d=!0;continue;case"nodeID":if(c)throw this.newParseError(`Only one of rdf:about, rdf:nodeID and rdf:ID can be present, while ${a.value} and ${c} where found.`);this.validateNcname(a.value),c=a.value,p=!0;continue;case"bagID":throw this.newParseError("rdf:bagID is not supported.");case"type":h=a.value;continue;case"aboutEach":throw this.newParseError("rdf:aboutEach is not supported.");case"aboutEachPrefix":throw this.newParseError("rdf:aboutEachPrefix is not supported.");case"li":throw this.newParseError("rdf:li on node elements are not supported.")}else if(a.uri===u.XML){if("lang"===a.local){t.language=""===a.value?null:a.value.toLowerCase();continue}if("base"===a.local){t.baseIRI=(0,n.resolve)(a.value,t.baseIRI);continue}}"xml"===a.prefix||"xmlns"===a.prefix||""===a.prefix&&"xmlns"===a.local||!a.uri||(o.push(this.uriToNamedNode(a.uri+a.local)),s.push(a.value))}if(null!==c&&(t.subject=p?this.dataFactory.blankNode(c):this.valueToUri(c,t),d&&this.claimNodeId(t.subject)),t.subject||(t.subject=this.dataFactory.blankNode()),a){const n=this.uriToNamedNode(e.uri+e.local);this.emitTriple(t.subject,this.dataFactory.namedNode(u.RDF+"type"),n,r?r.reifiedStatementId:null)}if(r){if(r.predicate)if(r.childrenCollectionSubject){const e=this.dataFactory.blankNode();this.emitTriple(r.childrenCollectionSubject,r.childrenCollectionPredicate,e,r.reifiedStatementId),this.emitTriple(e,this.dataFactory.namedNode(u.RDF+"first"),t.subject,t.reifiedStatementId),r.childrenCollectionSubject=e,r.childrenCollectionPredicate=this.dataFactory.namedNode(u.RDF+"rest")}else{this.emitTriple(r.subject,r.predicate,t.subject,r.reifiedStatementId);for(let e=0;e=0)throw this.newParseError(`Illegal property element name: ${e.local}`);t.predicateSubPredicates=[],t.predicateSubObjects=[];let n=!1,i=!1,a=null,o=!0;const s=[],c=[];for(const r in e.attributes){const d=e.attributes[r];if(d.uri===u.RDF)switch(d.local){case"resource":if(a)throw this.newParseError(`Found both rdf:resource (${d.value}) and rdf:nodeID (${a}).`);if(n)throw this.newParseError(`rdf:parseType is not allowed on property elements with rdf:resource (${d.value})`);t.hadChildren=!0,a=d.value,o=!1;continue;case"datatype":if(i)throw this.newParseError(`Found both non-rdf:* property attributes and rdf:datatype (${d.value}).`);if(n)throw this.newParseError(`rdf:parseType is not allowed on property elements with rdf:datatype (${d.value})`);t.datatype=this.valueToUri(d.value,t);continue;case"nodeID":if(i)throw this.newParseError(`Found both non-rdf:* property attributes and rdf:nodeID (${d.value}).`);if(t.hadChildren)throw this.newParseError(`Found both rdf:resource and rdf:nodeID (${d.value}).`);if(n)throw this.newParseError(`rdf:parseType is not allowed on property elements with rdf:nodeID (${d.value})`);this.validateNcname(d.value),t.hadChildren=!0,a=d.value,o=!0;continue;case"bagID":throw this.newParseError("rdf:bagID is not supported.");case"parseType":if(i)throw this.newParseError("rdf:parseType is not allowed when non-rdf:* property attributes are present");if(t.datatype)throw this.newParseError(`rdf:parseType is not allowed on property elements with rdf:datatype (${t.datatype.value})`);if(a)throw this.newParseError(`rdf:parseType is not allowed on property elements with rdf:nodeID or rdf:resource (${a})`);if("Resource"===d.value){n=!0,t.childrenParseType=l.PROPERTY;const e=this.dataFactory.blankNode();this.emitTriple(t.subject,t.predicate,e,t.reifiedStatementId),t.subject=e,t.predicate=null}else"Collection"===d.value?(n=!0,t.hadChildren=!0,t.childrenCollectionSubject=t.subject,t.childrenCollectionPredicate=t.predicate,o=!1):"Literal"===d.value&&(n=!0,t.childrenTagsToString=!0,t.childrenStringTags=[]);continue;case"ID":this.validateNcname(d.value),t.reifiedStatementId=this.valueToUri("#"+d.value,t),this.claimNodeId(t.reifiedStatementId);continue}else if(d.uri===u.XML&&"lang"===d.local){t.language=""===d.value?null:d.value.toLowerCase();continue}if("xml"!==d.prefix&&"xmlns"!==d.prefix&&(""!==d.prefix||"xmlns"!==d.local)&&d.uri){if(n||t.datatype)throw this.newParseError(`Found illegal rdf:* properties on property element with attribute: ${d.value}`);t.hadChildren=!0,i=!0,s.push(this.uriToNamedNode(d.uri+d.local)),c.push(this.dataFactory.literal(d.value,t.datatype||t.language))}}if(null!==a){const e=t.subject;t.subject=o?this.dataFactory.blankNode(a):this.valueToUri(a,t),this.emitTriple(e,t.predicate,t.subject,t.reifiedStatementId);for(let e=0;e/g,((e,t,r)=>(this.saxParser.ENTITIES[t]=r,"")))}}var l;t.RdfXmlParser=u,u.MIME_TYPE="application/rdf+xml",u.RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#",u.XML="http://www.w3.org/XML/1998/namespace",u.FORBIDDEN_NODE_ELEMENTS=["RDF","ID","about","bagID","parseType","resource","nodeID","li","aboutEach","aboutEachPrefix"],u.FORBIDDEN_PROPERTY_ELEMENTS=["Description","RDF","ID","about","bagID","parseType","resource","nodeID","aboutEach","aboutEachPrefix"],u.NCNAME_MATCHER=/^([A-Za-z\xC0-\xD6\xD8-\xF6\u{F8}-\u{2FF}\u{370}-\u{37D}\u{37F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}_])([A-Za-z\xC0-\xD6\xD8-\xF6\u{F8}-\u{2FF}\u{370}-\u{37D}\u{37F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}_\-.0-9#xB7\u{0300}-\u{036F}\u{203F}-\u{2040}])*$/u,function(e){e[e.RESOURCE=0]="RESOURCE",e[e.PROPERTY=1]="PROPERTY"}(l||(t.ParseType=l={}))},84077:e=>{e.exports=function(t){if(!e.exports.WEBSTREAM_SUPPORT)throw new Error("No web ReadableStream support");var r=!1,n={};return new ReadableStream({start:function(e){for(var i in n.data=a,n.end=a,n.end=o,n.close=o,n.error=o,n)t.on(i,n[i]);function a(n){r||(e.enqueue(n),t.pause())}function o(i){if(!r){for(var a in r=!0,n)t.removeListener(a,n[a]);i?e.error(i):e.close()}}t.pause()},pull:function(){r||t.resume()},cancel:function(){for(var e in r=!0,n)t.removeListener(e,n[e]);t.push(null),t.pause(),t.destroy?t.destroy():t.close&&t.close()}})},e.exports.WEBSTREAM_SUPPORT="undefined"!=typeof ReadableStream},21434:(e,t,r)=>{"use strict";const{SymbolDispose:n}=r(51473),{AbortError:i,codes:a}=r(52590),{isNodeStream:o,isWebStream:s,kControllerErrorFunction:c}=r(92520),u=r(94869),{ERR_INVALID_ARG_TYPE:l}=a;let d;e.exports.addAbortSignal=function(t,r){if(((e,t)=>{if("object"!=typeof e||!("aborted"in e))throw new l("signal","AbortSignal",e)})(t),!o(r)&&!s(r))throw new l("stream",["ReadableStream","WritableStream","Stream"],r);return e.exports.addAbortSignalNoValidate(t,r)},e.exports.addAbortSignalNoValidate=function(e,t){if("object"!=typeof e||!("aborted"in e))return t;const a=o(t)?()=>{t.destroy(new i(void 0,{cause:e.reason}))}:()=>{t[c](new i(void 0,{cause:e.reason}))};if(e.aborted)a();else{d=d||r(46609).addAbortListener;const i=d(e,a);u(t,i[n])}return t}},82:(e,t,r)=>{"use strict";const{StringPrototypeSlice:n,SymbolIterator:i,TypedArrayPrototypeSet:a,Uint8Array:o}=r(51473),{Buffer:s}=r(1048),{inspect:c}=r(46609);e.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(e){const t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length}unshift(e){const t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}shift(){if(0===this.length)return;const e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}clear(){this.head=this.tail=null,this.length=0}join(e){if(0===this.length)return"";let t=this.head,r=""+t.data;for(;null!==(t=t.next);)r+=e+t.data;return r}concat(e){if(0===this.length)return s.alloc(0);const t=s.allocUnsafe(e>>>0);let r=this.head,n=0;for(;r;)a(t,r.data,n),n+=r.data.length,r=r.next;return t}consume(e,t){const r=this.head.data;if(ea.length)){e===a.length?(t+=a,++i,r.next?this.head=r.next:this.head=this.tail=null):(t+=n(a,0,e),this.head=r,r.data=n(a,e));break}t+=a,e-=a.length,++i}while(null!==(r=r.next));return this.length-=i,t}_getBuffer(e){const t=s.allocUnsafe(e),r=e;let n=this.head,i=0;do{const s=n.data;if(!(e>s.length)){e===s.length?(a(t,s,r-e),++i,n.next?this.head=n.next:this.head=this.tail=null):(a(t,new o(s.buffer,s.byteOffset,e),r-e),this.head=n,n.data=s.slice(e));break}a(t,s,r-e),e-=s.length,++i}while(null!==(n=n.next));return this.length-=i,t}[Symbol.for("nodejs.util.inspect.custom")](e,t){return c(this,{...t,depth:0,customInspect:!1})}}},67369:(e,t,r)=>{"use strict";const{pipeline:n}=r(16815),i=r(86279),{destroyer:a}=r(16527),{isNodeStream:o,isReadable:s,isWritable:c,isWebStream:u,isTransformStream:l,isWritableStream:d,isReadableStream:p}=r(92520),{AbortError:h,codes:{ERR_INVALID_ARG_VALUE:f,ERR_MISSING_ARGS:y}}=r(52590),g=r(94869);e.exports=function(...e){if(0===e.length)throw new y("streams");if(1===e.length)return i.from(e[0]);const t=[...e];if("function"==typeof e[0]&&(e[0]=i.from(e[0])),"function"==typeof e[e.length-1]){const t=e.length-1;e[t]=i.from(e[t])}for(let r=0;r0&&!(c(e[r])||d(e[r])||l(e[r])))throw new f(`streams[${r}]`,t[r],"must be writable")}let r,m,b,v,_;const w=e[0],T=n(e,(function(e){const t=v;v=null,t?t(e):e?_.destroy(e):O||S||_.destroy()})),S=!!(c(w)||d(w)||l(w)),O=!!(s(T)||p(T)||l(T));if(_=new i({writableObjectMode:!(null==w||!w.writableObjectMode),readableObjectMode:!(null==T||!T.readableObjectMode),writable:S,readable:O}),S){if(o(w))_._write=function(e,t,n){w.write(e,t)?n():r=n},_._final=function(e){w.end(),m=e},w.on("drain",(function(){if(r){const e=r;r=null,e()}}));else if(u(w)){const e=(l(w)?w.writable:w).getWriter();_._write=async function(t,r,n){try{await e.ready,e.write(t).catch((()=>{})),n()}catch(e){n(e)}},_._final=async function(t){try{await e.ready,e.close().catch((()=>{})),m=t}catch(e){t(e)}}}const e=l(T)?T.readable:T;g(e,(()=>{if(m){const e=m;m=null,e()}}))}if(O)if(o(T))T.on("readable",(function(){if(b){const e=b;b=null,e()}})),T.on("end",(function(){_.push(null)})),_._read=function(){for(;;){const e=T.read();if(null===e)return void(b=_._read);if(!_.push(e))return}};else if(u(T)){const e=(l(T)?T.readable:T).getReader();_._read=async function(){for(;;)try{const{value:t,done:r}=await e.read();if(!_.push(t))return;if(r)return void _.push(null)}catch{return}}}return _._destroy=function(e,t){e||null===v||(e=new h),b=null,r=null,m=null,null===v?t(e):(v=t,o(T)&&a(T,e))},_}},16527:(e,t,r)=>{"use strict";const n=r(39907),{aggregateTwoErrors:i,codes:{ERR_MULTIPLE_CALLBACK:a},AbortError:o}=r(52590),{Symbol:s}=r(51473),{kIsDestroyed:c,isDestroyed:u,isFinished:l,isServerRequest:d}=r(92520),p=s("kDestroy"),h=s("kConstruct");function f(e,t,r){e&&(e.stack,t&&!t.errored&&(t.errored=e),r&&!r.errored&&(r.errored=e))}function y(e,t,r){let i=!1;function a(t){if(i)return;i=!0;const a=e._readableState,o=e._writableState;f(t,o,a),o&&(o.closed=!0),a&&(a.closed=!0),"function"==typeof r&&r(t),t?n.nextTick(g,e,t):n.nextTick(m,e)}try{e._destroy(t||null,a)}catch(t){a(t)}}function g(e,t){b(e,t),m(e)}function m(e){const t=e._readableState,r=e._writableState;r&&(r.closeEmitted=!0),t&&(t.closeEmitted=!0),(null!=r&&r.emitClose||null!=t&&t.emitClose)&&e.emit("close")}function b(e,t){const r=e._readableState,n=e._writableState;null!=n&&n.errorEmitted||null!=r&&r.errorEmitted||(n&&(n.errorEmitted=!0),r&&(r.errorEmitted=!0),e.emit("error",t))}function v(e,t,r){const i=e._readableState,a=e._writableState;if(null!=a&&a.destroyed||null!=i&&i.destroyed)return this;null!=i&&i.autoDestroy||null!=a&&a.autoDestroy?e.destroy(t):t&&(t.stack,a&&!a.errored&&(a.errored=t),i&&!i.errored&&(i.errored=t),r?n.nextTick(b,e,t):b(e,t))}function _(e){let t=!1;function r(r){if(t)return void v(e,null!=r?r:new a);t=!0;const i=e._readableState,o=e._writableState,s=o||i;i&&(i.constructed=!0),o&&(o.constructed=!0),s.destroyed?e.emit(p,r):r?v(e,r,!0):n.nextTick(w,e)}try{e._construct((e=>{n.nextTick(r,e)}))}catch(e){n.nextTick(r,e)}}function w(e){e.emit(h)}function T(e){return(null==e?void 0:e.setHeader)&&"function"==typeof e.abort}function S(e){e.emit("close")}function O(e,t){e.emit("error",t),n.nextTick(S,e)}e.exports={construct:function(e,t){if("function"!=typeof e._construct)return;const r=e._readableState,i=e._writableState;r&&(r.constructed=!1),i&&(i.constructed=!1),e.once(h,t),e.listenerCount(h)>1||n.nextTick(_,e)},destroyer:function(e,t){e&&!u(e)&&(t||l(e)||(t=new o),d(e)?(e.socket=null,e.destroy(t)):T(e)?e.abort():T(e.req)?e.req.abort():"function"==typeof e.destroy?e.destroy(t):"function"==typeof e.close?e.close():t?n.nextTick(O,e,t):n.nextTick(S,e),e.destroyed||(e[c]=!0))},destroy:function(e,t){const r=this._readableState,n=this._writableState,a=n||r;return null!=n&&n.destroyed||null!=r&&r.destroyed?("function"==typeof t&&t(),this):(f(e,n,r),n&&(n.destroyed=!0),r&&(r.destroyed=!0),a.constructed?y(this,e,t):this.once(p,(function(r){y(this,i(r,e),t)})),this)},undestroy:function(){const e=this._readableState,t=this._writableState;e&&(e.constructed=!0,e.closed=!1,e.closeEmitted=!1,e.destroyed=!1,e.errored=null,e.errorEmitted=!1,e.reading=!1,e.ended=!1===e.readable,e.endEmitted=!1===e.readable),t&&(t.constructed=!0,t.destroyed=!1,t.closed=!1,t.closeEmitted=!1,t.errored=null,t.errorEmitted=!1,t.finalCalled=!1,t.prefinished=!1,t.ended=!1===t.writable,t.ending=!1===t.writable,t.finished=!1===t.writable)},errorOrDestroy:v}},86279:(e,t,r)=>{"use strict";const{ObjectDefineProperties:n,ObjectGetOwnPropertyDescriptor:i,ObjectKeys:a,ObjectSetPrototypeOf:o}=r(51473);e.exports=u;const s=r(11509),c=r(65605);o(u.prototype,s.prototype),o(u,s);{const e=a(c.prototype);for(let t=0;t{const n=r(39907),i=r(1048),{isReadable:a,isWritable:o,isIterable:s,isNodeStream:c,isReadableNodeStream:u,isWritableNodeStream:l,isDuplexNodeStream:d,isReadableStream:p,isWritableStream:h}=r(92520),f=r(94869),{AbortError:y,codes:{ERR_INVALID_ARG_TYPE:g,ERR_INVALID_RETURN_VALUE:m}}=r(52590),{destroyer:b}=r(16527),v=r(86279),_=r(11509),w=r(65605),{createDeferredPromise:T}=r(46609),S=r(81613),O=globalThis.Blob||i.Blob,E=void 0!==O?function(e){return e instanceof O}:function(e){return!1},x=globalThis.AbortController||r(67083).AbortController,{FunctionPrototypeCall:A}=r(51473);class R extends v{constructor(e){super(e),!1===(null==e?void 0:e.readable)&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),!1===(null==e?void 0:e.writable)&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}}function I(e){const t=e.readable&&"function"!=typeof e.readable.read?_.wrap(e.readable):e.readable,r=e.writable;let n,i,s,c,u,l=!!a(t),d=!!o(r);function p(e){const t=c;c=null,t?t(e):e&&u.destroy(e)}return u=new R({readableObjectMode:!(null==t||!t.readableObjectMode),writableObjectMode:!(null==r||!r.writableObjectMode),readable:l,writable:d}),d&&(f(r,(e=>{d=!1,e&&b(t,e),p(e)})),u._write=function(e,t,i){r.write(e,t)?i():n=i},u._final=function(e){r.end(),i=e},r.on("drain",(function(){if(n){const e=n;n=null,e()}})),r.on("finish",(function(){if(i){const e=i;i=null,e()}}))),l&&(f(t,(e=>{l=!1,e&&b(t,e),p(e)})),t.on("readable",(function(){if(s){const e=s;s=null,e()}})),t.on("end",(function(){u.push(null)})),u._read=function(){for(;;){const e=t.read();if(null===e)return void(s=u._read);if(!u.push(e))return}}),u._destroy=function(e,a){e||null===c||(e=new y),s=null,n=null,i=null,null===c?a(e):(c=a,b(r,e),b(t,e))},u}e.exports=function e(t,r){if(d(t))return t;if(u(t))return I({readable:t});if(l(t))return I({writable:t});if(c(t))return I({writable:!1,readable:!1});if(p(t))return I({readable:_.fromWeb(t)});if(h(t))return I({writable:w.fromWeb(t)});if("function"==typeof t){const{value:e,write:i,final:a,destroy:o}=function(e){let{promise:t,resolve:r}=T();const i=new x,a=i.signal;return{value:e(async function*(){for(;;){const e=t;t=null;const{chunk:i,done:o,cb:s}=await e;if(n.nextTick(s),o)return;if(a.aborted)throw new y(void 0,{cause:a.reason});({promise:t,resolve:r}=T()),yield i}}(),{signal:a}),write(e,t,n){const i=r;r=null,i({chunk:e,done:!1,cb:n})},final(e){const t=r;r=null,t({done:!0,cb:e})},destroy(e,t){i.abort(),t(e)}}}(t);if(s(e))return S(R,e,{objectMode:!0,write:i,final:a,destroy:o});const c=null==e?void 0:e.then;if("function"==typeof c){let t;const r=A(c,e,(e=>{if(null!=e)throw new m("nully","body",e)}),(e=>{b(t,e)}));return t=new R({objectMode:!0,readable:!1,write:i,final(e){a((async()=>{try{await r,n.nextTick(e,null)}catch(t){n.nextTick(e,t)}}))},destroy:o})}throw new m("Iterable, AsyncIterable or AsyncFunction",r,e)}if(E(t))return e(t.arrayBuffer());if(s(t))return S(R,t,{objectMode:!0,writable:!1});if(p(null==t?void 0:t.readable)&&h(null==t?void 0:t.writable))return R.fromWeb(t);if("object"==typeof(null==t?void 0:t.writable)||"object"==typeof(null==t?void 0:t.readable))return I({readable:null!=t&&t.readable?u(null==t?void 0:t.readable)?null==t?void 0:t.readable:e(t.readable):void 0,writable:null!=t&&t.writable?l(null==t?void 0:t.writable)?null==t?void 0:t.writable:e(t.writable):void 0});const i=null==t?void 0:t.then;if("function"==typeof i){let e;return A(i,t,(t=>{null!=t&&e.push(t),e.push(null)}),(t=>{b(e,t)})),e=new R({objectMode:!0,writable:!1,read(){}})}throw new g(r,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],t)}},94869:(e,t,r)=>{const n=r(39907),{AbortError:i,codes:a}=r(52590),{ERR_INVALID_ARG_TYPE:o,ERR_STREAM_PREMATURE_CLOSE:s}=a,{kEmptyObject:c,once:u}=r(46609),{validateAbortSignal:l,validateFunction:d,validateObject:p,validateBoolean:h}=r(77840),{Promise:f,PromisePrototypeThen:y,SymbolDispose:g}=r(51473),{isClosed:m,isReadable:b,isReadableNodeStream:v,isReadableStream:_,isReadableFinished:w,isReadableErrored:T,isWritable:S,isWritableNodeStream:O,isWritableStream:E,isWritableFinished:x,isWritableErrored:A,isNodeStream:R,willEmitClose:I,kIsClosedPromise:P}=r(92520);let N;const D=()=>{};function j(e,t,a){var h,f;if(2===arguments.length?(a=t,t=c):null==t?t=c:p(t,"options"),d(a,"callback"),l(t.signal,"options.signal"),a=u(a),_(e)||E(e))return function(e,t,a){let o=!1,s=D;if(t.signal)if(s=()=>{o=!0,a.call(e,new i(void 0,{cause:t.signal.reason}))},t.signal.aborted)n.nextTick(s);else{N=N||r(46609).addAbortListener;const n=N(t.signal,s),i=a;a=u(((...t)=>{n[g](),i.apply(e,t)}))}const c=(...t)=>{o||n.nextTick((()=>a.apply(e,t)))};return y(e[P].promise,c,c),D}(e,t,a);if(!R(e))throw new o("stream",["ReadableStream","WritableStream","Stream"],e);const j=null!==(h=t.readable)&&void 0!==h?h:v(e),C=null!==(f=t.writable)&&void 0!==f?f:O(e),M=e._writableState,L=e._readableState,k=()=>{e.writable||U()};let F=I(e)&&v(e)===j&&O(e)===C,B=x(e,!1);const U=()=>{B=!0,e.destroyed&&(F=!1),(!F||e.readable&&!j)&&(j&&!q||a.call(e))};let q=w(e,!1);const V=()=>{q=!0,e.destroyed&&(F=!1),(!F||e.writable&&!C)&&(C&&!B||a.call(e))},Q=t=>{a.call(e,t)};let $=m(e);const H=()=>{$=!0;const t=A(e)||T(e);return t&&"boolean"!=typeof t?a.call(e,t):j&&!q&&v(e,!0)&&!w(e,!1)?a.call(e,new s):!C||B||x(e,!1)?void a.call(e):a.call(e,new s)},G=()=>{$=!0;const t=A(e)||T(e);if(t&&"boolean"!=typeof t)return a.call(e,t);a.call(e)},z=()=>{e.req.on("finish",U)};!function(e){return e.setHeader&&"function"==typeof e.abort}(e)?C&&!M&&(e.on("end",k),e.on("close",k)):(e.on("complete",U),F||e.on("abort",H),e.req?z():e.on("request",z)),F||"boolean"!=typeof e.aborted||e.on("aborted",H),e.on("end",V),e.on("finish",U),!1!==t.error&&e.on("error",Q),e.on("close",H),$?n.nextTick(H):null!=M&&M.errorEmitted||null!=L&&L.errorEmitted?F||n.nextTick(G):(j||F&&!b(e)||!B&&!1!==S(e))&&(C||F&&!S(e)||!q&&!1!==b(e))?L&&e.req&&e.aborted&&n.nextTick(G):n.nextTick(G);const K=()=>{a=D,e.removeListener("aborted",H),e.removeListener("complete",U),e.removeListener("abort",H),e.removeListener("request",z),e.req&&e.req.removeListener("finish",U),e.removeListener("end",k),e.removeListener("close",k),e.removeListener("finish",U),e.removeListener("end",V),e.removeListener("error",Q),e.removeListener("close",H)};if(t.signal&&!$){const o=()=>{const r=a;K(),r.call(e,new i(void 0,{cause:t.signal.reason}))};if(t.signal.aborted)n.nextTick(o);else{N=N||r(46609).addAbortListener;const n=N(t.signal,o),i=a;a=u(((...t)=>{n[g](),i.apply(e,t)}))}}return K}e.exports=j,e.exports.finished=function(e,t){var r;let n=!1;return null===t&&(t=c),null!==(r=t)&&void 0!==r&&r.cleanup&&(h(t.cleanup,"cleanup"),n=t.cleanup),new f(((r,i)=>{const a=j(e,t,(e=>{n&&a(),e?i(e):r()}))}))}},81613:(e,t,r)=>{"use strict";const n=r(39907),{PromisePrototypeThen:i,SymbolAsyncIterator:a,SymbolIterator:o}=r(51473),{Buffer:s}=r(1048),{ERR_INVALID_ARG_TYPE:c,ERR_STREAM_NULL_VALUES:u}=r(52590).codes;e.exports=function(e,t,r){let l,d;if("string"==typeof t||t instanceof s)return new e({objectMode:!0,...r,read(){this.push(t),this.push(null)}});if(t&&t[a])d=!0,l=t[a]();else{if(!t||!t[o])throw new c("iterable",["Iterable"],t);d=!1,l=t[o]()}const p=new e({objectMode:!0,highWaterMark:1,...r});let h=!1;return p._read=function(){h||(h=!0,async function(){for(;;){try{const{value:e,done:t}=d?await l.next():l.next();if(t)p.push(null);else{const t=e&&"function"==typeof e.then?await e:e;if(null===t)throw h=!1,new u;if(p.push(t))continue;h=!1}}catch(e){p.destroy(e)}break}}())},p._destroy=function(e,t){i(async function(e){const t=null!=e,r="function"==typeof l.throw;if(t&&r){const{value:t,done:r}=await l.throw(e);if(await t,r)return}if("function"==typeof l.return){const{value:e}=await l.return();await e}}(e),(()=>n.nextTick(t,e)),(r=>n.nextTick(t,r||e)))},p}},23054:(e,t,r)=>{"use strict";const{ArrayIsArray:n,ObjectSetPrototypeOf:i}=r(51473),{EventEmitter:a}=r(50046);function o(e){a.call(this,e)}function s(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?n(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}i(o.prototype,a.prototype),i(o,a),o.prototype.pipe=function(e,t){const r=this;function n(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function i(){r.readable&&r.resume&&r.resume()}r.on("data",n),e.on("drain",i),e._isStdio||t&&!1===t.end||(r.on("end",c),r.on("close",u));let o=!1;function c(){o||(o=!0,e.end())}function u(){o||(o=!0,"function"==typeof e.destroy&&e.destroy())}function l(e){d(),0===a.listenerCount(this,"error")&&this.emit("error",e)}function d(){r.removeListener("data",n),e.removeListener("drain",i),r.removeListener("end",c),r.removeListener("close",u),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",d),r.removeListener("close",d),e.removeListener("close",d)}return s(r,"error",l),s(e,"error",l),r.on("end",d),r.on("close",d),e.on("close",d),e.emit("pipe",r),e},e.exports={Stream:o,prependListener:s}},64708:(e,t,r)=>{"use strict";const n=globalThis.AbortController||r(67083).AbortController,{codes:{ERR_INVALID_ARG_VALUE:i,ERR_INVALID_ARG_TYPE:a,ERR_MISSING_ARGS:o,ERR_OUT_OF_RANGE:s},AbortError:c}=r(52590),{validateAbortSignal:u,validateInteger:l,validateObject:d}=r(77840),p=r(51473).Symbol("kWeak"),h=r(51473).Symbol("kResistStopPropagation"),{finished:f}=r(94869),y=r(67369),{addAbortSignalNoValidate:g}=r(21434),{isWritable:m,isNodeStream:b}=r(92520),{deprecate:v}=r(46609),{ArrayPrototypePush:_,Boolean:w,MathFloor:T,Number:S,NumberIsNaN:O,Promise:E,PromiseReject:x,PromiseResolve:A,PromisePrototypeThen:R,Symbol:I}=r(51473),P=I("kEmpty"),N=I("kEof");function D(e,t){if("function"!=typeof e)throw new a("fn",["Function","AsyncFunction"],e);null!=t&&d(t,"options"),null!=(null==t?void 0:t.signal)&&u(t.signal,"options.signal");let n=1;null!=(null==t?void 0:t.concurrency)&&(n=T(t.concurrency));let i=n-1;return null!=(null==t?void 0:t.highWaterMark)&&(i=T(t.highWaterMark)),l(n,"options.concurrency",1),l(i,"options.highWaterMark",0),i+=n,async function*(){const a=r(46609).AbortSignalAny([null==t?void 0:t.signal].filter(w)),o=this,s=[],u={signal:a};let l,d,p=!1,h=0;function f(){p=!0,y()}function y(){h-=1,g()}function g(){d&&!p&&h=i||h>=n)&&await new E((e=>{d=e}))}s.push(N)}catch(e){const t=x(e);R(t,y,f),s.push(t)}finally{p=!0,l&&(l(),l=null)}}();try{for(;;){for(;s.length>0;){const e=await s[0];if(e===N)return;if(a.aborted)throw new c;e!==P&&(yield e),s.shift(),g()}await new E((e=>{l=e}))}}finally{p=!0,d&&(d(),d=null)}}.call(this)}async function j(e,t=void 0){for await(const r of C.call(this,e,t))return!0;return!1}function C(e,t){if("function"!=typeof e)throw new a("fn",["Function","AsyncFunction"],e);return D.call(this,(async function(t,r){return await e(t,r)?t:P}),t)}class M extends o{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}}function L(e){if(e=S(e),O(e))return 0;if(e<0)throw new s("number",">= 0",e);return e}e.exports.streamReturningOperators={asIndexedPairs:v((function(e=void 0){return null!=e&&d(e,"options"),null!=(null==e?void 0:e.signal)&&u(e.signal,"options.signal"),async function*(){let t=0;for await(const n of this){var r;if(null!=e&&null!==(r=e.signal)&&void 0!==r&&r.aborted)throw new c({cause:e.signal.reason});yield[t++,n]}}.call(this)}),"readable.asIndexedPairs will be removed in a future version."),drop:function(e,t=void 0){return null!=t&&d(t,"options"),null!=(null==t?void 0:t.signal)&&u(t.signal,"options.signal"),e=L(e),async function*(){var r;if(null!=t&&null!==(r=t.signal)&&void 0!==r&&r.aborted)throw new c;for await(const r of this){var n;if(null!=t&&null!==(n=t.signal)&&void 0!==n&&n.aborted)throw new c;e--<=0&&(yield r)}}.call(this)},filter:C,flatMap:function(e,t){const r=D.call(this,e,t);return async function*(){for await(const e of r)yield*e}.call(this)},map:D,take:function(e,t=void 0){return null!=t&&d(t,"options"),null!=(null==t?void 0:t.signal)&&u(t.signal,"options.signal"),e=L(e),async function*(){var r;if(null!=t&&null!==(r=t.signal)&&void 0!==r&&r.aborted)throw new c;for await(const r of this){var n;if(null!=t&&null!==(n=t.signal)&&void 0!==n&&n.aborted)throw new c;if(e-- >0&&(yield r),e<=0)return}}.call(this)},compose:function(e,t){if(null!=t&&d(t,"options"),null!=(null==t?void 0:t.signal)&&u(t.signal,"options.signal"),b(e)&&!m(e))throw new i("stream",e,"must be writable");const r=y(this,e);return null!=t&&t.signal&&g(t.signal,r),r}},e.exports.promiseReturningOperators={every:async function(e,t=void 0){if("function"!=typeof e)throw new a("fn",["Function","AsyncFunction"],e);return!await j.call(this,(async(...t)=>!await e(...t)),t)},forEach:async function(e,t){if("function"!=typeof e)throw new a("fn",["Function","AsyncFunction"],e);for await(const r of D.call(this,(async function(t,r){return await e(t,r),P}),t));},reduce:async function(e,t,r){var i;if("function"!=typeof e)throw new a("reducer",["Function","AsyncFunction"],e);null!=r&&d(r,"options"),null!=(null==r?void 0:r.signal)&&u(r.signal,"options.signal");let o=arguments.length>1;if(null!=r&&null!==(i=r.signal)&&void 0!==i&&i.aborted){const e=new c(void 0,{cause:r.signal.reason});throw this.once("error",(()=>{})),await f(this.destroy(e)),e}const s=new n,l=s.signal;if(null!=r&&r.signal){const e={once:!0,[p]:this,[h]:!0};r.signal.addEventListener("abort",(()=>s.abort()),e)}let y=!1;try{for await(const n of this){var g;if(y=!0,null!=r&&null!==(g=r.signal)&&void 0!==g&&g.aborted)throw new c;o?t=await e(t,n,{signal:l}):(t=n,o=!0)}if(!y&&!o)throw new M}finally{s.abort()}return t},toArray:async function(e){null!=e&&d(e,"options"),null!=(null==e?void 0:e.signal)&&u(e.signal,"options.signal");const t=[];for await(const n of this){var r;if(null!=e&&null!==(r=e.signal)&&void 0!==r&&r.aborted)throw new c(void 0,{cause:e.signal.reason});_(t,n)}return t},some:j,find:async function(e,t){for await(const r of C.call(this,e,t))return r}}},76587:(e,t,r)=>{"use strict";const{ObjectSetPrototypeOf:n}=r(51473);e.exports=a;const i=r(32073);function a(e){if(!(this instanceof a))return new a(e);i.call(this,e)}n(a.prototype,i.prototype),n(a,i),a.prototype._transform=function(e,t,r){r(null,e)}},16815:(e,t,r)=>{const n=r(39907),{ArrayIsArray:i,Promise:a,SymbolAsyncIterator:o,SymbolDispose:s}=r(51473),c=r(94869),{once:u}=r(46609),l=r(16527),d=r(86279),{aggregateTwoErrors:p,codes:{ERR_INVALID_ARG_TYPE:h,ERR_INVALID_RETURN_VALUE:f,ERR_MISSING_ARGS:y,ERR_STREAM_DESTROYED:g,ERR_STREAM_PREMATURE_CLOSE:m},AbortError:b}=r(52590),{validateFunction:v,validateAbortSignal:_}=r(77840),{isIterable:w,isReadable:T,isReadableNodeStream:S,isNodeStream:O,isTransformStream:E,isWebStream:x,isReadableStream:A,isReadableFinished:R}=r(92520),I=globalThis.AbortController||r(67083).AbortController;let P,N,D;function j(e,t,r){let n=!1;return e.on("close",(()=>{n=!0})),{destroy:t=>{n||(n=!0,l.destroyer(e,t||new g("pipe")))},cleanup:c(e,{readable:t,writable:r},(e=>{n=!e}))}}function C(e){if(w(e))return e;if(S(e))return async function*(e){N||(N=r(11509)),yield*N.prototype[o].call(e)}(e);throw new h("val",["Readable","Iterable","AsyncIterable"],e)}async function M(e,t,r,{end:n}){let i,o=null;const s=e=>{if(e&&(i=e),o){const e=o;o=null,e()}},u=()=>new a(((e,t)=>{i?t(i):o=()=>{i?t(i):e()}}));t.on("drain",s);const l=c(t,{readable:!1},s);try{t.writableNeedDrain&&await u();for await(const r of e)t.write(r)||await u();n&&(t.end(),await u()),r()}catch(e){r(i!==e?p(i,e):e)}finally{l(),t.off("drain",s)}}async function L(e,t,r,{end:n}){E(t)&&(t=t.writable);const i=t.getWriter();try{for await(const t of e)await i.ready,i.write(t).catch((()=>{}));await i.ready,n&&await i.close(),r()}catch(e){try{await i.abort(e),r(e)}catch(e){r(e)}}}function k(e,t,a){if(1===e.length&&i(e[0])&&(e=e[0]),e.length<2)throw new y("streams");const o=new I,c=o.signal,u=null==a?void 0:a.signal,l=[];function p(){U(new b)}let g,m,v;_(u,"options.signal"),D=D||r(46609).addAbortListener,u&&(g=D(u,p));const R=[];let N,k=0;function B(e){U(e,0==--k)}function U(e,r){var i;if(!e||m&&"ERR_STREAM_PREMATURE_CLOSE"!==m.code||(m=e),m||r){for(;R.length;)R.shift()(m);null===(i=g)||void 0===i||i[s](),o.abort(),r&&(m||l.forEach((e=>e())),n.nextTick(t,m,v))}}for(let $=0;$0,K=G||!1!==(null==a?void 0:a.end),X=$===e.length-1;if(O(H)){if(K){const{destroy:J,cleanup:W}=j(H,G,z);R.push(J),T(H)&&X&&l.push(W)}function q(e){e&&"AbortError"!==e.name&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code&&B(e)}H.on("error",q),T(H)&&X&&l.push((()=>{H.removeListener("error",q)}))}if(0===$)if("function"==typeof H){if(N=H({signal:c}),!w(N))throw new f("Iterable, AsyncIterable or Stream","source",N)}else N=w(H)||S(H)||E(H)?H:d.from(H);else if("function"==typeof H){var V;if(N=E(N)?C(null===(V=N)||void 0===V?void 0:V.readable):C(N),N=H(N,{signal:c}),G){if(!w(N,!0))throw new f("AsyncIterable",`transform[${$-1}]`,N)}else{var Q;P||(P=r(76587));const Y=new P({objectMode:!0}),Z=null===(Q=N)||void 0===Q?void 0:Q.then;if("function"==typeof Z)k++,Z.call(N,(e=>{v=e,null!=e&&Y.write(e),K&&Y.end(),n.nextTick(B)}),(e=>{Y.destroy(e),n.nextTick(B,e)}));else if(w(N,!0))k++,M(N,Y,B,{end:K});else{if(!A(N)&&!E(N))throw new f("AsyncIterable or Promise","destination",N);{const re=N.readable||N;k++,M(re,Y,B,{end:K})}}N=Y;const{destroy:ee,cleanup:te}=j(N,!1,!0);R.push(ee),X&&l.push(te)}}else if(O(H)){if(S(N)){k+=2;const ne=F(N,H,B,{end:K});T(H)&&X&&l.push(ne)}else if(E(N)||A(N)){const ie=N.readable||N;k++,M(ie,H,B,{end:K})}else{if(!w(N))throw new h("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],N);k++,M(N,H,B,{end:K})}N=H}else if(x(H)){if(S(N))k++,L(C(N),H,B,{end:K});else if(A(N)||w(N))k++,L(N,H,B,{end:K});else{if(!E(N))throw new h("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],N);k++,L(N.readable,H,B,{end:K})}N=H}else N=d.from(H)}return(null!=c&&c.aborted||null!=u&&u.aborted)&&n.nextTick(p),N}function F(e,t,r,{end:i}){let a=!1;if(t.on("close",(()=>{a||r(new m)})),e.pipe(t,{end:!1}),i){function o(){a=!0,t.end()}R(e)?n.nextTick(o):e.once("end",o)}else r();return c(e,{readable:!0,writable:!1},(t=>{const n=e._readableState;t&&"ERR_STREAM_PREMATURE_CLOSE"===t.code&&n&&n.ended&&!n.errored&&!n.errorEmitted?e.once("end",r).once("error",r):r(t)})),c(t,{readable:!1,writable:!0},r)}e.exports={pipelineImpl:k,pipeline:function(...e){return k(e,u(function(e){return v(e[e.length-1],"streams[stream.length - 1]"),e.pop()}(e)))}}},11509:(e,t,r)=>{const n=r(39907),{ArrayPrototypeIndexOf:i,NumberIsInteger:a,NumberIsNaN:o,NumberParseInt:s,ObjectDefineProperties:c,ObjectKeys:u,ObjectSetPrototypeOf:l,Promise:d,SafeSet:p,SymbolAsyncDispose:h,SymbolAsyncIterator:f,Symbol:y}=r(51473);e.exports=X,X.ReadableState=K;const{EventEmitter:g}=r(50046),{Stream:m,prependListener:b}=r(23054),{Buffer:v}=r(1048),{addAbortSignal:_}=r(21434),w=r(94869);let T=r(46609).debuglog("stream",(e=>{T=e}));const S=r(82),O=r(16527),{getHighWaterMark:E,getDefaultHighWaterMark:x}=r(89952),{aggregateTwoErrors:A,codes:{ERR_INVALID_ARG_TYPE:R,ERR_METHOD_NOT_IMPLEMENTED:I,ERR_OUT_OF_RANGE:P,ERR_STREAM_PUSH_AFTER_EOF:N,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:D},AbortError:j}=r(52590),{validateObject:C}=r(77840),M=y("kPaused"),{StringDecoder:L}=r(18888),k=r(81613);l(X.prototype,m.prototype),l(X,m);const F=()=>{},{errorOrDestroy:B}=O,U=1,q=16,V=32,Q=64,$=2048,H=4096,G=65536;function z(e){return{enumerable:!1,get(){return!!(this.state&e)},set(t){t?this.state|=e:this.state&=~e}}}function K(e,t,n){"boolean"!=typeof n&&(n=t instanceof r(86279)),this.state=$|H|q|V,e&&e.objectMode&&(this.state|=U),n&&e&&e.readableObjectMode&&(this.state|=U),this.highWaterMark=e?E(this,e,"readableHighWaterMark",n):x(!1),this.buffer=new S,this.length=0,this.pipes=[],this.flowing=null,this[M]=null,e&&!1===e.emitClose&&(this.state&=~$),e&&!1===e.autoDestroy&&(this.state&=~H),this.errored=null,this.defaultEncoding=e&&e.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,e&&e.encoding&&(this.decoder=new L(e.encoding),this.encoding=e.encoding)}function X(e){if(!(this instanceof X))return new X(e);const t=this instanceof r(86279);this._readableState=new K(e,this,t),e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.construct&&(this._construct=e.construct),e.signal&&!t&&_(e.signal,this)),m.call(this,e),O.construct(this,(()=>{this._readableState.needReadable&&te(this,this._readableState)}))}function J(e,t,r,n){T("readableAddChunk",t);const i=e._readableState;let a;if(i.state&U||("string"==typeof t?(r=r||i.defaultEncoding,i.encoding!==r&&(n&&i.encoding?t=v.from(t,r).toString(i.encoding):(t=v.from(t,r),r=""))):t instanceof v?r="":m._isUint8Array(t)?(t=m._uint8ArrayToBuffer(t),r=""):null!=t&&(a=new R("chunk",["string","Buffer","Uint8Array"],t))),a)B(e,a);else if(null===t)i.state&=-9,function(e,t){if(T("onEofChunk"),!t.ended){if(t.decoder){const e=t.decoder.end();e&&e.length&&(t.buffer.push(e),t.length+=t.objectMode?1:e.length)}t.ended=!0,t.sync?Z(e):(t.needReadable=!1,t.emittedReadable=!0,ee(e))}}(e,i);else if(i.state&U||t&&t.length>0)if(n)if(4&i.state)B(e,new D);else{if(i.destroyed||i.errored)return!1;W(e,i,t,!0)}else if(i.ended)B(e,new N);else{if(i.destroyed||i.errored)return!1;i.state&=-9,i.decoder&&!r?(t=i.decoder.write(t),i.objectMode||0!==t.length?W(e,i,t,!1):te(e,i)):W(e,i,t,!1)}else n||(i.state&=-9,te(e,i));return!i.ended&&(i.length0?(t.state&G?t.awaitDrainWriters.clear():t.awaitDrainWriters=null,t.dataEmitted=!0,e.emit("data",r)):(t.length+=t.objectMode?1:r.length,n?t.buffer.unshift(r):t.buffer.push(r),t.state&Q&&Z(e)),te(e,t)}function Y(e,t){return e<=0||0===t.length&&t.ended?0:t.state&U?1:o(e)?t.flowing&&t.length?t.buffer.first().length:t.length:e<=t.length?e:t.ended?t.length:0}function Z(e){const t=e._readableState;T("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(T("emitReadable",t.flowing),t.emittedReadable=!0,n.nextTick(ee,e))}function ee(e){const t=e._readableState;T("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||t.errored||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,oe(e)}function te(e,t){!t.readingMore&&t.constructed&&(t.readingMore=!0,n.nextTick(re,e,t))}function re(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!1===t[M]?t.flowing=!0:e.listenerCount("data")>0?e.resume():t.readableListening||(t.flowing=null)}function ie(e){T("readable nexttick read 0"),e.read(0)}function ae(e,t){T("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),oe(e),t.flowing&&!t.reading&&e.read(0)}function oe(e){const t=e._readableState;for(T("flow",t.flowing);t.flowing&&null!==e.read(););}function se(e,t){"function"!=typeof e.read&&(e=X.wrap(e,{objectMode:!0}));const r=async function*(e,t){let r,n=F;function i(t){this===e?(n(),n=F):n=t}e.on("readable",i);const a=w(e,{writable:!1},(e=>{r=e?A(r,e):null,n(),n=F}));try{for(;;){const t=e.destroyed?null:e.read();if(null!==t)yield t;else{if(r)throw r;if(null===r)return;await new d(i)}}}catch(e){throw r=A(r,e),r}finally{!r&&!1===(null==t?void 0:t.destroyOnReturn)||void 0!==r&&!e._readableState.autoDestroy?(e.off("readable",i),a()):O.destroyer(e,null)}}(e,t);return r.stream=e,r}function ce(e,t){if(0===t.length)return null;let r;return t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function ue(e){const t=e._readableState;T("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,n.nextTick(le,t,e))}function le(e,t){if(T("endReadableNT",e.endEmitted,e.length),!e.errored&&!e.closeEmitted&&!e.endEmitted&&0===e.length)if(e.endEmitted=!0,t.emit("end"),t.writable&&!1===t.allowHalfOpen)n.nextTick(de,t);else if(e.autoDestroy){const e=t._writableState;(!e||e.autoDestroy&&(e.finished||!1===e.writable))&&t.destroy()}}function de(e){e.writable&&!e.writableEnded&&!e.destroyed&&e.end()}let pe;function he(){return void 0===pe&&(pe={}),pe}c(K.prototype,{objectMode:z(U),ended:z(2),endEmitted:z(4),reading:z(8),constructed:z(q),sync:z(V),needReadable:z(Q),emittedReadable:z(128),readableListening:z(256),resumeScheduled:z(512),errorEmitted:z(1024),emitClose:z($),autoDestroy:z(H),destroyed:z(8192),closed:z(16384),closeEmitted:z(32768),multiAwaitDrain:z(G),readingMore:z(1<<17),dataEmitted:z(1<<18)}),X.prototype.destroy=O.destroy,X.prototype._undestroy=O.undestroy,X.prototype._destroy=function(e,t){t(e)},X.prototype[g.captureRejectionSymbol]=function(e){this.destroy(e)},X.prototype[h]=function(){let e;return this.destroyed||(e=this.readableEnded?null:new j,this.destroy(e)),new d(((t,r)=>w(this,(n=>n&&n!==e?r(n):t(null)))))},X.prototype.push=function(e,t){return J(this,e,t,!1)},X.prototype.unshift=function(e,t){return J(this,e,t,!0)},X.prototype.isPaused=function(){const e=this._readableState;return!0===e[M]||!1===e.flowing},X.prototype.setEncoding=function(e){const t=new L(e);this._readableState.decoder=t,this._readableState.encoding=this._readableState.decoder.encoding;const r=this._readableState.buffer;let n="";for(const e of r)n+=t.write(e);return r.clear(),""!==n&&r.push(n),this._readableState.length=n.length,this},X.prototype.read=function(e){T("read",e),void 0===e?e=NaN:a(e)||(e=s(e,10));const t=this._readableState,r=e;if(e>t.highWaterMark&&(t.highWaterMark=function(e){if(e>1073741824)throw new P("size","<= 1GiB",e);return e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,++e}(e)),0!==e&&(t.state&=-129),0===e&&t.needReadable&&((0!==t.highWaterMark?t.length>=t.highWaterMark:t.length>0)||t.ended))return T("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?ue(this):Z(this),null;if(0===(e=Y(e,t))&&t.ended)return 0===t.length&&ue(this),null;let n,i=!!(t.state&Q);if(T("need readable",i),(0===t.length||t.length-e0?ce(e,t):null,null===n?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.multiAwaitDrain?t.awaitDrainWriters.clear():t.awaitDrainWriters=null),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&ue(this)),null===n||t.errorEmitted||t.closeEmitted||(t.dataEmitted=!0,this.emit("data",n)),n},X.prototype._read=function(e){throw new I("_read()")},X.prototype.pipe=function(e,t){const r=this,i=this._readableState;1===i.pipes.length&&(i.multiAwaitDrain||(i.multiAwaitDrain=!0,i.awaitDrainWriters=new p(i.awaitDrainWriters?[i.awaitDrainWriters]:[]))),i.pipes.push(e),T("pipe count=%d opts=%j",i.pipes.length,t);const a=t&&!1===t.end||e===n.stdout||e===n.stderr?y:o;function o(){T("onend"),e.end()}let s;i.endEmitted?n.nextTick(a):r.once("end",a),e.on("unpipe",(function t(n,a){T("onunpipe"),n===r&&a&&!1===a.hasUnpiped&&(a.hasUnpiped=!0,T("cleanup"),e.removeListener("close",h),e.removeListener("finish",f),s&&e.removeListener("drain",s),e.removeListener("error",d),e.removeListener("unpipe",t),r.removeListener("end",o),r.removeListener("end",y),r.removeListener("data",l),c=!0,s&&i.awaitDrainWriters&&(!e._writableState||e._writableState.needDrain)&&s())}));let c=!1;function u(){c||(1===i.pipes.length&&i.pipes[0]===e?(T("false write response, pause",0),i.awaitDrainWriters=e,i.multiAwaitDrain=!1):i.pipes.length>1&&i.pipes.includes(e)&&(T("false write response, pause",i.awaitDrainWriters.size),i.awaitDrainWriters.add(e)),r.pause()),s||(s=function(e,t){return function(){const r=e._readableState;r.awaitDrainWriters===t?(T("pipeOnDrain",1),r.awaitDrainWriters=null):r.multiAwaitDrain&&(T("pipeOnDrain",r.awaitDrainWriters.size),r.awaitDrainWriters.delete(t)),r.awaitDrainWriters&&0!==r.awaitDrainWriters.size||!e.listenerCount("data")||e.resume()}}(r,e),e.on("drain",s))}function l(t){T("ondata");const r=e.write(t);T("dest.write",r),!1===r&&u()}function d(t){if(T("onerror",t),y(),e.removeListener("error",d),0===e.listenerCount("error")){const r=e._writableState||e._readableState;r&&!r.errorEmitted?B(e,t):e.emit("error",t)}}function h(){e.removeListener("finish",f),y()}function f(){T("onfinish"),e.removeListener("close",h),y()}function y(){T("unpipe"),r.unpipe(e)}return r.on("data",l),b(e,"error",d),e.once("close",h),e.once("finish",f),e.emit("pipe",r),!0===e.writableNeedDrain?u():i.flowing||(T("pipe resume"),r.resume()),e},X.prototype.unpipe=function(e){const t=this._readableState;if(0===t.pipes.length)return this;if(!e){const e=t.pipes;t.pipes=[],this.pause();for(let t=0;t0,!1!==i.flowing&&this.resume()):"readable"===e&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,T("on readable",i.length,i.reading),i.length?Z(this):i.reading||n.nextTick(ie,this))),r},X.prototype.addListener=X.prototype.on,X.prototype.removeListener=function(e,t){const r=m.prototype.removeListener.call(this,e,t);return"readable"===e&&n.nextTick(ne,this),r},X.prototype.off=X.prototype.removeListener,X.prototype.removeAllListeners=function(e){const t=m.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||n.nextTick(ne,this),t},X.prototype.resume=function(){const e=this._readableState;return e.flowing||(T("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,n.nextTick(ae,e,t))}(this,e)),e[M]=!1,this},X.prototype.pause=function(){return T("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(T("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[M]=!0,this},X.prototype.wrap=function(e){let t=!1;e.on("data",(r=>{!this.push(r)&&e.pause&&(t=!0,e.pause())})),e.on("end",(()=>{this.push(null)})),e.on("error",(e=>{B(this,e)})),e.on("close",(()=>{this.destroy()})),e.on("destroy",(()=>{this.destroy()})),this._read=()=>{t&&e.resume&&(t=!1,e.resume())};const r=u(e);for(let t=1;t{"use strict";const{MathFloor:n,NumberIsInteger:i}=r(51473),{validateInteger:a}=r(77840),{ERR_INVALID_ARG_VALUE:o}=r(52590).codes;let s=16384,c=16;function u(e){return e?c:s}e.exports={getHighWaterMark:function(e,t,r,a){const s=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,a,r);if(null!=s){if(!i(s)||s<0)throw new o(a?`options.${r}`:"options.highWaterMark",s);return n(s)}return u(e.objectMode)},getDefaultHighWaterMark:u,setDefaultHighWaterMark:function(e,t){a(t,"value",0),e?c=t:s=t}}},32073:(e,t,r)=>{"use strict";const{ObjectSetPrototypeOf:n,Symbol:i}=r(51473);e.exports=u;const{ERR_METHOD_NOT_IMPLEMENTED:a}=r(52590).codes,o=r(86279),{getHighWaterMark:s}=r(89952);n(u.prototype,o.prototype),n(u,o);const c=i("kCallback");function u(e){if(!(this instanceof u))return new u(e);const t=e?s(this,e,"readableHighWaterMark",!0):null;0===t&&(e={...e,highWaterMark:null,readableHighWaterMark:t,writableHighWaterMark:e.writableHighWaterMark||0}),o.call(this,e),this._readableState.sync=!1,this[c]=null,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush&&(this._flush=e.flush)),this.on("prefinish",d)}function l(e){"function"!=typeof this._flush||this.destroyed?(this.push(null),e&&e()):this._flush(((t,r)=>{t?e?e(t):this.destroy(t):(null!=r&&this.push(r),this.push(null),e&&e())}))}function d(){this._final!==l&&l.call(this)}u.prototype._final=l,u.prototype._transform=function(e,t,r){throw new a("_transform()")},u.prototype._write=function(e,t,r){const n=this._readableState,i=this._writableState,a=n.length;this._transform(e,t,((e,t)=>{e?r(e):(null!=t&&this.push(t),i.ended||a===n.length||n.length{"use strict";const{SymbolAsyncIterator:n,SymbolIterator:i,SymbolFor:a}=r(51473),o=a("nodejs.stream.destroyed"),s=a("nodejs.stream.errored"),c=a("nodejs.stream.readable"),u=a("nodejs.stream.writable"),l=a("nodejs.stream.disturbed"),d=a("nodejs.webstream.isClosedPromise"),p=a("nodejs.webstream.controllerErrorFunction");function h(e,t=!1){var r;return!(!e||"function"!=typeof e.pipe||"function"!=typeof e.on||t&&("function"!=typeof e.pause||"function"!=typeof e.resume)||e._writableState&&!1===(null===(r=e._readableState)||void 0===r?void 0:r.readable)||e._writableState&&!e._readableState)}function f(e){var t;return!(!e||"function"!=typeof e.write||"function"!=typeof e.on||e._readableState&&!1===(null===(t=e._writableState)||void 0===t?void 0:t.writable))}function y(e){return e&&(e._readableState||e._writableState||"function"==typeof e.write&&"function"==typeof e.on||"function"==typeof e.pipe&&"function"==typeof e.on)}function g(e){return!(!e||y(e)||"function"!=typeof e.pipeThrough||"function"!=typeof e.getReader||"function"!=typeof e.cancel)}function m(e){return!(!e||y(e)||"function"!=typeof e.getWriter||"function"!=typeof e.abort)}function b(e){return!(!e||y(e)||"object"!=typeof e.readable||"object"!=typeof e.writable)}function v(e){if(!y(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!!(e.destroyed||e[o]||null!=n&&n.destroyed)}function _(e){if(!f(e))return null;if(!0===e.writableEnded)return!0;const t=e._writableState;return(null==t||!t.errored)&&("boolean"!=typeof(null==t?void 0:t.ended)?null:t.ended)}function w(e,t){if(!h(e))return null;const r=e._readableState;return(null==r||!r.errored)&&("boolean"!=typeof(null==r?void 0:r.endEmitted)?null:!!(r.endEmitted||!1===t&&!0===r.ended&&0===r.length))}function T(e){return e&&null!=e[c]?e[c]:"boolean"!=typeof(null==e?void 0:e.readable)?null:!v(e)&&h(e)&&e.readable&&!w(e)}function S(e){return e&&null!=e[u]?e[u]:"boolean"!=typeof(null==e?void 0:e.writable)?null:!v(e)&&f(e)&&e.writable&&!_(e)}function O(e){return"boolean"==typeof e._closed&&"boolean"==typeof e._defaultKeepAlive&&"boolean"==typeof e._removedConnection&&"boolean"==typeof e._removedContLen}function E(e){return"boolean"==typeof e._sent100&&O(e)}e.exports={isDestroyed:v,kIsDestroyed:o,isDisturbed:function(e){var t;return!(!e||!(null!==(t=e[l])&&void 0!==t?t:e.readableDidRead||e.readableAborted))},kIsDisturbed:l,isErrored:function(e){var t,r,n,i,a,o,c,u,l,d;return!(!e||!(null!==(t=null!==(r=null!==(n=null!==(i=null!==(a=null!==(o=e[s])&&void 0!==o?o:e.readableErrored)&&void 0!==a?a:e.writableErrored)&&void 0!==i?i:null===(c=e._readableState)||void 0===c?void 0:c.errorEmitted)&&void 0!==n?n:null===(u=e._writableState)||void 0===u?void 0:u.errorEmitted)&&void 0!==r?r:null===(l=e._readableState)||void 0===l?void 0:l.errored)&&void 0!==t?t:null===(d=e._writableState)||void 0===d?void 0:d.errored))},kIsErrored:s,isReadable:T,kIsReadable:c,kIsClosedPromise:d,kControllerErrorFunction:p,kIsWritable:u,isClosed:function(e){if(!y(e))return null;if("boolean"==typeof e.closed)return e.closed;const t=e._writableState,r=e._readableState;return"boolean"==typeof(null==t?void 0:t.closed)||"boolean"==typeof(null==r?void 0:r.closed)?(null==t?void 0:t.closed)||(null==r?void 0:r.closed):"boolean"==typeof e._closed&&O(e)?e._closed:null},isDuplexNodeStream:function(e){return!(!e||"function"!=typeof e.pipe||!e._readableState||"function"!=typeof e.on||"function"!=typeof e.write)},isFinished:function(e,t){return y(e)?!(!v(e)&&(!1!==(null==t?void 0:t.readable)&&T(e)||!1!==(null==t?void 0:t.writable)&&S(e))):null},isIterable:function(e,t){return null!=e&&(!0===t?"function"==typeof e[n]:!1===t?"function"==typeof e[i]:"function"==typeof e[n]||"function"==typeof e[i])},isReadableNodeStream:h,isReadableStream:g,isReadableEnded:function(e){if(!h(e))return null;if(!0===e.readableEnded)return!0;const t=e._readableState;return!(!t||t.errored)&&("boolean"!=typeof(null==t?void 0:t.ended)?null:t.ended)},isReadableFinished:w,isReadableErrored:function(e){var t,r;return y(e)?e.readableErrored?e.readableErrored:null!==(t=null===(r=e._readableState)||void 0===r?void 0:r.errored)&&void 0!==t?t:null:null},isNodeStream:y,isWebStream:function(e){return g(e)||m(e)||b(e)},isWritable:S,isWritableNodeStream:f,isWritableStream:m,isWritableEnded:_,isWritableFinished:function(e,t){if(!f(e))return null;if(!0===e.writableFinished)return!0;const r=e._writableState;return(null==r||!r.errored)&&("boolean"!=typeof(null==r?void 0:r.finished)?null:!!(r.finished||!1===t&&!0===r.ended&&0===r.length))},isWritableErrored:function(e){var t,r;return y(e)?e.writableErrored?e.writableErrored:null!==(t=null===(r=e._writableState)||void 0===r?void 0:r.errored)&&void 0!==t?t:null:null},isServerRequest:function(e){var t;return"boolean"==typeof e._consuming&&"boolean"==typeof e._dumped&&void 0===(null===(t=e.req)||void 0===t?void 0:t.upgradeOrConnect)},isServerResponse:E,willEmitClose:function(e){if(!y(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!n&&E(e)||!!(n&&n.autoDestroy&&n.emitClose&&!1===n.closed)},isTransformStream:b}},65605:(e,t,r)=>{const n=r(39907),{ArrayPrototypeSlice:i,Error:a,FunctionPrototypeSymbolHasInstance:o,ObjectDefineProperty:s,ObjectDefineProperties:c,ObjectSetPrototypeOf:u,StringPrototypeToLowerCase:l,Symbol:d,SymbolHasInstance:p}=r(51473);e.exports=C,C.WritableState=D;const{EventEmitter:h}=r(50046),f=r(23054).Stream,{Buffer:y}=r(1048),g=r(16527),{addAbortSignal:m}=r(21434),{getHighWaterMark:b,getDefaultHighWaterMark:v}=r(89952),{ERR_INVALID_ARG_TYPE:_,ERR_METHOD_NOT_IMPLEMENTED:w,ERR_MULTIPLE_CALLBACK:T,ERR_STREAM_CANNOT_PIPE:S,ERR_STREAM_DESTROYED:O,ERR_STREAM_ALREADY_FINISHED:E,ERR_STREAM_NULL_VALUES:x,ERR_STREAM_WRITE_AFTER_END:A,ERR_UNKNOWN_ENCODING:R}=r(52590).codes,{errorOrDestroy:I}=g;function P(){}u(C.prototype,f.prototype),u(C,f);const N=d("kOnFinished");function D(e,t,n){"boolean"!=typeof n&&(n=t instanceof r(86279)),this.objectMode=!(!e||!e.objectMode),n&&(this.objectMode=this.objectMode||!(!e||!e.writableObjectMode)),this.highWaterMark=e?b(this,e,"writableHighWaterMark",n):v(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;const i=!(!e||!1!==e.decodeStrings);this.decodeStrings=!i,this.defaultEncoding=e&&e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=F.bind(void 0,t),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,j(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!e||!1!==e.emitClose,this.autoDestroy=!e||!1!==e.autoDestroy,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[N]=[]}function j(e){e.buffered=[],e.bufferedIndex=0,e.allBuffers=!0,e.allNoop=!0}function C(e){const t=this instanceof r(86279);if(!t&&!o(C,this))return new C(e);this._writableState=new D(e,this,t),e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final),"function"==typeof e.construct&&(this._construct=e.construct),e.signal&&m(e.signal,this)),f.call(this,e),g.construct(this,(()=>{const e=this._writableState;e.writing||V(this,e),$(this,e)}))}function M(e,t,r,i){const a=e._writableState;if("function"==typeof r)i=r,r=a.defaultEncoding;else{if(r){if("buffer"!==r&&!y.isEncoding(r))throw new R(r)}else r=a.defaultEncoding;"function"!=typeof i&&(i=P)}if(null===t)throw new x;if(!a.objectMode)if("string"==typeof t)!1!==a.decodeStrings&&(t=y.from(t,r),r="buffer");else if(t instanceof y)r="buffer";else{if(!f._isUint8Array(t))throw new _("chunk",["string","Buffer","Uint8Array"],t);t=f._uint8ArrayToBuffer(t),r="buffer"}let o;return a.ending?o=new A:a.destroyed&&(o=new O("write")),o?(n.nextTick(i,o),I(e,o,!0),o):(a.pendingcb++,function(e,t,r,n,i){const a=t.objectMode?1:r.length;t.length+=a;const o=t.lengthr.bufferedIndex&&V(e,r),i?null!==r.afterWriteTickInfo&&r.afterWriteTickInfo.cb===a?r.afterWriteTickInfo.count++:(r.afterWriteTickInfo={count:1,cb:a,stream:e,state:r},n.nextTick(B,r.afterWriteTickInfo)):U(e,r,1,a))):I(e,new T)}function B({stream:e,state:t,count:r,cb:n}){return t.afterWriteTickInfo=null,U(e,t,r,n)}function U(e,t,r,n){for(!t.ending&&!e.destroyed&&0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"));r-- >0;)t.pendingcb--,n();t.destroyed&&q(t),$(e,t)}function q(e){if(e.writing)return;for(let r=e.bufferedIndex;r1&&e._writev){t.pendingcb-=o-1;const n=t.allNoop?P:e=>{for(let t=s;t256?(r.splice(0,s),t.bufferedIndex=0):t.bufferedIndex=s}t.bufferProcessing=!1}function Q(e){return e.ending&&!e.destroyed&&e.constructed&&0===e.length&&!e.errored&&0===e.buffered.length&&!e.finished&&!e.writing&&!e.errorEmitted&&!e.closeEmitted}function $(e,t,r){Q(t)&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.finalCalled=!0,function(e,t){let r=!1;function i(i){if(r)I(e,null!=i?i:T());else if(r=!0,t.pendingcb--,i){const r=t[N].splice(0);for(let e=0;e{Q(t)?H(e,t):t.pendingcb--}),e,t)):Q(t)&&(t.pendingcb++,H(e,t))))}function H(e,t){t.pendingcb--,t.finished=!0;const r=t[N].splice(0);for(let e=0;e{"use strict";const{ArrayIsArray:n,ArrayPrototypeIncludes:i,ArrayPrototypeJoin:a,ArrayPrototypeMap:o,NumberIsInteger:s,NumberIsNaN:c,NumberMAX_SAFE_INTEGER:u,NumberMIN_SAFE_INTEGER:l,NumberParseInt:d,ObjectPrototypeHasOwnProperty:p,RegExpPrototypeExec:h,String:f,StringPrototypeToUpperCase:y,StringPrototypeTrim:g}=r(51473),{hideStackFrames:m,codes:{ERR_SOCKET_BAD_PORT:b,ERR_INVALID_ARG_TYPE:v,ERR_INVALID_ARG_VALUE:_,ERR_OUT_OF_RANGE:w,ERR_UNKNOWN_SIGNAL:T}}=r(52590),{normalizeEncoding:S}=r(46609),{isAsyncFunction:O,isArrayBufferView:E}=r(46609).types,x={},A=/^[0-7]+$/,R=m(((e,t,r=l,n=u)=>{if("number"!=typeof e)throw new v(t,"number",e);if(!s(e))throw new w(t,"an integer",e);if(en)throw new w(t,`>= ${r} && <= ${n}`,e)})),I=m(((e,t,r=-2147483648,n=2147483647)=>{if("number"!=typeof e)throw new v(t,"number",e);if(!s(e))throw new w(t,"an integer",e);if(en)throw new w(t,`>= ${r} && <= ${n}`,e)})),P=m(((e,t,r=!1)=>{if("number"!=typeof e)throw new v(t,"number",e);if(!s(e))throw new w(t,"an integer",e);const n=r?1:0,i=4294967295;if(ei)throw new w(t,`>= ${n} && <= ${i}`,e)}));function N(e,t){if("string"!=typeof e)throw new v(t,"string",e)}const D=m(((e,t,r)=>{if(!i(r,e)){const n=a(o(r,(e=>"string"==typeof e?`'${e}'`:f(e))),", ");throw new _(t,e,"must be one of: "+n)}}));function j(e,t){if("boolean"!=typeof e)throw new v(t,"boolean",e)}function C(e,t,r){return null!=e&&p(e,t)?e[t]:r}const M=m(((e,t,r=null)=>{const i=C(r,"allowArray",!1),a=C(r,"allowFunction",!1);if(!C(r,"nullable",!1)&&null===e||!i&&n(e)||"object"!=typeof e&&(!a||"function"!=typeof e))throw new v(t,"Object",e)})),L=m(((e,t)=>{if(null!=e&&"object"!=typeof e&&"function"!=typeof e)throw new v(t,"a dictionary",e)})),k=m(((e,t,r=0)=>{if(!n(e))throw new v(t,"Array",e);if(e.length{if(!E(e))throw new v(t,["Buffer","TypedArray","DataView"],e)})),B=m(((e,t)=>{if(void 0!==e&&(null===e||"object"!=typeof e||!("aborted"in e)))throw new v(t,"AbortSignal",e)})),U=m(((e,t)=>{if("function"!=typeof e)throw new v(t,"Function",e)})),q=m(((e,t)=>{if("function"!=typeof e||O(e))throw new v(t,"Function",e)})),V=m(((e,t)=>{if(void 0!==e)throw new v(t,"undefined",e)})),Q=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function $(e,t){if(void 0===e||!h(Q,e))throw new _(t,e,'must be an array or string of format "; rel=preload; as=style"')}e.exports={isInt32:function(e){return e===(0|e)},isUint32:function(e){return e===e>>>0},parseFileMode:function(e,t,r){if(void 0===e&&(e=r),"string"==typeof e){if(null===h(A,e))throw new _(t,e,"must be a 32-bit unsigned integer or an octal string");e=d(e,8)}return P(e,t),e},validateArray:k,validateStringArray:function(e,t){k(e,t);for(let r=0;rn||(null!=r||null!=n)&&c(e))throw new w(t,`${null!=r?`>= ${r}`:""}${null!=r&&null!=n?" && ":""}${null!=n?`<= ${n}`:""}`,e)},validateObject:M,validateOneOf:D,validatePlainFunction:q,validatePort:function(e,t="Port",r=!0){if("number"!=typeof e&&"string"!=typeof e||"string"==typeof e&&0===g(e).length||+e!=+e>>>0||e>65535||0===e&&!r)throw new b(t,e,r);return 0|e},validateSignalName:function(e,t="signal"){if(N(e,t),void 0===x[e]){if(void 0!==x[y(e)])throw new T(e+" (signals must use all capital letters)");throw new T(e)}},validateString:N,validateUint32:P,validateUndefined:V,validateUnion:function(e,t,r){if(!i(r,e))throw new v(t,`('${a(r,"|")}')`,e)},validateAbortSignal:B,validateLinkHeaderValue:function(e){if("string"==typeof e)return $(e,"hints"),e;if(n(e)){const t=e.length;let r="";if(0===t)return r;for(let n=0;n; rel=preload; as=style"')}}},58521:(e,t,r)=>{"use strict";const n=r(50601),i=r(2010),a=n.Readable.destroy;e.exports=n.Readable,e.exports._uint8ArrayToBuffer=n._uint8ArrayToBuffer,e.exports._isUint8Array=n._isUint8Array,e.exports.isDisturbed=n.isDisturbed,e.exports.isErrored=n.isErrored,e.exports.isReadable=n.isReadable,e.exports.Readable=n.Readable,e.exports.Writable=n.Writable,e.exports.Duplex=n.Duplex,e.exports.Transform=n.Transform,e.exports.PassThrough=n.PassThrough,e.exports.addAbortSignal=n.addAbortSignal,e.exports.finished=n.finished,e.exports.destroy=n.destroy,e.exports.destroy=a,e.exports.pipeline=n.pipeline,e.exports.compose=n.compose,Object.defineProperty(n,"promises",{configurable:!0,enumerable:!0,get:()=>i}),e.exports.Stream=n.Stream,e.exports.default=e.exports},52590:(e,t,r)=>{"use strict";const{format:n,inspect:i,AggregateError:a}=r(46609),o=globalThis.AggregateError||a,s=Symbol("kIsNodeError"),c=["string","function","number","object","Function","Object","boolean","bigint","symbol"],u=/^([A-Z][a-z0-9]*)+$/,l={};function d(e,t){if(!e)throw new l.ERR_INTERNAL_ASSERTION(t)}function p(e){let t="",r=e.length;const n="-"===e[0]?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function h(e,t,r){r||(r=Error);class i extends r{constructor(...r){super(function(e,t,r){if("function"==typeof t)return d(t.length<=r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${t.length}).`),t(...r);const i=(t.match(/%[dfijoOs]/g)||[]).length;return d(i===r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${i}).`),0===r.length?t:n(t,...r)}(e,t,r))}toString(){return`${this.name} [${e}]: ${this.message}`}}Object.defineProperties(i.prototype,{name:{value:r.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${e}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),i.prototype.code=e,i.prototype[s]=!0,l[e]=i}function f(e){const t="__node_internal_"+e.name;return Object.defineProperty(e,"name",{value:t}),e}class y extends Error{constructor(e="The operation was aborted",t=void 0){if(void 0!==t&&"object"!=typeof t)throw new l.ERR_INVALID_ARG_TYPE("options","Object",t);super(e,t),this.code="ABORT_ERR",this.name="AbortError"}}h("ERR_ASSERTION","%s",Error),h("ERR_INVALID_ARG_TYPE",((e,t,r)=>{d("string"==typeof e,"'name' must be a string"),Array.isArray(t)||(t=[t]);let n="The ";e.endsWith(" argument")?n+=`${e} `:n+=`"${e}" ${e.includes(".")?"property":"argument"} `,n+="must be ";const a=[],o=[],s=[];for(const e of t)d("string"==typeof e,"All expected entries have to be of type string"),c.includes(e)?a.push(e.toLowerCase()):u.test(e)?o.push(e):(d("object"!==e,'The value "object" should be written as "Object"'),s.push(e));if(o.length>0){const e=a.indexOf("object");-1!==e&&(a.splice(a,e,1),o.push("Object"))}if(a.length>0){switch(a.length){case 1:n+=`of type ${a[0]}`;break;case 2:n+=`one of type ${a[0]} or ${a[1]}`;break;default:{const e=a.pop();n+=`one of type ${a.join(", ")}, or ${e}`}}(o.length>0||s.length>0)&&(n+=" or ")}if(o.length>0){switch(o.length){case 1:n+=`an instance of ${o[0]}`;break;case 2:n+=`an instance of ${o[0]} or ${o[1]}`;break;default:{const e=o.pop();n+=`an instance of ${o.join(", ")}, or ${e}`}}s.length>0&&(n+=" or ")}switch(s.length){case 0:break;case 1:s[0].toLowerCase()!==s[0]&&(n+="an "),n+=`${s[0]}`;break;case 2:n+=`one of ${s[0]} or ${s[1]}`;break;default:{const e=s.pop();n+=`one of ${s.join(", ")}, or ${e}`}}if(null==r)n+=`. Received ${r}`;else if("function"==typeof r&&r.name)n+=`. Received function ${r.name}`;else if("object"==typeof r){var l;null!==(l=r.constructor)&&void 0!==l&&l.name?n+=`. Received an instance of ${r.constructor.name}`:n+=`. Received ${i(r,{depth:-1})}`}else{let e=i(r,{colors:!1});e.length>25&&(e=`${e.slice(0,25)}...`),n+=`. Received type ${typeof r} (${e})`}return n}),TypeError),h("ERR_INVALID_ARG_VALUE",((e,t,r="is invalid")=>{let n=i(t);return n.length>128&&(n=n.slice(0,128)+"..."),`The ${e.includes(".")?"property":"argument"} '${e}' ${r}. Received ${n}`}),TypeError),h("ERR_INVALID_RETURN_VALUE",((e,t,r)=>{var n;return`Expected ${e} to be returned from the "${t}" function but got ${null!=r&&null!==(n=r.constructor)&&void 0!==n&&n.name?`instance of ${r.constructor.name}`:"type "+typeof r}.`}),TypeError),h("ERR_MISSING_ARGS",((...e)=>{let t;d(e.length>0,"At least one arg needs to be specified");const r=e.length;switch(e=(Array.isArray(e)?e:[e]).map((e=>`"${e}"`)).join(" or "),r){case 1:t+=`The ${e[0]} argument`;break;case 2:t+=`The ${e[0]} and ${e[1]} arguments`;break;default:{const r=e.pop();t+=`The ${e.join(", ")}, and ${r} arguments`}}return`${t} must be specified`}),TypeError),h("ERR_OUT_OF_RANGE",((e,t,r)=>{let n;return d(t,'Missing "range" argument'),Number.isInteger(r)&&Math.abs(r)>2**32?n=p(String(r)):"bigint"==typeof r?(n=String(r),(r>2n**32n||r<-(2n**32n))&&(n=p(n)),n+="n"):n=i(r),`The value of "${e}" is out of range. It must be ${t}. Received ${n}`}),RangeError),h("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),h("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),h("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),h("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),h("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),h("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),h("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),h("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),h("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),h("ERR_STREAM_WRITE_AFTER_END","write after end",Error),h("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),e.exports={AbortError:y,aggregateTwoErrors:f((function(e,t){if(e&&t&&e!==t){if(Array.isArray(t.errors))return t.errors.push(e),t;const r=new o([t,e],t.message);return r.code=t.code,r}return e||t})),hideStackFrames:f,codes:l}},51473:e=>{"use strict";e.exports={ArrayIsArray:e=>Array.isArray(e),ArrayPrototypeIncludes:(e,t)=>e.includes(t),ArrayPrototypeIndexOf:(e,t)=>e.indexOf(t),ArrayPrototypeJoin:(e,t)=>e.join(t),ArrayPrototypeMap:(e,t)=>e.map(t),ArrayPrototypePop:(e,t)=>e.pop(t),ArrayPrototypePush:(e,t)=>e.push(t),ArrayPrototypeSlice:(e,t,r)=>e.slice(t,r),Error,FunctionPrototypeCall:(e,t,...r)=>e.call(t,...r),FunctionPrototypeSymbolHasInstance:(e,t)=>Function.prototype[Symbol.hasInstance].call(e,t),MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties:(e,t)=>Object.defineProperties(e,t),ObjectDefineProperty:(e,t,r)=>Object.defineProperty(e,t,r),ObjectGetOwnPropertyDescriptor:(e,t)=>Object.getOwnPropertyDescriptor(e,t),ObjectKeys:e=>Object.keys(e),ObjectSetPrototypeOf:(e,t)=>Object.setPrototypeOf(e,t),Promise,PromisePrototypeCatch:(e,t)=>e.catch(t),PromisePrototypeThen:(e,t,r)=>e.then(t,r),PromiseReject:e=>Promise.reject(e),PromiseResolve:e=>Promise.resolve(e),ReflectApply:Reflect.apply,RegExpPrototypeTest:(e,t)=>e.test(t),SafeSet:Set,String,StringPrototypeSlice:(e,t,r)=>e.slice(t,r),StringPrototypeToLowerCase:e=>e.toLowerCase(),StringPrototypeToUpperCase:e=>e.toUpperCase(),StringPrototypeTrim:e=>e.trim(),Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,SymbolDispose:Symbol.dispose||Symbol("Symbol.dispose"),SymbolAsyncDispose:Symbol.asyncDispose||Symbol("Symbol.asyncDispose"),TypedArrayPrototypeSet:(e,t,r)=>e.set(t,r),Boolean,Uint8Array}},46609:(e,t,r)=>{"use strict";const n=r(1048),{kResistStopPropagation:i,SymbolDispose:a}=r(51473),o=globalThis.AbortSignal||r(67083).AbortSignal,s=globalThis.AbortController||r(67083).AbortController,c=Object.getPrototypeOf((async function(){})).constructor,u=globalThis.Blob||n.Blob,l=void 0!==u?function(e){return e instanceof u}:function(e){return!1},d=(e,t)=>{if(void 0!==e&&(null===e||"object"!=typeof e||!("aborted"in e)))throw new ERR_INVALID_ARG_TYPE(t,"AbortSignal",e)};class p extends Error{constructor(e){if(!Array.isArray(e))throw new TypeError("Expected input to be an Array, got "+typeof e);let t="";for(let r=0;r{e=r,t=n})),resolve:e,reject:t}},promisify:e=>new Promise(((t,r)=>{e(((e,...n)=>e?r(e):t(...n)))})),debuglog:()=>function(){},format:(e,...t)=>e.replace(/%([sdifj])/g,(function(...[e,r]){const n=t.shift();return"f"===r?n.toFixed(6):"j"===r?JSON.stringify(n):"s"===r&&"object"==typeof n?`${n.constructor!==Object?n.constructor.name:""} {}`.trim():n.toString()})),inspect(e){switch(typeof e){case"string":if(e.includes("'")){if(!e.includes('"'))return`"${e}"`;if(!e.includes("`")&&!e.includes("${"))return`\`${e}\``}return`'${e}'`;case"number":return isNaN(e)?"NaN":Object.is(e,-0)?String(e):e;case"bigint":return`${String(e)}n`;case"boolean":case"undefined":return String(e);case"object":return"{}"}},types:{isAsyncFunction:e=>e instanceof c,isArrayBufferView:e=>ArrayBuffer.isView(e)},isBlob:l,deprecate:(e,t)=>e,addAbortListener:r(50046).addAbortListener||function(e,t){if(void 0===e)throw new ERR_INVALID_ARG_TYPE("signal","AbortSignal",e);let r;return d(e,"signal"),((e,t)=>{if("function"!=typeof e)throw new ERR_INVALID_ARG_TYPE("listener","Function",e)})(t),e.aborted?queueMicrotask((()=>t())):(e.addEventListener("abort",t,{__proto__:null,once:!0,[i]:!0}),r=()=>{e.removeEventListener("abort",t)}),{__proto__:null,[a](){var e;null===(e=r)||void 0===e||e()}}},AbortSignalAny:o.any||function(e){if(1===e.length)return e[0];const t=new s,r=()=>t.abort();return e.forEach((e=>{d(e,"signals"),e.addEventListener("abort",r,{once:!0})})),t.signal.addEventListener("abort",(()=>{e.forEach((e=>e.removeEventListener("abort",r)))}),{once:!0}),t.signal}},e.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")},50601:(e,t,r)=>{const{Buffer:n}=r(1048),{ObjectDefineProperty:i,ObjectKeys:a,ReflectApply:o}=r(51473),{promisify:{custom:s}}=r(46609),{streamReturningOperators:c,promiseReturningOperators:u}=r(64708),{codes:{ERR_ILLEGAL_CONSTRUCTOR:l}}=r(52590),d=r(67369),{setDefaultHighWaterMark:p,getDefaultHighWaterMark:h}=r(89952),{pipeline:f}=r(16815),{destroyer:y}=r(16527),g=r(94869),m=r(2010),b=r(92520),v=e.exports=r(23054).Stream;v.isDestroyed=b.isDestroyed,v.isDisturbed=b.isDisturbed,v.isErrored=b.isErrored,v.isReadable=b.isReadable,v.isWritable=b.isWritable,v.Readable=r(11509);for(const T of a(c)){const S=c[T];function _(...e){if(new.target)throw l();return v.Readable.from(o(S,this,e))}i(_,"name",{__proto__:null,value:S.name}),i(_,"length",{__proto__:null,value:S.length}),i(v.Readable.prototype,T,{__proto__:null,value:_,enumerable:!1,configurable:!0,writable:!0})}for(const O of a(u)){const E=u[O];function _(...e){if(new.target)throw l();return o(E,this,e)}i(_,"name",{__proto__:null,value:E.name}),i(_,"length",{__proto__:null,value:E.length}),i(v.Readable.prototype,O,{__proto__:null,value:_,enumerable:!1,configurable:!0,writable:!0})}v.Writable=r(65605),v.Duplex=r(86279),v.Transform=r(32073),v.PassThrough=r(76587),v.pipeline=f;const{addAbortSignal:w}=r(21434);v.addAbortSignal=w,v.finished=g,v.destroy=y,v.compose=d,v.setDefaultHighWaterMark=p,v.getDefaultHighWaterMark=h,i(v,"promises",{__proto__:null,configurable:!0,enumerable:!0,get:()=>m}),i(f,s,{__proto__:null,enumerable:!0,get:()=>m.pipeline}),i(g,s,{__proto__:null,enumerable:!0,get:()=>m.finished}),v.Stream=v,v._isUint8Array=function(e){return e instanceof Uint8Array},v._uint8ArrayToBuffer=function(e){return n.from(e.buffer,e.byteOffset,e.byteLength)}},2010:(e,t,r)=>{"use strict";const{ArrayPrototypePop:n,Promise:i}=r(51473),{isIterable:a,isNodeStream:o,isWebStream:s}=r(92520),{pipelineImpl:c}=r(16815),{finished:u}=r(94869);r(50601),e.exports={finished:u,pipeline:function(...e){return new i(((t,r)=>{let i,u;const l=e[e.length-1];if(l&&"object"==typeof l&&!o(l)&&!a(l)&&!s(l)){const t=n(e);i=t.signal,u=t.end}c(e,((e,n)=>{e?r(e):t(n)}),{signal:i,end:u})}))}}},9929:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(29365),t)},29365:(e,t)=>{"use strict";function r(e){const t=[];let r=0;for(;re.join(""))).join("/")}function n(e,t){let n=t+1;t>=0?"/"===e[t+1]&&"/"===e[t+2]&&(n=t+3):"/"===e[0]&&"/"===e[1]&&(n=2);const i=e.indexOf("/",n);return i<0?e:e.substr(0,i)+r(e.substr(i))}function i(e){return!e||"#"===e||"?"===e||"/"===e}Object.defineProperty(t,"__esModule",{value:!0}),t.removeDotSegmentsOfPath=t.removeDotSegments=t.resolve=void 0,t.resolve=function(e,t){const i=(t=t||"").indexOf("#");if(i>0&&(t=t.substr(0,i)),!e.length){if(t.indexOf(":")<0)throw new Error(`Found invalid baseIRI '${t}' for value '${e}'`);return t}if(e.startsWith("?")){const r=t.indexOf("?");return r>0&&(t=t.substr(0,r)),t+e}if(e.startsWith("#"))return t+e;if(!t.length){const t=e.indexOf(":");if(t<0)throw new Error(`Found invalid relative IRI '${e}' for a missing baseIRI`);return n(e,t)}const a=e.indexOf(":");if(a>=0)return n(e,a);const o=t.indexOf(":");if(o<0)throw new Error(`Found invalid baseIRI '${t}' for value '${e}'`);const s=t.substr(0,o+1);if(0===e.indexOf("//"))return s+n(e,a);let c;if(t.indexOf("//",o)===o+1){if(c=t.indexOf("/",o+3),c<0)return t.length>o+3?t+"/"+n(e,a):s+n(e,a)}else if(c=t.indexOf("/",o+1),c<0)return s+n(e,a);if(0===e.indexOf("/"))return t.substr(0,c)+r(e);let u=t.substr(c);const l=u.lastIndexOf("/");return l>=0&&l{var n=r(1048),i=n.Buffer;function a(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=n:(a(n,t),t.Buffer=o),o.prototype=Object.create(i.prototype),a(i,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var n=i(e);return void 0!==t?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},21925:e=>{var t=function(){var e=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r},t=[7,12,13,14,15,16,20,25,115,130],r=[7,13,16,20,25,115,130],n=[7,13,16,115,130],i=[1,25],a=[1,29],o=[1,27],s=[1,28],c=[13,16,115,130],u=[13,16,28,38,40,42,44,46,48,53,56,61,67,85,87,92,93,95,96,102,110,111,115,119,120,126,128,129,130,131,132,133,134,135,136],l=[28,56],d=[1,42],p=[46,48,53,56],h=[1,54],f=[1,60],y=[1,56],g=[1,57],m=[1,58],b=[1,63],v=[1,64],_=[1,65],w=[1,66],T=[1,67],S=[1,68],O=[1,75],E=[28,46,48,53,56],x=[28,42,46,48,53,56],A=[13,16,28,38,40,42,44,46,48,53,56,92,115,119,120,130,131,132,133,134,135,136],R=[13,16,28,38,40,42,44,46,48,53,56,67,85,87,92,95,96,115,119,120,126,128,129,130,131,132,133,134,135,136],I=[13,16,38,40,44,92,115,119,120,130,131,132,133,134,135,136],P=[13,16,28,38,40,42,44,46,48,53,56,67,85,87,92,95,96,115,117,118,119,120,126,128,129,130,131,132,133,134,135,136],N=[13,16,28,56,115,130],D=[13,16,38,58,87,96,109,115,126,130],j=[1,116],C=[1,112],M=[1,108],L=[1,114],k=[1,111],F=[7,13,16,20,25,44,48,53,56,67,85,87,95,96,115,128,129,130],B=[48,53],U=[48,53,87,96,126],q=[13,16,44,48,53,56,85,87,95,96,115,128,129,130],V=[1,126],Q=[13,16,40,44,48,53,56,85,87,95,96,115,128,129,130],$=[1,129],H=[48,53,67,87,96,126],G=[13,16,40,44,48,53,56,67,85,87,95,96,115,128,129,130],z=[1,133],K=[13,16,40,44,48,53,56,67,85,87,95,96,102,115,128,129,130],X=[13,16,40,44,48,53,56,67,85,87,93,95,96,102,110,111,115,128,129,130],J=[1,151],W=[1,153],Y=[1,156],Z=[1,157],ee=[1,158],te=[1,167],re=[1,175],ne=[13,16,44,48,53,56,67,85,87,95,96,115,128,129,130],ie=[13,16,44,48,53,56,67,85,87,95,96,115,126,128,129,130],ae=[13,16,46,92,115,119,120,130,131,132,133,134,135,136],oe={trace:function(){},yy:{},symbols_:{error:2,shaclDoc:3,shaclDoc_repetition0:4,shaclDoc_repetition1:5,ttlSection:6,EOF:7,directive:8,baseDecl:9,importsDecl:10,prefixDecl:11,KW_BASE:12,IRIREF:13,KW_IMPORTS:14,KW_PREFIX:15,PNAME_NS:16,nodeShapeIri:17,iri:18,nodeShape:19,KW_SHAPE:20,nodeShape_option0:21,nodeShape_option1:22,nodeShapeBody:23,shapeClass:24,KW_SHAPE_CLASS:25,shapeClass_option0:26,turtleAnnotation:27,";":28,turtleAnnotation2:29,predicate:30,turtleAnnotation2_option0:31,objectList:32,object:33,objectList_repetition0:34,iriOrLiteral:35,blankNodeSection:36,list:37,"(":38,list_repetition0:39,")":40,objectTail:41,",":42,LB:43,"[":44,RB:45,"]":46,LP:47,"%":48,RP:49,pcSection:50,iriHead:51,ttlStatement:52,".":53,ttlSection_repetition0:54,startNodeShape:55,"{":56,endNodeShape:57,"}":58,nodeShapeBody_repetition0:59,targetClass:60,"->":61,targetClass_repetition_plus0:62,constraint:63,constraint_group0:64,constraint_option0:65,orNotComponent:66,"|":67,nodeNot:68,nodeOrEmit:69,nodeOr:70,nodeOr_repetition_plus0:71,nodeValue:72,negation:73,nodeValue_group0:74,"=":75,iriOrLiteralOrArray:76,propertyShape:77,path:78,propertyShape_repetition0:79,propertyOrComponent:80,propertyNot:81,propertyOr:82,propertyOr_repetition_plus0:83,propertyAtom:84,NODEKIND:85,shapeRef:86,PARAM:87,propertyCount:88,propertyMinCount:89,"..":90,propertyMaxCount:91,INTEGER:92,"*":93,shapeRef_group0:94,"@":95,"!":96,pathAlternative:97,additionalAlternative:98,pathSequence:99,pathAlternative_repetition_plus0:100,additionalSequence:101,"/":102,pathEltOrInverse:103,pathSequence_repetition_plus0:104,pathElt:105,pathPrimary:106,pathMod:107,pathInverse:108,"^":109,"?":110,"+":111,iriOrLiteralOrArray_repetition0:112,literal:113,iri_group0:114,a:115,string:116,LANGTAG:117,"^^":118,DECIMAL:119,DOUBLE:120,literal_group0:121,string_group0:122,string_group1:123,shaclDoc_repetition1_group0:124,constraint_group0_repetition_plus0:125,TARGET:126,propertyShape_repetition0_group0:127,ATPNAME_LN:128,ATPNAME_NS:129,PNAME_LN:130,KW_TRUE:131,KW_FALSE:132,STRING_LITERAL1:133,STRING_LITERAL2:134,STRING_LITERAL_LONG1:135,STRING_LITERAL_LONG2:136,$accept:0,$end:1},terminals_:{2:"error",7:"EOF",12:"KW_BASE",13:"IRIREF",14:"KW_IMPORTS",15:"KW_PREFIX",16:"PNAME_NS",20:"KW_SHAPE",25:"KW_SHAPE_CLASS",28:";",38:"(",40:")",42:",",44:"[",46:"]",48:"%",53:".",56:"{",58:"}",61:"->",67:"|",75:"=",85:"NODEKIND",87:"PARAM",90:"..",92:"INTEGER",93:"*",95:"@",96:"!",102:"/",109:"^",110:"?",111:"+",115:"a",117:"LANGTAG",118:"^^",119:"DECIMAL",120:"DOUBLE",126:"TARGET",128:"ATPNAME_LN",129:"ATPNAME_NS",130:"PNAME_LN",131:"KW_TRUE",132:"KW_FALSE",133:"STRING_LITERAL1",134:"STRING_LITERAL2",135:"STRING_LITERAL_LONG1",136:"STRING_LITERAL_LONG2"},productions_:[0,[3,4],[8,1],[8,1],[8,1],[9,2],[10,2],[11,3],[17,1],[19,5],[24,4],[27,2],[29,2],[30,2],[32,2],[33,1],[33,1],[33,1],[37,3],[41,2],[43,1],[45,1],[36,3],[47,1],[49,1],[50,3],[51,1],[52,3],[6,1],[55,1],[57,1],[23,3],[60,2],[63,3],[66,2],[69,1],[70,1],[70,2],[68,1],[68,2],[72,3],[77,2],[80,2],[82,1],[82,2],[81,1],[81,2],[84,1],[84,1],[84,1],[84,3],[84,1],[88,5],[89,1],[91,1],[91,1],[86,1],[86,2],[73,1],[78,1],[98,2],[97,1],[97,2],[101,2],[99,1],[99,2],[105,1],[105,2],[103,1],[103,2],[108,1],[107,1],[107,1],[107,1],[106,1],[106,3],[76,1],[76,3],[35,1],[35,1],[18,1],[18,1],[18,1],[113,1],[113,2],[113,3],[113,1],[113,1],[113,1],[113,1],[116,1],[116,1],[4,0],[4,2],[124,1],[124,1],[5,0],[5,2],[21,0],[21,1],[22,0],[22,1],[26,0],[26,1],[31,0],[31,1],[34,0],[34,2],[39,0],[39,2],[54,0],[54,2],[59,0],[59,2],[62,1],[62,2],[125,1],[125,2],[64,1],[64,1],[65,0],[65,1],[71,1],[71,2],[74,1],[74,1],[127,1],[127,1],[79,0],[79,2],[83,1],[83,2],[94,1],[94,1],[100,1],[100,2],[104,1],[104,2],[112,0],[112,2],[114,1],[114,1],[121,1],[121,1],[122,1],[122,1],[123,1],[123,1]],performAction:function(e,t,r,n,i,a,o){var s,c,u=a.length-1;switch(i){case 1:this.$=Re(De.factory.namedNode(Te("")),De.factory.namedNode(ce),De.factory.namedNode(be+"Ontology"));break;case 5:De.base=De.factory.namedNode(a[u].slice(1,-1)),De.n3Parser._setBase(De.base.value);break;case 6:this.$=Re(De.base,De.factory.namedNode(be+"imports"),De.factory.namedNode(a[u].slice(1,-1)));break;case 7:this.$=De.prefixes[a[u-1].substr(0,a[u-1].length-1)]=Te(a[u]);break;case 8:De.nodeShapeStack=!1,Re(De.currentNodeShape=a[u],De.factory.namedNode(ce),De.factory.namedNode(me+"NodeShape"));break;case 10:this.$=Re(De.currentNodeShape,De.factory.namedNode(ce),De.factory.namedNode(ve+"Class"));break;case 11:this.$=Pe();break;case 13:this.$=a[u].forEach((e=>Re(De.currentNodeShape,a[u-1],e)));break;case 14:this.$=[a[u-1],...a[u]];break;case 18:this.$=we(a[u-1],!0);break;case 19:case 34:case 42:case 60:case 63:this.$=a[u];break;case 20:De.tempCurrentNodeShape=De.currentNodeShape,this.$=De.currentNodeShape=Ee();break;case 21:case 24:De.currentNodeShape=De.tempCurrentNodeShape;break;case 22:case 31:this.$=a[u-2];break;case 23:De.tempCurrentNodeShape=De.currentNodeShape,De.currentNodeShape=De.currentPropertyNode;break;case 26:De.currentNodeShape=a[u];break;case 29:De.nodeShapeStack?(De.nodeShapeStack.push(De.currentNodeShape),Re(De.currentPropertyNode,De.factory.namedNode(me+"node"),De.currentNodeShape=Ee())):De.nodeShapeStack=[],this.$=De.currentNodeShape;break;case 30:De.nodeShapeStack.length>0&&(De.currentNodeShape=De.nodeShapeStack.pop());break;case 32:this.$=a[u].forEach((e=>{Re(De.currentNodeShape,De.factory.namedNode(me+"targetClass"),e)}));break;case 35:this.$=Re(De.currentNodeShape,De.factory.namedNode(me+a[u][0]),a[u][1]);break;case 36:break;case 37:const e=we([a[u-1],...a[u]].map((e=>{const t=Ee();return Re(t,De.factory.namedNode(me+e[0]),e[1]),t})));this.$=["or",e];break;case 39:case 46:this.$=function(e,t,r){const n=Ee();return Re(n,De.factory.namedNode(me+t),r),[e,n]}("not",...a[u]);break;case 40:case 50:this.$=[a[u-2],a[u]];break;case 43:this.$=a[u]&&Ie(...a[u]);break;case 44:this.$=Ie("or",we([a[u-1],...a[u]].map((e=>{const t=Ee();return Re(t,De.factory.namedNode(me+e[0]),e[1]),t}))));break;case 47:this.$=[_e[a[u].value]?"datatype":"class",a[u]];break;case 48:this.$=["nodeKind",De.factory.namedNode(me+a[u])];break;case 49:this.$=["node",De.factory.namedNode(a[u])];break;case 51:this.$=void 0;break;case 53:this.$=a[u]>0&&Ie("minCount",Oe(a[u],he));break;case 54:this.$=Ie("maxCount",Oe(a[u],he));break;case 56:this.$=Se(a[u].slice(1));break;case 57:this.$=Te(a[u]);break;case 59:Re(De.currentNodeShape,De.factory.namedNode(me+"property"),De.currentPropertyNode=Ee()),Ie("path",a[u]);break;case 62:const t=Ee();Re(t,De.factory.namedNode(me+"alternativePath"),we([a[u-1],...a[u]])),this.$=t;break;case 65:this.$=we([a[u-1],...a[u]]);break;case 67:Re(this.$=Ee(),De.factory.namedNode(me+a[u]),a[u-1]);break;case 69:Re(this.$=Ee(),De.factory.namedNode(me+"inversePath"),a[u]);break;case 71:this.$="zeroOrOnePath";break;case 72:this.$="zeroOrMorePath";break;case 73:this.$="oneOrMorePath";break;case 75:this.$=a[u-1];break;case 77:this.$=we(a[u-1]);break;case 80:this.$=De.factory.namedNode(Te(a[u]));break;case 81:this.$=De.factory.namedNode(Se(a[u]));break;case 82:this.$=Pe(De.factory.namedNode(ce));break;case 83:this.$=Oe(a[u]);break;case 84:this.$=(s=a[u-1],c=lowercase(a[u].substr(1)),De.factory.literal(s,c));break;case 85:this.$=Oe(a[u-2],a[u]);break;case 86:this.$=Oe(a[u],he);break;case 87:this.$=Oe(a[u],fe);break;case 88:this.$=Oe(a[u].toLowerCase(),ye);break;case 89:this.$=Oe(a[u].toLowerCase(),ge);break;case 90:this.$=Ae(a[u],1);break;case 91:this.$=Ae(a[u],3);break;case 92:case 96:case 106:case 108:case 110:case 112:case 128:case 138:this.$=[];break;case 93:case 97:case 107:case 109:case 111:case 113:case 115:case 117:case 123:case 129:case 131:case 135:case 137:case 139:a[u-1].push(a[u]);break;case 114:case 116:case 122:case 130:case 134:case 136:this.$=[a[u]]}},table:[e(t,[2,92],{3:1,4:2}),{1:[3]},e(r,[2,96],{5:3,8:4,9:5,10:6,11:7,12:[1,8],14:[1,9],15:[1,10]}),e(n,[2,110],{6:11,124:12,54:13,19:14,24:15,20:[1,16],25:[1,17]}),e(t,[2,93]),e(t,[2,2]),e(t,[2,3]),e(t,[2,4]),{13:[1,18]},{13:[1,19]},{16:[1,20]},{7:[1,21]},e(r,[2,97]),{7:[2,28],13:i,16:a,18:24,51:23,52:22,114:26,115:o,130:s},e(r,[2,94]),e(r,[2,95]),{13:i,16:a,17:30,18:31,114:26,115:o,130:s},{13:i,16:a,17:32,18:31,114:26,115:o,130:s},e(t,[2,5]),e(t,[2,6]),{13:[1,33]},{1:[2,1]},e(n,[2,111]),{13:i,16:a,18:36,29:34,30:35,114:26,115:o,130:s},e(c,[2,26]),e(u,[2,80]),e(u,[2,81]),e(u,[2,82]),e(u,[2,140]),e(u,[2,141]),e(l,[2,98],{21:37,60:38,61:[1,39]}),e([28,56,61],[2,8]),{26:40,27:41,28:d,56:[2,102]},e(t,[2,7]),{53:[1,43]},e(p,[2,104],{31:44,27:45,28:d}),{13:i,16:a,18:51,32:46,33:47,35:48,36:49,37:50,38:h,43:53,44:f,92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},{22:69,27:70,28:d,56:[2,100]},e(l,[2,99]),{13:i,16:a,18:72,62:71,114:26,115:o,130:s},{23:73,55:74,56:O},{56:[2,103]},{13:i,16:a,18:36,29:76,30:35,114:26,115:o,130:s},e(n,[2,27]),e(p,[2,12]),e(p,[2,105]),e(E,[2,13]),e(x,[2,106],{34:77}),e(A,[2,15]),e(A,[2,16]),e(A,[2,17]),e(R,[2,78]),e(R,[2,79]),{13:i,16:a,18:36,29:78,30:35,114:26,115:o,130:s},e(I,[2,108],{39:79}),e(R,[2,83],{117:[1,80],118:[1,81]}),e(R,[2,86]),e(R,[2,87]),e(R,[2,88]),e(R,[2,89]),e(c,[2,20]),e(P,[2,90]),e(P,[2,91]),e(R,[2,142]),e(R,[2,143]),e(P,[2,144]),e(P,[2,145]),e(P,[2,146]),e(P,[2,147]),{23:82,55:74,56:O},{56:[2,101]},e(l,[2,32],{114:26,18:83,13:i,16:a,115:o,130:s}),e(N,[2,114]),e(r,[2,10]),e(D,[2,112],{59:84}),e(D,[2,29]),e(p,[2,11]),e(E,[2,14],{41:85,42:[1,86]}),{45:87,46:[1,88]},{13:i,16:a,18:51,33:90,35:48,36:49,37:50,38:h,40:[1,89],43:53,44:f,92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},e(R,[2,84]),{13:i,16:a,18:91,114:26,115:o,130:s},e(r,[2,9]),e(N,[2,115]),{13:i,16:a,18:115,38:j,57:92,58:[1,94],63:93,64:95,68:102,69:98,70:100,72:104,73:105,74:107,77:97,78:99,87:C,96:M,97:101,99:103,103:106,105:109,106:113,108:110,109:L,114:26,115:o,125:96,126:k,130:s},e(x,[2,107]),{13:i,16:a,18:51,33:117,35:48,36:49,37:50,38:h,43:53,44:f,92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},e(A,[2,22]),e(A,[2,21]),e(A,[2,18]),e(I,[2,109]),e(R,[2,85]),e(F,[2,31]),e(D,[2,113]),e(F,[2,30]),{47:120,48:[1,121],50:119,53:[2,120],65:118},e(B,[2,118],{70:100,68:102,72:104,73:105,74:107,69:122,87:C,96:M,126:k}),e(B,[2,119]),e(U,[2,116]),e(q,[2,128],{79:123}),e(U,[2,35]),e(q,[2,59]),e(U,[2,36],{71:124,66:125,67:V}),e(Q,[2,61],{100:127,98:128,67:$}),e(H,[2,38]),{72:130,74:107,87:C,126:k},e(G,[2,64],{104:131,101:132,102:z}),{75:[1,134]},e([13,16,56,85,87,95,115,126,128,129,130],[2,58]),e(K,[2,68]),{13:i,16:a,18:115,38:j,105:135,106:113,114:26,115:o,130:s},{75:[2,124]},{75:[2,125]},e(K,[2,66],{107:136,93:[1,138],110:[1,137],111:[1,139]}),e([13,16,38,115,130],[2,70]),e(X,[2,74]),{13:i,16:a,18:115,38:j,97:140,99:103,103:106,105:109,106:113,108:110,109:L,114:26,115:o,130:s},e(x,[2,19]),{53:[1,141]},{53:[2,121]},{13:i,16:a,18:36,29:142,30:35,114:26,115:o,130:s},e(c,[2,23]),e(U,[2,117]),e(B,[2,41],{114:26,55:74,127:143,88:144,82:145,81:147,84:148,73:149,18:150,86:152,23:154,94:155,13:i,16:a,44:[1,146],56:O,85:J,87:W,95:Y,96:M,115:o,128:Z,129:ee,130:s}),e(U,[2,37],{66:159,67:V}),e(H,[2,122]),{68:160,72:104,73:105,74:107,87:C,96:M,126:k},e(Q,[2,62],{98:161,67:$}),e(G,[2,134]),{13:i,16:a,18:115,38:j,99:162,103:106,105:109,106:113,108:110,109:L,114:26,115:o,130:s},e(H,[2,39]),e(G,[2,65],{101:163,102:z}),e(K,[2,136]),{13:i,16:a,18:115,38:j,103:164,105:109,106:113,108:110,109:L,114:26,115:o,130:s},{13:i,16:a,18:51,35:166,44:te,76:165,92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},e(K,[2,69]),e(K,[2,67]),e(K,[2,71]),e(K,[2,72]),e(K,[2,73]),{40:[1,168]},e(D,[2,33]),{48:[1,170],49:169},e(q,[2,129]),e(q,[2,126]),e(q,[2,127]),{89:171,92:[1,172]},e(q,[2,43],{83:173,80:174,67:re}),e(ne,[2,45]),{13:i,16:a,18:150,23:154,55:74,56:O,84:176,85:J,86:152,87:W,94:155,95:Y,114:26,115:o,128:Z,129:ee,130:s},e(ne,[2,47]),e(ne,[2,48]),e(ne,[2,49]),{75:[1,177]},e(ne,[2,51]),e(ne,[2,56]),{13:[1,178]},e(ne,[2,132]),e(ne,[2,133]),e(H,[2,123]),e(H,[2,34]),e(G,[2,135]),e(G,[2,60]),e(K,[2,137]),e(K,[2,63]),e(H,[2,40]),e(ie,[2,76]),e(ae,[2,138],{112:179}),e(X,[2,75]),{53:[2,25]},{53:[2,24]},{90:[1,180]},{90:[2,53]},e(q,[2,44],{80:181,67:re}),e(ne,[2,130]),{13:i,16:a,18:150,23:154,55:74,56:O,73:149,81:182,84:148,85:J,86:152,87:W,94:155,95:Y,96:M,114:26,115:o,128:Z,129:ee,130:s},e(ne,[2,46]),{13:i,16:a,18:51,35:166,44:te,76:183,92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},e(ne,[2,57]),{13:i,16:a,18:51,35:185,46:[1,184],92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},{91:186,92:[1,187],93:[1,188]},e(ne,[2,131]),e(ne,[2,42]),e(ne,[2,50]),e(ie,[2,77]),e(ae,[2,139]),{46:[1,189]},{46:[2,54]},{46:[2,55]},e(q,[2,52])],defaultActions:{21:[2,1],41:[2,103],70:[2,101],111:[2,124],112:[2,125],119:[2,121],169:[2,25],170:[2,24],172:[2,53],187:[2,54],188:[2,55]},parseError:function(e,t){if(!t.recoverable){var r=new Error(e);throw r.hash=t,r}this.trace(e)},parse:function(e){var t=this,r=[0],n=[null],i=[],a=this.table,o="",s=0,c=0,u=0,l=i.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var h in this.yy)Object.prototype.hasOwnProperty.call(this.yy,h)&&(p.yy[h]=this.yy[h]);d.setInput(e,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var f=d.yylloc;i.push(f);var y,g=d.options&&d.options.ranges;"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var m,b,v,_,w,T,S,O,E,x={};;){if(v=r[r.length-1],this.defaultActions[v]?_=this.defaultActions[v]:(null==m&&(y=void 0,"number"!=typeof(y=d.lex()||1)&&(y=t.symbols_[y]||y),m=y),_=a[v]&&a[v][m]),void 0===_||!_.length||!_[0]){var A;for(T in E=[],a[v])this.terminals_[T]&&T>2&&E.push("'"+this.terminals_[T]+"'");A=d.showPosition?"Parse error on line "+(s+1)+":\n"+d.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(s+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(A,{text:d.match,token:this.terminals_[m]||m,line:d.yylineno,loc:f,expected:E})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(_[0]){case 1:r.push(m),n.push(d.yytext),i.push(d.yylloc),r.push(_[1]),m=null,b?(m=b,b=null):(c=d.yyleng,o=d.yytext,s=d.yylineno,f=d.yylloc,u>0&&u--);break;case 2:if(S=this.productions_[_[1]][1],x.$=n[n.length-S],x._$={first_line:i[i.length-(S||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(S||1)].first_column,last_column:i[i.length-1].last_column},g&&(x._$.range=[i[i.length-(S||1)].range[0],i[i.length-1].range[1]]),void 0!==(w=this.performAction.apply(x,[o,c,s,p.yy,_[1],n,i].concat(l))))return w;S&&(r=r.slice(0,-1*S*2),n=n.slice(0,-1*S),i=i.slice(0,-1*S)),r.push(this.productions_[_[1]][0]),n.push(x.$),i.push(x._$),O=a[r[r.length-2]][r[r.length-1]],r.push(O);break;case 3:return!0}}return!0}};const se="http://www.w3.org/1999/02/22-rdf-syntax-ns#",ce=se+"type",ue=se+"first",le=se+"rest",de=se+"nil",pe="http://www.w3.org/2001/XMLSchema#",he=pe+"integer",fe=pe+"decimal",ye=pe+"double",ge=pe+"boolean",me="http://www.w3.org/ns/shacl#",be="http://www.w3.org/2002/07/owl#",ve="http://www.w3.org/2000/01/rdf-schema#",_e={[he]:!0,[fe]:!0,[pe+"float"]:!0,[ye]:!0,[pe+"string"]:!0,[ge]:!0,[pe+"dateTime"]:!0,[pe+"nonPositiveInteger"]:!0,[pe+"negativeInteger"]:!0,[pe+"long"]:!0,[pe+"int"]:!0,[pe+"short"]:!0,[pe+"byte"]:!0,[pe+"nonNegativeInteger"]:!0,[pe+"unsignedLong"]:!0,[pe+"unsignedShort"]:!0,[pe+"unsignedByte"]:!0,[pe+"positiveInteger"]:!0,[se+"langString"]:!0};function we(e,t=!1){let r=0,n=e.length;if(t&&0===n)return De.factory.namedNode(de);const i=head=Ee();return 0===n&&Re(head,De.factory.namedNode(le),De.factory.namedNode(de)),e.forEach((e=>{if(void 0===e)throw new Error("b");Re(head,De.factory.namedNode(ue),e),Re(head,De.factory.namedNode(le),head=++r20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var r,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],r=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,r,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;at[0].length)){if(t=r,n=a,this.options.backtrack_lexer){if(!1!==(e=this.test_match(r,i[a])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,i[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{flex:!0,"case-insensitive":!0},performAction:function(e,t,r,n){switch(r){case 0:break;case 1:return 12;case 2:return 14;case 3:return 15;case 4:return 25;case 5:return 20;case 6:return 131;case 7:return 132;case 8:return 85;case 9:return 126;case 10:return 87;case 11:return"PASS";case 12:return"COMMENT";case 13:return 13;case 14:return 16;case 15:return 130;case 16:return 129;case 17:return 128;case 18:return 117;case 19:return 92;case 20:return 119;case 21:return 120;case 22:return"EXPONENT";case 23:return 133;case 24:return 134;case 25:return 135;case 26:return 136;case 27:return 61;case 28:return 90;case 29:return 58;case 30:return 56;case 31:return 38;case 32:return 40;case 33:return 44;case 34:return 46;case 35:return 110;case 36:return 93;case 37:return 111;case 38:return 67;case 39:return 118;case 40:return 53;case 41:return 96;case 42:return 102;case 43:return 75;case 44:return 95;case 45:return 109;case 46:return 28;case 47:return 42;case 48:return 48;case 49:return 115;case 50:return 7;case 51:console.log(t.yytext)}},rules:[/^(?:\s+|#[^\n\r]*)/i,/^(?:BASE)/i,/^(?:IMPORTS)/i,/^(?:PREFIX)/i,/^(?:shapeClass)/i,/^(?:shape)/i,/^(?:true)/i,/^(?:false)/i,/^(?:(BlankNode|IRI|Literal|BlankNodeOrIRI|BlankNodeOrLiteral|IRIOrLiteral\b))/i,/^(?:(targetNode|targetObjectsOf|targetSubjectsOf\b))/i,/^(?:(deactivated|severity|message|class|datatype|nodeKind|minExclusive|minInclusive|maxExclusive|maxInclusive|minLength|maxLength|pattern|flags|languageIn|uniqueLang|equals|disjoint|lessThan|lessThanOrEquals|qualifiedValueShape|qualifiedMinCount|qualifiedMaxCount|qualifiedValueShapesDisjoint|closed|ignoredProperties|hasValue|in))/i,/^(?:([ \t\r\n]+))/i,/^(?:(#[\r\n]*))/i,/^(?:(<([^=<>\"\{\}\|\^`\\\u0000-\u0020]|(\\u([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])|\\U([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])))*>))/i,/^(?:((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.)*((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040]))?)?:))/i,/^(?:(((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.)*((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040]))?)?:)(((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|:|[0-9]|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.|:|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))*(((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|:|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%)))))?)))/i,/^(?:(@(([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.)*((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040]))?)?:))/i,/^(?:(@((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.)*((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040]))?)?:)(((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|:|[0-9]|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.|:|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))*(((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|:|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%)))))?)))/i,/^(?:(@[a-zA-Z]+(-[a-zA-Z0-9]+)*))/i,/^(?:([+-]?[0-9]+))/i,/^(?:([+-]?[0-9]*\.[0-9]+))/i,/^(?:([+-]?([0-9]+\.[0-9]*([eE][+-]?[0-9]+)|\.?[0-9]+([eE][+-]?[0-9]+))))/i,/^(?:([eE][+-]?[0-9]+))/i,/^(?:('(?:(?:[^\u0027\u005C\u000A\u000D])|(\\[tbnrf\\\"\']))*'))/i,/^(?:("(?:(?:[^\u0022\u005C\u000A\u000D])|(\\[tbnrf\\\"\']))*"))/i,/^(?:('''(?:(?:'|'')?(?:[^'\\]|(\\[tbnrf\\\"\'])))*'''))/i,/^(?:("""(?:(?:"|"")?(?:[^\"\\]|(\\[tbnrf\\\"\'])))*"""))/i,/^(?:->)/i,/^(?:\.\.)/i,/^(?:\})/i,/^(?:\{)/i,/^(?:\()/i,/^(?:\))/i,/^(?:\[)/i,/^(?:\])/i,/^(?:\?)/i,/^(?:\*)/i,/^(?:\+)/i,/^(?:\|)/i,/^(?:\^\^)/i,/^(?:\.)/i,/^(?:!)/i,/^(?:\/)/i,/^(?:=)/i,/^(?:@)/i,/^(?:\^)/i,/^(?:;)/i,/^(?:,)/i,/^(?:%)/i,/^(?:a)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}};function De(){this.yy={}}return oe.lexer=Ne,De.prototype=oe,oe.Parser=De,new De}();e.exports=t},21762:(e,t,r)=>{const n=r(21925).Parser,i=r(72243);class a{constructor(){}parse(e,{extendedSyntax:t,baseIRI:r}={}){this._parser=new n,this._parser.Parser.factory=i.DataFactory,this._parser.Parser.base=i.DataFactory.namedNode(r||"urn:x-base:default"),this._parser.Parser.extended=!0===t,this._parser.Parser.prefixes={rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://www.w3.org/2000/01/rdf-schema#",sh:"http://www.w3.org/ns/shacl#",xsd:"http://www.w3.org/2001/XMLSchema#"},this._parser.Parser.currentNodeShape=void 0,this._parser.Parser.currentPropertyNode=void 0,this._parser.Parser.nodeShapeStack=[],this._parser.Parser.tempCurrentNodeShape=void 0,this._parser.Parser.n3Parser=new i.Parser({baseIRI:r||"urn:x-base:default"});const a=[];return this._parser.Parser.onQuad=e=>{a.push(e)},this._parser.parse(e),a.prefixes=this._parser.Parser.prefixes,a}}e.exports.Parser=a,e.exports.parse=function(e,t){return(new a).parse(e,t)}},23344:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(72243),o=r(37669),s=r(64817),c=r(98118),u=i(r(57756)),l=i(r(14791)),d=i(r(58007));function p(e){var t;return null===(t=/^[^]*[#/]/.exec(e))||void 0===t?void 0:t[0]}const h={"http://www.w3.org/1999/02/22-rdf-syntax-ns#":"rdf","http://www.w3.org/2000/01/rdf-schema#":"rdfs","http://www.w3.org/ns/shacl#":"sh","http://www.w3.org/2001/XMLSchema#":"xsd"},f={rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://www.w3.org/2000/01/rdf-schema#",sh:"http://www.w3.org/ns/shacl#",xsd:"http://www.w3.org/2001/XMLSchema#"};t.default=class{constructor(e,t,r={},n=void 0,i=!0,a=!1,o,s=!1){this.store=e,this.base=n,this.errorOnExtraQuads=i,this.mintUnspecifiedPrefixes=a,this.fetch=o,this.extendedSyntax=s,this.prefixes={},this.prefixRev={};for(const e of Object.keys(r)){const t=r[e],n="string"==typeof t?t:t.value;n in h||e in f||(this.prefixRev[n]=e,this.prefixes[e]=n)}this.writer=t}write(){return n(this,void 0,void 0,(function*(){const e=this.store.getQuads(null,"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","http://www.w3.org/2002/07/owl#Ontology",null);if(1!==e.length||"NamedNode"!==e[0].subject.termType)throw new Error("Base expected");{const t=e[0].subject;this.store.removeQuads(e),t.equals(new a.NamedNode("urn:x-base:default"))||this.writer.add(`BASE ${(0,s.termToString)(t)}`),yield this.writeImports(t)}if(this.mintUnspecifiedPrefixes){const e=new Set;for(const t of[...this.store.getSubjects(null,null,null),...this.store.getPredicates(null,null,null),...this.store.getObjects(null,null,null)])if("NamedNode"===t.termType){const r=p(t.value);!r||r in this.prefixRev||r in h||e.add(r)}const t=Object.assign(Object.assign({},this.prefixes),f);yield Promise.all([...e].map((e=>(0,o.uriToPrefix)(e,{fetch:this.fetch,mintOnUnknown:!0,existingPrefixes:t}).then((r=>{this.prefixes[r]=e,t[r]=e,this.prefixRev[e]=r})))))}const t=new Set([...this.store.getSubjects(null,null,null),...this.store.getPredicates(null,null,null),...this.store.getObjects(null,null,null)].filter((e=>"NamedNode"===e.termType)).map((e=>p(e.value))).filter((e=>"string"==typeof e)));for(const e in this.prefixRev)t.has(e)||(delete this.prefixes[this.prefixRev[e]],delete this.prefixRev[e]);if(yield this.writePrefixes(),this.prefixes=Object.assign(Object.assign({},this.prefixes),f),this.prefixRev=Object.assign(Object.assign({},this.prefixRev),h),this.writer.newLine(),yield this.writeShapes(),this.extendedSyntax){const e=this.store.getSubjects(null,null,null);e.length>0&&this.writer.newLine(1);for(const t of e)this.writer.add(yield this.termToString(t,!0,!0)),this.writer.add(" "),this.writer.indent(),yield this.writeTurtlePredicates(t),this.writer.deindent();e.length>0&&(this.writer.add(" ."),this.writer.newLine())}if(this.errorOnExtraQuads&&this.store.size>0)throw new Error("Dataset contains quads that cannot be written in SHACLC");this.writer.end()}))}writeImports(e){return n(this,void 0,void 0,(function*(){const t=this.store.getObjectsOnce(e,new a.NamedNode("http://www.w3.org/2002/07/owl#imports"),null);if(t.length>0)for(const e of t)this.writer.add(`IMPORTS <${e.value}>`,!0)}))}writePrefixes(){return n(this,void 0,void 0,(function*(){const e=Object.keys(this.prefixes).filter((e=>!(e in l.default))).sort();if(e.length>0)for(const t of e)this.writer.add(`PREFIX ${t}: <${this.prefixes[t]}>`,!0)}))}termToString(e,t=!1,r=!1){return n(this,void 0,void 0,(function*(){try{if(t)throw new Error("Shacl name disabled");return(0,c.getShaclName)(e)}catch(e){}if("NamedNode"===e.termType){const t=p(e.value);return t&&t in this.prefixRev&&t in this.prefixRev?`${this.prefixRev[t]}:${e.value.slice(t.length)}`:(0,s.termToString)(e)}if("Literal"===e.termType)return"http://www.w3.org/2001/XMLSchema#integer"===e.datatypeString||"http://www.w3.org/2001/XMLSchema#boolean"===e.datatypeString?e.value:(0,s.termToString)(e);throw"BlankNode"===e.termType&&r&&(0,s.termToString)(e),new Error(`Invalid term type for extra statement ${e.value} (${e.termType})`)}))}writeShapes(){return n(this,void 0,void 0,(function*(){for(const e of this.store.getSubjectsOnce(new a.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),new a.NamedNode("http://www.w3.org/ns/shacl#NodeShape"),null)){this.store.getQuadsOnce(e,new a.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),new a.NamedNode("http://www.w3.org/2000/01/rdf-schema#Class"),null).length>0?this.writer.add("shapeClass "):this.writer.add("shape "),this.writer.add(yield this.termToString(e)),this.writer.add(" ");const t=this.store.getObjectsOnce(e,new a.NamedNode("http://www.w3.org/ns/shacl#targetClass"),null);if(t.length>0){this.writer.add("-> ");for(const e of t)"NamedNode"===e.termType?this.writer.add(yield this.termToString(e)):(this.writer.add("!"),this.writer.add(yield this.termToString(this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#not"),!0)))),this.writer.add(" ")}const r=this.store.getPredicates(e,null,null).filter((e=>[new a.NamedNode("http://www.w3.org/ns/shacl#targetClass"),new a.NamedNode("http://www.w3.org/ns/shacl#property"),new a.NamedNode("http://www.w3.org/ns/shacl#or"),...Object.keys(d.default).map((e=>new a.NamedNode("http://www.w3.org/ns/shacl#"+e)))].every((t=>!e.equals(t)))));r.length>0&&(this.writer.add(";"),this.writer.indent(),this.writer.newLine(1)),this.extendedSyntax&&(yield this.writeGivenTurtlePredicates(e,r)),r.length>0&&(this.writer.add(" "),this.writer.deindent()),yield this.writeShapeBody(e,!1)}}))}getSingleProperty(e,t){let r=[e];try{let n=(0,c.getShaclName)(e.predicate),i="pred";if("not"===n){const t=this.store.getQuadsOnce(e.object,null,null,null);if(r=r.concat(t),1!==t.length)throw new Error("Can only handle having one predicate of 'not'");[e]=t,n=(0,c.getShaclName)(e.predicate),i="not"}if(!(n in t))throw new Error(`${n} is not allowed`);return{name:n,type:i,object:e.object}}catch(e){this.store.addQuads(r)}}singleLayerPropertiesList(e,t){const r=[];for(const n of this.store.getQuadsOnce(e,null,null,null)){const e=this.getSingleProperty(n,t);e&&r.push(e)}return r}expectOneProperty(e,t){const r=this.store.getQuadsOnce(e,null,null,null);if(1===r.length){const e=this.getSingleProperty(r[0],t);if(e)return e}this.store.addQuads(r)}orProperties(e,t){const r=[];for(const n of this.store.getQuadsOnce(e,new a.NamedNode("http://www.w3.org/ns/shacl#or"),null,null)){const e=[];for(const r of this.getList(n.object)){const i=this.expectOneProperty(r,t);if(!i)throw this.store.addQuad(n),new Error("Each entry of the 'or' statement must declare exactly one property");e.push(i)}r.push(e)}return r}getList(e){let t=e;const r=[];for(;!t.equals(new a.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"));)r.push(this.singleObject(t,new a.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"),!0)),t=this.singleObject(t,new a.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"),!0);return r}writeIriLiteralOrArray(e){return n(this,void 0,void 0,(function*(){if("BlankNode"===e.termType){this.writer.add("[");let t=!0;for(const r of this.getList(e))t?t=!1:this.writer.add(" "),this.writer.add(yield this.termToString(r));this.writer.add("]")}else this.writer.add(yield this.termToString(e))}))}singleObject(e,t,r){var n;return null===(n=this.singleQuad(e,t,r))||void 0===n?void 0:n.object}singleQuad(e,t,r=!1){const n=this.store.getQuadsOnce(e,t,null,null);if(r&&1!==n.length)throw this.store.addQuads(n),new Error(`The subject and predicate ${null==e?void 0:e.value} ${null==t?void 0:t.value} must have exactly one object. Instead has ${n.length}`);if(n.length>1)throw this.store.addQuads(n),new Error(`The subject and predicate ${null==e?void 0:e.value} ${null==t?void 0:t.value} can have at most one object. Instead has ${n.length}`);return 1===n.length?n[0]:void 0}writeAssigment({name:e,type:t,object:r}){return n(this,void 0,void 0,(function*(){"not"===t&&this.writer.add("!"),this.writer.add(e),this.writer.add("="),yield this.writeIriLiteralOrArray(r)}))}writeAtom({name:e,type:t,object:r}){return n(this,void 0,void 0,(function*(){switch("not"===t&&this.writer.add("!"),e){case"node":if("NamedNode"===r.termType)this.writer.add(`@${yield this.termToString(r)}`);else{if("BlankNode"!==r.termType)throw new Error("Invalid nested shape, must be blank node or IRI");yield this.writeShapeBody(r)}return;case"nodeKind":return void this.writer.add((0,c.getShaclName)(r));case"class":case"datatype":return void this.writer.add(yield this.termToString(r));default:this.writer.add(e),this.writer.add("="),yield this.writeIriLiteralOrArray(r)}}))}writeAssigments(e,t=" ",r=!0,i){return n(this,void 0,void 0,(function*(){for(const n of e)r?r=!1:this.writer.add(t),i?yield this.writeAtom(n):yield this.writeAssigment(n)}))}writeParams(e,t=!0,r,i=!1,a=!1){return n(this,void 0,void 0,(function*(){const n=this.orProperties(e,r),o=this.singleLayerPropertiesList(e,r);a&&(n.length>0||o.length>0)&&this.writer.newLine(1);for(const e of n)t?t=!1:this.writer.add(" "),yield this.writeAssigments(e,"|",!0,i);yield this.writeAssigments(o," ",t,i),a&&(n.length>0||o.length>0)&&this.writer.add(" .")}))}writeShapeBody(e,t=!0){return n(this,void 0,void 0,(function*(){this.writer.add("{").indent();const r=this.store.getObjectsOnce(e,new a.NamedNode("http://www.w3.org/ns/shacl#property"),null);yield this.writeParams(e,!0,d.default,!1,!0);for(const e of r)this.writer.newLine(1),yield this.writeProperty(e);this.writer.deindent().newLine(1),t?this.writer.add("} ."):this.writer.add("}").newLine(1)}))}writeProperty(e){return n(this,void 0,void 0,(function*(){yield this.writePath(this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#path"),!0));const t=this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#minCount")),r=this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#maxCount")),n=this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#nodeKind")),i=this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#class")),o=this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#datatype")),s=this.store.getObjectsOnce(e,new a.NamedNode("http://www.w3.org/ns/shacl#node"),null);if(n&&(this.writer.add(" "),this.writer.add((0,c.getShaclName)(n))),i&&(this.writer.add(" "),this.writer.add(yield this.termToString(i))),o&&(this.writer.add(" "),this.writer.add(yield this.termToString(o))),void 0!==t||void 0!==r){if(this.writer.add(" ["),t){if("Literal"!==t.termType||"http://www.w3.org/2001/XMLSchema#integer"!==t.datatypeString)throw new Error("Invalid min value, must me an integer literal");this.writer.add(t.value)}else this.writer.add("0");if(this.writer.add(".."),r){if("Literal"!==r.termType||"http://www.w3.org/2001/XMLSchema#integer"!==r.datatypeString)throw new Error("Invalid max value, must me an integer literal");this.store.removeMatches(e,new a.NamedNode("http://www.w3.org/ns/shacl#maxCount"),void 0,void 0),this.writer.add(r.value)}else this.writer.add("*");this.writer.add("]")}yield this.writeParams(e,!1,u.default,!0);const l=[];for(const e of s)if("NamedNode"===e.termType)this.writer.add(" "),this.writer.add(`@${yield this.termToString(e)}`);else{if("BlankNode"!==e.termType)throw new Error("Invalid nested shape, must be blank node or IRI");l.push(e)}for(const e of l)this.writer.add(" "),yield this.writeShapeBody(e);this.extendedSyntax&&this.store.getQuads(e,null,null,null).length>0&&(this.writer.add(" %"),this.writer.indent(),this.writer.newLine(1),yield this.writeTurtlePredicates(e),this.writer.deindent(),this.writer.newLine(1),this.writer.add("%")),0===l.length&&this.writer.add(" .")}))}writeTurtlePredicates(e){return n(this,void 0,void 0,(function*(){return this.writeGivenTurtlePredicates(e,this.store.getPredicates(e,null,null))}))}writeGivenTurtlePredicates(e,t){return n(this,void 0,void 0,(function*(){let r=!1;if(t.some((e=>e.equals(a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"))))){const t=this.store.getObjectsOnce(e,a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),null);t.length>0&&(r=!0,this.writer.add("a "),yield this.writeTurtleObjects(t))}for(const n of t)n.equals(a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"))||(r?(this.writer.add(" ;"),this.writer.newLine(1)):r=!0,this.writer.add(yield this.termToString(n,!0)),this.writer.add(" "),yield this.writeTurtleObjects(this.store.getObjectsOnce(e,n,null)))}))}writeTurtleObjects(e){return n(this,void 0,void 0,(function*(){const t=[],r=[];for(const n of e)"BlankNode"===n.termType&&0===[...this.store.match(null,null,n),...this.store.match(null,n,null)].length?t.push(n):r.push(n);this.writer.add((yield Promise.all(r.map((e=>this.termToString(e,!0,!0))))).join(", "));let n=r.length>0;if(t.length>0)for(const e of t)n?this.writer.add(", "):n=!0,(yield this.writeList(e))||(this.writer.add("["),this.writer.indent(),this.writer.newLine(1),yield this.writeTurtlePredicates(e),this.writer.deindent(),this.writer.newLine(1),this.writer.add("]"))}))}writeList(e){return n(this,void 0,void 0,(function*(){let t=e;const r=[],n=[];for(;!t.equals(a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"));){const e=this.store.getQuadsOnce(t,a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"),null,null),i=this.store.getQuadsOnce(t,a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"),null,null);if(n.push(...e,...i),1!==e.length||1!==i.length||0!==this.store.getQuads(t,null,null,null).length)return this.store.addQuads(n),!1;r.push(e[0].object),t=i[0].object}let i=!1;this.writer.add("(");for(const e of r)i?this.writer.add(" "):i=!0,yield this.writeTurtleObjects([e]);return this.writer.add(")"),!0}))}writePath(e,t=!1){return n(this,void 0,void 0,(function*(){if("NamedNode"===e.termType)this.writer.add(yield this.termToString(e));else{if("BlankNode"!==e.termType)throw new Error("Path should be named node or blank node");{const r=this.store.getQuadsOnce(e,null,null,null);if(1===r.length){const{predicate:n,object:i}=r[0];switch(n.value){case"http://www.w3.org/ns/shacl#inversePath":return this.writer.add("^"),void(yield this.writePath(i,!0));case"http://www.w3.org/ns/shacl#alternativePath":{const e=this.getList(i);if(0===e.length)throw new Error("Invalid Alternative Path - no options");if(1===e.length)yield this.writePath(e[0]);else{t&&this.writer.add("(");let r=!0;for(const t of e)r?r=!1:this.writer.add("|"),yield this.writePath(t,!0);t&&this.writer.add(")")}return}case"http://www.w3.org/ns/shacl#zeroOrMorePath":return yield this.writePath(i,!0),void this.writer.add("*");case"http://www.w3.org/ns/shacl#oneOrMorePath":return yield this.writePath(i,!0),void this.writer.add("+");case"http://www.w3.org/ns/shacl#zeroOrOnePath":return yield this.writePath(i,!0),void this.writer.add("?");default:throw new Error(`Invalid path type ${e.value}`)}}else{this.store.addQuads(r);const n=this.getList(e);if(0===n.length)throw new Error("Invalid Path");{t&&this.writer.add("(");let e=!0;for(const t of n)e?e=!1:this.writer.add("/"),yield this.writePath(t,!0);t&&this.writer.add(")")}}}}}))}}},14791:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={owl:"http://www.w3.org/2002/07/owl#",rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://www.w3.org/2000/01/rdf-schema#",sh:"http://www.w3.org/ns/shacl#",xsd:"http://www.w3.org/2001/XMLSchema#"}},22939:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.write=void 0;const a=r(72243),o=i(r(23344)),s=i(r(29908)),c=i(r(23187));t.write=function(e,t){return n(this,void 0,void 0,(function*(){return new Promise(((r,i)=>n(this,void 0,void 0,(function*(){try{let n="";const i=new c.default(e),u=i.getGraphs(null,null,null);if(u.length>1)throw new Error("More than one graph found - can serialize in the default graph");if(1===u.length&&!u[0].equals(a.DataFactory.defaultGraph()))throw new Error(`Expected all triples to be in the default graph, instead triples were in ${u[0].value}`);const l=new s.default({write:e=>{n+=e},end:()=>{let e=i.getQuads(null,null,null,null);0===e.length&&(e=void 0),r({text:n,extraQuads:e})}}),d=new o.default(i,l,null==t?void 0:t.prefixes,void 0,!1!==(null==t?void 0:t.errorOnUnused),null==t?void 0:t.mintPrefixes,null==t?void 0:t.fetch,null==t?void 0:t.extendedSyntax);yield d.write()}catch(e){i(e)}}))))}))}},58007:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={targetNode:!0,targetObjectsOf:!0,targetSubjectsOf:!0,deactivated:!0,severity:!0,message:!0,class:!0,datatype:!0,nodeKind:!0,minExclusive:!0,minInclusive:!0,maxExclusive:!0,maxInclusive:!0,minLength:!0,maxLength:!0,pattern:!0,flags:!0,languageIn:!0,equals:!0,disjoint:!0,closed:!0,ignoredProperties:!0,hasValue:!0,in:!0}},57756:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={deactivated:!0,severity:!0,message:!0,class:!0,datatype:!0,nodeKind:!0,minExclusive:!0,minInclusive:!0,maxExclusive:!0,maxInclusive:!0,minLength:!0,maxLength:!0,pattern:!0,flags:!0,languageIn:!0,uniqueLang:!0,equals:!0,disjoint:!0,lessThan:!0,lessThanOrEquals:!0,qualifiedValueShape:!0,qualifiedMinCount:!0,qualifiedMaxCount:!0,qualifiedValueShapesDisjoint:!0,closed:!0,ignoredProperties:!0,hasValue:!0,in:!0,node:!0}},98118:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getShaclName=void 0,t.getShaclName=function(e){if("NamedNode"!==e.termType||!e.value.startsWith("http://www.w3.org/ns/shacl#"))throw new Error(`Term ${e.value} is not part of the SHACL namespace`);return e.value.slice(27)}},23187:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(72243);class i extends n.Store{getQuadsOnce(e,t,r,n){const i=this.getQuads(e,t,r,n);return this.removeQuads(i),i}getSubjectsOnce(e,t,r){return this.getQuadsOnce(null,e,t,r).map((e=>e.subject))}getObjectsOnce(e,t,r){return this.getQuadsOnce(e,t,null,r).map((e=>e.object))}}t.default=i},29908:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e){this.indents=0,this.write=e.write,this.end=e.end}indent(){return this.indents+=1,this}deindent(){if(this.indents<1)throw new Error(`Trying to deindent when indent is only ${this.indents}`);return this.indents-=1,this}add(e,t=!1){return this.write(t?`\n${"\t".repeat(this.indents)}${e}`:e,"utf-8"),this}newLine(e=2){return this.write("\n".repeat(e)+"\t".repeat(this.indents),"utf-8"),this}}},88110:e=>{e.exports=function(e){"use strict";var t=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function r(e,t){var r=e[0],n=e[1],i=e[2],a=e[3];n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&i|~n&a)+t[0]-680876936|0)<<7|r>>>25)+n|0)&n|~r&i)+t[1]-389564586|0)<<12|a>>>20)+r|0)&r|~a&n)+t[2]+606105819|0)<<17|i>>>15)+a|0)&a|~i&r)+t[3]-1044525330|0)<<22|n>>>10)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&i|~n&a)+t[4]-176418897|0)<<7|r>>>25)+n|0)&n|~r&i)+t[5]+1200080426|0)<<12|a>>>20)+r|0)&r|~a&n)+t[6]-1473231341|0)<<17|i>>>15)+a|0)&a|~i&r)+t[7]-45705983|0)<<22|n>>>10)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&i|~n&a)+t[8]+1770035416|0)<<7|r>>>25)+n|0)&n|~r&i)+t[9]-1958414417|0)<<12|a>>>20)+r|0)&r|~a&n)+t[10]-42063|0)<<17|i>>>15)+a|0)&a|~i&r)+t[11]-1990404162|0)<<22|n>>>10)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&i|~n&a)+t[12]+1804603682|0)<<7|r>>>25)+n|0)&n|~r&i)+t[13]-40341101|0)<<12|a>>>20)+r|0)&r|~a&n)+t[14]-1502002290|0)<<17|i>>>15)+a|0)&a|~i&r)+t[15]+1236535329|0)<<22|n>>>10)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&a|i&~a)+t[1]-165796510|0)<<5|r>>>27)+n|0)&i|n&~i)+t[6]-1069501632|0)<<9|a>>>23)+r|0)&n|r&~n)+t[11]+643717713|0)<<14|i>>>18)+a|0)&r|a&~r)+t[0]-373897302|0)<<20|n>>>12)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&a|i&~a)+t[5]-701558691|0)<<5|r>>>27)+n|0)&i|n&~i)+t[10]+38016083|0)<<9|a>>>23)+r|0)&n|r&~n)+t[15]-660478335|0)<<14|i>>>18)+a|0)&r|a&~r)+t[4]-405537848|0)<<20|n>>>12)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&a|i&~a)+t[9]+568446438|0)<<5|r>>>27)+n|0)&i|n&~i)+t[14]-1019803690|0)<<9|a>>>23)+r|0)&n|r&~n)+t[3]-187363961|0)<<14|i>>>18)+a|0)&r|a&~r)+t[8]+1163531501|0)<<20|n>>>12)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&a|i&~a)+t[13]-1444681467|0)<<5|r>>>27)+n|0)&i|n&~i)+t[2]-51403784|0)<<9|a>>>23)+r|0)&n|r&~n)+t[7]+1735328473|0)<<14|i>>>18)+a|0)&r|a&~r)+t[12]-1926607734|0)<<20|n>>>12)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n^i^a)+t[5]-378558|0)<<4|r>>>28)+n|0)^n^i)+t[8]-2022574463|0)<<11|a>>>21)+r|0)^r^n)+t[11]+1839030562|0)<<16|i>>>16)+a|0)^a^r)+t[14]-35309556|0)<<23|n>>>9)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n^i^a)+t[1]-1530992060|0)<<4|r>>>28)+n|0)^n^i)+t[4]+1272893353|0)<<11|a>>>21)+r|0)^r^n)+t[7]-155497632|0)<<16|i>>>16)+a|0)^a^r)+t[10]-1094730640|0)<<23|n>>>9)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n^i^a)+t[13]+681279174|0)<<4|r>>>28)+n|0)^n^i)+t[0]-358537222|0)<<11|a>>>21)+r|0)^r^n)+t[3]-722521979|0)<<16|i>>>16)+a|0)^a^r)+t[6]+76029189|0)<<23|n>>>9)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n^i^a)+t[9]-640364487|0)<<4|r>>>28)+n|0)^n^i)+t[12]-421815835|0)<<11|a>>>21)+r|0)^r^n)+t[15]+530742520|0)<<16|i>>>16)+a|0)^a^r)+t[2]-995338651|0)<<23|n>>>9)+i|0,n=((n+=((a=((a+=(n^((r=((r+=(i^(n|~a))+t[0]-198630844|0)<<6|r>>>26)+n|0)|~i))+t[7]+1126891415|0)<<10|a>>>22)+r|0)^((i=((i+=(r^(a|~n))+t[14]-1416354905|0)<<15|i>>>17)+a|0)|~r))+t[5]-57434055|0)<<21|n>>>11)+i|0,n=((n+=((a=((a+=(n^((r=((r+=(i^(n|~a))+t[12]+1700485571|0)<<6|r>>>26)+n|0)|~i))+t[3]-1894986606|0)<<10|a>>>22)+r|0)^((i=((i+=(r^(a|~n))+t[10]-1051523|0)<<15|i>>>17)+a|0)|~r))+t[1]-2054922799|0)<<21|n>>>11)+i|0,n=((n+=((a=((a+=(n^((r=((r+=(i^(n|~a))+t[8]+1873313359|0)<<6|r>>>26)+n|0)|~i))+t[15]-30611744|0)<<10|a>>>22)+r|0)^((i=((i+=(r^(a|~n))+t[6]-1560198380|0)<<15|i>>>17)+a|0)|~r))+t[13]+1309151649|0)<<21|n>>>11)+i|0,n=((n+=((a=((a+=(n^((r=((r+=(i^(n|~a))+t[4]-145523070|0)<<6|r>>>26)+n|0)|~i))+t[11]-1120210379|0)<<10|a>>>22)+r|0)^((i=((i+=(r^(a|~n))+t[2]+718787259|0)<<15|i>>>17)+a|0)|~r))+t[9]-343485551|0)<<21|n>>>11)+i|0,e[0]=r+e[0]|0,e[1]=n+e[1]|0,e[2]=i+e[2]|0,e[3]=a+e[3]|0}function n(e){var t,r=[];for(t=0;t<64;t+=4)r[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return r}function i(e){var t,r=[];for(t=0;t<64;t+=4)r[t>>2]=e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24);return r}function a(e){var t,i,a,o,s,c,u=e.length,l=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=u;t+=64)r(l,n(e.substring(t-64,t)));for(i=(e=e.substring(t-64)).length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t>2]|=e.charCodeAt(t)<<(t%4<<3);if(a[t>>2]|=128<<(t%4<<3),t>55)for(r(l,a),t=0;t<16;t+=1)a[t]=0;return o=(o=8*u).toString(16).match(/(.*?)(.{0,8})$/),s=parseInt(o[2],16),c=parseInt(o[1],16)||0,a[14]=s,a[15]=c,r(l,a),l}function o(e){var r,n="";for(r=0;r<4;r+=1)n+=t[e>>8*r+4&15]+t[e>>8*r&15];return n}function s(e){var t;for(t=0;tu?new ArrayBuffer(0):(n=u-c,i=new ArrayBuffer(n),a=new Uint8Array(i),o=new Uint8Array(this,c,n),a.set(o),i)}}(),l.prototype.append=function(e){return this.appendBinary(c(e)),this},l.prototype.appendBinary=function(e){this._buff+=e,this._length+=e.length;var t,i=this._buff.length;for(t=64;t<=i;t+=64)r(this._hash,n(this._buff.substring(t-64,t)));return this._buff=this._buff.substring(t-64),this},l.prototype.end=function(e){var t,r,n=this._buff,i=n.length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t>2]|=n.charCodeAt(t)<<(t%4<<3);return this._finish(a,i),r=s(this._hash),e&&(r=u(r)),this.reset(),r},l.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},l.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},l.prototype.setState=function(e){return this._buff=e.buff,this._length=e.length,this._hash=e.hash,this},l.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},l.prototype._finish=function(e,t){var n,i,a,o=t;if(e[o>>2]|=128<<(o%4<<3),o>55)for(r(this._hash,e),o=0;o<16;o+=1)e[o]=0;n=(n=8*this._length).toString(16).match(/(.*?)(.{0,8})$/),i=parseInt(n[2],16),a=parseInt(n[1],16)||0,e[14]=i,e[15]=a,r(this._hash,e)},l.hash=function(e,t){return l.hashBinary(c(e),t)},l.hashBinary=function(e,t){var r=s(a(e));return t?u(r):r},l.ArrayBuffer=function(){this.reset()},l.ArrayBuffer.prototype.append=function(e){var t,n,a,o,s,c=(n=this._buff.buffer,a=e,o=!0,(s=new Uint8Array(n.byteLength+a.byteLength)).set(new Uint8Array(n)),s.set(new Uint8Array(a),n.byteLength),o?s:s.buffer),u=c.length;for(this._length+=e.byteLength,t=64;t<=u;t+=64)r(this._hash,i(c.subarray(t-64,t)));return this._buff=t-64>2]|=n[t]<<(t%4<<3);return this._finish(a,i),r=s(this._hash),e&&(r=u(r)),this.reset(),r},l.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},l.ArrayBuffer.prototype.getState=function(){var e,t=l.prototype.getState.call(this);return t.buff=(e=t.buff,String.fromCharCode.apply(null,new Uint8Array(e))),t},l.ArrayBuffer.prototype.setState=function(e){return e.buff=function(e,t){var r,n=e.length,i=new ArrayBuffer(n),a=new Uint8Array(i);for(r=0;r>2]|=e[t]<<(t%4<<3);if(a[t>>2]|=128<<(t%4<<3),t>55)for(r(l,a),t=0;t<16;t+=1)a[t]=0;return o=(o=8*u).toString(16).match(/(.*?)(.{0,8})$/),s=parseInt(o[2],16),c=parseInt(o[1],16)||0,a[14]=s,a[15]=c,r(l,a),l}(new Uint8Array(e)));return t?u(n):n},l}()},31578:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Util=t.toSparqlJs=t.toSparql=t.Factory=t.Algebra=t.translate=void 0;const s=o(r(71029));t.translate=s.default;const c=a(r(47914));t.Algebra=c;const u=o(r(376));t.Factory=u.default;const l=r(24693);Object.defineProperty(t,"toSparql",{enumerable:!0,get:function(){return l.toSparql}}),Object.defineProperty(t,"toSparqlJs",{enumerable:!0,get:function(){return l.toSparqlJs}});const d=o(r(83152));t.Util=d.default},47914:(e,t)=>{"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),t.expressionTypes=t.types=void 0,(n=t.types||(t.types={})).ALT="alt",n.ASK="ask",n.BGP="bgp",n.CONSTRUCT="construct",n.DESCRIBE="describe",n.DISTINCT="distinct",n.EXPRESSION="expression",n.EXTEND="extend",n.FILTER="filter",n.FROM="from",n.GRAPH="graph",n.GROUP="group",n.INV="inv",n.JOIN="join",n.LEFT_JOIN="leftjoin",n.LINK="link",n.MINUS="minus",n.NOP="nop",n.NPS="nps",n.ONE_OR_MORE_PATH="OneOrMorePath",n.ORDER_BY="orderby",n.PATH="path",n.PATTERN="pattern",n.PROJECT="project",n.REDUCED="reduced",n.SEQ="seq",n.SERVICE="service",n.SLICE="slice",n.UNION="union",n.VALUES="values",n.ZERO_OR_MORE_PATH="ZeroOrMorePath",n.ZERO_OR_ONE_PATH="ZeroOrOnePath",n.COMPOSITE_UPDATE="compositeupdate",n.DELETE_INSERT="deleteinsert",n.LOAD="load",n.CLEAR="clear",n.CREATE="create",n.DROP="drop",n.ADD="add",n.MOVE="move",n.COPY="copy",(r=t.expressionTypes||(t.expressionTypes={})).AGGREGATE="aggregate",r.EXISTENCE="existence",r.NAMED="named",r.OPERATOR="operator",r.TERM="term",r.WILDCARD="wildcard"},376:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const o=a(r(47914)),s=r(18050),c=r(22112),u=r(55403);t.default=class{constructor(e){this.dataFactory=e||new s.DataFactory,this.stringType=this.createTerm("http://www.w3.org/2001/XMLSchema#string")}createAlt(e,t=!0){return this.flattenMulti({type:o.types.ALT,input:e},t)}createAsk(e){return{type:o.types.ASK,input:e}}createBoundAggregate(e,t,r,n,i){const a=this.createAggregateExpression(t,r,n,i);return a.variable=e,a}createBgp(e){return{type:o.types.BGP,patterns:e}}createConstruct(e,t){return{type:o.types.CONSTRUCT,input:e,template:t}}createDescribe(e,t){return{type:o.types.DESCRIBE,input:e,terms:t}}createDistinct(e){return{type:o.types.DISTINCT,input:e}}createExtend(e,t,r){return{type:o.types.EXTEND,input:e,variable:t,expression:r}}createFrom(e,t,r){return{type:o.types.FROM,input:e,default:t,named:r}}createFilter(e,t){return{type:o.types.FILTER,input:e,expression:t}}createGraph(e,t){return{type:o.types.GRAPH,input:e,name:t}}createGroup(e,t,r){return{type:o.types.GROUP,input:e,variables:t,aggregates:r}}createInv(e){return{type:o.types.INV,path:e}}createJoin(e,t=!0){return this.flattenMulti({type:o.types.JOIN,input:e},t)}createLeftJoin(e,t,r){return r?{type:o.types.LEFT_JOIN,input:[e,t],expression:r}:{type:o.types.LEFT_JOIN,input:[e,t]}}createLink(e){return{type:o.types.LINK,iri:e}}createMinus(e,t){return{type:o.types.MINUS,input:[e,t]}}createNop(){return{type:o.types.NOP}}createNps(e){return{type:o.types.NPS,iris:e}}createOneOrMorePath(e){return{type:o.types.ONE_OR_MORE_PATH,path:e}}createOrderBy(e,t){return{type:o.types.ORDER_BY,input:e,expressions:t}}createPath(e,t,r,n){return n?{type:o.types.PATH,subject:e,predicate:t,object:r,graph:n}:{type:o.types.PATH,subject:e,predicate:t,object:r,graph:this.dataFactory.defaultGraph()}}createPattern(e,t,r,n){const i=this.dataFactory.quad(e,t,r,n);return i.type=o.types.PATTERN,i}createProject(e,t){return{type:o.types.PROJECT,input:e,variables:t}}createReduced(e){return{type:o.types.REDUCED,input:e}}createSeq(e,t=!0){return this.flattenMulti({type:o.types.SEQ,input:e},t)}createService(e,t,r){return{type:o.types.SERVICE,input:e,name:t,silent:Boolean(r)}}createSlice(e,t,r){return t=t||0,void 0!==r?{type:o.types.SLICE,input:e,start:t,length:r}:{type:o.types.SLICE,input:e,start:t}}createUnion(e,t=!0){return this.flattenMulti({type:o.types.UNION,input:e},t)}createValues(e,t){return{type:o.types.VALUES,variables:e,bindings:t}}createZeroOrMorePath(e){return{type:o.types.ZERO_OR_MORE_PATH,path:e}}createZeroOrOnePath(e){return{type:o.types.ZERO_OR_ONE_PATH,path:e}}createAggregateExpression(e,t,r,n){return n?{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,separator:n,distinct:r}:{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,distinct:r}}createExistenceExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.EXISTENCE,not:e,input:t}}createNamedExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.NAMED,name:e,args:t}}createOperatorExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.OPERATOR,operator:e,args:t}}createTermExpression(e){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.TERM,term:e}}createWildcardExpression(){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.WILDCARD,wildcard:new u.Wildcard}}createTerm(e){return"$"===e[0]&&(e=e.replace("$","?")),(0,c.stringToTerm)(e,this.dataFactory)}createCompositeUpdate(e){return{type:o.types.COMPOSITE_UPDATE,updates:e}}createDeleteInsert(e,t,r){const n={type:o.types.DELETE_INSERT};return e&&(n.delete=e),t&&(n.insert=t),r&&(n.where=r),n}createLoad(e,t,r){const n={type:o.types.LOAD,source:e};return t&&(n.destination=t),this.addSilent(n,Boolean(r))}createClear(e,t){return this.addSilent({type:o.types.CLEAR,source:e},Boolean(t))}createCreate(e,t){return this.addSilent({type:o.types.CREATE,source:e},Boolean(t))}createDrop(e,t){return this.addSilent({type:o.types.DROP,source:e},Boolean(t))}createAdd(e,t,r){return this.addSilent({type:o.types.ADD,source:e,destination:t},Boolean(r))}createMove(e,t,r){return this.addSilent({type:o.types.MOVE,source:e,destination:t},Boolean(r))}createCopy(e,t,r){return this.addSilent({type:o.types.COPY,source:e,destination:t},Boolean(r))}addSilent(e,t){return t&&(e.silent=t),e}flattenMulti(e,t){if(!t)return e;const r=e.type,n=e.input;let i=[];for(const e of n)e.type===r?i.push(...e.input):i.push(e);return e.input=i,e}}},24693:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.toSparqlJs=t.toSparql=void 0;const s=r(91032),c=r(22112),u=r(55403),l=a(r(47914)),d=o(r(376)),p=o(r(83152)),h=l.types,f=l.expressionTypes;let y;const g=new d.default;function m(e){b();let t=v(e=function(e){return D(e,[])}(e));return"group"===t.type?t.patterns[0]:t}function b(){y={project:!1,extend:[],group:[],aggregates:[],order:[]}}function v(e){switch(e.type!==h.EXTEND&&e.type!==h.ORDER_BY&&e.type!==h.GRAPH&&(y.project=!1),e.type){case h.EXPRESSION:return _(e);case h.ASK:return A(e,h.ASK);case h.BGP:return function(e){let t=e.patterns.map(E);return 0===t.length?null:{type:"bgp",triples:t}}(e);case h.CONSTRUCT:return function(e){return{type:"query",prefixes:{},queryType:"CONSTRUCT",template:e.template.map(E),where:p.default.flatten([v(e.input)])}}(e);case h.DESCRIBE:return A(e,h.DESCRIBE);case h.DISTINCT:return function(e){let t=v(e.input);return t.patterns[0].distinct=!0,t}(e);case h.EXTEND:return function(e){return y.project?(y.extend.push(e),v(e.input)):p.default.flatten([v(e.input),{type:"bind",variable:e.variable,expression:_(e.expression)}])}(e);case h.FROM:return function(e){const t=v(e.input);let r=t;return"group"===t.type&&(r=t.patterns[0]),r.from={default:e.default,named:e.named},t}(e);case h.FILTER:return function(e){return{type:"group",patterns:p.default.flatten([v(e.input),{type:"filter",expression:_(e.expression)}])}}(e);case h.GRAPH:return function(e){return{type:"graph",patterns:p.default.flatten([v(e.input)]),name:e.name}}(e);case h.GROUP:return function(e){const t=v(e.input),r=e.aggregates.map(O);return y.aggregates.push(...r),y.group.push(...e.variables),t}(e);case h.JOIN:return function(e){return p.default.flatten(e.input.map(v)).reduce(((e,t)=>("bgp"!==t.type||0==e.length||"bgp"!==e[e.length-1].type?e.push(t):e[e.length-1].triples.push(...t.triples),e)),[])}(e);case h.LEFT_JOIN:return function(e){const t={type:"optional",patterns:[v(e.input[1])]};return e.expression&&t.patterns.push({type:"filter",expression:_(e.expression)}),t.patterns=p.default.flatten(t.patterns),p.default.flatten([v(e.input[0]),t])}(e);case h.MINUS:return function(e){let t=v(e.input[1]);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),p.default.flatten([v(e.input[0]),{type:"minus",patterns:t}])}(e);case h.NOP:return{};case h.ORDER_BY:return function(e){return y.order.push(...e.expressions),v(e.input)}(e);case h.PATH:return function(e){return{type:"bgp",triples:[{subject:e.subject,predicate:w(e.predicate),object:e.object}]}}(e);case h.PATTERN:return E(e);case h.PROJECT:return A(e,h.PROJECT);case h.REDUCED:return function(e){let t=v(e.input);return t.patterns[0].reduced=!0,t}(e);case h.SERVICE:return function(e){let t=v(e.input);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),{type:"service",name:e.name,silent:e.silent,patterns:t}}(e);case h.SLICE:return function(e){let t=v(e.input),r=t;return t.type&&"group"===t.type&&(r=t.patterns[0]),0!==e.start&&(r.offset=e.start),void 0!==e.length&&(r.limit=e.length),t}(e);case h.UNION:return function(e){return{type:"union",patterns:e.input.map(v).map(S)}}(e);case h.VALUES:return function(e){return{type:"values",values:e.bindings.map((t=>{let r={};for(let n of e.variables){let e=`?${n.value}`;t[e]?r[e]=t[e]:r[e]=void 0}return r}))}}(e);case h.COMPOSITE_UPDATE:return function(e){return{prefixes:{},type:"update",updates:e.updates.map((e=>v(e).updates[0]))}}(e);case h.DELETE_INSERT:return function(e){var t;let r,n=e.where;if(n&&n.type===h.FROM){let e=n;n=e.input,r={default:e.default,named:e.named}}const i=[{updateType:"insertdelete",delete:N(e.delete||[]),insert:N(e.insert||[])}];if(r&&(i[0].using=r),!n||n.type===h.BGP&&0===n.patterns.length)i[0].where=[];else{const e=[];let r=v(D(n,e));if("group"===r.type?i[0].where=r.patterns:i[0].where=[r],e.length>0){if(1!==e.length)throw new Error("This is unexpected and might indicate an error in graph handling for updates.");""!==(null===(t=e[0])||void 0===t?void 0:t.value)&&(i[0].where=[{type:"graph",patterns:i[0].where,name:e[0]}])}}return e.delete||e.where?e.insert||e.where?!e.insert&&e.where&&"bgp"===e.where.type&&(0,s.isomorphic)(e.delete,e.where.patterns)&&(delete i[0].where,i[0].updateType="deletewhere"):(delete i[0].insert,delete i[0].where,e.delete.some((e=>"Variable"===e.subject.termType||"Variable"===e.predicate.termType||"Variable"===e.object.termType))?i[0].updateType="deletewhere":i[0].updateType="delete"):(i[0].updateType="insert",delete i[0].delete,delete i[0].where),{prefixes:{},type:"update",updates:i}}(e);case h.LOAD:return function(e){const t=[{type:"load",silent:Boolean(e.silent),source:e.source}];return e.destination&&(t[0].destination=e.destination),{prefixes:{},type:"update",updates:t}}(e);case h.CLEAR:return function(e){return I(e,"clear")}(e);case h.CREATE:return function(e){return I(e,"create")}(e);case h.DROP:return function(e){return I(e,"drop")}(e);case h.ADD:return function(e){return P(e,"add")}(e);case h.MOVE:return function(e){return P(e,"move")}(e);case h.COPY:return function(e){return P(e,"copy")}(e)}throw new Error(`Unknown Operation type ${e.type}`)}function _(e){switch(e.expressionType){case f.AGGREGATE:return function(e){const t={expression:_(e.expression),type:"aggregate",aggregation:e.aggregator,distinct:e.distinct};return e.separator&&(t.separator=e.separator),t}(e);case f.EXISTENCE:return function(e){return{type:"operation",operator:e.not?"notexists":"exists",args:[{type:"group",patterns:p.default.flatten([v(e.input)])}]}}(e);case f.NAMED:return function(e){return{type:"functionCall",function:e.name,args:e.args.map(_)}}(e);case f.OPERATOR:return function(e){if("desc"===e.operator){return{expression:_(e.args[0]),descending:!0}}const t={type:"operation",operator:e.operator,args:e.args.map(_)};return"in"!==t.operator&&"notin"!==t.operator||(t.args=[t.args[0]].concat([t.args.slice(1)])),t}(e);case f.TERM:return function(e){return e.term}(e);case f.WILDCARD:return function(e){return e.wildcard}(e)}throw new Error(`Unknown Expression Operation type ${e.expressionType}`)}function w(e){switch(e.type){case h.ALT:return function(e){const t=e.input.map(w);return t.every((e=>"pathType"in e&&"!"===e.pathType))?{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:p.default.flatten(t.map((e=>e.items)))}]}:{type:"path",pathType:"|",items:t}}(e);case h.INV:return function(e){if(e.path.type===h.NPS){const t=e.path.iris.map((e=>({type:"path",pathType:"^",items:[e]})));return t.length<=1?{type:"path",pathType:"!",items:t}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:t}]}}return{type:"path",pathType:"^",items:[w(e.path)]}}(e);case h.LINK:return function(e){return e.iri}(e);case h.NPS:return function(e){return e.iris.length<=1?{type:"path",pathType:"!",items:e.iris}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:e.iris}]}}(e);case h.ONE_OR_MORE_PATH:return function(e){return{type:"path",pathType:"+",items:[w(e.path)]}}(e);case h.SEQ:return function(e){return{type:"path",pathType:"/",items:e.input.map(w)}}(e);case h.ZERO_OR_MORE_PATH:return function(e){return{type:"path",pathType:"*",items:[w(e.path)]}}(e);case h.ZERO_OR_ONE_PATH:return function(e){return{type:"path",pathType:"?",items:[w(e.path)]}}(e)}throw new Error(`Unknown Path type ${e.type}`)}function T(e){return(0,c.termToString)(e)}function S(e){return Array.isArray(e)?1===e.length?e[0]:{type:"group",patterns:e}:e}function O(e){return e}function E(e){return{subject:e.subject,predicate:e.predicate,object:e.object}}function x(e,t){let r=p.default.isSimpleTerm(e)?T(e):e;if("string"==typeof r){if(t[r])return t[r]}else if(Array.isArray(e))e=e.map((e=>x(e,t)));else for(let r of Object.keys(e))e[r]=x(e[r],t);return e}function A(e,t){const r={type:"query",prefixes:{}},n=r;let i;t===h.PROJECT?(r.queryType="SELECT",i=e.variables):t===h.ASK?r.queryType="ASK":t===h.DESCRIBE&&(r.queryType="DESCRIBE",i=e.terms);const a=y.extend,o=y.group,s=y.aggregates,c=y.order;b(),y.project=!0;let l=p.default.flatten([v(e.input)]);1===l.length&&"group"===l[0].type&&(l=l[0].patterns),r.where=l;let d={};for(let e of y.aggregates)d[T(e.variable)]=_(e);let f={};for(let e=y.extend.length-1;e>=0;--e){let t=y.extend[e];f[T(t.variable)]=x(_(t.expression),d)}if(y.group.length>0&&(n.group=y.group.map((e=>{let t=T(e);if(f[t]){let r=f[t];return delete f[t],{variable:e,expression:r}}return{expression:e}}))),y.order.length>0&&(n.order=y.order.map(v).map((e=>e.descending?e:{expression:e}))),i&&(n.variables=i.map((e=>{let t=T(e);return f[t]?{variable:e,expression:f[t]}:e})),0===n.variables.length&&(n.variables=[new u.Wildcard])),r.where.length>0&&"filter"===r.where[r.where.length-1].type){const e=r.where[r.where.length-1];R(e,Object.keys(d))&&(n.having=p.default.flatten([x(e.expression,d)]),r.where.splice(-1))}return y.extend=a,y.group=o,y.aggregates=s,y.order=c,{type:"group",patterns:[n]}}function R(e,t){return p.default.isSimpleTerm(e)?t.indexOf(T(e))>=0:Array.isArray(e)?e.some((e=>R(e,t))):e===Object(e)?Object.keys(e).some((r=>R(e[r],t))):t.indexOf(e)>=0}function I(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return"DEFAULT"===e.source?r[0].graph={default:!0}:"NAMED"===e.source?r[0].graph={named:!0}:"ALL"===e.source?r[0].graph={all:!0}:r[0].graph={type:"graph",name:e.source},{prefixes:{},type:"update",updates:r}}function P(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return r[0].source="DEFAULT"===e.source?{type:"graph",default:!0}:{type:"graph",name:e.source},r[0].destination="DEFAULT"===e.destination?{type:"graph",default:!0}:{type:"graph",name:e.destination},{prefixes:{},type:"update",updates:r}}function N(e){if(!e)return[];const t={};return e.forEach((e=>{const r=e.graph.value;t[r]||(t[r]=[]),t[r].push(e)})),Object.keys(t).map((e=>""===e?{type:"bgp",triples:t[e].map(E)}:{type:"graph",triples:t[e].map(E),name:t[e][0].graph}))}function D(e,t){if(Array.isArray(e))return e.map((e=>D(e,t)));if(!e.type)return e;if(e.type===h.DELETE_INSERT)return e;if((e.type===h.PATTERN||e.type===h.PATH)&&e.graph)return t.push(e.graph),""!==e.graph.name?e.type===h.PATTERN?g.createPattern(e.subject,e.predicate,e.object):g.createPath(e.subject,e.predicate,e.object):e;const r={},n={},i={};for(let t of Object.keys(e)){const a=[];if(r[t]=D(e[t],a),a.length>0){n[t]=a;for(const e of a)i[e.value]=e}}const a=Object.keys(i);if(a.length>0)if(1!==a.length||[h.PROJECT,h.SERVICE].includes(e.type)){if(e.type===h.BGP)return function(e,t){var r;const n={};for(let i=0;i""===n[e][0].value?t:g.createGraph(t,n[e][r]))):""!==n[e][0].value&&(r[e]=g.createGraph(t,n[e][0]))}}else t.push(i[a[0]]);return r}t.toSparql=function(e,t={}){return new u.Generator(t).stringify(m(e))},t.toSparqlJs=m},71029:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(53933),c=r(22112),u=a(r(47914)),l=o(r(376)),d=o(r(83152)),p=r(55403).Parser,h=u.types;let f,y=new Set,g=0,m=!1;function b(e,t,r){if(y=new Set,g=0,m=Boolean(t),!e.type)return f.createNop();if("query"!==e.type&&"update"!==e.type)throw new Error("Translate only works on complete query or update objects.");let n;var i;return w(e),"query"===e.type?(n=S({type:"group",patterns:e.where||[]}),n=function(e,t){const r=e,n=[],i={};if(r.variables=r.variables&&r.variables.map((e=>C(e,i))),r.having=r.having&&r.having.map((e=>C(e,i))),r.order=r.order&&r.order.map((e=>C(e,i))),r.group||Object.keys(i).length>0){const e=Object.keys(i).map((e=>function(e,t){if("aggregate"!==e.type||!e.aggregation)throw new Error(`Unexpected input: ${JSON.stringify(e)}`);const r=O(e);return r.variable=t,r}(i[e],f.createTerm(e)))),n=[];if(r.group)for(const e of r.group)if(d.default.isSimpleTerm(e.expression))n.push(e.expression);else{const r="variable"in e?e.variable:A();t=f.createExtend(t,r,O(e.expression)),n.push(r)}t=f.createGroup(t,n,e)}if(r.having)for(let e of r.having)t=f.createFilter(t,O(e));e.values&&(t=f.createJoin([t,j(e)]));let a=[];if("SELECT"===e.queryType||"DESCRIBE"===e.queryType)if(e.variables.some((e=>e&&d.default.isWildcard(e))))a=Object.values(T(e)).sort(((e,t)=>e.value.localeCompare(t.value)));else for(let t of e.variables)_(t)||!("variable"in t)?a.push(t):t.variable&&(a.push(t.variable),n.push(t));for(let e of n)t=f.createExtend(t,e.variable,O(e.expression));return r.order&&(t=f.createOrderBy(t,r.order.map((e=>{let t=O(e.expression);return e.descending&&(t=f.createOperatorExpression("desc",[t])),t})))),"SELECT"===e.queryType&&(t=f.createProject(t,a)),r.distinct&&(t=f.createDistinct(t)),r.reduced&&(t=f.createReduced(t)),"CONSTRUCT"===e.queryType?t=f.createConstruct(t,(e.template||[]).map(R)):"ASK"===e.queryType?t=f.createAsk(t):"DESCRIBE"===e.queryType&&(t=f.createDescribe(t,a)),(r.offset||r.limit)&&(t=f.createSlice(t,r.offset||0,r.limit)),r.from&&(t=f.createFrom(t,r.from.default,r.from.named)),t}(e,n)):"update"===e.type&&(n=1===(i=e).updates.length?M(i.updates[0]):f.createCompositeUpdate(i.updates.map(M))),r&&(n=k(n)),n}function v(e){return Boolean(null==e?void 0:e.termType)}function _(e){return"Variable"===(null==e?void 0:e.termType)}function w(e){if(v(e))_(e)&&y.add(`?${e.value}`);else if(Array.isArray(e))for(const t of e)w(t);else if(e&&"object"==typeof e)for(let t of Object.keys(e))t.startsWith("?")?y.add(t):t.startsWith("$")&&y.add(`?${t.slice(1)}`),w(e[t])}function T(e){let t={};if((r=e).subject&&r.predicate&&r.object){const r=[T(e.subject),T(e.predicate),T(e.object),e.graph?T(e.graph):{}];Object.assign(t,...r)}else if(v(e))_(e)&&(t[e.value]=e);else if("bgp"===e.type){const r=e.triples;Object.assign(t,...r.map(T))}else if("path"===e.type)Object.assign(t,...e.items.map(T));else if("group"===e.type||"union"===e.type||"optional"===e.type)Object.assign(t,...e.patterns.map(T));else if("service"===e.type||"graph"===e.type)Object.assign(t,T(e.name)),Object.assign(t,...e.patterns.map(T));else if("bind"===e.type)Object.assign(t,T(e.variable));else if("values"===e.type){if(e.values.length>0){const r=Object.keys(e.values[0]).map((e=>f.createTerm(e)));Object.assign(t,...r.map(T))}}else if("query"===e.type&&("SELECT"===e.queryType||"DESCRIBE"===e.queryType)){e.where&&e.variables.some(d.default.isWildcard)&&Object.assign(t,...e.where.map(T));for(const r of e.variables)_(r)?Object.assign(t,T(r)):r.variable&&Object.assign(t,T(r.variable));if("SELECT"===e.queryType){if(e.group)for(const r of e.group)r.variable&&Object.assign(t,T(r.variable));if(e.values){const r={type:"values",values:e.values};Object.assign(t,T(r))}}}var r;return t}function S(e){if("bgp"===e.type)return function(e){let t=[],r=[];for(let i of e.triples)if("pathType"in i.predicate){let e=x((n=i).subject,E(n.predicate),n.object);for(let n of e)n.type===h.PATH?(t.length>0&&r.push(f.createBgp(t)),t=[],r.push(n)):t.push(n)}else t.push(R(i));var n;return t.length>0&&r.push(f.createBgp(t)),1===r.length?r[0]:f.createJoin(r)}(e);if("union"===e.type)return f.createUnion(e.patterns.map((e=>("group"!==e.type&&(e={type:"group",patterns:[e]}),S(e)))));if("graph"===e.type){let t=S({type:"group",patterns:e.patterns});return t=m?P(t,e.name):f.createGraph(t,e.name),t}if("values"===e.type)return j(e);if("query"===e.type)return b(e,m,!1);if("group"===e.type){let t=[],r=[];for(let n of e.patterns)("filter"===n.type?t:r).push(n);let n=r.reduce(N,f.createBgp([])),i=t.map((e=>O(e.expression)));return i.length>0&&(n=f.createFilter(n,i.reduce(((e,t)=>f.createOperatorExpression("&&",[e,t]))))),n}throw new Error(`Unexpected type: ${e.type}`)}function O(e){if(d.default.isSimpleTerm(e))return f.createTermExpression(e);if(d.default.isQuad(e))return d.default.hasQuadVariables(e)?f.createOperatorExpression("triple",[O(e.subject),O(e.predicate),O(e.object)]):f.createTermExpression(e);if(d.default.isWildcard(e))return f.createWildcardExpression();if("aggregation"in e)return f.createAggregateExpression(e.aggregation,O(e.expression),Boolean(e.distinct),e.separator);if("function"in e)return f.createNamedExpression(e.function,e.args.map(O));if("operator"in e)return"exists"===e.operator||"notexists"===e.operator?f.createExistenceExpression("notexists"===e.operator,S(e.args[0])):("in"!==e.operator&&"notin"!==e.operator||(e.args=[e.args[0]].concat(e.args[1])),f.createOperatorExpression(e.operator,e.args.map(O)));throw new Error(`Unknown expression: ${JSON.stringify(e)}`)}function E(e){if(d.default.isSimpleTerm(e)){if("NamedNode"===e.termType)return f.createLink(e);throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(e)}`)}if("^"===e.pathType)return f.createInv(E(e.items[0]));if("!"===e.pathType){let t,r=[],n=[];t="pathType"in e.items[0]&&"|"===e.items[0].pathType?e.items[0].items:e.items;for(let e of t)if(d.default.isSimpleTerm(e))r.push(e);else{if("^"!==e.pathType)throw new Error(`Unexpected item: ${JSON.stringify(e)}`);n.push(e.items[0])}let i=f.createNps(r),a=f.createInv(f.createNps(n));return 0===n.length?i:0===r.length?a:f.createAlt([i,a])}if("/"===e.pathType)return f.createSeq(e.items.map(E));if("|"===e.pathType)return f.createAlt(e.items.map(E));if("*"===e.pathType)return f.createZeroOrMorePath(E(e.items[0]));if("+"===e.pathType)return f.createOneOrMorePath(E(e.items[0]));if("?"===e.pathType)return f.createZeroOrOnePath(E(e.items[0]));throw new Error(`Unable to translate path expression ${JSON.stringify(e)}`)}function x(e,t,r){if(t.type===h.LINK)return[f.createPattern(e,t.iri,r)];if(t.type===h.INV)return x(r,t.path,e);if(t.type===h.SEQ){let n=e;return d.default.flatten(t.input.map(((e,i)=>{const a=i===t.input.length-1?r:A(),o=x(n,e,a);return"Variable"===a.termType&&(n=a),o})))}return[f.createPath(e,t,r)]}function A(){let e="?var"+g++;return y.has(e)?A():(y.add(e),f.createTerm(e))}function R(e){if("pathType"in e.predicate)throw new Error("Trying to translate property path to quad.");return f.createPattern(e.subject,e.predicate,e.object,e.graph)}t.default=function(e,t){let r;if(t=t||{},f=new l.default(t.dataFactory),"string"==typeof e){let n=new p(t);n._resetBlanks(),r=n.parse(e)}else r=e;return b(r,t.quads,t.blankToVariable)};let I=Object.values(h);function P(e,t,r){if(e.type===h.GRAPH){if(r)throw new Error("Recursing through nested GRAPH statements with a replacement is impossible.");e=P(e.input,e.name)}else if(e.type===h.SERVICE);else if(e.type===h.BGP)e.patterns=e.patterns.map((e=>(r&&(e.subject.equals(t)&&(e.subject=r),e.predicate.equals(t)&&(e.predicate=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t),e)));else if(e.type===h.PATH)r&&(e.subject.equals(t)&&(e.subject=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t);else if(e.type!==h.PROJECT||r)if(e.type!==h.EXTEND||r)for(let n of Object.keys(e))Array.isArray(e[n])?e[n]=e[n].map((e=>P(e,t,r))):I.indexOf(e[n].type)>=0?e[n]=P(e[n],t,r):r&&_(e[n])&&e[n].equals(t)&&(e[n]=r);else e.variable.equals(t)&&(r=A()),e.input=P(e.input,t,r);else e.variables.some((e=>e.equals(t)))||(r=A()),e.input=P(e.input,t,r);return e}function N(e,t){if("optional"===t.type){const r=S({type:"group",patterns:t.patterns});e=r.type===h.FILTER?f.createLeftJoin(e,r.input,r.expression):f.createLeftJoin(e,r)}else if("minus"===t.type){const r=S({type:"group",patterns:t.patterns});e=f.createMinus(e,r)}else if("bind"===t.type)e=f.createExtend(e,t.variable,O(t.expression));else if("service"===t.type){const r={type:"group",patterns:t.patterns};e=D(e,f.createService(S(r),t.name,t.silent))}else e=D(e,S(t));return e}function D(e,t){return e.type===h.BGP&&t.type===h.BGP?e=f.createBgp([...e.patterns,...t.patterns]):e.type===h.BGP&&0===e.patterns.length?e=t:t.type===h.BGP&&0===t.patterns.length||(e=f.createJoin([e,t])),e}function j(e){let t=(0===e.values.length?[]:Object.keys(e.values[0])).map(f.createTerm.bind(f)),r=e.values.map((e=>{let t=Object.keys(e);t=t.filter((t=>void 0!==e[t]));let r={};for(let n of t)r[n]=e[n];return r}));return f.createValues(t,r)}function C(e,t){if("type"in e&&"aggregate"===e.type){let r,n=!1;for(let i of Object.keys(t))if(s(t[i],e)){r=f.createTerm(i),n=!0;break}return n||(r=A(),t[(0,c.termToString)(r)]=e),r}return"expression"in e&&e.expression?{...e,expression:C(e.expression,t)}:"args"in e&&e.args?{...e,args:e.args.map((e=>C(e,t)))}:e}function M(e){if("type"in e){if("load"===e.type)return function(e){return f.createLoad(e.source,e.destination,e.silent)}(e);if("clear"===e.type||"create"===e.type||"drop"===e.type)return function(e){let t;switch(t=d.default.isSimpleTerm(e.graph)?e.graph:e.graph.all?"ALL":e.graph.default?"DEFAULT":e.graph.named?"NAMED":e.graph.name,e.type){case"clear":return f.createClear(t,e.silent);case"create":return f.createCreate(t,e.silent);case"drop":return f.createDrop(t,e.silent)}}(e);if("add"===e.type||"copy"===e.type||"move"===e.type)return function(e){const t=e.source.default?"DEFAULT":e.source.name,r=e.destination.default?"DEFAULT":e.destination.name;switch(e.type){case"copy":return f.createCopy(t,r,e.silent);case"move":return f.createMove(t,r,e.silent);case"add":return f.createAdd(t,r,e.silent)}}(e)}else if("insertdelete"===e.updateType||"deletewhere"===e.updateType||"delete"===e.updateType||"insert"===e.updateType)return function(e){if(!m)throw new Error("INSERT/DELETE operations are only supported with quads option enabled");let t,r=[],n=[];if(e.delete&&(r=d.default.flatten(e.delete.map((t=>L(t,e.graph))))),e.insert&&(n=d.default.flatten(e.insert.map((t=>L(t,e.graph))))),e.where&&e.where.length>0){t=S({type:"group",patterns:e.where});const r=e.using;r?t=f.createFrom(t,r.default,r.named):e.graph&&(t=P(t,e.graph))}else"deletewhere"===e.updateType&&r.length>0&&(t=f.createBgp(r));return f.createDeleteInsert(r.length>0?r:void 0,n.length>0?n:void 0,t)}(e);throw new Error(`Unknown update type ${JSON.stringify(e)}`)}function L(e,t){let r=t;"graph"===e.type&&(r=e.name);let n=e.triples;return r&&(n=n.map((e=>Object.assign(e,{graph:r})))),n.map(R)}function k(e){const t={},r=Array.from(y).reduce(((e,t)=>(e[t]=!0,e)),{});return d.default.mapOperation(e,{[u.types.DELETE_INSERT]:e=>({result:f.createDeleteInsert(e.delete,e.insert,e.where&&k(e.where)),recurse:!1}),[u.types.PATH]:(e,t)=>({result:t.createPath(n(e.subject),e.predicate,n(e.object),n(e.graph)),recurse:!1}),[u.types.PATTERN]:(e,t)=>({result:t.createPattern(n(e.subject),n(e.predicate),n(e.object),n(e.graph)),recurse:!1}),[u.types.CONSTRUCT]:e=>({result:f.createConstruct(k(e.input),e.template),recurse:!1})});function n(e){if("BlankNode"===e.termType){let n=t[e.value];return n||(n=d.default.createUniqueVariable(e.value,r,f.dataFactory),r[n.value]=!0,t[e.value]=n),n}return e}}},83152:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(47914),a=n(r(376)),o=r(13252);class s{static flatten(e){return Array.prototype.concat(...e).filter((e=>e))}static objectify(e){if(e.termType){if("Quad"===e.termType)return{type:"pattern",termType:"Quad",subject:s.objectify(e.subject),predicate:s.objectify(e.predicate),object:s.objectify(e.object),graph:s.objectify(e.graph)};{let t={termType:e.termType,value:e.value};return e.language&&(t.language=e.language),e.datatype&&(t.datatype=s.objectify(e.datatype)),t}}if(Array.isArray(e))return e.map((e=>s.objectify(e)));if(e===Object(e)){let t={};for(let r of Object.keys(e))t[r]=s.objectify(e[r]);return t}return e}static inScopeVariables(e){const t=[];function r(e){t.find((t=>e.value===t.value))||t.push(e)}function n(e){"Variable"===e.subject.termType&&r(e.subject),"Variable"===e.predicate.termType&&r(e.predicate),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.predicate.termType&&n(e.predicate),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph)}return s.recurseOperation(e,{[i.types.EXPRESSION]:e=>(e.expressionType===i.expressionTypes.AGGREGATE&&e.variable&&r(e.variable),!0),[i.types.EXTEND]:e=>(r(e.variable),!0),[i.types.GRAPH]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.GROUP]:e=>(e.variables.forEach(r),!0),[i.types.PATH]:e=>("Variable"===e.subject.termType&&r(e.subject),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph),!0),[i.types.PATTERN]:e=>(n(e),!0),[i.types.PROJECT]:e=>(e.variables.forEach(r),!1),[i.types.SERVICE]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.VALUES]:e=>(e.variables.forEach(r),!0)}),t}static recurseOperation(e,t){let r=e,n=!0;const a=t[e.type];if(a&&(n=a(e)),!n)return;let o=e=>s.recurseOperation(e,t);switch(r.type){case i.types.ALT:r.input.map(o);break;case i.types.ASK:o(r.input);break;case i.types.BGP:r.patterns.forEach(o);break;case i.types.CONSTRUCT:o(r.input),r.template.map(o);break;case i.types.DESCRIBE:case i.types.DISTINCT:o(r.input);break;case i.types.EXPRESSION:r.expressionType===i.expressionTypes.EXISTENCE&&o(r.input);break;case i.types.EXTEND:case i.types.FILTER:o(r.input),o(r.expression);break;case i.types.FROM:case i.types.GRAPH:o(r.input);break;case i.types.GROUP:o(r.input),r.aggregates.forEach(o);break;case i.types.INV:o(r.path);break;case i.types.JOIN:r.input.map(o);break;case i.types.LEFT_JOIN:r.input.map(o),r.expression&&o(r.expression);break;case i.types.LINK:break;case i.types.MINUS:r.input.map(o);break;case i.types.NOP:case i.types.NPS:break;case i.types.ONE_OR_MORE_PATH:o(r.path);break;case i.types.ORDER_BY:o(r.input),r.expressions.forEach(o);break;case i.types.PATH:o(r.predicate);break;case i.types.PATTERN:break;case i.types.PROJECT:case i.types.REDUCED:o(r.input);break;case i.types.SEQ:r.input.map(o);break;case i.types.SERVICE:case i.types.SLICE:o(r.input);break;case i.types.UNION:r.input.map(o);break;case i.types.VALUES:break;case i.types.ZERO_OR_MORE_PATH:case i.types.ZERO_OR_ONE_PATH:o(r.path);break;case i.types.COMPOSITE_UPDATE:r.updates.forEach((e=>o(e)));break;case i.types.DELETE_INSERT:r.delete&&r.delete.forEach((e=>o(e))),r.insert&&r.insert.forEach((e=>o(e))),r.where&&o(r.where);break;case i.types.LOAD:case i.types.CLEAR:case i.types.CREATE:case i.types.DROP:case i.types.ADD:case i.types.MOVE:case i.types.COPY:break;default:throw new Error(`Unknown Operation type ${r.type}`)}}static mapOperation(e,t,r){let n=e,o=!0,c=!0;r=r||new a.default;const u=t[e.type];if(u){const t=u(e,r);n=t.result,o=t.recurse,c=!1!==t.copyMetadata}let l;if(c&&(n.metadata||e.metadata)&&(l={...n.metadata,...e.metadata}),!o)return l&&(n.metadata=l),n;let d=e=>s.mapOperation(e,t,r);switch(n.type){case i.types.ALT:n=r.createAlt(n.input.map(d));break;case i.types.ASK:n=r.createAsk(d(n.input));break;case i.types.BGP:n=r.createBgp(n.patterns.map(d));break;case i.types.CONSTRUCT:n=r.createConstruct(d(n.input),n.template.map(d));break;case i.types.DESCRIBE:n=r.createDescribe(d(n.input),n.terms);break;case i.types.DISTINCT:n=r.createDistinct(d(n.input));break;case i.types.EXPRESSION:n=s.mapExpression(n,t,r);break;case i.types.EXTEND:n=r.createExtend(d(n.input),n.variable,d(n.expression));break;case i.types.FILTER:n=r.createFilter(d(n.input),d(n.expression));break;case i.types.FROM:n=r.createFrom(d(n.input),[...n.default],[...n.named]);break;case i.types.GRAPH:n=r.createGraph(d(n.input),n.name);break;case i.types.GROUP:n=r.createGroup(d(n.input),[].concat(n.variables),n.aggregates.map(d));break;case i.types.INV:n=r.createInv(d(n.path));break;case i.types.JOIN:n=r.createJoin(n.input.map(d));break;case i.types.LEFT_JOIN:n=r.createLeftJoin(d(n.input[0]),d(n.input[1]),n.expression?d(n.expression):void 0);break;case i.types.LINK:n=r.createLink(n.iri);break;case i.types.MINUS:n=r.createMinus(d(n.input[0]),d(n.input[1]));break;case i.types.NOP:n=r.createNop();break;case i.types.NPS:n=r.createNps([].concat(n.iris));break;case i.types.ONE_OR_MORE_PATH:n=r.createOneOrMorePath(d(n.path));break;case i.types.ORDER_BY:n=r.createOrderBy(d(n.input),n.expressions.map(d));break;case i.types.PATH:n=r.createPath(n.subject,d(n.predicate),n.object,n.graph);break;case i.types.PATTERN:n=r.createPattern(n.subject,n.predicate,n.object,n.graph);break;case i.types.PROJECT:n=r.createProject(d(n.input),[...n.variables]);break;case i.types.REDUCED:n=r.createReduced(d(n.input));break;case i.types.SEQ:n=r.createSeq(n.input.map(d));break;case i.types.SERVICE:n=r.createService(d(n.input),n.name,n.silent);break;case i.types.SLICE:n=r.createSlice(d(n.input),n.start,n.length);break;case i.types.UNION:n=r.createUnion(n.input.map(d));break;case i.types.VALUES:n=r.createValues([].concat(n.variables),n.bindings.map((e=>Object.assign({},e))));break;case i.types.ZERO_OR_MORE_PATH:n=r.createZeroOrMorePath(d(n.path));break;case i.types.ZERO_OR_ONE_PATH:n=r.createZeroOrOnePath(d(n.path));break;case i.types.COMPOSITE_UPDATE:n=r.createCompositeUpdate(n.updates.map(d));break;case i.types.DELETE_INSERT:n=r.createDeleteInsert(n.delete?n.delete.map(d):void 0,n.insert?n.insert.map(d):void 0,n.where?d(n.where):void 0);break;case i.types.LOAD:n=r.createLoad(n.source,n.destination,n.silent);break;case i.types.CLEAR:n=r.createClear(n.source,n.silent);break;case i.types.CREATE:n=r.createCreate(n.source,n.silent);break;case i.types.DROP:n=r.createDrop(n.source,n.silent);break;case i.types.ADD:n=r.createAdd(n.source,n.destination);break;case i.types.MOVE:n=r.createMove(n.source,n.destination);break;case i.types.COPY:n=r.createCopy(n.source,n.destination);break;default:throw new Error(`Unknown Operation type ${n.type}`)}return l&&(n.metadata=l),n}static mapExpression(e,t,r){let n=e,o=!0;r=r||new a.default;const c=t[e.expressionType];if(c&&({result:n,recurse:o}=c(e,r)),!o)return n;let u=e=>s.mapOperation(e,t,r);switch(e.expressionType){case i.expressionTypes.AGGREGATE:return e.variable?r.createBoundAggregate(e.variable,e.aggregator,u(e.expression),e.distinct,e.separator):r.createAggregateExpression(e.aggregator,u(e.expression),e.distinct,e.separator);case i.expressionTypes.EXISTENCE:return r.createExistenceExpression(e.not,u(e.input));case i.expressionTypes.NAMED:return r.createNamedExpression(e.name,e.args.map(u));case i.expressionTypes.OPERATOR:return r.createOperatorExpression(e.operator,e.args.map(u));case i.expressionTypes.TERM:return r.createTermExpression(e.term);case i.expressionTypes.WILDCARD:return r.createWildcardExpression();default:throw new Error(`Unknown Expression type ${e.expressionType}`)}}static cloneOperation(e){return s.mapOperation(e,{})}static cloneExpression(e){return s.mapExpression(e,{})}static createUniqueVariable(e,t,r){let n=0,i=e;for(;t[i];)i=`${e}${n++}`;return r.variable(i)}static isSimpleTerm(e){return void 0!==e.termType&&"Quad"!==e.termType&&"Wildcard"!==e.termType}static isQuad(e){return"Quad"===e.termType}static hasQuadVariables(e){return(0,o.someTermsNested)(e,(e=>"Variable"===e.termType))}static isWildcard(e){return"Wildcard"===e.termType}}t.default=s},33206:e=>{function t(e){this._options=e=e||{};var t=e.prefixes||{};this._prefixByIri={};var r=[];for(var n in t){var i=t[n];o(i)&&(this._prefixByIri[i]=n,r.push(i))}var a=r.join("|").replace(/[\]\/\(\)\*\+\?\.\\\$]/g,"\\$&");this._prefixRegex=new RegExp("^("+a+")([a-zA-Z][\\-_a-zA-Z0-9]*)$"),this._usedPrefixes={},this._sparqlStar=e.sparqlStar,this._indent=o(e.indent)?e.indent:" ",this._newline=o(e.newline)?e.newline:"\n",this._explicitDatatype=Boolean(e.explicitDatatype)}t.prototype.toQuery=function(e){var t="";return e.queryType&&(t+=e.queryType.toUpperCase()+" "),e.reduced&&(t+="REDUCED "),e.distinct&&(t+="DISTINCT "),e.variables?t+=u(e.variables,void 0,(function(e){return s(e)?this.toEntity(e):"("+this.toExpression(e.expression)+" AS "+a(e.variable)+")"}),this)+" ":e.template&&(t+=this.group(e.template,!0)+this._newline),e.from&&(t+=this.graphs("FROM ",e.from.default)+this.graphs("FROM NAMED ",e.from.named)),e.where&&(t+="WHERE "+this.group(e.where,!0)+this._newline),e.updates&&(t+=u(e.updates,";"+this._newline,this.toUpdate,this)),e.group&&(t+="GROUP BY "+u(e.group,void 0,(function(e){var t=s(e.expression)?this.toEntity(e.expression):"("+this.toExpression(e.expression)+")";return e.variable?"("+t+" AS "+a(e.variable)+")":t}),this)+this._newline),e.having&&(t+="HAVING ("+u(e.having,void 0,this.toExpression,this)+")"+this._newline),e.order&&(t+="ORDER BY "+u(e.order,void 0,(function(e){var t="("+this.toExpression(e.expression)+")";return e.descending?"DESC "+t:t}),this)+this._newline),e.offset&&(t+="OFFSET "+e.offset+this._newline),e.limit&&(t+="LIMIT "+e.limit+this._newline),e.values&&(t+=this.values(e)),(t=this.baseAndPrefixes(e)+t).trim()},t.prototype.baseAndPrefixes=function(e){var t=e.base?"BASE <"+e.base+">"+this._newline:"",r="";for(var n in e.prefixes)(this._options.allPrefixes||this._usedPrefixes[n])&&(r+="PREFIX "+n+": <"+e.prefixes[n]+">"+this._newline);return t+r},t.prototype.toPattern=function(e){var t=e.type||e instanceof Array&&"array"||(e.subject&&e.predicate&&e.object?"triple":"");if(!(t in this))throw new Error("Unknown entry type: "+t);return this[t](e)},t.prototype.triple=function(e){return this.toEntity(e.subject)+" "+this.toEntity(e.predicate)+" "+this.toEntity(e.object)+"."},t.prototype.array=function(e){return u(e,this._newline,this.toPattern,this)},t.prototype.bgp=function(e){return this.encodeTriples(e.triples)},t.prototype.encodeTriples=function(e){if(!e.length)return"";for(var t=[],r=void 0,n=void 0,i=0;i":case">=":case"<=":case"&&":case"||":case"=":case"!=":case"+":case"-":case"*":case"/":return(s(i[0])?this.toEntity(i[0]):"("+this.toExpression(i[0])+")")+" "+t+" "+(s(i[1])?this.toEntity(i[1]):"("+this.toExpression(i[1])+")");case"!":return"!("+this.toExpression(i[0])+")";case"uplus":return"+("+this.toExpression(i[0])+")";case"uminus":return"-("+this.toExpression(i[0])+")";case"notin":t="NOT IN";case"in":return this.toExpression(i[0])+" "+t+"("+(o(i[1])?i[1]:u(i[1],", ",this.toExpression,this))+")";case"notexists":t="NOT EXISTS";case"exists":return t+" "+this.group(i[0],!0);default:return t+"("+u(i,", ",this.toExpression,this)+")"}default:throw new Error("Unknown expression type: "+e.type)}},t.prototype.toEntity=function(e){if(s(e))switch(e.termType){case"Wildcard":return"*";case"Variable":return a(e);case"BlankNode":return"_:"+e.value;case"Literal":var t=e.value||"",i=e.language||"",o=e.datatype;if(e='"'+t.replace(r,n)+'"',i)e+="@"+i;else if(o){if(!this._explicitDatatype)switch(o.value){case"http://www.w3.org/2001/XMLSchema#string":return e;case"http://www.w3.org/2001/XMLSchema#integer":if(/^\d+$/.test(t))return t+" "}e+="^^"+this.encodeIRI(o.value)}return e;case"Quad":if(!this._sparqlStar)throw new Error("SPARQL* support is not enabled");return e.graph&&"DefaultGraph"!==e.graph.termType?"<< GRAPH "+this.toEntity(e.graph)+" { "+this.toEntity(e.subject)+" "+this.toEntity(e.predicate)+" "+this.toEntity(e.object)+" } >>":"<< "+this.toEntity(e.subject)+" "+this.toEntity(e.predicate)+" "+this.toEntity(e.object)+" >>";default:return this.encodeIRI(e.value)}else{var c=e.items.map(this.toEntity,this),u=e.pathType;switch(u){case"^":case"!":return u+c[0];case"*":case"+":case"?":return"("+c[0]+u+")";default:return"("+c.join(u)+")"}}};var r=/["\\\t\n\r\b\f]/g,n=function(e){return i[e]},i={"\\":"\\\\",'"':'\\"',"\t":"\\t","\n":"\\n","\r":"\\r","\b":"\\b","\f":"\\f"};function a(e){return"?"+e.value}function o(e){return"string"==typeof e}function s(e){return"string"==typeof e.termType}function c(e,t){if(!e||!s(e))return!1;if(!t||!s(t))return!1;if(e.termType!==t.termType)return!1;switch(e.termType){case"Literal":return e.value===t.value&&e.language===t.language&&c(e.datatype,t.datatype);case"Quad":return c(e.subject,t.subject)&&c(e.predicate,t.predicate)&&c(e.object,t.object)&&c(e.graph,t.graph);default:return e.value===t.value}}function u(e,t,r,n){return e.map(r,n).join(o(t)?t:" ")}t.prototype.encodeIRI=function(e){var t=this._prefixRegex.exec(e);if(t){var r=this._prefixByIri[t[1]];return this._usedPrefixes[r]=!0,r+":"+t[2]}return"<"+e+">"},t.prototype.toUpdate=function(e){switch(e.type||e.updateType){case"load":return"LOAD"+(e.source?" "+this.toEntity(e.source):"")+(e.destination?" INTO GRAPH "+this.toEntity(e.destination):"");case"insert":return"INSERT DATA "+this.group(e.insert,!0);case"delete":return"DELETE DATA "+this.group(e.delete,!0);case"deletewhere":return"DELETE WHERE "+this.group(e.delete,!0);case"insertdelete":return(e.graph?"WITH "+this.toEntity(e.graph)+this._newline:"")+(e.delete.length?"DELETE "+this.group(e.delete,!0)+this._newline:"")+(e.insert.length?"INSERT "+this.group(e.insert,!0)+this._newline:"")+(e.using?this.graphs("USING ",e.using.default):"")+(e.using?this.graphs("USING NAMED ",e.using.named):"")+"WHERE "+this.group(e.where,!0);case"add":case"copy":case"move":return e.type.toUpperCase()+" "+(e.silent?"SILENT ":"")+(e.source.default?"DEFAULT":this.toEntity(e.source.name))+" TO "+this.toEntity(e.destination.name);case"create":case"clear":case"drop":return e.type.toUpperCase()+(e.silent?" SILENT ":" ")+(e.graph.default?"DEFAULT":e.graph.named?"NAMED":e.graph.all?"ALL":"GRAPH "+this.toEntity(e.graph.name));default:throw new Error("Unknown update query type: "+e.type)}},t.prototype.indent=function(e){return e.replace(/^/gm,this._indent)},e.exports=function(e={}){return{stringify:function(r){var n=Object.create(e);return n.prefixes=r.prefixes,new t(n).toQuery(r)},createGenerator:function(){return new t(e)}}}},17308:(e,t,r)=>{var n=function(){var e=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r},t=[6,12,13,15,16,24,32,36,41,45,100,110,113,115,116,123,126,131,197,224,229,308,329,330,331,332,333],n=[2,247],i=[100,110,113,115,116,123,126,131,329,330,331,332,333],a=[2,409],o=[1,18],s=[1,27],c=[13,16,45,197,224,229,308],u=[28,29,53],l=[28,53],d=[1,42],p=[1,45],h=[1,41],f=[1,44],y=[123,126],g=[1,67],m=[39,45,87],b=[13,16,45,197,224,308],v=[1,87],_=[2,281],w=[1,86],T=[13,16,45,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],S=[6,28,29,53,63,70,73,81,83,85],O=[6,13,16,28,29,53,63,70,73,81,83,85,87,308],E=[6,13,16,28,29,45,53,63,70,73,81,82,83,85,87,89,197,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314],x=[6,13,16,28,29,31,39,45,47,48,53,63,70,73,81,82,83,85,87,89,109,112,121,123,126,128,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,337,338,340,341,342,343,344,345,346],A=[13,16,308],R=[112,132,327,334],I=[13,16,112,132,308],P=[1,111],N=[1,117],D=[112,132,327,328,334],j=[13,16,112,132,308,328],C=[28,29,45,53,87],M=[1,138],L=[1,151],k=[1,128],F=[1,127],B=[1,129],U=[1,140],q=[1,141],V=[1,142],Q=[1,143],$=[1,144],H=[1,145],G=[1,147],z=[1,148],K=[2,457],X=[1,158],J=[1,159],W=[1,160],Y=[1,152],Z=[1,153],ee=[1,156],te=[1,171],re=[1,172],ne=[1,173],ie=[1,174],ae=[1,175],oe=[1,176],se=[1,167],ce=[1,168],ue=[1,169],le=[1,170],de=[1,157],pe=[1,166],he=[1,161],fe=[1,162],ye=[1,163],ge=[1,164],me=[1,165],be=[6,13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],ve=[1,195],_e=[6,31,73,81,83,85],we=[2,285],Te=[1,199],Se=[1,201],Oe=[6,31,70,73,81,83,85],Ee=[2,283],xe=[1,207],Ae=[1,218],Re=[1,223],Ie=[1,219],Pe=[1,225],Ne=[1,226],De=[1,224],je=[6,63,70,73,81,83,85],Ce=[1,236],Me=[2,334],Le=[1,243],ke=[1,241],Fe=[6,193],Be=[2,349],Ue=[2,339],qe=[28,128],Ve=[47,48,193,272],Qe=[47,48,193,242,272],$e=[47,48,193,242,246,272],He=[47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,341,342,343,344,345,346],Ge=[39,47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,338,341,342,343,344,345,346],ze=[1,271],Ke=[1,270],Xe=[6,13,16,29,31,39,45,47,48,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,338,341,342,343,344,345,346,347,348,349,350,351],Je=[1,281],We=[1,280],Ye=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],Ze=[45,89],et=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],tt=[13,16,31,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],rt=[31,89],nt=[48,87],it=[6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338],at=[6,13,16,39,45,48,82,87,89,231,263,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338,340],ot=[1,313],st=[6,85],ct=[6,31,81,83,85],ut=[2,361],lt=[2,353],dt=[1,343],pt=[31,112,335],ht=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],ft=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335],yt=[6,109,193],gt=[31,112],mt=[13,16,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],bt=[1,390],vt=[1,391],_t=[13,16,87,197,308,314],wt=[13,16,39,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],Tt=[1,417],St=[1,418],Ot=[13,16,48,197,229,308],Et=[6,31,85],xt=[6,13,16,31,45,73,81,83,85,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],At=[6,13,16,29,31,45,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,231,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,346,347,348,349,350,351],Rt=[29,31,85,112,159,160,161,163,164],It=[1,443],Pt=[1,444],Nt=[1,449],Dt=[31,112,193,232,318,335],jt=[13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],Ct=[13,16,31,45,48,82,87,89,112,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],Mt=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],Lt=[13,16,31,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],kt=[31,45],Ft=[1,507],Bt=[1,508],Ut=[6,13,16,29,31,39,45,47,48,63,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,336,338,341,342,343,344,345,346,347,348,349,350,351],qt=[29,31,85,112,159,160,161,163,164,335],Vt=[6,13,16,31,45,70,73,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],Qt=[13,16,31,45,48,82,87,89,112,193,197,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$t=[2,352],Ht=[13,16,197,308,314],Gt=[1,565],zt=[6,13,16,31,45,76,78,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],Kt=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],Xt=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],Jt=[13,16,87,308],Wt=[2,364],Yt=[29,31,85,112,159,160,161,163,164,193,232,318,335],Zt=[31,112,193,232,272,318,335],er=[2,359],tr=[13,16,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],rr=[29,31,85,112,159,160,161,163,164,193,232,272,318,335],nr=[13,16,31,45,82,87,89,112,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],ir=[2,347],ar={trace:function(){},yy:{},symbols_:{error:2,QueryOrUpdate:3,Prologue:4,QueryOrUpdate_group0:5,EOF:6,Query:7,Qry:8,Query_option0:9,Prologue_repetition0:10,BaseDecl:11,BASE:12,IRIREF:13,PrefixDecl:14,PREFIX:15,PNAME_NS:16,SelectClauseWildcard:17,Qry_repetition0:18,WhereClause:19,SolutionModifierNoGroup:20,SelectClauseVars:21,Qry_repetition1:22,SolutionModifier:23,CONSTRUCT:24,ConstructTemplate:25,Qry_repetition2:26,Qry_repetition3:27,WHERE:28,"{":29,Qry_option0:30,"}":31,DESCRIBE:32,Qry_group0:33,Qry_repetition4:34,Qry_option1:35,ASK:36,Qry_repetition5:37,SelectClauseBase:38,"*":39,SelectClauseVars_repetition_plus0:40,SELECT:41,SelectClauseBase_option0:42,SelectClauseItem:43,Var:44,"(":45,Expression:46,AS:47,")":48,SubSelect:49,SubSelect_option0:50,SubSelect_option1:51,DatasetClause:52,FROM:53,DatasetClause_option0:54,iri:55,WhereClause_option0:56,GroupGraphPattern:57,SolutionModifier_option0:58,SolutionModifierNoGroup_option0:59,SolutionModifierNoGroup_option1:60,SolutionModifierNoGroup_option2:61,GroupClause:62,GROUP:63,BY:64,GroupClause_repetition_plus0:65,GroupCondition:66,BuiltInCall:67,FunctionCall:68,HavingClause:69,HAVING:70,HavingClause_repetition_plus0:71,OrderClause:72,ORDER:73,OrderClause_repetition_plus0:74,OrderCondition:75,ASC:76,BrackettedExpression:77,DESC:78,Constraint:79,LimitOffsetClauses:80,LIMIT:81,INTEGER:82,OFFSET:83,ValuesClause:84,VALUES:85,InlineData:86,VAR:87,InlineData_repetition0:88,NIL:89,InlineData_repetition1:90,InlineData_repetition_plus2:91,InlineData_repetition3:92,DataBlock:93,DataBlockValueList:94,DataBlockValueList_repetition_plus0:95,Update:96,Update_repetition0:97,Update1:98,Update_option0:99,LOAD:100,Update1_option0:101,Update1_option1:102,Update1_group0:103,Update1_option2:104,GraphRefAll:105,Update1_group1:106,Update1_option3:107,GraphOrDefault:108,TO:109,CREATE:110,Update1_option4:111,GRAPH:112,INSERTDATA:113,QuadPattern:114,DELETEDATA:115,DELETEWHERE:116,Update1_option5:117,InsertDeleteClause:118,Update1_repetition0:119,IntoGraphClause:120,INTO:121,GraphRef:122,DELETE:123,InsertDeleteClause_option0:124,InsertClause:125,INSERT:126,UsingClause:127,USING:128,UsingClause_option0:129,WithClause:130,WITH:131,DEFAULT:132,GraphOrDefault_option0:133,GraphRefAll_group0:134,Quads:135,Quads_option0:136,Quads_repetition0:137,QuadsNotTriples:138,VarOrIri:139,QuadsNotTriples_option0:140,QuadsNotTriples_option1:141,QuadsNotTriples_option2:142,TriplesTemplate:143,TriplesTemplate_repetition0:144,TriplesSameSubject:145,TriplesTemplate_option0:146,GroupGraphPatternSub:147,GroupGraphPatternSub_option0:148,GroupGraphPatternSub_repetition0:149,GroupGraphPatternSubTail:150,GraphPatternNotTriples:151,GroupGraphPatternSubTail_option0:152,GroupGraphPatternSubTail_option1:153,TriplesBlock:154,TriplesBlock_repetition0:155,TriplesSameSubjectPath:156,TriplesBlock_option0:157,GroupOrUnionGraphPattern:158,OPTIONAL:159,MINUS:160,SERVICE:161,GraphPatternNotTriples_option0:162,FILTER:163,BIND:164,InlineDataOneVar:165,InlineDataFull:166,InlineDataOneVar_repetition0:167,InlineDataFull_repetition0:168,InlineDataFull_repetition_plus1:169,InlineDataFull_repetition2:170,DataBlockValue:171,Literal:172,QuotedTriple:173,UNDEF:174,GroupOrUnionGraphPattern_repetition0:175,ArgList:176,ArgList_option0:177,ArgList_repetition0:178,ExpressionList:179,ExpressionList_repetition0:180,ConstructTemplate_option0:181,ConstructTriples:182,ConstructTriples_repetition0:183,ConstructTriples_option0:184,VarOrTermOrQuotedTP:185,PropertyListNotEmpty:186,TriplesNode:187,PropertyList:188,PropertyList_option0:189,VerbObjectList:190,PropertyListNotEmpty_repetition0:191,SemiOptionalVerbObjectList:192,";":193,SemiOptionalVerbObjectList_option0:194,Verb:195,ObjectList:196,a:197,ObjectList_repetition0:198,Object:199,GraphNode:200,Object_option0:201,PropertyListPathNotEmpty:202,TriplesNodePath:203,TriplesSameSubjectPath_option0:204,O:205,PropertyListPathNotEmpty_repetition0:206,PropertyListPathNotEmptyTail:207,O_group0:208,ObjectListPath:209,ObjectListPath_repetition0:210,ObjectPath:211,GraphNodePath:212,ObjectPath_option0:213,Path:214,Path_repetition0:215,PathSequence:216,PathSequence_repetition0:217,PathEltOrInverse:218,PathElt:219,PathPrimary:220,PathElt_option0:221,PathEltOrInverse_option0:222,IriOrA:223,"!":224,PathNegatedPropertySet:225,PathOneInPropertySet:226,PathNegatedPropertySet_repetition0:227,PathNegatedPropertySet_option0:228,"^":229,TriplesNode_repetition_plus0:230,"[":231,"]":232,TriplesNodePath_repetition_plus0:233,VarOrTermOrQuotedTPExpr:234,VarOrTerm:235,GraphTerm:236,BlankNode:237,ConditionalOrExpression:238,ConditionalAndExpression:239,ConditionalOrExpression_repetition0:240,ConditionalOrExpressionTail:241,"||":242,RelationalExpression:243,ConditionalAndExpression_repetition0:244,ConditionalAndExpressionTail:245,"&&":246,NumericExpression:247,RelationalExpression_group0:248,RelationalExpression_option0:249,IN:250,MultiplicativeExpression:251,NumericExpression_repetition0:252,AdditiveExpressionTail:253,AdditiveExpressionTail_group0:254,NumericLiteralPositive:255,AdditiveExpressionTail_repetition0:256,NumericLiteralNegative:257,AdditiveExpressionTail_repetition1:258,UnaryExpression:259,MultiplicativeExpression_repetition0:260,MultiplicativeExpressionTail:261,MultiplicativeExpressionTail_group0:262,"+":263,PrimaryExpression:264,"-":265,ExprQuotedTP:266,Aggregate:267,FUNC_ARITY0:268,FUNC_ARITY1:269,FUNC_ARITY1_SPARQL_STAR:270,FUNC_ARITY2:271,",":272,FUNC_ARITY3:273,FUNC_ARITY3_SPARQL_STAR:274,BuiltInCall_group0:275,BOUND:276,BNODE:277,BuiltInCall_option0:278,EXISTS:279,COUNT:280,Aggregate_option0:281,Aggregate_group0:282,FUNC_AGGREGATE:283,Aggregate_option1:284,GROUP_CONCAT:285,Aggregate_option2:286,Aggregate_option3:287,GroupConcatSeparator:288,SEPARATOR:289,"=":290,String:291,LANGTAG:292,"^^":293,DECIMAL:294,DOUBLE:295,BOOLEAN:296,INTEGER_POSITIVE:297,DECIMAL_POSITIVE:298,DOUBLE_POSITIVE:299,INTEGER_NEGATIVE:300,DECIMAL_NEGATIVE:301,DOUBLE_NEGATIVE:302,STRING_LITERAL1:303,STRING_LITERAL2:304,STRING_LITERAL_LONG1:305,STRING_LITERAL_LONG2:306,PrefixedName:307,PNAME_LN:308,BLANK_NODE_LABEL:309,ANON:310,QuotedTP:311,"<<":312,qtSubjectOrObject:313,">>":314,DataValueTerm:315,AnnotationPattern:316,"{|":317,"|}":318,AnnotationPatternPath:319,ExprVarOrTerm:320,QueryOrUpdate_group0_option0:321,Prologue_repetition0_group0:322,Qry_group0_repetition_plus0:323,SelectClauseBase_option0_group0:324,DISTINCT:325,REDUCED:326,NAMED:327,SILENT:328,CLEAR:329,DROP:330,ADD:331,MOVE:332,COPY:333,ALL:334,".":335,UNION:336,"|":337,"/":338,PathElt_option0_group0:339,"?":340,"!=":341,"<":342,">":343,"<=":344,">=":345,NOT:346,CONCAT:347,COALESCE:348,SUBSTR:349,REGEX:350,REPLACE:351,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",12:"BASE",13:"IRIREF",15:"PREFIX",16:"PNAME_NS",24:"CONSTRUCT",28:"WHERE",29:"{",31:"}",32:"DESCRIBE",36:"ASK",39:"*",41:"SELECT",45:"(",47:"AS",48:")",53:"FROM",63:"GROUP",64:"BY",70:"HAVING",73:"ORDER",76:"ASC",78:"DESC",81:"LIMIT",82:"INTEGER",83:"OFFSET",85:"VALUES",87:"VAR",89:"NIL",100:"LOAD",109:"TO",110:"CREATE",112:"GRAPH",113:"INSERTDATA",115:"DELETEDATA",116:"DELETEWHERE",121:"INTO",123:"DELETE",126:"INSERT",128:"USING",131:"WITH",132:"DEFAULT",159:"OPTIONAL",160:"MINUS",161:"SERVICE",163:"FILTER",164:"BIND",174:"UNDEF",193:";",197:"a",224:"!",229:"^",231:"[",232:"]",242:"||",246:"&&",250:"IN",263:"+",265:"-",268:"FUNC_ARITY0",269:"FUNC_ARITY1",270:"FUNC_ARITY1_SPARQL_STAR",271:"FUNC_ARITY2",272:",",273:"FUNC_ARITY3",274:"FUNC_ARITY3_SPARQL_STAR",276:"BOUND",277:"BNODE",279:"EXISTS",280:"COUNT",283:"FUNC_AGGREGATE",285:"GROUP_CONCAT",289:"SEPARATOR",290:"=",292:"LANGTAG",293:"^^",294:"DECIMAL",295:"DOUBLE",296:"BOOLEAN",297:"INTEGER_POSITIVE",298:"DECIMAL_POSITIVE",299:"DOUBLE_POSITIVE",300:"INTEGER_NEGATIVE",301:"DECIMAL_NEGATIVE",302:"DOUBLE_NEGATIVE",303:"STRING_LITERAL1",304:"STRING_LITERAL2",305:"STRING_LITERAL_LONG1",306:"STRING_LITERAL_LONG2",308:"PNAME_LN",309:"BLANK_NODE_LABEL",310:"ANON",312:"<<",314:">>",317:"{|",318:"|}",325:"DISTINCT",326:"REDUCED",327:"NAMED",328:"SILENT",329:"CLEAR",330:"DROP",331:"ADD",332:"MOVE",333:"COPY",334:"ALL",335:".",336:"UNION",337:"|",338:"/",340:"?",341:"!=",342:"<",343:">",344:"<=",345:">=",346:"NOT",347:"CONCAT",348:"COALESCE",349:"SUBSTR",350:"REGEX",351:"REPLACE"},productions_:[0,[3,3],[7,2],[4,1],[11,2],[14,3],[8,4],[8,4],[8,5],[8,7],[8,5],[8,4],[17,2],[21,2],[38,2],[43,1],[43,5],[49,4],[49,4],[52,3],[19,2],[23,2],[20,3],[62,3],[66,1],[66,1],[66,3],[66,5],[66,1],[69,2],[72,3],[75,2],[75,2],[75,1],[75,1],[80,2],[80,2],[80,4],[80,4],[84,2],[86,4],[86,4],[86,6],[86,2],[94,3],[96,3],[98,4],[98,3],[98,5],[98,4],[98,2],[98,2],[98,2],[98,5],[120,2],[118,3],[118,1],[125,2],[127,3],[130,2],[108,1],[108,2],[122,2],[105,1],[105,1],[114,3],[135,2],[138,7],[143,3],[57,3],[57,3],[147,2],[150,3],[154,3],[151,1],[151,2],[151,2],[151,3],[151,4],[151,2],[151,6],[151,1],[93,1],[93,1],[165,4],[166,4],[166,6],[171,1],[171,1],[171,1],[171,1],[158,2],[79,1],[79,1],[79,1],[68,2],[176,1],[176,5],[179,1],[179,4],[25,3],[182,3],[145,2],[145,2],[188,1],[186,2],[192,2],[190,2],[195,1],[195,1],[196,2],[199,2],[156,2],[156,2],[202,2],[207,1],[207,2],[205,2],[209,2],[211,2],[214,2],[216,2],[219,2],[218,2],[220,1],[220,2],[220,3],[225,1],[225,1],[225,4],[226,1],[226,2],[187,3],[187,3],[203,3],[203,3],[200,1],[200,1],[212,1],[212,1],[234,1],[235,1],[235,1],[139,1],[139,1],[44,1],[236,1],[236,1],[236,1],[236,1],[46,1],[238,2],[241,2],[239,2],[245,2],[243,1],[243,3],[243,4],[247,2],[253,2],[253,2],[253,2],[251,2],[261,2],[259,2],[259,2],[259,2],[259,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[77,3],[67,1],[67,2],[67,4],[67,4],[67,6],[67,8],[67,8],[67,2],[67,4],[67,2],[67,4],[67,3],[267,5],[267,5],[267,6],[288,4],[172,1],[172,2],[172,3],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[255,1],[255,1],[255,1],[257,1],[257,1],[257,1],[291,1],[291,1],[291,1],[291,1],[55,1],[55,1],[307,1],[307,1],[237,1],[237,1],[311,5],[173,5],[313,1],[313,1],[313,1],[313,1],[313,1],[315,1],[315,1],[315,1],[185,1],[185,1],[185,1],[316,3],[319,3],[266,5],[320,1],[320,1],[320,1],[223,1],[223,1],[321,0],[321,1],[5,1],[5,1],[5,1],[9,0],[9,1],[322,1],[322,1],[10,0],[10,2],[18,0],[18,2],[22,0],[22,2],[26,0],[26,2],[27,0],[27,2],[30,0],[30,1],[323,1],[323,2],[33,1],[33,1],[34,0],[34,2],[35,0],[35,1],[37,0],[37,2],[40,1],[40,2],[324,1],[324,1],[42,0],[42,1],[50,0],[50,1],[51,0],[51,1],[54,0],[54,1],[56,0],[56,1],[58,0],[58,1],[59,0],[59,1],[60,0],[60,1],[61,0],[61,1],[65,1],[65,2],[71,1],[71,2],[74,1],[74,2],[88,0],[88,2],[90,0],[90,2],[91,1],[91,2],[92,0],[92,2],[95,1],[95,2],[97,0],[97,4],[99,0],[99,2],[101,0],[101,1],[102,0],[102,1],[103,1],[103,1],[104,0],[104,1],[106,1],[106,1],[106,1],[107,0],[107,1],[111,0],[111,1],[117,0],[117,1],[119,0],[119,2],[124,0],[124,1],[129,0],[129,1],[133,0],[133,1],[134,1],[134,1],[134,1],[136,0],[136,1],[137,0],[137,2],[140,0],[140,1],[141,0],[141,1],[142,0],[142,1],[144,0],[144,3],[146,0],[146,1],[148,0],[148,1],[149,0],[149,2],[152,0],[152,1],[153,0],[153,1],[155,0],[155,3],[157,0],[157,1],[162,0],[162,1],[167,0],[167,2],[168,0],[168,2],[169,1],[169,2],[170,0],[170,2],[175,0],[175,3],[177,0],[177,1],[178,0],[178,3],[180,0],[180,3],[181,0],[181,1],[183,0],[183,3],[184,0],[184,1],[189,0],[189,1],[191,0],[191,2],[194,0],[194,1],[198,0],[198,3],[201,0],[201,1],[204,0],[204,1],[206,0],[206,2],[208,1],[208,1],[210,0],[210,3],[213,0],[213,1],[215,0],[215,3],[217,0],[217,3],[339,1],[339,1],[339,1],[221,0],[221,1],[222,0],[222,1],[227,0],[227,3],[228,0],[228,1],[230,1],[230,2],[233,1],[233,2],[240,0],[240,2],[244,0],[244,2],[248,1],[248,1],[248,1],[248,1],[248,1],[248,1],[249,0],[249,1],[252,0],[252,2],[254,1],[254,1],[256,0],[256,2],[258,0],[258,2],[260,0],[260,2],[262,1],[262,1],[275,1],[275,1],[275,1],[275,1],[275,1],[278,0],[278,1],[281,0],[281,1],[282,1],[282,1],[284,0],[284,1],[286,0],[286,1],[287,0],[287,1]],performAction:function(e,t,r,n,i,a,o){var s,c,u,l,d=a.length-1;switch(i){case 1:if(a[d-1]=a[d-1]||{},nn.base&&(a[d-1].base=nn.base),nn.base="",a[d-1].prefixes=nn.prefixes,nn.prefixes=null,nn.pathOnly){if("path"===a[d-1].type||"termType"in a[d-1])return a[d-1];throw new Error("Received full SPARQL query in path only mode")}if("path"===a[d-1].type||"termType"in a[d-1])throw new Error("Received only path in full SPARQL mode");if("update"===a[d-1].type){const e={};for(const t of a[d-1].updates)if("insert"===t.updateType){const r={};for(const e of t.insert)if("bgp"===e.type||"graph"===e.type)for(const t of e.triples)"BlankNode"===t.subject.termType&&(r[t.subject.value]=!0),"BlankNode"===t.predicate.termType&&(r[t.predicate.value]=!0),"BlankNode"===t.object.termType&&(r[t.object.value]=!0);for(const t of Object.keys(r)){if(e[t])throw new Error("Detected reuse blank node across different INSERT DATA clauses");e[t]=!0}}}return a[d-1];case 2:this.$={...a[d-1],...a[d],type:"query"};break;case 4:nn.base=Er(a[d]);break;case 5:nn.prefixes||(nn.prefixes={}),a[d-1]=a[d-1].substr(0,a[d-1].length-1),a[d]=Er(a[d]),nn.prefixes[a[d-1]]=a[d];break;case 6:this.$={...a[d-3],...Nr(a[d-2]),...a[d-1],...a[d]};break;case 7:if(!nn.skipValidation&&(Kr(a[d-3].variables.map((e=>Gr(e.expression)))).some((e=>"count"===e.aggregation&&!(e.expression instanceof or)))||a[d].group))for(const e of a[d-3].variables)if("Variable"===e.termType){if(!a[d].group||!a[d].group.map((e=>Hr(e))).includes(Hr(e)))throw Error("Projection of ungrouped variable (?"+Hr(e)+")")}else if(0===Gr(e.expression).length){const t=zr(e.expression);for(const e of t)if(!a[d].group||!a[d].group.map||!a[d].group.map((e=>Hr(e))).includes(Hr(e)))throw Error("Use of ungrouped variable in projection of operation (?"+Hr(e)+")")}const e=a[d-1].where.filter((e=>"query"===e.type));if(e.length>0){const t=a[d-3].variables.filter((e=>e.variable&&e.variable.value)).map((e=>e.variable.value)),r=Kr(e.map((e=>e.variables))).map((e=>e.value||e.variable.value));for(const e of t)if(r.indexOf(e)>=0)throw Error("Target id of 'AS' (?"+e+") already used in subquery")}this.$=Sr(a[d-3],Nr(a[d-2]),a[d-1],a[d]);break;case 8:this.$=Sr({queryType:"CONSTRUCT",template:a[d-3]},Nr(a[d-2]),a[d-1],a[d]);break;case 9:this.$=Sr({queryType:"CONSTRUCT",template:a[d-2]=a[d-2]?a[d-2].triples:[]},Nr(a[d-5]),{where:[{type:"bgp",triples:Tr([],a[d-2])}]},a[d]);break;case 10:this.$=Sr({queryType:"DESCRIBE",variables:"*"===a[d-3]?[new or]:a[d-3]},Nr(a[d-2]),a[d-1],a[d]);break;case 11:this.$=Sr({queryType:"ASK"},Nr(a[d-2]),a[d-1],a[d]);break;case 12:this.$=Sr(a[d-1],{variables:[new or]});break;case 13:const t=function(e){const t=e.slice().sort(),r=[];for(let e=0;ee.value||e.variable.value)));if(t.length>0)throw Error("Two or more of the resulting columns have the same name (?"+t[0]+")");this.$=Sr(a[d-1],{variables:a[d]});break;case 14:this.$=Sr({queryType:"SELECT"},a[d]&&(a[d-1]=_r(a[d]),a[d]={},a[d][a[d-1]]=!0,a[d]));break;case 16:case 27:this.$=Rr(a[d-3],{variable:a[d-1]});break;case 17:case 18:this.$=Sr(a[d-3],a[d-2],a[d-1],a[d],{type:"query"});break;case 19:case 58:this.$={iri:a[d],named:!!a[d-1]};break;case 20:this.$={where:a[d].patterns};break;case 21:this.$=Sr(a[d-1],a[d]);break;case 22:this.$=Sr(a[d-2],a[d-1],a[d]);break;case 23:this.$={group:a[d]};break;case 24:case 25:case 28:case 31:case 33:case 34:this.$=Rr(a[d]);break;case 26:this.$=Rr(a[d-1]);break;case 29:this.$={having:a[d]};break;case 30:this.$={order:a[d]};break;case 32:this.$=Rr(a[d],{descending:!0});break;case 35:this.$={limit:Dr(a[d])};break;case 36:this.$={offset:Dr(a[d])};break;case 37:this.$={limit:Dr(a[d-2]),offset:Dr(a[d])};break;case 38:this.$={limit:Dr(a[d]),offset:Dr(a[d-2])};break;case 39:case 43:this.$={type:"values",values:a[d]};break;case 40:case 84:this.$=a[d-1].map((e=>({[a[d-3]]:e})));break;case 41:case 85:this.$=a[d-1].map((()=>({})));break;case 42:case 86:var p=a[d-4].length;a[d-4]=a[d-4].map(xr),this.$=a[d-1].map((function(e){if(e.length!==p)throw Error("Inconsistent VALUES length");for(var t={},r=0;r"bind"===e.type))){const t=a[d-1].indexOf(e),r=new Set;for(const e of a[d-1].slice(0,t))"group"!==e.type&&"bgp"!==e.type||Jr(e).forEach((e=>r.add(e)));if(r.has(e.variable.value))throw Error("Variable used to bind is already bound (?"+e.variable.value+")")}this.$={type:"group",patterns:a[d-1]};break;case 71:this.$=a[d-1]?Or([a[d-1]],a[d]):Or(a[d]);break;case 72:this.$=a[d]?[a[d-2],a[d]]:a[d-2];break;case 75:this.$=Sr(a[d],{type:"optional"});break;case 76:this.$=Sr(a[d],{type:"minus"});break;case 77:this.$=Sr(a[d],{type:"graph",name:a[d-1]});break;case 78:this.$=Sr(a[d],{type:"service",name:a[d-1],silent:!!a[d-2]});break;case 79:this.$={type:"filter",expression:a[d]};break;case 80:this.$={type:"bind",variable:a[d-1],expression:a[d-3]};break;case 89:this.$=Wr(a[d]);break;case 90:this.$=void 0;break;case 91:this.$=a[d-1].length?{type:"union",patterns:Or(a[d-1].map(jr),[jr(a[d])])}:a[d];break;case 95:this.$={...a[d],function:a[d-1]};break;case 96:this.$={type:"functionCall",args:[]};break;case 97:this.$={type:"functionCall",args:wr(a[d-2],a[d-1]),distinct:!!a[d-3]};break;case 98:case 115:case 128:case 247:case 249:case 251:case 253:case 255:case 263:case 267:case 297:case 299:case 303:case 307:case 328:case 341:case 349:case 355:case 361:case 367:case 369:case 373:case 375:case 379:case 381:case 385:case 391:case 395:case 401:case 405:case 409:case 411:case 420:case 428:case 430:case 440:case 444:case 446:case 448:this.$=[];break;case 99:this.$=wr(a[d-2],a[d-1]);break;case 101:this.$=Or(a[d-2],[a[d-1]]);break;case 102:case 112:this.$=Zr(a[d].map((e=>Sr(Lr(a[d-1]),e))));break;case 103:this.$=Zr(Tr(a[d].map((e=>Sr(Lr(a[d-1].entity),e))),a[d-1].triples));break;case 105:this.$=Or([a[d-1]],a[d]);break;case 106:this.$=Or(a[d]);break;case 107:this.$=$r(a[d-1],a[d]);break;case 109:case 237:this.$=nn.factory.namedNode(cr);break;case 110:case 118:this.$=wr(a[d-1],a[d]);break;case 111:this.$=a[d]?{annotation:a[d],object:a[d-1]}:a[d-1];break;case 113:this.$=a[d]?Zr(Tr(a[d].map((e=>Sr(Lr(a[d-1].entity),e))),a[d-1].triples)):a[d-1].triples;break;case 114:this.$=$r(...a[d-1],a[d]);break;case 116:this.$=$r(...a[d]);break;case 117:case 159:case 163:this.$=[a[d-1],a[d]];break;case 119:this.$=a[d]?{object:a[d-1],annotation:a[d]}:a[d-1];break;case 120:this.$=a[d-1].length?Ir("|",wr(a[d-1],a[d])):a[d];break;case 121:this.$=a[d-1].length?Ir("/",wr(a[d-1],a[d])):a[d];break;case 122:this.$=a[d]?Ir(a[d],[a[d-1]]):a[d-1];break;case 123:this.$=a[d-1]?Ir(a[d-1],[a[d]]):a[d];break;case 125:case 131:this.$=Ir(a[d-1],[a[d]]);break;case 129:this.$=Ir("|",wr(a[d-2],a[d-1]));break;case 132:case 134:this.$=function(e){var t=kr(),r=t,n=[],i=[];e.forEach((function(e){n.push(e.entity),Tr(i,e.triples)}));for(var a=0,o=0,s=n.length,c=Array(2*s);a2&&E.push("'"+this.terminals_[T]+"'");A=d.showPosition?"Parse error on line "+(s+1)+":\n"+d.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(s+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(A,{text:d.match,token:this.terminals_[m]||m,line:d.yylineno,loc:f,expected:E})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(_[0]){case 1:r.push(m),n.push(d.yytext),i.push(d.yylloc),r.push(_[1]),m=null,b?(m=b,b=null):(c=d.yyleng,o=d.yytext,s=d.yylineno,f=d.yylloc,u>0&&u--);break;case 2:if(S=this.productions_[_[1]][1],x.$=n[n.length-S],x._$={first_line:i[i.length-(S||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(S||1)].first_column,last_column:i[i.length-1].last_column},g&&(x._$.range=[i[i.length-(S||1)].range[0],i[i.length-1].range[1]]),void 0!==(w=this.performAction.apply(x,[o,c,s,p.yy,_[1],n,i].concat(l))))return w;S&&(r=r.slice(0,-1*S*2),n=n.slice(0,-1*S),i=i.slice(0,-1*S)),r.push(this.productions_[_[1]][0]),n.push(x.$),i.push(x._$),O=a[r[r.length-2]][r[r.length-1]],r.push(O);break;case 3:return!0}}return!0}},or=r(54516).t,sr="http://www.w3.org/1999/02/22-rdf-syntax-ns#",cr=sr+"type",ur=sr+"first",lr=sr+"rest",dr=sr+"nil",pr="http://www.w3.org/2001/XMLSchema#",hr=pr+"integer",fr=pr+"decimal",yr=pr+"double",gr=pr+"boolean",mr="",br="",vr="";function _r(e){return e.toLowerCase()}function wr(e,t){return e.push(t),e}function Tr(e,t){return e.push.apply(e,t),e}function Sr(e){e||(e={});for(var t,r=1,n=arguments.length;r>10),56320+(1023&i))}var a=Ur[n];if(!a)throw new Error;return a}))}catch(e){return""}if(qr.exec(e))throw new Error("Invalid unicode codepoint of surrogate pair without corresponding codepoint in "+e);return e}function $r(e,t,r){var n=[],i=[];return t.forEach((function(t){let r=null;t.annotation&&(r=t.annotation,t=t.object),n.push(Lr(null,e,t.entity,r)),Tr(i,t.triples)})),Or(n,r||[],i)}function Hr(e){return e.variable?e.variable.value:e.value||e.expression.value}function Gr(e){if(!e)return[];if("aggregate"===e.type)return[e];if("operation"===e.type){const t=[];for(const r of e.args)t.push(...Gr(r));return t}return[]}function zr(e){const t=new Set,r=function(e){e&&("Variable"===e.termType?t.add(e):"operation"===e.type&&e.args.forEach(r))};return r(e),t}function Kr(e,t=1,r=[]){for(const n of e)t>0&&n instanceof Array?Kr(n,t-1,r):r.push(n);return r}function Xr(e){return"Variable"===e.termType}function Jr(e){if(e.triples){const t=[];for(const r of e.triples)Xr(r.subject)&&t.push(r.subject.value),Xr(r.predicate)&&t.push(r.predicate.value),Xr(r.object)&&t.push(r.object.value);return t}if(e.patterns){const t=[];for(const r of e.patterns)t.push(...Jr(r));return t}return[]}function Wr(e){if(!nn.sparqlStar)throw new Error("SPARQL-star support is not enabled");return e}function Yr(e,t,r){for(const n of t){const t=Lr("subject"in n?n.subject:e,n.predicate,n.object);r.push(t),n.annotations&&Yr(Mr(e,n.predicate,n.object),n.annotations,r)}}function Zr(e){if(nn.sparqlStar){const t=[];return e.forEach((e=>{const r=Lr(e.subject,e.predicate,e.object);t.push(r),e.annotations&&Yr(Mr(e.subject,e.predicate,e.object),e.annotations,t)})),t}return e}function en(e){for(const t of e){if("graph"===t.type&&"Variable"===t.name.termType)throw new Error("Detected illegal variable in GRAPH");if("bgp"===t.type||"graph"===t.type)for(const e of t.triples)if("Variable"===e.subject.termType||"Variable"===e.predicate.termType||"Variable"===e.object.termType)throw new Error("Detected illegal variable in BGP")}return e}function tn(e){for(const t of e)if("bgp"===t.type)for(const e of t.triples)if("BlankNode"===e.subject.termType||"BlankNode"===e.predicate.termType||"BlankNode"===e.object.termType)throw new Error("Detected illegal blank node in BGP");return e}var rn={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,r=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===n.length?this.yylloc.first_column:0)+n[n.length-r.length].length-r[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var r,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],r=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,r,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;at[0].length)){if(t=r,n=a,this.options.backtrack_lexer){if(!1!==(e=this.test_match(r,i[a])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,i[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{flex:!0,"case-insensitive":!0},performAction:function(e,t,r,n){switch(r){case 0:break;case 1:return 12;case 2:return 15;case 3:return 41;case 4:return 325;case 5:return 326;case 6:return 45;case 7:return 47;case 8:return 48;case 9:return 39;case 10:return 24;case 11:return 28;case 12:return 29;case 13:return 31;case 14:return 32;case 15:return 36;case 16:return 53;case 17:return 327;case 18:return 63;case 19:return 64;case 20:return 70;case 21:return 73;case 22:return 76;case 23:return 78;case 24:return 81;case 25:return 83;case 26:return 85;case 27:return 193;case 28:return 100;case 29:return 328;case 30:return 121;case 31:return 329;case 32:return 330;case 33:return 110;case 34:return 331;case 35:return 109;case 36:return 332;case 37:return 333;case 38:return 113;case 39:return 115;case 40:return 116;case 41:return 131;case 42:return 123;case 43:return 126;case 44:return 128;case 45:return 132;case 46:return 112;case 47:return 334;case 48:return 335;case 49:return 159;case 50:return 161;case 51:return 164;case 52:return 174;case 53:return 160;case 54:return 336;case 55:return 163;case 56:return 312;case 57:return 314;case 58:return 317;case 59:return 318;case 60:return 272;case 61:return 197;case 62:return 337;case 63:return 338;case 64:return 229;case 65:return 340;case 66:return 263;case 67:return 224;case 68:return 231;case 69:return 232;case 70:return 242;case 71:return 246;case 72:return 290;case 73:return 341;case 74:return 342;case 75:return 343;case 76:return 344;case 77:return 345;case 78:return 250;case 79:return 346;case 80:return 265;case 81:return 276;case 82:return 277;case 83:return 268;case 84:return 269;case 85:return 270;case 86:return 271;case 87:return 347;case 88:return 348;case 89:return 273;case 90:return 274;case 91:return 350;case 92:return 349;case 93:return 351;case 94:return 279;case 95:return 280;case 96:return 283;case 97:return 285;case 98:return 289;case 99:return 293;case 100:return 296;case 101:return 13;case 102:return 16;case 103:return 308;case 104:return 309;case 105:return 87;case 106:return 292;case 107:return 82;case 108:return 294;case 109:return 295;case 110:return 297;case 111:return 298;case 112:return 299;case 113:return 300;case 114:return 301;case 115:return 302;case 116:return"EXPONENT";case 117:return 303;case 118:return 304;case 119:return 305;case 120:return 306;case 121:return 89;case 122:return 310;case 123:return 6;case 124:return"INVALID";case 125:console.log(t.yytext)}},rules:[/^(?:\s+|(#[^\n\r]*))/i,/^(?:BASE)/i,/^(?:PREFIX)/i,/^(?:SELECT)/i,/^(?:DISTINCT)/i,/^(?:REDUCED)/i,/^(?:\()/i,/^(?:AS)/i,/^(?:\))/i,/^(?:\*)/i,/^(?:CONSTRUCT)/i,/^(?:WHERE)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:DESCRIBE)/i,/^(?:ASK)/i,/^(?:FROM)/i,/^(?:NAMED)/i,/^(?:GROUP)/i,/^(?:BY)/i,/^(?:HAVING)/i,/^(?:ORDER)/i,/^(?:ASC)/i,/^(?:DESC)/i,/^(?:LIMIT)/i,/^(?:OFFSET)/i,/^(?:VALUES)/i,/^(?:;)/i,/^(?:LOAD)/i,/^(?:SILENT)/i,/^(?:INTO)/i,/^(?:CLEAR)/i,/^(?:DROP)/i,/^(?:CREATE)/i,/^(?:ADD)/i,/^(?:TO)/i,/^(?:MOVE)/i,/^(?:COPY)/i,/^(?:INSERT((\s+|(#[^\n\r]*)\n\r?)+)DATA)/i,/^(?:DELETE((\s+|(#[^\n\r]*)\n\r?)+)DATA)/i,/^(?:DELETE((\s+|(#[^\n\r]*)\n\r?)+)WHERE)/i,/^(?:WITH)/i,/^(?:DELETE)/i,/^(?:INSERT)/i,/^(?:USING)/i,/^(?:DEFAULT)/i,/^(?:GRAPH)/i,/^(?:ALL)/i,/^(?:\.)/i,/^(?:OPTIONAL)/i,/^(?:SERVICE)/i,/^(?:BIND)/i,/^(?:UNDEF)/i,/^(?:MINUS)/i,/^(?:UNION)/i,/^(?:FILTER)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:\{\|)/i,/^(?:\|\})/i,/^(?:,)/i,/^(?:a)/i,/^(?:\|)/i,/^(?:\/)/i,/^(?:\^)/i,/^(?:\?)/i,/^(?:\+)/i,/^(?:!)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:\|\|)/i,/^(?:&&)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:<)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:>=)/i,/^(?:IN)/i,/^(?:NOT)/i,/^(?:-)/i,/^(?:BOUND)/i,/^(?:BNODE)/i,/^(?:(RAND|NOW|UUID|STRUUID))/i,/^(?:(LANG|DATATYPE|IRI|URI|ABS|CEIL|FLOOR|ROUND|STRLEN|STR|UCASE|LCASE|ENCODE_FOR_URI|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|MD5|SHA1|SHA256|SHA384|SHA512|isIRI|isURI|isBLANK|isLITERAL|isNUMERIC))/i,/^(?:(SUBJECT|PREDICATE|OBJECT|isTRIPLE))/i,/^(?:(LANGMATCHES|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|STRLANG|STRDT|sameTerm))/i,/^(?:CONCAT)/i,/^(?:COALESCE)/i,/^(?:IF)/i,/^(?:TRIPLE)/i,/^(?:REGEX)/i,/^(?:SUBSTR)/i,/^(?:REPLACE)/i,/^(?:EXISTS)/i,/^(?:COUNT)/i,/^(?:SUM|MIN|MAX|AVG|SAMPLE)/i,/^(?:GROUP_CONCAT)/i,/^(?:SEPARATOR)/i,/^(?:\^\^)/i,/^(?:true|false)/i,/^(?:(<(?:[^<>\"\{\}\|\^`\\\u0000-\u0020])*>))/i,/^(?:((([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.)*(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040]))?)?:))/i,/^(?:(((([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.)*(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040]))?)?:)((?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|:|[0-9]|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))*(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%)))))?)))/i,/^(?:(_:(?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|[0-9])(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.)*(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040]))?))/i,/^(?:([\?\$]((?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|[0-9])(?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])*)))/i,/^(?:(@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*))/i,/^(?:([0-9]+))/i,/^(?:([0-9]*\.[0-9]+))/i,/^(?:([0-9]+\.[0-9]*([eE][+-]?[0-9]+)|\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+)))/i,/^(?:(\+([0-9]+)))/i,/^(?:(\+([0-9]*\.[0-9]+)))/i,/^(?:(\+([0-9]+\.[0-9]*([eE][+-]?[0-9]+)|\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:(-([0-9]+)))/i,/^(?:(-([0-9]*\.[0-9]+)))/i,/^(?:(-([0-9]+\.[0-9]*([eE][+-]?[0-9]+)|\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:([eE][+-]?[0-9]+))/i,/^(?:('(?:(?:[^\u0027\u005C\u000A\u000D])|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*'))/i,/^(?:("(?:(?:[^\u0022\u005C\u000A\u000D])|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*"))/i,/^(?:('''(?:(?:'|'')?(?:[^'\\]|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*'''))/i,/^(?:("""(?:(?:"|"")?(?:[^\"\\]|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*"""))/i,/^(?:(\((\u0020|\u0009|\u000D|\u000A)*\)))/i,/^(?:(\[(\u0020|\u0009|\u000D|\u000A)*\]))/i,/^(?:$)/i,/^(?:.)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],inclusive:!0}}};function nn(){this.yy={}}return ar.lexer=rn,nn.prototype=ar,ar.Parser=nn,new nn}();e.exports=n},54516:e=>{class t{constructor(){return r||this}equals(e){return e&&this.termType===e.termType}}Object.defineProperty(t.prototype,"value",{enumerable:!0,value:"*"}),Object.defineProperty(t.prototype,"termType",{enumerable:!0,value:"Wildcard"});var r=new t;e.exports.t=t},55403:(e,t,r)=>{var n=r(17308).Parser,i=r(33206),a=r(54516).t,{DataFactory:o}=r(18050);e.exports={Parser:function({prefixes:e,baseIRI:t,factory:r,sparqlStar:i,skipValidation:a,skipUngroupedVariableCheck:s,pathOnly:c}={}){var u={};for(var l in e||{})u[l]=e[l];var d=new n;return d.parse=function(){return n.base=t||"",n.prefixes=Object.create(u),n.factory=r||new o,n.sparqlStar=Boolean(i),n.pathOnly=Boolean(c),n.skipValidation=Boolean(a)||Boolean(s),n.prototype.parse.apply(d,arguments)},d._resetBlanks=n._resetBlanks,d},Generator:i,Wildcard:a}},21451:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(71839),t)},71839:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SparqlJsonParser=void 0;const n=r(18050),i=r(58521),a=r(36885);t.SparqlJsonParser=class{constructor(e){var t;e=e||{},this.dataFactory=e.dataFactory||new n.DataFactory,this.prefixVariableQuestionMark=!!e.prefixVariableQuestionMark,this.suppressMissingStreamResultsError=null===(t=e.suppressMissingStreamResultsError)||void 0===t||t}parseJsonResults(e){return e.results.bindings.map((e=>this.parseJsonBindings(e)))}parseJsonResultsStream(e){const t=e=>s.emit("error",e);e.on("error",t);const r=new a;r.onError=t;let n=!1,o=!1;r.onValue=e=>{if("vars"===r.key&&2===r.stack.length&&"head"===r.stack[1].key)s.emit("variables",e.map((e=>this.dataFactory.variable(e)))),n=!0;else if("results"===r.key&&1===r.stack.length)o=!0;else if("number"==typeof r.key&&3===r.stack.length&&"results"===r.stack[1].key&&"bindings"===r.stack[2].key)try{s.push(this.parseJsonBindings(e))}catch(e){s.emit("error",e)}else"metadata"===r.key&&1===r.stack.length&&s.emit("metadata",e)};const s=e.on("end",(e=>{o||this.suppressMissingStreamResultsError?n||s.emit("variables",[]):s.emit("error",new Error("No valid SPARQL query results were found."))})).pipe(new i.Transform({objectMode:!0,transform(e,t,n){r.write(e),n()}}));return s}parseJsonBindings(e){const t={};for(const r in e){const n=e[r];t[this.prefixVariableQuestionMark?"?"+r:r]=this.parseJsonValue(n)}return t}parseJsonValue(e){let t;switch(e.type){case"bnode":t=this.dataFactory.blankNode(e.value);break;case"literal":t=e["xml:lang"]?this.dataFactory.literal(e.value,e["xml:lang"]):e.datatype?this.dataFactory.literal(e.value,this.dataFactory.namedNode(e.datatype)):this.dataFactory.literal(e.value);break;case"typed-literal":t=this.dataFactory.literal(e.value,this.dataFactory.namedNode(e.datatype));break;case"triple":const r=e.value;if(!(r&&r.subject&&r.predicate&&r.object))throw new Error("Invalid quoted triple: "+JSON.stringify(e));t=this.dataFactory.quad(this.parseJsonValue(r.subject),this.parseJsonValue(r.predicate),this.parseJsonValue(r.object));break;default:t=this.dataFactory.namedNode(e.value)}return t}parseJsonBoolean(e){if("boolean"in e)return e.boolean;throw new Error("No valid ASK response was found.")}parseJsonBooleanStream(e){return new Promise(((t,r)=>{const n=new a;n.onError=r,n.onValue=e=>{"boolean"===n.key&&"boolean"==typeof e&&1===n.stack.length&&t(e)},e.on("error",r).on("data",(e=>n.write(e))).on("end",(()=>r(new Error("No valid ASK response was found."))))}))}}},43004:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(78780),t)},78780:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Converter=void 0;const n=r(80740),i=r(21451);class a{constructor(e){(e=e||{delimiter:"_"}).prefixVariableQuestionMark=!1,this.delimiter=e.delimiter||"_",this.parser=new i.SparqlJsonParser(e),this.materializeRdfJsTerms=e.materializeRdfJsTerms}static addValueToTree(e,t,r,n,i,o){const s=t[0],c=n?n+o+s:s,u=i.singularizeVariables[c];if(1===t.length)u?e[s]||(e[s]=r):(e[s]||(e[s]=[]),e[s].push(r));else{let n;u?(e[s]||(e[s]={}),n=e[s]):(e[s]||(e[s]=[{}]),n=e[s][0]),a.addValueToTree(n,t.slice(1),r,c,i,o)}}static mergeTrees(e,t){if(typeof e!=typeof t)throw new Error(`Two incompatible tree nodes were found: ${typeof e} and ${typeof t}`);if(Array.isArray(e)!==Array.isArray(t))throw new Error(`Two incompatible tree nodes were found: Array?${Array.isArray(e)} and Array?${Array.isArray(t)}`);if("object"==typeof e&&"object"==typeof t){if(e.termType&&t.termType)return e.equals(t)?{valid:!0,result:e}:{valid:!1,result:e};if(Array.isArray(e)&&Array.isArray(t)){if(e.length>0){const r=[];let n=!1;for(const i of e){const e=a.mergeTrees(i,t[0]);e.valid?(n=!0,r.push(e.result)):r.push(i)}if(n)return{valid:!0,result:r}}return{valid:!0,result:e.concat(t)}}{const r={};for(const e in t)r[e]=t[e];for(const t in e)if(r[t]){const n=a.mergeTrees(e[t],r[t]);if(!n.valid)return{valid:!1,result:e};r[t]=n.result}else r[t]=e[t];return{valid:!0,result:r}}}throw new Error(`Unmergable tree types: ${typeof e} and ${typeof t}`)}static materializeTree(e){if(e.termType)return(0,n.getTermRaw)(e);if(Array.isArray(e))return e.map(a.materializeTree);{const t={};for(const r in e)t[r]=a.materializeTree(e[r]);return t}}sparqlJsonResultsToTree(e,t){return this.bindingsToTree(this.parser.parseJsonResults(e),t||{singularizeVariables:{}})}bindingsToTree(e,t){const r=t&&t.singularizeVariables[""];let n=r?{}:[];for(const i of e){const e=r?{}:[{}];for(const n in i){const o=n.split(this.delimiter),s=i[n];a.addValueToTree(r?e:e[0],o,s,"",t,this.delimiter)}n=a.mergeTrees(n,e).result}return this.materializeRdfJsTerms&&(n=a.materializeTree(n)),n}}t.Converter=a},52666:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(49679),t)},49679:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SparqlXmlParser=void 0;const n=r(18050),i=r(49126),a=r(58521);t.SparqlXmlParser=class{constructor(e){e=e||{},this.dataFactory=e.dataFactory||new n.DataFactory,this.prefixVariableQuestionMark=!!e.prefixVariableQuestionMark}parseXmlResultsStream(e){const t=e=>y.emit("error",e);e.on("error",t);const r=new i.SaxesParser,n=[];let o=!1,s=!1;const c=[];let u,l={},d="",p="",h="",f=[];r.on("error",t),r.on("opentag",(e=>{"variable"===e.name&&this.stackEquals(n,["sparql","head"])?c.push(this.dataFactory.variable(e.attributes.name)):"results"===e.name&&this.stackEquals(n,["sparql"])?s=!0:"result"===e.name&&this.stackEquals(n,["sparql","results"])?l={}:"binding"===e.name&&this.stackEquals(n,["sparql","results","result"])?(d=e.attributes.name||"",p="",u="",h="",f=[]):"triple"===e.name&&this.stackBeginsWith(n,["sparql","results","result"])?f.push({components:{}}):"triple"===n[n.length-1]&&this.stackBeginsWith(n,["sparql","results","result","binding"])?(p="",u="",h="",["subject","predicate","object"].includes(e.name)?f[f.length-1].currentComponent=e.name:t(new Error(`Illegal quoted triple component '${e.name}' found on line ${r.line+1}`))):this.stackBeginsWith(n,["sparql","results","result","binding"])&&(p=e.name,u="xml:lang"in e.attributes?e.attributes["xml:lang"]:"datatype"in e.attributes?this.dataFactory.namedNode(e.attributes.datatype):void 0),n.push(e.name)})),r.on("closetag",(e=>{if(this.stackEquals(n,["sparql","head"])&&(y.emit("variables",c),o=!0),this.stackEquals(n,["sparql","results","result"])&&y.push(l),this.stackBeginsWith(n,["sparql","results","result","binding"])){let e;if(!d&&p)t(new Error(`Terms should have a name on line ${r.line+1}`));else if("uri"===p)e=this.dataFactory.namedNode(h);else if("bnode"===p)e=this.dataFactory.blankNode(h);else if("literal"===p)e=this.dataFactory.literal(h,u);else if("triple"===n[n.length-1]){const n=f.pop();n&&n.components.subject&&n.components.predicate&&n.components.object?e=this.dataFactory.quad(n.components.subject,n.components.predicate,n.components.object):t(new Error(`Incomplete quoted triple on line ${r.line+1}`))}else p&&t(new Error(`Invalid term type '${p}' on line ${r.line+1}`));if(e)if(f.length>0){const n=f[f.length-1];n.components[n.currentComponent]&&t(new Error(`The ${n.currentComponent} in a quoted triple on line ${r.line+1} was already defined before`)),n.components[n.currentComponent]=e}else{const t=this.prefixVariableQuestionMark?"?"+d:d;l[t]=e}p=void 0}n.pop()})),r.on("text",(e=>{this.stackBeginsWith(n,["sparql","results","result","binding"])&&n[n.length-1]===p&&(h=e)}));const y=e.on("end",(e=>{s?o||y.emit("variables",[]):y.emit("error",new Error("No valid SPARQL query results were found."))})).pipe(new a.Transform({objectMode:!0,transform(e,t,n){r.write(e),n()}}));return y}parseXmlBooleanStream(e){return new Promise(((t,r)=>{const n=new i.SaxesParser,a=[];n.on("error",r),n.on("opentag",(e=>{a.push(e.name)})),n.on("closetag",(e=>{a.pop()})),n.on("text",(e=>{this.stackEquals(a,["sparql","boolean"])&&t("true"===e)})),e.on("error",r).on("data",(e=>n.write(e))).on("end",(()=>r(new Error("No valid ASK response was found."))))}))}stackEquals(e,t){return e.length===t.length&&e.every(((e,r)=>t[r]===e))}stackBeginsWith(e,t){return e.length>=t.length&&t.every(((t,r)=>e[r]===t))}}},76574:(e,t,r)=>{var n=r(21848);e.exports=function(e,t,r){"function"==typeof t&&(r=t,t=null);var i="",a=new n((function(r,n){e.on("data",(function(e){i+="string"==typeof t?e.toString(t):e.toString()})),e.on("end",(function(){r(i)})),e.on("error",n)}));return r&&a.then((function(e){r(null,e)}),r),a}},18888:(e,t,r)=>{"use strict";var n=r(25636).Buffer,i=n.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(n.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=c,this.end=u,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=l,this.end=d,t=3;break;default:return this.write=p,void(this.end=h)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function c(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function l(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function d(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function p(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}t.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(i>0&&(e.lastNeed=i-1),i):--n=0?(i>0&&(e.lastNeed=i-2),i):--n=0?(i>0&&(2===i?i=0:e.lastNeed=i-3),i):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},68492:e=>{!function(t){"use strict";var r=function(){function e(e){this.options=e}return e.prototype.toString=function(){return JSON&&JSON.stringify?JSON.stringify(this.options):this.options},e}(),n={isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},isString:function(e){return"[object String]"===Object.prototype.toString.apply(e)},isNumber:function(e){return"[object Number]"===Object.prototype.toString.apply(e)},isBoolean:function(e){return"[object Boolean]"===Object.prototype.toString.apply(e)},join:function(e,t){var r,n="",i=!0;for(r=0;r="0"&&e<="9"}return{isAlpha:function(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"},isDigit:e,isHexDigit:function(t){return e(t)||t>="a"&&t<="f"||t>="A"&&t<="F"}}}(),a=function(){var e=function(e){return e<=127?1:194<=e&&e<=223?2:224<=e&&e<=239?3:240<=e&&e<=244?4:0},t=function(e){return 128<=e&&e<=191};function r(e,t){return"%"===e.charAt(t)&&i.isHexDigit(e.charAt(t+1))&&i.isHexDigit(e.charAt(t+2))}function n(e,t){return parseInt(e.substr(t,2),16)}return{encodeCharacter:function(e){var t,r,n="",i=function(e){return unescape(encodeURIComponent(e))}(e);for(r=0;r1?r+=n:r+=c(n)||s(n)?n:a.encodeCharacter(n);return r},encodeLiteralCharacter:function(e,t){var r=a.pctCharAt(e,t);return r.length>1||c(r)||s(r)?r:a.encodeCharacter(r)}}}(),l=function(){var e={};function t(t){e[t]={symbol:t,separator:"?"===t?"&":""===t||"+"===t||"#"===t?",":t,named:";"===t||"&"===t||"?"===t,ifEmpty:"&"===t||"?"===t?"=":"",first:"+"===t?"":t,encode:"+"===t||"#"===t?u.encodePassReserved:u.encode,toString:function(){return this.symbol}}}return t(""),t("+"),t("#"),t("."),t("/"),t(";"),t("?"),t("&"),{valueOf:function(t){return e[t]?e[t]:"=,!@|".indexOf(t)>=0?null:e[""]}}}();function d(e){var t;if(null==e)return!1;if(n.isArray(e))return e.length>0;if("string"==typeof e||"number"==typeof e||"boolean"==typeof e)return!0;for(t in e)if(e.hasOwnProperty(t)&&d(e[t]))return!0;return!1}var p=function(){function e(e){this.literal=u.encodeLiteral(e)}return e.prototype.expand=function(){return this.literal},e.prototype.toString=e.prototype.expand,e}(),h=function(){function e(e){var t,n,s=[],c=null,u=null,d=null,p="";function h(){var t=e.substring(u,n);if(0===t.length)throw new r({expressionText:e,message:"a varname must be specified",position:n});c={varname:t,exploded:!1,maxLength:null},u=null}function y(){if(d===n)throw new r({expressionText:e,message:"after a ':' you have to specify the length",position:n});c.maxLength=parseInt(e.substring(d,n),10),d=null}for(t=function(t){var i=l.valueOf(t);if(null===i)throw new r({expressionText:e,message:"illegal use of reserved operator",position:n,operator:t});return i}(e.charAt(0)),n=t.symbol.length,u=n;n=4)throw new r({expressionText:e,message:"A :prefix must have max 4 digits",position:n});continue}y()}if(":"!==p)if("*"!==p){if(","!==p)throw new r({expressionText:e,message:"illegal character",character:p,position:n});s.push(c),c=null,u=n+1}else{if(null===c)throw new r({expressionText:e,message:"exploded without varspec",position:n});if(c.exploded)throw new r({expressionText:e,message:"exploded twice",position:n});if(c.maxLength)throw new r({expressionText:e,message:"an explode (*) MUST NOT follow to a prefix",position:n});c.exploded=!0}else{if(null!==c.maxLength)throw new r({expressionText:e,message:"only one :maxLength is allowed per varspec",position:n});if(c.exploded)throw new r({expressionText:e,message:"an exploeded varspec MUST NOT be varspeced",position:n});d=n+1}}return null!==u&&h(),null!==d&&y(),s.push(c),new f(e,t,s)}return function(t){var n,i,a=[],o=null,s=0;for(n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NIL",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"v1",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(t,"v3",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"v4",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"v5",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"validate",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"version",{enumerable:!0,get:function(){return c.default}});var n=p(r(74603)),i=p(r(22298)),a=p(r(42712)),o=p(r(93423)),s=p(r(35911)),c=p(r(24072)),u=p(r(4564)),l=p(r(46585)),d=p(r(29975));function p(e){return e&&e.__esModule?e:{default:e}}},72668:(e,t)=>{"use strict";function r(e){return 14+(e+64>>>9<<4)+1}function n(e,t){const r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function i(e,t,r,i,a,o){return n((s=n(n(t,e),n(i,o)))<<(c=a)|s>>>32-c,r);var s,c}function a(e,t,r,n,a,o,s){return i(t&r|~t&n,e,t,a,o,s)}function o(e,t,r,n,a,o,s){return i(t&n|r&~n,e,t,a,o,s)}function s(e,t,r,n,a,o,s){return i(t^r^n,e,t,a,o,s)}function c(e,t,r,n,a,o,s){return i(r^(t|~n),e,t,a,o,s)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default=function(e){if("string"==typeof e){const t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(let r=0;r>5]>>>i%32&255,a=parseInt(n.charAt(r>>>4&15)+n.charAt(15&r),16);t.push(a)}return t}(function(e,t){e[t>>5]|=128<>5]|=(255&e[r/8])<{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};t.default=r},35911:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default="00000000-0000-0000-0000-000000000000"},29975:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(4564))&&n.__esModule?n:{default:n};t.default=function(e){if(!(0,i.default)(e))throw TypeError("Invalid UUID");let t;const r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r}},16635:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i},74089:(e,t)=>{"use strict";let r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){if(!r&&(r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!r))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return r(n)};const n=new Uint8Array(16)},34271:(e,t)=>{"use strict";function r(e,t,r,n){switch(e){case 0:return t&r^~t&n;case 1:case 3:return t^r^n;case 2:return t&r^t&n^r&n}}function n(e,t){return e<>>32-t}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default=function(e){const t=[1518500249,1859775393,2400959708,3395469782],i=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){const t=unescape(encodeURIComponent(e));e=[];for(let r=0;r>>0;d=l,l=u,u=n(c,30)>>>0,c=o,o=s}i[0]=i[0]+o>>>0,i[1]=i[1]+c>>>0,i[2]=i[2]+u>>>0,i[3]=i[3]+l>>>0,i[4]=i[4]+d>>>0}return[i[0]>>24&255,i[0]>>16&255,i[0]>>8&255,255&i[0],i[1]>>24&255,i[1]>>16&255,i[1]>>8&255,255&i[1],i[2]>>24&255,i[2]>>16&255,i[2]>>8&255,255&i[2],i[3]>>24&255,i[3]>>16&255,i[3]>>8&255,255&i[3],i[4]>>24&255,i[4]>>16&255,i[4]>>8&255,255&i[4]]}},46585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.unsafeStringify=o;var n,i=(n=r(4564))&&n.__esModule?n:{default:n};const a=[];for(let e=0;e<256;++e)a.push((e+256).toString(16).slice(1));function o(e,t=0){return a[e[t+0]]+a[e[t+1]]+a[e[t+2]]+a[e[t+3]]+"-"+a[e[t+4]]+a[e[t+5]]+"-"+a[e[t+6]]+a[e[t+7]]+"-"+a[e[t+8]]+a[e[t+9]]+"-"+a[e[t+10]]+a[e[t+11]]+a[e[t+12]]+a[e[t+13]]+a[e[t+14]]+a[e[t+15]]}t.default=function(e,t=0){const r=o(e,t);if(!(0,i.default)(r))throw TypeError("Stringified UUID is invalid");return r}},74603:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(74089))&&n.__esModule?n:{default:n},a=r(46585);let o,s,c=0,u=0;t.default=function(e,t,r){let n=t&&r||0;const l=t||new Array(16);let d=(e=e||{}).node||o,p=void 0!==e.clockseq?e.clockseq:s;if(null==d||null==p){const t=e.random||(e.rng||i.default)();null==d&&(d=o=[1|t[0],t[1],t[2],t[3],t[4],t[5]]),null==p&&(p=s=16383&(t[6]<<8|t[7]))}let h=void 0!==e.msecs?e.msecs:Date.now(),f=void 0!==e.nsecs?e.nsecs:u+1;const y=h-c+(f-u)/1e4;if(y<0&&void 0===e.clockseq&&(p=p+1&16383),(y<0||h>c)&&void 0===e.nsecs&&(f=0),f>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");c=h,u=f,s=p,h+=122192928e5;const g=(1e4*(268435455&h)+f)%4294967296;l[n++]=g>>>24&255,l[n++]=g>>>16&255,l[n++]=g>>>8&255,l[n++]=255&g;const m=h/4294967296*1e4&268435455;l[n++]=m>>>8&255,l[n++]=255&m,l[n++]=m>>>24&15|16,l[n++]=m>>>16&255,l[n++]=p>>>8|128,l[n++]=255&p;for(let e=0;e<6;++e)l[n+e]=d[e];return t||(0,a.unsafeStringify)(l)}},22298:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(r(14782)),i=a(r(72668));function a(e){return e&&e.__esModule?e:{default:e}}var o=(0,n.default)("v3",48,i.default);t.default=o},14782:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.URL=t.DNS=void 0,t.default=function(e,t,r){function n(e,n,o,s){var c;if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));const t=[];for(let r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=o(r(40193)),i=o(r(74089)),a=r(46585);function o(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t,r){if(n.default.randomUUID&&!t&&!e)return n.default.randomUUID();const o=(e=e||{}).random||(e.rng||i.default)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=o[e];return t}return(0,a.unsafeStringify)(o)}},93423:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(r(14782)),i=a(r(34271));function a(e){return e&&e.__esModule?e:{default:e}}var o=(0,n.default)("v5",80,i.default);t.default=o},4564:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(16635))&&n.__esModule?n:{default:n};t.default=function(e){return"string"==typeof e&&i.default.test(e)}},24072:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(4564))&&n.__esModule?n:{default:n};t.default=function(e){if(!(0,i.default)(e))throw TypeError("Invalid UUID");return parseInt(e.slice(14,15),16)}},29815:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(33285),t)},33285:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateIri=t.IriValidationStrategy=void 0;const r=function(){const e="[!$&'()*+,;=]",t="%[a-fA-F0-9]{2}",r="([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])",n=`${r}\\.${r}\\.${r}\\.${r}`,i="[a-fA-F0-9]{1,4}",a=`(${i}:${i}|${n})`,o="[a-zA-Z0-9\\-._~ -퟿豈-﷏ﷰ-￯𐀀-🿽𠀀-𯿽𰀀-𿿽񀀀-񏿽񐀀-񟿽񠀀-񯿽񰀀-񿿽򀀀-򏿽򐀀-򟿽򠀀-򯿽򰀀-򿿽󀀀-󏿽󐀀-󟿽󡀀-󯿽]",s=`(${o}|${t}|${e}|[:@])*`,c=`(${s})+`,u=`(${s})*`;return new RegExp(`^[a-zA-Z][a-zA-Z0-9+\\-.]*:(\\/\\/((${o}|${t}|${e}|:)*@)?(\\[(((${i}:){6}${a}|::(${i}:){5}${a}|(${i})?::(${i}:){4}${a}|((${i}:){0,1}${i})?::(${i}:){3}${a}|((${i}:){0,2}${i})?::(${i}:){2}${a}|((${i}:){0,3}${i})?::${i}:${a}|((${i}:){0,4}${i})?::${a}|((${i}:){0,5}${i})?::${i}|((${i}:){0,6}${i})?::)|v[a-fA-F0-9]+\\.(${e}|${e}|":)+)\\]|${n}|(${o}|${t}|${e})*)(:[0-9]*)?(\\/${u})*|\\/(${c}(\\/${u})*)?|${c}(\\/${u})*|)(\\?(${s}|[-󰀀-󿿽􀀀-􏿽]|[\\/?])*)?(#(${s}|[\\/?])*)?$`,"u")}(),n=/^[A-Za-z][\d+-.A-Za-z]*:[^\u0000-\u0020"<>\\^`{|}]*$/u;var i;!function(e){e.Strict="strict",e.Pragmatic="pragmatic",e.None="none"}(i=t.IriValidationStrategy||(t.IriValidationStrategy={})),t.validateIri=function(e,t=i.Strict){switch(t){case i.Strict:return r.test(e)?void 0:new Error(`Invalid IRI according to RFC 3987: '${e}'`);case i.Pragmatic:return n.test(e)?void 0:new Error(`Invalid IRI according to RDF Turtle: '${e}'`);case i.None:return;default:return new Error(`Not supported validation strategy "${t}"`)}}},55675:(e,t,r)=>{e.exports=function e(t,r,n){function i(o,s){if(!r[o]){if(!t[o]){if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=r[o]={exports:{}};t[o][0].call(u.exports,(function(e){return i(t[o][1][e]||e)}),u,u.exports,e,t,r,n)}return r[o].exports}for(var a=void 0,o=0;o=0;s--)if(c[s]!==u[s])return!1;for(s=c.length-1;s>=0;s--)if(!p(e[o=c[s]],t[o],r,n))return!1;return!0}(e,t,r,s))}return r?e===t:e==t}function h(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function f(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function y(e,t,r,n){var i;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),e&&!i&&l(i,r,"Missing expected exception"+n);var a="string"==typeof n,o=!e&&i&&!r;if((!e&&g.isError(i)&&a&&f(i,r)||o)&&l(i,r,"Got unwanted exception"+n),e&&i&&r&&!f(i,r)||!e&&i)throw i}var g=e("util/"),m=Object.prototype.hasOwnProperty,b=Array.prototype.slice,v="foo"===function(){}.name,_=t.exports=d,w=/\s*function\s+([^\(\s]*)\s*/;_.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return c(u(e.actual),128)+" "+e.operator+" "+c(u(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||l;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var r=new Error;if(r.stack){var n=r.stack,i=s(t),a=n.indexOf("\n"+i);if(a>=0){var o=n.indexOf("\n",a+1);n=n.substring(o+1)}this.stack=n}}},g.inherits(_.AssertionError,Error),_.fail=l,_.ok=d,_.equal=function(e,t,r){e!=t&&l(e,t,r,"==",_.equal)},_.notEqual=function(e,t,r){e==t&&l(e,t,r,"!=",_.notEqual)},_.deepEqual=function(e,t,r){p(e,t,!1)||l(e,t,r,"deepEqual",_.deepEqual)},_.deepStrictEqual=function(e,t,r){p(e,t,!0)||l(e,t,r,"deepStrictEqual",_.deepStrictEqual)},_.notDeepEqual=function(e,t,r){p(e,t,!1)&&l(e,t,r,"notDeepEqual",_.notDeepEqual)},_.notDeepStrictEqual=function e(t,r,n){p(t,r,!0)&&l(t,r,n,"notDeepStrictEqual",e)},_.strictEqual=function(e,t,r){e!==t&&l(e,t,r,"===",_.strictEqual)},_.notStrictEqual=function(e,t,r){e===t&&l(e,t,r,"!==",_.notStrictEqual)},_.throws=function(e,t,r){y(!0,e,t,r)},_.doesNotThrow=function(e,t,r){y(!1,e,t,r)},_.ifError=function(e){if(e)throw e};var T=Object.keys||function(e){var t=[];for(var r in e)m.call(e,r)&&t.push(r);return t}}).call(this,void 0!==r.g?r.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"util/":7}],3:[function(e,t,r){},{}],4:[function(e,t,r){function n(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(l===setTimeout)return setTimeout(e,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(e,0);try{return l(e,0)}catch(t){try{return l.call(null,e,0)}catch(t){return l.call(this,e,0)}}}function o(){y&&h&&(y=!1,h.length?f=h.concat(f):g=-1,f.length&&s())}function s(){if(!y){var e=a(o);y=!0;for(var t=f.length;t;){for(h=f,f=[];++g1)for(var r=1;r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),d(t)?r.showHidden=t:t&&n._extend(r,t),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),s(r,e,r.depth)}function a(e,t){var r=i.styles[t];return r?"["+i.colors[r][0]+"m"+e+"["+i.colors[r][1]+"m":e}function o(e,t){return e}function s(e,t,r){if(e.customInspect&&t&&_(t.inspect)&&t.inspect!==n.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(r,e);return f(i)||(i=s(e,i,r)),i}var a=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(f(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return h(t)?e.stylize(""+t,"number"):d(t)?e.stylize(""+t,"boolean"):p(t)?e.stylize("null","null"):void 0}(e,t);if(a)return a;var o=Object.keys(t),m=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),v(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return c(t);if(0===o.length){if(_(t)){var w=t.name?": "+t.name:"";return e.stylize("[Function"+w+"]","special")}if(g(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(b(t))return e.stylize(Date.prototype.toString.call(t),"date");if(v(t))return c(t)}var T,O="",E=!1,x=["{","}"];return l(t)&&(E=!0,x=["[","]"]),_(t)&&(O=" [Function"+(t.name?": "+t.name:"")+"]"),g(t)&&(O=" "+RegExp.prototype.toString.call(t)),b(t)&&(O=" "+Date.prototype.toUTCString.call(t)),v(t)&&(O=" "+c(t)),0!==o.length||E&&0!=t.length?r<0?g(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),T=E?function(e,t,r,n,i){for(var a=[],o=0,s=t.length;o60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}(T,O,x)):x[0]+O+x[1]}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function u(e,t,r,n,i,a){var o,c,u;if((u=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?c=u.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):u.set&&(c=e.stylize("[Setter]","special")),S(n,i)||(o="["+i+"]"),c||(e.seen.indexOf(u.value)<0?(c=p(r)?s(e,u.value,null):s(e,u.value,r-1)).indexOf("\n")>-1&&(c=a?c.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+c.split("\n").map((function(e){return" "+e})).join("\n")):c=e.stylize("[Circular]","special")),y(o)){if(a&&i.match(/^\d+$/))return c;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+c}function l(e){return Array.isArray(e)}function d(e){return"boolean"==typeof e}function p(e){return null===e}function h(e){return"number"==typeof e}function f(e){return"string"==typeof e}function y(e){return void 0===e}function g(e){return m(e)&&"[object RegExp]"===w(e)}function m(e){return"object"==typeof e&&null!==e}function b(e){return m(e)&&"[object Date]"===w(e)}function v(e){return m(e)&&("[object Error]"===w(e)||e instanceof Error)}function _(e){return"function"==typeof e}function w(e){return Object.prototype.toString.call(e)}function T(e){return e<10?"0"+e.toString(10):e.toString(10)}function S(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var O=/%[sdj%]/g;n.format=function(e){if(!f(e)){for(var t=[],r=0;r=a)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}})),s=n[r];r3&&void 0!==arguments[3]?arguments[3]:1,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){return 1},a=Object.create(Le.prototype);return o(a),M(a,Object.create(Be.prototype),e,t,r,n,i),a}function o(e){e._state="readable",e._reader=void 0,e._storedError=void 0,e._disturbed=!1}function s(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readableStreamController")}function c(e){return void 0!==e._reader}function u(e){return new Promise((function(t,r){var n={_resolve:t,_reject:r};e._reader._readIntoRequests.push(n)}))}function l(e){return new Promise((function(t,r){var n={_resolve:t,_reject:r};e._reader._readRequests.push(n)}))}function d(e,t){return e._disturbed=!0,"closed"===e._state?Promise.resolve(void 0):"errored"===e._state?Promise.reject(e._storedError):(p(e),e._readableStreamController[Ce](t).then((function(){})))}function p(e){e._state="closed";var t=e._reader;if(void 0!==t){if(!0===_(t)){var r=!0,n=!1,i=void 0;try{for(var a,o=t._readRequests[Symbol.iterator]();!(r=(a=o.next()).done);r=!0)(0,a.value._resolve)(de(void 0,!0))}catch(e){n=!0,i=e}finally{try{!r&&o.return&&o.return()}finally{if(n)throw i}}t._readRequests=[]}!function(e){e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}(t)}}function h(e,t){e._state="errored",e._storedError=t;var r=e._reader;if(void 0!==r){if(!0===_(r)){var n=!0,i=!1,a=void 0;try{for(var o,s=r._readRequests[Symbol.iterator]();!(n=(o=s.next()).done);n=!0)o.value._reject(t)}catch(e){i=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(i)throw a}}r._readRequests=[]}else{var c=!0,u=!1,l=void 0;try{for(var d,p=r._readIntoRequests[Symbol.iterator]();!(c=(d=p.next()).done);c=!0)d.value._reject(t)}catch(e){u=!0,l=e}finally{try{!c&&p.return&&p.return()}finally{if(u)throw l}}r._readIntoRequests=[]}re(r,t),r._closedPromise.catch((function(){}))}}function f(e,t,r){e._reader._readRequests.shift()._resolve(de(t,r))}function y(e){return e._reader._readIntoRequests.length}function g(e){return e._reader._readRequests.length}function m(e){var t=e._reader;return void 0!==t&&!1!==v(t)}function b(e){var t=e._reader;return void 0!==t&&!1!==_(t)}function v(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readIntoRequests")}function _(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readRequests")}function w(e,t){e._ownerReadableStream=t,t._reader=e,"readable"===t._state?function(e){e._closedPromise=new Promise((function(t,r){e._closedPromise_resolve=t,e._closedPromise_reject=r}))}(e):"closed"===t._state?function(e){e._closedPromise=Promise.resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}(e):(function(e,t){e._closedPromise=Promise.reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}(e,t._storedError),e._closedPromise.catch((function(){})))}function T(e,t){return d(e._ownerReadableStream,t)}function S(e){"readable"===e._ownerReadableStream._state?re(e,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")):function(e,t){e._closedPromise=Promise.reject(t)}(e,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")),e._closedPromise.catch((function(){})),e._ownerReadableStream._reader=void 0,e._ownerReadableStream=void 0}function O(e,t){var r=e._ownerReadableStream;return r._disturbed=!0,"errored"===r._state?Promise.reject(r._storedError):function(e,t){var r=e._controlledReadableByteStream,n=1;t.constructor!==DataView&&(n=t.constructor.BYTES_PER_ELEMENT);var i=t.constructor,a={buffer:ye(t.buffer),byteOffset:t.byteOffset,byteLength:t.byteLength,bytesFilled:0,elementSize:n,ctor:i,readerType:"byob"};if(e._pendingPullIntos.length>0)return e._pendingPullIntos.push(a),u(r);if("closed"===r._state){var o=new t.constructor(a.buffer,a.byteOffset,0);return Promise.resolve(de(o,!0))}if(e._queueTotalSize>0){if(!0===Q(e,a)){var s=q(a);return H(e),Promise.resolve(de(s,!1))}if(!0===e._closeRequested){var c=new TypeError("Insufficient bytes to fill elements in the given buffer");return J(e,c),Promise.reject(c)}}e._pendingPullIntos.push(a);var l=u(r);return F(e),l}(r._readableStreamController,t)}function E(e){var t=e._ownerReadableStream;return t._disturbed=!0,"closed"===t._state?Promise.resolve(de(void 0,!0)):"errored"===t._state?Promise.reject(t._storedError):t._readableStreamController[Me]()}function x(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledReadableStream")}function A(e){!1!==R(e)&&(!0!==e._pulling?(e._pulling=!0,e._pullAlgorithm().then((function(){if(e._pulling=!1,!0===e._pullAgain)return e._pullAgain=!1,A(e)}),(function(t){D(e,t)})).catch(_e)):e._pullAgain=!0)}function R(e){var t=e._controlledReadableStream;return!1!==C(e)&&!1!==e._started&&(!0===c(t)&&g(t)>0||j(e)>0)}function I(e){var t=e._controlledReadableStream;e._closeRequested=!0,0===e._queue.length&&p(t)}function P(e,t){var r=e._controlledReadableStream;if(!0===c(r)&&g(r)>0)f(r,t,!1);else{var n=void 0;try{n=e._strategySizeAlgorithm(t)}catch(t){throw D(e,t),t}try{Se(e,t,n)}catch(t){throw D(e,t),t}}A(e)}function N(e,t){var r=e._controlledReadableStream;Oe(e),h(r,t)}function D(e,t){"readable"===e._controlledReadableStream._state&&N(e,t)}function j(e){var t=e._controlledReadableStream._state;return"errored"===t?null:"closed"===t?0:e._strategyHWM-e._queueTotalSize}function C(e){var t=e._controlledReadableStream._state;return!1===e._closeRequested&&"readable"===t}function M(e,t,r,n,i,a,o){t._controlledReadableStream=e,t._queue=void 0,t._queueTotalSize=void 0,Oe(t),t._started=!1,t._closeRequested=!1,t._pullAgain=!1,t._pulling=!1,t._strategySizeAlgorithm=o,t._strategyHWM=a,t._pullAlgorithm=n,t._cancelAlgorithm=i,e._readableStreamController=t;var s=r();Promise.resolve(s).then((function(){t._started=!0,A(t)}),(function(e){D(t,e)})).catch(_e)}function L(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledReadableByteStream")}function k(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_associatedReadableByteStreamController")}function F(e){!1!==function(e){var t=e._controlledReadableByteStream;return"readable"===t._state&&!0!==e._closeRequested&&!1!==e._started&&(!0===b(t)&&g(t)>0||!0===m(t)&&y(t)>0||W(e)>0)}(e)&&(!0!==e._pulling?(e._pulling=!0,e._pullAlgorithm().then((function(){e._pulling=!1,!0===e._pullAgain&&(e._pullAgain=!1,F(e))}),(function(t){"readable"===e._controlledReadableByteStream._state&&J(e,t)})).catch(_e)):e._pullAgain=!0)}function B(e){G(e),e._pendingPullIntos=[]}function U(e,t){var r=!1;"closed"===e._state&&(r=!0);var n=q(t);"default"===t.readerType?f(e,n,r):function(e,t,r){e._reader._readIntoRequests.shift()._resolve(de(t,r))}(e,n,r)}function q(e){var t=e.bytesFilled,r=e.elementSize;return new e.ctor(e.buffer,e.byteOffset,t/r)}function V(e,t,r,n){e._queue.push({buffer:t,byteOffset:r,byteLength:n}),e._queueTotalSize+=n}function Q(e,t){var r=t.elementSize,n=t.bytesFilled-t.bytesFilled%r,i=Math.min(e._queueTotalSize,t.byteLength-t.bytesFilled),a=t.bytesFilled+i,o=a-a%r,s=i,c=!1;o>n&&(s=o-t.bytesFilled,c=!0);for(var u=e._queue;s>0;){var l=u[0],d=Math.min(s,l.byteLength),p=t.byteOffset+t.bytesFilled;ue(t.buffer,p,l.buffer,l.byteOffset,d),l.byteLength===d?u.shift():(l.byteOffset+=d,l.byteLength-=d),e._queueTotalSize-=d,$(e,d,t),s-=d}return c}function $(e,t,r){G(e),r.bytesFilled+=t}function H(e){0===e._queueTotalSize&&!0===e._closeRequested?p(e._controlledReadableByteStream):F(e)}function G(e){void 0!==e._byobRequest&&(e._byobRequest._associatedReadableByteStreamController=void 0,e._byobRequest._view=void 0,e._byobRequest=void 0)}function z(e){for(;e._pendingPullIntos.length>0;){if(0===e._queueTotalSize)return;var t=e._pendingPullIntos[0];!0===Q(e,t)&&(X(e),U(e._controlledReadableByteStream,t))}}function K(e,t){var r=e._pendingPullIntos[0];if("closed"===e._controlledReadableByteStream._state){if(0!==t)throw new TypeError("bytesWritten must be 0 when calling respond() on a closed stream");!function(e,t){t.buffer=ye(t.buffer);var r=e._controlledReadableByteStream;if(!0===m(r))for(;y(r)>0;)U(r,X(e))}(e,r)}else!function(e,t,r){if(r.bytesFilled+t>r.byteLength)throw new RangeError("bytesWritten out of range");if($(e,t,r),!(r.bytesFilled0){var i=r.byteOffset+r.bytesFilled,a=r.buffer.slice(i-n,i);V(e,a,0,a.byteLength)}r.buffer=ye(r.buffer),r.bytesFilled-=n,U(e._controlledReadableByteStream,r),z(e)}}(e,t,r)}function X(e){var t=e._pendingPullIntos.shift();return G(e),t}function J(e,t){var r=e._controlledReadableByteStream;B(e),Oe(e),h(r,t)}function W(e){var t=e._controlledReadableByteStream._state;return"errored"===t?null:"closed"===t?0:e._strategyHWM-e._queueTotalSize}function Y(e,t,r,n,i,a,o){t._controlledReadableByteStream=e,t._pullAgain=!1,t._pulling=!1,B(t),t._queue=t._queueTotalSize=void 0,Oe(t),t._closeRequested=!1,t._started=!1,t._strategyHWM=ge(a),t._pullAlgorithm=n,t._cancelAlgorithm=i,t._autoAllocateChunkSize=o,t._pendingPullIntos=[],e._readableStreamController=t;var s=r();Promise.resolve(s).then((function(){t._started=!0,F(t)}),(function(r){"readable"===e._state&&J(t,r)})).catch(_e)}function Z(e){return new TypeError("ReadableStream.prototype."+e+" can only be used on a ReadableStream")}function ee(e){return new TypeError("Cannot "+e+" a stream using a released reader")}function te(e){return new TypeError("ReadableStreamDefaultReader.prototype."+e+" can only be used on a ReadableStreamDefaultReader")}function re(e,t){e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}function ne(e){return new TypeError("ReadableStreamBYOBReader.prototype."+e+" can only be used on a ReadableStreamBYOBReader")}function ie(e){return new TypeError("ReadableStreamDefaultController.prototype."+e+" can only be used on a ReadableStreamDefaultController")}function ae(e){return new TypeError("ReadableStreamBYOBRequest.prototype."+e+" can only be used on a ReadableStreamBYOBRequest")}function oe(e){return new TypeError("ReadableByteStreamController.prototype."+e+" can only be used on a ReadableByteStreamController")}var se=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.size,a=r.highWaterMark;n(this,e),o(this);var s=t.type;if("bytes"===String(s)){if(void 0===a&&(a=0),a=ge(a),void 0!==i)throw new RangeError("The strategy for a byte stream cannot have a size function");!function(e,t,r){var n=Object.create(qe.prototype),i=le(t,"pull",0,[n]),a=le(t,"cancel",1,[]),o=t.autoAllocateChunkSize;if(void 0!==o&&(!1===Number.isInteger(o)||o<=0))throw new RangeError("autoAllocateChunkSize must be a positive integer");Y(e,n,(function(){return he(t,"start",[n])}),i,a,r,o)}(this,t,a)}else{if(void 0!==s)throw new RangeError("Invalid type is specified");void 0===a&&(a=1),function(e,t,r,n){var i=Object.create(Be.prototype),a=le(t,"pull",0,[i]),o=le(t,"cancel",1,[]);M(e,i,(function(){return he(t,"start",[i])}),a,o,r,n)}(this,t,a=ge(a),me(i))}}return se(e,[{key:"cancel",value:function(e){return!1===s(this)?Promise.reject(Z("cancel")):!0===c(this)?Promise.reject(new TypeError("Cannot cancel a stream that already has a reader")):d(this,e)}},{key:"getReader",value:function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).mode;if(!1===s(this))throw Z("getReader");if(void 0===e)return i(this);if("byob"===(e=String(e)))return function(e){return new Fe(e)}(this);throw new RangeError("Invalid mode is specified")}},{key:"pipeThrough",value:function(e,t){var r=e.writable,n=e.readable;if(void 0===r||void 0===n)throw new TypeError("readable and writable arguments must be defined");return function(e){try{Promise.prototype.then.call(e,void 0,(function(){}))}catch(e){}}(this.pipeTo(r,t)),n}},{key:"pipeTo",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.preventClose,a=r.preventAbort,o=r.preventCancel;if(!1===s(this))return Promise.reject(Z("pipeTo"));if(!1===Ae(e))return Promise.reject(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream"));if(n=Boolean(n),a=Boolean(a),o=Boolean(o),!0===c(this))return Promise.reject(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream"));if(!0===Re(e))return Promise.reject(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream"));var u=i(this),l=xe(e),p=!1,h=Promise.resolve();return new Promise((function(r,i){function s(){var e=h;return h.then((function(){return e!==h?s():void 0}))}function c(e,t,r){"errored"===e._state?r(e._storedError):t.catch(r).catch(_e)}function f(t,r,n){function i(){t().then((function(){return g(r,n)}),(function(e){return g(!0,e)})).catch(_e)}!0!==p&&(p=!0,"writable"===e._state&&!1===je(e)?s().then(i):i())}function y(t,r){!0!==p&&(p=!0,"writable"===e._state&&!1===je(e)?s().then((function(){return g(t,r)})).catch(_e):g(t,r))}function g(e,t){Ne(l),S(u),e?i(t):r(void 0)}if(c(t,u._closedPromise,(function(t){!1===a?f((function(){return Ie(e,t)}),!0,t):y(!0,t)})),c(e,l._closedPromise,(function(e){!1===o?f((function(){return d(t,e)}),!0,e):y(!0,e)})),function(e,t,r){"closed"===e._state?r():t.then(r).catch(_e)}(t,u._closedPromise,(function(){!1===n?f((function(){return Pe(l)})):y()})),!0===je(e)||"closed"===e._state){var m=new TypeError("the destination writable stream closed before all data could be piped to it");!1===o?f((function(){return d(t,m)}),!0,m):y(!0,m)}(function e(){return!0===p?Promise.resolve():l._readyPromise.then((function(){return E(u).then((function(e){var t=e.value;!0!==e.done&&(h=De(l,t).catch((function(){})))}))})).then(e)})().catch((function(e){h=Promise.resolve(),_e(e)}))}))}},{key:"tee",value:function(){if(!1===s(this))throw Z("tee");var e=function(e,t){function r(){return E(o).then((function(e){var t=e.value;if(!0===e.done&&!1===s&&(!1===c&&I(h._readableStreamController),!1===u&&I(f._readableStreamController),s=!0),!0!==s){var r=t,n=t;!1===c&&P(h._readableStreamController,r),!1===u&&P(f._readableStreamController,n)}}))}function n(){}var o=i(e),s=!1,c=!1,u=!1,l=void 0,p=void 0,h=void 0,f=void 0,y=void 0,g=new Promise((function(e){y=e}));return h=a(n,r,(function(t){if(c=!0,l=t,!0===u){var r=be([l,p]),n=d(e,r);y(n)}return g})),f=a(n,r,(function(t){if(u=!0,p=t,!0===c){var r=be([l,p]),n=d(e,r);y(n)}return g})),o._closedPromise.catch((function(e){!0!==s&&(D(h._readableStreamController,e),D(f._readableStreamController,e),s=!0)})),[h,f]}(this);return be(e)}},{key:"locked",get:function(){if(!1===s(this))throw Z("locked");return c(this)}}]),e}();t.exports={CreateReadableByteStream:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,a=Object.create(Le.prototype);return o(a),Y(a,Object.create(qe.prototype),e,t,r,n,i),a},CreateReadableStream:a,ReadableStream:Le,IsReadableStreamDisturbed:function(e){return e._disturbed},ReadableStreamDefaultControllerClose:I,ReadableStreamDefaultControllerEnqueue:P,ReadableStreamDefaultControllerError:N,ReadableStreamDefaultControllerGetDesiredSize:j,ReadableStreamDefaultControllerHasBackpressure:function(e){return!0!==R(e)},ReadableStreamDefaultControllerCanCloseOrEnqueue:C};var ke=function(){function e(t){if(n(this,e),!1===s(t))throw new TypeError("ReadableStreamDefaultReader can only be constructed with a ReadableStream instance");if(!0===c(t))throw new TypeError("This stream has already been locked for exclusive reading by another reader");w(this,t),this._readRequests=[]}return se(e,[{key:"cancel",value:function(e){return!1===_(this)?Promise.reject(te("cancel")):void 0===this._ownerReadableStream?Promise.reject(ee("cancel")):T(this,e)}},{key:"read",value:function(){return!1===_(this)?Promise.reject(te("read")):void 0===this._ownerReadableStream?Promise.reject(ee("read from")):E(this)}},{key:"releaseLock",value:function(){if(!1===_(this))throw te("releaseLock");if(void 0!==this._ownerReadableStream){if(this._readRequests.length>0)throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled");S(this)}}},{key:"closed",get:function(){return!1===_(this)?Promise.reject(te("closed")):this._closedPromise}}]),e}(),Fe=function(){function e(t){if(n(this,e),!s(t))throw new TypeError("ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a byte source");if(!1===L(t._readableStreamController))throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source");if(c(t))throw new TypeError("This stream has already been locked for exclusive reading by another reader");w(this,t),this._readIntoRequests=[]}return se(e,[{key:"cancel",value:function(e){return v(this)?void 0===this._ownerReadableStream?Promise.reject(ee("cancel")):T(this,e):Promise.reject(ne("cancel"))}},{key:"read",value:function(e){return v(this)?void 0===this._ownerReadableStream?Promise.reject(ee("read from")):ArrayBuffer.isView(e)?!0===fe(e.buffer)?Promise.reject(new TypeError("Cannot read into a view onto a detached ArrayBuffer")):0===e.byteLength?Promise.reject(new TypeError("view must have non-zero byteLength")):O(this,e):Promise.reject(new TypeError("view must be an array buffer view")):Promise.reject(ne("read"))}},{key:"releaseLock",value:function(){if(!v(this))throw ne("releaseLock");if(void 0!==this._ownerReadableStream){if(this._readIntoRequests.length>0)throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled");S(this)}}},{key:"closed",get:function(){return v(this)?this._closedPromise:Promise.reject(ne("closed"))}}]),e}(),Be=function(){function e(){throw n(this,e),new TypeError}return se(e,[{key:"close",value:function(){if(!1===x(this))throw ie("close");if(!1===C(this))throw new TypeError("The stream is not in a state that permits close");I(this)}},{key:"enqueue",value:function(e){if(!1===x(this))throw ie("enqueue");if(!1===C(this))throw new TypeError("The stream is not in a state that permits enqueue");return P(this,e)}},{key:"error",value:function(e){if(!1===x(this))throw ie("error");var t=this._controlledReadableStream;if("readable"!==t._state)throw new TypeError("The stream is "+t._state+" and so cannot be errored");N(this,e)}},{key:Ce,value:function(e){return Oe(this),this._cancelAlgorithm(e)}},{key:Me,value:function(){var e=this._controlledReadableStream;if(this._queue.length>0){var t=Te(this);return!0===this._closeRequested&&0===this._queue.length?p(e):A(this),Promise.resolve(de(t,!1))}var r=l(e);return A(this),r}},{key:"desiredSize",get:function(){if(!1===x(this))throw ie("desiredSize");return j(this)}}]),e}(),Ue=function(){function e(){throw n(this,e),new TypeError("ReadableStreamBYOBRequest cannot be used directly")}return se(e,[{key:"respond",value:function(e){if(!1===k(this))throw ae("respond");if(void 0===this._associatedReadableByteStreamController)throw new TypeError("This BYOB request has been invalidated");if(!0===fe(this._view.buffer))throw new TypeError("The BYOB request's buffer has been detached and so cannot be used as a response");!function(e,t){if(t=Number(t),!1===pe(t))throw new RangeError("bytesWritten must be a finite");K(e,t)}(this._associatedReadableByteStreamController,e)}},{key:"respondWithNewView",value:function(e){if(!1===k(this))throw ae("respond");if(void 0===this._associatedReadableByteStreamController)throw new TypeError("This BYOB request has been invalidated");if(!ArrayBuffer.isView(e))throw new TypeError("You can only respond with array buffer views");if(!0===fe(e.buffer))throw new TypeError("The supplied view's buffer has been detached and so cannot be used as a response");!function(e,t){var r=e._pendingPullIntos[0];if(r.byteOffset+r.bytesFilled!==t.byteOffset)throw new RangeError("The region specified by view does not match byobRequest");if(r.byteLength!==t.byteLength)throw new RangeError("The buffer of view has different capacity than byobRequest");r.buffer=t.buffer,K(e,t.byteLength)}(this._associatedReadableByteStreamController,e)}},{key:"view",get:function(){if(!1===k(this))throw ae("view");return this._view}}]),e}(),qe=function(){function e(){throw n(this,e),new TypeError("ReadableByteStreamController constructor cannot be used directly")}return se(e,[{key:"close",value:function(){if(!1===L(this))throw oe("close");if(!0===this._closeRequested)throw new TypeError("The stream has already been closed; do not close it again!");var e=this._controlledReadableByteStream._state;if("readable"!==e)throw new TypeError("The stream (in "+e+" state) is not in the readable state and cannot be closed");!function(e){var t=e._controlledReadableByteStream;if(e._queueTotalSize>0)e._closeRequested=!0;else{if(e._pendingPullIntos.length>0&&e._pendingPullIntos[0].bytesFilled>0){var r=new TypeError("Insufficient bytes to fill elements in the given buffer");throw J(e,r),r}p(t)}}(this)}},{key:"enqueue",value:function(e){if(!1===L(this))throw oe("enqueue");if(!0===this._closeRequested)throw new TypeError("stream is closed or draining");var t=this._controlledReadableByteStream._state;if("readable"!==t)throw new TypeError("The stream (in "+t+" state) is not in the readable state and cannot be enqueued to");if(!ArrayBuffer.isView(e))throw new TypeError("You can only enqueue array buffer views when using a ReadableByteStreamController");if(!0===fe(e.buffer))throw new TypeError("Cannot enqueue a view onto a detached ArrayBuffer");!function(e,t){var r=e._controlledReadableByteStream,n=t.buffer,i=t.byteOffset,a=t.byteLength,o=ye(n);!0===b(r)?0===g(r)?V(e,o,i,a):f(r,new Uint8Array(o,i,a),!1):!0===m(r)?(V(e,o,i,a),z(e)):V(e,o,i,a)}(this,e)}},{key:"error",value:function(e){if(!1===L(this))throw oe("error");var t=this._controlledReadableByteStream;if("readable"!==t._state)throw new TypeError("The stream is "+t._state+" and so cannot be errored");J(this,e)}},{key:Ce,value:function(e){return this._pendingPullIntos.length>0&&(this._pendingPullIntos[0].bytesFilled=0),Oe(this),this._cancelAlgorithm(e)}},{key:Me,value:function(){var e=this._controlledReadableByteStream;if(this._queueTotalSize>0){var t=this._queue.shift();this._queueTotalSize-=t.byteLength,H(this);var r=void 0;try{r=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}catch(e){return Promise.reject(e)}return Promise.resolve(de(r,!1))}var n=this._autoAllocateChunkSize;if(void 0!==n){var i=void 0;try{i=new ArrayBuffer(n)}catch(e){return Promise.reject(e)}var a={buffer:i,byteOffset:0,byteLength:n,bytesFilled:0,elementSize:1,ctor:Uint8Array,readerType:"default"};this._pendingPullIntos.push(a)}var o=l(e);return F(this),o}},{key:"byobRequest",get:function(){if(!1===L(this))throw oe("byobRequest");if(void 0===this._byobRequest&&this._pendingPullIntos.length>0){var e=this._pendingPullIntos[0],t=new Uint8Array(e.buffer,e.byteOffset+e.bytesFilled,e.byteLength-e.bytesFilled),r=Object.create(Ue.prototype);(function(e,t,r){e._associatedReadableByteStreamController=t,e._view=r})(r,this,t),this._byobRequest=r}return this._byobRequest}},{key:"desiredSize",get:function(){if(!1===L(this))throw oe("desiredSize");return W(this)}}]),e}()},{"./helpers.js":10,"./queue-with-sizes.js":11,"./utils.js":14,"./writable-stream.js":15,"better-assert":16}],13:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t,r,n,i,a){function u(){return t}e._writable=D(u,(function(t){return function(e,t){y("TransformStreamDefaultSinkWriteAlgorithm()");var r=e._transformStreamController;return!0===e._backpressure?e._backpressureChangePromise.then((function(){var n=e._writable;if("erroring"===n._state)throw n._storedError;return r._transformAlgorithm(t)})):r._transformAlgorithm(t)}(e,t)}),(function(){return function(e){y("TransformStreamDefaultSinkCloseAlgorithm()");var t=e._readable;return e._transformStreamController._flushAlgorithm().then((function(){if("errored"===t._state)throw t._storedError;var e=t._readableStreamController;!0===P(e)&&E(e)})).catch((function(r){throw o(e,r),t._storedError}))}(e)}),(function(){return function(e){return o(e,new TypeError("Writable side aborted")),Promise.resolve()}(e)}),r,n),e._readable=O(u,(function(){return function(e){return y("TransformStreamDefaultSourcePullAlgorithm()"),c(e,!1),e._backpressureChangePromise}(e)}),(function(t){return s(e,t),Promise.resolve()}),i,a),e._backpressure=void 0,e._backpressureChangePromise=void 0,e._backpressureChangePromise_resolve=void 0,c(e,!0),e._transformStreamController=void 0}function a(e){return!!_(e)&&!!Object.prototype.hasOwnProperty.call(e,"_transformStreamController")}function o(e,t){y("TransformStreamError()"),"readable"===e._readable._state&&A(e._readable._readableStreamController,t),s(e,t)}function s(e,t){j(e._writable._writableStreamController,t),!0===e._backpressure&&c(e,!1)}function c(e,t){y("TransformStreamSetBackpressure() [backpressure = "+t+"]"),void 0!==e._backpressureChangePromise&&e._backpressureChangePromise_resolve(),e._backpressureChangePromise=new Promise((function(t){e._backpressureChangePromise_resolve=t})),e._backpressure=t}function u(e){return!!_(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledTransformStream")}function l(e,t,r,n){t._controlledTransformStream=e,e._transformStreamController=t,t._transformAlgorithm=r,t._flushAlgorithm=n}function d(e,t){y("TransformStreamDefaultControllerEnqueue()");var r=e._controlledTransformStream,n=r._readable._readableStreamController;if(!1===P(n))throw new TypeError("Readable side is not in a state that permits enqueue");try{x(n,t)}catch(e){throw s(r,e),r._readable._storedError}I(n)!==r._backpressure&&c(r,!0)}function p(e){return new TypeError("TransformStreamDefaultController.prototype."+e+" can only be used on a TransformStreamDefaultController")}function h(e){return new TypeError("TransformStream.prototype."+e+" can only be used on a TransformStream")}var f=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(n(this,e),void 0!==t.readableType)throw new RangeError("Invalid readable type specified");if(void 0!==t.writableType)throw new RangeError("Invalid writable type specified");var s=r.size,c=T(s),u=r.highWaterMark;void 0===u&&(u=1),u=w(u);var p=a.size,h=T(p),f=a.highWaterMark;void 0===f&&(f=0),f=w(f);var y=void 0;i(this,new Promise((function(e){y=e})),u,c,f,h),function(e,t){var r=Object.create(M.prototype),n=function(e){try{return d(r,e),Promise.resolve()}catch(e){return Promise.reject(e)}},i=t.transform;if(void 0!==i){if("function"!=typeof i)throw new TypeError("transform is not a method");n=function(n){return v(i,t,[n,r]).catch((function(t){throw o(e,t),t}))}}var a=b(t,"flush",0,[r]);l(e,r,n,a)}(this,t);var g=m(t,"start",[this._transformStreamController]);y(g)}return f(e,[{key:"readable",get:function(){if(!1===a(this))throw h("readable");return this._readable}},{key:"writable",get:function(){if(!1===a(this))throw h("writable");return this._writable}}]),e}(),M=function(){function e(){throw n(this,e),new TypeError("TransformStreamDefaultController instances cannot be created directly")}return f(e,[{key:"enqueue",value:function(e){if(!1===u(this))throw p("enqueue");d(this,e)}},{key:"error",value:function(e){if(!1===u(this))throw p("error");!function(e,t){o(e._controlledTransformStream,t)}(this,e)}},{key:"terminate",value:function(){if(!1===u(this))throw p("terminate");!function(e){y("TransformStreamDefaultControllerTerminate()");var t=e._controlledTransformStream,r=t._readable._readableStreamController;!0===P(r)&&E(r),s(t,new TypeError("TransformStream terminated"))}(this)}},{key:"desiredSize",get:function(){if(!1===u(this))throw p("desiredSize");var e=this._controlledTransformStream._readable._readableStreamController;return R(e)}}]),e}();t.exports={CreateTransformStream:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){return 1},o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:function(){return 1},c=Object.create(C.prototype),u=void 0;i(c,new Promise((function(e){u=e})),n,a,o,s),l(c,Object.create(M.prototype),t,r);var d=e();return u(d),c},TransformStream:C}},{"./helpers.js":10,"./readable-stream.js":12,"./writable-stream.js":15,"better-assert":16,debug:18}],14:[function(e,t,r){"use strict";var n=e("better-assert");r.rethrowAssertionErrorRejection=function(e){e&&e.constructor===n.AssertionError&&setTimeout((function(){throw e}),0)}},{"better-assert":16}],15:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e){return new Y(e)}function a(e){e._state="writable",e._storedError=void 0,e._writer=void 0,e._writableStreamController=void 0,e._writeRequests=[],e._inFlightWriteRequest=void 0,e._closeRequest=void 0,e._inFlightCloseRequest=void 0,e._pendingAbortRequest=void 0,e._backpressure=!1}function o(e){return!!V(e)&&!!Object.prototype.hasOwnProperty.call(e,"_writableStreamController")}function s(e){return void 0!==e._writer}function c(e,t){var r=e._state;if("closed"===r)return Promise.resolve(void 0);if("errored"===r)return Promise.reject(e._storedError);var n=new TypeError("Requested to abort");if(void 0!==e._pendingAbortRequest)return Promise.reject(n);var i=!1;"erroring"===r&&(i=!0,t=void 0);var a=new Promise((function(r,n){e._pendingAbortRequest={_resolve:r,_reject:n,_reason:t,_wasAlreadyErroring:i}}));return!1===i&&l(e,n),a}function u(e,t){L("WritableStreamDealWithRejection(stream, %o)",t),"writable"!==e._state?d(e):l(e,t)}function l(e,t){L("WritableStreamStartErroring(stream, %o)",t);var r=e._writableStreamController;e._state="erroring",e._storedError=t;var n=e._writer;void 0!==n&&b(n,t),!1===function(e){return void 0===e._inFlightWriteRequest&&void 0===e._inFlightCloseRequest?(L("WritableStreamHasOperationMarkedInFlight() is false"),!1):(L("WritableStreamHasOperationMarkedInFlight() is true"),!0)}(e)&&!0===r._started&&d(e)}function d(e){L("WritableStreamFinishErroring()"),e._state="errored",e._writableStreamController[J]();var t=e._storedError,r=!0,n=!1,i=void 0;try{for(var a,o=e._writeRequests[Symbol.iterator]();!(r=(a=o.next()).done);r=!0)a.value._reject(t)}catch(e){n=!0,i=e}finally{try{!r&&o.return&&o.return()}finally{if(n)throw i}}if(e._writeRequests=[],void 0!==e._pendingAbortRequest){var s=e._pendingAbortRequest;if(e._pendingAbortRequest=void 0,!0===s._wasAlreadyErroring)return s._reject(t),void h(e);e._writableStreamController[X](s._reason).then((function(){s._resolve(),h(e)}),(function(t){s._reject(t),h(e)}))}else h(e)}function p(e){return void 0!==e._closeRequest||void 0!==e._inFlightCloseRequest}function h(e){L("WritableStreamRejectCloseAndClosedPromiseIfNeeded()"),void 0!==e._closeRequest&&(e._closeRequest._reject(e._storedError),e._closeRequest=void 0);var t=e._writer;void 0!==t&&(N(t,e._storedError),t._closedPromise.catch((function(){})))}function f(e,t){var r=e._writer;void 0!==r&&t!==e._backpressure&&(!0===t?function(e){L("defaultWriterReadyPromiseReset()"),e._readyPromise=new Promise((function(t,r){e._readyPromise_resolve=t,e._readyPromise_reject=r})),e._readyPromiseState="pending"}(r):C(r)),e._backpressure=t}function y(e){return!!V(e)&&!!Object.prototype.hasOwnProperty.call(e,"_ownerWritableStream")}function g(e){var t=e._ownerWritableStream,r=t._state;if("closed"===r||"errored"===r)return Promise.reject(new TypeError("The stream (in "+r+" state) is not in the writable state and cannot be closed"));var n=new Promise((function(e,r){var n={_resolve:e,_reject:r};t._closeRequest=n}));return!0===t._backpressure&&"writable"===r&&C(e),function(e){G(e,"close",0),S(e)}(t._writableStreamController),n}function m(e,t){"pending"===e._closedPromiseState?N(e,t):function(e,t){e._closedPromise=Promise.reject(t),e._closedPromiseState="rejected"}(e,t),e._closedPromise.catch((function(){}))}function b(e,t){L("WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, %o)",t),"pending"===e._readyPromiseState?function(e,t){L("defaultWriterReadyPromiseReject(writer, %o)",t),e._readyPromise_reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="rejected"}(e,t):function(e,t){L("defaultWriterReadyPromiseResetToRejected(writer, %o)",t),e._readyPromise=Promise.reject(t),e._readyPromiseState="rejected"}(e,t),e._readyPromise.catch((function(){}))}function v(e){var t=e._ownerWritableStream,r=new TypeError("Writer was released and can no longer be used to monitor the stream's closedness");b(e,r),m(e,r),t._writer=void 0,e._ownerWritableStream=void 0}function _(e,t){var r=e._ownerWritableStream,n=r._writableStreamController,i=function(e,t){try{return e._strategySizeAlgorithm(t)}catch(t){return O(e,t),1}}(n,t);if(r!==e._ownerWritableStream)return Promise.reject(I("write to"));var a=r._state;if("errored"===a)return Promise.reject(r._storedError);if(!0===p(r)||"closed"===a)return Promise.reject(new TypeError("The stream is closing or closed and cannot be written to"));if("erroring"===a)return Promise.reject(r._storedError);var o=function(e){return new Promise((function(t,r){var n={_resolve:t,_reject:r};e._writeRequests.push(n)}))}(r);return function(e,t,r){var n={chunk:t};try{G(e,n,r)}catch(t){return void O(e,t)}var i=e._controlledWritableStream;!1===p(i)&&"writable"===i._state&&f(i,E(e)),S(e)}(n,t,i),o}function w(e,t,r,n,i,a,o,s){t._controlledWritableStream=e,e._writableStreamController=t,t._queue=void 0,t._queueTotalSize=void 0,K(t),t._started=!1,t._strategySizeAlgorithm=s,t._strategyHWM=o,t._writeAlgorithm=n,t._closeAlgorithm=i,t._abortAlgorithm=a;var c=E(t);f(e,c);var l=r();Promise.resolve(l).then((function(){t._started=!0,S(t)}),(function(r){t._started=!0,u(e,r)})).catch(Q)}function T(e){return e._strategyHWM-e._queueTotalSize}function S(e){L("WritableStreamDefaultControllerAdvanceQueueIfNeeded()");var t=e._controlledWritableStream;if(!1!==e._started&&void 0===t._inFlightWriteRequest){var r=t._state;if("closed"!==r&&"errored"!==r)if("erroring"!==r){if(0!==e._queue.length){var n=z(e);"close"===n?function(e){var t=e._controlledWritableStream;(function(e){e._inFlightCloseRequest=e._closeRequest,e._closeRequest=void 0})(t),H(e),e._closeAlgorithm().then((function(){!function(e){e._inFlightCloseRequest._resolve(void 0),e._inFlightCloseRequest=void 0,"erroring"===e._state&&(e._storedError=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._resolve(),e._pendingAbortRequest=void 0)),e._state="closed";var t=e._writer;void 0!==t&&function(e){e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="resolved"}(t)}(t)}),(function(e){!function(e,t){e._inFlightCloseRequest._reject(t),e._inFlightCloseRequest=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._reject(t),e._pendingAbortRequest=void 0),u(e,t)}(t,e)})).catch(Q)}(e):function(e,t){var r=e._controlledWritableStream;(function(e){e._inFlightWriteRequest=e._writeRequests.shift()})(r),e._writeAlgorithm(t).then((function(){!function(e){e._inFlightWriteRequest._resolve(void 0),e._inFlightWriteRequest=void 0}(r);var t=r._state;if(H(e),!1===p(r)&&"writable"===t){var n=E(e);f(r,n)}S(e)}),(function(e){!function(e,t){e._inFlightWriteRequest._reject(t),e._inFlightWriteRequest=void 0,u(e,t)}(r,e)})).catch(Q)}(e,n.chunk)}}else d(t)}}function O(e,t){"writable"===e._controlledWritableStream._state&&x(e,t)}function E(e){return T(e)<=0}function x(e,t){l(e._controlledWritableStream,t)}function A(e){return new TypeError("WritableStream.prototype."+e+" can only be used on a WritableStream")}function R(e){return new TypeError("WritableStreamDefaultWriter.prototype."+e+" can only be used on a WritableStreamDefaultWriter")}function I(e){return new TypeError("Cannot "+e+" a stream using a released writer")}function P(e){e._closedPromise=new Promise((function(t,r){e._closedPromise_resolve=t,e._closedPromise_reject=r,e._closedPromiseState="pending"}))}function N(e,t){e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="rejected"}function D(e,t){L("defaultWriterReadyPromiseInitializeAsRejected(writer, %o)",t),e._readyPromise=Promise.reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="rejected"}function j(e){L("defaultWriterReadyPromiseInitializeAsResolved()"),e._readyPromise=Promise.resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="fulfilled"}function C(e){L("defaultWriterReadyPromiseResolve()"),e._readyPromise_resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="fulfilled"}var M=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.size,o=r.highWaterMark,s=void 0===o?1:o;if(n(this,e),a(this),void 0!==t.type)throw new RangeError("Invalid type is specified");var c=q(i);!function(e,t,r,n){var i=Object.create(Z.prototype),a=F(t,"write",1,[i]),o=F(t,"close",0,[]),s=F(t,"abort",1,[]);w(e,i,(function(){return B(t,"start",[i])}),a,o,s,r,n)}(this,t,s=U(s),c)}return M(e,[{key:"abort",value:function(e){return!1===o(this)?Promise.reject(A("abort")):!0===s(this)?Promise.reject(new TypeError("Cannot abort a stream that already has a writer")):c(this,e)}},{key:"getWriter",value:function(){if(!1===o(this))throw A("getWriter");return i(this)}},{key:"locked",get:function(){if(!1===o(this))throw A("locked");return s(this)}}]),e}();t.exports={AcquireWritableStreamDefaultWriter:i,CreateWritableStream:function(e,t,r,n){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:function(){return 1},s=Object.create(W.prototype);return a(s),w(s,Object.create(Z.prototype),e,t,r,n,i,o),s},IsWritableStream:o,IsWritableStreamLocked:s,WritableStream:W,WritableStreamAbort:c,WritableStreamDefaultControllerErrorIfNeeded:O,WritableStreamDefaultWriterCloseWithErrorPropagation:function(e){var t=e._ownerWritableStream,r=t._state;return!0===p(t)||"closed"===r?Promise.resolve():"errored"===r?Promise.reject(t._storedError):g(e)},WritableStreamDefaultWriterRelease:v,WritableStreamDefaultWriterWrite:_,WritableStreamCloseQueuedOrInFlight:p};var Y=function(){function e(t){if(n(this,e),!1===o(t))throw new TypeError("WritableStreamDefaultWriter can only be constructed with a WritableStream instance");if(!0===s(t))throw new TypeError("This stream has already been locked for exclusive writing by another writer");this._ownerWritableStream=t,t._writer=this;var r=t._state;if("writable"===r)!1===p(t)&&!0===t._backpressure?function(e){L("defaultWriterReadyPromiseInitialize()"),e._readyPromise=new Promise((function(t,r){e._readyPromise_resolve=t,e._readyPromise_reject=r})),e._readyPromiseState="pending"}(this):j(this),P(this);else if("erroring"===r)D(this,t._storedError),this._readyPromise.catch((function(){})),P(this);else if("closed"===r)j(this),function(e){e._closedPromise=Promise.resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="resolved"}(this);else{var i=t._storedError;D(this,i),this._readyPromise.catch((function(){})),function(e,t){e._closedPromise=Promise.reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="rejected"}(this,i),this._closedPromise.catch((function(){}))}}return M(e,[{key:"abort",value:function(e){return!1===y(this)?Promise.reject(R("abort")):void 0===this._ownerWritableStream?Promise.reject(I("abort")):function(e,t){return c(e._ownerWritableStream,t)}(this,e)}},{key:"close",value:function(){if(!1===y(this))return Promise.reject(R("close"));var e=this._ownerWritableStream;return void 0===e?Promise.reject(I("close")):!0===p(e)?Promise.reject(new TypeError("cannot close an already-closing stream")):g(this)}},{key:"releaseLock",value:function(){if(!1===y(this))throw R("releaseLock");void 0!==this._ownerWritableStream&&v(this)}},{key:"write",value:function(e){return!1===y(this)?Promise.reject(R("write")):void 0===this._ownerWritableStream?Promise.reject(I("write to")):_(this,e)}},{key:"closed",get:function(){return!1===y(this)?Promise.reject(R("closed")):this._closedPromise}},{key:"desiredSize",get:function(){if(!1===y(this))throw R("desiredSize");if(void 0===this._ownerWritableStream)throw I("desiredSize");return e=this._ownerWritableStream,"errored"===(t=e._state)||"erroring"===t?null:"closed"===t?0:T(e._writableStreamController);var e,t}},{key:"ready",get:function(){return!1===y(this)?Promise.reject(R("ready")):this._readyPromise}}]),e}(),Z=function(){function e(){throw n(this,e),new TypeError("WritableStreamDefaultController cannot be constructed explicitly")}return M(e,[{key:"error",value:function(e){if(!1===function(e){return!!V(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledWritableStream")}(this))throw new TypeError("WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController");"writable"===this._controlledWritableStream._state&&x(this,e)}},{key:X,value:function(e){return this._abortAlgorithm(e)}},{key:J,value:function(){K(this)}}]),e}()},{"./helpers.js":10,"./queue-with-sizes.js":11,"./utils.js":14,"better-assert":16,debug:18}],16:[function(e,t,r){(function(r){var n=e("assert").AssertionError,i=e("callsite"),a=e("fs");t.exports=r.env.NO_ASSERT?function(){}:function(e){if(!e){var t=i(),r=t[1],o=r.getFileName(),s=r.getLineNumber(),c=(c=a.readFileSync(o,"utf8")).split("\n")[s-1].match(/assert\((.*)\)/)[1];throw new n({message:c,stackStartFunction:t[0].getFunction()})}}}).call(this,e("_process"))},{_process:4,assert:2,callsite:17,fs:3}],17:[function(e,t,r){t.exports=function(){var e=Error.prepareStackTrace;Error.prepareStackTrace=function(e,t){return t};var t=new Error;Error.captureStackTrace(t,arguments.callee);var r=t.stack;return Error.prepareStackTrace=e,r}},{}],18:[function(e,t,r){(function(n){function i(){var e;try{e=r.storage.debug}catch(e){}return!e&&void 0!==n&&"env"in n&&(e=n.env.DEBUG),e}(r=t.exports=e("./debug")).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},r.formatArgs=function(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+r.humanize(this.diff),t){var n="color: "+this.color;e.splice(1,0,n,"color: inherit");var i=0,a=0;e[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(i++,"%c"===e&&(a=i))})),e.splice(a,0,n)}},r.save=function(e){try{null==e?r.storage.removeItem("debug"):r.storage.debug=e}catch(e){}},r.load=i,r.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},r.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),r.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],r.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},r.enable(i())}).call(this,e("_process"))},{"./debug":19,_process:4}],19:[function(e,t,r){function n(e){function t(){if(t.enabled){var e=t,i=+new Date,a=i-(n||i);e.diff=a,e.prev=n,e.curr=i,n=i;for(var o=new Array(arguments.length),s=0;s100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return r*d;case"days":case"day":case"d":return r*l;case"hours":case"hour":case"hrs":case"hr":case"h":return r*u;case"minutes":case"minute":case"mins":case"min":case"m":return r*c;case"seconds":case"second":case"secs":case"sec":case"s":return r*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function i(e){return e>=l?Math.round(e/l)+"d":e>=u?Math.round(e/u)+"h":e>=c?Math.round(e/c)+"m":e>=s?Math.round(e/s)+"s":e+"ms"}function a(e){return o(e,l,"day")||o(e,u,"hour")||o(e,c,"minute")||o(e,s,"second")||e+" ms"}function o(e,t,r){if(!(e0)return n(e);if("number"===r&&!1===isNaN(e))return t.long?a(e):i(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},{}]},{},[1])(1)},94824:(e,t)=>{"use strict";function r(e){return e>=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}Object.defineProperty(t,"__esModule",{value:!0}),t.CHAR="\t\n\r -퟿-�𐀀-􏿿",t.S=" \t\r\n",t.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",t.NAME_CHAR="-"+t.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",t.CHAR_RE=new RegExp("^["+t.CHAR+"]$","u"),t.S_RE=new RegExp("^["+t.S+"]+$","u"),t.NAME_START_CHAR_RE=new RegExp("^["+t.NAME_START_CHAR+"]$","u"),t.NAME_CHAR_RE=new RegExp("^["+t.NAME_CHAR+"]$","u"),t.NAME_RE=new RegExp("^["+t.NAME_START_CHAR+"]["+t.NAME_CHAR+"]*$","u"),t.NMTOKEN_RE=new RegExp("^["+t.NAME_CHAR+"]+$","u"),t.S_LIST=[32,10,13,9],t.isChar=function(e){return e>=32&&e<=55295||10===e||13===e||9===e||e>=57344&&e<=65533||e>=65536&&e<=1114111},t.isS=function(e){return 32===e||10===e||13===e||9===e},t.isNameStartChar=r,t.isNameChar=function(e){return r(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},30718:(e,t)=>{"use strict";function r(e){return e>=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}Object.defineProperty(t,"__esModule",{value:!0}),t.CHAR="-퟿-�𐀀-􏿿",t.RESTRICTED_CHAR="-\b\v\f--„†-Ÿ",t.S=" \t\r\n",t.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",t.NAME_CHAR="-"+t.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",t.CHAR_RE=new RegExp("^["+t.CHAR+"]$","u"),t.RESTRICTED_CHAR_RE=new RegExp("^["+t.RESTRICTED_CHAR+"]$","u"),t.S_RE=new RegExp("^["+t.S+"]+$","u"),t.NAME_START_CHAR_RE=new RegExp("^["+t.NAME_START_CHAR+"]$","u"),t.NAME_CHAR_RE=new RegExp("^["+t.NAME_CHAR+"]$","u"),t.NAME_RE=new RegExp("^["+t.NAME_START_CHAR+"]["+t.NAME_CHAR+"]*$","u"),t.NMTOKEN_RE=new RegExp("^["+t.NAME_CHAR+"]+$","u"),t.S_LIST=[32,10,13,9],t.isChar=function(e){return e>=1&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111},t.isRestrictedChar=function(e){return e>=1&&e<=8||11===e||12===e||e>=14&&e<=31||e>=127&&e<=132||e>=134&&e<=159},t.isCharAndNotRestricted=function(e){return 9===e||10===e||13===e||e>31&&e<127||133===e||e>159&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111},t.isS=function(e){return 32===e||10===e||13===e||9===e},t.isNameStartChar=r,t.isNameChar=function(e){return r(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},26457:(e,t)=>{"use strict";function r(e){return e>=65&&e<=90||95===e||e>=97&&e<=122||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}Object.defineProperty(t,"__esModule",{value:!0}),t.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",t.NC_NAME_CHAR="-"+t.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",t.NC_NAME_START_CHAR_RE=new RegExp("^["+t.NC_NAME_START_CHAR+"]$","u"),t.NC_NAME_CHAR_RE=new RegExp("^["+t.NC_NAME_CHAR+"]$","u"),t.NC_NAME_RE=new RegExp("^["+t.NC_NAME_START_CHAR+"]["+t.NC_NAME_CHAR+"]*$","u"),t.isNCNameStartChar=r,t.isNCNameChar=function(e){return r(e)||45===e||46===e||e>=48&&e<=57||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},20512:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Util=t.toSparqlJs=t.toSparql=t.Factory=t.Algebra=t.translate=void 0;const s=o(r(77947));t.translate=s.default;const c=a(r(1616));t.Algebra=c;const u=o(r(95962));t.Factory=u.default;const l=r(80619);Object.defineProperty(t,"toSparql",{enumerable:!0,get:function(){return l.toSparql}}),Object.defineProperty(t,"toSparqlJs",{enumerable:!0,get:function(){return l.toSparqlJs}});const d=o(r(84238));t.Util=d.default},1616:(e,t)=>{"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),t.expressionTypes=t.types=void 0,(n=t.types||(t.types={})).ALT="alt",n.ASK="ask",n.BGP="bgp",n.CONSTRUCT="construct",n.DESCRIBE="describe",n.DISTINCT="distinct",n.EXPRESSION="expression",n.EXTEND="extend",n.FILTER="filter",n.FROM="from",n.GRAPH="graph",n.GROUP="group",n.INV="inv",n.JOIN="join",n.LEFT_JOIN="leftjoin",n.LINK="link",n.MINUS="minus",n.NOP="nop",n.NPS="nps",n.ONE_OR_MORE_PATH="OneOrMorePath",n.ORDER_BY="orderby",n.PATH="path",n.PATTERN="pattern",n.PROJECT="project",n.REDUCED="reduced",n.SEQ="seq",n.SERVICE="service",n.SLICE="slice",n.UNION="union",n.VALUES="values",n.ZERO_OR_MORE_PATH="ZeroOrMorePath",n.ZERO_OR_ONE_PATH="ZeroOrOnePath",n.COMPOSITE_UPDATE="compositeupdate",n.DELETE_INSERT="deleteinsert",n.LOAD="load",n.CLEAR="clear",n.CREATE="create",n.DROP="drop",n.ADD="add",n.MOVE="move",n.COPY="copy",(r=t.expressionTypes||(t.expressionTypes={})).AGGREGATE="aggregate",r.EXISTENCE="existence",r.NAMED="named",r.OPERATOR="operator",r.TERM="term",r.WILDCARD="wildcard"},95962:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const o=a(r(1616)),s=r(18050),c=r(22112),u=r(55403);t.default=class{constructor(e){this.dataFactory=e||new s.DataFactory,this.stringType=this.createTerm("http://www.w3.org/2001/XMLSchema#string")}createAlt(e,t=!0){return this.flattenMulti({type:o.types.ALT,input:e},t)}createAsk(e){return{type:o.types.ASK,input:e}}createBoundAggregate(e,t,r,n,i){const a=this.createAggregateExpression(t,r,n,i);return a.variable=e,a}createBgp(e){return{type:o.types.BGP,patterns:e}}createConstruct(e,t){return{type:o.types.CONSTRUCT,input:e,template:t}}createDescribe(e,t){return{type:o.types.DESCRIBE,input:e,terms:t}}createDistinct(e){return{type:o.types.DISTINCT,input:e}}createExtend(e,t,r){return{type:o.types.EXTEND,input:e,variable:t,expression:r}}createFrom(e,t,r){return{type:o.types.FROM,input:e,default:t,named:r}}createFilter(e,t){return{type:o.types.FILTER,input:e,expression:t}}createGraph(e,t){return{type:o.types.GRAPH,input:e,name:t}}createGroup(e,t,r){return{type:o.types.GROUP,input:e,variables:t,aggregates:r}}createInv(e){return{type:o.types.INV,path:e}}createJoin(e,t=!0){return this.flattenMulti({type:o.types.JOIN,input:e},t)}createLeftJoin(e,t,r){return r?{type:o.types.LEFT_JOIN,input:[e,t],expression:r}:{type:o.types.LEFT_JOIN,input:[e,t]}}createLink(e){return{type:o.types.LINK,iri:e}}createMinus(e,t){return{type:o.types.MINUS,input:[e,t]}}createNop(){return{type:o.types.NOP}}createNps(e){return{type:o.types.NPS,iris:e}}createOneOrMorePath(e){return{type:o.types.ONE_OR_MORE_PATH,path:e}}createOrderBy(e,t){return{type:o.types.ORDER_BY,input:e,expressions:t}}createPath(e,t,r,n){return n?{type:o.types.PATH,subject:e,predicate:t,object:r,graph:n}:{type:o.types.PATH,subject:e,predicate:t,object:r,graph:this.dataFactory.defaultGraph()}}createPattern(e,t,r,n){const i=this.dataFactory.quad(e,t,r,n);return i.type=o.types.PATTERN,i}createProject(e,t){return{type:o.types.PROJECT,input:e,variables:t}}createReduced(e){return{type:o.types.REDUCED,input:e}}createSeq(e,t=!0){return this.flattenMulti({type:o.types.SEQ,input:e},t)}createService(e,t,r){return{type:o.types.SERVICE,input:e,name:t,silent:Boolean(r)}}createSlice(e,t,r){return t=t||0,void 0!==r?{type:o.types.SLICE,input:e,start:t,length:r}:{type:o.types.SLICE,input:e,start:t}}createUnion(e,t=!0){return this.flattenMulti({type:o.types.UNION,input:e},t)}createValues(e,t){return{type:o.types.VALUES,variables:e,bindings:t}}createZeroOrMorePath(e){return{type:o.types.ZERO_OR_MORE_PATH,path:e}}createZeroOrOnePath(e){return{type:o.types.ZERO_OR_ONE_PATH,path:e}}createAggregateExpression(e,t,r,n){return n?{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,separator:n,distinct:r}:{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,distinct:r}}createExistenceExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.EXISTENCE,not:e,input:t}}createNamedExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.NAMED,name:e,args:t}}createOperatorExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.OPERATOR,operator:e,args:t}}createTermExpression(e){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.TERM,term:e}}createWildcardExpression(){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.WILDCARD,wildcard:new u.Wildcard}}createTerm(e){return"$"===e[0]&&(e=e.replace("$","?")),(0,c.stringToTerm)(e,this.dataFactory)}createCompositeUpdate(e){return{type:o.types.COMPOSITE_UPDATE,updates:e}}createDeleteInsert(e,t,r){const n={type:o.types.DELETE_INSERT};return e&&(n.delete=e),t&&(n.insert=t),r&&(n.where=r),n}createLoad(e,t,r){const n={type:o.types.LOAD,source:e};return t&&(n.destination=t),this.addSilent(n,Boolean(r))}createClear(e,t){return this.addSilent({type:o.types.CLEAR,source:e},Boolean(t))}createCreate(e,t){return this.addSilent({type:o.types.CREATE,source:e},Boolean(t))}createDrop(e,t){return this.addSilent({type:o.types.DROP,source:e},Boolean(t))}createAdd(e,t,r){return this.addSilent({type:o.types.ADD,source:e,destination:t},Boolean(r))}createMove(e,t,r){return this.addSilent({type:o.types.MOVE,source:e,destination:t},Boolean(r))}createCopy(e,t,r){return this.addSilent({type:o.types.COPY,source:e,destination:t},Boolean(r))}addSilent(e,t){return t&&(e.silent=t),e}flattenMulti(e,t){if(!t)return e;const r=e.type,n=e.input;let i=[];for(const e of n)e.type===r?i.push(...e.input):i.push(e);return e.input=i,e}}},80619:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.toSparqlJs=t.toSparql=void 0;const s=r(91032),c=r(22112),u=r(55403),l=a(r(1616)),d=o(r(95962)),p=o(r(84238)),h=l.types,f=l.expressionTypes;let y;const g=new d.default;function m(e){b();let t=v(e=function(e){return D(e,[])}(e));return"group"===t.type?t.patterns[0]:t}function b(){y={project:!1,extend:[],group:[],aggregates:[],order:[]}}function v(e){switch(e.type!==h.EXTEND&&e.type!==h.ORDER_BY&&e.type!==h.GRAPH&&(y.project=!1),e.type){case h.EXPRESSION:return _(e);case h.ASK:return A(e,h.ASK);case h.BGP:return function(e){let t=e.patterns.map(E);return 0===t.length?null:{type:"bgp",triples:t}}(e);case h.CONSTRUCT:return function(e){return{type:"query",prefixes:{},queryType:"CONSTRUCT",template:e.template.map(E),where:p.default.flatten([v(e.input)])}}(e);case h.DESCRIBE:return A(e,h.DESCRIBE);case h.DISTINCT:return function(e){let t=v(e.input);return t.patterns[0].distinct=!0,t}(e);case h.EXTEND:return function(e){return y.project?(y.extend.push(e),v(e.input)):p.default.flatten([v(e.input),{type:"bind",variable:e.variable,expression:_(e.expression)}])}(e);case h.FROM:return function(e){const t=v(e.input);let r=t;return"group"===t.type&&(r=t.patterns[0]),r.from={default:e.default,named:e.named},t}(e);case h.FILTER:return function(e){return{type:"group",patterns:p.default.flatten([v(e.input),{type:"filter",expression:_(e.expression)}])}}(e);case h.GRAPH:return function(e){return{type:"graph",patterns:p.default.flatten([v(e.input)]),name:e.name}}(e);case h.GROUP:return function(e){const t=v(e.input),r=e.aggregates.map(O);return y.aggregates.push(...r),y.group.push(...e.variables),t}(e);case h.JOIN:return function(e){return p.default.flatten(e.input.map(v)).reduce(((e,t)=>("bgp"!==t.type||0==e.length||"bgp"!==e[e.length-1].type?e.push(t):e[e.length-1].triples.push(...t.triples),e)),[])}(e);case h.LEFT_JOIN:return function(e){const t={type:"optional",patterns:[v(e.input[1])]};return e.expression&&t.patterns.push({type:"filter",expression:_(e.expression)}),t.patterns=p.default.flatten(t.patterns),p.default.flatten([v(e.input[0]),t])}(e);case h.MINUS:return function(e){let t=v(e.input[1]);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),p.default.flatten([v(e.input[0]),{type:"minus",patterns:t}])}(e);case h.NOP:return{};case h.ORDER_BY:return function(e){return y.order.push(...e.expressions),v(e.input)}(e);case h.PATH:return function(e){return{type:"bgp",triples:[{subject:e.subject,predicate:w(e.predicate),object:e.object}]}}(e);case h.PATTERN:return E(e);case h.PROJECT:return A(e,h.PROJECT);case h.REDUCED:return function(e){let t=v(e.input);return t.patterns[0].reduced=!0,t}(e);case h.SERVICE:return function(e){let t=v(e.input);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),{type:"service",name:e.name,silent:e.silent,patterns:t}}(e);case h.SLICE:return function(e){let t=v(e.input),r=t;return t.type&&"group"===t.type&&(r=t.patterns[0]),0!==e.start&&(r.offset=e.start),void 0!==e.length&&(r.limit=e.length),t}(e);case h.UNION:return function(e){return{type:"union",patterns:e.input.map(v).map(S)}}(e);case h.VALUES:return function(e){return{type:"values",values:e.bindings.map((t=>{let r={};for(let n of e.variables){let e=`?${n.value}`;t[e]?r[e]=t[e]:r[e]=void 0}return r}))}}(e);case h.COMPOSITE_UPDATE:return function(e){return{prefixes:{},type:"update",updates:e.updates.map((e=>v(e).updates[0]))}}(e);case h.DELETE_INSERT:return function(e){var t;let r,n=e.where;if(n&&n.type===h.FROM){let e=n;n=e.input,r={default:e.default,named:e.named}}const i=[{updateType:"insertdelete",delete:N(e.delete||[]),insert:N(e.insert||[])}];if(r&&(i[0].using=r),!n||n.type===h.BGP&&0===n.patterns.length)i[0].where=[];else{const e=[];let r=v(D(n,e));if("group"===r.type?i[0].where=r.patterns:i[0].where=[r],e.length>0){if(1!==e.length)throw new Error("This is unexpected and might indicate an error in graph handling for updates.");""!==(null===(t=e[0])||void 0===t?void 0:t.value)&&(i[0].where=[{type:"graph",patterns:i[0].where,name:e[0]}])}}return e.delete||e.where?e.insert||e.where?!e.insert&&e.where&&"bgp"===e.where.type&&(0,s.isomorphic)(e.delete,e.where.patterns)&&(delete i[0].where,i[0].updateType="deletewhere"):(delete i[0].insert,delete i[0].where,e.delete.some((e=>"Variable"===e.subject.termType||"Variable"===e.predicate.termType||"Variable"===e.object.termType))?i[0].updateType="deletewhere":i[0].updateType="delete"):(i[0].updateType="insert",delete i[0].delete,delete i[0].where),{prefixes:{},type:"update",updates:i}}(e);case h.LOAD:return function(e){const t=[{type:"load",silent:Boolean(e.silent),source:e.source}];return e.destination&&(t[0].destination=e.destination),{prefixes:{},type:"update",updates:t}}(e);case h.CLEAR:return function(e){return I(e,"clear")}(e);case h.CREATE:return function(e){return I(e,"create")}(e);case h.DROP:return function(e){return I(e,"drop")}(e);case h.ADD:return function(e){return P(e,"add")}(e);case h.MOVE:return function(e){return P(e,"move")}(e);case h.COPY:return function(e){return P(e,"copy")}(e)}throw new Error(`Unknown Operation type ${e.type}`)}function _(e){switch(e.expressionType){case f.AGGREGATE:return function(e){const t={expression:_(e.expression),type:"aggregate",aggregation:e.aggregator,distinct:e.distinct};return e.separator&&(t.separator=e.separator),t}(e);case f.EXISTENCE:return function(e){return{type:"operation",operator:e.not?"notexists":"exists",args:[{type:"group",patterns:p.default.flatten([v(e.input)])}]}}(e);case f.NAMED:return function(e){return{type:"functionCall",function:e.name,args:e.args.map(_)}}(e);case f.OPERATOR:return function(e){if("desc"===e.operator){return{expression:_(e.args[0]),descending:!0}}const t={type:"operation",operator:e.operator,args:e.args.map(_)};return"in"!==t.operator&&"notin"!==t.operator||(t.args=[t.args[0]].concat([t.args.slice(1)])),t}(e);case f.TERM:return function(e){return e.term}(e);case f.WILDCARD:return function(e){return e.wildcard}(e)}throw new Error(`Unknown Expression Operation type ${e.expressionType}`)}function w(e){switch(e.type){case h.ALT:return function(e){const t=e.input.map(w);return t.every((e=>"pathType"in e&&"!"===e.pathType))?{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:p.default.flatten(t.map((e=>e.items)))}]}:{type:"path",pathType:"|",items:t}}(e);case h.INV:return function(e){if(e.path.type===h.NPS){const t=e.path.iris.map((e=>({type:"path",pathType:"^",items:[e]})));return t.length<=1?{type:"path",pathType:"!",items:t}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:t}]}}return{type:"path",pathType:"^",items:[w(e.path)]}}(e);case h.LINK:return function(e){return e.iri}(e);case h.NPS:return function(e){return e.iris.length<=1?{type:"path",pathType:"!",items:e.iris}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:e.iris}]}}(e);case h.ONE_OR_MORE_PATH:return function(e){return{type:"path",pathType:"+",items:[w(e.path)]}}(e);case h.SEQ:return function(e){return{type:"path",pathType:"/",items:e.input.map(w)}}(e);case h.ZERO_OR_MORE_PATH:return function(e){return{type:"path",pathType:"*",items:[w(e.path)]}}(e);case h.ZERO_OR_ONE_PATH:return function(e){return{type:"path",pathType:"?",items:[w(e.path)]}}(e)}throw new Error(`Unknown Path type ${e.type}`)}function T(e){return(0,c.termToString)(e)}function S(e){return Array.isArray(e)?1===e.length?e[0]:{type:"group",patterns:e}:e}function O(e){return e}function E(e){return{subject:e.subject,predicate:e.predicate,object:e.object}}function x(e,t){let r=p.default.isSimpleTerm(e)?T(e):e;if("string"==typeof r){if(t[r])return t[r]}else if(Array.isArray(e))e=e.map((e=>x(e,t)));else for(let r of Object.keys(e))e[r]=x(e[r],t);return e}function A(e,t){const r={type:"query",prefixes:{}},n=r;let i;t===h.PROJECT?(r.queryType="SELECT",i=e.variables):t===h.ASK?r.queryType="ASK":t===h.DESCRIBE&&(r.queryType="DESCRIBE",i=e.terms);const a=y.extend,o=y.group,s=y.aggregates,l=y.order;b(),y.project=!0;let d=p.default.flatten([v(e.input)]);1===d.length&&"group"===d[0].type&&(d=d[0].patterns),r.where=d;let f={};for(let e of y.aggregates)f[T(e.variable)]=_(e);let g={};for(let e=y.extend.length-1;e>=0;--e){let t=y.extend[e];g[T(t.variable)]=x(_(t.expression),f)}y.group.length>0&&(n.group=y.group.map((e=>{let t=T(e);if(g[t]){let r=g[t];return delete g[t],{variable:e,expression:r}}return{expression:e}}))),y.order.length>0&&(n.order=y.order.map(v).map((e=>e.descending?e:{expression:e}))),i&&(n.variables=i.map((e=>{let t=T(e);if(g[t]){let r=g[t];return delete g[t],{variable:e,expression:r}}return e})),0===n.variables.length&&(n.variables=[new u.Wildcard]));const m=Object.entries(g);if(m.length>0){n.where=n.where||[];for(const[e,t]of m)n.where.push({type:"bind",variable:(0,c.stringToTerm)(e),expression:t})}if(r.where.length>0&&"filter"===r.where[r.where.length-1].type){const e=r.where[r.where.length-1];R(e,Object.keys(f))&&(n.having=p.default.flatten([x(e.expression,f)]),r.where.splice(-1))}return y.extend=a,y.group=o,y.aggregates=s,y.order=l,{type:"group",patterns:[n]}}function R(e,t){return p.default.isSimpleTerm(e)?t.indexOf(T(e))>=0:Array.isArray(e)?e.some((e=>R(e,t))):e===Object(e)?Object.keys(e).some((r=>R(e[r],t))):t.indexOf(e)>=0}function I(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return"DEFAULT"===e.source?r[0].graph={default:!0}:"NAMED"===e.source?r[0].graph={named:!0}:"ALL"===e.source?r[0].graph={all:!0}:r[0].graph={type:"graph",name:e.source},{prefixes:{},type:"update",updates:r}}function P(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return r[0].source="DEFAULT"===e.source?{type:"graph",default:!0}:{type:"graph",name:e.source},r[0].destination="DEFAULT"===e.destination?{type:"graph",default:!0}:{type:"graph",name:e.destination},{prefixes:{},type:"update",updates:r}}function N(e){if(!e)return[];const t={};return e.forEach((e=>{const r=e.graph.value;t[r]||(t[r]=[]),t[r].push(e)})),Object.keys(t).map((e=>""===e?{type:"bgp",triples:t[e].map(E)}:{type:"graph",triples:t[e].map(E),name:t[e][0].graph}))}function D(e,t){if(Array.isArray(e))return e.map((e=>D(e,t)));if(!e.type)return e;if(e.type===h.DELETE_INSERT)return e;if((e.type===h.PATTERN||e.type===h.PATH)&&e.graph)return t.push(e.graph),""!==e.graph.name?e.type===h.PATTERN?g.createPattern(e.subject,e.predicate,e.object):g.createPath(e.subject,e.predicate,e.object):e;const r={},n={},i={};for(let t of Object.keys(e)){const a=[];if(r[t]=D(e[t],a),a.length>0){n[t]=a;for(const e of a)i[e.value]=e}}const a=Object.keys(i);if(a.length>0)if(1!==a.length||[h.PROJECT,h.SERVICE].includes(e.type)){if(e.type===h.BGP)return function(e,t){var r;const n={};for(let i=0;i""===n[e][0].value?t:g.createGraph(t,n[e][r]))):""!==n[e][0].value&&(r[e]=g.createGraph(t,n[e][0]))}}else t.push(i[a[0]]);return r}t.toSparql=function(e,t={}){return new u.Generator(t).stringify(m(e))},t.toSparqlJs=m},77947:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(53933),c=r(22112),u=a(r(1616)),l=o(r(95962)),d=o(r(84238)),p=r(55403).Parser,h=u.types;let f,y=new Set,g=0,m=!1;function b(e,t,r){if(y=new Set,g=0,m=Boolean(t),!e.type)return f.createNop();if("query"!==e.type&&"update"!==e.type)throw new Error("Translate only works on complete query or update objects.");let n;var i;return w(e),"query"===e.type?(n=S({type:"group",patterns:e.where||[]}),n=function(e,t){const r=e,n=[],i={};if(r.variables=r.variables&&r.variables.map((e=>C(e,i))),r.having=r.having&&r.having.map((e=>C(e,i))),r.order=r.order&&r.order.map((e=>C(e,i))),r.group||Object.keys(i).length>0){const e=Object.keys(i).map((e=>function(e,t){if("aggregate"!==e.type||!e.aggregation)throw new Error(`Unexpected input: ${JSON.stringify(e)}`);const r=O(e);return r.variable=t,r}(i[e],f.createTerm(e)))),n=[];if(r.group)for(const e of r.group)if(d.default.isSimpleTerm(e.expression))n.push(e.expression);else{const r="variable"in e?e.variable:A();t=f.createExtend(t,r,O(e.expression)),n.push(r)}t=f.createGroup(t,n,e)}if(r.having)for(let e of r.having)t=f.createFilter(t,O(e));e.values&&(t=f.createJoin([t,j(e)]));let a=[];if("SELECT"===e.queryType||"DESCRIBE"===e.queryType)if(e.variables.some((e=>e&&d.default.isWildcard(e))))a=Object.values(T(e)).sort(((e,t)=>e.value.localeCompare(t.value)));else for(let t of e.variables)_(t)||!("variable"in t)?a.push(t):t.variable&&(a.push(t.variable),n.push(t));for(let e of n)t=f.createExtend(t,e.variable,O(e.expression));return r.order&&(t=f.createOrderBy(t,r.order.map((e=>{let t=O(e.expression);return e.descending&&(t=f.createOperatorExpression("desc",[t])),t})))),"SELECT"===e.queryType&&(t=f.createProject(t,a)),r.distinct&&(t=f.createDistinct(t)),r.reduced&&(t=f.createReduced(t)),"CONSTRUCT"===e.queryType?t=f.createConstruct(t,(e.template||[]).map(R)):"ASK"===e.queryType?t=f.createAsk(t):"DESCRIBE"===e.queryType&&(t=f.createDescribe(t,a)),(r.offset||r.limit)&&(t=f.createSlice(t,r.offset||0,r.limit)),r.from&&(t=f.createFrom(t,r.from.default,r.from.named)),t}(e,n)):"update"===e.type&&(n=1===(i=e).updates.length?M(i.updates[0]):f.createCompositeUpdate(i.updates.map(M))),r&&(n=k(n)),n}function v(e){return Boolean(null==e?void 0:e.termType)}function _(e){return"Variable"===(null==e?void 0:e.termType)}function w(e){if(v(e))_(e)&&y.add(`?${e.value}`);else if(Array.isArray(e))for(const t of e)w(t);else if(e&&"object"==typeof e)for(let t of Object.keys(e))t.startsWith("?")?y.add(t):t.startsWith("$")&&y.add(`?${t.slice(1)}`),w(e[t])}function T(e){let t={};if((r=e).subject&&r.predicate&&r.object){const r=[T(e.subject),T(e.predicate),T(e.object),e.graph?T(e.graph):{}];Object.assign(t,...r)}else if(v(e))_(e)&&(t[e.value]=e);else if("bgp"===e.type){const r=e.triples;Object.assign(t,...r.map(T))}else if("path"===e.type)Object.assign(t,...e.items.map(T));else if("group"===e.type||"union"===e.type||"optional"===e.type)Object.assign(t,...e.patterns.map(T));else if("service"===e.type||"graph"===e.type)Object.assign(t,T(e.name)),Object.assign(t,...e.patterns.map(T));else if("bind"===e.type)Object.assign(t,T(e.variable));else if("values"===e.type){if(e.values.length>0){const r=Object.keys(e.values[0]).map((e=>f.createTerm(e)));Object.assign(t,...r.map(T))}}else if("query"===e.type&&("SELECT"===e.queryType||"DESCRIBE"===e.queryType)){e.where&&e.variables.some(d.default.isWildcard)&&Object.assign(t,...e.where.map(T));for(const r of e.variables)_(r)?Object.assign(t,T(r)):r.variable&&Object.assign(t,T(r.variable));if("SELECT"===e.queryType){if(e.group)for(const r of e.group)r.variable&&Object.assign(t,T(r.variable));if(e.values){const r={type:"values",values:e.values};Object.assign(t,T(r))}}}var r;return t}function S(e){if("bgp"===e.type)return function(e){let t=[],r=[];for(let i of e.triples)if("pathType"in i.predicate){let e=x((n=i).subject,E(n.predicate),n.object);for(let n of e)n.type===h.PATH?(t.length>0&&r.push(f.createBgp(t)),t=[],r.push(n)):t.push(n)}else t.push(R(i));var n;return t.length>0&&r.push(f.createBgp(t)),1===r.length?r[0]:f.createJoin(r)}(e);if("union"===e.type)return f.createUnion(e.patterns.map((e=>("group"!==e.type&&(e={type:"group",patterns:[e]}),S(e)))));if("graph"===e.type){let t=S({type:"group",patterns:e.patterns});return t=m?P(t,e.name):f.createGraph(t,e.name),t}if("values"===e.type)return j(e);if("query"===e.type)return b(e,m,!1);if("group"===e.type){let t=[],r=[];for(let n of e.patterns)("filter"===n.type?t:r).push(n);let n=r.reduce(N,f.createBgp([])),i=t.map((e=>O(e.expression)));return i.length>0&&(n=f.createFilter(n,i.reduce(((e,t)=>f.createOperatorExpression("&&",[e,t]))))),n}throw new Error(`Unexpected type: ${e.type}`)}function O(e){if(d.default.isSimpleTerm(e))return f.createTermExpression(e);if(d.default.isQuad(e))return d.default.hasQuadVariables(e)?f.createOperatorExpression("triple",[O(e.subject),O(e.predicate),O(e.object)]):f.createTermExpression(e);if(d.default.isWildcard(e))return f.createWildcardExpression();if("aggregation"in e)return f.createAggregateExpression(e.aggregation,O(e.expression),Boolean(e.distinct),e.separator);if("function"in e)return f.createNamedExpression(e.function,e.args.map(O));if("operator"in e)return"exists"===e.operator||"notexists"===e.operator?f.createExistenceExpression("notexists"===e.operator,S(e.args[0])):("in"!==e.operator&&"notin"!==e.operator||(e.args=[e.args[0]].concat(e.args[1])),f.createOperatorExpression(e.operator,e.args.map(O)));throw new Error(`Unknown expression: ${JSON.stringify(e)}`)}function E(e){if(d.default.isSimpleTerm(e)){if("NamedNode"===e.termType)return f.createLink(e);throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(e)}`)}if("^"===e.pathType)return f.createInv(E(e.items[0]));if("!"===e.pathType){let t,r=[],n=[];t="pathType"in e.items[0]&&"|"===e.items[0].pathType?e.items[0].items:e.items;for(let e of t)if(d.default.isSimpleTerm(e))r.push(e);else{if("^"!==e.pathType)throw new Error(`Unexpected item: ${JSON.stringify(e)}`);n.push(e.items[0])}let i=f.createNps(r),a=f.createInv(f.createNps(n));return 0===n.length?i:0===r.length?a:f.createAlt([i,a])}if("/"===e.pathType)return f.createSeq(e.items.map(E));if("|"===e.pathType)return f.createAlt(e.items.map(E));if("*"===e.pathType)return f.createZeroOrMorePath(E(e.items[0]));if("+"===e.pathType)return f.createOneOrMorePath(E(e.items[0]));if("?"===e.pathType)return f.createZeroOrOnePath(E(e.items[0]));throw new Error(`Unable to translate path expression ${JSON.stringify(e)}`)}function x(e,t,r){if(t.type===h.LINK)return[f.createPattern(e,t.iri,r)];if(t.type===h.INV)return x(r,t.path,e);if(t.type===h.SEQ){let n=e;return d.default.flatten(t.input.map(((e,i)=>{const a=i===t.input.length-1?r:A(),o=x(n,e,a);return"Variable"===a.termType&&(n=a),o})))}return[f.createPath(e,t,r)]}function A(){let e="?var"+g++;return y.has(e)?A():(y.add(e),f.createTerm(e))}function R(e){if("pathType"in e.predicate)throw new Error("Trying to translate property path to quad.");return f.createPattern(e.subject,e.predicate,e.object,e.graph)}t.default=function(e,t){let r;if(t=t||{},f=new l.default(t.dataFactory),"string"==typeof e){let n=new p(t);n._resetBlanks(),r=n.parse(e)}else r=e;return b(r,t.quads,t.blankToVariable)};let I=Object.values(h);function P(e,t,r){if(e.type===h.GRAPH){if(r)throw new Error("Recursing through nested GRAPH statements with a replacement is impossible.");e=P(e.input,e.name)}else if(e.type===h.SERVICE);else if(e.type===h.BGP)e.patterns=e.patterns.map((e=>(r&&(e.subject.equals(t)&&(e.subject=r),e.predicate.equals(t)&&(e.predicate=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t),e)));else if(e.type===h.PATH)r&&(e.subject.equals(t)&&(e.subject=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t);else if(e.type!==h.PROJECT||r)if(e.type!==h.EXTEND||r)for(let n of Object.keys(e))Array.isArray(e[n])?e[n]=e[n].map((e=>P(e,t,r))):I.indexOf(e[n].type)>=0?e[n]=P(e[n],t,r):r&&_(e[n])&&e[n].equals(t)&&(e[n]=r);else e.variable.equals(t)&&(r=A()),e.input=P(e.input,t,r);else e.variables.some((e=>e.equals(t)))||(r=A()),e.input=P(e.input,t,r);return e}function N(e,t){if("optional"===t.type){const r=S({type:"group",patterns:t.patterns});e=r.type===h.FILTER?f.createLeftJoin(e,r.input,r.expression):f.createLeftJoin(e,r)}else if("minus"===t.type){const r=S({type:"group",patterns:t.patterns});e=f.createMinus(e,r)}else if("bind"===t.type)e=f.createExtend(e,t.variable,O(t.expression));else if("service"===t.type){const r={type:"group",patterns:t.patterns};e=D(e,f.createService(S(r),t.name,t.silent))}else e=D(e,S(t));return e}function D(e,t){return e.type===h.BGP&&t.type===h.BGP?e=f.createBgp([...e.patterns,...t.patterns]):e.type===h.BGP&&0===e.patterns.length?e=t:t.type===h.BGP&&0===t.patterns.length||(e=f.createJoin([e,t])),e}function j(e){let t=(0===e.values.length?[]:Object.keys(e.values[0])).map(f.createTerm.bind(f)),r=e.values.map((e=>{let t=Object.keys(e);t=t.filter((t=>void 0!==e[t]));let r={};for(let n of t)r[n]=e[n];return r}));return f.createValues(t,r)}function C(e,t){if("type"in e&&"aggregate"===e.type){let r,n=!1;for(let i of Object.keys(t))if(s(t[i],e)){r=f.createTerm(i),n=!0;break}return n||(r=A(),t[(0,c.termToString)(r)]=e),r}return"expression"in e&&e.expression?{...e,expression:C(e.expression,t)}:"args"in e&&e.args?{...e,args:e.args.map((e=>C(e,t)))}:e}function M(e){if("type"in e){if("load"===e.type)return function(e){return f.createLoad(e.source,e.destination,e.silent)}(e);if("clear"===e.type||"create"===e.type||"drop"===e.type)return function(e){let t;switch(t=d.default.isSimpleTerm(e.graph)?e.graph:e.graph.all?"ALL":e.graph.default?"DEFAULT":e.graph.named?"NAMED":e.graph.name,e.type){case"clear":return f.createClear(t,e.silent);case"create":return f.createCreate(t,e.silent);case"drop":return f.createDrop(t,e.silent)}}(e);if("add"===e.type||"copy"===e.type||"move"===e.type)return function(e){const t=e.source.default?"DEFAULT":e.source.name,r=e.destination.default?"DEFAULT":e.destination.name;switch(e.type){case"copy":return f.createCopy(t,r,e.silent);case"move":return f.createMove(t,r,e.silent);case"add":return f.createAdd(t,r,e.silent)}}(e)}else if("insertdelete"===e.updateType||"deletewhere"===e.updateType||"delete"===e.updateType||"insert"===e.updateType)return function(e){if(!m)throw new Error("INSERT/DELETE operations are only supported with quads option enabled");let t,r=[],n=[];if(e.delete&&(r=d.default.flatten(e.delete.map((t=>L(t,e.graph))))),e.insert&&(n=d.default.flatten(e.insert.map((t=>L(t,e.graph))))),e.where&&e.where.length>0){t=S({type:"group",patterns:e.where});const r=e.using;r?t=f.createFrom(t,r.default,r.named):e.graph&&(t=P(t,e.graph))}else"deletewhere"===e.updateType&&r.length>0&&(t=f.createBgp(r));return f.createDeleteInsert(r.length>0?r:void 0,n.length>0?n:void 0,t)}(e);throw new Error(`Unknown update type ${JSON.stringify(e)}`)}function L(e,t){let r=t;"graph"===e.type&&(r=e.name);let n=e.triples;return r&&(n=n.map((e=>Object.assign(e,{graph:r})))),n.map(R)}function k(e){const t={},r=Array.from(y).reduce(((e,t)=>(e[t]=!0,e)),{});return d.default.mapOperation(e,{[u.types.DELETE_INSERT]:e=>({result:f.createDeleteInsert(e.delete,e.insert,e.where&&k(e.where)),recurse:!1}),[u.types.PATH]:(e,t)=>({result:t.createPath(n(e.subject),e.predicate,n(e.object),n(e.graph)),recurse:!1}),[u.types.PATTERN]:(e,t)=>({result:t.createPattern(n(e.subject),n(e.predicate),n(e.object),n(e.graph)),recurse:!1}),[u.types.CONSTRUCT]:e=>({result:f.createConstruct(k(e.input),e.template),recurse:!1})});function n(e){if("BlankNode"===e.termType){let n=t[e.value];return n||(n=d.default.createUniqueVariable(e.value,r,f.dataFactory),r[n.value]=!0,t[e.value]=n),n}return e}}},84238:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(1616),a=n(r(95962)),o=r(13252);class s{static flatten(e){return Array.prototype.concat(...e).filter((e=>e))}static objectify(e){if(e.termType){if("Quad"===e.termType)return{type:"pattern",termType:"Quad",subject:s.objectify(e.subject),predicate:s.objectify(e.predicate),object:s.objectify(e.object),graph:s.objectify(e.graph)};{let t={termType:e.termType,value:e.value};return e.language&&(t.language=e.language),e.datatype&&(t.datatype=s.objectify(e.datatype)),t}}if(Array.isArray(e))return e.map((e=>s.objectify(e)));if(e===Object(e)){let t={};for(let r of Object.keys(e))t[r]=s.objectify(e[r]);return t}return e}static inScopeVariables(e){const t=[];function r(e){t.find((t=>e.value===t.value))||t.push(e)}function n(e){"Variable"===e.subject.termType&&r(e.subject),"Variable"===e.predicate.termType&&r(e.predicate),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.predicate.termType&&n(e.predicate),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph)}return s.recurseOperation(e,{[i.types.EXPRESSION]:e=>(e.expressionType===i.expressionTypes.AGGREGATE&&e.variable&&r(e.variable),!0),[i.types.EXTEND]:e=>(r(e.variable),!0),[i.types.GRAPH]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.GROUP]:e=>(e.variables.forEach(r),!0),[i.types.PATH]:e=>("Variable"===e.subject.termType&&r(e.subject),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph),!0),[i.types.PATTERN]:e=>(n(e),!0),[i.types.PROJECT]:e=>(e.variables.forEach(r),!1),[i.types.SERVICE]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.VALUES]:e=>(e.variables.forEach(r),!0)}),t}static recurseOperation(e,t){let r=e,n=!0;const a=t[e.type];if(a&&(n=a(e)),!n)return;let o=e=>s.recurseOperation(e,t);switch(r.type){case i.types.ALT:r.input.map(o);break;case i.types.ASK:o(r.input);break;case i.types.BGP:r.patterns.forEach(o);break;case i.types.CONSTRUCT:o(r.input),r.template.map(o);break;case i.types.DESCRIBE:case i.types.DISTINCT:o(r.input);break;case i.types.EXPRESSION:r.expressionType===i.expressionTypes.EXISTENCE&&o(r.input);break;case i.types.EXTEND:case i.types.FILTER:o(r.input),o(r.expression);break;case i.types.FROM:case i.types.GRAPH:o(r.input);break;case i.types.GROUP:o(r.input),r.aggregates.forEach(o);break;case i.types.INV:o(r.path);break;case i.types.JOIN:r.input.map(o);break;case i.types.LEFT_JOIN:r.input.map(o),r.expression&&o(r.expression);break;case i.types.LINK:break;case i.types.MINUS:r.input.map(o);break;case i.types.NOP:case i.types.NPS:break;case i.types.ONE_OR_MORE_PATH:o(r.path);break;case i.types.ORDER_BY:o(r.input),r.expressions.forEach(o);break;case i.types.PATH:o(r.predicate);break;case i.types.PATTERN:break;case i.types.PROJECT:case i.types.REDUCED:o(r.input);break;case i.types.SEQ:r.input.map(o);break;case i.types.SERVICE:case i.types.SLICE:o(r.input);break;case i.types.UNION:r.input.map(o);break;case i.types.VALUES:break;case i.types.ZERO_OR_MORE_PATH:case i.types.ZERO_OR_ONE_PATH:o(r.path);break;case i.types.COMPOSITE_UPDATE:r.updates.forEach((e=>o(e)));break;case i.types.DELETE_INSERT:r.delete&&r.delete.forEach((e=>o(e))),r.insert&&r.insert.forEach((e=>o(e))),r.where&&o(r.where);break;case i.types.LOAD:case i.types.CLEAR:case i.types.CREATE:case i.types.DROP:case i.types.ADD:case i.types.MOVE:case i.types.COPY:break;default:throw new Error(`Unknown Operation type ${r.type}`)}}static mapOperation(e,t,r){let n=e,o=!0,c=!0;r=r||new a.default;const u=t[e.type];if(u){const t=u(e,r);n=t.result,o=t.recurse,c=!1!==t.copyMetadata}let l;if(c&&(n.metadata||e.metadata)&&(l={...n.metadata,...e.metadata}),!o)return l&&(n.metadata=l),n;let d=e=>s.mapOperation(e,t,r);switch(n.type){case i.types.ALT:n=r.createAlt(n.input.map(d));break;case i.types.ASK:n=r.createAsk(d(n.input));break;case i.types.BGP:n=r.createBgp(n.patterns.map(d));break;case i.types.CONSTRUCT:n=r.createConstruct(d(n.input),n.template.map(d));break;case i.types.DESCRIBE:n=r.createDescribe(d(n.input),n.terms);break;case i.types.DISTINCT:n=r.createDistinct(d(n.input));break;case i.types.EXPRESSION:n=s.mapExpression(n,t,r);break;case i.types.EXTEND:n=r.createExtend(d(n.input),n.variable,d(n.expression));break;case i.types.FILTER:n=r.createFilter(d(n.input),d(n.expression));break;case i.types.FROM:n=r.createFrom(d(n.input),[...n.default],[...n.named]);break;case i.types.GRAPH:n=r.createGraph(d(n.input),n.name);break;case i.types.GROUP:n=r.createGroup(d(n.input),[].concat(n.variables),n.aggregates.map(d));break;case i.types.INV:n=r.createInv(d(n.path));break;case i.types.JOIN:n=r.createJoin(n.input.map(d));break;case i.types.LEFT_JOIN:n=r.createLeftJoin(d(n.input[0]),d(n.input[1]),n.expression?d(n.expression):void 0);break;case i.types.LINK:n=r.createLink(n.iri);break;case i.types.MINUS:n=r.createMinus(d(n.input[0]),d(n.input[1]));break;case i.types.NOP:n=r.createNop();break;case i.types.NPS:n=r.createNps([].concat(n.iris));break;case i.types.ONE_OR_MORE_PATH:n=r.createOneOrMorePath(d(n.path));break;case i.types.ORDER_BY:n=r.createOrderBy(d(n.input),n.expressions.map(d));break;case i.types.PATH:n=r.createPath(n.subject,d(n.predicate),n.object,n.graph);break;case i.types.PATTERN:n=r.createPattern(n.subject,n.predicate,n.object,n.graph);break;case i.types.PROJECT:n=r.createProject(d(n.input),[...n.variables]);break;case i.types.REDUCED:n=r.createReduced(d(n.input));break;case i.types.SEQ:n=r.createSeq(n.input.map(d));break;case i.types.SERVICE:n=r.createService(d(n.input),n.name,n.silent);break;case i.types.SLICE:n=r.createSlice(d(n.input),n.start,n.length);break;case i.types.UNION:n=r.createUnion(n.input.map(d));break;case i.types.VALUES:n=r.createValues([].concat(n.variables),n.bindings.map((e=>Object.assign({},e))));break;case i.types.ZERO_OR_MORE_PATH:n=r.createZeroOrMorePath(d(n.path));break;case i.types.ZERO_OR_ONE_PATH:n=r.createZeroOrOnePath(d(n.path));break;case i.types.COMPOSITE_UPDATE:n=r.createCompositeUpdate(n.updates.map(d));break;case i.types.DELETE_INSERT:n=r.createDeleteInsert(n.delete?n.delete.map(d):void 0,n.insert?n.insert.map(d):void 0,n.where?d(n.where):void 0);break;case i.types.LOAD:n=r.createLoad(n.source,n.destination,n.silent);break;case i.types.CLEAR:n=r.createClear(n.source,n.silent);break;case i.types.CREATE:n=r.createCreate(n.source,n.silent);break;case i.types.DROP:n=r.createDrop(n.source,n.silent);break;case i.types.ADD:n=r.createAdd(n.source,n.destination);break;case i.types.MOVE:n=r.createMove(n.source,n.destination);break;case i.types.COPY:n=r.createCopy(n.source,n.destination);break;default:throw new Error(`Unknown Operation type ${n.type}`)}return l&&(n.metadata=l),n}static mapExpression(e,t,r){let n=e,o=!0;r=r||new a.default;const c=t[e.expressionType];if(c&&({result:n,recurse:o}=c(e,r)),!o)return n;let u=e=>s.mapOperation(e,t,r);switch(e.expressionType){case i.expressionTypes.AGGREGATE:return e.variable?r.createBoundAggregate(e.variable,e.aggregator,u(e.expression),e.distinct,e.separator):r.createAggregateExpression(e.aggregator,u(e.expression),e.distinct,e.separator);case i.expressionTypes.EXISTENCE:return r.createExistenceExpression(e.not,u(e.input));case i.expressionTypes.NAMED:return r.createNamedExpression(e.name,e.args.map(u));case i.expressionTypes.OPERATOR:return r.createOperatorExpression(e.operator,e.args.map(u));case i.expressionTypes.TERM:return r.createTermExpression(e.term);case i.expressionTypes.WILDCARD:return r.createWildcardExpression();default:throw new Error(`Unknown Expression type ${e.expressionType}`)}}static cloneOperation(e){return s.mapOperation(e,{})}static cloneExpression(e){return s.mapExpression(e,{})}static createUniqueVariable(e,t,r){let n=0,i=e;for(;t[i];)i=`${e}${n++}`;return r.variable(i)}static isSimpleTerm(e){return void 0!==e.termType&&"Quad"!==e.termType&&"Wildcard"!==e.termType}static isQuad(e){return"Quad"===e.termType}static hasQuadVariables(e){return(0,o.someTermsNested)(e,(e=>"Variable"===e.termType))}static isWildcard(e){return"Wildcard"===e.termType}}t.default=s},98634:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var o=a(r(33096)),s=r(3379),c=new Set(["input","option","optgroup","select","button","datalist","textarea"]),u=new Set(["p"]),l=new Set(["thead","tbody"]),d=new Set(["dd","dt"]),p=new Set(["rt","rp"]),h=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",u],["h1",u],["h2",u],["h3",u],["h4",u],["h5",u],["h6",u],["select",c],["input",c],["output",c],["button",c],["datalist",c],["textarea",c],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",d],["dt",d],["address",u],["article",u],["aside",u],["blockquote",u],["details",u],["div",u],["dl",u],["fieldset",u],["figcaption",u],["figure",u],["footer",u],["form",u],["header",u],["hr",u],["main",u],["nav",u],["ol",u],["pre",u],["section",u],["table",u],["ul",u],["rt",p],["rp",p],["tbody",l],["tfoot",l]]),f=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),y=new Set(["math","svg"]),g=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]),m=/\s|\//,b=function(){function e(e,t){var r,n,i,a,s,c;void 0===t&&(t={}),this.options=t,this.startIndex=0,this.endIndex=0,this.openTagStart=0,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.buffers=[],this.bufferOffset=0,this.writeIndex=0,this.ended=!1,this.cbs=null!=e?e:{},this.htmlMode=!this.options.xmlMode,this.lowerCaseTagNames=null!==(r=t.lowerCaseTags)&&void 0!==r?r:this.htmlMode,this.lowerCaseAttributeNames=null!==(n=t.lowerCaseAttributeNames)&&void 0!==n?n:this.htmlMode,this.recognizeSelfClosing=null!==(i=t.recognizeSelfClosing)&&void 0!==i?i:!this.htmlMode,this.tokenizer=new(null!==(a=t.Tokenizer)&&void 0!==a?a:o.default)(this.options,this),this.foreignContext=[!this.htmlMode],null===(c=(s=this.cbs).onparserinit)||void 0===c||c.call(s,this)}return e.prototype.ontext=function(e,t){var r,n,i=this.getSlice(e,t);this.endIndex=t-1,null===(n=(r=this.cbs).ontext)||void 0===n||n.call(r,i),this.startIndex=t},e.prototype.ontextentity=function(e,t){var r,n;this.endIndex=t-1,null===(n=(r=this.cbs).ontext)||void 0===n||n.call(r,(0,s.fromCodePoint)(e)),this.startIndex=t},e.prototype.isVoidElement=function(e){return this.htmlMode&&f.has(e)},e.prototype.onopentagname=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);this.lowerCaseTagNames&&(r=r.toLowerCase()),this.emitOpenTag(r)},e.prototype.emitOpenTag=function(e){var t,r,n,i;this.openTagStart=this.startIndex,this.tagname=e;var a=this.htmlMode&&h.get(e);if(a)for(;this.stack.length>0&&a.has(this.stack[0]);){var o=this.stack.shift();null===(r=(t=this.cbs).onclosetag)||void 0===r||r.call(t,o,!0)}this.isVoidElement(e)||(this.stack.unshift(e),this.htmlMode&&(y.has(e)?this.foreignContext.unshift(!0):g.has(e)&&this.foreignContext.unshift(!1))),null===(i=(n=this.cbs).onopentagname)||void 0===i||i.call(n,e),this.cbs.onopentag&&(this.attribs={})},e.prototype.endOpenTag=function(e){var t,r;this.startIndex=this.openTagStart,this.attribs&&(null===(r=(t=this.cbs).onopentag)||void 0===r||r.call(t,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""},e.prototype.onopentagend=function(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1},e.prototype.onclosetag=function(e,t){var r,n,i,a,o,s,c,u;this.endIndex=t;var l=this.getSlice(e,t);if(this.lowerCaseTagNames&&(l=l.toLowerCase()),this.htmlMode&&(y.has(l)||g.has(l))&&this.foreignContext.shift(),this.isVoidElement(l))this.htmlMode&&"br"===l&&(null===(a=(i=this.cbs).onopentagname)||void 0===a||a.call(i,"br"),null===(s=(o=this.cbs).onopentag)||void 0===s||s.call(o,"br",{},!0),null===(u=(c=this.cbs).onclosetag)||void 0===u||u.call(c,"br",!1));else{var d=this.stack.indexOf(l);if(-1!==d)for(var p=0;p<=d;p++){var h=this.stack.shift();null===(n=(r=this.cbs).onclosetag)||void 0===n||n.call(r,h,p!==d)}else this.htmlMode&&"p"===l&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=t+1},e.prototype.onselfclosingtag=function(e){this.endIndex=e,this.recognizeSelfClosing||this.foreignContext[0]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)},e.prototype.closeCurrentTag=function(e){var t,r,n=this.tagname;this.endOpenTag(e),this.stack[0]===n&&(null===(r=(t=this.cbs).onclosetag)||void 0===r||r.call(t,n,!e),this.stack.shift())},e.prototype.onattribname=function(e,t){this.startIndex=e;var r=this.getSlice(e,t);this.attribname=this.lowerCaseAttributeNames?r.toLowerCase():r},e.prototype.onattribdata=function(e,t){this.attribvalue+=this.getSlice(e,t)},e.prototype.onattribentity=function(e){this.attribvalue+=(0,s.fromCodePoint)(e)},e.prototype.onattribend=function(e,t){var r,n;this.endIndex=t,null===(n=(r=this.cbs).onattribute)||void 0===n||n.call(r,this.attribname,this.attribvalue,e===o.QuoteType.Double?'"':e===o.QuoteType.Single?"'":e===o.QuoteType.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""},e.prototype.getInstructionName=function(e){var t=e.search(m),r=t<0?e:e.substr(0,t);return this.lowerCaseTagNames&&(r=r.toLowerCase()),r},e.prototype.ondeclaration=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){var n=this.getInstructionName(r);this.cbs.onprocessinginstruction("!".concat(n),"!".concat(r))}this.startIndex=t+1},e.prototype.onprocessinginstruction=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){var n=this.getInstructionName(r);this.cbs.onprocessinginstruction("?".concat(n),"?".concat(r))}this.startIndex=t+1},e.prototype.oncomment=function(e,t,r){var n,i,a,o;this.endIndex=t,null===(i=(n=this.cbs).oncomment)||void 0===i||i.call(n,this.getSlice(e,t-r)),null===(o=(a=this.cbs).oncommentend)||void 0===o||o.call(a),this.startIndex=t+1},e.prototype.oncdata=function(e,t,r){var n,i,a,o,s,c,u,l,d,p;this.endIndex=t;var h=this.getSlice(e,t-r);!this.htmlMode||this.options.recognizeCDATA?(null===(i=(n=this.cbs).oncdatastart)||void 0===i||i.call(n),null===(o=(a=this.cbs).ontext)||void 0===o||o.call(a,h),null===(c=(s=this.cbs).oncdataend)||void 0===c||c.call(s)):(null===(l=(u=this.cbs).oncomment)||void 0===l||l.call(u,"[CDATA[".concat(h,"]]")),null===(p=(d=this.cbs).oncommentend)||void 0===p||p.call(d)),this.startIndex=t+1},e.prototype.onend=function(){var e,t;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(var r=0;r=this.buffers[0].length;)this.shiftBuffer();for(var r=this.buffers[0].slice(e-this.bufferOffset,t-this.bufferOffset);t-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),r+=this.buffers[0].slice(0,t-this.bufferOffset);return r},e.prototype.shiftBuffer=function(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()},e.prototype.write=function(e){var t,r;this.ended?null===(r=(t=this.cbs).onerror)||void 0===r||r.call(t,new Error(".write() after done!")):(this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++))},e.prototype.end=function(e){var t,r;this.ended?null===(r=(t=this.cbs).onerror)||void 0===r||r.call(t,new Error(".end() after done!")):(e&&this.write(e),this.ended=!0,this.tokenizer.end())},e.prototype.pause=function(){this.tokenizer.pause()},e.prototype.resume=function(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuoteType=void 0;var n,i,a,o=r(3379);function s(e){return e===n.Space||e===n.NewLine||e===n.Tab||e===n.FormFeed||e===n.CarriageReturn}function c(e){return e===n.Slash||e===n.Gt||s(e)}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Number=35]="Number",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(n||(n={})),function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.BeforeSpecialT=23]="BeforeSpecialT",e[e.SpecialStartSequence=24]="SpecialStartSequence",e[e.InSpecialTag=25]="InSpecialTag",e[e.InEntity=26]="InEntity"}(i||(i={})),function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(a||(t.QuoteType=a={}));var u={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])},l=function(){function e(e,t){var r=e.xmlMode,n=void 0!==r&&r,a=e.decodeEntities,s=void 0===a||a,c=this;this.cbs=t,this.state=i.Text,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=i.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.xmlMode=n,this.decodeEntities=s,this.entityDecoder=new o.EntityDecoder(n?o.xmlDecodeTree:o.htmlDecodeTree,(function(e,t){return c.emitCodePoint(e,t)}))}return e.prototype.reset=function(){this.state=i.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=i.Text,this.currentSequence=void 0,this.running=!0,this.offset=0},e.prototype.write=function(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()},e.prototype.end=function(){this.running&&this.finish()},e.prototype.pause=function(){this.running=!1},e.prototype.resume=function(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=i.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===n.Amp&&this.startEntity()},e.prototype.stateSpecialStartSequence=function(e){var t=this.sequenceIndex===this.currentSequence.length;if(t?c(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.isSpecial=!1;this.sequenceIndex=0,this.state=i.InTagName,this.stateInTagName(e)},e.prototype.stateInSpecialTag=function(e){if(this.sequenceIndex===this.currentSequence.length){if(e===n.Gt||s(e)){var t=this.index-this.currentSequence.length;if(this.sectionStart=n.LowerA&&e<=n.LowerZ||e>=n.UpperA&&e<=n.UpperZ}(e)},e.prototype.startSpecial=function(e,t){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=t,this.state=i.SpecialStartSequence},e.prototype.stateBeforeTagName=function(e){if(e===n.ExclamationMark)this.state=i.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===n.Questionmark)this.state=i.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){var t=32|e;this.sectionStart=this.index,this.xmlMode?this.state=i.InTagName:t===u.ScriptEnd[2]?this.state=i.BeforeSpecialS:t===u.TitleEnd[2]?this.state=i.BeforeSpecialT:this.state=i.InTagName}else e===n.Slash?this.state=i.BeforeClosingTagName:(this.state=i.Text,this.stateText(e))},e.prototype.stateInTagName=function(e){c(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e))},e.prototype.stateBeforeClosingTagName=function(e){s(e)||(e===n.Gt?this.state=i.Text:(this.state=this.isTagStartChar(e)?i.InClosingTagName:i.InSpecialComment,this.sectionStart=this.index))},e.prototype.stateInClosingTagName=function(e){(e===n.Gt||s(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.AfterClosingTagName,this.stateAfterClosingTagName(e))},e.prototype.stateAfterClosingTagName=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeAttributeName=function(e){e===n.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=i.InSpecialTag,this.sequenceIndex=0):this.state=i.Text,this.sectionStart=this.index+1):e===n.Slash?this.state=i.InSelfClosingTag:s(e)||(this.state=i.InAttributeName,this.sectionStart=this.index)},e.prototype.stateInSelfClosingTag=function(e){e===n.Gt?(this.cbs.onselfclosingtag(this.index),this.state=i.Text,this.sectionStart=this.index+1,this.isSpecial=!1):s(e)||(this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e))},e.prototype.stateInAttributeName=function(e){(e===n.Eq||c(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=this.index,this.state=i.AfterAttributeName,this.stateAfterAttributeName(e))},e.prototype.stateAfterAttributeName=function(e){e===n.Eq?this.state=i.BeforeAttributeValue:e===n.Slash||e===n.Gt?(this.cbs.onattribend(a.NoValue,this.sectionStart),this.sectionStart=-1,this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e)):s(e)||(this.cbs.onattribend(a.NoValue,this.sectionStart),this.state=i.InAttributeName,this.sectionStart=this.index)},e.prototype.stateBeforeAttributeValue=function(e){e===n.DoubleQuote?(this.state=i.InAttributeValueDq,this.sectionStart=this.index+1):e===n.SingleQuote?(this.state=i.InAttributeValueSq,this.sectionStart=this.index+1):s(e)||(this.sectionStart=this.index,this.state=i.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))},e.prototype.handleInAttributeValue=function(e,t){e===t||!this.decodeEntities&&this.fastForwardTo(t)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(t===n.DoubleQuote?a.Double:a.Single,this.index+1),this.state=i.BeforeAttributeName):this.decodeEntities&&e===n.Amp&&this.startEntity()},e.prototype.stateInAttributeValueDoubleQuotes=function(e){this.handleInAttributeValue(e,n.DoubleQuote)},e.prototype.stateInAttributeValueSingleQuotes=function(e){this.handleInAttributeValue(e,n.SingleQuote)},e.prototype.stateInAttributeValueNoQuotes=function(e){s(e)||e===n.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(a.Unquoted,this.index),this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===n.Amp&&this.startEntity()},e.prototype.stateBeforeDeclaration=function(e){e===n.OpeningSquareBracket?(this.state=i.CDATASequence,this.sequenceIndex=0):this.state=e===n.Dash?i.BeforeComment:i.InDeclaration},e.prototype.stateInDeclaration=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateInProcessingInstruction=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeComment=function(e){e===n.Dash?(this.state=i.InCommentLike,this.currentSequence=u.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=i.InDeclaration},e.prototype.stateInSpecialComment=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeSpecialS=function(e){var t=32|e;t===u.ScriptEnd[3]?this.startSpecial(u.ScriptEnd,4):t===u.StyleEnd[3]?this.startSpecial(u.StyleEnd,4):(this.state=i.InTagName,this.stateInTagName(e))},e.prototype.stateBeforeSpecialT=function(e){var t=32|e;t===u.TitleEnd[3]?this.startSpecial(u.TitleEnd,4):t===u.TextareaEnd[3]?this.startSpecial(u.TextareaEnd,4):(this.state=i.InTagName,this.stateInTagName(e))},e.prototype.startEntity=function(){this.baseState=this.state,this.state=i.InEntity,this.entityStart=this.index,this.entityDecoder.startEntity(this.xmlMode?o.DecodingMode.Strict:this.baseState===i.Text||this.baseState===i.InSpecialTag?o.DecodingMode.Legacy:o.DecodingMode.Attribute)},e.prototype.stateInEntity=function(){var e=this.entityDecoder.write(this.buffer,this.index-this.offset);e>=0?(this.state=this.baseState,0===e&&(this.index=this.entityStart)):this.index=this.offset+this.buffer.length-1},e.prototype.cleanup=function(){this.running&&this.sectionStart!==this.index&&(this.state===i.Text||this.state===i.InSpecialTag&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):this.state!==i.InAttributeValueDq&&this.state!==i.InAttributeValueSq&&this.state!==i.InAttributeValueNq||(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))},e.prototype.shouldContinue=function(){return this.index=e||(this.state===i.InCommentLike?this.currentSequence===u.CdataEnd?this.cbs.oncdata(this.sectionStart,e,0):this.cbs.oncomment(this.sectionStart,e,0):this.state===i.InTagName||this.state===i.BeforeAttributeName||this.state===i.BeforeAttributeValue||this.state===i.AfterAttributeName||this.state===i.InAttributeName||this.state===i.InAttributeValueSq||this.state===i.InAttributeValueDq||this.state===i.InAttributeValueNq||this.state===i.InClosingTagName||this.cbs.ontext(this.sectionStart,e))},e.prototype.emitCodePoint=function(e,t){this.baseState!==i.Text&&this.baseState!==i.InSpecialTag?(this.sectionStart{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isIterator=t.isIterable=t.isSourceExpression=t.isPromise=t.isEventEmitter=t.isFunction=t.range=t.union=t.fromIterable=t.fromIterator=t.fromArray=t.single=t.empty=t.wrap=t.WrappingIterator=t.ClonedIterator=t.UnionIterator=t.MultiTransformIterator=t.SimpleTransformIterator=t.TransformIterator=t.BufferedIterator=t.MappingIterator=t.DESTINATION=t.identity=t.IntegerIterator=t.ArrayIterator=t.SingletonIterator=t.EmptyIterator=t.AsyncIterator=t.DESTROYED=t.ENDED=t.CLOSED=t.CLOSING=t.OPEN=t.INIT=t.setTaskScheduler=t.getTaskScheduler=t.scheduleTask=t.LinkedList=void 0;const n=r(50046),i=r(14241);Object.defineProperty(t,"LinkedList",{enumerable:!0,get:function(){return i.LinkedList}});let a=r(93240).createTaskScheduler();t.scheduleTask=function(e){a(e)},t.getTaskScheduler=function(){return a},t.setTaskScheduler=function(e){a=e},t.INIT=1,t.OPEN=2,t.CLOSING=4,t.CLOSED=8,t.ENDED=16,t.DESTROYED=32;class o extends n.EventEmitter{constructor(e=t.OPEN){super(),this._readable=!1,this._state=e,this.on("newListener",s)}_changeState(e,r=!1){const n=e>this._state&&this._statethis.emit("end"))):this.emit("end"))),n}read(){return null}forEach(e,t){this.on("data",j(e,t))}close(){this._changeState(t.CLOSED)&&this._endAsync()}destroy(e){this.done||this._destroy(e,(t=>{(e=e||t)&&this.emit("error",e),this._end(!0)}))}_destroy(e,t){t()}_end(e=!1){this._changeState(e?t.DESTROYED:t.ENDED)&&(this._readable=!1,this.removeAllListeners("readable"),this.removeAllListeners("data"),this.removeAllListeners("end"))}_endAsync(){a((()=>this._end()))}get readable(){return this._readable}set readable(e){e=Boolean(e)&&!this.done,this._readable!==e&&(this._readable=e,e&&a((()=>this.emit("readable"))))}get closed(){return this._state>=t.CLOSING}get ended(){return this._state===t.ENDED}get destroyed(){return this._state===t.DESTROYED}get done(){return this._state>=t.ENDED}toString(){const e=this._toStringDetails();return`[${this.constructor.name}${e?` ${e}`:""}]`}_toStringDetails(){return""}toArray(e){const t=[],r="number"==typeof(null==e?void 0:e.limit)?e.limit:1/0;return this.ended||r<=0?Promise.resolve(t):new Promise(((e,n)=>{const i=()=>e(t),a=o=>{t.push(o),t.length>=r&&(this.removeListener("error",n),this.removeListener("data",a),this.removeListener("end",i),e(t))};this.on("error",n),this.on("data",a),this.on("end",i)}))}getProperty(e,t){const r=this._properties;if(!t)return r&&r[e];if(r&&e in r)a((()=>t(r[e])));else{let r;(r=this._propertyCallbacks)||(this._propertyCallbacks=r=Object.create(null)),e in r?r[e].push(t):r[e]=[t]}}setProperty(e,t){(this._properties||(this._properties=Object.create(null)))[e]=t;const r=this._propertyCallbacks||{},n=r[e];if(n){for(e in delete r[e],a((()=>{for(const e of n)e(t)})),r)return;delete this._propertyCallbacks}}getProperties(){const e=this._properties,t={};for(const r in e)t[r]=e[r];return t}setProperties(e){for(const t in e)this.setProperty(t,e[t])}copyProperties(e,t){for(const r of t)e.getProperty(r,(e=>this.setProperty(r,e)))}transform(e){return new O(this,e)}map(e,t){return new y(this,j(e,t))}filter(e,t){return this.map((function(r){return e.call(t||this,r)?r:null}))}uniq(e=f){const t=new Set;return this.filter((function(r){const n=e.call(this,r);return!t.has(n)&&(t.add(n),!0)}))}prepend(e){return this.transform({prepend:e})}append(e){return this.transform({append:e})}surround(e,t){return this.transform({prepend:e,append:t})}skip(e){return this.map((t=>e-- >0?null:t))}take(e){return this.transform({limit:e})}range(e,t){return this.transform({offset:e,limit:Math.max(t-e+1,0)})}clone(){return new A(this)}[Symbol.asyncIterator](){const e=this;let t=null,r=null,n=null;function i(){if(null!==t)if(null!==n)a(n);else if(e.done)t({done:!0,value:void 0}),t=r=null,o();else{const n=e.read();null!==n&&(t({done:!1,value:n}),t=r=null)}}function a(e){null!==r?(r(e),t=r=n=null,o()):null===n&&(n=e)}function o(){e.removeListener("readable",i),e.removeListener("end",i),e.removeListener("error",a)}return e.addListener("readable",i),e.addListener("end",i),e.addListener("error",a),{next:()=>new Promise(((e,n)=>{t=e,r=n,i()}))}}}function s(e){"data"===e&&(this.removeListener("newListener",s),u(this,"readable",c),this.readable&&a((()=>c.call(this))))}function c(){let e;for(;0!==this.listenerCount("data")&&null!==(e=this.read());)this.emit("data",e);0!==this.listenerCount("data")||this.done||(this.removeListener("readable",c),u(this,"newListener",s))}function u(e,t,r){e.listeners(t).includes(r)||e.on(t,r)}t.AsyncIterator=o;class l extends o{constructor(){super(),this._changeState(t.ENDED,!0)}}t.EmptyIterator=l;class d extends o{constructor(e){super(),this._item=e,null===e?this.close():this.readable=!0}read(){const e=this._item;return this._item=null,this.close(),e}_toStringDetails(){return null===this._item?"":`(${this._item})`}}t.SingletonIterator=d;class p extends o{constructor(e=[],{autoStart:t=!0,preserve:r=!0}={}){super();const n=r||!Array.isArray(e)?[...e]:e;this._index=0,this._sourceStarted=!1!==t,this._truncateThreshold=r?-1:64,this._sourceStarted&&0===n.length?this.close():this._buffer=n,this.readable=!0}read(){this._sourceStarted||(this._sourceStarted=!0);let e=null;return this._buffer&&(this._index=t&&this.close(),Promise.resolve(i)}}t.ArrayIterator=p;class h extends o{constructor({start:e=0,step:t=1,end:r}={}){super(),Number.isFinite(e)&&(e=Math.trunc(e)),this._next=e,Number.isFinite(t)&&(t=Math.trunc(t)),this._step=t;const n=t>=0,i=n?1/0:-1/0;Number.isFinite(r)?r=Math.trunc(r):r!==-i&&(r=i),this._last=r,!Number.isFinite(e)||(n?e>r:e=0?n>r:nthis._init(r))),this._sourceStarted=!1!==r}get maxBufferSize(){return this._maxBufferSize}set maxBufferSize(e){e!==1/0&&(e=Number.isFinite(e)?Math.max(Math.trunc(e),1):4),this._maxBufferSize!==e&&(this._maxBufferSize=e,this._state===t.OPEN&&this._fillBuffer())}_init(e){let r=!1;this._reading=!0,this._begin((()=>{if(r)throw new Error("done callback called multiple times");r=!0,this._reading=!1,this._changeState(t.OPEN),e?this._fillBufferAsync():this.readable=!0}))}_begin(e){e()}read(){if(this.done)return null;this._sourceStarted||(this._sourceStarted=!0);const e=this._buffer;let t;return e.empty?(t=null,this.readable=!1):t=e.shift(),!this._reading&&e.length0&&(this._pushedCount=0,this._reading=!0,this._read(e,(()=>{if(!e)throw new Error("done callback called multiple times");e=0,this._reading=!1,this.closed?this._completeClose():this._pushedCount&&(this.readable=!0,this._buffer.length{this._reading=!1,this._fillBuffer()})))}close(){this._reading?this._changeState(t.CLOSING):this._completeClose()}_completeClose(){this._changeState(t.CLOSED)&&(this._reading=!0,this._flush((()=>{if(!this._reading)throw new Error("done callback called multiple times");this._reading=!1,this._buffer.empty&&this._endAsync()})))}_destroy(e,t){this._buffer.clear(),t()}_flush(e){e()}_toStringDetails(){const e=this._buffer;return`{${e.empty?"":`next: ${e.first}, `}buffer: ${e.length}}`}}t.BufferedIterator=m;class b extends m{constructor(e,t=e||{}){super(t),this._boundPush=e=>this._push(e),k(e)||(e=t.source),M(e)?this.source=e:e&&(this._createSource=L(e)?()=>e:e,this._sourceStarted&&this._loadSourceAsync()),this._optional=Boolean(t.optional),this._destroySource=!1!==t.destroySource}get source(){return C(this._createSource)&&this._loadSourceAsync(),this._source}set source(e){const r=this._source=this._validateSource(e);r[t.DESTINATION]=this,this.done?this._destroySource&&r.destroy():r.done?this.close():(r.on("end",T),r.on("readable",S),r.on("error",_))}_loadSourceAsync(){C(this._createSource)&&(Promise.resolve(this._createSource()).then((e=>{delete this._createSource,this.source=e,this._fillBuffer()}),(e=>this.emit("error",e))),this._createSource=null)}_validateSource(e,t=!1){if(this._source||void 0!==this._createSource)throw new Error("The source cannot be changed after it has been set");return g(e,t)}_read(e,t){const r=()=>{this._pushedCountthis._readAndTransform(r,t))):t()};this._readAndTransform(r,t)}_readAndTransform(e,t){let r;const n=this.source;!n||n.done||null===(r=n.read())?t():this._optional?this._optionalTransform(r,e):this._transform(r,e,this._boundPush)}_optionalTransform(e,t){const r=this._pushedCount;this._transform(e,(()=>{r===this._pushedCount&&this._push(e),t()}),this._boundPush)}_transform(e,t,r){r(e),t()}_closeWhenDone(){this.close()}_end(e){const r=this._source;r&&(r.removeListener("end",T),r.removeListener("error",_),r.removeListener("readable",S),delete r[t.DESTINATION],this._destroySource&&r.destroy()),super._end(e)}}function v(){this[t.DESTINATION].readable=!0}function _(e){this[t.DESTINATION].emit("error",e)}function w(){this[t.DESTINATION].close()}function T(){this[t.DESTINATION]._closeWhenDone()}function S(){!1!==this[t.DESTINATION]._sourceStarted&&this[t.DESTINATION]._fillBuffer()}t.TransformIterator=b;class O extends b{constructor(e,t){if(super(e,t),this._offset=0,this._limit=1/0,this._filter=e=>!0,t=t||(k(e)?null:e)){const e=C(t)?t:t.transform,{limit:r,offset:n,filter:i,map:a,prepend:o,append:s}=t;n===1/0||r===-1/0?this._limit=0:(Number.isFinite(n)&&(this._offset=Math.max(Math.trunc(n),0)),Number.isFinite(r)&&(this._limit=Math.max(Math.trunc(r),0)),C(i)&&(this._filter=i),C(a)&&(this._map=a),this._transform=C(e)?e:null),o&&(this._prepender=M(o)?o:D(o)),s&&(this._appender=M(s)?s:D(s))}}_read(e,t){const r=()=>this._readAndTransformSimple(e,n,t);function n(){a(r)}this._readAndTransformSimple(e,n,t)}_readAndTransformSimple(e,t,r){let n;const{source:i}=this;if(i&&!i.done){for(0===this._limit&&this.close();!this.closed&&this._pushedCountthis._push(e);!e||e.done?t():(e.on("data",r),e.on("end",(function n(){e.removeListener("data",r),e.removeListener("end",n),t()})))}}t.SimpleTransformIterator=O,t.MultiTransformIterator=class extends b{constructor(e,t){if(super(e,t),this._transformerQueue=[],t){const e=C(t)?t:t.multiTransform;e&&(this._createTransformer=e)}}_read(e,r){const n=this._transformerQueue,i=this._optional;let a,o;for(;(a=n[0])&&a.transformer.done;){i&&null!==a.item&&(e--,this._push(a.item)),n.shift();const{transformer:t}=a;t.removeListener("end",S),t.removeListener("readable",S),t.removeListener("error",_)}const{source:s}=this;for(;s&&!s.done&&n.length0&&null!==(o=t.read());)this._push(o),i&&(a.item=null)}else s&&s.done&&this.close();r()}_createTransformer(e){return new d(e)}_closeWhenDone(){this._transformerQueue.length||this.close()}_end(e){if(super._end(e),this._destroySource)for(const e of this._transformerQueue)e.transformer.destroy()}};class E extends m{constructor(e,t={}){super(t),this._sources=[],this._currentSource=-1;const r=!1!==t.autoStart;if(M(e))e.on("error",(e=>this.emit("error",e))),this._pending={loading:!1,sources:e},r&&this._loadSources();else if(Array.isArray(e)&&e.length>0)for(const t of e)this._addSource(t);else r&&this.close();this._destroySources=!1!==t.destroySources}_loadSources(){const e=this._pending.sources;this._pending.loading=!0,e.done?(delete this._pending,this.close()):(e.on("data",(e=>{this._addSource(e),this._fillBufferAsync()})),e.on("end",(()=>{delete this._pending,this._fillBuffer()})))}_addSource(e){L(e)&&(e=P(e)),e.done||(this._sources.push(e),e[t.DESTINATION]=this,e.on("error",_),e.on("readable",S),e.on("end",x))}_removeEmptySources(){this._sources=this._sources.filter(((e,t)=>(e.done&&t<=this._currentSource&&this._currentSource--,!e.done))),this._fillBuffer()}_read(e,t){var r;!1===(null===(r=this._pending)||void 0===r?void 0:r.loading)&&this._loadSources();let n,i=0;for(;i!==(i=e);)for(let t=0;t0;t++)this._currentSource=(this._currentSource+1)%this._sources.length,null!==(n=this._sources[this._currentSource].read())&&(e--,this._push(n));this._pending||0!==this._sources.length||this.close(),t()}_end(e=!1){if(super._end(e),this._destroySources){for(const e of this._sources)e.destroy();this._pending&&(this._pending.sources.destroy(),delete this._pending)}}}function x(){this[t.DESTINATION]._removeEmptySources()}t.UnionIterator=E;class A extends b{constructor(e){super(e,{autoStart:!1}),this._readPosition=0,this._reading=!1,e&&(this.readable=!0)}_init(){}close(){o.prototype.close.call(this)}get source(){return super.source}set source(e){const r=this._source=this._validateSource(e),n=r&&r[t.DESTINATION]||(r[t.DESTINATION]=new R(r));this.done?this._destroySource&&r.destroy():n.endsAt(0)?this.close():(n.register(this),!1!==r._sourceStarted&&null===n.readAt(0)||(this.readable=!0));const i=this._propertyCallbacks;for(const e in i){const t=i[e];for(const r of t)this._getSourceProperty(e,r)}}_validateSource(e,r=!1){const n=e&&e[t.DESTINATION];return super._validateSource(e,!n||n instanceof R)}getProperty(e,t){const{source:r}=this,n=this._properties,i=n&&e in n;if(!t)return i?n&&n[e]:r&&r.getProperty(e);super.getProperty(e,t),r&&!i&&this._getSourceProperty(e,t)}_getSourceProperty(e,t){this.source.getProperty(e,(r=>{this._properties&&e in this._properties||t(r)}))}getProperties(){const e=this.source?this.source.getProperties():{},t=this._properties;for(const r in t)e[r]=t[r];return e}_toStringDetails(){return`{source: ${this.source?this.source.toString():"none"}}`}read(){this._sourceStarted||(this._sourceStarted=!0);const e=this.source;let r=null;if(!this.done&&e){const n=e[t.DESTINATION];null!==(r=n.readAt(this._readPosition))?this._readPosition++:this.readable=!1,n.endsAt(this._readPosition)&&this.close()}return r}_end(e){const r=this.source,n=null==r?void 0:r[t.DESTINATION];n&&n.unregister(this),m.prototype._end.call(this,e)}}t.ClonedIterator=A;class R{constructor(e){if(this._history=[],this._trackers=new Set,this._source=e,!e.done){const t=()=>{for(const e of this._trackers)e.readable=!0},r=e=>{for(const t of this._trackers)t.emit("error",e)},n=()=>{for(const e of this._trackers)!1!==e._sourceStarted&&e._readPosition===this._history.length&&e.close();this._trackers.clear(),e.removeListener("end",n),e.removeListener("error",r),e.removeListener("readable",t)};e.on("end",n),e.on("error",r),e.on("readable",t)}}register(e){this._source.done||this._trackers.add(e)}unregister(e){this._trackers.delete(e)}readAt(e){let t=null;return e{this._source=null,this.source=e})).catch((e=>this.emit("error",e)))):e&&(this.source=e)}set source(e){let r=e;if(null!==this._source)throw new Error("The source cannot be changed after it has been set");if(F(r)&&(r=r[Symbol.iterator]()),B(r)){let e=r;r=new n.EventEmitter,r.read=()=>{if(null!==e){let t;for(;!(t=e.next()).done;)if(null!==t.value)return t.value;e=null,this.close()}return null}}else r=g(r);this.done?this._destroySource&&C(r.destroy)&&r.destroy():(r[t.DESTINATION]=this,r.on("end",w),r.on("error",_),r.on("readable",v),this._source=r,this.readable=!1!==r.readable)}read(){if(null!==this._source&&!1!==this._source.readable){const e=this._source.read();if(null!==e)return e;this.readable=!1}return null}_end(e=!1){null!==this._source&&(this._source.removeListener("end",w),this._source.removeListener("error",_),this._source.removeListener("readable",v),delete this._source[t.DESTINATION],this._destroySource&&C(this._source.destroy)&&this._source.destroy(),this._source=null),super._end(e)}}function P(e,t){if(t&&("autoStart"in t||"optional"in t||"source"in t||"maxBufferSize"in t))return e&&!M(e)&&(e=new I(e)),new b(e,t);if(!e)return N();if(L(e))return new I(e,t);if(e instanceof o)return e;if(Array.isArray(e))return D(e);if(F(e)||B(e)||M(e))return new I(e,t);throw new TypeError(`Invalid source: ${e}`)}function N(){return new l}function D(e){return new p(e)}function j(e,t){return t?e.bind(t):e}function C(e){return"function"==typeof e}function M(e){return C(null==e?void 0:e.on)}function L(e){return C(null==e?void 0:e.then)}function k(e){return e&&(M(e)||L(e)||C(e))}function F(e){return e&&Symbol.iterator in e}function B(e){return C(null==e?void 0:e.next)}t.WrappingIterator=I,t.wrap=P,t.empty=N,t.single=function(e){return new d(e)},t.fromArray=D,t.fromIterator=function(e){return new I(e)},t.fromIterable=function(e){return new I(e)},t.union=function(e){return new E(e)},t.range=function(e,t,r){return new h({start:e,end:t,step:r})},t.isFunction=C,t.isEventEmitter=M,t.isPromise=L,t.isSourceExpression=k,t.isIterable=F,t.isIterator=B},14241:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkedList=void 0,t.LinkedList=class{constructor(){this._length=0,this._head=null,this._tail=null}get length(){return this._length}get first(){var e;return null===(e=this._head)||void 0===e?void 0:e.value}get last(){var e;return null===(e=this._tail)||void 0===e?void 0:e.value}get empty(){return null===this._head}push(e){const t={value:e,next:null};null===this._tail?this._head=this._tail=t:this._tail.next=this._tail=t,this._length++}shift(){if(null===this._head)return;const{value:e,next:t}=this._head;return this._head=t,null===t&&(this._tail=null),this._length--,e}clear(){this._length=0,this._head=this._tail=null}}},93240:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createTaskScheduler=void 0;const r=Promise.resolve(void 0);t.createTaskScheduler=function(){const e="function"==typeof queueMicrotask?queueMicrotask:e=>r.then(e),t="function"==typeof setImmediate?setImmediate:e=>setTimeout(e,0);let n=0,i=null;return r=>{null!==i?i.push(r):++n<100?e(r):(i=[r],t((()=>{for(const t of i)e(t);i=null,n=0})))}}},35069:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LRUCache=void 0;const r="object"==typeof performance&&performance&&"function"==typeof performance.now?performance:Date,n=new Set,i="object"==typeof process&&process?process:{},a=(e,t,r,n)=>{"function"==typeof i.emitWarning?i.emitWarning(e,t,r,n):console.error(`[${r}] ${t}: ${e}`)};let o=globalThis.AbortController,s=globalThis.AbortSignal;if(void 0===o){s=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(e,t){this._onabort.push(t)}},o=class{constructor(){t()}signal=new s;abort(e){if(!this.signal.aborted){this.signal.reason=e,this.signal.aborted=!0;for(const t of this.signal._onabort)t(e);this.signal.onabort?.(e)}}};let e="1"!==i.env?.LRU_CACHE_IGNORE_AC_WARNING;const t=()=>{e&&(e=!1,a("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}Symbol("type");const c=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),u=e=>c(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?l:null:null;class l extends Array{constructor(e){super(e),this.fill(0)}}class d{heap;length;static#e=!1;static create(e){const t=u(e);if(!t)return[];d.#e=!0;const r=new d(e,t);return d.#e=!1,r}constructor(e,t){if(!d.#e)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}}class p{#t;#r;#n;#i;#a;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#o;#s;#c;#u;#l;#d;#p;#h;#f;#y;#g;#m;#b;#v;#_;#w;#T;static unsafeExposeInternals(e){return{starts:e.#b,ttls:e.#v,sizes:e.#m,keyMap:e.#c,keyList:e.#u,valList:e.#l,next:e.#d,prev:e.#p,get head(){return e.#h},get tail(){return e.#f},free:e.#y,isBackgroundFetch:t=>e.#S(t),backgroundFetch:(t,r,n,i)=>e.#O(t,r,n,i),moveToTail:t=>e.#E(t),indexes:t=>e.#x(t),rindexes:t=>e.#A(t),isStale:t=>e.#R(t)}}get max(){return this.#t}get maxSize(){return this.#r}get calculatedSize(){return this.#s}get size(){return this.#o}get fetchMethod(){return this.#a}get dispose(){return this.#n}get disposeAfter(){return this.#i}constructor(e){const{max:t=0,ttl:r,ttlResolution:i=1,ttlAutopurge:o,updateAgeOnGet:s,updateAgeOnHas:l,allowStale:h,dispose:f,disposeAfter:y,noDisposeOnSet:g,noUpdateTTL:m,maxSize:b=0,maxEntrySize:v=0,sizeCalculation:_,fetchMethod:w,noDeleteOnFetchRejection:T,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:O,allowStaleOnFetchAbort:E,ignoreFetchAbort:x}=e;if(0!==t&&!c(t))throw new TypeError("max option must be a nonnegative integer");const A=t?u(t):Array;if(!A)throw new Error("invalid max value: "+t);if(this.#t=t,this.#r=b,this.maxEntrySize=v||this.#r,this.sizeCalculation=_,this.sizeCalculation){if(!this.#r&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if("function"!=typeof this.sizeCalculation)throw new TypeError("sizeCalculation set to non-function")}if(void 0!==w&&"function"!=typeof w)throw new TypeError("fetchMethod must be a function if specified");if(this.#a=w,this.#w=!!w,this.#c=new Map,this.#u=new Array(t).fill(void 0),this.#l=new Array(t).fill(void 0),this.#d=new A(t),this.#p=new A(t),this.#h=0,this.#f=0,this.#y=d.create(t),this.#o=0,this.#s=0,"function"==typeof f&&(this.#n=f),"function"==typeof y?(this.#i=y,this.#g=[]):(this.#i=void 0,this.#g=void 0),this.#_=!!this.#n,this.#T=!!this.#i,this.noDisposeOnSet=!!g,this.noUpdateTTL=!!m,this.noDeleteOnFetchRejection=!!T,this.allowStaleOnFetchRejection=!!O,this.allowStaleOnFetchAbort=!!E,this.ignoreFetchAbort=!!x,0!==this.maxEntrySize){if(0!==this.#r&&!c(this.#r))throw new TypeError("maxSize must be a positive integer if specified");if(!c(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#I()}if(this.allowStale=!!h,this.noDeleteOnStaleGet=!!S,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!l,this.ttlResolution=c(i)||0===i?i:1,this.ttlAutopurge=!!o,this.ttl=r||0,this.ttl){if(!c(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#P()}if(0===this.#t&&0===this.ttl&&0===this.#r)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#t&&!this.#r){const e="LRU_CACHE_UNBOUNDED";(e=>!n.has(e))(e)&&(n.add(e),a("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",e,p))}}getRemainingTTL(e){return this.#c.has(e)?1/0:0}#P(){const e=new l(this.#t),t=new l(this.#t);this.#v=e,this.#b=t,this.#N=(n,i,a=r.now())=>{if(t[n]=0!==i?a:0,e[n]=i,0!==i&&this.ttlAutopurge){const e=setTimeout((()=>{this.#R(n)&&this.delete(this.#u[n])}),i+1);e.unref&&e.unref()}},this.#D=n=>{t[n]=0!==e[n]?r.now():0},this.#j=(r,a)=>{if(e[a]){const o=e[a],s=t[a];if(!o||!s)return;r.ttl=o,r.start=s,r.now=n||i();const c=r.now-s;r.remainingTTL=o-c}};let n=0;const i=()=>{const e=r.now();if(this.ttlResolution>0){n=e;const t=setTimeout((()=>n=0),this.ttlResolution);t.unref&&t.unref()}return e};this.getRemainingTTL=r=>{const a=this.#c.get(r);if(void 0===a)return 0;const o=e[a],s=t[a];return o&&s?o-((n||i())-s):1/0},this.#R=r=>{const a=t[r],o=e[r];return!!o&&!!a&&(n||i())-a>o}}#D=()=>{};#j=()=>{};#N=()=>{};#R=()=>!1;#I(){const e=new l(this.#t);this.#s=0,this.#m=e,this.#C=t=>{this.#s-=e[t],e[t]=0},this.#M=(e,t,r,n)=>{if(this.#S(t))return 0;if(!c(r)){if(!n)throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");if("function"!=typeof n)throw new TypeError("sizeCalculation must be a function");if(r=n(t,e),!c(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}return r},this.#L=(t,r,n)=>{if(e[t]=r,this.#r){const r=this.#r-e[t];for(;this.#s>r;)this.#k(!0)}this.#s+=e[t],n&&(n.entrySize=r,n.totalCalculatedSize=this.#s)}}#C=e=>{};#L=(e,t,r)=>{};#M=(e,t,r,n)=>{if(r||n)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#x({allowStale:e=this.allowStale}={}){if(this.#o)for(let t=this.#f;this.#F(t)&&(!e&&this.#R(t)||(yield t),t!==this.#h);)t=this.#p[t]}*#A({allowStale:e=this.allowStale}={}){if(this.#o)for(let t=this.#h;this.#F(t)&&(!e&&this.#R(t)||(yield t),t!==this.#f);)t=this.#d[t]}#F(e){return void 0!==e&&this.#c.get(this.#u[e])===e}*entries(){for(const e of this.#x())void 0===this.#l[e]||void 0===this.#u[e]||this.#S(this.#l[e])||(yield[this.#u[e],this.#l[e]])}*rentries(){for(const e of this.#A())void 0===this.#l[e]||void 0===this.#u[e]||this.#S(this.#l[e])||(yield[this.#u[e],this.#l[e]])}*keys(){for(const e of this.#x()){const t=this.#u[e];void 0===t||this.#S(this.#l[e])||(yield t)}}*rkeys(){for(const e of this.#A()){const t=this.#u[e];void 0===t||this.#S(this.#l[e])||(yield t)}}*values(){for(const e of this.#x())void 0===this.#l[e]||this.#S(this.#l[e])||(yield this.#l[e])}*rvalues(){for(const e of this.#A())void 0===this.#l[e]||this.#S(this.#l[e])||(yield this.#l[e])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,t={}){for(const r of this.#x()){const n=this.#l[r],i=this.#S(n)?n.__staleWhileFetching:n;if(void 0!==i&&e(i,this.#u[r],this))return this.get(this.#u[r],t)}}forEach(e,t=this){for(const r of this.#x()){const n=this.#l[r],i=this.#S(n)?n.__staleWhileFetching:n;void 0!==i&&e.call(t,i,this.#u[r],this)}}rforEach(e,t=this){for(const r of this.#A()){const n=this.#l[r],i=this.#S(n)?n.__staleWhileFetching:n;void 0!==i&&e.call(t,i,this.#u[r],this)}}purgeStale(){let e=!1;for(const t of this.#A({allowStale:!0}))this.#R(t)&&(this.delete(this.#u[t]),e=!0);return e}info(e){const t=this.#c.get(e);if(void 0===t)return;const n=this.#l[t],i=this.#S(n)?n.__staleWhileFetching:n;if(void 0===i)return;const a={value:i};if(this.#v&&this.#b){const e=this.#v[t],n=this.#b[t];if(e&&n){const t=e-(r.now()-n);a.ttl=t,a.start=Date.now()}}return this.#m&&(a.size=this.#m[t]),a}dump(){const e=[];for(const t of this.#x({allowStale:!0})){const n=this.#u[t],i=this.#l[t],a=this.#S(i)?i.__staleWhileFetching:i;if(void 0===a||void 0===n)continue;const o={value:a};if(this.#v&&this.#b){o.ttl=this.#v[t];const e=r.now()-this.#b[t];o.start=Math.floor(Date.now()-e)}this.#m&&(o.size=this.#m[t]),e.unshift([n,o])}return e}load(e){this.clear();for(const[t,n]of e){if(n.start){const e=Date.now()-n.start;n.start=r.now()-e}this.set(t,n.value,n)}}set(e,t,r={}){if(void 0===t)return this.delete(e),this;const{ttl:n=this.ttl,start:i,noDisposeOnSet:a=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:s}=r;let{noUpdateTTL:c=this.noUpdateTTL}=r;const u=this.#M(e,t,r.size||0,o);if(this.maxEntrySize&&u>this.maxEntrySize)return s&&(s.set="miss",s.maxEntrySizeExceeded=!0),this.delete(e),this;let l=0===this.#o?void 0:this.#c.get(e);if(void 0===l)l=0===this.#o?this.#f:0!==this.#y.length?this.#y.pop():this.#o===this.#t?this.#k(!1):this.#o,this.#u[l]=e,this.#l[l]=t,this.#c.set(e,l),this.#d[this.#f]=l,this.#p[l]=this.#f,this.#f=l,this.#o++,this.#L(l,u,s),s&&(s.set="add"),c=!1;else{this.#E(l);const r=this.#l[l];if(t!==r){if(this.#w&&this.#S(r)){r.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:t}=r;void 0===t||a||(this.#_&&this.#n?.(t,e,"set"),this.#T&&this.#g?.push([t,e,"set"]))}else a||(this.#_&&this.#n?.(r,e,"set"),this.#T&&this.#g?.push([r,e,"set"]));if(this.#C(l),this.#L(l,u,s),this.#l[l]=t,s){s.set="replace";const e=r&&this.#S(r)?r.__staleWhileFetching:r;void 0!==e&&(s.oldValue=e)}}else s&&(s.set="update")}if(0===n||this.#v||this.#P(),this.#v&&(c||this.#N(l,n,i),s&&this.#j(s,l)),!a&&this.#T&&this.#g){const e=this.#g;let t;for(;t=e?.shift();)this.#i?.(...t)}return this}pop(){try{for(;this.#o;){const e=this.#l[this.#h];if(this.#k(!0),this.#S(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(void 0!==e)return e}}finally{if(this.#T&&this.#g){const e=this.#g;let t;for(;t=e?.shift();)this.#i?.(...t)}}}#k(e){const t=this.#h,r=this.#u[t],n=this.#l[t];return this.#w&&this.#S(n)?n.__abortController.abort(new Error("evicted")):(this.#_||this.#T)&&(this.#_&&this.#n?.(n,r,"evict"),this.#T&&this.#g?.push([n,r,"evict"])),this.#C(t),e&&(this.#u[t]=void 0,this.#l[t]=void 0,this.#y.push(t)),1===this.#o?(this.#h=this.#f=0,this.#y.length=0):this.#h=this.#d[t],this.#c.delete(r),this.#o--,t}has(e,t={}){const{updateAgeOnHas:r=this.updateAgeOnHas,status:n}=t,i=this.#c.get(e);if(void 0!==i){const e=this.#l[i];if(this.#S(e)&&void 0===e.__staleWhileFetching)return!1;if(!this.#R(i))return r&&this.#D(i),n&&(n.has="hit",this.#j(n,i)),!0;n&&(n.has="stale",this.#j(n,i))}else n&&(n.has="miss");return!1}peek(e,t={}){const{allowStale:r=this.allowStale}=t,n=this.#c.get(e);if(void 0===n||!r&&this.#R(n))return;const i=this.#l[n];return this.#S(i)?i.__staleWhileFetching:i}#O(e,t,r,n){const i=void 0===t?void 0:this.#l[t];if(this.#S(i))return i;const a=new o,{signal:s}=r;s?.addEventListener("abort",(()=>a.abort(s.reason)),{signal:a.signal});const c={signal:a.signal,options:r,context:n},u=(n,i=!1)=>{const{aborted:o}=a.signal,s=r.ignoreFetchAbort&&void 0!==n;if(r.status&&(o&&!i?(r.status.fetchAborted=!0,r.status.fetchError=a.signal.reason,s&&(r.status.fetchAbortIgnored=!0)):r.status.fetchResolved=!0),o&&!s&&!i)return l(a.signal.reason);const u=d;return this.#l[t]===d&&(void 0===n?u.__staleWhileFetching?this.#l[t]=u.__staleWhileFetching:this.delete(e):(r.status&&(r.status.fetchUpdated=!0),this.set(e,n,c.options))),n},l=n=>{const{aborted:i}=a.signal,o=i&&r.allowStaleOnFetchAbort,s=o||r.allowStaleOnFetchRejection,c=s||r.noDeleteOnFetchRejection,u=d;if(this.#l[t]===d&&(c&&void 0!==u.__staleWhileFetching?o||(this.#l[t]=u.__staleWhileFetching):this.delete(e)),s)return r.status&&void 0!==u.__staleWhileFetching&&(r.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw n};r.status&&(r.status.fetchDispatched=!0);const d=new Promise(((t,n)=>{const o=this.#a?.(e,i,c);o&&o instanceof Promise&&o.then((e=>t(void 0===e?void 0:e)),n),a.signal.addEventListener("abort",(()=>{r.ignoreFetchAbort&&!r.allowStaleOnFetchAbort||(t(void 0),r.allowStaleOnFetchAbort&&(t=e=>u(e,!0)))}))})).then(u,(e=>(r.status&&(r.status.fetchRejected=!0,r.status.fetchError=e),l(e)))),p=Object.assign(d,{__abortController:a,__staleWhileFetching:i,__returned:void 0});return void 0===t?(this.set(e,p,{...c.options,status:void 0}),t=this.#c.get(e)):this.#l[t]=p,p}#S(e){if(!this.#w)return!1;const t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof o}async fetch(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:i=this.noDeleteOnStaleGet,ttl:a=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:s=0,sizeCalculation:c=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:l=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:p=this.ignoreFetchAbort,allowStaleOnFetchAbort:h=this.allowStaleOnFetchAbort,context:f,forceRefresh:y=!1,status:g,signal:m}=t;if(!this.#w)return g&&(g.fetch="get"),this.get(e,{allowStale:r,updateAgeOnGet:n,noDeleteOnStaleGet:i,status:g});const b={allowStale:r,updateAgeOnGet:n,noDeleteOnStaleGet:i,ttl:a,noDisposeOnSet:o,size:s,sizeCalculation:c,noUpdateTTL:u,noDeleteOnFetchRejection:l,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:h,ignoreFetchAbort:p,status:g,signal:m};let v=this.#c.get(e);if(void 0===v){g&&(g.fetch="miss");const t=this.#O(e,v,b,f);return t.__returned=t}{const t=this.#l[v];if(this.#S(t)){const e=r&&void 0!==t.__staleWhileFetching;return g&&(g.fetch="inflight",e&&(g.returnedStale=!0)),e?t.__staleWhileFetching:t.__returned=t}const i=this.#R(v);if(!y&&!i)return g&&(g.fetch="hit"),this.#E(v),n&&this.#D(v),g&&this.#j(g,v),t;const a=this.#O(e,v,b,f),o=void 0!==a.__staleWhileFetching&&r;return g&&(g.fetch=i?"stale":"refresh",o&&i&&(g.returnedStale=!0)),o?a.__staleWhileFetching:a.__returned=a}}get(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:i=this.noDeleteOnStaleGet,status:a}=t,o=this.#c.get(e);if(void 0!==o){const t=this.#l[o],s=this.#S(t);return a&&this.#j(a,o),this.#R(o)?(a&&(a.get="stale"),s?(a&&r&&void 0!==t.__staleWhileFetching&&(a.returnedStale=!0),r?t.__staleWhileFetching:void 0):(i||this.delete(e),a&&r&&(a.returnedStale=!0),r?t:void 0)):(a&&(a.get="hit"),s?t.__staleWhileFetching:(this.#E(o),n&&this.#D(o),t))}a&&(a.get="miss")}#B(e,t){this.#p[t]=e,this.#d[e]=t}#E(e){e!==this.#f&&(e===this.#h?this.#h=this.#d[e]:this.#B(this.#p[e],this.#d[e]),this.#B(this.#f,e),this.#f=e)}delete(e){let t=!1;if(0!==this.#o){const r=this.#c.get(e);if(void 0!==r)if(t=!0,1===this.#o)this.clear();else{this.#C(r);const t=this.#l[r];if(this.#S(t)?t.__abortController.abort(new Error("deleted")):(this.#_||this.#T)&&(this.#_&&this.#n?.(t,e,"delete"),this.#T&&this.#g?.push([t,e,"delete"])),this.#c.delete(e),this.#u[r]=void 0,this.#l[r]=void 0,r===this.#f)this.#f=this.#p[r];else if(r===this.#h)this.#h=this.#d[r];else{const e=this.#p[r];this.#d[e]=this.#d[r];const t=this.#d[r];this.#p[t]=this.#p[r]}this.#o--,this.#y.push(r)}}if(this.#T&&this.#g?.length){const e=this.#g;let t;for(;t=e?.shift();)this.#i?.(...t)}return t}clear(){for(const e of this.#A({allowStale:!0})){const t=this.#l[e];if(this.#S(t))t.__abortController.abort(new Error("deleted"));else{const r=this.#u[e];this.#_&&this.#n?.(t,r,"delete"),this.#T&&this.#g?.push([t,r,"delete"])}}if(this.#c.clear(),this.#l.fill(void 0),this.#u.fill(void 0),this.#v&&this.#b&&(this.#v.fill(0),this.#b.fill(0)),this.#m&&this.#m.fill(0),this.#h=0,this.#f=0,this.#y.length=0,this.#s=0,this.#o=0,this.#T&&this.#g){const e=this.#g;let t;for(;t=e?.shift();)this.#i?.(...t)}}}t.LRUCache=p},12037:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.readableFromWeb=t.ReadableFromWeb=void 0;const n=r(58521);class i extends n.Readable{constructor(e,t){super(t),this.reader=e.getReader(),this.readerClosed=!1,this.reader.closed.then((()=>{this.readerClosed=!0})).catch((e=>{this.readerClosed=!0,this.destroy(e)}))}_read(){this.reader.read().then((e=>this.push(e.done?null:e.value))).catch((e=>this.destroy(e)))}destroy(e){return this.readerClosed||this.reader.cancel(e).then().catch((()=>{})),super.destroy(e)}}t.ReadableFromWeb=i,t.readableFromWeb=function(e,t){return new i(e,t)}},33523:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.readableFromWeb=void 0;var n=r(12037);Object.defineProperty(t,"readableFromWeb",{enumerable:!0,get:function(){return n.readableFromWeb}})},94066:e=>{"use strict";e.exports=JSON.parse('{"http://schema.org/":{"properties":{"additionalType":{"subPropertyOf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type"}}},"http://microformats.org/profile/hcard":{}}')},45497:e=>{"use strict";e.exports=JSON.parse('{"@context":{"alternate":"http://www.w3.org/1999/xhtml/vocab#alternate","appendix":"http://www.w3.org/1999/xhtml/vocab#appendix","cite":"http://www.w3.org/1999/xhtml/vocab#cite","bookmark":"http://www.w3.org/1999/xhtml/vocab#bookmark","contents":"http://www.w3.org/1999/xhtml/vocab#contents","chapter":"http://www.w3.org/1999/xhtml/vocab#chapter","copyright":"http://www.w3.org/1999/xhtml/vocab#copyright","first":"http://www.w3.org/1999/xhtml/vocab#first","glossary":"http://www.w3.org/1999/xhtml/vocab#glossary","help":"http://www.w3.org/1999/xhtml/vocab#help","icon":"http://www.w3.org/1999/xhtml/vocab#icon","index":"http://www.w3.org/1999/xhtml/vocab#index","last":"http://www.w3.org/1999/xhtml/vocab#last","license":"http://www.w3.org/1999/xhtml/vocab#license","meta":"http://www.w3.org/1999/xhtml/vocab#meta","next":"http://www.w3.org/1999/xhtml/vocab#next","prev":"http://www.w3.org/1999/xhtml/vocab#prev","previous":"http://www.w3.org/1999/xhtml/vocab#previous","section":"http://www.w3.org/1999/xhtml/vocab#section","start":"http://www.w3.org/1999/xhtml/vocab#start","stylesheet":"http://www.w3.org/1999/xhtml/vocab#stylesheet","subsection":"http://www.w3.org/1999/xhtml/vocab#subsection","top":"http://www.w3.org/1999/xhtml/vocab#top","up":"http://www.w3.org/1999/xhtml/vocab#up","p3pv1":"http://www.w3.org/1999/xhtml/vocab#p3pv1"}}')},68713:e=>{"use strict";e.exports=JSON.parse('{"@context":{"as":"https://www.w3.org/ns/activitystreams#","cat":"http://www.w3.org/ns/dcat#","cc":"http://creativecommons.org/ns#","cnt":"http://www.w3.org/2008/content#","csvw":"http://www.w3.org/ns/csvw#","ctag":"http://commontag.org/ns#","dc":"http://purl.org/dc/terms/","dc11":"http://purl.org/dc/elements/1.1/","dcat":"http://www.w3.org/ns/dcat#","dcterms":"http://purl.org/dc/terms/","dqv":"http://www.w3.org/ns/dqv#","duv":"https://www.w3.org/TR/vocab-duv#","earl":"http://www.w3.org/ns/earl#","foaf":"http://xmlns.com/foaf/0.1/","gldp":"http://www.w3.org/ns/people#","gr":"http://purl.org/goodrelations/v1#","grddl":"http://www.w3.org/2003/g/data-view#","ht":"http://www.w3.org/2006/http#","ical":"http://www.w3.org/2002/12/cal/icaltzd#","ldp":"http://www.w3.org/ns/ldp#","ma":"http://www.w3.org/ns/ma-ont#","oa":"http://www.w3.org/ns/oa#","odrl":"http://www.w3.org/ns/odrl/2/","og":"http://ogp.me/ns#","org":"http://www.w3.org/ns/org#","owl":"http://www.w3.org/2002/07/owl#","prov":"http://www.w3.org/ns/prov#","ptr":"http://www.w3.org/2009/pointers#","qb":"http://purl.org/linked-data/cube#","rev":"http://purl.org/stuff/rev#","rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdfa":"http://www.w3.org/ns/rdfa#","rdfs":"http://www.w3.org/2000/01/rdf-schema#","rif":"http://www.w3.org/2007/rif#","rr":"http://www.w3.org/ns/r2rml#","schema":"http://schema.org/","sd":"http://www.w3.org/ns/sparql-service-description#","sioc":"http://rdfs.org/sioc/ns#","skos":"http://www.w3.org/2004/02/skos/core#","skosxl":"http://www.w3.org/2008/05/skos-xl#","ssn":"http://www.w3.org/ns/ssn/","sosa":"http://www.w3.org/ns/sosa/","time":"http://www.w3.org/2006/time#","v":"http://rdf.data-vocabulary.org/#","vcard":"http://www.w3.org/2006/vcard/ns#","void":"http://rdfs.org/ns/void#","wdr":"http://www.w3.org/2007/05/powder#","wdrs":"http://www.w3.org/2007/05/powder-s#","xhv":"http://www.w3.org/1999/xhtml/vocab#","xml":"http://www.w3.org/XML/1998/namespace","xsd":"http://www.w3.org/2001/XMLSchema#","describedby":"http://www.w3.org/2007/05/powder-s#describedby","license":"http://www.w3.org/1999/xhtml/vocab#license","role":"http://www.w3.org/1999/xhtml/vocab#role"}}')}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,r),a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n=r(90128);Comunica=n})(); +var Comunica;(()=>{var e={36885:(e,t,r)=>{var{Buffer:n}=r(1048),a={},o=a.LEFT_BRACE=1,s=a.RIGHT_BRACE=2,c=a.LEFT_BRACKET=3,u=a.RIGHT_BRACKET=4,l=a.COLON=5,d=a.COMMA=6,p=a.TRUE=7,h=a.FALSE=8,f=a.NULL=9,y=a.STRING=10,g=a.NUMBER=11,m=a.START=17,b=a.STOP=18,v=a.TRUE1=33,_=a.TRUE2=34,w=a.TRUE3=35,T=a.FALSE1=49,S=a.FALSE2=50,O=a.FALSE3=51,E=a.FALSE4=52,x=a.NULL1=65,A=a.NULL2=66,R=a.NULL3=67,I=a.NUMBER1=81,P=a.NUMBER3=83,N=a.STRING1=97,D=a.STRING2=98,j=a.STRING3=99,C=a.STRING4=100,M=a.STRING5=101,L=a.STRING6=102,k=a.VALUE=113,F=a.KEY=114,B=a.OBJECT=129,U=a.ARRAY=130,q="\\".charCodeAt(0),V="/".charCodeAt(0),Q="\b".charCodeAt(0),$="\f".charCodeAt(0),H="\n".charCodeAt(0),G="\r".charCodeAt(0),z="\t".charCodeAt(0),K=65536;function X(e){return n.alloc?n.alloc(e):new n(e)}function J(){this.tState=m,this.value=void 0,this.string=void 0,this.stringBuffer=X(K),this.stringBufferOffset=0,this.unicode=void 0,this.highSurrogate=void 0,this.key=void 0,this.mode=void 0,this.stack=[],this.state=k,this.bytes_remaining=0,this.bytes_in_sequence=0,this.temp_buffs={2:X(2),3:X(3),4:X(4)},this.offset=-1}J.toknam=function(e){for(var t=Object.keys(a),r=0,n=t.length;r=K&&(this.string+=this.stringBuffer.toString("utf8"),this.stringBufferOffset=0),this.stringBuffer[this.stringBufferOffset++]=e},W.appendStringBuf=function(e,t,r){var n=e.length;"number"==typeof t&&(n="number"==typeof r?r<0?e.length-t+r:r-t:e.length-t),n<0&&(n=0),this.stringBufferOffset+n>K&&(this.string+=this.stringBuffer.toString("utf8",0,this.stringBufferOffset),this.stringBufferOffset=0),e.copy(this.stringBuffer,this.stringBufferOffset,t,r),this.stringBufferOffset+=n},W.write=function(e){var t;"string"==typeof e&&(e=new n(e));for(var r=0,i=e.length;r=48&&t<64)this.string=String.fromCharCode(t),this.tState=P;else if(32!==t&&9!==t&&10!==t&&13!==t)return this.charError(e,r)}else if(this.tState===N)if(t=e[r],this.bytes_remaining>0){for(var a=0;a=128){if(t<=193||t>244)return this.onError(new Error("Invalid UTF-8 character at position "+r+" in state "+J.toknam(this.tState)));if(t>=194&&t<=223&&(this.bytes_in_sequence=2),t>=224&&t<=239&&(this.bytes_in_sequence=3),t>=240&&t<=244&&(this.bytes_in_sequence=4),this.bytes_in_sequence+r>e.length){for(var g=0;g<=e.length-1-r;g++)this.temp_buffs[this.bytes_in_sequence][g]=e[r+g];this.bytes_remaining=r+this.bytes_in_sequence-e.length,r=e.length-1}else this.appendStringBuf(e,r,r+this.bytes_in_sequence),r=r+this.bytes_in_sequence-1}else if(34===t)this.tState=m,this.string+=this.stringBuffer.toString("utf8",0,this.stringBufferOffset),this.stringBufferOffset=0,this.onToken(y,this.string),this.offset+=n.byteLength(this.string,"utf8")+1,this.string=void 0;else if(92===t)this.tState=D;else{if(!(t>=32))return this.charError(e,r);this.appendStringChar(t)}else if(this.tState===D)if(34===(t=e[r]))this.appendStringChar(t),this.tState=N;else if(92===t)this.appendStringChar(q),this.tState=N;else if(47===t)this.appendStringChar(V),this.tState=N;else if(98===t)this.appendStringChar(Q),this.tState=N;else if(102===t)this.appendStringChar($),this.tState=N;else if(110===t)this.appendStringChar(H),this.tState=N;else if(114===t)this.appendStringChar(G),this.tState=N;else if(116===t)this.appendStringChar(z),this.tState=N;else{if(117!==t)return this.charError(e,r);this.unicode="",this.tState=j}else if(this.tState===j||this.tState===C||this.tState===M||this.tState===L){if(!((t=e[r])>=48&&t<64||t>64&&t<=70||t>96&&t<=102))return this.charError(e,r);if(this.unicode+=String.fromCharCode(t),this.tState++===L){var b=parseInt(this.unicode,16);this.unicode=void 0,void 0!==this.highSurrogate&&b>=56320&&b<57344?(this.appendStringBuf(new n(String.fromCharCode(this.highSurrogate,b))),this.highSurrogate=void 0):void 0===this.highSurrogate&&b>=55296&&b<56320?this.highSurrogate=b:(void 0!==this.highSurrogate&&(this.appendStringBuf(new n(String.fromCharCode(this.highSurrogate))),this.highSurrogate=void 0),this.appendStringBuf(new n(String.fromCharCode(b)))),this.tState=N}}else if(this.tState===I||this.tState===P)switch(t=e[r]){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 46:case 101:case 69:case 43:case 45:this.string+=String.fromCharCode(t),this.tState=P;break;default:this.tState=m;var k=this.numberReviver(this.string);if(k)return k;this.offset+=this.string.length-1,this.string=void 0,r--}else if(this.tState===v){if(114!==e[r])return this.charError(e,r);this.tState=_}else if(this.tState===_){if(117!==e[r])return this.charError(e,r);this.tState=w}else if(this.tState===w){if(101!==e[r])return this.charError(e,r);this.tState=m,this.onToken(p,!0),this.offset+=3}else if(this.tState===T){if(97!==e[r])return this.charError(e,r);this.tState=S}else if(this.tState===S){if(108!==e[r])return this.charError(e,r);this.tState=O}else if(this.tState===O){if(115!==e[r])return this.charError(e,r);this.tState=E}else if(this.tState===E){if(101!==e[r])return this.charError(e,r);this.tState=m,this.onToken(h,!1),this.offset+=4}else if(this.tState===x){if(117!==e[r])return this.charError(e,r);this.tState=A}else if(this.tState===A){if(108!==e[r])return this.charError(e,r);this.tState=R}else if(this.tState===R){if(108!==e[r])return this.charError(e,r);this.tState=m,this.onToken(f,null),this.offset+=3}},W.onToken=function(e,t){},W.parseError=function(e,t){this.tState=b,this.onError(new Error("Unexpected "+J.toknam(e)+(t?"("+JSON.stringify(t)+")":"")+" in state "+J.toknam(this.state)))},W.push=function(){this.stack.push({value:this.value,key:this.key,mode:this.mode})},W.pop=function(){var e=this.value,t=this.stack.pop();this.value=t.value,this.key=t.key,this.mode=t.mode,this.emit(e),this.mode||(this.state=k)},W.emit=function(e){this.mode&&(this.state=d),this.onValue(e)},W.onValue=function(e){},W.onToken=function(e,t){if(this.state===k)if(e===y||e===g||e===p||e===h||e===f)this.value&&(this.value[this.key]=t),this.emit(t);else if(e===o)this.push(),this.value?this.value=this.value[this.key]={}:this.value={},this.key=void 0,this.state=F,this.mode=B;else if(e===c)this.push(),this.value?this.value=this.value[this.key]=[]:this.value=[],this.key=0,this.mode=U,this.state=k;else if(e===s){if(this.mode!==B)return this.parseError(e,t);this.pop()}else{if(e!==u)return this.parseError(e,t);if(this.mode!==U)return this.parseError(e,t);this.pop()}else if(this.state===F)if(e===y)this.key=t,this.state=l;else{if(e!==s)return this.parseError(e,t);this.pop()}else if(this.state===l){if(e!==l)return this.parseError(e,t);this.state=k}else{if(this.state!==d)return this.parseError(e,t);if(e===d)this.mode===U?(this.key++,this.state=k):this.mode===B&&(this.state=F);else{if(!(e===u&&this.mode===U||e===s&&this.mode===B))return this.parseError(e,t);this.pop()}}},W.numberReviver=function(e){var t=Number(e);if(isNaN(t))return this.charError(buffer,i);e.match(/[0-9]+/)==e&&t.toString()!=e?this.onToken(y,e):this.onToken(g,t)},J.C=a,e.exports=J},64265:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fragment=void 0,t.fragment=function(e){let t=function(e){let t=e;(t.endsWith("/")||t.endsWith("#"))&&(t=t.slice(0,t.length-1));const r=[];t.lastIndexOf("/")>0&&r.push(t.lastIndexOf("/")),t.lastIndexOf("#")>0&&r.push(t.lastIndexOf("#"));const n=Math.max(...r);return t.slice(n+1)}(e);return t=t?function(e){var t;const r=null===(t=e.split(/[^a-z0-9]+/gi).filter((e=>""!==e)).map((e=>e[0].toUpperCase()+e.slice(1))).join("").match(/[a-z][a-z0-9]+/gi))||void 0===t?void 0:t[0];return void 0===r?void 0:r[0].toLowerCase()+r.slice(1)}(t):void 0,t||"v"}},37669:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.lookupAllPrefixes=t.prefixToUri=t.uriToPrefix=void 0;const i=r(64265),a=r(30376);t.uriToPrefix=function(e,t){return n(this,void 0,void 0,(function*(){let r;try{r=yield(0,a.lookupPrefix)(e,t)}catch(n){(null==t?void 0:t.mintOnUnknown)&&(r=(0,i.fragment)(e).slice(0,4))}if(void 0!==r&&"object"==typeof(null==t?void 0:t.existingPrefixes)&&r in t.existingPrefixes){let e=0;for(;`${r}${e}`in t.existingPrefixes;)e+=1;r=`${r}${e}`}return r}))},t.prefixToUri=function(e,t){return n(this,void 0,void 0,(function*(){try{return yield(0,a.lookupUri)(e,t)}catch(e){return}}))};var o=r(30376);Object.defineProperty(t,"lookupAllPrefixes",{enumerable:!0,get:function(){return o.lookupAllPrefixes}})},87173:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.fetchContext=t.fetchJson=void 0;const i=r(99766);function a(e,t){var r;return n(this,void 0,void 0,(function*(){const n=null!==(r=null==t?void 0:t.fetch)&&void 0!==r?r:i.fetch;return(yield n(e)).json()}))}t.fetchJson=a,t.fetchContext=function(e,t){return n(this,void 0,void 0,(function*(){return(yield a(e,t))["@context"]}))}},30376:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(12257),t),i(r(39268),t),i(r(91661),t)},91661:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.lookupAllPrefixes=void 0;const i=r(87173);t.lookupAllPrefixes=function(e){return n(this,void 0,void 0,(function*(){return(0,i.fetchContext)("https://prefix.cc/context",e)}))}},12257:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.lookupUri=void 0;const i=r(87173);t.lookupUri=function(e,t){return n(this,void 0,void 0,(function*(){const r=(yield(0,i.fetchContext)(`https://prefix.cc/${e}.file.jsonld`,t))[e];if("string"!=typeof r)throw new Error(`Expected uri to be a string, received: ${r} of type ${typeof r}`);return r}))}},39268:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.lookupPrefix=void 0;const i=r(87173);t.lookupPrefix=function(e,t){return n(this,void 0,void 0,(function*(){const r=new URL("https://prefix.cc/reverse");r.searchParams.append("uri",e),r.searchParams.append("format","jsonld");const n=Object.keys(yield(0,i.fetchContext)(r,t));if(0===n.length)throw new Error("No prefixes returned");return n[0]}))}},99766:function(e,t){var r="undefined"!=typeof self?self:this,n=function(){function e(){this.fetch=!1,this.DOMException=r.DOMException}return e.prototype=r,new e}();!function(e){!function(t){var r="URLSearchParams"in e,n="Symbol"in e&&"iterator"in Symbol,i="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),a="FormData"in e,o="ArrayBuffer"in e;if(o)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function u(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function l(e){return"string"!=typeof e&&(e=String(e)),e}function d(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function p(e){this.map={},e instanceof p?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function h(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function f(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function y(e){var t=new FileReader,r=f(t);return t.readAsArrayBuffer(e),r}function g(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:i&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:a&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:r&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():o&&i&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=g(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):o&&(ArrayBuffer.prototype.isPrototypeOf(e)||c(e))?this._bodyArrayBuffer=g(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var e=h(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?h(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(y)}),this.text=function(){var e,t,r,n=h(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,r=f(t=new FileReader),t.readAsText(e),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?n:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function _(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function w(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new p(t.headers),this.url=t.url||"",this._initBody(e)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},m.call(v.prototype),m.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},w.error=function(){var e=new w(null,{status:0,statusText:""});return e.type="error",e};var T=[301,302,303,307,308];w.redirect=function(e,t){if(-1===T.indexOf(t))throw new RangeError("Invalid status code");return new w(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function S(e,r){return new Promise((function(n,a){var o=new v(e,r);if(o.signal&&o.signal.aborted)return a(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function c(){s.abort()}s.onload=function(){var e,t,r={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new p,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t)};r.url="responseURL"in s?s.responseURL:r.headers.get("X-Request-URL");var i="response"in s?s.response:s.responseText;n(new w(i,r))},s.onerror=function(){a(new TypeError("Network request failed"))},s.ontimeout=function(){a(new TypeError("Network request failed"))},s.onabort=function(){a(new t.DOMException("Aborted","AbortError"))},s.open(o.method,o.url,!0),"include"===o.credentials?s.withCredentials=!0:"omit"===o.credentials&&(s.withCredentials=!1),"responseType"in s&&i&&(s.responseType="blob"),o.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),o.signal&&(o.signal.addEventListener("abort",c),s.onreadystatechange=function(){4===s.readyState&&o.signal.removeEventListener("abort",c)}),s.send(void 0===o._bodyInit?null:o._bodyInit)}))}S.polyfill=!0,e.fetch||(e.fetch=S,e.Headers=p,e.Request=v,e.Response=w),t.Headers=p,t.Request=v,t.Response=w,t.fetch=S,Object.defineProperty(t,"__esModule",{value:!0})}({})}(n),n.fetch.ponyfill=!0,delete n.fetch.polyfill;var i=n;(t=i.fetch).default=i.fetch,t.fetch=i.fetch,t.Headers=i.Headers,t.Request=i.Request,t.Response=i.Response,e.exports=t},31759:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.stringify=function(e){return n(this,void 0,void 0,(function*(){let t="";return e.on("data",(e=>{t+=e})),yield(0,i.promisifyEventEmitter)(e),t}))};const i=r(35033)},49126:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SaxesParser=t.EVENTS=void 0;const n=r(94824),i=r(30718),a=r(26457);var o=n.isS,s=n.isChar,c=n.isNameStartChar,u=n.isNameChar,l=n.S_LIST,d=n.NAME_RE,p=i.isChar,h=a.isNCNameStartChar,f=a.isNCNameChar,y=a.NC_NAME_RE;const g="http://www.w3.org/XML/1998/namespace",m="http://www.w3.org/2000/xmlns/",b={__proto__:null,xml:g,xmlns:m},v={__proto__:null,amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},_=-1,w=-2,T=13,S=33,O=10,E=60,x=61,A=62,R=63,I=93,P=e=>34===e||39===e,N=[34,39],D=[...N,91,A],j=[...N,E,I],C=[x,R,...l],M=[...l,A,38,E];function L(e,t,r){switch(t){case"xml":r!==g&&e.fail(`xml prefix must be bound to ${g}.`);break;case"xmlns":r!==m&&e.fail(`xmlns prefix must be bound to ${m}.`)}switch(r){case m:e.fail(""===t?`the default namespace may not be set to ${r}.`:`may not assign a prefix (even "xmlns") to the URI ${m}.`);break;case g:switch(t){case"xml":break;case"":e.fail(`the default namespace may not be set to ${r}.`);break;default:e.fail("may not assign the xml namespace to another prefix.")}}}const k=e=>y.test(e),F=e=>d.test(e);t.EVENTS=["xmldecl","text","processinginstruction","doctype","comment","opentagstart","attribute","opentag","closetag","cdata","error","end","ready"];const B={xmldecl:"xmldeclHandler",text:"textHandler",processinginstruction:"piHandler",doctype:"doctypeHandler",comment:"commentHandler",opentagstart:"openTagStartHandler",attribute:"attributeHandler",opentag:"openTagHandler",closetag:"closeTagHandler",cdata:"cdataHandler",error:"errorHandler",end:"endHandler",ready:"readyHandler"};t.SaxesParser=class{get closed(){return this._closed}constructor(e){this.opt=null!=e?e:{},this.fragmentOpt=!!this.opt.fragment;const t=this.xmlnsOpt=!!this.opt.xmlns;if(this.trackPosition=!1!==this.opt.position,this.fileName=this.opt.fileName,t){this.nameStartCheck=h,this.nameCheck=f,this.isName=k,this.processAttribs=this.processAttribsNS,this.pushAttrib=this.pushAttribNS,this.ns=Object.assign({__proto__:null},b);const e=this.opt.additionalNamespaces;null!=e&&(function(e,t){for(const r of Object.keys(t))L(e,r,t[r])}(this,e),Object.assign(this.ns,e))}else this.nameStartCheck=c,this.nameCheck=u,this.isName=F,this.processAttribs=this.processAttribsPlain,this.pushAttrib=this.pushAttribPlain;this.stateTable=[this.sBegin,this.sBeginWhitespace,this.sDoctype,this.sDoctypeQuote,this.sDTD,this.sDTDQuoted,this.sDTDOpenWaka,this.sDTDOpenWakaBang,this.sDTDComment,this.sDTDCommentEnding,this.sDTDCommentEnded,this.sDTDPI,this.sDTDPIEnding,this.sText,this.sEntity,this.sOpenWaka,this.sOpenWakaBang,this.sComment,this.sCommentEnding,this.sCommentEnded,this.sCData,this.sCDataEnding,this.sCDataEnding2,this.sPIFirstChar,this.sPIRest,this.sPIBody,this.sPIEnding,this.sXMLDeclNameStart,this.sXMLDeclName,this.sXMLDeclEq,this.sXMLDeclValueStart,this.sXMLDeclValue,this.sXMLDeclSeparator,this.sXMLDeclEnding,this.sOpenTag,this.sOpenTagSlash,this.sAttrib,this.sAttribName,this.sAttribNameSawWhite,this.sAttribValue,this.sAttribValueQuoted,this.sAttribValueClosed,this.sAttribValueUnquoted,this.sCloseTag,this.sCloseTagSawWhite],this._init()}_init(){var e;this.openWakaBang="",this.text="",this.name="",this.piTarget="",this.entity="",this.q=null,this.tags=[],this.tag=null,this.topNS=null,this.chunk="",this.chunkPosition=0,this.i=0,this.prevI=0,this.carriedFromPrevious=void 0,this.forbiddenState=0,this.attribList=[];const{fragmentOpt:t}=this;this.state=t?T:0,this.reportedTextBeforeRoot=this.reportedTextAfterRoot=this.closedRoot=this.sawRoot=t,this.xmlDeclPossible=!t,this.xmlDeclExpects=["version"],this.entityReturnState=void 0;let{defaultXMLVersion:r}=this.opt;if(void 0===r){if(!0===this.opt.forceXMLVersion)throw new Error("forceXMLVersion set but defaultXMLVersion is not set");r="1.0"}this.setXMLVersion(r),this.positionAtNewLine=0,this.doctype=!1,this._closed=!1,this.xmlDecl={version:void 0,encoding:void 0,standalone:void 0},this.line=1,this.column=0,this.ENTITIES=Object.create(v),null===(e=this.readyHandler)||void 0===e||e.call(this)}get position(){return this.chunkPosition+this.i}get columnIndex(){return this.position-this.positionAtNewLine}on(e,t){this[B[e]]=t}off(e){this[B[e]]=void 0}makeError(e){var t;let r=null!==(t=this.fileName)&&void 0!==t?t:"";return this.trackPosition&&(r.length>0&&(r+=":"),r+=`${this.line}:${this.column}`),r.length>0&&(r+=": "),new Error(r+e)}fail(e){const t=this.makeError(e),r=this.errorHandler;if(void 0===r)throw t;return r(t),this}write(e){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");let t=!1;null===e?(t=!0,e=""):"object"==typeof e&&(e=e.toString()),void 0!==this.carriedFromPrevious&&(e=`${this.carriedFromPrevious}${e}`,this.carriedFromPrevious=void 0);let r=e.length;const n=e.charCodeAt(r-1);!t&&(13===n||n>=55296&&n<=56319)&&(this.carriedFromPrevious=e[r-1],r--,e=e.slice(0,r));const{stateTable:i}=this;for(this.chunk=e,this.i=0;this.i=e.length)return _;const r=e.charCodeAt(t);if(this.column++,r<55296){if(r>=32||9===r)return r;switch(r){case O:return this.line++,this.column=0,this.positionAtNewLine=this.position,O;case 13:return e.charCodeAt(t+1)===O&&(this.i=t+2),this.line++,this.column=0,this.positionAtNewLine=this.position,w;default:return this.fail("disallowed character."),r}}if(r>56319)return r>=57344&&r<=65533||this.fail("disallowed character."),r;const n=65536+1024*(r-55296)+(e.charCodeAt(t+1)-56320);return this.i=t+2,n>1114111&&this.fail("disallowed character."),n}getCode11(){const{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return _;const r=e.charCodeAt(t);if(this.column++,r<55296){if(r>31&&r<127||r>159&&8232!==r||9===r)return r;switch(r){case O:return this.line++,this.column=0,this.positionAtNewLine=this.position,O;case 13:{const r=e.charCodeAt(t+1);r!==O&&133!==r||(this.i=t+2)}case 133:case 8232:return this.line++,this.column=0,this.positionAtNewLine=this.position,w;default:return this.fail("disallowed character."),r}}if(r>56319)return r>=57344&&r<=65533||this.fail("disallowed character."),r;const n=65536+1024*(r-55296)+(e.charCodeAt(t+1)-56320);return this.i=t+2,n>1114111&&this.fail("disallowed character."),n}getCodeNorm(){const e=this.getCode();return e===w?O:e}unget(){this.i=this.prevI,this.column--}captureTo(e){let{i:t}=this;const{chunk:r}=this;for(;;){const n=this.getCode(),i=n===w,a=i?O:n;if(a===_||e.includes(a))return this.text+=r.slice(t,this.prevI),a;i&&(this.text+=`${r.slice(t,this.prevI)}\n`,t=this.i)}}captureToChar(e){let{i:t}=this;const{chunk:r}=this;for(;;){let n=this.getCode();switch(n){case w:this.text+=`${r.slice(t,this.prevI)}\n`,t=this.i,n=O;break;case _:return this.text+=r.slice(t),!1}if(n===e)return this.text+=r.slice(t,this.prevI),!0}}captureNameChars(){const{chunk:e,i:t}=this;for(;;){const r=this.getCode();if(r===_)return this.name+=e.slice(t),_;if(!u(r))return this.name+=e.slice(t,this.prevI),r===w?O:r}}skipSpaces(){for(;;){const e=this.getCodeNorm();if(e===_||!o(e))return e}}setXMLVersion(e){this.currentXMLVersion=e,"1.0"===e?(this.isChar=s,this.getCode=this.getCode10):(this.isChar=p,this.getCode=this.getCode11)}sBegin(){65279===this.chunk.charCodeAt(0)&&(this.i++,this.column++),this.state=1}sBeginWhitespace(){const e=this.i,t=this.skipSpaces();switch(this.prevI!==e&&(this.xmlDeclPossible=!1),t){case E:if(this.state=15,0!==this.text.length)throw new Error("no-empty text at start");break;case _:break;default:this.unget(),this.state=T,this.xmlDeclPossible=!1}}sDoctype(){var e;const t=this.captureTo(D);switch(t){case A:null===(e=this.doctypeHandler)||void 0===e||e.call(this,this.text),this.text="",this.state=T,this.doctype=!0;break;case _:break;default:this.text+=String.fromCodePoint(t),91===t?this.state=4:P(t)&&(this.state=3,this.q=t)}}sDoctypeQuote(){const e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.q=null,this.state=2)}sDTD(){const e=this.captureTo(j);e!==_&&(this.text+=String.fromCodePoint(e),e===I?this.state=2:e===E?this.state=6:P(e)&&(this.state=5,this.q=e))}sDTDQuoted(){const e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.state=4,this.q=null)}sDTDOpenWaka(){const e=this.getCodeNorm();switch(this.text+=String.fromCodePoint(e),e){case 33:this.state=7,this.openWakaBang="";break;case R:this.state=11;break;default:this.state=4}}sDTDOpenWakaBang(){const e=String.fromCodePoint(this.getCodeNorm()),t=this.openWakaBang+=e;this.text+=e,"-"!==t&&(this.state="--"===t?8:4,this.openWakaBang="")}sDTDComment(){this.captureToChar(45)&&(this.text+="-",this.state=9)}sDTDCommentEnding(){const e=this.getCodeNorm();this.text+=String.fromCodePoint(e),this.state=45===e?10:8}sDTDCommentEnded(){const e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===A?this.state=4:(this.fail("malformed comment."),this.state=8)}sDTDPI(){this.captureToChar(R)&&(this.text+="?",this.state=12)}sDTDPIEnding(){const e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===A&&(this.state=4)}sText(){0!==this.tags.length?this.handleTextInRoot():this.handleTextOutsideRoot()}sEntity(){let{i:e}=this;const{chunk:t}=this;e:for(;;)switch(this.getCode()){case w:this.entity+=`${t.slice(e,this.prevI)}\n`,e=this.i;break;case 59:{const{entityReturnState:r}=this,n=this.entity+t.slice(e,this.prevI);let i;this.state=r,""===n?(this.fail("empty entity name."),i="&;"):(i=this.parseEntity(n),this.entity=""),r===T&&void 0===this.textHandler||(this.text+=i);break e}case _:this.entity+=t.slice(e);break e}}sOpenWaka(){const e=this.getCode();if(c(e))this.state=34,this.unget(),this.xmlDeclPossible=!1;else switch(e){case 47:this.state=43,this.xmlDeclPossible=!1;break;case 33:this.state=16,this.openWakaBang="",this.xmlDeclPossible=!1;break;case R:this.state=23;break;default:this.fail("disallowed character in tag name"),this.state=T,this.xmlDeclPossible=!1}}sOpenWakaBang(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case"[CDATA[":this.sawRoot||this.reportedTextBeforeRoot||(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0),this.state=20,this.openWakaBang="";break;case"--":this.state=17,this.openWakaBang="";break;case"DOCTYPE":this.state=2,(this.doctype||this.sawRoot)&&this.fail("inappropriately located doctype declaration."),this.openWakaBang="";break;default:this.openWakaBang.length>=7&&this.fail("incorrect syntax.")}}sComment(){this.captureToChar(45)&&(this.state=18)}sCommentEnding(){var e;const t=this.getCodeNorm();45===t?(this.state=19,null===(e=this.commentHandler)||void 0===e||e.call(this,this.text),this.text=""):(this.text+=`-${String.fromCodePoint(t)}`,this.state=17)}sCommentEnded(){const e=this.getCodeNorm();e!==A?(this.fail("malformed comment."),this.text+=`--${String.fromCodePoint(e)}`,this.state=17):this.state=T}sCData(){this.captureToChar(I)&&(this.state=21)}sCDataEnding(){const e=this.getCodeNorm();e===I?this.state=22:(this.text+=`]${String.fromCodePoint(e)}`,this.state=20)}sCDataEnding2(){var e;const t=this.getCodeNorm();switch(t){case A:null===(e=this.cdataHandler)||void 0===e||e.call(this,this.text),this.text="",this.state=T;break;case I:this.text+="]";break;default:this.text+=`]]${String.fromCodePoint(t)}`,this.state=20}}sPIFirstChar(){const e=this.getCodeNorm();this.nameStartCheck(e)?(this.piTarget+=String.fromCodePoint(e),this.state=24):e===R||o(e)?(this.fail("processing instruction without a target."),this.state=e===R?26:25):(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(e),this.state=24)}sPIRest(){const{chunk:e,i:t}=this;for(;;){const r=this.getCodeNorm();if(r===_)return void(this.piTarget+=e.slice(t));if(!this.nameCheck(r)){this.piTarget+=e.slice(t,this.prevI);const n=r===R;n||o(r)?"xml"===this.piTarget?(this.xmlDeclPossible||this.fail("an XML declaration must be at the start of the document."),this.state=n?S:27):this.state=n?26:25:(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(r));break}}}sPIBody(){if(0===this.text.length){const e=this.getCodeNorm();e===R?this.state=26:o(e)||(this.text=String.fromCodePoint(e))}else this.captureToChar(R)&&(this.state=26)}sPIEnding(){var e;const t=this.getCodeNorm();if(t===A){const{piTarget:t}=this;"xml"===t.toLowerCase()&&this.fail("the XML declaration must appear at the start of the document."),null===(e=this.piHandler)||void 0===e||e.call(this,{target:t,body:this.text}),this.piTarget=this.text="",this.state=T}else t===R?this.text+="?":(this.text+=`?${String.fromCodePoint(t)}`,this.state=25);this.xmlDeclPossible=!1}sXMLDeclNameStart(){const e=this.skipSpaces();e!==R?e!==_&&(this.state=28,this.name=String.fromCodePoint(e)):this.state=S}sXMLDeclName(){const e=this.captureTo(C);if(e===R)return this.state=S,this.name+=this.text,this.text="",void this.fail("XML declaration is incomplete.");if(o(e)||e===x){if(this.name+=this.text,this.text="",!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail("did not expect any more name/value pairs.");break;case 1:this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);break;default:this.fail(`expected one of ${this.xmlDeclExpects.join(", ")}`)}this.state=e===x?30:29}}sXMLDeclEq(){const e=this.getCodeNorm();if(e===R)return this.state=S,void this.fail("XML declaration is incomplete.");o(e)||(e!==x&&this.fail("value required."),this.state=30)}sXMLDeclValueStart(){const e=this.getCodeNorm();if(e===R)return this.state=S,void this.fail("XML declaration is incomplete.");o(e)||(P(e)?this.q=e:(this.fail("value must be quoted."),this.q=32),this.state=31)}sXMLDeclValue(){const e=this.captureTo([this.q,R]);if(e===R)return this.state=S,this.text="",void this.fail("XML declaration is incomplete.");if(e===_)return;const t=this.text;switch(this.text="",this.name){case"version":{this.xmlDeclExpects=["encoding","standalone"];const e=t;this.xmlDecl.version=e,/^1\.[0-9]+$/.test(e)?this.opt.forceXMLVersion||this.setXMLVersion(e):this.fail("version number must match /^1\\.[0-9]+$/.");break}case"encoding":/^[A-Za-z][A-Za-z0-9._-]*$/.test(t)||this.fail("encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/."),this.xmlDeclExpects=["standalone"],this.xmlDecl.encoding=t;break;case"standalone":"yes"!==t&&"no"!==t&&this.fail('standalone value must match "yes" or "no".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=t}this.name="",this.state=32}sXMLDeclSeparator(){const e=this.getCodeNorm();e!==R?(o(e)||(this.fail("whitespace required."),this.unget()),this.state=27):this.state=S}sXMLDeclEnding(){var e;this.getCodeNorm()===A?("xml"!==this.piTarget?this.fail("processing instructions are not allowed before root."):"version"!==this.name&&this.xmlDeclExpects.includes("version")&&this.fail("XML declaration must contain a version."),null===(e=this.xmldeclHandler)||void 0===e||e.call(this,this.xmlDecl),this.name="",this.piTarget=this.text="",this.state=T):this.fail("The character ? is disallowed anywhere in XML declarations."),this.xmlDeclPossible=!1}sOpenTag(){var e;const t=this.captureNameChars();if(t===_)return;const r=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name="",this.xmlnsOpt&&(this.topNS=r.ns=Object.create(null)),null===(e=this.openTagStartHandler)||void 0===e||e.call(this,r),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail("documents may contain only one root."),t){case A:this.openTag();break;case 47:this.state=35;break;default:o(t)||this.fail("disallowed character in tag name."),this.state=36}}sOpenTagSlash(){this.getCode()===A?this.openSelfClosingTag():(this.fail("forward-slash in opening tag not followed by >."),this.state=36)}sAttrib(){const e=this.skipSpaces();e!==_&&(c(e)?(this.unget(),this.state=37):e===A?this.openTag():47===e?this.state=35:this.fail("disallowed character in attribute name."))}sAttribName(){const e=this.captureNameChars();e===x?this.state=39:o(e)?this.state=38:e===A?(this.fail("attribute without value."),this.pushAttrib(this.name,this.name),this.name=this.text="",this.openTag()):e!==_&&this.fail("disallowed character in attribute name.")}sAttribNameSawWhite(){const e=this.skipSpaces();switch(e){case _:return;case x:this.state=39;break;default:this.fail("attribute without value."),this.text="",this.name="",e===A?this.openTag():c(e)?(this.unget(),this.state=37):(this.fail("disallowed character in attribute name."),this.state=36)}}sAttribValue(){const e=this.getCodeNorm();P(e)?(this.q=e,this.state=40):o(e)||(this.fail("unquoted attribute value."),this.state=42,this.unget())}sAttribValueQuoted(){const{q:e,chunk:t}=this;let{i:r}=this;for(;;)switch(this.getCode()){case e:return this.pushAttrib(this.name,this.text+t.slice(r,this.prevI)),this.name=this.text="",this.q=null,void(this.state=41);case 38:return this.text+=t.slice(r,this.prevI),this.state=14,void(this.entityReturnState=40);case O:case w:case 9:this.text+=`${t.slice(r,this.prevI)} `,r=this.i;break;case E:return this.text+=t.slice(r,this.prevI),void this.fail("disallowed character.");case _:return void(this.text+=t.slice(r))}}sAttribValueClosed(){const e=this.getCodeNorm();o(e)?this.state=36:e===A?this.openTag():47===e?this.state=35:c(e)?(this.fail("no whitespace between attributes."),this.unget(),this.state=37):this.fail("disallowed character in attribute name.")}sAttribValueUnquoted(){const e=this.captureTo(M);switch(e){case 38:this.state=14,this.entityReturnState=42;break;case E:this.fail("disallowed character.");break;case _:break;default:this.text.includes("]]>")&&this.fail('the string "]]>" is disallowed in char data.'),this.pushAttrib(this.name,this.text),this.name=this.text="",e===A?this.openTag():this.state=36}}sCloseTag(){const e=this.captureNameChars();e===A?this.closeTag():o(e)?this.state=44:e!==_&&this.fail("disallowed character in closing tag.")}sCloseTagSawWhite(){switch(this.skipSpaces()){case A:this.closeTag();break;case _:break;default:this.fail("disallowed character in closing tag.")}}handleTextInRoot(){let{i:e,forbiddenState:t}=this;const{chunk:r,textHandler:n}=this;e:for(;;)switch(this.getCode()){case E:if(this.state=15,void 0!==n){const{text:t}=this,i=r.slice(e,this.prevI);0!==t.length?(n(t+i),this.text=""):0!==i.length&&n(i)}t=0;break e;case 38:this.state=14,this.entityReturnState=T,void 0!==n&&(this.text+=r.slice(e,this.prevI)),t=0;break e;case I:switch(t){case 0:t=1;break;case 1:t=2;break;case 2:break;default:throw new Error("impossible state")}break;case A:2===t&&this.fail('the string "]]>" is disallowed in char data.'),t=0;break;case w:void 0!==n&&(this.text+=`${r.slice(e,this.prevI)}\n`),e=this.i,t=0;break;case _:void 0!==n&&(this.text+=r.slice(e));break e;default:t=0}this.forbiddenState=t}handleTextOutsideRoot(){let{i:e}=this;const{chunk:t,textHandler:r}=this;let n=!1;e:for(;;){const i=this.getCode();switch(i){case E:if(this.state=15,void 0!==r){const{text:n}=this,i=t.slice(e,this.prevI);0!==n.length?(r(n+i),this.text=""):0!==i.length&&r(i)}break e;case 38:this.state=14,this.entityReturnState=T,void 0!==r&&(this.text+=t.slice(e,this.prevI)),n=!0;break e;case w:void 0!==r&&(this.text+=`${t.slice(e,this.prevI)}\n`),e=this.i;break;case _:void 0!==r&&(this.text+=t.slice(e));break e;default:o(i)||(n=!0)}}n&&(this.sawRoot||this.reportedTextBeforeRoot||(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0))}pushAttribNS(e,t){var r;const{prefix:n,local:i}=this.qname(e),a={name:e,prefix:n,local:i,value:t};if(this.attribList.push(a),null===(r=this.attributeHandler)||void 0===r||r.call(this,a),"xmlns"===n){const e=t.trim();"1.0"===this.currentXMLVersion&&""===e&&this.fail("invalid attempt to undefine prefix in XML 1.0"),this.topNS[i]=e,L(this,i,e)}else if("xmlns"===e){const e=t.trim();this.topNS[""]=e,L(this,"",e)}}pushAttribPlain(e,t){var r;const n={name:e,value:t};this.attribList.push(n),null===(r=this.attributeHandler)||void 0===r||r.call(this,n)}end(){var e,t;this.sawRoot||this.fail("document must contain a root element.");const{tags:r}=this;for(;r.length>0;){const e=r.pop();this.fail(`unclosed tag: ${e.name}`)}0!==this.state&&this.state!==T&&this.fail("unexpected end.");const{text:n}=this;return 0!==n.length&&(null===(e=this.textHandler)||void 0===e||e.call(this,n),this.text=""),this._closed=!0,null===(t=this.endHandler)||void 0===t||t.call(this),this._init(),this}resolve(e){var t,r;let n=this.topNS[e];if(void 0!==n)return n;const{tags:i}=this;for(let t=i.length-1;t>=0;t--)if(n=i[t].ns[e],void 0!==n)return n;return n=this.ns[e],void 0!==n?n:null===(r=(t=this.opt).resolvePrefix)||void 0===r?void 0:r.call(t,e)}qname(e){const t=e.indexOf(":");if(-1===t)return{prefix:"",local:e};const r=e.slice(t+1),n=e.slice(0,t);return(""===n||""===r||r.includes(":"))&&this.fail(`malformed name: ${e}.`),{prefix:n,local:r}}processAttribsNS(){var e;const{attribList:t}=this,r=this.tag;{const{prefix:t,local:n}=this.qname(r.name);r.prefix=t,r.local=n;const i=r.uri=null!==(e=this.resolve(t))&&void 0!==e?e:"";""!==t&&("xmlns"===t&&this.fail('tags may not have "xmlns" as prefix.'),""===i&&(this.fail(`unbound namespace prefix: ${JSON.stringify(t)}.`),r.uri=t))}if(0===t.length)return;const{attributes:n}=r,i=new Set;for(const e of t){const{name:t,prefix:r,local:a}=e;let o,s;""===r?(o="xmlns"===t?m:"",s=t):(o=this.resolve(r),void 0===o&&(this.fail(`unbound namespace prefix: ${JSON.stringify(r)}.`),o=r),s=`{${o}}${a}`),i.has(s)&&this.fail(`duplicate attribute: ${s}.`),i.add(s),e.uri=o,n[t]=e}this.attribList=[]}processAttribsPlain(){const{attribList:e}=this,t=this.tag.attributes;for(const{name:r,value:n}of e)void 0!==t[r]&&this.fail(`duplicate attribute: ${r}.`),t[r]=n;this.attribList=[]}openTag(){var e;this.processAttribs();const{tags:t}=this,r=this.tag;r.isSelfClosing=!1,null===(e=this.openTagHandler)||void 0===e||e.call(this,r),t.push(r),this.state=T,this.name=""}openSelfClosingTag(){var e,t,r;this.processAttribs();const{tags:n}=this,i=this.tag;i.isSelfClosing=!0,null===(e=this.openTagHandler)||void 0===e||e.call(this,i),null===(t=this.closeTagHandler)||void 0===t||t.call(this,i),null===(this.tag=null!==(r=n[n.length-1])&&void 0!==r?r:null)&&(this.closedRoot=!0),this.state=T,this.name=""}closeTag(){const{tags:e,name:t}=this;if(this.state=T,this.name="",""===t)return this.fail("weird empty close tag."),void(this.text+="");const r=this.closeTagHandler;let n=e.length;for(;n-- >0;){const n=this.tag=e.pop();if(this.topNS=n.ns,null==r||r(n),n.name===t)break;this.fail("unexpected close tag.")}0===n?this.closedRoot=!0:n<0&&(this.fail(`unmatched closing tag: ${t}.`),this.text+=``)}parseEntity(e){if("#"!==e[0]){const t=this.ENTITIES[e];return void 0!==t?t:(this.fail(this.isName(e)?"undefined entity.":"disallowed character in entity name."),`&${e};`)}let t=NaN;return"x"===e[1]&&/^#x[0-9a-f]+$/i.test(e)?t=parseInt(e.slice(2),16):/^#[0-9]+$/.test(e)&&(t=parseInt(e.slice(1),10)),this.isChar(t)?String.fromCodePoint(t):(this.fail("malformed character entity."),`&${e};`)}}},52267:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReadableWebToNodeStream=void 0;const n=r(58521);class i extends n.Readable{constructor(e){super(),this.bytesRead=0,this.released=!1,this.reader=e.getReader()}async _read(){if(this.released)return void this.push(null);this.pendingRead=this.reader.read();const e=await this.pendingRead;delete this.pendingRead,e.done||this.released?this.push(null):(this.bytesRead+=e.value.length,this.push(e.value))}async waitForReadToComplete(){this.pendingRead&&await this.pendingRead}async close(){await this.syncAndRelease()}async syncAndRelease(){this.released=!0,await this.waitForReadToComplete(),await this.reader.releaseLock()}}t.ReadableWebToNodeStream=i},67083:e=>{"use strict";const{AbortController:t,AbortSignal:r}="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0;e.exports=t,e.exports.AbortSignal=r,e.exports.default=t},37754:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){const t=[];return r=e.on("data",(e=>t.push(e))),n=t,new Promise(((e,t)=>{r.on("end",(()=>e(n))),r.on("error",t)}));var r,n}},2922:(e,t,r)=>{const n=r(82815),i=r(30979),a=r(67458),o=r(21156),s=r(37841);e.exports={DynamicNestedLoopJoin:n,HashJoin:i,NestedLoopJoin:a,SymmetricHashJoin:o,MergeStream:s}},82815:(e,t,r)=>{let n=r(76664),i=n.MultiTransformIterator,a=n.SimpleTransformIterator;e.exports=class extends i{constructor(e,t,r,n){super(e,n),this.funRight=t,this.funJoin=r}_createTransformer(e){return new a(this.funRight(e),{transform:(t,r,n)=>{let i=this.funJoin(e,t);null!==i&&n(i),r()}})}}},30979:(e,t,r)=>{let n=r(76664).AsyncIterator;e.exports=class extends n{constructor(e,t,r,n){super(),this.addedDataListener=!1,this.left=e,this.right=t,this.funHash=r,this.funJoin=n,this.leftMap=new Map,this.match=null,this.matches=[],this.matchIdx=0,this.left.on("error",(e=>this.destroy(e))),this.right.on("error",(e=>this.destroy(e))),this.readable=!1,this.left.on("end",function(){this.readable=!0,this.right.on("readable",(()=>this.readable=!0)),this.right.on("end",(()=>{this.hasResults()||this._end()}))}.bind(this)),this.on("newListener",(e=>{"data"===e&&this._addDataListenerIfNeeded()})),this.left.readable&&this._addDataListenerIfNeeded(),this.left.on("readable",(()=>this._addDataListenerIfNeeded()))}hasResults(){return!this.right.ended||this.matchIdx{const{MultiTransformIterator:n,SimpleTransformIterator:i,scheduleTask:a}=r(76664);e.exports=class extends n{constructor(e,t,r,n){super(e,n),this.right=t,this.funJoin=r,this.on("end",(()=>this.right.close()))}_end(){super._end(),a((()=>this.right.destroy()))}_createTransformer(e){return new i(this.right.clone(),{transform:(t,r,n)=>{let i=this.funJoin(e,t);null!==i&&n(i),r()}})}}},21156:(e,t,r)=>{let n=r(76664).AsyncIterator;e.exports=class extends n{constructor(e,t,r,n){super(),this.left=e,this.right=t,this.funHash=r,this.funJoin=n,this.usedLeft=!1,this.leftMap=new Map,this.rightMap=new Map,this.on("end",(()=>this._cleanup())),this.match=null,this.matches=[],this.matchIdx=0,(this.left.readable||this.right.readable)&&(this.readable=!0),this.left.on("error",(e=>this.destroy(e))),this.right.on("error",(e=>this.destroy(e))),this.left.on("readable",(()=>this.readable=!0)),this.right.on("readable",(()=>this.readable=!0)),this.left.on("end",(()=>{this.hasResults()||this._end()})),this.right.on("end",(()=>{this.hasResults()||this._end()}))}hasResults(){return!this.left.ended||!this.right.ended||!!this.matches&&this.matchIdx{let n=r(76664).AsyncIterator;e.exports=class extends n{constructor(e){super(),Array.isArray(e)||(e=Array.prototype.slice.call(arguments)),this.streams=e;for(let t of e)t.on("readable",(()=>this.emit("readable"))),t.on("end",(()=>this._removeStream(t)));0===this.streams.length&&this.close(),this.idx=this.streams.length-1}_removeStream(e){let t=this.streams.indexOf(e);t<0||(this.streams.splice(t,1),this.idx>=this.streams.length&&--this.idx,0===this.streams.length&&this._end())}close(){super.close();for(let e of this.streams)e.close()}read(){for(let e=0;e{e.exports=function(e){const t=new(r(5868).LoggerVoid),n=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-init/^3.0.0/components/ActorInit.jsonld#ActorInit_default_bus"}),i=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-context-preprocess/^3.0.0/components/ActorContextPreprocess.jsonld#ActorContextPreprocess_default_bus"}),a=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-bindings/^3.0.0/components/ActorHashBindings.jsonld#ActorHashBindings_default_bus"}),o=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-quads/^3.0.0/components/ActorHashQuads.jsonld#ActorHashQuads_default_bus"}),s=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-query-operation/^3.0.0/components/ActorOptimizeQueryOperation.jsonld#ActorOptimizeQueryOperation_default_bus"}),c=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-parse/^3.0.0/components/ActorQueryParse.jsonld#ActorQueryParse_default_bus"}),u=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-result-serialize/^3.0.0/components/ActorQueryResultSerialize.jsonld#ActorQueryResultSerialize_default_bus"}),l=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify-hypermedia/^3.0.0/components/ActorQuerySourceIdentifyHypermedia.jsonld#ActorQuerySourceIdentifyHypermedia_default_bus"}),d=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference/^3.0.0/components/ActorDereference.jsonld#ActorDereference_default_bus"}),p=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference-rdf/^3.0.0/components/ActorDereferenceRdf.jsonld#ActorDereferenceRdf_default_bus"}),h=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-entries-sort/^3.0.0/components/ActorRdfJoinEntriesSort.jsonld#ActorRdfJoinEntriesSort_default_bus"}),f=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-selectivity/^3.0.0/components/ActorRdfJoinSelectivity.jsonld#ActorRdfJoinSelectivity_default_bus"}),y=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata/^3.0.0/components/ActorRdfMetadata.jsonld#ActorRdfMetadata_default_bus"}),g=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-accumulate/^3.0.0/components/ActorRdfMetadataAccumulate.jsonld#ActorRdfMetadataAccumulate_default_bus"}),m=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-extract/^3.0.0/components/ActorRdfMetadataExtract.jsonld#ActorRdfMetadataExtract_default_bus"}),b=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse/^3.0.0/components/ActorRdfParse.jsonld#ActorRdfParse_default_bus"}),v=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse-html/^3.0.0/components/ActorRdfParseHtml.jsonld#ActorRdfParseHtml_default_bus"}),_=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links/^3.0.0/components/ActorRdfResolveHypermediaLinks.jsonld#ActorRdfResolveHypermediaLinks_default_bus"}),w=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links-queue/^3.0.0/components/ActorRdfResolveHypermediaLinksQueue.jsonld#ActorRdfResolveHypermediaLinksQueue_default_bus"}),T=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-serialize/^3.0.0/components/ActorRdfSerialize.jsonld#ActorRdfSerialize_default_bus"}),S=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-hypermedia/^3.0.0/components/ActorRdfUpdateHypermedia.jsonld#ActorRdfUpdateHypermedia_default_bus"}),O=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads/^3.0.0/components/ActorRdfUpdateQuads.jsonld#ActorRdfUpdateQuads_default_bus"}),E=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^3.0.0/components/ActorHttp.jsonld#ActorHttp_default_bus"}),x=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^3.0.0/components/ActorHttp.jsonld#ActorHttp_fallback_bus"}),A=new(r(59510).BusQueryOperation)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^3.0.0/components/ActorQueryOperation.jsonld#ActorQueryOperation_default_bus"}),R=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-process/^3.0.0/components/ActorQueryProcess.jsonld#ActorQueryProcess_default_bus"}),I=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify/^3.0.0/components/ActorQuerySourceIdentify.jsonld#ActorQuerySourceIdentify_default_bus"}),P=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^3.0.0/components/ActorRdfJoin.jsonld#ActorRdfJoin_default_bus"}),N=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http-invalidate/^3.0.0/components/ActorHttpInvalidate.jsonld#ActorHttpInvalidate_default_bus"}),D=new(r(34368).Bus)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-merge-bindings-context/^3.0.0/components/ActorMergeBindingsContext.jsonld#ActorMergeBindingsContext_default_bus"}),j=(new(r(36251).ActorContextPreprocessConvertShortcuts)({contextKeyShortcuts:{baseIRI:"@comunica/actor-init-query:baseIRI",datetime:"@comunica/actor-http-memento:datetime",destination:"@comunica/bus-rdf-update-quads:destination",distinctConstruct:"@comunica/actor-init-query:distinctConstruct",explain:"@comunica/actor-init-query:explain",extensionFunctionCreator:"@comunica/actor-init-query:extensionFunctionCreator",extensionFunctions:"@comunica/actor-init-query:extensionFunctions",fetch:"@comunica/bus-http:fetch",functionArgumentsCache:"@comunica/actor-init-query:functionArgumentsCache",httpAuth:"@comunica/bus-http:auth",httpBodyTimeout:"@comunica/bus-http:http-body-timeout",httpIncludeCredentials:"@comunica/bus-http:include-credentials",httpProxyHandler:"@comunica/actor-http-proxy:httpProxyHandler",httpRetryCount:"@comunica/bus-http:http-retry-count",httpRetryDelay:"@comunica/bus-http:http-retry-delay",httpRetryOnServerError:"@comunica/bus-http:http-retry-on-server-error",httpTimeout:"@comunica/bus-http:http-timeout",initialBindings:"@comunica/actor-init-query:initialBindings",lenient:"@comunica/actor-init-query:lenient",log:"@comunica/core:log",noCache:"@comunica/actor-init-query:noCache",queryFormat:"@comunica/actor-init-query:queryFormat",queryTimestamp:"@comunica/actor-init-query:queryTimestamp",readOnly:"@comunica/bus-query-operation:readOnly",recoverBrokenLinks:"@comunica/bus-http-wayback:recover-broken-links",sources:"@comunica/actor-init-query:querySourcesUnidentified",traverse:"@comunica/bus-query-source-identify:traverse",unionDefaultGraph:"@comunica/bus-query-operation:unionDefaultGraph"},name:"urn:comunica:default:context-preprocess/actors#convert-shortcuts",bus:i}),new(r(35451).ActorContextPreprocessSetDefaults)({logger:t,name:"urn:comunica:default:context-preprocess/actors#set-defaults",bus:i}),new(r(41670).ActorContextPreprocessSourceToDestination)({name:"urn:comunica:default:context-preprocess/actors#source-to-destination",bus:i}),new(r(35106).ActorContextPreprocessQuerySourceSkolemize)({name:"urn:comunica:default:context-preprocess/actors#query-source-skolemize",bus:i})),C=new(r(30827).MediatorCombinePipeline)({name:"urn:comunica:default:context-preprocess/mediators#main",bus:i}),M=(new(r(11150).ActorHashBindingsSha1)({name:"urn:comunica:default:hash-bindings/actors#sha1",bus:a}),new(r(25896).MediatorRace)({name:"urn:comunica:default:hash-bindings/mediators#main",bus:a})),L=(new(r(64188).ActorHashQuadsSha1)({name:"urn:comunica:default:hash-quads/actors#sha1",bus:o}),new(r(25896).MediatorRace)({name:"urn:comunica:default:hash-quads/mediators#main",bus:o})),k=(new(r(15718).ActorOptimizeQueryOperationRewriteCopy)({name:"urn:comunica:default:optimize-query-operation/actors#rewrite-copy",bus:s}),new(r(83910).ActorOptimizeQueryOperationRewriteMove)({name:"urn:comunica:default:optimize-query-operation/actors#rewrite-move",bus:s}),new(r(63514).ActorOptimizeQueryOperationRewriteAdd)({name:"urn:comunica:default:optimize-query-operation/actors#rewrite-add",bus:s}),new(r(78992).ActorOptimizeQueryOperationGroupSources)({name:"urn:comunica:default:optimize-query-operation/actors#group-sources",bus:s})),F=(new(r(78724).ActorOptimizeQueryOperationConstructDistinct)({name:"urn:comunica:default:optimize-query-operation/actors#construct-distinct",bus:s}),new(r(30827).MediatorCombinePipeline)({filterErrors:!0,name:"urn:comunica:default:optimize-query-operation/mediators#main",bus:s})),B=(new(r(4911).ActorQueryParseSparql)({prefixes:{dbpedia:"http://dbpedia.org/resource/","dbpedia-owl":"http://dbpedia.org/ontology/",dbpprop:"http://dbpedia.org/property/",dc:"http://purl.org/dc/terms/",dc11:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",foaf:"http://xmlns.com/foaf/0.1/",geo:"http://www.w3.org/2003/01/geo/wgs84_pos#",owl:"http://www.w3.org/2002/07/owl#",rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://www.w3.org/2000/01/rdf-schema#",schema:"http://schema.org/",skos:"http://www.w3.org/2008/05/skos#",xsd:"http://www.w3.org/2001/XMLSchema#"},name:"urn:comunica:default:query-parse/actors#sparql",bus:c}),new(r(37067).ActorQueryParseGraphql)({name:"urn:comunica:default:query-parse/actors#graphql",bus:c}),new(r(25896).MediatorRace)({name:"urn:comunica:default:query-parse/mediators#main",bus:c})),U=(new(r(91875).ActorQueryResultSerializeJson)({mediaTypePriorities:{"application/json":1},mediaTypeFormats:{"application/json":"https://comunica.linkeddatafragments.org/#results_JSON"},name:"urn:comunica:default:query-result-serialize/actors#json",bus:u}),new(r(96791).ActorQueryResultSerializeSimple)({mediaTypePriorities:{simple:.9},mediaTypeFormats:{simple:"https://comunica.linkeddatafragments.org/#results_simple"},name:"urn:comunica:default:query-result-serialize/actors#simple",bus:u}),new(r(34357).ActorQueryResultSerializeSparqlCsv)({mediaTypePriorities:{"text/csv":.75},mediaTypeFormats:{"text/csv":"http://www.w3.org/ns/formats/SPARQL_Results_CSV"},name:"urn:comunica:default:query-result-serialize/actors#csv",bus:u}),new(r(78432).ActorQueryResultSerializeSparqlTsv)({mediaTypePriorities:{"text/tab-separated-values":.75},mediaTypeFormats:{"text/tab-separated-values":"http://www.w3.org/ns/formats/SPARQL_Results_TSV"},name:"urn:comunica:default:query-result-serialize/actors#sparql-tsv",bus:u}),new(r(68596).ActorQueryResultSerializeSparqlXml)({mediaTypePriorities:{"application/sparql-results+xml":.8},mediaTypeFormats:{"application/sparql-results+xml":"http://www.w3.org/ns/formats/SPARQL_Results_XML"},name:"urn:comunica:default:query-result-serialize/actors#sparql-xml",bus:u}),new(r(59655).ActorQueryResultSerializeTable)({columnWidth:50,mediaTypePriorities:{table:.6},mediaTypeFormats:{table:"https://comunica.linkeddatafragments.org/#results_table"},name:"urn:comunica:default:query-result-serialize/actors#table",bus:u}),new(r(70017).ActorQueryResultSerializeTree)({mediaTypePriorities:{tree:.5},mediaTypeFormats:{tree:"https://comunica.linkeddatafragments.org/#results_tree"},name:"urn:comunica:default:query-result-serialize/actors#tree",bus:u}),new(r(25896).MediatorRace)({name:"urn:comunica:default:query-result-serialize/mediators#serialize",bus:u})),q=new(r(75884).MediatorCombineUnion)({field:"mediaTypes",name:"urn:comunica:default:query-result-serialize/mediators#mediaType",bus:u}),V=new(r(75884).MediatorCombineUnion)({field:"mediaTypeFormats",name:"urn:comunica:default:query-result-serialize/mediators#mediaTypeFormat",bus:u}),Q=new(r(99104).MediatorNumber)({field:"filterFactor",type:"max",ignoreErrors:!0,name:"urn:comunica:default:query-source-identify-hypermedia/mediators#main",bus:l}),$=new(r(35878).ActorDereferenceFallback)({name:"urn:comunica:default:dereference/actors#fallback",bus:d}),H=new(r(25896).MediatorRace)({name:"urn:comunica:default:dereference/mediators#main",bus:d}),G=new(r(25896).MediatorRace)({name:"urn:comunica:default:dereference-rdf/mediators#main",bus:p}),z=(new(r(36545).ActorRdfJoinEntriesSortCardinality)({name:"urn:comunica:default:rdf-join-entries-sort/actors#cardinality",bus:h}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-join-entries-sort/mediators#main",bus:h})),K=(new(r(16703).ActorRdfJoinSelectivityVariableCounting)({name:"urn:comunica:default:rdf-join-selectivity/actors#variable-counting",bus:f}),new(r(99104).MediatorNumber)({field:"accuracy",type:"max",ignoreErrors:!0,name:"urn:comunica:default:rdf-join-selectivity/mediators#main",bus:f})),X=(new(r(80848).ActorRdfMetadataPrimaryTopic)({metadataToData:!1,dataToMetadataOnInvalidMetadataGraph:!0,name:"urn:comunica:default:rdf-metadata/actors#primary-topic",bus:y}),new(r(64443).ActorRdfMetadataAll)({name:"urn:comunica:default:rdf-metadata/actors#all",bus:y}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-metadata/mediators#main",bus:y})),J=(new(r(27988).ActorRdfMetadataAccumulateCanContainUndefs)({name:"urn:comunica:default:rdf-metadata-accumulate/actors#cancontainundefs",bus:g}),new(r(67243).ActorRdfMetadataAccumulateCardinality)({name:"urn:comunica:default:rdf-metadata-accumulate/actors#cardinality",bus:g}),new(r(91475).ActorRdfMetadataAccumulatePageSize)({name:"urn:comunica:default:rdf-metadata-accumulate/actors#pagesize",bus:g}),new(r(26719).ActorRdfMetadataAccumulateRequestTime)({name:"urn:comunica:default:rdf-metadata-accumulate/actors#requesttime",bus:g}),new(r(75884).MediatorCombineUnion)({field:"metadata",name:"urn:comunica:default:rdf-metadata-accumulate/mediators#main",bus:g})),W=(new(r(85405).ActorRdfMetadataExtractHydraControls)({name:"urn:comunica:default:rdf-metadata-extract/actors#hydra-controls",bus:m}),new(r(57586).ActorRdfMetadataExtractHydraCount)({predicates:["http://www.w3.org/ns/hydra/core#totalItems","http://rdfs.org/ns/void#triples"],name:"urn:comunica:default:rdf-metadata-extract/actors#hydra-count",bus:m}),new(r(54777).ActorRdfMetadataExtractHydraPagesize)({predicates:["http://www.w3.org/ns/hydra/core#itemsPerPage"],name:"urn:comunica:default:rdf-metadata-extract/actors#hydra-pagesize",bus:m}),new(r(7445).ActorRdfMetadataExtractRequestTime)({name:"urn:comunica:default:rdf-metadata-extract/actors#request-time",bus:m}),new(r(40751).ActorRdfMetadataExtractAllowHttpMethods)({name:"urn:comunica:default:rdf-metadata-extract/actors#allow-http-methods",bus:m}),new(r(44549).ActorRdfMetadataExtractPutAccepted)({name:"urn:comunica:default:rdf-metadata-extract/actors#put-accepted",bus:m}),new(r(55282).ActorRdfMetadataExtractPatchSparqlUpdate)({name:"urn:comunica:default:rdf-metadata-extract/actors#patch-sparql-update",bus:m}),new(r(3187).ActorRdfMetadataExtractSparqlService)({inferHttpsEndpoint:!0,name:"urn:comunica:default:rdf-metadata-extract/actors#sparql-service",bus:m}),new(r(75884).MediatorCombineUnion)({filterErrors:!0,field:"metadata",name:"urn:comunica:default:rdf-metadata-extract/mediators#main",bus:m})),Y=(new(r(62917).ActorRdfParseN3)({mediaTypePriorities:{"application/n-quads":1,"application/n-triples":.8,"application/trig":.95,"text/n3":.35,"text/turtle":.6},mediaTypeFormats:{"application/n-quads":"http://www.w3.org/ns/formats/N-Quads","application/n-triples":"http://www.w3.org/ns/formats/N-Triples","application/trig":"http://www.w3.org/ns/formats/TriG","text/n3":"http://www.w3.org/ns/formats/N3","text/turtle":"http://www.w3.org/ns/formats/Turtle"},priorityScale:1,name:"urn:comunica:default:rdf-parse/actors#n3",bus:b}),new(r(21487).ActorRdfParseRdfXml)({mediaTypePriorities:{"application/rdf+xml":1},mediaTypeFormats:{"application/rdf+xml":"http://www.w3.org/ns/formats/RDF_XML"},priorityScale:.5,name:"urn:comunica:default:rdf-parse/actors#rdfxml",bus:b}),new(r(8137).ActorRdfParseXmlRdfa)({mediaTypePriorities:{"application/xml":1,"image/svg+xml":1,"text/xml":1},mediaTypeFormats:{"application/xml":"http://www.w3.org/ns/formats/RDFa","image/svg+xml":"http://www.w3.org/ns/formats/RDFa","text/xml":"http://www.w3.org/ns/formats/RDFa"},priorityScale:.3,name:"urn:comunica:default:rdf-parse/actors#xmlrdfa",bus:b}),new(r(43352).ActorRdfParseShaclc)({mediaTypePriorities:{"text/shaclc":1,"text/shaclc-ext":.5},mediaTypeFormats:{"text/shaclc":"http://www.w3.org/ns/formats/Shaclc","text/shaclc-ext":"http://www.w3.org/ns/formats/ShaclcExtended"},priorityScale:.1,name:"urn:comunica:default:rdf-parse/actors#shaclc",bus:b}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-parse/mediators#parse",bus:b})),Z=new(r(75884).MediatorCombineUnion)({field:"mediaTypes",name:"urn:comunica:default:rdf-parse/mediators#mediaType",bus:b}),ee=(new(r(28955).ActorRdfParseHtml)({busRdfParseHtml:v,mediaTypePriorities:{"application/xhtml+xml":.9,"text/html":1},mediaTypeFormats:{"application/xhtml+xml":"http://www.w3.org/ns/formats/HTML","text/html":"http://www.w3.org/ns/formats/HTML"},priorityScale:.2,name:"urn:comunica:default:rdf-parse/actors#html",bus:b}),new(r(42421).ActorRdfParseHtmlMicrodata)({name:"urn:comunica:default:rdf-parse-html/actors#microdata",bus:v}),new(r(26585).ActorRdfParseHtmlRdfa)({name:"urn:comunica:default:rdf-parse-html/actors#rdfa",bus:v}),new(r(34541).ActorRdfResolveHypermediaLinksNext)({name:"urn:comunica:default:rdf-resolve-hypermedia-links/actors#next",bus:_}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-resolve-hypermedia-links/mediators#main",bus:_})),te=(new(r(34120).ActorRdfResolveHypermediaLinksQueueFifo)({name:"urn:comunica:default:rdf-resolve-hypermedia-links-queue/actors#fifo",bus:w}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-resolve-hypermedia-links-queue/mediators#main",bus:w})),re=(new(r(28510).ActorRdfSerializeN3)({mediaTypePriorities:{"application/n-quads":1,"application/n-triples":.8,"application/trig":.95,"text/n3":.35,"text/turtle":.6},mediaTypeFormats:{"application/n-quads":"http://www.w3.org/ns/formats/N-Quads","application/n-triples":"http://www.w3.org/ns/formats/N-Triples","application/trig":"http://www.w3.org/ns/formats/TriG","text/n3":"http://www.w3.org/ns/formats/N3","text/turtle":"http://www.w3.org/ns/formats/Turtle"},name:"urn:comunica:default:rdf-serialize/actors#n3",bus:T}),new(r(21935).ActorRdfSerializeJsonLd)({jsonStringifyIndentSpaces:2,mediaTypePriorities:{"application/ld+json":1},mediaTypeFormats:{"application/ld+json":"http://www.w3.org/ns/formats/JSON-LD"},priorityScale:.9,name:"urn:comunica:default:rdf-serialize/actors#jsonld",bus:T}),new(r(49343).ActorRdfSerializeShaclc)({mediaTypePriorities:{"text/shaclc":1,"text/shaclc-ext":.5},mediaTypeFormats:{"text/shaclc":"http://www.w3.org/ns/formats/Shaclc","text/shaclc-ext":"http://www.w3.org/ns/formats/ShaclcExtended"},priorityScale:.1,name:"urn:comunica:default:rdf-serialize/actors#shaclc",bus:T}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-serialize/mediators#serialize",bus:T})),ne=new(r(75884).MediatorCombineUnion)({field:"mediaTypes",name:"urn:comunica:default:rdf-serialize/mediators#mediaType",bus:T}),ie=new(r(75884).MediatorCombineUnion)({field:"mediaTypeFormats",name:"urn:comunica:default:rdf-serialize/mediators#mediaTypeFormat",bus:T}),ae=new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-update-hypermedia/mediators#main",bus:S}),oe=(new(r(76722).ActorRdfUpdateQuadsRdfJsStore)({name:"urn:comunica:default:rdf-update-quads/actors#rdfjs-store",bus:O}),new(r(25896).MediatorRace)({name:"urn:comunica:default:rdf-update-quads/mediators#main",bus:O})),se=new(r(28590).ActorHttpFetch)({agentOptions:{keepAlive:!0,maxSockets:5},name:"urn:comunica:default:http/actors#fetch",bus:E}),ce=new(r(99104).MediatorNumber)({field:"time",type:"min",ignoreErrors:!0,name:"urn:comunica:default:http/mediators#no-fallback",bus:E}),ue=new(r(99104).MediatorNumber)({field:"time",type:"min",ignoreErrors:!0,name:"urn:comunica:default:http/mediators#main",bus:x}),le=(new(r(26933).ActorQueryOperationSource)({name:"urn:comunica:default:query-operation/actors#source",bus:A}),new(r(99104).MediatorNumber)({field:"httpRequests",type:"min",ignoreErrors:!0,name:"urn:comunica:default:query-operation/mediators#main",bus:A})),de=new(r(25896).MediatorRace)({name:"urn:comunica:default:query-process/mediators#main",bus:R}),pe=new(r(25896).MediatorRace)({name:"urn:comunica:default:query-source-identify/mediators#main",bus:I}),he=new(r(8309).MediatorJoinCoefficientsFixed)({cpuWeight:10,memoryWeight:1,timeWeight:2,ioWeight:10,name:"urn:comunica:default:rdf-join/mediators#main",bus:P}),fe=new(r(56320).ActorHttpInvalidateListenable)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-context-preprocess-query-source-identify/^3.0.0/components/ActorContextPreprocessQuerySourceIdentify.jsonld#IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator",bus:N}),ye=new(r(48284).MediatorAll)({name:"urn:comunica:default:http-invalidate/mediators#main",bus:N}),ge=new(r(56320).ActorHttpInvalidateListenable)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-update-quads-hypermedia/^3.0.0/components/ActorRdfUpdateQuadsHypermedia.jsonld#IActorRdfUpdateQuadsHypermediaArgs_default_invalidator",bus:N}),me=new(r(56320).ActorHttpInvalidateListenable)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-sparql-json/^3.0.0/components/ActionObserverHttp.jsonld#IActionObserverHttpArgs_default_invalidator",bus:N}),be=new(r(56320).ActorHttpInvalidateListenable)({name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^3.0.0/components/ActionObserverHttp.jsonld#IActionObserverHttpArgs_default_invalidator",bus:N}),ve=new(r(75884).MediatorCombineUnion)({field:"mergeHandlers",name:"urn:comunica:default:merge-bindings-context/mediators#main",bus:D}),_e=(new(r(35848).ActorRdfJoinSingle)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-single",bus:P}),new(r(85345).ActorRdfJoinMultiEmpty)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-multi-empty",bus:P}),new(r(38868).ActorRdfJoinHash)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-hash",bus:P})),we=new(r(77375).ActorRdfJoinSymmetricHash)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-symmetric-hash",bus:P}),Te=new(r(37081).ActorRdfJoinNestedLoop)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-nested-loop",bus:P}),Se=(new(r(11688).ActorRdfJoinMinusHash)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#minus-hash",bus:P}),new(r(98311).ActorRdfJoinMinusHashUndef)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#minus-hash-undef",bus:P}),new(r(19726).ActorRdfJoinOptionalHash)({canHandleUndefs:!1,blocking:!1,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-hash-def-nonblocking",bus:P}),new(r(19726).ActorRdfJoinOptionalHash)({canHandleUndefs:!1,blocking:!0,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-hash-def-blocking",bus:P}),new(r(19726).ActorRdfJoinOptionalHash)({canHandleUndefs:!0,blocking:!1,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-hash-undef-nonblocking",bus:P}),new(r(19726).ActorRdfJoinOptionalHash)({canHandleUndefs:!0,blocking:!0,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-hash-undef-blocking",bus:P}),new(r(9391).ActorRdfJoinOptionalNestedLoop)({mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-nested-loop",bus:P}),new(r(54341).ActorDereferenceRdfParse)({mediatorDereference:H,mediatorParse:Y,mediatorParseMediatypes:Z,mediaMappings:{htm:"text/html",html:"text/html",json:"application/json",jsonld:"application/ld+json",n3:"text/n3",nq:"application/n-quads",nquads:"application/n-quads",nt:"application/n-triples",ntriples:"application/n-triples",owl:"application/rdf+xml",rdf:"application/rdf+xml",rdfxml:"application/rdf+xml",shaclc:"text/shaclc",shaclce:"text/shaclc-ext",shc:"text/shaclc",shce:"text/shaclc-ext",svg:"image/svg+xml",svgz:"image/svg+xml",trig:"application/trig",ttl:"text/turtle",turtle:"text/turtle",xht:"application/xhtml+xml",xhtml:"application/xhtml+xml",xml:"application/xml"},name:"urn:comunica:default:dereference-rdf/actors#parse",bus:p}),new(r(3549).ActorRdfParseHtmlScript)({mediatorRdfParseMediatypes:Z,mediatorRdfParseHandle:Y,name:"urn:comunica:default:rdf-parse-html/actors#script",bus:v}),new(r(63543).ActorQueryResultSerializeRdf)({mediatorRdfSerialize:re,mediatorMediaTypeCombiner:ne,mediatorMediaTypeFormatCombiner:ie,name:"urn:comunica:default:query-result-serialize/actors#rdf",bus:u}),new(r(55390).ActorHttpWayback)({mediatorHttp:ce,name:"urn:comunica:default:http/actors#wayback",bus:x}),new(r(54168).ActorRdfParseJsonLd)({mediatorHttp:ue,mediaTypePriorities:{"application/json":.15,"application/ld+json":1},mediaTypeFormats:{"application/json":"http://www.w3.org/ns/formats/JSON-LD","application/ld+json":"http://www.w3.org/ns/formats/JSON-LD"},priorityScale:.9,name:"urn:comunica:default:rdf-parse/actors#jsonld",bus:b}),new(r(87057).ActorRdfUpdateHypermediaPatchSparqlUpdate)({mediatorHttp:ue,name:"urn:comunica:default:rdf-update-hypermedia/actors#patch-sparql-update",bus:S}),new(r(3047).ActorRdfUpdateHypermediaPutLdp)({mediatorHttp:ue,mediatorRdfSerializeMediatypes:ne,mediatorRdfSerialize:re,name:"urn:comunica:default:rdf-update-hypermedia/actors#put-ldp",bus:S}),new(r(58916).ActorRdfUpdateHypermediaSparql)({mediatorHttp:ue,checkUrlSuffixSparql:!0,checkUrlSuffixUpdate:!0,name:"urn:comunica:default:rdf-update-hypermedia/actors#sparql",bus:S}),new(r(57321).ActorQueryOperationAsk)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#ask",bus:A}),new(r(88749).ActorQueryOperationConstruct)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#construct",bus:A}),new(r(20888).ActorQueryOperationBgpJoin)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#bgp",bus:A}),new(r(13867).ActorQueryOperationDistinctHash)({mediatorHashBindings:M,mediatorHashQuads:L,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#distinct",bus:A}),new(r(37572).ActorQueryOperationFromQuad)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#from",bus:A}),new(r(98893).ActorQueryOperationProject)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#project",bus:A}),new(r(16909).ActorQueryOperationReducedHash)({mediatorHashBindings:M,cacheSize:100,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#reduced",bus:A}),new(r(14922).ActorQueryOperationSlice)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#slice",bus:A}),new(r(19779).ActorQueryOperationUnion)({mediatorRdfMetadataAccumulate:J,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#union",bus:A}),new(r(16733).ActorQueryOperationPathAlt)({mediatorRdfMetadataAccumulate:J,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-alt",bus:A}),new(r(88317).ActorQueryOperationPathInv)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-inv",bus:A}),new(r(91430).ActorQueryOperationPathLink)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-link",bus:A}),new(r(56993).ActorQueryOperationPathNps)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-nps",bus:A}),new(r(75233).ActorQueryOperationClear)({mediatorUpdateQuads:oe,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-clear",bus:A}),new(r(57886).ActorQueryOperationUpdateCompositeUpdate)({mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-composite",bus:A}),new(r(14876).ActorQueryOperationCreate)({mediatorUpdateQuads:oe,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-create",bus:A}),new(r(82465).ActorQueryOperationDrop)({mediatorUpdateQuads:oe,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-drop",bus:A}),new(r(29796).ActorQueryOperationLoad)({mediatorUpdateQuads:oe,mediatorQuerySourceIdentify:pe,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-load",bus:A}),new(r(40980).ActorQueryOperationJoin)({mediatorJoin:he,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#join",bus:A}),new(r(19948).ActorQueryOperationMinus)({mediatorJoin:he,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#minus",bus:A}),new(r(28261).ActorQueryOperationPathSeq)({mediatorJoin:he,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-seq",bus:A}),new(r(68841).ActorRdfJoinMultiSmallest)({mediatorJoinEntriesSort:z,mediatorJoin:he,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-multi-smallest",bus:P})),Oe=new(r(48989).ActorOptimizeQueryOperationFilterPushdown)({aggressivePushdown:!1,maxIterations:10,splitConjunctive:!0,mergeConjunctive:!0,pushIntoLeftJoins:!0,pushEqualityIntoPatterns:!0,name:"urn:comunica:default:optimize-query-operation/actors#filter-pushdown",bus:s,beforeActors:[k]}),Ee=(new(r(68132).ActorDereferenceHttp)({mediatorHttp:ue,maxAcceptHeaderLength:1024,maxAcceptHeaderLengthBrowser:128,name:"urn:comunica:default:dereference/actors#http",bus:d,beforeActors:[$]}),new(r(48230).ActorHttpProxy)({mediatorHttp:ue,name:"urn:comunica:default:http/actors#proxy",bus:E,beforeActors:[se]}),new(r(90807).ActorContextPreprocessQuerySourceIdentify)({cacheSize:100,httpInvalidator:fe,mediatorQuerySourceIdentify:pe,mediatorContextPreprocess:C,name:"urn:comunica:default:context-preprocess/actors#query-source-identify",bus:i,beforeActors:[j]}),new(r(15729).ActorInitQuery)({mediatorQueryProcess:de,mediatorQueryResultSerialize:U,mediatorQueryResultSerializeMediaTypeCombiner:q,mediatorQueryResultSerializeMediaTypeFormatCombiner:V,mediatorHttpInvalidate:ye,defaultQueryInputFormat:"sparql",allowNoSources:!1,name:"urn:comunica:default:init/actors#query",bus:n})),xe=(new(r(88297).ActorRdfUpdateQuadsHypermedia)({cacheSize:100,httpInvalidator:ge,mediatorDereferenceRdf:G,mediatorMetadata:X,mediatorMetadataExtract:W,mediatorRdfUpdateHypermedia:ae,name:"urn:comunica:default:rdf-update-quads/actors#hypermedia",bus:O}),new(r(34593).ActionObserverHttp)({httpInvalidator:me,name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-sparql-json/^3.0.0/components/ActorQueryResultSerializeSparqlJson.jsonld#ActorQueryResultSerializeSparqlJson_default_observer",bus:E})),Ae=new(r(13900).ActionObserverHttp)({httpInvalidator:be,name:"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^3.0.0/components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats_default_observer",bus:E}),Re=(new(r(52378).ActorQuerySourceIdentifyHypermediaQpf)({mediatorMetadata:X,mediatorMetadataExtract:W,mediatorDereferenceRdf:G,mediatorMergeBindingsContext:ve,subjectUri:"http://www.w3.org/1999/02/22-rdf-syntax-ns#subject",predicateUri:"http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate",objectUri:"http://www.w3.org/1999/02/22-rdf-syntax-ns#object",graphUri:"http://www.w3.org/ns/sparql-service-description#graph",name:"urn:comunica:default:query-source-identify-hypermedia/actors#qpf",bus:l}),new(r(16025).ActorQuerySourceIdentifyHypermediaSparql)({mediatorHttp:ue,mediatorMergeBindingsContext:ve,checkUrlSuffix:!0,forceHttpGet:!1,cacheSize:1024,bindMethod:"values",countTimeout:3e3,name:"urn:comunica:default:rdf-resolve-quad-pattern/actors#sparql",bus:l}),new(r(44538).ActorQuerySourceIdentifyHypermediaNone)({mediatorMergeBindingsContext:ve,name:"urn:comunica:default:query-source-identify-hypermedia/actors#none",bus:l}),new(r(19724).ActorQueryOperationExtend)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#extend",bus:A}),new(r(74578).ActorQueryOperationFilter)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#filter",bus:A}),new(r(47007).ActorQueryOperationGroup)({mediatorHashBindings:M,mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#group",bus:A}),new(r(33149).ActorQueryOperationLeftJoin)({mediatorJoin:he,mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#leftjoin",bus:A}),new(r(35021).ActorQueryOperationNop)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#nop",bus:A}),new(r(80797).ActorQueryOperationOrderBy)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#orderby",bus:A}),new(r(89375).ActorQueryOperationService)({forceSparqlEndpoint:!1,mediatorMergeBindingsContext:ve,mediatorQuerySourceIdentify:pe,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#service",bus:A}),new(r(14702).ActorQueryOperationValues)({mediatorMergeBindingsContext:ve,name:"urn:comunica:default:query-operation/actors#values",bus:A}),new(r(90658).ActorQueryOperationPathOneOrMore)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-one-or-more",bus:A}),new(r(60436).ActorQueryOperationPathZeroOrMore)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-zero-or-more",bus:A}),new(r(32091).ActorQueryOperationPathZeroOrOne)({mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#path-zero-or-one",bus:A}),new(r(21638).ActorQueryOperationUpdateDeleteInsert)({mediatorUpdateQuads:oe,mediatorMergeBindingsContext:ve,mediatorQueryOperation:le,name:"urn:comunica:default:query-operation/actors#update-delete-insert",bus:A}),new(r(94739).ActorQueryProcessSequential)({mediatorContextPreprocess:C,mediatorQueryParse:B,mediatorOptimizeQueryOperation:F,mediatorQueryOperation:le,mediatorMergeBindingsContext:ve,name:"urn:comunica:default:query-process/actors#sequential",bus:R})),Ie=new(r(57789).ActorQuerySourceIdentifyHypermedia)({cacheSize:100,maxIterators:64,aggregateTraversalStore:!0,mediatorDereferenceRdf:G,mediatorMetadata:X,mediatorMetadataExtract:W,mediatorMetadataAccumulate:J,mediatorQuerySourceIdentifyHypermedia:Q,mediatorRdfResolveHypermediaLinks:ee,mediatorRdfResolveHypermediaLinksQueue:te,mediatorMergeBindingsContext:ve,name:"urn:comunica:default:query-source-identify/actors#hypermedia",bus:I}),Pe=(new(r(498).ActorRdfJoinNone)({mediatorMergeBindingsContext:ve,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-none",bus:P}),new(r(64305).ActorRdfJoinOptionalBind)({bindOrder:"depth-first",selectivityModifier:1e-6,mediatorQueryOperation:le,mediatorMergeBindingsContext:ve,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#optional-bind",bus:P}),new(r(82331).ActorRdfJoinMultiBind)({bindOrder:"depth-first",selectivityModifier:1e-4,minMaxCardinalityRatio:60,mediatorJoinEntriesSort:z,mediatorQueryOperation:le,mediatorMergeBindingsContext:ve,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-multi-bind",bus:P,beforeActors:[Se,_e,we,Te]})),Ne=(new(r(92107).ActorRdfJoinMultiSmallestFilterBindings)({selectivityModifier:1e-4,blockSize:64,mediatorJoinEntriesSort:z,mediatorJoin:he,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-multi-smallest-filter-bindings",bus:P,beforeActors:[Se,_e,we,Te]}),new(r(34593).ActorQueryResultSerializeSparqlJson)({emitMetadata:!0,httpObserver:xe,mediaTypePriorities:{"application/sparql-results+json":.8},mediaTypeFormats:{"application/sparql-results+json":"http://www.w3.org/ns/formats/SPARQL_Results_JSON"},name:"urn:comunica:default:query-result-serialize/actors#sparql-json",bus:u}),new(r(13900).ActorQueryResultSerializeStats)({httpObserver:Ae,mediaTypePriorities:{stats:.5},mediaTypeFormats:{stats:"https://comunica.linkeddatafragments.org/#results_stats"},name:"urn:comunica:default:query-result-serialize/actors#stats",bus:u}),new(r(68383).ActorQueryProcessExplainParsed)({queryProcessor:Re,name:"urn:comunica:default:query-process/actors#explain-parsed",bus:R}),new(r(70605).ActorQueryProcessExplainLogical)({queryProcessor:Re,name:"urn:comunica:default:query-process/actors#explain-logical",bus:R}),new(r(54395).ActorQueryProcessExplainPhysical)({queryProcessor:Re,name:"urn:comunica:default:query-process/actors#explain-physical",bus:R}),new(r(94607).ActorOptimizeQueryOperationPruneEmptySourceOperations)({useAskIfSupported:!1,name:"urn:comunica:default:optimize-query-operation/actors#prune-empty-source-operations",bus:s,beforeActors:[Oe]})),De=(new(r(27474).ActorQuerySourceIdentifyRdfJs)({mediatorMergeBindingsContext:ve,name:"urn:comunica:default:query-source-identify/actors#rdfjs",bus:I,beforeActors:[Ie]}),new(r(84701).ActorQuerySourceIdentifySerialized)({mediatorRdfParse:Y,mediatorQuerySourceIdentify:pe,name:"urn:comunica:default:query-source-identify/actors#serialized",bus:I,beforeActors:[Ie]}),new(r(6551).ActorRdfJoinMultiBindSource)({selectivityModifier:1e-4,blockSize:16,mediatorJoinEntriesSort:z,mediatorJoinSelectivity:K,name:"urn:comunica:default:rdf-join/actors#inner-multi-bind-source",bus:P,beforeActors:[Se,Pe,_e,we,Te]}),new(r(98498).ActorOptimizeQueryOperationJoinConnected)({name:"urn:comunica:default:optimize-query-operation/actors#join-connected",bus:s,beforeActors:[Ne]})),je=new(r(28084).ActorOptimizeQueryOperationBgpToJoin)({name:"urn:comunica:default:optimize-query-operation/actors#bgp-to-join",bus:s,beforeActors:[De]}),Ce=new(r(46980).ActorOptimizeQueryOperationJoinBgp)({name:"urn:comunica:default:optimize-query-operation/actors#join-bgp",bus:s,beforeActors:[je]}),Me=new(r(94741).ActorOptimizeQueryOperationAssignSourcesExhaustive)({name:"urn:comunica:default:optimize-query-operation/actors#assign-sources-exhaustive",bus:s,beforeActors:[Ce]});return new(r(78571).ActorOptimizeQueryOperationDescribeToConstructsSubject)({name:"urn:comunica:default:optimize-query-operation/actors#describe-to-constructs-subject",bus:s,beforeActors:[Me]}),Ee}},45747:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QueryEngine=void 0;const n=r(15729),i=r(28975);class a extends n.QueryEngineBase{constructor(e=i()){super(e)}}t.QueryEngine=a},90128:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(45747),t)},18423:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorAbstractMediaTyped=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}async run(e){if("handle"in e){const t=e;return{handle:await this.runHandle(t.handle,t.handleMediaType,e.context)}}if("mediaTypes"in e)return{mediaTypes:await this.getMediaTypes(e.context)};if("mediaTypeFormats"in e)return{mediaTypeFormats:await this.getMediaTypeFormats(e.context)};throw new Error("Either a handle, mediaTypes or mediaTypeFormats action needs to be provided")}async test(e){if("handle"in e){const t=e;return{handle:await this.testHandle(t.handle,t.handleMediaType,e.context)}}if("mediaTypes"in e)return{mediaTypes:await this.testMediaType(e.context)};if("mediaTypeFormats"in e)return{mediaTypeFormats:await this.testMediaTypeFormats(e.context)};throw new Error("Either a handle, mediaTypes or mediaTypeFormats action needs to be provided")}}t.ActorAbstractMediaTyped=i},44405:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorAbstractMediaTypedFixed=void 0;const n=r(18423);class i extends n.ActorAbstractMediaTyped{constructor(e){super(e);const t=this.priorityScale||0===this.priorityScale?this.priorityScale:1;if(this.mediaTypePriorities)for(const[e,[r,n]]of Object.entries(this.mediaTypePriorities).entries())this.mediaTypePriorities[r]=t*n;this.mediaTypePriorities=Object.freeze(this.mediaTypePriorities),this.mediaTypeFormats=Object.freeze(this.mediaTypeFormats)}async testHandle(e,t,r){if(!t||!(t in this.mediaTypePriorities))throw new Error(`Unrecognized media type: ${t}`);return await this.testHandleChecked(e,r)}async testMediaType(e){return!0}async getMediaTypes(e){return this.mediaTypePriorities}async testMediaTypeFormats(e){return!0}async getMediaTypeFormats(e){return this.mediaTypeFormats}}t.ActorAbstractMediaTypedFixed=i},75560:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18423),t),i(r(44405),t)},96331:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorAbstractPath=void 0;const n=r(59510),i=r(32227),a=r(76664),o=r(18050),s=r(22112),c=r(31578),u=r(29345),l=new o.DataFactory;class d extends n.ActorQueryOperationTypedMediated{constructor(e,t){super(e,"path"),this.predicateType=t}async testOperation(e,t){if(e.predicate.type!==this.predicateType)throw new Error(`This Actor only supports ${this.predicateType} Path operations.`);return!0}generateVariable(e,t){return t?!e||e.subject.value!==t&&e.object.value!==t?l.variable(t):this.generateVariable(e,`${t}b`):this.generateVariable(e,"b")}async isPathArbitraryLengthDistinct(e,t){return e.get(i.KeysQueryOperation.isPathArbitraryLengthDistinctKey)?{context:e=e.set(i.KeysQueryOperation.isPathArbitraryLengthDistinctKey,!1),operation:void 0}:{context:e=e.set(i.KeysQueryOperation.isPathArbitraryLengthDistinctKey,!0),operation:n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:d.FACTORY.createDistinct(t),context:e}))}}async predicateStarGraphVariable(e,t,r,i,o,s){const c=this.getPathSources(r),u=this.generateVariable(d.FACTORY.createPath(e,r,t,i)),l=d.FACTORY.createUnion([this.assignPatternSources(d.FACTORY.createPattern(e,u,t,i),c),this.assignPatternSources(d.FACTORY.createPattern(t,u,e,i),c)]),p=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:o,operation:l})),h=new Set;return{bindingsStream:new a.MultiTransformIterator(p.bindingsStream,{multiTransform:n=>{const c=n.get(i);return h.has(c.value)?new a.EmptyIterator:(h.add(c.value),new a.TransformIterator((async()=>{const n=new a.BufferedIterator;return await this.getObjectsPredicateStar(e,r,c,o,{},n,{count:0}),n.transform({transform(e,r,n){n(s.bindings([[t,e],[i,c]])),r()}})}),{maxBufferSize:128}))},autoStart:!1}),metadata:p.metadata}}async getObjectsPredicateStarEval(e,t,r,n,i,a,o){if("Variable"===n.termType)return this.predicateStarGraphVariable(e,r,t,n,i,o);const s=new u.PathVariableObjectIterator(e,t,n,i,this.mediatorQueryOperation,a);return{bindingsStream:s.transform({autoStart:!1,transform(e,t,n){n(o.bindings([[r,e]])),t()}}),async metadata(){const e=await new Promise((e=>{s.getProperty("metadata",(t=>e(t())))}));return e.cardinality.value++,e}}}async getObjectsPredicateStar(e,t,r,i,a,o,c){const u=(0,s.termToString)(e);if(a[u])return;o._push(e),a[u]=e,c.count++;const l=this.generateVariable(),p=d.FACTORY.createPath(e,t,l,r),h=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:p,context:i}));return h.bindingsStream.on("data",(async e=>{const n=e.get(l);await this.getObjectsPredicateStar(n,t,r,i,a,o,c)})),h.bindingsStream.on("end",(()=>{0==--c.count&&o.close()})),h.metadata}async getSubjectAndObjectBindingsPredicateStar(e,t,r,i,a,o,c,u,l,p,h,f){const y=(0,s.termToString)(i)+(0,s.termToString)(o);if(l[y])return;if(h.count++,l[y]=!0,p._push(f.bindings([[e,r],[t,i]])),y in u){const n=await u[y];for(const i of n)await this.getSubjectAndObjectBindingsPredicateStar(e,t,r,i,a,o,c,u,l,p,h,f);return void(0==--h.count&&p.close())}const g=new Promise((async(s,y)=>{const g=[],m=this.generateVariable(),b=d.FACTORY.createPath(i,a,m,o),v=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:b,context:c}));v.bindingsStream.on("data",(async n=>{const i=n.get(m);g.push(i),await this.getSubjectAndObjectBindingsPredicateStar(e,t,r,i,a,o,c,u,l,p,h,f)})),v.bindingsStream.on("error",y),v.bindingsStream.on("end",(()=>{0==--h.count&&p.close(),s(g)}))}));u[y]=g}getPathSources(e){switch(e.type){case c.Algebra.types.ALT:case c.Algebra.types.SEQ:return e.input.flatMap((e=>this.getPathSources(e)));case c.Algebra.types.INV:case c.Algebra.types.ONE_OR_MORE_PATH:case c.Algebra.types.ZERO_OR_MORE_PATH:case c.Algebra.types.ZERO_OR_ONE_PATH:return this.getPathSources(e.path);case c.Algebra.types.LINK:case c.Algebra.types.NPS:{const t=n.ActorQueryOperation.getOperationSource(e);if(!t)throw new Error("Could not find a required source on a link path operation");return[t]}}}assignPatternSources(e,t){if(0===t.length)throw new Error("Attempted to assign zero sources to a pattern during property path handling");return 1===t.length?n.ActorQueryOperation.assignOperationSource(e,t[0]):d.FACTORY.createUnion(t.map((t=>n.ActorQueryOperation.assignOperationSource(e,t))),!0)}}t.ActorAbstractPath=d,d.FACTORY=new c.Factory},29345:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathVariableObjectIterator=void 0;const n=r(59510),i=r(76664),a=r(18050),o=r(22112),s=r(31578),c=new a.DataFactory,u=new s.Factory;class l extends i.BufferedIterator{constructor(e,t,r,n,i,a,o=16){super({autoStart:!0}),this.subject=e,this.predicate=t,this.graph=r,this.context=n,this.mediatorQueryOperation=i,this.maxRunningOperations=o,this.termHashes=new Map,this.runningOperations=[],this.pendingOperations=[],this._push(this.subject,a)}_end(e){for(const e of this.runningOperations)e.destroy();super._end(e)}_push(e,t=!0){let r;if(t&&(r=(0,o.termToString)(e),this.termHashes.has(r)))return;const n=c.variable("b");this.pendingOperations.push({variable:n,operation:u.createPath(e,this.predicate,n,this.graph)}),r&&(this.termHashes.set(r,e),super._push(e))}_read(e,t){const r=this;(async function(){for(;r.runningOperations.lengthr.destroy(e))),i.on("readable",(()=>{r.readable=!0,r._fillBufferAsync()})),i.on("end",(()=>{r.runningOperations.splice(r.runningOperations.indexOf(i),1),r.readable=!0,r._fillBufferAsync()}))),r.setProperty("metadata",t.metadata)}let t,i=0;for(;i!==(i=e);)for(let n=0;n0;n++)null!==(t=r.runningOperations[n].read())&&(e--,r._push(t));0===r.runningOperations.length&&0===r.pendingOperations.length&&r.close()})().then((()=>{t()}),(e=>this.destroy(e)))}}t.PathVariableObjectIterator=l},43543:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(96331),t),i(r(29345),t)},53927:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocessConvertShortcuts=void 0;const n=r(32362),i=r(34368);class a extends n.ActorContextPreprocess{constructor(e){super(e)}async test(e){return!0}async run(e){return{context:a.expandShortcuts(e.context,this.contextKeyShortcuts)}}static expandShortcuts(e,t){for(const r of e.keys())t[r.name]&&(e=e.set(new i.ActionContextKey(t[r.name]),e.get(r)).delete(r));return e}}t.ActorContextPreprocessConvertShortcuts=a},36251:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(53927),t)},80352:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocessQuerySourceIdentify=void 0;const n=r(32362),i=r(32227),a=r(34368),o=r(35069);class s extends n.ActorContextPreprocess{constructor(e){super(e),this.cache=this.cacheSize?new o.LRUCache({max:this.cacheSize}):void 0;const t=this.cache;t&&this.httpInvalidator.addInvalidateListener((({url:e})=>e?t.delete(e):t.clear()))}async test(e){return!0}async run(e){let t=e.context;if(t.has(i.KeysInitQuery.querySourcesUnidentified)){const r=e.context.get(i.KeysInitQuery.querySourcesUnidentified),n=await Promise.all(r.map((e=>this.expandSource(e)))),a=await Promise.all(n.map((async t=>this.identifySource(t,e.context)))),o=e.context.get(i.KeysStatistics.dereferencedLinks);if(o)for(const e of a)o.updateStatistic({url:e.source.referenceValue,metadata:{seed:!0}},e.source);t=e.context.delete(i.KeysInitQuery.querySourcesUnidentified).set(i.KeysQueryOperation.querySources,a)}return{context:t}}async expandSource(e){return"string"==typeof e||"match"in e?{value:e}:{...e,context:(await this.mediatorContextPreprocess.mediate({context:a.ActionContext.ensureActionContext(e.context??{})})).context}}identifySource(e,t){let r;return"string"==typeof e.value&&this.cache&&(r=this.cache.get(e.value)),r||(r=this.mediatorQuerySourceIdentify.mediate({querySourceUnidentified:e,context:t}).then((({querySource:e})=>e)),"string"==typeof e.value&&this.cache&&this.cache.set(e.value,r)),r}}t.ActorContextPreprocessQuerySourceIdentify=s},90807:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(80352),t)},16646:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocessQuerySourceSkolemize=void 0;const n=r(32362),i=r(32227),a=r(84078),o=r(50339);class s extends n.ActorContextPreprocess{constructor(e){super(e)}async test(e){return!0}async run(e){let t=e.context;if(t.has(i.KeysQueryOperation.querySources)){t.has(i.KeysQuerySourceIdentify.sourceIds)||(t=t.set(i.KeysQuerySourceIdentify.sourceIds,new Map));const e=t.getSafe(i.KeysQuerySourceIdentify.sourceIds);let r=t.getSafe(i.KeysQueryOperation.querySources);r=r.map((t=>({source:new a.QuerySourceSkolemized(t.source,(0,o.getSourceId)(e,t.source)),context:t.context}))),t=t.set(i.KeysQueryOperation.querySources,r)}return{context:t}}}t.ActorContextPreprocessQuerySourceSkolemize=s},84078:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySourceSkolemized=void 0;const n=r(72394),i=r(76664),a=r(50339);t.QuerySourceSkolemized=class{constructor(e,t){this.innerSource=e,this.sourceId=t}async getSelectorShape(e){return this.innerSource.getSelectorShape(e)}queryBindings(e,t,r){const o=(0,a.deskolemizeOperation)(e,this.sourceId);if(!o){const e=new i.ArrayIterator([],{autoStart:!1});return e.setProperty("metadata",{state:new n.MetadataValidationState,cardinality:{type:"exact",value:0},canContainUndefs:!1,variables:[]}),e}return(0,a.skolemizeBindingsStream)(this.innerSource.queryBindings(o,t,r),this.sourceId)}queryBoolean(e,t){return this.innerSource.queryBoolean(e,t)}queryQuads(e,t){const r=(0,a.deskolemizeOperation)(e,this.sourceId);if(!r){const e=new i.ArrayIterator([],{autoStart:!1});return e.setProperty("metadata",{state:new n.MetadataValidationState,cardinality:{type:"exact",value:0}}),e}return(0,a.skolemizeQuadStream)(this.innerSource.queryQuads(r,t),this.sourceId)}queryVoid(e,t){return this.innerSource.queryVoid(e,t)}get referenceValue(){return this.innerSource.referenceValue}toString(){return`${this.innerSource.toString()}(SkolemID:${this.sourceId})`}}},35106:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(16646),t),i(r(84078),t),i(r(50339),t)},50339:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.deskolemizeOperation=t.deskolemizeQuad=t.deskolemizeTermNestedThrowing=t.deskolemizeTerm=t.skolemizeBindingsStream=t.skolemizeQuadStream=t.skolemizeBindings=t.skolemizeQuad=t.skolemizeTerm=t.getSourceId=t.SKOLEM_PREFIX=void 0;const n=r(85156),i=r(18050),a=r(13252),o=r(31578),s=new i.DataFactory;function c(e,r){return"BlankNode"===e.termType?new n.BlankNodeScoped(`bc_${r}_${e.value}`,s.namedNode(`${t.SKOLEM_PREFIX}${r}:${e.value}`)):e}function u(e,t){return(0,a.mapTermsNested)(e,(e=>c(e,t)))}function l(e,t){return e.map((e=>"Quad"===e.termType?u(e,t):c(e,t)))}function d(e,r){if("BlankNode"===e.termType&&"skolemized"in e&&(e=e.skolemized),"NamedNode"===e.termType&&e.value.startsWith(t.SKOLEM_PREFIX)){const n=e.value.indexOf(":",t.SKOLEM_PREFIX.length);if(e.value.slice(t.SKOLEM_PREFIX.length,n)===r){const t=e.value.slice(n+1,e.value.length);return s.blankNode(t)}return null}return e}function p(e,t){if("Quad"===e.termType)return(0,a.mapTermsNested)(e,(e=>{const r=d(e,t);if(!r)throw new Error("Skolemized term is not in scope for this source");return r}));const r=d(e,t);if(null===r)throw new Error("Skolemized term is not in scope for this source");return r}t.SKOLEM_PREFIX="urn:comunica_skolem:source_",t.getSourceId=function(e,t){let r=e.get(t.referenceValue);return void 0===r&&(r=`${e.size}`,e.set(t.referenceValue,r)),r},t.skolemizeTerm=c,t.skolemizeQuad=u,t.skolemizeBindings=l,t.skolemizeQuadStream=function(e,t){const r=e.map((e=>u(e,t)));return function t(){e.getProperty("metadata",(e=>{r.setProperty("metadata",e),e.state.addInvalidateListener(t)}))}(),r},t.skolemizeBindingsStream=function(e,t){const r=e.map((e=>l(e,t)));return function t(){e.getProperty("metadata",(e=>{r.setProperty("metadata",e),e.state.addInvalidateListener(t)}))}(),r},t.deskolemizeTerm=d,t.deskolemizeTermNestedThrowing=p,t.deskolemizeQuad=function(e,t){return(0,a.mapTermsNested)(e,(e=>d(e,t)??e))},t.deskolemizeOperation=function(e,t){try{return o.Util.mapOperation(e,{[o.Algebra.types.PATTERN]:(e,r)=>({result:Object.assign(r.createPattern(p(e.subject,t),p(e.predicate,t),p(e.object,t),p(e.graph,t)),{metadata:e.metadata}),recurse:!1}),[o.Algebra.types.PATH]:(e,r)=>({result:Object.assign(r.createPath(p(e.subject,t),e.predicate,p(e.object,t),p(e.graph,t)),{metadata:e.metadata}),recurse:!1})})}catch{}}},65239:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocessSetDefaults=void 0;const n=r(32362),i=r(32227);class a extends n.ActorContextPreprocess{constructor(e){super(e),this.defaultFunctionArgumentsCache={}}async test(e){return!0}async run(e){let t=e.context;if(e.initialize){t=t.setDefault(i.KeysInitQuery.queryTimestamp,new Date).setDefault(i.KeysQuerySourceIdentify.sourceIds,new Map).setDefault(i.KeysCore.log,this.logger).setDefault(i.KeysInitQuery.functionArgumentsCache,this.defaultFunctionArgumentsCache).setDefault(i.KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores,new Map);let e={language:"sparql",version:"1.1"};t.has(i.KeysInitQuery.queryFormat)?(e=t.get(i.KeysInitQuery.queryFormat),"graphql"===e.language&&(t=t.setDefault(i.KeysInitQuery.graphqlSingularizeVariables,{}))):t=t.set(i.KeysInitQuery.queryFormat,e)}return{context:t}}}t.ActorContextPreprocessSetDefaults=a},35451:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(65239),t)},58952:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocessSourceToDestination=void 0;const n=r(32362),i=r(32227);class a extends n.ActorContextPreprocess{constructor(e){super(e)}async test(e){return!0}async run(e){if(e.context.get(i.KeysInitQuery.querySourcesUnidentified)&&!e.context.get(i.KeysRdfUpdateQuads.destination)){const t=e.context.get(i.KeysInitQuery.querySourcesUnidentified);if(1===t.length)return{context:e.context.set(i.KeysRdfUpdateQuads.destination,t[0])}}return e}}t.ActorContextPreprocessSourceToDestination=a},41670:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(58952),t)},1741:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceFallback=void 0;const n=r(47702);class i extends n.ActorDereference{constructor(e){super(e)}async test(e){return!0}async run(e){return this.handleDereferenceErrors(e,new Error(`Could not dereference '${e.url}'`))}}t.ActorDereferenceFallback=i},35878:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(1741),t)},3968:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceHttp=void 0;const n=r(60376);class i extends n.ActorDereferenceHttpBase{getMaxAcceptHeaderLength(){return this.maxAcceptHeaderLengthBrowser}}t.ActorDereferenceHttp=i},60376:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceHttpBase=t.mediaTypesToAcceptString=void 0;const n=r(47702),i=r(74870),a=r(31759),o=r(10288),s=r(9929),c=/^[^ ;]*/u;function u(e,t){const r=[],n=Object.entries(e).map((([e,t])=>({mediaType:e,priority:t}))).sort(((e,t)=>t.priority===e.priority?e.mediaType.localeCompare(t.mediaType):t.priority-e.priority));let i=n.length-1;for(const{mediaType:e,priority:a}of n){const n=e+(1===a?"":`;q=${a.toFixed(3).replace(/0*$/u,"")}`);if(i+n.length>t){for(;i+9>t;)i-=(r.pop()??"").length+1;r.push("*/*;q=0.1");break}r.push(n),i+=n.length}return 0===r.length?"*/*":r.join(",")}t.mediaTypesToAcceptString=u;class l extends n.ActorDereference{constructor(e){super(e)}async test({url:e}){if(!/^https?:/u.test(e))throw new Error(`Cannot retrieve ${e} because it is not an HTTP(S) URL.`);return!0}async run(e){let t=!0;const r=new o.Headers(e.headers);let l;r.append("Accept",u(await(e.mediaTypes?.())??{},this.getMaxAcceptHeaderLength()));const d=Date.now();try{l=await this.mediatorHttp.mediate({context:e.context,init:{headers:r,method:e.method},input:e.url})}catch(t){return this.handleDereferenceErrors(e,t)}const p=(0,s.resolve)(l.url,e.url),h=Date.now()-d;if(200!==l.status){t=!1;const r=l.body?await(0,a.stringify)(i.ActorHttp.toNodeReadable(l.body)):"empty response";if(!e.acceptErrors){const t=new Error(`Could not retrieve ${e.url} (HTTP status ${l.status}):\n${r}`);return this.handleDereferenceErrors(e,t,l.headers,h)}}const f=c.exec(l.headers.get("content-type")??"")?.[0];return{url:p,data:t?i.ActorHttp.toNodeReadable(l.body):(0,n.emptyReadable)(),exists:t,requestTime:h,headers:l.headers,mediaType:"text/plain"===f?void 0:f}}}t.ActorDereferenceHttpBase=l},68132:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(3968),t),i(r(60376),t)},96636:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceRdfParse=void 0;const n=r(53583);class i extends n.ActorDereferenceRdf{constructor(e){super(e)}async getMetadata(e){return{baseIRI:e.url}}}t.ActorDereferenceRdfParse=i},54341:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(96636),t)},48040:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHashBindingsSha1=void 0;const n=r(38431),i=r(99499),a=r(22112),o=r(62168);class s extends n.ActorHashBindings{async test(e){if(!e.allowHashCollisions)throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);return!0}async run(e){return{hashFunction:e=>(0,i.sha1)().update(o(Object.fromEntries([...e].map((([e,t])=>[(0,a.termToString)(e),(0,a.termToString)(t)]))))).digest("hex"),hashCollisions:!0}}}t.ActorHashBindingsSha1=s},11150:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(48040),t)},66748:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHashQuadsSha1=void 0;const n=r(16179),i=r(99499),a=r(22112);class o extends n.ActorHashQuads{async test(e){if(!e.allowHashCollisions)throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);return!0}async run(e){return{hashFunction:e=>(0,i.sha1)().update(JSON.stringify((0,a.quadToStringQuad)(e))).digest("hex"),hashCollisions:!0}}}t.ActorHashQuadsSha1=o},64188:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(66748),t)},51803:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttpFetch=void 0;const n=r(74870),i=r(32227);r(90482);const a=r(63562);class o extends n.ActorHttp{constructor(e){super(e),this.userAgent=o.createUserAgent(),this.fetchInitPreprocessor=new a.FetchInitPreprocessor(e.agentOptions)}static createUserAgent(){return`Comunica/actor-http-fetch (${void 0===globalThis.navigator?`Node.js ${process.version}; ${process.platform}`:`Browser-${globalThis.navigator.userAgent}`})`}async test(e){return{time:Number.POSITIVE_INFINITY}}static async getResponse(e,t,r,n,i,a){let o,s=n+1;for(;s-- >0;)try{const n=await e(t,r);if(a&&n.status>=500&&n.status<600)throw new Error(`Server replied with response code ${n.status}: ${n.statusText}`);return n}catch(e){if(o=e,r.signal?.aborted)throw e;s>0&&await new Promise(((e,t)=>{setTimeout(e,i),r.signal?.addEventListener("abort",(()=>{t(new Error("Fetch aborted by timeout."))}))}))}throw n>0?new Error(`Number of fetch retries (${n}) exceeded. Last error: ${String(o)}`):o}async run(e){const t=e.init?.headers??{};e.init=e.init??{},e.init.headers=new Headers(t),e.init.headers.has("user-agent")||e.init.headers.append("user-agent",this.userAgent);const r=e.context.get(i.KeysHttp.auth);r&&e.init.headers.append("Authorization",`Basic ${Buffer.from(r).toString("base64")}`),this.logInfo(e.context,`Requesting ${"string"==typeof e.input?e.input:e.input.url}`,(()=>({headers:n.ActorHttp.headersToHash(new Headers(e.init.headers)),method:e.init.method??"GET"}))),e.init?.headers&&"append"in e.init.headers&&e.context.has(i.KeysHttp.fetch)&&(e.init.headers=n.ActorHttp.headersToHash(e.init.headers));let a={...e.init};e.context.get(i.KeysHttp.includeCredentials)&&(a.credentials="include");const s=e.context?.get(i.KeysHttp.httpTimeout);let c,u;if(void 0!==s){const e=await this.fetchInitPreprocessor.createAbortController();a.signal=e.signal,u=()=>e.abort(),c=setTimeout((()=>u()),s)}try{a=await this.fetchInitPreprocessor.handle(a);const t=e.context?.get(i.KeysHttp.httpRetryCount)??0,r=e.context?.get(i.KeysHttp.httpRetryDelay)??0,n=e.context?.get(i.KeysHttp.httpRetryOnServerError)??!1,s=e.context?.get(i.KeysHttp.fetch),l=await o.getResponse(s??fetch,e.input,a,t,r,n);return void 0!==c&&(e.context?.get(i.KeysHttp.httpBodyTimeout)&&l.body?(u=()=>l.body?.cancel(new Error(`HTTP timeout when reading the body of ${l.url}.\nThis error can be disabled by modifying the 'httpBodyTimeout' and/or 'httpTimeout' options.`)),l.body.on("close",(()=>{clearTimeout(c)}))):clearTimeout(c)),l.body&&!l.body.cancel&&(l.body.cancel=async e=>{l.body.destroy(e),void 0!==c&&clearTimeout(c)}),l}catch(e){throw void 0!==c&&clearTimeout(c),e}}}t.ActorHttpFetch=o},63562:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FetchInitPreprocessor=void 0;const n=r(74870);t.FetchInitPreprocessor=class{async handle(e){if(e.headers){const t=new Headers(e.headers);t.has("user-agent")&&t.delete("user-agent"),e.headers=t}if(e?.headers&&"append"in e.headers&&(e.headers=n.ActorHttp.headersToHash(e.headers)),e.body&&"string"!=typeof e.body&&"getReader"in e.body){const t=e.body.getReader(),r=[];for(;;){const{done:e,value:n}=await t.read();if(e)break;r.push(n)}e.body=r.join("")}return{keepalive:!e.body,...e}}async createAbortController(){return new AbortController}}},28590:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(51803),t)},57643:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttpProxy=void 0;const n=r(74870),i=r(32227);class a extends n.ActorHttp{constructor(e){super(e)}async test(e){const t=e.context.get(i.KeysHttpProxy.httpProxyHandler);if(!t)throw new Error(`Actor ${this.name} could not find a proxy handler in the context.`);if(!await t.getProxy(e))throw new Error(`Actor ${this.name} could not determine a proxy for the given request.`);return{time:Number.POSITIVE_INFINITY}}async run(e){const t="string"==typeof e.input?e.input:e.input.url,r=e.context.get(i.KeysHttpProxy.httpProxyHandler),n=await this.mediatorHttp.mediate({...await r.getProxy(e),context:e.context.delete(i.KeysHttpProxy.httpProxyHandler)});return Object.defineProperty(n,"url",{configurable:!0,enumerable:!0,get:()=>n.headers.get("x-final-url")??t}),n}}t.ActorHttpProxy=a},76862:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyHandlerStatic=void 0,t.ProxyHandlerStatic=class{constructor(e){this.prefixUrl=e}async getProxy(e){return{init:e.init,input:this.modifyInput(e.input)}}modifyInput(e){return"string"==typeof e?this.prefixUrl+e:new Request(this.prefixUrl+e.url,e)}}},48230:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(57643),t),i(r(76862),t)},363:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttpWayback=void 0;const n=r(74870),i=r(32227),a=r(31759);r(90482);const o="http://wayback.archive-it.org/";function s(e){const t=new Request(e.input,e.init);return{input:new Request(new URL(`/${t.url}`,o),t)}}function c(e){const t=e.get(i.KeysHttpProxy.httpProxyHandler);return t?e=>t.getProxy(s(e)):e=>Promise.resolve(s(e))}class u extends n.ActorHttp{constructor(e){super(e)}async test(e){return!0}async run(e){let t=await this.mediatorHttp.mediate(e);if(404===t.status&&e.context.get(i.KeysHttpWayback.recoverBrokenLinks)){let r=await this.mediatorHttp.mediate({...e,context:e.context.set(i.KeysHttpWayback.recoverBrokenLinks,!1).set(i.KeysHttpProxy.httpProxyHandler,{getProxy:c(e.context)})});200===r.status&&([t,r]=[r,t]);const{body:o}=r;o&&("cancel"in o&&"function"==typeof o.cancel?await o.cancel():"destroy"in o&&"function"==typeof o.destroy?o.destroy():await(0,a.stringify)(n.ActorHttp.toNodeReadable(o)))}return t}}t.ActorHttpWayback=u},55390:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(363),t)},94394:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorInitQuery=void 0;const n=r(59266);"undefined"==typeof process&&(globalThis.process=r(39907));class i extends n.ActorInitQueryBase{}t.ActorInitQuery=i},59266:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorInitQueryBase=void 0;const n=r(99784);class i extends n.ActorInit{async test(e){return!0}async run(e){throw new Error("ActorInitSparql#run is not supported in the browser.")}}t.ActorInitQueryBase=i},52295:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QueryEngineBase=void 0;const n=r(32227),i=r(34368);class a{constructor(e){this.actorInitQuery=e}async queryBindings(e,t){return this.queryOfType(e,t,"bindings")}async queryQuads(e,t){return this.queryOfType(e,t,"quads")}async queryBoolean(e,t){return this.queryOfType(e,t,"boolean")}async queryVoid(e,t){return this.queryOfType(e,t,"void")}async queryOfType(e,t,r){const n=await this.query(e,t);if(n.resultType===r)return await n.execute();throw new Error(`Query result type '${r}' was expected, while '${n.resultType}' was found.`)}async query(e,t){const r=await this.queryOrExplain(e,t);if("explain"in r)throw new Error("Tried to explain a query when in query-only mode");return r}async explain(e,t,r){return t.explain=r,await this.queryOrExplain(e,t)}async queryOrExplain(e,t){const r=i.ActionContext.ensureActionContext(t);r.get(n.KeysInitQuery.noCache)&&await this.invalidateHttpCache();const{result:o}=await this.actorInitQuery.mediatorQueryProcess.mediate({query:e,context:r});return"explain"in o?o:a.internalToFinalResult(o)}async getResultMediaTypes(e){return e=i.ActionContext.ensureActionContext(e),(await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeCombiner.mediate({context:e,mediaTypes:!0})).mediaTypes}async getResultMediaTypeFormats(e){return e=i.ActionContext.ensureActionContext(e),(await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeFormatCombiner.mediate({context:e,mediaTypeFormats:!0})).mediaTypeFormats}async resultToString(e,t,r){if(r=i.ActionContext.ensureActionContext(r),!t)switch(e.resultType){case"bindings":t="application/json";break;case"quads":t="application/trig";break;default:t="simple"}const n={...await a.finalToInternalResult(e),context:r};return(await this.actorInitQuery.mediatorQueryResultSerialize.mediate({context:r,handle:n,handleMediaType:t})).handle}invalidateHttpCache(e,t){return t=i.ActionContext.ensureActionContext(t),this.actorInitQuery.mediatorHttpInvalidate.mediate({url:e,context:t})}static internalToFinalResult(e){switch(e.type){case"bindings":return{resultType:"bindings",execute:async()=>e.bindingsStream,metadata:async()=>await e.metadata(),context:e.context};case"quads":return{resultType:"quads",execute:async()=>e.quadStream,metadata:async()=>await e.metadata(),context:e.context};case"boolean":return{resultType:"boolean",execute:async()=>e.execute(),context:e.context};case"void":return{resultType:"void",execute:async()=>e.execute(),context:e.context}}}static async finalToInternalResult(e){switch(e.resultType){case"bindings":return{type:"bindings",bindingsStream:await e.execute(),metadata:async()=>await e.metadata()};case"quads":return{type:"quads",quadStream:await e.execute(),metadata:async()=>await e.metadata()};case"boolean":return{type:"boolean",execute:()=>e.execute()};case"void":return{type:"void",execute:()=>e.execute()}}}}t.QueryEngineBase=a},15729:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.QueryEngineBase=void 0,i(r(59266),t),i(r(94394),t);var a=r(52295);Object.defineProperty(t,"QueryEngineBase",{enumerable:!0,get:function(){return a.QueryEngineBase}})},35153:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationAssignSourcesExhaustive=void 0;const n=r(6716),i=r(59510),a=r(86789),o=r(32227),s=r(31578);class c extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){return!0}async run(e){const t=e.context.get(o.KeysQueryOperation.querySources)??[];if(0===t.length)return{operation:e.operation,context:e.context};if(1===t.length){const r=t[0],n=e.context.get(o.KeysRdfUpdateQuads.destination);if(!n||r.source.referenceValue===(0,a.getDataDestinationValue)(n))try{const t=await r.source.getSelectorShape(e.context);if(i.ActorQueryOperation.doesShapeAcceptOperation(t,e.operation))return{operation:i.ActorQueryOperation.assignOperationSource(e.operation,r),context:e.context}}catch{}}return{operation:this.assignExhaustive(e.operation,t),context:e.context.delete(o.KeysInitQuery.queryString)}}assignExhaustive(e,t){const r=this;return s.Util.mapOperation(e,{[s.Algebra.types.PATTERN]:(e,r)=>1===t.length?{result:i.ActorQueryOperation.assignOperationSource(e,t[0]),recurse:!1}:{result:r.createUnion(t.map((t=>i.ActorQueryOperation.assignOperationSource(e,t)))),recurse:!1},[s.Algebra.types.LINK]:(e,r)=>1===t.length?{result:i.ActorQueryOperation.assignOperationSource(e,t[0]),recurse:!1}:{result:r.createAlt(t.map((t=>i.ActorQueryOperation.assignOperationSource(e,t)))),recurse:!1},[s.Algebra.types.NPS]:(e,r)=>1===t.length?{result:i.ActorQueryOperation.assignOperationSource(e,t[0]),recurse:!1}:{result:r.createAlt(t.map((t=>i.ActorQueryOperation.assignOperationSource(e,t)))),recurse:!1},[s.Algebra.types.SERVICE]:e=>({result:e,recurse:!1}),[s.Algebra.types.CONSTRUCT]:(e,n)=>({result:n.createConstruct(r.assignExhaustive(e.input,t),e.template),recurse:!1}),[s.Algebra.types.DELETE_INSERT]:(e,n)=>({result:n.createDeleteInsert(e.delete,e.insert,e.where?r.assignExhaustive(e.where,t):void 0),recurse:!1})})}}t.ActorOptimizeQueryOperationAssignSourcesExhaustive=c},94741:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(35153),t)},37919:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationBgpToJoin=void 0;const n=r(6716),i=r(31578);class a extends n.ActorOptimizeQueryOperation{async test(e){return!0}async run(e){return{operation:i.Util.mapOperation(e.operation,{bgp:(e,t)=>({recurse:!1,result:t.createJoin(e.patterns)})}),context:e.context}}}t.ActorOptimizeQueryOperationBgpToJoin=a},28084:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(37919),t)},54166:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationConstructDistinct=void 0;const n=r(6716),i=r(88851),a=r(20512);class o extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){if(!e.context.has(i.KeysInitQuery.distinctConstruct))throw new Error(`${this.name} was not enabled by the query.`);return!0}async run(e){return{operation:a.Util.mapOperation(e.operation,{construct:(e,t)=>({recurse:!1,result:t.createDistinct(t.createConstruct(e.input,e.template))})}),context:e.context.delete(i.KeysInitQuery.distinctConstruct)}}}t.ActorOptimizeQueryOperationConstructDistinct=o},78724:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(54166),t)},64372:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationDescribeToConstructsSubject=void 0;const n=r(6716),i=r(18050),a=r(31578),o=new i.DataFactory,s=new a.Factory;class c extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){if(e.operation.type!==a.Algebra.types.DESCRIBE)throw new Error(`Actor ${this.name} only supports describe operations, but got ${e.operation.type}`);return!0}async run(e){const t=e.operation,r=t.terms.filter((e=>"Variable"!==e.termType)).map((e=>{const t=[o.quad(e,o.variable("__predicate"),o.variable("__object"))];return t.forEach((e=>e.type="pattern")),{input:{type:a.Algebra.types.BGP,patterns:t},template:t,type:"construct"}}));if(r.length!==t.terms.length){let e=[];t.terms.filter((e=>"Variable"===e.termType)).forEach(((t,r)=>{const n=[o.quad(t,o.variable(`__predicate${r}`),o.variable(`__object${r}`))];n.forEach((e=>e.type="pattern")),e=[...e,...n]})),r.push({input:{type:a.Algebra.types.JOIN,input:[t.input,{type:a.Algebra.types.BGP,patterns:e}]},template:e,type:a.Algebra.types.CONSTRUCT})}return{operation:s.createUnion(r,!1),context:e.context}}}t.ActorOptimizeQueryOperationDescribeToConstructsSubject=c},78571:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(64372),t)},18348:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationFilterPushdown=void 0;const n=r(6716),i=r(59510),a=r(13252),o=r(31578);class s extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){return!0}async run(e){let t=e.operation;const r=this;this.splitConjunctive&&(t=o.Util.mapOperation(t,{filter:(t,n)=>t.expression.expressionType===o.Algebra.expressionTypes.OPERATOR&&"&&"===t.expression.operator?(r.logDebug(e.context,`Split conjunctive filter into ${t.expression.args.length} nested filters`),{recurse:!0,result:t.expression.args.reduce(((e,t)=>n.createFilter(e,t)),t.input)}):{recurse:!0,result:t}}));const n=this.getSources(t),i=new Map(await Promise.all(n.map((async t=>[t,await t.source.getSelectorShape(e.context)]))));let a=!0,s=0;for(;a&&s1&&r.logDebug(e.context,`Pushed down filters in ${s} iterations`),this.mergeConjunctive&&(t=o.Util.mapOperation(t,{filter(t,n){if(t.input.type===o.Algebra.types.FILTER){const{nestedExpressions:i,input:a}=r.getNestedFilterExpressions(t);return r.logDebug(e.context,`Merge ${i.length} nested filters into conjunctive filter`),{recurse:!0,result:n.createFilter(a,i.slice(1).reduce(((e,t)=>n.createOperatorExpression("&&",[e,t])),i[0]))}}return{recurse:!0,result:t}}})),{operation:t,context:e.context}}shouldAttemptPushDown(e,t,r){if(this.aggressivePushdown)return!0;const n=e.expression;return n.expressionType===o.Algebra.expressionTypes.OPERATOR&&"="===n.operator&&("term"===n.args[0].expressionType&&"Variable"!==n.args[0].term.termType&&"term"===n.args[1].expressionType&&"Variable"===n.args[1].term.termType||"term"===n.args[0].expressionType&&"Variable"===n.args[0].term.termType&&"term"===n.args[1].expressionType&&"Variable"!==n.args[1].term.termType)||!!t.some((t=>i.ActorQueryOperation.doesShapeAcceptOperation(r.get(t),e)))}getSources(e){const t=new Set,r=e=>{const r=i.ActorQueryOperation.getOperationSource(e);return r&&t.add(r),!1};return o.Util.recurseOperation(e,{[o.Algebra.types.PATTERN]:r,[o.Algebra.types.LINK]:r,[o.Algebra.types.NPS]:r,[o.Algebra.types.SERVICE]:r}),[...t]}getExpressionVariables(e){switch(e.expressionType){case o.Algebra.expressionTypes.AGGREGATE:case o.Algebra.expressionTypes.WILDCARD:throw new Error(`Getting expression variables is not supported for ${e.expressionType}`);case o.Algebra.expressionTypes.EXISTENCE:return o.Util.inScopeVariables(e.input);case o.Algebra.expressionTypes.NAMED:return[];case o.Algebra.expressionTypes.OPERATOR:return(0,a.uniqTerms)(e.args.flatMap((e=>this.getExpressionVariables(e))));case o.Algebra.expressionTypes.TERM:return"Variable"===e.term.termType?[e.term]:[]}}getOverlappingOperations(e,t){const r=[],n=[],i=[];for(const a of e.input){const e=o.Util.inScopeVariables(a);this.variablesSubSetOf(t,e)?r.push(a):this.variablesIntersect(t,e)?n.push(a):i.push(a)}return{fullyOverlapping:r,partiallyOverlapping:n,notOverlapping:i}}filterPushdown(e,t,r,n,i){if(this.isExpressionFalse(e))return[!0,n.createUnion([])];if(e.type===o.Algebra.types.EXPRESSION&&e.expressionType===o.Algebra.expressionTypes.EXISTENCE)return[!1,n.createFilter(r,e)];switch(r.type){case o.Algebra.types.EXTEND:return this.variablesIntersect([r.variable],t)?[!1,n.createFilter(r,e)]:[!0,n.createExtend(this.filterPushdown(e,t,r.input,n,i)[1],r.variable,r.expression)];case o.Algebra.types.FILTER:{const[a,o]=this.filterPushdown(e,t,r.input,n,i);return[a,n.createFilter(o,r.expression)]}case o.Algebra.types.JOIN:{if(0===r.input.length)return[!1,n.createFilter(r,e)];const{fullyOverlapping:a,partiallyOverlapping:o,notOverlapping:s}=this.getOverlappingOperations(r,t),c=[];let u=!1;return a.length>0&&(u=!0,c.push(n.createJoin(a.map((r=>this.filterPushdown(e,t,r,n,i)[1]))))),o.length>0&&c.push(n.createFilter(n.createJoin(o,!1),e)),s.length>0&&c.push(...s),c.length>1&&(u=!0),u&&this.logDebug(i,`Push down filter across join entries with ${a.length} fully overlapping, ${o.length} partially overlapping, and ${s.length} not overlapping`),[u,1===c.length?c[0]:n.createJoin(c)]}case o.Algebra.types.NOP:return[!0,r];case o.Algebra.types.PROJECT:return this.variablesIntersect(r.variables,t)?[!0,n.createProject(this.filterPushdown(e,t,r.input,n,i)[1],r.variables)]:[!0,r];case o.Algebra.types.UNION:{const{fullyOverlapping:a,partiallyOverlapping:o,notOverlapping:s}=this.getOverlappingOperations(r,t),c=[];let u=!1;return a.length>0&&(u=!0,c.push(n.createUnion(a.map((r=>this.filterPushdown(e,t,r,n,i)[1]))))),o.length>0&&c.push(n.createFilter(n.createUnion(o,!1),e)),s.length>0&&c.push(...s),c.length>1&&(u=!0),u&&this.logDebug(i,`Push down filter across union entries with ${a.length} fully overlapping, ${o.length} partially overlapping, and ${s.length} not overlapping`),[u,1===c.length?c[0]:n.createUnion(c)]}case o.Algebra.types.VALUES:return this.variablesIntersect(r.variables,t)?[!1,n.createFilter(r,e)]:[!0,r];case o.Algebra.types.LEFT_JOIN:if(this.pushIntoLeftJoins){const a=o.Util.inScopeVariables(r.input[1]);if(!this.variablesIntersect(t,a))return this.logDebug(i,"Push down filter into left join"),[!0,n.createLeftJoin(this.filterPushdown(e,t,r.input[0],n,i)[1],r.input[1],r.expression)]}return[!1,n.createFilter(r,e)];case o.Algebra.types.PATTERN:if(this.pushEqualityIntoPatterns){const t=this.getEqualityExpressionPushableIntoPattern(e);if(t){let e=!1;const s=r.metadata;if((r=(0,a.mapTermsNested)(r,(r=>r.equals(t.variable)?(e=!0,t.term):r))).type=o.Algebra.types.PATTERN,r.metadata=s,e)return this.logDebug(i,`Push down filter into pattern for ?${t.variable.value}`),[!0,n.createJoin([r,n.createValues([t.variable],[{[`?${t.variable.value}`]:t.term}])])]}}return[!1,n.createFilter(r,e)];case o.Algebra.types.PATH:if(this.pushEqualityIntoPatterns){const t=this.getEqualityExpressionPushableIntoPattern(e);if(t&&(r.subject.equals(t.variable)||r.object.equals(t.variable))){this.logDebug(i,`Push down filter into path for ?${t.variable.value}`);const e=r.metadata;return(r=n.createPath(r.subject.equals(t.variable)?t.term:r.subject,r.predicate,r.object.equals(t.variable)?t.term:r.object)).metadata=e,[!0,n.createJoin([r,n.createValues([t.variable],[{[`?${t.variable.value}`]:t.term}])])]}}return[!1,n.createFilter(r,e)];case o.Algebra.types.MINUS:case o.Algebra.types.ALT:case o.Algebra.types.ASK:case o.Algebra.types.BGP:case o.Algebra.types.CONSTRUCT:case o.Algebra.types.DESCRIBE:case o.Algebra.types.DISTINCT:case o.Algebra.types.EXPRESSION:case o.Algebra.types.FROM:case o.Algebra.types.GRAPH:case o.Algebra.types.GROUP:case o.Algebra.types.INV:case o.Algebra.types.LINK:case o.Algebra.types.NPS:case o.Algebra.types.ONE_OR_MORE_PATH:case o.Algebra.types.ORDER_BY:case o.Algebra.types.REDUCED:case o.Algebra.types.SEQ:case o.Algebra.types.SERVICE:case o.Algebra.types.SLICE:case o.Algebra.types.ZERO_OR_MORE_PATH:case o.Algebra.types.ZERO_OR_ONE_PATH:case o.Algebra.types.COMPOSITE_UPDATE:case o.Algebra.types.DELETE_INSERT:case o.Algebra.types.LOAD:case o.Algebra.types.CLEAR:case o.Algebra.types.CREATE:case o.Algebra.types.DROP:case o.Algebra.types.ADD:case o.Algebra.types.MOVE:case o.Algebra.types.COPY:return[!1,n.createFilter(r,e)]}}getEqualityExpressionPushableIntoPattern(e){if(e.expressionType===o.Algebra.expressionTypes.OPERATOR&&"="===e.operator){if("term"===e.args[0].expressionType&&"Variable"!==e.args[0].term.termType&&("Literal"!==e.args[0].term.termType||this.isLiteralWithCanonicalLexicalForm(e.args[0].term))&&"term"===e.args[1].expressionType&&"Variable"===e.args[1].term.termType)return{variable:e.args[1].term,term:e.args[0].term};if("term"===e.args[0].expressionType&&"Variable"===e.args[0].term.termType&&"term"===e.args[1].expressionType&&"Variable"!==e.args[1].term.termType&&("Literal"!==e.args[1].term.termType||this.isLiteralWithCanonicalLexicalForm(e.args[1].term)))return{variable:e.args[0].term,term:e.args[1].term}}}isLiteralWithCanonicalLexicalForm(e){if("Literal"===e.termType)switch(e.datatype.value){case"http://www.w3.org/2001/XMLSchema#string":case"http://www.w3.org/1999/02/22-rdf-syntax-ns#langString":case"http://www.w3.org/2001/XMLSchema#normalizedString":case"http://www.w3.org/2001/XMLSchema#anyURI":case"http://www.w3.org/2001/XMLSchema#base64Binary":case"http://www.w3.org/2001/XMLSchema#language":case"http://www.w3.org/2001/XMLSchema#Name":case"http://www.w3.org/2001/XMLSchema#NCName":case"http://www.w3.org/2001/XMLSchema#NMTOKEN":case"http://www.w3.org/2001/XMLSchema#token":case"http://www.w3.org/2001/XMLSchema#hexBinary":return!0}return!1}variablesIntersect(e,t){return e.some((e=>t.some((t=>e.equals(t)))))}variablesSubSetOf(e,t){return e.length<=t.length&&e.every((e=>t.some((t=>e.equals(t)))))}isExpressionFalse(e){return e.term&&"Literal"===e.term.termType&&"false"===e.term.value}getNestedFilterExpressions(e){if(e.input.type===o.Algebra.types.FILTER){const t=this.getNestedFilterExpressions(e.input);return{nestedExpressions:[e.expression,...t.nestedExpressions],input:t.input}}return{nestedExpressions:[e.expression],input:e.input}}}t.ActorOptimizeQueryOperationFilterPushdown=s},48989:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18348),t)},14400:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationGroupSources=void 0;const n=r(6716),i=r(59510),a=r(31578),o=new a.Factory;class s extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){if(i.ActorQueryOperation.getOperationSource(e.operation))throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);return!0}async run(e){return{operation:await this.groupOperation(e.operation,e.context),context:e.context}}async groupOperation(e,t){if(i.ActorQueryOperation.getOperationSource(e)??!("input"in e))return e;if(!Array.isArray(e.input)){const r=await this.groupOperation(e.input,t);if(r.metadata?.scopedSource){const n=i.ActorQueryOperation.getOperationSource(r);i.ActorQueryOperation.doesShapeAcceptOperation(await n.source.getSelectorShape(t),e)&&(this.logDebug(t,`Hoist 1 source-specific operation into a single ${e.type} operation for ${n.source.toString()}`),i.ActorQueryOperation.removeOperationSource(r),e=i.ActorQueryOperation.assignOperationSource(e,n))}return{...e,input:r}}const r=await Promise.all(e.input.map((e=>this.groupOperation(e,t)))),n=this.clusterOperationsWithEqualSources(r);if(1===n.length){const r=n[0],a=i.ActorQueryOperation.getOperationSource(n[0][0]);return{...await this.moveSourceAnnotationUpwardsIfPossible(e,r,a,t),input:r}}if(n.length===r.length)return{...e,input:r};let s;switch(e.type){case a.Algebra.types.JOIN:s=o.createJoin.bind(o);break;case a.Algebra.types.UNION:s=o.createUnion.bind(o);break;case a.Algebra.types.ALT:s=o.createAlt.bind(o);break;case a.Algebra.types.SEQ:s=o.createSeq.bind(o);break;default:throw new Error(`Unsupported operation '${e.type}' detected while grouping sources`)}return await this.groupOperationMulti(n,s,t)}async groupOperationMulti(e,t,r){let n=!0;const a=await Promise.all(e.map((async e=>{const a=i.ActorQueryOperation.getOperationSource(e[0]),o=await this.moveSourceAnnotationUpwardsIfPossible(t(e,!0),e,a,r);return i.ActorQueryOperation.getOperationSource(o)&&(n=!1),o})));return t(a,n)}clusterOperationsWithEqualSources(e){const t=new Map,r=[];for(const n of e){const e=i.ActorQueryOperation.getOperationSource(n);e?(t.has(e)||t.set(e,[]),t.get(e).push(n)):r.push(n)}const n=[];r.length>0&&n.push(r);for(const[e,r]of t.entries())n.push(r.map((t=>i.ActorQueryOperation.assignOperationSource(t,e))));return n}async moveSourceAnnotationUpwardsIfPossible(e,t,r,n){if(r&&i.ActorQueryOperation.doesShapeAcceptOperation(await r.source.getSelectorShape(n),e)){this.logDebug(n,`Hoist ${t.length} source-specific operations into a single ${e.type} operation for ${r.source.toString()}`),e=i.ActorQueryOperation.assignOperationSource(e,r);for(const e of t)i.ActorQueryOperation.removeOperationSource(e)}return e}}t.ActorOptimizeQueryOperationGroupSources=s},78992:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(14400),t)},90042:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationJoinBgp=void 0;const n=r(6716),i=r(31578);class a extends n.ActorOptimizeQueryOperation{async test(e){return!0}async run(e){return{operation:i.Util.mapOperation(e.operation,{join:(e,t)=>e.input.every((e=>"bgp"===e.type))?{recurse:!1,result:t.createBgp(e.input.flatMap((e=>e.patterns)))}:{recurse:!1,result:e}}),context:e.context}}}t.ActorOptimizeQueryOperationJoinBgp=a},46980:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(90042),t)},33186:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationJoinConnected=void 0;const n=r(6716),i=r(31578);class a extends n.ActorOptimizeQueryOperation{async test(e){return!0}async run(e){return{operation:i.Util.mapOperation(e.operation,{join:(e,t)=>({recurse:!1,result:a.cluster(e,t)})}),context:e.context}}static cluster(e,t){let r,n=e.input.map((e=>({inScopeVariables:Object.fromEntries(i.Util.inScopeVariables(e).map((e=>[e.value,!0]))),entries:[e]})));do{r=n,n=a.clusterIteration(r)}while(r.length!==n.length);const o=n.map((e=>1===e.entries.length?e.entries[0]:t.createJoin(e.entries)));return 1===o.length?o[0]:t.createJoin(o,!1)}static clusterIteration(e){const t=[];for(const r of e){let e=!1;for(const n of t)if(a.haveOverlappingVariables(r.inScopeVariables,n.inScopeVariables)){n.entries=[...n.entries,...r.entries],n.inScopeVariables={...n.inScopeVariables,...r.inScopeVariables},e=!0;break}e||t.push({inScopeVariables:r.inScopeVariables,entries:r.entries})}return t}static haveOverlappingVariables(e,t){for(const r of Object.keys(e))if(t[r])return!0;return!1}}t.ActorOptimizeQueryOperationJoinConnected=a},98498:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(33186),t)},92834:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationPruneEmptySourceOperations=void 0;const n=r(6716),i=r(59510),a=r(32227),o=r(18050),s=r(31578),c=new s.Factory,u=new o.DataFactory;class l extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){if(i.ActorQueryOperation.getOperationSource(e.operation))throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);return!0}async run(e){let t=e.operation;const r=[],n=this;s.Util.recurseOperation(t,{[s.Algebra.types.UNION]:e=>(n.collectMultiOperationInputs(e.input,r,s.Algebra.types.PATTERN),!0),[s.Algebra.types.ALT]:e=>(n.collectMultiOperationInputs(e.input,r,s.Algebra.types.LINK),!1),[s.Algebra.types.SERVICE]:()=>!1});const a=new Set;return await Promise.all(r.map((async t=>{const r="link"===t.type?c.createPattern(u.variable("?s"),t.iri,u.variable("?o")):t;await this.hasSourceResults(i.ActorQueryOperation.getOperationSource(t),r,e.context)||a.add(t)}))),a.size>0&&(this.logDebug(e.context,`Pruning ${a.size} source-specific operations`),t=s.Util.mapOperation(t,{[s.Algebra.types.UNION]:(e,t)=>n.mapMultiOperation(e,a,(e=>t.createUnion(e))),[s.Algebra.types.ALT]:(e,t)=>n.mapMultiOperation(e,a,(e=>t.createAlt(e)))}),t=s.Util.mapOperation(t,{[s.Algebra.types.PROJECT]:(e,t)=>l.hasEmptyOperation(e)?{recurse:!1,result:t.createUnion([])}:{recurse:!0,result:e},[s.Algebra.types.LEFT_JOIN]:e=>l.hasEmptyOperation(e.input[1])?{recurse:!0,result:e.input[0]}:{recurse:!0,result:e}})),{operation:t,context:e.context}}static hasEmptyOperation(e){let t=!1;return s.Util.recurseOperation(e,{[s.Algebra.types.UNION]:e=>(e.input.every((e=>l.hasEmptyOperation(e)))&&(t=!0),!1),[s.Algebra.types.ALT]:e=>(0===e.input.length&&(t=!0),!1),[s.Algebra.types.LEFT_JOIN]:e=>(l.hasEmptyOperation(e.input[0])&&(t=!0),!1)}),t}collectMultiOperationInputs(e,t,r){for(const n of e)i.ActorQueryOperation.getOperationSource(n)&&n.type===r&&t.push(n)}mapMultiOperation(e,t,r){const n=e.input.filter((e=>!t.has(e)));return n.length===e.input.length?{result:e,recurse:!0}:0===n.length?{result:r([]),recurse:!1}:1===n.length?{result:n[0],recurse:!0}:{result:r(n),recurse:!0}}async hasSourceResults(e,t,r){if(e.context?.get(a.KeysQuerySourceIdentify.traverse))return!0;if(this.useAskIfSupported){const n=c.createAsk(t);if(i.ActorQueryOperation.doesShapeAcceptOperation(await e.source.getSelectorShape(r),n))return e.source.queryBoolean(n,r)}const n=e.source.queryBindings(t,r);return new Promise(((e,t)=>{n.on("error",t),n.getProperty("metadata",(t=>{n.destroy(),e(t.cardinality.value>0)}))}))}}t.ActorOptimizeQueryOperationPruneEmptySourceOperations=l},94607:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(92834),t)},13614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationRewriteAdd=void 0;const n=r(6716),i=r(18050),a=r(31578),o=new i.DataFactory;class s extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){return!0}async run(e){return{operation:a.Util.mapOperation(e.operation,{[a.Algebra.types.ADD](e,t){const r="DEFAULT"===e.destination?o.defaultGraph():e.destination,n="DEFAULT"===e.source?o.defaultGraph():e.source;return{result:t.createDeleteInsert(void 0,[t.createPattern(o.variable("s"),o.variable("p"),o.variable("o"),r)],t.createPattern(o.variable("s"),o.variable("p"),o.variable("o"),n)),recurse:!1}}}),context:e.context}}}t.ActorOptimizeQueryOperationRewriteAdd=s},63514:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(13614),t)},25812:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationRewriteCopy=void 0;const n=r(6716),i=r(31578);class a extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){return!0}async run(e){return{operation:i.Util.mapOperation(e.operation,{[i.Algebra.types.COPY](e,t){let r;return r="string"==typeof e.destination&&"string"==typeof e.source&&e.destination===e.source||"string"!=typeof e.destination&&"string"!=typeof e.source&&e.destination.equals(e.source)?t.createCompositeUpdate([]):t.createCompositeUpdate([t.createDrop(e.destination,!0),t.createAdd(e.source,e.destination,e.silent)]),{result:r,recurse:!1}}}),context:e.context}}}t.ActorOptimizeQueryOperationRewriteCopy=a},15718:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(25812),t)},90348:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperationRewriteMove=void 0;const n=r(6716),i=r(31578);class a extends n.ActorOptimizeQueryOperation{constructor(e){super(e)}async test(e){return!0}async run(e){return{operation:i.Util.mapOperation(e.operation,{[i.Algebra.types.MOVE](e,t){let r;if("string"==typeof e.destination&&"string"==typeof e.source&&e.destination===e.source||"string"!=typeof e.destination&&"string"!=typeof e.source&&e.destination.equals(e.source))r=t.createCompositeUpdate([]);else{const n=[t.createDrop(e.destination,!0),t.createAdd(e.source,e.destination,e.silent),t.createDrop(e.source)];r=t.createCompositeUpdate(n)}return{result:r,recurse:!1}}}),context:e.context}}}t.ActorOptimizeQueryOperationRewriteMove=a},83910:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(90348),t)},82476:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationAsk=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"ask")}async testOperation(e,t){return!0}async runOperation(e,t){const r=await this.mediatorQueryOperation.mediate({operation:e.input,context:t}),{bindingsStream:i}=n.ActorQueryOperation.getSafeBindings(r);return{type:"boolean",execute:async()=>1===(await i.take(1).toArray()).length}}}t.ActorQueryOperationAsk=i},57321:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(82476),t)},9147:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationBgpJoin=void 0;const n=r(59510),i=r(31578);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"bgp")}async testOperation(e,t){return!0}async runOperation(e,t){return this.mediatorQueryOperation.mediate({operation:a.FACTORY.createJoin(e.patterns),context:t})}}t.ActorQueryOperationBgpJoin=a,a.FACTORY=new i.Factory},20888:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(9147),t)},59516:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationConstruct=void 0;const n=r(59510),i=r(13252),a=r(31578),o=r(59218);class s extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"construct")}static getVariables(e){return(0,i.uniqTerms)([].concat.apply([],e.map((e=>(0,i.getVariables)((0,i.getTermsNested)(e))))))}async testOperation(e,t){return!0}async runOperation(e,t){const r=s.getVariables(e.template),i={type:a.Algebra.types.PROJECT,input:e.input,variables:r},c=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:i,context:t}));return{metadata:()=>c.metadata().then((t=>({...t,order:void 0,cardinality:{type:t.cardinality.type,value:t.cardinality.value*e.template.length},canContainUndefs:!1,availableOrders:void 0}))),quadStream:new o.BindingsToQuadsIterator(e.template,c.bindingsStream),type:"quads"}}}t.ActorQueryOperationConstruct=s},59218:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BindingsToQuadsIterator=void 0;const n=r(76664),i=r(18050),a=r(13252),o=new i.DataFactory;class s extends n.MultiTransformIterator{constructor(e,t){super(t,{autoStart:!1}),this.template=e,this.blankNodeCounter=0}static bindTerm(e,t){return"Variable"===t.termType?e.get(t):t}static bindQuad(e,t){try{return(0,a.mapTermsNested)(t,(t=>{const r=s.bindTerm(e,t);if(!r)throw new Error("Unbound term");return r}))}catch{}}static localizeBlankNode(e,t){return"BlankNode"===t.termType?o.blankNode(`${t.value}${e}`):t}static localizeQuad(e,t){return(0,a.mapTermsNested)(t,(t=>s.localizeBlankNode(e,t)))}bindTemplate(e,t,r){return t.map(s.localizeQuad.bind(null,r)).map((t=>s.bindQuad.bind(null,e)(t))).filter(Boolean)}_createTransformer(e){return new n.ArrayIterator(this.bindTemplate(e,this.template,this.blankNodeCounter++),{autoStart:!1})}}t.BindingsToQuadsIterator=s},88749:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(59516),t),i(r(59218),t)},50403:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationDistinctHash=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"distinct")}async testOperation(e,t){return!0}async runOperation(e,t){const r=await this.mediatorQueryOperation.mediate({operation:e.input,context:t});if("quads"===r.type&&void 0!==this.mediatorHashQuads){const e=n.ActorQueryOperation.getSafeQuads(r);return{type:"quads",quadStream:e.quadStream.filter(await this.newHashFilterQuads(t)),metadata:e.metadata}}const i=n.ActorQueryOperation.getSafeBindings(r);return{type:"bindings",bindingsStream:i.bindingsStream.filter(await this.newHashFilter(t)),metadata:i.metadata}}async newHashFilter(e){const{hashFunction:t}=await this.mediatorHashBindings.mediate({allowHashCollisions:!0,context:e}),r={};return e=>{const n=t(e);return!(n in r)&&(r[n]=!0)}}async newHashFilterQuads(e){if(void 0===this.mediatorHashQuads)return e=>!0;const{hashFunction:t}=await this.mediatorHashQuads.mediate({allowHashCollisions:!0,context:e}),r={};return e=>{const n=t(e);return!(n in r)&&(r[n]=!0)}}}t.ActorQueryOperationDistinctHash=i},13867:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(50403),t)},50372:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationExtend=void 0;const n=r(91674),i=r(59510),a=r(61621);class o extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"extend")}async testOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);return Boolean(new a.AsyncEvaluator(e.expression,i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,r))),!0}async runOperation(e,t){const{expression:r,input:o,variable:s}=e,c=i.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:o,context:t}));if((await c.metadata()).variables.some((e=>e.equals(s))))throw new Error(`Illegal binding to variable '${s.value}' that has already been bound`);const u=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),l={...i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,u)},d=new a.AsyncEvaluator(r,l),p=c.bindingsStream.transform({autoStart:!1,transform:async(e,r,i)=>{try{const t=await d.evaluate(e);i(e.set(s,t))}catch(r){(0,a.isExpressionError)(r)?(i(e),this.logWarn(t,`Expression error for extend operation (${r.message})with bindings '${(0,n.bindingsToString)(e)}'`)):p.emit("error",r)}r()}});return{type:"bindings",bindingsStream:p,async metadata(){const e=await c.metadata();return{...e,variables:[...e.variables,s]}}}}}t.ActorQueryOperationExtend=o},19724:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(50372),t)},64452:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationFilter=void 0;const n=r(91674),i=r(59510),a=r(61621);class o extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"filter")}async testOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),o={...i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,r)};return new a.AsyncEvaluator(e.expression,o),!0}async runOperation(e,t){const r=await this.mediatorQueryOperation.mediate({operation:e.input,context:t}),o=i.ActorQueryOperation.getSafeBindings(r);i.ActorQueryOperation.validateQueryOutput(o,"bindings");const s=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),c={...i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,s)},u=new a.AsyncEvaluator(e.expression,c),l=o.bindingsStream.transform({transform:async(e,r,i)=>{try{await u.evaluateAsEBV(e)&&i(e)}catch(r){(0,a.isExpressionError)(r)?this.logWarn(t,"Error occurred while filtering.",(()=>({error:r,bindings:(0,n.bindingsToString)(e)}))):l.emit("error",r)}r()},autoStart:!1});return{type:"bindings",bindingsStream:l,metadata:o.metadata}}}t.ActorQueryOperationFilter=o},74578:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(64452),t)},71819:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationFromQuad=void 0;const n=r(59510),i=r(31578);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"from")}static copyOperation(e,t){const r={};for(const n of Object.keys(e))Array.isArray(e[n])&&"template"!==n?r[n]="variables"===n?e[n]:e[n].map(t):a.ALGEBRA_TYPES.includes(e[n].type)?r[n]=t(e[n]):r[n]=e[n];return r}static applyOperationDefaultGraph(e,t){if("bgp"===e.type&&e.patterns.length>0||"path"===e.type||"pattern"===e.type){if("bgp"===e.type)return a.joinOperations(e.patterns.map((e=>{if("DefaultGraph"!==e.graph.termType)return a.FACTORY.createBgp([e]);const r=t.map((t=>a.FACTORY.createBgp([Object.assign(a.FACTORY.createPattern(e.subject,e.predicate,e.object,t),{metadata:e.metadata})])));return a.unionOperations(r)})));if("DefaultGraph"!==e.graph.termType)return e;const r=t.map((t=>"path"===e.type?a.FACTORY.createPath(e.subject,e.predicate,e.object,t):Object.assign(a.FACTORY.createPattern(e.subject,e.predicate,e.object,t),{metadata:e.metadata})));return a.unionOperations(r)}return a.copyOperation(e,(e=>this.applyOperationDefaultGraph(e,t)))}static applyOperationNamedGraph(e,t,r){if("bgp"===e.type&&e.patterns.length>0||"path"===e.type||"pattern"===e.type){const n="bgp"===e.type?e.patterns[0].graph:e.graph;if("DefaultGraph"===n.termType)return{type:i.Algebra.types.BGP,patterns:[]};if("Variable"===n.termType){if(1===t.length){const r=t[0],i={};i[`?${n.value}`]=r;const o=a.FACTORY.createValues([n],[i]);let s;return s="bgp"===e.type?a.FACTORY.createBgp(e.patterns.map((e=>a.FACTORY.createPattern(e.subject,e.predicate,e.object,r)))):"path"===e.type?a.FACTORY.createPath(e.subject,e.predicate,e.object,r):a.FACTORY.createPattern(e.subject,e.predicate,e.object,r),a.FACTORY.createJoin([o,s])}return a.unionOperations(t.map((t=>a.applyOperationNamedGraph(e,[t],r))))}return[...t,...r].some((e=>e.equals(n)))?e:{type:i.Algebra.types.BGP,patterns:[]}}return a.copyOperation(e,(e=>this.applyOperationNamedGraph(e,t,r)))}static joinOperations(e){if(1===e.length)return e[0];if(e.length>1)return a.FACTORY.createJoin(e);throw new Error("A join can only be applied on at least one operation")}static unionOperations(e){if(1===e.length)return e[0];if(e.length>1)return a.FACTORY.createUnion(e);throw new Error("A union can only be applied on at least one operation")}static createOperation(e){let t=e.input;return e.default.length>0&&(t=a.applyOperationDefaultGraph(t,e.default)),(e.named.length>0||e.default.length>0)&&(t=a.applyOperationNamedGraph(t,e.named,e.default)),t}async testOperation(e,t){return!0}async runOperation(e,t){const r=a.createOperation(e);return this.mediatorQueryOperation.mediate({operation:r,context:t})}}t.ActorQueryOperationFromQuad=a,a.FACTORY=new i.Factory,a.ALGEBRA_TYPES=Object.keys(i.Algebra.types).map((e=>i.Algebra.types[e]))},37572:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(71819),t)},39712:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationGroup=void 0;const n=r(91674),i=r(59510),a=r(61621),o=r(76664),s=r(50626);class c extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"group")}async testOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);for(const n of e.aggregates)new a.AsyncEvaluator(n.expression,i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,r));return!0}async runOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),{hashFunction:a}=await this.mediatorHashBindings.mediate({allowHashCollisions:!0,context:t}),{input:c,aggregates:u}=e,l=await this.mediatorQueryOperation.mediate({operation:c,context:t}),d=i.ActorQueryOperation.getSafeBindings(l),p=[...e.variables,...u.map((e=>e.variable))],h=i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,r);return{type:"bindings",bindingsStream:new o.TransformIterator((()=>new Promise(((t,n)=>{const i=new s.GroupsState(a,e,h,r);d.bindingsStream.on("end",(async()=>{try{const e=new o.ArrayIterator(await i.collectResults(),{autoStart:!1});t(e)}catch(e){n(e)}})),d.bindingsStream.on("error",n),d.bindingsStream.on("data",(e=>{i.consumeBindings(e).catch(n)}))}))),{autoStart:!1}),metadata:async()=>({...await d.metadata(),variables:p})}}}t.ActorQueryOperationGroup=c},50626:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GroupsState=void 0;const n=r(61621),i=new(r(18050).DataFactory);t.GroupsState=class{constructor(e,t,r,n){this.hashFunction=e,this.pattern=t,this.sparqleeConfig=r,this.bindingsFactory=n,this.groups=new Map,this.groupsInitializer=new Map,this.groupVariables=new Set(this.pattern.variables.map((e=>e.value))),this.waitCounter=1,this.resultHasBeenCalled=!1}consumeBindings(e){const t=this.resultCheck();if(t)return t;this.waitCounter++;const r=e.filter(((e,t)=>this.groupVariables.has(t.value))),i=this.hashBindings(r);let a,o=this.groupsInitializer.get(i);if(o){const t=o;a=(async()=>{const r=await t;await Promise.all(this.pattern.aggregates.map((async t=>{const n=t.variable.value;await r.aggregators[n].put(e)})))})().then((async()=>{this.subtractWaitCounterAndCollect()}))}else o=(async()=>{const t={};await Promise.all(this.pattern.aggregates.map((async r=>{const i=r.variable.value;t[i]=new n.AsyncAggregateEvaluator(r,this.sparqleeConfig),await t[i].put(e)})));const a={aggregators:t,bindings:r};return this.groups.set(i,a),this.subtractWaitCounterAndCollect(),a})(),this.groupsInitializer.set(i,o),a=o;return a}subtractWaitCounterAndCollect(){0==--this.waitCounter&&this.handleResultCollection()}handleResultCollection(){let e=[...this.groups].map((([e,t])=>{const{bindings:r,aggregators:n}=t;let a=r;for(const e in n){const t=n[e].result();t&&(a=a.set(i.variable(e),t))}return a}));if(0===e.length&&0===this.groupVariables.size){const t=[];for(const e of this.pattern.aggregates){const r=e.variable,i=n.AsyncAggregateEvaluator.emptyValue(e);void 0!==i&&t.push([r,i])}e=[this.bindingsFactory.bindings(t)]}this.waitResolver(e)}resultCheck(){if(this.resultHasBeenCalled)return Promise.reject(new Error("Calling any function after calling collectResult is invalid."))}collectResults(){const e=this.resultCheck();if(e)return e;this.resultHasBeenCalled=!0;const t=new Promise((e=>{this.waitResolver=e}));return this.subtractWaitCounterAndCollect(),t}hashBindings(e){return this.hashFunction(e)}}},47007:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(39712),t)},54052:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationJoin=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"join")}async testOperation(e,t){return!0}async runOperation(e,t){const r=(await Promise.all(e.input.map((async e=>({output:await this.mediatorQueryOperation.mediate({operation:e,context:t}),operation:e}))))).map((({output:e,operation:t})=>({output:n.ActorQueryOperation.getSafeBindings(e),operation:t})));return this.mediatorJoin.mediate({type:"inner",entries:r,context:t})}}t.ActorQueryOperationJoin=i},40980:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(54052),t)},18152:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationLeftJoin=void 0;const n=r(91674),i=r(59510),a=r(61621);class o extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"leftjoin")}async testOperation(e,t){return!0}async runOperation(e,t){const r=(await Promise.all(e.input.map((async e=>({output:await this.mediatorQueryOperation.mediate({operation:e,context:t}),operation:e}))))).map((({output:e,operation:t})=>({output:i.ActorQueryOperation.getSafeBindings(e),operation:t}))),o=await this.mediatorJoin.mediate({type:"optional",entries:r,context:t});if(e.expression){const s=(await r[1].output.metadata()).variables,c=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),u={...i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,c)},l=new a.AsyncEvaluator(e.expression,u),d=o.bindingsStream.transform({autoStart:!1,transform:async(e,r,n)=>{if(!s.every((t=>e.has(t.value))))return n(e),r();try{await l.evaluateAsEBV(e)&&n(e)}catch(r){(0,a.isExpressionError)(r)?this.logWarn(t,"Error occurred while filtering.",(()=>({error:r,bindings:e}))):d.emit("error",r)}r()}});o.bindingsStream=d}return o}}t.ActorQueryOperationLeftJoin=o},33149:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18152),t)},34358:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationMinus=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"minus")}async testOperation(e,t){return!0}async runOperation(e,t){const r=(await Promise.all(e.input.map((async e=>({output:await this.mediatorQueryOperation.mediate({operation:e,context:t}),operation:e}))))).map((({output:e,operation:t})=>({output:n.ActorQueryOperation.getSafeBindings(e),operation:t})));return this.mediatorJoin.mediate({type:"minus",entries:r,context:t})}}t.ActorQueryOperationMinus=i},19948:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(34358),t)},92052:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationNop=void 0;const n=r(91674),i=r(59510),a=r(72394),o=r(76664);class s extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"nop")}async testOperation(e,t){return!0}async runOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);return{bindingsStream:new o.SingletonIterator(r.bindings()),metadata:()=>Promise.resolve({state:new a.MetadataValidationState,cardinality:{type:"exact",value:1},canContainUndefs:!1,variables:[]}),type:"bindings"}}}t.ActorQueryOperationNop=s},35021:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(92052),t)},97236:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationOrderBy=void 0;const n=r(91674),i=r(59510),a=r(61621),o=r(31578),s=r(36211);class c extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"orderby"),this.window=e.window??Number.POSITIVE_INFINITY}async testOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);for(let n of e.expressions)n=this.extractSortExpression(n),new a.AsyncEvaluator(n,i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,r));return!0}async runOperation(e,t){const r=await this.mediatorQueryOperation.mediate({operation:e.input,context:t}),o=i.ActorQueryOperation.getSafeBindings(r),c={window:this.window},u=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),l={...i.ActorQueryOperation.getAsyncExpressionContext(t,this.mediatorQueryOperation,u)};let{bindingsStream:d}=o;for(let t=e.expressions.length-1;t>=0;t--){let r=e.expressions[t];const n=this.isAscending(r);r=this.extractSortExpression(r);const i=new a.AsyncEvaluator(r,l),o=async(e,t,r)=>{try{r({bindings:e,result:await i.evaluate(e)})}catch(t){(0,a.isExpressionError)(t)||d.emit("error",t),r({bindings:e,result:void 0})}t()},u=d.transform({transform:o}),p=new s.SortIterator(u,((e,t)=>{let r=(0,a.orderTypes)(e.result,t.result);return n||(r*=-1),r}),c);d=p.map((({bindings:e})=>e))}return{type:"bindings",bindingsStream:d,metadata:o.metadata}}extractSortExpression(e){const{expressionType:t,operator:r}=e;return t!==o.Algebra.expressionTypes.OPERATOR?e:"desc"===r?e.args[0]:e}isAscending(e){const{expressionType:t,operator:r}=e;return t!==o.Algebra.expressionTypes.OPERATOR||"desc"!==r}}t.ActorQueryOperationOrderBy=c},36211:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SortIterator=void 0;const n=r(76664);class i extends n.TransformIterator{constructor(e,t,r){super(e,r);const n=r&&r.window;this.windowLength=Number.isFinite(n)&&n>0?n:Number.POSITIVE_INFINITY,this.sort=t,this.sorted=[]}_read(e,t){let r,{length:n}=this.sorted;for(;n!==this.windowLength&&(r=this.source.read(),null!==r);){let e,t,i=0,a=n-1;for(;i<=a;)e=Math.trunc((i+a)/2),t=this.sort(r,this.sorted[e]),t<0?i=e+1:t>0?a=e-1:(i=e,a=-1);this.sorted.splice(i,0,r),n++}n===this.windowLength&&this._push(this.sorted.pop()),t()}_flush(e){let{length:t}=this.sorted;for(;t--;)this._push(this.sorted.pop());e()}}t.SortIterator=i},80797:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(97236),t)},79675:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathAlt=void 0;const n=r(43543),i=r(19779),a=r(59510),o=r(76664),s=r(31578);class c extends n.ActorAbstractPath{constructor(e){super(e,s.Algebra.types.ALT)}async runOperation(e,t){const r=e.predicate,s=(await Promise.all(r.input.map((r=>this.mediatorQueryOperation.mediate({context:t,operation:n.ActorAbstractPath.FACTORY.createPath(e.subject,r,e.object,e.graph)}))))).map(a.ActorQueryOperation.getSafeBindings);return{type:"bindings",bindingsStream:new o.UnionIterator(s.map((e=>e.bindingsStream)),{autoStart:!1}),metadata:()=>Promise.all(s.map((e=>e.metadata()))).then((e=>i.ActorQueryOperationUnion.unionMetadata(e,!0,t,this.mediatorRdfMetadataAccumulate)))}}}t.ActorQueryOperationPathAlt=c},16733:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(79675),t)},21471:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathInv=void 0;const n=r(43543),i=r(31578);class a extends n.ActorAbstractPath{constructor(e){super(e,i.Algebra.types.INV)}async runOperation(e,t){const r=e.predicate,i=n.ActorAbstractPath.FACTORY.createPath(e.object,r.path,e.subject,e.graph);return this.mediatorQueryOperation.mediate({operation:i,context:t})}}t.ActorQueryOperationPathInv=a},88317:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(21471),t)},60333:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathLink=void 0;const n=r(43543),i=r(31578);class a extends n.ActorAbstractPath{constructor(e){super(e,i.Algebra.types.LINK)}async runOperation(e,t){const r=e.predicate,i=Object.assign(n.ActorAbstractPath.FACTORY.createPattern(e.subject,r.iri,e.object,e.graph),{metadata:r.metadata});return this.mediatorQueryOperation.mediate({operation:i,context:t})}}t.ActorQueryOperationPathLink=a},91430:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(60333),t)},62203:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathNps=void 0;const n=r(43543),i=r(59510),a=r(31578);class o extends n.ActorAbstractPath{constructor(e){super(e,a.Algebra.types.NPS)}async runOperation(e,t){const r=e.predicate,a=this.generateVariable(e),o=Object.assign(n.ActorAbstractPath.FACTORY.createPattern(e.subject,a,e.object,e.graph),{metadata:r.metadata}),s=i.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:o,context:t}));return{type:"bindings",bindingsStream:s.bindingsStream.map((e=>r.iris.some((t=>t.equals(e.get(a))))?null:e.delete(a))),metadata:s.metadata}}}t.ActorQueryOperationPathNps=o},56993:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(62203),t)},82265:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathOneOrMore=void 0;const n=r(43543),i=r(91674),a=r(59510),o=r(76664),s=r(31578);class c extends n.ActorAbstractPath{constructor(e){super(e,s.Algebra.types.ONE_OR_MORE_PATH)}async runOperation(e,t){const r=await i.BindingsFactory.create(this.mediatorMergeBindingsContext,t),s=await this.isPathArbitraryLengthDistinct(t,e);if(s.operation)return s.operation;t=s.context;const c=e.predicate;if("Variable"!==e.subject.termType&&"Variable"===e.object.termType){const n=e.object,i=await this.getObjectsPredicateStarEval(e.subject,c.path,n,e.graph,t,!1,r),a="Variable"===e.graph.termType?[n,e.graph]:[n];return{type:"bindings",bindingsStream:i.bindingsStream,metadata:async()=>({...await i.metadata(),variables:a})}}if("Variable"===e.subject.termType&&"Variable"===e.object.termType){const i=n.ActorAbstractPath.FACTORY.createDistinct(n.ActorAbstractPath.FACTORY.createPath(e.subject,e.predicate.path,e.object,e.graph)),s=a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:t,operation:i})),u=e.subject,l=e.object,d={},p=new o.MultiTransformIterator(s.bindingsStream,{multiTransform:n=>{const i=n.get(u),a=n.get(l),s="Variable"===e.graph.termType?n.get(e.graph):e.graph;return new o.TransformIterator((async()=>{const n=new o.BufferedIterator;return await this.getSubjectAndObjectBindingsPredicateStar(u,l,i,a,c.path,s,t,d,{},n,{count:0},r),n.transform({transform(t,r,n){"Variable"===e.graph.termType&&(t=t.set(e.graph,s)),n(t),r()}})}),{maxBufferSize:128})},autoStart:!1}),h="Variable"===e.graph.termType?[u,l,e.graph]:[u,l];return{type:"bindings",bindingsStream:p,metadata:async()=>({...await s.metadata(),variables:h})}}if("Variable"===e.subject.termType&&"Variable"!==e.object.termType)return this.mediatorQueryOperation.mediate({context:t,operation:n.ActorAbstractPath.FACTORY.createPath(e.object,n.ActorAbstractPath.FACTORY.createOneOrMorePath(n.ActorAbstractPath.FACTORY.createInv(c.path)),e.subject,e.graph)});const u=this.generateVariable(),l=a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:t,operation:n.ActorAbstractPath.FACTORY.createPath(e.subject,c,u,e.graph)}));return{type:"bindings",bindingsStream:l.bindingsStream.transform({filter:t=>e.object.equals(t.get(u)),transform(t,n,i){i("Variable"===e.graph.termType?r.bindings([[e.graph,t.get(e.graph)]]):r.bindings()),n()}}),metadata:async()=>({...await l.metadata(),variables:"Variable"===e.graph.termType?[e.graph]:[]})}}}t.ActorQueryOperationPathOneOrMore=c},90658:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(82265),t)},64747:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathSeq=void 0;const n=r(43543),i=r(59510),a=r(31578);class o extends n.ActorAbstractPath{constructor(e){super(e,a.Algebra.types.SEQ)}async runOperation(e,t){const r=e.predicate;let a=e.subject;const o=[],s=await Promise.all(r.input.map(((i,s)=>{const c=s===r.input.length-1?e.object:this.generateVariable(e,`b${s}`),u=n.ActorAbstractPath.FACTORY.createPath(a,i,c,e.graph),l=this.mediatorQueryOperation.mediate({context:t,operation:u});return a=c,s({output:i.ActorQueryOperation.getSafeBindings(await e),operation:t})))),c=i.ActorQueryOperation.getSafeBindings(await this.mediatorJoin.mediate({type:"inner",entries:s,context:t}));return{type:"bindings",bindingsStream:c.bindingsStream.transform({transform(e,t,r){for(const t of o)e=e.delete(t);r(e),t()}}),async metadata(){const e=await c.metadata(),t=e.variables.filter((e=>!o.some((t=>t.value===e.value))));return{...e,variables:t}}}}}t.ActorQueryOperationPathSeq=o},28261:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(64747),t)},68037:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathZeroOrMore=void 0;const n=r(43543),i=r(91674),a=r(59510),o=r(76664),s=r(22112),c=r(31578);class u extends n.ActorAbstractPath{constructor(e){super(e,c.Algebra.types.ZERO_OR_MORE_PATH)}async runOperation(e,t){const r=await i.BindingsFactory.create(this.mediatorMergeBindingsContext,t),c=await this.isPathArbitraryLengthDistinct(t,e);if(c.operation)return c.operation;t=c.context;const u=e.predicate,l=this.getPathSources(u),d="Variable"===e.subject.termType,p="Variable"===e.object.termType;if("Variable"===e.subject.termType&&"Variable"===e.object.termType){const i=this.generateVariable(e),c=this.assignPatternSources(n.ActorAbstractPath.FACTORY.createPattern(e.subject,i,e.object,e.graph),l),d=a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:t,operation:c})),p=e.subject,h=e.object,f=new Set,y={},g=new o.MultiTransformIterator(d.bindingsStream,{multiTransform:n=>{const i=n.get(p),a=n.get(h),c="Variable"===e.graph.termType?n.get(e.graph):e.graph,l=(0,s.termToString)(i)+(0,s.termToString)(c),d=(0,s.termToString)(a)+(0,s.termToString)(c);return new o.TransformIterator((async()=>{if(f.has(l)&&f.has(d))return new o.EmptyIterator;const n=new o.BufferedIterator,s={count:0};return f.has(l)||(f.add(l),await this.getSubjectAndObjectBindingsPredicateStar(p,h,i,i,u.path,c,t,y,{},n,s,r)),f.has(d)||(f.add(d),await this.getSubjectAndObjectBindingsPredicateStar(p,h,a,a,u.path,c,t,y,{},n,s,r)),n.transform({transform(t,r,n){"Variable"===e.graph.termType&&(t=t.set(e.graph,c)),n(t),r()}})}))}}),m="Variable"===e.graph.termType?[p,e.object,e.graph]:[p,e.object];return{type:"bindings",bindingsStream:g,metadata:async()=>({...await d.metadata(),variables:m})}}if(!d&&!p){const n=this.generateVariable(),i=await this.getObjectsPredicateStarEval(e.subject,u.path,n,e.graph,t,!0,r);return{type:"bindings",bindingsStream:i.bindingsStream.transform({filter:t=>e.object.equals(t.get(n)),transform(t,n,i){i("Variable"===e.graph.termType?r.bindings([[e.graph,t.get(e.graph)]]):r.bindings()),n()}}),metadata:async()=>({...await i.metadata(),variables:"Variable"===e.graph.termType?[e.graph]:[]})}}const h=d?e.object:e.subject,f=d?e.subject:e.object,y=d?n.ActorAbstractPath.FACTORY.createInv(u.path):u.path,g=await this.getObjectsPredicateStarEval(h,y,f,e.graph,t,!0,r),m="Variable"===e.graph.termType?[f,e.graph]:[f];return{type:"bindings",bindingsStream:g.bindingsStream,metadata:async()=>({...await g.metadata(),variables:m})}}}t.ActorQueryOperationPathZeroOrMore=u},60436:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(68037),t)},81231:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationPathZeroOrOne=void 0;const n=r(43543),i=r(91674),a=r(59510),o=r(72394),s=r(76664),c=r(31578);class u extends n.ActorAbstractPath{constructor(e){super(e,c.Algebra.types.ZERO_OR_ONE_PATH)}async runOperation(e,t){const r=await i.BindingsFactory.create(this.mediatorMergeBindingsContext,t),c=e.predicate,u=this.getPathSources(c),l=[];if("Variable"!==e.subject.termType&&"Variable"!==e.object.termType&&e.subject.equals(e.object))return{type:"bindings",bindingsStream:new s.SingletonIterator(r.bindings()),metadata:()=>Promise.resolve({state:new o.MetadataValidationState,cardinality:{type:"exact",value:1},canContainUndefs:!1,variables:[]})};const d=await this.isPathArbitraryLengthDistinct(t,e);if(d.operation)return d.operation;t=d.context;const p=a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:t,operation:n.ActorAbstractPath.FACTORY.createPath(e.subject,c.path,e.object,e.graph)}));let h;if("Variable"===e.subject.termType&&"Variable"===e.object.termType){const r=this.generateVariable(e),i=a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({context:t,operation:n.ActorAbstractPath.FACTORY.createFilter(this.assignPatternSources(n.ActorAbstractPath.FACTORY.createPattern(e.subject,r,e.object,e.graph),u),n.ActorAbstractPath.FACTORY.createOperatorExpression("=",[n.ActorAbstractPath.FACTORY.createTermExpression(e.subject),n.ActorAbstractPath.FACTORY.createTermExpression(e.object)]))})).bindingsStream.map((e=>e.delete(r)));h=new s.UnionIterator([i,p.bindingsStream],{autoStart:!1})}else"Variable"===e.subject.termType&&l.push(r.bindings([[e.subject,e.object]])),"Variable"===e.object.termType&&l.push(r.bindings([[e.object,e.subject]])),h=p.bindingsStream.prepend(l);return{type:"bindings",bindingsStream:h,metadata:p.metadata}}}t.ActorQueryOperationPathZeroOrOne=u},32091:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(81231),t)},1892:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationProject=void 0;const n=r(59510),i=r(85156),a=new(r(18050).DataFactory);class o extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"project")}async testOperation(e,t){return!0}async runOperation(e,t){const r=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:e.input,context:t})),o=await r.metadata(),s=e.variables,c=o.variables.filter((e=>!s.some((t=>e.value===t.value))));s.filter((e=>!o.variables.some((t=>e.value===t.value)))).length>0&&(o.canContainUndefs=!0);let u=0===c.length?r.bindingsStream:r.bindingsStream.map((e=>{for(const t of c)e=e.delete(t);return e})),l=0;return u=u.map((e=>{l++;const t=new Map;return e.map((e=>{if(e instanceof i.BlankNodeBindingsScoped){let r=t.get(e.value);return r||(r=a.blankNode(`${e.value}${l}`),t.set(e.value,r)),r}return e}))})),{type:"bindings",bindingsStream:u,metadata:async()=>({...o,variables:s})}}}t.ActorQueryOperationProject=o},98893:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(1892),t)},17015:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationReducedHash=void 0;const n=r(59510),i=r(35069);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"reduced")}async testOperation(e,t){return!0}async runOperation(e,t){const r=n.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:e.input,context:t}));return{type:"bindings",bindingsStream:r.bindingsStream.filter(await this.newHashFilter(t)),metadata:r.metadata}}async newHashFilter(e){const{hashFunction:t}=await this.mediatorHashBindings.mediate({allowHashCollisions:!0,context:e}),r=new i.LRUCache({max:this.cacheSize});return e=>{const n=t(e);return!r.has(n)&&(r.set(n,!0),!0)}}}t.ActorQueryOperationReducedHash=a},16909:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(17015),t)},45152:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationService=void 0;const n=r(91674),i=r(59510),a=r(72394),o=r(76664);class s extends i.ActorQueryOperationTypedMediated{constructor(e){super(e,"service")}async testOperation(e,t){if("NamedNode"!==e.name.termType)throw new Error(`${this.name} can only query services by IRI, while a ${e.name.termType} was given.`);return!0}async runOperation(e,t){const{querySource:r}=await this.mediatorQuerySourceIdentify.mediate({querySourceUnidentified:{value:e.name.value,type:this.forceSparqlEndpoint?"sparql":void 0},context:t});let s;try{s=i.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:i.ActorQueryOperation.assignOperationSource(e.input,r),context:t}))}catch(r){if(!e.silent)throw r;{const e=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);s={bindingsStream:new o.SingletonIterator(e.bindings()),type:"bindings",metadata:async()=>({state:new a.MetadataValidationState,cardinality:{type:"exact",value:1},canContainUndefs:!1,variables:[]})},this.logWarn(t,`An error occurred when executing a SERVICE clause: ${r.message}`)}}return s}}t.ActorQueryOperationService=s},89375:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(45152),t)},28746:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationSlice=void 0;const n=r(59510),i=r(32227);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"slice")}async testOperation(e,t){return!0}async runOperation(e,t){e.length&&(t=t.set(i.KeysQueryOperation.limitIndicator,e.length));const r=await this.mediatorQueryOperation.mediate({operation:e.input,context:t});return"bindings"===r.type?{type:"bindings",bindingsStream:this.sliceStream(r.bindingsStream,e),metadata:this.sliceMetadata(r,e)}:"quads"===r.type?{type:"quads",quadStream:this.sliceStream(r.quadStream,e),metadata:this.sliceMetadata(r,e)}:r}sliceStream(e,t){const r=Boolean(t.length)||0===t.length,{start:n}=t,i=r?t.start+t.length-1:Number.POSITIVE_INFINITY;return e.transform({offset:n,limit:Math.max(i-n+1,0),autoStart:!1})}sliceMetadata(e,t){const r=Boolean(t.length)||0===t.length;return()=>e.metadata().then((e=>{const n={...e.cardinality};return Number.isFinite(n.value)&&(n.value=Math.max(0,n.value-t.start),r&&(n.value=Math.min(n.value,t.length))),{...e,cardinality:n}}))}}t.ActorQueryOperationSlice=a},14922:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(28746),t)},23920:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationSource=void 0;const n=r(59510),i=r(32227),a=r(72394),o=r(31578);class s extends n.ActorQueryOperation{constructor(e){super(e)}async test(e){if(!n.ActorQueryOperation.getOperationSource(e.operation))throw new Error(`Actor ${this.name} requires an operation with source annotation.`);return{httpRequests:1}}async run(e){const t=e.context.get(i.KeysInitQuery.physicalQueryPlanLogger);t&&(t.logOperation(e.operation.type,void 0,e.operation,e.context.get(i.KeysInitQuery.physicalQueryPlanNode),this.name,{}),e.context=e.context.set(i.KeysInitQuery.physicalQueryPlanNode,e.operation));const r=n.ActorQueryOperation.getOperationSource(e.operation),s=r.context?e.context.merge(r.context):e.context;let c=!1;if(o.Util.recurseOperation(e.operation,{construct:()=>(c=!0,!1)}),c){const t=r.source.queryQuads(e.operation,s);return{type:"quads",quadStream:t,metadata:(0,a.getMetadataQuads)(t)}}switch(e.operation.type){case o.Algebra.types.ASK:return{type:"boolean",execute:()=>r.source.queryBoolean(e.operation,s)};case o.Algebra.types.COMPOSITE_UPDATE:case o.Algebra.types.DELETE_INSERT:case o.Algebra.types.LOAD:case o.Algebra.types.CLEAR:case o.Algebra.types.CREATE:case o.Algebra.types.DROP:case o.Algebra.types.ADD:case o.Algebra.types.MOVE:case o.Algebra.types.COPY:return{type:"void",execute:()=>r.source.queryVoid(e.operation,s)}}const u=r.source.queryBindings(e.operation,s);return{type:"bindings",bindingsStream:u,metadata:(0,a.getMetadataBindings)(u)}}}t.ActorQueryOperationSource=s},26933:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(23920),t)},47312:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationUnion=void 0;const n=r(59510),i=r(72394),a=r(76664),o=r(13252);class s extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"union")}static unionVariables(e){return(0,o.uniqTerms)(e.flat())}static async unionMetadata(e,t,r,n){let a=(await n.mediate({mode:"initialize",context:r})).metadata;for(const t of e)a={...t,...(await n.mediate({mode:"append",accumulatedMetadata:a,appendingMetadata:t,context:r})).metadata};a.state=new i.MetadataValidationState;const o=()=>a.state.invalidate();for(const t of e)t.state.addInvalidateListener(o);return t&&(a.variables=s.unionVariables(e.map((e=>e.variables)))),a}async testOperation(e,t){return!0}async runOperation(e,t){const r=await Promise.all(e.input.map((e=>this.mediatorQueryOperation.mediate({operation:e,context:t}))));let i;for(const e of r)if(void 0===i)i=e.type;else if(i!==e.type)throw new Error(`Unable to union ${i} and ${e.type}`);if("bindings"===i||0===e.input.length){const e=r.map(n.ActorQueryOperation.getSafeBindings);return{type:"bindings",bindingsStream:new a.UnionIterator(e.map((e=>e.bindingsStream)),{autoStart:!1}),metadata:()=>Promise.all(e.map((e=>e.metadata()))).then((e=>s.unionMetadata(e,!0,t,this.mediatorRdfMetadataAccumulate)))}}if("quads"===i){const e=r.map(n.ActorQueryOperation.getSafeQuads);return{type:"quads",quadStream:new a.UnionIterator(e.map((e=>e.quadStream)),{autoStart:!1}),metadata:()=>Promise.all(e.map((e=>e.metadata()))).then((e=>s.unionMetadata(e,!1,t,this.mediatorRdfMetadataAccumulate)))}}throw new Error(`Unable to union ${i}`)}}t.ActorQueryOperationUnion=s},19779:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(47312),t)},20808:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationClear=void 0;const n=r(59510),i=new(r(18050).DataFactory);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"clear")}async testOperation(e,t){return n.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){let r;r="DEFAULT"===e.source?i.defaultGraph():"string"==typeof e.source?e.source:[e.source];const{execute:n}=await this.mediatorUpdateQuads.mediate({deleteGraphs:{graphs:r,requireExistence:!e.silent,dropGraphs:!1},context:t});return{type:"void",execute:n}}}t.ActorQueryOperationClear=a},75233:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(20808),t)},8317:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationUpdateCompositeUpdate=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"compositeupdate")}async testOperation(e,t){return n.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){return{type:"void",execute:()=>(async()=>{for(const r of e.updates){const e=n.ActorQueryOperation.getSafeVoid(await this.mediatorQueryOperation.mediate({operation:r,context:t}));await e.execute()}})()}}}t.ActorQueryOperationUpdateCompositeUpdate=i},57886:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(8317),t)},74700:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationCreate=void 0;const n=r(59510);class i extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"create")}async testOperation(e,t){return n.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){const{execute:r}=await this.mediatorUpdateQuads.mediate({createGraphs:{graphs:[e.source],requireNonExistence:!e.silent},context:t});return{type:"void",execute:r}}}t.ActorQueryOperationCreate=i},14876:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(74700),t)},4853:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationUpdateDeleteInsert=void 0;const n=r(88749),i=r(91674),a=r(59510),o=r(76664);class s extends a.ActorQueryOperationTypedMediated{constructor(e){super(e,"deleteinsert"),this.blankNodeCounter=0}async testOperation(e,t){return a.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){const r=await i.BindingsFactory.create(this.mediatorMergeBindingsContext,t),s=e.where?a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:e.where,context:t})).bindingsStream:new o.ArrayIterator([r.bindings()],{autoStart:!1});let c,u;e.insert&&(c=new n.BindingsToQuadsIterator(e.insert.map(n.BindingsToQuadsIterator.localizeQuad.bind(null,this.blankNodeCounter)),s.clone()),this.blankNodeCounter++),e.delete&&(u=new n.BindingsToQuadsIterator(e.delete.map(n.BindingsToQuadsIterator.localizeQuad.bind(null,this.blankNodeCounter)),s.clone()),this.blankNodeCounter++);const{execute:l}=await this.mediatorUpdateQuads.mediate({quadStreamInsert:c,quadStreamDelete:u,context:t});return{type:"void",execute:l}}}t.ActorQueryOperationUpdateDeleteInsert=s},21638:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(4853),t)},53460:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationDrop=void 0;const n=r(59510),i=new(r(18050).DataFactory);class a extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"drop")}async testOperation(e,t){return n.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){let r;r="DEFAULT"===e.source?i.defaultGraph():"string"==typeof e.source?e.source:[e.source];const{execute:n}=await this.mediatorUpdateQuads.mediate({deleteGraphs:{graphs:r,requireExistence:!e.silent,dropGraphs:!0},context:t});return{type:"void",execute:n}}}t.ActorQueryOperationDrop=a},82465:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(53460),t)},86228:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationLoad=void 0;const n=r(59510),i=r(32227),a=r(18050),o=r(31578),s=new a.DataFactory;class c extends n.ActorQueryOperationTypedMediated{constructor(e){super(e,"load"),this.factory=new o.Factory}async testOperation(e,t){return n.ActorQueryOperation.throwOnReadOnly(t),!0}async runOperation(e,t){let r=t;e.silent&&(r=r.set(i.KeysInitQuery.lenient,!0));const{querySource:a}=await this.mediatorQuerySourceIdentify.mediate({querySourceUnidentified:{value:e.source.value},context:r});let o=c.getSafeQuads(await this.mediatorQueryOperation.mediate({operation:this.factory.createConstruct(n.ActorQueryOperation.assignOperationSource(this.factory.createPattern(s.variable("s"),s.variable("p"),s.variable("o")),a),[this.factory.createPattern(s.variable("s"),s.variable("p"),s.variable("o"))]),context:r})).quadStream;e.destination&&(o=o.map((t=>s.quad(t.subject,t.predicate,t.object,e.destination))));const{execute:u}=await this.mediatorUpdateQuads.mediate({quadStreamInsert:o,context:t});return{type:"void",execute:u}}}t.ActorQueryOperationLoad=c},29796:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(86228),t)},48236:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationValues=void 0;const n=r(91674),i=r(59510),a=r(72394),o=r(76664),s=new(r(18050).DataFactory);class c extends i.ActorQueryOperationTyped{constructor(e){super(e,"values")}async testOperation(e,t){return!0}async runOperation(e,t){const r=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t),i=new o.ArrayIterator(e.bindings.map((e=>r.bindings(Object.entries(e).map((([e,t])=>[s.variable(e.slice(1)),t])))))),c=e.variables;return{type:"bindings",bindingsStream:i,metadata:()=>Promise.resolve({state:new a.MetadataValidationState,cardinality:{type:"exact",value:e.bindings.length},canContainUndefs:e.bindings.some((e=>c.some((t=>!(`?${t.value}`in e))))),variables:c})}}}t.ActorQueryOperationValues=c},14702:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(48236),t)},1452:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryParseGraphql=void 0;const n=r(79744),i=r(32227),a=r(1427);class o extends n.ActorQueryParse{constructor(e){super(e),this.graphqlToSparql=new a.Converter({requireContext:!0})}async test(e){if("graphql"!==e.queryFormat?.language)throw new Error("This actor can only parse GraphQL queries");return!0}async run(e){const t=e.context.get(i.KeysInitQuery.jsonLdContext)||{},r={singularizeVariables:e.context.get(i.KeysInitQuery.graphqlSingularizeVariables)};return{operation:await this.graphqlToSparql.graphqlToSparqlAlgebra(e.query,t,r)}}}t.ActorQueryParseGraphql=o},37067:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(1452),t)},6540:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryParseSparql=void 0;const n=r(79744),i=r(31578),a=r(55403);class o extends n.ActorQueryParse{constructor(e){super(e),this.prefixes=Object.freeze(this.prefixes)}async test(e){if(e.queryFormat&&"sparql"!==e.queryFormat.language)throw new Error("This actor can only parse SPARQL queries");return!0}async run(e){const t=new a.Parser({prefixes:this.prefixes,baseIRI:e.baseIRI,sparqlStar:!0}).parse(e.query);return{baseIRI:"query"===t.type?t.base:void 0,operation:(0,i.translate)(t,{quads:!0,prefixes:this.prefixes,blankToVariable:!0,baseIRI:e.baseIRI})}}}t.ActorQueryParseSparql=o},4911:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(6540),t)},27007:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryProcessExplainLogical=void 0;const n=r(59946),i=r(32227),a=r(34368);class o extends n.ActorQueryProcess{constructor(e){super(e)}async test(e){if("logical"!==(e.context.get(i.KeysInitQuery.explain)||e.context.get(new a.ActionContextKey("explain"))))throw new Error(`${this.name} can only explain in 'logical' mode.`);return!0}async run(e){let{operation:t,context:r}=await this.queryProcessor.parse(e.query,e.context);return({operation:t,context:r}=await this.queryProcessor.optimize(t,r)),{result:{explain:!0,type:"logical",data:t}}}}t.ActorQueryProcessExplainLogical=o},70605:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(27007),t)},94725:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryProcessExplainParsed=void 0;const n=r(59946),i=r(32227),a=r(34368);class o extends n.ActorQueryProcess{constructor(e){super(e)}async test(e){if("parsed"!==(e.context.get(i.KeysInitQuery.explain)||e.context.get(new a.ActionContextKey("explain"))))throw new Error(`${this.name} can only explain in 'parsed' mode.`);return!0}async run(e){const{operation:t}=await this.queryProcessor.parse(e.query,e.context);return{result:{explain:!0,type:"parsed",data:t}}}}t.ActorQueryProcessExplainParsed=o},68383:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(94725),t)},25441:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryProcessExplainPhysical=void 0;const n=r(59946),i=r(32227),a=r(34368),o=r(16402);class s extends n.ActorQueryProcess{constructor(e){super(e)}async test(e){const t=e.context.get(i.KeysInitQuery.explain)||e.context.get(new a.ActionContextKey("explain"));if("physical"!==t&&"physical-json"!==t)throw new Error(`${this.name} can only explain in 'physical' or 'physical-json' mode.`);return!0}async run(e){let{operation:t,context:r}=await this.queryProcessor.parse(e.query,e.context);({operation:t,context:r}=await this.queryProcessor.optimize(t,r));const n=new o.MemoryPhysicalQueryPlanLogger;r=r.set(i.KeysInitQuery.physicalQueryPlanLogger,n);const s=await this.queryProcessor.evaluate(t,r);switch(s.type){case"bindings":await s.bindingsStream.toArray();break;case"quads":await s.quadStream.toArray();break;case"boolean":case"void":await s.execute()}const c=e.context.get(i.KeysInitQuery.explain)??e.context.getSafe(new a.ActionContextKey("explain"));return{result:{explain:!0,type:c,data:"physical"===c?n.toCompactString():n.toJson()}}}}t.ActorQueryProcessExplainPhysical=s},16402:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.numberToString=t.MemoryPhysicalQueryPlanLogger=void 0;const n=r(22112);function i(e){return e.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:3})}t.MemoryPhysicalQueryPlanLogger=class{constructor(){this.planNodes=new Map}logOperation(e,t,r,n,i,a){const o={actor:i,logicalOperator:e,physicalOperator:t,rawNode:r,children:[],metadata:a};if(this.planNodes.set(r,o),this.rootNode){if(!n)throw new Error("Detected more than one parent-less node");const e=this.planNodes.get(n);if(!e)throw new Error("Could not find parent node");e.children.push(o)}else{if(n)throw new Error("No root node has been set yet, while a parent is being referenced");this.rootNode=o}}stashChildren(e,t){const r=this.planNodes.get(e);if(!r)throw new Error("Could not find plan node");r.children=t?r.children.filter(t):[]}unstashChild(e,t){const r=this.planNodes.get(e);if(r){const e=this.planNodes.get(t);if(!e)throw new Error("Could not find plan parent node");e.children.push(r)}}appendMetadata(e,t){const r=this.planNodes.get(e);r&&(r.metadata={...r.metadata,...t})}toJson(){return this.rootNode?this.planNodeToJson(this.rootNode):{}}planNodeToJson(e){const t={logical:e.logicalOperator,physical:e.physicalOperator,...this.getLogicalMetadata(e.rawNode),...this.compactMetadata(e.metadata)};if(e.children.length>0&&(t.children=e.children.map((e=>this.planNodeToJson(e)))),"bind"===t.physical&&t.children){const e={};for(const r of t.children){const t=r.children?.at(-1)??r,n=this.getPlanHash(t).join(",");e[n]||(e[n]=[]),e[n].push(r)}const r=[];for(const t of Object.values(e))r.push({occurrences:t.length,firstOccurrence:t[0]});t.childrenCompact=r,delete t.children}return t}getPlanHash(e){let t=[`${e.logical}-${e.physical}`];return e.children?t=[...t,...e.children.flatMap((e=>this.getPlanHash(e)))]:e.childrenCompact&&(t=[...t,...e.childrenCompact.flatMap((e=>this.getPlanHash(e.firstOccurrence)))]),t}compactMetadata(e){return Object.fromEntries(Object.entries(e).map((([e,t])=>[e,this.compactMetadataValue(t)])))}compactMetadataValue(e){return e&&"object"==typeof e&&"termType"in e?this.getLogicalMetadata(e):e}getLogicalMetadata(e){const t={};if("type"in e){const r=e;switch(r.metadata?.scopedSource&&(t.source=r.metadata.scopedSource.source.toString()),r.type){case"pattern":t.pattern=this.quadToString(r);break;case"project":t.variables=r.variables.map((e=>e.value))}}return t}quadToString(e){return`${(0,n.termToString)(e.subject)} ${(0,n.termToString)(e.predicate)} ${(0,n.termToString)(e.object)}${"DefaultGraph"===e.graph.termType?"":` ${(0,n.termToString)(e.graph)}`}`}toCompactString(){const e=this.toJson(),t=[],r=new Map;if("logical"in e?this.nodeToCompactString(t,r,"",e):t.push("Empty"),r.size>0){t.push(""),t.push("sources:");for(const[e,n]of r.entries())t.push(` ${n}: ${e}`)}return t.join("\n")}nodeToCompactString(e,t,r,n,a){let o;n.source&&(o=t.get(n.source),void 0===o&&(o=t.size,t.set(n.source,o))),e.push(`${r}${n.logical}${n.physical?`(${n.physical})`:""}${n.pattern?` (${n.pattern})`:""}${n.variables?` (${n.variables.join(",")})`:""}${n.bindOperation?` bindOperation:(${n.bindOperation.pattern}) bindCardEst:${"estimate"===n.bindOperationCardinality.type?"~":""}${i(n.bindOperationCardinality.value)}`:""}${n.cardinality?` cardEst:${"estimate"===n.cardinality.type?"~":""}${i(n.cardinality.value)}`:""}${n.source?` src:${o}`:""}${n.cardinalityReal?` cardReal:${n.cardinalityReal}`:""}${n.timeSelf?` timeSelf:${i(n.timeSelf)}ms`:""}${n.timeLife?` timeLife:${i(n.timeLife)}ms`:""}${a?` ${a}`:""}`);for(const i of n.children??[])this.nodeToCompactString(e,t,`${r} `,i);for(const i of n.childrenCompact??[])this.nodeToCompactString(e,t,`${r} `,i.firstOccurrence,`compacted-occurrences:${i.occurrences}`)}},t.numberToString=i},54395:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(25441),t),i(r(16402),t)},47604:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryProcessSequential=void 0;const n=r(91674),i=r(59510),a=r(59946),o=r(32227),s=r(34368);class c extends a.ActorQueryProcess{constructor(e){super(e)}async test(e){if(e.context.get(o.KeysInitQuery.explain)||e.context.get(new s.ActionContextKey("explain")))throw new Error(`${this.name} is not able to explain queries.`);return!0}async run(e){let{operation:t,context:r}=await this.parse(e.query,e.context);return({operation:t,context:r}=await this.optimize(t,r)),{result:await this.evaluate(t,r)}}async parse(e,t){let r;if(t=(await this.mediatorContextPreprocess.mediate({context:t,initialize:!0})).context,"string"==typeof e){const n=(t=t.set(o.KeysInitQuery.queryString,e)).get(o.KeysInitQuery.baseIRI),i=t.get(o.KeysInitQuery.queryFormat),a=await this.mediatorQueryParse.mediate({context:t,query:e,queryFormat:i,baseIRI:n});r=a.operation,a.baseIRI&&(t=t.set(o.KeysInitQuery.baseIRI,a.baseIRI))}else r=e;if(t.has(o.KeysInitQuery.initialBindings)){const e=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,t);r=(0,i.materializeOperation)(r,t.get(o.KeysInitQuery.initialBindings),e),t=t.delete(o.KeysInitQuery.queryString)}return{operation:r,context:t}}async optimize(e,t){return t=t.set(o.KeysInitQuery.query,e),({operation:e,context:t}=await this.mediatorOptimizeQueryOperation.mediate({context:t,operation:e})),{operation:e,context:t=t.set(o.KeysInitQuery.query,e)}}async evaluate(e,t){const r=await this.mediatorQueryOperation.mediate({context:t,operation:e});return r.context=t,r}}t.ActorQueryProcessSequential=c},94739:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(47604),t)},45369:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeJson=void 0;const n=r(22083),i=r(76664),a=r(22112),o=r(58521);class s extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}async testHandleChecked(e,t){if(!["bindings","quads","boolean"].includes(e.type))throw new Error("This actor can only handle bindings or quad streams.");return!0}async runHandle(e,t,r){const n=new o.Readable;if(n._read=()=>{},"bindings"===e.type||"quads"===e.type){let t="bindings"===e.type?(0,i.wrap)(e.bindingsStream).map((e=>JSON.stringify(Object.fromEntries([...e].map((([e,t])=>[e.value,a.termToString(t)])))))):(0,i.wrap)(e.quadStream).map((e=>JSON.stringify(a.quadToStringQuad(e)))),r=!0;t=t.map((e=>{const t=`${r?"":","}\n${e}`;return r=!1,t})).prepend(["["]).append(["\n]\n"]),n.wrap(t)}else try{n.push(`${JSON.stringify(await e.execute())}\n`),n.push(null)}catch(e){setTimeout((()=>n.emit("error",e)))}return{data:n}}}t.ActorQueryResultSerializeJson=s},91875:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(45369),t)},2703:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeRdf=void 0;const n=r(22083);class i extends n.ActorQueryResultSerialize{constructor(e){super(e)}async testHandle(e,t,r){if("quads"!==e.type)throw new Error(`Actor ${this.name} can only handle quad streams`);const{mediaTypes:n}=await this.mediatorMediaTypeCombiner.mediate({context:r,mediaTypes:!0});if(!(t in n))throw new Error(`Actor ${this.name} can not handle media type ${t}. All available types: ${Object.keys(n)}`);return!0}async runHandle(e,t,r){return(await this.mediatorRdfSerialize.mediate({context:r,handle:{context:r,quadStream:e.quadStream},handleMediaType:t})).handle}async testMediaType(e){return!0}async getMediaTypes(e){return(await this.mediatorMediaTypeCombiner.mediate({context:e,mediaTypes:!0})).mediaTypes}async testMediaTypeFormats(e){return!0}async getMediaTypeFormats(e){return(await this.mediatorMediaTypeFormatCombiner.mediate({context:e,mediaTypeFormats:!0})).mediaTypeFormats}}t.ActorQueryResultSerializeRdf=i},63543:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(2703),t)},6301:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeSimple=void 0;const n=r(22083),i=r(76664),a=r(22112),o=r(58521);class s extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}async testHandleChecked(e,t){if(!["bindings","quads","boolean","void"].includes(e.type))throw new Error("This actor can only handle bindings streams, quad streams, booleans, or updates.");return!0}static termToString(e){return"Quad"===e.termType?(0,a.termToString)(e):e.value}async runHandle(e,t,r){const n=new o.Readable;return"bindings"===e.type?n.wrap(e.bindingsStream.map((e=>`${[...e].map((([e,t])=>`?${e.value}: ${s.termToString(t)}`)).join("\n")}\n\n`))):"quads"===e.type?n.wrap(e.quadStream.map((e=>`subject: ${s.termToString(e.subject)}\npredicate: ${s.termToString(e.predicate)}\nobject: ${s.termToString(e.object)}\ngraph: ${s.termToString(e.graph)}\n\n`))):n.wrap((0,i.wrap)("boolean"===e.type?e.execute().then((e=>[`${e}\n`])):e.execute().then((()=>["ok\n"])))),{data:n}}}t.ActorQueryResultSerializeSimple=s},96791:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(6301),t)},54438:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeSparqlCsv=void 0;const n=r(22083),i=r(58521);class a extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}static bindingToCsvBindings(e){if(!e)return"";let t=e.value;if("Literal"===e.termType)t=`${t}`;else if("BlankNode"===e.termType)t=`_:${t}`;else if("Quad"===e.termType){let r=a.bindingToCsvBindings(e.object);"Literal"===e.object.termType&&(r=`"${r.replaceAll('"','""')}"`),t=`<< ${a.bindingToCsvBindings(e.subject)} ${a.bindingToCsvBindings(e.predicate)} ${r} >>`}else t=`<${t}>`;return/[",\n\r]/u.test(t)&&(t=`"${t.replaceAll('"','""')}"`),t}async testHandleChecked(e,t){if("bindings"!==e.type)throw new Error("This actor can only handle bindings streams.");return!0}async runHandle(e,t,r){const n=e,o=new i.Readable,s=await n.metadata();return o.push(`${s.variables.map((e=>e.value)).join(",")}\r\n`),o.wrap(n.bindingsStream.map((e=>`${s.variables.map((t=>a.bindingToCsvBindings(e.get(t)))).join(",")}\r\n`))),{data:o}}}t.ActorQueryResultSerializeSparqlCsv=a},34357:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(54438),t)},21437:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActionObserverHttp=void 0;const n=r(34368);class i extends n.ActionObserver{constructor(e){super(e),this.requests=0,this.bus.subscribeObserver(this),this.httpInvalidator.addInvalidateListener((()=>{this.requests=0}))}onRun(e,t,r){this.requests++}}t.ActionObserverHttp=i},47670:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeSparqlJson=void 0;const n=r(22083),i=r(76664),a=r(58521);class o extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}static bindingToJsonBindings(e){if("Literal"===e.termType){const t=e,r={value:t.value,type:"literal"},{language:n,datatype:i}=t;return n?r["xml:lang"]=n:i&&"http://www.w3.org/2001/XMLSchema#string"!==i.value&&(r.datatype=i.value),r}return"BlankNode"===e.termType?{value:e.value,type:"bnode"}:"Quad"===e.termType?{value:{subject:o.bindingToJsonBindings(e.subject),predicate:o.bindingToJsonBindings(e.predicate),object:o.bindingToJsonBindings(e.object)},type:"triple"}:{value:e.value,type:"uri"}}async testHandleChecked(e,t){if(!["bindings","boolean"].includes(e.type))throw new Error("This actor can only handle bindings streams or booleans.");return!0}async runHandle(e,t,r){const n=new a.Readable,s={};if("bindings"===e.type){const c=await e.metadata();c.variables.length>0&&(s.vars=c.variables.map((e=>e.value)))}if(n.push(`{"head": ${JSON.stringify(s)},\n`),"bindings"===e.type){const u=e.bindingsStream;n.push('"results": { "bindings": [\n');let l=!0;function*d(e){yield e()}n.wrap((0,i.wrap)(u).map((e=>{const t=`${l?"":",\n"}${JSON.stringify(Object.fromEntries([...e].map((([e,t])=>[e.value,o.bindingToJsonBindings(t)]))))}`;return l=!1,t})).append((0,i.wrap)(d((()=>`\n]}${this.emitMetadata?`,\n"metadata": { "httpRequests": ${this.httpObserver.requests} }`:""}}\n`)))))}else n.wrap((0,i.wrap)(e.execute().then((e=>[`"boolean":${e}\n}\n`]))));return{data:n}}}t.ActorQueryResultSerializeSparqlJson=o},34593:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(21437),t),i(r(47670),t)},60096:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeSparqlTsv=void 0;const n=r(22083),i=r(64817),a=r(58521);class o extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}static bindingToTsvBindings(e){return e?(0,i.termToString)(e).replaceAll("\t","\\t").replaceAll("\n","\\n").replaceAll("\r","\\r"):""}async testHandleChecked(e,t){if("bindings"!==e.type)throw new Error("This actor can only handle bindings streams.");return!0}async runHandle(e,t,r){const n=e,i=new a.Readable,s=await n.metadata();return i.push(`${s.variables.map((e=>e.value)).join("\t")}\n`),i.wrap(n.bindingsStream.map((e=>`${s.variables.map((t=>o.bindingToTsvBindings(e.get(t)))).join("\t")}\n`))),{data:i}}}t.ActorQueryResultSerializeSparqlTsv=o},78432:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(60096),t)},83668:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeSparqlXml=void 0;const n=r(22083),i=r(76664),a=r(58521),o=r(72825);class s extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}static bindingToXmlBindings(e,t){return{name:"binding",attributes:{name:t.value},children:[this.valueToXmlValue(e)]}}static valueToXmlValue(e){let t;switch(e.termType){case"Literal":return t=e.language?{"xml:lang":e.language}:e.datatype&&"http://www.w3.org/2001/XMLSchema#string"!==e.datatype.value?{datatype:e.datatype.value}:{},{name:"literal",attributes:t,children:e.value};case"BlankNode":return{name:"bnode",children:e.value};case"Quad":return{name:"triple",children:[{name:"subject",children:[this.valueToXmlValue(e.subject)]},{name:"predicate",children:[this.valueToXmlValue(e.predicate)]},{name:"object",children:[this.valueToXmlValue(e.object)]}]};default:return{name:"uri",children:e.value}}}async testHandleChecked(e,t){if(!["bindings","boolean"].includes(e.type))throw new Error("This actor can only handle bindings streams or booleans.");return!0}async runHandle(e,t,r){const n=new a.Readable;n._read=()=>{};const c=new o.XmlSerializer,u=await e.metadata();if(n.push(o.XmlSerializer.header),n.push(c.open("sparql",{xmlns:"http://www.w3.org/2005/sparql-results#"})),n.push(c.serializeNode({name:"head",children:u.variables.map((e=>({name:"variable",attributes:{name:e.value}})))})),"bindings"===e.type){function*l(){yield c.close(),yield c.close()}n.push(c.open("results"));const d=(0,i.wrap)(e.bindingsStream).map((e=>c.serializeNode({name:"result",children:[...e].map((([e,t])=>s.bindingToXmlBindings(t,e)))}))).append((0,i.wrap)(l()));n.wrap(d)}else try{const p=await e.execute();n.push(c.serializeNode({name:"boolean",children:p.toString()})),n.push(c.close()),setTimeout((()=>n.push(null)))}catch(h){setTimeout((()=>n.emit("error",h)))}return{data:n}}}t.ActorQueryResultSerializeSparqlXml=s},72825:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.XmlSerializer=void 0;class r{constructor(){this.stack=[]}open(e,t){const r=`${this.identation()+this.formatTag(e,t,"open")}\n`;return this.stack.push(e),r}close(){const e=this.stack.pop();if(void 0===e)throw new Error("There is no tag left to close");return`${this.identation()+this.formatTag(e,{},"close")}\n`}serializeNode(e){if(void 0===e.children)return`${this.identation()+this.formatTag(e.name,e.attributes,"self-closing")}\n`;if("string"==typeof e.children)return`${this.identation()+this.formatTag(e.name,e.attributes,"open")+this.escape(e.children)+this.formatTag(e.name,{},"close")}\n`;const t=[];t.push(`${this.identation()+this.formatTag(e.name,e.attributes,"open")}\n`),this.stack.push(e.name);for(const r of e.children)t.push(this.serializeNode(r));return this.stack.pop(),t.push(`${this.identation()+this.formatTag(e.name,{},"close")}\n`),t.join("")}identation(){return this.stack.map((e=>" ")).join("")}formatTag(e,t,r){return`<${"close"===r?"/":""}${e}${Object.entries(t??{}).map((e=>` ${e[0]}="${this.escape(e[1])}"`))}${"self-closing"===r?"/":""}>`}escape(e){return e.replaceAll(/["&'<>]/gu,(e=>{switch(e){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case'"':return"""}}))}}t.XmlSerializer=r,r.header='\n'},68596:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(83668),t)},1990:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActionObserverHttp=void 0;const n=r(34368);class i extends n.ActionObserver{constructor(e){super(e),this.requests=0,this.bus.subscribeObserver(this),this.httpInvalidator.addInvalidateListener((()=>{this.requests=0}))}onRun(e,t,r){this.requests++}}t.ActionObserverHttp=i},28541:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeStats=void 0;const n=r(22083),i=r(76664),a=r(58521),o=r(39907);class s extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}async testHandleChecked(e,t){if(!["bindings","quads"].includes(e.type))throw new Error("This actor can only handle bindings streams or quad streams.");return!0}pushHeader(e){const t=["Result","Delay (ms)","HTTP requests"].join(",");e.push(`${t}\n`)}createStat(e,t){return`${[t,this.delay(e),this.httpObserver.requests].join(",")}\n`}createFooter(e){return`${["TOTAL",this.delay(e),this.httpObserver.requests].join(",")}\n`}async runHandle(e,t,r){const n=new a.Readable,o="bindings"===e.type?e.bindingsStream:e.quadStream,s=this.now();let c=1;const u=(0,i.wrap)(o).map((()=>this.createStat(s,c++))).append((0,i.wrap)(function*(e){yield e()}((()=>this.createFooter(s)))));return this.pushHeader(n),n.wrap(u),{data:n}}now(){if("undefined"==typeof performance){const e=o.hrtime();return 1e3*e[0]+e[1]/1e6}return performance.now()}delay(e){return this.now()-e}}t.ActorQueryResultSerializeStats=s},13900:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(1990),t),i(r(28541),t)},42787:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeTable=void 0;const n=r(22083),i=r(18050),a=r(22112),o=r(13252),s=r(58521),c=new i.DataFactory,u=o.QUAD_TERM_NAMES.map((e=>c.variable(e)));class l extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e),this.padding=l.repeat(" ",this.columnWidth)}static repeat(e,t){return e.repeat(t)}async testHandleChecked(e,t){if(!["bindings","quads"].includes(e.type))throw new Error("This actor can only handle bindings or quad streams.");return!0}termToString(e){return"Quad"===e.termType?(0,a.termToString)(e):e.value}pad(e){return e.length<=this.columnWidth?e+this.padding.slice(e.length):`${e.slice(0,this.columnWidth-1)}…`}pushHeader(e,t){const r=t.map((e=>this.pad(e.value))).join(" ");e.push(`${r}\n${l.repeat("-",r.length)}\n`)}createRow(e,t){return`${e.map((e=>t.has(e)?this.termToString(t.get(e)):"")).map((e=>this.pad(e))).join(" ")}\n`}async runHandle(e,t,r){const n=new s.Readable;let i;if("bindings"===e.type){i=e.bindingsStream.map((e=>this.createRow(t,e)));const t=(await e.metadata()).variables;this.pushHeader(n,t)}else i=e.quadStream.map((e=>`${(0,o.getTerms)(e).map((e=>this.pad(this.termToString(e)))).join(" ")}\n`)),this.pushHeader(n,u);return n.wrap(i),{data:n}}}t.ActorQueryResultSerializeTable=l},59655:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(42787),t)},71445:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeTree=void 0;const n=r(22083),i=r(32227),a=r(34368),o=r(58521),s=r(43004);class c extends n.ActorQueryResultSerializeFixedMediaTypes{constructor(e){super(e)}static async bindingsStreamToGraphQl(e,t,r){const n=a.ActionContext.ensureActionContext(t),o=new s.Converter(r),c={singularizeVariables:n.get(i.KeysInitQuery.graphqlSingularizeVariables)??{}};return o.bindingsToTree(await e.map((e=>Object.fromEntries([...e].map((([e,t])=>[e.value,t]))))).toArray(),c)}async testHandleChecked(e){if("bindings"!==e.type)throw new Error("This actor can only handle bindings streams.");return!0}async runHandle(e,t){const r=new o.Readable;return r._read=()=>{r._read=()=>{},c.bindingsStreamToGraphQl(e.bindingsStream,e.context,{materializeRdfJsTerms:!0}).then((e=>{r.push(JSON.stringify(e,null," ")),r.push(null)})).catch((e=>r.emit("error",e)))},{data:r}}}t.ActorQueryResultSerializeTree=c},70017:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.bindingsStreamToGraphQl=void 0;const a=r(71445),{bindingsStreamToGraphQl:o}=a.ActorQueryResultSerializeTree;t.bindingsStreamToGraphQl=o,i(r(71445),t)},33606:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyHypermediaNone=void 0;const n=r(27474),i=r(91674),a=r(89168),o=r(10953);class s extends a.ActorQuerySourceIdentifyHypermedia{constructor(e){super(e,"file")}async testMetadata(e){return{filterFactor:0}}async run(e){this.logInfo(e.context,`Identified as file source: ${e.url}`);const t=new n.QuerySourceRdfJs(await(0,o.storeStream)(e.quads),await i.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context));return t.toString=()=>`QuerySourceRdfJs(${e.url})`,t.referenceValue=e.url,{source:t}}}t.ActorQuerySourceIdentifyHypermediaNone=s},44538:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(33606),t)},88760:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyHypermediaQpf=void 0;const n=r(91674),i=r(89168),a=r(92591);class o extends i.ActorQuerySourceIdentifyHypermedia{constructor(e){super(e,"qpf")}async test(e){if(e.forceSourceType&&"qpf"!==e.forceSourceType&&"brtpf"!==e.forceSourceType)throw new Error(`Actor ${this.name} is not able to handle source type ${e.forceSourceType}.`);return this.testMetadata(e)}async testMetadata(e){const{searchForm:t}=await this.createSource(e.url,e.metadata,e.context,"brtpf"===e.forceSourceType);if(e.handledDatasets&&e.handledDatasets[t.dataset])throw new Error(`Actor ${this.name} can only be applied for the first page of a QPF dataset.`);return{filterFactor:1}}async run(e){this.logInfo(e.context,`Identified as qpf source: ${e.url}`);const t=await this.createSource(e.url,e.metadata,e.context,"brtpf"===e.forceSourceType,e.quads);return{source:t,dataset:t.searchForm.dataset}}async createSource(e,t,r,i,o){return new a.QuerySourceQpf(this.mediatorMetadata,this.mediatorMetadataExtract,this.mediatorDereferenceRdf,await n.BindingsFactory.create(this.mediatorMergeBindingsContext,r),this.subjectUri,this.predicateUri,this.objectUri,this.graphUri,e,t,i,o)}}t.ActorQuerySourceIdentifyHypermediaQpf=o},92591:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySourceQpf=void 0;const n=r(65483),i=r(32227),a=r(72394),o=r(76664),s=r(18050),c=r(22112),u=r(64817),l=r(13252),d=new(r(31578).Factory),p=new s.DataFactory;class h{constructor(e,t,r,n,i,s,c,u,l,d,h,f){this.referenceValue=l,this.mediatorMetadata=e,this.mediatorMetadataExtract=t,this.mediatorDereferenceRdf=r,this.bindingsFactory=n,this.subjectUri=i,this.predicateUri=s,this.objectUri=c,this.graphUri=u,this.url=l,this.bindingsRestricted=h,this.cachedQuads={};const y=this.getSearchForm(d);if(!y)throw new Error("Illegal state: found no TPF/QPF search form anymore in metadata.");if(this.searchForm=y,this.defaultGraph=d.defaultGraph?p.namedNode(d.defaultGraph):void 0,f){let e=(0,o.wrap)(f);this.defaultGraph&&(e=this.reverseMapQuadsToDefaultGraph(e)),d={...d,state:new a.MetadataValidationState},e.setProperty("metadata",d),this.cacheQuads(e,p.variable(""),p.variable(""),p.variable(""),p.variable(""))}}async getSelectorShape(){return this.bindingsRestricted?h.SELECTOR_SHAPE_BR:h.SELECTOR_SHAPE}queryBindings(e,t,r){if("pattern"!==e.type)throw new Error(`Attempted to pass non-pattern operation '${e.type}' to QuerySourceQpf`);const a=Boolean(t.get(i.KeysQueryOperation.unionDefaultGraph));let o=this.match(e.subject,e.predicate,e.object,e.graph,a,t,r);return o=(0,n.filterMatchingQuotedQuads)(e,o),(0,n.quadsToBindings)(o,e,this.bindingsFactory,a)}getSearchForm(e){if(!e.searchForms||!e.searchForms.values)return;const{searchForms:t}=e;for(const e of t.values){if(this.graphUri&&this.subjectUri in e.mappings&&this.predicateUri in e.mappings&&this.objectUri in e.mappings&&this.graphUri in e.mappings&&4===Object.keys(e.mappings).length)return e;if(this.subjectUri in e.mappings&&this.predicateUri in e.mappings&&this.objectUri in e.mappings&&3===Object.keys(e.mappings).length)return e}}createFragmentUri(e,t,r,n,i){const a={},o=[{uri:this.subjectUri,term:t},{uri:this.predicateUri,term:r},{uri:this.objectUri,term:n},{uri:this.graphUri,term:i}];for(const e of o)e.uri&&(this.bindingsRestricted||"Variable"!==e.term.termType&&("Quad"!==e.term.termType||(0,l.everyTermsNested)(e.term,(e=>"Variable"!==e.termType))))&&(a[e.uri]=(0,c.termToString)(e.term));return e.getUri(a)}match(e,t,r,n,i,s,c){let u=!1;if("DefaultGraph"===n.termType)if(this.defaultGraph)u=!0,n=this.defaultGraph;else if(4!==Object.keys(this.searchForm.mappings).length||this.defaultGraph)3===Object.keys(this.searchForm.mappings).length&&(n=p.variable("g"));else{if(!i){const e=new o.ArrayIterator([],{autoStart:!1});return e.setProperty("metadata",{state:new a.MetadataValidationState,requestTime:0,cardinality:{type:"exact",value:0},first:null,next:null,last:null,canContainUndefs:!1}),e}n=p.variable("g")}if(!c?.filterBindings){const i=this.getCachedQuads(e,t,r,n);if(i)return i}const d=this;let h;const f=async function(){let i=d.createFragmentUri(d.searchForm,e,t,r,n);c?.filterBindings&&(i=await d.getBindingsRestrictedLink(e,t,r,n,i,c.filterBindings));const o=await d.mediatorDereferenceRdf.mediate({context:s,url:i});i=o.url;const u=await d.mediatorMetadata.mediate({context:s,url:i,quads:o.data,triples:o.metadata?.triples}),{metadata:l}=await d.mediatorMetadataExtract.mediate({context:s,url:i,metadata:u.metadata,requestTime:o.requestTime});return h.setProperty("metadata",{...l,state:new a.MetadataValidationState,canContainUndefs:!1,subsetOf:d.url}),u.data}();return h=new o.TransformIterator((async()=>{const i=await f,a=p.defaultGraph();let s=(0,o.wrap)(i).transform({filter:i=>!!(0,l.matchPattern)(i,e,t,r,n)||u&&(0,l.matchPattern)(i,e,t,r,a)});return(u||"Variable"===n.termType)&&(s=this.reverseMapQuadsToDefaultGraph(s)),s}),{autoStart:!1}),c?.filterBindings?h:(this.cacheQuads(h,e,t,r,n),this.getCachedQuads(e,t,r,n))}async getBindingsRestrictedLink(e,t,r,n,i,a){const o=[];for(const e of await a.bindings.toArray()){const t=["("];for(const r of a.metadata.variables){const n=e.get(r);t.push(n?(0,u.termToString)(n):"UNDEF"),t.push(" ")}t.push(")"),o.push(t.join(""))}return 0===o.length&&o.push("()"),`${i}&values=${encodeURIComponent(`(${a.metadata.variables.map((e=>`?${e.value}`)).join(" ")}) { ${o.join(" ")} }`)}`}reverseMapQuadsToDefaultGraph(e){const t=p.defaultGraph();return e.map((e=>(0,l.mapTerms)(e,((e,r)=>"graph"===r&&e.equals(this.defaultGraph)?t:e))))}getPatternId(e,t,r,n){return JSON.stringify({s:"Variable"===e.termType?"":f(e),p:"Variable"===t.termType?"":f(t),o:"Variable"===r.termType?"":f(r),g:"Variable"===n.termType?"":f(n)})}cacheQuads(e,t,r,n,i){const a=this.getPatternId(t,r,n,i);this.cachedQuads[a]=e.clone()}getCachedQuads(e,t,r,n){const i=this.getPatternId(e,t,r,n),a=this.cachedQuads[i];if(a)return a.clone()}queryQuads(e,t){throw new Error("queryQuads is not implemented in QuerySourceQpf")}queryBoolean(e,t){throw new Error("queryBoolean is not implemented in QuerySourceQpf")}queryVoid(e,t){throw new Error("queryVoid is not implemented in QuerySourceQpf")}}function f(e){return"DefaultGraph"===e.termType?"|":(0,c.termToString)(e)}t.QuerySourceQpf=h,h.SELECTOR_SHAPE={type:"operation",operation:{operationType:"pattern",pattern:d.createPattern(p.variable("s"),p.variable("p"),p.variable("o"),p.variable("g"))},variablesOptional:[p.variable("s"),p.variable("p"),p.variable("o"),p.variable("g")]},h.SELECTOR_SHAPE_BR={type:"operation",operation:{operationType:"pattern",pattern:d.createPattern(p.variable("s"),p.variable("p"),p.variable("o"),p.variable("g"))},variablesOptional:[p.variable("s"),p.variable("p"),p.variable("o"),p.variable("g")],filterBindings:!0}},52378:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88760),t),i(r(92591),t)},480:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyHypermediaSparql=void 0;const n=r(91674),i=r(89168),a=r(99193);class o extends i.ActorQuerySourceIdentifyHypermedia{constructor(e){super(e,"sparql")}async testMetadata(e){if(!(e.forceSourceType||e.metadata.sparqlService||this.checkUrlSuffix&&e.url.endsWith("/sparql")))throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql.`);return{filterFactor:1}}async run(e){return this.logInfo(e.context,`Identified ${e.url} as sparql source with service URL: ${e.metadata.sparqlService||e.url}`),{source:new a.QuerySourceSparql(e.forceSourceType?e.url:e.metadata.sparqlService||e.url,e.context,this.mediatorHttp,this.bindMethod,await n.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context),this.forceHttpGet,this.cacheSize,this.countTimeout)}}}t.ActorQuerySourceIdentifyHypermediaSparql=o},99193:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySourceSparql=void 0;const n=r(32227),i=r(34368),a=r(72394),o=r(76664),s=r(74190),c=r(35069),u=r(18050),l=r(31578),d=new l.Factory,p=new u.DataFactory,h=p.variable("count"),f={type:"estimate",value:Number.POSITIVE_INFINITY};class y{constructor(e,t,r,n,i,a,o,u){this.referenceValue=e,this.url=e,this.context=t,this.mediatorHttp=r,this.bindMethod=n,this.bindingsFactory=i,this.endpointFetcher=new s.SparqlEndpointFetcher({method:a?"GET":"POST",fetch:(e,t)=>this.mediatorHttp.mediate({input:e,init:t,context:this.lastSourceContext}),prefixVariableQuestionMark:!0}),this.cache=o>0?new c.LRUCache({max:o}):void 0,this.countTimeout=u}async getSelectorShape(){return y.SELECTOR_SHAPE}queryBindings(e,t,r){let i;i=r?.joinBindings?y.addBindingsToOperation(this.bindMethod,e,r.joinBindings):Promise.resolve(e);const a=new o.TransformIterator((async()=>{const e=await i,a=l.Util.inScopeVariables(e),o=t.get(n.KeysInitQuery.queryString),s=!r?.joinBindings&&o?o:y.operationToSelectQuery(e,a),c=y.operationCanContainUndefs(e);return this.queryBindingsRemote(this.url,s,a,t,c)}),{autoStart:!1});return this.attachMetadata(a,t,i),a}queryQuads(e,t){this.lastSourceContext=this.context.merge(t);const r=this.endpointFetcher.fetchTriples(this.url,t.get(n.KeysInitQuery.queryString)??y.operationToQuery(e));this.lastSourceContext=void 0;const i=(0,o.wrap)(r,{autoStart:!1,maxBufferSize:Number.POSITIVE_INFINITY});return this.attachMetadata(i,t,Promise.resolve(e.input)),i}queryBoolean(e,t){this.lastSourceContext=this.context.merge(t);const r=this.endpointFetcher.fetchAsk(this.url,t.get(n.KeysInitQuery.queryString)??y.operationToQuery(e));return this.lastSourceContext=void 0,r}queryVoid(e,t){this.lastSourceContext=this.context.merge(t);const r=this.endpointFetcher.fetchUpdate(this.url,t.get(n.KeysInitQuery.queryString)??y.operationToQuery(e));return this.lastSourceContext=void 0,r}attachMetadata(e,t,r){let n=[],i=!1;new Promise((async(e,a)=>{let o;try{const a=await r;n=l.Util.inScopeVariables(a),o=y.operationToCountQuery(a),i=y.operationCanContainUndefs(a);const s=this.cache?.get(o);if(void 0!==s)return e(s);const c=setTimeout((()=>e(f)),this.countTimeout),u=await this.queryBindingsRemote(this.url,o,[h],t,!1);u.on("data",(t=>{clearTimeout(c);const r=t.get(h),n={type:"estimate",value:Number.POSITIVE_INFINITY};if(r){const e=Number.parseInt(r.value,10);Number.isNaN(e)||(n.type="exact",n.value=e,this.cache?.set(o,n))}return e(n)})),u.on("error",(()=>{clearTimeout(c),e(f)})),u.on("end",(()=>{clearTimeout(c),e(f)}))}catch(e){return a(e)}})).then((t=>{e.setProperty("metadata",{state:new a.MetadataValidationState,cardinality:t,canContainUndefs:i,variables:n})})).catch((()=>e.setProperty("metadata",{state:new a.MetadataValidationState,cardinality:f,canContainUndefs:i,variables:n})))}static async addBindingsToOperation(e,t,r){const n=await r.bindings.toArray();switch(e){case"values":return d.createJoin([d.createValues(r.metadata.variables,n.map((e=>Object.fromEntries([...e].map((([e,t])=>[`?${e.value}`,t])))))),t],!1);case"union":throw new Error('Not implemented yet: "union" case');case"filter":throw new Error('Not implemented yet: "filter" case')}}static operationToSelectQuery(e,t){return y.operationToQuery(d.createProject(e,t))}static operationToCountQuery(e){return y.operationToQuery(d.createProject(d.createExtend(d.createGroup(e,[],[d.createBoundAggregate(p.variable("var0"),"count",d.createWildcardExpression(),!1)]),p.variable("count"),d.createTermExpression(p.variable("var0"))),[p.variable("count")]))}static operationToQuery(e){return(0,l.toSparql)(e,{sparqlStar:!0})}static operationCanContainUndefs(e){let t=!1;return l.Util.recurseOperation(e,{leftjoin:()=>(t=!0,!1),values:e=>(t=e.bindings.some((t=>e.variables.some((e=>!(`?${e.value}`in t))))),!1),union(e){const r=e.input.map(l.Util.inScopeVariables).map((e=>e.map((e=>e.value)))).map((e=>e.sort(((e,t)=>e.localeCompare(t))))).map((e=>e.join(",")));return!!r.every((e=>e===r[0]))||(t=!0,!1)}}),t}async queryBindingsRemote(e,t,r,n,a){this.lastSourceContext=this.context.merge(n);const s=await this.endpointFetcher.fetchBindings(e,t);return this.lastSourceContext=void 0,(0,o.wrap)(s,{autoStart:!1,maxBufferSize:Number.POSITIVE_INFINITY}).map((t=>this.bindingsFactory.bindings(r.map((r=>{const n=t[`?${r.value}`];return a||n||i.Actor.getContextLogger(this.context)?.warn(`The endpoint ${e} failed to provide a binding for ${r.value}.`),[r,n]})).filter((([e,t])=>Boolean(t))))))}toString(){return`QuerySourceSparql(${this.url})`}}t.QuerySourceSparql=y,y.SELECTOR_SHAPE={type:"disjunction",children:[{type:"operation",operation:{operationType:"type",type:l.Algebra.types.PROJECT},joinBindings:!0},{type:"operation",operation:{operationType:"type",type:l.Algebra.types.CONSTRUCT}},{type:"operation",operation:{operationType:"type",type:l.Algebra.types.DESCRIBE}},{type:"operation",operation:{operationType:"type",type:l.Algebra.types.ASK}},{type:"operation",operation:{operationType:"type",type:l.Algebra.types.COMPOSITE_UPDATE}}]}},16025:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(480),t),i(r(99193),t)},93017:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyHypermedia=void 0;const n=r(91674),i=r(65483),a=r(32227),o=r(34368),s=r(870);class c extends i.ActorQuerySourceIdentify{constructor(e){super(e)}async test(e){if("string"!=typeof e.querySourceUnidentified.value)throw new TypeError(`${this.name} requires a single query source with a URL value to be present in the context.`);return!0}async run(e){return{querySource:{source:new s.QuerySourceHypermedia(this.cacheSize,e.querySourceUnidentified.value,e.querySourceUnidentified.type,this.maxIterators,this.aggregateTraversalStore&&Boolean(e.querySourceUnidentified.context?.get(a.KeysQuerySourceIdentify.traverse)),{mediatorMetadata:this.mediatorMetadata,mediatorMetadataExtract:this.mediatorMetadataExtract,mediatorMetadataAccumulate:this.mediatorMetadataAccumulate,mediatorDereferenceRdf:this.mediatorDereferenceRdf,mediatorQuerySourceIdentifyHypermedia:this.mediatorQuerySourceIdentifyHypermedia,mediatorRdfResolveHypermediaLinks:this.mediatorRdfResolveHypermediaLinks,mediatorRdfResolveHypermediaLinksQueue:this.mediatorRdfResolveHypermediaLinksQueue},(t=>this.logWarn(e.context,t)),await n.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context)),context:e.querySourceUnidentified.context??new o.ActionContext}}}}t.ActorQuerySourceIdentifyHypermedia=c},87896:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkedRdfSourcesAsyncRdfIterator=void 0;const n=r(32227),i=r(72394),a=r(76664);class o extends a.BufferedIterator{constructor(e,t,r,n,i,a,o,s){if(super({autoStart:!1,...s}),this.started=!1,this.currentIterators=[],this.iteratorsPendingCreation=0,this.iteratorsPendingTermination=0,this.accumulatedMetadata=Promise.resolve(void 0),this._reading=!1,this.cacheSize=e,this.operation=t,this.queryBindingsOptions=r,this.context=n,this.firstUrl=i,this.maxIterators=a,this.sourceStateGetter=o,this.maxIterators<=0)throw new Error(`LinkedRdfSourcesAsyncRdfIterator.maxIterators must be larger than zero, but got ${this.maxIterators}`)}kickstart(){this.started||this._fillBufferAsync()}getProperty(e,t){return"metadata"!==e||this.started||(this.preflightMetadata||(this.preflightMetadata=new Promise(((e,t)=>{this.sourceStateGetter({url:this.firstUrl},{}).then((t=>{const r=t.source.queryBindings(this.operation,this.context);r.getProperty("metadata",(n=>{n.state=new i.MetadataValidationState,r.destroy(),this.accumulateMetadata(t.metadata,n).then((r=>{const i={...t.metadata,...n,...r};e(i)})).catch((()=>{e({...t.metadata,state:new i.MetadataValidationState})}))}))})).catch(t)}))),this.preflightMetadata.then((e=>this.setProperty("metadata",e))).catch((()=>{}))),super.getProperty(e,t)}_end(e){for(const e of this.currentIterators)e.destroy();super._end(e)}_read(e,t){if(this.started){for(const t of this.currentIterators){for(;e>0;){const r=t.read();if(null===r)break;e--,this._push(r)}if(e<=0)break}e>=0&&this.canStartNewIterator()?this.sourceStateGetter({url:this.firstUrl},{}).then((e=>{this.startIteratorsForNextUrls(e.handledDatasets,!1),t()})):t()}else this.started=!0,this.sourceStateGetter({url:this.firstUrl},{}).then((e=>{this.startIterator(e),t()})).catch((e=>setTimeout((()=>this.destroy(e)))))}canStartNewIterator(){return this.currentIterators.length+this.iteratorsPendingCreation+this.iteratorsPendingTermination0}startIterator(e){try{const t=e.source.queryBindings(this.operation,this.context,this.queryBindingsOptions);this.currentIterators.push(t);let r=!1,n=!1;t._destination=this,t.on("error",(e=>this.destroy(e))),t.on("readable",(()=>this._fillBuffer())),t.on("end",(()=>{this.currentIterators.splice(this.currentIterators.indexOf(t),1),r=!0,n||this.iteratorsPendingTermination++,n&&this.startIteratorsForNextUrls(e.handledDatasets,!0)})),t.getProperty("metadata",(t=>{this.accumulatedMetadata=this.accumulatedMetadata.then((a=>(async()=>(a||(a=e.metadata),this.accumulateMetadata(a,t)))().then((a=>{const o={...e.metadata,...t,...a};return o.state=new i.MetadataValidationState,this.updateMetadata(o),this.preflightMetadata&&this.preflightMetadata.then((e=>e.state.invalidate())).catch((()=>{})),this.getSourceLinks(o,e).then((e=>Promise.all(e))).then((async t=>{const i=await this.getLinkQueue();for(const r of t)i.push(r,e.link);n=!0,r&&this.iteratorsPendingTermination--,this.startIteratorsForNextUrls(e.handledDatasets,!0)})).catch((e=>this.destroy(e))),o})))).catch((e=>(this.destroy(e),{})))}))}catch(e){this.destroy(e)}}updateMetadata(e){const t=this.getProperty("metadata");this.setProperty("metadata",e),t?.state.invalidate()}isRunning(){return!this.done}startIteratorsForNextUrls(e,t){this.getLinkQueue().then((r=>{for(;this.canStartNewIterator()&&this.isRunning();){const t=r.pop();if(!t)break;this.iteratorsPendingCreation++,this.sourceStateGetter(t,e).then((e=>{const t=this.context.get(n.KeysStatistics.dereferencedLinks);t&&t.updateStatistic({url:e.link.url,metadata:{...e.metadata,...e.link.metadata}},e.source),this.iteratorsPendingCreation--,this.startIterator(e)})).catch((e=>this.emit("error",e)))}t&&this.isCloseable(r,!0)&&this.close()})).catch((e=>this.destroy(e)))}isCloseable(e,t){return e.isEmpty()&&!this.areIteratorsRunning()}}t.LinkedRdfSourcesAsyncRdfIterator=o},47833:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatedLinkedRdfSourcesAsyncRdfIterator=void 0;const n=r(32227),i=r(18050),a=r(31578),o=r(87896),s=new i.DataFactory,c=new a.Factory;class u extends o.LinkedRdfSourcesAsyncRdfIterator{constructor(e,t,r,n,i,a,o,s,c,u,l,d){super(e,t,r,n,a,o,s,c?{maxBufferSize:Number.POSITIVE_INFINITY}:void 0),this.wasForcefullyClosed=!1,this.forceSourceType=i,this.mediatorMetadataAccumulate=u,this.mediatorRdfResolveHypermediaLinks=l,this.mediatorRdfResolveHypermediaLinksQueue=d,this.handledUrls={[a]:!0},this.aggregatedStore=c}close(){this.aggregatedStore?this.getLinkQueue().then((e=>{this.isCloseable(e,!1)?(this.aggregatedStore&&setTimeout((()=>this.aggregatedStore.end())),super.close()):this.wasForcefullyClosed=!0})).catch((e=>super.destroy(e))):super.close()}destroy(e){this.aggregatedStore?this.getLinkQueue().then((t=>{e??this.isCloseable(t,!1)?(this.aggregatedStore&&setTimeout((()=>this.aggregatedStore.end())),super.destroy(e)):this.wasForcefullyClosed=!0})).catch((e=>super.destroy(e))):super.destroy(e)}isCloseable(e,t){return(t?e.isEmpty():this.wasForcefullyClosed||e.isEmpty())&&!this.areIteratorsRunning()}canStartNewIterator(){return!this.wasForcefullyClosed&&this.aggregatedStore&&this.aggregatedStore.hasRunningIterators()||super.canStartNewIterator()}canStartNewIteratorConsiderReadable(){return!this.aggregatedStore}isRunning(){return this.aggregatedStore&&this.aggregatedStore.hasRunningIterators()||!this.done}getLinkQueue(){return this.linkQueue||(this.linkQueue=this.mediatorRdfResolveHypermediaLinksQueue.mediate({firstUrl:this.firstUrl,context:this.context}).then((e=>e.linkQueue))),this.linkQueue}async getSourceLinks(e,t){try{const{links:r}=await this.mediatorRdfResolveHypermediaLinks.mediate({context:this.context,metadata:e}),i=this.context.get(n.KeysStatistics.discoveredLinks);if(i)for(const e of r)i.updateStatistic({url:e.url,metadata:{...e.metadata}},t.link);return r.filter((e=>!this.handledUrls[e.url]&&(this.handledUrls[e.url]=!0,!0)))}catch{return[]}}startIterator(e){if(this.aggregatedStore&&!this.aggregatedStore.containedSources.has(e.link.url)){this.aggregatedStore?.containedSources.add(e.link.url);const t=e.source.queryBindings(c.createPattern(s.variable("s"),s.variable("p"),s.variable("o"),s.variable("g")),this.context.set(n.KeysQueryOperation.unionDefaultGraph,!0)).map((e=>s.quad(e.get("s"),e.get("p"),e.get("o"),e.get("g"))));this.aggregatedStore.import(t).on("end",(()=>{super.startIterator(e)}))}else super.startIterator(e)}async accumulateMetadata(e,t){return(await this.mediatorMetadataAccumulate.mediate({mode:"append",accumulatedMetadata:e,appendingMetadata:t,context:this.context})).metadata}updateMetadata(e){super.updateMetadata(e),this.aggregatedStore?.setBaseMetadata(e,!0)}}t.MediatedLinkedRdfSourcesAsyncRdfIterator=u},870:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySourceHypermedia=void 0;const n=r(27474),i=r(32227),a=r(76664),o=r(35069),s=r(58521),c=r(47833),u=r(69321);t.QuerySourceHypermedia=class{constructor(e,t,r,n,i,a,s,c){this.referenceValue=t,this.cacheSize=e,this.firstUrl=t,this.forceSourceType=r,this.maxIterators=n,this.mediators=a,this.aggregateStore=i,this.logWarning=s,this.bindingsFactory=c,this.sourcesState=new o.LRUCache({max:this.cacheSize})}async getSelectorShape(e){return(await this.getSourceCached({url:this.firstUrl},{},e,this.getAggregateStore(e))).source.getSelectorShape(e)}queryBindings(e,t,r){const i=this.getAggregateStore(t);if(i&&"pattern"===e.type&&i.started)return new n.QuerySourceRdfJs(i,this.bindingsFactory).queryBindings(e,t);0===this.sourcesState.size&&this.getSourceCached({url:this.firstUrl},{},t,i).catch((e=>a.destroy(e)));const a=new c.MediatedLinkedRdfSourcesAsyncRdfIterator(this.cacheSize,e,r,t,this.forceSourceType,this.firstUrl,this.maxIterators,((e,r)=>this.getSourceCached(e,r,t,i)),i,this.mediators.mediatorMetadataAccumulate,this.mediators.mediatorRdfResolveHypermediaLinks,this.mediators.mediatorRdfResolveHypermediaLinksQueue);if(i){i.started=!0;const e=()=>a.kickstart();i.addIteratorCreatedListener(e),a.on("end",(()=>i.removeIteratorCreatedListener(e)))}return a}queryQuads(e,t){return new a.TransformIterator((async()=>(await this.getSourceCached({url:this.firstUrl},{},t,this.getAggregateStore(t))).source.queryQuads(e,t)))}async queryBoolean(e,t){const r=await this.getSourceCached({url:this.firstUrl},{},t,this.getAggregateStore(t));return await r.source.queryBoolean(e,t)}async queryVoid(e,t){const r=await this.getSourceCached({url:this.firstUrl},{},t,this.getAggregateStore(t));return await r.source.queryVoid(e,t)}async getSource(e,t,r,n){e.context&&(r=r.merge(e.context));let i,a,o=e.url;try{const t=await this.mediators.mediatorDereferenceRdf.mediate({context:r,url:o});o=t.url;const n=await this.mediators.mediatorMetadata.mediate({context:r,url:o,quads:t.data,triples:t.metadata?.triples});n.data.on("error",(()=>{})),a=(await this.mediators.mediatorMetadataExtract.mediate({context:r,url:o,metadata:n.metadata,headers:t.headers,requestTime:t.requestTime})).metadata,i=n.data,e.transform&&(i=await e.transform(i))}catch(e){i=new s.Readable,i.read=()=>(setTimeout((()=>i.emit("error",e))),null),({metadata:a}=await this.mediators.mediatorMetadataAccumulate.mediate({context:r,mode:"initialize"})),this.logWarning(`Metadata extraction for ${o} failed: ${e.message}`)}n?.setBaseMetadata(a,!1),n?.containedSources.add(e.url),n?.import(i);const{source:c,dataset:u}=await this.mediators.mediatorQuerySourceIdentifyHypermedia.mediate({context:r,forceSourceType:e.url===this.firstUrl?this.forceSourceType:void 0,handledDatasets:t,metadata:a,quads:i,url:o});return u&&(t[u]=!0),{link:e,source:c,metadata:a,handledDatasets:t}}getSourceCached(e,t,r,n){let i=this.sourcesState.get(e.url);return i||(i=this.getSource(e,t,r,n),e.url!==this.firstUrl&&void 0!==n||this.sourcesState.set(e.url,i),i)}getAggregateStore(e){let t;if(this.aggregateStore){const r=e.get(i.KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores);if(r)return t=r.get(this.firstUrl),t||(t=new u.StreamingStoreMetadata(void 0,(async(t,r)=>(await this.mediators.mediatorMetadataAccumulate.mediate({mode:"append",accumulatedMetadata:t,appendingMetadata:r,context:e})).metadata)),r.set(this.firstUrl,t)),t}}toString(){return`QuerySourceHypermedia(${this.firstUrl})`}}},69321:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StreamingStoreMetadata=void 0;const n=r(59510),i=r(72394),a=r(2887);class o extends a.StreamingStore{constructor(e,t){super(e),this.started=!1,this.containedSources=new Set,this.runningIterators=new Set,this.iteratorCreatedListeners=new Set,this.baseMetadata={state:new i.MetadataValidationState,cardinality:{type:"exact",value:0},canContainUndefs:!1,variables:[]},this.metadataAccumulator=t}import(e){return this.ended||super.import(e),e}hasRunningIterators(){return this.runningIterators.size>0}match(e,t,r,a){const o=super.match(e,t,r,a),s=new n.ClosableTransformIterator(o,{autoStart:!1,onClose:()=>{this.runningIterators.delete(s)}});let c=this.getStore().countQuads(e,t,r,a);const u={state:new i.MetadataValidationState,cardinality:{type:"estimate",value:c},canContainUndefs:!1};s.setProperty("metadata",u),s.setProperty("lastCount",c),o.on("quad",(()=>{s.setProperty("lastCount",++c),this.updateMetadataState(s,c)})),this.runningIterators.add(s);for(const e of this.iteratorCreatedListeners)e();return s}setBaseMetadata(e,t){if(this.baseMetadata={...e},this.baseMetadata.cardinality={type:"exact",value:0},t)for(const e of this.runningIterators){const t=e.getProperty("lastCount");this.updateMetadataState(e,t)}}updateMetadataState(e,t){const r={state:new i.MetadataValidationState,cardinality:{type:"estimate",value:t},canContainUndefs:!1,variables:[]};this.metadataAccumulator(this.baseMetadata,r).then((t=>{t.state=new i.MetadataValidationState;const r=e.getProperty("metadata");e.setProperty("metadata",t),r?.state.invalidate()})).catch((()=>{}))}addIteratorCreatedListener(e){this.iteratorCreatedListeners.add(e)}removeIteratorCreatedListener(e){this.iteratorCreatedListeners.delete(e)}}t.StreamingStoreMetadata=o},57789:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(93017),t),i(r(870),t)},34263:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyRdfJs=void 0;const n=r(91674),i=r(65483),a=r(34368),o=r(35720);class s extends i.ActorQuerySourceIdentify{constructor(e){super(e)}async test(e){const t=e.querySourceUnidentified;if(void 0!==t.type&&"rdfjs"!==t.type)throw new Error(`${this.name} requires a single query source with rdfjs type to be present in the context.`);if("string"==typeof t.value||!("match"in t.value))throw new Error(`${this.name} received an invalid rdfjs query source.`);return!0}async run(e){return{querySource:{source:new o.QuerySourceRdfJs(e.querySourceUnidentified.value,await n.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context)),context:e.querySourceUnidentified.context??new a.ActionContext}}}}t.ActorQuerySourceIdentifyRdfJs=s},45958:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},35720:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySourceRdfJs=void 0;const n=r(65483),i=r(32227),a=r(72394),o=r(76664),s=r(18050),c=r(13252),u=new(r(31578).Factory),l=new s.DataFactory;class d{constructor(e,t){this.source=e,this.referenceValue=e,this.bindingsFactory=t}static nullifyVariables(e,t){return!e||"Variable"===e.termType||!t&&"Quad"===e.termType&&(0,c.someTermsNested)(e,(e=>"Variable"===e.termType))?void 0:e}static hasDuplicateVariables(e){const t=(0,c.filterTermsNested)(e,(e=>"Variable"===e.termType));return t.length>1&&(0,c.uniqTerms)(t).lengths.destroy(e))),(0,n.quadsToBindings)(s,e,this.bindingsFactory,Boolean(t.get(i.KeysQueryOperation.unionDefaultGraph)))}async setMetadata(e,t){const r=Boolean(this.source.features?.quotedTripleFiltering);let n;if(this.source.countQuads)n=await this.source.countQuads(d.nullifyVariables(t.subject,r),d.nullifyVariables(t.predicate,r),d.nullifyVariables(t.object,r),d.nullifyVariables(t.graph,r));else{let e=0;n=await new Promise(((n,i)=>{const a=this.source.match(d.nullifyVariables(t.subject,r),d.nullifyVariables(t.predicate,r),d.nullifyVariables(t.object,r),d.nullifyVariables(t.graph,r));a.on("error",i),a.on("end",(()=>n(e))),a.on("data",(()=>e++))}))}const i=!r&&(0,c.someTerms)(t,(e=>"Quad"===e.termType))||d.hasDuplicateVariables(t);e.setProperty("metadata",{state:new a.MetadataValidationState,cardinality:{type:i?"estimate":"exact",value:n},canContainUndefs:!1})}queryQuads(e,t){throw new Error("queryQuads is not implemented in QuerySourceRdfJs")}queryBoolean(e,t){throw new Error("queryBoolean is not implemented in QuerySourceRdfJs")}queryVoid(e,t){throw new Error("queryVoid is not implemented in QuerySourceRdfJs")}toString(){return`QuerySourceRdfJs(${this.source.constructor.name})`}}t.QuerySourceRdfJs=d,d.SELECTOR_SHAPE={type:"operation",operation:{operationType:"pattern",pattern:u.createPattern(l.variable("s"),l.variable("p"),l.variable("o"))},variablesOptional:[l.variable("s"),l.variable("p"),l.variable("o")]}},27474:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(34263),t),i(r(45958),t),i(r(35720),t)},16661:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifySerialized=void 0;const n=r(65483),i=r(10953),a=r(58521);class o extends n.ActorQuerySourceIdentify{constructor(e){super(e)}async test(e){if(!this.isStringSource(e.querySourceUnidentified))throw new Error(`${this.name} requires a single query source with serialized type to be present in the context.`);return!0}async run(e){return await this.mediatorQuerySourceIdentify.mediate({querySourceUnidentified:{type:"rdfjs",value:await this.getRdfSource(e.context,e.querySourceUnidentified),context:e.querySourceUnidentified.context},context:e.context})}async getRdfSource(e,t){const r=new a.Readable({objectMode:!0});r._read=()=>{},r.push(t.value),r.push(null);const n={context:e,handle:{metadata:{baseIRI:t.baseIRI},data:r,context:e},handleMediaType:t.mediaType},o=await this.mediatorRdfParse.mediate(n);return await(0,i.storeStream)(o.handle.data)}isStringSource(e){return"type"in e?"serialized"===e.type:"string"==typeof e.value&&"mediaType"in e}}t.ActorQuerySourceIdentifySerialized=o},84701:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(16661),t)},13494:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinEntriesSortCardinality=void 0;const n=r(84287);class i extends n.ActorRdfJoinEntriesSort{constructor(e){super(e)}async test(e){return!0}async run(e){return{entries:[...e.entries].sort(((e,t)=>e.metadata.cardinality.value-t.metadata.cardinality.value))}}}t.ActorRdfJoinEntriesSortCardinality=i},36545:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(13494),t)},87653:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinHash=void 0;const n=r(32353),i=r(2922);class a extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"hash",limitEntries:2,requiresVariableOverlap:!0})}async getOutput(e){let t=await n.ActorRdfJoin.getMetadatas(e.entries);t[1].cardinality.valuen.ActorRdfJoin.hash(e,r)),n.ActorRdfJoin.joinBindings),metadata:async()=>await this.constructResultMetadata(e.entries,t,e.context)}}}async getJoinCoefficients(e,t){t[1].cardinality.value{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMultiBindSource=void 0;const n=r(59510),i=r(32353),a=r(76664),o=new(r(31578).Factory);class s extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"bind-source",canHandleUndefs:!0})}async getOutput(e){const t=await i.ActorRdfJoin.getEntriesWithMetadatas(e.entries),r=await this.sortJoinEntries(t,e.context);this.logDebug(e.context,"First entry for Bind Join Source: ",(()=>({entry:r[0].operation,metadata:r[0].metadata})));for(const[e,t]of r.entries())0!==e&&t.output.bindingsStream.close();const o=r[0].output,s=r[0].metadata,c=[...r];c.splice(0,1);const u=n.ActorQueryOperation.getOperationSource(c[0].operation),l=this.createOperationFromEntries(c),d=new i.ChunkedIterator(o.bindingsStream,this.blockSize,{autoStart:!1});return{result:{type:"bindings",bindingsStream:new a.UnionIterator(d.map((t=>u.source.queryBindings(l,u.context?e.context.merge(u.context):e.context,{joinBindings:{bindings:t,metadata:s}})))),metadata:()=>this.constructResultMetadata(r,r.map((e=>e.metadata)),e.context)},physicalPlanMetadata:{bindIndex:t.indexOf(r[0])}}}async sortJoinEntries(e,t){return(e=await i.ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort,e,t)).sort(((e,t)=>e.operationModified&&!t.operationModified?-1:0))}async getJoinCoefficients(e,t){const r=await this.sortJoinEntries(e.entries.map(((e,r)=>({...e,metadata:t[r]}))),e.context);t=r.map((e=>e.metadata));const a=i.ActorRdfJoin.getRequestInitialTimes(t),o=i.ActorRdfJoin.getRequestItemTimes(t),s=[...r],c=[...a],u=[...o];s.splice(0,1),c.splice(0,1),u.splice(0,1);const l=s.map((e=>n.ActorQueryOperation.getOperationSource(e.operation)));if(l.some((e=>!e)))throw new Error(`Actor ${this.name} can not bind on remaining operations without source annotation`);if(l.some((e=>e!==l[0])))throw new Error(`Actor ${this.name} can not bind on remaining operations with non-equal source annotation`);const d=l[0],p=this.createOperationFromEntries(s),h=await d.source.getSelectorShape(e.context);if(!n.ActorQueryOperation.doesShapeAcceptOperation(h,p,{joinBindings:!0}))throw new Error(`Actor ${this.name} detected a source that can not handle passing down join bindings`);const f=await Promise.all(s.map((async t=>(await this.mediatorJoinSelectivity.mediate({entries:[r[0],t],context:e.context})).selectivity*this.selectivityModifier))),y=s.map(((e,t)=>e.metadata.cardinality.value*f[t])).reduce(((e,t)=>e+t),0);return{iterations:1,persistedItems:t[0].cardinality.value,blockingItems:t[0].cardinality.value,requestTime:a[0]+t[0].cardinality.value*o[0]+a[1]+y*o[1]}}createOperationFromEntries(e){return 1===e.length?e[0].operation:o.createJoin(e.map((e=>e.operation)),!0)}}t.ActorRdfJoinMultiBindSource=s},6551:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(57581),t)},38752:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMultiBind=void 0;const n=r(91674),i=r(59510),a=r(32353),o=r(32227),s=r(76664),c=r(31578);class u extends a.ActorRdfJoin{constructor(e){void 0===e.minMaxCardinalityRatio&&(e.minMaxCardinalityRatio=60),super(e,{logicalType:"inner",physicalName:"bind",canHandleUndefs:!0,isLeaf:!1})}static createBindStream(e,t,r,n,a,o){const c="depth-first"===e,u=e=>{const t=r.map((t=>(0,i.materializeOperation)(t,e,o,{bindFilter:!0}))),a=t=>t.merge(e);return new s.TransformIterator((async()=>(await n(t,e)).transform({map:a})),{maxBufferSize:128,autoStart:c})};switch(e){case"depth-first":return new s.MultiTransformIterator(t,{autoStart:!1,multiTransform:u,optional:a});case"breadth-first":return new s.UnionIterator(t.transform({map:u,optional:a}),{autoStart:!1});default:throw new Error(`Received request for unknown bind order: ${e}`)}}async getOutput(e){const t=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context),r=await a.ActorRdfJoin.getEntriesWithMetadatas(e.entries),s=await a.ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort,r,e.context);this.logDebug(e.context,"First entry for Bind Join: ",(()=>({entry:s[0].operation,metadata:s[0].metadata})));for(const[e,t]of s.entries())0!==e&&t.output.bindingsStream.close();const c=s[0].output,l=[...s];l.splice(0,1);const d=e.context.set(o.KeysQueryOperation.joinLeftMetadata,s[0].metadata).set(o.KeysQueryOperation.joinRightMetadatas,l.map((e=>e.metadata)));return{result:{type:"bindings",bindingsStream:u.createBindStream(this.bindOrder,c.bindingsStream,l.map((e=>e.operation)),(async(e,t)=>{const r=1===e.length?e[0]:u.FACTORY.createJoin(e);return i.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:r,context:d?.set(o.KeysQueryOperation.joinBindings,t)})).bindingsStream}),!1,t),metadata:()=>this.constructResultMetadata(s,s.map((e=>e.metadata)),e.context)},physicalPlanMetadata:{bindIndex:r.indexOf(s[0]),bindOperation:s[0].operation,bindOperationCardinality:s[0].metadata.cardinality,bindOrder:this.bindOrder}}}canBindWithOperation(e){let t=!0;return c.Util.recurseOperation(e,{[c.Algebra.types.EXTEND]:()=>(t=!1,!1),[c.Algebra.types.GROUP]:()=>(t=!1,!1)}),t}async getJoinCoefficients(e,t){const r=await a.ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort,e.entries.map(((e,r)=>({...e,metadata:t[r]}))),e.context);t=r.map((e=>e.metadata));const n=a.ActorRdfJoin.getRequestInitialTimes(t),i=a.ActorRdfJoin.getRequestItemTimes(t),o=[...r],s=[...n],c=[...i];if(o.splice(0,1),s.splice(0,1),c.splice(0,1),o.some((e=>!this.canBindWithOperation(e.operation))))throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);if(o.some((e=>e.operationModified)))throw new Error(`Actor ${this.name} can not be used over remaining entries with modified operations`);if(t[0].cardinality.value*this.minMaxCardinalityRatio>Math.max(...t.map((e=>e.cardinality.value))))throw new Error(`Actor ${this.name} can only run if the smallest stream is much smaller than largest stream`);const u=await Promise.all(o.map((async t=>(await this.mediatorJoinSelectivity.mediate({entries:[r[0],t],context:e.context})).selectivity*this.selectivityModifier))),l=o.map(((e,t)=>e.metadata.cardinality.value*u[t])).reduce(((e,t)=>e+t),0),d=s.reduce(((e,t)=>e+t),0),p=c.reduce(((e,t)=>e+t),0);return{iterations:t[0].cardinality.value*l,persistedItems:0,blockingItems:0,requestTime:n[0]+t[0].cardinality.value*(i[0]+d+l*p)}}}t.ActorRdfJoinMultiBind=u,u.FACTORY=new c.Factory},82331:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(38752),t)},42548:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMultiEmpty=void 0;const n=r(32353),i=r(72394),a=r(76664);class o extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"multi-empty",canHandleUndefs:!0})}async test(e){if((await n.ActorRdfJoin.getMetadatas(e.entries)).every((e=>n.ActorRdfJoin.getCardinality(e).value>0)))throw new Error(`Actor ${this.name} can only join entries where at least one is empty`);return super.test(e)}async getOutput(e){for(const t of e.entries)t.output.bindingsStream.close();return{result:{bindingsStream:new a.ArrayIterator([],{autoStart:!1}),metadata:async()=>({state:new i.MetadataValidationState,cardinality:{type:"exact",value:0},canContainUndefs:!1,variables:n.ActorRdfJoin.joinVariables(await n.ActorRdfJoin.getMetadatas(e.entries))}),type:"bindings"}}}async getJoinCoefficients(e,t){return{iterations:0,persistedItems:0,blockingItems:0,requestTime:0}}}t.ActorRdfJoinMultiEmpty=o},85345:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(42548),t)},82314:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMultiSmallestFilterBindings=void 0;const n=r(91674),i=r(59510),a=r(32353),o=r(32227),s=r(76664),c=r(31578);class u extends a.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"multi-smallest-filter-bindings",limitEntries:2,limitEntriesMin:!0,isLeaf:!1})}async sortJoinEntries(e,t){let{entries:r}=await this.mediatorJoinEntriesSort.mediate({entries:e,context:t});r=r.sort(((e,t)=>e.operationModified&&!t.operationModified?-1:0));const n=r.splice(0,1)[0];let i,a=-1,o=0;for(const[e,t]of r.entries()){const r=n.metadata.variables.filter((e=>t.metadata.variables.some((t=>e.equals(t))))).length;(!i||r>o||r===o&&(t.metadata.variables.lengthc.metadata.variables.some((t=>e.equals(t))))),h={},f=d.clone().map((e=>e.filter(((e,t)=>p.some((e=>e.equals(t))))))).filter((e=>{const t=(0,n.bindingsToString)(e);return!(t in h)&&(h[t]=!0)})),y=new a.ChunkedIterator(f,this.blockSize,{autoStart:!1}),g=i.ActorQueryOperation.getOperationSource(c.operation),m={output:{type:"bindings",bindingsStream:new s.UnionIterator(y.map((t=>g.source.queryBindings(c.operation,g.context?e.context.merge(g.context):e.context,{filterBindings:{bindings:t,metadata:r.metadata}})))),metadata:c.output.metadata},operation:c.operation,operationModified:!0};c.output.bindingsStream.destroy();const b={output:i.ActorQueryOperation.getSafeBindings(await this.mediatorJoin.mediate({type:e.type,entries:[r,m],context:e.context.set(o.KeysRdfJoin.lastPhysicalJoin,this.physicalName)})),operation:u.FACTORY.createJoin([r.operation,m.operation],!1),operationModified:!0},v=l;return v.unshift(b),{result:await this.mediatorJoin.mediate({type:e.type,entries:v,context:e.context}),physicalPlanMetadata:{firstIndex:t.indexOf(r),secondIndex:t.indexOf(c)}}}async getJoinCoefficients(e,t){if(e.context.get(o.KeysRdfJoin.lastPhysicalJoin)===this.physicalName)throw new Error(`Actor ${this.name} can not be called recursively`);t=[...t];const{first:r,second:n,remaining:s}=await this.sortJoinEntries(e.entries.map(((e,r)=>({...e,metadata:t[r]}))),e.context),c=i.ActorQueryOperation.getOperationSource(n.operation);if(!c)throw new Error(`Actor ${this.name} can only process if entries[1] has a source`);const u=n.operation,l=await c.source.getSelectorShape(e.context);if(!i.ActorQueryOperation.doesShapeAcceptOperation(l,u,{filterBindings:!0}))throw new Error(`Actor ${this.name} can only process if entries[1] accept filterBindings`);t=[r.metadata,n.metadata,...s.map((e=>e.metadata))];const d=a.ActorRdfJoin.getRequestInitialTimes(t),p=a.ActorRdfJoin.getRequestItemTimes(t),{selectivity:h}=await this.mediatorJoinSelectivity.mediate({entries:[r,n],context:e.context}),f=s.reduce(((e,t)=>e*t.metadata.cardinality.value*this.selectivityModifier),1);return{iterations:h*this.selectivityModifier*n.metadata.cardinality.value*f,persistedItems:r.metadata.cardinality.value,blockingItems:r.metadata.cardinality.value,requestTime:d[0]+t[0].cardinality.value*p[0]+d[1]+f*p[1]}}}t.ActorRdfJoinMultiSmallestFilterBindings=u,u.FACTORY=new c.Factory},92107:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(82314),t)},17504:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMultiSmallest=void 0;const n=r(59510),i=r(32353),a=r(31578);class o extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"multi-smallest",limitEntries:3,limitEntriesMin:!0,canHandleUndefs:!0,isLeaf:!1})}async sortJoinEntries(e,t){return(await this.mediatorJoinEntriesSort.mediate({entries:e,context:t})).entries}async getOutput(e){const t=await this.sortJoinEntries(await i.ActorRdfJoin.getEntriesWithMetadatas([...e.entries]),e.context),r=t[0],a=t[1];t.splice(0,2);const s={output:n.ActorQueryOperation.getSafeBindings(await this.mediatorJoin.mediate({type:e.type,entries:[r,a],context:e.context})),operation:o.FACTORY.createJoin([r.operation,a.operation],!1)};return t.push(s),{result:await this.mediatorJoin.mediate({type:e.type,entries:t,context:e.context})}}async getJoinCoefficients(e,t){t=[...t];const r=await this.sortJoinEntries(e.entries.map(((e,r)=>({...e,metadata:t[r]}))),e.context);t=r.map((e=>e.metadata));const n=i.ActorRdfJoin.getRequestInitialTimes(t),a=i.ActorRdfJoin.getRequestItemTimes(t);return{iterations:t[0].cardinality.value*t[1].cardinality.value*t.slice(2).reduce(((e,t)=>e*t.cardinality.value),1),persistedItems:0,blockingItems:0,requestTime:n[0]+t[0].cardinality.value*a[0]+n[1]+t[1].cardinality.value*a[1]+t.slice(2).reduce(((e,t,r)=>e+n.slice(2)[r]+t.cardinality.value*a.slice(2)[r]),0)}}}t.ActorRdfJoinMultiSmallest=o,o.FACTORY=new a.Factory},68841:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(17504),t)},20743:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinNestedLoop=void 0;const n=r(32353),i=r(2922);class a extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"nested-loop",limitEntries:2,canHandleUndefs:!0})}async getOutput(e){return{result:{type:"bindings",bindingsStream:new i.NestedLoopJoin(e.entries[0].output.bindingsStream,e.entries[1].output.bindingsStream,n.ActorRdfJoin.joinBindings,{autoStart:!1}),metadata:async()=>await this.constructResultMetadata(e.entries,await n.ActorRdfJoin.getMetadatas(e.entries),e.context)}}}async getJoinCoefficients(e,t){const r=n.ActorRdfJoin.getRequestInitialTimes(t),i=n.ActorRdfJoin.getRequestItemTimes(t);return{iterations:t[0].cardinality.value*t[1].cardinality.value,persistedItems:0,blockingItems:0,requestTime:r[0]+t[0].cardinality.value*i[0]+r[1]+t[1].cardinality.value*i[1]}}}t.ActorRdfJoinNestedLoop=a},37081:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(20743),t)},19421:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinNone=void 0;const n=r(91674),i=r(32353),a=r(72394),o=r(76664);class s extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"none",limitEntries:0})}async test(e){if(e.entries.length>0)throw new Error(`Actor ${this.name} can only join zero entries`);return await this.getJoinCoefficients()}async getOutput(e){const t=await n.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context);return{result:{bindingsStream:new o.ArrayIterator([t.bindings()],{autoStart:!1}),metadata:()=>Promise.resolve({state:new a.MetadataValidationState,cardinality:{type:"exact",value:1},canContainUndefs:!1,variables:[]}),type:"bindings"}}}async getJoinCoefficients(){return{iterations:0,persistedItems:0,blockingItems:0,requestTime:0}}}t.ActorRdfJoinNone=s},498:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(19421),t)},28178:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinSingle=void 0;const n=r(32353);class i extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"single",limitEntries:1}),this.includeInLogs=!1}async test(e){if(1!==e.entries.length)throw new Error(`Actor ${this.name} can only join a single entry`);return await this.getJoinCoefficients()}async getOutput(e){return{result:e.entries[0].output}}async getJoinCoefficients(){return{iterations:0,persistedItems:0,blockingItems:0,requestTime:0}}}t.ActorRdfJoinSingle=i},35848:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(28178),t)},19273:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinSymmetricHash=void 0;const n=r(32353),i=r(2922);class a extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"inner",physicalName:"symmetric-hash",limitEntries:2,requiresVariableOverlap:!0})}async getOutput(e){const t=await n.ActorRdfJoin.getMetadatas(e.entries),r=n.ActorRdfJoin.overlappingVariables(t);return{result:{type:"bindings",bindingsStream:new i.SymmetricHashJoin(e.entries[0].output.bindingsStream,e.entries[1].output.bindingsStream,(e=>a.hash(e,r)),n.ActorRdfJoin.joinBindings),metadata:async()=>await this.constructResultMetadata(e.entries,t,e.context)}}}async getJoinCoefficients(e,t){const r=n.ActorRdfJoin.getRequestInitialTimes(t),i=n.ActorRdfJoin.getRequestItemTimes(t);return{iterations:t[0].cardinality.value+t[1].cardinality.value,persistedItems:t[0].cardinality.value+t[1].cardinality.value,blockingItems:0,requestTime:r[0]+t[0].cardinality.value*i[0]+r[1]+t[1].cardinality.value*i[1]}}}t.ActorRdfJoinSymmetricHash=a},77375:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(19273),t)},18014:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMinusHashUndef=void 0;const n=r(59510),i=r(32353),a=r(5985);class o extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"minus",physicalName:"hash-undef",limitEntries:2,canHandleUndefs:!0})}async getOutput(e){const t=e.entries[1].output,r=e.entries[0].output,o=await i.ActorRdfJoin.getMetadatas(e.entries),s=i.ActorRdfJoin.overlappingVariables(o);if(s.length>0){const e=new a.BindingsIndex(s),i=new n.ClosableTransformIterator((async()=>(await new Promise((r=>{t.bindingsStream.on("data",(t=>e.add(t))),t.bindingsStream.on("end",r),t.bindingsStream.on("error",(e=>{i.emit("error",e)}))})),r.bindingsStream.filter((t=>!e.contains(t))))),{autoStart:!1,onClose(){t.bindingsStream.destroy(),r.bindingsStream.destroy()}});return{result:{type:"bindings",bindingsStream:i,async metadata(){const e=await r.metadata(),t=await r.metadata();return{...t,canContainUndefs:e.canContainUndefs||t.canContainUndefs}}}}}return t.bindingsStream.destroy(),{result:r}}async getJoinCoefficients(e,t){const r=i.ActorRdfJoin.getRequestInitialTimes(t),n=i.ActorRdfJoin.getRequestItemTimes(t);return{iterations:1.01*(t[0].cardinality.value+t[1].cardinality.value),persistedItems:t[0].cardinality.value,blockingItems:t[0].cardinality.value,requestTime:r[0]+t[0].cardinality.value*n[0]+r[1]+t[1].cardinality.value*n[1]}}}t.ActorRdfJoinMinusHashUndef=o},5985:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BindingsIndex=void 0;const n=r(22112);class i{constructor(e){this.data={},this.keys=e}static hashTerm(e){return e&&"Variable"!==e.termType?(0,n.termToString)(e):""}add(e){if(this.isBindingsValid(e)){let t=this.data;for(const r of this.keys){const n=i.hashTerm(e.get(r));let a=t[n];a||(a=t[n]={}),t=a}}}contains(e){return!!this.isBindingsValid(e)&&this.containsRecursive(e,this.keys,[this.data])}isBindingsValid(e){let t=!1;for(const r of this.keys)if(e.get(r)){t=!0;break}return t}containsRecursive(e,t,r){if(0===t.length)return!0;let n;[n,...t]=t;for(const a of r){const r=i.hashTerm(e.get(n));if(r){const n=[a[r],a[""]].filter(Boolean);if(0===n.length)continue;if(this.containsRecursive(e,t,n))return!0}else{let r=Object.keys(a).map((e=>a[e]));if(0===r.length&&(r=[{}]),this.containsRecursive(e,t,r))return!0}}return!1}}t.BindingsIndex=i},98311:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18014),t)},99917:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinMinusHash=void 0;const n=r(59510),i=r(32353);class a extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"minus",physicalName:"hash",limitEntries:2})}async getOutput(e){const t=e.entries[1].output,r=e.entries[0].output,a=await i.ActorRdfJoin.getMetadatas(e.entries),o=i.ActorRdfJoin.overlappingVariables(a);if(o.length>0){const e={},a=new n.ClosableTransformIterator((async()=>(await new Promise((r=>{t.bindingsStream.on("data",(t=>{e[i.ActorRdfJoin.hashNonClashing(t,o)]=!0})),t.bindingsStream.on("end",r),t.bindingsStream.on("error",(e=>{a.emit("error",e)}))})),r.bindingsStream.filter((t=>!e[i.ActorRdfJoin.hashNonClashing(t,o)])))),{autoStart:!1,onClose(){t.bindingsStream.destroy(),r.bindingsStream.destroy()}});return{result:{type:"bindings",bindingsStream:a,metadata:r.metadata}}}return t.bindingsStream.destroy(),{result:r}}async getJoinCoefficients(e,t){const r=i.ActorRdfJoin.getRequestInitialTimes(t),n=i.ActorRdfJoin.getRequestItemTimes(t);return{iterations:t[0].cardinality.value+t[1].cardinality.value,persistedItems:t[0].cardinality.value,blockingItems:t[0].cardinality.value,requestTime:r[0]+t[0].cardinality.value*n[0]+r[1]+t[1].cardinality.value*n[1]}}}t.ActorRdfJoinMinusHash=a},11688:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(99917),t)},46869:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinOptionalBind=void 0;const n=r(82331),i=r(91674),a=r(59510),o=r(32353),s=r(32227),c=r(31578);class u extends o.ActorRdfJoin{constructor(e){super(e,{logicalType:"optional",physicalName:"bind",limitEntries:2,canHandleUndefs:!0,isLeaf:!1})}async getOutput(e){const t=await i.BindingsFactory.create(this.mediatorMergeBindingsContext,e.context);e.entries[1].output.bindingsStream.close();const r=e.context.set(s.KeysQueryOperation.joinLeftMetadata,await e.entries[0].output.metadata()).set(s.KeysQueryOperation.joinRightMetadatas,[await e.entries[1].output.metadata()]);return{result:{type:"bindings",bindingsStream:n.ActorRdfJoinMultiBind.createBindStream(this.bindOrder,e.entries[0].output.bindingsStream,[e.entries[1].operation],(async(e,t)=>{const n=e[0];return a.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({operation:n,context:r?.set(s.KeysQueryOperation.joinBindings,t)})).bindingsStream}),!0,t),metadata:async()=>await this.constructResultMetadata(e.entries,await o.ActorRdfJoin.getMetadatas(e.entries),e.context,{canContainUndefs:!0},!0)}}}async getJoinCoefficients(e,t){if(0===o.ActorRdfJoin.overlappingVariables(t).length)throw new Error(`Actor ${this.name} only join entries with at least one common variable`);const r=o.ActorRdfJoin.getRequestInitialTimes(t),n=o.ActorRdfJoin.getRequestItemTimes(t);if(e.entries[1].operation.type===c.Algebra.types.EXTEND||e.entries[1].operation.type===c.Algebra.types.GROUP)throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);const i=(await this.mediatorJoinSelectivity.mediate({entries:e.entries,context:e.context})).selectivity*this.selectivityModifier;return{iterations:t[0].cardinality.value*t[1].cardinality.value*i,persistedItems:0,blockingItems:0,requestTime:r[0]+t[0].cardinality.value*(n[0]+r[1]+i*t[1].cardinality.value*n[1])}}}t.ActorRdfJoinOptionalBind=u},64305:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(46869),t)},75015:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinOptionalHash=void 0;const n=r(59510),i=r(32353),a=r(76664),o=r(22112),s=r(66561),c=r(27900);class u extends i.ActorRdfJoin{constructor(e){super(e,{logicalType:"optional",physicalName:`hash-${e.canHandleUndefs?"undef":"def"}-${e.blocking?"blocking":"nonblocking"}`,limitEntries:2,canHandleUndefs:e.canHandleUndefs,requiresVariableOverlap:!0})}static constructIndex(e,t){return e?new c.BindingsIndexUndef(t,(e=>e&&"Variable"!==e.termType?(0,o.termToString)(e):"")):new s.BindingsIndexDef(t,i.ActorRdfJoin.hashNonClashing)}async getOutput(e){const t=e.entries[1].output,r=e.entries[0].output,o=await i.ActorRdfJoin.getMetadatas(e.entries),s=i.ActorRdfJoin.overlappingVariables(o);let c;return c=this.blocking?new n.ClosableTransformIterator((async()=>{const e=u.constructIndex(this.canHandleUndefs,s);return await new Promise((r=>{t.bindingsStream.on("data",(t=>{(e.getFirst(t)??e.put(t,[])).push(t)})),t.bindingsStream.on("end",r),t.bindingsStream.on("error",(e=>{c.emit("error",e)}))})),new a.MultiTransformIterator(r.bindingsStream,{multiTransform:t=>new a.ArrayIterator(e.get(t).flat().map((e=>i.ActorRdfJoin.joinBindings(t,e))).filter((e=>null!==e)),{autoStart:!1}),optional:!0,autoStart:!1})}),{autoStart:!1,onClose(){t.bindingsStream.destroy(),r.bindingsStream.destroy()}}):new n.ClosableTransformIterator((async()=>{const e=u.constructIndex(this.canHandleUndefs,s);let n=!0;return t.bindingsStream.on("data",(t=>{(e.getFirst(t)??e.put(t,new a.BufferedIterator({autoStart:!1})))._push(t)})),t.bindingsStream.on("end",(()=>{for(const t of e.values())t.close();n=!1})),t.bindingsStream.on("error",(e=>{c.emit("error",e)})),new a.MultiTransformIterator(r.bindingsStream,{multiTransform:t=>{let r=e.get(t);return 0===r.length&&(r=n?[e.put(t,new a.BufferedIterator({autoStart:!1}))]:[]),new a.UnionIterator(r.map((e=>e.clone())),{autoStart:!1}).map((e=>i.ActorRdfJoin.joinBindings(t,e)))},optional:!0,autoStart:!1})}),{autoStart:!1,onClose(){t.bindingsStream.destroy(),r.bindingsStream.destroy()}}),{result:{type:"bindings",bindingsStream:c,metadata:async()=>await this.constructResultMetadata(e.entries,await i.ActorRdfJoin.getMetadatas(e.entries),e.context,{canContainUndefs:!0},!0)}}}async getJoinCoefficients(e,t){const r=i.ActorRdfJoin.getRequestInitialTimes(t),n=i.ActorRdfJoin.getRequestItemTimes(t);let a=t[0].cardinality.value+t[1].cardinality.value;return this.canHandleUndefs||(a*=.8),this.blocking&&(a*=.9),{iterations:a,persistedItems:t[0].cardinality.value,blockingItems:this.blocking?t[0].cardinality.value:0,requestTime:r[0]+t[0].cardinality.value*n[0]+r[1]+t[1].cardinality.value*n[1]}}}t.ActorRdfJoinOptionalHash=u},66561:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BindingsIndexDef=void 0,t.BindingsIndexDef=class{constructor(e,t){this.keys=e,this.hashFn=t,this.index={}}put(e,t){return this.index[this.hashFn(e,this.keys)]=t}get(e){const t=this.getFirst(e);return t?[t]:[]}getFirst(e){return this.index[this.hashFn(e,this.keys)]}values(){return Object.values(this.index)}}},27900:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BindingsIndexUndef=void 0,t.BindingsIndexUndef=class{constructor(e,t){this.data={},this.keys=e,this.hashFn=t}put(e,t){if(this.isBindingsValid(e)){let r=this.data;for(let n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinOptionalNestedLoop=void 0;const n=r(32353),i=r(2922);class a extends n.ActorRdfJoin{constructor(e){super(e,{logicalType:"optional",physicalName:"nested-loop",limitEntries:2,canHandleUndefs:!0})}async getOutput(e){return{result:{type:"bindings",bindingsStream:new i.NestedLoopJoin(e.entries[0].output.bindingsStream,e.entries[1].output.bindingsStream,n.ActorRdfJoin.joinBindings,{optional:!0,autoStart:!1}),metadata:async()=>await this.constructResultMetadata(e.entries,await n.ActorRdfJoin.getMetadatas(e.entries),e.context,{canContainUndefs:!0},!0)}}}async getJoinCoefficients(e,t){const r=n.ActorRdfJoin.getRequestInitialTimes(t),i=n.ActorRdfJoin.getRequestItemTimes(t);return{iterations:t[0].cardinality.value*t[1].cardinality.value,persistedItems:0,blockingItems:0,requestTime:r[0]+t[0].cardinality.value*i[0]+r[1]+t[1].cardinality.value*i[1]}}}t.ActorRdfJoinOptionalNestedLoop=a},9391:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(67757),t)},7218:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JoinTypes=t.ActorRdfJoinSelectivityVariableCounting=void 0;const n=r(75245),i=r(31578);class a extends n.ActorRdfJoinSelectivity{constructor(e){super(e)}async test(e){return{accuracy:.5}}static getPatternCost(e){let t=1;return"Variable"===e.subject.termType&&(t+=4),"Variable"!==e.predicate.termType&&e.type!==i.Algebra.types.PATH||(t+=1),"Variable"===e.object.termType&&(t+=2),"Variable"===e.graph.termType&&(t+=1),t/9}static getJoinTypes(e,t){const r=[];return"Variable"===e.subject.termType?(e.subject.equals(t.subject)&&r.push(o.unboundSS),"pattern"===t.type&&e.subject.equals(t.predicate)&&r.push(o.unboundSP),e.subject.equals(t.object)&&r.push(o.unboundSO),e.subject.equals(t.graph)&&r.push(o.unboundSG)):(e.subject.equals(t.subject)&&r.push(o.boundSS),"pattern"===t.type&&e.subject.equals(t.predicate)&&r.push(o.boundSP),e.subject.equals(t.object)&&r.push(o.boundSO),e.subject.equals(t.graph)&&r.push(o.boundSG)),"pattern"===e.type&&("Variable"===e.predicate.termType?(e.predicate.equals(t.subject)&&r.push(o.unboundPS),"pattern"===t.type&&e.predicate.equals(t.predicate)&&r.push(o.unboundPP),e.predicate.equals(t.object)&&r.push(o.unboundPO),e.predicate.equals(t.graph)&&r.push(o.unboundPG)):(e.predicate.equals(t.subject)&&r.push(o.boundPS),"pattern"===t.type&&e.predicate.equals(t.predicate)&&r.push(o.boundPP),e.predicate.equals(t.object)&&r.push(o.boundPO),e.predicate.equals(t.graph)&&r.push(o.boundPG))),"Variable"===e.object.termType?(e.object.equals(t.subject)&&r.push(o.unboundOS),"pattern"===t.type&&e.object.equals(t.predicate)&&r.push(o.unboundOP),e.object.equals(t.object)&&r.push(o.unboundOO),e.object.equals(t.graph)&&r.push(o.unboundOG)):(e.object.equals(t.subject)&&r.push(o.boundOS),"pattern"===t.type&&e.object.equals(t.predicate)&&r.push(o.boundOP),e.object.equals(t.object)&&r.push(o.boundOO),e.object.equals(t.graph)&&r.push(o.boundOG)),"Variable"===e.graph.termType?(e.graph.equals(t.subject)&&r.push(o.unboundGS),"pattern"===t.type&&e.graph.equals(t.predicate)&&r.push(o.unboundGP),e.graph.equals(t.object)&&r.push(o.unboundGO),e.graph.equals(t.graph)&&r.push(o.unboundGG)):(e.graph.equals(t.subject)&&r.push(o.boundGS),"pattern"===t.type&&e.graph.equals(t.predicate)&&r.push(o.boundGP),e.graph.equals(t.object)&&r.push(o.boundGO),e.graph.equals(t.graph)&&r.push(o.boundGG)),r}static getOperationsPairwiseJoinCost(e,t){let r=a.MAX_PAIRWISE_COST;for(const n of a.getJoinTypes(e,t))switch(n){case o.boundSS:r-=4;break;case o.boundSP:r-=6;break;case o.boundSO:r-=2;break;case o.boundSG:case o.boundPS:r-=6;break;case o.boundPP:return 1;case o.boundPO:case o.boundPG:r-=6;break;case o.boundOS:r-=2;break;case o.boundOP:r-=6;break;case o.boundOO:r-=2;break;case o.boundOG:case o.boundGS:case o.boundGP:case o.boundGO:case o.boundGG:r-=6;break;case o.unboundSS:r-=2;break;case o.unboundSP:r-=3;break;case o.unboundSO:r-=1;break;case o.unboundSG:case o.unboundPS:case o.unboundPP:case o.unboundPO:case o.unboundPG:r-=3;break;case o.unboundOS:r-=1;break;case o.unboundOP:r-=3;break;case o.unboundOO:r-=1;break;case o.unboundOG:case o.unboundGS:case o.unboundGP:case o.unboundGO:case o.unboundGG:r-=3}return r/a.MAX_PAIRWISE_COST}static getOperationsJoinCost(e){const t=[];for(const r of e)i.Util.recurseOperation(r,{[i.Algebra.types.PATTERN]:e=>(t.push(e),!1),[i.Algebra.types.PATH]:e=>(t.push(e),!1)});let r=0,n=0;for(const e of t)for(const i of t)e!==i&&(r+=a.getOperationsPairwiseJoinCost(e,i),n++);return 0===n?1:r/n*t.reduce(((e,t)=>e*a.getPatternCost(t)),1)}async run(e){return e.entries.length<=1?{selectivity:1}:{selectivity:a.getOperationsJoinCost(e.entries.map((e=>e.operation)))}}}var o;t.ActorRdfJoinSelectivityVariableCounting=a,a.MAX_PAIRWISE_COST=82,function(e){e[e.boundSS=0]="boundSS",e[e.boundSP=1]="boundSP",e[e.boundSO=2]="boundSO",e[e.boundSG=3]="boundSG",e[e.boundPS=4]="boundPS",e[e.boundPP=5]="boundPP",e[e.boundPO=6]="boundPO",e[e.boundPG=7]="boundPG",e[e.boundOS=8]="boundOS",e[e.boundOP=9]="boundOP",e[e.boundOO=10]="boundOO",e[e.boundOG=11]="boundOG",e[e.boundGS=12]="boundGS",e[e.boundGP=13]="boundGP",e[e.boundGO=14]="boundGO",e[e.boundGG=15]="boundGG",e[e.unboundSS=16]="unboundSS",e[e.unboundSP=17]="unboundSP",e[e.unboundSO=18]="unboundSO",e[e.unboundSG=19]="unboundSG",e[e.unboundPS=20]="unboundPS",e[e.unboundPP=21]="unboundPP",e[e.unboundPO=22]="unboundPO",e[e.unboundPG=23]="unboundPG",e[e.unboundOS=24]="unboundOS",e[e.unboundOP=25]="unboundOP",e[e.unboundOO=26]="unboundOO",e[e.unboundOG=27]="unboundOG",e[e.unboundGS=28]="unboundGS",e[e.unboundGP=29]="unboundGP",e[e.unboundGO=30]="unboundGO",e[e.unboundGG=31]="unboundGG"}(o||(t.JoinTypes=o={}))},16703:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(7218),t)},66479:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAccumulateCanContainUndefs=void 0;const n=r(49877);class i extends n.ActorRdfMetadataAccumulate{constructor(e){super(e)}async test(e){return!0}async run(e){if("initialize"===e.mode)return{metadata:{canContainUndefs:!1}};let t=e.accumulatedMetadata.canContainUndefs;return e.appendingMetadata.canContainUndefs&&(t=!0),{metadata:{canContainUndefs:t}}}}t.ActorRdfMetadataAccumulateCanContainUndefs=i},27988:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(66479),t)},80547:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAccumulateCardinality=void 0;const n=r(49877);class i extends n.ActorRdfMetadataAccumulate{constructor(e){super(e)}async test(e){return!0}async run(e){if("initialize"===e.mode)return{metadata:{cardinality:{type:"exact",value:0}}};const t={...e.accumulatedMetadata.cardinality};if(t.dataset){if(e.accumulatedMetadata.defaultGraph===t.dataset&&t.dataset!==e.appendingMetadata.cardinality.dataset)return{metadata:{cardinality:e.appendingMetadata.cardinality}};if(!e.appendingMetadata.cardinality.dataset)return{metadata:{cardinality:t}};if(t.dataset!==e.appendingMetadata.cardinality.dataset&&e.appendingMetadata.subsetOf===t.dataset)return{metadata:{cardinality:e.appendingMetadata.cardinality}};if(t.dataset===e.appendingMetadata.cardinality.dataset)return{metadata:{cardinality:t}};delete t.dataset}return e.appendingMetadata.cardinality&&Number.isFinite(e.appendingMetadata.cardinality.value)?("estimate"===e.appendingMetadata.cardinality.type&&(t.type="estimate"),t.value+=e.appendingMetadata.cardinality.value):(t.type="estimate",t.value=Number.POSITIVE_INFINITY),{metadata:{cardinality:t}}}}t.ActorRdfMetadataAccumulateCardinality=i},67243:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(80547),t)},15881:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAccumulatePageSize=void 0;const n=r(49877);class i extends n.ActorRdfMetadataAccumulate{constructor(e){super(e)}async test(e){return!0}async run(e){return"initialize"===e.mode?{metadata:{}}:{metadata:{..."pageSize"in e.accumulatedMetadata||"pageSize"in e.appendingMetadata?{pageSize:(e.accumulatedMetadata.pageSize??0)+(e.appendingMetadata.pageSize??0)}:{}}}}}t.ActorRdfMetadataAccumulatePageSize=i},91475:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(15881),t)},68951:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAccumulateRequestTime=void 0;const n=r(49877);class i extends n.ActorRdfMetadataAccumulate{constructor(e){super(e)}async test(e){return!0}async run(e){return"initialize"===e.mode?{metadata:{}}:{metadata:{..."requestTime"in e.accumulatedMetadata||"requestTime"in e.appendingMetadata?{requestTime:(e.accumulatedMetadata.requestTime??0)+(e.appendingMetadata.requestTime??0)}:{}}}}}t.ActorRdfMetadataAccumulateRequestTime=i},26719:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(68951),t)},85702:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAll=void 0;const n=r(52628),i=r(58521);class a extends n.ActorRdfMetadata{constructor(e){super(e)}async test(e){return!0}async run(e){const t=new i.Readable({objectMode:!0}),r=new i.Readable({objectMode:!0});e.quads.on("error",(e=>{t.emit("error",e),r.emit("error",e)})),e.quads.on("end",(()=>{t.push(null),r.push(null)}));const n=t._read=r._read=i=>{for(;i>0;){const a=e.quads.read();if(null===a)return e.quads.once("readable",(()=>n(i)));i--,t.push(a),r.push(a)}};return{data:t,metadata:r}}}t.ActorRdfMetadataAll=a},64443:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(85702),t)},94425:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractAllowHttpMethods=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){const t={};return e.headers?.get("allow")&&(t.allowHttpMethods=e.headers.get("allow")?.split(/, */u)),{metadata:t}}}t.ActorRdfMetadataExtractAllowHttpMethods=i},40751:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(94425),t)},30066:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractHydraControls=void 0;const n=r(10800),i=r(68492);class a extends n.ActorRdfMetadataExtract{constructor(e){super(e),this.parsedUriTemplateCache={}}async test(e){return!0}getLinks(e,t){return Object.fromEntries(a.LINK_TYPES.map((r=>{const n=t[r]||t[`${r}Page`],i=n&&n[e];return[r,i&&i.length>0?[i[0]]:[]]})))}parseUriTemplateCached(e){return this.parsedUriTemplateCache[e]||(this.parsedUriTemplateCache[e]=(0,i.parse)(e))}getSearchForms(e){const t=e.search,r=[];if(t)for(const n in t)for(const i of t[n]){const t=(e.template||{})[i]||[];if(1!==t.length)throw new Error(`Expected 1 hydra:template for ${i}`);const a=t[0],o=this.parseUriTemplateCached(a),s=Object.fromEntries(((e.mapping||{})[i]||[]).map((t=>{const r=((e.variable||{})[t]||[])[0],n=((e.property||{})[t]||[])[0];if(!r)throw new Error(`Expected a hydra:variable for ${t}`);if(!n)throw new Error(`Expected a hydra:property for ${t}`);return[n,r]}))),c=e=>o.expand(Object.fromEntries(Object.keys(e).map((t=>[s[t],e[t]]))));r.push({dataset:n,template:a,mappings:s,getUri:c})}return{values:r}}getHydraProperties(e){return new Promise(((t,r)=>{e.on("error",r);const n={};e.on("data",(e=>{if(e.predicate.value.startsWith(a.HYDRA)){const t=e.predicate.value.slice(a.HYDRA.length),r=n[t]||(n[t]={});(r[e.subject.value]||(r[e.subject.value]=[])).push(e.object.value)}})),e.on("end",(()=>t(n)))}))}async run(e){const t={},r=await this.getHydraProperties(e.metadata);return Object.assign(t,this.getLinks(e.url,r)),t.searchForms=this.getSearchForms(r),{metadata:t}}}t.ActorRdfMetadataExtractHydraControls=a,a.HYDRA="http://www.w3.org/ns/hydra/core#",a.LINK_TYPES=["first","next","previous","last"]},85405:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(30066),t)},68714:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractHydraCount=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}run(e){return new Promise(((t,r)=>{e.metadata.on("error",r),e.metadata.on("data",(e=>{this.predicates.includes(e.predicate.value)&&t({metadata:{cardinality:{type:"estimate",value:Number.parseInt(e.object.value,10),dataset:e.subject.value}}})})),e.metadata.on("end",(()=>{t({metadata:{cardinality:{type:"estimate",value:0}}})}))}))}}t.ActorRdfMetadataExtractHydraCount=i},57586:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(68714),t)},77690:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractHydraPagesize=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){return new Promise(((t,r)=>{e.metadata.on("error",r),e.metadata.on("data",(e=>{this.predicates.includes(e.predicate.value)&&t({metadata:{pageSize:Number.parseInt(e.object.value,10)}})})),e.metadata.on("end",(()=>{t({metadata:{}})}))}))}}t.ActorRdfMetadataExtractHydraPagesize=i},54777:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(77690),t)},43875:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractPatchSparqlUpdate=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){const t={};return(e.headers?.get("accept-patch")?.includes("application/sparql-update")??e.headers?.get("ms-author-via")?.includes("SPARQL"))&&(t.patchSparqlUpdate=!0),{metadata:t}}}t.ActorRdfMetadataExtractPatchSparqlUpdate=i},55282:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(43875),t)},86312:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractPutAccepted=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){const t={};return e.headers?.get("accept-put")&&(t.putAccepted=e.headers.get("accept-put")?.split(/, */u)),{metadata:t}}}t.ActorRdfMetadataExtractPutAccepted=i},44549:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(86312),t)},66468:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractRequestTime=void 0;const n=r(10800);class i extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){return{metadata:{requestTime:e.requestTime}}}}t.ActorRdfMetadataExtractRequestTime=i},7445:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(66468),t)},42214:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtractSparqlService=void 0;const n=r(10800),i=r(9929);class a extends n.ActorRdfMetadataExtract{constructor(e){super(e)}async test(e){return!0}async run(e){return new Promise(((t,r)=>{e.metadata.on("error",r);const n={};e.metadata.on("data",(t=>{"http://www.w3.org/ns/sparql-service-description#endpoint"!==t.predicate.value||"BlankNode"!==t.subject.termType&&t.subject.value!==e.url?"http://www.w3.org/ns/sparql-service-description#defaultGraph"===t.predicate.value&&(n.defaultGraph=t.object.value):(n.sparqlService="Literal"===t.object.termType?(0,i.resolve)(t.object.value,e.url):t.object.value,this.inferHttpsEndpoint&&e.url.startsWith("https")&&!n.sparqlService.startsWith("https")&&(n.sparqlService=n.sparqlService.replace("http:","https:")))})),e.metadata.on("end",(()=>{t({metadata:n})}))}))}}t.ActorRdfMetadataExtractSparqlService=a},3187:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(42214),t)},82889:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataPrimaryTopic=void 0;const n=r(52628),i=r(58521);class a extends n.ActorRdfMetadata{constructor(e){super(e)}async test(e){if(e.triples)throw new Error("This actor only supports non-triple quad streams.");return!0}async run(e){const t=new i.Readable({objectMode:!0}),r=new i.Readable({objectMode:!0}),n=()=>{t._read=r._read=()=>{},e.quads.on("error",(e=>{t.emit("error",e),r.emit("error",e)}));const n={};let i;const a={};e.quads.on("data",(t=>{"http://rdfs.org/ns/void#subset"===t.predicate.value&&t.object.value===e.url?i=t.subject.value:"http://xmlns.com/foaf/0.1/primaryTopic"===t.predicate.value&&(a[t.object.value]=t.subject.value);let r=n[t.graph.value];r||(r=n[t.graph.value]=[]),r.push(t)})),e.quads.on("end",(()=>{const e=i?a[i]:void 0;for(const i in n)if(i===e){for(const e of n[i])r.push(e);if(this.metadataToData)for(const e of n[i])t.push(e)}else{for(const e of n[i])t.push(e);if(!e&&this.dataToMetadataOnInvalidMetadataGraph)for(const e of n[i])r.push(e)}t.push(null),r.push(null)}))};return t._read=r._read=()=>{n()},{data:t,metadata:r}}}t.ActorRdfMetadataPrimaryTopic=a},80848:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(82889),t)},99209:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseHtmlMicrodata=void 0;const n=r(65446),i=r(5558);class a extends n.ActorRdfParseHtml{constructor(e){super(e)}async test(e){return!0}async run(e){const t=e.headers?e.headers.get("content-type"):null,r=t?.includes("xml"),n=new i.MicrodataRdfParser({baseIRI:e.baseIRI,xmlMode:r});n.on("error",e.error),n.on("data",e.emit);const a=n.onEnd;return n.onEnd=()=>{a.call(n),e.end()},{htmlParseListener:n}}}t.ActorRdfParseHtmlMicrodata=a},42421:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(99209),t)},39149:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseHtmlRdfa=void 0;const n=r(65446),i=r(21860);class a extends n.ActorRdfParseHtml{constructor(e){super(e)}async test(e){return!0}async run(e){const t=e.headers?e.headers.get("content-type"):null,r=(e.headers&&e.headers.get("content-language"))??void 0,n=t&&t.includes("xml")?"xhtml":"html",a=new i.RdfaParser({baseIRI:e.baseIRI,profile:n,language:r});a.on("error",e.error),a.on("data",e.emit);const o=a.onEnd;return a.onEnd=()=>{o.call(a),e.end()},{htmlParseListener:a}}}t.ActorRdfParseHtmlRdfa=a},26585:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(39149),t)},42601:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseHtmlScript=void 0;const n=r(65446),i=r(14107);class a extends n.ActorRdfParseHtml{constructor(e){super(e)}async test(e){return!0}async run(e){const t=(await this.mediatorRdfParseMediatypes.mediate({context:e.context,mediaTypes:!0})).mediaTypes;return{htmlParseListener:new i.HtmlScriptListener(this.mediatorRdfParseHandle,e.emit,e.error,e.end,t,e.context,e.baseIRI,e.headers)}}}t.ActorRdfParseHtmlScript=a},14107:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HtmlScriptListener=void 0;const n=r(32227),i=r(58521),a=r(9929);class o{constructor(e,t,r,i,a,o,s,c){this.textChunksJsonLd=[],this.endBarrier=1,this.passedScripts=0,this.isFinalJsonLdProcessing=!1,this.mediatorRdfParseHandle=e,this.cbQuad=t,this.cbError=r,this.cbEnd=i,this.supportedTypes=a,this.context=o.set(n.KeysRdfParseHtmlScript.processingHtmlScript,!0),this.baseIRI=s,this.headers=c,this.onlyFirstScript=!1===o.get(n.KeysRdfParseHtmlScript.extractAllScripts);const u=this.baseIRI.indexOf("#");this.targetScriptId=u>0?this.baseIRI.slice(u+1,this.baseIRI.length):null}static newErrorCoded(e,t){const r=new Error(e);return r.code=t,r}onEnd(){0==--this.endBarrier&&(this.textChunksJsonLd.length>0?(this.handleMediaType="application/ld+json",this.textChunks=this.textChunksJsonLd,this.textChunks.push("]"),this.textChunksJsonLd=[],this.isFinalJsonLdProcessing=!0,this.endBarrier++,this.onTagClose()):(0===this.passedScripts&&this.targetScriptId&&this.cbError(o.newErrorCoded(`Failed to find targeted script id "${this.targetScriptId}"`,"loading document failed")),this.cbEnd()),this.isFinalJsonLdProcessing=!1)}onTagClose(){if(this.handleMediaType)if(this.requiresCustomJsonLdHandling(this.handleMediaType)&&!this.isFinalJsonLdProcessing)this.handleMediaType=void 0,this.textChunks=void 0,this.onEnd();else{const e=new i.Readable({objectMode:!0});e._read=()=>{};const t=this.textChunks,r={context:this.context,handle:{metadata:{baseIRI:this.baseIRI},data:e,headers:this.headers,context:this.context},handleMediaType:this.handleMediaType};this.mediatorRdfParseHandle.mediate(r).then((({handle:r})=>{r.data.on("error",(e=>this.cbError(o.newErrorCoded(e.message,"invalid script element")))).on("data",this.cbQuad).on("end",(()=>this.onEnd()));for(const r of t)e.push(r);e.push(null)})).catch((e=>{this.targetScriptId?this.cbError(o.newErrorCoded(e.message,"loading document failed")):this.onEnd()})),this.handleMediaType=void 0,this.textChunks=void 0}}onTagOpen(e,t){"base"===e&&t.href&&(this.baseIRI=(0,a.resolve)(t.href,this.baseIRI)),"script"!==e||this.targetScriptId&&t.id!==this.targetScriptId?this.handleMediaType=void 0:this.supportedTypes[t.type]?this.onlyFirstScript&&this.passedScripts>0?this.handleMediaType=void 0:(this.passedScripts++,this.handleMediaType=t.type,this.endBarrier++,this.requiresCustomJsonLdHandling(this.handleMediaType)?(this.textChunks=this.textChunksJsonLd,this.textChunks.push(0===this.textChunks.length?"[":",")):this.textChunks=[]):this.targetScriptId&&this.cbError(o.newErrorCoded(`Targeted script "${this.targetScriptId}" does not have a supported type`,"loading document failed"))}onText(e){this.handleMediaType&&this.textChunks.push(e)}requiresCustomJsonLdHandling(e){return!this.onlyFirstScript&&!this.targetScriptId&&"application/ld+json"===e}}t.HtmlScriptListener=o},3549:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(42601),t)},70256:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseHtml=void 0;const n=r(54592),i=r(41173),a=r(58521);class o extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t,r){const n=new a.Readable({objectMode:!0});n._read=()=>{};let o=0,s=1;function c(e){n.emit("error",e)}function u(){0==--s&&n.push(null)}const l={baseIRI:e.metadata?.baseIRI??"",context:r,emit:e=>{o--,n.push(e)},end:u,error:c,headers:e.headers};try{const t=await Promise.all(this.busRdfParseHtml.publish(l));s+=t.length;const r=[];for(const e of t){const{htmlParseListener:t}=await e.actor.run(l);r.push(t)}const a=new i.Parser({onclosetag(){try{for(const e of r)e.onTagClose()}catch(e){c(e)}},onend(){try{for(const e of r)e.onEnd()}catch(e){c(e)}u()},onopentag(e,t){try{for(const n of r)n.onTagOpen(e,t)}catch(e){c(e)}},ontext(e){try{for(const t of r)t.onText(e)}catch(e){c(e)}}},{decodeEntities:!0,recognizeSelfClosing:!0,xmlMode:!1}),d=n._read=t=>{for(o=Math.max(t,o);o>0;){const t=e.data.read();if(null===t)return void e.data.once("readable",(()=>d(0)));a.write(t.toString())}};e.data.on("error",c).on("end",(()=>a.end()))}catch(e){setTimeout((()=>{n.emit("error",e)}))}return{data:n}}}t.ActorRdfParseHtml=o},28955:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(70256),t)},61364:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseJsonLd=void 0;const n=r(54592),i=r(32227),a=r(50631),o=r(11817);class s extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async testHandle(e,t,r){if(r.has(i.KeysRdfParseHtmlScript.processingHtmlScript)&&"application/ld+json"!==t)throw new Error("JSON-LD in script tags can only have media type 'application/ld+json'");if(!t||!(t in this.mediaTypePriorities)&&!t.endsWith("+json"))throw new Error(`Unrecognized media type: ${t}`);return await this.testHandleChecked(e)}async runHandle(e,t,r){return{data:a.JsonLdParser.fromHttpResponse(e.metadata?.baseIRI??"",t,e.headers,{documentLoader:r.get(i.KeysRdfParseJsonLd.documentLoader)??new o.DocumentLoaderMediated(this.mediatorHttp,r),strictValues:r.get(i.KeysRdfParseJsonLd.strictValues),...r.get(i.KeysRdfParseJsonLd.parserOptions)}).import(e.data)}}}t.ActorRdfParseJsonLd=s},11817:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentLoaderMediated=void 0;const n=r(74870),i=r(31759),a=r(27202);class o extends a.FetchDocumentLoader{constructor(e,t){super(o.createFetcher(e,t)),this.mediatorHttp=e,this.context=t}static createFetcher(e,t){return async(r,a)=>{const o=await e.mediate({input:r,init:a,context:t});return o.json=async()=>JSON.parse(await(0,i.stringify)(n.ActorHttp.toNodeReadable(o.body))),o}}}t.DocumentLoaderMediated=o},54168:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(61364),t),i(r(11817),t)},20164:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseN3=void 0;const n=r(54592),i=r(72243);class a extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t,r){e.data.on("error",(e=>n.emit("error",e)));const n=e.data.pipe(new i.StreamParser({baseIRI:e.metadata?.baseIRI,format:t.endsWith("n3")?t:`${t}*`}));return{data:n,metadata:{triples:"text/turtle"===t||"application/n-triples"===t||"text/n3"===t}}}}t.ActorRdfParseN3=a},62917:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(20164),t)},61536:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseRdfXml=void 0;const n=r(54592),i=r(97990);class a extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async runHandle(e){e.data.on("error",(e=>t.emit("error",e)));const t=e.data.pipe(new i.RdfXmlParser({baseIRI:e.metadata?.baseIRI}));return{data:t,metadata:{triples:!0}}}}t.ActorRdfParseRdfXml=a},21487:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(61536),t)},62940:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseShaclc=void 0;const n=r(54592),i=r(31759),a=r(58521),o=r(21762),s=r(76268);class c extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t,r){const n=new s.PrefixWrappingIterator((0,i.stringify)(e.data).then((r=>(0,o.parse)(r,{extendedSyntax:"text/shaclc-ext"===t,baseIRI:e.metadata?.baseIRI})))),c=new a.Readable({objectMode:!0});return n.on("prefix",((...e)=>c.emit("prefix",...e))),{data:c.wrap(n),metadata:{triples:!0}}}}t.ActorRdfParseShaclc=c},76268:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PrefixWrappingIterator=void 0;const n=r(76664);class i extends n.WrappingIterator{constructor(e){super(e?.then((e=>(this.prefixes=e.prefixes,e))))}read(){if(this.prefixes){for(const e of Object.entries(this.prefixes))this.emit("prefix",...e);delete this.prefixes}return super.read()}}t.PrefixWrappingIterator=i},43352:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(62940),t)},91689:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseXmlRdfa=void 0;const n=r(54592),i=r(21860);class a extends n.ActorRdfParseFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t,r){const n=(e.headers&&e.headers.get("content-language"))??void 0;e.data.on("error",(e=>a.emit("error",e)));const a=e.data.pipe(new i.RdfaParser({baseIRI:e.metadata?.baseIRI,profile:"xml",language:n}));return{data:a,metadata:{triples:!0}}}}t.ActorRdfParseXmlRdfa=a},8137:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(91689),t)},43476:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfResolveHypermediaLinksNext=void 0;const n=r(22124);class i extends n.ActorRdfResolveHypermediaLinks{constructor(e){super(e)}async test(e){if(!e.metadata.next||0===e.metadata.next.length)throw new Error(`Actor ${this.name} requires a 'next' metadata entry.`);return!0}async run(e){return{links:e.metadata.next.map((e=>({url:e})))}}}t.ActorRdfResolveHypermediaLinksNext=i},34541:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(43476),t)},18553:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfResolveHypermediaLinksQueueFifo=void 0;const n=r(56102),i=r(7381);class a extends n.ActorRdfResolveHypermediaLinksQueue{constructor(e){super(e)}async test(e){return!0}async run(e){return{linkQueue:new i.LinkQueueFifo}}}t.ActorRdfResolveHypermediaLinksQueueFifo=a},7381:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkQueueFifo=void 0,t.LinkQueueFifo=class{constructor(){this.links=[]}push(e){return this.links.push(e),!0}getSize(){return this.links.length}isEmpty(){return 0===this.links.length}pop(){return this.links.shift()}peek(){return this.links[0]}}},34120:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18553),t),i(r(7381),t)},63986:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfSerializeJsonLd=void 0;const n=r(84025),i=r(85832);class a extends n.ActorRdfSerializeFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t,r){const n=new i.JsonLdSerializer({space:" ".repeat(this.jsonStringifyIndentSpaces)});let a;return"pipe"in e.quadStream?(e.quadStream.on("error",(e=>n.emit("error",e))),a=e.quadStream.pipe(n)):a=n.import(e.quadStream),{data:a}}}t.ActorRdfSerializeJsonLd=a},21935:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(63986),t)},34574:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfSerializeN3=void 0;const n=r(84025),i=r(72243);class a extends n.ActorRdfSerializeFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t){const r=new i.StreamWriter({format:t});let n;return"pipe"in e.quadStream?(e.quadStream.on("error",(e=>r.emit("error",e))),n=e.quadStream.pipe(r)):n=r.import(e.quadStream),{data:n,triples:"text/turtle"===t||"application/n-triples"===t||"text/n3"===t}}}t.ActorRdfSerializeN3=a},28510:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(34574),t)},80614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfSerializeShaclc=void 0;const n=r(84025),i=r(37754),a=r(58521),o=r(22939);class s extends n.ActorRdfSerializeFixedMediaTypes{constructor(e){super(e)}async runHandle(e,t){const r=new a.Readable;r._read=()=>{};try{const n={};e.quadStream.on("prefix",((e,t)=>{n[e]=t}));const{text:a}=await(0,o.write)(await(0,i.default)(e.quadStream),{errorOnUnused:!0,extendedSyntax:"text/shaclc-ext"===t,prefixes:n});r.push(a),r.push(null)}catch(e){r._read=()=>{r.emit("error",e)}}return{data:r,triples:!0}}}t.ActorRdfSerializeShaclc=s},49343:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(80614),t)},60927:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateHypermediaPatchSparqlUpdate=void 0;const n=r(25345),i=r(92168);class a extends n.ActorRdfUpdateHypermedia{constructor(e){super(e,"patchSparqlUpdate")}async testMetadata(e){if(!e.forceDestinationType&&!e.metadata.patchSparqlUpdate)throw new Error(`Actor ${this.name} could not detect a destination with 'application/sparql-update' as 'Accept-Patch' header.`);if(!e.forceDestinationType&&!e.exists)throw new Error(`Actor ${this.name} can only patch a destination that already exists.`);return!0}async run(e){return this.logInfo(e.context,`Identified as patchSparqlUpdate destination: ${e.url}`),{destination:new i.QuadDestinationPatchSparqlUpdate(e.url,e.context,this.mediatorHttp)}}}t.ActorRdfUpdateHypermediaPatchSparqlUpdate=a},92168:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuadDestinationPatchSparqlUpdate=void 0;const n=r(74870),i=r(10288),a=r(64817),o=r(58521);t.QuadDestinationPatchSparqlUpdate=class{constructor(e,t,r){this.url=e,this.context=t,this.mediatorHttp=r}insert(e){return this.wrapSparqlUpdateRequest("INSERT",e)}async delete(e){return this.wrapSparqlUpdateRequest("DELETE",e)}async wrapSparqlUpdateRequest(e,t){const r=t.map((e=>{let t=`${(0,a.termToString)(e.subject)} ${(0,a.termToString)(e.predicate)} ${(0,a.termToString)(e.object)} .`;return t="DefaultGraph"===e.graph.termType?` ${t}\n`:` GRAPH ${(0,a.termToString)(e.graph)} { ${t} }\n`,t})).prepend([`${e} DATA {\n`]).append(["}"]),s=new o.Readable;s.wrap(r);const c=new i.Headers({"content-type":"application/sparql-update"}),u=await this.mediatorHttp.mediate({context:this.context,init:{headers:c,method:"PATCH",body:n.ActorHttp.toWebReadableStream(s)},input:this.url});await(0,n.validateAndCloseHttpResponse)(this.url,u)}async deleteGraphs(e,t,r){throw new Error("Patch-based SPARQL Update destinations don't support named graphs")}async createGraphs(e,t){throw new Error("Patch-based SPARQL Update destinations don't support named graphs")}}},87057:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(60927),t),i(r(92168),t)},26348:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateHypermediaPutLdp=void 0;const n=r(25345),i=r(99713);class a extends n.ActorRdfUpdateHypermedia{constructor(e){super(e,"putLdp")}async testMetadata(e){if(!e.forceDestinationType){if(!e.metadata.allowHttpMethods||!e.metadata.allowHttpMethods.includes("PUT"))throw new Error(`Actor ${this.name} could not detect a destination with 'Allow: PUT' header.`);if(e.exists)throw new Error(`Actor ${this.name} can only put on a destination that does not already exists.`)}return!0}async run(e){return this.logInfo(e.context,`Identified as putLdp destination: ${e.url}`),{destination:new i.QuadDestinationPutLdp(e.url,e.context,e.metadata.putAccepted||[],this.mediatorHttp,this.mediatorRdfSerializeMediatypes,this.mediatorRdfSerialize)}}}t.ActorRdfUpdateHypermediaPutLdp=a},99713:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuadDestinationPutLdp=void 0;const n=r(74870),i=r(10288);t.QuadDestinationPutLdp=class{constructor(e,t,r,n,i,a){this.url=e,this.context=t,this.mediaTypes=r,this.mediatorHttp=n,this.mediatorRdfSerializeMediatypes=i,this.mediatorRdfSerialize=a}insert(e){return this.wrapRdfUpdateRequest("INSERT",e)}async delete(e){throw new Error("Put-based LDP destinations don't support deletions")}async wrapRdfUpdateRequest(e,t){const{mediaTypes:r}=await this.mediatorRdfSerializeMediatypes.mediate({context:this.context,mediaTypes:!0}),a=this.mediaTypes.filter((e=>e in r)),o=a.length>0?a[0]:Object.keys(r).sort(((e,t)=>r[t]-r[e]))[0],{handle:{data:s}}=await this.mediatorRdfSerialize.mediate({context:this.context,handle:{quadStream:t,context:this.context},handleMediaType:o}),c=new i.Headers({"content-type":o}),u=await this.mediatorHttp.mediate({context:this.context,init:{headers:c,method:"PUT",body:n.ActorHttp.toWebReadableStream(s)},input:this.url});await(0,n.validateAndCloseHttpResponse)(this.url,u)}async deleteGraphs(e,t,r){throw new Error("Put-based LDP destinations don't support named graphs")}async createGraphs(e,t){throw new Error("Put-based LDP destinations don't support named graphs")}}},3047:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(26348),t),i(r(99713),t)},33179:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateHypermediaSparql=void 0;const n=r(25345),i=r(89084);class a extends n.ActorRdfUpdateHypermedia{constructor(e){super(e,"sparql")}async testMetadata(e){if(!(e.forceDestinationType||e.metadata.sparqlService||this.checkUrlSuffixSparql&&e.url.endsWith("/sparql")||this.checkUrlSuffixUpdate&&e.url.endsWith("/update")))throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql or /update.`);return!0}async run(e){return this.logInfo(e.context,`Identified as sparql destination: ${e.url}`),{destination:new i.QuadDestinationSparql(e.metadata.sparqlService||e.url,e.context,this.mediatorHttp)}}}t.ActorRdfUpdateHypermediaSparql=a},89084:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuadDestinationSparql=void 0;const n=r(31759),i=r(74190),a=r(64817);t.QuadDestinationSparql=class{constructor(e,t,r){this.url=e,this.context=t,this.mediatorHttp=r,this.endpointFetcher=new i.SparqlEndpointFetcher({fetch:(e,t)=>this.mediatorHttp.mediate({input:e,init:t,context:this.context}),prefixVariableQuestionMark:!0})}insert(e){return this.wrapSparqlUpdateRequest("INSERT",e)}async delete(e){return this.wrapSparqlUpdateRequest("DELETE",e)}async wrapSparqlUpdateRequest(e,t){const r=t.map((e=>{let t=`${(0,a.termToString)(e.subject)} ${(0,a.termToString)(e.predicate)} ${(0,a.termToString)(e.object)} .`;return t="DefaultGraph"===e.graph.termType?` ${t}\n`:` GRAPH ${(0,a.termToString)(e.graph)} { ${t} }\n`,t})).prepend([`${e} DATA {\n`]).append(["}"]),i=await(0,n.stringify)(r);await this.endpointFetcher.fetchUpdate(this.url,i)}async deleteGraphs(e,t,r){const n=Array.isArray(e)?e:[e],i=[];for(const e of n){let n;n="string"==typeof e?e:"DefaultGraph"===e.termType?"DEFAULT":`GRAPH <${e.value}>`,i.push(`${r?"DROP":"CLEAR"} ${t?"":"SILENT "}${n}`)}await this.endpointFetcher.fetchUpdate(this.url,i.join("; "))}async createGraphs(e,t){const r=[];for(const n of e)r.push(`CREATE${t?"":" SILENT"} GRAPH <${n.value}>`);await this.endpointFetcher.fetchUpdate(this.url,r.join("; "))}}},58916:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(33179),t),i(r(89084),t)},24657:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateQuadsHypermedia=void 0;const n=r(86789),i=r(35069);class a extends n.ActorRdfUpdateQuadsDestination{constructor(e){super(e),this.cache=this.cacheSize?new i.LRUCache({max:this.cacheSize}):void 0;const t=this.cache;t&&this.httpInvalidator.addInvalidateListener((({url:e})=>e?t.delete(e):t.clear()))}async test(e){if(!(0,n.getContextDestinationUrl)((0,n.getContextDestination)(e.context)))throw new Error(`Actor ${this.name} can only update quads against a single destination URL.`);return!0}getDestination(e){const t=(0,n.getContextDestination)(e);let r=(0,n.getContextDestinationUrl)(t);if(this.cache&&this.cache.has(r))return this.cache.get(r);const i=(async()=>{let i,a;try{const t=await this.mediatorDereferenceRdf.mediate({context:e,url:r,acceptErrors:!0});a=t.exists,r=t.url;const n=await this.mediatorMetadata.mediate({context:e,url:r,quads:t.data,triples:t.metadata?.triples});i=(await this.mediatorMetadataExtract.mediate({context:e,url:r,metadata:n.metadata,headers:t.headers,requestTime:t.requestTime})).metadata}catch{i={},a=!1}const{destination:o}=await this.mediatorRdfUpdateHypermedia.mediate({context:e,url:r,metadata:i,exists:a,forceDestinationType:(0,n.getDataDestinationType)(t)});return o})();return this.cache&&this.cache.set(r,i),i}}t.ActorRdfUpdateQuadsHypermedia=a},88297:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(24657),t)},88332:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateQuadsRdfJsStore=void 0;const n=r(86789),i=r(38268);class a extends n.ActorRdfUpdateQuadsDestination{constructor(e){super(e)}async test(e){const t=(0,n.getContextDestination)(e.context);if(!t||"string"==typeof t||!("remove"in t)&&"value"in t&&!t.value.remove)throw new Error(`${this.name} received an invalid rdfjsStore.`);return!0}async getDestination(e){const t=(0,n.getContextDestination)(e);return new i.RdfJsQuadDestination("remove"in t?t:t.value)}}t.ActorRdfUpdateQuadsRdfJsStore=a},38268:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfJsQuadDestination=void 0;const n=r(35033),i=r(18050),a=r(22112),o=new i.DataFactory;t.RdfJsQuadDestination=class{constructor(e){this.store=e}delete(e){return(0,n.promisifyEventEmitter)(this.store.remove(e))}insert(e){return(0,n.promisifyEventEmitter)(this.store.import(e))}async deleteGraphs(e,t,r){switch(e){case"ALL":await(0,n.promisifyEventEmitter)(this.store.deleteGraph(o.defaultGraph()));case"NAMED":const t=this.store.match(),r={};t.on("data",(e=>{"DefaultGraph"!==e.graph.termType&&(r[(0,a.termToString)(e.graph)]=!0)})),await(0,n.promisifyEventEmitter)(t),await Promise.all(Object.keys(r).map((e=>(0,n.promisifyEventEmitter)(this.store.deleteGraph((0,a.stringToTerm)(e))))));break;default:for(const t of Array.isArray(e)?e:[e])await(0,n.promisifyEventEmitter)(this.store.deleteGraph(t))}}async createGraphs(e,t){if(t)for(const t of e){const e=this.store.match(void 0,void 0,void 0,t);await new Promise(((r,n)=>{e.once("data",(()=>{n(new Error(`Unable to create graph ${t.value} as it already exists`))})),e.on("end",r),e.on("error",n)}))}}}},76722:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88332),t)},67526:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Bindings=void 0;const n=r(34368),i=r(6081),a=r(17070);class o{constructor(e,t,r){this.type="bindings",this.dataFactory=e,this.entries=t,this.contextHolder=r}has(e){return this.entries.has("string"==typeof e?e:e.value)}get(e){return this.entries.get("string"==typeof e?e:e.value)}set(e,t){return new o(this.dataFactory,this.entries.set("string"==typeof e?e:e.value,t),this.contextHolder)}delete(e){return new o(this.dataFactory,this.entries.delete("string"==typeof e?e:e.value),this.contextHolder)}keys(){return this.mapIterable(this.iteratorToIterable(this.entries.keys()),(e=>this.dataFactory.variable(e)))}values(){return this.iteratorToIterable(this.entries.values())}forEach(e){for(const[t,r]of this.entries.entries())e(r,this.dataFactory.variable(t))}get size(){return this.entries.size}[Symbol.iterator](){return this.mapIterable(this.iteratorToIterable(this.entries.entries()),(([e,t])=>[this.dataFactory.variable(e),t]))[Symbol.iterator]()}equals(e){if(!e)return!1;if(this===e)return!0;if(this.size!==e.size)return!1;for(const t of this.keys())if(!this.get(t)?.equals(e.get(t)))return!1;return!0}filter(e){return new o(this.dataFactory,(0,i.Map)(this.entries.filter(((t,r)=>e(t,this.dataFactory.variable(r))))),this.contextHolder)}map(e){return new o(this.dataFactory,(0,i.Map)(this.entries.map(((t,r)=>e(t,this.dataFactory.variable(r))))),this.contextHolder)}merge(e){if(this.sizee.name))),c=t.keys().filter((e=>s.has(e.name)));for(const n of i){if(1===o[n.name])continue;o[n.name]=1;const i=c.some((e=>e.name===n.name));e[n.name]&&i?a[n.name]=e[n.name].run(t.get(n),r.get(n)):!e[n.name]&&i||(t.get(n)?r.get(n)||(a[n.name]=t.get(n)):a[n.name]=r.get(n))}return new n.ActionContext(a)}setContextEntry(e,t){return this.setContextEntryRaw(e,t)}setContextEntryRaw(e,t){return this.contextHolder&&this.contextHolder.context?new o(this.dataFactory,this.entries,{contextMergeHandlers:this.contextHolder.contextMergeHandlers,context:this.contextHolder.context.set(e,t)}):new o(this.dataFactory,this.entries,{contextMergeHandlers:this.contextHolder?.contextMergeHandlers??{},context:(new n.ActionContext).set(e,t)})}deleteContextEntry(e){return this.deleteContextEntryRaw(e)}deleteContextEntryRaw(e){return this.contextHolder?new o(this.dataFactory,this.entries,{contextMergeHandlers:this.contextHolder.contextMergeHandlers,context:this.contextHolder.context?.delete(e)}):new o(this.dataFactory,this.entries)}getContext(){return this.contextHolder?.context}getContextEntry(e){return this.getContext()?.get(e)}toString(){return(0,a.bindingsToString)(this)}*mapIterable(e,t){for(const r of e)yield t(r)}iteratorToIterable(e){return{[Symbol.iterator]:()=>e}}}t.Bindings=o},38846:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BindingsFactory=void 0;const n=r(6081),i=r(18050),a=r(67526);class o{constructor(e=new i.DataFactory,t){this.dataFactory=e,this.contextMergeHandlers=t}static async create(e,t){return new o(new i.DataFactory,(await e.mediate({context:t})).mergeHandlers)}bindings(e=[]){return new a.Bindings(this.dataFactory,(0,n.Map)(e.map((([e,t])=>[e.value,t]))),this.contextMergeHandlers?{contextMergeHandlers:this.contextMergeHandlers}:void 0)}fromBindings(e){return this.bindings([...e])}fromRecord(e){return this.bindings(Object.entries(e).map((([e,t])=>[this.dataFactory.variable(e),t])))}}t.BindingsFactory=o},17070:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.bindingsToString=void 0;const n=r(22112);t.bindingsToString=function(e){const t={};for(const r of e.keys())t[r.value]=(0,n.termToString)(e.get(r));return JSON.stringify(t,null," ")}},91674:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(67526),t),i(r(38846),t),i(r(17070),t)},53674:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorContextPreprocess=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorContextPreprocess=i},32362:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(53674),t)},18326:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceRdf=void 0;const n=r(47702);class i extends n.ActorDereferenceParse{constructor(e){super(e)}}t.ActorDereferenceRdf=i},53583:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(18326),t)},96859:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereference=void 0;const n=r(5522);class i extends n.ActorDereferenceBase{constructor(e){super(e)}async handleDereferenceErrors(e,t,r,n=0){return this.dereferenceErrorHandler(e,t,{url:e.url,exists:!1,headers:r,requestTime:n})}}t.ActorDereference=i},5522:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceBase=t.isHardError=t.emptyReadable=void 0;const n=r(32227),i=r(34368),a=r(58521);function o(){const e=new a.Readable;return e.push(null),e}function s(e){return!e.get(n.KeysInitQuery.lenient)}t.emptyReadable=o,t.isHardError=s;class c extends i.Actor{constructor(e){super(e)}async dereferenceErrorHandler(e,t,r){if(s(e.context))throw t;return this.logWarn(e.context,t.message),{...r,data:o()}}}t.ActorDereferenceBase=c},75416:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorDereferenceParse=t.getMediaTypeFromExtension=void 0;const n=r(58521),i=r(5522);function a(e,t){const r=e.lastIndexOf(".");return r>=0&&t?.[e.slice(r+1)]||""}t.getMediaTypeFromExtension=a;class o extends i.ActorDereferenceBase{constructor(e){super(e)}async test(e){return!0}handleDereferenceStreamErrors(e,t){return(0,i.isHardError)(e.context)||(t.on("error",(r=>{this.logWarn(e.context,r.message,(()=>({url:e.url}))),t.push(null)})),t=t.pipe(new n.PassThrough({objectMode:!0}))),t}async run(e){const{context:t}=e,r=await this.mediatorDereference.mediate({...e,mediaTypes:async()=>(await(this.mediatorParseMediatypes?.mediate({context:t,mediaTypes:!0})))?.mediaTypes});let n;try{n=(await this.mediatorParse.mediate({context:t,handle:{context:t,...r,metadata:await this.getMetadata(r)},handleMediaType:r.mediaType||a(r.url,this.mediaMappings)||e.mediaType})).handle,n.data=this.handleDereferenceStreamErrors(e,n.data)}catch(t){await(r.data.close?.()),n=await this.dereferenceErrorHandler(e,t,{})}return{...r,...n}}}t.ActorDereferenceParse=o},47702:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(96859),t),i(r(75416),t),i(r(5522),t)},45644:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHashBindings=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorHashBindings=i},38431:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(45644),t)},88044:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHashQuads=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorHashQuads=i},16179:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88044),t)},24608:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttpInvalidate=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorHttpInvalidate=i},1187:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttpInvalidateListenable=void 0;const n=r(24608);class i extends n.ActorHttpInvalidate{constructor(e){super(e),this.invalidateListeners=[],this.invalidateListeners=[]}addInvalidateListener(e){this.invalidateListeners.push(e)}async test(e){return!0}async run(e){for(const t of this.invalidateListeners)t(e);return{}}}t.ActorHttpInvalidateListenable=i},56320:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(24608),t),i(r(1187),t)},54283:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorHttp=void 0;const n=r(34368),i=r(33523);globalThis.ReadableStream||(globalThis.ReadableStream=r(55675).ReadableStream);const a=r(76605),o=r(84077);class s extends n.Actor{constructor(e){super(e)}static toNodeReadable(e){return a(e)||null===e?e:(0,i.readableFromWeb)(e)}static toWebReadableStream(e){return o(e)}static headersToHash(e){const t={};return e.forEach(((e,r)=>{t[r]=e})),t}}t.ActorHttp=s},74870:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(54283),t),i(r(92151),t)},92151:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateAndCloseHttpResponse=void 0;const n=r(31759),i=r(54283);t.validateAndCloseHttpResponse=async function(e,t){if(t.status>=400){let r="empty response";if(t.body){const e=i.ActorHttp.toNodeReadable(t.body);r=await(0,n.stringify)(e)}throw new Error(`Could not update ${e} (HTTP status ${t.status}):\n${r}`)}await(t.body?.cancel())}},37983:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorInit=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorInit=i},99784:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(37983),t)},70735:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorOptimizeQueryOperation=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorOptimizeQueryOperation=i},6716:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(70735),t)},76986:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperation=void 0;const n=r(32227),i=r(34368),a=r(85156),o=r(75698);let s=0;class c extends i.Actor{constructor(e){super(e)}static getSafeBindings(e){return c.validateQueryOutput(e,"bindings"),e}static getSafeQuads(e){return c.validateQueryOutput(e,"quads"),e}static getSafeBoolean(e){return c.validateQueryOutput(e,"boolean"),e}static getSafeVoid(e){return c.validateQueryOutput(e,"void"),e}static validateQueryOutput(e,t){if(e.type!==t)throw new Error(`Invalid query output type: Expected '${t}' but got '${e.type}'`)}static getBaseExpressionContext(e){const t=e.get(n.KeysInitQuery.queryTimestamp),r=e.get(n.KeysInitQuery.baseIRI),i=e.get(n.KeysInitQuery.functionArgumentsCache)??{};if(e.has(n.KeysInitQuery.extensionFunctionCreator)&&e.has(n.KeysInitQuery.extensionFunctions))throw new Error("Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context");let a=e.get(n.KeysInitQuery.extensionFunctionCreator);const o=e.get(n.KeysInitQuery.extensionFunctions);return o&&(a=e=>o[e.value]),{now:t,baseIRI:r,extensionFunctionCreator:a,functionArgumentsCache:i}}static getExpressionContext(e,t){return{...this.getBaseExpressionContext(e),bnode:e=>new a.BlankNodeBindingsScoped(e??"BNODE_"+s++)}}static getAsyncExpressionContext(e,t,r){return{...this.getBaseExpressionContext(e),bnode:e=>Promise.resolve(new a.BlankNodeBindingsScoped(e??"BNODE_"+s++)),exists:c.createExistenceResolver(e,t,r)}}static createExistenceResolver(e,t,r){return async(n,i)=>{const a=(0,o.materializeOperation)(n.input,i,r),s=await t.mediate({operation:a,context:e}),u=c.getSafeBindings(s);return n.not!==(1===(await u.bindingsStream.take(1).toArray()).length)}}static throwOnReadOnly(e){if(e.get(n.KeysQueryOperation.readOnly))throw new Error("Attempted a write operation in read-only mode")}static getOperationSource(e){return e.metadata?.scopedSource}static assignOperationSource(e,t){return(e={...e}).metadata=e.metadata?{...e.metadata}:{},e.metadata.scopedSource=t,e}static removeOperationSource(e){delete e.metadata?.scopedSource,e.metadata&&0===Object.keys(e.metadata).length&&delete e.metadata}static doesShapeAcceptOperation(e,t,r){return"conjunction"===e.type?e.children.every((e=>c.doesShapeAcceptOperation(e,t,r))):"disjunction"===e.type?e.children.some((e=>c.doesShapeAcceptOperation(e,t,r))):"arity"===e.type?c.doesShapeAcceptOperation(e.child,t,r):!((r?.joinBindings&&!e.joinBindings)??(r?.filterBindings&&!e.filterBindings))&&("type"===e.operation.operationType?"project"===e.operation.type||e.operation.type===t.type:e.operation.pattern.type===t.type)}}t.ActorQueryOperation=c},19028:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationTyped=void 0;const n=r(32227),i=r(72394),a=r(76986);class o extends a.ActorQueryOperation{constructor(e,t){if(super({...e,operationName:t}),!this.operationName)throw new Error('A valid "operationName" argument must be provided.')}async test(e){if(!e.operation)throw new Error("Missing field 'operation' in a query operation action.");if(e.operation.type!==this.operationName)throw new Error(`Actor ${this.name} only supports ${this.operationName} operations, but got ${e.operation.type}`);const t=e.operation;return this.testOperation(t,e.context)}async run(e){const t=e.context.get(n.KeysInitQuery.physicalQueryPlanLogger);t&&(t.logOperation(e.operation.type,void 0,e.operation,e.context.get(n.KeysInitQuery.physicalQueryPlanNode),this.name,{}),e.context=e.context.set(n.KeysInitQuery.physicalQueryPlanNode,e.operation));const r=e.operation,a=e.context.set(n.KeysQueryOperation.operation,r),o=await this.runOperation(r,a);return"metadata"in o&&(o.metadata=(0,i.cachifyMetadata)(o.metadata)),o}}t.ActorQueryOperationTyped=o},90897:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryOperationTypedMediated=void 0;const n=r(19028);class i extends n.ActorQueryOperationTyped{constructor(e,t){super(e,t)}}t.ActorQueryOperationTypedMediated=i},75698:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.materializeOperation=t.materializeTerm=void 0;const n=r(18050),i=r(22112),a=r(13252),o=r(31578),s=new n.DataFactory,c=s.literal("true",s.namedNode("http://www.w3.org/2001/XMLSchema#boolean"));function u(e,t){if("Variable"===e.termType){const r=t.get(e);if(r)return r}return"Quad"===e.termType&&(0,a.someTermsNested)(e,(e=>"Variable"===e.termType))?(0,a.mapTermsNested)(e,(e=>u(e,t))):e}function l(e,t,r){const n=[];for(const[a,o]of t)if(!r||r.some((e=>e.equals(a)))){const t={[(0,i.termToString)(a)]:o};n.push(e.createValues([a],[t]))}return n}t.materializeTerm=u,t.materializeOperation=function e(t,r,n,a={}){return a={strictTargetVariables:"strictTargetVariables"in a&&a.strictTargetVariables,bindFilter:!("bindFilter"in a)||a.bindFilter,originalBindings:"originalBindings"in a?a.originalBindings:r},o.Util.mapOperation(t,{path:(e,t)=>({recurse:!1,result:Object.assign(t.createPath(u(e.subject,r),e.predicate,u(e.object,r),u(e.graph,r)),{metadata:e.metadata})}),pattern:(e,t)=>({recurse:!1,result:Object.assign(t.createPattern(u(e.subject,r),u(e.predicate,r),u(e.object,r),u(e.graph,r)),{metadata:e.metadata})}),extend(t){if(r.has(t.variable)){if(a.strictTargetVariables)throw new Error(`Tried to bind variable ${(0,i.termToString)(t.variable)} in a BIND operator.`);return{recurse:!0,result:e(t.input,r,n,a)}}return{recurse:!0,result:t}},group(e,t){if(a.strictTargetVariables){for(const t of e.variables)if(r.has(t))throw new Error(`Tried to bind variable ${(0,i.termToString)(t)} in a GROUP BY operator.`);return{recurse:!0,result:e}}const n=e.variables.filter((e=>!r.has(e)));return{recurse:!0,result:t.createGroup(e.input,n,e.aggregates)}},project(t,o){if(a.strictTargetVariables){for(const e of t.variables)if(r.has(e))throw new Error(`Tried to bind variable ${(0,i.termToString)(e)} in a SELECT operator.`);return{recurse:!0,result:t}}for(const e of r.keys())for(const n of t.variables)if(n.equals(e)){r=r.delete(e);break}const s=l(o,a.originalBindings,t.variables);let c=e(t.input,r,n,a);return s.length>0&&(c=o.createJoin([...s,c])),{recurse:!1,result:o.createProject(c,t.variables)}},filter(t,i){const o=a.originalBindings;if("operator"!==t.expression.expressionType||0===o.size)return{recurse:!1,result:t};const s=l(i,o),c=e(t.expression,r,n,a);let u=e(t.input,r,n,a);return s.length>0&&(u=i.createJoin([...s,u])),{recurse:!1,result:i.createFilter(u,c)}},values(e,t){if(!a.strictTargetVariables){const n=e.variables.filter((e=>!r.has(e))),a=e.bindings.map((e=>{const t={...e};let n=!0;return r.forEach(((e,r)=>{const a=(0,i.termToString)(r);a in t&&(e.equals(t[a])||(n=!1),delete t[a])})),n?t:void 0})).filter(Boolean);return{recurse:!0,result:t.createValues(n,a)}}for(const t of e.variables)if(r.has(t))throw new Error(`Tried to bind variable ${(0,i.termToString)(t)} in a VALUES operator.`);return{recurse:!1,result:e}},expression(e,t){if(!a.bindFilter)return{recurse:!1,result:e};if("term"===e.expressionType)return{recurse:!1,result:t.createTermExpression(u(e.term,r))};if("operator"===e.expressionType)return"bound"===e.operator&&1===e.args.length&&"term"===e.args[0].expressionType&&[...r.keys()].some((t=>e.args[0].term.equals(t)))?{recurse:!1,result:t.createTermExpression(c)}:{recurse:!0,result:e};if("aggregate"===e.expressionType&&"variable"in e&&r.has(e.variable)){if(a.strictTargetVariables)throw new Error(`Tried to bind ${(0,i.termToString)(e.variable)} in a ${e.aggregator} aggregate.`);return{recurse:!0,result:e}}return{recurse:!0,result:e}}})}},32233:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BusQueryOperation=void 0;const n=r(34368);class i extends n.BusIndexed{constructor(e){super({...e,actorIdentifierFields:["operationName"],actionIdentifierFields:["operation","type"]})}}t.BusQueryOperation=i},57779:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ClosableIterator=void 0;const n=r(76664);class i extends n.AsyncIterator{constructor(e,t){super(),this.onClose=t.onClose,this._source=e,this._source[n.DESTINATION]=this,this._source.on("end",s),this._source.on("error",o),this._source.on("readable",a),this.readable=this._source.readable}read(){const e=this._source.read();return e||(this.readable=!1,this._source.done&&this.close()),e}_end(e){this.onClose(),this._source.removeListener("end",s),this._source.removeListener("error",o),this._source.removeListener("readable",a),delete this._source[n.DESTINATION],this._source.destroy(),super._end(e)}}function a(){this[n.DESTINATION].readable=!0}function o(e){this[n.DESTINATION].emit("error",e)}function s(){this[n.DESTINATION].close()}t.ClosableIterator=i},45371:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ClosableTransformIterator=void 0;const n=r(76664);class i extends n.TransformIterator{constructor(e,t){super(e,t),this.onClose=t.onClose}_end(e){this.onClose(),super._end(e)}}t.ClosableTransformIterator=i},59510:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(76986),t),i(r(19028),t),i(r(90897),t),i(r(75698),t),i(r(32233),t),i(r(57779),t),i(r(45371),t)},88098:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryParse=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorQueryParse=i},79744:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88098),t)},8906:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryProcess=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorQueryProcess=i},59946:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(8906),t)},2659:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerialize=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTyped{constructor(e){super(e)}}t.ActorQueryResultSerialize=i},51492:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQueryResultSerializeFixedMediaTypes=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTypedFixed{constructor(e){super(e)}async testHandleChecked(e,t){return!0}}t.ActorQueryResultSerializeFixedMediaTypes=i},22083:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(2659),t),i(r(51492),t)},44218:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentifyHypermedia=void 0;const n=r(34368);class i extends n.Actor{constructor(e,t){super(e),this.sourceType=t}async test(e){if(e.forceSourceType&&this.sourceType!==e.forceSourceType)throw new Error(`Actor ${this.name} is not able to handle source type ${e.forceSourceType}.`);return this.testMetadata(e)}}t.ActorQuerySourceIdentifyHypermedia=i},89168:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(44218),t)},521:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorQuerySourceIdentify=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorQuerySourceIdentify=i},12982:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.filterMatchingQuotedQuads=t.quadsOrderToBindingsOrder=t.quadsMetadataToBindingsMetadata=t.setMetadata=t.getDuplicateElementLinks=t.getVariables=t.isTermVariable=t.quadsToBindings=void 0;const n=r(59510),i=r(72394),a=r(18050),o=r(22112),s=r(13252),c=r(10175),u=new a.DataFactory;function l(e){return"Variable"===e.termType}function d(e){return(0,s.uniqTerms)((0,s.getTermsNested)(e).filter(l))}function p(e){const t={};let r=!1;if((0,s.forEachTermsNested)(e,((e,n)=>{if("Variable"===e.termType){const i=(0,o.termToString)(e),a=(t[i]||(t[i]=[])).push(n);r=r||a>1}})),!r)return;const n={};for(const e in t){const r=t[e],i=r.slice(1);i.length>0&&(n[r[0].join("_")]=i)}return n}function h(e,t,r,n,a){const o=o=>{"canContainUndefs"in o||(o.canContainUndefs=!1),a&&(o.cardinality.type="estimate"),e.setProperty("metadata",f((0,i.validateMetadataQuads)(o),r,n)),o.state&&o.state.addInvalidateListener((()=>{h(e,t,r,n,a)}))},s=t.getProperty("metadata");s?o(s):t.getProperty("metadata",o)}function f(e,t,r){return{...e,canContainUndefs:!1,order:e.order?y(e.order,t):void 0,availableOrders:e.availableOrders?e.availableOrders.map((e=>({cost:e.cost,terms:y(e.terms,t)}))):void 0,variables:r}}function y(e,t){const r={};return e.map((e=>{const n=t[e.term];if(n&&!r[n])return r[n]=!0,{term:u.variable(n),direction:e.direction}})).filter(Boolean)}t.quadsToBindings=function(e,t,r,i){const a=d(t),o="Variable"===t.graph.termType&&!i,c=p(t),l=(0,s.reduceTermsNested)(t,((e,t,r)=>("Variable"===t.termType&&(e[r.join("_")]=t.value),e)),{});let f=e;o&&(f=f.filter((e=>"DefaultGraph"!==e.graph.termType))),c&&(f=f.filter((e=>{for(const t in c){const r=t.split("_"),n=(0,s.getValueNestedPath)(e,r);for(const r of c[t])if(!n.equals((0,s.getValueNestedPath)(e,r)))return!1}return!0})));const y=new n.ClosableIterator(f.map((e=>r.bindings(Object.keys(l).map((t=>{const r=t.split("_"),n=l[t],i=(0,s.getValueNestedPath)(e,r);return[u.variable(n),i]}))))),{onClose:()=>e.destroy()});return h(y,e,l,a,o||Boolean(c)),y},t.isTermVariable=l,t.getVariables=d,t.getDuplicateElementLinks=p,t.setMetadata=h,t.quadsMetadataToBindingsMetadata=f,t.quadsOrderToBindingsOrder=y,t.filterMatchingQuotedQuads=function(e,t){return(0,s.someTerms)(e,(e=>"Quad"===e.termType))&&(t=t.filter((t=>(0,c.matchPatternMappings)(t,e)))),t}},65483:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(521),t),i(r(12982),t)},36170:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinEntriesSort=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfJoinEntriesSort=i},84287:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(36170),t)},88125:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoinSelectivity=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfJoinSelectivity=i},75245:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88125),t)},10654:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfJoin=void 0;const n=r(32227),i=r(34368),a=r(72394),o=r(18050),s=r(22112),c=r(57778),u=new o.DataFactory;class l extends i.Actor{constructor(e,t){super(e),this.includeInLogs=!0,this.logicalType=t.logicalType,this.physicalName=t.physicalName,this.limitEntries=t.limitEntries??Number.POSITIVE_INFINITY,this.limitEntriesMin=t.limitEntriesMin??!1,this.canHandleUndefs=t.canHandleUndefs??!1,this.isLeaf=t.isLeaf??!0,this.requiresVariableOverlap=t.requiresVariableOverlap??!1}static hash(e,t){return t.map((t=>{const r=e.get(t);return r?r.value:""})).join("")}static hashNonClashing(e,t){return t.map((t=>{const r=e.get(t);return r?(0,s.termToString)(r):""})).join("")}static overlappingVariables(e){const t=e.map((e=>e.variables));let r=t[0];for(const e of t.slice(1))r=r.filter((t=>e.some((e=>e.value===t.value))));return r}static joinVariables(e){return[...new Set(e.flatMap((e=>e.variables.map((e=>e.value)))))].map((e=>u.variable(e)))}static joinBindings(...e){if(0===e.length)return null;if(1===e.length)return e[0];let t=e[0];for(const r of e.slice(1)){const e=t.merge(r);if(!e)return null;t=e}return t}static getCardinality(e){return e.cardinality}static async getMetadatas(e){return await Promise.all(e.map((e=>e.output.metadata())))}static async getEntriesWithMetadatas(e){const t=await l.getMetadatas(e);return e.map(((e,r)=>({...e,metadata:t[r]})))}static getRequestInitialTimes(e){return e.map((e=>e.pageSize?0:e.requestTime??0))}static getRequestItemTimes(e){return e.map((e=>e.pageSize?(e.requestTime??0)/e.pageSize:0))}constructState(e){const t=new a.MetadataValidationState,r=()=>t.invalidate();for(const t of e)t.state.addInvalidateListener(r);return t}async constructResultMetadata(e,t,r,n={},i=!1){let a;return n.cardinality?a=n.cardinality:(a=t.reduce(((e,t)=>{const r=l.getCardinality(t);return{type:"estimate"===r.type?"estimate":e.type,value:e.value*(i?Math.max(1,r.value):r.value)}}),{type:"exact",value:1}),a.value*=(await this.mediatorJoinSelectivity.mediate({entries:e,context:r})).selectivity),{state:this.constructState(t),...n,cardinality:{type:a.type,value:a.value},canContainUndefs:n.canContainUndefs??t.some((e=>e.canContainUndefs)),variables:l.joinVariables(t)}}static async sortJoinEntries(e,t,r){if(t.some((e=>e.metadata.canContainUndefs)))return t;const n={};for(const e of t)for(const t of e.metadata.variables){let e=n[t.value];e||(e=0),n[t.value]=++e}const i=[];for(const[e,t]of Object.entries(n))t>=2&&i.push(e);if(0===i.length)throw new Error("Bind join can only join entries with at least one common variable");const a=[];for(const e of t){let t=!1;for(const r of e.metadata.variables)if(i.includes(r.value)){t=!0;break}t||a.push(e)}return(await e.mediate({entries:t,context:r})).entries.sort(((e,t)=>{const r=a.includes(e);return r===a.includes(t)?0:r?1:-1}))}async test(e){if(e.type!==this.logicalType)throw new Error(`${this.name} can only handle logical joins of type '${this.logicalType}', while '${e.type}' was given.`);if(e.entries.length<=1)throw new Error(`${this.name} requires at least two join entries.`);if(this.limitEntriesMin?e.entries.lengththis.limitEntries)throw new Error(`${this.name} requires ${this.limitEntries} join entries at ${this.limitEntriesMin?"least":"most"}. The input contained ${e.entries.length}.`);for(const t of e.entries)if("bindings"!==t.output.type)throw new Error(`Invalid type of a join entry: Expected 'bindings' but got '${t.output.type}'`);const t=await l.getMetadatas(e.entries);if(!this.canHandleUndefs)for(const e of t)if(e.canContainUndefs)throw new Error(`Actor ${this.name} can not join streams containing undefs`);if(this.requiresVariableOverlap&&0===l.overlappingVariables(t).length)throw new Error(`Actor ${this.name} can only join entries with at least one common variable`);return await this.getJoinCoefficients(e,t)}async run(e){let t;e.context.has(n.KeysInitQuery.physicalQueryPlanLogger)&&(t=e.context.get(n.KeysInitQuery.physicalQueryPlanNode),e.context=e.context.set(n.KeysInitQuery.physicalQueryPlanNode,e));const r=e.context.get(n.KeysInitQuery.physicalQueryPlanLogger);let i;this.includeInLogs&&r&&(i={},r.stashChildren(t,(e=>e.logicalOperator.startsWith("join"))),r.logOperation(`join-${this.logicalType}`,this.physicalName,e,t,this.name,i));const{result:o,physicalPlanMetadata:s}=await this.getOutput(e),u=await l.getMetadatas(e.entries);if(i){(0,c.instrumentIterator)(o.bindingsStream).then((t=>{r.appendMetadata(e,{cardinalityReal:t.count,timeSelf:t.timeSelf,timeLife:t.timeLife})})),Object.assign(i,s);const t=u.map(l.getCardinality);if(i.cardinalities=t,i.joinCoefficients=await this.getJoinCoefficients(e,u),this.isLeaf)for(let n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChunkedIterator=void 0;const n=r(76664);class i extends n.TransformIterator{constructor(e,t,r){super(e,r),this.chunk=[],this.blockSize=t}consumeChunkAsIterator(){const e=new n.ArrayIterator(this.chunk,{autoStart:!1});return this.chunk=[],e}_transform(e,t,r){this.chunk.push(e),this.chunk.length>=this.blockSize&&r(this.consumeChunkAsIterator()),t()}_flush(e){this.chunk.length>0&&this._push(this.consumeChunkAsIterator()),super._flush(e)}}t.ChunkedIterator=i},32353:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(10654),t),i(r(34875),t)},57778:(e,t)=>{"use strict";function r(e,t,n){if(!("_profileInstrumented"in e)){if(e._profileInstrumented=!0,"_read"in e){const r=e._read;e._read=(n,i)=>{const a=performance.now();r.call(e,n,(()=>{t.timeSelf+=performance.now()-a,i()}))}}if("read"in e){const r=e.read;e.read=()=>{const i=performance.now(),a=r.call(e);return n&&a&&t.count++,t.timeSelf+=performance.now()-i,a}}if(n){const r=performance.now();e.on("end",(()=>{t.timeLife=performance.now()-r}))}"_source"in e&&r(e._source,t,!1)}}Object.defineProperty(t,"__esModule",{value:!0}),t.instrumentIterator=void 0,t.instrumentIterator=function(e){const t={count:0,timeSelf:0,timeLife:0};return r(e,t,!0),new Promise((r=>{e.on("end",(()=>{r(t)}))}))}},97145:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataAccumulate=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfMetadataAccumulate=i},49877:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(97145),t)},77879:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadataExtract=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfMetadataExtract=i},10800:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(77879),t)},32124:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfMetadata=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfMetadata=i},52628:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(32124),t)},15569:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseHtml=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfParseHtml=i},65446:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(15569),t)},20434:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParse=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTyped{constructor(e){super(e)}}t.ActorRdfParse=i},67719:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfParseFixedMediaTypes=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTypedFixed{constructor(e){super(e)}async testHandleChecked(e){return!0}}t.ActorRdfParseFixedMediaTypes=i},54592:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(20434),t),i(r(67719),t)},79773:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfResolveHypermediaLinksQueue=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfResolveHypermediaLinksQueue=i},25710:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},89798:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkQueueWrapper=void 0,t.LinkQueueWrapper=class{constructor(e){this.linkQueue=e}push(e,t){return this.linkQueue.push(e,t)}getSize(){return this.linkQueue.getSize()}isEmpty(){return this.linkQueue.isEmpty()}pop(){return this.linkQueue.pop()}peek(){return this.linkQueue.peek()}}},56102:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(79773),t),i(r(25710),t),i(r(89798),t)},11018:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfResolveHypermediaLinks=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfResolveHypermediaLinks=i},22124:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(11018),t)},29342:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfSerialize=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTyped{constructor(e){super(e)}}t.ActorRdfSerialize=i},34923:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfSerializeFixedMediaTypes=void 0;const n=r(75560);class i extends n.ActorAbstractMediaTypedFixed{constructor(e){super(e)}async testHandleChecked(){return!0}}t.ActorRdfSerializeFixedMediaTypes=i},84025:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(29342),t),i(r(34923),t)},9917:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateHypermedia=void 0;const n=r(34368);class i extends n.Actor{constructor(e,t){super(e),this.destinationType=t}async test(e){if(e.forceDestinationType&&this.destinationType!==e.forceDestinationType)throw new Error(`Actor ${this.name} is not able to handle destination type ${e.forceDestinationType}.`);return this.testMetadata(e)}}t.ActorRdfUpdateHypermedia=i},25345:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(9917),t)},10303:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateQuads=void 0;const n=r(34368);class i extends n.Actor{constructor(e){super(e)}}t.ActorRdfUpdateQuads=i},96527:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActorRdfUpdateQuadsDestination=t.deskolemize=t.deskolemizeStream=void 0;const n=r(35106),i=r(32227),a=r(10303);function o(e,t){return e?.map((e=>(0,n.deskolemizeQuad)(e,t)))}function s(e){const t=e.context.get(i.KeysRdfUpdateQuads.destination),r=e.context.get(i.KeysQuerySourceIdentify.sourceIds)?.get(t);return r?{...e,quadStreamInsert:o(e.quadStreamInsert,r),quadStreamDelete:o(e.quadStreamDelete,r)}:e}t.deskolemizeStream=o,t.deskolemize=s;class c extends a.ActorRdfUpdateQuads{async test(e){return!0}async run(e){const t=await this.getDestination(e.context);return await this.getOutput(t,s(e))}async getOutput(e,t){return{execute:async()=>{await(t.quadStreamDelete?e.delete(t.quadStreamDelete):Promise.resolve()),await(t.deleteGraphs?e.deleteGraphs(t.deleteGraphs.graphs,t.deleteGraphs.requireExistence,t.deleteGraphs.dropGraphs):Promise.resolve()),await(t.createGraphs?e.createGraphs(t.createGraphs.graphs,t.createGraphs.requireNonExistence):Promise.resolve()),await(t.quadStreamInsert?e.insert(t.quadStreamInsert):Promise.resolve())}}}}t.ActorRdfUpdateQuadsDestination=c},54877:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},86789:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(10303),t),i(r(96527),t),i(r(54877),t),i(r(86368),t)},86368:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getContextDestinationUrl=t.getContextDestination=t.getDataDestinationContext=t.getDataDestinationValue=t.getDataDestinationType=t.isDataDestinationRawType=void 0;const n=r(32227);function i(e){return"string"==typeof e||"remove"in e}function a(e){return i(e)?e:e.value}t.isDataDestinationRawType=i,t.getDataDestinationType=function(e){return"string"==typeof e?"":"remove"in e?"rdfjsStore":e.type},t.getDataDestinationValue=a,t.getDataDestinationContext=function(e,t){return"string"==typeof e||"remove"in e||!e.context?t:t.merge(e.context)},t.getContextDestination=function(e){return e.get(n.KeysRdfUpdateQuads.destination)},t.getContextDestinationUrl=function(e){if(e){let t=a(e);if("string"==typeof t){const e=t.indexOf("#");return e>=0&&(t=t.slice(0,e)),t}}}},88851:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeysStatistics=t.KeysRdfJoin=t.KeysMergeBindingsContext=t.KeysRdfUpdateQuads=t.KeysQuerySourceIdentify=t.KeysRdfParseHtmlScript=t.KeysRdfParseJsonLd=t.KeysQueryOperation=t.KeysInitQuery=t.KeysHttpProxy=t.KeysHttpMemento=t.KeysHttpWayback=t.KeysHttp=t.KeysCore=void 0;const n=r(34368);t.KeysCore={log:n.CONTEXT_KEY_LOGGER},t.KeysHttp={includeCredentials:new n.ActionContextKey("@comunica/bus-http:include-credentials"),auth:new n.ActionContextKey("@comunica/bus-http:auth"),fetch:new n.ActionContextKey("@comunica/bus-http:fetch"),httpTimeout:new n.ActionContextKey("@comunica/bus-http:http-timeout"),httpBodyTimeout:new n.ActionContextKey("@comunica/bus-http:http-body-timeout"),httpRetryCount:new n.ActionContextKey("@comunica/bus-http:http-retry-count"),httpRetryDelay:new n.ActionContextKey("@comunica/bus-http:http-retry-delay"),httpRetryOnServerError:new n.ActionContextKey("@comunica/bus-http:http-retry-on-server-error")},t.KeysHttpWayback={recoverBrokenLinks:new n.ActionContextKey("@comunica/bus-http:recover-broken-links")},t.KeysHttpMemento={datetime:new n.ActionContextKey("@comunica/actor-http-memento:datetime")},t.KeysHttpProxy={httpProxyHandler:new n.ActionContextKey("@comunica/actor-http-proxy:httpProxyHandler")},t.KeysInitQuery={querySourcesUnidentified:new n.ActionContextKey("@comunica/actor-init-query:querySourcesUnidentified"),initialBindings:new n.ActionContextKey("@comunica/actor-init-query:initialBindings"),queryFormat:new n.ActionContextKey("@comunica/actor-init-query:queryFormat"),graphqlSingularizeVariables:new n.ActionContextKey("@comunica/actor-init-query:singularizeVariables"),lenient:new n.ActionContextKey("@comunica/actor-init-query:lenient"),queryString:new n.ActionContextKey("@comunica/actor-init-query:queryString"),query:new n.ActionContextKey("@comunica/actor-init-query:query"),baseIRI:new n.ActionContextKey("@comunica/actor-init-query:baseIRI"),functionArgumentsCache:new n.ActionContextKey("@comunica/actor-init-query:functionArgumentsCache"),queryTimestamp:new n.ActionContextKey("@comunica/actor-init-query:queryTimestamp"),extensionFunctionCreator:new n.ActionContextKey("@comunica/actor-init-query:extensionFunctionCreator"),extensionFunctions:new n.ActionContextKey("@comunica/actor-init-query:extensionFunctions"),cliArgsHandlers:new n.ActionContextKey("@comunica/actor-init-query:cliArgsHandlers"),explain:new n.ActionContextKey("@comunica/actor-init-query:explain"),physicalQueryPlanLogger:new n.ActionContextKey("@comunica/actor-init-query:physicalQueryPlanLogger"),physicalQueryPlanNode:new n.ActionContextKey("@comunica/actor-init-query:physicalQueryPlanNode"),jsonLdContext:new n.ActionContextKey("@context"),noCache:new n.ActionContextKey("@comunica/actor-init-query:noCache"),distinctConstruct:new n.ActionContextKey("@comunica/actor-init-query:distinctConstruct")},t.KeysQueryOperation={operation:new n.ActionContextKey("@comunica/bus-query-operation:operation"),joinLeftMetadata:new n.ActionContextKey("@comunica/bus-query-operation:joinLeftMetadata"),joinRightMetadatas:new n.ActionContextKey("@comunica/bus-query-operation:joinRightMetadatas"),joinBindings:new n.ActionContextKey("@comunica/bus-query-operation:joinBindings"),readOnly:new n.ActionContextKey("@comunica/bus-query-operation:readOnly"),isPathArbitraryLengthDistinctKey:new n.ActionContextKey("@comunica/bus-query-operation:isPathArbitraryLengthDistinct"),limitIndicator:new n.ActionContextKey("@comunica/bus-query-operation:limitIndicator"),unionDefaultGraph:new n.ActionContextKey("@comunica/bus-query-operation:unionDefaultGraph"),querySources:new n.ActionContextKey("@comunica/bus-query-operation:querySources")},t.KeysRdfParseJsonLd={documentLoader:new n.ActionContextKey("@comunica/actor-rdf-parse-jsonld:documentLoader"),strictValues:new n.ActionContextKey("@comunica/actor-rdf-parse-jsonld:strictValues"),parserOptions:new n.ActionContextKey("@comunica/actor-rdf-parse-jsonld:parserOptions")},t.KeysRdfParseHtmlScript={processingHtmlScript:new n.ActionContextKey("@comunica/actor-rdf-parse-html-script:processingHtmlScript"),extractAllScripts:new n.ActionContextKey("extractAllScripts")},t.KeysQuerySourceIdentify={sourceIds:new n.ActionContextKey("@comunica/bus-query-source-identify:sourceIds"),hypermediaSourcesAggregatedStores:new n.ActionContextKey("@comunica/bus-query-source-identify:hypermediaSourcesAggregatedStores"),traverse:new n.ActionContextKey("@comunica/bus-query-source-identify:traverse")},t.KeysRdfUpdateQuads={destination:new n.ActionContextKey("@comunica/bus-rdf-update-quads:destination")},t.KeysMergeBindingsContext={sourcesBinding:new n.ActionContextKey("@comunica/bus-merge-bindings-context:sourcesBinding")},t.KeysRdfJoin={lastPhysicalJoin:new n.ActionContextKey("@comunica/bus-rdf-join:lastPhysicalJoin")},t.KeysStatistics={discoveredLinks:new n.ActionContextKey("@comunica/bus-context-preprocess:discoveredLinks"),dereferencedLinks:new n.ActionContextKey("@comunica/bus-context-preprocess:dereferencedLinks")}},32227:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(88851),t)},85865:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActionContextKey=t.ActionContext=void 0;const n=r(6081);class i{constructor(e={}){this.map=(0,n.Map)(e)}setDefault(e,t){return this.has(e)?this:this.set(e,t)}set(e,t){return this.setRaw(e.name,t)}setRaw(e,t){return new i(this.map.set(e,t))}delete(e){return new i(this.map.delete(e.name))}get(e){return this.getRaw(e.name)}getRaw(e){return this.map.get(e)}getSafe(e){if(!this.has(e))throw new Error(`Context entry ${e.name} is required but not available`);return this.get(e)}has(e){return this.hasRaw(e.name)}hasRaw(e){return this.map.has(e)}merge(...e){let t=this;for(const r of e)for(const e of r.keys())t=t.set(e,r.get(e));return t}keys(){return[...this.map.keys()].map((e=>new a(e)))}toJS(){return this.map.toJS()}toString(){return`ActionContext(${JSON.stringify(this.map.toJS())})`}[Symbol.for("nodejs.util.inspect.custom")](){return`ActionContext(${JSON.stringify(this.map.toJS(),null," ")})`}static ensureActionContext(e){return e instanceof i?e:new i((0,n.Map)(e??{}))}}t.ActionContext=i;class a{constructor(e){this.name=e}}t.ActionContextKey=a},71330:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActionObserver=void 0,t.ActionObserver=class{constructor(e){Object.assign(this,e)}}},4165:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Actor=void 0;const n=r(17395);class i{constructor(e){this.beforeActors=[],Object.assign(this,e),this.bus.subscribe(this),this.beforeActors.length>0&&this.bus.addDependencies(this,this.beforeActors)}static getContextLogger(e){return e.get(n.CONTEXT_KEY_LOGGER)}runObservable(e){const t=this.run(e);return this.bus.onRun(this,e,t),t}async initialize(){return!0}async deinitialize(){return!0}getDefaultLogData(e,t){const r=t?t():{};return r.actor=this.name,r}logTrace(e,t,r){const n=i.getContextLogger(e);n&&n.trace(t,this.getDefaultLogData(e,r))}logDebug(e,t,r){const n=i.getContextLogger(e);n&&n.debug(t,this.getDefaultLogData(e,r))}logInfo(e,t,r){const n=i.getContextLogger(e);n&&n.info(t,this.getDefaultLogData(e,r))}logWarn(e,t,r){const n=i.getContextLogger(e);n&&n.warn(t,this.getDefaultLogData(e,r))}logError(e,t,r){const n=i.getContextLogger(e);n&&n.error(t,this.getDefaultLogData(e,r))}logFatal(e,t,r){const n=i.getContextLogger(e);n&&n.fatal(t,this.getDefaultLogData(e,r))}}t.Actor=i},64802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Bus=void 0,t.Bus=class{constructor(e){this.actors=[],this.observers=[],this.dependencyLinks=new Map,Object.assign(this,e)}subscribe(e){this.actors.push(e),this.reorderForDependencies()}subscribeObserver(e){this.observers.push(e)}unsubscribe(e){const t=this.actors.indexOf(e);return t>=0&&(this.actors.splice(t,1),!0)}unsubscribeObserver(e){const t=this.observers.indexOf(e);return t>=0&&(this.observers.splice(t,1),!0)}publish(e){return this.actors.map((t=>({actor:t,reply:t.test(e)})))}onRun(e,t,r){for(const n of this.observers)n.onRun(e,t,r)}addDependencies(e,t){for(const r of t){let t=this.dependencyLinks.get(r);t||(t=[],this.dependencyLinks.set(r,t)),t.push(e)}this.reorderForDependencies()}reorderForDependencies(){if(this.dependencyLinks.size>0){const e=[];for(const t of this.dependencyLinks.keys()){const r=this.actors.indexOf(t);r>=0&&(this.actors.splice(r,1),e.push(t))}for(;e.length>0;){let t=-1;for(let r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BusIndexed=void 0;const n=r(64802);class i extends n.Bus{constructor(e){super(e),this.actorsIndex={}}subscribe(e){const t=this.getActorIdentifier(e)||"_undefined_";let r=this.actorsIndex[t];r||(r=this.actorsIndex[t]=[]),r.push(e),super.subscribe(e)}unsubscribe(e){const t=this.getActorIdentifier(e)||"_undefined_",r=this.actorsIndex[t];if(r){const n=r.indexOf(e);n>=0&&r.splice(n,1),0===r.length&&delete this.actorsIndex[t]}return super.unsubscribe(e)}publish(e){const t=this.getActionIdentifier(e);return t?[...this.actorsIndex[t]||[],...this.actorsIndex._undefined_||[]].map((t=>({actor:t,reply:t.test(e)}))):super.publish(e)}getActorIdentifier(e){return this.actorIdentifierFields.reduce(((e,t)=>e[t]),e)}getActionIdentifier(e){return this.actionIdentifierFields.reduce(((e,t)=>e[t]),e)}}t.BusIndexed=i},17395:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CONTEXT_KEY_LOGGER=void 0;const n=r(85865);t.CONTEXT_KEY_LOGGER=new n.ActionContextKey("@comunica/core:log")},81411:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Mediator=void 0,t.Mediator=class{constructor(e){Object.assign(this,e)}publish(e){const t=this.bus.publish(e);if(0===t.length)throw new Error(`No actors are able to reply to a message in the bus ${this.bus.name}`);return t}async mediateActor(e){return await this.mediateWith(e,this.publish(e))}async mediate(e){return(await this.mediateActor(e)).runObservable(e)}}},34368:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(85865),t),i(r(64802),t),i(r(45609),t),i(r(17395),t),i(r(71330),t),i(r(4165),t),i(r(81411),t)},72204:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlankNodeBindingsScoped=void 0,t.BlankNodeBindingsScoped=class{constructor(e){this.termType="BlankNode",this.singleBindingsScope=!0,this.value=e}equals(e){return!!e&&"BlankNode"===e.termType&&e.value===this.value}}},99094:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlankNodeScoped=void 0,t.BlankNodeScoped=class{constructor(e,t){this.termType="BlankNode",this.value=e,this.skolemized=t}equals(e){return!!e&&"BlankNode"===e.termType&&e.value===this.value}}},85156:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(99094),t),i(r(72204),t)},16095:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Aggregator=t.AggregatorComponent=void 0;const n=r(22112),i=r(50363),a=r(14624),o=r(46157);t.AggregatorComponent=class{static emptyValue(){}constructor(e,t){this.sharedContext=t,this.separator=e.separator||" ",this.termTransformer=new i.TermTransformer(t.superTypeProvider)}termToNumericOrError(e){if("Literal"!==e.termType)throw new Error(`Term with value ${e.value} has type ${e.termType} and is not a numeric literal`);if(!(0,o.isSubTypeOf)(e.datatype.value,a.TypeAlias.SPARQL_NUMERIC,this.sharedContext.superTypeProvider))throw new Error(`Term datatype ${e.datatype.value} with value ${e.value} has type ${e.termType} and is not a numeric literal`);return this.termTransformer.transformLiteral(e)}},t.Aggregator=class{constructor(e,t){this.aggregatorComponent=t,this.variableValues=new Map,this.distinct=e.distinct}static emptyValue(e){return e.emptyValue()}result(){return this.aggregatorComponent.result()}put(e,t=""){this.canSkip(e,t)||(this.aggregatorComponent.put(e),this.addSeen(e,t))}canSkip(e,t){const r=this.variableValues.get(t);return this.distinct&&void 0!==r&&r.has(n.termToString(e))}addSeen(e,t){this.distinct&&(this.variableValues.has(t)||this.variableValues.set(t,new Set),this.variableValues.get(t).add(n.termToString(e)))}}},37283:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Average=void 0;const n=r(11269),i=r(42711),a=r(63606),o=r(14624),s=r(16095);class c extends s.AggregatorComponent{constructor(){super(...arguments),this.summer=i.regularFunctions[o.RegularOperator.ADDITION],this.divider=i.regularFunctions[o.RegularOperator.DIVISION],this.state=void 0}static emptyValue(){return(0,a.integer)(0).toRDF()}put(e){if(void 0===this.state){const t=this.termToNumericOrError(e);this.state={sum:t,count:1}}else{const t=this.termToNumericOrError(e);this.state.sum=this.summer.apply([this.state.sum,t],this.sharedContext),this.state.count++}}result(){if(void 0===this.state)return c.emptyValue();const e=new n.IntegerLiteral(this.state.count);return this.divider.apply([this.state.sum,e],this.sharedContext).toRDF()}}t.Average=c},47943:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Count=void 0;const n=r(63606),i=r(16095);class a extends i.AggregatorComponent{constructor(){super(...arguments),this.state=void 0}static emptyValue(){return(0,n.integer)(0).toRDF()}put(){void 0===this.state&&(this.state=0),this.state++}result(){return void 0===this.state?a.emptyValue():(0,n.integer)(this.state).toRDF()}}t.Count=a},81663:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GroupConcat=void 0;const n=r(63606),i=r(16095);class a extends i.AggregatorComponent{constructor(){super(...arguments),this.state=void 0,this.lastLanguageValid=!0,this.lastLanguage=void 0}static emptyValue(){return(0,n.string)("").toRDF()}put(e){void 0===this.state?(this.state=e.value,"Literal"===e.termType&&(this.lastLanguage=e.language)):(this.state+=this.separator+e.value,this.lastLanguageValid&&"Literal"===e.termType&&this.lastLanguage!==e.language&&(this.lastLanguageValid=!1,this.lastLanguage=void 0))}result(){return void 0===this.state?a.emptyValue():this.lastLanguageValid&&this.lastLanguage?(0,n.langString)(this.state,this.lastLanguage).toRDF():(0,n.string)(this.state).toRDF()}}t.GroupConcat=a},73342:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Max=void 0;const n=r(20236),i=r(16095);class a extends i.AggregatorComponent{constructor(){super(...arguments),this.state=void 0}put(e){if("Literal"!==e.termType)throw new Error(`Term with value ${e.value} has type ${e.termType} and is not a literal`);(void 0===this.state||-1===(0,n.orderTypes)(this.state,e))&&(this.state=e)}result(){return void 0===this.state?a.emptyValue():this.state}}t.Max=a},59648:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Min=void 0;const n=r(20236),i=r(16095);class a extends i.AggregatorComponent{constructor(){super(...arguments),this.state=void 0}put(e){if("Literal"!==e.termType)throw new Error(`Term with value ${e.value} has type ${e.termType} and is not a literal`);(void 0===this.state||1===(0,n.orderTypes)(this.state,e))&&(this.state=e)}result(){return void 0===this.state?a.emptyValue():this.state}}t.Min=a},91664:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sample=void 0;const n=r(16095);class i extends n.AggregatorComponent{constructor(){super(...arguments),this.state=void 0}put(e){void 0===this.state&&(this.state=e)}result(){return void 0===this.state?i.emptyValue():this.state}}t.Sample=i},69091:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sum=void 0;const n=r(42711),i=r(63606),a=r(14624),o=r(16095);class s extends o.AggregatorComponent{constructor(){super(...arguments),this.state=void 0,this.summer=n.regularFunctions[a.RegularOperator.ADDITION]}static emptyValue(){return(0,i.integer)(0).toRDF()}put(e){if(void 0===this.state)this.state=this.termToNumericOrError(e);else{const t=this.termToNumericOrError(e);this.state=this.summer.apply([this.state,t],this.sharedContext)}}result(){return void 0===this.state?s.emptyValue():this.state.toRDF()}}t.Sum=s},59408:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WildcardCountAggregator=void 0;const n=r(22112),i=r(63606);t.WildcardCountAggregator=class{constructor(e){this.bindingValues=new Map,this.counter=0,this.distinct=e.distinct}putBindings(e){this.handleDistinct(e)||(this.counter+=1)}static emptyValue(){return(0,i.integer)(0).toRDF()}result(){return(0,i.integer)(this.counter).toRDF()}handleDistinct(e){if(this.distinct){const t=[...e];t.sort(((e,t)=>e[0].value.localeCompare(t[0].value)));const r=t.map((([e])=>e.value)).join(","),i=t.map((([,e])=>n.termToString(e))).join(","),a=this.bindingValues.get(r),o=void 0!==a&&a.has(i);return a||this.bindingValues.set(r,new Set),this.bindingValues.get(r).add(i),o}return!1}}},96300:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.aggregators=void 0;const n=r(37283),i=r(47943),a=r(81663),o=r(73342),s=r(59648),c=r(91664),u=r(69091);t.aggregators={count:i.Count,sum:u.Sum,min:s.Min,max:o.Max,avg:n.Average,group_concat:a.GroupConcat,sample:c.Sample}},19030:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AggregateEvaluator=void 0;const n=r(76206),i=r(86588);class a extends n.BaseAggregateEvaluator{constructor(e,t,r){super(e,i.SyncEvaluator.completeContext(t??{}),r),this.evaluator=new i.SyncEvaluator(e.expression,t)}put(e){if(!this.errorOccurred)if(this.isWildcard)this.wildcardAggregator.putBindings(e);else try{const t=this.evaluator.evaluate(e);this.aggregator.put(t)}catch(e){this.safeThrow(e)}}safeThrow(e){if(this.throwError)throw e;this.errorOccurred=!0}}t.AggregateEvaluator=a},74448:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncAggregateEvaluator=void 0;const n=r(98375),i=r(76206);class a extends i.BaseAggregateEvaluator{constructor(e,t,r){super(e,n.AsyncEvaluator.completeContext(t??{}),r),this.evaluator=new n.AsyncEvaluator(e.expression,t),this.errorOccurred=!1}async put(e){if(!this.errorOccurred)if(this.isWildcard)this.wildcardAggregator.putBindings(e);else try{const t=await this.evaluator.evaluate(e);if(!t||this.errorOccurred)return;this.aggregator.put(t)}catch(e){this.safeThrow(e)}}safeThrow(e){if(this.throwError)throw e;this.errorOccurred=!0}}t.AsyncAggregateEvaluator=a},98375:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncEvaluator=void 0;const n=r(35069),i=r(69119),a=r(76660),o=r(9062);class s{static completeContext(e){const t=e.now??new Date(Date.now());return{now:t,baseIRI:e.baseIRI??void 0,functionArgumentsCache:e.functionArgumentsCache??{},superTypeProvider:{cache:e.typeCache??new n.LRUCache({max:1e3}),discoverer:e.getSuperType??(()=>"term")},extensionFunctionCreator:e.extensionFunctionCreator,exists:e.exists,aggregate:e.aggregate,bnode:e.bnode,defaultTimeZone:e.defaultTimeZone??(0,a.extractTimeZone)(t)}}constructor(e,t={}){this.algExpr=e;const r=t.extensionFunctionCreator??(()=>{}),n=s.completeContext(t),a=new i.AlgebraTransformer({type:"async",creator:r,...n});this.expr=a.transformAlgebra(e),this.evaluator=new o.AsyncRecursiveEvaluator(n,a)}async evaluate(e){return(await this.evaluator.evaluate(this.expr,e)).toRDF()}async evaluateAsEBV(e){return(await this.evaluator.evaluate(this.expr,e)).coerceEBV()}async evaluateAsInternal(e){return await this.evaluator.evaluate(this.expr,e)}}t.AsyncEvaluator=s},86588:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncEvaluator=void 0;const n=r(35069),i=r(69119),a=r(76660),o=r(42425);class s{static completeContext(e){const t=e.now??new Date(Date.now());return{now:t,baseIRI:e.baseIRI??void 0,functionArgumentsCache:e.functionArgumentsCache??{},superTypeProvider:{cache:e.typeCache??new n.LRUCache({max:1e3}),discoverer:e.getSuperType??(()=>"term")},extensionFunctionCreator:e.extensionFunctionCreator,exists:e.exists,aggregate:e.aggregate,bnode:e.bnode,defaultTimeZone:e.defaultTimeZone??(0,a.extractTimeZone)(t)}}constructor(e,t={}){this.algExpr=e,this.context=t;const r=t.extensionFunctionCreator??(()=>{}),n=s.completeContext(t),a=new i.AlgebraTransformer({type:"sync",creator:r,...n});this.expr=a.transformAlgebra(e),this.evaluator=new o.SyncRecursiveEvaluator(n,a)}evaluate(e){return this.evaluator.evaluate(this.expr,e).toRDF()}evaluateAsEBV(e){return this.evaluator.evaluate(this.expr,e).coerceEBV()}evaluateAsInternal(e){return this.evaluator.evaluate(this.expr,e)}}t.SyncEvaluator=s},9062:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncRecursiveEvaluator=void 0;const n=r(11269),i=r(50363),a=r(82867),o=r(10667);class s extends o.BaseExpressionEvaluator{constructor(e,t){super(t??new i.TermTransformer(e.superTypeProvider)),this.context=e,this.subEvaluators={[n.ExpressionType.Term]:(e,t)=>this.term(e),[n.ExpressionType.Variable]:(e,t)=>this.variable(e,t),[n.ExpressionType.Operator]:(e,t)=>this.evalOperator(e,t),[n.ExpressionType.SpecialOperator]:(e,t)=>this.evalSpecialOperator(e,t),[n.ExpressionType.Named]:(e,t)=>this.evalNamed(e,t),[n.ExpressionType.Existence]:(e,t)=>this.evalExistence(e,t),[n.ExpressionType.Aggregate]:(e,t)=>this.evalAggregate(e),[n.ExpressionType.AsyncExtension]:(e,t)=>this.evalAsyncExtension(e,t)}}async evaluate(e,t){const r=this.subEvaluators[e.expressionType];if(!r)throw new a.InvalidExpressionType(e);return r.bind(this)(e,t)}async evalOperator(e,t){const r=e.args.map((e=>this.evaluate(e,t))),n=await Promise.all(r);return e.apply(n)}async evalSpecialOperator(e,t){const r=this.evaluate.bind(this),n={args:e.args,mapping:t,superTypeProvider:this.context.superTypeProvider,now:this.context.now,baseIRI:this.context.baseIRI,functionArgumentsCache:this.context.functionArgumentsCache,evaluate:r,bnode:this.context.bnode,defaultTimeZone:this.context.defaultTimeZone};return e.applyAsync(n)}async _evalAsyncArgs(e,t){const r=e.map((e=>this.evaluate(e,t)));return await Promise.all(r)}async evalNamed(e,t){return e.apply(await this._evalAsyncArgs(e.args,t))}async evalAsyncExtension(e,t){return await e.apply(await this._evalAsyncArgs(e.args,t))}async evalExistence(e,t){if(!this.context.exists)throw new a.NoExistenceHook;return new n.BooleanLiteral(await this.context.exists(e.expression,t))}async evalAggregate(e){if(!this.context.aggregate)throw new a.NoAggregator;return this.termTransformer.transformRDFTermUnsafe(await this.context.aggregate(e.expression))}}t.AsyncRecursiveEvaluator=s},76206:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseAggregateEvaluator=void 0;const n=r(31578),i=r(96300),a=r(16095),o=r(59408),s=r(82867);t.BaseAggregateEvaluator=class{constructor(e,t,r){this.throwError=!1,this.isWildcard=!1,this.errorOccurred=!1,this.expression=e,this.aggregator=new a.Aggregator(e,new i.aggregators[e.aggregator](e,t)),this.throwError=r??!1,this.isWildcard=e.expression.expressionType===n.Algebra.expressionTypes.WILDCARD,this.isWildcard&&(this.wildcardAggregator=new o.WildcardCountAggregator(e))}static emptyValue(e,t=!1){let r;if(r=e.expression.expressionType===n.Algebra.expressionTypes.WILDCARD?o.WildcardCountAggregator.emptyValue():a.Aggregator.emptyValue(i.aggregators[e.aggregator]),void 0===r&&t)throw new s.EmptyAggregateError;return r}result(){if(!this.errorOccurred)return this.isWildcard?this.wildcardAggregator.result():this.aggregator.result()}}},10667:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseExpressionEvaluator=void 0;const n=r(63606),i=r(82867);t.BaseExpressionEvaluator=class{constructor(e){this.termTransformer=e}term(e){return e}variable(e,t){const r=t.get((0,n.expressionToVar)(e));if(!r)throw new i.UnboundVariableError(e.name,t);return this.termTransformer.transformRDFTermUnsafe(r)}}},42425:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncRecursiveEvaluator=void 0;const n=r(11269),i=r(50363),a=r(82867),o=r(10667);class s extends o.BaseExpressionEvaluator{constructor(e,t){super(t??new i.TermTransformer(e.superTypeProvider)),this.context=e,this.subEvaluators={[n.ExpressionType.Term]:(e,t)=>this.term(e),[n.ExpressionType.Variable]:(e,t)=>this.variable(e,t),[n.ExpressionType.Operator]:(e,t)=>this.evalOperator(e,t),[n.ExpressionType.SpecialOperator]:(e,t)=>this.evalSpecialOperator(e,t),[n.ExpressionType.Named]:(e,t)=>this.evalNamed(e,t),[n.ExpressionType.Existence]:(e,t)=>this.evalExistence(e,t),[n.ExpressionType.Aggregate]:(e,t)=>this.evalAggregate(e),[n.ExpressionType.SyncExtension]:(e,t)=>this.evalSyncExtension(e,t)}}evaluate(e,t){const r=this.subEvaluators[e.expressionType];if(!r)throw new a.InvalidExpressionType(e);return r.bind(this)(e,t)}evalOperator(e,t){const r=e.args.map((e=>this.evaluate(e,t)));return e.apply(r)}evalSpecialOperator(e,t){const r=this.evaluate.bind(this),n={args:e.args,mapping:t,superTypeProvider:this.context.superTypeProvider,now:this.context.now,baseIRI:this.context.baseIRI,functionArgumentsCache:this.context.functionArgumentsCache,evaluate:r,bnode:this.context.bnode,defaultTimeZone:this.context.defaultTimeZone};return e.applySynchronously(n)}evalNamed(e,t){const r=e.args.map((e=>this.evaluate(e,t)));return e.apply(r)}evalSyncExtension(e,t){const r=e.args.map((e=>this.evaluate(e,t)));return e.apply(r)}evalExistence(e,t){if(!this.context.exists)throw new a.NoExistenceHook;return new n.BooleanLiteral(this.context.exists(e.expression,t))}evalAggregate(e){if(!this.context.aggregate)throw new a.NoAggregator;return this.termTransformer.transformRDFTermUnsafe(this.context.aggregate(e.expression))}}t.SyncRecursiveEvaluator=s},9950:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Aggregate=void 0;const n=r(89702);t.Aggregate=class{constructor(e,t){this.name=e,this.expression=t,this.expressionType=n.ExpressionType.Aggregate}}},29360:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncExtension=void 0;const n=r(89702);t.AsyncExtension=class{constructor(e,t,r){this.name=e,this.args=t,this.apply=r,this.expressionType=n.ExpressionType.AsyncExtension}}},75065:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Existence=void 0;const n=r(89702);t.Existence=class{constructor(e){this.expression=e,this.expressionType=n.ExpressionType.Existence}}},89702:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.asTermType=t.ExpressionType=void 0,function(e){e.Aggregate="aggregate",e.Existence="existence",e.Named="named",e.Operator="operator",e.SpecialOperator="specialOperator",e.Term="term",e.Variable="variable",e.AsyncExtension="asyncExtension",e.SyncExtension="syncExtension"}(r||(t.ExpressionType=r={})),t.asTermType=function(e){if("namedNode"===e||"literal"===e||"blankNode"===e||"quad"===e)return e}},67112:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Named=void 0;const n=r(89702);t.Named=class{constructor(e,t,r){this.name=e,this.args=t,this.apply=r,this.expressionType=n.ExpressionType.Named}}},27033:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Operator=void 0;const n=r(89702);t.Operator=class{constructor(e,t){this.args=e,this.apply=t,this.expressionType=n.ExpressionType.Operator}}},3358:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SpecialOperator=void 0;const n=r(89702);t.SpecialOperator=class{constructor(e,t,r){this.args=e,this.applyAsync=t,this.applySynchronously=r,this.expressionType=n.ExpressionType.SpecialOperator}}},62293:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncExtension=void 0;const n=r(89702);t.SyncExtension=class{constructor(e,t,r){this.name=e,this.args=t,this.apply=r,this.expressionType=n.ExpressionType.SyncExtension}}},79339:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isNonLexicalLiteral=t.NonLexicalLiteral=t.YearMonthDurationLiteral=t.DayTimeDurationLiteral=t.DurationLiteral=t.DateLiteral=t.TimeLiteral=t.DateTimeLiteral=t.StringLiteral=t.LangStringLiteral=t.BooleanLiteral=t.DoubleLiteral=t.FloatLiteral=t.DecimalLiteral=t.IntegerLiteral=t.NumericLiteral=t.Literal=t.isLiteralTermExpression=t.Quad=t.BlankNode=t.NamedNode=t.Term=void 0;const n=r(18050),i=r(50363),a=r(14624),o=r(14624),s=r(82867),c=r(19002),u=r(46157),l=r(89702),d=new n.DataFactory;class p{constructor(){this.expressionType=l.ExpressionType.Term}str(){throw new s.InvalidArgumentTypes([this],a.RegularOperator.STR)}coerceEBV(){throw new s.EBVCoercionError(this)}}t.Term=p,t.NamedNode=class extends p{constructor(e){super(),this.value=e,this.termType="namedNode"}toRDF(){return d.namedNode(this.value)}str(){return this.value}},t.BlankNode=class extends p{constructor(e){super(),this.termType="blankNode",this.value="string"==typeof e?d.blankNode(e):e}toRDF(){return this.value}},t.Quad=class extends p{constructor(e,t){super(),this.termType="quad",this.transformer=new i.TermTransformer(t),this.valueTerm=e}toRDF(){return this.valueTerm}get subject(){return this.transformer.transformRDFTermUnsafe(this.RDFsubject)}get predicate(){return this.transformer.transformRDFTermUnsafe(this.RDFpredicate)}get object(){return this.transformer.transformRDFTermUnsafe(this.RDFobject)}get RDFsubject(){return this.toRDF().subject}get RDFpredicate(){return this.toRDF().predicate}get RDFobject(){return this.toRDF().object}},t.isLiteralTermExpression=function(e){if("literal"===e.termType)return e};class h extends p{constructor(e,t,r,n){super(),this.typedValue=e,this.dataType=t,this.strValue=r,this.language=n,this.termType="literal"}toRDF(){return d.literal(this.strValue??this.str(),this.language??d.namedNode(this.dataType))}str(){return this.strValue??this.typedValue.toString()}}t.Literal=h;class f extends h{constructor(e,t,r,n){super(e,t,r,n),this.typedValue=e,this.strValue=r,this.language=n}coerceEBV(){return Boolean(this.typedValue)}toRDF(){const e=super.toRDF();return Number.isFinite(this.typedValue)||(e.value=e.value.replace("Infinity","INF")),e}str(){return this.strValue??this.specificFormatter(this.typedValue)}}t.NumericLiteral=f,t.IntegerLiteral=class extends f{constructor(e,t,r,n){super(e,t??o.TypeURL.XSD_INTEGER,r,n),this.typedValue=e,this.strValue=r,this.language=n}specificFormatter(e){return e.toFixed(0)}},t.DecimalLiteral=class extends f{constructor(e,t,r,n){super(e,t??o.TypeURL.XSD_DECIMAL,r,n),this.typedValue=e,this.strValue=r,this.language=n}specificFormatter(e){return e.toString()}},t.FloatLiteral=class extends f{constructor(e,t,r,n){super(e,t??o.TypeURL.XSD_FLOAT,r,n),this.typedValue=e,this.strValue=r,this.language=n}specificFormatter(e){return e.toString()}},t.DoubleLiteral=class extends f{constructor(e,t,r,n){super(e,t??o.TypeURL.XSD_DOUBLE,r,n),this.typedValue=e,this.strValue=r,this.language=n}specificFormatter(e){if(!Number.isFinite(e))return e>0?"INF":e<0?"-INF":"NaN";const t=e.toExponential(),[r,n]=t.split("e"),i=n.replace(/\+/u,"");return`${r.includes(".")?r:`${r}.0`}E${i}`}},t.BooleanLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_BOOLEAN,t),this.typedValue=e,this.strValue=t}coerceEBV(){return this.typedValue}},t.LangStringLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.RDF_LANG_STRING,e,t),this.typedValue=e,this.language=t}coerceEBV(){return this.str().length>0}},t.StringLiteral=class extends h{constructor(e,t){super(e,t??o.TypeURL.XSD_STRING,e),this.typedValue=e}coerceEBV(){return this.str().length>0}},t.DateTimeLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_DATE_TIME,t),this.typedValue=e,this.strValue=t}str(){return(0,c.serializeDateTime)(this.typedValue)}},t.TimeLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_TIME,t),this.typedValue=e,this.strValue=t}str(){return(0,c.serializeTime)(this.typedValue)}},t.DateLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_DATE,t),this.typedValue=e,this.strValue=t}str(){return(0,c.serializeDate)(this.typedValue)}};class y extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_DURATION,t),this.typedValue=e,this.strValue=t}str(){return(0,c.serializeDuration)(this.typedValue)}}t.DurationLiteral=y,t.DayTimeDurationLiteral=class extends y{constructor(e,t,r){super(e,t,r??o.TypeURL.XSD_DAY_TIME_DURATION),this.typedValue=e,this.strValue=t}},t.YearMonthDurationLiteral=class extends h{constructor(e,t,r){super(e,r??o.TypeURL.XSD_YEAR_MONTH_DURATION,t),this.typedValue=e,this.strValue=t}str(){return(0,c.serializeDuration)(this.typedValue,"P0M")}};class g extends h{constructor(e,t,r,n,i){super({toString:()=>"undefined"},t,n,i),this.openWorldType=r}coerceEBV(){if((0,u.isSubTypeOf)(this.dataType,o.TypeURL.XSD_BOOLEAN,this.openWorldType)||(0,u.isSubTypeOf)(this.dataType,o.TypeAlias.SPARQL_NUMERIC,this.openWorldType))return!1;throw new s.EBVCoercionError(this)}toRDF(){return d.literal(this.str(),this.language??d.namedNode(this.dataType))}str(){return this.strValue??""}}t.NonLexicalLiteral=g,t.isNonLexicalLiteral=function(e){if(e instanceof g)return e}},28757:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Variable=void 0;const n=r(89702);t.Variable=class{constructor(e){this.expressionType=n.ExpressionType.Variable,this.name=e}}},11269:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(89702),t),i(r(28757),t),i(r(79339),t),i(r(27033),t),i(r(3358),t),i(r(67112),t),i(r(9950),t),i(r(75065),t),i(r(29360),t),i(r(62293),t)},57328:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SpecialFunction=t.NamedFunction=t.RegularFunction=t.BaseFunction=void 0;const n=r(82867);class i{constructor(e,t){this.operator=e,this.apply=(e,t)=>(this.monomorph(e,t.superTypeProvider,t.functionArgumentsCache)??this.handleInvalidTypes(e))(t)(e),this.arity=t.arity,this.overloads=t.overloads}monomorph(e,t,r){return this.overloads.search(e,t,r)}}t.BaseFunction=i,t.RegularFunction=class extends i{constructor(e,t){super(e,t),this.functionClass="regular"}handleInvalidTypes(e){throw new n.InvalidArgumentTypes(e,this.operator)}},t.NamedFunction=class extends i{constructor(e,t){super(e,t),this.functionClass="named"}handleInvalidTypes(e){throw new n.InvalidArgumentTypes(e,this.operator)}},t.SpecialFunction=class{constructor(e,t){var r;this.operator=e,this.functionClass="special",this.arity=t.arity,this.applySynchronously=t.applySynchronously,this.applyAsync=t.applyAsync,this.checkArity=t.checkArity??(r=this.arity,e=>r===Number.POSITIVE_INFINITY||e.length===r)}}},63606:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.expressionToVar=t.dateTime=t.langString=t.string=t.double=t.float=t.decimal=t.integer=t.bool=t.Builder=t.declare=void 0;const n=r(18050),i=r(11269),a=r(11269),o=r(14624),s=r(14624),c=r(82867),u=r(33357),l=new n.DataFactory;t.declare=function(e){return new d(e)};class d{constructor(e){this.overloadTree=new u.OverloadTree(e),this.collected=!1}collect(){if(this.collected)throw new Error("Builders can only be collected once!");return this.collected=!0,this.overloadTree}static wrapInvalidLexicalProtected(e){return t=>r=>{for(const[e,t]of r.entries())if(t instanceof a.NonLexicalLiteral)throw new c.InvalidLexicalForm(r[e].toRDF());return e(t)(r)}}set(e,t,r=!0){return this.overloadTree.addOverload(e,r?d.wrapInvalidLexicalProtected(t):t),this}copy({from:e,to:t}){const r=this.overloadTree.getImplementationExact(e);if(!r)throw new c.UnexpectedError("Tried to copy implementation, but types not found",{from:e,to:t});return this.set(t,r)}onUnary(e,t,r=!0){return this.set([e],(e=>([r])=>t(e)(r)),r)}onUnaryTyped(e,t,r=!0){return this.set([e],(e=>([r])=>t(e)(r.typedValue)),r)}onBinary(e,t,r=!0){return this.set(e,(e=>([r,n])=>t(e)(r,n)),r)}onBinaryTyped(e,t,r=!0){return this.set(e,(e=>([r,n])=>t(e)(r.typedValue,n.typedValue)),r)}onTernaryTyped(e,t,r=!0){return this.set(e,(e=>([r,n,i])=>t(e)(r.typedValue,n.typedValue,i.typedValue)),r)}onTernary(e,t,r=!0){return this.set(e,(e=>([r,n,i])=>t(e)(r,n,i)),r)}onQuaternaryTyped(e,t,r=!0){return this.set(e,(e=>([r,n,i,a])=>t(e)(r.typedValue,n.typedValue,i.typedValue,a.typedValue)),r)}onTerm1(e,t=!1){return this.set(["term"],(t=>([r])=>e(t)(r)),t)}onTerm3(e){return this.set(["term","term","term"],(t=>([r,n,i])=>e(t)(r,n,i)))}onQuad1(e){return this.set(["quad"],(t=>([r])=>e(t)(r)))}onLiteral1(e,t=!0){return this.set(["literal"],(t=>([r])=>e(t)(r)),t)}onBoolean1(e,t=!0){return this.set([o.TypeURL.XSD_BOOLEAN],(t=>([r])=>e(t)(r)),t)}onBoolean1Typed(e,t=!0){return this.set([o.TypeURL.XSD_BOOLEAN],(t=>([r])=>e(t)(r.typedValue)),t)}onString1(e,t=!0){return this.set([o.TypeURL.XSD_STRING],(t=>([r])=>e(t)(r)),t)}onString1Typed(e,t=!0){return this.set([o.TypeURL.XSD_STRING],(t=>([r])=>e(t)(r.typedValue)),t)}onLangString1(e,t=!0){return this.set([o.TypeURL.RDF_LANG_STRING],(t=>([r])=>e(t)(r)),t)}onStringly1(e,t=!0){return this.set([o.TypeAlias.SPARQL_STRINGLY],(t=>([r])=>e(t)(r)),t)}onStringly1Typed(e,t=!0){return this.set([o.TypeAlias.SPARQL_STRINGLY],(t=>([r])=>e(t)(r.typedValue)),t)}onNumeric1(e,t=!0){return this.set([o.TypeAlias.SPARQL_NUMERIC],(t=>([r])=>e(t)(r)),t)}onDateTime1(e,t=!0){return this.set([o.TypeURL.XSD_DATE_TIME],(t=>([r])=>e(t)(r)),t)}numericConverter(e,t=!0){const r=t=>r=>e(t)(r.typedValue);return this.onUnary(s.TypeURL.XSD_INTEGER,(e=>t=>h(r(e)(t))),t).onUnary(s.TypeURL.XSD_DECIMAL,(e=>t=>f(r(e)(t))),t).onUnary(s.TypeURL.XSD_FLOAT,(e=>t=>y(r(e)(t))),t).onUnary(s.TypeURL.XSD_DOUBLE,(e=>t=>g(r(e)(t))),t)}arithmetic(e,t=!0){const r=t=>(r,n)=>e(t)(r.typedValue,n.typedValue);return this.onBinary([s.TypeURL.XSD_INTEGER,s.TypeURL.XSD_INTEGER],(e=>(t,n)=>h(r(e)(t,n))),t).onBinary([s.TypeURL.XSD_DECIMAL,s.TypeURL.XSD_DECIMAL],(e=>(t,n)=>f(r(e)(t,n))),t).onBinary([s.TypeURL.XSD_FLOAT,s.TypeURL.XSD_FLOAT],(e=>(t,n)=>y(r(e)(t,n))),t).onBinary([s.TypeURL.XSD_DOUBLE,s.TypeURL.XSD_DOUBLE],(e=>(t,n)=>g(r(e)(t,n))),t)}numberTest(e){return this.numeric((t=>([r,n])=>p(e(t)(r.typedValue,n.typedValue))))}stringTest(e,t=!0){return this.set([o.TypeURL.XSD_STRING,o.TypeURL.XSD_STRING],(t=>([r,n])=>p(e(t)(r.typedValue,n.typedValue))),t)}booleanTest(e,t=!0){return this.set([o.TypeURL.XSD_BOOLEAN,o.TypeURL.XSD_BOOLEAN],(t=>([r,n])=>p(e(t)(r.typedValue,n.typedValue))),t)}dateTimeTest(e,t=!0){return this.set([o.TypeURL.XSD_DATE_TIME,o.TypeURL.XSD_DATE_TIME],(t=>([r,n])=>p(e(t)(r.typedValue,n.typedValue))),t)}numeric(e){return this.set([o.TypeAlias.SPARQL_NUMERIC,o.TypeAlias.SPARQL_NUMERIC],e)}}function p(e){return new i.BooleanLiteral(e)}function h(e){return new i.IntegerLiteral(e)}function f(e){return new i.DecimalLiteral(e)}function y(e){return new i.FloatLiteral(e)}function g(e){return new i.DoubleLiteral(e)}t.Builder=d,t.bool=p,t.integer=h,t.decimal=f,t.float=y,t.double=g,t.string=function(e){return new i.StringLiteral(e)},t.langString=function(e,t){return new i.LangStringLiteral(e,t)},t.dateTime=function(e,t){return new i.DateTimeLiteral(e,t)},t.expressionToVar=function(e){return l.variable(e.name.slice(1))}},58157:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.namedDefinitions=void 0;const n=r(11269),i=r(11269),a=r(14624),o=r(76660),s=r(82867),c=r(17590),u=r(63606),l={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_STRING).onNumeric1((()=>e=>(0,u.string)((0,u.float)(e.typedValue).str()))).onBoolean1Typed((()=>e=>(0,u.string)((0,u.bool)(e).str()))).onTerm1((()=>e=>(0,u.string)(e.str()))).collect()},d={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_FLOAT).onNumeric1((()=>e=>(0,u.float)(e.typedValue))).onBoolean1Typed((()=>e=>(0,u.float)(e?1:0))).onUnary(a.TypeURL.XSD_STRING,(()=>e=>{const t=(0,c.parseXSDFloat)(e.str());if(void 0===t)throw new s.CastError(e,a.TypeURL.XSD_FLOAT);return(0,u.float)(t)}),!1).collect()},p={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DOUBLE).onNumeric1((()=>e=>(0,u.double)(e.typedValue))).onBoolean1Typed((()=>e=>(0,u.double)(e?1:0))).onUnary(a.TypeURL.XSD_STRING,(()=>e=>{const t=(0,c.parseXSDFloat)(e.str());if(void 0===t)throw new s.CastError(e,a.TypeURL.XSD_DOUBLE);return(0,u.double)(t)}),!1).collect()},h={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DECIMAL).onNumeric1((()=>e=>{const t=(0,c.parseXSDDecimal)(e.str());if(void 0===t)throw new s.CastError(e,a.TypeURL.XSD_DECIMAL);return(0,u.decimal)(t)})).onString1((()=>e=>{const t=e.str(),r=/^([+-])?(\d+(\.\d+)?)$/u.test(t)?(0,c.parseXSDDecimal)(t):void 0;if(void 0===r)throw new s.CastError(e,a.TypeURL.XSD_DECIMAL);return(0,u.decimal)(r)}),!1).onBoolean1Typed((()=>e=>(0,u.decimal)(e?1:0))).collect()},f={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_INTEGER).onBoolean1Typed((()=>e=>(0,u.integer)(e?1:0))).onNumeric1((()=>e=>{const t=(0,c.parseXSDInteger)(e.str());if(void 0===t)throw new s.CastError(e,a.TypeURL.XSD_INTEGER);return(0,u.integer)(t)}),!1).onString1((()=>e=>{const t=e.str(),r=/^\d+$/u.test(t)?(0,c.parseXSDInteger)(t):void 0;if(void 0===r)throw new s.CastError(e,a.TypeURL.XSD_INTEGER);return(0,u.integer)(r)})).collect()},y={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DATE_TIME).onUnary(a.TypeURL.XSD_DATE_TIME,(()=>e=>e)).onUnary(a.TypeURL.XSD_STRING,(()=>e=>(0,u.dateTime)((0,c.parseDateTime)(e.str()),e.str())),!1).onUnary(a.TypeURL.XSD_DATE,(()=>e=>new n.DateTimeLiteral({...e.typedValue,hours:0,minutes:0,seconds:0}))).collect()},g={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_BOOLEAN).onNumeric1((()=>e=>(0,u.bool)(e.coerceEBV())),!0).onUnary(a.TypeURL.XSD_BOOLEAN,(()=>e=>(0,u.bool)(e.coerceEBV())),!0).onUnary(a.TypeURL.XSD_STRING,(()=>e=>{switch(e.str()){case"true":case"1":return(0,u.bool)(!0);case"false":case"0":return(0,u.bool)(!1);default:throw new s.CastError(e,a.TypeURL.XSD_BOOLEAN)}}),!1).collect()},m={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_TIME).onUnary(a.TypeURL.XSD_TIME,(()=>e=>new n.TimeLiteral(e.typedValue,e.strValue))).onUnary(a.TypeURL.XSD_DATE_TIME,(()=>e=>new n.TimeLiteral(e.typedValue))).onStringly1((()=>e=>new n.TimeLiteral((0,c.parseTime)(e.str())))).collect()},b={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DATE).onUnary(a.TypeURL.XSD_DATE,(()=>e=>new n.DateLiteral(e.typedValue,e.strValue))).onUnary(a.TypeURL.XSD_DATE_TIME,(()=>e=>new n.DateLiteral(e.typedValue))).onStringly1((()=>e=>new n.DateLiteral((0,c.parseDate)(e.str())))).collect()},v={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DURATION).onUnary(a.TypeURL.XSD_DURATION,(()=>e=>new n.DurationLiteral(e.typedValue,e.strValue))).onStringly1((()=>e=>new i.DurationLiteral((0,c.parseDuration)(e.str())))).collect()},_={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_DAY_TIME_DURATION).onUnary(a.TypeURL.XSD_DURATION,(()=>e=>new n.DayTimeDurationLiteral((0,o.trimToDayTimeDuration)(e.typedValue)))).onStringly1((()=>e=>new n.DayTimeDurationLiteral((0,c.parseDayTimeDuration)(e.str())))).collect()},w={arity:1,overloads:(0,u.declare)(a.TypeURL.XSD_YEAR_MONTH_DURATION).onUnary(a.TypeURL.XSD_DURATION,(()=>e=>new n.YearMonthDurationLiteral((0,o.trimToYearMonthDuration)(e.typedValue)))).onStringly1((()=>e=>new n.YearMonthDurationLiteral((0,c.parseYearMonthDuration)(e.str())))).collect()};t.namedDefinitions={[a.TypeURL.XSD_STRING]:l,[a.TypeURL.XSD_FLOAT]:d,[a.TypeURL.XSD_DOUBLE]:p,[a.TypeURL.XSD_DECIMAL]:h,[a.TypeURL.XSD_INTEGER]:f,[a.TypeURL.XSD_DATE_TIME]:y,[a.TypeURL.XSD_DATE]:b,[a.TypeURL.XSD_BOOLEAN]:g,[a.TypeURL.XSD_TIME]:m,[a.TypeURL.XSD_DURATION]:v,[a.TypeURL.XSD_DAY_TIME_DURATION]:_,[a.TypeURL.XSD_YEAR_MONTH_DURATION]:w}},33357:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OverloadTree=void 0;const n=r(11269),i=r(46157);class a{constructor(e,t){this.identifier=e,this.implementation=void 0,this.generalOverloads=Object.create(null),this.literalOverLoads=[],this.depth=t??0,this.promotionCount=void 0}getSubtree(e){const t=(0,i.asGeneralType)(e);if(t)return this.generalOverloads[t];for(const[t,r]of this.literalOverLoads)if(e===t)return r}getImplementationExact(e){let t=this;for(const r of e)if(t=t.getSubtree(r),!t)return;return t.implementation}search(e,t,r){let i=r[this.identifier],a=0;for(;a({node:e,index:1}))));o.length>0;){const{index:n,node:i}=o.pop();if(n===e.length&&i.implementation)return this.addToCache(r,e,i.implementation),i.implementation;o.push(...i.getSubTreeWithArg(e[n],t).map((e=>({node:e,index:n+1}))))}}addToCache(e,t,r){function i(e,t){return t in e||(e[t]={}),e[t]}let a=i(e,this.identifier);for(const e of t){const t=(0,n.isLiteralTermExpression)(e),r=t?t.dataType:e.termType;a.cache=a.cache??{},a=i(a.cache,r)}a.func=r}addOverload(e,t){this._addOverload([...e],t,0)}_addOverload(e,t,r){const[n,...o]=e;if(!n)return void((void 0===this.promotionCount||r<=this.promotionCount)&&(this.promotionCount=r,this.implementation=t));let s=this.getSubtree(n);if(!s){const e=new a(this.identifier,this.depth+1),t=(0,i.asGeneralType)(n);t&&(this.generalOverloads[t]=e);const r=(0,i.asOverrideType)(n);r&&this.literalOverLoads.push([r,e]),s=e}if(s._addOverload(o,t,r),i.typePromotion[n])for(const e of i.typePromotion[n])this.addPromotedOverload(e.typeToPromote,t,e.conversionFunction,o,r)}addPromotedOverload(e,t,r,n,i){let o=this.getSubtree(e);if(!o){const t=new a(this.identifier,this.depth+1);this.literalOverLoads.push([e,t]),o=t}o._addOverload(n,(e=>n=>t(e)([...n.slice(0,this.depth),r(n[this.depth]),...n.slice(this.depth+1,n.length)])),i+1)}getSubTreeWithArg(e,t){const r=[],a=(0,n.isLiteralTermExpression)(e);if(this.generalOverloads.term&&r.push(this.generalOverloads.term),this.generalOverloads[e.termType]&&r.push(this.generalOverloads[e.termType]),a){const e=(0,i.asKnownLiteralType)(a.dataType);let n;n=e?i.superTypeDictTable[e]:(0,i.getSuperTypes)(a.dataType,t);const o=this.literalOverLoads.filter((([e,t])=>e in n)).map((([e,t])=>[n[e],t]));o.sort((([e,t],[r,n])=>e-r)),r.push(...o.map((([e,t])=>t)))}return r}}t.OverloadTree=a},22122:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.definitions=void 0;const n=r(55553),i=r(99499),a=r(18050),o=r(9929),s=r(88110),c=r(84596),u=r(11269),l=r(50363),d=r(14624),p=r(14624),h=r(76660),f=r(82867),y=r(20236),g=r(66487),m=r(57328),b=r(63606),v=r(29791),_=r(42711),w=new a.DataFactory,T={arity:1,overloads:(0,b.declare)(d.RegularOperator.NOT).onTerm1((()=>e=>(0,b.bool)(!e.coerceEBV()))).collect()},S={arity:1,overloads:(0,b.declare)(d.RegularOperator.UPLUS).numericConverter((()=>e=>e)).collect()},O={arity:1,overloads:(0,b.declare)(d.RegularOperator.UMINUS).numericConverter((()=>e=>-e)).collect()},E={arity:2,overloads:(0,b.declare)(d.RegularOperator.MULTIPLICATION).arithmetic((()=>(e,t)=>new n.BigNumber(e).times(t).toNumber())).collect()},x={arity:2,overloads:(0,b.declare)(d.RegularOperator.DIVISION).arithmetic((()=>(e,t)=>new n.BigNumber(e).div(t).toNumber())).onBinaryTyped([p.TypeURL.XSD_INTEGER,p.TypeURL.XSD_INTEGER],(()=>(e,t)=>{if(0===t)throw new f.ExpressionError("Integer division by 0");return(0,b.decimal)(new n.BigNumber(e).div(t).toNumber())})).collect()},A={arity:2,overloads:(0,b.declare)(d.RegularOperator.ADDITION).arithmetic((()=>(e,t)=>new n.BigNumber(e).plus(t).toNumber())).set([p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.DateTimeLiteral((0,g.addDurationToDateTime)(e.typedValue,(0,h.defaultedDurationRepresentation)(t.typedValue))))).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],to:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_YEAR_MONTH_DURATION]}).set([p.TypeURL.XSD_DATE,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.DateLiteral((0,g.addDurationToDateTime)((0,h.defaultedDateTimeRepresentation)(e.typedValue),(0,h.defaultedDurationRepresentation)(t.typedValue))))).copy({from:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_DAY_TIME_DURATION],to:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_YEAR_MONTH_DURATION]}).set([p.TypeURL.XSD_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.TimeLiteral((0,g.addDurationToDateTime)((0,h.defaultedDateTimeRepresentation)(e.typedValue),(0,h.defaultedDurationRepresentation)(t.typedValue))))).copy({from:[p.TypeURL.XSD_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],to:[p.TypeURL.XSD_TIME,p.TypeURL.XSD_YEAR_MONTH_DURATION]}).collect()},R={arity:2,overloads:(0,b.declare)(d.RegularOperator.SUBTRACTION).arithmetic((()=>(e,t)=>new n.BigNumber(e).minus(t).toNumber())).set([p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DATE_TIME],(({defaultTimeZone:e})=>([t,r])=>new u.DayTimeDurationLiteral((0,g.elapsedDuration)(t.typedValue,r.typedValue,e)))).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_DATE]}).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_TIME,p.TypeURL.XSD_TIME]}).set([p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.DateTimeLiteral((0,g.addDurationToDateTime)(e.typedValue,(0,h.defaultedDurationRepresentation)((0,h.negateDuration)(t.typedValue)))))).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],to:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_YEAR_MONTH_DURATION]}).set([p.TypeURL.XSD_DATE,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.DateLiteral((0,g.addDurationToDateTime)((0,h.defaultedDateTimeRepresentation)(e.typedValue),(0,h.defaultedDurationRepresentation)((0,h.negateDuration)(t.typedValue)))))).copy({from:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_DAY_TIME_DURATION],to:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_YEAR_MONTH_DURATION]}).set([p.TypeURL.XSD_TIME,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>new u.TimeLiteral((0,g.addDurationToDateTime)((0,h.defaultedDateTimeRepresentation)(e.typedValue),(0,h.defaultedDurationRepresentation)((0,h.negateDuration)(t.typedValue)))))).collect()},I={arity:2,overloads:(0,b.declare)(d.RegularOperator.EQUAL).numberTest((()=>(e,t)=>e===t)).stringTest((()=>(e,t)=>0===e.localeCompare(t))).set([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>([e,t])=>(0,b.bool)(e.str()===t.str()&&e.language===t.language))).set([p.TypeAlias.SPARQL_STRINGLY,p.TypeAlias.SPARQL_STRINGLY],(()=>()=>(0,b.bool)(!1))).booleanTest((()=>(e,t)=>e===t)).dateTimeTest((({defaultTimeZone:e})=>(t,r)=>(0,h.toUTCDate)(t,e).getTime()===(0,h.toUTCDate)(r,e).getTime())).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_DATE]}).set(["quad","quad"],(e=>([t,r])=>{const n=new m.RegularFunction(p.RegularOperator.EQUAL,I);return(0,b.bool)(n.apply([t.subject,r.subject],e).coerceEBV()&&n.apply([t.predicate,r.predicate],e).coerceEBV()&&n.apply([t.object,r.object],e).coerceEBV())}),!1).set(["term","term"],(()=>([e,t])=>(0,b.bool)(function(e,t){const r=e.toRDF(),n=t.toRDF(),i=r.equals(n);if(!i&&"Literal"===r.termType&&"Literal"===n.termType)throw new f.RDFEqualTypeError([e,t]);return i}(e,t))),!1).set([p.TypeURL.XSD_DURATION,p.TypeURL.XSD_DURATION],(()=>([e,t])=>(0,b.bool)((0,h.yearMonthDurationsToMonths)((0,h.defaultedYearMonthDurationRepresentation)(e.typedValue))===(0,h.yearMonthDurationsToMonths)((0,h.defaultedYearMonthDurationRepresentation)(t.typedValue))&&(0,h.dayTimeDurationsToSeconds)((0,h.defaultedDayTimeDurationRepresentation)(e.typedValue))===(0,h.dayTimeDurationsToSeconds)((0,h.defaultedDayTimeDurationRepresentation)(t.typedValue))))).set([p.TypeURL.XSD_TIME,p.TypeURL.XSD_TIME],(({defaultTimeZone:e})=>([t,r])=>(0,b.bool)((0,h.toUTCDate)((0,h.defaultedDateTimeRepresentation)(t.typedValue),e).getTime()===(0,h.toUTCDate)((0,h.defaultedDateTimeRepresentation)(r.typedValue),e).getTime()))).collect()},P={arity:2,overloads:(0,b.declare)(d.RegularOperator.NOT_EQUAL).set(["term","term"],(e=>([t,r])=>(0,b.bool)(!_.regularFunctions[d.RegularOperator.EQUAL].apply([t,r],e).typedValue))).collect()},N={arity:2,overloads:(0,b.declare)(d.RegularOperator.LT).numberTest((()=>(e,t)=>e(e,t)=>-1===e.localeCompare(t))).booleanTest((()=>(e,t)=>e([e,t])=>(0,b.bool)(-1===(0,y.orderTypes)(e.toRDF(),t.toRDF(),!0))),!1).dateTimeTest((({defaultTimeZone:e})=>(t,r)=>(0,h.toUTCDate)(t,e).getTime()<(0,h.toUTCDate)(r,e).getTime())).copy({from:[p.TypeURL.XSD_DATE_TIME,p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_DATE,p.TypeURL.XSD_DATE]}).set([p.TypeURL.XSD_YEAR_MONTH_DURATION,p.TypeURL.XSD_YEAR_MONTH_DURATION],(()=>([e,t])=>(0,b.bool)((0,h.yearMonthDurationsToMonths)((0,h.defaultedYearMonthDurationRepresentation)(e.typedValue))<(0,h.yearMonthDurationsToMonths)((0,h.defaultedYearMonthDurationRepresentation)(t.typedValue))))).set([p.TypeURL.XSD_DAY_TIME_DURATION,p.TypeURL.XSD_DAY_TIME_DURATION],(()=>([e,t])=>(0,b.bool)((0,h.dayTimeDurationsToSeconds)((0,h.defaultedDayTimeDurationRepresentation)(e.typedValue))<(0,h.dayTimeDurationsToSeconds)((0,h.defaultedDayTimeDurationRepresentation)(t.typedValue))))).set([p.TypeURL.XSD_TIME,p.TypeURL.XSD_TIME],(({defaultTimeZone:e})=>([t,r])=>(0,b.bool)((0,h.toUTCDate)((0,h.defaultedDateTimeRepresentation)(t.typedValue),e).getTime()<(0,h.toUTCDate)((0,h.defaultedDateTimeRepresentation)(r.typedValue),e).getTime()))).collect()},D={arity:2,overloads:(0,b.declare)(d.RegularOperator.GT).set(["term","term"],(e=>([t,r])=>_.regularFunctions[d.RegularOperator.LT].apply([r,t],e))).collect()},j={arity:2,overloads:(0,b.declare)(d.RegularOperator.LTE).set(["term","term"],(e=>([t,r])=>(0,b.bool)(_.regularFunctions[d.RegularOperator.LT].apply([t,r],e).typedValue||_.regularFunctions[d.RegularOperator.EQUAL].apply([t,r],e).typedValue))).collect()},C={arity:2,overloads:(0,b.declare)(d.RegularOperator.GTE).set(["term","term"],(e=>([t,r])=>_.regularFunctions[d.RegularOperator.LTE].apply([r,t],e))).collect()},M={arity:1,overloads:(0,b.declare)(d.RegularOperator.IS_IRI).onTerm1((()=>e=>(0,b.bool)("namedNode"===e.termType))).collect()},L={arity:1,overloads:(0,b.declare)(d.RegularOperator.IS_BLANK).onTerm1((()=>e=>(0,b.bool)("blankNode"===e.termType))).collect()},k={arity:1,overloads:(0,b.declare)(d.RegularOperator.IS_LITERAL).onTerm1((()=>e=>(0,b.bool)("literal"===e.termType))).collect()},F={arity:1,overloads:(0,b.declare)(d.RegularOperator.IS_NUMERIC).onNumeric1((()=>()=>(0,b.bool)(!0))).onTerm1((()=>()=>(0,b.bool)(!1))).collect()},B={arity:1,overloads:(0,b.declare)(d.RegularOperator.STR).onTerm1((()=>e=>(0,b.string)(e.str()))).collect()},U={arity:1,overloads:(0,b.declare)(d.RegularOperator.LANG).onLiteral1((()=>e=>(0,b.string)(e.language??""))).collect()},q={arity:1,overloads:(0,b.declare)(d.RegularOperator.DATATYPE).onLiteral1((()=>e=>new u.NamedNode(e.dataType))).collect()},V={arity:1,overloads:(0,b.declare)(d.RegularOperator.IRI).set(["namedNode"],(e=>t=>{const r=t[0],n=(0,o.resolve)(r.str(),e.baseIRI??"");return new u.NamedNode(n)})).onString1((e=>t=>{const r=(0,o.resolve)(t.str(),e.baseIRI??"");return new u.NamedNode(r)})).collect()},Q={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRDT).set([p.TypeURL.XSD_STRING,"namedNode"],(({superTypeProvider:e})=>([t,r])=>{const n=w.literal(t.typedValue,w.namedNode(r.value));return new l.TermTransformer(e).transformLiteral(n)})).collect()},$={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRLANG).onBinaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>new u.LangStringLiteral(e,t.toLowerCase()))).collect()},H={arity:0,overloads:(0,b.declare)(d.RegularOperator.UUID).set([],(()=>()=>new u.NamedNode(`urn:uuid:${c.v4()}`))).collect()},G={arity:0,overloads:(0,b.declare)(d.RegularOperator.STRUUID).set([],(()=>()=>(0,b.string)(c.v4()))).collect()},z={arity:1,overloads:(0,b.declare)(d.RegularOperator.STRLEN).onStringly1((()=>e=>(0,b.integer)([...e.typedValue].length))).collect()},K={arity:[2,3],overloads:(0,b.declare)(d.RegularOperator.SUBSTR).onBinaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_INTEGER],(()=>(e,t)=>(0,b.string)([...e].slice(t-1).join("")))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_INTEGER],(()=>(e,t)=>{const r=[...e.typedValue].slice(t.typedValue-1).join("");return(0,b.langString)(r,e.language)})).onTernaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_INTEGER,p.TypeURL.XSD_INTEGER],(()=>(e,t,r)=>(0,b.string)([...e].slice(t-1,r+t-1).join("")))).onTernary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_INTEGER,p.TypeURL.XSD_INTEGER],(()=>(e,t,r)=>{const n=[...e.typedValue].slice(t.typedValue-1,r.typedValue+t.typedValue-1).join("");return(0,b.langString)(n,e.language)})).collect()},X={arity:1,overloads:(0,b.declare)(d.RegularOperator.UCASE).onString1Typed((()=>e=>(0,b.string)(e.toUpperCase()))).onLangString1((()=>e=>(0,b.langString)(e.typedValue.toUpperCase(),e.language))).collect()},J={arity:1,overloads:(0,b.declare)(d.RegularOperator.LCASE).onString1Typed((()=>e=>(0,b.string)(e.toLowerCase()))).onLangString1((()=>e=>(0,b.langString)(e.typedValue.toLowerCase(),e.language))).collect()},W={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRSTARTS).onBinaryTyped([p.TypeAlias.SPARQL_STRINGLY,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.bool)(e.startsWith(t)))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>(e,t)=>{if(e.language!==t.language)throw new f.IncompatibleLanguageOperation(e,t);return(0,b.bool)(e.typedValue.startsWith(t.typedValue))})).collect()},Y={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRENDS).onBinaryTyped([p.TypeAlias.SPARQL_STRINGLY,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.bool)(e.endsWith(t)))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>(e,t)=>{if(e.language!==t.language)throw new f.IncompatibleLanguageOperation(e,t);return(0,b.bool)(e.typedValue.endsWith(t.typedValue))})).collect()},Z={arity:2,overloads:(0,b.declare)(d.RegularOperator.CONTAINS).onBinaryTyped([p.TypeAlias.SPARQL_STRINGLY,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.bool)(e.includes(t)))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>(e,t)=>{if(e.language!==t.language)throw new f.IncompatibleLanguageOperation(e,t);return(0,b.bool)(e.typedValue.includes(t.typedValue))})).collect()},ee={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRBEFORE).onBinaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.string)(e.slice(0,Math.max(0,e.indexOf(t)))))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>{const[r,n]=[e.typedValue,t.typedValue],i=e.typedValue.slice(0,Math.max(0,r.indexOf(n)));return i||!n?(0,b.langString)(i,e.language):(0,b.string)(i)})).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>(e,t)=>{if(e.language!==t.language)throw new f.IncompatibleLanguageOperation(e,t);const[r,n]=[e.typedValue,t.typedValue],i=e.typedValue.slice(0,Math.max(0,r.indexOf(n)));return i||!n?(0,b.langString)(i,e.language):(0,b.string)(i)})).collect()},te={arity:2,overloads:(0,b.declare)(d.RegularOperator.STRAFTER).onBinaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.string)(e.slice(e.indexOf(t)).slice(t.length)))).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>{const[r,n]=[e.typedValue,t.typedValue],i=r.slice(r.indexOf(n)).slice(n.length);return i||!n?(0,b.langString)(i,e.language):(0,b.string)(i)})).onBinary([p.TypeURL.RDF_LANG_STRING,p.TypeURL.RDF_LANG_STRING],(()=>(e,t)=>{if(e.language!==t.language)throw new f.IncompatibleLanguageOperation(e,t);const[r,n]=[e.typedValue,t.typedValue],i=r.slice(r.indexOf(n)).slice(n.length);return i||!n?(0,b.langString)(i,e.language):(0,b.string)(i)})).collect()},re={arity:1,overloads:(0,b.declare)(d.RegularOperator.ENCODE_FOR_URI).onStringly1Typed((()=>e=>(0,b.string)(encodeURI(e)))).collect()},ne={arity:2,overloads:(0,b.declare)(d.RegularOperator.LANG_MATCHES).onBinaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t)=>(0,b.bool)(v.langMatches(e,t)))).collect()},ie={arity:[2,3],overloads:(0,b.declare)(d.RegularOperator.REGEX).onBinaryTyped([p.TypeAlias.SPARQL_STRINGLY,p.TypeURL.XSD_STRING],(function(){return(e,t)=>(0,b.bool)(v.matches(e,t))})).onTernaryTyped([p.TypeAlias.SPARQL_STRINGLY,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(function(){return(e,t,r)=>(0,b.bool)(v.matches(e,t,r))})).collect()},ae={arity:[3,4],overloads:(0,b.declare)(d.RegularOperator.REPLACE).onTernaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t,r)=>(0,b.string)(v.replace(e,t,r)))).set([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>([e,t,r])=>{const n=v.replace(e.typedValue,t.typedValue,r.typedValue);return(0,b.langString)(n,e.language)})).onQuaternaryTyped([p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>(e,t,r,n)=>(0,b.string)(v.replace(e,t,r,n)))).set([p.TypeURL.RDF_LANG_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING,p.TypeURL.XSD_STRING],(()=>([e,t,r,n])=>{const i=v.replace(e.typedValue,t.typedValue,r.typedValue,n.typedValue);return(0,b.langString)(i,e.language)})).collect()},oe={arity:1,overloads:(0,b.declare)(d.RegularOperator.ABS).numericConverter((()=>e=>Math.abs(e))).collect()},se={arity:1,overloads:(0,b.declare)(d.RegularOperator.ROUND).numericConverter((()=>e=>Math.round(e))).collect()},ce={arity:1,overloads:(0,b.declare)(d.RegularOperator.CEIL).numericConverter((()=>e=>Math.ceil(e))).collect()},ue={arity:1,overloads:(0,b.declare)(d.RegularOperator.FLOOR).numericConverter((()=>e=>Math.floor(e))).collect()},le={arity:0,overloads:(0,b.declare)(d.RegularOperator.RAND).set([],(()=>()=>(0,b.double)(Math.random()))).collect()},de={arity:0,overloads:(0,b.declare)(d.RegularOperator.NOW).set([],(e=>()=>new u.DateTimeLiteral((0,h.toDateTimeRepresentation)({date:e.now,timeZone:e.defaultTimeZone})))).collect()},pe={arity:1,overloads:(0,b.declare)(d.RegularOperator.YEAR).onDateTime1((()=>e=>(0,b.integer)(e.typedValue.year))).set([p.TypeURL.XSD_DATE],(()=>([e])=>(0,b.integer)(e.typedValue.year))).collect()},he={arity:1,overloads:(0,b.declare)(d.RegularOperator.MONTH).onDateTime1((()=>e=>(0,b.integer)(e.typedValue.month))).set([p.TypeURL.XSD_DATE],(()=>([e])=>(0,b.integer)(e.typedValue.month))).collect()},fe={arity:1,overloads:(0,b.declare)(d.RegularOperator.DAY).onDateTime1((()=>e=>(0,b.integer)(e.typedValue.day))).set([p.TypeURL.XSD_DATE],(()=>([e])=>(0,b.integer)(e.typedValue.day))).collect()},ye={arity:1,overloads:(0,b.declare)(d.RegularOperator.HOURS).onDateTime1((()=>e=>(0,b.integer)(e.typedValue.hours))).set([p.TypeURL.XSD_TIME],(()=>([e])=>(0,b.integer)(e.typedValue.hours))).collect()},ge={arity:1,overloads:(0,b.declare)(d.RegularOperator.MINUTES).onDateTime1((()=>e=>(0,b.integer)(e.typedValue.minutes))).set([p.TypeURL.XSD_TIME],(()=>([e])=>(0,b.integer)(e.typedValue.minutes))).collect()},me={arity:1,overloads:(0,b.declare)(d.RegularOperator.SECONDS).onDateTime1((()=>e=>(0,b.decimal)(e.typedValue.seconds))).set([p.TypeURL.XSD_TIME],(()=>([e])=>(0,b.integer)(e.typedValue.seconds))).collect()},be={arity:1,overloads:(0,b.declare)(d.RegularOperator.TIMEZONE).onDateTime1((()=>e=>{const t={hours:e.typedValue.zoneHours,minutes:e.typedValue.zoneMinutes};if(void 0===t.hours&&void 0===t.minutes)throw new f.InvalidTimezoneCall(e.str());return new u.DayTimeDurationLiteral(t)})).copy({from:[p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_DATE]}).copy({from:[p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_TIME]}).collect()},ve={arity:1,overloads:(0,b.declare)(d.RegularOperator.TZ).onDateTime1((()=>e=>(0,b.string)((0,h.extractRawTimeZone)(e.str())))).copy({from:[p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_DATE]}).copy({from:[p.TypeURL.XSD_DATE_TIME],to:[p.TypeURL.XSD_TIME]}).collect()},_e={arity:1,overloads:(0,b.declare)(d.RegularOperator.MD5).onString1Typed((()=>e=>(0,b.string)((0,s.hash)(e)))).collect()},we={arity:1,overloads:(0,b.declare)(d.RegularOperator.SHA1).onString1Typed((()=>e=>(0,b.string)((0,i.sha1)().update(e).digest("hex")))).collect()},Te={arity:1,overloads:(0,b.declare)(d.RegularOperator.SHA256).onString1Typed((()=>e=>(0,b.string)((0,i.sha256)().update(e).digest("hex")))).collect()},Se={arity:1,overloads:(0,b.declare)(d.RegularOperator.SHA384).onString1Typed((()=>e=>(0,b.string)((0,i.sha384)().update(e).digest("hex")))).collect()},Oe={arity:1,overloads:(0,b.declare)(d.RegularOperator.SHA512).onString1Typed((()=>e=>(0,b.string)((0,i.sha512)().update(e).digest("hex")))).collect()},Ee={arity:3,overloads:(0,b.declare)(d.RegularOperator.TRIPLE).onTerm3((e=>(...t)=>new u.Quad(w.quad(t[0].toRDF(),t[1].toRDF(),t[2].toRDF()),e.superTypeProvider))).collect()},xe={arity:1,overloads:(0,b.declare)(d.RegularOperator.SUBJECT).onQuad1((()=>e=>e.subject)).collect()},Ae={arity:1,overloads:(0,b.declare)(d.RegularOperator.PREDICATE).onQuad1((()=>e=>e.predicate)).collect()},Re={arity:1,overloads:(0,b.declare)(d.RegularOperator.OBJECT).onQuad1((()=>e=>e.object)).collect()},Ie={arity:1,overloads:(0,b.declare)(d.RegularOperator.IS_TRIPLE).onTerm1((()=>e=>(0,b.bool)("quad"===e.termType))).collect()};t.definitions={"!":T,uplus:S,uminus:O,"*":E,"/":x,"+":A,"-":R,"=":I,"!=":P,"<":N,">":D,"<=":j,">=":C,isiri:M,isuri:M,isblank:L,isliteral:k,isnumeric:F,str:B,lang:U,datatype:q,iri:V,uri:V,strdt:Q,strlang:$,uuid:H,struuid:G,strlen:z,substr:K,ucase:X,lcase:J,strstarts:W,strends:Y,contains:Z,strbefore:ee,strafter:te,encode_for_uri:re,langmatches:ne,regex:ie,replace:ae,abs:oe,round:se,ceil:ce,floor:ue,rand:le,now:de,year:pe,month:he,day:fe,hours:ye,minutes:ge,seconds:me,timezone:be,tz:ve,md5:_e,sha1:we,sha256:Te,sha384:Se,sha512:Oe,triple:Ee,subject:xe,predicate:Ae,object:Re,istriple:Ie}},96443:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.specialDefinitions=void 0;const n=r(84596),i=r(11269),a=r(14624),o=r(82867),s=r(63606),c=r(42711),u={arity:1,applyAsync:async({args:e,mapping:t})=>l({args:e,mapping:t}),applySynchronously:({args:e,mapping:t})=>l({args:e,mapping:t})};function l({args:e,mapping:t}){const r=e[0];if(r.expressionType!==i.ExpressionType.Variable)throw new o.InvalidArgumentTypes(e,a.SpecialOperator.BOUND);const n=t.has((0,s.expressionToVar)(r));return(0,s.bool)(n)}const d={arity:3,async applyAsync({args:e,mapping:t,evaluate:r}){const n=await r(e[0],t);return r(n.coerceEBV()?e[1]:e[2],t)},applySynchronously({args:e,mapping:t,evaluate:r}){const n=r(e[0],t);return r(n.coerceEBV()?e[1]:e[2],t)}},p={arity:Number.POSITIVE_INFINITY,async applyAsync({args:e,mapping:t,evaluate:r}){const n=[];for(const i of e)try{return await r(i,t)}catch(e){n.push(e)}throw new o.CoalesceError(n)},applySynchronously({args:e,mapping:t,evaluate:r}){const n=[];for(const i of e)try{return r(i,t)}catch(e){n.push(e)}throw new o.CoalesceError(n)}},h={arity:2,async applyAsync({args:e,mapping:t,evaluate:r}){const[n,i]=e;try{if((await r(n,t)).coerceEBV())return(0,s.bool)(!0);const e=(await r(i,t)).coerceEBV();return(0,s.bool)(e)}catch(e){if(!(await r(i,t)).coerceEBV())throw e;return(0,s.bool)(!0)}},applySynchronously({args:e,mapping:t,evaluate:r}){const[n,i]=e;try{if(r(n,t).coerceEBV())return(0,s.bool)(!0);const e=r(i,t).coerceEBV();return(0,s.bool)(e)}catch(e){if(!r(i,t).coerceEBV())throw e;return(0,s.bool)(!0)}}},f={arity:2,async applyAsync({args:e,mapping:t,evaluate:r}){const[n,i]=e;try{if(!(await r(n,t)).coerceEBV())return(0,s.bool)(!1);const e=(await r(i,t)).coerceEBV();return(0,s.bool)(e)}catch(e){if((await r(i,t)).coerceEBV())throw e;return(0,s.bool)(!1)}},applySynchronously({args:e,mapping:t,evaluate:r}){const[n,i]=e;try{if(!r(n,t).coerceEBV())return(0,s.bool)(!1);const e=r(i,t).coerceEBV();return(0,s.bool)(e)}catch(e){if(r(i,t).coerceEBV())throw e;return(0,s.bool)(!1)}}},y={arity:2,async applyAsync({args:e,mapping:t,evaluate:r}){const[n,i]=e.map((e=>r(e,t))),[a,o]=await Promise.all([n,i]);return(0,s.bool)(a.toRDF().equals(o.toRDF()))},applySynchronously({args:e,mapping:t,evaluate:r}){const[n,i]=e.map((e=>r(e,t)));return(0,s.bool)(n.toRDF().equals(i.toRDF()))}},g={arity:Number.POSITIVE_INFINITY,checkArity:e=>e.length>0,async applyAsync(e){const{args:t,mapping:r,evaluate:n}=e,[i,...a]=t;return m(await n(i,r),{...e,args:a},[])},applySynchronously(e){const{args:t,mapping:r,evaluate:n}=e,[i,...a]=t;return b(n(i,r),{...e,args:a},[])}};async function m(e,t,r){const{args:n,mapping:i,evaluate:u}=t;if(0===n.length)return r.every((e=>!e))?(0,s.bool)(!1):Promise.reject(new o.InError(r));try{const o=n.shift(),l=await u(o,i);return c.regularFunctions[a.RegularOperator.EQUAL].apply([e,l],t).typedValue?(0,s.bool)(!0):m(e,t,[...r,!1])}catch(n){return m(e,t,[...r,n])}}function b(e,t,r){const{args:n,mapping:i,evaluate:u}=t;if(0===n.length){if(r.every((e=>!e)))return(0,s.bool)(!1);throw new o.InError(r)}try{const o=u(n.shift(),i);return c.regularFunctions[a.RegularOperator.EQUAL].apply([e,o],t).typedValue?(0,s.bool)(!0):b(e,t,[...r,!1])}catch(n){return b(e,t,[...r,n])}}const v={arity:Number.POSITIVE_INFINITY,checkArity:e=>e.length>0,async applyAsync(e){const t=c.specialFunctions[a.SpecialOperator.IN],r=await t.applyAsync(e);return(0,s.bool)(!r.typedValue)},applySynchronously(e){const t=c.specialFunctions[a.SpecialOperator.IN].applySynchronously(e);return(0,s.bool)(!t.typedValue)}},_=(0,s.declare)(a.SpecialOperator.CONCAT).onStringly1((()=>e=>e)).collect(),w={arity:Number.POSITIVE_INFINITY,async applyAsync(e){const{args:t,mapping:r,evaluate:n,functionArgumentsCache:i,superTypeProvider:c}=e,u=t.map((async e=>n(e,r))).map((async r=>{const n=_.search([await r],c,i);if(!n)throw new o.InvalidArgumentTypes(t,a.SpecialOperator.CONCAT);return n(e)([await r])})),l=await Promise.all(u),d=l.map((e=>e.typedValue)).join(""),p=T(l)?l[0].language:void 0;return p?(0,s.langString)(d,p):(0,s.string)(d)},applySynchronously(e){const{args:t,mapping:r,evaluate:n,superTypeProvider:i,functionArgumentsCache:c}=e,u=t.map((e=>n(e,r))).map((r=>{const n=_.search([r],i,c);if(!n)throw new o.InvalidArgumentTypes(t,a.SpecialOperator.CONCAT);return n(e)([r])})),l=u.map((e=>e.typedValue)).join(""),d=T(u)?u[0].language:void 0;return d?(0,s.langString)(l,d):(0,s.string)(l)}};function T(e){return e.length>0&&e.every((t=>t.language===e[0].language))}const S=(0,s.declare)(a.SpecialOperator.BNODE).onString1((()=>e=>e)).collect(),O={arity:Number.POSITIVE_INFINITY,checkArity:e=>0===e.length||1===e.length,async applyAsync(e){const{args:t,mapping:r,evaluate:n,superTypeProvider:s,functionArgumentsCache:c}=e,u=1===t.length?await n(t[0],r):void 0;let l;if(u){const r=S.search([u],s,c);if(!r)throw new o.InvalidArgumentTypes(t,a.SpecialOperator.BNODE);l=r(e)([u]).str()}if(e.bnode){const t=await e.bnode(l);return new i.BlankNode(t)}return E(l)},applySynchronously(e){const{args:t,mapping:r,evaluate:n,superTypeProvider:s,functionArgumentsCache:c}=e,u=1===t.length?n(t[0],r):void 0;let l;if(u){const r=S.search([u],s,c);if(!r)throw new o.InvalidArgumentTypes(t,a.SpecialOperator.BNODE);l=r(e)([u]).str()}if(e.bnode){const t=e.bnode(l);return new i.BlankNode(t)}return E(l)}};function E(e){return new i.BlankNode(e??n.v4())}t.specialDefinitions={bound:u,if:d,coalesce:p,"&&":f,"||":h,sameterm:y,in:g,notin:v,concat:w,bnode:O}},29791:(e,t)=>{"use strict";function r(e){return"*"===e}function n(e,t){return new RegExp(`/${e}/`,"iu").test(`/${t}/`)}Object.defineProperty(t,"__esModule",{value:!0}),t.langMatches=t.replace=t.matches=void 0,t.matches=function(e,t,r){return new RegExp(t,r).test(e)},t.replace=function(e,t,r,n){let i=new RegExp(t,n);return i.global||(i=new RegExp(t,`${n??""}g`)),e.replace(i,r)},t.langMatches=function(e,t){const i=e.split("-"),a=t.split("-");if(!n(a[0],i[0])&&!r(i[0]))return!1;let o=1,s=1;for(;s[e,new a.RegularFunction(e,t)]))),t.specialFunctions=Object.fromEntries(Object.entries(c.specialDefinitions).map((([e,t])=>[e,new a.SpecialFunction(e,t)]))),t.namedFunctions=Object.fromEntries(Object.entries(o.namedDefinitions).map((([e,t])=>[e,new a.NamedFunction(e,t)])));var u=r(33357);Object.defineProperty(t,"OverloadTree",{enumerable:!0,get:function(){return u.OverloadTree}})},61621:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncAggregateEvaluator=t.orderTypes=t.isExpressionError=t.ExpressionError=t.AggregateEvaluator=t.SyncEvaluator=t.AsyncEvaluator=void 0;var n=r(98375);Object.defineProperty(t,"AsyncEvaluator",{enumerable:!0,get:function(){return n.AsyncEvaluator}});var i=r(86588);Object.defineProperty(t,"SyncEvaluator",{enumerable:!0,get:function(){return i.SyncEvaluator}});var a=r(19030);Object.defineProperty(t,"AggregateEvaluator",{enumerable:!0,get:function(){return a.AggregateEvaluator}});var o=r(82867);Object.defineProperty(t,"ExpressionError",{enumerable:!0,get:function(){return o.ExpressionError}}),Object.defineProperty(t,"isExpressionError",{enumerable:!0,get:function(){return o.isExpressionError}});var s=r(20236);Object.defineProperty(t,"orderTypes",{enumerable:!0,get:function(){return s.orderTypes}});var c=r(74448);Object.defineProperty(t,"AsyncAggregateEvaluator",{enumerable:!0,get:function(){return c.AsyncAggregateEvaluator}})},69119:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AlgebraTransformer=void 0;const n=r(31578),i=r(11269),a=r(42711),o=r(14624),s=r(82867),c=r(82867),u=r(50363);class l extends u.TermTransformer{constructor(e){super(e.superTypeProvider),this.algebraConfig=e,this.creatorConfig={type:e.type,creator:e.creator}}transformAlgebra(e){const t=n.Algebra.expressionTypes;switch(e.expressionType){case t.TERM:return this.transformTerm(e);case t.OPERATOR:return this.transformOperator(e);case t.NAMED:return this.transformNamed(e);case t.EXISTENCE:return l.transformExistence(e);case t.AGGREGATE:return l.transformAggregate(e);case t.WILDCARD:return l.transformWildcard(e)}}static transformWildcard(e){return new i.NamedNode(e.wildcard.value)}transformOperator(e){const t=e.operator.toLowerCase();if(o.SpecialOperators.has(t)){const r=t,n=e.args.map((e=>this.transformAlgebra(e))),o=a.specialFunctions[r];if(!o.checkArity(n))throw new s.InvalidArity(n,r);return new i.SpecialOperator(n,o.applyAsync,o.applySynchronously)}if(!o.Operators.has(t))throw new s.UnknownOperator(e.operator);const r=t,n=e.args.map((e=>this.transformAlgebra(e))),c=a.regularFunctions[r];if(!l.hasCorrectArity(n,c.arity))throw new s.InvalidArity(n,r);return new i.Operator(n,(e=>c.apply(e,this.algebraConfig)))}wrapSyncFunction(e,t){return r=>{try{const t=e(r.map((e=>e.toRDF())));return this.transformRDFTermUnsafe(t)}catch(e){throw new c.ExtensionFunctionError(t,e)}}}wrapAsyncFunction(e,t){return async r=>{try{const t=await e(r.map((e=>e.toRDF())));return this.transformRDFTermUnsafe(t)}catch(e){throw new c.ExtensionFunctionError(t,e)}}}transformNamed(e){const t=e.name.value,r=e.args.map((e=>this.transformAlgebra(e)));if(o.NamedOperators.has(t)){const t=e.name.value,n=a.namedFunctions[t];return new i.Named(e.name,r,(e=>n.apply(e,this.algebraConfig)))}if("sync"===this.creatorConfig.type){const t=this.creatorConfig.creator(e.name);if(t){const n=this.wrapSyncFunction(t,e.name.value);return new i.SyncExtension(e.name,r,n)}}else{const t=this.creatorConfig.creator(e.name);if(t){const n=this.wrapAsyncFunction(t,e.name.value);return new i.AsyncExtension(e.name,r,n)}}throw new s.UnknownNamedOperator(e.name.value)}static hasCorrectArity(e,t){return Array.isArray(t)?t.includes(e.length):e.length===t}static transformAggregate(e){const t=e.aggregator;return new i.Aggregate(t,e)}static transformExistence(e){return new i.Existence(e)}}t.AlgebraTransformer=l},50363:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermTransformer=void 0;const n=r(22112),i=r(31578),a=r(11269),o=r(14624),s=r(82867),c=r(82867),u=r(17590),l=r(17590),d=r(46157);t.TermTransformer=class{constructor(e){this.superTypeProvider=e}transformRDFTermUnsafe(e){return this.transformTerm({term:e,type:i.Algebra.types.EXPRESSION,expressionType:i.Algebra.expressionTypes.TERM})}transformTerm(e){if(!e.term)throw new s.InvalidExpression(e);switch(e.term.termType){case"Variable":return new a.Variable(n.termToString(e.term));case"Literal":return this.transformLiteral(e.term);case"NamedNode":return new a.NamedNode(e.term.value);case"BlankNode":return new a.BlankNode(e.term.value);case"Quad":return new a.Quad(e.term,this.superTypeProvider);default:throw new s.InvalidTermType(e)}}transformLiteral(e){if(!e.datatype||[null,void 0,""].includes(e.datatype.value))return e.language?new a.LangStringLiteral(e.value,e.language):new a.StringLiteral(e.value);const t=e.datatype.value,r=(0,d.getSuperTypeDict)(t,this.superTypeProvider);try{if(o.TypeURL.XSD_STRING in r)return new a.StringLiteral(e.value,t);if(o.TypeURL.RDF_LANG_STRING in r)return new a.LangStringLiteral(e.value,e.language);if(o.TypeURL.XSD_YEAR_MONTH_DURATION in r)return new a.YearMonthDurationLiteral((0,u.parseYearMonthDuration)(e.value),e.value,t);if(o.TypeURL.XSD_DAY_TIME_DURATION in r)return new a.DayTimeDurationLiteral((0,u.parseDayTimeDuration)(e.value),e.value,t);if(o.TypeURL.XSD_DURATION in r)return new a.DurationLiteral((0,u.parseDuration)(e.value),e.value,t);if(o.TypeURL.XSD_DATE_TIME in r){const r=new Date(e.value);return Number.isNaN(r.getTime())?new a.NonLexicalLiteral(void 0,t,this.superTypeProvider,e.value):new a.DateTimeLiteral((0,u.parseDateTime)(e.value),e.value,t)}if(o.TypeURL.XSD_DATE in r)return new a.DateLiteral((0,u.parseDate)(e.value),e.value,t);if(o.TypeURL.XSD_TIME in r)return new a.TimeLiteral((0,u.parseTime)(e.value),e.value,t);if(o.TypeURL.XSD_BOOLEAN in r)return"true"!==e.value&&"false"!==e.value&&"1"!==e.value&&"0"!==e.value?new a.NonLexicalLiteral(void 0,t,this.superTypeProvider,e.value):new a.BooleanLiteral("true"===e.value||"1"===e.value,e.value);if(o.TypeURL.XSD_DECIMAL in r){const n=l.parseXSDDecimal(e.value);return void 0===n?new a.NonLexicalLiteral(void 0,t,this.superTypeProvider,e.value):o.TypeURL.XSD_INTEGER in r?new a.IntegerLiteral(n,t,e.value):new a.DecimalLiteral(n,t,e.value)}const n=o.TypeURL.XSD_FLOAT in r,i=o.TypeURL.XSD_DOUBLE in r;if(n||i){const r=l.parseXSDFloat(e.value);return void 0===r?new a.NonLexicalLiteral(void 0,t,this.superTypeProvider,e.value):n?new a.FloatLiteral(r,t,e.value):new a.DoubleLiteral(r,t,e.value)}return new a.Literal(e.value,t,e.value)}catch(r){if(r instanceof Error&&(0,c.isExpressionError)(r))return new a.NonLexicalLiteral(void 0,t,this.superTypeProvider,e.value);throw r}}}},14624:(e,t)=>{"use strict";var r,n,i,a,o;Object.defineProperty(t,"__esModule",{value:!0}),t.NamedOperators=t.SetFunctions=t.SetFunction=t.Operators=t.SpecialOperators=t.RegularOperators=t.SpecialOperator=t.RegularOperator=t.TypeURL=t.TypeAlias=void 0,function(e){e.SPARQL_NUMERIC="SPARQL_NUMERIC",e.SPARQL_STRINGLY="SPARQL_STRINGLY"}(r||(t.TypeAlias=r={})),function(e){e.XSD_ANY_URI="http://www.w3.org/2001/XMLSchema#anyURI",e.XSD_STRING="http://www.w3.org/2001/XMLSchema#string",e.RDF_LANG_STRING="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString",e.XSD_BOOLEAN="http://www.w3.org/2001/XMLSchema#boolean",e.XSD_DATE_TIME="http://www.w3.org/2001/XMLSchema#dateTime",e.XSD_DATE_TIME_STAMP="http://www.w3.org/2001/XMLSchema#dateTimeStamp",e.XSD_DATE="http://www.w3.org/2001/XMLSchema#date",e.XSD_G_MONTH="http://www.w3.org/2001/XMLSchema#gMonth",e.XSD_G_MONTHDAY="http://www.w3.org/2001/XMLSchema#gMonthDay",e.XSD_G_YEAR="http://www.w3.org/2001/XMLSchema#gYear",e.XSD_G_YEAR_MONTH="http://www.w3.org/2001/XMLSchema#gYearMonth",e.XSD_TIME="http://www.w3.org/2001/XMLSchema#time",e.XSD_G_DAY="http://www.w3.org/2001/XMLSchema#gDay",e.XSD_DECIMAL="http://www.w3.org/2001/XMLSchema#decimal",e.XSD_FLOAT="http://www.w3.org/2001/XMLSchema#float",e.XSD_DOUBLE="http://www.w3.org/2001/XMLSchema#double",e.XSD_INTEGER="http://www.w3.org/2001/XMLSchema#integer",e.XSD_NON_POSITIVE_INTEGER="http://www.w3.org/2001/XMLSchema#nonPositiveInteger",e.XSD_NEGATIVE_INTEGER="http://www.w3.org/2001/XMLSchema#negativeInteger",e.XSD_LONG="http://www.w3.org/2001/XMLSchema#long",e.XSD_INT="http://www.w3.org/2001/XMLSchema#int",e.XSD_SHORT="http://www.w3.org/2001/XMLSchema#short",e.XSD_BYTE="http://www.w3.org/2001/XMLSchema#byte",e.XSD_NON_NEGATIVE_INTEGER="http://www.w3.org/2001/XMLSchema#nonNegativeInteger",e.XSD_POSITIVE_INTEGER="http://www.w3.org/2001/XMLSchema#positiveInteger",e.XSD_UNSIGNED_LONG="http://www.w3.org/2001/XMLSchema#unsignedLong",e.XSD_UNSIGNED_INT="http://www.w3.org/2001/XMLSchema#unsignedInt",e.XSD_UNSIGNED_SHORT="http://www.w3.org/2001/XMLSchema#unsignedShort",e.XSD_UNSIGNED_BYTE="http://www.w3.org/2001/XMLSchema#unsignedByte",e.XSD_NORMALIZED_STRING="http://www.w3.org/2001/XMLSchema#normalizedString",e.XSD_TOKEN="http://www.w3.org/2001/XMLSchema#token",e.XSD_LANGUAGE="http://www.w3.org/2001/XMLSchema#language",e.XSD_NM_TOKEN="http://www.w3.org/2001/XMLSchema#NMTOKEN",e.XSD_NAME="http://www.w3.org/2001/XMLSchema#name",e.XSD_NC_NAME="http://www.w3.org/2001/XMLSchema#NCName",e.XSD_ENTITY="http://www.w3.org/2001/XMLSchema#ENTITY",e.XSD_ID="http://www.w3.org/2001/XMLSchema#ID",e.XSD_ID_REF="http://www.w3.org/2001/XMLSchema#IDREF",e.XSD_DURATION="http://www.w3.org/2001/XMLSchema#duration",e.XSD_YEAR_MONTH_DURATION="http://www.w3.org/2001/XMLSchema#yearMonthDuration",e.XSD_DAY_TIME_DURATION="http://www.w3.org/2001/XMLSchema#dayTimeDuration"}(n||(t.TypeURL=n={})),function(e){e.NOT="!",e.UMINUS="uminus",e.UPLUS="uplus",e.EQUAL="=",e.NOT_EQUAL="!=",e.LT="<",e.GT=">",e.LTE="<=",e.GTE=">=",e.MULTIPLICATION="*",e.DIVISION="/",e.ADDITION="+",e.SUBTRACTION="-",e.IS_IRI="isiri",e.IS_URI="isuri",e.IS_BLANK="isblank",e.IS_LITERAL="isliteral",e.IS_NUMERIC="isnumeric",e.STR="str",e.LANG="lang",e.DATATYPE="datatype",e.IRI="iri",e.URI="uri",e.STRDT="strdt",e.STRLANG="strlang",e.UUID="uuid",e.STRUUID="struuid",e.STRLEN="strlen",e.SUBSTR="substr",e.UCASE="ucase",e.LCASE="lcase",e.STRSTARTS="strstarts",e.STRENDS="strends",e.CONTAINS="contains",e.STRBEFORE="strbefore",e.STRAFTER="strafter",e.ENCODE_FOR_URI="encode_for_uri",e.LANG_MATCHES="langmatches",e.REGEX="regex",e.REPLACE="replace",e.ABS="abs",e.ROUND="round",e.CEIL="ceil",e.FLOOR="floor",e.RAND="rand",e.NOW="now",e.YEAR="year",e.MONTH="month",e.DAY="day",e.HOURS="hours",e.MINUTES="minutes",e.SECONDS="seconds",e.TIMEZONE="timezone",e.TZ="tz",e.MD5="md5",e.SHA1="sha1",e.SHA256="sha256",e.SHA384="sha384",e.SHA512="sha512",e.TRIPLE="triple",e.SUBJECT="subject",e.PREDICATE="predicate",e.OBJECT="object",e.IS_TRIPLE="istriple"}(i||(t.RegularOperator=i={})),function(e){e.BOUND="bound",e.IF="if",e.COALESCE="coalesce",e.LOGICAL_OR="||",e.LOGICAL_AND="&&",e.SAME_TERM="sameterm",e.IN="in",e.NOT_IN="notin",e.CONCAT="concat",e.BNODE="bnode"}(a||(t.SpecialOperator=a={})),t.RegularOperators=new Set(Object.values(i)),t.SpecialOperators=new Set(Object.values(a)),t.Operators=new Set([...t.RegularOperators,...t.SpecialOperators]),function(e){e.COUNT="count",e.SUM="sum",e.MIN="min",e.MAX="max",e.AVG="avg",e.GROUP_CONCAT="group_concat",e.SAMPLE="sample"}(o||(t.SetFunction=o={})),t.SetFunctions=new Set(Object.values(o)),t.NamedOperators=new Set([n.XSD_STRING,n.XSD_FLOAT,n.XSD_DOUBLE,n.XSD_DECIMAL,n.XSD_INTEGER,n.XSD_DATE_TIME,n.XSD_DATE,n.XSD_BOOLEAN,n.XSD_TIME,n.XSD_DURATION,n.XSD_DAY_TIME_DURATION,n.XSD_YEAR_MONTH_DURATION])},76660:(e,t)=>{"use strict";function r(e){return{day:e.day??0,hours:e.hours??0,minutes:e.minutes??0,seconds:e.seconds??0}}function n(e){return{year:e.year??0,month:e.month??0}}function i(e){return{...r(e),...n(e)}}function a(e){return{...e,day:e.day??1,hours:e.hours??0,month:e.month??1,year:e.year??0,seconds:e.seconds??0,minutes:e.minutes??0}}function o(e){const t=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,Math.trunc(e.seconds),e.seconds%1*1e3);if(e.year>=0&&e.year<100){const e=1900;t.setFullYear(t.getFullYear()-e)}return t}Object.defineProperty(t,"__esModule",{value:!0}),t.extractTimeZone=t.extractRawTimeZone=t.dayTimeDurationsToSeconds=t.yearMonthDurationsToMonths=t.trimToDayTimeDuration=t.trimToYearMonthDuration=t.toUTCDate=t.toJSDate=t.negateDuration=t.toDateTimeRepresentation=t.defaultedDateTimeRepresentation=t.simplifyDurationRepresentation=t.defaultedDurationRepresentation=t.defaultedYearMonthDurationRepresentation=t.defaultedDayTimeDurationRepresentation=void 0,t.defaultedDayTimeDurationRepresentation=r,t.defaultedYearMonthDurationRepresentation=n,t.defaultedDurationRepresentation=i,t.simplifyDurationRepresentation=function(e){const t=i(e),r={},n=t.year+Math.trunc(t.month/12);n&&(r.year=n,t.month%=12),t.month&&(r.month=t.month);const a=t.day+Math.trunc(t.hours/24)+Math.trunc(t.minutes/1440)+Math.trunc(t.seconds/86400);a&&(r.day=a,t.hours%=24,t.minutes%=1440,t.seconds%=86400);const o=t.hours+Math.trunc(t.minutes/60)+Math.trunc(t.seconds/3600);o&&(r.hours=o,t.minutes%=60,t.seconds%=3600);const s=t.minutes+Math.trunc(t.seconds/60);return s&&(r.minutes=s,t.seconds%=60),t.seconds&&(r.seconds=t.seconds),r},t.defaultedDateTimeRepresentation=a,t.toDateTimeRepresentation=function({date:e,timeZone:t}){return{year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds(),zoneHours:t.zoneHours,zoneMinutes:t.zoneMinutes}},t.negateDuration=function(e){return{year:void 0===e.year?void 0:-1*e.year,month:void 0===e.month?void 0:-1*e.month,day:void 0===e.day?void 0:-1*e.day,hours:void 0===e.hours?void 0:-1*e.hours,minutes:void 0===e.minutes?void 0:-1*e.minutes,seconds:void 0===e.seconds?void 0:-1*e.seconds}},t.toJSDate=o,t.toUTCDate=function(e,t){const r=o(a(e)),n=r.getTimezoneOffset(),i=e.zoneHours??t.zoneHours,s=e.zoneMinutes??t.zoneMinutes;return new Date(r.getTime()-60*(n+60*i+s)*1e3)},t.trimToYearMonthDuration=function(e){return{year:e.year,month:e.month}},t.trimToDayTimeDuration=function(e){return{day:e.day,hours:e.hours,minutes:e.minutes,seconds:e.seconds}},t.yearMonthDurationsToMonths=function(e){return 12*e.year+e.month},t.dayTimeDurationsToSeconds=function(e){return 60*(60*(24*e.day+e.hours)+e.minutes)+e.seconds},t.extractRawTimeZone=function(e){return/(Z|([+-]\d\d:\d\d))?$/u.exec(e)[0]},t.extractTimeZone=function(e){return{zoneHours:e.getTimezoneOffset()/60,zoneMinutes:e.getTimezoneOffset()%60}}},82867:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoExistenceHook=t.NoAggregator=t.ExtensionFunctionError=t.UnknownNamedOperator=t.UnknownOperator=t.InvalidTermType=t.InvalidExpressionType=t.InvalidExpression=t.InvalidArity=t.UnexpectedError=t.ParseError=t.EmptyAggregateError=t.IncompatibleLanguageOperation=t.InvalidTimezoneCall=t.CastError=t.InvalidCompareArgumentTypes=t.InvalidArgumentTypes=t.InError=t.CoalesceError=t.RDFEqualTypeError=t.EBVCoercionError=t.UnboundVariableError=t.InvalidLexicalForm=t.isExpressionError=t.ExpressionError=void 0;class r extends Error{}t.ExpressionError=r,t.isExpressionError=function(e){return e instanceof r},t.InvalidLexicalForm=class extends r{constructor(e){super(`Invalid lexical form '${h(e)}'`),this.arg=e}},t.UnboundVariableError=class extends r{constructor(e,t){super(`Unbound variable '${h(e)}'`),this.variable=e,this.bindings=t}},t.EBVCoercionError=class extends r{constructor(e){super(`Cannot coerce term to EBV '${h(e)}'`),this.arg=e}},t.RDFEqualTypeError=class extends r{constructor(e){super("Equality test for literals with unsupported datatypes"),this.args=e}},t.CoalesceError=class extends r{constructor(e){super("All COALESCE arguments threw errors"),this.errors=e}},t.InError=class extends r{constructor(e){super(`Some argument to IN errorred and none where equal. ${e.map((e=>`(${e.toString()}) `)).join("and ")}`),this.errors=e}},t.InvalidArgumentTypes=class extends r{constructor(e,t){super(`Argument types not valid for operator: '${h(t)}' with '${h(e)}`),this.args=e,this.op=t}},t.InvalidCompareArgumentTypes=class extends r{constructor(e,t){super(`Compared argument types are supported: '${e.termType}' and '${t.termType}'`),this.arg0=e,this.arg1=t}},t.CastError=class extends r{constructor(e,t){super(`Invalid cast: '${h(e)}' to '${h(t)}'`),this.arg=e}},t.InvalidTimezoneCall=class extends r{constructor(e){super(`TIMEZONE call on ${e} which has no timezone`),this.dateString=e}},t.IncompatibleLanguageOperation=class extends r{constructor(e,t){super(`Operation on incompatible language literals '${h(e)}' and '${h(t)}'`),this.arg1=e,this.arg2=t}},t.EmptyAggregateError=class extends r{constructor(){super("Empty aggregate expression")}},t.ParseError=class extends r{constructor(e,t){super(`Failed to parse ${e} as ${t}.`)}};class n extends Error{constructor(e,t){super(`Programmer Error '${e}'`),this.payload=t}}t.UnexpectedError=n;class i extends Error{constructor(e,t){super(`The number of args does not match the arity of the operator '${h(t)}'.`),this.args=e,this.op=t}}t.InvalidArity=i;class a extends Error{constructor(e){super(`Invalid SPARQL Expression '${h(e)}'`)}}t.InvalidExpression=a;class o extends Error{constructor(e){super(`Invalid expression type for SPARQL Expression '${h(e)}'`),this.expr=e}}t.InvalidExpressionType=o;class s extends Error{constructor(e){super(`Invalid term type for term '${h(e)}'`),this.term=e}}t.InvalidTermType=s;class c extends Error{constructor(e){super(`Unknown operator: '${h(e)}`)}}t.UnknownOperator=c;class u extends Error{constructor(e){super(`Unknown named operator: '${h(e)}'`)}}t.UnknownNamedOperator=u;class l extends Error{constructor(e,t){t instanceof Error?super(`Error thrown in ${e}: ${t.message}${t.stack?`\n${t.stack}`:""}`):super(`Error thrown in ${e}`)}}t.ExtensionFunctionError=l;class d extends Error{constructor(e){super(`Aggregate expression ${h(e)} found, but no aggregate hook provided.`)}}t.NoAggregator=d;class p extends Error{constructor(){super("EXISTS found, but no existence hook provided.")}}function h(e){return JSON.stringify(e)}t.NoExistenceHook=p},20236:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.orderTypes=void 0;const n=r(35069),i=r(42711),a=r(50363),o=r(14624),s=r(82867);function c(e,t){return e===t?0:e"term"),cache:s??new n.LRUCache({max:1e3})},defaultTimeZone:{zoneHours:0,zoneMinutes:0}},p=new a.TermTransformer(d.superTypeProvider),h=p.transformLiteral(e),f=p.transformLiteral(t);try{return l.apply([h,f],d).typedValue?0:u.apply([h,f],d).typedValue?1:-1}catch{const e=c(h.dataType,f.dataType);return 0!==e?e:c(h.str(),f.str())}}(t,r,d,p);if(l)throw new s.InvalidCompareArgumentTypes(t,r);return c(t.value,r.value)};const u={Variable:0,BlankNode:1,NamedNode:2,Literal:3,Quad:4,DefaultGraph:5}},17590:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseDayTimeDuration=t.parseYearMonthDuration=t.parseDuration=t.parseTime=t.parseDate=t.parseDateTime=t.parseXSDInteger=t.parseXSDDecimal=t.parseXSDFloat=void 0;const n=r(76660),i=r(82867),a=r(66487);function o(e){if(""===e)return{zoneHours:void 0,zoneMinutes:void 0};if("Z"===e)return{zoneHours:0,zoneMinutes:0};const t=e.replaceAll(/^([+|-])(\d\d):(\d\d)$/gu,"$11!$2!$3").split("!").map(Number);return{zoneHours:t[0]*t[1],zoneMinutes:t[0]*t[2]}}function s(e){const t=e.replaceAll(/^(-)?([123456789]*\d{4})-(\d\d)-(\d\d)(Z|([+-]\d\d:\d\d))?$/gu,"$11!$2!$3!$4!$5");if(t===e)throw new i.ParseError(e,"date");const r=t.split("!"),n=r.slice(0,-1).map(Number),s={year:n[0]*n[1],month:n[2],day:n[3],...o(r[4])};if(!(s.month>=1&&s.month<=12&&s.day>=1&&s.day<=(0,a.maximumDayInMonthFor)(s.year,s.month)))throw new i.ParseError(e,"date");return s}function c(e){const t=e.replaceAll(/^(\d\d):(\d\d):(\d\d(\.\d+)?)(Z|([+-]\d\d:\d\d))?$/gu,"$1!$2!$3!$5");if(t===e)throw new i.ParseError(e,"time");const r=t.split("!"),n=r.slice(0,-1).map(Number),a={hours:n[0],minutes:n[1],seconds:n[2],...o(r[3])};if(a.seconds>=60||a.minutes>=60||a.hours>24||24===a.hours&&(0!==a.minutes||0!==a.seconds))throw new i.ParseError(e,"time");return a}function u(e){const[t,r]=e.split("T"),a=t.replaceAll(/^(-)?P(\d+Y)?(\d+M)?(\d+D)?$/gu,"$11S!$2!$3!$4");if(a===t)throw new i.ParseError(e,"duration");const o=a.split("!");if(void 0!==r){const t=r.replaceAll(/^(\d+H)?(\d+M)?(\d+(\.\d+)?S)?$/gu,"$1!$2!$3");if(""===r||r===t)throw new i.ParseError(e,"duration");o.push(...t.split("!"))}const s=o.map((e=>e.slice(0,-1)));if(!s.slice(1).some(Boolean))throw new i.ParseError(e,"duration");const c=Number(s[0]);return(0,n.simplifyDurationRepresentation)({year:s[1]?c*Number(s[1]):void 0,month:s[2]?c*Number(s[2]):void 0,day:s[3]?c*Number(s[3]):void 0,hours:s[4]?c*Number(s[4]):void 0,minutes:s[5]?c*Number(s[5]):void 0,seconds:s[6]?c*Number(s[6]):void 0})}t.parseXSDFloat=function(e){const t=Number(e);return Number.isNaN(t)?"NaN"===e?Number.NaN:"INF"===e||"+INF"===e?Number.POSITIVE_INFINITY:"-INF"===e?Number.NEGATIVE_INFINITY:void 0:t},t.parseXSDDecimal=function(e){const t=Number(e);return Number.isNaN(t)?void 0:t},t.parseXSDInteger=function(e){const t=Number.parseInt(e,10);return Number.isNaN(t)?void 0:t},t.parseDateTime=function(e){const[t,r]=e.split("T");return{...s(t),...c(r)}},t.parseDate=s,t.parseTime=function(e){const t=c(e);return t.hours%=24,t},t.parseDuration=u,t.parseYearMonthDuration=function(e){const t=u(e);if(["hours","minutes","seconds","day"].some((e=>Boolean(t[e]))))throw new i.ParseError(e,"yearMonthDuration");return t},t.parseDayTimeDuration=function(e){const t=u(e);if(["year","month"].some((e=>Boolean(t[e]))))throw new i.ParseError(e,"dayTimeDuration");return t}},19002:(e,t)=>{"use strict";function r(e,t=2){return e.toLocaleString(void 0,{minimumIntegerDigits:t,useGrouping:!1})}function n(e){return void 0===e.zoneHours||void 0===e.zoneMinutes?"":0===e.zoneHours&&0===e.zoneMinutes?"Z":`${e.zoneHours>=0?`+${r(e.zoneHours)}`:r(e.zoneHours)}:${r(Math.abs(e.zoneMinutes))}`}function i(e){return`${r(e.year,4)}-${r(e.month)}-${r(e.day)}${n(e)}`}function a(e){return`${r(e.hours)}:${r(e.minutes)}:${r(e.seconds)}${n(e)}`}Object.defineProperty(t,"__esModule",{value:!0}),t.serializeDuration=t.serializeTime=t.serializeDate=t.serializeDateTime=void 0,t.serializeDateTime=function(e){return`${i({year:e.year,month:e.month,day:e.day})}T${a(e)}`},t.serializeDate=i,t.serializeTime=a,t.serializeDuration=function(e,t="PT0S"){if(!Object.values(e).some((e=>0!==(e||0))))return t;const r=`${Object.values(e).some((e=>(e||0)<0))?"-":""}P${e.year?`${Math.abs(e.year)}Y`:""}${e.month?`${Math.abs(e.month)}M`:""}${e.day?`${Math.abs(e.day)}D`:""}`;return e.hours||e.minutes||e.seconds?`${r}T${e.hours?`${Math.abs(e.hours)}H`:""}${e.minutes?`${Math.abs(e.minutes)}M`:""}${e.seconds?`${Math.abs(e.seconds)}S`:""}`:r}},66487:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.elapsedDuration=t.addDurationToDateTime=t.maximumDayInMonthFor=void 0;const n=r(76660);function i(e,t,r=0){const n=e-r,i=t-r,a=Math.floor(n/i);return{intDiv:a,remainder:e-a*i}}function a(e,t){const{intDiv:r,remainder:n}=i(t,13,1),a=e+r;return[1,3,5,7,8,10,12].includes(n)?31:[4,6,9,11].includes(n)?30:2===n&&(0===i(a,400).remainder||0!==i(a,100).remainder&&0===i(a,4).remainder)?29:28}t.maximumDayInMonthFor=a,t.addDurationToDateTime=function(e,t){const r={...e};let n=i(e.month+t.month,13,1);for(r.month=n.remainder,r.year=e.year+t.year+n.intDiv,n=i(e.seconds+t.seconds,60),r.seconds=n.remainder,n=i(e.minutes+t.minutes+n.intDiv,60),r.minutes=n.remainder,n=i(e.hours+t.hours+n.intDiv,24),r.hours=n.remainder,r.day=e.day+t.day+n.intDiv;;){let e;if(r.day<1)r.day+=a(r.year,r.month-1),e=-1;else{if(!(r.day>a(r.year,r.month)))break;r.day-=a(r.year,r.month),e=1}n=i(r.month+e,13,1),r.month=n.remainder,r.year+=n.intDiv}return r},t.elapsedDuration=function(e,t,r){const i=(0,n.toUTCDate)(e,r),a=(0,n.toUTCDate)(t,r),o=i.getTime()-a.getTime();return{day:Math.floor(o/864e5),hours:Math.floor(o%864e5/36e5),minutes:Math.floor(o%36e5/6e4),seconds:o%6e4}}},46157:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.typePromotion=t.isSubTypeOf=t.getSuperTypeDict=t.isInternalSubType=t.asGeneralType=t.asOverrideType=t.asKnownLiteralType=t.asTypeAlias=t.typeAliasCheck=t.extensionTableInit=t.getSuperTypes=t.superTypeDictTable=t.extensionTableInput=void 0;const n=r(11269),i=r(63606),a=r(14624);function o(e,r){const n=r.cache.get(e);if(n)return n;const i=r.discoverer(e);if("term"===i){const t=Object.create(null);return t.__depth=0,t[e]=0,r.cache.set(e,t),t}let a;const s=u(i);return a=s?{...t.superTypeDictTable[s]}:{...o(i,r)},a.__depth++,a[e]=a.__depth,r.cache.set(e,a),a}function s(){for(const[e,r]of Object.entries(t.extensionTableInput)){const n=e;t.superTypeDictTable[n]||c(n,r,t.superTypeDictTable)}}function c(e,r,n){if("term"===r||void 0===r){const t=Object.create(null);return t.__depth=0,t[e]=0,void(n[e]=t)}n[r]||c(r,t.extensionTableInput[r],n),n[e]={...n[r],[e]:n[r].__depth+1,__depth:n[r].__depth+1}}function u(e){if(e in t.superTypeDictTable)return e}function l(e,r){const n=u(e);return n?t.superTypeDictTable[n]:o(e,r)}t.extensionTableInput={[a.TypeURL.XSD_DATE_TIME_STAMP]:a.TypeURL.XSD_DATE_TIME,[a.TypeURL.XSD_DAY_TIME_DURATION]:a.TypeURL.XSD_DURATION,[a.TypeURL.XSD_YEAR_MONTH_DURATION]:a.TypeURL.XSD_DURATION,[a.TypeURL.RDF_LANG_STRING]:a.TypeAlias.SPARQL_STRINGLY,[a.TypeURL.XSD_STRING]:a.TypeAlias.SPARQL_STRINGLY,[a.TypeURL.XSD_NORMALIZED_STRING]:a.TypeURL.XSD_STRING,[a.TypeURL.XSD_TOKEN]:a.TypeURL.XSD_NORMALIZED_STRING,[a.TypeURL.XSD_LANGUAGE]:a.TypeURL.XSD_TOKEN,[a.TypeURL.XSD_NM_TOKEN]:a.TypeURL.XSD_TOKEN,[a.TypeURL.XSD_NAME]:a.TypeURL.XSD_TOKEN,[a.TypeURL.XSD_NC_NAME]:a.TypeURL.XSD_NAME,[a.TypeURL.XSD_ENTITY]:a.TypeURL.XSD_NC_NAME,[a.TypeURL.XSD_ID]:a.TypeURL.XSD_NC_NAME,[a.TypeURL.XSD_ID_REF]:a.TypeURL.XSD_NC_NAME,[a.TypeURL.XSD_DOUBLE]:a.TypeAlias.SPARQL_NUMERIC,[a.TypeURL.XSD_FLOAT]:a.TypeAlias.SPARQL_NUMERIC,[a.TypeURL.XSD_DECIMAL]:a.TypeAlias.SPARQL_NUMERIC,[a.TypeURL.XSD_INTEGER]:a.TypeURL.XSD_DECIMAL,[a.TypeURL.XSD_NON_POSITIVE_INTEGER]:a.TypeURL.XSD_INTEGER,[a.TypeURL.XSD_NEGATIVE_INTEGER]:a.TypeURL.XSD_NON_POSITIVE_INTEGER,[a.TypeURL.XSD_LONG]:a.TypeURL.XSD_INTEGER,[a.TypeURL.XSD_INT]:a.TypeURL.XSD_LONG,[a.TypeURL.XSD_SHORT]:a.TypeURL.XSD_INT,[a.TypeURL.XSD_BYTE]:a.TypeURL.XSD_SHORT,[a.TypeURL.XSD_NON_NEGATIVE_INTEGER]:a.TypeURL.XSD_INTEGER,[a.TypeURL.XSD_POSITIVE_INTEGER]:a.TypeURL.XSD_NON_NEGATIVE_INTEGER,[a.TypeURL.XSD_UNSIGNED_LONG]:a.TypeURL.XSD_NON_NEGATIVE_INTEGER,[a.TypeURL.XSD_UNSIGNED_INT]:a.TypeURL.XSD_UNSIGNED_LONG,[a.TypeURL.XSD_UNSIGNED_SHORT]:a.TypeURL.XSD_UNSIGNED_INT,[a.TypeURL.XSD_UNSIGNED_BYTE]:a.TypeURL.XSD_UNSIGNED_SHORT,[a.TypeURL.XSD_DATE_TIME]:"term",[a.TypeURL.XSD_BOOLEAN]:"term",[a.TypeURL.XSD_DATE]:"term",[a.TypeURL.XSD_G_MONTH]:"term",[a.TypeURL.XSD_G_MONTHDAY]:"term",[a.TypeURL.XSD_G_YEAR]:"term",[a.TypeURL.XSD_G_YEAR_MONTH]:"term",[a.TypeURL.XSD_TIME]:"term",[a.TypeURL.XSD_G_DAY]:"term",[a.TypeURL.XSD_DURATION]:"term",[a.TypeAlias.SPARQL_NUMERIC]:"term",[a.TypeAlias.SPARQL_STRINGLY]:"term",[a.TypeURL.XSD_ANY_URI]:"term"},t.superTypeDictTable=Object.create(null),t.getSuperTypes=o,t.extensionTableInit=s,s(),t.typeAliasCheck=Object.create(null),function(){for(const e of Object.values(a.TypeAlias))t.typeAliasCheck[e]=!0}(),t.asTypeAlias=function(e){if(e in t.typeAliasCheck)return e},t.asKnownLiteralType=u,t.asOverrideType=function(e){if(u(e)??"term"===e)return e},t.asGeneralType=function(e){if("term"===e||(0,n.asTermType)(e))return e},t.isInternalSubType=function(e,r){return"term"!==e&&t.superTypeDictTable[e]&&void 0!==t.superTypeDictTable[e][r]},t.getSuperTypeDict=l,t.isSubTypeOf=function(e,t,r){return"term"!==e&&void 0!==l(e,r)[t]},t.typePromotion={[a.TypeURL.XSD_STRING]:[{typeToPromote:a.TypeURL.XSD_ANY_URI,conversionFunction:e=>(0,i.string)(e.str())}],[a.TypeURL.XSD_DOUBLE]:[{typeToPromote:a.TypeURL.XSD_FLOAT,conversionFunction:e=>(0,i.double)(e.typedValue)},{typeToPromote:a.TypeURL.XSD_DECIMAL,conversionFunction:e=>(0,i.double)(e.typedValue)}],[a.TypeURL.XSD_FLOAT]:[{typeToPromote:a.TypeURL.XSD_DECIMAL,conversionFunction:e=>(0,i.float)(e.typedValue)}]}},71448:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoggerVoid=void 0;const n=r(52640);class i extends n.Logger{debug(){}error(){}fatal(){}info(){}trace(){}warn(){}}t.LoggerVoid=i},5868:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(71448),t)},8008:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorAll=void 0;const n=r(34368);class i extends n.Mediator{constructor(e){super(e)}async mediate(e){const t=[];let r;try{r=this.publish(e)}catch{r=[]}for(const e of r)try{await e.reply,t.push(e.actor)}catch{}return(await Promise.all(t.map((t=>t.runObservable(e)))))[0]}async mediateWith(){throw new Error("Unsupported operation: MediatorAll#mediateWith")}}t.MediatorAll=i},48284:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(8008),t)},38123:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorCombinePipeline=void 0;const n=r(34368);class i extends n.Mediator{constructor(e){super(e)}async mediate(e){let t;try{t=this.publish(e)}catch{return e}if(this.filterErrors){const e=[];for(const r of t)try{await r.reply,e.push(r)}catch{}t=e}if(t=await Promise.all(t.map((async({actor:e,reply:t})=>({actor:e,reply:await t})))),this.order){const e=e=>{const t=this.field?e[this.field]:e;if("number"!=typeof t)throw new TypeError("Cannot order elements that are not numbers.");return t};t=t.sort(((t,r)=>("increasing"===this.order?1:-1)*(e(t.reply)-e(r.reply))))}let r=e;for(const{actor:e}of t)r={...r,...await e.runObservable(r)};return r}mediateWith(){throw new Error("Method not supported.")}}t.MediatorCombinePipeline=i},30827:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(38123),t)},79559:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorCombineUnion=void 0;const n=r(34368);class i extends n.Mediator{constructor(e){super(e),this.combiner=this.createCombiner()}async mediate(e){let t;try{t=this.publish(e)}catch{t=[]}if(this.filterErrors){const e=[];for(const r of t)try{await r.reply,e.push(r)}catch{}t=e}await Promise.all(t.map((({reply:e})=>e)));const r=await Promise.all(t.map((t=>t.actor.runObservable(e))));return this.combiner(r)}mediateWith(){throw new Error("Method not supported.")}createCombiner(){return e=>{const t={};return t[this.field]={},[{}].concat(e.map((e=>e[this.field]))).forEach((e=>{t[this.field]={...e,...t[this.field]}})),t}}}t.MediatorCombineUnion=i},75884:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(79559),t)},63850:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorJoinCoefficientsFixed=void 0;const n=r(32227),i=r(34368);class a extends i.Mediator{constructor(e){super(e)}async mediateWith(e,t){const r=[],a=t.map((({reply:e})=>e)).map((e=>e.catch((e=>{r.push(e)})))),o=await Promise.all(a);let s=o.map((e=>{if(e)return e.iterations*this.cpuWeight+e.persistedItems*this.memoryWeight+e.blockingItems*this.timeWeight+e.requestTime*this.ioWeight}));const c=Math.max(...s.filter((e=>void 0!==e))),u=e.context.get(n.KeysQueryOperation.limitIndicator);u&&(s=s.map(((e,t)=>void 0!==e&&o[t].blockingItems>0&&o[t].iterations>u?e+c:e)));let l=-1,d=Number.POSITIVE_INFINITY;for(const[e,t]of s.entries())void 0!==t&&(-1===l||te.message)).join("\n")}`);const p=t[l].actor;return p.includeInLogs&&i.Actor.getContextLogger(e.context)?.debug(`Determined physical join operator '${p.logicalType}-${p.physicalName}'`,{entries:e.entries.length,variables:await Promise.all(e.entries.map((async e=>(await e.output.metadata()).variables.map((e=>e.value))))),costs:Object.fromEntries(s.map(((e,r)=>[`${t[r].actor.logicalType}-${t[r].actor.physicalName}`,e])).filter((e=>void 0!==e[1]))),coefficients:Object.fromEntries(o.map(((e,r)=>[`${t[r].actor.logicalType}-${t[r].actor.physicalName}`,e])).filter((e=>void 0!==e[1])))}),p}}t.MediatorJoinCoefficientsFixed=a},8309:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(63850),t)},55614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorNumber=void 0;const n=r(34368);class i extends n.Mediator{constructor(e){super(e),this.indexPicker=this.createIndexPicker()}createIndexPicker(){switch(this.type){case"min":return e=>e.reduce(((e,t,r)=>{const n=this.getOrDefault(t[this.field],Number.POSITIVE_INFINITY);return null!==n&&(Number.isNaN(e[0])||e[0]>n)?[n,r]:e}),[Number.NaN,-1])[1];case"max":return e=>e.reduce(((e,t,r)=>{const n=this.getOrDefault(t[this.field],Number.NEGATIVE_INFINITY);return null!==n&&(Number.isNaN(e[0])||e[0]e));const n=[];if(this.ignoreErrors){const e={};e[this.field]=null,r=r.map((t=>t.catch((t=>(n.push(t),e)))))}const i=await Promise.all(r),a=this.indexPicker(i);if(a<0)throw new Error(`All actors rejected their test in ${this.name}\n${n.map((e=>e.message)).join("\n")}`);return t[a].actor}}t.MediatorNumber=i},99104:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(55614),t)},41426:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MediatorRace=void 0;const n=r(34368);class i extends n.Mediator{constructor(e){super(e)}mediateWith(e,t){return new Promise(((e,r)=>{const n=[];for(const i of t)i.reply.then((()=>{e(i.actor)})).catch((e=>{n.push(e),n.length===t.length&&r(new Error(`${this.name} mediated over all rejecting actors:\n${n.map((e=>e.message)).join("\n")}`))}))}))}}t.MediatorRace=i},25896:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(41426),t)},85849:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataValidationState=void 0,t.MetadataValidationState=class{constructor(){this.invalidateListeners=[],this.valid=!0}addInvalidateListener(e){this.invalidateListeners.push(e)}invalidate(){if(this.valid){this.valid=!1;for(const e of this.invalidateListeners)e()}}}},48187:(e,t)=>{"use strict";function r(e){for(const t of["cardinality"])if(!(t in e))throw new Error(`Invalid metadata: missing ${t} in ${JSON.stringify(e)}`);return e}function n(e){for(const t of["cardinality","canContainUndefs","variables"])if(!(t in e))throw new Error(`Invalid metadata: missing ${t} in ${JSON.stringify(e)}`);return e}function i(e){let t;return()=>(t||(t=e(),t.then((e=>e.state.addInvalidateListener((()=>{t=void 0})))).catch((()=>{}))),t)}Object.defineProperty(t,"__esModule",{value:!0}),t.cachifyMetadata=t.validateMetadataBindings=t.validateMetadataQuads=t.getMetadataBindings=t.getMetadataQuads=void 0,t.getMetadataQuads=function(e){return i((()=>new Promise(((t,r)=>{e.getProperty("metadata",(e=>t(e))),e.on("error",r)})).then((e=>r(e)))))},t.getMetadataBindings=function(e){return i((()=>new Promise(((t,r)=>{e.getProperty("metadata",(e=>t(e))),e.on("error",r)})).then((e=>("canContainUndefs"in e||(e.canContainUndefs=!1),n(e))))))},t.validateMetadataQuads=r,t.validateMetadataBindings=n,t.cachifyMetadata=i},72394:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(85849),t),i(r(48187),t)},66072:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},90522:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},54973:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},70650:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},92955:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},66143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},53475:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},22170:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},6379:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},78615:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},60552:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},34989:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},50199:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},15278:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},16382:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Logger=void 0;class r{static getLevelOrdinal(e){return r.LEVELS[e]}}t.Logger=r,r.LEVELS={trace:0,debug:1,info:2,warn:3,error:4,fatal:5}},52640:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(66072),t),i(r(90522),t),i(r(54973),t),i(r(70650),t),i(r(92955),t),i(r(66143),t),i(r(22170),t),i(r(6379),t),i(r(78615),t),i(r(60552),t),i(r(34989),t),i(r(50199),t),i(r(15278),t),i(r(4546),t),i(r(74532),t),i(r(53475),t),i(r(16382),t)},74532:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},4546:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},7991:(e,t)=>{"use strict";t.byteLength=function(e){var t=s(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){var t,r,a=s(e),o=a[0],c=a[1],u=new i(function(e,t,r){return 3*(t+r)/4-r}(0,o,c)),l=0,d=c>0?o-4:o;for(r=0;r>16&255,u[l++]=t>>8&255,u[l++]=255&t;return 2===c&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,u[l++]=255&t),1===c&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t),u},t.fromByteArray=function(e){for(var t,n=e.length,i=n%3,a=[],o=16383,s=0,u=n-i;su?u:s+o));return 1===i?(t=e[n-1],a.push(r[t>>2]+r[t<<4&63]+"==")):2===i&&(t=(e[n-2]<<8)+e[n-1],a.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"=")),a.join("")};for(var r=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)r[o]=a[o],n[a.charCodeAt(o)]=o;function s(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function c(e,t,n){for(var i,a,o=[],s=t;s>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},55553:function(e,t,r){var n;!function(i){"use strict";var a,o=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,s=Math.ceil,c=Math.floor,u="[BigNumber Error] ",l=u+"Number primitive has more than 15 significant digits: ",d=1e14,p=14,h=9007199254740991,f=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],y=1e7,g=1e9;function m(e){var t=0|e;return e>0||e===t?t:t-1}function b(e){for(var t,r,n=1,i=e.length,a=e[0]+"";nu^r?1:-1;for(s=(c=i.length)<(u=a.length)?c:u,o=0;oa[o]^r?1:-1;return c==u?0:c>u^r?1:-1}function _(e,t,r,n){if(er||e!==c(e))throw Error(u+(n||"Argument")+("number"==typeof e?er?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function w(e){var t=e.c.length-1;return m(e.e/p)==t&&e.c[t]%2!=0}function T(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function S(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(++t>(n=e.length)){for(i=r,t-=n;--t;i+=r);e+=i}else tk?m.c=m.e=null:e.e=10;d/=10,u++);return void(u>k?m.c=m.e=null:(m.e=u,m.c=[e]))}g=String(e)}else{if(!o.test(g=String(e)))return i(m,g,f);m.s=45==g.charCodeAt(0)?(g=g.slice(1),-1):1}(u=g.indexOf("."))>-1&&(g=g.replace(".","")),(d=g.search(/e/i))>0?(u<0&&(u=d),u+=+g.slice(d+1),g=g.substring(0,d)):u<0&&(u=g.length)}else{if(_(t,2,V.length,"Base"),10==t&&Q)return K(m=new $(e),D+m.e+1,j);if(g=String(e),f="number"==typeof e){if(0*e!=0)return i(m,g,f,t);if(m.s=1/e<0?(g=g.slice(1),-1):1,$.DEBUG&&g.replace(/^0\.0*|\./,"").length>15)throw Error(l+e)}else m.s=45===g.charCodeAt(0)?(g=g.slice(1),-1):1;for(r=V.slice(0,t),u=d=0,y=g.length;du){u=y;continue}}else if(!s&&(g==g.toUpperCase()&&(g=g.toLowerCase())||g==g.toLowerCase()&&(g=g.toUpperCase()))){s=!0,d=-1,u=0;continue}return i(m,String(e),f,t)}f=!1,(u=(g=n(g,t,10,m.s)).indexOf("."))>-1?g=g.replace(".",""):u=g.length}for(d=0;48===g.charCodeAt(d);d++);for(y=g.length;48===g.charCodeAt(--y););if(g=g.slice(d,++y)){if(y-=d,f&&$.DEBUG&&y>15&&(e>h||e!==c(e)))throw Error(l+m.s*e);if((u=u-d-1)>k)m.c=m.e=null;else if(u=M)?T(c,o):S(c,o,"0");else if(a=(e=K(new $(e),t,r)).e,s=(c=b(e.c)).length,1==n||2==n&&(t<=a||a<=C)){for(;ss){if(--t>0)for(c+=".";t--;c+="0");}else if((t+=a-s)>0)for(a+1==s&&(c+=".");t--;c+="0");return e.s<0&&i?"-"+c:c}function G(e,t){for(var r,n,i=1,a=new $(e[0]);i=10;i/=10,n++);return(r=n+r*p-1)>k?e.c=e.e=null:r=10;u/=10,i++);if((a=t-i)<0)a+=p,o=t,l=g[h=0],y=c(l/m[i-o-1]%10);else if((h=s((a+1)/p))>=g.length){if(!n)break e;for(;g.length<=h;g.push(0));l=y=0,i=1,o=(a%=p)-p+1}else{for(l=u=g[h],i=1;u>=10;u/=10,i++);y=(o=(a%=p)-p+i)<0?0:c(l/m[i-o-1]%10)}if(n=n||t<0||null!=g[h+1]||(o<0?l:l%m[i-o-1]),n=r<4?(y||n)&&(0==r||r==(e.s<0?3:2)):y>5||5==y&&(4==r||n||6==r&&(a>0?o>0?l/m[i-o]:0:g[h-1])%10&1||r==(e.s<0?8:7)),t<1||!g[0])return g.length=0,n?(t-=e.e+1,g[0]=m[(p-t%p)%p],e.e=-t||0):g[0]=e.e=0,e;if(0==a?(g.length=h,u=1,h--):(g.length=h+1,u=m[p-a],g[h]=o>0?c(l/m[i-o]%m[o])*u:0),n)for(;;){if(0==h){for(a=1,o=g[0];o>=10;o/=10,a++);for(o=g[0]+=u,u=1;o>=10;o/=10,u++);a!=u&&(e.e++,g[0]==d&&(g[0]=1));break}if(g[h]+=u,g[h]!=d)break;g[h--]=0,u=1}for(a=g.length;0===g[--a];g.pop());}e.e>k?e.c=e.e=null:e.e=M?T(t,r):S(t,r,"0"),e.s<0?"-"+t:t)}return $.clone=e,$.ROUND_UP=0,$.ROUND_DOWN=1,$.ROUND_CEIL=2,$.ROUND_FLOOR=3,$.ROUND_HALF_UP=4,$.ROUND_HALF_DOWN=5,$.ROUND_HALF_EVEN=6,$.ROUND_HALF_CEIL=7,$.ROUND_HALF_FLOOR=8,$.EUCLID=9,$.config=$.set=function(e){var t,r;if(null!=e){if("object"!=typeof e)throw Error(u+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(_(r=e[t],0,g,t),D=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(_(r=e[t],0,8,t),j=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((r=e[t])&&r.pop?(_(r[0],-g,0,t),_(r[1],0,g,t),C=r[0],M=r[1]):(_(r,-g,g,t),C=-(M=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if((r=e[t])&&r.pop)_(r[0],-g,-1,t),_(r[1],1,g,t),L=r[0],k=r[1];else{if(_(r,-g,g,t),!r)throw Error(u+t+" cannot be zero: "+r);L=-(k=r<0?-r:r)}if(e.hasOwnProperty(t="CRYPTO")){if((r=e[t])!==!!r)throw Error(u+t+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw F=!r,Error(u+"crypto unavailable");F=r}else F=r}if(e.hasOwnProperty(t="MODULO_MODE")&&(_(r=e[t],0,9,t),B=r),e.hasOwnProperty(t="POW_PRECISION")&&(_(r=e[t],0,g,t),U=r),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(r=e[t]))throw Error(u+t+" not an object: "+r);q=r}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(r=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(r))throw Error(u+t+" invalid: "+r);Q="0123456789"==r.slice(0,10),V=r}}return{DECIMAL_PLACES:D,ROUNDING_MODE:j,EXPONENTIAL_AT:[C,M],RANGE:[L,k],CRYPTO:F,MODULO_MODE:B,POW_PRECISION:U,FORMAT:q,ALPHABET:V}},$.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!$.DEBUG)return!0;var t,r,n=e.c,i=e.e,a=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===a||-1===a)&&i>=-g&&i<=g&&i===c(i)){if(0===n[0]){if(0===i&&1===n.length)return!0;break e}if((t=(i+1)%p)<1&&(t+=p),String(n[0]).length==t){for(t=0;t=d||r!==c(r))break e;if(0!==r)return!0}}}else if(null===n&&null===i&&(null===a||1===a||-1===a))return!0;throw Error(u+"Invalid BigNumber: "+e)},$.maximum=$.max=function(){return G(arguments,-1)},$.minimum=$.min=function(){return G(arguments,1)},$.random=(a=9007199254740992,O=Math.random()*a&2097151?function(){return c(Math.random()*a)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,n,i,a,o=0,l=[],d=new $(N);if(null==e?e=D:_(e,0,g),i=s(e/p),F)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(i*=2));o>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[o]=r[0],t[o+1]=r[1]):(l.push(a%1e14),o+=2);o=i/2}else{if(!crypto.randomBytes)throw F=!1,Error(u+"crypto unavailable");for(t=crypto.randomBytes(i*=7);o=9e15?crypto.randomBytes(7).copy(t,o):(l.push(a%1e14),o+=7);o=i/7}if(!F)for(;o=10;a/=10,o++);or-1&&(null==o[i+1]&&(o[i+1]=0),o[i+1]+=o[i]/r|0,o[i]%=r)}return o.reverse()}return function(n,i,a,o,s){var c,u,l,d,p,h,f,y,g=n.indexOf("."),m=D,v=j;for(g>=0&&(d=U,U=0,n=n.replace(".",""),h=(y=new $(i)).pow(n.length-g),U=d,y.c=t(S(b(h.c),h.e,"0"),10,a,e),y.e=y.c.length),l=d=(f=t(n,i,a,s?(c=V,e):(c=e,V))).length;0==f[--d];f.pop());if(!f[0])return c.charAt(0);if(g<0?--l:(h.c=f,h.e=l,h.s=o,f=(h=r(h,y,m,v,a)).c,p=h.r,l=h.e),g=f[u=l+m+1],d=a/2,p=p||u<0||null!=f[u+1],p=v<4?(null!=g||p)&&(0==v||v==(h.s<0?3:2)):g>d||g==d&&(4==v||p||6==v&&1&f[u-1]||v==(h.s<0?8:7)),u<1||!f[0])n=p?S(c.charAt(1),-m,c.charAt(0)):c.charAt(0);else{if(f.length=u,p)for(--a;++f[--u]>a;)f[u]=0,u||(++l,f=[1].concat(f));for(d=f.length;!f[--d];);for(g=0,n="";g<=d;n+=c.charAt(f[g++]));n=S(n,l,c.charAt(0))}return n}}(),r=function(){function e(e,t,r){var n,i,a,o,s=0,c=e.length,u=t%y,l=t/y|0;for(e=e.slice();c--;)s=((i=u*(a=e[c]%y)+(n=l*a+(o=e[c]/y|0)*u)%y*y+s)/r|0)+(n/y|0)+l*o,e[c]=i%r;return s&&(e=[s].concat(e)),e}function t(e,t,r,n){var i,a;if(r!=n)a=r>n?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.splice(0,1));}return function(n,i,a,o,s){var u,l,h,f,y,g,b,v,_,w,T,S,O,E,x,A,R,I=n.s==i.s?1:-1,P=n.c,N=i.c;if(!(P&&P[0]&&N&&N[0]))return new $(n.s&&i.s&&(P?!N||P[0]!=N[0]:N)?P&&0==P[0]||!N?0*I:I/0:NaN);for(_=(v=new $(I)).c=[],I=a+(l=n.e-i.e)+1,s||(s=d,l=m(n.e/p)-m(i.e/p),I=I/p|0),h=0;N[h]==(P[h]||0);h++);if(N[h]>(P[h]||0)&&l--,I<0)_.push(1),f=!0;else{for(E=P.length,A=N.length,h=0,I+=2,(y=c(s/(N[0]+1)))>1&&(N=e(N,y,s),P=e(P,y,s),A=N.length,E=P.length),O=A,T=(w=P.slice(0,A)).length;T=s/2&&x++;do{if(y=0,(u=t(N,w,A,T))<0){if(S=w[0],A!=T&&(S=S*s+(w[1]||0)),(y=c(S/x))>1)for(y>=s&&(y=s-1),b=(g=e(N,y,s)).length,T=w.length;1==t(g,w,b,T);)y--,r(g,A=10;I/=10,h++);K(v,a+(v.e=h+l*p-1)+1,o,f)}else v.e=l,v.r=+f;return v}}(),E=/^(-?)0([xbo])(?=\w[\w.]*$)/i,x=/^([^.]+)\.$/,A=/^\.([^.]+)$/,R=/^-?(Infinity|NaN)$/,I=/^\s*\+(?=[\w.])|^\s+|\s+$/g,i=function(e,t,r,n){var i,a=r?t:t.replace(I,"");if(R.test(a))e.s=isNaN(a)?null:a<0?-1:1;else{if(!r&&(a=a.replace(E,(function(e,t,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?e:t})),n&&(i=n,a=a.replace(x,"$1").replace(A,"0.$1")),t!=a))return new $(a,i);if($.DEBUG)throw Error(u+"Not a"+(n?" base "+n:"")+" number: "+t);e.s=null}e.c=e.e=null},P.absoluteValue=P.abs=function(){var e=new $(this);return e.s<0&&(e.s=1),e},P.comparedTo=function(e,t){return v(this,new $(e,t))},P.decimalPlaces=P.dp=function(e,t){var r,n,i,a=this;if(null!=e)return _(e,0,g),null==t?t=j:_(t,0,8),K(new $(a),e+a.e+1,t);if(!(r=a.c))return null;if(n=((i=r.length-1)-m(this.e/p))*p,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},P.dividedBy=P.div=function(e,t){return r(this,new $(e,t),D,j)},P.dividedToIntegerBy=P.idiv=function(e,t){return r(this,new $(e,t),0,1)},P.exponentiatedBy=P.pow=function(e,t){var r,n,i,a,o,l,d,h,f=this;if((e=new $(e)).c&&!e.isInteger())throw Error(u+"Exponent not an integer: "+X(e));if(null!=t&&(t=new $(t)),o=e.e>14,!f.c||!f.c[0]||1==f.c[0]&&!f.e&&1==f.c.length||!e.c||!e.c[0])return h=new $(Math.pow(+X(f),o?e.s*(2-w(e)):+X(e))),t?h.mod(t):h;if(l=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new $(NaN);(n=!l&&f.isInteger()&&t.isInteger())&&(f=f.mod(t))}else{if(e.e>9&&(f.e>0||f.e<-1||(0==f.e?f.c[0]>1||o&&f.c[1]>=24e7:f.c[0]<8e13||o&&f.c[0]<=9999975e7)))return a=f.s<0&&w(e)?-0:0,f.e>-1&&(a=1/a),new $(l?1/a:a);U&&(a=s(U/p+2))}for(o?(r=new $(.5),l&&(e.s=1),d=w(e)):d=(i=Math.abs(+X(e)))%2,h=new $(N);;){if(d){if(!(h=h.times(f)).c)break;a?h.c.length>a&&(h.c.length=a):n&&(h=h.mod(t))}if(i){if(0===(i=c(i/2)))break;d=i%2}else if(K(e=e.times(r),e.e+1,1),e.e>14)d=w(e);else{if(0==(i=+X(e)))break;d=i%2}f=f.times(f),a?f.c&&f.c.length>a&&(f.c.length=a):n&&(f=f.mod(t))}return n?h:(l&&(h=N.div(h)),t?h.mod(t):a?K(h,U,j,void 0):h)},P.integerValue=function(e){var t=new $(this);return null==e?e=j:_(e,0,8),K(t,t.e+1,e)},P.isEqualTo=P.eq=function(e,t){return 0===v(this,new $(e,t))},P.isFinite=function(){return!!this.c},P.isGreaterThan=P.gt=function(e,t){return v(this,new $(e,t))>0},P.isGreaterThanOrEqualTo=P.gte=function(e,t){return 1===(t=v(this,new $(e,t)))||0===t},P.isInteger=function(){return!!this.c&&m(this.e/p)>this.c.length-2},P.isLessThan=P.lt=function(e,t){return v(this,new $(e,t))<0},P.isLessThanOrEqualTo=P.lte=function(e,t){return-1===(t=v(this,new $(e,t)))||0===t},P.isNaN=function(){return!this.s},P.isNegative=function(){return this.s<0},P.isPositive=function(){return this.s>0},P.isZero=function(){return!!this.c&&0==this.c[0]},P.minus=function(e,t){var r,n,i,a,o=this,s=o.s;if(t=(e=new $(e,t)).s,!s||!t)return new $(NaN);if(s!=t)return e.s=-t,o.plus(e);var c=o.e/p,u=e.e/p,l=o.c,h=e.c;if(!c||!u){if(!l||!h)return l?(e.s=-t,e):new $(h?o:NaN);if(!l[0]||!h[0])return h[0]?(e.s=-t,e):new $(l[0]?o:3==j?-0:0)}if(c=m(c),u=m(u),l=l.slice(),s=c-u){for((a=s<0)?(s=-s,i=l):(u=c,i=h),i.reverse(),t=s;t--;i.push(0));i.reverse()}else for(n=(a=(s=l.length)<(t=h.length))?s:t,s=t=0;t0)for(;t--;l[r++]=0);for(t=d-1;n>s;){if(l[--n]=0;){for(r=0,f=S[i]%_,g=S[i]/_|0,a=i+(o=c);a>i;)r=((u=f*(u=T[--o]%_)+(s=g*u+(l=T[o]/_|0)*f)%_*_+b[a]+r)/v|0)+(s/_|0)+g*l,b[a--]=u%v;b[a]=r}return r?++n:b.splice(0,1),z(e,b,n)},P.negated=function(){var e=new $(this);return e.s=-e.s||null,e},P.plus=function(e,t){var r,n=this,i=n.s;if(t=(e=new $(e,t)).s,!i||!t)return new $(NaN);if(i!=t)return e.s=-t,n.minus(e);var a=n.e/p,o=e.e/p,s=n.c,c=e.c;if(!a||!o){if(!s||!c)return new $(i/0);if(!s[0]||!c[0])return c[0]?e:new $(s[0]?n:0*i)}if(a=m(a),o=m(o),s=s.slice(),i=a-o){for(i>0?(o=a,r=c):(i=-i,r=s),r.reverse();i--;r.push(0));r.reverse()}for((i=s.length)-(t=c.length)<0&&(r=c,c=s,s=r,t=i),i=0;t;)i=(s[--t]=s[t]+c[t]+i)/d|0,s[t]=d===s[t]?0:s[t]%d;return i&&(s=[i].concat(s),++o),z(e,s,o)},P.precision=P.sd=function(e,t){var r,n,i,a=this;if(null!=e&&e!==!!e)return _(e,1,g),null==t?t=j:_(t,0,8),K(new $(a),e,t);if(!(r=a.c))return null;if(n=(i=r.length-1)*p+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&a.e+1>n&&(n=a.e+1),n},P.shiftedBy=function(e){return _(e,-9007199254740991,h),this.times("1e"+e)},P.squareRoot=P.sqrt=function(){var e,t,n,i,a,o=this,s=o.c,c=o.s,u=o.e,l=D+4,d=new $("0.5");if(1!==c||!s||!s[0])return new $(!c||c<0&&(!s||s[0])?NaN:s?o:1/0);if(0==(c=Math.sqrt(+X(o)))||c==1/0?(((t=b(s)).length+u)%2==0&&(t+="0"),c=Math.sqrt(+t),u=m((u+1)/2)-(u<0||u%2),n=new $(t=c==1/0?"5e"+u:(t=c.toExponential()).slice(0,t.indexOf("e")+1)+u)):n=new $(c+""),n.c[0])for((c=(u=n.e)+l)<3&&(c=0);;)if(a=n,n=d.times(a.plus(r(o,a,l,1))),b(a.c).slice(0,c)===(t=b(n.c)).slice(0,c)){if(n.e0&&y>0){for(a=y%s||s,d=f.substr(0,a);a0&&(d+=l+f.slice(a)),h&&(d="-"+d)}n=p?d+(r.decimalSeparator||"")+((c=+r.fractionGroupSize)?p.replace(new RegExp("\\d{"+c+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):p):d}return(r.prefix||"")+n+(r.suffix||"")},P.toFraction=function(e){var t,n,i,a,o,s,c,l,d,h,y,g,m=this,v=m.c;if(null!=e&&(!(c=new $(e)).isInteger()&&(c.c||1!==c.s)||c.lt(N)))throw Error(u+"Argument "+(c.isInteger()?"out of range: ":"not an integer: ")+X(c));if(!v)return new $(m);for(t=new $(N),d=n=new $(N),i=l=new $(N),g=b(v),o=t.e=g.length-m.e-1,t.c[0]=f[(s=o%p)<0?p+s:s],e=!e||c.comparedTo(t)>0?o>0?t:d:c,s=k,k=1/0,c=new $(g),l.c[0]=0;h=r(c,t,0,1),1!=(a=n.plus(h.times(i))).comparedTo(e);)n=i,i=a,d=l.plus(h.times(a=d)),l=a,t=c.minus(h.times(a=t)),c=a;return a=r(e.minus(n),i,0,1),l=l.plus(a.times(d)),n=n.plus(a.times(i)),l.s=d.s=m.s,y=r(d,i,o*=2,j).minus(m).abs().comparedTo(r(l,n,o,j).minus(m).abs())<1?[d,i]:[l,n],k=s,y},P.toNumber=function(){return+X(this)},P.toPrecision=function(e,t){return null!=e&&_(e,1,g),H(this,e,t,2)},P.toString=function(e){var t,r=this,i=r.s,a=r.e;return null===a?i?(t="Infinity",i<0&&(t="-"+t)):t="NaN":(null==e?t=a<=C||a>=M?T(b(r.c),a):S(b(r.c),a,"0"):10===e&&Q?t=S(b((r=K(new $(r),D+a+1,j)).c),r.e,"0"):(_(e,2,V.length,"Base"),t=n(S(b(r.c),a,"0"),10,e,i,!0)),i<0&&r.c[0]&&(t="-"+t)),t},P.valueOf=P.toJSON=function(){return X(this)},P._isBigNumber=!0,null!=t&&$.set(t),$}(),a.default=a.BigNumber=a,void 0===(n=function(){return a}.call(t,r,t,e))||(e.exports=n)}()},1048:(e,t,r)=>{"use strict";const n=r(7991),i=r(39318),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=c,t.SlowBuffer=function(e){return+e!=e&&(e=0),c.alloc(+e)},t.INSPECT_MAX_BYTES=50;const o=2147483647;function s(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,c.prototype),t}function c(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return d(e)}return u(e,t,r)}function u(e,t,r){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!c.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|y(e,t);let n=s(r);const i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(X(e,Uint8Array)){const t=new Uint8Array(e);return h(t.buffer,t.byteOffset,t.byteLength)}return p(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(X(e,ArrayBuffer)||e&&X(e.buffer,ArrayBuffer))return h(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(X(e,SharedArrayBuffer)||e&&X(e.buffer,SharedArrayBuffer)))return h(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return c.from(n,t,r);const i=function(e){if(c.isBuffer(e)){const t=0|f(e.length),r=s(t);return 0===r.length||e.copy(r,0,0,t),r}return void 0!==e.length?"number"!=typeof e.length||J(e.length)?s(0):p(e):"Buffer"===e.type&&Array.isArray(e.data)?p(e.data):void 0}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return c.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function l(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function d(e){return l(e),s(e<0?0:0|f(e))}function p(e){const t=e.length<0?0:0|f(e.length),r=s(t);for(let n=0;n=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function y(e,t){if(c.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||X(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return G(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return z(e).length;default:if(i)return n?-1:G(e).length;t=(""+t).toLowerCase(),i=!0}}function g(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,r);case"utf8":case"utf-8":return x(this,t,r);case"ascii":return R(this,t,r);case"latin1":case"binary":return I(this,t,r);case"base64":return E(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function m(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function b(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),J(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=c.from(t,n)),c.isBuffer(t))return 0===t.length?-1:v(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):v(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function v(e,t,r,n,i){let a,o=1,s=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;o=2,s/=2,c/=2,r/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){let n=-1;for(a=r;as&&(r=s-c),a=r;a>=0;a--){let r=!0;for(let n=0;ni&&(n=i):n=i;const a=t.length;let o;for(n>a/2&&(n=a/2),o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(t,e.length-r),e,r,n)}function E(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function x(e,t,r){r=Math.min(e.length,r);const n=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+o<=r){let r,n,s,c;switch(o){case 1:t<128&&(a=t);break;case 2:r=e[i+1],128==(192&r)&&(c=(31&t)<<6|63&r,c>127&&(a=c));break;case 3:r=e[i+1],n=e[i+2],128==(192&r)&&128==(192&n)&&(c=(15&t)<<12|(63&r)<<6|63&n,c>2047&&(c<55296||c>57343)&&(a=c));break;case 4:r=e[i+1],n=e[i+2],s=e[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(c=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,c>65535&&c<1114112&&(a=c))}}null===a?(a=65533,o=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=o}return function(e){const t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn.length?(c.isBuffer(t)||(t=c.from(t)),t.copy(n,i)):Uint8Array.prototype.set.call(n,t,i);else{if(!c.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(n,i)}i+=t.length}return n},c.byteLength=y,c.prototype._isBuffer=!0,c.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tr&&(e+=" ... "),""},a&&(c.prototype[a]=c.prototype.inspect),c.prototype.compare=function(e,t,r,n,i){if(X(e,Uint8Array)&&(e=c.from(e,e.offset,e.byteLength)),!c.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;let a=(i>>>=0)-(n>>>=0),o=(r>>>=0)-(t>>>=0);const s=Math.min(a,o),u=this.slice(n,i),l=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let a=!1;for(;;)switch(n){case"hex":return _(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":case"latin1":case"binary":return T(this,e,t,r);case"base64":return S(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const A=4096;function R(e,t,r){let n="";r=Math.min(e.length,r);for(let i=t;in)&&(r=n);let i="";for(let n=t;nr)throw new RangeError("Trying to access beyond buffer length")}function j(e,t,r,n,i,a){if(!c.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function C(e,t,r,n,i){V(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,r}function M(e,t,r,n,i){V(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a>>=8,e[r+6]=a,a>>=8,e[r+5]=a,a>>=8,e[r+4]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=o,o>>=8,e[r+2]=o,o>>=8,e[r+1]=o,o>>=8,e[r]=o,r+8}function L(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(e,t,r,n,a){return t=+t,r>>>=0,a||L(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function F(e,t,r,n,a){return t=+t,r>>>=0,a||L(e,0,r,8),i.write(e,t,r,n,52,8),r+8}c.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||D(e,t,this.length);let n=this[e],i=1,a=0;for(;++a>>=0,t>>>=0,r||D(e,t,this.length);let n=this[e+--t],i=1;for(;t>0&&(i*=256);)n+=this[e+--t]*i;return n},c.prototype.readUint8=c.prototype.readUInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),this[e]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]|this[e+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]<<8|this[e+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},c.prototype.readBigUInt64LE=Y((function(e){Q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<>>=0,t>>>=0,r||D(e,t,this.length);let n=this[e],i=1,a=0;for(;++a=i&&(n-=Math.pow(2,8*t)),n},c.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||D(e,t,this.length);let n=t,i=1,a=this[e+--n];for(;n>0&&(i*=256);)a+=this[e+--n]*i;return i*=128,a>=i&&(a-=Math.pow(2,8*t)),a},c.prototype.readInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},c.prototype.readInt16LE=function(e,t){e>>>=0,t||D(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt16BE=function(e,t){e>>>=0,t||D(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},c.prototype.readInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},c.prototype.readBigInt64LE=Y((function(e){Q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<>>=0,t||D(e,4,this.length),i.read(this,e,!0,23,4)},c.prototype.readFloatBE=function(e,t){return e>>>=0,t||D(e,4,this.length),i.read(this,e,!1,23,4)},c.prototype.readDoubleLE=function(e,t){return e>>>=0,t||D(e,8,this.length),i.read(this,e,!0,52,8)},c.prototype.readDoubleBE=function(e,t){return e>>>=0,t||D(e,8,this.length),i.read(this,e,!1,52,8)},c.prototype.writeUintLE=c.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||j(this,e,t,r,Math.pow(2,8*r)-1,0);let i=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,n||j(this,e,t,r,Math.pow(2,8*r)-1,0);let i=r-1,a=1;for(this[t+i]=255&e;--i>=0&&(a*=256);)this[t+i]=e/a&255;return t+r},c.prototype.writeUint8=c.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,1,255,0),this[t]=255&e,t+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigUInt64LE=Y((function(e,t=0){return C(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),c.prototype.writeBigUInt64BE=Y((function(e,t=0){return M(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),c.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);j(this,e,t,r,n-1,-n)}let i=0,a=1,o=0;for(this[t]=255&e;++i>>=0,!n){const n=Math.pow(2,8*r-1);j(this,e,t,r,n-1,-n)}let i=r-1,a=1,o=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===o&&0!==this[t+i+1]&&(o=1),this[t+i]=(e/a|0)-o&255;return t+r},c.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},c.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},c.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||j(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigInt64LE=Y((function(e,t=0){return C(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),c.prototype.writeBigInt64BE=Y((function(e,t=0){return M(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),c.prototype.writeFloatLE=function(e,t,r){return k(this,e,t,!0,r)},c.prototype.writeFloatBE=function(e,t,r){return k(this,e,t,!1,r)},c.prototype.writeDoubleLE=function(e,t,r){return F(this,e,t,!0,r)},c.prototype.writeDoubleBE=function(e,t,r){return F(this,e,t,!1,r)},c.prototype.copy=function(e,t,r,n){if(!c.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function V(e,t,r,n,i,a){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(a+1)}${n}`:`>= -(2${n} ** ${8*(a+1)-1}${n}) and < 2 ** ${8*(a+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new B.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,r){Q(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||$(t,e.length-(r+1))}(n,i,a)}function Q(e,t){if("number"!=typeof e)throw new B.ERR_INVALID_ARG_TYPE(t,"number",e)}function $(e,t,r){if(Math.floor(e)!==e)throw Q(e,r),new B.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new B.ERR_BUFFER_OUT_OF_BOUNDS;throw new B.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}U("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),U("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),U("ERR_OUT_OF_RANGE",(function(e,t,r){let n=`The value of "${e}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=q(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=q(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n}),RangeError);const H=/[^+/0-9A-Za-z-_]/g;function G(e,t){let r;t=t||1/0;const n=e.length;let i=null;const a=[];for(let o=0;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function z(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(H,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function X(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function J(e){return e!=e}const W=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function Y(e){return"undefined"==typeof BigInt?Z:e}function Z(){throw new Error("BigInt not supported")}},62168:e=>{"use strict";e.exports=function e(t){if("number"==typeof t&&isNaN(t))throw new Error("NaN is not allowed");if("number"==typeof t&&!isFinite(t))throw new Error("Infinity is not allowed");return null===t||"object"!=typeof t?JSON.stringify(t):t.toJSON instanceof Function?e(t.toJSON()):Array.isArray(t)?`[${t.reduce(((t,r,n)=>`${t}${0===n?"":","}${e(void 0===r||"symbol"==typeof r?null:r)}`),"")}]`:`{${Object.keys(t).sort().reduce(((r,n)=>void 0===t[n]||"symbol"==typeof t[n]?r:`${r}${0===r.length?"":","}${e(n)}:${e(t[n])}`),"")}}`}},90482:function(){!function(e){!function(t){var r="undefined"!=typeof globalThis&&globalThis||void 0!==e&&e||void 0!==r&&r,n="URLSearchParams"in r,i="Symbol"in r&&"iterator"in Symbol,a="FileReader"in r&&"Blob"in r&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in r,s="ArrayBuffer"in r;if(s)var c=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(e){return e&&c.indexOf(Object.prototype.toString.call(e))>-1};function l(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e)||""===e)throw new TypeError('Invalid character in header field name: "'+e+'"');return e.toLowerCase()}function d(e){return"string"!=typeof e&&(e=String(e)),e}function p(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function h(e){this.map={},e instanceof h?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function f(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function y(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function g(e){var t=new FileReader,r=y(t);return t.readAsArrayBuffer(e),r}function m(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function b(){return this.bodyUsed=!1,this._initBody=function(e){var t;this.bodyUsed=this.bodyUsed,this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:a&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():s&&a&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=m(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(e)||u(e))?this._bodyArrayBuffer=m(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},a&&(this.blob=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer)):this.blob().then(g)}),this.text=function(){var e,t,r,n=f(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,r=y(t=new FileReader),t.readAsText(e),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?n:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(i),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==t.cache&&"no-cache"!==t.cache)){var a=/([?&])_=[^&]*/;a.test(this.url)?this.url=this.url.replace(a,"$1_="+(new Date).getTime()):this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}function w(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function T(e,t){if(!(this instanceof T))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===t.statusText?"":""+t.statusText,this.headers=new h(t.headers),this.url=t.url||"",this._initBody(e)}_.prototype.clone=function(){return new _(this,{body:this._bodyInit})},b.call(_.prototype),b.call(T.prototype),T.prototype.clone=function(){return new T(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new h(this.headers),url:this.url})},T.error=function(){var e=new T(null,{status:0,statusText:""});return e.type="error",e};var S=[301,302,303,307,308];T.redirect=function(e,t){if(-1===S.indexOf(t))throw new RangeError("Invalid status code");return new T(null,{status:t,headers:{location:e}})},t.DOMException=r.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function O(e,n){return new Promise((function(i,o){var c=new _(e,n);if(c.signal&&c.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var u=new XMLHttpRequest;function l(){u.abort()}u.onload=function(){var e,t,r={status:u.status,statusText:u.statusText,headers:(e=u.getAllResponseHeaders()||"",t=new h,e.replace(/\r?\n[\t ]+/g," ").split("\r").map((function(e){return 0===e.indexOf("\n")?e.substr(1,e.length):e})).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t)};r.url="responseURL"in u?u.responseURL:r.headers.get("X-Request-URL");var n="response"in u?u.response:u.responseText;setTimeout((function(){i(new T(n,r))}),0)},u.onerror=function(){setTimeout((function(){o(new TypeError("Network request failed"))}),0)},u.ontimeout=function(){setTimeout((function(){o(new TypeError("Network request failed"))}),0)},u.onabort=function(){setTimeout((function(){o(new t.DOMException("Aborted","AbortError"))}),0)},u.open(c.method,function(e){try{return""===e&&r.location.href?r.location.href:e}catch(t){return e}}(c.url),!0),"include"===c.credentials?u.withCredentials=!0:"omit"===c.credentials&&(u.withCredentials=!1),"responseType"in u&&(a?u.responseType="blob":s&&c.headers.get("Content-Type")&&-1!==c.headers.get("Content-Type").indexOf("application/octet-stream")&&(u.responseType="arraybuffer")),!n||"object"!=typeof n.headers||n.headers instanceof h?c.headers.forEach((function(e,t){u.setRequestHeader(t,e)})):Object.getOwnPropertyNames(n.headers).forEach((function(e){u.setRequestHeader(e,d(n.headers[e]))})),c.signal&&(c.signal.addEventListener("abort",l),u.onreadystatechange=function(){4===u.readyState&&c.signal.removeEventListener("abort",l)}),u.send(void 0===c._bodyInit?null:c._bodyInit)}))}O.polyfill=!0,r.fetch||(r.fetch=O,r.Headers=h,r.Request=_,r.Response=T),t.Headers=h,t.Request=_,t.Response=T,t.fetch=O}({})}("undefined"!=typeof self?self:this)},10288:(e,t,r)=>{var n="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==r.g&&r.g,i=function(){function e(){this.fetch=!1,this.DOMException=n.DOMException}return e.prototype=n,new e}();!function(e){!function(t){var r=void 0!==e&&e||"undefined"!=typeof self&&self||void 0!==r&&r,n="URLSearchParams"in r,i="Symbol"in r&&"iterator"in Symbol,a="FileReader"in r&&"Blob"in r&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in r,s="ArrayBuffer"in r;if(s)var c=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(e){return e&&c.indexOf(Object.prototype.toString.call(e))>-1};function l(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e)||""===e)throw new TypeError('Invalid character in header field name: "'+e+'"');return e.toLowerCase()}function d(e){return"string"!=typeof e&&(e=String(e)),e}function p(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function h(e){this.map={},e instanceof h?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function f(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function y(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function g(e){var t=new FileReader,r=y(t);return t.readAsArrayBuffer(e),r}function m(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function b(){return this.bodyUsed=!1,this._initBody=function(e){var t;this.bodyUsed=this.bodyUsed,this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:a&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():s&&a&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=m(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(e)||u(e))?this._bodyArrayBuffer=m(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},a&&(this.blob=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer)):this.blob().then(g)}),this.text=function(){var e,t,r,n=f(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,r=y(t=new FileReader),t.readAsText(e),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?n:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(i),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==t.cache&&"no-cache"!==t.cache)){var a=/([?&])_=[^&]*/;a.test(this.url)?this.url=this.url.replace(a,"$1_="+(new Date).getTime()):this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}function w(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function T(e,t){if(!(this instanceof T))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===t.statusText?"":""+t.statusText,this.headers=new h(t.headers),this.url=t.url||"",this._initBody(e)}_.prototype.clone=function(){return new _(this,{body:this._bodyInit})},b.call(_.prototype),b.call(T.prototype),T.prototype.clone=function(){return new T(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new h(this.headers),url:this.url})},T.error=function(){var e=new T(null,{status:0,statusText:""});return e.type="error",e};var S=[301,302,303,307,308];T.redirect=function(e,t){if(-1===S.indexOf(t))throw new RangeError("Invalid status code");return new T(null,{status:t,headers:{location:e}})},t.DOMException=r.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function O(e,n){return new Promise((function(i,o){var c=new _(e,n);if(c.signal&&c.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var u=new XMLHttpRequest;function l(){u.abort()}u.onload=function(){var e,t,r={status:u.status,statusText:u.statusText,headers:(e=u.getAllResponseHeaders()||"",t=new h,e.replace(/\r?\n[\t ]+/g," ").split("\r").map((function(e){return 0===e.indexOf("\n")?e.substr(1,e.length):e})).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t)};r.url="responseURL"in u?u.responseURL:r.headers.get("X-Request-URL");var n="response"in u?u.response:u.responseText;setTimeout((function(){i(new T(n,r))}),0)},u.onerror=function(){setTimeout((function(){o(new TypeError("Network request failed"))}),0)},u.ontimeout=function(){setTimeout((function(){o(new TypeError("Network request failed"))}),0)},u.onabort=function(){setTimeout((function(){o(new t.DOMException("Aborted","AbortError"))}),0)},u.open(c.method,function(e){try{return""===e&&r.location.href?r.location.href:e}catch(t){return e}}(c.url),!0),"include"===c.credentials?u.withCredentials=!0:"omit"===c.credentials&&(u.withCredentials=!1),"responseType"in u&&(a?u.responseType="blob":s&&c.headers.get("Content-Type")&&-1!==c.headers.get("Content-Type").indexOf("application/octet-stream")&&(u.responseType="arraybuffer")),!n||"object"!=typeof n.headers||n.headers instanceof h?c.headers.forEach((function(e,t){u.setRequestHeader(t,e)})):Object.getOwnPropertyNames(n.headers).forEach((function(e){u.setRequestHeader(e,d(n.headers[e]))})),c.signal&&(c.signal.addEventListener("abort",l),u.onreadystatechange=function(){4===u.readyState&&c.signal.removeEventListener("abort",l)}),u.send(void 0===c._bodyInit?null:c._bodyInit)}))}O.polyfill=!0,r.fetch||(r.fetch=O,r.Headers=h,r.Request=_,r.Response=T),t.Headers=h,t.Request=_,t.Response=T,t.fetch=O}({})}(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var a=n.fetch?n:i;(t=a.fetch).default=a.fetch,t.fetch=a.fetch,t.Headers=a.Headers,t.Request=a.Request,t.Response=a.Response,e.exports=t},36593:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.attributeNames=t.elementNames=void 0,t.elementNames=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map((function(e){return[e.toLowerCase(),e]}))),t.attributeNames=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((function(e){return[e.toLowerCase(),e]})))},5193:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r");case s.Comment:return"\x3c!--".concat(e.data,"--\x3e");case s.CDATA:return function(e){return"")}(e);case s.Script:case s.Style:case s.Tag:return function(e,t){var r;"foreign"===t.xmlMode&&(e.name=null!==(r=u.elementNames.get(e.name))&&void 0!==r?r:e.name,e.parent&&y.has(e.parent.name)&&(t=n(n({},t),{xmlMode:!1}))),!t.xmlMode&&g.has(e.name)&&(t=n(n({},t),{xmlMode:"foreign"}));var i="<".concat(e.name),a=function(e,t){var r;if(e){var n=!1===(null!==(r=t.encodeEntities)&&void 0!==r?r:t.decodeEntities)?d:t.xmlMode||"utf8"!==t.encodeEntities?c.encodeXML:c.escapeAttribute;return Object.keys(e).map((function(r){var i,a,o=null!==(i=e[r])&&void 0!==i?i:"";return"foreign"===t.xmlMode&&(r=null!==(a=u.attributeNames.get(r))&&void 0!==a?a:r),t.emptyAttrs||t.xmlMode||""!==o?"".concat(r,'="').concat(n(o),'"'):r})).join(" ")}}(e.attribs,t);return a&&(i+=" ".concat(a)),0===e.children.length&&(t.xmlMode?!1!==t.selfClosingTags:t.selfClosingTags&&p.has(e.name))?(t.xmlMode||(i+=" "),i+="/>"):(i+=">",e.children.length>0&&(i+=h(e.children,t)),!t.xmlMode&&p.has(e.name)||(i+=""))),i}(e,t);case s.Text:return function(e,t){var r,n=e.data||"";return!1===(null!==(r=t.encodeEntities)&&void 0!==r?r:t.decodeEntities)||!t.xmlMode&&e.parent&&l.has(e.parent.name)||(n=t.xmlMode||"utf8"!==t.encodeEntities?(0,c.encodeXML)(n):(0,c.escapeText)(n)),n}(e,t)}}t.render=h,t.default=h;var y=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),g=new Set(["svg","math"])},93338:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.Doctype=t.CDATA=t.Tag=t.Style=t.Script=t.Comment=t.Directive=t.Text=t.Root=t.isTag=t.ElementType=void 0,function(e){e.Root="root",e.Text="text",e.Directive="directive",e.Comment="comment",e.Script="script",e.Style="style",e.Tag="tag",e.CDATA="cdata",e.Doctype="doctype"}(r=t.ElementType||(t.ElementType={})),t.isTag=function(e){return e.type===r.Tag||e.type===r.Script||e.type===r.Style},t.Root=r.Root,t.Text=r.Text,t.Directive=r.Directive,t.Comment=r.Comment,t.Script=r.Script,t.Style=r.Style,t.Tag=r.Tag,t.CDATA=r.CDATA,t.Doctype=r.Doctype},21138:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.DomHandler=void 0;var a=r(93338),o=r(62888);i(r(62888),t);var s={withStartIndices:!1,withEndIndices:!1,xmlMode:!1},c=function(){function e(e,t,r){this.dom=[],this.root=new o.Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,"function"==typeof t&&(r=t,t=s),"object"==typeof e&&(t=e,e=void 0),this.callback=null!=e?e:null,this.options=null!=t?t:s,this.elementCB=null!=r?r:null}return e.prototype.onparserinit=function(e){this.parser=e},e.prototype.onreset=function(){this.dom=[],this.root=new o.Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null},e.prototype.onend=function(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))},e.prototype.onerror=function(e){this.handleCallback(e)},e.prototype.onclosetag=function(){this.lastNode=null;var e=this.tagStack.pop();this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(e)},e.prototype.onopentag=function(e,t){var r=this.options.xmlMode?a.ElementType.Tag:void 0,n=new o.Element(e,t,void 0,r);this.addNode(n),this.tagStack.push(n)},e.prototype.ontext=function(e){var t=this.lastNode;if(t&&t.type===a.ElementType.Text)t.data+=e,this.options.withEndIndices&&(t.endIndex=this.parser.endIndex);else{var r=new o.Text(e);this.addNode(r),this.lastNode=r}},e.prototype.oncomment=function(e){if(this.lastNode&&this.lastNode.type===a.ElementType.Comment)this.lastNode.data+=e;else{var t=new o.Comment(e);this.addNode(t),this.lastNode=t}},e.prototype.oncommentend=function(){this.lastNode=null},e.prototype.oncdatastart=function(){var e=new o.Text(""),t=new o.CDATA([e]);this.addNode(t),e.parent=t,this.lastNode=e},e.prototype.oncdataend=function(){this.lastNode=null},e.prototype.onprocessinginstruction=function(e,t){var r=new o.ProcessingInstruction(e,t);this.addNode(r)},e.prototype.handleCallback=function(e){if("function"==typeof this.callback)this.callback(e,this.dom);else if(e)throw e},e.prototype.addNode=function(e){var t=this.tagStack[this.tagStack.length-1],r=t.children[t.children.length-1];this.options.withStartIndices&&(e.startIndex=this.parser.startIndex),this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),t.children.push(e),r&&(e.prev=r,r.next=e),e.parent=t,this.lastNode=null},e}();t.DomHandler=c,t.default=c},62888:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),a=this&&this.__assign||function(){return a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0?this.children[this.children.length-1]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"childNodes",{get:function(){return this.children},set:function(e){this.children=e},enumerable:!1,configurable:!0}),t}(s);t.NodeWithChildren=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type=o.ElementType.CDATA,t}return i(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 4},enumerable:!1,configurable:!0}),t}(p);t.CDATA=h;var f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type=o.ElementType.Root,t}return i(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 9},enumerable:!1,configurable:!0}),t}(p);t.Document=f;var y=function(e){function t(t,r,n,i){void 0===n&&(n=[]),void 0===i&&(i="script"===t?o.ElementType.Script:"style"===t?o.ElementType.Style:o.ElementType.Tag);var a=e.call(this,n)||this;return a.name=t,a.attribs=r,a.type=i,a}return i(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tagName",{get:function(){return this.name},set:function(e){this.name=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"attributes",{get:function(){var e=this;return Object.keys(this.attribs).map((function(t){var r,n;return{name:t,value:e.attribs[t],namespace:null===(r=e["x-attribsNamespace"])||void 0===r?void 0:r[t],prefix:null===(n=e["x-attribsPrefix"])||void 0===n?void 0:n[t]}}))},enumerable:!1,configurable:!0}),t}(p);function g(e){return(0,o.isTag)(e)}function m(e){return e.type===o.ElementType.CDATA}function b(e){return e.type===o.ElementType.Text}function v(e){return e.type===o.ElementType.Comment}function _(e){return e.type===o.ElementType.Directive}function w(e){return e.type===o.ElementType.Root}function T(e,t){var r;if(void 0===t&&(t=!1),b(e))r=new u(e.data);else if(v(e))r=new l(e.data);else if(g(e)){var n=t?S(e.children):[],i=new y(e.name,a({},e.attribs),n);n.forEach((function(e){return e.parent=i})),null!=e.namespace&&(i.namespace=e.namespace),e["x-attribsNamespace"]&&(i["x-attribsNamespace"]=a({},e["x-attribsNamespace"])),e["x-attribsPrefix"]&&(i["x-attribsPrefix"]=a({},e["x-attribsPrefix"])),r=i}else if(m(e)){n=t?S(e.children):[];var o=new h(n);n.forEach((function(e){return e.parent=o})),r=o}else if(w(e)){n=t?S(e.children):[];var s=new f(n);n.forEach((function(e){return e.parent=s})),e["x-mode"]&&(s["x-mode"]=e["x-mode"]),r=s}else{if(!_(e))throw new Error("Not implemented yet: ".concat(e.type));var c=new d(e.name,e.data);null!=e["x-name"]&&(c["x-name"]=e["x-name"],c["x-publicId"]=e["x-publicId"],c["x-systemId"]=e["x-systemId"]),r=c}return r.startIndex=e.startIndex,r.endIndex=e.endIndex,null!=e.sourceCodeLocation&&(r.sourceCodeLocation=e.sourceCodeLocation),r}function S(e){for(var t=e.map((function(e){return T(e,!0)})),r=1;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getFeed=void 0;var n=r(68642),i=r(78052);t.getFeed=function(e){var t=c(d,e);return t?"feed"===t.name?function(e){var t,r=e.children,n={type:"atom",items:(0,i.getElementsByTagName)("entry",r).map((function(e){var t,r=e.children,n={media:s(r)};l(n,"id","id",r),l(n,"title","title",r);var i=null===(t=c("link",r))||void 0===t?void 0:t.attribs.href;i&&(n.link=i);var a=u("summary",r)||u("content",r);a&&(n.description=a);var o=u("updated",r);return o&&(n.pubDate=new Date(o)),n}))};l(n,"id","id",r),l(n,"title","title",r);var a=null===(t=c("link",r))||void 0===t?void 0:t.attribs.href;a&&(n.link=a),l(n,"description","subtitle",r);var o=u("updated",r);return o&&(n.updated=new Date(o)),l(n,"author","email",r,!0),n}(t):function(e){var t,r,n=null!==(r=null===(t=c("channel",e.children))||void 0===t?void 0:t.children)&&void 0!==r?r:[],a={type:e.name.substr(0,3),id:"",items:(0,i.getElementsByTagName)("item",e.children).map((function(e){var t=e.children,r={media:s(t)};l(r,"id","guid",t),l(r,"title","title",t),l(r,"link","link",t),l(r,"description","description",t);var n=u("pubDate",t)||u("dc:date",t);return n&&(r.pubDate=new Date(n)),r}))};l(a,"title","title",n),l(a,"link","link",n),l(a,"description","description",n);var o=u("lastBuildDate",n);return o&&(a.updated=new Date(o)),l(a,"author","managingEditor",n,!0),a}(t):null};var a=["url","type","lang"],o=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];function s(e){return(0,i.getElementsByTagName)("media:content",e).map((function(e){for(var t=e.attribs,r={medium:t.medium,isDefault:!!t.isDefault},n=0,i=a;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uniqueSort=t.compareDocumentPosition=t.DocumentPosition=t.removeSubsets=void 0;var n,i=r(21138);function a(e,t){var r=[],a=[];if(e===t)return 0;for(var o=(0,i.hasChildren)(e)?e:e.parent;o;)r.unshift(o),o=o.parent;for(o=(0,i.hasChildren)(t)?t:t.parent;o;)a.unshift(o),o=o.parent;for(var s=Math.min(r.length,a.length),c=0;cl.indexOf(p)?u===t?n.FOLLOWING|n.CONTAINED_BY:n.FOLLOWING:u===e?n.PRECEDING|n.CONTAINS:n.PRECEDING}t.removeSubsets=function(e){for(var t=e.length;--t>=0;){var r=e[t];if(t>0&&e.lastIndexOf(r,t-1)>=0)e.splice(t,1);else for(var n=r.parent;n;n=n.parent)if(e.includes(n)){e.splice(t,1);break}}return e},function(e){e[e.DISCONNECTED=1]="DISCONNECTED",e[e.PRECEDING=2]="PRECEDING",e[e.FOLLOWING=4]="FOLLOWING",e[e.CONTAINS=8]="CONTAINS",e[e.CONTAINED_BY=16]="CONTAINED_BY"}(n=t.DocumentPosition||(t.DocumentPosition={})),t.compareDocumentPosition=a,t.uniqueSort=function(e){return(e=e.filter((function(e,t,r){return!r.includes(e,t+1)}))).sort((function(e,t){var r=a(e,t);return r&n.PRECEDING?-1:r&n.FOLLOWING?1:0})),e}},76403:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.hasChildren=t.isDocument=t.isComment=t.isText=t.isCDATA=t.isTag=void 0,i(r(68642),t),i(r(45517),t),i(r(46178),t),i(r(51467),t),i(r(78052),t),i(r(83698),t),i(r(91206),t);var a=r(21138);Object.defineProperty(t,"isTag",{enumerable:!0,get:function(){return a.isTag}}),Object.defineProperty(t,"isCDATA",{enumerable:!0,get:function(){return a.isCDATA}}),Object.defineProperty(t,"isText",{enumerable:!0,get:function(){return a.isText}}),Object.defineProperty(t,"isComment",{enumerable:!0,get:function(){return a.isComment}}),Object.defineProperty(t,"isDocument",{enumerable:!0,get:function(){return a.isDocument}}),Object.defineProperty(t,"hasChildren",{enumerable:!0,get:function(){return a.hasChildren}})},78052:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getElementsByTagType=t.getElementsByTagName=t.getElementById=t.getElements=t.testElement=void 0;var n=r(21138),i=r(51467),a={tag_name:function(e){return"function"==typeof e?function(t){return(0,n.isTag)(t)&&e(t.name)}:"*"===e?n.isTag:function(t){return(0,n.isTag)(t)&&t.name===e}},tag_type:function(e){return"function"==typeof e?function(t){return e(t.type)}:function(t){return t.type===e}},tag_contains:function(e){return"function"==typeof e?function(t){return(0,n.isText)(t)&&e(t.data)}:function(t){return(0,n.isText)(t)&&t.data===e}}};function o(e,t){return"function"==typeof t?function(r){return(0,n.isTag)(r)&&t(r.attribs[e])}:function(r){return(0,n.isTag)(r)&&r.attribs[e]===t}}function s(e,t){return function(r){return e(r)||t(r)}}function c(e){var t=Object.keys(e).map((function(t){var r=e[t];return Object.prototype.hasOwnProperty.call(a,t)?a[t](r):o(t,r)}));return 0===t.length?null:t.reduce(s)}t.testElement=function(e,t){var r=c(e);return!r||r(t)},t.getElements=function(e,t,r,n){void 0===n&&(n=1/0);var a=c(e);return a?(0,i.filter)(a,t,r,n):[]},t.getElementById=function(e,t,r){return void 0===r&&(r=!0),Array.isArray(t)||(t=[t]),(0,i.findOne)(o("id",e),t,r)},t.getElementsByTagName=function(e,t,r,n){return void 0===r&&(r=!0),void 0===n&&(n=1/0),(0,i.filter)(a.tag_name(e),t,r,n)},t.getElementsByTagType=function(e,t,r,n){return void 0===r&&(r=!0),void 0===n&&(n=1/0),(0,i.filter)(a.tag_type(e),t,r,n)}},46178:(e,t)=>{"use strict";function r(e){if(e.prev&&(e.prev.next=e.next),e.next&&(e.next.prev=e.prev),e.parent){var t=e.parent.children,r=t.lastIndexOf(e);r>=0&&t.splice(r,1)}e.next=null,e.prev=null,e.parent=null}Object.defineProperty(t,"__esModule",{value:!0}),t.prepend=t.prependChild=t.append=t.appendChild=t.replaceElement=t.removeElement=void 0,t.removeElement=r,t.replaceElement=function(e,t){var r=t.prev=e.prev;r&&(r.next=t);var n=t.next=e.next;n&&(n.prev=t);var i=t.parent=e.parent;if(i){var a=i.children;a[a.lastIndexOf(e)]=t,e.parent=null}},t.appendChild=function(e,t){if(r(t),t.next=null,t.parent=e,e.children.push(t)>1){var n=e.children[e.children.length-2];n.next=t,t.prev=n}else t.prev=null},t.append=function(e,t){r(t);var n=e.parent,i=e.next;if(t.next=i,t.prev=e,e.next=t,t.parent=n,i){if(i.prev=t,n){var a=n.children;a.splice(a.lastIndexOf(i),0,t)}}else n&&n.children.push(t)},t.prependChild=function(e,t){if(r(t),t.parent=e,t.prev=null,1!==e.children.unshift(t)){var n=e.children[1];n.prev=t,t.next=n}else t.next=null},t.prepend=function(e,t){r(t);var n=e.parent;if(n){var i=n.children;i.splice(i.indexOf(e),0,t)}e.prev&&(e.prev.next=t),t.parent=n,t.prev=e.prev,t.next=e,e.prev=t}},51467:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.findAll=t.existsOne=t.findOne=t.findOneChild=t.find=t.filter=void 0;var n=r(21138);function i(e,t,r,i){for(var a=[],o=[t],s=[0];;)if(s[0]>=o[0].length){if(1===s.length)return a;o.shift(),s.shift()}else{var c=o[0][s[0]++];if(e(c)&&(a.push(c),--i<=0))return a;r&&(0,n.hasChildren)(c)&&c.children.length>0&&(s.unshift(0),o.unshift(c.children))}}t.filter=function(e,t,r,n){return void 0===r&&(r=!0),void 0===n&&(n=1/0),i(e,Array.isArray(t)?t:[t],r,n)},t.find=i,t.findOneChild=function(e,t){return t.find(e)},t.findOne=function e(t,r,i){void 0===i&&(i=!0);for(var a=null,o=0;o0&&(a=e(t,s.children,!0)))}return a},t.existsOne=function e(t,r){return r.some((function(r){return(0,n.isTag)(r)&&(t(r)||e(t,r.children))}))},t.findAll=function(e,t){for(var r=[],i=[t],a=[0];;)if(a[0]>=i[0].length){if(1===i.length)return r;i.shift(),a.shift()}else{var o=i[0][a[0]++];(0,n.isTag)(o)&&(e(o)&&r.push(o),o.children.length>0&&(a.unshift(0),i.unshift(o.children)))}}},68642:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.innerText=t.textContent=t.getText=t.getInnerHTML=t.getOuterHTML=void 0;var i=r(21138),a=n(r(5193)),o=r(93338);function s(e,t){return(0,a.default)(e,t)}t.getOuterHTML=s,t.getInnerHTML=function(e,t){return(0,i.hasChildren)(e)?e.children.map((function(e){return s(e,t)})).join(""):""},t.getText=function e(t){return Array.isArray(t)?t.map(e).join(""):(0,i.isTag)(t)?"br"===t.name?"\n":e(t.children):(0,i.isCDATA)(t)?e(t.children):(0,i.isText)(t)?t.data:""},t.textContent=function e(t){return Array.isArray(t)?t.map(e).join(""):(0,i.hasChildren)(t)&&!(0,i.isComment)(t)?e(t.children):(0,i.isText)(t)?t.data:""},t.innerText=function e(t){return Array.isArray(t)?t.map(e).join(""):(0,i.hasChildren)(t)&&(t.type===o.ElementType.Tag||(0,i.isCDATA)(t))?e(t.children):(0,i.isText)(t)?t.data:""}},45517:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.prevElementSibling=t.nextElementSibling=t.getName=t.hasAttrib=t.getAttributeValue=t.getSiblings=t.getParent=t.getChildren=void 0;var n=r(21138);function i(e){return(0,n.hasChildren)(e)?e.children:[]}function a(e){return e.parent||null}t.getChildren=i,t.getParent=a,t.getSiblings=function(e){var t=a(e);if(null!=t)return i(t);for(var r=[e],n=e.prev,o=e.next;null!=n;)r.unshift(n),n=n.prev;for(;null!=o;)r.push(o),o=o.next;return r},t.getAttributeValue=function(e,t){var r;return null===(r=e.attribs)||void 0===r?void 0:r[t]},t.hasAttrib=function(e,t){return null!=e.attribs&&Object.prototype.hasOwnProperty.call(e.attribs,t)&&null!=e.attribs[t]},t.getName=function(e){return e.name},t.nextElementSibling=function(e){for(var t=e.next;null!==t&&!(0,n.isTag)(t);)t=t.next;return t},t.prevElementSibling=function(e){for(var t=e.prev;null!==t&&!(0,n.isTag)(t);)t=t.prev;return t}},3379:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.decodeXML=t.decodeHTMLStrict=t.decodeHTMLAttribute=t.decodeHTML=t.determineBranch=t.EntityDecoder=t.DecodingMode=t.BinTrieFlags=t.fromCodePoint=t.replaceCodePoint=t.decodeCodePoint=t.xmlDecodeTree=t.htmlDecodeTree=void 0;var s=o(r(57346));t.htmlDecodeTree=s.default;var c=o(r(18622));t.xmlDecodeTree=c.default;var u=a(r(22809));t.decodeCodePoint=u.default;var l,d,p,h,f=r(22809);function y(e){return e>=l.ZERO&&e<=l.NINE}Object.defineProperty(t,"replaceCodePoint",{enumerable:!0,get:function(){return f.replaceCodePoint}}),Object.defineProperty(t,"fromCodePoint",{enumerable:!0,get:function(){return f.fromCodePoint}}),function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"}(l||(l={})),function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"}(d=t.BinTrieFlags||(t.BinTrieFlags={})),function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"}(p||(p={})),function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"}(h=t.DecodingMode||(t.DecodingMode={}));var g=function(){function e(e,t,r){this.decodeTree=e,this.emitCodePoint=t,this.errors=r,this.state=p.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=h.Strict}return e.prototype.startEntity=function(e){this.decodeMode=e,this.state=p.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1},e.prototype.write=function(e,t){switch(this.state){case p.EntityStart:return e.charCodeAt(t)===l.NUM?(this.state=p.NumericStart,this.consumed+=1,this.stateNumericStart(e,t+1)):(this.state=p.NamedEntity,this.stateNamedEntity(e,t));case p.NumericStart:return this.stateNumericStart(e,t);case p.NumericDecimal:return this.stateNumericDecimal(e,t);case p.NumericHex:return this.stateNumericHex(e,t);case p.NamedEntity:return this.stateNamedEntity(e,t)}},e.prototype.stateNumericStart=function(e,t){return t>=e.length?-1:(32|e.charCodeAt(t))===l.LOWER_X?(this.state=p.NumericHex,this.consumed+=1,this.stateNumericHex(e,t+1)):(this.state=p.NumericDecimal,this.stateNumericDecimal(e,t))},e.prototype.addToNumericResult=function(e,t,r,n){if(t!==r){var i=r-t;this.result=this.result*Math.pow(n,i)+parseInt(e.substr(t,i),n),this.consumed+=i}},e.prototype.stateNumericHex=function(e,t){for(var r,n=t;t=l.UPPER_A&&r<=l.UPPER_F||r>=l.LOWER_A&&r<=l.LOWER_F)))return this.addToNumericResult(e,n,t,16),this.emitNumericEntity(i,3);t+=1}return this.addToNumericResult(e,n,t,16),-1},e.prototype.stateNumericDecimal=function(e,t){for(var r=t;t>14;t=l.UPPER_A&&e<=l.UPPER_Z||e>=l.LOWER_A&&e<=l.LOWER_Z||y(e)}(o)))?0:this.emitNotTerminatedNamedEntity();if(0!=(i=((n=r[this.treeIndex])&d.VALUE_LENGTH)>>14)){if(a===l.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==h.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}var o;return-1},e.prototype.emitNotTerminatedNamedEntity=function(){var e,t=this.result,r=(this.decodeTree[t]&d.VALUE_LENGTH)>>14;return this.emitNamedEntityData(t,r,this.consumed),null===(e=this.errors)||void 0===e||e.missingSemicolonAfterCharacterReference(),this.consumed},e.prototype.emitNamedEntityData=function(e,t,r){var n=this.decodeTree;return this.emitCodePoint(1===t?n[e]&~d.VALUE_LENGTH:n[e+1],r),3===t&&this.emitCodePoint(n[e+2],r),r},e.prototype.end=function(){var e;switch(this.state){case p.NamedEntity:return 0===this.result||this.decodeMode===h.Attribute&&this.result!==this.treeIndex?0:this.emitNotTerminatedNamedEntity();case p.NumericDecimal:return this.emitNumericEntity(0,2);case p.NumericHex:return this.emitNumericEntity(0,3);case p.NumericStart:return null===(e=this.errors)||void 0===e||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case p.EntityStart:return 0}},e}();function m(e){var t="",r=new g(e,(function(e){return t+=(0,u.fromCodePoint)(e)}));return function(e,n){for(var i=0,a=0;(a=e.indexOf("&",a))>=0;){t+=e.slice(i,a),r.startEntity(n);var o=r.write(e,a+1);if(o<0){i=a+r.end();break}i=a+o,a=0===o?i+1:i}var s=t+e.slice(i);return t="",s}}function b(e,t,r,n){var i=(t&d.BRANCH_LENGTH)>>7,a=t&d.JUMP_TABLE;if(0===i)return 0!==a&&n===a?r:-1;if(a){var o=n-a;return o<0||o>=i?-1:e[r+o]-1}for(var s=r,c=s+i-1;s<=c;){var u=s+c>>>1,l=e[u];if(ln))return e[u+i];c=u-1}}return-1}t.EntityDecoder=g,t.determineBranch=b;var v=m(s.default),_=m(c.default);t.decodeHTML=function(e,t){return void 0===t&&(t=h.Legacy),v(e,t)},t.decodeHTMLAttribute=function(e){return v(e,h.Attribute)},t.decodeHTMLStrict=function(e){return v(e,h.Strict)},t.decodeXML=function(e){return _(e,h.Strict)}},22809:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.replaceCodePoint=t.fromCodePoint=void 0;var n=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function i(e){var t;return e>=55296&&e<=57343||e>1114111?65533:null!==(t=n.get(e))&&void 0!==t?t:e}t.fromCodePoint=null!==(r=String.fromCodePoint)&&void 0!==r?r:function(e){var t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e),t+String.fromCharCode(e)},t.replaceCodePoint=i,t.default=function(e){return(0,t.fromCodePoint)(i(e))}},33231:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.encodeNonAsciiHTML=t.encodeHTML=void 0;var i=n(r(58635)),a=r(57078),o=/[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;function s(e,t){for(var r,n="",o=0;null!==(r=e.exec(t));){var s=r.index;n+=t.substring(o,s);var c=t.charCodeAt(s),u=i.default.get(c);if("object"==typeof u){if(s+1{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.escapeText=t.escapeAttribute=t.escapeUTF8=t.escape=t.encodeXML=t.getCodePoint=t.xmlReplacer=void 0,t.xmlReplacer=/["&'<>$\x80-\uFFFF]/g;var r=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]);function n(e){for(var n,i="",a=0;null!==(n=t.xmlReplacer.exec(e));){var o=n.index,s=e.charCodeAt(o),c=r.get(s);void 0!==c?(i+=e.substring(a,o)+c,a=o+1):(i+="".concat(e.substring(a,o),"&#x").concat((0,t.getCodePoint)(e,o).toString(16),";"),a=t.xmlReplacer.lastIndex+=Number(55296==(64512&s)))}return i+e.substr(a)}function i(e,t){return function(r){for(var n,i=0,a="";n=e.exec(r);)i!==n.index&&(a+=r.substring(i,n.index)),a+=t.get(n[0].charCodeAt(0)),i=n.index+1;return a+r.substring(i)}}t.getCodePoint=null!=String.prototype.codePointAt?function(e,t){return e.codePointAt(t)}:function(e,t){return 55296==(64512&e.charCodeAt(t))?1024*(e.charCodeAt(t)-55296)+e.charCodeAt(t+1)-56320+65536:e.charCodeAt(t)},t.encodeXML=n,t.escape=n,t.escapeUTF8=i(/[&<>'"]/g,r),t.escapeAttribute=i(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),t.escapeText=i(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]))},57346:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map((function(e){return e.charCodeAt(0)})))},18622:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=new Uint16Array("Ȁaglq\tɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map((function(e){return e.charCodeAt(0)})))},58635:(e,t)=>{"use strict";function r(e){for(var t=1;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decodeXMLStrict=t.decodeHTML5Strict=t.decodeHTML4Strict=t.decodeHTML5=t.decodeHTML4=t.decodeHTMLAttribute=t.decodeHTMLStrict=t.decodeHTML=t.decodeXML=t.DecodingMode=t.EntityDecoder=t.encodeHTML5=t.encodeHTML4=t.encodeNonAsciiHTML=t.encodeHTML=t.escapeText=t.escapeAttribute=t.escapeUTF8=t.escape=t.encodeXML=t.encode=t.decodeStrict=t.decode=t.EncodingMode=t.EntityLevel=void 0;var n,i,a=r(3379),o=r(33231),s=r(57078);function c(e,t){if(void 0===t&&(t=n.XML),("number"==typeof t?t:t.level)===n.HTML){var r="object"==typeof t?t.mode:void 0;return(0,a.decodeHTML)(e,r)}return(0,a.decodeXML)(e)}!function(e){e[e.XML=0]="XML",e[e.HTML=1]="HTML"}(n=t.EntityLevel||(t.EntityLevel={})),function(e){e[e.UTF8=0]="UTF8",e[e.ASCII=1]="ASCII",e[e.Extensive=2]="Extensive",e[e.Attribute=3]="Attribute",e[e.Text=4]="Text"}(i=t.EncodingMode||(t.EncodingMode={})),t.decode=c,t.decodeStrict=function(e,t){var r;void 0===t&&(t=n.XML);var i="number"==typeof t?{level:t}:t;return null!==(r=i.mode)&&void 0!==r||(i.mode=a.DecodingMode.Strict),c(e,i)},t.encode=function(e,t){void 0===t&&(t=n.XML);var r="number"==typeof t?{level:t}:t;return r.mode===i.UTF8?(0,s.escapeUTF8)(e):r.mode===i.Attribute?(0,s.escapeAttribute)(e):r.mode===i.Text?(0,s.escapeText)(e):r.level===n.HTML?r.mode===i.ASCII?(0,o.encodeNonAsciiHTML)(e):(0,o.encodeHTML)(e):(0,s.encodeXML)(e)};var u=r(57078);Object.defineProperty(t,"encodeXML",{enumerable:!0,get:function(){return u.encodeXML}}),Object.defineProperty(t,"escape",{enumerable:!0,get:function(){return u.escape}}),Object.defineProperty(t,"escapeUTF8",{enumerable:!0,get:function(){return u.escapeUTF8}}),Object.defineProperty(t,"escapeAttribute",{enumerable:!0,get:function(){return u.escapeAttribute}}),Object.defineProperty(t,"escapeText",{enumerable:!0,get:function(){return u.escapeText}});var l=r(33231);Object.defineProperty(t,"encodeHTML",{enumerable:!0,get:function(){return l.encodeHTML}}),Object.defineProperty(t,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return l.encodeNonAsciiHTML}}),Object.defineProperty(t,"encodeHTML4",{enumerable:!0,get:function(){return l.encodeHTML}}),Object.defineProperty(t,"encodeHTML5",{enumerable:!0,get:function(){return l.encodeHTML}});var d=r(3379);Object.defineProperty(t,"EntityDecoder",{enumerable:!0,get:function(){return d.EntityDecoder}}),Object.defineProperty(t,"DecodingMode",{enumerable:!0,get:function(){return d.DecodingMode}}),Object.defineProperty(t,"decodeXML",{enumerable:!0,get:function(){return d.decodeXML}}),Object.defineProperty(t,"decodeHTML",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(t,"decodeHTMLStrict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTMLAttribute",{enumerable:!0,get:function(){return d.decodeHTMLAttribute}}),Object.defineProperty(t,"decodeHTML4",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(t,"decodeHTML5",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(t,"decodeHTML4Strict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTML5Strict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(t,"decodeXMLStrict",{enumerable:!0,get:function(){return d.decodeXML}})},35033:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.promisifyEventEmitter=void 0,t.promisifyEventEmitter=function(e,t){return new Promise(((r,n)=>{e.on("end",(()=>r(t))),e.on("error",n)}))}},50046:e=>{"use strict";var t,r="object"==typeof Reflect?Reflect:null,n=r&&"function"==typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}e.exports=a,e.exports.once=function(e,t){return new Promise((function(r,n){function i(r){e.removeListener(t,a),n(r)}function a(){"function"==typeof e.removeListener&&e.removeListener("error",i),r([].slice.call(arguments))}y(e,t,a,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&y(e,"error",t,{once:!0})}(e,i)}))},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var o=10;function s(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function c(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function u(e,t,r,n){var i,a,o,u;if(s(r),void 0===(a=e._events)?(a=e._events=Object.create(null),e._eventsCount=0):(void 0!==a.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),a=e._events),o=a[t]),void 0===o)o=a[t]=r,++e._eventsCount;else if("function"==typeof o?o=a[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),(i=c(e))>0&&o.length>i&&!o.warned){o.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=o.length,u=l,console&&console.warn&&console.warn(u)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=l.bind(n);return i.listener=r,n.wrapFn=i,i}function p(e,t,r){var n=e._events;if(void 0===n)return[];var i=n[t];return void 0===i?[]:"function"==typeof i?r?[i.listener||i]:[i]:r?function(e){for(var t=new Array(e.length),r=0;r0&&(o=t[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var c=a[e];if(void 0===c)return!1;if("function"==typeof c)n(c,this,t);else{var u=c.length,l=f(c,u);for(r=0;r=0;a--)if(r[a]===t||r[a].listener===t){o=r[a].listener,i=a;break}if(i<0)return this;0===i?r.shift():function(e,t){for(;t+1=0;n--)this.removeListener(e,t[n]);return this},a.prototype.listeners=function(e){return p(this,e,!0)},a.prototype.rawListeners=function(e){return p(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):h.call(e,t)},a.prototype.listenerCount=h,a.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},53933:e=>{"use strict";e.exports=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,i,a;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(i=n;0!=i--;)if(!e(t[i],r[i]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(i of t.entries())if(!r.has(i[0]))return!1;for(i of t.entries())if(!e(i[1],r.get(i[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(i of t.entries())if(!r.has(i[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if((n=t.length)!=r.length)return!1;for(i=n;0!=i--;)if(t[i]!==r[i])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((n=(a=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(i=n;0!=i--;)if(!Object.prototype.hasOwnProperty.call(r,a[i]))return!1;for(i=n;0!=i--;){var o=a[i];if(!e(t[o],r[o]))return!1}return!0}return t!=t&&r!=r}},74190:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(92681),t)},92681:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SparqlEndpointFetcher=void 0,r(45766);const n=r(55403),i=r(21451),a=r(52666),o=r(76574),s=r(52267),c=r(72243),u=r(76605);class l{constructor(e){e=e||{},this.method=e.method||"POST",this.additionalUrlParams=e.additionalUrlParams||new URLSearchParams,this.defaultHeaders=e.defaultHeaders||new Headers,this.fetchCb=e.fetch,this.sparqlJsonParser=new i.SparqlJsonParser(e),this.sparqlXmlParser=new a.SparqlXmlParser(e),this.sparqlParsers={[l.CONTENTTYPE_SPARQL_JSON]:{parseBooleanStream:e=>this.sparqlJsonParser.parseJsonBooleanStream(e),parseResultsStream:e=>this.sparqlJsonParser.parseJsonResultsStream(e)},[l.CONTENTTYPE_SPARQL_XML]:{parseBooleanStream:e=>this.sparqlXmlParser.parseXmlBooleanStream(e),parseResultsStream:e=>this.sparqlXmlParser.parseXmlResultsStream(e)}},this.timeout=e.timeout}getQueryType(e){const t=new n.Parser({sparqlStar:!0}).parse(e);return"query"===t.type?"DESCRIBE"===t.queryType?"CONSTRUCT":t.queryType:"UNKNOWN"}getUpdateTypes(e){const t=new n.Parser({sparqlStar:!0}).parse(e);if("update"===t.type){const e={};for(const r of t.updates)"type"in r?e[r.type]=!0:e[r.updateType]=!0;return e}return"UNKNOWN"}async fetchBindings(e,t){const[r,n]=await this.fetchRawStream(e,t,l.CONTENTTYPE_SPARQL),i=this.sparqlParsers[r];if(!i)throw new Error("Unknown SPARQL results content type: "+r);return i.parseResultsStream(n)}async fetchAsk(e,t){const[r,n]=await this.fetchRawStream(e,t,l.CONTENTTYPE_SPARQL),i=this.sparqlParsers[r];if(!i)throw new Error("Unknown SPARQL results content type: "+r);return i.parseBooleanStream(n)}async fetchTriples(e,t){return(await this.fetchRawStream(e,t,l.CONTENTTYPE_TURTLE))[1].pipe(new c.StreamParser({format:l.CONTENTTYPE_TURTLE}))}async fetchUpdate(e,t){const n=new(globalThis.AbortController||await Promise.resolve().then((()=>r(67083)))),i={};this.defaultHeaders.forEach(((e,t)=>{i[t]=e}));const a={method:"POST",headers:Object.assign(Object.assign({},i),{"content-type":"application/sparql-update"}),body:t,signal:n.signal};await this.handleFetchCall(e,a,{ignoreBody:!0}),n.abort()}async fetchRawStream(e,t,r){let n="POST"===this.method?e:e+"?query="+encodeURIComponent(t);const i=new Headers(this.defaultHeaders);let a;return i.append("Accept",r),"POST"===this.method?(i.append("Content-Type","application/x-www-form-urlencoded"),a=new URLSearchParams,a.set("query",t),this.additionalUrlParams.forEach(((e,t)=>{a.set(t,e)})),i.append("Content-Length",a.toString().length.toString())):""!==this.additionalUrlParams.toString()&&(n+=`&${this.additionalUrlParams.toString()}`),this.handleFetchCall(n,{headers:i,method:this.method,body:a})}async handleFetchCall(e,t,r={}){let n;if(this.timeout){const e=new AbortController;t.signal=e.signal,n=setTimeout((()=>e.abort()),this.timeout)}const i=await(this.fetchCb||fetch)(e,t);let a;clearTimeout(n),r.ignoreBody||(a=u(i.body)?i.body:new s.ReadableWebToNodeStream(i.body));let c=i.headers.get("Content-Type")||"";if(c.indexOf(";")>0&&(c=c.substr(0,c.indexOf(";"))),!i.ok){const t=/^[^?]*/u.exec(e)[0];let r="empty response";throw a&&(r=await o(a)),new Error(`Invalid SPARQL endpoint response from ${t} (HTTP status ${i.status}):\n${r}`)}return[c,a]}}l.CONTENTTYPE_SPARQL_JSON="application/sparql-results+json",l.CONTENTTYPE_SPARQL_XML="application/sparql-results+xml",l.CONTENTTYPE_SPARQL=`${l.CONTENTTYPE_SPARQL_JSON};q=1.0,${l.CONTENTTYPE_SPARQL_XML};q=0.7`,l.CONTENTTYPE_TURTLE="text/turtle",t.SparqlEndpointFetcher=l},45766:function(){!function(e){!function(t){var r="URLSearchParams"in e,n="Symbol"in e&&"iterator"in Symbol,i="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),a="FormData"in e,o="ArrayBuffer"in e;if(o)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function u(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function l(e){return"string"!=typeof e&&(e=String(e)),e}function d(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function p(e){this.map={},e instanceof p?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function h(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function f(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function y(e){var t=new FileReader,r=f(t);return t.readAsArrayBuffer(e),r}function g(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:i&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:a&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:r&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():o&&i&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=g(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):o&&(ArrayBuffer.prototype.isPrototypeOf(e)||c(e))?this._bodyArrayBuffer=g(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var e=h(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?h(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(y)}),this.text=function(){var e,t,r,n=h(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,r=f(t=new FileReader),t.readAsText(e),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?n:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function _(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function w(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new p(t.headers),this.url=t.url||"",this._initBody(e)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},m.call(v.prototype),m.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},w.error=function(){var e=new w(null,{status:0,statusText:""});return e.type="error",e};var T=[301,302,303,307,308];w.redirect=function(e,t){if(-1===T.indexOf(t))throw new RangeError("Invalid status code");return new w(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function S(e,r){return new Promise((function(n,a){var o=new v(e,r);if(o.signal&&o.signal.aborted)return a(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function c(){s.abort()}s.onload=function(){var e,t,r={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new p,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t)};r.url="responseURL"in s?s.responseURL:r.headers.get("X-Request-URL");var i="response"in s?s.response:s.responseText;n(new w(i,r))},s.onerror=function(){a(new TypeError("Network request failed"))},s.ontimeout=function(){a(new TypeError("Network request failed"))},s.onabort=function(){a(new t.DOMException("Aborted","AbortError"))},s.open(o.method,o.url,!0),"include"===o.credentials?s.withCredentials=!0:"omit"===o.credentials&&(s.withCredentials=!1),"responseType"in s&&i&&(s.responseType="blob"),o.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),o.signal&&(o.signal.addEventListener("abort",c),s.onreadystatechange=function(){4===s.readyState&&o.signal.removeEventListener("abort",c)}),s.send(void 0===o._bodyInit?null:o._bodyInit)}))}S.polyfill=!0,e.fetch||(e.fetch=S,e.Headers=p,e.Request=v,e.Response=w),t.Headers=p,t.Request=v,t.Response=w,t.fetch=S,Object.defineProperty(t,"__esModule",{value:!0})}({})}("undefined"!=typeof self?self:this)},1427:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(51812),t),i(r(26339),t),i(r(17762),t),i(r(12856),t),i(r(45147),t)},26339:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Converter=void 0;const i=r(44330),a=r(51812),o=r(96414),s=r(17762),c=r(45147);class u{constructor(e){(e=e||{}).variableDelimiter=e.variableDelimiter||"_",e.expressionVariableCounter=e.expressionVariableCounter||0,this.util=new c.Util(e),this.initializeNodeHandlers(e)}static registerNodeHandlers(e,t){e.registerNodeHandler(new a.NodeHandlerDocument(e,t)),e.registerNodeHandler(new a.NodeHandlerDefinitionOperation(e,t)),e.registerNodeHandler(new a.NodeHandlerDefinitionFragment(e,t)),e.registerNodeHandler(new a.NodeHandlerSelectionFragmentSpread(e,t)),e.registerNodeHandler(new a.NodeHandlerSelectionInlineFragment(e,t)),e.registerNodeHandler(new a.NodeHandlerSelectionField(e,t))}static registerNodeValueHandlers(e,t){e.registerNodeValueHandler(new a.NodeValueHandlerVariable(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerInt(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerFloat(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerString(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerBoolean(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerNull(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerEnum(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerList(e,t)),e.registerNodeValueHandler(new a.NodeValueHandlerObject(e,t))}static registerDirectiveNodeHandlers(e,t){e.registerDirectiveNodeHandler(new o.DirectiveNodeHandlerInclude(e,t)),e.registerDirectiveNodeHandler(new o.DirectiveNodeHandlerOptional(e,t)),e.registerDirectiveNodeHandler(new o.DirectiveNodeHandlerPlural(e,t)),e.registerDirectiveNodeHandler(new o.DirectiveNodeHandlerSingle(e,t)),e.registerDirectiveNodeHandler(new o.DirectiveNodeHandlerSkip(e,t))}graphqlToSparqlAlgebra(e,t,r){return n(this,void 0,void 0,(function*(){return this.graphqlToSparqlAlgebraRawContext(e,yield this.util.contextParser.parse(t),r)}))}graphqlToSparqlAlgebraRawContext(e,t,r){r=r||{};const n="string"==typeof e?(0,i.parse)(e):e,a={context:t,fragmentDefinitions:this.indexFragments(n),graph:this.util.dataFactory.defaultGraph(),path:[],singularizeState:s.SingularizeState.PLURAL,singularizeVariables:r.singularizeVariables||{},subject:null,terminalVariables:[],variablesDict:r.variablesDict||{},variablesMetaDict:{}};return this.util.handleNode(n,a)}indexFragments(e){const t={},r=[];for(const n of e.definitions)"FragmentDefinition"===n.kind?t[n.name.value]=n:r.push(n);return e.definitions=r,t}initializeNodeHandlers(e){u.registerNodeHandlers(this.util,e),u.registerNodeValueHandlers(this.util,e),u.registerDirectiveNodeHandlers(this.util,e)}}t.Converter=u},17762:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.SingularizeState=void 0,(r=t.SingularizeState||(t.SingularizeState={}))[r.SINGLE=0]="SINGLE",r[r.PLURAL=1]="PLURAL"},12856:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},45147:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;const n=r(18050),i=r(27202),a=r(91525);t.Util=class{constructor(e){this.nodeHandlers={},this.nodeValueHandlers={},this.directiveNodeHandlers={},this.settings=e,this.dataFactory=e.dataFactory||new n.DataFactory,this.operationFactory=new a.Factory(this.dataFactory),this.contextParser=new i.ContextParser}registerNodeHandler(e){this.nodeHandlers[e.targetKind]=e}registerNodeValueHandler(e){this.nodeValueHandlers[e.targetKind]=e}registerDirectiveNodeHandler(e){this.directiveNodeHandlers[e.targetKind]=e}handleNode(e,t){const r=this.nodeHandlers[e.kind];if(!r)throw new Error(`Unsupported GraphQL node '${e.kind}'`);return r.handle(e,t)}handleNodeValue(e,t,r){const n=this.nodeValueHandlers[e.kind];if(!n)throw new Error(`Unsupported GraphQL value node '${e.kind}'`);return n.handle(e,t,r)}handleDirectiveNode(e,t){const r=this.directiveNodeHandlers[e.directive.name.value];return r?r.handle(e,t):null}joinOperations(e){if(1===e.length)return e[0];const t=[],r=[];for(const n of e)"bgp"===n.type?t.push(n):r.push(n);if(t.length===e.length)return this.joinOperationsAsBgp(t);if(t.length===e.length-1&&"leftjoin"===r[0].type&&"bgp"===r[0].input[0].type){const e=r[0];return t.push(e.input[0]),this.operationFactory.createLeftJoin(this.joinOperationsAsBgp(t),e.input[1])}return r.length===e.length?this.joinOperationsAsNestedJoin(r):this.joinOperationsAsNestedJoin([this.joinOperationsAsBgp(t),this.joinOperationsAsNestedJoin(r)])}joinOperationsAsBgp(e){return this.operationFactory.createBgp([].concat.apply([],e.map((e=>e.patterns))))}joinOperationsAsNestedJoin(e){return this.operationFactory.createJoin(e)}appendFieldToPath(e,t){return e.concat([t])}getFieldLabel(e){return(e.alias?e.alias:e.name).value}nameToVariable(e,t){return this.dataFactory.variable((t.path.length?t.path.join(this.settings.variableDelimiter)+this.settings.variableDelimiter:"")+e)}valueToNamedNode(e,t){const r=t.expandTerm(e,!0);if(this.settings.requireContext&&!r)throw new Error("No context entry was found for "+e);return this.dataFactory.namedNode(r||e)}getArgument(e,t){if(e)for(const r of e)if(r.name.value===t)return r}newTypePattern(e,t,r){return this.operationFactory.createPattern(e,this.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),this.valueToNamedNode(t.name.value,r.context),r.graph)}createQuadPattern(e,t,r,n,i){const a=this.valueToNamedNode(t.value,i);return i&&i.getContextRaw()[t.value]&&i.getContextRaw()[t.value]["@reverse"]?this.operationFactory.createPattern(r,a,e,n):this.operationFactory.createPattern(e,a,r,n)}createQuadPath(e,t,r,n,i,a){const o=this.valueToNamedNode(t.value,a);let s=this.operationFactory.createLink(o);for(const e of r.values){if("EnumValue"!==e.kind)throw new Error("Invalid value type for 'alt' argument, must be EnumValue, but got "+e.kind);s=this.operationFactory.createAlt([s,this.operationFactory.createLink(this.valueToNamedNode(e.value,a))])}return a&&a.getContextRaw()[t.value]&&a.getContextRaw()[t.value]["@reverse"]?this.operationFactory.createPath(n,s,e,i):this.operationFactory.createPath(e,s,n,i)}}},14009:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerAdapter=void 0,t.NodeHandlerAdapter=class{constructor(e,t,r){this.targetKind=e,this.util=t,this.settings=r}getNodeQuadContextSelectionSet(e,t,r){const n={};if(e)for(const t of e.selections)if("Field"===t.kind){const e=t;this.handleNodeQuadContextField(e,r,n,"id","subject"),this.handleNodeQuadContextField(e,r,n,"graph","graph")}return n}handleNodeQuadContextField(e,t,r,n,i){if(!r[i]&&e.name.value===n){if(!r[i]){const a=this.util.getArgument(e.arguments,"_");if(a){const o=this.util.handleNodeValue(a.value,e.name.value,t);if(1!==o.terms.length)throw new Error(`Only single values can be set as ${n}, but got ${o.terms.length} at ${e.name.value}`);r[i]=o.terms[0],o.auxiliaryPatterns&&(r.auxiliaryPatterns||(r.auxiliaryPatterns=[]),r.auxiliaryPatterns.concat(o.auxiliaryPatterns))}}if(!r[i]){const n=this.util.nameToVariable(this.util.getFieldLabel(e),t);t.terminalVariables.push(n),r[i]=n}}}getDirectiveOutputs(e,t,r){const n=[];if(e)for(const i of e){const e=this.util.handleDirectiveNode({directive:i,fieldLabel:t},r);if(e){if(e.ignore)return null;n.push(e)}}return n}handleDirectiveOutputs(e,t){for(const r of e){if(r.ignore)return this.util.operationFactory.createBgp([]);r.operationOverrider&&(t=r.operationOverrider(t))}return t}}},94058:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerDefinitionAdapter=void 0;const n=r(14009);class i extends n.NodeHandlerAdapter{constructor(e,t,r){super(e,t,r)}}t.NodeHandlerDefinitionAdapter=i},73045:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerDefinitionFragment=void 0;const n=r(94058);class i extends n.NodeHandlerDefinitionAdapter{constructor(e,t){super("FragmentDefinition",e,t)}handle(e,t){throw new Error("Illegal state: fragment definitions must be indexed and removed before processing")}}t.NodeHandlerDefinitionFragment=i},9540:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerDefinitionOperation=void 0;const n=r(94058);class i extends n.NodeHandlerDefinitionAdapter{constructor(e,t){super("OperationDefinition",e,t)}handle(e,t){if("query"!==e.operation)throw new Error("Unsupported definition operation: "+e.operation);if(e.variableDefinitions)for(const r of e.variableDefinitions){const e=r.variable.name.value;r.defaultValue&&(t.variablesDict[e]||(t.variablesDict[e]=r.defaultValue));let n=r.type;const i="NonNullType"===n.kind;i&&(n=n.type);const a="ListType"===n.kind;a&&(n=n.type);const o=n.name.value;t.variablesMetaDict[e]={mandatory:i,list:a,type:o}}const r=this.getDirectiveOutputs(e.directives,e.name?e.name.value:"",t);if(!r)return this.util.operationFactory.createBgp([]);const n=this.util.joinOperations(e.selectionSet.selections.map((e=>this.util.handleNode(e,t))));return this.handleDirectiveOutputs(r,n)}}t.NodeHandlerDefinitionOperation=i},9373:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerDocument=void 0;const n=r(91525),i=r(14009);class a extends i.NodeHandlerAdapter{constructor(e,t){super("Document",e,t)}handle(e,t){const r=e.definitions.map((e=>{const r=this.getNodeQuadContextDefinitionNode(e,Object.assign(Object.assign({},t),{ignoreUnknownVariables:!0})),n=Object.assign(Object.assign({},t),{graph:r.graph||t.graph,subject:r.subject||this.util.dataFactory.blankNode()});let i=this.util.handleNode(e,n);return r&&r.auxiliaryPatterns&&(i=this.util.joinOperations([i,this.util.operationFactory.createBgp(r.auxiliaryPatterns)])),i})),n=this.util.operationFactory.createProject(1===r.length?r[0]:this.util.operationFactory.createUnion(r),t.terminalVariables);return this.translateBlankNodesToVariables(n)}getNodeQuadContextDefinitionNode(e,t){if("OperationDefinition"===e.kind)return this.getNodeQuadContextSelectionSet(e.selectionSet,e.name?e.name.value:"",t);throw new Error(`Unsupported definition: ${e.kind}`)}translateBlankNodesToVariables(e){const t=this,r={},i=Array.from(e.variables).reduce(((e,t)=>(e[t.value]=!0,e)),{});return n.Util.mapOperation(e,{path:(e,t)=>({recurse:!1,result:t.createPath(a(e.subject),e.predicate,a(e.object),a(e.graph))}),pattern:(e,t)=>({recurse:!1,result:t.createPattern(a(e.subject),a(e.predicate),a(e.object),a(e.graph))})});function a(e){if("BlankNode"===e.termType){let a=r[e.value];return a||(a=n.Util.createUniqueVariable(e.value,i,t.util.dataFactory),i[a.value]=!0,r[e.value]=a),a}return e}}}t.NodeHandlerDocument=a},97285:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerSelectionAdapter=void 0;const n=r(91525),i=r(17762),a=r(14009);class o extends a.NodeHandlerAdapter{constructor(e,t,r){super(e,t,r)}getNodeQuadContextFieldNode(e,t,r){return this.getNodeQuadContextSelectionSet(e.selectionSet,t,Object.assign(Object.assign({},r),{path:this.util.appendFieldToPath(r.path,t)}))}fieldToOperation(e,t,r,a){const o=r;let s,c=0;if(("id"===t.name.value||"graph"===t.name.value)&&(r=!1,t.arguments))for(const r of t.arguments)"_"===r.name.value&&this.util.handleNodeValue(r.value,t.name.value,e);const u=this.util.getFieldLabel(t);if(e.singularizeState===i.SingularizeState.SINGLE&&(e.singularizeVariables[this.util.nameToVariable(u,e).value]=!0),r){const t=this.handleMetaField(e,u,a);if(t)return t}const l=a?[this.util.operationFactory.createBgp(a)]:[],d=this.getNodeQuadContextFieldNode(t,u,e);let p=d.subject||this.util.nameToVariable(u,e),h=d.graph||e.graph;d.auxiliaryPatterns&&l.push(this.util.operationFactory.createBgp(d.auxiliaryPatterns));let f=!0,y=null;if(r&&t.arguments&&t.arguments.length)for(const n of t.arguments){if("_"===n.name.value){const i=this.util.handleNodeValue(n.value,t.name.value,e);y=i.terms,l.push(this.util.operationFactory.createBgp(i.terms.map((r=>this.util.createQuadPattern(e.subject,t.name,r,e.graph,e.context))))),i.auxiliaryPatterns&&l.push(this.util.operationFactory.createBgp(i.auxiliaryPatterns)),r=!1;break}if("graph"===n.name.value){const r=this.util.handleNodeValue(n.value,t.name.value,e);if(1!==r.terms.length)throw new Error(`Only single values can be set as graph, but got ${r.terms.length} at ${t.name.value}`);h=r.terms[0],e=Object.assign(Object.assign({},e),{graph:h}),r.auxiliaryPatterns&&l.push(this.util.operationFactory.createBgp(r.auxiliaryPatterns));break}if("alt"===n.name.value){let r=n.value;"ListValue"!==r.kind&&(r={kind:"ListValue",values:[r]}),l.push(this.util.createQuadPath(e.subject,t.name,r,p,e.graph,e.context)),f=!1;break}}if(r&&f&&l.push(this.util.operationFactory.createBgp([this.util.createQuadPattern(e.subject,t.name,p,e.graph,e.context)])),t.arguments&&t.arguments.length)for(const r of t.arguments)if("_"===r.name.value||"graph"===r.name.value||"alt"===r.name.value);else if("first"===r.name.value){if("IntValue"!==r.value.kind)throw new Error("Invalid value type for 'first' argument: "+r.value.kind);s=parseInt(r.value.value,10)}else if("offset"===r.name.value){if("IntValue"!==r.value.kind)throw new Error("Invalid value type for 'offset' argument: "+r.value.kind);c=parseInt(r.value.value,10)}else{const t=this.util.handleNodeValue(r.value,r.name.value,e);l.push(this.util.operationFactory.createBgp(t.terms.map((t=>this.util.createQuadPattern(p,r.name,t,e.graph,e.context))))),t.auxiliaryPatterns&&l.push(this.util.operationFactory.createBgp(t.auxiliaryPatterns))}const g=this.getDirectiveOutputs(t.directives,u,e);if(!g)return this.util.operationFactory.createBgp([]);let m=this.util.joinOperations(l);if(t.selectionSet&&t.selectionSet.selections.length){if(y){if(1!==y.length)throw new Error(`Only single values can be set as id, but got ${y.length} at ${t.name.value}`);p=y[0]}const r=Object.assign(Object.assign(Object.assign({},e),o?{path:this.util.appendFieldToPath(e.path,u)}:{}),{graph:h,subject:o?p:e.subject});let n=!1;const i=t.selectionSet.selections.filter((e=>"Field"!==e.kind||"totalCount"!==e.name.value||(n=!0,!1)));let a=this.util.joinOperations(l.concat(i.map((e=>this.util.handleNode(e,r)))));if(n){const t=this.util.dataFactory.variable("var"+this.settings.expressionVariableCounter++),r=this.util.dataFactory.variable(p.value+this.settings.variableDelimiter+"totalCount"),n=this.util.operationFactory.createBoundAggregate(t,"count",this.util.operationFactory.createTermExpression(p),!1),o=this.util.operationFactory.createProject(this.util.operationFactory.createExtend(this.util.operationFactory.createGroup(m,[],[n]),r,this.util.operationFactory.createTermExpression(t)),[r]);e.terminalVariables.push(r),a=i.length?this.util.operationFactory.createJoin([this.util.operationFactory.createProject(a,[]),o]):o}m=a}else r&&"Variable"===p.termType&&e.terminalVariables.push(p);return(c||s)&&(m=this.util.operationFactory.createSlice(this.util.operationFactory.createProject(m,n.Util.inScopeVariables(m)),c,s)),this.handleDirectiveOutputs(g,m)}handleMetaField(e,t,r){if("__typename"===t){const n=this.util.nameToVariable(t,e);return e.terminalVariables.push(n),this.util.operationFactory.createBgp([this.util.operationFactory.createPattern(e.subject,this.util.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),this.util.nameToVariable(t,e),e.graph)].concat(r||[]))}}}t.NodeHandlerSelectionAdapter=o},15790:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerSelectionField=void 0;const n=r(97285);class i extends n.NodeHandlerSelectionAdapter{constructor(e,t){super("Field",e,t)}handle(e,t){return this.fieldToOperation(t,e,!0)}}t.NodeHandlerSelectionField=i},39555:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerSelectionFragmentSpread=void 0;const n=r(97285);class i extends n.NodeHandlerSelectionAdapter{constructor(e,t){super("FragmentSpread",e,t)}handle(e,t){const r=t.fragmentDefinitions[e.name.value];if(!r)throw new Error("Undefined fragment definition: "+e.name.value);const n={alias:void 0,arguments:void 0,directives:r.directives,kind:"Field",name:e.name,selectionSet:r.selectionSet},i=[this.util.newTypePattern(t.subject,r.typeCondition,t)];return this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]),this.fieldToOperation(t,n,!1,i))}}t.NodeHandlerSelectionFragmentSpread=i},89509:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeHandlerSelectionInlineFragment=void 0;const n=r(97285);class i extends n.NodeHandlerSelectionAdapter{constructor(e,t){super("InlineFragment",e,t)}handle(e,t){const r={alias:void 0,arguments:void 0,directives:e.directives,kind:"Field",name:{kind:"Name",value:t.subject.value},selectionSet:e.selectionSet},n=e.typeCondition?[this.util.newTypePattern(t.subject,e.typeCondition,t)]:[];return this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]),this.fieldToOperation(t,r,!1,n))}}t.NodeHandlerSelectionInlineFragment=i},62096:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerAdapter=void 0,t.DirectiveNodeHandlerAdapter=class{constructor(e,t,r){this.targetKind=e,this.util=t,this.settings=r}getDirectiveConditionalValue(e,t){const r=this.util.getArgument(e.arguments,"if");if(!r)throw new Error(`The directive ${e.name.value} is missing an if-argument.`);const n=this.util.handleNodeValue(r.value,r.name.value,t);if(1!==n.terms.length)throw new Error(`Can not apply the directive ${e.name.value} with a list.`);return n.terms[0]}isDirectiveScopeAll(e){const t=this.util.getArgument(e.arguments,"scope");return t&&"EnumValue"===t.value.kind&&"all"===t.value.value}}},5095:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerInclude=void 0;const n=r(62096);class i extends n.DirectiveNodeHandlerAdapter{constructor(e,t){super("include",e,t)}handle(e,t){const r=this.getDirectiveConditionalValue(e.directive,t);return"Literal"===r.termType&&"false"===r.value?{ignore:!0}:{}}}t.DirectiveNodeHandlerInclude=i},61151:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerOptional=void 0;const n=r(62096);class i extends n.DirectiveNodeHandlerAdapter{constructor(e,t){super("optional",e,t)}handle(e,t){return{operationOverrider:e=>this.util.operationFactory.createLeftJoin(this.util.operationFactory.createBgp([]),e)}}}t.DirectiveNodeHandlerOptional=i},11013:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerPlural=void 0;const n=r(17762),i=r(62096);class a extends i.DirectiveNodeHandlerAdapter{constructor(e,t){super("plural",e,t)}handle(e,t){return this.isDirectiveScopeAll(e.directive)&&(t.singularizeState=n.SingularizeState.PLURAL),delete t.singularizeVariables[this.util.nameToVariable(e.fieldLabel,t).value],{}}}t.DirectiveNodeHandlerPlural=a},60479:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerSingle=void 0;const n=r(17762),i=r(62096);class a extends i.DirectiveNodeHandlerAdapter{constructor(e,t){super("single",e,t)}handle(e,t){return this.isDirectiveScopeAll(e.directive)&&(t.singularizeState=n.SingularizeState.SINGLE),t.singularizeVariables[this.util.nameToVariable(e.fieldLabel,t).value]=!0,{}}}t.DirectiveNodeHandlerSingle=a},88320:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveNodeHandlerSkip=void 0;const n=r(62096);class i extends n.DirectiveNodeHandlerAdapter{constructor(e,t){super("skip",e,t)}handle(e,t){const r=this.getDirectiveConditionalValue(e.directive,t);return"Literal"===r.termType&&"true"===r.value?{ignore:!0}:{}}}t.DirectiveNodeHandlerSkip=i},96414:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(62096),t),i(r(5095),t),i(r(61151),t),i(r(11013),t),i(r(60479),t),i(r(88320),t)},51812:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(96414),t),i(r(31998),t),i(r(14009),t),i(r(94058),t),i(r(73045),t),i(r(9540),t),i(r(9373),t),i(r(97285),t),i(r(15790),t),i(r(39555),t),i(r(89509),t)},81652:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerAdapter=void 0,t.NodeValueHandlerAdapter=class{constructor(e,t,r){this.targetKind=e,this.util=t,this.settings=r}}},95347:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerBoolean=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("BooleanValue",e,t),this.datatype=this.util.dataFactory.namedNode("http://www.w3.org/2001/XMLSchema#boolean")}handle(e,t,r){return{terms:[this.util.dataFactory.literal(e.value?"true":"false",this.datatype)]}}}t.NodeValueHandlerBoolean=i},87822:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerEnum=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("EnumValue",e,t)}handle(e,t,r){return{terms:[this.util.valueToNamedNode(e.value,r.context)]}}}t.NodeValueHandlerEnum=i},5797:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerFloat=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("FloatValue",e,t),this.datatype=this.util.dataFactory.namedNode("http://www.w3.org/2001/XMLSchema#float")}handle(e,t,r){return{terms:[this.util.dataFactory.literal(e.value,this.datatype)]}}}t.NodeValueHandlerFloat=i},18338:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerInt=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("IntValue",e,t),this.datatype=this.util.dataFactory.namedNode("http://www.w3.org/2001/XMLSchema#integer")}handle(e,t,r){return{terms:[this.util.dataFactory.literal(e.value,this.datatype)]}}}t.NodeValueHandlerInt=i},70727:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerList=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("ListValue",e,t),this.nodeFirst=this.util.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"),this.nodeRest=this.util.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"),this.nodeNil=this.util.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil")}handle(e,t,r){const n=[];let i=[];for(const a of e.values){const e=this.util.handleNodeValue(a,t,r);for(const t of e.terms)n.push(t);e.auxiliaryPatterns&&(i=i.concat(e.auxiliaryPatterns))}if(this.settings.arraysToRdfLists){const e=this.util.dataFactory.blankNode();let t=e,a=n.length;for(const e of n){i.push(this.util.operationFactory.createPattern(t,this.nodeFirst,e,r.graph));const n=0==--a?this.nodeNil:this.util.dataFactory.blankNode();i.push(this.util.operationFactory.createPattern(t,this.nodeRest,n,r.graph)),t=n}return{terms:[e],auxiliaryPatterns:i}}return{terms:n,auxiliaryPatterns:i}}}t.NodeValueHandlerList=i},13294:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerNull=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("NullValue",e,t),this.nil=this.util.dataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil")}handle(e,t,r){return{terms:[this.nil]}}}t.NodeValueHandlerNull=i},41756:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerObject=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("ObjectValue",e,t)}handle(e,t,r){const n=this.util.dataFactory.blankNode();let i=[];for(const a of e.fields){const e=this.util.handleNodeValue(a.value,t,r);for(const t of e.terms)i.push(this.util.createQuadPattern(n,a.name,t,r.graph,r.context));e.auxiliaryPatterns&&(i=i.concat(e.auxiliaryPatterns))}return{terms:[n],auxiliaryPatterns:i}}}t.NodeValueHandlerObject=i},26906:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerString=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("StringValue",e,t)}handle(e,t,r){const n=r.context.getContextRaw()[t];let i,a;return n&&"string"!=typeof n&&(n["@language"]?i=n["@language"]:n["@type"]&&(a=this.util.dataFactory.namedNode(n["@type"]))),{terms:[this.util.dataFactory.literal(e.value,i||a)]}}}t.NodeValueHandlerString=i},47959:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeValueHandlerVariable=void 0;const n=r(81652);class i extends n.NodeValueHandlerAdapter{constructor(e,t){super("Variable",e,t)}handle(e,t,r){const n=e.name.value,i=r.variablesDict[n],a=r.variablesMetaDict[n];if(!i){if(r.ignoreUnknownVariables||a&&!a.mandatory){const e=this.util.dataFactory.variable(n);return r.terminalVariables.map((e=>e.value)).indexOf(n)<0&&r.terminalVariables.push(e),{terms:[e]}}throw new Error(`Undefined variable: ${n}`)}if("Variable"===i.kind)throw new Error(`Variable refers to another variable: ${n}`);if(a)if(a.list){if("ListValue"!==i.kind)throw new Error(`Expected a list, but got ${i.kind} for ${n}`);if(a.type){const e=i;for(const t of e.values)if(t.kind!==a.type)throw new Error(`Expected ${a.type}, but got ${t.kind} for ${n}`)}}else a.type;return this.util.handleNodeValue(i,t,r)}}t.NodeValueHandlerVariable=i},31998:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(81652),t),i(r(95347),t),i(r(87822),t),i(r(5797),t),i(r(18338),t),i(r(70727),t),i(r(13294),t),i(r(41756),t),i(r(26906),t),i(r(47959),t)},91525:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Util=t.toSparqlJs=t.toSparql=t.Factory=t.Algebra=t.translate=void 0;const s=o(r(16026));t.translate=s.default;const c=a(r(38849));t.Algebra=c;const u=o(r(67063));t.Factory=u.default;const l=r(96180);Object.defineProperty(t,"toSparql",{enumerable:!0,get:function(){return l.toSparql}}),Object.defineProperty(t,"toSparqlJs",{enumerable:!0,get:function(){return l.toSparqlJs}});const d=o(r(75885));t.Util=d.default},38849:(e,t)=>{"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),t.expressionTypes=t.types=void 0,(n=t.types||(t.types={})).ALT="alt",n.ASK="ask",n.BGP="bgp",n.CONSTRUCT="construct",n.DESCRIBE="describe",n.DISTINCT="distinct",n.EXPRESSION="expression",n.EXTEND="extend",n.FILTER="filter",n.FROM="from",n.GRAPH="graph",n.GROUP="group",n.INV="inv",n.JOIN="join",n.LEFT_JOIN="leftjoin",n.LINK="link",n.MINUS="minus",n.NOP="nop",n.NPS="nps",n.ONE_OR_MORE_PATH="OneOrMorePath",n.ORDER_BY="orderby",n.PATH="path",n.PATTERN="pattern",n.PROJECT="project",n.REDUCED="reduced",n.SEQ="seq",n.SERVICE="service",n.SLICE="slice",n.UNION="union",n.VALUES="values",n.ZERO_OR_MORE_PATH="ZeroOrMorePath",n.ZERO_OR_ONE_PATH="ZeroOrOnePath",n.COMPOSITE_UPDATE="compositeupdate",n.DELETE_INSERT="deleteinsert",n.LOAD="load",n.CLEAR="clear",n.CREATE="create",n.DROP="drop",n.ADD="add",n.MOVE="move",n.COPY="copy",(r=t.expressionTypes||(t.expressionTypes={})).AGGREGATE="aggregate",r.EXISTENCE="existence",r.NAMED="named",r.OPERATOR="operator",r.TERM="term",r.WILDCARD="wildcard"},67063:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const o=a(r(38849)),s=r(18050),c=r(22112),u=r(55403);t.default=class{constructor(e){this.dataFactory=e||new s.DataFactory,this.stringType=this.createTerm("http://www.w3.org/2001/XMLSchema#string")}createAlt(e,t=!0){return this.flattenMulti({type:o.types.ALT,input:e},t)}createAsk(e){return{type:o.types.ASK,input:e}}createBoundAggregate(e,t,r,n,i){const a=this.createAggregateExpression(t,r,n,i);return a.variable=e,a}createBgp(e){return{type:o.types.BGP,patterns:e}}createConstruct(e,t){return{type:o.types.CONSTRUCT,input:e,template:t}}createDescribe(e,t){return{type:o.types.DESCRIBE,input:e,terms:t}}createDistinct(e){return{type:o.types.DISTINCT,input:e}}createExtend(e,t,r){return{type:o.types.EXTEND,input:e,variable:t,expression:r}}createFrom(e,t,r){return{type:o.types.FROM,input:e,default:t,named:r}}createFilter(e,t){return{type:o.types.FILTER,input:e,expression:t}}createGraph(e,t){return{type:o.types.GRAPH,input:e,name:t}}createGroup(e,t,r){return{type:o.types.GROUP,input:e,variables:t,aggregates:r}}createInv(e){return{type:o.types.INV,path:e}}createJoin(e,t=!0){return this.flattenMulti({type:o.types.JOIN,input:e},t)}createLeftJoin(e,t,r){return r?{type:o.types.LEFT_JOIN,input:[e,t],expression:r}:{type:o.types.LEFT_JOIN,input:[e,t]}}createLink(e){return{type:o.types.LINK,iri:e}}createMinus(e,t){return{type:o.types.MINUS,input:[e,t]}}createNop(){return{type:o.types.NOP}}createNps(e){return{type:o.types.NPS,iris:e}}createOneOrMorePath(e){return{type:o.types.ONE_OR_MORE_PATH,path:e}}createOrderBy(e,t){return{type:o.types.ORDER_BY,input:e,expressions:t}}createPath(e,t,r,n){return n?{type:o.types.PATH,subject:e,predicate:t,object:r,graph:n}:{type:o.types.PATH,subject:e,predicate:t,object:r,graph:this.dataFactory.defaultGraph()}}createPattern(e,t,r,n){const i=this.dataFactory.quad(e,t,r,n);return i.type=o.types.PATTERN,i}createProject(e,t){return{type:o.types.PROJECT,input:e,variables:t}}createReduced(e){return{type:o.types.REDUCED,input:e}}createSeq(e,t=!0){return this.flattenMulti({type:o.types.SEQ,input:e},t)}createService(e,t,r){return{type:o.types.SERVICE,input:e,name:t,silent:Boolean(r)}}createSlice(e,t,r){return t=t||0,void 0!==r?{type:o.types.SLICE,input:e,start:t,length:r}:{type:o.types.SLICE,input:e,start:t}}createUnion(e,t=!0){return this.flattenMulti({type:o.types.UNION,input:e},t)}createValues(e,t){return{type:o.types.VALUES,variables:e,bindings:t}}createZeroOrMorePath(e){return{type:o.types.ZERO_OR_MORE_PATH,path:e}}createZeroOrOnePath(e){return{type:o.types.ZERO_OR_ONE_PATH,path:e}}createAggregateExpression(e,t,r,n){return n?{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,separator:n,distinct:r}:{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,distinct:r}}createExistenceExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.EXISTENCE,not:e,input:t}}createNamedExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.NAMED,name:e,args:t}}createOperatorExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.OPERATOR,operator:e,args:t}}createTermExpression(e){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.TERM,term:e}}createWildcardExpression(){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.WILDCARD,wildcard:new u.Wildcard}}createTerm(e){return(0,c.stringToTerm)(e,this.dataFactory)}createCompositeUpdate(e){return{type:o.types.COMPOSITE_UPDATE,updates:e}}createDeleteInsert(e,t,r){const n={type:o.types.DELETE_INSERT};return e&&(n.delete=e),t&&(n.insert=t),r&&(n.where=r),n}createLoad(e,t,r){const n={type:o.types.LOAD,source:e};return t&&(n.destination=t),this.addSilent(n,Boolean(r))}createClear(e,t){return this.addSilent({type:o.types.CLEAR,source:e},Boolean(t))}createCreate(e,t){return this.addSilent({type:o.types.CREATE,source:e},Boolean(t))}createDrop(e,t){return this.addSilent({type:o.types.DROP,source:e},Boolean(t))}createAdd(e,t,r){return this.addSilent({type:o.types.ADD,source:e,destination:t},Boolean(r))}createMove(e,t,r){return this.addSilent({type:o.types.MOVE,source:e,destination:t},Boolean(r))}createCopy(e,t,r){return this.addSilent({type:o.types.COPY,source:e,destination:t},Boolean(r))}addSilent(e,t){return t&&(e.silent=t),e}flattenMulti(e,t){if(!t)return e;const r=e.type,n=e.input;let i=[];for(const e of n)e.type===r?i.push(...e.input):i.push(e);return e.input=i,e}}},96180:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.toSparqlJs=t.toSparql=void 0;const s=r(91032),c=r(22112),u=r(55403),l=a(r(38849)),d=o(r(67063)),p=o(r(75885)),h=l.types,f=l.expressionTypes;let y;const g=new d.default;function m(e){b();let t=v(e=function(e){return D(e,[])}(e));return"group"===t.type?t.patterns[0]:t}function b(){y={project:!1,extend:[],group:[],aggregates:[],order:[]}}function v(e){switch(e.type!==h.EXTEND&&e.type!==h.ORDER_BY&&e.type!==h.GRAPH&&(y.project=!1),e.type){case h.EXPRESSION:return _(e);case h.ASK:return A(e,h.ASK);case h.BGP:return function(e){let t=e.patterns.map(E);return 0===t.length?null:{type:"bgp",triples:t}}(e);case h.CONSTRUCT:return function(e){return{type:"query",prefixes:{},queryType:"CONSTRUCT",template:e.template.map(E),where:p.default.flatten([v(e.input)])}}(e);case h.DESCRIBE:return A(e,h.DESCRIBE);case h.DISTINCT:return function(e){let t=v(e.input);return t.patterns[0].distinct=!0,t}(e);case h.EXTEND:return function(e){return y.project?(y.extend.push(e),v(e.input)):p.default.flatten([v(e.input),{type:"bind",variable:e.variable,expression:_(e.expression)}])}(e);case h.FROM:return function(e){const t=v(e.input);let r=t;return"group"===t.type&&(r=t.patterns[0]),r.from={default:e.default,named:e.named},t}(e);case h.FILTER:return function(e){return{type:"group",patterns:p.default.flatten([v(e.input),{type:"filter",expression:_(e.expression)}])}}(e);case h.GRAPH:return function(e){return{type:"graph",patterns:p.default.flatten([v(e.input)]),name:e.name}}(e);case h.GROUP:return function(e){const t=v(e.input),r=e.aggregates.map(O);return y.aggregates.push(...r),y.group.push(...e.variables),t}(e);case h.JOIN:return function(e){return p.default.flatten(e.input.map(v)).reduce(((e,t)=>("bgp"!==t.type||0==e.length||"bgp"!==e[e.length-1].type?e.push(t):e[e.length-1].triples.push(...t.triples),e)),[])}(e);case h.LEFT_JOIN:return function(e){const t={type:"optional",patterns:[v(e.input[1])]};return e.expression&&t.patterns.push({type:"filter",expression:_(e.expression)}),t.patterns=p.default.flatten(t.patterns),p.default.flatten([v(e.input[0]),t])}(e);case h.MINUS:return function(e){let t=v(e.input[1]);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),p.default.flatten([v(e.input[0]),{type:"minus",patterns:t}])}(e);case h.NOP:return{};case h.ORDER_BY:return function(e){return y.order.push(...e.expressions),v(e.input)}(e);case h.PATH:return function(e){return{type:"bgp",triples:[{subject:e.subject,predicate:w(e.predicate),object:e.object}]}}(e);case h.PATTERN:return E(e);case h.PROJECT:return A(e,h.PROJECT);case h.REDUCED:return function(e){let t=v(e.input);return t.patterns[0].reduced=!0,t}(e);case h.SERVICE:return function(e){let t=v(e.input);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),{type:"service",name:e.name,silent:e.silent,patterns:t}}(e);case h.SLICE:return function(e){let t=v(e.input),r=t;return t.type&&"group"===t.type&&(r=t.patterns[0]),0!==e.start&&(r.offset=e.start),void 0!==e.length&&(r.limit=e.length),t}(e);case h.UNION:return function(e){return{type:"union",patterns:e.input.map(v).map(S)}}(e);case h.VALUES:return function(e){return{type:"values",values:e.bindings.map((t=>{let r={};for(let n of e.variables){let e=`?${n.value}`;t[e]?r[e]=t[e]:r[e]=void 0}return r}))}}(e);case h.COMPOSITE_UPDATE:return function(e){return{prefixes:{},type:"update",updates:e.updates.map((e=>v(e).updates[0]))}}(e);case h.DELETE_INSERT:return function(e){var t;let r,n=e.where;if(n&&n.type===h.FROM){let e=n;n=e.input,r={default:e.default,named:e.named}}const i=[{updateType:"insertdelete",delete:N(e.delete||[]),insert:N(e.insert||[])}];if(r&&(i[0].using=r),!n||n.type===h.BGP&&0===n.patterns.length)i[0].where=[];else{const e=[];let r=v(D(n,e));if("group"===r.type?i[0].where=r.patterns:i[0].where=[r],e.length>0){if(1!==e.length)throw new Error("This is unexpected and might indicate an error in graph handling for updates.");""!==(null===(t=e[0])||void 0===t?void 0:t.value)&&(i[0].where=[{type:"graph",patterns:i[0].where,name:e[0]}])}}return e.delete||e.where?e.insert||e.where?!e.insert&&e.where&&"bgp"===e.where.type&&(0,s.isomorphic)(e.delete,e.where.patterns)&&(delete i[0].where,i[0].updateType="deletewhere"):(delete i[0].insert,delete i[0].where,e.delete.some((e=>"Variable"===e.subject.termType||"Variable"===e.predicate.termType||"Variable"===e.object.termType))?i[0].updateType="deletewhere":i[0].updateType="delete"):(i[0].updateType="insert",delete i[0].delete,delete i[0].where),{prefixes:{},type:"update",updates:i}}(e);case h.LOAD:return function(e){const t=[{type:"load",silent:Boolean(e.silent),source:e.source}];return e.destination&&(t[0].destination=e.destination),{prefixes:{},type:"update",updates:t}}(e);case h.CLEAR:return function(e){return I(e,"clear")}(e);case h.CREATE:return function(e){return I(e,"create")}(e);case h.DROP:return function(e){return I(e,"drop")}(e);case h.ADD:return function(e){return P(e,"add")}(e);case h.MOVE:return function(e){return P(e,"move")}(e);case h.COPY:return function(e){return P(e,"copy")}(e)}throw new Error(`Unknown Operation type ${e.type}`)}function _(e){switch(e.expressionType){case f.AGGREGATE:return function(e){const t={expression:_(e.expression),type:"aggregate",aggregation:e.aggregator,distinct:e.distinct};return e.separator&&(t.separator=e.separator),t}(e);case f.EXISTENCE:return function(e){return{type:"operation",operator:e.not?"notexists":"exists",args:p.default.flatten([v(e.input)])}}(e);case f.NAMED:return function(e){return{type:"functionCall",function:e.name,args:e.args.map(_)}}(e);case f.OPERATOR:return function(e){if("desc"===e.operator){return{expression:_(e.args[0]),descending:!0}}const t={type:"operation",operator:e.operator,args:e.args.map(_)};return"in"!==t.operator&&"notin"!==t.operator||(t.args=[t.args[0]].concat([t.args.slice(1)])),t}(e);case f.TERM:return function(e){return e.term}(e);case f.WILDCARD:return function(e){return e.wildcard}(e)}throw new Error(`Unknown Expression Operation type ${e.expressionType}`)}function w(e){switch(e.type){case h.ALT:return function(e){const t=e.input.map(w);return t.every((e=>"pathType"in e&&"!"===e.pathType))?{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:p.default.flatten(t.map((e=>e.items)))}]}:{type:"path",pathType:"|",items:t}}(e);case h.INV:return function(e){if(e.path.type===h.NPS){const t=e.path.iris.map((e=>({type:"path",pathType:"^",items:[e]})));return t.length<=1?{type:"path",pathType:"!",items:t}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:t}]}}return{type:"path",pathType:"^",items:[w(e.path)]}}(e);case h.LINK:return function(e){return e.iri}(e);case h.NPS:return function(e){return e.iris.length<=1?{type:"path",pathType:"!",items:e.iris}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:e.iris}]}}(e);case h.ONE_OR_MORE_PATH:return function(e){return{type:"path",pathType:"+",items:[w(e.path)]}}(e);case h.SEQ:return function(e){return{type:"path",pathType:"/",items:e.input.map(w)}}(e);case h.ZERO_OR_MORE_PATH:return function(e){return{type:"path",pathType:"*",items:[w(e.path)]}}(e);case h.ZERO_OR_ONE_PATH:return function(e){return{type:"path",pathType:"?",items:[w(e.path)]}}(e)}throw new Error(`Unknown Path type ${e.type}`)}function T(e){return(0,c.termToString)(e)}function S(e){return Array.isArray(e)?1===e.length?e[0]:{type:"group",patterns:e}:e}function O(e){return e}function E(e){return{subject:e.subject,predicate:e.predicate,object:e.object}}function x(e,t){let r=p.default.isSimpleTerm(e)?T(e):e;if("string"==typeof r){if(t[r])return t[r]}else if(Array.isArray(e))e=e.map((e=>x(e,t)));else for(let r of Object.keys(e))e[r]=x(e[r],t);return e}function A(e,t){const r={type:"query",prefixes:{}},n=r;let i;t===h.PROJECT?(r.queryType="SELECT",i=e.variables):t===h.ASK?r.queryType="ASK":t===h.DESCRIBE&&(r.queryType="DESCRIBE",i=e.terms);const a=y.extend,o=y.group,s=y.aggregates,c=y.order;b(),y.project=!0;let l=p.default.flatten([v(e.input)]);1===l.length&&"group"===l[0].type&&(l=l[0].patterns),r.where=l;let d={};for(let e of y.aggregates)d[T(e.variable)]=_(e);let f={};for(let e=y.extend.length-1;e>=0;--e){let t=y.extend[e];f[T(t.variable)]=x(_(t.expression),d)}if(y.group.length>0&&(n.group=y.group.map((e=>{let t=T(e);if(f[t]){let r=f[t];return delete f[t],{variable:e,expression:r}}return{expression:e}}))),y.order.length>0&&(n.order=y.order.map(v).map((e=>e.descending?e:{expression:e}))),i&&(n.variables=i.map((e=>{let t=T(e);return f[t]?{variable:e,expression:f[t]}:e})),0===n.variables.length&&(n.variables=[new u.Wildcard])),r.where.length>0&&"filter"===r.where[r.where.length-1].type){const e=r.where[r.where.length-1];R(e,Object.keys(d))&&(n.having=p.default.flatten([x(e.expression,d)]),r.where.splice(-1))}return y.extend=a,y.group=o,y.aggregates=s,y.order=c,{type:"group",patterns:[n]}}function R(e,t){return p.default.isSimpleTerm(e)?t.indexOf(T(e))>=0:Array.isArray(e)?e.some((e=>R(e,t))):e===Object(e)?Object.keys(e).some((r=>R(e[r],t))):t.indexOf(e)>=0}function I(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return"DEFAULT"===e.source?r[0].graph={default:!0}:"NAMED"===e.source?r[0].graph={named:!0}:"ALL"===e.source?r[0].graph={all:!0}:r[0].graph={type:"graph",name:e.source},{prefixes:{},type:"update",updates:r}}function P(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return r[0].source="DEFAULT"===e.source?{type:"graph",default:!0}:{type:"graph",name:e.source},r[0].destination="DEFAULT"===e.destination?{type:"graph",default:!0}:{type:"graph",name:e.destination},{prefixes:{},type:"update",updates:r}}function N(e){if(!e)return[];const t={};return e.forEach((e=>{const r=e.graph.value;t[r]||(t[r]=[]),t[r].push(e)})),Object.keys(t).map((e=>""===e?{type:"bgp",triples:t[e].map(E)}:{type:"graph",triples:t[e].map(E),name:t[e][0].graph}))}function D(e,t){if(Array.isArray(e))return e.map((e=>D(e,t)));if(!e.type)return e;if(e.type===h.DELETE_INSERT)return e;if((e.type===h.PATTERN||e.type===h.PATH)&&e.graph)return t.push(e.graph),""!==e.graph.name?e.type===h.PATTERN?g.createPattern(e.subject,e.predicate,e.object):g.createPath(e.subject,e.predicate,e.object):e;const r={},n={},i={};for(let t of Object.keys(e)){const a=[];if(r[t]=D(e[t],a),a.length>0){n[t]=a;for(const e of a)i[e.value]=e}}const a=Object.keys(i);if(a.length>0)if(1!==a.length||[h.PROJECT,h.SERVICE].includes(e.type)){if(e.type===h.BGP)return function(e,t){var r;const n={};for(let i=0;i""===n[e][0].value?t:g.createGraph(t,n[e][r]))):""!==n[e][0].value&&(r[e]=g.createGraph(t,n[e][0]))}}else t.push(i[a[0]]);return r}t.toSparql=function(e,t={}){return new u.Generator(t).stringify(m(e))},t.toSparqlJs=m},16026:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(53933),c=r(22112),u=a(r(38849)),l=o(r(67063)),d=o(r(75885)),p=r(55403).Parser,h=u.types;let f,y=new Set,g=0,m=!1;function b(e,t,r){if(y=new Set,g=0,m=Boolean(t),!e.type)return f.createNop();if("query"!==e.type&&"update"!==e.type)throw new Error("Translate only works on complete query or update objects.");let n;var i;return w(e),"query"===e.type?(n=S({type:"group",patterns:e.where||[]}),n=function(e,t){const r=e,n=[],i={};if(r.variables=r.variables&&r.variables.map((e=>C(e,i))),r.having=r.having&&r.having.map((e=>C(e,i))),r.order=r.order&&r.order.map((e=>C(e,i))),r.group||Object.keys(i).length>0){const e=Object.keys(i).map((e=>function(e,t){if("aggregate"!==e.type||!e.aggregation)throw new Error(`Unexpected input: ${JSON.stringify(e)}`);const r=O(e);return r.variable=t,r}(i[e],f.createTerm(e)))),n=[];if(r.group)for(const e of r.group)if(d.default.isSimpleTerm(e.expression))n.push(e.expression);else{const r="variable"in e?e.variable:A();t=f.createExtend(t,r,O(e.expression)),n.push(r)}t=f.createGroup(t,n,e)}if(r.having)for(let e of r.having)t=f.createFilter(t,O(e));e.values&&(t=f.createJoin([t,j(e)]));let a=[];if("SELECT"===e.queryType||"DESCRIBE"===e.queryType)if(e.variables.some((e=>e&&d.default.isWildcard(e))))a=Object.values(T(e)).sort(((e,t)=>e.value.localeCompare(t.value)));else for(let t of e.variables)_(t)||!("variable"in t)?a.push(t):t.variable&&(a.push(t.variable),n.push(t));for(let e of n)t=f.createExtend(t,e.variable,O(e.expression));return r.order&&(t=f.createOrderBy(t,r.order.map((e=>{let t=O(e.expression);return e.descending&&(t=f.createOperatorExpression("desc",[t])),t})))),"SELECT"===e.queryType&&(t=f.createProject(t,a)),r.distinct&&(t=f.createDistinct(t)),r.reduced&&(t=f.createReduced(t)),"CONSTRUCT"===e.queryType?t=f.createConstruct(t,(e.template||[]).map(R)):"ASK"===e.queryType?t=f.createAsk(t):"DESCRIBE"===e.queryType&&(t=f.createDescribe(t,a)),(r.offset||r.limit)&&(t=f.createSlice(t,r.offset||0,r.limit)),r.from&&(t=f.createFrom(t,r.from.default,r.from.named)),t}(e,n)):"update"===e.type&&(n=1===(i=e).updates.length?M(i.updates[0]):f.createCompositeUpdate(i.updates.map(M))),r&&(n=k(n)),n}function v(e){return Boolean(null==e?void 0:e.termType)}function _(e){return"Variable"===(null==e?void 0:e.termType)}function w(e){if(v(e))_(e)&&y.add(`?${e.value}`);else if(Array.isArray(e))for(const t of e)w(t);else if(e&&"object"==typeof e)for(let t of Object.keys(e))t.startsWith("?")&&y.add(t),w(e[t])}function T(e){let t={};if((r=e).subject&&r.predicate&&r.object){const r=[T(e.subject),T(e.predicate),T(e.object),e.graph?T(e.graph):{}];Object.assign(t,...r)}else if(v(e))_(e)&&(t[e.value]=e);else if("bgp"===e.type){const r=e.triples;Object.assign(t,...r.map(T))}else if("path"===e.type)Object.assign(t,...e.items.map(T));else if("group"===e.type||"union"===e.type||"optional"===e.type)Object.assign(t,...e.patterns.map(T));else if("service"===e.type||"graph"===e.type)Object.assign(t,T(e.name)),Object.assign(t,...e.patterns.map(T));else if("bind"===e.type)Object.assign(t,T(e.variable));else if("values"===e.type){if(e.values.length>0){const r=Object.keys(e.values[0]).map((e=>f.createTerm(e)));Object.assign(t,...r.map(T))}}else if("query"===e.type&&("SELECT"===e.queryType||"DESCRIBE"===e.queryType)){e.where&&e.variables.some(d.default.isWildcard)&&Object.assign(t,...e.where.map(T));for(const r of e.variables)_(r)?Object.assign(t,T(r)):r.variable&&Object.assign(t,T(r.variable));if("SELECT"===e.queryType){if(e.group)for(const r of e.group)r.variable&&Object.assign(t,T(r.variable));if(e.values){const r={type:"values",values:e.values};Object.assign(t,T(r))}}}var r;return t}function S(e){if("bgp"===e.type)return function(e){let t=[],r=[];for(let i of e.triples)if("pathType"in i.predicate){let e=x((n=i).subject,E(n.predicate),n.object);for(let n of e)n.type===h.PATH?(t.length>0&&r.push(f.createBgp(t)),t=[],r.push(n)):t.push(n)}else t.push(R(i));var n;return t.length>0&&r.push(f.createBgp(t)),1===r.length?r[0]:f.createJoin(r)}(e);if("union"===e.type)return f.createUnion(e.patterns.map((e=>("group"!==e.type&&(e={type:"group",patterns:[e]}),S(e)))));if("graph"===e.type){let t=S({type:"group",patterns:e.patterns});return t=m?P(t,e.name):f.createGraph(t,e.name),t}if("values"===e.type)return j(e);if("query"===e.type)return b(e,m,!1);if("group"===e.type){let t=[],r=[];for(let n of e.patterns)("filter"===n.type?t:r).push(n);let n=r.reduce(N,f.createBgp([])),i=t.map((e=>O(e.expression)));return i.length>0&&(n=f.createFilter(n,i.reduce(((e,t)=>f.createOperatorExpression("&&",[e,t]))))),n}throw new Error(`Unexpected type: ${e.type}`)}function O(e){if(d.default.isSimpleTerm(e))return f.createTermExpression(e);if(d.default.isQuad(e))return d.default.hasQuadVariables(e)?f.createOperatorExpression("triple",[O(e.subject),O(e.predicate),O(e.object)]):f.createTermExpression(e);if(d.default.isWildcard(e))return f.createWildcardExpression();if("aggregation"in e)return f.createAggregateExpression(e.aggregation,O(e.expression),Boolean(e.distinct),e.separator);if("function"in e)return f.createNamedExpression(e.function,e.args.map(O));if("operator"in e)return"exists"===e.operator||"notexists"===e.operator?f.createExistenceExpression("notexists"===e.operator,S(e.args[0])):("in"!==e.operator&&"notin"!==e.operator||(e.args=[e.args[0]].concat(e.args[1])),f.createOperatorExpression(e.operator,e.args.map(O)));throw new Error(`Unknown expression: ${JSON.stringify(e)}`)}function E(e){if(d.default.isSimpleTerm(e)){if("NamedNode"===e.termType)return f.createLink(e);throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(e)}`)}if("^"===e.pathType)return f.createInv(E(e.items[0]));if("!"===e.pathType){let t,r=[],n=[];t="pathType"in e.items[0]&&"|"===e.items[0].pathType?e.items[0].items:e.items;for(let e of t)if(d.default.isSimpleTerm(e))r.push(e);else{if("^"!==e.pathType)throw new Error(`Unexpected item: ${JSON.stringify(e)}`);n.push(e.items[0])}let i=f.createNps(r),a=f.createInv(f.createNps(n));return 0===n.length?i:0===r.length?a:f.createAlt([i,a])}if("/"===e.pathType)return f.createSeq(e.items.map(E));if("|"===e.pathType)return f.createAlt(e.items.map(E));if("*"===e.pathType)return f.createZeroOrMorePath(E(e.items[0]));if("+"===e.pathType)return f.createOneOrMorePath(E(e.items[0]));if("?"===e.pathType)return f.createZeroOrOnePath(E(e.items[0]));throw new Error(`Unable to translate path expression ${JSON.stringify(e)}`)}function x(e,t,r){if(t.type===h.LINK)return[f.createPattern(e,t.iri,r)];if(t.type===h.INV)return x(r,t.path,e);if(t.type===h.SEQ){let n=e;return d.default.flatten(t.input.map(((e,i)=>{const a=i===t.input.length-1?r:A(),o=x(n,e,a);return"Variable"===a.termType&&(n=a),o})))}return[f.createPath(e,t,r)]}function A(){let e="?var"+g++;return y.has(e)?A():(y.add(e),f.createTerm(e))}function R(e){if("pathType"in e.predicate)throw new Error("Trying to translate property path to quad.");return f.createPattern(e.subject,e.predicate,e.object,e.graph)}t.default=function(e,t){let r;if(t=t||{},f=new l.default(t.dataFactory),"string"==typeof e){let n=new p(t);n._resetBlanks(),r=n.parse(e)}else r=e;return b(r,t.quads,t.blankToVariable)};let I=Object.values(h);function P(e,t,r){if(e.type===h.GRAPH){if(r)throw new Error("Recursing through nested GRAPH statements with a replacement is impossible.");e=P(e.input,e.name)}else if(e.type===h.SERVICE);else if(e.type===h.BGP)e.patterns=e.patterns.map((e=>(r&&(e.subject.equals(t)&&(e.subject=r),e.predicate.equals(t)&&(e.predicate=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t),e)));else if(e.type===h.PATH)r&&(e.subject.equals(t)&&(e.subject=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t);else if(e.type!==h.PROJECT||r)if(e.type!==h.EXTEND||r)for(let n of Object.keys(e))Array.isArray(e[n])?e[n]=e[n].map((e=>P(e,t,r))):I.indexOf(e[n].type)>=0?e[n]=P(e[n],t,r):r&&_(e[n])&&e[n].equals(t)&&(e[n]=r);else e.variable.equals(t)&&(r=A()),e.input=P(e.input,t,r);else e.variables.some((e=>e.equals(t)))||(r=A()),e.input=P(e.input,t,r);return e}function N(e,t){if("optional"===t.type){const r=S({type:"group",patterns:t.patterns});e=r.type===h.FILTER?f.createLeftJoin(e,r.input,r.expression):f.createLeftJoin(e,r)}else if("minus"===t.type){const r=S({type:"group",patterns:t.patterns});e=f.createMinus(e,r)}else if("bind"===t.type)e=f.createExtend(e,t.variable,O(t.expression));else if("service"===t.type){const r={type:"group",patterns:t.patterns};e=D(e,f.createService(S(r),t.name,t.silent))}else e=D(e,S(t));return e}function D(e,t){return e.type===h.BGP&&t.type===h.BGP?e=f.createBgp([...e.patterns,...t.patterns]):e.type===h.BGP&&0===e.patterns.length?e=t:t.type===h.BGP&&0===t.patterns.length||(e=f.createJoin([e,t])),e}function j(e){let t=(0===e.values.length?[]:Object.keys(e.values[0])).map(f.createTerm.bind(f)),r=e.values.map((e=>{let t=Object.keys(e);t=t.filter((t=>void 0!==e[t]));let r={};for(let n of t)r[n]=e[n];return r}));return f.createValues(t,r)}function C(e,t){if("type"in e&&"aggregate"===e.type){let r,n=!1;for(let i of Object.keys(t))if(s(t[i],e)){r=f.createTerm(i),n=!0;break}return n||(r=A(),t[(0,c.termToString)(r)]=e),r}return"expression"in e&&e.expression?{...e,expression:C(e.expression,t)}:"args"in e&&e.args?{...e,args:e.args.map((e=>C(e,t)))}:e}function M(e){if("type"in e){if("load"===e.type)return function(e){return f.createLoad(e.source,e.destination,e.silent)}(e);if("clear"===e.type||"create"===e.type||"drop"===e.type)return function(e){let t;switch(t=d.default.isSimpleTerm(e.graph)?e.graph:e.graph.all?"ALL":e.graph.default?"DEFAULT":e.graph.named?"NAMED":e.graph.name,e.type){case"clear":return f.createClear(t,e.silent);case"create":return f.createCreate(t,e.silent);case"drop":return f.createDrop(t,e.silent)}}(e);if("add"===e.type||"copy"===e.type||"move"===e.type)return function(e){const t=e.source.default?"DEFAULT":e.source.name,r=e.destination.default?"DEFAULT":e.destination.name;switch(e.type){case"copy":return f.createCopy(t,r,e.silent);case"move":return f.createMove(t,r,e.silent);case"add":return f.createAdd(t,r,e.silent)}}(e)}else if("insertdelete"===e.updateType||"deletewhere"===e.updateType||"delete"===e.updateType||"insert"===e.updateType)return function(e){if(!m)throw new Error("INSERT/DELETE operations are only supported with quads option enabled");let t,r=[],n=[];if(e.delete&&(r=d.default.flatten(e.delete.map((t=>L(t,e.graph))))),e.insert&&(n=d.default.flatten(e.insert.map((t=>L(t,e.graph))))),e.where&&e.where.length>0){t=S({type:"group",patterns:e.where});const r=e.using;r?t=f.createFrom(t,r.default,r.named):e.graph&&(t=P(t,e.graph))}else"deletewhere"===e.updateType&&r.length>0&&(t=f.createBgp(r));return f.createDeleteInsert(r.length>0?r:void 0,n.length>0?n:void 0,t)}(e);throw new Error(`Unknown update type ${JSON.stringify(e)}`)}function L(e,t){let r=t;"graph"===e.type&&(r=e.name);let n=e.triples;return r&&(n=n.map((e=>Object.assign(e,{graph:r})))),n.map(R)}function k(e){const t={},r=Array.from(y).reduce(((e,t)=>(e[t]=!0,e)),{});return d.default.mapOperation(e,{[u.types.DELETE_INSERT]:e=>({result:e,recurse:!1}),[u.types.PATH]:(e,t)=>({result:t.createPath(n(e.subject),e.predicate,n(e.object),n(e.graph)),recurse:!1}),[u.types.PATTERN]:(e,t)=>({result:t.createPattern(n(e.subject),n(e.predicate),n(e.object),n(e.graph)),recurse:!1}),[u.types.CONSTRUCT]:e=>({result:f.createConstruct(k(e.input),e.template),recurse:!1})});function n(e){if("BlankNode"===e.termType){let n=t[e.value];return n||(n=d.default.createUniqueVariable(e.value,r,f.dataFactory),r[n.value]=!0,t[e.value]=n),n}return e}}},75885:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(38849),a=n(r(67063)),o=r(13252);class s{static flatten(e){return Array.prototype.concat(...e).filter((e=>e))}static objectify(e){if(e.termType){if("Quad"===e.termType)return{type:"pattern",termType:"Quad",subject:s.objectify(e.subject),predicate:s.objectify(e.predicate),object:s.objectify(e.object),graph:s.objectify(e.graph)};{let t={termType:e.termType,value:e.value};return e.language&&(t.language=e.language),e.datatype&&(t.datatype=s.objectify(e.datatype)),t}}if(Array.isArray(e))return e.map((e=>s.objectify(e)));if(e===Object(e)){let t={};for(let r of Object.keys(e))t[r]=s.objectify(e[r]);return t}return e}static inScopeVariables(e){const t=[];function r(e){t.find((t=>e.value===t.value))||t.push(e)}function n(e){"Variable"===e.subject.termType&&r(e.subject),"Variable"===e.predicate.termType&&r(e.predicate),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.predicate.termType&&n(e.predicate),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph)}return s.recurseOperation(e,{[i.types.EXPRESSION]:e=>(e.expressionType===i.expressionTypes.AGGREGATE&&e.variable&&r(e.variable),!0),[i.types.EXTEND]:e=>(r(e.variable),!0),[i.types.GRAPH]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.GROUP]:e=>(e.variables.forEach(r),!0),[i.types.PATH]:e=>("Variable"===e.subject.termType&&r(e.subject),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph),!0),[i.types.PATTERN]:e=>(n(e),!0),[i.types.PROJECT]:e=>(e.variables.forEach(r),!1),[i.types.SERVICE]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.VALUES]:e=>(e.variables.forEach(r),!0)}),t}static recurseOperation(e,t){let r=e,n=!0;const a=t[e.type];if(a&&(n=a(e)),!n)return;let o=e=>s.recurseOperation(e,t);switch(r.type){case i.types.ALT:r.input.map(o);break;case i.types.ASK:o(r.input);break;case i.types.BGP:r.patterns.forEach(o);break;case i.types.CONSTRUCT:o(r.input),r.template.map(o);break;case i.types.DESCRIBE:case i.types.DISTINCT:o(r.input);break;case i.types.EXPRESSION:r.expressionType===i.expressionTypes.EXISTENCE&&o(r.input);break;case i.types.EXTEND:case i.types.FILTER:o(r.input),o(r.expression);break;case i.types.FROM:case i.types.GRAPH:o(r.input);break;case i.types.GROUP:o(r.input),r.aggregates.forEach(o);break;case i.types.INV:o(r.path);break;case i.types.JOIN:r.input.map(o);break;case i.types.LEFT_JOIN:r.input.map(o),r.expression&&o(r.expression);break;case i.types.LINK:break;case i.types.MINUS:r.input.map(o);break;case i.types.NOP:case i.types.NPS:break;case i.types.ONE_OR_MORE_PATH:o(r.path);break;case i.types.ORDER_BY:o(r.input),r.expressions.forEach(o);break;case i.types.PATH:o(r.predicate);break;case i.types.PATTERN:break;case i.types.PROJECT:case i.types.REDUCED:o(r.input);break;case i.types.SEQ:r.input.map(o);break;case i.types.SERVICE:case i.types.SLICE:o(r.input);break;case i.types.UNION:r.input.map(o);break;case i.types.VALUES:break;case i.types.ZERO_OR_MORE_PATH:case i.types.ZERO_OR_ONE_PATH:o(r.path);break;case i.types.COMPOSITE_UPDATE:r.updates.forEach((e=>o(e)));break;case i.types.DELETE_INSERT:r.delete&&r.delete.forEach((e=>o(e))),r.insert&&r.insert.forEach((e=>o(e))),r.where&&o(r.where);break;case i.types.LOAD:case i.types.CLEAR:case i.types.CREATE:case i.types.DROP:case i.types.ADD:case i.types.MOVE:case i.types.COPY:break;default:throw new Error(`Unknown Operation type ${r.type}`)}}static mapOperation(e,t,r){let n=e,o=!0,c=!0;r=r||new a.default;const u=t[e.type];if(u){const t=u(e,r);n=t.result,o=t.recurse,c=!1!==t.copyMetadata}let l;if(c&&(n.metadata||e.metadata)&&(l={...n.metadata,...e.metadata}),!o)return l&&(n.metadata=l),n;let d=e=>s.mapOperation(e,t,r);switch(n.type){case i.types.ALT:n=r.createAlt(n.input.map(d));break;case i.types.ASK:n=r.createAsk(d(n.input));break;case i.types.BGP:n=r.createBgp(n.patterns.map(d));break;case i.types.CONSTRUCT:n=r.createConstruct(d(n.input),n.template.map(d));break;case i.types.DESCRIBE:n=r.createDescribe(d(n.input),n.terms);break;case i.types.DISTINCT:n=r.createDistinct(d(n.input));break;case i.types.EXPRESSION:n=s.mapExpression(n,t,r);break;case i.types.EXTEND:n=r.createExtend(d(n.input),n.variable,d(n.expression));break;case i.types.FILTER:n=r.createFilter(d(n.input),d(n.expression));break;case i.types.FROM:n=r.createFrom(d(n.input),[...n.default],[...n.named]);break;case i.types.GRAPH:n=r.createGraph(d(n.input),n.name);break;case i.types.GROUP:n=r.createGroup(d(n.input),[].concat(n.variables),n.aggregates.map(d));break;case i.types.INV:n=r.createInv(d(n.path));break;case i.types.JOIN:n=r.createJoin(n.input.map(d));break;case i.types.LEFT_JOIN:n=r.createLeftJoin(d(n.input[0]),d(n.input[1]),n.expression?d(n.expression):void 0);break;case i.types.LINK:n=r.createLink(n.iri);break;case i.types.MINUS:n=r.createMinus(d(n.input[0]),d(n.input[1]));break;case i.types.NOP:n=r.createNop();break;case i.types.NPS:n=r.createNps([].concat(n.iris));break;case i.types.ONE_OR_MORE_PATH:n=r.createOneOrMorePath(d(n.path));break;case i.types.ORDER_BY:n=r.createOrderBy(d(n.input),n.expressions.map(d));break;case i.types.PATH:n=r.createPath(n.subject,d(n.predicate),n.object,n.graph);break;case i.types.PATTERN:n=r.createPattern(n.subject,n.predicate,n.object,n.graph);break;case i.types.PROJECT:n=r.createProject(d(n.input),[...n.variables]);break;case i.types.REDUCED:n=r.createReduced(d(n.input));break;case i.types.SEQ:n=r.createSeq(n.input.map(d));break;case i.types.SERVICE:n=r.createService(d(n.input),n.name,n.silent);break;case i.types.SLICE:n=r.createSlice(d(n.input),n.start,n.length);break;case i.types.UNION:n=r.createUnion(n.input.map(d));break;case i.types.VALUES:n=r.createValues([].concat(n.variables),n.bindings.map((e=>Object.assign({},e))));break;case i.types.ZERO_OR_MORE_PATH:n=r.createZeroOrMorePath(d(n.path));break;case i.types.ZERO_OR_ONE_PATH:n=r.createZeroOrOnePath(d(n.path));break;case i.types.COMPOSITE_UPDATE:n=r.createCompositeUpdate(n.updates.map(d));break;case i.types.DELETE_INSERT:n=r.createDeleteInsert(n.delete?n.delete.map(d):void 0,n.insert?n.insert.map(d):void 0,n.where?d(n.where):void 0);break;case i.types.LOAD:n=r.createLoad(n.source,n.destination,n.silent);break;case i.types.CLEAR:n=r.createClear(n.source,n.silent);break;case i.types.CREATE:n=r.createCreate(n.source,n.silent);break;case i.types.DROP:n=r.createDrop(n.source,n.silent);break;case i.types.ADD:n=r.createAdd(n.source,n.destination);break;case i.types.MOVE:n=r.createMove(n.source,n.destination);break;case i.types.COPY:n=r.createCopy(n.source,n.destination);break;default:throw new Error(`Unknown Operation type ${n.type}`)}return l&&(n.metadata=l),n}static mapExpression(e,t,r){let n=e,o=!0;r=r||new a.default;const c=t[e.expressionType];if(c&&({result:n,recurse:o}=c(e,r)),!o)return n;let u=e=>s.mapOperation(e,t,r);switch(e.expressionType){case i.expressionTypes.AGGREGATE:return e.variable?r.createBoundAggregate(e.variable,e.aggregator,u(e.expression),e.distinct,e.separator):r.createAggregateExpression(e.aggregator,u(e.expression),e.distinct,e.separator);case i.expressionTypes.EXISTENCE:return r.createExistenceExpression(e.not,u(e.input));case i.expressionTypes.NAMED:return r.createNamedExpression(e.name,e.args.map(u));case i.expressionTypes.OPERATOR:return r.createOperatorExpression(e.operator,e.args.map(u));case i.expressionTypes.TERM:return r.createTermExpression(e.term);case i.expressionTypes.WILDCARD:return r.createWildcardExpression();default:throw new Error(`Unknown Expression type ${e.expressionType}`)}}static cloneOperation(e){return s.mapOperation(e,{})}static cloneExpression(e){return s.mapExpression(e,{})}static createUniqueVariable(e,t,r){let n=0,i=e;for(;t[i];)i=`${e}${n++}`;return r.variable(i)}static isSimpleTerm(e){return void 0!==e.termType&&"Quad"!==e.termType&&"Wildcard"!==e.termType}static isQuad(e){return"Quad"===e.termType}static hasQuadVariables(e){return(0,o.someTermsNested)(e,(e=>"Variable"===e.termType))}static isWildcard(e){return"Wildcard"===e.termType}}t.default=s},44897:(e,t,r)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.printError=w,t.GraphQLError=void 0;var i,a=(i=r(78582))&&i.__esModule?i:{default:i},o=r(28189),s=r(4251),c=r(90354);function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function d(e,t){for(var r=0;r0},name:{enumerable:!1},nodes:{enumerable:!1},source:{enumerable:!1},positions:{enumerable:!1},originalError:{enumerable:!1}}),null!=o&&o.stack?(Object.defineProperty(h(b),"stack",{value:o.stack,writable:!0,configurable:!0}),p(b)):(Error.captureStackTrace?Error.captureStackTrace(h(b),f):Object.defineProperty(h(b),"stack",{value:Error().stack,writable:!0,configurable:!0}),b)}return n=f,(i=[{key:"toString",value:function(){return w(this)}},{key:o.SYMBOL_TO_STRING_TAG,get:function(){return"Object"}}])&&d(n.prototype,i),f}(f(Error));function _(e){return void 0===e||0===e.length?void 0:e}function w(e){var t=e.message;if(e.nodes)for(var r=0,n=e.nodes;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.syntaxError=function(e,t,r){return new n.GraphQLError("Syntax Error: ".concat(r),void 0,e,[t])};var n=r(44897)},44077:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.prototype.toJSON;"function"==typeof t||(0,n.default)(0),e.prototype.inspect=t,i.default&&(e.prototype[i.default]=t)};var n=a(r(81880)),i=a(r(37020));function a(e){return e&&e.__esModule?e:{default:e}}},65269:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(!Boolean(e))throw new Error(t)}},23216:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return c(e,[])};var n,i=(n=r(37020))&&n.__esModule?n:{default:n};function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}var o=10,s=2;function c(e,t){switch(a(e)){case"string":return JSON.stringify(e);case"function":return e.name?"[function ".concat(e.name,"]"):"[function]";case"object":return null===e?"null":function(e,t){if(-1!==t.indexOf(e))return"[Circular]";var r=[].concat(t,[e]),n=function(e){var t=e[String(i.default)];return"function"==typeof t?t:"function"==typeof e.inspect?e.inspect:void 0}(e);if(void 0!==n){var a=n.call(e);if(a!==e)return"string"==typeof a?a:c(a,r)}else if(Array.isArray(e))return function(e,t){if(0===e.length)return"[]";if(t.length>s)return"[Array]";for(var r=Math.min(o,e.length),n=e.length-r,i=[],a=0;a1&&i.push("... ".concat(n," more items")),"["+i.join(", ")+"]"}(e,r);return function(e,t){var r=Object.keys(e);return 0===r.length?"{}":t.length>s?"["+function(e){var t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if("Object"===t&&"function"==typeof e.constructor){var r=e.constructor.name;if("string"==typeof r&&""!==r)return r}return t}(e)+"]":"{ "+r.map((function(r){return r+": "+c(e[r],t)})).join(", ")+" }"}(e,r)}(e,t);default:return String(e)}}},83588:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,(n=r(23216))&&n.__esModule;t.default=function(e,t){return e instanceof t}},81880:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(!Boolean(e))throw new Error(null!=t?t:"Unexpected invariant triggered.")}},78582:(e,t)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return"object"==r(e)&&null!==e}},37020:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):void 0;t.default=r},93378:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isNode=function(e){return null!=e&&"string"==typeof e.kind},t.Token=t.Location=void 0;var n,i=(n=r(44077))&&n.__esModule?n:{default:n},a=function(){function e(e,t,r){this.start=e.start,this.end=t.end,this.startToken=e,this.endToken=t,this.source=r}return e.prototype.toJSON=function(){return{start:this.start,end:this.end}},e}();t.Location=a,(0,i.default)(a);var o=function(){function e(e,t,r,n,i,a,o){this.kind=e,this.start=t,this.end=r,this.line=n,this.column=i,this.value=o,this.prev=a,this.next=null}return e.prototype.toJSON=function(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}},e}();t.Token=o,(0,i.default)(o)},4758:(e,t)=>{"use strict";function r(e){for(var t=0;to&&r(t[s-1]);)--s;return t.slice(o,s).join("\n")},t.getBlockStringIndentation=n,t.printBlockString=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=-1===e.indexOf("\n"),i=" "===e[0]||"\t"===e[0],a='"'===e[e.length-1],o="\\"===e[e.length-1],s=!n||a||o||r,c="";return!s||n&&i||(c+="\n"+t),c+=t?e.replace(/\n/g,"\n"+t):e,s&&(c+="\n"),'"""'+c.replace(/"""/g,'\\"""')+'"""'}},23684:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveLocation=void 0;var r=Object.freeze({QUERY:"QUERY",MUTATION:"MUTATION",SUBSCRIPTION:"SUBSCRIPTION",FIELD:"FIELD",FRAGMENT_DEFINITION:"FRAGMENT_DEFINITION",FRAGMENT_SPREAD:"FRAGMENT_SPREAD",INLINE_FRAGMENT:"INLINE_FRAGMENT",VARIABLE_DEFINITION:"VARIABLE_DEFINITION",SCHEMA:"SCHEMA",SCALAR:"SCALAR",OBJECT:"OBJECT",FIELD_DEFINITION:"FIELD_DEFINITION",ARGUMENT_DEFINITION:"ARGUMENT_DEFINITION",INTERFACE:"INTERFACE",UNION:"UNION",ENUM:"ENUM",ENUM_VALUE:"ENUM_VALUE",INPUT_OBJECT:"INPUT_OBJECT",INPUT_FIELD_DEFINITION:"INPUT_FIELD_DEFINITION"});t.DirectiveLocation=r},44330:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Source",{enumerable:!0,get:function(){return n.Source}}),Object.defineProperty(t,"getLocation",{enumerable:!0,get:function(){return i.getLocation}}),Object.defineProperty(t,"printLocation",{enumerable:!0,get:function(){return a.printLocation}}),Object.defineProperty(t,"printSourceLocation",{enumerable:!0,get:function(){return a.printSourceLocation}}),Object.defineProperty(t,"Kind",{enumerable:!0,get:function(){return o.Kind}}),Object.defineProperty(t,"TokenKind",{enumerable:!0,get:function(){return s.TokenKind}}),Object.defineProperty(t,"Lexer",{enumerable:!0,get:function(){return c.Lexer}}),Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return u.parse}}),Object.defineProperty(t,"parseValue",{enumerable:!0,get:function(){return u.parseValue}}),Object.defineProperty(t,"parseType",{enumerable:!0,get:function(){return u.parseType}}),Object.defineProperty(t,"print",{enumerable:!0,get:function(){return l.print}}),Object.defineProperty(t,"visit",{enumerable:!0,get:function(){return d.visit}}),Object.defineProperty(t,"visitInParallel",{enumerable:!0,get:function(){return d.visitInParallel}}),Object.defineProperty(t,"getVisitFn",{enumerable:!0,get:function(){return d.getVisitFn}}),Object.defineProperty(t,"BREAK",{enumerable:!0,get:function(){return d.BREAK}}),Object.defineProperty(t,"Location",{enumerable:!0,get:function(){return p.Location}}),Object.defineProperty(t,"Token",{enumerable:!0,get:function(){return p.Token}}),Object.defineProperty(t,"isDefinitionNode",{enumerable:!0,get:function(){return h.isDefinitionNode}}),Object.defineProperty(t,"isExecutableDefinitionNode",{enumerable:!0,get:function(){return h.isExecutableDefinitionNode}}),Object.defineProperty(t,"isSelectionNode",{enumerable:!0,get:function(){return h.isSelectionNode}}),Object.defineProperty(t,"isValueNode",{enumerable:!0,get:function(){return h.isValueNode}}),Object.defineProperty(t,"isTypeNode",{enumerable:!0,get:function(){return h.isTypeNode}}),Object.defineProperty(t,"isTypeSystemDefinitionNode",{enumerable:!0,get:function(){return h.isTypeSystemDefinitionNode}}),Object.defineProperty(t,"isTypeDefinitionNode",{enumerable:!0,get:function(){return h.isTypeDefinitionNode}}),Object.defineProperty(t,"isTypeSystemExtensionNode",{enumerable:!0,get:function(){return h.isTypeSystemExtensionNode}}),Object.defineProperty(t,"isTypeExtensionNode",{enumerable:!0,get:function(){return h.isTypeExtensionNode}}),Object.defineProperty(t,"DirectiveLocation",{enumerable:!0,get:function(){return f.DirectiveLocation}});var n=r(76241),i=r(4251),a=r(90354),o=r(12057),s=r(58053),c=r(4524),u=r(42275),l=r(43230),d=r(48048),p=r(93378),h=r(49674),f=r(23684)},12057:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Kind=void 0;var r=Object.freeze({NAME:"Name",DOCUMENT:"Document",OPERATION_DEFINITION:"OperationDefinition",VARIABLE_DEFINITION:"VariableDefinition",SELECTION_SET:"SelectionSet",FIELD:"Field",ARGUMENT:"Argument",FRAGMENT_SPREAD:"FragmentSpread",INLINE_FRAGMENT:"InlineFragment",FRAGMENT_DEFINITION:"FragmentDefinition",VARIABLE:"Variable",INT:"IntValue",FLOAT:"FloatValue",STRING:"StringValue",BOOLEAN:"BooleanValue",NULL:"NullValue",ENUM:"EnumValue",LIST:"ListValue",OBJECT:"ObjectValue",OBJECT_FIELD:"ObjectField",DIRECTIVE:"Directive",NAMED_TYPE:"NamedType",LIST_TYPE:"ListType",NON_NULL_TYPE:"NonNullType",SCHEMA_DEFINITION:"SchemaDefinition",OPERATION_TYPE_DEFINITION:"OperationTypeDefinition",SCALAR_TYPE_DEFINITION:"ScalarTypeDefinition",OBJECT_TYPE_DEFINITION:"ObjectTypeDefinition",FIELD_DEFINITION:"FieldDefinition",INPUT_VALUE_DEFINITION:"InputValueDefinition",INTERFACE_TYPE_DEFINITION:"InterfaceTypeDefinition",UNION_TYPE_DEFINITION:"UnionTypeDefinition",ENUM_TYPE_DEFINITION:"EnumTypeDefinition",ENUM_VALUE_DEFINITION:"EnumValueDefinition",INPUT_OBJECT_TYPE_DEFINITION:"InputObjectTypeDefinition",DIRECTIVE_DEFINITION:"DirectiveDefinition",SCHEMA_EXTENSION:"SchemaExtension",SCALAR_TYPE_EXTENSION:"ScalarTypeExtension",OBJECT_TYPE_EXTENSION:"ObjectTypeExtension",INTERFACE_TYPE_EXTENSION:"InterfaceTypeExtension",UNION_TYPE_EXTENSION:"UnionTypeExtension",ENUM_TYPE_EXTENSION:"EnumTypeExtension",INPUT_OBJECT_TYPE_EXTENSION:"InputObjectTypeExtension"});t.Kind=r},4524:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isPunctuatorTokenKind=function(e){return e===a.TokenKind.BANG||e===a.TokenKind.DOLLAR||e===a.TokenKind.AMP||e===a.TokenKind.PAREN_L||e===a.TokenKind.PAREN_R||e===a.TokenKind.SPREAD||e===a.TokenKind.COLON||e===a.TokenKind.EQUALS||e===a.TokenKind.AT||e===a.TokenKind.BRACKET_L||e===a.TokenKind.BRACKET_R||e===a.TokenKind.BRACE_L||e===a.TokenKind.PIPE||e===a.TokenKind.BRACE_R},t.Lexer=void 0;var n=r(40629),i=r(93378),a=r(58053),o=r(4758),s=function(){function e(e){var t=new i.Token(a.TokenKind.SOF,0,0,0,0,null);this.source=e,this.lastToken=t,this.token=t,this.line=1,this.lineStart=0}var t=e.prototype;return t.advance=function(){return this.lastToken=this.token,this.token=this.lookahead()},t.lookahead=function(){var e=this.token;if(e.kind!==a.TokenKind.EOF)do{var t;e=null!==(t=e.next)&&void 0!==t?t:e.next=u(this,e)}while(e.kind===a.TokenKind.COMMENT);return e},e}();function c(e){return isNaN(e)?a.TokenKind.EOF:e<127?JSON.stringify(String.fromCharCode(e)):'"\\u'.concat(("00"+e.toString(16).toUpperCase()).slice(-4),'"')}function u(e,t){for(var r=e.source,o=r.body,s=o.length,c=t.end;c31||9===s));return new i.Token(a.TokenKind.COMMENT,t,u,r,n,o,c.slice(t+1,u))}function p(e,t,r,o,s,u){var l=e.body,d=r,p=t,f=!1;if(45===d&&(d=l.charCodeAt(++p)),48===d){if((d=l.charCodeAt(++p))>=48&&d<=57)throw(0,n.syntaxError)(e,p,"Invalid number, unexpected digit after 0: ".concat(c(d),"."))}else p=h(e,p,d),d=l.charCodeAt(p);if(46===d&&(f=!0,d=l.charCodeAt(++p),p=h(e,p,d),d=l.charCodeAt(p)),69!==d&&101!==d||(f=!0,43!==(d=l.charCodeAt(++p))&&45!==d||(d=l.charCodeAt(++p)),p=h(e,p,d),d=l.charCodeAt(p)),46===d||function(e){return 95===e||e>=65&&e<=90||e>=97&&e<=122}(d))throw(0,n.syntaxError)(e,p,"Invalid number, expected digit but got: ".concat(c(d),"."));return new i.Token(f?a.TokenKind.FLOAT:a.TokenKind.INT,t,p,o,s,u,l.slice(t,p))}function h(e,t,r){var i=e.body,a=t,o=r;if(o>=48&&o<=57){do{o=i.charCodeAt(++a)}while(o>=48&&o<=57);return a}throw(0,n.syntaxError)(e,a,"Invalid number, expected digit but got: ".concat(c(o),"."))}function f(e,t,r,o,s){for(var u,l,d,p,h=e.body,f=t+1,y=f,m=0,b="";f=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}function m(e,t,r,n,o){for(var s=e.body,c=s.length,u=t+1,l=0;u!==c&&!isNaN(l=s.charCodeAt(u))&&(95===l||l>=48&&l<=57||l>=65&&l<=90||l>=97&&l<=122);)++u;return new i.Token(a.TokenKind.NAME,t,u,r,n,o,s.slice(t,u))}t.Lexer=s},4251:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getLocation=function(e,t){for(var r,n=/\r\n|[\n\r]/g,i=1,a=t+1;(r=n.exec(e.body))&&r.index{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=function(e,t){return new l(e,t).parseDocument()},t.parseValue=function(e,t){var r=new l(e,t);r.expectToken(o.TokenKind.SOF);var n=r.parseValueLiteral(!1);return r.expectToken(o.TokenKind.EOF),n},t.parseType=function(e,t){var r=new l(e,t);r.expectToken(o.TokenKind.SOF);var n=r.parseTypeReference();return r.expectToken(o.TokenKind.EOF),n},t.Parser=void 0;var n=r(40629),i=r(12057),a=r(93378),o=r(58053),s=r(76241),c=r(23684),u=r(4524),l=function(){function e(e,t){var r=(0,s.isSource)(e)?e:new s.Source(e);this._lexer=new u.Lexer(r),this._options=t}var t=e.prototype;return t.parseName=function(){var e=this.expectToken(o.TokenKind.NAME);return{kind:i.Kind.NAME,value:e.value,loc:this.loc(e)}},t.parseDocument=function(){var e=this._lexer.token;return{kind:i.Kind.DOCUMENT,definitions:this.many(o.TokenKind.SOF,this.parseDefinition,o.TokenKind.EOF),loc:this.loc(e)}},t.parseDefinition=function(){if(this.peek(o.TokenKind.NAME))switch(this._lexer.token.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"schema":case"scalar":case"type":case"interface":case"union":case"enum":case"input":case"directive":return this.parseTypeSystemDefinition();case"extend":return this.parseTypeSystemExtension()}else{if(this.peek(o.TokenKind.BRACE_L))return this.parseOperationDefinition();if(this.peekDescription())return this.parseTypeSystemDefinition()}throw this.unexpected()},t.parseOperationDefinition=function(){var e=this._lexer.token;if(this.peek(o.TokenKind.BRACE_L))return{kind:i.Kind.OPERATION_DEFINITION,operation:"query",name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet(),loc:this.loc(e)};var t,r=this.parseOperationType();return this.peek(o.TokenKind.NAME)&&(t=this.parseName()),{kind:i.Kind.OPERATION_DEFINITION,operation:r,name:t,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}},t.parseOperationType=function(){var e=this.expectToken(o.TokenKind.NAME);switch(e.value){case"query":return"query";case"mutation":return"mutation";case"subscription":return"subscription"}throw this.unexpected(e)},t.parseVariableDefinitions=function(){return this.optionalMany(o.TokenKind.PAREN_L,this.parseVariableDefinition,o.TokenKind.PAREN_R)},t.parseVariableDefinition=function(){var e=this._lexer.token;return{kind:i.Kind.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(o.TokenKind.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(o.TokenKind.EQUALS)?this.parseValueLiteral(!0):void 0,directives:this.parseDirectives(!0),loc:this.loc(e)}},t.parseVariable=function(){var e=this._lexer.token;return this.expectToken(o.TokenKind.DOLLAR),{kind:i.Kind.VARIABLE,name:this.parseName(),loc:this.loc(e)}},t.parseSelectionSet=function(){var e=this._lexer.token;return{kind:i.Kind.SELECTION_SET,selections:this.many(o.TokenKind.BRACE_L,this.parseSelection,o.TokenKind.BRACE_R),loc:this.loc(e)}},t.parseSelection=function(){return this.peek(o.TokenKind.SPREAD)?this.parseFragment():this.parseField()},t.parseField=function(){var e,t,r=this._lexer.token,n=this.parseName();return this.expectOptionalToken(o.TokenKind.COLON)?(e=n,t=this.parseName()):t=n,{kind:i.Kind.FIELD,alias:e,name:t,arguments:this.parseArguments(!1),directives:this.parseDirectives(!1),selectionSet:this.peek(o.TokenKind.BRACE_L)?this.parseSelectionSet():void 0,loc:this.loc(r)}},t.parseArguments=function(e){var t=e?this.parseConstArgument:this.parseArgument;return this.optionalMany(o.TokenKind.PAREN_L,t,o.TokenKind.PAREN_R)},t.parseArgument=function(){var e=this._lexer.token,t=this.parseName();return this.expectToken(o.TokenKind.COLON),{kind:i.Kind.ARGUMENT,name:t,value:this.parseValueLiteral(!1),loc:this.loc(e)}},t.parseConstArgument=function(){var e=this._lexer.token;return{kind:i.Kind.ARGUMENT,name:this.parseName(),value:(this.expectToken(o.TokenKind.COLON),this.parseValueLiteral(!0)),loc:this.loc(e)}},t.parseFragment=function(){var e=this._lexer.token;this.expectToken(o.TokenKind.SPREAD);var t=this.expectOptionalKeyword("on");return!t&&this.peek(o.TokenKind.NAME)?{kind:i.Kind.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1),loc:this.loc(e)}:{kind:i.Kind.INLINE_FRAGMENT,typeCondition:t?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}},t.parseFragmentDefinition=function(){var e,t=this._lexer.token;return this.expectKeyword("fragment"),!0===(null===(e=this._options)||void 0===e?void 0:e.experimentalFragmentVariables)?{kind:i.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(t)}:{kind:i.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(t)}},t.parseFragmentName=function(){if("on"===this._lexer.token.value)throw this.unexpected();return this.parseName()},t.parseValueLiteral=function(e){var t=this._lexer.token;switch(t.kind){case o.TokenKind.BRACKET_L:return this.parseList(e);case o.TokenKind.BRACE_L:return this.parseObject(e);case o.TokenKind.INT:return this._lexer.advance(),{kind:i.Kind.INT,value:t.value,loc:this.loc(t)};case o.TokenKind.FLOAT:return this._lexer.advance(),{kind:i.Kind.FLOAT,value:t.value,loc:this.loc(t)};case o.TokenKind.STRING:case o.TokenKind.BLOCK_STRING:return this.parseStringLiteral();case o.TokenKind.NAME:switch(this._lexer.advance(),t.value){case"true":return{kind:i.Kind.BOOLEAN,value:!0,loc:this.loc(t)};case"false":return{kind:i.Kind.BOOLEAN,value:!1,loc:this.loc(t)};case"null":return{kind:i.Kind.NULL,loc:this.loc(t)};default:return{kind:i.Kind.ENUM,value:t.value,loc:this.loc(t)}}case o.TokenKind.DOLLAR:if(!e)return this.parseVariable()}throw this.unexpected()},t.parseStringLiteral=function(){var e=this._lexer.token;return this._lexer.advance(),{kind:i.Kind.STRING,value:e.value,block:e.kind===o.TokenKind.BLOCK_STRING,loc:this.loc(e)}},t.parseList=function(e){var t=this,r=this._lexer.token;return{kind:i.Kind.LIST,values:this.any(o.TokenKind.BRACKET_L,(function(){return t.parseValueLiteral(e)}),o.TokenKind.BRACKET_R),loc:this.loc(r)}},t.parseObject=function(e){var t=this,r=this._lexer.token;return{kind:i.Kind.OBJECT,fields:this.any(o.TokenKind.BRACE_L,(function(){return t.parseObjectField(e)}),o.TokenKind.BRACE_R),loc:this.loc(r)}},t.parseObjectField=function(e){var t=this._lexer.token,r=this.parseName();return this.expectToken(o.TokenKind.COLON),{kind:i.Kind.OBJECT_FIELD,name:r,value:this.parseValueLiteral(e),loc:this.loc(t)}},t.parseDirectives=function(e){for(var t=[];this.peek(o.TokenKind.AT);)t.push(this.parseDirective(e));return t},t.parseDirective=function(e){var t=this._lexer.token;return this.expectToken(o.TokenKind.AT),{kind:i.Kind.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(e),loc:this.loc(t)}},t.parseTypeReference=function(){var e,t=this._lexer.token;return this.expectOptionalToken(o.TokenKind.BRACKET_L)?(e=this.parseTypeReference(),this.expectToken(o.TokenKind.BRACKET_R),e={kind:i.Kind.LIST_TYPE,type:e,loc:this.loc(t)}):e=this.parseNamedType(),this.expectOptionalToken(o.TokenKind.BANG)?{kind:i.Kind.NON_NULL_TYPE,type:e,loc:this.loc(t)}:e},t.parseNamedType=function(){var e=this._lexer.token;return{kind:i.Kind.NAMED_TYPE,name:this.parseName(),loc:this.loc(e)}},t.parseTypeSystemDefinition=function(){var e=this.peekDescription()?this._lexer.lookahead():this._lexer.token;if(e.kind===o.TokenKind.NAME)switch(e.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}throw this.unexpected(e)},t.peekDescription=function(){return this.peek(o.TokenKind.STRING)||this.peek(o.TokenKind.BLOCK_STRING)},t.parseDescription=function(){if(this.peekDescription())return this.parseStringLiteral()},t.parseSchemaDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("schema");var r=this.parseDirectives(!0),n=this.many(o.TokenKind.BRACE_L,this.parseOperationTypeDefinition,o.TokenKind.BRACE_R);return{kind:i.Kind.SCHEMA_DEFINITION,description:t,directives:r,operationTypes:n,loc:this.loc(e)}},t.parseOperationTypeDefinition=function(){var e=this._lexer.token,t=this.parseOperationType();this.expectToken(o.TokenKind.COLON);var r=this.parseNamedType();return{kind:i.Kind.OPERATION_TYPE_DEFINITION,operation:t,type:r,loc:this.loc(e)}},t.parseScalarTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("scalar");var r=this.parseName(),n=this.parseDirectives(!0);return{kind:i.Kind.SCALAR_TYPE_DEFINITION,description:t,name:r,directives:n,loc:this.loc(e)}},t.parseObjectTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("type");var r=this.parseName(),n=this.parseImplementsInterfaces(),a=this.parseDirectives(!0),o=this.parseFieldsDefinition();return{kind:i.Kind.OBJECT_TYPE_DEFINITION,description:t,name:r,interfaces:n,directives:a,fields:o,loc:this.loc(e)}},t.parseImplementsInterfaces=function(){var e;if(!this.expectOptionalKeyword("implements"))return[];if(!0===(null===(e=this._options)||void 0===e?void 0:e.allowLegacySDLImplementsInterfaces)){var t=[];this.expectOptionalToken(o.TokenKind.AMP);do{t.push(this.parseNamedType())}while(this.expectOptionalToken(o.TokenKind.AMP)||this.peek(o.TokenKind.NAME));return t}return this.delimitedMany(o.TokenKind.AMP,this.parseNamedType)},t.parseFieldsDefinition=function(){var e;return!0===(null===(e=this._options)||void 0===e?void 0:e.allowLegacySDLEmptyFields)&&this.peek(o.TokenKind.BRACE_L)&&this._lexer.lookahead().kind===o.TokenKind.BRACE_R?(this._lexer.advance(),this._lexer.advance(),[]):this.optionalMany(o.TokenKind.BRACE_L,this.parseFieldDefinition,o.TokenKind.BRACE_R)},t.parseFieldDefinition=function(){var e=this._lexer.token,t=this.parseDescription(),r=this.parseName(),n=this.parseArgumentDefs();this.expectToken(o.TokenKind.COLON);var a=this.parseTypeReference(),s=this.parseDirectives(!0);return{kind:i.Kind.FIELD_DEFINITION,description:t,name:r,arguments:n,type:a,directives:s,loc:this.loc(e)}},t.parseArgumentDefs=function(){return this.optionalMany(o.TokenKind.PAREN_L,this.parseInputValueDef,o.TokenKind.PAREN_R)},t.parseInputValueDef=function(){var e=this._lexer.token,t=this.parseDescription(),r=this.parseName();this.expectToken(o.TokenKind.COLON);var n,a=this.parseTypeReference();this.expectOptionalToken(o.TokenKind.EQUALS)&&(n=this.parseValueLiteral(!0));var s=this.parseDirectives(!0);return{kind:i.Kind.INPUT_VALUE_DEFINITION,description:t,name:r,type:a,defaultValue:n,directives:s,loc:this.loc(e)}},t.parseInterfaceTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("interface");var r=this.parseName(),n=this.parseImplementsInterfaces(),a=this.parseDirectives(!0),o=this.parseFieldsDefinition();return{kind:i.Kind.INTERFACE_TYPE_DEFINITION,description:t,name:r,interfaces:n,directives:a,fields:o,loc:this.loc(e)}},t.parseUnionTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("union");var r=this.parseName(),n=this.parseDirectives(!0),a=this.parseUnionMemberTypes();return{kind:i.Kind.UNION_TYPE_DEFINITION,description:t,name:r,directives:n,types:a,loc:this.loc(e)}},t.parseUnionMemberTypes=function(){return this.expectOptionalToken(o.TokenKind.EQUALS)?this.delimitedMany(o.TokenKind.PIPE,this.parseNamedType):[]},t.parseEnumTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("enum");var r=this.parseName(),n=this.parseDirectives(!0),a=this.parseEnumValuesDefinition();return{kind:i.Kind.ENUM_TYPE_DEFINITION,description:t,name:r,directives:n,values:a,loc:this.loc(e)}},t.parseEnumValuesDefinition=function(){return this.optionalMany(o.TokenKind.BRACE_L,this.parseEnumValueDefinition,o.TokenKind.BRACE_R)},t.parseEnumValueDefinition=function(){var e=this._lexer.token,t=this.parseDescription(),r=this.parseName(),n=this.parseDirectives(!0);return{kind:i.Kind.ENUM_VALUE_DEFINITION,description:t,name:r,directives:n,loc:this.loc(e)}},t.parseInputObjectTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("input");var r=this.parseName(),n=this.parseDirectives(!0),a=this.parseInputFieldsDefinition();return{kind:i.Kind.INPUT_OBJECT_TYPE_DEFINITION,description:t,name:r,directives:n,fields:a,loc:this.loc(e)}},t.parseInputFieldsDefinition=function(){return this.optionalMany(o.TokenKind.BRACE_L,this.parseInputValueDef,o.TokenKind.BRACE_R)},t.parseTypeSystemExtension=function(){var e=this._lexer.lookahead();if(e.kind===o.TokenKind.NAME)switch(e.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(e)},t.parseSchemaExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");var t=this.parseDirectives(!0),r=this.optionalMany(o.TokenKind.BRACE_L,this.parseOperationTypeDefinition,o.TokenKind.BRACE_R);if(0===t.length&&0===r.length)throw this.unexpected();return{kind:i.Kind.SCHEMA_EXTENSION,directives:t,operationTypes:r,loc:this.loc(e)}},t.parseScalarTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");var t=this.parseName(),r=this.parseDirectives(!0);if(0===r.length)throw this.unexpected();return{kind:i.Kind.SCALAR_TYPE_EXTENSION,name:t,directives:r,loc:this.loc(e)}},t.parseObjectTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");var t=this.parseName(),r=this.parseImplementsInterfaces(),n=this.parseDirectives(!0),a=this.parseFieldsDefinition();if(0===r.length&&0===n.length&&0===a.length)throw this.unexpected();return{kind:i.Kind.OBJECT_TYPE_EXTENSION,name:t,interfaces:r,directives:n,fields:a,loc:this.loc(e)}},t.parseInterfaceTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");var t=this.parseName(),r=this.parseImplementsInterfaces(),n=this.parseDirectives(!0),a=this.parseFieldsDefinition();if(0===r.length&&0===n.length&&0===a.length)throw this.unexpected();return{kind:i.Kind.INTERFACE_TYPE_EXTENSION,name:t,interfaces:r,directives:n,fields:a,loc:this.loc(e)}},t.parseUnionTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");var t=this.parseName(),r=this.parseDirectives(!0),n=this.parseUnionMemberTypes();if(0===r.length&&0===n.length)throw this.unexpected();return{kind:i.Kind.UNION_TYPE_EXTENSION,name:t,directives:r,types:n,loc:this.loc(e)}},t.parseEnumTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");var t=this.parseName(),r=this.parseDirectives(!0),n=this.parseEnumValuesDefinition();if(0===r.length&&0===n.length)throw this.unexpected();return{kind:i.Kind.ENUM_TYPE_EXTENSION,name:t,directives:r,values:n,loc:this.loc(e)}},t.parseInputObjectTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");var t=this.parseName(),r=this.parseDirectives(!0),n=this.parseInputFieldsDefinition();if(0===r.length&&0===n.length)throw this.unexpected();return{kind:i.Kind.INPUT_OBJECT_TYPE_EXTENSION,name:t,directives:r,fields:n,loc:this.loc(e)}},t.parseDirectiveDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("directive"),this.expectToken(o.TokenKind.AT);var r=this.parseName(),n=this.parseArgumentDefs(),a=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");var s=this.parseDirectiveLocations();return{kind:i.Kind.DIRECTIVE_DEFINITION,description:t,name:r,arguments:n,repeatable:a,locations:s,loc:this.loc(e)}},t.parseDirectiveLocations=function(){return this.delimitedMany(o.TokenKind.PIPE,this.parseDirectiveLocation)},t.parseDirectiveLocation=function(){var e=this._lexer.token,t=this.parseName();if(void 0!==c.DirectiveLocation[t.value])return t;throw this.unexpected(e)},t.loc=function(e){var t;if(!0!==(null===(t=this._options)||void 0===t?void 0:t.noLocation))return new a.Location(e,this._lexer.lastToken,this._lexer.source)},t.peek=function(e){return this._lexer.token.kind===e},t.expectToken=function(e){var t=this._lexer.token;if(t.kind===e)return this._lexer.advance(),t;throw(0,n.syntaxError)(this._lexer.source,t.start,"Expected ".concat(p(e),", found ").concat(d(t),"."))},t.expectOptionalToken=function(e){var t=this._lexer.token;if(t.kind===e)return this._lexer.advance(),t},t.expectKeyword=function(e){var t=this._lexer.token;if(t.kind!==o.TokenKind.NAME||t.value!==e)throw(0,n.syntaxError)(this._lexer.source,t.start,'Expected "'.concat(e,'", found ').concat(d(t),"."));this._lexer.advance()},t.expectOptionalKeyword=function(e){var t=this._lexer.token;return t.kind===o.TokenKind.NAME&&t.value===e&&(this._lexer.advance(),!0)},t.unexpected=function(e){var t=null!=e?e:this._lexer.token;return(0,n.syntaxError)(this._lexer.source,t.start,"Unexpected ".concat(d(t),"."))},t.any=function(e,t,r){this.expectToken(e);for(var n=[];!this.expectOptionalToken(r);)n.push(t.call(this));return n},t.optionalMany=function(e,t,r){if(this.expectOptionalToken(e)){var n=[];do{n.push(t.call(this))}while(!this.expectOptionalToken(r));return n}return[]},t.many=function(e,t,r){this.expectToken(e);var n=[];do{n.push(t.call(this))}while(!this.expectOptionalToken(r));return n},t.delimitedMany=function(e,t){this.expectOptionalToken(e);var r=[];do{r.push(t.call(this))}while(this.expectOptionalToken(e));return r},e}();function d(e){var t=e.value;return p(e.kind)+(null!=t?' "'.concat(t,'"'):"")}function p(e){return(0,u.isPunctuatorTokenKind)(e)?'"'.concat(e,'"'):e}t.Parser=l},49674:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isDefinitionNode=function(e){return i(e)||a(e)||s(e)},t.isExecutableDefinitionNode=i,t.isSelectionNode=function(e){return e.kind===n.Kind.FIELD||e.kind===n.Kind.FRAGMENT_SPREAD||e.kind===n.Kind.INLINE_FRAGMENT},t.isValueNode=function(e){return e.kind===n.Kind.VARIABLE||e.kind===n.Kind.INT||e.kind===n.Kind.FLOAT||e.kind===n.Kind.STRING||e.kind===n.Kind.BOOLEAN||e.kind===n.Kind.NULL||e.kind===n.Kind.ENUM||e.kind===n.Kind.LIST||e.kind===n.Kind.OBJECT},t.isTypeNode=function(e){return e.kind===n.Kind.NAMED_TYPE||e.kind===n.Kind.LIST_TYPE||e.kind===n.Kind.NON_NULL_TYPE},t.isTypeSystemDefinitionNode=a,t.isTypeDefinitionNode=o,t.isTypeSystemExtensionNode=s,t.isTypeExtensionNode=c;var n=r(12057);function i(e){return e.kind===n.Kind.OPERATION_DEFINITION||e.kind===n.Kind.FRAGMENT_DEFINITION}function a(e){return e.kind===n.Kind.SCHEMA_DEFINITION||o(e)||e.kind===n.Kind.DIRECTIVE_DEFINITION}function o(e){return e.kind===n.Kind.SCALAR_TYPE_DEFINITION||e.kind===n.Kind.OBJECT_TYPE_DEFINITION||e.kind===n.Kind.INTERFACE_TYPE_DEFINITION||e.kind===n.Kind.UNION_TYPE_DEFINITION||e.kind===n.Kind.ENUM_TYPE_DEFINITION||e.kind===n.Kind.INPUT_OBJECT_TYPE_DEFINITION}function s(e){return e.kind===n.Kind.SCHEMA_EXTENSION||c(e)}function c(e){return e.kind===n.Kind.SCALAR_TYPE_EXTENSION||e.kind===n.Kind.OBJECT_TYPE_EXTENSION||e.kind===n.Kind.INTERFACE_TYPE_EXTENSION||e.kind===n.Kind.UNION_TYPE_EXTENSION||e.kind===n.Kind.ENUM_TYPE_EXTENSION||e.kind===n.Kind.INPUT_OBJECT_TYPE_EXTENSION}},90354:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.printLocation=function(e){return i(e.source,(0,n.getLocation)(e.source,e.start))},t.printSourceLocation=i;var n=r(4251);function i(e,t){var r=e.locationOffset.column-1,n=o(r)+e.body,i=t.line-1,s=e.locationOffset.line-1,c=t.line+s,u=1===t.line?r:0,l=t.column+u,d="".concat(e.name,":").concat(c,":").concat(l,"\n"),p=n.split(/\r\n|[\n\r]/g),h=p[i];if(h.length>120){for(var f=Math.floor(l/80),y=l%80,g=[],m=0;m{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.print=function(e){return(0,n.visit)(e,{leave:a})};var n=r(48048),i=r(4758),a={Name:function(e){return e.value},Variable:function(e){return"$"+e.name},Document:function(e){return s(e.definitions,"\n\n")+"\n"},OperationDefinition:function(e){var t=e.operation,r=e.name,n=u("(",s(e.variableDefinitions,", "),")"),i=s(e.directives," "),a=e.selectionSet;return r||i||n||"query"!==t?s([t,s([r,n]),i,a]," "):a},VariableDefinition:function(e){var t=e.variable,r=e.type,n=e.defaultValue,i=e.directives;return t+": "+r+u(" = ",n)+u(" ",s(i," "))},SelectionSet:function(e){return c(e.selections)},Field:function(e){var t=e.alias,r=e.name,n=e.arguments,i=e.directives,a=e.selectionSet,o=u("",t,": ")+r,c=o+u("(",s(n,", "),")");return c.length>80&&(c=o+u("(\n",l(s(n,"\n")),"\n)")),s([c,s(i," "),a]," ")},Argument:function(e){return e.name+": "+e.value},FragmentSpread:function(e){return"..."+e.name+u(" ",s(e.directives," "))},InlineFragment:function(e){var t=e.typeCondition,r=e.directives,n=e.selectionSet;return s(["...",u("on ",t),s(r," "),n]," ")},FragmentDefinition:function(e){var t=e.name,r=e.typeCondition,n=e.variableDefinitions,i=e.directives,a=e.selectionSet;return"fragment ".concat(t).concat(u("(",s(n,", "),")")," ")+"on ".concat(r," ").concat(u("",s(i," ")," "))+a},IntValue:function(e){return e.value},FloatValue:function(e){return e.value},StringValue:function(e,t){var r=e.value;return e.block?(0,i.printBlockString)(r,"description"===t?"":" "):JSON.stringify(r)},BooleanValue:function(e){return e.value?"true":"false"},NullValue:function(){return"null"},EnumValue:function(e){return e.value},ListValue:function(e){return"["+s(e.values,", ")+"]"},ObjectValue:function(e){return"{"+s(e.fields,", ")+"}"},ObjectField:function(e){return e.name+": "+e.value},Directive:function(e){return"@"+e.name+u("(",s(e.arguments,", "),")")},NamedType:function(e){return e.name},ListType:function(e){return"["+e.type+"]"},NonNullType:function(e){return e.type+"!"},SchemaDefinition:o((function(e){var t=e.directives,r=e.operationTypes;return s(["schema",s(t," "),c(r)]," ")})),OperationTypeDefinition:function(e){return e.operation+": "+e.type},ScalarTypeDefinition:o((function(e){return s(["scalar",e.name,s(e.directives," ")]," ")})),ObjectTypeDefinition:o((function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return s(["type",t,u("implements ",s(r," & ")),s(n," "),c(i)]," ")})),FieldDefinition:o((function(e){var t=e.name,r=e.arguments,n=e.type,i=e.directives;return t+(p(r)?u("(\n",l(s(r,"\n")),"\n)"):u("(",s(r,", "),")"))+": "+n+u(" ",s(i," "))})),InputValueDefinition:o((function(e){var t=e.name,r=e.type,n=e.defaultValue,i=e.directives;return s([t+": "+r,u("= ",n),s(i," ")]," ")})),InterfaceTypeDefinition:o((function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return s(["interface",t,u("implements ",s(r," & ")),s(n," "),c(i)]," ")})),UnionTypeDefinition:o((function(e){var t=e.name,r=e.directives,n=e.types;return s(["union",t,s(r," "),n&&0!==n.length?"= "+s(n," | "):""]," ")})),EnumTypeDefinition:o((function(e){var t=e.name,r=e.directives,n=e.values;return s(["enum",t,s(r," "),c(n)]," ")})),EnumValueDefinition:o((function(e){return s([e.name,s(e.directives," ")]," ")})),InputObjectTypeDefinition:o((function(e){var t=e.name,r=e.directives,n=e.fields;return s(["input",t,s(r," "),c(n)]," ")})),DirectiveDefinition:o((function(e){var t=e.name,r=e.arguments,n=e.repeatable,i=e.locations;return"directive @"+t+(p(r)?u("(\n",l(s(r,"\n")),"\n)"):u("(",s(r,", "),")"))+(n?" repeatable":"")+" on "+s(i," | ")})),SchemaExtension:function(e){var t=e.directives,r=e.operationTypes;return s(["extend schema",s(t," "),c(r)]," ")},ScalarTypeExtension:function(e){return s(["extend scalar",e.name,s(e.directives," ")]," ")},ObjectTypeExtension:function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return s(["extend type",t,u("implements ",s(r," & ")),s(n," "),c(i)]," ")},InterfaceTypeExtension:function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return s(["extend interface",t,u("implements ",s(r," & ")),s(n," "),c(i)]," ")},UnionTypeExtension:function(e){var t=e.name,r=e.directives,n=e.types;return s(["extend union",t,s(r," "),n&&0!==n.length?"= "+s(n," | "):""]," ")},EnumTypeExtension:function(e){var t=e.name,r=e.directives,n=e.values;return s(["extend enum",t,s(r," "),c(n)]," ")},InputObjectTypeExtension:function(e){var t=e.name,r=e.directives,n=e.fields;return s(["extend input",t,s(r," "),c(n)]," ")}};function o(e){return function(t){return s([t.description,e(t)],"\n")}}function s(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return null!==(t=null==e?void 0:e.filter((function(e){return e})).join(r))&&void 0!==t?t:""}function c(e){return u("{\n",l(s(e,"\n")),"\n}")}function u(e,t){return null!=t&&""!==t?e+t+(arguments.length>2&&void 0!==arguments[2]?arguments[2]:""):""}function l(e){return u(" ",e.replace(/\n/g,"\n "))}function d(e){return-1!==e.indexOf("\n")}function p(e){return null!=e&&e.some(d)}},76241:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isSource=function(e){return(0,o.default)(e,u)},t.Source=void 0;var n=r(28189),i=s(r(23216)),a=s(r(65269)),o=s(r(83588));function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:"GraphQL request",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{line:1,column:1};"string"==typeof e||(0,a.default)(0,"Body must be a string. Received: ".concat((0,i.default)(e),".")),this.body=e,this.name=t,this.locationOffset=r,this.locationOffset.line>0||(0,a.default)(0,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||(0,a.default)(0,"column in locationOffset is 1-indexed and must be positive.")}var t,r;return t=e,(r=[{key:n.SYMBOL_TO_STRING_TAG,get:function(){return"Source"}}])&&c(t.prototype,r),e}();t.Source=u},58053:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenKind=void 0;var r=Object.freeze({SOF:"",EOF:"",BANG:"!",DOLLAR:"$",AMP:"&",PAREN_L:"(",PAREN_R:")",SPREAD:"...",COLON:":",EQUALS:"=",AT:"@",BRACKET_L:"[",BRACKET_R:"]",BRACE_L:"{",PIPE:"|",BRACE_R:"}",NAME:"Name",INT:"Int",FLOAT:"Float",STRING:"String",BLOCK_STRING:"BlockString",COMMENT:"Comment"});t.TokenKind=r},48048:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.visit=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o,n=void 0,u=Array.isArray(e),l=[e],d=-1,p=[],h=void 0,f=void 0,y=void 0,g=[],m=[],b=e;do{var v=++d===l.length,_=v&&0!==p.length;if(v){if(f=0===m.length?void 0:g[g.length-1],h=y,y=m.pop(),_){if(u)h=h.slice();else{for(var w={},T=0,S=Object.keys(h);T{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SYMBOL_TO_STRING_TAG=t.SYMBOL_ASYNC_ITERATOR=t.SYMBOL_ITERATOR=void 0;var r="function"==typeof Symbol&&null!=Symbol.iterator?Symbol.iterator:"@@iterator";t.SYMBOL_ITERATOR=r;var n="function"==typeof Symbol&&null!=Symbol.asyncIterator?Symbol.asyncIterator:"@@asyncIterator";t.SYMBOL_ASYNC_ITERATOR=n;var i="function"==typeof Symbol&&null!=Symbol.toStringTag?Symbol.toStringTag:"@@toStringTag";t.SYMBOL_TO_STRING_TAG=i},99499:(e,t,r)=>{var n=t;n.utils=r(70461),n.common=r(32191),n.sha=r(75746),n.ripemd=r(74169),n.hmac=r(11825),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},32191:(e,t,r)=>{"use strict";var n=r(70461),i=r(7784);function a(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=a,a.prototype.update=function(e,t){if(e=n.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=n.join32(e,0,e.length-r,this.endian);for(var i=0;i>>24&255,n[i++]=e>>>16&255,n[i++]=e>>>8&255,n[i++]=255&e}else for(n[i++]=255&e,n[i++]=e>>>8&255,n[i++]=e>>>16&255,n[i++]=e>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,a=8;a{"use strict";var n=r(70461),i=r(7784);function a(e,t,r){if(!(this instanceof a))return new a(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(n.toArray(t,r))}e.exports=a,a.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),i(e.length<=this.blockSize);for(var t=e.length;t{"use strict";var n=r(70461),i=r(32191),a=n.rotl32,o=n.sum32,s=n.sum32_3,c=n.sum32_4,u=i.BlockHash;function l(){if(!(this instanceof l))return new l;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function d(e,t,r,n){return e<=15?t^r^n:e<=31?t&r|~t&n:e<=47?(t|~r)^n:e<=63?t&n|r&~n:t^(r|~n)}function p(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function h(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}n.inherits(l,u),t.ripemd160=l,l.blockSize=512,l.outSize=160,l.hmacStrength=192,l.padLength=64,l.prototype._update=function(e,t){for(var r=this.h[0],n=this.h[1],i=this.h[2],u=this.h[3],l=this.h[4],b=r,v=n,_=i,w=u,T=l,S=0;S<80;S++){var O=o(a(c(r,d(S,n,i,u),e[f[S]+t],p(S)),g[S]),l);r=l,l=u,u=a(i,10),i=n,n=O,O=o(a(c(b,d(79-S,v,_,w),e[y[S]+t],h(S)),m[S]),T),b=T,T=w,w=a(_,10),_=v,v=O}O=s(this.h[1],i,w),this.h[1]=s(this.h[2],u,T),this.h[2]=s(this.h[3],l,b),this.h[3]=s(this.h[4],r,v),this.h[4]=s(this.h[0],n,_),this.h[0]=O},l.prototype._digest=function(e){return"hex"===e?n.toHex32(this.h,"little"):n.split32(this.h,"little")};var f=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],y=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],g=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],m=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},75746:(e,t,r)=>{"use strict";t.sha1=r(12986),t.sha224=r(75393),t.sha256=r(50536),t.sha384=r(52348),t.sha512=r(92157)},12986:(e,t,r)=>{"use strict";var n=r(70461),i=r(32191),a=r(600),o=n.rotl32,s=n.sum32,c=n.sum32_5,u=a.ft_1,l=i.BlockHash,d=[1518500249,1859775393,2400959708,3395469782];function p(){if(!(this instanceof p))return new p;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}n.inherits(p,l),e.exports=p,p.blockSize=512,p.outSize=160,p.hmacStrength=80,p.padLength=64,p.prototype._update=function(e,t){for(var r=this.W,n=0;n<16;n++)r[n]=e[t+n];for(;n{"use strict";var n=r(70461),i=r(50536);function a(){if(!(this instanceof a))return new a;i.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}n.inherits(a,i),e.exports=a,a.blockSize=512,a.outSize=224,a.hmacStrength=192,a.padLength=64,a.prototype._digest=function(e){return"hex"===e?n.toHex32(this.h.slice(0,7),"big"):n.split32(this.h.slice(0,7),"big")}},50536:(e,t,r)=>{"use strict";var n=r(70461),i=r(32191),a=r(600),o=r(7784),s=n.sum32,c=n.sum32_4,u=n.sum32_5,l=a.ch32,d=a.maj32,p=a.s0_256,h=a.s1_256,f=a.g0_256,y=a.g1_256,g=i.BlockHash,m=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function b(){if(!(this instanceof b))return new b;g.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=m,this.W=new Array(64)}n.inherits(b,g),e.exports=b,b.blockSize=512,b.outSize=256,b.hmacStrength=192,b.padLength=64,b.prototype._update=function(e,t){for(var r=this.W,n=0;n<16;n++)r[n]=e[t+n];for(;n{"use strict";var n=r(70461),i=r(92157);function a(){if(!(this instanceof a))return new a;i.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}n.inherits(a,i),e.exports=a,a.blockSize=1024,a.outSize=384,a.hmacStrength=192,a.padLength=128,a.prototype._digest=function(e){return"hex"===e?n.toHex32(this.h.slice(0,12),"big"):n.split32(this.h.slice(0,12),"big")}},92157:(e,t,r)=>{"use strict";var n=r(70461),i=r(32191),a=r(7784),o=n.rotr64_hi,s=n.rotr64_lo,c=n.shr64_hi,u=n.shr64_lo,l=n.sum64,d=n.sum64_hi,p=n.sum64_lo,h=n.sum64_4_hi,f=n.sum64_4_lo,y=n.sum64_5_hi,g=n.sum64_5_lo,m=i.BlockHash,b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function v(){if(!(this instanceof v))return new v;m.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=b,this.W=new Array(160)}function _(e,t,r,n,i){var a=e&r^~e&i;return a<0&&(a+=4294967296),a}function w(e,t,r,n,i,a){var o=t&n^~t&a;return o<0&&(o+=4294967296),o}function T(e,t,r,n,i){var a=e&r^e&i^r&i;return a<0&&(a+=4294967296),a}function S(e,t,r,n,i,a){var o=t&n^t&a^n&a;return o<0&&(o+=4294967296),o}function O(e,t){var r=o(e,t,28)^o(t,e,2)^o(t,e,7);return r<0&&(r+=4294967296),r}function E(e,t){var r=s(e,t,28)^s(t,e,2)^s(t,e,7);return r<0&&(r+=4294967296),r}function x(e,t){var r=s(e,t,14)^s(e,t,18)^s(t,e,9);return r<0&&(r+=4294967296),r}function A(e,t){var r=o(e,t,1)^o(e,t,8)^c(e,t,7);return r<0&&(r+=4294967296),r}function R(e,t){var r=s(e,t,1)^s(e,t,8)^u(e,t,7);return r<0&&(r+=4294967296),r}function I(e,t){var r=s(e,t,19)^s(t,e,29)^u(e,t,6);return r<0&&(r+=4294967296),r}n.inherits(v,m),e.exports=v,v.blockSize=1024,v.outSize=512,v.hmacStrength=192,v.padLength=128,v.prototype._prepareBlock=function(e,t){for(var r=this.W,n=0;n<32;n++)r[n]=e[t+n];for(;n{"use strict";var n=r(70461).rotr32;function i(e,t,r){return e&t^~e&r}function a(e,t,r){return e&t^e&r^t&r}function o(e,t,r){return e^t^r}t.ft_1=function(e,t,r,n){return 0===e?i(t,r,n):1===e||3===e?o(t,r,n):2===e?a(t,r,n):void 0},t.ch32=i,t.maj32=a,t.p32=o,t.s0_256=function(e){return n(e,2)^n(e,13)^n(e,22)},t.s1_256=function(e){return n(e,6)^n(e,11)^n(e,25)},t.g0_256=function(e){return n(e,7)^n(e,18)^e>>>3},t.g1_256=function(e){return n(e,17)^n(e,19)^e>>>10}},70461:(e,t,r)=>{"use strict";var n=r(7784),i=r(35615);function a(e,t){return 55296==(64512&e.charCodeAt(t))&&!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1))}function o(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function s(e){return 1===e.length?"0"+e:e}function c(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}t.inherits=i,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),i=0;i>6|192,r[n++]=63&o|128):a(e,i)?(o=65536+((1023&o)<<10)+(1023&e.charCodeAt(++i)),r[n++]=o>>18|240,r[n++]=o>>12&63|128,r[n++]=o>>6&63|128,r[n++]=63&o|128):(r[n++]=o>>12|224,r[n++]=o>>6&63|128,r[n++]=63&o|128)}else for(i=0;i>>0}return o},t.split32=function(e,t){for(var r=new Array(4*e.length),n=0,i=0;n>>24,r[i+1]=a>>>16&255,r[i+2]=a>>>8&255,r[i+3]=255&a):(r[i+3]=a>>>24,r[i+2]=a>>>16&255,r[i+1]=a>>>8&255,r[i]=255&a)}return r},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,r){return e+t+r>>>0},t.sum32_4=function(e,t,r,n){return e+t+r+n>>>0},t.sum32_5=function(e,t,r,n,i){return e+t+r+n+i>>>0},t.sum64=function(e,t,r,n){var i=e[t],a=n+e[t+1]>>>0,o=(a>>0,e[t+1]=a},t.sum64_hi=function(e,t,r,n){return(t+n>>>0>>0},t.sum64_lo=function(e,t,r,n){return t+n>>>0},t.sum64_4_hi=function(e,t,r,n,i,a,o,s){var c=0,u=t;return c+=(u=u+n>>>0)>>0)>>0)>>0},t.sum64_4_lo=function(e,t,r,n,i,a,o,s){return t+n+a+s>>>0},t.sum64_5_hi=function(e,t,r,n,i,a,o,s,c,u){var l=0,d=t;return l+=(d=d+n>>>0)>>0)>>0)>>0)>>0},t.sum64_5_lo=function(e,t,r,n,i,a,o,s,c,u){return t+n+a+s+u>>>0},t.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},t.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},t.shr64_hi=function(e,t,r){return e>>>r},t.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0}},14291:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var o=a(r(36439)),s=r(3379),c=new Set(["input","option","optgroup","select","button","datalist","textarea"]),u=new Set(["p"]),l=new Set(["thead","tbody"]),d=new Set(["dd","dt"]),p=new Set(["rt","rp"]),h=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",u],["h1",u],["h2",u],["h3",u],["h4",u],["h5",u],["h6",u],["select",c],["input",c],["output",c],["button",c],["datalist",c],["textarea",c],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",d],["dt",d],["address",u],["article",u],["aside",u],["blockquote",u],["details",u],["div",u],["dl",u],["fieldset",u],["figcaption",u],["figure",u],["footer",u],["form",u],["header",u],["hr",u],["main",u],["nav",u],["ol",u],["pre",u],["section",u],["table",u],["ul",u],["rt",p],["rp",p],["tbody",l],["tfoot",l]]),f=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),y=new Set(["math","svg"]),g=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]),m=/\s|\//,b=function(){function e(e,t){var r,n,i,a,s;void 0===t&&(t={}),this.options=t,this.startIndex=0,this.endIndex=0,this.openTagStart=0,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.foreignContext=[],this.buffers=[],this.bufferOffset=0,this.writeIndex=0,this.ended=!1,this.cbs=null!=e?e:{},this.lowerCaseTagNames=null!==(r=t.lowerCaseTags)&&void 0!==r?r:!t.xmlMode,this.lowerCaseAttributeNames=null!==(n=t.lowerCaseAttributeNames)&&void 0!==n?n:!t.xmlMode,this.tokenizer=new(null!==(i=t.Tokenizer)&&void 0!==i?i:o.default)(this.options,this),null===(s=(a=this.cbs).onparserinit)||void 0===s||s.call(a,this)}return e.prototype.ontext=function(e,t){var r,n,i=this.getSlice(e,t);this.endIndex=t-1,null===(n=(r=this.cbs).ontext)||void 0===n||n.call(r,i),this.startIndex=t},e.prototype.ontextentity=function(e){var t,r,n=this.tokenizer.getSectionStart();this.endIndex=n-1,null===(r=(t=this.cbs).ontext)||void 0===r||r.call(t,(0,s.fromCodePoint)(e)),this.startIndex=n},e.prototype.isVoidElement=function(e){return!this.options.xmlMode&&f.has(e)},e.prototype.onopentagname=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);this.lowerCaseTagNames&&(r=r.toLowerCase()),this.emitOpenTag(r)},e.prototype.emitOpenTag=function(e){var t,r,n,i;this.openTagStart=this.startIndex,this.tagname=e;var a=!this.options.xmlMode&&h.get(e);if(a)for(;this.stack.length>0&&a.has(this.stack[this.stack.length-1]);){var o=this.stack.pop();null===(r=(t=this.cbs).onclosetag)||void 0===r||r.call(t,o,!0)}this.isVoidElement(e)||(this.stack.push(e),y.has(e)?this.foreignContext.push(!0):g.has(e)&&this.foreignContext.push(!1)),null===(i=(n=this.cbs).onopentagname)||void 0===i||i.call(n,e),this.cbs.onopentag&&(this.attribs={})},e.prototype.endOpenTag=function(e){var t,r;this.startIndex=this.openTagStart,this.attribs&&(null===(r=(t=this.cbs).onopentag)||void 0===r||r.call(t,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""},e.prototype.onopentagend=function(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1},e.prototype.onclosetag=function(e,t){var r,n,i,a,o,s;this.endIndex=t;var c=this.getSlice(e,t);if(this.lowerCaseTagNames&&(c=c.toLowerCase()),(y.has(c)||g.has(c))&&this.foreignContext.pop(),this.isVoidElement(c))this.options.xmlMode||"br"!==c||(null===(n=(r=this.cbs).onopentagname)||void 0===n||n.call(r,"br"),null===(a=(i=this.cbs).onopentag)||void 0===a||a.call(i,"br",{},!0),null===(s=(o=this.cbs).onclosetag)||void 0===s||s.call(o,"br",!1));else{var u=this.stack.lastIndexOf(c);if(-1!==u)if(this.cbs.onclosetag)for(var l=this.stack.length-u;l--;)this.cbs.onclosetag(this.stack.pop(),0!==l);else this.stack.length=u;else this.options.xmlMode||"p"!==c||(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=t+1},e.prototype.onselfclosingtag=function(e){this.endIndex=e,this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)},e.prototype.closeCurrentTag=function(e){var t,r,n=this.tagname;this.endOpenTag(e),this.stack[this.stack.length-1]===n&&(null===(r=(t=this.cbs).onclosetag)||void 0===r||r.call(t,n,!e),this.stack.pop())},e.prototype.onattribname=function(e,t){this.startIndex=e;var r=this.getSlice(e,t);this.attribname=this.lowerCaseAttributeNames?r.toLowerCase():r},e.prototype.onattribdata=function(e,t){this.attribvalue+=this.getSlice(e,t)},e.prototype.onattribentity=function(e){this.attribvalue+=(0,s.fromCodePoint)(e)},e.prototype.onattribend=function(e,t){var r,n;this.endIndex=t,null===(n=(r=this.cbs).onattribute)||void 0===n||n.call(r,this.attribname,this.attribvalue,e===o.QuoteType.Double?'"':e===o.QuoteType.Single?"'":e===o.QuoteType.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""},e.prototype.getInstructionName=function(e){var t=e.search(m),r=t<0?e:e.substr(0,t);return this.lowerCaseTagNames&&(r=r.toLowerCase()),r},e.prototype.ondeclaration=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){var n=this.getInstructionName(r);this.cbs.onprocessinginstruction("!".concat(n),"!".concat(r))}this.startIndex=t+1},e.prototype.onprocessinginstruction=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){var n=this.getInstructionName(r);this.cbs.onprocessinginstruction("?".concat(n),"?".concat(r))}this.startIndex=t+1},e.prototype.oncomment=function(e,t,r){var n,i,a,o;this.endIndex=t,null===(i=(n=this.cbs).oncomment)||void 0===i||i.call(n,this.getSlice(e,t-r)),null===(o=(a=this.cbs).oncommentend)||void 0===o||o.call(a),this.startIndex=t+1},e.prototype.oncdata=function(e,t,r){var n,i,a,o,s,c,u,l,d,p;this.endIndex=t;var h=this.getSlice(e,t-r);this.options.xmlMode||this.options.recognizeCDATA?(null===(i=(n=this.cbs).oncdatastart)||void 0===i||i.call(n),null===(o=(a=this.cbs).ontext)||void 0===o||o.call(a,h),null===(c=(s=this.cbs).oncdataend)||void 0===c||c.call(s)):(null===(l=(u=this.cbs).oncomment)||void 0===l||l.call(u,"[CDATA[".concat(h,"]]")),null===(p=(d=this.cbs).oncommentend)||void 0===p||p.call(d)),this.startIndex=t+1},e.prototype.onend=function(){var e,t;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(var r=this.stack.length;r>0;this.cbs.onclosetag(this.stack[--r],!0));}null===(t=(e=this.cbs).onend)||void 0===t||t.call(e)},e.prototype.reset=function(){var e,t,r,n;null===(t=(e=this.cbs).onreset)||void 0===t||t.call(e),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,null===(n=(r=this.cbs).onparserinit)||void 0===n||n.call(r,this),this.buffers.length=0,this.bufferOffset=0,this.writeIndex=0,this.ended=!1},e.prototype.parseComplete=function(e){this.reset(),this.end(e)},e.prototype.getSlice=function(e,t){for(;e-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();for(var r=this.buffers[0].slice(e-this.bufferOffset,t-this.bufferOffset);t-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),r+=this.buffers[0].slice(0,t-this.bufferOffset);return r},e.prototype.shiftBuffer=function(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()},e.prototype.write=function(e){var t,r;this.ended?null===(r=(t=this.cbs).onerror)||void 0===r||r.call(t,new Error(".write() after done!")):(this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++))},e.prototype.end=function(e){var t,r;this.ended?null===(r=(t=this.cbs).onerror)||void 0===r||r.call(t,new Error(".end() after done!")):(e&&this.write(e),this.ended=!0,this.tokenizer.end())},e.prototype.pause=function(){this.tokenizer.pause()},e.prototype.resume=function(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuoteType=void 0;var n,i,a,o=r(3379);function s(e){return e===n.Space||e===n.NewLine||e===n.Tab||e===n.FormFeed||e===n.CarriageReturn}function c(e){return e===n.Slash||e===n.Gt||s(e)}function u(e){return e>=n.Zero&&e<=n.Nine}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Number=35]="Number",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(n||(n={})),function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.SpecialStartSequence=23]="SpecialStartSequence",e[e.InSpecialTag=24]="InSpecialTag",e[e.BeforeEntity=25]="BeforeEntity",e[e.BeforeNumericEntity=26]="BeforeNumericEntity",e[e.InNamedEntity=27]="InNamedEntity",e[e.InNumericEntity=28]="InNumericEntity",e[e.InHexEntity=29]="InHexEntity"}(i||(i={})),function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(a=t.QuoteType||(t.QuoteType={}));var l={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])},d=function(){function e(e,t){var r=e.xmlMode,n=void 0!==r&&r,a=e.decodeEntities,s=void 0===a||a;this.cbs=t,this.state=i.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=i.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=n,this.decodeEntities=s,this.entityTrie=n?o.xmlDecodeTree:o.htmlDecodeTree}return e.prototype.reset=function(){this.state=i.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=i.Text,this.currentSequence=void 0,this.running=!0,this.offset=0},e.prototype.write=function(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()},e.prototype.end=function(){this.running&&this.finish()},e.prototype.pause=function(){this.running=!1},e.prototype.resume=function(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=i.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===n.Amp&&(this.state=i.BeforeEntity)},e.prototype.stateSpecialStartSequence=function(e){var t=this.sequenceIndex===this.currentSequence.length;if(t?c(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.isSpecial=!1;this.sequenceIndex=0,this.state=i.InTagName,this.stateInTagName(e)},e.prototype.stateInSpecialTag=function(e){if(this.sequenceIndex===this.currentSequence.length){if(e===n.Gt||s(e)){var t=this.index-this.currentSequence.length;if(this.sectionStart=n.LowerA&&e<=n.LowerZ||e>=n.UpperA&&e<=n.UpperZ}(e)},e.prototype.startSpecial=function(e,t){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=t,this.state=i.SpecialStartSequence},e.prototype.stateBeforeTagName=function(e){if(e===n.ExclamationMark)this.state=i.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===n.Questionmark)this.state=i.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){var t=32|e;this.sectionStart=this.index,this.xmlMode||t!==l.TitleEnd[2]?this.state=this.xmlMode||t!==l.ScriptEnd[2]?i.InTagName:i.BeforeSpecialS:this.startSpecial(l.TitleEnd,3)}else e===n.Slash?this.state=i.BeforeClosingTagName:(this.state=i.Text,this.stateText(e))},e.prototype.stateInTagName=function(e){c(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e))},e.prototype.stateBeforeClosingTagName=function(e){s(e)||(e===n.Gt?this.state=i.Text:(this.state=this.isTagStartChar(e)?i.InClosingTagName:i.InSpecialComment,this.sectionStart=this.index))},e.prototype.stateInClosingTagName=function(e){(e===n.Gt||s(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.AfterClosingTagName,this.stateAfterClosingTagName(e))},e.prototype.stateAfterClosingTagName=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.state=i.Text,this.baseState=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeAttributeName=function(e){e===n.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=i.InSpecialTag,this.sequenceIndex=0):this.state=i.Text,this.baseState=this.state,this.sectionStart=this.index+1):e===n.Slash?this.state=i.InSelfClosingTag:s(e)||(this.state=i.InAttributeName,this.sectionStart=this.index)},e.prototype.stateInSelfClosingTag=function(e){e===n.Gt?(this.cbs.onselfclosingtag(this.index),this.state=i.Text,this.baseState=i.Text,this.sectionStart=this.index+1,this.isSpecial=!1):s(e)||(this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e))},e.prototype.stateInAttributeName=function(e){(e===n.Eq||c(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.AfterAttributeName,this.stateAfterAttributeName(e))},e.prototype.stateAfterAttributeName=function(e){e===n.Eq?this.state=i.BeforeAttributeValue:e===n.Slash||e===n.Gt?(this.cbs.onattribend(a.NoValue,this.index),this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e)):s(e)||(this.cbs.onattribend(a.NoValue,this.index),this.state=i.InAttributeName,this.sectionStart=this.index)},e.prototype.stateBeforeAttributeValue=function(e){e===n.DoubleQuote?(this.state=i.InAttributeValueDq,this.sectionStart=this.index+1):e===n.SingleQuote?(this.state=i.InAttributeValueSq,this.sectionStart=this.index+1):s(e)||(this.sectionStart=this.index,this.state=i.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))},e.prototype.handleInAttributeValue=function(e,t){e===t||!this.decodeEntities&&this.fastForwardTo(t)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(t===n.DoubleQuote?a.Double:a.Single,this.index),this.state=i.BeforeAttributeName):this.decodeEntities&&e===n.Amp&&(this.baseState=this.state,this.state=i.BeforeEntity)},e.prototype.stateInAttributeValueDoubleQuotes=function(e){this.handleInAttributeValue(e,n.DoubleQuote)},e.prototype.stateInAttributeValueSingleQuotes=function(e){this.handleInAttributeValue(e,n.SingleQuote)},e.prototype.stateInAttributeValueNoQuotes=function(e){s(e)||e===n.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(a.Unquoted,this.index),this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===n.Amp&&(this.baseState=this.state,this.state=i.BeforeEntity)},e.prototype.stateBeforeDeclaration=function(e){e===n.OpeningSquareBracket?(this.state=i.CDATASequence,this.sequenceIndex=0):this.state=e===n.Dash?i.BeforeComment:i.InDeclaration},e.prototype.stateInDeclaration=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateInProcessingInstruction=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeComment=function(e){e===n.Dash?(this.state=i.InCommentLike,this.currentSequence=l.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=i.InDeclaration},e.prototype.stateInSpecialComment=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeSpecialS=function(e){var t=32|e;t===l.ScriptEnd[3]?this.startSpecial(l.ScriptEnd,4):t===l.StyleEnd[3]?this.startSpecial(l.StyleEnd,4):(this.state=i.InTagName,this.stateInTagName(e))},e.prototype.stateBeforeEntity=function(e){this.entityExcess=1,this.entityResult=0,e===n.Number?this.state=i.BeforeNumericEntity:e===n.Amp||(this.trieIndex=0,this.trieCurrent=this.entityTrie[0],this.state=i.InNamedEntity,this.stateInNamedEntity(e))},e.prototype.stateInNamedEntity=function(e){if(this.entityExcess+=1,this.trieIndex=(0,o.determineBranch)(this.entityTrie,this.trieCurrent,this.trieIndex+1,e),this.trieIndex<0)return this.emitNamedEntity(),void this.index--;this.trieCurrent=this.entityTrie[this.trieIndex];var t=this.trieCurrent&o.BinTrieFlags.VALUE_LENGTH;if(t){var r=(t>>14)-1;if(this.allowLegacyEntity()||e===n.Semi){var i=this.index-this.entityExcess+1;i>this.sectionStart&&this.emitPartial(this.sectionStart,i),this.entityResult=this.trieIndex,this.trieIndex+=r,this.entityExcess=0,this.sectionStart=this.index+1,0===r&&this.emitNamedEntity()}else this.trieIndex+=r}},e.prototype.emitNamedEntity=function(){if(this.state=this.baseState,0!==this.entityResult)switch((this.entityTrie[this.entityResult]&o.BinTrieFlags.VALUE_LENGTH)>>14){case 1:this.emitCodePoint(this.entityTrie[this.entityResult]&~o.BinTrieFlags.VALUE_LENGTH);break;case 2:this.emitCodePoint(this.entityTrie[this.entityResult+1]);break;case 3:this.emitCodePoint(this.entityTrie[this.entityResult+1]),this.emitCodePoint(this.entityTrie[this.entityResult+2])}},e.prototype.stateBeforeNumericEntity=function(e){(32|e)===n.LowerX?(this.entityExcess++,this.state=i.InHexEntity):(this.state=i.InNumericEntity,this.stateInNumericEntity(e))},e.prototype.emitNumericEntity=function(e){var t=this.index-this.entityExcess-1;t+2+Number(this.state===i.InHexEntity)!==this.index&&(t>this.sectionStart&&this.emitPartial(this.sectionStart,t),this.sectionStart=this.index+Number(e),this.emitCodePoint((0,o.replaceCodePoint)(this.entityResult))),this.state=this.baseState},e.prototype.stateInNumericEntity=function(e){e===n.Semi?this.emitNumericEntity(!0):u(e)?(this.entityResult=10*this.entityResult+(e-n.Zero),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)},e.prototype.stateInHexEntity=function(e){e===n.Semi?this.emitNumericEntity(!0):u(e)?(this.entityResult=16*this.entityResult+(e-n.Zero),this.entityExcess++):function(e){return e>=n.UpperA&&e<=n.UpperF||e>=n.LowerA&&e<=n.LowerF}(e)?(this.entityResult=16*this.entityResult+((32|e)-n.LowerA+10),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)},e.prototype.allowLegacyEntity=function(){return!this.xmlMode&&(this.baseState===i.Text||this.baseState===i.InSpecialTag)},e.prototype.cleanup=function(){this.running&&this.sectionStart!==this.index&&(this.state===i.Text||this.state===i.InSpecialTag&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):this.state!==i.InAttributeValueDq&&this.state!==i.InAttributeValueSq&&this.state!==i.InAttributeValueNq||(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))},e.prototype.shouldContinue=function(){return this.index{"use strict";var t=/^utf-?8|ascii|utf-?16-?le|ucs-?2|base-?64|latin-?1$/i,r=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,n=/\s|\uFEFF|\xA0/,i=/\r?\n[\x20\x09]+/g,a=/[;,"]/,o=/[;,"]|\s/,s=/^[!#$%&'*+\-\.^_`|~\da-zA-Z]+$/;function c(e){return e.replace(r,"")}function u(e){return n.test(e)}function l(e,t){for(;u(e[t]);)t++;return t}function d(e){return o.test(e)||!s.test(e)}class p{constructor(e){this.refs=[],e&&this.parse(e)}rel(e){for(var t=[],r=e.toLowerCase(),n=0;n{return r=t,n=e,Object.keys(r).length===Object.keys(n).length&&Object.keys(r).every((e=>e in n&&r[e]===n[e]));var r,n}))||this.refs.push(e),this}has(e,t){e=e.toLowerCase(),t=t.toLowerCase();for(var r=0;r",t)))throw new Error("Expected end of URI delimiter at offset "+t);o={uri:e.slice(t+1,h)},t=h,r=2,t++}else if(2===r){if(u(e[t])){t++;continue}if(";"===e[t])r=4,t++;else{if(","!==e[t])throw new Error('Unexpected character "'+e[t]+'" at offset '+t);r=1,t++}}else{if(4!==r)throw new Error('Unknown parser state "'+r+'"');if(";"===e[t]||u(e[t])){t++;continue}-1===(h=e.indexOf("=",t))&&(h=e.indexOf(";",t)),-1===h&&(h=e.length);var s=c(e.slice(t,h)).toLowerCase(),d="";if('"'===e[t=l(e,t=h+1)])for(t++;t"),e.push(t);return e.join(", ")}}p.isCompatibleEncoding=function(e){return t.test(e)},p.parse=function(e,t){return(new p).parse(e,t)},p.isSingleOccurenceAttr=function(e){return"rel"===e||"type"===e||"media"===e||"title"===e||"title*"===e},p.isTokenAttr=function(e){return"rel"===e||"type"===e||"anchor"===e},p.escapeQuotes=function(e){return e.replace(/"/g,'\\"')},p.expandRelations=function(e){return e.rel.split(" ").map((function(t){var r=Object.assign({},e);return r.rel=t,r}))},p.parseExtendedValue=function(e){var t=/([^']+)?(?:'([^']*)')?(.+)/.exec(e);return{language:t[2].toLowerCase(),encoding:p.isCompatibleEncoding(t[1])?null:t[1].toLowerCase(),value:p.isCompatibleEncoding(t[1])?decodeURIComponent(t[3]):t[3]}},p.formatExtendedAttribute=function(e,t){var r=(t.encoding||"utf-8").toUpperCase();return e+"="+r+"'"+(t.language||"en")+"'"+(Buffer.isBuffer(t.value)&&p.isCompatibleEncoding(r)?t.value.toString(r):Buffer.isBuffer(t.value)?t.value.toString("hex").replace(/[0-9a-f]{2}/gi,"%$1"):encodeURIComponent(t.value))},p.formatAttribute=function(e,t){return Array.isArray(t)?t.map((t=>p.formatAttribute(e,t))).join("; "):"*"===e[e.length-1]||"string"!=typeof t?p.formatExtendedAttribute(e,t):(p.isTokenAttr(e)?t=d(t)?'"'+p.escapeQuotes(t)+'"':p.escapeQuotes(t):d(t)&&(t='"'+(t=(t=encodeURIComponent(t)).replace(/%20/g," ").replace(/%2C/g,",").replace(/%3B/g,";"))+'"'),e+"="+t)},e.exports=p},39318:(e,t)=>{t.read=function(e,t,r,n,i){var a,o,s=8*i-n-1,c=(1<>1,l=-7,d=r?i-1:0,p=r?-1:1,h=e[t+d];for(d+=p,a=h&(1<<-l)-1,h>>=-l,l+=s;l>0;a=256*a+e[t+d],d+=p,l-=8);for(o=a&(1<<-l)-1,a>>=-l,l+=n;l>0;o=256*o+e[t+d],d+=p,l-=8);if(0===a)a=1-u;else{if(a===c)return o?NaN:1/0*(h?-1:1);o+=Math.pow(2,n),a-=u}return(h?-1:1)*o*Math.pow(2,a-n)},t.write=function(e,t,r,n,i,a){var o,s,c,u=8*a-i-1,l=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:a-1,f=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-o))<1&&(o--,c*=2),(t+=o+d>=1?p/c:p*Math.pow(2,1-d))*c>=2&&(o++,c/=2),o+d>=l?(s=0,o=l):o+d>=1?(s=(t*c-1)*Math.pow(2,i),o+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,i),o=0));i>=8;e[r+h]=255&s,h+=f,s/=256,i-=8);for(o=o<0;e[r+h]=255&o,h+=f,o/=256,u-=8);e[r+h-f]|=128*y}},6081:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Collection:()=>E,Iterable:()=>Rn,List:()=>cr,Map:()=>Ft,OrderedMap:()=>Tr,OrderedSet:()=>ln,PairSorting:()=>yn,Range:()=>Gr,Record:()=>gn,Repeat:()=>Sn,Seq:()=>W,Set:()=>Br,Stack:()=>Rr,default:()=>In,fromJS:()=>On,get:()=>ct,getIn:()=>zr,has:()=>st,hasIn:()=>Xr,hash:()=>me,is:()=>he,isAssociative:()=>O,isCollection:()=>v,isImmutable:()=>j,isIndexed:()=>S,isKeyed:()=>w,isList:()=>sr,isMap:()=>le,isOrdered:()=>M,isOrderedMap:()=>de,isOrderedSet:()=>Mr,isPlainObject:()=>it,isRecord:()=>D,isSeq:()=>P,isSet:()=>Cr,isStack:()=>Ar,isValueObject:()=>pe,merge:()=>Ot,mergeDeep:()=>xt,mergeDeepWith:()=>At,mergeWith:()=>Et,remove:()=>lt,removeIn:()=>gt,set:()=>dt,setIn:()=>ft,update:()=>bt,updateIn:()=>pt,version:()=>An});var n="delete",i=5,a=1<>>0;if(""+r!==t||4294967295===r)return NaN;t=r}return t<0?l(e)+t:t}function p(){return!0}function h(e,t,r){return(0===e&&!m(e)||void 0!==r&&e<=-r)&&(void 0===t||void 0!==r&&t>=r)}function f(e,t){return g(e,t,0)}function y(e,t){return g(e,t,t)}function g(e,t,r){return void 0===e?r:m(e)?t===1/0?t:0|Math.max(0,t+e):void 0===t||t===e?e:0|Math.min(t,e)}function m(e){return e<0||0===e&&1/e==-1/0}var b="@@__IMMUTABLE_ITERABLE__@@";function v(e){return Boolean(e&&e[b])}var _="@@__IMMUTABLE_KEYED__@@";function w(e){return Boolean(e&&e[_])}var T="@@__IMMUTABLE_INDEXED__@@";function S(e){return Boolean(e&&e[T])}function O(e){return w(e)||S(e)}var E=function(e){return v(e)?e:W(e)},x=function(e){function t(e){return w(e)?e:Y(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(E),A=function(e){function t(e){return S(e)?e:Z(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(E),R=function(e){function t(e){return v(e)&&!O(e)?e:ee(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(E);E.Keyed=x,E.Indexed=A,E.Set=R;var I="@@__IMMUTABLE_SEQ__@@";function P(e){return Boolean(e&&e[I])}var N="@@__IMMUTABLE_RECORD__@@";function D(e){return Boolean(e&&e[N])}function j(e){return v(e)||D(e)}var C="@@__IMMUTABLE_ORDERED__@@";function M(e){return Boolean(e&&e[C])}var L=0,k=1,F=2,B="function"==typeof Symbol&&Symbol.iterator,U="@@iterator",q=B||U,V=function(e){this.next=e};function Q(e,t,r,n){var i=0===e?t:1===e?r:[t,r];return n?n.value=i:n={value:i,done:!1},n}function $(){return{value:void 0,done:!0}}function H(e){return!!Array.isArray(e)||!!K(e)}function G(e){return e&&"function"==typeof e.next}function z(e){var t=K(e);return t&&t.call(e)}function K(e){var t=e&&(B&&e[B]||e[U]);if("function"==typeof t)return t}V.prototype.toString=function(){return"[Iterator]"},V.KEYS=L,V.VALUES=k,V.ENTRIES=F,V.prototype.inspect=V.prototype.toSource=function(){return this.toString()},V.prototype[q]=function(){return this};var X=Object.prototype.hasOwnProperty;function J(e){return!(!Array.isArray(e)&&"string"!=typeof e)||e&&"object"==typeof e&&Number.isInteger(e.length)&&e.length>=0&&(0===e.length?1===Object.keys(e).length:e.hasOwnProperty(e.length-1))}var W=function(e){function t(e){return null==e?ae():j(e)?e.toSeq():function(e){var t,r,n=ce(e);if(n)return(r=K(t=e))&&r===t.entries?n.fromEntrySeq():function(e){var t=K(e);return t&&t===e.keys}(e)?n.toSetSeq():n;if("object"==typeof e)return new re(e);throw new TypeError("Expected Array or collection object of values, or keyed object: "+e)}(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq {","}")},t.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},t.prototype.__iterate=function(e,t){var r=this._cache;if(r){for(var n=r.length,i=0;i!==n;){var a=r[t?n-++i:i++];if(!1===e(a[1],a[0],this))break}return i}return this.__iterateUncached(e,t)},t.prototype.__iterator=function(e,t){var r=this._cache;if(r){var n=r.length,i=0;return new V((function(){if(i===n)return{value:void 0,done:!0};var a=r[t?n-++i:i++];return Q(e,a[0],a[1])}))}return this.__iteratorUncached(e,t)},t}(E),Y=function(e){function t(e){return null==e?ae().toKeyedSeq():v(e)?w(e)?e.toSeq():e.fromEntrySeq():D(e)?e.toSeq():oe(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toKeyedSeq=function(){return this},t}(W),Z=function(e){function t(e){return null==e?ae():v(e)?w(e)?e.entrySeq():e.toIndexedSeq():D(e)?e.toSeq().entrySeq():se(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toIndexedSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq [","]")},t}(W),ee=function(e){function t(e){return(v(e)&&!O(e)?e:Z(e)).toSetSeq()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toSetSeq=function(){return this},t}(W);W.isSeq=P,W.Keyed=Y,W.Set=ee,W.Indexed=Z,W.prototype[I]=!0;var te=function(e){function t(e){this._array=e,this.size=e.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(e,t){return this.has(e)?this._array[d(this,e)]:t},t.prototype.__iterate=function(e,t){for(var r=this._array,n=r.length,i=0;i!==n;){var a=t?n-++i:i++;if(!1===e(r[a],a,this))break}return i},t.prototype.__iterator=function(e,t){var r=this._array,n=r.length,i=0;return new V((function(){if(i===n)return{value:void 0,done:!0};var a=t?n-++i:i++;return Q(e,a,r[a])}))},t}(Z),re=function(e){function t(e){var t=Object.keys(e).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e):[]);this._object=e,this._keys=t,this.size=t.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(e,t){return void 0===t||this.has(e)?this._object[e]:t},t.prototype.has=function(e){return X.call(this._object,e)},t.prototype.__iterate=function(e,t){for(var r=this._object,n=this._keys,i=n.length,a=0;a!==i;){var o=n[t?i-++a:a++];if(!1===e(r[o],o,this))break}return a},t.prototype.__iterator=function(e,t){var r=this._object,n=this._keys,i=n.length,a=0;return new V((function(){if(a===i)return{value:void 0,done:!0};var o=n[t?i-++a:a++];return Q(e,o,r[o])}))},t}(Y);re.prototype[C]=!0;var ne,ie=function(e){function t(e){this._collection=e,this.size=e.length||e.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);var r=z(this._collection),n=0;if(G(r))for(var i;!(i=r.next()).done&&!1!==e(i.value,n++,this););return n},t.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var r=z(this._collection);if(!G(r))return new V($);var n=0;return new V((function(){var t=r.next();return t.done?t:Q(e,n++,t.value)}))},t}(Z);function ae(){return ne||(ne=new te([]))}function oe(e){var t=ce(e);if(t)return t.fromEntrySeq();if("object"==typeof e)return new re(e);throw new TypeError("Expected Array or collection object of [k, v] entries, or keyed object: "+e)}function se(e){var t=ce(e);if(t)return t;throw new TypeError("Expected Array or collection object of values: "+e)}function ce(e){return J(e)?new te(e):H(e)?new ie(e):void 0}var ue="@@__IMMUTABLE_MAP__@@";function le(e){return Boolean(e&&e[ue])}function de(e){return le(e)&&M(e)}function pe(e){return Boolean(e&&"function"==typeof e.equals&&"function"==typeof e.hashCode)}function he(e,t){if(e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1;if("function"==typeof e.valueOf&&"function"==typeof t.valueOf){if((e=e.valueOf())===(t=t.valueOf())||e!=e&&t!=t)return!0;if(!e||!t)return!1}return!!(pe(e)&&pe(t)&&e.equals(t))}var fe="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(e,t){var r=65535&(e|=0),n=65535&(t|=0);return r*n+((e>>>16)*n+r*(t>>>16)<<16>>>0)|0};function ye(e){return e>>>1&1073741824|3221225471&e}var ge=Object.prototype.valueOf;function me(e){if(null==e)return be(e);if("function"==typeof e.hashCode)return ye(e.hashCode(e));var t,r,n,i=(t=e).valueOf!==ge&&"function"==typeof t.valueOf?t.valueOf(t):t;if(null==i)return be(i);switch(typeof i){case"boolean":return i?1108378657:1108378656;case"number":return function(e){if(e!=e||e===1/0)return 0;var t=0|e;for(t!==e&&(t^=4294967295*e);e>4294967295;)t^=e/=4294967295;return ye(t)}(i);case"string":return i.length>Re?(void 0===(n=Ne[r=i])&&(n=ve(r),Pe===Ie&&(Pe=0,Ne={}),Pe++,Ne[r]=n),n):ve(i);case"object":case"function":return function(e){var t;if(Oe&&void 0!==(t=Se.get(e)))return t;if(void 0!==(t=e[Ae]))return t;if(!we){if(void 0!==(t=e.propertyIsEnumerable&&e.propertyIsEnumerable[Ae]))return t;if(void 0!==(t=function(e){if(e&&e.nodeType>0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}(e)))return t}if(t=Te(),Oe)Se.set(e,t);else{if(void 0!==_e&&!1===_e(e))throw new Error("Non-extensible objects are not allowed as keys.");if(we)Object.defineProperty(e,Ae,{enumerable:!1,configurable:!1,writable:!1,value:t});else if(void 0!==e.propertyIsEnumerable&&e.propertyIsEnumerable===e.constructor.prototype.propertyIsEnumerable)e.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},e.propertyIsEnumerable[Ae]=t;else{if(void 0===e.nodeType)throw new Error("Unable to set a non-enumerable property on object.");e[Ae]=t}}return t}(i);case"symbol":return function(e){var t=Ee[e];return void 0!==t||(t=Te(),Ee[e]=t),t}(i);default:if("function"==typeof i.toString)return ve(i.toString());throw new Error("Value type "+typeof i+" cannot be hashed.")}}function be(e){return null===e?1108378658:1108378659}function ve(e){for(var t=0,r=0;r=0&&(u.get=function(t,r){return(t=d(this,t))>=0&&ts)return{value:void 0,done:!0};var e=i.next();return n||t===k||e.done?e:Q(t,c-1,t===L?void 0:e.value[1],e)}))},u}function qe(e,t,r,n){var i=Je(e);return i.__iterateUncached=function(i,a){var o=this;if(a)return this.cacheResult().__iterate(i,a);var s=!0,c=0;return e.__iterate((function(e,a,u){if(!s||!(s=t.call(r,e,a,u)))return c++,i(e,n?a:c-1,o)})),c},i.__iteratorUncached=function(i,a){var o=this;if(a)return this.cacheResult().__iterator(i,a);var s=e.__iterator(F,a),c=!0,u=0;return new V((function(){var e,a,l;do{if((e=s.next()).done)return n||i===k?e:Q(i,u++,i===L?void 0:e.value[1],e);var d=e.value;a=d[0],l=d[1],c&&(c=t.call(r,l,a,o))}while(c);return i===F?e:Q(i,a,l,e)}))},i}function Ve(e,t,r){var n=Je(e);return n.__iterateUncached=function(i,a){if(a)return this.cacheResult().__iterate(i,a);var o=0,s=!1;return function e(c,u){c.__iterate((function(a,c){return(!t||u0}function Ge(e,t,r,n){var i=Je(e),a=new te(r).map((function(e){return e.size}));return i.size=n?a.max():a.min(),i.__iterate=function(e,t){for(var r,n=this.__iterator(k,t),i=0;!(r=n.next()).done&&!1!==e(r.value,i++,this););return i},i.__iteratorUncached=function(e,i){var a=r.map((function(e){return e=E(e),z(i?e.reverse():e)})),o=0,s=!1;return new V((function(){var r;return s||(r=a.map((function(e){return e.next()})),s=n?r.every((function(e){return e.done})):r.some((function(e){return e.done}))),s?{value:void 0,done:!0}:Q(e,o++,t.apply(null,r.map((function(e){return e.value}))))}))},i}function ze(e,t){return e===t?e:P(e)?t:e.constructor(t)}function Ke(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function Xe(e){return w(e)?x:S(e)?A:R}function Je(e){return Object.create((w(e)?Y:S(e)?Z:ee).prototype)}function We(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):W.prototype.cacheResult.call(this)}function Ye(e,t){return void 0===e&&void 0===t?0:void 0===e?1:void 0===t?-1:e>t?1:e0;)t[r]=arguments[r+1];if("function"!=typeof e)throw new TypeError("Invalid merger function: "+e);return St(this,t,e)}function St(e,t,r){for(var n=[],i=0;i0;)t[r]=arguments[r+1];return It(e,t)}function Et(e,t){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];return It(t,r,e)}function xt(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return Rt(e,t)}function At(e,t){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];return Rt(t,r,e)}function Rt(e,t,r){return It(e,t,function(e){return function t(r,n,i){return at(r)&&at(n)&&(a=n,o=W(r),s=W(a),S(o)===S(s)&&w(o)===w(s))?It(r,[n],t):e?e(r,n,i):n;var a,o,s}}(r))}function It(e,t,r){if(!at(e))throw new TypeError("Cannot merge into non-data-structure value: "+e);if(j(e))return"function"==typeof r&&e.mergeWith?e.mergeWith.apply(e,[r].concat(t)):e.merge?e.merge.apply(e,t):e.concat.apply(e,t);for(var n=Array.isArray(e),i=e,a=n?A:x,o=n?function(t){i===e&&(i=ut(i)),i.push(t)}:function(t,n){var a=X.call(i,n),o=a&&r?r(i[n],t,n):t;a&&o===i[n]||(i===e&&(i=ut(i)),i[n]=o)},s=0;s0;)t[r]=arguments[r+1];return Rt(this,t,e)}function Dt(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return pt(this,e,Jt(),(function(e){return It(e,t)}))}function jt(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return pt(this,e,Jt(),(function(e){return Rt(e,t)}))}function Ct(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this}function Mt(){return this.__ownerID?this:this.__ensureOwner(new u)}function Lt(){return this.__ensureOwner()}function kt(){return this.__altered}var Ft=function(e){function t(t){return null==t?Jt():le(t)&&!M(t)?t:Jt().withMutations((function(r){var n=e(t);tt(n.size),n.forEach((function(e,t){return r.set(t,e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return Jt().withMutations((function(t){for(var r=0;r=e.length)throw new Error("Missing value for key: "+e[r]);t.set(e[r],e[r+1])}}))},t.prototype.toString=function(){return this.__toString("Map {","}")},t.prototype.get=function(e,t){return this._root?this._root.get(0,void 0,e,t):t},t.prototype.set=function(e,t){return Wt(this,e,t)},t.prototype.remove=function(e){return Wt(this,e,s)},t.prototype.deleteAll=function(e){var t=E(e);return 0===t.size?this:this.withMutations((function(e){t.forEach((function(t){return e.remove(t)}))}))},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Jt()},t.prototype.sort=function(e){return Tr(Qe(this,e))},t.prototype.sortBy=function(e,t){return Tr(Qe(this,t,e))},t.prototype.map=function(e,t){var r=this;return this.withMutations((function(n){n.forEach((function(i,a){n.set(a,e.call(t,i,a,r))}))}))},t.prototype.__iterator=function(e,t){return new Gt(this,e,t)},t.prototype.__iterate=function(e,t){var r=this,n=0;return this._root&&this._root.iterate((function(t){return n++,e(t[1],t[0],r)}),t),n},t.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Xt(this.size,this._root,e,this.__hash):0===this.size?Jt():(this.__ownerID=e,this.__altered=!1,this)},t}(x);Ft.isMap=le;var Bt=Ft.prototype;Bt[ue]=!0,Bt[n]=Bt.remove,Bt.removeAll=Bt.deleteAll,Bt.setIn=yt,Bt.removeIn=Bt.deleteIn=mt,Bt.update=vt,Bt.updateIn=_t,Bt.merge=Bt.concat=wt,Bt.mergeWith=Tt,Bt.mergeDeep=Pt,Bt.mergeDeepWith=Nt,Bt.mergeIn=Dt,Bt.mergeDeepIn=jt,Bt.withMutations=Ct,Bt.wasAltered=kt,Bt.asImmutable=Lt,Bt["@@transducer/init"]=Bt.asMutable=Mt,Bt["@@transducer/step"]=function(e,t){return e.set(t[0],t[1])},Bt["@@transducer/result"]=function(e){return e.asImmutable()};var Ut=function(e,t){this.ownerID=e,this.entries=t};Ut.prototype.get=function(e,t,r,n){for(var i=this.entries,a=0,o=i.length;a=nr)return function(e,t,r,n){e||(e=new u);for(var i=new $t(e,me(r),[r,n]),a=0;a>>e)&o),s=this.bitmap;return s&a?this.nodes[tr(s&a-1)].get(e+i,t,r,n):n},qt.prototype.update=function(e,t,r,n,c,u,l){void 0===r&&(r=me(n));var d=(0===t?r:r>>>t)&o,p=1<=ir)return function(e,t,r,n,i){for(var o=0,s=new Array(a),c=0;0!==r;c++,r>>>=1)s[c]=1&r?t[o++]:void 0;return s[n]=i,new Vt(e,o+1,s)}(e,g,h,d,b);if(f&&!b&&2===g.length&&Zt(g[1^y]))return g[1^y];if(f&&b&&1===g.length&&Zt(b))return b;var v=e&&e===this.ownerID,_=f?b?h:h^p:h|p,w=f?b?rr(g,y,b,v):function(e,t,r){var n=e.length-1;if(r&&t===n)return e.pop(),e;for(var i=new Array(n),a=0,o=0;o>>e)&o,s=this.nodes[a];return s?s.get(e+i,t,r,n):n},Vt.prototype.update=function(e,t,r,n,a,c,u){void 0===r&&(r=me(n));var l=(0===t?r:r>>>t)&o,d=a===s,p=this.nodes,h=p[l];if(d&&!h)return this;var f=Yt(h,e,t+i,r,n,a,c,u);if(f===h)return this;var y=this.count;if(h){if(!f&&--y>>r)&o,u=(0===r?n:n>>>r)&o,l=c===u?[er(e,t,r+i,n,a)]:(s=new $t(t,n,a),c>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,127&(e+=e>>8)+(e>>16)}function rr(e,t,r,n){var i=n?e:Ze(e);return i[t]=r,i}var nr=a/4,ir=a/2,ar=a/4,or="@@__IMMUTABLE_LIST__@@";function sr(e){return Boolean(e&&e[or])}var cr=function(e){function t(t){var r=yr();if(null==t)return r;if(sr(t))return t;var n=e(t),o=n.size;return 0===o?r:(tt(o),o>0&&o=0&&e=e.size||t<0)return e.withMutations((function(e){t<0?vr(e,t).set(0,r):vr(e,0,t+1).set(t,r)}));t+=e._origin;var n=e._tail,i=e._root,a={value:!1};return t>=_r(e._capacity)?n=gr(n,e.__ownerID,0,t,r,a):i=gr(i,e.__ownerID,e._level,t,r,a),a.value?e.__ownerID?(e._root=i,e._tail=n,e.__hash=void 0,e.__altered=!0,e):fr(e._origin,e._capacity,e._level,i,n):e}(this,e,t)},t.prototype.remove=function(e){return this.has(e)?0===e?this.shift():e===this.size-1?this.pop():this.splice(e,1):this},t.prototype.insert=function(e,t){return this.splice(e,0,t)},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=i,this._root=this._tail=this.__hash=void 0,this.__altered=!0,this):yr()},t.prototype.push=function(){var e=arguments,t=this.size;return this.withMutations((function(r){vr(r,0,t+e.length);for(var n=0;n>>t&o;if(n>=this.array.length)return new lr([],e);var a,s=0===n;if(t>0){var c=this.array[n];if((a=c&&c.removeBefore(e,t-i,r))===c&&s)return this}if(s&&!a)return this;var u=mr(this,e);if(!s)for(var l=0;l>>t&o;if(a>=this.array.length)return this;if(t>0){var s=this.array[a];if((n=s&&s.removeAfter(e,t-i,r))===s&&a===this.array.length-1)return this}var c=mr(this,e);return c.array.splice(a+1),n&&(c.array[a]=n),c};var dr,pr={};function hr(e,t){var r=e._origin,n=e._capacity,o=_r(n),s=e._tail;return function e(c,u,l){return 0===u?function(e,i){var c=i===o?s&&s.array:e&&e.array,u=i>r?0:r-i,l=n-i;return l>a&&(l=a),function(){if(u===l)return pr;var e=t?--l:u++;return c&&c[e]}}(c,l):function(o,s,c){var u,l=o&&o.array,d=c>r?0:r-c>>s,p=1+(n-c>>s);return p>a&&(p=a),function(){for(;;){if(u){var r=u();if(r!==pr)return r;u=null}if(d===p)return pr;var n=t?--p:d++;u=e(l&&l[n],s-i,c+(n<>>r&o,d=e&&l0){var p=e&&e.array[l],h=gr(p,t,r-i,n,a,s);return h===p?e:((u=mr(e,t)).array[l]=h,u)}return d&&e.array[l]===a?e:(s&&c(s),u=mr(e,t),void 0===a&&l===u.array.length-1?u.array.pop():u.array[l]=a,u)}function mr(e,t){return t&&e&&t===e.ownerID?e:new lr(e?e.array.slice():[],t)}function br(e,t){if(t>=_r(e._capacity))return e._tail;if(t<1<0;)r=r.array[t>>>n&o],n-=i;return r}}function vr(e,t,r){void 0!==t&&(t|=0),void 0!==r&&(r|=0);var n=e.__ownerID||new u,a=e._origin,s=e._capacity,c=a+t,l=void 0===r?s:r<0?s+r:a+r;if(c===a&&l===s)return e;if(c>=l)return e.clear();for(var d=e._level,p=e._root,h=0;c+h<0;)p=new lr(p&&p.array.length?[void 0,p]:[],n),h+=1<<(d+=i);h&&(c+=h,a+=h,l+=h,s+=h);for(var f=_r(s),y=_r(l);y>=1<f?new lr([],n):g;if(g&&y>f&&ci;v-=i){var _=f>>>v&o;b=b.array[_]=mr(b.array[_],n)}b.array[f>>>i&o]=g}if(l=y)c-=y,l-=y,d=i,p=null,m=m&&m.removeBefore(n,0,c);else if(c>a||y>>d&o;if(w!==y>>>d&o)break;w&&(h+=(1<a&&(p=p.removeBefore(n,d,c-h)),p&&y>>i<=a&&c.size>=2*o.size?(n=(i=c.filter((function(e,t){return void 0!==e&&u!==t}))).toKeyedSeq().map((function(e){return e[0]})).flip().toMap(),e.__ownerID&&(n.__ownerID=i.__ownerID=e.__ownerID)):(n=o.remove(t),i=u===c.size-1?c.pop():c.set(u,void 0))}else if(l){if(r===c.get(u)[1])return e;n=o,i=c.set(u,[t,r])}else n=o.set(t,c.size),i=c.set(c.size,[t,r]);return e.__ownerID?(e.size=n.size,e._map=n,e._list=i,e.__hash=void 0,e.__altered=!0,e):Sr(n,i)}Tr.isOrderedMap=de,Tr.prototype[C]=!0,Tr.prototype[n]=Tr.prototype.remove;var xr="@@__IMMUTABLE_STACK__@@";function Ar(e){return Boolean(e&&e[xr])}var Rr=function(e){function t(e){return null==e?Dr():Ar(e)?e:Dr().pushAll(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("Stack [","]")},t.prototype.get=function(e,t){var r=this._head;for(e=d(this,e);r&&e--;)r=r.next;return r?r.value:t},t.prototype.peek=function(){return this._head&&this._head.value},t.prototype.push=function(){var e=arguments;if(0===arguments.length)return this;for(var t=this.size+arguments.length,r=this._head,n=arguments.length-1;n>=0;n--)r={value:e[n],next:r};return this.__ownerID?(this.size=t,this._head=r,this.__hash=void 0,this.__altered=!0,this):Nr(t,r)},t.prototype.pushAll=function(t){if(0===(t=e(t)).size)return this;if(0===this.size&&Ar(t))return t;tt(t.size);var r=this.size,n=this._head;return t.__iterate((function(e){r++,n={value:e,next:n}}),!0),this.__ownerID?(this.size=r,this._head=n,this.__hash=void 0,this.__altered=!0,this):Nr(r,n)},t.prototype.pop=function(){return this.slice(1)},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Dr()},t.prototype.slice=function(t,r){if(h(t,r,this.size))return this;var n=f(t,this.size);if(y(r,this.size)!==this.size)return e.prototype.slice.call(this,t,r);for(var i=this.size-n,a=this._head;n--;)a=a.next;return this.__ownerID?(this.size=i,this._head=a,this.__hash=void 0,this.__altered=!0,this):Nr(i,a)},t.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Nr(this.size,this._head,e,this.__hash):0===this.size?Dr():(this.__ownerID=e,this.__altered=!1,this)},t.prototype.__iterate=function(e,t){var r=this;if(t)return new te(this.toArray()).__iterate((function(t,n){return e(t,n,r)}),t);for(var n=0,i=this._head;i&&!1!==e(i.value,n++,this);)i=i.next;return n},t.prototype.__iterator=function(e,t){if(t)return new te(this.toArray()).__iterator(e,t);var r=0,n=this._head;return new V((function(){if(n){var t=n.value;return n=n.next,Q(e,r++,t)}return{value:void 0,done:!0}}))},t}(A);Rr.isStack=Ar;var Ir,Pr=Rr.prototype;function Nr(e,t,r,n){var i=Object.create(Pr);return i.size=e,i._head=t,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}function Dr(){return Ir||(Ir=Nr(0))}Pr[xr]=!0,Pr.shift=Pr.pop,Pr.unshift=Pr.push,Pr.unshiftAll=Pr.pushAll,Pr.withMutations=Ct,Pr.wasAltered=kt,Pr.asImmutable=Lt,Pr["@@transducer/init"]=Pr.asMutable=Mt,Pr["@@transducer/step"]=function(e,t){return e.unshift(t)},Pr["@@transducer/result"]=function(e){return e.asImmutable()};var jr="@@__IMMUTABLE_SET__@@";function Cr(e){return Boolean(e&&e[jr])}function Mr(e){return Cr(e)&&M(e)}function Lr(e,t){if(e===t)return!0;if(!v(t)||void 0!==e.size&&void 0!==t.size&&e.size!==t.size||void 0!==e.__hash&&void 0!==t.__hash&&e.__hash!==t.__hash||w(e)!==w(t)||S(e)!==S(t)||M(e)!==M(t))return!1;if(0===e.size&&0===t.size)return!0;var r=!O(e);if(M(e)){var n=e.entries();return t.every((function(e,t){var i=n.next().value;return i&&he(i[1],e)&&(r||he(i[0],t))}))&&n.next().done}var i=!1;if(void 0===e.size)if(void 0===t.size)"function"==typeof e.cacheResult&&e.cacheResult();else{i=!0;var a=e;e=t,t=a}var o=!0,c=t.__iterate((function(t,n){if(r?!e.has(t):i?!he(t,e.get(n,s)):!he(e.get(n,s),t))return o=!1,!1}));return o&&e.size===c}function kr(e,t){var r=function(r){e.prototype[r]=t[r]};return Object.keys(t).forEach(r),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(r),e}function Fr(e){if(!e||"object"!=typeof e)return e;if(!v(e)){if(!at(e))return e;e=W(e)}if(w(e)){var t={};return e.__iterate((function(e,r){t[r]=Fr(e)})),t}var r=[];return e.__iterate((function(e){r.push(Fr(e))})),r}var Br=function(e){function t(t){return null==t?$r():Cr(t)&&!M(t)?t:$r().withMutations((function(r){var n=e(t);tt(n.size),n.forEach((function(e){return r.add(e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(e){return this(x(e).keySeq())},t.intersect=function(e){return(e=E(e).toArray()).length?qr.intersect.apply(t(e.pop()),e):$r()},t.union=function(e){return(e=E(e).toArray()).length?qr.union.apply(t(e.pop()),e):$r()},t.prototype.toString=function(){return this.__toString("Set {","}")},t.prototype.has=function(e){return this._map.has(e)},t.prototype.add=function(e){return Vr(this,this._map.set(e,e))},t.prototype.remove=function(e){return Vr(this,this._map.remove(e))},t.prototype.clear=function(){return Vr(this,this._map.clear())},t.prototype.map=function(e,t){var r=this,n=!1,i=Vr(this,this._map.mapEntries((function(i){var a=i[1],o=e.call(t,a,a,r);return o!==a&&(n=!0),[o,o]}),t));return n?i:this},t.prototype.union=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return 0===(t=t.filter((function(e){return 0!==e.size}))).length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations((function(r){for(var n=0;n=0&&t=0&&r>>-15,461845907),t=fe(t<<13|t>>>-13,5),t=fe((t=t+3864292196^e)^t>>>16,2246822507),t=ye((t=fe(t^t>>>13,3266489909))^t>>>16)}(e.__iterate(r?t?function(e,t){n=31*n+un(me(e),me(t))|0}:function(e,t){n=n+un(me(e),me(t))|0}:t?function(e){n=31*n+me(e)|0}:function(e){n=n+me(e)|0}),n)}(this))}});var Wr=E.prototype;Wr[b]=!0,Wr[q]=Wr.values,Wr.toJSON=Wr.toArray,Wr.__toStringMapper=ot,Wr.inspect=Wr.toSource=function(){return this.toString()},Wr.chain=Wr.flatMap,Wr.contains=Wr.includes,kr(x,{flip:function(){return ze(this,Le(this))},mapEntries:function(e,t){var r=this,n=0;return ze(this,this.toSeq().map((function(i,a){return e.call(t,[a,i],n++,r)})).fromEntrySeq())},mapKeys:function(e,t){var r=this;return ze(this,this.toSeq().flip().map((function(n,i){return e.call(t,n,i,r)})).flip())}});var Yr=x.prototype;Yr[_]=!0,Yr[q]=Wr.entries,Yr.toJSON=Jr,Yr.__toStringMapper=function(e,t){return ot(t)+": "+ot(e)},kr(A,{toKeyedSeq:function(){return new De(this,!1)},filter:function(e,t){return ze(this,Be(this,e,t,!1))},findIndex:function(e,t){var r=this.findEntry(e,t);return r?r[0]:-1},indexOf:function(e){var t=this.keyOf(e);return void 0===t?-1:t},lastIndexOf:function(e){var t=this.lastKeyOf(e);return void 0===t?-1:t},reverse:function(){return ze(this,Fe(this,!1))},slice:function(e,t){return ze(this,Ue(this,e,t,!1))},splice:function(e,t){var r=arguments.length;if(t=Math.max(t||0,0),0===r||2===r&&!t)return this;e=f(e,e<0?this.count():this.size);var n=this.slice(0,e);return ze(this,1===r?n:n.concat(Ze(arguments,2),this.slice(e+t)))},findLastIndex:function(e,t){var r=this.findLastEntry(e,t);return r?r[0]:-1},first:function(e){return this.get(0,e)},flatten:function(e){return ze(this,Ve(this,e,!1))},get:function(e,t){return(e=d(this,e))<0||this.size===1/0||void 0!==this.size&&e>this.size?t:this.find((function(t,r){return r===e}),void 0,t)},has:function(e){return(e=d(this,e))>=0&&(void 0!==this.size?this.size===1/0||et?-1:0}function un(e,t){return e^t+2654435769+(e<<6)+(e>>2)}en.has=Wr.includes,en.contains=en.includes,en.keys=en.values,kr(Y,Yr),kr(Z,Zr),kr(ee,en);var ln=function(e){function t(e){return null==e?fn():Mr(e)?e:fn().withMutations((function(t){var r=R(e);tt(r.size),r.forEach((function(e){return t.add(e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(e){return this(x(e).keySeq())},t.prototype.toString=function(){return this.__toString("OrderedSet {","}")},t}(Br);ln.isOrderedSet=Mr;var dn,pn=ln.prototype;function hn(e,t){var r=Object.create(pn);return r.size=e?e.size:0,r._map=e,r.__ownerID=t,r}function fn(){return dn||(dn=hn(Or()))}pn[C]=!0,pn.zip=Zr.zip,pn.zipWith=Zr.zipWith,pn.zipAll=Zr.zipAll,pn.__empty=fn,pn.__make=hn;var yn={LeftThenRight:-1,RightThenLeft:1},gn=function(e,t){var r;!function(e){if(D(e))throw new Error("Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.");if(j(e))throw new Error("Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.");if(null===e||"object"!=typeof e)throw new Error("Can not call `Record` with a non-object as default values. Use a plain javascript object instead.")}(e);var n=function(a){var o=this;if(a instanceof n)return a;if(!(this instanceof n))return new n(a);if(!r){r=!0;var s=Object.keys(e),c=i._indices={};i._name=t,i._keys=s,i._defaultValues=e;for(var u=0;u2?[]:void 0,{"":e})}function En(e,t,r,n,i,a){if("string"!=typeof r&&!j(r)&&(J(r)||H(r)||it(r))){if(~e.indexOf(r))throw new TypeError("Cannot convert circular structure to Immutable");e.push(r),i&&""!==n&&i.push(n);var o=t.call(a,n,W(r).map((function(n,a){return En(e,t,n,a,i,r)})),i&&i.slice());return e.pop(),i&&i.pop(),o}return r}function xn(e,t){return S(t)?t.toList():w(t)?t.toMap():t.toSet()}var An="4.3.5",Rn=E;const In={version:An,Collection:E,Iterable:E,Seq:W,Map:Ft,OrderedMap:Tr,List:cr,Stack:Rr,Set:Br,OrderedSet:ln,PairSorting:yn,Record:gn,Range:Gr,Repeat:Sn,is:he,fromJS:On,hash:me,isImmutable:j,isCollection:v,isKeyed:w,isIndexed:S,isAssociative:O,isOrdered:M,isValueObject:pe,isPlainObject:it,isSeq:P,isList:sr,isMap:le,isOrderedMap:de,isStack:Ar,isSet:Cr,isOrderedSet:Mr,isRecord:D,get:ct,getIn:zr,has:st,hasIn:Xr,merge:Ot,mergeDeep:xt,mergeWith:Et,mergeDeepWith:At,remove:lt,removeIn:gt,set:dt,setIn:ft,update:bt,updateIn:pt}},35615:e=>{"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},76605:e=>{"use strict";const t=e=>null!==e&&"object"==typeof e&&"function"==typeof e.pipe;t.writable=e=>t(e)&&!1!==e.writable&&"function"==typeof e._write&&"object"==typeof e._writableState,t.readable=e=>t(e)&&!1!==e.readable&&"function"==typeof e._read&&"object"==typeof e._readableState,t.duplex=e=>t.writable(e)&&t.readable(e),t.transform=e=>t.duplex(e)&&"function"==typeof e._transform,e.exports=t},27202:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(85346),t),i(r(40905),t),i(r(76920),t),i(r(11971),t),i(r(89715),t),i(r(39426),t),i(r(45512),t)},85346:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContextParser=void 0,r(17082);const n=r(9929),i=r(40905),a=r(76920),o=r(39426),s=r(45512);class c{constructor(e){e=e||{},this.documentLoader=e.documentLoader||new a.FetchDocumentLoader,this.documentCache={},this.validateContext=!e.skipValidation,this.expandContentTypeToBase=!!e.expandContentTypeToBase,this.remoteContextsDepthLimit=e.remoteContextsDepthLimit||32,this.redirectSchemaOrgHttps=!("redirectSchemaOrgHttps"in e)||!!e.redirectSchemaOrgHttps}static validateLanguage(e,t,r){if("string"!=typeof e)throw new i.ErrorCoded(`The value of an '@language' must be a string, got '${JSON.stringify(e)}'`,r);if(!s.Util.REGEX_LANGUAGE_TAG.test(e)){if(t)throw new i.ErrorCoded(`The value of an '@language' must be a valid language tag, got '${JSON.stringify(e)}'`,r);return!1}return!0}static validateDirection(e,t){if("string"!=typeof e)throw new i.ErrorCoded(`The value of an '@direction' must be a string, got '${JSON.stringify(e)}'`,i.ERROR_CODES.INVALID_BASE_DIRECTION);if(!s.Util.REGEX_DIRECTION_TAG.test(e)){if(t)throw new i.ErrorCoded(`The value of an '@direction' must be 'ltr' or 'rtl', got '${JSON.stringify(e)}'`,i.ERROR_CODES.INVALID_BASE_DIRECTION);return!1}return!0}idifyReverseTerms(e){for(const t of Object.keys(e)){let r=e[t];if(r&&"object"==typeof r&&r["@reverse"]&&!r["@id"]){if("string"!=typeof r["@reverse"]||s.Util.isValidKeyword(r["@reverse"]))throw new i.ErrorCoded(`Invalid @reverse value, must be absolute IRI or blank node: '${r["@reverse"]}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);r=e[t]=Object.assign(Object.assign({},r),{"@id":r["@reverse"]}),r["@id"]=r["@reverse"],s.Util.isPotentialKeyword(r["@reverse"])?delete r["@reverse"]:r["@reverse"]=!0}}return e}expandPrefixedTerms(e,t,r){const n=e.getContextRaw();for(const a of r||Object.keys(n))if(s.Util.EXPAND_KEYS_BLACKLIST.indexOf(a)<0&&!s.Util.isReservedInternalKeyword(a)){const r=n[a];if(s.Util.isPotentialKeyword(a)&&s.Util.ALIAS_DOMAIN_BLACKLIST.indexOf(a)>=0&&("@type"!==a||"object"==typeof n[a]&&!n[a]["@protected"]&&"@set"!==n[a]["@container"]))throw new i.ErrorCoded(`Keywords can not be aliased to something else.\nTried mapping ${a} to ${JSON.stringify(r)}`,i.ERROR_CODES.KEYWORD_REDEFINITION);if(s.Util.ALIAS_RANGE_BLACKLIST.indexOf(s.Util.getContextValueId(r))>=0)throw new i.ErrorCoded(`Aliasing to certain keywords is not allowed.\nTried mapping ${a} to ${JSON.stringify(r)}`,i.ERROR_CODES.INVALID_KEYWORD_ALIAS);if(r&&s.Util.isPotentialKeyword(s.Util.getContextValueId(r))&&!0===r["@prefix"])throw new i.ErrorCoded(`Tried to use keyword aliases as prefix: '${a}': '${JSON.stringify(r)}'`,i.ERROR_CODES.INVALID_TERM_DEFINITION);for(;s.Util.isPrefixValue(n[a]);){const r=n[a];let i=!1;if("string"==typeof r)n[a]=e.expandTerm(r,!0),i=i||r!==n[a];else{const o=r["@id"],c=r["@type"],u=!("@prefix"in r)||s.Util.isValidIri(a);if("@id"in r)null!=o&&"string"==typeof o&&(n[a]=Object.assign(Object.assign({},n[a]),{"@id":e.expandTerm(o,!0)}),i=i||o!==n[a]["@id"]);else if(!s.Util.isPotentialKeyword(a)&&u){const t=e.expandTerm(a,!0);t!==a&&(n[a]=Object.assign(Object.assign({},n[a]),{"@id":t}),i=!0)}if(c&&"string"==typeof c&&"@vocab"!==c&&(!r["@container"]||!r["@container"]["@type"])&&u){let r=e.expandTerm(c,!0);t&&c===r&&(r=e.expandTerm(c,!1)),r!==c&&(i=!0,n[a]=Object.assign(Object.assign({},n[a]),{"@type":r}))}}if(!i)break}}}normalize(e,{processingMode:t,normalizeLanguageTags:r}){if(r||1===t)for(const t of Object.keys(e))if("@language"===t&&"string"==typeof e[t])e[t]=e[t].toLowerCase();else{const r=e[t];if(r&&"object"==typeof r&&"string"==typeof r["@language"]){const n=r["@language"].toLowerCase();n!==r["@language"]&&(e[t]=Object.assign(Object.assign({},r),{"@language":n}))}}}containersToHash(e){for(const t of Object.keys(e)){const r=e[t];if(r&&"object"==typeof r)if("string"==typeof r["@container"])e[t]=Object.assign(Object.assign({},r),{"@container":{[r["@container"]]:!0}});else if(Array.isArray(r["@container"])){const n={};for(const e of r["@container"])n[e]=!0;e[t]=Object.assign(Object.assign({},r),{"@container":n})}}}applyScopedProtected(e,{processingMode:t},r){if(t&&t>=1.1&&e["@protected"]){for(const t of Object.keys(e))if(!s.Util.isReservedInternalKeyword(t)&&!s.Util.isPotentialKeyword(t)&&!s.Util.isTermProtected(e,t)){const n=e[t];n&&"object"==typeof n?"@protected"in e[t]||(e[t]=Object.assign(Object.assign({},e[t]),{"@protected":!0})):(e[t]={"@id":n,"@protected":!0},s.Util.isSimpleTermDefinitionPrefix(n,r)&&(e[t]=Object.assign(Object.assign({},e[t]),{"@prefix":!0})))}delete e["@protected"]}}validateKeywordRedefinitions(e,t,r,n){for(const r of null!=n?n:Object.keys(t))if(s.Util.isTermProtected(e,r)&&("string"==typeof t[r]?t[r]={"@id":t[r],"@protected":!0}:t[r]=Object.assign(Object.assign({},t[r]),{"@protected":!0}),!s.Util.deepEqual(e[r],t[r])))throw new i.ErrorCoded(`Attempted to override the protected keyword ${r} from ${JSON.stringify(s.Util.getContextValueId(e[r]))} to ${JSON.stringify(s.Util.getContextValueId(t[r]))}`,i.ERROR_CODES.PROTECTED_TERM_REDEFINITION)}validate(e,{processingMode:t}){for(const r of Object.keys(e)){if(s.Util.isReservedInternalKeyword(r))continue;if(""===r)throw new i.ErrorCoded(`The empty term is not allowed, got: '${r}': '${JSON.stringify(e[r])}'`,i.ERROR_CODES.INVALID_TERM_DEFINITION);const n=e[r],a=typeof n;if(s.Util.isPotentialKeyword(r)){switch(r.substr(1)){case"vocab":if(null!==n&&"string"!==a)throw new i.ErrorCoded(`Found an invalid @vocab IRI: ${n}`,i.ERROR_CODES.INVALID_VOCAB_MAPPING);break;case"base":if(null!==n&&"string"!==a)throw new i.ErrorCoded(`Found an invalid @base IRI: ${e[r]}`,i.ERROR_CODES.INVALID_BASE_IRI);break;case"language":null!==n&&c.validateLanguage(n,!0,i.ERROR_CODES.INVALID_DEFAULT_LANGUAGE);break;case"version":if(null!==n&&"number"!==a)throw new i.ErrorCoded(`Found an invalid @version number: ${n}`,i.ERROR_CODES.INVALID_VERSION_VALUE);break;case"direction":null!==n&&c.validateDirection(n,!0);break;case"propagate":if(1===t)throw new i.ErrorCoded(`Found an illegal @propagate keyword: ${n}`,i.ERROR_CODES.INVALID_CONTEXT_ENTRY);if(null!==n&&"boolean"!==a)throw new i.ErrorCoded(`Found an invalid @propagate value: ${n}`,i.ERROR_CODES.INVALID_PROPAGATE_VALUE)}if(s.Util.isValidKeyword(r)&&s.Util.isValidKeyword(s.Util.getContextValueId(n)))throw new i.ErrorCoded(`Illegal keyword alias in term value, found: '${r}': '${s.Util.getContextValueId(n)}'`,i.ERROR_CODES.KEYWORD_REDEFINITION)}else if(null!==n)switch(a){case"string":if(s.Util.getPrefix(n,e)===r)throw new i.ErrorCoded(`Detected cyclical IRI mapping in context entry: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.CYCLIC_IRI_MAPPING);if(s.Util.isValidIriWeak(r)){if("@type"===n)throw new i.ErrorCoded(`IRIs can not be mapped to @type, found: '${r}': '${n}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);if(s.Util.isValidIri(n)&&n!==new o.JsonLdContextNormalized(e).expandTerm(r))throw new i.ErrorCoded(`IRIs can not be mapped to other IRIs, found: '${r}': '${n}'`,i.ERROR_CODES.INVALID_IRI_MAPPING)}break;case"object":if(!(s.Util.isCompactIri(r)||"@id"in n||("@id"===n["@type"]?e["@base"]:e["@vocab"])))throw new i.ErrorCoded(`Missing @id in context entry: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);for(const u of Object.keys(n)){const l=n[u];if(l)switch(u){case"@id":if(s.Util.isValidKeyword(l)&&"@type"!==l&&"@id"!==l&&"@graph"!==l&&"@nest"!==l)throw new i.ErrorCoded(`Illegal keyword alias in term value, found: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);if(s.Util.isValidIriWeak(r)){if("@type"===l)throw new i.ErrorCoded(`IRIs can not be mapped to @type, found: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);if(s.Util.isValidIri(l)&&l!==new o.JsonLdContextNormalized(e).expandTerm(r))throw new i.ErrorCoded(`IRIs can not be mapped to other IRIs, found: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING)}if("string"!=typeof l)throw new i.ErrorCoded(`Detected non-string @id in context entry: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING);if(s.Util.getPrefix(l,e)===r)throw new i.ErrorCoded(`Detected cyclical IRI mapping in context entry: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.CYCLIC_IRI_MAPPING);break;case"@type":if("@type"===n["@container"]&&"@id"!==l&&"@vocab"!==l)throw new i.ErrorCoded(`@container: @type only allows @type: @id or @vocab, but got: '${r}': '${l}'`,i.ERROR_CODES.INVALID_TYPE_MAPPING);if("string"!=typeof l)throw new i.ErrorCoded(`The value of an '@type' must be a string, got '${JSON.stringify(a)}'`,i.ERROR_CODES.INVALID_TYPE_MAPPING);if(!("@id"===l||"@vocab"===l||1!==t&&"@json"===l||1!==t&&"@none"===l||"_"!==l[0]&&s.Util.isValidIri(l)))throw new i.ErrorCoded(`A context @type must be an absolute IRI, found: '${r}': '${l}'`,i.ERROR_CODES.INVALID_TYPE_MAPPING);break;case"@reverse":if("string"==typeof l&&n["@id"]&&n["@id"]!==l)throw new i.ErrorCoded(`Found non-matching @id and @reverse term values in '${r}':'${l}' and '${n["@id"]}'`,i.ERROR_CODES.INVALID_REVERSE_PROPERTY);if("@nest"in n)throw new i.ErrorCoded(`@nest is not allowed in the reverse property '${r}'`,i.ERROR_CODES.INVALID_REVERSE_PROPERTY);break;case"@container":if(1===t&&(Object.keys(l).length>1||s.Util.CONTAINERS_1_0.indexOf(Object.keys(l)[0])<0))throw new i.ErrorCoded(`Invalid term @container for '${r}' ('${Object.keys(l)}') in 1.0, must be only one of ${s.Util.CONTAINERS_1_0.join(", ")}`,i.ERROR_CODES.INVALID_CONTAINER_MAPPING);for(const e of Object.keys(l)){if("@list"===e&&n["@reverse"])throw new i.ErrorCoded(`Term value can not be @container: @list and @reverse at the same time on '${r}'`,i.ERROR_CODES.INVALID_REVERSE_PROPERTY);if(s.Util.CONTAINERS.indexOf(e)<0)throw new i.ErrorCoded(`Invalid term @container for '${r}' ('${e}'), must be one of ${s.Util.CONTAINERS.join(", ")}`,i.ERROR_CODES.INVALID_CONTAINER_MAPPING)}break;case"@language":c.validateLanguage(l,!0,i.ERROR_CODES.INVALID_LANGUAGE_MAPPING);break;case"@direction":c.validateDirection(l,!0);break;case"@prefix":if(null!==l&&"boolean"!=typeof l)throw new i.ErrorCoded(`Found an invalid term @prefix boolean in: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_PREFIX_VALUE);if(!("@id"in n)&&!s.Util.isValidIri(r))throw new i.ErrorCoded(`Invalid @prefix definition for '${r}' ('${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_TERM_DEFINITION);break;case"@index":if(1===t||!n["@container"]||!n["@container"]["@index"])throw new i.ErrorCoded(`Attempt to add illegal key to value object: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_TERM_DEFINITION);break;case"@nest":if(s.Util.isPotentialKeyword(l)&&"@nest"!==l)throw new i.ErrorCoded(`Found an invalid term @nest value in: '${r}': '${JSON.stringify(n)}'`,i.ERROR_CODES.INVALID_NEST_VALUE)}}break;default:throw new i.ErrorCoded(`Found an invalid term value: '${r}': '${n}'`,i.ERROR_CODES.INVALID_TERM_DEFINITION)}}}applyBaseEntry(e,t,r){return"string"==typeof e||(r&&!("@base"in e)&&t.parentContext&&"object"==typeof t.parentContext&&"@base"in t.parentContext&&(e["@base"]=t.parentContext["@base"],t.parentContext["@__baseDocument"]&&(e["@__baseDocument"]=!0)),t.baseIRI&&!t.external&&("@base"in e?null===e["@base"]||"string"!=typeof e["@base"]||s.Util.isValidIri(e["@base"])||(e["@base"]=(0,n.resolve)(e["@base"],t.parentContext&&t.parentContext["@base"]||t.baseIRI)):(e["@base"]=t.baseIRI,e["@__baseDocument"]=!0))),e}normalizeContextIri(e,t){if(!s.Util.isValidIri(e))try{e=(0,n.resolve)(e,t)}catch(t){throw new Error(`Invalid context IRI: ${e}`)}return this.redirectSchemaOrgHttps&&e.startsWith("http://schema.org")&&(e="https://schema.org/"),e}async parseInnerContexts(e,t,r){for(const n of null!=r?r:Object.keys(e)){const r=e[n];if(r&&"object"==typeof r&&"@context"in r&&null!==r["@context"]&&!t.ignoreScopedContexts){if(this.validateContext)try{const i=Object.assign(Object.assign({},e),{[n]:Object.assign({},e[n])});delete i[n]["@context"],await this.parse(r["@context"],Object.assign(Object.assign({},t),{external:!1,parentContext:i,ignoreProtection:!0,ignoreRemoteScopedContexts:!0,ignoreScopedContexts:!0}))}catch(e){throw new i.ErrorCoded(e.message,i.ERROR_CODES.INVALID_SCOPED_CONTEXT)}e[n]=Object.assign(Object.assign({},r),{"@context":(await this.parse(r["@context"],Object.assign(Object.assign({},t),{external:!1,minimalProcessing:!0,ignoreRemoteScopedContexts:!0,parentContext:e}))).getContextRaw()})}}return e}async parse(e,t={},r={}){const{baseIRI:n,parentContext:a,external:u,processingMode:l=c.DEFAULT_PROCESSING_MODE,normalizeLanguageTags:d,ignoreProtection:p,minimalProcessing:h}=t,f=t.remoteContexts||{};if(Object.keys(f).length>=this.remoteContextsDepthLimit)throw new i.ErrorCoded("Detected an overflow in remote context inclusions: "+Object.keys(f),i.ERROR_CODES.CONTEXT_OVERFLOW);if(null==e){if(!p&&a&&s.Util.hasProtectedTerms(a))throw new i.ErrorCoded("Illegal context nullification when terms are protected",i.ERROR_CODES.INVALID_CONTEXT_NULLIFICATION);return new o.JsonLdContextNormalized(this.applyBaseEntry({},t,!1))}if("string"==typeof e){const r=this.normalizeContextIri(e,n),i=this.getOverriddenLoad(r,t);if(i)return new o.JsonLdContextNormalized(i);const a=await this.parse(await this.load(r),Object.assign(Object.assign({},t),{baseIRI:r,external:!0,remoteContexts:Object.assign(Object.assign({},f),{[r]:!0})}));return this.applyBaseEntry(a.getContextRaw(),t,!0),a}if(Array.isArray(e)){const r=[],i=await Promise.all(e.map(((e,i)=>{if("string"==typeof e){const a=this.normalizeContextIri(e,n);r[i]=a;return this.getOverriddenLoad(a,t)||this.load(a)}return e})));if(h)return new o.JsonLdContextNormalized(i);const s=await i.reduce(((e,n,a)=>e.then((e=>this.parse(n,Object.assign(Object.assign({},t),{baseIRI:r[a]||t.baseIRI,external:!!r[a]||t.external,parentContext:e.getContextRaw(),remoteContexts:r[a]?Object.assign(Object.assign({},f),{[r[a]]:!0}):f}),{skipValidation:a=1.1))throw new i.ErrorCoded("Context importing is not supported in JSON-LD 1.0",i.ERROR_CODES.INVALID_CONTEXT_ENTRY);if("string"!=typeof e["@import"])throw new i.ErrorCoded("An @import value must be a string, but got "+typeof e["@import"],i.ERROR_CODES.INVALID_IMPORT_VALUE);f=await this.loadImportContext(this.normalizeContextIri(e["@import"],n)),delete e["@import"]}this.applyScopedProtected(f,{processingMode:l},o.defaultExpandOptions);const y=Object.assign(f,e);this.idifyReverseTerms(y),this.normalize(y,{processingMode:l,normalizeLanguageTags:d}),this.applyScopedProtected(y,{processingMode:l},o.defaultExpandOptions);const g=Object.keys(y),m=[];if("object"==typeof a)for(const e in a)e in y?m.push(e):y[e]=a[e];await this.parseInnerContexts(y,t,g);const b=new o.JsonLdContextNormalized(y);return(y&&y["@version"]||c.DEFAULT_PROCESSING_MODE)>=1.1&&(e["@vocab"]&&"string"==typeof e["@vocab"]||""===e["@vocab"])&&(a&&"@vocab"in a&&e["@vocab"].indexOf(":")<0?y["@vocab"]=a["@vocab"]+e["@vocab"]:(s.Util.isCompactIri(e["@vocab"])||e["@vocab"]in y)&&(y["@vocab"]=b.expandTerm(e["@vocab"],!0))),this.expandPrefixedTerms(b,this.expandContentTypeToBase,g),!p&&a&&l>=1.1&&this.validateKeywordRedefinitions(a,y,o.defaultExpandOptions,m),this.validateContext&&!r.skipValidation&&this.validate(y,{processingMode:l}),b}throw new i.ErrorCoded(`Tried parsing a context that is not a string, array or object, but got ${e}`,i.ERROR_CODES.INVALID_LOCAL_CONTEXT)}async load(e){const t=this.documentCache[e];if(t)return t;let r;try{r=await this.documentLoader.load(e)}catch(t){throw new i.ErrorCoded(`Failed to load remote context ${e}: ${t.message}`,i.ERROR_CODES.LOADING_REMOTE_CONTEXT_FAILED)}if(!("@context"in r))throw new i.ErrorCoded(`Missing @context in remote context at ${e}`,i.ERROR_CODES.INVALID_REMOTE_CONTEXT);return this.documentCache[e]=r["@context"]}getOverriddenLoad(e,t){if(e in(t.remoteContexts||{})){if(t.ignoreRemoteScopedContexts)return e;throw new i.ErrorCoded("Detected a cyclic context inclusion of "+e,i.ERROR_CODES.RECURSIVE_CONTEXT_INCLUSION)}return null}async loadImportContext(e){let t=await this.load(e);if("object"!=typeof t||Array.isArray(t))throw new i.ErrorCoded("An imported context must be a single object: "+e,i.ERROR_CODES.INVALID_REMOTE_CONTEXT);if("@import"in t)throw new i.ErrorCoded("An imported context can not import another context: "+e,i.ERROR_CODES.INVALID_CONTEXT_ENTRY);return t=Object.assign({},t),this.containersToHash(t),t}}c.DEFAULT_PROCESSING_MODE=1.1,t.ContextParser=c},40905:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ERROR_CODES=t.ErrorCoded=void 0;class r extends Error{constructor(e,t){super(e),this.code=t}}var n;t.ErrorCoded=r,(n=t.ERROR_CODES||(t.ERROR_CODES={})).COLLIDING_KEYWORDS="colliding keywords",n.CONFLICTING_INDEXES="conflicting indexes",n.CYCLIC_IRI_MAPPING="cyclic IRI mapping",n.INVALID_ID_VALUE="invalid @id value",n.INVALID_INDEX_VALUE="invalid @index value",n.INVALID_NEST_VALUE="invalid @nest value",n.INVALID_PREFIX_VALUE="invalid @prefix value",n.INVALID_PROPAGATE_VALUE="invalid @propagate value",n.INVALID_REVERSE_VALUE="invalid @reverse value",n.INVALID_IMPORT_VALUE="invalid @import value",n.INVALID_VERSION_VALUE="invalid @version value",n.INVALID_BASE_IRI="invalid base IRI",n.INVALID_CONTAINER_MAPPING="invalid container mapping",n.INVALID_CONTEXT_ENTRY="invalid context entry",n.INVALID_CONTEXT_NULLIFICATION="invalid context nullification",n.INVALID_DEFAULT_LANGUAGE="invalid default language",n.INVALID_INCLUDED_VALUE="invalid @included value",n.INVALID_IRI_MAPPING="invalid IRI mapping",n.INVALID_JSON_LITERAL="invalid JSON literal",n.INVALID_KEYWORD_ALIAS="invalid keyword alias",n.INVALID_LANGUAGE_MAP_VALUE="invalid language map value",n.INVALID_LANGUAGE_MAPPING="invalid language mapping",n.INVALID_LANGUAGE_TAGGED_STRING="invalid language-tagged string",n.INVALID_LANGUAGE_TAGGED_VALUE="invalid language-tagged value",n.INVALID_LOCAL_CONTEXT="invalid local context",n.INVALID_REMOTE_CONTEXT="invalid remote context",n.INVALID_REVERSE_PROPERTY="invalid reverse property",n.INVALID_REVERSE_PROPERTY_MAP="invalid reverse property map",n.INVALID_REVERSE_PROPERTY_VALUE="invalid reverse property value",n.INVALID_SCOPED_CONTEXT="invalid scoped context",n.INVALID_SCRIPT_ELEMENT="invalid script element",n.INVALID_SET_OR_LIST_OBJECT="invalid set or list object",n.INVALID_TERM_DEFINITION="invalid term definition",n.INVALID_TYPE_MAPPING="invalid type mapping",n.INVALID_TYPE_VALUE="invalid type value",n.INVALID_TYPED_VALUE="invalid typed value",n.INVALID_VALUE_OBJECT="invalid value object",n.INVALID_VALUE_OBJECT_VALUE="invalid value object value",n.INVALID_VOCAB_MAPPING="invalid vocab mapping",n.IRI_CONFUSED_WITH_PREFIX="IRI confused with prefix",n.KEYWORD_REDEFINITION="keyword redefinition",n.LOADING_DOCUMENT_FAILED="loading document failed",n.LOADING_REMOTE_CONTEXT_FAILED="loading remote context failed",n.MULTIPLE_CONTEXT_LINK_HEADERS="multiple context link headers",n.PROCESSING_MODE_CONFLICT="processing mode conflict",n.PROTECTED_TERM_REDEFINITION="protected term redefinition",n.CONTEXT_OVERFLOW="context overflow",n.INVALID_BASE_DIRECTION="invalid base direction",n.RECURSIVE_CONTEXT_INCLUSION="recursive context inclusion",n.INVALID_STREAMING_KEY_ORDER="invalid streaming key order",n.INVALID_EMBEDDED_NODE="invalid embedded node",n.INVALID_ANNOTATION="invalid annotation"},76920:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FetchDocumentLoader=void 0,r(17082);const n=r(40905),i=r(75441),a=r(9929);t.FetchDocumentLoader=class{constructor(e){this.fetcher=e}async load(e){const t=await(this.fetcher||fetch)(e,{headers:new Headers({accept:"application/ld+json"})});if(t.ok&&t.headers){let r=t.headers.get("Content-Type");if(r){const e=r.indexOf(";");e>0&&(r=r.substr(0,e))}if("application/ld+json"===r)return await t.json();if(t.headers.has("Link")){let r;if(t.headers.forEach(((t,n)=>{if("link"===n){const n=(0,i.parse)(t);for(const t of n.get("type","application/ld+json"))if("alternate"===t.rel){if(r)throw new Error("Multiple JSON-LD alternate links were found on "+e);r=(0,a.resolve)(t.uri,e)}}})),r)return this.load(r)}throw new n.ErrorCoded(`Unsupported JSON-LD media type ${r}`,n.ERROR_CODES.LOADING_DOCUMENT_FAILED)}throw new Error(t.statusText||`Status code: ${t.status}`)}}},11971:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},89715:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},39426:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultExpandOptions=t.JsonLdContextNormalized=void 0;const n=r(9929),i=r(40905),a=r(45512);t.JsonLdContextNormalized=class{constructor(e){this.contextRaw=e}getContextRaw(){return this.contextRaw}expandTerm(e,r,o=t.defaultExpandOptions){const s=this.contextRaw[e];if(null===s||s&&null===s["@id"])return null;let c=!0;if(s&&r){const t=a.Util.getContextValueId(s);if(t&&t!==e){if("string"==typeof t&&(a.Util.isValidIri(t)||a.Util.isValidKeyword(t)))return t;a.Util.isPotentialKeyword(t)||(c=!1)}}const u=a.Util.getPrefix(e,this.contextRaw),l=this.contextRaw["@vocab"],d=(!!l||""===l)&&l.indexOf(":")<0,p=this.contextRaw["@base"],h=a.Util.isPotentialKeyword(e);if(u){const t=this.contextRaw[u],r=a.Util.getContextValueId(t);if(r){if("string"!=typeof t&&o.allowPrefixForcing){if("_"!==r[0]&&!h&&!t["@prefix"]&&!(e in this.contextRaw))return e}else if(!a.Util.isSimpleTermDefinitionPrefix(r,o))return e;return r+e.substr(u.length+1)}}else{if(r&&(l||""===l||o.allowVocabRelativeToBase&&p&&d)&&!h&&!a.Util.isCompactIri(e)){if(d){if(o.allowVocabRelativeToBase)return(l||p?(0,n.resolve)(l,p):"")+e;throw new i.ErrorCoded(`Relative vocab expansion for term '${e}' with vocab '${l}' is not allowed.`,i.ERROR_CODES.INVALID_VOCAB_MAPPING)}return l+e}if(!r&&p&&!h&&!a.Util.isCompactIri(e))return(0,n.resolve)(e,p)}if(c)return e;throw new i.ErrorCoded(`Invalid IRI mapping found for context entry '${e}': '${JSON.stringify(s)}'`,i.ERROR_CODES.INVALID_IRI_MAPPING)}compactIri(e,t){if(t&&this.contextRaw["@vocab"]&&e.startsWith(this.contextRaw["@vocab"]))return e.substr(this.contextRaw["@vocab"].length);if(!t&&this.contextRaw["@base"]&&e.startsWith(this.contextRaw["@base"]))return e.substr(this.contextRaw["@base"].length);const r={prefix:"",suffix:e};for(const n in this.contextRaw){const i=this.contextRaw[n];if(i&&!a.Util.isPotentialKeyword(n)){const o=a.Util.getContextValueId(i);if(e.startsWith(o)){const i=e.substr(o.length);if(i)i.length{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;class r{static isCompactIri(e){return e.indexOf(":")>0&&!(e&&"#"===e[0])}static getPrefix(e,t){if(e&&"#"===e[0])return null;const r=e.indexOf(":");if(r>=0){if(e.length>r+1&&"/"===e.charAt(r+1)&&"/"===e.charAt(r+2))return null;const n=e.substr(0,r);if("_"===n)return null;if(t[n])return n}return null}static getContextValueId(e){if(null===e||"string"==typeof e)return e;return e["@id"]||null}static isSimpleTermDefinitionPrefix(e,t){return!r.isPotentialKeyword(e)&&(t.allowPrefixNonGenDelims||"string"==typeof e&&("_"===e[0]||r.isPrefixIriEndingWithGenDelim(e)))}static isPotentialKeyword(e){return"string"==typeof e&&r.KEYWORD_REGEX.test(e)}static isPrefixIriEndingWithGenDelim(e){return r.ENDS_WITH_GEN_DELIM.test(e)}static isPrefixValue(e){return e&&("string"==typeof e||e&&"object"==typeof e)}static isValidIri(e){return Boolean(e&&r.IRI_REGEX.test(e))}static isValidIriWeak(e){return!!e&&":"!==e[0]&&r.IRI_REGEX_WEAK.test(e)}static isValidKeyword(e){return r.VALID_KEYWORDS[e]}static isTermProtected(e,t){const r=e[t];return!("string"==typeof r)&&r&&r["@protected"]}static hasProtectedTerms(e){for(const t of Object.keys(e))if(r.isTermProtected(e,t))return!0;return!1}static isReservedInternalKeyword(e){return e.startsWith("@__")}static deepEqual(e,t){const r=Object.keys(e),n=Object.keys(t);return r.length===n.length&&r.every((r=>{const n=e[r],i=t[r];return n===i||null!==n&&null!==i&&"object"==typeof n&&"object"==typeof i&&this.deepEqual(n,i)}))}}r.IRI_REGEX=/^([A-Za-z][A-Za-z0-9+-.]*|_):[^ "<>{}|\\\[\]`#]*(#[^#]*)?$/,r.IRI_REGEX_WEAK=/(?::[^:])|\//,r.KEYWORD_REGEX=/^@[a-z]+$/i,r.ENDS_WITH_GEN_DELIM=/[:/?#\[\]@]$/,r.REGEX_LANGUAGE_TAG=/^[a-zA-Z]+(-[a-zA-Z0-9]+)*$/,r.REGEX_DIRECTION_TAG=/^(ltr)|(rtl)$/,r.VALID_KEYWORDS={"@annotation":!0,"@base":!0,"@container":!0,"@context":!0,"@direction":!0,"@graph":!0,"@id":!0,"@import":!0,"@included":!0,"@index":!0,"@json":!0,"@language":!0,"@list":!0,"@nest":!0,"@none":!0,"@prefix":!0,"@propagate":!0,"@protected":!0,"@reverse":!0,"@set":!0,"@type":!0,"@value":!0,"@version":!0,"@vocab":!0},r.EXPAND_KEYS_BLACKLIST=["@base","@vocab","@language","@version","@direction"],r.ALIAS_DOMAIN_BLACKLIST=["@container","@graph","@id","@index","@list","@nest","@none","@prefix","@reverse","@set","@type","@value","@version"],r.ALIAS_RANGE_BLACKLIST=["@context","@preserve"],r.CONTAINERS=["@list","@set","@index","@language","@graph","@id","@type"],r.CONTAINERS_1_0=["@list","@set","@index"],t.Util=r},17082:function(){!function(e){!function(t){var r="URLSearchParams"in e,n="Symbol"in e&&"iterator"in Symbol,i="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),a="FormData"in e,o="ArrayBuffer"in e;if(o)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function u(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function l(e){return"string"!=typeof e&&(e=String(e)),e}function d(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function p(e){this.map={},e instanceof p?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function h(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function f(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function y(e){var t=new FileReader,r=f(t);return t.readAsArrayBuffer(e),r}function g(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:i&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:a&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:r&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():o&&i&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=g(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):o&&(ArrayBuffer.prototype.isPrototypeOf(e)||c(e))?this._bodyArrayBuffer=g(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var e=h(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?h(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(y)}),this.text=function(){var e,t,r,n=h(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,r=f(t=new FileReader),t.readAsText(e),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?n:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function _(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function w(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new p(t.headers),this.url=t.url||"",this._initBody(e)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},m.call(v.prototype),m.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},w.error=function(){var e=new w(null,{status:0,statusText:""});return e.type="error",e};var T=[301,302,303,307,308];w.redirect=function(e,t){if(-1===T.indexOf(t))throw new RangeError("Invalid status code");return new w(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function S(e,r){return new Promise((function(n,a){var o=new v(e,r);if(o.signal&&o.signal.aborted)return a(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function c(){s.abort()}s.onload=function(){var e,t,r={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new p,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t)};r.url="responseURL"in s?s.responseURL:r.headers.get("X-Request-URL");var i="response"in s?s.response:s.responseText;n(new w(i,r))},s.onerror=function(){a(new TypeError("Network request failed"))},s.ontimeout=function(){a(new TypeError("Network request failed"))},s.onabort=function(){a(new t.DOMException("Aborted","AbortError"))},s.open(o.method,o.url,!0),"include"===o.credentials?s.withCredentials=!0:"omit"===o.credentials&&(s.withCredentials=!1),"responseType"in s&&i&&(s.responseType="blob"),o.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),o.signal&&(o.signal.addEventListener("abort",c),s.onreadystatechange=function(){4===s.readyState&&o.signal.removeEventListener("abort",c)}),s.send(void 0===o._bodyInit?null:o._bodyInit)}))}S.polyfill=!0,e.fetch||(e.fetch=S,e.Headers=p,e.Request=v,e.Response=w),t.Headers=p,t.Request=v,t.Response=w,t.fetch=S,Object.defineProperty(t,"__esModule",{value:!0})}({})}("undefined"!=typeof self?self:this)},50631:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(90114),t)},46240:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContextTree=void 0;class r{constructor(){this.subTrees={}}getContext(e){if(e.length>0){const[t,...r]=e,n=this.subTrees[t];if(n){const e=n.getContext(r);if(e)return e.then((({context:e,depth:t})=>({context:e,depth:t+1})))}}return this.context?this.context.then((e=>({context:e,depth:0}))):null}setContext(e,t){if(0===e.length)this.context=t;else{const[n,...i]=e;let a=this.subTrees[n];a||(a=this.subTrees[n]=new r),a.setContext(i,t)}}removeContext(e){this.setContext(e,null)}}t.ContextTree=r},90114:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JsonLdParser=void 0;const n=r(36885),i=r(27202),a=r(58521),o=r(11272),s=r(45947),c=r(62885),u=r(29997),l=r(66700),d=r(37071),p=r(48978),h=r(30643),f=r(58865),y=r(23787),g=r(30635),m=r(94382),b=r(24292),v=r(22135),_=r(75441),w=r(6042);class T extends a.Transform{constructor(e){super({readableObjectMode:!0}),e=e||{},this.options=e,this.parsingContext=new b.ParsingContext(Object.assign({parser:this},e)),this.util=new v.Util({dataFactory:e.dataFactory,parsingContext:this.parsingContext}),this.jsonParser=new n,this.contextJobs=[],this.typeJobs=[],this.contextAwaitingJobs=[],this.lastDepth=0,this.lastKeys=[],this.lastOnValueJob=Promise.resolve(),this.attachJsonParserListeners(),this.on("end",(()=>{void 0!==this.jsonParser.mode&&this.emit("error",new Error("Unclosed document"))}))}static fromHttpResponse(e,t,r,n){let a,o,s=["application/activity+json"];if(n&&n.wellKnownMediaTypes&&(s=n.wellKnownMediaTypes),"application/ld+json"!==t&&!s.includes(t)){if("application/json"!==t&&!t.endsWith("+json"))throw new i.ErrorCoded(`Unsupported JSON-LD media type ${t}`,i.ERROR_CODES.LOADING_DOCUMENT_FAILED);if(r&&r.has("Link")&&r.forEach(((t,r)=>{if("link"===r){const r=(0,_.parse)(t);for(const t of r.get("rel","http://www.w3.org/ns/json-ld#context")){if(a)throw new i.ErrorCoded("Multiple JSON-LD context link headers were found on "+e,i.ERROR_CODES.MULTIPLE_CONTEXT_LINK_HEADERS);a=t.uri}}})),!a&&!(null==n?void 0:n.ignoreMissingContextLinkHeader))throw new i.ErrorCoded(`Missing context link header for media type ${t} on ${e}`,i.ERROR_CODES.LOADING_DOCUMENT_FAILED)}if(r&&r.has("Content-Type")){const e=r.get("Content-Type"),t=/; *profile=([^"]*)/.exec(e);t&&"http://www.w3.org/ns/json-ld#streaming"===t[1]&&(o=!0)}return new T(Object.assign({baseIRI:e,context:a,streamingProfile:o},n||{}))}import(e){if("pipe"in e){e.on("error",(e=>t.emit("error",e)));const t=e.pipe(new T(this.options));return t}{const t=new a.PassThrough({readableObjectMode:!0});e.on("error",(e=>r.emit("error",e))),e.on("data",(e=>t.push(e))),e.on("end",(()=>t.push(null)));const r=t.pipe(new T(this.options));return r}}_transform(e,t,r){this.jsonParser.write(e),this.lastOnValueJob.then((()=>r()),(e=>r(e)))}async newOnValueJob(e,t,r,n){let a=!0;if(n&&r1&&(l=this.parsingContext.validationStack[this.parsingContext.validationStack.length-1].property);for(let t=Math.max(1,this.parsingContext.validationStack.length-1);t=0?this.parsingContext.idStack[e-r-1]:[await this.util.getGraphContainerValue(t,e)];if(a)for(const t of a){this.parsingContext.emittedStack[e]=!0;for(const r of n)this.util.emitQuadChecked(e,i,r.predicate,r.object,t,r.reverse,r.isEmbedded)}else{const r=this.parsingContext.getUnidentifiedGraphBufferSafe(e-await this.util.getDepthOffsetGraph(e,t)-1);for(const e of n)e.reverse?r.push({object:i,predicate:e.predicate,subject:e.object,isEmbedded:e.isEmbedded}):r.push({object:e.object,predicate:e.predicate,subject:i,isEmbedded:e.isEmbedded})}}this.parsingContext.unidentifiedValuesBuffer.splice(e,1),this.parsingContext.literalStack.splice(e,1),this.parsingContext.jsonLiteralStack.splice(e,1)}const a=this.parsingContext.unidentifiedGraphsBuffer[e];if(a){for(const t of r){const r=1!==e||"BlankNode"!==t.termType||this.parsingContext.topLevelProperties?t:this.util.getDefaultGraph();this.parsingContext.emittedStack[e]=!0;for(const t of a)this.parsingContext.emitQuad(e,this.util.dataFactory.quad(t.subject,t.predicate,t.object,r))}this.parsingContext.unidentifiedGraphsBuffer.splice(e,1)}const o=this.parsingContext.annotationsBuffer[e];if(o){o.length>0&&1===e&&this.parsingContext.emitError(new i.ErrorCoded("Annotations can not be made on top-level nodes",i.ERROR_CODES.INVALID_ANNOTATION));const t=this.parsingContext.getAnnotationsBufferSafe(e-1);for(const e of o)t.push(e);delete this.parsingContext.annotationsBuffer[e]}}async validateKey(e,t,r){for(const n of T.ENTRY_HANDLERS)if(await n.validate(this.parsingContext,this.util,e,t,r))return{valid:!0,property:r||n.isPropertyHandler()};return{valid:!1,property:!1}}attachJsonParserListeners(){this.jsonParser.onValue=e=>{const t=this.jsonParser.stack.length,r=new Array(t+1).fill(0).map(((e,r)=>r===t?this.jsonParser.key:this.jsonParser.stack[r].key));if(!this.isParsingContextInner(t)){const n=()=>this.newOnValueJob(r,e,t,!0);if(this.parsingContext.streamingProfile||this.parsingContext.contextTree.getContext(r.slice(0,-1)))this.lastOnValueJob=this.lastOnValueJob.then(n);else if("@context"===r[t]){let e=this.contextJobs[t];e||(e=this.contextJobs[t]=[]),e.push(n)}else this.contextAwaitingJobs.push({job:n,keys:r,depth:t});this.parsingContext.streamingProfile||0!==t||(this.lastOnValueJob=this.lastOnValueJob.then((()=>this.executeBufferedJobs())))}},this.jsonParser.onError=e=>{this.emit("error",e)}}isParsingContextInner(e){for(let t=e;t>0;t--)if("@context"===this.jsonParser.stack[t-1].key)return!0;return!1}async executeBufferedJobs(){for(const e of this.contextJobs)if(e)for(const t of e)await t();this.parsingContext.unaliasedKeywordCacheStack.splice(0);const e=[];for(const t of this.contextAwaitingJobs)"@type"===await this.util.unaliasKeyword(t.keys[t.depth],t.keys,t.depth,!0)||"number"==typeof t.keys[t.depth]&&"@type"===await this.util.unaliasKeyword(t.keys[t.depth-1],t.keys,t.depth-1,!0)?this.typeJobs.push({job:t.job,keys:t.keys.slice(0,t.keys.length-1)}):e.push(t);for(const t of e){if(this.typeJobs.length>0){const e=[],r=[];for(let n=0;ne.keys.length-t.keys.length));for(const e of n)await e.job();const i=r.sort().reverse();for(const e of i)this.typeJobs.splice(e,1)}await t.job()}}}T.DEFAULT_PROCESSING_MODE="1.1",T.ENTRY_HANDLERS=[new o.EntryHandlerArrayValue,new l.EntryHandlerKeywordContext,new p.EntryHandlerKeywordId,new h.EntryHandlerKeywordIncluded,new d.EntryHandlerKeywordGraph,new f.EntryHandlerKeywordNest,new y.EntryHandlerKeywordType,new m.EntryHandlerKeywordValue,new w.EntryHandlerKeywordAnnotation,new s.EntryHandlerContainer,new g.EntryHandlerKeywordUnknownFallback,new u.EntryHandlerPredicate,new c.EntryHandlerInvalidFallback],t.JsonLdParser=T},24292:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParsingContext=void 0;const n=r(27202),i=r(40905),a=r(46240),o=r(90114);class s{constructor(e){this.contextParser=new n.ContextParser({documentLoader:e.documentLoader,skipValidation:e.skipContextValidation}),this.streamingProfile=!!e.streamingProfile,this.baseIRI=e.baseIRI,this.produceGeneralizedRdf=!!e.produceGeneralizedRdf,this.allowSubjectList=!!e.allowSubjectList,this.processingMode=e.processingMode||o.JsonLdParser.DEFAULT_PROCESSING_MODE,this.strictValues=!!e.strictValues,this.validateValueIndexes=!!e.validateValueIndexes,this.defaultGraph=e.defaultGraph,this.rdfDirection=e.rdfDirection,this.normalizeLanguageTags=e.normalizeLanguageTags,this.streamingProfileAllowOutOfOrderPlainType=e.streamingProfileAllowOutOfOrderPlainType,this.rdfstar=!1!==e.rdfstar,this.rdfstarReverseInEmbedded=e.rdfstarReverseInEmbedded,this.topLevelProperties=!1,this.activeProcessingMode=parseFloat(this.processingMode),this.processingStack=[],this.processingType=[],this.emittedStack=[],this.idStack=[],this.graphStack=[],this.graphContainerTermStack=[],this.listPointerStack=[],this.contextTree=new a.ContextTree,this.literalStack=[],this.validationStack=[],this.unaliasedKeywordCacheStack=[],this.jsonLiteralStack=[],this.unidentifiedValuesBuffer=[],this.unidentifiedGraphsBuffer=[],this.annotationsBuffer=[],this.pendingContainerFlushBuffers=[],this.parser=e.parser,e.context?(this.rootContext=this.parseContext(e.context),this.rootContext.then((e=>this.validateContext(e)))):this.rootContext=Promise.resolve(new n.JsonLdContextNormalized(this.baseIRI?{"@base":this.baseIRI,"@__baseDocument":!0}:{}))}async parseContext(e,t,r){return this.contextParser.parse(e,{baseIRI:this.baseIRI,ignoreProtection:r,normalizeLanguageTags:this.normalizeLanguageTags,parentContext:t,processingMode:this.activeProcessingMode})}validateContext(e){const t=e.getContextRaw()["@version"];if(t){if(this.activeProcessingMode&&t>this.activeProcessingMode)throw new i.ErrorCoded(`Unsupported JSON-LD version '${t}' under active processing mode ${this.activeProcessingMode}.`,i.ERROR_CODES.PROCESSING_MODE_CONFLICT);if(this.activeProcessingMode&&t0&&!1===i.context.getContextRaw()["@propagate"]&&i.depth!==t&&!r);return 0===i.depth&&!1===i.context.getContextRaw()["@propagate"]&&i.depth!==t&&(i.context=new n.JsonLdContextNormalized({})),i}async newOnValueJob(e,t,r,n){await this.parser.newOnValueJob(e,t,r,n)}async handlePendingContainerFlushBuffers(){if(this.pendingContainerFlushBuffers.length>0){for(const e of this.pendingContainerFlushBuffers)await this.parser.flushBuffer(e.depth,e.keys),this.parser.flushStacks(e.depth);return this.pendingContainerFlushBuffers.splice(0,this.pendingContainerFlushBuffers.length),!0}return!1}emitQuad(e,t){1===e&&(this.topLevelProperties=!0),this.parser.push(t)}emitError(e){this.parser.emit("error",e)}emitContext(e){this.parser.emit("context",e)}getUnidentifiedValueBufferSafe(e){let t=this.unidentifiedValuesBuffer[e];return t||(t=[],this.unidentifiedValuesBuffer[e]=t),t}getUnidentifiedGraphBufferSafe(e){let t=this.unidentifiedGraphsBuffer[e];return t||(t=[],this.unidentifiedGraphsBuffer[e]=t),t}getAnnotationsBufferSafe(e){let t=this.annotationsBuffer[e];return t||(t=[],this.annotationsBuffer[e]=t),t}getExpandOptions(){return s.EXPAND_OPTIONS[this.activeProcessingMode]}shiftStack(e,t){const r=this.idStack[e+t];if(r&&(this.idStack[e]=r,this.emittedStack[e]=!0,delete this.idStack[e+t]),this.pendingContainerFlushBuffers.length)for(const r of this.pendingContainerFlushBuffers)r.depth>=e+t&&(r.depth-=t,r.keys.splice(e,t));this.unidentifiedValuesBuffer[e+t]&&(this.unidentifiedValuesBuffer[e]=this.unidentifiedValuesBuffer[e+t],delete this.unidentifiedValuesBuffer[e+t]),this.annotationsBuffer[e+t-1]&&(this.annotationsBuffer[e-1]||(this.annotationsBuffer[e-1]=[]),this.annotationsBuffer[e-1]=[...this.annotationsBuffer[e-1],...this.annotationsBuffer[e+t-1]],delete this.annotationsBuffer[e+t-1])}}s.EXPAND_OPTIONS={1:{allowPrefixForcing:!1,allowPrefixNonGenDelims:!1,allowVocabRelativeToBase:!1},1.1:{allowPrefixForcing:!0,allowPrefixNonGenDelims:!1,allowVocabRelativeToBase:!0}},t.ParsingContext=s},22135:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;const n=r(27202),i=r(18050),a=r(45947),o=r(33619);class s{constructor(e){this.parsingContext=e.parsingContext,this.dataFactory=e.dataFactory||new i.DataFactory,this.rdfFirst=this.dataFactory.namedNode(s.RDF+"first"),this.rdfRest=this.dataFactory.namedNode(s.RDF+"rest"),this.rdfNil=this.dataFactory.namedNode(s.RDF+"nil"),this.rdfType=this.dataFactory.namedNode(s.RDF+"type"),this.rdfJson=this.dataFactory.namedNode(s.RDF+"JSON")}static getContextValue(e,t,r,n){const i=e.getContextRaw()[r];if(!i)return n;const a=i[t];return void 0===a?n:a}static getContextValueContainer(e,t){return s.getContextValue(e,"@container",t,{"@set":!0})}static getContextValueType(e,t){const r=s.getContextValue(e,"@type",t,null);return"@none"===r?null:r}static getContextValueLanguage(e,t){return s.getContextValue(e,"@language",t,e.getContextRaw()["@language"]||null)}static getContextValueDirection(e,t){return s.getContextValue(e,"@direction",t,e.getContextRaw()["@direction"]||null)}static isContextValueReverse(e,t){return!!s.getContextValue(e,"@reverse",t,null)}static getContextValueIndex(e,t){return s.getContextValue(e,"@index",t,e.getContextRaw()["@index"]||null)}static isPropertyReverse(e,t,r){return"@reverse"===r!==s.isContextValueReverse(e,t)}static isPropertyInEmbeddedNode(e){return"@id"===e}static isPropertyInAnnotationObject(e){return"@annotation"===e}static isValidIri(e){return null!==e&&n.Util.isValidIri(e)}static isPrefixArray(e,t){if(e.length>t.length)return!1;for(let r=0;r1)throw new n.ErrorCoded(`Found illegal neighbouring entries next to @set for key: '${t}'`,n.ERROR_CODES.INVALID_SET_OR_LIST_OBJECT);return[]}if("@list"in r){if(Object.keys(r).length>1)throw new n.ErrorCoded(`Found illegal neighbouring entries next to @list for key: '${t}'`,n.ERROR_CODES.INVALID_SET_OR_LIST_OBJECT);const e=r["@list"];return Array.isArray(e)?0===e.length?[this.rdfNil]:this.parsingContext.idStack[i+1]||[]:await this.valueToTerm(await this.parsingContext.getContext(a),t,e,i-1,a.slice(0,-1))}if("@reverse"in r&&"boolean"==typeof r["@reverse"])return[];if("@graph"in s.getContextValueContainer(await this.parsingContext.getContext(a),t)){const e=this.parsingContext.graphContainerTermStack[i+1];return e?Object.values(e):[this.dataFactory.blankNode()]}if("@id"in r){if(Object.keys(r).length>1&&(e=await this.parsingContext.getContext(a,0)),"@context"in r&&(e=await this.parsingContext.parseContext(r["@context"],e.getContextRaw())),"@vocab"===r["@type"])return this.nullableTermToArray(this.createVocabOrBaseTerm(e,r["@id"]));{const t=r["@id"];let a;if("object"==typeof t){if(!this.parsingContext.rdfstar)throw new n.ErrorCoded(`Found illegal @id '${r}'`,n.ERROR_CODES.INVALID_ID_VALUE);a=this.parsingContext.idStack[i+1][0]}else a=this.resourceToTerm(e,t);return this.nullableTermToArray(a)}}return this.parsingContext.emittedStack[i+1]||r&&"object"==typeof r&&0===Object.keys(r).length?this.parsingContext.idStack[i+1]||(this.parsingContext.idStack[i+1]=[this.dataFactory.blankNode()]):[];case"string":return this.nullableTermToArray(this.stringValueToTerm(i,await this.getContextSelfOrPropertyScoped(e,t),t,r,null));case"boolean":return this.nullableTermToArray(this.stringValueToTerm(i,await this.getContextSelfOrPropertyScoped(e,t),t,Boolean(r).toString(),this.dataFactory.namedNode(s.XSD_BOOLEAN)));case"number":return this.nullableTermToArray(this.stringValueToTerm(i,await this.getContextSelfOrPropertyScoped(e,t),t,r,this.dataFactory.namedNode(r%1==0&&r<1e21?s.XSD_INTEGER:s.XSD_DOUBLE)));default:return this.parsingContext.emitError(new Error(`Could not determine the RDF type of a ${o}`)),[]}}async getContextSelfOrPropertyScoped(e,t){const r=e.getContextRaw()[t];return r&&"object"==typeof r&&"@context"in r&&(e=await this.parsingContext.parseContext(r,e.getContextRaw(),!0)),e}nullableTermToArray(e){return e?[e]:[]}predicateToTerm(e,t){const r=e.expandTerm(t,!0,this.parsingContext.getExpandOptions());return r?"_"===r[0]&&":"===r[1]?this.parsingContext.produceGeneralizedRdf?this.dataFactory.blankNode(r.substr(2)):null:s.isValidIri(r)?this.dataFactory.namedNode(r):r&&this.parsingContext.strictValues?(this.parsingContext.emitError(new n.ErrorCoded(`Invalid predicate IRI: ${r}`,n.ERROR_CODES.INVALID_IRI_MAPPING)),null):null:null}resourceToTerm(e,t){if(t.startsWith("_:"))return this.dataFactory.blankNode(t.substr(2));const r=e.expandTerm(t,!1,this.parsingContext.getExpandOptions());if(!s.isValidIri(r)){if(!r||!this.parsingContext.strictValues)return null;this.parsingContext.emitError(new Error(`Invalid resource IRI: ${r}`))}return this.dataFactory.namedNode(r)}createVocabOrBaseTerm(e,t){if(t.startsWith("_:"))return this.dataFactory.blankNode(t.substr(2));const r=this.parsingContext.getExpandOptions();let n=e.expandTerm(t,!0,r);if(n===t&&(n=e.expandTerm(t,!1,r)),!s.isValidIri(n)){if(!n||!this.parsingContext.strictValues||n.startsWith("@"))return null;this.parsingContext.emitError(new Error(`Invalid term IRI: ${n}`))}return this.dataFactory.namedNode(n)}intToString(e,t){return"number"==typeof e?Number.isFinite(e)?e%1!=0||t&&t.value===s.XSD_DOUBLE?e.toExponential(15).replace(/(\d)0*e\+?/,"$1E"):Number(e).toString():e>0?"INF":"-INF":e}stringValueToTerm(e,t,r,n,i){const a=s.getContextValueType(t,r);if(a)if("@id"===a){if(!i)return this.resourceToTerm(t,this.intToString(n,i))}else if("@vocab"===a){if(!i)return this.createVocabOrBaseTerm(t,this.intToString(n,i))}else i=this.dataFactory.namedNode(a);if(!i){const a=s.getContextValueLanguage(t,r),o=s.getContextValueDirection(t,r);return o&&this.parsingContext.rdfDirection?this.createLanguageDirectionLiteral(e,this.intToString(n,i),a,o):this.dataFactory.literal(this.intToString(n,i),a)}return this.dataFactory.literal(this.intToString(n,i),i)}createLanguageDirectionLiteral(e,t,r,n){if("i18n-datatype"===this.parsingContext.rdfDirection)return r||(r=""),this.dataFactory.literal(t,this.dataFactory.namedNode(`https://www.w3.org/ns/i18n#${r}_${n}`));{const i=this.dataFactory.blankNode(),a=this.getDefaultGraph();return this.parsingContext.emitQuad(e,this.dataFactory.quad(i,this.dataFactory.namedNode(s.RDF+"value"),this.dataFactory.literal(t),a)),r&&this.parsingContext.emitQuad(e,this.dataFactory.quad(i,this.dataFactory.namedNode(s.RDF+"language"),this.dataFactory.literal(r),a)),this.parsingContext.emitQuad(e,this.dataFactory.quad(i,this.dataFactory.namedNode(s.RDF+"direction"),this.dataFactory.literal(n),a)),i}}valueToJsonString(e){return o(e)}async unaliasKeyword(e,t,r,i,a){if(Number.isInteger(e))return e;if(!i){const e=this.parsingContext.unaliasedKeywordCacheStack[r];if(e)return e}if(!n.Util.isPotentialKeyword(e)){let r=(a=a||await this.parsingContext.getContext(t)).getContextRaw()[e];r&&"object"==typeof r&&(r=r["@id"]),n.Util.isValidKeyword(r)&&(e=r)}return i?e:this.parsingContext.unaliasedKeywordCacheStack[r]=e}async unaliasKeywordParent(e,t){return await this.unaliasKeyword(t>0&&e[t-1],e,t-1)}async unaliasKeywords(e,t,r,n){const i={};for(const a in e)i[await this.unaliasKeyword(a,t,r+1,!0,n)]=e[a];return i}async isLiteral(e,t){for(let r=t;r>=0;r--){if("@annotation"===await this.unaliasKeyword(e[r],e,r))return!1;if(this.parsingContext.literalStack[r]||this.parsingContext.jsonLiteralStack[r])return!0}return!1}async getDepthOffsetGraph(e,t){for(let r=e-1;r>0;r--)if("@graph"===await this.unaliasKeyword(t[r],t,r)){const n=(await a.EntryHandlerContainer.getContainerHandler(this.parsingContext,t,r)).containers;return a.EntryHandlerContainer.isComplexGraphContainer(n)?-1:e-r-1}return-1}validateReverseSubject(e){if("Literal"===e.termType)throw new n.ErrorCoded(`Found illegal literal in subject position: ${e.value}`,n.ERROR_CODES.INVALID_REVERSE_PROPERTY_VALUE)}getDefaultGraph(){return this.parsingContext.defaultGraph||this.dataFactory.defaultGraph()}async getGraphContainerValue(e,t){let r=this.getDefaultGraph();const{containers:n,depth:i}=await a.EntryHandlerContainer.getContainerHandler(this.parsingContext,e,t);if("@graph"in n){const t=a.EntryHandlerContainer.getContainerGraphIndex(n,i,e),o=this.parsingContext.graphContainerTermStack[i];if(r=o?o[t]:null,!r){let a=null;if("@id"in n){const t=await this.getContainerKey(e[i],e,i);null!==t&&(a=await this.resourceToTerm(await this.parsingContext.getContext(e),t))}a||(a=this.dataFactory.blankNode()),this.parsingContext.graphContainerTermStack[i]||(this.parsingContext.graphContainerTermStack[i]={}),r=this.parsingContext.graphContainerTermStack[i][t]=a}}return r}async getPropertiesDepth(e,t){let r=t;for(let n=t-1;n>0;n--)if("number"!=typeof e[n]){const t=await this.unaliasKeyword(e[n],e,n);if("@reverse"===t)return n;if("@nest"!==t)return r;r=n}return r}async getContainerKey(e,t,r){const n=await this.unaliasKeyword(e,t,r);return"@none"===n?null:n}validateReverseInEmbeddedNode(e,t,r){if(r&&t&&!this.parsingContext.rdfstarReverseInEmbedded)throw new n.ErrorCoded(`Illegal reverse property in embedded node in ${e}`,n.ERROR_CODES.INVALID_EMBEDDED_NODE)}emitQuadChecked(e,t,r,i,a,o,s){let c;if(o?(this.validateReverseSubject(i),c=this.dataFactory.quad(i,r,t,a)):c=this.dataFactory.quad(t,r,i,a),s){if("DefaultGraph"!==c.graph.termType&&(c=this.dataFactory.quad(c.subject,c.predicate,c.object)),this.parsingContext.idStack[e-1])throw new n.ErrorCoded("Illegal multiple properties in an embedded node",n.ERROR_CODES.INVALID_EMBEDDED_NODE);this.parsingContext.idStack[e-1]=[c]}else this.parsingContext.emitQuad(e,c);const u=this.parsingContext.annotationsBuffer[e];if(u){for(const t of u)this.emitAnnotation(e,c,t);delete this.parsingContext.annotationsBuffer[e]}}emitAnnotation(e,t,r){let n;r.reverse?(this.validateReverseSubject(r.object),n=this.dataFactory.quad(r.object,r.predicate,t)):n=this.dataFactory.quad(t,r.predicate,r.object),this.parsingContext.emitQuad(e,n);for(const t of r.nestedAnnotations)this.emitAnnotation(e,n,t)}}s.XSD="http://www.w3.org/2001/XMLSchema#",s.XSD_BOOLEAN=s.XSD+"boolean",s.XSD_INTEGER=s.XSD+"integer",s.XSD_DOUBLE=s.XSD+"double",s.RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#",t.Util=s},14079:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContainerHandlerIdentifier=void 0,t.ContainerHandlerIdentifier=class{canCombineWithGraph(){return!0}async handle(e,t,r,n,i,a){let o;if(t.emittedStack[a+1]&&t.idStack[a+1])o=t.idStack[a+1][0];else{const e=null!==await r.getContainerKey(n[a],n,a)?await r.resourceToTerm(await t.getContext(n),n[a]):r.dataFactory.blankNode();if(!e)return void(t.emittedStack[a]=!1);o=e,t.idStack[a+1]=[o]}let s=t.idStack[a];s||(s=t.idStack[a]=[]),s.some((e=>e.equals(o)))||s.push(o),await t.handlePendingContainerFlushBuffers()||(t.emittedStack[a]=!1)}}},43354:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContainerHandlerIndex=void 0;const n=r(27202),i=r(29997),a=r(22135);t.ContainerHandlerIndex=class{canCombineWithGraph(){return!0}async handle(e,t,r,o,s,c){if(!Array.isArray(s)){const u="@graph"in e,l=await t.getContext(o),d=o[c-1],p=a.Util.getContextValueIndex(l,d);if(p){if(n.Util.isPotentialKeyword(p))throw new n.ErrorCoded(`Keywords can not be used as @index value, got: ${p}`,n.ERROR_CODES.INVALID_TERM_DEFINITION);if("string"!=typeof p)throw new n.ErrorCoded(`@index values must be strings, got: ${p}`,n.ERROR_CODES.INVALID_TERM_DEFINITION);if("object"!=typeof s){if("@id"!==a.Util.getContextValueType(l,d))throw new n.ErrorCoded(`Property-based index containers require nodes as values or strings with @type: @id, but got: ${s}`,n.ERROR_CODES.INVALID_VALUE_OBJECT);const e=r.resourceToTerm(l,s);e&&(t.idStack[c+1]=[e])}const e=r.createVocabOrBaseTerm(l,p);if(e){const n=await r.valueToTerm(l,p,await r.getContainerKey(o[c],o,c),c,o);if(u){const i=await r.getGraphContainerValue(o,c+1);for(const a of n)t.emitQuad(c,r.dataFactory.quad(i,e,a,r.getDefaultGraph()))}else for(const a of n)await i.EntryHandlerPredicate.handlePredicateObject(t,r,o,c+1,e,a,!1,!1,!1)}}const h=u?2:1;await t.newOnValueJob(o.slice(0,o.length-h),s,c-h,!0),await t.handlePendingContainerFlushBuffers()}t.emittedStack[c]=!1}}},68526:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContainerHandlerLanguage=void 0;const n=r(27202);t.ContainerHandlerLanguage=class{canCombineWithGraph(){return!1}async handle(e,t,r,i,a,o){const s=await r.getContainerKey(i[o],i,o);if(Array.isArray(a))a=a.map((e=>({"@value":e,"@language":s})));else{if("string"!=typeof a)throw new n.ErrorCoded(`Got invalid language map value, got '${JSON.stringify(a)}', but expected string`,n.ERROR_CODES.INVALID_LANGUAGE_MAP_VALUE);a={"@value":a,"@language":s}}await t.newOnValueJob(i.slice(0,i.length-1),a,o-1,!0),t.emittedStack[o]=!1}}},84936:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContainerHandlerType=void 0;const n=r(29997),i=r(22135);t.ContainerHandlerType=class{canCombineWithGraph(){return!1}async handle(e,t,r,a,o,s){if(!Array.isArray(o)){if("string"==typeof o){const e=await t.getContext(a),n="@vocab"===i.Util.getContextValueType(e,a[s-1])?await r.createVocabOrBaseTerm(e,o):await r.resourceToTerm(e,o);if(n){const e={"@id":"NamedNode"===n.termType?n.value:o};await t.newOnValueJob(a.slice(0,a.length-1),e,s-1,!0),t.idStack[s+1]=[n]}}else{const e=!!t.idStack[s+1];e||delete t.idStack[s],await t.newOnValueJob(a.slice(0,a.length-1),o,s-1,!0),e||(t.idStack[s+1]=t.idStack[s])}const e=await r.getContainerKey(a[s],a,s),c=null!==e?r.createVocabOrBaseTerm(await t.getContext(a),e):null;c&&await n.EntryHandlerPredicate.handlePredicateObject(t,r,a,s+1,r.rdfType,c,!1,!1,!1),await t.handlePendingContainerFlushBuffers()}t.emittedStack[s]=!1}}},11272:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerArrayValue=void 0;const n=r(22135),i=r(27202);t.EntryHandlerArrayValue=class{isPropertyHandler(){return!1}isStackProcessor(){return!0}async validate(e,t,r,n,i){return this.test(e,t,null,r,n)}async test(e,t,r,n,i){return"number"==typeof n[i]}async handle(e,t,r,i,a,o){let s=await t.unaliasKeywordParent(i,o);if("@list"===s){let r=null,n=0;for(let e=o-2;e>0;e--){const t=i[e];if("string"==typeof t||"number"==typeof t){n=e,r=t;break}}if(null!==r){const s=await t.valueToTerm(await e.getContext(i),r,a,o,i);for(const r of s)await this.handleListElement(e,t,r,a,o,i.slice(0,n),n);0===s.length&&await this.handleListElement(e,t,null,a,o,i.slice(0,n),n)}}else if("@set"===s)await e.newOnValueJob(i.slice(0,-2),a,o-2,!1);else if(void 0!==s&&"@type"!==s){for(let e=o-1;e>0;e--)if("number"!=typeof i[e]){s=await t.unaliasKeyword(i[e],i,e);break}const r=await e.getContext(i.slice(0,-1));if("@list"in n.Util.getContextValueContainer(r,s)){e.emittedStack[o+1]=!0;const r=await t.valueToTerm(await e.getContext(i),s,a,o,i);for(const n of r)await this.handleListElement(e,t,n,a,o,i.slice(0,-1),o-1);0===r.length&&await this.handleListElement(e,t,null,a,o,i.slice(0,-1),o-1)}else e.shiftStack(o,1),await e.newOnValueJob(i.slice(0,-1),a,o-1,!1),e.contextTree.removeContext(i.slice(0,-1))}}async handleListElement(e,t,r,n,a,o,s){let c=e.listPointerStack[a];if(null!==n&&null!==(await t.unaliasKeywords(n,o,a))["@value"]){if(c&&c.value){const r=t.dataFactory.blankNode();e.emitQuad(a,t.dataFactory.quad(c.value,t.rdfRest,r,t.getDefaultGraph())),c.value=r}else{const e=t.dataFactory.blankNode();c={value:e,listRootDepth:s,listId:e}}r&&e.emitQuad(a,t.dataFactory.quad(c.value,t.rdfFirst,r,t.getDefaultGraph()))}else c||(c={listRootDepth:s,listId:t.rdfNil});e.listPointerStack[a]=c,e.rdfstar&&e.annotationsBuffer[a]&&e.emitError(new i.ErrorCoded("Found an illegal annotation inside a list",i.ERROR_CODES.INVALID_ANNOTATION))}}},45947:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerContainer=void 0;const n=r(14079),i=r(43354),a=r(68526),o=r(84936),s=r(22135);class c{static isSimpleGraphContainer(e){return"@graph"in e&&("@set"in e&&2===Object.keys(e).length||1===Object.keys(e).length)}static isComplexGraphContainer(e){return"@graph"in e&&("@set"in e&&Object.keys(e).length>2||!("@set"in e)&&Object.keys(e).length>1)}static getContainerGraphIndex(e,t,r){let n=c.isSimpleGraphContainer(e),i="";for(let e=t;e=0;e--)if("number"!=typeof t[e]){const r=s.Util.getContextValue(a,"@container",t[e],!1);if(r&&c.isSimpleGraphContainer(r))return{containers:r,depth:e+1,fallback:!1};const o=s.Util.getContextValue(a,"@container",t[e-1],!1);if(o){const t="@graph"in o;for(const r in c.CONTAINER_HANDLERS)if(o[r])return t?c.CONTAINER_HANDLERS[r].canCombineWithGraph()?{containers:o,depth:e,fallback:!1}:n:i?n:{containers:o,depth:e,fallback:!1};return n}if(i)return n;i=!0}return n}static async isBufferableContainerHandler(e,t,r){const n=await c.getContainerHandler(e,t,r);return!n.fallback&&!("@graph"in n.containers)}isPropertyHandler(){return!1}isStackProcessor(){return!0}async validate(e,t,r,n,i){return!!await this.test(e,t,null,r,n)}async test(e,t,r,n,i){const a=s.Util.getContextValueContainer(await e.getContext(n,2),n[i-1]);for(const e in c.CONTAINER_HANDLERS)if(a[e])return{containers:a,handler:c.CONTAINER_HANDLERS[e]};return null}async handle(e,t,r,n,i,a,o){return o.handler.handle(o.containers,e,t,n,i,a)}}c.CONTAINER_HANDLERS={"@id":new n.ContainerHandlerIdentifier,"@index":new i.ContainerHandlerIndex,"@language":new a.ContainerHandlerLanguage,"@type":new o.ContainerHandlerType},t.EntryHandlerContainer=c},62885:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerInvalidFallback=void 0,t.EntryHandlerInvalidFallback=class{isPropertyHandler(){return!1}isStackProcessor(){return!0}async validate(e,t,r,n,i){return!1}async test(e,t,r,n,i){return!0}async handle(e,t,r,n,i,a){e.emittedStack[a]=!1}}},29997:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerPredicate=void 0;const n=r(27202),i=r(22135);class a{static async handlePredicateObject(e,t,r,i,a,o,s,c,u){const l=await t.getPropertiesDepth(r,i),d=await t.getDepthOffsetGraph(i,r),p=i-d,h=e.idStack[l];if(h&&!u)for(const n of h)if(d>=0){const r=e.idStack[p-1];if(r)for(const e of r)t.emitQuadChecked(i,n,a,o,e,s,c);else s?(t.validateReverseSubject(o),e.getUnidentifiedGraphBufferSafe(p-1).push({subject:o,predicate:a,object:n,isEmbedded:c})):e.getUnidentifiedGraphBufferSafe(p-1).push({subject:n,predicate:a,object:o,isEmbedded:c})}else{const e=await t.getGraphContainerValue(r,l);t.emitQuadChecked(i,n,a,o,e,s,c)}else if(s&&t.validateReverseSubject(o),u){if(e.rdfstar){e.idStack[i]&&e.emitError(new n.ErrorCoded(`Found an illegal @id inside an annotation: ${e.idStack[i][0].value}`,n.ERROR_CODES.INVALID_ANNOTATION));for(let a=0;a=0;e--){const t=c[e];t.depth>l&&(u.nestedAnnotations.push(t),c.splice(e,1))}}}else e.getUnidentifiedValueBufferSafe(l).push({predicate:a,object:o,reverse:s,isEmbedded:c})}isPropertyHandler(){return!0}isStackProcessor(){return!0}async validate(e,t,r,n,a){const o=r[n];if(o){const a=await e.getContext(r);if(!e.jsonLiteralStack[n]&&await t.predicateToTerm(a,r[n]))return"@json"===i.Util.getContextValueType(a,o)&&(e.jsonLiteralStack[n+1]=!0),!0}return!1}async test(e,t,r,n,i){return n[i]}async handle(e,t,r,o,s,c,u){const l=o[c],d=await e.getContext(o),p=await t.predicateToTerm(d,r);if(p){const u=await t.valueToTerm(d,r,s,c,o);if(u.length)for(let h of u){let u=await t.unaliasKeywordParent(o,c);const f=i.Util.isPropertyReverse(d,l,u);let y=0;for(;"@reverse"===u||"number"==typeof u;)"number"==typeof u?y++:c--,u=await t.unaliasKeywordParent(o,c-y);const g=i.Util.isPropertyInEmbeddedNode(u);t.validateReverseInEmbeddedNode(r,f,g);const m=i.Util.isPropertyInAnnotationObject(u);if(s){const a="@list"in i.Util.getContextValueContainer(d,r);if(a||s["@list"]){if((a&&!Array.isArray(s)&&!s["@list"]||s["@list"]&&!Array.isArray(s["@list"]))&&h!==t.rdfNil){const r=t.dataFactory.blankNode();e.emitQuad(c,t.dataFactory.quad(r,t.rdfRest,t.rdfNil,t.getDefaultGraph())),e.emitQuad(c,t.dataFactory.quad(r,t.rdfFirst,h,t.getDefaultGraph())),h=r}if(f&&!e.allowSubjectList)throw new n.ErrorCoded(`Found illegal list value in subject position at ${r}`,n.ERROR_CODES.INVALID_REVERSE_PROPERTY_VALUE)}}await a.handlePredicateObject(e,t,o,c,p,h,f,g,m)}}}}t.EntryHandlerPredicate=a},49203:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeyword=void 0,t.EntryHandlerKeyword=class{constructor(e){this.keyword=e}isPropertyHandler(){return!1}isStackProcessor(){return!0}async validate(e,t,r,n,i){return!1}async test(e,t,r,n,i){return r===this.keyword}}},6042:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordAnnotation=void 0;const n=r(49203),i=r(27202);class a extends n.EntryHandlerKeyword{constructor(){super("@annotation")}async handle(e,t,r,n,a,o){("string"==typeof a||"object"==typeof a&&a["@value"])&&e.emitError(new i.ErrorCoded(`Found illegal annotation value: ${JSON.stringify(a)}`,i.ERROR_CODES.INVALID_ANNOTATION))}}t.EntryHandlerKeywordAnnotation=a},66700:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordContext=void 0;const n=r(27202),i=r(49203);class a extends i.EntryHandlerKeyword{constructor(){super("@context")}isStackProcessor(){return!1}async handle(e,t,r,i,a,o){e.streamingProfile&&(e.processingStack[o]||e.processingType[o]||void 0!==e.idStack[o])&&e.emitError(new n.ErrorCoded("Found an out-of-order context, while streaming is enabled.(disable `streamingProfile`)",n.ERROR_CODES.INVALID_STREAMING_KEY_ORDER));const s=e.getContext(i),c=e.parseContext(a,(await s).getContextRaw());e.contextTree.setContext(i.slice(0,-1),c),e.emitContext(a),await e.validateContext(await c)}}t.EntryHandlerKeywordContext=a},37071:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordGraph=void 0;const n=r(49203);class i extends n.EntryHandlerKeyword{constructor(){super("@graph")}async handle(e,t,r,n,i,a){e.graphStack[a+1]=!0}}t.EntryHandlerKeywordGraph=i},48978:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordId=void 0;const n=r(27202),i=r(49203);class a extends i.EntryHandlerKeyword{constructor(){super("@id")}isStackProcessor(){return!1}async handle(e,t,r,i,a,o){if("string"!=typeof a){if(e.rdfstar&&"object"==typeof a){const t=Object.keys(a);1===t.length&&"@id"===t[0]&&e.emitError(new n.ErrorCoded(`Invalid embedded node without property with @id ${a["@id"]}`,n.ERROR_CODES.INVALID_EMBEDDED_NODE))}else e.emitError(new n.ErrorCoded(`Found illegal @id '${a}'`,n.ERROR_CODES.INVALID_ID_VALUE));return}const s=await t.getPropertiesDepth(i,o);if(void 0!==e.idStack[s]&&(e.idStack[s][0].listHead?e.emitError(new n.ErrorCoded(`Found illegal neighbouring entries next to @list for key: '${i[o-1]}'`,n.ERROR_CODES.INVALID_SET_OR_LIST_OBJECT)):e.emitError(new n.ErrorCoded(`Found duplicate @ids '${e.idStack[s][0].value}' and '${a}'`,n.ERROR_CODES.COLLIDING_KEYWORDS))),e.rdfstar&&e.annotationsBuffer[o])for(const t of e.annotationsBuffer[o])t.depth===o&&e.emitError(new n.ErrorCoded(`Found an illegal @id inside an annotation: ${a}`,n.ERROR_CODES.INVALID_ANNOTATION));e.idStack[s]=t.nullableTermToArray(await t.resourceToTerm(await e.getContext(i),a))}}t.EntryHandlerKeywordId=a},30643:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordIncluded=void 0;const n=r(27202),i=r(49203);class a extends i.EntryHandlerKeyword{constructor(){super("@included")}async handle(e,t,r,i,a,o){"object"!=typeof a&&e.emitError(new n.ErrorCoded(`Found illegal @included '${a}'`,n.ERROR_CODES.INVALID_INCLUDED_VALUE));const s=await t.unaliasKeywords(a,i,o,await e.getContext(i));"@value"in s&&e.emitError(new n.ErrorCoded(`Found an illegal @included @value node '${JSON.stringify(a)}'`,n.ERROR_CODES.INVALID_INCLUDED_VALUE)),"@list"in s&&e.emitError(new n.ErrorCoded(`Found an illegal @included @list node '${JSON.stringify(a)}'`,n.ERROR_CODES.INVALID_INCLUDED_VALUE)),e.emittedStack[o]=!1}}t.EntryHandlerKeywordIncluded=a},58865:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordNest=void 0;const n=r(27202),i=r(49203);class a extends i.EntryHandlerKeyword{constructor(){super("@nest")}async handle(e,t,r,i,a,o){"object"!=typeof a&&e.emitError(new n.ErrorCoded(`Found invalid @nest entry for '${r}': '${a}'`,n.ERROR_CODES.INVALID_NEST_VALUE)),"@value"in await t.unaliasKeywords(a,i,o,await e.getContext(i))&&e.emitError(new n.ErrorCoded(`Found an invalid @value node for '${r}'`,n.ERROR_CODES.INVALID_NEST_VALUE)),e.emittedStack[o]=!1}}t.EntryHandlerKeywordNest=a},23787:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordType=void 0;const n=r(27202),i=r(22135),a=r(29997),o=r(49203);class s extends o.EntryHandlerKeyword{constructor(){super("@type")}isStackProcessor(){return!1}async handle(e,t,r,o,s,c){const u=o[c],l=await e.getContext(o),d=t.rdfType,p=await t.unaliasKeywordParent(o,c),h=i.Util.isPropertyReverse(l,u,p),f=i.Util.isPropertyInEmbeddedNode(p);t.validateReverseInEmbeddedNode(r,h,f);const y=i.Util.isPropertyInAnnotationObject(p),g=Array.isArray(s)?s:[s];for(const r of g){"string"!=typeof r&&e.emitError(new n.ErrorCoded(`Found illegal @type '${r}'`,n.ERROR_CODES.INVALID_TYPE_VALUE));const i=t.createVocabOrBaseTerm(l,r);i&&await a.EntryHandlerPredicate.handlePredicateObject(e,t,o,c,d,i,h,f,y)}let m=Promise.resolve(l),b=!1;for(const t of g.sort()){const r=i.Util.getContextValue(l,"@context",t,null);r&&(b=!0,m=m.then((t=>e.parseContext(r,t.getContextRaw()))))}!e.streamingProfile||!b&&e.streamingProfileAllowOutOfOrderPlainType||!e.processingStack[c]&&!e.idStack[c]||e.emitError(new n.ErrorCoded("Found an out-of-order type-scoped context, while streaming is enabled.(disable `streamingProfile`)",n.ERROR_CODES.INVALID_STREAMING_KEY_ORDER)),b&&(m=m.then((e=>!0!==e.getContextRaw()["@propagate"]?new n.JsonLdContextNormalized(Object.assign(Object.assign({},e.getContextRaw()),{"@propagate":!1,"@__propagateFallback":l.getContextRaw()})):e)),e.contextTree.setContext(o.slice(0,o.length-1),m)),e.processingType[c]=!0}}t.EntryHandlerKeywordType=s},30635:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordUnknownFallback=void 0;const n=r(27202);class i{isPropertyHandler(){return!1}isStackProcessor(){return!0}async validate(e,t,r,i,a){const o=await t.unaliasKeyword(r[i],r,i);return!(!n.Util.isPotentialKeyword(o)||!a&&"@list"===o)}async test(e,t,r,i,a){return n.Util.isPotentialKeyword(r)}async handle(e,t,r,a,o,s){const c=i.VALID_KEYWORDS_TYPES[r];void 0!==c?c&&typeof o!==c.type&&e.emitError(new n.ErrorCoded(`Invalid value type for '${r}' with value '${o}'`,c.errorCode)):e.strictValues&&e.emitError(new Error(`Unknown keyword '${r}' with value '${o}'`)),e.emittedStack[s]=!1}}i.VALID_KEYWORDS_TYPES={"@index":{type:"string",errorCode:n.ERROR_CODES.INVALID_INDEX_VALUE},"@list":null,"@reverse":{type:"object",errorCode:n.ERROR_CODES.INVALID_REVERSE_VALUE},"@set":null,"@value":null},t.EntryHandlerKeywordUnknownFallback=i},94382:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntryHandlerKeywordValue=void 0;const n=r(49203);class i extends n.EntryHandlerKeyword{constructor(){super("@value")}async validate(e,t,r,n,i){const a=r[n];return a&&!e.literalStack[n]&&await this.test(e,t,a,r,n)&&(e.literalStack[n]=!0),super.validate(e,t,r,n,i)}async test(e,t,r,n,i){return"@value"===await t.unaliasKeyword(n[i],n.slice(0,n.length-1),i-1,!0)}async handle(e,t,r,n,i,a){e.literalStack[a]=!0,delete e.unidentifiedValuesBuffer[a],delete e.unidentifiedGraphsBuffer[a],e.emittedStack[a]=!1}}t.EntryHandlerKeywordValue=i},33619:e=>{"use strict";e.exports=function e(t){return null===t||"object"!=typeof t||null!=t.toJSON?JSON.stringify(t):Array.isArray(t)?"["+t.reduce(((t,r,n)=>t+(0===n?"":",")+e(void 0===r||"symbol"==typeof r?null:r)),"")+"]":"{"+Object.keys(t).sort().reduce(((r,n,i)=>void 0===t[n]||"symbol"==typeof t[n]?r:r+(0===r.length?"":",")+e(n)+":"+e(t[n])),"")+"}"}},85832:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(45920),t),i(r(7814),t)},45920:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JsonLdSerializer=void 0;const n=r(27202),i=r(85071),a=r(7814),o=r(58521);class s extends o.Transform{constructor(e={}){super({objectMode:!0}),this.indentation=0,this.options=e,this.options.baseIRI&&!this.options.context&&(this.options.context={"@base":this.options.baseIRI}),this.options.context?(this.originalContext=this.options.context,this.context=(new n.ContextParser).parse(this.options.context,{baseIRI:this.options.baseIRI})):this.context=Promise.resolve(new n.JsonLdContextNormalized({}))}import(e){const t=new o.PassThrough({objectMode:!0});e.on("error",(e=>r.emit("error",e))),e.on("data",(e=>t.push(e))),e.on("end",(()=>t.push(null)));const r=t.pipe(new s(this.options));return r}_transform(e,t,r){this.context.then((t=>{this.transformQuad(e,t),r()})).catch(r)}async list(e){const t=await this.context;return{"@list":e.map((e=>a.Util.termToValue(e,t,this.options)))}}_flush(e){return this.opened||this.pushDocumentStart(),this.lastPredicate&&this.endPredicate(),this.lastSubject&&this.endSubject(),this.lastGraph&&"DefaultGraph"!==this.lastGraph.termType&&this.endGraph(),this.endDocument(),e(null,null)}transformQuad(e,t){this.opened||this.pushDocumentStart();const r=this.lastGraph&&"DefaultGraph"!==this.lastGraph.termType&&this.lastGraph.equals(e.subject);if(!(r||this.lastGraph&&e.graph.equals(this.lastGraph))){let r="DefaultGraph"!==e.graph.termType&&this.lastSubject&&this.lastSubject.equals(e.graph);this.lastGraph&&("DefaultGraph"!==this.lastGraph.termType?(this.endPredicate(),this.endSubject(),this.endGraph(!0),r=!1):r?(this.endPredicate(!0),this.lastSubject=null):(this.endPredicate(),this.endSubject(!0))),"DefaultGraph"!==e.graph.termType&&(r||this.pushId(e.graph,!0,t),this.pushSeparator(this.options.space?i.SeparatorType.GRAPH_FIELD_NONCOMPACT:i.SeparatorType.GRAPH_FIELD_COMPACT),this.indentation++),this.lastGraph=e.graph}this.lastSubject&&e.subject.equals(this.lastSubject)||(r?(this.endPredicate(),this.endSubject(),this.indentation--,this.pushSeparator(i.SeparatorType.ARRAY_END_COMMA),this.lastGraph=e.graph):(this.lastSubject&&(this.endPredicate(),this.endSubject(!0)),this.pushId(e.subject,!0,t)),this.lastSubject=e.subject),this.lastPredicate&&e.predicate.equals(this.lastPredicate)||(this.lastPredicate&&this.endPredicate(!0),this.pushPredicate(e.predicate,t)),this.pushObject(e.object,t)}pushDocumentStart(){this.opened=!0,this.originalContext&&!this.options.excludeContext?(this.pushSeparator(i.SeparatorType.OBJECT_START),this.indentation++,this.pushSeparator(i.SeparatorType.CONTEXT_FIELD),this.pushIndented(JSON.stringify(this.originalContext,null,this.options.space)+","),this.pushSeparator(this.options.space?i.SeparatorType.GRAPH_FIELD_NONCOMPACT:i.SeparatorType.GRAPH_FIELD_COMPACT),this.indentation++):(this.pushSeparator(i.SeparatorType.ARRAY_START),this.indentation++)}pushId(e,t,r){if("Quad"===e.termType)this.pushNestedQuad(e,!0,r);else{const n="BlankNode"===e.termType?"_:"+e.value:r.compactIri(e.value,!1);t?this.pushSeparator(i.SeparatorType.OBJECT_START):(this.push(i.SeparatorType.OBJECT_START.label),this.options.space&&this.push("\n")),this.indentation++,this.pushIndented(this.options.space?`"@id": "${n}",`:`"@id":"${n}",`)}}pushPredicate(e,t){let r=e.value;this.options.useRdfType||r!==a.Util.RDF_TYPE||(r="@type",this.objectOptions=Object.assign(Object.assign({},this.options),{compactIds:!0,vocab:!0}));const n=t.compactIri(r,!0);this.pushIndented(this.options.space?`"${n}": [`:`"${n}":[`),this.indentation++,this.lastPredicate=e}pushObject(e,t){if(this.hadObjectForPredicate?this.pushSeparator(i.SeparatorType.COMMA):this.hadObjectForPredicate=!0,"Quad"===e.termType){const r=this.lastSubject,n=this.lastPredicate;return this.hadObjectForPredicate=!1,this.pushNestedQuad(e,!1,t),this.endSubject(!1),this.hadObjectForPredicate=!0,this.lastPredicate=n,void(this.lastSubject=r)}let r;try{r=e["@list"]?e:a.Util.termToValue(e,t,this.objectOptions||this.options)}catch(e){return this.emit("error",e)}this.pushIndented(JSON.stringify(r,null,this.options.space))}pushNestedQuad(e,t,r){this.pushSeparator(i.SeparatorType.OBJECT_START),this.indentation++,this.pushIndented(this.options.space?'"@id": ':'"@id":',!1),"DefaultGraph"!==e.graph.termType&&this.emit("error",new Error(`Found a nested quad with the non-default graph: ${e.graph.value}`)),this.pushId(e.subject,!1,r),this.pushPredicate(e.predicate,r),this.pushObject(e.object,r),this.endPredicate(!1),this.endSubject(t)}endDocument(){this.opened=!1,this.originalContext&&!this.options.excludeContext?(this.indentation--,this.pushSeparator(i.SeparatorType.ARRAY_END),this.indentation--,this.pushSeparator(i.SeparatorType.OBJECT_END)):(this.indentation--,this.pushSeparator(i.SeparatorType.ARRAY_END))}endPredicate(e){this.indentation--,this.pushSeparator(e?i.SeparatorType.ARRAY_END_COMMA:i.SeparatorType.ARRAY_END),this.hadObjectForPredicate=!1,this.objectOptions=null,this.lastPredicate=null}endSubject(e){this.indentation--,this.pushSeparator(e?i.SeparatorType.OBJECT_END_COMMA:i.SeparatorType.OBJECT_END),this.lastSubject=null}endGraph(e){this.indentation--,this.pushSeparator(i.SeparatorType.ARRAY_END),this.indentation--,this.pushSeparator(e?i.SeparatorType.OBJECT_END_COMMA:i.SeparatorType.OBJECT_END),this.lastGraph=null}pushSeparator(e){this.pushIndented(e.label)}pushIndented(e,t=!0){const r=this.getIndentPrefix(),n=e.split("\n").map((e=>r+e)).join("\n");this.push(n),this.options.space&&t&&this.push("\n")}getIndentPrefix(){return this.options.space?this.options.space.repeat(this.indentation):""}}t.JsonLdSerializer=s},85071:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SeparatorType=void 0;class r{constructor(e){this.label=e}}t.SeparatorType=r,r.COMMA=new r(","),r.OBJECT_START=new r("{"),r.OBJECT_END=new r("}"),r.OBJECT_END_COMMA=new r("},"),r.ARRAY_START=new r("["),r.ARRAY_END=new r("]"),r.ARRAY_END_COMMA=new r("],"),r.GRAPH_FIELD_NONCOMPACT=new r('"@graph": ['),r.GRAPH_FIELD_COMPACT=new r('"@graph":['),r.CONTEXT_FIELD=new r('"@context":')},7814:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;const n=r(27202);class i{static termToValue(e,t,r={compactIds:!1,useNativeTypes:!1}){switch(e.termType){case"NamedNode":const a=t.compactIri(e.value,r.vocab);return r.compactIds?a:{"@id":a};case"DefaultGraph":return r.compactIds?e.value:{"@id":e.value};case"BlankNode":const o=`_:${e.value}`;return r.compactIds?o:{"@id":o};case"Literal":if(e.datatype.value===i.RDF_JSON){let t;try{t=JSON.parse(e.value)}catch(e){throw new n.ErrorCoded("Invalid JSON literal: "+e.message,n.ERROR_CODES.INVALID_JSON_LITERAL)}return{"@value":t,"@type":"@json"}}if("i18n-datatype"===r.rdfDirection&&e.datatype.value.startsWith(i.I18N)){const[t,r]=e.datatype.value.substr(i.I18N.length,e.datatype.value.length).split("_");return Object.assign(Object.assign({"@value":e.value},t?{"@language":t}:{}),r?{"@direction":r}:{})}const s=e.datatype.value===i.XSD_STRING,c={"@value":!s&&r.useNativeTypes?i.stringToNativeType(e.value,e.datatype.value):e.value};return e.language?Object.assign(Object.assign({},c),{"@language":e.language}):s||"string"!=typeof c["@value"]?c:Object.assign(Object.assign({},c),{"@type":e.datatype.value})}}static stringToNativeType(e,t){if(t.startsWith(i.XSD))switch(t.substr(i.XSD.length)){case"boolean":if("true"===e)return!0;if("false"===e)return!1;throw new Error(`Invalid xsd:boolean value '${e}'`);case"integer":case"number":case"int":case"byte":case"long":const t=parseInt(e,10);if(isNaN(t))throw new Error(`Invalid xsd:integer value '${e}'`);return t;case"float":case"double":const r=parseFloat(e);if(isNaN(r))throw new Error(`Invalid xsd:float value '${e}'`);return r}return e}}t.Util=i,i.XSD="http://www.w3.org/2001/XMLSchema#",i.XSD_STRING=i.XSD+"string",i.RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#",i.RDF_TYPE=i.RDF+"type",i.RDF_JSON=i.RDF+"JSON",i.I18N="https://www.w3.org/ns/i18n#"},5558:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(64295),t),i(r(49999),t),i(r(91094),t),i(r(86625),t),i(r(38303),t),i(r(30573),t),i(r(12104),t),i(r(35573),t),i(r(60179),t),i(r(34260),t)},30573:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},12104:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},35573:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},60179:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MicrodataRdfParser=void 0;const n=r(15482),i=r(58521),a=r(49999),o=r(91094),s=r(86625),c=r(38303),u=r(34260),l=r(94066);class d extends i.Transform{constructor(e){super({readableObjectMode:!0}),this.itemScopeStack=[],this.textBufferStack=[],this.isEmittingReferences=!1,this.pendingItemRefsDomain={},this.pendingItemRefsRangeFinalized={},this.pendingItemRefsRangeCollecting={},e=e||{},this.options=e,this.util=new u.Util(e.dataFactory,e.baseIRI),this.defaultGraph=e.defaultGraph||this.util.dataFactory.defaultGraph(),this.htmlParseListener=e.htmlParseListener,this.vocabRegistry=e.vocabRegistry||l,this.parser=this.initializeParser(!!e.xmlMode)}import(e){const t=new i.PassThrough({readableObjectMode:!0});e.on("error",(e=>r.emit("error",e))),e.on("data",(e=>t.push(e))),e.on("end",(()=>t.push(null)));const r=t.pipe(new d(this.options));return r}_transform(e,t,r){this.parser.write(e.toString()),r()}_flush(e){this.parser.end(),e()}getItemScope(e){let t=this.itemScopeStack.length-(e?2:1);for(;t>0&&!this.itemScopeStack[t];)t--;return this.itemScopeStack[t]}getDepth(){return this.itemScopeStack.length}onTagOpen(e,t){if(!this.isEmittingReferences){if("id"in t){const e=t.id;this.pendingItemRefsRangeCollecting[e]={events:[],counter:0,ids:[]}}for(const r of Object.values(this.pendingItemRefsRangeCollecting))r.counter++,r.events.push({type:"open",name:e,attributes:t})}let r;if(this.textBufferStack.push(void 0),"itemscope"in t){let e;if(this.emittingReferencesItemScopeIdGenerator)e=this.emittingReferencesItemScopeIdGenerator();else{e="itemid"in t&&this.util.createSubject(t.itemid)||this.util.dataFactory.blankNode();for(const t of Object.values(this.pendingItemRefsRangeCollecting))t.ids.push(e)}r={subject:e},this.isEmittingReferences&&(r.blockEmission=!0);const n=this.getItemScope();n&&n.vocab&&(r.vocab=n.vocab),this.itemScopeStack.push(r)}else r=this.getItemScope(),this.itemScopeStack.push(void 0);if(r){if("itemtype"in t)for(const e of this.util.createVocabIris(t.itemtype,r,!1))r.vocab||(r.vocab=this.util.deriveVocab(e.value,this.vocabRegistry)),r.blockEmission||this.emitTriple(r.subject,this.util.dataFactory.namedNode(`${u.Util.RDF}type`),e);if("lang"in t&&(r.language=t.lang),"xml:lang"in t&&(r.language=t["xml:lang"]),"itemscope"in t&&!this.isEmittingReferences&&"itemref"in t)for(const e of t.itemref.split(/\s+/u))e in this.pendingItemRefsDomain||(this.pendingItemRefsDomain[e]=[]),this.pendingItemRefsDomain[e].push(r),this.tryToEmitReferences(e,r)}"itemprop"in t&&this.handleItemProperties(t.itemprop,!1,r,e,t),"itemprop-reverse"in t&&this.handleItemProperties(t["itemprop-reverse"],!0,r,e,t)}onText(e){if(!this.isEmittingReferences)for(const t of Object.values(this.pendingItemRefsRangeCollecting))t.events.push({type:"text",data:e});for(const t of this.textBufferStack)t&&t.push(e)}onTagClose(){if(!this.isEmittingReferences)for(const[e,t]of Object.entries(this.pendingItemRefsRangeCollecting))t.counter--,t.events.push({type:"close"}),0===t.counter&&(this.pendingItemRefsRangeFinalized[e]=t,delete this.pendingItemRefsRangeCollecting[e],this.tryToEmitReferences(e));const e=this.getItemScope(!0);if(e){const t=this.getDepth();if(e.predicates&&t in e.predicates)for(const[r,n]of Object.entries(e.predicates[t])){const i=this.util.createLiteral(this.textBufferStack[t].join(""),e);this.emitPredicateTriples(e,n,i,"reverse"===r),delete e.predicates[t][r]}}this.itemScopeStack.pop(),this.textBufferStack.pop()}onEnd(){}initializeParser(e){return new n.Parser({onclosetag:()=>{try{this.onTagClose(),this.htmlParseListener&&this.htmlParseListener.onTagClose()}catch(e){this.emit("error",e)}},onend:()=>{try{this.onEnd(),this.htmlParseListener&&this.htmlParseListener.onEnd()}catch(e){this.emit("error",e)}},onopentag:(e,t)=>{try{this.onTagOpen(e,t),this.htmlParseListener&&this.htmlParseListener.onTagOpen(e,t)}catch(e){this.emit("error",e)}},ontext:e=>{try{this.onText(e),this.htmlParseListener&&this.htmlParseListener.onText(e)}catch(e){this.emit("error",e)}}},{decodeEntities:!0,recognizeSelfClosing:!0,xmlMode:e})}handleItemProperties(e,t,r,n,i){const a=this.getItemScope(!0);if(a){const o=this.getDepth(),s=this.util.createVocabIris(e,a,!0);a.predicates||(a.predicates={}),a.predicates[o]||(a.predicates[o]={});const c=t?"reverse":"forward";a.predicates[o][c]=s;for(const t of this.util.getVocabularyExpansionType(e,a,this.vocabRegistry))s.push(t);if(r&&"itemscope"in i)this.emitPredicateTriples(a,s,r.subject,t),delete a.predicates[o][c];else for(const e of d.ITEM_PROPERTY_HANDLERS)if(e.canHandle(n,i)){const r=e.getObject(i,this.util,a);this.emitPredicateTriples(a,s,r,t),delete a.predicates[o][c]}a.predicates[o][c]&&(this.textBufferStack[o]=[])}}emitPredicateTriples(e,t,r,n){if(!e.blockEmission)for(const i of t)n?"Literal"!==r.termType&&this.emitTriple(r,i,e.subject):this.emitTriple(e.subject,i,r)}emitTriple(e,t,r){this.push(this.util.dataFactory.quad(e,t,r,this.defaultGraph))}tryToEmitReferences(e,t){const r=this.pendingItemRefsRangeFinalized[e];if(r){let n;if(t){n=[t];const r=this.pendingItemRefsDomain[e].indexOf(t);this.pendingItemRefsDomain[e].splice(r,1)}else n=this.pendingItemRefsDomain[e],delete this.pendingItemRefsDomain[e];if(n){const e=this.itemScopeStack,t=this.textBufferStack;this.isEmittingReferences=!0;for(const e of n){this.itemScopeStack=[e],this.textBufferStack=[void 0];const t=[...r.ids];this.emittingReferencesItemScopeIdGenerator=()=>t.shift();for(const e of r.events)switch(e.type){case"open":this.onTagOpen(e.name,e.attributes);break;case"text":this.onText(e.data);break;case"close":this.onTagClose()}}this.emittingReferencesItemScopeIdGenerator=void 0,this.itemScopeStack=e,this.textBufferStack=t,this.isEmittingReferences=!1}}}}t.MicrodataRdfParser=d,d.ITEM_PROPERTY_HANDLERS=[new a.ItemPropertyHandlerContent,new c.ItemPropertyHandlerUrl("a","href"),new c.ItemPropertyHandlerUrl("area","href"),new c.ItemPropertyHandlerUrl("audio","src"),new c.ItemPropertyHandlerUrl("embed","src"),new c.ItemPropertyHandlerUrl("iframe","src"),new c.ItemPropertyHandlerUrl("img","src"),new c.ItemPropertyHandlerUrl("link","href"),new c.ItemPropertyHandlerUrl("object","data"),new c.ItemPropertyHandlerUrl("source","src"),new c.ItemPropertyHandlerUrl("track","src"),new c.ItemPropertyHandlerUrl("video","src"),new o.ItemPropertyHandlerNumber("data","value"),new o.ItemPropertyHandlerNumber("meter","value"),new s.ItemPropertyHandlerTime]},34260:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;const n=r(18050),i=r(9929);class a{constructor(e,t){this.dataFactory=e||new n.DataFactory,this.baseIRI=t||""}static isValidIri(e){return a.IRI_REGEX.test(e)}createVocabIris(e,t,r){return e.split(/\s+/u).filter((e=>!!e)).map((e=>{if(!a.isValidIri(e)){if(!r)return;e=`${t.vocab||`${this.baseIRI}#`}${e}`}return this.dataFactory.namedNode(e)})).filter((e=>!!e))}getVocabularyExpansionType(e,t,r){const n=e.split(/\s+/u);if(n.includes("subPropertyOf")||n.includes("equivalentProperty"))return[this.dataFactory.namedNode(`${a.RDF}type`)];if(t.vocab&&t.vocab in r&&r[t.vocab].properties){let e=[];for(const[i,a]of Object.entries(r[t.vocab].properties))n.includes(i)&&(e=[...Object.values(a).map((e=>this.dataFactory.namedNode(e)))]);return e}return[]}createSubject(e){if(!a.isValidIri(e))try{e=(0,i.resolve)(e,this.baseIRI)}catch(e){return}return this.dataFactory.namedNode(e)}createLiteral(e,t){return this.dataFactory.literal(e,t.language)}deriveVocab(e,t){let r;for(const n in t)if(e.startsWith(n)){r=n,r.endsWith("/")||(r+="#");break}if(!r){const t=e.indexOf("#");r=t>0?e.slice(0,t+1):(0,i.resolve)(".",e)}return r}}t.Util=a,a.RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#",a.XSD="http://www.w3.org/2001/XMLSchema#",a.RDFA="http://www.w3.org/ns/rdfa#",a.IRI_REGEX=/^([A-Za-z][\d+-.A-Za-z]*|_):[^ "<>[\\\]`{|}]*$/u},64295:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},49999:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ItemPropertyHandlerContent=void 0,t.ItemPropertyHandlerContent=class{canHandle(e,t){return"content"in t}getObject(e,t,r){return t.createLiteral(e.content,r)}}},91094:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ItemPropertyHandlerNumber=void 0;const n=r(34260);t.ItemPropertyHandlerNumber=class{constructor(e,t){this.tagName=e,this.attributeName=t}canHandle(e,t){return this.tagName===e&&this.attributeName in t}getObject(e,t,r){const i=e[this.attributeName];let a;return Number.isNaN(Number.parseInt(i,10))||i.includes(".")?Number.isNaN(Number.parseFloat(i))||(a=`${n.Util.XSD}double`):a=`${n.Util.XSD}integer`,t.dataFactory.literal(i,a&&t.dataFactory.namedNode(a))}}},86625:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ItemPropertyHandlerTime=void 0;const n=r(34260);class i{canHandle(e,t){return"time"===e&&"datetime"in t}getObject(e,t,r){const a=e.datetime;let o;for(const e of i.TIME_REGEXES)if(e.regex.test(a)){o=t.dataFactory.namedNode(n.Util.XSD+e.type);break}return t.dataFactory.literal(a,o)}}t.ItemPropertyHandlerTime=i,i.TIME_REGEXES=[{regex:/^-?P(\d+Y)?(\d+M)?(\d+D)?(T(\d+H)?(\d+M)?(\d+(\.\d)?S)?)?$/u,type:"duration"},{regex:/^\d+-\d\d-\d\dT\d\d:\d\d:\d\d((Z?)|([+-]\d\d:\d\d))$/u,type:"dateTime"},{regex:/^\d+-\d\d-\d\dZ?$/u,type:"date"},{regex:/^\d\d:\d\d:\d\d((Z?)|([+-]\d\d:\d\d))$/u,type:"time"},{regex:/^\d+-\d\d$/u,type:"gYearMonth"},{regex:/^\d+$/u,type:"gYear"}]},38303:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ItemPropertyHandlerUrl=void 0;const n=r(9929);t.ItemPropertyHandlerUrl=class{constructor(e,t){this.tagName=e,this.attributeName=t}canHandle(e,t){return this.tagName===e&&this.attributeName in t}getObject(e,t,r){return t.dataFactory.namedNode((0,n.resolve)(e[this.attributeName],t.baseIRI))}}},7784:e=>{function t(e,t){if(!e)throw new Error(t||"Assertion failed")}e.exports=t,t.equal=function(e,t,r){if(e!=t)throw new Error(r||"Assertion failed: "+e+" != "+t)}},72243:(e,t,r)=>{"use strict";r.r(t),r.d(t,{BlankNode:()=>x,DataFactory:()=>T,DefaultGraph:()=>R,Lexer:()=>g,Literal:()=>E,NamedNode:()=>O,Parser:()=>C,Quad:()=>N,Store:()=>re,StreamParser:()=>ie,StreamWriter:()=>ae,Term:()=>S,Triple:()=>N,Util:()=>n,Variable:()=>A,Writer:()=>Y,default:()=>oe,termFromId:()=>I,termToId:()=>P});var n={};r.r(n),r.d(n,{inDefaultGraph:()=>V,isBlankNode:()=>F,isDefaultGraph:()=>q,isLiteral:()=>B,isNamedNode:()=>k,isVariable:()=>U,prefix:()=>Q,prefixes:()=>$});var i=r(59509),a=r.n(i);const o="http://www.w3.org/1999/02/22-rdf-syntax-ns#",s="http://www.w3.org/2001/XMLSchema#",c="http://www.w3.org/2000/10/swap/",u={xsd:{decimal:`${s}decimal`,boolean:`${s}boolean`,double:`${s}double`,integer:`${s}integer`,string:`${s}string`},rdf:{type:`${o}type`,nil:`${o}nil`,first:`${o}first`,rest:`${o}rest`,langString:`${o}langString`},owl:{sameAs:"http://www.w3.org/2002/07/owl#sameAs"},r:{forSome:`${c}reify#forSome`,forAll:`${c}reify#forAll`},log:{implies:`${c}log#implies`}},{xsd:l}=u,d=/\\u([a-fA-F0-9]{4})|\\U([a-fA-F0-9]{8})|\\([^])/g,p={"\\":"\\","'":"'",'"':'"',n:"\n",r:"\r",t:"\t",f:"\f",b:"\b",_:"_","~":"~",".":".","-":"-","!":"!",$:"$","&":"&","(":"(",")":")","*":"*","+":"+",",":",",";":";","=":"=","/":"/","?":"?","#":"#","@":"@","%":"%"},h=/[\x00-\x20<>\\"\{\}\|\^\`]/,f={_iri:!0,_unescapedIri:!0,_simpleQuotedString:!0,_langcode:!0,_blank:!0,_newline:!0,_comment:!0,_whitespace:!0,_endOfFile:!0},y=/$0^/;class g{constructor(e){if(this._iri=/^<((?:[^ <>{}\\]|\\[uU])+)>[ \t]*/,this._unescapedIri=/^<([^\x00-\x20<>\\"\{\}\|\^\`]*)>[ \t]*/,this._simpleQuotedString=/^"([^"\\\r\n]*)"(?=[^"])/,this._simpleApostropheString=/^'([^'\\\r\n]*)'(?=[^'])/,this._langcode=/^@([a-z]+(?:-[a-z0-9]+)*)(?=[^a-z0-9\-])/i,this._prefix=/^((?:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)?:(?=[#\s<])/,this._prefixed=/^((?:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)?:((?:(?:[0-:A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~])(?:(?:[\.\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~])*(?:[\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~]))?)?)(?:[ \t]+|(?=\.?[,;!\^\s#()\[\]\{\}"'<>]))/,this._variable=/^\?(?:(?:[A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:[\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)(?=[.,;!\^\s#()\[\]\{\}"'<>])/,this._blank=/^_:((?:[0-9A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)(?:[ \t]+|(?=\.?[,;:\s#()\[\]\{\}"'<>]))/,this._number=/^[\-+]?(?:(\d+\.\d*|\.?\d+)[eE][\-+]?|\d*(\.)?)\d+(?=\.?[,;:\s#()\[\]\{\}"'<>])/,this._boolean=/^(?:true|false)(?=[.,;\s#()\[\]\{\}"'<>])/,this._keyword=/^@[a-z]+(?=[\s#<:])/i,this._sparqlKeyword=/^(?:PREFIX|BASE|GRAPH)(?=[\s#<])/i,this._shortPredicates=/^a(?=[\s#()\[\]\{\}"'<>])/,this._newline=/^[ \t]*(?:#[^\n\r]*)?(?:\r\n|\n|\r)[ \t]*/,this._comment=/#([^\n\r]*)/,this._whitespace=/^[ \t]+/,this._endOfFile=/^(?:#[^\n\r]*)?$/,e=e||{},this._lineMode=!!e.lineMode){this._n3Mode=!1;for(const e in this)!(e in f)&&this[e]instanceof RegExp&&(this[e]=y)}else this._n3Mode=!1!==e.n3;this._comments=!!e.comments,this._literalClosingPos=0}_tokenizeToEnd(e,t){let r=this._input,n=r.length;for(;;){let e,o;for(;e=this._newline.exec(r);)this._comments&&(o=this._comment.exec(e[0]))&&i("comment",o[1],"",this._line,e[0].length),r=r.substr(e[0].length,r.length),n=r.length,this._line++;if(!e&&(e=this._whitespace.exec(r))&&(r=r.substr(e[0].length,r.length)),this._endOfFile.test(r))return t&&(this._comments&&(o=this._comment.exec(r))&&i("comment",o[1],"",this._line,r.length),r=null,i("eof","","",this._line,0)),this._input=r;const s=this._line,c=r[0];let u="",d="",p="",f=null,y=0,g=!1;switch(c){case"^":if(r.length<3)break;if("^"!==r[1]){this._n3Mode&&(y=1,u="^");break}if(this._previousMarker="^^",r=r.substr(2),"<"!==r[0]){g=!0;break}case"<":if(f=this._unescapedIri.exec(r))u="IRI",d=f[1];else if(f=this._iri.exec(r)){if(d=this._unescape(f[1]),null===d||h.test(d))return a(this);u="IRI"}else r.length>1&&"<"===r[1]?(u="<<",y=2):this._n3Mode&&r.length>1&&"="===r[1]&&(u="inverse",y=2,d=">");break;case">":r.length>1&&">"===r[1]&&(u=">>",y=2);break;case"_":((f=this._blank.exec(r))||t&&(f=this._blank.exec(`${r} `)))&&(u="blank",p="_",d=f[1]);break;case'"':if(f=this._simpleQuotedString.exec(r))d=f[1];else if(({value:d,matchLength:y}=this._parseLiteral(r)),null===d)return a(this);null===f&&0===y||(u="literal",this._literalClosingPos=0);break;case"'":if(!this._lineMode){if(f=this._simpleApostropheString.exec(r))d=f[1];else if(({value:d,matchLength:y}=this._parseLiteral(r)),null===d)return a(this);null===f&&0===y||(u="literal",this._literalClosingPos=0)}break;case"?":this._n3Mode&&(f=this._variable.exec(r))&&(u="var",d=f[0]);break;case"@":"literal"===this._previousMarker&&(f=this._langcode.exec(r))?(u="langcode",d=f[1]):(f=this._keyword.exec(r))&&(u=f[0]);break;case".":if(1===r.length?t:r[1]<"0"||r[1]>"9"){u=".",y=1;break}case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"+":case"-":(f=this._number.exec(r)||t&&(f=this._number.exec(`${r} `)))&&(u="literal",d=f[0],p="string"==typeof f[1]?l.double:"string"==typeof f[2]?l.decimal:l.integer);break;case"B":case"b":case"p":case"P":case"G":case"g":(f=this._sparqlKeyword.exec(r))?u=f[0].toUpperCase():g=!0;break;case"f":case"t":(f=this._boolean.exec(r))?(u="literal",d=f[0],p=l.boolean):g=!0;break;case"a":(f=this._shortPredicates.exec(r))?(u="abbreviation",d="a"):g=!0;break;case"=":this._n3Mode&&r.length>1&&(u="abbreviation",">"!==r[1]?(y=1,d="="):(y=2,d=">"));break;case"!":if(!this._n3Mode)break;case",":case";":case"[":case"]":case"(":case")":case"}":this._lineMode||(y=1,u=c);break;case"{":!this._lineMode&&r.length>=2&&("|"===r[1]?(u="{|",y=2):(u=c,y=1));break;case"|":r.length>=2&&"}"===r[1]&&(u="|}",y=2);break;default:g=!0}if(g&&("@prefix"!==this._previousMarker&&"PREFIX"!==this._previousMarker||!(f=this._prefix.exec(r))?((f=this._prefixed.exec(r))||t&&(f=this._prefixed.exec(`${r} `)))&&(u="prefixed",p=f[1]||"",d=this._unescape(f[2])):(u="prefix",d=f[1]||"")),"^^"===this._previousMarker)switch(u){case"prefixed":u="type";break;case"IRI":u="typeIRI";break;default:u=""}if(!u)return t||!/^'''|^"""/.test(r)&&/\n|\r/.test(r)?a(this):this._input=r;const m=y||f[0].length,b=i(u,d,p,s,m);this.previousToken=b,this._previousMarker=u,r=r.substr(m,r.length)}function i(t,i,a,o,s){const c=r?n-r.length:n,u={type:t,value:i,prefix:a,line:o,start:c,end:c+s};return e(null,u),u}function a(t){e(t._syntaxError(/^\S*/.exec(r)[0]))}}_unescape(e){let t=!1;const r=e.replace(d,((e,r,n,i)=>{if("string"==typeof r)return String.fromCharCode(Number.parseInt(r,16));if("string"==typeof n){let e=Number.parseInt(n,16);return e<=65535?String.fromCharCode(Number.parseInt(n,16)):String.fromCharCode(55296+((e-=65536)>>10),56320+(1023&e))}return i in p?p[i]:(t=!0,"")}));return t?null:r}_parseLiteral(e){if(e.length>=3){const t=e.match(/^(?:"""|"|'''|'|)/)[0],r=t.length;let n=Math.max(this._literalClosingPos,r);for(;(n=e.indexOf(t,n))>0;){let t=0;for(;"\\"===e[n-t-1];)t++;if(t%2==0){const t=e.substring(r,n),i=t.split(/\r\n|\r|\n/).length-1,a=n+r;if(1===r&&0!==i||3===r&&this._lineMode)break;return this._line+=i,{value:this._unescape(t),matchLength:a}}n++}this._literalClosingPos=e.length-r+1}return{value:"",matchLength:0}}_syntaxError(e){this._input=null;const t=new Error(`Unexpected "${e}" on line ${this._line}.`);return t.context={token:void 0,line:this._line,previousToken:this.previousToken},t}_readStartingBom(e){return e.startsWith("\ufeff")?e.substr(1):e}tokenize(e,t){if(this._line=1,"string"==typeof e){if(this._input=this._readStartingBom(e),"function"!=typeof t){const e=[];let t;if(this._tokenizeToEnd(((r,n)=>r?t=r:e.push(n)),!0),t)throw t;return e}a()((()=>this._tokenizeToEnd(t,!0)))}else this._pendingBuffer=null,"function"==typeof e.setEncoding&&e.setEncoding("utf8"),e.on("data",(e=>{null!==this._input&&0!==e.length&&(this._pendingBuffer&&(e=Buffer.concat([this._pendingBuffer,e]),this._pendingBuffer=null),128&e[e.length-1]?this._pendingBuffer=e:(void 0===this._input?this._input=this._readStartingBom("string"==typeof e?e:e.toString()):this._input+=e,this._tokenizeToEnd(t,!1)))})),e.on("end",(()=>{"string"==typeof this._input&&this._tokenizeToEnd(t,!0)})),e.on("error",t)}}const{rdf:m,xsd:b}=u;let v,_=0;const w={namedNode:function(e){return new O(e)},blankNode:function(e){return new x(e||"n3-"+_++)},variable:function(e){return new A(e)},literal:function(e,t){if("string"==typeof t)return new E(`"${e}"@${t.toLowerCase()}`);let r=t?t.value:"";return""===r&&("boolean"==typeof e?r=b.boolean:"number"==typeof e&&(Number.isFinite(e)?r=Number.isInteger(e)?b.integer:b.double:(r=b.double,Number.isNaN(e)||(e=e>0?"INF":"-INF")))),""===r||r===b.string?new E(`"${e}"`):new E(`"${e}"^^${r}`)},defaultGraph:function(){return v},quad:D,triple:D},T=w;class S{constructor(e){this.id=e}get value(){return this.id}equals(e){return e instanceof S?this.id===e.id:!!e&&this.termType===e.termType&&this.value===e.value}hashCode(){return 0}toJSON(){return{termType:this.termType,value:this.value}}}class O extends S{get termType(){return"NamedNode"}}class E extends S{get termType(){return"Literal"}get value(){return this.id.substring(1,this.id.lastIndexOf('"'))}get language(){const e=this.id;let t=e.lastIndexOf('"')+1;return tnull),this._blankNodePrefix="string"!=typeof e.blankNodePrefix?"":e.blankNodePrefix.replace(/^(?!_:)/,"_:"),this._lexer=e.lexer||new g({lineMode:s,n3:o}),this._explicitQuantifiers=!!e.explicitQuantifiers}static _resetBlankNodePrefix(){j=0}_setBase(e){if(e){const t=e.indexOf("#");t>=0&&(e=e.substr(0,t)),this._base=e,this._basePath=e.indexOf("/")<0?e:e.replace(/[^\/?]*(?:\?.*)?$/,""),e=e.match(/^(?:([a-z][a-z0-9+.-]*:))?(?:\/\/[^\/]*)?/i),this._baseRoot=e[0],this._baseScheme=e[1]}else this._base="",this._basePath=""}_saveContext(e,t,r,n,i){const a=this._n3Mode;this._contextStack.push({type:e,subject:r,predicate:n,object:i,graph:t,inverse:!!a&&this._inversePredicate,blankPrefix:a?this._prefixes._:"",quantified:a?this._quantified:null}),a&&(this._inversePredicate=!1,this._prefixes._=this._graph?`${this._graph.value}.`:".",this._quantified=Object.create(this._quantified))}_restoreContext(e,t){const r=this._contextStack.pop();if(!r||r.type!==e)return this._error(`Unexpected ${t.type}`,t);this._subject=r.subject,this._predicate=r.predicate,this._object=r.object,this._graph=r.graph,this._n3Mode&&(this._inversePredicate=r.inverse,this._prefixes._=r.blankPrefix,this._quantified=r.quantified)}_readInTopContext(e){switch(e.type){case"eof":return null!==this._graph?this._error("Unclosed graph",e):(delete this._prefixes._,this._callback(null,null,this._prefixes));case"PREFIX":this._sparqlStyle=!0;case"@prefix":return this._readPrefix;case"BASE":this._sparqlStyle=!0;case"@base":return this._readBaseIRI;case"{":if(this._supportsNamedGraphs)return this._graph="",this._subject=null,this._readSubject;case"GRAPH":if(this._supportsNamedGraphs)return this._readNamedGraphLabel;default:return this._readSubject(e)}}_readEntity(e,t){let r;switch(e.type){case"IRI":case"typeIRI":const t=this._resolveIRI(e.value);if(null===t)return this._error("Invalid IRI",e);r=this._namedNode(t);break;case"type":case"prefixed":const n=this._prefixes[e.prefix];if(void 0===n)return this._error(`Undefined prefix "${e.prefix}:"`,e);r=this._namedNode(n+e.value);break;case"blank":r=this._blankNode(this._prefixes[e.prefix]+e.value);break;case"var":r=this._variable(e.value.substr(1));break;default:return this._error(`Expected entity but got ${e.type}`,e)}return!t&&this._n3Mode&&r.id in this._quantified&&(r=this._quantified[r.id]),r}_readSubject(e){switch(this._predicate=null,e.type){case"[":return this._saveContext("blank",this._graph,this._subject=this._blankNode(),null,null),this._readBlankNodeHead;case"(":return this._saveContext("list",this._graph,this.RDF_NIL,null,null),this._subject=null,this._readListItem;case"{":return this._n3Mode?(this._saveContext("formula",this._graph,this._graph=this._blankNode(),null,null),this._readSubject):this._error("Unexpected graph",e);case"}":return this._readPunctuation(e);case"@forSome":return this._n3Mode?(this._subject=null,this._predicate=this.N3_FORSOME,this._quantifier=this._blankNode,this._readQuantifierList):this._error('Unexpected "@forSome"',e);case"@forAll":return this._n3Mode?(this._subject=null,this._predicate=this.N3_FORALL,this._quantifier=this._variable,this._readQuantifierList):this._error('Unexpected "@forAll"',e);case"literal":if(!this._n3Mode)return this._error("Unexpected literal",e);if(0===e.prefix.length)return this._literalValue=e.value,this._completeSubjectLiteral;this._subject=this._literal(e.value,this._namedNode(e.prefix));break;case"<<":return this._supportsRDFStar?(this._saveContext("<<",this._graph,null,null,null),this._graph=null,this._readSubject):this._error("Unexpected RDF* syntax",e);default:if(void 0===(this._subject=this._readEntity(e)))return;if(this._n3Mode)return this._getPathReader(this._readPredicateOrNamedGraph)}return this._readPredicateOrNamedGraph}_readPredicate(e){const t=e.type;switch(t){case"inverse":this._inversePredicate=!0;case"abbreviation":this._predicate=this.ABBREVIATIONS[e.value];break;case".":case"]":case"}":return null===this._predicate?this._error(`Unexpected ${t}`,e):(this._subject=null,"]"===t?this._readBlankNodeTail(e):this._readPunctuation(e));case";":return null!==this._predicate?this._readPredicate:this._error("Expected predicate but got ;",e);case"[":if(this._n3Mode)return this._saveContext("blank",this._graph,this._subject,this._subject=this._blankNode(),null),this._readBlankNodeHead;case"blank":if(!this._n3Mode)return this._error("Disallowed blank node as predicate",e);default:if(void 0===(this._predicate=this._readEntity(e)))return}return this._readObject}_readObject(e){switch(e.type){case"literal":if(0===e.prefix.length)return this._literalValue=e.value,this._readDataTypeOrLang;this._object=this._literal(e.value,this._namedNode(e.prefix));break;case"[":return this._saveContext("blank",this._graph,this._subject,this._predicate,this._subject=this._blankNode()),this._readBlankNodeHead;case"(":return this._saveContext("list",this._graph,this._subject,this._predicate,this.RDF_NIL),this._subject=null,this._readListItem;case"{":return this._n3Mode?(this._saveContext("formula",this._graph,this._subject,this._predicate,this._graph=this._blankNode()),this._readSubject):this._error("Unexpected graph",e);case"<<":return this._supportsRDFStar?(this._saveContext("<<",this._graph,this._subject,this._predicate,null),this._graph=null,this._readSubject):this._error("Unexpected RDF* syntax",e);default:if(void 0===(this._object=this._readEntity(e)))return;if(this._n3Mode)return this._getPathReader(this._getContextEndReader())}return this._getContextEndReader()}_readPredicateOrNamedGraph(e){return"{"===e.type?this._readGraph(e):this._readPredicate(e)}_readGraph(e){return"{"!==e.type?this._error(`Expected graph but got ${e.type}`,e):(this._graph=this._subject,this._subject=null,this._readSubject)}_readBlankNodeHead(e){return"]"===e.type?(this._subject=null,this._readBlankNodeTail(e)):(this._predicate=null,this._readPredicate(e))}_readBlankNodeTail(e){if("]"!==e.type)return this._readBlankNodePunctuation(e);null!==this._subject&&this._emit(this._subject,this._predicate,this._object,this._graph);const t=null===this._predicate;return this._restoreContext("blank",e),null!==this._object?this._getContextEndReader():null!==this._predicate?this._readObject:t?this._readPredicateOrNamedGraph:this._readPredicateAfterBlank}_readPredicateAfterBlank(e){switch(e.type){case".":case"}":return this._subject=null,this._readPunctuation(e);default:return this._readPredicate(e)}}_readListItem(e){let t=null,r=null,n=this._readListItem;const i=this._subject,a=this._contextStack,o=a[a.length-1];switch(e.type){case"[":this._saveContext("blank",this._graph,r=this._blankNode(),this.RDF_FIRST,this._subject=t=this._blankNode()),n=this._readBlankNodeHead;break;case"(":this._saveContext("list",this._graph,r=this._blankNode(),this.RDF_FIRST,this.RDF_NIL),this._subject=null;break;case")":if(this._restoreContext("list",e),0!==a.length&&"list"===a[a.length-1].type&&this._emit(this._subject,this._predicate,this._object,this._graph),null===this._predicate){if(n=this._readPredicate,this._subject===this.RDF_NIL)return n}else if(n=this._getContextEndReader(),this._object===this.RDF_NIL)return n;r=this.RDF_NIL;break;case"literal":0===e.prefix.length?(this._literalValue=e.value,n=this._readListItemDataTypeOrLang):(t=this._literal(e.value,this._namedNode(e.prefix)),n=this._getContextEndReader());break;case"{":return this._n3Mode?(this._saveContext("formula",this._graph,this._subject,this._predicate,this._graph=this._blankNode()),this._readSubject):this._error("Unexpected graph",e);default:if(void 0===(t=this._readEntity(e)))return}if(null===r&&(this._subject=r=this._blankNode()),null===i?null===o.predicate?o.subject=r:o.object=r:this._emit(i,this.RDF_REST,r,this._graph),null!==t){if(this._n3Mode&&("IRI"===e.type||"prefixed"===e.type))return this._saveContext("item",this._graph,r,this.RDF_FIRST,t),this._subject=t,this._predicate=null,this._getPathReader(this._readListItem);this._emit(r,this.RDF_FIRST,t,this._graph)}return n}_readDataTypeOrLang(e){return this._completeObjectLiteral(e,!1)}_readListItemDataTypeOrLang(e){return this._completeObjectLiteral(e,!0)}_completeLiteral(e){let t=this._literal(this._literalValue);switch(e.type){case"type":case"typeIRI":const r=this._readEntity(e);if(void 0===r)return;t=this._literal(this._literalValue,r),e=null;break;case"langcode":t=this._literal(this._literalValue,e.value),e=null}return{token:e,literal:t}}_completeSubjectLiteral(e){return this._subject=this._completeLiteral(e).literal,this._readPredicateOrNamedGraph}_completeObjectLiteral(e,t){const r=this._completeLiteral(e);if(r)return this._object=r.literal,t&&this._emit(this._subject,this.RDF_FIRST,this._object,this._graph),null===r.token?this._getContextEndReader():(this._readCallback=this._getContextEndReader(),this._readCallback(r.token))}_readFormulaTail(e){return"}"!==e.type?this._readPunctuation(e):(null!==this._subject&&this._emit(this._subject,this._predicate,this._object,this._graph),this._restoreContext("formula",e),null===this._object?this._readPredicate:this._getContextEndReader())}_readPunctuation(e){let t,r=this._graph;const n=this._subject,i=this._inversePredicate;switch(e.type){case"}":if(null===this._graph)return this._error("Unexpected graph closing",e);if(this._n3Mode)return this._readFormulaTail(e);this._graph=null;case".":this._subject=null,t=this._contextStack.length?this._readSubject:this._readInTopContext,i&&(this._inversePredicate=!1);break;case";":t=this._readPredicate;break;case",":t=this._readObject;break;case"{|":if(!this._supportsRDFStar)return this._error("Unexpected RDF* syntax",e);const a=this._predicate,o=this._object;this._subject=this._quad(n,a,o,this.DEFAULTGRAPH),t=this._readPredicate;break;case"|}":if("Quad"!==this._subject.termType)return this._error("Unexpected asserted triple closing",e);this._subject=null,t=this._readPunctuation;break;default:if(this._supportsQuads&&null===this._graph&&void 0!==(r=this._readEntity(e))){t=this._readQuadPunctuation;break}return this._error(`Expected punctuation to follow "${this._object.id}"`,e)}if(null!==n){const e=this._predicate,t=this._object;i?this._emit(t,e,n,r):this._emit(n,e,t,r)}return t}_readBlankNodePunctuation(e){let t;switch(e.type){case";":t=this._readPredicate;break;case",":t=this._readObject;break;default:return this._error(`Expected punctuation to follow "${this._object.id}"`,e)}return this._emit(this._subject,this._predicate,this._object,this._graph),t}_readQuadPunctuation(e){return"."!==e.type?this._error("Expected dot to follow quad",e):this._readInTopContext}_readPrefix(e){return"prefix"!==e.type?this._error("Expected prefix to follow @prefix",e):(this._prefix=e.value,this._readPrefixIRI)}_readPrefixIRI(e){if("IRI"!==e.type)return this._error(`Expected IRI to follow prefix "${this._prefix}:"`,e);const t=this._readEntity(e);return this._prefixes[this._prefix]=t.value,this._prefixCallback(this._prefix,t),this._readDeclarationPunctuation}_readBaseIRI(e){const t="IRI"===e.type&&this._resolveIRI(e.value);return t?(this._setBase(t),this._readDeclarationPunctuation):this._error("Expected valid IRI to follow base declaration",e)}_readNamedGraphLabel(e){switch(e.type){case"IRI":case"blank":case"prefixed":return this._readSubject(e),this._readGraph;case"[":return this._readNamedGraphBlankLabel;default:return this._error("Invalid graph label",e)}}_readNamedGraphBlankLabel(e){return"]"!==e.type?this._error("Invalid graph label",e):(this._subject=this._blankNode(),this._readGraph)}_readDeclarationPunctuation(e){return this._sparqlStyle?(this._sparqlStyle=!1,this._readInTopContext(e)):"."!==e.type?this._error("Expected declaration to end with a dot",e):this._readInTopContext}_readQuantifierList(e){let t;switch(e.type){case"IRI":case"prefixed":if(void 0!==(t=this._readEntity(e,!0)))break;default:return this._error(`Unexpected ${e.type}`,e)}return this._explicitQuantifiers?(null===this._subject?this._emit(this._graph||this.DEFAULTGRAPH,this._predicate,this._subject=this._blankNode(),this.QUANTIFIERS_GRAPH):this._emit(this._subject,this.RDF_REST,this._subject=this._blankNode(),this.QUANTIFIERS_GRAPH),this._emit(this._subject,this.RDF_FIRST,t,this.QUANTIFIERS_GRAPH)):this._quantified[t.id]=this._quantifier(this._blankNode().value),this._readQuantifierPunctuation}_readQuantifierPunctuation(e){return","===e.type?this._readQuantifierList:(this._explicitQuantifiers&&(this._emit(this._subject,this.RDF_REST,this.RDF_NIL,this.QUANTIFIERS_GRAPH),this._subject=null),this._readCallback=this._getContextEndReader(),this._readCallback(e))}_getPathReader(e){return this._afterPath=e,this._readPath}_readPath(e){switch(e.type){case"!":return this._readForwardPath;case"^":return this._readBackwardPath;default:const t=this._contextStack,r=t.length&&t[t.length-1];if(r&&"item"===r.type){const t=this._subject;this._restoreContext("item",e),this._emit(this._subject,this.RDF_FIRST,t,this._graph)}return this._afterPath(e)}}_readForwardPath(e){let t,r;const n=this._blankNode();if(void 0!==(r=this._readEntity(e)))return null===this._predicate?(t=this._subject,this._subject=n):(t=this._object,this._object=n),this._emit(t,r,n,this._graph),this._readPath}_readBackwardPath(e){const t=this._blankNode();let r,n;if(void 0!==(r=this._readEntity(e)))return null===this._predicate?(n=this._subject,this._subject=t):(n=this._object,this._object=t),this._emit(t,r,n,this._graph),this._readPath}_readRDFStarTailOrGraph(e){return">>"!==e.type?this._supportsQuads&&null===this._graph&&void 0!==(this._graph=this._readEntity(e))?this._readRDFStarTail:this._error(`Expected >> to follow "${this._object.id}"`,e):this._readRDFStarTail(e)}_readRDFStarTail(e){if(">>"!==e.type)return this._error(`Expected >> but got ${e.type}`,e);const t=this._quad(this._subject,this._predicate,this._object,this._graph||this.DEFAULTGRAPH);return this._restoreContext("<<",e),null===this._subject?(this._subject=t,this._readPredicate):(this._object=t,this._getContextEndReader())}_getContextEndReader(){const e=this._contextStack;if(!e.length)return this._readPunctuation;switch(e[e.length-1].type){case"blank":return this._readBlankNodeTail;case"list":return this._readListItem;case"formula":return this._readFormulaTail;case"<<":return this._readRDFStarTailOrGraph}}_emit(e,t,r,n){this._callback(null,this._quad(e,t,r,n||this.DEFAULTGRAPH))}_error(e,t){const r=new Error(`${e} on line ${t.line}.`);r.context={token:t,line:t.line,previousToken:this._lexer.previousToken},this._callback(r),this._callback=M}_resolveIRI(e){return/^[a-z][a-z0-9+.-]*:/i.test(e)?e:this._resolveRelativeIRI(e)}_resolveRelativeIRI(e){if(!e.length)return this._base;switch(e[0]){case"#":return this._base+e;case"?":return this._base.replace(/(?:\?.*)?$/,e);case"/":return("/"===e[1]?this._baseScheme:this._baseRoot)+this._removeDotSegments(e);default:return/^[^/:]*:/.test(e)?null:this._removeDotSegments(this._basePath+e)}}_removeDotSegments(e){if(!/(^|\/)\.\.?($|[/#?])/.test(e))return e;const t=e.length;let r="",n=-1,i=-1,a=0,o="/";for(;n=i&&(r=r.substr(0,a)),"/"!==o)return`${r}/${e.substr(n+1)}`;a=n+1}}}o=e[++n]}return r+e.substring(a)}parse(e,t,r){if(this._readCallback=this._readInTopContext,this._sparqlStyle=!1,this._prefixes=Object.create(null),this._prefixes._=this._blankNodePrefix?this._blankNodePrefix.substr(2):`b${j++}_`,this._prefixCallback=r||M,this._inversePredicate=!1,this._quantified=Object.create(null),!t){const t=[];let r;if(this._callback=(e,n)=>{e?r=e:n&&t.push(n)},this._lexer.tokenize(e).every((e=>this._readCallback=this._readCallback(e))),r)throw r;return t}this._callback=t,this._lexer.tokenize(e,((e,t)=>{null!==e?(this._callback(e),this._callback=M):this._readCallback&&(this._readCallback=this._readCallback(t))}))}}function M(){}function L(e,t){const r=t.namedNode;e._namedNode=r,e._blankNode=t.blankNode,e._literal=t.literal,e._variable=t.variable,e._quad=t.quad,e.DEFAULTGRAPH=t.defaultGraph(),e.RDF_FIRST=r(u.rdf.first),e.RDF_REST=r(u.rdf.rest),e.RDF_NIL=r(u.rdf.nil),e.N3_FORALL=r(u.r.forAll),e.N3_FORSOME=r(u.r.forSome),e.ABBREVIATIONS={a:r(u.rdf.type),"=":r(u.owl.sameAs),">":r(u.log.implies)},e.QUANTIFIERS_GRAPH=r("urn:n3:quantifiers")}function k(e){return!!e&&"NamedNode"===e.termType}function F(e){return!!e&&"BlankNode"===e.termType}function B(e){return!!e&&"Literal"===e.termType}function U(e){return!!e&&"Variable"===e.termType}function q(e){return!!e&&"DefaultGraph"===e.termType}function V(e){return q(e.graph)}function Q(e,t){return $({"":e.value||e},t)("")}function $(e,t){const r=Object.create(null);for(const t in e)n(t,e[t]);function n(e,n){if("string"==typeof n){const i=Object.create(null);r[e]=e=>i[e]||(i[e]=t.namedNode(n+e))}else if(!(e in r))throw new Error(`Unknown prefix: ${e}`);return r[e]}return t=t||T,n}L(C.prototype,T);const H=T.defaultGraph(),{rdf:G,xsd:z}=u,K=/["\\\t\n\r\b\f\u0000-\u0019\ud800-\udbff]/,X=/["\\\t\n\r\b\f\u0000-\u0019]|[\ud800-\udbff][\udc00-\udfff]/g,J={"\\":"\\\\",'"':'\\"',"\t":"\\t","\n":"\\n","\r":"\\r","\b":"\\b","\f":"\\f"};class W extends S{equals(e){return e===this}}class Y{constructor(e,t){if(this._prefixRegex=/$0^/,e&&"function"!=typeof e.write&&(t=e,e=null),t=t||{},this._lists=t.lists,e)this._outputStream=e,this._endStream=void 0===t.end||!!t.end;else{let e="";this._outputStream={write(t,r,n){e+=t,n&&n()},end:t=>{t&&t(null,e)}},this._endStream=!0}this._subject=null,/triple|quad/i.test(t.format)?(this._lineMode=!0,this._writeQuad=this._writeQuadLine):(this._lineMode=!1,this._graph=H,this._prefixIRIs=Object.create(null),t.prefixes&&this.addPrefixes(t.prefixes),t.baseIRI&&(this._baseMatcher=new RegExp(`^${ee(t.baseIRI)}${t.baseIRI.endsWith("/")?"":"[#?]"}`),this._baseLength=t.baseIRI.length))}get _inDefaultGraph(){return H.equals(this._graph)}_write(e,t){this._outputStream.write(e,"utf8",t)}_writeQuad(e,t,r,n,i){try{n.equals(this._graph)||(this._write((null===this._subject?"":this._inDefaultGraph?".\n":"\n}\n")+(H.equals(n)?"":`${this._encodeIriOrBlank(n)} {\n`)),this._graph=n,this._subject=null),e.equals(this._subject)?t.equals(this._predicate)?this._write(`, ${this._encodeObject(r)}`,i):this._write(`;\n ${this._encodePredicate(this._predicate=t)} ${this._encodeObject(r)}`,i):this._write(`${(null===this._subject?"":".\n")+this._encodeSubject(this._subject=e)} ${this._encodePredicate(this._predicate=t)} ${this._encodeObject(r)}`,i)}catch(e){i&&i(e)}}_writeQuadLine(e,t,r,n,i){delete this._prefixMatch,this._write(this.quadToString(e,t,r,n),i)}quadToString(e,t,r,n){return`${this._encodeSubject(e)} ${this._encodeIriOrBlank(t)} ${this._encodeObject(r)}${n&&n.value?` ${this._encodeIriOrBlank(n)} .\n`:" .\n"}`}quadsToString(e){return e.map((e=>this.quadToString(e.subject,e.predicate,e.object,e.graph))).join("")}_encodeSubject(e){return"Quad"===e.termType?this._encodeQuad(e):this._encodeIriOrBlank(e)}_encodeIriOrBlank(e){if("NamedNode"!==e.termType)return this._lists&&e.value in this._lists&&(e=this.list(this._lists[e.value])),"id"in e?e.id:`_:${e.value}`;let t=e.value;this._baseMatcher&&this._baseMatcher.test(t)&&(t=t.substr(this._baseLength)),K.test(t)&&(t=t.replace(X,Z));const r=this._prefixRegex.exec(t);return r?r[1]?this._prefixIRIs[r[1]]+r[2]:t:`<${t}>`}_encodeLiteral(e){let t=e.value;if(K.test(t)&&(t=t.replace(X,Z)),e.language)return`"${t}"@${e.language}`;if(this._lineMode){if(e.datatype.value===z.string)return`"${t}"`}else switch(e.datatype.value){case z.string:return`"${t}"`;case z.boolean:if("true"===t||"false"===t)return t;break;case z.integer:if(/^[+-]?\d+$/.test(t))return t;break;case z.decimal:if(/^[+-]?\d*\.\d+$/.test(t))return t;break;case z.double:if(/^[+-]?(?:\d+\.\d*|\.?\d+)[eE][+-]?\d+$/.test(t))return t}return`"${t}"^^${this._encodeIriOrBlank(e.datatype)}`}_encodePredicate(e){return e.value===G.type?"a":this._encodeIriOrBlank(e)}_encodeObject(e){switch(e.termType){case"Quad":return this._encodeQuad(e);case"Literal":return this._encodeLiteral(e);default:return this._encodeIriOrBlank(e)}}_encodeQuad({subject:e,predicate:t,object:r,graph:n}){return`<<${this._encodeSubject(e)} ${this._encodePredicate(t)} ${this._encodeObject(r)}${q(n)?"":` ${this._encodeIriOrBlank(n)}`}>>`}_blockedWrite(){throw new Error("Cannot write because the writer has been closed.")}addQuad(e,t,r,n,i){void 0===r?this._writeQuad(e.subject,e.predicate,e.object,e.graph,t):"function"==typeof n?this._writeQuad(e,t,r,H,n):this._writeQuad(e,t,r,n||H,i)}addQuads(e){for(let t=0;t.\n`)}if(r){let e="",t="";for(const r in this._prefixIRIs)e+=e?`|${r}`:r,t+=(t?"|":"")+this._prefixIRIs[r];e=ee(e),this._prefixRegex=new RegExp(`^(?:${t})[^/]*$|^(${e})([_a-zA-Z][\\-_a-zA-Z0-9]*)$`)}this._write(r?"\n":"",t)}blank(e,t){let r,n,i=e;switch(void 0===e?i=[]:e.termType?i=[{predicate:e,object:t}]:"length"in e||(i=[e]),n=i.length){case 0:return new W("[]");case 1:if(r=i[0],!(r.object instanceof W))return new W(`[ ${this._encodePredicate(r.predicate)} ${this._encodeObject(r.object)} ]`);default:let t="[";for(let a=0;a{t=null,e(r,n)});if(this._endStream)try{return this._outputStream.end(t)}catch(e){}t&&t()}}function Z(e){let t=J[e];return void 0===t&&(1===e.length?(t=e.charCodeAt(0).toString(16),t="\\u0000".substr(0,6-t.length)+t):(t=(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)+9216).toString(16),t="\\U00000000".substr(0,10-t.length)+t)),t}function ee(e){return e.replace(/[\]\/\(\)\*\+\?\.\\\$]/g,"\\$&")}var te=r(58521);class re{constructor(e,t){this._size=0,this._graphs=Object.create(null),this._id=0,this._ids=Object.create(null),this._entities=Object.create(null),this._blankNodeIndex=0,t||!e||e[0]||(t=e,e=null),t=t||{},this._factory=t.factory||T,e&&this.addQuads(e)}_termFromId(e,t){if("."===e[0]){const t=this._entities,r=e.split(".");return this._factory.quad(this._termFromId(t[r[1]]),this._termFromId(t[r[2]]),this._termFromId(t[r[3]]),r[4]&&this._termFromId(t[r[4]]))}return I(e,t)}_termToNumericId(e){if("Quad"===e.termType){const t=this._termToNumericId(e.subject),r=this._termToNumericId(e.predicate),n=this._termToNumericId(e.object);let i;return t&&r&&n&&(q(e.graph)||(i=this._termToNumericId(e.graph)))&&this._ids[i?`.${t}.${r}.${n}.${i}`:`.${t}.${r}.${n}`]}return this._ids[P(e)]}_termToNewNumericId(e){const t=e&&"Quad"===e.termType?`.${this._termToNewNumericId(e.subject)}.${this._termToNewNumericId(e.predicate)}.${this._termToNewNumericId(e.object)}${q(e.graph)?"":`.${this._termToNewNumericId(e.graph)}`}`:P(e);return this._ids[t]||(this._ids[this._entities[++this._id]=t]=this._id)}get size(){let e=this._size;if(null!==e)return e;e=0;const t=this._graphs;let r,n;for(const i in t)for(const a in r=t[i].subjects)for(const t in n=r[a])e+=Object.keys(n[t]).length;return this._size=e}_addToIndex(e,t,r,n){const i=e[t]||(e[t]={}),a=i[r]||(i[r]={}),o=n in a;return o||(a[n]=null),!o}_removeFromIndex(e,t,r,n){const i=e[t],a=i[r];delete a[n];for(const e in a)return;delete i[r];for(const e in i)return;delete e[t]}*_findInIndex(e,t,r,n,i,a,o,s){let c,u,l;const d=this._entities,p=this._termFromId(s,this._factory),h={subject:null,predicate:null,object:null};t&&((c=e,e={})[t]=c[t]);for(const t in e)if(u=e[t]){h[i]=this._termFromId(d[t],this._factory),r&&((c=u,u={})[r]=c[r]);for(const e in u)if(l=u[e]){h[a]=this._termFromId(d[e],this._factory);const t=n?n in l?[n]:[]:Object.keys(l);for(let e=0;e{r in t||(t[r]=!0,e(this._termFromId(this._entities[r],this._factory)))}}add(e){return this.addQuad(e),this}addQuad(e,t,r,n){t||(n=e.graph,r=e.object,t=e.predicate,e=e.subject),n=P(n);let i=this._graphs[n];i||(i=this._graphs[n]={subjects:{},predicates:{},objects:{}},Object.freeze(i)),e=this._termToNewNumericId(e),t=this._termToNewNumericId(t),r=this._termToNewNumericId(r);const a=this._addToIndex(i.subjects,e,t,r);return this._addToIndex(i.predicates,t,r,e),this._addToIndex(i.objects,r,e,t),this._size=null,a}addQuads(e){for(let t=0;t{this.addQuad(e)})),e}removeQuad(e,t,r,n){t||(n=e.graph,r=e.object,t=e.predicate,e=e.subject),n=P(n);const i=this._graphs;let a,o,s;if(!((e=e&&this._termToNumericId(e))&&(t=t&&this._termToNumericId(t))&&(r=r&&this._termToNumericId(r))&&(a=i[n])&&(o=a.subjects[e])&&(s=o[t])&&r in s))return!1;for(e in this._removeFromIndex(a.subjects,e,t,r),this._removeFromIndex(a.predicates,t,r,e),this._removeFromIndex(a.objects,r,e,t),null!==this._size&&this._size--,a.subjects)return!0;return delete i[n],!0}removeQuads(e){for(let t=0;t{this.removeQuad(e)})),e}removeMatches(e,t,r,n){const i=new te.Readable({objectMode:!0});return i._read=()=>{for(const a of this.readQuads(e,t,r,n))i.push(a);i.push(null)},this.remove(i)}deleteGraph(e){return this.removeMatches(null,null,null,e)}getQuads(e,t,r,n){return[...this.readQuads(e,t,r,n)]}*readQuads(e,t,r,n){n=n&&P(n);const i=this._getGraphs(n);let a,o,s,c;if(!(e&&!(o=this._termToNumericId(e))||t&&!(s=this._termToNumericId(t))||r&&!(c=this._termToNumericId(r))))for(const e in i)(a=i[e])&&(o?c?yield*this._findInIndex(a.objects,c,o,s,"object","subject","predicate",e):yield*this._findInIndex(a.subjects,o,s,null,"subject","predicate","object",e):s?yield*this._findInIndex(a.predicates,s,c,null,"predicate","object","subject",e):c?yield*this._findInIndex(a.objects,c,null,null,"object","subject","predicate",e):yield*this._findInIndex(a.subjects,null,null,null,"subject","predicate","object",e))}match(e,t,r,n){return new ne(this,e,t,r,n)}countQuads(e,t,r,n){n=n&&P(n);const i=this._getGraphs(n);let a,o,s,c,u=0;if(e&&!(o=this._termToNumericId(e))||t&&!(s=this._termToNumericId(t))||r&&!(c=this._termToNumericId(r)))return 0;for(const n in i)(a=i[n])&&(u+=e?r?this._countInIndex(a.objects,c,o,s):this._countInIndex(a.subjects,o,s,c):t?this._countInIndex(a.predicates,s,c,o):this._countInIndex(a.objects,c,o,s));return u}forEach(e,t,r,n,i){this.some((t=>(e(t),!1)),t,r,n,i)}every(e,t,r,n,i){let a=!1;const o=!this.some((t=>(a=!0,!e(t))),t,r,n,i);return a&&o}some(e,t,r,n,i){for(const a of this.readQuads(t,r,n,i))if(e(a))return!0;return!1}getSubjects(e,t,r){const n=[];return this.forSubjects((e=>{n.push(e)}),e,t,r),n}forSubjects(e,t,r,n){n=n&&P(n);const i=this._getGraphs(n);let a,o,s;if(e=this._uniqueEntities(e),!(t&&!(o=this._termToNumericId(t))||r&&!(s=this._termToNumericId(r))))for(n in i)(a=i[n])&&(o?s?this._loopBy2Keys(a.predicates,o,s,e):this._loopByKey1(a.subjects,o,e):s?this._loopByKey0(a.objects,s,e):this._loop(a.subjects,e))}getPredicates(e,t,r){const n=[];return this.forPredicates((e=>{n.push(e)}),e,t,r),n}forPredicates(e,t,r,n){n=n&&P(n);const i=this._getGraphs(n);let a,o,s;if(e=this._uniqueEntities(e),!(t&&!(o=this._termToNumericId(t))||r&&!(s=this._termToNumericId(r))))for(n in i)(a=i[n])&&(o?s?this._loopBy2Keys(a.objects,s,o,e):this._loopByKey0(a.subjects,o,e):s?this._loopByKey1(a.predicates,s,e):this._loop(a.predicates,e))}getObjects(e,t,r){const n=[];return this.forObjects((e=>{n.push(e)}),e,t,r),n}forObjects(e,t,r,n){n=n&&P(n);const i=this._getGraphs(n);let a,o,s;if(e=this._uniqueEntities(e),!(t&&!(o=this._termToNumericId(t))||r&&!(s=this._termToNumericId(r))))for(n in i)(a=i[n])&&(o?s?this._loopBy2Keys(a.subjects,o,s,e):this._loopByKey1(a.objects,o,e):s?this._loopByKey0(a.predicates,s,e):this._loop(a.objects,e))}getGraphs(e,t,r){const n=[];return this.forGraphs((e=>{n.push(e)}),e,t,r),n}forGraphs(e,t,r,n){for(const i in this._graphs)this.some((t=>(e(t.graph),!0)),t,r,n,i)}createBlankNode(e){let t,r;if(e)for(t=e=`_:${e}`,r=1;this._ids[t];)t=e+r++;else do{t="_:b"+this._blankNodeIndex++}while(this._ids[t]);return this._ids[t]=++this._id,this._entities[this._id]=t,this._factory.blankNode(t.substr(2))}extractLists({remove:e=!1,ignoreErrors:t=!1}={}){const r={},n=t?()=>!0:(e,t)=>{throw new Error(`${e.value} ${t}`)},i=this.getQuads(null,u.rdf.rest,u.rdf.nil,null),a=e?[...i]:[];return i.forEach((t=>{const i=[];let o,s,c=!1;const l=t.graph;let d=t.subject;for(;d&&!c;){const e=this.getQuads(null,null,d,null),t=this.getQuads(d,null,null,null);let r,p=null,h=null,f=null;for(let i=0;i{switch(e){case"data":t=n;break;case"end":r=n}}},((e,t)=>{e&&this.emit("error",e)||t&&this.push(t)}),((e,t)=>{this.emit("prefix",e,t)})),this._transform=(e,r,n)=>{t(e),n()},this._flush=e=>{r(),e()}}import(e){return e.on("data",(e=>{this.write(e)})),e.on("end",(()=>{this.end()})),e.on("error",(e=>{this.emit("error",e)})),this}}class ae extends te.Transform{constructor(e){super({encoding:"utf8",writableObjectMode:!0});const t=this._writer=new Y({write:(e,t,r)=>{this.push(e),r&&r()},end:e=>{this.push(null),e&&e()}},e);this._transform=(e,r,n)=>{t.addQuad(e,n)},this._flush=e=>{t.end(e)}}import(e){return e.on("data",(e=>{this.write(e)})),e.on("end",(()=>{this.end()})),e.on("error",(e=>{this.emit("error",e)})),e.on("prefix",((e,t)=>{this._writer.addPrefix(e,t)})),this}}const oe={Lexer:g,Parser:C,Writer:Y,Store:re,StreamParser:ie,StreamWriter:ae,Util:n,DataFactory:T,Term:S,NamedNode:O,Literal:E,BlankNode:x,Variable:A,DefaultGraph:R,Quad:N,Triple:N,termFromId:I,termToId:P}},39907:e=>{var t,r,n=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function o(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var s,c=[],u=!1,l=-1;function d(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&p())}function p(){if(!u){var e=o(d);u=!0;for(var t=c.length;t;){for(s=c,c=[];++l1)for(var r=1;r{!function(){var t;t="object"==typeof window&&window?window:r.g,e.exports?e.exports=t.Promise?t.Promise:o:t.Promise||(t.Promise=o);var n=t.setImmediate||function(e){setTimeout(e,1)};function i(e,t){return function(){e.apply(t,arguments)}}var a=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function o(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],p(e,i(c,this),i(u,this))}function s(e){var t=this;null!==this._state?n((function(){var r=t._state?e.onFulfilled:e.onRejected;if(null!==r){var n;try{n=r(t._value)}catch(t){return void e.reject(t)}e.resolve(n)}else(t._state?e.resolve:e.reject)(t._value)})):this._deferreds.push(e)}function c(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void p(i(t,e),i(c,this),i(u,this))}this._state=!0,this._value=e,l.call(this)}catch(e){u.call(this,e)}}function u(e){this._state=!1,this._value=e,l.call(this)}function l(){for(var e=0,t=this._deferreds.length;e{let n;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:r.g):e=>(n||(n=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0)))},18050:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(73968),t),i(r(31352),t),i(r(81947),t),i(r(91417),t),i(r(88963),t),i(r(89135),t),i(r(22e3),t)},73968:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlankNode=void 0,t.BlankNode=class{constructor(e){this.termType="BlankNode",this.value=e}equals(e){return!!e&&"BlankNode"===e.termType&&e.value===this.value}}},31352:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DataFactory=void 0;const n=r(73968),i=r(81947),a=r(91417),o=r(88963),s=r(89135),c=r(22e3);let u=0;t.DataFactory=class{constructor(e){this.blankNodeCounter=0,e=e||{},this.blankNodePrefix=e.blankNodePrefix||`df_${u++}_`}namedNode(e){return new o.NamedNode(e)}blankNode(e){return new n.BlankNode(e||`${this.blankNodePrefix}${this.blankNodeCounter++}`)}literal(e,t){return new a.Literal(e,t)}variable(e){return new c.Variable(e)}defaultGraph(){return i.DefaultGraph.INSTANCE}quad(e,t,r,n){return new s.Quad(e,t,r,n||this.defaultGraph())}fromTerm(e){switch(e.termType){case"NamedNode":return this.namedNode(e.value);case"BlankNode":return this.blankNode(e.value);case"Literal":return e.language?this.literal(e.value,e.language):e.datatype.equals(a.Literal.XSD_STRING)?this.literal(e.value):this.literal(e.value,this.fromTerm(e.datatype));case"Variable":return this.variable(e.value);case"DefaultGraph":return this.defaultGraph();case"Quad":return this.quad(this.fromTerm(e.subject),this.fromTerm(e.predicate),this.fromTerm(e.object),this.fromTerm(e.graph))}}fromQuad(e){return this.fromTerm(e)}resetBlankNodeCounter(){this.blankNodeCounter=0}}},81947:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultGraph=void 0;class r{constructor(){this.termType="DefaultGraph",this.value=""}equals(e){return!!e&&"DefaultGraph"===e.termType}}t.DefaultGraph=r,r.INSTANCE=new r},91417:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Literal=void 0;const n=r(88963);class i{constructor(e,t){this.termType="Literal",this.value=e,"string"==typeof t?(this.language=t,this.datatype=i.RDF_LANGUAGE_STRING):t?(this.language="",this.datatype=t):(this.language="",this.datatype=i.XSD_STRING)}equals(e){return!!e&&"Literal"===e.termType&&e.value===this.value&&e.language===this.language&&this.datatype.equals(e.datatype)}}t.Literal=i,i.RDF_LANGUAGE_STRING=new n.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"),i.XSD_STRING=new n.NamedNode("http://www.w3.org/2001/XMLSchema#string")},88963:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NamedNode=void 0,t.NamedNode=class{constructor(e){this.termType="NamedNode",this.value=e}equals(e){return!!e&&"NamedNode"===e.termType&&e.value===this.value}}},89135:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Quad=void 0,t.Quad=class{constructor(e,t,r,n){this.termType="Quad",this.value="",this.subject=e,this.predicate=t,this.object=r,this.graph=n}equals(e){return!!e&&("Quad"===e.termType||!e.termType)&&this.subject.equals(e.subject)&&this.predicate.equals(e.predicate)&&this.object.equals(e.object)&&this.graph.equals(e.graph)}}},22e3:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Variable=void 0,t.Variable=class{constructor(e){this.termType="Variable",this.value=e}equals(e){return!!e&&"Variable"===e.termType&&e.value===this.value}}},91032:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(9157),t)},9157:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isTermGrounded=t.termToSignature=t.quadToSignature=t.sha1hex=t.hashTerm=t.hashTerms=t.getGraphBlankNodes=t.uniqGraph=t.deindexGraph=t.indexGraph=t.getQuadsWithoutBlankNodes=t.getQuadsWithBlankNodes=t.hasValue=t.hashValues=t.getBijectionInner=t.getBijection=t.isomorphic=void 0;const n=r(99499),i=r(22112),a=r(13252);function o(e,t){const r=h(p(e)),n=h(p(t));if(Object.keys(r).length!==Object.keys(n).length)return null;for(const e in r)if(r[e]!==n[e])return null;return s(y(d(e)),y(d(t)),g(e),g(t))}function s(e,t,r,n,a,o){a||(a={}),o||(o={});const[d,p]=m(e,r,a),[h,f]=m(t,n,o);if(Object.keys(d).length!==Object.keys(h).length)return null;for(const e in d)if(!l(h,d[e]))return null;let y={};for(const e of r){const t=i.termToString(e),r=p[t];for(const e in f)if(f[e]===r){y[t]=e,delete f[e];break}}if(!c(Object.keys(y).sort(),r.map(i.termToString).sort())||!c(u(y).sort(),n.map(i.termToString).sort())){y=null;for(const a of r){const o=i.termToString(a);if(!d[o])for(const a of n){const c=i.termToString(a);if(!h[c]&&p[o]===f[c]){const i=v(o);y=s(e,t,r,n,Object.assign(Object.assign({},d),{[o]:i}),Object.assign(Object.assign({},h),{[c]:i}))}}}}return y}function c(e,t){if(e.length!==t.length)return!1;for(let r=e.length;r--;)if(e[r]!==t[r])return!1;return!0}function u(e){const t=[];for(const r in e)t.push(e[r]);return t}function l(e,t){for(const r in e)if(e[r]===t)return!0;return!1}function d(e){return e.filter((e=>a.someTerms(e,(e=>"BlankNode"===e.termType||"Quad"===e.termType&&a.getTermsNested(e).some((e=>"BlankNode"===e.termType))))))}function p(e){return e.filter((e=>a.everyTerms(e,(e=>"BlankNode"!==e.termType&&!("Quad"===e.termType&&a.getTermsNested(e).some((e=>"BlankNode"===e.termType)))))))}function h(e){const t={};for(const r of e)t[JSON.stringify(i.quadToStringQuad(r))]=!0;return t}function f(e){return Object.keys(e).map((e=>i.stringQuadToQuad(JSON.parse(e))))}function y(e){return f(h(e))}function g(e){return a.uniqTerms(e.map((e=>a.getBlankNodes(a.getTermsNested(e)))).reduce(((e,t)=>e.concat(t)),[]))}function m(e,t,r){const n=Object.assign({},r),a={};let o=!0;for(;o;){const r=Object.keys(n).length;for(const r of t){const t=i.termToString(r);if(!n[t]){const[i,o]=b(r,e,n);i&&(n[t]=o),a[t]=o}}const s={};for(const e in a){const t=a[e];void 0===s[t]?s[t]=e:s[t]=!1}for(const e in s){const t=s[e];t&&(n[t]=e)}o=r!==Object.keys(n).length}return[n,a]}function b(e,t,r){const n=[];let i=!0;for(const o of t){const t=a.getTermsNested(o);if(t.some((t=>t.equals(e)))){n.push(_(o,r,e));for(const n of t)T(n,r)||n.equals(e)||(i=!1)}}return[i,v(n.sort().join(""))]}function v(e){return n.sha1().update(e).digest("hex")}function _(e,t,r){return a.getTerms(e).map((e=>w(e,t,r))).join("|")}function w(e,t,r){return e.equals(r)?"@self":"BlankNode"===e.termType?t[i.termToString(e)]||"@blank":"Quad"===e.termType?`<${_(e,t,r)}>`:i.termToString(e)}function T(e,t){return"BlankNode"!==e.termType&&!("Quad"===e.termType&&a.getTermsNested(e).some((e=>!T(e,t))))||!!t[i.termToString(e)]}t.isomorphic=function(e,t){return!!o(e,t)},t.getBijection=o,t.getBijectionInner=s,t.hashValues=u,t.hasValue=l,t.getQuadsWithBlankNodes=d,t.getQuadsWithoutBlankNodes=p,t.indexGraph=h,t.deindexGraph=f,t.uniqGraph=y,t.getGraphBlankNodes=g,t.hashTerms=m,t.hashTerm=b,t.sha1hex=v,t.quadToSignature=_,t.termToSignature=w,t.isTermGrounded=T},80740:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.getSupportedJavaScriptPrimitives=t.getSupportedRdfDatatypes=t.getTermRaw=t.toRdf=t.fromRdf=void 0;const a=r(18050),o=r(23303),s=r(76516);i(r(23303),t),i(r(48959),t),i(r(76516),t);const c=new a.DataFactory,u=new s.Translator;function l(e,t){return u.fromRdf(e,t)}u.registerHandler(new o.TypeHandlerString,o.TypeHandlerString.TYPES.map((e=>c.namedNode(e))),["string"]),u.registerHandler(new o.TypeHandlerBoolean,[o.TypeHandlerBoolean.TYPE].map((e=>c.namedNode(e))),["boolean"]),u.registerHandler(new o.TypeHandlerNumberDouble,o.TypeHandlerNumberDouble.TYPES.map((e=>c.namedNode(e))),["number"]),u.registerHandler(new o.TypeHandlerNumberInteger,o.TypeHandlerNumberInteger.TYPES.map((e=>c.namedNode(e))),["number"]),u.registerHandler(new o.TypeHandlerDate,o.TypeHandlerDate.TYPES.map((e=>c.namedNode(e))),["object"]),t.fromRdf=l,t.toRdf=function(e,t){return t&&"namedNode"in t&&(t={dataFactory:t}),(t=t||{})&&!t.dataFactory&&(t.dataFactory=c),u.toRdf(e,t)},t.getTermRaw=function(e,t){return"Literal"===e.termType?l(e,t):e.value},t.getSupportedRdfDatatypes=function(){return u.getSupportedRdfDatatypes()},t.getSupportedJavaScriptPrimitives=function(){return u.getSupportedJavaScriptPrimitives()}},48959:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},76516:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Translator=void 0,t.Translator=class{constructor(){this.supportedRdfDatatypes=[],this.fromRdfHandlers={},this.toRdfHandlers={}}static incorrectRdfDataType(e){throw new Error(`Invalid RDF ${e.datatype.value} value: '${e.value}'`)}registerHandler(e,t,r){for(const r of t)this.supportedRdfDatatypes.push(r),this.fromRdfHandlers[r.value]=e;for(const t of r){let r=this.toRdfHandlers[t];r||(this.toRdfHandlers[t]=r=[]),r.push(e)}}fromRdf(e,t){const r=this.fromRdfHandlers[e.datatype.value];return r?r.fromRdf(e,t):e.value}toRdf(e,t){const r=this.toRdfHandlers[typeof e];if(r)for(const n of r){const r=n.toRdf(e,t);if(r)return r}throw new Error(`Invalid JavaScript value: '${e}'`)}getSupportedRdfDatatypes(){return this.supportedRdfDatatypes}getSupportedJavaScriptPrimitives(){return Object.keys(this.toRdfHandlers)}}},48403:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHandlerBoolean=void 0;const n=r(76516);class i{fromRdf(e,t){switch(e.value){case"true":case"1":return!0;case"false":case"0":return!1}return t&&n.Translator.incorrectRdfDataType(e),!1}toRdf(e,{datatype:t,dataFactory:r}){return r.literal(e?"true":"false",t||r.namedNode(i.TYPE))}}i.TYPE="http://www.w3.org/2001/XMLSchema#boolean",t.TypeHandlerBoolean=i},5603:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHandlerDate=void 0;const n=r(76516);class i{fromRdf(e,t){switch(t&&!e.value.match(i.VALIDATORS[e.datatype.value.substr(33,e.datatype.value.length)])&&n.Translator.incorrectRdfDataType(e),e.datatype.value){case"http://www.w3.org/2001/XMLSchema#gDay":return new Date(0,0,parseInt(e.value,10));case"http://www.w3.org/2001/XMLSchema#gMonthDay":const t=e.value.split("-");return new Date(0,parseInt(t[0],10)-1,parseInt(t[1],10));case"http://www.w3.org/2001/XMLSchema#gYear":return new Date(e.value+"-01-01");case"http://www.w3.org/2001/XMLSchema#gYearMonth":return new Date(e.value+"-01");default:return new Date(e.value)}}toRdf(e,{datatype:t,dataFactory:r}){if(t=t||r.namedNode(i.TYPES[0]),!(e instanceof Date))return null;const n=e;let a;switch(t.value){case"http://www.w3.org/2001/XMLSchema#gDay":a=String(n.getUTCDate());break;case"http://www.w3.org/2001/XMLSchema#gMonthDay":a=n.getUTCMonth()+1+"-"+n.getUTCDate();break;case"http://www.w3.org/2001/XMLSchema#gYear":a=String(n.getUTCFullYear());break;case"http://www.w3.org/2001/XMLSchema#gYearMonth":a=n.getUTCFullYear()+"-"+(n.getUTCMonth()+1);break;case"http://www.w3.org/2001/XMLSchema#date":a=n.toISOString().replace(/T.*$/,"");break;default:a=n.toISOString()}return r.literal(a,t)}}i.TYPES=["http://www.w3.org/2001/XMLSchema#dateTime","http://www.w3.org/2001/XMLSchema#date","http://www.w3.org/2001/XMLSchema#gDay","http://www.w3.org/2001/XMLSchema#gMonthDay","http://www.w3.org/2001/XMLSchema#gYear","http://www.w3.org/2001/XMLSchema#gYearMonth"],i.VALIDATORS={date:/^[0-9]+-[0-9][0-9]-[0-9][0-9]Z?$/,dateTime:/^[0-9]+-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9](\.[0-9][0-9][0-9])?((Z?)|([\+-][0-9][0-9]:[0-9][0-9]))$/,gDay:/^[0-9]+$/,gMonthDay:/^[0-9]+-[0-9][0-9]$/,gYear:/^[0-9]+$/,gYearMonth:/^[0-9]+-[0-9][0-9]$/},t.TypeHandlerDate=i},25947:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHandlerNumberDouble=void 0;const n=r(76516);class i{fromRdf(e,t){const r=parseFloat(e.value);return t&&isNaN(r)&&n.Translator.incorrectRdfDataType(e),r}toRdf(e,{datatype:t,dataFactory:r}){return t=t||r.namedNode(i.TYPES[0]),isNaN(e)?r.literal("NaN",t):isFinite(e)?e%1==0?null:r.literal(e.toExponential(15).replace(/(\d)0*e\+?/,"$1E"),t):r.literal(e>0?"INF":"-INF",t)}}i.TYPES=["http://www.w3.org/2001/XMLSchema#double","http://www.w3.org/2001/XMLSchema#decimal","http://www.w3.org/2001/XMLSchema#float"],t.TypeHandlerNumberDouble=i},83002:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHandlerNumberInteger=void 0;const n=r(76516);class i{fromRdf(e,t){const r=parseInt(e.value,10);return t&&(isNaN(r)||e.value.indexOf(".")>=0)&&n.Translator.incorrectRdfDataType(e),r}toRdf(e,{datatype:t,dataFactory:r}){return r.literal(String(e),t||(e<=i.MAX_INT&&e>=i.MIN_INT?r.namedNode(i.TYPES[0]):r.namedNode(i.TYPES[1])))}}i.TYPES=["http://www.w3.org/2001/XMLSchema#integer","http://www.w3.org/2001/XMLSchema#long","http://www.w3.org/2001/XMLSchema#int","http://www.w3.org/2001/XMLSchema#byte","http://www.w3.org/2001/XMLSchema#short","http://www.w3.org/2001/XMLSchema#negativeInteger","http://www.w3.org/2001/XMLSchema#nonNegativeInteger","http://www.w3.org/2001/XMLSchema#nonPositiveInteger","http://www.w3.org/2001/XMLSchema#positiveInteger","http://www.w3.org/2001/XMLSchema#unsignedByte","http://www.w3.org/2001/XMLSchema#unsignedInt","http://www.w3.org/2001/XMLSchema#unsignedLong","http://www.w3.org/2001/XMLSchema#unsignedShort"],i.MAX_INT=2147483647,i.MIN_INT=-2147483648,t.TypeHandlerNumberInteger=i},2074:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHandlerString=void 0;class r{fromRdf(e){return e.value}toRdf(e,{datatype:t,dataFactory:r}){return r.literal(e,t)}}r.TYPES=["http://www.w3.org/2001/XMLSchema#string","http://www.w3.org/2001/XMLSchema#normalizedString","http://www.w3.org/2001/XMLSchema#anyURI","http://www.w3.org/2001/XMLSchema#base64Binary","http://www.w3.org/2001/XMLSchema#language","http://www.w3.org/2001/XMLSchema#Name","http://www.w3.org/2001/XMLSchema#NCName","http://www.w3.org/2001/XMLSchema#NMTOKEN","http://www.w3.org/2001/XMLSchema#token","http://www.w3.org/2001/XMLSchema#hexBinary","http://www.w3.org/1999/02/22-rdf-syntax-ns#langString","http://www.w3.org/2001/XMLSchema#time","http://www.w3.org/2001/XMLSchema#duration"],t.TypeHandlerString=r},23303:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(48403),t),i(r(5603),t),i(r(25947),t),i(r(83002),t),i(r(2074),t)},10953:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.storeStream=void 0;const n=r(92427);t.storeStream=function(e){const t=n.RdfStore.createDefault();return new Promise(((r,n)=>t.import(e).on("error",n).once("end",(()=>r(t)))))}},92427:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(51368),t),i(r(2369),t),i(r(62947),t),i(r(12924),t),i(r(76386),t),i(r(94992),t),i(r(26503),t),i(r(86721),t),i(r(93616),t),i(r(55100),t),i(r(95832),t),i(r(68752),t),i(r(38654),t),i(r(15698),t),i(r(53277),t),i(r(86937),t),i(r(15291),t),i(r(29390),t),i(r(25383),t),i(r(39034),t)},15291:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},29390:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.arePatternsQuoted=t.quadHasVariables=t.quadToPattern=t.encodeOptionalTerms=t.orderQuadComponents=t.getComponentOrderScore=t.getBestIndex=t.QUAD_TERM_NAMES_INVERSE=void 0;const n=r(13252);function i(e,t){return e.map(((r,n)=>t.includes(r)?e.length-n:0)).reduce(((e,t)=>e+t),0)}function a(e){for(const t of n.QUAD_TERM_NAMES){const r=e[t];if("Variable"===r.termType||"Quad"===r.termType&&a(r))return!0}return!1}t.QUAD_TERM_NAMES_INVERSE=Object.fromEntries(n.QUAD_TERM_NAMES.map(((e,t)=>[e,t]))),t.getBestIndex=function(e,t){if(1===e.length||t.every((e=>void 0!==e)))return 0;const r=[];for(let e=0;e({score:i(e,r),index:t}))).sort(((e,t)=>t.score-e.score))[0].index},t.getComponentOrderScore=i,t.orderQuadComponents=function(e,r){return e.map((e=>{const n=t.QUAD_TERM_NAMES_INVERSE[e];return r[n]}))},t.encodeOptionalTerms=function(e,t){const r=e.map((e=>{if(e){if("Quad"===e.termType&&a(e))return;const r=t.encodeOptional(e);return void 0===r?"none":r}return e}));if(!r.includes("none"))return r},t.quadToPattern=function(e,t,r,n,i){let a=!1;return[[e||void 0,t||void 0,r||void 0,n||void 0].map((e=>{if(e){if("Variable"===e.termType)return;if("Quad"===e.termType)return i?e:void(a=!0)}return e})),a]},t.quadHasVariables=a,t.arePatternsQuoted=function(e){return e.map((e=>"Quad"===(null==e?void 0:e.termType)&&a(e)))}},25383:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},39034:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStore=void 0;const n=r(76664),i=r(18050),a=r(13252),o=r(51368),s=r(76386),c=r(26503),u=r(68752),l=r(29390);class d{constructor(e){this.features={quotedTripleFiltering:!0},this._size=0,this.options=e,this.dataFactory=e.dataFactory,this.dictionary=e.dictionary,this.indexesWrapped=d.constructIndexesWrapped(e),this.indexesWrappedComponentOrders=this.indexesWrapped.map((e=>e.componentOrder))}static createDefault(){return new d({indexCombinations:d.DEFAULT_INDEX_COMBINATIONS,indexConstructor:e=>new u.RdfStoreIndexNestedMapQuoted(e),dictionary:new c.TermDictionaryQuotedIndexed(new s.TermDictionaryNumberRecordFullTerms),dataFactory:new i.DataFactory})}static constructIndexesWrapped(e){const t=[];if(0===e.indexCombinations.length)throw new Error("At least one index combination is required");for(const r of e.indexCombinations){if(!d.isCombinationValid(r))throw new Error(`Invalid index combination: ${r}`);t.push({index:e.indexConstructor(e),componentOrder:r,componentOrderInverse:Object.fromEntries(r.map(((e,t)=>[e,t])))})}return t}static isCombinationValid(e){for(const t of a.QUAD_TERM_NAMES)if(!e.includes(t))return!1;return 4===e.length}get size(){return this._size}addQuad(e){const t=[this.dictionary.encode(e.subject),this.dictionary.encode(e.predicate),this.dictionary.encode(e.object),this.dictionary.encode(e.graph)];let r=!1;for(const e of this.indexesWrapped)r=e.index.set((0,l.orderQuadComponents)(e.componentOrder,t),!0);return!!r&&(this._size++,!0)}removeQuad(e){const t=[this.dictionary.encodeOptional(e.subject),this.dictionary.encodeOptional(e.predicate),this.dictionary.encodeOptional(e.object),this.dictionary.encodeOptional(e.graph)];if(t.includes(void 0))return!1;let r=!1;for(const e of this.indexesWrapped)if(r=e.index.remove((0,l.orderQuadComponents)(e.componentOrder,t)),!r)break;return!!r&&(this._size--,!0)}remove(e){return e.on("data",(e=>this.removeQuad(e))),e}removeMatches(e,t,r,n){return this.remove(this.match(e,t,r,n))}deleteGraph(e){return"string"==typeof e&&(e=this.dataFactory.namedNode(e)),this.removeMatches(void 0,void 0,void 0,e)}import(e){return e.on("data",(e=>this.addQuad(e))),e}*readQuads(e,t,r,n){const i=Boolean(this.dictionary.features.quotedTriples)&&Object.values(this.indexesWrapped).every((e=>e.index.features.quotedTripleFiltering)),[o,s]=(0,l.quadToPattern)(e,t,r,n,i),c=this.indexesWrapped[(0,l.getBestIndex)(this.indexesWrappedComponentOrders,o)],u=(0,l.orderQuadComponents)(c.componentOrder,o);for(const i of c.index.find(u)){const o=this.dataFactory.quad(i[c.componentOrderInverse.subject],i[c.componentOrderInverse.predicate],i[c.componentOrderInverse.object],i[c.componentOrderInverse.graph]);s?(0,a.matchPattern)(o,e,t,r,n)&&(yield o):yield o}}getQuads(e,t,r,n){return[...this.readQuads(e,t,r,n)]}match(e,t,r,i){return(0,n.wrap)(this.readQuads(e,t,r,i))}countQuads(e,t,r,n){const i=Boolean(this.dictionary.features.quotedTriples)&&Object.values(this.indexesWrapped).every((e=>e.index.features.quotedTripleFiltering)),[a]=(0,l.quadToPattern)(e,t,r,n,i);if(a.every((e=>void 0===e)))return this.size;const o=this.indexesWrapped[(0,l.getBestIndex)(this.indexesWrappedComponentOrders,a)],s=(0,l.orderQuadComponents)(o.componentOrder,a);return o.index.count(s)}asDataset(){return new o.DatasetCoreWrapper(this)}}d.DEFAULT_INDEX_COMBINATIONS=[["graph","subject","predicate","object"],["graph","predicate","object","subject"],["graph","object","subject","predicate"]],t.RdfStore=d},51368:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DatasetCoreWrapper=void 0;const n=r(39034);class i{constructor(e){this.store=e}get size(){return this.store.size}add(e){return this.store.addQuad(e),this}delete(e){return this.store.removeQuad(e),this}has(e){for(const t of this.store.readQuads(e.subject,e.predicate,e.object,e.graph))return!0;return!1}match(e,t,r,a){const o=new n.RdfStore(this.store.options);for(const n of this.store.readQuads(e,t,r,a))o.addQuad(n);return new i(o)}[Symbol.iterator](){return this.store.readQuads()}}t.DatasetCoreWrapper=i},2369:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},62947:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryNumberMap=void 0;const n=r(18050),i=r(22112);t.TermDictionaryNumberMap=class{constructor(e=new n.DataFactory){this.lastId=0,this.dictionary=new Map,this.reverseDictionary=new Map,this.features={quotedTriples:!1},this.dataFactory=e}encode(e){const t=(0,i.termToString)(e);let r=this.dictionary.get(t);return void 0===r&&(r=this.lastId++,this.dictionary.set(t,r),this.reverseDictionary.set(r,t)),r}encodeOptional(e){const t=(0,i.termToString)(e);return this.dictionary.get(t)}decode(e){const t=this.reverseDictionary.get(e);if(void 0===t)throw new Error(`The value ${e} is not present in this dictionary`);return(0,i.stringToTerm)(t,this.dataFactory)}encodings(){return this.reverseDictionary.keys()}findQuotedTriples(e){throw new Error("findQuotedTriples is not supported")}findQuotedTriplesEncoded(e){throw new Error("findQuotedTriplesEncoded is not supported")}}},12924:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryNumberRecord=void 0;const n=r(18050),i=r(22112);t.TermDictionaryNumberRecord=class{constructor(e=new n.DataFactory){this.lastId=0,this.dictionary={},this.reverseDictionary={},this.features={quotedTriples:!1},this.dataFactory=e}encode(e){const t=(0,i.termToString)(e);let r=this.dictionary[t];return void 0===r&&(r=this.lastId++,this.dictionary[t]=r,this.reverseDictionary[r]=t),r}encodeOptional(e){const t=(0,i.termToString)(e);return this.dictionary[t]}decode(e){const t=this.reverseDictionary[e];if(void 0===t)throw new Error(`The value ${e} is not present in this dictionary`);return(0,i.stringToTerm)(t,this.dataFactory)}*encodings(){for(const e of Object.keys(this.reverseDictionary))yield Number.parseInt(e,10)}findQuotedTriples(e){throw new Error("findQuotedTriples is not supported")}findQuotedTriplesEncoded(e){throw new Error("findQuotedTriplesEncoded is not supported")}}},76386:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryNumberRecordFullTerms=void 0;const n=r(18050),i=r(22112);t.TermDictionaryNumberRecordFullTerms=class{constructor(e=new n.DataFactory){this.lastId=0,this.dictionary={},this.reverseDictionary={},this.features={quotedTriples:!1},this.dataFactory=e}encode(e){const t=(0,i.termToString)(e);let r=this.dictionary[t];return void 0===r&&(r=this.lastId++,this.dictionary[t]=r,this.reverseDictionary[r]=e),r}encodeOptional(e){const t=(0,i.termToString)(e);return this.dictionary[t]}decode(e){const t=this.reverseDictionary[e];if(void 0===t)throw new Error(`The value ${e} is not present in this dictionary`);return t}*encodings(){for(const e of Object.keys(this.reverseDictionary))yield Number.parseInt(e,10)}findQuotedTriples(e){throw new Error("findQuotedTriples is not supported")}findQuotedTriplesEncoded(e){throw new Error("findQuotedTriplesEncoded is not supported")}}},94992:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryQuoted=void 0;const n=r(18050),i=r(13252);class a{constructor(e,t,r=new n.DataFactory){this.features={quotedTriples:!0},this.plainTermDictionary=e,this.quotedTriplesDictionary=t,this.dataFactory=r}encode(e){return"Quad"===e.termType?a.BITMASK|1+this.quotedTriplesDictionary.encode(e):this.plainTermDictionary.encode(e)}encodeOptional(e){if("Quad"===e.termType){const t=this.quotedTriplesDictionary.encodeOptional(e);return void 0===t?t:a.BITMASK|1+t}return this.plainTermDictionary.encodeOptional(e)}decode(e){if(a.BITMASK&e){const t=(~a.BITMASK&e)-1;return this.quotedTriplesDictionary.decode(t)}return this.plainTermDictionary.decode(e)}*encodings(){for(const e of this.plainTermDictionary.encodings())yield e;for(const e of this.quotedTriplesDictionary.encodings())yield a.BITMASK|1+e}*findQuotedTriples(e){for(const t of this.findQuotedTriplesEncoded(e))yield this.decode(t)}*findQuotedTriplesEncoded(e){for(let t of this.quotedTriplesDictionary.encodings()){t=a.BITMASK|1+t;const r=this.decode(t);(0,i.matchPattern)(r,e.subject,e.predicate,e.object,e.graph)&&(yield t)}}}a.BITMASK=1<<31,t.TermDictionaryQuoted=a},26503:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryQuotedIndexed=void 0;const n=r(18050),i=r(95832),a=r(29390);class o{constructor(e,t=new n.DataFactory){this.quotedTriplesDictionary=[],this.features={quotedTriples:!0},this.plainTermDictionary=e;const r={indexCombinations:[],indexConstructor:void 0,dictionary:this,dataFactory:t};this.quotedTriplesReverseDictionaries=[new i.RdfStoreIndexNestedMap(r),new i.RdfStoreIndexNestedMap(r),new i.RdfStoreIndexNestedMap(r)],this.dataFactory=t}encode(e){return"Quad"===e.termType?this.encodeQuotedTriple(e,!1):this.plainTermDictionary.encode(e)}encodeQuotedTriple(e,t){if("DefaultGraph"!==e.graph.termType)throw new Error("Encoding of quoted quads outside of the default graph is not allowed");const r=(0,a.encodeOptionalTerms)([e.subject,e.predicate,e.object,e.graph],this),n=r&&r.every((e=>void 0!==e))?this.quotedTriplesReverseDictionaries[0].getEncoded(r):void 0;if(void 0!==n||t)return void 0===n?void 0:o.BITMASK|n;const i=[this.encode(e.subject),this.encode(e.predicate),this.encode(e.object)],s=this.quotedTriplesDictionary.length+1;this.quotedTriplesDictionary.push(i);const c=this.encode(this.dataFactory.defaultGraph());return this.quotedTriplesReverseDictionaries[0].set([i[0],i[1],i[2],c],s),this.quotedTriplesReverseDictionaries[1].set([i[1],i[2],i[0],c],s),this.quotedTriplesReverseDictionaries[2].set([i[2],i[0],i[1],c],s),o.BITMASK|s}encodeOptional(e){return"Quad"===e.termType?this.encodeQuotedTriple(e,!0):this.plainTermDictionary.encodeOptional(e)}decode(e){if(o.BITMASK&e){const t=(~o.BITMASK&e)-1;if(t>=this.quotedTriplesDictionary.length)throw new Error(`The value ${e} is not present in the quoted triples range of the dictionary`);const r=this.quotedTriplesDictionary[t];return this.dataFactory.quad(this.decode(r[0]),this.decode(r[1]),this.decode(r[2]))}return this.plainTermDictionary.decode(e)}*encodings(){for(const e of this.plainTermDictionary.encodings())yield e;for(const e of this.quotedTriplesDictionary.keys())yield o.BITMASK|1+e}*findQuotedTriples(e){for(const t of this.findQuotedTriplesEncoded(e))yield this.decode(t)}*findQuotedTriplesEncoded(e){const[t,r]=(0,a.quadToPattern)(e.subject,e.predicate,e.object,e.graph,!0);for(const e of this.patternToIterable(t[0]))for(const r of this.patternToIterable(t[1]))for(const n of this.patternToIterable(t[2]))for(const i of this.patternToIterable(t[3]))if(e&&r||!r&&!n){const a=[e,r,n,i];for(const e of this.quotedTriplesReverseDictionaries[0].findEncoded(a,t))yield o.BITMASK|this.quotedTriplesReverseDictionaries[0].getEncoded(e)}else if(!e&&r){const a=[r,n,e,i];for(const e of this.quotedTriplesReverseDictionaries[1].findEncoded(a,t))yield o.BITMASK|this.quotedTriplesReverseDictionaries[1].getEncoded(e)}else{const a=[n,e,r,i];for(const e of this.quotedTriplesReverseDictionaries[2].findEncoded(a,t))yield o.BITMASK|this.quotedTriplesReverseDictionaries[2].getEncoded(e)}}*patternToIterable(e){if("Quad"===(null==e?void 0:e.termType))return void(yield*this.findQuotedTriplesEncoded(e));if(void 0===e)return void(yield);const t=this.encodeOptional(e);void 0!==t&&(yield t)}}o.BITMASK=1<<31,t.TermDictionaryQuotedIndexed=o},86721:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionaryQuotedReferential=void 0;const n=r(18050),i=r(13252),a=r(29390);class o{constructor(e,t=new n.DataFactory){this.quotedTriplesDictionary=[],this.quotedTriplesReverseDictionary={},this.features={quotedTriples:!0},this.plainTermDictionary=e,this.dataFactory=t}encode(e){return"Quad"===e.termType?this.encodeQuotedTriple(e,!1):this.plainTermDictionary.encode(e)}encodeQuotedTriple(e,t){var r;if("DefaultGraph"!==e.graph.termType)throw new Error("Encoding of quoted quads outside of the default graph is not allowed");const n=null===(r=(0,a.encodeOptionalTerms)([e.subject,e.predicate,e.object,void 0],this))||void 0===r?void 0:r.slice(0,3),i=n&&n.every((e=>void 0!==e))?this.quotedTriplesReverseDictionary[n.join(o.SEPARATOR)]:void 0;if(void 0!==i||t)return void 0===i?void 0:o.BITMASK|i;const s=[this.encode(e.subject),this.encode(e.predicate),this.encode(e.object)],c=this.quotedTriplesDictionary.length+1;return this.quotedTriplesDictionary.push(s),this.quotedTriplesReverseDictionary[s.join(o.SEPARATOR)]=c,o.BITMASK|c}encodeOptional(e){return"Quad"===e.termType?this.encodeQuotedTriple(e,!0):this.plainTermDictionary.encodeOptional(e)}decode(e){if(o.BITMASK&e){const t=(~o.BITMASK&e)-1;if(t>=this.quotedTriplesDictionary.length)throw new Error(`The value ${e} is not present in the quoted triples range of the dictionary`);const r=this.quotedTriplesDictionary[t];return this.dataFactory.quad(this.decode(r[0]),this.decode(r[1]),this.decode(r[2]))}return this.plainTermDictionary.decode(e)}*encodings(){for(const e of this.plainTermDictionary.encodings())yield e;for(const e of this.quotedTriplesDictionary.keys())yield o.BITMASK|1+e}*findQuotedTriples(e){for(const t of this.findQuotedTriplesEncoded(e))yield this.decode(t)}*findQuotedTriplesEncoded(e){for(let t of this.quotedTriplesDictionary.keys()){t=o.BITMASK|1+t;const r=this.decode(t);(0,i.matchPattern)(r,e.subject,e.predicate,e.object,e.graph)&&(yield t)}}}o.BITMASK=1<<31,o.SEPARATOR="_",t.TermDictionaryQuotedReferential=o},93616:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TermDictionarySymbol=void 0;const n=r(18050),i=r(22112);t.TermDictionarySymbol=class{constructor(e=new n.DataFactory){this.features={quotedTriples:!1},this.dataFactory=e}encode(e){return Symbol.for(`rdf::${(0,i.termToString)(e)}`)}encodeOptional(e){return this.encode(e)}decode(e){const t=Symbol.keyFor(e);if(void 0===t)throw new Error(`The value ${String(e)} is not present in this dictionary`);return(0,i.stringToTerm)(t.slice(5),this.dataFactory)}encodings(){throw new Error("encodings is not supported")}findQuotedTriples(e){throw new Error("findQuotedTriples is not supported")}findQuotedTriplesEncoded(e){throw new Error("findQuotedTriplesEncoded is not supported")}}},55100:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},95832:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedMap=void 0;const n=r(29390);t.RdfStoreIndexNestedMap=class{constructor(e){this.features={quotedTripleFiltering:!1},this.dictionary=e.dictionary,this.nestedMap=new Map}set(e,t){const r=this.nestedMap;let n=r.get(e[0]);n||(n=new Map,r.set(e[0],n));let i=n.get(e[1]);i||(i=new Map,n.set(e[1],i));let a=i.get(e[2]);a||(a=new Map,i.set(e[2],a));const o=a.has(e[3]);return o||a.set(e[3],t),!o}remove(e){const t=this.nestedMap,r=t.get(e[0]);if(!r)return!1;const n=r.get(e[1]);if(!n)return!1;const i=n.get(e[2]);if(!i)return!1;const a=i.delete(e[3]);return a&&0===i.size&&(n.delete(e[2]),0===n.size&&(r.delete(e[1]),0===r.size&&t.delete(e[0]))),a}get(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(t&&!t.includes(void 0))return this.getEncoded(t)}getEncoded(e){const t=this.nestedMap.get(e[0]);if(!t)return;const r=t.get(e[1]);if(!r)return;const n=r.get(e[2]);return n?n.get(e[3]):void 0}*find(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!t)return;const[r,i,a,o]=t,[s,c,u,l]=e;let d,p,h,f,y,g,m;const b=this.nestedMap,v=void 0!==r?b.has(r)?[r]:[]:b.keys();for(const e of v){y=b.get(e),d=s||this.dictionary.decode(e);const t=void 0!==i?y.has(i)?[i]:[]:y.keys();for(const e of t){g=y.get(e),p=c||this.dictionary.decode(e);const t=void 0!==a?g.has(a)?[a]:[]:g.keys();for(const e of t){m=g.get(e),h=u||this.dictionary.decode(e);const t=void 0!==o?m.has(o)?[o]:[]:m.keys();for(const e of t)f=l||this.dictionary.decode(e),yield[d,p,h,f]}}}}*findEncoded(e,t){const[r,n,i,a]=e;let o,s,c;const u=this.nestedMap,l=void 0!==r?u.has(r)?[r]:[]:u.keys();for(const e of l){o=u.get(e);const t=void 0!==n?o.has(n)?[n]:[]:o.keys();for(const r of t){s=o.get(r);const t=void 0!==i?s.has(i)?[i]:[]:s.keys();for(const n of t){c=s.get(n);const t=void 0!==a?c.has(a)?[a]:[]:c.keys();for(const i of t)yield[e,r,n,i]}}}}count(e){let t=0;const r=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!r)return 0;const i=r[0],a=r[1],o=r[2],s=r[3];let c,u,l;const d=this.nestedMap,p=void 0!==i?d.has(i)?[i]:[]:d.keys();for(const e of p){c=d.get(e);const r=void 0!==a?c.has(a)?[a]:[]:c.keys();for(const e of r){u=c.get(e);const r=void 0!==o?u.has(o)?[o]:[]:u.keys();for(const e of r)l=u.get(e),void 0!==s?l.has(s)&&t++:t+=l.size}}return t}}},68752:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedMapQuoted=void 0;const n=r(29390),i=r(95832);class a extends i.RdfStoreIndexNestedMap{constructor(e){super(e),this.features={quotedTripleFiltering:!0}}*getQuotedPatternKeys(e,t){for(const r of this.dictionary.findQuotedTriplesEncoded(t))e.has(r)&&(yield r)}*find(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!t)return;const[r,i,a,o]=t,[s,c,u,l]=e,[d,p,h,f]=(0,n.arePatternsQuoted)(e);let y,g,m,b,v,_,w;const T=this.nestedMap,S=void 0!==s?d?this.getQuotedPatternKeys(T,s):T.has(r)?[r]:[]:T.keys();for(const e of S){v=T.get(e),y=!d&&s?s:this.dictionary.decode(e);const t=void 0!==c?p?this.getQuotedPatternKeys(v,c):v.has(i)?[i]:[]:v.keys();for(const e of t){_=v.get(e),g=!p&&c?c:this.dictionary.decode(e);const t=void 0!==u?h?this.getQuotedPatternKeys(_,u):_.has(a)?[a]:[]:_.keys();for(const e of t){w=_.get(e),m=!h&&u?u:this.dictionary.decode(e);const t=void 0!==l?f?this.getQuotedPatternKeys(w,l):w.has(o)?[o]:[]:w.keys();for(const e of t)b=!f&&l?l:this.dictionary.decode(e),yield[y,g,m,b]}}}}*findEncoded(e,t){const[r,i,a,o]=e,[s,c,u,l]=t,[d,p,h,f]=(0,n.arePatternsQuoted)(t);let y,g,m;const b=this.nestedMap,v=void 0!==s?d?this.getQuotedPatternKeys(b,s):b.has(r)?[r]:[]:b.keys();for(const e of v){y=b.get(e);const t=void 0!==c?p?this.getQuotedPatternKeys(y,c):y.has(i)?[i]:[]:y.keys();for(const r of t){g=y.get(r);const t=void 0!==u?h?this.getQuotedPatternKeys(g,u):g.has(a)?[a]:[]:g.keys();for(const n of t){m=g.get(n);const t=void 0!==l?f?this.getQuotedPatternKeys(m,l):m.has(o)?[o]:[]:m.keys();for(const i of t)yield[Number.parseInt(e,10),Number.parseInt(r,10),Number.parseInt(n,10),Number.parseInt(i,10)]}}}}count(e){let t=0;const r=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!r)return 0;const[i,a,o,s]=r,[c,u,l,d]=e,[p,h,f,y]=(0,n.arePatternsQuoted)(e);let g,m,b;const v=this.nestedMap,_=void 0!==c?p?this.getQuotedPatternKeys(v,c):v.has(i)?[i]:[]:v.keys();for(const e of _){g=v.get(e);const r=void 0!==u?h?this.getQuotedPatternKeys(g,u):g.has(a)?[a]:[]:g.keys();for(const e of r){m=g.get(e);const r=void 0!==l?f?this.getQuotedPatternKeys(m,l):m.has(o)?[o]:[]:m.keys();for(const e of r)b=m.get(e),void 0!==d?y?t+=[...this.getQuotedPatternKeys(b,d)].length:b.has(s)&&t++:t+=b.size}}return t}}t.RdfStoreIndexNestedMapQuoted=a},38654:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedMapRecursive=void 0;const n=r(29390);t.RdfStoreIndexNestedMapRecursive=class{constructor(e){this.features={quotedTripleFiltering:!1},this.dictionary=e.dictionary,this.nestedMap=new Map}set(e,t){let r=this.nestedMap,n=!1;for(const[i,a]of e.entries()){const o=r;let s=o.get(a);s?i===e.length-1&&(n=!0):(s=i===e.length-1?t:new Map,o.set(a,s)),r=s}return!n}remove(e){const t=this.nestedMap,r=t.get(e[0]);if(!r)return!1;const n=r.get(e[1]);if(!n)return!1;const i=n.get(e[2]);if(!i)return!1;const a=i.delete(e[3]);return a&&0===i.size&&(n.delete(e[2]),0===n.size&&(r.delete(e[1]),0===r.size&&t.delete(e[0]))),a}get(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(t&&!t.includes(void 0))return this.getEncoded(t)}getEncoded(e){const t=this.nestedMap.get(e[0]);if(!t)return;const r=t.get(e[1]);if(!r)return;const n=r.get(e[2]);return n?n.get(e[3]):void 0}*find(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(t)for(const r of this.findEncoded(t,e))yield[void 0!==t[0]?e[0]:this.dictionary.decode(r[0]),void 0!==t[1]?e[1]:this.dictionary.decode(r[1]),void 0!==t[2]?e[2]:this.dictionary.decode(r[2]),void 0!==t[3]?e[3]:this.dictionary.decode(r[3])]}*findEncoded(e,t){return yield*this.findEncodedInner(0,e,t,this.nestedMap,[])}*findEncodedInner(e,t,r,n,i){if(e===t.length)yield[...i];else{const a=t[e];if(r[e]){const o=a;if(void 0!==o){const s=n.get(o);s&&(i[e]=a,yield*this.findEncodedInner(e+1,t,r,s,i))}}else for(const[a,o]of n.entries())i[e]=a,yield*this.findEncodedInner(e+1,t,r,o,i)}}count(e){return this.countInner(0,e,this.nestedMap)}countInner(e,t,r){const n=t[e];let i=0;if(n){const a=this.dictionary.encodeOptional(n);if(void 0!==a){if(e===t.length-1)return r.has(a)?1:0;const n=r.get(a);n&&(i+=this.countInner(e+1,t,n))}}else{if(e===t.length-1)return r.size;for(const n of r.values())i+=this.countInner(e+1,t,n)}return i}}},15698:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedMapRecursiveQuoted=void 0;const n=r(29390),i=r(38654);class a extends i.RdfStoreIndexNestedMapRecursive{constructor(e){super(e),this.features={quotedTripleFiltering:!0}}*findEncoded(e,t){return yield*this.findEncodedInnerQuoted(0,e,t,(0,n.arePatternsQuoted)(t),this.nestedMap,[])}*findEncodedInnerQuoted(e,t,r,n,i,a){if(e===t.length)yield[...a];else{const o=t[e],s=r[e];if(s)if(n[e]){const o=this.dictionary.findQuotedTriplesEncoded(s);for(const s of o){const o=i.get(s);o&&(a[e]=s,yield*this.findEncodedInnerQuoted(e+1,t,r,n,o,a))}}else{const s=o;if(void 0!==s){const c=i.get(s);c&&(a[e]=o,yield*this.findEncodedInnerQuoted(e+1,t,r,n,c,a))}}else for(const[o,s]of i.entries())a[e]=o,yield*this.findEncodedInnerQuoted(e+1,t,r,n,s,a)}}countInner(e,t,r){const i=t[e];let a=0;if(i)if("Quad"===i.termType&&(0,n.quadHasVariables)(i)){const n=this.dictionary.findQuotedTriplesEncoded(i);for(const i of n)if(e===t.length-1)r.has(i)&&a++;else{const n=r.get(i);n&&(a+=this.countInner(e+1,t,n))}}else{const n=this.dictionary.encodeOptional(i);if(void 0!==n){if(e===t.length-1)return r.has(n)?1:0;const i=r.get(n);i&&(a+=this.countInner(e+1,t,i))}}else{if(e===t.length-1)return r.size;for(const n of r.values())a+=this.countInner(e+1,t,n)}return a}}t.RdfStoreIndexNestedMapRecursiveQuoted=a},53277:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedRecord=void 0;const n=r(29390);t.RdfStoreIndexNestedRecord=class{constructor(e){this.features={quotedTripleFiltering:!1},this.dictionary=e.dictionary,this.nestedRecords={}}set(e,t){const r=this.nestedRecords,n=r[e[0]]||(r[e[0]]={}),i=n[e[1]]||(n[e[1]]={}),a=i[e[2]]||(i[e[2]]={});return!a[e[3]]&&(a[e[3]]=t,!0)}remove(e){const t=this.nestedRecords,r=t[e[0]];if(!r)return!1;const n=r[e[1]];if(!n)return!1;const i=n[e[2]];return!!i&&!!i[e[3]]&&(delete i[e[3]],0===Object.keys(i).length&&(delete n[e[2]],0===Object.keys(n).length&&(delete r[e[1]],0===Object.keys(r).length&&delete t[e[0]])),!0)}get(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(t&&!t.includes(void 0))return this.getEncoded(t)}getEncoded(e){var t,r,n;return null===(n=null===(r=null===(t=this.nestedRecords[e[0]])||void 0===t?void 0:t[e[1]])||void 0===r?void 0:r[e[2]])||void 0===n?void 0:n[e[3]]}*find(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!t)return;const[r,i,a,o]=t,[s,c,u,l]=e;let d,p,h,f,y,g,m;const b=this.nestedRecords,v=void 0!==r?r in b?[r]:[]:Object.keys(b);for(const e of v){y=b[e],d=s||this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==i?i in y?[i]:[]:Object.keys(y);for(const e of t){g=y[e],p=c||this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==a?a in g?[a]:[]:Object.keys(g);for(const e of t){m=g[e],h=u||this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==o?o in m?[o]:[]:Object.keys(m);for(const e of t)f=l||this.dictionary.decode(Number.parseInt(e,10)),yield[d,p,h,f]}}}}*findEncoded(e,t){const[r,n,i,a]=e;let o,s,c;const u=this.nestedRecords,l=void 0!==r?r in u?[r]:[]:Object.keys(u);for(const e of l){o=u[e];const t=void 0!==n?n in o?[n]:[]:Object.keys(o);for(const r of t){s=o[r];const t=void 0!==i?i in s?[i]:[]:Object.keys(s);for(const n of t){c=s[n];const t=void 0!==a?a in c?[a]:[]:Object.keys(c);for(const i of t)yield[Number.parseInt(e,10),Number.parseInt(r,10),Number.parseInt(n,10),Number.parseInt(i,10)]}}}}count(e){let t=0;const r=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!r)return 0;const i=r[0],a=r[1],o=r[2],s=r[3];let c,u,l;const d=this.nestedRecords,p=void 0!==i?i in d?[i]:[]:Object.keys(d);for(const e of p){c=d[e];const r=void 0!==a?a in c?[a]:[]:Object.keys(c);for(const e of r){u=c[e];const r=void 0!==o?o in u?[o]:[]:Object.keys(u);for(const e of r)l=u[e],void 0!==s?s in l&&t++:t+=Object.keys(l).length}}return t}}},86937:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfStoreIndexNestedRecordQuoted=void 0;const n=r(29390),i=r(53277);class a extends i.RdfStoreIndexNestedRecord{constructor(e){super(e),this.features={quotedTripleFiltering:!0}}*getQuotedPatternKeys(e,t){for(const r of this.dictionary.findQuotedTriplesEncoded(t))r in e&&(yield r)}*find(e){const t=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!t)return;const[r,i,a,o]=t,[s,c,u,l]=e,[d,p,h,f]=(0,n.arePatternsQuoted)(e);let y,g,m,b,v,_,w;const T=this.nestedRecords,S=void 0!==s?d?this.getQuotedPatternKeys(T,s):r in T?[r]:[]:Object.keys(T);for(const e of S){v=T[e],y=!d&&s?s:this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==c?p?this.getQuotedPatternKeys(v,c):i in v?[i]:[]:Object.keys(v);for(const e of t){_=v[e],g=!p&&c?c:this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==u?h?this.getQuotedPatternKeys(_,u):a in _?[a]:[]:Object.keys(_);for(const e of t){w=_[e],m=!h&&u?u:this.dictionary.decode(Number.parseInt(e,10));const t=void 0!==l?f?this.getQuotedPatternKeys(w,l):o in w?[o]:[]:Object.keys(w);for(const e of t)b=!f&&l?l:this.dictionary.decode(Number.parseInt(e,10)),yield[y,g,m,b]}}}}*findEncoded(e,t){const[r,i,a,o]=e,[s,c,u,l]=t,[d,p,h,f]=(0,n.arePatternsQuoted)(t);let y,g,m;const b=this.nestedRecords,v=void 0!==s?d?this.getQuotedPatternKeys(b,s):r in b?[r]:[]:Object.keys(b);for(const e of v){y=b[e];const t=void 0!==c?p?this.getQuotedPatternKeys(y,c):i in y?[i]:[]:Object.keys(y);for(const r of t){g=y[r];const t=void 0!==u?h?this.getQuotedPatternKeys(g,u):a in g?[a]:[]:Object.keys(g);for(const n of t){m=g[n];const t=void 0!==l?f?this.getQuotedPatternKeys(m,l):o in m?[o]:[]:Object.keys(m);for(const i of t)yield[Number.parseInt(e,10),Number.parseInt(r,10),Number.parseInt(n,10),Number.parseInt(i,10)]}}}}count(e){let t=0;const r=(0,n.encodeOptionalTerms)(e,this.dictionary);if(!r)return 0;const[i,a,o,s]=r,[c,u,l,d]=e,[p,h,f,y]=(0,n.arePatternsQuoted)(e);let g,m,b;const v=this.nestedRecords,_=void 0!==c?p?this.getQuotedPatternKeys(v,c):i in v?[i]:[]:Object.keys(v);for(const e of _){g=v[e];const r=void 0!==u?h?this.getQuotedPatternKeys(g,u):a in g?[a]:[]:Object.keys(g);for(const e of r){m=g[e];const r=void 0!==l?f?this.getQuotedPatternKeys(m,l):o in m?[o]:[]:Object.keys(m);for(const e of r)b=m[e],void 0!==d?y?t+=[...this.getQuotedPatternKeys(b,d)].length:s in b&&t++:t+=Object.keys(b).length}}return t}}t.RdfStoreIndexNestedRecordQuoted=a},2887:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(32935),t),i(r(73974),t)},32935:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PendingStreamsIndex=void 0;const n=r(22112),i=r(13252);class a{constructor(){this.indexedStreams=new Map,this.allStreams=[]}termToString(e){return e&&"Variable"!==e.termType?(0,n.termToString)(e):a.ID_VARIABLE}addPatternListener(e,t,r,n,i){this.allStreams.push(e);const o=`${this.termToString(t)}${a.ID_SEPARATOR}${this.termToString(r)}${a.ID_SEPARATOR}${this.termToString(n)}${a.ID_SEPARATOR}${this.termToString(i)}`;let s=this.indexedStreams.get(o);s||(s=[],this.indexedStreams.set(o,s)),s.push(e)}getPendingStreamsForQuad(e){let t=[(0,i.getTerms)(e).map((e=>(0,n.termToString)(e)))];for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StreamingStore=void 0;const n=r(72243),i=r(58521),a=r(32935);t.StreamingStore=class{constructor(e=new n.Store){this.pendingStreams=new a.PendingStreamsIndex,this.ended=!1,this.store=e}end(){this.ended=!0;for(const e of this.pendingStreams.allStreams)e.push(null),e._pipeSource.unpipe()}importToListeners(e){e.on("data",(e=>{if(!this.ended&&!this.store.countQuads(e.subject,e.predicate,e.object,e.graph))for(const t of this.pendingStreams.getPendingStreamsForQuad(e))t.isInitialized&&(t.push(e),t.emit("quad",e))}))}import(e){if(this.ended)throw new Error("Attempted to import into an ended StreamingStore");return this.importToListeners(e),this.store.import(e)}match(e,t,r,n){const a=this.store.match(e,t,r,n);let o=a;if(!this.ended){const s=new i.PassThrough({objectMode:!0});this.pendingStreams.addPatternListener(s,e,t,r,n),o=a.pipe(s,{end:!1}),o._pipeSource=a;const c=a._read;a._read=e=>{s.isInitialized=!0,c.call(a,e)}}return o}getStore(){return this.store}}},64817:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.termToString=t.stringToTerm=t.stringQuadToQuad=t.quadToStringQuad=t.getLiteralValue=t.getLiteralType=t.getLiteralLanguage=void 0;const n=r(91379);Object.defineProperty(t,"getLiteralLanguage",{enumerable:!0,get:function(){return n.getLiteralLanguage}}),Object.defineProperty(t,"getLiteralType",{enumerable:!0,get:function(){return n.getLiteralType}}),Object.defineProperty(t,"getLiteralValue",{enumerable:!0,get:function(){return n.getLiteralValue}}),Object.defineProperty(t,"quadToStringQuad",{enumerable:!0,get:function(){return n.quadToStringQuad}}),Object.defineProperty(t,"stringQuadToQuad",{enumerable:!0,get:function(){return n.stringQuadToQuad}}),Object.defineProperty(t,"stringToTerm",{enumerable:!0,get:function(){return n.stringToTerm}}),Object.defineProperty(t,"termToString",{enumerable:!0,get:function(){return n.termToString}})},91379:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.stringQuadToQuad=t.quadToStringQuad=t.stringToTerm=t.getLiteralLanguage=t.getLiteralType=t.getLiteralValue=t.termToString=void 0;const n=new(r(18050).DataFactory);function i(e){var t,r;if(e)switch(e.termType){case"NamedNode":return`<${t=e.value,t.replace(u,d)}>`;case"BlankNode":return`_:${e.value}`;case"Literal":{const t=e;return`"${r=t.value,u.test(r)&&(r=r.replace(u,d)),r}"${t.datatype&&"http://www.w3.org/2001/XMLSchema#string"!==t.datatype.value&&"http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"!==t.datatype.value?`^^<${t.datatype.value}>`:""}${t.language?`@${t.language}`:""}`}case"Quad":return`<<${i(e.subject)} ${i(e.predicate)} ${i(e.object)}${"DefaultGraph"===e.graph.termType?"":` ${i(e.graph)}`}>>`;case"Variable":return`?${e.value}`;case"DefaultGraph":return e.value}}function a(e){const t=/^"([^]*)"((\^\^.*)|(@.*))?$/u.exec(e);if(!t)throw new Error(`${e} is not a literal`);return t[1].replace(/\\"/gu,'"')}function o(e){const t=/^"[^]*"(?:\^\^<([^"]+)>|(@)[^@"]+)?$/u.exec(e);if(!t)throw new Error(`${e} is not a literal`);return t[1]||(t[2]?"http://www.w3.org/1999/02/22-rdf-syntax-ns#langString":"http://www.w3.org/2001/XMLSchema#string")}function s(e){const t=/^"[^]*"(?:@([^@"]+)|\^\^[^"]+)?$/u.exec(e);if(!t)throw new Error(`${e} is not a literal`);return t[1]?t[1].toLowerCase():""}function c(e,t){if(t=t||n,!e||0===e.length)return t.defaultGraph();switch(e[0]){case"_":return t.blankNode(e.slice(2));case"?":if(!t.variable)throw new Error("Missing 'variable()' method on the given DataFactory");return t.variable(e.slice(1));case'"':{const r=s(e),n=t.namedNode(o(e));return t.literal(a(e),r||n)}default:if(e.startsWith("<<")&&e.endsWith(">>")){const r=e.slice(2,-2),n=[];let i=0,a=0;for(let t=0;t"===o){if(0===i)throw new Error(`Found closing tag without opening tag in ${e}`);i--}" "===o&&0===i&&(n.push(r.slice(a,t)),a=t+1)}if(0!==i)throw new Error(`Found opening tag without closing tag in ${e}`);if(n.push(r.slice(a,r.length)),3!==n.length&&4!==n.length)throw new Error(`Nested quad syntax error ${e}`);return t.quad(c(n[0]),c(n[1]),c(n[2]),n[3]?c(n[3]):void 0)}if(!e.startsWith("<")||!e.endsWith(">"))throw new Error(`Detected invalid iri for named node (must be wrapped in <>): ${e}`);return t.namedNode(e.slice(1,-1))}}t.termToString=i,t.getLiteralValue=a,t.getLiteralType=o,t.getLiteralLanguage=s,t.stringToTerm=c,t.quadToStringQuad=function(e){return{subject:i(e.subject),predicate:i(e.predicate),object:i(e.object),graph:i(e.graph)}},t.stringQuadToQuad=function(e,t){return(t=t||n).quad(c(e.subject,t),c(e.predicate,t),c(e.object,t),c(e.graph,t))};const u=/["\\\t\n\r\b\f\u0000-\u0019]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=new Map([["\\","\\\\"],['"','\\"'],["\t","\\t"],["\n","\\n"],["\r","\\r"],["\b","\\b"],["\f","\\f"]]);function d(e){const t=l.get(e);if(!t){if(1===e.length){const t=e.charCodeAt(0).toString(16);return`${"\\u0000".slice(0,-t.length)}${t}`}const t=(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)+9216).toString(16);return`${"\\U00000000".slice(0,-t.length)}${t}`}return t}},22112:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.termToString=t.stringToTerm=t.stringQuadToQuad=t.quadToStringQuad=t.getLiteralValue=t.getLiteralType=t.getLiteralLanguage=void 0;const n=r(48244);Object.defineProperty(t,"getLiteralLanguage",{enumerable:!0,get:function(){return n.getLiteralLanguage}}),Object.defineProperty(t,"getLiteralType",{enumerable:!0,get:function(){return n.getLiteralType}}),Object.defineProperty(t,"getLiteralValue",{enumerable:!0,get:function(){return n.getLiteralValue}}),Object.defineProperty(t,"quadToStringQuad",{enumerable:!0,get:function(){return n.quadToStringQuad}}),Object.defineProperty(t,"stringQuadToQuad",{enumerable:!0,get:function(){return n.stringQuadToQuad}}),Object.defineProperty(t,"stringToTerm",{enumerable:!0,get:function(){return n.stringToTerm}}),Object.defineProperty(t,"termToString",{enumerable:!0,get:function(){return n.termToString}})},48244:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.stringQuadToQuad=t.quadToStringQuad=t.stringToTerm=t.getLiteralLanguage=t.getLiteralType=t.getLiteralValue=t.termToString=void 0;const n=new(r(18050).DataFactory);function i(e){if(e)switch(e.termType){case"NamedNode":case"DefaultGraph":return e.value;case"BlankNode":return"_:"+e.value;case"Literal":const t=e;return'"'+t.value+'"'+(t.datatype&&"http://www.w3.org/2001/XMLSchema#string"!==t.datatype.value&&"http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"!==t.datatype.value?"^^"+t.datatype.value:"")+(t.language?"@"+t.language:"");case"Quad":return`<<${i(e.subject)} ${i(e.predicate)} ${i(e.object)}${"DefaultGraph"===e.graph.termType?"":" "+i(e.graph)}>>`;case"Variable":return"?"+e.value}}function a(e){const t=/^"([^]*)"/.exec(e);if(!t)throw new Error(e+" is not a literal");return t[1]}function o(e){const t=/^"[^]*"(?:\^\^([^"]+)|(@)[^@"]+)?$/.exec(e);if(!t)throw new Error(e+" is not a literal");return t[1]||(t[2]?"http://www.w3.org/1999/02/22-rdf-syntax-ns#langString":"http://www.w3.org/2001/XMLSchema#string")}function s(e){const t=/^"[^]*"(?:@([^@"]+)|\^\^[^"]+)?$/.exec(e);if(!t)throw new Error(e+" is not a literal");return t[1]?t[1].toLowerCase():""}function c(e,t){if(t=t||n,!e||!e.length)return t.defaultGraph();switch(e[0]){case"_":return t.blankNode(e.substr(2));case"?":if(!t.variable)throw new Error("Missing 'variable()' method on the given DataFactory");return t.variable(e.substr(1));case'"':const r=s(e),n=t.namedNode(o(e));return t.literal(a(e),r||n);default:if("<"===e[0]&&e.length>4&&"<"===e[1]&&">"===e[e.length-1]&&">"===e[e.length-2]){const r=e.slice(2,-2).trim();let n=[],i=0,a=0,o=!1;for(let t=0;t"===s){if(0===i)throw new Error("Found closing tag without opening tag in "+e);i--}if('"'===s){let e=!1,n=t;for(;n-- >0&&"\\"===r[n];)e=!e;e||(o=!o)}if(" "===s&&!o&&0===i){for(n.push(r.slice(a,t));" "===r[t+1];)t+=1;a=t+1}}if(0!==i)throw new Error("Found opening tag without closing tag in "+e);if(n.push(r.slice(a,r.length)),3!==n.length&&4!==n.length)throw new Error("Nested quad syntax error "+e);return n=n.map((e=>e.startsWith("<")&&!e.includes(" ")?e.slice(1,-1):e)),t.quad(c(n[0]),c(n[1]),c(n[2]),n[3]?c(n[3]):void 0)}return t.namedNode(e)}}t.termToString=i,t.getLiteralValue=a,t.getLiteralType=o,t.getLiteralLanguage=s,t.stringToTerm=c,t.quadToStringQuad=function(e){return{subject:i(e.subject),predicate:i(e.predicate),object:i(e.object),graph:i(e.graph)}},t.stringQuadToQuad=function(e,t){return(t=t||n).quad(c(e.subject,t),c(e.predicate,t),c(e.object,t),c(e.graph,t))}},13252:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(10175),t),i(r(86552),t)},10175:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.matchPatternMappings=t.matchPatternComplete=t.matchPattern=t.matchTerm=t.getValueNestedPath=t.someTermsNested=t.someTerms=t.everyTermsNested=t.everyTerms=t.reduceTermsNested=t.reduceTerms=t.mapTermsNested=t.mapTerms=t.filterQuadTermNamesNested=t.filterQuadTermNames=t.filterTermsNested=t.filterTerms=t.forEachTermsNested=t.forEachTerms=t.collectNamedTerms=t.getNamedTerms=t.getTermsNested=t.getTerms=t.TRIPLE_TERM_NAMES=t.QUAD_TERM_NAMES=void 0;const n=new(r(18050).DataFactory);function i(e,t){return t&&"DefaultGraph"===e.graph.termType?[e.subject,e.predicate,e.object]:[e.subject,e.predicate,e.object,e.graph]}function a(e,t){return t(e.subject,"subject")&&t(e.predicate,"predicate")&&t(e.object,"object")&&t(e.graph,"graph")}function o(e,t){return!t||"Variable"===t.termType||"Quad"===t.termType&&"Quad"===e.termType&&c(e,t)||t.equals(e)}function s(e,t,r,n,i){return o(e.subject,t)&&o(e.predicate,r)&&o(e.object,n)&&o(e.graph,i)}function c(e,t){return s(e,t.subject,t.predicate,t.object,t.graph)}t.QUAD_TERM_NAMES=["subject","predicate","object","graph"],t.TRIPLE_TERM_NAMES=["subject","predicate","object"],t.getTerms=i,t.getTermsNested=function e(t,r){const n=[];for(const a of i(t,r))"Quad"===a.termType?e(a,r).forEach((e=>n.push(e))):n.push(a);return n},t.getNamedTerms=function(e){return[{key:"subject",value:e.subject},{key:"predicate",value:e.predicate},{key:"object",value:e.object},{key:"graph",value:e.graph}]},t.collectNamedTerms=function(e,t,r){const i={};return e.forEach((e=>i[e.key]=e.value)),t&&(i.subject=i.subject||t("subject"),i.predicate=i.predicate||t("predicate"),i.object=i.object||t("object"),i.graph=i.graph||t("graph")),(r||n).quad(i.subject,i.predicate,i.object,i.graph)},t.forEachTerms=function(e,t){t(e.subject,"subject"),t(e.predicate,"predicate"),t(e.object,"object"),t(e.graph,"graph")},t.forEachTermsNested=function e(t,r,n=[]){"Quad"===t.subject.termType?e(t.subject,r,[...n,"subject"]):r(t.subject,[...n,"subject"]),"Quad"===t.predicate.termType?e(t.predicate,r,[...n,"predicate"]):r(t.predicate,[...n,"predicate"]),"Quad"===t.object.termType?e(t.object,r,[...n,"object"]):r(t.object,[...n,"object"]),"Quad"===t.graph.termType?e(t.graph,r,[...n,"graph"]):r(t.graph,[...n,"graph"])},t.filterTerms=function(e,t){const r=[];return t(e.subject,"subject")&&r.push(e.subject),t(e.predicate,"predicate")&&r.push(e.predicate),t(e.object,"object")&&r.push(e.object),t(e.graph,"graph")&&r.push(e.graph),r},t.filterTermsNested=function e(t,r,n=[]){let i=[];return"Quad"===t.subject.termType?i=[...i,...e(t.subject,r,[...n,"subject"])]:r(t.subject,[...n,"subject"])&&i.push(t.subject),"Quad"===t.predicate.termType?i=[...i,...e(t.predicate,r,[...n,"predicate"])]:r(t.predicate,[...n,"predicate"])&&i.push(t.predicate),"Quad"===t.object.termType?i=[...i,...e(t.object,r,[...n,"object"])]:r(t.object,[...n,"object"])&&i.push(t.object),"Quad"===t.graph.termType?i=[...i,...e(t.graph,r,[...n,"graph"])]:r(t.graph,[...n,"graph"])&&i.push(t.graph),i},t.filterQuadTermNames=function(e,t){const r=[];return t(e.subject,"subject")&&r.push("subject"),t(e.predicate,"predicate")&&r.push("predicate"),t(e.object,"object")&&r.push("object"),t(e.graph,"graph")&&r.push("graph"),r},t.filterQuadTermNamesNested=function e(t,r,n=[]){let i=[];const a=[...n,"subject"];"Quad"===t.subject.termType?i=[...i,...e(t.subject,r,a)]:r(t.subject,a)&&i.push(a);const o=[...n,"predicate"];"Quad"===t.predicate.termType?i=[...i,...e(t.predicate,r,o)]:r(t.predicate,o)&&i.push(o);const s=[...n,"object"];"Quad"===t.object.termType?i=[...i,...e(t.object,r,s)]:r(t.object,s)&&i.push(s);const c=[...n,"graph"];return"Quad"===t.graph.termType?i=[...i,...e(t.graph,r,c)]:r(t.graph,c)&&i.push(c),i},t.mapTerms=function(e,t,r){return(r||n).quad(t(e.subject,"subject"),t(e.predicate,"predicate"),t(e.object,"object"),t(e.graph,"graph"))},t.mapTermsNested=function e(t,r,i,a=[]){return(i||n).quad("Quad"===t.subject.termType?e(t.subject,r,i,[...a,"subject"]):r(t.subject,[...a,"subject"]),"Quad"===t.predicate.termType?e(t.predicate,r,i,[...a,"predicate"]):r(t.predicate,[...a,"predicate"]),"Quad"===t.object.termType?e(t.object,r,i,[...a,"object"]):r(t.object,[...a,"object"]),"Quad"===t.graph.termType?e(t.graph,r,i,[...a,"graph"]):r(t.graph,[...a,"graph"]))},t.reduceTerms=function(e,t,r){let n=r;return n=t(n,e.subject,"subject"),n=t(n,e.predicate,"predicate"),n=t(n,e.object,"object"),t(n,e.graph,"graph")},t.reduceTermsNested=function e(t,r,n,i=[]){let a=n;return a="Quad"===t.subject.termType?e(t.subject,r,a,[...i,"subject"]):r(a,t.subject,[...i,"subject"]),a="Quad"===t.predicate.termType?e(t.predicate,r,a,[...i,"predicate"]):r(a,t.predicate,[...i,"predicate"]),a="Quad"===t.object.termType?e(t.object,r,a,[...i,"object"]):r(a,t.object,[...i,"object"]),a="Quad"===t.graph.termType?e(t.graph,r,a,[...i,"graph"]):r(a,t.graph,[...i,"graph"]),a},t.everyTerms=a,t.everyTermsNested=function e(t,r,n=[]){return("Quad"===t.subject.termType?e(t.subject,r,[...n,"subject"]):r(t.subject,[...n,"subject"]))&&("Quad"===t.predicate.termType?e(t.predicate,r,[...n,"predicate"]):r(t.predicate,[...n,"predicate"]))&&("Quad"===t.object.termType?e(t.object,r,[...n,"object"]):r(t.object,[...n,"object"]))&&("Quad"===t.graph.termType?e(t.graph,r,[...n,"graph"]):r(t.graph,[...n,"graph"]))},t.someTerms=function(e,t){return t(e.subject,"subject")||t(e.predicate,"predicate")||t(e.object,"object")||t(e.graph,"graph")},t.someTermsNested=function e(t,r,n=[]){return("Quad"===t.subject.termType?e(t.subject,r,[...n,"subject"]):r(t.subject,[...n,"subject"]))||("Quad"===t.predicate.termType?e(t.predicate,r,[...n,"predicate"]):r(t.predicate,[...n,"predicate"]))||("Quad"===t.object.termType?e(t.object,r,[...n,"object"]):r(t.object,[...n,"object"]))||("Quad"===t.graph.termType?e(t.graph,r,[...n,"graph"]):r(t.graph,[...n,"graph"]))},t.getValueNestedPath=function e(t,r){if(0===r.length)return t;if("Quad"===t.termType)return e(t[r[0]],r.slice(1));throw new Error(`Tried to get ${r[0]} from term of type ${t.termType}`)},t.matchTerm=o,t.matchPattern=s,t.matchPatternComplete=c,t.matchPatternMappings=function(e,t,r={}){const n={};return function e(t,i){return a(t,((t,a)=>{var o,s;const c=i[a];switch(t.termType){case"Variable":return r.skipVarMapping&&"Variable"===c.termType||(null!==(s=null===(o=n[t.value])||void 0===o?void 0:o.equals(c))&&void 0!==s?s:(n[t.value]=c,!0));case"Quad":return"Quad"===c.termType&&e(t,c);default:return t.equals(c)}}))}(t,e)&&(!r.returnMappings||n)}},86552:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getQuads=t.getDefaultGraphs=t.getVariables=t.getLiterals=t.getBlankNodes=t.getNamedNodes=t.getTermsOfType=t.uniqTerms=t.TERM_TYPES=void 0;const n=r(22112);function i(e,t){return e.filter((e=>e.termType===t))}t.TERM_TYPES=["NamedNode","BlankNode","Literal","Variable","DefaultGraph","Quad"],t.uniqTerms=function(e){const t={};return e.filter((e=>{const r=(0,n.termToString)(e);return!(r in t)&&(t[r]=!0)}))},t.getTermsOfType=i,t.getNamedNodes=function(e){return i(e,"NamedNode")},t.getBlankNodes=function(e){return i(e,"BlankNode")},t.getLiterals=function(e){return i(e,"Literal")},t.getVariables=function(e){return i(e,"Variable")},t.getDefaultGraphs=function(e){return i(e,"DefaultGraph")},t.getQuads=function(e){return i(e,"Quad")}},21860:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(29145),t),i(r(55623),t),i(r(98532),t),i(r(59638),t),i(r(24012),t),i(r(69994),t)},29145:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},55623:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},98532:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},59638:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RdfaParser=void 0;const n=r(15482),i=r(58521),a=r(45497),o=r(68713),s=r(24012),c=r(69994);class u extends i.Transform{constructor(e){super({readableObjectMode:!0}),this.activeTagStack=[],e=e||{},this.options=e,this.util=new c.Util(e.dataFactory,e.baseIRI),this.defaultGraph=e.defaultGraph||this.util.dataFactory.defaultGraph();const t=e.contentType?c.Util.contentTypeToProfile(e.contentType):e.profile||"";this.features=e.features||s.RDFA_FEATURES[t],this.htmlParseListener=e.htmlParseListener,this.rdfaPatterns=this.features.copyRdfaPatterns?{}:null,this.pendingRdfaPatternCopies=this.features.copyRdfaPatterns?{}:null,this.parser=this.initializeParser("xml"===t),this.activeTagStack.push({incompleteTriples:[],inlist:!1,language:e.language,listMapping:{},listMappingLocal:{},name:"",prefixesAll:Object.assign(Object.assign({},o["@context"]),this.features.xhtmlInitialContext?a["@context"]:{}),prefixesCustom:{},skipElement:!1,vocab:e.vocab})}import(e){const t=new i.PassThrough({readableObjectMode:!0});e.on("error",(e=>r.emit("error",e))),e.on("data",(e=>t.push(e))),e.on("end",(()=>t.push(null)));const r=t.pipe(new u(this.options));return r}_transform(e,t,r){this.parser.write(e.toString()),r()}_flush(e){this.parser.end(),e()}onTagOpen(e,t){let r=this.activeTagStack.length-1;for(;r>0&&this.activeTagStack[r].skipElement;)r--;let n=this.activeTagStack[r];r!==this.activeTagStack.length-1&&(n=Object.assign(Object.assign({},n),{language:this.activeTagStack[this.activeTagStack.length-1].language,prefixesAll:this.activeTagStack[this.activeTagStack.length-1].prefixesAll,prefixesCustom:this.activeTagStack[this.activeTagStack.length-1].prefixesCustom,vocab:this.activeTagStack[this.activeTagStack.length-1].vocab}));const i={collectChildTags:n.collectChildTags,incompleteTriples:[],inlist:"inlist"in t,listMapping:[],listMappingLocal:n.listMapping,localBaseIRI:n.localBaseIRI,name:e,prefixesAll:null,prefixesCustom:null,skipElement:!1};if(this.activeTagStack.push(i),i.collectChildTags){for(const e of Object.keys(n.prefixesCustom).sort()){const r=n.prefixesCustom[e],i=""===e?"xmlns":"xmlns:"+e;i in t||(t[i]=r)}const r=Object.keys(t).map((e=>`${e}="${t[e]}"`)).join(" ");if(i.text=[`<${e}${r?" "+r:""}>`],this.features.skipHandlingXmlLiteralChildren)return}let a,o,s,u=!0,l=!0;if(this.features.onlyAllowUriRelRevIfProperty&&("property"in t&&"rel"in t&&(u=!1,t.rel.indexOf(":")<0&&delete t.rel),"property"in t&&"rev"in t&&(l=!1,t.rev.indexOf(":")<0&&delete t.rev)),this.features.copyRdfaPatterns){if(n.collectedPatternTag){const r={attributes:t,children:[],name:e,referenced:!1,rootPattern:!1,text:[]};return n.collectedPatternTag.children.push(r),void(i.collectedPatternTag=r)}if("rdfa:Pattern"===t.typeof)return void(i.collectedPatternTag={attributes:t,children:[],name:e,parentTag:n,referenced:!1,rootPattern:!0,text:[]});if("rdfa:copy"===t.property){const e=t.resource||t.href||t.src;return void(this.rdfaPatterns[e]?this.emitPatternCopy(n,this.rdfaPatterns[e],e):(this.pendingRdfaPatternCopies[e]||(this.pendingRdfaPatternCopies[e]=[]),this.pendingRdfaPatternCopies[e].push(n)))}}if(this.features.baseTag&&"base"===e&&t.href&&(this.util.baseIRI=this.util.getBaseIRI(t.href)),this.features.xmlBase&&t["xml:base"]&&(i.localBaseIRI=this.util.getBaseIRI(t["xml:base"])),this.features.timeTag&&"time"===e&&!t.datatype&&(i.interpretObjectAsTime=!0),"vocab"in t?t.vocab?(i.vocab=t.vocab,this.emitTriple(this.util.getBaseIriTerm(i),this.util.dataFactory.namedNode(c.Util.RDFA+"usesVocabulary"),this.util.dataFactory.namedNode(i.vocab))):i.vocab=this.activeTagStack[0].vocab:i.vocab=n.vocab,i.prefixesCustom=c.Util.parsePrefixes(t,n.prefixesCustom,this.features.xmlnsPrefixMappings),i.prefixesAll=Object.keys(i.prefixesCustom).length>0?Object.assign(Object.assign({},n.prefixesAll),i.prefixesCustom):n.prefixesAll,this.features.roleAttribute&&t.role){const e=t.id?this.util.createIri("#"+t.id,i,!1,!1,!1):this.util.createBlankNode(),r=i.vocab;i.vocab="http://www.w3.org/1999/xhtml/vocab#";for(const r of this.util.createVocabIris(t.role,i,!0,!1))this.emitTriple(e,this.util.dataFactory.namedNode("http://www.w3.org/1999/xhtml/vocab#role"),r);i.vocab=r}"xml:lang"in t||this.features.langAttribute&&"lang"in t?i.language=t["xml:lang"]||t.lang:i.language=n.language;const d=2===this.activeTagStack.length;if("rel"in t||"rev"in t?("about"in t?(a=this.util.createIri(t.about,i,!1,!0,!0),i.explicitNewSubject=!!a,"typeof"in t&&(s=a)):d?a=!0:n.object&&(a=n.object),"resource"in t&&(o=this.util.createIri(t.resource,i,!1,!0,!0)),o||("href"in t||"src"in t?o=this.util.createIri(t.href||t.src,i,!1,!1,!0):!("typeof"in t)||"about"in t||this.isInheritSubjectInHeadBody(e)||(o=this.util.createBlankNode())),"typeof"in t&&!("about"in t)&&(s=this.isInheritSubjectInHeadBody(e)?a:o)):!("property"in t)||"content"in t||"datatype"in t?(("about"in t||"resource"in t)&&(a=this.util.createIri(t.about||t.resource,i,!1,!0,!0),i.explicitNewSubject=!!a),a||!("href"in t)&&!("src"in t)||(a=this.util.createIri(t.href||t.src,i,!1,!1,!0),i.explicitNewSubject=!!a),a||(d?a=!0:this.isInheritSubjectInHeadBody(e)?a=n.object:"typeof"in t?(a=this.util.createBlankNode(),i.explicitNewSubject=!0):n.object&&(a=n.object,"property"in t||(i.skipElement=!0))),"typeof"in t&&(s=a)):("about"in t?(a=this.util.createIri(t.about,i,!1,!0,!0),i.explicitNewSubject=!!a):d?a=!0:n.object&&(a=n.object),"typeof"in t&&("about"in t&&(s=this.util.createIri(t.about,i,!1,!0,!0)),!s&&d&&(s=!0),!s&&"resource"in t&&(s=this.util.createIri(t.resource,i,!1,!0,!0)),s||!("href"in t)&&!("src"in t)||(s=this.util.createIri(t.href||t.src,i,!1,!1,!0)),!s&&this.isInheritSubjectInHeadBody(e)&&(s=a),s||(s=this.util.createBlankNode()),o=s)),s)for(const e of this.util.createVocabIris(t.typeof,i,!0,!0))this.emitTriple(this.util.getResourceOrBaseIri(s,i),this.util.dataFactory.namedNode(c.Util.RDF+"type"),e);if(a&&(i.listMapping={}),o){if("rel"in t&&"inlist"in t)for(const e of this.util.createVocabIris(t.rel,i,u,!1))this.addListMapping(i,a,e,o);if(!("rel"in t)||!("inlist"in t)){if("rel"in t)for(const e of this.util.createVocabIris(t.rel,i,u,!1))this.emitTriple(this.util.getResourceOrBaseIri(a,i),e,this.util.getResourceOrBaseIri(o,i));if("rev"in t)for(const e of this.util.createVocabIris(t.rev,i,l,!1))this.emitTriple(this.util.getResourceOrBaseIri(o,i),e,this.util.getResourceOrBaseIri(a,i))}}if(!o){if("rel"in t)if("inlist"in t)for(const e of this.util.createVocabIris(t.rel,i,u,!1))this.addListMapping(i,a,e,null),i.incompleteTriples.push({predicate:e,reverse:!1,list:!0});else for(const e of this.util.createVocabIris(t.rel,i,u,!1))i.incompleteTriples.push({predicate:e,reverse:!1});if("rev"in t)for(const e of this.util.createVocabIris(t.rev,i,l,!1))i.incompleteTriples.push({predicate:e,reverse:!0});i.incompleteTriples.length>0&&(o=this.util.createBlankNode())}if("property"in t){let e;if(i.predicates=this.util.createVocabIris(t.property,i,!0,!1),"datatype"in t?(i.datatype=this.util.createIri(t.datatype,i,!0,!0,!1),i.datatype&&(i.datatype.value===c.Util.RDF+"XMLLiteral"||this.features.htmlDatatype&&i.datatype.value===c.Util.RDF+"HTML")&&(i.collectChildTags=!0)):("rev"in t||"rel"in t||"content"in t||("resource"in t&&(e=this.util.createIri(t.resource,i,!1,!0,!0)),!e&&"href"in t&&(e=this.util.createIri(t.href,i,!1,!1,!0)),!e&&"src"in t&&(e=this.util.createIri(t.src,i,!1,!1,!0))),"typeof"in t&&!("about"in t)&&(e=s)),"content"in t){const e=this.util.createLiteral(t.content,i);if("inlist"in t)for(const t of i.predicates)this.addListMapping(i,a,t,e);else{const t=this.util.getResourceOrBaseIri(a,i);for(const r of i.predicates)this.emitTriple(t,r,e)}i.predicates=null}else if(this.features.datetimeAttribute&&"datetime"in t){i.interpretObjectAsTime=!0;const e=this.util.createLiteral(t.datetime,i);if("inlist"in t)for(const t of i.predicates)this.addListMapping(i,a,t,e);else{const t=this.util.getResourceOrBaseIri(a,i);for(const r of i.predicates)this.emitTriple(t,r,e)}i.predicates=null}else if(e){const r=this.util.getResourceOrBaseIri(e,i);if("inlist"in t)for(const e of i.predicates)this.addListMapping(i,a,e,r);else{const e=this.util.getResourceOrBaseIri(a,i);for(const t of i.predicates)this.emitTriple(e,t,r)}i.predicates=null}}let p=!1;if(!i.skipElement&&a&&n.incompleteTriples.length>0){p=!0;const e=this.util.getResourceOrBaseIri(n.subject,i),t=this.util.getResourceOrBaseIri(a,i);for(const r of n.incompleteTriples)if(r.reverse)this.emitTriple(t,r.predicate,e);else if(r.list){let e=null;for(let t=this.activeTagStack.length-1;t>=0;t--)if(this.activeTagStack[t].inlist){e=this.activeTagStack[t];break}this.addListMapping(e,a,r.predicate,t)}else this.emitTriple(e,r.predicate,t)}!p&&n.incompleteTriples.length>0&&(i.incompleteTriples=i.incompleteTriples.concat(n.incompleteTriples)),i.subject=a||n.subject,i.object=o||a}onText(e){const t=this.activeTagStack[this.activeTagStack.length-1];this.features.copyRdfaPatterns&&t.collectedPatternTag?t.collectedPatternTag.text.push(e):(t.text||(t.text=[]),t.text.push(e))}onTagClose(){const e=this.activeTagStack[this.activeTagStack.length-1],t=this.activeTagStack[this.activeTagStack.length-2];if(!(e.collectChildTags&&t.collectChildTags&&this.features.skipHandlingXmlLiteralChildren)){if(this.features.copyRdfaPatterns&&e.collectedPatternTag&&e.collectedPatternTag.rootPattern){const t=e.collectedPatternTag.attributes.resource;if(delete e.collectedPatternTag.attributes.resource,delete e.collectedPatternTag.attributes.typeof,this.rdfaPatterns[t]=e.collectedPatternTag,this.pendingRdfaPatternCopies[t]){for(const r of this.pendingRdfaPatternCopies[t])this.emitPatternCopy(r,e.collectedPatternTag,t);delete this.pendingRdfaPatternCopies[t]}return void this.activeTagStack.pop()}if(e.predicates){const r=this.util.getResourceOrBaseIri(e.subject,e);let n=e.text||[];e.collectChildTags&&t.collectChildTags&&(n=n.slice(1));const i=this.util.createLiteral(n.join(""),e);if(e.inlist)for(const t of e.predicates)this.addListMapping(e,r,t,i);else for(const t of e.predicates)this.emitTriple(r,t,i);t.predicates||(e.text=null)}if(e.object&&Object.keys(e.listMapping).length>0){const t=this.util.getResourceOrBaseIri(e.object,e);for(const r in e.listMapping){const n=this.util.dataFactory.namedNode(r),i=e.listMapping[r];if(i.length>0){const r=i.map((()=>this.util.createBlankNode()));for(let t=0;t`),e.text&&t&&(t.text?t.text=t.text.concat(e.text):t.text=e.text)}onEnd(){if(this.features.copyRdfaPatterns){this.features.copyRdfaPatterns=!1;for(const e in this.rdfaPatterns){const t=this.rdfaPatterns[e];t.referenced||(t.attributes.typeof="rdfa:Pattern",t.attributes.resource=e,this.emitPatternCopy(t.parentTag,t,e),t.referenced=!1,delete t.attributes.typeof,delete t.attributes.resource)}for(const e in this.pendingRdfaPatternCopies)for(const t of this.pendingRdfaPatternCopies[e])this.activeTagStack.push(t),this.onTagOpen("link",{property:"rdfa:copy",href:e}),this.onTagClose(),this.activeTagStack.pop();this.features.copyRdfaPatterns=!0}}isInheritSubjectInHeadBody(e){return this.features.inheritSubjectInHeadBody&&("head"===e||"body"===e)}addListMapping(e,t,r,n){if(e.explicitNewSubject){const i=this.util.createBlankNode();this.emitTriple(this.util.getResourceOrBaseIri(t,e),r,i),this.emitTriple(i,this.util.dataFactory.namedNode(c.Util.RDF+"first"),this.util.getResourceOrBaseIri(n,e)),this.emitTriple(i,this.util.dataFactory.namedNode(c.Util.RDF+"rest"),this.util.dataFactory.namedNode(c.Util.RDF+"nil"))}else{let t=e.listMappingLocal[r.value];t||(e.listMappingLocal[r.value]=t=[]),n&&t.push(n)}}emitTriple(e,t,r){"NamedNode"===e.termType&&e.value.indexOf(":")<0||"NamedNode"===t.termType&&t.value.indexOf(":")<0||"NamedNode"===r.termType&&r.value.indexOf(":")<0||this.push(this.util.dataFactory.quad(e,t,r,this.defaultGraph))}emitPatternCopy(e,t,r){if(this.activeTagStack.push(e),t.referenced=!0,t.constructedBlankNodes){let e=0;this.util.blankNodeFactory=()=>t.constructedBlankNodes[e++]}else t.constructedBlankNodes=[],this.util.blankNodeFactory=()=>{const e=this.util.dataFactory.blankNode();return t.constructedBlankNodes.push(e),e};this.emitPatternCopyAbsolute(t,!0,r),this.util.blankNodeFactory=null,this.activeTagStack.pop()}emitPatternCopyAbsolute(e,t,r){if(t||"rdfa:copy"!==e.attributes.property||e.attributes.href!==r){this.onTagOpen(e.name,e.attributes);for(const t of e.text)this.onText(t);for(const t of e.children)this.emitPatternCopyAbsolute(t,!1,r);this.onTagClose()}}initializeParser(e){return new n.Parser({onclosetag:()=>{try{this.onTagClose(),this.htmlParseListener&&this.htmlParseListener.onTagClose()}catch(e){this.emit("error",e)}},onend:()=>{try{this.onEnd(),this.htmlParseListener&&this.htmlParseListener.onEnd()}catch(e){this.emit("error",e)}},onopentag:(e,t)=>{try{this.onTagOpen(e,t),this.htmlParseListener&&this.htmlParseListener.onTagOpen(e,t)}catch(e){this.emit("error",e)}},ontext:e=>{try{this.onText(e),this.htmlParseListener&&this.htmlParseListener.onText(e)}catch(e){this.emit("error",e)}}},{decodeEntities:!0,recognizeSelfClosing:!0,xmlMode:e})}}t.RdfaParser=u},24012:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RDFA_CONTENTTYPES=t.RDFA_FEATURES=void 0,t.RDFA_FEATURES={"":{baseTag:!0,xmlBase:!0,langAttribute:!0,onlyAllowUriRelRevIfProperty:!0,inheritSubjectInHeadBody:!0,datetimeAttribute:!0,timeTag:!0,htmlDatatype:!0,copyRdfaPatterns:!0,xmlnsPrefixMappings:!0,xhtmlInitialContext:!0,roleAttribute:!0},core:{baseTag:!1,xmlBase:!1,langAttribute:!0,onlyAllowUriRelRevIfProperty:!0,inheritSubjectInHeadBody:!1,datetimeAttribute:!1,timeTag:!1,htmlDatatype:!1,copyRdfaPatterns:!0,xmlnsPrefixMappings:!0,xhtmlInitialContext:!1,roleAttribute:!1},html:{baseTag:!0,xmlBase:!1,langAttribute:!0,onlyAllowUriRelRevIfProperty:!0,inheritSubjectInHeadBody:!0,datetimeAttribute:!0,timeTag:!0,htmlDatatype:!0,copyRdfaPatterns:!0,xmlnsPrefixMappings:!0,xhtmlInitialContext:!1,roleAttribute:!0},xhtml:{baseTag:!0,xmlBase:!1,langAttribute:!0,onlyAllowUriRelRevIfProperty:!0,inheritSubjectInHeadBody:!0,datetimeAttribute:!0,timeTag:!0,htmlDatatype:!0,copyRdfaPatterns:!0,xmlnsPrefixMappings:!0,xhtmlInitialContext:!0,roleAttribute:!0},xml:{baseTag:!1,xmlBase:!0,langAttribute:!0,onlyAllowUriRelRevIfProperty:!1,inheritSubjectInHeadBody:!1,datetimeAttribute:!0,timeTag:!0,htmlDatatype:!1,copyRdfaPatterns:!1,xmlnsPrefixMappings:!0,xhtmlInitialContext:!1,roleAttribute:!0}},t.RDFA_CONTENTTYPES={"text/html":"html","application/xhtml+xml":"xhtml","application/xml":"xml","text/xml":"xml","image/svg+xml":"xml"}},69994:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Util=void 0;const n=r(9929),i=r(24012),a=r(18050);class o{constructor(e,t){this.dataFactory=e||new a.DataFactory,this.baseIRI=this.dataFactory.namedNode(t||""),this.baseIRIDocument=this.baseIRI}static parsePrefixes(e,t,r){const n={};if(r)for(const t in e)t.startsWith("xmlns")&&(n[t.substr(6)]=e[t]);if(e.prefix||Object.keys(n).length>0){const r=Object.assign(Object.assign({},t),n);if(e.prefix){let t;for(;t=o.PREFIX_REGEX.exec(e.prefix);)r[t[1]]=t[2]}return r}return t}static expandPrefixedTerm(e,t){const r=e.indexOf(":");let n,i;if(r>=0&&(n=e.substr(0,r),i=e.substr(r+1)),""===n)return"http://www.w3.org/1999/xhtml/vocab#"+i;if(n){const e=t.prefixesAll[n];if(e)return e+i}if(e){const r=t.prefixesAll[e.toLocaleLowerCase()];if(r)return r}return e}static isValidIri(e){return o.IRI_REGEX.test(e)}static contentTypeToProfile(e){return i.RDFA_CONTENTTYPES[e]||""}getBaseIRI(e){let t=e;const r=t.indexOf("#");return r>=0&&(t=t.substr(0,r)),this.dataFactory.namedNode((0,n.resolve)(t,this.baseIRI.value))}getResourceOrBaseIri(e,t){return!0===e?this.getBaseIriTerm(t):e}getBaseIriTerm(e){return e.localBaseIRI||this.baseIRI}createVocabIris(e,t,r,n){return e.split(/\s+/).filter((e=>e&&(r||e.indexOf(":")>=0))).map((e=>this.createIri(e,t,!0,!0,n))).filter((e=>null!=e))}createLiteral(e,t){if(t.interpretObjectAsTime&&!t.datatype)for(const r of o.TIME_REGEXES)if(e.match(r.regex)){t.datatype=this.dataFactory.namedNode(o.XSD+r.type);break}return this.dataFactory.literal(e,t.datatype||t.language)}createBlankNode(){return this.blankNodeFactory?this.blankNodeFactory():this.dataFactory.blankNode()}createIri(e,t,r,i,a){if(e=e||"",!i)return r||(e=(0,n.resolve)(e,this.getBaseIriTerm(t).value)),o.isValidIri(e)?this.dataFactory.namedNode(e):null;if(e.length>0&&"["===e[0]&&"]"===e[e.length-1]&&(e=e.substr(1,e.length-2)).indexOf(":")<0)return null;if(e.startsWith("_:"))return a?this.dataFactory.blankNode(e.substr(2)||"b_identity"):null;if(r&&t.vocab&&e.indexOf(":")<0)return this.dataFactory.namedNode(t.vocab+e);let s=o.expandPrefixedTerm(e,t);return r?e!==s&&(s=(0,n.resolve)(s,this.baseIRIDocument.value)):s=(0,n.resolve)(s,this.getBaseIriTerm(t).value),o.isValidIri(s)?this.dataFactory.namedNode(s):null}}t.Util=o,o.RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#",o.XSD="http://www.w3.org/2001/XMLSchema#",o.RDFA="http://www.w3.org/ns/rdfa#",o.PREFIX_REGEX=/\s*([^:\s]*)*:\s*([^\s]*)*\s*/g,o.TIME_REGEXES=[{regex:/^-?P([0-9]+Y)?([0-9]+M)?([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+(\.[0-9])?S)?)?$/,type:"duration"},{regex:/^[0-9]+-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]((Z?)|([\+-][0-9][0-9]:[0-9][0-9]))$/,type:"dateTime"},{regex:/^[0-9]+-[0-9][0-9]-[0-9][0-9]Z?$/,type:"date"},{regex:/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]((Z?)|([\+-][0-9][0-9]:[0-9][0-9]))$/,type:"time"},{regex:/^[0-9]+-[0-9][0-9]$/,type:"gYearMonth"},{regex:/^[0-9]+$/,type:"gYear"}],o.IRI_REGEX=/^([A-Za-z][A-Za-z0-9+-.]*|_):[^ "<>{}|\\\[\]`]*$/},97990:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(70326),t)},35695:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParseError=void 0;class r extends Error{constructor(e,t){const r=e.saxParser;super(e.trackPosition?`Line ${r.line} column ${r.column+1}: ${t}`:t)}}t.ParseError=r},70326:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParseType=t.RdfXmlParser=void 0;const n=r(9929),i=r(49126),a=r(58521),o=r(35695),s=r(18050),c=r(29815);class u extends a.Transform{constructor(e){super({readableObjectMode:!0}),this.activeTagStack=[],this.nodeIds={},e&&(Object.assign(this,e),this.options=e),this.dataFactory||(this.dataFactory=new s.DataFactory),this.baseIRI||(this.baseIRI=""),this.defaultGraph||(this.defaultGraph=this.dataFactory.defaultGraph()),!1!==this.validateUri&&(this.validateUri=!0),this.iriValidationStrategy||(this.iriValidationStrategy=this.validateUri?c.IriValidationStrategy.Pragmatic:c.IriValidationStrategy.None),this.saxParser=new i.SaxesParser({xmlns:!0,position:this.trackPosition}),this.attachSaxListeners()}import(e){const t=new a.PassThrough({readableObjectMode:!0});e.on("error",(e=>r.emit("error",e))),e.on("data",(e=>t.push(e))),e.on("end",(()=>t.push(null)));const r=t.pipe(new u(this.options));return r}_transform(e,t,r){try{this.saxParser.write(e)}catch(e){return r(e)}r()}newParseError(e){return new o.ParseError(this,e)}valueToUri(e,t){return this.uriToNamedNode((0,n.resolve)(e,t.baseIRI))}uriToNamedNode(e){const t=(0,c.validateIri)(e,this.iriValidationStrategy);if(t instanceof Error)throw this.newParseError(t.message);return this.dataFactory.namedNode(e)}validateNcname(e){if(!u.NCNAME_MATCHER.test(e))throw this.newParseError(`Not a valid NCName: ${e}`)}attachSaxListeners(){this.saxParser.on("error",(e=>this.emit("error",e))),this.saxParser.on("opentag",this.onTag.bind(this)),this.saxParser.on("text",this.onText.bind(this)),this.saxParser.on("cdata",this.onText.bind(this)),this.saxParser.on("closetag",this.onCloseTag.bind(this)),this.saxParser.on("doctype",this.onDoctype.bind(this))}onTag(e){const t=this.activeTagStack.length?this.activeTagStack[this.activeTagStack.length-1]:null;let r=l.RESOURCE;if(t&&(t.hadChildren=!0,r=t.childrenParseType),t&&t.childrenStringTags){const r=e.name;let n="";for(const t in e.attributes)n+=` ${t}="${e.attributes[t].value}"`;const i=`<${r}${n}>`;t.childrenStringTags.push(i);const a={childrenStringTags:t.childrenStringTags};return a.childrenStringEmitClosingTag=``,void this.activeTagStack.push(a)}const n={};t?(n.language=t.language,n.baseIRI=t.baseIRI):n.baseIRI=this.baseIRI,this.activeTagStack.push(n),r===l.RESOURCE?this.onTagResource(e,n,t,!t):this.onTagProperty(e,n,t)}onTagResource(e,t,r,i){t.childrenParseType=l.PROPERTY;let a=!0;if(e.uri===u.RDF){if(!i&&u.FORBIDDEN_NODE_ELEMENTS.indexOf(e.local)>=0)throw this.newParseError(`Illegal node element name: ${e.local}`);switch(e.local){case"RDF":t.childrenParseType=l.RESOURCE;case"Description":a=!1}}const o=[],s=[];let c=null,d=!1,p=!1,h=null;for(const i in e.attributes){const a=e.attributes[i];if(r&&a.uri===u.RDF)switch(a.local){case"about":if(c)throw this.newParseError(`Only one of rdf:about, rdf:nodeID and rdf:ID can be present, while ${a.value} and ${c} where found.`);c=a.value;continue;case"ID":if(c)throw this.newParseError(`Only one of rdf:about, rdf:nodeID and rdf:ID can be present, while ${a.value} and ${c} where found.`);this.validateNcname(a.value),c="#"+a.value,d=!0;continue;case"nodeID":if(c)throw this.newParseError(`Only one of rdf:about, rdf:nodeID and rdf:ID can be present, while ${a.value} and ${c} where found.`);this.validateNcname(a.value),c=a.value,p=!0;continue;case"bagID":throw this.newParseError("rdf:bagID is not supported.");case"type":h=a.value;continue;case"aboutEach":throw this.newParseError("rdf:aboutEach is not supported.");case"aboutEachPrefix":throw this.newParseError("rdf:aboutEachPrefix is not supported.");case"li":throw this.newParseError("rdf:li on node elements are not supported.")}else if(a.uri===u.XML){if("lang"===a.local){t.language=""===a.value?null:a.value.toLowerCase();continue}if("base"===a.local){t.baseIRI=(0,n.resolve)(a.value,t.baseIRI);continue}}"xml"===a.prefix||"xmlns"===a.prefix||""===a.prefix&&"xmlns"===a.local||!a.uri||(o.push(this.uriToNamedNode(a.uri+a.local)),s.push(a.value))}if(null!==c&&(t.subject=p?this.dataFactory.blankNode(c):this.valueToUri(c,t),d&&this.claimNodeId(t.subject)),t.subject||(t.subject=this.dataFactory.blankNode()),a){const n=this.uriToNamedNode(e.uri+e.local);this.emitTriple(t.subject,this.dataFactory.namedNode(u.RDF+"type"),n,r?r.reifiedStatementId:null)}if(r){if(r.predicate)if(r.childrenCollectionSubject){const e=this.dataFactory.blankNode();this.emitTriple(r.childrenCollectionSubject,r.childrenCollectionPredicate,e,r.reifiedStatementId),this.emitTriple(e,this.dataFactory.namedNode(u.RDF+"first"),t.subject,t.reifiedStatementId),r.childrenCollectionSubject=e,r.childrenCollectionPredicate=this.dataFactory.namedNode(u.RDF+"rest")}else{this.emitTriple(r.subject,r.predicate,t.subject,r.reifiedStatementId);for(let e=0;e=0)throw this.newParseError(`Illegal property element name: ${e.local}`);t.predicateSubPredicates=[],t.predicateSubObjects=[];let n=!1,i=!1,a=null,o=!0;const s=[],c=[];for(const r in e.attributes){const d=e.attributes[r];if(d.uri===u.RDF)switch(d.local){case"resource":if(a)throw this.newParseError(`Found both rdf:resource (${d.value}) and rdf:nodeID (${a}).`);if(n)throw this.newParseError(`rdf:parseType is not allowed on property elements with rdf:resource (${d.value})`);t.hadChildren=!0,a=d.value,o=!1;continue;case"datatype":if(i)throw this.newParseError(`Found both non-rdf:* property attributes and rdf:datatype (${d.value}).`);if(n)throw this.newParseError(`rdf:parseType is not allowed on property elements with rdf:datatype (${d.value})`);t.datatype=this.valueToUri(d.value,t);continue;case"nodeID":if(i)throw this.newParseError(`Found both non-rdf:* property attributes and rdf:nodeID (${d.value}).`);if(t.hadChildren)throw this.newParseError(`Found both rdf:resource and rdf:nodeID (${d.value}).`);if(n)throw this.newParseError(`rdf:parseType is not allowed on property elements with rdf:nodeID (${d.value})`);this.validateNcname(d.value),t.hadChildren=!0,a=d.value,o=!0;continue;case"bagID":throw this.newParseError("rdf:bagID is not supported.");case"parseType":if(i)throw this.newParseError("rdf:parseType is not allowed when non-rdf:* property attributes are present");if(t.datatype)throw this.newParseError(`rdf:parseType is not allowed on property elements with rdf:datatype (${t.datatype.value})`);if(a)throw this.newParseError(`rdf:parseType is not allowed on property elements with rdf:nodeID or rdf:resource (${a})`);if("Resource"===d.value){n=!0,t.childrenParseType=l.PROPERTY;const e=this.dataFactory.blankNode();this.emitTriple(t.subject,t.predicate,e,t.reifiedStatementId),t.subject=e,t.predicate=null}else"Collection"===d.value?(n=!0,t.hadChildren=!0,t.childrenCollectionSubject=t.subject,t.childrenCollectionPredicate=t.predicate,o=!1):"Literal"===d.value&&(n=!0,t.childrenTagsToString=!0,t.childrenStringTags=[]);continue;case"ID":this.validateNcname(d.value),t.reifiedStatementId=this.valueToUri("#"+d.value,t),this.claimNodeId(t.reifiedStatementId);continue}else if(d.uri===u.XML&&"lang"===d.local){t.language=""===d.value?null:d.value.toLowerCase();continue}if("xml"!==d.prefix&&"xmlns"!==d.prefix&&(""!==d.prefix||"xmlns"!==d.local)&&d.uri){if(n||t.datatype)throw this.newParseError(`Found illegal rdf:* properties on property element with attribute: ${d.value}`);t.hadChildren=!0,i=!0,s.push(this.uriToNamedNode(d.uri+d.local)),c.push(this.dataFactory.literal(d.value,t.datatype||t.language))}}if(null!==a){const e=t.subject;t.subject=o?this.dataFactory.blankNode(a):this.valueToUri(a,t),this.emitTriple(e,t.predicate,t.subject,t.reifiedStatementId);for(let e=0;e/g,((e,t,r)=>(this.saxParser.ENTITIES[t]=r,"")))}}var l;t.RdfXmlParser=u,u.MIME_TYPE="application/rdf+xml",u.RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#",u.XML="http://www.w3.org/XML/1998/namespace",u.FORBIDDEN_NODE_ELEMENTS=["RDF","ID","about","bagID","parseType","resource","nodeID","li","aboutEach","aboutEachPrefix"],u.FORBIDDEN_PROPERTY_ELEMENTS=["Description","RDF","ID","about","bagID","parseType","resource","nodeID","aboutEach","aboutEachPrefix"],u.NCNAME_MATCHER=/^([A-Za-z\xC0-\xD6\xD8-\xF6\u{F8}-\u{2FF}\u{370}-\u{37D}\u{37F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}_])([A-Za-z\xC0-\xD6\xD8-\xF6\u{F8}-\u{2FF}\u{370}-\u{37D}\u{37F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}_\-.0-9#xB7\u{0300}-\u{036F}\u{203F}-\u{2040}])*$/u,function(e){e[e.RESOURCE=0]="RESOURCE",e[e.PROPERTY=1]="PROPERTY"}(l||(t.ParseType=l={}))},84077:e=>{e.exports=function(t){if(!e.exports.WEBSTREAM_SUPPORT)throw new Error("No web ReadableStream support");var r=!1,n={};return new ReadableStream({start:function(e){for(var i in n.data=a,n.end=a,n.end=o,n.close=o,n.error=o,n)t.on(i,n[i]);function a(n){r||(e.enqueue(n),t.pause())}function o(i){if(!r){for(var a in r=!0,n)t.removeListener(a,n[a]);i?e.error(i):e.close()}}t.pause()},pull:function(){r||t.resume()},cancel:function(){for(var e in r=!0,n)t.removeListener(e,n[e]);t.push(null),t.pause(),t.destroy?t.destroy():t.close&&t.close()}})},e.exports.WEBSTREAM_SUPPORT="undefined"!=typeof ReadableStream},21434:(e,t,r)=>{"use strict";const{SymbolDispose:n}=r(51473),{AbortError:i,codes:a}=r(52590),{isNodeStream:o,isWebStream:s,kControllerErrorFunction:c}=r(92520),u=r(94869),{ERR_INVALID_ARG_TYPE:l}=a;let d;e.exports.addAbortSignal=function(t,r){if(((e,t)=>{if("object"!=typeof e||!("aborted"in e))throw new l("signal","AbortSignal",e)})(t),!o(r)&&!s(r))throw new l("stream",["ReadableStream","WritableStream","Stream"],r);return e.exports.addAbortSignalNoValidate(t,r)},e.exports.addAbortSignalNoValidate=function(e,t){if("object"!=typeof e||!("aborted"in e))return t;const a=o(t)?()=>{t.destroy(new i(void 0,{cause:e.reason}))}:()=>{t[c](new i(void 0,{cause:e.reason}))};if(e.aborted)a();else{d=d||r(46609).addAbortListener;const i=d(e,a);u(t,i[n])}return t}},82:(e,t,r)=>{"use strict";const{StringPrototypeSlice:n,SymbolIterator:i,TypedArrayPrototypeSet:a,Uint8Array:o}=r(51473),{Buffer:s}=r(1048),{inspect:c}=r(46609);e.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(e){const t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length}unshift(e){const t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}shift(){if(0===this.length)return;const e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}clear(){this.head=this.tail=null,this.length=0}join(e){if(0===this.length)return"";let t=this.head,r=""+t.data;for(;null!==(t=t.next);)r+=e+t.data;return r}concat(e){if(0===this.length)return s.alloc(0);const t=s.allocUnsafe(e>>>0);let r=this.head,n=0;for(;r;)a(t,r.data,n),n+=r.data.length,r=r.next;return t}consume(e,t){const r=this.head.data;if(ea.length)){e===a.length?(t+=a,++i,r.next?this.head=r.next:this.head=this.tail=null):(t+=n(a,0,e),this.head=r,r.data=n(a,e));break}t+=a,e-=a.length,++i}while(null!==(r=r.next));return this.length-=i,t}_getBuffer(e){const t=s.allocUnsafe(e),r=e;let n=this.head,i=0;do{const s=n.data;if(!(e>s.length)){e===s.length?(a(t,s,r-e),++i,n.next?this.head=n.next:this.head=this.tail=null):(a(t,new o(s.buffer,s.byteOffset,e),r-e),this.head=n,n.data=s.slice(e));break}a(t,s,r-e),e-=s.length,++i}while(null!==(n=n.next));return this.length-=i,t}[Symbol.for("nodejs.util.inspect.custom")](e,t){return c(this,{...t,depth:0,customInspect:!1})}}},67369:(e,t,r)=>{"use strict";const{pipeline:n}=r(16815),i=r(86279),{destroyer:a}=r(16527),{isNodeStream:o,isReadable:s,isWritable:c,isWebStream:u,isTransformStream:l,isWritableStream:d,isReadableStream:p}=r(92520),{AbortError:h,codes:{ERR_INVALID_ARG_VALUE:f,ERR_MISSING_ARGS:y}}=r(52590),g=r(94869);e.exports=function(...e){if(0===e.length)throw new y("streams");if(1===e.length)return i.from(e[0]);const t=[...e];if("function"==typeof e[0]&&(e[0]=i.from(e[0])),"function"==typeof e[e.length-1]){const t=e.length-1;e[t]=i.from(e[t])}for(let r=0;r0&&!(c(e[r])||d(e[r])||l(e[r])))throw new f(`streams[${r}]`,t[r],"must be writable")}let r,m,b,v,_;const w=e[0],T=n(e,(function(e){const t=v;v=null,t?t(e):e?_.destroy(e):O||S||_.destroy()})),S=!!(c(w)||d(w)||l(w)),O=!!(s(T)||p(T)||l(T));if(_=new i({writableObjectMode:!(null==w||!w.writableObjectMode),readableObjectMode:!(null==T||!T.readableObjectMode),writable:S,readable:O}),S){if(o(w))_._write=function(e,t,n){w.write(e,t)?n():r=n},_._final=function(e){w.end(),m=e},w.on("drain",(function(){if(r){const e=r;r=null,e()}}));else if(u(w)){const e=(l(w)?w.writable:w).getWriter();_._write=async function(t,r,n){try{await e.ready,e.write(t).catch((()=>{})),n()}catch(e){n(e)}},_._final=async function(t){try{await e.ready,e.close().catch((()=>{})),m=t}catch(e){t(e)}}}const e=l(T)?T.readable:T;g(e,(()=>{if(m){const e=m;m=null,e()}}))}if(O)if(o(T))T.on("readable",(function(){if(b){const e=b;b=null,e()}})),T.on("end",(function(){_.push(null)})),_._read=function(){for(;;){const e=T.read();if(null===e)return void(b=_._read);if(!_.push(e))return}};else if(u(T)){const e=(l(T)?T.readable:T).getReader();_._read=async function(){for(;;)try{const{value:t,done:r}=await e.read();if(!_.push(t))return;if(r)return void _.push(null)}catch{return}}}return _._destroy=function(e,t){e||null===v||(e=new h),b=null,r=null,m=null,null===v?t(e):(v=t,o(T)&&a(T,e))},_}},16527:(e,t,r)=>{"use strict";const n=r(39907),{aggregateTwoErrors:i,codes:{ERR_MULTIPLE_CALLBACK:a},AbortError:o}=r(52590),{Symbol:s}=r(51473),{kIsDestroyed:c,isDestroyed:u,isFinished:l,isServerRequest:d}=r(92520),p=s("kDestroy"),h=s("kConstruct");function f(e,t,r){e&&(e.stack,t&&!t.errored&&(t.errored=e),r&&!r.errored&&(r.errored=e))}function y(e,t,r){let i=!1;function a(t){if(i)return;i=!0;const a=e._readableState,o=e._writableState;f(t,o,a),o&&(o.closed=!0),a&&(a.closed=!0),"function"==typeof r&&r(t),t?n.nextTick(g,e,t):n.nextTick(m,e)}try{e._destroy(t||null,a)}catch(t){a(t)}}function g(e,t){b(e,t),m(e)}function m(e){const t=e._readableState,r=e._writableState;r&&(r.closeEmitted=!0),t&&(t.closeEmitted=!0),(null!=r&&r.emitClose||null!=t&&t.emitClose)&&e.emit("close")}function b(e,t){const r=e._readableState,n=e._writableState;null!=n&&n.errorEmitted||null!=r&&r.errorEmitted||(n&&(n.errorEmitted=!0),r&&(r.errorEmitted=!0),e.emit("error",t))}function v(e,t,r){const i=e._readableState,a=e._writableState;if(null!=a&&a.destroyed||null!=i&&i.destroyed)return this;null!=i&&i.autoDestroy||null!=a&&a.autoDestroy?e.destroy(t):t&&(t.stack,a&&!a.errored&&(a.errored=t),i&&!i.errored&&(i.errored=t),r?n.nextTick(b,e,t):b(e,t))}function _(e){let t=!1;function r(r){if(t)return void v(e,null!=r?r:new a);t=!0;const i=e._readableState,o=e._writableState,s=o||i;i&&(i.constructed=!0),o&&(o.constructed=!0),s.destroyed?e.emit(p,r):r?v(e,r,!0):n.nextTick(w,e)}try{e._construct((e=>{n.nextTick(r,e)}))}catch(e){n.nextTick(r,e)}}function w(e){e.emit(h)}function T(e){return(null==e?void 0:e.setHeader)&&"function"==typeof e.abort}function S(e){e.emit("close")}function O(e,t){e.emit("error",t),n.nextTick(S,e)}e.exports={construct:function(e,t){if("function"!=typeof e._construct)return;const r=e._readableState,i=e._writableState;r&&(r.constructed=!1),i&&(i.constructed=!1),e.once(h,t),e.listenerCount(h)>1||n.nextTick(_,e)},destroyer:function(e,t){e&&!u(e)&&(t||l(e)||(t=new o),d(e)?(e.socket=null,e.destroy(t)):T(e)?e.abort():T(e.req)?e.req.abort():"function"==typeof e.destroy?e.destroy(t):"function"==typeof e.close?e.close():t?n.nextTick(O,e,t):n.nextTick(S,e),e.destroyed||(e[c]=!0))},destroy:function(e,t){const r=this._readableState,n=this._writableState,a=n||r;return null!=n&&n.destroyed||null!=r&&r.destroyed?("function"==typeof t&&t(),this):(f(e,n,r),n&&(n.destroyed=!0),r&&(r.destroyed=!0),a.constructed?y(this,e,t):this.once(p,(function(r){y(this,i(r,e),t)})),this)},undestroy:function(){const e=this._readableState,t=this._writableState;e&&(e.constructed=!0,e.closed=!1,e.closeEmitted=!1,e.destroyed=!1,e.errored=null,e.errorEmitted=!1,e.reading=!1,e.ended=!1===e.readable,e.endEmitted=!1===e.readable),t&&(t.constructed=!0,t.destroyed=!1,t.closed=!1,t.closeEmitted=!1,t.errored=null,t.errorEmitted=!1,t.finalCalled=!1,t.prefinished=!1,t.ended=!1===t.writable,t.ending=!1===t.writable,t.finished=!1===t.writable)},errorOrDestroy:v}},86279:(e,t,r)=>{"use strict";const{ObjectDefineProperties:n,ObjectGetOwnPropertyDescriptor:i,ObjectKeys:a,ObjectSetPrototypeOf:o}=r(51473);e.exports=u;const s=r(11509),c=r(65605);o(u.prototype,s.prototype),o(u,s);{const e=a(c.prototype);for(let t=0;t{const n=r(39907),i=r(1048),{isReadable:a,isWritable:o,isIterable:s,isNodeStream:c,isReadableNodeStream:u,isWritableNodeStream:l,isDuplexNodeStream:d,isReadableStream:p,isWritableStream:h}=r(92520),f=r(94869),{AbortError:y,codes:{ERR_INVALID_ARG_TYPE:g,ERR_INVALID_RETURN_VALUE:m}}=r(52590),{destroyer:b}=r(16527),v=r(86279),_=r(11509),w=r(65605),{createDeferredPromise:T}=r(46609),S=r(81613),O=globalThis.Blob||i.Blob,E=void 0!==O?function(e){return e instanceof O}:function(e){return!1},x=globalThis.AbortController||r(67083).AbortController,{FunctionPrototypeCall:A}=r(51473);class R extends v{constructor(e){super(e),!1===(null==e?void 0:e.readable)&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),!1===(null==e?void 0:e.writable)&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}}function I(e){const t=e.readable&&"function"!=typeof e.readable.read?_.wrap(e.readable):e.readable,r=e.writable;let n,i,s,c,u,l=!!a(t),d=!!o(r);function p(e){const t=c;c=null,t?t(e):e&&u.destroy(e)}return u=new R({readableObjectMode:!(null==t||!t.readableObjectMode),writableObjectMode:!(null==r||!r.writableObjectMode),readable:l,writable:d}),d&&(f(r,(e=>{d=!1,e&&b(t,e),p(e)})),u._write=function(e,t,i){r.write(e,t)?i():n=i},u._final=function(e){r.end(),i=e},r.on("drain",(function(){if(n){const e=n;n=null,e()}})),r.on("finish",(function(){if(i){const e=i;i=null,e()}}))),l&&(f(t,(e=>{l=!1,e&&b(t,e),p(e)})),t.on("readable",(function(){if(s){const e=s;s=null,e()}})),t.on("end",(function(){u.push(null)})),u._read=function(){for(;;){const e=t.read();if(null===e)return void(s=u._read);if(!u.push(e))return}}),u._destroy=function(e,a){e||null===c||(e=new y),s=null,n=null,i=null,null===c?a(e):(c=a,b(r,e),b(t,e))},u}e.exports=function e(t,r){if(d(t))return t;if(u(t))return I({readable:t});if(l(t))return I({writable:t});if(c(t))return I({writable:!1,readable:!1});if(p(t))return I({readable:_.fromWeb(t)});if(h(t))return I({writable:w.fromWeb(t)});if("function"==typeof t){const{value:e,write:i,final:a,destroy:o}=function(e){let{promise:t,resolve:r}=T();const i=new x,a=i.signal;return{value:e(async function*(){for(;;){const e=t;t=null;const{chunk:i,done:o,cb:s}=await e;if(n.nextTick(s),o)return;if(a.aborted)throw new y(void 0,{cause:a.reason});({promise:t,resolve:r}=T()),yield i}}(),{signal:a}),write(e,t,n){const i=r;r=null,i({chunk:e,done:!1,cb:n})},final(e){const t=r;r=null,t({done:!0,cb:e})},destroy(e,t){i.abort(),t(e)}}}(t);if(s(e))return S(R,e,{objectMode:!0,write:i,final:a,destroy:o});const c=null==e?void 0:e.then;if("function"==typeof c){let t;const r=A(c,e,(e=>{if(null!=e)throw new m("nully","body",e)}),(e=>{b(t,e)}));return t=new R({objectMode:!0,readable:!1,write:i,final(e){a((async()=>{try{await r,n.nextTick(e,null)}catch(t){n.nextTick(e,t)}}))},destroy:o})}throw new m("Iterable, AsyncIterable or AsyncFunction",r,e)}if(E(t))return e(t.arrayBuffer());if(s(t))return S(R,t,{objectMode:!0,writable:!1});if(p(null==t?void 0:t.readable)&&h(null==t?void 0:t.writable))return R.fromWeb(t);if("object"==typeof(null==t?void 0:t.writable)||"object"==typeof(null==t?void 0:t.readable))return I({readable:null!=t&&t.readable?u(null==t?void 0:t.readable)?null==t?void 0:t.readable:e(t.readable):void 0,writable:null!=t&&t.writable?l(null==t?void 0:t.writable)?null==t?void 0:t.writable:e(t.writable):void 0});const i=null==t?void 0:t.then;if("function"==typeof i){let e;return A(i,t,(t=>{null!=t&&e.push(t),e.push(null)}),(t=>{b(e,t)})),e=new R({objectMode:!0,writable:!1,read(){}})}throw new g(r,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],t)}},94869:(e,t,r)=>{const n=r(39907),{AbortError:i,codes:a}=r(52590),{ERR_INVALID_ARG_TYPE:o,ERR_STREAM_PREMATURE_CLOSE:s}=a,{kEmptyObject:c,once:u}=r(46609),{validateAbortSignal:l,validateFunction:d,validateObject:p,validateBoolean:h}=r(77840),{Promise:f,PromisePrototypeThen:y,SymbolDispose:g}=r(51473),{isClosed:m,isReadable:b,isReadableNodeStream:v,isReadableStream:_,isReadableFinished:w,isReadableErrored:T,isWritable:S,isWritableNodeStream:O,isWritableStream:E,isWritableFinished:x,isWritableErrored:A,isNodeStream:R,willEmitClose:I,kIsClosedPromise:P}=r(92520);let N;const D=()=>{};function j(e,t,a){var h,f;if(2===arguments.length?(a=t,t=c):null==t?t=c:p(t,"options"),d(a,"callback"),l(t.signal,"options.signal"),a=u(a),_(e)||E(e))return function(e,t,a){let o=!1,s=D;if(t.signal)if(s=()=>{o=!0,a.call(e,new i(void 0,{cause:t.signal.reason}))},t.signal.aborted)n.nextTick(s);else{N=N||r(46609).addAbortListener;const n=N(t.signal,s),i=a;a=u(((...t)=>{n[g](),i.apply(e,t)}))}const c=(...t)=>{o||n.nextTick((()=>a.apply(e,t)))};return y(e[P].promise,c,c),D}(e,t,a);if(!R(e))throw new o("stream",["ReadableStream","WritableStream","Stream"],e);const j=null!==(h=t.readable)&&void 0!==h?h:v(e),C=null!==(f=t.writable)&&void 0!==f?f:O(e),M=e._writableState,L=e._readableState,k=()=>{e.writable||U()};let F=I(e)&&v(e)===j&&O(e)===C,B=x(e,!1);const U=()=>{B=!0,e.destroyed&&(F=!1),(!F||e.readable&&!j)&&(j&&!q||a.call(e))};let q=w(e,!1);const V=()=>{q=!0,e.destroyed&&(F=!1),(!F||e.writable&&!C)&&(C&&!B||a.call(e))},Q=t=>{a.call(e,t)};let $=m(e);const H=()=>{$=!0;const t=A(e)||T(e);return t&&"boolean"!=typeof t?a.call(e,t):j&&!q&&v(e,!0)&&!w(e,!1)?a.call(e,new s):!C||B||x(e,!1)?void a.call(e):a.call(e,new s)},G=()=>{$=!0;const t=A(e)||T(e);if(t&&"boolean"!=typeof t)return a.call(e,t);a.call(e)},z=()=>{e.req.on("finish",U)};!function(e){return e.setHeader&&"function"==typeof e.abort}(e)?C&&!M&&(e.on("end",k),e.on("close",k)):(e.on("complete",U),F||e.on("abort",H),e.req?z():e.on("request",z)),F||"boolean"!=typeof e.aborted||e.on("aborted",H),e.on("end",V),e.on("finish",U),!1!==t.error&&e.on("error",Q),e.on("close",H),$?n.nextTick(H):null!=M&&M.errorEmitted||null!=L&&L.errorEmitted?F||n.nextTick(G):(j||F&&!b(e)||!B&&!1!==S(e))&&(C||F&&!S(e)||!q&&!1!==b(e))?L&&e.req&&e.aborted&&n.nextTick(G):n.nextTick(G);const K=()=>{a=D,e.removeListener("aborted",H),e.removeListener("complete",U),e.removeListener("abort",H),e.removeListener("request",z),e.req&&e.req.removeListener("finish",U),e.removeListener("end",k),e.removeListener("close",k),e.removeListener("finish",U),e.removeListener("end",V),e.removeListener("error",Q),e.removeListener("close",H)};if(t.signal&&!$){const o=()=>{const r=a;K(),r.call(e,new i(void 0,{cause:t.signal.reason}))};if(t.signal.aborted)n.nextTick(o);else{N=N||r(46609).addAbortListener;const n=N(t.signal,o),i=a;a=u(((...t)=>{n[g](),i.apply(e,t)}))}}return K}e.exports=j,e.exports.finished=function(e,t){var r;let n=!1;return null===t&&(t=c),null!==(r=t)&&void 0!==r&&r.cleanup&&(h(t.cleanup,"cleanup"),n=t.cleanup),new f(((r,i)=>{const a=j(e,t,(e=>{n&&a(),e?i(e):r()}))}))}},81613:(e,t,r)=>{"use strict";const n=r(39907),{PromisePrototypeThen:i,SymbolAsyncIterator:a,SymbolIterator:o}=r(51473),{Buffer:s}=r(1048),{ERR_INVALID_ARG_TYPE:c,ERR_STREAM_NULL_VALUES:u}=r(52590).codes;e.exports=function(e,t,r){let l,d;if("string"==typeof t||t instanceof s)return new e({objectMode:!0,...r,read(){this.push(t),this.push(null)}});if(t&&t[a])d=!0,l=t[a]();else{if(!t||!t[o])throw new c("iterable",["Iterable"],t);d=!1,l=t[o]()}const p=new e({objectMode:!0,highWaterMark:1,...r});let h=!1;return p._read=function(){h||(h=!0,async function(){for(;;){try{const{value:e,done:t}=d?await l.next():l.next();if(t)p.push(null);else{const t=e&&"function"==typeof e.then?await e:e;if(null===t)throw h=!1,new u;if(p.push(t))continue;h=!1}}catch(e){p.destroy(e)}break}}())},p._destroy=function(e,t){i(async function(e){const t=null!=e,r="function"==typeof l.throw;if(t&&r){const{value:t,done:r}=await l.throw(e);if(await t,r)return}if("function"==typeof l.return){const{value:e}=await l.return();await e}}(e),(()=>n.nextTick(t,e)),(r=>n.nextTick(t,r||e)))},p}},23054:(e,t,r)=>{"use strict";const{ArrayIsArray:n,ObjectSetPrototypeOf:i}=r(51473),{EventEmitter:a}=r(50046);function o(e){a.call(this,e)}function s(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?n(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}i(o.prototype,a.prototype),i(o,a),o.prototype.pipe=function(e,t){const r=this;function n(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function i(){r.readable&&r.resume&&r.resume()}r.on("data",n),e.on("drain",i),e._isStdio||t&&!1===t.end||(r.on("end",c),r.on("close",u));let o=!1;function c(){o||(o=!0,e.end())}function u(){o||(o=!0,"function"==typeof e.destroy&&e.destroy())}function l(e){d(),0===a.listenerCount(this,"error")&&this.emit("error",e)}function d(){r.removeListener("data",n),e.removeListener("drain",i),r.removeListener("end",c),r.removeListener("close",u),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",d),r.removeListener("close",d),e.removeListener("close",d)}return s(r,"error",l),s(e,"error",l),r.on("end",d),r.on("close",d),e.on("close",d),e.emit("pipe",r),e},e.exports={Stream:o,prependListener:s}},64708:(e,t,r)=>{"use strict";const n=globalThis.AbortController||r(67083).AbortController,{codes:{ERR_INVALID_ARG_VALUE:i,ERR_INVALID_ARG_TYPE:a,ERR_MISSING_ARGS:o,ERR_OUT_OF_RANGE:s},AbortError:c}=r(52590),{validateAbortSignal:u,validateInteger:l,validateObject:d}=r(77840),p=r(51473).Symbol("kWeak"),h=r(51473).Symbol("kResistStopPropagation"),{finished:f}=r(94869),y=r(67369),{addAbortSignalNoValidate:g}=r(21434),{isWritable:m,isNodeStream:b}=r(92520),{deprecate:v}=r(46609),{ArrayPrototypePush:_,Boolean:w,MathFloor:T,Number:S,NumberIsNaN:O,Promise:E,PromiseReject:x,PromiseResolve:A,PromisePrototypeThen:R,Symbol:I}=r(51473),P=I("kEmpty"),N=I("kEof");function D(e,t){if("function"!=typeof e)throw new a("fn",["Function","AsyncFunction"],e);null!=t&&d(t,"options"),null!=(null==t?void 0:t.signal)&&u(t.signal,"options.signal");let n=1;null!=(null==t?void 0:t.concurrency)&&(n=T(t.concurrency));let i=n-1;return null!=(null==t?void 0:t.highWaterMark)&&(i=T(t.highWaterMark)),l(n,"options.concurrency",1),l(i,"options.highWaterMark",0),i+=n,async function*(){const a=r(46609).AbortSignalAny([null==t?void 0:t.signal].filter(w)),o=this,s=[],u={signal:a};let l,d,p=!1,h=0;function f(){p=!0,y()}function y(){h-=1,g()}function g(){d&&!p&&h=i||h>=n)&&await new E((e=>{d=e}))}s.push(N)}catch(e){const t=x(e);R(t,y,f),s.push(t)}finally{p=!0,l&&(l(),l=null)}}();try{for(;;){for(;s.length>0;){const e=await s[0];if(e===N)return;if(a.aborted)throw new c;e!==P&&(yield e),s.shift(),g()}await new E((e=>{l=e}))}}finally{p=!0,d&&(d(),d=null)}}.call(this)}async function j(e,t=void 0){for await(const r of C.call(this,e,t))return!0;return!1}function C(e,t){if("function"!=typeof e)throw new a("fn",["Function","AsyncFunction"],e);return D.call(this,(async function(t,r){return await e(t,r)?t:P}),t)}class M extends o{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}}function L(e){if(e=S(e),O(e))return 0;if(e<0)throw new s("number",">= 0",e);return e}e.exports.streamReturningOperators={asIndexedPairs:v((function(e=void 0){return null!=e&&d(e,"options"),null!=(null==e?void 0:e.signal)&&u(e.signal,"options.signal"),async function*(){let t=0;for await(const n of this){var r;if(null!=e&&null!==(r=e.signal)&&void 0!==r&&r.aborted)throw new c({cause:e.signal.reason});yield[t++,n]}}.call(this)}),"readable.asIndexedPairs will be removed in a future version."),drop:function(e,t=void 0){return null!=t&&d(t,"options"),null!=(null==t?void 0:t.signal)&&u(t.signal,"options.signal"),e=L(e),async function*(){var r;if(null!=t&&null!==(r=t.signal)&&void 0!==r&&r.aborted)throw new c;for await(const r of this){var n;if(null!=t&&null!==(n=t.signal)&&void 0!==n&&n.aborted)throw new c;e--<=0&&(yield r)}}.call(this)},filter:C,flatMap:function(e,t){const r=D.call(this,e,t);return async function*(){for await(const e of r)yield*e}.call(this)},map:D,take:function(e,t=void 0){return null!=t&&d(t,"options"),null!=(null==t?void 0:t.signal)&&u(t.signal,"options.signal"),e=L(e),async function*(){var r;if(null!=t&&null!==(r=t.signal)&&void 0!==r&&r.aborted)throw new c;for await(const r of this){var n;if(null!=t&&null!==(n=t.signal)&&void 0!==n&&n.aborted)throw new c;if(e-- >0&&(yield r),e<=0)return}}.call(this)},compose:function(e,t){if(null!=t&&d(t,"options"),null!=(null==t?void 0:t.signal)&&u(t.signal,"options.signal"),b(e)&&!m(e))throw new i("stream",e,"must be writable");const r=y(this,e);return null!=t&&t.signal&&g(t.signal,r),r}},e.exports.promiseReturningOperators={every:async function(e,t=void 0){if("function"!=typeof e)throw new a("fn",["Function","AsyncFunction"],e);return!await j.call(this,(async(...t)=>!await e(...t)),t)},forEach:async function(e,t){if("function"!=typeof e)throw new a("fn",["Function","AsyncFunction"],e);for await(const r of D.call(this,(async function(t,r){return await e(t,r),P}),t));},reduce:async function(e,t,r){var i;if("function"!=typeof e)throw new a("reducer",["Function","AsyncFunction"],e);null!=r&&d(r,"options"),null!=(null==r?void 0:r.signal)&&u(r.signal,"options.signal");let o=arguments.length>1;if(null!=r&&null!==(i=r.signal)&&void 0!==i&&i.aborted){const e=new c(void 0,{cause:r.signal.reason});throw this.once("error",(()=>{})),await f(this.destroy(e)),e}const s=new n,l=s.signal;if(null!=r&&r.signal){const e={once:!0,[p]:this,[h]:!0};r.signal.addEventListener("abort",(()=>s.abort()),e)}let y=!1;try{for await(const n of this){var g;if(y=!0,null!=r&&null!==(g=r.signal)&&void 0!==g&&g.aborted)throw new c;o?t=await e(t,n,{signal:l}):(t=n,o=!0)}if(!y&&!o)throw new M}finally{s.abort()}return t},toArray:async function(e){null!=e&&d(e,"options"),null!=(null==e?void 0:e.signal)&&u(e.signal,"options.signal");const t=[];for await(const n of this){var r;if(null!=e&&null!==(r=e.signal)&&void 0!==r&&r.aborted)throw new c(void 0,{cause:e.signal.reason});_(t,n)}return t},some:j,find:async function(e,t){for await(const r of C.call(this,e,t))return r}}},76587:(e,t,r)=>{"use strict";const{ObjectSetPrototypeOf:n}=r(51473);e.exports=a;const i=r(32073);function a(e){if(!(this instanceof a))return new a(e);i.call(this,e)}n(a.prototype,i.prototype),n(a,i),a.prototype._transform=function(e,t,r){r(null,e)}},16815:(e,t,r)=>{const n=r(39907),{ArrayIsArray:i,Promise:a,SymbolAsyncIterator:o,SymbolDispose:s}=r(51473),c=r(94869),{once:u}=r(46609),l=r(16527),d=r(86279),{aggregateTwoErrors:p,codes:{ERR_INVALID_ARG_TYPE:h,ERR_INVALID_RETURN_VALUE:f,ERR_MISSING_ARGS:y,ERR_STREAM_DESTROYED:g,ERR_STREAM_PREMATURE_CLOSE:m},AbortError:b}=r(52590),{validateFunction:v,validateAbortSignal:_}=r(77840),{isIterable:w,isReadable:T,isReadableNodeStream:S,isNodeStream:O,isTransformStream:E,isWebStream:x,isReadableStream:A,isReadableFinished:R}=r(92520),I=globalThis.AbortController||r(67083).AbortController;let P,N,D;function j(e,t,r){let n=!1;return e.on("close",(()=>{n=!0})),{destroy:t=>{n||(n=!0,l.destroyer(e,t||new g("pipe")))},cleanup:c(e,{readable:t,writable:r},(e=>{n=!e}))}}function C(e){if(w(e))return e;if(S(e))return async function*(e){N||(N=r(11509)),yield*N.prototype[o].call(e)}(e);throw new h("val",["Readable","Iterable","AsyncIterable"],e)}async function M(e,t,r,{end:n}){let i,o=null;const s=e=>{if(e&&(i=e),o){const e=o;o=null,e()}},u=()=>new a(((e,t)=>{i?t(i):o=()=>{i?t(i):e()}}));t.on("drain",s);const l=c(t,{readable:!1},s);try{t.writableNeedDrain&&await u();for await(const r of e)t.write(r)||await u();n&&(t.end(),await u()),r()}catch(e){r(i!==e?p(i,e):e)}finally{l(),t.off("drain",s)}}async function L(e,t,r,{end:n}){E(t)&&(t=t.writable);const i=t.getWriter();try{for await(const t of e)await i.ready,i.write(t).catch((()=>{}));await i.ready,n&&await i.close(),r()}catch(e){try{await i.abort(e),r(e)}catch(e){r(e)}}}function k(e,t,a){if(1===e.length&&i(e[0])&&(e=e[0]),e.length<2)throw new y("streams");const o=new I,c=o.signal,u=null==a?void 0:a.signal,l=[];function p(){U(new b)}let g,m,v;_(u,"options.signal"),D=D||r(46609).addAbortListener,u&&(g=D(u,p));const R=[];let N,k=0;function B(e){U(e,0==--k)}function U(e,r){var i;if(!e||m&&"ERR_STREAM_PREMATURE_CLOSE"!==m.code||(m=e),m||r){for(;R.length;)R.shift()(m);null===(i=g)||void 0===i||i[s](),o.abort(),r&&(m||l.forEach((e=>e())),n.nextTick(t,m,v))}}for(let $=0;$0,K=G||!1!==(null==a?void 0:a.end),X=$===e.length-1;if(O(H)){if(K){const{destroy:J,cleanup:W}=j(H,G,z);R.push(J),T(H)&&X&&l.push(W)}function q(e){e&&"AbortError"!==e.name&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code&&B(e)}H.on("error",q),T(H)&&X&&l.push((()=>{H.removeListener("error",q)}))}if(0===$)if("function"==typeof H){if(N=H({signal:c}),!w(N))throw new f("Iterable, AsyncIterable or Stream","source",N)}else N=w(H)||S(H)||E(H)?H:d.from(H);else if("function"==typeof H){var V;if(N=E(N)?C(null===(V=N)||void 0===V?void 0:V.readable):C(N),N=H(N,{signal:c}),G){if(!w(N,!0))throw new f("AsyncIterable",`transform[${$-1}]`,N)}else{var Q;P||(P=r(76587));const Y=new P({objectMode:!0}),Z=null===(Q=N)||void 0===Q?void 0:Q.then;if("function"==typeof Z)k++,Z.call(N,(e=>{v=e,null!=e&&Y.write(e),K&&Y.end(),n.nextTick(B)}),(e=>{Y.destroy(e),n.nextTick(B,e)}));else if(w(N,!0))k++,M(N,Y,B,{end:K});else{if(!A(N)&&!E(N))throw new f("AsyncIterable or Promise","destination",N);{const re=N.readable||N;k++,M(re,Y,B,{end:K})}}N=Y;const{destroy:ee,cleanup:te}=j(N,!1,!0);R.push(ee),X&&l.push(te)}}else if(O(H)){if(S(N)){k+=2;const ne=F(N,H,B,{end:K});T(H)&&X&&l.push(ne)}else if(E(N)||A(N)){const ie=N.readable||N;k++,M(ie,H,B,{end:K})}else{if(!w(N))throw new h("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],N);k++,M(N,H,B,{end:K})}N=H}else if(x(H)){if(S(N))k++,L(C(N),H,B,{end:K});else if(A(N)||w(N))k++,L(N,H,B,{end:K});else{if(!E(N))throw new h("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],N);k++,L(N.readable,H,B,{end:K})}N=H}else N=d.from(H)}return(null!=c&&c.aborted||null!=u&&u.aborted)&&n.nextTick(p),N}function F(e,t,r,{end:i}){let a=!1;if(t.on("close",(()=>{a||r(new m)})),e.pipe(t,{end:!1}),i){function o(){a=!0,t.end()}R(e)?n.nextTick(o):e.once("end",o)}else r();return c(e,{readable:!0,writable:!1},(t=>{const n=e._readableState;t&&"ERR_STREAM_PREMATURE_CLOSE"===t.code&&n&&n.ended&&!n.errored&&!n.errorEmitted?e.once("end",r).once("error",r):r(t)})),c(t,{readable:!1,writable:!0},r)}e.exports={pipelineImpl:k,pipeline:function(...e){return k(e,u(function(e){return v(e[e.length-1],"streams[stream.length - 1]"),e.pop()}(e)))}}},11509:(e,t,r)=>{const n=r(39907),{ArrayPrototypeIndexOf:i,NumberIsInteger:a,NumberIsNaN:o,NumberParseInt:s,ObjectDefineProperties:c,ObjectKeys:u,ObjectSetPrototypeOf:l,Promise:d,SafeSet:p,SymbolAsyncDispose:h,SymbolAsyncIterator:f,Symbol:y}=r(51473);e.exports=X,X.ReadableState=K;const{EventEmitter:g}=r(50046),{Stream:m,prependListener:b}=r(23054),{Buffer:v}=r(1048),{addAbortSignal:_}=r(21434),w=r(94869);let T=r(46609).debuglog("stream",(e=>{T=e}));const S=r(82),O=r(16527),{getHighWaterMark:E,getDefaultHighWaterMark:x}=r(89952),{aggregateTwoErrors:A,codes:{ERR_INVALID_ARG_TYPE:R,ERR_METHOD_NOT_IMPLEMENTED:I,ERR_OUT_OF_RANGE:P,ERR_STREAM_PUSH_AFTER_EOF:N,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:D},AbortError:j}=r(52590),{validateObject:C}=r(77840),M=y("kPaused"),{StringDecoder:L}=r(18888),k=r(81613);l(X.prototype,m.prototype),l(X,m);const F=()=>{},{errorOrDestroy:B}=O,U=1,q=16,V=32,Q=64,$=2048,H=4096,G=65536;function z(e){return{enumerable:!1,get(){return!!(this.state&e)},set(t){t?this.state|=e:this.state&=~e}}}function K(e,t,n){"boolean"!=typeof n&&(n=t instanceof r(86279)),this.state=$|H|q|V,e&&e.objectMode&&(this.state|=U),n&&e&&e.readableObjectMode&&(this.state|=U),this.highWaterMark=e?E(this,e,"readableHighWaterMark",n):x(!1),this.buffer=new S,this.length=0,this.pipes=[],this.flowing=null,this[M]=null,e&&!1===e.emitClose&&(this.state&=~$),e&&!1===e.autoDestroy&&(this.state&=~H),this.errored=null,this.defaultEncoding=e&&e.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,e&&e.encoding&&(this.decoder=new L(e.encoding),this.encoding=e.encoding)}function X(e){if(!(this instanceof X))return new X(e);const t=this instanceof r(86279);this._readableState=new K(e,this,t),e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.construct&&(this._construct=e.construct),e.signal&&!t&&_(e.signal,this)),m.call(this,e),O.construct(this,(()=>{this._readableState.needReadable&&te(this,this._readableState)}))}function J(e,t,r,n){T("readableAddChunk",t);const i=e._readableState;let a;if(i.state&U||("string"==typeof t?(r=r||i.defaultEncoding,i.encoding!==r&&(n&&i.encoding?t=v.from(t,r).toString(i.encoding):(t=v.from(t,r),r=""))):t instanceof v?r="":m._isUint8Array(t)?(t=m._uint8ArrayToBuffer(t),r=""):null!=t&&(a=new R("chunk",["string","Buffer","Uint8Array"],t))),a)B(e,a);else if(null===t)i.state&=-9,function(e,t){if(T("onEofChunk"),!t.ended){if(t.decoder){const e=t.decoder.end();e&&e.length&&(t.buffer.push(e),t.length+=t.objectMode?1:e.length)}t.ended=!0,t.sync?Z(e):(t.needReadable=!1,t.emittedReadable=!0,ee(e))}}(e,i);else if(i.state&U||t&&t.length>0)if(n)if(4&i.state)B(e,new D);else{if(i.destroyed||i.errored)return!1;W(e,i,t,!0)}else if(i.ended)B(e,new N);else{if(i.destroyed||i.errored)return!1;i.state&=-9,i.decoder&&!r?(t=i.decoder.write(t),i.objectMode||0!==t.length?W(e,i,t,!1):te(e,i)):W(e,i,t,!1)}else n||(i.state&=-9,te(e,i));return!i.ended&&(i.length0?(t.state&G?t.awaitDrainWriters.clear():t.awaitDrainWriters=null,t.dataEmitted=!0,e.emit("data",r)):(t.length+=t.objectMode?1:r.length,n?t.buffer.unshift(r):t.buffer.push(r),t.state&Q&&Z(e)),te(e,t)}function Y(e,t){return e<=0||0===t.length&&t.ended?0:t.state&U?1:o(e)?t.flowing&&t.length?t.buffer.first().length:t.length:e<=t.length?e:t.ended?t.length:0}function Z(e){const t=e._readableState;T("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(T("emitReadable",t.flowing),t.emittedReadable=!0,n.nextTick(ee,e))}function ee(e){const t=e._readableState;T("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||t.errored||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,oe(e)}function te(e,t){!t.readingMore&&t.constructed&&(t.readingMore=!0,n.nextTick(re,e,t))}function re(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!1===t[M]?t.flowing=!0:e.listenerCount("data")>0?e.resume():t.readableListening||(t.flowing=null)}function ie(e){T("readable nexttick read 0"),e.read(0)}function ae(e,t){T("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),oe(e),t.flowing&&!t.reading&&e.read(0)}function oe(e){const t=e._readableState;for(T("flow",t.flowing);t.flowing&&null!==e.read(););}function se(e,t){"function"!=typeof e.read&&(e=X.wrap(e,{objectMode:!0}));const r=async function*(e,t){let r,n=F;function i(t){this===e?(n(),n=F):n=t}e.on("readable",i);const a=w(e,{writable:!1},(e=>{r=e?A(r,e):null,n(),n=F}));try{for(;;){const t=e.destroyed?null:e.read();if(null!==t)yield t;else{if(r)throw r;if(null===r)return;await new d(i)}}}catch(e){throw r=A(r,e),r}finally{!r&&!1===(null==t?void 0:t.destroyOnReturn)||void 0!==r&&!e._readableState.autoDestroy?(e.off("readable",i),a()):O.destroyer(e,null)}}(e,t);return r.stream=e,r}function ce(e,t){if(0===t.length)return null;let r;return t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function ue(e){const t=e._readableState;T("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,n.nextTick(le,t,e))}function le(e,t){if(T("endReadableNT",e.endEmitted,e.length),!e.errored&&!e.closeEmitted&&!e.endEmitted&&0===e.length)if(e.endEmitted=!0,t.emit("end"),t.writable&&!1===t.allowHalfOpen)n.nextTick(de,t);else if(e.autoDestroy){const e=t._writableState;(!e||e.autoDestroy&&(e.finished||!1===e.writable))&&t.destroy()}}function de(e){e.writable&&!e.writableEnded&&!e.destroyed&&e.end()}let pe;function he(){return void 0===pe&&(pe={}),pe}c(K.prototype,{objectMode:z(U),ended:z(2),endEmitted:z(4),reading:z(8),constructed:z(q),sync:z(V),needReadable:z(Q),emittedReadable:z(128),readableListening:z(256),resumeScheduled:z(512),errorEmitted:z(1024),emitClose:z($),autoDestroy:z(H),destroyed:z(8192),closed:z(16384),closeEmitted:z(32768),multiAwaitDrain:z(G),readingMore:z(1<<17),dataEmitted:z(1<<18)}),X.prototype.destroy=O.destroy,X.prototype._undestroy=O.undestroy,X.prototype._destroy=function(e,t){t(e)},X.prototype[g.captureRejectionSymbol]=function(e){this.destroy(e)},X.prototype[h]=function(){let e;return this.destroyed||(e=this.readableEnded?null:new j,this.destroy(e)),new d(((t,r)=>w(this,(n=>n&&n!==e?r(n):t(null)))))},X.prototype.push=function(e,t){return J(this,e,t,!1)},X.prototype.unshift=function(e,t){return J(this,e,t,!0)},X.prototype.isPaused=function(){const e=this._readableState;return!0===e[M]||!1===e.flowing},X.prototype.setEncoding=function(e){const t=new L(e);this._readableState.decoder=t,this._readableState.encoding=this._readableState.decoder.encoding;const r=this._readableState.buffer;let n="";for(const e of r)n+=t.write(e);return r.clear(),""!==n&&r.push(n),this._readableState.length=n.length,this},X.prototype.read=function(e){T("read",e),void 0===e?e=NaN:a(e)||(e=s(e,10));const t=this._readableState,r=e;if(e>t.highWaterMark&&(t.highWaterMark=function(e){if(e>1073741824)throw new P("size","<= 1GiB",e);return e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,++e}(e)),0!==e&&(t.state&=-129),0===e&&t.needReadable&&((0!==t.highWaterMark?t.length>=t.highWaterMark:t.length>0)||t.ended))return T("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?ue(this):Z(this),null;if(0===(e=Y(e,t))&&t.ended)return 0===t.length&&ue(this),null;let n,i=!!(t.state&Q);if(T("need readable",i),(0===t.length||t.length-e0?ce(e,t):null,null===n?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.multiAwaitDrain?t.awaitDrainWriters.clear():t.awaitDrainWriters=null),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&ue(this)),null===n||t.errorEmitted||t.closeEmitted||(t.dataEmitted=!0,this.emit("data",n)),n},X.prototype._read=function(e){throw new I("_read()")},X.prototype.pipe=function(e,t){const r=this,i=this._readableState;1===i.pipes.length&&(i.multiAwaitDrain||(i.multiAwaitDrain=!0,i.awaitDrainWriters=new p(i.awaitDrainWriters?[i.awaitDrainWriters]:[]))),i.pipes.push(e),T("pipe count=%d opts=%j",i.pipes.length,t);const a=t&&!1===t.end||e===n.stdout||e===n.stderr?y:o;function o(){T("onend"),e.end()}let s;i.endEmitted?n.nextTick(a):r.once("end",a),e.on("unpipe",(function t(n,a){T("onunpipe"),n===r&&a&&!1===a.hasUnpiped&&(a.hasUnpiped=!0,T("cleanup"),e.removeListener("close",h),e.removeListener("finish",f),s&&e.removeListener("drain",s),e.removeListener("error",d),e.removeListener("unpipe",t),r.removeListener("end",o),r.removeListener("end",y),r.removeListener("data",l),c=!0,s&&i.awaitDrainWriters&&(!e._writableState||e._writableState.needDrain)&&s())}));let c=!1;function u(){c||(1===i.pipes.length&&i.pipes[0]===e?(T("false write response, pause",0),i.awaitDrainWriters=e,i.multiAwaitDrain=!1):i.pipes.length>1&&i.pipes.includes(e)&&(T("false write response, pause",i.awaitDrainWriters.size),i.awaitDrainWriters.add(e)),r.pause()),s||(s=function(e,t){return function(){const r=e._readableState;r.awaitDrainWriters===t?(T("pipeOnDrain",1),r.awaitDrainWriters=null):r.multiAwaitDrain&&(T("pipeOnDrain",r.awaitDrainWriters.size),r.awaitDrainWriters.delete(t)),r.awaitDrainWriters&&0!==r.awaitDrainWriters.size||!e.listenerCount("data")||e.resume()}}(r,e),e.on("drain",s))}function l(t){T("ondata");const r=e.write(t);T("dest.write",r),!1===r&&u()}function d(t){if(T("onerror",t),y(),e.removeListener("error",d),0===e.listenerCount("error")){const r=e._writableState||e._readableState;r&&!r.errorEmitted?B(e,t):e.emit("error",t)}}function h(){e.removeListener("finish",f),y()}function f(){T("onfinish"),e.removeListener("close",h),y()}function y(){T("unpipe"),r.unpipe(e)}return r.on("data",l),b(e,"error",d),e.once("close",h),e.once("finish",f),e.emit("pipe",r),!0===e.writableNeedDrain?u():i.flowing||(T("pipe resume"),r.resume()),e},X.prototype.unpipe=function(e){const t=this._readableState;if(0===t.pipes.length)return this;if(!e){const e=t.pipes;t.pipes=[],this.pause();for(let t=0;t0,!1!==i.flowing&&this.resume()):"readable"===e&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,T("on readable",i.length,i.reading),i.length?Z(this):i.reading||n.nextTick(ie,this))),r},X.prototype.addListener=X.prototype.on,X.prototype.removeListener=function(e,t){const r=m.prototype.removeListener.call(this,e,t);return"readable"===e&&n.nextTick(ne,this),r},X.prototype.off=X.prototype.removeListener,X.prototype.removeAllListeners=function(e){const t=m.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||n.nextTick(ne,this),t},X.prototype.resume=function(){const e=this._readableState;return e.flowing||(T("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,n.nextTick(ae,e,t))}(this,e)),e[M]=!1,this},X.prototype.pause=function(){return T("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(T("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[M]=!0,this},X.prototype.wrap=function(e){let t=!1;e.on("data",(r=>{!this.push(r)&&e.pause&&(t=!0,e.pause())})),e.on("end",(()=>{this.push(null)})),e.on("error",(e=>{B(this,e)})),e.on("close",(()=>{this.destroy()})),e.on("destroy",(()=>{this.destroy()})),this._read=()=>{t&&e.resume&&(t=!1,e.resume())};const r=u(e);for(let t=1;t{"use strict";const{MathFloor:n,NumberIsInteger:i}=r(51473),{validateInteger:a}=r(77840),{ERR_INVALID_ARG_VALUE:o}=r(52590).codes;let s=16384,c=16;function u(e){return e?c:s}e.exports={getHighWaterMark:function(e,t,r,a){const s=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,a,r);if(null!=s){if(!i(s)||s<0)throw new o(a?`options.${r}`:"options.highWaterMark",s);return n(s)}return u(e.objectMode)},getDefaultHighWaterMark:u,setDefaultHighWaterMark:function(e,t){a(t,"value",0),e?c=t:s=t}}},32073:(e,t,r)=>{"use strict";const{ObjectSetPrototypeOf:n,Symbol:i}=r(51473);e.exports=u;const{ERR_METHOD_NOT_IMPLEMENTED:a}=r(52590).codes,o=r(86279),{getHighWaterMark:s}=r(89952);n(u.prototype,o.prototype),n(u,o);const c=i("kCallback");function u(e){if(!(this instanceof u))return new u(e);const t=e?s(this,e,"readableHighWaterMark",!0):null;0===t&&(e={...e,highWaterMark:null,readableHighWaterMark:t,writableHighWaterMark:e.writableHighWaterMark||0}),o.call(this,e),this._readableState.sync=!1,this[c]=null,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush&&(this._flush=e.flush)),this.on("prefinish",d)}function l(e){"function"!=typeof this._flush||this.destroyed?(this.push(null),e&&e()):this._flush(((t,r)=>{t?e?e(t):this.destroy(t):(null!=r&&this.push(r),this.push(null),e&&e())}))}function d(){this._final!==l&&l.call(this)}u.prototype._final=l,u.prototype._transform=function(e,t,r){throw new a("_transform()")},u.prototype._write=function(e,t,r){const n=this._readableState,i=this._writableState,a=n.length;this._transform(e,t,((e,t)=>{e?r(e):(null!=t&&this.push(t),i.ended||a===n.length||n.length{"use strict";const{SymbolAsyncIterator:n,SymbolIterator:i,SymbolFor:a}=r(51473),o=a("nodejs.stream.destroyed"),s=a("nodejs.stream.errored"),c=a("nodejs.stream.readable"),u=a("nodejs.stream.writable"),l=a("nodejs.stream.disturbed"),d=a("nodejs.webstream.isClosedPromise"),p=a("nodejs.webstream.controllerErrorFunction");function h(e,t=!1){var r;return!(!e||"function"!=typeof e.pipe||"function"!=typeof e.on||t&&("function"!=typeof e.pause||"function"!=typeof e.resume)||e._writableState&&!1===(null===(r=e._readableState)||void 0===r?void 0:r.readable)||e._writableState&&!e._readableState)}function f(e){var t;return!(!e||"function"!=typeof e.write||"function"!=typeof e.on||e._readableState&&!1===(null===(t=e._writableState)||void 0===t?void 0:t.writable))}function y(e){return e&&(e._readableState||e._writableState||"function"==typeof e.write&&"function"==typeof e.on||"function"==typeof e.pipe&&"function"==typeof e.on)}function g(e){return!(!e||y(e)||"function"!=typeof e.pipeThrough||"function"!=typeof e.getReader||"function"!=typeof e.cancel)}function m(e){return!(!e||y(e)||"function"!=typeof e.getWriter||"function"!=typeof e.abort)}function b(e){return!(!e||y(e)||"object"!=typeof e.readable||"object"!=typeof e.writable)}function v(e){if(!y(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!!(e.destroyed||e[o]||null!=n&&n.destroyed)}function _(e){if(!f(e))return null;if(!0===e.writableEnded)return!0;const t=e._writableState;return(null==t||!t.errored)&&("boolean"!=typeof(null==t?void 0:t.ended)?null:t.ended)}function w(e,t){if(!h(e))return null;const r=e._readableState;return(null==r||!r.errored)&&("boolean"!=typeof(null==r?void 0:r.endEmitted)?null:!!(r.endEmitted||!1===t&&!0===r.ended&&0===r.length))}function T(e){return e&&null!=e[c]?e[c]:"boolean"!=typeof(null==e?void 0:e.readable)?null:!v(e)&&h(e)&&e.readable&&!w(e)}function S(e){return e&&null!=e[u]?e[u]:"boolean"!=typeof(null==e?void 0:e.writable)?null:!v(e)&&f(e)&&e.writable&&!_(e)}function O(e){return"boolean"==typeof e._closed&&"boolean"==typeof e._defaultKeepAlive&&"boolean"==typeof e._removedConnection&&"boolean"==typeof e._removedContLen}function E(e){return"boolean"==typeof e._sent100&&O(e)}e.exports={isDestroyed:v,kIsDestroyed:o,isDisturbed:function(e){var t;return!(!e||!(null!==(t=e[l])&&void 0!==t?t:e.readableDidRead||e.readableAborted))},kIsDisturbed:l,isErrored:function(e){var t,r,n,i,a,o,c,u,l,d;return!(!e||!(null!==(t=null!==(r=null!==(n=null!==(i=null!==(a=null!==(o=e[s])&&void 0!==o?o:e.readableErrored)&&void 0!==a?a:e.writableErrored)&&void 0!==i?i:null===(c=e._readableState)||void 0===c?void 0:c.errorEmitted)&&void 0!==n?n:null===(u=e._writableState)||void 0===u?void 0:u.errorEmitted)&&void 0!==r?r:null===(l=e._readableState)||void 0===l?void 0:l.errored)&&void 0!==t?t:null===(d=e._writableState)||void 0===d?void 0:d.errored))},kIsErrored:s,isReadable:T,kIsReadable:c,kIsClosedPromise:d,kControllerErrorFunction:p,kIsWritable:u,isClosed:function(e){if(!y(e))return null;if("boolean"==typeof e.closed)return e.closed;const t=e._writableState,r=e._readableState;return"boolean"==typeof(null==t?void 0:t.closed)||"boolean"==typeof(null==r?void 0:r.closed)?(null==t?void 0:t.closed)||(null==r?void 0:r.closed):"boolean"==typeof e._closed&&O(e)?e._closed:null},isDuplexNodeStream:function(e){return!(!e||"function"!=typeof e.pipe||!e._readableState||"function"!=typeof e.on||"function"!=typeof e.write)},isFinished:function(e,t){return y(e)?!(!v(e)&&(!1!==(null==t?void 0:t.readable)&&T(e)||!1!==(null==t?void 0:t.writable)&&S(e))):null},isIterable:function(e,t){return null!=e&&(!0===t?"function"==typeof e[n]:!1===t?"function"==typeof e[i]:"function"==typeof e[n]||"function"==typeof e[i])},isReadableNodeStream:h,isReadableStream:g,isReadableEnded:function(e){if(!h(e))return null;if(!0===e.readableEnded)return!0;const t=e._readableState;return!(!t||t.errored)&&("boolean"!=typeof(null==t?void 0:t.ended)?null:t.ended)},isReadableFinished:w,isReadableErrored:function(e){var t,r;return y(e)?e.readableErrored?e.readableErrored:null!==(t=null===(r=e._readableState)||void 0===r?void 0:r.errored)&&void 0!==t?t:null:null},isNodeStream:y,isWebStream:function(e){return g(e)||m(e)||b(e)},isWritable:S,isWritableNodeStream:f,isWritableStream:m,isWritableEnded:_,isWritableFinished:function(e,t){if(!f(e))return null;if(!0===e.writableFinished)return!0;const r=e._writableState;return(null==r||!r.errored)&&("boolean"!=typeof(null==r?void 0:r.finished)?null:!!(r.finished||!1===t&&!0===r.ended&&0===r.length))},isWritableErrored:function(e){var t,r;return y(e)?e.writableErrored?e.writableErrored:null!==(t=null===(r=e._writableState)||void 0===r?void 0:r.errored)&&void 0!==t?t:null:null},isServerRequest:function(e){var t;return"boolean"==typeof e._consuming&&"boolean"==typeof e._dumped&&void 0===(null===(t=e.req)||void 0===t?void 0:t.upgradeOrConnect)},isServerResponse:E,willEmitClose:function(e){if(!y(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!n&&E(e)||!!(n&&n.autoDestroy&&n.emitClose&&!1===n.closed)},isTransformStream:b}},65605:(e,t,r)=>{const n=r(39907),{ArrayPrototypeSlice:i,Error:a,FunctionPrototypeSymbolHasInstance:o,ObjectDefineProperty:s,ObjectDefineProperties:c,ObjectSetPrototypeOf:u,StringPrototypeToLowerCase:l,Symbol:d,SymbolHasInstance:p}=r(51473);e.exports=C,C.WritableState=D;const{EventEmitter:h}=r(50046),f=r(23054).Stream,{Buffer:y}=r(1048),g=r(16527),{addAbortSignal:m}=r(21434),{getHighWaterMark:b,getDefaultHighWaterMark:v}=r(89952),{ERR_INVALID_ARG_TYPE:_,ERR_METHOD_NOT_IMPLEMENTED:w,ERR_MULTIPLE_CALLBACK:T,ERR_STREAM_CANNOT_PIPE:S,ERR_STREAM_DESTROYED:O,ERR_STREAM_ALREADY_FINISHED:E,ERR_STREAM_NULL_VALUES:x,ERR_STREAM_WRITE_AFTER_END:A,ERR_UNKNOWN_ENCODING:R}=r(52590).codes,{errorOrDestroy:I}=g;function P(){}u(C.prototype,f.prototype),u(C,f);const N=d("kOnFinished");function D(e,t,n){"boolean"!=typeof n&&(n=t instanceof r(86279)),this.objectMode=!(!e||!e.objectMode),n&&(this.objectMode=this.objectMode||!(!e||!e.writableObjectMode)),this.highWaterMark=e?b(this,e,"writableHighWaterMark",n):v(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;const i=!(!e||!1!==e.decodeStrings);this.decodeStrings=!i,this.defaultEncoding=e&&e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=F.bind(void 0,t),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,j(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!e||!1!==e.emitClose,this.autoDestroy=!e||!1!==e.autoDestroy,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[N]=[]}function j(e){e.buffered=[],e.bufferedIndex=0,e.allBuffers=!0,e.allNoop=!0}function C(e){const t=this instanceof r(86279);if(!t&&!o(C,this))return new C(e);this._writableState=new D(e,this,t),e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final),"function"==typeof e.construct&&(this._construct=e.construct),e.signal&&m(e.signal,this)),f.call(this,e),g.construct(this,(()=>{const e=this._writableState;e.writing||V(this,e),$(this,e)}))}function M(e,t,r,i){const a=e._writableState;if("function"==typeof r)i=r,r=a.defaultEncoding;else{if(r){if("buffer"!==r&&!y.isEncoding(r))throw new R(r)}else r=a.defaultEncoding;"function"!=typeof i&&(i=P)}if(null===t)throw new x;if(!a.objectMode)if("string"==typeof t)!1!==a.decodeStrings&&(t=y.from(t,r),r="buffer");else if(t instanceof y)r="buffer";else{if(!f._isUint8Array(t))throw new _("chunk",["string","Buffer","Uint8Array"],t);t=f._uint8ArrayToBuffer(t),r="buffer"}let o;return a.ending?o=new A:a.destroyed&&(o=new O("write")),o?(n.nextTick(i,o),I(e,o,!0),o):(a.pendingcb++,function(e,t,r,n,i){const a=t.objectMode?1:r.length;t.length+=a;const o=t.lengthr.bufferedIndex&&V(e,r),i?null!==r.afterWriteTickInfo&&r.afterWriteTickInfo.cb===a?r.afterWriteTickInfo.count++:(r.afterWriteTickInfo={count:1,cb:a,stream:e,state:r},n.nextTick(B,r.afterWriteTickInfo)):U(e,r,1,a))):I(e,new T)}function B({stream:e,state:t,count:r,cb:n}){return t.afterWriteTickInfo=null,U(e,t,r,n)}function U(e,t,r,n){for(!t.ending&&!e.destroyed&&0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"));r-- >0;)t.pendingcb--,n();t.destroyed&&q(t),$(e,t)}function q(e){if(e.writing)return;for(let r=e.bufferedIndex;r1&&e._writev){t.pendingcb-=o-1;const n=t.allNoop?P:e=>{for(let t=s;t256?(r.splice(0,s),t.bufferedIndex=0):t.bufferedIndex=s}t.bufferProcessing=!1}function Q(e){return e.ending&&!e.destroyed&&e.constructed&&0===e.length&&!e.errored&&0===e.buffered.length&&!e.finished&&!e.writing&&!e.errorEmitted&&!e.closeEmitted}function $(e,t,r){Q(t)&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.finalCalled=!0,function(e,t){let r=!1;function i(i){if(r)I(e,null!=i?i:T());else if(r=!0,t.pendingcb--,i){const r=t[N].splice(0);for(let e=0;e{Q(t)?H(e,t):t.pendingcb--}),e,t)):Q(t)&&(t.pendingcb++,H(e,t))))}function H(e,t){t.pendingcb--,t.finished=!0;const r=t[N].splice(0);for(let e=0;e{"use strict";const{ArrayIsArray:n,ArrayPrototypeIncludes:i,ArrayPrototypeJoin:a,ArrayPrototypeMap:o,NumberIsInteger:s,NumberIsNaN:c,NumberMAX_SAFE_INTEGER:u,NumberMIN_SAFE_INTEGER:l,NumberParseInt:d,ObjectPrototypeHasOwnProperty:p,RegExpPrototypeExec:h,String:f,StringPrototypeToUpperCase:y,StringPrototypeTrim:g}=r(51473),{hideStackFrames:m,codes:{ERR_SOCKET_BAD_PORT:b,ERR_INVALID_ARG_TYPE:v,ERR_INVALID_ARG_VALUE:_,ERR_OUT_OF_RANGE:w,ERR_UNKNOWN_SIGNAL:T}}=r(52590),{normalizeEncoding:S}=r(46609),{isAsyncFunction:O,isArrayBufferView:E}=r(46609).types,x={},A=/^[0-7]+$/,R=m(((e,t,r=l,n=u)=>{if("number"!=typeof e)throw new v(t,"number",e);if(!s(e))throw new w(t,"an integer",e);if(en)throw new w(t,`>= ${r} && <= ${n}`,e)})),I=m(((e,t,r=-2147483648,n=2147483647)=>{if("number"!=typeof e)throw new v(t,"number",e);if(!s(e))throw new w(t,"an integer",e);if(en)throw new w(t,`>= ${r} && <= ${n}`,e)})),P=m(((e,t,r=!1)=>{if("number"!=typeof e)throw new v(t,"number",e);if(!s(e))throw new w(t,"an integer",e);const n=r?1:0,i=4294967295;if(ei)throw new w(t,`>= ${n} && <= ${i}`,e)}));function N(e,t){if("string"!=typeof e)throw new v(t,"string",e)}const D=m(((e,t,r)=>{if(!i(r,e)){const n=a(o(r,(e=>"string"==typeof e?`'${e}'`:f(e))),", ");throw new _(t,e,"must be one of: "+n)}}));function j(e,t){if("boolean"!=typeof e)throw new v(t,"boolean",e)}function C(e,t,r){return null!=e&&p(e,t)?e[t]:r}const M=m(((e,t,r=null)=>{const i=C(r,"allowArray",!1),a=C(r,"allowFunction",!1);if(!C(r,"nullable",!1)&&null===e||!i&&n(e)||"object"!=typeof e&&(!a||"function"!=typeof e))throw new v(t,"Object",e)})),L=m(((e,t)=>{if(null!=e&&"object"!=typeof e&&"function"!=typeof e)throw new v(t,"a dictionary",e)})),k=m(((e,t,r=0)=>{if(!n(e))throw new v(t,"Array",e);if(e.length{if(!E(e))throw new v(t,["Buffer","TypedArray","DataView"],e)})),B=m(((e,t)=>{if(void 0!==e&&(null===e||"object"!=typeof e||!("aborted"in e)))throw new v(t,"AbortSignal",e)})),U=m(((e,t)=>{if("function"!=typeof e)throw new v(t,"Function",e)})),q=m(((e,t)=>{if("function"!=typeof e||O(e))throw new v(t,"Function",e)})),V=m(((e,t)=>{if(void 0!==e)throw new v(t,"undefined",e)})),Q=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function $(e,t){if(void 0===e||!h(Q,e))throw new _(t,e,'must be an array or string of format "; rel=preload; as=style"')}e.exports={isInt32:function(e){return e===(0|e)},isUint32:function(e){return e===e>>>0},parseFileMode:function(e,t,r){if(void 0===e&&(e=r),"string"==typeof e){if(null===h(A,e))throw new _(t,e,"must be a 32-bit unsigned integer or an octal string");e=d(e,8)}return P(e,t),e},validateArray:k,validateStringArray:function(e,t){k(e,t);for(let r=0;rn||(null!=r||null!=n)&&c(e))throw new w(t,`${null!=r?`>= ${r}`:""}${null!=r&&null!=n?" && ":""}${null!=n?`<= ${n}`:""}`,e)},validateObject:M,validateOneOf:D,validatePlainFunction:q,validatePort:function(e,t="Port",r=!0){if("number"!=typeof e&&"string"!=typeof e||"string"==typeof e&&0===g(e).length||+e!=+e>>>0||e>65535||0===e&&!r)throw new b(t,e,r);return 0|e},validateSignalName:function(e,t="signal"){if(N(e,t),void 0===x[e]){if(void 0!==x[y(e)])throw new T(e+" (signals must use all capital letters)");throw new T(e)}},validateString:N,validateUint32:P,validateUndefined:V,validateUnion:function(e,t,r){if(!i(r,e))throw new v(t,`('${a(r,"|")}')`,e)},validateAbortSignal:B,validateLinkHeaderValue:function(e){if("string"==typeof e)return $(e,"hints"),e;if(n(e)){const t=e.length;let r="";if(0===t)return r;for(let n=0;n; rel=preload; as=style"')}}},58521:(e,t,r)=>{"use strict";const n=r(50601),i=r(2010),a=n.Readable.destroy;e.exports=n.Readable,e.exports._uint8ArrayToBuffer=n._uint8ArrayToBuffer,e.exports._isUint8Array=n._isUint8Array,e.exports.isDisturbed=n.isDisturbed,e.exports.isErrored=n.isErrored,e.exports.isReadable=n.isReadable,e.exports.Readable=n.Readable,e.exports.Writable=n.Writable,e.exports.Duplex=n.Duplex,e.exports.Transform=n.Transform,e.exports.PassThrough=n.PassThrough,e.exports.addAbortSignal=n.addAbortSignal,e.exports.finished=n.finished,e.exports.destroy=n.destroy,e.exports.destroy=a,e.exports.pipeline=n.pipeline,e.exports.compose=n.compose,Object.defineProperty(n,"promises",{configurable:!0,enumerable:!0,get:()=>i}),e.exports.Stream=n.Stream,e.exports.default=e.exports},52590:(e,t,r)=>{"use strict";const{format:n,inspect:i,AggregateError:a}=r(46609),o=globalThis.AggregateError||a,s=Symbol("kIsNodeError"),c=["string","function","number","object","Function","Object","boolean","bigint","symbol"],u=/^([A-Z][a-z0-9]*)+$/,l={};function d(e,t){if(!e)throw new l.ERR_INTERNAL_ASSERTION(t)}function p(e){let t="",r=e.length;const n="-"===e[0]?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function h(e,t,r){r||(r=Error);class i extends r{constructor(...r){super(function(e,t,r){if("function"==typeof t)return d(t.length<=r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${t.length}).`),t(...r);const i=(t.match(/%[dfijoOs]/g)||[]).length;return d(i===r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${i}).`),0===r.length?t:n(t,...r)}(e,t,r))}toString(){return`${this.name} [${e}]: ${this.message}`}}Object.defineProperties(i.prototype,{name:{value:r.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${e}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),i.prototype.code=e,i.prototype[s]=!0,l[e]=i}function f(e){const t="__node_internal_"+e.name;return Object.defineProperty(e,"name",{value:t}),e}class y extends Error{constructor(e="The operation was aborted",t=void 0){if(void 0!==t&&"object"!=typeof t)throw new l.ERR_INVALID_ARG_TYPE("options","Object",t);super(e,t),this.code="ABORT_ERR",this.name="AbortError"}}h("ERR_ASSERTION","%s",Error),h("ERR_INVALID_ARG_TYPE",((e,t,r)=>{d("string"==typeof e,"'name' must be a string"),Array.isArray(t)||(t=[t]);let n="The ";e.endsWith(" argument")?n+=`${e} `:n+=`"${e}" ${e.includes(".")?"property":"argument"} `,n+="must be ";const a=[],o=[],s=[];for(const e of t)d("string"==typeof e,"All expected entries have to be of type string"),c.includes(e)?a.push(e.toLowerCase()):u.test(e)?o.push(e):(d("object"!==e,'The value "object" should be written as "Object"'),s.push(e));if(o.length>0){const e=a.indexOf("object");-1!==e&&(a.splice(a,e,1),o.push("Object"))}if(a.length>0){switch(a.length){case 1:n+=`of type ${a[0]}`;break;case 2:n+=`one of type ${a[0]} or ${a[1]}`;break;default:{const e=a.pop();n+=`one of type ${a.join(", ")}, or ${e}`}}(o.length>0||s.length>0)&&(n+=" or ")}if(o.length>0){switch(o.length){case 1:n+=`an instance of ${o[0]}`;break;case 2:n+=`an instance of ${o[0]} or ${o[1]}`;break;default:{const e=o.pop();n+=`an instance of ${o.join(", ")}, or ${e}`}}s.length>0&&(n+=" or ")}switch(s.length){case 0:break;case 1:s[0].toLowerCase()!==s[0]&&(n+="an "),n+=`${s[0]}`;break;case 2:n+=`one of ${s[0]} or ${s[1]}`;break;default:{const e=s.pop();n+=`one of ${s.join(", ")}, or ${e}`}}if(null==r)n+=`. Received ${r}`;else if("function"==typeof r&&r.name)n+=`. Received function ${r.name}`;else if("object"==typeof r){var l;null!==(l=r.constructor)&&void 0!==l&&l.name?n+=`. Received an instance of ${r.constructor.name}`:n+=`. Received ${i(r,{depth:-1})}`}else{let e=i(r,{colors:!1});e.length>25&&(e=`${e.slice(0,25)}...`),n+=`. Received type ${typeof r} (${e})`}return n}),TypeError),h("ERR_INVALID_ARG_VALUE",((e,t,r="is invalid")=>{let n=i(t);return n.length>128&&(n=n.slice(0,128)+"..."),`The ${e.includes(".")?"property":"argument"} '${e}' ${r}. Received ${n}`}),TypeError),h("ERR_INVALID_RETURN_VALUE",((e,t,r)=>{var n;return`Expected ${e} to be returned from the "${t}" function but got ${null!=r&&null!==(n=r.constructor)&&void 0!==n&&n.name?`instance of ${r.constructor.name}`:"type "+typeof r}.`}),TypeError),h("ERR_MISSING_ARGS",((...e)=>{let t;d(e.length>0,"At least one arg needs to be specified");const r=e.length;switch(e=(Array.isArray(e)?e:[e]).map((e=>`"${e}"`)).join(" or "),r){case 1:t+=`The ${e[0]} argument`;break;case 2:t+=`The ${e[0]} and ${e[1]} arguments`;break;default:{const r=e.pop();t+=`The ${e.join(", ")}, and ${r} arguments`}}return`${t} must be specified`}),TypeError),h("ERR_OUT_OF_RANGE",((e,t,r)=>{let n;return d(t,'Missing "range" argument'),Number.isInteger(r)&&Math.abs(r)>2**32?n=p(String(r)):"bigint"==typeof r?(n=String(r),(r>2n**32n||r<-(2n**32n))&&(n=p(n)),n+="n"):n=i(r),`The value of "${e}" is out of range. It must be ${t}. Received ${n}`}),RangeError),h("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),h("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),h("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),h("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),h("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),h("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),h("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),h("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),h("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),h("ERR_STREAM_WRITE_AFTER_END","write after end",Error),h("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),e.exports={AbortError:y,aggregateTwoErrors:f((function(e,t){if(e&&t&&e!==t){if(Array.isArray(t.errors))return t.errors.push(e),t;const r=new o([t,e],t.message);return r.code=t.code,r}return e||t})),hideStackFrames:f,codes:l}},51473:e=>{"use strict";e.exports={ArrayIsArray:e=>Array.isArray(e),ArrayPrototypeIncludes:(e,t)=>e.includes(t),ArrayPrototypeIndexOf:(e,t)=>e.indexOf(t),ArrayPrototypeJoin:(e,t)=>e.join(t),ArrayPrototypeMap:(e,t)=>e.map(t),ArrayPrototypePop:(e,t)=>e.pop(t),ArrayPrototypePush:(e,t)=>e.push(t),ArrayPrototypeSlice:(e,t,r)=>e.slice(t,r),Error,FunctionPrototypeCall:(e,t,...r)=>e.call(t,...r),FunctionPrototypeSymbolHasInstance:(e,t)=>Function.prototype[Symbol.hasInstance].call(e,t),MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties:(e,t)=>Object.defineProperties(e,t),ObjectDefineProperty:(e,t,r)=>Object.defineProperty(e,t,r),ObjectGetOwnPropertyDescriptor:(e,t)=>Object.getOwnPropertyDescriptor(e,t),ObjectKeys:e=>Object.keys(e),ObjectSetPrototypeOf:(e,t)=>Object.setPrototypeOf(e,t),Promise,PromisePrototypeCatch:(e,t)=>e.catch(t),PromisePrototypeThen:(e,t,r)=>e.then(t,r),PromiseReject:e=>Promise.reject(e),PromiseResolve:e=>Promise.resolve(e),ReflectApply:Reflect.apply,RegExpPrototypeTest:(e,t)=>e.test(t),SafeSet:Set,String,StringPrototypeSlice:(e,t,r)=>e.slice(t,r),StringPrototypeToLowerCase:e=>e.toLowerCase(),StringPrototypeToUpperCase:e=>e.toUpperCase(),StringPrototypeTrim:e=>e.trim(),Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,SymbolDispose:Symbol.dispose||Symbol("Symbol.dispose"),SymbolAsyncDispose:Symbol.asyncDispose||Symbol("Symbol.asyncDispose"),TypedArrayPrototypeSet:(e,t,r)=>e.set(t,r),Boolean,Uint8Array}},46609:(e,t,r)=>{"use strict";const n=r(1048),{kResistStopPropagation:i,SymbolDispose:a}=r(51473),o=globalThis.AbortSignal||r(67083).AbortSignal,s=globalThis.AbortController||r(67083).AbortController,c=Object.getPrototypeOf((async function(){})).constructor,u=globalThis.Blob||n.Blob,l=void 0!==u?function(e){return e instanceof u}:function(e){return!1},d=(e,t)=>{if(void 0!==e&&(null===e||"object"!=typeof e||!("aborted"in e)))throw new ERR_INVALID_ARG_TYPE(t,"AbortSignal",e)};class p extends Error{constructor(e){if(!Array.isArray(e))throw new TypeError("Expected input to be an Array, got "+typeof e);let t="";for(let r=0;r{e=r,t=n})),resolve:e,reject:t}},promisify:e=>new Promise(((t,r)=>{e(((e,...n)=>e?r(e):t(...n)))})),debuglog:()=>function(){},format:(e,...t)=>e.replace(/%([sdifj])/g,(function(...[e,r]){const n=t.shift();return"f"===r?n.toFixed(6):"j"===r?JSON.stringify(n):"s"===r&&"object"==typeof n?`${n.constructor!==Object?n.constructor.name:""} {}`.trim():n.toString()})),inspect(e){switch(typeof e){case"string":if(e.includes("'")){if(!e.includes('"'))return`"${e}"`;if(!e.includes("`")&&!e.includes("${"))return`\`${e}\``}return`'${e}'`;case"number":return isNaN(e)?"NaN":Object.is(e,-0)?String(e):e;case"bigint":return`${String(e)}n`;case"boolean":case"undefined":return String(e);case"object":return"{}"}},types:{isAsyncFunction:e=>e instanceof c,isArrayBufferView:e=>ArrayBuffer.isView(e)},isBlob:l,deprecate:(e,t)=>e,addAbortListener:r(50046).addAbortListener||function(e,t){if(void 0===e)throw new ERR_INVALID_ARG_TYPE("signal","AbortSignal",e);let r;return d(e,"signal"),((e,t)=>{if("function"!=typeof e)throw new ERR_INVALID_ARG_TYPE("listener","Function",e)})(t),e.aborted?queueMicrotask((()=>t())):(e.addEventListener("abort",t,{__proto__:null,once:!0,[i]:!0}),r=()=>{e.removeEventListener("abort",t)}),{__proto__:null,[a](){var e;null===(e=r)||void 0===e||e()}}},AbortSignalAny:o.any||function(e){if(1===e.length)return e[0];const t=new s,r=()=>t.abort();return e.forEach((e=>{d(e,"signals"),e.addEventListener("abort",r,{once:!0})})),t.signal.addEventListener("abort",(()=>{e.forEach((e=>e.removeEventListener("abort",r)))}),{once:!0}),t.signal}},e.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")},50601:(e,t,r)=>{const{Buffer:n}=r(1048),{ObjectDefineProperty:i,ObjectKeys:a,ReflectApply:o}=r(51473),{promisify:{custom:s}}=r(46609),{streamReturningOperators:c,promiseReturningOperators:u}=r(64708),{codes:{ERR_ILLEGAL_CONSTRUCTOR:l}}=r(52590),d=r(67369),{setDefaultHighWaterMark:p,getDefaultHighWaterMark:h}=r(89952),{pipeline:f}=r(16815),{destroyer:y}=r(16527),g=r(94869),m=r(2010),b=r(92520),v=e.exports=r(23054).Stream;v.isDestroyed=b.isDestroyed,v.isDisturbed=b.isDisturbed,v.isErrored=b.isErrored,v.isReadable=b.isReadable,v.isWritable=b.isWritable,v.Readable=r(11509);for(const T of a(c)){const S=c[T];function _(...e){if(new.target)throw l();return v.Readable.from(o(S,this,e))}i(_,"name",{__proto__:null,value:S.name}),i(_,"length",{__proto__:null,value:S.length}),i(v.Readable.prototype,T,{__proto__:null,value:_,enumerable:!1,configurable:!0,writable:!0})}for(const O of a(u)){const E=u[O];function _(...e){if(new.target)throw l();return o(E,this,e)}i(_,"name",{__proto__:null,value:E.name}),i(_,"length",{__proto__:null,value:E.length}),i(v.Readable.prototype,O,{__proto__:null,value:_,enumerable:!1,configurable:!0,writable:!0})}v.Writable=r(65605),v.Duplex=r(86279),v.Transform=r(32073),v.PassThrough=r(76587),v.pipeline=f;const{addAbortSignal:w}=r(21434);v.addAbortSignal=w,v.finished=g,v.destroy=y,v.compose=d,v.setDefaultHighWaterMark=p,v.getDefaultHighWaterMark=h,i(v,"promises",{__proto__:null,configurable:!0,enumerable:!0,get:()=>m}),i(f,s,{__proto__:null,enumerable:!0,get:()=>m.pipeline}),i(g,s,{__proto__:null,enumerable:!0,get:()=>m.finished}),v.Stream=v,v._isUint8Array=function(e){return e instanceof Uint8Array},v._uint8ArrayToBuffer=function(e){return n.from(e.buffer,e.byteOffset,e.byteLength)}},2010:(e,t,r)=>{"use strict";const{ArrayPrototypePop:n,Promise:i}=r(51473),{isIterable:a,isNodeStream:o,isWebStream:s}=r(92520),{pipelineImpl:c}=r(16815),{finished:u}=r(94869);r(50601),e.exports={finished:u,pipeline:function(...e){return new i(((t,r)=>{let i,u;const l=e[e.length-1];if(l&&"object"==typeof l&&!o(l)&&!a(l)&&!s(l)){const t=n(e);i=t.signal,u=t.end}c(e,((e,n)=>{e?r(e):t(n)}),{signal:i,end:u})}))}}},9929:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(29365),t)},29365:(e,t)=>{"use strict";function r(e){const t=[];let r=0;for(;re.join(""))).join("/")}function n(e,t){let n=t+1;t>=0?"/"===e[t+1]&&"/"===e[t+2]&&(n=t+3):"/"===e[0]&&"/"===e[1]&&(n=2);const i=e.indexOf("/",n);return i<0?e:e.substr(0,i)+r(e.substr(i))}function i(e){return!e||"#"===e||"?"===e||"/"===e}Object.defineProperty(t,"__esModule",{value:!0}),t.removeDotSegmentsOfPath=t.removeDotSegments=t.resolve=void 0,t.resolve=function(e,t){const i=(t=t||"").indexOf("#");if(i>0&&(t=t.substr(0,i)),!e.length){if(t.indexOf(":")<0)throw new Error(`Found invalid baseIRI '${t}' for value '${e}'`);return t}if(e.startsWith("?")){const r=t.indexOf("?");return r>0&&(t=t.substr(0,r)),t+e}if(e.startsWith("#"))return t+e;if(!t.length){const t=e.indexOf(":");if(t<0)throw new Error(`Found invalid relative IRI '${e}' for a missing baseIRI`);return n(e,t)}const a=e.indexOf(":");if(a>=0)return n(e,a);const o=t.indexOf(":");if(o<0)throw new Error(`Found invalid baseIRI '${t}' for value '${e}'`);const s=t.substr(0,o+1);if(0===e.indexOf("//"))return s+n(e,a);let c;if(t.indexOf("//",o)===o+1){if(c=t.indexOf("/",o+3),c<0)return t.length>o+3?t+"/"+n(e,a):s+n(e,a)}else if(c=t.indexOf("/",o+1),c<0)return s+n(e,a);if(0===e.indexOf("/"))return t.substr(0,c)+r(e);let u=t.substr(c);const l=u.lastIndexOf("/");return l>=0&&l{var n=r(1048),i=n.Buffer;function a(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=n:(a(n,t),t.Buffer=o),o.prototype=Object.create(i.prototype),a(i,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var n=i(e);return void 0!==t?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},21925:e=>{var t=function(){var e=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r},t=[7,12,13,14,15,16,20,25,115,130],r=[7,13,16,20,25,115,130],n=[7,13,16,115,130],i=[1,25],a=[1,29],o=[1,27],s=[1,28],c=[13,16,115,130],u=[13,16,28,38,40,42,44,46,48,53,56,61,67,85,87,92,93,95,96,102,110,111,115,119,120,126,128,129,130,131,132,133,134,135,136],l=[28,56],d=[1,42],p=[46,48,53,56],h=[1,54],f=[1,60],y=[1,56],g=[1,57],m=[1,58],b=[1,63],v=[1,64],_=[1,65],w=[1,66],T=[1,67],S=[1,68],O=[1,75],E=[28,46,48,53,56],x=[28,42,46,48,53,56],A=[13,16,28,38,40,42,44,46,48,53,56,92,115,119,120,130,131,132,133,134,135,136],R=[13,16,28,38,40,42,44,46,48,53,56,67,85,87,92,95,96,115,119,120,126,128,129,130,131,132,133,134,135,136],I=[13,16,38,40,44,92,115,119,120,130,131,132,133,134,135,136],P=[13,16,28,38,40,42,44,46,48,53,56,67,85,87,92,95,96,115,117,118,119,120,126,128,129,130,131,132,133,134,135,136],N=[13,16,28,56,115,130],D=[13,16,38,58,87,96,109,115,126,130],j=[1,116],C=[1,112],M=[1,108],L=[1,114],k=[1,111],F=[7,13,16,20,25,44,48,53,56,67,85,87,95,96,115,128,129,130],B=[48,53],U=[48,53,87,96,126],q=[13,16,44,48,53,56,85,87,95,96,115,128,129,130],V=[1,126],Q=[13,16,40,44,48,53,56,85,87,95,96,115,128,129,130],$=[1,129],H=[48,53,67,87,96,126],G=[13,16,40,44,48,53,56,67,85,87,95,96,115,128,129,130],z=[1,133],K=[13,16,40,44,48,53,56,67,85,87,95,96,102,115,128,129,130],X=[13,16,40,44,48,53,56,67,85,87,93,95,96,102,110,111,115,128,129,130],J=[1,151],W=[1,153],Y=[1,156],Z=[1,157],ee=[1,158],te=[1,167],re=[1,175],ne=[13,16,44,48,53,56,67,85,87,95,96,115,128,129,130],ie=[13,16,44,48,53,56,67,85,87,95,96,115,126,128,129,130],ae=[13,16,46,92,115,119,120,130,131,132,133,134,135,136],oe={trace:function(){},yy:{},symbols_:{error:2,shaclDoc:3,shaclDoc_repetition0:4,shaclDoc_repetition1:5,ttlSection:6,EOF:7,directive:8,baseDecl:9,importsDecl:10,prefixDecl:11,KW_BASE:12,IRIREF:13,KW_IMPORTS:14,KW_PREFIX:15,PNAME_NS:16,nodeShapeIri:17,iri:18,nodeShape:19,KW_SHAPE:20,nodeShape_option0:21,nodeShape_option1:22,nodeShapeBody:23,shapeClass:24,KW_SHAPE_CLASS:25,shapeClass_option0:26,turtleAnnotation:27,";":28,turtleAnnotation2:29,predicate:30,turtleAnnotation2_option0:31,objectList:32,object:33,objectList_repetition0:34,iriOrLiteral:35,blankNodeSection:36,list:37,"(":38,list_repetition0:39,")":40,objectTail:41,",":42,LB:43,"[":44,RB:45,"]":46,LP:47,"%":48,RP:49,pcSection:50,iriHead:51,ttlStatement:52,".":53,ttlSection_repetition0:54,startNodeShape:55,"{":56,endNodeShape:57,"}":58,nodeShapeBody_repetition0:59,targetClass:60,"->":61,targetClass_repetition_plus0:62,constraint:63,constraint_group0:64,constraint_option0:65,orNotComponent:66,"|":67,nodeNot:68,nodeOrEmit:69,nodeOr:70,nodeOr_repetition_plus0:71,nodeValue:72,negation:73,nodeValue_group0:74,"=":75,iriOrLiteralOrArray:76,propertyShape:77,path:78,propertyShape_repetition0:79,propertyOrComponent:80,propertyNot:81,propertyOr:82,propertyOr_repetition_plus0:83,propertyAtom:84,NODEKIND:85,shapeRef:86,PARAM:87,propertyCount:88,propertyMinCount:89,"..":90,propertyMaxCount:91,INTEGER:92,"*":93,shapeRef_group0:94,"@":95,"!":96,pathAlternative:97,additionalAlternative:98,pathSequence:99,pathAlternative_repetition_plus0:100,additionalSequence:101,"/":102,pathEltOrInverse:103,pathSequence_repetition_plus0:104,pathElt:105,pathPrimary:106,pathMod:107,pathInverse:108,"^":109,"?":110,"+":111,iriOrLiteralOrArray_repetition0:112,literal:113,iri_group0:114,a:115,string:116,LANGTAG:117,"^^":118,DECIMAL:119,DOUBLE:120,literal_group0:121,string_group0:122,string_group1:123,shaclDoc_repetition1_group0:124,constraint_group0_repetition_plus0:125,TARGET:126,propertyShape_repetition0_group0:127,ATPNAME_LN:128,ATPNAME_NS:129,PNAME_LN:130,KW_TRUE:131,KW_FALSE:132,STRING_LITERAL1:133,STRING_LITERAL2:134,STRING_LITERAL_LONG1:135,STRING_LITERAL_LONG2:136,$accept:0,$end:1},terminals_:{2:"error",7:"EOF",12:"KW_BASE",13:"IRIREF",14:"KW_IMPORTS",15:"KW_PREFIX",16:"PNAME_NS",20:"KW_SHAPE",25:"KW_SHAPE_CLASS",28:";",38:"(",40:")",42:",",44:"[",46:"]",48:"%",53:".",56:"{",58:"}",61:"->",67:"|",75:"=",85:"NODEKIND",87:"PARAM",90:"..",92:"INTEGER",93:"*",95:"@",96:"!",102:"/",109:"^",110:"?",111:"+",115:"a",117:"LANGTAG",118:"^^",119:"DECIMAL",120:"DOUBLE",126:"TARGET",128:"ATPNAME_LN",129:"ATPNAME_NS",130:"PNAME_LN",131:"KW_TRUE",132:"KW_FALSE",133:"STRING_LITERAL1",134:"STRING_LITERAL2",135:"STRING_LITERAL_LONG1",136:"STRING_LITERAL_LONG2"},productions_:[0,[3,4],[8,1],[8,1],[8,1],[9,2],[10,2],[11,3],[17,1],[19,5],[24,4],[27,2],[29,2],[30,2],[32,2],[33,1],[33,1],[33,1],[37,3],[41,2],[43,1],[45,1],[36,3],[47,1],[49,1],[50,3],[51,1],[52,3],[6,1],[55,1],[57,1],[23,3],[60,2],[63,3],[66,2],[69,1],[70,1],[70,2],[68,1],[68,2],[72,3],[77,2],[80,2],[82,1],[82,2],[81,1],[81,2],[84,1],[84,1],[84,1],[84,3],[84,1],[88,5],[89,1],[91,1],[91,1],[86,1],[86,2],[73,1],[78,1],[98,2],[97,1],[97,2],[101,2],[99,1],[99,2],[105,1],[105,2],[103,1],[103,2],[108,1],[107,1],[107,1],[107,1],[106,1],[106,3],[76,1],[76,3],[35,1],[35,1],[18,1],[18,1],[18,1],[113,1],[113,2],[113,3],[113,1],[113,1],[113,1],[113,1],[116,1],[116,1],[4,0],[4,2],[124,1],[124,1],[5,0],[5,2],[21,0],[21,1],[22,0],[22,1],[26,0],[26,1],[31,0],[31,1],[34,0],[34,2],[39,0],[39,2],[54,0],[54,2],[59,0],[59,2],[62,1],[62,2],[125,1],[125,2],[64,1],[64,1],[65,0],[65,1],[71,1],[71,2],[74,1],[74,1],[127,1],[127,1],[79,0],[79,2],[83,1],[83,2],[94,1],[94,1],[100,1],[100,2],[104,1],[104,2],[112,0],[112,2],[114,1],[114,1],[121,1],[121,1],[122,1],[122,1],[123,1],[123,1]],performAction:function(e,t,r,n,i,a,o){var s,c,u=a.length-1;switch(i){case 1:this.$=Re(De.factory.namedNode(Te("")),De.factory.namedNode(ce),De.factory.namedNode(be+"Ontology"));break;case 5:De.base=De.factory.namedNode(a[u].slice(1,-1)),De.n3Parser._setBase(De.base.value);break;case 6:this.$=Re(De.base,De.factory.namedNode(be+"imports"),De.factory.namedNode(a[u].slice(1,-1)));break;case 7:this.$=De.prefixes[a[u-1].substr(0,a[u-1].length-1)]=Te(a[u]);break;case 8:De.nodeShapeStack=!1,Re(De.currentNodeShape=a[u],De.factory.namedNode(ce),De.factory.namedNode(me+"NodeShape"));break;case 10:this.$=Re(De.currentNodeShape,De.factory.namedNode(ce),De.factory.namedNode(ve+"Class"));break;case 11:this.$=Pe();break;case 13:this.$=a[u].forEach((e=>Re(De.currentNodeShape,a[u-1],e)));break;case 14:this.$=[a[u-1],...a[u]];break;case 18:this.$=we(a[u-1],!0);break;case 19:case 34:case 42:case 60:case 63:this.$=a[u];break;case 20:De.tempCurrentNodeShape=De.currentNodeShape,this.$=De.currentNodeShape=Ee();break;case 21:case 24:De.currentNodeShape=De.tempCurrentNodeShape;break;case 22:case 31:this.$=a[u-2];break;case 23:De.tempCurrentNodeShape=De.currentNodeShape,De.currentNodeShape=De.currentPropertyNode;break;case 26:De.currentNodeShape=a[u];break;case 29:De.nodeShapeStack?(De.nodeShapeStack.push(De.currentNodeShape),Re(De.currentPropertyNode,De.factory.namedNode(me+"node"),De.currentNodeShape=Ee())):De.nodeShapeStack=[],this.$=De.currentNodeShape;break;case 30:De.nodeShapeStack.length>0&&(De.currentNodeShape=De.nodeShapeStack.pop());break;case 32:this.$=a[u].forEach((e=>{Re(De.currentNodeShape,De.factory.namedNode(me+"targetClass"),e)}));break;case 35:this.$=Re(De.currentNodeShape,De.factory.namedNode(me+a[u][0]),a[u][1]);break;case 36:break;case 37:const e=we([a[u-1],...a[u]].map((e=>{const t=Ee();return Re(t,De.factory.namedNode(me+e[0]),e[1]),t})));this.$=["or",e];break;case 39:case 46:this.$=function(e,t,r){const n=Ee();return Re(n,De.factory.namedNode(me+t),r),[e,n]}("not",...a[u]);break;case 40:case 50:this.$=[a[u-2],a[u]];break;case 43:this.$=a[u]&&Ie(...a[u]);break;case 44:this.$=Ie("or",we([a[u-1],...a[u]].map((e=>{const t=Ee();return Re(t,De.factory.namedNode(me+e[0]),e[1]),t}))));break;case 47:this.$=[_e[a[u].value]?"datatype":"class",a[u]];break;case 48:this.$=["nodeKind",De.factory.namedNode(me+a[u])];break;case 49:this.$=["node",De.factory.namedNode(a[u])];break;case 51:this.$=void 0;break;case 53:this.$=a[u]>0&&Ie("minCount",Oe(a[u],he));break;case 54:this.$=Ie("maxCount",Oe(a[u],he));break;case 56:this.$=Se(a[u].slice(1));break;case 57:this.$=Te(a[u]);break;case 59:Re(De.currentNodeShape,De.factory.namedNode(me+"property"),De.currentPropertyNode=Ee()),Ie("path",a[u]);break;case 62:const t=Ee();Re(t,De.factory.namedNode(me+"alternativePath"),we([a[u-1],...a[u]])),this.$=t;break;case 65:this.$=we([a[u-1],...a[u]]);break;case 67:Re(this.$=Ee(),De.factory.namedNode(me+a[u]),a[u-1]);break;case 69:Re(this.$=Ee(),De.factory.namedNode(me+"inversePath"),a[u]);break;case 71:this.$="zeroOrOnePath";break;case 72:this.$="zeroOrMorePath";break;case 73:this.$="oneOrMorePath";break;case 75:this.$=a[u-1];break;case 77:this.$=we(a[u-1]);break;case 80:this.$=De.factory.namedNode(Te(a[u]));break;case 81:this.$=De.factory.namedNode(Se(a[u]));break;case 82:this.$=Pe(De.factory.namedNode(ce));break;case 83:this.$=Oe(a[u]);break;case 84:this.$=(s=a[u-1],c=lowercase(a[u].substr(1)),De.factory.literal(s,c));break;case 85:this.$=Oe(a[u-2],a[u]);break;case 86:this.$=Oe(a[u],he);break;case 87:this.$=Oe(a[u],fe);break;case 88:this.$=Oe(a[u].toLowerCase(),ye);break;case 89:this.$=Oe(a[u].toLowerCase(),ge);break;case 90:this.$=Ae(a[u],1);break;case 91:this.$=Ae(a[u],3);break;case 92:case 96:case 106:case 108:case 110:case 112:case 128:case 138:this.$=[];break;case 93:case 97:case 107:case 109:case 111:case 113:case 115:case 117:case 123:case 129:case 131:case 135:case 137:case 139:a[u-1].push(a[u]);break;case 114:case 116:case 122:case 130:case 134:case 136:this.$=[a[u]]}},table:[e(t,[2,92],{3:1,4:2}),{1:[3]},e(r,[2,96],{5:3,8:4,9:5,10:6,11:7,12:[1,8],14:[1,9],15:[1,10]}),e(n,[2,110],{6:11,124:12,54:13,19:14,24:15,20:[1,16],25:[1,17]}),e(t,[2,93]),e(t,[2,2]),e(t,[2,3]),e(t,[2,4]),{13:[1,18]},{13:[1,19]},{16:[1,20]},{7:[1,21]},e(r,[2,97]),{7:[2,28],13:i,16:a,18:24,51:23,52:22,114:26,115:o,130:s},e(r,[2,94]),e(r,[2,95]),{13:i,16:a,17:30,18:31,114:26,115:o,130:s},{13:i,16:a,17:32,18:31,114:26,115:o,130:s},e(t,[2,5]),e(t,[2,6]),{13:[1,33]},{1:[2,1]},e(n,[2,111]),{13:i,16:a,18:36,29:34,30:35,114:26,115:o,130:s},e(c,[2,26]),e(u,[2,80]),e(u,[2,81]),e(u,[2,82]),e(u,[2,140]),e(u,[2,141]),e(l,[2,98],{21:37,60:38,61:[1,39]}),e([28,56,61],[2,8]),{26:40,27:41,28:d,56:[2,102]},e(t,[2,7]),{53:[1,43]},e(p,[2,104],{31:44,27:45,28:d}),{13:i,16:a,18:51,32:46,33:47,35:48,36:49,37:50,38:h,43:53,44:f,92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},{22:69,27:70,28:d,56:[2,100]},e(l,[2,99]),{13:i,16:a,18:72,62:71,114:26,115:o,130:s},{23:73,55:74,56:O},{56:[2,103]},{13:i,16:a,18:36,29:76,30:35,114:26,115:o,130:s},e(n,[2,27]),e(p,[2,12]),e(p,[2,105]),e(E,[2,13]),e(x,[2,106],{34:77}),e(A,[2,15]),e(A,[2,16]),e(A,[2,17]),e(R,[2,78]),e(R,[2,79]),{13:i,16:a,18:36,29:78,30:35,114:26,115:o,130:s},e(I,[2,108],{39:79}),e(R,[2,83],{117:[1,80],118:[1,81]}),e(R,[2,86]),e(R,[2,87]),e(R,[2,88]),e(R,[2,89]),e(c,[2,20]),e(P,[2,90]),e(P,[2,91]),e(R,[2,142]),e(R,[2,143]),e(P,[2,144]),e(P,[2,145]),e(P,[2,146]),e(P,[2,147]),{23:82,55:74,56:O},{56:[2,101]},e(l,[2,32],{114:26,18:83,13:i,16:a,115:o,130:s}),e(N,[2,114]),e(r,[2,10]),e(D,[2,112],{59:84}),e(D,[2,29]),e(p,[2,11]),e(E,[2,14],{41:85,42:[1,86]}),{45:87,46:[1,88]},{13:i,16:a,18:51,33:90,35:48,36:49,37:50,38:h,40:[1,89],43:53,44:f,92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},e(R,[2,84]),{13:i,16:a,18:91,114:26,115:o,130:s},e(r,[2,9]),e(N,[2,115]),{13:i,16:a,18:115,38:j,57:92,58:[1,94],63:93,64:95,68:102,69:98,70:100,72:104,73:105,74:107,77:97,78:99,87:C,96:M,97:101,99:103,103:106,105:109,106:113,108:110,109:L,114:26,115:o,125:96,126:k,130:s},e(x,[2,107]),{13:i,16:a,18:51,33:117,35:48,36:49,37:50,38:h,43:53,44:f,92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},e(A,[2,22]),e(A,[2,21]),e(A,[2,18]),e(I,[2,109]),e(R,[2,85]),e(F,[2,31]),e(D,[2,113]),e(F,[2,30]),{47:120,48:[1,121],50:119,53:[2,120],65:118},e(B,[2,118],{70:100,68:102,72:104,73:105,74:107,69:122,87:C,96:M,126:k}),e(B,[2,119]),e(U,[2,116]),e(q,[2,128],{79:123}),e(U,[2,35]),e(q,[2,59]),e(U,[2,36],{71:124,66:125,67:V}),e(Q,[2,61],{100:127,98:128,67:$}),e(H,[2,38]),{72:130,74:107,87:C,126:k},e(G,[2,64],{104:131,101:132,102:z}),{75:[1,134]},e([13,16,56,85,87,95,115,126,128,129,130],[2,58]),e(K,[2,68]),{13:i,16:a,18:115,38:j,105:135,106:113,114:26,115:o,130:s},{75:[2,124]},{75:[2,125]},e(K,[2,66],{107:136,93:[1,138],110:[1,137],111:[1,139]}),e([13,16,38,115,130],[2,70]),e(X,[2,74]),{13:i,16:a,18:115,38:j,97:140,99:103,103:106,105:109,106:113,108:110,109:L,114:26,115:o,130:s},e(x,[2,19]),{53:[1,141]},{53:[2,121]},{13:i,16:a,18:36,29:142,30:35,114:26,115:o,130:s},e(c,[2,23]),e(U,[2,117]),e(B,[2,41],{114:26,55:74,127:143,88:144,82:145,81:147,84:148,73:149,18:150,86:152,23:154,94:155,13:i,16:a,44:[1,146],56:O,85:J,87:W,95:Y,96:M,115:o,128:Z,129:ee,130:s}),e(U,[2,37],{66:159,67:V}),e(H,[2,122]),{68:160,72:104,73:105,74:107,87:C,96:M,126:k},e(Q,[2,62],{98:161,67:$}),e(G,[2,134]),{13:i,16:a,18:115,38:j,99:162,103:106,105:109,106:113,108:110,109:L,114:26,115:o,130:s},e(H,[2,39]),e(G,[2,65],{101:163,102:z}),e(K,[2,136]),{13:i,16:a,18:115,38:j,103:164,105:109,106:113,108:110,109:L,114:26,115:o,130:s},{13:i,16:a,18:51,35:166,44:te,76:165,92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},e(K,[2,69]),e(K,[2,67]),e(K,[2,71]),e(K,[2,72]),e(K,[2,73]),{40:[1,168]},e(D,[2,33]),{48:[1,170],49:169},e(q,[2,129]),e(q,[2,126]),e(q,[2,127]),{89:171,92:[1,172]},e(q,[2,43],{83:173,80:174,67:re}),e(ne,[2,45]),{13:i,16:a,18:150,23:154,55:74,56:O,84:176,85:J,86:152,87:W,94:155,95:Y,114:26,115:o,128:Z,129:ee,130:s},e(ne,[2,47]),e(ne,[2,48]),e(ne,[2,49]),{75:[1,177]},e(ne,[2,51]),e(ne,[2,56]),{13:[1,178]},e(ne,[2,132]),e(ne,[2,133]),e(H,[2,123]),e(H,[2,34]),e(G,[2,135]),e(G,[2,60]),e(K,[2,137]),e(K,[2,63]),e(H,[2,40]),e(ie,[2,76]),e(ae,[2,138],{112:179}),e(X,[2,75]),{53:[2,25]},{53:[2,24]},{90:[1,180]},{90:[2,53]},e(q,[2,44],{80:181,67:re}),e(ne,[2,130]),{13:i,16:a,18:150,23:154,55:74,56:O,73:149,81:182,84:148,85:J,86:152,87:W,94:155,95:Y,96:M,114:26,115:o,128:Z,129:ee,130:s},e(ne,[2,46]),{13:i,16:a,18:51,35:166,44:te,76:183,92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},e(ne,[2,57]),{13:i,16:a,18:51,35:185,46:[1,184],92:y,113:52,114:26,115:o,116:55,119:g,120:m,121:59,122:61,123:62,130:s,131:b,132:v,133:_,134:w,135:T,136:S},{91:186,92:[1,187],93:[1,188]},e(ne,[2,131]),e(ne,[2,42]),e(ne,[2,50]),e(ie,[2,77]),e(ae,[2,139]),{46:[1,189]},{46:[2,54]},{46:[2,55]},e(q,[2,52])],defaultActions:{21:[2,1],41:[2,103],70:[2,101],111:[2,124],112:[2,125],119:[2,121],169:[2,25],170:[2,24],172:[2,53],187:[2,54],188:[2,55]},parseError:function(e,t){if(!t.recoverable){var r=new Error(e);throw r.hash=t,r}this.trace(e)},parse:function(e){var t=this,r=[0],n=[null],i=[],a=this.table,o="",s=0,c=0,u=0,l=i.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var h in this.yy)Object.prototype.hasOwnProperty.call(this.yy,h)&&(p.yy[h]=this.yy[h]);d.setInput(e,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var f=d.yylloc;i.push(f);var y,g=d.options&&d.options.ranges;"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var m,b,v,_,w,T,S,O,E,x={};;){if(v=r[r.length-1],this.defaultActions[v]?_=this.defaultActions[v]:(null==m&&(y=void 0,"number"!=typeof(y=d.lex()||1)&&(y=t.symbols_[y]||y),m=y),_=a[v]&&a[v][m]),void 0===_||!_.length||!_[0]){var A;for(T in E=[],a[v])this.terminals_[T]&&T>2&&E.push("'"+this.terminals_[T]+"'");A=d.showPosition?"Parse error on line "+(s+1)+":\n"+d.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(s+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(A,{text:d.match,token:this.terminals_[m]||m,line:d.yylineno,loc:f,expected:E})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(_[0]){case 1:r.push(m),n.push(d.yytext),i.push(d.yylloc),r.push(_[1]),m=null,b?(m=b,b=null):(c=d.yyleng,o=d.yytext,s=d.yylineno,f=d.yylloc,u>0&&u--);break;case 2:if(S=this.productions_[_[1]][1],x.$=n[n.length-S],x._$={first_line:i[i.length-(S||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(S||1)].first_column,last_column:i[i.length-1].last_column},g&&(x._$.range=[i[i.length-(S||1)].range[0],i[i.length-1].range[1]]),void 0!==(w=this.performAction.apply(x,[o,c,s,p.yy,_[1],n,i].concat(l))))return w;S&&(r=r.slice(0,-1*S*2),n=n.slice(0,-1*S),i=i.slice(0,-1*S)),r.push(this.productions_[_[1]][0]),n.push(x.$),i.push(x._$),O=a[r[r.length-2]][r[r.length-1]],r.push(O);break;case 3:return!0}}return!0}};const se="http://www.w3.org/1999/02/22-rdf-syntax-ns#",ce=se+"type",ue=se+"first",le=se+"rest",de=se+"nil",pe="http://www.w3.org/2001/XMLSchema#",he=pe+"integer",fe=pe+"decimal",ye=pe+"double",ge=pe+"boolean",me="http://www.w3.org/ns/shacl#",be="http://www.w3.org/2002/07/owl#",ve="http://www.w3.org/2000/01/rdf-schema#",_e={[he]:!0,[fe]:!0,[pe+"float"]:!0,[ye]:!0,[pe+"string"]:!0,[ge]:!0,[pe+"dateTime"]:!0,[pe+"nonPositiveInteger"]:!0,[pe+"negativeInteger"]:!0,[pe+"long"]:!0,[pe+"int"]:!0,[pe+"short"]:!0,[pe+"byte"]:!0,[pe+"nonNegativeInteger"]:!0,[pe+"unsignedLong"]:!0,[pe+"unsignedShort"]:!0,[pe+"unsignedByte"]:!0,[pe+"positiveInteger"]:!0,[se+"langString"]:!0};function we(e,t=!1){let r=0,n=e.length;if(t&&0===n)return De.factory.namedNode(de);const i=head=Ee();return 0===n&&Re(head,De.factory.namedNode(le),De.factory.namedNode(de)),e.forEach((e=>{if(void 0===e)throw new Error("b");Re(head,De.factory.namedNode(ue),e),Re(head,De.factory.namedNode(le),head=++r20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var r,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],r=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,r,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;at[0].length)){if(t=r,n=a,this.options.backtrack_lexer){if(!1!==(e=this.test_match(r,i[a])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,i[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{flex:!0,"case-insensitive":!0},performAction:function(e,t,r,n){switch(r){case 0:break;case 1:return 12;case 2:return 14;case 3:return 15;case 4:return 25;case 5:return 20;case 6:return 131;case 7:return 132;case 8:return 85;case 9:return 126;case 10:return 87;case 11:return"PASS";case 12:return"COMMENT";case 13:return 13;case 14:return 16;case 15:return 130;case 16:return 129;case 17:return 128;case 18:return 117;case 19:return 92;case 20:return 119;case 21:return 120;case 22:return"EXPONENT";case 23:return 133;case 24:return 134;case 25:return 135;case 26:return 136;case 27:return 61;case 28:return 90;case 29:return 58;case 30:return 56;case 31:return 38;case 32:return 40;case 33:return 44;case 34:return 46;case 35:return 110;case 36:return 93;case 37:return 111;case 38:return 67;case 39:return 118;case 40:return 53;case 41:return 96;case 42:return 102;case 43:return 75;case 44:return 95;case 45:return 109;case 46:return 28;case 47:return 42;case 48:return 48;case 49:return 115;case 50:return 7;case 51:console.log(t.yytext)}},rules:[/^(?:\s+|#[^\n\r]*)/i,/^(?:BASE)/i,/^(?:IMPORTS)/i,/^(?:PREFIX)/i,/^(?:shapeClass)/i,/^(?:shape)/i,/^(?:true)/i,/^(?:false)/i,/^(?:(BlankNode|IRI|Literal|BlankNodeOrIRI|BlankNodeOrLiteral|IRIOrLiteral\b))/i,/^(?:(targetNode|targetObjectsOf|targetSubjectsOf\b))/i,/^(?:(deactivated|severity|message|class|datatype|nodeKind|minExclusive|minInclusive|maxExclusive|maxInclusive|minLength|maxLength|pattern|flags|languageIn|uniqueLang|equals|disjoint|lessThan|lessThanOrEquals|qualifiedValueShape|qualifiedMinCount|qualifiedMaxCount|qualifiedValueShapesDisjoint|closed|ignoredProperties|hasValue|in))/i,/^(?:([ \t\r\n]+))/i,/^(?:(#[\r\n]*))/i,/^(?:(<([^=<>\"\{\}\|\^`\\\u0000-\u0020]|(\\u([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])|\\U([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])))*>))/i,/^(?:((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.)*((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040]))?)?:))/i,/^(?:(((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.)*((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040]))?)?:)(((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|:|[0-9]|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.|:|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))*(((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|:|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%)))))?)))/i,/^(?:(@(([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.)*((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040]))?)?:))/i,/^(?:(@((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.)*((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040]))?)?:)(((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|:|[0-9]|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))((((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|\.|:|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))*(((([A-Z]|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD])|_\b)|-|[0-9]|[\u00B7]|[\u0300-\u036F]|[\u203F-\u2040])|:|((%([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%)))))?)))/i,/^(?:(@[a-zA-Z]+(-[a-zA-Z0-9]+)*))/i,/^(?:([+-]?[0-9]+))/i,/^(?:([+-]?[0-9]*\.[0-9]+))/i,/^(?:([+-]?([0-9]+\.[0-9]*([eE][+-]?[0-9]+)|\.?[0-9]+([eE][+-]?[0-9]+))))/i,/^(?:([eE][+-]?[0-9]+))/i,/^(?:('(?:(?:[^\u0027\u005C\u000A\u000D])|(\\[tbnrf\\\"\']))*'))/i,/^(?:("(?:(?:[^\u0022\u005C\u000A\u000D])|(\\[tbnrf\\\"\']))*"))/i,/^(?:('''(?:(?:'|'')?(?:[^'\\]|(\\[tbnrf\\\"\'])))*'''))/i,/^(?:("""(?:(?:"|"")?(?:[^\"\\]|(\\[tbnrf\\\"\'])))*"""))/i,/^(?:->)/i,/^(?:\.\.)/i,/^(?:\})/i,/^(?:\{)/i,/^(?:\()/i,/^(?:\))/i,/^(?:\[)/i,/^(?:\])/i,/^(?:\?)/i,/^(?:\*)/i,/^(?:\+)/i,/^(?:\|)/i,/^(?:\^\^)/i,/^(?:\.)/i,/^(?:!)/i,/^(?:\/)/i,/^(?:=)/i,/^(?:@)/i,/^(?:\^)/i,/^(?:;)/i,/^(?:,)/i,/^(?:%)/i,/^(?:a)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}};function De(){this.yy={}}return oe.lexer=Ne,De.prototype=oe,oe.Parser=De,new De}();e.exports=t},21762:(e,t,r)=>{const n=r(21925).Parser,i=r(72243);class a{constructor(){}parse(e,{extendedSyntax:t,baseIRI:r}={}){this._parser=new n,this._parser.Parser.factory=i.DataFactory,this._parser.Parser.base=i.DataFactory.namedNode(r||"urn:x-base:default"),this._parser.Parser.extended=!0===t,this._parser.Parser.prefixes={rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://www.w3.org/2000/01/rdf-schema#",sh:"http://www.w3.org/ns/shacl#",xsd:"http://www.w3.org/2001/XMLSchema#"},this._parser.Parser.currentNodeShape=void 0,this._parser.Parser.currentPropertyNode=void 0,this._parser.Parser.nodeShapeStack=[],this._parser.Parser.tempCurrentNodeShape=void 0,this._parser.Parser.n3Parser=new i.Parser({baseIRI:r||"urn:x-base:default"});const a=[];return this._parser.Parser.onQuad=e=>{a.push(e)},this._parser.parse(e),a.prefixes=this._parser.Parser.prefixes,a}}e.exports.Parser=a,e.exports.parse=function(e,t){return(new a).parse(e,t)}},23344:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(72243),o=r(37669),s=r(64817),c=r(98118),u=i(r(57756)),l=i(r(14791)),d=i(r(58007));function p(e){var t;return null===(t=/^[^]*[#/]/.exec(e))||void 0===t?void 0:t[0]}const h={"http://www.w3.org/1999/02/22-rdf-syntax-ns#":"rdf","http://www.w3.org/2000/01/rdf-schema#":"rdfs","http://www.w3.org/ns/shacl#":"sh","http://www.w3.org/2001/XMLSchema#":"xsd"},f={rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://www.w3.org/2000/01/rdf-schema#",sh:"http://www.w3.org/ns/shacl#",xsd:"http://www.w3.org/2001/XMLSchema#"};t.default=class{constructor(e,t,r={},n=void 0,i=!0,a=!1,o,s=!1){this.store=e,this.base=n,this.errorOnExtraQuads=i,this.mintUnspecifiedPrefixes=a,this.fetch=o,this.extendedSyntax=s,this.prefixes={},this.prefixRev={};for(const e of Object.keys(r)){const t=r[e],n="string"==typeof t?t:t.value;n in h||e in f||(this.prefixRev[n]=e,this.prefixes[e]=n)}this.writer=t}write(){return n(this,void 0,void 0,(function*(){const e=this.store.getQuads(null,"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","http://www.w3.org/2002/07/owl#Ontology",null);if(1!==e.length||"NamedNode"!==e[0].subject.termType)throw new Error("Base expected");{const t=e[0].subject;this.store.removeQuads(e),t.equals(new a.NamedNode("urn:x-base:default"))||this.writer.add(`BASE ${(0,s.termToString)(t)}`),yield this.writeImports(t)}if(this.mintUnspecifiedPrefixes){const e=new Set;for(const t of[...this.store.getSubjects(null,null,null),...this.store.getPredicates(null,null,null),...this.store.getObjects(null,null,null)])if("NamedNode"===t.termType){const r=p(t.value);!r||r in this.prefixRev||r in h||e.add(r)}const t=Object.assign(Object.assign({},this.prefixes),f);yield Promise.all([...e].map((e=>(0,o.uriToPrefix)(e,{fetch:this.fetch,mintOnUnknown:!0,existingPrefixes:t}).then((r=>{this.prefixes[r]=e,t[r]=e,this.prefixRev[e]=r})))))}const t=new Set([...this.store.getSubjects(null,null,null),...this.store.getPredicates(null,null,null),...this.store.getObjects(null,null,null)].filter((e=>"NamedNode"===e.termType)).map((e=>p(e.value))).filter((e=>"string"==typeof e)));for(const e in this.prefixRev)t.has(e)||(delete this.prefixes[this.prefixRev[e]],delete this.prefixRev[e]);if(yield this.writePrefixes(),this.prefixes=Object.assign(Object.assign({},this.prefixes),f),this.prefixRev=Object.assign(Object.assign({},this.prefixRev),h),this.writer.newLine(),yield this.writeShapes(),this.extendedSyntax){const e=this.store.getSubjects(null,null,null);e.length>0&&this.writer.newLine(1);for(const t of e)this.writer.add(yield this.termToString(t,!0,!0)),this.writer.add(" "),this.writer.indent(),yield this.writeTurtlePredicates(t),this.writer.deindent();e.length>0&&(this.writer.add(" ."),this.writer.newLine())}if(this.errorOnExtraQuads&&this.store.size>0)throw new Error("Dataset contains quads that cannot be written in SHACLC");this.writer.end()}))}writeImports(e){return n(this,void 0,void 0,(function*(){const t=this.store.getObjectsOnce(e,new a.NamedNode("http://www.w3.org/2002/07/owl#imports"),null);if(t.length>0)for(const e of t)this.writer.add(`IMPORTS <${e.value}>`,!0)}))}writePrefixes(){return n(this,void 0,void 0,(function*(){const e=Object.keys(this.prefixes).filter((e=>!(e in l.default))).sort();if(e.length>0)for(const t of e)this.writer.add(`PREFIX ${t}: <${this.prefixes[t]}>`,!0)}))}termToString(e,t=!1,r=!1){return n(this,void 0,void 0,(function*(){try{if(t)throw new Error("Shacl name disabled");return(0,c.getShaclName)(e)}catch(e){}if("NamedNode"===e.termType){const t=p(e.value);return t&&t in this.prefixRev&&t in this.prefixRev?`${this.prefixRev[t]}:${e.value.slice(t.length)}`:(0,s.termToString)(e)}if("Literal"===e.termType)return"http://www.w3.org/2001/XMLSchema#integer"===e.datatypeString||"http://www.w3.org/2001/XMLSchema#boolean"===e.datatypeString?e.value:(0,s.termToString)(e);throw"BlankNode"===e.termType&&r&&(0,s.termToString)(e),new Error(`Invalid term type for extra statement ${e.value} (${e.termType})`)}))}writeShapes(){return n(this,void 0,void 0,(function*(){for(const e of this.store.getSubjectsOnce(new a.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),new a.NamedNode("http://www.w3.org/ns/shacl#NodeShape"),null)){this.store.getQuadsOnce(e,new a.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),new a.NamedNode("http://www.w3.org/2000/01/rdf-schema#Class"),null).length>0?this.writer.add("shapeClass "):this.writer.add("shape "),this.writer.add(yield this.termToString(e)),this.writer.add(" ");const t=this.store.getObjectsOnce(e,new a.NamedNode("http://www.w3.org/ns/shacl#targetClass"),null);if(t.length>0){this.writer.add("-> ");for(const e of t)"NamedNode"===e.termType?this.writer.add(yield this.termToString(e)):(this.writer.add("!"),this.writer.add(yield this.termToString(this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#not"),!0)))),this.writer.add(" ")}const r=this.store.getPredicates(e,null,null).filter((e=>[new a.NamedNode("http://www.w3.org/ns/shacl#targetClass"),new a.NamedNode("http://www.w3.org/ns/shacl#property"),new a.NamedNode("http://www.w3.org/ns/shacl#or"),...Object.keys(d.default).map((e=>new a.NamedNode("http://www.w3.org/ns/shacl#"+e)))].every((t=>!e.equals(t)))));r.length>0&&(this.writer.add(";"),this.writer.indent(),this.writer.newLine(1)),this.extendedSyntax&&(yield this.writeGivenTurtlePredicates(e,r)),r.length>0&&(this.writer.add(" "),this.writer.deindent()),yield this.writeShapeBody(e,!1)}}))}getSingleProperty(e,t){let r=[e];try{let n=(0,c.getShaclName)(e.predicate),i="pred";if("not"===n){const t=this.store.getQuadsOnce(e.object,null,null,null);if(r=r.concat(t),1!==t.length)throw new Error("Can only handle having one predicate of 'not'");[e]=t,n=(0,c.getShaclName)(e.predicate),i="not"}if(!(n in t))throw new Error(`${n} is not allowed`);return{name:n,type:i,object:e.object}}catch(e){this.store.addQuads(r)}}singleLayerPropertiesList(e,t){const r=[];for(const n of this.store.getQuadsOnce(e,null,null,null)){const e=this.getSingleProperty(n,t);e&&r.push(e)}return r}expectOneProperty(e,t){const r=this.store.getQuadsOnce(e,null,null,null);if(1===r.length){const e=this.getSingleProperty(r[0],t);if(e)return e}this.store.addQuads(r)}orProperties(e,t){const r=[];for(const n of this.store.getQuadsOnce(e,new a.NamedNode("http://www.w3.org/ns/shacl#or"),null,null)){const e=[];for(const r of this.getList(n.object)){const i=this.expectOneProperty(r,t);if(!i)throw this.store.addQuad(n),new Error("Each entry of the 'or' statement must declare exactly one property");e.push(i)}r.push(e)}return r}getList(e){let t=e;const r=[];for(;!t.equals(new a.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"));)r.push(this.singleObject(t,new a.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"),!0)),t=this.singleObject(t,new a.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"),!0);return r}writeIriLiteralOrArray(e){return n(this,void 0,void 0,(function*(){if("BlankNode"===e.termType){this.writer.add("[");let t=!0;for(const r of this.getList(e))t?t=!1:this.writer.add(" "),this.writer.add(yield this.termToString(r));this.writer.add("]")}else this.writer.add(yield this.termToString(e))}))}singleObject(e,t,r){var n;return null===(n=this.singleQuad(e,t,r))||void 0===n?void 0:n.object}singleQuad(e,t,r=!1){const n=this.store.getQuadsOnce(e,t,null,null);if(r&&1!==n.length)throw this.store.addQuads(n),new Error(`The subject and predicate ${null==e?void 0:e.value} ${null==t?void 0:t.value} must have exactly one object. Instead has ${n.length}`);if(n.length>1)throw this.store.addQuads(n),new Error(`The subject and predicate ${null==e?void 0:e.value} ${null==t?void 0:t.value} can have at most one object. Instead has ${n.length}`);return 1===n.length?n[0]:void 0}writeAssigment({name:e,type:t,object:r}){return n(this,void 0,void 0,(function*(){"not"===t&&this.writer.add("!"),this.writer.add(e),this.writer.add("="),yield this.writeIriLiteralOrArray(r)}))}writeAtom({name:e,type:t,object:r}){return n(this,void 0,void 0,(function*(){switch("not"===t&&this.writer.add("!"),e){case"node":if("NamedNode"===r.termType)this.writer.add(`@${yield this.termToString(r)}`);else{if("BlankNode"!==r.termType)throw new Error("Invalid nested shape, must be blank node or IRI");yield this.writeShapeBody(r)}return;case"nodeKind":return void this.writer.add((0,c.getShaclName)(r));case"class":case"datatype":return void this.writer.add(yield this.termToString(r));default:this.writer.add(e),this.writer.add("="),yield this.writeIriLiteralOrArray(r)}}))}writeAssigments(e,t=" ",r=!0,i){return n(this,void 0,void 0,(function*(){for(const n of e)r?r=!1:this.writer.add(t),i?yield this.writeAtom(n):yield this.writeAssigment(n)}))}writeParams(e,t=!0,r,i=!1,a=!1){return n(this,void 0,void 0,(function*(){const n=this.orProperties(e,r),o=this.singleLayerPropertiesList(e,r);a&&(n.length>0||o.length>0)&&this.writer.newLine(1);for(const e of n)t?t=!1:this.writer.add(" "),yield this.writeAssigments(e,"|",!0,i);yield this.writeAssigments(o," ",t,i),a&&(n.length>0||o.length>0)&&this.writer.add(" .")}))}writeShapeBody(e,t=!0){return n(this,void 0,void 0,(function*(){this.writer.add("{").indent();const r=this.store.getObjectsOnce(e,new a.NamedNode("http://www.w3.org/ns/shacl#property"),null);yield this.writeParams(e,!0,d.default,!1,!0);for(const e of r)this.writer.newLine(1),yield this.writeProperty(e);this.writer.deindent().newLine(1),t?this.writer.add("} ."):this.writer.add("}").newLine(1)}))}writeProperty(e){return n(this,void 0,void 0,(function*(){yield this.writePath(this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#path"),!0));const t=this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#minCount")),r=this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#maxCount")),n=this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#nodeKind")),i=this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#class")),o=this.singleObject(e,new a.NamedNode("http://www.w3.org/ns/shacl#datatype")),s=this.store.getObjectsOnce(e,new a.NamedNode("http://www.w3.org/ns/shacl#node"),null);if(n&&(this.writer.add(" "),this.writer.add((0,c.getShaclName)(n))),i&&(this.writer.add(" "),this.writer.add(yield this.termToString(i))),o&&(this.writer.add(" "),this.writer.add(yield this.termToString(o))),void 0!==t||void 0!==r){if(this.writer.add(" ["),t){if("Literal"!==t.termType||"http://www.w3.org/2001/XMLSchema#integer"!==t.datatypeString)throw new Error("Invalid min value, must me an integer literal");this.writer.add(t.value)}else this.writer.add("0");if(this.writer.add(".."),r){if("Literal"!==r.termType||"http://www.w3.org/2001/XMLSchema#integer"!==r.datatypeString)throw new Error("Invalid max value, must me an integer literal");this.store.removeMatches(e,new a.NamedNode("http://www.w3.org/ns/shacl#maxCount"),void 0,void 0),this.writer.add(r.value)}else this.writer.add("*");this.writer.add("]")}yield this.writeParams(e,!1,u.default,!0);const l=[];for(const e of s)if("NamedNode"===e.termType)this.writer.add(" "),this.writer.add(`@${yield this.termToString(e)}`);else{if("BlankNode"!==e.termType)throw new Error("Invalid nested shape, must be blank node or IRI");l.push(e)}for(const e of l)this.writer.add(" "),yield this.writeShapeBody(e);this.extendedSyntax&&this.store.getQuads(e,null,null,null).length>0&&(this.writer.add(" %"),this.writer.indent(),this.writer.newLine(1),yield this.writeTurtlePredicates(e),this.writer.deindent(),this.writer.newLine(1),this.writer.add("%")),0===l.length&&this.writer.add(" .")}))}writeTurtlePredicates(e){return n(this,void 0,void 0,(function*(){return this.writeGivenTurtlePredicates(e,this.store.getPredicates(e,null,null))}))}writeGivenTurtlePredicates(e,t){return n(this,void 0,void 0,(function*(){let r=!1;if(t.some((e=>e.equals(a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"))))){const t=this.store.getObjectsOnce(e,a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),null);t.length>0&&(r=!0,this.writer.add("a "),yield this.writeTurtleObjects(t))}for(const n of t)n.equals(a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"))||(r?(this.writer.add(" ;"),this.writer.newLine(1)):r=!0,this.writer.add(yield this.termToString(n,!0)),this.writer.add(" "),yield this.writeTurtleObjects(this.store.getObjectsOnce(e,n,null)))}))}writeTurtleObjects(e){return n(this,void 0,void 0,(function*(){const t=[],r=[];for(const n of e)"BlankNode"===n.termType&&0===[...this.store.match(null,null,n),...this.store.match(null,n,null)].length?t.push(n):r.push(n);this.writer.add((yield Promise.all(r.map((e=>this.termToString(e,!0,!0))))).join(", "));let n=r.length>0;if(t.length>0)for(const e of t)n?this.writer.add(", "):n=!0,(yield this.writeList(e))||(this.writer.add("["),this.writer.indent(),this.writer.newLine(1),yield this.writeTurtlePredicates(e),this.writer.deindent(),this.writer.newLine(1),this.writer.add("]"))}))}writeList(e){return n(this,void 0,void 0,(function*(){let t=e;const r=[],n=[];for(;!t.equals(a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"));){const e=this.store.getQuadsOnce(t,a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"),null,null),i=this.store.getQuadsOnce(t,a.DataFactory.namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"),null,null);if(n.push(...e,...i),1!==e.length||1!==i.length||0!==this.store.getQuads(t,null,null,null).length)return this.store.addQuads(n),!1;r.push(e[0].object),t=i[0].object}let i=!1;this.writer.add("(");for(const e of r)i?this.writer.add(" "):i=!0,yield this.writeTurtleObjects([e]);return this.writer.add(")"),!0}))}writePath(e,t=!1){return n(this,void 0,void 0,(function*(){if("NamedNode"===e.termType)this.writer.add(yield this.termToString(e));else{if("BlankNode"!==e.termType)throw new Error("Path should be named node or blank node");{const r=this.store.getQuadsOnce(e,null,null,null);if(1===r.length){const{predicate:n,object:i}=r[0];switch(n.value){case"http://www.w3.org/ns/shacl#inversePath":return this.writer.add("^"),void(yield this.writePath(i,!0));case"http://www.w3.org/ns/shacl#alternativePath":{const e=this.getList(i);if(0===e.length)throw new Error("Invalid Alternative Path - no options");if(1===e.length)yield this.writePath(e[0]);else{t&&this.writer.add("(");let r=!0;for(const t of e)r?r=!1:this.writer.add("|"),yield this.writePath(t,!0);t&&this.writer.add(")")}return}case"http://www.w3.org/ns/shacl#zeroOrMorePath":return yield this.writePath(i,!0),void this.writer.add("*");case"http://www.w3.org/ns/shacl#oneOrMorePath":return yield this.writePath(i,!0),void this.writer.add("+");case"http://www.w3.org/ns/shacl#zeroOrOnePath":return yield this.writePath(i,!0),void this.writer.add("?");default:throw new Error(`Invalid path type ${e.value}`)}}else{this.store.addQuads(r);const n=this.getList(e);if(0===n.length)throw new Error("Invalid Path");{t&&this.writer.add("(");let e=!0;for(const t of n)e?e=!1:this.writer.add("/"),yield this.writePath(t,!0);t&&this.writer.add(")")}}}}}))}}},14791:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={owl:"http://www.w3.org/2002/07/owl#",rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://www.w3.org/2000/01/rdf-schema#",sh:"http://www.w3.org/ns/shacl#",xsd:"http://www.w3.org/2001/XMLSchema#"}},22939:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.write=void 0;const a=r(72243),o=i(r(23344)),s=i(r(29908)),c=i(r(23187));t.write=function(e,t){return n(this,void 0,void 0,(function*(){return new Promise(((r,i)=>n(this,void 0,void 0,(function*(){try{let n="";const i=new c.default(e),u=i.getGraphs(null,null,null);if(u.length>1)throw new Error("More than one graph found - can serialize in the default graph");if(1===u.length&&!u[0].equals(a.DataFactory.defaultGraph()))throw new Error(`Expected all triples to be in the default graph, instead triples were in ${u[0].value}`);const l=new s.default({write:e=>{n+=e},end:()=>{let e=i.getQuads(null,null,null,null);0===e.length&&(e=void 0),r({text:n,extraQuads:e})}}),d=new o.default(i,l,null==t?void 0:t.prefixes,void 0,!1!==(null==t?void 0:t.errorOnUnused),null==t?void 0:t.mintPrefixes,null==t?void 0:t.fetch,null==t?void 0:t.extendedSyntax);yield d.write()}catch(e){i(e)}}))))}))}},58007:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={targetNode:!0,targetObjectsOf:!0,targetSubjectsOf:!0,deactivated:!0,severity:!0,message:!0,class:!0,datatype:!0,nodeKind:!0,minExclusive:!0,minInclusive:!0,maxExclusive:!0,maxInclusive:!0,minLength:!0,maxLength:!0,pattern:!0,flags:!0,languageIn:!0,equals:!0,disjoint:!0,closed:!0,ignoredProperties:!0,hasValue:!0,in:!0}},57756:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={deactivated:!0,severity:!0,message:!0,class:!0,datatype:!0,nodeKind:!0,minExclusive:!0,minInclusive:!0,maxExclusive:!0,maxInclusive:!0,minLength:!0,maxLength:!0,pattern:!0,flags:!0,languageIn:!0,uniqueLang:!0,equals:!0,disjoint:!0,lessThan:!0,lessThanOrEquals:!0,qualifiedValueShape:!0,qualifiedMinCount:!0,qualifiedMaxCount:!0,qualifiedValueShapesDisjoint:!0,closed:!0,ignoredProperties:!0,hasValue:!0,in:!0,node:!0}},98118:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getShaclName=void 0,t.getShaclName=function(e){if("NamedNode"!==e.termType||!e.value.startsWith("http://www.w3.org/ns/shacl#"))throw new Error(`Term ${e.value} is not part of the SHACL namespace`);return e.value.slice(27)}},23187:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(72243);class i extends n.Store{getQuadsOnce(e,t,r,n){const i=this.getQuads(e,t,r,n);return this.removeQuads(i),i}getSubjectsOnce(e,t,r){return this.getQuadsOnce(null,e,t,r).map((e=>e.subject))}getObjectsOnce(e,t,r){return this.getQuadsOnce(e,t,null,r).map((e=>e.object))}}t.default=i},29908:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e){this.indents=0,this.write=e.write,this.end=e.end}indent(){return this.indents+=1,this}deindent(){if(this.indents<1)throw new Error(`Trying to deindent when indent is only ${this.indents}`);return this.indents-=1,this}add(e,t=!1){return this.write(t?`\n${"\t".repeat(this.indents)}${e}`:e,"utf-8"),this}newLine(e=2){return this.write("\n".repeat(e)+"\t".repeat(this.indents),"utf-8"),this}}},88110:e=>{e.exports=function(e){"use strict";var t=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function r(e,t){var r=e[0],n=e[1],i=e[2],a=e[3];n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&i|~n&a)+t[0]-680876936|0)<<7|r>>>25)+n|0)&n|~r&i)+t[1]-389564586|0)<<12|a>>>20)+r|0)&r|~a&n)+t[2]+606105819|0)<<17|i>>>15)+a|0)&a|~i&r)+t[3]-1044525330|0)<<22|n>>>10)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&i|~n&a)+t[4]-176418897|0)<<7|r>>>25)+n|0)&n|~r&i)+t[5]+1200080426|0)<<12|a>>>20)+r|0)&r|~a&n)+t[6]-1473231341|0)<<17|i>>>15)+a|0)&a|~i&r)+t[7]-45705983|0)<<22|n>>>10)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&i|~n&a)+t[8]+1770035416|0)<<7|r>>>25)+n|0)&n|~r&i)+t[9]-1958414417|0)<<12|a>>>20)+r|0)&r|~a&n)+t[10]-42063|0)<<17|i>>>15)+a|0)&a|~i&r)+t[11]-1990404162|0)<<22|n>>>10)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&i|~n&a)+t[12]+1804603682|0)<<7|r>>>25)+n|0)&n|~r&i)+t[13]-40341101|0)<<12|a>>>20)+r|0)&r|~a&n)+t[14]-1502002290|0)<<17|i>>>15)+a|0)&a|~i&r)+t[15]+1236535329|0)<<22|n>>>10)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&a|i&~a)+t[1]-165796510|0)<<5|r>>>27)+n|0)&i|n&~i)+t[6]-1069501632|0)<<9|a>>>23)+r|0)&n|r&~n)+t[11]+643717713|0)<<14|i>>>18)+a|0)&r|a&~r)+t[0]-373897302|0)<<20|n>>>12)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&a|i&~a)+t[5]-701558691|0)<<5|r>>>27)+n|0)&i|n&~i)+t[10]+38016083|0)<<9|a>>>23)+r|0)&n|r&~n)+t[15]-660478335|0)<<14|i>>>18)+a|0)&r|a&~r)+t[4]-405537848|0)<<20|n>>>12)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&a|i&~a)+t[9]+568446438|0)<<5|r>>>27)+n|0)&i|n&~i)+t[14]-1019803690|0)<<9|a>>>23)+r|0)&n|r&~n)+t[3]-187363961|0)<<14|i>>>18)+a|0)&r|a&~r)+t[8]+1163531501|0)<<20|n>>>12)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n&a|i&~a)+t[13]-1444681467|0)<<5|r>>>27)+n|0)&i|n&~i)+t[2]-51403784|0)<<9|a>>>23)+r|0)&n|r&~n)+t[7]+1735328473|0)<<14|i>>>18)+a|0)&r|a&~r)+t[12]-1926607734|0)<<20|n>>>12)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n^i^a)+t[5]-378558|0)<<4|r>>>28)+n|0)^n^i)+t[8]-2022574463|0)<<11|a>>>21)+r|0)^r^n)+t[11]+1839030562|0)<<16|i>>>16)+a|0)^a^r)+t[14]-35309556|0)<<23|n>>>9)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n^i^a)+t[1]-1530992060|0)<<4|r>>>28)+n|0)^n^i)+t[4]+1272893353|0)<<11|a>>>21)+r|0)^r^n)+t[7]-155497632|0)<<16|i>>>16)+a|0)^a^r)+t[10]-1094730640|0)<<23|n>>>9)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n^i^a)+t[13]+681279174|0)<<4|r>>>28)+n|0)^n^i)+t[0]-358537222|0)<<11|a>>>21)+r|0)^r^n)+t[3]-722521979|0)<<16|i>>>16)+a|0)^a^r)+t[6]+76029189|0)<<23|n>>>9)+i|0,n=((n+=((i=((i+=((a=((a+=((r=((r+=(n^i^a)+t[9]-640364487|0)<<4|r>>>28)+n|0)^n^i)+t[12]-421815835|0)<<11|a>>>21)+r|0)^r^n)+t[15]+530742520|0)<<16|i>>>16)+a|0)^a^r)+t[2]-995338651|0)<<23|n>>>9)+i|0,n=((n+=((a=((a+=(n^((r=((r+=(i^(n|~a))+t[0]-198630844|0)<<6|r>>>26)+n|0)|~i))+t[7]+1126891415|0)<<10|a>>>22)+r|0)^((i=((i+=(r^(a|~n))+t[14]-1416354905|0)<<15|i>>>17)+a|0)|~r))+t[5]-57434055|0)<<21|n>>>11)+i|0,n=((n+=((a=((a+=(n^((r=((r+=(i^(n|~a))+t[12]+1700485571|0)<<6|r>>>26)+n|0)|~i))+t[3]-1894986606|0)<<10|a>>>22)+r|0)^((i=((i+=(r^(a|~n))+t[10]-1051523|0)<<15|i>>>17)+a|0)|~r))+t[1]-2054922799|0)<<21|n>>>11)+i|0,n=((n+=((a=((a+=(n^((r=((r+=(i^(n|~a))+t[8]+1873313359|0)<<6|r>>>26)+n|0)|~i))+t[15]-30611744|0)<<10|a>>>22)+r|0)^((i=((i+=(r^(a|~n))+t[6]-1560198380|0)<<15|i>>>17)+a|0)|~r))+t[13]+1309151649|0)<<21|n>>>11)+i|0,n=((n+=((a=((a+=(n^((r=((r+=(i^(n|~a))+t[4]-145523070|0)<<6|r>>>26)+n|0)|~i))+t[11]-1120210379|0)<<10|a>>>22)+r|0)^((i=((i+=(r^(a|~n))+t[2]+718787259|0)<<15|i>>>17)+a|0)|~r))+t[9]-343485551|0)<<21|n>>>11)+i|0,e[0]=r+e[0]|0,e[1]=n+e[1]|0,e[2]=i+e[2]|0,e[3]=a+e[3]|0}function n(e){var t,r=[];for(t=0;t<64;t+=4)r[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return r}function i(e){var t,r=[];for(t=0;t<64;t+=4)r[t>>2]=e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24);return r}function a(e){var t,i,a,o,s,c,u=e.length,l=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=u;t+=64)r(l,n(e.substring(t-64,t)));for(i=(e=e.substring(t-64)).length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t>2]|=e.charCodeAt(t)<<(t%4<<3);if(a[t>>2]|=128<<(t%4<<3),t>55)for(r(l,a),t=0;t<16;t+=1)a[t]=0;return o=(o=8*u).toString(16).match(/(.*?)(.{0,8})$/),s=parseInt(o[2],16),c=parseInt(o[1],16)||0,a[14]=s,a[15]=c,r(l,a),l}function o(e){var r,n="";for(r=0;r<4;r+=1)n+=t[e>>8*r+4&15]+t[e>>8*r&15];return n}function s(e){var t;for(t=0;tu?new ArrayBuffer(0):(n=u-c,i=new ArrayBuffer(n),a=new Uint8Array(i),o=new Uint8Array(this,c,n),a.set(o),i)}}(),l.prototype.append=function(e){return this.appendBinary(c(e)),this},l.prototype.appendBinary=function(e){this._buff+=e,this._length+=e.length;var t,i=this._buff.length;for(t=64;t<=i;t+=64)r(this._hash,n(this._buff.substring(t-64,t)));return this._buff=this._buff.substring(t-64),this},l.prototype.end=function(e){var t,r,n=this._buff,i=n.length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t>2]|=n.charCodeAt(t)<<(t%4<<3);return this._finish(a,i),r=s(this._hash),e&&(r=u(r)),this.reset(),r},l.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},l.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},l.prototype.setState=function(e){return this._buff=e.buff,this._length=e.length,this._hash=e.hash,this},l.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},l.prototype._finish=function(e,t){var n,i,a,o=t;if(e[o>>2]|=128<<(o%4<<3),o>55)for(r(this._hash,e),o=0;o<16;o+=1)e[o]=0;n=(n=8*this._length).toString(16).match(/(.*?)(.{0,8})$/),i=parseInt(n[2],16),a=parseInt(n[1],16)||0,e[14]=i,e[15]=a,r(this._hash,e)},l.hash=function(e,t){return l.hashBinary(c(e),t)},l.hashBinary=function(e,t){var r=s(a(e));return t?u(r):r},l.ArrayBuffer=function(){this.reset()},l.ArrayBuffer.prototype.append=function(e){var t,n,a,o,s,c=(n=this._buff.buffer,a=e,o=!0,(s=new Uint8Array(n.byteLength+a.byteLength)).set(new Uint8Array(n)),s.set(new Uint8Array(a),n.byteLength),o?s:s.buffer),u=c.length;for(this._length+=e.byteLength,t=64;t<=u;t+=64)r(this._hash,i(c.subarray(t-64,t)));return this._buff=t-64>2]|=n[t]<<(t%4<<3);return this._finish(a,i),r=s(this._hash),e&&(r=u(r)),this.reset(),r},l.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},l.ArrayBuffer.prototype.getState=function(){var e,t=l.prototype.getState.call(this);return t.buff=(e=t.buff,String.fromCharCode.apply(null,new Uint8Array(e))),t},l.ArrayBuffer.prototype.setState=function(e){return e.buff=function(e,t){var r,n=e.length,i=new ArrayBuffer(n),a=new Uint8Array(i);for(r=0;r>2]|=e[t]<<(t%4<<3);if(a[t>>2]|=128<<(t%4<<3),t>55)for(r(l,a),t=0;t<16;t+=1)a[t]=0;return o=(o=8*u).toString(16).match(/(.*?)(.{0,8})$/),s=parseInt(o[2],16),c=parseInt(o[1],16)||0,a[14]=s,a[15]=c,r(l,a),l}(new Uint8Array(e)));return t?u(n):n},l}()},31578:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Util=t.toSparqlJs=t.toSparql=t.Factory=t.Algebra=t.translate=void 0;const s=o(r(71029));t.translate=s.default;const c=a(r(47914));t.Algebra=c;const u=o(r(376));t.Factory=u.default;const l=r(24693);Object.defineProperty(t,"toSparql",{enumerable:!0,get:function(){return l.toSparql}}),Object.defineProperty(t,"toSparqlJs",{enumerable:!0,get:function(){return l.toSparqlJs}});const d=o(r(83152));t.Util=d.default},47914:(e,t)=>{"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),t.expressionTypes=t.types=void 0,(n=t.types||(t.types={})).ALT="alt",n.ASK="ask",n.BGP="bgp",n.CONSTRUCT="construct",n.DESCRIBE="describe",n.DISTINCT="distinct",n.EXPRESSION="expression",n.EXTEND="extend",n.FILTER="filter",n.FROM="from",n.GRAPH="graph",n.GROUP="group",n.INV="inv",n.JOIN="join",n.LEFT_JOIN="leftjoin",n.LINK="link",n.MINUS="minus",n.NOP="nop",n.NPS="nps",n.ONE_OR_MORE_PATH="OneOrMorePath",n.ORDER_BY="orderby",n.PATH="path",n.PATTERN="pattern",n.PROJECT="project",n.REDUCED="reduced",n.SEQ="seq",n.SERVICE="service",n.SLICE="slice",n.UNION="union",n.VALUES="values",n.ZERO_OR_MORE_PATH="ZeroOrMorePath",n.ZERO_OR_ONE_PATH="ZeroOrOnePath",n.COMPOSITE_UPDATE="compositeupdate",n.DELETE_INSERT="deleteinsert",n.LOAD="load",n.CLEAR="clear",n.CREATE="create",n.DROP="drop",n.ADD="add",n.MOVE="move",n.COPY="copy",(r=t.expressionTypes||(t.expressionTypes={})).AGGREGATE="aggregate",r.EXISTENCE="existence",r.NAMED="named",r.OPERATOR="operator",r.TERM="term",r.WILDCARD="wildcard"},376:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const o=a(r(47914)),s=r(18050),c=r(22112),u=r(55403);t.default=class{constructor(e){this.dataFactory=e||new s.DataFactory,this.stringType=this.createTerm("http://www.w3.org/2001/XMLSchema#string")}createAlt(e,t=!0){return this.flattenMulti({type:o.types.ALT,input:e},t)}createAsk(e){return{type:o.types.ASK,input:e}}createBoundAggregate(e,t,r,n,i){const a=this.createAggregateExpression(t,r,n,i);return a.variable=e,a}createBgp(e){return{type:o.types.BGP,patterns:e}}createConstruct(e,t){return{type:o.types.CONSTRUCT,input:e,template:t}}createDescribe(e,t){return{type:o.types.DESCRIBE,input:e,terms:t}}createDistinct(e){return{type:o.types.DISTINCT,input:e}}createExtend(e,t,r){return{type:o.types.EXTEND,input:e,variable:t,expression:r}}createFrom(e,t,r){return{type:o.types.FROM,input:e,default:t,named:r}}createFilter(e,t){return{type:o.types.FILTER,input:e,expression:t}}createGraph(e,t){return{type:o.types.GRAPH,input:e,name:t}}createGroup(e,t,r){return{type:o.types.GROUP,input:e,variables:t,aggregates:r}}createInv(e){return{type:o.types.INV,path:e}}createJoin(e,t=!0){return this.flattenMulti({type:o.types.JOIN,input:e},t)}createLeftJoin(e,t,r){return r?{type:o.types.LEFT_JOIN,input:[e,t],expression:r}:{type:o.types.LEFT_JOIN,input:[e,t]}}createLink(e){return{type:o.types.LINK,iri:e}}createMinus(e,t){return{type:o.types.MINUS,input:[e,t]}}createNop(){return{type:o.types.NOP}}createNps(e){return{type:o.types.NPS,iris:e}}createOneOrMorePath(e){return{type:o.types.ONE_OR_MORE_PATH,path:e}}createOrderBy(e,t){return{type:o.types.ORDER_BY,input:e,expressions:t}}createPath(e,t,r,n){return n?{type:o.types.PATH,subject:e,predicate:t,object:r,graph:n}:{type:o.types.PATH,subject:e,predicate:t,object:r,graph:this.dataFactory.defaultGraph()}}createPattern(e,t,r,n){const i=this.dataFactory.quad(e,t,r,n);return i.type=o.types.PATTERN,i}createProject(e,t){return{type:o.types.PROJECT,input:e,variables:t}}createReduced(e){return{type:o.types.REDUCED,input:e}}createSeq(e,t=!0){return this.flattenMulti({type:o.types.SEQ,input:e},t)}createService(e,t,r){return{type:o.types.SERVICE,input:e,name:t,silent:Boolean(r)}}createSlice(e,t,r){return t=t||0,void 0!==r?{type:o.types.SLICE,input:e,start:t,length:r}:{type:o.types.SLICE,input:e,start:t}}createUnion(e,t=!0){return this.flattenMulti({type:o.types.UNION,input:e},t)}createValues(e,t){return{type:o.types.VALUES,variables:e,bindings:t}}createZeroOrMorePath(e){return{type:o.types.ZERO_OR_MORE_PATH,path:e}}createZeroOrOnePath(e){return{type:o.types.ZERO_OR_ONE_PATH,path:e}}createAggregateExpression(e,t,r,n){return n?{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,separator:n,distinct:r}:{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,distinct:r}}createExistenceExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.EXISTENCE,not:e,input:t}}createNamedExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.NAMED,name:e,args:t}}createOperatorExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.OPERATOR,operator:e,args:t}}createTermExpression(e){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.TERM,term:e}}createWildcardExpression(){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.WILDCARD,wildcard:new u.Wildcard}}createTerm(e){return"$"===e[0]&&(e=e.replace("$","?")),(0,c.stringToTerm)(e,this.dataFactory)}createCompositeUpdate(e){return{type:o.types.COMPOSITE_UPDATE,updates:e}}createDeleteInsert(e,t,r){const n={type:o.types.DELETE_INSERT};return e&&(n.delete=e),t&&(n.insert=t),r&&(n.where=r),n}createLoad(e,t,r){const n={type:o.types.LOAD,source:e};return t&&(n.destination=t),this.addSilent(n,Boolean(r))}createClear(e,t){return this.addSilent({type:o.types.CLEAR,source:e},Boolean(t))}createCreate(e,t){return this.addSilent({type:o.types.CREATE,source:e},Boolean(t))}createDrop(e,t){return this.addSilent({type:o.types.DROP,source:e},Boolean(t))}createAdd(e,t,r){return this.addSilent({type:o.types.ADD,source:e,destination:t},Boolean(r))}createMove(e,t,r){return this.addSilent({type:o.types.MOVE,source:e,destination:t},Boolean(r))}createCopy(e,t,r){return this.addSilent({type:o.types.COPY,source:e,destination:t},Boolean(r))}addSilent(e,t){return t&&(e.silent=t),e}flattenMulti(e,t){if(!t)return e;const r=e.type,n=e.input;let i=[];for(const e of n)e.type===r?i.push(...e.input):i.push(e);return e.input=i,e}}},24693:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.toSparqlJs=t.toSparql=void 0;const s=r(91032),c=r(22112),u=r(55403),l=a(r(47914)),d=o(r(376)),p=o(r(83152)),h=l.types,f=l.expressionTypes;let y;const g=new d.default;function m(e){b();let t=v(e=function(e){return D(e,[])}(e));return"group"===t.type?t.patterns[0]:t}function b(){y={project:!1,extend:[],group:[],aggregates:[],order:[]}}function v(e){switch(e.type!==h.EXTEND&&e.type!==h.ORDER_BY&&e.type!==h.GRAPH&&(y.project=!1),e.type){case h.EXPRESSION:return _(e);case h.ASK:return A(e,h.ASK);case h.BGP:return function(e){let t=e.patterns.map(E);return 0===t.length?null:{type:"bgp",triples:t}}(e);case h.CONSTRUCT:return function(e){return{type:"query",prefixes:{},queryType:"CONSTRUCT",template:e.template.map(E),where:p.default.flatten([v(e.input)])}}(e);case h.DESCRIBE:return A(e,h.DESCRIBE);case h.DISTINCT:return function(e){let t=v(e.input);return t.patterns[0].distinct=!0,t}(e);case h.EXTEND:return function(e){return y.project?(y.extend.push(e),v(e.input)):p.default.flatten([v(e.input),{type:"bind",variable:e.variable,expression:_(e.expression)}])}(e);case h.FROM:return function(e){const t=v(e.input);let r=t;return"group"===t.type&&(r=t.patterns[0]),r.from={default:e.default,named:e.named},t}(e);case h.FILTER:return function(e){return{type:"group",patterns:p.default.flatten([v(e.input),{type:"filter",expression:_(e.expression)}])}}(e);case h.GRAPH:return function(e){return{type:"graph",patterns:p.default.flatten([v(e.input)]),name:e.name}}(e);case h.GROUP:return function(e){const t=v(e.input),r=e.aggregates.map(O);return y.aggregates.push(...r),y.group.push(...e.variables),t}(e);case h.JOIN:return function(e){return p.default.flatten(e.input.map(v)).reduce(((e,t)=>("bgp"!==t.type||0==e.length||"bgp"!==e[e.length-1].type?e.push(t):e[e.length-1].triples.push(...t.triples),e)),[])}(e);case h.LEFT_JOIN:return function(e){const t={type:"optional",patterns:[v(e.input[1])]};return e.expression&&t.patterns.push({type:"filter",expression:_(e.expression)}),t.patterns=p.default.flatten(t.patterns),p.default.flatten([v(e.input[0]),t])}(e);case h.MINUS:return function(e){let t=v(e.input[1]);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),p.default.flatten([v(e.input[0]),{type:"minus",patterns:t}])}(e);case h.NOP:return{};case h.ORDER_BY:return function(e){return y.order.push(...e.expressions),v(e.input)}(e);case h.PATH:return function(e){return{type:"bgp",triples:[{subject:e.subject,predicate:w(e.predicate),object:e.object}]}}(e);case h.PATTERN:return E(e);case h.PROJECT:return A(e,h.PROJECT);case h.REDUCED:return function(e){let t=v(e.input);return t.patterns[0].reduced=!0,t}(e);case h.SERVICE:return function(e){let t=v(e.input);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),{type:"service",name:e.name,silent:e.silent,patterns:t}}(e);case h.SLICE:return function(e){let t=v(e.input),r=t;return t.type&&"group"===t.type&&(r=t.patterns[0]),0!==e.start&&(r.offset=e.start),void 0!==e.length&&(r.limit=e.length),t}(e);case h.UNION:return function(e){return{type:"union",patterns:e.input.map(v).map(S)}}(e);case h.VALUES:return function(e){return{type:"values",values:e.bindings.map((t=>{let r={};for(let n of e.variables){let e=`?${n.value}`;t[e]?r[e]=t[e]:r[e]=void 0}return r}))}}(e);case h.COMPOSITE_UPDATE:return function(e){return{prefixes:{},type:"update",updates:e.updates.map((e=>v(e).updates[0]))}}(e);case h.DELETE_INSERT:return function(e){var t;let r,n=e.where;if(n&&n.type===h.FROM){let e=n;n=e.input,r={default:e.default,named:e.named}}const i=[{updateType:"insertdelete",delete:N(e.delete||[]),insert:N(e.insert||[])}];if(r&&(i[0].using=r),!n||n.type===h.BGP&&0===n.patterns.length)i[0].where=[];else{const e=[];let r=v(D(n,e));if("group"===r.type?i[0].where=r.patterns:i[0].where=[r],e.length>0){if(1!==e.length)throw new Error("This is unexpected and might indicate an error in graph handling for updates.");""!==(null===(t=e[0])||void 0===t?void 0:t.value)&&(i[0].where=[{type:"graph",patterns:i[0].where,name:e[0]}])}}return e.delete||e.where?e.insert||e.where?!e.insert&&e.where&&"bgp"===e.where.type&&(0,s.isomorphic)(e.delete,e.where.patterns)&&(delete i[0].where,i[0].updateType="deletewhere"):(delete i[0].insert,delete i[0].where,e.delete.some((e=>"Variable"===e.subject.termType||"Variable"===e.predicate.termType||"Variable"===e.object.termType))?i[0].updateType="deletewhere":i[0].updateType="delete"):(i[0].updateType="insert",delete i[0].delete,delete i[0].where),{prefixes:{},type:"update",updates:i}}(e);case h.LOAD:return function(e){const t=[{type:"load",silent:Boolean(e.silent),source:e.source}];return e.destination&&(t[0].destination=e.destination),{prefixes:{},type:"update",updates:t}}(e);case h.CLEAR:return function(e){return I(e,"clear")}(e);case h.CREATE:return function(e){return I(e,"create")}(e);case h.DROP:return function(e){return I(e,"drop")}(e);case h.ADD:return function(e){return P(e,"add")}(e);case h.MOVE:return function(e){return P(e,"move")}(e);case h.COPY:return function(e){return P(e,"copy")}(e)}throw new Error(`Unknown Operation type ${e.type}`)}function _(e){switch(e.expressionType){case f.AGGREGATE:return function(e){const t={expression:_(e.expression),type:"aggregate",aggregation:e.aggregator,distinct:e.distinct};return e.separator&&(t.separator=e.separator),t}(e);case f.EXISTENCE:return function(e){return{type:"operation",operator:e.not?"notexists":"exists",args:[{type:"group",patterns:p.default.flatten([v(e.input)])}]}}(e);case f.NAMED:return function(e){return{type:"functionCall",function:e.name,args:e.args.map(_)}}(e);case f.OPERATOR:return function(e){if("desc"===e.operator){return{expression:_(e.args[0]),descending:!0}}const t={type:"operation",operator:e.operator,args:e.args.map(_)};return"in"!==t.operator&&"notin"!==t.operator||(t.args=[t.args[0]].concat([t.args.slice(1)])),t}(e);case f.TERM:return function(e){return e.term}(e);case f.WILDCARD:return function(e){return e.wildcard}(e)}throw new Error(`Unknown Expression Operation type ${e.expressionType}`)}function w(e){switch(e.type){case h.ALT:return function(e){const t=e.input.map(w);return t.every((e=>"pathType"in e&&"!"===e.pathType))?{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:p.default.flatten(t.map((e=>e.items)))}]}:{type:"path",pathType:"|",items:t}}(e);case h.INV:return function(e){if(e.path.type===h.NPS){const t=e.path.iris.map((e=>({type:"path",pathType:"^",items:[e]})));return t.length<=1?{type:"path",pathType:"!",items:t}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:t}]}}return{type:"path",pathType:"^",items:[w(e.path)]}}(e);case h.LINK:return function(e){return e.iri}(e);case h.NPS:return function(e){return e.iris.length<=1?{type:"path",pathType:"!",items:e.iris}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:e.iris}]}}(e);case h.ONE_OR_MORE_PATH:return function(e){return{type:"path",pathType:"+",items:[w(e.path)]}}(e);case h.SEQ:return function(e){return{type:"path",pathType:"/",items:e.input.map(w)}}(e);case h.ZERO_OR_MORE_PATH:return function(e){return{type:"path",pathType:"*",items:[w(e.path)]}}(e);case h.ZERO_OR_ONE_PATH:return function(e){return{type:"path",pathType:"?",items:[w(e.path)]}}(e)}throw new Error(`Unknown Path type ${e.type}`)}function T(e){return(0,c.termToString)(e)}function S(e){return Array.isArray(e)?1===e.length?e[0]:{type:"group",patterns:e}:e}function O(e){return e}function E(e){return{subject:e.subject,predicate:e.predicate,object:e.object}}function x(e,t){let r=p.default.isSimpleTerm(e)?T(e):e;if("string"==typeof r){if(t[r])return t[r]}else if(Array.isArray(e))e=e.map((e=>x(e,t)));else for(let r of Object.keys(e))e[r]=x(e[r],t);return e}function A(e,t){const r={type:"query",prefixes:{}},n=r;let i;t===h.PROJECT?(r.queryType="SELECT",i=e.variables):t===h.ASK?r.queryType="ASK":t===h.DESCRIBE&&(r.queryType="DESCRIBE",i=e.terms);const a=y.extend,o=y.group,s=y.aggregates,c=y.order;b(),y.project=!0;let l=p.default.flatten([v(e.input)]);1===l.length&&"group"===l[0].type&&(l=l[0].patterns),r.where=l;let d={};for(let e of y.aggregates)d[T(e.variable)]=_(e);let f={};for(let e=y.extend.length-1;e>=0;--e){let t=y.extend[e];f[T(t.variable)]=x(_(t.expression),d)}if(y.group.length>0&&(n.group=y.group.map((e=>{let t=T(e);if(f[t]){let r=f[t];return delete f[t],{variable:e,expression:r}}return{expression:e}}))),y.order.length>0&&(n.order=y.order.map(v).map((e=>e.descending?e:{expression:e}))),i&&(n.variables=i.map((e=>{let t=T(e);return f[t]?{variable:e,expression:f[t]}:e})),0===n.variables.length&&(n.variables=[new u.Wildcard])),r.where.length>0&&"filter"===r.where[r.where.length-1].type){const e=r.where[r.where.length-1];R(e,Object.keys(d))&&(n.having=p.default.flatten([x(e.expression,d)]),r.where.splice(-1))}return y.extend=a,y.group=o,y.aggregates=s,y.order=c,{type:"group",patterns:[n]}}function R(e,t){return p.default.isSimpleTerm(e)?t.indexOf(T(e))>=0:Array.isArray(e)?e.some((e=>R(e,t))):e===Object(e)?Object.keys(e).some((r=>R(e[r],t))):t.indexOf(e)>=0}function I(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return"DEFAULT"===e.source?r[0].graph={default:!0}:"NAMED"===e.source?r[0].graph={named:!0}:"ALL"===e.source?r[0].graph={all:!0}:r[0].graph={type:"graph",name:e.source},{prefixes:{},type:"update",updates:r}}function P(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return r[0].source="DEFAULT"===e.source?{type:"graph",default:!0}:{type:"graph",name:e.source},r[0].destination="DEFAULT"===e.destination?{type:"graph",default:!0}:{type:"graph",name:e.destination},{prefixes:{},type:"update",updates:r}}function N(e){if(!e)return[];const t={};return e.forEach((e=>{const r=e.graph.value;t[r]||(t[r]=[]),t[r].push(e)})),Object.keys(t).map((e=>""===e?{type:"bgp",triples:t[e].map(E)}:{type:"graph",triples:t[e].map(E),name:t[e][0].graph}))}function D(e,t){if(Array.isArray(e))return e.map((e=>D(e,t)));if(!e.type)return e;if(e.type===h.DELETE_INSERT)return e;if((e.type===h.PATTERN||e.type===h.PATH)&&e.graph)return t.push(e.graph),""!==e.graph.name?e.type===h.PATTERN?g.createPattern(e.subject,e.predicate,e.object):g.createPath(e.subject,e.predicate,e.object):e;const r={},n={},i={};for(let t of Object.keys(e)){const a=[];if(r[t]=D(e[t],a),a.length>0){n[t]=a;for(const e of a)i[e.value]=e}}const a=Object.keys(i);if(a.length>0)if(1!==a.length||[h.PROJECT,h.SERVICE].includes(e.type)){if(e.type===h.BGP)return function(e,t){var r;const n={};for(let i=0;i""===n[e][0].value?t:g.createGraph(t,n[e][r]))):""!==n[e][0].value&&(r[e]=g.createGraph(t,n[e][0]))}}else t.push(i[a[0]]);return r}t.toSparql=function(e,t={}){return new u.Generator(t).stringify(m(e))},t.toSparqlJs=m},71029:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(53933),c=r(22112),u=a(r(47914)),l=o(r(376)),d=o(r(83152)),p=r(55403).Parser,h=u.types;let f,y=new Set,g=0,m=!1;function b(e,t,r){if(y=new Set,g=0,m=Boolean(t),!e.type)return f.createNop();if("query"!==e.type&&"update"!==e.type)throw new Error("Translate only works on complete query or update objects.");let n;var i;return w(e),"query"===e.type?(n=S({type:"group",patterns:e.where||[]}),n=function(e,t){const r=e,n=[],i={};if(r.variables=r.variables&&r.variables.map((e=>C(e,i))),r.having=r.having&&r.having.map((e=>C(e,i))),r.order=r.order&&r.order.map((e=>C(e,i))),r.group||Object.keys(i).length>0){const e=Object.keys(i).map((e=>function(e,t){if("aggregate"!==e.type||!e.aggregation)throw new Error(`Unexpected input: ${JSON.stringify(e)}`);const r=O(e);return r.variable=t,r}(i[e],f.createTerm(e)))),n=[];if(r.group)for(const e of r.group)if(d.default.isSimpleTerm(e.expression))n.push(e.expression);else{const r="variable"in e?e.variable:A();t=f.createExtend(t,r,O(e.expression)),n.push(r)}t=f.createGroup(t,n,e)}if(r.having)for(let e of r.having)t=f.createFilter(t,O(e));e.values&&(t=f.createJoin([t,j(e)]));let a=[];if("SELECT"===e.queryType||"DESCRIBE"===e.queryType)if(e.variables.some((e=>e&&d.default.isWildcard(e))))a=Object.values(T(e)).sort(((e,t)=>e.value.localeCompare(t.value)));else for(let t of e.variables)_(t)||!("variable"in t)?a.push(t):t.variable&&(a.push(t.variable),n.push(t));for(let e of n)t=f.createExtend(t,e.variable,O(e.expression));return r.order&&(t=f.createOrderBy(t,r.order.map((e=>{let t=O(e.expression);return e.descending&&(t=f.createOperatorExpression("desc",[t])),t})))),"SELECT"===e.queryType&&(t=f.createProject(t,a)),r.distinct&&(t=f.createDistinct(t)),r.reduced&&(t=f.createReduced(t)),"CONSTRUCT"===e.queryType?t=f.createConstruct(t,(e.template||[]).map(R)):"ASK"===e.queryType?t=f.createAsk(t):"DESCRIBE"===e.queryType&&(t=f.createDescribe(t,a)),(r.offset||r.limit)&&(t=f.createSlice(t,r.offset||0,r.limit)),r.from&&(t=f.createFrom(t,r.from.default,r.from.named)),t}(e,n)):"update"===e.type&&(n=1===(i=e).updates.length?M(i.updates[0]):f.createCompositeUpdate(i.updates.map(M))),r&&(n=k(n)),n}function v(e){return Boolean(null==e?void 0:e.termType)}function _(e){return"Variable"===(null==e?void 0:e.termType)}function w(e){if(v(e))_(e)&&y.add(`?${e.value}`);else if(Array.isArray(e))for(const t of e)w(t);else if(e&&"object"==typeof e)for(let t of Object.keys(e))t.startsWith("?")?y.add(t):t.startsWith("$")&&y.add(`?${t.slice(1)}`),w(e[t])}function T(e){let t={};if((r=e).subject&&r.predicate&&r.object){const r=[T(e.subject),T(e.predicate),T(e.object),e.graph?T(e.graph):{}];Object.assign(t,...r)}else if(v(e))_(e)&&(t[e.value]=e);else if("bgp"===e.type){const r=e.triples;Object.assign(t,...r.map(T))}else if("path"===e.type)Object.assign(t,...e.items.map(T));else if("group"===e.type||"union"===e.type||"optional"===e.type)Object.assign(t,...e.patterns.map(T));else if("service"===e.type||"graph"===e.type)Object.assign(t,T(e.name)),Object.assign(t,...e.patterns.map(T));else if("bind"===e.type)Object.assign(t,T(e.variable));else if("values"===e.type){if(e.values.length>0){const r=Object.keys(e.values[0]).map((e=>f.createTerm(e)));Object.assign(t,...r.map(T))}}else if("query"===e.type&&("SELECT"===e.queryType||"DESCRIBE"===e.queryType)){e.where&&e.variables.some(d.default.isWildcard)&&Object.assign(t,...e.where.map(T));for(const r of e.variables)_(r)?Object.assign(t,T(r)):r.variable&&Object.assign(t,T(r.variable));if("SELECT"===e.queryType){if(e.group)for(const r of e.group)r.variable&&Object.assign(t,T(r.variable));if(e.values){const r={type:"values",values:e.values};Object.assign(t,T(r))}}}var r;return t}function S(e){if("bgp"===e.type)return function(e){let t=[],r=[];for(let i of e.triples)if("pathType"in i.predicate){let e=x((n=i).subject,E(n.predicate),n.object);for(let n of e)n.type===h.PATH?(t.length>0&&r.push(f.createBgp(t)),t=[],r.push(n)):t.push(n)}else t.push(R(i));var n;return t.length>0&&r.push(f.createBgp(t)),1===r.length?r[0]:f.createJoin(r)}(e);if("union"===e.type)return f.createUnion(e.patterns.map((e=>("group"!==e.type&&(e={type:"group",patterns:[e]}),S(e)))));if("graph"===e.type){let t=S({type:"group",patterns:e.patterns});return t=m?P(t,e.name):f.createGraph(t,e.name),t}if("values"===e.type)return j(e);if("query"===e.type)return b(e,m,!1);if("group"===e.type){let t=[],r=[];for(let n of e.patterns)("filter"===n.type?t:r).push(n);let n=r.reduce(N,f.createBgp([])),i=t.map((e=>O(e.expression)));return i.length>0&&(n=f.createFilter(n,i.reduce(((e,t)=>f.createOperatorExpression("&&",[e,t]))))),n}throw new Error(`Unexpected type: ${e.type}`)}function O(e){if(d.default.isSimpleTerm(e))return f.createTermExpression(e);if(d.default.isQuad(e))return d.default.hasQuadVariables(e)?f.createOperatorExpression("triple",[O(e.subject),O(e.predicate),O(e.object)]):f.createTermExpression(e);if(d.default.isWildcard(e))return f.createWildcardExpression();if("aggregation"in e)return f.createAggregateExpression(e.aggregation,O(e.expression),Boolean(e.distinct),e.separator);if("function"in e)return f.createNamedExpression(e.function,e.args.map(O));if("operator"in e)return"exists"===e.operator||"notexists"===e.operator?f.createExistenceExpression("notexists"===e.operator,S(e.args[0])):("in"!==e.operator&&"notin"!==e.operator||(e.args=[e.args[0]].concat(e.args[1])),f.createOperatorExpression(e.operator,e.args.map(O)));throw new Error(`Unknown expression: ${JSON.stringify(e)}`)}function E(e){if(d.default.isSimpleTerm(e)){if("NamedNode"===e.termType)return f.createLink(e);throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(e)}`)}if("^"===e.pathType)return f.createInv(E(e.items[0]));if("!"===e.pathType){let t,r=[],n=[];t="pathType"in e.items[0]&&"|"===e.items[0].pathType?e.items[0].items:e.items;for(let e of t)if(d.default.isSimpleTerm(e))r.push(e);else{if("^"!==e.pathType)throw new Error(`Unexpected item: ${JSON.stringify(e)}`);n.push(e.items[0])}let i=f.createNps(r),a=f.createInv(f.createNps(n));return 0===n.length?i:0===r.length?a:f.createAlt([i,a])}if("/"===e.pathType)return f.createSeq(e.items.map(E));if("|"===e.pathType)return f.createAlt(e.items.map(E));if("*"===e.pathType)return f.createZeroOrMorePath(E(e.items[0]));if("+"===e.pathType)return f.createOneOrMorePath(E(e.items[0]));if("?"===e.pathType)return f.createZeroOrOnePath(E(e.items[0]));throw new Error(`Unable to translate path expression ${JSON.stringify(e)}`)}function x(e,t,r){if(t.type===h.LINK)return[f.createPattern(e,t.iri,r)];if(t.type===h.INV)return x(r,t.path,e);if(t.type===h.SEQ){let n=e;return d.default.flatten(t.input.map(((e,i)=>{const a=i===t.input.length-1?r:A(),o=x(n,e,a);return"Variable"===a.termType&&(n=a),o})))}return[f.createPath(e,t,r)]}function A(){let e="?var"+g++;return y.has(e)?A():(y.add(e),f.createTerm(e))}function R(e){if("pathType"in e.predicate)throw new Error("Trying to translate property path to quad.");return f.createPattern(e.subject,e.predicate,e.object,e.graph)}t.default=function(e,t){let r;if(t=t||{},f=new l.default(t.dataFactory),"string"==typeof e){let n=new p(t);n._resetBlanks(),r=n.parse(e)}else r=e;return b(r,t.quads,t.blankToVariable)};let I=Object.values(h);function P(e,t,r){if(e.type===h.GRAPH){if(r)throw new Error("Recursing through nested GRAPH statements with a replacement is impossible.");e=P(e.input,e.name)}else if(e.type===h.SERVICE);else if(e.type===h.BGP)e.patterns=e.patterns.map((e=>(r&&(e.subject.equals(t)&&(e.subject=r),e.predicate.equals(t)&&(e.predicate=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t),e)));else if(e.type===h.PATH)r&&(e.subject.equals(t)&&(e.subject=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t);else if(e.type!==h.PROJECT||r)if(e.type!==h.EXTEND||r)for(let n of Object.keys(e))Array.isArray(e[n])?e[n]=e[n].map((e=>P(e,t,r))):I.indexOf(e[n].type)>=0?e[n]=P(e[n],t,r):r&&_(e[n])&&e[n].equals(t)&&(e[n]=r);else e.variable.equals(t)&&(r=A()),e.input=P(e.input,t,r);else e.variables.some((e=>e.equals(t)))||(r=A()),e.input=P(e.input,t,r);return e}function N(e,t){if("optional"===t.type){const r=S({type:"group",patterns:t.patterns});e=r.type===h.FILTER?f.createLeftJoin(e,r.input,r.expression):f.createLeftJoin(e,r)}else if("minus"===t.type){const r=S({type:"group",patterns:t.patterns});e=f.createMinus(e,r)}else if("bind"===t.type)e=f.createExtend(e,t.variable,O(t.expression));else if("service"===t.type){const r={type:"group",patterns:t.patterns};e=D(e,f.createService(S(r),t.name,t.silent))}else e=D(e,S(t));return e}function D(e,t){return e.type===h.BGP&&t.type===h.BGP?e=f.createBgp([...e.patterns,...t.patterns]):e.type===h.BGP&&0===e.patterns.length?e=t:t.type===h.BGP&&0===t.patterns.length||(e=f.createJoin([e,t])),e}function j(e){let t=(0===e.values.length?[]:Object.keys(e.values[0])).map(f.createTerm.bind(f)),r=e.values.map((e=>{let t=Object.keys(e);t=t.filter((t=>void 0!==e[t]));let r={};for(let n of t)r[n]=e[n];return r}));return f.createValues(t,r)}function C(e,t){if("type"in e&&"aggregate"===e.type){let r,n=!1;for(let i of Object.keys(t))if(s(t[i],e)){r=f.createTerm(i),n=!0;break}return n||(r=A(),t[(0,c.termToString)(r)]=e),r}return"expression"in e&&e.expression?{...e,expression:C(e.expression,t)}:"args"in e&&e.args?{...e,args:e.args.map((e=>C(e,t)))}:e}function M(e){if("type"in e){if("load"===e.type)return function(e){return f.createLoad(e.source,e.destination,e.silent)}(e);if("clear"===e.type||"create"===e.type||"drop"===e.type)return function(e){let t;switch(t=d.default.isSimpleTerm(e.graph)?e.graph:e.graph.all?"ALL":e.graph.default?"DEFAULT":e.graph.named?"NAMED":e.graph.name,e.type){case"clear":return f.createClear(t,e.silent);case"create":return f.createCreate(t,e.silent);case"drop":return f.createDrop(t,e.silent)}}(e);if("add"===e.type||"copy"===e.type||"move"===e.type)return function(e){const t=e.source.default?"DEFAULT":e.source.name,r=e.destination.default?"DEFAULT":e.destination.name;switch(e.type){case"copy":return f.createCopy(t,r,e.silent);case"move":return f.createMove(t,r,e.silent);case"add":return f.createAdd(t,r,e.silent)}}(e)}else if("insertdelete"===e.updateType||"deletewhere"===e.updateType||"delete"===e.updateType||"insert"===e.updateType)return function(e){if(!m)throw new Error("INSERT/DELETE operations are only supported with quads option enabled");let t,r=[],n=[];if(e.delete&&(r=d.default.flatten(e.delete.map((t=>L(t,e.graph))))),e.insert&&(n=d.default.flatten(e.insert.map((t=>L(t,e.graph))))),e.where&&e.where.length>0){t=S({type:"group",patterns:e.where});const r=e.using;r?t=f.createFrom(t,r.default,r.named):e.graph&&(t=P(t,e.graph))}else"deletewhere"===e.updateType&&r.length>0&&(t=f.createBgp(r));return f.createDeleteInsert(r.length>0?r:void 0,n.length>0?n:void 0,t)}(e);throw new Error(`Unknown update type ${JSON.stringify(e)}`)}function L(e,t){let r=t;"graph"===e.type&&(r=e.name);let n=e.triples;return r&&(n=n.map((e=>Object.assign(e,{graph:r})))),n.map(R)}function k(e){const t={},r=Array.from(y).reduce(((e,t)=>(e[t]=!0,e)),{});return d.default.mapOperation(e,{[u.types.DELETE_INSERT]:e=>({result:f.createDeleteInsert(e.delete,e.insert,e.where&&k(e.where)),recurse:!1}),[u.types.PATH]:(e,t)=>({result:t.createPath(n(e.subject),e.predicate,n(e.object),n(e.graph)),recurse:!1}),[u.types.PATTERN]:(e,t)=>({result:t.createPattern(n(e.subject),n(e.predicate),n(e.object),n(e.graph)),recurse:!1}),[u.types.CONSTRUCT]:e=>({result:f.createConstruct(k(e.input),e.template),recurse:!1})});function n(e){if("BlankNode"===e.termType){let n=t[e.value];return n||(n=d.default.createUniqueVariable(e.value,r,f.dataFactory),r[n.value]=!0,t[e.value]=n),n}return e}}},83152:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(47914),a=n(r(376)),o=r(13252);class s{static flatten(e){return Array.prototype.concat(...e).filter((e=>e))}static objectify(e){if(e.termType){if("Quad"===e.termType)return{type:"pattern",termType:"Quad",subject:s.objectify(e.subject),predicate:s.objectify(e.predicate),object:s.objectify(e.object),graph:s.objectify(e.graph)};{let t={termType:e.termType,value:e.value};return e.language&&(t.language=e.language),e.datatype&&(t.datatype=s.objectify(e.datatype)),t}}if(Array.isArray(e))return e.map((e=>s.objectify(e)));if(e===Object(e)){let t={};for(let r of Object.keys(e))t[r]=s.objectify(e[r]);return t}return e}static inScopeVariables(e){const t=[];function r(e){t.find((t=>e.value===t.value))||t.push(e)}function n(e){"Variable"===e.subject.termType&&r(e.subject),"Variable"===e.predicate.termType&&r(e.predicate),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.predicate.termType&&n(e.predicate),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph)}return s.recurseOperation(e,{[i.types.EXPRESSION]:e=>(e.expressionType===i.expressionTypes.AGGREGATE&&e.variable&&r(e.variable),!0),[i.types.EXTEND]:e=>(r(e.variable),!0),[i.types.GRAPH]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.GROUP]:e=>(e.variables.forEach(r),!0),[i.types.PATH]:e=>("Variable"===e.subject.termType&&r(e.subject),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph),!0),[i.types.PATTERN]:e=>(n(e),!0),[i.types.PROJECT]:e=>(e.variables.forEach(r),!1),[i.types.SERVICE]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.VALUES]:e=>(e.variables.forEach(r),!0)}),t}static recurseOperation(e,t){let r=e,n=!0;const a=t[e.type];if(a&&(n=a(e)),!n)return;let o=e=>s.recurseOperation(e,t);switch(r.type){case i.types.ALT:r.input.map(o);break;case i.types.ASK:o(r.input);break;case i.types.BGP:r.patterns.forEach(o);break;case i.types.CONSTRUCT:o(r.input),r.template.map(o);break;case i.types.DESCRIBE:case i.types.DISTINCT:o(r.input);break;case i.types.EXPRESSION:r.expressionType===i.expressionTypes.EXISTENCE&&o(r.input);break;case i.types.EXTEND:case i.types.FILTER:o(r.input),o(r.expression);break;case i.types.FROM:case i.types.GRAPH:o(r.input);break;case i.types.GROUP:o(r.input),r.aggregates.forEach(o);break;case i.types.INV:o(r.path);break;case i.types.JOIN:r.input.map(o);break;case i.types.LEFT_JOIN:r.input.map(o),r.expression&&o(r.expression);break;case i.types.LINK:break;case i.types.MINUS:r.input.map(o);break;case i.types.NOP:case i.types.NPS:break;case i.types.ONE_OR_MORE_PATH:o(r.path);break;case i.types.ORDER_BY:o(r.input),r.expressions.forEach(o);break;case i.types.PATH:o(r.predicate);break;case i.types.PATTERN:break;case i.types.PROJECT:case i.types.REDUCED:o(r.input);break;case i.types.SEQ:r.input.map(o);break;case i.types.SERVICE:case i.types.SLICE:o(r.input);break;case i.types.UNION:r.input.map(o);break;case i.types.VALUES:break;case i.types.ZERO_OR_MORE_PATH:case i.types.ZERO_OR_ONE_PATH:o(r.path);break;case i.types.COMPOSITE_UPDATE:r.updates.forEach((e=>o(e)));break;case i.types.DELETE_INSERT:r.delete&&r.delete.forEach((e=>o(e))),r.insert&&r.insert.forEach((e=>o(e))),r.where&&o(r.where);break;case i.types.LOAD:case i.types.CLEAR:case i.types.CREATE:case i.types.DROP:case i.types.ADD:case i.types.MOVE:case i.types.COPY:break;default:throw new Error(`Unknown Operation type ${r.type}`)}}static mapOperation(e,t,r){let n=e,o=!0,c=!0;r=r||new a.default;const u=t[e.type];if(u){const t=u(e,r);n=t.result,o=t.recurse,c=!1!==t.copyMetadata}let l;if(c&&(n.metadata||e.metadata)&&(l={...n.metadata,...e.metadata}),!o)return l&&(n.metadata=l),n;let d=e=>s.mapOperation(e,t,r);switch(n.type){case i.types.ALT:n=r.createAlt(n.input.map(d));break;case i.types.ASK:n=r.createAsk(d(n.input));break;case i.types.BGP:n=r.createBgp(n.patterns.map(d));break;case i.types.CONSTRUCT:n=r.createConstruct(d(n.input),n.template.map(d));break;case i.types.DESCRIBE:n=r.createDescribe(d(n.input),n.terms);break;case i.types.DISTINCT:n=r.createDistinct(d(n.input));break;case i.types.EXPRESSION:n=s.mapExpression(n,t,r);break;case i.types.EXTEND:n=r.createExtend(d(n.input),n.variable,d(n.expression));break;case i.types.FILTER:n=r.createFilter(d(n.input),d(n.expression));break;case i.types.FROM:n=r.createFrom(d(n.input),[...n.default],[...n.named]);break;case i.types.GRAPH:n=r.createGraph(d(n.input),n.name);break;case i.types.GROUP:n=r.createGroup(d(n.input),[].concat(n.variables),n.aggregates.map(d));break;case i.types.INV:n=r.createInv(d(n.path));break;case i.types.JOIN:n=r.createJoin(n.input.map(d));break;case i.types.LEFT_JOIN:n=r.createLeftJoin(d(n.input[0]),d(n.input[1]),n.expression?d(n.expression):void 0);break;case i.types.LINK:n=r.createLink(n.iri);break;case i.types.MINUS:n=r.createMinus(d(n.input[0]),d(n.input[1]));break;case i.types.NOP:n=r.createNop();break;case i.types.NPS:n=r.createNps([].concat(n.iris));break;case i.types.ONE_OR_MORE_PATH:n=r.createOneOrMorePath(d(n.path));break;case i.types.ORDER_BY:n=r.createOrderBy(d(n.input),n.expressions.map(d));break;case i.types.PATH:n=r.createPath(n.subject,d(n.predicate),n.object,n.graph);break;case i.types.PATTERN:n=r.createPattern(n.subject,n.predicate,n.object,n.graph);break;case i.types.PROJECT:n=r.createProject(d(n.input),[...n.variables]);break;case i.types.REDUCED:n=r.createReduced(d(n.input));break;case i.types.SEQ:n=r.createSeq(n.input.map(d));break;case i.types.SERVICE:n=r.createService(d(n.input),n.name,n.silent);break;case i.types.SLICE:n=r.createSlice(d(n.input),n.start,n.length);break;case i.types.UNION:n=r.createUnion(n.input.map(d));break;case i.types.VALUES:n=r.createValues([].concat(n.variables),n.bindings.map((e=>Object.assign({},e))));break;case i.types.ZERO_OR_MORE_PATH:n=r.createZeroOrMorePath(d(n.path));break;case i.types.ZERO_OR_ONE_PATH:n=r.createZeroOrOnePath(d(n.path));break;case i.types.COMPOSITE_UPDATE:n=r.createCompositeUpdate(n.updates.map(d));break;case i.types.DELETE_INSERT:n=r.createDeleteInsert(n.delete?n.delete.map(d):void 0,n.insert?n.insert.map(d):void 0,n.where?d(n.where):void 0);break;case i.types.LOAD:n=r.createLoad(n.source,n.destination,n.silent);break;case i.types.CLEAR:n=r.createClear(n.source,n.silent);break;case i.types.CREATE:n=r.createCreate(n.source,n.silent);break;case i.types.DROP:n=r.createDrop(n.source,n.silent);break;case i.types.ADD:n=r.createAdd(n.source,n.destination);break;case i.types.MOVE:n=r.createMove(n.source,n.destination);break;case i.types.COPY:n=r.createCopy(n.source,n.destination);break;default:throw new Error(`Unknown Operation type ${n.type}`)}return l&&(n.metadata=l),n}static mapExpression(e,t,r){let n=e,o=!0;r=r||new a.default;const c=t[e.expressionType];if(c&&({result:n,recurse:o}=c(e,r)),!o)return n;let u=e=>s.mapOperation(e,t,r);switch(e.expressionType){case i.expressionTypes.AGGREGATE:return e.variable?r.createBoundAggregate(e.variable,e.aggregator,u(e.expression),e.distinct,e.separator):r.createAggregateExpression(e.aggregator,u(e.expression),e.distinct,e.separator);case i.expressionTypes.EXISTENCE:return r.createExistenceExpression(e.not,u(e.input));case i.expressionTypes.NAMED:return r.createNamedExpression(e.name,e.args.map(u));case i.expressionTypes.OPERATOR:return r.createOperatorExpression(e.operator,e.args.map(u));case i.expressionTypes.TERM:return r.createTermExpression(e.term);case i.expressionTypes.WILDCARD:return r.createWildcardExpression();default:throw new Error(`Unknown Expression type ${e.expressionType}`)}}static cloneOperation(e){return s.mapOperation(e,{})}static cloneExpression(e){return s.mapExpression(e,{})}static createUniqueVariable(e,t,r){let n=0,i=e;for(;t[i];)i=`${e}${n++}`;return r.variable(i)}static isSimpleTerm(e){return void 0!==e.termType&&"Quad"!==e.termType&&"Wildcard"!==e.termType}static isQuad(e){return"Quad"===e.termType}static hasQuadVariables(e){return(0,o.someTermsNested)(e,(e=>"Variable"===e.termType))}static isWildcard(e){return"Wildcard"===e.termType}}t.default=s},33206:e=>{function t(e){this._options=e=e||{};var t=e.prefixes||{};this._prefixByIri={};var r=[];for(var n in t){var i=t[n];o(i)&&(this._prefixByIri[i]=n,r.push(i))}var a=r.join("|").replace(/[\]\/\(\)\*\+\?\.\\\$]/g,"\\$&");this._prefixRegex=new RegExp("^("+a+")([a-zA-Z][\\-_a-zA-Z0-9]*)$"),this._usedPrefixes={},this._sparqlStar=e.sparqlStar,this._indent=o(e.indent)?e.indent:" ",this._newline=o(e.newline)?e.newline:"\n",this._explicitDatatype=Boolean(e.explicitDatatype)}t.prototype.toQuery=function(e){var t="";return e.queryType&&(t+=e.queryType.toUpperCase()+" "),e.reduced&&(t+="REDUCED "),e.distinct&&(t+="DISTINCT "),e.variables?t+=u(e.variables,void 0,(function(e){return s(e)?this.toEntity(e):"("+this.toExpression(e.expression)+" AS "+a(e.variable)+")"}),this)+" ":e.template&&(t+=this.group(e.template,!0)+this._newline),e.from&&(t+=this.graphs("FROM ",e.from.default)+this.graphs("FROM NAMED ",e.from.named)),e.where&&(t+="WHERE "+this.group(e.where,!0)+this._newline),e.updates&&(t+=u(e.updates,";"+this._newline,this.toUpdate,this)),e.group&&(t+="GROUP BY "+u(e.group,void 0,(function(e){var t=s(e.expression)?this.toEntity(e.expression):"("+this.toExpression(e.expression)+")";return e.variable?"("+t+" AS "+a(e.variable)+")":t}),this)+this._newline),e.having&&(t+="HAVING ("+u(e.having,void 0,this.toExpression,this)+")"+this._newline),e.order&&(t+="ORDER BY "+u(e.order,void 0,(function(e){var t="("+this.toExpression(e.expression)+")";return e.descending?"DESC "+t:t}),this)+this._newline),e.offset&&(t+="OFFSET "+e.offset+this._newline),e.limit&&(t+="LIMIT "+e.limit+this._newline),e.values&&(t+=this.values(e)),(t=this.baseAndPrefixes(e)+t).trim()},t.prototype.baseAndPrefixes=function(e){var t=e.base?"BASE <"+e.base+">"+this._newline:"",r="";for(var n in e.prefixes)(this._options.allPrefixes||this._usedPrefixes[n])&&(r+="PREFIX "+n+": <"+e.prefixes[n]+">"+this._newline);return t+r},t.prototype.toPattern=function(e){var t=e.type||e instanceof Array&&"array"||(e.subject&&e.predicate&&e.object?"triple":"");if(!(t in this))throw new Error("Unknown entry type: "+t);return this[t](e)},t.prototype.triple=function(e){return this.toEntity(e.subject)+" "+this.toEntity(e.predicate)+" "+this.toEntity(e.object)+"."},t.prototype.array=function(e){return u(e,this._newline,this.toPattern,this)},t.prototype.bgp=function(e){return this.encodeTriples(e.triples)},t.prototype.encodeTriples=function(e){if(!e.length)return"";for(var t=[],r=void 0,n=void 0,i=0;i":case">=":case"<=":case"&&":case"||":case"=":case"!=":case"+":case"-":case"*":case"/":return(s(i[0])?this.toEntity(i[0]):"("+this.toExpression(i[0])+")")+" "+t+" "+(s(i[1])?this.toEntity(i[1]):"("+this.toExpression(i[1])+")");case"!":return"!("+this.toExpression(i[0])+")";case"uplus":return"+("+this.toExpression(i[0])+")";case"uminus":return"-("+this.toExpression(i[0])+")";case"notin":t="NOT IN";case"in":return this.toExpression(i[0])+" "+t+"("+(o(i[1])?i[1]:u(i[1],", ",this.toExpression,this))+")";case"notexists":t="NOT EXISTS";case"exists":return t+" "+this.group(i[0],!0);default:return t+"("+u(i,", ",this.toExpression,this)+")"}default:throw new Error("Unknown expression type: "+e.type)}},t.prototype.toEntity=function(e){if(s(e))switch(e.termType){case"Wildcard":return"*";case"Variable":return a(e);case"BlankNode":return"_:"+e.value;case"Literal":var t=e.value||"",i=e.language||"",o=e.datatype;if(e='"'+t.replace(r,n)+'"',i)e+="@"+i;else if(o){if(!this._explicitDatatype)switch(o.value){case"http://www.w3.org/2001/XMLSchema#string":return e;case"http://www.w3.org/2001/XMLSchema#integer":if(/^\d+$/.test(t))return t+" "}e+="^^"+this.encodeIRI(o.value)}return e;case"Quad":if(!this._sparqlStar)throw new Error("SPARQL* support is not enabled");return e.graph&&"DefaultGraph"!==e.graph.termType?"<< GRAPH "+this.toEntity(e.graph)+" { "+this.toEntity(e.subject)+" "+this.toEntity(e.predicate)+" "+this.toEntity(e.object)+" } >>":"<< "+this.toEntity(e.subject)+" "+this.toEntity(e.predicate)+" "+this.toEntity(e.object)+" >>";default:return this.encodeIRI(e.value)}else{var c=e.items.map(this.toEntity,this),u=e.pathType;switch(u){case"^":case"!":return u+c[0];case"*":case"+":case"?":return"("+c[0]+u+")";default:return"("+c.join(u)+")"}}};var r=/["\\\t\n\r\b\f]/g,n=function(e){return i[e]},i={"\\":"\\\\",'"':'\\"',"\t":"\\t","\n":"\\n","\r":"\\r","\b":"\\b","\f":"\\f"};function a(e){return"?"+e.value}function o(e){return"string"==typeof e}function s(e){return"string"==typeof e.termType}function c(e,t){if(!e||!s(e))return!1;if(!t||!s(t))return!1;if(e.termType!==t.termType)return!1;switch(e.termType){case"Literal":return e.value===t.value&&e.language===t.language&&c(e.datatype,t.datatype);case"Quad":return c(e.subject,t.subject)&&c(e.predicate,t.predicate)&&c(e.object,t.object)&&c(e.graph,t.graph);default:return e.value===t.value}}function u(e,t,r,n){return e.map(r,n).join(o(t)?t:" ")}t.prototype.encodeIRI=function(e){var t=this._prefixRegex.exec(e);if(t){var r=this._prefixByIri[t[1]];return this._usedPrefixes[r]=!0,r+":"+t[2]}return"<"+e+">"},t.prototype.toUpdate=function(e){switch(e.type||e.updateType){case"load":return"LOAD"+(e.source?" "+this.toEntity(e.source):"")+(e.destination?" INTO GRAPH "+this.toEntity(e.destination):"");case"insert":return"INSERT DATA "+this.group(e.insert,!0);case"delete":return"DELETE DATA "+this.group(e.delete,!0);case"deletewhere":return"DELETE WHERE "+this.group(e.delete,!0);case"insertdelete":return(e.graph?"WITH "+this.toEntity(e.graph)+this._newline:"")+(e.delete.length?"DELETE "+this.group(e.delete,!0)+this._newline:"")+(e.insert.length?"INSERT "+this.group(e.insert,!0)+this._newline:"")+(e.using?this.graphs("USING ",e.using.default):"")+(e.using?this.graphs("USING NAMED ",e.using.named):"")+"WHERE "+this.group(e.where,!0);case"add":case"copy":case"move":return e.type.toUpperCase()+" "+(e.silent?"SILENT ":"")+(e.source.default?"DEFAULT":this.toEntity(e.source.name))+" TO "+this.toEntity(e.destination.name);case"create":case"clear":case"drop":return e.type.toUpperCase()+(e.silent?" SILENT ":" ")+(e.graph.default?"DEFAULT":e.graph.named?"NAMED":e.graph.all?"ALL":"GRAPH "+this.toEntity(e.graph.name));default:throw new Error("Unknown update query type: "+e.type)}},t.prototype.indent=function(e){return e.replace(/^/gm,this._indent)},e.exports=function(e={}){return{stringify:function(r){var n=Object.create(e);return n.prefixes=r.prefixes,new t(n).toQuery(r)},createGenerator:function(){return new t(e)}}}},17308:(e,t,r)=>{var n=function(){var e=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r},t=[6,12,13,15,16,24,32,36,41,45,100,110,113,115,116,123,126,131,197,224,229,308,329,330,331,332,333],n=[2,247],i=[100,110,113,115,116,123,126,131,329,330,331,332,333],a=[2,409],o=[1,18],s=[1,27],c=[13,16,45,197,224,229,308],u=[28,29,53],l=[28,53],d=[1,42],p=[1,45],h=[1,41],f=[1,44],y=[123,126],g=[1,67],m=[39,45,87],b=[13,16,45,197,224,308],v=[1,87],_=[2,281],w=[1,86],T=[13,16,45,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],S=[6,28,29,53,63,70,73,81,83,85],O=[6,13,16,28,29,53,63,70,73,81,83,85,87,308],E=[6,13,16,28,29,45,53,63,70,73,81,82,83,85,87,89,197,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314],x=[6,13,16,28,29,31,39,45,47,48,53,63,70,73,81,82,83,85,87,89,109,112,121,123,126,128,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,337,338,340,341,342,343,344,345,346],A=[13,16,308],R=[112,132,327,334],I=[13,16,112,132,308],P=[1,111],N=[1,117],D=[112,132,327,328,334],j=[13,16,112,132,308,328],C=[28,29,45,53,87],M=[1,138],L=[1,151],k=[1,128],F=[1,127],B=[1,129],U=[1,140],q=[1,141],V=[1,142],Q=[1,143],$=[1,144],H=[1,145],G=[1,147],z=[1,148],K=[2,457],X=[1,158],J=[1,159],W=[1,160],Y=[1,152],Z=[1,153],ee=[1,156],te=[1,171],re=[1,172],ne=[1,173],ie=[1,174],ae=[1,175],oe=[1,176],se=[1,167],ce=[1,168],ue=[1,169],le=[1,170],de=[1,157],pe=[1,166],he=[1,161],fe=[1,162],ye=[1,163],ge=[1,164],me=[1,165],be=[6,13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],ve=[1,195],_e=[6,31,73,81,83,85],we=[2,285],Te=[1,199],Se=[1,201],Oe=[6,31,70,73,81,83,85],Ee=[2,283],xe=[1,207],Ae=[1,218],Re=[1,223],Ie=[1,219],Pe=[1,225],Ne=[1,226],De=[1,224],je=[6,63,70,73,81,83,85],Ce=[1,236],Me=[2,334],Le=[1,243],ke=[1,241],Fe=[6,193],Be=[2,349],Ue=[2,339],qe=[28,128],Ve=[47,48,193,272],Qe=[47,48,193,242,272],$e=[47,48,193,242,246,272],He=[47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,341,342,343,344,345,346],Ge=[39,47,48,193,242,246,250,263,265,272,290,297,298,299,300,301,302,338,341,342,343,344,345,346],ze=[1,271],Ke=[1,270],Xe=[6,13,16,29,31,39,45,47,48,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,338,341,342,343,344,345,346,347,348,349,350,351],Je=[1,281],We=[1,280],Ye=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],Ze=[45,89],et=[13,16,29,31,39,45,47,48,82,85,87,89,112,159,160,161,163,164,174,193,197,224,229,231,232,242,246,250,263,265,272,290,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335,338,341,342,343,344,345,346],tt=[13,16,31,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],rt=[31,89],nt=[48,87],it=[6,13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338],at=[6,13,16,39,45,48,82,87,89,231,263,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,337,338,340],ot=[1,313],st=[6,85],ct=[6,31,81,83,85],ut=[2,361],lt=[2,353],dt=[1,343],pt=[31,112,335],ht=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],ft=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,197,224,229,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,335],yt=[6,109,193],gt=[31,112],mt=[13,16,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],bt=[1,390],vt=[1,391],_t=[13,16,87,197,308,314],wt=[13,16,39,45,82,87,224,263,265,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312,346,347,348,349,350,351],Tt=[1,417],St=[1,418],Ot=[13,16,48,197,229,308],Et=[6,31,85],xt=[6,13,16,31,45,73,81,83,85,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],At=[6,13,16,29,31,45,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,231,268,269,270,271,273,274,276,277,279,280,283,285,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,346,347,348,349,350,351],Rt=[29,31,85,112,159,160,161,163,164],It=[1,443],Pt=[1,444],Nt=[1,449],Dt=[31,112,193,232,318,335],jt=[13,16,45,48,82,87,89,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],Ct=[13,16,31,45,48,82,87,89,112,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],Mt=[13,16,29,31,45,48,82,85,87,89,112,159,160,161,163,164,193,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],Lt=[13,16,31,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],kt=[31,45],Ft=[1,507],Bt=[1,508],Ut=[6,13,16,29,31,39,45,47,48,63,70,73,76,78,81,82,83,85,87,89,112,159,160,161,163,164,193,231,242,246,250,263,265,268,269,270,271,272,273,274,276,277,279,280,283,285,290,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335,336,338,341,342,343,344,345,346,347,348,349,350,351],qt=[29,31,85,112,159,160,161,163,164,335],Vt=[6,13,16,31,45,70,73,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],Qt=[13,16,31,45,48,82,87,89,112,193,197,231,232,272,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,317,318,335],$t=[2,352],Ht=[13,16,197,308,314],Gt=[1,565],zt=[6,13,16,31,45,76,78,81,83,85,87,268,269,270,271,273,274,276,277,279,280,283,285,308,346,347,348,349,350,351],Kt=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],Xt=[13,16,29,31,45,82,85,87,89,112,159,160,161,163,164,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312,335],Jt=[13,16,87,308],Wt=[2,364],Yt=[29,31,85,112,159,160,161,163,164,193,232,318,335],Zt=[31,112,193,232,272,318,335],er=[2,359],tr=[13,16,48,82,174,294,295,296,297,298,299,300,301,302,303,304,305,306,308,312],rr=[29,31,85,112,159,160,161,163,164,193,232,272,318,335],nr=[13,16,31,45,82,87,89,112,231,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,312],ir=[2,347],ar={trace:function(){},yy:{},symbols_:{error:2,QueryOrUpdate:3,Prologue:4,QueryOrUpdate_group0:5,EOF:6,Query:7,Qry:8,Query_option0:9,Prologue_repetition0:10,BaseDecl:11,BASE:12,IRIREF:13,PrefixDecl:14,PREFIX:15,PNAME_NS:16,SelectClauseWildcard:17,Qry_repetition0:18,WhereClause:19,SolutionModifierNoGroup:20,SelectClauseVars:21,Qry_repetition1:22,SolutionModifier:23,CONSTRUCT:24,ConstructTemplate:25,Qry_repetition2:26,Qry_repetition3:27,WHERE:28,"{":29,Qry_option0:30,"}":31,DESCRIBE:32,Qry_group0:33,Qry_repetition4:34,Qry_option1:35,ASK:36,Qry_repetition5:37,SelectClauseBase:38,"*":39,SelectClauseVars_repetition_plus0:40,SELECT:41,SelectClauseBase_option0:42,SelectClauseItem:43,Var:44,"(":45,Expression:46,AS:47,")":48,SubSelect:49,SubSelect_option0:50,SubSelect_option1:51,DatasetClause:52,FROM:53,DatasetClause_option0:54,iri:55,WhereClause_option0:56,GroupGraphPattern:57,SolutionModifier_option0:58,SolutionModifierNoGroup_option0:59,SolutionModifierNoGroup_option1:60,SolutionModifierNoGroup_option2:61,GroupClause:62,GROUP:63,BY:64,GroupClause_repetition_plus0:65,GroupCondition:66,BuiltInCall:67,FunctionCall:68,HavingClause:69,HAVING:70,HavingClause_repetition_plus0:71,OrderClause:72,ORDER:73,OrderClause_repetition_plus0:74,OrderCondition:75,ASC:76,BrackettedExpression:77,DESC:78,Constraint:79,LimitOffsetClauses:80,LIMIT:81,INTEGER:82,OFFSET:83,ValuesClause:84,VALUES:85,InlineData:86,VAR:87,InlineData_repetition0:88,NIL:89,InlineData_repetition1:90,InlineData_repetition_plus2:91,InlineData_repetition3:92,DataBlock:93,DataBlockValueList:94,DataBlockValueList_repetition_plus0:95,Update:96,Update_repetition0:97,Update1:98,Update_option0:99,LOAD:100,Update1_option0:101,Update1_option1:102,Update1_group0:103,Update1_option2:104,GraphRefAll:105,Update1_group1:106,Update1_option3:107,GraphOrDefault:108,TO:109,CREATE:110,Update1_option4:111,GRAPH:112,INSERTDATA:113,QuadPattern:114,DELETEDATA:115,DELETEWHERE:116,Update1_option5:117,InsertDeleteClause:118,Update1_repetition0:119,IntoGraphClause:120,INTO:121,GraphRef:122,DELETE:123,InsertDeleteClause_option0:124,InsertClause:125,INSERT:126,UsingClause:127,USING:128,UsingClause_option0:129,WithClause:130,WITH:131,DEFAULT:132,GraphOrDefault_option0:133,GraphRefAll_group0:134,Quads:135,Quads_option0:136,Quads_repetition0:137,QuadsNotTriples:138,VarOrIri:139,QuadsNotTriples_option0:140,QuadsNotTriples_option1:141,QuadsNotTriples_option2:142,TriplesTemplate:143,TriplesTemplate_repetition0:144,TriplesSameSubject:145,TriplesTemplate_option0:146,GroupGraphPatternSub:147,GroupGraphPatternSub_option0:148,GroupGraphPatternSub_repetition0:149,GroupGraphPatternSubTail:150,GraphPatternNotTriples:151,GroupGraphPatternSubTail_option0:152,GroupGraphPatternSubTail_option1:153,TriplesBlock:154,TriplesBlock_repetition0:155,TriplesSameSubjectPath:156,TriplesBlock_option0:157,GroupOrUnionGraphPattern:158,OPTIONAL:159,MINUS:160,SERVICE:161,GraphPatternNotTriples_option0:162,FILTER:163,BIND:164,InlineDataOneVar:165,InlineDataFull:166,InlineDataOneVar_repetition0:167,InlineDataFull_repetition0:168,InlineDataFull_repetition_plus1:169,InlineDataFull_repetition2:170,DataBlockValue:171,Literal:172,QuotedTriple:173,UNDEF:174,GroupOrUnionGraphPattern_repetition0:175,ArgList:176,ArgList_option0:177,ArgList_repetition0:178,ExpressionList:179,ExpressionList_repetition0:180,ConstructTemplate_option0:181,ConstructTriples:182,ConstructTriples_repetition0:183,ConstructTriples_option0:184,VarOrTermOrQuotedTP:185,PropertyListNotEmpty:186,TriplesNode:187,PropertyList:188,PropertyList_option0:189,VerbObjectList:190,PropertyListNotEmpty_repetition0:191,SemiOptionalVerbObjectList:192,";":193,SemiOptionalVerbObjectList_option0:194,Verb:195,ObjectList:196,a:197,ObjectList_repetition0:198,Object:199,GraphNode:200,Object_option0:201,PropertyListPathNotEmpty:202,TriplesNodePath:203,TriplesSameSubjectPath_option0:204,O:205,PropertyListPathNotEmpty_repetition0:206,PropertyListPathNotEmptyTail:207,O_group0:208,ObjectListPath:209,ObjectListPath_repetition0:210,ObjectPath:211,GraphNodePath:212,ObjectPath_option0:213,Path:214,Path_repetition0:215,PathSequence:216,PathSequence_repetition0:217,PathEltOrInverse:218,PathElt:219,PathPrimary:220,PathElt_option0:221,PathEltOrInverse_option0:222,IriOrA:223,"!":224,PathNegatedPropertySet:225,PathOneInPropertySet:226,PathNegatedPropertySet_repetition0:227,PathNegatedPropertySet_option0:228,"^":229,TriplesNode_repetition_plus0:230,"[":231,"]":232,TriplesNodePath_repetition_plus0:233,VarOrTermOrQuotedTPExpr:234,VarOrTerm:235,GraphTerm:236,BlankNode:237,ConditionalOrExpression:238,ConditionalAndExpression:239,ConditionalOrExpression_repetition0:240,ConditionalOrExpressionTail:241,"||":242,RelationalExpression:243,ConditionalAndExpression_repetition0:244,ConditionalAndExpressionTail:245,"&&":246,NumericExpression:247,RelationalExpression_group0:248,RelationalExpression_option0:249,IN:250,MultiplicativeExpression:251,NumericExpression_repetition0:252,AdditiveExpressionTail:253,AdditiveExpressionTail_group0:254,NumericLiteralPositive:255,AdditiveExpressionTail_repetition0:256,NumericLiteralNegative:257,AdditiveExpressionTail_repetition1:258,UnaryExpression:259,MultiplicativeExpression_repetition0:260,MultiplicativeExpressionTail:261,MultiplicativeExpressionTail_group0:262,"+":263,PrimaryExpression:264,"-":265,ExprQuotedTP:266,Aggregate:267,FUNC_ARITY0:268,FUNC_ARITY1:269,FUNC_ARITY1_SPARQL_STAR:270,FUNC_ARITY2:271,",":272,FUNC_ARITY3:273,FUNC_ARITY3_SPARQL_STAR:274,BuiltInCall_group0:275,BOUND:276,BNODE:277,BuiltInCall_option0:278,EXISTS:279,COUNT:280,Aggregate_option0:281,Aggregate_group0:282,FUNC_AGGREGATE:283,Aggregate_option1:284,GROUP_CONCAT:285,Aggregate_option2:286,Aggregate_option3:287,GroupConcatSeparator:288,SEPARATOR:289,"=":290,String:291,LANGTAG:292,"^^":293,DECIMAL:294,DOUBLE:295,BOOLEAN:296,INTEGER_POSITIVE:297,DECIMAL_POSITIVE:298,DOUBLE_POSITIVE:299,INTEGER_NEGATIVE:300,DECIMAL_NEGATIVE:301,DOUBLE_NEGATIVE:302,STRING_LITERAL1:303,STRING_LITERAL2:304,STRING_LITERAL_LONG1:305,STRING_LITERAL_LONG2:306,PrefixedName:307,PNAME_LN:308,BLANK_NODE_LABEL:309,ANON:310,QuotedTP:311,"<<":312,qtSubjectOrObject:313,">>":314,DataValueTerm:315,AnnotationPattern:316,"{|":317,"|}":318,AnnotationPatternPath:319,ExprVarOrTerm:320,QueryOrUpdate_group0_option0:321,Prologue_repetition0_group0:322,Qry_group0_repetition_plus0:323,SelectClauseBase_option0_group0:324,DISTINCT:325,REDUCED:326,NAMED:327,SILENT:328,CLEAR:329,DROP:330,ADD:331,MOVE:332,COPY:333,ALL:334,".":335,UNION:336,"|":337,"/":338,PathElt_option0_group0:339,"?":340,"!=":341,"<":342,">":343,"<=":344,">=":345,NOT:346,CONCAT:347,COALESCE:348,SUBSTR:349,REGEX:350,REPLACE:351,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",12:"BASE",13:"IRIREF",15:"PREFIX",16:"PNAME_NS",24:"CONSTRUCT",28:"WHERE",29:"{",31:"}",32:"DESCRIBE",36:"ASK",39:"*",41:"SELECT",45:"(",47:"AS",48:")",53:"FROM",63:"GROUP",64:"BY",70:"HAVING",73:"ORDER",76:"ASC",78:"DESC",81:"LIMIT",82:"INTEGER",83:"OFFSET",85:"VALUES",87:"VAR",89:"NIL",100:"LOAD",109:"TO",110:"CREATE",112:"GRAPH",113:"INSERTDATA",115:"DELETEDATA",116:"DELETEWHERE",121:"INTO",123:"DELETE",126:"INSERT",128:"USING",131:"WITH",132:"DEFAULT",159:"OPTIONAL",160:"MINUS",161:"SERVICE",163:"FILTER",164:"BIND",174:"UNDEF",193:";",197:"a",224:"!",229:"^",231:"[",232:"]",242:"||",246:"&&",250:"IN",263:"+",265:"-",268:"FUNC_ARITY0",269:"FUNC_ARITY1",270:"FUNC_ARITY1_SPARQL_STAR",271:"FUNC_ARITY2",272:",",273:"FUNC_ARITY3",274:"FUNC_ARITY3_SPARQL_STAR",276:"BOUND",277:"BNODE",279:"EXISTS",280:"COUNT",283:"FUNC_AGGREGATE",285:"GROUP_CONCAT",289:"SEPARATOR",290:"=",292:"LANGTAG",293:"^^",294:"DECIMAL",295:"DOUBLE",296:"BOOLEAN",297:"INTEGER_POSITIVE",298:"DECIMAL_POSITIVE",299:"DOUBLE_POSITIVE",300:"INTEGER_NEGATIVE",301:"DECIMAL_NEGATIVE",302:"DOUBLE_NEGATIVE",303:"STRING_LITERAL1",304:"STRING_LITERAL2",305:"STRING_LITERAL_LONG1",306:"STRING_LITERAL_LONG2",308:"PNAME_LN",309:"BLANK_NODE_LABEL",310:"ANON",312:"<<",314:">>",317:"{|",318:"|}",325:"DISTINCT",326:"REDUCED",327:"NAMED",328:"SILENT",329:"CLEAR",330:"DROP",331:"ADD",332:"MOVE",333:"COPY",334:"ALL",335:".",336:"UNION",337:"|",338:"/",340:"?",341:"!=",342:"<",343:">",344:"<=",345:">=",346:"NOT",347:"CONCAT",348:"COALESCE",349:"SUBSTR",350:"REGEX",351:"REPLACE"},productions_:[0,[3,3],[7,2],[4,1],[11,2],[14,3],[8,4],[8,4],[8,5],[8,7],[8,5],[8,4],[17,2],[21,2],[38,2],[43,1],[43,5],[49,4],[49,4],[52,3],[19,2],[23,2],[20,3],[62,3],[66,1],[66,1],[66,3],[66,5],[66,1],[69,2],[72,3],[75,2],[75,2],[75,1],[75,1],[80,2],[80,2],[80,4],[80,4],[84,2],[86,4],[86,4],[86,6],[86,2],[94,3],[96,3],[98,4],[98,3],[98,5],[98,4],[98,2],[98,2],[98,2],[98,5],[120,2],[118,3],[118,1],[125,2],[127,3],[130,2],[108,1],[108,2],[122,2],[105,1],[105,1],[114,3],[135,2],[138,7],[143,3],[57,3],[57,3],[147,2],[150,3],[154,3],[151,1],[151,2],[151,2],[151,3],[151,4],[151,2],[151,6],[151,1],[93,1],[93,1],[165,4],[166,4],[166,6],[171,1],[171,1],[171,1],[171,1],[158,2],[79,1],[79,1],[79,1],[68,2],[176,1],[176,5],[179,1],[179,4],[25,3],[182,3],[145,2],[145,2],[188,1],[186,2],[192,2],[190,2],[195,1],[195,1],[196,2],[199,2],[156,2],[156,2],[202,2],[207,1],[207,2],[205,2],[209,2],[211,2],[214,2],[216,2],[219,2],[218,2],[220,1],[220,2],[220,3],[225,1],[225,1],[225,4],[226,1],[226,2],[187,3],[187,3],[203,3],[203,3],[200,1],[200,1],[212,1],[212,1],[234,1],[235,1],[235,1],[139,1],[139,1],[44,1],[236,1],[236,1],[236,1],[236,1],[46,1],[238,2],[241,2],[239,2],[245,2],[243,1],[243,3],[243,4],[247,2],[253,2],[253,2],[253,2],[251,2],[261,2],[259,2],[259,2],[259,2],[259,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[264,1],[77,3],[67,1],[67,2],[67,4],[67,4],[67,6],[67,8],[67,8],[67,2],[67,4],[67,2],[67,4],[67,3],[267,5],[267,5],[267,6],[288,4],[172,1],[172,2],[172,3],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[255,1],[255,1],[255,1],[257,1],[257,1],[257,1],[291,1],[291,1],[291,1],[291,1],[55,1],[55,1],[307,1],[307,1],[237,1],[237,1],[311,5],[173,5],[313,1],[313,1],[313,1],[313,1],[313,1],[315,1],[315,1],[315,1],[185,1],[185,1],[185,1],[316,3],[319,3],[266,5],[320,1],[320,1],[320,1],[223,1],[223,1],[321,0],[321,1],[5,1],[5,1],[5,1],[9,0],[9,1],[322,1],[322,1],[10,0],[10,2],[18,0],[18,2],[22,0],[22,2],[26,0],[26,2],[27,0],[27,2],[30,0],[30,1],[323,1],[323,2],[33,1],[33,1],[34,0],[34,2],[35,0],[35,1],[37,0],[37,2],[40,1],[40,2],[324,1],[324,1],[42,0],[42,1],[50,0],[50,1],[51,0],[51,1],[54,0],[54,1],[56,0],[56,1],[58,0],[58,1],[59,0],[59,1],[60,0],[60,1],[61,0],[61,1],[65,1],[65,2],[71,1],[71,2],[74,1],[74,2],[88,0],[88,2],[90,0],[90,2],[91,1],[91,2],[92,0],[92,2],[95,1],[95,2],[97,0],[97,4],[99,0],[99,2],[101,0],[101,1],[102,0],[102,1],[103,1],[103,1],[104,0],[104,1],[106,1],[106,1],[106,1],[107,0],[107,1],[111,0],[111,1],[117,0],[117,1],[119,0],[119,2],[124,0],[124,1],[129,0],[129,1],[133,0],[133,1],[134,1],[134,1],[134,1],[136,0],[136,1],[137,0],[137,2],[140,0],[140,1],[141,0],[141,1],[142,0],[142,1],[144,0],[144,3],[146,0],[146,1],[148,0],[148,1],[149,0],[149,2],[152,0],[152,1],[153,0],[153,1],[155,0],[155,3],[157,0],[157,1],[162,0],[162,1],[167,0],[167,2],[168,0],[168,2],[169,1],[169,2],[170,0],[170,2],[175,0],[175,3],[177,0],[177,1],[178,0],[178,3],[180,0],[180,3],[181,0],[181,1],[183,0],[183,3],[184,0],[184,1],[189,0],[189,1],[191,0],[191,2],[194,0],[194,1],[198,0],[198,3],[201,0],[201,1],[204,0],[204,1],[206,0],[206,2],[208,1],[208,1],[210,0],[210,3],[213,0],[213,1],[215,0],[215,3],[217,0],[217,3],[339,1],[339,1],[339,1],[221,0],[221,1],[222,0],[222,1],[227,0],[227,3],[228,0],[228,1],[230,1],[230,2],[233,1],[233,2],[240,0],[240,2],[244,0],[244,2],[248,1],[248,1],[248,1],[248,1],[248,1],[248,1],[249,0],[249,1],[252,0],[252,2],[254,1],[254,1],[256,0],[256,2],[258,0],[258,2],[260,0],[260,2],[262,1],[262,1],[275,1],[275,1],[275,1],[275,1],[275,1],[278,0],[278,1],[281,0],[281,1],[282,1],[282,1],[284,0],[284,1],[286,0],[286,1],[287,0],[287,1]],performAction:function(e,t,r,n,i,a,o){var s,c,u,l,d=a.length-1;switch(i){case 1:if(a[d-1]=a[d-1]||{},nn.base&&(a[d-1].base=nn.base),nn.base="",a[d-1].prefixes=nn.prefixes,nn.prefixes=null,nn.pathOnly){if("path"===a[d-1].type||"termType"in a[d-1])return a[d-1];throw new Error("Received full SPARQL query in path only mode")}if("path"===a[d-1].type||"termType"in a[d-1])throw new Error("Received only path in full SPARQL mode");if("update"===a[d-1].type){const e={};for(const t of a[d-1].updates)if("insert"===t.updateType){const r={};for(const e of t.insert)if("bgp"===e.type||"graph"===e.type)for(const t of e.triples)"BlankNode"===t.subject.termType&&(r[t.subject.value]=!0),"BlankNode"===t.predicate.termType&&(r[t.predicate.value]=!0),"BlankNode"===t.object.termType&&(r[t.object.value]=!0);for(const t of Object.keys(r)){if(e[t])throw new Error("Detected reuse blank node across different INSERT DATA clauses");e[t]=!0}}}return a[d-1];case 2:this.$={...a[d-1],...a[d],type:"query"};break;case 4:nn.base=Er(a[d]);break;case 5:nn.prefixes||(nn.prefixes={}),a[d-1]=a[d-1].substr(0,a[d-1].length-1),a[d]=Er(a[d]),nn.prefixes[a[d-1]]=a[d];break;case 6:this.$={...a[d-3],...Nr(a[d-2]),...a[d-1],...a[d]};break;case 7:if(!nn.skipValidation&&(Kr(a[d-3].variables.map((e=>Gr(e.expression)))).some((e=>"count"===e.aggregation&&!(e.expression instanceof or)))||a[d].group))for(const e of a[d-3].variables)if("Variable"===e.termType){if(!a[d].group||!a[d].group.map((e=>Hr(e))).includes(Hr(e)))throw Error("Projection of ungrouped variable (?"+Hr(e)+")")}else if(0===Gr(e.expression).length){const t=zr(e.expression);for(const e of t)if(!a[d].group||!a[d].group.map||!a[d].group.map((e=>Hr(e))).includes(Hr(e)))throw Error("Use of ungrouped variable in projection of operation (?"+Hr(e)+")")}const e=a[d-1].where.filter((e=>"query"===e.type));if(e.length>0){const t=a[d-3].variables.filter((e=>e.variable&&e.variable.value)).map((e=>e.variable.value)),r=Kr(e.map((e=>e.variables))).map((e=>e.value||e.variable.value));for(const e of t)if(r.indexOf(e)>=0)throw Error("Target id of 'AS' (?"+e+") already used in subquery")}this.$=Sr(a[d-3],Nr(a[d-2]),a[d-1],a[d]);break;case 8:this.$=Sr({queryType:"CONSTRUCT",template:a[d-3]},Nr(a[d-2]),a[d-1],a[d]);break;case 9:this.$=Sr({queryType:"CONSTRUCT",template:a[d-2]=a[d-2]?a[d-2].triples:[]},Nr(a[d-5]),{where:[{type:"bgp",triples:Tr([],a[d-2])}]},a[d]);break;case 10:this.$=Sr({queryType:"DESCRIBE",variables:"*"===a[d-3]?[new or]:a[d-3]},Nr(a[d-2]),a[d-1],a[d]);break;case 11:this.$=Sr({queryType:"ASK"},Nr(a[d-2]),a[d-1],a[d]);break;case 12:this.$=Sr(a[d-1],{variables:[new or]});break;case 13:const t=function(e){const t=e.slice().sort(),r=[];for(let e=0;ee.value||e.variable.value)));if(t.length>0)throw Error("Two or more of the resulting columns have the same name (?"+t[0]+")");this.$=Sr(a[d-1],{variables:a[d]});break;case 14:this.$=Sr({queryType:"SELECT"},a[d]&&(a[d-1]=_r(a[d]),a[d]={},a[d][a[d-1]]=!0,a[d]));break;case 16:case 27:this.$=Rr(a[d-3],{variable:a[d-1]});break;case 17:case 18:this.$=Sr(a[d-3],a[d-2],a[d-1],a[d],{type:"query"});break;case 19:case 58:this.$={iri:a[d],named:!!a[d-1]};break;case 20:this.$={where:a[d].patterns};break;case 21:this.$=Sr(a[d-1],a[d]);break;case 22:this.$=Sr(a[d-2],a[d-1],a[d]);break;case 23:this.$={group:a[d]};break;case 24:case 25:case 28:case 31:case 33:case 34:this.$=Rr(a[d]);break;case 26:this.$=Rr(a[d-1]);break;case 29:this.$={having:a[d]};break;case 30:this.$={order:a[d]};break;case 32:this.$=Rr(a[d],{descending:!0});break;case 35:this.$={limit:Dr(a[d])};break;case 36:this.$={offset:Dr(a[d])};break;case 37:this.$={limit:Dr(a[d-2]),offset:Dr(a[d])};break;case 38:this.$={limit:Dr(a[d]),offset:Dr(a[d-2])};break;case 39:case 43:this.$={type:"values",values:a[d]};break;case 40:case 84:this.$=a[d-1].map((e=>({[a[d-3]]:e})));break;case 41:case 85:this.$=a[d-1].map((()=>({})));break;case 42:case 86:var p=a[d-4].length;a[d-4]=a[d-4].map(xr),this.$=a[d-1].map((function(e){if(e.length!==p)throw Error("Inconsistent VALUES length");for(var t={},r=0;r"bind"===e.type))){const t=a[d-1].indexOf(e),r=new Set;for(const e of a[d-1].slice(0,t))"group"!==e.type&&"bgp"!==e.type||Jr(e).forEach((e=>r.add(e)));if(r.has(e.variable.value))throw Error("Variable used to bind is already bound (?"+e.variable.value+")")}this.$={type:"group",patterns:a[d-1]};break;case 71:this.$=a[d-1]?Or([a[d-1]],a[d]):Or(a[d]);break;case 72:this.$=a[d]?[a[d-2],a[d]]:a[d-2];break;case 75:this.$=Sr(a[d],{type:"optional"});break;case 76:this.$=Sr(a[d],{type:"minus"});break;case 77:this.$=Sr(a[d],{type:"graph",name:a[d-1]});break;case 78:this.$=Sr(a[d],{type:"service",name:a[d-1],silent:!!a[d-2]});break;case 79:this.$={type:"filter",expression:a[d]};break;case 80:this.$={type:"bind",variable:a[d-1],expression:a[d-3]};break;case 89:this.$=Wr(a[d]);break;case 90:this.$=void 0;break;case 91:this.$=a[d-1].length?{type:"union",patterns:Or(a[d-1].map(jr),[jr(a[d])])}:a[d];break;case 95:this.$={...a[d],function:a[d-1]};break;case 96:this.$={type:"functionCall",args:[]};break;case 97:this.$={type:"functionCall",args:wr(a[d-2],a[d-1]),distinct:!!a[d-3]};break;case 98:case 115:case 128:case 247:case 249:case 251:case 253:case 255:case 263:case 267:case 297:case 299:case 303:case 307:case 328:case 341:case 349:case 355:case 361:case 367:case 369:case 373:case 375:case 379:case 381:case 385:case 391:case 395:case 401:case 405:case 409:case 411:case 420:case 428:case 430:case 440:case 444:case 446:case 448:this.$=[];break;case 99:this.$=wr(a[d-2],a[d-1]);break;case 101:this.$=Or(a[d-2],[a[d-1]]);break;case 102:case 112:this.$=Zr(a[d].map((e=>Sr(Lr(a[d-1]),e))));break;case 103:this.$=Zr(Tr(a[d].map((e=>Sr(Lr(a[d-1].entity),e))),a[d-1].triples));break;case 105:this.$=Or([a[d-1]],a[d]);break;case 106:this.$=Or(a[d]);break;case 107:this.$=$r(a[d-1],a[d]);break;case 109:case 237:this.$=nn.factory.namedNode(cr);break;case 110:case 118:this.$=wr(a[d-1],a[d]);break;case 111:this.$=a[d]?{annotation:a[d],object:a[d-1]}:a[d-1];break;case 113:this.$=a[d]?Zr(Tr(a[d].map((e=>Sr(Lr(a[d-1].entity),e))),a[d-1].triples)):a[d-1].triples;break;case 114:this.$=$r(...a[d-1],a[d]);break;case 116:this.$=$r(...a[d]);break;case 117:case 159:case 163:this.$=[a[d-1],a[d]];break;case 119:this.$=a[d]?{object:a[d-1],annotation:a[d]}:a[d-1];break;case 120:this.$=a[d-1].length?Ir("|",wr(a[d-1],a[d])):a[d];break;case 121:this.$=a[d-1].length?Ir("/",wr(a[d-1],a[d])):a[d];break;case 122:this.$=a[d]?Ir(a[d],[a[d-1]]):a[d-1];break;case 123:this.$=a[d-1]?Ir(a[d-1],[a[d]]):a[d];break;case 125:case 131:this.$=Ir(a[d-1],[a[d]]);break;case 129:this.$=Ir("|",wr(a[d-2],a[d-1]));break;case 132:case 134:this.$=function(e){var t=kr(),r=t,n=[],i=[];e.forEach((function(e){n.push(e.entity),Tr(i,e.triples)}));for(var a=0,o=0,s=n.length,c=Array(2*s);a2&&E.push("'"+this.terminals_[T]+"'");A=d.showPosition?"Parse error on line "+(s+1)+":\n"+d.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(s+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(A,{text:d.match,token:this.terminals_[m]||m,line:d.yylineno,loc:f,expected:E})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(_[0]){case 1:r.push(m),n.push(d.yytext),i.push(d.yylloc),r.push(_[1]),m=null,b?(m=b,b=null):(c=d.yyleng,o=d.yytext,s=d.yylineno,f=d.yylloc,u>0&&u--);break;case 2:if(S=this.productions_[_[1]][1],x.$=n[n.length-S],x._$={first_line:i[i.length-(S||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(S||1)].first_column,last_column:i[i.length-1].last_column},g&&(x._$.range=[i[i.length-(S||1)].range[0],i[i.length-1].range[1]]),void 0!==(w=this.performAction.apply(x,[o,c,s,p.yy,_[1],n,i].concat(l))))return w;S&&(r=r.slice(0,-1*S*2),n=n.slice(0,-1*S),i=i.slice(0,-1*S)),r.push(this.productions_[_[1]][0]),n.push(x.$),i.push(x._$),O=a[r[r.length-2]][r[r.length-1]],r.push(O);break;case 3:return!0}}return!0}},or=r(54516).t,sr="http://www.w3.org/1999/02/22-rdf-syntax-ns#",cr=sr+"type",ur=sr+"first",lr=sr+"rest",dr=sr+"nil",pr="http://www.w3.org/2001/XMLSchema#",hr=pr+"integer",fr=pr+"decimal",yr=pr+"double",gr=pr+"boolean",mr="",br="",vr="";function _r(e){return e.toLowerCase()}function wr(e,t){return e.push(t),e}function Tr(e,t){return e.push.apply(e,t),e}function Sr(e){e||(e={});for(var t,r=1,n=arguments.length;r>10),56320+(1023&i))}var a=Ur[n];if(!a)throw new Error;return a}))}catch(e){return""}if(qr.exec(e))throw new Error("Invalid unicode codepoint of surrogate pair without corresponding codepoint in "+e);return e}function $r(e,t,r){var n=[],i=[];return t.forEach((function(t){let r=null;t.annotation&&(r=t.annotation,t=t.object),n.push(Lr(null,e,t.entity,r)),Tr(i,t.triples)})),Or(n,r||[],i)}function Hr(e){return e.variable?e.variable.value:e.value||e.expression.value}function Gr(e){if(!e)return[];if("aggregate"===e.type)return[e];if("operation"===e.type){const t=[];for(const r of e.args)t.push(...Gr(r));return t}return[]}function zr(e){const t=new Set,r=function(e){e&&("Variable"===e.termType?t.add(e):"operation"===e.type&&e.args.forEach(r))};return r(e),t}function Kr(e,t=1,r=[]){for(const n of e)t>0&&n instanceof Array?Kr(n,t-1,r):r.push(n);return r}function Xr(e){return"Variable"===e.termType}function Jr(e){if(e.triples){const t=[];for(const r of e.triples)Xr(r.subject)&&t.push(r.subject.value),Xr(r.predicate)&&t.push(r.predicate.value),Xr(r.object)&&t.push(r.object.value);return t}if(e.patterns){const t=[];for(const r of e.patterns)t.push(...Jr(r));return t}return[]}function Wr(e){if(!nn.sparqlStar)throw new Error("SPARQL-star support is not enabled");return e}function Yr(e,t,r){for(const n of t){const t=Lr("subject"in n?n.subject:e,n.predicate,n.object);r.push(t),n.annotations&&Yr(Mr(e,n.predicate,n.object),n.annotations,r)}}function Zr(e){if(nn.sparqlStar){const t=[];return e.forEach((e=>{const r=Lr(e.subject,e.predicate,e.object);t.push(r),e.annotations&&Yr(Mr(e.subject,e.predicate,e.object),e.annotations,t)})),t}return e}function en(e){for(const t of e){if("graph"===t.type&&"Variable"===t.name.termType)throw new Error("Detected illegal variable in GRAPH");if("bgp"===t.type||"graph"===t.type)for(const e of t.triples)if("Variable"===e.subject.termType||"Variable"===e.predicate.termType||"Variable"===e.object.termType)throw new Error("Detected illegal variable in BGP")}return e}function tn(e){for(const t of e)if("bgp"===t.type)for(const e of t.triples)if("BlankNode"===e.subject.termType||"BlankNode"===e.predicate.termType||"BlankNode"===e.object.termType)throw new Error("Detected illegal blank node in BGP");return e}var rn={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,r=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===n.length?this.yylloc.first_column:0)+n[n.length-r.length].length-r[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var r,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],r=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,r,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;at[0].length)){if(t=r,n=a,this.options.backtrack_lexer){if(!1!==(e=this.test_match(r,i[a])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,i[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{flex:!0,"case-insensitive":!0},performAction:function(e,t,r,n){switch(r){case 0:break;case 1:return 12;case 2:return 15;case 3:return 41;case 4:return 325;case 5:return 326;case 6:return 45;case 7:return 47;case 8:return 48;case 9:return 39;case 10:return 24;case 11:return 28;case 12:return 29;case 13:return 31;case 14:return 32;case 15:return 36;case 16:return 53;case 17:return 327;case 18:return 63;case 19:return 64;case 20:return 70;case 21:return 73;case 22:return 76;case 23:return 78;case 24:return 81;case 25:return 83;case 26:return 85;case 27:return 193;case 28:return 100;case 29:return 328;case 30:return 121;case 31:return 329;case 32:return 330;case 33:return 110;case 34:return 331;case 35:return 109;case 36:return 332;case 37:return 333;case 38:return 113;case 39:return 115;case 40:return 116;case 41:return 131;case 42:return 123;case 43:return 126;case 44:return 128;case 45:return 132;case 46:return 112;case 47:return 334;case 48:return 335;case 49:return 159;case 50:return 161;case 51:return 164;case 52:return 174;case 53:return 160;case 54:return 336;case 55:return 163;case 56:return 312;case 57:return 314;case 58:return 317;case 59:return 318;case 60:return 272;case 61:return 197;case 62:return 337;case 63:return 338;case 64:return 229;case 65:return 340;case 66:return 263;case 67:return 224;case 68:return 231;case 69:return 232;case 70:return 242;case 71:return 246;case 72:return 290;case 73:return 341;case 74:return 342;case 75:return 343;case 76:return 344;case 77:return 345;case 78:return 250;case 79:return 346;case 80:return 265;case 81:return 276;case 82:return 277;case 83:return 268;case 84:return 269;case 85:return 270;case 86:return 271;case 87:return 347;case 88:return 348;case 89:return 273;case 90:return 274;case 91:return 350;case 92:return 349;case 93:return 351;case 94:return 279;case 95:return 280;case 96:return 283;case 97:return 285;case 98:return 289;case 99:return 293;case 100:return 296;case 101:return 13;case 102:return 16;case 103:return 308;case 104:return 309;case 105:return 87;case 106:return 292;case 107:return 82;case 108:return 294;case 109:return 295;case 110:return 297;case 111:return 298;case 112:return 299;case 113:return 300;case 114:return 301;case 115:return 302;case 116:return"EXPONENT";case 117:return 303;case 118:return 304;case 119:return 305;case 120:return 306;case 121:return 89;case 122:return 310;case 123:return 6;case 124:return"INVALID";case 125:console.log(t.yytext)}},rules:[/^(?:\s+|(#[^\n\r]*))/i,/^(?:BASE)/i,/^(?:PREFIX)/i,/^(?:SELECT)/i,/^(?:DISTINCT)/i,/^(?:REDUCED)/i,/^(?:\()/i,/^(?:AS)/i,/^(?:\))/i,/^(?:\*)/i,/^(?:CONSTRUCT)/i,/^(?:WHERE)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:DESCRIBE)/i,/^(?:ASK)/i,/^(?:FROM)/i,/^(?:NAMED)/i,/^(?:GROUP)/i,/^(?:BY)/i,/^(?:HAVING)/i,/^(?:ORDER)/i,/^(?:ASC)/i,/^(?:DESC)/i,/^(?:LIMIT)/i,/^(?:OFFSET)/i,/^(?:VALUES)/i,/^(?:;)/i,/^(?:LOAD)/i,/^(?:SILENT)/i,/^(?:INTO)/i,/^(?:CLEAR)/i,/^(?:DROP)/i,/^(?:CREATE)/i,/^(?:ADD)/i,/^(?:TO)/i,/^(?:MOVE)/i,/^(?:COPY)/i,/^(?:INSERT((\s+|(#[^\n\r]*)\n\r?)+)DATA)/i,/^(?:DELETE((\s+|(#[^\n\r]*)\n\r?)+)DATA)/i,/^(?:DELETE((\s+|(#[^\n\r]*)\n\r?)+)WHERE)/i,/^(?:WITH)/i,/^(?:DELETE)/i,/^(?:INSERT)/i,/^(?:USING)/i,/^(?:DEFAULT)/i,/^(?:GRAPH)/i,/^(?:ALL)/i,/^(?:\.)/i,/^(?:OPTIONAL)/i,/^(?:SERVICE)/i,/^(?:BIND)/i,/^(?:UNDEF)/i,/^(?:MINUS)/i,/^(?:UNION)/i,/^(?:FILTER)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:\{\|)/i,/^(?:\|\})/i,/^(?:,)/i,/^(?:a)/i,/^(?:\|)/i,/^(?:\/)/i,/^(?:\^)/i,/^(?:\?)/i,/^(?:\+)/i,/^(?:!)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:\|\|)/i,/^(?:&&)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:<)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:>=)/i,/^(?:IN)/i,/^(?:NOT)/i,/^(?:-)/i,/^(?:BOUND)/i,/^(?:BNODE)/i,/^(?:(RAND|NOW|UUID|STRUUID))/i,/^(?:(LANG|DATATYPE|IRI|URI|ABS|CEIL|FLOOR|ROUND|STRLEN|STR|UCASE|LCASE|ENCODE_FOR_URI|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|MD5|SHA1|SHA256|SHA384|SHA512|isIRI|isURI|isBLANK|isLITERAL|isNUMERIC))/i,/^(?:(SUBJECT|PREDICATE|OBJECT|isTRIPLE))/i,/^(?:(LANGMATCHES|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|STRLANG|STRDT|sameTerm))/i,/^(?:CONCAT)/i,/^(?:COALESCE)/i,/^(?:IF)/i,/^(?:TRIPLE)/i,/^(?:REGEX)/i,/^(?:SUBSTR)/i,/^(?:REPLACE)/i,/^(?:EXISTS)/i,/^(?:COUNT)/i,/^(?:SUM|MIN|MAX|AVG|SAMPLE)/i,/^(?:GROUP_CONCAT)/i,/^(?:SEPARATOR)/i,/^(?:\^\^)/i,/^(?:true|false)/i,/^(?:(<(?:[^<>\"\{\}\|\^`\\\u0000-\u0020])*>))/i,/^(?:((([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.)*(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040]))?)?:))/i,/^(?:(((([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.)*(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040]))?)?:)((?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|:|[0-9]|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))*(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%)))))?)))/i,/^(?:(_:(?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|[0-9])(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.)*(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040]))?))/i,/^(?:([\?\$]((?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|[0-9])(?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])*)))/i,/^(?:(@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*))/i,/^(?:([0-9]+))/i,/^(?:([0-9]*\.[0-9]+))/i,/^(?:([0-9]+\.[0-9]*([eE][+-]?[0-9]+)|\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+)))/i,/^(?:(\+([0-9]+)))/i,/^(?:(\+([0-9]*\.[0-9]+)))/i,/^(?:(\+([0-9]+\.[0-9]*([eE][+-]?[0-9]+)|\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:(-([0-9]+)))/i,/^(?:(-([0-9]*\.[0-9]+)))/i,/^(?:(-([0-9]+\.[0-9]*([eE][+-]?[0-9]+)|\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:([eE][+-]?[0-9]+))/i,/^(?:('(?:(?:[^\u0027\u005C\u000A\u000D])|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*'))/i,/^(?:("(?:(?:[^\u0022\u005C\u000A\u000D])|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*"))/i,/^(?:('''(?:(?:'|'')?(?:[^'\\]|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*'''))/i,/^(?:("""(?:(?:"|"")?(?:[^\"\\]|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*"""))/i,/^(?:(\((\u0020|\u0009|\u000D|\u000A)*\)))/i,/^(?:(\[(\u0020|\u0009|\u000D|\u000A)*\]))/i,/^(?:$)/i,/^(?:.)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],inclusive:!0}}};function nn(){this.yy={}}return ar.lexer=rn,nn.prototype=ar,ar.Parser=nn,new nn}();e.exports=n},54516:e=>{class t{constructor(){return r||this}equals(e){return e&&this.termType===e.termType}}Object.defineProperty(t.prototype,"value",{enumerable:!0,value:"*"}),Object.defineProperty(t.prototype,"termType",{enumerable:!0,value:"Wildcard"});var r=new t;e.exports.t=t},55403:(e,t,r)=>{var n=r(17308).Parser,i=r(33206),a=r(54516).t,{DataFactory:o}=r(18050);e.exports={Parser:function({prefixes:e,baseIRI:t,factory:r,sparqlStar:i,skipValidation:a,skipUngroupedVariableCheck:s,pathOnly:c}={}){var u={};for(var l in e||{})u[l]=e[l];var d=new n;return d.parse=function(){return n.base=t||"",n.prefixes=Object.create(u),n.factory=r||new o,n.sparqlStar=Boolean(i),n.pathOnly=Boolean(c),n.skipValidation=Boolean(a)||Boolean(s),n.prototype.parse.apply(d,arguments)},d._resetBlanks=n._resetBlanks,d},Generator:i,Wildcard:a}},21451:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(71839),t)},71839:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SparqlJsonParser=void 0;const n=r(18050),i=r(58521),a=r(36885);t.SparqlJsonParser=class{constructor(e){var t;e=e||{},this.dataFactory=e.dataFactory||new n.DataFactory,this.prefixVariableQuestionMark=!!e.prefixVariableQuestionMark,this.suppressMissingStreamResultsError=null===(t=e.suppressMissingStreamResultsError)||void 0===t||t}parseJsonResults(e){return e.results.bindings.map((e=>this.parseJsonBindings(e)))}parseJsonResultsStream(e){const t=e=>s.emit("error",e);e.on("error",t);const r=new a;r.onError=t;let n=!1,o=!1;r.onValue=e=>{if("vars"===r.key&&2===r.stack.length&&"head"===r.stack[1].key)s.emit("variables",e.map((e=>this.dataFactory.variable(e)))),n=!0;else if("results"===r.key&&1===r.stack.length)o=!0;else if("number"==typeof r.key&&3===r.stack.length&&"results"===r.stack[1].key&&"bindings"===r.stack[2].key)try{s.push(this.parseJsonBindings(e))}catch(e){s.emit("error",e)}else"metadata"===r.key&&1===r.stack.length&&s.emit("metadata",e)};const s=e.on("end",(e=>{o||this.suppressMissingStreamResultsError?n||s.emit("variables",[]):s.emit("error",new Error("No valid SPARQL query results were found."))})).pipe(new i.Transform({objectMode:!0,transform(e,t,n){r.write(e),n()}}));return s}parseJsonBindings(e){const t={};for(const r in e){const n=e[r];t[this.prefixVariableQuestionMark?"?"+r:r]=this.parseJsonValue(n)}return t}parseJsonValue(e){let t;switch(e.type){case"bnode":t=this.dataFactory.blankNode(e.value);break;case"literal":t=e["xml:lang"]?this.dataFactory.literal(e.value,e["xml:lang"]):e.datatype?this.dataFactory.literal(e.value,this.dataFactory.namedNode(e.datatype)):this.dataFactory.literal(e.value);break;case"typed-literal":t=this.dataFactory.literal(e.value,this.dataFactory.namedNode(e.datatype));break;case"triple":const r=e.value;if(!(r&&r.subject&&r.predicate&&r.object))throw new Error("Invalid quoted triple: "+JSON.stringify(e));t=this.dataFactory.quad(this.parseJsonValue(r.subject),this.parseJsonValue(r.predicate),this.parseJsonValue(r.object));break;default:t=this.dataFactory.namedNode(e.value)}return t}parseJsonBoolean(e){if("boolean"in e)return e.boolean;throw new Error("No valid ASK response was found.")}parseJsonBooleanStream(e){return new Promise(((t,r)=>{const n=new a;n.onError=r,n.onValue=e=>{"boolean"===n.key&&"boolean"==typeof e&&1===n.stack.length&&t(e)},e.on("error",r).on("data",(e=>n.write(e))).on("end",(()=>r(new Error("No valid ASK response was found."))))}))}}},43004:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(78780),t)},78780:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Converter=void 0;const n=r(80740),i=r(21451);class a{constructor(e){(e=e||{delimiter:"_"}).prefixVariableQuestionMark=!1,this.delimiter=e.delimiter||"_",this.parser=new i.SparqlJsonParser(e),this.materializeRdfJsTerms=e.materializeRdfJsTerms}static addValueToTree(e,t,r,n,i,o){const s=t[0],c=n?n+o+s:s,u=i.singularizeVariables[c];if(1===t.length)u?e[s]||(e[s]=r):(e[s]||(e[s]=[]),e[s].push(r));else{let n;u?(e[s]||(e[s]={}),n=e[s]):(e[s]||(e[s]=[{}]),n=e[s][0]),a.addValueToTree(n,t.slice(1),r,c,i,o)}}static mergeTrees(e,t){if(typeof e!=typeof t)throw new Error(`Two incompatible tree nodes were found: ${typeof e} and ${typeof t}`);if(Array.isArray(e)!==Array.isArray(t))throw new Error(`Two incompatible tree nodes were found: Array?${Array.isArray(e)} and Array?${Array.isArray(t)}`);if("object"==typeof e&&"object"==typeof t){if(e.termType&&t.termType)return e.equals(t)?{valid:!0,result:e}:{valid:!1,result:e};if(Array.isArray(e)&&Array.isArray(t)){if(e.length>0){const r=[];let n=!1;for(const i of e){const e=a.mergeTrees(i,t[0]);e.valid?(n=!0,r.push(e.result)):r.push(i)}if(n)return{valid:!0,result:r}}return{valid:!0,result:e.concat(t)}}{const r={};for(const e in t)r[e]=t[e];for(const t in e)if(r[t]){const n=a.mergeTrees(e[t],r[t]);if(!n.valid)return{valid:!1,result:e};r[t]=n.result}else r[t]=e[t];return{valid:!0,result:r}}}throw new Error(`Unmergable tree types: ${typeof e} and ${typeof t}`)}static materializeTree(e){if(e.termType)return(0,n.getTermRaw)(e);if(Array.isArray(e))return e.map(a.materializeTree);{const t={};for(const r in e)t[r]=a.materializeTree(e[r]);return t}}sparqlJsonResultsToTree(e,t){return this.bindingsToTree(this.parser.parseJsonResults(e),t||{singularizeVariables:{}})}bindingsToTree(e,t){const r=t&&t.singularizeVariables[""];let n=r?{}:[];for(const i of e){const e=r?{}:[{}];for(const n in i){const o=n.split(this.delimiter),s=i[n];a.addValueToTree(r?e:e[0],o,s,"",t,this.delimiter)}n=a.mergeTrees(n,e).result}return this.materializeRdfJsTerms&&(n=a.materializeTree(n)),n}}t.Converter=a},52666:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(49679),t)},49679:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SparqlXmlParser=void 0;const n=r(18050),i=r(49126),a=r(58521);t.SparqlXmlParser=class{constructor(e){e=e||{},this.dataFactory=e.dataFactory||new n.DataFactory,this.prefixVariableQuestionMark=!!e.prefixVariableQuestionMark}parseXmlResultsStream(e){const t=e=>y.emit("error",e);e.on("error",t);const r=new i.SaxesParser,n=[];let o=!1,s=!1;const c=[];let u,l={},d="",p="",h="",f=[];r.on("error",t),r.on("opentag",(e=>{"variable"===e.name&&this.stackEquals(n,["sparql","head"])?c.push(this.dataFactory.variable(e.attributes.name)):"results"===e.name&&this.stackEquals(n,["sparql"])?s=!0:"result"===e.name&&this.stackEquals(n,["sparql","results"])?l={}:"binding"===e.name&&this.stackEquals(n,["sparql","results","result"])?(d=e.attributes.name||"",p="",u="",h="",f=[]):"triple"===e.name&&this.stackBeginsWith(n,["sparql","results","result"])?f.push({components:{}}):"triple"===n[n.length-1]&&this.stackBeginsWith(n,["sparql","results","result","binding"])?(p="",u="",h="",["subject","predicate","object"].includes(e.name)?f[f.length-1].currentComponent=e.name:t(new Error(`Illegal quoted triple component '${e.name}' found on line ${r.line+1}`))):this.stackBeginsWith(n,["sparql","results","result","binding"])&&(p=e.name,u="xml:lang"in e.attributes?e.attributes["xml:lang"]:"datatype"in e.attributes?this.dataFactory.namedNode(e.attributes.datatype):void 0),n.push(e.name)})),r.on("closetag",(e=>{if(this.stackEquals(n,["sparql","head"])&&(y.emit("variables",c),o=!0),this.stackEquals(n,["sparql","results","result"])&&y.push(l),this.stackBeginsWith(n,["sparql","results","result","binding"])){let e;if(!d&&p)t(new Error(`Terms should have a name on line ${r.line+1}`));else if("uri"===p)e=this.dataFactory.namedNode(h);else if("bnode"===p)e=this.dataFactory.blankNode(h);else if("literal"===p)e=this.dataFactory.literal(h,u);else if("triple"===n[n.length-1]){const n=f.pop();n&&n.components.subject&&n.components.predicate&&n.components.object?e=this.dataFactory.quad(n.components.subject,n.components.predicate,n.components.object):t(new Error(`Incomplete quoted triple on line ${r.line+1}`))}else p&&t(new Error(`Invalid term type '${p}' on line ${r.line+1}`));if(e)if(f.length>0){const n=f[f.length-1];n.components[n.currentComponent]&&t(new Error(`The ${n.currentComponent} in a quoted triple on line ${r.line+1} was already defined before`)),n.components[n.currentComponent]=e}else{const t=this.prefixVariableQuestionMark?"?"+d:d;l[t]=e}p=void 0}n.pop()})),r.on("text",(e=>{this.stackBeginsWith(n,["sparql","results","result","binding"])&&n[n.length-1]===p&&(h=e)}));const y=e.on("end",(e=>{s?o||y.emit("variables",[]):y.emit("error",new Error("No valid SPARQL query results were found."))})).pipe(new a.Transform({objectMode:!0,transform(e,t,n){r.write(e),n()}}));return y}parseXmlBooleanStream(e){return new Promise(((t,r)=>{const n=new i.SaxesParser,a=[];n.on("error",r),n.on("opentag",(e=>{a.push(e.name)})),n.on("closetag",(e=>{a.pop()})),n.on("text",(e=>{this.stackEquals(a,["sparql","boolean"])&&t("true"===e)})),e.on("error",r).on("data",(e=>n.write(e))).on("end",(()=>r(new Error("No valid ASK response was found."))))}))}stackEquals(e,t){return e.length===t.length&&e.every(((e,r)=>t[r]===e))}stackBeginsWith(e,t){return e.length>=t.length&&t.every(((t,r)=>e[r]===t))}}},76574:(e,t,r)=>{var n=r(21848);e.exports=function(e,t,r){"function"==typeof t&&(r=t,t=null);var i="",a=new n((function(r,n){e.on("data",(function(e){i+="string"==typeof t?e.toString(t):e.toString()})),e.on("end",(function(){r(i)})),e.on("error",n)}));return r&&a.then((function(e){r(null,e)}),r),a}},18888:(e,t,r)=>{"use strict";var n=r(25636).Buffer,i=n.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(n.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=c,this.end=u,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=l,this.end=d,t=3;break;default:return this.write=p,void(this.end=h)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function c(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function l(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function d(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function p(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}t.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(i>0&&(e.lastNeed=i-1),i):--n=0?(i>0&&(e.lastNeed=i-2),i):--n=0?(i>0&&(2===i?i=0:e.lastNeed=i-3),i):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},68492:e=>{!function(t){"use strict";var r=function(){function e(e){this.options=e}return e.prototype.toString=function(){return JSON&&JSON.stringify?JSON.stringify(this.options):this.options},e}(),n={isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},isString:function(e){return"[object String]"===Object.prototype.toString.apply(e)},isNumber:function(e){return"[object Number]"===Object.prototype.toString.apply(e)},isBoolean:function(e){return"[object Boolean]"===Object.prototype.toString.apply(e)},join:function(e,t){var r,n="",i=!0;for(r=0;r="0"&&e<="9"}return{isAlpha:function(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"},isDigit:e,isHexDigit:function(t){return e(t)||t>="a"&&t<="f"||t>="A"&&t<="F"}}}(),a=function(){var e=function(e){return e<=127?1:194<=e&&e<=223?2:224<=e&&e<=239?3:240<=e&&e<=244?4:0},t=function(e){return 128<=e&&e<=191};function r(e,t){return"%"===e.charAt(t)&&i.isHexDigit(e.charAt(t+1))&&i.isHexDigit(e.charAt(t+2))}function n(e,t){return parseInt(e.substr(t,2),16)}return{encodeCharacter:function(e){var t,r,n="",i=function(e){return unescape(encodeURIComponent(e))}(e);for(r=0;r1?r+=n:r+=c(n)||s(n)?n:a.encodeCharacter(n);return r},encodeLiteralCharacter:function(e,t){var r=a.pctCharAt(e,t);return r.length>1||c(r)||s(r)?r:a.encodeCharacter(r)}}}(),l=function(){var e={};function t(t){e[t]={symbol:t,separator:"?"===t?"&":""===t||"+"===t||"#"===t?",":t,named:";"===t||"&"===t||"?"===t,ifEmpty:"&"===t||"?"===t?"=":"",first:"+"===t?"":t,encode:"+"===t||"#"===t?u.encodePassReserved:u.encode,toString:function(){return this.symbol}}}return t(""),t("+"),t("#"),t("."),t("/"),t(";"),t("?"),t("&"),{valueOf:function(t){return e[t]?e[t]:"=,!@|".indexOf(t)>=0?null:e[""]}}}();function d(e){var t;if(null==e)return!1;if(n.isArray(e))return e.length>0;if("string"==typeof e||"number"==typeof e||"boolean"==typeof e)return!0;for(t in e)if(e.hasOwnProperty(t)&&d(e[t]))return!0;return!1}var p=function(){function e(e){this.literal=u.encodeLiteral(e)}return e.prototype.expand=function(){return this.literal},e.prototype.toString=e.prototype.expand,e}(),h=function(){function e(e){var t,n,s=[],c=null,u=null,d=null,p="";function h(){var t=e.substring(u,n);if(0===t.length)throw new r({expressionText:e,message:"a varname must be specified",position:n});c={varname:t,exploded:!1,maxLength:null},u=null}function y(){if(d===n)throw new r({expressionText:e,message:"after a ':' you have to specify the length",position:n});c.maxLength=parseInt(e.substring(d,n),10),d=null}for(t=function(t){var i=l.valueOf(t);if(null===i)throw new r({expressionText:e,message:"illegal use of reserved operator",position:n,operator:t});return i}(e.charAt(0)),n=t.symbol.length,u=n;n=4)throw new r({expressionText:e,message:"A :prefix must have max 4 digits",position:n});continue}y()}if(":"!==p)if("*"!==p){if(","!==p)throw new r({expressionText:e,message:"illegal character",character:p,position:n});s.push(c),c=null,u=n+1}else{if(null===c)throw new r({expressionText:e,message:"exploded without varspec",position:n});if(c.exploded)throw new r({expressionText:e,message:"exploded twice",position:n});if(c.maxLength)throw new r({expressionText:e,message:"an explode (*) MUST NOT follow to a prefix",position:n});c.exploded=!0}else{if(null!==c.maxLength)throw new r({expressionText:e,message:"only one :maxLength is allowed per varspec",position:n});if(c.exploded)throw new r({expressionText:e,message:"an exploeded varspec MUST NOT be varspeced",position:n});d=n+1}}return null!==u&&h(),null!==d&&y(),s.push(c),new f(e,t,s)}return function(t){var n,i,a=[],o=null,s=0;for(n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NIL",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"v1",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(t,"v3",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"v4",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"v5",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"validate",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"version",{enumerable:!0,get:function(){return c.default}});var n=p(r(74603)),i=p(r(22298)),a=p(r(42712)),o=p(r(93423)),s=p(r(35911)),c=p(r(24072)),u=p(r(4564)),l=p(r(46585)),d=p(r(29975));function p(e){return e&&e.__esModule?e:{default:e}}},72668:(e,t)=>{"use strict";function r(e){return 14+(e+64>>>9<<4)+1}function n(e,t){const r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function i(e,t,r,i,a,o){return n((s=n(n(t,e),n(i,o)))<<(c=a)|s>>>32-c,r);var s,c}function a(e,t,r,n,a,o,s){return i(t&r|~t&n,e,t,a,o,s)}function o(e,t,r,n,a,o,s){return i(t&n|r&~n,e,t,a,o,s)}function s(e,t,r,n,a,o,s){return i(t^r^n,e,t,a,o,s)}function c(e,t,r,n,a,o,s){return i(r^(t|~n),e,t,a,o,s)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default=function(e){if("string"==typeof e){const t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(let r=0;r>5]>>>i%32&255,a=parseInt(n.charAt(r>>>4&15)+n.charAt(15&r),16);t.push(a)}return t}(function(e,t){e[t>>5]|=128<>5]|=(255&e[r/8])<{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};t.default=r},35911:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default="00000000-0000-0000-0000-000000000000"},29975:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(4564))&&n.__esModule?n:{default:n};t.default=function(e){if(!(0,i.default)(e))throw TypeError("Invalid UUID");let t;const r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r}},16635:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i},74089:(e,t)=>{"use strict";let r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){if(!r&&(r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!r))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return r(n)};const n=new Uint8Array(16)},34271:(e,t)=>{"use strict";function r(e,t,r,n){switch(e){case 0:return t&r^~t&n;case 1:case 3:return t^r^n;case 2:return t&r^t&n^r&n}}function n(e,t){return e<>>32-t}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default=function(e){const t=[1518500249,1859775393,2400959708,3395469782],i=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){const t=unescape(encodeURIComponent(e));e=[];for(let r=0;r>>0;d=l,l=u,u=n(c,30)>>>0,c=o,o=s}i[0]=i[0]+o>>>0,i[1]=i[1]+c>>>0,i[2]=i[2]+u>>>0,i[3]=i[3]+l>>>0,i[4]=i[4]+d>>>0}return[i[0]>>24&255,i[0]>>16&255,i[0]>>8&255,255&i[0],i[1]>>24&255,i[1]>>16&255,i[1]>>8&255,255&i[1],i[2]>>24&255,i[2]>>16&255,i[2]>>8&255,255&i[2],i[3]>>24&255,i[3]>>16&255,i[3]>>8&255,255&i[3],i[4]>>24&255,i[4]>>16&255,i[4]>>8&255,255&i[4]]}},46585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.unsafeStringify=o;var n,i=(n=r(4564))&&n.__esModule?n:{default:n};const a=[];for(let e=0;e<256;++e)a.push((e+256).toString(16).slice(1));function o(e,t=0){return a[e[t+0]]+a[e[t+1]]+a[e[t+2]]+a[e[t+3]]+"-"+a[e[t+4]]+a[e[t+5]]+"-"+a[e[t+6]]+a[e[t+7]]+"-"+a[e[t+8]]+a[e[t+9]]+"-"+a[e[t+10]]+a[e[t+11]]+a[e[t+12]]+a[e[t+13]]+a[e[t+14]]+a[e[t+15]]}t.default=function(e,t=0){const r=o(e,t);if(!(0,i.default)(r))throw TypeError("Stringified UUID is invalid");return r}},74603:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(74089))&&n.__esModule?n:{default:n},a=r(46585);let o,s,c=0,u=0;t.default=function(e,t,r){let n=t&&r||0;const l=t||new Array(16);let d=(e=e||{}).node||o,p=void 0!==e.clockseq?e.clockseq:s;if(null==d||null==p){const t=e.random||(e.rng||i.default)();null==d&&(d=o=[1|t[0],t[1],t[2],t[3],t[4],t[5]]),null==p&&(p=s=16383&(t[6]<<8|t[7]))}let h=void 0!==e.msecs?e.msecs:Date.now(),f=void 0!==e.nsecs?e.nsecs:u+1;const y=h-c+(f-u)/1e4;if(y<0&&void 0===e.clockseq&&(p=p+1&16383),(y<0||h>c)&&void 0===e.nsecs&&(f=0),f>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");c=h,u=f,s=p,h+=122192928e5;const g=(1e4*(268435455&h)+f)%4294967296;l[n++]=g>>>24&255,l[n++]=g>>>16&255,l[n++]=g>>>8&255,l[n++]=255&g;const m=h/4294967296*1e4&268435455;l[n++]=m>>>8&255,l[n++]=255&m,l[n++]=m>>>24&15|16,l[n++]=m>>>16&255,l[n++]=p>>>8|128,l[n++]=255&p;for(let e=0;e<6;++e)l[n+e]=d[e];return t||(0,a.unsafeStringify)(l)}},22298:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(r(14782)),i=a(r(72668));function a(e){return e&&e.__esModule?e:{default:e}}var o=(0,n.default)("v3",48,i.default);t.default=o},14782:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.URL=t.DNS=void 0,t.default=function(e,t,r){function n(e,n,o,s){var c;if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));const t=[];for(let r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=o(r(40193)),i=o(r(74089)),a=r(46585);function o(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t,r){if(n.default.randomUUID&&!t&&!e)return n.default.randomUUID();const o=(e=e||{}).random||(e.rng||i.default)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=o[e];return t}return(0,a.unsafeStringify)(o)}},93423:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(r(14782)),i=a(r(34271));function a(e){return e&&e.__esModule?e:{default:e}}var o=(0,n.default)("v5",80,i.default);t.default=o},4564:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(16635))&&n.__esModule?n:{default:n};t.default=function(e){return"string"==typeof e&&i.default.test(e)}},24072:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(4564))&&n.__esModule?n:{default:n};t.default=function(e){if(!(0,i.default)(e))throw TypeError("Invalid UUID");return parseInt(e.slice(14,15),16)}},29815:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(33285),t)},33285:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateIri=t.IriValidationStrategy=void 0;const r=function(){const e="[!$&'()*+,;=]",t="%[a-fA-F0-9]{2}",r="([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])",n=`${r}\\.${r}\\.${r}\\.${r}`,i="[a-fA-F0-9]{1,4}",a=`(${i}:${i}|${n})`,o="[a-zA-Z0-9\\-._~ -퟿豈-﷏ﷰ-￯𐀀-🿽𠀀-𯿽𰀀-𿿽񀀀-񏿽񐀀-񟿽񠀀-񯿽񰀀-񿿽򀀀-򏿽򐀀-򟿽򠀀-򯿽򰀀-򿿽󀀀-󏿽󐀀-󟿽󡀀-󯿽]",s=`(${o}|${t}|${e}|[:@])*`,c=`(${s})+`,u=`(${s})*`;return new RegExp(`^[a-zA-Z][a-zA-Z0-9+\\-.]*:(\\/\\/((${o}|${t}|${e}|:)*@)?(\\[(((${i}:){6}${a}|::(${i}:){5}${a}|(${i})?::(${i}:){4}${a}|((${i}:){0,1}${i})?::(${i}:){3}${a}|((${i}:){0,2}${i})?::(${i}:){2}${a}|((${i}:){0,3}${i})?::${i}:${a}|((${i}:){0,4}${i})?::${a}|((${i}:){0,5}${i})?::${i}|((${i}:){0,6}${i})?::)|v[a-fA-F0-9]+\\.(${e}|${e}|":)+)\\]|${n}|(${o}|${t}|${e})*)(:[0-9]*)?(\\/${u})*|\\/(${c}(\\/${u})*)?|${c}(\\/${u})*|)(\\?(${s}|[-󰀀-󿿽􀀀-􏿽]|[\\/?])*)?(#(${s}|[\\/?])*)?$`,"u")}(),n=/^[A-Za-z][\d+-.A-Za-z]*:[^\u0000-\u0020"<>\\^`{|}]*$/u;var i;!function(e){e.Strict="strict",e.Pragmatic="pragmatic",e.None="none"}(i=t.IriValidationStrategy||(t.IriValidationStrategy={})),t.validateIri=function(e,t=i.Strict){switch(t){case i.Strict:return r.test(e)?void 0:new Error(`Invalid IRI according to RFC 3987: '${e}'`);case i.Pragmatic:return n.test(e)?void 0:new Error(`Invalid IRI according to RDF Turtle: '${e}'`);case i.None:return;default:return new Error(`Not supported validation strategy "${t}"`)}}},55675:(e,t,r)=>{e.exports=function e(t,r,n){function i(o,s){if(!r[o]){if(!t[o]){if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=r[o]={exports:{}};t[o][0].call(u.exports,(function(e){return i(t[o][1][e]||e)}),u,u.exports,e,t,r,n)}return r[o].exports}for(var a=void 0,o=0;o=0;s--)if(c[s]!==u[s])return!1;for(s=c.length-1;s>=0;s--)if(!p(e[o=c[s]],t[o],r,n))return!1;return!0}(e,t,r,s))}return r?e===t:e==t}function h(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function f(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function y(e,t,r,n){var i;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),e&&!i&&l(i,r,"Missing expected exception"+n);var a="string"==typeof n,o=!e&&i&&!r;if((!e&&g.isError(i)&&a&&f(i,r)||o)&&l(i,r,"Got unwanted exception"+n),e&&i&&r&&!f(i,r)||!e&&i)throw i}var g=e("util/"),m=Object.prototype.hasOwnProperty,b=Array.prototype.slice,v="foo"===function(){}.name,_=t.exports=d,w=/\s*function\s+([^\(\s]*)\s*/;_.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return c(u(e.actual),128)+" "+e.operator+" "+c(u(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||l;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var r=new Error;if(r.stack){var n=r.stack,i=s(t),a=n.indexOf("\n"+i);if(a>=0){var o=n.indexOf("\n",a+1);n=n.substring(o+1)}this.stack=n}}},g.inherits(_.AssertionError,Error),_.fail=l,_.ok=d,_.equal=function(e,t,r){e!=t&&l(e,t,r,"==",_.equal)},_.notEqual=function(e,t,r){e==t&&l(e,t,r,"!=",_.notEqual)},_.deepEqual=function(e,t,r){p(e,t,!1)||l(e,t,r,"deepEqual",_.deepEqual)},_.deepStrictEqual=function(e,t,r){p(e,t,!0)||l(e,t,r,"deepStrictEqual",_.deepStrictEqual)},_.notDeepEqual=function(e,t,r){p(e,t,!1)&&l(e,t,r,"notDeepEqual",_.notDeepEqual)},_.notDeepStrictEqual=function e(t,r,n){p(t,r,!0)&&l(t,r,n,"notDeepStrictEqual",e)},_.strictEqual=function(e,t,r){e!==t&&l(e,t,r,"===",_.strictEqual)},_.notStrictEqual=function(e,t,r){e===t&&l(e,t,r,"!==",_.notStrictEqual)},_.throws=function(e,t,r){y(!0,e,t,r)},_.doesNotThrow=function(e,t,r){y(!1,e,t,r)},_.ifError=function(e){if(e)throw e};var T=Object.keys||function(e){var t=[];for(var r in e)m.call(e,r)&&t.push(r);return t}}).call(this,void 0!==r.g?r.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"util/":7}],3:[function(e,t,r){},{}],4:[function(e,t,r){function n(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(l===setTimeout)return setTimeout(e,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(e,0);try{return l(e,0)}catch(t){try{return l.call(null,e,0)}catch(t){return l.call(this,e,0)}}}function o(){y&&h&&(y=!1,h.length?f=h.concat(f):g=-1,f.length&&s())}function s(){if(!y){var e=a(o);y=!0;for(var t=f.length;t;){for(h=f,f=[];++g1)for(var r=1;r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),d(t)?r.showHidden=t:t&&n._extend(r,t),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),s(r,e,r.depth)}function a(e,t){var r=i.styles[t];return r?"["+i.colors[r][0]+"m"+e+"["+i.colors[r][1]+"m":e}function o(e,t){return e}function s(e,t,r){if(e.customInspect&&t&&_(t.inspect)&&t.inspect!==n.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(r,e);return f(i)||(i=s(e,i,r)),i}var a=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(f(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return h(t)?e.stylize(""+t,"number"):d(t)?e.stylize(""+t,"boolean"):p(t)?e.stylize("null","null"):void 0}(e,t);if(a)return a;var o=Object.keys(t),m=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),v(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return c(t);if(0===o.length){if(_(t)){var w=t.name?": "+t.name:"";return e.stylize("[Function"+w+"]","special")}if(g(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(b(t))return e.stylize(Date.prototype.toString.call(t),"date");if(v(t))return c(t)}var T,O="",E=!1,x=["{","}"];return l(t)&&(E=!0,x=["[","]"]),_(t)&&(O=" [Function"+(t.name?": "+t.name:"")+"]"),g(t)&&(O=" "+RegExp.prototype.toString.call(t)),b(t)&&(O=" "+Date.prototype.toUTCString.call(t)),v(t)&&(O=" "+c(t)),0!==o.length||E&&0!=t.length?r<0?g(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),T=E?function(e,t,r,n,i){for(var a=[],o=0,s=t.length;o60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}(T,O,x)):x[0]+O+x[1]}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function u(e,t,r,n,i,a){var o,c,u;if((u=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?c=u.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):u.set&&(c=e.stylize("[Setter]","special")),S(n,i)||(o="["+i+"]"),c||(e.seen.indexOf(u.value)<0?(c=p(r)?s(e,u.value,null):s(e,u.value,r-1)).indexOf("\n")>-1&&(c=a?c.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+c.split("\n").map((function(e){return" "+e})).join("\n")):c=e.stylize("[Circular]","special")),y(o)){if(a&&i.match(/^\d+$/))return c;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+c}function l(e){return Array.isArray(e)}function d(e){return"boolean"==typeof e}function p(e){return null===e}function h(e){return"number"==typeof e}function f(e){return"string"==typeof e}function y(e){return void 0===e}function g(e){return m(e)&&"[object RegExp]"===w(e)}function m(e){return"object"==typeof e&&null!==e}function b(e){return m(e)&&"[object Date]"===w(e)}function v(e){return m(e)&&("[object Error]"===w(e)||e instanceof Error)}function _(e){return"function"==typeof e}function w(e){return Object.prototype.toString.call(e)}function T(e){return e<10?"0"+e.toString(10):e.toString(10)}function S(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var O=/%[sdj%]/g;n.format=function(e){if(!f(e)){for(var t=[],r=0;r=a)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}})),s=n[r];r3&&void 0!==arguments[3]?arguments[3]:1,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){return 1},a=Object.create(Le.prototype);return o(a),M(a,Object.create(Be.prototype),e,t,r,n,i),a}function o(e){e._state="readable",e._reader=void 0,e._storedError=void 0,e._disturbed=!1}function s(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readableStreamController")}function c(e){return void 0!==e._reader}function u(e){return new Promise((function(t,r){var n={_resolve:t,_reject:r};e._reader._readIntoRequests.push(n)}))}function l(e){return new Promise((function(t,r){var n={_resolve:t,_reject:r};e._reader._readRequests.push(n)}))}function d(e,t){return e._disturbed=!0,"closed"===e._state?Promise.resolve(void 0):"errored"===e._state?Promise.reject(e._storedError):(p(e),e._readableStreamController[Ce](t).then((function(){})))}function p(e){e._state="closed";var t=e._reader;if(void 0!==t){if(!0===_(t)){var r=!0,n=!1,i=void 0;try{for(var a,o=t._readRequests[Symbol.iterator]();!(r=(a=o.next()).done);r=!0)(0,a.value._resolve)(de(void 0,!0))}catch(e){n=!0,i=e}finally{try{!r&&o.return&&o.return()}finally{if(n)throw i}}t._readRequests=[]}!function(e){e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}(t)}}function h(e,t){e._state="errored",e._storedError=t;var r=e._reader;if(void 0!==r){if(!0===_(r)){var n=!0,i=!1,a=void 0;try{for(var o,s=r._readRequests[Symbol.iterator]();!(n=(o=s.next()).done);n=!0)o.value._reject(t)}catch(e){i=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(i)throw a}}r._readRequests=[]}else{var c=!0,u=!1,l=void 0;try{for(var d,p=r._readIntoRequests[Symbol.iterator]();!(c=(d=p.next()).done);c=!0)d.value._reject(t)}catch(e){u=!0,l=e}finally{try{!c&&p.return&&p.return()}finally{if(u)throw l}}r._readIntoRequests=[]}re(r,t),r._closedPromise.catch((function(){}))}}function f(e,t,r){e._reader._readRequests.shift()._resolve(de(t,r))}function y(e){return e._reader._readIntoRequests.length}function g(e){return e._reader._readRequests.length}function m(e){var t=e._reader;return void 0!==t&&!1!==v(t)}function b(e){var t=e._reader;return void 0!==t&&!1!==_(t)}function v(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readIntoRequests")}function _(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readRequests")}function w(e,t){e._ownerReadableStream=t,t._reader=e,"readable"===t._state?function(e){e._closedPromise=new Promise((function(t,r){e._closedPromise_resolve=t,e._closedPromise_reject=r}))}(e):"closed"===t._state?function(e){e._closedPromise=Promise.resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}(e):(function(e,t){e._closedPromise=Promise.reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}(e,t._storedError),e._closedPromise.catch((function(){})))}function T(e,t){return d(e._ownerReadableStream,t)}function S(e){"readable"===e._ownerReadableStream._state?re(e,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")):function(e,t){e._closedPromise=Promise.reject(t)}(e,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")),e._closedPromise.catch((function(){})),e._ownerReadableStream._reader=void 0,e._ownerReadableStream=void 0}function O(e,t){var r=e._ownerReadableStream;return r._disturbed=!0,"errored"===r._state?Promise.reject(r._storedError):function(e,t){var r=e._controlledReadableByteStream,n=1;t.constructor!==DataView&&(n=t.constructor.BYTES_PER_ELEMENT);var i=t.constructor,a={buffer:ye(t.buffer),byteOffset:t.byteOffset,byteLength:t.byteLength,bytesFilled:0,elementSize:n,ctor:i,readerType:"byob"};if(e._pendingPullIntos.length>0)return e._pendingPullIntos.push(a),u(r);if("closed"===r._state){var o=new t.constructor(a.buffer,a.byteOffset,0);return Promise.resolve(de(o,!0))}if(e._queueTotalSize>0){if(!0===Q(e,a)){var s=q(a);return H(e),Promise.resolve(de(s,!1))}if(!0===e._closeRequested){var c=new TypeError("Insufficient bytes to fill elements in the given buffer");return J(e,c),Promise.reject(c)}}e._pendingPullIntos.push(a);var l=u(r);return F(e),l}(r._readableStreamController,t)}function E(e){var t=e._ownerReadableStream;return t._disturbed=!0,"closed"===t._state?Promise.resolve(de(void 0,!0)):"errored"===t._state?Promise.reject(t._storedError):t._readableStreamController[Me]()}function x(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledReadableStream")}function A(e){!1!==R(e)&&(!0!==e._pulling?(e._pulling=!0,e._pullAlgorithm().then((function(){if(e._pulling=!1,!0===e._pullAgain)return e._pullAgain=!1,A(e)}),(function(t){D(e,t)})).catch(_e)):e._pullAgain=!0)}function R(e){var t=e._controlledReadableStream;return!1!==C(e)&&!1!==e._started&&(!0===c(t)&&g(t)>0||j(e)>0)}function I(e){var t=e._controlledReadableStream;e._closeRequested=!0,0===e._queue.length&&p(t)}function P(e,t){var r=e._controlledReadableStream;if(!0===c(r)&&g(r)>0)f(r,t,!1);else{var n=void 0;try{n=e._strategySizeAlgorithm(t)}catch(t){throw D(e,t),t}try{Se(e,t,n)}catch(t){throw D(e,t),t}}A(e)}function N(e,t){var r=e._controlledReadableStream;Oe(e),h(r,t)}function D(e,t){"readable"===e._controlledReadableStream._state&&N(e,t)}function j(e){var t=e._controlledReadableStream._state;return"errored"===t?null:"closed"===t?0:e._strategyHWM-e._queueTotalSize}function C(e){var t=e._controlledReadableStream._state;return!1===e._closeRequested&&"readable"===t}function M(e,t,r,n,i,a,o){t._controlledReadableStream=e,t._queue=void 0,t._queueTotalSize=void 0,Oe(t),t._started=!1,t._closeRequested=!1,t._pullAgain=!1,t._pulling=!1,t._strategySizeAlgorithm=o,t._strategyHWM=a,t._pullAlgorithm=n,t._cancelAlgorithm=i,e._readableStreamController=t;var s=r();Promise.resolve(s).then((function(){t._started=!0,A(t)}),(function(e){D(t,e)})).catch(_e)}function L(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledReadableByteStream")}function k(e){return!!ve(e)&&!!Object.prototype.hasOwnProperty.call(e,"_associatedReadableByteStreamController")}function F(e){!1!==function(e){var t=e._controlledReadableByteStream;return"readable"===t._state&&!0!==e._closeRequested&&!1!==e._started&&(!0===b(t)&&g(t)>0||!0===m(t)&&y(t)>0||W(e)>0)}(e)&&(!0!==e._pulling?(e._pulling=!0,e._pullAlgorithm().then((function(){e._pulling=!1,!0===e._pullAgain&&(e._pullAgain=!1,F(e))}),(function(t){"readable"===e._controlledReadableByteStream._state&&J(e,t)})).catch(_e)):e._pullAgain=!0)}function B(e){G(e),e._pendingPullIntos=[]}function U(e,t){var r=!1;"closed"===e._state&&(r=!0);var n=q(t);"default"===t.readerType?f(e,n,r):function(e,t,r){e._reader._readIntoRequests.shift()._resolve(de(t,r))}(e,n,r)}function q(e){var t=e.bytesFilled,r=e.elementSize;return new e.ctor(e.buffer,e.byteOffset,t/r)}function V(e,t,r,n){e._queue.push({buffer:t,byteOffset:r,byteLength:n}),e._queueTotalSize+=n}function Q(e,t){var r=t.elementSize,n=t.bytesFilled-t.bytesFilled%r,i=Math.min(e._queueTotalSize,t.byteLength-t.bytesFilled),a=t.bytesFilled+i,o=a-a%r,s=i,c=!1;o>n&&(s=o-t.bytesFilled,c=!0);for(var u=e._queue;s>0;){var l=u[0],d=Math.min(s,l.byteLength),p=t.byteOffset+t.bytesFilled;ue(t.buffer,p,l.buffer,l.byteOffset,d),l.byteLength===d?u.shift():(l.byteOffset+=d,l.byteLength-=d),e._queueTotalSize-=d,$(e,d,t),s-=d}return c}function $(e,t,r){G(e),r.bytesFilled+=t}function H(e){0===e._queueTotalSize&&!0===e._closeRequested?p(e._controlledReadableByteStream):F(e)}function G(e){void 0!==e._byobRequest&&(e._byobRequest._associatedReadableByteStreamController=void 0,e._byobRequest._view=void 0,e._byobRequest=void 0)}function z(e){for(;e._pendingPullIntos.length>0;){if(0===e._queueTotalSize)return;var t=e._pendingPullIntos[0];!0===Q(e,t)&&(X(e),U(e._controlledReadableByteStream,t))}}function K(e,t){var r=e._pendingPullIntos[0];if("closed"===e._controlledReadableByteStream._state){if(0!==t)throw new TypeError("bytesWritten must be 0 when calling respond() on a closed stream");!function(e,t){t.buffer=ye(t.buffer);var r=e._controlledReadableByteStream;if(!0===m(r))for(;y(r)>0;)U(r,X(e))}(e,r)}else!function(e,t,r){if(r.bytesFilled+t>r.byteLength)throw new RangeError("bytesWritten out of range");if($(e,t,r),!(r.bytesFilled0){var i=r.byteOffset+r.bytesFilled,a=r.buffer.slice(i-n,i);V(e,a,0,a.byteLength)}r.buffer=ye(r.buffer),r.bytesFilled-=n,U(e._controlledReadableByteStream,r),z(e)}}(e,t,r)}function X(e){var t=e._pendingPullIntos.shift();return G(e),t}function J(e,t){var r=e._controlledReadableByteStream;B(e),Oe(e),h(r,t)}function W(e){var t=e._controlledReadableByteStream._state;return"errored"===t?null:"closed"===t?0:e._strategyHWM-e._queueTotalSize}function Y(e,t,r,n,i,a,o){t._controlledReadableByteStream=e,t._pullAgain=!1,t._pulling=!1,B(t),t._queue=t._queueTotalSize=void 0,Oe(t),t._closeRequested=!1,t._started=!1,t._strategyHWM=ge(a),t._pullAlgorithm=n,t._cancelAlgorithm=i,t._autoAllocateChunkSize=o,t._pendingPullIntos=[],e._readableStreamController=t;var s=r();Promise.resolve(s).then((function(){t._started=!0,F(t)}),(function(r){"readable"===e._state&&J(t,r)})).catch(_e)}function Z(e){return new TypeError("ReadableStream.prototype."+e+" can only be used on a ReadableStream")}function ee(e){return new TypeError("Cannot "+e+" a stream using a released reader")}function te(e){return new TypeError("ReadableStreamDefaultReader.prototype."+e+" can only be used on a ReadableStreamDefaultReader")}function re(e,t){e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}function ne(e){return new TypeError("ReadableStreamBYOBReader.prototype."+e+" can only be used on a ReadableStreamBYOBReader")}function ie(e){return new TypeError("ReadableStreamDefaultController.prototype."+e+" can only be used on a ReadableStreamDefaultController")}function ae(e){return new TypeError("ReadableStreamBYOBRequest.prototype."+e+" can only be used on a ReadableStreamBYOBRequest")}function oe(e){return new TypeError("ReadableByteStreamController.prototype."+e+" can only be used on a ReadableByteStreamController")}var se=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.size,a=r.highWaterMark;n(this,e),o(this);var s=t.type;if("bytes"===String(s)){if(void 0===a&&(a=0),a=ge(a),void 0!==i)throw new RangeError("The strategy for a byte stream cannot have a size function");!function(e,t,r){var n=Object.create(qe.prototype),i=le(t,"pull",0,[n]),a=le(t,"cancel",1,[]),o=t.autoAllocateChunkSize;if(void 0!==o&&(!1===Number.isInteger(o)||o<=0))throw new RangeError("autoAllocateChunkSize must be a positive integer");Y(e,n,(function(){return he(t,"start",[n])}),i,a,r,o)}(this,t,a)}else{if(void 0!==s)throw new RangeError("Invalid type is specified");void 0===a&&(a=1),function(e,t,r,n){var i=Object.create(Be.prototype),a=le(t,"pull",0,[i]),o=le(t,"cancel",1,[]);M(e,i,(function(){return he(t,"start",[i])}),a,o,r,n)}(this,t,a=ge(a),me(i))}}return se(e,[{key:"cancel",value:function(e){return!1===s(this)?Promise.reject(Z("cancel")):!0===c(this)?Promise.reject(new TypeError("Cannot cancel a stream that already has a reader")):d(this,e)}},{key:"getReader",value:function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).mode;if(!1===s(this))throw Z("getReader");if(void 0===e)return i(this);if("byob"===(e=String(e)))return function(e){return new Fe(e)}(this);throw new RangeError("Invalid mode is specified")}},{key:"pipeThrough",value:function(e,t){var r=e.writable,n=e.readable;if(void 0===r||void 0===n)throw new TypeError("readable and writable arguments must be defined");return function(e){try{Promise.prototype.then.call(e,void 0,(function(){}))}catch(e){}}(this.pipeTo(r,t)),n}},{key:"pipeTo",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.preventClose,a=r.preventAbort,o=r.preventCancel;if(!1===s(this))return Promise.reject(Z("pipeTo"));if(!1===Ae(e))return Promise.reject(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream"));if(n=Boolean(n),a=Boolean(a),o=Boolean(o),!0===c(this))return Promise.reject(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream"));if(!0===Re(e))return Promise.reject(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream"));var u=i(this),l=xe(e),p=!1,h=Promise.resolve();return new Promise((function(r,i){function s(){var e=h;return h.then((function(){return e!==h?s():void 0}))}function c(e,t,r){"errored"===e._state?r(e._storedError):t.catch(r).catch(_e)}function f(t,r,n){function i(){t().then((function(){return g(r,n)}),(function(e){return g(!0,e)})).catch(_e)}!0!==p&&(p=!0,"writable"===e._state&&!1===je(e)?s().then(i):i())}function y(t,r){!0!==p&&(p=!0,"writable"===e._state&&!1===je(e)?s().then((function(){return g(t,r)})).catch(_e):g(t,r))}function g(e,t){Ne(l),S(u),e?i(t):r(void 0)}if(c(t,u._closedPromise,(function(t){!1===a?f((function(){return Ie(e,t)}),!0,t):y(!0,t)})),c(e,l._closedPromise,(function(e){!1===o?f((function(){return d(t,e)}),!0,e):y(!0,e)})),function(e,t,r){"closed"===e._state?r():t.then(r).catch(_e)}(t,u._closedPromise,(function(){!1===n?f((function(){return Pe(l)})):y()})),!0===je(e)||"closed"===e._state){var m=new TypeError("the destination writable stream closed before all data could be piped to it");!1===o?f((function(){return d(t,m)}),!0,m):y(!0,m)}(function e(){return!0===p?Promise.resolve():l._readyPromise.then((function(){return E(u).then((function(e){var t=e.value;!0!==e.done&&(h=De(l,t).catch((function(){})))}))})).then(e)})().catch((function(e){h=Promise.resolve(),_e(e)}))}))}},{key:"tee",value:function(){if(!1===s(this))throw Z("tee");var e=function(e,t){function r(){return E(o).then((function(e){var t=e.value;if(!0===e.done&&!1===s&&(!1===c&&I(h._readableStreamController),!1===u&&I(f._readableStreamController),s=!0),!0!==s){var r=t,n=t;!1===c&&P(h._readableStreamController,r),!1===u&&P(f._readableStreamController,n)}}))}function n(){}var o=i(e),s=!1,c=!1,u=!1,l=void 0,p=void 0,h=void 0,f=void 0,y=void 0,g=new Promise((function(e){y=e}));return h=a(n,r,(function(t){if(c=!0,l=t,!0===u){var r=be([l,p]),n=d(e,r);y(n)}return g})),f=a(n,r,(function(t){if(u=!0,p=t,!0===c){var r=be([l,p]),n=d(e,r);y(n)}return g})),o._closedPromise.catch((function(e){!0!==s&&(D(h._readableStreamController,e),D(f._readableStreamController,e),s=!0)})),[h,f]}(this);return be(e)}},{key:"locked",get:function(){if(!1===s(this))throw Z("locked");return c(this)}}]),e}();t.exports={CreateReadableByteStream:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,a=Object.create(Le.prototype);return o(a),Y(a,Object.create(qe.prototype),e,t,r,n,i),a},CreateReadableStream:a,ReadableStream:Le,IsReadableStreamDisturbed:function(e){return e._disturbed},ReadableStreamDefaultControllerClose:I,ReadableStreamDefaultControllerEnqueue:P,ReadableStreamDefaultControllerError:N,ReadableStreamDefaultControllerGetDesiredSize:j,ReadableStreamDefaultControllerHasBackpressure:function(e){return!0!==R(e)},ReadableStreamDefaultControllerCanCloseOrEnqueue:C};var ke=function(){function e(t){if(n(this,e),!1===s(t))throw new TypeError("ReadableStreamDefaultReader can only be constructed with a ReadableStream instance");if(!0===c(t))throw new TypeError("This stream has already been locked for exclusive reading by another reader");w(this,t),this._readRequests=[]}return se(e,[{key:"cancel",value:function(e){return!1===_(this)?Promise.reject(te("cancel")):void 0===this._ownerReadableStream?Promise.reject(ee("cancel")):T(this,e)}},{key:"read",value:function(){return!1===_(this)?Promise.reject(te("read")):void 0===this._ownerReadableStream?Promise.reject(ee("read from")):E(this)}},{key:"releaseLock",value:function(){if(!1===_(this))throw te("releaseLock");if(void 0!==this._ownerReadableStream){if(this._readRequests.length>0)throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled");S(this)}}},{key:"closed",get:function(){return!1===_(this)?Promise.reject(te("closed")):this._closedPromise}}]),e}(),Fe=function(){function e(t){if(n(this,e),!s(t))throw new TypeError("ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a byte source");if(!1===L(t._readableStreamController))throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source");if(c(t))throw new TypeError("This stream has already been locked for exclusive reading by another reader");w(this,t),this._readIntoRequests=[]}return se(e,[{key:"cancel",value:function(e){return v(this)?void 0===this._ownerReadableStream?Promise.reject(ee("cancel")):T(this,e):Promise.reject(ne("cancel"))}},{key:"read",value:function(e){return v(this)?void 0===this._ownerReadableStream?Promise.reject(ee("read from")):ArrayBuffer.isView(e)?!0===fe(e.buffer)?Promise.reject(new TypeError("Cannot read into a view onto a detached ArrayBuffer")):0===e.byteLength?Promise.reject(new TypeError("view must have non-zero byteLength")):O(this,e):Promise.reject(new TypeError("view must be an array buffer view")):Promise.reject(ne("read"))}},{key:"releaseLock",value:function(){if(!v(this))throw ne("releaseLock");if(void 0!==this._ownerReadableStream){if(this._readIntoRequests.length>0)throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled");S(this)}}},{key:"closed",get:function(){return v(this)?this._closedPromise:Promise.reject(ne("closed"))}}]),e}(),Be=function(){function e(){throw n(this,e),new TypeError}return se(e,[{key:"close",value:function(){if(!1===x(this))throw ie("close");if(!1===C(this))throw new TypeError("The stream is not in a state that permits close");I(this)}},{key:"enqueue",value:function(e){if(!1===x(this))throw ie("enqueue");if(!1===C(this))throw new TypeError("The stream is not in a state that permits enqueue");return P(this,e)}},{key:"error",value:function(e){if(!1===x(this))throw ie("error");var t=this._controlledReadableStream;if("readable"!==t._state)throw new TypeError("The stream is "+t._state+" and so cannot be errored");N(this,e)}},{key:Ce,value:function(e){return Oe(this),this._cancelAlgorithm(e)}},{key:Me,value:function(){var e=this._controlledReadableStream;if(this._queue.length>0){var t=Te(this);return!0===this._closeRequested&&0===this._queue.length?p(e):A(this),Promise.resolve(de(t,!1))}var r=l(e);return A(this),r}},{key:"desiredSize",get:function(){if(!1===x(this))throw ie("desiredSize");return j(this)}}]),e}(),Ue=function(){function e(){throw n(this,e),new TypeError("ReadableStreamBYOBRequest cannot be used directly")}return se(e,[{key:"respond",value:function(e){if(!1===k(this))throw ae("respond");if(void 0===this._associatedReadableByteStreamController)throw new TypeError("This BYOB request has been invalidated");if(!0===fe(this._view.buffer))throw new TypeError("The BYOB request's buffer has been detached and so cannot be used as a response");!function(e,t){if(t=Number(t),!1===pe(t))throw new RangeError("bytesWritten must be a finite");K(e,t)}(this._associatedReadableByteStreamController,e)}},{key:"respondWithNewView",value:function(e){if(!1===k(this))throw ae("respond");if(void 0===this._associatedReadableByteStreamController)throw new TypeError("This BYOB request has been invalidated");if(!ArrayBuffer.isView(e))throw new TypeError("You can only respond with array buffer views");if(!0===fe(e.buffer))throw new TypeError("The supplied view's buffer has been detached and so cannot be used as a response");!function(e,t){var r=e._pendingPullIntos[0];if(r.byteOffset+r.bytesFilled!==t.byteOffset)throw new RangeError("The region specified by view does not match byobRequest");if(r.byteLength!==t.byteLength)throw new RangeError("The buffer of view has different capacity than byobRequest");r.buffer=t.buffer,K(e,t.byteLength)}(this._associatedReadableByteStreamController,e)}},{key:"view",get:function(){if(!1===k(this))throw ae("view");return this._view}}]),e}(),qe=function(){function e(){throw n(this,e),new TypeError("ReadableByteStreamController constructor cannot be used directly")}return se(e,[{key:"close",value:function(){if(!1===L(this))throw oe("close");if(!0===this._closeRequested)throw new TypeError("The stream has already been closed; do not close it again!");var e=this._controlledReadableByteStream._state;if("readable"!==e)throw new TypeError("The stream (in "+e+" state) is not in the readable state and cannot be closed");!function(e){var t=e._controlledReadableByteStream;if(e._queueTotalSize>0)e._closeRequested=!0;else{if(e._pendingPullIntos.length>0&&e._pendingPullIntos[0].bytesFilled>0){var r=new TypeError("Insufficient bytes to fill elements in the given buffer");throw J(e,r),r}p(t)}}(this)}},{key:"enqueue",value:function(e){if(!1===L(this))throw oe("enqueue");if(!0===this._closeRequested)throw new TypeError("stream is closed or draining");var t=this._controlledReadableByteStream._state;if("readable"!==t)throw new TypeError("The stream (in "+t+" state) is not in the readable state and cannot be enqueued to");if(!ArrayBuffer.isView(e))throw new TypeError("You can only enqueue array buffer views when using a ReadableByteStreamController");if(!0===fe(e.buffer))throw new TypeError("Cannot enqueue a view onto a detached ArrayBuffer");!function(e,t){var r=e._controlledReadableByteStream,n=t.buffer,i=t.byteOffset,a=t.byteLength,o=ye(n);!0===b(r)?0===g(r)?V(e,o,i,a):f(r,new Uint8Array(o,i,a),!1):!0===m(r)?(V(e,o,i,a),z(e)):V(e,o,i,a)}(this,e)}},{key:"error",value:function(e){if(!1===L(this))throw oe("error");var t=this._controlledReadableByteStream;if("readable"!==t._state)throw new TypeError("The stream is "+t._state+" and so cannot be errored");J(this,e)}},{key:Ce,value:function(e){return this._pendingPullIntos.length>0&&(this._pendingPullIntos[0].bytesFilled=0),Oe(this),this._cancelAlgorithm(e)}},{key:Me,value:function(){var e=this._controlledReadableByteStream;if(this._queueTotalSize>0){var t=this._queue.shift();this._queueTotalSize-=t.byteLength,H(this);var r=void 0;try{r=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}catch(e){return Promise.reject(e)}return Promise.resolve(de(r,!1))}var n=this._autoAllocateChunkSize;if(void 0!==n){var i=void 0;try{i=new ArrayBuffer(n)}catch(e){return Promise.reject(e)}var a={buffer:i,byteOffset:0,byteLength:n,bytesFilled:0,elementSize:1,ctor:Uint8Array,readerType:"default"};this._pendingPullIntos.push(a)}var o=l(e);return F(this),o}},{key:"byobRequest",get:function(){if(!1===L(this))throw oe("byobRequest");if(void 0===this._byobRequest&&this._pendingPullIntos.length>0){var e=this._pendingPullIntos[0],t=new Uint8Array(e.buffer,e.byteOffset+e.bytesFilled,e.byteLength-e.bytesFilled),r=Object.create(Ue.prototype);(function(e,t,r){e._associatedReadableByteStreamController=t,e._view=r})(r,this,t),this._byobRequest=r}return this._byobRequest}},{key:"desiredSize",get:function(){if(!1===L(this))throw oe("desiredSize");return W(this)}}]),e}()},{"./helpers.js":10,"./queue-with-sizes.js":11,"./utils.js":14,"./writable-stream.js":15,"better-assert":16}],13:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t,r,n,i,a){function u(){return t}e._writable=D(u,(function(t){return function(e,t){y("TransformStreamDefaultSinkWriteAlgorithm()");var r=e._transformStreamController;return!0===e._backpressure?e._backpressureChangePromise.then((function(){var n=e._writable;if("erroring"===n._state)throw n._storedError;return r._transformAlgorithm(t)})):r._transformAlgorithm(t)}(e,t)}),(function(){return function(e){y("TransformStreamDefaultSinkCloseAlgorithm()");var t=e._readable;return e._transformStreamController._flushAlgorithm().then((function(){if("errored"===t._state)throw t._storedError;var e=t._readableStreamController;!0===P(e)&&E(e)})).catch((function(r){throw o(e,r),t._storedError}))}(e)}),(function(){return function(e){return o(e,new TypeError("Writable side aborted")),Promise.resolve()}(e)}),r,n),e._readable=O(u,(function(){return function(e){return y("TransformStreamDefaultSourcePullAlgorithm()"),c(e,!1),e._backpressureChangePromise}(e)}),(function(t){return s(e,t),Promise.resolve()}),i,a),e._backpressure=void 0,e._backpressureChangePromise=void 0,e._backpressureChangePromise_resolve=void 0,c(e,!0),e._transformStreamController=void 0}function a(e){return!!_(e)&&!!Object.prototype.hasOwnProperty.call(e,"_transformStreamController")}function o(e,t){y("TransformStreamError()"),"readable"===e._readable._state&&A(e._readable._readableStreamController,t),s(e,t)}function s(e,t){j(e._writable._writableStreamController,t),!0===e._backpressure&&c(e,!1)}function c(e,t){y("TransformStreamSetBackpressure() [backpressure = "+t+"]"),void 0!==e._backpressureChangePromise&&e._backpressureChangePromise_resolve(),e._backpressureChangePromise=new Promise((function(t){e._backpressureChangePromise_resolve=t})),e._backpressure=t}function u(e){return!!_(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledTransformStream")}function l(e,t,r,n){t._controlledTransformStream=e,e._transformStreamController=t,t._transformAlgorithm=r,t._flushAlgorithm=n}function d(e,t){y("TransformStreamDefaultControllerEnqueue()");var r=e._controlledTransformStream,n=r._readable._readableStreamController;if(!1===P(n))throw new TypeError("Readable side is not in a state that permits enqueue");try{x(n,t)}catch(e){throw s(r,e),r._readable._storedError}I(n)!==r._backpressure&&c(r,!0)}function p(e){return new TypeError("TransformStreamDefaultController.prototype."+e+" can only be used on a TransformStreamDefaultController")}function h(e){return new TypeError("TransformStream.prototype."+e+" can only be used on a TransformStream")}var f=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(n(this,e),void 0!==t.readableType)throw new RangeError("Invalid readable type specified");if(void 0!==t.writableType)throw new RangeError("Invalid writable type specified");var s=r.size,c=T(s),u=r.highWaterMark;void 0===u&&(u=1),u=w(u);var p=a.size,h=T(p),f=a.highWaterMark;void 0===f&&(f=0),f=w(f);var y=void 0;i(this,new Promise((function(e){y=e})),u,c,f,h),function(e,t){var r=Object.create(M.prototype),n=function(e){try{return d(r,e),Promise.resolve()}catch(e){return Promise.reject(e)}},i=t.transform;if(void 0!==i){if("function"!=typeof i)throw new TypeError("transform is not a method");n=function(n){return v(i,t,[n,r]).catch((function(t){throw o(e,t),t}))}}var a=b(t,"flush",0,[r]);l(e,r,n,a)}(this,t);var g=m(t,"start",[this._transformStreamController]);y(g)}return f(e,[{key:"readable",get:function(){if(!1===a(this))throw h("readable");return this._readable}},{key:"writable",get:function(){if(!1===a(this))throw h("writable");return this._writable}}]),e}(),M=function(){function e(){throw n(this,e),new TypeError("TransformStreamDefaultController instances cannot be created directly")}return f(e,[{key:"enqueue",value:function(e){if(!1===u(this))throw p("enqueue");d(this,e)}},{key:"error",value:function(e){if(!1===u(this))throw p("error");!function(e,t){o(e._controlledTransformStream,t)}(this,e)}},{key:"terminate",value:function(){if(!1===u(this))throw p("terminate");!function(e){y("TransformStreamDefaultControllerTerminate()");var t=e._controlledTransformStream,r=t._readable._readableStreamController;!0===P(r)&&E(r),s(t,new TypeError("TransformStream terminated"))}(this)}},{key:"desiredSize",get:function(){if(!1===u(this))throw p("desiredSize");var e=this._controlledTransformStream._readable._readableStreamController;return R(e)}}]),e}();t.exports={CreateTransformStream:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){return 1},o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:function(){return 1},c=Object.create(C.prototype),u=void 0;i(c,new Promise((function(e){u=e})),n,a,o,s),l(c,Object.create(M.prototype),t,r);var d=e();return u(d),c},TransformStream:C}},{"./helpers.js":10,"./readable-stream.js":12,"./writable-stream.js":15,"better-assert":16,debug:18}],14:[function(e,t,r){"use strict";var n=e("better-assert");r.rethrowAssertionErrorRejection=function(e){e&&e.constructor===n.AssertionError&&setTimeout((function(){throw e}),0)}},{"better-assert":16}],15:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e){return new Y(e)}function a(e){e._state="writable",e._storedError=void 0,e._writer=void 0,e._writableStreamController=void 0,e._writeRequests=[],e._inFlightWriteRequest=void 0,e._closeRequest=void 0,e._inFlightCloseRequest=void 0,e._pendingAbortRequest=void 0,e._backpressure=!1}function o(e){return!!V(e)&&!!Object.prototype.hasOwnProperty.call(e,"_writableStreamController")}function s(e){return void 0!==e._writer}function c(e,t){var r=e._state;if("closed"===r)return Promise.resolve(void 0);if("errored"===r)return Promise.reject(e._storedError);var n=new TypeError("Requested to abort");if(void 0!==e._pendingAbortRequest)return Promise.reject(n);var i=!1;"erroring"===r&&(i=!0,t=void 0);var a=new Promise((function(r,n){e._pendingAbortRequest={_resolve:r,_reject:n,_reason:t,_wasAlreadyErroring:i}}));return!1===i&&l(e,n),a}function u(e,t){L("WritableStreamDealWithRejection(stream, %o)",t),"writable"!==e._state?d(e):l(e,t)}function l(e,t){L("WritableStreamStartErroring(stream, %o)",t);var r=e._writableStreamController;e._state="erroring",e._storedError=t;var n=e._writer;void 0!==n&&b(n,t),!1===function(e){return void 0===e._inFlightWriteRequest&&void 0===e._inFlightCloseRequest?(L("WritableStreamHasOperationMarkedInFlight() is false"),!1):(L("WritableStreamHasOperationMarkedInFlight() is true"),!0)}(e)&&!0===r._started&&d(e)}function d(e){L("WritableStreamFinishErroring()"),e._state="errored",e._writableStreamController[J]();var t=e._storedError,r=!0,n=!1,i=void 0;try{for(var a,o=e._writeRequests[Symbol.iterator]();!(r=(a=o.next()).done);r=!0)a.value._reject(t)}catch(e){n=!0,i=e}finally{try{!r&&o.return&&o.return()}finally{if(n)throw i}}if(e._writeRequests=[],void 0!==e._pendingAbortRequest){var s=e._pendingAbortRequest;if(e._pendingAbortRequest=void 0,!0===s._wasAlreadyErroring)return s._reject(t),void h(e);e._writableStreamController[X](s._reason).then((function(){s._resolve(),h(e)}),(function(t){s._reject(t),h(e)}))}else h(e)}function p(e){return void 0!==e._closeRequest||void 0!==e._inFlightCloseRequest}function h(e){L("WritableStreamRejectCloseAndClosedPromiseIfNeeded()"),void 0!==e._closeRequest&&(e._closeRequest._reject(e._storedError),e._closeRequest=void 0);var t=e._writer;void 0!==t&&(N(t,e._storedError),t._closedPromise.catch((function(){})))}function f(e,t){var r=e._writer;void 0!==r&&t!==e._backpressure&&(!0===t?function(e){L("defaultWriterReadyPromiseReset()"),e._readyPromise=new Promise((function(t,r){e._readyPromise_resolve=t,e._readyPromise_reject=r})),e._readyPromiseState="pending"}(r):C(r)),e._backpressure=t}function y(e){return!!V(e)&&!!Object.prototype.hasOwnProperty.call(e,"_ownerWritableStream")}function g(e){var t=e._ownerWritableStream,r=t._state;if("closed"===r||"errored"===r)return Promise.reject(new TypeError("The stream (in "+r+" state) is not in the writable state and cannot be closed"));var n=new Promise((function(e,r){var n={_resolve:e,_reject:r};t._closeRequest=n}));return!0===t._backpressure&&"writable"===r&&C(e),function(e){G(e,"close",0),S(e)}(t._writableStreamController),n}function m(e,t){"pending"===e._closedPromiseState?N(e,t):function(e,t){e._closedPromise=Promise.reject(t),e._closedPromiseState="rejected"}(e,t),e._closedPromise.catch((function(){}))}function b(e,t){L("WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, %o)",t),"pending"===e._readyPromiseState?function(e,t){L("defaultWriterReadyPromiseReject(writer, %o)",t),e._readyPromise_reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="rejected"}(e,t):function(e,t){L("defaultWriterReadyPromiseResetToRejected(writer, %o)",t),e._readyPromise=Promise.reject(t),e._readyPromiseState="rejected"}(e,t),e._readyPromise.catch((function(){}))}function v(e){var t=e._ownerWritableStream,r=new TypeError("Writer was released and can no longer be used to monitor the stream's closedness");b(e,r),m(e,r),t._writer=void 0,e._ownerWritableStream=void 0}function _(e,t){var r=e._ownerWritableStream,n=r._writableStreamController,i=function(e,t){try{return e._strategySizeAlgorithm(t)}catch(t){return O(e,t),1}}(n,t);if(r!==e._ownerWritableStream)return Promise.reject(I("write to"));var a=r._state;if("errored"===a)return Promise.reject(r._storedError);if(!0===p(r)||"closed"===a)return Promise.reject(new TypeError("The stream is closing or closed and cannot be written to"));if("erroring"===a)return Promise.reject(r._storedError);var o=function(e){return new Promise((function(t,r){var n={_resolve:t,_reject:r};e._writeRequests.push(n)}))}(r);return function(e,t,r){var n={chunk:t};try{G(e,n,r)}catch(t){return void O(e,t)}var i=e._controlledWritableStream;!1===p(i)&&"writable"===i._state&&f(i,E(e)),S(e)}(n,t,i),o}function w(e,t,r,n,i,a,o,s){t._controlledWritableStream=e,e._writableStreamController=t,t._queue=void 0,t._queueTotalSize=void 0,K(t),t._started=!1,t._strategySizeAlgorithm=s,t._strategyHWM=o,t._writeAlgorithm=n,t._closeAlgorithm=i,t._abortAlgorithm=a;var c=E(t);f(e,c);var l=r();Promise.resolve(l).then((function(){t._started=!0,S(t)}),(function(r){t._started=!0,u(e,r)})).catch(Q)}function T(e){return e._strategyHWM-e._queueTotalSize}function S(e){L("WritableStreamDefaultControllerAdvanceQueueIfNeeded()");var t=e._controlledWritableStream;if(!1!==e._started&&void 0===t._inFlightWriteRequest){var r=t._state;if("closed"!==r&&"errored"!==r)if("erroring"!==r){if(0!==e._queue.length){var n=z(e);"close"===n?function(e){var t=e._controlledWritableStream;(function(e){e._inFlightCloseRequest=e._closeRequest,e._closeRequest=void 0})(t),H(e),e._closeAlgorithm().then((function(){!function(e){e._inFlightCloseRequest._resolve(void 0),e._inFlightCloseRequest=void 0,"erroring"===e._state&&(e._storedError=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._resolve(),e._pendingAbortRequest=void 0)),e._state="closed";var t=e._writer;void 0!==t&&function(e){e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="resolved"}(t)}(t)}),(function(e){!function(e,t){e._inFlightCloseRequest._reject(t),e._inFlightCloseRequest=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._reject(t),e._pendingAbortRequest=void 0),u(e,t)}(t,e)})).catch(Q)}(e):function(e,t){var r=e._controlledWritableStream;(function(e){e._inFlightWriteRequest=e._writeRequests.shift()})(r),e._writeAlgorithm(t).then((function(){!function(e){e._inFlightWriteRequest._resolve(void 0),e._inFlightWriteRequest=void 0}(r);var t=r._state;if(H(e),!1===p(r)&&"writable"===t){var n=E(e);f(r,n)}S(e)}),(function(e){!function(e,t){e._inFlightWriteRequest._reject(t),e._inFlightWriteRequest=void 0,u(e,t)}(r,e)})).catch(Q)}(e,n.chunk)}}else d(t)}}function O(e,t){"writable"===e._controlledWritableStream._state&&x(e,t)}function E(e){return T(e)<=0}function x(e,t){l(e._controlledWritableStream,t)}function A(e){return new TypeError("WritableStream.prototype."+e+" can only be used on a WritableStream")}function R(e){return new TypeError("WritableStreamDefaultWriter.prototype."+e+" can only be used on a WritableStreamDefaultWriter")}function I(e){return new TypeError("Cannot "+e+" a stream using a released writer")}function P(e){e._closedPromise=new Promise((function(t,r){e._closedPromise_resolve=t,e._closedPromise_reject=r,e._closedPromiseState="pending"}))}function N(e,t){e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="rejected"}function D(e,t){L("defaultWriterReadyPromiseInitializeAsRejected(writer, %o)",t),e._readyPromise=Promise.reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="rejected"}function j(e){L("defaultWriterReadyPromiseInitializeAsResolved()"),e._readyPromise=Promise.resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="fulfilled"}function C(e){L("defaultWriterReadyPromiseResolve()"),e._readyPromise_resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="fulfilled"}var M=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.size,o=r.highWaterMark,s=void 0===o?1:o;if(n(this,e),a(this),void 0!==t.type)throw new RangeError("Invalid type is specified");var c=q(i);!function(e,t,r,n){var i=Object.create(Z.prototype),a=F(t,"write",1,[i]),o=F(t,"close",0,[]),s=F(t,"abort",1,[]);w(e,i,(function(){return B(t,"start",[i])}),a,o,s,r,n)}(this,t,s=U(s),c)}return M(e,[{key:"abort",value:function(e){return!1===o(this)?Promise.reject(A("abort")):!0===s(this)?Promise.reject(new TypeError("Cannot abort a stream that already has a writer")):c(this,e)}},{key:"getWriter",value:function(){if(!1===o(this))throw A("getWriter");return i(this)}},{key:"locked",get:function(){if(!1===o(this))throw A("locked");return s(this)}}]),e}();t.exports={AcquireWritableStreamDefaultWriter:i,CreateWritableStream:function(e,t,r,n){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:function(){return 1},s=Object.create(W.prototype);return a(s),w(s,Object.create(Z.prototype),e,t,r,n,i,o),s},IsWritableStream:o,IsWritableStreamLocked:s,WritableStream:W,WritableStreamAbort:c,WritableStreamDefaultControllerErrorIfNeeded:O,WritableStreamDefaultWriterCloseWithErrorPropagation:function(e){var t=e._ownerWritableStream,r=t._state;return!0===p(t)||"closed"===r?Promise.resolve():"errored"===r?Promise.reject(t._storedError):g(e)},WritableStreamDefaultWriterRelease:v,WritableStreamDefaultWriterWrite:_,WritableStreamCloseQueuedOrInFlight:p};var Y=function(){function e(t){if(n(this,e),!1===o(t))throw new TypeError("WritableStreamDefaultWriter can only be constructed with a WritableStream instance");if(!0===s(t))throw new TypeError("This stream has already been locked for exclusive writing by another writer");this._ownerWritableStream=t,t._writer=this;var r=t._state;if("writable"===r)!1===p(t)&&!0===t._backpressure?function(e){L("defaultWriterReadyPromiseInitialize()"),e._readyPromise=new Promise((function(t,r){e._readyPromise_resolve=t,e._readyPromise_reject=r})),e._readyPromiseState="pending"}(this):j(this),P(this);else if("erroring"===r)D(this,t._storedError),this._readyPromise.catch((function(){})),P(this);else if("closed"===r)j(this),function(e){e._closedPromise=Promise.resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="resolved"}(this);else{var i=t._storedError;D(this,i),this._readyPromise.catch((function(){})),function(e,t){e._closedPromise=Promise.reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="rejected"}(this,i),this._closedPromise.catch((function(){}))}}return M(e,[{key:"abort",value:function(e){return!1===y(this)?Promise.reject(R("abort")):void 0===this._ownerWritableStream?Promise.reject(I("abort")):function(e,t){return c(e._ownerWritableStream,t)}(this,e)}},{key:"close",value:function(){if(!1===y(this))return Promise.reject(R("close"));var e=this._ownerWritableStream;return void 0===e?Promise.reject(I("close")):!0===p(e)?Promise.reject(new TypeError("cannot close an already-closing stream")):g(this)}},{key:"releaseLock",value:function(){if(!1===y(this))throw R("releaseLock");void 0!==this._ownerWritableStream&&v(this)}},{key:"write",value:function(e){return!1===y(this)?Promise.reject(R("write")):void 0===this._ownerWritableStream?Promise.reject(I("write to")):_(this,e)}},{key:"closed",get:function(){return!1===y(this)?Promise.reject(R("closed")):this._closedPromise}},{key:"desiredSize",get:function(){if(!1===y(this))throw R("desiredSize");if(void 0===this._ownerWritableStream)throw I("desiredSize");return e=this._ownerWritableStream,"errored"===(t=e._state)||"erroring"===t?null:"closed"===t?0:T(e._writableStreamController);var e,t}},{key:"ready",get:function(){return!1===y(this)?Promise.reject(R("ready")):this._readyPromise}}]),e}(),Z=function(){function e(){throw n(this,e),new TypeError("WritableStreamDefaultController cannot be constructed explicitly")}return M(e,[{key:"error",value:function(e){if(!1===function(e){return!!V(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledWritableStream")}(this))throw new TypeError("WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController");"writable"===this._controlledWritableStream._state&&x(this,e)}},{key:X,value:function(e){return this._abortAlgorithm(e)}},{key:J,value:function(){K(this)}}]),e}()},{"./helpers.js":10,"./queue-with-sizes.js":11,"./utils.js":14,"better-assert":16,debug:18}],16:[function(e,t,r){(function(r){var n=e("assert").AssertionError,i=e("callsite"),a=e("fs");t.exports=r.env.NO_ASSERT?function(){}:function(e){if(!e){var t=i(),r=t[1],o=r.getFileName(),s=r.getLineNumber(),c=(c=a.readFileSync(o,"utf8")).split("\n")[s-1].match(/assert\((.*)\)/)[1];throw new n({message:c,stackStartFunction:t[0].getFunction()})}}}).call(this,e("_process"))},{_process:4,assert:2,callsite:17,fs:3}],17:[function(e,t,r){t.exports=function(){var e=Error.prepareStackTrace;Error.prepareStackTrace=function(e,t){return t};var t=new Error;Error.captureStackTrace(t,arguments.callee);var r=t.stack;return Error.prepareStackTrace=e,r}},{}],18:[function(e,t,r){(function(n){function i(){var e;try{e=r.storage.debug}catch(e){}return!e&&void 0!==n&&"env"in n&&(e=n.env.DEBUG),e}(r=t.exports=e("./debug")).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},r.formatArgs=function(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+r.humanize(this.diff),t){var n="color: "+this.color;e.splice(1,0,n,"color: inherit");var i=0,a=0;e[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(i++,"%c"===e&&(a=i))})),e.splice(a,0,n)}},r.save=function(e){try{null==e?r.storage.removeItem("debug"):r.storage.debug=e}catch(e){}},r.load=i,r.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},r.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),r.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],r.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},r.enable(i())}).call(this,e("_process"))},{"./debug":19,_process:4}],19:[function(e,t,r){function n(e){function t(){if(t.enabled){var e=t,i=+new Date,a=i-(n||i);e.diff=a,e.prev=n,e.curr=i,n=i;for(var o=new Array(arguments.length),s=0;s100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return r*d;case"days":case"day":case"d":return r*l;case"hours":case"hour":case"hrs":case"hr":case"h":return r*u;case"minutes":case"minute":case"mins":case"min":case"m":return r*c;case"seconds":case"second":case"secs":case"sec":case"s":return r*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function i(e){return e>=l?Math.round(e/l)+"d":e>=u?Math.round(e/u)+"h":e>=c?Math.round(e/c)+"m":e>=s?Math.round(e/s)+"s":e+"ms"}function a(e){return o(e,l,"day")||o(e,u,"hour")||o(e,c,"minute")||o(e,s,"second")||e+" ms"}function o(e,t,r){if(!(e0)return n(e);if("number"===r&&!1===isNaN(e))return t.long?a(e):i(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},{}]},{},[1])(1)},94824:(e,t)=>{"use strict";function r(e){return e>=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}Object.defineProperty(t,"__esModule",{value:!0}),t.CHAR="\t\n\r -퟿-�𐀀-􏿿",t.S=" \t\r\n",t.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",t.NAME_CHAR="-"+t.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",t.CHAR_RE=new RegExp("^["+t.CHAR+"]$","u"),t.S_RE=new RegExp("^["+t.S+"]+$","u"),t.NAME_START_CHAR_RE=new RegExp("^["+t.NAME_START_CHAR+"]$","u"),t.NAME_CHAR_RE=new RegExp("^["+t.NAME_CHAR+"]$","u"),t.NAME_RE=new RegExp("^["+t.NAME_START_CHAR+"]["+t.NAME_CHAR+"]*$","u"),t.NMTOKEN_RE=new RegExp("^["+t.NAME_CHAR+"]+$","u"),t.S_LIST=[32,10,13,9],t.isChar=function(e){return e>=32&&e<=55295||10===e||13===e||9===e||e>=57344&&e<=65533||e>=65536&&e<=1114111},t.isS=function(e){return 32===e||10===e||13===e||9===e},t.isNameStartChar=r,t.isNameChar=function(e){return r(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},30718:(e,t)=>{"use strict";function r(e){return e>=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}Object.defineProperty(t,"__esModule",{value:!0}),t.CHAR="-퟿-�𐀀-􏿿",t.RESTRICTED_CHAR="-\b\v\f--„†-Ÿ",t.S=" \t\r\n",t.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",t.NAME_CHAR="-"+t.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",t.CHAR_RE=new RegExp("^["+t.CHAR+"]$","u"),t.RESTRICTED_CHAR_RE=new RegExp("^["+t.RESTRICTED_CHAR+"]$","u"),t.S_RE=new RegExp("^["+t.S+"]+$","u"),t.NAME_START_CHAR_RE=new RegExp("^["+t.NAME_START_CHAR+"]$","u"),t.NAME_CHAR_RE=new RegExp("^["+t.NAME_CHAR+"]$","u"),t.NAME_RE=new RegExp("^["+t.NAME_START_CHAR+"]["+t.NAME_CHAR+"]*$","u"),t.NMTOKEN_RE=new RegExp("^["+t.NAME_CHAR+"]+$","u"),t.S_LIST=[32,10,13,9],t.isChar=function(e){return e>=1&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111},t.isRestrictedChar=function(e){return e>=1&&e<=8||11===e||12===e||e>=14&&e<=31||e>=127&&e<=132||e>=134&&e<=159},t.isCharAndNotRestricted=function(e){return 9===e||10===e||13===e||e>31&&e<127||133===e||e>159&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111},t.isS=function(e){return 32===e||10===e||13===e||9===e},t.isNameStartChar=r,t.isNameChar=function(e){return r(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},26457:(e,t)=>{"use strict";function r(e){return e>=65&&e<=90||95===e||e>=97&&e<=122||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}Object.defineProperty(t,"__esModule",{value:!0}),t.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",t.NC_NAME_CHAR="-"+t.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",t.NC_NAME_START_CHAR_RE=new RegExp("^["+t.NC_NAME_START_CHAR+"]$","u"),t.NC_NAME_CHAR_RE=new RegExp("^["+t.NC_NAME_CHAR+"]$","u"),t.NC_NAME_RE=new RegExp("^["+t.NC_NAME_START_CHAR+"]["+t.NC_NAME_CHAR+"]*$","u"),t.isNCNameStartChar=r,t.isNCNameChar=function(e){return r(e)||45===e||46===e||e>=48&&e<=57||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},20512:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Util=t.toSparqlJs=t.toSparql=t.Factory=t.Algebra=t.translate=void 0;const s=o(r(77947));t.translate=s.default;const c=a(r(1616));t.Algebra=c;const u=o(r(95962));t.Factory=u.default;const l=r(80619);Object.defineProperty(t,"toSparql",{enumerable:!0,get:function(){return l.toSparql}}),Object.defineProperty(t,"toSparqlJs",{enumerable:!0,get:function(){return l.toSparqlJs}});const d=o(r(84238));t.Util=d.default},1616:(e,t)=>{"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),t.expressionTypes=t.types=void 0,(n=t.types||(t.types={})).ALT="alt",n.ASK="ask",n.BGP="bgp",n.CONSTRUCT="construct",n.DESCRIBE="describe",n.DISTINCT="distinct",n.EXPRESSION="expression",n.EXTEND="extend",n.FILTER="filter",n.FROM="from",n.GRAPH="graph",n.GROUP="group",n.INV="inv",n.JOIN="join",n.LEFT_JOIN="leftjoin",n.LINK="link",n.MINUS="minus",n.NOP="nop",n.NPS="nps",n.ONE_OR_MORE_PATH="OneOrMorePath",n.ORDER_BY="orderby",n.PATH="path",n.PATTERN="pattern",n.PROJECT="project",n.REDUCED="reduced",n.SEQ="seq",n.SERVICE="service",n.SLICE="slice",n.UNION="union",n.VALUES="values",n.ZERO_OR_MORE_PATH="ZeroOrMorePath",n.ZERO_OR_ONE_PATH="ZeroOrOnePath",n.COMPOSITE_UPDATE="compositeupdate",n.DELETE_INSERT="deleteinsert",n.LOAD="load",n.CLEAR="clear",n.CREATE="create",n.DROP="drop",n.ADD="add",n.MOVE="move",n.COPY="copy",(r=t.expressionTypes||(t.expressionTypes={})).AGGREGATE="aggregate",r.EXISTENCE="existence",r.NAMED="named",r.OPERATOR="operator",r.TERM="term",r.WILDCARD="wildcard"},95962:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const o=a(r(1616)),s=r(18050),c=r(22112),u=r(55403);t.default=class{constructor(e){this.dataFactory=e||new s.DataFactory,this.stringType=this.createTerm("http://www.w3.org/2001/XMLSchema#string")}createAlt(e,t=!0){return this.flattenMulti({type:o.types.ALT,input:e},t)}createAsk(e){return{type:o.types.ASK,input:e}}createBoundAggregate(e,t,r,n,i){const a=this.createAggregateExpression(t,r,n,i);return a.variable=e,a}createBgp(e){return{type:o.types.BGP,patterns:e}}createConstruct(e,t){return{type:o.types.CONSTRUCT,input:e,template:t}}createDescribe(e,t){return{type:o.types.DESCRIBE,input:e,terms:t}}createDistinct(e){return{type:o.types.DISTINCT,input:e}}createExtend(e,t,r){return{type:o.types.EXTEND,input:e,variable:t,expression:r}}createFrom(e,t,r){return{type:o.types.FROM,input:e,default:t,named:r}}createFilter(e,t){return{type:o.types.FILTER,input:e,expression:t}}createGraph(e,t){return{type:o.types.GRAPH,input:e,name:t}}createGroup(e,t,r){return{type:o.types.GROUP,input:e,variables:t,aggregates:r}}createInv(e){return{type:o.types.INV,path:e}}createJoin(e,t=!0){return this.flattenMulti({type:o.types.JOIN,input:e},t)}createLeftJoin(e,t,r){return r?{type:o.types.LEFT_JOIN,input:[e,t],expression:r}:{type:o.types.LEFT_JOIN,input:[e,t]}}createLink(e){return{type:o.types.LINK,iri:e}}createMinus(e,t){return{type:o.types.MINUS,input:[e,t]}}createNop(){return{type:o.types.NOP}}createNps(e){return{type:o.types.NPS,iris:e}}createOneOrMorePath(e){return{type:o.types.ONE_OR_MORE_PATH,path:e}}createOrderBy(e,t){return{type:o.types.ORDER_BY,input:e,expressions:t}}createPath(e,t,r,n){return n?{type:o.types.PATH,subject:e,predicate:t,object:r,graph:n}:{type:o.types.PATH,subject:e,predicate:t,object:r,graph:this.dataFactory.defaultGraph()}}createPattern(e,t,r,n){const i=this.dataFactory.quad(e,t,r,n);return i.type=o.types.PATTERN,i}createProject(e,t){return{type:o.types.PROJECT,input:e,variables:t}}createReduced(e){return{type:o.types.REDUCED,input:e}}createSeq(e,t=!0){return this.flattenMulti({type:o.types.SEQ,input:e},t)}createService(e,t,r){return{type:o.types.SERVICE,input:e,name:t,silent:Boolean(r)}}createSlice(e,t,r){return t=t||0,void 0!==r?{type:o.types.SLICE,input:e,start:t,length:r}:{type:o.types.SLICE,input:e,start:t}}createUnion(e,t=!0){return this.flattenMulti({type:o.types.UNION,input:e},t)}createValues(e,t){return{type:o.types.VALUES,variables:e,bindings:t}}createZeroOrMorePath(e){return{type:o.types.ZERO_OR_MORE_PATH,path:e}}createZeroOrOnePath(e){return{type:o.types.ZERO_OR_ONE_PATH,path:e}}createAggregateExpression(e,t,r,n){return n?{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,separator:n,distinct:r}:{type:o.types.EXPRESSION,expressionType:o.expressionTypes.AGGREGATE,aggregator:e,expression:t,distinct:r}}createExistenceExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.EXISTENCE,not:e,input:t}}createNamedExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.NAMED,name:e,args:t}}createOperatorExpression(e,t){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.OPERATOR,operator:e,args:t}}createTermExpression(e){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.TERM,term:e}}createWildcardExpression(){return{type:o.types.EXPRESSION,expressionType:o.expressionTypes.WILDCARD,wildcard:new u.Wildcard}}createTerm(e){return"$"===e[0]&&(e=e.replace("$","?")),(0,c.stringToTerm)(e,this.dataFactory)}createCompositeUpdate(e){return{type:o.types.COMPOSITE_UPDATE,updates:e}}createDeleteInsert(e,t,r){const n={type:o.types.DELETE_INSERT};return e&&(n.delete=e),t&&(n.insert=t),r&&(n.where=r),n}createLoad(e,t,r){const n={type:o.types.LOAD,source:e};return t&&(n.destination=t),this.addSilent(n,Boolean(r))}createClear(e,t){return this.addSilent({type:o.types.CLEAR,source:e},Boolean(t))}createCreate(e,t){return this.addSilent({type:o.types.CREATE,source:e},Boolean(t))}createDrop(e,t){return this.addSilent({type:o.types.DROP,source:e},Boolean(t))}createAdd(e,t,r){return this.addSilent({type:o.types.ADD,source:e,destination:t},Boolean(r))}createMove(e,t,r){return this.addSilent({type:o.types.MOVE,source:e,destination:t},Boolean(r))}createCopy(e,t,r){return this.addSilent({type:o.types.COPY,source:e,destination:t},Boolean(r))}addSilent(e,t){return t&&(e.silent=t),e}flattenMulti(e,t){if(!t)return e;const r=e.type,n=e.input;let i=[];for(const e of n)e.type===r?i.push(...e.input):i.push(e);return e.input=i,e}}},80619:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.toSparqlJs=t.toSparql=void 0;const s=r(91032),c=r(22112),u=r(55403),l=a(r(1616)),d=o(r(95962)),p=o(r(84238)),h=l.types,f=l.expressionTypes;let y;const g=new d.default;function m(e){b();let t=v(e=function(e){return D(e,[])}(e));return"group"===t.type?t.patterns[0]:t}function b(){y={project:!1,extend:[],group:[],aggregates:[],order:[]}}function v(e){switch(e.type!==h.EXTEND&&e.type!==h.ORDER_BY&&e.type!==h.GRAPH&&(y.project=!1),e.type){case h.EXPRESSION:return _(e);case h.ASK:return A(e,h.ASK);case h.BGP:return function(e){let t=e.patterns.map(E);return 0===t.length?null:{type:"bgp",triples:t}}(e);case h.CONSTRUCT:return function(e){return{type:"query",prefixes:{},queryType:"CONSTRUCT",template:e.template.map(E),where:p.default.flatten([v(e.input)])}}(e);case h.DESCRIBE:return A(e,h.DESCRIBE);case h.DISTINCT:return function(e){let t=v(e.input);return t.patterns[0].distinct=!0,t}(e);case h.EXTEND:return function(e){return y.project?(y.extend.push(e),v(e.input)):p.default.flatten([v(e.input),{type:"bind",variable:e.variable,expression:_(e.expression)}])}(e);case h.FROM:return function(e){const t=v(e.input);let r=t;return"group"===t.type&&(r=t.patterns[0]),r.from={default:e.default,named:e.named},t}(e);case h.FILTER:return function(e){return{type:"group",patterns:p.default.flatten([v(e.input),{type:"filter",expression:_(e.expression)}])}}(e);case h.GRAPH:return function(e){return{type:"graph",patterns:p.default.flatten([v(e.input)]),name:e.name}}(e);case h.GROUP:return function(e){const t=v(e.input),r=e.aggregates.map(O);return y.aggregates.push(...r),y.group.push(...e.variables),t}(e);case h.JOIN:return function(e){return p.default.flatten(e.input.map(v)).reduce(((e,t)=>("bgp"!==t.type||0==e.length||"bgp"!==e[e.length-1].type?e.push(t):e[e.length-1].triples.push(...t.triples),e)),[])}(e);case h.LEFT_JOIN:return function(e){const t={type:"optional",patterns:[v(e.input[1])]};return e.expression&&t.patterns.push({type:"filter",expression:_(e.expression)}),t.patterns=p.default.flatten(t.patterns),p.default.flatten([v(e.input[0]),t])}(e);case h.MINUS:return function(e){let t=v(e.input[1]);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),p.default.flatten([v(e.input[0]),{type:"minus",patterns:t}])}(e);case h.NOP:return{};case h.ORDER_BY:return function(e){return y.order.push(...e.expressions),v(e.input)}(e);case h.PATH:return function(e){return{type:"bgp",triples:[{subject:e.subject,predicate:w(e.predicate),object:e.object}]}}(e);case h.PATTERN:return E(e);case h.PROJECT:return A(e,h.PROJECT);case h.REDUCED:return function(e){let t=v(e.input);return t.patterns[0].reduced=!0,t}(e);case h.SERVICE:return function(e){let t=v(e.input);return"group"===t.type&&(t=t.patterns),Array.isArray(t)||(t=[t]),{type:"service",name:e.name,silent:e.silent,patterns:t}}(e);case h.SLICE:return function(e){let t=v(e.input),r=t;return t.type&&"group"===t.type&&(r=t.patterns[0]),0!==e.start&&(r.offset=e.start),void 0!==e.length&&(r.limit=e.length),t}(e);case h.UNION:return function(e){return{type:"union",patterns:e.input.map(v).map(S)}}(e);case h.VALUES:return function(e){return{type:"values",values:e.bindings.map((t=>{let r={};for(let n of e.variables){let e=`?${n.value}`;t[e]?r[e]=t[e]:r[e]=void 0}return r}))}}(e);case h.COMPOSITE_UPDATE:return function(e){return{prefixes:{},type:"update",updates:e.updates.map((e=>v(e).updates[0]))}}(e);case h.DELETE_INSERT:return function(e){var t;let r,n=e.where;if(n&&n.type===h.FROM){let e=n;n=e.input,r={default:e.default,named:e.named}}const i=[{updateType:"insertdelete",delete:N(e.delete||[]),insert:N(e.insert||[])}];if(r&&(i[0].using=r),!n||n.type===h.BGP&&0===n.patterns.length)i[0].where=[];else{const e=[];let r=v(D(n,e));if("group"===r.type?i[0].where=r.patterns:i[0].where=[r],e.length>0){if(1!==e.length)throw new Error("This is unexpected and might indicate an error in graph handling for updates.");""!==(null===(t=e[0])||void 0===t?void 0:t.value)&&(i[0].where=[{type:"graph",patterns:i[0].where,name:e[0]}])}}return e.delete||e.where?e.insert||e.where?!e.insert&&e.where&&"bgp"===e.where.type&&(0,s.isomorphic)(e.delete,e.where.patterns)&&(delete i[0].where,i[0].updateType="deletewhere"):(delete i[0].insert,delete i[0].where,e.delete.some((e=>"Variable"===e.subject.termType||"Variable"===e.predicate.termType||"Variable"===e.object.termType))?i[0].updateType="deletewhere":i[0].updateType="delete"):(i[0].updateType="insert",delete i[0].delete,delete i[0].where),{prefixes:{},type:"update",updates:i}}(e);case h.LOAD:return function(e){const t=[{type:"load",silent:Boolean(e.silent),source:e.source}];return e.destination&&(t[0].destination=e.destination),{prefixes:{},type:"update",updates:t}}(e);case h.CLEAR:return function(e){return I(e,"clear")}(e);case h.CREATE:return function(e){return I(e,"create")}(e);case h.DROP:return function(e){return I(e,"drop")}(e);case h.ADD:return function(e){return P(e,"add")}(e);case h.MOVE:return function(e){return P(e,"move")}(e);case h.COPY:return function(e){return P(e,"copy")}(e)}throw new Error(`Unknown Operation type ${e.type}`)}function _(e){switch(e.expressionType){case f.AGGREGATE:return function(e){const t={expression:_(e.expression),type:"aggregate",aggregation:e.aggregator,distinct:e.distinct};return e.separator&&(t.separator=e.separator),t}(e);case f.EXISTENCE:return function(e){return{type:"operation",operator:e.not?"notexists":"exists",args:[{type:"group",patterns:p.default.flatten([v(e.input)])}]}}(e);case f.NAMED:return function(e){return{type:"functionCall",function:e.name,args:e.args.map(_)}}(e);case f.OPERATOR:return function(e){if("desc"===e.operator){return{expression:_(e.args[0]),descending:!0}}const t={type:"operation",operator:e.operator,args:e.args.map(_)};return"in"!==t.operator&&"notin"!==t.operator||(t.args=[t.args[0]].concat([t.args.slice(1)])),t}(e);case f.TERM:return function(e){return e.term}(e);case f.WILDCARD:return function(e){return e.wildcard}(e)}throw new Error(`Unknown Expression Operation type ${e.expressionType}`)}function w(e){switch(e.type){case h.ALT:return function(e){const t=e.input.map(w);return t.every((e=>"pathType"in e&&"!"===e.pathType))?{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:p.default.flatten(t.map((e=>e.items)))}]}:{type:"path",pathType:"|",items:t}}(e);case h.INV:return function(e){if(e.path.type===h.NPS){const t=e.path.iris.map((e=>({type:"path",pathType:"^",items:[e]})));return t.length<=1?{type:"path",pathType:"!",items:t}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:t}]}}return{type:"path",pathType:"^",items:[w(e.path)]}}(e);case h.LINK:return function(e){return e.iri}(e);case h.NPS:return function(e){return e.iris.length<=1?{type:"path",pathType:"!",items:e.iris}:{type:"path",pathType:"!",items:[{type:"path",pathType:"|",items:e.iris}]}}(e);case h.ONE_OR_MORE_PATH:return function(e){return{type:"path",pathType:"+",items:[w(e.path)]}}(e);case h.SEQ:return function(e){return{type:"path",pathType:"/",items:e.input.map(w)}}(e);case h.ZERO_OR_MORE_PATH:return function(e){return{type:"path",pathType:"*",items:[w(e.path)]}}(e);case h.ZERO_OR_ONE_PATH:return function(e){return{type:"path",pathType:"?",items:[w(e.path)]}}(e)}throw new Error(`Unknown Path type ${e.type}`)}function T(e){return(0,c.termToString)(e)}function S(e){return Array.isArray(e)?1===e.length?e[0]:{type:"group",patterns:e}:e}function O(e){return e}function E(e){return{subject:e.subject,predicate:e.predicate,object:e.object}}function x(e,t){let r=p.default.isSimpleTerm(e)?T(e):e;if("string"==typeof r){if(t[r])return t[r]}else if(Array.isArray(e))e=e.map((e=>x(e,t)));else for(let r of Object.keys(e))e[r]=x(e[r],t);return e}function A(e,t){const r={type:"query",prefixes:{}},n=r;let i;t===h.PROJECT?(r.queryType="SELECT",i=e.variables):t===h.ASK?r.queryType="ASK":t===h.DESCRIBE&&(r.queryType="DESCRIBE",i=e.terms);const a=y.extend,o=y.group,s=y.aggregates,l=y.order;b(),y.project=!0;let d=p.default.flatten([v(e.input)]);1===d.length&&"group"===d[0].type&&(d=d[0].patterns),r.where=d;let f={};for(let e of y.aggregates)f[T(e.variable)]=_(e);let g={};for(let e=y.extend.length-1;e>=0;--e){let t=y.extend[e];g[T(t.variable)]=x(_(t.expression),f)}y.group.length>0&&(n.group=y.group.map((e=>{let t=T(e);if(g[t]){let r=g[t];return delete g[t],{variable:e,expression:r}}return{expression:e}}))),y.order.length>0&&(n.order=y.order.map(v).map((e=>e.descending?e:{expression:e}))),i&&(n.variables=i.map((e=>{let t=T(e);if(g[t]){let r=g[t];return delete g[t],{variable:e,expression:r}}return e})),0===n.variables.length&&(n.variables=[new u.Wildcard]));const m=Object.entries(g);if(m.length>0){n.where=n.where||[];for(const[e,t]of m)n.where.push({type:"bind",variable:(0,c.stringToTerm)(e),expression:t})}if(r.where.length>0&&"filter"===r.where[r.where.length-1].type){const e=r.where[r.where.length-1];R(e,Object.keys(f))&&(n.having=p.default.flatten([x(e.expression,f)]),r.where.splice(-1))}return y.extend=a,y.group=o,y.aggregates=s,y.order=l,{type:"group",patterns:[n]}}function R(e,t){return p.default.isSimpleTerm(e)?t.indexOf(T(e))>=0:Array.isArray(e)?e.some((e=>R(e,t))):e===Object(e)?Object.keys(e).some((r=>R(e[r],t))):t.indexOf(e)>=0}function I(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return"DEFAULT"===e.source?r[0].graph={default:!0}:"NAMED"===e.source?r[0].graph={named:!0}:"ALL"===e.source?r[0].graph={all:!0}:r[0].graph={type:"graph",name:e.source},{prefixes:{},type:"update",updates:r}}function P(e,t){const r=[{type:t,silent:Boolean(e.silent)}];return r[0].source="DEFAULT"===e.source?{type:"graph",default:!0}:{type:"graph",name:e.source},r[0].destination="DEFAULT"===e.destination?{type:"graph",default:!0}:{type:"graph",name:e.destination},{prefixes:{},type:"update",updates:r}}function N(e){if(!e)return[];const t={};return e.forEach((e=>{const r=e.graph.value;t[r]||(t[r]=[]),t[r].push(e)})),Object.keys(t).map((e=>""===e?{type:"bgp",triples:t[e].map(E)}:{type:"graph",triples:t[e].map(E),name:t[e][0].graph}))}function D(e,t){if(Array.isArray(e))return e.map((e=>D(e,t)));if(!e.type)return e;if(e.type===h.DELETE_INSERT)return e;if((e.type===h.PATTERN||e.type===h.PATH)&&e.graph)return t.push(e.graph),""!==e.graph.name?e.type===h.PATTERN?g.createPattern(e.subject,e.predicate,e.object):g.createPath(e.subject,e.predicate,e.object):e;const r={},n={},i={};for(let t of Object.keys(e)){const a=[];if(r[t]=D(e[t],a),a.length>0){n[t]=a;for(const e of a)i[e.value]=e}}const a=Object.keys(i);if(a.length>0)if(1!==a.length||[h.PROJECT,h.SERVICE].includes(e.type)){if(e.type===h.BGP)return function(e,t){var r;const n={};for(let i=0;i""===n[e][0].value?t:g.createGraph(t,n[e][r]))):""!==n[e][0].value&&(r[e]=g.createGraph(t,n[e][0]))}}else t.push(i[a[0]]);return r}t.toSparql=function(e,t={}){return new u.Generator(t).stringify(m(e))},t.toSparqlJs=m},77947:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(53933),c=r(22112),u=a(r(1616)),l=o(r(95962)),d=o(r(84238)),p=r(55403).Parser,h=u.types;let f,y=new Set,g=0,m=!1;function b(e,t,r){if(y=new Set,g=0,m=Boolean(t),!e.type)return f.createNop();if("query"!==e.type&&"update"!==e.type)throw new Error("Translate only works on complete query or update objects.");let n;var i;return w(e),"query"===e.type?(n=S({type:"group",patterns:e.where||[]}),n=function(e,t){const r=e,n=[],i={};if(r.variables=r.variables&&r.variables.map((e=>C(e,i))),r.having=r.having&&r.having.map((e=>C(e,i))),r.order=r.order&&r.order.map((e=>C(e,i))),r.group||Object.keys(i).length>0){const e=Object.keys(i).map((e=>function(e,t){if("aggregate"!==e.type||!e.aggregation)throw new Error(`Unexpected input: ${JSON.stringify(e)}`);const r=O(e);return r.variable=t,r}(i[e],f.createTerm(e)))),n=[];if(r.group)for(const e of r.group)if(d.default.isSimpleTerm(e.expression))n.push(e.expression);else{const r="variable"in e?e.variable:A();t=f.createExtend(t,r,O(e.expression)),n.push(r)}t=f.createGroup(t,n,e)}if(r.having)for(let e of r.having)t=f.createFilter(t,O(e));e.values&&(t=f.createJoin([t,j(e)]));let a=[];if("SELECT"===e.queryType||"DESCRIBE"===e.queryType)if(e.variables.some((e=>e&&d.default.isWildcard(e))))a=Object.values(T(e)).sort(((e,t)=>e.value.localeCompare(t.value)));else for(let t of e.variables)_(t)||!("variable"in t)?a.push(t):t.variable&&(a.push(t.variable),n.push(t));for(let e of n)t=f.createExtend(t,e.variable,O(e.expression));return r.order&&(t=f.createOrderBy(t,r.order.map((e=>{let t=O(e.expression);return e.descending&&(t=f.createOperatorExpression("desc",[t])),t})))),"SELECT"===e.queryType&&(t=f.createProject(t,a)),r.distinct&&(t=f.createDistinct(t)),r.reduced&&(t=f.createReduced(t)),"CONSTRUCT"===e.queryType?t=f.createConstruct(t,(e.template||[]).map(R)):"ASK"===e.queryType?t=f.createAsk(t):"DESCRIBE"===e.queryType&&(t=f.createDescribe(t,a)),(r.offset||r.limit)&&(t=f.createSlice(t,r.offset||0,r.limit)),r.from&&(t=f.createFrom(t,r.from.default,r.from.named)),t}(e,n)):"update"===e.type&&(n=1===(i=e).updates.length?M(i.updates[0]):f.createCompositeUpdate(i.updates.map(M))),r&&(n=k(n)),n}function v(e){return Boolean(null==e?void 0:e.termType)}function _(e){return"Variable"===(null==e?void 0:e.termType)}function w(e){if(v(e))_(e)&&y.add(`?${e.value}`);else if(Array.isArray(e))for(const t of e)w(t);else if(e&&"object"==typeof e)for(let t of Object.keys(e))t.startsWith("?")?y.add(t):t.startsWith("$")&&y.add(`?${t.slice(1)}`),w(e[t])}function T(e){let t={};if((r=e).subject&&r.predicate&&r.object){const r=[T(e.subject),T(e.predicate),T(e.object),e.graph?T(e.graph):{}];Object.assign(t,...r)}else if(v(e))_(e)&&(t[e.value]=e);else if("bgp"===e.type){const r=e.triples;Object.assign(t,...r.map(T))}else if("path"===e.type)Object.assign(t,...e.items.map(T));else if("group"===e.type||"union"===e.type||"optional"===e.type)Object.assign(t,...e.patterns.map(T));else if("service"===e.type||"graph"===e.type)Object.assign(t,T(e.name)),Object.assign(t,...e.patterns.map(T));else if("bind"===e.type)Object.assign(t,T(e.variable));else if("values"===e.type){if(e.values.length>0){const r=Object.keys(e.values[0]).map((e=>f.createTerm(e)));Object.assign(t,...r.map(T))}}else if("query"===e.type&&("SELECT"===e.queryType||"DESCRIBE"===e.queryType)){e.where&&e.variables.some(d.default.isWildcard)&&Object.assign(t,...e.where.map(T));for(const r of e.variables)_(r)?Object.assign(t,T(r)):r.variable&&Object.assign(t,T(r.variable));if("SELECT"===e.queryType){if(e.group)for(const r of e.group)r.variable&&Object.assign(t,T(r.variable));if(e.values){const r={type:"values",values:e.values};Object.assign(t,T(r))}}}var r;return t}function S(e){if("bgp"===e.type)return function(e){let t=[],r=[];for(let i of e.triples)if("pathType"in i.predicate){let e=x((n=i).subject,E(n.predicate),n.object);for(let n of e)n.type===h.PATH?(t.length>0&&r.push(f.createBgp(t)),t=[],r.push(n)):t.push(n)}else t.push(R(i));var n;return t.length>0&&r.push(f.createBgp(t)),1===r.length?r[0]:f.createJoin(r)}(e);if("union"===e.type)return f.createUnion(e.patterns.map((e=>("group"!==e.type&&(e={type:"group",patterns:[e]}),S(e)))));if("graph"===e.type){let t=S({type:"group",patterns:e.patterns});return t=m?P(t,e.name):f.createGraph(t,e.name),t}if("values"===e.type)return j(e);if("query"===e.type)return b(e,m,!1);if("group"===e.type){let t=[],r=[];for(let n of e.patterns)("filter"===n.type?t:r).push(n);let n=r.reduce(N,f.createBgp([])),i=t.map((e=>O(e.expression)));return i.length>0&&(n=f.createFilter(n,i.reduce(((e,t)=>f.createOperatorExpression("&&",[e,t]))))),n}throw new Error(`Unexpected type: ${e.type}`)}function O(e){if(d.default.isSimpleTerm(e))return f.createTermExpression(e);if(d.default.isQuad(e))return d.default.hasQuadVariables(e)?f.createOperatorExpression("triple",[O(e.subject),O(e.predicate),O(e.object)]):f.createTermExpression(e);if(d.default.isWildcard(e))return f.createWildcardExpression();if("aggregation"in e)return f.createAggregateExpression(e.aggregation,O(e.expression),Boolean(e.distinct),e.separator);if("function"in e)return f.createNamedExpression(e.function,e.args.map(O));if("operator"in e)return"exists"===e.operator||"notexists"===e.operator?f.createExistenceExpression("notexists"===e.operator,S(e.args[0])):("in"!==e.operator&&"notin"!==e.operator||(e.args=[e.args[0]].concat(e.args[1])),f.createOperatorExpression(e.operator,e.args.map(O)));throw new Error(`Unknown expression: ${JSON.stringify(e)}`)}function E(e){if(d.default.isSimpleTerm(e)){if("NamedNode"===e.termType)return f.createLink(e);throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(e)}`)}if("^"===e.pathType)return f.createInv(E(e.items[0]));if("!"===e.pathType){let t,r=[],n=[];t="pathType"in e.items[0]&&"|"===e.items[0].pathType?e.items[0].items:e.items;for(let e of t)if(d.default.isSimpleTerm(e))r.push(e);else{if("^"!==e.pathType)throw new Error(`Unexpected item: ${JSON.stringify(e)}`);n.push(e.items[0])}let i=f.createNps(r),a=f.createInv(f.createNps(n));return 0===n.length?i:0===r.length?a:f.createAlt([i,a])}if("/"===e.pathType)return f.createSeq(e.items.map(E));if("|"===e.pathType)return f.createAlt(e.items.map(E));if("*"===e.pathType)return f.createZeroOrMorePath(E(e.items[0]));if("+"===e.pathType)return f.createOneOrMorePath(E(e.items[0]));if("?"===e.pathType)return f.createZeroOrOnePath(E(e.items[0]));throw new Error(`Unable to translate path expression ${JSON.stringify(e)}`)}function x(e,t,r){if(t.type===h.LINK)return[f.createPattern(e,t.iri,r)];if(t.type===h.INV)return x(r,t.path,e);if(t.type===h.SEQ){let n=e;return d.default.flatten(t.input.map(((e,i)=>{const a=i===t.input.length-1?r:A(),o=x(n,e,a);return"Variable"===a.termType&&(n=a),o})))}return[f.createPath(e,t,r)]}function A(){let e="?var"+g++;return y.has(e)?A():(y.add(e),f.createTerm(e))}function R(e){if("pathType"in e.predicate)throw new Error("Trying to translate property path to quad.");return f.createPattern(e.subject,e.predicate,e.object,e.graph)}t.default=function(e,t){let r;if(t=t||{},f=new l.default(t.dataFactory),"string"==typeof e){let n=new p(t);n._resetBlanks(),r=n.parse(e)}else r=e;return b(r,t.quads,t.blankToVariable)};let I=Object.values(h);function P(e,t,r){if(e.type===h.GRAPH){if(r)throw new Error("Recursing through nested GRAPH statements with a replacement is impossible.");e=P(e.input,e.name)}else if(e.type===h.SERVICE);else if(e.type===h.BGP)e.patterns=e.patterns.map((e=>(r&&(e.subject.equals(t)&&(e.subject=r),e.predicate.equals(t)&&(e.predicate=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t),e)));else if(e.type===h.PATH)r&&(e.subject.equals(t)&&(e.subject=r),e.object.equals(t)&&(e.object=r)),"DefaultGraph"===e.graph.termType&&(e.graph=t);else if(e.type!==h.PROJECT||r)if(e.type!==h.EXTEND||r)for(let n of Object.keys(e))Array.isArray(e[n])?e[n]=e[n].map((e=>P(e,t,r))):I.indexOf(e[n].type)>=0?e[n]=P(e[n],t,r):r&&_(e[n])&&e[n].equals(t)&&(e[n]=r);else e.variable.equals(t)&&(r=A()),e.input=P(e.input,t,r);else e.variables.some((e=>e.equals(t)))||(r=A()),e.input=P(e.input,t,r);return e}function N(e,t){if("optional"===t.type){const r=S({type:"group",patterns:t.patterns});e=r.type===h.FILTER?f.createLeftJoin(e,r.input,r.expression):f.createLeftJoin(e,r)}else if("minus"===t.type){const r=S({type:"group",patterns:t.patterns});e=f.createMinus(e,r)}else if("bind"===t.type)e=f.createExtend(e,t.variable,O(t.expression));else if("service"===t.type){const r={type:"group",patterns:t.patterns};e=D(e,f.createService(S(r),t.name,t.silent))}else e=D(e,S(t));return e}function D(e,t){return e.type===h.BGP&&t.type===h.BGP?e=f.createBgp([...e.patterns,...t.patterns]):e.type===h.BGP&&0===e.patterns.length?e=t:t.type===h.BGP&&0===t.patterns.length||(e=f.createJoin([e,t])),e}function j(e){let t=(0===e.values.length?[]:Object.keys(e.values[0])).map(f.createTerm.bind(f)),r=e.values.map((e=>{let t=Object.keys(e);t=t.filter((t=>void 0!==e[t]));let r={};for(let n of t)r[n]=e[n];return r}));return f.createValues(t,r)}function C(e,t){if("type"in e&&"aggregate"===e.type){let r,n=!1;for(let i of Object.keys(t))if(s(t[i],e)){r=f.createTerm(i),n=!0;break}return n||(r=A(),t[(0,c.termToString)(r)]=e),r}return"expression"in e&&e.expression?{...e,expression:C(e.expression,t)}:"args"in e&&e.args?{...e,args:e.args.map((e=>C(e,t)))}:e}function M(e){if("type"in e){if("load"===e.type)return function(e){return f.createLoad(e.source,e.destination,e.silent)}(e);if("clear"===e.type||"create"===e.type||"drop"===e.type)return function(e){let t;switch(t=d.default.isSimpleTerm(e.graph)?e.graph:e.graph.all?"ALL":e.graph.default?"DEFAULT":e.graph.named?"NAMED":e.graph.name,e.type){case"clear":return f.createClear(t,e.silent);case"create":return f.createCreate(t,e.silent);case"drop":return f.createDrop(t,e.silent)}}(e);if("add"===e.type||"copy"===e.type||"move"===e.type)return function(e){const t=e.source.default?"DEFAULT":e.source.name,r=e.destination.default?"DEFAULT":e.destination.name;switch(e.type){case"copy":return f.createCopy(t,r,e.silent);case"move":return f.createMove(t,r,e.silent);case"add":return f.createAdd(t,r,e.silent)}}(e)}else if("insertdelete"===e.updateType||"deletewhere"===e.updateType||"delete"===e.updateType||"insert"===e.updateType)return function(e){if(!m)throw new Error("INSERT/DELETE operations are only supported with quads option enabled");let t,r=[],n=[];if(e.delete&&(r=d.default.flatten(e.delete.map((t=>L(t,e.graph))))),e.insert&&(n=d.default.flatten(e.insert.map((t=>L(t,e.graph))))),e.where&&e.where.length>0){t=S({type:"group",patterns:e.where});const r=e.using;r?t=f.createFrom(t,r.default,r.named):e.graph&&(t=P(t,e.graph))}else"deletewhere"===e.updateType&&r.length>0&&(t=f.createBgp(r));return f.createDeleteInsert(r.length>0?r:void 0,n.length>0?n:void 0,t)}(e);throw new Error(`Unknown update type ${JSON.stringify(e)}`)}function L(e,t){let r=t;"graph"===e.type&&(r=e.name);let n=e.triples;return r&&(n=n.map((e=>Object.assign(e,{graph:r})))),n.map(R)}function k(e){const t={},r=Array.from(y).reduce(((e,t)=>(e[t]=!0,e)),{});return d.default.mapOperation(e,{[u.types.DELETE_INSERT]:e=>({result:f.createDeleteInsert(e.delete,e.insert,e.where&&k(e.where)),recurse:!1}),[u.types.PATH]:(e,t)=>({result:t.createPath(n(e.subject),e.predicate,n(e.object),n(e.graph)),recurse:!1}),[u.types.PATTERN]:(e,t)=>({result:t.createPattern(n(e.subject),n(e.predicate),n(e.object),n(e.graph)),recurse:!1}),[u.types.CONSTRUCT]:e=>({result:f.createConstruct(k(e.input),e.template),recurse:!1})});function n(e){if("BlankNode"===e.termType){let n=t[e.value];return n||(n=d.default.createUniqueVariable(e.value,r,f.dataFactory),r[n.value]=!0,t[e.value]=n),n}return e}}},84238:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(1616),a=n(r(95962)),o=r(13252);class s{static flatten(e){return Array.prototype.concat(...e).filter((e=>e))}static objectify(e){if(e.termType){if("Quad"===e.termType)return{type:"pattern",termType:"Quad",subject:s.objectify(e.subject),predicate:s.objectify(e.predicate),object:s.objectify(e.object),graph:s.objectify(e.graph)};{let t={termType:e.termType,value:e.value};return e.language&&(t.language=e.language),e.datatype&&(t.datatype=s.objectify(e.datatype)),t}}if(Array.isArray(e))return e.map((e=>s.objectify(e)));if(e===Object(e)){let t={};for(let r of Object.keys(e))t[r]=s.objectify(e[r]);return t}return e}static inScopeVariables(e){const t=[];function r(e){t.find((t=>e.value===t.value))||t.push(e)}function n(e){"Variable"===e.subject.termType&&r(e.subject),"Variable"===e.predicate.termType&&r(e.predicate),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.predicate.termType&&n(e.predicate),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph)}return s.recurseOperation(e,{[i.types.EXPRESSION]:e=>(e.expressionType===i.expressionTypes.AGGREGATE&&e.variable&&r(e.variable),!0),[i.types.EXTEND]:e=>(r(e.variable),!0),[i.types.GRAPH]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.GROUP]:e=>(e.variables.forEach(r),!0),[i.types.PATH]:e=>("Variable"===e.subject.termType&&r(e.subject),"Variable"===e.object.termType&&r(e.object),"Variable"===e.graph.termType&&r(e.graph),"Quad"===e.subject.termType&&n(e.subject),"Quad"===e.object.termType&&n(e.object),"Quad"===e.graph.termType&&n(e.graph),!0),[i.types.PATTERN]:e=>(n(e),!0),[i.types.PROJECT]:e=>(e.variables.forEach(r),!1),[i.types.SERVICE]:e=>("Variable"===e.name.termType&&r(e.name),!0),[i.types.VALUES]:e=>(e.variables.forEach(r),!0)}),t}static recurseOperation(e,t){let r=e,n=!0;const a=t[e.type];if(a&&(n=a(e)),!n)return;let o=e=>s.recurseOperation(e,t);switch(r.type){case i.types.ALT:r.input.map(o);break;case i.types.ASK:o(r.input);break;case i.types.BGP:r.patterns.forEach(o);break;case i.types.CONSTRUCT:o(r.input),r.template.map(o);break;case i.types.DESCRIBE:case i.types.DISTINCT:o(r.input);break;case i.types.EXPRESSION:r.expressionType===i.expressionTypes.EXISTENCE&&o(r.input);break;case i.types.EXTEND:case i.types.FILTER:o(r.input),o(r.expression);break;case i.types.FROM:case i.types.GRAPH:o(r.input);break;case i.types.GROUP:o(r.input),r.aggregates.forEach(o);break;case i.types.INV:o(r.path);break;case i.types.JOIN:r.input.map(o);break;case i.types.LEFT_JOIN:r.input.map(o),r.expression&&o(r.expression);break;case i.types.LINK:break;case i.types.MINUS:r.input.map(o);break;case i.types.NOP:case i.types.NPS:break;case i.types.ONE_OR_MORE_PATH:o(r.path);break;case i.types.ORDER_BY:o(r.input),r.expressions.forEach(o);break;case i.types.PATH:o(r.predicate);break;case i.types.PATTERN:break;case i.types.PROJECT:case i.types.REDUCED:o(r.input);break;case i.types.SEQ:r.input.map(o);break;case i.types.SERVICE:case i.types.SLICE:o(r.input);break;case i.types.UNION:r.input.map(o);break;case i.types.VALUES:break;case i.types.ZERO_OR_MORE_PATH:case i.types.ZERO_OR_ONE_PATH:o(r.path);break;case i.types.COMPOSITE_UPDATE:r.updates.forEach((e=>o(e)));break;case i.types.DELETE_INSERT:r.delete&&r.delete.forEach((e=>o(e))),r.insert&&r.insert.forEach((e=>o(e))),r.where&&o(r.where);break;case i.types.LOAD:case i.types.CLEAR:case i.types.CREATE:case i.types.DROP:case i.types.ADD:case i.types.MOVE:case i.types.COPY:break;default:throw new Error(`Unknown Operation type ${r.type}`)}}static mapOperation(e,t,r){let n=e,o=!0,c=!0;r=r||new a.default;const u=t[e.type];if(u){const t=u(e,r);n=t.result,o=t.recurse,c=!1!==t.copyMetadata}let l;if(c&&(n.metadata||e.metadata)&&(l={...n.metadata,...e.metadata}),!o)return l&&(n.metadata=l),n;let d=e=>s.mapOperation(e,t,r);switch(n.type){case i.types.ALT:n=r.createAlt(n.input.map(d));break;case i.types.ASK:n=r.createAsk(d(n.input));break;case i.types.BGP:n=r.createBgp(n.patterns.map(d));break;case i.types.CONSTRUCT:n=r.createConstruct(d(n.input),n.template.map(d));break;case i.types.DESCRIBE:n=r.createDescribe(d(n.input),n.terms);break;case i.types.DISTINCT:n=r.createDistinct(d(n.input));break;case i.types.EXPRESSION:n=s.mapExpression(n,t,r);break;case i.types.EXTEND:n=r.createExtend(d(n.input),n.variable,d(n.expression));break;case i.types.FILTER:n=r.createFilter(d(n.input),d(n.expression));break;case i.types.FROM:n=r.createFrom(d(n.input),[...n.default],[...n.named]);break;case i.types.GRAPH:n=r.createGraph(d(n.input),n.name);break;case i.types.GROUP:n=r.createGroup(d(n.input),[].concat(n.variables),n.aggregates.map(d));break;case i.types.INV:n=r.createInv(d(n.path));break;case i.types.JOIN:n=r.createJoin(n.input.map(d));break;case i.types.LEFT_JOIN:n=r.createLeftJoin(d(n.input[0]),d(n.input[1]),n.expression?d(n.expression):void 0);break;case i.types.LINK:n=r.createLink(n.iri);break;case i.types.MINUS:n=r.createMinus(d(n.input[0]),d(n.input[1]));break;case i.types.NOP:n=r.createNop();break;case i.types.NPS:n=r.createNps([].concat(n.iris));break;case i.types.ONE_OR_MORE_PATH:n=r.createOneOrMorePath(d(n.path));break;case i.types.ORDER_BY:n=r.createOrderBy(d(n.input),n.expressions.map(d));break;case i.types.PATH:n=r.createPath(n.subject,d(n.predicate),n.object,n.graph);break;case i.types.PATTERN:n=r.createPattern(n.subject,n.predicate,n.object,n.graph);break;case i.types.PROJECT:n=r.createProject(d(n.input),[...n.variables]);break;case i.types.REDUCED:n=r.createReduced(d(n.input));break;case i.types.SEQ:n=r.createSeq(n.input.map(d));break;case i.types.SERVICE:n=r.createService(d(n.input),n.name,n.silent);break;case i.types.SLICE:n=r.createSlice(d(n.input),n.start,n.length);break;case i.types.UNION:n=r.createUnion(n.input.map(d));break;case i.types.VALUES:n=r.createValues([].concat(n.variables),n.bindings.map((e=>Object.assign({},e))));break;case i.types.ZERO_OR_MORE_PATH:n=r.createZeroOrMorePath(d(n.path));break;case i.types.ZERO_OR_ONE_PATH:n=r.createZeroOrOnePath(d(n.path));break;case i.types.COMPOSITE_UPDATE:n=r.createCompositeUpdate(n.updates.map(d));break;case i.types.DELETE_INSERT:n=r.createDeleteInsert(n.delete?n.delete.map(d):void 0,n.insert?n.insert.map(d):void 0,n.where?d(n.where):void 0);break;case i.types.LOAD:n=r.createLoad(n.source,n.destination,n.silent);break;case i.types.CLEAR:n=r.createClear(n.source,n.silent);break;case i.types.CREATE:n=r.createCreate(n.source,n.silent);break;case i.types.DROP:n=r.createDrop(n.source,n.silent);break;case i.types.ADD:n=r.createAdd(n.source,n.destination);break;case i.types.MOVE:n=r.createMove(n.source,n.destination);break;case i.types.COPY:n=r.createCopy(n.source,n.destination);break;default:throw new Error(`Unknown Operation type ${n.type}`)}return l&&(n.metadata=l),n}static mapExpression(e,t,r){let n=e,o=!0;r=r||new a.default;const c=t[e.expressionType];if(c&&({result:n,recurse:o}=c(e,r)),!o)return n;let u=e=>s.mapOperation(e,t,r);switch(e.expressionType){case i.expressionTypes.AGGREGATE:return e.variable?r.createBoundAggregate(e.variable,e.aggregator,u(e.expression),e.distinct,e.separator):r.createAggregateExpression(e.aggregator,u(e.expression),e.distinct,e.separator);case i.expressionTypes.EXISTENCE:return r.createExistenceExpression(e.not,u(e.input));case i.expressionTypes.NAMED:return r.createNamedExpression(e.name,e.args.map(u));case i.expressionTypes.OPERATOR:return r.createOperatorExpression(e.operator,e.args.map(u));case i.expressionTypes.TERM:return r.createTermExpression(e.term);case i.expressionTypes.WILDCARD:return r.createWildcardExpression();default:throw new Error(`Unknown Expression type ${e.expressionType}`)}}static cloneOperation(e){return s.mapOperation(e,{})}static cloneExpression(e){return s.mapExpression(e,{})}static createUniqueVariable(e,t,r){let n=0,i=e;for(;t[i];)i=`${e}${n++}`;return r.variable(i)}static isSimpleTerm(e){return void 0!==e.termType&&"Quad"!==e.termType&&"Wildcard"!==e.termType}static isQuad(e){return"Quad"===e.termType}static hasQuadVariables(e){return(0,o.someTermsNested)(e,(e=>"Variable"===e.termType))}static isWildcard(e){return"Wildcard"===e.termType}}t.default=s},98634:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var o=a(r(33096)),s=r(3379),c=new Set(["input","option","optgroup","select","button","datalist","textarea"]),u=new Set(["p"]),l=new Set(["thead","tbody"]),d=new Set(["dd","dt"]),p=new Set(["rt","rp"]),h=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",u],["h1",u],["h2",u],["h3",u],["h4",u],["h5",u],["h6",u],["select",c],["input",c],["output",c],["button",c],["datalist",c],["textarea",c],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",d],["dt",d],["address",u],["article",u],["aside",u],["blockquote",u],["details",u],["div",u],["dl",u],["fieldset",u],["figcaption",u],["figure",u],["footer",u],["form",u],["header",u],["hr",u],["main",u],["nav",u],["ol",u],["pre",u],["section",u],["table",u],["ul",u],["rt",p],["rp",p],["tbody",l],["tfoot",l]]),f=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),y=new Set(["math","svg"]),g=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]),m=/\s|\//,b=function(){function e(e,t){var r,n,i,a,s,c;void 0===t&&(t={}),this.options=t,this.startIndex=0,this.endIndex=0,this.openTagStart=0,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.buffers=[],this.bufferOffset=0,this.writeIndex=0,this.ended=!1,this.cbs=null!=e?e:{},this.htmlMode=!this.options.xmlMode,this.lowerCaseTagNames=null!==(r=t.lowerCaseTags)&&void 0!==r?r:this.htmlMode,this.lowerCaseAttributeNames=null!==(n=t.lowerCaseAttributeNames)&&void 0!==n?n:this.htmlMode,this.recognizeSelfClosing=null!==(i=t.recognizeSelfClosing)&&void 0!==i?i:!this.htmlMode,this.tokenizer=new(null!==(a=t.Tokenizer)&&void 0!==a?a:o.default)(this.options,this),this.foreignContext=[!this.htmlMode],null===(c=(s=this.cbs).onparserinit)||void 0===c||c.call(s,this)}return e.prototype.ontext=function(e,t){var r,n,i=this.getSlice(e,t);this.endIndex=t-1,null===(n=(r=this.cbs).ontext)||void 0===n||n.call(r,i),this.startIndex=t},e.prototype.ontextentity=function(e,t){var r,n;this.endIndex=t-1,null===(n=(r=this.cbs).ontext)||void 0===n||n.call(r,(0,s.fromCodePoint)(e)),this.startIndex=t},e.prototype.isVoidElement=function(e){return this.htmlMode&&f.has(e)},e.prototype.onopentagname=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);this.lowerCaseTagNames&&(r=r.toLowerCase()),this.emitOpenTag(r)},e.prototype.emitOpenTag=function(e){var t,r,n,i;this.openTagStart=this.startIndex,this.tagname=e;var a=this.htmlMode&&h.get(e);if(a)for(;this.stack.length>0&&a.has(this.stack[0]);){var o=this.stack.shift();null===(r=(t=this.cbs).onclosetag)||void 0===r||r.call(t,o,!0)}this.isVoidElement(e)||(this.stack.unshift(e),this.htmlMode&&(y.has(e)?this.foreignContext.unshift(!0):g.has(e)&&this.foreignContext.unshift(!1))),null===(i=(n=this.cbs).onopentagname)||void 0===i||i.call(n,e),this.cbs.onopentag&&(this.attribs={})},e.prototype.endOpenTag=function(e){var t,r;this.startIndex=this.openTagStart,this.attribs&&(null===(r=(t=this.cbs).onopentag)||void 0===r||r.call(t,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""},e.prototype.onopentagend=function(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1},e.prototype.onclosetag=function(e,t){var r,n,i,a,o,s,c,u;this.endIndex=t;var l=this.getSlice(e,t);if(this.lowerCaseTagNames&&(l=l.toLowerCase()),this.htmlMode&&(y.has(l)||g.has(l))&&this.foreignContext.shift(),this.isVoidElement(l))this.htmlMode&&"br"===l&&(null===(a=(i=this.cbs).onopentagname)||void 0===a||a.call(i,"br"),null===(s=(o=this.cbs).onopentag)||void 0===s||s.call(o,"br",{},!0),null===(u=(c=this.cbs).onclosetag)||void 0===u||u.call(c,"br",!1));else{var d=this.stack.indexOf(l);if(-1!==d)for(var p=0;p<=d;p++){var h=this.stack.shift();null===(n=(r=this.cbs).onclosetag)||void 0===n||n.call(r,h,p!==d)}else this.htmlMode&&"p"===l&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=t+1},e.prototype.onselfclosingtag=function(e){this.endIndex=e,this.recognizeSelfClosing||this.foreignContext[0]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)},e.prototype.closeCurrentTag=function(e){var t,r,n=this.tagname;this.endOpenTag(e),this.stack[0]===n&&(null===(r=(t=this.cbs).onclosetag)||void 0===r||r.call(t,n,!e),this.stack.shift())},e.prototype.onattribname=function(e,t){this.startIndex=e;var r=this.getSlice(e,t);this.attribname=this.lowerCaseAttributeNames?r.toLowerCase():r},e.prototype.onattribdata=function(e,t){this.attribvalue+=this.getSlice(e,t)},e.prototype.onattribentity=function(e){this.attribvalue+=(0,s.fromCodePoint)(e)},e.prototype.onattribend=function(e,t){var r,n;this.endIndex=t,null===(n=(r=this.cbs).onattribute)||void 0===n||n.call(r,this.attribname,this.attribvalue,e===o.QuoteType.Double?'"':e===o.QuoteType.Single?"'":e===o.QuoteType.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""},e.prototype.getInstructionName=function(e){var t=e.search(m),r=t<0?e:e.substr(0,t);return this.lowerCaseTagNames&&(r=r.toLowerCase()),r},e.prototype.ondeclaration=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){var n=this.getInstructionName(r);this.cbs.onprocessinginstruction("!".concat(n),"!".concat(r))}this.startIndex=t+1},e.prototype.onprocessinginstruction=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){var n=this.getInstructionName(r);this.cbs.onprocessinginstruction("?".concat(n),"?".concat(r))}this.startIndex=t+1},e.prototype.oncomment=function(e,t,r){var n,i,a,o;this.endIndex=t,null===(i=(n=this.cbs).oncomment)||void 0===i||i.call(n,this.getSlice(e,t-r)),null===(o=(a=this.cbs).oncommentend)||void 0===o||o.call(a),this.startIndex=t+1},e.prototype.oncdata=function(e,t,r){var n,i,a,o,s,c,u,l,d,p;this.endIndex=t;var h=this.getSlice(e,t-r);!this.htmlMode||this.options.recognizeCDATA?(null===(i=(n=this.cbs).oncdatastart)||void 0===i||i.call(n),null===(o=(a=this.cbs).ontext)||void 0===o||o.call(a,h),null===(c=(s=this.cbs).oncdataend)||void 0===c||c.call(s)):(null===(l=(u=this.cbs).oncomment)||void 0===l||l.call(u,"[CDATA[".concat(h,"]]")),null===(p=(d=this.cbs).oncommentend)||void 0===p||p.call(d)),this.startIndex=t+1},e.prototype.onend=function(){var e,t;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(var r=0;r=this.buffers[0].length;)this.shiftBuffer();for(var r=this.buffers[0].slice(e-this.bufferOffset,t-this.bufferOffset);t-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),r+=this.buffers[0].slice(0,t-this.bufferOffset);return r},e.prototype.shiftBuffer=function(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()},e.prototype.write=function(e){var t,r;this.ended?null===(r=(t=this.cbs).onerror)||void 0===r||r.call(t,new Error(".write() after done!")):(this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++))},e.prototype.end=function(e){var t,r;this.ended?null===(r=(t=this.cbs).onerror)||void 0===r||r.call(t,new Error(".end() after done!")):(e&&this.write(e),this.ended=!0,this.tokenizer.end())},e.prototype.pause=function(){this.tokenizer.pause()},e.prototype.resume=function(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuoteType=void 0;var n,i,a,o=r(3379);function s(e){return e===n.Space||e===n.NewLine||e===n.Tab||e===n.FormFeed||e===n.CarriageReturn}function c(e){return e===n.Slash||e===n.Gt||s(e)}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Number=35]="Number",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(n||(n={})),function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.BeforeSpecialT=23]="BeforeSpecialT",e[e.SpecialStartSequence=24]="SpecialStartSequence",e[e.InSpecialTag=25]="InSpecialTag",e[e.InEntity=26]="InEntity"}(i||(i={})),function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(a||(t.QuoteType=a={}));var u={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])},l=function(){function e(e,t){var r=e.xmlMode,n=void 0!==r&&r,a=e.decodeEntities,s=void 0===a||a,c=this;this.cbs=t,this.state=i.Text,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=i.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.xmlMode=n,this.decodeEntities=s,this.entityDecoder=new o.EntityDecoder(n?o.xmlDecodeTree:o.htmlDecodeTree,(function(e,t){return c.emitCodePoint(e,t)}))}return e.prototype.reset=function(){this.state=i.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=i.Text,this.currentSequence=void 0,this.running=!0,this.offset=0},e.prototype.write=function(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()},e.prototype.end=function(){this.running&&this.finish()},e.prototype.pause=function(){this.running=!1},e.prototype.resume=function(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=i.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===n.Amp&&this.startEntity()},e.prototype.stateSpecialStartSequence=function(e){var t=this.sequenceIndex===this.currentSequence.length;if(t?c(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.isSpecial=!1;this.sequenceIndex=0,this.state=i.InTagName,this.stateInTagName(e)},e.prototype.stateInSpecialTag=function(e){if(this.sequenceIndex===this.currentSequence.length){if(e===n.Gt||s(e)){var t=this.index-this.currentSequence.length;if(this.sectionStart=n.LowerA&&e<=n.LowerZ||e>=n.UpperA&&e<=n.UpperZ}(e)},e.prototype.startSpecial=function(e,t){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=t,this.state=i.SpecialStartSequence},e.prototype.stateBeforeTagName=function(e){if(e===n.ExclamationMark)this.state=i.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===n.Questionmark)this.state=i.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){var t=32|e;this.sectionStart=this.index,this.xmlMode?this.state=i.InTagName:t===u.ScriptEnd[2]?this.state=i.BeforeSpecialS:t===u.TitleEnd[2]?this.state=i.BeforeSpecialT:this.state=i.InTagName}else e===n.Slash?this.state=i.BeforeClosingTagName:(this.state=i.Text,this.stateText(e))},e.prototype.stateInTagName=function(e){c(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e))},e.prototype.stateBeforeClosingTagName=function(e){s(e)||(e===n.Gt?this.state=i.Text:(this.state=this.isTagStartChar(e)?i.InClosingTagName:i.InSpecialComment,this.sectionStart=this.index))},e.prototype.stateInClosingTagName=function(e){(e===n.Gt||s(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.AfterClosingTagName,this.stateAfterClosingTagName(e))},e.prototype.stateAfterClosingTagName=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeAttributeName=function(e){e===n.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=i.InSpecialTag,this.sequenceIndex=0):this.state=i.Text,this.sectionStart=this.index+1):e===n.Slash?this.state=i.InSelfClosingTag:s(e)||(this.state=i.InAttributeName,this.sectionStart=this.index)},e.prototype.stateInSelfClosingTag=function(e){e===n.Gt?(this.cbs.onselfclosingtag(this.index),this.state=i.Text,this.sectionStart=this.index+1,this.isSpecial=!1):s(e)||(this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e))},e.prototype.stateInAttributeName=function(e){(e===n.Eq||c(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=this.index,this.state=i.AfterAttributeName,this.stateAfterAttributeName(e))},e.prototype.stateAfterAttributeName=function(e){e===n.Eq?this.state=i.BeforeAttributeValue:e===n.Slash||e===n.Gt?(this.cbs.onattribend(a.NoValue,this.sectionStart),this.sectionStart=-1,this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e)):s(e)||(this.cbs.onattribend(a.NoValue,this.sectionStart),this.state=i.InAttributeName,this.sectionStart=this.index)},e.prototype.stateBeforeAttributeValue=function(e){e===n.DoubleQuote?(this.state=i.InAttributeValueDq,this.sectionStart=this.index+1):e===n.SingleQuote?(this.state=i.InAttributeValueSq,this.sectionStart=this.index+1):s(e)||(this.sectionStart=this.index,this.state=i.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))},e.prototype.handleInAttributeValue=function(e,t){e===t||!this.decodeEntities&&this.fastForwardTo(t)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(t===n.DoubleQuote?a.Double:a.Single,this.index+1),this.state=i.BeforeAttributeName):this.decodeEntities&&e===n.Amp&&this.startEntity()},e.prototype.stateInAttributeValueDoubleQuotes=function(e){this.handleInAttributeValue(e,n.DoubleQuote)},e.prototype.stateInAttributeValueSingleQuotes=function(e){this.handleInAttributeValue(e,n.SingleQuote)},e.prototype.stateInAttributeValueNoQuotes=function(e){s(e)||e===n.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(a.Unquoted,this.index),this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===n.Amp&&this.startEntity()},e.prototype.stateBeforeDeclaration=function(e){e===n.OpeningSquareBracket?(this.state=i.CDATASequence,this.sequenceIndex=0):this.state=e===n.Dash?i.BeforeComment:i.InDeclaration},e.prototype.stateInDeclaration=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateInProcessingInstruction=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeComment=function(e){e===n.Dash?(this.state=i.InCommentLike,this.currentSequence=u.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=i.InDeclaration},e.prototype.stateInSpecialComment=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeSpecialS=function(e){var t=32|e;t===u.ScriptEnd[3]?this.startSpecial(u.ScriptEnd,4):t===u.StyleEnd[3]?this.startSpecial(u.StyleEnd,4):(this.state=i.InTagName,this.stateInTagName(e))},e.prototype.stateBeforeSpecialT=function(e){var t=32|e;t===u.TitleEnd[3]?this.startSpecial(u.TitleEnd,4):t===u.TextareaEnd[3]?this.startSpecial(u.TextareaEnd,4):(this.state=i.InTagName,this.stateInTagName(e))},e.prototype.startEntity=function(){this.baseState=this.state,this.state=i.InEntity,this.entityStart=this.index,this.entityDecoder.startEntity(this.xmlMode?o.DecodingMode.Strict:this.baseState===i.Text||this.baseState===i.InSpecialTag?o.DecodingMode.Legacy:o.DecodingMode.Attribute)},e.prototype.stateInEntity=function(){var e=this.entityDecoder.write(this.buffer,this.index-this.offset);e>=0?(this.state=this.baseState,0===e&&(this.index=this.entityStart)):this.index=this.offset+this.buffer.length-1},e.prototype.cleanup=function(){this.running&&this.sectionStart!==this.index&&(this.state===i.Text||this.state===i.InSpecialTag&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):this.state!==i.InAttributeValueDq&&this.state!==i.InAttributeValueSq&&this.state!==i.InAttributeValueNq||(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))},e.prototype.shouldContinue=function(){return this.index=e||(this.state===i.InCommentLike?this.currentSequence===u.CdataEnd?this.cbs.oncdata(this.sectionStart,e,0):this.cbs.oncomment(this.sectionStart,e,0):this.state===i.InTagName||this.state===i.BeforeAttributeName||this.state===i.BeforeAttributeValue||this.state===i.AfterAttributeName||this.state===i.InAttributeName||this.state===i.InAttributeValueSq||this.state===i.InAttributeValueDq||this.state===i.InAttributeValueNq||this.state===i.InClosingTagName||this.cbs.ontext(this.sectionStart,e))},e.prototype.emitCodePoint=function(e,t){this.baseState!==i.Text&&this.baseState!==i.InSpecialTag?(this.sectionStart{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isIterator=t.isIterable=t.isSourceExpression=t.isPromise=t.isEventEmitter=t.isFunction=t.range=t.union=t.fromIterable=t.fromIterator=t.fromArray=t.single=t.empty=t.wrap=t.WrappingIterator=t.ClonedIterator=t.UnionIterator=t.MultiTransformIterator=t.SimpleTransformIterator=t.TransformIterator=t.BufferedIterator=t.MappingIterator=t.DESTINATION=t.identity=t.IntegerIterator=t.ArrayIterator=t.SingletonIterator=t.EmptyIterator=t.AsyncIterator=t.DESTROYED=t.ENDED=t.CLOSED=t.CLOSING=t.OPEN=t.INIT=t.setTaskScheduler=t.getTaskScheduler=t.scheduleTask=t.LinkedList=void 0;const n=r(50046),i=r(14241);Object.defineProperty(t,"LinkedList",{enumerable:!0,get:function(){return i.LinkedList}});let a=r(93240).createTaskScheduler();t.scheduleTask=function(e){a(e)},t.getTaskScheduler=function(){return a},t.setTaskScheduler=function(e){a=e},t.INIT=1,t.OPEN=2,t.CLOSING=4,t.CLOSED=8,t.ENDED=16,t.DESTROYED=32;class o extends n.EventEmitter{constructor(e=t.OPEN){super(),this._readable=!1,this._state=e,this.on("newListener",s)}_changeState(e,r=!1){const n=e>this._state&&this._statethis.emit("end"))):this.emit("end"))),n}read(){return null}forEach(e,t){this.on("data",j(e,t))}close(){this._changeState(t.CLOSED)&&this._endAsync()}destroy(e){this.done||this._destroy(e,(t=>{(e=e||t)&&this.emit("error",e),this._end(!0)}))}_destroy(e,t){t()}_end(e=!1){this._changeState(e?t.DESTROYED:t.ENDED)&&(this._readable=!1,this.removeAllListeners("readable"),this.removeAllListeners("data"),this.removeAllListeners("end"))}_endAsync(){a((()=>this._end()))}get readable(){return this._readable}set readable(e){e=Boolean(e)&&!this.done,this._readable!==e&&(this._readable=e,e&&a((()=>this.emit("readable"))))}get closed(){return this._state>=t.CLOSING}get ended(){return this._state===t.ENDED}get destroyed(){return this._state===t.DESTROYED}get done(){return this._state>=t.ENDED}toString(){const e=this._toStringDetails();return`[${this.constructor.name}${e?` ${e}`:""}]`}_toStringDetails(){return""}toArray(e){const t=[],r="number"==typeof(null==e?void 0:e.limit)?e.limit:1/0;return this.ended||r<=0?Promise.resolve(t):new Promise(((e,n)=>{const i=()=>e(t),a=o=>{t.push(o),t.length>=r&&(this.removeListener("error",n),this.removeListener("data",a),this.removeListener("end",i),e(t))};this.on("error",n),this.on("data",a),this.on("end",i)}))}getProperty(e,t){const r=this._properties;if(!t)return r&&r[e];if(r&&e in r)a((()=>t(r[e])));else{let r;(r=this._propertyCallbacks)||(this._propertyCallbacks=r=Object.create(null)),e in r?r[e].push(t):r[e]=[t]}}setProperty(e,t){(this._properties||(this._properties=Object.create(null)))[e]=t;const r=this._propertyCallbacks||{},n=r[e];if(n){for(e in delete r[e],a((()=>{for(const e of n)e(t)})),r)return;delete this._propertyCallbacks}}getProperties(){const e=this._properties,t={};for(const r in e)t[r]=e[r];return t}setProperties(e){for(const t in e)this.setProperty(t,e[t])}copyProperties(e,t){for(const r of t)e.getProperty(r,(e=>this.setProperty(r,e)))}transform(e){return new O(this,e)}map(e,t){return new y(this,j(e,t))}filter(e,t){return this.map((function(r){return e.call(t||this,r)?r:null}))}uniq(e=f){const t=new Set;return this.filter((function(r){const n=e.call(this,r);return!t.has(n)&&(t.add(n),!0)}))}prepend(e){return this.transform({prepend:e})}append(e){return this.transform({append:e})}surround(e,t){return this.transform({prepend:e,append:t})}skip(e){return this.map((t=>e-- >0?null:t))}take(e){return this.transform({limit:e})}range(e,t){return this.transform({offset:e,limit:Math.max(t-e+1,0)})}clone(){return new A(this)}[Symbol.asyncIterator](){const e=this;let t=null,r=null,n=null;function i(){if(null!==t)if(null!==n)a(n);else if(e.done)t({done:!0,value:void 0}),t=r=null,o();else{const n=e.read();null!==n&&(t({done:!1,value:n}),t=r=null)}}function a(e){null!==r?(r(e),t=r=n=null,o()):null===n&&(n=e)}function o(){e.removeListener("readable",i),e.removeListener("end",i),e.removeListener("error",a)}return e.addListener("readable",i),e.addListener("end",i),e.addListener("error",a),{next:()=>new Promise(((e,n)=>{t=e,r=n,i()}))}}}function s(e){"data"===e&&(this.removeListener("newListener",s),u(this,"readable",c),this.readable&&a((()=>c.call(this))))}function c(){let e;for(;0!==this.listenerCount("data")&&null!==(e=this.read());)this.emit("data",e);0!==this.listenerCount("data")||this.done||(this.removeListener("readable",c),u(this,"newListener",s))}function u(e,t,r){e.listeners(t).includes(r)||e.on(t,r)}t.AsyncIterator=o;class l extends o{constructor(){super(),this._changeState(t.ENDED,!0)}}t.EmptyIterator=l;class d extends o{constructor(e){super(),this._item=e,null===e?this.close():this.readable=!0}read(){const e=this._item;return this._item=null,this.close(),e}_toStringDetails(){return null===this._item?"":`(${this._item})`}}t.SingletonIterator=d;class p extends o{constructor(e=[],{autoStart:t=!0,preserve:r=!0}={}){super();const n=r||!Array.isArray(e)?[...e]:e;this._index=0,this._sourceStarted=!1!==t,this._truncateThreshold=r?-1:64,this._sourceStarted&&0===n.length?this.close():this._buffer=n,this.readable=!0}read(){this._sourceStarted||(this._sourceStarted=!0);let e=null;return this._buffer&&(this._index=t&&this.close(),Promise.resolve(i)}}t.ArrayIterator=p;class h extends o{constructor({start:e=0,step:t=1,end:r}={}){super(),Number.isFinite(e)&&(e=Math.trunc(e)),this._next=e,Number.isFinite(t)&&(t=Math.trunc(t)),this._step=t;const n=t>=0,i=n?1/0:-1/0;Number.isFinite(r)?r=Math.trunc(r):r!==-i&&(r=i),this._last=r,!Number.isFinite(e)||(n?e>r:e=0?n>r:nthis._init(r))),this._sourceStarted=!1!==r}get maxBufferSize(){return this._maxBufferSize}set maxBufferSize(e){e!==1/0&&(e=Number.isFinite(e)?Math.max(Math.trunc(e),1):4),this._maxBufferSize!==e&&(this._maxBufferSize=e,this._state===t.OPEN&&this._fillBuffer())}_init(e){let r=!1;this._reading=!0,this._begin((()=>{if(r)throw new Error("done callback called multiple times");r=!0,this._reading=!1,this._changeState(t.OPEN),e?this._fillBufferAsync():this.readable=!0}))}_begin(e){e()}read(){if(this.done)return null;this._sourceStarted||(this._sourceStarted=!0);const e=this._buffer;let t;return e.empty?(t=null,this.readable=!1):t=e.shift(),!this._reading&&e.length0&&(this._pushedCount=0,this._reading=!0,this._read(e,(()=>{if(!e)throw new Error("done callback called multiple times");e=0,this._reading=!1,this.closed?this._completeClose():this._pushedCount&&(this.readable=!0,this._buffer.length{this._reading=!1,this._fillBuffer()})))}close(){this._reading?this._changeState(t.CLOSING):this._completeClose()}_completeClose(){this._changeState(t.CLOSED)&&(this._reading=!0,this._flush((()=>{if(!this._reading)throw new Error("done callback called multiple times");this._reading=!1,this._buffer.empty&&this._endAsync()})))}_destroy(e,t){this._buffer.clear(),t()}_flush(e){e()}_toStringDetails(){const e=this._buffer;return`{${e.empty?"":`next: ${e.first}, `}buffer: ${e.length}}`}}t.BufferedIterator=m;class b extends m{constructor(e,t=e||{}){super(t),this._boundPush=e=>this._push(e),k(e)||(e=t.source),M(e)?this.source=e:e&&(this._createSource=L(e)?()=>e:e,this._sourceStarted&&this._loadSourceAsync()),this._optional=Boolean(t.optional),this._destroySource=!1!==t.destroySource}get source(){return C(this._createSource)&&this._loadSourceAsync(),this._source}set source(e){const r=this._source=this._validateSource(e);r[t.DESTINATION]=this,this.done?this._destroySource&&r.destroy():r.done?this.close():(r.on("end",T),r.on("readable",S),r.on("error",_))}_loadSourceAsync(){C(this._createSource)&&(Promise.resolve(this._createSource()).then((e=>{delete this._createSource,this.source=e,this._fillBuffer()}),(e=>this.emit("error",e))),this._createSource=null)}_validateSource(e,t=!1){if(this._source||void 0!==this._createSource)throw new Error("The source cannot be changed after it has been set");return g(e,t)}_read(e,t){const r=()=>{this._pushedCountthis._readAndTransform(r,t))):t()};this._readAndTransform(r,t)}_readAndTransform(e,t){let r;const n=this.source;!n||n.done||null===(r=n.read())?t():this._optional?this._optionalTransform(r,e):this._transform(r,e,this._boundPush)}_optionalTransform(e,t){const r=this._pushedCount;this._transform(e,(()=>{r===this._pushedCount&&this._push(e),t()}),this._boundPush)}_transform(e,t,r){r(e),t()}_closeWhenDone(){this.close()}_end(e){const r=this._source;r&&(r.removeListener("end",T),r.removeListener("error",_),r.removeListener("readable",S),delete r[t.DESTINATION],this._destroySource&&r.destroy()),super._end(e)}}function v(){this[t.DESTINATION].readable=!0}function _(e){this[t.DESTINATION].emit("error",e)}function w(){this[t.DESTINATION].close()}function T(){this[t.DESTINATION]._closeWhenDone()}function S(){!1!==this[t.DESTINATION]._sourceStarted&&this[t.DESTINATION]._fillBuffer()}t.TransformIterator=b;class O extends b{constructor(e,t){if(super(e,t),this._offset=0,this._limit=1/0,this._filter=e=>!0,t=t||(k(e)?null:e)){const e=C(t)?t:t.transform,{limit:r,offset:n,filter:i,map:a,prepend:o,append:s}=t;n===1/0||r===-1/0?this._limit=0:(Number.isFinite(n)&&(this._offset=Math.max(Math.trunc(n),0)),Number.isFinite(r)&&(this._limit=Math.max(Math.trunc(r),0)),C(i)&&(this._filter=i),C(a)&&(this._map=a),this._transform=C(e)?e:null),o&&(this._prepender=M(o)?o:D(o)),s&&(this._appender=M(s)?s:D(s))}}_read(e,t){const r=()=>this._readAndTransformSimple(e,n,t);function n(){a(r)}this._readAndTransformSimple(e,n,t)}_readAndTransformSimple(e,t,r){let n;const{source:i}=this;if(i&&!i.done){for(0===this._limit&&this.close();!this.closed&&this._pushedCountthis._push(e);!e||e.done?t():(e.on("data",r),e.on("end",(function n(){e.removeListener("data",r),e.removeListener("end",n),t()})))}}t.SimpleTransformIterator=O,t.MultiTransformIterator=class extends b{constructor(e,t){if(super(e,t),this._transformerQueue=[],t){const e=C(t)?t:t.multiTransform;e&&(this._createTransformer=e)}}_read(e,r){const n=this._transformerQueue,i=this._optional;let a,o;for(;(a=n[0])&&a.transformer.done;){i&&null!==a.item&&(e--,this._push(a.item)),n.shift();const{transformer:t}=a;t.removeListener("end",S),t.removeListener("readable",S),t.removeListener("error",_)}const{source:s}=this;for(;s&&!s.done&&n.length0&&null!==(o=t.read());)this._push(o),i&&(a.item=null)}else s&&s.done&&this.close();r()}_createTransformer(e){return new d(e)}_closeWhenDone(){this._transformerQueue.length||this.close()}_end(e){if(super._end(e),this._destroySource)for(const e of this._transformerQueue)e.transformer.destroy()}};class E extends m{constructor(e,t={}){super(t),this._sources=[],this._currentSource=-1;const r=!1!==t.autoStart;if(M(e))e.on("error",(e=>this.emit("error",e))),this._pending={loading:!1,sources:e},r&&this._loadSources();else if(Array.isArray(e)&&e.length>0)for(const t of e)this._addSource(t);else r&&this.close();this._destroySources=!1!==t.destroySources}_loadSources(){const e=this._pending.sources;this._pending.loading=!0,e.done?(delete this._pending,this.close()):(e.on("data",(e=>{this._addSource(e),this._fillBufferAsync()})),e.on("end",(()=>{delete this._pending,this._fillBuffer()})))}_addSource(e){L(e)&&(e=P(e)),e.done||(this._sources.push(e),e[t.DESTINATION]=this,e.on("error",_),e.on("readable",S),e.on("end",x))}_removeEmptySources(){this._sources=this._sources.filter(((e,t)=>(e.done&&t<=this._currentSource&&this._currentSource--,!e.done))),this._fillBuffer()}_read(e,t){var r;!1===(null===(r=this._pending)||void 0===r?void 0:r.loading)&&this._loadSources();let n,i=0;for(;i!==(i=e);)for(let t=0;t0;t++)this._currentSource=(this._currentSource+1)%this._sources.length,null!==(n=this._sources[this._currentSource].read())&&(e--,this._push(n));this._pending||0!==this._sources.length||this.close(),t()}_end(e=!1){if(super._end(e),this._destroySources){for(const e of this._sources)e.destroy();this._pending&&(this._pending.sources.destroy(),delete this._pending)}}}function x(){this[t.DESTINATION]._removeEmptySources()}t.UnionIterator=E;class A extends b{constructor(e){super(e,{autoStart:!1}),this._readPosition=0,this._reading=!1,e&&(this.readable=!0)}_init(){}close(){o.prototype.close.call(this)}get source(){return super.source}set source(e){const r=this._source=this._validateSource(e),n=r&&r[t.DESTINATION]||(r[t.DESTINATION]=new R(r));this.done?this._destroySource&&r.destroy():n.endsAt(0)?this.close():(n.register(this),!1!==r._sourceStarted&&null===n.readAt(0)||(this.readable=!0));const i=this._propertyCallbacks;for(const e in i){const t=i[e];for(const r of t)this._getSourceProperty(e,r)}}_validateSource(e,r=!1){const n=e&&e[t.DESTINATION];return super._validateSource(e,!n||n instanceof R)}getProperty(e,t){const{source:r}=this,n=this._properties,i=n&&e in n;if(!t)return i?n&&n[e]:r&&r.getProperty(e);super.getProperty(e,t),r&&!i&&this._getSourceProperty(e,t)}_getSourceProperty(e,t){this.source.getProperty(e,(r=>{this._properties&&e in this._properties||t(r)}))}getProperties(){const e=this.source?this.source.getProperties():{},t=this._properties;for(const r in t)e[r]=t[r];return e}_toStringDetails(){return`{source: ${this.source?this.source.toString():"none"}}`}read(){this._sourceStarted||(this._sourceStarted=!0);const e=this.source;let r=null;if(!this.done&&e){const n=e[t.DESTINATION];null!==(r=n.readAt(this._readPosition))?this._readPosition++:this.readable=!1,n.endsAt(this._readPosition)&&this.close()}return r}_end(e){const r=this.source,n=null==r?void 0:r[t.DESTINATION];n&&n.unregister(this),m.prototype._end.call(this,e)}}t.ClonedIterator=A;class R{constructor(e){if(this._history=[],this._trackers=new Set,this._source=e,!e.done){const t=()=>{for(const e of this._trackers)e.readable=!0},r=e=>{for(const t of this._trackers)t.emit("error",e)},n=()=>{for(const e of this._trackers)!1!==e._sourceStarted&&e._readPosition===this._history.length&&e.close();this._trackers.clear(),e.removeListener("end",n),e.removeListener("error",r),e.removeListener("readable",t)};e.on("end",n),e.on("error",r),e.on("readable",t)}}register(e){this._source.done||this._trackers.add(e)}unregister(e){this._trackers.delete(e)}readAt(e){let t=null;return e{this._source=null,this.source=e})).catch((e=>this.emit("error",e)))):e&&(this.source=e)}set source(e){let r=e;if(null!==this._source)throw new Error("The source cannot be changed after it has been set");if(F(r)&&(r=r[Symbol.iterator]()),B(r)){let e=r;r=new n.EventEmitter,r.read=()=>{if(null!==e){let t;for(;!(t=e.next()).done;)if(null!==t.value)return t.value;e=null,this.close()}return null}}else r=g(r);this.done?this._destroySource&&C(r.destroy)&&r.destroy():(r[t.DESTINATION]=this,r.on("end",w),r.on("error",_),r.on("readable",v),this._source=r,this.readable=!1!==r.readable)}read(){if(null!==this._source&&!1!==this._source.readable){const e=this._source.read();if(null!==e)return e;this.readable=!1}return null}_end(e=!1){null!==this._source&&(this._source.removeListener("end",w),this._source.removeListener("error",_),this._source.removeListener("readable",v),delete this._source[t.DESTINATION],this._destroySource&&C(this._source.destroy)&&this._source.destroy(),this._source=null),super._end(e)}}function P(e,t){if(t&&("autoStart"in t||"optional"in t||"source"in t||"maxBufferSize"in t))return e&&!M(e)&&(e=new I(e)),new b(e,t);if(!e)return N();if(L(e))return new I(e,t);if(e instanceof o)return e;if(Array.isArray(e))return D(e);if(F(e)||B(e)||M(e))return new I(e,t);throw new TypeError(`Invalid source: ${e}`)}function N(){return new l}function D(e){return new p(e)}function j(e,t){return t?e.bind(t):e}function C(e){return"function"==typeof e}function M(e){return C(null==e?void 0:e.on)}function L(e){return C(null==e?void 0:e.then)}function k(e){return e&&(M(e)||L(e)||C(e))}function F(e){return e&&Symbol.iterator in e}function B(e){return C(null==e?void 0:e.next)}t.WrappingIterator=I,t.wrap=P,t.empty=N,t.single=function(e){return new d(e)},t.fromArray=D,t.fromIterator=function(e){return new I(e)},t.fromIterable=function(e){return new I(e)},t.union=function(e){return new E(e)},t.range=function(e,t,r){return new h({start:e,end:t,step:r})},t.isFunction=C,t.isEventEmitter=M,t.isPromise=L,t.isSourceExpression=k,t.isIterable=F,t.isIterator=B},14241:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkedList=void 0,t.LinkedList=class{constructor(){this._length=0,this._head=null,this._tail=null}get length(){return this._length}get first(){var e;return null===(e=this._head)||void 0===e?void 0:e.value}get last(){var e;return null===(e=this._tail)||void 0===e?void 0:e.value}get empty(){return null===this._head}push(e){const t={value:e,next:null};null===this._tail?this._head=this._tail=t:this._tail.next=this._tail=t,this._length++}shift(){if(null===this._head)return;const{value:e,next:t}=this._head;return this._head=t,null===t&&(this._tail=null),this._length--,e}clear(){this._length=0,this._head=this._tail=null}}},93240:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createTaskScheduler=void 0;const r=Promise.resolve(void 0);t.createTaskScheduler=function(){const e="function"==typeof queueMicrotask?queueMicrotask:e=>r.then(e),t="function"==typeof setImmediate?setImmediate:e=>setTimeout(e,0);let n=0,i=null;return r=>{null!==i?i.push(r):++n<100?e(r):(i=[r],t((()=>{for(const t of i)e(t);i=null,n=0})))}}},35069:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LRUCache=void 0;const r="object"==typeof performance&&performance&&"function"==typeof performance.now?performance:Date,n=new Set,i="object"==typeof process&&process?process:{},a=(e,t,r,n)=>{"function"==typeof i.emitWarning?i.emitWarning(e,t,r,n):console.error(`[${r}] ${t}: ${e}`)};let o=globalThis.AbortController,s=globalThis.AbortSignal;if(void 0===o){s=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(e,t){this._onabort.push(t)}},o=class{constructor(){t()}signal=new s;abort(e){if(!this.signal.aborted){this.signal.reason=e,this.signal.aborted=!0;for(const t of this.signal._onabort)t(e);this.signal.onabort?.(e)}}};let e="1"!==i.env?.LRU_CACHE_IGNORE_AC_WARNING;const t=()=>{e&&(e=!1,a("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}Symbol("type");const c=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),u=e=>c(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?l:null:null;class l extends Array{constructor(e){super(e),this.fill(0)}}class d{heap;length;static#e=!1;static create(e){const t=u(e);if(!t)return[];d.#e=!0;const r=new d(e,t);return d.#e=!1,r}constructor(e,t){if(!d.#e)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}}class p{#t;#r;#n;#i;#a;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#o;#s;#c;#u;#l;#d;#p;#h;#f;#y;#g;#m;#b;#v;#_;#w;#T;static unsafeExposeInternals(e){return{starts:e.#b,ttls:e.#v,sizes:e.#m,keyMap:e.#c,keyList:e.#u,valList:e.#l,next:e.#d,prev:e.#p,get head(){return e.#h},get tail(){return e.#f},free:e.#y,isBackgroundFetch:t=>e.#S(t),backgroundFetch:(t,r,n,i)=>e.#O(t,r,n,i),moveToTail:t=>e.#E(t),indexes:t=>e.#x(t),rindexes:t=>e.#A(t),isStale:t=>e.#R(t)}}get max(){return this.#t}get maxSize(){return this.#r}get calculatedSize(){return this.#s}get size(){return this.#o}get fetchMethod(){return this.#a}get dispose(){return this.#n}get disposeAfter(){return this.#i}constructor(e){const{max:t=0,ttl:r,ttlResolution:i=1,ttlAutopurge:o,updateAgeOnGet:s,updateAgeOnHas:l,allowStale:h,dispose:f,disposeAfter:y,noDisposeOnSet:g,noUpdateTTL:m,maxSize:b=0,maxEntrySize:v=0,sizeCalculation:_,fetchMethod:w,noDeleteOnFetchRejection:T,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:O,allowStaleOnFetchAbort:E,ignoreFetchAbort:x}=e;if(0!==t&&!c(t))throw new TypeError("max option must be a nonnegative integer");const A=t?u(t):Array;if(!A)throw new Error("invalid max value: "+t);if(this.#t=t,this.#r=b,this.maxEntrySize=v||this.#r,this.sizeCalculation=_,this.sizeCalculation){if(!this.#r&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if("function"!=typeof this.sizeCalculation)throw new TypeError("sizeCalculation set to non-function")}if(void 0!==w&&"function"!=typeof w)throw new TypeError("fetchMethod must be a function if specified");if(this.#a=w,this.#w=!!w,this.#c=new Map,this.#u=new Array(t).fill(void 0),this.#l=new Array(t).fill(void 0),this.#d=new A(t),this.#p=new A(t),this.#h=0,this.#f=0,this.#y=d.create(t),this.#o=0,this.#s=0,"function"==typeof f&&(this.#n=f),"function"==typeof y?(this.#i=y,this.#g=[]):(this.#i=void 0,this.#g=void 0),this.#_=!!this.#n,this.#T=!!this.#i,this.noDisposeOnSet=!!g,this.noUpdateTTL=!!m,this.noDeleteOnFetchRejection=!!T,this.allowStaleOnFetchRejection=!!O,this.allowStaleOnFetchAbort=!!E,this.ignoreFetchAbort=!!x,0!==this.maxEntrySize){if(0!==this.#r&&!c(this.#r))throw new TypeError("maxSize must be a positive integer if specified");if(!c(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#I()}if(this.allowStale=!!h,this.noDeleteOnStaleGet=!!S,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!l,this.ttlResolution=c(i)||0===i?i:1,this.ttlAutopurge=!!o,this.ttl=r||0,this.ttl){if(!c(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#P()}if(0===this.#t&&0===this.ttl&&0===this.#r)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#t&&!this.#r){const e="LRU_CACHE_UNBOUNDED";(e=>!n.has(e))(e)&&(n.add(e),a("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",e,p))}}getRemainingTTL(e){return this.#c.has(e)?1/0:0}#P(){const e=new l(this.#t),t=new l(this.#t);this.#v=e,this.#b=t,this.#N=(n,i,a=r.now())=>{if(t[n]=0!==i?a:0,e[n]=i,0!==i&&this.ttlAutopurge){const e=setTimeout((()=>{this.#R(n)&&this.delete(this.#u[n])}),i+1);e.unref&&e.unref()}},this.#D=n=>{t[n]=0!==e[n]?r.now():0},this.#j=(r,a)=>{if(e[a]){const o=e[a],s=t[a];if(!o||!s)return;r.ttl=o,r.start=s,r.now=n||i();const c=r.now-s;r.remainingTTL=o-c}};let n=0;const i=()=>{const e=r.now();if(this.ttlResolution>0){n=e;const t=setTimeout((()=>n=0),this.ttlResolution);t.unref&&t.unref()}return e};this.getRemainingTTL=r=>{const a=this.#c.get(r);if(void 0===a)return 0;const o=e[a],s=t[a];return o&&s?o-((n||i())-s):1/0},this.#R=r=>{const a=t[r],o=e[r];return!!o&&!!a&&(n||i())-a>o}}#D=()=>{};#j=()=>{};#N=()=>{};#R=()=>!1;#I(){const e=new l(this.#t);this.#s=0,this.#m=e,this.#C=t=>{this.#s-=e[t],e[t]=0},this.#M=(e,t,r,n)=>{if(this.#S(t))return 0;if(!c(r)){if(!n)throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");if("function"!=typeof n)throw new TypeError("sizeCalculation must be a function");if(r=n(t,e),!c(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}return r},this.#L=(t,r,n)=>{if(e[t]=r,this.#r){const r=this.#r-e[t];for(;this.#s>r;)this.#k(!0)}this.#s+=e[t],n&&(n.entrySize=r,n.totalCalculatedSize=this.#s)}}#C=e=>{};#L=(e,t,r)=>{};#M=(e,t,r,n)=>{if(r||n)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#x({allowStale:e=this.allowStale}={}){if(this.#o)for(let t=this.#f;this.#F(t)&&(!e&&this.#R(t)||(yield t),t!==this.#h);)t=this.#p[t]}*#A({allowStale:e=this.allowStale}={}){if(this.#o)for(let t=this.#h;this.#F(t)&&(!e&&this.#R(t)||(yield t),t!==this.#f);)t=this.#d[t]}#F(e){return void 0!==e&&this.#c.get(this.#u[e])===e}*entries(){for(const e of this.#x())void 0===this.#l[e]||void 0===this.#u[e]||this.#S(this.#l[e])||(yield[this.#u[e],this.#l[e]])}*rentries(){for(const e of this.#A())void 0===this.#l[e]||void 0===this.#u[e]||this.#S(this.#l[e])||(yield[this.#u[e],this.#l[e]])}*keys(){for(const e of this.#x()){const t=this.#u[e];void 0===t||this.#S(this.#l[e])||(yield t)}}*rkeys(){for(const e of this.#A()){const t=this.#u[e];void 0===t||this.#S(this.#l[e])||(yield t)}}*values(){for(const e of this.#x())void 0===this.#l[e]||this.#S(this.#l[e])||(yield this.#l[e])}*rvalues(){for(const e of this.#A())void 0===this.#l[e]||this.#S(this.#l[e])||(yield this.#l[e])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,t={}){for(const r of this.#x()){const n=this.#l[r],i=this.#S(n)?n.__staleWhileFetching:n;if(void 0!==i&&e(i,this.#u[r],this))return this.get(this.#u[r],t)}}forEach(e,t=this){for(const r of this.#x()){const n=this.#l[r],i=this.#S(n)?n.__staleWhileFetching:n;void 0!==i&&e.call(t,i,this.#u[r],this)}}rforEach(e,t=this){for(const r of this.#A()){const n=this.#l[r],i=this.#S(n)?n.__staleWhileFetching:n;void 0!==i&&e.call(t,i,this.#u[r],this)}}purgeStale(){let e=!1;for(const t of this.#A({allowStale:!0}))this.#R(t)&&(this.delete(this.#u[t]),e=!0);return e}info(e){const t=this.#c.get(e);if(void 0===t)return;const n=this.#l[t],i=this.#S(n)?n.__staleWhileFetching:n;if(void 0===i)return;const a={value:i};if(this.#v&&this.#b){const e=this.#v[t],n=this.#b[t];if(e&&n){const t=e-(r.now()-n);a.ttl=t,a.start=Date.now()}}return this.#m&&(a.size=this.#m[t]),a}dump(){const e=[];for(const t of this.#x({allowStale:!0})){const n=this.#u[t],i=this.#l[t],a=this.#S(i)?i.__staleWhileFetching:i;if(void 0===a||void 0===n)continue;const o={value:a};if(this.#v&&this.#b){o.ttl=this.#v[t];const e=r.now()-this.#b[t];o.start=Math.floor(Date.now()-e)}this.#m&&(o.size=this.#m[t]),e.unshift([n,o])}return e}load(e){this.clear();for(const[t,n]of e){if(n.start){const e=Date.now()-n.start;n.start=r.now()-e}this.set(t,n.value,n)}}set(e,t,r={}){if(void 0===t)return this.delete(e),this;const{ttl:n=this.ttl,start:i,noDisposeOnSet:a=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:s}=r;let{noUpdateTTL:c=this.noUpdateTTL}=r;const u=this.#M(e,t,r.size||0,o);if(this.maxEntrySize&&u>this.maxEntrySize)return s&&(s.set="miss",s.maxEntrySizeExceeded=!0),this.delete(e),this;let l=0===this.#o?void 0:this.#c.get(e);if(void 0===l)l=0===this.#o?this.#f:0!==this.#y.length?this.#y.pop():this.#o===this.#t?this.#k(!1):this.#o,this.#u[l]=e,this.#l[l]=t,this.#c.set(e,l),this.#d[this.#f]=l,this.#p[l]=this.#f,this.#f=l,this.#o++,this.#L(l,u,s),s&&(s.set="add"),c=!1;else{this.#E(l);const r=this.#l[l];if(t!==r){if(this.#w&&this.#S(r)){r.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:t}=r;void 0===t||a||(this.#_&&this.#n?.(t,e,"set"),this.#T&&this.#g?.push([t,e,"set"]))}else a||(this.#_&&this.#n?.(r,e,"set"),this.#T&&this.#g?.push([r,e,"set"]));if(this.#C(l),this.#L(l,u,s),this.#l[l]=t,s){s.set="replace";const e=r&&this.#S(r)?r.__staleWhileFetching:r;void 0!==e&&(s.oldValue=e)}}else s&&(s.set="update")}if(0===n||this.#v||this.#P(),this.#v&&(c||this.#N(l,n,i),s&&this.#j(s,l)),!a&&this.#T&&this.#g){const e=this.#g;let t;for(;t=e?.shift();)this.#i?.(...t)}return this}pop(){try{for(;this.#o;){const e=this.#l[this.#h];if(this.#k(!0),this.#S(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(void 0!==e)return e}}finally{if(this.#T&&this.#g){const e=this.#g;let t;for(;t=e?.shift();)this.#i?.(...t)}}}#k(e){const t=this.#h,r=this.#u[t],n=this.#l[t];return this.#w&&this.#S(n)?n.__abortController.abort(new Error("evicted")):(this.#_||this.#T)&&(this.#_&&this.#n?.(n,r,"evict"),this.#T&&this.#g?.push([n,r,"evict"])),this.#C(t),e&&(this.#u[t]=void 0,this.#l[t]=void 0,this.#y.push(t)),1===this.#o?(this.#h=this.#f=0,this.#y.length=0):this.#h=this.#d[t],this.#c.delete(r),this.#o--,t}has(e,t={}){const{updateAgeOnHas:r=this.updateAgeOnHas,status:n}=t,i=this.#c.get(e);if(void 0!==i){const e=this.#l[i];if(this.#S(e)&&void 0===e.__staleWhileFetching)return!1;if(!this.#R(i))return r&&this.#D(i),n&&(n.has="hit",this.#j(n,i)),!0;n&&(n.has="stale",this.#j(n,i))}else n&&(n.has="miss");return!1}peek(e,t={}){const{allowStale:r=this.allowStale}=t,n=this.#c.get(e);if(void 0===n||!r&&this.#R(n))return;const i=this.#l[n];return this.#S(i)?i.__staleWhileFetching:i}#O(e,t,r,n){const i=void 0===t?void 0:this.#l[t];if(this.#S(i))return i;const a=new o,{signal:s}=r;s?.addEventListener("abort",(()=>a.abort(s.reason)),{signal:a.signal});const c={signal:a.signal,options:r,context:n},u=(n,i=!1)=>{const{aborted:o}=a.signal,s=r.ignoreFetchAbort&&void 0!==n;if(r.status&&(o&&!i?(r.status.fetchAborted=!0,r.status.fetchError=a.signal.reason,s&&(r.status.fetchAbortIgnored=!0)):r.status.fetchResolved=!0),o&&!s&&!i)return l(a.signal.reason);const u=d;return this.#l[t]===d&&(void 0===n?u.__staleWhileFetching?this.#l[t]=u.__staleWhileFetching:this.delete(e):(r.status&&(r.status.fetchUpdated=!0),this.set(e,n,c.options))),n},l=n=>{const{aborted:i}=a.signal,o=i&&r.allowStaleOnFetchAbort,s=o||r.allowStaleOnFetchRejection,c=s||r.noDeleteOnFetchRejection,u=d;if(this.#l[t]===d&&(c&&void 0!==u.__staleWhileFetching?o||(this.#l[t]=u.__staleWhileFetching):this.delete(e)),s)return r.status&&void 0!==u.__staleWhileFetching&&(r.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw n};r.status&&(r.status.fetchDispatched=!0);const d=new Promise(((t,n)=>{const o=this.#a?.(e,i,c);o&&o instanceof Promise&&o.then((e=>t(void 0===e?void 0:e)),n),a.signal.addEventListener("abort",(()=>{r.ignoreFetchAbort&&!r.allowStaleOnFetchAbort||(t(void 0),r.allowStaleOnFetchAbort&&(t=e=>u(e,!0)))}))})).then(u,(e=>(r.status&&(r.status.fetchRejected=!0,r.status.fetchError=e),l(e)))),p=Object.assign(d,{__abortController:a,__staleWhileFetching:i,__returned:void 0});return void 0===t?(this.set(e,p,{...c.options,status:void 0}),t=this.#c.get(e)):this.#l[t]=p,p}#S(e){if(!this.#w)return!1;const t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof o}async fetch(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:i=this.noDeleteOnStaleGet,ttl:a=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:s=0,sizeCalculation:c=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:l=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:p=this.ignoreFetchAbort,allowStaleOnFetchAbort:h=this.allowStaleOnFetchAbort,context:f,forceRefresh:y=!1,status:g,signal:m}=t;if(!this.#w)return g&&(g.fetch="get"),this.get(e,{allowStale:r,updateAgeOnGet:n,noDeleteOnStaleGet:i,status:g});const b={allowStale:r,updateAgeOnGet:n,noDeleteOnStaleGet:i,ttl:a,noDisposeOnSet:o,size:s,sizeCalculation:c,noUpdateTTL:u,noDeleteOnFetchRejection:l,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:h,ignoreFetchAbort:p,status:g,signal:m};let v=this.#c.get(e);if(void 0===v){g&&(g.fetch="miss");const t=this.#O(e,v,b,f);return t.__returned=t}{const t=this.#l[v];if(this.#S(t)){const e=r&&void 0!==t.__staleWhileFetching;return g&&(g.fetch="inflight",e&&(g.returnedStale=!0)),e?t.__staleWhileFetching:t.__returned=t}const i=this.#R(v);if(!y&&!i)return g&&(g.fetch="hit"),this.#E(v),n&&this.#D(v),g&&this.#j(g,v),t;const a=this.#O(e,v,b,f),o=void 0!==a.__staleWhileFetching&&r;return g&&(g.fetch=i?"stale":"refresh",o&&i&&(g.returnedStale=!0)),o?a.__staleWhileFetching:a.__returned=a}}get(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:i=this.noDeleteOnStaleGet,status:a}=t,o=this.#c.get(e);if(void 0!==o){const t=this.#l[o],s=this.#S(t);return a&&this.#j(a,o),this.#R(o)?(a&&(a.get="stale"),s?(a&&r&&void 0!==t.__staleWhileFetching&&(a.returnedStale=!0),r?t.__staleWhileFetching:void 0):(i||this.delete(e),a&&r&&(a.returnedStale=!0),r?t:void 0)):(a&&(a.get="hit"),s?t.__staleWhileFetching:(this.#E(o),n&&this.#D(o),t))}a&&(a.get="miss")}#B(e,t){this.#p[t]=e,this.#d[e]=t}#E(e){e!==this.#f&&(e===this.#h?this.#h=this.#d[e]:this.#B(this.#p[e],this.#d[e]),this.#B(this.#f,e),this.#f=e)}delete(e){let t=!1;if(0!==this.#o){const r=this.#c.get(e);if(void 0!==r)if(t=!0,1===this.#o)this.clear();else{this.#C(r);const t=this.#l[r];if(this.#S(t)?t.__abortController.abort(new Error("deleted")):(this.#_||this.#T)&&(this.#_&&this.#n?.(t,e,"delete"),this.#T&&this.#g?.push([t,e,"delete"])),this.#c.delete(e),this.#u[r]=void 0,this.#l[r]=void 0,r===this.#f)this.#f=this.#p[r];else if(r===this.#h)this.#h=this.#d[r];else{const e=this.#p[r];this.#d[e]=this.#d[r];const t=this.#d[r];this.#p[t]=this.#p[r]}this.#o--,this.#y.push(r)}}if(this.#T&&this.#g?.length){const e=this.#g;let t;for(;t=e?.shift();)this.#i?.(...t)}return t}clear(){for(const e of this.#A({allowStale:!0})){const t=this.#l[e];if(this.#S(t))t.__abortController.abort(new Error("deleted"));else{const r=this.#u[e];this.#_&&this.#n?.(t,r,"delete"),this.#T&&this.#g?.push([t,r,"delete"])}}if(this.#c.clear(),this.#l.fill(void 0),this.#u.fill(void 0),this.#v&&this.#b&&(this.#v.fill(0),this.#b.fill(0)),this.#m&&this.#m.fill(0),this.#h=0,this.#f=0,this.#y.length=0,this.#s=0,this.#o=0,this.#T&&this.#g){const e=this.#g;let t;for(;t=e?.shift();)this.#i?.(...t)}}}t.LRUCache=p},12037:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.readableFromWeb=t.ReadableFromWeb=void 0;const n=r(58521);class i extends n.Readable{constructor(e,t){super(t),this.reader=e.getReader(),this.readerClosed=!1,this.reader.closed.then((()=>{this.readerClosed=!0})).catch((e=>{this.readerClosed=!0,this.destroy(e)}))}_read(){this.reader.read().then((e=>this.push(e.done?null:e.value))).catch((e=>this.destroy(e)))}destroy(e){return this.readerClosed||this.reader.cancel(e).then().catch((()=>{})),super.destroy(e)}}t.ReadableFromWeb=i,t.readableFromWeb=function(e,t){return new i(e,t)}},33523:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.readableFromWeb=void 0;var n=r(12037);Object.defineProperty(t,"readableFromWeb",{enumerable:!0,get:function(){return n.readableFromWeb}})},94066:e=>{"use strict";e.exports=JSON.parse('{"http://schema.org/":{"properties":{"additionalType":{"subPropertyOf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type"}}},"http://microformats.org/profile/hcard":{}}')},45497:e=>{"use strict";e.exports=JSON.parse('{"@context":{"alternate":"http://www.w3.org/1999/xhtml/vocab#alternate","appendix":"http://www.w3.org/1999/xhtml/vocab#appendix","cite":"http://www.w3.org/1999/xhtml/vocab#cite","bookmark":"http://www.w3.org/1999/xhtml/vocab#bookmark","contents":"http://www.w3.org/1999/xhtml/vocab#contents","chapter":"http://www.w3.org/1999/xhtml/vocab#chapter","copyright":"http://www.w3.org/1999/xhtml/vocab#copyright","first":"http://www.w3.org/1999/xhtml/vocab#first","glossary":"http://www.w3.org/1999/xhtml/vocab#glossary","help":"http://www.w3.org/1999/xhtml/vocab#help","icon":"http://www.w3.org/1999/xhtml/vocab#icon","index":"http://www.w3.org/1999/xhtml/vocab#index","last":"http://www.w3.org/1999/xhtml/vocab#last","license":"http://www.w3.org/1999/xhtml/vocab#license","meta":"http://www.w3.org/1999/xhtml/vocab#meta","next":"http://www.w3.org/1999/xhtml/vocab#next","prev":"http://www.w3.org/1999/xhtml/vocab#prev","previous":"http://www.w3.org/1999/xhtml/vocab#previous","section":"http://www.w3.org/1999/xhtml/vocab#section","start":"http://www.w3.org/1999/xhtml/vocab#start","stylesheet":"http://www.w3.org/1999/xhtml/vocab#stylesheet","subsection":"http://www.w3.org/1999/xhtml/vocab#subsection","top":"http://www.w3.org/1999/xhtml/vocab#top","up":"http://www.w3.org/1999/xhtml/vocab#up","p3pv1":"http://www.w3.org/1999/xhtml/vocab#p3pv1"}}')},68713:e=>{"use strict";e.exports=JSON.parse('{"@context":{"as":"https://www.w3.org/ns/activitystreams#","cat":"http://www.w3.org/ns/dcat#","cc":"http://creativecommons.org/ns#","cnt":"http://www.w3.org/2008/content#","csvw":"http://www.w3.org/ns/csvw#","ctag":"http://commontag.org/ns#","dc":"http://purl.org/dc/terms/","dc11":"http://purl.org/dc/elements/1.1/","dcat":"http://www.w3.org/ns/dcat#","dcterms":"http://purl.org/dc/terms/","dqv":"http://www.w3.org/ns/dqv#","duv":"https://www.w3.org/TR/vocab-duv#","earl":"http://www.w3.org/ns/earl#","foaf":"http://xmlns.com/foaf/0.1/","gldp":"http://www.w3.org/ns/people#","gr":"http://purl.org/goodrelations/v1#","grddl":"http://www.w3.org/2003/g/data-view#","ht":"http://www.w3.org/2006/http#","ical":"http://www.w3.org/2002/12/cal/icaltzd#","ldp":"http://www.w3.org/ns/ldp#","ma":"http://www.w3.org/ns/ma-ont#","oa":"http://www.w3.org/ns/oa#","odrl":"http://www.w3.org/ns/odrl/2/","og":"http://ogp.me/ns#","org":"http://www.w3.org/ns/org#","owl":"http://www.w3.org/2002/07/owl#","prov":"http://www.w3.org/ns/prov#","ptr":"http://www.w3.org/2009/pointers#","qb":"http://purl.org/linked-data/cube#","rev":"http://purl.org/stuff/rev#","rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdfa":"http://www.w3.org/ns/rdfa#","rdfs":"http://www.w3.org/2000/01/rdf-schema#","rif":"http://www.w3.org/2007/rif#","rr":"http://www.w3.org/ns/r2rml#","schema":"http://schema.org/","sd":"http://www.w3.org/ns/sparql-service-description#","sioc":"http://rdfs.org/sioc/ns#","skos":"http://www.w3.org/2004/02/skos/core#","skosxl":"http://www.w3.org/2008/05/skos-xl#","ssn":"http://www.w3.org/ns/ssn/","sosa":"http://www.w3.org/ns/sosa/","time":"http://www.w3.org/2006/time#","v":"http://rdf.data-vocabulary.org/#","vcard":"http://www.w3.org/2006/vcard/ns#","void":"http://rdfs.org/ns/void#","wdr":"http://www.w3.org/2007/05/powder#","wdrs":"http://www.w3.org/2007/05/powder-s#","xhv":"http://www.w3.org/1999/xhtml/vocab#","xml":"http://www.w3.org/XML/1998/namespace","xsd":"http://www.w3.org/2001/XMLSchema#","describedby":"http://www.w3.org/2007/05/powder-s#describedby","license":"http://www.w3.org/1999/xhtml/vocab#license","role":"http://www.w3.org/1999/xhtml/vocab#role"}}')}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,r),a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n=r(90128);Comunica=n})(); //# sourceMappingURL=comunica-browser.js.map \ No newline at end of file diff --git a/versions/latest/engines/query-sparql/comunica-browser.js.map b/versions/latest/engines/query-sparql/comunica-browser.js.map index 81aa6a1..ef273c0 100644 --- a/versions/latest/engines/query-sparql/comunica-browser.js.map +++ b/versions/latest/engines/query-sparql/comunica-browser.js.map @@ -1 +1 @@ -{"version":3,"file":"comunica-browser.js","mappings":"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QACtBtJ,EAAQkK,SAAWuC,EAAIvC,SACvBnK,EAAOC,QAAUA,8BCroBjB9C,OAAO+C,eAAeD,EAAS,aAAc,CAAEhE,OAAO,IACtDgE,EAAQqgH,eAAiBrgH,EAAQsgH,kBAAe,EAChDtgH,EAAQsgH,aAAe,IAAI7iG,IAAI,CAC3B,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,YACFxc,KAAI,SAAU0nD,GAAO,MAAO,CAACA,EAAIvnD,cAAeunD,EAAM,KACxD3oD,EAAQqgH,eAAiB,IAAI5iG,IAAI,CAC7B,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,cACFxc,KAAI,SAAU0nD,GAAO,MAAO,CAACA,EAAIvnD,cAAeunD,EAAM,wCCrGxD,IAAI43D,EAAYzkH,MAAQA,KAAKykH,UAAa,WAStC,OARAA,EAAWrjH,OAAOyU,QAAU,SAAS0gG,GACjC,IAAK,IAAIrxG,EAAG7D,EAAI,EAAGuB,EAAIkgB,UAAUvhB,OAAQF,EAAIuB,EAAGvB,IAE5C,IAAK,IAAIoH,KADTvD,EAAI4d,UAAUzhB,GACOD,OAAOM,UAAUgH,eAAeC,KAAKzD,EAAGuD,KACzD8tG,EAAE9tG,GAAKvD,EAAEuD,IAEjB,OAAO8tG,CACX,EACOkO,EAASl+G,MAAMvG,KAAM8iB,UAChC,EACIhb,EAAmB9H,MAAQA,KAAK8H,kBAAqB1G,OAAO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AC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,GAAI,UAAW,CAAC,GAAI,WAAY,CAAC,GAAI,YAAa,CAAC,GAAI,WAAY,CAAC,IAAK,UAAW,CAAC,EAAG,WAAY,CAAC,GAAI,WAAY,CAAC,EAAG,oBAAqB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,sBAAuB,CAAC,EAAG,WAAY,CAAC,GAAI,eAAgB,CAAC,IAAK,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,aAAc,CAAC,EAAG,QAAS,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,aAAc,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,aAAc,CAAC,EAAG,QAAS,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,GAAI,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,iBAAkB,CAAC,GAAI,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,KAAM,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,yBAA0B,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,qBAAsB,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,2BAA4B,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,GAAI,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE0kD,EAAG,gBAAiB9pD,EAAG,KAAMoF,EAAG,iBAAmB,CAAC,EAAG,aAAc,CAAC,EAAG,QAAS,CAAC,EAAG,oBAAqB,CAAC,EAAG,QAAS,CAAC,GAAI,UAAW,CAAC,GAAI,UAAW,CAAC,EAAG,YAAa,CAAC,GAAI,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,cAAe,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,QAAS,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,gBAAiB,CAAC,EAAG,eAAgB,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,GAAI,0BAA2B,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,GAAI,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,GAAI,UAAW,CAAC,EAAG,kBAAmB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,iBAAkB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,qBAAsB,CAAC,EAAG,oBAAqB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,IAAKoF,EAAG,aAAe,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,kBAAmB,CAAC,EAAG,cAAe,CAAC,EAAG,SAAU,CAAC,EAAG,kBAAmB,CAAC,EAAG,mBAAoB,CAAC,EAAG,oBAAqB,CAAC,EAAG,YAAa,CAAC,EAAG,oBAAqB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,qBAAsB,CAAC,EAAG,sBAAuB,CAAC,EAAG,mBAAoB,CAAC,EAAG,oBAAqB,CAAC,EAAG,mBAAoB,CAAC,EAAG,kBAAmB,CAAC,EAAG,WAAY,CAAC,EAAG,qBAAsB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,yBAA0B,CAAC,EAAG,WAAY,CAAC,EAAG,yBAA0B,CAAC,EAAG,oBAAqB,CAAC,EAAG,gBAAiB,CAAC,EAAG,sBAAuB,CAAC,EAAG,WAAY,CAAC,EAAG,uBAAwB,CAAC,EAAG,iBAAkB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,qBAAsB,CAAC,EAAG,mBAAoB,CAAC,EAAG,sBAAuB,CAAC,EAAG,UAAW,CAAC,EAAG,0BAA2B,CAAC,EAAG,uBAAwB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,GAAI,sBAAuB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,CAAE0kD,EAAG,SAAU9pD,EAAG,IAAKoF,EAAG,YAAc,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,aAAc,CAAC,EAAG,gBAAiB,CAAC,EAAG,QAAS,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,eAAgB,CAAC,EAAG,aAAc,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,KAAMoF,EAAG,WAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,uBAAwB,CAAC,EAAG,0BAA2B,CAAC,EAAG,SAAU,CAAC,EAAG,QAAS,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,MAAOoF,EAAG,WAAa,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,MAAOoF,EAAG,WAAa,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,8BAA+B,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,KAAMoF,EAAG,YAAc,CAAC,EAAG,CAAE0kD,EAAG,YAAa9pD,EAAG,IAAKoF,EAAG,WAAa,CAAC,EAAG,CAAE0kD,EAAG,OAAQ9pD,EAAG,IAAKoF,EAAG,UAAY,CAAC,EAAG,SAAU,CAAC,EAAG,mBAAoB,CAAC,EAAG,cAAe,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,IAAKoF,EAAG,YAAc,CAAC,EAAG,UAAW,CAAC,EAAG,mBAAoB,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,QAAS,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,CAAE0kD,EAAG,SAAU9pD,EAAG,IAAKoF,EAAG,YAAc,CAAC,EAAG,cAAe,CAAC,EAAG,CAAE0kD,EAAG,YAAa9pD,EAAG,KAAMoF,EAAG,WAAa,CAAC,EAAG,CAAE0kD,EAAG,SAAU9pD,EAAG,IAAKoF,EAAG,YAAc,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,IAAKoF,EAAG,aAAe,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,IAAKoF,EAAG,YAAc,CAAC,EAAG,cAAe,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,QAAS,CAAC,EAAG,CAAE0kD,EAAG,cAAe9pD,EAAG,KAAMoF,EAAG,cAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE0kD,EAAG,OAAQ9pD,EAAG,KAAMoF,EAAG,WAAa,CAAC,EAAG,CAAE0kD,EAAG,OAAQ9pD,EAAG,KAAMoF,EAAG,WAAa,CAAC,EAAG,CAAE0kD,EAAG,OAAQ9pD,EAAG,IAAKoF,EAAG,UAAY,CAAC,EAAG,CAAE0kD,EAAG,OAAQ9pD,EAAG,IAAKoF,EAAG,UAAY,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,MAAOoF,EAAG,gBAAkB,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,MAAOoF,EAAG,gBAAkB,CAAC,EAAG,CAAE0kD,EAAG,OAAQ9pD,EAAG,IAAI+e,IAAoByzG,EAAY,CAAC,CAAC,IAAK,UAAW,CAAC,KAAM,cAAgB,CAAC,EAAG,CAAE1oE,EAAG,OAAQ9pD,EAAG,IAAI+e,IAAoByzG,EAAY,CAAC,CAAC,IAAK,UAAW,CAAC,KAAM,cAAgB,CAAC,EAAG,aAAc,CAAC,EAAG,eAAgB,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,aAAc,CAAC,EAAG,kBAAmB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,iBAAkB,CAAC,EAAG,QAAS,CAAC,EAAG,oBAAqB,CAAC,EAAG,oBAAqB,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,mBAAoB,CAAC,EAAG,CAAE1oE,EAAG,UAAW9pD,EAAG,IAAKoF,EAAG,uBAAyB,CAAC,EAAG,iBAAkB,CAAC,EAAG,iBAAkB,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,KAAMoF,EAAG,gBAAkB,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,KAAMoF,EAAG,kBAAoB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,oBAAqB,CAAC,EAAG,sBAAuB,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,MAAOoF,EAAG,mBAAqB,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,MAAOoF,EAAG,mBAAqB,CAAC,EAAG,YAAa,CAAC,EAAG,eAAgB,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,IAAKoF,EAAG,sBAAwB,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,IAAKoF,EAAG,wBAA0B,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,MAAOoF,EAAG,aAAe,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,MAAOoF,EAAG,aAAe,CAAC,EAAG,gBAAiB,CAAC,EAAG,iBAAkB,CAAC,EAAG,iBAAkB,CAAC,EAAG,UAAW,CAAC,EAAG,eAAgB,CAAC,EAAG,iBAAkB,CAAC,EAAG,gBAAiB,CAAC,EAAG,iBAAkB,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,eAAgB,CAAC,EAAG,cAAe,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,oBAAqB,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,kBAAmB,CAAC,EAAG,mBAAoB,CAAC,EAAG,CAAE0kD,EAAG,sBAAuB9pD,EAAG,KAAMoF,EAAG,cAAgB,CAAC,EAAG,CAAE0kD,EAAG,uBAAwB9pD,EAAG,KAAMoF,EAAG,cAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,mBAAoB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,oBAAqB,CAAC,EAAG,qBAAsB,CAAC,EAAG,eAAgB,CAAC,EAAG,cAAe,CAAC,EAAG,gBAAiB,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE0kD,EAAG,OAAQ9pD,EAAG,IAAKoF,EAAG,UAAY,CAAC,EAAG,CAAE0kD,EAAG,OAAQ9pD,EAAG,IAAKoF,EAAG,UAAY,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,MAAOoF,EAAG,WAAa,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,MAAOoF,EAAG,WAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,2BAA4B,CAAC,EAAG,2BAA4B,CAAC,EAAG,0BAA2B,CAAC,EAAG,4BAA6B,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,sBAAuB,CAAC,EAAG,YAAa,CAAC,EAAG,2BAA4B,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE0kD,EAAG,YAAa9pD,EAAG,IAAKoF,EAAG,eAAiB,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,IAAKoF,EAAG,aAAe,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,GAAI,aAAc,CAAC,GAAI,gBAAiB,CAAC,EAAG,gBAAiB,CAAC,EAAG,iBAAkB,CAAC,EAAG,UAAW,CAAC,EAAG,cAAe,CAAC,GAAI,qBAAsB,CAAC,EAAG,sBAAuB,CAAC,EAAG,eAAgB,CAAC,EAAG,gBAAiB,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,GAAI,WAAY,CAAC,IAAK,cAAe,CAAC,GAAI,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,GAAI,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,GAAI,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,GAAI,YAAa,CAAC,EAAG,iBAAkB,CAAC,EAAG,0BAA2B,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,mBAAoB,CAAC,EAAG,mBAAoB,CAAC,EAAG,cAAe,CAAC,EAAG,wBAAyB,CAAC,EAAG,UAAW,CAAC,EAAG,qBAAsB,CAAC,EAAG,uBAAwB,CAAC,EAAG,UAAW,CAAC,EAAG,uBAAwB,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,GAAI,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,sBAAuB,CAAC,EAAG,uBAAwB,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,GAAI,YAAa,CAAC,EAAG,UAAW,CAAC,GAAI,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,iBAAkB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,IAAK,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,GAAI,UAAW,CAAC,GAAI,uBAAwB,CAAC,GAAI,WAAY,CAAC,EAAG,WAAY,CAAC,GAAI,cAAe,CAAC,EAAG,aAAc,CAAC,GAAI,uBAAwB,CAAC,EAAG,wBAAyB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,mBAAoB,CAAC,EAAG,oBAAqB,CAAC,EAAG,wBAAyB,CAAC,EAAG,yBAA0B,CAAC,EAAG,0BAA2B,CAAC,EAAG,8BAA+B,CAAC,EAAG,gBAAiB,CAAC,EAAG,cAAe,CAAC,IAAK,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,gBAAiB,CAAC,EAAG,kBAAmB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,IAAKoF,EAAG,aAAe,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,qBAAsB,CAAC,EAAG,uBAAwB,CAAC,EAAG,yBAA0B,CAAC,EAAG,sBAAuB,CAAC,EAAG,mBAAoB,CAAC,EAAG,oBAAqB,CAAC,EAAG,sBAAuB,CAAC,EAAG,wBAAyB,CAAC,EAAG,uBAAwB,CAAC,EAAG,wBAAyB,CAAC,EAAG,qBAAsB,CAAC,EAAG,uBAAwB,CAAC,EAAG,mBAAoB,CAAC,EAAG,oBAAqB,CAAC,EAAG,sBAAuB,CAAC,EAAG,wBAAyB,CAAC,EAAG,uBAAwB,CAAC,EAAG,wBAAyB,CAAC,EAAG,qBAAsB,CAAC,EAAG,uBAAwB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,kBAAmB,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,CAAE0kD,EAAG,oBAAqB9pD,EAAG,IAAKoF,EAAG,yBAA2B,CAAC,EAAG,CAAE0kD,EAAG,qBAAsB9pD,EAAG,IAAKoF,EAAG,0BAA4B,CAAC,GAAI,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,kBAAmB,CAAC,EAAG,iBAAkB,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,eAAgB,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,GAAI,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,SAAU,CAAC,EAAG,QAAS,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE0kD,EAAG,YAAa9pD,EAAG,IAAKoF,EAAG,eAAiB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,IAAKoF,EAAG,WAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,CAAE0kD,EAAG,aAAc9pD,EAAG,IAAKoF,EAAG,gBAAkB,CAAC,EAAG,CAAE0kD,EAAG,aAAc9pD,EAAG,IAAKoF,EAAG,gBAAkB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE0kD,EAAG,aAAc9pD,EAAG,IAAKoF,EAAG,wBAA0B,CAAC,EAAG,CAAE0kD,EAAG,mBAAoB9pD,EAAG,IAAKoF,EAAG,8BAAgC,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,CAAE0kD,EAAG,SAAU9pD,EAAG,MAAOoF,EAAG,YAAc,CAAC,EAAG,CAAE0kD,EAAG,SAAU9pD,EAAG,MAAOoF,EAAG,YAAc,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE0kD,EAAG,kBAAmB9pD,EAAG,IAAKoF,EAAG,uBAAyB,CAAC,EAAG,CAAE0kD,EAAG,QAAS9pD,EAAG,IAAKoF,EAAG,uBAAyB,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,cAAe,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,iBAAkB,CAAC,EAAG,WAAY,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,CAAE0kD,EAAG,SAAU9pD,EAAG,IAAKoF,EAAG,YAAc,CAAC,EAAG,CAAE0kD,EAAG,SAAU9pD,EAAG,IAAKoF,EAAG,YAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,MAAOoF,EAAG,oBAAsB,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,MAAOoF,EAAG,oBAAsB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE0kD,EAAG,UAAW9pD,EAAG,KAAMoF,EAAG,aAAe,CAAC,MAAO,CAAEpF,EAAG,IAAI+e,IAAoByzG,EAAY,CAAC,CAAC,MAAO,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,GAAI,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EA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AE,GAAG,GAAG,IAAI,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAA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CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,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AI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKuP,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,IAAI,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,I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AG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GA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,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO,GAEhB,KAAK,IAAI,OAAO,GAEhB,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO,GAEhB,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO,GAEhB,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO,IAEhB,KAAK,IAAI,OAAO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","sources":["webpack://Comunica/../../node_modules/@bergos/jsonparse/jsonparse.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/fragment.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/index.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/fetchContext.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/index.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/lookupAllPrefixes.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/lookupNamespace.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/dist/lookup/lookupPrefix.js","webpack://Comunica/../../node_modules/@jeswr/prefixcc/node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://Comunica/../../node_modules/@jeswr/stream-to-string/dist/index.js","webpack://Comunica/../../node_modules/@rubensworks/saxes/saxes.js","webpack://Comunica/../../node_modules/@smessie/readable-web-to-node-stream/lib/index.js","webpack://Comunica/../../node_modules/abort-controller/browser.js","webpack://Comunica/../../node_modules/arrayify-stream/index.js","webpack://Comunica/../../node_modules/asyncjoin/index.js","webpack://Comunica/../../node_modules/asyncjoin/join/DynamicNestedLoopJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/HashJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/NestedLoopJoin.js","webpack://Comunica/../../node_modules/asyncjoin/join/SymmetricHashJoin.js","webpack://Comunica/../../node_modules/asyncjoin/util/MergeIterator.js","webpack://Comunica/./engine-default.js","webpack://Comunica/QueryEngine.ts","webpack://Comunica/index-browser.ts","webpack://Comunica/ActorAbstractMediaTyped.ts","webpack://Comunica/ActorAbstractMediaTypedFixed.ts","webpack://Comunica/index.ts","webpack://Comunica/ActorAbstractPath.ts","webpack://Comunica/PathVariableObjectIterator.ts","webpack://Comunica/ActorContextPreprocessConvertShortcuts.ts","webpack://Comunica/ActorContextPreprocessQuerySourceIdentify.ts","webpack://Comunica/ActorContextPreprocessQuerySourceSkolemize.ts","webpack://Comunica/QuerySourceSkolemized.ts","webpack://Comunica/utils.ts","webpack://Comunica/ActorContextPreprocessSetDefaults.ts","webpack://Comunica/ActorContextPreprocessSourceToDestination.ts","webpack://Comunica/ActorDereferenceFallback.ts","webpack://Comunica/ActorDereferenceHttp-browser.ts","webpack://Comunica/ActorDereferenceHttpBase.ts","webpack://Comunica/ActorDereferenceRdfParse.ts","webpack://Comunica/ActorHashBindingsSha1.ts","webpack://Comunica/ActorHashQuadsSha1.ts","webpack://Comunica/ActorHttpFetch.ts","webpack://Comunica/FetchInitPreprocessor-browser.ts","webpack://Comunica/ActorHttpProxy.ts","webpack://Comunica/ProxyHandlerStatic.ts","webpack://Comunica/ActorHttpWayback.ts","webpack://Comunica/ActorInitQuery-browser.ts","webpack://Comunica/ActorInitQueryBase.ts","webpack://Comunica/QueryEngineBase.ts","webpack://Comunica/ActorOptimizeQueryOperationAssignSourcesExhaustive.ts","webpack://Comunica/ActorOptimizeQueryOperationBgpToJoin.ts","webpack://Comunica/ActorOptimizeQueryOperationConstructDistinct.ts","webpack://Comunica/ActorOptimizeQueryOperationDescribeToConstructsSubject.ts","webpack://Comunica/ActorOptimizeQueryOperationFilterPushdown.ts","webpack://Comunica/ActorOptimizeQueryOperationGroupSources.ts","webpack://Comunica/ActorOptimizeQueryOperationJoinBgp.ts","webpack://Comunica/ActorOptimizeQueryOperationJoinConnected.ts","webpack://Comunica/ActorOptimizeQueryOperationPruneEmptySourceOperations.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteAdd.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteCopy.ts","webpack://Comunica/ActorOptimizeQueryOperationRewriteMove.ts","webpack://Comunica/ActorQueryOperationAsk.ts","webpack://Comunica/ActorQueryOperationBgpJoin.ts","webpack://Comunica/ActorQueryOperationConstruct.ts","webpack://Comunica/BindingsToQuadsIterator.ts","webpack://Comunica/ActorQueryOperationDistinctHash.ts","webpack://Comunica/ActorQueryOperationExtend.ts","webpack://Comunica/ActorQueryOperationFilter.ts","webpack://Comunica/ActorQueryOperationFromQuad.ts","webpack://Comunica/ActorQueryOperationGroup.ts","webpack://Comunica/GroupsState.ts","webpack://Comunica/ActorQueryOperationJoin.ts","webpack://Comunica/ActorQueryOperationLeftJoin.ts","webpack://Comunica/ActorQueryOperationMinus.ts","webpack://Comunica/ActorQueryOperationNop.ts","webpack://Comunica/ActorQueryOperationOrderBy.ts","webpack://Comunica/SortIterator.ts","webpack://Comunica/ActorQueryOperationPathAlt.ts","webpack://Comunica/ActorQueryOperationPathInv.ts","webpack://Comunica/ActorQueryOperationPathLink.ts","webpack://Comunica/ActorQueryOperationPathNps.ts","webpack://Comunica/ActorQueryOperationPathOneOrMore.ts","webpack://Comunica/ActorQueryOperationPathSeq.ts","webpack://Comunica/ActorQueryOperationPathZeroOrMore.ts","webpack://Comunica/ActorQueryOperationPathZeroOrOne.ts","webpack://Comunica/ActorQueryOperationProject.ts","webpack://Comunica/ActorQueryOperationReducedHash.ts","webpack://Comunica/ActorQueryOperationService.ts","webpack://Comunica/ActorQueryOperationSlice.ts","webpack://Comunica/ActorQueryOperationSource.ts","webpack://Comunica/ActorQueryOperationUnion.ts","webpack://Comunica/ActorQueryOperationClear.ts","webpack://Comunica/ActorQueryOperationUpdateCompositeUpdate.ts","webpack://Comunica/ActorQueryOperationCreate.ts","webpack://Comunica/ActorQueryOperationUpdateDeleteInsert.ts","webpack://Comunica/ActorQueryOperationDrop.ts","webpack://Comunica/ActorQueryOperationLoad.ts","webpack://Comunica/ActorQueryOperationValues.ts","webpack://Comunica/ActorQueryParseGraphql.ts","webpack://Comunica/ActorQueryParseSparql.ts","webpack://Comunica/ActorQueryProcessExplainLogical.ts","webpack://Comunica/ActorQueryProcessExplainParsed.ts","webpack://Comunica/ActorQueryProcessExplainPhysical.ts","webpack://Comunica/MemoryPhysicalQueryPlanLogger.ts","webpack://Comunica/ActorQueryProcessSequential.ts","webpack://Comunica/ActorQueryResultSerializeJson.ts","webpack://Comunica/ActorQueryResultSerializeRdf.ts","webpack://Comunica/ActorQueryResultSerializeSimple.ts","webpack://Comunica/ActorQueryResultSerializeSparqlCsv.ts","webpack://Comunica/ActionObserverHttp.ts","webpack://Comunica/ActorQueryResultSerializeSparqlJson.ts","webpack://Comunica/ActorQueryResultSerializeSparqlTsv.ts","webpack://Comunica/ActorQueryResultSerializeSparqlXml.ts","webpack://Comunica/XmlSerializer.ts","webpack://Comunica/ActorQueryResultSerializeStats.ts","webpack://Comunica/ActorQueryResultSerializeTable.ts","webpack://Comunica/ActorQueryResultSerializeTree.ts","webpack://Comunica/ActorQuerySourceIdentifyHypermediaNone.ts","webpack://Comunica/ActorQuerySourceIdentifyHypermediaQpf.ts","webpack://Comunica/QuerySourceQpf.ts","webpack://Comunica/ActorQuerySourceIdentifyHypermediaSparql.ts","webpack://Comunica/QuerySourceSparql.ts","webpack://Comunica/ActorQuerySourceIdentifyHypermedia.ts","webpack://Comunica/LinkedRdfSourcesAsyncRdfIterator.ts","webpack://Comunica/MediatedLinkedRdfSourcesAsyncRdfIterator.ts","webpack://Comunica/QuerySourceHypermedia.ts","webpack://Comunica/StreamingStoreMetadata.ts","webpack://Comunica/ActorQuerySourceIdentifyRdfJs.ts","webpack://Comunica/QuerySourceRdfJs.ts","webpack://Comunica/ActorQuerySourceIdentifySerialized.ts","webpack://Comunica/ActorRdfJoinEntriesSortCardinality.ts","webpack://Comunica/ActorRdfJoinHash.ts","webpack://Comunica/ActorRdfJoinMultiBindSource.ts","webpack://Comunica/ActorRdfJoinMultiBind.ts","webpack://Comunica/ActorRdfJoinMultiEmpty.ts","webpack://Comunica/ActorRdfJoinMultiSmallestFilterBindings.ts","webpack://Comunica/ActorRdfJoinMultiSmallest.ts","webpack://Comunica/ActorRdfJoinNestedLoop.ts","webpack://Comunica/ActorRdfJoinNone.ts","webpack://Comunica/ActorRdfJoinSingle.ts","webpack://Comunica/ActorRdfJoinSymmetricHash.ts","webpack://Comunica/ActorRdfJoinMinusHashUndef.ts","webpack://Comunica/BindingsIndex.ts","webpack://Comunica/ActorRdfJoinMinusHash.ts","webpack://Comunica/ActorRdfJoinOptionalBind.ts","webpack://Comunica/ActorRdfJoinOptionalHash.ts","webpack://Comunica/BindingsIndexDef.ts","webpack://Comunica/BindingsIndexUndef.ts","webpack://Comunica/ActorRdfJoinOptionalNestedLoop.ts","webpack://Comunica/ActorRdfJoinSelectivityVariableCounting.ts","webpack://Comunica/ActorRdfMetadataAccumulateCanContainUndefs.ts","webpack://Comunica/ActorRdfMetadataAccumulateCardinality.ts","webpack://Comunica/ActorRdfMetadataAccumulatePageSize.ts","webpack://Comunica/ActorRdfMetadataAccumulateRequestTime.ts","webpack://Comunica/ActorRdfMetadataAll.ts","webpack://Comunica/ActorRdfMetadataExtractAllowHttpMethods.ts","webpack://Comunica/ActorRdfMetadataExtractHydraControls.ts","webpack://Comunica/ActorRdfMetadataExtractHydraCount.ts","webpack://Comunica/ActorRdfMetadataExtractHydraPagesize.ts","webpack://Comunica/ActorRdfMetadataExtractPatchSparqlUpdate.ts","webpack://Comunica/ActorRdfMetadataExtractPutAccepted.ts","webpack://Comunica/ActorRdfMetadataExtractRequestTime.ts","webpack://Comunica/ActorRdfMetadataExtractSparqlService.ts","webpack://Comunica/ActorRdfMetadataPrimaryTopic.ts","webpack://Comunica/ActorRdfParseHtmlMicrodata.ts","webpack://Comunica/ActorRdfParseHtmlRdfa.ts","webpack://Comunica/ActorRdfParseHtmlScript.ts","webpack://Comunica/HtmlScriptListener.ts","webpack://Comunica/ActorRdfParseHtml.ts","webpack://Comunica/ActorRdfParseJsonLd.ts","webpack://Comunica/DocumentLoaderMediated.ts","webpack://Comunica/ActorRdfParseN3.ts","webpack://Comunica/ActorRdfParseRdfXml.ts","webpack://Comunica/ActorRdfParseShaclc.ts","webpack://Comunica/PrefixWrappingIterator.ts","webpack://Comunica/ActorRdfParseXmlRdfa.ts","webpack://Comunica/ActorRdfResolveHypermediaLinksNext.ts","webpack://Comunica/ActorRdfResolveHypermediaLinksQueueFifo.ts","webpack://Comunica/LinkQueueFifo.ts","webpack://Comunica/ActorRdfSerializeJsonLd.ts","webpack://Comunica/ActorRdfSerializeN3.ts","webpack://Comunica/ActorRdfSerializeShaclc.ts","webpack://Comunica/ActorRdfUpdateHypermediaPatchSparqlUpdate.ts","webpack://Comunica/QuadDestinationPatchSparqlUpdate.ts","webpack://Comunica/ActorRdfUpdateHypermediaPutLdp.ts","webpack://Comunica/QuadDestinationPutLdp.ts","webpack://Comunica/ActorRdfUpdateHypermediaSparql.ts","webpack://Comunica/QuadDestinationSparql.ts","webpack://Comunica/ActorRdfUpdateQuadsHypermedia.ts","webpack://Comunica/ActorRdfUpdateQuadsRdfJsStore.ts","webpack://Comunica/RdfJsQuadDestination.ts","webpack://Comunica/Bindings.ts","webpack://Comunica/BindingsFactory.ts","webpack://Comunica/bindingsToString.ts","webpack://Comunica/ActorContextPreprocess.ts","webpack://Comunica/ActorDereferenceRdf.ts","webpack://Comunica/ActorDereference.ts","webpack://Comunica/ActorDereferenceBase.ts","webpack://Comunica/ActorDereferenceParse.ts","webpack://Comunica/ActorHashBindings.ts","webpack://Comunica/ActorHashQuads.ts","webpack://Comunica/ActorHttpInvalidate.ts","webpack://Comunica/ActorHttpInvalidateListenable.ts","webpack://Comunica/ActorHttp.ts","webpack://Comunica/ActorInit.ts","webpack://Comunica/ActorOptimizeQueryOperation.ts","webpack://Comunica/ActorQueryOperation.ts","webpack://Comunica/ActorQueryOperationTyped.ts","webpack://Comunica/ActorQueryOperationTypedMediated.ts","webpack://Comunica/BusQueryOperation.ts","webpack://Comunica/ClosableIterator.ts","webpack://Comunica/ClosableTransformIterator.ts","webpack://Comunica/ActorQueryParse.ts","webpack://Comunica/ActorQueryProcess.ts","webpack://Comunica/ActorQueryResultSerialize.ts","webpack://Comunica/ActorQueryResultSerializeFixedMediaTypes.ts","webpack://Comunica/ActorQuerySourceIdentify.ts","webpack://Comunica/Utils.ts","webpack://Comunica/ActorRdfJoinEntriesSort.ts","webpack://Comunica/ActorRdfJoinSelectivity.ts","webpack://Comunica/ActorRdfJoin.ts","webpack://Comunica/ChunkedIterator.ts","webpack://Comunica/instrumentIterator.ts","webpack://Comunica/ActorRdfMetadataAccumulate.ts","webpack://Comunica/ActorRdfMetadataExtract.ts","webpack://Comunica/ActorRdfMetadata.ts","webpack://Comunica/ActorRdfParse.ts","webpack://Comunica/ActorRdfParseFixedMediaTypes.ts","webpack://Comunica/ActorRdfResolveHypermediaLinksQueue.ts","webpack://Comunica/LinkQueueWrapper.ts","webpack://Comunica/ActorRdfResolveHypermediaLinks.ts","webpack://Comunica/ActorRdfSerialize.ts","webpack://Comunica/ActorRdfSerializeFixedMediaTypes.ts","webpack://Comunica/ActorRdfUpdateHypermedia.ts","webpack://Comunica/ActorRdfUpdateQuads.ts","webpack://Comunica/ActorRdfUpdateQuadsDestination.ts","webpack://Comunica/Keys.ts","webpack://Comunica/ActionContext.ts","webpack://Comunica/ActionObserver.ts","webpack://Comunica/Actor.ts","webpack://Comunica/Bus.ts","webpack://Comunica/BusIndexed.ts","webpack://Comunica/ContextEntries.ts","webpack://Comunica/Mediator.ts","webpack://Comunica/BlankNodeBindingsScoped.ts","webpack://Comunica/BlankNodeScoped.ts","webpack://Comunica/Aggregator.ts","webpack://Comunica/Average.ts","webpack://Comunica/Count.ts","webpack://Comunica/GroupConcat.ts","webpack://Comunica/Max.ts","webpack://Comunica/Min.ts","webpack://Comunica/Sample.ts","webpack://Comunica/Sum.ts","webpack://Comunica/WildcardCountAggregator.ts","webpack://Comunica/AggregateEvaluator.ts","webpack://Comunica/AsyncAggregateEvaluator.ts","webpack://Comunica/AsyncEvaluator.ts","webpack://Comunica/SyncEvaluator.ts","webpack://Comunica/AsyncRecursiveEvaluator.ts","webpack://Comunica/BaseAggregateEvaluator.ts","webpack://Comunica/BaseExpressionEvaluator.ts","webpack://Comunica/SyncRecursiveEvaluator.ts","webpack://Comunica/Aggregate.ts","webpack://Comunica/AsyncExtension.ts","webpack://Comunica/Existence.ts","webpack://Comunica/Expressions.ts","webpack://Comunica/Named.ts","webpack://Comunica/Operator.ts","webpack://Comunica/SpecialOperator.ts","webpack://Comunica/SyncExtension.ts","webpack://Comunica/Term.ts","webpack://Comunica/Variable.ts","webpack://Comunica/Core.ts","webpack://Comunica/Helpers.ts","webpack://Comunica/NamedFunctions.ts","webpack://Comunica/OverloadTree.ts","webpack://Comunica/RegularFunctions.ts","webpack://Comunica/SpecialFunctions.ts","webpack://Comunica/XPathFunctions.ts","webpack://Comunica/AlgebraTransformer.ts","webpack://Comunica/TermTransformer.ts","webpack://Comunica/Consts.ts","webpack://Comunica/DateTimeHelpers.ts","webpack://Comunica/Errors.ts","webpack://Comunica/Ordering.ts","webpack://Comunica/Parsing.ts","webpack://Comunica/Serialization.ts","webpack://Comunica/SpecAlgos.ts","webpack://Comunica/TypeHandling.ts","webpack://Comunica/LoggerVoid.ts","webpack://Comunica/MediatorAll.ts","webpack://Comunica/MediatorCombinePipeline.ts","webpack://Comunica/MediatorCombineUnion.ts","webpack://Comunica/MediatorJoinCoefficientsFixed.ts","webpack://Comunica/MediatorNumber.ts","webpack://Comunica/MediatorRace.ts","webpack://Comunica/MetadataValidationState.ts","webpack://Comunica/Logger.ts","webpack://Comunica/../../node_modules/base64-js/index.js","webpack://Comunica/../../node_modules/bignumber.js/bignumber.js","webpack://Comunica/../../node_modules/buffer/index.js","webpack://Comunica/../../node_modules/canonicalize/lib/canonicalize.js","webpack://Comunica/../../node_modules/cross-fetch/dist/browser-polyfill.js","webpack://Comunica/../../node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://Comunica/../../node_modules/dom-serializer/lib/foreignNames.js","webpack://Comunica/../../node_modules/dom-serializer/lib/index.js","webpack://Comunica/../../node_modules/domelementtype/lib/index.js","webpack://Comunica/../../node_modules/domhandler/lib/index.js","webpack://Comunica/../../node_modules/domhandler/lib/node.js","webpack://Comunica/../../node_modules/domutils/lib/feeds.js","webpack://Comunica/../../node_modules/domutils/lib/helpers.js","webpack://Comunica/../../node_modules/domutils/lib/index.js","webpack://Comunica/../../node_modules/domutils/lib/legacy.js","webpack://Comunica/../../node_modules/domutils/lib/manipulation.js","webpack://Comunica/../../node_modules/domutils/lib/querying.js","webpack://Comunica/../../node_modules/domutils/lib/stringify.js","webpack://Comunica/../../node_modules/domutils/lib/traversal.js","webpack://Comunica/../../node_modules/entities/lib/decode.js","webpack://Comunica/../../node_modules/entities/lib/decode_codepoint.js","webpack://Comunica/../../node_modules/entities/lib/encode.js","webpack://Comunica/../../node_modules/entities/lib/escape.js","webpack://Comunica/../../node_modules/entities/lib/generated/decode-data-html.js","webpack://Comunica/../../node_modules/entities/lib/generated/decode-data-xml.js","webpack://Comunica/../../node_modules/entities/lib/generated/encode-html.js","webpack://Comunica/../../node_modules/entities/lib/index.js","webpack://Comunica/../../node_modules/event-emitter-promisify/dist/index.js","webpack://Comunica/../../node_modules/events/events.js","webpack://Comunica/../../node_modules/fast-deep-equal/es6/index.js","webpack://Comunica/../../node_modules/fetch-sparql-endpoint/index.js","webpack://Comunica/../../node_modules/fetch-sparql-endpoint/lib/SparqlEndpointFetcher.js","webpack://Comunica/../../node_modules/fetch-sparql-endpoint/node_modules/cross-fetch/dist/browser-polyfill.js","webpack://Comunica/../../node_modules/graphql-to-sparql/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/Converter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/IConvertContext.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/IConvertSettings.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/Util.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionFragment.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionOperation.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDocument.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionField.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionFragmentSpread.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionInlineFragment.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerInclude.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerOptional.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerPlural.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerSingle.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerSkip.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/directivenode/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerAdapter.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerBoolean.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerEnum.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerFloat.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerInt.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerList.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerNull.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerObject.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerString.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerVariable.js","webpack://Comunica/../../node_modules/graphql-to-sparql/lib/handler/valuenode/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../node_modules/graphql-to-sparql/node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/graphql/error/GraphQLError.js","webpack://Comunica/../../node_modules/graphql/error/syntaxError.js","webpack://Comunica/../../node_modules/graphql/jsutils/defineInspect.js","webpack://Comunica/../../node_modules/graphql/jsutils/devAssert.js","webpack://Comunica/../../node_modules/graphql/jsutils/inspect.js","webpack://Comunica/../../node_modules/graphql/jsutils/instanceOf.js","webpack://Comunica/../../node_modules/graphql/jsutils/invariant.js","webpack://Comunica/../../node_modules/graphql/jsutils/isObjectLike.js","webpack://Comunica/../../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.js","webpack://Comunica/../../node_modules/graphql/language/ast.js","webpack://Comunica/../../node_modules/graphql/language/blockString.js","webpack://Comunica/../../node_modules/graphql/language/directiveLocation.js","webpack://Comunica/../../node_modules/graphql/language/index.js","webpack://Comunica/../../node_modules/graphql/language/kinds.js","webpack://Comunica/../../node_modules/graphql/language/lexer.js","webpack://Comunica/../../node_modules/graphql/language/location.js","webpack://Comunica/../../node_modules/graphql/language/parser.js","webpack://Comunica/../../node_modules/graphql/language/predicates.js","webpack://Comunica/../../node_modules/graphql/language/printLocation.js","webpack://Comunica/../../node_modules/graphql/language/printer.js","webpack://Comunica/../../node_modules/graphql/language/source.js","webpack://Comunica/../../node_modules/graphql/language/tokenKind.js","webpack://Comunica/../../node_modules/graphql/language/visitor.js","webpack://Comunica/../../node_modules/graphql/polyfills/symbols.js","webpack://Comunica/../../node_modules/hash.js/lib/hash.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/common.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/hmac.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/ripemd.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/1.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/224.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/256.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/384.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/512.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/sha/common.js","webpack://Comunica/../../node_modules/hash.js/lib/hash/utils.js","webpack://Comunica/../../node_modules/htmlparser2/lib/Parser.js","webpack://Comunica/../../node_modules/htmlparser2/lib/Tokenizer.js","webpack://Comunica/../../node_modules/htmlparser2/lib/index.js","webpack://Comunica/../../node_modules/http-link-header/lib/link.js","webpack://Comunica/../../node_modules/ieee754/index.js","webpack://Comunica/../../node_modules/immutable/dist/immutable.es.js","webpack://Comunica/../../node_modules/inherits/inherits_browser.js","webpack://Comunica/../../node_modules/is-stream/index.js","webpack://Comunica/../../node_modules/jsonld-context-parser/index.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/ContextParser.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/ErrorCoded.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/FetchDocumentLoader.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/IDocumentLoader.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/JsonLdContext.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/JsonLdContextNormalized.js","webpack://Comunica/../../node_modules/jsonld-context-parser/lib/Util.js","webpack://Comunica/../../node_modules/jsonld-context-parser/node_modules/cross-fetch/dist/browser-polyfill.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/index.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/ContextTree.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/JsonLdParser.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/ParsingContext.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/Util.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/containerhandler/ContainerHandlerIdentifier.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/containerhandler/ContainerHandlerIndex.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/containerhandler/ContainerHandlerLanguage.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/containerhandler/ContainerHandlerType.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/EntryHandlerArrayValue.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/EntryHandlerContainer.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/EntryHandlerInvalidFallback.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/EntryHandlerPredicate.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeyword.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordAnnotation.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordContext.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordGraph.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordId.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordIncluded.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordNest.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordType.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordUnknownFallback.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordValue.js","webpack://Comunica/../../node_modules/jsonld-streaming-parser/node_modules/canonicalize/lib/canonicalize.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/index.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/lib/JsonLdSerializer.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/lib/SeparatorType.js","webpack://Comunica/../../node_modules/jsonld-streaming-serializer/lib/Util.js","webpack://Comunica/../../node_modules/microdata-rdf-streaming-parser/index.js","webpack://Comunica/../../node_modules/microdata-rdf-streaming-parser/lib/IHtmlParseListener.js","webpack://Comunica/../../node_modules/microdata-rdf-streaming-parser/lib/IItemScope.js","webpack://Comunica/../../node_modules/microdata-rdf-streaming-parser/lib/IVocabRegistry.js","webpack://Comunica/../../node_modules/microdata-rdf-streaming-parser/lib/MicrodataRdfParser.js","webpack://Comunica/../../node_modules/microdata-rdf-streaming-parser/lib/Util.js","webpack://Comunica/../../node_modules/microdata-rdf-streaming-parser/lib/propertyhandler/IItemPropertyHandler.js","webpack://Comunica/../../node_modules/microdata-rdf-streaming-parser/lib/propertyhandler/ItemPropertyHandlerContent.js","webpack://Comunica/../../node_modules/microdata-rdf-streaming-parser/lib/propertyhandler/ItemPropertyHandlerNumber.js","webpack://Comunica/../../node_modules/microdata-rdf-streaming-parser/lib/propertyhandler/ItemPropertyHandlerTime.js","webpack://Comunica/../../node_modules/microdata-rdf-streaming-parser/lib/propertyhandler/ItemPropertyHandlerUrl.js","webpack://Comunica/../../node_modules/minimalistic-assert/index.js","webpack://Comunica/../../node_modules/n3/src/IRIs.js","webpack://Comunica/../../node_modules/n3/src/N3Lexer.js","webpack://Comunica/../../node_modules/n3/src/N3DataFactory.js","webpack://Comunica/../../node_modules/n3/src/N3Parser.js","webpack://Comunica/../../node_modules/n3/src/N3Util.js","webpack://Comunica/../../node_modules/n3/src/N3Writer.js","webpack://Comunica/../../node_modules/n3/src/N3Store.js","webpack://Comunica/../../node_modules/n3/src/N3StreamParser.js","webpack://Comunica/../../node_modules/n3/src/N3StreamWriter.js","webpack://Comunica/../../node_modules/n3/src/index.js","webpack://Comunica/../../node_modules/process/browser.js","webpack://Comunica/../../node_modules/promise-polyfill/Promise.js","webpack://Comunica/../../node_modules/queue-microtask/index.js","webpack://Comunica/../../node_modules/rdf-data-factory/index.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/BlankNode.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/DataFactory.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/DefaultGraph.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Literal.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/NamedNode.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Quad.js","webpack://Comunica/../../node_modules/rdf-data-factory/lib/Variable.js","webpack://Comunica/../../node_modules/rdf-isomorphic/index.js","webpack://Comunica/../../node_modules/rdf-isomorphic/lib/RdfIsomorphic.js","webpack://Comunica/../../node_modules/rdf-literal/index.js","webpack://Comunica/../../node_modules/rdf-literal/lib/ITypeHandler.js","webpack://Comunica/../../node_modules/rdf-literal/lib/Translator.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerBoolean.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerDate.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerNumberDouble.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerNumberInteger.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/TypeHandlerString.js","webpack://Comunica/../../node_modules/rdf-literal/lib/handler/index.js","webpack://Comunica/../../node_modules/rdf-store-stream/index.js","webpack://Comunica/../../node_modules/rdf-stores/index.js","webpack://Comunica/../../node_modules/rdf-stores/lib/IRdfStoreOptions.js","webpack://Comunica/../../node_modules/rdf-stores/lib/OrderUtils.js","webpack://Comunica/../../node_modules/rdf-stores/lib/PatternTerm.js","webpack://Comunica/../../node_modules/rdf-stores/lib/RdfStore.js","webpack://Comunica/../../node_modules/rdf-stores/lib/dataset/DatasetCoreWrapper.js","webpack://Comunica/../../node_modules/rdf-stores/lib/dictionary/ITermDictionary.js","webpack://Comunica/../../node_modules/rdf-stores/lib/dictionary/TermDictionaryNumberMap.js","webpack://Comunica/../../node_modules/rdf-stores/lib/dictionary/TermDictionaryNumberRecord.js","webpack://Comunica/../../node_modules/rdf-stores/lib/dictionary/TermDictionaryNumberRecordFullTerms.js","webpack://Comunica/../../node_modules/rdf-stores/lib/dictionary/TermDictionaryQuoted.js","webpack://Comunica/../../node_modules/rdf-stores/lib/dictionary/TermDictionaryQuotedIndexed.js","webpack://Comunica/../../node_modules/rdf-stores/lib/dictionary/TermDictionaryQuotedReferential.js","webpack://Comunica/../../node_modules/rdf-stores/lib/dictionary/TermDictionarySymbol.js","webpack://Comunica/../../node_modules/rdf-stores/lib/index/IRdfStoreIndex.js","webpack://Comunica/../../node_modules/rdf-stores/lib/index/RdfStoreIndexNestedMap.js","webpack://Comunica/../../node_modules/rdf-stores/lib/index/RdfStoreIndexNestedMapQuoted.js","webpack://Comunica/../../node_modules/rdf-stores/lib/index/RdfStoreIndexNestedMapRecursive.js","webpack://Comunica/../../node_modules/rdf-stores/lib/index/RdfStoreIndexNestedMapRecursiveQuoted.js","webpack://Comunica/../../node_modules/rdf-stores/lib/index/RdfStoreIndexNestedRecord.js","webpack://Comunica/../../node_modules/rdf-stores/lib/index/RdfStoreIndexNestedRecordQuoted.js","webpack://Comunica/../../node_modules/rdf-streaming-store/index.js","webpack://Comunica/../../node_modules/rdf-streaming-store/lib/PendingStreamsIndex.js","webpack://Comunica/../../node_modules/rdf-streaming-store/lib/StreamingStore.js","webpack://Comunica/../../node_modules/rdf-string-ttl/index.js","webpack://Comunica/../../node_modules/rdf-string-ttl/lib/TermUtil.js","webpack://Comunica/../../node_modules/rdf-string/index.js","webpack://Comunica/../../node_modules/rdf-string/lib/TermUtil.js","webpack://Comunica/../../node_modules/rdf-terms/index.js","webpack://Comunica/../../node_modules/rdf-terms/lib/QuadTermUtil.js","webpack://Comunica/../../node_modules/rdf-terms/lib/TermUtil.js","webpack://Comunica/../../node_modules/rdfa-streaming-parser/index.js","webpack://Comunica/../../node_modules/rdfa-streaming-parser/lib/IActiveTag.js","webpack://Comunica/../../node_modules/rdfa-streaming-parser/lib/IHtmlParseListener.js","webpack://Comunica/../../node_modules/rdfa-streaming-parser/lib/IRdfaPattern.js","webpack://Comunica/../../node_modules/rdfa-streaming-parser/lib/RdfaParser.js","webpack://Comunica/../../node_modules/rdfa-streaming-parser/lib/RdfaProfile.js","webpack://Comunica/../../node_modules/rdfa-streaming-parser/lib/Util.js","webpack://Comunica/../../node_modules/rdfxml-streaming-parser/index.js","webpack://Comunica/../../node_modules/rdfxml-streaming-parser/lib/ParseError.js","webpack://Comunica/../../node_modules/rdfxml-streaming-parser/lib/RdfXmlParser.js","webpack://Comunica/../../node_modules/readable-stream-node-to-web/index.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/add-abort-signal.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/compose.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/duplex.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/duplexify.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/from.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/legacy.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/operators.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/passthrough.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/readable.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/state.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/transform.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/utils.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/streams/writable.js","webpack://Comunica/../../node_modules/readable-stream/lib/internal/validators.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/browser.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/errors.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/primordials.js","webpack://Comunica/../../node_modules/readable-stream/lib/ours/util.js","webpack://Comunica/../../node_modules/readable-stream/lib/stream.js","webpack://Comunica/../../node_modules/readable-stream/lib/stream/promises.js","webpack://Comunica/../../node_modules/relative-to-absolute-iri/index.js","webpack://Comunica/../../node_modules/relative-to-absolute-iri/lib/Resolve.js","webpack://Comunica/../../node_modules/safe-buffer/index.js","webpack://Comunica/../../node_modules/shaclc-parse/lib/ShaclcParser.js","webpack://Comunica/../../node_modules/shaclc-parse/lib/index.js","webpack://Comunica/../../node_modules/shaclc-write/dist/ShaclcGenerator.js","webpack://Comunica/../../node_modules/shaclc-write/dist/base-prefixes.js","webpack://Comunica/../../node_modules/shaclc-write/dist/index.js","webpack://Comunica/../../node_modules/shaclc-write/dist/node-param.js","webpack://Comunica/../../node_modules/shaclc-write/dist/property-param .js","webpack://Comunica/../../node_modules/shaclc-write/dist/utils.js","webpack://Comunica/../../node_modules/shaclc-write/dist/volatile-store.js","webpack://Comunica/../../node_modules/shaclc-write/dist/writer.js","webpack://Comunica/../../node_modules/spark-md5/spark-md5.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../node_modules/sparqljs/lib/SparqlGenerator.js","webpack://Comunica/../../node_modules/sparqljs/lib/SparqlParser.js","webpack://Comunica/../../node_modules/sparqljs/lib/Wildcard.js","webpack://Comunica/../../node_modules/sparqljs/sparql.js","webpack://Comunica/../../node_modules/sparqljson-parse/index.js","webpack://Comunica/../../node_modules/sparqljson-parse/lib/SparqlJsonParser.js","webpack://Comunica/../../node_modules/sparqljson-to-tree/index.js","webpack://Comunica/../../node_modules/sparqljson-to-tree/lib/Converter.js","webpack://Comunica/../../node_modules/sparqlxml-parse/index.js","webpack://Comunica/../../node_modules/sparqlxml-parse/lib/SparqlXmlParser.js","webpack://Comunica/../../node_modules/stream-to-string/index.js","webpack://Comunica/../../node_modules/string_decoder/lib/string_decoder.js","webpack://Comunica/../../node_modules/uritemplate/bin/uritemplate.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/index.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/md5.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/native.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/nil.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/parse.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/regex.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/rng.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/sha1.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/stringify.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v1.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v3.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v35.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v4.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/v5.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/validate.js","webpack://Comunica/../../node_modules/uuid/dist/commonjs-browser/version.js","webpack://Comunica/../../node_modules/validate-iri/index.js","webpack://Comunica/../../node_modules/validate-iri/lib/Validate.js","webpack://Comunica/../../node_modules/web-streams-ponyfill/dist/polyfill-ie11.min.js","webpack://Comunica/../../node_modules/xmlchars/xml/1.0/ed5.js","webpack://Comunica/../../node_modules/xmlchars/xml/1.1/ed2.js","webpack://Comunica/../../node_modules/xmlchars/xmlns/1.0/ed3.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/index.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/algebra.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/factory.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/sparql.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://Comunica/../../packages/actor-optimize-query-operation-construct-distinct/node_modules/sparqlalgebrajs/lib/util.js","webpack://Comunica/../../packages/actor-rdf-parse-html/node_modules/htmlparser2/lib/Parser.js","webpack://Comunica/../../packages/actor-rdf-parse-html/node_modules/htmlparser2/lib/Tokenizer.js","webpack://Comunica/../../packages/actor-rdf-parse-html/node_modules/htmlparser2/lib/index.js","webpack://Comunica/../../node_modules/asynciterator/dist/asynciterator.js","webpack://Comunica/../../node_modules/asynciterator/dist/linkedlist.js","webpack://Comunica/../../node_modules/asynciterator/dist/taskscheduler.js","webpack://Comunica/../../node_modules/lru-cache/dist/commonjs/index.js","webpack://Comunica/../../node_modules/readable-from-web/lib/ReadableFromWeb.js","webpack://Comunica/../../node_modules/readable-from-web/lib/index.js","webpack://Comunica/webpack/bootstrap","webpack://Comunica/webpack/runtime/compat get default export","webpack://Comunica/webpack/runtime/define property getters","webpack://Comunica/webpack/runtime/global","webpack://Comunica/webpack/runtime/hasOwnProperty shorthand","webpack://Comunica/webpack/runtime/make namespace object","webpack://Comunica/webpack/startup"],"sourcesContent":["var { Buffer } = require('buffer')\n// Named constants with unique integer values\nvar C = {};\n// Tokens\nvar LEFT_BRACE = C.LEFT_BRACE = 0x1;\nvar RIGHT_BRACE = C.RIGHT_BRACE = 0x2;\nvar LEFT_BRACKET = C.LEFT_BRACKET = 0x3;\nvar RIGHT_BRACKET = C.RIGHT_BRACKET = 0x4;\nvar COLON = C.COLON = 0x5;\nvar COMMA = C.COMMA = 0x6;\nvar TRUE = C.TRUE = 0x7;\nvar FALSE = C.FALSE = 0x8;\nvar NULL = C.NULL = 0x9;\nvar STRING = C.STRING = 0xa;\nvar NUMBER = C.NUMBER = 0xb;\n// Tokenizer States\nvar START = C.START = 0x11;\nvar STOP = C.STOP = 0x12;\nvar TRUE1 = C.TRUE1 = 0x21;\nvar TRUE2 = C.TRUE2 = 0x22;\nvar TRUE3 = C.TRUE3 = 0x23;\nvar FALSE1 = C.FALSE1 = 0x31;\nvar FALSE2 = C.FALSE2 = 0x32;\nvar FALSE3 = C.FALSE3 = 0x33;\nvar FALSE4 = C.FALSE4 = 0x34;\nvar NULL1 = C.NULL1 = 0x41;\nvar NULL2 = C.NULL2 = 0x42;\nvar NULL3 = C.NULL3 = 0x43;\nvar NUMBER1 = C.NUMBER1 = 0x51;\nvar NUMBER3 = C.NUMBER3 = 0x53;\nvar STRING1 = C.STRING1 = 0x61;\nvar STRING2 = C.STRING2 = 0x62;\nvar STRING3 = C.STRING3 = 0x63;\nvar STRING4 = C.STRING4 = 0x64;\nvar STRING5 = C.STRING5 = 0x65;\nvar STRING6 = C.STRING6 = 0x66;\n// Parser States\nvar VALUE = C.VALUE = 0x71;\nvar KEY = C.KEY = 0x72;\n// Parser Modes\nvar OBJECT = C.OBJECT = 0x81;\nvar ARRAY = C.ARRAY = 0x82;\n// Character constants\nvar BACK_SLASH = \"\\\\\".charCodeAt(0);\nvar FORWARD_SLASH = \"\\/\".charCodeAt(0);\nvar BACKSPACE = \"\\b\".charCodeAt(0);\nvar FORM_FEED = \"\\f\".charCodeAt(0);\nvar NEWLINE = \"\\n\".charCodeAt(0);\nvar CARRIAGE_RETURN = \"\\r\".charCodeAt(0);\nvar TAB = \"\\t\".charCodeAt(0);\n\nvar STRING_BUFFER_SIZE = 64 * 1024;\n\nfunction alloc(size) {\n return Buffer.alloc ? Buffer.alloc(size) : new Buffer(size);\n}\n\nfunction Parser() {\n this.tState = START;\n this.value = undefined;\n\n this.string = undefined; // string data\n this.stringBuffer = alloc(STRING_BUFFER_SIZE);\n this.stringBufferOffset = 0;\n this.unicode = undefined; // unicode escapes\n this.highSurrogate = undefined;\n\n this.key = undefined;\n this.mode = undefined;\n this.stack = [];\n this.state = VALUE;\n this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n this.temp_buffs = { \"2\": alloc(2), \"3\": alloc(3), \"4\": alloc(4) }; // for rebuilding chars split before boundary is reached\n\n // Stream offset\n this.offset = -1;\n}\n\n// Slow code to string converter (only used when throwing syntax errors)\nParser.toknam = function (code) {\n var keys = Object.keys(C);\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n if (C[key] === code) { return key; }\n }\n return code && (\"0x\" + code.toString(16));\n};\n\nvar proto = Parser.prototype;\nproto.onError = function (err) { throw err; };\nproto.charError = function (buffer, i) {\n this.tState = STOP;\n this.onError(new Error(\"Unexpected \" + JSON.stringify(String.fromCharCode(buffer[i])) + \" at position \" + i + \" in state \" + Parser.toknam(this.tState)));\n};\nproto.appendStringChar = function (char) {\n if (this.stringBufferOffset >= STRING_BUFFER_SIZE) {\n this.string += this.stringBuffer.toString('utf8');\n this.stringBufferOffset = 0;\n }\n\n this.stringBuffer[this.stringBufferOffset++] = char;\n};\nproto.appendStringBuf = function (buf, start, end) {\n var size = buf.length;\n if (typeof start === 'number') {\n if (typeof end === 'number') {\n if (end < 0) {\n // adding a negative end decreeses the size\n size = buf.length - start + end;\n } else {\n size = end - start;\n }\n } else {\n size = buf.length - start;\n }\n }\n\n if (size < 0) {\n size = 0;\n }\n\n if (this.stringBufferOffset + size > STRING_BUFFER_SIZE) {\n this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset);\n this.stringBufferOffset = 0;\n }\n\n buf.copy(this.stringBuffer, this.stringBufferOffset, start, end);\n this.stringBufferOffset += size;\n};\nproto.write = function (buffer) {\n if (typeof buffer === \"string\") buffer = new Buffer(buffer);\n var n;\n for (var i = 0, l = buffer.length; i < l; i++) {\n if (this.tState === START){\n n = buffer[i];\n this.offset++;\n if(n === 0x7b){ this.onToken(LEFT_BRACE, \"{\"); // {\n }else if(n === 0x7d){ this.onToken(RIGHT_BRACE, \"}\"); // }\n }else if(n === 0x5b){ this.onToken(LEFT_BRACKET, \"[\"); // [\n }else if(n === 0x5d){ this.onToken(RIGHT_BRACKET, \"]\"); // ]\n }else if(n === 0x3a){ this.onToken(COLON, \":\"); // :\n }else if(n === 0x2c){ this.onToken(COMMA, \",\"); // ,\n }else if(n === 0x74){ this.tState = TRUE1; // t\n }else if(n === 0x66){ this.tState = FALSE1; // f\n }else if(n === 0x6e){ this.tState = NULL1; // n\n }else if(n === 0x22){ // \"\n this.string = \"\";\n this.stringBufferOffset = 0;\n this.tState = STRING1;\n }else if(n === 0x2d){ this.string = \"-\"; this.tState = NUMBER1; // -\n }else{\n if (n >= 0x30 && n < 0x40) { // 1-9\n this.string = String.fromCharCode(n); this.tState = NUMBER3;\n } else if (n === 0x20 || n === 0x09 || n === 0x0a || n === 0x0d) {\n // whitespace\n } else {\n return this.charError(buffer, i);\n }\n }\n }else if (this.tState === STRING1){ // After open quote\n n = buffer[i]; // get current byte from buffer\n // check for carry over of a multi byte char split between data chunks\n // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n if (this.bytes_remaining > 0) {\n for (var j = 0; j < this.bytes_remaining; j++) {\n this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = buffer[j];\n }\n\n this.appendStringBuf(this.temp_buffs[this.bytes_in_sequence]);\n this.bytes_in_sequence = this.bytes_remaining = 0;\n i = i + j - 1;\n } else if (this.bytes_remaining === 0 && n >= 128) { // else if no remainder bytes carried over, parse multi byte (>=128) chars one at a time\n if (n <= 193 || n > 244) {\n return this.onError(new Error(\"Invalid UTF-8 character at position \" + i + \" in state \" + Parser.toknam(this.tState)));\n }\n if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2;\n if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3;\n if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4;\n if ((this.bytes_in_sequence + i) > buffer.length) { // if bytes needed to complete char fall outside buffer length, we have a boundary split\n for (var k = 0; k <= (buffer.length - 1 - i); k++) {\n this.temp_buffs[this.bytes_in_sequence][k] = buffer[i + k]; // fill temp buffer of correct size with bytes available in this chunk\n }\n this.bytes_remaining = (i + this.bytes_in_sequence) - buffer.length;\n i = buffer.length - 1;\n } else {\n this.appendStringBuf(buffer, i, i + this.bytes_in_sequence);\n i = i + this.bytes_in_sequence - 1;\n }\n } else if (n === 0x22) {\n this.tState = START;\n this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset);\n this.stringBufferOffset = 0;\n this.onToken(STRING, this.string);\n this.offset += Buffer.byteLength(this.string, 'utf8') + 1;\n this.string = undefined;\n }\n else if (n === 0x5c) {\n this.tState = STRING2;\n }\n else if (n >= 0x20) { this.appendStringChar(n); }\n else {\n return this.charError(buffer, i);\n }\n }else if (this.tState === STRING2){ // After backslash\n n = buffer[i];\n if(n === 0x22){ this.appendStringChar(n); this.tState = STRING1;\n }else if(n === 0x5c){ this.appendStringChar(BACK_SLASH); this.tState = STRING1;\n }else if(n === 0x2f){ this.appendStringChar(FORWARD_SLASH); this.tState = STRING1;\n }else if(n === 0x62){ this.appendStringChar(BACKSPACE); this.tState = STRING1;\n }else if(n === 0x66){ this.appendStringChar(FORM_FEED); this.tState = STRING1;\n }else if(n === 0x6e){ this.appendStringChar(NEWLINE); this.tState = STRING1;\n }else if(n === 0x72){ this.appendStringChar(CARRIAGE_RETURN); this.tState = STRING1;\n }else if(n === 0x74){ this.appendStringChar(TAB); this.tState = STRING1;\n }else if(n === 0x75){ this.unicode = \"\"; this.tState = STRING3;\n }else{\n return this.charError(buffer, i);\n }\n }else if (this.tState === STRING3 || this.tState === STRING4 || this.tState === STRING5 || this.tState === STRING6){ // unicode hex codes\n n = buffer[i];\n // 0-9 A-F a-f\n if ((n >= 0x30 && n < 0x40) || (n > 0x40 && n <= 0x46) || (n > 0x60 && n <= 0x66)) {\n this.unicode += String.fromCharCode(n);\n if (this.tState++ === STRING6) {\n var intVal = parseInt(this.unicode, 16);\n this.unicode = undefined;\n if (this.highSurrogate !== undefined && intVal >= 0xDC00 && intVal < (0xDFFF + 1)) { //<56320,57343> - lowSurrogate\n this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate, intVal)));\n this.highSurrogate = undefined;\n } else if (this.highSurrogate === undefined && intVal >= 0xD800 && intVal < (0xDBFF + 1)) { //<55296,56319> - highSurrogate\n this.highSurrogate = intVal;\n } else {\n if (this.highSurrogate !== undefined) {\n this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate)));\n this.highSurrogate = undefined;\n }\n this.appendStringBuf(new Buffer(String.fromCharCode(intVal)));\n }\n this.tState = STRING1;\n }\n } else {\n return this.charError(buffer, i);\n }\n } else if (this.tState === NUMBER1 || this.tState === NUMBER3) {\n n = buffer[i];\n\n switch (n) {\n case 0x30: // 0\n case 0x31: // 1\n case 0x32: // 2\n case 0x33: // 3\n case 0x34: // 4\n case 0x35: // 5\n case 0x36: // 6\n case 0x37: // 7\n case 0x38: // 8\n case 0x39: // 9\n case 0x2e: // .\n case 0x65: // e\n case 0x45: // E\n case 0x2b: // +\n case 0x2d: // -\n this.string += String.fromCharCode(n);\n this.tState = NUMBER3;\n break;\n default:\n this.tState = START;\n var error = this.numberReviver(this.string);\n if (error){\n return error;\n }\n\n this.offset += this.string.length - 1;\n this.string = undefined;\n i--;\n break;\n }\n }else if (this.tState === TRUE1){ // r\n if (buffer[i] === 0x72) { this.tState = TRUE2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === TRUE2){ // u\n if (buffer[i] === 0x75) { this.tState = TRUE3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === TRUE3){ // e\n if (buffer[i] === 0x65) { this.tState = START; this.onToken(TRUE, true); this.offset+= 3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE1){ // a\n if (buffer[i] === 0x61) { this.tState = FALSE2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE2){ // l\n if (buffer[i] === 0x6c) { this.tState = FALSE3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE3){ // s\n if (buffer[i] === 0x73) { this.tState = FALSE4; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE4){ // e\n if (buffer[i] === 0x65) { this.tState = START; this.onToken(FALSE, false); this.offset+= 4; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL1){ // u\n if (buffer[i] === 0x75) { this.tState = NULL2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL2){ // l\n if (buffer[i] === 0x6c) { this.tState = NULL3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL3){ // l\n if (buffer[i] === 0x6c) { this.tState = START; this.onToken(NULL, null); this.offset += 3; }\n else { return this.charError(buffer, i); }\n }\n }\n};\nproto.onToken = function (token, value) {\n // Override this to get events\n};\n\nproto.parseError = function (token, value) {\n this.tState = STOP;\n this.onError(new Error(\"Unexpected \" + Parser.toknam(token) + (value ? (\"(\" + JSON.stringify(value) + \")\") : \"\") + \" in state \" + Parser.toknam(this.state)));\n};\nproto.push = function () {\n this.stack.push({value: this.value, key: this.key, mode: this.mode});\n};\nproto.pop = function () {\n var value = this.value;\n var parent = this.stack.pop();\n this.value = parent.value;\n this.key = parent.key;\n this.mode = parent.mode;\n this.emit(value);\n if (!this.mode) { this.state = VALUE; }\n};\nproto.emit = function (value) {\n if (this.mode) { this.state = COMMA; }\n this.onValue(value);\n};\nproto.onValue = function (value) {\n // Override me\n};\nproto.onToken = function (token, value) {\n if(this.state === VALUE){\n if(token === STRING || token === NUMBER || token === TRUE || token === FALSE || token === NULL){\n if (this.value) {\n this.value[this.key] = value;\n }\n this.emit(value);\n }else if(token === LEFT_BRACE){\n this.push();\n if (this.value) {\n this.value = this.value[this.key] = {};\n } else {\n this.value = {};\n }\n this.key = undefined;\n this.state = KEY;\n this.mode = OBJECT;\n }else if(token === LEFT_BRACKET){\n this.push();\n if (this.value) {\n this.value = this.value[this.key] = [];\n } else {\n this.value = [];\n }\n this.key = 0;\n this.mode = ARRAY;\n this.state = VALUE;\n }else if(token === RIGHT_BRACE){\n if (this.mode === OBJECT) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else if(token === RIGHT_BRACKET){\n if (this.mode === ARRAY) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else{\n return this.parseError(token, value);\n }\n }else if(this.state === KEY){\n if (token === STRING) {\n this.key = value;\n this.state = COLON;\n } else if (token === RIGHT_BRACE) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else if(this.state === COLON){\n if (token === COLON) { this.state = VALUE; }\n else { return this.parseError(token, value); }\n }else if(this.state === COMMA){\n if (token === COMMA) {\n if (this.mode === ARRAY) { this.key++; this.state = VALUE; }\n else if (this.mode === OBJECT) { this.state = KEY; }\n\n } else if (token === RIGHT_BRACKET && this.mode === ARRAY || token === RIGHT_BRACE && this.mode === OBJECT) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else{\n return this.parseError(token, value);\n }\n};\n\n// Override to implement your own number reviver.\n// Any value returned is treated as error and will interrupt parsing.\nproto.numberReviver = function (text) {\n var result = Number(text);\n\n if (isNaN(result)) {\n return this.charError(buffer, i);\n }\n\n if ((text.match(/[0-9]+/) == text) && (result.toString() != text)) {\n // Long string of digits which is an ID string and not valid and/or safe JavaScript integer Number\n this.onToken(STRING, text);\n } else {\n this.onToken(NUMBER, result);\n }\n}\n\nParser.C = C;\n\nmodule.exports = Parser;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragment = void 0;\nfunction getFragment(inputStr) {\n let str = inputStr;\n if (str.endsWith('/') || str.endsWith('#')) {\n str = str.slice(0, str.length - 1);\n }\n const args = [];\n if (str.lastIndexOf('/') > 0) {\n args.push(str.lastIndexOf('/'));\n }\n if (str.lastIndexOf('#') > 0) {\n args.push(str.lastIndexOf('#'));\n }\n const i = Math.max(...args);\n return str.slice(i + 1);\n}\nfunction camelize(str) {\n var _a;\n const res = (_a = str\n .split(/[^a-z0-9]+/ig)\n .filter((s) => s !== '')\n .map((s) => s[0].toUpperCase() + s.slice(1))\n .join('')\n // Make sure the prefix does not start with a number\n .match(/[a-z][a-z0-9]+/ig)) === null || _a === void 0 ? void 0 : _a[0];\n // Include 'v' so we always return something matching the pattern\n // [a-z][a-z0-9]+\n return typeof res === 'undefined' ? undefined : res[0].toLowerCase() + res.slice(1);\n}\nfunction fragment(str) {\n let value = getFragment(str);\n value = value ? camelize(value) : undefined;\n return value || 'v';\n}\nexports.fragment = fragment;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupAllPrefixes = exports.prefixToUri = exports.uriToPrefix = void 0;\nconst fragment_1 = require(\"./fragment\");\nconst lookup_1 = require(\"./lookup\");\nfunction uriToPrefix(uri, options) {\n return __awaiter(this, void 0, void 0, function* () {\n let result;\n // Collect the prefix\n try {\n result = yield (0, lookup_1.lookupPrefix)(uri, options);\n }\n catch (_a) {\n if (options === null || options === void 0 ? void 0 : options.mintOnUnknown) {\n // Keep prefixes at most 4 characters long when minting a new one\n result = (0, fragment_1.fragment)(uri).slice(0, 4);\n }\n }\n // If there is a bank of existing prefixes make sure to make a unique one\n // by postfixing a number\n if (typeof result !== 'undefined'\n && typeof (options === null || options === void 0 ? void 0 : options.existingPrefixes) === 'object'\n && result in options.existingPrefixes) {\n let i = 0;\n while (`${result}${i}` in options.existingPrefixes) {\n i += 1;\n }\n result = `${result}${i}`;\n }\n return result;\n });\n}\nexports.uriToPrefix = uriToPrefix;\n/**\n * Lookup the namespace commonly associated with a given prefix\n * @param prefix The prefix to lookup the namespace for\n * @param options You can optionally pass a custom fetch function\n */\nfunction prefixToUri(prefix, options) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // The await needs to be here so that we can return undefined on rejection\n return yield (0, lookup_1.lookupUri)(prefix, options);\n }\n catch (_a) {\n return undefined;\n }\n });\n}\nexports.prefixToUri = prefixToUri;\nvar lookup_2 = require(\"./lookup\");\nObject.defineProperty(exports, \"lookupAllPrefixes\", { enumerable: true, get: function () { return lookup_2.lookupAllPrefixes; } });\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchContext = exports.fetchJson = void 0;\n// TODO: Use universal fetch here\nconst cross_fetch_1 = require(\"cross-fetch\");\nfunction fetchJson(url, options) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n // Select the correct fetch function\n const fetchFn = (_a = options === null || options === void 0 ? void 0 : options.fetch) !== null && _a !== void 0 ? _a : cross_fetch_1.fetch;\n return (yield fetchFn(url)).json();\n });\n}\nexports.fetchJson = fetchJson;\nfunction fetchContext(url, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield fetchJson(url, options))['@context'];\n });\n}\nexports.fetchContext = fetchContext;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lookupNamespace\"), exports);\n__exportStar(require(\"./lookupPrefix\"), exports);\n__exportStar(require(\"./lookupAllPrefixes\"), exports);\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupAllPrefixes = void 0;\nconst fetchContext_1 = require(\"./fetchContext\");\n/**\n * Use prefix.cc to look up all recorded prefixes\n */\nfunction lookupAllPrefixes(options) {\n return __awaiter(this, void 0, void 0, function* () {\n return (0, fetchContext_1.fetchContext)('https://prefix.cc/context', options);\n });\n}\nexports.lookupAllPrefixes = lookupAllPrefixes;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupUri = void 0;\nconst fetchContext_1 = require(\"./fetchContext\");\n/**\n * Use prefix.cc to look up the namespace associated with a given prefix.\n * Errors if one cannot be found.\n *\n * @param prefix The prefix of which to obtain the namespace\n * @param options Optional fetch function to use\n */\nfunction lookupUri(prefix, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const uri = (yield (0, fetchContext_1.fetchContext)(`https://prefix.cc/${prefix}.file.jsonld`, options))[prefix];\n if (typeof uri !== 'string') {\n throw new Error(`Expected uri to be a string, received: ${uri} of type ${typeof uri}`);\n }\n return uri;\n });\n}\nexports.lookupUri = lookupUri;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lookupPrefix = void 0;\nconst fetchContext_1 = require(\"./fetchContext\");\n/**\n * Use prefix.cc to look up the prefix for a URI namespace, rejects if there is an error in\n * looking up the prefix, or if no prefixes are returned\n *\n * @param uri The URI to obtain a prefix for\n * @param options Optional fetch function to use\n */\nfunction lookupPrefix(uri, options) {\n return __awaiter(this, void 0, void 0, function* () {\n // Create the correct url to lookup including search parameters\n const url = new URL('https://prefix.cc/reverse');\n url.searchParams.append('uri', uri);\n url.searchParams.append('format', 'jsonld');\n const prefixes = Object.keys(yield (0, fetchContext_1.fetchContext)(url, options));\n if (prefixes.length === 0) {\n throw new Error('No prefixes returned');\n }\n return prefixes[0];\n });\n}\nexports.lookupPrefix = lookupPrefix;\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringify = stringify;\nconst event_emitter_promisify_1 = require(\"event-emitter-promisify\");\nfunction stringify(ee) {\n return __awaiter(this, void 0, void 0, function* () {\n let str = '';\n ee.on('data', (chunk) => {\n str += chunk;\n });\n yield (0, event_emitter_promisify_1.promisifyEventEmitter)(ee);\n return str;\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SaxesParser = exports.EVENTS = void 0;\nconst ed5 = require(\"xmlchars/xml/1.0/ed5\");\nconst ed2 = require(\"xmlchars/xml/1.1/ed2\");\nconst NSed3 = require(\"xmlchars/xmlns/1.0/ed3\");\nvar isS = ed5.isS;\nvar isChar10 = ed5.isChar;\nvar isNameStartChar = ed5.isNameStartChar;\nvar isNameChar = ed5.isNameChar;\nvar S_LIST = ed5.S_LIST;\nvar NAME_RE = ed5.NAME_RE;\nvar isChar11 = ed2.isChar;\nvar isNCNameStartChar = NSed3.isNCNameStartChar;\nvar isNCNameChar = NSed3.isNCNameChar;\nvar NC_NAME_RE = NSed3.NC_NAME_RE;\nconst XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\nconst XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\nconst rootNS = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n __proto__: null,\n xml: XML_NAMESPACE,\n xmlns: XMLNS_NAMESPACE,\n};\nconst XML_ENTITIES = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n __proto__: null,\n amp: \"&\",\n gt: \">\",\n lt: \"<\",\n quot: \"\\\"\",\n apos: \"'\",\n};\n// EOC: end-of-chunk\nconst EOC = -1;\nconst NL_LIKE = -2;\nconst S_BEGIN = 0; // Initial state.\nconst S_BEGIN_WHITESPACE = 1; // leading whitespace\nconst S_DOCTYPE = 2; // \nconst TAB = 9;\nconst NL = 0xA;\nconst CR = 0xD;\nconst SPACE = 0x20;\nconst BANG = 0x21;\nconst DQUOTE = 0x22;\nconst AMP = 0x26;\nconst SQUOTE = 0x27;\nconst MINUS = 0x2D;\nconst FORWARD_SLASH = 0x2F;\nconst SEMICOLON = 0x3B;\nconst LESS = 0x3C;\nconst EQUAL = 0x3D;\nconst GREATER = 0x3E;\nconst QUESTION = 0x3F;\nconst OPEN_BRACKET = 0x5B;\nconst CLOSE_BRACKET = 0x5D;\nconst NEL = 0x85;\nconst LS = 0x2028; // Line Separator\nconst isQuote = (c) => c === DQUOTE || c === SQUOTE;\nconst QUOTES = [DQUOTE, SQUOTE];\nconst DOCTYPE_TERMINATOR = [...QUOTES, OPEN_BRACKET, GREATER];\nconst DTD_TERMINATOR = [...QUOTES, LESS, CLOSE_BRACKET];\nconst XML_DECL_NAME_TERMINATOR = [EQUAL, QUESTION, ...S_LIST];\nconst ATTRIB_VALUE_UNQUOTED_TERMINATOR = [...S_LIST, GREATER, AMP, LESS];\nfunction nsPairCheck(parser, prefix, uri) {\n switch (prefix) {\n case \"xml\":\n if (uri !== XML_NAMESPACE) {\n parser.fail(`xml prefix must be bound to ${XML_NAMESPACE}.`);\n }\n break;\n case \"xmlns\":\n if (uri !== XMLNS_NAMESPACE) {\n parser.fail(`xmlns prefix must be bound to ${XMLNS_NAMESPACE}.`);\n }\n break;\n default:\n }\n switch (uri) {\n case XMLNS_NAMESPACE:\n parser.fail(prefix === \"\" ?\n `the default namespace may not be set to ${uri}.` :\n `may not assign a prefix (even \"xmlns\") to the URI \\\n${XMLNS_NAMESPACE}.`);\n break;\n case XML_NAMESPACE:\n switch (prefix) {\n case \"xml\":\n // Assinging the XML namespace to \"xml\" is fine.\n break;\n case \"\":\n parser.fail(`the default namespace may not be set to ${uri}.`);\n break;\n default:\n parser.fail(\"may not assign the xml namespace to another prefix.\");\n }\n break;\n default:\n }\n}\nfunction nsMappingCheck(parser, mapping) {\n for (const local of Object.keys(mapping)) {\n nsPairCheck(parser, local, mapping[local]);\n }\n}\nconst isNCName = (name) => NC_NAME_RE.test(name);\nconst isName = (name) => NAME_RE.test(name);\nconst FORBIDDEN_START = 0;\nconst FORBIDDEN_BRACKET = 1;\nconst FORBIDDEN_BRACKET_BRACKET = 2;\n/**\n * The list of supported events.\n */\nexports.EVENTS = [\n \"xmldecl\",\n \"text\",\n \"processinginstruction\",\n \"doctype\",\n \"comment\",\n \"opentagstart\",\n \"attribute\",\n \"opentag\",\n \"closetag\",\n \"cdata\",\n \"error\",\n \"end\",\n \"ready\",\n];\nconst EVENT_NAME_TO_HANDLER_NAME = {\n xmldecl: \"xmldeclHandler\",\n text: \"textHandler\",\n processinginstruction: \"piHandler\",\n doctype: \"doctypeHandler\",\n comment: \"commentHandler\",\n opentagstart: \"openTagStartHandler\",\n attribute: \"attributeHandler\",\n opentag: \"openTagHandler\",\n closetag: \"closeTagHandler\",\n cdata: \"cdataHandler\",\n error: \"errorHandler\",\n end: \"endHandler\",\n ready: \"readyHandler\",\n};\n// eslint-disable-next-line @typescript-eslint/ban-types\nclass SaxesParser {\n /**\n * Indicates whether or not the parser is closed. If ``true``, wait for\n * the ``ready`` event to write again.\n */\n get closed() {\n return this._closed;\n }\n /**\n * @param opt The parser options.\n */\n constructor(opt) {\n this.opt = opt !== null && opt !== void 0 ? opt : {};\n this.fragmentOpt = !!this.opt.fragment;\n const xmlnsOpt = this.xmlnsOpt = !!this.opt.xmlns;\n this.trackPosition = this.opt.position !== false;\n this.fileName = this.opt.fileName;\n if (xmlnsOpt) {\n // This is the function we use to perform name checks on PIs and entities.\n // When namespaces are used, colons are not allowed in PI target names or\n // entity names. So the check depends on whether namespaces are used. See:\n //\n // https://www.w3.org/XML/xml-names-19990114-errata.html\n // NE08\n //\n this.nameStartCheck = isNCNameStartChar;\n this.nameCheck = isNCNameChar;\n this.isName = isNCName;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.processAttribs = this.processAttribsNS;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.pushAttrib = this.pushAttribNS;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n this.ns = Object.assign({ __proto__: null }, rootNS);\n const additional = this.opt.additionalNamespaces;\n if (additional != null) {\n nsMappingCheck(this, additional);\n Object.assign(this.ns, additional);\n }\n }\n else {\n this.nameStartCheck = isNameStartChar;\n this.nameCheck = isNameChar;\n this.isName = isName;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.processAttribs = this.processAttribsPlain;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.pushAttrib = this.pushAttribPlain;\n }\n //\n // The order of the members in this table needs to correspond to the state\n // numbers given to the states that correspond to the methods being recorded\n // here.\n //\n this.stateTable = [\n /* eslint-disable @typescript-eslint/unbound-method */\n this.sBegin,\n this.sBeginWhitespace,\n this.sDoctype,\n this.sDoctypeQuote,\n this.sDTD,\n this.sDTDQuoted,\n this.sDTDOpenWaka,\n this.sDTDOpenWakaBang,\n this.sDTDComment,\n this.sDTDCommentEnding,\n this.sDTDCommentEnded,\n this.sDTDPI,\n this.sDTDPIEnding,\n this.sText,\n this.sEntity,\n this.sOpenWaka,\n this.sOpenWakaBang,\n this.sComment,\n this.sCommentEnding,\n this.sCommentEnded,\n this.sCData,\n this.sCDataEnding,\n this.sCDataEnding2,\n this.sPIFirstChar,\n this.sPIRest,\n this.sPIBody,\n this.sPIEnding,\n this.sXMLDeclNameStart,\n this.sXMLDeclName,\n this.sXMLDeclEq,\n this.sXMLDeclValueStart,\n this.sXMLDeclValue,\n this.sXMLDeclSeparator,\n this.sXMLDeclEnding,\n this.sOpenTag,\n this.sOpenTagSlash,\n this.sAttrib,\n this.sAttribName,\n this.sAttribNameSawWhite,\n this.sAttribValue,\n this.sAttribValueQuoted,\n this.sAttribValueClosed,\n this.sAttribValueUnquoted,\n this.sCloseTag,\n this.sCloseTagSawWhite,\n /* eslint-enable @typescript-eslint/unbound-method */\n ];\n this._init();\n }\n _init() {\n var _a;\n this.openWakaBang = \"\";\n this.text = \"\";\n this.name = \"\";\n this.piTarget = \"\";\n this.entity = \"\";\n this.q = null;\n this.tags = [];\n this.tag = null;\n this.topNS = null;\n this.chunk = \"\";\n this.chunkPosition = 0;\n this.i = 0;\n this.prevI = 0;\n this.carriedFromPrevious = undefined;\n this.forbiddenState = FORBIDDEN_START;\n this.attribList = [];\n // The logic is organized so as to minimize the need to check\n // this.opt.fragment while parsing.\n const { fragmentOpt } = this;\n this.state = fragmentOpt ? S_TEXT : S_BEGIN;\n // We want these to be all true if we are dealing with a fragment.\n this.reportedTextBeforeRoot = this.reportedTextAfterRoot = this.closedRoot =\n this.sawRoot = fragmentOpt;\n // An XML declaration is intially possible only when parsing whole\n // documents.\n this.xmlDeclPossible = !fragmentOpt;\n this.xmlDeclExpects = [\"version\"];\n this.entityReturnState = undefined;\n let { defaultXMLVersion } = this.opt;\n if (defaultXMLVersion === undefined) {\n if (this.opt.forceXMLVersion === true) {\n throw new Error(\"forceXMLVersion set but defaultXMLVersion is not set\");\n }\n defaultXMLVersion = \"1.0\";\n }\n this.setXMLVersion(defaultXMLVersion);\n this.positionAtNewLine = 0;\n this.doctype = false;\n this._closed = false;\n this.xmlDecl = {\n version: undefined,\n encoding: undefined,\n standalone: undefined,\n };\n this.line = 1;\n this.column = 0;\n this.ENTITIES = Object.create(XML_ENTITIES);\n (_a = this.readyHandler) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n /**\n * The stream position the parser is currently looking at. This field is\n * zero-based.\n *\n * This field is not based on counting Unicode characters but is to be\n * interpreted as a plain index into a JavaScript string.\n */\n get position() {\n return this.chunkPosition + this.i;\n }\n /**\n * The column number of the next character to be read by the parser. *\n * This field is zero-based. (The first column in a line is 0.)\n *\n * This field reports the index at which the next character would be in the\n * line if the line were represented as a JavaScript string. Note that this\n * *can* be different to a count based on the number of *Unicode characters*\n * due to how JavaScript handles astral plane characters.\n *\n * See [[column]] for a number that corresponds to a count of Unicode\n * characters.\n */\n get columnIndex() {\n return this.position - this.positionAtNewLine;\n }\n /**\n * Set an event listener on an event. The parser supports one handler per\n * event type. If you try to set an event handler over an existing handler,\n * the old handler is silently overwritten.\n *\n * @param name The event to listen to.\n *\n * @param handler The handler to set.\n */\n on(name, handler) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n this[EVENT_NAME_TO_HANDLER_NAME[name]] = handler;\n }\n /**\n * Unset an event handler.\n *\n * @parma name The event to stop listening to.\n */\n off(name) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n this[EVENT_NAME_TO_HANDLER_NAME[name]] = undefined;\n }\n /**\n * Make an error object. The error object will have a message that contains\n * the ``fileName`` option passed at the creation of the parser. If position\n * tracking was turned on, it will also have line and column number\n * information.\n *\n * @param message The message describing the error to report.\n *\n * @returns An error object with a properly formatted message.\n */\n makeError(message) {\n var _a;\n let msg = (_a = this.fileName) !== null && _a !== void 0 ? _a : \"\";\n if (this.trackPosition) {\n if (msg.length > 0) {\n msg += \":\";\n }\n msg += `${this.line}:${this.column}`;\n }\n if (msg.length > 0) {\n msg += \": \";\n }\n return new Error(msg + message);\n }\n /**\n * Report a parsing error. This method is made public so that client code may\n * check for issues that are outside the scope of this project and can report\n * errors.\n *\n * @param message The error to report.\n *\n * @returns this\n */\n fail(message) {\n const err = this.makeError(message);\n const handler = this.errorHandler;\n if (handler === undefined) {\n throw err;\n }\n else {\n handler(err);\n }\n return this;\n }\n /**\n * Write a XML data to the parser.\n *\n * @param chunk The XML data to write.\n *\n * @returns this\n */\n // We do need object for the type here. Yes, it often causes problems\n // but not in this case.\n write(chunk) {\n if (this.closed) {\n return this.fail(\"cannot write after close; assign an onready handler.\");\n }\n let end = false;\n if (chunk === null) {\n // We cannot return immediately because carriedFromPrevious may need\n // processing.\n end = true;\n chunk = \"\";\n }\n else if (typeof chunk === \"object\") {\n chunk = chunk.toString();\n }\n // We checked if performing a pre-decomposition of the string into an array\n // of single complete characters (``Array.from(chunk)``) would be faster\n // than the current repeated calls to ``charCodeAt``. As of August 2018, it\n // isn't. (There may be Node-specific code that would perform faster than\n // ``Array.from`` but don't want to be dependent on Node.)\n if (this.carriedFromPrevious !== undefined) {\n // The previous chunk had char we must carry over.\n chunk = `${this.carriedFromPrevious}${chunk}`;\n this.carriedFromPrevious = undefined;\n }\n let limit = chunk.length;\n const lastCode = chunk.charCodeAt(limit - 1);\n if (!end &&\n // A trailing CR or surrogate must be carried over to the next\n // chunk.\n (lastCode === CR || (lastCode >= 0xD800 && lastCode <= 0xDBFF))) {\n // The chunk ends with a character that must be carried over. We cannot\n // know how to handle it until we get the next chunk or the end of the\n // stream. So save it for later.\n this.carriedFromPrevious = chunk[limit - 1];\n limit--;\n chunk = chunk.slice(0, limit);\n }\n const { stateTable } = this;\n this.chunk = chunk;\n this.i = 0;\n while (this.i < limit) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n stateTable[this.state].call(this);\n }\n this.chunkPosition += limit;\n return end ? this.end() : this;\n }\n /**\n * Close the current stream. Perform final well-formedness checks and reset\n * the parser tstate.\n *\n * @returns this\n */\n close() {\n return this.write(null);\n }\n /**\n * Get a single code point out of the current chunk. This updates the current\n * position if we do position tracking.\n *\n * This is the algorithm to use for XML 1.0.\n *\n * @returns The character read.\n */\n getCode10() {\n const { chunk, i } = this;\n this.prevI = i;\n // Yes, we do this instead of doing this.i++. Doing it this way, we do not\n // read this.i again, which is a bit faster.\n this.i = i + 1;\n if (i >= chunk.length) {\n return EOC;\n }\n // Using charCodeAt and handling the surrogates ourselves is faster\n // than using codePointAt.\n const code = chunk.charCodeAt(i);\n this.column++;\n if (code < 0xD800) {\n if (code >= SPACE || code === TAB) {\n return code;\n }\n switch (code) {\n case NL:\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL;\n case CR:\n // We may get NaN if we read past the end of the chunk, which is fine.\n if (chunk.charCodeAt(i + 1) === NL) {\n // A \\r\\n sequence is converted to \\n so we have to skip over the\n // next character. We already know it has a size of 1 so ++ is fine\n // here.\n this.i = i + 2;\n }\n // Otherwise, a \\r is just converted to \\n, so we don't have to skip\n // ahead.\n // In either case, \\r becomes \\n.\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL_LIKE;\n default:\n // If we get here, then code < SPACE and it is not NL CR or TAB.\n this.fail(\"disallowed character.\");\n return code;\n }\n }\n if (code > 0xDBFF) {\n // This is a specialized version of isChar10 that takes into account\n // that in this context code > 0xDBFF and code <= 0xFFFF. So it does not\n // test cases that don't need testing.\n if (!(code >= 0xE000 && code <= 0xFFFD)) {\n this.fail(\"disallowed character.\");\n }\n return code;\n }\n const final = 0x10000 + ((code - 0xD800) * 0x400) +\n (chunk.charCodeAt(i + 1) - 0xDC00);\n this.i = i + 2;\n // This is a specialized version of isChar10 that takes into account that in\n // this context necessarily final >= 0x10000.\n if (final > 0x10FFFF) {\n this.fail(\"disallowed character.\");\n }\n return final;\n }\n /**\n * Get a single code point out of the current chunk. This updates the current\n * position if we do position tracking.\n *\n * This is the algorithm to use for XML 1.1.\n *\n * @returns {number} The character read.\n */\n getCode11() {\n const { chunk, i } = this;\n this.prevI = i;\n // Yes, we do this instead of doing this.i++. Doing it this way, we do not\n // read this.i again, which is a bit faster.\n this.i = i + 1;\n if (i >= chunk.length) {\n return EOC;\n }\n // Using charCodeAt and handling the surrogates ourselves is faster\n // than using codePointAt.\n const code = chunk.charCodeAt(i);\n this.column++;\n if (code < 0xD800) {\n if ((code > 0x1F && code < 0x7F) || (code > 0x9F && code !== LS) ||\n code === TAB) {\n return code;\n }\n switch (code) {\n case NL: // 0xA\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL;\n case CR: { // 0xD\n // We may get NaN if we read past the end of the chunk, which is\n // fine.\n const next = chunk.charCodeAt(i + 1);\n if (next === NL || next === NEL) {\n // A CR NL or CR NEL sequence is converted to NL so we have to skip\n // over the next character. We already know it has a size of 1.\n this.i = i + 2;\n }\n // Otherwise, a CR is just converted to NL, no skip.\n }\n /* yes, fall through */\n case NEL: // 0x85\n case LS: // Ox2028\n this.line++;\n this.column = 0;\n this.positionAtNewLine = this.position;\n return NL_LIKE;\n default:\n this.fail(\"disallowed character.\");\n return code;\n }\n }\n if (code > 0xDBFF) {\n // This is a specialized version of isCharAndNotRestricted that takes into\n // account that in this context code > 0xDBFF and code <= 0xFFFF. So it\n // does not test cases that don't need testing.\n if (!(code >= 0xE000 && code <= 0xFFFD)) {\n this.fail(\"disallowed character.\");\n }\n return code;\n }\n const final = 0x10000 + ((code - 0xD800) * 0x400) +\n (chunk.charCodeAt(i + 1) - 0xDC00);\n this.i = i + 2;\n // This is a specialized version of isCharAndNotRestricted that takes into\n // account that in this context necessarily final >= 0x10000.\n if (final > 0x10FFFF) {\n this.fail(\"disallowed character.\");\n }\n return final;\n }\n /**\n * Like ``getCode`` but with the return value normalized so that ``NL`` is\n * returned for ``NL_LIKE``.\n */\n getCodeNorm() {\n const c = this.getCode();\n return c === NL_LIKE ? NL : c;\n }\n unget() {\n this.i = this.prevI;\n this.column--;\n }\n /**\n * Capture characters into a buffer until encountering one of a set of\n * characters.\n *\n * @param chars An array of codepoints. Encountering a character in the array\n * ends the capture. (``chars`` may safely contain ``NL``.)\n *\n * @return The character code that made the capture end, or ``EOC`` if we hit\n * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n * instead.\n */\n captureTo(chars) {\n let { i: start } = this;\n const { chunk } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCode();\n const isNLLike = c === NL_LIKE;\n const final = isNLLike ? NL : c;\n if (final === EOC || chars.includes(final)) {\n this.text += chunk.slice(start, this.prevI);\n return final;\n }\n if (isNLLike) {\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n start = this.i;\n }\n }\n }\n /**\n * Capture characters into a buffer until encountering a character.\n *\n * @param char The codepoint that ends the capture. **NOTE ``char`` MAY NOT\n * CONTAIN ``NL``.** Passing ``NL`` will result in buggy behavior.\n *\n * @return ``true`` if we ran into the character. Otherwise, we ran into the\n * end of the current chunk.\n */\n captureToChar(char) {\n let { i: start } = this;\n const { chunk } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let c = this.getCode();\n switch (c) {\n case NL_LIKE:\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n start = this.i;\n c = NL;\n break;\n case EOC:\n this.text += chunk.slice(start);\n return false;\n default:\n }\n if (c === char) {\n this.text += chunk.slice(start, this.prevI);\n return true;\n }\n }\n }\n /**\n * Capture characters that satisfy ``isNameChar`` into the ``name`` field of\n * this parser.\n *\n * @return The character code that made the test fail, or ``EOC`` if we hit\n * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n * instead.\n */\n captureNameChars() {\n const { chunk, i: start } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCode();\n if (c === EOC) {\n this.name += chunk.slice(start);\n return EOC;\n }\n // NL is not a name char so we don't have to test specifically for it.\n if (!isNameChar(c)) {\n this.name += chunk.slice(start, this.prevI);\n return c === NL_LIKE ? NL : c;\n }\n }\n }\n /**\n * Skip white spaces.\n *\n * @return The character that ended the skip, or ``EOC`` if we hit\n * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n * instead.\n */\n skipSpaces() {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCodeNorm();\n if (c === EOC || !isS(c)) {\n return c;\n }\n }\n }\n setXMLVersion(version) {\n this.currentXMLVersion = version;\n /* eslint-disable @typescript-eslint/unbound-method */\n if (version === \"1.0\") {\n this.isChar = isChar10;\n this.getCode = this.getCode10;\n }\n else {\n this.isChar = isChar11;\n this.getCode = this.getCode11;\n }\n /* eslint-enable @typescript-eslint/unbound-method */\n }\n // STATE ENGINE METHODS\n // This needs to be a state separate from S_BEGIN_WHITESPACE because we want\n // to be sure never to come back to this state later.\n sBegin() {\n // We are essentially peeking at the first character of the chunk. Since\n // S_BEGIN can be in effect only when we start working on the first chunk,\n // the index at which we must look is necessarily 0. Note also that the\n // following test does not depend on decoding surrogates.\n // If the initial character is 0xFEFF, ignore it.\n if (this.chunk.charCodeAt(0) === 0xFEFF) {\n this.i++;\n this.column++;\n }\n this.state = S_BEGIN_WHITESPACE;\n }\n sBeginWhitespace() {\n // We need to know whether we've encountered spaces or not because as soon\n // as we run into a space, an XML declaration is no longer possible. Rather\n // than slow down skipSpaces even in places where we don't care whether it\n // skipped anything or not, we check whether prevI is equal to the value of\n // i from before we skip spaces.\n const iBefore = this.i;\n const c = this.skipSpaces();\n if (this.prevI !== iBefore) {\n this.xmlDeclPossible = false;\n }\n switch (c) {\n case LESS:\n this.state = S_OPEN_WAKA;\n // We could naively call closeText but in this state, it is not normal\n // to have text be filled with any data.\n if (this.text.length !== 0) {\n throw new Error(\"no-empty text at start\");\n }\n break;\n case EOC:\n break;\n default:\n this.unget();\n this.state = S_TEXT;\n this.xmlDeclPossible = false;\n }\n }\n sDoctype() {\n var _a;\n const c = this.captureTo(DOCTYPE_TERMINATOR);\n switch (c) {\n case GREATER: {\n (_a = this.doctypeHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n this.text = \"\";\n this.state = S_TEXT;\n this.doctype = true; // just remember that we saw it.\n break;\n }\n case EOC:\n break;\n default:\n this.text += String.fromCodePoint(c);\n if (c === OPEN_BRACKET) {\n this.state = S_DTD;\n }\n else if (isQuote(c)) {\n this.state = S_DOCTYPE_QUOTE;\n this.q = c;\n }\n }\n }\n sDoctypeQuote() {\n const q = this.q;\n if (this.captureToChar(q)) {\n this.text += String.fromCodePoint(q);\n this.q = null;\n this.state = S_DOCTYPE;\n }\n }\n sDTD() {\n const c = this.captureTo(DTD_TERMINATOR);\n if (c === EOC) {\n return;\n }\n this.text += String.fromCodePoint(c);\n if (c === CLOSE_BRACKET) {\n this.state = S_DOCTYPE;\n }\n else if (c === LESS) {\n this.state = S_DTD_OPEN_WAKA;\n }\n else if (isQuote(c)) {\n this.state = S_DTD_QUOTED;\n this.q = c;\n }\n }\n sDTDQuoted() {\n const q = this.q;\n if (this.captureToChar(q)) {\n this.text += String.fromCodePoint(q);\n this.state = S_DTD;\n this.q = null;\n }\n }\n sDTDOpenWaka() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n switch (c) {\n case BANG:\n this.state = S_DTD_OPEN_WAKA_BANG;\n this.openWakaBang = \"\";\n break;\n case QUESTION:\n this.state = S_DTD_PI;\n break;\n default:\n this.state = S_DTD;\n }\n }\n sDTDOpenWakaBang() {\n const char = String.fromCodePoint(this.getCodeNorm());\n const owb = this.openWakaBang += char;\n this.text += char;\n if (owb !== \"-\") {\n this.state = owb === \"--\" ? S_DTD_COMMENT : S_DTD;\n this.openWakaBang = \"\";\n }\n }\n sDTDComment() {\n if (this.captureToChar(MINUS)) {\n this.text += \"-\";\n this.state = S_DTD_COMMENT_ENDING;\n }\n }\n sDTDCommentEnding() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n this.state = c === MINUS ? S_DTD_COMMENT_ENDED : S_DTD_COMMENT;\n }\n sDTDCommentEnded() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n if (c === GREATER) {\n this.state = S_DTD;\n }\n else {\n this.fail(\"malformed comment.\");\n // will be recorded as\n // a comment of \" blah -- bloo \"\n this.state = S_DTD_COMMENT;\n }\n }\n sDTDPI() {\n if (this.captureToChar(QUESTION)) {\n this.text += \"?\";\n this.state = S_DTD_PI_ENDING;\n }\n }\n sDTDPIEnding() {\n const c = this.getCodeNorm();\n this.text += String.fromCodePoint(c);\n if (c === GREATER) {\n this.state = S_DTD;\n }\n }\n sText() {\n //\n // We did try a version of saxes where the S_TEXT state was split in two\n // states: one for text inside the root element, and one for text\n // outside. This was avoiding having to test this.tags.length to decide\n // what implementation to actually use.\n //\n // Peformance testing on gigabyte-size files did not show any advantage to\n // using the two states solution instead of the current one. Conversely, it\n // made the code a bit more complicated elsewhere. For instance, a comment\n // can appear before the root element so when a comment ended it was\n // necessary to determine whether to return to the S_TEXT state or to the\n // new text-outside-root state.\n //\n if (this.tags.length !== 0) {\n this.handleTextInRoot();\n }\n else {\n this.handleTextOutsideRoot();\n }\n }\n sEntity() {\n // This is essentially a specialized version of captureToChar(SEMICOLON...)\n let { i: start } = this;\n const { chunk } = this;\n // eslint-disable-next-line no-labels, no-restricted-syntax\n loop: \n // eslint-disable-next-line no-constant-condition\n while (true) {\n switch (this.getCode()) {\n case NL_LIKE:\n this.entity += `${chunk.slice(start, this.prevI)}\\n`;\n start = this.i;\n break;\n case SEMICOLON: {\n const { entityReturnState } = this;\n const entity = this.entity + chunk.slice(start, this.prevI);\n this.state = entityReturnState;\n let parsed;\n if (entity === \"\") {\n this.fail(\"empty entity name.\");\n parsed = \"&;\";\n }\n else {\n parsed = this.parseEntity(entity);\n this.entity = \"\";\n }\n if (entityReturnState !== S_TEXT || this.textHandler !== undefined) {\n this.text += parsed;\n }\n // eslint-disable-next-line no-labels\n break loop;\n }\n case EOC:\n this.entity += chunk.slice(start);\n // eslint-disable-next-line no-labels\n break loop;\n default:\n }\n }\n }\n sOpenWaka() {\n // Reminder: a state handler is called with at least one character\n // available in the current chunk. So the first call to get code inside of\n // a state handler cannot return ``EOC``. That's why we don't test\n // for it.\n const c = this.getCode();\n // either a /, ?, !, or text is coming next.\n if (isNameStartChar(c)) {\n this.state = S_OPEN_TAG;\n this.unget();\n this.xmlDeclPossible = false;\n }\n else {\n switch (c) {\n case FORWARD_SLASH:\n this.state = S_CLOSE_TAG;\n this.xmlDeclPossible = false;\n break;\n case BANG:\n this.state = S_OPEN_WAKA_BANG;\n this.openWakaBang = \"\";\n this.xmlDeclPossible = false;\n break;\n case QUESTION:\n this.state = S_PI_FIRST_CHAR;\n break;\n default:\n this.fail(\"disallowed character in tag name\");\n this.state = S_TEXT;\n this.xmlDeclPossible = false;\n }\n }\n }\n sOpenWakaBang() {\n this.openWakaBang += String.fromCodePoint(this.getCodeNorm());\n switch (this.openWakaBang) {\n case \"[CDATA[\":\n if (!this.sawRoot && !this.reportedTextBeforeRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextBeforeRoot = true;\n }\n if (this.closedRoot && !this.reportedTextAfterRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextAfterRoot = true;\n }\n this.state = S_CDATA;\n this.openWakaBang = \"\";\n break;\n case \"--\":\n this.state = S_COMMENT;\n this.openWakaBang = \"\";\n break;\n case \"DOCTYPE\":\n this.state = S_DOCTYPE;\n if (this.doctype || this.sawRoot) {\n this.fail(\"inappropriately located doctype declaration.\");\n }\n this.openWakaBang = \"\";\n break;\n default:\n // 7 happens to be the maximum length of the string that can possibly\n // match one of the cases above.\n if (this.openWakaBang.length >= 7) {\n this.fail(\"incorrect syntax.\");\n }\n }\n }\n sComment() {\n if (this.captureToChar(MINUS)) {\n this.state = S_COMMENT_ENDING;\n }\n }\n sCommentEnding() {\n var _a;\n const c = this.getCodeNorm();\n if (c === MINUS) {\n this.state = S_COMMENT_ENDED;\n (_a = this.commentHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n this.text = \"\";\n }\n else {\n this.text += `-${String.fromCodePoint(c)}`;\n this.state = S_COMMENT;\n }\n }\n sCommentEnded() {\n const c = this.getCodeNorm();\n if (c !== GREATER) {\n this.fail(\"malformed comment.\");\n // will be recorded as\n // a comment of \" blah -- bloo \"\n this.text += `--${String.fromCodePoint(c)}`;\n this.state = S_COMMENT;\n }\n else {\n this.state = S_TEXT;\n }\n }\n sCData() {\n if (this.captureToChar(CLOSE_BRACKET)) {\n this.state = S_CDATA_ENDING;\n }\n }\n sCDataEnding() {\n const c = this.getCodeNorm();\n if (c === CLOSE_BRACKET) {\n this.state = S_CDATA_ENDING_2;\n }\n else {\n this.text += `]${String.fromCodePoint(c)}`;\n this.state = S_CDATA;\n }\n }\n sCDataEnding2() {\n var _a;\n const c = this.getCodeNorm();\n switch (c) {\n case GREATER: {\n (_a = this.cdataHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n this.text = \"\";\n this.state = S_TEXT;\n break;\n }\n case CLOSE_BRACKET:\n this.text += \"]\";\n break;\n default:\n this.text += `]]${String.fromCodePoint(c)}`;\n this.state = S_CDATA;\n }\n }\n // We need this separate state to check the first character fo the pi target\n // with this.nameStartCheck which allows less characters than this.nameCheck.\n sPIFirstChar() {\n const c = this.getCodeNorm();\n // This is first because in the case where the file is well-formed this is\n // the branch taken. We optimize for well-formedness.\n if (this.nameStartCheck(c)) {\n this.piTarget += String.fromCodePoint(c);\n this.state = S_PI_REST;\n }\n else if (c === QUESTION || isS(c)) {\n this.fail(\"processing instruction without a target.\");\n this.state = c === QUESTION ? S_PI_ENDING : S_PI_BODY;\n }\n else {\n this.fail(\"disallowed character in processing instruction name.\");\n this.piTarget += String.fromCodePoint(c);\n this.state = S_PI_REST;\n }\n }\n sPIRest() {\n // Capture characters into a piTarget while ``this.nameCheck`` run on the\n // character read returns true.\n const { chunk, i: start } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const c = this.getCodeNorm();\n if (c === EOC) {\n this.piTarget += chunk.slice(start);\n return;\n }\n // NL cannot satisfy this.nameCheck so we don't have to test specifically\n // for it.\n if (!this.nameCheck(c)) {\n this.piTarget += chunk.slice(start, this.prevI);\n const isQuestion = c === QUESTION;\n if (isQuestion || isS(c)) {\n if (this.piTarget === \"xml\") {\n if (!this.xmlDeclPossible) {\n this.fail(\"an XML declaration must be at the start of the document.\");\n }\n this.state = isQuestion ? S_XML_DECL_ENDING : S_XML_DECL_NAME_START;\n }\n else {\n this.state = isQuestion ? S_PI_ENDING : S_PI_BODY;\n }\n }\n else {\n this.fail(\"disallowed character in processing instruction name.\");\n this.piTarget += String.fromCodePoint(c);\n }\n break;\n }\n }\n }\n sPIBody() {\n if (this.text.length === 0) {\n const c = this.getCodeNorm();\n if (c === QUESTION) {\n this.state = S_PI_ENDING;\n }\n else if (!isS(c)) {\n this.text = String.fromCodePoint(c);\n }\n }\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n else if (this.captureToChar(QUESTION)) {\n this.state = S_PI_ENDING;\n }\n }\n sPIEnding() {\n var _a;\n const c = this.getCodeNorm();\n if (c === GREATER) {\n const { piTarget } = this;\n if (piTarget.toLowerCase() === \"xml\") {\n this.fail(\"the XML declaration must appear at the start of the document.\");\n }\n (_a = this.piHandler) === null || _a === void 0 ? void 0 : _a.call(this, {\n target: piTarget,\n body: this.text,\n });\n this.piTarget = this.text = \"\";\n this.state = S_TEXT;\n }\n else if (c === QUESTION) {\n // We ran into ?? as part of a processing instruction. We initially took\n // the first ? as a sign that the PI was ending, but it is not. So we have\n // to add it to the body but we take the new ? as a sign that the PI is\n // ending.\n this.text += \"?\";\n }\n else {\n this.text += `?${String.fromCodePoint(c)}`;\n this.state = S_PI_BODY;\n }\n this.xmlDeclPossible = false;\n }\n sXMLDeclNameStart() {\n const c = this.skipSpaces();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n // It is valid to go to S_XML_DECL_ENDING from this state.\n this.state = S_XML_DECL_ENDING;\n return;\n }\n if (c !== EOC) {\n this.state = S_XML_DECL_NAME;\n this.name = String.fromCodePoint(c);\n }\n }\n sXMLDeclName() {\n const c = this.captureTo(XML_DECL_NAME_TERMINATOR);\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.name += this.text;\n this.text = \"\";\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (!(isS(c) || c === EQUAL)) {\n return;\n }\n this.name += this.text;\n this.text = \"\";\n if (!this.xmlDeclExpects.includes(this.name)) {\n switch (this.name.length) {\n case 0:\n this.fail(\"did not expect any more name/value pairs.\");\n break;\n case 1:\n this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);\n break;\n default:\n this.fail(`expected one of ${this.xmlDeclExpects.join(\", \")}`);\n }\n }\n this.state = c === EQUAL ? S_XML_DECL_VALUE_START : S_XML_DECL_EQ;\n }\n sXMLDeclEq() {\n const c = this.getCodeNorm();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (isS(c)) {\n return;\n }\n if (c !== EQUAL) {\n this.fail(\"value required.\");\n }\n this.state = S_XML_DECL_VALUE_START;\n }\n sXMLDeclValueStart() {\n const c = this.getCodeNorm();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (isS(c)) {\n return;\n }\n if (!isQuote(c)) {\n this.fail(\"value must be quoted.\");\n this.q = SPACE;\n }\n else {\n this.q = c;\n }\n this.state = S_XML_DECL_VALUE;\n }\n sXMLDeclValue() {\n const c = this.captureTo([this.q, QUESTION]);\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n this.state = S_XML_DECL_ENDING;\n this.text = \"\";\n this.fail(\"XML declaration is incomplete.\");\n return;\n }\n if (c === EOC) {\n return;\n }\n const value = this.text;\n this.text = \"\";\n switch (this.name) {\n case \"version\": {\n this.xmlDeclExpects = [\"encoding\", \"standalone\"];\n const version = value;\n this.xmlDecl.version = version;\n // This is the test specified by XML 1.0 but it is fine for XML 1.1.\n if (!/^1\\.[0-9]+$/.test(version)) {\n this.fail(\"version number must match /^1\\\\.[0-9]+$/.\");\n }\n // When forceXMLVersion is set, the XML declaration is ignored.\n else if (!this.opt.forceXMLVersion) {\n this.setXMLVersion(version);\n }\n break;\n }\n case \"encoding\":\n if (!/^[A-Za-z][A-Za-z0-9._-]*$/.test(value)) {\n this.fail(\"encoding value must match \\\n/^[A-Za-z0-9][A-Za-z0-9._-]*$/.\");\n }\n this.xmlDeclExpects = [\"standalone\"];\n this.xmlDecl.encoding = value;\n break;\n case \"standalone\":\n if (value !== \"yes\" && value !== \"no\") {\n this.fail(\"standalone value must match \\\"yes\\\" or \\\"no\\\".\");\n }\n this.xmlDeclExpects = [];\n this.xmlDecl.standalone = value;\n break;\n default:\n // We don't need to raise an error here since we've already raised one\n // when checking what name was expected.\n }\n this.name = \"\";\n this.state = S_XML_DECL_SEPARATOR;\n }\n sXMLDeclSeparator() {\n const c = this.getCodeNorm();\n // The question mark character is not valid inside any of the XML\n // declaration name/value pairs.\n if (c === QUESTION) {\n // It is valid to go to S_XML_DECL_ENDING from this state.\n this.state = S_XML_DECL_ENDING;\n return;\n }\n if (!isS(c)) {\n this.fail(\"whitespace required.\");\n this.unget();\n }\n this.state = S_XML_DECL_NAME_START;\n }\n sXMLDeclEnding() {\n var _a;\n const c = this.getCodeNorm();\n if (c === GREATER) {\n if (this.piTarget !== \"xml\") {\n this.fail(\"processing instructions are not allowed before root.\");\n }\n else if (this.name !== \"version\" &&\n this.xmlDeclExpects.includes(\"version\")) {\n this.fail(\"XML declaration must contain a version.\");\n }\n (_a = this.xmldeclHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.xmlDecl);\n this.name = \"\";\n this.piTarget = this.text = \"\";\n this.state = S_TEXT;\n }\n else {\n // We got here because the previous character was a ?, but the question\n // mark character is not valid inside any of the XML declaration\n // name/value pairs.\n this.fail(\"The character ? is disallowed anywhere in XML declarations.\");\n }\n this.xmlDeclPossible = false;\n }\n sOpenTag() {\n var _a;\n const c = this.captureNameChars();\n if (c === EOC) {\n return;\n }\n const tag = this.tag = {\n name: this.name,\n attributes: Object.create(null),\n };\n this.name = \"\";\n if (this.xmlnsOpt) {\n this.topNS = tag.ns = Object.create(null);\n }\n (_a = this.openTagStartHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n this.sawRoot = true;\n if (!this.fragmentOpt && this.closedRoot) {\n this.fail(\"documents may contain only one root.\");\n }\n switch (c) {\n case GREATER:\n this.openTag();\n break;\n case FORWARD_SLASH:\n this.state = S_OPEN_TAG_SLASH;\n break;\n default:\n if (!isS(c)) {\n this.fail(\"disallowed character in tag name.\");\n }\n this.state = S_ATTRIB;\n }\n }\n sOpenTagSlash() {\n if (this.getCode() === GREATER) {\n this.openSelfClosingTag();\n }\n else {\n this.fail(\"forward-slash in opening tag not followed by >.\");\n this.state = S_ATTRIB;\n }\n }\n sAttrib() {\n const c = this.skipSpaces();\n if (c === EOC) {\n return;\n }\n if (isNameStartChar(c)) {\n this.unget();\n this.state = S_ATTRIB_NAME;\n }\n else if (c === GREATER) {\n this.openTag();\n }\n else if (c === FORWARD_SLASH) {\n this.state = S_OPEN_TAG_SLASH;\n }\n else {\n this.fail(\"disallowed character in attribute name.\");\n }\n }\n sAttribName() {\n const c = this.captureNameChars();\n if (c === EQUAL) {\n this.state = S_ATTRIB_VALUE;\n }\n else if (isS(c)) {\n this.state = S_ATTRIB_NAME_SAW_WHITE;\n }\n else if (c === GREATER) {\n this.fail(\"attribute without value.\");\n this.pushAttrib(this.name, this.name);\n this.name = this.text = \"\";\n this.openTag();\n }\n else if (c !== EOC) {\n this.fail(\"disallowed character in attribute name.\");\n }\n }\n sAttribNameSawWhite() {\n const c = this.skipSpaces();\n switch (c) {\n case EOC:\n return;\n case EQUAL:\n this.state = S_ATTRIB_VALUE;\n break;\n default:\n this.fail(\"attribute without value.\");\n // Should we do this???\n // this.tag.attributes[this.name] = \"\";\n this.text = \"\";\n this.name = \"\";\n if (c === GREATER) {\n this.openTag();\n }\n else if (isNameStartChar(c)) {\n this.unget();\n this.state = S_ATTRIB_NAME;\n }\n else {\n this.fail(\"disallowed character in attribute name.\");\n this.state = S_ATTRIB;\n }\n }\n }\n sAttribValue() {\n const c = this.getCodeNorm();\n if (isQuote(c)) {\n this.q = c;\n this.state = S_ATTRIB_VALUE_QUOTED;\n }\n else if (!isS(c)) {\n this.fail(\"unquoted attribute value.\");\n this.state = S_ATTRIB_VALUE_UNQUOTED;\n this.unget();\n }\n }\n sAttribValueQuoted() {\n // We deliberately do not use captureTo here. The specialized code we use\n // here is faster than using captureTo.\n const { q, chunk } = this;\n let { i: start } = this;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n switch (this.getCode()) {\n case q:\n this.pushAttrib(this.name, this.text + chunk.slice(start, this.prevI));\n this.name = this.text = \"\";\n this.q = null;\n this.state = S_ATTRIB_VALUE_CLOSED;\n return;\n case AMP:\n this.text += chunk.slice(start, this.prevI);\n this.state = S_ENTITY;\n this.entityReturnState = S_ATTRIB_VALUE_QUOTED;\n return;\n case NL:\n case NL_LIKE:\n case TAB:\n this.text += `${chunk.slice(start, this.prevI)} `;\n start = this.i;\n break;\n case LESS:\n this.text += chunk.slice(start, this.prevI);\n this.fail(\"disallowed character.\");\n return;\n case EOC:\n this.text += chunk.slice(start);\n return;\n default:\n }\n }\n }\n sAttribValueClosed() {\n const c = this.getCodeNorm();\n if (isS(c)) {\n this.state = S_ATTRIB;\n }\n else if (c === GREATER) {\n this.openTag();\n }\n else if (c === FORWARD_SLASH) {\n this.state = S_OPEN_TAG_SLASH;\n }\n else if (isNameStartChar(c)) {\n this.fail(\"no whitespace between attributes.\");\n this.unget();\n this.state = S_ATTRIB_NAME;\n }\n else {\n this.fail(\"disallowed character in attribute name.\");\n }\n }\n sAttribValueUnquoted() {\n // We don't do anything regarding EOL or space handling for unquoted\n // attributes. We already have failed by the time we get here, and the\n // contract that saxes upholds states that upon failure, it is not safe to\n // rely on the data passed to event handlers (other than\n // ``onerror``). Passing \"bad\" data is not a problem.\n const c = this.captureTo(ATTRIB_VALUE_UNQUOTED_TERMINATOR);\n switch (c) {\n case AMP:\n this.state = S_ENTITY;\n this.entityReturnState = S_ATTRIB_VALUE_UNQUOTED;\n break;\n case LESS:\n this.fail(\"disallowed character.\");\n break;\n case EOC:\n break;\n default:\n if (this.text.includes(\"]]>\")) {\n this.fail(\"the string \\\"]]>\\\" is disallowed in char data.\");\n }\n this.pushAttrib(this.name, this.text);\n this.name = this.text = \"\";\n if (c === GREATER) {\n this.openTag();\n }\n else {\n this.state = S_ATTRIB;\n }\n }\n }\n sCloseTag() {\n const c = this.captureNameChars();\n if (c === GREATER) {\n this.closeTag();\n }\n else if (isS(c)) {\n this.state = S_CLOSE_TAG_SAW_WHITE;\n }\n else if (c !== EOC) {\n this.fail(\"disallowed character in closing tag.\");\n }\n }\n sCloseTagSawWhite() {\n switch (this.skipSpaces()) {\n case GREATER:\n this.closeTag();\n break;\n case EOC:\n break;\n default:\n this.fail(\"disallowed character in closing tag.\");\n }\n }\n // END OF STATE ENGINE METHODS\n handleTextInRoot() {\n // This is essentially a specialized version of captureTo which is optimized\n // for performing the ]]> check. A previous version of this code, checked\n // ``this.text`` for the presence of ]]>. It simplified the code but was\n // very costly when character data contained a lot of entities to be parsed.\n //\n // Since we are using a specialized loop, we also keep track of the presence\n // of ]]> in text data. The sequence ]]> is forbidden to appear as-is.\n //\n let { i: start, forbiddenState } = this;\n const { chunk, textHandler: handler } = this;\n // eslint-disable-next-line no-labels, no-restricted-syntax\n scanLoop: \n // eslint-disable-next-line no-constant-condition\n while (true) {\n switch (this.getCode()) {\n case LESS: {\n this.state = S_OPEN_WAKA;\n if (handler !== undefined) {\n const { text } = this;\n const slice = chunk.slice(start, this.prevI);\n if (text.length !== 0) {\n handler(text + slice);\n this.text = \"\";\n }\n else if (slice.length !== 0) {\n handler(slice);\n }\n }\n forbiddenState = FORBIDDEN_START;\n // eslint-disable-next-line no-labels\n break scanLoop;\n }\n case AMP:\n this.state = S_ENTITY;\n this.entityReturnState = S_TEXT;\n if (handler !== undefined) {\n this.text += chunk.slice(start, this.prevI);\n }\n forbiddenState = FORBIDDEN_START;\n // eslint-disable-next-line no-labels\n break scanLoop;\n case CLOSE_BRACKET:\n switch (forbiddenState) {\n case FORBIDDEN_START:\n forbiddenState = FORBIDDEN_BRACKET;\n break;\n case FORBIDDEN_BRACKET:\n forbiddenState = FORBIDDEN_BRACKET_BRACKET;\n break;\n case FORBIDDEN_BRACKET_BRACKET:\n break;\n default:\n throw new Error(\"impossible state\");\n }\n break;\n case GREATER:\n if (forbiddenState === FORBIDDEN_BRACKET_BRACKET) {\n this.fail(\"the string \\\"]]>\\\" is disallowed in char data.\");\n }\n forbiddenState = FORBIDDEN_START;\n break;\n case NL_LIKE:\n if (handler !== undefined) {\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n }\n start = this.i;\n forbiddenState = FORBIDDEN_START;\n break;\n case EOC:\n if (handler !== undefined) {\n this.text += chunk.slice(start);\n }\n // eslint-disable-next-line no-labels\n break scanLoop;\n default:\n forbiddenState = FORBIDDEN_START;\n }\n }\n this.forbiddenState = forbiddenState;\n }\n handleTextOutsideRoot() {\n // This is essentially a specialized version of captureTo which is optimized\n // for a specialized task. We keep track of the presence of non-space\n // characters in the text since these are errors when appearing outside the\n // document root element.\n let { i: start } = this;\n const { chunk, textHandler: handler } = this;\n let nonSpace = false;\n // eslint-disable-next-line no-labels, no-restricted-syntax\n outRootLoop: \n // eslint-disable-next-line no-constant-condition\n while (true) {\n const code = this.getCode();\n switch (code) {\n case LESS: {\n this.state = S_OPEN_WAKA;\n if (handler !== undefined) {\n const { text } = this;\n const slice = chunk.slice(start, this.prevI);\n if (text.length !== 0) {\n handler(text + slice);\n this.text = \"\";\n }\n else if (slice.length !== 0) {\n handler(slice);\n }\n }\n // eslint-disable-next-line no-labels\n break outRootLoop;\n }\n case AMP:\n this.state = S_ENTITY;\n this.entityReturnState = S_TEXT;\n if (handler !== undefined) {\n this.text += chunk.slice(start, this.prevI);\n }\n nonSpace = true;\n // eslint-disable-next-line no-labels\n break outRootLoop;\n case NL_LIKE:\n if (handler !== undefined) {\n this.text += `${chunk.slice(start, this.prevI)}\\n`;\n }\n start = this.i;\n break;\n case EOC:\n if (handler !== undefined) {\n this.text += chunk.slice(start);\n }\n // eslint-disable-next-line no-labels\n break outRootLoop;\n default:\n if (!isS(code)) {\n nonSpace = true;\n }\n }\n }\n if (!nonSpace) {\n return;\n }\n // We use the reportedTextBeforeRoot and reportedTextAfterRoot flags\n // to avoid reporting errors for every single character that is out of\n // place.\n if (!this.sawRoot && !this.reportedTextBeforeRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextBeforeRoot = true;\n }\n if (this.closedRoot && !this.reportedTextAfterRoot) {\n this.fail(\"text data outside of root node.\");\n this.reportedTextAfterRoot = true;\n }\n }\n pushAttribNS(name, value) {\n var _a;\n const { prefix, local } = this.qname(name);\n const attr = { name, prefix, local, value };\n this.attribList.push(attr);\n (_a = this.attributeHandler) === null || _a === void 0 ? void 0 : _a.call(this, attr);\n if (prefix === \"xmlns\") {\n const trimmed = value.trim();\n if (this.currentXMLVersion === \"1.0\" && trimmed === \"\") {\n this.fail(\"invalid attempt to undefine prefix in XML 1.0\");\n }\n this.topNS[local] = trimmed;\n nsPairCheck(this, local, trimmed);\n }\n else if (name === \"xmlns\") {\n const trimmed = value.trim();\n this.topNS[\"\"] = trimmed;\n nsPairCheck(this, \"\", trimmed);\n }\n }\n pushAttribPlain(name, value) {\n var _a;\n const attr = { name, value };\n this.attribList.push(attr);\n (_a = this.attributeHandler) === null || _a === void 0 ? void 0 : _a.call(this, attr);\n }\n /**\n * End parsing. This performs final well-formedness checks and resets the\n * parser to a clean state.\n *\n * @returns this\n */\n end() {\n var _a, _b;\n if (!this.sawRoot) {\n this.fail(\"document must contain a root element.\");\n }\n const { tags } = this;\n while (tags.length > 0) {\n const tag = tags.pop();\n this.fail(`unclosed tag: ${tag.name}`);\n }\n if ((this.state !== S_BEGIN) && (this.state !== S_TEXT)) {\n this.fail(\"unexpected end.\");\n }\n const { text } = this;\n if (text.length !== 0) {\n (_a = this.textHandler) === null || _a === void 0 ? void 0 : _a.call(this, text);\n this.text = \"\";\n }\n this._closed = true;\n (_b = this.endHandler) === null || _b === void 0 ? void 0 : _b.call(this);\n this._init();\n return this;\n }\n /**\n * Resolve a namespace prefix.\n *\n * @param prefix The prefix to resolve.\n *\n * @returns The namespace URI or ``undefined`` if the prefix is not defined.\n */\n resolve(prefix) {\n var _a, _b;\n let uri = this.topNS[prefix];\n if (uri !== undefined) {\n return uri;\n }\n const { tags } = this;\n for (let index = tags.length - 1; index >= 0; index--) {\n uri = tags[index].ns[prefix];\n if (uri !== undefined) {\n return uri;\n }\n }\n uri = this.ns[prefix];\n if (uri !== undefined) {\n return uri;\n }\n return (_b = (_a = this.opt).resolvePrefix) === null || _b === void 0 ? void 0 : _b.call(_a, prefix);\n }\n /**\n * Parse a qname into its prefix and local name parts.\n *\n * @param name The name to parse\n *\n * @returns\n */\n qname(name) {\n // This is faster than using name.split(\":\").\n const colon = name.indexOf(\":\");\n if (colon === -1) {\n return { prefix: \"\", local: name };\n }\n const local = name.slice(colon + 1);\n const prefix = name.slice(0, colon);\n if (prefix === \"\" || local === \"\" || local.includes(\":\")) {\n this.fail(`malformed name: ${name}.`);\n }\n return { prefix, local };\n }\n processAttribsNS() {\n var _a;\n const { attribList } = this;\n const tag = this.tag;\n {\n // add namespace info to tag\n const { prefix, local } = this.qname(tag.name);\n tag.prefix = prefix;\n tag.local = local;\n const uri = tag.uri = (_a = this.resolve(prefix)) !== null && _a !== void 0 ? _a : \"\";\n if (prefix !== \"\") {\n if (prefix === \"xmlns\") {\n this.fail(\"tags may not have \\\"xmlns\\\" as prefix.\");\n }\n if (uri === \"\") {\n this.fail(`unbound namespace prefix: ${JSON.stringify(prefix)}.`);\n tag.uri = prefix;\n }\n }\n }\n if (attribList.length === 0) {\n return;\n }\n const { attributes } = tag;\n const seen = new Set();\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (const attr of attribList) {\n const { name, prefix, local } = attr;\n let uri;\n let eqname;\n if (prefix === \"\") {\n uri = name === \"xmlns\" ? XMLNS_NAMESPACE : \"\";\n eqname = name;\n }\n else {\n uri = this.resolve(prefix);\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (uri === undefined) {\n this.fail(`unbound namespace prefix: ${JSON.stringify(prefix)}.`);\n uri = prefix;\n }\n eqname = `{${uri}}${local}`;\n }\n if (seen.has(eqname)) {\n this.fail(`duplicate attribute: ${eqname}.`);\n }\n seen.add(eqname);\n attr.uri = uri;\n attributes[name] = attr;\n }\n this.attribList = [];\n }\n processAttribsPlain() {\n const { attribList } = this;\n // eslint-disable-next-line prefer-destructuring\n const attributes = this.tag.attributes;\n for (const { name, value } of attribList) {\n if (attributes[name] !== undefined) {\n this.fail(`duplicate attribute: ${name}.`);\n }\n attributes[name] = value;\n }\n this.attribList = [];\n }\n /**\n * Handle a complete open tag. This parser code calls this once it has seen\n * the whole tag. This method checks for well-formeness and then emits\n * ``onopentag``.\n */\n openTag() {\n var _a;\n this.processAttribs();\n const { tags } = this;\n const tag = this.tag;\n tag.isSelfClosing = false;\n // There cannot be any pending text here due to the onopentagstart that was\n // necessarily emitted before we get here. So we do not check text.\n (_a = this.openTagHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n tags.push(tag);\n this.state = S_TEXT;\n this.name = \"\";\n }\n /**\n * Handle a complete self-closing tag. This parser code calls this once it has\n * seen the whole tag. This method checks for well-formeness and then emits\n * ``onopentag`` and ``onclosetag``.\n */\n openSelfClosingTag() {\n var _a, _b, _c;\n this.processAttribs();\n const { tags } = this;\n const tag = this.tag;\n tag.isSelfClosing = true;\n // There cannot be any pending text here due to the onopentagstart that was\n // necessarily emitted before we get here. So we do not check text.\n (_a = this.openTagHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n (_b = this.closeTagHandler) === null || _b === void 0 ? void 0 : _b.call(this, tag);\n const top = this.tag = (_c = tags[tags.length - 1]) !== null && _c !== void 0 ? _c : null;\n if (top === null) {\n this.closedRoot = true;\n }\n this.state = S_TEXT;\n this.name = \"\";\n }\n /**\n * Handle a complete close tag. This parser code calls this once it has seen\n * the whole tag. This method checks for well-formeness and then emits\n * ``onclosetag``.\n */\n closeTag() {\n const { tags, name } = this;\n // Our state after this will be S_TEXT, no matter what, and we can clear\n // tagName now.\n this.state = S_TEXT;\n this.name = \"\";\n if (name === \"\") {\n this.fail(\"weird empty close tag.\");\n this.text += \"\";\n return;\n }\n const handler = this.closeTagHandler;\n let l = tags.length;\n while (l-- > 0) {\n const tag = this.tag = tags.pop();\n this.topNS = tag.ns;\n handler === null || handler === void 0 ? void 0 : handler(tag);\n if (tag.name === name) {\n break;\n }\n this.fail(\"unexpected close tag.\");\n }\n if (l === 0) {\n this.closedRoot = true;\n }\n else if (l < 0) {\n this.fail(`unmatched closing tag: ${name}.`);\n this.text += ``;\n }\n }\n /**\n * Resolves an entity. Makes any necessary well-formedness checks.\n *\n * @param entity The entity to resolve.\n *\n * @returns The parsed entity.\n */\n parseEntity(entity) {\n // startsWith would be significantly slower for this test.\n if (entity[0] !== \"#\") {\n const defined = this.ENTITIES[entity];\n if (defined !== undefined) {\n return defined;\n }\n this.fail(this.isName(entity) ? \"undefined entity.\" :\n \"disallowed character in entity name.\");\n return `&${entity};`;\n }\n let num = NaN;\n if (entity[1] === \"x\" && /^#x[0-9a-f]+$/i.test(entity)) {\n num = parseInt(entity.slice(2), 16);\n }\n else if (/^#[0-9]+$/.test(entity)) {\n num = parseInt(entity.slice(1), 10);\n }\n // The character reference is required to match the CHAR production.\n if (!this.isChar(num)) {\n this.fail(\"malformed character entity.\");\n return `&${entity};`;\n }\n return String.fromCodePoint(num);\n }\n}\nexports.SaxesParser = SaxesParser;\n//# sourceMappingURL=saxes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableWebToNodeStream = void 0;\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * Converts a Web-API stream into Node stream.Readable class\n * Node stream readable: https://nodejs.org/api/stream.html#stream_readable_streams\n * Web API readable-stream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n * Node readable stream: https://nodejs.org/api/stream.html#stream_readable_streams\n */\nclass ReadableWebToNodeStream extends readable_stream_1.Readable {\n /**\n *\n * @param stream ReadableStream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n */\n constructor(stream) {\n super();\n this.bytesRead = 0;\n this.released = false;\n this.reader = stream.getReader();\n }\n /**\n * Implementation of readable._read(size).\n * When readable._read() is called, if data is available from the resource,\n * the implementation should begin pushing that data into the read queue\n * https://nodejs.org/api/stream.html#stream_readable_read_size_1\n */\n async _read() {\n // Should start pushing data into the queue\n // Read data from the underlying Web-API-readable-stream\n if (this.released) {\n this.push(null); // Signal EOF\n return;\n }\n this.pendingRead = this.reader.read();\n const data = await this.pendingRead;\n // clear the promise before pushing pushing new data to the queue and allow sequential calls to _read()\n delete this.pendingRead;\n if (data.done || this.released) {\n this.push(null); // Signal EOF\n }\n else {\n this.bytesRead += data.value.length;\n this.push(data.value); // Push new data to the queue\n }\n }\n /**\n * If there is no unresolved read call to Web-API Readable​Stream immediately returns;\n * otherwise will wait until the read is resolved.\n */\n async waitForReadToComplete() {\n if (this.pendingRead) {\n await this.pendingRead;\n }\n }\n /**\n * Close wrapper\n */\n async close() {\n await this.syncAndRelease();\n }\n async syncAndRelease() {\n this.released = true;\n await this.waitForReadToComplete();\n await this.reader.releaseLock();\n }\n}\nexports.ReadableWebToNodeStream = ReadableWebToNodeStream;\n//# sourceMappingURL=index.js.map","/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction promisifyEventEmitter(event, result) {\n return new Promise((resolve, reject) => {\n event.on('end', () => resolve(result));\n event.on('error', reject);\n });\n}\nfunction arrayifyStream(stream) {\n const array = [];\n return promisifyEventEmitter(stream.on('data', data => array.push(data)), array);\n}\nexports.default = arrayifyStream;\n//# sourceMappingURL=index.js.map","\nconst DynamicNestedLoopJoin = require('./join/DynamicNestedLoopJoin');\nconst HashJoin = require('./join/HashJoin');\nconst NestedLoopJoin = require('./join/NestedLoopJoin');\nconst SymmetricHashJoin = require('./join/SymmetricHashJoin');\n\nconst MergeStream = require('./util/MergeIterator');\n\nmodule.exports = {\n DynamicNestedLoopJoin,\n HashJoin,\n NestedLoopJoin,\n SymmetricHashJoin,\n\n MergeStream\n};","\nlet AsyncIterator = require('asynciterator');\nlet MultiTransformIterator = AsyncIterator.MultiTransformIterator;\nlet SimpleTransformIterator = AsyncIterator.SimpleTransformIterator;\n\n// Nested Loop Join, but the values of the inner loop are determined by each value of the outer loop, possibly reducing the number of necessary checks\nclass DynamicNestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, funRight, funJoin, options)\n {\n super(left, options);\n\n this.funRight = funRight;\n this.funJoin = funJoin;\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.funRight(leftItem), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = DynamicNestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Hash_join\nclass HashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.addedDataListener = false;\n this.left = left;\n this.right = right;\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.leftMap = new Map();\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.readable = false;\n\n this.left.on('end', allowJoining.bind(this));\n\n function allowJoining ()\n {\n this.readable = true;\n this.right.on('readable', () => this.readable = true);\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n this.on('newListener', (eventName) =>\n {\n if (eventName === 'data')\n {\n this._addDataListenerIfNeeded();\n }\n });\n if (this.left.readable)\n this._addDataListenerIfNeeded();\n this.left.on('readable', () => this._addDataListenerIfNeeded());\n }\n\n hasResults ()\n {\n return !this.right.ended || this.matchIdx < this.matches.length;\n }\n\n _end ()\n {\n super._end();\n this.left.destroy();\n this.right.destroy();\n }\n\n read ()\n {\n this._addDataListenerIfNeeded();\n\n while(true) {\n if (this.ended || !this.readable)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n this.match = this.right.read();\n\n if (this.match === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(this.match);\n this.matches = this.leftMap.get(hash) || [];\n this.matchIdx = 0;\n }\n }\n\n _addDataListenerIfNeeded() {\n if (!this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n }\n\n _addDataListener()\n {\n this.left.on('data', addItem.bind(this));\n\n function addItem(item)\n {\n let hash = this.funHash(item);\n if (!this.leftMap.has(hash))\n this.leftMap.set(hash, []);\n let arr = this.leftMap.get(hash);\n arr.push(item);\n }\n }\n}\n\nmodule.exports = HashJoin;\n","\nconst { MultiTransformIterator, SimpleTransformIterator, scheduleTask } = require('asynciterator');\n\n// https://en.wikipedia.org/wiki/Nested_loop_join\nclass NestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, right, funJoin, options)\n {\n super(left, options);\n\n this.right = right;\n this.funJoin = funJoin; // function that joins 2 elements or returns null if join is not possible\n this.on('end', () => this.right.close());\n }\n\n _end ()\n {\n super._end();\n scheduleTask(() => this.right.destroy());\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.right.clone(), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = NestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Symmetric_Hash_Join\nclass SymmetricHashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.left = left;\n this.right = right;\n\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.usedLeft = false;\n this.leftMap = new Map();\n this.rightMap = new Map();\n\n this.on('end', () => this._cleanup() );\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n if (this.left.readable || this.right.readable)\n {\n this.readable = true;\n }\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.left.on('readable', () => this.readable = true);\n this.right.on('readable', () => this.readable = true);\n\n // this needs to be here since it's possible the left/right streams only get ended after there are no more results left\n this.left.on ('end', () => { if (!this.hasResults()) this._end(); });\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n hasResults()\n {\n // The \"!!this.match\" condition was added as a workaround to race\n // conditions and/or duplicate \"end\" events that may lead to premature\n // cleanups of the \"this.matches\" array.\n // See https://github.com/joachimvh/asyncjoin/issues/7\n return !this.left.ended || !this.right.ended || (!!this.matches && this.matchIdx < this.matches.length);\n }\n\n _cleanup ()\n {\n // motivate garbage collector to remove these\n this.leftMap = null;\n this.rightMap = null;\n this.matches = null;\n }\n\n _end ()\n {\n super._end();\n this.left.destroy();\n this.right.destroy();\n }\n\n read ()\n {\n while(true){\n if (this.ended)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.usedLeft ? this.funJoin(this.match, item) : this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n let item = null;\n // try both streams if the first one has no value\n for (let i = 0; i < 2; ++i)\n {\n item = this.usedLeft ? this.right.read() : this.left.read();\n this.usedLeft = !this.usedLeft; // try other stream next time\n\n // found a result, no need to check the other stream this run\n if (item !== null)\n break;\n }\n\n if (this.done || item === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(item);\n\n if (this.usedLeft && this.right.done) {\n this.leftMap = null;\n } else if (this.left.done) {\n this.rightMap = null;\n } else {\n let map = this.usedLeft ? this.leftMap : this.rightMap;\n if (!map.has(hash))\n map.set(hash, []);\n let arr = map.get(hash);\n arr.push(item);\n }\n\n this.match = item;\n this.matches = (this.usedLeft ? this.rightMap : this.leftMap).get(hash) || [];\n this.matchIdx = 0;\n }\n }\n}\n\nmodule.exports = SymmetricHashJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// merges the contents of multiple streams\nclass MergeIterator extends AsyncIterator\n{\n constructor (streams)\n {\n super();\n \n if (!Array.isArray(streams))\n streams = Array.prototype.slice.call(arguments);\n \n this.streams = streams;\n \n for (let stream of streams)\n {\n stream.on('readable', () => this.emit('readable'));\n stream.on('end', () => this._removeStream(stream));\n }\n \n if (this.streams.length === 0)\n this.close();\n \n this.idx = this.streams.length-1;\n }\n \n _removeStream (stream)\n {\n let idx = this.streams.indexOf(stream);\n if (idx < 0)\n return;\n \n this.streams.splice(idx, 1);\n if (this.idx >= this.streams.length)\n --this.idx;\n \n if (this.streams.length === 0)\n this._end();\n }\n \n close ()\n {\n super.close();\n for (let stream of this.streams)\n stream.close();\n }\n \n read ()\n {\n for (let attempts = 0; attempts < this.streams.length; ++attempts)\n {\n this.idx = (this.idx + 1) % this.streams.length;\n let item = this.streams[this.idx].read();\n if (item !== null)\n return item;\n }\n \n return null;\n }\n}\n\nmodule.exports = MergeIterator;","module.exports = function(variables) {\nfunction getVariableValue(name) {\n if (!variables || !(name in variables)) {\n throw new Error('Undefined variable: ' + name);\n }\n return variables[name];\n}\nconst df_475_1 = new (require('@comunica/logger-void').LoggerVoid)();\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-init/^3.0.0/components/ActorInit.jsonld#ActorInit_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-context-preprocess/^3.0.0/components/ActorContextPreprocess.jsonld#ActorContextPreprocess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-bindings/^3.0.0/components/ActorHashBindings.jsonld#ActorHashBindings_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-quads/^3.0.0/components/ActorHashQuads.jsonld#ActorHashQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-query-operation/^3.0.0/components/ActorOptimizeQueryOperation.jsonld#ActorOptimizeQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-parse/^3.0.0/components/ActorQueryParse.jsonld#ActorQueryParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-result-serialize/^3.0.0/components/ActorQueryResultSerialize.jsonld#ActorQueryResultSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify-hypermedia/^3.0.0/components/ActorQuerySourceIdentifyHypermedia.jsonld#ActorQuerySourceIdentifyHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__3_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference/^3.0.0/components/ActorDereference.jsonld#ActorDereference_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__3_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference-rdf/^3.0.0/components/ActorDereferenceRdf.jsonld#ActorDereferenceRdf_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-entries-sort/^3.0.0/components/ActorRdfJoinEntriesSort.jsonld#ActorRdfJoinEntriesSort_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-selectivity/^3.0.0/components/ActorRdfJoinSelectivity.jsonld#ActorRdfJoinSelectivity_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__3_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata/^3.0.0/components/ActorRdfMetadata.jsonld#ActorRdfMetadata_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-accumulate/^3.0.0/components/ActorRdfMetadataAccumulate.jsonld#ActorRdfMetadataAccumulate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-extract/^3.0.0/components/ActorRdfMetadataExtract.jsonld#ActorRdfMetadataExtract_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__3_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse/^3.0.0/components/ActorRdfParse.jsonld#ActorRdfParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__3_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse-html/^3.0.0/components/ActorRdfParseHtml.jsonld#ActorRdfParseHtml_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__3_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links/^3.0.0/components/ActorRdfResolveHypermediaLinks.jsonld#ActorRdfResolveHypermediaLinks_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__3_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links-queue/^3.0.0/components/ActorRdfResolveHypermediaLinksQueue.jsonld#ActorRdfResolveHypermediaLinksQueue_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-serialize/^3.0.0/components/ActorRdfSerialize.jsonld#ActorRdfSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__3_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-hypermedia/^3.0.0/components/ActorRdfUpdateHypermedia.jsonld#ActorRdfUpdateHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads/^3.0.0/components/ActorRdfUpdateQuads.jsonld#ActorRdfUpdateQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^3.0.0/components/ActorHttp.jsonld#ActorHttp_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_fallback_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^3.0.0/components/ActorHttp.jsonld#ActorHttp_fallback_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus = new (require('@comunica/bus-query-operation').BusQueryOperation)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^3.0.0/components/ActorQueryOperation.jsonld#ActorQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-process/^3.0.0/components/ActorQueryProcess.jsonld#ActorQueryProcess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify/^3.0.0/components/ActorQuerySourceIdentify.jsonld#ActorQuerySourceIdentify_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^3.0.0/components/ActorRdfJoin.jsonld#ActorRdfJoin_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http-invalidate/^3.0.0/components/ActorHttpInvalidate.jsonld#ActorHttpInvalidate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-merge-bindings-context/^3.0.0/components/ActorMergeBindingsContext.jsonld#ActorMergeBindingsContext_default_bus'\n});\nconst urn_comunica_default_context_preprocess_actors_convert_shortcuts = new (require('@comunica/actor-context-preprocess-convert-shortcuts').ActorContextPreprocessConvertShortcuts)({\n 'contextKeyShortcuts': {\"baseIRI\":\"@comunica/actor-init-query:baseIRI\",\"datetime\":\"@comunica/actor-http-memento:datetime\",\"destination\":\"@comunica/bus-rdf-update-quads:destination\",\"distinctConstruct\":\"@comunica/actor-init-query:distinctConstruct\",\"explain\":\"@comunica/actor-init-query:explain\",\"extensionFunctionCreator\":\"@comunica/actor-init-query:extensionFunctionCreator\",\"extensionFunctions\":\"@comunica/actor-init-query:extensionFunctions\",\"fetch\":\"@comunica/bus-http:fetch\",\"functionArgumentsCache\":\"@comunica/actor-init-query:functionArgumentsCache\",\"httpAuth\":\"@comunica/bus-http:auth\",\"httpBodyTimeout\":\"@comunica/bus-http:http-body-timeout\",\"httpIncludeCredentials\":\"@comunica/bus-http:include-credentials\",\"httpProxyHandler\":\"@comunica/actor-http-proxy:httpProxyHandler\",\"httpRetryCount\":\"@comunica/bus-http:http-retry-count\",\"httpRetryDelay\":\"@comunica/bus-http:http-retry-delay\",\"httpRetryOnServerError\":\"@comunica/bus-http:http-retry-on-server-error\",\"httpTimeout\":\"@comunica/bus-http:http-timeout\",\"initialBindings\":\"@comunica/actor-init-query:initialBindings\",\"lenient\":\"@comunica/actor-init-query:lenient\",\"log\":\"@comunica/core:log\",\"noCache\":\"@comunica/actor-init-query:noCache\",\"queryFormat\":\"@comunica/actor-init-query:queryFormat\",\"queryTimestamp\":\"@comunica/actor-init-query:queryTimestamp\",\"readOnly\":\"@comunica/bus-query-operation:readOnly\",\"recoverBrokenLinks\":\"@comunica/bus-http-wayback:recover-broken-links\",\"sources\":\"@comunica/actor-init-query:querySourcesUnidentified\",\"traverse\":\"@comunica/bus-query-source-identify:traverse\",\"unionDefaultGraph\":\"@comunica/bus-query-operation:unionDefaultGraph\"},\n 'name': 'urn:comunica:default:context-preprocess/actors#convert-shortcuts',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_set_defaults = new (require('@comunica/actor-context-preprocess-set-defaults').ActorContextPreprocessSetDefaults)({\n 'logger': df_475_1,\n 'name': 'urn:comunica:default:context-preprocess/actors#set-defaults',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_source_to_destination = new (require('@comunica/actor-context-preprocess-source-to-destination').ActorContextPreprocessSourceToDestination)({\n 'name': 'urn:comunica:default:context-preprocess/actors#source-to-destination',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_actors_query_source_skolemize = new (require('@comunica/actor-context-preprocess-query-source-skolemize').ActorContextPreprocessQuerySourceSkolemize)({\n 'name': 'urn:comunica:default:context-preprocess/actors#query-source-skolemize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:context-preprocess/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_hash_bindings_actors_sha1 = new (require('@comunica/actor-hash-bindings-sha1').ActorHashBindingsSha1)({\n 'name': 'urn:comunica:default:hash-bindings/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_bindings_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-bindings/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__3_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_quads_actors_sha1 = new (require('@comunica/actor-hash-quads-sha1').ActorHashQuadsSha1)({\n 'name': 'urn:comunica:default:hash-quads/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus\n});\nconst urn_comunica_default_hash_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_quads__3_0_0_components_ActorHashQuads_jsonld_ActorHashQuads_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_copy = new (require('@comunica/actor-optimize-query-operation-rewrite-copy').ActorOptimizeQueryOperationRewriteCopy)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-copy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_move = new (require('@comunica/actor-optimize-query-operation-rewrite-move').ActorOptimizeQueryOperationRewriteMove)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-move',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_rewrite_add = new (require('@comunica/actor-optimize-query-operation-rewrite-add').ActorOptimizeQueryOperationRewriteAdd)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#rewrite-add',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_group_sources = new (require('@comunica/actor-optimize-query-operation-group-sources').ActorOptimizeQueryOperationGroupSources)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#group-sources',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_construct_distinct = new (require('@comunica/actor-optimize-query-operation-construct-distinct').ActorOptimizeQueryOperationConstructDistinct)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#construct-distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'filterErrors': true,\n 'name': 'urn:comunica:default:optimize-query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_query_parse_actors_sparql = new (require('@comunica/actor-query-parse-sparql').ActorQueryParseSparql)({\n 'prefixes': {\"dbpedia\":\"http://dbpedia.org/resource/\",\"dbpedia-owl\":\"http://dbpedia.org/ontology/\",\"dbpprop\":\"http://dbpedia.org/property/\",\"dc\":\"http://purl.org/dc/terms/\",\"dc11\":\"http://purl.org/dc/elements/1.1/\",\"dcterms\":\"http://purl.org/dc/terms/\",\"foaf\":\"http://xmlns.com/foaf/0.1/\",\"geo\":\"http://www.w3.org/2003/01/geo/wgs84_pos#\",\"owl\":\"http://www.w3.org/2002/07/owl#\",\"rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"rdfs\":\"http://www.w3.org/2000/01/rdf-schema#\",\"schema\":\"http://schema.org/\",\"skos\":\"http://www.w3.org/2008/05/skos#\",\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"},\n 'name': 'urn:comunica:default:query-parse/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_actors_graphql = new (require('@comunica/actor-query-parse-graphql').ActorQueryParseGraphql)({\n 'name': 'urn:comunica:default:query-parse/actors#graphql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-parse/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__3_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_json = new (require('@comunica/actor-query-result-serialize-json').ActorQueryResultSerializeJson)({\n 'mediaTypePriorities': {\"application/json\":1},\n 'mediaTypeFormats': {\"application/json\":\"https://comunica.linkeddatafragments.org/#results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_simple = new (require('@comunica/actor-query-result-serialize-simple').ActorQueryResultSerializeSimple)({\n 'mediaTypePriorities': {\"simple\":0.9},\n 'mediaTypeFormats': {\"simple\":\"https://comunica.linkeddatafragments.org/#results_simple\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#simple',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_csv = new (require('@comunica/actor-query-result-serialize-sparql-csv').ActorQueryResultSerializeSparqlCsv)({\n 'mediaTypePriorities': {\"text/csv\":0.75},\n 'mediaTypeFormats': {\"text/csv\":\"http://www.w3.org/ns/formats/SPARQL_Results_CSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#csv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_tsv = new (require('@comunica/actor-query-result-serialize-sparql-tsv').ActorQueryResultSerializeSparqlTsv)({\n 'mediaTypePriorities': {\"text/tab-separated-values\":0.75},\n 'mediaTypeFormats': {\"text/tab-separated-values\":\"http://www.w3.org/ns/formats/SPARQL_Results_TSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-tsv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_xml = new (require('@comunica/actor-query-result-serialize-sparql-xml').ActorQueryResultSerializeSparqlXml)({\n 'mediaTypePriorities': {\"application/sparql-results+xml\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+xml\":\"http://www.w3.org/ns/formats/SPARQL_Results_XML\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-xml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_table = new (require('@comunica/actor-query-result-serialize-table').ActorQueryResultSerializeTable)({\n 'columnWidth': 50,\n 'mediaTypePriorities': {\"table\":0.6},\n 'mediaTypeFormats': {\"table\":\"https://comunica.linkeddatafragments.org/#results_table\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#table',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_tree = new (require('@comunica/actor-query-result-serialize-tree').ActorQueryResultSerializeTree)({\n 'mediaTypePriorities': {\"tree\":0.5},\n 'mediaTypeFormats': {\"tree\":\"https://comunica.linkeddatafragments.org/#results_tree\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#tree',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-result-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_source_identify_hypermedia_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'filterFactor',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-source-identify-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus\n});\nconst urn_comunica_default_dereference_actors_fallback = new (require('@comunica/actor-dereference-fallback').ActorDereferenceFallback)({\n 'name': 'urn:comunica:default:dereference/actors#fallback',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__3_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_dereference_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__3_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_dereference_rdf_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference-rdf/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__3_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_actors_cardinality = new (require('@comunica/actor-rdf-join-entries-sort-cardinality').ActorRdfJoinEntriesSortCardinality)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__3_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_actors_variable_counting = new (require('@comunica/actor-rdf-join-selectivity-variable-counting').ActorRdfJoinSelectivityVariableCounting)({\n 'name': 'urn:comunica:default:rdf-join-selectivity/actors#variable-counting',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'accuracy',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-join-selectivity/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__3_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_metadata_actors_primary_topic = new (require('@comunica/actor-rdf-metadata-primary-topic').ActorRdfMetadataPrimaryTopic)({\n 'metadataToData': false,\n 'dataToMetadataOnInvalidMetadataGraph': true,\n 'name': 'urn:comunica:default:rdf-metadata/actors#primary-topic',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__3_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_actors_all = new (require('@comunica/actor-rdf-metadata-all').ActorRdfMetadataAll)({\n 'name': 'urn:comunica:default:rdf-metadata/actors#all',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__3_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-metadata/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__3_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_cancontainundefs = new (require('@comunica/actor-rdf-metadata-accumulate-cancontainundefs').ActorRdfMetadataAccumulateCanContainUndefs)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#cancontainundefs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_cardinality = new (require('@comunica/actor-rdf-metadata-accumulate-cardinality').ActorRdfMetadataAccumulateCardinality)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_pagesize = new (require('@comunica/actor-rdf-metadata-accumulate-pagesize').ActorRdfMetadataAccumulatePageSize)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#pagesize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_actors_requesttime = new (require('@comunica/actor-rdf-metadata-accumulate-requesttime').ActorRdfMetadataAccumulateRequestTime)({\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/actors#requesttime',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_accumulate_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-accumulate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_accumulate__3_0_0_components_ActorRdfMetadataAccumulate_jsonld_ActorRdfMetadataAccumulate_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_controls = new (require('@comunica/actor-rdf-metadata-extract-hydra-controls').ActorRdfMetadataExtractHydraControls)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-controls',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_count = new (require('@comunica/actor-rdf-metadata-extract-hydra-count').ActorRdfMetadataExtractHydraCount)({\n 'predicates': [\n 'http://www.w3.org/ns/hydra/core#totalItems',\n 'http://rdfs.org/ns/void#triples'\n],\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-count',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_pagesize = new (require('@comunica/actor-rdf-metadata-extract-hydra-pagesize').ActorRdfMetadataExtractHydraPagesize)({\n 'predicates': [\n 'http://www.w3.org/ns/hydra/core#itemsPerPage'\n],\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-pagesize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_request_time = new (require('@comunica/actor-rdf-metadata-extract-request-time').ActorRdfMetadataExtractRequestTime)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#request-time',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_allow_http_methods = new (require('@comunica/actor-rdf-metadata-extract-allow-http-methods').ActorRdfMetadataExtractAllowHttpMethods)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#allow-http-methods',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_put_accepted = new (require('@comunica/actor-rdf-metadata-extract-put-accepted').ActorRdfMetadataExtractPutAccepted)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#put-accepted',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_patch_sparql_update = new (require('@comunica/actor-rdf-metadata-extract-patch-sparql-update').ActorRdfMetadataExtractPatchSparqlUpdate)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#patch-sparql-update',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_sparql_service = new (require('@comunica/actor-rdf-metadata-extract-sparql-service').ActorRdfMetadataExtractSparqlService)({\n 'inferHttpsEndpoint': true,\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#sparql-service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'filterErrors': true,\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-extract/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__3_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_n3 = new (require('@comunica/actor-rdf-parse-n3').ActorRdfParseN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'priorityScale': 1,\n 'name': 'urn:comunica:default:rdf-parse/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__3_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_rdfxml = new (require('@comunica/actor-rdf-parse-rdfxml').ActorRdfParseRdfXml)({\n 'mediaTypePriorities': {\"application/rdf+xml\":1},\n 'mediaTypeFormats': {\"application/rdf+xml\":\"http://www.w3.org/ns/formats/RDF_XML\"},\n 'priorityScale': 0.5,\n 'name': 'urn:comunica:default:rdf-parse/actors#rdfxml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__3_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_xmlrdfa = new (require('@comunica/actor-rdf-parse-xml-rdfa').ActorRdfParseXmlRdfa)({\n 'mediaTypePriorities': {\"application/xml\":1,\"image/svg+xml\":1,\"text/xml\":1},\n 'mediaTypeFormats': {\"application/xml\":\"http://www.w3.org/ns/formats/RDFa\",\"image/svg+xml\":\"http://www.w3.org/ns/formats/RDFa\",\"text/xml\":\"http://www.w3.org/ns/formats/RDFa\"},\n 'priorityScale': 0.3,\n 'name': 'urn:comunica:default:rdf-parse/actors#xmlrdfa',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__3_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_shaclc = new (require('@comunica/actor-rdf-parse-shaclc').ActorRdfParseShaclc)({\n 'mediaTypePriorities': {\"text/shaclc\":1,\"text/shaclc-ext\":0.5},\n 'mediaTypeFormats': {\"text/shaclc\":\"http://www.w3.org/ns/formats/Shaclc\",\"text/shaclc-ext\":\"http://www.w3.org/ns/formats/ShaclcExtended\"},\n 'priorityScale': 0.1,\n 'name': 'urn:comunica:default:rdf-parse/actors#shaclc',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__3_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_mediators_parse = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-parse/mediators#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__3_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-parse/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__3_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_html = new (require('@comunica/actor-rdf-parse-html').ActorRdfParseHtml)({\n 'busRdfParseHtml': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__3_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus,\n 'mediaTypePriorities': {\"application/xhtml+xml\":0.9,\"text/html\":1},\n 'mediaTypeFormats': {\"application/xhtml+xml\":\"http://www.w3.org/ns/formats/HTML\",\"text/html\":\"http://www.w3.org/ns/formats/HTML\"},\n 'priorityScale': 0.2,\n 'name': 'urn:comunica:default:rdf-parse/actors#html',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__3_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_microdata = new (require('@comunica/actor-rdf-parse-html-microdata').ActorRdfParseHtmlMicrodata)({\n 'name': 'urn:comunica:default:rdf-parse-html/actors#microdata',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__3_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_rdfa = new (require('@comunica/actor-rdf-parse-html-rdfa').ActorRdfParseHtmlRdfa)({\n 'name': 'urn:comunica:default:rdf-parse-html/actors#rdfa',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__3_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_actors_next = new (require('@comunica/actor-rdf-resolve-hypermedia-links-next').ActorRdfResolveHypermediaLinksNext)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/actors#next',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__3_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__3_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_actors_fifo = new (require('@comunica/actor-rdf-resolve-hypermedia-links-queue-fifo').ActorRdfResolveHypermediaLinksQueueFifo)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/actors#fifo',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__3_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__3_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_n3 = new (require('@comunica/actor-rdf-serialize-n3').ActorRdfSerializeN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'name': 'urn:comunica:default:rdf-serialize/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_jsonld = new (require('@comunica/actor-rdf-serialize-jsonld').ActorRdfSerializeJsonLd)({\n 'jsonStringifyIndentSpaces': 2,\n 'mediaTypePriorities': {\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-serialize/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_shaclc = new (require('@comunica/actor-rdf-serialize-shaclc').ActorRdfSerializeShaclc)({\n 'mediaTypePriorities': {\"text/shaclc\":1,\"text/shaclc-ext\":0.5},\n 'mediaTypeFormats': {\"text/shaclc\":\"http://www.w3.org/ns/formats/Shaclc\",\"text/shaclc-ext\":\"http://www.w3.org/ns/formats/ShaclcExtended\"},\n 'priorityScale': 0.1,\n 'name': 'urn:comunica:default:rdf-serialize/actors#shaclc',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__3_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__3_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_rdfjs_store = new (require('@comunica/actor-rdf-update-quads-rdfjs-store').ActorRdfUpdateQuadsRdfJsStore)({\n 'name': 'urn:comunica:default:rdf-update-quads/actors#rdfjs-store',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_http_actors_fetch = new (require('@comunica/actor-http-fetch').ActorHttpFetch)({\n 'agentOptions': {\"keepAlive\":true,\"maxSockets\":5},\n 'name': 'urn:comunica:default:http/actors#fetch',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_http_mediators_no_fallback = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'time',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:http/mediators#no-fallback',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_http_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'time',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:http/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_fallback_bus\n});\nconst urn_comunica_default_query_operation_actors_source = new (require('@comunica/actor-query-operation-source').ActorQueryOperationSource)({\n 'name': 'urn:comunica:default:query-operation/actors#source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'httpRequests',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_process_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-process/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_source_identify_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-source-identify/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus\n});\nconst urn_comunica_default_rdf_join_mediators_main = new (require('@comunica/mediator-join-coefficients-fixed').MediatorJoinCoefficientsFixed)({\n 'cpuWeight': 10,\n 'memoryWeight': 1,\n 'timeWeight': 2,\n 'ioWeight': 10,\n 'name': 'urn:comunica:default:rdf-join/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-context-preprocess-query-source-identify/^3.0.0/components/ActorContextPreprocessQuerySourceIdentify.jsonld#IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_http_invalidate_mediators_main = new (require('@comunica/mediator-all').MediatorAll)({\n 'name': 'urn:comunica:default:http-invalidate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_update_quads_hypermedia__3_0_0_components_ActorRdfUpdateQuadsHypermedia_jsonld_IActorRdfUpdateQuadsHypermediaArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-update-quads-hypermedia/^3.0.0/components/ActorRdfUpdateQuadsHypermedia.jsonld#IActorRdfUpdateQuadsHypermediaArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-sparql-json/^3.0.0/components/ActionObserverHttp.jsonld#IActionObserverHttpArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^3.0.0/components/ActionObserverHttp.jsonld#IActionObserverHttpArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__3_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_merge_bindings_context_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mergeHandlers',\n 'name': 'urn:comunica:default:merge-bindings-context/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_merge_bindings_context__3_0_0_components_ActorMergeBindingsContext_jsonld_ActorMergeBindingsContext_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_single = new (require('@comunica/actor-rdf-join-inner-single').ActorRdfJoinSingle)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-single',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_empty = new (require('@comunica/actor-rdf-join-inner-multi-empty').ActorRdfJoinMultiEmpty)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-empty',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_hash = new (require('@comunica/actor-rdf-join-inner-hash').ActorRdfJoinHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_symmetric_hash = new (require('@comunica/actor-rdf-join-inner-symmetrichash').ActorRdfJoinSymmetricHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-symmetric-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_nested_loop = new (require('@comunica/actor-rdf-join-inner-nestedloop').ActorRdfJoinNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash = new (require('@comunica/actor-rdf-join-minus-hash').ActorRdfJoinMinusHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash_undef = new (require('@comunica/actor-rdf-join-minus-hash-undef').ActorRdfJoinMinusHashUndef)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash-undef',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_def_nonblocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': false,\n 'blocking': false,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-def-nonblocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_def_blocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': false,\n 'blocking': true,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-def-blocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_undef_nonblocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': true,\n 'blocking': false,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-undef-nonblocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_hash_undef_blocking = new (require('@comunica/actor-rdf-join-optional-hash').ActorRdfJoinOptionalHash)({\n 'canHandleUndefs': true,\n 'blocking': true,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-hash-undef-blocking',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_nested_loop = new (require('@comunica/actor-rdf-join-optional-nestedloop').ActorRdfJoinOptionalNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_dereference_rdf_actors_parse = new (require('@comunica/actor-dereference-rdf-parse').ActorDereferenceRdfParse)({\n 'mediatorDereference': urn_comunica_default_dereference_mediators_main,\n 'mediatorParse': urn_comunica_default_rdf_parse_mediators_parse,\n 'mediatorParseMediatypes': urn_comunica_default_rdf_parse_mediators_mediaType,\n 'mediaMappings': {\"htm\":\"text/html\",\"html\":\"text/html\",\"json\":\"application/json\",\"jsonld\":\"application/ld+json\",\"n3\":\"text/n3\",\"nq\":\"application/n-quads\",\"nquads\":\"application/n-quads\",\"nt\":\"application/n-triples\",\"ntriples\":\"application/n-triples\",\"owl\":\"application/rdf+xml\",\"rdf\":\"application/rdf+xml\",\"rdfxml\":\"application/rdf+xml\",\"shaclc\":\"text/shaclc\",\"shaclce\":\"text/shaclc-ext\",\"shc\":\"text/shaclc\",\"shce\":\"text/shaclc-ext\",\"svg\":\"image/svg+xml\",\"svgz\":\"image/svg+xml\",\"trig\":\"application/trig\",\"ttl\":\"text/turtle\",\"turtle\":\"text/turtle\",\"xht\":\"application/xhtml+xml\",\"xhtml\":\"application/xhtml+xml\",\"xml\":\"application/xml\"},\n 'name': 'urn:comunica:default:dereference-rdf/actors#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__3_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_script = new (require('@comunica/actor-rdf-parse-html-script').ActorRdfParseHtmlScript)({\n 'mediatorRdfParseMediatypes': urn_comunica_default_rdf_parse_mediators_mediaType,\n 'mediatorRdfParseHandle': urn_comunica_default_rdf_parse_mediators_parse,\n 'name': 'urn:comunica:default:rdf-parse-html/actors#script',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__3_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_rdf = new (require('@comunica/actor-query-result-serialize-rdf').ActorQueryResultSerializeRdf)({\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'mediatorMediaTypeCombiner': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorMediaTypeFormatCombiner': urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat,\n 'name': 'urn:comunica:default:query-result-serialize/actors#rdf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_http_actors_wayback = new (require('@comunica/actor-http-wayback').ActorHttpWayback)({\n 'mediatorHttp': urn_comunica_default_http_mediators_no_fallback,\n 'name': 'urn:comunica:default:http/actors#wayback',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_fallback_bus\n});\nconst urn_comunica_default_rdf_parse_actors_jsonld = new (require('@comunica/actor-rdf-parse-jsonld').ActorRdfParseJsonLd)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediaTypePriorities': {\"application/json\":0.15,\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/json\":\"http://www.w3.org/ns/formats/JSON-LD\",\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-parse/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__3_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_patch_sparql_update = new (require('@comunica/actor-rdf-update-hypermedia-patch-sparql-update').ActorRdfUpdateHypermediaPatchSparqlUpdate)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#patch-sparql-update',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__3_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_put_ldp = new (require('@comunica/actor-rdf-update-hypermedia-put-ldp').ActorRdfUpdateHypermediaPutLdp)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediatorRdfSerializeMediatypes': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#put-ldp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__3_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_sparql = new (require('@comunica/actor-rdf-update-hypermedia-sparql').ActorRdfUpdateHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffixSparql': true,\n 'checkUrlSuffixUpdate': true,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__3_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_query_operation_actors_ask = new (require('@comunica/actor-query-operation-ask').ActorQueryOperationAsk)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#ask',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_bgp = new (require('@comunica/actor-query-operation-bgp-join').ActorQueryOperationBgpJoin)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_construct = new (require('@comunica/actor-query-operation-construct').ActorQueryOperationConstruct)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#construct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_distinct = new (require('@comunica/actor-query-operation-distinct-hash').ActorQueryOperationDistinctHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorHashQuads': urn_comunica_default_hash_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_from = new (require('@comunica/actor-query-operation-from-quad').ActorQueryOperationFromQuad)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#from',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_project = new (require('@comunica/actor-query-operation-project').ActorQueryOperationProject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#project',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_reduced = new (require('@comunica/actor-query-operation-reduced-hash').ActorQueryOperationReducedHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'cacheSize': 100,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#reduced',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_slice = new (require('@comunica/actor-query-operation-slice').ActorQueryOperationSlice)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#slice',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_union = new (require('@comunica/actor-query-operation-union').ActorQueryOperationUnion)({\n 'mediatorRdfMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#union',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_alt = new (require('@comunica/actor-query-operation-path-alt').ActorQueryOperationPathAlt)({\n 'mediatorRdfMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-alt',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_inv = new (require('@comunica/actor-query-operation-path-inv').ActorQueryOperationPathInv)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-inv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_link = new (require('@comunica/actor-query-operation-path-link').ActorQueryOperationPathLink)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-link',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_nps = new (require('@comunica/actor-query-operation-path-nps').ActorQueryOperationPathNps)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-nps',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_clear = new (require('@comunica/actor-query-operation-update-clear').ActorQueryOperationClear)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-clear',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_composite = new (require('@comunica/actor-query-operation-update-compositeupdate').ActorQueryOperationUpdateCompositeUpdate)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-composite',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_create = new (require('@comunica/actor-query-operation-update-create').ActorQueryOperationCreate)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-create',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_drop = new (require('@comunica/actor-query-operation-update-drop').ActorQueryOperationDrop)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-drop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_load = new (require('@comunica/actor-query-operation-update-load').ActorQueryOperationLoad)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-load',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_join = new (require('@comunica/actor-query-operation-join').ActorQueryOperationJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_minus = new (require('@comunica/actor-query-operation-minus').ActorQueryOperationMinus)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#minus',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_seq = new (require('@comunica/actor-query-operation-path-seq').ActorQueryOperationPathSeq)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-seq',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest = new (require('@comunica/actor-rdf-join-inner-multi-smallest').ActorRdfJoinMultiSmallest)({\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_filter_pushdown = new (require('@comunica/actor-optimize-query-operation-filter-pushdown').ActorOptimizeQueryOperationFilterPushdown)({\n 'aggressivePushdown': false,\n 'maxIterations': 10,\n 'splitConjunctive': true,\n 'mergeConjunctive': true,\n 'pushIntoLeftJoins': true,\n 'pushEqualityIntoPatterns': true,\n 'name': 'urn:comunica:default:optimize-query-operation/actors#filter-pushdown',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_group_sources\n]\n});\nconst urn_comunica_default_dereference_actors_http = new (require('@comunica/actor-dereference-http').ActorDereferenceHttp)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'maxAcceptHeaderLength': 1024,\n 'maxAcceptHeaderLengthBrowser': 128,\n 'name': 'urn:comunica:default:dereference/actors#http',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__3_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus,\n 'beforeActors': [\n urn_comunica_default_dereference_actors_fallback\n]\n});\nconst urn_comunica_default_http_actors_proxy = new (require('@comunica/actor-http-proxy').ActorHttpProxy)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'name': 'urn:comunica:default:http/actors#proxy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus,\n 'beforeActors': [\n urn_comunica_default_http_actors_fetch\n]\n});\nconst urn_comunica_default_context_preprocess_actors_query_source_identify = new (require('@comunica/actor-context-preprocess-query-source-identify').ActorContextPreprocessQuerySourceIdentify)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_context_preprocess_query_source_identify__3_0_0_components_ActorContextPreprocessQuerySourceIdentify_jsonld_IActorContextPreprocessQuerySourceIdentifyArgs_default_invalidator,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'name': 'urn:comunica:default:context-preprocess/actors#query-source-identify',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__3_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus,\n 'beforeActors': [\n urn_comunica_default_context_preprocess_actors_query_source_skolemize\n]\n});\nconst urn_comunica_default_init_actors_query = new (require('@comunica/actor-init-query').ActorInitQuery)({\n 'mediatorQueryProcess': urn_comunica_default_query_process_mediators_main,\n 'mediatorQueryResultSerialize': urn_comunica_default_query_result_serialize_mediators_serialize,\n 'mediatorQueryResultSerializeMediaTypeCombiner': urn_comunica_default_query_result_serialize_mediators_mediaType,\n 'mediatorQueryResultSerializeMediaTypeFormatCombiner': urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat,\n 'mediatorHttpInvalidate': urn_comunica_default_http_invalidate_mediators_main,\n 'defaultQueryInputFormat': 'sparql',\n 'allowNoSources': false,\n 'name': 'urn:comunica:default:init/actors#query',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_hypermedia = new (require('@comunica/actor-rdf-update-quads-hypermedia').ActorRdfUpdateQuadsHypermedia)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_update_quads_hypermedia__3_0_0_components_ActorRdfUpdateQuadsHypermedia_jsonld_IActorRdfUpdateQuadsHypermediaArgs_default_invalidator,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorRdfUpdateHypermedia': urn_comunica_default_rdf_update_hypermedia_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-quads/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__3_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActorQueryResultSerializeSparqlJson_jsonld_ActorQueryResultSerializeSparqlJson_default_observer = new (require('@comunica/actor-query-result-serialize-sparql-json').ActionObserverHttp)({\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator,\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-sparql-json/^3.0.0/components/ActorQueryResultSerializeSparqlJson.jsonld#ActorQueryResultSerializeSparqlJson_default_observer',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer = new (require('@comunica/actor-query-result-serialize-stats').ActionObserverHttp)({\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActionObserverHttp_jsonld_IActionObserverHttpArgs_default_invalidator,\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^3.0.0/components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats_default_observer',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__3_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_query_source_identify_hypermedia_actors_qpf = new (require('@comunica/actor-query-source-identify-hypermedia-qpf').ActorQuerySourceIdentifyHypermediaQpf)({\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'subjectUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#subject',\n 'predicateUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate',\n 'objectUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#object',\n 'graphUri': 'http://www.w3.org/ns/sparql-service-description#graph',\n 'name': 'urn:comunica:default:query-source-identify-hypermedia/actors#qpf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql = new (require('@comunica/actor-query-source-identify-hypermedia-sparql').ActorQuerySourceIdentifyHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'checkUrlSuffix': true,\n 'forceHttpGet': false,\n 'cacheSize': 1024,\n 'bindMethod': 'values',\n 'countTimeout': 3000,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus\n});\nconst urn_comunica_default_query_source_identify_hypermedia_actors_none = new (require('@comunica/actor-query-source-identify-hypermedia-none').ActorQuerySourceIdentifyHypermediaNone)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-source-identify-hypermedia/actors#none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify_hypermedia__3_0_0_components_ActorQuerySourceIdentifyHypermedia_jsonld_ActorQuerySourceIdentifyHypermedia_default_bus\n});\nconst urn_comunica_default_query_operation_actors_extend = new (require('@comunica/actor-query-operation-extend').ActorQueryOperationExtend)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#extend',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_filter = new (require('@comunica/actor-query-operation-filter').ActorQueryOperationFilter)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#filter',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_group = new (require('@comunica/actor-query-operation-group').ActorQueryOperationGroup)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#group',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_leftjoin = new (require('@comunica/actor-query-operation-leftjoin').ActorQueryOperationLeftJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#leftjoin',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_nop = new (require('@comunica/actor-query-operation-nop').ActorQueryOperationNop)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#nop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_orderby = new (require('@comunica/actor-query-operation-orderby').ActorQueryOperationOrderBy)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#orderby',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_service = new (require('@comunica/actor-query-operation-service').ActorQueryOperationService)({\n 'forceSparqlEndpoint': false,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_values = new (require('@comunica/actor-query-operation-values').ActorQueryOperationValues)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#values',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_one_or_more = new (require('@comunica/actor-query-operation-path-one-or-more').ActorQueryOperationPathOneOrMore)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-one-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_more = new (require('@comunica/actor-query-operation-path-zero-or-more').ActorQueryOperationPathZeroOrMore)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_one = new (require('@comunica/actor-query-operation-path-zero-or-one').ActorQueryOperationPathZeroOrOne)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-one',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_delete_insert = new (require('@comunica/actor-query-operation-update-deleteinsert').ActorQueryOperationUpdateDeleteInsert)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-delete-insert',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__3_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_process_actors_sequential = new (require('@comunica/actor-query-process-sequential').ActorQueryProcessSequential)({\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'mediatorQueryParse': urn_comunica_default_query_parse_mediators_main,\n 'mediatorOptimizeQueryOperation': urn_comunica_default_optimize_query_operation_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-process/actors#sequential',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_source_identify_actors_hypermedia = new (require('@comunica/actor-query-source-identify-hypermedia').ActorQuerySourceIdentifyHypermedia)({\n 'cacheSize': 100,\n 'maxIterators': 64,\n 'aggregateTraversalStore': true,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorMetadataAccumulate': urn_comunica_default_rdf_metadata_accumulate_mediators_main,\n 'mediatorQuerySourceIdentifyHypermedia': urn_comunica_default_query_source_identify_hypermedia_mediators_main,\n 'mediatorRdfResolveHypermediaLinks': urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main,\n 'mediatorRdfResolveHypermediaLinksQueue': urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-source-identify/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_none = new (require('@comunica/actor-rdf-join-inner-none').ActorRdfJoinNone)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_bind = new (require('@comunica/actor-rdf-join-optional-bind').ActorRdfJoinOptionalBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.000001,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind = new (require('@comunica/actor-rdf-join-inner-multi-bind').ActorRdfJoinMultiBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'minMaxCardinalityRatio': 60,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest_filter_bindings = new (require('@comunica/actor-rdf-join-inner-multi-smallest-filter-bindings').ActorRdfJoinMultiSmallestFilterBindings)({\n 'selectivityModifier': 0.0001,\n 'blockSize': 64,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest-filter-bindings',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_json = new (require('@comunica/actor-query-result-serialize-sparql-json').ActorQueryResultSerializeSparqlJson)({\n 'emitMetadata': true,\n 'httpObserver': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_sparql_json__3_0_0_components_ActorQueryResultSerializeSparqlJson_jsonld_ActorQueryResultSerializeSparqlJson_default_observer,\n 'mediaTypePriorities': {\"application/sparql-results+json\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+json\":\"http://www.w3.org/ns/formats/SPARQL_Results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_stats = new (require('@comunica/actor-query-result-serialize-stats').ActorQueryResultSerializeStats)({\n 'httpObserver': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__3_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer,\n 'mediaTypePriorities': {\"stats\":0.5},\n 'mediaTypeFormats': {\"stats\":\"https://comunica.linkeddatafragments.org/#results_stats\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#stats',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__3_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_process_actors_explain_parsed = new (require('@comunica/actor-query-process-explain-parsed').ActorQueryProcessExplainParsed)({\n 'queryProcessor': urn_comunica_default_query_process_actors_sequential,\n 'name': 'urn:comunica:default:query-process/actors#explain-parsed',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_process_actors_explain_logical = new (require('@comunica/actor-query-process-explain-logical').ActorQueryProcessExplainLogical)({\n 'queryProcessor': urn_comunica_default_query_process_actors_sequential,\n 'name': 'urn:comunica:default:query-process/actors#explain-logical',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_query_process_actors_explain_physical = new (require('@comunica/actor-query-process-explain-physical').ActorQueryProcessExplainPhysical)({\n 'queryProcessor': urn_comunica_default_query_process_actors_sequential,\n 'name': 'urn:comunica:default:query-process/actors#explain-physical',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_process__3_0_0_components_ActorQueryProcess_jsonld_ActorQueryProcess_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations = new (require('@comunica/actor-optimize-query-operation-prune-empty-source-operations').ActorOptimizeQueryOperationPruneEmptySourceOperations)({\n 'useAskIfSupported': false,\n 'name': 'urn:comunica:default:optimize-query-operation/actors#prune-empty-source-operations',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_filter_pushdown\n]\n});\nconst urn_comunica_default_query_source_identify_actors_rdfjs = new (require('@comunica/actor-query-source-identify-rdfjs').ActorQuerySourceIdentifyRdfJs)({\n 'mediatorMergeBindingsContext': urn_comunica_default_merge_bindings_context_mediators_main,\n 'name': 'urn:comunica:default:query-source-identify/actors#rdfjs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus,\n 'beforeActors': [\n urn_comunica_default_query_source_identify_actors_hypermedia\n]\n});\nconst urn_comunica_default_query_source_identify_actors_serialized = new (require('@comunica/actor-query-source-identify-serialized').ActorQuerySourceIdentifySerialized)({\n 'mediatorRdfParse': urn_comunica_default_rdf_parse_mediators_parse,\n 'mediatorQuerySourceIdentify': urn_comunica_default_query_source_identify_mediators_main,\n 'name': 'urn:comunica:default:query-source-identify/actors#serialized',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_source_identify__3_0_0_components_ActorQuerySourceIdentify_jsonld_ActorQuerySourceIdentify_default_bus,\n 'beforeActors': [\n urn_comunica_default_query_source_identify_actors_hypermedia\n]\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind_source = new (require('@comunica/actor-rdf-join-inner-multi-bind-source').ActorRdfJoinMultiBindSource)({\n 'selectivityModifier': 0.0001,\n 'blockSize': 16,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind-source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__3_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus,\n 'beforeActors': [\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_connected = new (require('@comunica/actor-optimize-query-operation-join-connected').ActorOptimizeQueryOperationJoinConnected)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-connected',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_bgp_to_join = new (require('@comunica/actor-optimize-query-operation-bgp-to-join').ActorOptimizeQueryOperationBgpToJoin)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#bgp-to-join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_join_connected\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_bgp = new (require('@comunica/actor-optimize-query-operation-join-bgp').ActorOptimizeQueryOperationJoinBgp)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive = new (require('@comunica/actor-optimize-query-operation-assign-sources-exhaustive').ActorOptimizeQueryOperationAssignSourcesExhaustive)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#assign-sources-exhaustive',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_join_bgp\n]\n});\nconst urn_comunica_default_optimize_query_operation_actors_describe_to_constructs_subject = new (require('@comunica/actor-optimize-query-operation-describe-to-constructs-subject').ActorOptimizeQueryOperationDescribeToConstructsSubject)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#describe-to-constructs-subject',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__3_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive\n]\n});\nconst urn_comunica_default_Runner = (https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__3_0_0_components_ActorInit_jsonld_ActorInit_default_bus, [\n urn_comunica_default_context_preprocess_actors_convert_shortcuts,\n urn_comunica_default_context_preprocess_actors_set_defaults,\n urn_comunica_default_context_preprocess_actors_source_to_destination,\n urn_comunica_default_context_preprocess_actors_query_source_identify,\n urn_comunica_default_context_preprocess_actors_query_source_skolemize,\n urn_comunica_default_hash_bindings_actors_sha1,\n urn_comunica_default_hash_quads_actors_sha1,\n urn_comunica_default_init_actors_query,\n urn_comunica_default_optimize_query_operation_actors_rewrite_copy,\n urn_comunica_default_optimize_query_operation_actors_rewrite_move,\n urn_comunica_default_optimize_query_operation_actors_rewrite_add,\n urn_comunica_default_optimize_query_operation_actors_describe_to_constructs_subject,\n urn_comunica_default_optimize_query_operation_actors_assign_sources_exhaustive,\n urn_comunica_default_optimize_query_operation_actors_join_bgp,\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join,\n urn_comunica_default_optimize_query_operation_actors_join_connected,\n urn_comunica_default_optimize_query_operation_actors_prune_empty_source_operations,\n urn_comunica_default_optimize_query_operation_actors_filter_pushdown,\n urn_comunica_default_optimize_query_operation_actors_group_sources,\n urn_comunica_default_optimize_query_operation_actors_construct_distinct,\n urn_comunica_default_query_parse_actors_sparql,\n urn_comunica_default_query_parse_actors_graphql,\n urn_comunica_default_query_result_serialize_actors_json,\n urn_comunica_default_query_result_serialize_actors_rdf,\n urn_comunica_default_query_result_serialize_actors_simple,\n urn_comunica_default_query_result_serialize_actors_csv,\n urn_comunica_default_query_result_serialize_actors_sparql_json,\n urn_comunica_default_query_result_serialize_actors_sparql_tsv,\n urn_comunica_default_query_result_serialize_actors_sparql_xml,\n urn_comunica_default_query_result_serialize_actors_stats,\n urn_comunica_default_query_result_serialize_actors_table,\n urn_comunica_default_query_result_serialize_actors_tree,\n urn_comunica_default_query_source_identify_hypermedia_actors_qpf,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql,\n urn_comunica_default_query_source_identify_hypermedia_actors_none,\n urn_comunica_default_dereference_actors_http,\n urn_comunica_default_dereference_actors_fallback,\n urn_comunica_default_dereference_rdf_actors_parse,\n urn_comunica_default_rdf_join_entries_sort_actors_cardinality,\n urn_comunica_default_rdf_join_selectivity_actors_variable_counting,\n urn_comunica_default_rdf_metadata_actors_primary_topic,\n urn_comunica_default_rdf_metadata_actors_all,\n urn_comunica_default_rdf_metadata_accumulate_actors_cancontainundefs,\n urn_comunica_default_rdf_metadata_accumulate_actors_cardinality,\n urn_comunica_default_rdf_metadata_accumulate_actors_pagesize,\n urn_comunica_default_rdf_metadata_accumulate_actors_requesttime,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_controls,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_count,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_pagesize,\n urn_comunica_default_rdf_metadata_extract_actors_request_time,\n urn_comunica_default_rdf_metadata_extract_actors_allow_http_methods,\n urn_comunica_default_rdf_metadata_extract_actors_put_accepted,\n urn_comunica_default_rdf_metadata_extract_actors_patch_sparql_update,\n urn_comunica_default_rdf_metadata_extract_actors_sparql_service,\n urn_comunica_default_rdf_parse_actors_n3,\n urn_comunica_default_rdf_parse_actors_jsonld,\n urn_comunica_default_rdf_parse_actors_rdfxml,\n urn_comunica_default_rdf_parse_actors_xmlrdfa,\n urn_comunica_default_rdf_parse_actors_html,\n urn_comunica_default_rdf_parse_actors_shaclc,\n urn_comunica_default_rdf_parse_html_actors_microdata,\n urn_comunica_default_rdf_parse_html_actors_rdfa,\n urn_comunica_default_rdf_parse_html_actors_script,\n urn_comunica_default_rdf_resolve_hypermedia_links_actors_next,\n urn_comunica_default_rdf_resolve_hypermedia_links_queue_actors_fifo,\n urn_comunica_default_rdf_serialize_actors_n3,\n urn_comunica_default_rdf_serialize_actors_jsonld,\n urn_comunica_default_rdf_serialize_actors_shaclc,\n urn_comunica_default_rdf_update_hypermedia_actors_patch_sparql_update,\n urn_comunica_default_rdf_update_hypermedia_actors_put_ldp,\n urn_comunica_default_rdf_update_hypermedia_actors_sparql,\n urn_comunica_default_rdf_update_quads_actors_hypermedia,\n urn_comunica_default_rdf_update_quads_actors_rdfjs_store,\n urn_comunica_default_http_actors_proxy,\n urn_comunica_default_http_actors_fetch,\n urn_comunica_default_http_actors_wayback,\n urn_comunica_default_query_operation_actors_ask,\n urn_comunica_default_query_operation_actors_bgp,\n urn_comunica_default_query_operation_actors_construct,\n urn_comunica_default_query_operation_actors_distinct,\n urn_comunica_default_query_operation_actors_extend,\n urn_comunica_default_query_operation_actors_filter,\n urn_comunica_default_query_operation_actors_from,\n urn_comunica_default_query_operation_actors_group,\n urn_comunica_default_query_operation_actors_join,\n urn_comunica_default_query_operation_actors_leftjoin,\n urn_comunica_default_query_operation_actors_minus,\n urn_comunica_default_query_operation_actors_nop,\n urn_comunica_default_query_operation_actors_orderby,\n urn_comunica_default_query_operation_actors_project,\n urn_comunica_default_query_operation_actors_reduced,\n urn_comunica_default_query_operation_actors_service,\n urn_comunica_default_query_operation_actors_slice,\n urn_comunica_default_query_operation_actors_source,\n urn_comunica_default_query_operation_actors_union,\n urn_comunica_default_query_operation_actors_values,\n urn_comunica_default_query_operation_actors_path_alt,\n urn_comunica_default_query_operation_actors_path_inv,\n urn_comunica_default_query_operation_actors_path_link,\n urn_comunica_default_query_operation_actors_path_nps,\n urn_comunica_default_query_operation_actors_path_one_or_more,\n urn_comunica_default_query_operation_actors_path_seq,\n urn_comunica_default_query_operation_actors_path_zero_or_more,\n urn_comunica_default_query_operation_actors_path_zero_or_one,\n urn_comunica_default_query_operation_actors_update_clear,\n urn_comunica_default_query_operation_actors_update_composite,\n urn_comunica_default_query_operation_actors_update_create,\n urn_comunica_default_query_operation_actors_update_delete_insert,\n urn_comunica_default_query_operation_actors_update_drop,\n urn_comunica_default_query_operation_actors_update_load,\n urn_comunica_default_query_process_actors_sequential,\n urn_comunica_default_query_process_actors_explain_parsed,\n urn_comunica_default_query_process_actors_explain_logical,\n urn_comunica_default_query_process_actors_explain_physical,\n urn_comunica_default_query_source_identify_actors_hypermedia,\n urn_comunica_default_query_source_identify_actors_rdfjs,\n urn_comunica_default_query_source_identify_actors_serialized,\n urn_comunica_default_rdf_join_actors_inner_none,\n urn_comunica_default_rdf_join_actors_inner_single,\n urn_comunica_default_rdf_join_actors_inner_multi_empty,\n urn_comunica_default_rdf_join_actors_inner_multi_bind_source,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest_filter_bindings,\n urn_comunica_default_rdf_join_actors_minus_hash,\n urn_comunica_default_rdf_join_actors_minus_hash_undef,\n urn_comunica_default_rdf_join_actors_optional_bind,\n urn_comunica_default_rdf_join_actors_optional_hash_def_nonblocking,\n urn_comunica_default_rdf_join_actors_optional_hash_def_blocking,\n urn_comunica_default_rdf_join_actors_optional_hash_undef_nonblocking,\n urn_comunica_default_rdf_join_actors_optional_hash_undef_blocking,\n urn_comunica_default_rdf_join_actors_optional_nested_loop\n]);\nreturn urn_comunica_default_init_actors_query;\n}\n\n","import { QueryEngineBase } from '@comunica/actor-init-query';\nimport type { ActorInitQueryBase } from '@comunica/actor-init-query';\nimport type { IQueryContextCommon } from '@comunica/types';\n\n// eslint-disable-next-line ts/no-require-imports,ts/no-var-requires,import/extensions\nconst engineDefault = require('../engine-default.js');\n\n/**\n * A Comunica SPARQL query engine.\n */\nexport class QueryEngine\n extends QueryEngineBase {\n public constructor(engine: ActorInitQueryBase = engineDefault()) {\n super(engine);\n }\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nexport * from './QueryEngine';\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * An abstract actor that handles media-typed actions.\n *\n * It splits up a action between a 'handle' and a 'mediaTypes' action.\n * A 'mediaTypes' action is used to retrieve the available media types from this actor.\n * A 'handle' action is abstract, and can be implemented to do anything,\n * such as parsing, serializing, etc.\n * @see IActionAbstractMediaTyped\n *\n * @see ActorAbstractMediaTypedFixed\n */\nexport abstract class ActorAbstractMediaTyped\n extends Actor, IActorTestAbstractMediaTyped, IActorOutputAbstractMediaTyped> {\n public constructor(args: IActorArgsMediaTyped) {\n super(args);\n }\n\n public async run(action: IActionAbstractMediaTyped): Promise> {\n if ('handle' in action) {\n const typedAction: IActionAbstractMediaTypedHandle = action;\n return { handle: await this.runHandle(typedAction.handle, typedAction.handleMediaType, action.context) };\n }\n if ('mediaTypes' in action) {\n return { mediaTypes: await this.getMediaTypes(action.context) };\n }\n if ('mediaTypeFormats' in action) {\n return { mediaTypeFormats: await this.getMediaTypeFormats(action.context) };\n }\n throw new Error('Either a handle, mediaTypes or mediaTypeFormats action needs to be provided');\n }\n\n public async test(action: IActionAbstractMediaTyped): Promise> {\n if ('handle' in action) {\n const typedAction: IActionAbstractMediaTypedHandle = action;\n return { handle: await this.testHandle(typedAction.handle, typedAction.handleMediaType, action.context) };\n }\n if ('mediaTypes' in action) {\n return { mediaTypes: await this.testMediaType(action.context) };\n }\n if ('mediaTypeFormats' in action) {\n return { mediaTypeFormats: await this.testMediaTypeFormats(action.context) };\n }\n throw new Error('Either a handle, mediaTypes or mediaTypeFormats action needs to be provided');\n }\n\n /**\n * Check if this actor can run the given handle action,\n * without actually running it.\n *\n * @param {HI} action The handle action to test.\n * @param {string} mediaType The media type to test.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the handle test result.\n */\n public abstract testHandle(action: HI, mediaType: string | undefined, context: IActionContext): Promise;\n\n /**\n * Run the given handle action on this actor.\n *\n * @param {HI} action The handle action to run.\n * @param {string} mediaType The media type to run with.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the handle run result.\n */\n public abstract runHandle(action: HI, mediaType: string | undefined, context: IActionContext): Promise;\n\n /**\n * Check if this actor can emit its media types.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the media type run result.\n */\n public abstract testMediaType(context: IActionContext): Promise;\n\n /**\n * Get the media type of this given actor.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise<{[id: string]: number}>} A promise that resolves to the media types.\n */\n public abstract getMediaTypes(context: IActionContext): Promise>;\n\n /**\n * Check if this actor can emit its media type formats.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise} A promise that resolves to the media type run result.\n */\n public abstract testMediaTypeFormats(context: IActionContext): Promise;\n\n /**\n * Get the media type formats of this given actor.\n *\n * @param {ActionContext} context An optional context.\n * @return {Promise<{[id: string]: string}>} A promise that resolves to the media types.\n */\n public abstract getMediaTypeFormats(context: IActionContext): Promise>;\n}\n\nexport interface IActorArgsMediaTyped extends IActorArgs<\n IActionAbstractMediaTyped,\nIActorTestAbstractMediaTyped,\nIActorOutputAbstractMediaTyped\n> {}\n\nexport type IActionAbstractMediaTyped = IActionAbstractMediaTypedHandle | IActionAbstractMediaTypedMediaTypes\n| IActionAbstractMediaTypedMediaTypeFormats;\nexport interface IActionAbstractMediaTypedHandle extends IAction {\n /**\n * The handle action input.\n */\n handle: HI;\n /**\n * The handle media type that should be used when 'handle' is truthy.\n */\n handleMediaType?: string;\n}\n\nexport interface IActionAbstractMediaTypedMediaTypes extends IAction {\n /**\n * True if media types should be retrieved.\n */\n mediaTypes: boolean;\n}\n\nexport interface IActionAbstractMediaTypedMediaTypeFormats extends IAction {\n /**\n * True if media type formats should be retrieved.\n */\n mediaTypeFormats: boolean;\n}\n\n/**\n * Either 'handle', or 'mediaTypes' or 'mediaTypeFormats' must be truthy.\n * Groups may not be truthy at the same time.\n */\nexport type IActorTestAbstractMediaTyped = IActorTestAbstractMediaTypedHandle\n| IActorTestAbstractMediaTypedMediaTypes | IActorTestAbstractMediaTypedMediaTypeFormats;\nexport interface IActorTestAbstractMediaTypedHandle extends IActorTest {\n /**\n * The handle test output.\n */\n handle: HT;\n}\nexport interface IActorTestAbstractMediaTypedMediaTypes extends IActorTest {\n /**\n * True if media types can be retrieved.\n */\n mediaTypes: boolean;\n}\nexport interface IActorTestAbstractMediaTypedMediaTypeFormats extends IActorTest {\n /**\n * True if media type formats can be retrieved.\n */\n mediaTypeFormats?: boolean;\n}\n\n/**\n * Either 'handle', or 'mediaTypes' or 'mediaTypeFormats' must be truthy.\n * Groups may not be truthy at the same time.\n */\nexport type IActorOutputAbstractMediaTyped = IActorOutputAbstractMediaTypedHandle\n| IActorOutputAbstractMediaTypedMediaTypes | IActorOutputAbstractMediaTypedMediaTypeFormats;\nexport interface IActorOutputAbstractMediaTypedHandle extends IActorOutput {\n /**\n * The handle action output.\n */\n handle: HO;\n}\nexport interface IActorOutputAbstractMediaTypedMediaTypes extends IActorOutput {\n /**\n * An object containing media types as keys,\n * and preferences as values, with values ranging from 0 to 1.\n */\n mediaTypes: Record;\n}\nexport interface IActorOutputAbstractMediaTypedMediaTypeFormats extends IActorOutput {\n /**\n * An object containing media types as keys,\n * and format IRIs as values.\n */\n mediaTypeFormats: Record;\n}\n\nexport type MediateMediaTypes = Mediate<\nIActionAbstractMediaTypedMediaTypes,\nIActorOutputAbstractMediaTypedMediaTypes,\nIActorTestAbstractMediaTypedMediaTypes\n>;\n\nexport type MediateMediaTyped = Mediate<\nIActionAbstractMediaTypedHandle,\nIActorOutputAbstractMediaTypedHandle,\nIActorTestAbstractMediaTypedHandle\n>;\n","import type { IActionContext } from '@comunica/types';\nimport type { IActorArgsMediaTyped } from './ActorAbstractMediaTyped';\nimport { ActorAbstractMediaTyped } from './ActorAbstractMediaTyped';\n\nexport abstract class ActorAbstractMediaTypedFixed extends ActorAbstractMediaTyped {\n public readonly mediaTypePriorities: Record;\n public readonly mediaTypeFormats: Record;\n public readonly priorityScale: number;\n\n public constructor(args: IActorArgsMediaTypedFixed) {\n super(args);\n const scale: number = this.priorityScale || this.priorityScale === 0 ? this.priorityScale : 1;\n if (this.mediaTypePriorities) {\n for (const [ _index, [ key, value ]] of Object.entries(this.mediaTypePriorities).entries()) {\n this.mediaTypePriorities[key] = scale * value;\n }\n }\n this.mediaTypePriorities = Object.freeze(this.mediaTypePriorities);\n this.mediaTypeFormats = Object.freeze(this.mediaTypeFormats);\n }\n\n public async testHandle(action: HI, mediaType: string | undefined, context: IActionContext): Promise {\n if (!mediaType || !(mediaType in this.mediaTypePriorities)) {\n throw new Error(`Unrecognized media type: ${mediaType}`);\n }\n return await this.testHandleChecked(action, context);\n }\n\n /**\n * Check to see if this actor can handle the given action.\n * The media type has already been checked before this is called.\n *\n * @param {ActionContext} context An optional context.\n * @param {HI} action The action to test.\n */\n public abstract testHandleChecked(action: HI, context: IActionContext): Promise;\n\n public async testMediaType(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypes(_context: IActionContext): Promise> {\n return this.mediaTypePriorities;\n }\n\n public async testMediaTypeFormats(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypeFormats(_context: IActionContext): Promise> {\n return this.mediaTypeFormats;\n }\n}\n\nexport interface IActorArgsMediaTypedFixed extends IActorArgsMediaTyped {\n /**\n * A record of media types, with media type name as key, and its priority as value.\n * Priorities are numbers between [0, 1].\n * @range {json}\n */\n mediaTypePriorities: Record;\n /**\n * A record of media types, with media type name as key, and its format IRI as value.\n * @range {json}\n */\n mediaTypeFormats: Record;\n /**\n * A multiplier for media type priorities.\n * This can be used for keeping the original media types in place,\n * but scaling all of their scores with a certain value.\n * @range {double}\n */\n priorityScale?: number;\n}\n","export * from './ActorAbstractMediaTyped';\nexport * from './ActorAbstractMediaTypedFixed';\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResultBindings,\n Bindings,\n IActionContext,\n MetadataBindings,\n IQuerySourceWrapper,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport {\n BufferedIterator,\n MultiTransformIterator,\n TransformIterator,\n EmptyIterator,\n} from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\nimport { PathVariableObjectIterator } from './PathVariableObjectIterator';\n\nconst DF = new DataFactory();\n\n/**\n * An abstract actor that handles Path operations.\n *\n * Provides multiple helper functions used by the Path operation actors.\n */\nexport abstract class ActorAbstractPath extends ActorQueryOperationTypedMediated {\n protected static readonly FACTORY: Factory = new Factory();\n\n protected readonly predicateType: string;\n\n protected constructor(args: IActorQueryOperationTypedMediatedArgs, predicateType: string) {\n super(args, 'path');\n this.predicateType = predicateType;\n }\n\n public async testOperation(operation: Algebra.Path, _context: IActionContext): Promise {\n if (operation.predicate.type !== this.predicateType) {\n throw new Error(`This Actor only supports ${this.predicateType} Path operations.`);\n }\n\n return true;\n }\n\n // Generates a variable that does not yet occur in the path\n public generateVariable(path?: Algebra.Path, name?: string): RDF.Variable {\n if (!name) {\n return this.generateVariable(path, 'b');\n }\n\n // Path predicates can't contain variables\n if (path && (path.subject.value === name || path.object.value === name)) {\n return this.generateVariable(path, `${name}b`);\n }\n\n return DF.variable(name);\n }\n\n // Such connectivity matching does not introduce duplicates (it does not incorporate any count of the number\n // of ways the connection can be made) even if the repeated path itself would otherwise result in duplicates.\n // https://www.w3.org/TR/sparql11-query/#propertypaths\n public async isPathArbitraryLengthDistinct(context: IActionContext, path: Algebra.Path):\n Promise<{ context: IActionContext; operation: IQueryOperationResultBindings | undefined }> {\n if (!context.get(KeysQueryOperation.isPathArbitraryLengthDistinctKey)) {\n context = context.set(KeysQueryOperation.isPathArbitraryLengthDistinctKey, true);\n return { context, operation: ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n operation: ActorAbstractPath.FACTORY.createDistinct(path),\n context,\n })) };\n }\n\n context = context.set(KeysQueryOperation.isPathArbitraryLengthDistinctKey, false);\n return { context, operation: undefined };\n }\n\n private async predicateStarGraphVariable(\n subject: RDF.Term,\n object: RDF.Variable,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Variable,\n context: IActionContext,\n bindingsFactory: BindingsFactory,\n ): Promise {\n const sources = this.getPathSources(predicate);\n // TODO: refactor this with an iterator just like PathVariableObjectIterator so we handle backpressure correctly\n // Construct path to obtain all graphs where subject exists\n const predVar = this.generateVariable(ActorAbstractPath.FACTORY\n .createPath(subject, predicate, object, graph));\n const findGraphs = ActorAbstractPath.FACTORY.createUnion([\n this.assignPatternSources(ActorAbstractPath.FACTORY.createPattern(subject, predVar, object, graph), sources),\n this.assignPatternSources(ActorAbstractPath.FACTORY.createPattern(object, predVar, subject, graph), sources),\n ]);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: findGraphs }),\n );\n\n const passedGraphs: Set = new Set();\n\n const bindingsStream = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n // Extract the graph and start a predicate* search starting from subject in each graph\n const graphValue: RDF.Term = bindings.get(graph)!;\n if (passedGraphs.has(graphValue.value)) {\n return new EmptyIterator();\n }\n passedGraphs.add(graphValue.value);\n return new TransformIterator(\n async() => {\n const it = new BufferedIterator();\n await this.getObjectsPredicateStar(subject, predicate, graphValue, context, {}, it, { count: 0 });\n return it.transform({\n transform(item, next, push) {\n push(bindingsFactory.bindings([\n [ object, item ],\n [ graph, graphValue ],\n ]));\n next();\n },\n });\n },\n { maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n\n return {\n bindingsStream,\n metadata: results.metadata,\n };\n }\n\n /**\n * Returns an iterator with Bindings of the query subject predicate* ?o or subject predicate+ ?o\n * If graph is a variable, it will also be in those bindings\n * @param {Term} subject Term of where we start the predicate* search.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Variable} object Variable of the zeroOrMore-query.\n * @param {Term} graph The graph in which we search for the pattern. (Possibly a variable)\n * @param {ActionContext} context The context to pass to sub-opertations\n * @param emitFirstSubject If the path operation is predicate*, otherwise it is predicate+.\n * @return {Promise} Iterator to where all bindings of query should have been pushed.\n */\n public async getObjectsPredicateStarEval(\n subject: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n object: RDF.Variable,\n graph: RDF.Term,\n context: IActionContext,\n emitFirstSubject: boolean,\n bindingsFactory: BindingsFactory,\n ): Promise {\n if (graph.termType === 'Variable') {\n return this.predicateStarGraphVariable(subject, object, predicate, graph, context, bindingsFactory);\n }\n\n const it = new PathVariableObjectIterator(\n subject,\n predicate,\n graph,\n context,\n this.mediatorQueryOperation,\n emitFirstSubject,\n );\n\n const bindingsStream = it.transform({\n autoStart: false,\n transform(item, next, push) {\n push(bindingsFactory.bindings([[ object, item ]]));\n next();\n },\n });\n\n return {\n bindingsStream,\n async metadata() {\n const metadata: MetadataBindings = await new Promise((resolve) => {\n it.getProperty('metadata', (metadataInner: any) => resolve(metadataInner()));\n });\n // Increment cardinality by one, because we always have at least one result once we reach this stage.\n // See the transformation above where we push a single binding.\n metadata.cardinality.value++;\n return metadata;\n },\n };\n }\n\n /**\n * Pushes all terms to iterator `it` that are a solution of object predicate* ?o.\n * @param {Term} object Term of where we start the predicate* search.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {Record} termHashes Remembers the objects we've already searched for.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} The results metadata.\n */\n public async getObjectsPredicateStar(\n object: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Term,\n context: IActionContext,\n termHashes: Record,\n it: BufferedIterator,\n counter: any,\n ): Promise {\n const termString = termToString(object);\n if (termHashes[termString]) {\n return;\n }\n\n ( it)._push(object);\n termHashes[termString] = object;\n counter.count++;\n\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(object, predicate, thisVariable, graph);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: path, context }),\n );\n // TODO: fixme\n // eslint-disable-next-line ts/no-misused-promises\n results.bindingsStream.on('data', async(bindings: Bindings) => {\n const result = bindings.get(thisVariable);\n await this.getObjectsPredicateStar(result!, predicate, graph, context, termHashes, it, counter);\n });\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n });\n\n return results.metadata;\n }\n\n /**\n * Pushes all terms to iterator `it` that are a solution of ?s predicate* ?o.\n * @param {string} subjectVar String representation of subjectVariable\n * @param {string} objectVar String representation of objectVariable\n * @param {Term} subjectVal Term of where we start the predicate* search.\n * @param {Term} objectVal Found solution for an object, start for the new step.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {{[id: string]: Promise}} termHashesGlobal\n * Remembers solutions for when objectVal is already been calculated, can be reused when same objectVal occurs\n * @param {{[id: string]: Term}} termHashesCurrentSubject\n * Remembers the pairs we've already searched for, can stop searching if so.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} All solutions of query should have been pushed to it by then.\n */\n // Let the iterator `it` emit all bindings of size 2, with subjectStringVariable as value subjectVal\n // and objectStringVariable as value all nodes reachable through predicate* beginning at objectVal\n public async getSubjectAndObjectBindingsPredicateStar(\n subjectVar: RDF.Variable,\n objectVar: RDF.Variable,\n subjectVal: RDF.Term,\n objectVal: RDF.Term,\n predicate: Algebra.PropertyPathSymbol,\n graph: RDF.Term,\n context: IActionContext,\n termHashesGlobal: Record>,\n termHashesCurrentSubject: Record,\n it: BufferedIterator,\n counter: any,\n bindingsFactory: BindingsFactory,\n ): Promise {\n const termString = termToString(objectVal) + termToString(graph);\n\n // If this combination of subject and object already done, return nothing\n if (termHashesCurrentSubject[termString]) {\n return;\n }\n\n counter.count++;\n termHashesCurrentSubject[termString] = true;\n ( it)._push(bindingsFactory.bindings([\n [ subjectVar, subjectVal ],\n [ objectVar, objectVal ],\n ]));\n\n // If every reachable node from object has already been calculated, use these for current subject too\n if (termString in termHashesGlobal) {\n const objects = await termHashesGlobal[termString];\n for (const object of objects) {\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subjectVal,\n object,\n predicate,\n graph,\n context,\n termHashesGlobal,\n termHashesCurrentSubject,\n it,\n counter,\n bindingsFactory,\n );\n }\n if (--counter.count === 0) {\n it.close();\n }\n\n return;\n }\n\n // Construct promise to calculate all reachable nodes from this object\n // TODO: fixme\n // eslint-disable-next-line no-async-promise-executor,ts/no-misused-promises\n const promise = new Promise(async(resolve, reject) => {\n const objectsArray: RDF.Term[] = [];\n\n // Construct path that leads us one step through predicate\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(objectVal, predicate, thisVariable, graph);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: path, context }),\n );\n\n // Recursive call on all neighbours\n // TODO: fixme\n // eslint-disable-next-line ts/no-misused-promises\n results.bindingsStream.on('data', async(bindings: RDF.Bindings) => {\n const result: RDF.Term = bindings.get(thisVariable)!;\n objectsArray.push(result);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subjectVal,\n result,\n predicate,\n graph,\n context,\n termHashesGlobal,\n termHashesCurrentSubject,\n it,\n counter,\n bindingsFactory,\n );\n });\n results.bindingsStream.on('error', reject);\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n resolve(objectsArray);\n });\n });\n\n // Set it in the termHashesGlobal when this object occurs again they can wait for this promise\n termHashesGlobal[termString] = promise;\n }\n\n /**\n * Find all sources recursively contained in the given path operation.\n * @param operation\n */\n public getPathSources(operation: Algebra.PropertyPathSymbol): IQuerySourceWrapper[] {\n switch (operation.type) {\n case Algebra.types.ALT:\n case Algebra.types.SEQ:\n return operation.input\n .flatMap((subOp: Algebra.PropertyPathSymbol) => this.getPathSources(subOp));\n case Algebra.types.INV:\n case Algebra.types.ONE_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_ONE_PATH:\n return this.getPathSources(operation.path);\n case Algebra.types.LINK:\n case Algebra.types.NPS: {\n const source = ActorQueryOperation.getOperationSource(operation);\n if (!source) {\n throw new Error(`Could not find a required source on a link path operation`);\n }\n return [ source ];\n }\n }\n }\n\n public assignPatternSources(pattern: Algebra.Pattern, sources: IQuerySourceWrapper[]): Algebra.Operation {\n if (sources.length === 0) {\n throw new Error(`Attempted to assign zero sources to a pattern during property path handling`);\n }\n if (sources.length === 1) {\n return ActorQueryOperation.assignOperationSource(pattern, sources[0]);\n }\n return ActorAbstractPath.FACTORY.createUnion(sources\n .map(source => ActorQueryOperation.assignOperationSource(pattern, source)), true);\n }\n}\n\nexport interface IPathResultStream {\n bindingsStream: AsyncIterator;\n metadata: () => Promise;\n}\n","import type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { BufferedIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\nconst FACTORY = new Factory();\n\n/**\n * An iterator that implements the multi-length property path operation (* and +)\n * for a fixed subject and predicate, and a variable object.\n */\nexport class PathVariableObjectIterator extends BufferedIterator {\n private readonly termHashes: Map = new Map();\n private readonly runningOperations: AsyncIterator[] = [];\n private readonly pendingOperations: { variable: RDF.Variable; operation: Algebra.Path }[] = [];\n\n public constructor(\n private readonly subject: RDF.Term,\n private readonly predicate: Algebra.PropertyPathSymbol,\n private readonly graph: RDF.Term,\n private readonly context: IActionContext,\n private readonly mediatorQueryOperation: MediatorQueryOperation,\n emitFirstSubject: boolean,\n private readonly maxRunningOperations = 16,\n ) {\n // The autoStart flag must be true to kickstart metadata collection\n super({ autoStart: true });\n\n // Push the subject as starting point\n this._push(this.subject, emitFirstSubject);\n }\n\n protected override _end(destroy?: boolean): void {\n // Close all running iterators\n for (const it of this.runningOperations) {\n it.destroy();\n }\n\n super._end(destroy);\n }\n\n protected override _push(item: RDF.Term, pushAsResult = true): void {\n let termString;\n if (pushAsResult) {\n // Don't push if this subject was already found\n termString = termToString(item);\n if (this.termHashes.has(termString)) {\n return;\n }\n }\n\n // Add a pending path operation for this item\n const variable = DF.variable('b');\n this.pendingOperations.push({\n variable,\n operation: FACTORY.createPath(item, this.predicate, variable, this.graph),\n });\n\n // Otherwise, push the subject\n if (termString) {\n this.termHashes.set(termString, item);\n super._push(item);\n }\n }\n\n protected override _read(count: number, done: () => void): void {\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n (async function() {\n // Open as many operations as possible\n while (self.runningOperations.length < self.maxRunningOperations) {\n if (self.pendingOperations.length === 0) {\n break;\n }\n\n const pendingOperation = self.pendingOperations.pop()!;\n const results = ActorQueryOperation.getSafeBindings(\n await self.mediatorQueryOperation.mediate({ operation: pendingOperation.operation, context: self.context }),\n );\n const runningOperation = results.bindingsStream.transform({\n autoStart: false,\n transform(bindings, next, push) {\n const newTerm: RDF.Term = bindings.get(pendingOperation.variable)!;\n push(newTerm);\n next();\n },\n });\n if (!runningOperation.done) {\n self.runningOperations.push(runningOperation);\n runningOperation.on('error', error => self.destroy(error));\n runningOperation.on('readable', () => {\n self.readable = true;\n self._fillBufferAsync();\n });\n runningOperation.on('end', () => {\n self.runningOperations.splice(self.runningOperations.indexOf(runningOperation), 1);\n self.readable = true;\n self._fillBufferAsync();\n });\n }\n\n self.setProperty('metadata', results.metadata);\n }\n\n // Try to read `count` items (based on UnionIterator)\n let lastCount = 0;\n let item: RDF.Term | null;\n // eslint-disable-next-line no-cond-assign\n while (lastCount !== (lastCount = count)) {\n // Prioritize the operations that have been added first\n for (let i = 0; i < self.runningOperations.length && count > 0; i++) {\n // eslint-disable-next-line no-cond-assign\n if ((item = self.runningOperations[i].read()) !== null) {\n count--;\n self._push(item);\n }\n }\n }\n\n // Close if everything has been read\n if (self.runningOperations.length === 0 && self.pendingOperations.length === 0) {\n self.close();\n }\n })().then(() => {\n done();\n }, error => this.destroy(error));\n }\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport type { IActionContext } from '@comunica/types';\n\n/**\n * A comunica Convert Shortcuts Context Preprocess Actor.\n */\nexport class ActorContextPreprocessConvertShortcuts extends ActorContextPreprocess {\n public readonly contextKeyShortcuts: Record;\n\n public constructor(args: IActorContextPreprocessConvertShortcutsArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n return {\n context: ActorContextPreprocessConvertShortcuts.expandShortcuts(action.context, this.contextKeyShortcuts),\n };\n }\n\n public static expandShortcuts(context: IActionContext, contextKeyShortcuts: Record): IActionContext {\n for (const key of context.keys()) {\n if (contextKeyShortcuts[key.name]) {\n context = context\n .set(new ActionContextKey(contextKeyShortcuts[key.name]), context.get(key))\n .delete(key);\n }\n }\n return context;\n }\n}\n\nexport interface IActorContextPreprocessConvertShortcutsArgs extends IActorContextPreprocessArgs {\n /**\n * A record of context shortcuts to full context keys (as defined in @comunica/context-entries).\n * @range {json}\n * @default {{\n * \"sources\": \"@comunica/actor-init-query:querySourcesUnidentified\",\n * \"destination\": \"@comunica/bus-rdf-update-quads:destination\",\n * \"initialBindings\": \"@comunica/actor-init-query:initialBindings\",\n * \"queryFormat\": \"@comunica/actor-init-query:queryFormat\",\n * \"baseIRI\": \"@comunica/actor-init-query:baseIRI\",\n * \"log\": \"@comunica/core:log\",\n * \"datetime\": \"@comunica/actor-http-memento:datetime\",\n * \"queryTimestamp\": \"@comunica/actor-init-query:queryTimestamp\",\n * \"httpProxyHandler\": \"@comunica/actor-http-proxy:httpProxyHandler\",\n * \"lenient\": \"@comunica/actor-init-query:lenient\",\n * \"httpIncludeCredentials\": \"@comunica/bus-http:include-credentials\",\n * \"httpAuth\": \"@comunica/bus-http:auth\",\n * \"httpTimeout\": \"@comunica/bus-http:http-timeout\",\n * \"httpBodyTimeout\": \"@comunica/bus-http:http-body-timeout\",\n * \"httpRetryCount\": \"@comunica/bus-http:http-retry-count\",\n * \"httpRetryDelay\": \"@comunica/bus-http:http-retry-delay\",\n * \"httpRetryOnServerError\": \"@comunica/bus-http:http-retry-on-server-error\",\n * \"fetch\": \"@comunica/bus-http:fetch\",\n * \"recoverBrokenLinks\": \"@comunica/bus-http-wayback:recover-broken-links\",\n * \"readOnly\": \"@comunica/bus-query-operation:readOnly\",\n * \"extensionFunctions\": \"@comunica/actor-init-query:extensionFunctions\",\n * \"extensionFunctionCreator\": \"@comunica/actor-init-query:extensionFunctionCreator\",\n * \"functionArgumentsCache\": \"@comunica/actor-init-query:functionArgumentsCache\",\n * \"explain\": \"@comunica/actor-init-query:explain\",\n * \"unionDefaultGraph\": \"@comunica/bus-query-operation:unionDefaultGraph\",\n * \"traverse\": \"@comunica/bus-query-source-identify:traverse\",\n * \"noCache\": \"@comunica/actor-init-query:noCache\",\n * \"distinctConstruct\": \"@comunica/actor-init-query:distinctConstruct\"\n * }}\n */\n contextKeyShortcuts: Record;\n}\n","import type {\n IActorContextPreprocessOutput,\n IActorContextPreprocessArgs,\n MediatorContextPreprocess,\n} from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { ActorHttpInvalidateListenable, IActionHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport { KeysInitQuery, KeysQueryOperation, KeysStatistics }\n from '@comunica/context-entries';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport { ActionContext } from '@comunica/core';\nimport type {\n ILink,\n IQuerySourceWrapper,\n QuerySourceUnidentified,\n QuerySourceUnidentifiedExpanded,\n IActionContext,\n IQuerySourceUnidentifiedExpanded,\n IStatisticBase,\n} from '@comunica/types';\nimport { LRUCache } from 'lru-cache';\n\n/**\n * A comunica Query Source Identify Context Preprocess Actor.\n */\nexport class ActorContextPreprocessQuerySourceIdentify extends ActorContextPreprocess {\n public readonly cacheSize: number;\n public readonly httpInvalidator: ActorHttpInvalidateListenable;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly cache?: LRUCache>;\n\n public constructor(args: IActorContextPreprocessQuerySourceIdentifyArgs) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(\n ({ url }: IActionHttpInvalidate) => url ? cache.delete(url) : cache.clear(),\n );\n }\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n let context = action.context;\n\n // Rewrite sources\n if (context.has(KeysInitQuery.querySourcesUnidentified)) {\n const querySourcesUnidentified: QuerySourceUnidentified[] = action.context\n .get(KeysInitQuery.querySourcesUnidentified)!;\n const querySourcesUnidentifiedExpanded = await Promise.all(querySourcesUnidentified\n .map(querySource => this.expandSource(querySource)));\n const querySources: IQuerySourceWrapper[] = await Promise.all(querySourcesUnidentifiedExpanded\n .map(async querySourceUnidentified => this.identifySource(querySourceUnidentified, action.context)));\n\n // When identifying sources in preprocess actor, we record this as a dereference seed document event\n const statisticDereferenceLinks: IStatisticBase | undefined = action.context\n .get(KeysStatistics.dereferencedLinks);\n if (statisticDereferenceLinks) {\n for (const querySource of querySources) {\n statisticDereferenceLinks.updateStatistic({\n url: querySource.source.referenceValue,\n metadata: {\n seed: true,\n },\n }, querySource.source);\n }\n }\n\n context = action.context\n .delete(KeysInitQuery.querySourcesUnidentified)\n .set(KeysQueryOperation.querySources, querySources);\n }\n\n return { context };\n }\n\n public async expandSource(querySource: QuerySourceUnidentified): Promise {\n if (typeof querySource === 'string' || 'match' in querySource) {\n return { value: querySource };\n }\n return {\n ...>querySource,\n context: (await this.mediatorContextPreprocess.mediate({\n context: ActionContext.ensureActionContext(querySource.context ?? {}),\n })).context,\n };\n }\n\n public identifySource(\n querySourceUnidentified: QuerySourceUnidentifiedExpanded,\n context: IActionContext,\n ): Promise {\n let sourcePromise: Promise | undefined;\n\n // Try to read from cache\n // Only sources based on string values (e.g. URLs) are supported!\n if (typeof querySourceUnidentified.value === 'string' && this.cache) {\n sourcePromise = this.cache.get(querySourceUnidentified.value)!;\n }\n\n // If not in cache, identify the source\n if (!sourcePromise) {\n sourcePromise = this.mediatorQuerySourceIdentify.mediate({ querySourceUnidentified, context })\n .then(({ querySource }) => querySource);\n\n // Set in cache\n if (typeof querySourceUnidentified.value === 'string' && this.cache) {\n this.cache.set(querySourceUnidentified.value, sourcePromise);\n }\n }\n\n return sourcePromise;\n }\n}\n\nexport interface IActorContextPreprocessQuerySourceIdentifyArgs extends IActorContextPreprocessArgs {\n /**\n * The maximum number of entries in the LRU cache, set to 0 to disable.\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n /* eslint-disable max-len */\n /**\n * An actor that listens to HTTP invalidation events\n * @default { a }\n */\n httpInvalidator: ActorHttpInvalidateListenable;\n /* eslint-enable max-len */\n /**\n * Mediator for identifying query sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysQueryOperation, KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IActorTest, IAction } from '@comunica/core';\nimport type { IQuerySourceWrapper, QuerySourceReference } from '@comunica/types';\nimport { QuerySourceSkolemized } from './QuerySourceSkolemized';\nimport { getSourceId } from './utils';\n\n/**\n * A comunica Query Source Skolemize Context Preprocess Actor.\n */\nexport class ActorContextPreprocessQuerySourceSkolemize extends ActorContextPreprocess {\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n let context = action.context;\n\n // Wrap sources in skolemized sources\n if (context.has(KeysQueryOperation.querySources)) {\n // Determine map of source id's\n if (!context.has(KeysQuerySourceIdentify.sourceIds)) {\n context = context.set(KeysQuerySourceIdentify.sourceIds, new Map());\n }\n const sourceIds: Map = context.getSafe(KeysQuerySourceIdentify.sourceIds);\n\n let sources: IQuerySourceWrapper[] = context.getSafe(KeysQueryOperation.querySources);\n sources = sources.map(sourceWrapper => ({\n source: new QuerySourceSkolemized(sourceWrapper.source, getSourceId(sourceIds, sourceWrapper.source)),\n context: sourceWrapper.context,\n }));\n context = context.set(KeysQueryOperation.querySources, sources);\n }\n\n return { context };\n }\n}\n","import { MetadataValidationState } from '@comunica/metadata';\nimport type {\n BindingsStream,\n FragmentSelectorShape,\n IActionContext,\n IQueryBindingsOptions,\n IQuerySource,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { deskolemizeOperation, skolemizeBindingsStream, skolemizeQuadStream } from './utils';\n\n/**\n * A IQuerySource wrapper that skolemizes outgoing quads and bindings.\n */\nexport class QuerySourceSkolemized implements IQuerySource {\n /**\n * The query source to wrap over.\n */\n public readonly innerSource: IQuerySource;\n /**\n * ID of the inner source, see KeysQuerySourceIdentify.sourceIds.\n */\n public readonly sourceId: string;\n\n public constructor(innerSource: IQuerySource, sourceId: string) {\n this.innerSource = innerSource;\n this.sourceId = sourceId;\n }\n\n public async getSelectorShape(context: IActionContext): Promise {\n return this.innerSource.getSelectorShape(context);\n }\n\n public queryBindings(\n operation: Algebra.Operation,\n context: IActionContext,\n options: IQueryBindingsOptions | undefined,\n ): BindingsStream {\n const operationMapped = deskolemizeOperation(operation, this.sourceId);\n if (!operationMapped) {\n const it: BindingsStream = new ArrayIterator([], { autoStart: false });\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: [],\n });\n return it;\n }\n return skolemizeBindingsStream(this.innerSource.queryBindings(operationMapped, context, options), this.sourceId);\n }\n\n public queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise {\n return this.innerSource.queryBoolean(operation, context);\n }\n\n public queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator {\n const operationMapped = deskolemizeOperation(operation, this.sourceId);\n if (!operationMapped) {\n const it: AsyncIterator = new ArrayIterator([], { autoStart: false });\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n });\n return it;\n }\n return skolemizeQuadStream(this.innerSource.queryQuads(operationMapped, context), this.sourceId);\n }\n\n public queryVoid(operation: Algebra.Update, context: IActionContext): Promise {\n return this.innerSource.queryVoid(operation, context);\n }\n\n public get referenceValue(): string | RDF.Source {\n return this.innerSource.referenceValue;\n }\n\n public toString(): string {\n return `${this.innerSource.toString()}(SkolemID:${this.sourceId})`;\n }\n}\n","import { BlankNodeScoped } from '@comunica/data-factory';\nimport type {\n BindingsStream,\n IQuerySource,\n MetadataBindings,\n MetadataQuads,\n QuerySourceReference,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { mapTermsNested } from 'rdf-terms';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\nexport const SKOLEM_PREFIX = 'urn:comunica_skolem:source_';\n\n/**\n * Get the unique, deterministic id for the given source.\n * @param sourceIds ID's of datasources, see KeysRdfResolveQuadPattern.sourceIds.\n * @param source A data source.\n * @return The id of the given source.\n */\nexport function getSourceId(sourceIds: Map, source: IQuerySource): string {\n let sourceId = sourceIds.get(source.referenceValue);\n if (sourceId === undefined) {\n sourceId = `${sourceIds.size}`;\n sourceIds.set(source.referenceValue, sourceId);\n }\n return sourceId;\n}\n\n/**\n * If the given term is a blank node, return a deterministic named node for it\n * based on the source id and the blank node value.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n * @return If the given term was a blank node, this will return a skolemized named node, otherwise the original term.\n */\nexport function skolemizeTerm(term: RDF.Term, sourceId: string): RDF.Term | BlankNodeScoped {\n if (term.termType === 'BlankNode') {\n return new BlankNodeScoped(`bc_${sourceId}_${term.value}`, DF.namedNode(`${SKOLEM_PREFIX}${sourceId}:${term.value}`));\n }\n return term;\n}\n\n/**\n * Skolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The skolemized quad.\n */\nexport function skolemizeQuad(quad: Q, sourceId: string): Q {\n return mapTermsNested(quad, term => skolemizeTerm(term, sourceId));\n}\n\n/**\n * Skolemize all terms in the given bindings.\n * @param bindings An RDF bindings object.\n * @param sourceId A source identifier.\n * @return The skolemized bindings.\n */\nexport function skolemizeBindings(bindings: RDF.Bindings, sourceId: string): RDF.Bindings {\n return bindings.map((term) => {\n if (term.termType === 'Quad') {\n return skolemizeQuad(term, sourceId);\n }\n return skolemizeTerm(term, sourceId);\n });\n}\n\n/**\n * Skolemize all terms in the given quad stream.\n * @param iterator An RDF quad stream.\n * @param sourceId A source identifier.\n * @return The skolemized quad stream.\n */\nexport function skolemizeQuadStream(iterator: AsyncIterator, sourceId: string): AsyncIterator {\n const ret = iterator.map(quad => skolemizeQuad(quad, sourceId));\n function inheritMetadata(): void {\n iterator.getProperty('metadata', (metadata: MetadataQuads) => {\n ret.setProperty('metadata', metadata);\n metadata.state.addInvalidateListener(inheritMetadata);\n });\n }\n inheritMetadata();\n return ret;\n}\n\n/**\n * Skolemize all terms in the given bindings stream.\n * @param iterator An RDF bindings stream.\n * @param sourceId A source identifier.\n * @return The skolemized bindings stream.\n */\nexport function skolemizeBindingsStream(iterator: BindingsStream, sourceId: string): BindingsStream {\n const ret = iterator.map(bindings => skolemizeBindings(bindings, sourceId));\n function inheritMetadata(): void {\n iterator.getProperty('metadata', (metadata: MetadataBindings) => {\n ret.setProperty('metadata', metadata);\n metadata.state.addInvalidateListener(inheritMetadata);\n });\n }\n inheritMetadata();\n return ret;\n}\n\n/**\n * If a given term was a skolemized named node for the given source id,\n * deskolemize it again to a blank node.\n * If the given term was a skolemized named node for another source, return false.\n * If the given term was not a skolemized named node, return the original term.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n */\nexport function deskolemizeTerm(term: RDF.Term, sourceId: string): RDF.Term | null {\n if (term.termType === 'BlankNode' && 'skolemized' in term) {\n term = ( term).skolemized;\n }\n if (term.termType === 'NamedNode' && term.value.startsWith(SKOLEM_PREFIX)) {\n const colonSeparator = term.value.indexOf(':', SKOLEM_PREFIX.length);\n const termSourceId = term.value.slice(SKOLEM_PREFIX.length, colonSeparator);\n // We had a skolemized term\n if (termSourceId === sourceId) {\n // It came from the correct source\n const termLabel = term.value.slice(colonSeparator + 1, term.value.length);\n return DF.blankNode(termLabel);\n }\n // It came from a different source\n return null;\n }\n return term;\n}\n\nexport function deskolemizeTermNestedThrowing(term: RDF.Term, sourceId: string): RDF.Term {\n if (term.termType === 'Quad') {\n return mapTermsNested(term, (subTerm) => {\n const deskolemized = deskolemizeTerm(subTerm, sourceId);\n if (!deskolemized) {\n throw new Error(`Skolemized term is not in scope for this source`);\n }\n return deskolemized;\n });\n }\n const ret = deskolemizeTerm(term, sourceId);\n if (ret === null) {\n throw new Error(`Skolemized term is not in scope for this source`);\n }\n return ret;\n}\n\n/**\n * Deskolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The deskolemized quad.\n */\nexport function deskolemizeQuad(quad: Q, sourceId: string): Q {\n return mapTermsNested(quad, (term: RDF.Term): RDF.Term => {\n const newTerm = deskolemizeTerm(term, sourceId);\n // If the term was skolemized in a different source then don't deskolemize it\n return newTerm ?? term;\n });\n}\n\n/**\n * Deskolemize all terms in the given quad.\n * Will return undefined if there is at least one blank node not in scope for this sourceId.\n * @param operation An algebra operation.\n * @param sourceId A source identifier.\n */\nexport function deskolemizeOperation(operation: O, sourceId: string): O | undefined {\n try {\n return Util.mapOperation(operation, {\n [Algebra.types.PATTERN](op, factory) {\n return {\n result: Object.assign(factory.createPattern(\n deskolemizeTermNestedThrowing(op.subject, sourceId),\n deskolemizeTermNestedThrowing(op.predicate, sourceId),\n deskolemizeTermNestedThrowing(op.object, sourceId),\n deskolemizeTermNestedThrowing(op.graph, sourceId),\n ), { metadata: op.metadata }),\n recurse: false,\n };\n },\n [Algebra.types.PATH](op, factory) {\n return {\n result: Object.assign(factory.createPath(\n deskolemizeTermNestedThrowing(op.subject, sourceId),\n op.predicate,\n deskolemizeTermNestedThrowing(op.object, sourceId),\n deskolemizeTermNestedThrowing(op.graph, sourceId),\n ), { metadata: op.metadata }),\n recurse: false,\n };\n },\n });\n } catch {\n // Return undefined for skolemized terms not in scope for this source\n }\n}\n","import type {\n IActorContextPreprocessOutput,\n IActorContextPreprocessArgs,\n IActionContextPreprocess,\n} from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysCore, KeysInitQuery, KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IAction, IActorTest } from '@comunica/core';\nimport type { FunctionArgumentsCache, Logger } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica Set Defaults Context Preprocess Actor.\n */\nexport class ActorContextPreprocessSetDefaults extends ActorContextPreprocess {\n private readonly defaultFunctionArgumentsCache: FunctionArgumentsCache;\n public readonly logger: Logger;\n\n public constructor(args: IActorContextPreprocessSetDefaultsArgs) {\n super(args);\n this.defaultFunctionArgumentsCache = {};\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IActionContextPreprocess): Promise {\n let context = action.context;\n\n if (action.initialize) {\n // Set default values\n context = context\n .setDefault(KeysInitQuery.queryTimestamp, new Date())\n .setDefault(KeysQuerySourceIdentify.sourceIds, new Map())\n .setDefault(KeysCore.log, this.logger)\n .setDefault(KeysInitQuery.functionArgumentsCache, this.defaultFunctionArgumentsCache)\n .setDefault(KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores, new Map());\n\n // Handle default query format\n let queryFormat: RDF.QueryFormat = { language: 'sparql', version: '1.1' };\n if (context.has(KeysInitQuery.queryFormat)) {\n queryFormat = context.get(KeysInitQuery.queryFormat)!;\n if (queryFormat.language === 'graphql') {\n context = context.setDefault(KeysInitQuery.graphqlSingularizeVariables, {});\n }\n } else {\n context = context.set(KeysInitQuery.queryFormat, queryFormat);\n }\n }\n\n return { context };\n }\n}\n\nexport interface IActorContextPreprocessSetDefaultsArgs extends IActorContextPreprocessArgs {\n /**\n * The logger of this actor\n * @default {a }\n */\n logger: Logger;\n}\n","import type { IActorContextPreprocessOutput, IActorContextPreprocessArgs } from '@comunica/bus-context-preprocess';\nimport { ActorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport { KeysInitQuery, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest, IAction } from '@comunica/core';\nimport type { QuerySourceUnidentified } from '@comunica/types';\n\n/**\n * A comunica Source To Destination Context Preprocess Actor.\n */\nexport class ActorContextPreprocessSourceToDestination extends ActorContextPreprocess {\n public constructor(args: IActorContextPreprocessArgs) {\n super(args);\n }\n\n public async test(_action: IAction): Promise {\n return true;\n }\n\n public async run(action: IAction): Promise {\n if (action.context.get(KeysInitQuery.querySourcesUnidentified) &&\n !action.context.get(KeysRdfUpdateQuads.destination)) {\n const sources: QuerySourceUnidentified[] = action.context.get(KeysInitQuery.querySourcesUnidentified)!;\n if (sources.length === 1) {\n return { context: action.context.set(KeysRdfUpdateQuads.destination, sources[0]) };\n }\n }\n return action;\n }\n}\n","import type { IActionDereference, IActorDereferenceOutput, IActorDereferenceArgs } from '@comunica/bus-dereference';\nimport { ActorDereference } from '@comunica/bus-dereference';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica Fallback Dereference Actor.\n */\nexport class ActorDereferenceFallback extends ActorDereference {\n public constructor(args: IActorDereferenceArgs) {\n super(args);\n }\n\n public async test(_action: IActionDereference): Promise {\n return true;\n }\n\n public async run(action: IActionDereference): Promise {\n return this.handleDereferenceErrors(action, new Error(`Could not dereference '${action.url}'`));\n }\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nimport {\n ActorDereferenceHttpBase,\n} from './ActorDereferenceHttpBase';\n\n/**\n * The browser variant of {@link ActorDereferenceHttp}.\n */\nexport class ActorDereferenceHttp extends ActorDereferenceHttpBase {\n protected getMaxAcceptHeaderLength(): number {\n return this.maxAcceptHeaderLengthBrowser;\n }\n}\n","import type { IActionDereference, IActorDereferenceArgs, IActorDereferenceOutput } from '@comunica/bus-dereference';\nimport { ActorDereference, emptyReadable } from '@comunica/bus-dereference';\nimport type { IActorHttpOutput, MediatorHttp } from '@comunica/bus-http';\nimport { ActorHttp } from '@comunica/bus-http';\nimport type { IActorTest } from '@comunica/core';\nimport { stringify as stringifyStream } from '@jeswr/stream-to-string';\nimport { Headers } from 'cross-fetch';\nimport { resolve as resolveRelative } from 'relative-to-absolute-iri';\n\nconst REGEX_MEDIATYPE = /^[^ ;]*/u;\n\nexport function mediaTypesToAcceptString(mediaTypes: Record, maxLength: number): string {\n const wildcard = '*/*;q=0.1';\n const parts: string[] = [];\n const sortedMediaTypes = Object.entries(mediaTypes)\n .map(([ mediaType, priority ]) => ({ mediaType, priority }))\n .sort((left, right) => right.priority === left.priority ?\n left.mediaType.localeCompare(right.mediaType) :\n right.priority - left.priority);\n // Take into account the ',' characters joining each type\n let partsLength = sortedMediaTypes.length - 1;\n for (const { mediaType, priority } of sortedMediaTypes) {\n const part = mediaType + (priority === 1 ? '' : `;q=${priority.toFixed(3).replace(/0*$/u, '')}`);\n if (partsLength + part.length > maxLength) {\n while (partsLength + wildcard.length > maxLength) {\n const last = parts.pop() ?? '';\n // Don't forget the ','\n partsLength -= last.length + 1;\n }\n parts.push(wildcard);\n break;\n }\n parts.push(part);\n partsLength += part.length;\n }\n return parts.length === 0 ? '*/*' : parts.join(',');\n}\n\n/**\n * An actor that listens on the 'dereference' bus.\n *\n * It resolves the URL using the HTTP bus using an accept header compiled from the available media types.\n */\nexport abstract class ActorDereferenceHttpBase extends ActorDereference implements IActorDereferenceHttpArgs {\n public readonly mediatorHttp: MediatorHttp;\n public readonly maxAcceptHeaderLength: number;\n public readonly maxAcceptHeaderLengthBrowser: number;\n\n public constructor(args: IActorDereferenceHttpArgs) {\n super(args);\n }\n\n public async test({ url }: IActionDereference): Promise {\n if (!/^https?:/u.test(url)) {\n throw new Error(`Cannot retrieve ${url} because it is not an HTTP(S) URL.`);\n }\n return true;\n }\n\n public async run(action: IActionDereference): Promise {\n let exists = true;\n\n // Append any custom passed headers\n const headers = new Headers(action.headers);\n\n // Resolve HTTP URL using appropriate accept header\n headers.append(\n 'Accept',\n mediaTypesToAcceptString(await action.mediaTypes?.() ?? {}, this.getMaxAcceptHeaderLength()),\n );\n\n let httpResponse: IActorHttpOutput;\n const requestTimeStart = Date.now();\n try {\n httpResponse = await this.mediatorHttp.mediate({\n context: action.context,\n init: { headers, method: action.method },\n input: action.url,\n });\n } catch (error: unknown) {\n return this.handleDereferenceErrors(action, error);\n }\n // The response URL can be relative to the given URL\n const url = resolveRelative(httpResponse.url, action.url);\n const requestTime = Date.now() - requestTimeStart;\n\n // Only parse if retrieval was successful\n if (httpResponse.status !== 200) {\n exists = false;\n // Consume the body, to avoid process to hang\n const bodyString = httpResponse.body ?\n await stringifyStream(ActorHttp.toNodeReadable(httpResponse.body)) :\n 'empty response';\n\n if (!action.acceptErrors) {\n const error = new Error(`Could not retrieve ${action.url} (HTTP status ${httpResponse.status}):\\n${bodyString}`);\n return this.handleDereferenceErrors(action, error, httpResponse.headers, requestTime);\n }\n }\n\n const mediaType = REGEX_MEDIATYPE.exec(httpResponse.headers.get('content-type') ?? '')?.[0];\n\n // Return the parsed quad stream and whether or not only triples are supported\n return {\n url,\n data: exists ? ActorHttp.toNodeReadable(httpResponse.body) : emptyReadable(),\n exists,\n requestTime,\n headers: httpResponse.headers,\n mediaType: mediaType === 'text/plain' ? undefined : mediaType,\n };\n }\n\n protected abstract getMaxAcceptHeaderLength(): number;\n}\n\nexport interface IActorDereferenceHttpArgs extends IActorDereferenceArgs {\n /**\n * The HTTP mediator.\n */\n mediatorHttp: MediatorHttp;\n /**\n * The maximum allowed accept header value length for non-browser environments.\n * @range {integer}\n * @default {1024}\n */\n maxAcceptHeaderLength: number;\n /**\n * The maximum allowed accept header value length for browser environments.\n * @range {integer}\n * @default {128}\n */\n maxAcceptHeaderLengthBrowser: number;\n}\n","import type { IActorDereferenceOutput } from '@comunica/bus-dereference';\nimport type { IActorDereferenceRdfArgs } from '@comunica/bus-dereference-rdf';\nimport { ActorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport type { IActionRdfParseMetadata } from '@comunica/bus-rdf-parse';\n\n/**\n * A comunica Parse Dereference RDF Actor.\n */\nexport class ActorDereferenceRdfParse extends ActorDereferenceRdf {\n /**\n * @param args - @defaultNested {{\n * \"ttl\": \"text/turtle\",\n * \"turtle\": \"text/turtle\",\n * \"shaclc\": \"text/shaclc\",\n * \"shc\": \"text/shaclc\",\n * \"shaclce\": \"text/shaclc-ext\",\n * \"shce\": \"text/shaclc-ext\",\n * \"nt\": \"application/n-triples\",\n * \"ntriples\": \"application/n-triples\",\n * \"nq\": \"application/n-quads\",\n * \"nquads\": \"application/n-quads\",\n * \"rdf\": \"application/rdf+xml\",\n * \"rdfxml\": \"application/rdf+xml\",\n * \"owl\": \"application/rdf+xml\",\n * \"n3\": \"text/n3\",\n * \"trig\": \"application/trig\",\n * \"jsonld\": \"application/ld+json\",\n * \"json\": \"application/json\",\n * \"html\": \"text/html\",\n * \"htm\": \"text/html\",\n * \"xhtml\": \"application/xhtml+xml\",\n * \"xht\": \"application/xhtml+xml\",\n * \"xml\": \"application/xml\",\n * \"svg\": \"image/svg+xml\",\n * \"svgz\": \"image/svg+xml\"\n * }} mediaMappings\n */\n public constructor(args: IActorDereferenceRdfArgs) {\n super(args);\n }\n\n public async getMetadata(dereference: IActorDereferenceOutput): Promise {\n return { baseIRI: dereference.url };\n }\n}\n\nexport interface IActorDereferenceRdfParseArgs extends IActorDereferenceRdfArgs {\n\n}\n","import type { IActionHashBindings, IActorHashBindingsOutput } from '@comunica/bus-hash-bindings';\nimport { ActorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { IActorTest } from '@comunica/core';\nimport { sha1 } from 'hash.js';\nimport { termToString } from 'rdf-string';\n\n// eslint-disable-next-line ts/no-require-imports,ts/no-var-requires\nconst canonicalize = require('canonicalize');\n\n/**\n * A comunica Memento Http Actor.\n */\nexport class ActorHashBindingsSha1 extends ActorHashBindings {\n public async test(action: IActionHashBindings): Promise {\n if (!action.allowHashCollisions) {\n throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);\n }\n return true;\n }\n\n public async run(_action: IActionHashBindings): Promise {\n return {\n hashFunction: bindings => sha1()\n .update(canonicalize(Object.fromEntries([ ...bindings ]\n .map(([ key, value ]) => [ termToString(key), termToString(value) ]))))\n .digest('hex'),\n hashCollisions: true,\n };\n }\n}\n","import type { IActionHashQuads, IActorHashQuadsOutput } from '@comunica/bus-hash-quads';\nimport { ActorHashQuads } from '@comunica/bus-hash-quads';\nimport type { IActorTest } from '@comunica/core';\nimport { sha1 } from 'hash.js';\nimport { quadToStringQuad } from 'rdf-string';\n\n/**\n * A comunica Memento Http Actor.\n */\nexport class ActorHashQuadsSha1 extends ActorHashQuads {\n public async test(action: IActionHashQuads): Promise {\n if (!action.allowHashCollisions) {\n throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);\n }\n return true;\n }\n\n public async run(_action: IActionHashQuads): Promise {\n return {\n hashFunction: quad => sha1()\n .update(JSON.stringify(quadToStringQuad(quad)))\n .digest('hex'),\n hashCollisions: true,\n };\n }\n}\n","import type { IActionHttp, IActorHttpOutput, IActorHttpArgs } from '@comunica/bus-http';\nimport { ActorHttp } from '@comunica/bus-http';\nimport { KeysHttp } from '@comunica/context-entries';\nimport type { IMediatorTypeTime } from '@comunica/mediatortype-time';\nimport type { Readable } from 'readable-stream';\nimport 'cross-fetch/polyfill';\nimport { FetchInitPreprocessor } from './FetchInitPreprocessor';\nimport type { IFetchInitPreprocessor } from './IFetchInitPreprocessor';\n\n/**\n * A node-fetch actor that listens on the 'init' bus.\n *\n * It will call `fetch` with either action.input or action.url.\n */\nexport class ActorHttpFetch extends ActorHttp {\n private readonly userAgent: string;\n private readonly fetchInitPreprocessor: IFetchInitPreprocessor;\n\n public constructor(args: IActorHttpFetchArgs) {\n super(args);\n this.userAgent = ActorHttpFetch.createUserAgent();\n this.fetchInitPreprocessor = new FetchInitPreprocessor(args.agentOptions);\n }\n\n public static createUserAgent(): string {\n return `Comunica/actor-http-fetch (${typeof globalThis.navigator === 'undefined' ?\n `Node.js ${process.version}; ${process.platform}` :\n `Browser-${globalThis.navigator.userAgent}`})`;\n }\n\n public async test(_action: IActionHttp): Promise {\n return { time: Number.POSITIVE_INFINITY };\n }\n\n /**\n * Perform a fetch request, taking care of retries\n * @param fetchFn\n * @param requestInput Url or RequestInfo to pass to fetchFn\n * @param requestInit RequestInit to pass to fetch function\n * @param retryCount Maximum retries after which to abort\n * @param retryDelay Time in milliseconds to wait between retries\n * @returns a fetch `Response` object\n */\n private static async getResponse(\n fetchFn: (input: RequestInfo | URL, init?: RequestInit | undefined) => Promise,\n requestInput: RequestInfo | URL,\n requestInit: RequestInit,\n retryCount: number,\n retryDelay: number,\n throwOnServerError: boolean,\n ): Promise {\n let lastError: unknown;\n // The retryCount is 0-based. Therefore, add 1 to triesLeft.\n let triesLeft = retryCount + 1;\n\n // When retry count is greater than 0, repeat fetch.\n while (triesLeft-- > 0) {\n try {\n const response = await fetchFn(requestInput, requestInit);\n // Check, if server sent a 5xx error response.\n if (throwOnServerError && response.status >= 500 && response.status < 600) {\n throw new Error(`Server replied with response code ${response.status}: ${response.statusText}`);\n }\n return response;\n } catch (error: unknown) {\n lastError = error;\n // If the fetch was aborted by timeout, we won't retry.\n if (requestInit.signal?.aborted) {\n throw error;\n }\n\n if (triesLeft > 0) {\n // Wait for specified delay, before retrying.\n await new Promise((resolve, reject) => {\n setTimeout(resolve, retryDelay);\n // Cancel waiting, if timeout is reached.\n requestInit.signal?.addEventListener('abort', () => {\n reject(new Error('Fetch aborted by timeout.'));\n });\n });\n }\n }\n }\n // The fetch was not successful. We throw.\n if (retryCount > 0) {\n // Feedback the last error, if there were retry attempts.\n throw new Error(`Number of fetch retries (${retryCount}) exceeded. Last error: ${String(lastError)}`);\n } else {\n throw lastError;\n }\n }\n\n public async run(action: IActionHttp): Promise {\n // Prepare headers\n const initHeaders = action.init?.headers ?? {};\n action.init = action.init ?? {};\n action.init.headers = new Headers(initHeaders);\n if (!action.init.headers.has('user-agent')) {\n action.init.headers.append('user-agent', this.userAgent);\n }\n const authString: string | undefined = action.context.get(KeysHttp.auth);\n if (authString) {\n action.init.headers.append('Authorization', `Basic ${Buffer.from(authString).toString('base64')}`);\n }\n\n // Log request\n this.logInfo(action.context, `Requesting ${typeof action.input === 'string' ?\n action.input :\n action.input.url}`, () => ({\n headers: ActorHttp.headersToHash(new Headers(action.init!.headers)),\n method: action.init!.method ?? 'GET',\n }));\n\n // TODO: remove this workaround once this has a fix: https://github.com/inrupt/solid-client-authn-js/issues/1708\n if (action.init?.headers && 'append' in action.init.headers && action.context.has(KeysHttp.fetch)) {\n action.init.headers = ActorHttp.headersToHash(action.init.headers);\n }\n\n let requestInit = { ...action.init };\n\n if (action.context.get(KeysHttp.includeCredentials)) {\n requestInit.credentials = 'include';\n }\n\n const httpTimeout: number | undefined = action.context?.get(KeysHttp.httpTimeout);\n let requestTimeout: NodeJS.Timeout | undefined;\n let onTimeout: (() => void) | undefined;\n if (httpTimeout !== undefined) {\n const controller = await this.fetchInitPreprocessor.createAbortController();\n requestInit.signal = controller.signal;\n onTimeout = () => controller.abort();\n requestTimeout = setTimeout(() => onTimeout!(), httpTimeout);\n }\n\n try {\n requestInit = await this.fetchInitPreprocessor.handle(requestInit);\n // Number of retries to perform after a failed fetch.\n const retryCount: number = action.context?.get(KeysHttp.httpRetryCount) ?? 0;\n const retryDelay: number = action.context?.get(KeysHttp.httpRetryDelay) ?? 0;\n const retryOnSeverError: boolean = action.context?.get(KeysHttp.httpRetryOnServerError) ?? false;\n const customFetch: ((input: RequestInfo | URL, init?: RequestInit) => Promise) | undefined = action\n .context?.get(KeysHttp.fetch);\n\n // Execute the fetch (with retries and timeouts, if applicable).\n const response = await ActorHttpFetch.getResponse(\n customFetch ?? fetch,\n action.input,\n requestInit,\n retryCount,\n retryDelay,\n retryOnSeverError,\n );\n\n // We remove or update the timeout\n if (requestTimeout !== undefined) {\n const httpBodyTimeout = action.context?.get(KeysHttp.httpBodyTimeout) || false;\n if (httpBodyTimeout && response.body) {\n // eslint-disable-next-line ts/no-misused-promises\n onTimeout = () => response.body?.cancel(new Error(`HTTP timeout when reading the body of ${response.url}.\nThis error can be disabled by modifying the 'httpBodyTimeout' and/or 'httpTimeout' options.`));\n (response.body).on('close', () => {\n clearTimeout(requestTimeout);\n });\n } else {\n clearTimeout(requestTimeout);\n }\n }\n\n // Node-fetch does not support body.cancel, while it is mandatory according to the fetch and readablestream api.\n // If it doesn't exist, we monkey-patch it.\n if (response.body && !response.body.cancel) {\n response.body.cancel = async(error?: Error) => {\n (response.body).destroy(error);\n if (requestTimeout !== undefined) {\n // We make sure to remove the timeout if it is still enabled\n clearTimeout(requestTimeout);\n }\n };\n }\n\n return response;\n } catch (error: unknown) {\n if (requestTimeout !== undefined) {\n clearTimeout(requestTimeout);\n }\n throw error;\n }\n }\n}\n\nexport interface IActorHttpFetchArgs extends IActorHttpArgs {\n /**\n * The agent options for the HTTP agent\n * @range {json}\n * @default {{ \"keepAlive\": true, \"maxSockets\": 5 }}\n */\n agentOptions?: Record;\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\n\nimport { ActorHttp } from '@comunica/bus-http';\nimport type { IFetchInitPreprocessor } from './IFetchInitPreprocessor';\n\n/**\n * Overrides things for fetch requests in browsers\n */\nexport class FetchInitPreprocessor implements IFetchInitPreprocessor {\n public async handle(init: RequestInit): Promise {\n // Remove overridden user-agent header within browsers to avoid CORS issues\n if (init.headers) {\n const headers = new Headers(init.headers);\n if (headers.has('user-agent')) {\n headers.delete('user-agent');\n }\n init.headers = headers;\n }\n\n // TODO: remove this workaround once this has a fix: https://github.com/inrupt/solid-client-authn-js/issues/1708\n if (init?.headers && 'append' in init.headers) {\n init.headers = ActorHttp.headersToHash(init.headers);\n }\n\n // Browsers don't yet support passing ReadableStream as body to requests, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=688906\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1387483\n // As such, we convert those bodies to a plain string\n // TODO: remove this once browser support ReadableStream in requests\n if (init.body && typeof init.body !== 'string' && 'getReader' in init.body) {\n const reader = init.body.getReader();\n const chunks = [];\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n }\n init.body = chunks.join('');\n }\n\n // Only enable keepalive functionality if we are not sending a body (some browsers seem to trip over this)\n return { keepalive: !init.body, ...init };\n }\n\n public async createAbortController(): Promise {\n return new AbortController();\n }\n}\n","import type { IActionHttp, IActorHttpOutput, MediatorHttp, IActorHttpArgs } from '@comunica/bus-http';\nimport { ActorHttp } from '@comunica/bus-http';\nimport { KeysHttpProxy } from '@comunica/context-entries';\nimport type { IMediatorTypeTime } from '@comunica/mediatortype-time';\nimport type { IProxyHandler } from '@comunica/types';\n\n/**\n * A comunica Proxy Http Actor.\n */\nexport class ActorHttpProxy extends ActorHttp {\n public readonly mediatorHttp: MediatorHttp;\n\n public constructor(args: IActorHttpProxyArgs) {\n super(args);\n }\n\n public async test(action: IActionHttp): Promise {\n const proxyHandler: IProxyHandler | undefined = action.context.get(KeysHttpProxy.httpProxyHandler);\n if (!proxyHandler) {\n throw new Error(`Actor ${this.name} could not find a proxy handler in the context.`);\n }\n if (!await proxyHandler.getProxy(action)) {\n throw new Error(`Actor ${this.name} could not determine a proxy for the given request.`);\n }\n return { time: Number.POSITIVE_INFINITY };\n }\n\n public async run(action: IActionHttp): Promise {\n const requestedUrl = typeof action.input === 'string' ? action.input : action.input.url;\n const proxyHandler: IProxyHandler = action.context.get(KeysHttpProxy.httpProxyHandler)!;\n\n // Send a request for the modified request\n const output = await this.mediatorHttp.mediate({\n ...await proxyHandler.getProxy(action),\n context: action.context.delete(KeysHttpProxy.httpProxyHandler),\n });\n\n // Modify the response URL\n // use defineProperty to allow modification of unmodifiable objects\n Object.defineProperty(output, 'url', {\n configurable: true,\n enumerable: true,\n get: () => output.headers.get('x-final-url') ?? requestedUrl,\n });\n return output;\n }\n}\n\nexport interface IActorHttpProxyArgs extends IActorHttpArgs {\n /**\n * The HTTP mediator\n */\n mediatorHttp: MediatorHttp;\n}\n","import type { IProxyHandler, IRequest } from '@comunica/types';\n\n/**\n * A proxy handler that prefixes all URLs with a given string.\n */\nexport class ProxyHandlerStatic implements IProxyHandler {\n private readonly prefixUrl: string;\n\n public constructor(prefixUrl: string) {\n this.prefixUrl = prefixUrl;\n }\n\n public async getProxy(request: IRequest): Promise {\n return {\n init: request.init,\n input: this.modifyInput(request.input),\n };\n }\n\n public modifyInput(input: RequestInfo): RequestInfo {\n if (typeof input === 'string') {\n return this.prefixUrl + input;\n }\n return new Request(this.prefixUrl + input.url, input);\n }\n}\n","import type { IActionHttp, IActorHttpArgs, IActorHttpOutput, MediatorHttp } from '@comunica/bus-http';\nimport { ActorHttp } from '@comunica/bus-http';\nimport { KeysHttpWayback, KeysHttpProxy } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IProxyHandler, IRequest } from '@comunica/types';\nimport { stringify as stringifyStream } from '@jeswr/stream-to-string';\nimport 'cross-fetch/polyfill';\n\nconst WAYBACK_URL = 'http://wayback.archive-it.org/';\n\nfunction addWayback(action: IRequest): IRequest {\n const request = new Request(action.input, action.init);\n return {\n input: new Request(new URL(`/${request.url}`, WAYBACK_URL), request),\n };\n}\n\nfunction getProxyHandler(context: IActionContext): (action: IRequest) => Promise {\n const handler = context.get(KeysHttpProxy.httpProxyHandler);\n if (handler) {\n return (action: IRequest) => handler.getProxy(addWayback(action));\n }\n return (action: IRequest) => Promise.resolve(addWayback(action));\n}\n\n/**\n * A Comunica actor to intercept HTTP requests to recover broken links using the WayBack Machine\n */\nexport class ActorHttpWayback extends ActorHttp {\n public readonly mediatorHttp: MediatorHttp;\n\n public constructor(args: IActorHttpWaybackArgs) {\n super(args);\n }\n\n public async test(_action: IActionHttp): Promise {\n return true;\n }\n\n public async run(action: IActionHttp): Promise {\n let result = await this.mediatorHttp.mediate(action);\n\n if (result.status === 404 && action.context.get(KeysHttpWayback.recoverBrokenLinks)) {\n let fallbackResult = await this.mediatorHttp.mediate({\n ...action,\n context: action.context\n .set(KeysHttpWayback.recoverBrokenLinks, false)\n .set(KeysHttpProxy.httpProxyHandler, { getProxy: getProxyHandler(action.context) }),\n });\n\n // If the wayback machine returns a 200 status then use that result\n if (fallbackResult.status === 200) {\n [ result, fallbackResult ] = [ fallbackResult, result ];\n }\n\n // Consume stream to avoid process\n const { body } = fallbackResult;\n if (body) {\n if ('cancel' in body && typeof body.cancel === 'function') {\n await body.cancel();\n } else if ('destroy' in body && typeof (body).destroy === 'function') {\n (body).destroy();\n } else {\n await stringifyStream(ActorHttp.toNodeReadable(body));\n }\n }\n }\n\n return result;\n }\n}\n\nexport interface IActorHttpWaybackArgs extends IActorHttpArgs {\n mediatorHttp: MediatorHttp;\n}\n","/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nimport { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/* istanbul ignore next */\nif (typeof process === 'undefined') {\n // Polyfills process.nextTick for readable-stream\n globalThis.process = require('process/');\n}\n\nexport class ActorInitQuery extends ActorInitQueryBase {}\n","import type { MediatorHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { IActionInit, IActorInitArgs, IActorOutputInit } from '@comunica/bus-init';\nimport { ActorInit } from '@comunica/bus-init';\nimport type { MediatorQueryProcess } from '@comunica/bus-query-process';\nimport type {\n MediatorQueryResultSerializeHandle,\n MediatorQueryResultSerializeMediaTypes,\n MediatorQueryResultSerializeMediaTypeFormats,\n} from '@comunica/bus-query-result-serialize';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A browser-safe comunica Query Init Actor.\n */\nexport class ActorInitQueryBase extends ActorInit implements IActorInitQueryBaseArgs {\n public readonly mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n public readonly mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n public readonly mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n public readonly mediatorHttpInvalidate: MediatorHttpInvalidate;\n public readonly mediatorQueryProcess: MediatorQueryProcess;\n\n public readonly queryString?: string;\n public readonly defaultQueryInputFormat?: string;\n public readonly allowNoSources?: boolean;\n public readonly context?: string;\n\n public async test(_action: IActionInit): Promise {\n return true;\n }\n\n public async run(_action: IActionInit): Promise {\n throw new Error('ActorInitSparql#run is not supported in the browser.');\n }\n}\n\nexport interface IActorInitQueryBaseArgs extends IActorInitArgs {\n /**\n * The query process mediator\n */\n mediatorQueryProcess: MediatorQueryProcess;\n /**\n * The query serialize mediator\n */\n mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n /**\n * The query serialize media type combinator\n */\n mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n /**\n * The query serialize media type format combinator\n */\n mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n /**\n * The HTTP cache invalidation mediator\n */\n mediatorHttpInvalidate: MediatorHttpInvalidate;\n\n /**\n * A SPARQL query string\n */\n queryString?: string;\n /**\n * The default query input format\n * @default {sparql}\n */\n defaultQueryInputFormat?: string;\n /**\n * If it should be allowed that the user passes no sources.\n * @default {false}\n */\n allowNoSources?: boolean;\n /**\n * A JSON string of a query operation context\n */\n context?: string;\n}\n","import type { IActionSparqlSerialize, IActorQueryResultSerializeOutput } from '@comunica/bus-query-result-serialize';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryEngine,\n IQueryExplained,\n QueryFormatType,\n QueryType,\n QueryExplainMode,\n BindingsStream,\n QueryAlgebraContext,\n QueryStringContext,\n IQueryBindingsEnhanced,\n IQueryQuadsEnhanced,\n QueryEnhanced,\n IQueryContextCommon,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/**\n * Base implementation of a Comunica query engine.\n */\nexport class QueryEngineBase<\n // eslint-disable-next-line unused-imports/no-unused-vars\n QueryContext extends IQueryContextCommon = IQueryContextCommon,\n QueryStringContextInner extends RDF.QueryStringContext = QueryStringContext,\n QueryAlgebraContextInner extends RDF.QueryAlgebraContext = QueryAlgebraContext,\n>\nimplements IQueryEngine {\n private readonly actorInitQuery: ActorInitQueryBase;\n\n public constructor(actorInitQuery: ActorInitQueryBase) {\n this.actorInitQuery = actorInitQuery;\n }\n\n public async queryBindings(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'bindings');\n }\n\n public async queryQuads(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise & RDF.ResultStream> {\n return this.queryOfType(query, context, 'quads');\n }\n\n public async queryBoolean(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'boolean');\n }\n\n public async queryVoid(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n return this.queryOfType(query, context, 'void');\n }\n\n protected async queryOfType(\n query: QueryFormatTypeInner,\n context: undefined | (QueryFormatTypeInner extends string ?\n QueryStringContextInner : QueryAlgebraContextInner),\n expectedType: QueryTypeOut['resultType'],\n ): Promise> {\n const result = await this.query(query, context);\n if (result.resultType === expectedType) {\n return > await result.execute();\n }\n throw new Error(`Query result type '${expectedType}' was expected, while '${result.resultType}' was found.`);\n }\n\n /**\n * Evaluate the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to the query output.\n */\n public async query(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n const output = await this.queryOrExplain(query, context);\n if ('explain' in output) {\n throw new Error(`Tried to explain a query when in query-only mode`);\n }\n return output;\n }\n\n /**\n * Explain the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @param explainMode The explain mode.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n public async explain(\n query: QueryFormatTypeInner,\n context: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n explainMode: QueryExplainMode,\n ): Promise {\n context.explain = explainMode;\n const output = await this.queryOrExplain(query, context);\n return output;\n }\n\n /**\n * Evaluate or explain the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n public async queryOrExplain(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise {\n const actionContext: IActionContext = ActionContext.ensureActionContext(context);\n\n // Invalidate caches if cache argument is set to false\n if (actionContext.get(KeysInitQuery.noCache)) {\n await this.invalidateHttpCache();\n }\n\n // Invoke query process\n const { result } = await this.actorInitQuery.mediatorQueryProcess.mediate({ query, context: actionContext });\n if ('explain' in result) {\n return result;\n }\n return QueryEngineBase.internalToFinalResult(result);\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL (weighted) result media types.\n */\n public async getResultMediaTypes(context?: any): Promise> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeCombiner\n .mediate({ context, mediaTypes: true })).mediaTypes;\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL result media type formats.\n */\n public async getResultMediaTypeFormats(context?: any): Promise> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeFormatCombiner\n .mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n\n /**\n * Convert a query result to a string stream based on a certain media type.\n * @param {IQueryOperationResult} queryResult A query result.\n * @param {string} mediaType A media type.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A text stream.\n */\n public async resultToString(queryResult: RDF.Query, mediaType?: string, context?: any):\n Promise {\n context = ActionContext.ensureActionContext(context);\n if (!mediaType) {\n switch (queryResult.resultType) {\n case 'bindings':\n mediaType = 'application/json';\n break;\n case 'quads':\n mediaType = 'application/trig';\n break;\n default:\n mediaType = 'simple';\n break;\n }\n }\n const handle: IActionSparqlSerialize = { ...await QueryEngineBase.finalToInternalResult(queryResult), context };\n return (await this.actorInitQuery.mediatorQueryResultSerialize\n .mediate({ context, handle, handleMediaType: mediaType })).handle;\n }\n\n /**\n * Invalidate all internal caches related to the given page URL.\n * If no page URL is given, then all pages will be invalidated.\n * @param {string} url The page URL to invalidate.\n * @param context An optional ActionContext to pass to the actors.\n * @return {Promise} A promise resolving when the caches have been invalidated.\n */\n public invalidateHttpCache(url?: string, context?: any): Promise {\n context = ActionContext.ensureActionContext(context);\n return this.actorInitQuery.mediatorHttpInvalidate.mediate({ url, context });\n }\n\n /**\n * Convert an internal query result to a final one.\n * @param internalResult An intermediary query result.\n */\n public static internalToFinalResult(internalResult: IQueryOperationResult): QueryType {\n switch (internalResult.type) {\n case 'bindings':\n return {\n resultType: 'bindings',\n execute: async() => internalResult.bindingsStream,\n metadata: async() => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'quads':\n return {\n resultType: 'quads',\n execute: async() => internalResult.quadStream,\n metadata: async() => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'boolean':\n return {\n resultType: 'boolean',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n case 'void':\n return {\n resultType: 'void',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n }\n }\n\n /**\n * Convert a final query result to an internal one.\n * @param finalResult A final query result.\n */\n public static async finalToInternalResult(finalResult: RDF.Query): Promise {\n switch (finalResult.resultType) {\n case 'bindings':\n return {\n type: 'bindings',\n bindingsStream: await finalResult.execute(),\n metadata: async() => await finalResult.metadata(),\n };\n case 'quads':\n return {\n type: 'quads',\n quadStream: > await finalResult.execute(),\n metadata: async() => await finalResult.metadata(),\n };\n case 'boolean':\n return {\n type: 'boolean',\n execute: () => finalResult.execute(),\n };\n case 'void':\n return {\n type: 'void',\n execute: () => finalResult.execute(),\n };\n }\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { getDataDestinationValue } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery, KeysQueryOperation, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IDataDestination, IQuerySourceWrapper } from '@comunica/types';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Assign Sources Exhaustive Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationAssignSourcesExhaustive extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const sources: IQuerySourceWrapper[] = action.context.get(KeysQueryOperation.querySources) ?? [];\n if (sources.length === 0) {\n return { operation: action.operation, context: action.context };\n }\n if (sources.length === 1) {\n const sourceWrapper = sources[0];\n const destination: IDataDestination | undefined = action.context.get(KeysRdfUpdateQuads.destination);\n if (!destination || sourceWrapper.source.referenceValue === getDataDestinationValue(destination)) {\n try {\n const shape = await sourceWrapper.source.getSelectorShape(action.context);\n if (ActorQueryOperation.doesShapeAcceptOperation(shape, action.operation)) {\n return {\n operation: ActorQueryOperation.assignOperationSource(action.operation, sourceWrapper),\n context: action.context,\n };\n }\n } catch {\n // Fallback to the default case when the selector shape does not exist,\n // which can occur for a non-existent destination.\n }\n }\n }\n return {\n operation: this.assignExhaustive(action.operation, sources),\n // We only keep queryString in the context if we only have a single source that accepts the full operation.\n // In that case, the queryString can be sent to the source as-is.\n context: action.context\n .delete(KeysInitQuery.queryString),\n };\n }\n\n /**\n * Assign the given sources to the leaves in the given query operation.\n * Leaves will be wrapped in a union operation and duplicated for every source.\n * The input operation will not be modified.\n * @param operation The input operation.\n * @param sources The sources to assign.\n */\n public assignExhaustive(operation: Algebra.Operation, sources: IQuerySourceWrapper[]): Algebra.Operation {\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n return Util.mapOperation(operation, {\n [Algebra.types.PATTERN](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createUnion(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.LINK](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.NPS](subOperation, factory) {\n if (sources.length === 1) {\n return {\n result: ActorQueryOperation.assignOperationSource(subOperation, sources[0]),\n recurse: false,\n };\n }\n return {\n result: factory.createAlt(sources\n .map(source => ActorQueryOperation.assignOperationSource(subOperation, source))),\n recurse: false,\n };\n },\n [Algebra.types.SERVICE](subOperation) {\n return {\n result: subOperation,\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT](subOperation, factory) {\n return {\n result: factory.createConstruct(\n self.assignExhaustive(subOperation.input, sources),\n subOperation.template,\n ),\n recurse: false,\n };\n },\n [Algebra.types.DELETE_INSERT](subOperation, factory) {\n return {\n result: factory.createDeleteInsert(\n subOperation.delete,\n subOperation.insert,\n subOperation.where ? self.assignExhaustive(subOperation.where, sources) : undefined,\n ),\n recurse: false,\n };\n },\n });\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica BGP to Join Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationBgpToJoin extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n bgp(op: Algebra.Bgp, factory: Factory) {\n return {\n recurse: false,\n result: factory.createJoin(op.patterns),\n };\n },\n });\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries/lib/Keys';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Construct Distinct Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationConstructDistinct extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (!action.context.has(KeysInitQuery.distinctConstruct)) {\n throw new Error(`${this.name} was not enabled by the query.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n construct(op: Algebra.Construct, factory: Factory) {\n return {\n recurse: false,\n result: factory.createDistinct(factory.createConstruct(op.input, op.template)),\n };\n },\n });\n return { operation, context: action.context.delete(KeysInitQuery.distinctConstruct) };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\nconst AF = new Factory();\n\n/**\n * A comunica Describe To Constructs Subject Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationDescribeToConstructsSubject extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (action.operation.type !== Algebra.types.DESCRIBE) {\n throw new Error(`Actor ${this.name} only supports describe operations, but got ${action.operation.type}`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operationOriginal: Algebra.Describe = action.operation;\n\n // Create separate construct queries for all non-variable terms\n const operations: Algebra.Construct[] = operationOriginal.terms\n .filter(term => term.termType !== 'Variable')\n .map((term: RDF.Term) => {\n // Transform each term to a separate construct operation with S ?p ?o patterns (BGP) for all terms\n const patterns: RDF.BaseQuad[] = [\n DF.quad(term, DF.variable('__predicate'), DF.variable('__object')),\n ];\n\n // eslint-disable-next-line unicorn/no-array-for-each\n patterns.forEach((templatePattern: any) => templatePattern.type = 'pattern');\n const templateOperation: Algebra.Operation = {\n type: Algebra.types.BGP,\n patterns: patterns,\n };\n\n // Create a construct query\n return {\n input: templateOperation,\n template: patterns,\n type: 'construct',\n };\n });\n\n // If we have variables in the term list,\n // create one separate construct operation to determine these variables using the input pattern.\n if (operations.length !== operationOriginal.terms.length) {\n let variablePatterns: Algebra.Pattern[] = [];\n operationOriginal.terms\n .filter(term => term.termType === 'Variable')\n // eslint-disable-next-line unicorn/no-array-for-each\n .forEach((term: RDF.Term, i: number) => {\n // Transform each term to an S ?p ?o pattern in a non-conflicting way\n const patterns: RDF.BaseQuad[] = [\n DF.quad(term, DF.variable(`__predicate${i}`), DF.variable(`__object${i}`)),\n ];\n\n // eslint-disable-next-line unicorn/no-array-for-each\n patterns.forEach((templatePattern: any) => templatePattern.type = 'pattern');\n variablePatterns = [ ...variablePatterns, ... patterns ];\n });\n\n // Add a single construct for the variables\n // This requires a join between the input pattern and our variable patterns that form a simple BGP\n operations.push({\n input: {\n type: Algebra.types.JOIN,\n input: [\n operationOriginal.input,\n { type: Algebra.types.BGP, patterns: variablePatterns },\n ],\n },\n template: variablePatterns,\n type: Algebra.types.CONSTRUCT,\n });\n }\n\n // Union the construct operations\n const operation = AF.createUnion(operations, false);\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationArgs,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { FragmentSelectorShape, IActionContext, IQuerySourceWrapper } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { mapTermsNested, uniqTerms } from 'rdf-terms';\nimport type { Factory } from 'sparqlalgebrajs';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Filter Pushdown Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationFilterPushdown extends ActorOptimizeQueryOperation {\n private readonly aggressivePushdown: boolean;\n private readonly maxIterations: number;\n private readonly splitConjunctive: boolean;\n private readonly mergeConjunctive: boolean;\n private readonly pushIntoLeftJoins: boolean;\n private readonly pushEqualityIntoPatterns: boolean;\n\n public constructor(args: IActorOptimizeQueryOperationFilterPushdownArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n let operation: Algebra.Operation = action.operation;\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n\n // Split conjunctive filters into nested filters\n if (this.splitConjunctive) {\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n // Split conjunctive filters into separate filters\n if (op.expression.expressionType === Algebra.expressionTypes.OPERATOR && op.expression.operator === '&&') {\n self.logDebug(action.context, `Split conjunctive filter into ${op.expression.args.length} nested filters`);\n return {\n recurse: true,\n result: op.expression.args\n .reduce((operation, expression) => factory.createFilter(operation, expression), op.input),\n };\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n }\n\n // Collect selector shapes of all operations\n const sources = this.getSources(operation);\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n const sourceShapes = new Map(<[IQuerySourceWrapper, FragmentSelectorShape][]> await Promise.all(sources\n .map(async source => [ source, await source.source.getSelectorShape(action.context) ])));\n\n // Push down all filters\n // We loop until no more filters can be pushed down.\n let repeat = true;\n let iterations = 0;\n while (repeat && iterations < this.maxIterations) {\n repeat = false;\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n // Check if the filter must be pushed down\n if (!self.shouldAttemptPushDown(op, sources, sourceShapes)) {\n return {\n recurse: true,\n result: op,\n };\n }\n\n // For all filter expressions in the operation,\n // we attempt to push them down as deep as possible into the algebra.\n const variables = self.getExpressionVariables(op.expression);\n const [ isModified, result ] = self\n .filterPushdown(op.expression, variables, op.input, factory, action.context);\n if (isModified) {\n repeat = true;\n }\n return {\n recurse: true,\n result,\n };\n },\n });\n iterations++;\n }\n\n if (iterations > 1) {\n self.logDebug(action.context, `Pushed down filters in ${iterations} iterations`);\n }\n\n // Merge nested filters into conjunctive filters\n if (this.mergeConjunctive) {\n operation = Util.mapOperation(operation, {\n filter(op: Algebra.Filter, factory: Factory) {\n if (op.input.type === Algebra.types.FILTER) {\n const { nestedExpressions, input } = self.getNestedFilterExpressions(op);\n self.logDebug(action.context, `Merge ${nestedExpressions.length} nested filters into conjunctive filter`);\n return {\n recurse: true,\n result: factory.createFilter(\n input,\n nestedExpressions.slice(1).reduce((previous, current) =>\n factory.createOperatorExpression('&&', [ previous, current ]), nestedExpressions[0]),\n ),\n };\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n }\n\n return { operation, context: action.context };\n }\n\n /**\n * Check if the given filter operation must be attempted to push down, based on the following criteria:\n * - Always push down if aggressive mode is enabled\n * - Push down if the filter is extremely selective\n * - Push down if federated and at least one accepts the filter\n * @param operation The filter operation\n * @param sources The query sources in the operation\n * @param sourceShapes A mapping of sources to selector shapes.\n */\n public shouldAttemptPushDown(\n operation: Algebra.Filter,\n sources: IQuerySourceWrapper[],\n sourceShapes: Map,\n ): boolean {\n // Always push down if aggressive mode is enabled\n if (this.aggressivePushdown) {\n return true;\n }\n\n // Push down if the filter is extremely selective\n const expression = operation.expression;\n if (expression.expressionType === Algebra.expressionTypes.OPERATOR &&\n expression.operator === '=' &&\n ((expression.args[0].expressionType === 'term' && expression.args[0].term.termType !== 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType === 'Variable') ||\n (expression.args[0].expressionType === 'term' && expression.args[0].term.termType === 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType !== 'Variable'))) {\n return true;\n }\n\n // Push down if federated and at least one accepts the filter\n if (sources.some(source => ActorQueryOperation.doesShapeAcceptOperation(sourceShapes.get(source)!, operation))) {\n return true;\n }\n\n // Don't push down in all other cases\n return false;\n }\n\n /**\n * Collected all sources that are defined within the given operation of children recursively.\n * @param operation An operation.\n */\n public getSources(operation: Algebra.Operation): IQuerySourceWrapper[] {\n const sources = new Set();\n const sourceAdder = (subOperation: Algebra.Operation): boolean => {\n const src = ActorQueryOperation.getOperationSource(subOperation);\n if (src) {\n sources.add(src);\n }\n return false;\n };\n Util.recurseOperation(operation, {\n [Algebra.types.PATTERN]: sourceAdder,\n [Algebra.types.LINK]: sourceAdder,\n [Algebra.types.NPS]: sourceAdder,\n [Algebra.types.SERVICE]: sourceAdder,\n });\n return [ ...sources ];\n }\n\n /**\n * Get all variables inside the given expression.\n * @param expression An expression.\n * @return An array of variables, or undefined if the expression is unsupported for pushdown.\n */\n public getExpressionVariables(expression: Algebra.Expression): RDF.Variable[] {\n switch (expression.expressionType) {\n case Algebra.expressionTypes.AGGREGATE:\n case Algebra.expressionTypes.WILDCARD:\n throw new Error(`Getting expression variables is not supported for ${expression.expressionType}`);\n case Algebra.expressionTypes.EXISTENCE:\n return Util.inScopeVariables(expression.input);\n case Algebra.expressionTypes.NAMED:\n return [];\n case Algebra.expressionTypes.OPERATOR:\n return uniqTerms(expression.args.flatMap(arg => this.getExpressionVariables(arg)));\n case Algebra.expressionTypes.TERM:\n if (expression.term.termType === 'Variable') {\n return [ expression.term ];\n }\n return [];\n }\n }\n\n protected getOverlappingOperations(\n operation: Algebra.Operation,\n expressionVariables: RDF.Variable[],\n ): {\n fullyOverlapping: Algebra.Operation[];\n partiallyOverlapping: Algebra.Operation[];\n notOverlapping: Algebra.Operation[];\n } {\n const fullyOverlapping: Algebra.Operation[] = [];\n const partiallyOverlapping: Algebra.Operation[] = [];\n const notOverlapping: Algebra.Operation[] = [];\n for (const input of operation.input) {\n const inputVariables = Util.inScopeVariables(input);\n if (this.variablesSubSetOf(expressionVariables, inputVariables)) {\n fullyOverlapping.push(input);\n } else if (this.variablesIntersect(expressionVariables, inputVariables)) {\n partiallyOverlapping.push(input);\n } else {\n notOverlapping.push(input);\n }\n }\n\n return {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n };\n }\n\n /**\n * Recursively push down the given expression into the given operation if possible.\n * Different operators have different semantics for choosing whether or not to push down,\n * and how this pushdown is done.\n * For every passed operator, it is checked whether or not the filter will have any effect on the operation.\n * If not, the filter is voided.\n * @param expression An expression to push down.\n * @param expressionVariables The variables inside the given expression.\n * @param operation The operation to push down into.\n * @param factory An algebra factory.\n * @param context The action context.\n * @return A tuple indicating if the operation was modified and the modified operation.\n */\n public filterPushdown(\n expression: Algebra.Expression,\n expressionVariables: RDF.Variable[],\n operation: Algebra.Operation,\n factory: Factory,\n context: IActionContext,\n ): [ boolean, Algebra.Operation ] {\n // Void false expressions\n if (this.isExpressionFalse(expression)) {\n return [ true, factory.createUnion([]) ];\n }\n\n // Don't push down (NOT) EXISTS\n if (expression.type === Algebra.types.EXPRESSION &&\n expression.expressionType === Algebra.expressionTypes.EXISTENCE) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n\n switch (operation.type) {\n case Algebra.types.EXTEND:\n // Pass if the variable is not part of the expression\n if (!this.variablesIntersect([ operation.variable ], expressionVariables)) {\n return [ true, factory.createExtend(\n this.filterPushdown(expression, expressionVariables, operation.input, factory, context)[1],\n operation.variable,\n operation.expression,\n ) ];\n }\n return [ false, factory.createFilter(operation, expression) ];\n case Algebra.types.FILTER: {\n // Always pass\n const [ isModified, result ] = this\n .filterPushdown(expression, expressionVariables, operation.input, factory, context);\n return [ isModified, factory.createFilter(result, operation.expression) ];\n }\n case Algebra.types.JOIN: {\n // Don't push down for empty join\n if (operation.input.length === 0) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n\n // Determine overlapping operations\n const {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n } = this.getOverlappingOperations(operation, expressionVariables);\n\n const joins: Algebra.Operation[] = [];\n let isModified = false;\n if (fullyOverlapping.length > 0) {\n isModified = true;\n joins.push(factory.createJoin(fullyOverlapping\n .map(input => this.filterPushdown(expression, expressionVariables, input, factory, context)[1])));\n }\n if (partiallyOverlapping.length > 0) {\n joins.push(factory.createFilter(factory.createJoin(partiallyOverlapping, false), expression));\n }\n if (notOverlapping.length > 0) {\n joins.push(...notOverlapping);\n }\n\n if (joins.length > 1) {\n isModified = true;\n }\n\n if (isModified) {\n this.logDebug(context, `Push down filter across join entries with ${fullyOverlapping.length} fully overlapping, ${partiallyOverlapping.length} partially overlapping, and ${notOverlapping.length} not overlapping`);\n }\n\n return [ isModified, joins.length === 1 ? joins[0] : factory.createJoin(joins) ];\n }\n case Algebra.types.NOP:\n return [ true, operation ];\n case Algebra.types.PROJECT:\n // Push down if variables overlap\n if (this.variablesIntersect(operation.variables, expressionVariables)) {\n return [ true, factory.createProject(\n this.filterPushdown(expression, expressionVariables, operation.input, factory, context)[1],\n operation.variables,\n ) ];\n }\n // Void expression otherwise\n return [ true, operation ];\n case Algebra.types.UNION: {\n // Determine overlapping operations\n const {\n fullyOverlapping,\n partiallyOverlapping,\n notOverlapping,\n } = this.getOverlappingOperations(operation, expressionVariables);\n\n const unions: Algebra.Operation[] = [];\n let isModified = false;\n if (fullyOverlapping.length > 0) {\n isModified = true;\n unions.push(factory.createUnion(fullyOverlapping\n .map(input => this.filterPushdown(expression, expressionVariables, input, factory, context)[1])));\n }\n if (partiallyOverlapping.length > 0) {\n unions.push(factory.createFilter(factory.createUnion(partiallyOverlapping, false), expression));\n }\n if (notOverlapping.length > 0) {\n unions.push(...notOverlapping);\n }\n\n if (unions.length > 1) {\n isModified = true;\n }\n\n if (isModified) {\n this.logDebug(context, `Push down filter across union entries with ${fullyOverlapping.length} fully overlapping, ${partiallyOverlapping.length} partially overlapping, and ${notOverlapping.length} not overlapping`);\n }\n\n return [ isModified, unions.length === 1 ? unions[0] : factory.createUnion(unions) ];\n }\n case Algebra.types.VALUES:\n // Only keep filter if it overlaps with the variables\n if (this.variablesIntersect(operation.variables, expressionVariables)) {\n return [ false, factory.createFilter(operation, expression) ];\n }\n return [ true, operation ];\n case Algebra.types.LEFT_JOIN: {\n if (this.pushIntoLeftJoins) {\n const rightVariables = Util.inScopeVariables(operation.input[1]);\n if (!this.variablesIntersect(expressionVariables, rightVariables)) {\n // If filter *only* applies to left entry of optional, push it down into that.\n this.logDebug(context, `Push down filter into left join`);\n return [ true, factory.createLeftJoin(\n this.filterPushdown(expression, expressionVariables, operation.input[0], factory, context)[1],\n operation.input[1],\n operation.expression,\n ) ];\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.PATTERN: {\n if (this.pushEqualityIntoPatterns) {\n // Try to push simple FILTER(?s = ) expressions into the pattern\n const pushableResult = this.getEqualityExpressionPushableIntoPattern(expression);\n if (pushableResult) {\n let isModified = false;\n const originalMetadata = operation.metadata;\n operation = mapTermsNested(operation, (value) => {\n if (value.equals(pushableResult.variable)) {\n isModified = true;\n return pushableResult.term;\n }\n return value;\n });\n operation.type = Algebra.types.PATTERN;\n operation.metadata = originalMetadata;\n if (isModified) {\n this.logDebug(context, `Push down filter into pattern for ?${pushableResult.variable.value}`);\n return [ true, factory.createJoin([\n operation,\n factory.createValues(\n [ pushableResult.variable ],\n [{ [`?${pushableResult.variable.value}`]: pushableResult.term }],\n ),\n ]) ];\n }\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.PATH: {\n if (this.pushEqualityIntoPatterns) {\n // Try to push simple FILTER(?s = ) expressions into the path\n const pushableResult = this.getEqualityExpressionPushableIntoPattern(expression);\n if (pushableResult &&\n (operation.subject.equals(pushableResult.variable) || operation.object.equals(pushableResult.variable))) {\n this.logDebug(context, `Push down filter into path for ?${pushableResult.variable.value}`);\n const originalMetadata = operation.metadata;\n operation = factory.createPath(\n operation.subject.equals(pushableResult.variable) ? pushableResult.term : operation.subject,\n operation.predicate,\n operation.object.equals(pushableResult.variable) ? pushableResult.term : operation.object,\n );\n operation.metadata = originalMetadata;\n return [ true, factory.createJoin([\n operation,\n factory.createValues(\n [ pushableResult.variable ],\n [{ [`?${pushableResult.variable.value}`]: pushableResult.term }],\n ),\n ]) ];\n }\n }\n\n // Don't push down in all other cases\n return [ false, factory.createFilter(operation, expression) ];\n }\n case Algebra.types.MINUS:\n case Algebra.types.ALT:\n case Algebra.types.ASK:\n case Algebra.types.BGP:\n case Algebra.types.CONSTRUCT:\n case Algebra.types.DESCRIBE:\n case Algebra.types.DISTINCT:\n case Algebra.types.EXPRESSION:\n case Algebra.types.FROM:\n case Algebra.types.GRAPH:\n case Algebra.types.GROUP:\n case Algebra.types.INV:\n case Algebra.types.LINK:\n case Algebra.types.NPS:\n case Algebra.types.ONE_OR_MORE_PATH:\n case Algebra.types.ORDER_BY:\n case Algebra.types.REDUCED:\n case Algebra.types.SEQ:\n case Algebra.types.SERVICE:\n case Algebra.types.SLICE:\n case Algebra.types.ZERO_OR_MORE_PATH:\n case Algebra.types.ZERO_OR_ONE_PATH:\n case Algebra.types.COMPOSITE_UPDATE:\n case Algebra.types.DELETE_INSERT:\n case Algebra.types.LOAD:\n case Algebra.types.CLEAR:\n case Algebra.types.CREATE:\n case Algebra.types.DROP:\n case Algebra.types.ADD:\n case Algebra.types.MOVE:\n case Algebra.types.COPY:\n // Operations that do not support pushing down\n // Left-join and minus might be possible to support in the future.\n return [ false, factory.createFilter(operation, expression) ];\n }\n }\n\n /**\n * Check if the given expression is a simple equals operation with one variable and one non-literal\n * (or literal with canonical lexical form) term that can be pushed into a pattern.\n * @param expression The current expression.\n * @return The variable and term to fill into the pattern, or undefined.\n */\n public getEqualityExpressionPushableIntoPattern(\n expression: Algebra.Expression,\n ): { variable: RDF.Variable; term: RDF.Term } | undefined {\n if (expression.expressionType === Algebra.expressionTypes.OPERATOR && expression.operator === '=') {\n if (expression.args[0].expressionType === 'term' && expression.args[0].term.termType !== 'Variable' &&\n (expression.args[0].term.termType !== 'Literal' ||\n this.isLiteralWithCanonicalLexicalForm(expression.args[0].term)) &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType === 'Variable') {\n return {\n variable: expression.args[1].term,\n term: expression.args[0].term,\n };\n }\n if (expression.args[0].expressionType === 'term' && expression.args[0].term.termType === 'Variable' &&\n expression.args[1].expressionType === 'term' && expression.args[1].term.termType !== 'Variable' &&\n (expression.args[1].term.termType !== 'Literal' ||\n this.isLiteralWithCanonicalLexicalForm(expression.args[1].term))) {\n return {\n variable: expression.args[0].term,\n term: expression.args[1].term,\n };\n }\n }\n }\n\n /**\n * Check if the given term is a literal with datatype that where all values\n * can only have one possible lexical representation.\n * In other words, no variants of values exist that should be considered equal.\n * For example: \"01\"^xsd:number and \"1\"^xsd:number will return false.\n * @param term An RDF term.\n * @protected\n */\n protected isLiteralWithCanonicalLexicalForm(term: RDF.Term): boolean {\n if (term.termType === 'Literal') {\n switch (term.datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#string':\n case 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString':\n case 'http://www.w3.org/2001/XMLSchema#normalizedString':\n case 'http://www.w3.org/2001/XMLSchema#anyURI':\n case 'http://www.w3.org/2001/XMLSchema#base64Binary':\n case 'http://www.w3.org/2001/XMLSchema#language':\n case 'http://www.w3.org/2001/XMLSchema#Name':\n case 'http://www.w3.org/2001/XMLSchema#NCName':\n case 'http://www.w3.org/2001/XMLSchema#NMTOKEN':\n case 'http://www.w3.org/2001/XMLSchema#token':\n case 'http://www.w3.org/2001/XMLSchema#hexBinary':\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check if there is an overlap between the two given lists of variables.\n * @param varsA A list of variables.\n * @param varsB A list of variables.\n */\n public variablesIntersect(varsA: RDF.Variable[], varsB: RDF.Variable[]): boolean {\n return varsA.some(varA => varsB.some(varB => varA.equals(varB)));\n }\n\n /**\n * Check if all variables from the first list are included in the second list.\n * The second list may contain other variables as well.\n * @param varsNeedles A list of variables to search for.\n * @param varsHaystack A list of variables to search in.\n */\n public variablesSubSetOf(varsNeedles: RDF.Variable[], varsHaystack: RDF.Variable[]): boolean {\n return varsNeedles.length <= varsHaystack.length &&\n varsNeedles.every(varA => varsHaystack.some(varB => varA.equals(varB)));\n }\n\n /**\n * Check if an expression is simply 'false'.\n * @param expression An expression.\n */\n public isExpressionFalse(expression: Algebra.Expression): boolean {\n return (expression.term && expression.term.termType === 'Literal' && expression.term.value === 'false');\n }\n\n /**\n * Get all directly nested filter expressions.\n * As soon as a non-filter is found, it is returned as the input field.\n * @param op A filter expression.\n */\n public getNestedFilterExpressions(\n op: Algebra.Filter,\n ): { nestedExpressions: Algebra.Expression[]; input: Algebra.Operation } {\n if (op.input.type === Algebra.types.FILTER) {\n const childData = this.getNestedFilterExpressions(op.input);\n return { nestedExpressions: [ op.expression, ...childData.nestedExpressions ], input: childData.input };\n }\n return { nestedExpressions: [ op.expression ], input: op.input };\n }\n}\n\nexport interface IActorOptimizeQueryOperationFilterPushdownArgs extends IActorOptimizeQueryOperationArgs {\n /**\n * If filters should be pushed down as deep as possible.\n * If false, filters will only be pushed down if the source(s) accept them,\n * or if the filter is very selective.\n * @range {boolean}\n * @default {false}\n */\n aggressivePushdown: boolean;\n /**\n * The maximum number of full iterations across the query can be done for attempting to push down filters.\n * @default {10}\n */\n maxIterations: number;\n /**\n * If conjunctive filters should be split into nested filters before applying filter pushdown.\n * This can enable pushing down deeper.\n * @range {boolean}\n * @default {true}\n */\n splitConjunctive: boolean;\n /**\n * If nested filters should be merged into conjunctive filters after applying filter pushdown.\n * @range {boolean}\n * @default {true}\n */\n mergeConjunctive: boolean;\n /**\n * If filters should be pushed into left-joins.\n * @range {boolean}\n * @default {true}\n */\n pushIntoLeftJoins: boolean;\n /**\n * If simple equality filters should be pushed into patterns and paths.\n * This only applies to equality filters with terms that are not literals that have no canonical lexical form.\n * @range {boolean}\n * @default {true}\n */\n pushEqualityIntoPatterns: boolean;\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQuerySourceWrapper } from '@comunica/types';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\n\n/**\n * A comunica Group Sources Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationGroupSources extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n return { operation: await this.groupOperation(action.operation, action.context), context: action.context };\n }\n\n /**\n * Group operations belonging to the same source together, only if that source accepts the grouped operations.\n * This grouping will be done recursively for the whole operation tree.\n * Operations annotated with sources are considered leaves in the tree.\n * @param operation An operation to group.\n * @param context The action context.\n */\n public async groupOperation(operation: Algebra.Operation, context: IActionContext): Promise {\n // Return operation as-is if the operation already has a single source, or if the operation has no children.\n if (ActorQueryOperation.getOperationSource(operation) ?? !('input' in operation)) {\n return operation;\n }\n\n // If operation has a single input, move source annotation upwards if the source can handle it.\n if (!Array.isArray(operation.input)) {\n const groupedInput = await this.groupOperation(operation.input, context);\n if (groupedInput.metadata?.scopedSource) {\n const source: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(groupedInput)!;\n if (ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), operation)) {\n this.logDebug(context, `Hoist 1 source-specific operation into a single ${operation.type} operation for ${source.source.toString()}`);\n ActorQueryOperation.removeOperationSource(groupedInput);\n operation = ActorQueryOperation.assignOperationSource(operation, source);\n }\n }\n return { ...operation, input: groupedInput };\n }\n\n // If operation has multiple inputs, cluster source annotations.\n const inputs: Algebra.Operation[] = await Promise.all(operation.input\n .map(subInput => this.groupOperation(subInput, context)));\n const clusters = this.clusterOperationsWithEqualSources(inputs);\n\n // If we just have a single cluster, move the source annotation upwards\n if (clusters.length === 1) {\n const newInputs = clusters[0];\n const source = ActorQueryOperation.getOperationSource(clusters[0][0])!;\n return {\n ...await this.moveSourceAnnotationUpwardsIfPossible(operation, newInputs, source, context),\n input: newInputs,\n };\n }\n\n // If the number of clusters is equal to the number of original inputs, do nothing.\n if (clusters.length === inputs.length) {\n return { ...operation, input: inputs };\n }\n\n // If we have multiple clusters, created nested multi-operations\n let multiFactoryMethod: (children: Algebra.Operation[], flatten: boolean) => Algebra.Operation;\n switch (operation.type) {\n case Algebra.types.JOIN:\n multiFactoryMethod = AF.createJoin.bind(AF);\n break;\n case Algebra.types.UNION:\n multiFactoryMethod = AF.createUnion.bind(AF);\n break;\n case Algebra.types.ALT:\n multiFactoryMethod = AF.createAlt.bind(AF);\n break;\n case Algebra.types.SEQ:\n multiFactoryMethod = AF.createSeq.bind(AF);\n break;\n default:\n // While LeftJoin and Minus are also multi-operations,\n // these can never occur because they only have 2 inputs,\n // so these cases will always be captured by one of the 2 if-cases above\n // (clusters.length === 1 or clusters.length === input.length)\n\n // In all other cases, error\n throw new Error(`Unsupported operation '${operation.type}' detected while grouping sources`);\n }\n return await this.groupOperationMulti(clusters, multiFactoryMethod, context);\n }\n\n protected async groupOperationMulti(\n clusters: Algebra.Operation[][],\n factoryMethod: (children: Algebra.Operation[], flatten: boolean) => Algebra.Operation,\n context: IActionContext,\n ): Promise {\n let flatten = true;\n const nestedMerges = await Promise.all(clusters.map(async(cluster) => {\n const source = ActorQueryOperation.getOperationSource(cluster[0])!;\n const merged = await this\n .moveSourceAnnotationUpwardsIfPossible(factoryMethod(cluster, true), cluster, source, context);\n if (ActorQueryOperation.getOperationSource(merged)) {\n flatten = false;\n }\n return merged;\n }));\n return factoryMethod(nestedMerges, flatten);\n }\n\n /**\n * Cluster the given operations by equal source annotations.\n * @param operationsIn An array of operations to cluster.\n */\n public clusterOperationsWithEqualSources(operationsIn: Algebra.Operation[]): Algebra.Operation[][] {\n // Operations can have a source, or no source at all\n const sourceOperations: Map = new Map();\n const sourcelessOperations: Algebra.Operation[] = [];\n\n // Cluster by source\n for (const operation of operationsIn) {\n const source: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(operation)!;\n if (source) {\n if (!sourceOperations.has(source)) {\n sourceOperations.set(source, []);\n }\n sourceOperations.get(source)!.push(operation);\n } else {\n sourcelessOperations.push(operation);\n }\n }\n\n // Return clusters\n const clusters: Algebra.Operation[][] = [];\n if (sourcelessOperations.length > 0) {\n clusters.push(sourcelessOperations);\n }\n for (const [ source, operations ] of sourceOperations.entries()) {\n clusters.push(operations\n .map(operation => ActorQueryOperation.assignOperationSource(operation, source)));\n }\n return clusters;\n }\n\n /**\n * If the given source accepts the grouped operation, annotate the grouped operation with the source,\n * and remove the source annotation from the seperate input operations.\n * Otherwise, return the grouped operation unchanged.\n * @param operation A grouped operation consisting of all given input operations.\n * @param inputs An array of operations that share the same source annotation.\n * @param source The common source.\n * @param context The action context.\n */\n public async moveSourceAnnotationUpwardsIfPossible(\n operation: O,\n inputs: Algebra.Operation[],\n source: IQuerySourceWrapper | undefined,\n context: IActionContext,\n ): Promise {\n if (source && ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), operation)) {\n this.logDebug(context, `Hoist ${inputs.length} source-specific operations into a single ${operation.type} operation for ${source.source.toString()}`);\n operation = ActorQueryOperation.assignOperationSource(operation, source);\n for (const input of inputs) {\n ActorQueryOperation.removeOperationSource(input);\n }\n }\n return operation;\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join BGP Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationJoinBgp extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n join(op: Algebra.Join, factory: Factory) {\n if (op.input.every(subInput => subInput.type === 'bgp')) {\n return {\n recurse: false,\n result: factory.createBgp(op.input.flatMap(subInput => subInput.patterns)),\n };\n }\n return {\n recurse: false,\n result: op,\n };\n },\n });\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\nimport { Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join Connected Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationJoinConnected extends ActorOptimizeQueryOperation {\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n join(op: Algebra.Join, factory: Factory) {\n return {\n recurse: false,\n result: ActorOptimizeQueryOperationJoinConnected.cluster(op, factory),\n };\n },\n });\n return { operation, context: action.context };\n }\n\n /**\n * Iteratively cluster join entries based on their overlapping variables.\n * @param op A join operation.\n * @param factory An algebra factory.\n */\n public static cluster(op: Algebra.Join, factory: Factory): Algebra.Operation {\n // Initialize each entry to be in a separate cluster\n const initialClusters: IJoinCluster[] = op.input.map(subOp => ({\n inScopeVariables: Object.fromEntries(Util.inScopeVariables(subOp).map(variable => [ variable.value, true ])),\n entries: [ subOp ],\n }));\n\n // Iteratively merge clusters until they don't change anymore\n let oldClusters: IJoinCluster[];\n let newClusters: IJoinCluster[] = initialClusters;\n do {\n oldClusters = newClusters;\n newClusters = ActorOptimizeQueryOperationJoinConnected.clusterIteration(oldClusters);\n } while (oldClusters.length !== newClusters.length);\n\n // Create new join operation of latest clusters\n const subJoins = newClusters\n .map(cluster => cluster.entries.length === 1 ? cluster.entries[0] : factory.createJoin(cluster.entries));\n return subJoins.length === 1 ? subJoins[0] : factory.createJoin(subJoins, false);\n }\n\n /**\n * Perform a single clustering iteration.\n * Clusters will be joined if they have overlapping variables.\n * @param oldCluster\n */\n public static clusterIteration(oldCluster: IJoinCluster[]): IJoinCluster[] {\n const newClusters: IJoinCluster[] = [];\n\n for (const entry of oldCluster) {\n // Try to add entry to a join cluster\n let joined = false;\n for (const newEntry of newClusters) {\n if (ActorOptimizeQueryOperationJoinConnected\n .haveOverlappingVariables(entry.inScopeVariables, newEntry.inScopeVariables)) {\n newEntry.entries = [ ...newEntry.entries, ...entry.entries ];\n newEntry.inScopeVariables = { ...newEntry.inScopeVariables, ...entry.inScopeVariables };\n joined = true;\n break;\n }\n }\n\n // If none was found, create new cluster\n if (!joined) {\n newClusters.push({\n inScopeVariables: entry.inScopeVariables,\n entries: entry.entries,\n });\n }\n }\n\n return newClusters;\n }\n\n /**\n * Check if the two given variable objects are overlapping.\n * @param variablesA A variables objects.\n * @param variablesB A variables objects.\n */\n public static haveOverlappingVariables(\n variablesA: Record,\n variablesB: Record,\n ): boolean {\n for (const variableA of Object.keys(variablesA)) {\n if (variablesB[variableA]) {\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * A cluster of join entries.\n */\nexport interface IJoinCluster {\n /**\n * Union of all variables in scope within the join entries.\n */\n inScopeVariables: Record;\n /**\n * Join entries\n */\n entries: Algebra.Operation[];\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQuerySourceWrapper, MetadataBindings } from '@comunica/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory, Util } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\n\n/**\n * A comunica Prune Empty Source Operations Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationPruneEmptySourceOperations extends ActorOptimizeQueryOperation {\n private readonly useAskIfSupported: boolean;\n\n public constructor(args: IActorOptimizeQueryOperationPruneEmptySourceOperationsArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeQueryOperation): Promise {\n if (ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} does not work with top-level operation sources.`);\n }\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n let operation = action.operation;\n\n // Collect all operations with source types\n // Only consider unions of patterns or alts of links, since these are created during exhaustive source assignment.\n const collectedOperations: (Algebra.Pattern | Algebra.Link)[] = [];\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n Util.recurseOperation(operation, {\n [Algebra.types.UNION](subOperation) {\n self.collectMultiOperationInputs(subOperation.input, collectedOperations, Algebra.types.PATTERN);\n return true;\n },\n [Algebra.types.ALT](subOperation) {\n self.collectMultiOperationInputs(subOperation.input, collectedOperations, Algebra.types.LINK);\n return false;\n },\n [Algebra.types.SERVICE]() {\n return false;\n },\n });\n\n // Determine in an async manner whether or not these sources return non-empty results\n const emptyOperations: Set = new Set();\n await Promise.all(collectedOperations.map(async(collectedOperation) => {\n const checkOperation = collectedOperation.type === 'link' ?\n AF.createPattern(DF.variable('?s'), collectedOperation.iri, DF.variable('?o')) :\n collectedOperation;\n if (!await this.hasSourceResults(\n ActorQueryOperation.getOperationSource(collectedOperation)!,\n checkOperation,\n action.context,\n )) {\n emptyOperations.add(collectedOperation);\n }\n }));\n\n // Only perform next mapping if we have at least one empty operation\n if (emptyOperations.size > 0) {\n this.logDebug(action.context, `Pruning ${emptyOperations.size} source-specific operations`);\n // Rewrite operations by removing the empty children\n operation = Util.mapOperation(operation, {\n [Algebra.types.UNION](subOperation, factory) {\n return self.mapMultiOperation(subOperation, emptyOperations, children => factory.createUnion(children));\n },\n [Algebra.types.ALT](subOperation, factory) {\n return self.mapMultiOperation(subOperation, emptyOperations, children => factory.createAlt(children));\n },\n });\n\n // Identify and remove operations that have become empty now due to missing variables\n operation = Util.mapOperation(operation, {\n [Algebra.types.PROJECT](subOperation, factory) {\n // Remove projections that have become empty now due to missing variables\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation)) {\n return {\n recurse: false,\n result: factory.createUnion([]),\n };\n }\n return {\n recurse: true,\n result: subOperation,\n };\n },\n [Algebra.types.LEFT_JOIN](subOperation) {\n // Remove left joins with empty right operation\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation.input[1])) {\n return {\n recurse: true,\n result: subOperation.input[0],\n };\n }\n return {\n recurse: true,\n result: subOperation,\n };\n },\n });\n }\n\n return { operation, context: action.context };\n }\n\n protected static hasEmptyOperation(operation: Algebra.Operation): boolean {\n // If union (or alt) is empty, consider it empty (`Array.every` on an empty array always returns true)\n // But if we find a union with multiple children,\n // *all* of the children must be empty before the full operation is considered empty.\n let emptyOperation = false;\n Util.recurseOperation(operation, {\n [Algebra.types.UNION](subOperation) {\n if (subOperation.input.every(subSubOperation => ActorOptimizeQueryOperationPruneEmptySourceOperations\n .hasEmptyOperation(subSubOperation))) {\n emptyOperation = true;\n }\n return false;\n },\n [Algebra.types.ALT](subOperation) {\n if (subOperation.input.length === 0) {\n emptyOperation = true;\n }\n return false;\n },\n [Algebra.types.LEFT_JOIN](subOperation) {\n // Only recurse into left part of left-join\n if (ActorOptimizeQueryOperationPruneEmptySourceOperations.hasEmptyOperation(subOperation.input[0])) {\n emptyOperation = true;\n }\n return false;\n },\n });\n return emptyOperation;\n }\n\n protected collectMultiOperationInputs(\n inputs: Algebra.Operation[],\n collectedOperations: (Algebra.Pattern | Algebra.Link)[],\n inputType: (Algebra.Pattern | Algebra.Link)['type'],\n ): void {\n for (const input of inputs) {\n if (ActorQueryOperation.getOperationSource(input) && input.type === inputType) {\n collectedOperations.push(input);\n }\n }\n }\n\n protected mapMultiOperation(\n operation: O,\n emptyOperations: Set,\n multiOperationFactory: (input: O['input']) => Algebra.Operation,\n ): {\n result: Algebra.Operation;\n recurse: boolean;\n } {\n // Determine which operations return non-empty results\n const nonEmptyInputs = operation.input.filter(input => !emptyOperations.has(input));\n\n // Remove empty operations\n if (nonEmptyInputs.length === operation.input.length) {\n return { result: operation, recurse: true };\n }\n if (nonEmptyInputs.length === 0) {\n return { result: multiOperationFactory([]), recurse: false };\n }\n if (nonEmptyInputs.length === 1) {\n return { result: nonEmptyInputs[0], recurse: true };\n }\n return { result: multiOperationFactory(nonEmptyInputs), recurse: true };\n }\n\n /**\n * Check if the given query operation will produce at least one result in the given source.\n * @param source A query source.\n * @param input A query operation.\n * @param context The query context.\n */\n public async hasSourceResults(\n source: IQuerySourceWrapper,\n input: Algebra.Operation,\n context: IActionContext,\n ): Promise {\n // Traversal sources should never be considered empty at optimization time.\n if (source.context?.get(KeysQuerySourceIdentify.traverse)) {\n return true;\n }\n\n // Send an ASK query\n if (this.useAskIfSupported) {\n const askOperation = AF.createAsk(input);\n if (ActorQueryOperation\n .doesShapeAcceptOperation(await source.source.getSelectorShape(context), askOperation)) {\n return source.source.queryBoolean(askOperation, context);\n }\n }\n\n // Send the operation as-is and check the response cardinality\n const bindingsStream = source.source.queryBindings(input, context);\n return new Promise((resolve, reject) => {\n bindingsStream.on('error', reject);\n bindingsStream.getProperty('metadata', (metadata: MetadataBindings) => {\n bindingsStream.destroy();\n resolve(metadata.cardinality.value > 0);\n });\n });\n }\n}\n\nexport interface IActorOptimizeQueryOperationPruneEmptySourceOperationsArgs extends IActorOptimizeQueryOperationArgs {\n /**\n * If true, ASK queries will be sent to the source instead of COUNT queries to check emptiness for patterns.\n * This will only be done for sources that accept ASK queries.\n * @default {false}\n */\n useAskIfSupported: boolean;\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Rewrite Add Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteAdd extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.ADD](operationOriginal, factory) {\n // CONSTRUCT all quads from the source, and INSERT them into the destination\n const destination = operationOriginal.destination === 'DEFAULT' ?\n DF.defaultGraph() :\n operationOriginal.destination;\n const source = operationOriginal.source === 'DEFAULT' ? DF.defaultGraph() : operationOriginal.source;\n\n const result = factory.createDeleteInsert(undefined, [\n factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), destination),\n ], factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), source));\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Rewrite Copy Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteCopy extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.COPY](operationOriginal, factory) {\n // No-op if source === destination\n let result: Algebra.CompositeUpdate;\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n result = factory.createCompositeUpdate([]);\n } else {\n // COPY is equivalent to drop destination, and add\n result = factory.createCompositeUpdate([\n factory.createDrop(operationOriginal.destination, true),\n factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n ]);\n }\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type {\n IActionOptimizeQueryOperation,\n IActorOptimizeQueryOperationOutput,\n IActorOptimizeQueryOperationArgs,\n} from '@comunica/bus-optimize-query-operation';\nimport { ActorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Rewrite Move Optimize Query Operation Actor.\n */\nexport class ActorOptimizeQueryOperationRewriteMove extends ActorOptimizeQueryOperation {\n public constructor(args: IActorOptimizeQueryOperationArgs) {\n super(args);\n }\n\n public async test(_action: IActionOptimizeQueryOperation): Promise {\n return true;\n }\n\n public async run(action: IActionOptimizeQueryOperation): Promise {\n const operation = Util.mapOperation(action.operation, {\n [Algebra.types.MOVE](operationOriginal, factory) {\n // No-op if source === destination\n let result: Algebra.CompositeUpdate;\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n result = factory.createCompositeUpdate([]);\n } else {\n // MOVE is equivalent to drop destination, add, and drop source\n const updates = [\n factory.createDrop(operationOriginal.destination, true),\n factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n factory.createDrop(operationOriginal.source),\n ];\n result = factory.createCompositeUpdate(updates);\n }\n\n return {\n result,\n recurse: false,\n };\n },\n });\n\n return { operation, context: action.context };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Ask Query Operation Actor.\n */\nexport class ActorQueryOperationAsk extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'ask');\n }\n\n public async testOperation(_operation: Algebra.Ask, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Ask, context: IActionContext): Promise {\n // Call other query operations like this:\n const output: IQueryOperationResult = await this.mediatorQueryOperation.mediate(\n { operation: operation.input, context },\n );\n const { bindingsStream }: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(output);\n return { type: 'boolean', execute: async() => (await bindingsStream.take(1).toArray()).length === 1 };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL BGP operations by rewriting it as a join operator.\n */\nexport class ActorQueryOperationBgpJoin extends ActorQueryOperationTypedMediated {\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'bgp');\n }\n\n public async testOperation(_operation: Algebra.Bgp, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Bgp, context: IActionContext):\n Promise {\n return this.mediatorQueryOperation.mediate({\n operation: ActorQueryOperationBgpJoin.FACTORY.createJoin(operation.patterns),\n context,\n });\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { getTermsNested, getVariables, uniqTerms } from 'rdf-terms';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { BindingsToQuadsIterator } from './BindingsToQuadsIterator';\n\n/**\n * A comunica Construct Query Operation Actor.\n */\nexport class ActorQueryOperationConstruct extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'construct');\n }\n\n /**\n * Find all variables in a list of triple patterns.\n * @param {Algebra.Pattern[]} patterns An array of triple patterns.\n * @return {RDF.Variable[]} The variables in the triple patterns.\n */\n public static getVariables(patterns: RDF.BaseQuad[]): RDF.Variable[] {\n return uniqTerms(( []).concat\n .apply([], patterns.map(pattern => getVariables(getTermsNested(pattern)))));\n }\n\n public async testOperation(_operation: Algebra.Construct, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.Construct, context: IActionContext):\n Promise {\n // Apply a projection on our CONSTRUCT variables first, as the query may contain other variables as well.\n const variables: RDF.Variable[] = ActorQueryOperationConstruct.getVariables(operationOriginal.template);\n const operation: Algebra.Operation = { type: Algebra.types.PROJECT, input: operationOriginal.input, variables };\n\n // Evaluate the input query\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation, context }),\n );\n\n // Construct triples using the result based on the pattern.\n // If it's a DESCRIBE query don't apply the blank node localisation.\n const quadStream: AsyncIterator = new BindingsToQuadsIterator(\n operationOriginal.template,\n output.bindingsStream,\n );\n\n // Let the final metadata contain the estimated number of triples\n const metadata: (() => Promise) = () => output.metadata().then(meta => ({\n ...meta,\n order: undefined,\n cardinality: {\n type: meta.cardinality.type,\n value: meta.cardinality.value * operationOriginal.template.length,\n },\n canContainUndefs: false,\n availableOrders: undefined,\n }));\n\n return {\n metadata,\n quadStream,\n type: 'quads',\n };\n }\n}\n","import type { Bindings, BindingsStream } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator, MultiTransformIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { mapTermsNested } from 'rdf-terms';\n\nconst DF = new DataFactory();\n\n/**\n * Transforms a bindings stream into a quad stream given a quad template.\n *\n * This conforms to the SPARQL 1.1 spec on constructing triples:\n * https://www.w3.org/TR/sparql11-query/#rConstructTriples\n */\nexport class BindingsToQuadsIterator extends MultiTransformIterator {\n protected readonly template: RDF.BaseQuad[];\n protected blankNodeCounter: number;\n\n public constructor(template: RDF.BaseQuad[], bindingsStream: BindingsStream) {\n super(bindingsStream, { autoStart: false });\n this.template = template;\n this.blankNodeCounter = 0;\n }\n\n /**\n * Bind the given term.\n * If the term is a variable and the variable is bound in the bindings object,\n * return the bindings value.\n * If the term is a variable and the variable is not bound in the bindings object,\n * a falsy value is returned..\n * Otherwise, the term itself is returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Term} term An RDF term.\n * @return {RDF.Term} If the given term is not a variable, the term itself is returned.\n * If the given term is a variable, then the bound term is returned,\n * or a falsy value if it did not exist in the bindings.\n */\n public static bindTerm(bindings: Bindings, term: RDF.Term): RDF.Term | undefined {\n if (term.termType === 'Variable') {\n return bindings.get(term);\n }\n return term;\n }\n\n /**\n * Bind the given quad pattern.\n * If one of the terms was a variable AND is not bound in the bindings,\n * a falsy value will be returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad} pattern An RDF quad.\n * @return {RDF.Quad} A bound RDF quad or undefined.\n */\n public static bindQuad(bindings: Bindings, pattern: RDF.BaseQuad): RDF.Quad | undefined {\n try {\n return mapTermsNested( pattern, (term) => {\n const boundTerm = BindingsToQuadsIterator.bindTerm(bindings, term);\n if (!boundTerm) {\n throw new Error('Unbound term');\n }\n return boundTerm;\n });\n } catch {\n // Do nothing\n }\n }\n\n /**\n * Convert a blank node to a unique blank node in the given context.\n * If the given term is not a blank node, the term itself will be returned.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.Term} term The term that should be localized.\n * @return {RDF.Term} A term.\n */\n public static localizeBlankNode(blankNodeCounter: number, term: RDF.Term): RDF.Term {\n if (term.termType === 'BlankNode') {\n return DF.blankNode(`${term.value}${blankNodeCounter}`);\n }\n return term;\n }\n\n /**\n * Convert the given quad to a quad that only contains unique blank nodes.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.BaseQuad} pattern The pattern that should be localized.\n * @return {RDF.BaseQuad} A quad.\n */\n public static localizeQuad(blankNodeCounter: number, pattern: RDF.BaseQuad): RDF.BaseQuad {\n return mapTermsNested(pattern, term => BindingsToQuadsIterator.localizeBlankNode(blankNodeCounter, term));\n }\n\n /**\n * Convert the given template to a list of quads based on the given bindings.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad[]} template A list of quad patterns.\n * @param blankNodeCounter A counter value for the blank node.\n * @return {RDF.Quad[]} A list of quads.\n */\n public bindTemplate(bindings: Bindings, template: RDF.BaseQuad[], blankNodeCounter: number): RDF.Quad[] {\n const quads: RDF.BaseQuad[] = template\n // Make sure the multiple instantiations of the template contain different blank nodes, as required by SPARQL 1.1.\n .map(BindingsToQuadsIterator.localizeQuad.bind(null, blankNodeCounter))\n // Bind variables to bound terms\n .map(x => BindingsToQuadsIterator.bindQuad.bind(null, bindings)(x))\n // Remove quads that contained unbound terms, i.e., variables.\n .filter(Boolean);\n return quads;\n }\n\n public override _createTransformer(bindings: Bindings): AsyncIterator {\n return new ArrayIterator(this.bindTemplate(\n bindings,\n this.template,\n this.blankNodeCounter++,\n ), { autoStart: false });\n }\n}\n","import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { MediatorHashQuads } from '@comunica/bus-hash-quads';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Distinct Hash Query Operation Actor.\n */\nexport class ActorQueryOperationDistinctHash extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly mediatorHashQuads: MediatorHashQuads;\n\n public constructor(args: IActorQueryOperationDistinctHashArgs) {\n super(args, 'distinct');\n }\n\n public async testOperation(_operation: Algebra.Distinct, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Distinct, context: IActionContext): Promise {\n const output = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n\n // TODO: In next/major, remove undefined check when mediatorHashQuads is made required\n if (output.type === 'quads' && this.mediatorHashQuads !== undefined) {\n const outputQuads: IQueryOperationResultQuads = ActorQueryOperation.getSafeQuads(\n output,\n );\n\n const quadStream: AsyncIterator = outputQuads.quadStream.filter(await this.newHashFilterQuads(context));\n return {\n type: 'quads',\n quadStream,\n metadata: outputQuads.metadata,\n };\n }\n\n const outputBindings: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n output,\n );\n\n const bindingsStream: BindingsStream = outputBindings.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: outputBindings.metadata,\n };\n }\n\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n public async newHashFilter(context: IActionContext): Promise<(bindings: Bindings) => boolean> {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes: Record = {};\n return (bindings: Bindings) => {\n const hash: string = hashFunction(bindings);\n\n return !(hash in hashes) && (hashes[hash] = true);\n };\n }\n\n /**\n * Create a new distinct filter function to hash quads.\n * This will maintain an internal hash datastructure so that every quad object only returns true once.\n * @param context The action context.\n * @return {(quad: RDF.Quad) => boolean} A distinct filter for quads.\n */\n public async newHashFilterQuads(context: IActionContext): Promise<(quad: RDF.Quad) => boolean> {\n // TODO: In next/major, this check can be removed when mediatorHashQuads is made required\n if (this.mediatorHashQuads === undefined) {\n return _quad => true;\n }\n const { hashFunction } = await this.mediatorHashQuads.mediate({ allowHashCollisions: true, context });\n const hashes: Record = {};\n return (quad: RDF.Quad) => {\n const hash: string = hashFunction(quad);\n\n return !(hash in hashes) && (hashes[hash] = true);\n };\n }\n}\n\nexport interface IActorQueryOperationDistinctHashArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n // TODO: In next/major, this field should be made required in the next major update\n mediatorHashQuads?: MediatorHashQuads;\n}\n","import { BindingsFactory, bindingsToString } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { ExpressionError } from '@comunica/expression-evaluator';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult, IQueryOperationResultBindings } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Extend Query Operation Actor.\n *\n * See https://www.w3.org/TR/sparql11-query/#sparqlAlgebra;\n */\nexport class ActorQueryOperationExtend extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationExtendArgs) {\n super(args, 'extend');\n }\n\n public async testOperation(operation: Algebra.Extend, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Will throw error for unsupported opperations\n const _ = Boolean(new AsyncEvaluator(\n operation.expression,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n ));\n return true;\n }\n\n public async runOperation(operation: Algebra.Extend, context: IActionContext):\n Promise {\n const { expression, input, variable } = operation;\n\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: input, context }),\n );\n\n // Throw if the variable has already been bound\n if ((await output.metadata()).variables.some(innerVariable => innerVariable.equals(variable))) {\n throw new Error(`Illegal binding to variable '${variable.value}' that has already been bound`);\n }\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(expression, config);\n\n // Transform the stream by extending each Bindings with the expression result\n const transform = async(bindings: Bindings, next: any, push: (pusbBindings: Bindings) => void): Promise => {\n try {\n const result = await evaluator.evaluate(bindings);\n // Extend operation is undefined when the key already exists\n // We just override it here.\n const extended = bindings.set(variable, result);\n push(extended);\n } catch (error: unknown) {\n if (isExpressionError( error)) {\n // Errors silently don't actually extend according to the spec\n push(bindings);\n // But let's warn anyway\n this.logWarn(context, `Expression error for extend operation (${( error).message})` +\n `with bindings '${bindingsToString(bindings)}'`);\n } else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n\n // eslint-disable-next-line ts/no-misused-promises\n const bindingsStream = output.bindingsStream.transform({ autoStart: false, transform });\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const outputMetadata = await output.metadata();\n return { ...outputMetadata, variables: [ ...outputMetadata.variables, variable ]};\n },\n };\n }\n}\n\nexport interface IActorQueryOperationExtendArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory, bindingsToString } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Filter Sparqlee Query Operation Actor.\n */\nexport class ActorQueryOperationFilter extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationFilterSparqleeArgs) {\n super(args, 'filter');\n }\n\n public async testOperation(operation: Algebra.Filter, context: IActionContext): Promise {\n // Will throw error for unsupported operators\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const _ = new AsyncEvaluator(operation.expression, config);\n return true;\n }\n\n public async runOperation(operation: Algebra.Filter, context: IActionContext):\n Promise {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(operation.expression, config);\n\n const transform = async(item: Bindings, next: any, push: (bindings: Bindings) => void): Promise => {\n try {\n const result = await evaluator.evaluateAsEBV(item);\n if (result) {\n push(item);\n }\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n //\n // > Specifically, FILTERs eliminate any solutions that,\n // > when substituted into the expression, either result in\n // > an effective boolean value of false or produce an error.\n // > ...\n // > These errors have no effect outside of FILTER evaluation.\n // https://www.w3.org/TR/sparql11-query/#expressions\n if (isExpressionError( error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings: bindingsToString(item) }));\n } else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n\n // eslint-disable-next-line ts/no-misused-promises\n const bindingsStream = output.bindingsStream.transform({ transform, autoStart: false });\n return { type: 'bindings', bindingsStream, metadata: output.metadata };\n }\n}\n\nexport interface IActorQueryOperationFilterSparqleeArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica From Query Operation Actor.\n */\nexport class ActorQueryOperationFromQuad extends ActorQueryOperationTypedMediated {\n private static readonly FACTORY: Factory = new Factory();\n private static readonly ALGEBRA_TYPES: string[] = Object.keys(Algebra.types).map(key => ( Algebra.types)[key]);\n\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'from');\n }\n\n /**\n * Create a deep copy of the given operation.\n * @param {Operation} operation An operation.\n * @param {(subOperation: Operation) => Operation} recursiveCb A callback for recursive operation calls.\n * @return {Operation} The copied operation.\n */\n public static copyOperation(\n operation: Algebra.Operation,\n recursiveCb: (subOperation: Algebra.Operation) => Algebra.Operation,\n ): Algebra.Operation {\n const copiedOperation: Algebra.Operation = {};\n for (const key of Object.keys(operation)) {\n if (Array.isArray(operation[key]) && key !== 'template') {\n // We exclude the 'template' entry, as we don't want to modify the template value of construct operations\n if (key === 'variables') {\n copiedOperation[key] = operation[key];\n } else {\n copiedOperation[key] = operation[key].map(recursiveCb);\n }\n } else if (ActorQueryOperationFromQuad.ALGEBRA_TYPES.includes(operation[key].type)) {\n copiedOperation[key] = recursiveCb(operation[key]);\n } else {\n copiedOperation[key] = operation[key];\n }\n }\n return copiedOperation;\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as default graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} defaultGraphs Graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationDefaultGraph(operation: Algebra.Operation, defaultGraphs: RDF.Term[]): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n if (operation.type === 'bgp') {\n return ActorQueryOperationFromQuad.joinOperations(operation.patterns.map((pattern: Algebra.Pattern) => {\n if (pattern.graph.termType !== 'DefaultGraph') {\n return ActorQueryOperationFromQuad.FACTORY.createBgp([ pattern ]);\n }\n const bgps = defaultGraphs.map((graph: RDF.Term) =>\n ActorQueryOperationFromQuad.FACTORY.createBgp([ Object.assign(\n ActorQueryOperationFromQuad.FACTORY\n .createPattern(pattern.subject, pattern.predicate, pattern.object, graph),\n { metadata: pattern.metadata },\n ) ]));\n return ActorQueryOperationFromQuad.unionOperations(bgps);\n }));\n }\n if (operation.graph.termType !== 'DefaultGraph') {\n return operation;\n }\n const paths = defaultGraphs.map(\n (graph: RDF.Term) => {\n if (operation.type === 'path') {\n return ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n }\n return Object.assign(ActorQueryOperationFromQuad.FACTORY\n .createPattern(\n operation.subject,\n operation.predicate,\n operation.object,\n graph,\n ), { metadata: operation.metadata });\n },\n );\n return ActorQueryOperationFromQuad.unionOperations(paths);\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this.applyOperationDefaultGraph(subOperation, defaultGraphs),\n );\n }\n\n /**\n * Recursively transform the given operation to use the given graphs as named graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} namedGraphs Graph terms.\n * @param {RDF.Term[]} defaultGraphs Default graph terms.\n * @return {Operation} A new operation.\n */\n public static applyOperationNamedGraph(\n operation: Algebra.Operation,\n namedGraphs: RDF.NamedNode[],\n defaultGraphs: RDF.Term[],\n ): Algebra.Operation {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n const patternGraph: RDF.Term = operation.type === 'bgp' ? operation.patterns[0].graph : operation.graph;\n if (patternGraph.termType === 'DefaultGraph') {\n // SPARQL spec (8.2) describes that when FROM NAMED's are used without a FROM, the default graph must be empty.\n // The FROMs are transformed before this step to a named node, so this will not apply to this case anymore.\n return { type: Algebra.types.BGP, patterns: []};\n }\n if (patternGraph.termType === 'Variable') {\n if (namedGraphs.length === 1) {\n const graph: RDF.NamedNode = namedGraphs[0];\n // If the pattern graph is a variable, replace the graph and bind the variable using VALUES\n const bindings: Record = {};\n bindings[`?${patternGraph.value}`] = graph;\n const values: Algebra.Values = ActorQueryOperationFromQuad.FACTORY\n .createValues([ patternGraph ], [ bindings ]);\n\n let pattern: Algebra.Operation;\n if (operation.type === 'bgp') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createBgp(operation.patterns.map((pat: Algebra.Pattern) => ActorQueryOperationFromQuad.FACTORY\n .createPattern(pat.subject, pat.predicate, pat.object, graph)));\n } else if (operation.type === 'path') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n } else {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPattern(operation.subject, operation.predicate, operation.object, graph);\n }\n\n return ActorQueryOperationFromQuad.FACTORY.createJoin([ values, pattern ]);\n }\n // If the pattern graph is a variable, take the union of the pattern applied to each available named graph\n return ActorQueryOperationFromQuad.unionOperations(namedGraphs.map(\n (graph: RDF.NamedNode) => ActorQueryOperationFromQuad.applyOperationNamedGraph(\n operation,\n [ graph ],\n defaultGraphs,\n ),\n ));\n }\n // The pattern's graph is defined (including the default graphs)\n const isNamedGraphAvailable: boolean = [ ...namedGraphs, ...defaultGraphs ].some(\n (namedGraph: RDF.Term) => namedGraph.equals(patternGraph),\n );\n if (isNamedGraphAvailable) {\n // Return the pattern as-is if the pattern's graph was selected in a FROM NAMED\n return operation;\n }\n // No-op if the pattern's graph was not selected in a FROM NAMED.\n return { type: Algebra.types.BGP, patterns: []};\n }\n\n return ActorQueryOperationFromQuad.copyOperation(\n operation,\n (subOperation: Algebra.Operation) => this.applyOperationNamedGraph(subOperation, namedGraphs, defaultGraphs),\n );\n }\n\n /**\n * Transform the given array of operations into a join operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Join} A join operation.\n */\n public static joinOperations(operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createJoin(operations);\n }\n throw new Error('A join can only be applied on at least one operation');\n }\n\n /**\n * Transform the given array of operations into a union operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Union} A union operation.\n */\n public static unionOperations(operations: Algebra.Operation[]): Algebra.Operation {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createUnion(operations);\n }\n throw new Error('A union can only be applied on at least one operation');\n }\n\n /**\n * Transform an operation based on the default and named graphs in the pattern.\n *\n * FROM sets the default graph.\n * If multiple are available, take the union of the operation for all of them at quad-pattern level.\n *\n * FROM NAMED indicates which named graphs are available.\n * This will rewrite the query so that only triples from the given named graphs can be selected.\n *\n * @param {From} pattern A from operation.\n * @return {Operation} The transformed operation.\n */\n public static createOperation(pattern: Algebra.From): Algebra.Operation {\n let operation: Algebra.Operation = pattern.input;\n if (pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationDefaultGraph(operation, pattern.default);\n }\n if (pattern.named.length > 0 || pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationNamedGraph(operation, pattern.named, pattern.default);\n }\n return operation;\n }\n\n public async testOperation(_operation: Algebra.From, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.From,\n context: IActionContext,\n ): Promise {\n const operation: Algebra.Operation = ActorQueryOperationFromQuad.createOperation(operationOriginal);\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator } from '@comunica/expression-evaluator';\nimport type { BindingsStream, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { ArrayIterator, TransformIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { GroupsState } from './GroupsState';\n\n/**\n * A comunica Group Query Operation Actor.\n */\nexport class ActorQueryOperationGroup extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationGroupArgs) {\n super(args, 'group');\n }\n\n public async testOperation(operation: Algebra.Group, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n for (const aggregate of operation.aggregates) {\n // Will throw for unsupported expressions\n const _ = new AsyncEvaluator(\n aggregate.expression,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n );\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.Group, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Create a hash function\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n\n // Get result stream for the input query\n const { input, aggregates } = operation;\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n\n // The variables in scope are the variables on which we group, i.e. pattern.variables.\n // For 'GROUP BY ?x, ?z', this is [?x, ?z], for 'GROUP by expr(?x) as ?e' this is [?e].\n // But also in scope are the variables defined by the aggregations, since GROUP has to handle this.\n const variables = [\n ...operation.variables,\n ...aggregates.map(agg => agg.variable),\n ];\n\n const sparqleeConfig = ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n );\n\n // Wrap a new promise inside an iterator that completes when the stream has ended or when an error occurs\n const bindingsStream = new TransformIterator(() => new Promise((resolve, reject) => {\n const groups = new GroupsState(hashFunction, operation, sparqleeConfig, bindingsFactory);\n\n // Phase 2: Collect aggregator results\n // We can only return when the binding stream ends, when that happens\n // we return the identified groups. Which are nothing more than Bindings\n // of the grouping variables merged with the aggregate variables\n // eslint-disable-next-line ts/no-misused-promises\n output.bindingsStream.on('end', async() => {\n try {\n const bindingsStreamInner = new ArrayIterator(await groups.collectResults(), { autoStart: false });\n resolve(bindingsStreamInner);\n } catch (error: unknown) {\n reject(error);\n }\n });\n\n // Make sure to propagate any errors in the binding stream\n output.bindingsStream.on('error', reject);\n\n // Phase 1: Consume the stream, identify the groups and populate the aggregators.\n // We need to bind this after the 'error' and 'end' listeners to avoid the\n // stream having ended before those listeners are bound.\n output.bindingsStream.on('data', (bindings) => {\n groups.consumeBindings(bindings).catch(reject);\n });\n }), { autoStart: false });\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await output.metadata(), variables }),\n };\n }\n}\n\nexport interface IActorQueryOperationGroupArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { HashFunction } from '@comunica/bus-hash-bindings';\nimport type { IAsyncEvaluatorContext } from '@comunica/expression-evaluator';\nimport { AsyncAggregateEvaluator } from '@comunica/expression-evaluator';\nimport type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A simple type alias for strings that should be hashes of Bindings\n */\nexport type BindingsHash = string;\n\n/**\n * A state container for a single group\n *\n * @property {Bindings} bindings - The binding entries on which we group\n */\nexport interface IGroup {\n bindings: Bindings;\n aggregators: Record;\n}\n\n/**\n * A state manager for the groups constructed by consuming the bindings-stream.\n */\nexport class GroupsState {\n private readonly groups: Map;\n // We need to the promises of a group so we can await the initialisation/ creation of them.\n // Without this we could have duplicate work/ override precious work.\n private readonly groupsInitializer: Map>;\n private readonly groupVariables: Set;\n private readonly distinctHashes: null | Map>;\n private waitCounter: number;\n // Function that resolves the promise given by collectResults\n private waitResolver: (bindings: Bindings[]) => void;\n private resultHasBeenCalled: boolean;\n\n public constructor(\n private readonly hashFunction: HashFunction,\n private readonly pattern: Algebra.Group,\n private readonly sparqleeConfig: IAsyncEvaluatorContext,\n private readonly bindingsFactory: BindingsFactory,\n ) {\n this.groups = new Map();\n this.groupsInitializer = new Map();\n this.groupVariables = new Set(this.pattern.variables.map(x => x.value));\n this.waitCounter = 1;\n this.resultHasBeenCalled = false;\n }\n\n /**\n * - Consumes a stream binding\n * - Find the corresponding group and create one if need be\n * - Feeds the binding to the group's aggregators\n *\n * @param {Bindings} bindings - The Bindings to consume\n */\n public consumeBindings(bindings: Bindings): Promise {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n // We increment the counter and decrement him when put action is performed.\n this.waitCounter++;\n\n // Select the bindings on which we group\n const grouper = bindings\n .filter((_, variable) => this.groupVariables.has(variable.value));\n const groupHash = this.hashBindings(grouper);\n\n // First member of group -> create new group\n let groupInitializer: Promise | undefined = this.groupsInitializer.get(groupHash);\n\n let res: Promise;\n if (groupInitializer) {\n const groupInitializerDefined = groupInitializer;\n res = (async() => {\n const group = await groupInitializerDefined;\n await Promise.all(this.pattern.aggregates.map(async(aggregate) => {\n // Distinct handling is done in the aggregator.\n const variable = aggregate.variable.value;\n await group.aggregators[variable].put(bindings);\n }));\n })().then(async() => {\n this.subtractWaitCounterAndCollect();\n });\n } else {\n // Initialize state for all aggregators for new group\n groupInitializer = (async() => {\n const aggregators: Record = {};\n await Promise.all(this.pattern.aggregates.map(async(aggregate) => {\n const key = aggregate.variable.value;\n aggregators[key] = new AsyncAggregateEvaluator(aggregate, this.sparqleeConfig);\n await aggregators[key].put(bindings);\n }));\n\n const group = { aggregators, bindings: grouper };\n this.groups.set(groupHash, group);\n this.subtractWaitCounterAndCollect();\n return group;\n })();\n this.groupsInitializer.set(groupHash, groupInitializer);\n res = groupInitializer;\n }\n return res;\n }\n\n private subtractWaitCounterAndCollect(): void {\n if (--this.waitCounter === 0) {\n this.handleResultCollection();\n }\n }\n\n private handleResultCollection(): void {\n // Collect groups\n let rows: Bindings[] = [ ...this.groups ].map(([ _, group ]) => {\n const { bindings: groupBindings, aggregators } = group;\n\n // Collect aggregator bindings\n // If the aggregate errorred, the result will be undefined\n let returnBindings = groupBindings;\n for (const variable in aggregators) {\n const value = aggregators[variable].result();\n if (value) {\n // Filter undefined\n returnBindings = returnBindings.set(DF.variable(variable), value);\n }\n }\n\n // Merge grouping bindings and aggregator bindings\n return returnBindings;\n });\n\n // Case: No Input\n // Some aggregators still define an output on the empty input\n // Result is a single Bindings\n if (rows.length === 0 && this.groupVariables.size === 0) {\n const single: [RDF.Variable, RDF.Term][] = [];\n for (const aggregate of this.pattern.aggregates) {\n const key = aggregate.variable;\n const value = AsyncAggregateEvaluator.emptyValue(aggregate);\n if (value !== undefined) {\n single.push([ key, value ]);\n }\n }\n rows = [ this.bindingsFactory.bindings(single) ];\n }\n this.waitResolver(rows);\n }\n\n private resultCheck(): Promise | undefined {\n if (this.resultHasBeenCalled) {\n return Promise.reject(new Error('Calling any function after calling collectResult is invalid.'));\n }\n }\n\n /**\n * Collect the result of the final state. This returns a Bindings per group,\n * and a (possibly empty) Bindings in case no Bindings have been consumed yet.\n * You can only call this method once, after calling this method,\n * calling any function on this will result in an error being thrown.\n */\n public collectResults(): Promise {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n this.resultHasBeenCalled = true;\n const res = new Promise((resolve) => {\n this.waitResolver = resolve;\n });\n this.subtractWaitCounterAndCollect();\n return res;\n }\n\n /**\n * @param {Bindings} bindings - Bindings to hash\n */\n private hashBindings(bindings: Bindings): BindingsHash {\n return this.hashFunction(bindings);\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryOperationResult, IActionContext, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Join Query Operation Actor.\n */\nexport class ActorQueryOperationJoin extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationJoinArgs) {\n super(args, 'join');\n }\n\n public async testOperation(_operation: Algebra.Join, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.Join,\n context: IActionContext,\n ): Promise {\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n\n return this.mediatorJoin.mediate({ type: 'inner', entries, context });\n }\n}\n\nexport interface IActorQueryOperationJoinArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError } from '@comunica/expression-evaluator';\nimport type { IQueryOperationResult, Bindings, IActionContext, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica LeftJoin Query Operation Actor.\n */\nexport class ActorQueryOperationLeftJoin extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationLeftJoinArgs) {\n super(args, 'leftjoin');\n }\n\n public async testOperation(_operation: Algebra.LeftJoin, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.LeftJoin, context: IActionContext):\n Promise {\n // Delegate to join bus\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n const joined = await this.mediatorJoin.mediate({ type: 'optional', entries, context });\n\n // If the pattern contains an expression, filter the resulting stream\n if (operationOriginal.expression) {\n const rightMetadata = await entries[1].output.metadata();\n const expressionVariables = rightMetadata.variables;\n\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const config = { ...ActorQueryOperation.getAsyncExpressionContext(\n context,\n this.mediatorQueryOperation,\n bindingsFactory,\n ) };\n const evaluator = new AsyncEvaluator(operationOriginal.expression, config);\n const bindingsStream = joined.bindingsStream\n .transform({\n autoStart: false,\n // eslint-disable-next-line ts/no-misused-promises\n transform: async(bindings: Bindings, done: () => void, push: (item: Bindings) => void) => {\n // If variables of the right-hand entry are missing, we skip expression evaluation\n if (!expressionVariables.every(variable => bindings.has(variable.value))) {\n push(bindings);\n return done();\n }\n\n try {\n const result = await evaluator.evaluateAsEBV(bindings);\n if (result) {\n push(bindings);\n }\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // Left Join is defined in terms of Filter (https://www.w3.org/TR/sparql11-query/#defn_algJoin),\n // and Filter requires this (https://www.w3.org/TR/sparql11-query/#expressions).\n if (isExpressionError(error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings }));\n } else {\n bindingsStream.emit('error', error);\n }\n }\n done();\n },\n });\n joined.bindingsStream = bindingsStream;\n }\n\n return joined;\n }\n}\n\nexport interface IActorQueryOperationLeftJoinArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult, IJoinEntry } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Minus Query Operation Actor.\n */\nexport class ActorQueryOperationMinus extends ActorQueryOperationTypedMediated {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationMinusArgs) {\n super(args, 'minus');\n }\n\n public async testOperation(_operation: Algebra.Minus, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(\n operationOriginal: Algebra.Minus,\n context: IActionContext,\n ): Promise {\n const entries: IJoinEntry[] = (await Promise.all(operationOriginal.input\n .map(async subOperation => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n\n return this.mediatorJoin.mediate({ type: 'minus', entries, context });\n }\n}\n\nexport interface IActorQueryOperationMinusArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { SingletonIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation)\n * actor that handles SPARQL nop operations.\n */\nexport class ActorQueryOperationNop extends ActorQueryOperationTypedMediated {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationNopArgs) {\n super(args, 'nop');\n }\n\n public async testOperation(_operation: Algebra.Nop, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Nop, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n return {\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n };\n }\n}\n\nexport interface IActorQueryOperationNopArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { AsyncEvaluator, isExpressionError, orderTypes } from '@comunica/expression-evaluator';\nimport type { Bindings, IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Term } from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\nimport { SortIterator } from './SortIterator';\n\n/**\n * A comunica OrderBy Sparqlee Query Operation Actor.\n */\nexport class ActorQueryOperationOrderBy extends ActorQueryOperationTypedMediated {\n private readonly window: number;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationOrderBySparqleeArgs) {\n super(args, 'orderby');\n this.window = args.window ?? Number.POSITIVE_INFINITY;\n }\n\n public async testOperation(operation: Algebra.OrderBy, context: IActionContext): Promise {\n // Will throw error for unsupported operators\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n for (let expr of operation.expressions) {\n expr = this.extractSortExpression(expr);\n const _ = new AsyncEvaluator(\n expr,\n ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n );\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.OrderBy, context: IActionContext):\n Promise {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n\n const options = { window: this.window };\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const sparqleeConfig = {\n ...ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation, bindingsFactory),\n };\n let { bindingsStream } = output;\n\n // Sorting backwards since the first one is the most important therefore should be ordered last.\n for (let i = operation.expressions.length - 1; i >= 0; i--) {\n let expr = operation.expressions[i];\n const isAscending = this.isAscending(expr);\n expr = this.extractSortExpression(expr);\n // Transform the stream by annotating it with the expr result\n const evaluator = new AsyncEvaluator(expr, sparqleeConfig);\n interface IAnnotatedBinding {\n bindings: Bindings;\n result: Term | undefined;\n }\n\n const transform = async(bindings: Bindings, next: any, push: (result: IAnnotatedBinding) => void):\n Promise => {\n try {\n const result = await evaluator.evaluate(bindings);\n push({ bindings, result });\n } catch (error: unknown) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // I can't recall where this is defined in the spec.\n if (!isExpressionError( error)) {\n bindingsStream.emit('error', error);\n }\n push({ bindings, result: undefined });\n }\n next();\n };\n // eslint-disable-next-line ts/no-misused-promises\n const transformedStream = bindingsStream.transform({ transform });\n\n // Sort the annoted stream\n const sortedStream = new SortIterator(transformedStream, (left, right) => {\n let compare = orderTypes(left.result, right.result);\n if (!isAscending) {\n compare *= -1;\n }\n return compare;\n }, options);\n\n // Remove the annotation\n bindingsStream = sortedStream.map(({ bindings }) => bindings);\n }\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n\n // Remove descending operator if necessary\n private extractSortExpression(expr: Algebra.Expression): Algebra.Expression {\n const { expressionType, operator } = expr;\n if (expressionType !== Algebra.expressionTypes.OPERATOR) {\n return expr;\n }\n return operator === 'desc' ?\n expr.args[0] :\n expr;\n }\n\n private isAscending(expr: Algebra.Expression): boolean {\n const { expressionType, operator } = expr;\n if (expressionType !== Algebra.expressionTypes.OPERATOR) {\n return true;\n }\n return operator !== 'desc';\n }\n}\n\n/**\n * The window parameter determines how many of the elements to consider when sorting.\n */\nexport interface IActorQueryOperationOrderBySparqleeArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The size of the window for the sort iterator.\n * @range {integer}\n */\n window?: number;\n}\n","import type { AsyncIterator } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\n\n// Based on https://github.com/LinkedDataFragments/Client.js/blob/master/lib/sparql/SortIterator.js\nexport class SortIterator extends TransformIterator {\n private readonly windowLength: number;\n private readonly sort: (left: T, right: T) => number;\n private readonly sorted: T[];\n\n public constructor(source: AsyncIterator, sort: (left: T, right: T) => number, options?: any) {\n super(source, options);\n\n // The `window` parameter indicates the length of the sliding window to apply sorting\n const window: number = options && options.window;\n this.windowLength = Number.isFinite(window) && window > 0 ? window : Number.POSITIVE_INFINITY;\n this.sort = sort;\n this.sorted = [];\n }\n\n // Reads the smallest item in the current sorting window\n public override _read(count: number, done: () => void): void {\n let item;\n let { length } = this.sorted;\n // Try to read items until we reach the desired window length\n while (length !== this.windowLength) {\n item = this.source!.read();\n if (item === null) {\n break;\n }\n // Insert the item in the sorted window (smallest last)\n let left = 0;\n let right = length - 1;\n let mid;\n let order;\n while (left <= right) {\n mid = Math.trunc((left + right) / 2);\n order = this.sort(item, this.sorted[mid]);\n if (order < 0) {\n left = mid + 1;\n } else if (order > 0) {\n right = mid - 1;\n } else {\n left = mid;\n right = -1;\n }\n }\n this.sorted.splice(left, 0, item);\n length++;\n }\n // Push the smallest item in the window\n if (length === this.windowLength) {\n this._push(this.sorted.pop()!);\n }\n done();\n }\n\n // Flushes remaining data after the source has ended\n public override _flush(done: () => void): void {\n let { length } = this.sorted;\n while (length--) {\n this._push(this.sorted.pop()!);\n }\n done();\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { ActorQueryOperationUnion } from '@comunica/actor-query-operation-union';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type {\n IQueryOperationResultBindings,\n IQueryOperationResult,\n IActionContext,\n MetadataBindings,\n} from '@comunica/types';\nimport { UnionIterator } from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Alt Query Operation Actor.\n */\nexport class ActorQueryOperationPathAlt extends ActorAbstractPath {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationPathAltArgs) {\n super(args, Algebra.types.ALT);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n\n const subOperations: IQueryOperationResultBindings[] = (await Promise.all(predicate.input\n .map(subPredicate => this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY\n .createPath(operation.subject, subPredicate, operation.object, operation.graph),\n }))))\n .map(ActorQueryOperation.getSafeBindings);\n\n const bindingsStream = new UnionIterator(subOperations.map(op => op.bindingsStream), { autoStart: false });\n const metadata: (() => Promise) = () =>\n Promise.all(subOperations.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\n\nexport interface IActorQueryOperationPathAltArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Inv Query Operation Actor.\n */\nexport class ActorQueryOperationPathInv extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.INV);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n const invPath = ActorAbstractPath.FACTORY\n .createPath(operation.object, predicate.path, operation.subject, operation.graph);\n return this.mediatorQueryOperation.mediate({ operation: invPath, context });\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Link Query Operation Actor.\n */\nexport class ActorQueryOperationPathLink extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.LINK);\n }\n\n public async runOperation(\n operationOriginal: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const predicate = operationOriginal.predicate;\n const operation = Object.assign(ActorAbstractPath.FACTORY.createPattern(\n operationOriginal.subject,\n predicate.iri,\n operationOriginal.object,\n operationOriginal.graph,\n ), { metadata: predicate.metadata });\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Nps Query Operation Actor.\n */\nexport class ActorQueryOperationPathNps extends ActorAbstractPath {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, Algebra.types.NPS);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const predicate = operation.predicate;\n const blank = this.generateVariable(operation);\n\n const pattern = Object.assign(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, blank, operation.object, operation.graph), { metadata: predicate.metadata });\n const output = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: pattern, context }),\n );\n\n // Remove the generated blank nodes from the bindings\n const bindingsStream = output.bindingsStream\n .map(bindings => predicate.iris.some(iri => iri.equals(bindings.get(blank))) ? null : bindings.delete(blank));\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IQueryOperationResultBindings, Bindings, IQueryOperationResult, IActionContext } from '@comunica/types';\nimport { BufferedIterator, MultiTransformIterator, TransformIterator } from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path OneOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathOneOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathOneOrMoreArgs) {\n super(args, Algebra.types.ONE_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = operation.predicate;\n\n if (operation.subject.termType !== 'Variable' && operation.object.termType === 'Variable') {\n const objectVar = operation.object;\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n objectVar,\n operation.graph,\n context,\n false,\n bindingsFactory,\n );\n const variables = operation.graph.termType === 'Variable' ? [ objectVar, operation.graph ] : [ objectVar ];\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Get all the results of subjects with same predicate, but once, then fill in first variable for those\n const single = ActorAbstractPath.FACTORY.createDistinct(\n ActorAbstractPath.FACTORY\n .createPath(operation.subject, operation.predicate.path, operation.object, operation.graph),\n );\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n const subject = bindings.get(subjectVar);\n const object = bindings.get(objectVar);\n const graph = operation.graph.termType === 'Variable' ? bindings.get(operation.graph) : operation.graph;\n return new TransformIterator(\n async() => {\n const it = new BufferedIterator();\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject!,\n object!,\n predicate.path,\n graph!,\n context,\n termHashes,\n {},\n it,\n { count: 0 },\n bindingsFactory,\n );\n return it.transform({\n transform(item, next, push) {\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph!);\n }\n push(item);\n next();\n },\n });\n },\n { maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n const variables = operation.graph.termType === 'Variable' ?\n [ subjectVar, objectVar, operation.graph ] :\n [ subjectVar, objectVar ];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType !== 'Variable') {\n return > this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createPath(\n operation.object,\n ActorAbstractPath.FACTORY.createOneOrMorePath(\n ActorAbstractPath.FACTORY.createInv(predicate.path),\n ),\n operation.subject,\n operation.graph,\n ),\n });\n }\n // If (!sVar && !oVar)\n const variable = this.generateVariable();\n const results = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createPath(operation.subject, predicate, variable, operation.graph),\n }));\n const bindingsStream = results.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n const binding = operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await results.metadata(),\n variables: operation.graph.termType === 'Variable' ? [ operation.graph ] : [],\n }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathOneOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { Bindings, IActionContext, IQueryOperationResult, IJoinEntry } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path Seq Query Operation Actor.\n */\nexport class ActorQueryOperationPathSeq extends ActorAbstractPath {\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public constructor(args: IActorQueryOperationPathSeq) {\n super(args, Algebra.types.SEQ);\n }\n\n public async runOperation(\n operationOriginal: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const predicate = operationOriginal.predicate;\n\n let joiner: RDF.Term = operationOriginal.subject;\n const generatedVariableNames: RDF.Variable[] = [];\n const entries: IJoinEntry[] = await Promise.all(predicate.input\n .map((subPredicate, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? operationOriginal.object : this.generateVariable(operationOriginal, `b${i}`);\n const operation = ActorAbstractPath.FACTORY\n .createPath(joiner, subPredicate, nextJoiner, operationOriginal.graph);\n const output = this.mediatorQueryOperation.mediate({\n context,\n operation,\n });\n\n joiner = nextJoiner;\n if (i < predicate.input.length - 1) {\n generatedVariableNames.push(nextJoiner);\n }\n\n return { output, operation };\n })\n .map(async({ output, operation }) => ({\n output: ActorQueryOperation.getSafeBindings(await output),\n operation,\n })));\n\n const join = ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: 'inner', entries, context }));\n // Remove the generated variable from the bindings\n const bindingsStream = join.bindingsStream.transform({\n transform(item, next, push) {\n for (const generatedVariableName of generatedVariableNames) {\n item = item.delete(generatedVariableName);\n }\n push(item);\n next();\n },\n });\n\n // Remove the generated variable from the list of variables\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const joinMetadata = await join.metadata();\n const variables = joinMetadata.variables.filter(variable => !generatedVariableNames\n .some(generatedVariableName => generatedVariableName.value === variable.value));\n return { ...joinMetadata, variables };\n },\n };\n }\n}\n\nexport interface IActorQueryOperationPathSeq extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { Bindings, IQueryOperationResult, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { MultiTransformIterator, TransformIterator, EmptyIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path ZeroOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathZeroOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathZeroOrMoreArgs) {\n super(args, Algebra.types.ZERO_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = operation.predicate;\n const sources = this.getPathSources(predicate);\n\n const sVar = operation.subject.termType === 'Variable';\n const oVar = operation.object.termType === 'Variable';\n\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Query ?s ?p ?o, to get all possible namedNodes in de the db\n const predVar = this.generateVariable(operation);\n const single = this.assignPatternSources(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, predVar, operation.object, operation.graph), sources);\n const results = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n // Set with all namedNodes we have already started a predicate* search from\n const entities: Set = new Set();\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n // Get the subject and object of the triples (?s ?p ?o) and extract graph if it was a variable\n const subject: RDF.Term = bindings.get(subjectVar)!;\n const object: RDF.Term = bindings.get(objectVar)!;\n const graph: RDF.Term = operation.graph.termType === 'Variable' ?\n bindings.get(operation.graph)! :\n operation.graph;\n // Make a hash of namedNode + graph to remember from where we already started a search\n const subjectGraphHash = termToString(subject) + termToString(graph);\n const objectGraphHash = termToString(object) + termToString(graph);\n return new TransformIterator(\n async() => {\n // If no new namedNodes in this triple, return nothing\n if (entities.has(subjectGraphHash) && entities.has(objectGraphHash)) {\n return new EmptyIterator();\n }\n // Set up an iterator to which getSubjectAndObjectBindingsPredicateStar will push solutions\n const it = new BufferedIterator();\n const counter = { count: 0 };\n // If not started from this namedNode (subject in triple) in this graph, start a search\n if (!entities.has(subjectGraphHash)) {\n entities.add(subjectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject,\n subject,\n predicate.path,\n graph,\n context,\n termHashes,\n {},\n it,\n counter,\n bindingsFactory,\n );\n }\n // If not started from this namedNode (object in triple) in this graph, start a search\n if (!entities.has(objectGraphHash)) {\n entities.add(objectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n object,\n object,\n predicate.path,\n graph,\n context,\n termHashes,\n {},\n it,\n counter,\n bindingsFactory,\n );\n }\n return it.transform({\n transform(item, next, push) {\n // If the graph was a variable, fill in it's binding (we got it from the ?s ?p ?o binding)\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph);\n }\n push(item);\n next();\n },\n });\n },\n );\n },\n },\n );\n const variables: RDF.Variable[] = operation.graph.termType === 'Variable' ?\n [ subjectVar, operation.object, operation.graph ] :\n [ subjectVar, operation.object ];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (!sVar && !oVar) {\n const variable = this.generateVariable();\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n variable,\n operation.graph,\n context,\n true,\n bindingsFactory,\n );\n // Check this\n const bindingsStream = starEval.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n // Return graph binding if graph was a variable, otherwise empty binding\n const binding = operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await starEval.metadata(),\n variables: operation.graph.termType === 'Variable' ? [ operation.graph ] : [],\n }),\n };\n }\n // If (sVar || oVar)\n const subject = sVar ? operation.object : operation.subject;\n const value: RDF.Variable = (sVar ? operation.subject : operation.object);\n const pred = sVar ? ActorAbstractPath.FACTORY.createInv(predicate.path) : predicate.path;\n const starEval = await this.getObjectsPredicateStarEval(\n subject,\n pred,\n value,\n operation.graph,\n context,\n true,\n bindingsFactory,\n );\n const variables: RDF.Variable[] = operation.graph.termType === 'Variable' ? [ value, operation.graph ] : [ value ];\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathZeroOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { Bindings, IQueryOperationResult, IActionContext, BindingsStream } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport {\n SingletonIterator,\n UnionIterator,\n} from 'asynciterator';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path ZeroOrOne Query Operation Actor.\n */\nexport class ActorQueryOperationPathZeroOrOne extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathZeroOrOneArgs) {\n super(args, Algebra.types.ZERO_OR_ONE_PATH);\n }\n\n public async runOperation(\n operation: Algebra.Path,\n context: IActionContext,\n ): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const predicate = operation.predicate;\n const sources = this.getPathSources(predicate);\n\n const extra: Bindings[] = [];\n\n // Both subject and object non-variables\n if (operation.subject.termType !== 'Variable' &&\n operation.object.termType !== 'Variable' &&\n operation.subject.equals(operation.object)) {\n return {\n type: 'bindings',\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n };\n }\n\n // Check if we require a distinct path operation\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n context = distinct.context;\n\n // Create an operator that resolve to the \"One\" part\n const bindingsOne = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY\n .createPath(operation.subject, predicate.path, operation.object, operation.graph),\n }));\n\n // Determine the bindings stream based on the variable-ness of subject and object\n let bindingsStream: BindingsStream;\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Both subject and object are variables\n // To determine the \"Zero\" part, we\n // query ?s ?p ?o. FILTER ?s = ?0, to get all possible namedNodes in de the db\n const varP = this.generateVariable(operation);\n const bindingsZero = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({\n context,\n operation: ActorAbstractPath.FACTORY.createFilter(\n this.assignPatternSources(ActorAbstractPath.FACTORY\n .createPattern(operation.subject, varP, operation.object, operation.graph), sources),\n ActorAbstractPath.FACTORY.createOperatorExpression('=', [\n ActorAbstractPath.FACTORY.createTermExpression(operation.subject),\n ActorAbstractPath.FACTORY.createTermExpression(operation.object),\n ]),\n ),\n }),\n ).bindingsStream.map(bindings => bindings.delete(varP));\n bindingsStream = new UnionIterator([\n bindingsZero,\n bindingsOne.bindingsStream,\n ], { autoStart: false });\n } else {\n // If subject or object is not a variable, then determining the \"Zero\" part is simple.\n if (operation.subject.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.subject, operation.object ]]));\n }\n if (operation.object.termType === 'Variable') {\n extra.push(bindingsFactory.bindings([[ operation.object, operation.subject ]]));\n }\n\n bindingsStream = bindingsOne.bindingsStream.prepend(extra);\n }\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: bindingsOne.metadata,\n };\n }\n}\nexport interface IActorQueryOperationPathZeroOrOneArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport { BlankNodeBindingsScoped } from '@comunica/data-factory';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Project Query Operation Actor.\n */\nexport class ActorQueryOperationProject extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'project');\n }\n\n public async testOperation(_operation: Algebra.Project, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Project, context: IActionContext):\n Promise {\n // Resolve the input\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: operation.input, context }),\n );\n\n // Find all variables that should be deleted from the input stream.\n const outputMetadata = await output.metadata();\n const variables = operation.variables;\n const deleteVariables = outputMetadata.variables\n .filter(variable => !variables.some(subVariable => variable.value === subVariable.value));\n\n // Error if there are variables that are not bound in the input stream.\n const missingVariables = variables\n .filter(variable => !outputMetadata.variables.some(subVariable => variable.value === subVariable.value));\n if (missingVariables.length > 0) {\n outputMetadata.canContainUndefs = true;\n }\n\n // Make sure the project variables are the only variables that are present in the bindings.\n let bindingsStream: BindingsStream = deleteVariables.length === 0 ?\n output.bindingsStream :\n output.bindingsStream.map((bindings: Bindings) => {\n for (const deleteVariable of deleteVariables) {\n bindings = bindings.delete(deleteVariable);\n }\n return bindings;\n });\n\n // Make sure that blank nodes with same labels are not reused over different bindings, as required by SPARQL 1.1.\n // Required for the BNODE() function: https://www.w3.org/TR/sparql11-query/#func-bnode\n // When we have a scoped blank node, make sure the skolemized value is maintained.\n let blankNodeCounter = 0;\n bindingsStream = bindingsStream.map((bindings: Bindings) => {\n blankNodeCounter++;\n const scopedBlankNodesCache = new Map();\n return bindings.map((term) => {\n if (term instanceof BlankNodeBindingsScoped) {\n let scopedBlankNode = scopedBlankNodesCache.get(term.value);\n if (!scopedBlankNode) {\n scopedBlankNode = DF.blankNode(`${term.value}${blankNodeCounter}`);\n scopedBlankNodesCache.set(term.value, scopedBlankNode);\n }\n return scopedBlankNode;\n }\n return term;\n });\n });\n\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...outputMetadata, variables }),\n };\n }\n}\n","import type { MediatorHashBindings } from '@comunica/bus-hash-bindings';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n Bindings,\n BindingsStream,\n IActionContext,\n IQueryOperationResult,\n IQueryOperationResultBindings,\n} from '@comunica/types';\nimport { LRUCache } from 'lru-cache';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Reduced Hash Query Operation Actor.\n */\nexport class ActorQueryOperationReducedHash extends ActorQueryOperationTypedMediated {\n public readonly mediatorHashBindings: MediatorHashBindings;\n public readonly cacheSize: number;\n\n public constructor(args: IActorQueryOperationReducedHashArgs) {\n super(args, 'reduced');\n }\n\n public async testOperation(_operation: Algebra.Reduced, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Reduced, context: IActionContext): Promise {\n const output: IQueryOperationResultBindings = ActorQueryOperation.getSafeBindings(\n await this.mediatorQueryOperation.mediate({ operation: operation.input, context }),\n );\n const bindingsStream: BindingsStream = output.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n public async newHashFilter(context: IActionContext): Promise<(bindings: Bindings) => boolean> {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes = new LRUCache({ max: this.cacheSize });\n return (bindings: Bindings) => {\n const hash: string = hashFunction(bindings);\n if (hashes.has(hash)) {\n return false;\n }\n hashes.set(hash, true);\n return true;\n };\n }\n}\n\nexport interface IActorQueryOperationReducedHashArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorHashBindings: MediatorHashBindings;\n /**\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IActionContext, IQueryOperationResult, IQueryOperationResultBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { SingletonIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Service Query Operation Actor.\n * It unwraps the SERVICE operation and executes it on the given source.\n */\nexport class ActorQueryOperationService extends ActorQueryOperationTypedMediated {\n public readonly forceSparqlEndpoint: boolean;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n\n public constructor(args: IActorQueryOperationServiceArgs) {\n super(args, 'service');\n }\n\n public async testOperation(operation: Algebra.Service, _context: IActionContext): Promise {\n if (operation.name.termType !== 'NamedNode') {\n throw new Error(`${this.name} can only query services by IRI, while a ${operation.name.termType} was given.`);\n }\n return true;\n }\n\n public async runOperation(operation: Algebra.Service, context: IActionContext):\n Promise {\n // Identify the SERVICE target as query source\n const { querySource } = await this.mediatorQuerySourceIdentify.mediate({\n querySourceUnidentified: {\n value: operation.name.value,\n type: this.forceSparqlEndpoint ? 'sparql' : undefined,\n },\n context,\n });\n\n // Attach the source to the operation, and execute\n let output: IQueryOperationResultBindings;\n try {\n output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n operation: ActorQueryOperation.assignOperationSource(operation.input, querySource),\n context,\n }));\n } catch (error: unknown) {\n if (operation.silent) {\n // Emit a single empty binding\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n output = {\n bindingsStream: new SingletonIterator(bindingsFactory.bindings()),\n type: 'bindings',\n metadata: async() => ({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n };\n this.logWarn(context, `An error occurred when executing a SERVICE clause: ${( error).message}`);\n } else {\n throw error;\n }\n }\n\n return output;\n }\n}\n\nexport interface IActorQueryOperationServiceArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * If the SERVICE target should be assumed to be a SPARQL endpoint.\n * @default {false}\n */\n forceSparqlEndpoint: boolean;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The mediator for identifying query sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQueryOperationResult,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n IQueryOperationResultStream,\n IMetadata,\n IActionContext,\n} from '@comunica/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Slice Query Operation Actor.\n */\nexport class ActorQueryOperationSlice extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'slice');\n }\n\n public async testOperation(_operation: Algebra.Slice, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Slice, context: IActionContext):\n Promise {\n // Add limit indicator to the context, which can be used for query planning\n // eslint-disable-next-line unicorn/explicit-length-check\n if (operation.length) {\n context = context.set(KeysQueryOperation.limitIndicator, operation.length);\n }\n\n // Resolve the input\n const output: IQueryOperationResult = await this.mediatorQueryOperation\n .mediate({ operation: operation.input, context });\n\n if (output.type === 'bindings') {\n const bindingsStream = this.sliceStream(output.bindingsStream, operation);\n return {\n type: 'bindings',\n bindingsStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n\n if (output.type === 'quads') {\n const quadStream = this.sliceStream(output.quadStream, operation);\n return {\n type: 'quads',\n quadStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n\n // In all other cases, return the result as-is.\n return output;\n }\n\n // Slice the stream based on the pattern values\n private sliceStream(stream: AsyncIterator, pattern: Algebra.Slice): AsyncIterator {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength: boolean = Boolean(pattern.length) || pattern.length === 0;\n const { start } = pattern;\n const end = hasLength ? pattern.start + pattern.length! - 1 : Number.POSITIVE_INFINITY;\n return stream.transform({ offset: start, limit: Math.max(end - start + 1, 0), autoStart: false });\n }\n\n // If we find metadata, apply slicing on the total number of items\n private sliceMetadata(\n output: IQueryOperationResultStream,\n pattern: Algebra.Slice,\n ): () => Promise> {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength: boolean = Boolean(pattern.length) || pattern.length === 0;\n return () => (<() => Promise>>output.metadata)()\n .then((subMetadata) => {\n const cardinality = { ...subMetadata.cardinality };\n if (Number.isFinite(cardinality.value)) {\n cardinality.value = Math.max(0, cardinality.value - pattern.start);\n if (hasLength) {\n cardinality.value = Math.min(cardinality.value, pattern.length!);\n }\n }\n return { ...subMetadata, cardinality };\n });\n }\n}\n","import type { IActionQueryOperation, IActorQueryOperationArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { getMetadataBindings, getMetadataQuads } from '@comunica/metadata';\nimport type {\n IPhysicalQueryPlanLogger,\n IQueryOperationResult,\n IQuerySourceWrapper,\n} from '@comunica/types';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Source Query Operation Actor.\n */\nexport class ActorQueryOperationSource extends ActorQueryOperation {\n public constructor(args: IActorQueryOperationArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryOperation): Promise {\n if (!ActorQueryOperation.getOperationSource(action.operation)) {\n throw new Error(`Actor ${this.name} requires an operation with source annotation.`);\n }\n return { httpRequests: 1 };\n }\n\n public async run(action: IActionQueryOperation): Promise {\n // Log to physical plan\n const physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined = action.context\n .get(KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(\n action.operation.type,\n undefined,\n action.operation,\n action.context.get(KeysInitQuery.physicalQueryPlanNode),\n this.name,\n {},\n );\n action.context = action.context.set(KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(action.operation)!;\n const mergedContext = sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context;\n\n // Check if the operation is a CONSTRUCT query\n // We recurse because it may be wrapped in other operations such as SLICE and FROM\n let construct = false;\n Util.recurseOperation(action.operation, {\n construct(): boolean {\n construct = true;\n return false;\n },\n });\n // If so, delegate to queryQuads\n if (construct) {\n const quadStream = sourceWrapper.source.queryQuads(action.operation, mergedContext);\n const metadata = getMetadataQuads(quadStream);\n return {\n type: 'quads',\n quadStream,\n metadata,\n };\n }\n\n // eslint-disable-next-line ts/switch-exhaustiveness-check\n switch (action.operation.type) {\n case Algebra.types.ASK:\n return {\n type: 'boolean',\n execute: () => sourceWrapper.source.queryBoolean(action.operation, mergedContext),\n };\n case Algebra.types.COMPOSITE_UPDATE:\n case Algebra.types.DELETE_INSERT:\n case Algebra.types.LOAD:\n case Algebra.types.CLEAR:\n case Algebra.types.CREATE:\n case Algebra.types.DROP:\n case Algebra.types.ADD:\n case Algebra.types.MOVE:\n case Algebra.types.COPY:\n return {\n type: 'void',\n execute: () => sourceWrapper.source.queryVoid(action.operation, mergedContext),\n };\n }\n\n const bindingsStream = sourceWrapper.source.queryBindings(action.operation, mergedContext);\n const metadata = getMetadataBindings(bindingsStream);\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n BindingsStream,\n IQueryOperationResultBindings,\n IActionContext,\n IQueryOperationResult,\n MetadataBindings,\n MetadataQuads,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { UnionIterator } from 'asynciterator';\nimport { uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Union Query Operation Actor.\n */\nexport class ActorQueryOperationUnion extends ActorQueryOperationTypedMediated {\n public readonly mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n\n public constructor(args: IActorQueryOperationUnionArgs) {\n super(args, 'union');\n }\n\n /**\n * Takes the union of the given double array variables.\n * Uniqueness is guaranteed.\n * @param {string[][]} variables Double array of variables to take the union of.\n * @return {string[]} The union of the given variables.\n */\n public static unionVariables(variables: RDF.Variable[][]): RDF.Variable[] {\n return uniqTerms(variables.flat());\n }\n\n /**\n * Takes the union of the given metadata array.\n * It will ensure that the cardinality metadata value is properly calculated.\n * @param {{[p: string]: any}[]} metadatas Array of metadata.\n * @param bindings If the union of the variables field should also be taken.\n * @param context The action context\n * @param mediatorRdfMetadataAccumulate Mediator for metadata accumulation\n * @return {{[p: string]: any}} Union of the metadata.\n */\n public static async unionMetadata<\n Bindings extends boolean,\n M extends (Bindings extends true ? MetadataBindings : MetadataQuads),\n >(\n metadatas: M[],\n bindings: Bindings,\n context: IActionContext,\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate,\n // eslint-disable-next-line function-paren-newline\n ): Promise {\n let accumulatedMetadata: M = (await mediatorRdfMetadataAccumulate\n .mediate({ mode: 'initialize', context })).metadata;\n\n // Accumulate cardinality\n for (const appendingMetadata of metadatas) {\n accumulatedMetadata = {\n ...appendingMetadata,\n ...(await mediatorRdfMetadataAccumulate\n .mediate({\n mode: 'append',\n accumulatedMetadata: accumulatedMetadata,\n appendingMetadata: appendingMetadata,\n context,\n })).metadata,\n };\n }\n\n // Create new metadata state\n accumulatedMetadata.state = new MetadataValidationState();\n\n // Propagate metadata invalidations\n const invalidateListener = (): void => accumulatedMetadata.state.invalidate();\n for (const metadata of metadatas) {\n metadata.state.addInvalidateListener(invalidateListener);\n }\n\n // Union variables\n if (bindings) {\n accumulatedMetadata.variables = ActorQueryOperationUnion\n .unionVariables(metadatas.map(metadata => metadata.variables));\n }\n\n return accumulatedMetadata;\n }\n\n public async testOperation(_operation: Algebra.Union, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Union, context: IActionContext):\n Promise {\n // Determine the type over which we are taking a union\n const outputsRaw = await Promise.all(operation.input\n .map(subOperation => this.mediatorQueryOperation.mediate({ operation: subOperation, context })));\n let outputType: string | undefined;\n for (const output of outputsRaw) {\n if (outputType === undefined) {\n outputType = output.type;\n } else if (outputType !== output.type) {\n throw new Error(`Unable to union ${outputType} and ${output.type}`);\n }\n }\n\n // Handle bindings\n if (outputType === 'bindings' || operation.input.length === 0) {\n const outputs: IQueryOperationResultBindings[] = outputsRaw.map(ActorQueryOperation.getSafeBindings);\n\n const bindingsStream: BindingsStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultBindings) => output.bindingsStream,\n ), { autoStart: false });\n\n const metadata: () => Promise = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, true, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'bindings', bindingsStream, metadata };\n }\n\n // Handle quads\n if (outputType === 'quads') {\n const outputs: IQueryOperationResultQuads[] = outputsRaw.map(ActorQueryOperation.getSafeQuads);\n\n const quadStream = new UnionIterator(outputs.map(\n (output: IQueryOperationResultQuads) => output.quadStream,\n ), { autoStart: false });\n\n const metadata: () => Promise = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion\n .unionMetadata(subMeta, false, context, this.mediatorRdfMetadataAccumulate));\n return { type: 'quads', quadStream, metadata };\n }\n\n // Throw otherwise\n throw new Error(`Unable to union ${outputType}`);\n }\n}\n\nexport interface IActorQueryOperationUnionArgs extends IActorQueryOperationTypedMediatedArgs {\n mediatorRdfMetadataAccumulate: MediatorRdfMetadataAccumulate;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type {\n MediatorRdfUpdateQuads,\n} from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL clear operations.\n */\nexport class ActorQueryOperationClear extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationClearArgs) {\n super(args, 'clear');\n }\n\n public async testOperation(operation: Algebra.Clear, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Clear, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n let graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n } else if (typeof operation.source === 'string') {\n graphs = operation.source;\n } else {\n graphs = [ operation.source ];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: false,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationClearArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Update CompositeUpdate Query Operation Actor.\n */\nexport class ActorQueryOperationUpdateCompositeUpdate\n extends ActorQueryOperationTypedMediated {\n public constructor(args: IActorQueryOperationTypedMediatedArgs) {\n super(args, 'compositeupdate');\n }\n\n public async testOperation(\n operation: Algebra.CompositeUpdate,\n context: IActionContext,\n ): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operationOriginal: Algebra.CompositeUpdate, context: IActionContext):\n Promise {\n const execute = (): Promise => (async(): Promise => {\n // Execute update operations in sequence\n for (const operation of operationOriginal.updates) {\n const subResult = ActorQueryOperation\n .getSafeVoid(await this.mediatorQueryOperation.mediate({ operation, context }));\n await subResult.execute();\n }\n })();\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor that\n * handles SPARQL create operations.\n */\nexport class ActorQueryOperationCreate extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationCreateArgs) {\n super(args, 'create');\n }\n\n public async testOperation(operation: Algebra.Create, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Create, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n const { execute } = await this.mediatorUpdateQuads.mediate({\n createGraphs: {\n graphs: [ operation.source ],\n requireNonExistence: !operation.silent,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationCreateArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import { BindingsToQuadsIterator } from '@comunica/actor-query-operation-construct';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport {\n ActorQueryOperation,\n ActorQueryOperationTypedMediated,\n} from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryOperationResult, BindingsStream, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Update DeleteInsert Query Operation Actor.\n */\nexport class ActorQueryOperationUpdateDeleteInsert extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n protected blankNodeCounter = 0;\n\n public constructor(args: IActorQueryOperationUpdateDeleteInsertArgs) {\n super(args, 'deleteinsert');\n }\n\n public async testOperation(\n operation: Algebra.DeleteInsert,\n context: IActionContext,\n ): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.DeleteInsert, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n // Evaluate the where clause\n const whereBindings: BindingsStream = operation.where ?\n ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation\n .mediate({ operation: operation.where, context })).bindingsStream :\n new ArrayIterator([ bindingsFactory.bindings() ], { autoStart: false });\n\n // Construct triples using the result based on the pattern.\n let quadStreamInsert: AsyncIterator | undefined;\n let quadStreamDelete: AsyncIterator | undefined;\n if (operation.insert) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamInsert = new BindingsToQuadsIterator(\n operation.insert.map(BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)),\n whereBindings.clone(),\n );\n this.blankNodeCounter++;\n }\n if (operation.delete) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamDelete = new BindingsToQuadsIterator(\n operation.delete.map(BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)),\n whereBindings.clone(),\n );\n this.blankNodeCounter++;\n }\n\n // Evaluate the required modifications\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert,\n quadStreamDelete,\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationUpdateDeleteInsertArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL drop operations.\n */\nexport class ActorQueryOperationDrop extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n\n public constructor(args: IActorQueryOperationDropArgs) {\n super(args, 'drop');\n }\n\n public async testOperation(operation: Algebra.Drop, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Drop, context: IActionContext):\n Promise {\n // Delegate to update-quads bus\n let graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[];\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n } else if (typeof operation.source === 'string') {\n graphs = operation.source;\n } else {\n graphs = [ operation.source ];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: true,\n },\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationDropArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n}\n","import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, ActorQueryOperationTypedMediated } from '@comunica/bus-query-operation';\nimport type { MediatorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { MediatorRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResult } from '@comunica/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL load operations.\n */\nexport class ActorQueryOperationLoad extends ActorQueryOperationTypedMediated {\n public readonly mediatorUpdateQuads: MediatorRdfUpdateQuads;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n\n private readonly factory: Factory;\n private readonly constructOperation: Algebra.Construct;\n\n public constructor(args: IActorQueryOperationLoadArgs) {\n super(args, 'load');\n this.factory = new Factory();\n }\n\n public async testOperation(operation: Algebra.Load, context: IActionContext): Promise {\n ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n\n public async runOperation(operation: Algebra.Load, context: IActionContext):\n Promise {\n // Determine query source\n let subContext = context;\n if (operation.silent) {\n subContext = subContext.set(KeysInitQuery.lenient, true);\n }\n const { querySource } = await this.mediatorQuerySourceIdentify.mediate({\n querySourceUnidentified: { value: operation.source.value },\n context: subContext,\n });\n\n // Create CONSTRUCT query on the given source\n const output = ActorQueryOperationLoad.getSafeQuads(await this.mediatorQueryOperation.mediate({\n operation: this.factory.createConstruct(\n ActorQueryOperation.assignOperationSource(\n this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')),\n querySource,\n ),\n [ this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')) ],\n ),\n context: subContext,\n }));\n\n // Determine quad stream to insert\n let quadStream = output.quadStream;\n if (operation.destination) {\n quadStream = quadStream.map(quad => DF.quad(quad.subject, quad.predicate, quad.object, operation.destination));\n }\n\n // Insert quad stream\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert: quadStream,\n context,\n });\n\n return {\n type: 'void',\n execute,\n };\n }\n}\n\nexport interface IActorQueryOperationLoadArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * The RDF Update Quads mediator\n */\n mediatorUpdateQuads: MediatorRdfUpdateQuads;\n /**\n * Mediator for identifying load sources.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperationTyped } from '@comunica/bus-query-operation';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQueryOperationResult,\n BindingsStream,\n Bindings,\n IActionContext,\n MetadataBindings,\n} from '@comunica/types';\nimport { ArrayIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nconst DF = new DataFactory();\n\n/**\n * A comunica Values Query Operation Actor.\n */\nexport class ActorQueryOperationValues extends ActorQueryOperationTyped {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationUpdateDeleteInsertArgs) {\n super(args, 'values');\n }\n\n public async testOperation(_operation: Algebra.Values, _context: IActionContext): Promise {\n return true;\n }\n\n public async runOperation(operation: Algebra.Values, context: IActionContext):\n Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, context);\n const bindingsStream: BindingsStream = new ArrayIterator(operation.bindings\n .map(x => bindingsFactory.bindings(Object.entries(x)\n .map(([ key, value ]) => [ DF.variable(key.slice(1)), value ]))));\n const variables = operation.variables;\n const metadata = (): Promise => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: operation.bindings.length },\n canContainUndefs: operation.bindings.some(bindings => variables.some(variable => !(`?${variable.value}` in bindings))),\n variables,\n });\n return { type: 'bindings', bindingsStream, metadata };\n }\n}\n\nexport interface IActorQueryOperationUpdateDeleteInsertArgs extends\n IActorArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActionQueryParse, IActorQueryParseArgs, IActorQueryParseOutput } from '@comunica/bus-query-parse';\nimport { ActorQueryParse } from '@comunica/bus-query-parse';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { Converter } from 'graphql-to-sparql';\n\n/**\n * A comunica GraphQL SPARQL Parse Actor.\n */\nexport class ActorQueryParseGraphql extends ActorQueryParse {\n private readonly graphqlToSparql: Converter;\n\n public constructor(args: IActorQueryParseArgs) {\n super(args);\n this.graphqlToSparql = new Converter({ requireContext: true });\n }\n\n public async test(action: IActionQueryParse): Promise {\n if (action.queryFormat?.language !== 'graphql') {\n throw new Error('This actor can only parse GraphQL queries');\n }\n return true;\n }\n\n public async run(action: IActionQueryParse): Promise {\n const context: any = action.context.get(KeysInitQuery.jsonLdContext) || {};\n const options = {\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n singularizeVariables: action.context.get(KeysInitQuery.graphqlSingularizeVariables),\n };\n return { operation: await this.graphqlToSparql.graphqlToSparqlAlgebra(action.query, context, options) };\n }\n}\n","import type { IActionQueryParse, IActorQueryParseArgs, IActorQueryParseOutput } from '@comunica/bus-query-parse';\nimport { ActorQueryParse } from '@comunica/bus-query-parse';\nimport type { IActorTest } from '@comunica/core';\nimport { translate } from 'sparqlalgebrajs';\nimport { Parser as SparqlParser } from 'sparqljs';\n\n/**\n * A comunica Algebra SPARQL Parse Actor.\n */\nexport class ActorQueryParseSparql extends ActorQueryParse {\n public readonly prefixes: Record;\n\n public constructor(args: IActorQueryParseSparqlArgs) {\n super(args);\n this.prefixes = Object.freeze(this.prefixes);\n }\n\n public async test(action: IActionQueryParse): Promise {\n if (action.queryFormat && action.queryFormat.language !== 'sparql') {\n throw new Error('This actor can only parse SPARQL queries');\n }\n return true;\n }\n\n public async run(action: IActionQueryParse): Promise {\n const parser = new SparqlParser({ prefixes: this.prefixes, baseIRI: action.baseIRI, sparqlStar: true });\n const parsedSyntax = parser.parse(action.query);\n const baseIRI = parsedSyntax.type === 'query' ? parsedSyntax.base : undefined;\n return {\n baseIRI,\n operation: translate(parsedSyntax, {\n quads: true,\n prefixes: this.prefixes,\n blankToVariable: true,\n baseIRI: action.baseIRI,\n }),\n };\n }\n}\n\nexport interface IActorQueryParseSparqlArgs extends IActorQueryParseArgs {\n /**\n * Default prefixes to use\n * @range {json}\n * @default {{\n * \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\n * \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\",\n * \"owl\": \"http://www.w3.org/2002/07/owl#\",\n * \"xsd\": \"http://www.w3.org/2001/XMLSchema#\",\n * \"dc\": \"http://purl.org/dc/terms/\",\n * \"dcterms\": \"http://purl.org/dc/terms/\",\n * \"dc11\": \"http://purl.org/dc/elements/1.1/\",\n * \"foaf\": \"http://xmlns.com/foaf/0.1/\",\n * \"geo\": \"http://www.w3.org/2003/01/geo/wgs84_pos#\",\n * \"dbpedia\": \"http://dbpedia.org/resource/\",\n * \"dbpedia-owl\": \"http://dbpedia.org/ontology/\",\n * \"dbpprop\": \"http://dbpedia.org/property/\",\n * \"schema\": \"http://schema.org/\",\n * \"skos\": \"http://www.w3.org/2008/05/skos#\"\n * }}\n */\n prefixes?: Record;\n}\n","import type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\n\n/**\n * A comunica Explain Logical Query Process Actor.\n */\nexport class ActorQueryProcessExplainLogical extends ActorQueryProcess {\n public readonly queryProcessor: IQueryProcessSequential;\n\n public constructor(args: IActorQueryProcessExplainLogicalArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n if ((action.context.get(KeysInitQuery.explain) ||\n action.context.get(new ActionContextKey('explain'))) !== 'logical') {\n throw new Error(`${this.name} can only explain in 'logical' mode.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Parse and optimize the query\n let { operation, context } = await this.queryProcessor.parse(action.query, action.context);\n ({ operation, context } = await this.queryProcessor.optimize(operation, context));\n\n return {\n result: {\n explain: true,\n type: 'logical',\n data: operation,\n },\n };\n }\n}\n\nexport interface IActorQueryProcessExplainLogicalArgs extends IActorQueryProcessArgs {\n queryProcessor: IQueryProcessSequential;\n}\n","import type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\n\n/**\n * A comunica Explain Parsed Query Process Actor.\n */\nexport class ActorQueryProcessExplainParsed extends ActorQueryProcess {\n public readonly queryProcessor: IQueryProcessSequential;\n\n public constructor(args: IActorQueryProcessExplainParsedArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n if ((action.context.get(KeysInitQuery.explain) ||\n action.context.get(new ActionContextKey('explain'))) !== 'parsed') {\n throw new Error(`${this.name} can only explain in 'parsed' mode.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Parse the query\n const { operation } = await this.queryProcessor.parse(action.query, action.context);\n\n return {\n result: {\n explain: true,\n type: 'parsed',\n data: operation,\n },\n };\n }\n}\n\nexport interface IActorQueryProcessExplainParsedArgs extends IActorQueryProcessArgs {\n queryProcessor: IQueryProcessSequential;\n}\n","import type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport { MemoryPhysicalQueryPlanLogger } from './MemoryPhysicalQueryPlanLogger';\n\n/**\n * A comunica Explain Physical Query Process Actor.\n */\nexport class ActorQueryProcessExplainPhysical extends ActorQueryProcess {\n public readonly queryProcessor: IQueryProcessSequential;\n\n public constructor(args: IActorQueryProcessExplainPhysicalArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n const mode = (action.context.get(KeysInitQuery.explain) || action.context.get(new ActionContextKey('explain')));\n if (mode !== 'physical' && mode !== 'physical-json') {\n throw new Error(`${this.name} can only explain in 'physical' or 'physical-json' mode.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Run all query processing steps in sequence\n\n let { operation, context } = await this.queryProcessor.parse(action.query, action.context);\n ({ operation, context } = await this.queryProcessor.optimize(operation, context));\n\n // If we need a physical query plan, store a physical query plan logger in the context, and collect it after exec\n const physicalQueryPlanLogger = new MemoryPhysicalQueryPlanLogger();\n context = context.set(KeysInitQuery.physicalQueryPlanLogger, physicalQueryPlanLogger);\n\n const output = await this.queryProcessor.evaluate(operation, context);\n\n // Make sure the whole result is produced\n switch (output.type) {\n case 'bindings':\n await output.bindingsStream.toArray();\n break;\n case 'quads':\n await output.quadStream.toArray();\n break;\n case 'boolean':\n await output.execute();\n break;\n case 'void':\n await output.execute();\n break;\n }\n\n const mode: 'physical' | 'physical-json' = (action.context.get(KeysInitQuery.explain) ??\n action.context.getSafe(new ActionContextKey('explain')));\n return {\n result: {\n explain: true,\n type: mode,\n data: mode === 'physical' ? physicalQueryPlanLogger.toCompactString() : physicalQueryPlanLogger.toJson(),\n },\n };\n }\n}\n\nexport interface IActorQueryProcessExplainPhysicalArgs extends IActorQueryProcessArgs {\n queryProcessor: IQueryProcessSequential;\n}\n","import type { IPhysicalQueryPlanLogger, IPlanNode } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A physical query plan logger that stores everything in memory.\n */\nexport class MemoryPhysicalQueryPlanLogger implements IPhysicalQueryPlanLogger {\n private readonly planNodes: Map;\n private rootNode: IPlanNode | undefined;\n\n public constructor() {\n this.planNodes = new Map();\n }\n\n public logOperation(\n logicalOperator: string,\n physicalOperator: string | undefined,\n node: any,\n parentNode: any,\n actor: string,\n metadata: any,\n ): void {\n const planNode: IPlanNode = {\n actor,\n logicalOperator,\n physicalOperator,\n rawNode: node,\n children: [],\n metadata,\n };\n this.planNodes.set(node, planNode);\n\n if (this.rootNode) {\n if (!parentNode) {\n throw new Error(`Detected more than one parent-less node`);\n }\n const planParentNode = this.planNodes.get(parentNode);\n if (!planParentNode) {\n throw new Error(`Could not find parent node`);\n }\n planParentNode.children.push(planNode);\n } else {\n if (parentNode) {\n throw new Error(`No root node has been set yet, while a parent is being referenced`);\n }\n this.rootNode = planNode;\n }\n }\n\n public stashChildren(node: any, filter?: (planNodeFilter: IPlanNode) => boolean): void {\n const planNode = this.planNodes.get(node);\n if (!planNode) {\n throw new Error(`Could not find plan node`);\n }\n planNode.children = filter ? planNode.children.filter(filter) : [];\n }\n\n public unstashChild(\n node: any,\n parentNode: any,\n ): void {\n const planNode = this.planNodes.get(node);\n if (planNode) {\n const planParentNode = this.planNodes.get(parentNode);\n if (!planParentNode) {\n throw new Error(`Could not find plan parent node`);\n }\n planParentNode.children.push(planNode);\n }\n }\n\n public appendMetadata(\n node: any,\n metadata: any,\n ): void {\n const planNode = this.planNodes.get(node);\n if (planNode) {\n planNode.metadata = {\n ...planNode.metadata,\n ...metadata,\n };\n }\n }\n\n public toJson(): IPlanNodeJson | Record {\n return this.rootNode ? this.planNodeToJson(this.rootNode) : {};\n }\n\n private planNodeToJson(node: IPlanNode): IPlanNodeJson {\n const data: IPlanNodeJson = {\n logical: node.logicalOperator,\n physical: node.physicalOperator,\n ...this.getLogicalMetadata(node.rawNode),\n ...this.compactMetadata(node.metadata),\n };\n\n if (node.children.length > 0) {\n data.children = node.children.map(child => this.planNodeToJson(child));\n }\n\n // Special case: compact children for bind joins.\n if (data.physical === 'bind' && data.children) {\n // Group children by query plan format\n const childrenGrouped: Record = {};\n for (const child of data.children) {\n const lastSubChild = child.children?.at(-1) ?? child;\n const key = this.getPlanHash(lastSubChild).join(',');\n if (!childrenGrouped[key]) {\n childrenGrouped[key] = [];\n }\n childrenGrouped[key].push(child);\n }\n\n // Compact query plan occurrences\n const childrenCompact: IPlanNodeJsonChildCompact[] = [];\n for (const children of Object.values(childrenGrouped)) {\n childrenCompact.push({\n occurrences: children.length,\n firstOccurrence: children[0],\n });\n }\n\n // Replace children with compacted representation\n data.childrenCompact = childrenCompact;\n delete data.children;\n }\n\n return data;\n }\n\n private getPlanHash(node: IPlanNodeJson): string[] {\n let entries = [ `${node.logical}-${node.physical}` ];\n if (node.children) {\n entries = [\n ...entries,\n ...node.children.flatMap(child => this.getPlanHash(child)),\n ];\n } else if (node.childrenCompact) {\n entries = [\n ...entries,\n ...node.childrenCompact.flatMap(child => this.getPlanHash(child.firstOccurrence)),\n ];\n }\n return entries;\n }\n\n private compactMetadata(metadata: any): any {\n return Object.fromEntries(Object.entries(metadata)\n .map(([ key, value ]) => [ key, this.compactMetadataValue(value) ]));\n }\n\n private compactMetadataValue(value: any): any {\n return value && typeof value === 'object' && 'termType' in value ? this.getLogicalMetadata(value) : value;\n }\n\n private getLogicalMetadata(rawNode: any): IPlanNodeJsonLogicalMetadata {\n const data: IPlanNodeJsonLogicalMetadata = {};\n\n if ('type' in rawNode) {\n const operation: Algebra.Operation = rawNode;\n\n if (operation.metadata?.scopedSource) {\n data.source = ( operation.metadata.scopedSource).source.toString();\n }\n\n // eslint-disable-next-line ts/switch-exhaustiveness-check\n switch (operation.type) {\n case 'pattern':\n data.pattern = this.quadToString(operation);\n break;\n case 'project':\n data.variables = operation.variables.map(variable => variable.value);\n break;\n }\n }\n\n return data;\n }\n\n private quadToString(quad: RDF.BaseQuad): string {\n return `${termToString(quad.subject)} ${termToString(quad.predicate)} ${termToString(quad.object)}${quad.graph.termType === 'DefaultGraph' ? '' : ` ${termToString(quad.graph)}`}`;\n }\n\n public toCompactString(): string {\n const node = this.toJson();\n const lines: string[] = [];\n const sources: Map = new Map();\n\n if ('logical' in node) {\n this.nodeToCompactString(lines, sources, '', node);\n } else {\n lines.push('Empty');\n }\n\n if (sources.size > 0) {\n lines.push('');\n lines.push('sources:');\n for (const [ key, id ] of sources.entries()) {\n lines.push(` ${id}: ${key}`);\n }\n }\n\n return lines.join('\\n');\n }\n\n public nodeToCompactString(\n lines: string[],\n sources: Map,\n indent: string,\n node: IPlanNodeJson,\n metadata?: string,\n ): void {\n let sourceId: number | undefined;\n if (node.source) {\n sourceId = sources.get(node.source);\n if (sourceId === undefined) {\n sourceId = sources.size;\n sources.set(node.source, sourceId);\n }\n }\n\n lines.push(`${\n indent}${\n node.logical}${\n node.physical ? `(${node.physical})` : ''}${\n node.pattern ? ` (${node.pattern})` : ''}${\n node.variables ? ` (${node.variables.join(',')})` : ''}${\n node.bindOperation ? ` bindOperation:(${node.bindOperation.pattern}) bindCardEst:${node.bindOperationCardinality.type === 'estimate' ? '~' : ''}${numberToString(node.bindOperationCardinality.value)}` : ''}${\n node.cardinality ? ` cardEst:${node.cardinality.type === 'estimate' ? '~' : ''}${numberToString(node.cardinality.value)}` : ''}${\n node.source ? ` src:${sourceId}` : ''}${\n node.cardinalityReal ? ` cardReal:${node.cardinalityReal}` : ''}${\n node.timeSelf ? ` timeSelf:${numberToString(node.timeSelf)}ms` : ''}${\n node.timeLife ? ` timeLife:${numberToString(node.timeLife)}ms` : ''}${\n metadata ? ` ${metadata}` : ''}`);\n for (const child of node.children ?? []) {\n this.nodeToCompactString(lines, sources, `${indent} `, child);\n }\n for (const child of node.childrenCompact ?? []) {\n this.nodeToCompactString(lines, sources, `${indent} `, child.firstOccurrence, `compacted-occurrences:${child.occurrences}`);\n }\n }\n}\n\nexport function numberToString(value: number): string {\n return value.toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 3 });\n}\n\ninterface IPlanNodeJson extends IPlanNodeJsonLogicalMetadata {\n logical: string;\n physical?: string;\n [metadataKey: string]: any;\n children?: IPlanNodeJson[];\n childrenCompact?: IPlanNodeJsonChildCompact[];\n}\n\ninterface IPlanNodeJsonChildCompact {\n occurrences: number;\n firstOccurrence: IPlanNodeJson;\n}\n\ninterface IPlanNodeJsonLogicalMetadata {\n pattern?: string;\n source?: string;\n variables?: string[];\n cardinality?: RDF.QueryResultCardinality;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { materializeOperation } from '@comunica/bus-query-operation';\nimport type { MediatorQueryParse } from '@comunica/bus-query-parse';\nimport type {\n IActionQueryProcess,\n IActorQueryProcessOutput,\n IActorQueryProcessArgs,\n IQueryProcessSequential,\n IQueryProcessSequentialOutput,\n} from '@comunica/bus-query-process';\nimport {\n ActorQueryProcess,\n} from '@comunica/bus-query-process';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContextKey } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n QueryFormatType,\n} from '@comunica/types';\n\nimport type * as RDF from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Sequential Query Process Actor.\n */\nexport class ActorQueryProcessSequential extends ActorQueryProcess implements IQueryProcessSequential {\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly mediatorQueryParse: MediatorQueryParse;\n public readonly mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryProcessSequentialArgs) {\n super(args);\n }\n\n public async test(action: IActionQueryProcess): Promise {\n if (action.context.get(KeysInitQuery.explain) || action.context.get(new ActionContextKey('explain'))) {\n throw new Error(`${this.name} is not able to explain queries.`);\n }\n return true;\n }\n\n public async run(action: IActionQueryProcess): Promise {\n // Run all query processing steps in sequence\n let { operation, context } = await this.parse(action.query, action.context);\n ({ operation, context } = await this.optimize(operation, context));\n const output = await this.evaluate(operation, context);\n\n return { result: output };\n }\n\n public async parse(query: QueryFormatType, context: IActionContext): Promise {\n // Pre-processing the context\n context = (await this.mediatorContextPreprocess.mediate({ context, initialize: true })).context;\n\n // Parse query\n let operation: Algebra.Operation;\n if (typeof query === 'string') {\n // Save the original query string in the context\n context = context.set(KeysInitQuery.queryString, query);\n\n const baseIRI: string | undefined = context.get(KeysInitQuery.baseIRI);\n const queryFormat: RDF.QueryFormat = context.get(KeysInitQuery.queryFormat)!;\n const queryParseOutput = await this.mediatorQueryParse.mediate({ context, query, queryFormat, baseIRI });\n operation = queryParseOutput.operation;\n // Update the baseIRI in the context if the query modified it.\n if (queryParseOutput.baseIRI) {\n context = context.set(KeysInitQuery.baseIRI, queryParseOutput.baseIRI);\n }\n } else {\n operation = query;\n }\n\n // Apply initial bindings in context\n if (context.has(KeysInitQuery.initialBindings)) {\n const bindingsFactory = await BindingsFactory\n .create(this.mediatorMergeBindingsContext, context);\n operation = materializeOperation(operation, context.get(KeysInitQuery.initialBindings)!, bindingsFactory);\n\n // Delete the query string from the context, since our initial query might have changed\n context = context.delete(KeysInitQuery.queryString);\n }\n\n return { operation, context };\n }\n\n public async optimize(operation: Algebra.Operation, context: IActionContext): Promise {\n // Save initial query in context\n context = context.set(KeysInitQuery.query, operation);\n\n ({ operation, context } = await this.mediatorOptimizeQueryOperation.mediate({ context, operation }));\n\n // Save original query in context\n context = context.set(KeysInitQuery.query, operation);\n\n return { operation, context };\n }\n\n public async evaluate(operation: Algebra.Operation, context: IActionContext): Promise {\n const output = await this.mediatorQueryOperation.mediate({ context, operation });\n output.context = context;\n return output;\n }\n}\n\nexport interface IActorQueryProcessSequentialArgs extends IActorQueryProcessArgs {\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n /**\n * The query parse mediator\n */\n mediatorQueryParse: MediatorQueryParse;\n /**\n * The query operation optimize mediator\n */\n mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport { wrap } from 'asynciterator';\nimport * as RdfString from 'rdf-string';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica JSON Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeJson extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/json\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/json\": \"https://comunica.linkeddatafragments.org/#results_JSON\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads', 'boolean' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings or quad streams.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n data._read = () => {\n // Do nothing\n };\n\n if (action.type === 'bindings' || action.type === 'quads') {\n let stream = action.type === 'bindings' ?\n wrap(( action).bindingsStream)\n .map(element => JSON.stringify(Object.fromEntries([ ...element ]\n .map(([ key, value ]) => [ key.value, RdfString.termToString(value) ])))) :\n wrap(( action).quadStream)\n .map(element => JSON.stringify(RdfString.quadToStringQuad(element)));\n\n let empty = true;\n stream = stream.map((element) => {\n const ret = `${empty ? '' : ','}\\n${element}`;\n empty = false;\n return ret;\n }).prepend([ '[' ]).append([ '\\n]\\n' ]);\n\n data.wrap( stream);\n } else {\n try {\n data.push(`${JSON.stringify(await ( action).execute())}\\n`);\n data.push(null);\n } catch (error: unknown) {\n setTimeout(() => data.emit('error', error));\n }\n }\n\n return { data };\n }\n}\n","import type {\n IActorQueryResultSerializeArgs,\n IActorQueryResultSerializeOutput,\n IActionSparqlSerialize,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerialize } from '@comunica/bus-query-result-serialize';\nimport type {\n MediatorRdfSerializeHandle,\n MediatorRdfSerializeMediaTypeFormats,\n MediatorRdfSerializeMediaTypes,\n} from '@comunica/bus-rdf-serialize';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionContext, IQueryOperationResultQuads } from '@comunica/types';\n\n/**\n * A comunica RDF Query Result Serialize Actor.\n *\n * It serializes quad streams (for example resulting from a CONSTRUCT query)\n * to an RDF syntax.\n */\nexport class ActorQueryResultSerializeRdf extends ActorQueryResultSerialize\n implements IActorQueryResultSerializeRdfArgs {\n public readonly mediatorRdfSerialize: MediatorRdfSerializeHandle;\n public readonly mediatorMediaTypeCombiner: MediatorRdfSerializeMediaTypes;\n public readonly mediatorMediaTypeFormatCombiner: MediatorRdfSerializeMediaTypeFormats;\n\n public constructor(args: IActorQueryResultSerializeRdfArgs) {\n super(args);\n }\n\n public async testHandle(action: IActionSparqlSerialize, mediaType: string, context: IActionContext):\n Promise {\n // Check if we are provided with a quad stream\n if (action.type !== 'quads') {\n throw new Error(`Actor ${this.name} can only handle quad streams`);\n }\n\n // Check if the given media type can be handled\n const { mediaTypes } = await this.mediatorMediaTypeCombiner.mediate(\n { context, mediaTypes: true },\n );\n if (!(mediaType in mediaTypes)) {\n throw new Error(`Actor ${this.name} can not handle media type ${mediaType}. All available types: ${\n // eslint-disable-next-line ts/restrict-template-expressions\n Object.keys(mediaTypes)}`);\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, mediaType: string, context: IActionContext):\n Promise {\n // Delegate handling to the mediator\n return (await this.mediatorRdfSerialize.mediate({\n context,\n handle: {\n context,\n quadStream: ( action).quadStream,\n },\n handleMediaType: mediaType,\n })).handle;\n }\n\n public async testMediaType(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypes(context: IActionContext): Promise> {\n return (await this.mediatorMediaTypeCombiner.mediate({ context, mediaTypes: true })).mediaTypes;\n }\n\n public async testMediaTypeFormats(_context: IActionContext): Promise {\n return true;\n }\n\n public async getMediaTypeFormats(context: IActionContext): Promise> {\n return (await this.mediatorMediaTypeFormatCombiner.mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n}\n\nexport interface IActorQueryResultSerializeRdfArgs extends IActorQueryResultSerializeArgs {\n mediatorRdfSerialize: MediatorRdfSerializeHandle;\n mediatorMediaTypeCombiner: MediatorRdfSerializeMediaTypes;\n mediatorMediaTypeFormatCombiner: MediatorRdfSerializeMediaTypeFormats;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n IQueryOperationResultQuads,\n IQueryOperationResultVoid,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica Simple Sparql Serialize Actor.\n */\nexport class ActorQueryResultSerializeSimple extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{ \"simple\": 0.9 }} mediaTypePriorities\n * \\ @defaultNested {{ \"simple\": \"https://comunica.linkeddatafragments.org/#results_simple\" }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads', 'boolean', 'void' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams, quad streams, booleans, or updates.');\n }\n return true;\n }\n\n protected static termToString(term: RDF.Term): string {\n return term.termType === 'Quad' ? termToString(term) : term.value;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n if (action.type === 'bindings') {\n data.wrap( (action).bindingsStream.map((bindings: RDF.Bindings) => `${[ ...bindings ].map(\n ([ key, value ]) => `?${key.value}: ${ActorQueryResultSerializeSimple.termToString(value)}`,\n ).join('\\n')}\\n\\n`));\n } else if (action.type === 'quads') {\n data.wrap( (action).quadStream.map(quad =>\n `subject: ${ActorQueryResultSerializeSimple.termToString(quad.subject)}\\n` +\n `predicate: ${ActorQueryResultSerializeSimple.termToString(quad.predicate)}\\n` +\n `object: ${ActorQueryResultSerializeSimple.termToString(quad.object)}\\n` +\n `graph: ${ActorQueryResultSerializeSimple.termToString(quad.graph)}\\n\\n`));\n } else {\n data.wrap( wrap(\n action.type === 'boolean' ?\n ( action).execute().then(value => [ `${value}\\n` ]) :\n (action).execute().then(() => [ 'ok\\n' ]),\n ));\n }\n\n return { data };\n }\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport {\n ActorQueryResultSerializeFixedMediaTypes,\n} from '@comunica/bus-query-result-serialize';\nimport type { Bindings, IActionContext, IQueryOperationResultBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica SPARQL CSV Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlCsv extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"text/csv\": 0.75\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/csv\": \"http://www.w3.org/ns/formats/SPARQL_Results_CSV\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n * Converts an RDF term to its CSV representation.\n * @param {RDF.Term} value An RDF term.\n * @return {string} A string representation of the given value.\n */\n public static bindingToCsvBindings(value?: RDF.Term): string {\n if (!value) {\n return '';\n }\n\n let stringValue = value.value;\n\n if (value.termType === 'Literal') {\n // This is a lossy representation, since language and datatype are not encoded in here.\n stringValue = `${stringValue}`;\n } else if (value.termType === 'BlankNode') {\n stringValue = `_:${stringValue}`;\n } else if (value.termType === 'Quad') {\n let object = ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(value.object);\n if (value.object.termType === 'Literal') {\n // If object is a literal, it must be put in quotes, and internal quotes must be escaped\n object = `\"${object.replaceAll('\"', '\"\"')}\"`;\n }\n stringValue = `<< ${ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(value.subject)} ${ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(value.predicate)} ${object} >>`;\n } else {\n stringValue = `<${stringValue}>`;\n }\n\n // If a value contains certain characters, put it between double quotes\n if (/[\",\\n\\r]/u.test(stringValue)) {\n // Within quote strings, \" is written using a pair of quotation marks \"\".\n stringValue = `\"${stringValue.replaceAll('\"', '\"\"')}\"`;\n }\n\n return stringValue;\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string | undefined, _context: IActionContext):\n Promise {\n const bindingsAction = action;\n\n const data = new Readable();\n\n const metadata = await bindingsAction.metadata();\n\n // Write head\n data.push(`${metadata.variables.map(variable => variable.value).join(',')}\\r\\n`);\n\n // Write body\n data.wrap( bindingsAction.bindingsStream.map((bindings: Bindings) => `${metadata.variables\n .map(key => ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(bindings.get(key)))\n .join(',')}\\r\\n`));\n\n return { data };\n }\n}\n","import type { IActionHttp, IActorHttpOutput } from '@comunica/bus-http';\nimport type { ActorHttpInvalidateListenable } from '@comunica/bus-http-invalidate';\nimport type { Actor, IActionObserverArgs, IActorTest } from '@comunica/core';\nimport { ActionObserver } from '@comunica/core';\n\n/**\n * Observes HTTP actions, and maintains a counter of the number of requests.\n */\nexport class ActionObserverHttp extends ActionObserver {\n public readonly httpInvalidator: ActorHttpInvalidateListenable;\n public requests = 0;\n\n /* eslint-disable max-len */\n /**\n * @param args - @defaultNested {} bus\n */\n public constructor(args: IActionObserverHttpArgs) {\n super(args);\n this.bus.subscribeObserver(this);\n this.httpInvalidator.addInvalidateListener(() => {\n this.requests = 0;\n });\n }\n /* eslint-enable max-len */\n\n public onRun(\n _actor: Actor,\n _action: IActionHttp,\n _output: Promise,\n ): void {\n this.requests++;\n }\n}\n\nexport interface IActionObserverHttpArgs extends IActionObserverArgs {\n /* eslint-disable max-len */\n /**\n * An actor that listens to HTTP invalidation events\n * @default { a }\n */\n httpInvalidator: ActorHttpInvalidateListenable;\n /* eslint-enable max-len */\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap } from 'asynciterator';\nimport { Readable } from 'readable-stream';\nimport type { ActionObserverHttp } from './ActionObserverHttp';\n\n/**\n * A comunica sparql-results+xml Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlJson extends ActorQueryResultSerializeFixedMediaTypes {\n private readonly emitMetadata: boolean;\n public readonly httpObserver: ActionObserverHttp;\n\n /* eslint-disable max-len */\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/sparql-results+json\": 0.8\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/sparql-results+json\": \"http://www.w3.org/ns/formats/SPARQL_Results_JSON\"\n * }} mediaTypeFormats\n * \\ @defaultNested {true} emitMetadata\n * \\ @defaultNested { a } httpObserver\n */\n public constructor(args: IActorQueryResultSerializeSparqlJsonArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n /**\n * Converts an RDF term to its JSON representation.\n * @param {RDF.Term} value An RDF term.\n * @return {any} A JSON object.\n */\n public static bindingToJsonBindings(value: RDF.Term): any {\n if (value.termType === 'Literal') {\n const literal: RDF.Literal = value;\n const jsonValue: any = { value: literal.value, type: 'literal' };\n const { language, datatype } = literal;\n if (language) {\n jsonValue['xml:lang'] = language;\n } else if (datatype && datatype.value !== 'http://www.w3.org/2001/XMLSchema#string') {\n jsonValue.datatype = datatype.value;\n }\n return jsonValue;\n }\n if (value.termType === 'BlankNode') {\n return { value: value.value, type: 'bnode' };\n }\n if (value.termType === 'Quad') {\n return {\n value: {\n subject: ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value.subject),\n predicate: ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value.predicate),\n object: ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value.object),\n },\n type: 'triple',\n };\n }\n return { value: value.value, type: 'uri' };\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'boolean' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or booleans.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string | undefined, _context: IActionContext):\n Promise {\n const data = new Readable();\n // Write head\n const head: any = {};\n if (action.type === 'bindings') {\n const metadata = await ( action).metadata();\n if (metadata.variables.length > 0) {\n head.vars = metadata.variables.map(variable => variable.value);\n }\n }\n data.push(`{\"head\": ${JSON.stringify(head)},\\n`);\n\n if (action.type === 'bindings') {\n const resultStream = ( action).bindingsStream;\n data.push('\"results\": { \"bindings\": [\\n');\n\n let first = true;\n\n function* end(cb: () => string): Generator {\n yield cb();\n }\n\n // Write bindings\n data.wrap(\n // JSON SPARQL results spec does not allow unbound variables and blank node bindings\n wrap(resultStream).map((bindings) => {\n const res = `${first ? '' : ',\\n'}${JSON.stringify(Object.fromEntries([ ...bindings ]\n .map(([ key, value ]) => [ key.value, ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value) ])))}`;\n first = false;\n return res;\n }).append(wrap(end(() => `\\n]}${this.emitMetadata ? `,\\n\"metadata\": { \"httpRequests\": ${this.httpObserver.requests} }` : ''}}\\n`))),\n );\n } else {\n data.wrap( wrap(( action).execute().then(value => [ `\"boolean\":${value}\\n}\\n` ])));\n }\n\n return { data };\n }\n}\n\nexport interface IActorQueryResultSerializeSparqlJsonArgs extends IActorQueryResultSerializeFixedMediaTypesArgs {\n emitMetadata: boolean;\n httpObserver: ActionObserverHttp;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport {\n ActorQueryResultSerializeFixedMediaTypes,\n} from '@comunica/bus-query-result-serialize';\nimport type { IActionContext, IQueryOperationResultBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string-ttl';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica SPARQL TSV Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlTsv extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"text/tab-separated-values\": 0.75\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/tab-separated-values\": \"http://www.w3.org/ns/formats/SPARQL_Results_TSV\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n * Converts an RDF term to its TSV representation.\n * @param {RDF.Term} value An RDF term.\n * @return {string} A string representation of the given value.\n */\n public static bindingToTsvBindings(value?: RDF.Term): string {\n if (!value) {\n return '';\n }\n\n // Escape tab, newline and carriage return characters\n return termToString(value)\n .replaceAll('\\t', '\\\\t')\n .replaceAll('\\n', '\\\\n')\n .replaceAll('\\r', '\\\\r');\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string | undefined, _context: IActionContext):\n Promise {\n const bindingsAction = action;\n\n const data = new Readable();\n // Write head\n const metadata = await bindingsAction.metadata();\n data.push(`${metadata.variables.map((variable: RDF.Variable) => variable.value).join('\\t')}\\n`);\n\n // Write Bindings\n data.wrap( bindingsAction.bindingsStream.map((bindings: RDF.Bindings) => `${metadata.variables\n .map((key: RDF.Variable) => ActorQueryResultSerializeSparqlTsv\n .bindingToTsvBindings(bindings.get(key)))\n .join('\\t')}\\n`));\n\n return { data };\n }\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultBoolean,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap } from 'asynciterator';\nimport { Readable } from 'readable-stream';\nimport { XmlSerializer, type IXmlNode } from './XmlSerializer';\n\n/**\n * A comunica sparql-results+xml Serialize Actor.\n */\nexport class ActorQueryResultSerializeSparqlXml extends ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/sparql-results+xml\": 0.8\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/sparql-results+xml\": \"http://www.w3.org/ns/formats/SPARQL_Results_XML\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n * Converts an RDF term to its object-based XML representation.\n * @param {RDF.Term} value An RDF term.\n * @param {string} key A variable name, '?' must be included as a prefix.\n * @return {IXmlNode} An object-based XML tag.\n */\n public static bindingToXmlBindings(value: RDF.Term, key: RDF.Variable): IXmlNode {\n return { name: 'binding', attributes: { name: key.value }, children: [ this.valueToXmlValue(value) ]};\n }\n\n public static valueToXmlValue(value: RDF.Term): IXmlNode {\n let attributes;\n switch (value.termType) {\n case 'Literal':\n if (value.language) {\n attributes = { 'xml:lang': value.language };\n } else if (value.datatype && value.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string') {\n attributes = { datatype: value.datatype.value };\n } else {\n attributes = {};\n }\n return { name: 'literal', attributes, children: value.value };\n case 'BlankNode':\n return { name: 'bnode', children: value.value };\n case 'Quad':\n return {\n name: 'triple',\n children: [\n { name: 'subject', children: [ this.valueToXmlValue(value.subject) ]},\n { name: 'predicate', children: [ this.valueToXmlValue(value.predicate) ]},\n { name: 'object', children: [ this.valueToXmlValue(value.object) ]},\n ],\n };\n default:\n return { name: 'uri', children: value.value };\n }\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'boolean' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or booleans.');\n }\n return true;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n data._read = () => {\n // Do nothing\n };\n\n const serializer = new XmlSerializer();\n const metadata = await ( action).metadata();\n\n data.push(XmlSerializer.header);\n data.push(serializer.open('sparql', { xmlns: 'http://www.w3.org/2005/sparql-results#' }));\n data.push(\n serializer.serializeNode({\n name: 'head',\n children: metadata.variables.map(variable => ({ name: 'variable', attributes: { name: variable.value }})),\n }),\n );\n\n if (action.type === 'bindings') {\n function* end(): Generator {\n yield serializer.close();\n yield serializer.close();\n }\n data.push(serializer.open('results'));\n const stream = wrap(( action).bindingsStream).map(\n (bindings: RDF.Bindings) => serializer.serializeNode({\n name: 'result',\n children: [ ...bindings ].map(\n ([ key, value ]) => ActorQueryResultSerializeSparqlXml.bindingToXmlBindings(value, key),\n ),\n }),\n ).append(wrap(end()));\n data.wrap( stream);\n } else {\n try {\n const result = await ( action).execute();\n data.push(serializer.serializeNode({ name: 'boolean', children: result.toString() }));\n data.push(serializer.close());\n setTimeout(() => data.push(null));\n } catch (error: unknown) {\n setTimeout(() => data.emit('error', error));\n }\n }\n\n return { data };\n }\n}\n","/**\n * A very simple XML serializer\n */\nexport class XmlSerializer {\n private readonly stack: string[] = [];\n\n public static header = `\\n`;\n\n public constructor() {}\n\n /**\n *\n * @param name should be a valid XML tag name\n * @param attributes keys should be valid attribute names\n */\n public open(name: string, attributes?: Record): string {\n const res = `${this.identation() + this.formatTag(name, attributes, 'open')}\\n`;\n this.stack.push(name);\n return res;\n }\n\n public close(): string {\n const name = this.stack.pop();\n if (name === undefined) {\n throw new Error('There is no tag left to close');\n }\n return `${this.identation() + this.formatTag(name, {}, 'close')}\\n`;\n }\n\n public serializeNode(node: IXmlNode): string {\n if (node.children === undefined) {\n return `${this.identation() + this.formatTag(node.name, node.attributes, 'self-closing')}\\n`;\n }\n if (typeof node.children === 'string') {\n return `${this.identation() + this.formatTag(node.name, node.attributes, 'open') + this.escape(node.children) + this.formatTag(node.name, {}, 'close')}\\n`;\n }\n const parts = [];\n parts.push(`${this.identation() + this.formatTag(node.name, node.attributes, 'open')}\\n`);\n this.stack.push(node.name);\n for (const child of node.children) {\n parts.push(this.serializeNode(child));\n }\n this.stack.pop();\n parts.push(`${this.identation() + this.formatTag(node.name, {}, 'close')}\\n`);\n return parts.join('');\n }\n\n private identation(): string {\n return this.stack.map(_ => ' ').join('');\n }\n\n private formatTag(\n name: string,\n attributes: Record | undefined,\n state: 'open' | 'close' | 'self-closing',\n ): string {\n // eslint-disable-next-line ts/restrict-template-expressions\n return `<${state === 'close' ? '/' : ''}${name}${Object.entries(attributes ?? {}).map(attr => ` ${attr[0]}=\"${this.escape(attr[1])}\"`)}${state === 'self-closing' ? '/' : ''}>`;\n }\n\n private escape(text: string): string {\n return text.replaceAll(/[\"&'<>]/gu, <(substring: string) => string> ((char: '\"' | '&' | '\\'' | '<' | '>') => {\n switch (char) {\n case '<': return '<';\n case '>': return '>';\n case '&': return '&';\n case '\\'': return ''';\n case '\"': return '"';\n }\n }));\n }\n}\n\nexport interface IXmlNode {\n name: string;\n attributes?: Record;\n children?: (IXmlNode[]) | string;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport { wrap } from 'asynciterator';\nimport { Readable } from 'readable-stream';\nimport type { ActionObserverHttp } from './ActionObserverHttp';\n\nconst process: NodeJS.Process = require('process/');\n\n/**\n * Serializes SPARQL results for testing and debugging.\n */\nexport class ActorQueryResultSerializeStats extends ActorQueryResultSerializeFixedMediaTypes {\n public readonly httpObserver: ActionObserverHttp;\n\n /* eslint-disable max-len */\n /**\n * @param args -\n * \\ @defaultNested {{ \"stats\": 0.5 }} mediaTypePriorities\n * \\ @defaultNested {{ \"stats\": \"https://comunica.linkeddatafragments.org/#results_stats\" }} mediaTypeFormats\n * \\ @defaultNested { a } httpObserver\n */\n public constructor(args: IActorQueryResultSerializeStatsArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or quad streams.');\n }\n return true;\n }\n\n public pushHeader(data: Readable): void {\n const header: string = [ 'Result', 'Delay (ms)', 'HTTP requests',\n ].join(',');\n data.push(`${header}\\n`);\n }\n\n public createStat(startTime: number, result: number): string {\n const row: string = [ result, this.delay(startTime), this.httpObserver.requests,\n ].join(',');\n return `${row}\\n`;\n }\n\n public createFooter(startTime: number): string {\n const footer: string = [ 'TOTAL', this.delay(startTime), this.httpObserver.requests,\n ].join(',');\n return `${footer}\\n`;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n\n const resultStream = action.type === 'bindings' ?\n ( action).bindingsStream :\n ( action).quadStream;\n\n const startTime = this.now();\n let result = 1;\n\n function* end(cb: () => string): Generator {\n yield cb();\n }\n const stream = wrap(resultStream)\n .map(() => this.createStat(startTime, result++))\n .append(wrap(end(() => this.createFooter(startTime))));\n\n this.pushHeader(data);\n data.wrap( stream);\n\n return { data };\n }\n\n /* istanbul ignore next */\n public now(): number {\n // TODO: remove when we will drop support of Node 14\n if (typeof performance === 'undefined') {\n const time: [number, number] = process.hrtime();\n return time[0] * 1_000 + (time[1] / 1_000_000);\n }\n return performance.now();\n }\n\n public delay(startTime: number): number {\n return this.now() - startTime;\n }\n}\n\nexport interface IActorQueryResultSerializeStatsArgs extends IActorQueryResultSerializeFixedMediaTypesArgs {\n httpObserver: ActionObserverHttp;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n Bindings,\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { getTerms, QUAD_TERM_NAMES } from 'rdf-terms';\nimport { Readable } from 'readable-stream';\n\nconst DF = new DataFactory();\nconst QUAD_TERM_NAMES_VARS = QUAD_TERM_NAMES.map(name => DF.variable(name));\n\n/**\n * A comunica Table Sparql Serialize Actor.\n */\nexport class ActorQueryResultSerializeTable extends ActorQueryResultSerializeFixedMediaTypes\n implements IActorQueryResultSerializeTableArgs {\n public readonly columnWidth: number;\n public readonly padding: string;\n\n /**\n * @param args -\n * \\ @defaultNested {{ \"table\": 0.6 }} mediaTypePriorities\n * \\ @defaultNested {{ \"table\": \"https://comunica.linkeddatafragments.org/#results_table\" }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeTableArgs) {\n super(args);\n this.padding = ActorQueryResultSerializeTable.repeat(' ', this.columnWidth);\n }\n\n public static repeat(str: string, count: number): string {\n return str.repeat(count);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise {\n if (![ 'bindings', 'quads' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings or quad streams.');\n }\n return true;\n }\n\n public termToString(term: RDF.Term): string {\n return term.termType === 'Quad' ? termToString(term) : term.value;\n }\n\n public pad(str: string): string {\n if (str.length <= this.columnWidth) {\n return str + this.padding.slice(str.length);\n }\n return `${str.slice(0, this.columnWidth - 1)}…`;\n }\n\n public pushHeader(data: Readable, labels: RDF.Variable[]): void {\n const header: string = labels.map(label => this.pad(label.value)).join(' ');\n data.push(`${header}\\n${ActorQueryResultSerializeTable.repeat('-', header.length)}\\n`);\n }\n\n public createRow(labels: RDF.Variable[], bindings: Bindings): string {\n return `${labels\n .map(label => bindings.has(label) ? this.termToString(bindings.get(label)!) : '')\n .map(label => this.pad(label))\n .join(' ')}\\n`;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise {\n const data = new Readable();\n\n let resultStream: NodeJS.EventEmitter;\n if (action.type === 'bindings') {\n resultStream = (action).bindingsStream.map(\n bindings => this.createRow(labels, bindings),\n );\n const labels = (await (action).metadata()).variables;\n this.pushHeader(data, labels);\n } else {\n resultStream = (action).quadStream.map(quad => `${getTerms(quad).map(term => this.pad(this.termToString(term))).join(' ')}\\n`);\n this.pushHeader(data, QUAD_TERM_NAMES_VARS);\n }\n data.wrap( resultStream);\n\n return { data };\n }\n}\n\nexport interface IActorQueryResultSerializeTableArgs extends IActorQueryResultSerializeFixedMediaTypesArgs {\n /**\n * The table column width in number of characters\n * @range {integer}\n * @default {50}\n */\n columnWidth: number;\n}\n","import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type { IQueryOperationResultBindings, BindingsStream, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Readable } from 'readable-stream';\nimport type { IConverterSettings, ISchema } from 'sparqljson-to-tree';\nimport { Converter } from 'sparqljson-to-tree';\n\n/**\n * A comunica Tree Query Result Serialize Actor.\n */\nexport class ActorQueryResultSerializeTree extends ActorQueryResultSerializeFixedMediaTypes\n implements IActorQueryResultSerializeFixedMediaTypesArgs {\n /**\n * @param args -\n * \\ @defaultNested {{ \"tree\": 0.5 }} mediaTypePriorities\n * \\ @defaultNested {{ \"tree\": \"https://comunica.linkeddatafragments.org/#results_tree\" }} mediaTypeFormats\n */\n public constructor(args: IActorQueryResultSerializeFixedMediaTypesArgs) {\n super(args);\n }\n\n /**\n *\n * @param {BindingsStream} bindingsStream\n * @param context\n * @param {IConverterSettings} converterSettings\n * @return {Promise}\n */\n public static async bindingsStreamToGraphQl(\n bindingsStream: BindingsStream,\n context: IActionContext | Record | undefined,\n converterSettings?: IConverterSettings,\n ): Promise {\n const actionContext: IActionContext = ActionContext.ensureActionContext(context);\n const converter: Converter = new Converter(converterSettings);\n const schema: ISchema = {\n singularizeVariables: actionContext.get(KeysInitQuery.graphqlSingularizeVariables) ?? {},\n };\n\n return converter.bindingsToTree(await bindingsStream.map((bindings: RDF.Bindings) =>\n Object.fromEntries([ ...bindings ]\n .map(([ key, value ]) => [ key.value, value ]))).toArray(), schema);\n }\n\n public override async testHandleChecked(action: IActionSparqlSerialize): Promise {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n\n public async runHandle(\n action: IActionSparqlSerialize,\n _mediaType: string,\n ): Promise {\n const data = new Readable();\n data._read = () => {\n data._read = () => { /* Do nothing */ };\n ActorQueryResultSerializeTree.bindingsStreamToGraphQl(\n ( action).bindingsStream,\n action.context,\n { materializeRdfJsTerms: true },\n )\n .then((result: any) => {\n data.push(JSON.stringify(result, null, ' '));\n data.push(null);\n })\n .catch(error => data.emit('error', error));\n };\n\n return { data };\n }\n}\n","import { QuerySourceRdfJs } from '@comunica/actor-query-source-identify-rdfjs';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentifyHypermedia,\n IActorQuerySourceIdentifyHypermediaOutput,\n IActorQuerySourceIdentifyHypermediaArgs,\n IActorQuerySourceIdentifyHypermediaTest,\n} from '@comunica/bus-query-source-identify-hypermedia';\nimport { ActorQuerySourceIdentifyHypermedia } from '@comunica/bus-query-source-identify-hypermedia';\nimport { storeStream } from 'rdf-store-stream';\n\n/**\n * A comunica None Query Source Identify Hypermedia Actor.\n */\nexport class ActorQuerySourceIdentifyHypermediaNone extends ActorQuerySourceIdentifyHypermedia {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQuerySourceIdentifyHypermediaNoneArgs) {\n super(args, 'file');\n }\n\n public async testMetadata(\n _action: IActionQuerySourceIdentifyHypermedia,\n ): Promise {\n return { filterFactor: 0 };\n }\n\n public async run(action: IActionQuerySourceIdentifyHypermedia): Promise {\n this.logInfo(action.context, `Identified as file source: ${action.url}`);\n const source = new QuerySourceRdfJs(\n await storeStream(action.quads),\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n );\n source.toString = () => `QuerySourceRdfJs(${action.url})`;\n source.referenceValue = action.url;\n return { source };\n }\n}\n\nexport interface IActorQuerySourceIdentifyHypermediaNoneArgs extends IActorQuerySourceIdentifyHypermediaArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentifyHypermedia,\n IActorQuerySourceIdentifyHypermediaOutput,\n IActorQuerySourceIdentifyHypermediaArgs,\n IActorQuerySourceIdentifyHypermediaTest,\n} from '@comunica/bus-query-source-identify-hypermedia';\nimport {\n ActorQuerySourceIdentifyHypermedia,\n} from '@comunica/bus-query-source-identify-hypermedia';\nimport type { MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { QuerySourceQpf } from './QuerySourceQpf';\n\n/**\n * A comunica QPF Query Source Identify Hypermedia Actor.\n */\nexport class ActorQuerySourceIdentifyHypermediaQpf extends ActorQuerySourceIdentifyHypermedia\n implements IActorQuerySourceIdentifyHypermediaQpfArgs {\n public readonly mediatorMetadata: MediatorRdfMetadata;\n public readonly mediatorMetadataExtract: MediatorRdfMetadataExtract;\n public readonly mediatorDereferenceRdf: MediatorDereferenceRdf;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly subjectUri: string;\n public readonly predicateUri: string;\n public readonly objectUri: string;\n public readonly graphUri?: string;\n public constructor(args: IActorQuerySourceIdentifyHypermediaQpfArgs) {\n super(args, 'qpf');\n }\n\n public override async test(\n action: IActionQuerySourceIdentifyHypermedia,\n ): Promise {\n if (action.forceSourceType && (action.forceSourceType !== 'qpf' && action.forceSourceType !== 'brtpf')) {\n throw new Error(`Actor ${this.name} is not able to handle source type ${action.forceSourceType}.`);\n }\n return this.testMetadata(action);\n }\n\n public async testMetadata(\n action: IActionQuerySourceIdentifyHypermedia,\n ): Promise {\n const { searchForm } = await this.createSource(\n action.url,\n action.metadata,\n action.context,\n action.forceSourceType === 'brtpf',\n );\n if (action.handledDatasets && action.handledDatasets[searchForm.dataset]) {\n throw new Error(`Actor ${this.name} can only be applied for the first page of a QPF dataset.`);\n }\n return { filterFactor: 1 };\n }\n\n /**\n * Look for the search form\n * @param {IActionRdfResolveHypermedia} action the metadata to look for the form.\n * @return {Promise} A promise resolving to a hypermedia form.\n */\n public async run(action: IActionQuerySourceIdentifyHypermedia): Promise {\n this.logInfo(action.context, `Identified as qpf source: ${action.url}`);\n const source = await this.createSource(\n action.url,\n action.metadata,\n action.context,\n action.forceSourceType === 'brtpf',\n action.quads,\n );\n return { source, dataset: source.searchForm.dataset };\n }\n\n protected async createSource(\n url: string,\n metadata: Record,\n context: IActionContext,\n bindingsRestricted: boolean,\n quads?: RDF.Stream,\n ): Promise {\n return new QuerySourceQpf(\n this.mediatorMetadata,\n this.mediatorMetadataExtract,\n this.mediatorDereferenceRdf,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, context),\n this.subjectUri,\n this.predicateUri,\n this.objectUri,\n this.graphUri,\n url,\n metadata,\n bindingsRestricted,\n quads,\n );\n }\n}\n\nexport interface IActorQuerySourceIdentifyHypermediaQpfArgs extends IActorQuerySourceIdentifyHypermediaArgs {\n /**\n * The metadata mediator\n */\n mediatorMetadata: MediatorRdfMetadata;\n /**\n * The metadata extract mediator\n */\n mediatorMetadataExtract: MediatorRdfMetadataExtract;\n /**\n * The RDF dereference mediator\n */\n mediatorDereferenceRdf: MediatorDereferenceRdf;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The URI that should be interpreted as subject URI\n * @default {http://www.w3.org/1999/02/22-rdf-syntax-ns#subject}\n */\n subjectUri: string;\n /**\n * The URI that should be interpreted as predicate URI\n * @default {http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate}\n */\n predicateUri: string;\n /**\n * The URI that should be interpreted as object URI\n * @default {http://www.w3.org/1999/02/22-rdf-syntax-ns#object}\n */\n objectUri: string;\n /**\n * The URI that should be interpreted as graph URI\n * @default {http://www.w3.org/ns/sparql-service-description#graph}\n */\n graphUri?: string;\n}\n","import type { ISearchForm } from '@comunica/actor-rdf-metadata-extract-hydra-controls';\nimport type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport { filterMatchingQuotedQuads, quadsToBindings } from '@comunica/bus-query-source-identify';\nimport type { MediatorRdfMetadata, IActorRdfMetadataOutput } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQuerySource,\n BindingsStream,\n IActionContext,\n FragmentSelectorShape,\n IQueryBindingsOptions,\n MetadataBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator, TransformIterator, wrap } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { termToString as termToStringTtl } from 'rdf-string-ttl';\nimport {\n everyTermsNested,\n mapTerms,\n matchPattern,\n} from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\n\nexport class QuerySourceQpf implements IQuerySource {\n protected static readonly SELECTOR_SHAPE: FragmentSelectorShape = {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: AF.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), DF.variable('g')),\n },\n variablesOptional: [\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n DF.variable('g'),\n ],\n };\n\n protected static readonly SELECTOR_SHAPE_BR: FragmentSelectorShape = {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: AF.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), DF.variable('g')),\n },\n variablesOptional: [\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n DF.variable('g'),\n ],\n filterBindings: true,\n };\n\n public readonly searchForm: ISearchForm;\n\n private readonly mediatorMetadata: MediatorRdfMetadata;\n private readonly mediatorMetadataExtract: MediatorRdfMetadataExtract;\n private readonly mediatorDereferenceRdf: MediatorDereferenceRdf;\n private readonly bindingsFactory: BindingsFactory;\n\n public readonly referenceValue: string;\n private readonly subjectUri: string;\n private readonly predicateUri: string;\n private readonly objectUri: string;\n private readonly graphUri?: string;\n private readonly url: string;\n private readonly defaultGraph?: RDF.NamedNode;\n private readonly bindingsRestricted: boolean;\n private readonly cachedQuads: Record>;\n\n public constructor(\n mediatorMetadata: MediatorRdfMetadata,\n mediatorMetadataExtract: MediatorRdfMetadataExtract,\n mediatorDereferenceRdf: MediatorDereferenceRdf,\n bindingsFactory: BindingsFactory,\n subjectUri: string,\n predicateUri: string,\n objectUri: string,\n graphUri: string | undefined,\n url: string,\n metadata: Record,\n bindingsRestricted: boolean,\n initialQuads?: RDF.Stream,\n ) {\n this.referenceValue = url;\n this.mediatorMetadata = mediatorMetadata;\n this.mediatorMetadataExtract = mediatorMetadataExtract;\n this.mediatorDereferenceRdf = mediatorDereferenceRdf;\n this.bindingsFactory = bindingsFactory;\n this.subjectUri = subjectUri;\n this.predicateUri = predicateUri;\n this.objectUri = objectUri;\n this.graphUri = graphUri;\n this.url = url;\n this.bindingsRestricted = bindingsRestricted;\n this.cachedQuads = {};\n const searchForm = this.getSearchForm(metadata);\n if (!searchForm) {\n throw new Error('Illegal state: found no TPF/QPF search form anymore in metadata.');\n }\n this.searchForm = searchForm;\n this.defaultGraph = metadata.defaultGraph ? DF.namedNode(metadata.defaultGraph) : undefined;\n if (initialQuads) {\n let wrappedQuads: AsyncIterator = wrap(initialQuads);\n if (this.defaultGraph) {\n wrappedQuads = this.reverseMapQuadsToDefaultGraph(wrappedQuads);\n }\n metadata = { ...metadata, state: new MetadataValidationState() };\n wrappedQuads.setProperty('metadata', metadata);\n this.cacheQuads(wrappedQuads, DF.variable(''), DF.variable(''), DF.variable(''), DF.variable(''));\n }\n }\n\n public async getSelectorShape(): Promise {\n return this.bindingsRestricted ? QuerySourceQpf.SELECTOR_SHAPE_BR : QuerySourceQpf.SELECTOR_SHAPE;\n }\n\n public queryBindings(\n operation: Algebra.Operation,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): BindingsStream {\n if (operation.type !== 'pattern') {\n throw new Error(`Attempted to pass non-pattern operation '${operation.type}' to QuerySourceQpf`);\n }\n\n const unionDefaultGraph = Boolean(context.get(KeysQueryOperation.unionDefaultGraph));\n\n // Create an async iterator from the matched quad stream\n let it = this.match(\n operation.subject,\n operation.predicate,\n operation.object,\n operation.graph,\n unionDefaultGraph,\n context,\n options,\n );\n\n it = filterMatchingQuotedQuads(operation, it);\n return quadsToBindings(it, operation, this.bindingsFactory, unionDefaultGraph);\n }\n\n /**\n * Get a first QPF search form.\n * @param {{[p: string]: any}} metadata A metadata object.\n * @return {ISearchForm} A search form, or null if none could be found.\n */\n public getSearchForm(metadata: Record): ISearchForm | undefined {\n if (!metadata.searchForms || !metadata.searchForms.values) {\n return;\n }\n\n // Find a quad pattern or triple pattern search form\n const { searchForms } = metadata;\n for (const searchForm of searchForms.values) {\n if (this.graphUri &&\n this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n this.graphUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 4) {\n return searchForm;\n }\n if (this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 3) {\n return searchForm;\n }\n }\n }\n\n /**\n * Create a QPF fragment IRI for the given quad pattern.\n * @param {ISearchForm} searchForm A search form.\n * @param {Term} subject A term.\n * @param {Term} predicate A term.\n * @param {Term} object A term.\n * @param {Term} graph A term.\n * @return {string} A URI.\n */\n public createFragmentUri(\n searchForm: ISearchForm,\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n ): string {\n const entries: Record = {};\n const input = [\n { uri: this.subjectUri, term: subject },\n { uri: this.predicateUri, term: predicate },\n { uri: this.objectUri, term: object },\n { uri: this.graphUri, term: graph },\n ];\n for (const entry of input) {\n // If bindingsRestricted, also pass variables, so the server knows how to bind values.\n if (entry.uri && (this.bindingsRestricted || (entry.term.termType !== 'Variable' &&\n (entry.term.termType !== 'Quad' || everyTermsNested(entry.term, value => value.termType !== 'Variable'))))) {\n entries[entry.uri] = termToString(entry.term);\n }\n }\n return searchForm.getUri(entries);\n }\n\n protected match(\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n unionDefaultGraph: boolean,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): AsyncIterator {\n // If we are querying the default graph,\n // and the source has an overridden value for the default graph (such as QPF can provide),\n // we override the graph parameter with that value.\n let modifiedGraph = false;\n if (graph.termType === 'DefaultGraph') {\n if (this.defaultGraph) {\n modifiedGraph = true;\n graph = this.defaultGraph;\n } else if (Object.keys(this.searchForm.mappings).length === 4 && !this.defaultGraph) {\n // If the sd:defaultGraph is not declared on a QPF endpoint\n if (unionDefaultGraph) {\n // With union-default-graph, take union of graphs.\n graph = DF.variable('g');\n } else {\n // Without union-default-graph, the default graph must be empty.\n const quads = new ArrayIterator([], { autoStart: false });\n quads.setProperty('metadata', {\n state: new MetadataValidationState(),\n requestTime: 0,\n cardinality: { type: 'exact', value: 0 },\n first: null,\n next: null,\n last: null,\n canContainUndefs: false,\n });\n return quads;\n }\n } else if (Object.keys(this.searchForm.mappings).length === 3) {\n // If have a TPF endpoint, set graph to variable so we could get the cached triples\n graph = DF.variable('g');\n }\n }\n\n // Try to emit from cache (skip if filtering bindings)\n if (!options?.filterBindings) {\n const cached = this.getCachedQuads(subject, predicate, object, graph);\n if (cached) {\n return cached;\n }\n }\n\n // Kickstart metadata collection, because the quads iterator is lazy\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n let quads: AsyncIterator;\n const dataStreamPromise = (async function() {\n let url: string = self.createFragmentUri(self.searchForm, subject, predicate, object, graph);\n\n // Handle bindings-restricted interfaces\n if (options?.filterBindings) {\n url = await self.getBindingsRestrictedLink(\n subject,\n predicate,\n object,\n graph,\n url,\n options.filterBindings,\n );\n }\n\n const dereferenceRdfOutput = await self.mediatorDereferenceRdf.mediate({ context, url });\n url = dereferenceRdfOutput.url;\n\n // Determine the metadata\n const rdfMetadataOuput: IActorRdfMetadataOutput = await self.mediatorMetadata.mediate(\n { context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples },\n );\n\n // Extract the metadata\n const { metadata } = await self.mediatorMetadataExtract\n .mediate({\n context,\n url,\n metadata: rdfMetadataOuput.metadata,\n requestTime: dereferenceRdfOutput.requestTime,\n });\n quads!.setProperty(\n 'metadata',\n { ...metadata, state: new MetadataValidationState(), canContainUndefs: false, subsetOf: self.url },\n );\n\n // While we could resolve this before metadata extraction, we do it afterwards to ensure metadata emission\n // before the end event is emitted.\n return rdfMetadataOuput.data;\n })();\n\n quads = new TransformIterator(async() => {\n const dataStream = await dataStreamPromise;\n\n // The server is free to send any data in its response (such as metadata),\n // including quads that do not match the given matter.\n // Therefore, we have to filter away all non-matching quads here.\n const actualDefaultGraph = DF.defaultGraph();\n let filteredOutput: AsyncIterator = wrap(dataStream)\n .transform({\n filter(quad: RDF.Quad) {\n if (matchPattern(quad, subject, predicate, object, graph)) {\n return true;\n }\n // Special case: if we are querying in the default graph, and we had an overridden default graph,\n // also accept that incoming triples may be defined in the actual default graph\n return modifiedGraph && matchPattern(quad, subject, predicate, object, actualDefaultGraph);\n },\n });\n if (modifiedGraph || graph.termType === 'Variable') {\n // Reverse-map the overridden default graph back to the actual default graph\n filteredOutput = this.reverseMapQuadsToDefaultGraph(filteredOutput);\n }\n\n return filteredOutput;\n }, { autoStart: false });\n\n // Skip cache if filtering bindings\n if (options?.filterBindings) {\n return quads;\n }\n\n this.cacheQuads(quads, subject, predicate, object, graph);\n return this.getCachedQuads(subject, predicate, object, graph)!;\n }\n\n /**\n * If we add bindings for brTPF, append it to the URL.\n * We have to hardcode this because brTPF doesn't expose a URL template for passing bindings.\n * @param subject The subject.\n * @param predicate The predicate.\n * @param object The object.\n * @param graph The graph.\n * @param url The original QPF URL.\n * @param filterBindings The bindings to restrict with.\n * @param filterBindings.bindings The bindings stream.\n * @param filterBindings.metadata The bindings metadata.\n * @protected\n */\n public async getBindingsRestrictedLink(\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n url: string,\n filterBindings: { bindings: BindingsStream; metadata: MetadataBindings },\n ): Promise {\n // Determine values\n const values: string[] = [];\n for (const binding of await filterBindings.bindings.toArray()) {\n const value: string[] = [ '(' ];\n for (const variable of filterBindings.metadata.variables) {\n const term = binding.get(variable);\n value.push(term ? termToStringTtl(term) : 'UNDEF');\n value.push(' ');\n }\n value.push(')');\n values.push(value.join(''));\n }\n\n if (values.length === 0) {\n // This is a hack to force an empty result page,\n // because the brTPF server returns a server error when passing 0 bindings.\n values.push('()');\n }\n\n // Append to URL (brTPF uses the SPARQL VALUES syntax, without the VALUES prefix)\n const valuesUrl = encodeURIComponent(`(${filterBindings.metadata.variables.map(variable => `?${variable.value}`).join(' ')}) { ${values.join(' ')} }`);\n return `${url}&values=${valuesUrl}`;\n }\n\n protected reverseMapQuadsToDefaultGraph(quads: AsyncIterator): AsyncIterator {\n const actualDefaultGraph = DF.defaultGraph();\n return quads.map(\n quad => mapTerms(\n quad,\n (term, key) => key === 'graph' && term.equals(this.defaultGraph) ? actualDefaultGraph : term,\n ),\n );\n }\n\n public getPatternId(subject: RDF.Term, predicate: RDF.Term, object: RDF.Term, graph: RDF.Term): string {\n return JSON.stringify({\n s: subject.termType === 'Variable' ? '' : _termToString(subject),\n p: predicate.termType === 'Variable' ? '' : _termToString(predicate),\n o: object.termType === 'Variable' ? '' : _termToString(object),\n g: graph.termType === 'Variable' ? '' : _termToString(graph),\n });\n }\n\n protected cacheQuads(\n quads: AsyncIterator,\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n ): void {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n this.cachedQuads[patternId] = quads.clone();\n }\n\n protected getCachedQuads(subject: RDF.Term, predicate: RDF.Term, object: RDF.Term, graph: RDF.Term):\n AsyncIterator | undefined {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n const quads = this.cachedQuads[patternId];\n if (quads) {\n return quads.clone();\n }\n }\n\n public queryQuads(\n _operation: Algebra.Operation,\n _context: IActionContext,\n ): AsyncIterator {\n throw new Error('queryQuads is not implemented in QuerySourceQpf');\n }\n\n public queryBoolean(\n _operation: Algebra.Ask,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryBoolean is not implemented in QuerySourceQpf');\n }\n\n public queryVoid(\n _operation: Algebra.Update,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryVoid is not implemented in QuerySourceQpf');\n }\n}\n\nfunction _termToString(term: RDF.Term): string {\n return term.termType === 'DefaultGraph' ?\n // Any character that cannot be present in a URL will do\n '|' :\n termToString(term);\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorHttp } from '@comunica/bus-http';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentifyHypermedia,\n IActorQuerySourceIdentifyHypermediaOutput,\n IActorQuerySourceIdentifyHypermediaArgs,\n IActorQuerySourceIdentifyHypermediaTest,\n} from '@comunica/bus-query-source-identify-hypermedia';\nimport {\n ActorQuerySourceIdentifyHypermedia,\n} from '@comunica/bus-query-source-identify-hypermedia';\nimport { QuerySourceSparql } from './QuerySourceSparql';\n\n/**\n * A comunica SPARQL Query Source Identify Hypermedia Actor.\n */\nexport class ActorQuerySourceIdentifyHypermediaSparql extends ActorQuerySourceIdentifyHypermedia {\n public readonly mediatorHttp: MediatorHttp;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly checkUrlSuffix: boolean;\n public readonly forceHttpGet: boolean;\n public readonly cacheSize: number;\n public readonly bindMethod: BindMethod;\n public readonly countTimeout: number;\n\n public constructor(args: IActorQuerySourceIdentifyHypermediaSparqlArgs) {\n super(args, 'sparql');\n }\n\n public async testMetadata(\n action: IActionQuerySourceIdentifyHypermedia,\n ): Promise {\n if (!action.forceSourceType && !action.metadata.sparqlService &&\n !(this.checkUrlSuffix && action.url.endsWith('/sparql'))) {\n throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql.`);\n }\n return { filterFactor: 1 };\n }\n\n public async run(action: IActionQuerySourceIdentifyHypermedia): Promise {\n this.logInfo(action.context, `Identified ${action.url} as sparql source with service URL: ${action.metadata.sparqlService || action.url}`);\n const source = new QuerySourceSparql(\n action.forceSourceType ? action.url : action.metadata.sparqlService || action.url,\n action.context,\n this.mediatorHttp,\n this.bindMethod,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n this.forceHttpGet,\n this.cacheSize,\n this.countTimeout,\n );\n return { source };\n }\n}\n\nexport interface IActorQuerySourceIdentifyHypermediaSparqlArgs extends IActorQuerySourceIdentifyHypermediaArgs {\n /**\n * The HTTP mediator\n */\n mediatorHttp: MediatorHttp;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * If URLs ending with '/sparql' should also be considered SPARQL endpoints.\n * @default {true}\n */\n checkUrlSuffix: boolean;\n /**\n * If non-update queries should be sent via HTTP GET instead of POST\n * @default {false}\n */\n forceHttpGet: boolean;\n /**\n * The cache size for COUNT queries.\n * @range {integer}\n * @default {1024}\n */\n cacheSize?: number;\n /**\n * The query operation for communicating bindings.\n * @default {values}\n */\n bindMethod: BindMethod;\n /**\n * Timeout in ms of how long count queries are allowed to take.\n * If the timeout is reached, an infinity cardinality is returned.\n * @default {3000}\n */\n countTimeout: number;\n}\n\nexport type BindMethod = 'values' | 'union' | 'filter';\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorHttp } from '@comunica/bus-http';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { Actor } from '@comunica/core';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQuerySource,\n BindingsStream,\n IActionContext,\n FragmentSelectorShape,\n Bindings,\n MetadataBindings,\n IQueryBindingsOptions,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { wrap, TransformIterator } from 'asynciterator';\nimport { SparqlEndpointFetcher } from 'fetch-sparql-endpoint';\nimport { LRUCache } from 'lru-cache';\nimport { DataFactory } from 'rdf-data-factory';\nimport { Algebra, Factory, toSparql, Util } from 'sparqlalgebrajs';\nimport type { BindMethod } from './ActorQuerySourceIdentifyHypermediaSparql';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\nconst VAR_COUNT = DF.variable('count');\nconst COUNT_INFINITY: RDF.QueryResultCardinality = { type: 'estimate', value: Number.POSITIVE_INFINITY };\n\nexport class QuerySourceSparql implements IQuerySource {\n protected static readonly SELECTOR_SHAPE: FragmentSelectorShape = {\n type: 'disjunction',\n children: [\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.PROJECT },\n joinBindings: true,\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.CONSTRUCT },\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.DESCRIBE },\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.ASK },\n },\n {\n type: 'operation',\n operation: { operationType: 'type', type: Algebra.types.COMPOSITE_UPDATE },\n },\n ],\n };\n\n public readonly referenceValue: string;\n private readonly url: string;\n private readonly context: IActionContext;\n private readonly mediatorHttp: MediatorHttp;\n private readonly bindMethod: BindMethod;\n private readonly countTimeout: number;\n private readonly bindingsFactory: BindingsFactory;\n\n private readonly endpointFetcher: SparqlEndpointFetcher;\n private readonly cache: LRUCache | undefined;\n\n private lastSourceContext: IActionContext | undefined;\n\n public constructor(\n url: string,\n context: IActionContext,\n mediatorHttp: MediatorHttp,\n bindMethod: BindMethod,\n bindingsFactory: BindingsFactory,\n forceHttpGet: boolean,\n cacheSize: number,\n countTimeout: number,\n ) {\n this.referenceValue = url;\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n this.bindMethod = bindMethod;\n this.bindingsFactory = bindingsFactory;\n this.endpointFetcher = new SparqlEndpointFetcher({\n method: forceHttpGet ? 'GET' : 'POST',\n fetch: (input: Request | string, init?: RequestInit) => this.mediatorHttp.mediate(\n { input, init, context: this.lastSourceContext! },\n ),\n prefixVariableQuestionMark: true,\n });\n this.cache = cacheSize > 0 ?\n new LRUCache({ max: cacheSize }) :\n undefined;\n this.countTimeout = countTimeout;\n }\n\n public async getSelectorShape(): Promise {\n return QuerySourceSparql.SELECTOR_SHAPE;\n }\n\n public queryBindings(\n operationIn: Algebra.Operation,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): BindingsStream {\n // If bindings are passed, modify the operations\n let operationPromise: Promise;\n if (options?.joinBindings) {\n operationPromise = QuerySourceSparql.addBindingsToOperation(this.bindMethod, operationIn, options.joinBindings);\n } else {\n operationPromise = Promise.resolve(operationIn);\n }\n\n const bindings: BindingsStream = new TransformIterator(async() => {\n // Prepare queries\n const operation = await operationPromise;\n const variables: RDF.Variable[] = Util.inScopeVariables(operation);\n const queryString = context.get(KeysInitQuery.queryString);\n const selectQuery: string = !options?.joinBindings && queryString ?\n queryString :\n QuerySourceSparql.operationToSelectQuery(operation, variables);\n const canContainUndefs = QuerySourceSparql.operationCanContainUndefs(operation);\n\n return this.queryBindingsRemote(this.url, selectQuery, variables, context, canContainUndefs);\n }, { autoStart: false });\n this.attachMetadata(bindings, context, operationPromise);\n\n return bindings;\n }\n\n public queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator {\n this.lastSourceContext = this.context.merge(context);\n const rawStream = this.endpointFetcher.fetchTriples(\n this.url,\n context.get(KeysInitQuery.queryString) ?? QuerySourceSparql.operationToQuery(operation),\n );\n this.lastSourceContext = undefined;\n const quads = wrap(rawStream, { autoStart: false, maxBufferSize: Number.POSITIVE_INFINITY });\n this.attachMetadata(quads, context, Promise.resolve(operation.input));\n return quads;\n }\n\n public queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise {\n this.lastSourceContext = this.context.merge(context);\n const promise = this.endpointFetcher.fetchAsk(\n this.url,\n context.get(KeysInitQuery.queryString) ?? QuerySourceSparql.operationToQuery(operation),\n );\n this.lastSourceContext = undefined;\n return promise;\n }\n\n public queryVoid(operation: Algebra.Update, context: IActionContext): Promise {\n this.lastSourceContext = this.context.merge(context);\n const promise = this.endpointFetcher.fetchUpdate(\n this.url,\n context.get(KeysInitQuery.queryString) ?? QuerySourceSparql.operationToQuery(operation),\n );\n this.lastSourceContext = undefined;\n return promise;\n }\n\n protected attachMetadata(\n target: AsyncIterator,\n context: IActionContext,\n operationPromise: Promise,\n ): void {\n // Emit metadata containing the estimated count\n let variablesCount: RDF.Variable[] = [];\n let canContainUndefs = false;\n // eslint-disable-next-line no-async-promise-executor,ts/no-misused-promises\n new Promise(async(resolve, reject) => {\n // Prepare queries\n let countQuery: string;\n try {\n const operation = await operationPromise;\n variablesCount = Util.inScopeVariables(operation);\n countQuery = QuerySourceSparql.operationToCountQuery(operation);\n canContainUndefs = QuerySourceSparql.operationCanContainUndefs(operation);\n\n const cachedCardinality = this.cache?.get(countQuery);\n if (cachedCardinality !== undefined) {\n return resolve(cachedCardinality);\n }\n\n const timeoutHandler = setTimeout(() => resolve(COUNT_INFINITY), this.countTimeout);\n const bindingsStream: BindingsStream = await this\n .queryBindingsRemote(this.url, countQuery, [ VAR_COUNT ], context, false);\n bindingsStream.on('data', (bindings: Bindings) => {\n clearTimeout(timeoutHandler);\n const count = bindings.get(VAR_COUNT);\n const cardinality: RDF.QueryResultCardinality = { type: 'estimate', value: Number.POSITIVE_INFINITY };\n if (count) {\n const cardinalityValue: number = Number.parseInt(count.value, 10);\n if (!Number.isNaN(cardinalityValue)) {\n cardinality.type = 'exact';\n cardinality.value = cardinalityValue;\n this.cache?.set(countQuery, cardinality);\n }\n }\n return resolve(cardinality);\n });\n bindingsStream.on('error', () => {\n clearTimeout(timeoutHandler);\n resolve(COUNT_INFINITY);\n });\n bindingsStream.on('end', () => {\n clearTimeout(timeoutHandler);\n resolve(COUNT_INFINITY);\n });\n } catch (error: unknown) {\n return reject(error);\n }\n })\n .then((cardinality) => {\n target.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality,\n canContainUndefs,\n variables: variablesCount,\n });\n })\n .catch(() => target.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: COUNT_INFINITY,\n canContainUndefs,\n variables: variablesCount,\n }));\n }\n\n /**\n * Create an operation that includes the bindings from the given bindings stream.\n * @param bindMethod A method for adding bindings to an operation.\n * @param operation The operation to bind to.\n * @param addBindings The bindings to add.\n * @param addBindings.bindings The bindings stream.\n * @param addBindings.metadata The bindings metadata.\n */\n public static async addBindingsToOperation(\n bindMethod: BindMethod,\n operation: Algebra.Operation,\n addBindings: { bindings: BindingsStream; metadata: MetadataBindings },\n ): Promise {\n const bindings = await addBindings.bindings.toArray();\n\n switch (bindMethod) {\n case 'values':\n return AF.createJoin([\n AF.createValues(\n addBindings.metadata.variables,\n bindings.map(binding => Object.fromEntries([ ...binding ]\n .map(([ key, value ]) => [ `?${key.value}`, value ]))),\n ),\n operation,\n ], false);\n case 'union': { throw new Error('Not implemented yet: \"union\" case'); }\n case 'filter': { throw new Error('Not implemented yet: \"filter\" case'); }\n }\n }\n\n /**\n * Convert an operation to a select query for this pattern.\n * @param {Algebra.Operation} operation A query operation.\n * @param {RDF.Variable[]} variables The variables in scope for the operation.\n * @return {string} A select query string.\n */\n public static operationToSelectQuery(operation: Algebra.Operation, variables: RDF.Variable[]): string {\n return QuerySourceSparql.operationToQuery(AF.createProject(operation, variables));\n }\n\n /**\n * Convert an operation to a count query for the number of matching triples for this pattern.\n * @param {Algebra.Operation} operation A query operation.\n * @return {string} A count query string.\n */\n public static operationToCountQuery(operation: Algebra.Operation): string {\n return QuerySourceSparql.operationToQuery(AF.createProject(\n AF.createExtend(\n AF.createGroup(\n operation,\n [],\n [ AF.createBoundAggregate(\n DF.variable('var0'),\n 'count',\n AF.createWildcardExpression(),\n false,\n ) ],\n ),\n DF.variable('count'),\n AF.createTermExpression(DF.variable('var0')),\n ),\n [ DF.variable('count') ],\n ));\n }\n\n /**\n * Convert an operation to a query for this pattern.\n * @param {Algebra.Operation} operation A query operation.\n * @return {string} A query string.\n */\n public static operationToQuery(operation: Algebra.Operation): string {\n return toSparql(operation, { sparqlStar: true });\n }\n\n /**\n * Check if the given operation may produce undefined values.\n * @param operation\n */\n public static operationCanContainUndefs(operation: Algebra.Operation): boolean {\n let canContainUndefs = false;\n Util.recurseOperation(operation, {\n leftjoin(): boolean {\n canContainUndefs = true;\n return false;\n },\n values(values: Algebra.Values): boolean {\n canContainUndefs = values.bindings.some(bindings => values.variables.some(variable => !(`?${variable.value}` in bindings)));\n return false;\n },\n union(union: Algebra.Union): boolean {\n // Determine variables in scope of the union branches\n const scopedVariables = union.input\n .map(Util.inScopeVariables)\n .map(variables => variables.map(v => v.value))\n .map(variables => variables.sort((a, b) => a.localeCompare(b)))\n .map(variables => variables.join(','));\n\n // If not all scoped variables in union branches are equal, then we definitely can have undefs\n if (!scopedVariables.every(val => val === scopedVariables[0])) {\n canContainUndefs = true;\n return false;\n }\n\n return true;\n },\n });\n return canContainUndefs;\n }\n\n /**\n * Send a SPARQL query to a SPARQL endpoint and retrieve its bindings as a stream.\n * @param {string} endpoint A SPARQL endpoint URL.\n * @param {string} query A SPARQL query string.\n * @param {RDF.Variable[]} variables The expected variables.\n * @param {IActionContext} context The source context.\n * @param canContainUndefs If the operation may contain undefined variables.\n * @return {BindingsStream} A stream of bindings.\n */\n public async queryBindingsRemote(\n endpoint: string,\n query: string,\n variables: RDF.Variable[],\n context: IActionContext,\n canContainUndefs: boolean,\n ): Promise {\n this.lastSourceContext = this.context.merge(context);\n const rawStream = await this.endpointFetcher.fetchBindings(endpoint, query);\n this.lastSourceContext = undefined;\n\n const it = wrap(rawStream, { autoStart: false, maxBufferSize: Number.POSITIVE_INFINITY })\n .map((rawData: Record) => this.bindingsFactory.bindings(variables\n .map((variable) => {\n const value = rawData[`?${variable.value}`];\n if (!canContainUndefs && !value) {\n Actor.getContextLogger(this.context)?.warn(`The endpoint ${endpoint} failed to provide a binding for ${variable.value}.`);\n }\n return <[RDF.Variable, RDF.Term]> [ variable, value ];\n })\n .filter(([ _, v ]) => Boolean(v))));\n return it;\n }\n\n public toString(): string {\n return `QuerySourceSparql(${this.url})`;\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport { ActorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type {\n IActionQuerySourceIdentify,\n IActorQuerySourceIdentifyOutput,\n IActorQuerySourceIdentifyArgs,\n} from '@comunica/bus-query-source-identify';\nimport type { MediatorQuerySourceIdentifyHypermedia } from '@comunica/bus-query-source-identify-hypermedia';\nimport type { MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { MediatorRdfResolveHypermediaLinks } from '@comunica/bus-rdf-resolve-hypermedia-links';\nimport type { MediatorRdfResolveHypermediaLinksQueue } from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type { IActorTest } from '@comunica/core';\nimport { QuerySourceHypermedia } from './QuerySourceHypermedia';\n\n/**\n * A comunica Hypermedia Query Source Identify Actor.\n */\nexport class ActorQuerySourceIdentifyHypermedia extends ActorQuerySourceIdentify {\n public readonly mediatorDereferenceRdf: MediatorDereferenceRdf;\n public readonly mediatorMetadata: MediatorRdfMetadata;\n public readonly mediatorMetadataExtract: MediatorRdfMetadataExtract;\n public readonly mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n public readonly mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n public readonly mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n public readonly mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly cacheSize: number;\n public readonly maxIterators: number;\n public readonly aggregateTraversalStore: boolean;\n\n public constructor(args: IActorQuerySourceIdentifyHypermediaArgs) {\n super(args);\n }\n\n public async test(action: IActionQuerySourceIdentify): Promise {\n if (typeof action.querySourceUnidentified.value !== 'string') {\n throw new TypeError(`${this.name} requires a single query source with a URL value to be present in the context.`);\n }\n return true;\n }\n\n public async run(action: IActionQuerySourceIdentify): Promise {\n return {\n querySource: {\n source: new QuerySourceHypermedia(\n this.cacheSize,\n action.querySourceUnidentified.value,\n action.querySourceUnidentified.type,\n this.maxIterators,\n this.aggregateTraversalStore &&\n Boolean(action.querySourceUnidentified.context?.get(KeysQuerySourceIdentify.traverse)),\n {\n mediatorMetadata: this.mediatorMetadata,\n mediatorMetadataExtract: this.mediatorMetadataExtract,\n mediatorMetadataAccumulate: this.mediatorMetadataAccumulate,\n mediatorDereferenceRdf: this.mediatorDereferenceRdf,\n mediatorQuerySourceIdentifyHypermedia: this.mediatorQuerySourceIdentifyHypermedia,\n mediatorRdfResolveHypermediaLinks: this.mediatorRdfResolveHypermediaLinks,\n mediatorRdfResolveHypermediaLinksQueue: this.mediatorRdfResolveHypermediaLinksQueue,\n },\n warningMessage => this.logWarn(action.context, warningMessage),\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n ),\n context: action.querySourceUnidentified.context ?? new ActionContext(),\n },\n };\n }\n}\n\nexport interface IActorQuerySourceIdentifyHypermediaArgs extends IActorQuerySourceIdentifyArgs {\n /**\n * The maximum number of entries in the LRU cache, set to 0 to disable.\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n /**\n * The maximum number of links that can be followed in parallel.\n * @default {64}\n */\n maxIterators: number;\n /**\n * If all discovered quads across all links from a traversal source should be indexed in an aggregated store,\n * to speed up later calls.\n * This only applies to sources annotated with KeysQuerySourceIdentify.traverse.\n * @default {true}\n */\n aggregateTraversalStore: boolean;\n /**\n * The RDF dereference mediator\n */\n mediatorDereferenceRdf: MediatorDereferenceRdf;\n /**\n * The metadata mediator\n */\n mediatorMetadata: MediatorRdfMetadata;\n /**\n * The metadata extract mediator\n */\n mediatorMetadataExtract: MediatorRdfMetadataExtract;\n /**\n * The metadata accumulate mediator\n */\n mediatorMetadataAccumulate?: MediatorRdfMetadataAccumulate;\n /**\n * The hypermedia resolve mediator\n */\n mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n /**\n * The hypermedia links resolve mediator\n */\n mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n /**\n * The hypermedia links queue resolve mediator\n */\n mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { ILinkQueue } from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysStatistics } from '@comunica/context-entries';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n ILink,\n IQuerySource,\n IActionContext,\n MetadataBindings,\n IQueryBindingsOptions,\n IStatisticBase,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator, BufferedIteratorOptions } from 'asynciterator';\nimport { BufferedIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nexport abstract class LinkedRdfSourcesAsyncRdfIterator extends BufferedIterator {\n protected readonly operation: Algebra.Operation;\n protected readonly queryBindingsOptions: IQueryBindingsOptions | undefined;\n protected readonly context: IActionContext;\n\n private readonly cacheSize: number;\n protected readonly firstUrl: string;\n private readonly maxIterators: number;\n private readonly sourceStateGetter: SourceStateGetter;\n\n protected started = false;\n private readonly currentIterators: AsyncIterator[] = [];\n private iteratorsPendingCreation = 0;\n private iteratorsPendingTermination = 0;\n // eslint-disable-next-line unicorn/no-useless-undefined\n private accumulatedMetadata: Promise = Promise.resolve(undefined);\n private preflightMetadata: Promise | undefined;\n\n public constructor(\n cacheSize: number,\n operation: Algebra.Operation,\n queryBindingsOptions: IQueryBindingsOptions | undefined,\n context: IActionContext,\n firstUrl: string,\n maxIterators: number,\n sourceStateGetter: SourceStateGetter,\n options?: BufferedIteratorOptions,\n ) {\n super({ autoStart: false, ...options });\n this._reading = false;\n this.cacheSize = cacheSize;\n this.operation = operation;\n this.queryBindingsOptions = queryBindingsOptions;\n this.context = context;\n this.firstUrl = firstUrl;\n this.maxIterators = maxIterators;\n this.sourceStateGetter = sourceStateGetter;\n\n if (this.maxIterators <= 0) {\n throw new Error(`LinkedRdfSourcesAsyncRdfIterator.maxIterators must be larger than zero, but got ${this.maxIterators}`);\n }\n }\n\n /**\n * Start filling the buffer of this iterator.\n */\n public kickstart(): void {\n if (!this.started) {\n this._fillBufferAsync();\n }\n }\n\n public override getProperty

(propertyName: string, callback?: (value: P) => void): P | undefined {\n if (propertyName === 'metadata' && !this.started) {\n // If the iterator has not started yet, forcefully fetch the metadata from the source without starting the\n // iterator. This way, we keep the iterator lazy.\n if (!this.preflightMetadata) {\n this.preflightMetadata = new Promise((resolve, reject) => {\n this.sourceStateGetter({ url: this.firstUrl }, {})\n .then((sourceState) => {\n // Don't pass query options, as we don't want to consume any passed iterators\n const bindingsStream = sourceState.source.queryBindings(this.operation, this.context);\n bindingsStream.getProperty('metadata', (metadata: MetadataBindings) => {\n metadata.state = new MetadataValidationState();\n bindingsStream.destroy();\n this.accumulateMetadata(sourceState.metadata, metadata)\n .then((accumulatedMetadata) => {\n // Also merge fields that were not explicitly accumulated\n const returnMetadata = { ...sourceState.metadata, ...metadata, ...accumulatedMetadata };\n resolve(returnMetadata);\n })\n .catch(() => {\n resolve({\n ...sourceState.metadata,\n state: new MetadataValidationState(),\n });\n });\n });\n })\n .catch(reject);\n });\n }\n this.preflightMetadata\n .then(metadata => this.setProperty('metadata', metadata))\n .catch(() => {\n // Ignore errors\n });\n }\n return super.getProperty(propertyName, callback);\n }\n\n protected override _end(destroy?: boolean): void {\n // Close all running iterators\n for (const it of this.currentIterators) {\n it.destroy();\n }\n\n super._end(destroy);\n }\n\n /**\n * Get the internal link queue.\n * The returned instance must always be the same.\n */\n public abstract getLinkQueue(): Promise;\n\n /**\n * Determine the links to be followed from the current source given its metadata.\n * @param metadata The metadata of a source.\n */\n protected abstract getSourceLinks(metadata: Record, startSource: ISourceState): Promise;\n\n public override _read(count: number, done: () => void): void {\n if (this.started) {\n // Read from all current iterators\n for (const iterator of this.currentIterators) {\n while (count > 0) {\n const read = iterator.read();\n if (read === null) {\n break;\n } else {\n count--;\n this._push(read);\n }\n }\n if (count <= 0) {\n break;\n }\n }\n\n // Schedule new iterators if needed\n if (count >= 0 && this.canStartNewIterator()) {\n // We can safely ignore skip catching the error, since we are guaranteed to have\n // successfully got the source for this.firstUrl before.\n // eslint-disable-next-line ts/no-floating-promises\n this.sourceStateGetter({ url: this.firstUrl }, {})\n .then((sourceState) => {\n this.startIteratorsForNextUrls(sourceState.handledDatasets, false);\n done();\n });\n } else {\n done();\n }\n } else {\n // The first time this is called, prepare the first source\n this.started = true;\n\n // Await the source to be set, and start the source iterator\n this.sourceStateGetter({ url: this.firstUrl }, {})\n .then((sourceState) => {\n this.startIterator(sourceState);\n done();\n })\n // Destroy should be async because it can be called before it is listened to\n .catch(error => setTimeout(() => this.destroy(error)));\n }\n }\n\n protected canStartNewIterator(): boolean {\n return (this.currentIterators.length + this.iteratorsPendingCreation + this.iteratorsPendingTermination) <\n this.maxIterators && (!this.canStartNewIteratorConsiderReadable() || !this.readable);\n }\n\n protected canStartNewIteratorConsiderReadable(): boolean {\n return true;\n }\n\n protected areIteratorsRunning(): boolean {\n return (this.currentIterators.length + this.iteratorsPendingCreation + this.iteratorsPendingTermination) > 0;\n }\n\n /**\n * Append the fields from appendingMetadata into accumulatedMetadata.\n * @param accumulatedMetadata The fields to append to.\n * @param appendingMetadata The fields to append.\n * @protected\n */\n protected abstract accumulateMetadata(\n accumulatedMetadata: MetadataBindings,\n appendingMetadata: MetadataBindings,\n ): Promise;\n\n /**\n * Start a new iterator for the given source.\n * Once the iterator is done, it will either determine a new source, or it will close the linked iterator.\n * @param {ISourceState} startSource The start source state.\n */\n protected startIterator(startSource: ISourceState): void {\n // Delegate the quad pattern query to the given source\n try {\n const iterator = startSource.source.queryBindings(this.operation, this.context, this.queryBindingsOptions);\n this.currentIterators.push(iterator);\n let receivedEndEvent = false;\n let receivedMetadata = false;\n\n // Attach readers to the newly created iterator\n (iterator)._destination = this;\n iterator.on('error', (error: Error) => this.destroy(error));\n iterator.on('readable', () => this._fillBuffer());\n iterator.on('end', () => {\n this.currentIterators.splice(this.currentIterators.indexOf(iterator), 1);\n\n // Indicate that this iterator still needs to flush its next-links.\n // Without this, the linked iterator could sometimes be closed before next-links are obtained.\n receivedEndEvent = true;\n if (!receivedMetadata) {\n this.iteratorsPendingTermination++;\n }\n\n // If the metadata was already received, handle the next URL in the queue\n if (receivedMetadata) {\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }\n });\n\n // Listen for the metadata of the source\n // The metadata property is guaranteed to be set\n iterator.getProperty('metadata', (metadata: MetadataBindings) => {\n // Accumulate the metadata object\n this.accumulatedMetadata = this.accumulatedMetadata\n .then(previousMetadata => (async() => {\n if (!previousMetadata) {\n previousMetadata = startSource.metadata;\n }\n return this.accumulateMetadata(previousMetadata, metadata);\n })()\n .then((accumulatedMetadata) => {\n // Also merge fields that were not explicitly accumulated\n const returnMetadata = { ...startSource.metadata, ...metadata, ...accumulatedMetadata };\n\n // Create new metadata state\n returnMetadata.state = new MetadataValidationState();\n\n // Emit metadata, and invalidate any metadata that was set before\n this.updateMetadata(returnMetadata);\n\n // Invalidate any preflight metadata\n if (this.preflightMetadata) {\n this.preflightMetadata\n .then(metadataIn => metadataIn.state.invalidate())\n .catch(() => {\n // Ignore errors\n });\n }\n\n // Determine next urls, which will eventually become a next-next source.\n this.getSourceLinks(returnMetadata, startSource)\n .then((nextUrls: ILink[]) => Promise.all(nextUrls))\n .then(async(nextUrls: ILink[]) => {\n // Append all next URLs to our queue\n const linkQueue = await this.getLinkQueue();\n for (const nextUrl of nextUrls) {\n linkQueue.push(nextUrl, startSource.link);\n }\n\n receivedMetadata = true;\n if (receivedEndEvent) {\n this.iteratorsPendingTermination--;\n }\n\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }).catch(error => this.destroy(error));\n\n return returnMetadata;\n })).catch((error) => {\n this.destroy(error);\n return {};\n });\n });\n } catch (syncError: unknown) {\n this.destroy( syncError);\n }\n }\n\n protected updateMetadata(metadataNew: MetadataBindings): void {\n const metadataToInvalidate = this.getProperty('metadata');\n this.setProperty('metadata', metadataNew);\n metadataToInvalidate?.state.invalidate();\n }\n\n protected isRunning(): boolean {\n return !this.done;\n }\n\n /**\n * Check if a next URL is in the queue.\n * If yes, start a new iterator.\n * If no, close this iterator.\n * @param handledDatasets\n * @param canClose\n */\n protected startIteratorsForNextUrls(handledDatasets: Record, canClose: boolean): void {\n this.getLinkQueue()\n .then((linkQueue) => {\n // Create as many new iterators as possible\n while (this.canStartNewIterator() && this.isRunning()) {\n const nextLink = linkQueue.pop();\n if (nextLink) {\n this.iteratorsPendingCreation++;\n this.sourceStateGetter(nextLink, handledDatasets)\n .then((nextSourceState) => {\n // If we find a statistic tracking dereference events we emit the relevant data\n const statisticDereferenceLinks: IStatisticBase | undefined = this.context.get(\n KeysStatistics.dereferencedLinks,\n );\n if (statisticDereferenceLinks) {\n statisticDereferenceLinks.updateStatistic(\n {\n url: nextSourceState.link.url,\n metadata: { ...nextSourceState.metadata, ...nextSourceState.link.metadata },\n },\n nextSourceState.source,\n );\n }\n\n this.iteratorsPendingCreation--;\n this.startIterator(nextSourceState);\n })\n .catch(error => this.emit('error', error));\n } else {\n break;\n }\n }\n\n // Close, only if no other iterators are still running\n if (canClose && this.isCloseable(linkQueue, true)) {\n this.close();\n }\n })\n .catch(error => this.destroy(error));\n }\n\n protected isCloseable(linkQueue: ILinkQueue, _requireQueueEmpty: boolean): boolean {\n return linkQueue.isEmpty() && !this.areIteratorsRunning();\n }\n}\n\n/**\n * The current state of a source.\n * This is needed for following links within a source.\n */\nexport interface ISourceState {\n /**\n * The link to this source.\n */\n link: ILink;\n /**\n * A source.\n */\n source: IQuerySource;\n /**\n * The source's initial metadata.\n */\n metadata: MetadataBindings;\n /**\n * All dataset identifiers that have been passed for this source.\n */\n handledDatasets: Record;\n}\n\nexport type SourceStateGetter = (link: ILink, handledDatasets: Record) => Promise;\n","import type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { MediatorRdfResolveHypermediaLinks } from '@comunica/bus-rdf-resolve-hypermedia-links';\nimport type {\n ILinkQueue,\n MediatorRdfResolveHypermediaLinksQueue,\n} from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysQueryOperation, KeysStatistics } from '@comunica/context-entries';\nimport type {\n IActionContext,\n IAggregatedStore,\n IQueryBindingsOptions,\n MetadataBindings,\n ILink,\n IStatisticBase,\n IDiscoverEventData,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { SourceStateGetter, ISourceState } from './LinkedRdfSourcesAsyncRdfIterator';\nimport { LinkedRdfSourcesAsyncRdfIterator } from './LinkedRdfSourcesAsyncRdfIterator';\n\nconst DF = new DataFactory();\nconst AF = new Factory();\n\n/**\n * An quad iterator that can iterate over consecutive RDF sources\n * that are determined using the rdf-resolve-hypermedia-links bus.\n *\n * @see LinkedRdfSourcesAsyncRdfIterator\n */\nexport class MediatedLinkedRdfSourcesAsyncRdfIterator extends LinkedRdfSourcesAsyncRdfIterator {\n private readonly mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n private readonly mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n private readonly mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n private readonly forceSourceType?: string;\n private readonly handledUrls: Record;\n private readonly aggregatedStore: IAggregatedStore | undefined;\n private linkQueue: Promise | undefined;\n private wasForcefullyClosed = false;\n\n public constructor(\n cacheSize: number,\n operation: Algebra.Operation,\n queryBindingsOptions: IQueryBindingsOptions | undefined,\n context: IActionContext,\n forceSourceType: string | undefined,\n firstUrl: string,\n maxIterators: number,\n sourceStateGetter: SourceStateGetter,\n aggregatedStore: IAggregatedStore | undefined,\n mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate,\n mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks,\n mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue,\n ) {\n super(\n cacheSize,\n operation,\n queryBindingsOptions,\n context,\n firstUrl,\n maxIterators,\n sourceStateGetter,\n // Buffersize must be infinite for an aggregated store because it must keep filling until there are no more\n // derived iterators in the aggregated store.\n aggregatedStore ? { maxBufferSize: Number.POSITIVE_INFINITY } : undefined,\n );\n this.forceSourceType = forceSourceType;\n this.mediatorMetadataAccumulate = mediatorMetadataAccumulate;\n this.mediatorRdfResolveHypermediaLinks = mediatorRdfResolveHypermediaLinks;\n this.mediatorRdfResolveHypermediaLinksQueue = mediatorRdfResolveHypermediaLinksQueue;\n this.handledUrls = { [firstUrl]: true };\n this.aggregatedStore = aggregatedStore;\n }\n\n // Mark the aggregated store as ended once we trigger the closing or destroying of this iterator.\n // We don't override _end, because that would mean that we have to wait\n // until the buffer of this iterator must be fully consumed, which will not always be the case.\n\n public override close(): void {\n if (!this.aggregatedStore) {\n super.close();\n return;\n }\n\n this.getLinkQueue()\n .then((linkQueue) => {\n if (this.isCloseable(linkQueue, false)) {\n // Wait a tick before ending the aggregatedStore, to ensure that pending match() calls to it have started.\n if (this.aggregatedStore) {\n setTimeout(() => this.aggregatedStore!.end());\n }\n super.close();\n } else {\n this.wasForcefullyClosed = true;\n }\n })\n .catch(error => super.destroy(error));\n }\n\n public override destroy(cause?: Error): void {\n if (!this.aggregatedStore) {\n super.destroy(cause);\n return;\n }\n\n this.getLinkQueue()\n .then((linkQueue) => {\n if (cause ?? this.isCloseable(linkQueue, false)) {\n // Wait a tick before ending the aggregatedStore, to ensure that pending match() calls to it have started.\n if (this.aggregatedStore) {\n setTimeout(() => this.aggregatedStore!.end());\n }\n super.destroy(cause);\n } else {\n this.wasForcefullyClosed = true;\n }\n })\n .catch(error => super.destroy(error));\n }\n\n protected override isCloseable(linkQueue: ILinkQueue, requireQueueEmpty: boolean): boolean {\n return (requireQueueEmpty ? linkQueue.isEmpty() : this.wasForcefullyClosed || linkQueue.isEmpty()) &&\n !this.areIteratorsRunning();\n }\n\n protected override canStartNewIterator(): boolean {\n // Also allow sub-iterators to be started if the aggregated store has at least one running iterator.\n // We need this because there are cases where these running iterators will be consumed before this linked iterator.\n return (!this.wasForcefullyClosed &&\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n (this.aggregatedStore && this.aggregatedStore.hasRunningIterators())) || super.canStartNewIterator();\n }\n\n protected override canStartNewIteratorConsiderReadable(): boolean {\n return !this.aggregatedStore;\n }\n\n protected override isRunning(): boolean {\n // Same as above\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n return (this.aggregatedStore && this.aggregatedStore.hasRunningIterators()) || !this.done;\n }\n\n public getLinkQueue(): Promise {\n if (!this.linkQueue) {\n this.linkQueue = this.mediatorRdfResolveHypermediaLinksQueue\n .mediate({ firstUrl: this.firstUrl, context: this.context })\n .then(result => result.linkQueue);\n }\n return this.linkQueue;\n }\n\n protected async getSourceLinks(metadata: Record, startSource: ISourceState): Promise {\n try {\n const { links } = await this.mediatorRdfResolveHypermediaLinks.mediate({ context: this.context, metadata });\n // Update discovery event statistic if available\n const traversalTracker: IStatisticBase | undefined =\n this.context.get(KeysStatistics.discoveredLinks);\n if (traversalTracker) {\n for (const link of links) {\n traversalTracker.updateStatistic({ url: link.url, metadata: { ...link.metadata }}, startSource.link);\n }\n }\n\n // Filter URLs to avoid cyclic next-page loops\n return links.filter((link) => {\n if (this.handledUrls[link.url]) {\n return false;\n }\n this.handledUrls[link.url] = true;\n return true;\n });\n } catch {\n // No next URLs may be available, for example when we've reached the end of a Hydra next-page sequence.\n return [];\n }\n }\n\n protected override startIterator(startSource: ISourceState): void {\n if (this.aggregatedStore && !this.aggregatedStore.containedSources.has(startSource.link.url)) {\n // A source that has been cached due to earlier query executions may not be part of the aggregated store yet.\n // In that case, we add all quads from that source to the aggregated store.\n this.aggregatedStore?.containedSources.add(startSource.link.url);\n const stream = startSource.source.queryBindings(\n AF.createPattern(\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n DF.variable('g'),\n ),\n this.context.set(KeysQueryOperation.unionDefaultGraph, true),\n ).map(bindings => DF.quad(\n bindings.get('s')!,\n bindings.get('p')!,\n bindings.get('o')!,\n bindings.get('g'),\n ));\n this.aggregatedStore.import( stream)\n .on('end', () => {\n super.startIterator(startSource);\n });\n } else {\n super.startIterator(startSource);\n }\n }\n\n public async accumulateMetadata(\n accumulatedMetadata: MetadataBindings,\n appendingMetadata: MetadataBindings,\n ): Promise {\n return (await this.mediatorMetadataAccumulate.mediate({\n mode: 'append',\n accumulatedMetadata,\n appendingMetadata,\n context: this.context,\n })).metadata;\n }\n\n protected override updateMetadata(metadataNew: MetadataBindings): void {\n super.updateMetadata(metadataNew);\n this.aggregatedStore?.setBaseMetadata(metadataNew, true);\n }\n}\n","import { QuerySourceRdfJs } from '@comunica/actor-query-source-identify-rdfjs';\nimport type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { IActorDereferenceRdfOutput, MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport type { MediatorQuerySourceIdentifyHypermedia } from '@comunica/bus-query-source-identify-hypermedia';\nimport type { IActorRdfMetadataOutput, MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { MediatorRdfResolveHypermediaLinks } from '@comunica/bus-rdf-resolve-hypermedia-links';\nimport type { MediatorRdfResolveHypermediaLinksQueue } from '@comunica/bus-rdf-resolve-hypermedia-links-queue';\nimport { KeysQuerySourceIdentify } from '@comunica/context-entries';\nimport type {\n BindingsStream,\n FragmentSelectorShape,\n IActionContext,\n IAggregatedStore,\n IQueryBindingsOptions,\n IQuerySource,\n MetadataBindings,\n ILink,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { TransformIterator } from 'asynciterator';\nimport { LRUCache } from 'lru-cache';\nimport { Readable } from 'readable-stream';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { ISourceState } from './LinkedRdfSourcesAsyncRdfIterator';\nimport { MediatedLinkedRdfSourcesAsyncRdfIterator } from './MediatedLinkedRdfSourcesAsyncRdfIterator';\nimport { StreamingStoreMetadata } from './StreamingStoreMetadata';\n\nexport class QuerySourceHypermedia implements IQuerySource {\n public readonly referenceValue: string;\n public readonly firstUrl: string;\n public readonly forceSourceType?: string;\n public readonly aggregateStore: boolean;\n public readonly mediators: IMediatorArgs;\n public readonly logWarning: (warningMessage: string) => void;\n public readonly bindingsFactory: BindingsFactory;\n\n /**\n * A cache for source URLs to source states.\n */\n public sourcesState: LRUCache>;\n\n private readonly cacheSize: number;\n private readonly maxIterators: number;\n\n public constructor(\n cacheSize: number,\n firstUrl: string,\n forceSourceType: string | undefined,\n maxIterators: number,\n aggregateStore: boolean,\n mediators: IMediatorArgs,\n logWarning: (warningMessage: string) => void,\n bindingsFactory: BindingsFactory,\n ) {\n this.referenceValue = firstUrl;\n this.cacheSize = cacheSize;\n this.firstUrl = firstUrl;\n this.forceSourceType = forceSourceType;\n this.maxIterators = maxIterators;\n this.mediators = mediators;\n this.aggregateStore = aggregateStore;\n this.logWarning = logWarning;\n this.bindingsFactory = bindingsFactory;\n this.sourcesState = new LRUCache>({ max: this.cacheSize });\n }\n\n public async getSelectorShape(context: IActionContext): Promise {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return source.source.getSelectorShape(context);\n }\n\n public queryBindings(\n operation: Algebra.Operation,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): BindingsStream {\n // Optimized match with aggregated store if enabled and started.\n const aggregatedStore: IAggregatedStore | undefined = this.getAggregateStore(context);\n if (aggregatedStore && operation.type === 'pattern' && aggregatedStore.started) {\n return new QuerySourceRdfJs(aggregatedStore, this.bindingsFactory).queryBindings(operation, context);\n }\n\n // Initialize the sources state on first call\n if (this.sourcesState.size === 0) {\n this.getSourceCached({ url: this.firstUrl }, {}, context, aggregatedStore)\n .catch(error => it.destroy(error));\n }\n\n const it: MediatedLinkedRdfSourcesAsyncRdfIterator = new MediatedLinkedRdfSourcesAsyncRdfIterator(\n this.cacheSize,\n operation,\n options,\n context,\n this.forceSourceType,\n this.firstUrl,\n this.maxIterators,\n (link, handledDatasets) => this.getSourceCached(link, handledDatasets, context, aggregatedStore),\n aggregatedStore,\n this.mediators.mediatorMetadataAccumulate,\n this.mediators.mediatorRdfResolveHypermediaLinks,\n this.mediators.mediatorRdfResolveHypermediaLinksQueue,\n );\n if (aggregatedStore) {\n aggregatedStore.started = true;\n\n // Kickstart this iterator when derived iterators are created from the aggregatedStore,\n // otherwise the traversal process will not start if this iterator is not the first one to be consumed.\n const listener = (): void => it.kickstart();\n aggregatedStore.addIteratorCreatedListener(listener);\n it.on('end', () => aggregatedStore.removeIteratorCreatedListener(listener));\n }\n\n return it;\n }\n\n public queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator {\n return new TransformIterator(async() => {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return source.source.queryQuads(operation, context);\n });\n }\n\n public async queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return await source.source.queryBoolean(operation, context);\n }\n\n public async queryVoid(operation: Algebra.Update, context: IActionContext): Promise {\n const source = await this.getSourceCached({ url: this.firstUrl }, {}, context, this.getAggregateStore(context));\n return await source.source.queryVoid(operation, context);\n }\n\n /**\n * Resolve a source for the given URL.\n * @param link A source link.\n * @param handledDatasets A hash of dataset identifiers that have already been handled.\n * @param context The action context.\n * @param aggregatedStore An optional aggregated store.\n */\n public async getSource(\n link: ILink,\n handledDatasets: Record,\n context: IActionContext,\n aggregatedStore: IAggregatedStore | undefined,\n ): Promise {\n // Include context entries from link\n if (link.context) {\n context = context.merge(link.context);\n }\n\n // Get the RDF representation of the given document\n let url = link.url;\n let quads: RDF.Stream;\n let metadata: Record;\n try {\n const dereferenceRdfOutput: IActorDereferenceRdfOutput = await this.mediators.mediatorDereferenceRdf\n .mediate({ context, url });\n url = dereferenceRdfOutput.url;\n\n // Determine the metadata\n const rdfMetadataOutput: IActorRdfMetadataOutput = await this.mediators.mediatorMetadata.mediate(\n { context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples },\n );\n\n rdfMetadataOutput.data.on('error', () => {\n // Silence errors in the data stream,\n // as they will be emitted again in the metadata stream,\n // and will result in a promise rejection anyways.\n // If we don't do this, we end up with an unhandled error message\n });\n\n metadata = (await this.mediators.mediatorMetadataExtract.mediate({\n context,\n url,\n // The problem appears to be conflicting metadata keys here\n metadata: rdfMetadataOutput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n quads = rdfMetadataOutput.data;\n\n // Optionally filter the resulting data\n if (link.transform) {\n quads = await link.transform(quads);\n }\n } catch (error: unknown) {\n // Make sure that dereference errors are only emitted once an actor really needs the read quads\n // This for example allows SPARQL endpoints that error on service description fetching to still be source-forcible\n quads = new Readable();\n quads.read = () => {\n setTimeout(() => quads.emit('error', error));\n return null;\n };\n ({ metadata } = await this.mediators.mediatorMetadataAccumulate.mediate({ context, mode: 'initialize' }));\n\n // Log as warning, because the quads above may not always be consumed (e.g. for SPARQL endpoints),\n // so the user would not be notified of something going wrong otherwise.\n this.logWarning(`Metadata extraction for ${url} failed: ${( error).message}`);\n }\n\n // Aggregate all discovered quads into a store.\n aggregatedStore?.setBaseMetadata( metadata, false);\n aggregatedStore?.containedSources.add(link.url);\n aggregatedStore?.import(quads);\n\n // Determine the source\n const { source, dataset } = await this.mediators.mediatorQuerySourceIdentifyHypermedia.mediate({\n context,\n forceSourceType: link.url === this.firstUrl ? this.forceSourceType : undefined,\n handledDatasets,\n metadata,\n quads,\n url,\n });\n\n if (dataset) {\n // Mark the dataset as applied\n // This is needed to make sure that things like QPF search forms are only applied once,\n // and next page links are followed after that.\n handledDatasets[dataset] = true;\n }\n\n return { link, source, metadata: metadata, handledDatasets };\n }\n\n /**\n * Resolve a source for the given URL.\n * This will first try to retrieve the source from cache.\n * @param link A source ILink.\n * @param handledDatasets A hash of dataset identifiers that have already been handled.\n * @param context The action context.\n * @param aggregatedStore An optional aggregated store.\n */\n protected getSourceCached(\n link: ILink,\n handledDatasets: Record,\n context: IActionContext,\n aggregatedStore: IAggregatedStore | undefined,\n ): Promise {\n let source = this.sourcesState.get(link.url);\n if (source) {\n return source;\n }\n source = this.getSource(link, handledDatasets, context, aggregatedStore);\n if (link.url === this.firstUrl || aggregatedStore === undefined) {\n this.sourcesState.set(link.url, source);\n }\n return source;\n }\n\n public getAggregateStore(context: IActionContext): IAggregatedStore | undefined {\n let aggregatedStore: IAggregatedStore | undefined;\n if (this.aggregateStore) {\n const aggregatedStores: Map | undefined = context\n .get(KeysQuerySourceIdentify.hypermediaSourcesAggregatedStores);\n if (aggregatedStores) {\n aggregatedStore = aggregatedStores.get(this.firstUrl);\n if (!aggregatedStore) {\n aggregatedStore = new StreamingStoreMetadata(\n undefined,\n async(accumulatedMetadata, appendingMetadata) => \n (await this.mediators.mediatorMetadataAccumulate.mediate({\n mode: 'append',\n accumulatedMetadata,\n appendingMetadata,\n context,\n })).metadata,\n );\n aggregatedStores.set(this.firstUrl, aggregatedStore);\n }\n return aggregatedStore;\n }\n }\n }\n\n public toString(): string {\n return `QuerySourceHypermedia(${this.firstUrl})`;\n }\n}\n\nexport interface IMediatorArgs {\n mediatorDereferenceRdf: MediatorDereferenceRdf;\n mediatorMetadata: MediatorRdfMetadata;\n mediatorMetadataExtract: MediatorRdfMetadataExtract;\n mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;\n mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;\n}\n","// eslint-disable-next-line import/no-nodejs-modules\nimport type { EventEmitter } from 'node:events';\nimport { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { MetadataQuads, IAggregatedStore, MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { StreamingStore } from 'rdf-streaming-store';\n\n/**\n * A StreamingStore that returns an AsyncIterator with a valid MetadataQuads property.\n */\nexport class StreamingStoreMetadata extends StreamingStore implements IAggregatedStore {\n public started = false;\n public containedSources = new Set();\n public readonly runningIterators: Set> = new Set>();\n protected readonly iteratorCreatedListeners: Set<() => void> = new Set();\n protected readonly metadataAccumulator:\n (accumulatedMetadata: MetadataBindings, appendingMetadata: MetadataBindings) => Promise;\n\n protected baseMetadata: MetadataBindings = {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: [],\n };\n\n public constructor(\n store: RDF.Store | undefined,\n metadataAccumulator:\n (accumulatedMetadata: MetadataBindings, appendingMetadata: MetadataBindings) => Promise,\n ) {\n super(store);\n this.metadataAccumulator = metadataAccumulator;\n }\n\n public override import(stream: RDF.Stream): EventEmitter {\n if (!this.ended) {\n super.import(stream);\n }\n return stream;\n }\n\n public hasRunningIterators(): boolean {\n return this.runningIterators.size > 0;\n }\n\n public override match(\n subject?: RDF.Term | null,\n predicate?: RDF.Term | null,\n object?: RDF.Term | null,\n graph?: RDF.Term | null,\n ): AsyncIterator {\n // Wrap the raw stream in an AsyncIterator\n const rawStream = super.match(subject, predicate, object, graph);\n const iterator = new ClosableTransformIterator(\n rawStream,\n {\n autoStart: false,\n onClose: () => {\n // Running iterators are deleted once closed or destroyed\n this.runningIterators.delete(iterator);\n },\n },\n );\n\n // Expose the metadata property containing the cardinality\n let count = this.getStore().countQuads(subject!, predicate!, object!, graph!);\n const metadata: MetadataQuads = {\n state: new MetadataValidationState(),\n cardinality: {\n type: 'estimate',\n value: count,\n },\n canContainUndefs: false,\n };\n iterator.setProperty('metadata', metadata);\n iterator.setProperty('lastCount', count);\n\n // Every time a new quad is pushed into the iterator, update the metadata\n rawStream.on('quad', () => {\n iterator.setProperty('lastCount', ++count);\n this.updateMetadataState(iterator, count);\n });\n\n // Store all running iterators until they close or are destroyed\n this.runningIterators.add(iterator);\n\n // Invoke creation listeners\n for (const listener of this.iteratorCreatedListeners) {\n listener();\n }\n\n return iterator;\n }\n\n public setBaseMetadata(metadata: MetadataBindings, updateStates: boolean): void {\n this.baseMetadata = { ...metadata };\n this.baseMetadata.cardinality = { type: 'exact', value: 0 };\n\n if (updateStates) {\n for (const iterator of this.runningIterators) {\n const count: number = iterator.getProperty('lastCount')!;\n this.updateMetadataState(iterator, count);\n }\n }\n }\n\n protected updateMetadataState(iterator: AsyncIterator, count: number): void {\n // Append the given cardinality to the base metadata\n const metadataNew: MetadataBindings = {\n state: new MetadataValidationState(),\n cardinality: {\n type: 'estimate',\n value: count,\n },\n canContainUndefs: false,\n variables: [],\n };\n\n this.metadataAccumulator(this.baseMetadata, metadataNew)\n .then((accumulatedMetadata) => {\n accumulatedMetadata.state = new MetadataValidationState();\n\n // Set the new metadata, and invalidate the previous state\n const metadataToInvalidate = iterator.getProperty('metadata');\n iterator.setProperty('metadata', accumulatedMetadata);\n metadataToInvalidate?.state.invalidate();\n })\n .catch(() => {\n // Void errors\n });\n }\n\n public addIteratorCreatedListener(listener: () => void): void {\n this.iteratorCreatedListeners.add(listener);\n }\n\n public removeIteratorCreatedListener(listener: () => void): void {\n this.iteratorCreatedListeners.delete(listener);\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentify,\n IActorQuerySourceIdentifyOutput,\n IActorQuerySourceIdentifyArgs,\n} from '@comunica/bus-query-source-identify';\nimport { ActorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { IActorTest } from '@comunica/core';\nimport { ActionContext } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { QuerySourceRdfJs } from './QuerySourceRdfJs';\n\n/**\n * A comunica RDFJS Query Source Identify Actor.\n */\nexport class ActorQuerySourceIdentifyRdfJs extends ActorQuerySourceIdentify {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQuerySourceIdentifyRdfJsArgs) {\n super(args);\n }\n\n public async test(action: IActionQuerySourceIdentify): Promise {\n const source = action.querySourceUnidentified;\n if (source.type !== undefined && source.type !== 'rdfjs') {\n throw new Error(`${this.name} requires a single query source with rdfjs type to be present in the context.`);\n }\n if (typeof source.value === 'string' || !('match' in source.value)) {\n throw new Error(`${this.name} received an invalid rdfjs query source.`);\n }\n return true;\n }\n\n public async run(action: IActionQuerySourceIdentify): Promise {\n return {\n querySource: {\n source: new QuerySourceRdfJs(\n action.querySourceUnidentified.value,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context),\n ),\n context: action.querySourceUnidentified.context ?? new ActionContext(),\n },\n };\n }\n}\n\nexport interface IActorQuerySourceIdentifyRdfJsArgs extends IActorQuerySourceIdentifyArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { BindingsFactory } from '@comunica/bindings-factory';\nimport { filterMatchingQuotedQuads, quadsToBindings } from '@comunica/bus-query-source-identify';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { IQuerySource, BindingsStream, IActionContext, FragmentSelectorShape } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { AsyncIterator, wrap as wrapAsyncIterator } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { someTermsNested, filterTermsNested, someTerms, uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { IRdfJsSourceExtended } from './IRdfJsSourceExtended';\n\nconst AF = new Factory();\nconst DF = new DataFactory();\n\nexport class QuerySourceRdfJs implements IQuerySource {\n protected static readonly SELECTOR_SHAPE: FragmentSelectorShape = {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: AF.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')),\n },\n variablesOptional: [\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n ],\n };\n\n public referenceValue: string | RDF.Source;\n protected readonly source: IRdfJsSourceExtended;\n private readonly bindingsFactory: BindingsFactory;\n\n public constructor(source: RDF.Source, bindingsFactory: BindingsFactory) {\n this.source = source;\n this.referenceValue = source;\n this.bindingsFactory = bindingsFactory;\n }\n\n public static nullifyVariables(term: RDF.Term | undefined, quotedTripleFiltering: boolean): RDF.Term | undefined {\n return !term || term.termType === 'Variable' || (!quotedTripleFiltering &&\n term.termType === 'Quad' && someTermsNested(term, value => value.termType === 'Variable')) ?\n undefined :\n term;\n }\n\n public static hasDuplicateVariables(pattern: RDF.BaseQuad): boolean {\n const variables = filterTermsNested(pattern, term => term.termType === 'Variable');\n return variables.length > 1 && uniqTerms(variables).length < variables.length;\n }\n\n public async getSelectorShape(): Promise {\n return QuerySourceRdfJs.SELECTOR_SHAPE;\n }\n\n public queryBindings(operation: Algebra.Operation, context: IActionContext): BindingsStream {\n if (operation.type !== 'pattern') {\n throw new Error(`Attempted to pass non-pattern operation '${operation.type}' to QuerySourceRdfJs`);\n }\n\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n // Create an async iterator from the matched quad stream\n const rawStream = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n let it: AsyncIterator = rawStream instanceof AsyncIterator ?\n rawStream :\n wrapAsyncIterator(rawStream, { autoStart: false });\n\n // Perform post-match-filtering if the source does not support quoted triple filtering.\n if (!quotedTripleFiltering) {\n it = filterMatchingQuotedQuads(operation, it);\n }\n\n // Determine metadata\n if (!it.getProperty('metadata')) {\n this.setMetadata(it, operation)\n .catch(error => it.destroy(error));\n }\n\n return quadsToBindings(\n it,\n operation,\n this.bindingsFactory,\n Boolean(context.get(KeysQueryOperation.unionDefaultGraph)),\n );\n }\n\n protected async setMetadata(\n it: AsyncIterator,\n operation: Algebra.Pattern,\n ): Promise {\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n let cardinality: number;\n if (this.source.countQuads) {\n // If the source provides a dedicated method for determining cardinality, use that.\n cardinality = await this.source.countQuads(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n } else {\n // Otherwise, fallback to a sub-optimal alternative where we just call match again to count the quads.\n // WARNING: we can NOT reuse the original data stream here,\n // because we may lose data elements due to things happening async.\n let i = 0;\n cardinality = await new Promise((resolve, reject) => {\n const matches = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n matches.on('error', reject);\n matches.on('end', () => resolve(i));\n matches.on('data', () => i++);\n });\n }\n\n // If `match` would require filtering afterwards, our count will be an over-estimate.\n const wouldRequirePostFiltering = (!quotedTripleFiltering &&\n someTerms(operation, term => term.termType === 'Quad')) ||\n QuerySourceRdfJs.hasDuplicateVariables(operation);\n\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: { type: wouldRequirePostFiltering ? 'estimate' : 'exact', value: cardinality },\n canContainUndefs: false,\n });\n }\n\n public queryQuads(\n _operation: Algebra.Operation,\n _context: IActionContext,\n ): AsyncIterator {\n throw new Error('queryQuads is not implemented in QuerySourceRdfJs');\n }\n\n public queryBoolean(\n _operation: Algebra.Ask,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryBoolean is not implemented in QuerySourceRdfJs');\n }\n\n public queryVoid(\n _operation: Algebra.Update,\n _context: IActionContext,\n ): Promise {\n throw new Error('queryVoid is not implemented in QuerySourceRdfJs');\n }\n\n public toString(): string {\n return `QuerySourceRdfJs(${this.source.constructor.name})`;\n }\n}\n","import type {\n IActionQuerySourceIdentify,\n IActorQuerySourceIdentifyOutput,\n IActorQuerySourceIdentifyArgs,\n MediatorQuerySourceIdentify,\n} from '@comunica/bus-query-source-identify';\nimport { ActorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport type { IActionRdfParseHandle, MediatorRdfParseHandle } from '@comunica/bus-rdf-parse';\nimport type { IActorTest } from '@comunica/core';\nimport type {\n IQuerySourceSerialized,\n QuerySourceUnidentifiedExpanded,\n IActionContext,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { storeStream } from 'rdf-store-stream';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica Serialized Query Source Identify Actor.\n */\nexport class ActorQuerySourceIdentifySerialized extends ActorQuerySourceIdentify {\n public readonly cacheSize: number;\n public readonly mediatorRdfParse: MediatorRdfParseHandle;\n public readonly mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n public constructor(args: IActorQuerySourceIdentifySerializedArgs) {\n super(args);\n }\n\n public async test(action: IActionQuerySourceIdentify): Promise {\n if (!this.isStringSource(action.querySourceUnidentified)) {\n throw new Error(`${this.name} requires a single query source with serialized type to be present in the context.`);\n }\n return true;\n }\n\n public async run(action: IActionQuerySourceIdentify): Promise {\n // Delegate source identification to the same bus again, by converting the string into an RDF/JS source\n return await this.mediatorQuerySourceIdentify.mediate({\n querySourceUnidentified: {\n type: 'rdfjs',\n value: await this.getRdfSource(action.context, action.querySourceUnidentified),\n context: action.querySourceUnidentified.context,\n },\n context: action.context,\n });\n }\n\n /**\n * Parses the string data source through the RDF parse bus, returning the RDF source.\n * @param context The run action context\n * @param source The source from the run action context\n * @returns Parsed RDF source that can be passed to quad pattern resolve mediator as an RDF/JS source\n */\n protected async getRdfSource(context: IActionContext, source: IQuerySourceSerialized): Promise {\n const textStream = new Readable({ objectMode: true });\n /* istanbul ignore next */\n textStream._read = () => {\n // Do nothing\n };\n textStream.push(source.value);\n textStream.push(null);\n\n const parseAction: IActionRdfParseHandle = {\n context,\n handle: {\n metadata: { baseIRI: source.baseIRI },\n data: textStream,\n context,\n },\n handleMediaType: source.mediaType,\n };\n\n const parseResult = await this.mediatorRdfParse.mediate(parseAction);\n return await storeStream(parseResult.handle.data);\n }\n\n private isStringSource(source: QuerySourceUnidentifiedExpanded): source is IQuerySourceSerialized {\n if (!('type' in source)) {\n if (!(typeof source.value === 'string')) {\n return false;\n }\n return 'mediaType' in source;\n }\n return source.type === 'serialized';\n }\n}\n\nexport interface IActorQuerySourceIdentifySerializedArgs extends IActorQuerySourceIdentifyArgs {\n /**\n * The quad pattern parser mediator.\n */\n mediatorRdfParse: MediatorRdfParseHandle;\n /**\n * The query source identify mediator.\n */\n mediatorQuerySourceIdentify: MediatorQuerySourceIdentify;\n}\n","import type { IActionRdfJoinEntriesSort, IActorRdfJoinEntriesSortOutput } from '@comunica/bus-rdf-join-entries-sort';\nimport { ActorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\n\n/**\n * An actor that sorts join entries by increasing cardinality.\n */\nexport class ActorRdfJoinEntriesSortCardinality extends ActorRdfJoinEntriesSort {\n public constructor(\n args: IActorArgs,\n ) {\n super(args);\n }\n\n public async test(_action: IActionRdfJoinEntriesSort): Promise {\n return true;\n }\n\n public async run(action: IActionRdfJoinEntriesSort): Promise {\n const entries = [ ...action.entries ]\n .sort((entryLeft, entryRight) => entryLeft.metadata.cardinality.value - entryRight.metadata.cardinality.value);\n return { entries };\n }\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { HashJoin } from 'asyncjoin';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'hash',\n limitEntries: 2,\n requiresVariableOverlap: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n let metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n\n // Ensure the left build stream is the smallest\n // TODO: in the next major version, use ActorRdfJoin.sortJoinEntries, which requires mediatorJoinEntriesSort\n if (metadatas[1].cardinality.value < metadatas[0].cardinality.value) {\n metadatas = [ metadatas[1], metadatas[0] ];\n action = { ...action, entries: [ action.entries[1], action.entries[0] ]};\n }\n\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n const join = new HashJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n entry => ActorRdfJoin.hash(entry, variables),\n ActorRdfJoin.joinBindings,\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Ensure the left build stream is the smallest\n if (metadatas[1].cardinality.value < metadatas[0].cardinality.value) {\n metadatas = [ metadatas[1], metadatas[0] ];\n }\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinArgs, IActorRdfJoinOutputInner } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin, ChunkedIterator } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type {\n IJoinEntryWithMetadata,\n IQueryOperationResultBindings,\n IQuerySourceWrapper,\n MetadataBindings,\n IActionContext,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\n\n/**\n * A comunica Inner Multi Bind Source RDF Join Actor.\n */\nexport class ActorRdfJoinMultiBindSource extends ActorRdfJoin {\n public readonly selectivityModifier: number;\n public readonly blockSize: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n\n public constructor(args: IActorRdfJoinInnerMultiBindSourceArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'bind-source',\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas(action.entries);\n const entries = await this.sortJoinEntries(entriesUnsorted, action.context);\n\n this.logDebug(\n action.context,\n 'First entry for Bind Join Source: ',\n () => ({ entry: entries[0].operation, metadata: entries[0].metadata }),\n );\n\n // Close the non-smallest streams\n for (const [ i, element ] of entries.entries()) {\n if (i !== 0) {\n element.output.bindingsStream.close();\n }\n }\n\n // Take the stream with the lowest cardinality\n const smallestStream: IQueryOperationResultBindings = entries[0].output;\n const smallestMetadata = entries[0].metadata;\n const remainingEntries = [ ...entries ];\n remainingEntries.splice(0, 1);\n\n // Get source for remaining entries (guaranteed thanks to prior check in getJoinCoefficients())\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(remainingEntries[0].operation)!;\n\n // Determine the operation to pass\n const operation = this.createOperationFromEntries(remainingEntries);\n\n // Slice the smallest stream into chunks according to the block size, so we avoid blocking too long.\n const chunkedStreams: AsyncIterator> = new ChunkedIterator(\n smallestStream.bindingsStream,\n this.blockSize,\n { autoStart: false },\n );\n\n // For each chunk, pass the query and the bindings to the source for execution\n const bindingsStream = new UnionIterator(chunkedStreams.map(chunk => sourceWrapper.source.queryBindings(\n operation,\n sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context,\n { joinBindings: { bindings: chunk, metadata: smallestMetadata }},\n )));\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: () => this.constructResultMetadata(entries, entries.map(entry => entry.metadata), action.context),\n },\n physicalPlanMetadata: {\n bindIndex: entriesUnsorted.indexOf(entries[0]),\n },\n };\n }\n\n protected async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, entries, context);\n\n // Prioritize entries with modified operations, so these are not re-executed\n entries = entries.sort((entryLeft, entryRight) => {\n if (entryLeft.operationModified && !entryRight.operationModified) {\n return -1;\n }\n return 0;\n });\n\n return entries;\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entries = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entries.map(entry => entry.metadata);\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Determine first stream and remaining ones\n const remainingEntries = [ ...entries ];\n const remainingRequestInitialTimes = [ ...requestInitialTimes ];\n const remainingRequestItemTimes = [ ...requestItemTimes ];\n remainingEntries.splice(0, 1);\n remainingRequestInitialTimes.splice(0, 1);\n remainingRequestItemTimes.splice(0, 1);\n\n // Reject binding on operations without sources\n const sources = remainingEntries.map(entry => ActorQueryOperation.getOperationSource(entry.operation));\n if (sources.some(source => !source)) {\n throw new Error(`Actor ${this.name} can not bind on remaining operations without source annotation`);\n }\n\n // Reject binding on operations with un-equal sources\n if (sources.some(source => source !== sources[0])) {\n throw new Error(`Actor ${this.name} can not bind on remaining operations with non-equal source annotation`);\n }\n\n // Reject if the source can not handle bindings\n const sourceWrapper: IQuerySourceWrapper = sources[0]!;\n const testingOperation = this.createOperationFromEntries(remainingEntries);\n const selectorShape = await sourceWrapper.source.getSelectorShape(action.context);\n if (!ActorQueryOperation\n .doesShapeAcceptOperation(selectorShape, testingOperation, { joinBindings: true })) {\n throw new Error(`Actor ${this.name} detected a source that can not handle passing down join bindings`);\n }\n\n // Determine selectivities of smallest entry with all other entries\n const selectivities = await Promise.all(remainingEntries\n .map(async entry => (await this.mediatorJoinSelectivity.mediate({\n entries: [ entries[0], entry ],\n context: action.context,\n })).selectivity * this.selectivityModifier));\n\n // Determine coefficients for remaining entries\n const cardinalityRemaining = remainingEntries\n .map((entry, i) => entry.metadata.cardinality.value * selectivities[i])\n .reduce((sum, element) => sum + element, 0);\n\n return {\n iterations: 1,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + cardinalityRemaining * requestItemTimes[1],\n };\n }\n\n public createOperationFromEntries(remainingEntries: IJoinEntryWithMetadata[]): Algebra.Operation {\n if (remainingEntries.length === 1) {\n return remainingEntries[0].operation;\n }\n return AF.createJoin(remainingEntries.map(entry => entry.operation), true);\n }\n}\n\nexport interface IActorRdfJoinInnerMultiBindSourceArgs extends IActorRdfJoinArgs {\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The maximum amount of bindings to send to the source per block.\n * @default {16}\n */\n blockSize: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation, materializeOperation } from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, BindingsStream, IQueryOperationResultBindings, MetadataBindings } from '@comunica/types';\nimport { MultiTransformIterator, TransformIterator, UnionIterator } from 'asynciterator';\nimport { Factory, Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Multi-way Bind RDF Join Actor.\n */\nexport class ActorRdfJoinMultiBind extends ActorRdfJoin {\n public readonly bindOrder: BindOrder;\n public readonly selectivityModifier: number;\n public readonly minMaxCardinalityRatio: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorRdfJoinMultiBindArgs) {\n // TODO: remove this fallback in the next major update\n if (args.minMaxCardinalityRatio === undefined) {\n args.minMaxCardinalityRatio = 60;\n }\n super(args, {\n logicalType: 'inner',\n physicalName: 'bind',\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n /**\n * Create a new bindings stream that takes every binding of the base stream\n * and binds it to the remaining patterns, evaluates those patterns, and emits all their bindings.\n *\n * @param bindOrder The order in which elements should be bound.\n * @param baseStream The base stream.\n * @param operations The operations to bind with each binding of the base stream.\n * @param operationBinder A callback to retrieve the bindings stream of bound operations.\n * @param optional If the original bindings should be emitted when the resulting bindings stream is empty.\n * @return {BindingsStream}\n */\n public static createBindStream(\n bindOrder: BindOrder,\n baseStream: BindingsStream,\n operations: Algebra.Operation[],\n operationBinder: (boundOperations: Algebra.Operation[], operationBindings: Bindings)\n => Promise,\n optional: boolean,\n bindingsFactory: BindingsFactory,\n ): BindingsStream {\n // Enable auto-start on sub-bindings during depth-first binding for best performance.\n const autoStartSubBindings = bindOrder === 'depth-first';\n\n // Create bindings function\n const binder = (bindings: Bindings): BindingsStream => {\n // We don't bind the filter because filters are always handled last,\n // and we need to avoid binding filters of sub-queries, which are to be handled first. (see spec test bind10)\n const subOperations = operations\n .map(operation => materializeOperation(operation, bindings, bindingsFactory, { bindFilter: true }));\n const bindingsMerger = (subBindings: Bindings): Bindings | undefined => subBindings.merge(bindings);\n return new TransformIterator(async() => (await operationBinder(subOperations, bindings))\n .transform({ map: bindingsMerger }), { maxBufferSize: 128, autoStart: autoStartSubBindings });\n };\n\n // Create an iterator that binds elements from the base stream in different orders\n switch (bindOrder) {\n case 'depth-first':\n return new MultiTransformIterator(baseStream, { autoStart: false, multiTransform: binder, optional });\n case 'breadth-first':\n return new UnionIterator(baseStream.transform({\n map: binder,\n optional,\n }), { autoStart: false });\n default:\n // eslint-disable-next-line ts/restrict-template-expressions\n throw new Error(`Received request for unknown bind order: ${bindOrder}`);\n }\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas(action.entries);\n const entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, entriesUnsorted, action.context);\n\n this.logDebug(\n action.context,\n 'First entry for Bind Join: ',\n () => ({ entry: entries[0].operation, metadata: entries[0].metadata }),\n );\n\n // Close the non-smallest streams\n for (const [ i, element ] of entries.entries()) {\n if (i !== 0) {\n element.output.bindingsStream.close();\n }\n }\n\n // Take the stream with the lowest cardinality\n const smallestStream: IQueryOperationResultBindings = entries[0].output;\n const remainingEntries = [ ...entries ];\n remainingEntries.splice(0, 1);\n\n // Bind the remaining patterns for each binding in the stream\n const subContext = action.context\n .set(KeysQueryOperation.joinLeftMetadata, entries[0].metadata)\n .set(KeysQueryOperation.joinRightMetadatas, remainingEntries.map(entry => entry.metadata));\n const bindingsStream: BindingsStream = ActorRdfJoinMultiBind.createBindStream(\n this.bindOrder,\n smallestStream.bindingsStream,\n remainingEntries.map(entry => entry.operation),\n async(operations: Algebra.Operation[], operationBindings: Bindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n const operation = operations.length === 1 ?\n operations[0] :\n ActorRdfJoinMultiBind.FACTORY.createJoin(operations);\n const output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate(\n { operation, context: subContext?.set(KeysQueryOperation.joinBindings, operationBindings) },\n ));\n return output.bindingsStream;\n },\n false,\n bindingsFactory,\n );\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: () => this.constructResultMetadata(entries, entries.map(entry => entry.metadata), action.context),\n },\n physicalPlanMetadata: {\n bindIndex: entriesUnsorted.indexOf(entries[0]),\n bindOperation: entries[0].operation,\n bindOperationCardinality: entries[0].metadata.cardinality,\n bindOrder: this.bindOrder,\n },\n };\n }\n\n public canBindWithOperation(operation: Algebra.Operation): boolean {\n let valid = true;\n Util.recurseOperation(operation, {\n [Algebra.types.EXTEND](): boolean {\n valid = false;\n return false;\n },\n [Algebra.types.GROUP](): boolean {\n valid = false;\n return false;\n },\n });\n\n return valid;\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entries = await ActorRdfJoin.sortJoinEntries(this.mediatorJoinEntriesSort, action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entries.map(entry => entry.metadata);\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Determine first stream and remaining ones\n const remainingEntries = [ ...entries ];\n const remainingRequestInitialTimes = [ ...requestInitialTimes ];\n const remainingRequestItemTimes = [ ...requestItemTimes ];\n remainingEntries.splice(0, 1);\n remainingRequestInitialTimes.splice(0, 1);\n remainingRequestItemTimes.splice(0, 1);\n\n // Reject binding on some operation types\n if (remainingEntries\n .some(entry => !this.canBindWithOperation(entry.operation))) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n\n // Reject binding on modified operations, since using the output directly would be significantly more efficient.\n if (remainingEntries.some(entry => entry.operationModified)) {\n throw new Error(`Actor ${this.name} can not be used over remaining entries with modified operations`);\n }\n\n // Only run this actor if the smallest stream is significantly smaller than the largest stream.\n // We must use Math.max, because the last metadata is not necessarily the biggest, but it's the least preferred.\n if (metadatas[0].cardinality.value * this.minMaxCardinalityRatio >\n Math.max(...metadatas.map(metadata => metadata.cardinality.value))) {\n throw new Error(`Actor ${this.name} can only run if the smallest stream is much smaller than largest stream`);\n }\n\n // Determine selectivities of smallest entry with all other entries\n const selectivities = await Promise.all(remainingEntries\n .map(async entry => (await this.mediatorJoinSelectivity.mediate({\n entries: [ entries[0], entry ],\n context: action.context,\n })).selectivity * this.selectivityModifier));\n\n // Determine coefficients for remaining entries\n const cardinalityRemaining = remainingEntries\n .map((entry, i) => entry.metadata.cardinality.value * selectivities[i])\n .reduce((sum, element) => sum + element, 0);\n const receiveInitialCostRemaining = remainingRequestInitialTimes\n .reduce((sum, element) => sum + element, 0);\n const receiveItemCostRemaining = remainingRequestItemTimes\n .reduce((sum, element) => sum + element, 0);\n\n return {\n iterations: metadatas[0].cardinality.value * cardinalityRemaining,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * (\n requestItemTimes[0] +\n receiveInitialCostRemaining +\n cardinalityRemaining * receiveItemCostRemaining\n ),\n };\n }\n}\n\nexport interface IActorRdfJoinMultiBindArgs extends IActorRdfJoinArgs {\n /**\n * The order in which elements should be bound\n * @default {depth-first}\n */\n bindOrder: BindOrder;\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The number of times the smallest cardinality should fit in the maximum cardinality.\n * @range {double}\n * @default {60}\n */\n minMaxCardinalityRatio?: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n\nexport type BindOrder = 'depth-first' | 'breadth-first';\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator } from 'asynciterator';\n\n/**\n * A comunica Multi Empty RDF Join Actor.\n */\nexport class ActorRdfJoinMultiEmpty extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-empty',\n canHandleUndefs: true,\n });\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n if ((await ActorRdfJoin.getMetadatas(action.entries))\n .every(metadata => ActorRdfJoin.getCardinality(metadata).value > 0)) {\n throw new Error(`Actor ${this.name} can only join entries where at least one is empty`);\n }\n return super.test(action);\n }\n\n protected override async getOutput(action: IActionRdfJoin): Promise {\n // Close all entries\n for (const entry of action.entries) {\n entry.output.bindingsStream.close();\n }\n\n return {\n result: {\n bindingsStream: new ArrayIterator([], { autoStart: false }),\n metadata: async() => ({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: ActorRdfJoin.joinVariables(await ActorRdfJoin.getMetadatas(action.entries)),\n }),\n type: 'bindings',\n },\n };\n }\n\n protected async getJoinCoefficients(\n _action: IActionRdfJoin,\n _metadatas: MetadataBindings[],\n ): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n","import { bindingsToString } from '@comunica/bindings-factory';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n MediatorRdfJoin,\n IActorRdfJoinOutputInner,\n} from '@comunica/bus-rdf-join';\nimport { ChunkedIterator, ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport { KeysRdfJoin } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type {\n BindingsStream,\n IActionContext,\n IJoinEntry,\n IJoinEntryWithMetadata,\n IQuerySourceWrapper,\n MetadataBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport { Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica Inner Multi Smallest Filter Bindings RDF Join Actor.\n */\nexport class ActorRdfJoinMultiSmallestFilterBindings extends ActorRdfJoin {\n public readonly selectivityModifier: number;\n public readonly blockSize: number;\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public static readonly FACTORY = new Factory();\n public constructor(args: IActorRdfJoinMultiSmallestFilterBindingsArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-smallest-filter-bindings',\n limitEntries: 2,\n limitEntriesMin: true,\n isLeaf: false,\n });\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise<{ first: IJoinEntryWithMetadata; second: IJoinEntryWithMetadata; remaining: IJoinEntryWithMetadata[] }> {\n let { entries: entriesSorted } = await this.mediatorJoinEntriesSort.mediate({ entries, context });\n\n // Prioritize entries with modified operations, so these are not re-executed\n entriesSorted = entriesSorted.sort((entryLeft, entryRight) => {\n if (entryLeft.operationModified && !entryRight.operationModified) {\n return -1;\n }\n return 0;\n });\n\n const first = entriesSorted.splice(0, 1)[0];\n\n // Let second entry first be prioritized for sharing as many variables with first as possible,\n // then having the fewest variables,\n // and then having the lowest cardinality.\n let second: IJoinEntryWithMetadata | undefined;\n let secondIndex = -1;\n let secondSharedVariables = 0;\n for (const [ i, entry ] of entriesSorted.entries()) {\n const sharedVariables = first.metadata.variables\n .filter(variableFirst => entry.metadata.variables\n .some(variableSecond => variableFirst.equals(variableSecond))).length;\n if (!second || (sharedVariables > secondSharedVariables ||\n (sharedVariables === secondSharedVariables &&\n (entry.metadata.variables.length < second.metadata.variables.length ||\n (entry.metadata.variables.length === second.metadata.variables.length &&\n entry.metadata.cardinality.value < second.metadata.cardinality.value))))) {\n second = entry;\n secondIndex = i;\n secondSharedVariables = sharedVariables;\n }\n }\n\n if (secondSharedVariables === 0) {\n throw new Error(`Actor ${this.name} can only join with common variables`);\n }\n\n const remaining = entriesSorted;\n remaining.splice(secondIndex, 1);\n return { first, second: second!, remaining };\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entriesUnsorted = await ActorRdfJoin.getEntriesWithMetadatas([ ...action.entries ]);\n const { first, second: secondIn, remaining: remainingIn } = await this.sortJoinEntries(\n entriesUnsorted,\n action.context,\n );\n\n // Clone first stream, because we will use it twice\n const smallestStream1 = first.output.bindingsStream;\n first.output.bindingsStream = smallestStream1.clone();\n\n // Project the first stream on common variables, and filter out duplicates\n // The common variables array is guaranteed to be non-empty, due to the way the test of this actor is implemented.\n const commonVariables = first.metadata.variables\n .filter(variableFirst => secondIn.metadata.variables\n .some(variableSecond => variableFirst.equals(variableSecond)));\n const hashes: Record = {};\n const smallestStream1Projected: BindingsStream = smallestStream1.clone()\n .map(binding => binding.filter((value, key) =>\n commonVariables.some(commonVariable => commonVariable.equals(key))))\n .filter((binding) => {\n const hash: string = bindingsToString(binding);\n return !(hash in hashes) && (hashes[hash] = true);\n });\n\n // Slice the first stream into chunks according to the block size, so we avoid blocking too long.\n const chunkedStreams: AsyncIterator> = new ChunkedIterator(\n smallestStream1Projected,\n this.blockSize,\n { autoStart: false },\n );\n\n // Push down bindings of first stream when querying for second stream\n const sourceWrapper: IQuerySourceWrapper = ActorQueryOperation.getOperationSource(secondIn.operation)!;\n const secondStream = new UnionIterator(chunkedStreams.map(chunk => sourceWrapper.source.queryBindings(\n secondIn.operation,\n sourceWrapper.context ? action.context.merge(sourceWrapper.context) : action.context,\n { filterBindings: { bindings: chunk, metadata: first.metadata }},\n )));\n const second: IJoinEntry = {\n output: {\n type: 'bindings',\n bindingsStream: secondStream,\n metadata: secondIn.output.metadata,\n },\n operation: secondIn.operation,\n operationModified: true,\n };\n\n // Destroy the unused original second stream\n secondIn.output.bindingsStream.destroy();\n\n // Join the two selected streams\n const joinedEntry: IJoinEntry = {\n output: ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({\n type: action.type,\n entries: [ first, second ],\n context: action.context.set(KeysRdfJoin.lastPhysicalJoin, this.physicalName),\n })),\n operation: ActorRdfJoinMultiSmallestFilterBindings.FACTORY\n .createJoin([ first.operation, second.operation ], false),\n operationModified: true,\n };\n\n // And then join the result with the remaining streams\n const remaining: IJoinEntry[] = remainingIn;\n remaining.unshift(joinedEntry);\n\n return {\n result: await this.mediatorJoin.mediate({\n type: action.type,\n entries: remaining,\n context: action.context,\n }),\n physicalPlanMetadata: {\n firstIndex: entriesUnsorted.indexOf(first),\n secondIndex: entriesUnsorted.indexOf(secondIn),\n },\n };\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // Avoid infinite recursion\n if (action.context.get(KeysRdfJoin.lastPhysicalJoin) === this.physicalName) {\n throw new Error(`Actor ${this.name} can not be called recursively`);\n }\n\n metadatas = [ ...metadatas ];\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const { first, second, remaining } = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n\n // Only pass if the second entry accepts filterBindings\n const sourceWrapper: IQuerySourceWrapper | undefined = ActorQueryOperation.getOperationSource(second.operation);\n if (!sourceWrapper) {\n throw new Error(`Actor ${this.name} can only process if entries[1] has a source`);\n }\n const testingOperation = second.operation;\n const selectorShape = await sourceWrapper.source.getSelectorShape(action.context);\n if (!ActorQueryOperation\n .doesShapeAcceptOperation(selectorShape, testingOperation, { filterBindings: true })) {\n throw new Error(`Actor ${this.name} can only process if entries[1] accept filterBindings`);\n }\n\n // Determine cost coefficients\n metadatas = [ first.metadata, second.metadata, ...remaining.map(remain => remain.metadata) ];\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n const { selectivity } = await this.mediatorJoinSelectivity.mediate({\n entries: [ first, second ],\n context: action.context,\n });\n const cardinalityRemaining = remaining\n .reduce((mul, remain) => mul * remain.metadata.cardinality.value * this.selectivityModifier, 1);\n\n return {\n iterations: selectivity * this.selectivityModifier *\n second.metadata.cardinality.value * cardinalityRemaining,\n persistedItems: first.metadata.cardinality.value,\n blockingItems: first.metadata.cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + cardinalityRemaining * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinMultiSmallestFilterBindingsArgs extends IActorRdfJoinArgs {\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.0001}\n */\n selectivityModifier: number;\n /**\n * The maximum amount of bindings to send to the source per block.\n * @default {64}\n */\n blockSize: number;\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import {\n ActorQueryOperation,\n} from '@comunica/bus-query-operation';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinOutputInner,\n IActorRdfJoinArgs,\n MediatorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { MediatorRdfJoinEntriesSort } from '@comunica/bus-rdf-join-entries-sort';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings, IJoinEntry, IActionContext, IJoinEntryWithMetadata } from '@comunica/types';\nimport { Factory } from 'sparqlalgebrajs';\n\n/**\n * A Multi Smallest RDF Join Actor.\n * It accepts 3 or more streams, joins the smallest two, and joins the result with the remaining streams.\n */\nexport class ActorRdfJoinMultiSmallest extends ActorRdfJoin {\n public readonly mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n public readonly mediatorJoin: MediatorRdfJoin;\n\n public static readonly FACTORY = new Factory();\n\n public constructor(args: IActorRdfJoinMultiSmallestArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-smallest',\n limitEntries: 3,\n limitEntriesMin: true,\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n public async sortJoinEntries(\n entries: IJoinEntryWithMetadata[],\n context: IActionContext,\n ): Promise {\n return (await this.mediatorJoinEntriesSort.mediate({ entries, context })).entries;\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entries: IJoinEntry[] = await this.sortJoinEntries(\n await ActorRdfJoin.getEntriesWithMetadatas([ ...action.entries ]),\n action.context,\n );\n const smallestEntry1 = entries[0];\n const smallestEntry2 = entries[1];\n entries.splice(0, 2);\n\n // Join the two selected streams, and then join the result with the remaining streams\n const firstEntry: IJoinEntry = {\n output: ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: action.type, entries: [ smallestEntry1, smallestEntry2 ], context: action.context })),\n operation: ActorRdfJoinMultiSmallest.FACTORY\n .createJoin([ smallestEntry1.operation, smallestEntry2.operation ], false),\n };\n entries.push(firstEntry);\n return {\n result: await this.mediatorJoin.mediate({\n type: action.type,\n entries,\n context: action.context,\n }),\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n metadatas = [ ...metadatas ];\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entriesWithMetadata = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entriesWithMetadata.map(entry => entry.metadata);\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value *\n metadatas.slice(2).reduce((acc, metadata) => acc * metadata.cardinality.value, 1),\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1] +\n metadatas.slice(2).reduce((sum, metadata, i) => sum + requestInitialTimes.slice(2)[i] +\n metadata.cardinality.value * requestItemTimes.slice(2)[i], 0),\n };\n }\n}\n\nexport interface IActorRdfJoinMultiSmallestArgs extends IActorRdfJoinArgs {\n /**\n * The join entries sort mediator\n */\n mediatorJoinEntriesSort: MediatorRdfJoinEntriesSort;\n /**\n * A mediator for joining Bindings streams\n */\n mediatorJoin: MediatorRdfJoin;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { NestedLoopJoin } from 'asyncjoin';\n\n/**\n * A comunica NestedLoop RDF Join Actor.\n */\nexport class ActorRdfJoinNestedLoop extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const join = new NestedLoopJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n ActorRdfJoin.joinBindings,\n { autoStart: false },\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator } from 'asynciterator';\n\n/**\n * A comunica None RDF Join Actor.\n */\nexport class ActorRdfJoinNone extends ActorRdfJoin {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorRdfJoinNoneArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'none',\n limitEntries: 0,\n });\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n // Allow joining of one or zero streams\n if (action.entries.length > 0) {\n throw new Error(`Actor ${this.name} can only join zero entries`);\n }\n return await this.getJoinCoefficients();\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n return {\n result: {\n bindingsStream: new ArrayIterator([ bindingsFactory.bindings() ], { autoStart: false }),\n metadata: () => Promise.resolve({\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n },\n };\n }\n\n protected async getJoinCoefficients(): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n\nexport interface IActorRdfJoinNoneArgs extends IActorRdfJoinArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\n\n/**\n * A comunica Single RDF Join Actor.\n */\nexport class ActorRdfJoinSingle extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'single',\n limitEntries: 1,\n });\n this.includeInLogs = false;\n }\n\n public override async test(action: IActionRdfJoin): Promise {\n // Allow joining of one or zero streams\n if (action.entries.length !== 1) {\n throw new Error(`Actor ${this.name} can only join a single entry`);\n }\n return await this.getJoinCoefficients();\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n return {\n result: action.entries[0].output,\n };\n }\n\n protected async getJoinCoefficients(): Promise {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { SymmetricHashJoin } from 'asyncjoin';\n\n/**\n * A comunica Hash RDF Join Actor.\n */\nexport class ActorRdfJoinSymmetricHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinSymmetricHashArgs) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'symmetric-hash',\n limitEntries: 2,\n requiresVariableOverlap: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const variables = ActorRdfJoin.overlappingVariables(metadatas);\n const join = new SymmetricHashJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n entry => ActorRdfJoinSymmetricHash.hash(entry, variables),\n ActorRdfJoin.joinBindings,\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinSymmetricHashArgs extends IActorRdfJoinArgs {\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { BindingsIndex } from './BindingsIndex';\n\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nexport class ActorRdfJoinMinusHashUndef extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash-undef',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index: BindingsIndex = new BindingsIndex(commonVariables);\n const bindingsStream = new ClosableTransformIterator(async() => {\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', data => index.add(data));\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n return output.bindingsStream.filter(data => !index.contains(data));\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const bufferMetadata = await output.metadata();\n const outputMetadata = await output.metadata();\n return {\n ...outputMetadata,\n canContainUndefs: bufferMetadata.canContainUndefs || outputMetadata.canContainUndefs,\n };\n },\n },\n };\n }\n // Destroy the buffer stream since it is not needed when\n // there are no common variables.\n buffer.bindingsStream.destroy();\n return {\n result: output,\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n // Slightly increase iteration cost, as operations in our BindingsIndex do not happen in constant time\n // This enables the mediator to favor other minus actors,\n // while this one will only be selected when streams contain undefs.\n iterations: (metadatas[0].cardinality.value + metadatas[1].cardinality.value) * 1.01,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { termToString } from 'rdf-string';\n\n/**\n * A simple efficient tree-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This will consider bindings with a variable term or a missing term\n * as a 'match-all' with other terms.\n */\nexport class BindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly data: IDataIndex = {};\n\n public constructor(keys: RDF.Variable[]) {\n this.keys = keys;\n }\n\n protected static hashTerm(term: RDF.Term | undefined): string {\n return term && term.termType !== 'Variable' ? termToString(term) : '';\n }\n\n /**\n * Add the given bindings to the index.\n * @param {Bindings} bindings A bindings.\n */\n public add(bindings: Bindings): void {\n if (this.isBindingsValid(bindings)) {\n let dataIt = this.data;\n for (const key of this.keys) {\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n let subDataIt = dataIt[dataKey];\n if (!subDataIt) {\n subDataIt = dataIt[dataKey] = {};\n }\n dataIt = subDataIt;\n }\n }\n }\n\n /**\n * Check if the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {boolean} If it exists in the index.\n */\n public contains(bindings: Bindings): boolean {\n // Always return false if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return false;\n }\n\n return this.containsRecursive(bindings, this.keys, [ this.data ]);\n }\n\n protected isBindingsValid(bindings: Bindings): boolean {\n let validKeys = false;\n for (const key of this.keys) {\n if (bindings.get(key)) {\n validKeys = true;\n break;\n }\n }\n return validKeys;\n }\n\n protected containsRecursive(bindings: Bindings, keys: RDF.Variable[], dataIndexes: IDataIndex[]): boolean {\n if (keys.length === 0) {\n return true;\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n } else {\n // Iterate over all entries\n let subDatas = Object.keys(data).map(subKey => data[subKey]);\n if (subDatas.length === 0) {\n subDatas = [{}];\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n }\n }\n return false;\n }\n}\n\nexport interface IDataIndex {\n [key: string]: IDataIndex;\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\n\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nexport class ActorRdfJoinMinusHash extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash',\n limitEntries: 2,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index: Record = {};\n const bindingsStream = new ClosableTransformIterator(async() => {\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (data) => {\n index[ActorRdfJoin.hashNonClashing(data, commonVariables)] = true;\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n return output.bindingsStream.filter(data => !index[ActorRdfJoin.hashNonClashing(data, commonVariables)]);\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n },\n };\n }\n // Destroy the buffer stream since it is not needed when\n // there are no common variables.\n buffer.bindingsStream.destroy();\n return {\n result: output,\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { BindOrder } from '@comunica/actor-rdf-join-inner-multi-bind';\nimport { ActorRdfJoinMultiBind } from '@comunica/actor-rdf-join-inner-multi-bind';\nimport { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport { ActorQueryOperation } from '@comunica/bus-query-operation';\nimport type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, BindingsStream, MetadataBindings } from '@comunica/types';\nimport { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica Optional Bind RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalBind extends ActorRdfJoin {\n public readonly bindOrder: BindOrder;\n public readonly selectivityModifier: number;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorRdfJoinOptionalBindArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'bind',\n limitEntries: 2,\n canHandleUndefs: true,\n isLeaf: false,\n });\n }\n\n protected async getOutput(action: IActionRdfJoin): Promise {\n const bindingsFactory = await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context);\n // Close the right stream, since we don't need that one\n action.entries[1].output.bindingsStream.close();\n\n // Bind the right pattern for each binding in the stream\n const subContext = action.context\n .set(KeysQueryOperation.joinLeftMetadata, await action.entries[0].output.metadata())\n .set(KeysQueryOperation.joinRightMetadatas, [ await action.entries[1].output.metadata() ]);\n const bindingsStream: BindingsStream = ActorRdfJoinMultiBind.createBindStream(\n this.bindOrder,\n action.entries[0].output.bindingsStream,\n [ action.entries[1].operation ],\n async(operations: Algebra.Operation[], operationBindings: Bindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n // Length of operations will always be 1\n const operation = operations[0];\n const output = ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate(\n { operation, context: subContext?.set(KeysQueryOperation.joinBindings, operationBindings) },\n ));\n return output.bindingsStream;\n },\n true,\n bindingsFactory,\n );\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n public async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n // This actor only works well with common variables\n if (ActorRdfJoin.overlappingVariables(metadatas).length === 0) {\n throw new Error(`Actor ${this.name} only join entries with at least one common variable`);\n }\n\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n\n // Reject binding on some operation types\n if (action.entries[1].operation.type === Algebra.types.EXTEND ||\n action.entries[1].operation.type === Algebra.types.GROUP) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n\n // Determine selectivity of join\n const selectivity = (await this.mediatorJoinSelectivity.mediate({\n entries: action.entries,\n context: action.context,\n })).selectivity * this.selectivityModifier;\n\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value * selectivity,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * (\n requestItemTimes[0] +\n requestInitialTimes[1] +\n selectivity * metadatas[1].cardinality.value * requestItemTimes[1]\n ),\n };\n }\n}\n\nexport interface IActorRdfJoinOptionalBindArgs extends IActorRdfJoinArgs {\n /**\n * The order in which elements should be bound\n * @default {depth-first}\n */\n bindOrder: BindOrder;\n /**\n * Multiplier for selectivity values\n * @range {double}\n * @default {0.000001}\n */\n selectivityModifier: number;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n}\n","import { ClosableTransformIterator } from '@comunica/bus-query-operation';\nimport { ActorRdfJoin } from '@comunica/bus-rdf-join';\nimport type {\n IActionRdfJoin,\n IActorRdfJoinArgs,\n IActorRdfJoinOutputInner,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { BindingsStream, MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator, ArrayIterator, MultiTransformIterator, BufferedIterator } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { BindingsIndexDef } from './BindingsIndexDef';\nimport { BindingsIndexUndef } from './BindingsIndexUndef';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A comunica Optional Hash RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalHash extends ActorRdfJoin {\n private readonly blocking: boolean;\n\n public constructor(args: IActorRdfJoinOptionalHashArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: `hash-${args.canHandleUndefs ? 'undef' : 'def'}-${args.blocking ? 'blocking' : 'nonblocking'}`,\n limitEntries: 2,\n canHandleUndefs: args.canHandleUndefs,\n requiresVariableOverlap: true,\n });\n }\n\n public static constructIndex(undef: boolean, commonVariables: RDF.Variable[]): IBindingsIndex {\n return undef ?\n new BindingsIndexUndef(\n commonVariables,\n (term: RDF.Term | undefined) => term && term.termType !== 'Variable' ? termToString(term) : '',\n ) :\n new BindingsIndexDef(commonVariables, ActorRdfJoin.hashNonClashing);\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables: RDF.Variable[] = ActorRdfJoin.overlappingVariables(metadatas);\n\n let bindingsStream: BindingsStream;\n if (this.blocking) {\n // -- Blocking optional ---\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator first in a blocking manner.\n const index: IBindingsIndex = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n await new Promise((resolve) => {\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings) ?? index.put(bindings, []);\n iterator.push(bindings);\n });\n buffer.bindingsStream.on('end', resolve);\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator => new ArrayIterator(\n (index.get(bindings).flat())\n .map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings))\n .filter(b => b !== null),\n { autoStart: false },\n ),\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n } else {\n // -- Non-blocking optional ---\n // This can be slightly slower than the blocking one above, due to the streaming overhead.\n\n bindingsStream = new ClosableTransformIterator(async() => {\n // We index all bindings from the right-hand OPTIONAL iterator.\n // They are indexed with iterator values, so our main stream can already get started.\n const index: IBindingsIndex> = ActorRdfJoinOptionalHash\n .constructIndex(this.canHandleUndefs, commonVariables);\n let indexActive = true;\n buffer.bindingsStream.on('data', (bindings) => {\n const iterator = index.getFirst(bindings) ??\n index.put(bindings, new BufferedIterator({ autoStart: false }));\n ( iterator)._push(bindings);\n });\n buffer.bindingsStream.on('end', () => {\n for (const iterator of index.values()) {\n iterator.close();\n }\n indexActive = false;\n });\n buffer.bindingsStream.on('error', (error) => {\n bindingsStream.emit('error', error);\n });\n\n // Start our left-hand iterator and try to join with the index\n return new MultiTransformIterator(\n output.bindingsStream,\n {\n multiTransform: (bindings: RDF.Bindings): AsyncIterator => {\n // Find iterators from the index\n let iterators: AsyncIterator[] = index.get(bindings);\n\n // If no index entry was found, set an empty iterator.\n // If we index has been closed already, don't modify the index, but just use an empty dummy iterator.\n if (iterators.length === 0) {\n if (indexActive) {\n iterators = [ index.put(bindings, new BufferedIterator({ autoStart: false })) ];\n } else {\n iterators = [];\n }\n }\n\n // Merge all iterators in a single one,\n // and clone each one to make sure we can still use them in the future.\n const iterator = new UnionIterator(iterators.map(it => it.clone()), { autoStart: false });\n return iterator.map(indexBindings => ActorRdfJoin.joinBindings(bindings, indexBindings));\n },\n optional: true,\n autoStart: false,\n },\n );\n }, {\n autoStart: false,\n onClose() {\n buffer.bindingsStream.destroy();\n output.bindingsStream.destroy();\n },\n });\n }\n\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n let iterations = metadatas[0].cardinality.value + metadatas[1].cardinality.value;\n if (!this.canHandleUndefs) {\n // Our non-undef implementation is slightly more performant.\n iterations *= 0.8;\n }\n if (this.blocking) {\n // Our blocking implementation is slightly more performant.\n iterations *= 0.9;\n }\n return {\n iterations,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: this.blocking ? metadatas[0].cardinality.value : 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n\nexport interface IActorRdfJoinOptionalHashArgs extends IActorRdfJoinArgs {\n /**\n * If this actor can handle undefined values.\n * If false, performance will be slightly better.\n */\n canHandleUndefs: boolean;\n /**\n * If the join will block when collecting the optional stream.\n * If true, performance will be better.\n */\n blocking: boolean;\n}\n","import type * as RDF from '@rdfjs/types';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A simple efficient hash-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This can not handle bindings with undefined values.\n */\nexport class BindingsIndexDef implements IBindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly hashFn: (term: RDF.Bindings, keys: RDF.Variable[]) => string;\n private readonly index: Record;\n\n public constructor(keys: RDF.Variable[], hashFn: (term: RDF.Bindings, keys: RDF.Variable[]) => string) {\n this.keys = keys;\n this.hashFn = hashFn;\n this.index = {};\n }\n\n public put(bindings: RDF.Bindings, value: V): V {\n return this.index[this.hashFn(bindings, this.keys)] = value;\n }\n\n public get(bindings: RDF.Bindings): V[] {\n const v = this.getFirst(bindings);\n return v ? [ v ] : [];\n }\n\n public getFirst(bindings: RDF.Bindings): V | undefined {\n return this.index[this.hashFn(bindings, this.keys)];\n }\n\n public values(): V[] {\n return Object.values(this.index);\n }\n}\n","import type { Bindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { IBindingsIndex } from './IBindingsIndex';\n\n/**\n * A simple efficient tree-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This will consider bindings with a variable term or an undefined term\n * as a 'match-all' with other terms.\n */\nexport class BindingsIndexUndef implements IBindingsIndex {\n private readonly keys: RDF.Variable[];\n private readonly data: IDataIndex = {};\n private readonly hashFn: (term: RDF.Term | undefined) => string;\n\n public constructor(keys: RDF.Variable[], hashFn: (term: RDF.Term | undefined) => string) {\n this.keys = keys;\n this.hashFn = hashFn;\n }\n\n /**\n * Add the given bindings to the index.\n * @param {Bindings} bindings A bindings.\n * @param {V} value The value to put.\n */\n public put(bindings: Bindings, value: V): V {\n if (this.isBindingsValid(bindings)) {\n let dataIt: IDataIndex | V = this.data;\n for (let i = 0; i < this.keys.length; i++) {\n const key = this.keys[i];\n const dataKey = this.hashFn(bindings.get(key));\n let subDataIt: IDataIndex | V | undefined = (> dataIt)[dataKey];\n if (!subDataIt) {\n subDataIt = ((> dataIt))[dataKey] = i === this.keys.length - 1 ? value : {};\n }\n dataIt = subDataIt;\n }\n }\n return value;\n }\n\n protected isBindingsValid(bindings: Bindings): boolean {\n let validKeys = false;\n for (const key of this.keys) {\n if (bindings.has(key)) {\n validKeys = true;\n break;\n }\n }\n return validKeys;\n }\n\n /**\n * Get the value of the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {V[]} The values.\n */\n public get(bindings: Bindings): V[] {\n // Always return undefined if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return [];\n }\n\n return this.getRecursive(bindings, this.keys, [ this.data ]);\n }\n\n protected getRecursive(bindings: Bindings | undefined, keys: RDF.Variable[], dataIndexes: IDataIndex[]): V[] {\n if (keys.length === 0) {\n return dataIndexes;\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n const matchingRecursive: V[][] = [];\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = this.hashFn(bindings?.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = []> [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n matchingRecursive.push(this.getRecursive(bindings, keys, subDatas));\n } else {\n // Iterate over all entries\n const subDatas = []> Object.values(data);\n if (subDatas.length === 0) {\n continue;\n }\n matchingRecursive.push(this.getRecursive(bindings, keys, subDatas));\n }\n }\n return matchingRecursive.flat();\n }\n\n /**\n * Get the first value of the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {V | undefined} The value.\n */\n public getFirst(bindings: Bindings): V | undefined {\n // Always return undefined if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return undefined;\n }\n\n return this.getRecursiveFirst(bindings, this.keys, [ this.data ]);\n }\n\n protected getRecursiveFirst(bindings: Bindings, keys: RDF.Variable[], dataIndexes: IDataIndex[]): V | undefined {\n if (keys.length === 0) {\n return dataIndexes[0];\n }\n\n let key: RDF.Variable;\n // eslint-disable-next-line prefer-const\n [ key, ...keys ] = keys;\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = this.hashFn(bindings.get(key));\n if (dataKey) {\n // Check the entry for the term, and the variable term.\n const subDatas = []> [ data[dataKey], data[''] ].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n const ret = this.getRecursiveFirst(bindings, keys, subDatas);\n if (ret) {\n return ret;\n }\n } else {\n // Iterate over all entries\n const subDatas = []> Object.values(data);\n if (subDatas.length === 0) {\n continue;\n }\n const ret = this.getRecursiveFirst(bindings, keys, subDatas);\n if (ret) {\n return ret;\n }\n }\n }\n return undefined;\n }\n\n public values(): V[] {\n return this.keys.length === 0 ? [] : this.getRecursive(undefined, this.keys, [ this.data ]);\n }\n}\n\nexport interface IDataIndex {\n [key: string]: IDataIndex | V;\n}\n","import type { IActionRdfJoin, IActorRdfJoinOutputInner, IActorRdfJoinArgs } from '@comunica/bus-rdf-join';\nimport {\n ActorRdfJoin,\n} from '@comunica/bus-rdf-join';\nimport type { IMediatorTypeJoinCoefficients } from '@comunica/mediatortype-join-coefficients';\nimport type { Bindings, MetadataBindings } from '@comunica/types';\nimport { NestedLoopJoin } from 'asyncjoin';\n\n/**\n * A comunica Optional Nested Loop RDF Join Actor.\n */\nexport class ActorRdfJoinOptionalNestedLoop extends ActorRdfJoin {\n public constructor(args: IActorRdfJoinArgs) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n\n public async getOutput(action: IActionRdfJoin): Promise {\n const join = new NestedLoopJoin(\n action.entries[0].output.bindingsStream,\n action.entries[1].output.bindingsStream,\n ActorRdfJoin.joinBindings,\n { optional: true, autoStart: false },\n );\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async() => await this.constructResultMetadata(\n action.entries,\n await ActorRdfJoin.getMetadatas(action.entries),\n action.context,\n { canContainUndefs: true },\n true,\n ),\n },\n };\n }\n\n protected async getJoinCoefficients(\n action: IActionRdfJoin,\n metadatas: MetadataBindings[],\n ): Promise {\n const requestInitialTimes = ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\n","import type { IActionRdfJoinSelectivity, IActorRdfJoinSelectivityOutput } from '@comunica/bus-rdf-join-selectivity';\nimport { ActorRdfJoinSelectivity } from '@comunica/bus-rdf-join-selectivity';\nimport type { IActorArgs } from '@comunica/core';\nimport type { IMediatorTypeAccuracy } from '@comunica/mediatortype-accuracy';\nimport { Algebra, Util } from 'sparqlalgebrajs';\n\n/**\n * A comunica Variable Counting RDF Join Selectivity Actor.\n * Based on the \"variable counting predicates\" heuristic from\n * \"SPARQL basic graph pattern optimization using selectivity estimation.\"\n */\nexport class ActorRdfJoinSelectivityVariableCounting extends ActorRdfJoinSelectivity {\n // Calculated as sum of unbound join type costs times 2 (best-case)\n public static MAX_PAIRWISE_COST = 41 * 2;\n\n public constructor(\n args: IActorArgs,\n ) {\n super(args);\n }\n\n public async test(_action: IActionRdfJoinSelectivity): Promise {\n return { accuracy: 0.5 };\n }\n\n public static getPatternCost(pattern: Algebra.Pattern | Algebra.Path): number {\n let cost = 1;\n if (pattern.subject.termType === 'Variable') {\n cost += 4;\n }\n if (pattern.predicate.termType === 'Variable' || pattern.type === Algebra.types.PATH) {\n cost += 1;\n }\n if (pattern.object.termType === 'Variable') {\n cost += 2;\n }\n if (pattern.graph.termType === 'Variable') {\n cost += 1;\n }\n return cost / 9;\n }\n\n public static getJoinTypes(\n operation1: Algebra.Pattern | Algebra.Path,\n operation2: Algebra.Pattern | Algebra.Path,\n ): JoinTypes[] {\n const joinTypes: JoinTypes[] = [];\n\n // Check operation1.subject\n if (operation1.subject.termType === 'Variable') {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundSG);\n }\n } else {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundSG);\n }\n }\n\n // Check operation1.predicate\n if (operation1.type === 'pattern') {\n if (operation1.predicate.termType === 'Variable') {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundPG);\n }\n } else {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundPG);\n }\n }\n }\n\n // Check operation1.object\n if (operation1.object.termType === 'Variable') {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundOG);\n }\n } else {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundOG);\n }\n }\n\n // Check operation1.graph\n if (operation1.graph.termType === 'Variable') {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundGG);\n }\n } else {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundGG);\n }\n }\n\n return joinTypes;\n }\n\n public static getOperationsPairwiseJoinCost(\n operation1: Algebra.Pattern | Algebra.Path,\n operation2: Algebra.Pattern | Algebra.Path,\n ): number {\n let cost = ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n\n for (const joinType of ActorRdfJoinSelectivityVariableCounting.getJoinTypes(operation1, operation2)) {\n switch (joinType) {\n case JoinTypes.boundSS:\n cost -= 2 * 2;\n break;\n case JoinTypes.boundSP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundSO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundSG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPP:\n // Special case: patterns with equal (bound) predicates have the highest cost\n return 1;\n case JoinTypes.boundPO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOS:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGG:\n cost -= 3 * 2;\n break;\n case JoinTypes.unboundSS:\n cost -= 2;\n break;\n case JoinTypes.unboundSP:\n cost -= 3;\n break;\n case JoinTypes.unboundSO:\n cost -= 1;\n break;\n case JoinTypes.unboundSG:\n cost -= 3;\n break;\n case JoinTypes.unboundPS:\n cost -= 3;\n break;\n case JoinTypes.unboundPP:\n cost -= 3;\n break;\n case JoinTypes.unboundPO:\n cost -= 3;\n break;\n case JoinTypes.unboundPG:\n cost -= 3;\n break;\n case JoinTypes.unboundOS:\n cost -= 1;\n break;\n case JoinTypes.unboundOP:\n cost -= 3;\n break;\n case JoinTypes.unboundOO:\n cost -= 1;\n break;\n case JoinTypes.unboundOG:\n cost -= 3;\n break;\n case JoinTypes.unboundGS:\n cost -= 3;\n break;\n case JoinTypes.unboundGP:\n cost -= 3;\n break;\n case JoinTypes.unboundGO:\n cost -= 3;\n break;\n case JoinTypes.unboundGG:\n cost -= 3;\n break;\n }\n }\n\n return cost / ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n }\n\n public static getOperationsJoinCost(operations: Algebra.Operation[]): number {\n // Determine all operations that select values (patterns and paths)\n const patterns: (Algebra.Pattern | Algebra.Path)[] = [];\n for (const operation of operations) {\n Util.recurseOperation(operation, {\n [Algebra.types.PATTERN](pattern: Algebra.Pattern): boolean {\n patterns.push(pattern);\n return false;\n },\n [Algebra.types.PATH](path: Algebra.Path): boolean {\n patterns.push(path);\n return false;\n },\n });\n }\n\n // Determine pairwise costs\n let totalCost = 0;\n let costEntries = 0;\n for (const pattern1 of patterns) {\n for (const pattern2 of patterns) {\n if (pattern1 !== pattern2) {\n totalCost += ActorRdfJoinSelectivityVariableCounting.getOperationsPairwiseJoinCost(pattern1, pattern2);\n costEntries++;\n }\n }\n }\n\n // If there are no overlapping patterns, the cost is 1\n if (costEntries === 0) {\n return 1;\n }\n\n // Combine all pairwise costs, and multiply with costs of each pattern separately\n return totalCost / costEntries * patterns\n .reduce((factor, pattern) => factor * ActorRdfJoinSelectivityVariableCounting.getPatternCost(pattern), 1);\n }\n\n public async run(action: IActionRdfJoinSelectivity): Promise {\n if (action.entries.length <= 1) {\n return { selectivity: 1 };\n }\n return {\n selectivity: ActorRdfJoinSelectivityVariableCounting\n .getOperationsJoinCost(action.entries.map(entry => entry.operation)),\n };\n }\n}\n\nexport enum JoinTypes {\n boundSS,\n boundSP,\n boundSO,\n boundSG,\n boundPS,\n boundPP,\n boundPO,\n boundPG,\n boundOS,\n boundOP,\n boundOO,\n boundOG,\n boundGS,\n boundGP,\n boundGO,\n boundGG,\n\n unboundSS,\n unboundSP,\n unboundSO,\n unboundSG,\n unboundPS,\n unboundPP,\n unboundPO,\n unboundPG,\n unboundOS,\n unboundOP,\n unboundOO,\n unboundOG,\n unboundGS,\n unboundGP,\n unboundGO,\n unboundGG,\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica CanContainUndefs RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateCanContainUndefs extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return default value on initialize\n if (action.mode === 'initialize') {\n return { metadata: { canContainUndefs: false }};\n }\n\n // Otherwise, attempt to increment existing value\n let canContainUndefs = action.accumulatedMetadata.canContainUndefs;\n if (action.appendingMetadata.canContainUndefs) {\n canContainUndefs = true;\n }\n return { metadata: { canContainUndefs }};\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\nimport type { QueryResultCardinality } from '@comunica/types';\n\n/**\n * A comunica Cardinality RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateCardinality extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return default value on initialize\n if (action.mode === 'initialize') {\n return { metadata: { cardinality: { type: 'exact', value: 0 }}};\n }\n\n // Otherwise, attempt to update existing value\n const cardinality: QueryResultCardinality = { ...action.accumulatedMetadata.cardinality };\n\n if (cardinality.dataset) {\n // If the accumulated cardinality refers to that of the full default graph (applicable for SPARQL endpoints)\n if (action.accumulatedMetadata.defaultGraph === cardinality.dataset &&\n cardinality.dataset !== action.appendingMetadata.cardinality.dataset) {\n // Use the cardinality of the appending metadata.\n return { metadata: { cardinality: action.appendingMetadata.cardinality }};\n }\n\n if (action.appendingMetadata.cardinality.dataset) {\n // If the accumulated cardinality is dataset-wide\n if (cardinality.dataset !== action.appendingMetadata.cardinality.dataset &&\n action.appendingMetadata.subsetOf === cardinality.dataset) {\n // If the appending cardinality refers to the subset of a dataset,\n // use the cardinality of the subset.\n return { metadata: { cardinality: action.appendingMetadata.cardinality }};\n }\n if (cardinality.dataset === action.appendingMetadata.cardinality.dataset) {\n // If the appending cardinality is for the same dataset,\n // keep the accumulated cardinality unchanged.\n return { metadata: { cardinality }};\n }\n // If the appending cardinality refers to another dataset,\n // remove the dataset scopes.\n delete cardinality.dataset;\n } else {\n // If the appending cardinality refers to a dataset subset,\n // keep the accumulated cardinality unchanged.\n return { metadata: { cardinality }};\n }\n }\n\n if (!action.appendingMetadata.cardinality || !Number.isFinite(action.appendingMetadata.cardinality.value)) {\n // We're already at infinite, so ignore any later metadata\n cardinality.type = 'estimate';\n cardinality.value = Number.POSITIVE_INFINITY;\n } else {\n if (action.appendingMetadata.cardinality.type === 'estimate') {\n cardinality.type = 'estimate';\n }\n cardinality.value += action.appendingMetadata.cardinality.value;\n }\n\n return { metadata: { cardinality }};\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica PageSize RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulatePageSize extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return nothing on initialize\n if (action.mode === 'initialize') {\n return { metadata: {}};\n }\n\n // Otherwise, attempt to increment existing value\n return {\n metadata: {\n ...('pageSize' in action.accumulatedMetadata) || ('pageSize' in action.appendingMetadata) ?\n {\n pageSize: (action.accumulatedMetadata.pageSize ?? 0) + (action.appendingMetadata.pageSize ?? 0),\n } :\n {},\n },\n };\n }\n}\n","import type {\n IActionRdfMetadataAccumulate,\n IActorRdfMetadataAccumulateOutput,\n IActorRdfMetadataAccumulateArgs,\n} from '@comunica/bus-rdf-metadata-accumulate';\nimport { ActorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica RequestTime RDF Metadata Accumulate Actor.\n */\nexport class ActorRdfMetadataAccumulateRequestTime extends ActorRdfMetadataAccumulate {\n public constructor(args: IActorRdfMetadataAccumulateArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataAccumulate): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataAccumulate): Promise {\n // Return nothing on initialize\n if (action.mode === 'initialize') {\n return { metadata: {}};\n }\n\n // Otherwise, attempt to increment existing value\n return {\n metadata: {\n ...('requestTime' in action.accumulatedMetadata) || ('requestTime' in action.appendingMetadata) ?\n {\n requestTime: (action.accumulatedMetadata.requestTime ?? 0) + (action.appendingMetadata.requestTime ?? 0),\n } :\n {},\n },\n };\n }\n}\n","import type { IActionRdfMetadata, IActorRdfMetadataArgs, IActorRdfMetadataOutput } from '@comunica/bus-rdf-metadata';\nimport { ActorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { IActorTest } from '@comunica/core';\nimport { Readable } from 'readable-stream';\n\n/**\n * A comunica All RDF Metadata Actor.\n */\nexport class ActorRdfMetadataAll extends ActorRdfMetadata {\n public constructor(args: IActorRdfMetadataArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadata): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadata): Promise {\n const data: Readable = new Readable({ objectMode: true });\n const metadata: Readable = new Readable({ objectMode: true });\n\n // Forward errors (attach them immediately as they could arrive earlier)\n action.quads.on('error', (error) => {\n data.emit('error', error);\n metadata.emit('error', error);\n });\n\n // Terminate both streams on-end\n action.quads.on('end', () => {\n data.push(null);\n metadata.push(null);\n });\n\n const read: (size: number) => void = data._read = metadata._read = (size) => {\n while (size > 0) {\n const item = action.quads.read();\n if (item === null) {\n return action.quads.once('readable', () => read(size));\n }\n size--;\n data.push(item);\n metadata.push(item);\n }\n };\n\n return { data, metadata };\n }\n}\n","import type {\n IActionRdfMetadataExtract,\n IActorRdfMetadataExtractArgs,\n IActorRdfMetadataExtractOutput,\n} from '@comunica/bus-rdf-metadata-extract';\nimport { ActorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica Allow HTTP Methods RDF Metadata Extract Actor.\n */\nexport class ActorRdfMetadataExtractAllowHttpMethods extends ActorRdfMetadataExtract {\n public constructor(args: IActorRdfMetadataExtractArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataExtract): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataExtract): Promise {\n const metadata: Record = {};\n if (action.headers?.get('allow')) {\n metadata.allowHttpMethods = action.headers.get('allow')?.split(/, */u);\n }\n return { metadata };\n }\n}\n","import type {\n IActionRdfMetadataExtract,\n IActorRdfMetadataExtractOutput,\n IActorRdfMetadataExtractArgs,\n} from '@comunica/bus-rdf-metadata-extract';\nimport { ActorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport type { UriTemplate } from 'uritemplate';\nimport { parse as parseUriTemplate } from 'uritemplate';\n\n/**\n * An RDF Metadata Extract Actor that extracts all Hydra controls from the metadata stream.\n */\nexport class ActorRdfMetadataExtractHydraControls extends ActorRdfMetadataExtract {\n public static readonly HYDRA: string = 'http://www.w3.org/ns/hydra/core#';\n public static readonly LINK_TYPES: string[] = [ 'first', 'next', 'previous', 'last' ];\n protected readonly parsedUriTemplateCache: Record = {};\n\n public constructor(args: IActorRdfMetadataExtractArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataExtract): Promise {\n return true;\n }\n\n /**\n * Collect all Hydra page links from the given Hydra properties object.\n * @param pageUrl The page URL in which the Hydra properties are defined.\n * @param hydraProperties The collected Hydra properties.\n * @return The Hydra links\n */\n public getLinks(pageUrl: string, hydraProperties: Record>):\n Record {\n return Object.fromEntries(ActorRdfMetadataExtractHydraControls.LINK_TYPES.map((link) => {\n // First check the correct hydra:next, then the deprecated hydra:nextPage\n const links = hydraProperties[link] || hydraProperties[`${link}Page`];\n const linkTargets = links && links[pageUrl];\n return [ link, linkTargets && linkTargets.length > 0 ? [ linkTargets[0] ] : [] ];\n }));\n }\n\n /**\n * Parse a URI template, or retrieve it from a cache.\n * @param {string} template A URI template string.\n * @return {} A parsed URI template object.\n */\n public parseUriTemplateCached(template: string): UriTemplate {\n const cachedUriTemplate: UriTemplate = this.parsedUriTemplateCache[template];\n if (cachedUriTemplate) {\n return cachedUriTemplate;\n }\n\n return this.parsedUriTemplateCache[template] = parseUriTemplate(template);\n }\n\n /**\n * Collect all search forms from the given Hydra properties object.\n * @param hydraProperties The collected Hydra properties.\n * @return The search forms.\n */\n public getSearchForms(hydraProperties: Record>): ISearchForms {\n const searchFormData: Record = hydraProperties.search;\n const searchForms: ISearchForm[] = [];\n if (searchFormData) {\n for (const dataset in searchFormData) {\n for (const searchFormId of searchFormData[dataset]) {\n const searchTemplates = (hydraProperties.template || {})[searchFormId] || [];\n\n // Parse the template\n if (searchTemplates.length !== 1) {\n throw new Error(`Expected 1 hydra:template for ${searchFormId}`);\n }\n const template: string = searchTemplates[0];\n const searchTemplate: UriTemplate = this.parseUriTemplateCached(template);\n\n // Parse the template mappings\n const mappings: Record = Object\n .fromEntries(((hydraProperties.mapping || {})[searchFormId] || [])\n .map((mapping) => {\n const variable = ((hydraProperties.variable || {})[mapping] || [])[0];\n const property = ((hydraProperties.property || {})[mapping] || [])[0];\n if (!variable) {\n throw new Error(`Expected a hydra:variable for ${mapping}`);\n }\n if (!property) {\n throw new Error(`Expected a hydra:property for ${mapping}`);\n }\n return [ property, variable ];\n }));\n\n // Gets the URL of the Triple Pattern Fragment with the given triple pattern\n const getUri = (entries: Record): string => searchTemplate\n .expand(Object.fromEntries(Object.keys(entries).map(key => [ mappings[key], entries[key] ])));\n\n searchForms.push({ dataset, template, mappings, getUri });\n }\n }\n }\n return { values: searchForms };\n }\n\n /**\n * Collect all hydra properties from a given metadata stream\n * in a nice convenient nested hash (property / subject / objects).\n * @param {RDF.Stream} metadata\n * @return The collected Hydra properties.\n */\n public getHydraProperties(metadata: RDF.Stream): Promise>> {\n return new Promise((resolve, reject) => {\n metadata.on('error', reject);\n\n // Collect all hydra properties in a nice convenient nested hash (property / subject / objects).\n const hydraProperties: Record> = {};\n metadata.on('data', (quad) => {\n if (quad.predicate.value.startsWith(ActorRdfMetadataExtractHydraControls.HYDRA)) {\n const property = quad.predicate.value.slice(ActorRdfMetadataExtractHydraControls.HYDRA.length);\n const subjectProperties = hydraProperties[property] || (hydraProperties[property] = {});\n const objects = subjectProperties[quad.subject.value] || (subjectProperties[quad.subject.value] = []);\n objects.push(quad.object.value);\n }\n });\n\n metadata.on('end', () => resolve(hydraProperties));\n });\n }\n\n public async run(action: IActionRdfMetadataExtract): Promise {\n const metadata: IActorRdfMetadataExtractOutput['metadata'] = {};\n const hydraProperties = await this.getHydraProperties(action.metadata);\n Object.assign(metadata, this.getLinks(action.url, hydraProperties));\n metadata.searchForms = this.getSearchForms(hydraProperties);\n return { metadata };\n }\n}\n\nexport interface ISearchForm {\n /**\n * The dataset in which the search form is defined.\n */\n dataset: string;\n /**\n * The URI template containing Hydra variables.\n */\n template: string;\n /**\n * The mappings.\n * With as keys the Hydra properties,\n * and as values the Hydra variables\n */\n mappings: Record;\n\n /**\n * Instantiate a uri based on the given Hydra variable values.\n * @param entries Entries with as keys Hydra properties,\n * and as values Hydra variable values.\n * @return {string} The instantiated URI\n */\n getUri: (entries: Record) => string;\n}\n\nexport interface ISearchForms {\n /**\n * All available search forms.\n */\n values: ISearchForm[];\n}\n","import type {\n IActionRdfMetadataExtract,\n IActorRdfMetadataExtractOutput,\n IActorRdfMetadataExtractArgs,\n} from '@comunica/bus-rdf-metadata-extract';\nimport { ActorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * An RDF Metadata Extract Actor that extracts total items counts from a metadata stream based on the given predicates.\n */\nexport class ActorRdfMetadataExtractHydraCount extends ActorRdfMetadataExtract\n implements IActorRdfParseFixedMediaTypesArgs {\n public readonly predicates: string[];\n\n public constructor(args: IActorRdfParseFixedMediaTypesArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataExtract): Promise {\n return true;\n }\n\n public run(action: IActionRdfMetadataExtract): Promise {\n return new Promise((resolve, reject) => {\n // Forward errors\n action.metadata.on('error', reject);\n\n // Immediately resolve when a value has been found.\n action.metadata.on('data', (quad) => {\n if (this.predicates.includes(quad.predicate.value)) {\n resolve({\n metadata: {\n cardinality: {\n type: 'estimate',\n value: Number.parseInt(quad.object.value, 10),\n dataset: quad.subject.value,\n },\n },\n });\n }\n });\n\n // If no value has been found, assume infinity.\n action.metadata.on('end', () => {\n resolve({ metadata: { cardinality: { type: 'estimate', value: 0 }}});\n });\n });\n }\n}\n\nexport interface IActorRdfParseFixedMediaTypesArgs extends IActorRdfMetadataExtractArgs {\n /**\n * A predicate that provides a count estimate\n * @default {http://www.w3.org/ns/hydra/core#totalItems}\n * @default {http://rdfs.org/ns/void#triples}\n */\n predicates: string[];\n}\n","import type {\n IActionRdfMetadataExtract,\n IActorRdfMetadataExtractOutput,\n IActorRdfMetadataExtractArgs,\n} from '@comunica/bus-rdf-metadata-extract';\nimport { ActorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica Hydra Pagesize RDF Metadata Extract Actor.\n */\nexport class ActorRdfMetadataExtractHydraPagesize extends ActorRdfMetadataExtract {\n public readonly predicates: string[];\n\n public constructor(args: IActorRdfMetadataExtractHydraPagesizeArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataExtract): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataExtract): Promise {\n return new Promise((resolve, reject) => {\n // Forward errors\n action.metadata.on('error', reject);\n\n // Immediately resolve when a value has been found.\n action.metadata.on('data', (quad) => {\n if (this.predicates.includes(quad.predicate.value)) {\n resolve({ metadata: { pageSize: Number.parseInt(quad.object.value, 10) }});\n }\n });\n\n // If no value has been found, don't define the pageSize value.\n action.metadata.on('end', () => {\n resolve({ metadata: {}});\n });\n });\n }\n}\n\nexport interface IActorRdfMetadataExtractHydraPagesizeArgs extends IActorRdfMetadataExtractArgs {\n /**\n * A predicate that provides the page size\n * @default {http://www.w3.org/ns/hydra/core#itemsPerPage}\n */\n predicates: string[];\n}\n","import type {\n IActionRdfMetadataExtract,\n IActorRdfMetadataExtractOutput,\n IActorRdfMetadataExtractArgs,\n} from '@comunica/bus-rdf-metadata-extract';\nimport { ActorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica Patch SPARQL Update RDF Metadata Extract Actor.\n */\nexport class ActorRdfMetadataExtractPatchSparqlUpdate extends ActorRdfMetadataExtract {\n public constructor(args: IActorRdfMetadataExtractArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataExtract): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataExtract): Promise {\n const metadata: IActorRdfMetadataExtractOutput['metadata'] = {};\n // The ms-author-via header is added for backwards-compatibility with old Solid servers\n if (\n action.headers?.get('accept-patch')?.includes('application/sparql-update') ??\n action.headers?.get('ms-author-via')?.includes('SPARQL')\n ) {\n metadata.patchSparqlUpdate = true;\n }\n return { metadata };\n }\n}\n","import type {\n IActionRdfMetadataExtract,\n IActorRdfMetadataExtractOutput,\n IActorRdfMetadataExtractArgs,\n} from '@comunica/bus-rdf-metadata-extract';\nimport { ActorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica PUT Accepted RDF Metadata Extract Actor.\n */\nexport class ActorRdfMetadataExtractPutAccepted extends ActorRdfMetadataExtract {\n public constructor(args: IActorRdfMetadataExtractArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataExtract): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataExtract): Promise {\n const metadata: IActorRdfMetadataExtractOutput['metadata'] = {};\n if (action.headers?.get('accept-put')) {\n metadata.putAccepted = action.headers.get('accept-put')?.split(/, */u);\n }\n return { metadata };\n }\n}\n","import type {\n IActionRdfMetadataExtract,\n IActorRdfMetadataExtractOutput,\n IActorRdfMetadataExtractArgs,\n} from '@comunica/bus-rdf-metadata-extract';\nimport { ActorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica Request Time RDF Metadata Extract Actor.\n */\nexport class ActorRdfMetadataExtractRequestTime extends ActorRdfMetadataExtract {\n public constructor(args: IActorRdfMetadataExtractArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataExtract): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataExtract): Promise {\n return { metadata: { requestTime: action.requestTime }};\n }\n}\n","import type {\n IActionRdfMetadataExtract,\n IActorRdfMetadataExtractOutput,\n IActorRdfMetadataExtractArgs,\n} from '@comunica/bus-rdf-metadata-extract';\nimport { ActorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport type { IActorTest } from '@comunica/core';\nimport { resolve as resolveIri } from 'relative-to-absolute-iri';\n\n/**\n * A comunica RDF Metadata Extract Actor for SPARQL service descriptions.\n */\nexport class ActorRdfMetadataExtractSparqlService extends ActorRdfMetadataExtract {\n private readonly inferHttpsEndpoint: boolean;\n\n public constructor(args: IActorRdfMetadataExtractSparqlServiceArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfMetadataExtract): Promise {\n return true;\n }\n\n public async run(action: IActionRdfMetadataExtract): Promise {\n return new Promise((resolve, reject) => {\n // Forward errors\n action.metadata.on('error', reject);\n\n // Immediately resolve when a SPARQL service endpoint URL has been found\n const metadata: any = {};\n action.metadata.on('data', (quad) => {\n if (quad.predicate.value === 'http://www.w3.org/ns/sparql-service-description#endpoint' &&\n (quad.subject.termType === 'BlankNode' || quad.subject.value === action.url)) {\n metadata.sparqlService = quad.object.termType === 'Literal' ?\n resolveIri(quad.object.value, action.url) :\n quad.object.value;\n\n // Fix a common mistake in SPARQL endpoint setups where HTTPS SD's refer to a non-existing HTTP API\n if (this.inferHttpsEndpoint &&\n action.url.startsWith('https') && !metadata.sparqlService.startsWith('https')) {\n metadata.sparqlService = metadata.sparqlService.replace('http:', 'https:');\n }\n } else if (quad.predicate.value === 'http://www.w3.org/ns/sparql-service-description#defaultGraph') {\n metadata.defaultGraph = quad.object.value;\n }\n });\n\n // If no value has been found, emit nothing.\n action.metadata.on('end', () => {\n resolve({ metadata });\n });\n });\n }\n}\n\nexport interface IActorRdfMetadataExtractSparqlServiceArgs extends IActorRdfMetadataExtractArgs {\n /**\n * If HTTPS endpoints should be forcefully used if the original URL was HTTPS-based\n * @default {true}\n */\n inferHttpsEndpoint: boolean;\n}\n","import type { IActionRdfMetadata, IActorRdfMetadataArgs, IActorRdfMetadataOutput } from '@comunica/bus-rdf-metadata';\nimport { ActorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport { Readable } from 'readable-stream';\n\n/**\n * An RDF Metadata Actor that splits off the metadata based on the existence of a 'foaf:primaryTopic' link.\n * Only non-triple quad streams are supported.\n */\nexport class ActorRdfMetadataPrimaryTopic extends ActorRdfMetadata {\n private readonly metadataToData: boolean;\n private readonly dataToMetadataOnInvalidMetadataGraph: boolean;\n\n public constructor(args: IActorRdfMetadataPrimaryTopicArgs) {\n super(args);\n }\n\n public async test(action: IActionRdfMetadata): Promise {\n if (action.triples) {\n throw new Error('This actor only supports non-triple quad streams.');\n }\n return true;\n }\n\n public async run(action: IActionRdfMetadata): Promise {\n const data: Readable = new Readable({ objectMode: true });\n const metadata: Readable = new Readable({ objectMode: true });\n\n // Delay attachment of listeners until the data or metadata stream is being read.\n const attachListeners = (): void => {\n // Attach listeners only once\n data._read = metadata._read = () => {\n // Do nothing\n };\n\n // Forward errors\n action.quads.on('error', (error) => {\n data.emit('error', error);\n metadata.emit('error', error);\n });\n\n // First pass over data to categorize in graphs,\n // and to detect the primaryTopic triple.\n const graphs: Record = {};\n let endpointIdentifier: string | undefined;\n const primaryTopics: Record = {};\n action.quads.on('data', (quad) => {\n if (quad.predicate.value === 'http://rdfs.org/ns/void#subset' &&\n quad.object.value === action.url) {\n endpointIdentifier = quad.subject.value;\n } else if (quad.predicate.value === 'http://xmlns.com/foaf/0.1/primaryTopic') {\n primaryTopics[quad.object.value] = quad.subject.value;\n }\n let quads: RDF.Quad[] = graphs[quad.graph.value];\n if (!quads) {\n quads = graphs[quad.graph.value] = [];\n }\n quads.push(quad);\n });\n\n // When the stream has finished,\n // determine the appropriate metadata graph,\n // and emit all quads to the appropriate streams.\n action.quads.on('end', () => {\n const metadataGraph: string | undefined = endpointIdentifier ? primaryTopics[endpointIdentifier] : undefined;\n for (const graphName in graphs) {\n if (graphName === metadataGraph) {\n for (const quad of graphs[graphName]) {\n metadata.push(quad);\n }\n // Also emit metadata to data if requested\n if (this.metadataToData) {\n for (const quad of graphs[graphName]) {\n data.push(quad);\n }\n }\n } else {\n for (const quad of graphs[graphName]) {\n data.push(quad);\n }\n if (!metadataGraph && this.dataToMetadataOnInvalidMetadataGraph) {\n for (const quad of graphs[graphName]) {\n metadata.push(quad);\n }\n }\n }\n }\n data.push(null);\n metadata.push(null);\n });\n };\n data._read = metadata._read = () => {\n attachListeners();\n };\n\n return { data, metadata };\n }\n}\n\nexport interface IActorRdfMetadataPrimaryTopicArgs extends IActorRdfMetadataArgs {\n /**\n * If detected metadata triples should also be emitted as data triples\n * @default {false}\n */\n metadataToData: boolean;\n /**\n * If all data should also be seen as metadata when no metadata graph was detected\n * @default {true}\n */\n dataToMetadataOnInvalidMetadataGraph: boolean;\n}\n","import type {\n IActionRdfParseHtml,\n IActorRdfParseHtmlArgs,\n IActorRdfParseHtmlOutput,\n} from '@comunica/bus-rdf-parse-html';\nimport { ActorRdfParseHtml } from '@comunica/bus-rdf-parse-html';\nimport type { IActorTest } from '@comunica/core';\nimport { MicrodataRdfParser } from 'microdata-rdf-streaming-parser';\n\n/**\n * A comunica Microdata RDF Parse Html Actor.\n */\nexport class ActorRdfParseHtmlMicrodata extends ActorRdfParseHtml {\n public constructor(args: IActorRdfParseHtmlArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfParseHtml): Promise {\n return true;\n }\n\n public async run(action: IActionRdfParseHtml): Promise {\n const mediaType = action.headers ? action.headers.get('content-type') : null;\n const xmlMode = mediaType?.includes('xml');\n\n const htmlParseListener = new MicrodataRdfParser({ baseIRI: action.baseIRI, xmlMode });\n htmlParseListener.on('error', action.error);\n htmlParseListener.on('data', action.emit);\n // eslint-disable-next-line ts/unbound-method\n const onTagEndOld = htmlParseListener.onEnd;\n htmlParseListener.onEnd = () => {\n onTagEndOld.call(htmlParseListener);\n action.end();\n };\n return { htmlParseListener };\n }\n}\n","import type {\n IActionRdfParseHtml,\n IActorRdfParseHtmlOutput,\n IActorRdfParseHtmlArgs,\n} from '@comunica/bus-rdf-parse-html';\nimport { ActorRdfParseHtml } from '@comunica/bus-rdf-parse-html';\nimport type { IActorTest } from '@comunica/core';\nimport { RdfaParser } from 'rdfa-streaming-parser';\n\n/**\n * A comunica RDFa RDF Parse Html Actor.\n */\nexport class ActorRdfParseHtmlRdfa extends ActorRdfParseHtml {\n public constructor(args: IActorRdfParseHtmlArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfParseHtml): Promise {\n return true;\n }\n\n public async run(action: IActionRdfParseHtml): Promise {\n const mediaType = action.headers ? action.headers.get('content-type') : null;\n const language = (action.headers && action.headers.get('content-language')) ?? undefined;\n const profile = mediaType && mediaType.includes('xml') ? 'xhtml' : 'html';\n\n const htmlParseListener = new RdfaParser({ baseIRI: action.baseIRI, profile, language });\n htmlParseListener.on('error', action.error);\n htmlParseListener.on('data', action.emit);\n // eslint-disable-next-line ts/unbound-method\n const onTagEndOld = htmlParseListener.onEnd;\n htmlParseListener.onEnd = () => {\n onTagEndOld.call(htmlParseListener);\n action.end();\n };\n return { htmlParseListener };\n }\n}\n","import type { MediatorRdfParseHandle, MediatorRdfParseMediaTypes } from '@comunica/bus-rdf-parse';\nimport type {\n IActionRdfParseHtml,\n IActorRdfParseHtmlOutput,\n IActorRdfParseHtmlArgs,\n} from '@comunica/bus-rdf-parse-html';\nimport { ActorRdfParseHtml } from '@comunica/bus-rdf-parse-html';\nimport type { IActorTest } from '@comunica/core';\nimport { HtmlScriptListener } from './HtmlScriptListener';\n\n/**\n * A HTML script RDF Parse actor that listens on the 'rdf-parse' bus.\n *\n * It is able to extract and parse any RDF serialization from script tags in HTML files\n * and announce the presence of them by media type.\n */\nexport class ActorRdfParseHtmlScript extends ActorRdfParseHtml {\n private readonly mediatorRdfParseMediatypes: MediatorRdfParseMediaTypes;\n private readonly mediatorRdfParseHandle: MediatorRdfParseHandle;\n\n public constructor(args: IActorRdfParseHtmlScriptArgs) {\n super(args);\n }\n\n public async test(_action: IActionRdfParseHtml): Promise {\n return true;\n }\n\n public async run(action: IActionRdfParseHtml): Promise {\n const supportedTypes: Record = (await this.mediatorRdfParseMediatypes\n .mediate({ context: action.context, mediaTypes: true })).mediaTypes;\n const htmlParseListener = new HtmlScriptListener(\n this.mediatorRdfParseHandle,\n action.emit,\n action.error,\n action.end,\n supportedTypes,\n action.context,\n action.baseIRI,\n action.headers,\n );\n return { htmlParseListener };\n }\n}\n\nexport interface IActorRdfParseHtmlScriptArgs extends IActorRdfParseHtmlArgs {\n /**\n * The RDF Parse mediator for collecting media types\n */\n mediatorRdfParseMediatypes: MediatorRdfParseMediaTypes;\n /**\n * The RDF Parse mediator for handling parsing\n */\n mediatorRdfParseHandle: MediatorRdfParseHandle;\n}\n","import type { MediatorRdfParseHandle } from '@comunica/bus-rdf-parse';\nimport type { IHtmlParseListener } from '@comunica/bus-rdf-parse-html';\nimport { KeysRdfParseHtmlScript } from '@comunica/context-entries';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Readable } from 'readable-stream';\nimport { resolve as resolveIri } from 'relative-to-absolute-iri';\n\n/**\n * An HTML parse listeners that detects `.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n };\n Tokenizer.prototype.stateCDATASequence = function (c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n };\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n Tokenizer.prototype.fastForwardTo = function (c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n };\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n Tokenizer.prototype.stateInCommentLike = function (c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n };\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n Tokenizer.prototype.isTagStartChar = function (c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n };\n Tokenizer.prototype.startSpecial = function (sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n };\n Tokenizer.prototype.stateBeforeTagName = function (c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n var lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this.state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? State.BeforeSpecialS\n : State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n };\n Tokenizer.prototype.stateInTagName = function (c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateBeforeClosingTagName = function (c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n };\n Tokenizer.prototype.stateInClosingTagName = function (c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n };\n Tokenizer.prototype.stateAfterClosingTagName = function (c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeName = function (c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n };\n Tokenizer.prototype.stateInSelfClosingTag = function (c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateInAttributeName = function (c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n };\n Tokenizer.prototype.stateAfterAttributeName = function (c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeValue = function (c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n };\n Tokenizer.prototype.handleInAttributeValue = function (c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n };\n Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n };\n Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n };\n Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n };\n Tokenizer.prototype.stateBeforeDeclaration = function (c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n };\n Tokenizer.prototype.stateInDeclaration = function (c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n };\n Tokenizer.prototype.stateInProcessingInstruction = function (c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeComment = function (c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n };\n Tokenizer.prototype.stateInSpecialComment = function (c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeSpecialS = function (c) {\n var lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n };\n Tokenizer.prototype.stateBeforeEntity = function (c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === CharCodes.Number) {\n this.state = State.BeforeNumericEntity;\n }\n else if (c === CharCodes.Amp) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n };\n Tokenizer.prototype.stateInNamedEntity = function (c) {\n this.entityExcess += 1;\n this.trieIndex = (0, decode_js_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n var masked = this.trieCurrent & decode_js_1.BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n var valueLength = (masked >> 14) - 1;\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {\n this.trieIndex += valueLength;\n }\n else {\n // Add 1 as we have already incremented the excess\n var entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) {\n this.emitNamedEntity();\n }\n }\n }\n };\n Tokenizer.prototype.emitNamedEntity = function () {\n this.state = this.baseState;\n if (this.entityResult === 0) {\n return;\n }\n var valueLength = (this.entityTrie[this.entityResult] & decode_js_1.BinTrieFlags.VALUE_LENGTH) >>\n 14;\n switch (valueLength) {\n case 1: {\n this.emitCodePoint(this.entityTrie[this.entityResult] &\n ~decode_js_1.BinTrieFlags.VALUE_LENGTH);\n break;\n }\n case 2: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n }\n case 3: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n };\n Tokenizer.prototype.stateBeforeNumericEntity = function (c) {\n if ((c | 0x20) === CharCodes.LowerX) {\n this.entityExcess++;\n this.state = State.InHexEntity;\n }\n else {\n this.state = State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n };\n Tokenizer.prototype.emitNumericEntity = function (strict) {\n var entityStart = this.index - this.entityExcess - 1;\n var numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint((0, decode_js_1.replaceCodePoint)(this.entityResult));\n }\n this.state = this.baseState;\n };\n Tokenizer.prototype.stateInNumericEntity = function (c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n };\n Tokenizer.prototype.stateInHexEntity = function (c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else if (isHexDigit(c)) {\n this.entityResult =\n this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n };\n Tokenizer.prototype.allowLegacyEntity = function () {\n return (!this.xmlMode &&\n (this.baseState === State.Text ||\n this.baseState === State.InSpecialTag));\n };\n /**\n * Remove data that has already been consumed from the buffer.\n */\n Tokenizer.prototype.cleanup = function () {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n };\n Tokenizer.prototype.shouldContinue = function () {\n return this.index < this.buffer.length + this.offset && this.running;\n };\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n Tokenizer.prototype.parse = function () {\n while (this.shouldContinue()) {\n var c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InNamedEntity: {\n this.stateInNamedEntity(c);\n break;\n }\n case State.BeforeEntity: {\n this.stateBeforeEntity(c);\n break;\n }\n case State.InHexEntity: {\n this.stateInHexEntity(c);\n break;\n }\n case State.InNumericEntity: {\n this.stateInNumericEntity(c);\n break;\n }\n default: {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n }\n this.index++;\n }\n this.cleanup();\n };\n Tokenizer.prototype.finish = function () {\n if (this.state === State.InNamedEntity) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n };\n /** Handle any trailing data. */\n Tokenizer.prototype.handleTrailingData = function () {\n var endIndex = this.buffer.length + this.offset;\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InNumericEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InHexEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n };\n Tokenizer.prototype.emitPartial = function (start, endIndex) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribdata(start, endIndex);\n }\n else {\n this.cbs.ontext(start, endIndex);\n }\n };\n Tokenizer.prototype.emitCodePoint = function (cp) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribentity(cp);\n }\n else {\n this.cbs.ontextentity(cp);\n }\n };\n return Tokenizer;\n}());\nexports.default = Tokenizer;\n//# sourceMappingURL=Tokenizer.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomUtils = exports.parseFeed = exports.getFeed = exports.ElementType = exports.Tokenizer = exports.createDomStream = exports.parseDOM = exports.parseDocument = exports.DefaultHandler = exports.DomHandler = exports.Parser = void 0;\nvar Parser_js_1 = require(\"./Parser.js\");\nvar Parser_js_2 = require(\"./Parser.js\");\nObject.defineProperty(exports, \"Parser\", { enumerable: true, get: function () { return Parser_js_2.Parser; } });\nvar domhandler_1 = require(\"domhandler\");\nvar domhandler_2 = require(\"domhandler\");\nObject.defineProperty(exports, \"DomHandler\", { enumerable: true, get: function () { return domhandler_2.DomHandler; } });\n// Old name for DomHandler\nObject.defineProperty(exports, \"DefaultHandler\", { enumerable: true, get: function () { return domhandler_2.DomHandler; } });\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n */\nfunction parseDocument(data, options) {\n var handler = new domhandler_1.DomHandler(undefined, options);\n new Parser_js_1.Parser(handler, options).end(data);\n return handler.root;\n}\nexports.parseDocument = parseDocument;\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n * @deprecated Use `parseDocument` instead.\n */\nfunction parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\nexports.parseDOM = parseDOM;\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed.\n * @param options Optional options for the parser and DOM builder.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nfunction createDomStream(callback, options, elementCallback) {\n var handler = new domhandler_1.DomHandler(callback, options, elementCallback);\n return new Parser_js_1.Parser(handler, options);\n}\nexports.createDomStream = createDomStream;\nvar Tokenizer_js_1 = require(\"./Tokenizer.js\");\nObject.defineProperty(exports, \"Tokenizer\", { enumerable: true, get: function () { return __importDefault(Tokenizer_js_1).default; } });\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nexports.ElementType = __importStar(require(\"domelementtype\"));\nvar domutils_1 = require(\"domutils\");\nvar domutils_2 = require(\"domutils\");\nObject.defineProperty(exports, \"getFeed\", { enumerable: true, get: function () { return domutils_2.getFeed; } });\nvar parseFeedDefaultOptions = { xmlMode: true };\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nfunction parseFeed(feed, options) {\n if (options === void 0) { options = parseFeedDefaultOptions; }\n return (0, domutils_1.getFeed)(parseDOM(feed, options));\n}\nexports.parseFeed = parseFeed;\nexports.DomUtils = __importStar(require(\"domutils\"));\n//# sourceMappingURL=index.js.map","'use strict'\n\nvar COMPATIBLE_ENCODING_PATTERN = /^utf-?8|ascii|utf-?16-?le|ucs-?2|base-?64|latin-?1$/i\nvar WS_TRIM_PATTERN = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g\nvar WS_CHAR_PATTERN = /\\s|\\uFEFF|\\xA0/\nvar WS_FOLD_PATTERN = /\\r?\\n[\\x20\\x09]+/g\nvar DELIMITER_PATTERN = /[;,\"]/\nvar WS_DELIMITER_PATTERN = /[;,\"]|\\s/\n\n/**\n * Token character pattern\n * @type {RegExp}\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nvar TOKEN_PATTERN = /^[!#$%&'*+\\-\\.^_`|~\\da-zA-Z]+$/\n\nvar STATE = {\n IDLE: 1 << 0,\n URI: 1 << 1,\n ATTR: 1 << 2,\n}\n\nfunction trim( value ) {\n return value.replace( WS_TRIM_PATTERN, '' )\n}\n\nfunction hasWhitespace( value ) {\n return WS_CHAR_PATTERN.test( value )\n}\n\nfunction skipWhitespace( value, offset ) {\n while( hasWhitespace( value[offset] ) ) {\n offset++\n }\n return offset\n}\n\nfunction needsQuotes( value ) {\n return WS_DELIMITER_PATTERN.test( value ) ||\n !TOKEN_PATTERN.test( value )\n}\n\n/**\n * Shallow compares two objects to check if their properties match.\n * @param {object} object1 First object to compare.\n * @param {object} object2 Second object to compare.\n * @returns {boolean} Do the objects have matching properties.\n */\nfunction shallowCompareObjects( object1, object2 ) {\n return (\n Object.keys( object1 ).length === Object.keys( object2 ).length &&\n Object.keys( object1 ).every(\n ( key ) => key in object2 && object1[ key ] === object2[ key ]\n )\n );\n}\n\nclass Link {\n\n /**\n * Link\n * @constructor\n * @param {String} [value]\n * @returns {Link}\n */\n constructor( value ) {\n\n /** @type {Array} URI references */\n this.refs = []\n\n if( value ) {\n this.parse( value )\n }\n\n }\n\n /**\n * Get refs with given relation type\n * @param {String} value\n * @returns {Array}\n */\n rel( value ) {\n\n var links = []\n var type = value.toLowerCase()\n\n for( var i = 0; i < this.refs.length; i++ ) {\n if( typeof this.refs[ i ].rel === 'string' && this.refs[ i ].rel.toLowerCase() === type ) {\n links.push( this.refs[ i ] )\n }\n }\n\n return links\n\n }\n\n /**\n * Get refs where given attribute has a given value\n * @param {String} attr\n * @param {String} value\n * @returns {Array}\n */\n get( attr, value ) {\n\n attr = attr.toLowerCase()\n value = value.toLowerCase()\n\n var links = []\n\n for( var i = 0; i < this.refs.length; i++ ) {\n if( typeof this.refs[ i ][ attr ] === 'string' && this.refs[ i ][ attr ].toLowerCase() === value ) {\n links.push( this.refs[ i ] )\n }\n }\n\n return links\n\n }\n\n /** Sets a reference. */\n set( link ) {\n this.refs.push( link )\n return this\n }\n\n /**\n * Sets a reference if a reference with similar properties isn’t already set.\n */\n setUnique( link ) {\n\n if( !this.refs.some(( ref ) => shallowCompareObjects( ref, link )) ) {\n this.refs.push( link )\n }\n\n return this\n\n }\n\n has( attr, value ) {\n\n attr = attr.toLowerCase()\n value = value.toLowerCase()\n\n for( var i = 0; i < this.refs.length; i++ ) {\n if( typeof this.refs[ i ][ attr ] === 'string' && this.refs[ i ][ attr ].toLowerCase() === value ) {\n return true\n }\n }\n\n return false\n\n }\n\n parse( value, offset ) {\n\n offset = offset || 0\n value = offset ? value.slice( offset ) : value\n\n // Trim & unfold folded lines\n value = trim( value ).replace( WS_FOLD_PATTERN, '' )\n\n var state = STATE.IDLE\n var length = value.length\n var offset = 0\n var ref = null\n\n while( offset < length ) {\n if( state === STATE.IDLE ) {\n if( hasWhitespace( value[offset] ) ) {\n offset++\n continue\n } else if( value[offset] === '<' ) {\n if( ref != null ) {\n ref.rel != null ?\n this.refs.push( ...Link.expandRelations( ref ) ) :\n this.refs.push( ref )\n }\n var end = value.indexOf( '>', offset )\n if( end === -1 ) throw new Error( 'Expected end of URI delimiter at offset ' + offset )\n ref = { uri: value.slice( offset + 1, end ) }\n // this.refs.push( ref )\n offset = end\n state = STATE.URI\n } else {\n throw new Error( 'Unexpected character \"' + value[offset] + '\" at offset ' + offset )\n }\n offset++\n } else if( state === STATE.URI ) {\n if( hasWhitespace( value[offset] ) ) {\n offset++\n continue\n } else if( value[offset] === ';' ) {\n state = STATE.ATTR\n offset++\n } else if( value[offset] === ',' ) {\n state = STATE.IDLE\n offset++\n } else {\n throw new Error( 'Unexpected character \"' + value[offset] + '\" at offset ' + offset )\n }\n } else if( state === STATE.ATTR ) {\n if( value[offset] ===';' || hasWhitespace( value[offset] ) ) {\n offset++\n continue\n }\n var end = value.indexOf( '=', offset )\n if( end === -1 ) end = value.indexOf( ';', offset )\n if( end === -1 ) end = value.length\n var attr = trim( value.slice( offset, end ) ).toLowerCase()\n var attrValue = ''\n offset = end + 1\n offset = skipWhitespace( value, offset )\n if( value[offset] === '\"' ) {\n offset++\n while( offset < length ) {\n if( value[offset] === '\"' ) {\n offset++; break\n }\n if( value[offset] === '\\\\' ) {\n offset++\n }\n attrValue += value[offset]\n offset++\n }\n } else {\n var end = offset + 1\n while( !DELIMITER_PATTERN.test( value[end] ) && end < length ) {\n end++\n }\n attrValue = value.slice( offset, end )\n offset = end\n }\n if( ref[ attr ] && Link.isSingleOccurenceAttr( attr ) ) {\n // Ignore multiples of attributes which may only appear once\n } else if( attr[ attr.length - 1 ] === '*' ) {\n ref[ attr ] = Link.parseExtendedValue( attrValue )\n } else {\n attrValue = attr === 'type' ?\n attrValue.toLowerCase() : attrValue\n if( ref[ attr ] != null ) {\n if( Array.isArray( ref[ attr ] ) ) {\n ref[ attr ].push( attrValue )\n } else {\n ref[ attr ] = [ ref[ attr ], attrValue ]\n }\n } else {\n ref[ attr ] = attrValue\n }\n }\n switch( value[offset] ) {\n case ',': state = STATE.IDLE; break\n case ';': state = STATE.ATTR; break\n }\n offset++\n } else {\n throw new Error( 'Unknown parser state \"' + state + '\"' )\n }\n }\n\n if( ref != null ) {\n ref.rel != null ?\n this.refs.push( ...Link.expandRelations( ref ) ) :\n this.refs.push( ref )\n }\n\n ref = null\n\n return this\n\n }\n\n toString() {\n\n var refs = []\n var link = ''\n var ref = null\n\n for( var i = 0; i < this.refs.length; i++ ) {\n ref = this.refs[i]\n link = Object.keys( this.refs[i] ).reduce( function( link, attr ) {\n if( attr === 'uri' ) return link\n return link + '; ' + Link.formatAttribute( attr, ref[ attr ] )\n }, '<' + ref.uri + '>' )\n refs.push( link )\n }\n\n return refs.join( ', ' )\n\n }\n\n}\n\n/**\n * Determines whether an encoding can be\n * natively handled with a `Buffer`\n * @param {String} value\n * @returns {Boolean}\n */\nLink.isCompatibleEncoding = function( value ) {\n return COMPATIBLE_ENCODING_PATTERN.test( value )\n}\n\nLink.parse = function( value, offset ) {\n return new Link().parse( value, offset )\n}\n\nLink.isSingleOccurenceAttr = function( attr ) {\n return attr === 'rel' || attr === 'type' || attr === 'media' ||\n attr === 'title' || attr === 'title*'\n}\n\nLink.isTokenAttr = function( attr ) {\n return attr === 'rel' || attr === 'type' || attr === 'anchor'\n}\n\nLink.escapeQuotes = function( value ) {\n return value.replace( /\"/g, '\\\\\"' )\n}\n\nLink.expandRelations = function( ref ) {\n var rels = ref.rel.split( ' ' )\n return rels.map( function( rel ) {\n var value = Object.assign( {}, ref )\n value.rel = rel\n return value\n })\n}\n\n/**\n * Parses an extended value and attempts to decode it\n * @internal\n * @param {String} value\n * @return {Object}\n */\nLink.parseExtendedValue = function( value ) {\n var parts = /([^']+)?(?:'([^']*)')?(.+)/.exec( value )\n return {\n language: parts[2].toLowerCase(),\n encoding: Link.isCompatibleEncoding( parts[1] ) ?\n null : parts[1].toLowerCase(),\n value: Link.isCompatibleEncoding( parts[1] ) ?\n decodeURIComponent( parts[3] ) : parts[3]\n }\n}\n\n/**\n * Format a given extended attribute and it's value\n * @param {String} attr\n * @param {Object} data\n * @return {String}\n */\nLink.formatExtendedAttribute = function( attr, data ) {\n\n var encoding = ( data.encoding || 'utf-8' ).toUpperCase()\n var language = data.language || 'en'\n\n var encodedValue = ''\n\n if( Buffer.isBuffer( data.value ) && Link.isCompatibleEncoding( encoding ) ) {\n encodedValue = data.value.toString( encoding )\n } else if( Buffer.isBuffer( data.value ) ) {\n encodedValue = data.value.toString( 'hex' )\n .replace( /[0-9a-f]{2}/gi, '%$1' )\n } else {\n encodedValue = encodeURIComponent( data.value )\n }\n\n return attr + '=' + encoding + '\\'' +\n language + '\\'' + encodedValue\n\n}\n\n/**\n * Format a given attribute and it's value\n * @param {String} attr\n * @param {String|Object} value\n * @return {String}\n */\nLink.formatAttribute = function( attr, value ) {\n\n if( Array.isArray( value ) ) {\n return value.map(( item ) => {\n return Link.formatAttribute( attr, item )\n }).join( '; ' )\n }\n\n if( attr[ attr.length - 1 ] === '*' || typeof value !== 'string' ) {\n return Link.formatExtendedAttribute( attr, value )\n }\n\n if( Link.isTokenAttr( attr ) ) {\n value = needsQuotes( value ) ?\n '\"' + Link.escapeQuotes( value ) + '\"' :\n Link.escapeQuotes( value )\n } else if( needsQuotes( value ) ) {\n value = encodeURIComponent( value )\n // We don't need to escape <,> <;> within quotes\n value = value\n .replace( /%20/g, ' ' )\n .replace( /%2C/g, ',' )\n .replace( /%3B/g, ';' )\n\n value = '\"' + value + '\"'\n }\n\n return attr + '=' + value\n\n}\n\nmodule.exports = Link\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/**\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n return { value: false };\n}\n\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n}\n\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\n\nIterator.prototype.toString = function toString () {\n return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n}\n\nfunction iteratorDone() {\n return { value: undefined, done: true };\n}\n\nfunction hasIterator(maybeIterable) {\n if (Array.isArray(maybeIterable)) {\n // IE11 trick as it does not support `Symbol.iterator`\n return true;\n }\n\n return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nfunction isEntriesIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.entries;\n}\n\nfunction isKeysIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.keys;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n}\n\nvar Seq = /*@__PURE__*/(function (Collection) {\n function Seq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection ) Seq.__proto__ = Collection;\n Seq.prototype = Object.create( Collection && Collection.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === undefined || value === null\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (\n isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object).concat(\n Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []\n );\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n}\n\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n}\n\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return isEntriesIterable(value)\n ? seq.fromEntrySeq()\n : isKeysIterable(value)\n ? seq.toSetSeq()\n : seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n}\n\nvar imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n if (o == null) {\n return hashNullish(o);\n }\n\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n\n var v = valueOf(o);\n\n if (v == null) {\n return hashNullish(v);\n }\n\n switch (typeof v) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return v ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(v);\n case 'string':\n return v.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(v)\n : hashString(v);\n case 'object':\n case 'function':\n return hashJSObj(v);\n case 'symbol':\n return hashSymbol(v);\n default:\n if (typeof v.toString === 'function') {\n return hashString(v.toString());\n }\n throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n }\n}\n\nfunction hashNullish(nullish) {\n return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n}\n\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n}\n\nfunction hashSymbol(sym) {\n var hashed = symbolMap[sym];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = nextHash();\n\n symbolMap[sym] = hashed;\n\n return hashed;\n}\n\nfunction hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = nextHash();\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function () {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = (function () {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n}\n\nfunction valueOf(obj) {\n return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'\n ? obj.valueOf(obj)\n : obj;\n}\n\nfunction nextHash() {\n var nextHash = ++_objHashUID;\n if (_objHashUID & 0x40000000) {\n _objHashUID = 0;\n }\n return nextHash;\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\n\nvar symbolMap = Object.create(null);\n\nvar _objHashUID = 0;\n\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;\n ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;\n ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;\n ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;\n FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function () {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function (type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n var this$1$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction partitionFactory(collection, predicate, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = [[], []];\n collection.__iterate(function (v, k) {\n groups[predicate.call(context, v, k, collection) ? 1 : 0].push(\n isKeyedIter ? [k, v] : v\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); });\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function (type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&\n fn(v, iterations++, this$1$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries\n .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })\n .forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function (fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function (type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(\n null,\n steps.map(function (s) { return s.value; })\n )\n );\n });\n };\n return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\n\nfunction collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n}\n\nfunction makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n}\n\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n}\n\nfunction invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n}\n\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isPlainObject(value) {\n // The base prototype's toString deals with Argument objects and native namespaces like Math\n if (\n !value ||\n typeof value !== 'object' ||\n toString.call(value) !== '[object Object]'\n ) {\n return false;\n }\n\n var proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n\n // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n var parentProto = proto;\n var nextProto = Object.getPrototypeOf(proto);\n while (nextProto !== null) {\n parentProto = nextProto;\n nextProto = Object.getPrototypeOf(parentProto);\n }\n return parentProto === proto;\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObject(value))\n );\n}\n\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\n\nfunction has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n}\n\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n}\n\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\n\nfunction updateIn$1(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n}\n\nfunction setIn$1(collection, keyPath, value) {\n return updateIn$1(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn(keyPath, v) {\n return setIn$1(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n return updateIn$1(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\n\nfunction update$1(collection, key, notSetValue, updater) {\n return updateIn$1(collection, [key], notSetValue, updater);\n}\n\nfunction update(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update$1(this, key, notSetValue, updater);\n}\n\nfunction updateIn(keyPath, notSetValue, updater) {\n return updateIn$1(this, keyPath, notSetValue, updater);\n}\n\nfunction merge$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\n\nfunction merge(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection(sources[i]).forEach(mergeItem);\n }\n return merged;\n}\n\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) &&\n isDataStructure(newValue) &&\n areMergeable(oldValue, newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n}\n\n/**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\nfunction areMergeable(oldDataStructure, newDataStructure) {\n var oldSeq = Seq(oldDataStructure);\n var newSeq = Seq(newDataStructure);\n // This logic assumes that a sequence can only fall into one of the three\n // categories mentioned above (since there's no `isSetLike()` method).\n return (\n isIndexed(oldSeq) === isIndexed(newSeq) &&\n isKeyed(oldSeq) === isKeyed(newSeq)\n );\n}\n\nfunction mergeDeep() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\nfunction mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n}\n\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n return this.__altered;\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection) {\n function Map(value) {\n return value === undefined || value === null\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection ) Map.__proto__ = KeyedCollection;\n Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, this$1$1));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update;\nMapPrototype.updateIn = updateIn;\nMapPrototype.merge = MapPrototype.concat = merge$1;\nMapPrototype.mergeWith = mergeWith$1;\nMapPrototype.mergeDeep = mergeDeep;\nMapPrototype.mergeDeepWith = mergeDeepWith;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function (result, arr) {\n return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =\n function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n };\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =\n function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n };\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator ) MapIterator.__proto__ = Iterator;\n MapIterator.prototype = Object.create( Iterator && Iterator.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n}\n\nfunction makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n}\n\nfunction isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection) {\n function List(value) {\n var empty = emptyList();\n if (value === undefined || value === null) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection ) List.__proto__ = IndexedCollection;\n List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update;\nListPrototype.updateIn = updateIn;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function (result, arr) {\n return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\n\nvar EMPTY_LIST;\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n}\n\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map) {\n function OrderedMap(value) {\n return value === undefined || value === null\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map ) OrderedMap.__proto__ = Map;\n OrderedMap.prototype = Object.create( Map && Map.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n this.__altered = true;\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n omap.__altered = false;\n return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n omap.__altered = true;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection) {\n function Stack(value) {\n return value === undefined || value === null\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;\n Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function (result, arr) {\n return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n}\n\nfunction mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\n\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection) {\n function Set(value) {\n return value === undefined || value === null\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection ) Set.__proto__ = SetCollection;\n Set.prototype = Object.create( SetCollection && SetCollection.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n // keep track if the set is altered by the map function\n var didChanges = false;\n\n var newMap = updateSet(\n this,\n this._map.mapEntries(function (ref) {\n var v = ref[1];\n\n var mapped = mapper.call(context, v, v, this$1$1);\n\n if (mapped !== v) {\n didChanges = true;\n }\n\n return [mapped, mapped];\n }, context)\n );\n\n return didChanges ? newMap : this;\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n if (typeof iters[ii] === 'string') {\n set.add(iters[ii]);\n } else {\n SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function (result, arr) {\n return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq ) Range.__proto__ = IndexedSeq;\n Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nfunction getIn$1(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n}\n\nfunction getIn(searchKeyPath, notSetValue) {\n return getIn$1(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn$1(collection, keyPath) {\n return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn(searchKeyPath) {\n return hasIn$1(this, searchKeyPath);\n}\n\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq().map(this.__toStringMapper).join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n partition: function partition(predicate, context) {\n return partitionFactory(this, predicate, context);\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = false;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n returnValue = true;\n return false;\n }\n });\n return returnValue;\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq().reverse().first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })\n .flip()\n );\n },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n this.size === Infinity ||\n (this.size !== undefined && index > this.size)\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n});\n\nvar SetCollectionPrototype = SetCollection.prototype;\nSetCollectionPrototype.has = CollectionPrototype.includes;\nSetCollectionPrototype.contains = SetCollectionPrototype.includes;\nSetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollectionPrototype);\nmixin(IndexedSeq, IndexedCollectionPrototype);\nmixin(SetSeq, SetCollectionPrototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n}\n\nfunction keyMapper(v, k) {\n return k;\n}\n\nfunction entryMapper(v, k) {\n return [k, v];\n}\n\nfunction not(predicate) {\n return function () {\n return !predicate.apply(this, arguments);\n };\n}\n\nfunction neg(predicate) {\n return function () {\n return -predicate.apply(this, arguments);\n };\n}\n\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n}\n\nfunction hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set) {\n function OrderedSet(value) {\n return value === undefined || value === null\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set ) OrderedSet.__proto__ = Set;\n OrderedSet.prototype = Object.create( Set && Set.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n}\n\nvar PairSorting = {\n LeftThenRight: -1,\n RightThenLeft: +1,\n};\n\nfunction throwOnInvalidDefaultValues(defaultValues) {\n if (isRecord(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'\n );\n }\n\n if (isImmutable(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'\n );\n }\n\n if (defaultValues === null || typeof defaultValues !== 'object') {\n throw new Error(\n 'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'\n );\n }\n}\n\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n throwOnInvalidDefaultValues(defaultValues);\n\n var RecordType = function Record(values) {\n var this$1$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n });\n });\n return this;\n };\n\n var RecordTypePrototype = (RecordType.prototype =\n Object.create(RecordPrototype));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n return (\n this === other ||\n (isRecord(other) && recordSeq(this).equals(recordSeq(other)))\n );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge$1;\nRecordPrototype.mergeWith = mergeWith$1;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep;\nRecordPrototype.mergeDeepWith = mergeDeepWith;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn;\nRecordPrototype.update = update;\nRecordPrototype.updateIn = updateIn;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\n\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function () {\n return this.get(name);\n },\n set: function (value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;\n Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n if (\n typeof value !== 'string' &&\n !isImmutable(value) &&\n (isArrayLike(value) || hasIterator(value) || isPlainObject(value))\n ) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n}\n\nfunction defaultConverter(k, v) {\n // Effectively the opposite of \"Collection.toSeq()\"\n return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n}\n\nvar version = \"4.3.5\";\n\nvar Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n PairSorting: PairSorting,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isPlainObject: isPlainObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn$1,\n has: has,\n hasIn: hasIn$1,\n merge: merge,\n mergeDeep: mergeDeep$1,\n mergeWith: mergeWith,\n mergeDeepWith: mergeDeepWith$1,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn$1,\n update: update$1,\n updateIn: updateIn$1,\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport default Immutable;\nexport { Collection, Iterable, List, Map, OrderedMap, OrderedSet, PairSorting, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn$1 as getIn, has, hasIn$1 as hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep$1 as mergeDeep, mergeDeepWith$1 as mergeDeepWith, mergeWith, remove, removeIn, set, setIn$1 as setIn, update$1 as update, updateIn$1 as updateIn, version };\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/ContextParser\"), exports);\n__exportStar(require(\"./lib/ErrorCoded\"), exports);\n__exportStar(require(\"./lib/FetchDocumentLoader\"), exports);\n__exportStar(require(\"./lib/IDocumentLoader\"), exports);\n__exportStar(require(\"./lib/JsonLdContext\"), exports);\n__exportStar(require(\"./lib/JsonLdContextNormalized\"), exports);\n__exportStar(require(\"./lib/Util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextParser = void 0;\nrequire(\"cross-fetch/polyfill\");\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\nconst ErrorCoded_1 = require(\"./ErrorCoded\");\nconst FetchDocumentLoader_1 = require(\"./FetchDocumentLoader\");\nconst JsonLdContextNormalized_1 = require(\"./JsonLdContextNormalized\");\nconst Util_1 = require(\"./Util\");\n/**\n * Parses JSON-LD contexts.\n */\nclass ContextParser {\n constructor(options) {\n options = options || {};\n this.documentLoader = options.documentLoader || new FetchDocumentLoader_1.FetchDocumentLoader();\n this.documentCache = {};\n this.validateContext = !options.skipValidation;\n this.expandContentTypeToBase = !!options.expandContentTypeToBase;\n this.remoteContextsDepthLimit = options.remoteContextsDepthLimit || 32;\n this.redirectSchemaOrgHttps = 'redirectSchemaOrgHttps' in options ? !!options.redirectSchemaOrgHttps : true;\n }\n /**\n * Validate the given @language value.\n * An error will be thrown if it is invalid.\n * @param value An @language value.\n * @param {boolean} strictRange If the string value should be strictly checked against a regex.\n * @param {string} errorCode The error code to emit on errors.\n * @return {boolean} If validation passed.\n * Can only be false if strictRange is false and the string value did not pass the regex.\n */\n static validateLanguage(value, strictRange, errorCode) {\n if (typeof value !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@language' must be a string, got '${JSON.stringify(value)}'`, errorCode);\n }\n if (!Util_1.Util.REGEX_LANGUAGE_TAG.test(value)) {\n if (strictRange) {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@language' must be a valid language tag, got '${JSON.stringify(value)}'`, errorCode);\n }\n else {\n return false;\n }\n }\n return true;\n }\n /**\n * Validate the given @direction value.\n * An error will be thrown if it is invalid.\n * @param value An @direction value.\n * @param {boolean} strictValues If the string value should be strictly checked against a regex.\n * @return {boolean} If validation passed.\n * Can only be false if strictRange is false and the string value did not pass the regex.\n */\n static validateDirection(value, strictValues) {\n if (typeof value !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@direction' must be a string, got '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_BASE_DIRECTION);\n }\n if (!Util_1.Util.REGEX_DIRECTION_TAG.test(value)) {\n if (strictValues) {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@direction' must be 'ltr' or 'rtl', got '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_BASE_DIRECTION);\n }\n else {\n return false;\n }\n }\n return true;\n }\n /**\n * Add an @id term for all @reverse terms.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @return {IJsonLdContextNormalizedRaw} The mutated input context.\n */\n idifyReverseTerms(context) {\n for (const key of Object.keys(context)) {\n let value = context[key];\n if (value && typeof value === 'object') {\n if (value['@reverse'] && !value['@id']) {\n if (typeof value['@reverse'] !== 'string' || Util_1.Util.isValidKeyword(value['@reverse'])) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid @reverse value, must be absolute IRI or blank node: '${value['@reverse']}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n value = context[key] = Object.assign(Object.assign({}, value), { '@id': value['@reverse'] });\n value['@id'] = value['@reverse'];\n if (Util_1.Util.isPotentialKeyword(value['@reverse'])) {\n delete value['@reverse'];\n }\n else {\n value['@reverse'] = true;\n }\n }\n }\n }\n return context;\n }\n /**\n * Expand all prefixed terms in the given context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {boolean} expandContentTypeToBase If @type inside the context may be expanded\n * via @base if @vocab is set to null.\n * @param {string[]} keys Optional set of keys from the context to expand. If left undefined, all\n * keys in the context will be expanded.\n */\n expandPrefixedTerms(context, expandContentTypeToBase, keys) {\n const contextRaw = context.getContextRaw();\n for (const key of (keys || Object.keys(contextRaw))) {\n // Only expand allowed keys\n if (Util_1.Util.EXPAND_KEYS_BLACKLIST.indexOf(key) < 0 && !Util_1.Util.isReservedInternalKeyword(key)) {\n // Error if we try to alias a keyword to something else.\n const keyValue = contextRaw[key];\n if (Util_1.Util.isPotentialKeyword(key) && Util_1.Util.ALIAS_DOMAIN_BLACKLIST.indexOf(key) >= 0) {\n if (key !== '@type' || typeof contextRaw[key] === 'object'\n && !(contextRaw[key]['@protected'] || contextRaw[key]['@container'] === '@set')) {\n throw new ErrorCoded_1.ErrorCoded(`Keywords can not be aliased to something else.\nTried mapping ${key} to ${JSON.stringify(keyValue)}`, ErrorCoded_1.ERROR_CODES.KEYWORD_REDEFINITION);\n }\n }\n // Error if we try to alias to an illegal keyword\n if (Util_1.Util.ALIAS_RANGE_BLACKLIST.indexOf(Util_1.Util.getContextValueId(keyValue)) >= 0) {\n throw new ErrorCoded_1.ErrorCoded(`Aliasing to certain keywords is not allowed.\nTried mapping ${key} to ${JSON.stringify(keyValue)}`, ErrorCoded_1.ERROR_CODES.INVALID_KEYWORD_ALIAS);\n }\n // Error if this term was marked as prefix as well\n if (keyValue && Util_1.Util.isPotentialKeyword(Util_1.Util.getContextValueId(keyValue))\n && keyValue['@prefix'] === true) {\n throw new ErrorCoded_1.ErrorCoded(`Tried to use keyword aliases as prefix: '${key}': '${JSON.stringify(keyValue)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n // Loop because prefixes might be nested\n while (Util_1.Util.isPrefixValue(contextRaw[key])) {\n const value = contextRaw[key];\n let changed = false;\n if (typeof value === 'string') {\n contextRaw[key] = context.expandTerm(value, true);\n changed = changed || value !== contextRaw[key];\n }\n else {\n const id = value['@id'];\n const type = value['@type'];\n // If @id is missing, don't allow @id to be added if @prefix: true and key not being a valid IRI.\n const canAddIdEntry = !('@prefix' in value) || Util_1.Util.isValidIri(key);\n if ('@id' in value) {\n // Use @id value for expansion\n if (id !== undefined && id !== null && typeof id === 'string') {\n contextRaw[key] = Object.assign(Object.assign({}, contextRaw[key]), { '@id': context.expandTerm(id, true) });\n changed = changed || id !== contextRaw[key]['@id'];\n }\n }\n else if (!Util_1.Util.isPotentialKeyword(key) && canAddIdEntry) {\n // Add an explicit @id value based on the expanded key value\n const newId = context.expandTerm(key, true);\n if (newId !== key) {\n // Don't set @id if expansion failed\n contextRaw[key] = Object.assign(Object.assign({}, contextRaw[key]), { '@id': newId });\n changed = true;\n }\n }\n if (type && typeof type === 'string' && type !== '@vocab'\n && (!value['@container'] || !value['@container']['@type'])\n && canAddIdEntry) {\n // First check @vocab, then fallback to @base\n let expandedType = context.expandTerm(type, true);\n if (expandContentTypeToBase && type === expandedType) {\n expandedType = context.expandTerm(type, false);\n }\n if (expandedType !== type) {\n changed = true;\n contextRaw[key] = Object.assign(Object.assign({}, contextRaw[key]), { '@type': expandedType });\n }\n }\n }\n if (!changed) {\n break;\n }\n }\n }\n }\n }\n /**\n * Normalize the @language entries in the given context to lowercase.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {IParseOptions} parseOptions The parsing options.\n */\n normalize(context, { processingMode, normalizeLanguageTags }) {\n // Lowercase language keys in 1.0\n if (normalizeLanguageTags || processingMode === 1.0) {\n for (const key of Object.keys(context)) {\n if (key === '@language' && typeof context[key] === 'string') {\n context[key] = context[key].toLowerCase();\n }\n else {\n const value = context[key];\n if (value && typeof value === 'object') {\n if (typeof value['@language'] === 'string') {\n const lowercase = value['@language'].toLowerCase();\n if (lowercase !== value['@language']) {\n context[key] = Object.assign(Object.assign({}, value), { '@language': lowercase });\n }\n }\n }\n }\n }\n }\n }\n /**\n * Convert all @container strings and array values to hash-based values.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n */\n containersToHash(context) {\n for (const key of Object.keys(context)) {\n const value = context[key];\n if (value && typeof value === 'object') {\n if (typeof value['@container'] === 'string') {\n context[key] = Object.assign(Object.assign({}, value), { '@container': { [value['@container']]: true } });\n }\n else if (Array.isArray(value['@container'])) {\n const newValue = {};\n for (const containerValue of value['@container']) {\n newValue[containerValue] = true;\n }\n context[key] = Object.assign(Object.assign({}, value), { '@container': newValue });\n }\n }\n }\n }\n /**\n * Normalize and apply context-level @protected terms onto each term separately.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {number} processingMode The processing mode.\n */\n applyScopedProtected(context, { processingMode }, expandOptions) {\n if (processingMode && processingMode >= 1.1) {\n if (context['@protected']) {\n for (const key of Object.keys(context)) {\n if (Util_1.Util.isReservedInternalKeyword(key)) {\n continue;\n }\n if (!Util_1.Util.isPotentialKeyword(key) && !Util_1.Util.isTermProtected(context, key)) {\n const value = context[key];\n if (value && typeof value === 'object') {\n if (!('@protected' in context[key])) {\n // Mark terms with object values as protected if they don't have an @protected: false annotation\n context[key] = Object.assign(Object.assign({}, context[key]), { '@protected': true });\n }\n }\n else {\n // Convert string-based term values to object-based values with @protected: true\n context[key] = {\n '@id': value,\n '@protected': true,\n };\n if (Util_1.Util.isSimpleTermDefinitionPrefix(value, expandOptions)) {\n context[key] = Object.assign(Object.assign({}, context[key]), { '@prefix': true });\n }\n }\n }\n }\n delete context['@protected'];\n }\n }\n }\n /**\n * Check if the given context inheritance does not contain any overrides of protected terms.\n * @param {IJsonLdContextNormalizedRaw} contextBefore The context that may contain some protected terms.\n * @param {IJsonLdContextNormalizedRaw} contextAfter A new context that is being applied on the first one.\n * @param {IExpandOptions} expandOptions Options that are needed for any expansions during this validation.\n * @param {string[]} keys Optional set of keys from the context to validate. If left undefined, all\n * keys defined in contextAfter will be checked.\n */\n validateKeywordRedefinitions(contextBefore, contextAfter, expandOptions, keys) {\n for (const key of (keys !== null && keys !== void 0 ? keys : Object.keys(contextAfter))) {\n if (Util_1.Util.isTermProtected(contextBefore, key)) {\n // The entry in the context before will always be in object-mode\n // If the new entry is in string-mode, convert it to object-mode\n // before checking if it is identical.\n if (typeof contextAfter[key] === 'string') {\n contextAfter[key] = { '@id': contextAfter[key], '@protected': true };\n }\n else {\n // We modify this deliberately,\n // as we need it for the value comparison (they must be identical modulo '@protected')),\n // and for the fact that this new value will override the first one.\n contextAfter[key] = Object.assign(Object.assign({}, contextAfter[key]), { '@protected': true });\n }\n // Error if they are not identical\n if (!Util_1.Util.deepEqual(contextBefore[key], contextAfter[key])) {\n throw new ErrorCoded_1.ErrorCoded(`Attempted to override the protected keyword ${key} from ${JSON.stringify(Util_1.Util.getContextValueId(contextBefore[key]))} to ${JSON.stringify(Util_1.Util.getContextValueId(contextAfter[key]))}`, ErrorCoded_1.ERROR_CODES.PROTECTED_TERM_REDEFINITION);\n }\n }\n }\n }\n /**\n * Validate the entries of the given context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {IParseOptions} options The parse options.\n */\n validate(context, { processingMode }) {\n for (const key of Object.keys(context)) {\n // Ignore reserved internal keywords.\n if (Util_1.Util.isReservedInternalKeyword(key)) {\n continue;\n }\n // Do not allow empty term\n if (key === '') {\n throw new ErrorCoded_1.ErrorCoded(`The empty term is not allowed, got: '${key}': '${JSON.stringify(context[key])}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n const value = context[key];\n const valueType = typeof value;\n // First check if the key is a keyword\n if (Util_1.Util.isPotentialKeyword(key)) {\n switch (key.substr(1)) {\n case 'vocab':\n if (value !== null && valueType !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @vocab IRI: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_VOCAB_MAPPING);\n }\n break;\n case 'base':\n if (value !== null && valueType !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @base IRI: ${context[key]}`, ErrorCoded_1.ERROR_CODES.INVALID_BASE_IRI);\n }\n break;\n case 'language':\n if (value !== null) {\n ContextParser.validateLanguage(value, true, ErrorCoded_1.ERROR_CODES.INVALID_DEFAULT_LANGUAGE);\n }\n break;\n case 'version':\n if (value !== null && valueType !== 'number') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @version number: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_VERSION_VALUE);\n }\n break;\n case 'direction':\n if (value !== null) {\n ContextParser.validateDirection(value, true);\n }\n break;\n case 'propagate':\n if (processingMode === 1.0) {\n throw new ErrorCoded_1.ErrorCoded(`Found an illegal @propagate keyword: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_ENTRY);\n }\n if (value !== null && valueType !== 'boolean') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid @propagate value: ${value}`, ErrorCoded_1.ERROR_CODES.INVALID_PROPAGATE_VALUE);\n }\n break;\n }\n // Don't allow keywords to be overridden\n if (Util_1.Util.isValidKeyword(key) && Util_1.Util.isValidKeyword(Util_1.Util.getContextValueId(value))) {\n throw new ErrorCoded_1.ErrorCoded(`Illegal keyword alias in term value, found: '${key}': '${Util_1.Util\n .getContextValueId(value)}'`, ErrorCoded_1.ERROR_CODES.KEYWORD_REDEFINITION);\n }\n continue;\n }\n // Otherwise, consider the key a term\n if (value !== null) {\n switch (valueType) {\n case 'string':\n if (Util_1.Util.getPrefix(value, context) === key) {\n throw new ErrorCoded_1.ErrorCoded(`Detected cyclical IRI mapping in context entry: '${key}': '${JSON\n .stringify(value)}'`, ErrorCoded_1.ERROR_CODES.CYCLIC_IRI_MAPPING);\n }\n if (Util_1.Util.isValidIriWeak(key)) {\n if (value === '@type') {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to @type, found: '${key}': '${value}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n else if (Util_1.Util.isValidIri(value) && value !== new JsonLdContextNormalized_1.JsonLdContextNormalized(context).expandTerm(key)) {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to other IRIs, found: '${key}': '${value}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n }\n break;\n case 'object':\n if (!Util_1.Util.isCompactIri(key) && !('@id' in value)\n && (value['@type'] === '@id' ? !context['@base'] : !context['@vocab'])) {\n throw new ErrorCoded_1.ErrorCoded(`Missing @id in context entry: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n for (const objectKey of Object.keys(value)) {\n const objectValue = value[objectKey];\n if (!objectValue) {\n continue;\n }\n switch (objectKey) {\n case '@id':\n if (Util_1.Util.isValidKeyword(objectValue)\n && objectValue !== '@type' && objectValue !== '@id' && objectValue !== '@graph' && objectValue !== '@nest') {\n throw new ErrorCoded_1.ErrorCoded(`Illegal keyword alias in term value, found: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n if (Util_1.Util.isValidIriWeak(key)) {\n if (objectValue === '@type') {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to @type, found: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n else if (Util_1.Util.isValidIri(objectValue)\n && objectValue !== new JsonLdContextNormalized_1.JsonLdContextNormalized(context).expandTerm(key)) {\n throw new ErrorCoded_1.ErrorCoded(`IRIs can not be mapped to other IRIs, found: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n }\n if (typeof objectValue !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`Detected non-string @id in context entry: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n if (Util_1.Util.getPrefix(objectValue, context) === key) {\n throw new ErrorCoded_1.ErrorCoded(`Detected cyclical IRI mapping in context entry: '${key}': '${JSON\n .stringify(value)}'`, ErrorCoded_1.ERROR_CODES.CYCLIC_IRI_MAPPING);\n }\n break;\n case '@type':\n if (value['@container'] === '@type' && objectValue !== '@id' && objectValue !== '@vocab') {\n throw new ErrorCoded_1.ErrorCoded(`@container: @type only allows @type: @id or @vocab, but got: '${key}': '${objectValue}'`, ErrorCoded_1.ERROR_CODES.INVALID_TYPE_MAPPING);\n }\n if (typeof objectValue !== 'string') {\n throw new ErrorCoded_1.ErrorCoded(`The value of an '@type' must be a string, got '${JSON.stringify(valueType)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TYPE_MAPPING);\n }\n if (objectValue !== '@id' && objectValue !== '@vocab'\n && (processingMode === 1.0 || objectValue !== '@json')\n && (processingMode === 1.0 || objectValue !== '@none')\n && (objectValue[0] === '_' || !Util_1.Util.isValidIri(objectValue))) {\n throw new ErrorCoded_1.ErrorCoded(`A context @type must be an absolute IRI, found: '${key}': '${objectValue}'`, ErrorCoded_1.ERROR_CODES.INVALID_TYPE_MAPPING);\n }\n break;\n case '@reverse':\n if (typeof objectValue === 'string' && value['@id'] && value['@id'] !== objectValue) {\n throw new ErrorCoded_1.ErrorCoded(`Found non-matching @id and @reverse term values in '${key}':\\\n'${objectValue}' and '${value['@id']}'`, ErrorCoded_1.ERROR_CODES.INVALID_REVERSE_PROPERTY);\n }\n if ('@nest' in value) {\n throw new ErrorCoded_1.ErrorCoded(`@nest is not allowed in the reverse property '${key}'`, ErrorCoded_1.ERROR_CODES.INVALID_REVERSE_PROPERTY);\n }\n break;\n case '@container':\n if (processingMode === 1.0) {\n if (Object.keys(objectValue).length > 1\n || Util_1.Util.CONTAINERS_1_0.indexOf(Object.keys(objectValue)[0]) < 0) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid term @container for '${key}' ('${Object.keys(objectValue)}') in 1.0, \\\nmust be only one of ${Util_1.Util.CONTAINERS_1_0.join(', ')}`, ErrorCoded_1.ERROR_CODES.INVALID_CONTAINER_MAPPING);\n }\n }\n for (const containerValue of Object.keys(objectValue)) {\n if (containerValue === '@list' && value['@reverse']) {\n throw new ErrorCoded_1.ErrorCoded(`Term value can not be @container: @list and @reverse at the same time on '${key}'`, ErrorCoded_1.ERROR_CODES.INVALID_REVERSE_PROPERTY);\n }\n if (Util_1.Util.CONTAINERS.indexOf(containerValue) < 0) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid term @container for '${key}' ('${containerValue}'), \\\nmust be one of ${Util_1.Util.CONTAINERS.join(', ')}`, ErrorCoded_1.ERROR_CODES.INVALID_CONTAINER_MAPPING);\n }\n }\n break;\n case '@language':\n ContextParser.validateLanguage(objectValue, true, ErrorCoded_1.ERROR_CODES.INVALID_LANGUAGE_MAPPING);\n break;\n case '@direction':\n ContextParser.validateDirection(objectValue, true);\n break;\n case '@prefix':\n if (objectValue !== null && typeof objectValue !== 'boolean') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid term @prefix boolean in: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_PREFIX_VALUE);\n }\n if (!('@id' in value) && !Util_1.Util.isValidIri(key)) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid @prefix definition for '${key}' ('${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n break;\n case '@index':\n if (processingMode === 1.0 || !value['@container'] || !value['@container']['@index']) {\n throw new ErrorCoded_1.ErrorCoded(`Attempt to add illegal key to value object: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n break;\n case '@nest':\n if (Util_1.Util.isPotentialKeyword(objectValue) && objectValue !== '@nest') {\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid term @nest value in: '${key}': '${JSON.stringify(value)}'`, ErrorCoded_1.ERROR_CODES.INVALID_NEST_VALUE);\n }\n }\n }\n break;\n default:\n throw new ErrorCoded_1.ErrorCoded(`Found an invalid term value: '${key}': '${value}'`, ErrorCoded_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n }\n }\n }\n /**\n * Apply the @base context entry to the given context under certain circumstances.\n * @param context A context.\n * @param options Parsing options.\n * @param inheritFromParent If the @base value from the parent context can be inherited.\n * @return The given context.\n */\n applyBaseEntry(context, options, inheritFromParent) {\n // In some special cases, this can be a string, so ignore those.\n if (typeof context === 'string') {\n return context;\n }\n // Give priority to @base in the parent context\n if (inheritFromParent && !('@base' in context) && options.parentContext\n && typeof options.parentContext === 'object' && '@base' in options.parentContext) {\n context['@base'] = options.parentContext['@base'];\n if (options.parentContext['@__baseDocument']) {\n context['@__baseDocument'] = true;\n }\n }\n // Override the base IRI if provided.\n if (options.baseIRI && !options.external) {\n if (!('@base' in context)) {\n // The context base is the document base\n context['@base'] = options.baseIRI;\n context['@__baseDocument'] = true;\n }\n else if (context['@base'] !== null && typeof context['@base'] === 'string'\n && !Util_1.Util.isValidIri(context['@base'])) {\n // The context base is relative to the document base\n context['@base'] = (0, relative_to_absolute_iri_1.resolve)(context['@base'], options.parentContext && options.parentContext['@base'] || options.baseIRI);\n }\n }\n return context;\n }\n /**\n * Resolve relative context IRIs, or return full IRIs as-is.\n * @param {string} contextIri A context IRI.\n * @param {string} baseIRI A base IRI.\n * @return {string} The normalized context IRI.\n */\n normalizeContextIri(contextIri, baseIRI) {\n if (!Util_1.Util.isValidIri(contextIri)) {\n try {\n contextIri = (0, relative_to_absolute_iri_1.resolve)(contextIri, baseIRI);\n }\n catch (_a) {\n throw new Error(`Invalid context IRI: ${contextIri}`);\n }\n }\n // TODO: Temporary workaround for fixing schema.org CORS issues (https://github.com/schemaorg/schemaorg/issues/2578#issuecomment-652324465)\n if (this.redirectSchemaOrgHttps && contextIri.startsWith('http://schema.org')) {\n contextIri = 'https://schema.org/';\n }\n return contextIri;\n }\n /**\n * Parse scoped contexts in the given context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {IParseOptions} options Parsing options.\n * @return {IJsonLdContextNormalizedRaw} The mutated input context.\n * @param {string[]} keys Optional set of keys from the context to parseInnerContexts of. If left undefined, all\n * keys in the context will be iterated over.\n */\n async parseInnerContexts(context, options, keys) {\n for (const key of (keys !== null && keys !== void 0 ? keys : Object.keys(context))) {\n const value = context[key];\n if (value && typeof value === 'object') {\n if ('@context' in value && value['@context'] !== null && !options.ignoreScopedContexts) {\n // Simulate a processing based on the parent context to check if there are any (potential errors).\n // Honestly, I find it a bit weird to do this here, as the context may be unused,\n // and the final effective context may differ based on any other embedded/scoped contexts.\n // But hey, it's part of the spec, so we have no choice...\n // https://w3c.github.io/json-ld-api/#h-note-10\n if (this.validateContext) {\n try {\n const parentContext = Object.assign(Object.assign({}, context), { [key]: Object.assign({}, context[key]) });\n delete parentContext[key]['@context'];\n await this.parse(value['@context'], Object.assign(Object.assign({}, options), { external: false, parentContext, ignoreProtection: true, ignoreRemoteScopedContexts: true, ignoreScopedContexts: true }));\n }\n catch (e) {\n throw new ErrorCoded_1.ErrorCoded(e.message, ErrorCoded_1.ERROR_CODES.INVALID_SCOPED_CONTEXT);\n }\n }\n context[key] = Object.assign(Object.assign({}, value), { '@context': (await this.parse(value['@context'], Object.assign(Object.assign({}, options), { external: false, minimalProcessing: true, ignoreRemoteScopedContexts: true, parentContext: context })))\n .getContextRaw() });\n }\n }\n }\n return context;\n }\n async parse(context, options = {}, \n // These options are only for internal use on recursive calls and should not be used by\n // libraries consuming this function\n internalOptions = {}) {\n const { baseIRI, parentContext, external, processingMode = ContextParser.DEFAULT_PROCESSING_MODE, normalizeLanguageTags, ignoreProtection, minimalProcessing, } = options;\n const remoteContexts = options.remoteContexts || {};\n // Avoid remote context overflows\n if (Object.keys(remoteContexts).length >= this.remoteContextsDepthLimit) {\n throw new ErrorCoded_1.ErrorCoded('Detected an overflow in remote context inclusions: ' + Object.keys(remoteContexts), ErrorCoded_1.ERROR_CODES.CONTEXT_OVERFLOW);\n }\n if (context === null || context === undefined) {\n // Don't allow context nullification and there are protected terms\n if (!ignoreProtection && parentContext && Util_1.Util.hasProtectedTerms(parentContext)) {\n throw new ErrorCoded_1.ErrorCoded('Illegal context nullification when terms are protected', ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_NULLIFICATION);\n }\n // Context that are explicitly set to null are empty.\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(this.applyBaseEntry({}, options, false));\n }\n else if (typeof context === 'string') {\n const contextIri = this.normalizeContextIri(context, baseIRI);\n const overriddenLoad = this.getOverriddenLoad(contextIri, options);\n if (overriddenLoad) {\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(overriddenLoad);\n }\n const parsedStringContext = await this.parse(await this.load(contextIri), Object.assign(Object.assign({}, options), { baseIRI: contextIri, external: true, remoteContexts: Object.assign(Object.assign({}, remoteContexts), { [contextIri]: true }) }));\n this.applyBaseEntry(parsedStringContext.getContextRaw(), options, true);\n return parsedStringContext;\n }\n else if (Array.isArray(context)) {\n // As a performance consideration, first load all external contexts in parallel.\n const contextIris = [];\n const contexts = await Promise.all(context.map((subContext, i) => {\n if (typeof subContext === 'string') {\n const contextIri = this.normalizeContextIri(subContext, baseIRI);\n contextIris[i] = contextIri;\n const overriddenLoad = this.getOverriddenLoad(contextIri, options);\n if (overriddenLoad) {\n return overriddenLoad;\n }\n return this.load(contextIri);\n }\n else {\n return subContext;\n }\n }));\n // Don't apply inheritance logic on minimal processing\n if (minimalProcessing) {\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(contexts);\n }\n const reducedContexts = await contexts.reduce((accContextPromise, contextEntry, i) => accContextPromise\n .then((accContext) => this.parse(contextEntry, Object.assign(Object.assign({}, options), { baseIRI: contextIris[i] || options.baseIRI, external: !!contextIris[i] || options.external, parentContext: accContext.getContextRaw(), remoteContexts: contextIris[i] ? Object.assign(Object.assign({}, remoteContexts), { [contextIris[i]]: true }) : remoteContexts }), \n // @ts-expect-error: This third argument causes a type error because we have hidden it from consumers\n {\n skipValidation: i < contexts.length - 1,\n })), Promise.resolve(new JsonLdContextNormalized_1.JsonLdContextNormalized(parentContext || {})));\n // Override the base IRI if provided.\n this.applyBaseEntry(reducedContexts.getContextRaw(), options, true);\n return reducedContexts;\n }\n else if (typeof context === 'object') {\n if ('@context' in context) {\n return await this.parse(context['@context'], options);\n }\n // Make a deep clone of the given context, to avoid modifying it.\n context = Object.assign({}, context);\n // According to the JSON-LD spec, @base must be ignored from external contexts.\n if (external) {\n delete context['@base'];\n }\n // Override the base IRI if provided.\n this.applyBaseEntry(context, options, true);\n // Hashify container entries\n // Do this before protected term validation as that influences term format\n this.containersToHash(context);\n // Don't perform any other modifications if only minimal processing is needed.\n if (minimalProcessing) {\n return new JsonLdContextNormalized_1.JsonLdContextNormalized(context);\n }\n // In JSON-LD 1.1, load @import'ed context prior to processing.\n let importContext = {};\n if ('@import' in context) {\n if (processingMode >= 1.1) {\n // Only accept string values\n if (typeof context['@import'] !== 'string') {\n throw new ErrorCoded_1.ErrorCoded('An @import value must be a string, but got ' + typeof context['@import'], ErrorCoded_1.ERROR_CODES.INVALID_IMPORT_VALUE);\n }\n // Load context\n importContext = await this.loadImportContext(this.normalizeContextIri(context['@import'], baseIRI));\n delete context['@import'];\n }\n else {\n throw new ErrorCoded_1.ErrorCoded('Context importing is not supported in JSON-LD 1.0', ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_ENTRY);\n }\n }\n this.applyScopedProtected(importContext, { processingMode }, JsonLdContextNormalized_1.defaultExpandOptions);\n const newContext = Object.assign(importContext, context);\n // Handle terms (before protection checks)\n this.idifyReverseTerms(newContext);\n this.normalize(newContext, { processingMode, normalizeLanguageTags });\n this.applyScopedProtected(newContext, { processingMode }, JsonLdContextNormalized_1.defaultExpandOptions);\n const keys = Object.keys(newContext);\n const overlappingKeys = [];\n if (typeof parentContext === 'object') {\n // Merge different parts of the final context in order\n for (const key in parentContext) {\n if (key in newContext) {\n overlappingKeys.push(key);\n }\n else {\n newContext[key] = parentContext[key];\n }\n }\n }\n // Parse inner contexts with minimal processing\n await this.parseInnerContexts(newContext, options, keys);\n const newContextWrapped = new JsonLdContextNormalized_1.JsonLdContextNormalized(newContext);\n // In JSON-LD 1.1, @vocab can be relative to @vocab in the parent context, or a compact IRI.\n if ((newContext && newContext['@version'] || ContextParser.DEFAULT_PROCESSING_MODE) >= 1.1\n && ((context['@vocab'] && typeof context['@vocab'] === 'string') || context['@vocab'] === '')) {\n if (parentContext && '@vocab' in parentContext && context['@vocab'].indexOf(':') < 0) {\n newContext['@vocab'] = parentContext['@vocab'] + context['@vocab'];\n }\n else if (Util_1.Util.isCompactIri(context['@vocab']) || context['@vocab'] in newContext) {\n // @vocab is a compact IRI or refers exactly to a prefix\n newContext['@vocab'] = newContextWrapped.expandTerm(context['@vocab'], true);\n }\n }\n this.expandPrefixedTerms(newContextWrapped, this.expandContentTypeToBase, keys);\n // In JSON-LD 1.1, check if we are not redefining any protected keywords\n if (!ignoreProtection && parentContext && processingMode >= 1.1) {\n this.validateKeywordRedefinitions(parentContext, newContext, JsonLdContextNormalized_1.defaultExpandOptions, overlappingKeys);\n }\n if (this.validateContext && !internalOptions.skipValidation) {\n this.validate(newContext, { processingMode });\n }\n return newContextWrapped;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded(`Tried parsing a context that is not a string, array or object, but got ${context}`, ErrorCoded_1.ERROR_CODES.INVALID_LOCAL_CONTEXT);\n }\n }\n /**\n * Fetch the given URL as a raw JSON-LD context.\n * @param url An URL.\n * @return A promise resolving to a raw JSON-LD context.\n */\n async load(url) {\n // First try to retrieve the context from cache\n const cached = this.documentCache[url];\n if (cached) {\n return cached;\n }\n // If not in cache, load it\n let document;\n try {\n document = await this.documentLoader.load(url);\n }\n catch (e) {\n throw new ErrorCoded_1.ErrorCoded(`Failed to load remote context ${url}: ${e.message}`, ErrorCoded_1.ERROR_CODES.LOADING_REMOTE_CONTEXT_FAILED);\n }\n // Validate the context\n if (!('@context' in document)) {\n throw new ErrorCoded_1.ErrorCoded(`Missing @context in remote context at ${url}`, ErrorCoded_1.ERROR_CODES.INVALID_REMOTE_CONTEXT);\n }\n return this.documentCache[url] = document['@context'];\n }\n /**\n * Override the given context that may be loaded.\n *\n * This will check whether or not the url is recursively being loaded.\n * @param url An URL.\n * @param options Parsing options.\n * @return An overridden context, or null.\n * Optionally an error can be thrown if a cyclic context is detected.\n */\n getOverriddenLoad(url, options) {\n if (url in (options.remoteContexts || {})) {\n if (options.ignoreRemoteScopedContexts) {\n return url;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded('Detected a cyclic context inclusion of ' + url, ErrorCoded_1.ERROR_CODES.RECURSIVE_CONTEXT_INCLUSION);\n }\n }\n return null;\n }\n /**\n * Load an @import'ed context.\n * @param importContextIri The full URI of an @import value.\n */\n async loadImportContext(importContextIri) {\n // Load the context - and do a deep clone since we are about to mutate it\n let importContext = await this.load(importContextIri);\n // Require the context to be a non-array object\n if (typeof importContext !== 'object' || Array.isArray(importContext)) {\n throw new ErrorCoded_1.ErrorCoded('An imported context must be a single object: ' + importContextIri, ErrorCoded_1.ERROR_CODES.INVALID_REMOTE_CONTEXT);\n }\n // Error if the context contains another @import\n if ('@import' in importContext) {\n throw new ErrorCoded_1.ErrorCoded('An imported context can not import another context: ' + importContextIri, ErrorCoded_1.ERROR_CODES.INVALID_CONTEXT_ENTRY);\n }\n importContext = Object.assign({}, importContext);\n // Containers have to be converted into hash values the same way as for the importing context\n // Otherwise context validation will fail for container values\n this.containersToHash(importContext);\n return importContext;\n }\n}\nContextParser.DEFAULT_PROCESSING_MODE = 1.1;\nexports.ContextParser = ContextParser;\n//# sourceMappingURL=ContextParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ERROR_CODES = exports.ErrorCoded = void 0;\n/**\n * An error that has a certain error code.\n *\n * The error code can be any string.\n * All standardized error codes are listed in {@link ERROR_CODES}.\n */\nclass ErrorCoded extends Error {\n /* istanbul ignore next */\n constructor(message, code) {\n super(message);\n this.code = code;\n }\n}\nexports.ErrorCoded = ErrorCoded;\n/**\n * All standardized JSON-LD error codes.\n * @see https://w3c.github.io/json-ld-api/#dom-jsonlderrorcode\n */\n// tslint:disable:object-literal-sort-keys\nvar ERROR_CODES;\n(function (ERROR_CODES) {\n ERROR_CODES[\"COLLIDING_KEYWORDS\"] = \"colliding keywords\";\n ERROR_CODES[\"CONFLICTING_INDEXES\"] = \"conflicting indexes\";\n ERROR_CODES[\"CYCLIC_IRI_MAPPING\"] = \"cyclic IRI mapping\";\n ERROR_CODES[\"INVALID_ID_VALUE\"] = \"invalid @id value\";\n ERROR_CODES[\"INVALID_INDEX_VALUE\"] = \"invalid @index value\";\n ERROR_CODES[\"INVALID_NEST_VALUE\"] = \"invalid @nest value\";\n ERROR_CODES[\"INVALID_PREFIX_VALUE\"] = \"invalid @prefix value\";\n ERROR_CODES[\"INVALID_PROPAGATE_VALUE\"] = \"invalid @propagate value\";\n ERROR_CODES[\"INVALID_REVERSE_VALUE\"] = \"invalid @reverse value\";\n ERROR_CODES[\"INVALID_IMPORT_VALUE\"] = \"invalid @import value\";\n ERROR_CODES[\"INVALID_VERSION_VALUE\"] = \"invalid @version value\";\n ERROR_CODES[\"INVALID_BASE_IRI\"] = \"invalid base IRI\";\n ERROR_CODES[\"INVALID_CONTAINER_MAPPING\"] = \"invalid container mapping\";\n ERROR_CODES[\"INVALID_CONTEXT_ENTRY\"] = \"invalid context entry\";\n ERROR_CODES[\"INVALID_CONTEXT_NULLIFICATION\"] = \"invalid context nullification\";\n ERROR_CODES[\"INVALID_DEFAULT_LANGUAGE\"] = \"invalid default language\";\n ERROR_CODES[\"INVALID_INCLUDED_VALUE\"] = \"invalid @included value\";\n ERROR_CODES[\"INVALID_IRI_MAPPING\"] = \"invalid IRI mapping\";\n ERROR_CODES[\"INVALID_JSON_LITERAL\"] = \"invalid JSON literal\";\n ERROR_CODES[\"INVALID_KEYWORD_ALIAS\"] = \"invalid keyword alias\";\n ERROR_CODES[\"INVALID_LANGUAGE_MAP_VALUE\"] = \"invalid language map value\";\n ERROR_CODES[\"INVALID_LANGUAGE_MAPPING\"] = \"invalid language mapping\";\n ERROR_CODES[\"INVALID_LANGUAGE_TAGGED_STRING\"] = \"invalid language-tagged string\";\n ERROR_CODES[\"INVALID_LANGUAGE_TAGGED_VALUE\"] = \"invalid language-tagged value\";\n ERROR_CODES[\"INVALID_LOCAL_CONTEXT\"] = \"invalid local context\";\n ERROR_CODES[\"INVALID_REMOTE_CONTEXT\"] = \"invalid remote context\";\n ERROR_CODES[\"INVALID_REVERSE_PROPERTY\"] = \"invalid reverse property\";\n ERROR_CODES[\"INVALID_REVERSE_PROPERTY_MAP\"] = \"invalid reverse property map\";\n ERROR_CODES[\"INVALID_REVERSE_PROPERTY_VALUE\"] = \"invalid reverse property value\";\n ERROR_CODES[\"INVALID_SCOPED_CONTEXT\"] = \"invalid scoped context\";\n ERROR_CODES[\"INVALID_SCRIPT_ELEMENT\"] = \"invalid script element\";\n ERROR_CODES[\"INVALID_SET_OR_LIST_OBJECT\"] = \"invalid set or list object\";\n ERROR_CODES[\"INVALID_TERM_DEFINITION\"] = \"invalid term definition\";\n ERROR_CODES[\"INVALID_TYPE_MAPPING\"] = \"invalid type mapping\";\n ERROR_CODES[\"INVALID_TYPE_VALUE\"] = \"invalid type value\";\n ERROR_CODES[\"INVALID_TYPED_VALUE\"] = \"invalid typed value\";\n ERROR_CODES[\"INVALID_VALUE_OBJECT\"] = \"invalid value object\";\n ERROR_CODES[\"INVALID_VALUE_OBJECT_VALUE\"] = \"invalid value object value\";\n ERROR_CODES[\"INVALID_VOCAB_MAPPING\"] = \"invalid vocab mapping\";\n ERROR_CODES[\"IRI_CONFUSED_WITH_PREFIX\"] = \"IRI confused with prefix\";\n ERROR_CODES[\"KEYWORD_REDEFINITION\"] = \"keyword redefinition\";\n ERROR_CODES[\"LOADING_DOCUMENT_FAILED\"] = \"loading document failed\";\n ERROR_CODES[\"LOADING_REMOTE_CONTEXT_FAILED\"] = \"loading remote context failed\";\n ERROR_CODES[\"MULTIPLE_CONTEXT_LINK_HEADERS\"] = \"multiple context link headers\";\n ERROR_CODES[\"PROCESSING_MODE_CONFLICT\"] = \"processing mode conflict\";\n ERROR_CODES[\"PROTECTED_TERM_REDEFINITION\"] = \"protected term redefinition\";\n ERROR_CODES[\"CONTEXT_OVERFLOW\"] = \"context overflow\";\n ERROR_CODES[\"INVALID_BASE_DIRECTION\"] = \"invalid base direction\";\n ERROR_CODES[\"RECURSIVE_CONTEXT_INCLUSION\"] = \"recursive context inclusion\";\n ERROR_CODES[\"INVALID_STREAMING_KEY_ORDER\"] = \"invalid streaming key order\";\n /**\n * JSON-LD-star\n */\n ERROR_CODES[\"INVALID_EMBEDDED_NODE\"] = \"invalid embedded node\";\n ERROR_CODES[\"INVALID_ANNOTATION\"] = \"invalid annotation\";\n})(ERROR_CODES = exports.ERROR_CODES || (exports.ERROR_CODES = {}));\n//# sourceMappingURL=ErrorCoded.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FetchDocumentLoader = void 0;\nrequire(\"cross-fetch/polyfill\");\nconst ErrorCoded_1 = require(\"./ErrorCoded\");\nconst http_link_header_1 = require(\"http-link-header\");\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\n/**\n * Loads documents via the fetch API.\n */\nclass FetchDocumentLoader {\n constructor(fetcher) {\n this.fetcher = fetcher;\n }\n async load(url) {\n const response = await (this.fetcher || fetch)(url, { headers: new Headers({ accept: 'application/ld+json' }) });\n if (response.ok && response.headers) {\n let mediaType = response.headers.get('Content-Type');\n if (mediaType) {\n const colonPos = mediaType.indexOf(';');\n if (colonPos > 0) {\n mediaType = mediaType.substr(0, colonPos);\n }\n }\n if (mediaType === 'application/ld+json') {\n // Return JSON-LD if proper content type was returned\n return (await response.json());\n }\n else {\n // Check for alternate link for a non-JSON-LD response\n if (response.headers.has('Link')) {\n let alternateUrl;\n response.headers.forEach((value, key) => {\n if (key === 'link') {\n const linkHeader = (0, http_link_header_1.parse)(value);\n for (const link of linkHeader.get('type', 'application/ld+json')) {\n if (link.rel === 'alternate') {\n if (alternateUrl) {\n throw new Error('Multiple JSON-LD alternate links were found on ' + url);\n }\n alternateUrl = (0, relative_to_absolute_iri_1.resolve)(link.uri, url);\n }\n }\n }\n });\n if (alternateUrl) {\n return this.load(alternateUrl);\n }\n }\n throw new ErrorCoded_1.ErrorCoded(`Unsupported JSON-LD media type ${mediaType}`, ErrorCoded_1.ERROR_CODES.LOADING_DOCUMENT_FAILED);\n }\n }\n else {\n throw new Error(response.statusText || `Status code: ${response.status}`);\n }\n }\n}\nexports.FetchDocumentLoader = FetchDocumentLoader;\n//# sourceMappingURL=FetchDocumentLoader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IDocumentLoader.js.map","\"use strict\";\n// tslint:disable:max-line-length\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=JsonLdContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultExpandOptions = exports.JsonLdContextNormalized = void 0;\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\nconst ErrorCoded_1 = require(\"./ErrorCoded\");\nconst Util_1 = require(\"./Util\");\n/**\n * A class exposing operations over a normalized JSON-LD context.\n */\nclass JsonLdContextNormalized {\n constructor(contextRaw) {\n this.contextRaw = contextRaw;\n }\n /**\n * @return The raw inner context.\n */\n getContextRaw() {\n return this.contextRaw;\n }\n /**\n * Expand the term or prefix of the given term if it has one,\n * otherwise return the term as-is.\n *\n * This will try to expand the IRI as much as possible.\n *\n * Iff in vocab-mode, then other references to other terms in the context can be used,\n * such as to `myTerm`:\n * ```\n * {\n * \"myTerm\": \"http://example.org/myLongTerm\"\n * }\n * ```\n *\n * @param {string} term A term that is an URL or a prefixed URL.\n * @param {boolean} expandVocab If the term is a predicate or type and should be expanded based on @vocab,\n * otherwise it is considered a regular term that is expanded based on @base.\n * @param {IExpandOptions} options Options that define the way how expansion must be done.\n * @return {string} The expanded term, the term as-is, or null if it was explicitly disabled in the context.\n * @throws If the term is aliased to an invalid value (not a string, IRI or keyword).\n */\n expandTerm(term, expandVocab, options = exports.defaultExpandOptions) {\n const contextValue = this.contextRaw[term];\n // Immediately return if the term was disabled in the context\n if (contextValue === null || (contextValue && contextValue['@id'] === null)) {\n return null;\n }\n // Check the @id\n let validIriMapping = true;\n if (contextValue && expandVocab) {\n const value = Util_1.Util.getContextValueId(contextValue);\n if (value && value !== term) {\n if (typeof value !== 'string' || (!Util_1.Util.isValidIri(value) && !Util_1.Util.isValidKeyword(value))) {\n // Don't mark this mapping as invalid if we have an unknown keyword, but of the correct form.\n if (!Util_1.Util.isPotentialKeyword(value)) {\n validIriMapping = false;\n }\n }\n else {\n return value;\n }\n }\n }\n // Check if the term is prefixed\n const prefix = Util_1.Util.getPrefix(term, this.contextRaw);\n const vocab = this.contextRaw['@vocab'];\n const vocabRelative = (!!vocab || vocab === '') && vocab.indexOf(':') < 0;\n const base = this.contextRaw['@base'];\n const potentialKeyword = Util_1.Util.isPotentialKeyword(term);\n if (prefix) {\n const contextPrefixValue = this.contextRaw[prefix];\n const value = Util_1.Util.getContextValueId(contextPrefixValue);\n if (value) {\n if (typeof contextPrefixValue === 'string' || !options.allowPrefixForcing) {\n // If we have a simple term definition,\n // check the last character of the prefix to determine whether or not it is a prefix.\n // Validate that prefix ends with gen-delim character, unless @prefix is true\n if (!Util_1.Util.isSimpleTermDefinitionPrefix(value, options)) {\n // Treat the term as an absolute IRI\n return term;\n }\n }\n else {\n // If we have an expanded term definition, default to @prefix: false\n if (value[0] !== '_' && !potentialKeyword && !contextPrefixValue['@prefix'] && !(term in this.contextRaw)) {\n // Treat the term as an absolute IRI\n return term;\n }\n }\n return value + term.substr(prefix.length + 1);\n }\n }\n else if (expandVocab && ((vocab || vocab === '') || (options.allowVocabRelativeToBase && (base && vocabRelative)))\n && !potentialKeyword && !Util_1.Util.isCompactIri(term)) {\n if (vocabRelative) {\n if (options.allowVocabRelativeToBase) {\n return ((vocab || base) ? (0, relative_to_absolute_iri_1.resolve)(vocab, base) : '') + term;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded(`Relative vocab expansion for term '${term}' with vocab '${vocab}' is not allowed.`, ErrorCoded_1.ERROR_CODES.INVALID_VOCAB_MAPPING);\n }\n }\n else {\n return vocab + term;\n }\n }\n else if (!expandVocab && base && !potentialKeyword && !Util_1.Util.isCompactIri(term)) {\n return (0, relative_to_absolute_iri_1.resolve)(term, base);\n }\n // Return the term as-is, unless we discovered an invalid IRI mapping for this term in the context earlier.\n if (validIriMapping) {\n return term;\n }\n else {\n throw new ErrorCoded_1.ErrorCoded(`Invalid IRI mapping found for context entry '${term}': '${JSON.stringify(contextValue)}'`, ErrorCoded_1.ERROR_CODES.INVALID_IRI_MAPPING);\n }\n }\n /**\n * Compact the given term using @base, @vocab, an aliased term, or a prefixed term.\n *\n * This will try to compact the IRI as much as possible.\n *\n * @param {string} iri An IRI to compact.\n * @param {boolean} vocab If the term is a predicate or type and should be compacted based on @vocab,\n * otherwise it is considered a regular term that is compacted based on @base.\n * @return {string} The compacted term or the IRI as-is.\n */\n compactIri(iri, vocab) {\n // Try @vocab compacting\n if (vocab && this.contextRaw['@vocab'] && iri.startsWith(this.contextRaw['@vocab'])) {\n return iri.substr(this.contextRaw['@vocab'].length);\n }\n // Try @base compacting\n if (!vocab && this.contextRaw['@base'] && iri.startsWith(this.contextRaw['@base'])) {\n return iri.substr(this.contextRaw['@base'].length);\n }\n // Loop over all terms in the context\n // This will try to prefix as short as possible.\n // Once a fully compacted alias is found, return immediately, as we can not go any shorter.\n const shortestPrefixing = { prefix: '', suffix: iri };\n for (const key in this.contextRaw) {\n const value = this.contextRaw[key];\n if (value && !Util_1.Util.isPotentialKeyword(key)) {\n const contextIri = Util_1.Util.getContextValueId(value);\n if (iri.startsWith(contextIri)) {\n const suffix = iri.substr(contextIri.length);\n if (!suffix) {\n if (vocab) {\n // Immediately return on compacted alias\n return key;\n }\n }\n else if (suffix.length < shortestPrefixing.suffix.length) {\n // Overwrite the shortest prefix\n shortestPrefixing.prefix = key;\n shortestPrefixing.suffix = suffix;\n }\n }\n }\n }\n // Return the shortest prefix\n if (shortestPrefixing.prefix) {\n return shortestPrefixing.prefix + ':' + shortestPrefixing.suffix;\n }\n return iri;\n }\n}\nexports.JsonLdContextNormalized = JsonLdContextNormalized;\nexports.defaultExpandOptions = {\n allowPrefixForcing: true,\n allowPrefixNonGenDelims: false,\n allowVocabRelativeToBase: true,\n};\n//# sourceMappingURL=JsonLdContextNormalized.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = void 0;\nclass Util {\n /**\n * Check if the given term is a valid compact IRI.\n * Otherwise, it may be an IRI.\n * @param {string} term A term.\n * @return {boolean} If it is a compact IRI.\n */\n static isCompactIri(term) {\n return term.indexOf(':') > 0 && !(term && term[0] === '#');\n }\n /**\n * Get the prefix from the given term.\n * @see https://json-ld.org/spec/latest/json-ld/#compact-iris\n * @param {string} term A term that is an URL or a prefixed URL.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @return {string} The prefix or null.\n */\n static getPrefix(term, context) {\n // Do not consider relative IRIs starting with a hash as compact IRIs\n if (term && term[0] === '#') {\n return null;\n }\n const separatorPos = term.indexOf(':');\n if (separatorPos >= 0) {\n // Suffix can not begin with two slashes\n if (term.length > separatorPos + 1\n && term.charAt(separatorPos + 1) === '/'\n && term.charAt(separatorPos + 2) === '/') {\n return null;\n }\n const prefix = term.substr(0, separatorPos);\n // Prefix can not be an underscore (this is a blank node)\n if (prefix === '_') {\n return null;\n }\n // Prefix must match a term in the active context\n if (context[prefix]) {\n return prefix;\n }\n }\n return null;\n }\n /**\n * From a given context entry value, get the string value, or the @id field.\n * @param contextValue A value for a term in a context.\n * @return {string} The id value, or null.\n */\n static getContextValueId(contextValue) {\n if (contextValue === null || typeof contextValue === 'string') {\n return contextValue;\n }\n const id = contextValue['@id'];\n return id ? id : null;\n }\n /**\n * Check if the given simple term definition (string-based value of a context term)\n * should be considered a prefix.\n * @param value A simple term definition value.\n * @param options Options that define the way how expansion must be done.\n */\n static isSimpleTermDefinitionPrefix(value, options) {\n return !Util.isPotentialKeyword(value)\n && (options.allowPrefixNonGenDelims || (typeof value === 'string' && (value[0] === '_' || Util.isPrefixIriEndingWithGenDelim(value))));\n }\n /**\n * Check if the given keyword is of the keyword format \"@\"1*ALPHA.\n * @param {string} keyword A potential keyword.\n * @return {boolean} If the given keyword is of the keyword format.\n */\n static isPotentialKeyword(keyword) {\n return typeof keyword === 'string' && Util.KEYWORD_REGEX.test(keyword);\n }\n /**\n * Check if the given prefix ends with a gen-delim character.\n * @param {string} prefixIri A prefix IRI.\n * @return {boolean} If the given prefix IRI is valid.\n */\n static isPrefixIriEndingWithGenDelim(prefixIri) {\n return Util.ENDS_WITH_GEN_DELIM.test(prefixIri);\n }\n /**\n * Check if the given context value can be a prefix value.\n * @param value A context value.\n * @return {boolean} If it can be a prefix value.\n */\n static isPrefixValue(value) {\n return value && (typeof value === 'string' || (value && typeof value === 'object'));\n }\n /**\n * Check if the given IRI is valid.\n * @param {string} iri A potential IRI.\n * @return {boolean} If the given IRI is valid.\n */\n static isValidIri(iri) {\n return Boolean(iri && Util.IRI_REGEX.test(iri));\n }\n /**\n * Check if the given IRI is valid, this includes the possibility of being a relative IRI.\n * @param {string} iri A potential IRI.\n * @return {boolean} If the given IRI is valid.\n */\n static isValidIriWeak(iri) {\n return !!iri && iri[0] !== ':' && Util.IRI_REGEX_WEAK.test(iri);\n }\n /**\n * Check if the given keyword is a defined according to the JSON-LD specification.\n * @param {string} keyword A potential keyword.\n * @return {boolean} If the given keyword is valid.\n */\n static isValidKeyword(keyword) {\n return Util.VALID_KEYWORDS[keyword];\n }\n /**\n * Check if the given term is protected in the context.\n * @param {IJsonLdContextNormalizedRaw} context A context.\n * @param {string} key A context term.\n * @return {boolean} If the given term has an @protected flag.\n */\n static isTermProtected(context, key) {\n const value = context[key];\n return !(typeof value === 'string') && value && value['@protected'];\n }\n /**\n * Check if the given context has at least one protected term.\n * @param context A context.\n * @return If the context has a protected term.\n */\n static hasProtectedTerms(context) {\n for (const key of Object.keys(context)) {\n if (Util.isTermProtected(context, key)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Check if the given key is an internal reserved keyword.\n * @param key A context key.\n */\n static isReservedInternalKeyword(key) {\n return key.startsWith('@__');\n }\n /**\n * Check if two objects are deepEqual to on another.\n * @param object1 The first object to test.\n * @param object2 The second object to test.\n */\n static deepEqual(object1, object2) {\n const objKeys1 = Object.keys(object1);\n const objKeys2 = Object.keys(object2);\n if (objKeys1.length !== objKeys2.length)\n return false;\n return objKeys1.every((key) => {\n const value1 = object1[key];\n const value2 = object2[key];\n return (value1 === value2) || (value1 !== null &&\n value2 !== null &&\n typeof value1 === \"object\" &&\n typeof value2 === \"object\" &&\n this.deepEqual(value1, value2));\n });\n }\n ;\n}\n// Regex for valid IRIs\nUtil.IRI_REGEX = /^([A-Za-z][A-Za-z0-9+-.]*|_):[^ \"<>{}|\\\\\\[\\]`#]*(#[^#]*)?$/;\n// Weaker regex for valid IRIs, this includes relative IRIs\nUtil.IRI_REGEX_WEAK = /(?::[^:])|\\//;\n// Regex for keyword form\nUtil.KEYWORD_REGEX = /^@[a-z]+$/i;\n// Regex to see if an IRI ends with a gen-delim character (see RFC 3986)\nUtil.ENDS_WITH_GEN_DELIM = /[:/?#\\[\\]@]$/;\n// Regex for language tags\nUtil.REGEX_LANGUAGE_TAG = /^[a-zA-Z]+(-[a-zA-Z0-9]+)*$/;\n// Regex for base directions\nUtil.REGEX_DIRECTION_TAG = /^(ltr)|(rtl)$/;\n// All known valid JSON-LD keywords\n// @see https://www.w3.org/TR/json-ld11/#keywords\nUtil.VALID_KEYWORDS = {\n '@annotation': true,\n '@base': true,\n '@container': true,\n '@context': true,\n '@direction': true,\n '@graph': true,\n '@id': true,\n '@import': true,\n '@included': true,\n '@index': true,\n '@json': true,\n '@language': true,\n '@list': true,\n '@nest': true,\n '@none': true,\n '@prefix': true,\n '@propagate': true,\n '@protected': true,\n '@reverse': true,\n '@set': true,\n '@type': true,\n '@value': true,\n '@version': true,\n '@vocab': true,\n};\n// Keys in the contexts that will not be expanded based on the base IRI\nUtil.EXPAND_KEYS_BLACKLIST = [\n '@base',\n '@vocab',\n '@language',\n '@version',\n '@direction',\n];\n// Keys in the contexts that may not be aliased from\nUtil.ALIAS_DOMAIN_BLACKLIST = [\n '@container',\n '@graph',\n '@id',\n '@index',\n '@list',\n '@nest',\n '@none',\n '@prefix',\n '@reverse',\n '@set',\n '@type',\n '@value',\n '@version',\n];\n// Keys in the contexts that may not be aliased to\nUtil.ALIAS_RANGE_BLACKLIST = [\n '@context',\n '@preserve',\n];\n// All valid @container values\nUtil.CONTAINERS = [\n '@list',\n '@set',\n '@index',\n '@language',\n '@graph',\n '@id',\n '@type',\n];\n// All valid @container values under processing mode 1.0\nUtil.CONTAINERS_1_0 = [\n '@list',\n '@set',\n '@index',\n];\nexports.Util = Util;\n//# sourceMappingURL=Util.js.map","(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(typeof self !== 'undefined' ? self : this);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/JsonLdParser\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextTree = void 0;\n/**\n * A tree structure that holds all contexts,\n * based on their position in the JSON object.\n *\n * Positions are identified by a path of keys.\n */\nclass ContextTree {\n constructor() {\n this.subTrees = {};\n }\n getContext(keys) {\n if (keys.length > 0) {\n const [head, ...tail] = keys;\n const subTree = this.subTrees[head];\n if (subTree) {\n const subContext = subTree.getContext(tail);\n if (subContext) {\n return subContext.then(({ context, depth }) => ({ context, depth: depth + 1 }));\n }\n }\n }\n return this.context ? this.context.then((context) => ({ context, depth: 0 })) : null;\n }\n setContext(keys, context) {\n if (keys.length === 0) {\n this.context = context;\n }\n else {\n const [head, ...tail] = keys;\n let subTree = this.subTrees[head];\n if (!subTree) {\n subTree = this.subTrees[head] = new ContextTree();\n }\n subTree.setContext(tail, context);\n }\n }\n removeContext(path) {\n this.setContext(path, null);\n }\n}\nexports.ContextTree = ContextTree;\n//# sourceMappingURL=ContextTree.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonLdParser = void 0;\n// tslint:disable-next-line:no-var-requires\nconst Parser = require('@bergos/jsonparse');\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst readable_stream_1 = require(\"readable-stream\");\nconst EntryHandlerArrayValue_1 = require(\"./entryhandler/EntryHandlerArrayValue\");\nconst EntryHandlerContainer_1 = require(\"./entryhandler/EntryHandlerContainer\");\nconst EntryHandlerInvalidFallback_1 = require(\"./entryhandler/EntryHandlerInvalidFallback\");\nconst EntryHandlerPredicate_1 = require(\"./entryhandler/EntryHandlerPredicate\");\nconst EntryHandlerKeywordContext_1 = require(\"./entryhandler/keyword/EntryHandlerKeywordContext\");\nconst EntryHandlerKeywordGraph_1 = require(\"./entryhandler/keyword/EntryHandlerKeywordGraph\");\nconst EntryHandlerKeywordId_1 = require(\"./entryhandler/keyword/EntryHandlerKeywordId\");\nconst EntryHandlerKeywordIncluded_1 = require(\"./entryhandler/keyword/EntryHandlerKeywordIncluded\");\nconst EntryHandlerKeywordNest_1 = require(\"./entryhandler/keyword/EntryHandlerKeywordNest\");\nconst EntryHandlerKeywordType_1 = require(\"./entryhandler/keyword/EntryHandlerKeywordType\");\nconst EntryHandlerKeywordUnknownFallback_1 = require(\"./entryhandler/keyword/EntryHandlerKeywordUnknownFallback\");\nconst EntryHandlerKeywordValue_1 = require(\"./entryhandler/keyword/EntryHandlerKeywordValue\");\nconst ParsingContext_1 = require(\"./ParsingContext\");\nconst Util_1 = require(\"./Util\");\nconst http_link_header_1 = require(\"http-link-header\");\nconst EntryHandlerKeywordAnnotation_1 = require(\"./entryhandler/keyword/EntryHandlerKeywordAnnotation\");\n/**\n * A stream transformer that parses JSON-LD (text) streams to an {@link RDF.Stream}.\n */\nclass JsonLdParser extends readable_stream_1.Transform {\n constructor(options) {\n super({ readableObjectMode: true });\n options = options || {};\n this.options = options;\n this.parsingContext = new ParsingContext_1.ParsingContext(Object.assign({ parser: this }, options));\n this.util = new Util_1.Util({ dataFactory: options.dataFactory, parsingContext: this.parsingContext });\n this.jsonParser = new Parser();\n this.contextJobs = [];\n this.typeJobs = [];\n this.contextAwaitingJobs = [];\n this.lastDepth = 0;\n this.lastKeys = [];\n this.lastOnValueJob = Promise.resolve();\n this.attachJsonParserListeners();\n this.on('end', () => {\n if (typeof this.jsonParser.mode !== 'undefined') {\n this.emit('error', new Error('Unclosed document'));\n }\n });\n }\n /**\n * Construct a JsonLdParser from the given HTTP response.\n *\n * This will throw an error if no valid JSON response is received\n * (application/ld+json, application/json, or something+json).\n *\n * For raw JSON responses, exactly one link header pointing to a JSON-LD context is required.\n *\n * This method is not responsible for handling redirects.\n *\n * @param baseIRI The URI of the received response.\n * @param mediaType The received content type.\n * @param headers Optional HTTP headers.\n * @param options Optional parser options.\n */\n static fromHttpResponse(baseIRI, mediaType, headers, options) {\n let context;\n let wellKnownMediaTypes = ['application/activity+json'];\n if (options && options.wellKnownMediaTypes) {\n wellKnownMediaTypes = options.wellKnownMediaTypes;\n }\n // Special cases when receiving something else than the JSON-LD media type or the wellKnownMediaTypes\n if (mediaType !== 'application/ld+json' && !wellKnownMediaTypes.includes(mediaType)) {\n // Only accept JSON or JSON extension types\n if (mediaType !== 'application/json' && !mediaType.endsWith('+json')) {\n throw new jsonld_context_parser_1.ErrorCoded(`Unsupported JSON-LD media type ${mediaType}`, jsonld_context_parser_1.ERROR_CODES.LOADING_DOCUMENT_FAILED);\n }\n // We need exactly one JSON-LD context in the link header\n if (headers && headers.has('Link')) {\n headers.forEach((value, key) => {\n if (key === 'link') {\n const linkHeader = (0, http_link_header_1.parse)(value);\n for (const link of linkHeader.get('rel', 'http://www.w3.org/ns/json-ld#context')) {\n if (context) {\n throw new jsonld_context_parser_1.ErrorCoded('Multiple JSON-LD context link headers were found on ' + baseIRI, jsonld_context_parser_1.ERROR_CODES.MULTIPLE_CONTEXT_LINK_HEADERS);\n }\n context = link.uri;\n }\n }\n });\n }\n if (!context && !(options === null || options === void 0 ? void 0 : options.ignoreMissingContextLinkHeader)) {\n throw new jsonld_context_parser_1.ErrorCoded(`Missing context link header for media type ${mediaType} on ${baseIRI}`, jsonld_context_parser_1.ERROR_CODES.LOADING_DOCUMENT_FAILED);\n }\n }\n // Check if the streaming profile is present\n let streamingProfile;\n if (headers && headers.has('Content-Type')) {\n const contentType = headers.get('Content-Type');\n const match = /; *profile=([^\"]*)/.exec(contentType);\n if (match && match[1] === 'http://www.w3.org/ns/json-ld#streaming') {\n streamingProfile = true;\n }\n }\n return new JsonLdParser(Object.assign({ baseIRI,\n context,\n streamingProfile }, options ? options : {}));\n }\n /**\n * Parses the given text stream into a quad stream.\n * @param {NodeJS.EventEmitter} stream A text stream.\n * @return {RDF.Stream} A quad stream.\n */\n import(stream) {\n if ('pipe' in stream) {\n stream.on('error', (error) => parsed.emit('error', error));\n const parsed = stream.pipe(new JsonLdParser(this.options));\n return parsed;\n }\n else {\n const output = new readable_stream_1.PassThrough({ readableObjectMode: true });\n stream.on('error', (error) => parsed.emit('error', error));\n stream.on('data', (data) => output.push(data));\n stream.on('end', () => output.push(null));\n const parsed = output.pipe(new JsonLdParser(this.options));\n return parsed;\n }\n }\n _transform(chunk, encoding, callback) {\n this.jsonParser.write(chunk);\n this.lastOnValueJob\n .then(() => callback(), (error) => callback(error));\n }\n /**\n * Start a new job for parsing the given value.\n *\n * This will let the first valid {@link IEntryHandler} handle the entry.\n *\n * @param {any[]} keys The stack of keys.\n * @param value The value to parse.\n * @param {number} depth The depth to parse at.\n * @param {boolean} lastDepthCheck If the lastDepth check should be done for buffer draining.\n * @return {Promise} A promise resolving when the job is done.\n */\n async newOnValueJob(keys, value, depth, lastDepthCheck) {\n let flushStacks = true;\n // When we go up the stack, emit all unidentified values\n // We need to do this before the new job, because the new job may require determined values from the flushed jobs.\n if (lastDepthCheck && depth < this.lastDepth) {\n // Check if we had any RDF lists that need to be terminated with an rdf:nil\n const listPointer = this.parsingContext.listPointerStack[this.lastDepth];\n if (listPointer) {\n // Terminate the list if the had at least one value\n if (listPointer.value) {\n this.push(this.util.dataFactory.quad(listPointer.value, this.util.rdfRest, this.util.rdfNil, this.util.getDefaultGraph()));\n }\n // Add the list id to the id stack, so it can be used higher up in the stack\n listPointer.listId.listHead = true;\n this.parsingContext.idStack[listPointer.listRootDepth + 1] = [listPointer.listId];\n this.parsingContext.listPointerStack.splice(this.lastDepth, 1);\n }\n // Flush the buffer for lastDepth\n // If the parent key is a special type of container, postpone flushing until that parent is handled.\n if (await EntryHandlerContainer_1.EntryHandlerContainer.isBufferableContainerHandler(this.parsingContext, this.lastKeys, this.lastDepth)) {\n this.parsingContext.pendingContainerFlushBuffers\n .push({ depth: this.lastDepth, keys: this.lastKeys.slice(0, this.lastKeys.length) });\n flushStacks = false;\n }\n else {\n await this.flushBuffer(this.lastDepth, this.lastKeys);\n }\n }\n const key = await this.util.unaliasKeyword(keys[depth], keys, depth);\n const parentKey = await this.util.unaliasKeywordParent(keys, depth);\n this.parsingContext.emittedStack[depth] = true;\n let handleKey = true;\n // Keywords inside @reverse is not allowed apart from @context\n if (jsonld_context_parser_1.Util.isValidKeyword(key) && parentKey === '@reverse' && key !== '@context') {\n this.emit('error', new jsonld_context_parser_1.ErrorCoded(`Found the @id '${value}' inside an @reverse property`, jsonld_context_parser_1.ERROR_CODES.INVALID_REVERSE_PROPERTY_MAP));\n }\n // Skip further processing if one of the parent nodes are invalid.\n // We use the validationStack to reuse validation results that were produced before with common key stacks.\n let inProperty = false;\n if (this.parsingContext.validationStack.length > 1) {\n inProperty = this.parsingContext.validationStack[this.parsingContext.validationStack.length - 1].property;\n }\n for (let i = Math.max(1, this.parsingContext.validationStack.length - 1); i < keys.length - 1; i++) {\n const validationResult = this.parsingContext.validationStack[i]\n || (this.parsingContext.validationStack[i] = await this.validateKey(keys.slice(0, i + 1), i, inProperty));\n if (!validationResult.valid) {\n this.parsingContext.emittedStack[depth] = false;\n handleKey = false;\n break;\n }\n else if (!inProperty && validationResult.property) {\n inProperty = true;\n }\n }\n // Skip further processing if this node is part of a literal\n if (await this.util.isLiteral(keys, depth)) {\n handleKey = false;\n }\n // Get handler\n if (handleKey) {\n for (const entryHandler of JsonLdParser.ENTRY_HANDLERS) {\n const testResult = await entryHandler.test(this.parsingContext, this.util, key, keys, depth);\n if (testResult) {\n // Pass processing over to the handler\n await entryHandler.handle(this.parsingContext, this.util, key, keys, value, depth, testResult);\n // Flag that this depth is processed\n if (entryHandler.isStackProcessor()) {\n this.parsingContext.processingStack[depth] = true;\n }\n break;\n }\n }\n }\n // Validate value indexes on the root.\n if (depth === 0 && Array.isArray(value)) {\n await this.util.validateValueIndexes(value);\n }\n // When we go up the stack, flush the old stack\n if (flushStacks && depth < this.lastDepth) {\n // Reset our stacks\n this.flushStacks(this.lastDepth);\n }\n this.lastDepth = depth;\n this.lastKeys = keys;\n // Clear the keyword cache at this depth, and everything underneath.\n this.parsingContext.unaliasedKeywordCacheStack.splice(depth - 1);\n }\n /**\n * Flush the processing stacks at the given depth.\n * @param {number} depth A depth.\n */\n flushStacks(depth) {\n this.parsingContext.processingStack.splice(depth, 1);\n this.parsingContext.processingType.splice(depth, 1);\n this.parsingContext.emittedStack.splice(depth, 1);\n this.parsingContext.idStack.splice(depth, 1);\n this.parsingContext.graphStack.splice(depth + 1, 1);\n this.parsingContext.graphContainerTermStack.splice(depth, 1);\n this.parsingContext.jsonLiteralStack.splice(depth, 1);\n this.parsingContext.validationStack.splice(depth - 1, 2);\n this.parsingContext.literalStack.splice(depth, this.parsingContext.literalStack.length - depth);\n this.parsingContext.annotationsBuffer.splice(depth, 1);\n // TODO: just like the literal stack, splice all other stack until the end as well?\n }\n /**\n * Flush buffers for the given depth.\n *\n * This should be called after the last entry at a given depth was processed.\n *\n * @param {number} depth A depth.\n * @param {any[]} keys A stack of keys.\n * @return {Promise} A promise resolving if flushing is done.\n */\n async flushBuffer(depth, keys) {\n let subjects = this.parsingContext.idStack[depth];\n const subjectsWasDefined = !!subjects;\n if (!subjectsWasDefined) {\n subjects = this.parsingContext.idStack[depth] = [this.util.dataFactory.blankNode()];\n }\n // Flush values at this level\n const valueBuffer = this.parsingContext.unidentifiedValuesBuffer[depth];\n if (valueBuffer) {\n for (const subject of subjects) {\n const depthOffsetGraph = await this.util.getDepthOffsetGraph(depth, keys);\n const graphs = (this.parsingContext.graphStack[depth] || depthOffsetGraph >= 0)\n ? this.parsingContext.idStack[depth - depthOffsetGraph - 1]\n : [await this.util.getGraphContainerValue(keys, depth)];\n if (graphs) {\n for (const graph of graphs) {\n // Flush values to stream if the graph @id is known\n this.parsingContext.emittedStack[depth] = true;\n for (const bufferedValue of valueBuffer) {\n this.util.emitQuadChecked(depth, subject, bufferedValue.predicate, bufferedValue.object, graph, bufferedValue.reverse, bufferedValue.isEmbedded);\n }\n }\n }\n else {\n // Place the values in the graphs buffer if the graph @id is not yet known\n const subGraphBuffer = this.parsingContext.getUnidentifiedGraphBufferSafe(depth - await this.util.getDepthOffsetGraph(depth, keys) - 1);\n for (const bufferedValue of valueBuffer) {\n if (bufferedValue.reverse) {\n subGraphBuffer.push({\n object: subject,\n predicate: bufferedValue.predicate,\n subject: bufferedValue.object,\n isEmbedded: bufferedValue.isEmbedded,\n });\n }\n else {\n subGraphBuffer.push({\n object: bufferedValue.object,\n predicate: bufferedValue.predicate,\n subject,\n isEmbedded: bufferedValue.isEmbedded,\n });\n }\n }\n }\n }\n this.parsingContext.unidentifiedValuesBuffer.splice(depth, 1);\n this.parsingContext.literalStack.splice(depth, 1);\n this.parsingContext.jsonLiteralStack.splice(depth, 1);\n }\n // Flush graphs at this level\n const graphBuffer = this.parsingContext.unidentifiedGraphsBuffer[depth];\n if (graphBuffer) {\n for (const subject of subjects) {\n // A @graph statement at the root without @id relates to the default graph,\n // unless there are top-level properties,\n // others relate to blank nodes.\n const graph = depth === 1 && subject.termType === 'BlankNode'\n && !this.parsingContext.topLevelProperties ? this.util.getDefaultGraph() : subject;\n this.parsingContext.emittedStack[depth] = true;\n for (const bufferedValue of graphBuffer) {\n this.parsingContext.emitQuad(depth, this.util.dataFactory.quad(bufferedValue.subject, bufferedValue.predicate, bufferedValue.object, graph));\n }\n }\n this.parsingContext.unidentifiedGraphsBuffer.splice(depth, 1);\n }\n // Push unhandled annotations up the stack as nested annotations\n const annotationsBuffer = this.parsingContext.annotationsBuffer[depth];\n if (annotationsBuffer) {\n // Throw an error if we reach the top, and still have annotations\n if (annotationsBuffer.length > 0 && depth === 1) {\n this.parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Annotations can not be made on top-level nodes`, jsonld_context_parser_1.ERROR_CODES.INVALID_ANNOTATION));\n }\n // Pass the annotations buffer up one level in the stack\n const annotationsBufferParent = this.parsingContext.getAnnotationsBufferSafe(depth - 1);\n for (const annotation of annotationsBuffer) {\n annotationsBufferParent.push(annotation);\n }\n delete this.parsingContext.annotationsBuffer[depth];\n }\n }\n /**\n * Check if at least one {@link IEntryHandler} validates the entry to true.\n * @param {any[]} keys A stack of keys.\n * @param {number} depth A depth.\n * @param {boolean} inProperty If the current depth is part of a valid property node.\n * @return {Promise<{ valid: boolean, property: boolean }>} A promise resolving to true or false.\n */\n async validateKey(keys, depth, inProperty) {\n for (const entryHandler of JsonLdParser.ENTRY_HANDLERS) {\n if (await entryHandler.validate(this.parsingContext, this.util, keys, depth, inProperty)) {\n return { valid: true, property: inProperty || entryHandler.isPropertyHandler() };\n }\n }\n return { valid: false, property: false };\n }\n /**\n * Attach all required listeners to the JSON parser.\n *\n * This should only be called once.\n */\n attachJsonParserListeners() {\n // Listen to json parser events\n this.jsonParser.onValue = (value) => {\n const depth = this.jsonParser.stack.length;\n const keys = (new Array(depth + 1).fill(0)).map((v, i) => {\n return i === depth ? this.jsonParser.key : this.jsonParser.stack[i].key;\n });\n if (!this.isParsingContextInner(depth)) { // Don't parse inner nodes inside @context\n const valueJobCb = () => this.newOnValueJob(keys, value, depth, true);\n if (!this.parsingContext.streamingProfile\n && !this.parsingContext.contextTree.getContext(keys.slice(0, -1))) {\n // If an out-of-order context is allowed,\n // we have to buffer everything.\n // We store jobs for @context's and @type's separately,\n // because at the end, we have to process them first.\n // We also handle @type because these *could* introduce a type-scoped context.\n if (keys[depth] === '@context') {\n let jobs = this.contextJobs[depth];\n if (!jobs) {\n jobs = this.contextJobs[depth] = [];\n }\n jobs.push(valueJobCb);\n }\n else {\n this.contextAwaitingJobs.push({ job: valueJobCb, keys, depth });\n }\n }\n else {\n // Make sure that our value jobs are chained synchronously\n this.lastOnValueJob = this.lastOnValueJob.then(valueJobCb);\n }\n // Execute all buffered jobs on deeper levels\n if (!this.parsingContext.streamingProfile && depth === 0) {\n this.lastOnValueJob = this.lastOnValueJob\n .then(() => this.executeBufferedJobs());\n }\n }\n };\n this.jsonParser.onError = (error) => {\n this.emit('error', error);\n };\n }\n /**\n * Check if the parser is currently parsing an element that is part of an @context entry.\n * @param {number} depth A depth.\n * @return {boolean} A boolean.\n */\n isParsingContextInner(depth) {\n for (let i = depth; i > 0; i--) {\n if (this.jsonParser.stack[i - 1].key === '@context') {\n return true;\n }\n }\n return false;\n }\n /**\n * Execute all buffered jobs.\n * @return {Promise} A promise resolving if all jobs are finished.\n */\n async executeBufferedJobs() {\n // Handle context jobs\n for (const jobs of this.contextJobs) {\n if (jobs) {\n for (const job of jobs) {\n await job();\n }\n }\n }\n // Clear the keyword cache.\n this.parsingContext.unaliasedKeywordCacheStack.splice(0);\n const contextAwaitingJobs = [];\n for (const job of this.contextAwaitingJobs) {\n if ((await this.util.unaliasKeyword(job.keys[job.depth], job.keys, job.depth, true)) === '@type'\n || typeof job.keys[job.depth] === 'number' && (await this.util.unaliasKeyword(job.keys[job.depth - 1], job.keys, job.depth - 1, true)) === '@type') { // Also capture @type with array values\n // Remove @type from keys, because we want it to apply to parent later on\n this.typeJobs.push({ job: job.job, keys: job.keys.slice(0, job.keys.length - 1) });\n }\n else {\n contextAwaitingJobs.push(job);\n }\n }\n // Handle non-context jobs\n for (const job of contextAwaitingJobs) {\n // Check if we have a type (with possible type-scoped context) that should be handled before.\n // We check all possible parent nodes for the current job, from root to leaves.\n if (this.typeJobs.length > 0) {\n // First collect all applicable type jobs\n const applicableTypeJobs = [];\n const applicableTypeJobIds = [];\n for (let i = 0; i < this.typeJobs.length; i++) {\n const typeJob = this.typeJobs[i];\n if (Util_1.Util.isPrefixArray(typeJob.keys, job.keys)) {\n applicableTypeJobs.push(typeJob);\n applicableTypeJobIds.push(i);\n }\n }\n // Next, sort the jobs from short to long key length (to ensure types higher up in the tree to be handled first)\n const sortedTypeJobs = applicableTypeJobs.sort((job1, job2) => job1.keys.length - job2.keys.length);\n // Finally, execute the jobs in order\n for (const typeJob of sortedTypeJobs) {\n await typeJob.job();\n }\n // Remove the executed type jobs\n // Sort first, so we can efficiently splice\n const sortedApplicableTypeJobIds = applicableTypeJobIds.sort().reverse();\n for (const jobId of sortedApplicableTypeJobIds) {\n this.typeJobs.splice(jobId, 1);\n }\n }\n await job.job();\n }\n }\n}\nJsonLdParser.DEFAULT_PROCESSING_MODE = '1.1';\nJsonLdParser.ENTRY_HANDLERS = [\n new EntryHandlerArrayValue_1.EntryHandlerArrayValue(),\n new EntryHandlerKeywordContext_1.EntryHandlerKeywordContext(),\n new EntryHandlerKeywordId_1.EntryHandlerKeywordId(),\n new EntryHandlerKeywordIncluded_1.EntryHandlerKeywordIncluded(),\n new EntryHandlerKeywordGraph_1.EntryHandlerKeywordGraph(),\n new EntryHandlerKeywordNest_1.EntryHandlerKeywordNest(),\n new EntryHandlerKeywordType_1.EntryHandlerKeywordType(),\n new EntryHandlerKeywordValue_1.EntryHandlerKeywordValue(),\n new EntryHandlerKeywordAnnotation_1.EntryHandlerKeywordAnnotation(),\n new EntryHandlerContainer_1.EntryHandlerContainer(),\n new EntryHandlerKeywordUnknownFallback_1.EntryHandlerKeywordUnknownFallback(),\n new EntryHandlerPredicate_1.EntryHandlerPredicate(),\n new EntryHandlerInvalidFallback_1.EntryHandlerInvalidFallback(),\n];\nexports.JsonLdParser = JsonLdParser;\n//# sourceMappingURL=JsonLdParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParsingContext = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst ErrorCoded_1 = require(\"jsonld-context-parser/lib/ErrorCoded\");\nconst ContextTree_1 = require(\"./ContextTree\");\nconst JsonLdParser_1 = require(\"./JsonLdParser\");\n/**\n * Data holder for parsing information.\n */\nclass ParsingContext {\n constructor(options) {\n // Initialize settings\n this.contextParser = new jsonld_context_parser_1.ContextParser({ documentLoader: options.documentLoader, skipValidation: options.skipContextValidation });\n this.streamingProfile = !!options.streamingProfile;\n this.baseIRI = options.baseIRI;\n this.produceGeneralizedRdf = !!options.produceGeneralizedRdf;\n this.allowSubjectList = !!options.allowSubjectList;\n this.processingMode = options.processingMode || JsonLdParser_1.JsonLdParser.DEFAULT_PROCESSING_MODE;\n this.strictValues = !!options.strictValues;\n this.validateValueIndexes = !!options.validateValueIndexes;\n this.defaultGraph = options.defaultGraph;\n this.rdfDirection = options.rdfDirection;\n this.normalizeLanguageTags = options.normalizeLanguageTags;\n this.streamingProfileAllowOutOfOrderPlainType = options.streamingProfileAllowOutOfOrderPlainType;\n this.rdfstar = options.rdfstar !== false;\n this.rdfstarReverseInEmbedded = options.rdfstarReverseInEmbedded;\n this.topLevelProperties = false;\n this.activeProcessingMode = parseFloat(this.processingMode);\n // Initialize stacks\n this.processingStack = [];\n this.processingType = [];\n this.emittedStack = [];\n this.idStack = [];\n this.graphStack = [];\n this.graphContainerTermStack = [];\n this.listPointerStack = [];\n this.contextTree = new ContextTree_1.ContextTree();\n this.literalStack = [];\n this.validationStack = [];\n this.unaliasedKeywordCacheStack = [];\n this.jsonLiteralStack = [];\n this.unidentifiedValuesBuffer = [];\n this.unidentifiedGraphsBuffer = [];\n this.annotationsBuffer = [];\n this.pendingContainerFlushBuffers = [];\n this.parser = options.parser;\n if (options.context) {\n this.rootContext = this.parseContext(options.context);\n this.rootContext.then((context) => this.validateContext(context));\n }\n else {\n this.rootContext = Promise.resolve(new jsonld_context_parser_1.JsonLdContextNormalized(this.baseIRI ? { '@base': this.baseIRI, '@__baseDocument': true } : {}));\n }\n }\n /**\n * Parse the given context with the configured options.\n * @param {JsonLdContext} context A context to parse.\n * @param {JsonLdContextNormalized} parentContext An optional parent context.\n * @param {boolean} ignoreProtection If @protected term checks should be ignored.\n * @return {Promise} A promise resolving to the parsed context.\n */\n async parseContext(context, parentContext, ignoreProtection) {\n return this.contextParser.parse(context, {\n baseIRI: this.baseIRI,\n ignoreProtection,\n normalizeLanguageTags: this.normalizeLanguageTags,\n parentContext,\n processingMode: this.activeProcessingMode,\n });\n }\n /**\n * Check if the given context is valid.\n * If not, an error will be thrown.\n * @param {JsonLdContextNormalized} context A context.\n */\n validateContext(context) {\n const activeVersion = context.getContextRaw()['@version'];\n if (activeVersion) {\n if (this.activeProcessingMode && activeVersion > this.activeProcessingMode) {\n throw new ErrorCoded_1.ErrorCoded(`Unsupported JSON-LD version '${activeVersion}' under active processing mode ${this.activeProcessingMode}.`, ErrorCoded_1.ERROR_CODES.PROCESSING_MODE_CONFLICT);\n }\n else {\n if (this.activeProcessingMode && activeVersion < this.activeProcessingMode) {\n throw new ErrorCoded_1.ErrorCoded(`Invalid JSON-LD version ${activeVersion} under active processing mode ${this.activeProcessingMode}.`, ErrorCoded_1.ERROR_CODES.INVALID_VERSION_VALUE);\n }\n this.activeProcessingMode = activeVersion;\n }\n }\n }\n /**\n * Get the context at the given path.\n * @param {keys} keys The path of keys to get the context at.\n * @param {number} offset The path offset, defaults to 1.\n * @return {Promise} A promise resolving to a context.\n */\n async getContext(keys, offset = 1) {\n const keysOriginal = keys;\n // Ignore array keys at the end\n while (typeof keys[keys.length - 1] === 'number') {\n keys = keys.slice(0, keys.length - 1);\n }\n // Handle offset on keys\n if (offset) {\n keys = keys.slice(0, -offset);\n }\n // Determine the closest context\n const contextData = await this.getContextPropagationAware(keys);\n const context = contextData.context;\n // Process property-scoped contexts (high-to-low)\n let contextRaw = context.getContextRaw();\n for (let i = contextData.depth; i < keysOriginal.length - offset; i++) {\n const key = keysOriginal[i];\n const contextKeyEntry = contextRaw[key];\n if (contextKeyEntry && typeof contextKeyEntry === 'object' && '@context' in contextKeyEntry) {\n const scopedContext = (await this.parseContext(contextKeyEntry, contextRaw, true)).getContextRaw();\n const propagate = !(key in scopedContext)\n || scopedContext[key]['@context']['@propagate']; // Propagation is true by default\n if (propagate !== false || i === keysOriginal.length - 1 - offset) {\n contextRaw = Object.assign({}, scopedContext);\n // Clean up final context\n delete contextRaw['@propagate'];\n contextRaw[key] = Object.assign({}, contextRaw[key]);\n if ('@id' in contextKeyEntry) {\n contextRaw[key]['@id'] = contextKeyEntry['@id'];\n }\n delete contextRaw[key]['@context'];\n if (propagate !== false) {\n this.contextTree.setContext(keysOriginal.slice(0, i + offset), Promise.resolve(new jsonld_context_parser_1.JsonLdContextNormalized(contextRaw)));\n }\n }\n }\n }\n return new jsonld_context_parser_1.JsonLdContextNormalized(contextRaw);\n }\n /**\n * Get the context at the given path.\n * Non-propagating contexts will be skipped,\n * unless the context at that exact depth is retrieved.\n *\n * This ONLY takes into account context propagation logic,\n * so this should usually not be called directly,\n * call {@link #getContext} instead.\n *\n * @param keys The path of keys to get the context at.\n * @return {Promise<{ context: JsonLdContextNormalized, depth: number }>} A context and its depth.\n */\n async getContextPropagationAware(keys) {\n const originalDepth = keys.length;\n let contextData = null;\n let hasApplicablePropertyScopedContext;\n do {\n hasApplicablePropertyScopedContext = false;\n if (contextData && '@__propagateFallback' in contextData.context.getContextRaw()) {\n // If a propagation fallback context has been set,\n // fallback to that context and retry for the same depth.\n contextData.context = new jsonld_context_parser_1.JsonLdContextNormalized(contextData.context.getContextRaw()['@__propagateFallback']);\n }\n else {\n if (contextData) {\n // If we had a previous iteration, jump to the parent of context depth.\n // We must do this because once we get here, last context had propagation disabled,\n // so we check its first parent instead.\n keys = keys.slice(0, contextData.depth - 1);\n }\n contextData = await this.contextTree.getContext(keys) || { context: await this.rootContext, depth: 0 };\n }\n // Allow non-propagating contexts to propagate one level deeper\n // if it defines a property-scoped context that is applicable for the current key.\n // @see https://w3c.github.io/json-ld-api/tests/toRdf-manifest#tc012\n const lastKey = keys[keys.length - 1];\n if (lastKey in contextData.context.getContextRaw()) {\n const lastKeyValue = contextData.context.getContextRaw()[lastKey];\n if (lastKeyValue && typeof lastKeyValue === 'object' && '@context' in lastKeyValue) {\n hasApplicablePropertyScopedContext = true;\n }\n }\n } while (contextData.depth > 0 // Root context has a special case\n && contextData.context.getContextRaw()['@propagate'] === false // Stop loop if propagation is true\n && contextData.depth !== originalDepth // Stop loop if requesting exact depth of non-propagating\n && !hasApplicablePropertyScopedContext);\n // Special case for root context that does not allow propagation.\n // Fallback to empty context in that case.\n if (contextData.depth === 0\n && contextData.context.getContextRaw()['@propagate'] === false\n && contextData.depth !== originalDepth) {\n contextData.context = new jsonld_context_parser_1.JsonLdContextNormalized({});\n }\n return contextData;\n }\n /**\n * Start a new job for parsing the given value.\n * @param {any[]} keys The stack of keys.\n * @param value The value to parse.\n * @param {number} depth The depth to parse at.\n * @param {boolean} lastDepthCheck If the lastDepth check should be done for buffer draining.\n * @return {Promise} A promise resolving when the job is done.\n */\n async newOnValueJob(keys, value, depth, lastDepthCheck) {\n await this.parser.newOnValueJob(keys, value, depth, lastDepthCheck);\n }\n /**\n * Flush the pending container flush buffers\n * @return {boolean} If any pending buffers were flushed.\n */\n async handlePendingContainerFlushBuffers() {\n if (this.pendingContainerFlushBuffers.length > 0) {\n for (const pendingFlushBuffer of this.pendingContainerFlushBuffers) {\n await this.parser.flushBuffer(pendingFlushBuffer.depth, pendingFlushBuffer.keys);\n this.parser.flushStacks(pendingFlushBuffer.depth);\n }\n this.pendingContainerFlushBuffers.splice(0, this.pendingContainerFlushBuffers.length);\n return true;\n }\n else {\n return false;\n }\n }\n /**\n * Emit the given quad into the output stream.\n * @param {number} depth The depth the quad was generated at.\n * @param {Quad} quad A quad to emit.\n */\n emitQuad(depth, quad) {\n if (depth === 1) {\n this.topLevelProperties = true;\n }\n this.parser.push(quad);\n }\n /**\n * Emit the given error into the output stream.\n * @param {Error} error An error to emit.\n */\n emitError(error) {\n this.parser.emit('error', error);\n }\n /**\n * Emit the given context into the output stream under the 'context' event.\n * @param {JsonLdContext} context A context to emit.\n */\n emitContext(context) {\n this.parser.emit('context', context);\n }\n /**\n * Safely get or create the depth value of {@link ParsingContext.unidentifiedValuesBuffer}.\n * @param {number} depth A depth.\n * @return {{predicate: Term; object: Term; reverse: boolean}[]} An element of\n * {@link ParsingContext.unidentifiedValuesBuffer}.\n */\n getUnidentifiedValueBufferSafe(depth) {\n let buffer = this.unidentifiedValuesBuffer[depth];\n if (!buffer) {\n buffer = [];\n this.unidentifiedValuesBuffer[depth] = buffer;\n }\n return buffer;\n }\n /**\n * Safely get or create the depth value of {@link ParsingContext.unidentifiedGraphsBuffer}.\n * @param {number} depth A depth.\n * @return {{predicate: Term; object: Term; reverse: boolean}[]} An element of\n * {@link ParsingContext.unidentifiedGraphsBuffer}.\n */\n getUnidentifiedGraphBufferSafe(depth) {\n let buffer = this.unidentifiedGraphsBuffer[depth];\n if (!buffer) {\n buffer = [];\n this.unidentifiedGraphsBuffer[depth] = buffer;\n }\n return buffer;\n }\n /**\n * Safely get or create the depth value of {@link ParsingContext.annotationsBuffer}.\n * @param {number} depth A depth.\n * @return {} An element of {@link ParsingContext.annotationsBuffer}.\n */\n getAnnotationsBufferSafe(depth) {\n let buffer = this.annotationsBuffer[depth];\n if (!buffer) {\n buffer = [];\n this.annotationsBuffer[depth] = buffer;\n }\n return buffer;\n }\n /**\n * @return IExpandOptions The expand options for the active processing mode.\n */\n getExpandOptions() {\n return ParsingContext.EXPAND_OPTIONS[this.activeProcessingMode];\n }\n /**\n * Shift the stack at the given offset to the given depth.\n *\n * This will override anything in the stack at `depth`,\n * and this will remove anything at `depth + depthOffset`\n *\n * @param depth The target depth.\n * @param depthOffset The origin depth, relative to `depth`.\n */\n shiftStack(depth, depthOffset) {\n // Copy the id stack value up one level so that the next job can access the id.\n const deeperIdStack = this.idStack[depth + depthOffset];\n if (deeperIdStack) {\n this.idStack[depth] = deeperIdStack;\n this.emittedStack[depth] = true;\n delete this.idStack[depth + depthOffset];\n }\n // Shorten key stack\n if (this.pendingContainerFlushBuffers.length) {\n for (const buffer of this.pendingContainerFlushBuffers) {\n if (buffer.depth >= depth + depthOffset) {\n buffer.depth -= depthOffset;\n buffer.keys.splice(depth, depthOffset);\n }\n }\n }\n // Splice stacks\n if (this.unidentifiedValuesBuffer[depth + depthOffset]) {\n this.unidentifiedValuesBuffer[depth] = this.unidentifiedValuesBuffer[depth + depthOffset];\n delete this.unidentifiedValuesBuffer[depth + depthOffset];\n }\n if (this.annotationsBuffer[depth + depthOffset - 1]) {\n if (!this.annotationsBuffer[depth - 1]) {\n this.annotationsBuffer[depth - 1] = [];\n }\n this.annotationsBuffer[depth - 1] = [\n ...this.annotationsBuffer[depth - 1],\n ...this.annotationsBuffer[depth + depthOffset - 1],\n ];\n delete this.annotationsBuffer[depth + depthOffset - 1];\n }\n // TODO: also do the same for other stacks\n }\n}\nParsingContext.EXPAND_OPTIONS = {\n 1.0: {\n allowPrefixForcing: false,\n allowPrefixNonGenDelims: false,\n allowVocabRelativeToBase: false,\n },\n 1.1: {\n allowPrefixForcing: true,\n allowPrefixNonGenDelims: false,\n allowVocabRelativeToBase: true,\n },\n};\nexports.ParsingContext = ParsingContext;\n//# sourceMappingURL=ParsingContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst EntryHandlerContainer_1 = require(\"./entryhandler/EntryHandlerContainer\");\n// tslint:disable-next-line:no-var-requires\nconst canonicalizeJson = require('canonicalize');\n/**\n * Utility functions and methods.\n */\nclass Util {\n constructor(options) {\n this.parsingContext = options.parsingContext;\n this.dataFactory = options.dataFactory || new rdf_data_factory_1.DataFactory();\n this.rdfFirst = this.dataFactory.namedNode(Util.RDF + 'first');\n this.rdfRest = this.dataFactory.namedNode(Util.RDF + 'rest');\n this.rdfNil = this.dataFactory.namedNode(Util.RDF + 'nil');\n this.rdfType = this.dataFactory.namedNode(Util.RDF + 'type');\n this.rdfJson = this.dataFactory.namedNode(Util.RDF + 'JSON');\n }\n /**\n * Helper function to get the value of a context entry,\n * or fallback to a certain value.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param {string} contextKey A pre-defined JSON-LD key in context entries.\n * @param {string} key A context entry key.\n * @param {string} fallback A fallback value for when the given contextKey\n * could not be found in the value with the given key.\n * @return {string} The value of the given contextKey in the entry behind key in the given context,\n * or the given fallback value.\n */\n static getContextValue(context, contextKey, key, fallback) {\n const entry = context.getContextRaw()[key];\n if (!entry) {\n return fallback;\n }\n const type = entry[contextKey];\n return type === undefined ? fallback : type;\n }\n /**\n * Get the container type of the given key in the context.\n *\n * Should any context-scoping bugs should occur related to this in the future,\n * it may be required to increase the offset from the depth at which the context is retrieved by one (to 2).\n * This is because containers act 2 levels deep.\n *\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param {string} key A context entry key.\n * @return {string} The container type.\n */\n static getContextValueContainer(context, key) {\n return Util.getContextValue(context, '@container', key, { '@set': true });\n }\n /**\n * Get the value type of the given key in the context.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param {string} key A context entry key.\n * @return {string} The node type.\n */\n static getContextValueType(context, key) {\n const valueType = Util.getContextValue(context, '@type', key, null);\n if (valueType === '@none') {\n return null;\n }\n return valueType;\n }\n /**\n * Get the language of the given key in the context.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param {string} key A context entry key.\n * @return {string} The node type.\n */\n static getContextValueLanguage(context, key) {\n return Util.getContextValue(context, '@language', key, context.getContextRaw()['@language'] || null);\n }\n /**\n * Get the direction of the given key in the context.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param {string} key A context entry key.\n * @return {string} The node type.\n */\n static getContextValueDirection(context, key) {\n return Util.getContextValue(context, '@direction', key, context.getContextRaw()['@direction'] || null);\n }\n /**\n * Check if the given key in the context is a reversed property.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param {string} key A context entry key.\n * @return {boolean} If the context value has a @reverse key.\n */\n static isContextValueReverse(context, key) {\n return !!Util.getContextValue(context, '@reverse', key, null);\n }\n /**\n * Get the @index of the given key in the context.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param {string} key A context entry key.\n * @return {string} The index.\n */\n static getContextValueIndex(context, key) {\n return Util.getContextValue(context, '@index', key, context.getContextRaw()['@index'] || null);\n }\n /**\n * Check if the given key refers to a reversed property.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param {string} key The property key.\n * @param {string} parentKey The parent key.\n * @return {boolean} If the property must be reversed.\n */\n static isPropertyReverse(context, key, parentKey) {\n // '!==' is needed because reversed properties in a @reverse container should cancel each other out.\n return parentKey === '@reverse' !== Util.isContextValueReverse(context, key);\n }\n /**\n * Check if the given key exists inside an embedded node as direct child.\n * @param {string} parentKey The parent key.\n * @return {boolean} If the property is embedded.\n */\n static isPropertyInEmbeddedNode(parentKey) {\n return parentKey === '@id';\n }\n /**\n * Check if the given key exists inside an annotation object as direct child.\n * @param {string} parentKey The parent key.\n * @return {boolean} If the property is an annotation.\n */\n static isPropertyInAnnotationObject(parentKey) {\n return parentKey === '@annotation';\n }\n /**\n * Check if the given IRI is valid.\n * @param {string} iri A potential IRI.\n * @return {boolean} If the given IRI is valid.\n */\n static isValidIri(iri) {\n return iri !== null && jsonld_context_parser_1.Util.isValidIri(iri);\n }\n /**\n * Check if the given first array (needle) is a prefix of the given second array (haystack).\n * @param needle An array to check if it is a prefix.\n * @param haystack An array to look in.\n */\n static isPrefixArray(needle, haystack) {\n if (needle.length > haystack.length) {\n return false;\n }\n for (let i = 0; i < needle.length; i++) {\n if (needle[i] !== haystack[i]) {\n return false;\n }\n }\n return true;\n }\n /**\n * Make sure that @id-@index pairs are equal over all array values.\n * Reject otherwise.\n * @param {any[]} value An array value.\n * @return {Promise} A promise rejecting if conflicts are present.\n */\n async validateValueIndexes(value) {\n if (this.parsingContext.validateValueIndexes) {\n const indexHashes = {};\n for (const entry of value) {\n if (entry && typeof entry === 'object') {\n const id = entry['@id'];\n const index = entry['@index'];\n if (id && index) {\n const existingIndexValue = indexHashes[id];\n if (existingIndexValue && existingIndexValue !== index) {\n throw new jsonld_context_parser_1.ErrorCoded(`Conflicting @index value for ${id}`, jsonld_context_parser_1.ERROR_CODES.CONFLICTING_INDEXES);\n }\n indexHashes[id] = index;\n }\n }\n }\n }\n }\n /**\n * Convert a given JSON value to an RDF term.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param {string} key The current JSON key.\n * @param value A JSON value.\n * @param {number} depth The depth the value is at.\n * @param {string[]} keys The path of keys.\n * @return {Promise} An RDF term array.\n */\n async valueToTerm(context, key, value, depth, keys) {\n // Skip further processing if we have an @type: @json\n if (Util.getContextValueType(context, key) === '@json') {\n return [this.dataFactory.literal(this.valueToJsonString(value), this.rdfJson)];\n }\n const type = typeof value;\n switch (type) {\n case 'object':\n // Skip if we have a null or undefined object\n if (value === null || value === undefined) {\n return [];\n }\n // Special case for arrays\n if (Array.isArray(value)) {\n // We handle arrays at value level so we can emit earlier, so this is handled already when we get here.\n // Empty context-based lists are emitted at this place, because our streaming algorithm doesn't detect those.\n if ('@list' in Util.getContextValueContainer(context, key)) {\n if (value.length === 0) {\n return [this.rdfNil];\n }\n else {\n return this.parsingContext.idStack[depth + 1] || [];\n }\n }\n await this.validateValueIndexes(value);\n return [];\n }\n // Handle property-scoped contexts\n context = await this.getContextSelfOrPropertyScoped(context, key);\n // Handle local context in the value\n if ('@context' in value) {\n context = await this.parsingContext.parseContext(value['@context'], (await this.parsingContext.getContext(keys, 0)).getContextRaw());\n }\n // In all other cases, we have a hash\n value = await this.unaliasKeywords(value, keys, depth, context); // Un-alias potential keywords in this hash\n if ('@value' in value) {\n let val;\n let valueLanguage;\n let valueDirection;\n let valueType;\n let valueIndex; // We don't use the index, but we need to check its type for spec-compliance\n for (key in value) {\n const subValue = value[key];\n switch (key) {\n case '@value':\n val = subValue;\n break;\n case '@language':\n valueLanguage = subValue;\n break;\n case '@direction':\n valueDirection = subValue;\n break;\n case '@type':\n valueType = subValue;\n break;\n case '@index':\n valueIndex = subValue;\n break;\n case '@annotation':\n // This keyword is allowed, but is processed like normal nodes\n break;\n default:\n throw new jsonld_context_parser_1.ErrorCoded(`Unknown value entry '${key}' in @value: ${JSON.stringify(value)}`, jsonld_context_parser_1.ERROR_CODES.INVALID_VALUE_OBJECT);\n }\n }\n // Skip further processing if we have an @type: @json\n if (await this.unaliasKeyword(valueType, keys, depth, true, context) === '@json') {\n return [this.dataFactory.literal(this.valueToJsonString(val), this.rdfJson)];\n }\n // Validate @value\n if (val === null) {\n return [];\n }\n if (typeof val === 'object') {\n throw new jsonld_context_parser_1.ErrorCoded(`The value of an '@value' can not be an object, got '${JSON.stringify(val)}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_VALUE_OBJECT_VALUE);\n }\n // Validate @index\n if (this.parsingContext.validateValueIndexes && valueIndex && typeof valueIndex !== 'string') {\n throw new jsonld_context_parser_1.ErrorCoded(`The value of an '@index' must be a string, got '${JSON.stringify(valueIndex)}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_INDEX_VALUE);\n }\n // Validate @language and @direction\n if (valueLanguage) {\n if (typeof val !== 'string') {\n throw new jsonld_context_parser_1.ErrorCoded(`When an '@language' is set, the value of '@value' must be a string, got '${JSON.stringify(val)}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_LANGUAGE_TAGGED_VALUE);\n }\n if (!jsonld_context_parser_1.ContextParser.validateLanguage(valueLanguage, this.parsingContext.strictValues, jsonld_context_parser_1.ERROR_CODES.INVALID_LANGUAGE_TAGGED_STRING)) {\n return [];\n }\n // Language tags are always normalized to lowercase in 1.0.\n if (this.parsingContext.normalizeLanguageTags || this.parsingContext.activeProcessingMode === 1.0) {\n valueLanguage = valueLanguage.toLowerCase();\n }\n }\n if (valueDirection) {\n if (typeof val !== 'string') {\n throw new Error(`When an '@direction' is set, the value of '@value' must be a string, got '${JSON.stringify(val)}'`);\n }\n if (!jsonld_context_parser_1.ContextParser.validateDirection(valueDirection, this.parsingContext.strictValues)) {\n return [];\n }\n }\n // Check @language and @direction\n if (valueLanguage && valueDirection && this.parsingContext.rdfDirection) {\n if (valueType) {\n throw new jsonld_context_parser_1.ErrorCoded(`Can not have '@language', '@direction' and '@type' in a value: '${JSON\n .stringify(value)}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_VALUE_OBJECT);\n }\n return this.nullableTermToArray(this\n .createLanguageDirectionLiteral(depth, val, valueLanguage, valueDirection));\n }\n else if (valueLanguage) { // Check @language\n if (valueType) {\n throw new jsonld_context_parser_1.ErrorCoded(`Can not have both '@language' and '@type' in a value: '${JSON.stringify(value)}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_VALUE_OBJECT);\n }\n return [this.dataFactory.literal(val, valueLanguage)];\n }\n else if (valueDirection && this.parsingContext.rdfDirection) { // Check @direction\n if (valueType) {\n throw new jsonld_context_parser_1.ErrorCoded(`Can not have both '@direction' and '@type' in a value: '${JSON.stringify(value)}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_VALUE_OBJECT);\n }\n return this.nullableTermToArray(this\n .createLanguageDirectionLiteral(depth, val, valueLanguage, valueDirection));\n }\n else if (valueType) { // Validate @type\n if (typeof valueType !== 'string') {\n throw new jsonld_context_parser_1.ErrorCoded(`The value of an '@type' must be a string, got '${JSON.stringify(valueType)}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_TYPED_VALUE);\n }\n const typeTerm = this.createVocabOrBaseTerm(context, valueType);\n if (!typeTerm) {\n throw new jsonld_context_parser_1.ErrorCoded(`Invalid '@type' value, got '${JSON.stringify(valueType)}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_TYPED_VALUE);\n }\n if (typeTerm.termType !== 'NamedNode') {\n throw new jsonld_context_parser_1.ErrorCoded(`Illegal value type (${typeTerm.termType}): ${valueType}`, jsonld_context_parser_1.ERROR_CODES.INVALID_TYPED_VALUE);\n }\n return [this.dataFactory.literal(val, typeTerm)];\n }\n // We don't pass the context, because context-based things like @language should be ignored\n return await this.valueToTerm(new jsonld_context_parser_1.JsonLdContextNormalized({}), key, val, depth, keys);\n }\n else if ('@set' in value) {\n // No other entries are allow in this value\n if (Object.keys(value).length > 1) {\n throw new jsonld_context_parser_1.ErrorCoded(`Found illegal neighbouring entries next to @set for key: '${key}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_SET_OR_LIST_OBJECT);\n }\n // No need to do anything here, this is handled at the deeper level.\n return [];\n }\n else if ('@list' in value) {\n // No other entries are allowed in this value\n if (Object.keys(value).length > 1) {\n throw new jsonld_context_parser_1.ErrorCoded(`Found illegal neighbouring entries next to @list for key: '${key}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_SET_OR_LIST_OBJECT);\n }\n const listValue = value[\"@list\"];\n // We handle lists at value level so we can emit earlier, so this is handled already when we get here.\n // Empty anonymous lists are emitted at this place, because our streaming algorithm doesn't detect those.\n if (Array.isArray(listValue)) {\n if (listValue.length === 0) {\n return [this.rdfNil];\n }\n else {\n return this.parsingContext.idStack[depth + 1] || [];\n }\n }\n else {\n // We only have a single list element here, so emit this directly as single element\n return await this.valueToTerm(await this.parsingContext.getContext(keys), key, listValue, depth - 1, keys.slice(0, -1));\n }\n }\n else if ('@reverse' in value && typeof value['@reverse'] === 'boolean') {\n // We handle reverse properties at value level so we can emit earlier,\n // so this is handled already when we get here.\n return [];\n }\n else if ('@graph' in Util.getContextValueContainer(await this.parsingContext.getContext(keys), key)) {\n // We are processing a graph container\n const graphContainerEntries = this.parsingContext.graphContainerTermStack[depth + 1];\n return graphContainerEntries ? Object.values(graphContainerEntries) : [this.dataFactory.blankNode()];\n }\n else if (\"@id\" in value) {\n // Use deeper context if the value node contains other properties next to @id.\n if (Object.keys(value).length > 1) {\n context = await this.parsingContext.getContext(keys, 0);\n }\n // Handle local context in the value\n if ('@context' in value) {\n context = await this.parsingContext.parseContext(value['@context'], context.getContextRaw());\n }\n if (value[\"@type\"] === '@vocab') {\n return this.nullableTermToArray(this.createVocabOrBaseTerm(context, value[\"@id\"]));\n }\n else {\n const valueId = value[\"@id\"];\n let valueTerm;\n if (typeof valueId === 'object') {\n if (this.parsingContext.rdfstar) {\n valueTerm = this.parsingContext.idStack[depth + 1][0];\n }\n else {\n throw new jsonld_context_parser_1.ErrorCoded(`Found illegal @id '${value}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_ID_VALUE);\n }\n }\n else {\n valueTerm = this.resourceToTerm(context, valueId);\n }\n return this.nullableTermToArray(valueTerm);\n }\n }\n else {\n // Only make a blank node if at least one triple was emitted at the value's level.\n if (this.parsingContext.emittedStack[depth + 1]\n || (value && typeof value === 'object' && Object.keys(value).length === 0)) {\n return (this.parsingContext.idStack[depth + 1]\n || (this.parsingContext.idStack[depth + 1] = [this.dataFactory.blankNode()]));\n }\n else {\n return [];\n }\n }\n case 'string':\n return this.nullableTermToArray(this.stringValueToTerm(depth, await this.getContextSelfOrPropertyScoped(context, key), key, value, null));\n case 'boolean':\n return this.nullableTermToArray(this.stringValueToTerm(depth, await this.getContextSelfOrPropertyScoped(context, key), key, Boolean(value).toString(), this.dataFactory.namedNode(Util.XSD_BOOLEAN)));\n case 'number':\n return this.nullableTermToArray(this.stringValueToTerm(depth, await this.getContextSelfOrPropertyScoped(context, key), key, value, this.dataFactory.namedNode(value % 1 === 0 && value < 1e21 ? Util.XSD_INTEGER : Util.XSD_DOUBLE)));\n default:\n this.parsingContext.emitError(new Error(`Could not determine the RDF type of a ${type}`));\n return [];\n }\n }\n /**\n * If the context defines a property-scoped context for the given key,\n * that context will be returned.\n * Otherwise, the given context will be returned as-is.\n *\n * This should be used for valueToTerm cases that are not objects.\n * @param context A context.\n * @param key A JSON key.\n */\n async getContextSelfOrPropertyScoped(context, key) {\n const contextKeyEntry = context.getContextRaw()[key];\n if (contextKeyEntry && typeof contextKeyEntry === 'object' && '@context' in contextKeyEntry) {\n context = await this.parsingContext.parseContext(contextKeyEntry, context.getContextRaw(), true);\n }\n return context;\n }\n /**\n * If the given term is null, return an empty array, otherwise return an array with the single given term.\n * @param term A term.\n */\n nullableTermToArray(term) {\n return term ? [term] : [];\n }\n /**\n * Convert a given JSON key to an RDF predicate term,\n * based on @vocab.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param key A JSON key.\n * @return {RDF.NamedNode} An RDF named node.\n */\n predicateToTerm(context, key) {\n const expanded = context.expandTerm(key, true, this.parsingContext.getExpandOptions());\n // Immediately return if the predicate was disabled in the context\n if (!expanded) {\n return null;\n }\n // Check if the predicate is a blank node\n if (expanded[0] === '_' && expanded[1] === ':') {\n if (this.parsingContext.produceGeneralizedRdf) {\n return this.dataFactory.blankNode(expanded.substr(2));\n }\n else {\n return null;\n }\n }\n // Check if the predicate is a valid IRI\n if (Util.isValidIri(expanded)) {\n return this.dataFactory.namedNode(expanded);\n }\n else {\n if (expanded && this.parsingContext.strictValues) {\n this.parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Invalid predicate IRI: ${expanded}`, jsonld_context_parser_1.ERROR_CODES.INVALID_IRI_MAPPING));\n }\n else {\n return null;\n }\n }\n return null;\n }\n /**\n * Convert a given JSON key to an RDF resource term or blank node,\n * based on @base.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param key A JSON key.\n * @return {RDF.NamedNode} An RDF named node or null.\n */\n resourceToTerm(context, key) {\n if (key.startsWith('_:')) {\n return this.dataFactory.blankNode(key.substr(2));\n }\n const iri = context.expandTerm(key, false, this.parsingContext.getExpandOptions());\n if (!Util.isValidIri(iri)) {\n if (iri && this.parsingContext.strictValues) {\n this.parsingContext.emitError(new Error(`Invalid resource IRI: ${iri}`));\n }\n else {\n return null;\n }\n }\n return this.dataFactory.namedNode(iri);\n }\n /**\n * Convert a given JSON key to an RDF resource term.\n * It will do this based on the @vocab,\n * and fallback to @base.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param key A JSON key.\n * @return {RDF.NamedNode} An RDF named node or null.\n */\n createVocabOrBaseTerm(context, key) {\n if (key.startsWith('_:')) {\n return this.dataFactory.blankNode(key.substr(2));\n }\n const expandOptions = this.parsingContext.getExpandOptions();\n let expanded = context.expandTerm(key, true, expandOptions);\n if (expanded === key) {\n expanded = context.expandTerm(key, false, expandOptions);\n }\n if (!Util.isValidIri(expanded)) {\n if (expanded && this.parsingContext.strictValues && !expanded.startsWith('@')) {\n this.parsingContext.emitError(new Error(`Invalid term IRI: ${expanded}`));\n }\n else {\n return null;\n }\n }\n return this.dataFactory.namedNode(expanded);\n }\n /**\n * Ensure that the given value becomes a string.\n * @param {string | number} value A string or number.\n * @param {NamedNode} datatype The intended datatype.\n * @return {string} The returned string.\n */\n intToString(value, datatype) {\n if (typeof value === 'number') {\n if (Number.isFinite(value)) {\n const isInteger = value % 1 === 0;\n if (isInteger && (!datatype || datatype.value !== Util.XSD_DOUBLE)) {\n return Number(value).toString();\n }\n else {\n return value.toExponential(15).replace(/(\\d)0*e\\+?/, '$1E');\n }\n }\n else {\n return value > 0 ? 'INF' : '-INF';\n }\n }\n else {\n return value;\n }\n }\n /**\n * Convert a given JSON string value to an RDF term.\n * @param {number} depth The current stack depth.\n * @param {JsonLdContextNormalized} context A JSON-LD context.\n * @param {string} key The current JSON key.\n * @param {string} value A JSON value.\n * @param {NamedNode} defaultDatatype The default datatype for the given value.\n * @return {RDF.Term} An RDF term or null.\n */\n stringValueToTerm(depth, context, key, value, defaultDatatype) {\n // Check the datatype from the context\n const contextType = Util.getContextValueType(context, key);\n if (contextType) {\n if (contextType === '@id') {\n if (!defaultDatatype) {\n return this.resourceToTerm(context, this.intToString(value, defaultDatatype));\n }\n }\n else if (contextType === '@vocab') {\n if (!defaultDatatype) {\n return this.createVocabOrBaseTerm(context, this.intToString(value, defaultDatatype));\n }\n }\n else {\n defaultDatatype = this.dataFactory.namedNode(contextType);\n }\n }\n // If we don't find such a datatype, check the language from the context\n if (!defaultDatatype) {\n const contextLanguage = Util.getContextValueLanguage(context, key);\n const contextDirection = Util.getContextValueDirection(context, key);\n if (contextDirection && this.parsingContext.rdfDirection) {\n return this.createLanguageDirectionLiteral(depth, this.intToString(value, defaultDatatype), contextLanguage, contextDirection);\n }\n else {\n return this.dataFactory.literal(this.intToString(value, defaultDatatype), contextLanguage);\n }\n }\n // If all else fails, make a literal based on the default content type\n return this.dataFactory.literal(this.intToString(value, defaultDatatype), defaultDatatype);\n }\n /**\n * Create a literal for the given value with the given language and direction.\n * Auxiliary quads may be emitted.\n * @param {number} depth The current stack depth.\n * @param {string} value A string value.\n * @param {string} language A language tag.\n * @param {string} direction A direction.\n * @return {Term} An RDF term.\n */\n createLanguageDirectionLiteral(depth, value, language, direction) {\n if (this.parsingContext.rdfDirection === 'i18n-datatype') {\n // Create a datatyped literal, by encoding the language and direction into https://www.w3.org/ns/i18n#.\n if (!language) {\n language = '';\n }\n return this.dataFactory.literal(value, this.dataFactory.namedNode(`https://www.w3.org/ns/i18n#${language}_${direction}`));\n }\n else {\n // Reify the literal.\n const valueNode = this.dataFactory.blankNode();\n const graph = this.getDefaultGraph();\n this.parsingContext.emitQuad(depth, this.dataFactory.quad(valueNode, this.dataFactory.namedNode(Util.RDF + 'value'), this.dataFactory.literal(value), graph));\n if (language) {\n this.parsingContext.emitQuad(depth, this.dataFactory.quad(valueNode, this.dataFactory.namedNode(Util.RDF + 'language'), this.dataFactory.literal(language), graph));\n }\n this.parsingContext.emitQuad(depth, this.dataFactory.quad(valueNode, this.dataFactory.namedNode(Util.RDF + 'direction'), this.dataFactory.literal(direction), graph));\n return valueNode;\n }\n }\n /**\n * Stringify the given JSON object to a canonical JSON string.\n * @param value Any valid JSON value.\n * @return {string} A canonical JSON string.\n */\n valueToJsonString(value) {\n return canonicalizeJson(value);\n }\n /**\n * If the key is not a keyword, try to check if it is an alias for a keyword,\n * and if so, un-alias it.\n * @param {string} key A key, can be falsy.\n * @param {string[]} keys The path of keys.\n * @param {number} depth The depth to\n * @param {boolean} disableCache If the cache should be disabled\n * @param {JsonLdContextNormalized} context A context to unalias with,\n * will fallback to retrieving the context for the given keys.\n * @return {Promise} A promise resolving to the key itself, or another key.\n */\n async unaliasKeyword(key, keys, depth, disableCache, context) {\n // Numbers can not be an alias\n if (Number.isInteger(key)) {\n return key;\n }\n // Try to grab from cache if it was already un-aliased before.\n if (!disableCache) {\n const cachedUnaliasedKeyword = this.parsingContext.unaliasedKeywordCacheStack[depth];\n if (cachedUnaliasedKeyword) {\n return cachedUnaliasedKeyword;\n }\n }\n if (!jsonld_context_parser_1.Util.isPotentialKeyword(key)) {\n context = context || await this.parsingContext.getContext(keys);\n let unliased = context.getContextRaw()[key];\n if (unliased && typeof unliased === 'object') {\n unliased = unliased['@id'];\n }\n if (jsonld_context_parser_1.Util.isValidKeyword(unliased)) {\n key = unliased;\n }\n }\n return disableCache ? key : (this.parsingContext.unaliasedKeywordCacheStack[depth] = key);\n }\n /**\n * Unalias the keyword of the parent.\n * This adds a safety check if no parent exist.\n * @param {any[]} keys A stack of keys.\n * @param {number} depth The current depth.\n * @return {Promise} A promise resolving to the parent key, or another key.\n */\n async unaliasKeywordParent(keys, depth) {\n return await this.unaliasKeyword(depth > 0 && keys[depth - 1], keys, depth - 1);\n }\n /**\n * Un-alias all keywords in the given hash.\n * @param {{[p: string]: any}} hash A hash object.\n * @param {string[]} keys The path of keys.\n * @param {number} depth The depth.\n * @param {JsonLdContextNormalized} context A context to unalias with,\n * will fallback to retrieving the context for the given keys.\n * @return {Promise<{[p: string]: any}>} A promise resolving to the new hash.\n */\n async unaliasKeywords(hash, keys, depth, context) {\n const newHash = {};\n for (const key in hash) {\n newHash[await this.unaliasKeyword(key, keys, depth + 1, true, context)] = hash[key];\n }\n return newHash;\n }\n /**\n * Check if we are processing a literal (including JSON literals) at the given depth.\n * This will also check higher levels,\n * because if a parent is a literal,\n * then the deeper levels are definitely a literal as well.\n * @param {any[]} keys The keys.\n * @param {number} depth The depth.\n * @return {boolean} If we are processing a literal.\n */\n async isLiteral(keys, depth) {\n for (let i = depth; i >= 0; i--) {\n if (await this.unaliasKeyword(keys[i], keys, i) === '@annotation') {\n // Literals may have annotations, which require processing of inner nodes.\n return false;\n }\n if (this.parsingContext.literalStack[i] || this.parsingContext.jsonLiteralStack[i]) {\n return true;\n }\n }\n return false;\n }\n /**\n * Check how many parents should be skipped for checking the @graph for the given node.\n *\n * @param {number} depth The depth of the node.\n * @param {any[]} keys An array of keys.\n * @return {number} The graph depth offset.\n */\n async getDepthOffsetGraph(depth, keys) {\n for (let i = depth - 1; i > 0; i--) {\n if (await this.unaliasKeyword(keys[i], keys, i) === '@graph') {\n // Skip further processing if we are already in an @graph-@id or @graph-@index container\n const containers = (await EntryHandlerContainer_1.EntryHandlerContainer.getContainerHandler(this.parsingContext, keys, i)).containers;\n if (EntryHandlerContainer_1.EntryHandlerContainer.isComplexGraphContainer(containers)) {\n return -1;\n }\n return depth - i - 1;\n }\n }\n return -1;\n }\n /**\n * Check if the given subject is of a valid type.\n * This should be called when applying @reverse'd properties.\n * @param {Term} subject A subject.\n */\n validateReverseSubject(subject) {\n if (subject.termType === 'Literal') {\n throw new jsonld_context_parser_1.ErrorCoded(`Found illegal literal in subject position: ${subject.value}`, jsonld_context_parser_1.ERROR_CODES.INVALID_REVERSE_PROPERTY_VALUE);\n }\n }\n /**\n * Get the default graph.\n * @return {Term} An RDF term.\n */\n getDefaultGraph() {\n return this.parsingContext.defaultGraph || this.dataFactory.defaultGraph();\n }\n /**\n * Get the current graph, while taking into account a graph that can be defined via @container: @graph.\n * If not within a graph container, the default graph will be returned.\n * @param keys The current keys.\n * @param depth The current depth.\n */\n async getGraphContainerValue(keys, depth) {\n // Default to default graph\n let graph = this.getDefaultGraph();\n // Check if we are in an @container: @graph.\n const { containers, depth: depthContainer } = await EntryHandlerContainer_1.EntryHandlerContainer\n .getContainerHandler(this.parsingContext, keys, depth);\n if ('@graph' in containers) {\n // Get the graph from the stack.\n const graphContainerIndex = EntryHandlerContainer_1.EntryHandlerContainer.getContainerGraphIndex(containers, depthContainer, keys);\n const entry = this.parsingContext.graphContainerTermStack[depthContainer];\n graph = entry ? entry[graphContainerIndex] : null;\n // Set the graph in the stack if none has been set yet.\n if (!graph) {\n let graphId = null;\n if ('@id' in containers) {\n const keyUnaliased = await this.getContainerKey(keys[depthContainer], keys, depthContainer);\n if (keyUnaliased !== null) {\n graphId = await this.resourceToTerm(await this.parsingContext.getContext(keys), keyUnaliased);\n }\n }\n if (!graphId) {\n graphId = this.dataFactory.blankNode();\n }\n if (!this.parsingContext.graphContainerTermStack[depthContainer]) {\n this.parsingContext.graphContainerTermStack[depthContainer] = {};\n }\n graph = this.parsingContext.graphContainerTermStack[depthContainer][graphContainerIndex] = graphId;\n }\n }\n return graph;\n }\n /**\n * Get the properties depth for retrieving properties.\n *\n * Typically, the properties depth will be identical to the given depth.\n *\n * The following exceptions apply:\n * * When the parent is @reverse, the depth is decremented by one.\n * * When @nest parents are found, the depth is decremented by the number of @nest parents.\n * If in combination with the exceptions above an intermediary array is discovered,\n * the depth is also decremented by this number of arrays.\n *\n * @param keys The current key chain.\n * @param depth The current depth.\n */\n async getPropertiesDepth(keys, depth) {\n let lastValidDepth = depth;\n for (let i = depth - 1; i > 0; i--) {\n if (typeof keys[i] !== 'number') { // Skip array keys\n const parentKey = await this.unaliasKeyword(keys[i], keys, i);\n if (parentKey === '@reverse') {\n return i;\n }\n else if (parentKey === '@nest') {\n lastValidDepth = i;\n }\n else {\n return lastValidDepth;\n }\n }\n }\n return lastValidDepth;\n }\n /**\n * Get the key for the current container entry.\n * @param key A key, can be falsy.\n * @param keys The key chain.\n * @param depth The current depth to get the key from.\n * @return Promise resolving to the key.\n * Null will be returned for @none entries, with aliasing taken into account.\n */\n async getContainerKey(key, keys, depth) {\n const keyUnaliased = await this.unaliasKeyword(key, keys, depth);\n return keyUnaliased === '@none' ? null : keyUnaliased;\n }\n /**\n * Check if no reverse properties are present in embedded nodes.\n * @param key The current key.\n * @param reverse If a reverse property is active.\n * @param isEmbedded If we're in an embedded node.\n */\n validateReverseInEmbeddedNode(key, reverse, isEmbedded) {\n if (isEmbedded && reverse && !this.parsingContext.rdfstarReverseInEmbedded) {\n throw new jsonld_context_parser_1.ErrorCoded(`Illegal reverse property in embedded node in ${key}`, jsonld_context_parser_1.ERROR_CODES.INVALID_EMBEDDED_NODE);\n }\n }\n /**\n * Emit a quad, with checks.\n * @param depth The current depth.\n * @param subject S\n * @param predicate P\n * @param object O\n * @param graph G\n * @param reverse If a reverse property is active.\n * @param isEmbedded If we're in an embedded node.\n */\n emitQuadChecked(depth, subject, predicate, object, graph, reverse, isEmbedded) {\n // Create a quad\n let quad;\n if (reverse) {\n this.validateReverseSubject(object);\n quad = this.dataFactory.quad(object, predicate, subject, graph);\n }\n else {\n quad = this.dataFactory.quad(subject, predicate, object, graph);\n }\n // Emit the quad, unless it was created in an embedded node\n if (isEmbedded) {\n // Embedded nodes don't inherit the active graph\n if (quad.graph.termType !== 'DefaultGraph') {\n quad = this.dataFactory.quad(quad.subject, quad.predicate, quad.object);\n }\n // Multiple embedded nodes are not allowed\n if (this.parsingContext.idStack[depth - 1]) {\n throw new jsonld_context_parser_1.ErrorCoded(`Illegal multiple properties in an embedded node`, jsonld_context_parser_1.ERROR_CODES.INVALID_EMBEDDED_NODE);\n }\n this.parsingContext.idStack[depth - 1] = [quad];\n }\n else {\n this.parsingContext.emitQuad(depth, quad);\n }\n // Flush annotations\n const annotationsBuffer = this.parsingContext.annotationsBuffer[depth];\n if (annotationsBuffer) {\n for (const annotation of annotationsBuffer) {\n this.emitAnnotation(depth, quad, annotation);\n }\n delete this.parsingContext.annotationsBuffer[depth];\n }\n }\n // This is a separate function to enable recursion\n emitAnnotation(depth, quad, annotation) {\n // Construct annotation quad\n let annotationQuad;\n if (annotation.reverse) {\n this.validateReverseSubject(annotation.object);\n annotationQuad = this.dataFactory.quad(annotation.object, annotation.predicate, quad);\n }\n else {\n annotationQuad = this.dataFactory.quad(quad, annotation.predicate, annotation.object);\n }\n // Emit annotated quad\n this.parsingContext.emitQuad(depth, annotationQuad);\n // Also emit nested annotations\n for (const nestedAnnotation of annotation.nestedAnnotations) {\n this.emitAnnotation(depth, annotationQuad, nestedAnnotation);\n }\n }\n}\nUtil.XSD = 'http://www.w3.org/2001/XMLSchema#';\nUtil.XSD_BOOLEAN = Util.XSD + 'boolean';\nUtil.XSD_INTEGER = Util.XSD + 'integer';\nUtil.XSD_DOUBLE = Util.XSD + 'double';\nUtil.RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';\nexports.Util = Util;\n//# sourceMappingURL=Util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContainerHandlerIdentifier = void 0;\n/**\n * Container handler for @id.\n *\n * It assumes that the current key is the identifier of the current value.\n * This will add this value to the parent node.\n */\nclass ContainerHandlerIdentifier {\n canCombineWithGraph() {\n return true;\n }\n async handle(containers, parsingContext, util, keys, value, depth) {\n let id;\n // First check if the child node already has a defined id.\n if (parsingContext.emittedStack[depth + 1] && parsingContext.idStack[depth + 1]) {\n // Use the existing identifier\n id = parsingContext.idStack[depth + 1][0];\n }\n else {\n // Create the identifier\n const keyUnaliased = await util.getContainerKey(keys[depth], keys, depth);\n const maybeId = keyUnaliased !== null\n ? await util.resourceToTerm(await parsingContext.getContext(keys), keys[depth])\n : util.dataFactory.blankNode();\n // Do nothing if the id is invalid\n if (!maybeId) {\n parsingContext.emittedStack[depth] = false; // Don't emit the predicate owning this container.\n return;\n }\n id = maybeId;\n // Insert the id into the stack so that buffered children can make us of it.\n parsingContext.idStack[depth + 1] = [id];\n }\n // Insert the id into the stack so that parents can make use of it.\n // Insert it as an array because multiple id container entries may exist\n let ids = parsingContext.idStack[depth];\n if (!ids) {\n ids = parsingContext.idStack[depth] = [];\n }\n // Only insert the term if it does not exist yet in the array.\n if (!ids.some((term) => term.equals(id))) {\n ids.push(id);\n }\n // Flush any pending flush buffers\n if (!await parsingContext.handlePendingContainerFlushBuffers()) {\n parsingContext.emittedStack[depth] = false; // Don't emit the predicate owning this container.\n }\n }\n}\nexports.ContainerHandlerIdentifier = ContainerHandlerIdentifier;\n//# sourceMappingURL=ContainerHandlerIdentifier.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContainerHandlerIndex = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst EntryHandlerPredicate_1 = require(\"../entryhandler/EntryHandlerPredicate\");\nconst Util_1 = require(\"../Util\");\n/**\n * Container handler for @index.\n *\n * This will ignore the current key and add this entry to the parent node.\n */\nclass ContainerHandlerIndex {\n canCombineWithGraph() {\n return true;\n }\n async handle(containers, parsingContext, util, keys, value, depth) {\n if (!Array.isArray(value)) {\n const graphContainer = '@graph' in containers;\n // Check if the container is a property-based container by checking if there is a valid @index.\n const context = await parsingContext.getContext(keys);\n const indexKey = keys[depth - 1];\n const indexPropertyRaw = Util_1.Util.getContextValueIndex(context, indexKey);\n if (indexPropertyRaw) {\n // Validate the @index value\n if (jsonld_context_parser_1.Util.isPotentialKeyword(indexPropertyRaw)) {\n throw new jsonld_context_parser_1.ErrorCoded(`Keywords can not be used as @index value, got: ${indexPropertyRaw}`, jsonld_context_parser_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n if (typeof indexPropertyRaw !== 'string') {\n throw new jsonld_context_parser_1.ErrorCoded(`@index values must be strings, got: ${indexPropertyRaw}`, jsonld_context_parser_1.ERROR_CODES.INVALID_TERM_DEFINITION);\n }\n // When @index is used, values must be node values, unless @type: @id is defined in the context\n if (typeof value !== 'object') {\n // Error if we don't have @type: @id\n if (Util_1.Util.getContextValueType(context, indexKey) !== '@id') {\n throw new jsonld_context_parser_1.ErrorCoded(`Property-based index containers require nodes as values or strings with @type: @id, but got: ${value}`, jsonld_context_parser_1.ERROR_CODES.INVALID_VALUE_OBJECT);\n }\n // Add an @id to the stack, so our expanded @index value can make use of it\n const id = util.resourceToTerm(context, value);\n if (id) {\n parsingContext.idStack[depth + 1] = [id];\n }\n }\n // Expand the @index value\n const indexProperty = util.createVocabOrBaseTerm(context, indexPropertyRaw);\n if (indexProperty) {\n const indexValues = await util.valueToTerm(context, indexPropertyRaw, await util.getContainerKey(keys[depth], keys, depth), depth, keys);\n if (graphContainer) {\n // When we're in a graph container, attach the index to the graph identifier\n const graphId = await util.getGraphContainerValue(keys, depth + 1);\n for (const indexValue of indexValues) {\n parsingContext.emitQuad(depth, util.dataFactory.quad(graphId, indexProperty, indexValue, util.getDefaultGraph()));\n }\n }\n else {\n // Otherwise, attach the index to the node identifier\n for (const indexValue of indexValues) {\n await EntryHandlerPredicate_1.EntryHandlerPredicate.handlePredicateObject(parsingContext, util, keys, depth + 1, indexProperty, indexValue, false, false, false);\n }\n }\n }\n }\n const depthOffset = graphContainer ? 2 : 1;\n await parsingContext.newOnValueJob(keys.slice(0, keys.length - depthOffset), value, depth - depthOffset, true);\n // Flush any pending flush buffers\n await parsingContext.handlePendingContainerFlushBuffers();\n }\n parsingContext.emittedStack[depth] = false; // We have emitted a level higher\n }\n}\nexports.ContainerHandlerIndex = ContainerHandlerIndex;\n//# sourceMappingURL=ContainerHandlerIndex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContainerHandlerLanguage = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\n/**\n * Container handler for @language.\n *\n * It assumes that the current key is the language of the current value.\n * This will add this value to the parent node.\n */\nclass ContainerHandlerLanguage {\n canCombineWithGraph() {\n return false;\n }\n async handle(containers, parsingContext, util, keys, value, depth) {\n const language = await util.getContainerKey(keys[depth], keys, depth);\n if (Array.isArray(value)) {\n // No type-checking needed, will be handled on each value when this handler is called recursively.\n value = value.map((subValue) => ({ '@value': subValue, '@language': language }));\n }\n else {\n if (typeof value !== 'string') {\n throw new jsonld_context_parser_1.ErrorCoded(`Got invalid language map value, got '${JSON.stringify(value)}', but expected string`, jsonld_context_parser_1.ERROR_CODES.INVALID_LANGUAGE_MAP_VALUE);\n }\n value = { '@value': value, '@language': language };\n }\n await parsingContext.newOnValueJob(keys.slice(0, keys.length - 1), value, depth - 1, true);\n parsingContext.emittedStack[depth] = false; // We have emitted a level higher\n }\n}\nexports.ContainerHandlerLanguage = ContainerHandlerLanguage;\n//# sourceMappingURL=ContainerHandlerLanguage.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContainerHandlerType = void 0;\nconst EntryHandlerPredicate_1 = require(\"../entryhandler/EntryHandlerPredicate\");\nconst Util_1 = require(\"../Util\");\n/**\n * Container handler for @type.\n *\n * This will add this entry to the parent node, and use the current key as an rdf:type value.\n */\nclass ContainerHandlerType {\n canCombineWithGraph() {\n return false;\n }\n async handle(containers, parsingContext, util, keys, value, depth) {\n if (!Array.isArray(value)) {\n if (typeof value === 'string') {\n // Determine the @type of the container\n const context = await parsingContext.getContext(keys);\n const containerTypeType = Util_1.Util.getContextValueType(context, keys[depth - 1]);\n // String values refer to node references\n const id = containerTypeType === '@vocab'\n ? await util.createVocabOrBaseTerm(context, value)\n : await util.resourceToTerm(context, value);\n if (id) {\n // Handle the value of this node as @id, which will also cause the predicate from above to be emitted.\n const subValue = { '@id': id.termType === 'NamedNode' ? id.value : value };\n await parsingContext.newOnValueJob(keys.slice(0, keys.length - 1), subValue, depth - 1, true);\n // Set the id in the stack so it can be used for the rdf:type handling later on\n parsingContext.idStack[depth + 1] = [id];\n }\n }\n else {\n // Other values are handled by handling them as a proper job\n // Check needed for cases where entries don't have an explicit @id\n const entryHasIdentifier = !!parsingContext.idStack[depth + 1];\n // Handle the value of this node, which will also cause the predicate from above to be emitted.\n if (!entryHasIdentifier) {\n delete parsingContext.idStack[depth]; // Force new (blank node) identifier\n }\n await parsingContext.newOnValueJob(keys.slice(0, keys.length - 1), value, depth - 1, true);\n if (!entryHasIdentifier) {\n parsingContext.idStack[depth + 1] = parsingContext.idStack[depth]; // Copy the id to the child node, for @type\n }\n }\n // Identify the type to emit.\n const keyOriginal = await util.getContainerKey(keys[depth], keys, depth);\n const type = keyOriginal !== null\n ? util.createVocabOrBaseTerm(await parsingContext.getContext(keys), keyOriginal)\n : null;\n if (type) {\n // Push the type to the stack using the rdf:type predicate\n await EntryHandlerPredicate_1.EntryHandlerPredicate.handlePredicateObject(parsingContext, util, keys, depth + 1, util.rdfType, type, false, false, false);\n }\n // Flush any pending flush buffers\n await parsingContext.handlePendingContainerFlushBuffers();\n }\n parsingContext.emittedStack[depth] = false; // Don't emit the predicate owning this container.\n }\n}\nexports.ContainerHandlerType = ContainerHandlerType;\n//# sourceMappingURL=ContainerHandlerType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerArrayValue = void 0;\nconst Util_1 = require(\"../Util\");\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\n/**\n * Handles values that are part of an array.\n */\nclass EntryHandlerArrayValue {\n isPropertyHandler() {\n return false;\n }\n isStackProcessor() {\n return true;\n }\n async validate(parsingContext, util, keys, depth, inProperty) {\n return this.test(parsingContext, util, null, keys, depth);\n }\n async test(parsingContext, util, key, keys, depth) {\n return typeof keys[depth] === 'number';\n }\n async handle(parsingContext, util, key, keys, value, depth) {\n let parentKey = await util.unaliasKeywordParent(keys, depth);\n // Check if we have an anonymous list\n if (parentKey === '@list') {\n // Our value is part of an array\n // Determine the list root key\n let listRootKey = null;\n let listRootDepth = 0;\n for (let i = depth - 2; i > 0; i--) {\n const keyOption = keys[i];\n if (typeof keyOption === 'string' || typeof keyOption === 'number') {\n listRootDepth = i;\n listRootKey = keyOption;\n break;\n }\n }\n if (listRootKey !== null) {\n // Emit the given objects as list elements\n const values = await util.valueToTerm(await parsingContext.getContext(keys), listRootKey, value, depth, keys);\n for (const object of values) {\n await this.handleListElement(parsingContext, util, object, value, depth, keys.slice(0, listRootDepth), listRootDepth);\n }\n // If no values were found, emit a falsy list element to force an empty RDF list to be emitted.\n if (values.length === 0) {\n await this.handleListElement(parsingContext, util, null, value, depth, keys.slice(0, listRootDepth), listRootDepth);\n }\n }\n }\n else if (parentKey === '@set') {\n // Our value is part of a set, so we just add it to the parent-parent\n await parsingContext.newOnValueJob(keys.slice(0, -2), value, depth - 2, false);\n }\n else if (parentKey !== undefined && parentKey !== '@type') {\n // Buffer our value using the parent key as predicate\n // Determine the first parent key that is *not* an array key\n // This is needed in case we have an @list container with nested arrays,\n // where each of them should produce nested RDF lists.\n for (let i = depth - 1; i > 0; i--) {\n if (typeof keys[i] !== 'number') {\n parentKey = await util.unaliasKeyword(keys[i], keys, i);\n break;\n }\n }\n // Check if the predicate is marked as an @list in the context\n const parentContext = await parsingContext.getContext(keys.slice(0, -1));\n if ('@list' in Util_1.Util.getContextValueContainer(parentContext, parentKey)) {\n // Our value is part of an array\n // Emit the given objects as list elements\n parsingContext.emittedStack[depth + 1] = true; // Ensure the creation of bnodes for empty nodes\n const values = await util.valueToTerm(await parsingContext.getContext(keys), parentKey, value, depth, keys);\n for (const object of values) {\n await this.handleListElement(parsingContext, util, object, value, depth, keys.slice(0, -1), depth - 1);\n }\n // If no values were found, emit a falsy list element to force an empty RDF list to be emitted.\n if (values.length === 0) {\n await this.handleListElement(parsingContext, util, null, value, depth, keys.slice(0, -1), depth - 1);\n }\n }\n else {\n // Copy the stack values up one level so that the next job can access them.\n parsingContext.shiftStack(depth, 1);\n // Execute the job one level higher\n await parsingContext.newOnValueJob(keys.slice(0, -1), value, depth - 1, false);\n // Remove any defined contexts at this level to avoid it to propagate to the next array element.\n parsingContext.contextTree.removeContext(keys.slice(0, -1));\n }\n }\n }\n async handleListElement(parsingContext, util, value, valueOriginal, depth, listRootKeys, listRootDepth) {\n // Buffer our value as an RDF list using the listRootKey as predicate\n let listPointer = parsingContext.listPointerStack[depth];\n if (valueOriginal !== null && (await util.unaliasKeywords(valueOriginal, listRootKeys, depth))['@value'] !== null) {\n if (!listPointer || !listPointer.value) {\n const linkTerm = util.dataFactory.blankNode();\n listPointer = { value: linkTerm, listRootDepth, listId: linkTerm };\n }\n else {\n // rdf:rest links are always emitted before the next element,\n // as the blank node identifier is only created at that point.\n // Because of this reason, the final rdf:nil is emitted when the stack depth is decreased.\n const newLinkTerm = util.dataFactory.blankNode();\n parsingContext.emitQuad(depth, util.dataFactory.quad(listPointer.value, util.rdfRest, newLinkTerm, util.getDefaultGraph()));\n // Update the list pointer for the next element\n listPointer.value = newLinkTerm;\n }\n // Emit a list element for the current value\n // Omit rdf:first if the value is invalid\n if (value) {\n parsingContext.emitQuad(depth, util.dataFactory.quad(listPointer.value, util.rdfFirst, value, util.getDefaultGraph()));\n }\n }\n else {\n // A falsy list element if found.\n // Mark it as an rdf:nil list until another valid list element comes in\n if (!listPointer) {\n listPointer = { listRootDepth, listId: util.rdfNil };\n }\n }\n parsingContext.listPointerStack[depth] = listPointer;\n // Error if an annotation was defined\n if (parsingContext.rdfstar && parsingContext.annotationsBuffer[depth]) {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found an illegal annotation inside a list`, jsonld_context_parser_1.ERROR_CODES.INVALID_ANNOTATION));\n }\n }\n}\nexports.EntryHandlerArrayValue = EntryHandlerArrayValue;\n//# sourceMappingURL=EntryHandlerArrayValue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerContainer = void 0;\nconst ContainerHandlerIdentifier_1 = require(\"../containerhandler/ContainerHandlerIdentifier\");\nconst ContainerHandlerIndex_1 = require(\"../containerhandler/ContainerHandlerIndex\");\nconst ContainerHandlerLanguage_1 = require(\"../containerhandler/ContainerHandlerLanguage\");\nconst ContainerHandlerType_1 = require(\"../containerhandler/ContainerHandlerType\");\nconst Util_1 = require(\"../Util\");\n/**\n * Handles values that are part of a container type (like @index),\n * as specified by {@link IContainerHandler}.\n */\nclass EntryHandlerContainer {\n /**\n * Check fit the given container is a simple @graph container.\n * Concretely, it will check if no @index or @id is active as well.\n * @param containers A container hash.\n */\n static isSimpleGraphContainer(containers) {\n return '@graph' in containers\n && (('@set' in containers && Object.keys(containers).length === 2) || Object.keys(containers).length === 1);\n }\n /**\n * Check fit the given container is a complex @graph container.\n * Concretely, it will check if @index or @id is active as well next to @graph.\n * @param containers A container hash.\n */\n static isComplexGraphContainer(containers) {\n return '@graph' in containers\n && (('@set' in containers && Object.keys(containers).length > 2)\n || (!('@set' in containers) && Object.keys(containers).length > 1));\n }\n /**\n * Create an graph container index that can be used for identifying a graph term inside the graphContainerTermStack.\n * @param containers The applicable containers.\n * @param depth The container depth.\n * @param keys The array of keys.\n * @return The graph index.\n */\n static getContainerGraphIndex(containers, depth, keys) {\n let isSimpleGraphContainer = EntryHandlerContainer.isSimpleGraphContainer(containers);\n let index = '';\n for (let i = depth; i < keys.length; i++) {\n if (!isSimpleGraphContainer || typeof keys[i] === 'number') {\n index += ':' + keys[i];\n }\n // Only allow a second 'real' key if in a non-simple graph container.\n if (!isSimpleGraphContainer && typeof keys[i] !== 'number') {\n isSimpleGraphContainer = true;\n }\n }\n return index;\n }\n /**\n * Return the applicable container type at the given depth.\n *\n * This will ignore any arrays in the key chain.\n *\n * @param {ParsingContext} parsingContext A parsing context.\n * @param {any[]} keys The array of keys.\n * @param {number} depth The current depth.\n * @return {Promise<{ containers: {[typeName: string]: boolean}, depth: number, fallback: boolean }>}\n * All applicable containers for the given depth,\n * the `depth` of the container root (can change when arrays are in the key chain),\n * and the `fallback` flag that indicates if the default container type was returned\n * (i.e., no dedicated container type is defined).\n */\n static async getContainerHandler(parsingContext, keys, depth) {\n const fallback = {\n containers: { '@set': true },\n depth,\n fallback: true,\n };\n // A flag that is enabled when @graph container should be tested in next iteration\n let checkGraphContainer = false;\n // Iterate from deeper to higher\n const context = await parsingContext.getContext(keys, 2);\n for (let i = depth - 1; i >= 0; i--) {\n if (typeof keys[i] !== 'number') { // Skip array keys\n // @graph containers without any other types are one level less deep, and require special handling\n const containersSelf = Util_1.Util.getContextValue(context, '@container', keys[i], false);\n if (containersSelf && EntryHandlerContainer.isSimpleGraphContainer(containersSelf)) {\n return {\n containers: containersSelf,\n depth: i + 1,\n fallback: false,\n };\n }\n const containersParent = Util_1.Util.getContextValue(context, '@container', keys[i - 1], false);\n if (!containersParent) { // If we have the fallback container value\n if (checkGraphContainer) {\n // Return false if we were already expecting a @graph-@id of @graph-@index container\n return fallback;\n }\n // Check parent-parent, we may be in a @graph-@id of @graph-@index container, which have two levels\n checkGraphContainer = true;\n }\n else {\n // We had an invalid container next iteration, so we now have to check if we were in an @graph container\n const graphContainer = '@graph' in containersParent;\n // We're in a regular container\n for (const containerHandleName in EntryHandlerContainer.CONTAINER_HANDLERS) {\n if (containersParent[containerHandleName]) {\n if (graphContainer) {\n // Only accept graph containers if their combined handlers can handle them.\n if (EntryHandlerContainer.CONTAINER_HANDLERS[containerHandleName].canCombineWithGraph()) {\n return {\n containers: containersParent,\n depth: i,\n fallback: false,\n };\n }\n else {\n return fallback;\n }\n }\n else {\n // Only accept if we were not expecting a @graph-@id of @graph-@index container\n if (checkGraphContainer) {\n return fallback;\n }\n else {\n return {\n containers: containersParent,\n depth: i,\n fallback: false,\n };\n }\n }\n }\n }\n // Fail if no valid container handlers were found\n return fallback;\n }\n }\n }\n return fallback;\n }\n /**\n * Check if we are handling a value at the given depth\n * that is part of something that should be handled as a container,\n * AND if this container should be buffered, so that it can be handled by a dedicated container handler.\n *\n * For instance, any container with @graph will NOT be buffered.\n *\n * This will ignore any arrays in the key chain.\n *\n * @param {ParsingContext} parsingContext A parsing context.\n * @param {any[]} keys The array of keys.\n * @param {number} depth The current depth.\n * @return {Promise} If we are in the scope of a container handler.\n */\n static async isBufferableContainerHandler(parsingContext, keys, depth) {\n const handler = await EntryHandlerContainer.getContainerHandler(parsingContext, keys, depth);\n return !handler.fallback && !('@graph' in handler.containers);\n }\n isPropertyHandler() {\n return false;\n }\n isStackProcessor() {\n return true;\n }\n async validate(parsingContext, util, keys, depth, inProperty) {\n return !!await this.test(parsingContext, util, null, keys, depth);\n }\n async test(parsingContext, util, key, keys, depth) {\n const containers = Util_1.Util.getContextValueContainer(await parsingContext.getContext(keys, 2), keys[depth - 1]);\n for (const containerName in EntryHandlerContainer.CONTAINER_HANDLERS) {\n if (containers[containerName]) {\n return {\n containers,\n handler: EntryHandlerContainer.CONTAINER_HANDLERS[containerName],\n };\n }\n }\n return null;\n }\n async handle(parsingContext, util, key, keys, value, depth, testResult) {\n return testResult.handler.handle(testResult.containers, parsingContext, util, keys, value, depth);\n }\n}\nEntryHandlerContainer.CONTAINER_HANDLERS = {\n '@id': new ContainerHandlerIdentifier_1.ContainerHandlerIdentifier(),\n '@index': new ContainerHandlerIndex_1.ContainerHandlerIndex(),\n '@language': new ContainerHandlerLanguage_1.ContainerHandlerLanguage(),\n '@type': new ContainerHandlerType_1.ContainerHandlerType(),\n};\nexports.EntryHandlerContainer = EntryHandlerContainer;\n//# sourceMappingURL=EntryHandlerContainer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerInvalidFallback = void 0;\n/**\n * A catch-all for properties, that will either emit an error or ignore,\n * depending on whether or not the `strictValues` property is set.\n */\nclass EntryHandlerInvalidFallback {\n isPropertyHandler() {\n return false;\n }\n isStackProcessor() {\n return true;\n }\n async validate(parsingContext, util, keys, depth, inProperty) {\n return false;\n }\n async test(parsingContext, util, key, keys, depth) {\n return true;\n }\n async handle(parsingContext, util, key, keys, value, depth) {\n parsingContext.emittedStack[depth] = false;\n }\n}\nexports.EntryHandlerInvalidFallback = EntryHandlerInvalidFallback;\n//# sourceMappingURL=EntryHandlerInvalidFallback.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerPredicate = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst Util_1 = require(\"../Util\");\n/**\n * Interprets keys as predicates.\n * The most common case in JSON-LD processing.\n */\nclass EntryHandlerPredicate {\n /**\n * Handle the given predicate-object by either emitting it,\n * or by placing it in the appropriate stack for later emission when no @graph and/or @id has been defined.\n * @param {ParsingContext} parsingContext A parsing context.\n * @param {Util} util A utility instance.\n * @param {any[]} keys A stack of keys.\n * @param {number} depth The current depth.\n * @param {Term} predicate The predicate.\n * @param {Term} object The object.\n * @param {boolean} reverse If the property is reversed.\n * @param {boolean} isEmbedded If the property exists in an embedded node as direct child.\n * @param {boolean} isAnnotation If the property exists in an annotation object.\n * @return {Promise} A promise resolving when handling is done.\n */\n static async handlePredicateObject(parsingContext, util, keys, depth, predicate, object, reverse, isEmbedded, isAnnotation) {\n const depthProperties = await util.getPropertiesDepth(keys, depth);\n const depthOffsetGraph = await util.getDepthOffsetGraph(depth, keys);\n const depthPropertiesGraph = depth - depthOffsetGraph;\n const subjects = parsingContext.idStack[depthProperties];\n if (subjects && !isAnnotation) {\n // Emit directly if the @id was already defined\n for (const subject of subjects) {\n // Check if we're in a @graph context\n const atGraph = depthOffsetGraph >= 0;\n if (atGraph) {\n const graphs = parsingContext.idStack[depthPropertiesGraph - 1];\n if (graphs) {\n for (const graph of graphs) {\n // Emit our quad if graph @id is known\n util.emitQuadChecked(depth, subject, predicate, object, graph, reverse, isEmbedded);\n }\n }\n else {\n // Buffer our triple if graph @id is not known yet.\n if (reverse) {\n util.validateReverseSubject(object);\n parsingContext.getUnidentifiedGraphBufferSafe(depthPropertiesGraph - 1).push({ subject: object, predicate, object: subject, isEmbedded });\n }\n else {\n parsingContext.getUnidentifiedGraphBufferSafe(depthPropertiesGraph - 1)\n .push({ subject, predicate, object, isEmbedded });\n }\n }\n }\n else {\n // Emit if no @graph was applicable\n const graph = await util.getGraphContainerValue(keys, depthProperties);\n util.emitQuadChecked(depth, subject, predicate, object, graph, reverse, isEmbedded);\n }\n }\n }\n else {\n // Buffer until our @id becomes known, or we go up the stack\n if (reverse) {\n util.validateReverseSubject(object);\n }\n // Either push to the annotations or the actual value buffer\n if (isAnnotation) {\n // Only add to buffer if rdfstar is enabled\n if (parsingContext.rdfstar) {\n // Error if an @id was defined\n if (parsingContext.idStack[depth]) {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found an illegal @id inside an annotation: ${parsingContext.idStack[depth][0].value}`, jsonld_context_parser_1.ERROR_CODES.INVALID_ANNOTATION));\n }\n // Error if we're in an embedded node\n for (let i = 0; i < depth; i++) {\n if (await util.unaliasKeyword(keys[i], keys, i) === '@id') {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found an illegal annotation inside an embedded node`, jsonld_context_parser_1.ERROR_CODES.INVALID_ANNOTATION));\n }\n }\n // Store new annotation in the buffer\n const annotationsBuffer = parsingContext.getAnnotationsBufferSafe(depthProperties);\n const newAnnotation = { predicate, object, reverse, nestedAnnotations: [], depth: depthProperties };\n annotationsBuffer.push(newAnnotation);\n // Check in the buffer if any annotations were defined at a deeper depth,\n // if so, they are considered nested annotations.\n for (let i = annotationsBuffer.length - 2; i >= 0; i--) {\n // We iterate in reverse order, to enable easy item removal from the back.\n const existingAnnotation = annotationsBuffer[i];\n if (existingAnnotation.depth > depthProperties) {\n newAnnotation.nestedAnnotations.push(existingAnnotation);\n annotationsBuffer.splice(i, 1);\n }\n }\n }\n }\n else {\n parsingContext.getUnidentifiedValueBufferSafe(depthProperties).push({ predicate, object, reverse, isEmbedded });\n }\n }\n }\n isPropertyHandler() {\n return true;\n }\n isStackProcessor() {\n return true;\n }\n async validate(parsingContext, util, keys, depth, inProperty) {\n const key = keys[depth];\n if (key) {\n const context = await parsingContext.getContext(keys);\n if (!parsingContext.jsonLiteralStack[depth] && await util.predicateToTerm(context, keys[depth])) {\n // If this valid predicate is of type @json, mark it so in the stack so that no deeper handling of nodes occurs.\n if (Util_1.Util.getContextValueType(context, key) === '@json') {\n parsingContext.jsonLiteralStack[depth + 1] = true;\n }\n return true;\n }\n }\n return false;\n }\n async test(parsingContext, util, key, keys, depth) {\n return keys[depth];\n }\n async handle(parsingContext, util, key, keys, value, depth, testResult) {\n const keyOriginal = keys[depth];\n const context = await parsingContext.getContext(keys);\n const predicate = await util.predicateToTerm(context, key);\n if (predicate) {\n const objects = await util.valueToTerm(context, key, value, depth, keys);\n if (objects.length) {\n for (let object of objects) {\n // Based on parent key, check if reverse, embedded, and annotation.\n let parentKey = await util.unaliasKeywordParent(keys, depth);\n const reverse = Util_1.Util.isPropertyReverse(context, keyOriginal, parentKey);\n let parentDepthOffset = 0;\n while (parentKey === '@reverse' || typeof parentKey === 'number') {\n // Check parent of parent when checking while we're in an array or in @reverse\n if (typeof parentKey === 'number') {\n parentDepthOffset++;\n }\n else {\n depth--;\n }\n parentKey = await util.unaliasKeywordParent(keys, depth - parentDepthOffset);\n }\n const isEmbedded = Util_1.Util.isPropertyInEmbeddedNode(parentKey);\n util.validateReverseInEmbeddedNode(key, reverse, isEmbedded);\n const isAnnotation = Util_1.Util.isPropertyInAnnotationObject(parentKey);\n if (value) {\n // Special case if our term was defined as an @list, but does not occur in an array,\n // In that case we just emit it as an RDF list with a single element.\n const listValueContainer = '@list' in Util_1.Util.getContextValueContainer(context, key);\n if (listValueContainer || value['@list']) {\n if (((listValueContainer && !Array.isArray(value) && !value['@list'])\n || (value['@list'] && !Array.isArray(value['@list'])))\n && object !== util.rdfNil) {\n const listPointer = util.dataFactory.blankNode();\n parsingContext.emitQuad(depth, util.dataFactory.quad(listPointer, util.rdfRest, util.rdfNil, util.getDefaultGraph()));\n parsingContext.emitQuad(depth, util.dataFactory.quad(listPointer, util.rdfFirst, object, util.getDefaultGraph()));\n object = listPointer;\n }\n // Lists are not allowed in @reverse'd properties\n if (reverse && !parsingContext.allowSubjectList) {\n throw new jsonld_context_parser_1.ErrorCoded(`Found illegal list value in subject position at ${key}`, jsonld_context_parser_1.ERROR_CODES.INVALID_REVERSE_PROPERTY_VALUE);\n }\n }\n }\n await EntryHandlerPredicate.handlePredicateObject(parsingContext, util, keys, depth, predicate, object, reverse, isEmbedded, isAnnotation);\n }\n }\n }\n }\n}\nexports.EntryHandlerPredicate = EntryHandlerPredicate;\n//# sourceMappingURL=EntryHandlerPredicate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerKeyword = void 0;\n/**\n * An abstract keyword entry handler.\n */\nclass EntryHandlerKeyword {\n constructor(keyword) {\n this.keyword = keyword;\n }\n isPropertyHandler() {\n return false;\n }\n isStackProcessor() {\n return true;\n }\n async validate(parsingContext, util, keys, depth, inProperty) {\n return false;\n }\n async test(parsingContext, util, key, keys, depth) {\n return key === this.keyword;\n }\n}\nexports.EntryHandlerKeyword = EntryHandlerKeyword;\n//# sourceMappingURL=EntryHandlerKeyword.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerKeywordAnnotation = void 0;\nconst EntryHandlerKeyword_1 = require(\"./EntryHandlerKeyword\");\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\n/**\n * Handles @annotation entries.\n */\nclass EntryHandlerKeywordAnnotation extends EntryHandlerKeyword_1.EntryHandlerKeyword {\n constructor() {\n super('@annotation');\n }\n async handle(parsingContext, util, key, keys, value, depth) {\n // Validate value\n if (typeof value === 'string' || (typeof value === 'object' && value['@value'])) {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found illegal annotation value: ${JSON.stringify(value)}`, jsonld_context_parser_1.ERROR_CODES.INVALID_ANNOTATION));\n }\n // Rest of the processing is done as regular nodes\n }\n}\nexports.EntryHandlerKeywordAnnotation = EntryHandlerKeywordAnnotation;\n//# sourceMappingURL=EntryHandlerKeywordAnnotation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerKeywordContext = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst EntryHandlerKeyword_1 = require(\"./EntryHandlerKeyword\");\n/**\n * Handles @context entries.\n */\nclass EntryHandlerKeywordContext extends EntryHandlerKeyword_1.EntryHandlerKeyword {\n constructor() {\n super('@context');\n }\n isStackProcessor() {\n return false;\n }\n async handle(parsingContext, util, key, keys, value, depth) {\n // Error if an out-of-order context was found when support is not enabled.\n if (parsingContext.streamingProfile\n && (parsingContext.processingStack[depth]\n || parsingContext.processingType[depth]\n || parsingContext.idStack[depth] !== undefined)) {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded('Found an out-of-order context, while streaming is enabled.' +\n '(disable `streamingProfile`)', jsonld_context_parser_1.ERROR_CODES.INVALID_STREAMING_KEY_ORDER));\n }\n // Find the parent context to inherit from.\n // We actually request a context for the current depth (with fallback to parent)\n // because we want to take into account any property-scoped contexts that are defined for this depth.\n const parentContext = parsingContext.getContext(keys);\n // Set the context for this scope\n const context = parsingContext.parseContext(value, (await parentContext).getContextRaw());\n parsingContext.contextTree.setContext(keys.slice(0, -1), context);\n parsingContext.emitContext(value);\n await parsingContext.validateContext(await context);\n }\n}\nexports.EntryHandlerKeywordContext = EntryHandlerKeywordContext;\n//# sourceMappingURL=EntryHandlerKeywordContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerKeywordGraph = void 0;\nconst EntryHandlerKeyword_1 = require(\"./EntryHandlerKeyword\");\n/**\n * Handles @graph entries.\n */\nclass EntryHandlerKeywordGraph extends EntryHandlerKeyword_1.EntryHandlerKeyword {\n constructor() {\n super('@graph');\n }\n async handle(parsingContext, util, key, keys, value, depth) {\n // The current identifier identifies a graph for the deeper level.\n parsingContext.graphStack[depth + 1] = true;\n }\n}\nexports.EntryHandlerKeywordGraph = EntryHandlerKeywordGraph;\n//# sourceMappingURL=EntryHandlerKeywordGraph.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerKeywordId = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst EntryHandlerKeyword_1 = require(\"./EntryHandlerKeyword\");\n/**\n * Handles @id entries.\n */\nclass EntryHandlerKeywordId extends EntryHandlerKeyword_1.EntryHandlerKeyword {\n constructor() {\n super('@id');\n }\n isStackProcessor() {\n return false;\n }\n async handle(parsingContext, util, key, keys, value, depth) {\n if (typeof value !== 'string') {\n // JSON-LD-star allows @id object values\n if (parsingContext.rdfstar && typeof value === 'object') {\n const valueKeys = Object.keys(value);\n if (valueKeys.length === 1 && valueKeys[0] === '@id') {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Invalid embedded node without property with @id ${value['@id']}`, jsonld_context_parser_1.ERROR_CODES.INVALID_EMBEDDED_NODE));\n }\n }\n else {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found illegal @id '${value}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_ID_VALUE));\n }\n return;\n }\n // Determine the canonical place for this id.\n // For example, @nest parents should be ignored.\n const depthProperties = await util.getPropertiesDepth(keys, depth);\n // Error if an @id for this node already existed.\n if (parsingContext.idStack[depthProperties] !== undefined) {\n if (parsingContext.idStack[depthProperties][0].listHead) {\n // Error if an @list was already defined for this node\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found illegal neighbouring entries next to @list for key: '${keys[depth - 1]}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_SET_OR_LIST_OBJECT));\n }\n else {\n // Otherwise, the previous id was just because of an @id entry.\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found duplicate @ids '${parsingContext\n .idStack[depthProperties][0].value}' and '${value}'`, jsonld_context_parser_1.ERROR_CODES.COLLIDING_KEYWORDS));\n }\n }\n // Error if an annotation was defined\n if (parsingContext.rdfstar && parsingContext.annotationsBuffer[depth]) {\n for (const annotation of parsingContext.annotationsBuffer[depth]) {\n if (annotation.depth === depth) {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found an illegal @id inside an annotation: ${value}`, jsonld_context_parser_1.ERROR_CODES.INVALID_ANNOTATION));\n }\n }\n }\n // Save our @id on the stack\n parsingContext.idStack[depthProperties] = util.nullableTermToArray(await util.resourceToTerm(await parsingContext.getContext(keys), value));\n }\n}\nexports.EntryHandlerKeywordId = EntryHandlerKeywordId;\n//# sourceMappingURL=EntryHandlerKeywordId.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerKeywordIncluded = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst EntryHandlerKeyword_1 = require(\"./EntryHandlerKeyword\");\n/**\n * Handles @included entries.\n */\nclass EntryHandlerKeywordIncluded extends EntryHandlerKeyword_1.EntryHandlerKeyword {\n constructor() {\n super('@included');\n }\n async handle(parsingContext, util, key, keys, value, depth) {\n if (typeof value !== 'object') {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found illegal @included '${value}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_INCLUDED_VALUE));\n }\n const valueUnliased = await util.unaliasKeywords(value, keys, depth, await parsingContext.getContext(keys));\n if ('@value' in valueUnliased) {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found an illegal @included @value node '${JSON.stringify(value)}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_INCLUDED_VALUE));\n }\n if ('@list' in valueUnliased) {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found an illegal @included @list node '${JSON.stringify(value)}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_INCLUDED_VALUE));\n }\n parsingContext.emittedStack[depth] = false;\n }\n}\nexports.EntryHandlerKeywordIncluded = EntryHandlerKeywordIncluded;\n//# sourceMappingURL=EntryHandlerKeywordIncluded.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerKeywordNest = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst EntryHandlerKeyword_1 = require(\"./EntryHandlerKeyword\");\n/**\n * Handles @nest entries.\n */\nclass EntryHandlerKeywordNest extends EntryHandlerKeyword_1.EntryHandlerKeyword {\n constructor() {\n super('@nest');\n }\n async handle(parsingContext, util, key, keys, value, depth) {\n if (typeof value !== 'object') {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found invalid @nest entry for '${key}': '${value}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_NEST_VALUE));\n }\n if ('@value' in await util.unaliasKeywords(value, keys, depth, await parsingContext.getContext(keys))) {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found an invalid @value node for '${key}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_NEST_VALUE));\n }\n parsingContext.emittedStack[depth] = false;\n }\n}\nexports.EntryHandlerKeywordNest = EntryHandlerKeywordNest;\n//# sourceMappingURL=EntryHandlerKeywordNest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerKeywordType = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst Util_1 = require(\"../../Util\");\nconst EntryHandlerPredicate_1 = require(\"../EntryHandlerPredicate\");\nconst EntryHandlerKeyword_1 = require(\"./EntryHandlerKeyword\");\n/**\n * Handles @graph entries.\n */\nclass EntryHandlerKeywordType extends EntryHandlerKeyword_1.EntryHandlerKeyword {\n constructor() {\n super('@type');\n }\n isStackProcessor() {\n return false;\n }\n async handle(parsingContext, util, key, keys, value, depth) {\n const keyOriginal = keys[depth];\n // The current identifier identifies an rdf:type predicate.\n // But we only emit it once the node closes,\n // as it's possible that the @type is used to identify the datatype of a literal, which we ignore here.\n const context = await parsingContext.getContext(keys);\n const predicate = util.rdfType;\n const parentKey = await util.unaliasKeywordParent(keys, depth);\n const reverse = Util_1.Util.isPropertyReverse(context, keyOriginal, parentKey);\n const isEmbedded = Util_1.Util.isPropertyInEmbeddedNode(parentKey);\n util.validateReverseInEmbeddedNode(key, reverse, isEmbedded);\n const isAnnotation = Util_1.Util.isPropertyInAnnotationObject(parentKey);\n // Handle multiple values if the value is an array\n const elements = Array.isArray(value) ? value : [value];\n for (const element of elements) {\n if (typeof element !== 'string') {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Found illegal @type '${element}'`, jsonld_context_parser_1.ERROR_CODES.INVALID_TYPE_VALUE));\n }\n const type = util.createVocabOrBaseTerm(context, element);\n if (type) {\n await EntryHandlerPredicate_1.EntryHandlerPredicate.handlePredicateObject(parsingContext, util, keys, depth, predicate, type, reverse, isEmbedded, isAnnotation);\n }\n }\n // Collect type-scoped contexts if they exist\n let scopedContext = Promise.resolve(context);\n let hasTypedScopedContext = false;\n for (const element of elements.sort()) { // Spec requires lexicographical ordering\n const typeContext = Util_1.Util.getContextValue(context, '@context', element, null);\n if (typeContext) {\n hasTypedScopedContext = true;\n scopedContext = scopedContext.then((c) => parsingContext.parseContext(typeContext, c.getContextRaw()));\n }\n }\n // Error if an out-of-order type-scoped context was found when support is not enabled.\n if (parsingContext.streamingProfile\n && (hasTypedScopedContext || !parsingContext.streamingProfileAllowOutOfOrderPlainType)\n && (parsingContext.processingStack[depth] || parsingContext.idStack[depth])) {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded('Found an out-of-order type-scoped context, while streaming is enabled.' +\n '(disable `streamingProfile`)', jsonld_context_parser_1.ERROR_CODES.INVALID_STREAMING_KEY_ORDER));\n }\n // If at least least one type-scoped context applies, set them in the tree.\n if (hasTypedScopedContext) {\n // Do not propagate by default\n scopedContext = scopedContext.then((c) => {\n // Set the original context at this depth as a fallback\n // This is needed when a context was already defined at the given depth,\n // and this context needs to remain accessible from child nodes when propagation is disabled.\n if (c.getContextRaw()['@propagate'] !== true) {\n return new jsonld_context_parser_1.JsonLdContextNormalized(Object.assign(Object.assign({}, c.getContextRaw()), { '@propagate': false, '@__propagateFallback': context.getContextRaw() }));\n }\n return c;\n });\n // Set the new context in the context tree\n parsingContext.contextTree.setContext(keys.slice(0, keys.length - 1), scopedContext);\n }\n // Flag that type has been processed at this depth\n parsingContext.processingType[depth] = true;\n }\n}\nexports.EntryHandlerKeywordType = EntryHandlerKeywordType;\n//# sourceMappingURL=EntryHandlerKeywordType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerKeywordUnknownFallback = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\n/**\n * A catch-all for keywords, that will either emit an error or ignore,\n * depending on whether or not the `strictValues` property is set.\n */\nclass EntryHandlerKeywordUnknownFallback {\n isPropertyHandler() {\n return false;\n }\n isStackProcessor() {\n return true;\n }\n async validate(parsingContext, util, keys, depth, inProperty) {\n const key = await util.unaliasKeyword(keys[depth], keys, depth);\n if (jsonld_context_parser_1.Util.isPotentialKeyword(key)) {\n // Don't emit anything inside free-floating lists\n if (!inProperty) {\n if (key === '@list') {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n async test(parsingContext, util, key, keys, depth) {\n return jsonld_context_parser_1.Util.isPotentialKeyword(key);\n }\n async handle(parsingContext, util, key, keys, value, depth) {\n const keywordType = EntryHandlerKeywordUnknownFallback.VALID_KEYWORDS_TYPES[key];\n if (keywordType !== undefined) {\n if (keywordType && typeof value !== keywordType.type) {\n parsingContext.emitError(new jsonld_context_parser_1.ErrorCoded(`Invalid value type for '${key}' with value '${value}'`, keywordType.errorCode));\n }\n }\n else if (parsingContext.strictValues) {\n parsingContext.emitError(new Error(`Unknown keyword '${key}' with value '${value}'`));\n }\n parsingContext.emittedStack[depth] = false;\n }\n}\nEntryHandlerKeywordUnknownFallback.VALID_KEYWORDS_TYPES = {\n '@index': { type: 'string', errorCode: jsonld_context_parser_1.ERROR_CODES.INVALID_INDEX_VALUE },\n '@list': null,\n '@reverse': { type: 'object', errorCode: jsonld_context_parser_1.ERROR_CODES.INVALID_REVERSE_VALUE },\n '@set': null,\n '@value': null,\n};\nexports.EntryHandlerKeywordUnknownFallback = EntryHandlerKeywordUnknownFallback;\n//# sourceMappingURL=EntryHandlerKeywordUnknownFallback.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EntryHandlerKeywordValue = void 0;\nconst EntryHandlerKeyword_1 = require(\"./EntryHandlerKeyword\");\n/**\n * Handles @value entries.\n */\nclass EntryHandlerKeywordValue extends EntryHandlerKeyword_1.EntryHandlerKeyword {\n constructor() {\n super('@value');\n }\n async validate(parsingContext, util, keys, depth, inProperty) {\n // If this is @value, mark it so in the stack so that no deeper handling of nodes occurs.\n const key = keys[depth];\n if (key && !parsingContext.literalStack[depth] && await this.test(parsingContext, util, key, keys, depth)) {\n parsingContext.literalStack[depth] = true;\n }\n return super.validate(parsingContext, util, keys, depth, inProperty);\n }\n async test(parsingContext, util, key, keys, depth) {\n return await util.unaliasKeyword(keys[depth], keys.slice(0, keys.length - 1), depth - 1, true) === '@value';\n }\n async handle(parsingContext, util, key, keys, value, depth) {\n // If the value is valid, indicate that we are processing a literal.\n // The actual value will be determined at the parent level when the @value is part of an object,\n // because we may want to take into account additional entries such as @language.\n // See {@link Util.valueToTerm}\n // Indicate that we are processing a literal, and that no later predicates should be parsed at this depth.\n parsingContext.literalStack[depth] = true;\n // Void any buffers that we may have accumulated up until now\n delete parsingContext.unidentifiedValuesBuffer[depth];\n delete parsingContext.unidentifiedGraphsBuffer[depth];\n // Indicate that we have not emitted at this depth\n parsingContext.emittedStack[depth] = false;\n }\n}\nexports.EntryHandlerKeywordValue = EntryHandlerKeywordValue;\n//# sourceMappingURL=EntryHandlerKeywordValue.js.map","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (object === null || typeof object !== 'object' || object.toJSON != null) {\n return JSON.stringify(object);\n }\n\n if (Array.isArray(object)) {\n return '[' + object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return t + comma + serialize(value);\n }, '') + ']';\n }\n\n return '{' + Object.keys(object).sort().reduce((t, cv, ci) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return t + comma + serialize(cv) + ':' + serialize(object[cv]);\n }, '') + '}';\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/JsonLdSerializer\"), exports);\n__exportStar(require(\"./lib/Util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonLdSerializer = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst SeparatorType_1 = require(\"./SeparatorType\");\nconst Util_1 = require(\"./Util\");\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * A stream transformer that transforms an {@link RDF.Stream} into a JSON-LD (text) stream.\n */\nclass JsonLdSerializer extends readable_stream_1.Transform {\n constructor(options = {}) {\n super({ objectMode: true });\n this.indentation = 0;\n this.options = options;\n // Parse the context\n if (this.options.baseIRI && !this.options.context) {\n this.options.context = { '@base': this.options.baseIRI };\n }\n if (this.options.context) {\n this.originalContext = this.options.context;\n this.context = new jsonld_context_parser_1.ContextParser().parse(this.options.context, { baseIRI: this.options.baseIRI });\n }\n else {\n this.context = Promise.resolve(new jsonld_context_parser_1.JsonLdContextNormalized({}));\n }\n }\n /**\n * Parses the given text stream into a quad stream.\n * @param {NodeJS.EventEmitter} stream A text stream.\n * @return {NodeJS.EventEmitter} A quad stream.\n */\n import(stream) {\n const output = new readable_stream_1.PassThrough({ objectMode: true });\n stream.on('error', (error) => parsed.emit('error', error));\n stream.on('data', (data) => output.push(data));\n stream.on('end', () => output.push(null));\n const parsed = output.pipe(new JsonLdSerializer(this.options));\n return parsed;\n }\n /**\n * Transforms a quad into the text stream.\n * @param {Quad} quad An RDF quad.\n * @param {string} encoding An (ignored) encoding.\n * @param {module:stream.internal.TransformCallback} callback Callback that is invoked when the transformation is done\n * @private\n */\n _transform(quad, encoding, callback) {\n this.context.then((context) => {\n this.transformQuad(quad, context);\n callback();\n }).catch(callback);\n }\n /**\n * Construct a list in an RDF.Term object that can be used\n * inside a quad's object to write into the serializer\n * as a list using the @list keyword.\n * @param {RDF.Quad_Object[]} values A list of values, can be empty.\n * @return {RDF.Quad_Object} A term that should be used in the object position of the quad that is written to the serializer.\n */\n async list(values) {\n const context = await this.context;\n return {\n '@list': values.map((value) => Util_1.Util.termToValue(value, context, this.options)),\n };\n }\n /**\n * Called when the incoming stream is closed.\n * @param {module:stream.internal.TransformCallback} callback Callback that is invoked when the flushing is done.\n * @private\n */\n _flush(callback) {\n // If the stream was empty, ensure that we push the opening array\n if (!this.opened) {\n this.pushDocumentStart();\n }\n if (this.lastPredicate) {\n this.endPredicate();\n }\n if (this.lastSubject) {\n this.endSubject();\n }\n if (this.lastGraph && this.lastGraph.termType !== 'DefaultGraph') {\n this.endGraph();\n }\n this.endDocument();\n return callback(null, null);\n }\n /**\n * Transforms a quad into the text stream.\n * @param {Quad} quad An RDF quad.\n * @param {JsonLdContextNormalized} context A context for compacting.\n */\n transformQuad(quad, context) {\n // Open the array before the first quad\n if (!this.opened) {\n this.pushDocumentStart();\n }\n // Check if the subject equals the last named graph\n // In that case, we can reuse the already-existing @id node\n const lastGraphMatchesSubject = this.lastGraph && this.lastGraph.termType !== 'DefaultGraph'\n && this.lastGraph.equals(quad.subject);\n // Write graph\n if (!lastGraphMatchesSubject && (!this.lastGraph || !quad.graph.equals(this.lastGraph))) {\n // Check if the named graph equals the last subject\n // In that case, we can reuse the already-existing @id node\n let lastSubjectMatchesGraph = quad.graph.termType !== 'DefaultGraph'\n && this.lastSubject && this.lastSubject.equals(quad.graph);\n if (this.lastGraph) {\n if (this.lastGraph.termType !== 'DefaultGraph') {\n // The last graph was named\n this.endPredicate();\n this.endSubject();\n this.endGraph(true);\n lastSubjectMatchesGraph = false; // Special-case to avoid deeper nesting\n }\n else {\n // The last graph was default\n if (!lastSubjectMatchesGraph) {\n this.endPredicate();\n this.endSubject(true);\n }\n else {\n this.endPredicate(true);\n this.lastSubject = null;\n }\n }\n }\n // Push the graph\n if (quad.graph.termType !== 'DefaultGraph') {\n if (!lastSubjectMatchesGraph) {\n this.pushId(quad.graph, true, context);\n }\n this.pushSeparator(this.options.space\n ? SeparatorType_1.SeparatorType.GRAPH_FIELD_NONCOMPACT : SeparatorType_1.SeparatorType.GRAPH_FIELD_COMPACT);\n this.indentation++;\n }\n this.lastGraph = quad.graph;\n }\n // Write subject\n if (!this.lastSubject || !quad.subject.equals(this.lastSubject)) {\n if (lastGraphMatchesSubject) {\n this.endPredicate();\n this.endSubject();\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END_COMMA);\n this.lastGraph = quad.graph;\n }\n else {\n if (this.lastSubject) {\n this.endPredicate();\n this.endSubject(true);\n }\n // Open a new node for the new subject\n this.pushId(quad.subject, true, context);\n }\n this.lastSubject = quad.subject;\n }\n // Write predicate\n if (!this.lastPredicate || !quad.predicate.equals(this.lastPredicate)) {\n if (this.lastPredicate) {\n this.endPredicate(true);\n }\n // Open a new array for the new predicate\n this.pushPredicate(quad.predicate, context);\n }\n // Write the object value\n this.pushObject(quad.object, context);\n }\n pushDocumentStart() {\n this.opened = true;\n if (this.originalContext && !this.options.excludeContext) {\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_START);\n this.indentation++;\n this.pushSeparator(SeparatorType_1.SeparatorType.CONTEXT_FIELD);\n this.pushIndented(JSON.stringify(this.originalContext, null, this.options.space) + ',');\n this.pushSeparator(this.options.space\n ? SeparatorType_1.SeparatorType.GRAPH_FIELD_NONCOMPACT : SeparatorType_1.SeparatorType.GRAPH_FIELD_COMPACT);\n this.indentation++;\n }\n else {\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_START);\n this.indentation++;\n }\n }\n /**\n * Push the given term as an @id field.\n * @param {Term} term An RDF term.\n * @param startOnNewLine If `{` should start on a new line\n * @param {JsonLdContextNormalized} context The context.\n */\n pushId(term, startOnNewLine, context) {\n if (term.termType === 'Quad') {\n this.pushNestedQuad(term, true, context);\n }\n else {\n const subjectValue = term.termType === 'BlankNode'\n ? '_:' + term.value : context.compactIri(term.value, false);\n if (startOnNewLine) {\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_START);\n }\n else {\n this.push(SeparatorType_1.SeparatorType.OBJECT_START.label);\n if (this.options.space) {\n this.push('\\n');\n }\n }\n this.indentation++;\n this.pushIndented(this.options.space ? `\"@id\": \"${subjectValue}\",` : `\"@id\":\"${subjectValue}\",`);\n }\n }\n /**\n * Push the given predicate field.\n * @param {Term} predicate An RDF term.\n * @param {JsonLdContextNormalized} context The context.\n */\n pushPredicate(predicate, context) {\n let property = predicate.value;\n // Convert rdf:type into @type if not disabled.\n if (!this.options.useRdfType && property === Util_1.Util.RDF_TYPE) {\n property = '@type';\n this.objectOptions = Object.assign(Object.assign({}, this.options), { compactIds: true, vocab: true });\n }\n // Open array for following objects\n const compactedProperty = context.compactIri(property, true);\n this.pushIndented(this.options.space ? `\"${compactedProperty}\": [` : `\"${compactedProperty}\":[`);\n this.indentation++;\n this.lastPredicate = predicate;\n }\n /**\n * Push the given object value.\n * @param {Term} object An RDF term.\n * @param {JsonLdContextNormalized} context The context.\n */\n pushObject(object, context) {\n // Add a comma if we already had an object for this predicate\n if (!this.hadObjectForPredicate) {\n this.hadObjectForPredicate = true;\n }\n else {\n this.pushSeparator(SeparatorType_1.SeparatorType.COMMA);\n }\n // Handle nested quad\n if (object.termType === 'Quad') {\n const lastLastSubject = this.lastSubject;\n const lastLastPredicate = this.lastPredicate;\n this.hadObjectForPredicate = false;\n this.pushNestedQuad(object, false, context);\n this.endSubject(false); // Terminate identifier node of nested quad again, since we won't attach additional information to it.\n this.hadObjectForPredicate = true;\n this.lastPredicate = lastLastPredicate;\n this.lastSubject = lastLastSubject;\n return;\n }\n // Convert the object into a value and push it\n let value;\n try {\n if (object['@list']) {\n value = object;\n }\n else {\n value = Util_1.Util.termToValue(object, context, this.objectOptions || this.options);\n }\n }\n catch (e) {\n return this.emit('error', e);\n }\n this.pushIndented(JSON.stringify(value, null, this.options.space));\n }\n pushNestedQuad(nestedQuad, commaAfterSubject, context) {\n // Start a nested quad\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_START);\n this.indentation++;\n this.pushIndented(this.options.space ? `\"@id\": ` : `\"@id\":`, false);\n // Print the nested quad\n if (nestedQuad.graph.termType !== 'DefaultGraph') {\n this.emit('error', new Error(`Found a nested quad with the non-default graph: ${nestedQuad.graph.value}`));\n }\n this.pushId(nestedQuad.subject, false, context);\n this.pushPredicate(nestedQuad.predicate, context);\n this.pushObject(nestedQuad.object, context);\n this.endPredicate(false);\n this.endSubject(commaAfterSubject);\n }\n endDocument() {\n this.opened = false;\n if (this.originalContext && !this.options.excludeContext) {\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END);\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.OBJECT_END);\n }\n else {\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END);\n }\n }\n /**\n * Push the end of a predicate and reset the buffers.\n * @param {boolean} comma If a comma should be appended.\n */\n endPredicate(comma) {\n // Close the predicate array\n this.indentation--;\n this.pushSeparator(comma ? SeparatorType_1.SeparatorType.ARRAY_END_COMMA : SeparatorType_1.SeparatorType.ARRAY_END);\n // Reset object buffer\n this.hadObjectForPredicate = false;\n this.objectOptions = null;\n // Reset predicate buffer\n this.lastPredicate = null;\n }\n /**\n * Push the end of a subject and reset the buffers.\n * @param {boolean} comma If a comma should be appended.\n */\n endSubject(comma) {\n // Close the last subject's node;\n this.indentation--;\n this.pushSeparator(comma ? SeparatorType_1.SeparatorType.OBJECT_END_COMMA : SeparatorType_1.SeparatorType.OBJECT_END);\n // Reset subject buffer\n this.lastSubject = null;\n }\n /**\n * Push the end of a graph and reset the buffers.\n * @param {boolean} comma If a comma should be appended.\n */\n endGraph(comma) {\n // Close the graph array\n this.indentation--;\n this.pushSeparator(SeparatorType_1.SeparatorType.ARRAY_END);\n // Close the graph id node\n this.indentation--;\n this.pushSeparator(comma ? SeparatorType_1.SeparatorType.OBJECT_END_COMMA : SeparatorType_1.SeparatorType.OBJECT_END);\n // Reset graph buffer\n this.lastGraph = null;\n }\n /**\n * Puh the given separator.\n * @param {SeparatorType} type A type of separator.\n */\n pushSeparator(type) {\n this.pushIndented(type.label);\n }\n /**\n * An indentation-aware variant of {@link #push}.\n * All strings that are pushed here will be prefixed by {@link #indentation} amount of spaces.\n * @param {string} data A string.\n * @param pushNewLine If a newline should be pushed afterwards.\n */\n pushIndented(data, pushNewLine = true) {\n const prefix = this.getIndentPrefix();\n const lines = data.split('\\n').map((line) => prefix + line).join('\\n');\n this.push(lines);\n if (this.options.space && pushNewLine) {\n this.push('\\n');\n }\n }\n /**\n * @return {string} Get the current indentation prefix based on {@link #indentation}.\n */\n getIndentPrefix() {\n return this.options.space ? this.options.space.repeat(this.indentation) : '';\n }\n}\nexports.JsonLdSerializer = JsonLdSerializer;\n//# sourceMappingURL=JsonLdSerializer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SeparatorType = void 0;\n/**\n * A type of JSON separator.\n */\nclass SeparatorType {\n constructor(label) {\n this.label = label;\n }\n}\nexports.SeparatorType = SeparatorType;\nSeparatorType.COMMA = new SeparatorType(',');\nSeparatorType.OBJECT_START = new SeparatorType('{');\nSeparatorType.OBJECT_END = new SeparatorType('}');\nSeparatorType.OBJECT_END_COMMA = new SeparatorType('},');\nSeparatorType.ARRAY_START = new SeparatorType('[');\nSeparatorType.ARRAY_END = new SeparatorType(']');\nSeparatorType.ARRAY_END_COMMA = new SeparatorType('],');\nSeparatorType.GRAPH_FIELD_NONCOMPACT = new SeparatorType('\"@graph\": [');\nSeparatorType.GRAPH_FIELD_COMPACT = new SeparatorType('\"@graph\":[');\nSeparatorType.CONTEXT_FIELD = new SeparatorType('\"@context\":');\n//# sourceMappingURL=SeparatorType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = void 0;\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\n/**\n * Utility functions and methods.\n */\nclass Util {\n /**\n * Convert an RDF term to a JSON value.\n * @param {Term} term An RDF term.\n * @param {JsonLdContextNormalized} context The context.\n * @param {ITermToValueOptions} options Conversion options.\n * @return {any} A JSON value.\n */\n static termToValue(term, context, options = {\n compactIds: false,\n useNativeTypes: false,\n }) {\n switch (term.termType) {\n case 'NamedNode':\n const compacted = context.compactIri(term.value, options.vocab);\n return options.compactIds ? compacted : { '@id': compacted };\n case 'DefaultGraph':\n return options.compactIds ? term.value : { '@id': term.value };\n case 'BlankNode':\n const id = `_:${term.value}`;\n return options.compactIds ? id : { '@id': id };\n case 'Literal':\n // Handle JSON datatype\n if (term.datatype.value === Util.RDF_JSON) {\n let parsedJson;\n try {\n parsedJson = JSON.parse(term.value);\n }\n catch (e) {\n throw new jsonld_context_parser_1.ErrorCoded('Invalid JSON literal: ' + e.message, jsonld_context_parser_1.ERROR_CODES.INVALID_JSON_LITERAL);\n }\n return {\n '@value': parsedJson,\n '@type': '@json',\n };\n }\n // Handle rdfDirection: i18n-datatype\n if (options.rdfDirection === 'i18n-datatype' && term.datatype.value.startsWith(Util.I18N)) {\n const [language, direction] = term.datatype.value\n .substr(Util.I18N.length, term.datatype.value.length)\n .split('_');\n return Object.assign(Object.assign({ '@value': term.value }, language ? { '@language': language } : {}), direction ? { '@direction': direction } : {});\n }\n const stringType = term.datatype.value === Util.XSD_STRING;\n const rawValue = {\n '@value': !stringType && options.useNativeTypes\n ? Util.stringToNativeType(term.value, term.datatype.value) : term.value,\n };\n if (term.language) {\n return Object.assign(Object.assign({}, rawValue), { '@language': term.language });\n }\n else if (!stringType && typeof rawValue['@value'] === 'string') {\n return Object.assign(Object.assign({}, rawValue), { '@type': term.datatype.value });\n }\n else {\n return rawValue;\n }\n }\n }\n /**\n * Convert a string term to a native type.\n * If no conversion is possible, the original string will be returned.\n * @param {string} value An RDF term's string value.\n * @param {string} type\n * @return {any}\n */\n static stringToNativeType(value, type) {\n if (type.startsWith(Util.XSD)) {\n const xsdType = type.substr(Util.XSD.length);\n switch (xsdType) {\n case 'boolean':\n if (value === 'true') {\n return true;\n }\n else if (value === 'false') {\n return false;\n }\n throw new Error(`Invalid xsd:boolean value '${value}'`);\n case 'integer':\n case 'number':\n case 'int':\n case 'byte':\n case 'long':\n const parsedInt = parseInt(value, 10);\n if (isNaN(parsedInt)) {\n throw new Error(`Invalid xsd:integer value '${value}'`);\n }\n return parsedInt;\n case 'float':\n case 'double':\n const parsedFloat = parseFloat(value);\n if (isNaN(parsedFloat)) {\n throw new Error(`Invalid xsd:float value '${value}'`);\n }\n return parsedFloat;\n }\n }\n return value;\n }\n}\nexports.Util = Util;\nUtil.XSD = 'http://www.w3.org/2001/XMLSchema#';\nUtil.XSD_STRING = Util.XSD + 'string';\nUtil.RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';\nUtil.RDF_TYPE = Util.RDF + 'type';\nUtil.RDF_JSON = Util.RDF + 'JSON';\nUtil.I18N = 'https://www.w3.org/ns/i18n#';\n//# sourceMappingURL=Util.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/propertyhandler/IItemPropertyHandler\"), exports);\n__exportStar(require(\"./lib/propertyhandler/ItemPropertyHandlerContent\"), exports);\n__exportStar(require(\"./lib/propertyhandler/ItemPropertyHandlerNumber\"), exports);\n__exportStar(require(\"./lib/propertyhandler/ItemPropertyHandlerTime\"), exports);\n__exportStar(require(\"./lib/propertyhandler/ItemPropertyHandlerUrl\"), exports);\n__exportStar(require(\"./lib/IHtmlParseListener\"), exports);\n__exportStar(require(\"./lib/IItemScope\"), exports);\n__exportStar(require(\"./lib/IVocabRegistry\"), exports);\n__exportStar(require(\"./lib/MicrodataRdfParser\"), exports);\n__exportStar(require(\"./lib/Util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IHtmlParseListener.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IItemScope.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IVocabRegistry.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MicrodataRdfParser = void 0;\nconst htmlparser2_1 = require(\"htmlparser2\");\nconst readable_stream_1 = require(\"readable-stream\");\nconst ItemPropertyHandlerContent_1 = require(\"./propertyhandler/ItemPropertyHandlerContent\");\nconst ItemPropertyHandlerNumber_1 = require(\"./propertyhandler/ItemPropertyHandlerNumber\");\nconst ItemPropertyHandlerTime_1 = require(\"./propertyhandler/ItemPropertyHandlerTime\");\nconst ItemPropertyHandlerUrl_1 = require(\"./propertyhandler/ItemPropertyHandlerUrl\");\nconst Util_1 = require(\"./Util\");\nconst VOCAB_REGISTRY_DEFAULT = require(\"./vocab-registry-default.json\");\n/**\n * A stream transformer that parses Microdata (text) streams to an {@link RDF.Stream}.\n */\nclass MicrodataRdfParser extends readable_stream_1.Transform {\n constructor(options) {\n super({ readableObjectMode: true });\n // Stacks, where the key is the current depth.\n this.itemScopeStack = [];\n this.textBufferStack = [];\n // Variables for managing itemrefs.\n this.isEmittingReferences = false;\n this.pendingItemRefsDomain = {};\n this.pendingItemRefsRangeFinalized = {};\n // eslint-disable-next-line lines-between-class-members\n this.pendingItemRefsRangeCollecting = {};\n options = options || {};\n this.options = options;\n this.util = new Util_1.Util(options.dataFactory, options.baseIRI);\n this.defaultGraph = options.defaultGraph || this.util.dataFactory.defaultGraph();\n this.htmlParseListener = options.htmlParseListener;\n this.vocabRegistry = options.vocabRegistry || VOCAB_REGISTRY_DEFAULT;\n this.parser = this.initializeParser(!!options.xmlMode);\n }\n /**\n * Parses the given text stream into a quad stream.\n * @param {NodeJS.EventEmitter} stream A text stream.\n * @return {RDF.Stream} A quad stream.\n */\n import(stream) {\n const output = new readable_stream_1.PassThrough({ readableObjectMode: true });\n stream.on('error', (error) => parsed.emit('error', error));\n stream.on('data', (data) => output.push(data));\n stream.on('end', () => output.push(null));\n const parsed = output.pipe(new MicrodataRdfParser(this.options));\n return parsed;\n }\n _transform(chunk, encoding, callback) {\n this.parser.write(chunk.toString());\n callback();\n }\n _flush(callback) {\n this.parser.end();\n callback();\n }\n /**\n * Get the current item scope for the current depth.\n * This will skip all undefined item scopes.\n * @param parent If we should start looking one level higher in the stack.\n */\n getItemScope(parent) {\n let parentTagI = this.itemScopeStack.length - (parent ? 2 : 1);\n while (parentTagI > 0 && !this.itemScopeStack[parentTagI]) {\n parentTagI--;\n }\n return this.itemScopeStack[parentTagI];\n }\n /**\n * Get the current stack depth.\n */\n getDepth() {\n return this.itemScopeStack.length;\n }\n onTagOpen(name, attributes) {\n if (!this.isEmittingReferences) {\n // If the tag has an 'id', start collecting the whole stack in the item reference buffer\n if ('id' in attributes) {\n const id = attributes.id;\n this.pendingItemRefsRangeCollecting[id] = {\n events: [],\n counter: 0,\n ids: [],\n };\n }\n // Store this event in all collecting item reference buffers\n for (const buffer of Object.values(this.pendingItemRefsRangeCollecting)) {\n buffer.counter++;\n buffer.events.push({ type: 'open', name, attributes });\n }\n }\n // Ensure the text buffer stack is in line with the stack depth\n this.textBufferStack.push(undefined);\n // Processing steps based on https://w3c.github.io/microdata-rdf/#rdf-conversion-algorithm\n // 1. Determine the current item scope\n let itemScope;\n if ('itemscope' in attributes) {\n // Create a new item scope\n let subject;\n if (this.emittingReferencesItemScopeIdGenerator) {\n subject = this.emittingReferencesItemScopeIdGenerator();\n }\n else {\n subject = 'itemid' in attributes && this.util.createSubject(attributes.itemid) ||\n this.util.dataFactory.blankNode();\n // Store the genererated id in all collecting item reference buffers\n for (const buffer of Object.values(this.pendingItemRefsRangeCollecting)) {\n buffer.ids.push(subject);\n }\n }\n itemScope = { subject };\n // If the id was reused from a reference, block any new triples to be generated from it\n if (this.isEmittingReferences) {\n itemScope.blockEmission = true;\n }\n // Inherit vocab from parent item scope\n const parentItemScope = this.getItemScope();\n if (parentItemScope && parentItemScope.vocab) {\n itemScope.vocab = parentItemScope.vocab;\n }\n // 2. Push any changes to the item scope to the stack\n this.itemScopeStack.push(itemScope);\n }\n else {\n // Determine the parent item scope\n itemScope = this.getItemScope();\n // 2. Push any changes to the item scope to the stack\n this.itemScopeStack.push(undefined);\n }\n // If we have a valid item scope, process the current node\n if (itemScope) {\n // 3. Handle item types\n if ('itemtype' in attributes) {\n for (const type of this.util.createVocabIris(attributes.itemtype, itemScope, false)) {\n // 4. Vocab identifier is the first valid item\n if (!itemScope.vocab) {\n // 5. Modify vocab based on registry\n itemScope.vocab = this.util.deriveVocab(type.value, this.vocabRegistry);\n }\n // Emit item type\n if (!itemScope.blockEmission) {\n this.emitTriple(itemScope.subject, this.util.dataFactory.namedNode(`${Util_1.Util.RDF}type`), type);\n }\n }\n }\n // Save language in item scope\n if ('lang' in attributes) {\n itemScope.language = attributes.lang;\n }\n if ('xml:lang' in attributes) {\n itemScope.language = attributes['xml:lang'];\n }\n // Handle itemrefs (only if we also had an itemscope)\n // If we have an itemref, store it in our domain buffer.\n if ('itemscope' in attributes &&\n !this.isEmittingReferences && 'itemref' in attributes) {\n for (const reference of attributes.itemref.split(/\\s+/u)) {\n if (!(reference in this.pendingItemRefsDomain)) {\n this.pendingItemRefsDomain[reference] = [];\n }\n this.pendingItemRefsDomain[reference].push(itemScope);\n this.tryToEmitReferences(reference, itemScope);\n }\n }\n }\n // 6. Handle item properties\n if ('itemprop' in attributes) {\n this.handleItemProperties(attributes.itemprop, false, itemScope, name, attributes);\n }\n // Handle reverse item properties\n // https://w3c.github.io/microdata-rdf/#reverse-itemprop\n if ('itemprop-reverse' in attributes) {\n this.handleItemProperties(attributes['itemprop-reverse'], true, itemScope, name, attributes);\n }\n }\n onText(data) {\n // Store this event in all collecting item reference buffers\n if (!this.isEmittingReferences) {\n for (const buffer of Object.values(this.pendingItemRefsRangeCollecting)) {\n buffer.events.push({ type: 'text', data });\n }\n }\n // Save the text inside all item scopes that need to collect text\n for (const textBuffer of this.textBufferStack) {\n if (textBuffer) {\n textBuffer.push(data);\n }\n }\n }\n onTagClose() {\n // Store this event in all collecting item reference buffers\n if (!this.isEmittingReferences) {\n for (const [reference, buffer] of Object.entries(this.pendingItemRefsRangeCollecting)) {\n buffer.counter--;\n buffer.events.push({ type: 'close' });\n // Once the counter becomes zero, the tag is fully buffered, so we finalize it.\n if (buffer.counter === 0) {\n this.pendingItemRefsRangeFinalized[reference] = buffer;\n delete this.pendingItemRefsRangeCollecting[reference];\n // Try to emit this reference with buffered domain items\n this.tryToEmitReferences(reference);\n }\n }\n }\n // Emit all triples that were determined in the active tag\n const itemScope = this.getItemScope(true);\n if (itemScope) {\n const depth = this.getDepth();\n if (itemScope.predicates && depth in itemScope.predicates) {\n for (const [predicateKey, predicates] of Object.entries(itemScope.predicates[depth])) {\n // First check if we have a child item scope, otherwise get the text content\n // Safely cast textBufferStack, as it is always defined when itemScope.predicates is defined.\n const object = this.util.createLiteral(this.textBufferStack[depth].join(''), itemScope);\n this.emitPredicateTriples(itemScope, predicates, object, predicateKey === 'reverse');\n delete itemScope.predicates[depth][predicateKey];\n }\n }\n }\n // Remove the active tag from the stack\n this.itemScopeStack.pop();\n this.textBufferStack.pop();\n }\n onEnd() {\n // Nothing important should happen here.\n }\n /**\n * Initialize a new HtmlParser.\n * @param xmlMode If the parser should be setup in strict mode.\n */\n initializeParser(xmlMode) {\n return new htmlparser2_1.Parser({\n onclosetag: () => {\n try {\n this.onTagClose();\n if (this.htmlParseListener) {\n this.htmlParseListener.onTagClose();\n }\n }\n catch (error) {\n this.emit('error', error);\n }\n },\n onend: () => {\n try {\n this.onEnd();\n if (this.htmlParseListener) {\n this.htmlParseListener.onEnd();\n }\n }\n catch (error) {\n this.emit('error', error);\n }\n },\n onopentag: (name, attributes) => {\n try {\n this.onTagOpen(name, attributes);\n if (this.htmlParseListener) {\n this.htmlParseListener.onTagOpen(name, attributes);\n }\n }\n catch (error) {\n this.emit('error', error);\n }\n },\n ontext: (data) => {\n try {\n this.onText(data);\n if (this.htmlParseListener) {\n this.htmlParseListener.onText(data);\n }\n }\n catch (error) {\n this.emit('error', error);\n }\n },\n }, {\n decodeEntities: true,\n recognizeSelfClosing: true,\n xmlMode,\n });\n }\n /**\n * Handle the given item properties.\n * @param itempropValue The value of itemprop or itemprop-reverse.\n * @param reverse If the item properties are reversed (itemprop-reverse).\n * @param itemScope The current item scope.\n * @param tagName The current tag name.\n * @param tagAttributes The current tag attributes.\n */\n handleItemProperties(itempropValue, reverse, itemScope, tagName, tagAttributes) {\n const parentItemScope = this.getItemScope(true);\n if (parentItemScope) {\n // Set predicates in the scope, and handle them on tag close.\n const depth = this.getDepth();\n const predicates = this.util.createVocabIris(itempropValue, parentItemScope, true);\n if (!parentItemScope.predicates) {\n parentItemScope.predicates = {};\n }\n if (!parentItemScope.predicates[depth]) {\n parentItemScope.predicates[depth] = {};\n }\n const predicatesKey = reverse ? 'reverse' : 'forward';\n parentItemScope.predicates[depth][predicatesKey] = predicates;\n // Append rdf:type predicate if vocabulary expansion applies\n for (const vocabularyExpansionType of this.util.getVocabularyExpansionType(itempropValue, parentItemScope, this.vocabRegistry)) {\n predicates.push(vocabularyExpansionType);\n }\n // Check if a property handler that applies, forcefully use that as predicate value.\n // But DON'T call handlers in this prop is a direct (nested) itemscope.\n if (itemScope && 'itemscope' in tagAttributes) {\n this.emitPredicateTriples(parentItemScope, predicates, itemScope.subject, reverse);\n // Finalize the predicates, so text values do not apply to them.\n delete parentItemScope.predicates[depth][predicatesKey];\n }\n else {\n for (const handler of MicrodataRdfParser.ITEM_PROPERTY_HANDLERS) {\n if (handler.canHandle(tagName, tagAttributes)) {\n const object = handler.getObject(tagAttributes, this.util, parentItemScope);\n this.emitPredicateTriples(parentItemScope, predicates, object, reverse);\n // Finalize the predicates, so text values do not apply to them.\n delete parentItemScope.predicates[depth][predicatesKey];\n }\n }\n }\n // If no valid handler was found, indicate that we should collect text at this depth.\n if (parentItemScope.predicates[depth][predicatesKey]) {\n this.textBufferStack[depth] = [];\n }\n }\n }\n /**\n * Emit the given object for the given predicates.\n * @param itemScope The current item scope.\n * @param predicates An array of predicates.\n * @param object An object.\n * @param reverse If the triples should be reversed.\n */\n emitPredicateTriples(itemScope, predicates, object, reverse) {\n if (!itemScope.blockEmission) {\n for (const predicate of predicates) {\n if (reverse) {\n // Literals can not exist in subject position, so they must be ignored.\n if (object.termType !== 'Literal') {\n this.emitTriple(object, predicate, itemScope.subject);\n }\n }\n else {\n this.emitTriple(itemScope.subject, predicate, object);\n }\n }\n }\n }\n /**\n * Emit the given triple to the stream.\n * @param {Quad_Subject} subject A subject term.\n * @param {Quad_Predicate} predicate A predicate term.\n * @param {Quad_Object} object An object term.\n */\n emitTriple(subject, predicate, object) {\n this.push(this.util.dataFactory.quad(subject, predicate, object, this.defaultGraph));\n }\n /**\n * Attempt to emit all pending itemrefs for the given reference.\n * @param reference An item reference id.\n * @param itemScopeDomain An optional item scope. If defined, only refs from this scope will be emitted.\n */\n tryToEmitReferences(reference, itemScopeDomain) {\n const range = this.pendingItemRefsRangeFinalized[reference];\n if (range) {\n // Determine the item scope domains to emit\n let applicableItemScopes;\n if (itemScopeDomain) {\n applicableItemScopes = [itemScopeDomain];\n // Remove the item from the pending array\n // Element is guaranteed to exist in buffer\n const itemScopeDomainIndex = this.pendingItemRefsDomain[reference].indexOf(itemScopeDomain);\n this.pendingItemRefsDomain[reference].splice(itemScopeDomainIndex, 1);\n }\n else {\n applicableItemScopes = this.pendingItemRefsDomain[reference];\n // Remove all items from the pending array\n delete this.pendingItemRefsDomain[reference];\n }\n if (applicableItemScopes) {\n // Save the stack state\n const itemScopeStackOld = this.itemScopeStack;\n const textBufferStackOld = this.textBufferStack;\n this.isEmittingReferences = true;\n // For all applicable item scopes, emit the buffered events.\n for (const itemScope of applicableItemScopes) {\n this.itemScopeStack = [itemScope];\n this.textBufferStack = [undefined];\n const pendingIds = [...range.ids];\n this.emittingReferencesItemScopeIdGenerator = () => pendingIds.shift();\n for (const event of range.events) {\n switch (event.type) {\n case 'open':\n this.onTagOpen(event.name, event.attributes);\n break;\n case 'text':\n this.onText(event.data);\n break;\n case 'close':\n this.onTagClose();\n break;\n }\n }\n }\n // Restore the stack state\n this.emittingReferencesItemScopeIdGenerator = undefined;\n this.itemScopeStack = itemScopeStackOld;\n this.textBufferStack = textBufferStackOld;\n this.isEmittingReferences = false;\n }\n }\n }\n}\nexports.MicrodataRdfParser = MicrodataRdfParser;\nMicrodataRdfParser.ITEM_PROPERTY_HANDLERS = [\n new ItemPropertyHandlerContent_1.ItemPropertyHandlerContent(),\n new ItemPropertyHandlerUrl_1.ItemPropertyHandlerUrl('a', 'href'),\n new ItemPropertyHandlerUrl_1.ItemPropertyHandlerUrl('area', 'href'),\n new ItemPropertyHandlerUrl_1.ItemPropertyHandlerUrl('audio', 'src'),\n new ItemPropertyHandlerUrl_1.ItemPropertyHandlerUrl('embed', 'src'),\n new ItemPropertyHandlerUrl_1.ItemPropertyHandlerUrl('iframe', 'src'),\n new ItemPropertyHandlerUrl_1.ItemPropertyHandlerUrl('img', 'src'),\n new ItemPropertyHandlerUrl_1.ItemPropertyHandlerUrl('link', 'href'),\n new ItemPropertyHandlerUrl_1.ItemPropertyHandlerUrl('object', 'data'),\n new ItemPropertyHandlerUrl_1.ItemPropertyHandlerUrl('source', 'src'),\n new ItemPropertyHandlerUrl_1.ItemPropertyHandlerUrl('track', 'src'),\n new ItemPropertyHandlerUrl_1.ItemPropertyHandlerUrl('video', 'src'),\n new ItemPropertyHandlerNumber_1.ItemPropertyHandlerNumber('data', 'value'),\n new ItemPropertyHandlerNumber_1.ItemPropertyHandlerNumber('meter', 'value'),\n new ItemPropertyHandlerTime_1.ItemPropertyHandlerTime(),\n];\n//# sourceMappingURL=MicrodataRdfParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\n/**\n * A collection of utility functions.\n */\nclass Util {\n constructor(dataFactory, baseIRI) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.baseIRI = baseIRI || '';\n }\n /**\n * Check if the given IRI is valid.\n * @param {string} iri A potential IRI.\n * @return {boolean} If the given IRI is valid.\n */\n static isValidIri(iri) {\n return Util.IRI_REGEX.test(iri);\n }\n /**\n * Create vocab terms for the given terms attribute.\n *\n * Relative IRIs will be based on the active vocab or baseIRI if `allowRelativeIris` is true.\n *\n * @param {string} terms An attribute value.\n * @param {IItemScope} itemScope The active item scope.\n * @param {boolean} allowRelativeIris If relative IRIs are allowed.\n * @return {Term[]} The IRI terms.\n */\n createVocabIris(terms, itemScope, allowRelativeIris) {\n return terms.split(/\\s+/u)\n .filter(term => !!term)\n .map(property => {\n if (!Util.isValidIri(property)) {\n if (!allowRelativeIris) {\n return;\n }\n property = `${itemScope.vocab || `${this.baseIRI}#`}${property}`;\n }\n return this.dataFactory.namedNode(property);\n })\n .filter(term => !!term);\n }\n /**\n * Get the predicates for which the given itemprop value should cause vocabulary expansion.\n * @param terms An attribute value.\n * @param itemScope The active item scope.\n * @param vocabRegistry The active vocabulary registry.\n */\n getVocabularyExpansionType(terms, itemScope, vocabRegistry) {\n // Check the presence of subPropertyOf or equivalentProperty\n const parts = terms.split(/\\s+/u);\n if (parts.includes('subPropertyOf') || parts.includes('equivalentProperty')) {\n return [this.dataFactory.namedNode(`${Util.RDF}type`)];\n }\n // Check in the item scope's vocab\n if (itemScope.vocab && itemScope.vocab in vocabRegistry && vocabRegistry[itemScope.vocab].properties) {\n let predicates = [];\n for (const [property, expansions] of Object\n .entries(vocabRegistry[itemScope.vocab].properties)) {\n if (parts.includes(property)) {\n predicates = [...Object.values(expansions).map(iri => this.dataFactory.namedNode(iri))];\n }\n }\n return predicates;\n }\n return [];\n }\n /**\n * Create a named node for the given term, which can be relative to the document base.\n * @param {string} iri A term string.\n * @return {Term} An RDF term, or undefined if invalid.\n */\n createSubject(iri) {\n if (!Util.isValidIri(iri)) {\n try {\n iri = (0, relative_to_absolute_iri_1.resolve)(iri, this.baseIRI);\n }\n catch (_a) {\n return;\n }\n }\n return this.dataFactory.namedNode(iri);\n }\n /**\n * Create a new literal node.\n * @param {string} literal The literal value.\n * @param {IActiveTag} activeTag The current active tag.\n * @return {Literal} A new literal node.\n */\n createLiteral(literal, activeTag) {\n return this.dataFactory.literal(literal, activeTag.language);\n }\n /**\n * Determine the vocab IRI from a given type IRI.\n * @link https://w3c.github.io/microdata-rdf/#property-uri-generation\n * @param typeIri A type IRI.\n * @param vocabRegistry The active vocabulary registry.\n */\n deriveVocab(typeIri, vocabRegistry) {\n let vocab;\n // First check if we find a prefix in the vocab registry\n for (const uriPrefix in vocabRegistry) {\n if (typeIri.startsWith(uriPrefix)) {\n vocab = uriPrefix;\n // Append fragment if prefix does not end with a slash\n if (!vocab.endsWith('/')) {\n vocab += '#';\n }\n break;\n }\n }\n // If no match was found, remove the last path segment from the URI\n if (!vocab) {\n const hashPos = typeIri.indexOf('#');\n if (hashPos > 0) {\n vocab = typeIri.slice(0, hashPos + 1);\n }\n else {\n vocab = (0, relative_to_absolute_iri_1.resolve)('.', typeIri);\n }\n }\n return vocab;\n }\n}\nexports.Util = Util;\nUtil.RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';\nUtil.XSD = 'http://www.w3.org/2001/XMLSchema#';\nUtil.RDFA = 'http://www.w3.org/ns/rdfa#';\nUtil.IRI_REGEX = /^([A-Za-z][\\d+-.A-Za-z]*|_):[^ \"<>[\\\\\\]`{|}]*$/u;\n//# sourceMappingURL=Util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IItemPropertyHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ItemPropertyHandlerContent = void 0;\n/**\n * Handler for an item property with the 'content' attribute.\n */\nclass ItemPropertyHandlerContent {\n canHandle(tagName, attributes) {\n return 'content' in attributes;\n }\n getObject(attributes, util, itemScope) {\n return util.createLiteral(attributes.content, itemScope);\n }\n}\nexports.ItemPropertyHandlerContent = ItemPropertyHandlerContent;\n//# sourceMappingURL=ItemPropertyHandlerContent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ItemPropertyHandlerNumber = void 0;\nconst Util_1 = require(\"../Util\");\n/**\n * Handler for an item property with a number attribute.\n */\nclass ItemPropertyHandlerNumber {\n constructor(tagName, attributeName) {\n this.tagName = tagName;\n this.attributeName = attributeName;\n }\n canHandle(tagName, attributes) {\n return this.tagName === tagName && this.attributeName in attributes;\n }\n getObject(attributes, util, itemScope) {\n const value = attributes[this.attributeName];\n let datatype;\n if (!Number.isNaN(Number.parseInt(value, 10)) && !value.includes('.')) {\n datatype = `${Util_1.Util.XSD}integer`;\n }\n else if (!Number.isNaN(Number.parseFloat(value))) {\n datatype = `${Util_1.Util.XSD}double`;\n }\n return util.dataFactory.literal(value, datatype && util.dataFactory.namedNode(datatype));\n }\n}\nexports.ItemPropertyHandlerNumber = ItemPropertyHandlerNumber;\n//# sourceMappingURL=ItemPropertyHandlerNumber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ItemPropertyHandlerTime = void 0;\nconst Util_1 = require(\"../Util\");\n/**\n * Handler for an item property for time tags.\n */\nclass ItemPropertyHandlerTime {\n canHandle(tagName, attributes) {\n return tagName === 'time' && 'datetime' in attributes;\n }\n getObject(attributes, util, itemScope) {\n const value = attributes.datetime;\n let datatype;\n for (const entry of ItemPropertyHandlerTime.TIME_REGEXES) {\n if (entry.regex.test(value)) {\n datatype = util.dataFactory.namedNode(Util_1.Util.XSD + entry.type);\n break;\n }\n }\n return util.dataFactory.literal(value, datatype);\n }\n}\nexports.ItemPropertyHandlerTime = ItemPropertyHandlerTime;\nItemPropertyHandlerTime.TIME_REGEXES = [\n {\n regex: /^-?P(\\d+Y)?(\\d+M)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+(\\.\\d)?S)?)?$/u,\n type: 'duration',\n },\n {\n regex: /^\\d+-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d((Z?)|([+-]\\d\\d:\\d\\d))$/u,\n type: 'dateTime',\n },\n { regex: /^\\d+-\\d\\d-\\d\\dZ?$/u, type: 'date' },\n { regex: /^\\d\\d:\\d\\d:\\d\\d((Z?)|([+-]\\d\\d:\\d\\d))$/u, type: 'time' },\n { regex: /^\\d+-\\d\\d$/u, type: 'gYearMonth' },\n { regex: /^\\d+$/u, type: 'gYear' },\n];\n//# sourceMappingURL=ItemPropertyHandlerTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ItemPropertyHandlerUrl = void 0;\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\n/**\n * Handler for an item property with a URL attribute.\n */\nclass ItemPropertyHandlerUrl {\n constructor(tagName, attributeName) {\n this.tagName = tagName;\n this.attributeName = attributeName;\n }\n canHandle(tagName, attributes) {\n return this.tagName === tagName && this.attributeName in attributes;\n }\n getObject(attributes, util, itemScope) {\n return util.dataFactory.namedNode((0, relative_to_absolute_iri_1.resolve)(attributes[this.attributeName], util.baseIRI));\n }\n}\nexports.ItemPropertyHandlerUrl = ItemPropertyHandlerUrl;\n//# sourceMappingURL=ItemPropertyHandlerUrl.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","const RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n XSD = 'http://www.w3.org/2001/XMLSchema#',\n SWAP = 'http://www.w3.org/2000/10/swap/';\n\nexport default {\n xsd: {\n decimal: `${XSD}decimal`,\n boolean: `${XSD}boolean`,\n double: `${XSD}double`,\n integer: `${XSD}integer`,\n string: `${XSD}string`,\n },\n rdf: {\n type: `${RDF}type`,\n nil: `${RDF}nil`,\n first: `${RDF}first`,\n rest: `${RDF}rest`,\n langString: `${RDF}langString`,\n },\n owl: {\n sameAs: 'http://www.w3.org/2002/07/owl#sameAs',\n },\n r: {\n forSome: `${SWAP}reify#forSome`,\n forAll: `${SWAP}reify#forAll`,\n },\n log: {\n implies: `${SWAP}log#implies`,\n },\n};\n","// **N3Lexer** tokenizes N3 documents.\nimport queueMicrotask from 'queue-microtask';\nimport namespaces from './IRIs';\n\nconst { xsd } = namespaces;\n\n// Regular expression and replacement string to escape N3 strings\nconst escapeSequence = /\\\\u([a-fA-F0-9]{4})|\\\\U([a-fA-F0-9]{8})|\\\\([^])/g;\nconst escapeReplacements = {\n '\\\\': '\\\\', \"'\": \"'\", '\"': '\"',\n 'n': '\\n', 'r': '\\r', 't': '\\t', 'f': '\\f', 'b': '\\b',\n '_': '_', '~': '~', '.': '.', '-': '-', '!': '!', '$': '$', '&': '&',\n '(': '(', ')': ')', '*': '*', '+': '+', ',': ',', ';': ';', '=': '=',\n '/': '/', '?': '?', '#': '#', '@': '@', '%': '%',\n};\nconst illegalIriChars = /[\\x00-\\x20<>\\\\\"\\{\\}\\|\\^\\`]/;\n\nconst lineModeRegExps = {\n _iri: true,\n _unescapedIri: true,\n _simpleQuotedString: true,\n _langcode: true,\n _blank: true,\n _newline: true,\n _comment: true,\n _whitespace: true,\n _endOfFile: true,\n};\nconst invalidRegExp = /$0^/;\n\n// ## Constructor\nexport default class N3Lexer {\n constructor(options) {\n // ## Regular expressions\n // It's slightly faster to have these as properties than as in-scope variables\n this._iri = /^<((?:[^ <>{}\\\\]|\\\\[uU])+)>[ \\t]*/; // IRI with escape sequences; needs sanity check after unescaping\n this._unescapedIri = /^<([^\\x00-\\x20<>\\\\\"\\{\\}\\|\\^\\`]*)>[ \\t]*/; // IRI without escape sequences; no unescaping\n this._simpleQuotedString = /^\"([^\"\\\\\\r\\n]*)\"(?=[^\"])/; // string without escape sequences\n this._simpleApostropheString = /^'([^'\\\\\\r\\n]*)'(?=[^'])/;\n this._langcode = /^@([a-z]+(?:-[a-z0-9]+)*)(?=[^a-z0-9\\-])/i;\n this._prefix = /^((?:[A-Za-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)?:(?=[#\\s<])/;\n this._prefixed = /^((?:[A-Za-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)?:((?:(?:[0-:A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~])(?:(?:[\\.\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~])*(?:[\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~]))?)?)(?:[ \\t]+|(?=\\.?[,;!\\^\\s#()\\[\\]\\{\\}\"'<>]))/;\n this._variable = /^\\?(?:(?:[A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:[\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)(?=[.,;!\\^\\s#()\\[\\]\\{\\}\"'<>])/;\n this._blank = /^_:((?:[0-9A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)(?:[ \\t]+|(?=\\.?[,;:\\s#()\\[\\]\\{\\}\"'<>]))/;\n this._number = /^[\\-+]?(?:(\\d+\\.\\d*|\\.?\\d+)[eE][\\-+]?|\\d*(\\.)?)\\d+(?=\\.?[,;:\\s#()\\[\\]\\{\\}\"'<>])/;\n this._boolean = /^(?:true|false)(?=[.,;\\s#()\\[\\]\\{\\}\"'<>])/;\n this._keyword = /^@[a-z]+(?=[\\s#<:])/i;\n this._sparqlKeyword = /^(?:PREFIX|BASE|GRAPH)(?=[\\s#<])/i;\n this._shortPredicates = /^a(?=[\\s#()\\[\\]\\{\\}\"'<>])/;\n this._newline = /^[ \\t]*(?:#[^\\n\\r]*)?(?:\\r\\n|\\n|\\r)[ \\t]*/;\n this._comment = /#([^\\n\\r]*)/;\n this._whitespace = /^[ \\t]+/;\n this._endOfFile = /^(?:#[^\\n\\r]*)?$/;\n options = options || {};\n\n // In line mode (N-Triples or N-Quads), only simple features may be parsed\n if (this._lineMode = !!options.lineMode) {\n this._n3Mode = false;\n // Don't tokenize special literals\n for (const key in this) {\n if (!(key in lineModeRegExps) && this[key] instanceof RegExp)\n this[key] = invalidRegExp;\n }\n }\n // When not in line mode, enable N3 functionality by default\n else {\n this._n3Mode = options.n3 !== false;\n }\n // Don't output comment tokens by default\n this._comments = !!options.comments;\n // Cache the last tested closing position of long literals\n this._literalClosingPos = 0;\n }\n\n // ## Private methods\n\n // ### `_tokenizeToEnd` tokenizes as for as possible, emitting tokens through the callback\n _tokenizeToEnd(callback, inputFinished) {\n // Continue parsing as far as possible; the loop will return eventually\n let input = this._input;\n let currentLineLength = input.length;\n while (true) {\n // Count and skip whitespace lines\n let whiteSpaceMatch, comment;\n while (whiteSpaceMatch = this._newline.exec(input)) {\n // Try to find a comment\n if (this._comments && (comment = this._comment.exec(whiteSpaceMatch[0])))\n emitToken('comment', comment[1], '', this._line, whiteSpaceMatch[0].length);\n // Advance the input\n input = input.substr(whiteSpaceMatch[0].length, input.length);\n currentLineLength = input.length;\n this._line++;\n }\n // Skip whitespace on current line\n if (!whiteSpaceMatch && (whiteSpaceMatch = this._whitespace.exec(input)))\n input = input.substr(whiteSpaceMatch[0].length, input.length);\n\n // Stop for now if we're at the end\n if (this._endOfFile.test(input)) {\n // If the input is finished, emit EOF\n if (inputFinished) {\n // Try to find a final comment\n if (this._comments && (comment = this._comment.exec(input)))\n emitToken('comment', comment[1], '', this._line, input.length);\n input = null;\n emitToken('eof', '', '', this._line, 0);\n }\n return this._input = input;\n }\n\n // Look for specific token types based on the first character\n const line = this._line, firstChar = input[0];\n let type = '', value = '', prefix = '',\n match = null, matchLength = 0, inconclusive = false;\n switch (firstChar) {\n case '^':\n // We need at least 3 tokens lookahead to distinguish ^^ and ^^pre:fixed\n if (input.length < 3)\n break;\n // Try to match a type\n else if (input[1] === '^') {\n this._previousMarker = '^^';\n // Move to type IRI or prefixed name\n input = input.substr(2);\n if (input[0] !== '<') {\n inconclusive = true;\n break;\n }\n }\n // If no type, it must be a path expression\n else {\n if (this._n3Mode) {\n matchLength = 1;\n type = '^';\n }\n break;\n }\n // Fall through in case the type is an IRI\n case '<':\n // Try to find a full IRI without escape sequences\n if (match = this._unescapedIri.exec(input))\n type = 'IRI', value = match[1];\n // Try to find a full IRI with escape sequences\n else if (match = this._iri.exec(input)) {\n value = this._unescape(match[1]);\n if (value === null || illegalIriChars.test(value))\n return reportSyntaxError(this);\n type = 'IRI';\n }\n // Try to find a nested triple\n else if (input.length > 1 && input[1] === '<')\n type = '<<', matchLength = 2;\n // Try to find a backwards implication arrow\n else if (this._n3Mode && input.length > 1 && input[1] === '=')\n type = 'inverse', matchLength = 2, value = '>';\n break;\n\n case '>':\n if (input.length > 1 && input[1] === '>')\n type = '>>', matchLength = 2;\n break;\n\n case '_':\n // Try to find a blank node. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a blank node.\n // Therefore, try inserting a space if we're at the end of the input.\n if ((match = this._blank.exec(input)) ||\n inputFinished && (match = this._blank.exec(`${input} `)))\n type = 'blank', prefix = '_', value = match[1];\n break;\n\n case '\"':\n // Try to find a literal without escape sequences\n if (match = this._simpleQuotedString.exec(input))\n value = match[1];\n // Try to find a literal wrapped in three pairs of quotes\n else {\n ({ value, matchLength } = this._parseLiteral(input));\n if (value === null)\n return reportSyntaxError(this);\n }\n if (match !== null || matchLength !== 0) {\n type = 'literal';\n this._literalClosingPos = 0;\n }\n break;\n\n case \"'\":\n if (!this._lineMode) {\n // Try to find a literal without escape sequences\n if (match = this._simpleApostropheString.exec(input))\n value = match[1];\n // Try to find a literal wrapped in three pairs of quotes\n else {\n ({ value, matchLength } = this._parseLiteral(input));\n if (value === null)\n return reportSyntaxError(this);\n }\n if (match !== null || matchLength !== 0) {\n type = 'literal';\n this._literalClosingPos = 0;\n }\n }\n break;\n\n case '?':\n // Try to find a variable\n if (this._n3Mode && (match = this._variable.exec(input)))\n type = 'var', value = match[0];\n break;\n\n case '@':\n // Try to find a language code\n if (this._previousMarker === 'literal' && (match = this._langcode.exec(input)))\n type = 'langcode', value = match[1];\n // Try to find a keyword\n else if (match = this._keyword.exec(input))\n type = match[0];\n break;\n\n case '.':\n // Try to find a dot as punctuation\n if (input.length === 1 ? inputFinished : (input[1] < '0' || input[1] > '9')) {\n type = '.';\n matchLength = 1;\n break;\n }\n // Fall through to numerical case (could be a decimal dot)\n\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n case '+':\n case '-':\n // Try to find a number. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a number.\n // Therefore, try inserting a space if we're at the end of the input.\n if (match = this._number.exec(input) ||\n inputFinished && (match = this._number.exec(`${input} `))) {\n type = 'literal', value = match[0];\n prefix = (typeof match[1] === 'string' ? xsd.double :\n (typeof match[2] === 'string' ? xsd.decimal : xsd.integer));\n }\n break;\n\n case 'B':\n case 'b':\n case 'p':\n case 'P':\n case 'G':\n case 'g':\n // Try to find a SPARQL-style keyword\n if (match = this._sparqlKeyword.exec(input))\n type = match[0].toUpperCase();\n else\n inconclusive = true;\n break;\n\n case 'f':\n case 't':\n // Try to match a boolean\n if (match = this._boolean.exec(input))\n type = 'literal', value = match[0], prefix = xsd.boolean;\n else\n inconclusive = true;\n break;\n\n case 'a':\n // Try to find an abbreviated predicate\n if (match = this._shortPredicates.exec(input))\n type = 'abbreviation', value = 'a';\n else\n inconclusive = true;\n break;\n\n case '=':\n // Try to find an implication arrow or equals sign\n if (this._n3Mode && input.length > 1) {\n type = 'abbreviation';\n if (input[1] !== '>')\n matchLength = 1, value = '=';\n else\n matchLength = 2, value = '>';\n }\n break;\n\n case '!':\n if (!this._n3Mode)\n break;\n case ',':\n case ';':\n case '[':\n case ']':\n case '(':\n case ')':\n case '}':\n if (!this._lineMode) {\n matchLength = 1;\n type = firstChar;\n }\n break;\n case '{':\n // We need at least 2 tokens lookahead to distinguish \"{|\" and \"{ \"\n if (!this._lineMode && input.length >= 2) {\n // Try to find a quoted triple annotation start\n if (input[1] === '|')\n type = '{|', matchLength = 2;\n else\n type = firstChar, matchLength = 1;\n }\n break;\n case '|':\n // We need 2 tokens lookahead to parse \"|}\"\n // Try to find a quoted triple annotation end\n if (input.length >= 2 && input[1] === '}')\n type = '|}', matchLength = 2;\n break;\n\n default:\n inconclusive = true;\n }\n\n // Some first characters do not allow an immediate decision, so inspect more\n if (inconclusive) {\n // Try to find a prefix\n if ((this._previousMarker === '@prefix' || this._previousMarker === 'PREFIX') &&\n (match = this._prefix.exec(input)))\n type = 'prefix', value = match[1] || '';\n // Try to find a prefixed name. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a prefixed name.\n // Therefore, try inserting a space if we're at the end of the input.\n else if ((match = this._prefixed.exec(input)) ||\n inputFinished && (match = this._prefixed.exec(`${input} `)))\n type = 'prefixed', prefix = match[1] || '', value = this._unescape(match[2]);\n }\n\n // A type token is special: it can only be emitted after an IRI or prefixed name is read\n if (this._previousMarker === '^^') {\n switch (type) {\n case 'prefixed': type = 'type'; break;\n case 'IRI': type = 'typeIRI'; break;\n default: type = '';\n }\n }\n\n // What if nothing of the above was found?\n if (!type) {\n // We could be in streaming mode, and then we just wait for more input to arrive.\n // Otherwise, a syntax error has occurred in the input.\n // One exception: error on an unaccounted linebreak (= not inside a triple-quoted literal).\n if (inputFinished || (!/^'''|^\"\"\"/.test(input) && /\\n|\\r/.test(input)))\n return reportSyntaxError(this);\n else\n return this._input = input;\n }\n\n // Emit the parsed token\n const length = matchLength || match[0].length;\n const token = emitToken(type, value, prefix, line, length);\n this.previousToken = token;\n this._previousMarker = type;\n\n // Advance to next part to tokenize\n input = input.substr(length, input.length);\n }\n\n // Emits the token through the callback\n function emitToken(type, value, prefix, line, length) {\n const start = input ? currentLineLength - input.length : currentLineLength;\n const end = start + length;\n const token = { type, value, prefix, line, start, end };\n callback(null, token);\n return token;\n }\n // Signals the syntax error through the callback\n function reportSyntaxError(self) { callback(self._syntaxError(/^\\S*/.exec(input)[0])); }\n }\n\n // ### `_unescape` replaces N3 escape codes by their corresponding characters\n _unescape(item) {\n let invalid = false;\n const replaced = item.replace(escapeSequence, (sequence, unicode4, unicode8, escapedChar) => {\n // 4-digit unicode character\n if (typeof unicode4 === 'string')\n return String.fromCharCode(Number.parseInt(unicode4, 16));\n // 8-digit unicode character\n if (typeof unicode8 === 'string') {\n let charCode = Number.parseInt(unicode8, 16);\n return charCode <= 0xFFFF ? String.fromCharCode(Number.parseInt(unicode8, 16)) :\n String.fromCharCode(0xD800 + ((charCode -= 0x10000) >> 10), 0xDC00 + (charCode & 0x3FF));\n }\n // fixed escape sequence\n if (escapedChar in escapeReplacements)\n return escapeReplacements[escapedChar];\n // invalid escape sequence\n invalid = true;\n return '';\n });\n return invalid ? null : replaced;\n }\n\n // ### `_parseLiteral` parses a literal into an unescaped value\n _parseLiteral(input) {\n // Ensure we have enough lookahead to identify triple-quoted strings\n if (input.length >= 3) {\n // Identify the opening quote(s)\n const opening = input.match(/^(?:\"\"\"|\"|'''|'|)/)[0];\n const openingLength = opening.length;\n\n // Find the next candidate closing quotes\n let closingPos = Math.max(this._literalClosingPos, openingLength);\n while ((closingPos = input.indexOf(opening, closingPos)) > 0) {\n // Count backslashes right before the closing quotes\n let backslashCount = 0;\n while (input[closingPos - backslashCount - 1] === '\\\\')\n backslashCount++;\n\n // An even number of backslashes (in particular 0)\n // means these are actual, non-escaped closing quotes\n if (backslashCount % 2 === 0) {\n // Extract and unescape the value\n const raw = input.substring(openingLength, closingPos);\n const lines = raw.split(/\\r\\n|\\r|\\n/).length - 1;\n const matchLength = closingPos + openingLength;\n // Only triple-quoted strings can be multi-line\n if (openingLength === 1 && lines !== 0 ||\n openingLength === 3 && this._lineMode)\n break;\n this._line += lines;\n return { value: this._unescape(raw), matchLength };\n }\n closingPos++;\n }\n this._literalClosingPos = input.length - openingLength + 1;\n }\n return { value: '', matchLength: 0 };\n }\n\n // ### `_syntaxError` creates a syntax error for the given issue\n _syntaxError(issue) {\n this._input = null;\n const err = new Error(`Unexpected \"${issue}\" on line ${this._line}.`);\n err.context = {\n token: undefined,\n line: this._line,\n previousToken: this.previousToken,\n };\n return err;\n }\n\n // ### Strips off any starting UTF BOM mark.\n _readStartingBom(input) {\n return input.startsWith('\\ufeff') ? input.substr(1) : input;\n }\n\n // ## Public methods\n\n // ### `tokenize` starts the transformation of an N3 document into an array of tokens.\n // The input can be a string or a stream.\n tokenize(input, callback) {\n this._line = 1;\n\n // If the input is a string, continuously emit tokens through the callback until the end\n if (typeof input === 'string') {\n this._input = this._readStartingBom(input);\n // If a callback was passed, asynchronously call it\n if (typeof callback === 'function')\n queueMicrotask(() => this._tokenizeToEnd(callback, true));\n // If no callback was passed, tokenize synchronously and return\n else {\n const tokens = [];\n let error;\n this._tokenizeToEnd((e, t) => e ? (error = e) : tokens.push(t), true);\n if (error) throw error;\n return tokens;\n }\n }\n // Otherwise, the input must be a stream\n else {\n this._pendingBuffer = null;\n if (typeof input.setEncoding === 'function')\n input.setEncoding('utf8');\n // Adds the data chunk to the buffer and parses as far as possible\n input.on('data', data => {\n if (this._input !== null && data.length !== 0) {\n // Prepend any previous pending writes\n if (this._pendingBuffer) {\n data = Buffer.concat([this._pendingBuffer, data]);\n this._pendingBuffer = null;\n }\n // Hold if the buffer ends in an incomplete unicode sequence\n if (data[data.length - 1] & 0x80) {\n this._pendingBuffer = data;\n }\n // Otherwise, tokenize as far as possible\n else {\n // Only read a BOM at the start\n if (typeof this._input === 'undefined')\n this._input = this._readStartingBom(typeof data === 'string' ? data : data.toString());\n else\n this._input += data;\n this._tokenizeToEnd(callback, false);\n }\n }\n });\n // Parses until the end\n input.on('end', () => {\n if (typeof this._input === 'string')\n this._tokenizeToEnd(callback, true);\n });\n input.on('error', callback);\n }\n }\n}\n","// N3.js implementations of the RDF/JS core data types\n// See https://github.com/rdfjs/representation-task-force/blob/master/interface-spec.md\n\nimport namespaces from './IRIs';\n\nconst { rdf, xsd } = namespaces;\n\n// eslint-disable-next-line prefer-const\nlet DEFAULTGRAPH;\nlet _blankNodeCounter = 0;\n\nconst escapedLiteral = /^\"(.*\".*)(?=\"[^\"]*$)/;\n\n// ## DataFactory singleton\nconst DataFactory = {\n namedNode,\n blankNode,\n variable,\n literal,\n defaultGraph,\n quad,\n triple: quad,\n};\nexport default DataFactory;\n\n// ## Term constructor\nexport class Term {\n constructor(id) {\n this.id = id;\n }\n\n // ### The value of this term\n get value() {\n return this.id;\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both terms were created by this library,\n // equality can be computed through ids\n if (other instanceof Term)\n return this.id === other.id;\n // Otherwise, compare term type and value\n return !!other && this.termType === other.termType &&\n this.value === other.value;\n }\n\n // ### Implement hashCode for Immutable.js, since we implement `equals`\n // https://immutable-js.com/docs/v4.0.0/ValueObject/#hashCode()\n hashCode() {\n return 0;\n }\n\n // ### Returns a plain object representation of this term\n toJSON() {\n return {\n termType: this.termType,\n value: this.value,\n };\n }\n}\n\n\n// ## NamedNode constructor\nexport class NamedNode extends Term {\n // ### The term type of this term\n get termType() {\n return 'NamedNode';\n }\n}\n\n// ## Literal constructor\nexport class Literal extends Term {\n // ### The term type of this term\n get termType() {\n return 'Literal';\n }\n\n // ### The text value of this literal\n get value() {\n return this.id.substring(1, this.id.lastIndexOf('\"'));\n }\n\n // ### The language of this literal\n get language() {\n // Find the last quotation mark (e.g., '\"abc\"@en-us')\n const id = this.id;\n let atPos = id.lastIndexOf('\"') + 1;\n // If \"@\" it follows, return the remaining substring; empty otherwise\n return atPos < id.length && id[atPos++] === '@' ? id.substr(atPos).toLowerCase() : '';\n }\n\n // ### The datatype IRI of this literal\n get datatype() {\n return new NamedNode(this.datatypeString);\n }\n\n // ### The datatype string of this literal\n get datatypeString() {\n // Find the last quotation mark (e.g., '\"abc\"^^http://ex.org/types#t')\n const id = this.id, dtPos = id.lastIndexOf('\"') + 1;\n const char = dtPos < id.length ? id[dtPos] : '';\n // If \"^\" it follows, return the remaining substring\n return char === '^' ? id.substr(dtPos + 2) :\n // If \"@\" follows, return rdf:langString; xsd:string otherwise\n (char !== '@' ? xsd.string : rdf.langString);\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both literals were created by this library,\n // equality can be computed through ids\n if (other instanceof Literal)\n return this.id === other.id;\n // Otherwise, compare term type, value, language, and datatype\n return !!other && !!other.datatype &&\n this.termType === other.termType &&\n this.value === other.value &&\n this.language === other.language &&\n this.datatype.value === other.datatype.value;\n }\n\n toJSON() {\n return {\n termType: this.termType,\n value: this.value,\n language: this.language,\n datatype: { termType: 'NamedNode', value: this.datatypeString },\n };\n }\n}\n\n// ## BlankNode constructor\nexport class BlankNode extends Term {\n constructor(name) {\n super(`_:${name}`);\n }\n\n // ### The term type of this term\n get termType() {\n return 'BlankNode';\n }\n\n // ### The name of this blank node\n get value() {\n return this.id.substr(2);\n }\n}\n\nexport class Variable extends Term {\n constructor(name) {\n super(`?${name}`);\n }\n\n // ### The term type of this term\n get termType() {\n return 'Variable';\n }\n\n // ### The name of this variable\n get value() {\n return this.id.substr(1);\n }\n}\n\n// ## DefaultGraph constructor\nexport class DefaultGraph extends Term {\n constructor() {\n super('');\n return DEFAULTGRAPH || this;\n }\n\n // ### The term type of this term\n get termType() {\n return 'DefaultGraph';\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both terms were created by this library,\n // equality can be computed through strict equality;\n // otherwise, compare term types.\n return (this === other) || (!!other && (this.termType === other.termType));\n }\n}\n\n// ## DefaultGraph singleton\nDEFAULTGRAPH = new DefaultGraph();\n\n// ### Constructs a term from the given internal string ID\n// The third 'nested' parameter of this function is to aid\n// with recursion over nested terms. It should not be used\n// by consumers of this library.\n// See https://github.com/rdfjs/N3.js/pull/311#discussion_r1061042725\nexport function termFromId(id, factory, nested) {\n factory = factory || DataFactory;\n\n // Falsy value or empty string indicate the default graph\n if (!id)\n return factory.defaultGraph();\n\n // Identify the term type based on the first character\n switch (id[0]) {\n case '?':\n return factory.variable(id.substr(1));\n case '_':\n return factory.blankNode(id.substr(2));\n case '\"':\n // Shortcut for internal literals\n if (factory === DataFactory)\n return new Literal(id);\n // Literal without datatype or language\n if (id[id.length - 1] === '\"')\n return factory.literal(id.substr(1, id.length - 2));\n // Literal with datatype or language\n const endPos = id.lastIndexOf('\"', id.length - 1);\n return factory.literal(id.substr(1, endPos - 1),\n id[endPos + 1] === '@' ? id.substr(endPos + 2)\n : factory.namedNode(id.substr(endPos + 3)));\n case '[':\n id = JSON.parse(id);\n break;\n default:\n if (!nested || !Array.isArray(id)) {\n return factory.namedNode(id);\n }\n }\n return factory.quad(\n termFromId(id[0], factory, true),\n termFromId(id[1], factory, true),\n termFromId(id[2], factory, true),\n id[3] && termFromId(id[3], factory, true)\n );\n}\n\n// ### Constructs an internal string ID from the given term or ID string\n// The third 'nested' parameter of this function is to aid\n// with recursion over nested terms. It should not be used\n// by consumers of this library.\n// See https://github.com/rdfjs/N3.js/pull/311#discussion_r1061042725\nexport function termToId(term, nested) {\n if (typeof term === 'string')\n return term;\n if (term instanceof Term && term.termType !== 'Quad')\n return term.id;\n if (!term)\n return DEFAULTGRAPH.id;\n\n // Term instantiated with another library\n switch (term.termType) {\n case 'NamedNode': return term.value;\n case 'BlankNode': return `_:${term.value}`;\n case 'Variable': return `?${term.value}`;\n case 'DefaultGraph': return '';\n case 'Literal': return `\"${term.value}\"${\n term.language ? `@${term.language}` :\n (term.datatype && term.datatype.value !== xsd.string ? `^^${term.datatype.value}` : '')}`;\n case 'Quad':\n const res = [\n termToId(term.subject, true),\n termToId(term.predicate, true),\n termToId(term.object, true),\n ];\n if (term.graph && term.graph.termType !== 'DefaultGraph') {\n res.push(termToId(term.graph, true));\n }\n return nested ? res : JSON.stringify(res);\n default: throw new Error(`Unexpected termType: ${term.termType}`);\n }\n}\n\n\n// ## Quad constructor\nexport class Quad extends Term {\n constructor(subject, predicate, object, graph) {\n super('');\n this._subject = subject;\n this._predicate = predicate;\n this._object = object;\n this._graph = graph || DEFAULTGRAPH;\n }\n\n // ### The term type of this term\n get termType() {\n return 'Quad';\n }\n\n get subject() {\n return this._subject;\n }\n\n get predicate() {\n return this._predicate;\n }\n\n get object() {\n return this._object;\n }\n\n get graph() {\n return this._graph;\n }\n\n // ### Returns a plain object representation of this quad\n toJSON() {\n return {\n termType: this.termType,\n subject: this._subject.toJSON(),\n predicate: this._predicate.toJSON(),\n object: this._object.toJSON(),\n graph: this._graph.toJSON(),\n };\n }\n\n // ### Returns whether this object represents the same quad as the other\n equals(other) {\n return !!other && this._subject.equals(other.subject) &&\n this._predicate.equals(other.predicate) &&\n this._object.equals(other.object) &&\n this._graph.equals(other.graph);\n }\n}\nexport { Quad as Triple };\n\n// ### Escapes the quotes within the given literal\nexport function escapeQuotes(id) {\n return id.replace(escapedLiteral, (_, quoted) => `\"${quoted.replace(/\"/g, '\"\"')}`);\n}\n\n// ### Unescapes the quotes within the given literal\nexport function unescapeQuotes(id) {\n return id.replace(escapedLiteral, (_, quoted) => `\"${quoted.replace(/\"\"/g, '\"')}`);\n}\n\n// ### Creates an IRI\nfunction namedNode(iri) {\n return new NamedNode(iri);\n}\n\n// ### Creates a blank node\nfunction blankNode(name) {\n return new BlankNode(name || `n3-${_blankNodeCounter++}`);\n}\n\n// ### Creates a literal\nfunction literal(value, languageOrDataType) {\n // Create a language-tagged string\n if (typeof languageOrDataType === 'string')\n return new Literal(`\"${value}\"@${languageOrDataType.toLowerCase()}`);\n\n // Automatically determine datatype for booleans and numbers\n let datatype = languageOrDataType ? languageOrDataType.value : '';\n if (datatype === '') {\n // Convert a boolean\n if (typeof value === 'boolean')\n datatype = xsd.boolean;\n // Convert an integer or double\n else if (typeof value === 'number') {\n if (Number.isFinite(value))\n datatype = Number.isInteger(value) ? xsd.integer : xsd.double;\n else {\n datatype = xsd.double;\n if (!Number.isNaN(value))\n value = value > 0 ? 'INF' : '-INF';\n }\n }\n }\n\n // Create a datatyped literal\n return (datatype === '' || datatype === xsd.string) ?\n new Literal(`\"${value}\"`) :\n new Literal(`\"${value}\"^^${datatype}`);\n}\n\n// ### Creates a variable\nfunction variable(name) {\n return new Variable(name);\n}\n\n// ### Returns the default graph\nfunction defaultGraph() {\n return DEFAULTGRAPH;\n}\n\n// ### Creates a quad\nfunction quad(subject, predicate, object, graph) {\n return new Quad(subject, predicate, object, graph);\n}\n","// **N3Parser** parses N3 documents.\nimport N3Lexer from './N3Lexer';\nimport N3DataFactory from './N3DataFactory';\nimport namespaces from './IRIs';\n\nlet blankNodePrefix = 0;\n\n// ## Constructor\nexport default class N3Parser {\n constructor(options) {\n this._contextStack = [];\n this._graph = null;\n\n // Set the document IRI\n options = options || {};\n this._setBase(options.baseIRI);\n options.factory && initDataFactory(this, options.factory);\n\n // Set supported features depending on the format\n const format = (typeof options.format === 'string') ?\n options.format.match(/\\w*$/)[0].toLowerCase() : '',\n isTurtle = /turtle/.test(format), isTriG = /trig/.test(format),\n isNTriples = /triple/.test(format), isNQuads = /quad/.test(format),\n isN3 = this._n3Mode = /n3/.test(format),\n isLineMode = isNTriples || isNQuads;\n if (!(this._supportsNamedGraphs = !(isTurtle || isN3)))\n this._readPredicateOrNamedGraph = this._readPredicate;\n // Support triples in other graphs\n this._supportsQuads = !(isTurtle || isTriG || isNTriples || isN3);\n // Support nesting of triples\n this._supportsRDFStar = format === '' || /star|\\*$/.test(format);\n // Disable relative IRIs in N-Triples or N-Quads mode\n if (isLineMode)\n this._resolveRelativeIRI = iri => { return null; };\n this._blankNodePrefix = typeof options.blankNodePrefix !== 'string' ? '' :\n options.blankNodePrefix.replace(/^(?!_:)/, '_:');\n this._lexer = options.lexer || new N3Lexer({ lineMode: isLineMode, n3: isN3 });\n // Disable explicit quantifiers by default\n this._explicitQuantifiers = !!options.explicitQuantifiers;\n }\n\n // ## Static class methods\n\n // ### `_resetBlankNodePrefix` restarts blank node prefix identification\n static _resetBlankNodePrefix() {\n blankNodePrefix = 0;\n }\n\n // ## Private methods\n\n // ### `_setBase` sets the base IRI to resolve relative IRIs\n _setBase(baseIRI) {\n if (!baseIRI) {\n this._base = '';\n this._basePath = '';\n }\n else {\n // Remove fragment if present\n const fragmentPos = baseIRI.indexOf('#');\n if (fragmentPos >= 0)\n baseIRI = baseIRI.substr(0, fragmentPos);\n // Set base IRI and its components\n this._base = baseIRI;\n this._basePath = baseIRI.indexOf('/') < 0 ? baseIRI :\n baseIRI.replace(/[^\\/?]*(?:\\?.*)?$/, '');\n baseIRI = baseIRI.match(/^(?:([a-z][a-z0-9+.-]*:))?(?:\\/\\/[^\\/]*)?/i);\n this._baseRoot = baseIRI[0];\n this._baseScheme = baseIRI[1];\n }\n }\n\n // ### `_saveContext` stores the current parsing context\n // when entering a new scope (list, blank node, formula)\n _saveContext(type, graph, subject, predicate, object) {\n const n3Mode = this._n3Mode;\n this._contextStack.push({\n type,\n subject, predicate, object, graph,\n inverse: n3Mode ? this._inversePredicate : false,\n blankPrefix: n3Mode ? this._prefixes._ : '',\n quantified: n3Mode ? this._quantified : null,\n });\n // The settings below only apply to N3 streams\n if (n3Mode) {\n // Every new scope resets the predicate direction\n this._inversePredicate = false;\n // In N3, blank nodes are scoped to a formula\n // (using a dot as separator, as a blank node label cannot start with it)\n this._prefixes._ = (this._graph ? `${this._graph.value}.` : '.');\n // Quantifiers are scoped to a formula\n this._quantified = Object.create(this._quantified);\n }\n }\n\n // ### `_restoreContext` restores the parent context\n // when leaving a scope (list, blank node, formula)\n _restoreContext(type, token) {\n // Obtain the previous context\n const context = this._contextStack.pop();\n if (!context || context.type !== type)\n return this._error(`Unexpected ${token.type}`, token);\n\n // Restore the quad of the previous context\n this._subject = context.subject;\n this._predicate = context.predicate;\n this._object = context.object;\n this._graph = context.graph;\n\n // Restore N3 context settings\n if (this._n3Mode) {\n this._inversePredicate = context.inverse;\n this._prefixes._ = context.blankPrefix;\n this._quantified = context.quantified;\n }\n }\n\n // ### `_readInTopContext` reads a token when in the top context\n _readInTopContext(token) {\n switch (token.type) {\n // If an EOF token arrives in the top context, signal that we're done\n case 'eof':\n if (this._graph !== null)\n return this._error('Unclosed graph', token);\n delete this._prefixes._;\n return this._callback(null, null, this._prefixes);\n // It could be a prefix declaration\n case 'PREFIX':\n this._sparqlStyle = true;\n case '@prefix':\n return this._readPrefix;\n // It could be a base declaration\n case 'BASE':\n this._sparqlStyle = true;\n case '@base':\n return this._readBaseIRI;\n // It could be a graph\n case '{':\n if (this._supportsNamedGraphs) {\n this._graph = '';\n this._subject = null;\n return this._readSubject;\n }\n case 'GRAPH':\n if (this._supportsNamedGraphs)\n return this._readNamedGraphLabel;\n // Otherwise, the next token must be a subject\n default:\n return this._readSubject(token);\n }\n }\n\n // ### `_readEntity` reads an IRI, prefixed name, blank node, or variable\n _readEntity(token, quantifier) {\n let value;\n switch (token.type) {\n // Read a relative or absolute IRI\n case 'IRI':\n case 'typeIRI':\n const iri = this._resolveIRI(token.value);\n if (iri === null)\n return this._error('Invalid IRI', token);\n value = this._namedNode(iri);\n break;\n // Read a prefixed name\n case 'type':\n case 'prefixed':\n const prefix = this._prefixes[token.prefix];\n if (prefix === undefined)\n return this._error(`Undefined prefix \"${token.prefix}:\"`, token);\n value = this._namedNode(prefix + token.value);\n break;\n // Read a blank node\n case 'blank':\n value = this._blankNode(this._prefixes[token.prefix] + token.value);\n break;\n // Read a variable\n case 'var':\n value = this._variable(token.value.substr(1));\n break;\n // Everything else is not an entity\n default:\n return this._error(`Expected entity but got ${token.type}`, token);\n }\n // In N3 mode, replace the entity if it is quantified\n if (!quantifier && this._n3Mode && (value.id in this._quantified))\n value = this._quantified[value.id];\n return value;\n }\n\n // ### `_readSubject` reads a quad's subject\n _readSubject(token) {\n this._predicate = null;\n switch (token.type) {\n case '[':\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph,\n this._subject = this._blankNode(), null, null);\n return this._readBlankNodeHead;\n case '(':\n // Start a new list\n this._saveContext('list', this._graph, this.RDF_NIL, null, null);\n this._subject = null;\n return this._readListItem;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph,\n this._graph = this._blankNode(), null, null);\n return this._readSubject;\n case '}':\n // No subject; the graph in which we are reading is closed instead\n return this._readPunctuation(token);\n case '@forSome':\n if (!this._n3Mode)\n return this._error('Unexpected \"@forSome\"', token);\n this._subject = null;\n this._predicate = this.N3_FORSOME;\n this._quantifier = this._blankNode;\n return this._readQuantifierList;\n case '@forAll':\n if (!this._n3Mode)\n return this._error('Unexpected \"@forAll\"', token);\n this._subject = null;\n this._predicate = this.N3_FORALL;\n this._quantifier = this._variable;\n return this._readQuantifierList;\n case 'literal':\n if (!this._n3Mode)\n return this._error('Unexpected literal', token);\n\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n return this._completeSubjectLiteral;\n }\n else\n this._subject = this._literal(token.value, this._namedNode(token.prefix));\n\n break;\n case '<<':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n this._saveContext('<<', this._graph, null, null, null);\n this._graph = null;\n return this._readSubject;\n default:\n // Read the subject entity\n if ((this._subject = this._readEntity(token)) === undefined)\n return;\n // In N3 mode, the subject might be a path\n if (this._n3Mode)\n return this._getPathReader(this._readPredicateOrNamedGraph);\n }\n\n // The next token must be a predicate,\n // or, if the subject was actually a graph IRI, a named graph\n return this._readPredicateOrNamedGraph;\n }\n\n // ### `_readPredicate` reads a quad's predicate\n _readPredicate(token) {\n const type = token.type;\n switch (type) {\n case 'inverse':\n this._inversePredicate = true;\n case 'abbreviation':\n this._predicate = this.ABBREVIATIONS[token.value];\n break;\n case '.':\n case ']':\n case '}':\n // Expected predicate didn't come, must have been trailing semicolon\n if (this._predicate === null)\n return this._error(`Unexpected ${type}`, token);\n this._subject = null;\n return type === ']' ? this._readBlankNodeTail(token) : this._readPunctuation(token);\n case ';':\n // Additional semicolons can be safely ignored\n return this._predicate !== null ? this._readPredicate :\n this._error('Expected predicate but got ;', token);\n case '[':\n if (this._n3Mode) {\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph, this._subject,\n this._subject = this._blankNode(), null);\n return this._readBlankNodeHead;\n }\n case 'blank':\n if (!this._n3Mode)\n return this._error('Disallowed blank node as predicate', token);\n default:\n if ((this._predicate = this._readEntity(token)) === undefined)\n return;\n }\n // The next token must be an object\n return this._readObject;\n }\n\n // ### `_readObject` reads a quad's object\n _readObject(token) {\n switch (token.type) {\n case 'literal':\n // Regular literal, can still get a datatype or language\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n return this._readDataTypeOrLang;\n }\n // Pre-datatyped string literal (prefix stores the datatype)\n else\n this._object = this._literal(token.value, this._namedNode(token.prefix));\n break;\n case '[':\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph, this._subject, this._predicate,\n this._subject = this._blankNode());\n return this._readBlankNodeHead;\n case '(':\n // Start a new list\n this._saveContext('list', this._graph, this._subject, this._predicate, this.RDF_NIL);\n this._subject = null;\n return this._readListItem;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph, this._subject, this._predicate,\n this._graph = this._blankNode());\n return this._readSubject;\n case '<<':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n this._saveContext('<<', this._graph, this._subject, this._predicate, null);\n this._graph = null;\n return this._readSubject;\n default:\n // Read the object entity\n if ((this._object = this._readEntity(token)) === undefined)\n return;\n // In N3 mode, the object might be a path\n if (this._n3Mode)\n return this._getPathReader(this._getContextEndReader());\n }\n return this._getContextEndReader();\n }\n\n // ### `_readPredicateOrNamedGraph` reads a quad's predicate, or a named graph\n _readPredicateOrNamedGraph(token) {\n return token.type === '{' ? this._readGraph(token) : this._readPredicate(token);\n }\n\n // ### `_readGraph` reads a graph\n _readGraph(token) {\n if (token.type !== '{')\n return this._error(`Expected graph but got ${token.type}`, token);\n // The \"subject\" we read is actually the GRAPH's label\n this._graph = this._subject, this._subject = null;\n return this._readSubject;\n }\n\n // ### `_readBlankNodeHead` reads the head of a blank node\n _readBlankNodeHead(token) {\n if (token.type === ']') {\n this._subject = null;\n return this._readBlankNodeTail(token);\n }\n else {\n this._predicate = null;\n return this._readPredicate(token);\n }\n }\n\n // ### `_readBlankNodeTail` reads the end of a blank node\n _readBlankNodeTail(token) {\n if (token.type !== ']')\n return this._readBlankNodePunctuation(token);\n\n // Store blank node quad\n if (this._subject !== null)\n this._emit(this._subject, this._predicate, this._object, this._graph);\n\n // Restore the parent context containing this blank node\n const empty = this._predicate === null;\n this._restoreContext('blank', token);\n // If the blank node was the object, restore previous context and read punctuation\n if (this._object !== null)\n return this._getContextEndReader();\n // If the blank node was the predicate, continue reading the object\n else if (this._predicate !== null)\n return this._readObject;\n // If the blank node was the subject, continue reading the predicate\n else\n // If the blank node was empty, it could be a named graph label\n return empty ? this._readPredicateOrNamedGraph : this._readPredicateAfterBlank;\n }\n\n // ### `_readPredicateAfterBlank` reads a predicate after an anonymous blank node\n _readPredicateAfterBlank(token) {\n switch (token.type) {\n case '.':\n case '}':\n // No predicate is coming if the triple is terminated here\n this._subject = null;\n return this._readPunctuation(token);\n default:\n return this._readPredicate(token);\n }\n }\n\n // ### `_readListItem` reads items from a list\n _readListItem(token) {\n let item = null, // The item of the list\n list = null, // The list itself\n next = this._readListItem; // The next function to execute\n const previousList = this._subject, // The previous list that contains this list\n stack = this._contextStack, // The stack of parent contexts\n parent = stack[stack.length - 1]; // The parent containing the current list\n\n switch (token.type) {\n case '[':\n // Stack the current list quad and start a new quad with a blank node as subject\n this._saveContext('blank', this._graph,\n list = this._blankNode(), this.RDF_FIRST,\n this._subject = item = this._blankNode());\n next = this._readBlankNodeHead;\n break;\n case '(':\n // Stack the current list quad and start a new list\n this._saveContext('list', this._graph,\n list = this._blankNode(), this.RDF_FIRST, this.RDF_NIL);\n this._subject = null;\n break;\n case ')':\n // Closing the list; restore the parent context\n this._restoreContext('list', token);\n // If this list is contained within a parent list, return the membership quad here.\n // This will be ` rdf:first .`.\n if (stack.length !== 0 && stack[stack.length - 1].type === 'list')\n this._emit(this._subject, this._predicate, this._object, this._graph);\n // Was this list the parent's subject?\n if (this._predicate === null) {\n // The next token is the predicate\n next = this._readPredicate;\n // No list tail if this was an empty list\n if (this._subject === this.RDF_NIL)\n return next;\n }\n // The list was in the parent context's object\n else {\n next = this._getContextEndReader();\n // No list tail if this was an empty list\n if (this._object === this.RDF_NIL)\n return next;\n }\n // Close the list by making the head nil\n list = this.RDF_NIL;\n break;\n case 'literal':\n // Regular literal, can still get a datatype or language\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n next = this._readListItemDataTypeOrLang;\n }\n // Pre-datatyped string literal (prefix stores the datatype)\n else {\n item = this._literal(token.value, this._namedNode(token.prefix));\n next = this._getContextEndReader();\n }\n break;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph, this._subject, this._predicate,\n this._graph = this._blankNode());\n return this._readSubject;\n default:\n if ((item = this._readEntity(token)) === undefined)\n return;\n }\n\n // Create a new blank node if no item head was assigned yet\n if (list === null)\n this._subject = list = this._blankNode();\n\n // Is this the first element of the list?\n if (previousList === null) {\n // This list is either the subject or the object of its parent\n if (parent.predicate === null)\n parent.subject = list;\n else\n parent.object = list;\n }\n else {\n // Continue the previous list with the current list\n this._emit(previousList, this.RDF_REST, list, this._graph);\n }\n // If an item was read, add it to the list\n if (item !== null) {\n // In N3 mode, the item might be a path\n if (this._n3Mode && (token.type === 'IRI' || token.type === 'prefixed')) {\n // Create a new context to add the item's path\n this._saveContext('item', this._graph, list, this.RDF_FIRST, item);\n this._subject = item, this._predicate = null;\n // _readPath will restore the context and output the item\n return this._getPathReader(this._readListItem);\n }\n // Output the item\n this._emit(list, this.RDF_FIRST, item, this._graph);\n }\n return next;\n }\n\n // ### `_readDataTypeOrLang` reads an _optional_ datatype or language\n _readDataTypeOrLang(token) {\n return this._completeObjectLiteral(token, false);\n }\n\n\n // ### `_readListItemDataTypeOrLang` reads an _optional_ datatype or language in a list\n _readListItemDataTypeOrLang(token) {\n return this._completeObjectLiteral(token, true);\n }\n\n // ### `_completeLiteral` completes a literal with an optional datatype or language\n _completeLiteral(token) {\n // Create a simple string literal by default\n let literal = this._literal(this._literalValue);\n\n switch (token.type) {\n // Create a datatyped literal\n case 'type':\n case 'typeIRI':\n const datatype = this._readEntity(token);\n if (datatype === undefined) return; // No datatype means an error occurred\n literal = this._literal(this._literalValue, datatype);\n token = null;\n break;\n // Create a language-tagged string\n case 'langcode':\n literal = this._literal(this._literalValue, token.value);\n token = null;\n break;\n }\n\n return { token, literal };\n }\n\n // Completes a literal in subject position\n _completeSubjectLiteral(token) {\n this._subject = this._completeLiteral(token).literal;\n return this._readPredicateOrNamedGraph;\n }\n\n // Completes a literal in object position\n _completeObjectLiteral(token, listItem) {\n const completed = this._completeLiteral(token);\n if (!completed)\n return;\n this._object = completed.literal;\n\n // If this literal was part of a list, write the item\n // (we could also check the context stack, but passing in a flag is faster)\n if (listItem)\n this._emit(this._subject, this.RDF_FIRST, this._object, this._graph);\n // If the token was consumed, continue with the rest of the input\n if (completed.token === null)\n return this._getContextEndReader();\n // Otherwise, consume the token now\n else {\n this._readCallback = this._getContextEndReader();\n return this._readCallback(completed.token);\n }\n }\n\n // ### `_readFormulaTail` reads the end of a formula\n _readFormulaTail(token) {\n if (token.type !== '}')\n return this._readPunctuation(token);\n\n // Store the last quad of the formula\n if (this._subject !== null)\n this._emit(this._subject, this._predicate, this._object, this._graph);\n\n // Restore the parent context containing this formula\n this._restoreContext('formula', token);\n // If the formula was the subject, continue reading the predicate.\n // If the formula was the object, read punctuation.\n return this._object === null ? this._readPredicate : this._getContextEndReader();\n }\n\n // ### `_readPunctuation` reads punctuation between quads or quad parts\n _readPunctuation(token) {\n let next, graph = this._graph;\n const subject = this._subject, inversePredicate = this._inversePredicate;\n switch (token.type) {\n // A closing brace ends a graph\n case '}':\n if (this._graph === null)\n return this._error('Unexpected graph closing', token);\n if (this._n3Mode)\n return this._readFormulaTail(token);\n this._graph = null;\n // A dot just ends the statement, without sharing anything with the next\n case '.':\n this._subject = null;\n next = this._contextStack.length ? this._readSubject : this._readInTopContext;\n if (inversePredicate) this._inversePredicate = false;\n break;\n // Semicolon means the subject is shared; predicate and object are different\n case ';':\n next = this._readPredicate;\n break;\n // Comma means both the subject and predicate are shared; the object is different\n case ',':\n next = this._readObject;\n break;\n // {| means that the current triple is annotated with predicate-object pairs.\n case '{|':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n // Continue using the last triple as quoted triple subject for the predicate-object pairs.\n const predicate = this._predicate, object = this._object;\n this._subject = this._quad(subject, predicate, object, this.DEFAULTGRAPH);\n next = this._readPredicate;\n break;\n // |} means that the current quoted triple in annotation syntax is finalized.\n case '|}':\n if (this._subject.termType !== 'Quad')\n return this._error('Unexpected asserted triple closing', token);\n this._subject = null;\n next = this._readPunctuation;\n break;\n default:\n // An entity means this is a quad (only allowed if not already inside a graph)\n if (this._supportsQuads && this._graph === null && (graph = this._readEntity(token)) !== undefined) {\n next = this._readQuadPunctuation;\n break;\n }\n return this._error(`Expected punctuation to follow \"${this._object.id}\"`, token);\n }\n // A quad has been completed now, so return it\n if (subject !== null) {\n const predicate = this._predicate, object = this._object;\n if (!inversePredicate)\n this._emit(subject, predicate, object, graph);\n else\n this._emit(object, predicate, subject, graph);\n }\n return next;\n }\n\n // ### `_readBlankNodePunctuation` reads punctuation in a blank node\n _readBlankNodePunctuation(token) {\n let next;\n switch (token.type) {\n // Semicolon means the subject is shared; predicate and object are different\n case ';':\n next = this._readPredicate;\n break;\n // Comma means both the subject and predicate are shared; the object is different\n case ',':\n next = this._readObject;\n break;\n default:\n return this._error(`Expected punctuation to follow \"${this._object.id}\"`, token);\n }\n // A quad has been completed now, so return it\n this._emit(this._subject, this._predicate, this._object, this._graph);\n return next;\n }\n\n // ### `_readQuadPunctuation` reads punctuation after a quad\n _readQuadPunctuation(token) {\n if (token.type !== '.')\n return this._error('Expected dot to follow quad', token);\n return this._readInTopContext;\n }\n\n // ### `_readPrefix` reads the prefix of a prefix declaration\n _readPrefix(token) {\n if (token.type !== 'prefix')\n return this._error('Expected prefix to follow @prefix', token);\n this._prefix = token.value;\n return this._readPrefixIRI;\n }\n\n // ### `_readPrefixIRI` reads the IRI of a prefix declaration\n _readPrefixIRI(token) {\n if (token.type !== 'IRI')\n return this._error(`Expected IRI to follow prefix \"${this._prefix}:\"`, token);\n const prefixNode = this._readEntity(token);\n this._prefixes[this._prefix] = prefixNode.value;\n this._prefixCallback(this._prefix, prefixNode);\n return this._readDeclarationPunctuation;\n }\n\n // ### `_readBaseIRI` reads the IRI of a base declaration\n _readBaseIRI(token) {\n const iri = token.type === 'IRI' && this._resolveIRI(token.value);\n if (!iri)\n return this._error('Expected valid IRI to follow base declaration', token);\n this._setBase(iri);\n return this._readDeclarationPunctuation;\n }\n\n // ### `_readNamedGraphLabel` reads the label of a named graph\n _readNamedGraphLabel(token) {\n switch (token.type) {\n case 'IRI':\n case 'blank':\n case 'prefixed':\n return this._readSubject(token), this._readGraph;\n case '[':\n return this._readNamedGraphBlankLabel;\n default:\n return this._error('Invalid graph label', token);\n }\n }\n\n // ### `_readNamedGraphLabel` reads a blank node label of a named graph\n _readNamedGraphBlankLabel(token) {\n if (token.type !== ']')\n return this._error('Invalid graph label', token);\n this._subject = this._blankNode();\n return this._readGraph;\n }\n\n // ### `_readDeclarationPunctuation` reads the punctuation of a declaration\n _readDeclarationPunctuation(token) {\n // SPARQL-style declarations don't have punctuation\n if (this._sparqlStyle) {\n this._sparqlStyle = false;\n return this._readInTopContext(token);\n }\n\n if (token.type !== '.')\n return this._error('Expected declaration to end with a dot', token);\n return this._readInTopContext;\n }\n\n // Reads a list of quantified symbols from a @forSome or @forAll statement\n _readQuantifierList(token) {\n let entity;\n switch (token.type) {\n case 'IRI':\n case 'prefixed':\n if ((entity = this._readEntity(token, true)) !== undefined)\n break;\n default:\n return this._error(`Unexpected ${token.type}`, token);\n }\n // Without explicit quantifiers, map entities to a quantified entity\n if (!this._explicitQuantifiers)\n this._quantified[entity.id] = this._quantifier(this._blankNode().value);\n // With explicit quantifiers, output the reified quantifier\n else {\n // If this is the first item, start a new quantifier list\n if (this._subject === null)\n this._emit(this._graph || this.DEFAULTGRAPH, this._predicate,\n this._subject = this._blankNode(), this.QUANTIFIERS_GRAPH);\n // Otherwise, continue the previous list\n else\n this._emit(this._subject, this.RDF_REST,\n this._subject = this._blankNode(), this.QUANTIFIERS_GRAPH);\n // Output the list item\n this._emit(this._subject, this.RDF_FIRST, entity, this.QUANTIFIERS_GRAPH);\n }\n return this._readQuantifierPunctuation;\n }\n\n // Reads punctuation from a @forSome or @forAll statement\n _readQuantifierPunctuation(token) {\n // Read more quantifiers\n if (token.type === ',')\n return this._readQuantifierList;\n // End of the quantifier list\n else {\n // With explicit quantifiers, close the quantifier list\n if (this._explicitQuantifiers) {\n this._emit(this._subject, this.RDF_REST, this.RDF_NIL, this.QUANTIFIERS_GRAPH);\n this._subject = null;\n }\n // Read a dot\n this._readCallback = this._getContextEndReader();\n return this._readCallback(token);\n }\n }\n\n // ### `_getPathReader` reads a potential path and then resumes with the given function\n _getPathReader(afterPath) {\n this._afterPath = afterPath;\n return this._readPath;\n }\n\n // ### `_readPath` reads a potential path\n _readPath(token) {\n switch (token.type) {\n // Forward path\n case '!': return this._readForwardPath;\n // Backward path\n case '^': return this._readBackwardPath;\n // Not a path; resume reading where we left off\n default:\n const stack = this._contextStack, parent = stack.length && stack[stack.length - 1];\n // If we were reading a list item, we still need to output it\n if (parent && parent.type === 'item') {\n // The list item is the remaining subejct after reading the path\n const item = this._subject;\n // Switch back to the context of the list\n this._restoreContext('item', token);\n // Output the list item\n this._emit(this._subject, this.RDF_FIRST, item, this._graph);\n }\n return this._afterPath(token);\n }\n }\n\n // ### `_readForwardPath` reads a '!' path\n _readForwardPath(token) {\n let subject, predicate;\n const object = this._blankNode();\n // The next token is the predicate\n if ((predicate = this._readEntity(token)) === undefined)\n return;\n // If we were reading a subject, replace the subject by the path's object\n if (this._predicate === null)\n subject = this._subject, this._subject = object;\n // If we were reading an object, replace the subject by the path's object\n else\n subject = this._object, this._object = object;\n // Emit the path's current quad and read its next section\n this._emit(subject, predicate, object, this._graph);\n return this._readPath;\n }\n\n // ### `_readBackwardPath` reads a '^' path\n _readBackwardPath(token) {\n const subject = this._blankNode();\n let predicate, object;\n // The next token is the predicate\n if ((predicate = this._readEntity(token)) === undefined)\n return;\n // If we were reading a subject, replace the subject by the path's subject\n if (this._predicate === null)\n object = this._subject, this._subject = subject;\n // If we were reading an object, replace the subject by the path's subject\n else\n object = this._object, this._object = subject;\n // Emit the path's current quad and read its next section\n this._emit(subject, predicate, object, this._graph);\n return this._readPath;\n }\n\n // ### `_readRDFStarTailOrGraph` reads the graph of a nested RDF* quad or the end of a nested RDF* triple\n _readRDFStarTailOrGraph(token) {\n if (token.type !== '>>') {\n // An entity means this is a quad (only allowed if not already inside a graph)\n if (this._supportsQuads && this._graph === null && (this._graph = this._readEntity(token)) !== undefined)\n return this._readRDFStarTail;\n return this._error(`Expected >> to follow \"${this._object.id}\"`, token);\n }\n return this._readRDFStarTail(token);\n }\n\n // ### `_readRDFStarTail` reads the end of a nested RDF* triple\n _readRDFStarTail(token) {\n if (token.type !== '>>')\n return this._error(`Expected >> but got ${token.type}`, token);\n // Read the quad and restore the previous context\n const quad = this._quad(this._subject, this._predicate, this._object,\n this._graph || this.DEFAULTGRAPH);\n this._restoreContext('<<', token);\n // If the triple was the subject, continue by reading the predicate.\n if (this._subject === null) {\n this._subject = quad;\n return this._readPredicate;\n }\n // If the triple was the object, read context end.\n else {\n this._object = quad;\n return this._getContextEndReader();\n }\n }\n\n // ### `_getContextEndReader` gets the next reader function at the end of a context\n _getContextEndReader() {\n const contextStack = this._contextStack;\n if (!contextStack.length)\n return this._readPunctuation;\n\n switch (contextStack[contextStack.length - 1].type) {\n case 'blank':\n return this._readBlankNodeTail;\n case 'list':\n return this._readListItem;\n case 'formula':\n return this._readFormulaTail;\n case '<<':\n return this._readRDFStarTailOrGraph;\n }\n }\n\n // ### `_emit` sends a quad through the callback\n _emit(subject, predicate, object, graph) {\n this._callback(null, this._quad(subject, predicate, object, graph || this.DEFAULTGRAPH));\n }\n\n // ### `_error` emits an error message through the callback\n _error(message, token) {\n const err = new Error(`${message} on line ${token.line}.`);\n err.context = {\n token: token,\n line: token.line,\n previousToken: this._lexer.previousToken,\n };\n this._callback(err);\n this._callback = noop;\n }\n\n // ### `_resolveIRI` resolves an IRI against the base path\n _resolveIRI(iri) {\n return /^[a-z][a-z0-9+.-]*:/i.test(iri) ? iri : this._resolveRelativeIRI(iri);\n }\n\n // ### `_resolveRelativeIRI` resolves an IRI against the base path,\n // assuming that a base path has been set and that the IRI is indeed relative\n _resolveRelativeIRI(iri) {\n // An empty relative IRI indicates the base IRI\n if (!iri.length)\n return this._base;\n // Decide resolving strategy based in the first character\n switch (iri[0]) {\n // Resolve relative fragment IRIs against the base IRI\n case '#': return this._base + iri;\n // Resolve relative query string IRIs by replacing the query string\n case '?': return this._base.replace(/(?:\\?.*)?$/, iri);\n // Resolve root-relative IRIs at the root of the base IRI\n case '/':\n // Resolve scheme-relative IRIs to the scheme\n return (iri[1] === '/' ? this._baseScheme : this._baseRoot) + this._removeDotSegments(iri);\n // Resolve all other IRIs at the base IRI's path\n default:\n // Relative IRIs cannot contain a colon in the first path segment\n return (/^[^/:]*:/.test(iri)) ? null : this._removeDotSegments(this._basePath + iri);\n }\n }\n\n // ### `_removeDotSegments` resolves './' and '../' path segments in an IRI as per RFC3986\n _removeDotSegments(iri) {\n // Don't modify the IRI if it does not contain any dot segments\n if (!/(^|\\/)\\.\\.?($|[/#?])/.test(iri))\n return iri;\n\n // Start with an imaginary slash before the IRI in order to resolve trailing './' and '../'\n const length = iri.length;\n let result = '', i = -1, pathStart = -1, segmentStart = 0, next = '/';\n\n while (i < length) {\n switch (next) {\n // The path starts with the first slash after the authority\n case ':':\n if (pathStart < 0) {\n // Skip two slashes before the authority\n if (iri[++i] === '/' && iri[++i] === '/')\n // Skip to slash after the authority\n while ((pathStart = i + 1) < length && iri[pathStart] !== '/')\n i = pathStart;\n }\n break;\n // Don't modify a query string or fragment\n case '?':\n case '#':\n i = length;\n break;\n // Handle '/.' or '/..' path segments\n case '/':\n if (iri[i + 1] === '.') {\n next = iri[++i + 1];\n switch (next) {\n // Remove a '/.' segment\n case '/':\n result += iri.substring(segmentStart, i - 1);\n segmentStart = i + 1;\n break;\n // Remove a trailing '/.' segment\n case undefined:\n case '?':\n case '#':\n return result + iri.substring(segmentStart, i) + iri.substr(i + 1);\n // Remove a '/..' segment\n case '.':\n next = iri[++i + 1];\n if (next === undefined || next === '/' || next === '?' || next === '#') {\n result += iri.substring(segmentStart, i - 2);\n // Try to remove the parent path from result\n if ((segmentStart = result.lastIndexOf('/')) >= pathStart)\n result = result.substr(0, segmentStart);\n // Remove a trailing '/..' segment\n if (next !== '/')\n return `${result}/${iri.substr(i + 1)}`;\n segmentStart = i + 1;\n }\n }\n }\n }\n next = iri[++i];\n }\n return result + iri.substring(segmentStart);\n }\n\n // ## Public methods\n\n // ### `parse` parses the N3 input and emits each parsed quad through the callback\n parse(input, quadCallback, prefixCallback) {\n // The read callback is the next function to be executed when a token arrives.\n // We start reading in the top context.\n this._readCallback = this._readInTopContext;\n this._sparqlStyle = false;\n this._prefixes = Object.create(null);\n this._prefixes._ = this._blankNodePrefix ? this._blankNodePrefix.substr(2)\n : `b${blankNodePrefix++}_`;\n this._prefixCallback = prefixCallback || noop;\n this._inversePredicate = false;\n this._quantified = Object.create(null);\n\n // Parse synchronously if no quad callback is given\n if (!quadCallback) {\n const quads = [];\n let error;\n this._callback = (e, t) => { e ? (error = e) : t && quads.push(t); };\n this._lexer.tokenize(input).every(token => {\n return this._readCallback = this._readCallback(token);\n });\n if (error) throw error;\n return quads;\n }\n\n // Parse asynchronously otherwise, executing the read callback when a token arrives\n this._callback = quadCallback;\n this._lexer.tokenize(input, (error, token) => {\n if (error !== null)\n this._callback(error), this._callback = noop;\n else if (this._readCallback)\n this._readCallback = this._readCallback(token);\n });\n }\n}\n\n// The empty function\nfunction noop() {}\n\n// Initializes the parser with the given data factory\nfunction initDataFactory(parser, factory) {\n // Set factory methods\n const namedNode = factory.namedNode;\n parser._namedNode = namedNode;\n parser._blankNode = factory.blankNode;\n parser._literal = factory.literal;\n parser._variable = factory.variable;\n parser._quad = factory.quad;\n parser.DEFAULTGRAPH = factory.defaultGraph();\n\n // Set common named nodes\n parser.RDF_FIRST = namedNode(namespaces.rdf.first);\n parser.RDF_REST = namedNode(namespaces.rdf.rest);\n parser.RDF_NIL = namedNode(namespaces.rdf.nil);\n parser.N3_FORALL = namedNode(namespaces.r.forAll);\n parser.N3_FORSOME = namedNode(namespaces.r.forSome);\n parser.ABBREVIATIONS = {\n 'a': namedNode(namespaces.rdf.type),\n '=': namedNode(namespaces.owl.sameAs),\n '>': namedNode(namespaces.log.implies),\n };\n parser.QUANTIFIERS_GRAPH = namedNode('urn:n3:quantifiers');\n}\ninitDataFactory(N3Parser.prototype, N3DataFactory);\n","// **N3Util** provides N3 utility functions.\n\nimport N3DataFactory from './N3DataFactory';\n\n// Tests whether the given term represents an IRI\nexport function isNamedNode(term) {\n return !!term && term.termType === 'NamedNode';\n}\n\n// Tests whether the given term represents a blank node\nexport function isBlankNode(term) {\n return !!term && term.termType === 'BlankNode';\n}\n\n// Tests whether the given term represents a literal\nexport function isLiteral(term) {\n return !!term && term.termType === 'Literal';\n}\n\n// Tests whether the given term represents a variable\nexport function isVariable(term) {\n return !!term && term.termType === 'Variable';\n}\n\n// Tests whether the given term represents the default graph\nexport function isDefaultGraph(term) {\n return !!term && term.termType === 'DefaultGraph';\n}\n\n// Tests whether the given quad is in the default graph\nexport function inDefaultGraph(quad) {\n return isDefaultGraph(quad.graph);\n}\n\n// Creates a function that prepends the given IRI to a local name\nexport function prefix(iri, factory) {\n return prefixes({ '': iri.value || iri }, factory)('');\n}\n\n// Creates a function that allows registering and expanding prefixes\nexport function prefixes(defaultPrefixes, factory) {\n // Add all of the default prefixes\n const prefixes = Object.create(null);\n for (const prefix in defaultPrefixes)\n processPrefix(prefix, defaultPrefixes[prefix]);\n // Set the default factory if none was specified\n factory = factory || N3DataFactory;\n\n // Registers a new prefix (if an IRI was specified)\n // or retrieves a function that expands an existing prefix (if no IRI was specified)\n function processPrefix(prefix, iri) {\n // Create a new prefix if an IRI is specified or the prefix doesn't exist\n if (typeof iri === 'string') {\n // Create a function that expands the prefix\n const cache = Object.create(null);\n prefixes[prefix] = local => {\n return cache[local] || (cache[local] = factory.namedNode(iri + local));\n };\n }\n else if (!(prefix in prefixes)) {\n throw new Error(`Unknown prefix: ${prefix}`);\n }\n return prefixes[prefix];\n }\n return processPrefix;\n}\n","// **N3Writer** writes N3 documents.\nimport namespaces from './IRIs';\nimport { default as N3DataFactory, Term } from './N3DataFactory';\nimport { isDefaultGraph } from './N3Util';\n\nconst DEFAULTGRAPH = N3DataFactory.defaultGraph();\n\nconst { rdf, xsd } = namespaces;\n\n// Characters in literals that require escaping\nconst escape = /[\"\\\\\\t\\n\\r\\b\\f\\u0000-\\u0019\\ud800-\\udbff]/,\n escapeAll = /[\"\\\\\\t\\n\\r\\b\\f\\u0000-\\u0019]|[\\ud800-\\udbff][\\udc00-\\udfff]/g,\n escapedCharacters = {\n '\\\\': '\\\\\\\\', '\"': '\\\\\"', '\\t': '\\\\t',\n '\\n': '\\\\n', '\\r': '\\\\r', '\\b': '\\\\b', '\\f': '\\\\f',\n };\n\n// ## Placeholder class to represent already pretty-printed terms\nclass SerializedTerm extends Term {\n // Pretty-printed nodes are not equal to any other node\n // (e.g., [] does not equal [])\n equals(other) {\n return other === this;\n }\n}\n\n// ## Constructor\nexport default class N3Writer {\n constructor(outputStream, options) {\n // ### `_prefixRegex` matches a prefixed name or IRI that begins with one of the added prefixes\n this._prefixRegex = /$0^/;\n\n // Shift arguments if the first argument is not a stream\n if (outputStream && typeof outputStream.write !== 'function')\n options = outputStream, outputStream = null;\n options = options || {};\n this._lists = options.lists;\n\n // If no output stream given, send the output as string through the end callback\n if (!outputStream) {\n let output = '';\n this._outputStream = {\n write(chunk, encoding, done) { output += chunk; done && done(); },\n end: done => { done && done(null, output); },\n };\n this._endStream = true;\n }\n else {\n this._outputStream = outputStream;\n this._endStream = options.end === undefined ? true : !!options.end;\n }\n\n // Initialize writer, depending on the format\n this._subject = null;\n if (!(/triple|quad/i).test(options.format)) {\n this._lineMode = false;\n this._graph = DEFAULTGRAPH;\n this._prefixIRIs = Object.create(null);\n options.prefixes && this.addPrefixes(options.prefixes);\n if (options.baseIRI) {\n this._baseMatcher = new RegExp(`^${escapeRegex(options.baseIRI)\n }${options.baseIRI.endsWith('/') ? '' : '[#?]'}`);\n this._baseLength = options.baseIRI.length;\n }\n }\n else {\n this._lineMode = true;\n this._writeQuad = this._writeQuadLine;\n }\n }\n\n // ## Private methods\n\n // ### Whether the current graph is the default graph\n get _inDefaultGraph() {\n return DEFAULTGRAPH.equals(this._graph);\n }\n\n // ### `_write` writes the argument to the output stream\n _write(string, callback) {\n this._outputStream.write(string, 'utf8', callback);\n }\n\n // ### `_writeQuad` writes the quad to the output stream\n _writeQuad(subject, predicate, object, graph, done) {\n try {\n // Write the graph's label if it has changed\n if (!graph.equals(this._graph)) {\n // Close the previous graph and start the new one\n this._write((this._subject === null ? '' : (this._inDefaultGraph ? '.\\n' : '\\n}\\n')) +\n (DEFAULTGRAPH.equals(graph) ? '' : `${this._encodeIriOrBlank(graph)} {\\n`));\n this._graph = graph;\n this._subject = null;\n }\n // Don't repeat the subject if it's the same\n if (subject.equals(this._subject)) {\n // Don't repeat the predicate if it's the same\n if (predicate.equals(this._predicate))\n this._write(`, ${this._encodeObject(object)}`, done);\n // Same subject, different predicate\n else\n this._write(`;\\n ${\n this._encodePredicate(this._predicate = predicate)} ${\n this._encodeObject(object)}`, done);\n }\n // Different subject; write the whole quad\n else\n this._write(`${(this._subject === null ? '' : '.\\n') +\n this._encodeSubject(this._subject = subject)} ${\n this._encodePredicate(this._predicate = predicate)} ${\n this._encodeObject(object)}`, done);\n }\n catch (error) { done && done(error); }\n }\n\n // ### `_writeQuadLine` writes the quad to the output stream as a single line\n _writeQuadLine(subject, predicate, object, graph, done) {\n // Write the quad without prefixes\n delete this._prefixMatch;\n this._write(this.quadToString(subject, predicate, object, graph), done);\n }\n\n // ### `quadToString` serializes a quad as a string\n quadToString(subject, predicate, object, graph) {\n return `${this._encodeSubject(subject)} ${\n this._encodeIriOrBlank(predicate)} ${\n this._encodeObject(object)\n }${graph && graph.value ? ` ${this._encodeIriOrBlank(graph)} .\\n` : ' .\\n'}`;\n }\n\n // ### `quadsToString` serializes an array of quads as a string\n quadsToString(quads) {\n return quads.map(t => {\n return this.quadToString(t.subject, t.predicate, t.object, t.graph);\n }).join('');\n }\n\n // ### `_encodeSubject` represents a subject\n _encodeSubject(entity) {\n return entity.termType === 'Quad' ?\n this._encodeQuad(entity) : this._encodeIriOrBlank(entity);\n }\n\n // ### `_encodeIriOrBlank` represents an IRI or blank node\n _encodeIriOrBlank(entity) {\n // A blank node or list is represented as-is\n if (entity.termType !== 'NamedNode') {\n // If it is a list head, pretty-print it\n if (this._lists && (entity.value in this._lists))\n entity = this.list(this._lists[entity.value]);\n return 'id' in entity ? entity.id : `_:${entity.value}`;\n }\n let iri = entity.value;\n // Use relative IRIs if requested and possible\n if (this._baseMatcher && this._baseMatcher.test(iri))\n iri = iri.substr(this._baseLength);\n // Escape special characters\n if (escape.test(iri))\n iri = iri.replace(escapeAll, characterReplacer);\n // Try to represent the IRI as prefixed name\n const prefixMatch = this._prefixRegex.exec(iri);\n return !prefixMatch ? `<${iri}>` :\n (!prefixMatch[1] ? iri : this._prefixIRIs[prefixMatch[1]] + prefixMatch[2]);\n }\n\n // ### `_encodeLiteral` represents a literal\n _encodeLiteral(literal) {\n // Escape special characters\n let value = literal.value;\n if (escape.test(value))\n value = value.replace(escapeAll, characterReplacer);\n\n // Write a language-tagged literal\n if (literal.language)\n return `\"${value}\"@${literal.language}`;\n\n // Write dedicated literals per data type\n if (this._lineMode) {\n // Only abbreviate strings in N-Triples or N-Quads\n if (literal.datatype.value === xsd.string)\n return `\"${value}\"`;\n }\n else {\n // Use common datatype abbreviations in Turtle or TriG\n switch (literal.datatype.value) {\n case xsd.string:\n return `\"${value}\"`;\n case xsd.boolean:\n if (value === 'true' || value === 'false')\n return value;\n break;\n case xsd.integer:\n if (/^[+-]?\\d+$/.test(value))\n return value;\n break;\n case xsd.decimal:\n if (/^[+-]?\\d*\\.\\d+$/.test(value))\n return value;\n break;\n case xsd.double:\n if (/^[+-]?(?:\\d+\\.\\d*|\\.?\\d+)[eE][+-]?\\d+$/.test(value))\n return value;\n break;\n }\n }\n\n // Write a regular datatyped literal\n return `\"${value}\"^^${this._encodeIriOrBlank(literal.datatype)}`;\n }\n\n // ### `_encodePredicate` represents a predicate\n _encodePredicate(predicate) {\n return predicate.value === rdf.type ? 'a' : this._encodeIriOrBlank(predicate);\n }\n\n // ### `_encodeObject` represents an object\n _encodeObject(object) {\n switch (object.termType) {\n case 'Quad':\n return this._encodeQuad(object);\n case 'Literal':\n return this._encodeLiteral(object);\n default:\n return this._encodeIriOrBlank(object);\n }\n }\n\n // ### `_encodeQuad` encodes an RDF* quad\n _encodeQuad({ subject, predicate, object, graph }) {\n return `<<${\n this._encodeSubject(subject)} ${\n this._encodePredicate(predicate)} ${\n this._encodeObject(object)}${\n isDefaultGraph(graph) ? '' : ` ${this._encodeIriOrBlank(graph)}`}>>`;\n }\n\n // ### `_blockedWrite` replaces `_write` after the writer has been closed\n _blockedWrite() {\n throw new Error('Cannot write because the writer has been closed.');\n }\n\n // ### `addQuad` adds the quad to the output stream\n addQuad(subject, predicate, object, graph, done) {\n // The quad was given as an object, so shift parameters\n if (object === undefined)\n this._writeQuad(subject.subject, subject.predicate, subject.object, subject.graph, predicate);\n // The optional `graph` parameter was not provided\n else if (typeof graph === 'function')\n this._writeQuad(subject, predicate, object, DEFAULTGRAPH, graph);\n // The `graph` parameter was provided\n else\n this._writeQuad(subject, predicate, object, graph || DEFAULTGRAPH, done);\n }\n\n // ### `addQuads` adds the quads to the output stream\n addQuads(quads) {\n for (let i = 0; i < quads.length; i++)\n this.addQuad(quads[i]);\n }\n\n // ### `addPrefix` adds the prefix to the output stream\n addPrefix(prefix, iri, done) {\n const prefixes = {};\n prefixes[prefix] = iri;\n this.addPrefixes(prefixes, done);\n }\n\n // ### `addPrefixes` adds the prefixes to the output stream\n addPrefixes(prefixes, done) {\n // Ignore prefixes if not supported by the serialization\n if (!this._prefixIRIs)\n return done && done();\n\n // Write all new prefixes\n let hasPrefixes = false;\n for (let prefix in prefixes) {\n let iri = prefixes[prefix];\n if (typeof iri !== 'string')\n iri = iri.value;\n hasPrefixes = true;\n // Finish a possible pending quad\n if (this._subject !== null) {\n this._write(this._inDefaultGraph ? '.\\n' : '\\n}\\n');\n this._subject = null, this._graph = '';\n }\n // Store and write the prefix\n this._prefixIRIs[iri] = (prefix += ':');\n this._write(`@prefix ${prefix} <${iri}>.\\n`);\n }\n // Recreate the prefix matcher\n if (hasPrefixes) {\n let IRIlist = '', prefixList = '';\n for (const prefixIRI in this._prefixIRIs) {\n IRIlist += IRIlist ? `|${prefixIRI}` : prefixIRI;\n prefixList += (prefixList ? '|' : '') + this._prefixIRIs[prefixIRI];\n }\n IRIlist = escapeRegex(IRIlist, /[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n this._prefixRegex = new RegExp(`^(?:${prefixList})[^\\/]*$|` +\n `^(${IRIlist})([_a-zA-Z][\\\\-_a-zA-Z0-9]*)$`);\n }\n // End a prefix block with a newline\n this._write(hasPrefixes ? '\\n' : '', done);\n }\n\n // ### `blank` creates a blank node with the given content\n blank(predicate, object) {\n let children = predicate, child, length;\n // Empty blank node\n if (predicate === undefined)\n children = [];\n // Blank node passed as blank(Term(\"predicate\"), Term(\"object\"))\n else if (predicate.termType)\n children = [{ predicate: predicate, object: object }];\n // Blank node passed as blank({ predicate: predicate, object: object })\n else if (!('length' in predicate))\n children = [predicate];\n\n switch (length = children.length) {\n // Generate an empty blank node\n case 0:\n return new SerializedTerm('[]');\n // Generate a non-nested one-triple blank node\n case 1:\n child = children[0];\n if (!(child.object instanceof SerializedTerm))\n return new SerializedTerm(`[ ${this._encodePredicate(child.predicate)} ${\n this._encodeObject(child.object)} ]`);\n // Generate a multi-triple or nested blank node\n default:\n let contents = '[';\n // Write all triples in order\n for (let i = 0; i < length; i++) {\n child = children[i];\n // Write only the object is the predicate is the same as the previous\n if (child.predicate.equals(predicate))\n contents += `, ${this._encodeObject(child.object)}`;\n // Otherwise, write the predicate and the object\n else {\n contents += `${(i ? ';\\n ' : '\\n ') +\n this._encodePredicate(child.predicate)} ${\n this._encodeObject(child.object)}`;\n predicate = child.predicate;\n }\n }\n return new SerializedTerm(`${contents}\\n]`);\n }\n }\n\n // ### `list` creates a list node with the given content\n list(elements) {\n const length = elements && elements.length || 0, contents = new Array(length);\n for (let i = 0; i < length; i++)\n contents[i] = this._encodeObject(elements[i]);\n return new SerializedTerm(`(${contents.join(' ')})`);\n }\n\n // ### `end` signals the end of the output stream\n end(done) {\n // Finish a possible pending quad\n if (this._subject !== null) {\n this._write(this._inDefaultGraph ? '.\\n' : '\\n}\\n');\n this._subject = null;\n }\n // Disallow further writing\n this._write = this._blockedWrite;\n\n // Try to end the underlying stream, ensuring done is called exactly one time\n let singleDone = done && ((error, result) => { singleDone = null, done(error, result); });\n if (this._endStream) {\n try { return this._outputStream.end(singleDone); }\n catch (error) { /* error closing stream */ }\n }\n singleDone && singleDone();\n }\n}\n\n// Replaces a character by its escaped version\nfunction characterReplacer(character) {\n // Replace a single character by its escaped version\n let result = escapedCharacters[character];\n if (result === undefined) {\n // Replace a single character with its 4-bit unicode escape sequence\n if (character.length === 1) {\n result = character.charCodeAt(0).toString(16);\n result = '\\\\u0000'.substr(0, 6 - result.length) + result;\n }\n // Replace a surrogate pair with its 8-bit unicode escape sequence\n else {\n result = ((character.charCodeAt(0) - 0xD800) * 0x400 +\n character.charCodeAt(1) + 0x2400).toString(16);\n result = '\\\\U00000000'.substr(0, 10 - result.length) + result;\n }\n }\n return result;\n}\n\nfunction escapeRegex(regex) {\n return regex.replace(/[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n}\n","// **N3Store** objects store N3 quads by graph in memory.\nimport { Readable } from 'readable-stream';\nimport { default as N3DataFactory, termToId, termFromId } from './N3DataFactory';\nimport namespaces from './IRIs';\nimport { isDefaultGraph } from './N3Util';\n\n// ## Constructor\nexport default class N3Store {\n constructor(quads, options) {\n // The number of quads is initially zero\n this._size = 0;\n // `_graphs` contains subject, predicate, and object indexes per graph\n this._graphs = Object.create(null);\n // `_ids` maps entities such as `http://xmlns.com/foaf/0.1/name` to numbers,\n // saving memory by using only numbers as keys in `_graphs`\n this._id = 0;\n this._ids = Object.create(null);\n this._entities = Object.create(null); // inverse of `_ids`\n // `_blankNodeIndex` is the index of the last automatically named blank node\n this._blankNodeIndex = 0;\n\n // Shift parameters if `quads` is not given\n if (!options && quads && !quads[0])\n options = quads, quads = null;\n options = options || {};\n this._factory = options.factory || N3DataFactory;\n\n // Add quads if passed\n if (quads)\n this.addQuads(quads);\n }\n\n _termFromId(id, factory) {\n if (id[0] === '.') {\n const entities = this._entities;\n const terms = id.split('.');\n const q = this._factory.quad(\n this._termFromId(entities[terms[1]]),\n this._termFromId(entities[terms[2]]),\n this._termFromId(entities[terms[3]]),\n terms[4] && this._termFromId(entities[terms[4]])\n );\n return q;\n }\n return termFromId(id, factory);\n }\n\n _termToNumericId(term) {\n if (term.termType === 'Quad') {\n const s = this._termToNumericId(term.subject),\n p = this._termToNumericId(term.predicate),\n o = this._termToNumericId(term.object);\n let g;\n\n return s && p && o && (isDefaultGraph(term.graph) || (g = this._termToNumericId(term.graph))) &&\n this._ids[g ? `.${s}.${p}.${o}.${g}` : `.${s}.${p}.${o}`];\n }\n return this._ids[termToId(term)];\n }\n\n _termToNewNumericId(term) {\n // This assumes that no graph term is present - we may wish to error if there is one\n const str = term && term.termType === 'Quad' ?\n `.${this._termToNewNumericId(term.subject)}.${this._termToNewNumericId(term.predicate)}.${this._termToNewNumericId(term.object)}${\n isDefaultGraph(term.graph) ? '' : `.${this._termToNewNumericId(term.graph)}`\n }`\n : termToId(term);\n\n return this._ids[str] || (this._ids[this._entities[++this._id] = str] = this._id);\n }\n\n // ## Public properties\n\n // ### `size` returns the number of quads in the store\n get size() {\n // Return the quad count if if was cached\n let size = this._size;\n if (size !== null)\n return size;\n\n // Calculate the number of quads by counting to the deepest level\n size = 0;\n const graphs = this._graphs;\n let subjects, subject;\n for (const graphKey in graphs)\n for (const subjectKey in (subjects = graphs[graphKey].subjects))\n for (const predicateKey in (subject = subjects[subjectKey]))\n size += Object.keys(subject[predicateKey]).length;\n return this._size = size;\n }\n\n // ## Private methods\n\n // ### `_addToIndex` adds a quad to a three-layered index.\n // Returns if the index has changed, if the entry did not already exist.\n _addToIndex(index0, key0, key1, key2) {\n // Create layers as necessary\n const index1 = index0[key0] || (index0[key0] = {});\n const index2 = index1[key1] || (index1[key1] = {});\n // Setting the key to _any_ value signals the presence of the quad\n const existed = key2 in index2;\n if (!existed)\n index2[key2] = null;\n return !existed;\n }\n\n // ### `_removeFromIndex` removes a quad from a three-layered index\n _removeFromIndex(index0, key0, key1, key2) {\n // Remove the quad from the index\n const index1 = index0[key0], index2 = index1[key1];\n delete index2[key2];\n\n // Remove intermediary index layers if they are empty\n for (const key in index2) return;\n delete index1[key1];\n for (const key in index1) return;\n delete index0[key0];\n }\n\n // ### `_findInIndex` finds a set of quads in a three-layered index.\n // The index base is `index0` and the keys at each level are `key0`, `key1`, and `key2`.\n // Any of these keys can be undefined, which is interpreted as a wildcard.\n // `name0`, `name1`, and `name2` are the names of the keys at each level,\n // used when reconstructing the resulting quad\n // (for instance: _subject_, _predicate_, and _object_).\n // Finally, `graphId` will be the graph of the created quads.\n *_findInIndex(index0, key0, key1, key2, name0, name1, name2, graphId) {\n let tmp, index1, index2;\n const entityKeys = this._entities;\n const graph = this._termFromId(graphId, this._factory);\n const parts = { subject: null, predicate: null, object: null };\n\n // If a key is specified, use only that part of index 0.\n if (key0) (tmp = index0, index0 = {})[key0] = tmp[key0];\n for (const value0 in index0) {\n if (index1 = index0[value0]) {\n parts[name0] = this._termFromId(entityKeys[value0], this._factory);\n // If a key is specified, use only that part of index 1.\n if (key1) (tmp = index1, index1 = {})[key1] = tmp[key1];\n for (const value1 in index1) {\n if (index2 = index1[value1]) {\n parts[name1] = this._termFromId(entityKeys[value1], this._factory);\n // If a key is specified, use only that part of index 2, if it exists.\n const values = key2 ? (key2 in index2 ? [key2] : []) : Object.keys(index2);\n // Create quads for all items found in index 2.\n for (let l = 0; l < values.length; l++) {\n parts[name2] = this._termFromId(entityKeys[values[l]], this._factory);\n yield this._factory.quad(parts.subject, parts.predicate, parts.object, graph);\n }\n }\n }\n }\n }\n }\n\n // ### `_loop` executes the callback on all keys of index 0\n _loop(index0, callback) {\n for (const key0 in index0)\n callback(key0);\n }\n\n // ### `_loopByKey0` executes the callback on all keys of a certain entry in index 0\n _loopByKey0(index0, key0, callback) {\n let index1, key1;\n if (index1 = index0[key0]) {\n for (key1 in index1)\n callback(key1);\n }\n }\n\n // ### `_loopByKey1` executes the callback on given keys of all entries in index 0\n _loopByKey1(index0, key1, callback) {\n let key0, index1;\n for (key0 in index0) {\n index1 = index0[key0];\n if (index1[key1])\n callback(key0);\n }\n }\n\n // ### `_loopBy2Keys` executes the callback on given keys of certain entries in index 2\n _loopBy2Keys(index0, key0, key1, callback) {\n let index1, index2, key2;\n if ((index1 = index0[key0]) && (index2 = index1[key1])) {\n for (key2 in index2)\n callback(key2);\n }\n }\n\n // ### `_countInIndex` counts matching quads in a three-layered index.\n // The index base is `index0` and the keys at each level are `key0`, `key1`, and `key2`.\n // Any of these keys can be undefined, which is interpreted as a wildcard.\n _countInIndex(index0, key0, key1, key2) {\n let count = 0, tmp, index1, index2;\n\n // If a key is specified, count only that part of index 0\n if (key0) (tmp = index0, index0 = {})[key0] = tmp[key0];\n for (const value0 in index0) {\n if (index1 = index0[value0]) {\n // If a key is specified, count only that part of index 1\n if (key1) (tmp = index1, index1 = {})[key1] = tmp[key1];\n for (const value1 in index1) {\n if (index2 = index1[value1]) {\n // If a key is specified, count the quad if it exists\n if (key2) (key2 in index2) && count++;\n // Otherwise, count all quads\n else count += Object.keys(index2).length;\n }\n }\n }\n }\n return count;\n }\n\n // ### `_getGraphs` returns an array with the given graph,\n // or all graphs if the argument is null or undefined.\n _getGraphs(graph) {\n if (!isString(graph))\n return this._graphs;\n const graphs = {};\n graphs[graph] = this._graphs[graph];\n return graphs;\n }\n\n // ### `_uniqueEntities` returns a function that accepts an entity ID\n // and passes the corresponding entity to callback if it hasn't occurred before.\n _uniqueEntities(callback) {\n const uniqueIds = Object.create(null);\n return id => {\n if (!(id in uniqueIds)) {\n uniqueIds[id] = true;\n callback(this._termFromId(this._entities[id], this._factory));\n }\n };\n }\n\n // ## Public methods\n\n // ### `add` adds the specified quad to the dataset.\n // Returns the dataset instance it was called on.\n // Existing quads, as defined in Quad.equals, will be ignored.\n add(quad) {\n this.addQuad(quad);\n return this;\n }\n\n // ### `addQuad` adds a new quad to the store.\n // Returns if the quad index has changed, if the quad did not already exist.\n addQuad(subject, predicate, object, graph) {\n // Shift arguments if a quad object is given instead of components\n if (!predicate)\n graph = subject.graph, object = subject.object,\n predicate = subject.predicate, subject = subject.subject;\n\n // Convert terms to internal string representation\n graph = termToId(graph);\n\n // Find the graph that will contain the triple\n let graphItem = this._graphs[graph];\n // Create the graph if it doesn't exist yet\n if (!graphItem) {\n graphItem = this._graphs[graph] = { subjects: {}, predicates: {}, objects: {} };\n // Freezing a graph helps subsequent `add` performance,\n // and properties will never be modified anyway\n Object.freeze(graphItem);\n }\n\n // Since entities can often be long IRIs, we avoid storing them in every index.\n // Instead, we have a separate index that maps entities to numbers,\n // which are then used as keys in the other indexes.\n subject = this._termToNewNumericId(subject);\n predicate = this._termToNewNumericId(predicate);\n object = this._termToNewNumericId(object);\n\n const changed = this._addToIndex(graphItem.subjects, subject, predicate, object);\n this._addToIndex(graphItem.predicates, predicate, object, subject);\n this._addToIndex(graphItem.objects, object, subject, predicate);\n\n // The cached quad count is now invalid\n this._size = null;\n return changed;\n }\n\n // ### `addQuads` adds multiple quads to the store\n addQuads(quads) {\n for (let i = 0; i < quads.length; i++)\n this.addQuad(quads[i]);\n }\n\n // ### `delete` removes the specified quad from the dataset.\n // Returns the dataset instance it was called on.\n delete(quad) {\n this.removeQuad(quad);\n return this;\n }\n\n // ### `has` determines whether a dataset includes a certain quad or quad pattern.\n has(subjectOrQuad, predicate, object, graph) {\n if (subjectOrQuad && subjectOrQuad.subject)\n ({ subject: subjectOrQuad, predicate, object, graph } = subjectOrQuad);\n return !this.readQuads(subjectOrQuad, predicate, object, graph).next().done;\n }\n\n // ### `import` adds a stream of quads to the store\n import(stream) {\n stream.on('data', quad => { this.addQuad(quad); });\n return stream;\n }\n\n // ### `removeQuad` removes a quad from the store if it exists\n removeQuad(subject, predicate, object, graph) {\n // Shift arguments if a quad object is given instead of components\n if (!predicate)\n graph = subject.graph, object = subject.object,\n predicate = subject.predicate, subject = subject.subject;\n\n // Convert terms to internal string representation\n graph = termToId(graph);\n\n // Find internal identifiers for all components\n // and verify the quad exists.\n const graphs = this._graphs;\n let graphItem, subjects, predicates;\n if (!(subject = subject && this._termToNumericId(subject)) || !(predicate = predicate && this._termToNumericId(predicate)) ||\n !(object = object && this._termToNumericId(object)) || !(graphItem = graphs[graph]) ||\n !(subjects = graphItem.subjects[subject]) ||\n !(predicates = subjects[predicate]) ||\n !(object in predicates))\n return false;\n\n // Remove it from all indexes\n this._removeFromIndex(graphItem.subjects, subject, predicate, object);\n this._removeFromIndex(graphItem.predicates, predicate, object, subject);\n this._removeFromIndex(graphItem.objects, object, subject, predicate);\n if (this._size !== null) this._size--;\n\n // Remove the graph if it is empty\n for (subject in graphItem.subjects) return true;\n delete graphs[graph];\n return true;\n }\n\n // ### `removeQuads` removes multiple quads from the store\n removeQuads(quads) {\n for (let i = 0; i < quads.length; i++)\n this.removeQuad(quads[i]);\n }\n\n // ### `remove` removes a stream of quads from the store\n remove(stream) {\n stream.on('data', quad => { this.removeQuad(quad); });\n return stream;\n }\n\n // ### `removeMatches` removes all matching quads from the store\n // Setting any field to `undefined` or `null` indicates a wildcard.\n removeMatches(subject, predicate, object, graph) {\n const stream = new Readable({ objectMode: true });\n\n stream._read = () => {\n for (const quad of this.readQuads(subject, predicate, object, graph))\n stream.push(quad);\n stream.push(null);\n };\n\n return this.remove(stream);\n }\n\n // ### `deleteGraph` removes all triples with the given graph from the store\n deleteGraph(graph) {\n return this.removeMatches(null, null, null, graph);\n }\n\n // ### `getQuads` returns an array of quads matching a pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getQuads(subject, predicate, object, graph) {\n return [...this.readQuads(subject, predicate, object, graph)];\n }\n\n // ### `readQuads` returns an generator of quads matching a pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n *readQuads(subject, predicate, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, subjectId, predicateId, objectId;\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n predicate && !(predicateId = this._termToNumericId(predicate)) ||\n object && !(objectId = this._termToNumericId(object)))\n return;\n\n for (const graphId in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graphId]) {\n // Choose the optimal index, based on what fields are present\n if (subjectId) {\n if (objectId)\n // If subject and object are given, the object index will be the fastest\n yield* this._findInIndex(content.objects, objectId, subjectId, predicateId,\n 'object', 'subject', 'predicate', graphId);\n else\n // If only subject and possibly predicate are given, the subject index will be the fastest\n yield* this._findInIndex(content.subjects, subjectId, predicateId, null,\n 'subject', 'predicate', 'object', graphId);\n }\n else if (predicateId)\n // If only predicate and possibly object are given, the predicate index will be the fastest\n yield* this._findInIndex(content.predicates, predicateId, objectId, null,\n 'predicate', 'object', 'subject', graphId);\n else if (objectId)\n // If only object is given, the object index will be the fastest\n yield* this._findInIndex(content.objects, objectId, null, null,\n 'object', 'subject', 'predicate', graphId);\n else\n // If nothing is given, iterate subjects and predicates first\n yield* this._findInIndex(content.subjects, null, null, null,\n 'subject', 'predicate', 'object', graphId);\n }\n }\n }\n\n // ### `match` returns a new dataset that is comprised of all quads in the current instance matching the given arguments.\n // The logic described in Quad Matching is applied for each quad in this dataset to check if it should be included in the output dataset.\n // Note: This method always returns a new DatasetCore, even if that dataset contains no quads.\n // Note: Since a DatasetCore is an unordered set, the order of the quads within the returned sequence is arbitrary.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n // For backwards compatibility, the object return also implements the Readable stream interface.\n match(subject, predicate, object, graph) {\n return new DatasetCoreAndReadableStream(this, subject, predicate, object, graph);\n }\n\n // ### `countQuads` returns the number of quads matching a pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n countQuads(subject, predicate, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let count = 0, content, subjectId, predicateId, objectId;\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n predicate && !(predicateId = this._termToNumericId(predicate)) ||\n object && !(objectId = this._termToNumericId(object)))\n return 0;\n\n for (const graphId in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graphId]) {\n // Choose the optimal index, based on what fields are present\n if (subject) {\n if (object)\n // If subject and object are given, the object index will be the fastest\n count += this._countInIndex(content.objects, objectId, subjectId, predicateId);\n else\n // If only subject and possibly predicate are given, the subject index will be the fastest\n count += this._countInIndex(content.subjects, subjectId, predicateId, objectId);\n }\n else if (predicate) {\n // If only predicate and possibly object are given, the predicate index will be the fastest\n count += this._countInIndex(content.predicates, predicateId, objectId, subjectId);\n }\n else {\n // If only object is possibly given, the object index will be the fastest\n count += this._countInIndex(content.objects, objectId, subjectId, predicateId);\n }\n }\n }\n return count;\n }\n\n // ### `forEach` executes the callback on all quads.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forEach(callback, subject, predicate, object, graph) {\n this.some(quad => {\n callback(quad);\n return false;\n }, subject, predicate, object, graph);\n }\n\n // ### `every` executes the callback on all quads,\n // and returns `true` if it returns truthy for all them.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n every(callback, subject, predicate, object, graph) {\n let some = false;\n const every = !this.some(quad => {\n some = true;\n return !callback(quad);\n }, subject, predicate, object, graph);\n return some && every;\n }\n\n // ### `some` executes the callback on all quads,\n // and returns `true` if it returns truthy for any of them.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n some(callback, subject, predicate, object, graph) {\n for (const quad of this.readQuads(subject, predicate, object, graph))\n if (callback(quad))\n return true;\n return false;\n }\n\n // ### `getSubjects` returns all subjects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getSubjects(predicate, object, graph) {\n const results = [];\n this.forSubjects(s => { results.push(s); }, predicate, object, graph);\n return results;\n }\n\n // ### `forSubjects` executes the callback on all subjects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forSubjects(callback, predicate, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, predicateId, objectId;\n callback = this._uniqueEntities(callback);\n\n // Translate IRIs to internal index keys.\n if (predicate && !(predicateId = this._termToNumericId(predicate)) ||\n object && !(objectId = this._termToNumericId(object)))\n return;\n\n for (graph in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graph]) {\n // Choose optimal index based on which fields are wildcards\n if (predicateId) {\n if (objectId)\n // If predicate and object are given, the POS index is best.\n this._loopBy2Keys(content.predicates, predicateId, objectId, callback);\n else\n // If only predicate is given, the SPO index is best.\n this._loopByKey1(content.subjects, predicateId, callback);\n }\n else if (objectId)\n // If only object is given, the OSP index is best.\n this._loopByKey0(content.objects, objectId, callback);\n else\n // If no params given, iterate all the subjects\n this._loop(content.subjects, callback);\n }\n }\n }\n\n // ### `getPredicates` returns all predicates that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getPredicates(subject, object, graph) {\n const results = [];\n this.forPredicates(p => { results.push(p); }, subject, object, graph);\n return results;\n }\n\n // ### `forPredicates` executes the callback on all predicates that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forPredicates(callback, subject, object, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, subjectId, objectId;\n callback = this._uniqueEntities(callback);\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n object && !(objectId = this._termToNumericId(object)))\n return;\n\n for (graph in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graph]) {\n // Choose optimal index based on which fields are wildcards\n if (subjectId) {\n if (objectId)\n // If subject and object are given, the OSP index is best.\n this._loopBy2Keys(content.objects, objectId, subjectId, callback);\n else\n // If only subject is given, the SPO index is best.\n this._loopByKey0(content.subjects, subjectId, callback);\n }\n else if (objectId)\n // If only object is given, the POS index is best.\n this._loopByKey1(content.predicates, objectId, callback);\n else\n // If no params given, iterate all the predicates.\n this._loop(content.predicates, callback);\n }\n }\n }\n\n // ### `getObjects` returns all objects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getObjects(subject, predicate, graph) {\n const results = [];\n this.forObjects(o => { results.push(o); }, subject, predicate, graph);\n return results;\n }\n\n // ### `forObjects` executes the callback on all objects that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forObjects(callback, subject, predicate, graph) {\n // Convert terms to internal string representation\n graph = graph && termToId(graph);\n\n const graphs = this._getGraphs(graph);\n let content, subjectId, predicateId;\n callback = this._uniqueEntities(callback);\n\n // Translate IRIs to internal index keys.\n if (subject && !(subjectId = this._termToNumericId(subject)) ||\n predicate && !(predicateId = this._termToNumericId(predicate)))\n return;\n\n for (graph in graphs) {\n // Only if the specified graph contains triples, there can be results\n if (content = graphs[graph]) {\n // Choose optimal index based on which fields are wildcards\n if (subjectId) {\n if (predicateId)\n // If subject and predicate are given, the SPO index is best.\n this._loopBy2Keys(content.subjects, subjectId, predicateId, callback);\n else\n // If only subject is given, the OSP index is best.\n this._loopByKey1(content.objects, subjectId, callback);\n }\n else if (predicateId)\n // If only predicate is given, the POS index is best.\n this._loopByKey0(content.predicates, predicateId, callback);\n else\n // If no params given, iterate all the objects.\n this._loop(content.objects, callback);\n }\n }\n }\n\n // ### `getGraphs` returns all graphs that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n getGraphs(subject, predicate, object) {\n const results = [];\n this.forGraphs(g => { results.push(g); }, subject, predicate, object);\n return results;\n }\n\n // ### `forGraphs` executes the callback on all graphs that match the pattern.\n // Setting any field to `undefined` or `null` indicates a wildcard.\n forGraphs(callback, subject, predicate, object) {\n for (const graph in this._graphs) {\n this.some(quad => {\n callback(quad.graph);\n return true; // Halt iteration of some()\n }, subject, predicate, object, graph);\n }\n }\n\n // ### `createBlankNode` creates a new blank node, returning its name\n createBlankNode(suggestedName) {\n let name, index;\n // Generate a name based on the suggested name\n if (suggestedName) {\n name = suggestedName = `_:${suggestedName}`, index = 1;\n while (this._ids[name])\n name = suggestedName + index++;\n }\n // Generate a generic blank node name\n else {\n do { name = `_:b${this._blankNodeIndex++}`; }\n while (this._ids[name]);\n }\n // Add the blank node to the entities, avoiding the generation of duplicates\n this._ids[name] = ++this._id;\n this._entities[this._id] = name;\n return this._factory.blankNode(name.substr(2));\n }\n\n // ### `extractLists` finds and removes all list triples\n // and returns the items per list.\n extractLists({ remove = false, ignoreErrors = false } = {}) {\n const lists = {}; // has scalar keys so could be a simple Object\n const onError = ignoreErrors ? (() => true) :\n ((node, message) => { throw new Error(`${node.value} ${message}`); });\n\n // Traverse each list from its tail\n const tails = this.getQuads(null, namespaces.rdf.rest, namespaces.rdf.nil, null);\n const toRemove = remove ? [...tails] : [];\n tails.forEach(tailQuad => {\n const items = []; // the members found as objects of rdf:first quads\n let malformed = false; // signals whether the current list is malformed\n let head; // the head of the list (_:b1 in above example)\n let headPos; // set to subject or object when head is set\n const graph = tailQuad.graph; // make sure list is in exactly one graph\n\n // Traverse the list from tail to end\n let current = tailQuad.subject;\n while (current && !malformed) {\n const objectQuads = this.getQuads(null, null, current, null);\n const subjectQuads = this.getQuads(current, null, null, null);\n let quad, first = null, rest = null, parent = null;\n\n // Find the first and rest of this list node\n for (let i = 0; i < subjectQuads.length && !malformed; i++) {\n quad = subjectQuads[i];\n if (!quad.graph.equals(graph))\n malformed = onError(current, 'not confined to single graph');\n else if (head)\n malformed = onError(current, 'has non-list arcs out');\n\n // one rdf:first\n else if (quad.predicate.value === namespaces.rdf.first) {\n if (first)\n malformed = onError(current, 'has multiple rdf:first arcs');\n else\n toRemove.push(first = quad);\n }\n\n // one rdf:rest\n else if (quad.predicate.value === namespaces.rdf.rest) {\n if (rest)\n malformed = onError(current, 'has multiple rdf:rest arcs');\n else\n toRemove.push(rest = quad);\n }\n\n // alien triple\n else if (objectQuads.length)\n malformed = onError(current, 'can\\'t be subject and object');\n else {\n head = quad; // e.g. { (1 2 3) :p :o }\n headPos = 'subject';\n }\n }\n\n // { :s :p (1 2) } arrives here with no head\n // { (1 2) :p :o } arrives here with head set to the list.\n for (let i = 0; i < objectQuads.length && !malformed; ++i) {\n quad = objectQuads[i];\n if (head)\n malformed = onError(current, 'can\\'t have coreferences');\n // one rdf:rest\n else if (quad.predicate.value === namespaces.rdf.rest) {\n if (parent)\n malformed = onError(current, 'has incoming rdf:rest arcs');\n else\n parent = quad;\n }\n else {\n head = quad; // e.g. { :s :p (1 2) }\n headPos = 'object';\n }\n }\n\n // Store the list item and continue with parent\n if (!first)\n malformed = onError(current, 'has no list head');\n else\n items.unshift(first.object);\n current = parent && parent.subject;\n }\n\n // Don't remove any quads if the list is malformed\n if (malformed)\n remove = false;\n // Store the list under the value of its head\n else if (head)\n lists[head[headPos].value] = items;\n });\n\n // Remove list quads if requested\n if (remove)\n this.removeQuads(toRemove);\n return lists;\n }\n\n // ### Store is an iterable.\n // Can be used where iterables are expected: for...of loops, array spread operator,\n // `yield*`, and destructuring assignment (order is not guaranteed).\n *[Symbol.iterator]() {\n yield* this.readQuads();\n }\n}\n\n// Determines whether the argument is a string\nfunction isString(s) {\n return typeof s === 'string' || s instanceof String;\n}\n\n/**\n * A class that implements both DatasetCore and Readable.\n */\nclass DatasetCoreAndReadableStream extends Readable {\n constructor(n3Store, subject, predicate, object, graph) {\n super({ objectMode: true });\n Object.assign(this, { n3Store, subject, predicate, object, graph });\n }\n\n get filtered() {\n if (!this._filtered) {\n const { n3Store, graph, object, predicate, subject } = this;\n const newStore = this._filtered = new N3Store({ factory: n3Store._factory });\n for (const quad of n3Store.readQuads(subject, predicate, object, graph))\n newStore.addQuad(quad);\n }\n return this._filtered;\n }\n\n get size() {\n return this.filtered.size;\n }\n\n _read() {\n for (const quad of this)\n this.push(quad);\n this.push(null);\n }\n\n add(quad) {\n return this.filtered.add(quad);\n }\n\n delete(quad) {\n return this.filtered.delete(quad);\n }\n\n has(quad) {\n return this.filtered.has(quad);\n }\n\n match(subject, predicate, object, graph) {\n return new DatasetCoreAndReadableStream(this.filtered, subject, predicate, object, graph);\n }\n\n *[Symbol.iterator]() {\n yield* this._filtered || this.n3Store.readQuads(this.subject, this.predicate, this.object, this.graph);\n }\n}\n","// **N3StreamParser** parses a text stream into a quad stream.\nimport { Transform } from 'readable-stream';\nimport N3Parser from './N3Parser';\n\n// ## Constructor\nexport default class N3StreamParser extends Transform {\n constructor(options) {\n super({ decodeStrings: true });\n this._readableState.objectMode = true;\n\n // Set up parser with dummy stream to obtain `data` and `end` callbacks\n const parser = new N3Parser(options);\n let onData, onEnd;\n parser.parse({\n on: (event, callback) => {\n switch (event) {\n case 'data': onData = callback; break;\n case 'end': onEnd = callback; break;\n }\n },\n },\n // Handle quads by pushing them down the pipeline\n (error, quad) => { error && this.emit('error', error) || quad && this.push(quad); },\n // Emit prefixes through the `prefix` event\n (prefix, uri) => { this.emit('prefix', prefix, uri); }\n );\n\n // Implement Transform methods through parser callbacks\n this._transform = (chunk, encoding, done) => { onData(chunk); done(); };\n this._flush = done => { onEnd(); done(); };\n }\n\n // ### Parses a stream of strings\n import(stream) {\n stream.on('data', chunk => { this.write(chunk); });\n stream.on('end', () => { this.end(); });\n stream.on('error', error => { this.emit('error', error); });\n return this;\n }\n}\n","// **N3StreamWriter** serializes a quad stream into a text stream.\nimport { Transform } from 'readable-stream';\nimport N3Writer from './N3Writer';\n\n// ## Constructor\nexport default class N3StreamWriter extends Transform {\n constructor(options) {\n super({ encoding: 'utf8', writableObjectMode: true });\n\n // Set up writer with a dummy stream object\n const writer = this._writer = new N3Writer({\n write: (quad, encoding, callback) => { this.push(quad); callback && callback(); },\n end: callback => { this.push(null); callback && callback(); },\n }, options);\n\n // Implement Transform methods on top of writer\n this._transform = (quad, encoding, done) => { writer.addQuad(quad, done); };\n this._flush = done => { writer.end(done); };\n }\n\n// ### Serializes a stream of quads\n import(stream) {\n stream.on('data', quad => { this.write(quad); });\n stream.on('end', () => { this.end(); });\n stream.on('error', error => { this.emit('error', error); });\n stream.on('prefix', (prefix, iri) => { this._writer.addPrefix(prefix, iri); });\n return this;\n }\n}\n","import Lexer from './N3Lexer';\nimport Parser from './N3Parser';\nimport Writer from './N3Writer';\nimport Store from './N3Store';\nimport StreamParser from './N3StreamParser';\nimport StreamWriter from './N3StreamWriter';\nimport * as Util from './N3Util';\n\nimport {\n default as DataFactory,\n\n Term,\n NamedNode,\n Literal,\n BlankNode,\n Variable,\n DefaultGraph,\n Quad,\n Triple,\n\n termFromId,\n termToId,\n} from './N3DataFactory';\n\n// Named exports\nexport {\n Lexer,\n Parser,\n Writer,\n Store,\n StreamParser,\n StreamWriter,\n Util,\n\n DataFactory,\n\n Term,\n NamedNode,\n Literal,\n BlankNode,\n Variable,\n DefaultGraph,\n Quad,\n Triple,\n\n termFromId,\n termToId,\n};\n\n// Export all named exports as a default object for backward compatibility\nexport default {\n Lexer,\n Parser,\n Writer,\n Store,\n StreamParser,\n StreamWriter,\n Util,\n\n DataFactory,\n\n Term,\n NamedNode,\n Literal,\n BlankNode,\n Variable,\n DefaultGraph,\n Quad,\n Triple,\n\n termFromId,\n termToId,\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","(function() {\n var root;\n\n\tif (typeof window === 'object' && window) {\n\t\troot = window;\n\t} else {\n\t\troot = global;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = root.Promise ? root.Promise : Promise;\n\t} else if (!root.Promise) {\n\t\troot.Promise = Promise;\n\t}\n\n\t// Use polyfill for setImmediate for performance gains\n\tvar asap = root.setImmediate || function(fn) { setTimeout(fn, 1); };\n\n\t// Polyfill for Function.prototype.bind\n\tfunction bind(fn, thisArg) {\n\t\treturn function() {\n\t\t\tfn.apply(thisArg, arguments);\n\t\t}\n\t}\n\n\tvar isArray = Array.isArray || function(value) { return Object.prototype.toString.call(value) === \"[object Array]\" };\n\n\tfunction Promise(fn) {\n\t\tif (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n\t\tif (typeof fn !== 'function') throw new TypeError('not a function');\n\t\tthis._state = null;\n\t\tthis._value = null;\n\t\tthis._deferreds = []\n\n\t\tdoResolve(fn, bind(resolve, this), bind(reject, this))\n\t}\n\n\tfunction handle(deferred) {\n\t\tvar me = this;\n\t\tif (this._state === null) {\n\t\t\tthis._deferreds.push(deferred);\n\t\t\treturn\n\t\t}\n\t\tasap(function() {\n\t\t\tvar cb = me._state ? deferred.onFulfilled : deferred.onRejected\n\t\t\tif (cb === null) {\n\t\t\t\t(me._state ? deferred.resolve : deferred.reject)(me._value);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar ret;\n\t\t\ttry {\n\t\t\t\tret = cb(me._value);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tdeferred.reject(e);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdeferred.resolve(ret);\n\t\t})\n\t}\n\n\tfunction resolve(newValue) {\n\t\ttry { //Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n\t\t\tif (newValue === this) throw new TypeError('A promise cannot be resolved with itself.');\n\t\t\tif (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n\t\t\t\tvar then = newValue.then;\n\t\t\t\tif (typeof then === 'function') {\n\t\t\t\t\tdoResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._state = true;\n\t\t\tthis._value = newValue;\n\t\t\tfinale.call(this);\n\t\t} catch (e) { reject.call(this, e); }\n\t}\n\n\tfunction reject(newValue) {\n\t\tthis._state = false;\n\t\tthis._value = newValue;\n\t\tfinale.call(this);\n\t}\n\n\tfunction finale() {\n\t\tfor (var i = 0, len = this._deferreds.length; i < len; i++) {\n\t\t\thandle.call(this, this._deferreds[i]);\n\t\t}\n\t\tthis._deferreds = null;\n\t}\n\n\tfunction Handler(onFulfilled, onRejected, resolve, reject){\n\t\tthis.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n\t\tthis.onRejected = typeof onRejected === 'function' ? onRejected : null;\n\t\tthis.resolve = resolve;\n\t\tthis.reject = reject;\n\t}\n\n\t/**\n\t * Take a potentially misbehaving resolver function and make sure\n\t * onFulfilled and onRejected are only called once.\n\t *\n\t * Makes no guarantees about asynchrony.\n\t */\n\tfunction doResolve(fn, onFulfilled, onRejected) {\n\t\tvar done = false;\n\t\ttry {\n\t\t\tfn(function (value) {\n\t\t\t\tif (done) return;\n\t\t\t\tdone = true;\n\t\t\t\tonFulfilled(value);\n\t\t\t}, function (reason) {\n\t\t\t\tif (done) return;\n\t\t\t\tdone = true;\n\t\t\t\tonRejected(reason);\n\t\t\t})\n\t\t} catch (ex) {\n\t\t\tif (done) return;\n\t\t\tdone = true;\n\t\t\tonRejected(ex);\n\t\t}\n\t}\n\n\tPromise.prototype['catch'] = function (onRejected) {\n\t\treturn this.then(null, onRejected);\n\t};\n\n\tPromise.prototype.then = function(onFulfilled, onRejected) {\n\t\tvar me = this;\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\thandle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));\n\t\t})\n\t};\n\n\tPromise.all = function () {\n\t\tvar args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tif (args.length === 0) return resolve([]);\n\t\t\tvar remaining = args.length;\n\t\t\tfunction res(i, val) {\n\t\t\t\ttry {\n\t\t\t\t\tif (val && (typeof val === 'object' || typeof val === 'function')) {\n\t\t\t\t\t\tvar then = val.then;\n\t\t\t\t\t\tif (typeof then === 'function') {\n\t\t\t\t\t\t\tthen.call(val, function (val) { res(i, val) }, reject);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\targs[i] = val;\n\t\t\t\t\tif (--remaining === 0) {\n\t\t\t\t\t\tresolve(args);\n\t\t\t\t\t}\n\t\t\t\t} catch (ex) {\n\t\t\t\t\treject(ex);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i = 0; i < args.length; i++) {\n\t\t\t\tres(i, args[i]);\n\t\t\t}\n\t\t});\n\t};\n\n\tPromise.resolve = function (value) {\n\t\tif (value && typeof value === 'object' && value.constructor === Promise) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn new Promise(function (resolve) {\n\t\t\tresolve(value);\n\t\t});\n\t};\n\n\tPromise.reject = function (value) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\treject(value);\n\t\t});\n\t};\n\n\tPromise.race = function (values) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tfor(var i = 0, len = values.length; i < len; i++) {\n\t\t\t\tvalues[i].then(resolve, reject);\n\t\t\t}\n\t\t});\n\t};\n})();","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/BlankNode\"), exports);\n__exportStar(require(\"./lib/DataFactory\"), exports);\n__exportStar(require(\"./lib/DefaultGraph\"), exports);\n__exportStar(require(\"./lib/Literal\"), exports);\n__exportStar(require(\"./lib/NamedNode\"), exports);\n__exportStar(require(\"./lib/Quad\"), exports);\n__exportStar(require(\"./lib/Variable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNode = void 0;\n/**\n * A term that represents an RDF blank node with a label.\n */\nclass BlankNode {\n constructor(value) {\n this.termType = 'BlankNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNode = BlankNode;\n//# sourceMappingURL=BlankNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataFactory = void 0;\nconst BlankNode_1 = require(\"./BlankNode\");\nconst DefaultGraph_1 = require(\"./DefaultGraph\");\nconst Literal_1 = require(\"./Literal\");\nconst NamedNode_1 = require(\"./NamedNode\");\nconst Quad_1 = require(\"./Quad\");\nconst Variable_1 = require(\"./Variable\");\nlet dataFactoryCounter = 0;\n/**\n * A factory for instantiating RDF terms and quads.\n */\nclass DataFactory {\n constructor(options) {\n this.blankNodeCounter = 0;\n options = options || {};\n this.blankNodePrefix = options.blankNodePrefix || `df_${dataFactoryCounter++}_`;\n }\n /**\n * @param value The IRI for the named node.\n * @return A new instance of NamedNode.\n * @see NamedNode\n */\n namedNode(value) {\n return new NamedNode_1.NamedNode(value);\n }\n /**\n * @param value The optional blank node identifier.\n * @return A new instance of BlankNode.\n * If the `value` parameter is undefined a new identifier\n * for the blank node is generated for each call.\n * @see BlankNode\n */\n blankNode(value) {\n return new BlankNode_1.BlankNode(value || `${this.blankNodePrefix}${this.blankNodeCounter++}`);\n }\n /**\n * @param value The literal value.\n * @param languageOrDatatype The optional language or datatype.\n * If `languageOrDatatype` is a NamedNode,\n * then it is used for the value of `NamedNode.datatype`.\n * Otherwise `languageOrDatatype` is used for the value\n * of `NamedNode.language`.\n * @return A new instance of Literal.\n * @see Literal\n */\n literal(value, languageOrDatatype) {\n return new Literal_1.Literal(value, languageOrDatatype);\n }\n /**\n * This method is optional.\n * @param value The variable name\n * @return A new instance of Variable.\n * @see Variable\n */\n variable(value) {\n return new Variable_1.Variable(value);\n }\n /**\n * @return An instance of DefaultGraph.\n */\n defaultGraph() {\n return DefaultGraph_1.DefaultGraph.INSTANCE;\n }\n /**\n * @param subject The quad subject term.\n * @param predicate The quad predicate term.\n * @param object The quad object term.\n * @param graph The quad graph term.\n * @return A new instance of Quad.\n * @see Quad\n */\n quad(subject, predicate, object, graph) {\n return new Quad_1.Quad(subject, predicate, object, graph || this.defaultGraph());\n }\n /**\n * Create a deep copy of the given term using this data factory.\n * @param original An RDF term.\n * @return A deep copy of the given term.\n */\n fromTerm(original) {\n // TODO: remove nasty any casts when this TS bug has been fixed:\n // https://github.com/microsoft/TypeScript/issues/26933\n switch (original.termType) {\n case 'NamedNode':\n return this.namedNode(original.value);\n case 'BlankNode':\n return this.blankNode(original.value);\n case 'Literal':\n if (original.language) {\n return this.literal(original.value, original.language);\n }\n if (!original.datatype.equals(Literal_1.Literal.XSD_STRING)) {\n return this.literal(original.value, this.fromTerm(original.datatype));\n }\n return this.literal(original.value);\n case 'Variable':\n return this.variable(original.value);\n case 'DefaultGraph':\n return this.defaultGraph();\n case 'Quad':\n return this.quad(this.fromTerm(original.subject), this.fromTerm(original.predicate), this.fromTerm(original.object), this.fromTerm(original.graph));\n }\n }\n /**\n * Create a deep copy of the given quad using this data factory.\n * @param original An RDF quad.\n * @return A deep copy of the given quad.\n */\n fromQuad(original) {\n return this.fromTerm(original);\n }\n /**\n * Reset the internal blank node counter.\n */\n resetBlankNodeCounter() {\n this.blankNodeCounter = 0;\n }\n}\nexports.DataFactory = DataFactory;\n//# sourceMappingURL=DataFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultGraph = void 0;\n/**\n * A singleton term instance that represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass DefaultGraph {\n constructor() {\n this.termType = 'DefaultGraph';\n this.value = '';\n // Private constructor\n }\n equals(other) {\n return !!other && other.termType === 'DefaultGraph';\n }\n}\nexports.DefaultGraph = DefaultGraph;\nDefaultGraph.INSTANCE = new DefaultGraph();\n//# sourceMappingURL=DefaultGraph.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Literal = void 0;\nconst NamedNode_1 = require(\"./NamedNode\");\n/**\n * A term that represents an RDF literal, containing a string with an optional language tag or datatype.\n */\nclass Literal {\n constructor(value, languageOrDatatype) {\n this.termType = 'Literal';\n this.value = value;\n if (typeof languageOrDatatype === 'string') {\n this.language = languageOrDatatype;\n this.datatype = Literal.RDF_LANGUAGE_STRING;\n }\n else if (languageOrDatatype) {\n this.language = '';\n this.datatype = languageOrDatatype;\n }\n else {\n this.language = '';\n this.datatype = Literal.XSD_STRING;\n }\n }\n equals(other) {\n return !!other && other.termType === 'Literal' && other.value === this.value &&\n other.language === this.language && this.datatype.equals(other.datatype);\n }\n}\nexports.Literal = Literal;\nLiteral.RDF_LANGUAGE_STRING = new NamedNode_1.NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');\nLiteral.XSD_STRING = new NamedNode_1.NamedNode('http://www.w3.org/2001/XMLSchema#string');\n//# sourceMappingURL=Literal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NamedNode = void 0;\n/**\n * A term that contains an IRI.\n */\nclass NamedNode {\n constructor(value) {\n this.termType = 'NamedNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'NamedNode' && other.value === this.value;\n }\n}\nexports.NamedNode = NamedNode;\n//# sourceMappingURL=NamedNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Quad = void 0;\n/**\n * An instance of DefaultGraph represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass Quad {\n constructor(subject, predicate, object, graph) {\n this.termType = 'Quad';\n this.value = '';\n this.subject = subject;\n this.predicate = predicate;\n this.object = object;\n this.graph = graph;\n }\n equals(other) {\n // `|| !other.termType` is for backwards-compatibility with old factories without RDF* support.\n return !!other && (other.termType === 'Quad' || !other.termType) &&\n this.subject.equals(other.subject) &&\n this.predicate.equals(other.predicate) &&\n this.object.equals(other.object) &&\n this.graph.equals(other.graph);\n }\n}\nexports.Quad = Quad;\n//# sourceMappingURL=Quad.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Variable = void 0;\n/**\n * A term that represents a variable.\n */\nclass Variable {\n constructor(value) {\n this.termType = 'Variable';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'Variable' && other.value === this.value;\n }\n}\nexports.Variable = Variable;\n//# sourceMappingURL=Variable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/RdfIsomorphic\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTermGrounded = exports.termToSignature = exports.quadToSignature = exports.sha1hex = exports.hashTerm = exports.hashTerms = exports.getGraphBlankNodes = exports.uniqGraph = exports.deindexGraph = exports.indexGraph = exports.getQuadsWithoutBlankNodes = exports.getQuadsWithBlankNodes = exports.hasValue = exports.hashValues = exports.getBijectionInner = exports.getBijection = exports.isomorphic = void 0;\nconst hash_js_1 = require(\"hash.js\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\n/**\n * Determines if the two given graphs are isomorphic.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {boolean} If the two given graphs are isomorphic.\n */\nfunction isomorphic(graphA, graphB) {\n return !!getBijection(graphA, graphB);\n}\nexports.isomorphic = isomorphic;\n/**\n * Calculate a hash of graphA blank nodes to graphB blank nodes.\n * This represents a bijection from graphA's blank nodes to graphB's blank nodes.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {IBijection} A hash representing a bijection, or null if none could be found.\n */\nfunction getBijection(graphA, graphB) {\n // Check if all (non-blanknode-containing) quads in the two graphs are equal.\n // We do this by creating a hash-based index for both graphs.\n const nonBlankIndexA = indexGraph(getQuadsWithoutBlankNodes(graphA));\n const nonBlankIndexB = indexGraph(getQuadsWithoutBlankNodes(graphB));\n if (Object.keys(nonBlankIndexA).length !== Object.keys(nonBlankIndexB).length) {\n return null;\n }\n for (const key in nonBlankIndexA) {\n if (nonBlankIndexA[key] !== nonBlankIndexB[key]) {\n return null;\n }\n }\n // Pre-process data that needs to be present in each iteration of getBijectionInner.\n const blankQuadsA = uniqGraph(getQuadsWithBlankNodes(graphA));\n const blankQuadsB = uniqGraph(getQuadsWithBlankNodes(graphB));\n const blankNodesA = getGraphBlankNodes(graphA);\n const blankNodesB = getGraphBlankNodes(graphB);\n return getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB);\n}\nexports.getBijection = getBijection;\nfunction getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, groundedHashesA, groundedHashesB) {\n if (!groundedHashesA) {\n groundedHashesA = {};\n }\n if (!groundedHashesB) {\n groundedHashesB = {};\n }\n // Hash every term based on the signature of the quads if appears in.\n const [hashesA, ungroundedHashesA] = hashTerms(blankQuadsA, blankNodesA, groundedHashesA);\n const [hashesB, ungroundedHashesB] = hashTerms(blankQuadsB, blankNodesB, groundedHashesB);\n // Break quickly if a graph contains a grounded node that is not contained in the other graph.\n if (Object.keys(hashesA).length !== Object.keys(hashesB).length) {\n return null;\n }\n for (const hashKeyA in hashesA) {\n if (!hasValue(hashesB, hashesA[hashKeyA])) {\n return null;\n }\n }\n // Map the blank nodes from graph A to the blank nodes of graph B using the created hashes.\n // Grounded hashes will also be equal, but not needed here, we will need them in the next recursion\n // (as we only recurse on grounded nodes).\n let bijection = {};\n for (const blankNodeA of blankNodesA) {\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n const blankNodeAHash = ungroundedHashesA[blankNodeAString];\n for (const blankNodeBString in ungroundedHashesB) {\n if (ungroundedHashesB[blankNodeBString] === blankNodeAHash) {\n bijection[blankNodeAString] = blankNodeBString;\n delete ungroundedHashesB[blankNodeBString];\n break;\n }\n }\n }\n // Check if all nodes from graph A and B are present in the bijection,\n // if not, speculatively mark pairs with matching ungrounded hashes as bijected, and recurse.\n if (!arraysEqual(Object.keys(bijection).sort(), blankNodesA.map(rdf_string_1.termToString).sort())\n || !arraysEqual(hashValues(bijection).sort(), blankNodesB.map(rdf_string_1.termToString).sort())) {\n // I have not yet been able to find any pathological cases where this code is reached.\n // This may be removable, but let's wait until someone proves that.\n bijection = null;\n for (const blankNodeA of blankNodesA) {\n // Only replace ungrounded node hashes\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n if (!hashesA[blankNodeAString]) {\n for (const blankNodeB of blankNodesB) {\n // Only replace ungrounded node hashes\n const blankNodeBString = rdf_string_1.termToString(blankNodeB);\n if (!hashesB[blankNodeBString]) {\n if (ungroundedHashesA[blankNodeAString] === ungroundedHashesB[blankNodeBString]) {\n const hash = sha1hex(blankNodeAString);\n bijection = getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, Object.assign(Object.assign({}, hashesA), { [blankNodeAString]: hash }), Object.assign(Object.assign({}, hashesB), { [blankNodeBString]: hash }));\n }\n }\n }\n }\n }\n }\n return bijection;\n}\nexports.getBijectionInner = getBijectionInner;\nfunction arraysEqual(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = array1.length; i--;) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Get all values from the given hash\n * @param hash A hash.\n * @return {any[]} The array of values.\n */\nfunction hashValues(hash) {\n const arr = [];\n for (const e in hash) {\n arr.push(hash[e]);\n }\n return arr;\n}\nexports.hashValues = hashValues;\n/**\n * Check if the given hash contains the given value.\n * @param hash A hash.\n * @param {string} value A value.\n * @return {boolean} If it contains the value.\n */\nfunction hasValue(hash, value) {\n for (const hashValue in hash) {\n if (hash[hashValue] === value) {\n return true;\n }\n }\n return false;\n}\nexports.hasValue = hasValue;\n/**\n * Get all quads with blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads with blank nodes\n */\nfunction getQuadsWithBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.someTerms(quad, (value) => {\n return value.termType === 'BlankNode'\n || (value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithBlankNodes = getQuadsWithBlankNodes;\n/**\n * Get all quads without blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads without blank nodes\n */\nfunction getQuadsWithoutBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.everyTerms(quad, (value) => {\n return value.termType !== 'BlankNode'\n && !(value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithoutBlankNodes = getQuadsWithoutBlankNodes;\n/**\n * Create a hash-based index of the given graph.\n * @param {Quad[]} graph An array of quads, the order does not matter.\n * @return {{[p: string]: boolean}} A hash-based datastructure representing the graph.\n */\nfunction indexGraph(graph) {\n const index = {};\n for (const quad of graph) {\n index[JSON.stringify(rdf_string_1.quadToStringQuad(quad))] = true;\n }\n return index;\n}\nexports.indexGraph = indexGraph;\n/**\n * Create a graph from the given hash-based index.\n * @param {{[p: string]: boolean}} indexedGraph A hash-based datastructure representing the graph.\n * @return {Quad[]} An array of quads, the order does not matter.\n */\nfunction deindexGraph(indexedGraph) {\n return Object.keys(indexedGraph).map((str) => rdf_string_1.stringQuadToQuad(JSON.parse(str)));\n}\nexports.deindexGraph = deindexGraph;\n/**\n * Unique-ify the given RDF graph based on strict equality.\n * The output graph will consist of new quad and term instances.\n * @param {Quad[]} graph An input graph.\n * @return {Quad[]} The input graph without duplicates.\n */\nfunction uniqGraph(graph) {\n return deindexGraph(indexGraph(graph));\n}\nexports.uniqGraph = uniqGraph;\n/**\n * Find all blank nodes in the given graph.\n * @param {Quad[]} graph An array of quads.\n * @return {BlankNode[]} A list of (unique) blank nodes.\n */\nfunction getGraphBlankNodes(graph) {\n return rdf_terms_1.uniqTerms(graph.map((quad) => rdf_terms_1.getBlankNodes(rdf_terms_1.getTermsNested(quad)))\n .reduce((acc, val) => acc.concat(val), []));\n}\nexports.getGraphBlankNodes = getGraphBlankNodes;\n/**\n * Create term hashes for the given set of quads and blank node terms.\n *\n * @param {Quad[]} quads A set of quads.\n * @param {Term[]} terms Blank node terms.\n * @param {ITermHash} groundedHashes Grounded term hashes that are used to create more specific signatures\n * of other terms, because they are based on non-blank nodes and grounded blank nodes.\n * @return {[ITermHash]} A tuple of grounded and ungrounded hashes.\n */\nfunction hashTerms(quads, terms, groundedHashes) {\n const hashes = Object.assign({}, groundedHashes);\n const ungroundedHashes = {};\n let hashNeeded = true;\n // Iteratively mark nodes as grounded.\n // If a node is marked as grounded, then the next iteration can lead to new grounded states\n while (hashNeeded) {\n const initialGroundedNodesCount = Object.keys(hashes).length;\n for (const term of terms) {\n const termString = rdf_string_1.termToString(term);\n if (!hashes[termString]) {\n const [grounded, hash] = hashTerm(term, quads, hashes);\n if (grounded) {\n hashes[termString] = hash;\n }\n ungroundedHashes[termString] = hash;\n }\n }\n // All terms that have a unique hash at this point can be marked as grounded\n const uniques = {};\n for (const termKey in ungroundedHashes) {\n const hash = ungroundedHashes[termKey];\n if (uniques[hash] === undefined) {\n uniques[hash] = termKey;\n }\n else {\n uniques[hash] = false;\n }\n }\n for (const hash in uniques) {\n const value = uniques[hash];\n if (value) {\n hashes[value] = hash;\n }\n }\n // Check if the loop needs to terminate\n hashNeeded = initialGroundedNodesCount !== Object.keys(hashes).length;\n }\n return [hashes, ungroundedHashes];\n}\nexports.hashTerms = hashTerms;\n/**\n * Generate a hash for the given term based on the signature of the quads it appears in.\n *\n * Signatures are made up of grounded terms in quads that are associated with a term,\n * i.e., everything except for ungrounded blank nodes.\n * The hash is created by hashing a sorted list of each quad's signature,\n * where each quad signature is a concatenation of the signature of all grounded terms.\n *\n * Terms are considered grounded if they are a member in the given hash AND if they are not the given term.\n *\n * @param {Term} term The term to get the hash around.\n * @param {Quad[]} quads The quads to include in the hashing.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {[boolean , string]} A tuple indicating if the given term is grounded in all the given quads, and the hash.\n */\nfunction hashTerm(term, quads, hashes) {\n const quadSignatures = [];\n let grounded = true;\n for (const quad of quads) {\n const terms = rdf_terms_1.getTermsNested(quad);\n if (terms.some((quadTerm) => quadTerm.equals(term))) {\n quadSignatures.push(quadToSignature(quad, hashes, term));\n for (const quadTerm of terms) {\n if (!isTermGrounded(quadTerm, hashes) && !quadTerm.equals(term)) {\n grounded = false;\n }\n }\n }\n }\n const hash = sha1hex(quadSignatures.sort().join(''));\n return [grounded, hash];\n}\nexports.hashTerm = hashTerm;\n/**\n * Create a hash using sha1 as a hex digest.\n * @param {string | Buffer | NodeJS.TypedArray | DataView} data Something to hash.\n * @return {string} A hash string.\n */\nfunction sha1hex(data) {\n return hash_js_1.sha1().update(data).digest('hex');\n}\nexports.sha1hex = sha1hex;\n/**\n * Convert the given quad to a string signature so that it can be used in the hash structure.\n * @param {Quad} quad A quad.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} term A target term to compare with.\n * @return {string} A string signature.\n */\nfunction quadToSignature(quad, hashes, term) {\n return rdf_terms_1.getTerms(quad).map((quadTerm) => termToSignature(quadTerm, hashes, term)).join('|');\n}\nexports.quadToSignature = quadToSignature;\n/**\n * Convert the given term to a string signature so that it can be used in the hash structure.\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} target A target term to compare with.\n * @return {string} A string signature.\n */\nfunction termToSignature(term, hashes, target) {\n if (term.equals(target)) {\n return '@self';\n }\n else if (term.termType === 'BlankNode') {\n return hashes[rdf_string_1.termToString(term)] || '@blank';\n }\n else if (term.termType === 'Quad') {\n return `<${quadToSignature(term, hashes, target)}>`;\n }\n else {\n return rdf_string_1.termToString(term);\n }\n}\nexports.termToSignature = termToSignature;\n/**\n * Check if a term is grounded.\n *\n * A term is grounded if it is not a blank node\n * or if it included in the given hash of grounded nodes.\n *\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {boolean} If the given term is grounded.\n */\nfunction isTermGrounded(term, hashes) {\n return (term.termType !== 'BlankNode'\n && !(term.termType === 'Quad' && rdf_terms_1.getTermsNested(term).some(subTerm => !isTermGrounded(subTerm, hashes)))) || !!hashes[rdf_string_1.termToString(term)];\n}\nexports.isTermGrounded = isTermGrounded;\n//# sourceMappingURL=RdfIsomorphic.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSupportedJavaScriptPrimitives = exports.getSupportedRdfDatatypes = exports.getTermRaw = exports.toRdf = exports.fromRdf = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst handler_1 = require(\"./lib/handler\");\nconst Translator_1 = require(\"./lib/Translator\");\n__exportStar(require(\"./lib/handler\"), exports);\n__exportStar(require(\"./lib/ITypeHandler\"), exports);\n__exportStar(require(\"./lib/Translator\"), exports);\nconst DF = new rdf_data_factory_1.DataFactory();\n// Construct translator with built-in handlers\nconst translator = new Translator_1.Translator();\ntranslator.registerHandler(new handler_1.TypeHandlerString(), handler_1.TypeHandlerString.TYPES.map(t => DF.namedNode(t)), ['string']);\ntranslator.registerHandler(new handler_1.TypeHandlerBoolean(), [handler_1.TypeHandlerBoolean.TYPE].map(t => DF.namedNode(t)), ['boolean']);\ntranslator.registerHandler(new handler_1.TypeHandlerNumberDouble(), handler_1.TypeHandlerNumberDouble.TYPES.map(t => DF.namedNode(t)), ['number']);\ntranslator.registerHandler(new handler_1.TypeHandlerNumberInteger(), handler_1.TypeHandlerNumberInteger.TYPES.map(t => DF.namedNode(t)), ['number']);\ntranslator.registerHandler(new handler_1.TypeHandlerDate(), handler_1.TypeHandlerDate.TYPES.map(t => DF.namedNode(t)), ['object']);\n/**\n * Convert the given RDF literal to an JavaScript primitive.\n * @param {Literal} literal An RDF literal value.\n * @param {boolean} validate If the literal value should be validated against the datatype.\n * @return {any} A JavaScript primitive value.\n */\nfunction fromRdf(literal, validate) {\n return translator.fromRdf(literal, validate);\n}\nexports.fromRdf = fromRdf;\n/**\n * Convert the given JavaScript primitive to an RDF literal.\n * @param value A JavaScript primitive value.\n * @param options Options for RDF conversion. May also be a data factory.\n * @return {Literal} An RDF literal value.\n */\nfunction toRdf(value, options) {\n // Backwards-compatibility to accept data factory as option arg.\n if (options && 'namedNode' in options) {\n options = { dataFactory: options };\n }\n // Set default data factory\n options = options || {};\n if (options && !options.dataFactory) {\n options.dataFactory = DF;\n }\n return translator.toRdf(value, options);\n}\nexports.toRdf = toRdf;\n/**\n * Get the raw value of the given term.\n * If it is a literal, {@link fromRdf} will be called.\n * Otherwise {@link .value} will be returned.\n * @param {Term} term Any RDF term.\n * @param {boolean} validate If the literal value should be validated against the datatype.\n * @return {any} A JavaScript primitive value.\n */\nfunction getTermRaw(term, validate) {\n if (term.termType === 'Literal') {\n return fromRdf(term, validate);\n }\n return term.value;\n}\nexports.getTermRaw = getTermRaw;\n/**\n * @return {NamedNode[]} An array of all supported RDF datatypes.\n */\nfunction getSupportedRdfDatatypes() {\n return translator.getSupportedRdfDatatypes();\n}\nexports.getSupportedRdfDatatypes = getSupportedRdfDatatypes;\n/**\n * @return {string[]} An array of all supported JavaScript types.\n */\nfunction getSupportedJavaScriptPrimitives() {\n return translator.getSupportedJavaScriptPrimitives();\n}\nexports.getSupportedJavaScriptPrimitives = getSupportedJavaScriptPrimitives;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ITypeHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Translator = void 0;\n/**\n * Translates between an RDF literal and a JavaScript primitive.\n */\nclass Translator {\n constructor() {\n this.supportedRdfDatatypes = [];\n this.fromRdfHandlers = {};\n this.toRdfHandlers = {};\n }\n static incorrectRdfDataType(literal) {\n throw new Error(`Invalid RDF ${literal.datatype.value} value: '${literal.value}'`);\n }\n registerHandler(handler, rdfDatatypes, javaScriptDataTypes) {\n for (const rdfDatatype of rdfDatatypes) {\n this.supportedRdfDatatypes.push(rdfDatatype);\n this.fromRdfHandlers[rdfDatatype.value] = handler;\n }\n for (const javaScriptDataType of javaScriptDataTypes) {\n let existingToRdfHandlers = this.toRdfHandlers[javaScriptDataType];\n if (!existingToRdfHandlers) {\n this.toRdfHandlers[javaScriptDataType] = existingToRdfHandlers = [];\n }\n existingToRdfHandlers.push(handler);\n }\n }\n fromRdf(literal, validate) {\n const handler = this.fromRdfHandlers[literal.datatype.value];\n if (handler) {\n return handler.fromRdf(literal, validate);\n }\n else {\n return literal.value;\n }\n }\n toRdf(value, options) {\n const handlers = this.toRdfHandlers[typeof value];\n if (handlers) {\n for (const handler of handlers) {\n const ret = handler.toRdf(value, options);\n if (ret) {\n return ret;\n }\n }\n }\n throw new Error(`Invalid JavaScript value: '${value}'`);\n }\n /**\n * @return {NamedNode[]} An array of all supported RDF datatypes.\n */\n getSupportedRdfDatatypes() {\n return this.supportedRdfDatatypes;\n }\n /**\n * @return {string[]} An array of all supported JavaScript types.\n */\n getSupportedJavaScriptPrimitives() {\n return Object.keys(this.toRdfHandlers);\n }\n}\nexports.Translator = Translator;\n//# sourceMappingURL=Translator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerBoolean = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates booleans.\n */\nclass TypeHandlerBoolean {\n fromRdf(literal, validate) {\n switch (literal.value) {\n case 'true':\n return true;\n case 'false':\n return false;\n case '1':\n return true;\n case '0':\n return false;\n }\n if (validate) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n return false;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(value ? 'true' : 'false', datatype || dataFactory.namedNode(TypeHandlerBoolean.TYPE));\n }\n}\nTypeHandlerBoolean.TYPE = 'http://www.w3.org/2001/XMLSchema#boolean';\nexports.TypeHandlerBoolean = TypeHandlerBoolean;\n//# sourceMappingURL=TypeHandlerBoolean.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerDate = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates dates.\n */\nclass TypeHandlerDate {\n fromRdf(literal, validate) {\n if (validate && !literal.value.match(TypeHandlerDate\n .VALIDATORS[literal.datatype.value.substr(33, literal.datatype.value.length)])) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n switch (literal.datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#gDay':\n return new Date(0, 0, parseInt(literal.value, 10));\n case 'http://www.w3.org/2001/XMLSchema#gMonthDay':\n const partsMonthDay = literal.value.split('-');\n return new Date(0, parseInt(partsMonthDay[0], 10) - 1, parseInt(partsMonthDay[1], 10));\n case 'http://www.w3.org/2001/XMLSchema#gYear':\n return new Date(literal.value + '-01-01');\n case 'http://www.w3.org/2001/XMLSchema#gYearMonth':\n return new Date(literal.value + '-01');\n default:\n return new Date(literal.value);\n }\n }\n toRdf(value, { datatype, dataFactory }) {\n datatype = datatype || dataFactory.namedNode(TypeHandlerDate.TYPES[0]);\n // Assume date values\n if (!(value instanceof Date)) {\n return null;\n }\n const date = value;\n let valueString;\n switch (datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#gDay':\n valueString = String(date.getUTCDate());\n break;\n case 'http://www.w3.org/2001/XMLSchema#gMonthDay':\n valueString = (date.getUTCMonth() + 1) + '-' + date.getUTCDate();\n break;\n case 'http://www.w3.org/2001/XMLSchema#gYear':\n valueString = String(date.getUTCFullYear());\n break;\n case 'http://www.w3.org/2001/XMLSchema#gYearMonth':\n valueString = date.getUTCFullYear() + '-' + (date.getUTCMonth() + 1);\n break;\n case 'http://www.w3.org/2001/XMLSchema#date':\n valueString = date.toISOString().replace(/T.*$/, '');\n break;\n default:\n valueString = date.toISOString();\n }\n return dataFactory.literal(valueString, datatype);\n }\n}\nTypeHandlerDate.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#dateTime',\n 'http://www.w3.org/2001/XMLSchema#date',\n 'http://www.w3.org/2001/XMLSchema#gDay',\n 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n 'http://www.w3.org/2001/XMLSchema#gYear',\n 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n];\nTypeHandlerDate.VALIDATORS = {\n date: /^[0-9]+-[0-9][0-9]-[0-9][0-9]Z?$/,\n dateTime: /^[0-9]+-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9](\\.[0-9][0-9][0-9])?((Z?)|([\\+-][0-9][0-9]:[0-9][0-9]))$/,\n gDay: /^[0-9]+$/,\n gMonthDay: /^[0-9]+-[0-9][0-9]$/,\n gYear: /^[0-9]+$/,\n gYearMonth: /^[0-9]+-[0-9][0-9]$/,\n};\nexports.TypeHandlerDate = TypeHandlerDate;\n//# sourceMappingURL=TypeHandlerDate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerNumberDouble = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates double numbers.\n */\nclass TypeHandlerNumberDouble {\n fromRdf(literal, validate) {\n const parsed = parseFloat(literal.value);\n if (validate) {\n if (isNaN(parsed)) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n // TODO: validate more\n }\n return parsed;\n }\n toRdf(value, { datatype, dataFactory }) {\n datatype = datatype || dataFactory.namedNode(TypeHandlerNumberDouble.TYPES[0]);\n if (isNaN(value)) {\n return dataFactory.literal('NaN', datatype);\n }\n if (!isFinite(value)) {\n return dataFactory.literal(value > 0 ? 'INF' : '-INF', datatype);\n }\n if (value % 1 === 0) {\n return null;\n }\n return dataFactory.literal(value.toExponential(15).replace(/(\\d)0*e\\+?/, '$1E'), datatype);\n }\n}\nTypeHandlerNumberDouble.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#double',\n 'http://www.w3.org/2001/XMLSchema#decimal',\n 'http://www.w3.org/2001/XMLSchema#float',\n];\nexports.TypeHandlerNumberDouble = TypeHandlerNumberDouble;\n//# sourceMappingURL=TypeHandlerNumberDouble.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerNumberInteger = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates integer numbers.\n */\nclass TypeHandlerNumberInteger {\n fromRdf(literal, validate) {\n const parsed = parseInt(literal.value, 10);\n if (validate) {\n if (isNaN(parsed) || literal.value.indexOf('.') >= 0) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n // TODO: validate more\n }\n return parsed;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(String(value), datatype\n || (value <= TypeHandlerNumberInteger.MAX_INT && value >= TypeHandlerNumberInteger.MIN_INT\n ? dataFactory.namedNode(TypeHandlerNumberInteger.TYPES[0])\n : dataFactory.namedNode(TypeHandlerNumberInteger.TYPES[1])));\n }\n}\nTypeHandlerNumberInteger.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#integer',\n 'http://www.w3.org/2001/XMLSchema#long',\n 'http://www.w3.org/2001/XMLSchema#int',\n 'http://www.w3.org/2001/XMLSchema#byte',\n 'http://www.w3.org/2001/XMLSchema#short',\n 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n];\nTypeHandlerNumberInteger.MAX_INT = 2147483647;\nTypeHandlerNumberInteger.MIN_INT = -2147483648;\nexports.TypeHandlerNumberInteger = TypeHandlerNumberInteger;\n//# sourceMappingURL=TypeHandlerNumberInteger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerString = void 0;\n/**\n * Translates strings.\n */\nclass TypeHandlerString {\n fromRdf(literal) {\n return literal.value;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(value, datatype);\n }\n}\nTypeHandlerString.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#string',\n 'http://www.w3.org/2001/XMLSchema#normalizedString',\n 'http://www.w3.org/2001/XMLSchema#anyURI',\n 'http://www.w3.org/2001/XMLSchema#base64Binary',\n 'http://www.w3.org/2001/XMLSchema#language',\n 'http://www.w3.org/2001/XMLSchema#Name',\n 'http://www.w3.org/2001/XMLSchema#NCName',\n 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n 'http://www.w3.org/2001/XMLSchema#token',\n 'http://www.w3.org/2001/XMLSchema#hexBinary',\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n 'http://www.w3.org/2001/XMLSchema#time',\n 'http://www.w3.org/2001/XMLSchema#duration',\n];\nexports.TypeHandlerString = TypeHandlerString;\n//# sourceMappingURL=TypeHandlerString.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./TypeHandlerBoolean\"), exports);\n__exportStar(require(\"./TypeHandlerDate\"), exports);\n__exportStar(require(\"./TypeHandlerNumberDouble\"), exports);\n__exportStar(require(\"./TypeHandlerNumberInteger\"), exports);\n__exportStar(require(\"./TypeHandlerString\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.storeStream = void 0;\nconst rdf_stores_1 = require(\"rdf-stores\");\n/**\n * Import all quads in the given stream into a new RDF store.\n *\n * The whole stream will be consumed for this,\n * and the promise will resolve once the stream's end event is emitted.\n *\n * @param {Stream} stream An RDF stream containing the quads to import into the store.\n * @return {Promise>} A promise resolving to an RDF store.\n */\nfunction storeStream(stream) {\n const store = rdf_stores_1.RdfStore.createDefault();\n return new Promise((resolve, reject) => store.import(stream)\n .on('error', reject)\n .once('end', () => resolve(store)));\n}\nexports.storeStream = storeStream;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/dataset/DatasetCoreWrapper\"), exports);\n__exportStar(require(\"./lib/dictionary/ITermDictionary\"), exports);\n__exportStar(require(\"./lib/dictionary/TermDictionaryNumberMap\"), exports);\n__exportStar(require(\"./lib/dictionary/TermDictionaryNumberRecord\"), exports);\n__exportStar(require(\"./lib/dictionary/TermDictionaryNumberRecordFullTerms\"), exports);\n__exportStar(require(\"./lib/dictionary/TermDictionaryQuoted\"), exports);\n__exportStar(require(\"./lib/dictionary/TermDictionaryQuotedIndexed\"), exports);\n__exportStar(require(\"./lib/dictionary/TermDictionaryQuotedReferential\"), exports);\n__exportStar(require(\"./lib/dictionary/TermDictionarySymbol\"), exports);\n__exportStar(require(\"./lib/index/IRdfStoreIndex\"), exports);\n__exportStar(require(\"./lib/index/RdfStoreIndexNestedMap\"), exports);\n__exportStar(require(\"./lib/index/RdfStoreIndexNestedMapQuoted\"), exports);\n__exportStar(require(\"./lib/index/RdfStoreIndexNestedMapRecursive\"), exports);\n__exportStar(require(\"./lib/index/RdfStoreIndexNestedMapRecursiveQuoted\"), exports);\n__exportStar(require(\"./lib/index/RdfStoreIndexNestedRecord\"), exports);\n__exportStar(require(\"./lib/index/RdfStoreIndexNestedRecordQuoted\"), exports);\n__exportStar(require(\"./lib/IRdfStoreOptions\"), exports);\n__exportStar(require(\"./lib/OrderUtils\"), exports);\n__exportStar(require(\"./lib/PatternTerm\"), exports);\n__exportStar(require(\"./lib/RdfStore\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IRdfStoreOptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.arePatternsQuoted = exports.quadHasVariables = exports.quadToPattern = exports.encodeOptionalTerms = exports.orderQuadComponents = exports.getComponentOrderScore = exports.getBestIndex = exports.QUAD_TERM_NAMES_INVERSE = void 0;\nconst rdf_terms_1 = require(\"rdf-terms\");\nexports.QUAD_TERM_NAMES_INVERSE = Object.fromEntries(rdf_terms_1.QUAD_TERM_NAMES.map((value, key) => [value, key]));\n/**\n * Determine the best suitable order's index among the given orders for the given quad pattern.\n * @param componentOrders Possible orders of quad components.\n * @param quadPattern A quad pattern.\n */\nfunction getBestIndex(componentOrders, quadPattern) {\n if (componentOrders.length === 1 || quadPattern.every(term => term !== undefined)) {\n return 0;\n }\n // Determine the quad component names for which we require a defined lookup\n const definedQuadComponentNames = [];\n for (let quadComponentId = 0; quadComponentId < rdf_terms_1.QUAD_TERM_NAMES.length; quadComponentId++) {\n if (quadPattern[quadComponentId]) {\n definedQuadComponentNames.push(rdf_terms_1.QUAD_TERM_NAMES[quadComponentId]);\n }\n }\n // Score indexes by how well they match to the index\n const scoredIndexes = componentOrders.map((componentOrder, index) => {\n const score = getComponentOrderScore(componentOrder, definedQuadComponentNames);\n return { score, index };\n });\n // Sort the indexes, and pick the first one\n return scoredIndexes.sort((scoredLeft, scoredRight) => scoredRight.score - scoredLeft.score)[0].index;\n}\nexports.getBestIndex = getBestIndex;\n/**\n * Determine the score of the given partial component order in the given component order.\n * @param componentOrder A quad component order.\n * @param partialComponentOrder A partial quad component order that originates from a quad pattern.\n */\nfunction getComponentOrderScore(componentOrder, partialComponentOrder) {\n return componentOrder\n .map((order, i) => partialComponentOrder.includes(order) ? componentOrder.length - i : 0)\n .reduce((acc, add) => acc + add, 0);\n}\nexports.getComponentOrderScore = getComponentOrderScore;\n/**\n * Order a quad pattern's terms based on the given component order.\n * @param desiredComponentOrder The desired order of components.\n * @param quadPattern A quad pattern.\n */\nfunction orderQuadComponents(desiredComponentOrder, quadPattern) {\n return desiredComponentOrder.map(desiredComponent => {\n const desiredComponentIndex = exports.QUAD_TERM_NAMES_INVERSE[desiredComponent];\n return quadPattern[desiredComponentIndex];\n });\n}\nexports.orderQuadComponents = orderQuadComponents;\n/**\n * Encode the given array of quad terms.\n * @param terms Non-encoded quad terms.\n * @param dictionary A dictionary\n * @return array An array of encoded terms.\n * The array will be undefined if at least one of the patterns does not occur within the dictionary.\n */\nfunction encodeOptionalTerms(terms, dictionary) {\n const encodedTerms = terms.map(term => {\n if (term) {\n if (term.termType === 'Quad' && quadHasVariables(term)) {\n return;\n }\n const encodedTerm = dictionary.encodeOptional(term);\n if (encodedTerm === undefined) {\n return 'none';\n }\n return encodedTerm;\n }\n return term;\n });\n if (encodedTerms.includes('none')) {\n return undefined;\n }\n return encodedTerms;\n}\nexports.encodeOptionalTerms = encodeOptionalTerms;\n/**\n * Convert a quad patter to a `QuadPatternTerms` type.\n * @param subject The subject.\n * @param predicate The predicate.\n * @param object The object.\n * @param graph The graph.\n * @param quotedPatterns If the index supports quoted triple filtering.\n * @return Tuple A tuple of QuadPatternTerms\n * and a boolean indicating if post-filtering will be needed on quoted triples.\n * This boolean can only be true if `quotedPatterns` is false, and a quoted triple pattern was present.\n */\nfunction quadToPattern(subject, predicate, object, graph, quotedPatterns) {\n let requireQuotedTripleFiltering = false;\n const quadPatternTerms = [subject || undefined, predicate || undefined, object || undefined, graph || undefined]\n .map(term => {\n if (term) {\n if (term.termType === 'Variable') {\n return;\n }\n if (term.termType === 'Quad') {\n if (quotedPatterns) {\n return term;\n }\n requireQuotedTripleFiltering = true;\n return;\n }\n }\n return term;\n });\n return [quadPatternTerms, requireQuotedTripleFiltering];\n}\nexports.quadToPattern = quadToPattern;\n/**\n * Check if the given quad contains variables, even in deeply nested quoted triples.\n * @param currentTerm The quad pattern term.\n */\nfunction quadHasVariables(currentTerm) {\n for (const component of rdf_terms_1.QUAD_TERM_NAMES) {\n const subTerm = currentTerm[component];\n if (subTerm.termType === 'Variable' || (subTerm.termType === 'Quad' && quadHasVariables(subTerm))) {\n return true;\n }\n }\n return false;\n}\nexports.quadHasVariables = quadHasVariables;\n/**\n * Create a boolean array indicating which terms are quoted triple patterns.\n * @param terms An array of terms.\n */\nfunction arePatternsQuoted(terms) {\n return terms.map(term => (term === null || term === void 0 ? void 0 : term.termType) === 'Quad' && quadHasVariables(term));\n}\nexports.arePatternsQuoted = arePatternsQuoted;\n//# sourceMappingURL=OrderUtils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=PatternTerm.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfStore = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst DatasetCoreWrapper_1 = require(\"./dataset/DatasetCoreWrapper\");\nconst TermDictionaryNumberRecordFullTerms_1 = require(\"./dictionary/TermDictionaryNumberRecordFullTerms\");\nconst TermDictionaryQuotedIndexed_1 = require(\"./dictionary/TermDictionaryQuotedIndexed\");\nconst RdfStoreIndexNestedMapQuoted_1 = require(\"./index/RdfStoreIndexNestedMapQuoted\");\nconst OrderUtils_1 = require(\"./OrderUtils\");\n/**\n * An RDF store allows quads to be stored and fetched, based on one or more customizable indexes.\n */\nclass RdfStore {\n constructor(options) {\n this.features = { quotedTripleFiltering: true };\n this._size = 0;\n this.options = options;\n this.dataFactory = options.dataFactory;\n this.dictionary = options.dictionary;\n this.indexesWrapped = RdfStore.constructIndexesWrapped(options);\n this.indexesWrappedComponentOrders = this.indexesWrapped.map(indexThis => indexThis.componentOrder);\n }\n /**\n * Create an RDF store with default settings.\n * Concretely, this store stores triples in GSPO, GPOS, and GOSP order,\n * and makes use of in-memory number dictionary encoding.\n */\n static createDefault() {\n return new RdfStore({\n indexCombinations: RdfStore.DEFAULT_INDEX_COMBINATIONS,\n indexConstructor: subOptions => new RdfStoreIndexNestedMapQuoted_1.RdfStoreIndexNestedMapQuoted(subOptions),\n dictionary: new TermDictionaryQuotedIndexed_1.TermDictionaryQuotedIndexed(new TermDictionaryNumberRecordFullTerms_1.TermDictionaryNumberRecordFullTerms()),\n dataFactory: new rdf_data_factory_1.DataFactory(),\n });\n }\n /**\n * Internal helper to create index objects.\n * @param options The RDF store options object.\n */\n static constructIndexesWrapped(options) {\n const indexes = [];\n if (options.indexCombinations.length === 0) {\n throw new Error('At least one index combination is required');\n }\n for (const componentOrder of options.indexCombinations) {\n if (!RdfStore.isCombinationValid(componentOrder)) {\n throw new Error(`Invalid index combination: ${componentOrder}`);\n }\n indexes.push({\n index: options.indexConstructor(options),\n componentOrder,\n componentOrderInverse: Object.fromEntries(componentOrder.map((value, key) => [value, key])),\n });\n }\n return indexes;\n }\n /**\n * Check if a given quad term order is valid.\n * @param combination A quad term order.\n */\n static isCombinationValid(combination) {\n for (const quadTermName of rdf_terms_1.QUAD_TERM_NAMES) {\n if (!combination.includes(quadTermName)) {\n return false;\n }\n }\n return combination.length === 4;\n }\n /**\n * The number of quads in this store.\n */\n get size() {\n return this._size;\n }\n /**\n * Add a quad to the store.\n * @param quad An RDF quad.\n * @return boolean If the quad was not yet present in the index.\n */\n addQuad(quad) {\n const quadEncoded = [\n this.dictionary.encode(quad.subject),\n this.dictionary.encode(quad.predicate),\n this.dictionary.encode(quad.object),\n this.dictionary.encode(quad.graph),\n ];\n let newQuad = false;\n for (const indexWrapped of this.indexesWrapped) {\n // Before sending the quad to the index, make sure its components are ordered corresponding to the index's order.\n newQuad = indexWrapped.index\n .set((0, OrderUtils_1.orderQuadComponents)(indexWrapped.componentOrder, quadEncoded), true);\n }\n if (newQuad) {\n this._size++;\n return true;\n }\n return false;\n }\n /**\n * Remove a quad from the store.\n * @param quad An RDF quad.\n * @return boolean If the quad was present in the index.\n */\n removeQuad(quad) {\n const quadEncoded = [\n this.dictionary.encodeOptional(quad.subject),\n this.dictionary.encodeOptional(quad.predicate),\n this.dictionary.encodeOptional(quad.object),\n this.dictionary.encodeOptional(quad.graph),\n ];\n // We can quickly return false if the quad is not present in the dictionary\n // eslint-disable-next-line unicorn/no-useless-undefined\n if (quadEncoded.includes(undefined)) {\n return false;\n }\n let wasPresent = false;\n for (const indexWrapped of this.indexesWrapped) {\n // Before sending the quad to the index, make sure its components are ordered corresponding to the index's order.\n wasPresent = indexWrapped.index\n .remove((0, OrderUtils_1.orderQuadComponents)(indexWrapped.componentOrder, quadEncoded));\n if (!wasPresent) {\n break;\n }\n }\n if (wasPresent) {\n this._size--;\n return true;\n }\n return false;\n }\n /**\n * Removes all streamed quads.\n * @param stream A stream of quads\n */\n remove(stream) {\n stream.on('data', quad => this.removeQuad(quad));\n return stream;\n }\n /**\n * All quads matching the pattern will be removed.\n * @param subject The optional subject.\n * @param predicate The optional predicate.\n * @param object The optional object.\n * @param graph The optional graph.\n */\n removeMatches(subject, predicate, object, graph) {\n return this.remove(this.match(subject, predicate, object, graph));\n }\n /**\n * Deletes the given named graph.\n * @param graph The graph term or string to match.\n */\n deleteGraph(graph) {\n if (typeof graph === 'string') {\n graph = this.dataFactory.namedNode(graph);\n }\n return this.removeMatches(undefined, undefined, undefined, graph);\n }\n /**\n * Import the given stream of quads into the store.\n * @param stream A stream of RDF quads.\n */\n import(stream) {\n stream.on('data', (quad) => this.addQuad(quad));\n return stream;\n }\n /**\n * Returns a generator producing all quads matching the pattern.\n * @param subject The optional subject.\n * @param predicate The optional predicate.\n * @param object The optional object.\n * @param graph The optional graph.\n */\n *readQuads(subject, predicate, object, graph) {\n // Check if our dictionary and our indexes have quoted pattern support\n const indexesSupportQuotedPatterns = Boolean(this.dictionary.features.quotedTriples) &&\n Object.values(this.indexesWrapped).every(wrapped => wrapped.index.features.quotedTripleFiltering);\n // Construct a quad pattern array\n const [quadComponents, requireQuotedTripleFiltering] = (0, OrderUtils_1.quadToPattern)(subject, predicate, object, graph, indexesSupportQuotedPatterns);\n // Determine the best index for this pattern\n const indexWrapped = this.indexesWrapped[(0, OrderUtils_1.getBestIndex)(this.indexesWrappedComponentOrders, quadComponents)];\n // Re-order the quad pattern based on this best index's component order\n const quadComponentsOrdered = (0, OrderUtils_1.orderQuadComponents)(indexWrapped.componentOrder, quadComponents);\n // Call the best index's find method.\n // eslint-disable-next-line unicorn/no-array-callback-reference\n for (const decomposedQuad of indexWrapped.index.find(quadComponentsOrdered)) {\n // De-order the resulting quad components into the normal SPOG order for quad creation.\n const quad = this.dataFactory.quad(decomposedQuad[indexWrapped.componentOrderInverse.subject], decomposedQuad[indexWrapped.componentOrderInverse.predicate], decomposedQuad[indexWrapped.componentOrderInverse.object], decomposedQuad[indexWrapped.componentOrderInverse.graph]);\n if (requireQuotedTripleFiltering) {\n if ((0, rdf_terms_1.matchPattern)(quad, subject, predicate, object, graph)) {\n yield quad;\n }\n }\n else {\n yield quad;\n }\n }\n }\n /**\n * Returns an array containing all quads matching the pattern.\n * @param subject The optional subject.\n * @param predicate The optional predicate.\n * @param object The optional object.\n * @param graph The optional graph.\n */\n getQuads(subject, predicate, object, graph) {\n return [...this.readQuads(subject, predicate, object, graph)];\n }\n /**\n * Returns a stream that produces all quads matching the pattern.\n * @param subject The optional subject.\n * @param predicate The optional predicate.\n * @param object The optional object.\n * @param graph The optional graph.\n */\n match(subject, predicate, object, graph) {\n return (0, asynciterator_1.wrap)(this.readQuads(subject, predicate, object, graph));\n }\n /**\n * Returns the exact cardinality of the quads matching the pattern.\n * @param subject The optional subject.\n * @param predicate The optional predicate.\n * @param object The optional object.\n * @param graph The optional graph.\n */\n countQuads(subject, predicate, object, graph) {\n // Check if our dictionary and our indexes have quoted pattern support\n const indexesSupportQuotedPatterns = Boolean(this.dictionary.features.quotedTriples) &&\n Object.values(this.indexesWrapped).every(wrapped => wrapped.index.features.quotedTripleFiltering);\n // Construct a quad pattern array\n const [quadComponents] = (0, OrderUtils_1.quadToPattern)(subject, predicate, object, graph, indexesSupportQuotedPatterns);\n // Optimize all-variables pattern\n if (quadComponents.every(quadComponent => quadComponent === undefined)) {\n return this.size;\n }\n // Determine the best index for this pattern\n const indexWrapped = this.indexesWrapped[(0, OrderUtils_1.getBestIndex)(this.indexesWrappedComponentOrders, quadComponents)];\n // Re-order the quad pattern based on this best index's component order\n const quadComponentsOrdered = (0, OrderUtils_1.orderQuadComponents)(indexWrapped.componentOrder, quadComponents);\n // Call the best index's count method.\n return indexWrapped.index.count(quadComponentsOrdered);\n }\n /**\n * Wrap this store inside a DatasetCore interface.\n * Any mutations in either this store or the wrapper will propagate to each other.\n */\n asDataset() {\n return new DatasetCoreWrapper_1.DatasetCoreWrapper(this);\n }\n}\nRdfStore.DEFAULT_INDEX_COMBINATIONS = [\n ['graph', 'subject', 'predicate', 'object'],\n ['graph', 'predicate', 'object', 'subject'],\n ['graph', 'object', 'subject', 'predicate'],\n];\nexports.RdfStore = RdfStore;\n//# sourceMappingURL=RdfStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DatasetCoreWrapper = void 0;\nconst RdfStore_1 = require(\"../RdfStore\");\n/**\n * A DatasetCoreWrapper exposes an RdfStore inside an RDF.DatasetCore.\n */\nclass DatasetCoreWrapper {\n constructor(store) {\n this.store = store;\n }\n get size() {\n return this.store.size;\n }\n add(quad) {\n this.store.addQuad(quad);\n return this;\n }\n delete(quad) {\n this.store.removeQuad(quad);\n return this;\n }\n has(quad) {\n // eslint-disable-next-line no-unreachable-loop\n for (const result of this.store.readQuads(quad.subject, quad.predicate, quad.object, quad.graph)) {\n return true;\n }\n return false;\n }\n match(subject, predicate, object, graph) {\n const newStore = new RdfStore_1.RdfStore(this.store.options);\n for (const quad of this.store.readQuads(subject, predicate, object, graph)) {\n newStore.addQuad(quad);\n }\n return new DatasetCoreWrapper(newStore);\n }\n [Symbol.iterator]() {\n return this.store.readQuads();\n }\n}\nexports.DatasetCoreWrapper = DatasetCoreWrapper;\n//# sourceMappingURL=DatasetCoreWrapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ITermDictionary.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TermDictionaryNumberMap = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * A term dictionary that encodes to numbers, and stores the dictionary in memory in a Map.\n */\nclass TermDictionaryNumberMap {\n constructor(dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.lastId = 0;\n this.dictionary = new Map();\n this.reverseDictionary = new Map();\n this.features = { quotedTriples: false };\n this.dataFactory = dataFactory;\n }\n encode(term) {\n const key = (0, rdf_string_1.termToString)(term);\n let encoded = this.dictionary.get(key);\n if (encoded === undefined) {\n encoded = this.lastId++;\n this.dictionary.set(key, encoded);\n this.reverseDictionary.set(encoded, key);\n }\n return encoded;\n }\n encodeOptional(term) {\n const key = (0, rdf_string_1.termToString)(term);\n return this.dictionary.get(key);\n }\n decode(encoding) {\n const string = this.reverseDictionary.get(encoding);\n if (string === undefined) {\n throw new Error(`The value ${encoding} is not present in this dictionary`);\n }\n return (0, rdf_string_1.stringToTerm)(string, this.dataFactory);\n }\n encodings() {\n return this.reverseDictionary.keys();\n }\n findQuotedTriples(quotedTriplePattern) {\n throw new Error('findQuotedTriples is not supported');\n }\n findQuotedTriplesEncoded(quotedTriplePattern) {\n throw new Error('findQuotedTriplesEncoded is not supported');\n }\n}\nexports.TermDictionaryNumberMap = TermDictionaryNumberMap;\n//# sourceMappingURL=TermDictionaryNumberMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TermDictionaryNumberRecord = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * A term dictionary that encodes to numbers, and stores the dictionary in memory in a Record.\n */\nclass TermDictionaryNumberRecord {\n constructor(dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.lastId = 0;\n this.dictionary = {};\n this.reverseDictionary = {};\n this.features = { quotedTriples: false };\n this.dataFactory = dataFactory;\n }\n encode(term) {\n const key = (0, rdf_string_1.termToString)(term);\n let encoded = this.dictionary[key];\n if (encoded === undefined) {\n encoded = this.lastId++;\n this.dictionary[key] = encoded;\n this.reverseDictionary[encoded] = key;\n }\n return encoded;\n }\n encodeOptional(term) {\n const key = (0, rdf_string_1.termToString)(term);\n return this.dictionary[key];\n }\n decode(encoding) {\n const string = this.reverseDictionary[encoding];\n if (string === undefined) {\n throw new Error(`The value ${encoding} is not present in this dictionary`);\n }\n return (0, rdf_string_1.stringToTerm)(string, this.dataFactory);\n }\n *encodings() {\n for (const key of Object.keys(this.reverseDictionary)) {\n yield Number.parseInt(key, 10);\n }\n }\n findQuotedTriples(quotedTriplePattern) {\n throw new Error('findQuotedTriples is not supported');\n }\n findQuotedTriplesEncoded(quotedTriplePattern) {\n throw new Error('findQuotedTriplesEncoded is not supported');\n }\n}\nexports.TermDictionaryNumberRecord = TermDictionaryNumberRecord;\n//# sourceMappingURL=TermDictionaryNumberRecord.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TermDictionaryNumberRecordFullTerms = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * A term dictionary that encodes to numbers, and stores the dictionary in memory in a Record.\n * The reverse dictionary will store full RDF term objects,\n * resulting in slightly better query performance at the cost of slightly higher memory usage.\n */\nclass TermDictionaryNumberRecordFullTerms {\n constructor(dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.lastId = 0;\n this.dictionary = {};\n this.reverseDictionary = {};\n this.features = { quotedTriples: false };\n this.dataFactory = dataFactory;\n }\n encode(term) {\n const key = (0, rdf_string_1.termToString)(term);\n let encoded = this.dictionary[key];\n if (encoded === undefined) {\n encoded = this.lastId++;\n this.dictionary[key] = encoded;\n this.reverseDictionary[encoded] = term;\n }\n return encoded;\n }\n encodeOptional(term) {\n const key = (0, rdf_string_1.termToString)(term);\n return this.dictionary[key];\n }\n decode(encoding) {\n const string = this.reverseDictionary[encoding];\n if (string === undefined) {\n throw new Error(`The value ${encoding} is not present in this dictionary`);\n }\n return string;\n }\n *encodings() {\n for (const key of Object.keys(this.reverseDictionary)) {\n yield Number.parseInt(key, 10);\n }\n }\n findQuotedTriples(quotedTriplePattern) {\n throw new Error('findQuotedTriples is not supported');\n }\n findQuotedTriplesEncoded(quotedTriplePattern) {\n throw new Error('findQuotedTriplesEncoded is not supported');\n }\n}\nexports.TermDictionaryNumberRecordFullTerms = TermDictionaryNumberRecordFullTerms;\n//# sourceMappingURL=TermDictionaryNumberRecordFullTerms.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TermDictionaryQuoted = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\n/**\n * A term dictionary for quoted triples.\n *\n * Plain terms and quoted triples are stored in separate dictionaries.\n *\n * Finding quoted triples is done by iterating over all quoted triples, and filtering by the matching ones.\n */\nclass TermDictionaryQuoted {\n constructor(plainTermDictionary, quotedTriplesDictionary, dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.features = { quotedTriples: true };\n this.plainTermDictionary = plainTermDictionary;\n this.quotedTriplesDictionary = quotedTriplesDictionary;\n this.dataFactory = dataFactory;\n }\n encode(term) {\n if (term.termType === 'Quad') {\n // Mask MSB to indicate that the encoding should refer to the quoted triples dictionary.\n return TermDictionaryQuoted.BITMASK | (1 + this.quotedTriplesDictionary.encode(term));\n }\n return this.plainTermDictionary.encode(term);\n }\n encodeOptional(term) {\n if (term.termType === 'Quad') {\n const encoding = this.quotedTriplesDictionary.encodeOptional(term);\n if (encoding === undefined) {\n return encoding;\n }\n // Mask MSB to indicate that the encoding should refer to the quoted triples dictionary.\n return TermDictionaryQuoted.BITMASK | (1 + encoding);\n }\n return this.plainTermDictionary.encodeOptional(term);\n }\n decode(encoding) {\n if (TermDictionaryQuoted.BITMASK & encoding) {\n // Term comes from the quoted triples dictionary\n const encodingBase = (~TermDictionaryQuoted.BITMASK & encoding) - 1;\n return this.quotedTriplesDictionary.decode(encodingBase);\n }\n // Term comes from the plain terms dictionary\n return this.plainTermDictionary.decode(encoding);\n }\n *encodings() {\n for (const encoding of this.plainTermDictionary.encodings()) {\n yield encoding;\n }\n for (const encoding of this.quotedTriplesDictionary.encodings()) {\n yield TermDictionaryQuoted.BITMASK | (1 + encoding);\n }\n }\n *findQuotedTriples(quotedTriplePattern) {\n for (const termEncoded of this.findQuotedTriplesEncoded(quotedTriplePattern)) {\n yield this.decode(termEncoded);\n }\n }\n *findQuotedTriplesEncoded(quotedTriplePattern) {\n for (let encodedQuotedTriple of this.quotedTriplesDictionary.encodings()) {\n encodedQuotedTriple = TermDictionaryQuoted.BITMASK | (1 + encodedQuotedTriple);\n const quotedTriple = this.decode(encodedQuotedTriple);\n if ((0, rdf_terms_1.matchPattern)(quotedTriple, quotedTriplePattern.subject, quotedTriplePattern.predicate, quotedTriplePattern.object, quotedTriplePattern.graph)) {\n yield encodedQuotedTriple;\n }\n }\n }\n}\nTermDictionaryQuoted.BITMASK = 1 << 31;\nexports.TermDictionaryQuoted = TermDictionaryQuoted;\n//# sourceMappingURL=TermDictionaryQuoted.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TermDictionaryQuotedIndexed = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst RdfStoreIndexNestedMap_1 = require(\"../index/RdfStoreIndexNestedMap\");\nconst OrderUtils_1 = require(\"../OrderUtils\");\n/**\n * A term dictionary for quoted triples.\n *\n * Plain terms are stored in a regular dictionary.\n * Quoted triples are stored separately using an index, which is backed the same dictionary.\n *\n * Finding quoted triples is done through indexed lookups.\n */\nclass TermDictionaryQuotedIndexed {\n constructor(rawTermDictionary, dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.quotedTriplesDictionary = [];\n this.features = { quotedTriples: true };\n this.plainTermDictionary = rawTermDictionary;\n const subIndexOpts = {\n // Not required\n indexCombinations: [],\n // Not required\n indexConstructor: undefined,\n dictionary: this,\n dataFactory,\n };\n this.quotedTriplesReverseDictionaries = [\n new RdfStoreIndexNestedMap_1.RdfStoreIndexNestedMap(subIndexOpts),\n new RdfStoreIndexNestedMap_1.RdfStoreIndexNestedMap(subIndexOpts),\n new RdfStoreIndexNestedMap_1.RdfStoreIndexNestedMap(subIndexOpts),\n ];\n this.dataFactory = dataFactory;\n }\n encode(term) {\n if (term.termType === 'Quad') {\n return this.encodeQuotedTriple(term, false);\n }\n return this.plainTermDictionary.encode(term);\n }\n encodeQuotedTriple(quad, optional) {\n // Only quoted triples are supported\n if (quad.graph.termType !== 'DefaultGraph') {\n throw new Error('Encoding of quoted quads outside of the default graph is not allowed');\n }\n // Check if the quad was already encoded\n const encodedTripleOptional = (0, OrderUtils_1.encodeOptionalTerms)([quad.subject, quad.predicate, quad.object, quad.graph], this);\n const id = encodedTripleOptional && encodedTripleOptional.every(encoded => encoded !== undefined) ?\n this.quotedTriplesReverseDictionaries[0].getEncoded(encodedTripleOptional) :\n undefined;\n // Return the encoding if we found one\n if (id !== undefined || optional) {\n // Mask MSB to indicate that the encoding should refer to the quoted triples dictionary.\n return (id === undefined ? undefined : TermDictionaryQuotedIndexed.BITMASK | id);\n }\n // If the quad was not encoded yet, add a new entry for it in the dictionary.\n const encodedTriple = [\n this.encode(quad.subject),\n this.encode(quad.predicate),\n this.encode(quad.object),\n ];\n const encodingBase = this.quotedTriplesDictionary.length + 1;\n this.quotedTriplesDictionary.push(encodedTriple);\n const encodedGraph = this.encode(this.dataFactory.defaultGraph());\n this.quotedTriplesReverseDictionaries[0].set([\n encodedTriple[0],\n encodedTriple[1],\n encodedTriple[2],\n encodedGraph,\n ], encodingBase);\n this.quotedTriplesReverseDictionaries[1].set([\n encodedTriple[1],\n encodedTriple[2],\n encodedTriple[0],\n encodedGraph,\n ], encodingBase);\n this.quotedTriplesReverseDictionaries[2].set([\n encodedTriple[2],\n encodedTriple[0],\n encodedTriple[1],\n encodedGraph,\n ], encodingBase);\n // Mask MSB to indicate that the encoding should refer to the quoted triples dictionary.\n return TermDictionaryQuotedIndexed.BITMASK | encodingBase;\n }\n encodeOptional(term) {\n if (term.termType === 'Quad') {\n return this.encodeQuotedTriple(term, true);\n }\n return this.plainTermDictionary.encodeOptional(term);\n }\n decode(encoding) {\n if (TermDictionaryQuotedIndexed.BITMASK & encoding) {\n // Term comes from the quoted triples dictionary\n const encodingBase = (~TermDictionaryQuotedIndexed.BITMASK & encoding) - 1;\n if (encodingBase >= this.quotedTriplesDictionary.length) {\n throw new Error(`The value ${encoding} is not present in the quoted triples range of the dictionary`);\n }\n const encodedTerms = this.quotedTriplesDictionary[encodingBase];\n return this.dataFactory.quad(this.decode(encodedTerms[0]), this.decode(encodedTerms[1]), this.decode(encodedTerms[2]));\n }\n // Term comes from the plain terms dictionary\n return this.plainTermDictionary.decode(encoding);\n }\n *encodings() {\n for (const encoding of this.plainTermDictionary.encodings()) {\n yield encoding;\n }\n for (const encoding of this.quotedTriplesDictionary.keys()) {\n yield TermDictionaryQuotedIndexed.BITMASK | (1 + encoding);\n }\n }\n *findQuotedTriples(quotedTriplePattern) {\n for (const termEncoded of this.findQuotedTriplesEncoded(quotedTriplePattern)) {\n yield this.decode(termEncoded);\n }\n }\n *findQuotedTriplesEncoded(quotedTriplePattern) {\n const [patternIn, requireQuotedTripleFiltering] = (0, OrderUtils_1.quadToPattern)(quotedTriplePattern.subject, quotedTriplePattern.predicate, quotedTriplePattern.object, quotedTriplePattern.graph, true);\n // Find all matching terms iteratively\n for (const termS of this.patternToIterable(patternIn[0])) {\n for (const termP of this.patternToIterable(patternIn[1])) {\n for (const termO of this.patternToIterable(patternIn[2])) {\n for (const termG of this.patternToIterable(patternIn[3])) {\n // Find all terms matching the pattern from the reverse indexes\n // We select the reverse index according to the current triple pattern\n if ((termS && termP) || (!termP && !termO)) {\n // SPO\n const pattern = [termS, termP, termO, termG];\n for (const termEncoded of this.quotedTriplesReverseDictionaries[0].findEncoded(pattern, patternIn)) {\n yield TermDictionaryQuotedIndexed.BITMASK |\n this.quotedTriplesReverseDictionaries[0].getEncoded(termEncoded);\n }\n }\n else if (!termS && termP) {\n // POS\n const pattern = [termP, termO, termS, termG];\n for (const termEncoded of this.quotedTriplesReverseDictionaries[1].findEncoded(pattern, patternIn)) {\n yield TermDictionaryQuotedIndexed.BITMASK |\n this.quotedTriplesReverseDictionaries[1].getEncoded(termEncoded);\n }\n }\n else {\n // OSP\n const pattern = [termO, termS, termP, termG];\n for (const termEncoded of this.quotedTriplesReverseDictionaries[2].findEncoded(pattern, patternIn)) {\n yield TermDictionaryQuotedIndexed.BITMASK |\n this.quotedTriplesReverseDictionaries[2].getEncoded(termEncoded);\n }\n }\n }\n }\n }\n }\n }\n /**\n * Helper function to convert a term to an iterator over encoded terms.\n * @param patternTerm A term.\n * @protected\n */\n *patternToIterable(patternTerm) {\n // If the term is another quoted quad, recursively find other quoted triples\n if ((patternTerm === null || patternTerm === void 0 ? void 0 : patternTerm.termType) === 'Quad') {\n yield* this.findQuotedTriplesEncoded(patternTerm);\n return;\n }\n // Undefined terms indicate a variable\n if (patternTerm === undefined) {\n // eslint-disable-next-line unicorn/no-useless-undefined\n yield undefined;\n return;\n }\n // Defined terms indicate a precise match\n const enc = this.encodeOptional(patternTerm);\n if (enc === undefined) {\n return;\n }\n yield enc;\n }\n}\nTermDictionaryQuotedIndexed.BITMASK = 1 << 31;\nexports.TermDictionaryQuotedIndexed = TermDictionaryQuotedIndexed;\n//# sourceMappingURL=TermDictionaryQuotedIndexed.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TermDictionaryQuotedReferential = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst OrderUtils_1 = require(\"../OrderUtils\");\n/**\n * A term dictionary for quoted triples.\n *\n * Plain terms and quoted triples are stored in separate dictionaries,\n * but quoted triples are encoded using encodings from the plain term dictionary.\n *\n * Finding quoted triples is done by iterating over all quoted triples, and filtering by the matching ones.\n */\nclass TermDictionaryQuotedReferential {\n constructor(plainTermDictionary, dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.quotedTriplesDictionary = [];\n this.quotedTriplesReverseDictionary = {};\n this.features = { quotedTriples: true };\n this.plainTermDictionary = plainTermDictionary;\n this.dataFactory = dataFactory;\n }\n encode(term) {\n if (term.termType === 'Quad') {\n return this.encodeQuotedTriple(term, false);\n }\n return this.plainTermDictionary.encode(term);\n }\n encodeQuotedTriple(quad, optional) {\n var _a;\n // Only quoted triples are supported\n if (quad.graph.termType !== 'DefaultGraph') {\n throw new Error('Encoding of quoted quads outside of the default graph is not allowed');\n }\n // Check if the quad was already encoded\n const encodedTripleOptional = (_a = (0, OrderUtils_1.encodeOptionalTerms)([quad.subject, quad.predicate, quad.object, undefined], this)) === null || _a === void 0 ? void 0 : _a.slice(0, 3);\n const id = encodedTripleOptional && encodedTripleOptional.every(encoded => encoded !== undefined) ?\n this.quotedTriplesReverseDictionary[encodedTripleOptional.join(TermDictionaryQuotedReferential.SEPARATOR)] :\n undefined;\n // Return the encoding if we found one\n if (id !== undefined || optional) {\n // Mask MSB to indicate that the encoding should refer to the quoted triples dictionary.\n return (id === undefined ? undefined : TermDictionaryQuotedReferential.BITMASK | id);\n }\n // If the quad was not encoded yet, add a new entry for it in the dictionary.\n const encodedTriple = [\n this.encode(quad.subject),\n this.encode(quad.predicate),\n this.encode(quad.object),\n ];\n const encodingBase = this.quotedTriplesDictionary.length + 1;\n this.quotedTriplesDictionary.push(encodedTriple);\n this.quotedTriplesReverseDictionary[encodedTriple.join(TermDictionaryQuotedReferential.SEPARATOR)] = encodingBase;\n // Mask MSB to indicate that the encoding should refer to the quoted triples dictionary.\n return TermDictionaryQuotedReferential.BITMASK | encodingBase;\n }\n encodeOptional(term) {\n if (term.termType === 'Quad') {\n return this.encodeQuotedTriple(term, true);\n }\n return this.plainTermDictionary.encodeOptional(term);\n }\n decode(encoding) {\n if (TermDictionaryQuotedReferential.BITMASK & encoding) {\n // Term comes from the quoted triples dictionary\n const encodingBase = (~TermDictionaryQuotedReferential.BITMASK & encoding) - 1;\n if (encodingBase >= this.quotedTriplesDictionary.length) {\n throw new Error(`The value ${encoding} is not present in the quoted triples range of the dictionary`);\n }\n const encodedTerms = this.quotedTriplesDictionary[encodingBase];\n return this.dataFactory.quad(this.decode(encodedTerms[0]), this.decode(encodedTerms[1]), this.decode(encodedTerms[2]));\n }\n // Term comes from the plain terms dictionary\n return this.plainTermDictionary.decode(encoding);\n }\n *encodings() {\n for (const encoding of this.plainTermDictionary.encodings()) {\n yield encoding;\n }\n for (const encoding of this.quotedTriplesDictionary.keys()) {\n yield TermDictionaryQuotedReferential.BITMASK | (1 + encoding);\n }\n }\n *findQuotedTriples(quotedTriplePattern) {\n for (const termEncoded of this.findQuotedTriplesEncoded(quotedTriplePattern)) {\n yield this.decode(termEncoded);\n }\n }\n *findQuotedTriplesEncoded(quotedTriplePattern) {\n for (let encodedQuotedTriple of this.quotedTriplesDictionary.keys()) {\n encodedQuotedTriple = TermDictionaryQuotedReferential.BITMASK | (1 + encodedQuotedTriple);\n const quotedTriple = this.decode(encodedQuotedTriple);\n if ((0, rdf_terms_1.matchPattern)(quotedTriple, quotedTriplePattern.subject, quotedTriplePattern.predicate, quotedTriplePattern.object, quotedTriplePattern.graph)) {\n yield encodedQuotedTriple;\n }\n }\n }\n}\nTermDictionaryQuotedReferential.BITMASK = 1 << 31;\nTermDictionaryQuotedReferential.SEPARATOR = '_';\nexports.TermDictionaryQuotedReferential = TermDictionaryQuotedReferential;\n//# sourceMappingURL=TermDictionaryQuotedReferential.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TermDictionarySymbol = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * A term dictionary that encodes and decodes using symbols.\n */\nclass TermDictionarySymbol {\n constructor(dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.features = { quotedTriples: false };\n this.dataFactory = dataFactory;\n }\n encode(term) {\n return Symbol.for(`rdf::${(0, rdf_string_1.termToString)(term)}`);\n }\n encodeOptional(term) {\n return this.encode(term);\n }\n decode(encoding) {\n const string = Symbol.keyFor(encoding);\n if (string === undefined) {\n throw new Error(`The value ${String(encoding)} is not present in this dictionary`);\n }\n return (0, rdf_string_1.stringToTerm)(string.slice(5), this.dataFactory);\n }\n encodings() {\n throw new Error('encodings is not supported');\n }\n findQuotedTriples(quotedTriplePattern) {\n throw new Error('findQuotedTriples is not supported');\n }\n findQuotedTriplesEncoded(quotedTriplePattern) {\n throw new Error('findQuotedTriplesEncoded is not supported');\n }\n}\nexports.TermDictionarySymbol = TermDictionarySymbol;\n//# sourceMappingURL=TermDictionarySymbol.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IRdfStoreIndex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfStoreIndexNestedMap = void 0;\nconst OrderUtils_1 = require(\"../OrderUtils\");\n/**\n * An RDF store index that is implemented using nested Maps.\n */\nclass RdfStoreIndexNestedMap {\n constructor(options) {\n this.features = {\n quotedTripleFiltering: false,\n };\n this.dictionary = options.dictionary;\n this.nestedMap = new Map();\n }\n set(terms, value) {\n const map0 = this.nestedMap;\n let map1 = map0.get(terms[0]);\n if (!map1) {\n map1 = new Map();\n map0.set(terms[0], map1);\n }\n let map2 = map1.get(terms[1]);\n if (!map2) {\n map2 = new Map();\n map1.set(terms[1], map2);\n }\n let map3 = map2.get(terms[2]);\n if (!map3) {\n map3 = new Map();\n map2.set(terms[2], map3);\n }\n const contained = map3.has(terms[3]);\n if (!contained) {\n map3.set(terms[3], value);\n }\n return !contained;\n }\n remove(terms) {\n const map0 = this.nestedMap;\n const map1 = map0.get(terms[0]);\n if (!map1) {\n return false;\n }\n const map2 = map1.get(terms[1]);\n if (!map2) {\n return false;\n }\n const map3 = map2.get(terms[2]);\n if (!map3) {\n return false;\n }\n const ret = map3.delete(terms[3]);\n // Clean up intermediate maps\n if (ret && map3.size === 0) {\n map2.delete(terms[2]);\n if (map2.size === 0) {\n map1.delete(terms[1]);\n if (map1.size === 0) {\n map0.delete(terms[0]);\n }\n }\n }\n return ret;\n }\n get(key) {\n const encoded = (0, OrderUtils_1.encodeOptionalTerms)(key, this.dictionary);\n // eslint-disable-next-line unicorn/no-useless-undefined\n if (!encoded || encoded.includes(undefined)) {\n return undefined;\n }\n return this.getEncoded(encoded);\n }\n getEncoded(ids) {\n const map1 = this.nestedMap.get(ids[0]);\n if (!map1) {\n return undefined;\n }\n const map2 = map1.get(ids[1]);\n if (!map2) {\n return undefined;\n }\n const map3 = map2.get(ids[2]);\n if (!map3) {\n return undefined;\n }\n return map3.get(ids[3]);\n }\n *find(terms) {\n const ids = (0, OrderUtils_1.encodeOptionalTerms)(terms, this.dictionary);\n if (!ids) {\n return;\n }\n const [id0, id1, id2, id3] = ids;\n const [term0, term1, term2, term3] = terms;\n let partialQuad0;\n let partialQuad1;\n let partialQuad2;\n let partialQuad3;\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedMap;\n const map0Keys = id0 !== undefined ? (map0.has(id0) ? [id0] : []) : map0.keys();\n for (const key1 of map0Keys) {\n map1 = map0.get(key1);\n partialQuad0 = term0 || this.dictionary.decode(key1);\n const map1Keys = id1 !== undefined ? (map1.has(id1) ? [id1] : []) : map1.keys();\n for (const key2 of map1Keys) {\n map2 = map1.get(key2);\n partialQuad1 = term1 || this.dictionary.decode(key2);\n const map2Keys = id2 !== undefined ? (map2.has(id2) ? [id2] : []) : map2.keys();\n for (const key3 of map2Keys) {\n map3 = map2.get(key3);\n partialQuad2 = term2 || this.dictionary.decode(key3);\n const map3Keys = id3 !== undefined ? (map3.has(id3) ? [id3] : []) : map3.keys();\n for (const key4 of map3Keys) {\n partialQuad3 = term3 || this.dictionary.decode(key4);\n yield [partialQuad0, partialQuad1, partialQuad2, partialQuad3];\n }\n }\n }\n }\n }\n // The code below is nearly identical. We duplicate because abstraction would result in a significant performance hit.\n *findEncoded(ids, terms) {\n const [id0, id1, id2, id3] = ids;\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedMap;\n const map0Keys = id0 !== undefined ? (map0.has(id0) ? [id0] : []) : map0.keys();\n for (const key1 of map0Keys) {\n map1 = map0.get(key1);\n const map1Keys = id1 !== undefined ? (map1.has(id1) ? [id1] : []) : map1.keys();\n for (const key2 of map1Keys) {\n map2 = map1.get(key2);\n const map2Keys = id2 !== undefined ? (map2.has(id2) ? [id2] : []) : map2.keys();\n for (const key3 of map2Keys) {\n map3 = map2.get(key3);\n const map3Keys = id3 !== undefined ? (map3.has(id3) ? [id3] : []) : map3.keys();\n for (const key4 of map3Keys) {\n yield [key1, key2, key3, key4];\n }\n }\n }\n }\n }\n count(terms) {\n let count = 0;\n const ids = (0, OrderUtils_1.encodeOptionalTerms)(terms, this.dictionary);\n if (!ids) {\n return 0;\n }\n const id0 = ids[0];\n const id1 = ids[1];\n const id2 = ids[2];\n const id3 = ids[3];\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedMap;\n const map0Keys = id0 !== undefined ? (map0.has(id0) ? [id0] : []) : map0.keys();\n for (const key1 of map0Keys) {\n map1 = map0.get(key1);\n const map1Keys = id1 !== undefined ? (map1.has(id1) ? [id1] : []) : map1.keys();\n for (const key2 of map1Keys) {\n map2 = map1.get(key2);\n const map2Keys = id2 !== undefined ? (map2.has(id2) ? [id2] : []) : map2.keys();\n for (const key3 of map2Keys) {\n map3 = map2.get(key3);\n if (id3 !== undefined) {\n if (map3.has(id3)) {\n count++;\n }\n }\n else {\n count += map3.size;\n }\n }\n }\n }\n return count;\n }\n}\nexports.RdfStoreIndexNestedMap = RdfStoreIndexNestedMap;\n//# sourceMappingURL=RdfStoreIndexNestedMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfStoreIndexNestedMapQuoted = void 0;\nconst OrderUtils_1 = require(\"../OrderUtils\");\nconst RdfStoreIndexNestedMap_1 = require(\"./RdfStoreIndexNestedMap\");\n/**\n * An RDF store index that is implemented using nested Maps with optimized quoted triple support.\n */\nclass RdfStoreIndexNestedMapQuoted extends RdfStoreIndexNestedMap_1.RdfStoreIndexNestedMap {\n constructor(options) {\n super(options);\n this.features = {\n quotedTripleFiltering: true,\n };\n }\n *getQuotedPatternKeys(map, term) {\n for (const quotedTripleEncoded of this.dictionary.findQuotedTriplesEncoded(term)) {\n if (map.has(quotedTripleEncoded)) {\n yield quotedTripleEncoded;\n }\n }\n }\n *find(terms) {\n const ids = (0, OrderUtils_1.encodeOptionalTerms)(terms, this.dictionary);\n if (!ids) {\n return;\n }\n const [id0, id1, id2, id3] = ids;\n const [term0, term1, term2, term3] = terms;\n const [quotedTerm0, quotedTerm1, quotedTerm2, quotedTerm3] = (0, OrderUtils_1.arePatternsQuoted)(terms);\n let partialQuad0;\n let partialQuad1;\n let partialQuad2;\n let partialQuad3;\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedMap;\n const map0Keys = (term0 !== undefined ?\n (quotedTerm0 ? this.getQuotedPatternKeys(map0, term0) : (map0.has(id0) ? [id0] : [])) :\n map0.keys());\n for (const key1 of map0Keys) {\n map1 = map0.get(key1);\n partialQuad0 = !quotedTerm0 && term0 ? term0 : this.dictionary.decode(key1);\n const map1Keys = (term1 !== undefined ?\n (quotedTerm1 ? this.getQuotedPatternKeys(map1, term1) : (map1.has(id1) ? [id1] : [])) :\n map1.keys());\n for (const key2 of map1Keys) {\n map2 = map1.get(key2);\n partialQuad1 = !quotedTerm1 && term1 ? term1 : this.dictionary.decode(key2);\n const map2Keys = (term2 !== undefined ?\n (quotedTerm2 ? this.getQuotedPatternKeys(map2, term2) : (map2.has(id2) ? [id2] : [])) :\n map2.keys());\n for (const key3 of map2Keys) {\n map3 = map2.get(key3);\n partialQuad2 = !quotedTerm2 && term2 ? term2 : this.dictionary.decode(key3);\n const map3Keys = (term3 !== undefined ?\n (quotedTerm3 ? this.getQuotedPatternKeys(map3, term3) : (map3.has(id3) ? [id3] : [])) :\n map3.keys());\n for (const key4 of map3Keys) {\n partialQuad3 = !quotedTerm3 && term3 ? term3 : this.dictionary.decode(key4);\n yield [partialQuad0, partialQuad1, partialQuad2, partialQuad3];\n }\n }\n }\n }\n }\n // The code below is nearly identical. We duplicate because abstraction would result in a significant performance hit.\n *findEncoded(ids, terms) {\n const [id0, id1, id2, id3] = ids;\n const [term0, term1, term2, term3] = terms;\n const [quotedTerm0, quotedTerm1, quotedTerm2, quotedTerm3] = (0, OrderUtils_1.arePatternsQuoted)(terms);\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedMap;\n const map0Keys = (term0 !== undefined ?\n (quotedTerm0 ? this.getQuotedPatternKeys(map0, term0) : (map0.has(id0) ? [id0] : [])) :\n map0.keys());\n for (const key1 of map0Keys) {\n map1 = map0.get(key1);\n const map1Keys = (term1 !== undefined ?\n (quotedTerm1 ? this.getQuotedPatternKeys(map1, term1) : (map1.has(id1) ? [id1] : [])) :\n map1.keys());\n for (const key2 of map1Keys) {\n map2 = map1.get(key2);\n const map2Keys = (term2 !== undefined ?\n (quotedTerm2 ? this.getQuotedPatternKeys(map2, term2) : (map2.has(id2) ? [id2] : [])) :\n map2.keys());\n for (const key3 of map2Keys) {\n map3 = map2.get(key3);\n const map3Keys = (term3 !== undefined ?\n (quotedTerm3 ? this.getQuotedPatternKeys(map3, term3) : (map3.has(id3) ? [id3] : [])) :\n map3.keys());\n for (const key4 of map3Keys) {\n yield [\n Number.parseInt(key1, 10),\n Number.parseInt(key2, 10),\n Number.parseInt(key3, 10),\n Number.parseInt(key4, 10),\n ];\n }\n }\n }\n }\n }\n count(terms) {\n let count = 0;\n const ids = (0, OrderUtils_1.encodeOptionalTerms)(terms, this.dictionary);\n if (!ids) {\n return 0;\n }\n const [id0, id1, id2, id3] = ids;\n const [term0, term1, term2, term3] = terms;\n const [quotedTerm0, quotedTerm1, quotedTerm2, quotedTerm3] = (0, OrderUtils_1.arePatternsQuoted)(terms);\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedMap;\n const map0Keys = (term0 !== undefined ?\n (quotedTerm0 ? this.getQuotedPatternKeys(map0, term0) : (map0.has(id0) ? [id0] : [])) :\n map0.keys());\n for (const key1 of map0Keys) {\n map1 = map0.get(key1);\n const map1Keys = (term1 !== undefined ?\n (quotedTerm1 ? this.getQuotedPatternKeys(map1, term1) : (map1.has(id1) ? [id1] : [])) :\n map1.keys());\n for (const key2 of map1Keys) {\n map2 = map1.get(key2);\n const map2Keys = (term2 !== undefined ?\n (quotedTerm2 ? this.getQuotedPatternKeys(map2, term2) : (map2.has(id2) ? [id2] : [])) :\n map2.keys());\n for (const key3 of map2Keys) {\n map3 = map2.get(key3);\n if (term3 !== undefined) {\n if (quotedTerm3) {\n count += [...this.getQuotedPatternKeys(map3, term3)].length;\n }\n else if (map3.has(id3)) {\n count++;\n }\n }\n else {\n count += map3.size;\n }\n }\n }\n }\n return count;\n }\n}\nexports.RdfStoreIndexNestedMapQuoted = RdfStoreIndexNestedMapQuoted;\n//# sourceMappingURL=RdfStoreIndexNestedMapQuoted.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfStoreIndexNestedMapRecursive = void 0;\nconst OrderUtils_1 = require(\"../OrderUtils\");\n/**\n * An RDF store index that is implemented using nested Maps,\n * and finds quads components via recursive methods calls.\n */\nclass RdfStoreIndexNestedMapRecursive {\n constructor(options) {\n this.features = {\n quotedTripleFiltering: false,\n };\n this.dictionary = options.dictionary;\n this.nestedMap = new Map();\n }\n set(terms, value) {\n let map = this.nestedMap;\n let contained = false;\n for (const [i, term] of terms.entries()) {\n const mapActual = map;\n let nextMap = mapActual.get(term);\n if (!nextMap) {\n nextMap = i === terms.length - 1 ? value : new Map();\n mapActual.set(term, nextMap);\n }\n else if (i === terms.length - 1) {\n contained = true;\n }\n map = nextMap;\n }\n return !contained;\n }\n remove(terms) {\n const map0 = this.nestedMap;\n const map1 = map0.get(terms[0]);\n if (!map1) {\n return false;\n }\n const map2 = map1.get(terms[1]);\n if (!map2) {\n return false;\n }\n const map3 = map2.get(terms[2]);\n if (!map3) {\n return false;\n }\n const ret = map3.delete(terms[3]);\n // Clean up intermediate maps\n if (ret && map3.size === 0) {\n map2.delete(terms[2]);\n if (map2.size === 0) {\n map1.delete(terms[1]);\n if (map1.size === 0) {\n map0.delete(terms[0]);\n }\n }\n }\n return ret;\n }\n get(key) {\n const encoded = (0, OrderUtils_1.encodeOptionalTerms)(key, this.dictionary);\n // eslint-disable-next-line unicorn/no-useless-undefined\n if (!encoded || encoded.includes(undefined)) {\n return undefined;\n }\n return this.getEncoded(encoded);\n }\n getEncoded(ids) {\n const map1 = this.nestedMap.get(ids[0]);\n if (!map1) {\n return undefined;\n }\n const map2 = map1.get(ids[1]);\n if (!map2) {\n return undefined;\n }\n const map3 = map2.get(ids[2]);\n if (!map3) {\n return undefined;\n }\n return map3.get(ids[3]);\n }\n *find(terms) {\n const ids = (0, OrderUtils_1.encodeOptionalTerms)(terms, this.dictionary);\n if (!ids) {\n return;\n }\n for (const termsEncoded of this.findEncoded(ids, terms)) {\n yield [\n ids[0] !== undefined ? terms[0] : this.dictionary.decode(termsEncoded[0]),\n ids[1] !== undefined ? terms[1] : this.dictionary.decode(termsEncoded[1]),\n ids[2] !== undefined ? terms[2] : this.dictionary.decode(termsEncoded[2]),\n ids[3] !== undefined ? terms[3] : this.dictionary.decode(termsEncoded[3]),\n ];\n }\n }\n *findEncoded(ids, terms) {\n return yield* this\n .findEncodedInner(0, ids, terms, this.nestedMap, []);\n }\n *findEncodedInner(index, ids, terms, map, partialQuad) {\n if (index === ids.length) {\n yield [...partialQuad];\n }\n else {\n const id = ids[index];\n const currentTerm = terms[index];\n // If current term is undefined, iterate over all terms at this level.\n if (!currentTerm) {\n for (const [key, subMap] of map.entries()) {\n partialQuad[index] = key;\n yield* this\n .findEncodedInner(index + 1, ids, terms, subMap, partialQuad);\n }\n }\n else {\n // If the current term is defined, find one matching map for the current term.\n const encodedTerm = id;\n if (encodedTerm !== undefined) {\n const subMap = map.get(encodedTerm);\n if (subMap) {\n partialQuad[index] = id;\n yield* this\n .findEncodedInner(index + 1, ids, terms, subMap, partialQuad);\n }\n }\n }\n }\n }\n count(terms) {\n return this.countInner(0, terms, this.nestedMap);\n }\n countInner(index, terms, map) {\n const currentTerm = terms[index];\n let count = 0;\n // If current term is undefined, iterate over all terms at this level.\n if (!currentTerm) {\n if (index === terms.length - 1) {\n return map.size;\n }\n for (const subMap of map.values()) {\n count += this.countInner(index + 1, terms, subMap);\n }\n }\n else {\n // If the current term is defined, find one matching map for the current term.\n const encodedTerm = this.dictionary.encodeOptional(currentTerm);\n if (encodedTerm !== undefined) {\n if (index === terms.length - 1) {\n if (map.has(encodedTerm)) {\n return 1;\n }\n return 0;\n }\n const subMap = map.get(encodedTerm);\n if (subMap) {\n count += this.countInner(index + 1, terms, subMap);\n }\n }\n }\n return count;\n }\n}\nexports.RdfStoreIndexNestedMapRecursive = RdfStoreIndexNestedMapRecursive;\n//# sourceMappingURL=RdfStoreIndexNestedMapRecursive.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfStoreIndexNestedMapRecursiveQuoted = void 0;\nconst OrderUtils_1 = require(\"../OrderUtils\");\nconst RdfStoreIndexNestedMapRecursive_1 = require(\"./RdfStoreIndexNestedMapRecursive\");\n/**\n * An RDF store index that is implemented using nested Maps,\n * and finds quads components via recursive methods calls\n * with optimized quoted triple support.\n */\nclass RdfStoreIndexNestedMapRecursiveQuoted extends RdfStoreIndexNestedMapRecursive_1.RdfStoreIndexNestedMapRecursive {\n constructor(options) {\n super(options);\n this.features = {\n quotedTripleFiltering: true,\n };\n }\n *findEncoded(ids, terms) {\n return yield* this\n .findEncodedInnerQuoted(0, ids, terms, (0, OrderUtils_1.arePatternsQuoted)(terms), this.nestedMap, []);\n }\n *findEncodedInnerQuoted(index, ids, terms, isQuotedPattern, map, partialQuad) {\n if (index === ids.length) {\n yield [...partialQuad];\n }\n else {\n const id = ids[index];\n const currentTerm = terms[index];\n // If current term is undefined, iterate over all terms at this level.\n if (!currentTerm) {\n for (const [key, subMap] of map.entries()) {\n partialQuad[index] = key;\n yield* this\n .findEncodedInnerQuoted(index + 1, ids, terms, isQuotedPattern, subMap, partialQuad);\n }\n }\n else if (isQuotedPattern[index]) {\n const quotedTriplesEncoded = this\n .dictionary.findQuotedTriplesEncoded(currentTerm);\n // Below, we perform a type of inner (hash) join between quotedTriplesEncoded and map (with hash on map)\n for (const quotedTripleEncoded of quotedTriplesEncoded) {\n const subMap = map.get(quotedTripleEncoded);\n if (subMap) {\n partialQuad[index] = quotedTripleEncoded;\n yield* this.findEncodedInnerQuoted(index + 1, ids, terms, isQuotedPattern, subMap, partialQuad);\n }\n }\n }\n else {\n // If the current term is defined, find one matching map for the current term.\n const encodedTerm = id;\n if (encodedTerm !== undefined) {\n const subMap = map.get(encodedTerm);\n if (subMap) {\n partialQuad[index] = id;\n yield* this.findEncodedInnerQuoted(index + 1, ids, terms, isQuotedPattern, subMap, partialQuad);\n }\n }\n }\n }\n }\n countInner(index, terms, map) {\n const currentTerm = terms[index];\n let count = 0;\n // If current term is undefined, iterate over all terms at this level.\n if (!currentTerm) {\n if (index === terms.length - 1) {\n return map.size;\n }\n for (const subMap of map.values()) {\n count += this.countInner(index + 1, terms, subMap);\n }\n }\n else if (currentTerm.termType === 'Quad' && (0, OrderUtils_1.quadHasVariables)(currentTerm)) {\n const quotedTriplesEncoded = this.dictionary.findQuotedTriplesEncoded(currentTerm);\n // Below, we perform a type of inner (hash) join between quotedTriplesEncoded and map (with hash on map)\n for (const quotedTripleEncoded of quotedTriplesEncoded) {\n if (index === terms.length - 1) {\n if (map.has(quotedTripleEncoded)) {\n count++;\n }\n }\n else {\n const subMap = map.get(quotedTripleEncoded);\n if (subMap) {\n count += this.countInner(index + 1, terms, subMap);\n }\n }\n }\n }\n else {\n // If the current term is defined, find one matching map for the current term.\n const encodedTerm = this.dictionary.encodeOptional(currentTerm);\n if (encodedTerm !== undefined) {\n if (index === terms.length - 1) {\n if (map.has(encodedTerm)) {\n return 1;\n }\n return 0;\n }\n const subMap = map.get(encodedTerm);\n if (subMap) {\n count += this.countInner(index + 1, terms, subMap);\n }\n }\n }\n return count;\n }\n}\nexports.RdfStoreIndexNestedMapRecursiveQuoted = RdfStoreIndexNestedMapRecursiveQuoted;\n//# sourceMappingURL=RdfStoreIndexNestedMapRecursiveQuoted.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfStoreIndexNestedRecord = void 0;\nconst OrderUtils_1 = require(\"../OrderUtils\");\n/**\n * An RDF store index that is implemented using nested records.\n */\nclass RdfStoreIndexNestedRecord {\n constructor(options) {\n this.features = {\n quotedTripleFiltering: false,\n };\n this.dictionary = options.dictionary;\n this.nestedRecords = {};\n }\n set(terms, value) {\n const map0 = this.nestedRecords;\n const map1 = map0[terms[0]] || (map0[terms[0]] = {});\n const map2 = map1[terms[1]] || (map1[terms[1]] = {});\n const map3 = map2[terms[2]] || (map2[terms[2]] = {});\n if (map3[terms[3]]) {\n return false;\n }\n map3[terms[3]] = value;\n return true;\n }\n remove(terms) {\n const map0 = this.nestedRecords;\n const map1 = map0[terms[0]];\n if (!map1) {\n return false;\n }\n const map2 = map1[terms[1]];\n if (!map2) {\n return false;\n }\n const map3 = map2[terms[2]];\n if (!map3) {\n return false;\n }\n if (!map3[terms[3]]) {\n return false;\n }\n delete map3[terms[3]];\n // Clean up intermediate maps\n if (Object.keys(map3).length === 0) {\n delete map2[terms[2]];\n if (Object.keys(map2).length === 0) {\n delete map1[terms[1]];\n if (Object.keys(map1).length === 0) {\n delete map0[terms[0]];\n }\n }\n }\n return true;\n }\n get(key) {\n const encoded = (0, OrderUtils_1.encodeOptionalTerms)(key, this.dictionary);\n // eslint-disable-next-line unicorn/no-useless-undefined\n if (!encoded || encoded.includes(undefined)) {\n return undefined;\n }\n return this.getEncoded(encoded);\n }\n getEncoded(ids) {\n var _a, _b, _c;\n return (_c = (_b = (_a = this.nestedRecords[ids[0]]) === null || _a === void 0 ? void 0 : _a[ids[1]]) === null || _b === void 0 ? void 0 : _b[ids[2]]) === null || _c === void 0 ? void 0 : _c[ids[3]];\n }\n *find(terms) {\n const ids = (0, OrderUtils_1.encodeOptionalTerms)(terms, this.dictionary);\n if (!ids) {\n return;\n }\n const [id0, id1, id2, id3] = ids;\n const [term0, term1, term2, term3] = terms;\n let partialQuad0;\n let partialQuad1;\n let partialQuad2;\n let partialQuad3;\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedRecords;\n const map0Keys = id0 !== undefined ? (id0 in map0 ? [id0] : []) : Object.keys(map0);\n for (const key1 of map0Keys) {\n map1 = map0[key1];\n partialQuad0 = term0 || this.dictionary.decode(Number.parseInt(key1, 10));\n const map1Keys = id1 !== undefined ? (id1 in map1 ? [id1] : []) : Object.keys(map1);\n for (const key2 of map1Keys) {\n map2 = map1[key2];\n partialQuad1 = term1 || this.dictionary.decode(Number.parseInt(key2, 10));\n const map2Keys = id2 !== undefined ? (id2 in map2 ? [id2] : []) : Object.keys(map2);\n for (const key3 of map2Keys) {\n map3 = map2[key3];\n partialQuad2 = term2 || this.dictionary.decode(Number.parseInt(key3, 10));\n const map3Keys = id3 !== undefined ? (id3 in map3 ? [id3] : []) : Object.keys(map3);\n for (const key4 of map3Keys) {\n partialQuad3 = term3 || this.dictionary.decode(Number.parseInt(key4, 10));\n yield [partialQuad0, partialQuad1, partialQuad2, partialQuad3];\n }\n }\n }\n }\n }\n // The code below is nearly identical. We duplicate because abstraction would result in a significant performance hit.\n *findEncoded(ids, terms) {\n const [id0, id1, id2, id3] = ids;\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedRecords;\n const map0Keys = id0 !== undefined ? (id0 in map0 ? [id0] : []) : Object.keys(map0);\n for (const key1 of map0Keys) {\n map1 = map0[key1];\n const map1Keys = id1 !== undefined ? (id1 in map1 ? [id1] : []) : Object.keys(map1);\n for (const key2 of map1Keys) {\n map2 = map1[key2];\n const map2Keys = id2 !== undefined ? (id2 in map2 ? [id2] : []) : Object.keys(map2);\n for (const key3 of map2Keys) {\n map3 = map2[key3];\n const map3Keys = id3 !== undefined ? (id3 in map3 ? [id3] : []) : Object.keys(map3);\n for (const key4 of map3Keys) {\n yield [\n Number.parseInt(key1, 10),\n Number.parseInt(key2, 10),\n Number.parseInt(key3, 10),\n Number.parseInt(key4, 10),\n ];\n }\n }\n }\n }\n }\n count(terms) {\n let count = 0;\n const ids = (0, OrderUtils_1.encodeOptionalTerms)(terms, this.dictionary);\n if (!ids) {\n return 0;\n }\n const id0 = ids[0];\n const id1 = ids[1];\n const id2 = ids[2];\n const id3 = ids[3];\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedRecords;\n const map0Keys = id0 !== undefined ? (id0 in map0 ? [id0] : []) : Object.keys(map0);\n for (const key1 of map0Keys) {\n map1 = map0[key1];\n const map1Keys = id1 !== undefined ? (id1 in map1 ? [id1] : []) : Object.keys(map1);\n for (const key2 of map1Keys) {\n map2 = map1[key2];\n const map2Keys = id2 !== undefined ? (id2 in map2 ? [id2] : []) : Object.keys(map2);\n for (const key3 of map2Keys) {\n map3 = map2[key3];\n if (id3 !== undefined) {\n if (id3 in map3) {\n count++;\n }\n }\n else {\n count += Object.keys(map3).length;\n }\n }\n }\n }\n return count;\n }\n}\nexports.RdfStoreIndexNestedRecord = RdfStoreIndexNestedRecord;\n//# sourceMappingURL=RdfStoreIndexNestedRecord.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfStoreIndexNestedRecordQuoted = void 0;\nconst OrderUtils_1 = require(\"../OrderUtils\");\nconst RdfStoreIndexNestedRecord_1 = require(\"./RdfStoreIndexNestedRecord\");\n/**\n * An RDF store index that is implemented using nested records with optimized quoted triple support.\n */\nclass RdfStoreIndexNestedRecordQuoted extends RdfStoreIndexNestedRecord_1.RdfStoreIndexNestedRecord {\n constructor(options) {\n super(options);\n this.features = {\n quotedTripleFiltering: true,\n };\n }\n *getQuotedPatternKeys(map, term) {\n for (const quotedTripleEncoded of this.dictionary.findQuotedTriplesEncoded(term)) {\n if (quotedTripleEncoded in map) {\n yield quotedTripleEncoded;\n }\n }\n }\n *find(terms) {\n const ids = (0, OrderUtils_1.encodeOptionalTerms)(terms, this.dictionary);\n if (!ids) {\n return;\n }\n const [id0, id1, id2, id3] = ids;\n const [term0, term1, term2, term3] = terms;\n const [quotedTerm0, quotedTerm1, quotedTerm2, quotedTerm3] = (0, OrderUtils_1.arePatternsQuoted)(terms);\n let partialQuad0;\n let partialQuad1;\n let partialQuad2;\n let partialQuad3;\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedRecords;\n const map0Keys = (term0 !== undefined ?\n (quotedTerm0 ? this.getQuotedPatternKeys(map0, term0) : (id0 in map0 ? [id0] : [])) :\n Object.keys(map0));\n for (const key1 of map0Keys) {\n map1 = map0[key1];\n partialQuad0 = !quotedTerm0 && term0 ? term0 : this.dictionary.decode(Number.parseInt(key1, 10));\n const map1Keys = (term1 !== undefined ?\n (quotedTerm1 ? this.getQuotedPatternKeys(map1, term1) : (id1 in map1 ? [id1] : [])) :\n Object.keys(map1));\n for (const key2 of map1Keys) {\n map2 = map1[key2];\n partialQuad1 = !quotedTerm1 && term1 ? term1 : this.dictionary.decode(Number.parseInt(key2, 10));\n const map2Keys = (term2 !== undefined ?\n (quotedTerm2 ? this.getQuotedPatternKeys(map2, term2) : (id2 in map2 ? [id2] : [])) :\n Object.keys(map2));\n for (const key3 of map2Keys) {\n map3 = map2[key3];\n partialQuad2 = !quotedTerm2 && term2 ? term2 : this.dictionary.decode(Number.parseInt(key3, 10));\n const map3Keys = (term3 !== undefined ?\n (quotedTerm3 ? this.getQuotedPatternKeys(map3, term3) : (id3 in map3 ? [id3] : [])) :\n Object.keys(map3));\n for (const key4 of map3Keys) {\n partialQuad3 = !quotedTerm3 && term3 ? term3 : this.dictionary.decode(Number.parseInt(key4, 10));\n yield [partialQuad0, partialQuad1, partialQuad2, partialQuad3];\n }\n }\n }\n }\n }\n // The code below is nearly identical. We duplicate because abstraction would result in a significant performance hit.\n *findEncoded(ids, terms) {\n const [id0, id1, id2, id3] = ids;\n const [term0, term1, term2, term3] = terms;\n const [quotedTerm0, quotedTerm1, quotedTerm2, quotedTerm3] = (0, OrderUtils_1.arePatternsQuoted)(terms);\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedRecords;\n const map0Keys = (term0 !== undefined ?\n (quotedTerm0 ? this.getQuotedPatternKeys(map0, term0) : (id0 in map0 ? [id0] : [])) :\n Object.keys(map0));\n for (const key1 of map0Keys) {\n map1 = map0[key1];\n const map1Keys = (term1 !== undefined ?\n (quotedTerm1 ? this.getQuotedPatternKeys(map1, term1) : (id1 in map1 ? [id1] : [])) :\n Object.keys(map1));\n for (const key2 of map1Keys) {\n map2 = map1[key2];\n const map2Keys = (term2 !== undefined ?\n (quotedTerm2 ? this.getQuotedPatternKeys(map2, term2) : (id2 in map2 ? [id2] : [])) :\n Object.keys(map2));\n for (const key3 of map2Keys) {\n map3 = map2[key3];\n const map3Keys = (term3 !== undefined ?\n (quotedTerm3 ? this.getQuotedPatternKeys(map3, term3) : (id3 in map3 ? [id3] : [])) :\n Object.keys(map3));\n for (const key4 of map3Keys) {\n yield [\n Number.parseInt(key1, 10),\n Number.parseInt(key2, 10),\n Number.parseInt(key3, 10),\n Number.parseInt(key4, 10),\n ];\n }\n }\n }\n }\n }\n count(terms) {\n let count = 0;\n const ids = (0, OrderUtils_1.encodeOptionalTerms)(terms, this.dictionary);\n if (!ids) {\n return 0;\n }\n const [id0, id1, id2, id3] = ids;\n const [term0, term1, term2, term3] = terms;\n const [quotedTerm0, quotedTerm1, quotedTerm2, quotedTerm3] = (0, OrderUtils_1.arePatternsQuoted)(terms);\n let map1;\n let map2;\n let map3;\n const map0 = this.nestedRecords;\n const map0Keys = (term0 !== undefined ?\n (quotedTerm0 ? this.getQuotedPatternKeys(map0, term0) : (id0 in map0 ? [id0] : [])) :\n Object.keys(map0));\n for (const key1 of map0Keys) {\n map1 = map0[key1];\n const map1Keys = (term1 !== undefined ?\n (quotedTerm1 ? this.getQuotedPatternKeys(map1, term1) : (id1 in map1 ? [id1] : [])) :\n Object.keys(map1));\n for (const key2 of map1Keys) {\n map2 = map1[key2];\n const map2Keys = (term2 !== undefined ?\n (quotedTerm2 ? this.getQuotedPatternKeys(map2, term2) : (id2 in map2 ? [id2] : [])) :\n Object.keys(map2));\n for (const key3 of map2Keys) {\n map3 = map2[key3];\n if (term3 !== undefined) {\n if (quotedTerm3) {\n count += [...this.getQuotedPatternKeys(map3, term3)].length;\n }\n else if (id3 in map3) {\n count++;\n }\n }\n else {\n count += Object.keys(map3).length;\n }\n }\n }\n }\n return count;\n }\n}\nexports.RdfStoreIndexNestedRecordQuoted = RdfStoreIndexNestedRecordQuoted;\n//# sourceMappingURL=RdfStoreIndexNestedRecordQuoted.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/PendingStreamsIndex\"), exports);\n__exportStar(require(\"./lib/StreamingStore\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PendingStreamsIndex = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\n/**\n * A PendingStreamsIndex stores pending streams indexed by the quad pattern they have been created for.\n */\nclass PendingStreamsIndex {\n constructor() {\n this.indexedStreams = new Map();\n this.allStreams = [];\n }\n termToString(term) {\n return term && term.termType !== 'Variable' ? (0, rdf_string_1.termToString)(term) : PendingStreamsIndex.ID_VARIABLE;\n }\n /**\n * Add a new pending stream for the given quad pattern.\n * @param pendingStream A pending stream.\n * @param subject A term.\n * @param predicate A term.\n * @param object A term.\n * @param graph A term.\n */\n addPatternListener(pendingStream, subject, predicate, object, graph) {\n // Append to list of pendingStreams\n this.allStreams.push(pendingStream);\n // Append to index of pendingStreams\n const key = `${this.termToString(subject)}${PendingStreamsIndex.ID_SEPARATOR}${this.termToString(predicate)}${PendingStreamsIndex.ID_SEPARATOR}${this.termToString(object)}${PendingStreamsIndex.ID_SEPARATOR}${this.termToString(graph)}`;\n let existingListeners = this.indexedStreams.get(key);\n if (!existingListeners) {\n existingListeners = [];\n this.indexedStreams.set(key, existingListeners);\n }\n existingListeners.push(pendingStream);\n }\n /**\n * Find all the pending streams from which their quad pattern match the given quad.\n * @param quad The quad to match patterns to.\n */\n getPendingStreamsForQuad(quad) {\n // Determine the combinations of quad patterns to look up\n let keys = [(0, rdf_terms_1.getTerms)(quad).map(term => (0, rdf_string_1.termToString)(term))];\n for (let i = 0; i < rdf_terms_1.QUAD_TERM_NAMES.length; i++) {\n const keysOld = keys;\n keys = [];\n for (const key of keysOld) {\n keys.push(key);\n const keyModified = [...key];\n keyModified[i] = PendingStreamsIndex.ID_VARIABLE;\n keys.push(keyModified);\n }\n }\n // Fetch the pendingStreams for the quad pattern combinations\n const pendingStreams = [];\n for (const key of keys) {\n const found = this.indexedStreams.get(key.join(PendingStreamsIndex.ID_SEPARATOR));\n if (found) {\n pendingStreams.push(...found);\n }\n }\n return pendingStreams;\n }\n}\nPendingStreamsIndex.ID_VARIABLE = '?';\nPendingStreamsIndex.ID_SEPARATOR = ':';\nexports.PendingStreamsIndex = PendingStreamsIndex;\n//# sourceMappingURL=PendingStreamsIndex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamingStore = void 0;\nconst n3_1 = require(\"n3\");\nconst readable_stream_1 = require(\"readable-stream\");\nconst PendingStreamsIndex_1 = require(\"./PendingStreamsIndex\");\n/**\n * A StreamingStore allows data lookup and insertion to happen in parallel.\n * Concretely, this means that `match()` calls happening before `import()` calls, will still consider those triples that\n * are inserted later, which is done by keeping the response streams of `match()` open.\n * Only when the `end()` method is invoked, all response streams will close, and the StreamingStore will be considered\n * immutable.\n *\n * WARNING: `end()` MUST be called at some point, otherwise all `match` streams will remain unended.\n */\nclass StreamingStore {\n constructor(store = new n3_1.Store()) {\n this.pendingStreams = new PendingStreamsIndex_1.PendingStreamsIndex();\n this.ended = false;\n this.store = store;\n }\n /**\n * Mark this store as ended.\n *\n * This will make sure that all running and future `match` calls will end,\n * and all next `import` calls to this store will throw an error.\n */\n end() {\n this.ended = true;\n // Mark all pendingStreams as ended.\n for (const pendingStream of this.pendingStreams.allStreams) {\n pendingStream.push(null);\n pendingStream._pipeSource.unpipe();\n }\n }\n importToListeners(stream) {\n stream.on('data', (quad) => {\n if (!this.ended && !this.store.countQuads(quad.subject, quad.predicate, quad.object, quad.graph)) {\n for (const pendingStream of this.pendingStreams.getPendingStreamsForQuad(quad)) {\n if (pendingStream.isInitialized) {\n pendingStream.push(quad);\n pendingStream.emit('quad', quad);\n }\n }\n }\n });\n }\n import(stream) {\n if (this.ended) {\n throw new Error('Attempted to import into an ended StreamingStore');\n }\n this.importToListeners(stream);\n return this.store.import(stream);\n }\n match(subject, predicate, object, graph) {\n const storeResult = this.store.match(subject, predicate, object, graph);\n let stream = storeResult;\n // If the store hasn't ended yet, also create a new pendingStream\n if (!this.ended) {\n // The new pendingStream remains open, until the store is ended.\n const pendingStream = new readable_stream_1.PassThrough({ objectMode: true });\n this.pendingStreams.addPatternListener(pendingStream, subject, predicate, object, graph);\n stream = storeResult.pipe(pendingStream, { end: false });\n stream._pipeSource = storeResult;\n // This is an ugly hack to annotate pendingStream with the isInitialized once the store stream started being read.\n // This is necessary to avoid duplicate quads cases where match() is called but not yet read, an import is done,\n // and only then the match() stream is read.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const readOld = storeResult._read;\n storeResult._read = (size) => {\n pendingStream.isInitialized = true;\n readOld.call(storeResult, size);\n };\n }\n return stream;\n }\n /**\n * The internal store with all imported quads.\n */\n getStore() {\n return this.store;\n }\n}\nexports.StreamingStore = StreamingStore;\n//# sourceMappingURL=StreamingStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.termToString = exports.stringToTerm = exports.stringQuadToQuad = exports.quadToStringQuad = exports.getLiteralValue = exports.getLiteralType = exports.getLiteralLanguage = void 0;\nconst TermUtil_1 = require(\"./lib/TermUtil\");\nObject.defineProperty(exports, \"getLiteralLanguage\", { enumerable: true, get: function () { return TermUtil_1.getLiteralLanguage; } });\nObject.defineProperty(exports, \"getLiteralType\", { enumerable: true, get: function () { return TermUtil_1.getLiteralType; } });\nObject.defineProperty(exports, \"getLiteralValue\", { enumerable: true, get: function () { return TermUtil_1.getLiteralValue; } });\nObject.defineProperty(exports, \"quadToStringQuad\", { enumerable: true, get: function () { return TermUtil_1.quadToStringQuad; } });\nObject.defineProperty(exports, \"stringQuadToQuad\", { enumerable: true, get: function () { return TermUtil_1.stringQuadToQuad; } });\nObject.defineProperty(exports, \"stringToTerm\", { enumerable: true, get: function () { return TermUtil_1.stringToTerm; } });\nObject.defineProperty(exports, \"termToString\", { enumerable: true, get: function () { return TermUtil_1.termToString; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringQuadToQuad = exports.quadToStringQuad = exports.stringToTerm = exports.getLiteralLanguage = exports.getLiteralType = exports.getLiteralValue = exports.termToString = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst FACTORY = new rdf_data_factory_1.DataFactory();\n/**\n * Utility methods for converting between string-based RDF representations and RDFJS objects.\n *\n * RDF Terms are represented as follows:\n * * Blank nodes: '_:myBlankNode'\n * * Variables: '_myVariable'\n * * Literals: '\"myString\"', '\"myLanguageString\"@en-us', '\"

e

\"^^'\n * * URIs: ''\n *\n * Quads/triples are represented as hashes with 'subject', 'predicate', 'object' and 'graph' (optional)\n * as keys, and string-based RDF terms as values.\n */\n/**\n * Convert an RDFJS term to a string-based representation.\n * @param {RDF.Term} term An RDFJS term.\n * @return {string} A string-based term representation.\n */\nfunction termToString(term) {\n // TODO: remove nasty any casts when this TS bug has been fixed: https://github.com/microsoft/TypeScript/issues/26933\n if (!term) {\n return undefined;\n }\n switch (term.termType) {\n case 'NamedNode': return (`<${escapeIRI(term.value)}>`);\n case 'BlankNode': return (`_:${term.value}`);\n case 'Literal': {\n const literalValue = term;\n return (`\"${escapeStringRDF(literalValue.value)}\"${literalValue.datatype &&\n literalValue.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string' &&\n literalValue.datatype.value !== 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' ?\n `^^<${literalValue.datatype.value}>` :\n ''}${literalValue.language ? `@${literalValue.language}` : ''}`);\n }\n case 'Quad': return (`<<${termToString(term.subject)} ${termToString(term.predicate)} ${termToString(term.object)}${term.graph.termType === 'DefaultGraph' ? '' : ` ${termToString(term.graph)}`}>>`);\n case 'Variable': return (`?${term.value}`);\n case 'DefaultGraph': return term.value;\n }\n}\nexports.termToString = termToString;\n/**\n * Get the string value of a literal.\n * @param {string} literalValue An RDF literal enclosed by '\"'.\n * @return {string} The literal value inside the '\"'.\n */\nfunction getLiteralValue(literalValue) {\n const match = /^\"([^]*)\"((\\^\\^.*)|(@.*))?$/u.exec(literalValue);\n if (!match) {\n throw new Error(`${literalValue} is not a literal`);\n }\n return match[1].replace(/\\\\\"/ug, '\"');\n}\nexports.getLiteralValue = getLiteralValue;\n/**\n * Get the datatype of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The datatype of the literal.\n */\nfunction getLiteralType(literalValue) {\n const match = /^\"[^]*\"(?:\\^\\^<([^\"]+)>|(@)[^@\"]+)?$/u.exec(literalValue);\n if (!match) {\n throw new Error(`${literalValue} is not a literal`);\n }\n return match[1] || (match[2] ?\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' :\n 'http://www.w3.org/2001/XMLSchema#string');\n}\nexports.getLiteralType = getLiteralType;\n/**\n * Get the language of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The language of the literal.\n */\nfunction getLiteralLanguage(literalValue) {\n const match = /^\"[^]*\"(?:@([^@\"]+)|\\^\\^[^\"]+)?$/u.exec(literalValue);\n if (!match) {\n throw new Error(`${literalValue} is not a literal`);\n }\n return match[1] ? match[1].toLowerCase() : '';\n}\nexports.getLiteralLanguage = getLiteralLanguage;\n/**\n * Transform a string-based RDF term to an RDFJS term.\n * @param {string} value A string-based RDF-term.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {RDF.Term} An RDF-JS term.\n */\nfunction stringToTerm(value, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n if (!value || (value.length === 0)) {\n return dataFactory.defaultGraph();\n }\n switch (value[0]) {\n case '_': return dataFactory.blankNode(value.slice(2));\n case '?':\n if (!dataFactory.variable) {\n throw new Error(`Missing 'variable()' method on the given DataFactory`);\n }\n return dataFactory.variable(value.slice(1));\n case '\"': {\n const language = getLiteralLanguage(value);\n const type = dataFactory.namedNode(getLiteralType(value));\n return dataFactory.literal(getLiteralValue(value), language || type);\n }\n case '<':\n default:\n if (value.startsWith('<<') && value.endsWith('>>')) {\n // Iterate character-by-character to detect spaces that are *not* wrapped in <<>>\n const terms = value.slice(2, -2);\n const stringTerms = [];\n let ignoreTags = 0;\n let lastIndex = 0;\n for (let i = 0; i < terms.length; i++) {\n const char = terms[i];\n if (char === '<') {\n ignoreTags++;\n }\n if (char === '>') {\n if (ignoreTags === 0) {\n throw new Error(`Found closing tag without opening tag in ${value}`);\n }\n else {\n ignoreTags--;\n }\n }\n if (char === ' ' && ignoreTags === 0) {\n stringTerms.push(terms.slice(lastIndex, i));\n lastIndex = i + 1;\n }\n }\n if (ignoreTags !== 0) {\n throw new Error(`Found opening tag without closing tag in ${value}`);\n }\n stringTerms.push(terms.slice(lastIndex, terms.length));\n // We require 3 or 4 components\n if (stringTerms.length !== 3 && stringTerms.length !== 4) {\n throw new Error(`Nested quad syntax error ${value}`);\n }\n return dataFactory.quad(stringToTerm(stringTerms[0]), stringToTerm(stringTerms[1]), stringToTerm(stringTerms[2]), stringTerms[3] ? stringToTerm(stringTerms[3]) : undefined);\n }\n if (!value.startsWith('<') || !value.endsWith('>')) {\n throw new Error(`Detected invalid iri for named node (must be wrapped in <>): ${value}`);\n }\n return dataFactory.namedNode(value.slice(1, -1));\n }\n}\nexports.stringToTerm = stringToTerm;\n/**\n * Convert an RDFJS quad to a string-based quad representation.\n * @param {Quad} q An RDFJS quad.\n * @return {IStringQuad} A hash with string-based quad terms.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction quadToStringQuad(quad) {\n return {\n subject: termToString(quad.subject),\n predicate: termToString(quad.predicate),\n object: termToString(quad.object),\n graph: termToString(quad.graph),\n };\n}\nexports.quadToStringQuad = quadToStringQuad;\n/**\n * Convert a string-based quad representation to an RDFJS quad.\n * @param {IStringQuad} stringQuad A hash with string-based quad terms.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {Q} An RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction stringQuadToQuad(stringQuad, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n return dataFactory.quad(stringToTerm(stringQuad.subject, dataFactory), stringToTerm(stringQuad.predicate, dataFactory), stringToTerm(stringQuad.object, dataFactory), stringToTerm(stringQuad.graph, dataFactory));\n}\nexports.stringQuadToQuad = stringQuadToQuad;\nfunction escapeIRI(iriValue) {\n return iriValue.replace(escapePattern, replaceEscapedCharacter);\n}\nfunction escapeStringRDF(stringValue) {\n if (escapePattern.test(stringValue)) {\n stringValue = stringValue.replace(escapePattern, replaceEscapedCharacter);\n }\n return stringValue;\n}\n// Characters in literals and IRIs that require escaping\n// Also containing potential surrogate pairs\n/* eslint-disable require-unicode-regexp */ /* eslint-disable unicorn/better-regex */\nconst escapePattern = /[\"\\\\\\t\\n\\r\\b\\f\\u0000-\\u0019]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n/* eslint-enable require-unicode-regexp */ /* eslint-enable unicorn/better-regex */\nconst escapes = new Map([\n ['\\\\', '\\\\\\\\'],\n ['\"', '\\\\\"'],\n ['\\t', '\\\\t'],\n ['\\n', '\\\\n'],\n ['\\r', '\\\\r'],\n ['\\b', '\\\\b'],\n ['\\f', '\\\\f'],\n]);\nfunction replaceEscapedCharacter(character) {\n // Try simplest case first, get replacement for character\n const result = escapes.get(character);\n if (!result) {\n if (character.length === 1) {\n // Single unicode charachters, i.e. not a surrogate pair\n const code = character.charCodeAt(0).toString(16);\n return `${'\\\\u0000'.slice(0, -code.length)}${code}`;\n }\n // Surrogate pairs\n const code = ((character.charCodeAt(0) - 55296) * 1024 + character.charCodeAt(1) + 9216).toString(16);\n return `${'\\\\U00000000'.slice(0, -code.length)}${code}`;\n }\n return result;\n}\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.termToString = exports.stringToTerm = exports.stringQuadToQuad = exports.quadToStringQuad = exports.getLiteralValue = exports.getLiteralType = exports.getLiteralLanguage = void 0;\nconst TermUtil_1 = require(\"./lib/TermUtil\");\nObject.defineProperty(exports, \"getLiteralLanguage\", { enumerable: true, get: function () { return TermUtil_1.getLiteralLanguage; } });\nObject.defineProperty(exports, \"getLiteralType\", { enumerable: true, get: function () { return TermUtil_1.getLiteralType; } });\nObject.defineProperty(exports, \"getLiteralValue\", { enumerable: true, get: function () { return TermUtil_1.getLiteralValue; } });\nObject.defineProperty(exports, \"quadToStringQuad\", { enumerable: true, get: function () { return TermUtil_1.quadToStringQuad; } });\nObject.defineProperty(exports, \"stringQuadToQuad\", { enumerable: true, get: function () { return TermUtil_1.stringQuadToQuad; } });\nObject.defineProperty(exports, \"stringToTerm\", { enumerable: true, get: function () { return TermUtil_1.stringToTerm; } });\nObject.defineProperty(exports, \"termToString\", { enumerable: true, get: function () { return TermUtil_1.termToString; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringQuadToQuad = exports.quadToStringQuad = exports.stringToTerm = exports.getLiteralLanguage = exports.getLiteralType = exports.getLiteralValue = exports.termToString = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst FACTORY = new rdf_data_factory_1.DataFactory();\n/**\n * Utility methods for converting between string-based RDF representations and RDFJS objects.\n *\n * RDF Terms are represented as follows:\n * * Blank nodes: '_:myBlankNode'\n * * Variables: '?myVariable'\n * * Literals: '\"myString\"', '\"myLanguageString\"@en-us', '\"3\"^^xsd:number'\n * * URIs: 'http://example.org'\n *\n * Quads/triples are represented as hashes with 'subject', 'predicate', 'object' and 'graph' (optional)\n * as keys, and string-based RDF terms as values.\n */\n/**\n * Convert an RDFJS term to a string-based representation.\n * @param {RDF.Term} term An RDFJS term.\n * @return {string} A string-based term representation.\n */\nfunction termToString(term) {\n // TODO: remove nasty any casts when this TS bug has been fixed: https://github.com/microsoft/TypeScript/issues/26933\n if (!term) {\n return undefined;\n }\n switch (term.termType) {\n case 'NamedNode': return term.value;\n case 'BlankNode': return ('_:' + term.value);\n case 'Literal':\n const literalValue = term;\n return ('\"' + literalValue.value + '\"' +\n (literalValue.datatype &&\n literalValue.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string' &&\n literalValue.datatype.value !== 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' ?\n '^^' + literalValue.datatype.value : '') +\n (literalValue.language ? '@' + literalValue.language : ''));\n case 'Quad': return `<<${termToString(term.subject)} ${termToString(term.predicate)} ${termToString(term.object)}${term.graph.termType === 'DefaultGraph' ? '' : ' ' + termToString(term.graph)}>>`;\n case 'Variable': return ('?' + term.value);\n case 'DefaultGraph': return term.value;\n }\n}\nexports.termToString = termToString;\n/**\n * Get the string value of a literal.\n * @param {string} literalValue An RDF literal enclosed by '\"'.\n * @return {string} The literal value inside the '\"'.\n */\nfunction getLiteralValue(literalValue) {\n const match = /^\"([^]*)\"/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1];\n}\nexports.getLiteralValue = getLiteralValue;\n/**\n * Get the datatype of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The datatype of the literal.\n */\nfunction getLiteralType(literalValue) {\n const match = /^\"[^]*\"(?:\\^\\^([^\"]+)|(@)[^@\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] || (match[2]\n ? 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' : 'http://www.w3.org/2001/XMLSchema#string');\n}\nexports.getLiteralType = getLiteralType;\n/**\n * Get the language of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The language of the literal.\n */\nfunction getLiteralLanguage(literalValue) {\n const match = /^\"[^]*\"(?:@([^@\"]+)|\\^\\^[^\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] ? match[1].toLowerCase() : '';\n}\nexports.getLiteralLanguage = getLiteralLanguage;\n/**\n * Transform a string-based RDF term to an RDFJS term.\n * @param {string} value A string-based RDF-term.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {RDF.Term} An RDF-JS term.\n */\nfunction stringToTerm(value, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n if (!value || !value.length) {\n return dataFactory.defaultGraph();\n }\n switch (value[0]) {\n case '_': return dataFactory.blankNode(value.substr(2));\n case '?':\n if (!dataFactory.variable) {\n throw new Error(`Missing 'variable()' method on the given DataFactory`);\n }\n return dataFactory.variable(value.substr(1));\n case '\"':\n const language = getLiteralLanguage(value);\n const type = dataFactory.namedNode(getLiteralType(value));\n return dataFactory.literal(getLiteralValue(value), language || type);\n case '<':\n default:\n if (value[0] === '<' && value.length > 4 && value[1] === '<' && value[value.length - 1] === '>' && value[value.length - 2] === '>') {\n // Iterate character-by-character to detect spaces that are *not* wrapped in <<>>\n const terms = value.slice(2, -2).trim();\n let stringTerms = [];\n let ignoreTags = 0;\n let lastIndex = 0;\n let inQuote = false;\n for (let i = 0; i < terms.length; i++) {\n const char = terms[i];\n if (char === '<')\n ignoreTags++;\n if (char === '>') {\n if (ignoreTags === 0) {\n throw new Error('Found closing tag without opening tag in ' + value);\n }\n else {\n ignoreTags--;\n }\n }\n if (char === '\"') {\n let escaped = false;\n let j = i;\n while (j-- > 0 && terms[j] === '\\\\') {\n escaped = !escaped;\n }\n if (!escaped) {\n // We have reached an unescaped quote\n inQuote = !inQuote;\n }\n }\n if (char === ' ' && !inQuote && ignoreTags === 0) {\n stringTerms.push(terms.slice(lastIndex, i));\n while (terms[i + 1] === ' ') {\n i += 1;\n }\n lastIndex = i + 1;\n }\n }\n if (ignoreTags !== 0) {\n throw new Error('Found opening tag without closing tag in ' + value);\n }\n stringTerms.push(terms.slice(lastIndex, terms.length));\n // We require 3 or 4 components\n if (stringTerms.length !== 3 && stringTerms.length !== 4) {\n throw new Error('Nested quad syntax error ' + value);\n }\n stringTerms = stringTerms.map(term => term.startsWith('<') && !term.includes(' ') ? term.slice(1, -1) : term);\n return dataFactory.quad(stringToTerm(stringTerms[0]), stringToTerm(stringTerms[1]), stringToTerm(stringTerms[2]), stringTerms[3] ? stringToTerm(stringTerms[3]) : undefined);\n }\n return dataFactory.namedNode(value);\n }\n}\nexports.stringToTerm = stringToTerm;\n/**\n * Convert an RDFJS quad to a string-based quad representation.\n * @param {Quad} q An RDFJS quad.\n * @return {IStringQuad} A hash with string-based quad terms.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction quadToStringQuad(q) {\n // tslint:disable:object-literal-sort-keys\n return {\n subject: termToString(q.subject),\n predicate: termToString(q.predicate),\n object: termToString(q.object),\n graph: termToString(q.graph),\n };\n // tslint:enable:object-literal-sort-keys\n}\nexports.quadToStringQuad = quadToStringQuad;\n/**\n * Convert a string-based quad representation to an RDFJS quad.\n * @param {IStringQuad} stringQuad A hash with string-based quad terms.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {Q} An RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction stringQuadToQuad(stringQuad, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n return dataFactory.quad(stringToTerm(stringQuad.subject, dataFactory), stringToTerm(stringQuad.predicate, dataFactory), stringToTerm(stringQuad.object, dataFactory), stringToTerm(stringQuad.graph, dataFactory));\n}\nexports.stringQuadToQuad = stringQuadToQuad;\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/QuadTermUtil\"), exports);\n__exportStar(require(\"./lib/TermUtil\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchPatternMappings = exports.matchPatternComplete = exports.matchPattern = exports.matchTerm = exports.getValueNestedPath = exports.someTermsNested = exports.someTerms = exports.everyTermsNested = exports.everyTerms = exports.reduceTermsNested = exports.reduceTerms = exports.mapTermsNested = exports.mapTerms = exports.filterQuadTermNamesNested = exports.filterQuadTermNames = exports.filterTermsNested = exports.filterTerms = exports.forEachTermsNested = exports.forEachTerms = exports.collectNamedTerms = exports.getNamedTerms = exports.getTermsNested = exports.getTerms = exports.TRIPLE_TERM_NAMES = exports.QUAD_TERM_NAMES = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * All available quad term names.\n * @type {[string , string , string , string]}\n */\nexports.QUAD_TERM_NAMES = ['subject', 'predicate', 'object', 'graph'];\n/**\n * All available triple term names.\n * @type {[string , string , string]}\n */\nexports.TRIPLE_TERM_NAMES = ['subject', 'predicate', 'object'];\n/**\n * Get all terms in the given quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the quad.\n */\nfunction getTerms(quad, ignoreDefaultGraph) {\n if (ignoreDefaultGraph && quad.graph.termType === 'DefaultGraph') {\n return [quad.subject, quad.predicate, quad.object];\n }\n return [quad.subject, quad.predicate, quad.object, quad.graph];\n}\nexports.getTerms = getTerms;\n/**\n * Get all terms in the given quad, including nested quads.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the nested quad, excluding quad terms.\n */\nfunction getTermsNested(quad, ignoreDefaultGraph) {\n const terms = [];\n for (const term of getTerms(quad, ignoreDefaultGraph)) {\n if (term.termType === 'Quad') {\n getTermsNested(term, ignoreDefaultGraph).forEach(subTerm => terms.push(subTerm));\n }\n else {\n terms.push(term);\n }\n }\n return terms;\n}\nexports.getTermsNested = getTermsNested;\n/**\n * Convert the given quad to an array of named terms.\n * This is the reverse operation of {@link collectNamedTerms}.\n * @param {BaseQuad} quad An RDFJS quad.\n * @return {INamedTerm[]} An array of named terms.\n */\nfunction getNamedTerms(quad) {\n return [\n { key: 'subject', value: quad.subject },\n { key: 'predicate', value: quad.predicate },\n { key: 'object', value: quad.object },\n { key: 'graph', value: quad.graph },\n ];\n}\nexports.getNamedTerms = getNamedTerms;\n/**\n * Convert an array of named terms to an RDFJS quad.\n * This is the reverse operation of {@link getNamedTerms}.\n * @param {INamedTerm[]} namedTerms An array of named terms.\n * @param {(termName: QuadTermName) => Term} defaultCb An optional callback for when\n * certain terms are not available in the array.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Q} The resulting RDFJS quad.\n * @template Q The type of quad to output, defaults to RDF.Quad.\n */\nfunction collectNamedTerms(namedTerms, defaultCb, dataFactory) {\n const elements = {};\n namedTerms.forEach((namedTerm) => elements[namedTerm.key] = namedTerm.value);\n if (defaultCb) {\n elements.subject = elements.subject || defaultCb('subject');\n elements.predicate = elements.predicate || defaultCb('predicate');\n elements.object = elements.object || defaultCb('object');\n elements.graph = elements.graph || defaultCb('graph');\n }\n return (dataFactory || DF).quad(elements.subject, elements.predicate, elements.object, elements.graph);\n}\nexports.collectNamedTerms = collectNamedTerms;\n/**\n * Iterates over each term.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} cb A callback function.\n */\nfunction forEachTerms(quad, cb) {\n cb(quad.subject, 'subject');\n cb(quad.predicate, 'predicate');\n cb(quad.object, 'object');\n cb(quad.graph, 'graph');\n}\nexports.forEachTerms = forEachTerms;\n/**\n * Iterates over each leaf term, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} cb A callback function.\n * @param QuadTermName[] keys The current key path.\n */\nfunction forEachTermsNested(quad, cb, keys = []) {\n if (quad.subject.termType === 'Quad') {\n forEachTermsNested(quad.subject, cb, [...keys, 'subject']);\n }\n else {\n cb(quad.subject, [...keys, 'subject']);\n }\n if (quad.predicate.termType === 'Quad') {\n forEachTermsNested(quad.predicate, cb, [...keys, 'predicate']);\n }\n else {\n cb(quad.predicate, [...keys, 'predicate']);\n }\n if (quad.object.termType === 'Quad') {\n forEachTermsNested(quad.object, cb, [...keys, 'object']);\n }\n else {\n cb(quad.object, [...keys, 'object']);\n }\n if (quad.graph.termType === 'Quad') {\n forEachTermsNested(quad.graph, cb, [...keys, 'graph']);\n }\n else {\n cb(quad.graph, [...keys, 'graph']);\n }\n}\nexports.forEachTermsNested = forEachTermsNested;\n/**\n * Get all terms in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName) => boolean} filter A filter callback.\n * @return {Term[]} The list of matching terms.\n */\nfunction filterTerms(quad, filter) {\n const terms = [];\n if (filter(quad.subject, 'subject')) {\n terms.push(quad.subject);\n }\n if (filter(quad.predicate, 'predicate')) {\n terms.push(quad.predicate);\n }\n if (filter(quad.object, 'object')) {\n terms.push(quad.object);\n }\n if (filter(quad.graph, 'graph')) {\n terms.push(quad.graph);\n }\n return terms;\n}\nexports.filterTerms = filterTerms;\n/**\n * Get all terms in the given quad that return true on the given filter function, while recursing into quoted triples.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName) => boolean} filter A filter callback.\n * @param QuadTermName[] keys The current key path.\n * @return {Term[]} The list of matching terms.\n */\nfunction filterTermsNested(quad, filter, keys = []) {\n let terms = [];\n if (quad.subject.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.subject, filter, [...keys, 'subject'])];\n }\n else {\n if (filter(quad.subject, [...keys, 'subject'])) {\n terms.push(quad.subject);\n }\n }\n if (quad.predicate.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.predicate, filter, [...keys, 'predicate'])];\n }\n else {\n if (filter(quad.predicate, [...keys, 'predicate'])) {\n terms.push(quad.predicate);\n }\n }\n if (quad.object.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.object, filter, [...keys, 'object'])];\n }\n else {\n if (filter(quad.object, [...keys, 'object'])) {\n terms.push(quad.object);\n }\n }\n if (quad.graph.termType === 'Quad') {\n terms = [...terms, ...filterTermsNested(quad.graph, filter, [...keys, 'graph'])];\n }\n else {\n if (filter(quad.graph, [...keys, 'graph'])) {\n terms.push(quad.graph);\n }\n }\n return terms;\n}\nexports.filterTermsNested = filterTermsNested;\n/**\n * Get all quad term names in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName, all: INamedTerm[]) => boolean} filter A filter callback.\n * @return {QuadTermName[]} The list of matching quad term names.\n */\nfunction filterQuadTermNames(quad, filter) {\n const names = [];\n if (filter(quad.subject, 'subject')) {\n names.push('subject');\n }\n if (filter(quad.predicate, 'predicate')) {\n names.push('predicate');\n }\n if (filter(quad.object, 'object')) {\n names.push('object');\n }\n if (filter(quad.graph, 'graph')) {\n names.push('graph');\n }\n return names;\n}\nexports.filterQuadTermNames = filterQuadTermNames;\n/**\n * Get all quad term names in the given quad that return true on the given filter function, while recursing into quoted triples.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName, all: INamedTerm[]) => boolean} filter A filter callback.\n * @param QuadTermName[] keys The current key path.\n * @return {QuadTermName[]} The list of matching quad term names.\n */\nfunction filterQuadTermNamesNested(quad, filter, keys = []) {\n let names = [];\n const keysS = [...keys, 'subject'];\n if (quad.subject.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.subject, filter, keysS)];\n }\n else {\n if (filter(quad.subject, keysS)) {\n names.push(keysS);\n }\n }\n const keysP = [...keys, 'predicate'];\n if (quad.predicate.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.predicate, filter, keysP)];\n }\n else {\n if (filter(quad.predicate, keysP)) {\n names.push(keysP);\n }\n }\n const keysO = [...keys, 'object'];\n if (quad.object.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.object, filter, keysO)];\n }\n else {\n if (filter(quad.object, keysO)) {\n names.push(keysO);\n }\n }\n const keysG = [...keys, 'graph'];\n if (quad.graph.termType === 'Quad') {\n names = [...names, ...filterQuadTermNamesNested(quad.graph, filter, keysG)];\n }\n else {\n if (filter(quad.graph, keysG)) {\n names.push(keysG);\n }\n }\n return names;\n}\nexports.filterQuadTermNamesNested = filterQuadTermNamesNested;\n/**\n * Map all terms of a quad.\n * @param {Quad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName) => Term} mapper A mapper function.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Quad} A new RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction mapTerms(quad, mapper, dataFactory) {\n return (dataFactory || DF).quad(mapper(quad.subject, 'subject'), mapper(quad.predicate, 'predicate'), mapper(quad.object, 'object'), mapper(quad.graph, 'graph'));\n}\nexports.mapTerms = mapTerms;\n/**\n * Map all terms of a quad, while recursing into quoted triples.\n * @param {Quad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName) => Term} mapper A mapper function.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @param QuadTermName[] keys The current key path.\n * @return {Quad} A new RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction mapTermsNested(quad, mapper, dataFactory, keys = []) {\n return (dataFactory || DF).quad(quad.subject.termType === 'Quad' ?\n mapTermsNested(quad.subject, mapper, dataFactory, [...keys, 'subject']) :\n mapper(quad.subject, [...keys, 'subject']), quad.predicate.termType === 'Quad' ?\n mapTermsNested(quad.predicate, mapper, dataFactory, [...keys, 'predicate']) :\n mapper(quad.predicate, [...keys, 'predicate']), quad.object.termType === 'Quad' ?\n mapTermsNested(quad.object, mapper, dataFactory, [...keys, 'object']) :\n mapper(quad.object, [...keys, 'object']), quad.graph.termType === 'Quad' ?\n mapTermsNested(quad.graph, mapper, dataFactory, [...keys, 'graph']) :\n mapper(quad.graph, [...keys, 'graph']));\n}\nexports.mapTermsNested = mapTermsNested;\n/**\n * Reduce all terms of a quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(previousValue: U, currentValue: Term, key: QuadTermName) => U} reducer A reduce function.\n * @param {U} initialValue The initial value.\n * @return {U} The final value.\n */\nfunction reduceTerms(quad, reducer, initialValue) {\n let value = initialValue;\n value = reducer(value, quad.subject, 'subject');\n value = reducer(value, quad.predicate, 'predicate');\n value = reducer(value, quad.object, 'object');\n return reducer(value, quad.graph, 'graph');\n}\nexports.reduceTerms = reduceTerms;\n/**\n * Reduce all terms of a quad, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(previousValue: U, currentValue: Term, key: QuadTermName) => U} reducer A reduce function.\n * @param {U} initialValue The initial value.\n * @param QuadTermName[] keys The current key path.\n * @return {U} The final value.\n */\nfunction reduceTermsNested(quad, reducer, initialValue, keys = []) {\n let value = initialValue;\n if (quad.subject.termType === 'Quad') {\n value = reduceTermsNested(quad.subject, reducer, value, [...keys, 'subject']);\n }\n else {\n value = reducer(value, quad.subject, [...keys, 'subject']);\n }\n if (quad.predicate.termType === 'Quad') {\n value = reduceTermsNested(quad.predicate, reducer, value, [...keys, 'predicate']);\n }\n else {\n value = reducer(value, quad.predicate, [...keys, 'predicate']);\n }\n if (quad.object.termType === 'Quad') {\n value = reduceTermsNested(quad.object, reducer, value, [...keys, 'object']);\n }\n else {\n value = reducer(value, quad.object, [...keys, 'object']);\n }\n if (quad.graph.termType === 'Quad') {\n value = reduceTermsNested(quad.graph, reducer, value, [...keys, 'graph']);\n }\n else {\n value = reducer(value, quad.graph, [...keys, 'graph']);\n }\n return value;\n}\nexports.reduceTermsNested = reduceTermsNested;\n/**\n * Determines whether all terms satisfy the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If all terms satisfy the specified test.\n */\nfunction everyTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n && checker(quad.predicate, 'predicate')\n && checker(quad.object, 'object')\n && checker(quad.graph, 'graph');\n}\nexports.everyTerms = everyTerms;\n/**\n * Determines whether all terms satisfy the specified test, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @param QuadTermName[] keys The current key path.\n * @return {boolean} If all terms satisfy the specified test.\n */\nfunction everyTermsNested(quad, checker, keys = []) {\n return (quad.subject.termType === 'Quad' ?\n everyTermsNested(quad.subject, checker, [...keys, 'subject']) :\n checker(quad.subject, [...keys, 'subject']))\n && (quad.predicate.termType === 'Quad' ?\n everyTermsNested(quad.predicate, checker, [...keys, 'predicate']) :\n checker(quad.predicate, [...keys, 'predicate']))\n && (quad.object.termType === 'Quad' ?\n everyTermsNested(quad.object, checker, [...keys, 'object']) :\n checker(quad.object, [...keys, 'object']))\n && (quad.graph.termType === 'Quad' ?\n everyTermsNested(quad.graph, checker, [...keys, 'graph']) :\n checker(quad.graph, [...keys, 'graph']));\n}\nexports.everyTermsNested = everyTermsNested;\n/**\n * Determines whether at least one term satisfies the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If at least one term satisfies the specified test.\n */\nfunction someTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n || checker(quad.predicate, 'predicate')\n || checker(quad.object, 'object')\n || checker(quad.graph, 'graph');\n}\nexports.someTerms = someTerms;\n/**\n * Determines whether at least one term satisfies the specified test, while recursing into quoted triples.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @param QuadTermName[] keys The current key path.\n * @return {boolean} If at least one term satisfies the specified test.\n */\nfunction someTermsNested(quad, checker, keys = []) {\n return (quad.subject.termType === 'Quad' ?\n someTermsNested(quad.subject, checker, [...keys, 'subject']) :\n checker(quad.subject, [...keys, 'subject']))\n || (quad.predicate.termType === 'Quad' ?\n someTermsNested(quad.predicate, checker, [...keys, 'predicate']) :\n checker(quad.predicate, [...keys, 'predicate']))\n || (quad.object.termType === 'Quad' ?\n someTermsNested(quad.object, checker, [...keys, 'object']) :\n checker(quad.object, [...keys, 'object']))\n || (quad.graph.termType === 'Quad' ?\n someTermsNested(quad.graph, checker, [...keys, 'graph']) :\n checker(quad.graph, [...keys, 'graph']));\n}\nexports.someTermsNested = someTermsNested;\n/**\n * Get the nested value inside a quoted triple by the given path of quad keys.\n * @param term A term, that can be a quoted triple.\n * @param keys A path of quad term names.\n */\nfunction getValueNestedPath(term, keys) {\n if (keys.length === 0) {\n return term;\n }\n if (term.termType === 'Quad') {\n return getValueNestedPath(term[keys[0]], keys.slice(1));\n }\n throw new Error(`Tried to get ${keys[0]} from term of type ${term.termType}`);\n}\nexports.getValueNestedPath = getValueNestedPath;\n/**\n * Check if the given terms match.\n *\n * At least one of the following must be true:\n * * Term B is undefined.\n * * Term B is a variable.\n * * Term A and B are quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`termB.equals(termA)` return true)\n *\n * @param termA A term.\n * @param termB An optional term.\n */\nfunction matchTerm(termA, termB) {\n return !termB\n || termB.termType === 'Variable'\n || (termB.termType === 'Quad' && termA.termType === 'Quad' && matchPatternComplete(termA, termB))\n || termB.equals(termA);\n}\nexports.matchTerm = matchTerm;\n/**\n * Check if the given quad matches with the given quad terms.\n *\n * Each term must match at least one of the following:\n * * Term is undefined.\n * * Term is a variable.\n * * Quad term and term are both quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`quadTerm.equals(term)` return true)\n *\n * @param {BaseQuad} quad A quad to match with (can not contain variables).\n * @param {Term} subject An optional subject.\n * @param {Term} predicate An optional predicate.\n * @param {Term} object An optional object.\n * @param {Term} graph An optional graph.\n * @return {boolean} If the quad matches with the quad terms.\n */\nfunction matchPattern(quad, subject, predicate, object, graph) {\n return matchTerm(quad.subject, subject)\n && matchTerm(quad.predicate, predicate)\n && matchTerm(quad.object, object)\n && matchTerm(quad.graph, graph);\n}\nexports.matchPattern = matchPattern;\n/**\n * Check if the first quad matches with all terms from the second quad.\n *\n * Each term must match at least one of the following:\n * * Quad2 term is a variable.\n * * Quad1 term and Quad2 term are equal (`term1.equals(term2)` return true)\n *\n * @param {BaseQuad} quad A quad (can not contain variables).\n * @param {BaseQuad} pattern A quad pattern (can contain variables).\n * @return {boolean} If the quad terms match.\n */\nfunction matchPatternComplete(quad, pattern) {\n return matchPattern(quad, pattern.subject, pattern.predicate, pattern.object, pattern.graph);\n}\nexports.matchPatternComplete = matchPatternComplete;\nfunction matchPatternMappings(quad, pattern, opt = {}) {\n const map = {};\n function match(_pattern, _quad) {\n return everyTerms(_pattern, (t1, key) => {\n var _a, _b;\n const t2 = _quad[key];\n switch (t1.termType) {\n case 'Variable':\n return (opt.skipVarMapping && t2.termType === 'Variable')\n || ((_b = (_a = map[t1.value]) === null || _a === void 0 ? void 0 : _a.equals(t2)) !== null && _b !== void 0 ? _b : (map[t1.value] = t2, true));\n case 'Quad':\n return t2.termType === 'Quad' && match(t1, t2);\n default:\n return t1.equals(t2);\n }\n });\n }\n return match(pattern, quad) && (opt.returnMappings ? map : true);\n}\nexports.matchPatternMappings = matchPatternMappings;\n//# sourceMappingURL=QuadTermUtil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getQuads = exports.getDefaultGraphs = exports.getVariables = exports.getLiterals = exports.getBlankNodes = exports.getNamedNodes = exports.getTermsOfType = exports.uniqTerms = exports.TERM_TYPES = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * All known term types.\n * @see RDF.Term\n * @type {[string , string , string , string , string, string]}\n */\nexports.TERM_TYPES = ['NamedNode', 'BlankNode', 'Literal', 'Variable', 'DefaultGraph', 'Quad'];\n/*\n * Utility methods for handling RDFJS terms.\n */\n/**\n * Create an array of unique terms from the given array.\n * @param {T[]} terms An array of RDFJS terms.\n * @return {T[]} A new array of unique RDFJS terms.\n */\nfunction uniqTerms(terms) {\n const hash = {};\n return terms.filter(term => {\n const termString = (0, rdf_string_1.termToString)(term);\n return !(termString in hash) && (hash[termString] = true);\n });\n}\nexports.uniqTerms = uniqTerms;\n/**\n * Find all terms of the given type in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @param {\"NamedNode\" | \"BlankNode\" | \"Literal\" | \"Variable\" | \"DefaultGraph\" | \"Quad\"} termType A term type.\n * @return {Term[]} A new array with elements from the given array only containing elements of the given type.\n */\nfunction getTermsOfType(terms, termType) {\n return terms.filter((term) => term.termType === termType);\n}\nexports.getTermsOfType = getTermsOfType;\n/**\n * Find all named nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {NamedNode[]} A new array with elements from the given array only containing named nodes.\n */\nfunction getNamedNodes(terms) {\n return getTermsOfType(terms, 'NamedNode');\n}\nexports.getNamedNodes = getNamedNodes;\n/**\n * Find all blank nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BlankNode[]} A new array with elements from the given array only containing blank nodes.\n */\nfunction getBlankNodes(terms) {\n return getTermsOfType(terms, 'BlankNode');\n}\nexports.getBlankNodes = getBlankNodes;\n/**\n * Find all literals in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Literal[]} A new array with elements from the given array only containing literals.\n */\nfunction getLiterals(terms) {\n return getTermsOfType(terms, 'Literal');\n}\nexports.getLiterals = getLiterals;\n/**\n * Find all variables in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Variable[]} A new array with elements from the given array only containing variables.\n */\nfunction getVariables(terms) {\n return getTermsOfType(terms, 'Variable');\n}\nexports.getVariables = getVariables;\n/**\n * Find all default graphs in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {DefaultGraph[]} A new array with elements from the given array only containing default graphs.\n */\nfunction getDefaultGraphs(terms) {\n return getTermsOfType(terms, 'DefaultGraph');\n}\nexports.getDefaultGraphs = getDefaultGraphs;\n/**\n * Find all quads in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BaseQuad[]} A new array with elements from the given array only containing quads.\n */\nfunction getQuads(terms) {\n return getTermsOfType(terms, 'Quad');\n}\nexports.getQuads = getQuads;\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/IActiveTag\"), exports);\n__exportStar(require(\"./lib/IHtmlParseListener\"), exports);\n__exportStar(require(\"./lib/IRdfaPattern\"), exports);\n__exportStar(require(\"./lib/RdfaParser\"), exports);\n__exportStar(require(\"./lib/RdfaProfile\"), exports);\n__exportStar(require(\"./lib/Util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IActiveTag.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IHtmlParseListener.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IRdfaPattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfaParser = void 0;\nconst htmlparser2_1 = require(\"htmlparser2\");\nconst readable_stream_1 = require(\"readable-stream\");\nconst INITIAL_CONTEXT_XHTML = require(\"./initial-context-xhtml.json\");\nconst INITIAL_CONTEXT = require(\"./initial-context.json\");\nconst RdfaProfile_1 = require(\"./RdfaProfile\");\nconst Util_1 = require(\"./Util\");\n/**\n * A stream transformer that parses RDFa (text) streams to an {@link RDF.Stream}.\n */\nclass RdfaParser extends readable_stream_1.Transform {\n constructor(options) {\n super({ readableObjectMode: true });\n this.activeTagStack = [];\n options = options || {};\n this.options = options;\n this.util = new Util_1.Util(options.dataFactory, options.baseIRI);\n this.defaultGraph = options.defaultGraph || this.util.dataFactory.defaultGraph();\n const profile = options.contentType ? Util_1.Util.contentTypeToProfile(options.contentType) : options.profile || '';\n this.features = options.features || RdfaProfile_1.RDFA_FEATURES[profile];\n this.htmlParseListener = options.htmlParseListener;\n this.rdfaPatterns = this.features.copyRdfaPatterns ? {} : null;\n this.pendingRdfaPatternCopies = this.features.copyRdfaPatterns ? {} : null;\n this.parser = this.initializeParser(profile === 'xml');\n this.activeTagStack.push({\n incompleteTriples: [],\n inlist: false,\n language: options.language,\n listMapping: {},\n listMappingLocal: {},\n name: '',\n prefixesAll: Object.assign(Object.assign({}, INITIAL_CONTEXT['@context']), this.features.xhtmlInitialContext ? INITIAL_CONTEXT_XHTML['@context'] : {}),\n prefixesCustom: {},\n skipElement: false,\n vocab: options.vocab,\n });\n }\n /**\n * Parses the given text stream into a quad stream.\n * @param {NodeJS.EventEmitter} stream A text stream.\n * @return {RDF.Stream} A quad stream.\n */\n import(stream) {\n const output = new readable_stream_1.PassThrough({ readableObjectMode: true });\n stream.on('error', (error) => parsed.emit('error', error));\n stream.on('data', (data) => output.push(data));\n stream.on('end', () => output.push(null));\n const parsed = output.pipe(new RdfaParser(this.options));\n return parsed;\n }\n _transform(chunk, encoding, callback) {\n this.parser.write(chunk.toString());\n callback();\n }\n _flush(callback) {\n this.parser.end();\n callback();\n }\n onTagOpen(name, attributes) {\n // Determine the parent tag (ignore skipped tags)\n let parentTagI = this.activeTagStack.length - 1;\n while (parentTagI > 0 && this.activeTagStack[parentTagI].skipElement) {\n parentTagI--;\n }\n let parentTag = this.activeTagStack[parentTagI];\n // If we skipped a tag, make sure we DO use the lang, prefixes and vocab of the skipped tag\n if (parentTagI !== this.activeTagStack.length - 1) {\n parentTag = Object.assign(Object.assign({}, parentTag), { language: this.activeTagStack[this.activeTagStack.length - 1].language, prefixesAll: this.activeTagStack[this.activeTagStack.length - 1].prefixesAll, prefixesCustom: this.activeTagStack[this.activeTagStack.length - 1].prefixesCustom, vocab: this.activeTagStack[this.activeTagStack.length - 1].vocab });\n }\n // Create a new active tag and inherit language scope and baseIRI from parent\n const activeTag = {\n collectChildTags: parentTag.collectChildTags,\n incompleteTriples: [],\n inlist: 'inlist' in attributes,\n listMapping: [],\n listMappingLocal: parentTag.listMapping,\n localBaseIRI: parentTag.localBaseIRI,\n name,\n prefixesAll: null,\n prefixesCustom: null,\n skipElement: false,\n };\n this.activeTagStack.push(activeTag);\n // Save the tag contents if needed\n if (activeTag.collectChildTags) {\n // Add explicitly defined xmlns, xmlns:* and prefixes to attributes, as required by the spec (Step 11, note)\n // Sort prefixes alphabetically for deterministic namespace declaration order\n for (const prefix of Object.keys(parentTag.prefixesCustom).sort()) {\n const suffix = parentTag.prefixesCustom[prefix];\n const attributeKey = prefix === '' ? 'xmlns' : 'xmlns:' + prefix;\n if (!(attributeKey in attributes)) {\n attributes[attributeKey] = suffix;\n }\n }\n const attributesSerialized = Object.keys(attributes).map((key) => `${key}=\"${attributes[key]}\"`).join(' ');\n activeTag.text = [`<${name}${attributesSerialized ? ' ' + attributesSerialized : ''}>`];\n if (this.features.skipHandlingXmlLiteralChildren) {\n return;\n }\n }\n let allowTermsInRelPredicates = true;\n let allowTermsInRevPredicates = true;\n if (this.features.onlyAllowUriRelRevIfProperty) {\n // Ignore illegal rel/rev values when property is present\n if ('property' in attributes && 'rel' in attributes) {\n allowTermsInRelPredicates = false;\n if (attributes.rel.indexOf(':') < 0) {\n delete attributes.rel;\n }\n }\n if ('property' in attributes && 'rev' in attributes) {\n allowTermsInRevPredicates = false;\n if (attributes.rev.indexOf(':') < 0) {\n delete attributes.rev;\n }\n }\n }\n if (this.features.copyRdfaPatterns) {\n // Save the tag if needed\n if (parentTag.collectedPatternTag) {\n const patternTag = {\n attributes,\n children: [],\n name,\n referenced: false,\n rootPattern: false,\n text: [],\n };\n parentTag.collectedPatternTag.children.push(patternTag);\n activeTag.collectedPatternTag = patternTag;\n return;\n }\n // Store tags with type rdfa:Pattern as patterns\n if (attributes.typeof === 'rdfa:Pattern') {\n activeTag.collectedPatternTag = {\n attributes,\n children: [],\n name,\n parentTag,\n referenced: false,\n rootPattern: true,\n text: [],\n };\n return;\n }\n // Instantiate patterns on rdfa:copy\n if (attributes.property === 'rdfa:copy') {\n const copyTargetPatternId = attributes.resource || attributes.href || attributes.src;\n if (this.rdfaPatterns[copyTargetPatternId]) {\n this.emitPatternCopy(parentTag, this.rdfaPatterns[copyTargetPatternId], copyTargetPatternId);\n }\n else {\n if (!this.pendingRdfaPatternCopies[copyTargetPatternId]) {\n this.pendingRdfaPatternCopies[copyTargetPatternId] = [];\n }\n this.pendingRdfaPatternCopies[copyTargetPatternId].push(parentTag);\n }\n return;\n }\n }\n // tags override the baseIRI of the whole document\n if (this.features.baseTag && name === 'base' && attributes.href) {\n this.util.baseIRI = this.util.getBaseIRI(attributes.href);\n }\n // xml:base attributes override the baseIRI of the current tag and children\n if (this.features.xmlBase && attributes['xml:base']) {\n activeTag.localBaseIRI = this.util.getBaseIRI(attributes['xml:base']);\n }\n //